ZGlmZiAtLWdpdCBhL2V4dC9oYWwvS2J1aWxkIGIvZXh0L2hhbC9LYnVpbGQKaW5kZXggNmJkYWJiMC4uNjRjOWRjMyAxMDA2NDQKLS0tIGEvZXh0L2hhbC9LYnVpbGQKKysrIGIvZXh0L2hhbC9LYnVpbGQKQEAgLTIsNSArMiw2IEBACiBvYmotJChDT05GSUdfUU1TSV9CVUlMVElOKSArPSBxbXNpLwogb2JqLSQoQ09ORklHX0hBU19TVE0zMkNVQkUpICs9IHN0L3N0bTMyY3ViZS8KIG9iai0kKENPTkZJR19IQVNfQ0MzMjAwU0RLKSArPSB0aS9jYzMyMDBzZGsvCitvYmotJChDT05GSUdfSEFTX0NDMzIyMFNESykgKz0gdGkvY2MzMjIwc2RrLwogb2JqLSQoQ09ORklHX0hBU19OT1JESUNfSEFMKSArPSBub3JkaWMvCiBvYmotJChDT05GSUdfSEFTX05PUkRJQ19EUklWRVJTKSArPSBub3JkaWMvZHJpdmVycy8KZGlmZiAtLWdpdCBhL2V4dC9oYWwvS2NvbmZpZyBiL2V4dC9oYWwvS2NvbmZpZwppbmRleCBkZTAyM2U3Li41MjI4NDRlIDEwMDY0NAotLS0gYS9leHQvaGFsL0tjb25maWcKKysrIGIvZXh0L2hhbC9LY29uZmlnCkBAIC0xLDcgKzEsNyBAQAogIyBLY29uZmlnIC0gZXh0ZXJuYWwgSEFMIHNvdXJjZSBjb2RlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucwogCiAjCi0jIENvcHlyaWdodCAoYykgMjAxNiBMaW5hcm8gTHRkLgorIyBDb3B5cmlnaHQgKGMpIDIwMTYtMjAxNyBMaW5hcm8gTHRkLgogIwogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMAogIwpAQCAtMjQsNCArMjQsNiBAQAogCiBzb3VyY2UgImV4dC9oYWwvdGkvY2MzMjAwc2RrL0tjb25maWciCiAKK3NvdXJjZSAiZXh0L2hhbC90aS9jYzMyMjBzZGsvS2NvbmZpZyIKKwogZW5kbWVudQpkaWZmIC0tZ2l0IGEvZXh0L2hhbC9NYWtlZmlsZSBiL2V4dC9oYWwvTWFrZWZpbGUKaW5kZXggNTliYzk4Ny4uM2ViMjQ4ZiAxMDA2NDQKLS0tIGEvZXh0L2hhbC9NYWtlZmlsZQorKysgYi9leHQvaGFsL01ha2VmaWxlCkBAIC0xNCwzICsxNCw1IEBACiBpbmNsdWRlICQoc3JjdHJlZSkvZXh0L2hhbC9zdC9zdG0zMmN1YmUvTWFrZWZpbGUKIAogaW5jbHVkZSAkKHNyY3RyZWUpL2V4dC9oYWwvdGkvY2MzMjAwc2RrL01ha2VmaWxlCisKK2luY2x1ZGUgJChzcmN0cmVlKS9leHQvaGFsL3RpL2NjMzIyMHNkay9NYWtlZmlsZQpkaWZmIC0tZ2l0IGEvZXh0L2hhbC90aS9jYzMyMjBzZGsvS2J1aWxkIGIvZXh0L2hhbC90aS9jYzMyMjBzZGsvS2J1aWxkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyOThiZjYKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvaGFsL3RpL2NjMzIyMHNkay9LYnVpbGQKQEAgLTAsMCArMSw0IEBACitjY2ZsYWdzLSQoQ09ORklHX0hBU19DQzMyMjBTREspICs9IC1EJChDT01QSUxFUikKKyMgTmVlZCB0byBidWlsZCBwcmNtIGFuZCB1dGlscyBmb3IgUFJDTUNDMzIyME1DVUluaXQsIHdoaWNoIGlzIG5vdCBpbiBST00KK29iai0kKENPTkZJR19IQVNfQ0MzMjIwU0RLKSArPSBkcml2ZXJsaWIvdXRpbHMubworb2JqLSQoQ09ORklHX0hBU19DQzMyMjBTREspICs9IGRyaXZlcmxpYi9wcmNtLm8KZGlmZiAtLWdpdCBhL2V4dC9oYWwvdGkvY2MzMjIwc2RrL0tjb25maWcgYi9leHQvaGFsL3RpL2NjMzIyMHNkay9LY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3ZDc5NDMKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvaGFsL3RpL2NjMzIyMHNkay9LY29uZmlnCkBAIC0wLDAgKzEsMTEgQEAKKyMgS2NvbmZpZyAtIENDMzIyMCBTREsgSEFMIGNvbmZpZ3VyYXRpb24KKworY29uZmlnIEhBU19DQzMyMjBTREsKKwlib29sCisKK21lbnVjb25maWcgQ0MzMjIwU0RLCisJYm9vbCAiVEkgQ0MzMjIwIFNESyBzdXBwb3J0IgorCWRlZmF1bHQgbgorCWRlcGVuZHMgb24gSEFTX0NDMzIyMFNESworCWhlbHAKKwlCdWlsZCByZXF1aXJlZCBwZXJpcGhlcmFsIGRyaXZlcmxpYiBmaWxlcyBmcm9tIHRoZSBDQzMyMjAgU0RLCmRpZmYgLS1naXQgYS9leHQvaGFsL3RpL2NjMzIyMHNkay9NYWtlZmlsZSBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0YTQxZmMKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvaGFsL3RpL2NjMzIyMHNkay9NYWtlZmlsZQpAQCAtMCwwICsxLDYgQEAKK2lmZGVmIENPTkZJR19IQVNfQ0MzMjIwU0RLCitaRVBIWVJJTkNMVURFICs9LUkkKHNyY3RyZWUpL2V4dC9oYWwvdGkvY2MzMjIwc2RrCitaRVBIWVJJTkNMVURFICs9LUkkKHNyY3RyZWUpL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2luYworWkVQSFlSSU5DTFVERSArPS1JJChzcmN0cmVlKS9leHQvaGFsL3RpL2NjMzIyMHNkay9kcml2ZXJsaWIKK0tCVUlMRF9DRkxBR1MgKz0gLURVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJCitlbmRpZiAjIENPTkZJR19IQVNfQ0MzMjIwU0RLCmRpZmYgLS1naXQgYS9leHQvaGFsL3RpL2NjMzIyMHNkay9SRUFETUUgYi9leHQvaGFsL3RpL2NjMzIyMHNkay9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjY5Njg0ZQotLS0gL2Rldi9udWxsCisrKyBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL1JFQURNRQpAQCAtMCwwICsxLDI2IEBACitUaGUgQ0MzMjIwIFNESyBwcm92aWRlcyBhIHBlcmlwaGVyYWwgZHJpdmVyIGxpYnJhcnkgYW5kIGhhcmR3YXJlCityZWdpc3RlciBhY2Nlc3MgaGVhZGVyIGZpbGVzIGZvciB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgU2ltcGxlTGluaworQ0MzMjIwUyBhbmQgQ0MzMjIwU0YgU29Dcy4KKworVGhlIGN1cnJlbnQgdmVyc2lvbiBzdXBwb3J0ZWQgaW4gWmVwaHlyIGlzIENDMzIyMCBTREsgMS4zMC4wMS4wMywKK2Rvd25sb2FkZWQgZnJvbToKKworCWh0dHA6Ly93d3cudGkuY29tL3Rvb2wvZG93bmxvYWQvU0lNUExFTElOSy1DQzMyMjAtU0RLCisKK0Egc3Vic2V0IG9mIHRoZSBmaWxlcyBpbiBkcml2ZXJsaWIvIGFuZCBpbmMvIGFyZSBjb3BpZWQgZnJvbSBhCitMaW51eCBDQzMyMjAgU0RLIGluc3RhbGxhdGlvbiB3aXRob3V0IG1vZGlmaWNhdGlvbi4KKworVEkgcHJvdmlkZXMgdGhlIGRyaXZlciBsaWJyYXJ5IGZ1bmN0aW9ucyBidXJuZWQgaW50byBST00gYXQgdGhlIGZhY3RvcnksCitvciB1cGRhdGVkIHZpYSBhIHNlcnZpY2UgcGFjayBwYXRjaCwgdGh1cyBzYXZpbmcgYXBwbGljYXRpb24gY29kZSBzcGFjZS4KKworQ2FsbGluZyBkcml2ZXJsaWIgQVBJcyBwcmVmaXhlZCBieSAiTUFQXyIgd2lsbCB2ZWN0b3IgdG8gdGhvc2UgZnVuY3Rpb25zCithbHJlYWR5IGV4aXN0aW5nIGluIFJPTS4KKworRm9yIHRoZSB6ZXBoeXIgc2hlbGwgc2FtcGxlLCBmb3IgZXhhbXBsZSwgdXNpbmcgdGhlc2UgUk9NIGZ1bmN0aW9ucworcmVzdWx0cyBpbiBhIHNhdmluZ3Mgb2YgYWJvdXQgMktiIGluIGNvZGUgc3BhY2UuCisKK0FmdGVyIHNldHRpbmcgQ09ORklHX0hBU19DQzMyMjBTREs9eSBpbiBLY29uZmlnLCBtb3N0IG9mIHRoZQorcGVyaXBoZXJhbCBkcml2ZXIgbGlicmFyeSBmdW5jdGlvbnMgd2lsbCBiZSBhY2Nlc3NpYmxlIGZyb20gUk9NLAorZXhjZXB0IGZvciB0aGUgZm9sbG93aW5nIG1vZHVsZXM6CistIGRyaXZlcmxpYi9wcmNtLmMKKy0gZHJpdmVybGliL3V0aWxzLmMKZGlmZiAtLWdpdCBhL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2RyaXZlcmxpYi9jcHUuaCBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2RyaXZlcmxpYi9jcHUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTg4NDBlCi0tLSAvZGV2L251bGwKKysrIGIvZXh0L2hhbC90aS9jYzMyMjBzZGsvZHJpdmVybGliL2NwdS5oCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDE2IFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCAtIGh0dHA6Ly93d3cudGkuY29tLworICoKKyAqICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqICBhcmUgbWV0OgorICoKKyAqICAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogICAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqICAgIE5laXRoZXIgdGhlIG5hbWUgb2YgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqICBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqICBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiAgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiAgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiAgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gIGNwdS5oCisvLworLy8gIFByb3RvdHlwZXMgZm9yIHRoZSBDUFUgaW5zdHJ1Y3Rpb24gd3JhcHBlciBmdW5jdGlvbnMuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCisjaWZuZGVmIF9fQ1BVX0hfXworI2RlZmluZSBfX0NQVV9IX18KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIElmIGJ1aWxkaW5nIHdpdGggYSBDKysgY29tcGlsZXIsIG1ha2UgYWxsIG9mIHRoZSBkZWZpbml0aW9ucyBpbiB0aGlzIGhlYWRlcgorLy8gaGF2ZSBhIEMgYmluZGluZy4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKK3sKKyNlbmRpZgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gUHJvdG90eXBlcy4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitleHRlcm4gdW5zaWduZWQgbG9uZyBDUFVjcHNpZCh2b2lkKTsKK2V4dGVybiB1bnNpZ25lZCBsb25nIENQVWNwc2llKHZvaWQpOworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgQ1BVcHJpbWFzayh2b2lkKTsKK2V4dGVybiB2b2lkIENQVXdmaSh2b2lkKTsKK2V4dGVybiB1bnNpZ25lZCBsb25nIENQVWJhc2VwcmlHZXQodm9pZCk7CitleHRlcm4gdm9pZCBDUFViYXNlcHJpU2V0KHVuc2lnbmVkIGxvbmcgdWxOZXdCYXNlcHJpKTsKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIE1hcmsgdGhlIGVuZCBvZiB0aGUgQyBiaW5kaW5ncyBzZWN0aW9uIGZvciBDKysgY29tcGlsZXJzLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBfX0NQVV9IX18KZGlmZiAtLWdpdCBhL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2RyaXZlcmxpYi9mbGFzaC5oIGIvZXh0L2hhbC90aS9jYzMyMjBzZGsvZHJpdmVybGliL2ZsYXNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTlmMGEwMAotLS0gL2Rldi9udWxsCisrKyBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2RyaXZlcmxpYi9mbGFzaC5oCkBAIC0wLDAgKzEsMTE2IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxNiBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgLSBodHRwOi8vd3d3LnRpLmNvbS8KKyAqCisgKiAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiAgYXJlIG1ldDoKKyAqCisgKiAgICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqICAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAgICBOZWl0aGVyIHRoZSBuYW1lIG9mIFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCBub3IgdGhlIG5hbWVzIG9mCisgKiAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqICBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vICBmbGFzaC5oCisvLworLy8gIFByb3RvdHlwZXMgZm9yIHRoZSBmbGFzaCBkcml2ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCisjaWZuZGVmIF9fRkxBU0hfSF9fCisjZGVmaW5lIF9fRkxBU0hfSF9fCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBJZiBidWlsZGluZyB3aXRoIGEgQysrIGNvbXBpbGVyLCBtYWtlIGFsbCBvZiB0aGUgZGVmaW5pdGlvbnMgaW4gdGhpcyBoZWFkZXIKKy8vIGhhdmUgYSBDIGJpbmRpbmcuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCit7CisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFZhbHVlcyB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gRmxhc2hQcm90ZWN0U2V0KCksIGFuZCByZXR1cm5lZCBieQorLy8gRmxhc2hQcm90ZWN0R2V0KCkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgordHlwZWRlZiBlbnVtCit7CisgICAgRmxhc2hSZWFkV3JpdGUsICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZsYXNoIGNhbiBiZSByZWFkIGFuZCB3cml0dGVuCisgICAgRmxhc2hSZWFkT25seSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZsYXNoIGNhbiBvbmx5IGJlIHJlYWQKKyAgICBGbGFzaEV4ZWN1dGVPbmx5ICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmxhc2ggY2FuIG9ubHkgYmUgZXhlY3V0ZWQKK30KK3RGbGFzaFByb3RlY3Rpb247CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBWYWx1ZXMgcGFzc2VkIHRvIEZsYXNoSW50RW5hYmxlKCksIEZsYXNoSW50RGlzYWJsZSgpIGFuZCBGbGFzaEludENsZWFyKCkgYW5kCisvLyByZXR1cm5lZCBmcm9tIEZsYXNoSW50U3RhdHVzKCkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBGTEFTSF9JTlRfUFJPR1JBTSAgICAgMHgwMDAwMDAwMiAvLyBQcm9ncmFtbWluZyBJbnRlcnJ1cHQgTWFzaworI2RlZmluZSBGTEFTSF9JTlRfQUNDRVNTICAgICAgMHgwMDAwMDAwMSAvLyBBY2Nlc3MgSW50ZXJydXB0IE1hc2sKKyNkZWZpbmUgRkxBU0hfSU5UX0VFUFJPTSAgICAgIDB4MDAwMDAwMDQgLy8gRUVQUk9NIEludGVycnVwdCBNYXNrCisjZGVmaW5lIEZMQVNIX0lOVF9WT0xUQUdFX0VSUiAweDAwMDAwMjAwIC8vIFZvbHRhZ2UgRXJyb3IgSW50ZXJydXB0IE1hc2sKKyNkZWZpbmUgRkxBU0hfSU5UX0RBVEFfRVJSICAgIDB4MDAwMDA0MDAgLy8gSW52YWxpZCBEYXRhIEludGVycnVwdCBNYXNrCisjZGVmaW5lIEZMQVNIX0lOVF9FUkFTRV9FUlIgICAweDAwMDAwODAwIC8vIEVyYXNlIEVycm9yIEludGVycnVwdCBNYXNrCisjZGVmaW5lIEZMQVNIX0lOVF9QUk9HUkFNX0VSUiAweDAwMDAyMDAwIC8vIFByb2dyYW0gVmVyaWZ5IEVycm9yIEludGVycnVwdCBNYXNrCisKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFByb3RvdHlwZXMgZm9yIHRoZSBBUElzLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK2V4dGVybiB2b2lkIEZsYXNoRGlzYWJsZSh2b2lkKTsKK2V4dGVybiBsb25nIEZsYXNoRXJhc2UodW5zaWduZWQgbG9uZyB1bEFkZHJlc3MpOworZXh0ZXJuIHZvaWQgRmxhc2hFcmFzZU5vbkJsb2NraW5nKHVuc2lnbmVkIGxvbmcgdWxBZGRyZXNzKTsKK2V4dGVybiBsb25nIEZsYXNoTWFzc0VyYXNlKHZvaWQpOworZXh0ZXJuIHZvaWQgRmxhc2hNYXNzRXJhc2VOb25CbG9ja2luZyh2b2lkKTsKK2V4dGVybiBsb25nIEZsYXNoUHJvZ3JhbSh1bnNpZ25lZCBsb25nICpwdWxEYXRhLCB1bnNpZ25lZCBsb25nIHVsQWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsQ291bnQpOworZXh0ZXJuIGxvbmcgRmxhc2hQcm9ncmFtTm9uQmxvY2tpbmcodW5zaWduZWQgbG9uZyAqcHVsRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxBZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bENvdW50KTsKK2V4dGVybiB2b2lkIEZsYXNoSW50UmVnaXN0ZXIodm9pZCAoKnBmbkhhbmRsZXIpKHZvaWQpKTsKK2V4dGVybiB2b2lkIEZsYXNoSW50VW5yZWdpc3Rlcih2b2lkKTsKK2V4dGVybiB2b2lkIEZsYXNoSW50RW5hYmxlKHVuc2lnbmVkIGxvbmcgdWxJbnRGbGFncyk7CitleHRlcm4gdm9pZCBGbGFzaEludERpc2FibGUodW5zaWduZWQgbG9uZyB1bEludEZsYWdzKTsKK2V4dGVybiB1bnNpZ25lZCBsb25nIEZsYXNoSW50U3RhdHVzKHRCb29sZWFuIGJNYXNrZWQpOworZXh0ZXJuIHZvaWQgRmxhc2hJbnRDbGVhcih1bnNpZ25lZCBsb25nIHVsSW50RmxhZ3MpOworZXh0ZXJuIHRGbGFzaFByb3RlY3Rpb24gRmxhc2hQcm90ZWN0R2V0KHVuc2lnbmVkIGxvbmcgdWxBZGRyZXNzKTsKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIE1hcmsgdGhlIGVuZCBvZiB0aGUgQyBiaW5kaW5ncyBzZWN0aW9uIGZvciBDKysgY29tcGlsZXJzLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBfX0ZMQVNIX0hfXwpkaWZmIC0tZ2l0IGEvZXh0L2hhbC90aS9jYzMyMjBzZGsvZHJpdmVybGliL2dwaW8uaCBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2RyaXZlcmxpYi9ncGlvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDYyYmFlNgotLS0gL2Rldi9udWxsCisrKyBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2RyaXZlcmxpYi9ncGlvLmgKQEAgLTAsMCArMSwxNDAgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDE2IFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCAtIGh0dHA6Ly93d3cudGkuY29tLworICoKKyAqICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqICBhcmUgbWV0OgorICoKKyAqICAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogICAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqICAgIE5laXRoZXIgdGhlIG5hbWUgb2YgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqICBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqICBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiAgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiAgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiAgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gIGdwaW8uaAorLy8KKy8vICBEZWZpbmVzIGFuZCBNYWNyb3MgZm9yIEdQSU8gQVBJLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworI2lmbmRlZiBfX0dQSU9fSF9fCisjZGVmaW5lIF9fR1BJT19IX18KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIElmIGJ1aWxkaW5nIHdpdGggYSBDKysgY29tcGlsZXIsIG1ha2UgYWxsIG9mIHRoZSBkZWZpbml0aW9ucyBpbiB0aGlzIGhlYWRlcgorLy8gaGF2ZSBhIEMgYmluZGluZy4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKK3sKKyNlbmRpZgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyB2YWx1ZXMgZGVmaW5lIHRoZSBiaXQgZmllbGQgZm9yIHRoZSB1Y1BpbnMgYXJndW1lbnQgdG8gc2V2ZXJhbAorLy8gb2YgdGhlIEFQSXMuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUElPX1BJTl8wICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyBHUElPIHBpbiAwCisjZGVmaW5lIEdQSU9fUElOXzEgICAgICAgICAgICAgIDB4MDAwMDAwMDIgIC8vIEdQSU8gcGluIDEKKyNkZWZpbmUgR1BJT19QSU5fMiAgICAgICAgICAgICAgMHgwMDAwMDAwNCAgLy8gR1BJTyBwaW4gMgorI2RlZmluZSBHUElPX1BJTl8zICAgICAgICAgICAgICAweDAwMDAwMDA4ICAvLyBHUElPIHBpbiAzCisjZGVmaW5lIEdQSU9fUElOXzQgICAgICAgICAgICAgIDB4MDAwMDAwMTAgIC8vIEdQSU8gcGluIDQKKyNkZWZpbmUgR1BJT19QSU5fNSAgICAgICAgICAgICAgMHgwMDAwMDAyMCAgLy8gR1BJTyBwaW4gNQorI2RlZmluZSBHUElPX1BJTl82ICAgICAgICAgICAgICAweDAwMDAwMDQwICAvLyBHUElPIHBpbiA2CisjZGVmaW5lIEdQSU9fUElOXzcgICAgICAgICAgICAgIDB4MDAwMDAwODAgIC8vIEdQSU8gcGluIDcKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFZhbHVlcyB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gR1BJT0Rpck1vZGVTZXQgYXMgdGhlIHVsUGluSU8gcGFyYW1ldGVyLCBhbmQKKy8vIHJldHVybmVkIGZyb20gR1BJT0Rpck1vZGVHZXQuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUElPX0RJUl9NT0RFX0lOICAgICAgICAweDAwMDAwMDAwICAvLyBQaW4gaXMgYSBHUElPIGlucHV0CisjZGVmaW5lIEdQSU9fRElSX01PREVfT1VUICAgICAgIDB4MDAwMDAwMDEgIC8vIFBpbiBpcyBhIEdQSU8gb3V0cHV0CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBWYWx1ZXMgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIEdQSU9JbnRUeXBlU2V0IGFzIHRoZSB1bEludFR5cGUgcGFyYW1ldGVyLCBhbmQKKy8vIHJldHVybmVkIGZyb20gR1BJT0ludFR5cGVHZXQuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUElPX0ZBTExJTkdfRURHRSAgICAgICAweDAwMDAwMDAwICAvLyBJbnRlcnJ1cHQgb24gZmFsbGluZyBlZGdlCisjZGVmaW5lIEdQSU9fUklTSU5HX0VER0UgICAgICAgIDB4MDAwMDAwMDQgIC8vIEludGVycnVwdCBvbiByaXNpbmcgZWRnZQorI2RlZmluZSBHUElPX0JPVEhfRURHRVMgICAgICAgICAweDAwMDAwMDAxICAvLyBJbnRlcnJ1cHQgb24gYm90aCBlZGdlcworI2RlZmluZSBHUElPX0xPV19MRVZFTCAgICAgICAgICAweDAwMDAwMDAyICAvLyBJbnRlcnJ1cHQgb24gbG93IGxldmVsCisjZGVmaW5lIEdQSU9fSElHSF9MRVZFTCAgICAgICAgIDB4MDAwMDAwMDYgIC8vIEludGVycnVwdCBvbiBoaWdoIGxldmVsCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBWYWx1ZXMgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIEdQSU9JbnRFbmFibGUoKSBhbmQgR1BJT0ludERpc2FibGUoKSBmdW5jdGlvbnMKKy8vIGluIHRoZSB1bEludEZsYWdzIHBhcmFtZXRlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQSU9fSU5UX0RNQSAgICAgICAgICAgIDB4MDAwMDAxMDAKKyNkZWZpbmUgR1BJT19JTlRfUElOXzAgICAgICAgICAgMHgwMDAwMDAwMQorI2RlZmluZSBHUElPX0lOVF9QSU5fMSAgICAgICAgICAweDAwMDAwMDAyCisjZGVmaW5lIEdQSU9fSU5UX1BJTl8yICAgICAgICAgIDB4MDAwMDAwMDQKKyNkZWZpbmUgR1BJT19JTlRfUElOXzMgICAgICAgICAgMHgwMDAwMDAwOAorI2RlZmluZSBHUElPX0lOVF9QSU5fNCAgICAgICAgICAweDAwMDAwMDEwCisjZGVmaW5lIEdQSU9fSU5UX1BJTl81ICAgICAgICAgIDB4MDAwMDAwMjAKKyNkZWZpbmUgR1BJT19JTlRfUElOXzYgICAgICAgICAgMHgwMDAwMDA0MAorI2RlZmluZSBHUElPX0lOVF9QSU5fNyAgICAgICAgICAweDAwMDAwMDgwCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBQcm90b3R5cGVzIGZvciB0aGUgQVBJcy4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitleHRlcm4gdm9pZCBHUElPRGlyTW9kZVNldCh1bnNpZ25lZCBsb25nIHVsUG9ydCwgdW5zaWduZWQgY2hhciB1Y1BpbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsUGluSU8pOworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgR1BJT0Rpck1vZGVHZXQodW5zaWduZWQgbG9uZyB1bFBvcnQsIHVuc2lnbmVkIGNoYXIgdWNQaW4pOworZXh0ZXJuIHZvaWQgR1BJT0ludFR5cGVTZXQodW5zaWduZWQgbG9uZyB1bFBvcnQsIHVuc2lnbmVkIGNoYXIgdWNQaW5zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bEludFR5cGUpOworZXh0ZXJuIHZvaWQgR1BJT0RNQVRyaWdnZXJFbmFibGUodW5zaWduZWQgbG9uZyB1bFBvcnQpOworZXh0ZXJuIHZvaWQgR1BJT0RNQVRyaWdnZXJEaXNhYmxlKHVuc2lnbmVkIGxvbmcgdWxQb3J0KTsKK2V4dGVybiB1bnNpZ25lZCBsb25nIEdQSU9JbnRUeXBlR2V0KHVuc2lnbmVkIGxvbmcgdWxQb3J0LCB1bnNpZ25lZCBjaGFyIHVjUGluKTsKK2V4dGVybiB2b2lkIEdQSU9JbnRFbmFibGUodW5zaWduZWQgbG9uZyB1bFBvcnQsIHVuc2lnbmVkIGxvbmcgdWxJbnRGbGFncyk7CitleHRlcm4gdm9pZCBHUElPSW50RGlzYWJsZSh1bnNpZ25lZCBsb25nIHVsUG9ydCwgdW5zaWduZWQgbG9uZyB1bEludEZsYWdzKTsKK2V4dGVybiBsb25nIEdQSU9JbnRTdGF0dXModW5zaWduZWQgbG9uZyB1bFBvcnQsIHRCb29sZWFuIGJNYXNrZWQpOworZXh0ZXJuIHZvaWQgR1BJT0ludENsZWFyKHVuc2lnbmVkIGxvbmcgdWxQb3J0LCB1bnNpZ25lZCBsb25nIHVsSW50RmxhZ3MpOworZXh0ZXJuIHZvaWQgR1BJT0ludFJlZ2lzdGVyKHVuc2lnbmVkIGxvbmcgdWxQb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqcGZuSW50SGFuZGxlcikodm9pZCkpOworZXh0ZXJuIHZvaWQgR1BJT0ludFVucmVnaXN0ZXIodW5zaWduZWQgbG9uZyB1bFBvcnQpOworZXh0ZXJuIGxvbmcgR1BJT1BpblJlYWQodW5zaWduZWQgbG9uZyB1bFBvcnQsIHVuc2lnbmVkIGNoYXIgdWNQaW5zKTsKK2V4dGVybiB2b2lkIEdQSU9QaW5Xcml0ZSh1bnNpZ25lZCBsb25nIHVsUG9ydCwgdW5zaWduZWQgY2hhciB1Y1BpbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciB1Y1ZhbCk7CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYXJrIHRoZSBlbmQgb2YgdGhlIEMgYmluZGluZ3Mgc2VjdGlvbiBmb3IgQysrIGNvbXBpbGVycy4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gIF9fR1BJT19IX18KZGlmZiAtLWdpdCBhL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2RyaXZlcmxpYi9pbnRlcnJ1cHQuaCBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2RyaXZlcmxpYi9pbnRlcnJ1cHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTliZDM3Ci0tLSAvZGV2L251bGwKKysrIGIvZXh0L2hhbC90aS9jYzMyMjBzZGsvZHJpdmVybGliL2ludGVycnVwdC5oCkBAIC0wLDAgKzEsMTIxIEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxNiBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgLSBodHRwOi8vd3d3LnRpLmNvbS8KKyAqCisgKiAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiAgYXJlIG1ldDoKKyAqCisgKiAgICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqICAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAgICBOZWl0aGVyIHRoZSBuYW1lIG9mIFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCBub3IgdGhlIG5hbWVzIG9mCisgKiAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqICBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vICBpbnRlcnJ1cHQuaAorLy8KKy8vICBQcm90b3R5cGVzIGZvciB0aGUgTlZJQyBJbnRlcnJ1cHQgQ29udHJvbGxlciBEcml2ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCisjaWZuZGVmIF9fSU5URVJSVVBUX0hfXworI2RlZmluZSBfX0lOVEVSUlVQVF9IX18KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIElmIGJ1aWxkaW5nIHdpdGggYSBDKysgY29tcGlsZXIsIG1ha2UgYWxsIG9mIHRoZSBkZWZpbml0aW9ucyBpbiB0aGlzIGhlYWRlcgorLy8gaGF2ZSBhIEMgYmluZGluZy4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKK3sKKyNlbmRpZgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gQSB1bmlvbiB0aGF0IGRlc2NyaWJlcyB0aGUgZW50cmllcyBvZiB0aGUgdmVjdG9yIHRhYmxlLiAgVGhlIHVuaW9uIGlzIG5lZWRlZAorLy8gc2luY2UgdGhlIGZpcnN0IGVudHJ5IGlzIHRoZSBzdGFjayBwb2ludGVyIGFuZCB0aGUgcmVtYWluZGVyIGFyZSBmdW5jdGlvbgorLy8gcG9pbnRlcnMuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgordHlwZWRlZiB1bmlvbgoreworICAgIHZvaWQgKCpwZm5IYW5kbGVyKSh2b2lkKTsKKyAgICB1bnNpZ25lZCBsb25nIHVsUHRyOworfQordVZlY3RvckVudHJ5OworCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYWNybyB0byBnZW5lcmF0ZSBhbiBpbnRlcnJ1cHQgcHJpb3JpdHkgbWFzayBiYXNlZCBvbiB0aGUgbnVtYmVyIG9mIGJpdHMKKy8vIG9mIHByaW9yaXR5IHN1cHBvcnRlZCBieSB0aGUgaGFyZHdhcmUuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBJTlRfUFJJT1JJVFlfTUFTSyAgICAgICAoKDB4RkYgPDwgKDggLSBOVU1fUFJJT1JJVFlfQklUUykpICYgMHhGRikKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8gSW50ZXJydXB0IHByaW9yaXR5IGxldmVscworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBJTlRfUFJJT1JJVFlfTFZMXzAgICAgICAweDAwCisjZGVmaW5lIElOVF9QUklPUklUWV9MVkxfMSAgICAgIDB4MjAKKyNkZWZpbmUgSU5UX1BSSU9SSVRZX0xWTF8yICAgICAgMHg0MAorI2RlZmluZSBJTlRfUFJJT1JJVFlfTFZMXzMgICAgICAweDYwCisjZGVmaW5lIElOVF9QUklPUklUWV9MVkxfNCAgICAgIDB4ODAKKyNkZWZpbmUgSU5UX1BSSU9SSVRZX0xWTF81ICAgICAgMHhBMAorI2RlZmluZSBJTlRfUFJJT1JJVFlfTFZMXzYgICAgICAweEMwCisjZGVmaW5lIElOVF9QUklPUklUWV9MVkxfNyAgICAgIDB4RTAKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFByb3RvdHlwZXMgZm9yIHRoZSBBUElzLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK2V4dGVybiB0Qm9vbGVhbiBJbnRNYXN0ZXJFbmFibGUodm9pZCk7CitleHRlcm4gdEJvb2xlYW4gSW50TWFzdGVyRGlzYWJsZSh2b2lkKTsKK2V4dGVybiB2b2lkIEludFZUYWJsZUJhc2VTZXQodW5zaWduZWQgbG9uZyB1bFZ0YWJsZUJhc2UpOworZXh0ZXJuIHZvaWQgSW50UmVnaXN0ZXIodW5zaWduZWQgbG9uZyB1bEludGVycnVwdCwgdm9pZCAoKnBmbkhhbmRsZXIpKHZvaWQpKTsKK2V4dGVybiB2b2lkIEludFVucmVnaXN0ZXIodW5zaWduZWQgbG9uZyB1bEludGVycnVwdCk7CitleHRlcm4gdm9pZCBJbnRQcmlvcml0eUdyb3VwaW5nU2V0KHVuc2lnbmVkIGxvbmcgdWxCaXRzKTsKK2V4dGVybiB1bnNpZ25lZCBsb25nIEludFByaW9yaXR5R3JvdXBpbmdHZXQodm9pZCk7CitleHRlcm4gdm9pZCBJbnRQcmlvcml0eVNldCh1bnNpZ25lZCBsb25nIHVsSW50ZXJydXB0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciB1Y1ByaW9yaXR5KTsKK2V4dGVybiBsb25nIEludFByaW9yaXR5R2V0KHVuc2lnbmVkIGxvbmcgdWxJbnRlcnJ1cHQpOworZXh0ZXJuIHZvaWQgSW50RW5hYmxlKHVuc2lnbmVkIGxvbmcgdWxJbnRlcnJ1cHQpOworZXh0ZXJuIHZvaWQgSW50RGlzYWJsZSh1bnNpZ25lZCBsb25nIHVsSW50ZXJydXB0KTsKK2V4dGVybiB2b2lkIEludFBlbmRTZXQodW5zaWduZWQgbG9uZyB1bEludGVycnVwdCk7CitleHRlcm4gdm9pZCBJbnRQZW5kQ2xlYXIodW5zaWduZWQgbG9uZyB1bEludGVycnVwdCk7CitleHRlcm4gdm9pZCBJbnRQcmlvcml0eU1hc2tTZXQodW5zaWduZWQgbG9uZyB1bFByaW9yaXR5TWFzayk7CitleHRlcm4gdW5zaWduZWQgbG9uZyBJbnRQcmlvcml0eU1hc2tHZXQodm9pZCk7CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYXJrIHRoZSBlbmQgb2YgdGhlIEMgYmluZGluZ3Mgc2VjdGlvbiBmb3IgQysrIGNvbXBpbGVycy4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gX19JTlRFUlJVUFRfSF9fCmRpZmYgLS1naXQgYS9leHQvaGFsL3RpL2NjMzIyMHNkay9kcml2ZXJsaWIvcGluLmggYi9leHQvaGFsL3RpL2NjMzIyMHNkay9kcml2ZXJsaWIvcGluLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmE5NDZmYgotLS0gL2Rldi9udWxsCisrKyBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2RyaXZlcmxpYi9waW4uaApAQCAtMCwwICsxLDE5MSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTYgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkIC0gaHR0cDovL3d3dy50aS5jb20vCisgKgorICogIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogIGFyZSBtZXQ6CisgKgorICogICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAgICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogICAgTmVpdGhlciB0aGUgbmFtZSBvZiBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgbm9yIHRoZSBuYW1lcyBvZgorICogICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqICBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqICBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqICBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiAgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyAgcGluLmgKKy8vCisvLyAgRGVmaW5lcyBhbmQgTWFjcm9zIGZvciB0aGUgcGluIG11eCBtb2R1bGUKKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKyNpZm5kZWYgX19QSU5fSF9fCisjZGVmaW5lIF9fUElOX0hfXworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gSWYgYnVpbGRpbmcgd2l0aCBhIEMrKyBjb21waWxlciwgbWFrZSBhbGwgb2YgdGhlIGRlZmluaXRpb25zIGluIHRoaXMgaGVhZGVyCisvLyBoYXZlIGEgQyBiaW5kaW5nLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgoreworI2VuZGlmCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIE1hY3JvcyBEZWZpbmluZyBQaW5zCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKyNkZWZpbmUgUElOXzAxIAkgMHgwMDAwMDAwMAorI2RlZmluZSBQSU5fMDIgCSAweDAwMDAwMDAxCisjZGVmaW5lIFBJTl8wMyAgIDB4MDAwMDAwMDIKKyNkZWZpbmUgUElOXzA0IAkgMHgwMDAwMDAwMworI2RlZmluZSBQSU5fMDUgICAweDAwMDAwMDA0CisjZGVmaW5lIFBJTl8wNiAgIDB4MDAwMDAwMDUKKyNkZWZpbmUgUElOXzA3ICAgMHgwMDAwMDAwNgorI2RlZmluZSBQSU5fMDggICAweDAwMDAwMDA3CisjZGVmaW5lIFBJTl8xMSAgIDB4MDAwMDAwMEEKKyNkZWZpbmUgUElOXzEyICAgMHgwMDAwMDAwQgorI2RlZmluZSBQSU5fMTMgICAweDAwMDAwMDBDCisjZGVmaW5lIFBJTl8xNCAgIDB4MDAwMDAwMEQKKyNkZWZpbmUgUElOXzE1ICAgMHgwMDAwMDAwRQorI2RlZmluZSBQSU5fMTYgICAweDAwMDAwMDBGCisjZGVmaW5lIFBJTl8xNyAgIDB4MDAwMDAwMTAKKyNkZWZpbmUgUElOXzE4ICAgMHgwMDAwMDAxMQorI2RlZmluZSBQSU5fMTkgCSAweDAwMDAwMDEyCisjZGVmaW5lIFBJTl8yMCAgIDB4MDAwMDAwMTMKKyNkZWZpbmUgUElOXzIxICAgMHgwMDAwMDAxNAorI2RlZmluZSBQSU5fNDUgICAweDAwMDAwMDJDCisjZGVmaW5lIFBJTl80NiAgIDB4MDAwMDAwMkQKKyNkZWZpbmUgUElOXzQ3ICAgMHgwMDAwMDAyRQorI2RlZmluZSBQSU5fNDggICAweDAwMDAwMDJGCisjZGVmaW5lIFBJTl80OSAgIDB4MDAwMDAwMzAKKyNkZWZpbmUgUElOXzUwICAgMHgwMDAwMDAzMQorI2RlZmluZSBQSU5fNTIgICAweDAwMDAwMDMzCisjZGVmaW5lIFBJTl81MyAgIDB4MDAwMDAwMzQKKyNkZWZpbmUgUElOXzU1ICAgMHgwMDAwMDAzNgorI2RlZmluZSBQSU5fNTYgICAweDAwMDAwMDM3CisjZGVmaW5lIFBJTl81NyAgIDB4MDAwMDAwMzgKKyNkZWZpbmUgUElOXzU4ICAgMHgwMDAwMDAzOQorI2RlZmluZSBQSU5fNTkgICAweDAwMDAwMDNBCisjZGVmaW5lIFBJTl82MCAgIDB4MDAwMDAwM0IKKyNkZWZpbmUgUElOXzYxCSAweDAwMDAwMDNDCisjZGVmaW5lIFBJTl82MgkgMHgwMDAwMDAzRAorI2RlZmluZSBQSU5fNjMJIDB4MDAwMDAwM0UKKyNkZWZpbmUgUElOXzY0CSAweDAwMDAwMDNGCisKKworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBNYWNyb3MgdGhhdCBjYW4gYmUgdXNlZCB3aXRoIFBpbkNvbmZpZ1NldCgpLCBQaW5UeXBlR2V0KCksIFBpblN0cmVuZ3RoR2V0KCkKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworI2RlZmluZSBQSU5fTU9ERV8wCSAweDAwMDAwMDAwCisjZGVmaW5lIFBJTl9NT0RFXzEJIDB4MDAwMDAwMDEKKyNkZWZpbmUgUElOX01PREVfMgkgMHgwMDAwMDAwMgorI2RlZmluZSBQSU5fTU9ERV8zCSAweDAwMDAwMDAzCisjZGVmaW5lIFBJTl9NT0RFXzQJIDB4MDAwMDAwMDQKKyNkZWZpbmUgUElOX01PREVfNQkgMHgwMDAwMDAwNQorI2RlZmluZSBQSU5fTU9ERV82CSAweDAwMDAwMDA2CisjZGVmaW5lIFBJTl9NT0RFXzcJIDB4MDAwMDAwMDcKKyNkZWZpbmUgUElOX01PREVfOAkgMHgwMDAwMDAwOAorI2RlZmluZSBQSU5fTU9ERV85CSAweDAwMDAwMDA5CisjZGVmaW5lIFBJTl9NT0RFXzEwCSAweDAwMDAwMDBBCisjZGVmaW5lIFBJTl9NT0RFXzExCSAweDAwMDAwMDBCCisjZGVmaW5lIFBJTl9NT0RFXzEyCSAweDAwMDAwMDBDCisjZGVmaW5lIFBJTl9NT0RFXzEzCSAweDAwMDAwMDBECisjZGVmaW5lIFBJTl9NT0RFXzE0CSAweDAwMDAwMDBFCisjZGVmaW5lIFBJTl9NT0RFXzE1CSAweDAwMDAwMDBGCisvLyBOb3RlIDogUElOX01PREVfMjU1IGlzIGEgZHVtbXkgZGVmaW5lIGZvciBwaW5tdXggdXRpbGl0eSBjb2RlIGdlbmVyYXRpb24KKy8vIFBJTl9NT0RFXzI1NSBzaG91bGQgbmV2ZXIgYmUgdXNlZCBpbiBhbnkgdXNlciBjb2RlLgorI2RlZmluZSBQSU5fTU9ERV8yNTUgMHgwMDAwMDBGRgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBNYWNyb3MgdGhhdCBjYW4gYmUgdXNlZCB3aXRoIFBpbkRpck1vZGVTZXQoKSBhbmQgcmV0dXJuZWQgZnJvbQorLy8gUGluRGlyTW9kZUdldCgpLgorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBQSU5fRElSX01PREVfSU4gIDB4MDAwMDBDMDAgLy8gUGluIGlzIGlucHV0CisjZGVmaW5lIFBJTl9ESVJfTU9ERV9PVVQgMHgwMDAwMDgwMCAvLyBQaW4gaXMgb3V0cHV0CisjZGVmaW5lIFBJTl9ESVJfTU9ERV9IVyAgMHgwMDAwMDAwMCAvLyBQaW4gaXMgcGVyaXBoZXJhbCBmdW5jdGlvbgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBNYWNyb3MgdGhhdCBjYW4gYmUgdXNlZCB3aXRoIFBpbkNvbmZpZ1NldCgpCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIFBJTl9TVFJFTkdUSF8yTUEgIDB4MDAwMDAwMjAKKyNkZWZpbmUgUElOX1NUUkVOR1RIXzRNQSAgMHgwMDAwMDA0MAorI2RlZmluZSBQSU5fU1RSRU5HVEhfNk1BICAweDAwMDAwMDYwCisKKyNkZWZpbmUgUElOX1RZUEVfU1REICAgICAgMHgwMDAwMDAwMAorI2RlZmluZSBQSU5fVFlQRV9TVERfUFUgICAweDAwMDAwMTAwCisjZGVmaW5lIFBJTl9UWVBFX1NURF9QRCAgIDB4MDAwMDAyMDAKKworI2RlZmluZSBQSU5fVFlQRV9PRCAgICAgICAweDAwMDAwMDEwCisjZGVmaW5lIFBJTl9UWVBFX09EX1BVICAgIDB4MDAwMDAxMTAKKyNkZWZpbmUgUElOX1RZUEVfT0RfUEQgICAgMHgwMDAwMDIxMAorI2RlZmluZSBQSU5fVFlQRV9BTkFMT0cgICAweDEwMDAwMDAwCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIE1hY3JvcyB0aGF0IGNhbiBiZSB1c2VkIHdpdGggUGluSHlzdGVyZXNpc1NldCgpCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIFBJTl9IWVNURVJFU0lTX09GRiAgICAgIDB4MDAwMDAwMDAKKyNkZWZpbmUgUElOX0hZU1RFUkVTSVNfMTAgICAgICAgMHgwMDAwMDAwNAorI2RlZmluZSBQSU5fSFlTVEVSRVNJU18yMCAgICAgICAweDAwMDAwMDBDCisjZGVmaW5lIFBJTl9IWVNURVJFU0lTXzMwICAgICAgIDB4MDAwMDAwMTQKKyNkZWZpbmUgUElOX0hZU1RFUkVTSVNfNDAgICAgICAgMHgwMDAwMDAxQworCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBBUEkgRnVuY3Rpb24gcHJvdG90eXBlcworLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK2V4dGVybiB2b2lkIFBpbk1vZGVTZXQodW5zaWduZWQgbG9uZyB1bFBpbiwgdW5zaWduZWQgbG9uZyB1bFBpbk1vZGUpOworZXh0ZXJuIHZvaWQgUGluRGlyTW9kZVNldCh1bnNpZ25lZCBsb25nIHVsUGluLCB1bnNpZ25lZCBsb25nIHVsUGluSU8pOworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgUGluRGlyTW9kZUdldCh1bnNpZ25lZCBsb25nIHVsUGluKTsKK2V4dGVybiB1bnNpZ25lZCBsb25nIFBpbk1vZGVHZXQodW5zaWduZWQgbG9uZyB1bFBpbik7CitleHRlcm4gdm9pZCBQaW5Db25maWdHZXQodW5zaWduZWQgbG9uZyB1bFBpbix1bnNpZ25lZCBsb25nICAqcHVsUGluU3RyZW5ndGgsCisJCQkJCQl1bnNpZ25lZCBsb25nICpwdWxQaW5UeXBlKTsKK2V4dGVybiB2b2lkIFBpbkNvbmZpZ1NldCh1bnNpZ25lZCBsb25nIHVsUGluLHVuc2lnbmVkIGxvbmcgIHVsUGluU3RyZW5ndGgsCisJCQkJCQl1bnNpZ25lZCBsb25nIHVsUGluVHlwZSk7CitleHRlcm4gdm9pZCBQaW5UeXBlVUFSVCh1bnNpZ25lZCBsb25nIHVsUGluLHVuc2lnbmVkIGxvbmcgdWxQaW5Nb2RlKTsKK2V4dGVybiB2b2lkIFBpblR5cGVJMkModW5zaWduZWQgbG9uZyB1bFBpbix1bnNpZ25lZCBsb25nIHVsUGluTW9kZSk7CitleHRlcm4gdm9pZCBQaW5UeXBlU1BJKHVuc2lnbmVkIGxvbmcgdWxQaW4sdW5zaWduZWQgbG9uZyB1bFBpbk1vZGUpOworZXh0ZXJuIHZvaWQgUGluVHlwZUkyUyh1bnNpZ25lZCBsb25nIHVsUGluLHVuc2lnbmVkIGxvbmcgdWxQaW5Nb2RlKTsKK2V4dGVybiB2b2lkIFBpblR5cGVUaW1lcih1bnNpZ25lZCBsb25nIHVsUGluLHVuc2lnbmVkIGxvbmcgdWxQaW5Nb2RlKTsKK2V4dGVybiB2b2lkIFBpblR5cGVDYW1lcmEodW5zaWduZWQgbG9uZyB1bFBpbix1bnNpZ25lZCBsb25nIHVsUGluTW9kZSk7CitleHRlcm4gdm9pZCBQaW5UeXBlR1BJTyh1bnNpZ25lZCBsb25nIHVsUGluLHVuc2lnbmVkIGxvbmcgdWxQaW5Nb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgdEJvb2xlYW4gYk9wZW5EcmFpbik7CitleHRlcm4gdm9pZCBQaW5UeXBlQURDKHVuc2lnbmVkIGxvbmcgdWxQaW4sdW5zaWduZWQgbG9uZyB1bFBpbk1vZGUpOworZXh0ZXJuIHZvaWQgUGluVHlwZVNESG9zdCh1bnNpZ25lZCBsb25nIHVsUGluLHVuc2lnbmVkIGxvbmcgdWxQaW5Nb2RlKTsKK2V4dGVybiB2b2lkIFBpbkh5c3RlcmVzaXNTZXQodW5zaWduZWQgbG9uZyB1bEh5c3RlcmVzaXMpOworZXh0ZXJuIHZvaWQgUGluTG9ja0xldmVsU2V0KHVuc2lnbmVkIGxvbmcgdWxQaW4sIHVuc2lnbmVkIGNoYXIgdWNMZXZlbCk7CitleHRlcm4gdm9pZCBQaW5Mb2NrKHVuc2lnbmVkIGxvbmcgdWxPdXRFbmFibGUpOworZXh0ZXJuIHZvaWQgUGluVW5sb2NrKHZvaWQpOworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgUGluVG9QYWRHZXQodW5zaWduZWQgbG9uZyB1bFBpbik7CitleHRlcm4gdW5zaWduZWQgbG9uZyBQaW5Gcm9tUGFkR2V0KHVuc2lnbmVkIGxvbmcgdWxQYWQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy9fX1BJTl9IX18KZGlmZiAtLWdpdCBhL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2RyaXZlcmxpYi9wcmNtLmMgYi9leHQvaGFsL3RpL2NjMzIyMHNkay9kcml2ZXJsaWIvcHJjbS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwMTljNzEKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvaGFsL3RpL2NjMzIyMHNkay9kcml2ZXJsaWIvcHJjbS5jCkBAIC0wLDAgKzEsMjcxNSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTYgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkIC0gaHR0cDovL3d3dy50aS5jb20vCisgKgorICogIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogIGFyZSBtZXQ6CisgKgorICogICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAgICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogICAgTmVpdGhlciB0aGUgbmFtZSBvZiBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgbm9yIHRoZSBuYW1lcyBvZgorICogICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqICBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqICBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqICBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiAgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vISBcYWRkdG9ncm91cCBQUkNNX1Bvd2VyX1Jlc2V0X0Nsb2NrX01vZHVsZV9hcGkKKy8vISBAeworLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworI2luY2x1ZGUgImluYy9od190eXBlcy5oIgorI2luY2x1ZGUgImluYy9od19pbnRzLmgiCisjaW5jbHVkZSAiaW5jL2h3X21lbW1hcC5oIgorI2luY2x1ZGUgImluYy9od19hcHBzX3JjbS5oIgorI2luY2x1ZGUgImluYy9od19ncHJjbS5oIgorI2luY2x1ZGUgImluYy9od19oaWIxcDIuaCIKKyNpbmNsdWRlICJpbmMvaHdfaGliM3AzLmgiCisjaW5jbHVkZSAiaW5jL2h3X29jcF9zaGFyZWQuaCIKKyNpbmNsdWRlICJpbmMvaHdfY29tbW9uX3JlZy5oIgorI2luY2x1ZGUgInByY20uaCIKKyNpbmNsdWRlICJpbnRlcnJ1cHQuaCIKKyNpbmNsdWRlICJjcHUuaCIKKyNpbmNsdWRlICJmbGFzaC5oIgorI2luY2x1ZGUgInV0aWxzLmgiCisKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8gTWFjcm8gZGVmaW5pdGlvbgorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBQUkNNX1NPRlRfUkVTRVQgICAgICAgICAgIDB4MDAwMDAwMDEKKyNkZWZpbmUgUFJDTV9FTkFCTEVfU1RBVFVTICAgICAgICAweDAwMDAwMDAyCisjZGVmaW5lIFNZU19DTEsgICAgICAgICAgICAgICAgICAgODAwMDAwMDAKKyNkZWZpbmUgWFRBTF9DTEsgICAgICAgICAgICAgICAgICA0MDAwMDAwMAorCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vICAgIENDMzIwMCBkb2VzIG5vdCBoYXZlIGEgdHJ1ZSBSVEMgY2FwYWJpbGl0eS4gSG93ZXZlciwgQVBJKHMpIGluIHRoaXMgZmlsZQorLy8gICAgcHJvdmlkZSBhbiBlZmZlY3RpdmUgbWVjaGFuaXNtIHRvIHN1cHBvcnQgUlRDIGZlYXR1cmUgaW4gdGhlIGRldmljZS4KKy8vCisvLyAgICBUaGUgaW1wbGVtZW50YXRpb24gdG8gc3VwcG9ydCBSVEMgaGFzIGJlZW4ga2VwdCB2ZXJ5IHNpbXBsZS4gQSBzZXQgb2YKKy8vICAgIEhJQiBNZW1vcnkgUmVnaXN0ZXJzIGluIGNvbmp1bmN0aW9uIHdpdGggU2xvdyBDbG9jayBDb3VudGVyIGFyZSB1c2VkCisvLyAgICB0byByZW5kZXIgUlRDIGluZm9ybWF0aW9uIHRvIHVzZXJzLiBDb3JlIHByaW5jaXBsZSBvZiBkZXNpZ24gaW52b2x2ZXMKKy8vICAgIHR3byBzdGVwcyAoYSkgZXN0YWJsaXNoIGFuIGFzc29jaWF0aW9uIGJldHdlZW4gdXNlciBwcm92aWRlZCB3YWxsLWNsb2NrCisvLyAgICBhbmQgc2xvdyBjbG9jayBjb3VudGVyLiAoYikgc3RvcmUgcmVmZXJlbmNlIHZhbHVlIG9mIHRoaXMgYXNzb2NpYXR0aW9uCisvLyAgICBpbiBISUIgUmVnaXN0ZXJzLiBUaGlzIHJlZmVyZW5jZSB2YWx1ZSBhbmQgU0NDIHZhbHVlIGFyZSB0aGVuIGNvbWJpbmVkCisvLyAgICB0byBjcmVhdGUgcmVhbC13b3JsZCBjYWxlbmRhciB0aW1lLgorLy8KKy8vICAgIEFjcm9zcyBISUIgY3ljbGVzLCB2YWx1ZSBzdG9yZWQgaW4gSElCIFJlZ2lzdGVycyBpcyByZXRhaW5lZCBhbmQgc2xvdworLy8gICAgY2xvY2sgY291bnRlciBjb250aW51ZXMgdG8gdGljaywgdGhlcmVieSwgdGhpcyBhcnJhZ2VtZW50IGlzIHJlbGV2YW50CisvLyAgICBhbmQgdmFsaWQgYXMgbG9uZyBhcyBkZXZpY2UgaGFzIGEgKHRpY2tsZSkgYmF0dGVyeSBwb3dlci4KKy8vCisvLyAgICBGdXJ0aGVyLCBwcm92aXNpb24gYWxzbyBoYXMgYmVlbiBtYWRlIHRvIHNldCBhbiBhbGFybS4gV2hlbiBpdCBSVEMgdmFsdWUKKy8vICAgIG1hdGNoZXMgdGhhdCBvZiBzZXQgZm9yIGFsYXJtLCBhbiBpbnRlcnJ1cHQgaXMgZ2VuZXJhdGVkLgorLy8KKy8vICAgIEhJQiBNRU0gUkVHMCBhbmQgUkVHMSBhcmUgcmVzZXJ2ZWQgZm9yIFRJLgorLy8KKy8vICAgIElmIFJUQyBmZWF0dXJlIGlzIG5vdCB1c2VkLCB0aGVuIEhJQiBSRUcyICYgUkVHMyBhcmUgYXZhaWxhYmxlIHRvIHVzZXIuCisvLworLy8gICAgTG93ZXIgaGFsZiBvZiBSRUcwIGlzIHVzZWQgZm9yIFRJIEhXIEVDTy4KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgUlRDX1U2NE1TRUNfTUsodTMyU2VjcywgdTE2TXNlYykgKCgodW5zaWduZWQgbG9uZyBsb25nKXUzMlNlY3MgPDwgMTApfFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1MTZNc2VjICYgMHgzRkYpKQorCisjZGVmaW5lIFJUQ19TRUNTX0lOX1U2NE1TRUModTY0TXNlYykgICAgICgodW5zaWduZWQgbG9uZykodTY0TXNlYyAgPj4gICAxMCkpCisjZGVmaW5lIFJUQ19NU0VDX0lOX1U2NE1TRUModTY0TXNlYykgICAgICgodW5zaWduZWQgc2hvcnQpKHU2NE1zZWMgJiAweDNGRikpCisKKyNkZWZpbmUgUlRDX1NFQ1NfVTMyX1JFR19BRERSICAgICAgICAgICAgKEhJQjNQM19CQVNFICsgSElCM1AzX09fTUVNX0hJQl9SRUczKQorI2RlZmluZSBSVENfTVNFQ19VMTZfUkVHX0FERFIgICAgICAgICAgICAoSElCM1AzX0JBU0UgKyBISUIzUDNfT19NRU1fSElCX1JFRzIrMikKKworI2RlZmluZSBSVENfVTMyU0VDU19SRUcgICAgICAgICAgICAgICAgIChIV1JFRyhSVENfU0VDU19VMzJfUkVHX0FERFIpKQorI2RlZmluZSBSVENfVTE2TVNFQ19SRUcgICAgICAgICAgICAgICAgICgqKHVuc2lnbmVkIHNob3J0KilSVENfTVNFQ19VMTZfUkVHX0FERFIpCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIFJlZ2lzdGVyIEFjY2VzcyBhbmQgVXBkYXRlcworLy8KKy8vIFRpY2sgb2YgU0NDIGhhcyBhIHJlc29sdXRpb24gb2YgMzI3NjhIeiwgbWVhbmluZyAxIHNlYyBpcyBlcXVhbCB0byAzMjc2OAorLy8gY2xvY2sgdGlja3MuIElkZWFsIHdheSBvZiBnZXR0aW5nIHRpbWUgaW4gbWlsbGlzZWNvbmQgd2lsbCBpbnZvbHZlIGZsb2F0aW5nCisvLyBwb2ludCBhcml0aG1ldGljIChkaXZpc2lvbiBieSAzMi43NjgpLiBUbyBhdm9pZCB0aGlzLCB3ZSBzaW1wbHkgZGl2aWRlIGl0IGJ5CisvLyAzMiwgd2hpY2ggd2lsbCBnaXZlIGEgcmFuZ2UgZnJvbSAwIC0xMDIzKGluc3RlYWQgb2YgMC05OTkpLiBUbyB1c2UgdGhpcworLy8gb3V0cHV0IGNvcnJlY3RseSB3ZSBoYXZlIHRvIHRha2UgY2FyZSBvZiB0aGlzIGluYWNjdXJhY3kgZXh0ZXJuYWxseS4KKy8vIGZvbGxvd2luZyB3cmFwcGVyIGNhbiBiZSB1c2VkIHRvIGNvbnZlcnQgdGhlIHZhbHVlIGZyb20gY3ljbGVzIHRvCisvLyBtaWxsaXNlY29uZDoKKy8vCisvLyBDWUNMRVNfVTE2TVMoY3ljbGVzKQkoKGN5Y2xlcyAqMTAwMCkvIDEwMjQpLAorLy8KKy8vIFNpbWlsYXJseSwgYmVmb3JlIHNldHRpbmcgdGhlIHZhbHVlLCBpdCBtdXN0IGJlIGZpcnN0IGNvbnZlcnRlZCAoZnJvbSBtcyB0bworLy8gY3ljbGVzKS4KKy8vCisvLyBVMTZNU19DWUNMRVMobXNlYykJKChtc2VjICoxMDI0KS8xMDAwKQorLy8KKy8vIE5vdGU6IFRoZXJlIGlzIGEgcHJlY2lzaW9uIGxvc3Mgb2YgMSBtcyB3aXRoIHRoZSBhYm92ZSBzY2hlbWUuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBTQ0NfVTY0TVNFQ19HRVQoKSAgICAgICAgICAgICAgICAoUFJDTVNsb3dDbGtDdHJHZXQoKSA+PiA1KQorI2RlZmluZSBTQ0NfVTY0TVNFQ19NQVRDSF9TRVQodTY0TXNlYykgICAoUFJDTVNsb3dDbGtDdHJNYXRjaFNldCh1NjRNc2VjIDw8IDUpKQorI2RlZmluZSBTQ0NfVTY0TVNFQ19NQVRDSF9HRVQoKSAgICAgICAgICAoUFJDTVNsb3dDbGtDdHJNYXRjaEdldCgpID4+IDUpCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBCaXQ6ICAzMSBpcyB1c2VkIHRvIGluZGljYXRlIHVzZSBvZiBSVEMuIElmIHNldCBhcyAnMScsIFJUQyBmZWF0dXJlIGlzIHVzZWQuCisvLyBCaXRzOiAzMCB0byAyNiBhcmUgcmVzZXJ2ZWQsIGF2YWlsYWJsZSB0byBzb2Z0d2FyZSBmb3IgdXNlCisvLyBCaXRzOiAyNSB0byAxNiBhcmUgdXNlZCB0byBzYXZlIG1pbGxpc2Vjb25kIHBhcnQgb2YgUlRDIHJlZmVyZW5jZS4KKy8vIEJpdHM6IDE1IHRvIDAgYXJlIGJlaW5nIHVzZWQgZm9yIEhXIENoYW5nZXMgLyBFQ08KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIFNldCBSVEMgVVNFIEJpdAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorc3RhdGljIHZvaWQgUlRDVXNlU2V0KHZvaWQpCit7CisgIHVuc2lnbmVkIHNob3J0IHVzUmVnVmFsdWU7CisKKyAgdXNSZWdWYWx1ZSA9IFJUQ19VMTZNU0VDX1JFRyB8ICAoMSA8PCAxNSk7CisKKyAgVXRpbHNEZWxheSgoODAqMjAwKS8zKTsKKworICBSVENfVTE2TVNFQ19SRUcgPSB1c1JlZ1ZhbHVlOworfQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBDaGVja3MgaWYgUlRDLVVTRSBiaXQgaXMgc2V0CisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitzdGF0aWMgdEJvb2xlYW4gSXNSVENVc2VkKHZvaWQpCit7CisgIHVuc2lnbmVkIHNob3J0IHVzUmVnVmFsdWU7CisKKyAgdXNSZWdWYWx1ZSA9IFJUQ19VMTZNU0VDX1JFRzsKKworICBVdGlsc0RlbGF5KCg4MCoyMDApLzMpOworCisgIHJldHVybiAoKHVzUmVnVmFsdWUgJiAoMSA8PCAxNSkpPyB0cnVlIDogZmFsc2UpOworfQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBSZWFkIDE2LWJpdCBtU2VjcworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorc3RhdGljIHVuc2lnbmVkIHNob3J0IFJUQ1UxNk1TZWNSZWdSZWFkKHZvaWQpCit7CisgIHVuc2lnbmVkIHNob3J0IHVzUmVnVmFsdWU7CisKKyAgdXNSZWdWYWx1ZSA9IFJUQ19VMTZNU0VDX1JFRzsKKworICBVdGlsc0RlbGF5KCg4MCoyMDApLzMpOworCisgIHJldHVybiAodXNSZWdWYWx1ZSAmIDB4M0ZGKTsKK30KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8gV3JpdGUgMTYtYml0IG1TZWNzCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitzdGF0aWMgdm9pZCBSVENVMTZNU2VjUmVnV3JpdGUodW5zaWduZWQgc2hvcnQgdTE2TXNlYykKK3sKKyAgIHVuc2lnbmVkIHNob3J0IHVzUmVnVmFsdWU7CisKKyAgIHVzUmVnVmFsdWUgPSBSVENfVTE2TVNFQ19SRUc7CisKKyAgIFV0aWxzRGVsYXkoKDgwKjIwMCkvMyk7CisKKyAgIFJUQ19VMTZNU0VDX1JFRyA9ICgodXNSZWdWYWx1ZSAmIH4weDNGRikgfHUxNk1zZWMpOworfQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBSZWFkIDMyLWJpdCBTZWNzCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitzdGF0aWMgdW5zaWduZWQgbG9uZyBSVENVMzJTZWNSZWdSZWFkKHZvaWQpCit7CisgIHJldHVybiAoUFJDTUhJQlJlZ1JlYWQoUlRDX1NFQ1NfVTMyX1JFR19BRERSKSk7Cit9CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIFdyaXRlIDMyLWJpdCBTZWNzCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitzdGF0aWMgdm9pZCBSVENVMzJTZWNSZWdXcml0ZSh1bnNpZ25lZCBsb25nIHUzMk1zZWMpCit7CisgICBQUkNNSElCUmVnV3JpdGUoUlRDX1NFQ1NfVTMyX1JFR19BRERSLCB1MzJNc2VjKTsKK30KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8gTWFjcm9zCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIElTX1JUQ19VU0VEKCkgICAgICAgICAgICAgICAgICAgSXNSVENVc2VkKCkKKyNkZWZpbmUgUlRDX1VTRV9TRVQoKSAgICAgICAgICAgICAgICAgICBSVENVc2VTZXQoKQorCisjZGVmaW5lIFJUQ19VMTZNU0VDX1JFR19SRCgpICAgICAgICAgICAgUlRDVTE2TVNlY1JlZ1JlYWQoKQorI2RlZmluZSBSVENfVTE2TVNFQ19SRUdfV1IodTE2TXNlYykgICAgIFJUQ1UxNk1TZWNSZWdXcml0ZSh1MTZNc2VjKQorCisjZGVmaW5lIFJUQ19VMzJTRUNTX1JFR19SRCgpICAgICAgICAgICAgUlRDVTMyU2VjUmVnUmVhZCgpCisjZGVmaW5lIFJUQ19VMzJTRUNTX1JFR19XUih1MzJTZWNzKSAgICAgUlRDVTMyU2VjUmVnV3JpdGUodTMyU2VjcykKKworI2RlZmluZSBTRUxFQ1RfU0NDX1U0MkJJVFModTY0TXNlYykgICAgICh1NjRNc2VjICYgMHgzZmZmZmZmZmZmZikKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8gR2xvYmFsIFBlcmlwaGVyYWwgY2xvY2sgYW5kIHJlc3QgUmVnaXN0ZXJzCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitzdGF0aWMgY29uc3QgUFJDTV9QZXJpcGhSZWdzX3QgUFJDTV9QZXJpcGhSZWdzTGlzdFtdID0KK3sKKworCXtBUFBTX1JDTV9PX0NBTUVSQV9DTEtfR0FUSU5HLCAgIEFQUFNfUkNNX09fQ0FNRVJBX1NPRlRfUkVTRVQgICB9LAorCXtBUFBTX1JDTV9PX01DQVNQX0NMS19HQVRJTkcsICAgIEFQUFNfUkNNX09fTUNBU1BfU09GVF9SRVNFVCAgICB9LAorCXtBUFBTX1JDTV9PX01NQ0hTX0NMS19HQVRJTkcsICAgIEFQUFNfUkNNX09fTU1DSFNfU09GVF9SRVNFVCAgICB9LAorCXtBUFBTX1JDTV9PX01DU1BJX0ExX0NMS19HQVRJTkcsIEFQUFNfUkNNX09fTUNTUElfQTFfU09GVF9SRVNFVCB9LAorCXtBUFBTX1JDTV9PX01DU1BJX0EyX0NMS19HQVRJTkcsIEFQUFNfUkNNX09fTUNTUElfQTJfU09GVF9SRVNFVCB9LAorCXtBUFBTX1JDTV9PX1VETUFfQV9DTEtfR0FUSU5HLCAgIEFQUFNfUkNNX09fVURNQV9BX1NPRlRfUkVTRVQgICB9LAorCXtBUFBTX1JDTV9PX0dQSU9fQV9DTEtfR0FUSU5HLCAgIEFQUFNfUkNNX09fR1BJT19BX1NPRlRfUkVTRVQgICB9LAorCXtBUFBTX1JDTV9PX0dQSU9fQl9DTEtfR0FUSU5HLCAgIEFQUFNfUkNNX09fR1BJT19CX1NPRlRfUkVTRVQgICB9LAorCXtBUFBTX1JDTV9PX0dQSU9fQ19DTEtfR0FUSU5HLCAgIEFQUFNfUkNNX09fR1BJT19DX1NPRlRfUkVTRVQgICB9LAorCXtBUFBTX1JDTV9PX0dQSU9fRF9DTEtfR0FUSU5HLCAgIEFQUFNfUkNNX09fR1BJT19EX1NPRlRfUkVTRVQgICB9LAorCXtBUFBTX1JDTV9PX0dQSU9fRV9DTEtfR0FUSU5HLCAgIEFQUFNfUkNNX09fR1BJT19FX1NPRlRfUkVTRVQgICB9LAorCXtBUFBTX1JDTV9PX1dET0dfQV9DTEtfR0FUSU5HLCAgIEFQUFNfUkNNX09fV0RPR19BX1NPRlRfUkVTRVQgICB9LAorCXtBUFBTX1JDTV9PX1VBUlRfQTBfQ0xLX0dBVElORywgIEFQUFNfUkNNX09fVUFSVF9BMF9TT0ZUX1JFU0VUICB9LAorCXtBUFBTX1JDTV9PX1VBUlRfQTFfQ0xLX0dBVElORywgIEFQUFNfUkNNX09fVUFSVF9BMV9TT0ZUX1JFU0VUICB9LAorCXtBUFBTX1JDTV9PX0dQVF9BMF9DTEtfR0FUSU5HICwgIEFQUFNfUkNNX09fR1BUX0EwX1NPRlRfUkVTRVQgICB9LAorCXtBUFBTX1JDTV9PX0dQVF9BMV9DTEtfR0FUSU5HLCAgIEFQUFNfUkNNX09fR1BUX0ExX1NPRlRfUkVTRVQgICB9LAorCXtBUFBTX1JDTV9PX0dQVF9BMl9DTEtfR0FUSU5HLCAgIEFQUFNfUkNNX09fR1BUX0EyX1NPRlRfUkVTRVQgICB9LAorCXtBUFBTX1JDTV9PX0dQVF9BM19DTEtfR0FUSU5HLCAgIEFQUFNfUkNNX09fR1BUX0EzX1NPRlRfUkVTRVQgICB9LAorCXtBUFBTX1JDTV9PX0NSWVBUT19DTEtfR0FUSU5HLCAgIEFQUFNfUkNNX09fQ1JZUFRPX1NPRlRfUkVTRVQgICB9LAorCXtBUFBTX1JDTV9PX01DU1BJX1MwX0NMS19HQVRJTkcsIEFQUFNfUkNNX09fTUNTUElfUzBfU09GVF9SRVNFVCB9LAorCXtBUFBTX1JDTV9PX0kyQ19DTEtfR0FUSU5HLCAgICAgIEFQUFNfUkNNX09fSTJDX1NPRlRfUkVTRVQgICAgICB9CisKK307CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyEgUGVyZm9ybXMgYSBzb2Z0d2FyZSByZXNldCBvZiBhIE1DVSBhbmQgYXNzb2NpYXRlZCBwZXJpcGhlcmFscworLy8hCisvLyEgXHBhcmFtIGJJbmNsdWRlU3Vic3lzdGVtIGlzIFxiIHRydWUgdG8gcmVzZXQgYXNzb2NpYXRlZCBwZXJpcGhlcmFscy4KKy8vIQorLy8hIFRoaXMgZnVuY3Rpb24gcGVyZm9ybXMgYSBzb2Z0d2FyZSByZXNldCBvZiBhIE1DVSBhbmQgYXNzb2NpYXRlZCBwZXJpcGhlcmFscy4KKy8vISBUbyByZXNldCB0aGUgYXNzb2NpYXRlZCBwZXJpcGhlcmFsLCB0aGUgcGFyYW1ldGVyIFxlIGJJbmNsdWRlU3Vic3lzdGVtCisvLyEgc2hvdWxkIGJlIHNldCB0byBcYiB0cnVlLgorLy8hCisvLyEgXHJldHVybiBOb25lLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK3ZvaWQgUFJDTU1DVVJlc2V0KHRCb29sZWFuIGJJbmNsdWRlU3Vic3lzdGVtKQoreworICBpZihiSW5jbHVkZVN1YnN5c3RlbSkKKyAgeworICAgIC8vCisgICAgLy8gUmVzZXQgQXBwcyBwcm9jZXNzb3IgYW5kIGFzc29jaWF0ZWQgcGVyaXBoZXJhbAorICAgIC8vCisgICAgSFdSRUcoR1BSQ01fQkFTRSsgR1BSQ01fT19BUFBTX1NPRlRfUkVTRVQpID0gMHgyOworICB9CisgIGVsc2UKKyAgeworICAgIC8vCisgICAgLy8gUmVzZXQgQXBwcyBwcm9jZXNzb3Igb25seQorICAgIC8vCisgICAgSFdSRUcoR1BSQ01fQkFTRSsgR1BSQ01fT19BUFBTX1NPRlRfUkVTRVQpID0gMHgxOworICB9CisKKyAgLy8KKyAgLy8gV2FpdCBmb3Igc3lzdGVtIHRvIGVudGVyIGhpYmVybmF0ZQorICAvLworICBfX2FzbSgiICAgIHdmaVxuIik7CisKKyAgLy8KKyAgLy8gSW5maW5pdGUgbG9vcAorICAvLworICB3aGlsZSgxKQorICB7CisKKyAgfQorfQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8hIEdldHMgdGhlIHJlYXNvbiBmb3IgYSByZXNldC4KKy8vIQorLy8hIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgcmVhc29uKHMpIGZvciBhIHJlc2V0LiBUaGUgcmVzZXQgcmVhc29uIGFyZTotCisvLyEgLVxiIFBSQ01fUE9XRVJfT04gIC0gRGV2aWNlIGlzIHBvd2VyaW5nIHVwLgorLy8hIC1cYiBQUkNNX0xQRFNfRVhJVCAtIERldmljZSBpcyBleGl0aW5nIGZyb20gTFBEUy4KKy8vISAtXGIgUFJDTV9DT1JFX1JFU0VUIC0gRGV2aWNlIGlzIGV4aXRpbmcgc29mdCBjb3JlIG9ubHkgcmVzZXQKKy8vISAtXGIgUFJDTV9NQ1VfUkVTRVQgLSBEZXZpY2UgaXMgZXhpdGluZyBzb2Z0IHN1YnN5c3RlbSByZXNldC4KKy8vISAtXGIgUFJDTV9XRFRfUkVTRVQgLSBEZXZpY2Ugd2FzIHJlc2V0IGJ5IHdhdGNoZG9nLgorLy8hIC1cYiBQUkNNX1NPQ19SRVNFVCAtIERldmljZSBpcyBleHRpbmcgU09DIHJlc2V0LgorLy8hIC1cYiBQUkNNX0hJQl9FWElUIC0gRGV2aWNlIGlzIGV4aXRpbmcgaGliZXJuYXRlLgorLy8hCisvLyEgXHJldHVybiBSZXR1cm5zIG9uZSBvZiB0aGUgY2F1c2UgZGVmaW5lZCBhYm92ZS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit1bnNpZ25lZCBsb25nIFBSQ01TeXNSZXNldENhdXNlR2V0KCkKK3sKKyAgdW5zaWduZWQgbG9uZyB1bFdha2V1cFN0YXR1czsKKworICAvLworICAvLyBSZWFkIHRoZSBSZXNldCBzdGF0dXMKKyAgLy8KKyAgdWxXYWtldXBTdGF0dXMgPSAoSFdSRUcoR1BSQ01fQkFTRSsgR1BSQ01fT19BUFBTX1JFU0VUX0NBVVNFKSAmIDB4RkYpOworCisgIC8vCisgIC8vIEZvciBoaWJlcm5hdGUgZG8gYWRkaXRpb25hbCBjaGVjay4KKyAgLy8KKyAgaWYodWxXYWtldXBTdGF0dXMgPT0gUFJDTV9QT1dFUl9PTikKKyAgeworICAgIGlmKFBSQ01ISUJSZWdSZWFkKEhJQjNQM19CQVNFICsgSElCM1AzX09fTUVNX0hJQl9XQUtFX1NUQVRVUykgJiAweDEpCisgICAgeworICAgICAgdWxXYWtldXBTdGF0dXMgPSBQUkNNX0hJQl9FWElUOworCisgICAgICBpZiggKEhXUkVHKE9DUF9TSEFSRURfQkFTRSArIE9DUF9TSEFSRURfT19TUEFSRV9SRUdfOCkgJiAoMHgwMDAwMDI4MCkpID09IDB4MDAwMDAyODAgICkKKyAgICAgIHsKKyAgICAgICAgdWxXYWtldXBTdGF0dXMgPSBQUkNNX1dEVF9SRVNFVDsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgZWxzZSBpZigodWxXYWtldXBTdGF0dXMgPT0gUFJDTV9MUERTX0VYSVQpICYmCisgICAgICAgICAgIShIV1JFRyhHUFJDTV9CQVNFICsgR1BSQ01fT19HUFJDTV9FRlVTRV9SRUFEX1JFRzEpICYgKDEgPDwyKSkgKQorICB7CisgICAgaWYoSFdSRUcoT0NQX1NIQVJFRF9CQVNFICsgT0NQX1NIQVJFRF9PX1NQQVJFX1JFR184KSAmICgweDE8PDgpKQorICAgIHsKKyAgICAgIHVsV2FrZXVwU3RhdHVzID0gUFJDTV9QT1dFUl9PTjsKKyAgICB9CisgIH0KKworICAvLworICAvLyBSZXR1cm4gc3RhdHVzLgorICAvLworICByZXR1cm4gdWxXYWtldXBTdGF0dXM7Cit9CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyEgRW5hYmxlIGNsb2NrKHMpIHRvIHBlcmlwaGVyYWwuCisvLyEKKy8vISBccGFyYW0gdWxQZXJpcGhlcmFsIGlzIG9uZSBvZiB0aGUgdmFsaWQgcGVyaXBoZXJhbHMKKy8vISBccGFyYW0gdWxDbGtGbGFncyBhcmUgYml0bWFzayBvZiBjbG9jayhzKSB0byBiZSBlbmFibGVkLgorLy8hCisvLyEgVGhpcyBmdW5jdGlvbiBlbmFibGVzIHRoZSBjbG9jayBmb3IgdGhlIHNwZWNpZmllZCBwZXJpcGhlcmFsLiBQZXJpcGhlcmFscworLy8hIGFyZSBieSBkZWZhdWx0IGNsb2NrIGdhdGVkIChkaXNhYmxlZCkgYW5kIGdlbmVyYXRlcyBhIGJ1cyBmYXVsdCBpZgorLy8hIGFjY2Vzc2VkLgorLy8hCisvLyEgVGhlIHBhcmFtZXRlciBcZSB1bENsa0ZsYWdzIGNhbiBiZSBsb2dpY2FsIE9SIG9mIHRoZSBmb2xsb3dpbmc6CisvLyEgLVxiIFBSQ01fUlVOX01PREVfQ0xLIC0gVW5nYXRlcyBjbG9jayB0byB0aGUgcGVyaXBoZXJhbAorLy8hIC1cYiBQUkNNX1NMUF9NT0RFX0NMSyAtIEtlZXBzIHRoZSBjbG9ja3MgdW5nYXRlZCBpbiBzbGVlcC4KKy8vIQorLy8hIFxyZXR1cm4gTm9uZS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit2b2lkCitQUkNNUGVyaXBoZXJhbENsa0VuYWJsZSh1bnNpZ25lZCBsb25nIHVsUGVyaXBoZXJhbCwgdW5zaWduZWQgbG9uZyB1bENsa0ZsYWdzKQoreworICAvLworICAvLyBFbmFibGUgdGhlIHNwZWNpZmllZCBwZXJpcGhlcmFsIGNsb2NrcywgTm90aGluZyB0byBiZSBkb25lIGZvciBQUkNNX0FEQworICAvLyBhcyBpdCBpcyBhIGR1bW15IGRlZmluZSBmb3IgcGlubXV4IHV0aWxpdHkgY29kZSBnZW5lcmF0aW9uCisgIC8vCisgIGlmKHVsUGVyaXBoZXJhbCAhPSBQUkNNX0FEQykKKyAgeworICAgIEhXUkVHKEFSQ01fQkFTRSArIFBSQ01fUGVyaXBoUmVnc0xpc3RbdWxQZXJpcGhlcmFsXS51bENsa1JlZykgfD0gdWxDbGtGbGFnczsKKyAgfQorCisgIC8vCisgIC8vIENoZWNraW5nIFJPTSBWZXJzaW9uIGxlc3MgdGhhbiAyLngueC4KKyAgLy8gT25seSBmb3IgZHJpdmVybGliIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKKyAgLy8KKyAgaWYoIChIV1JFRygweDAwMDAwNDAwKSAmIDB4RkZGRikgPCAyICkKKyAgeworICAgIC8vCisgICAgLy8gU2V0IHRoZSBkZWZhdWx0IGNsb2NrIGZvciBjYW1lcmEKKyAgICAvLworICAgIGlmKHVsUGVyaXBoZXJhbCA9PSBQUkNNX0NBTUVSQSkKKyAgICB7CisgICAgICBIV1JFRyhBUkNNX0JBU0UgKyBBUFBTX1JDTV9PX0NBTUVSQV9DTEtfR0VOKSA9IDB4MDQwNDsKKyAgICB9CisgIH0KK30KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vISBEaXNhYmxlcyBjbG9jayhzKSB0byBwZXJpcGhlcmFsLgorLy8hCisvLyEgXHBhcmFtIHVsUGVyaXBoZXJhbCBpcyBvbmUgb2YgdGhlIHZhbGlkIHBlcmlwaGVyYWxzCisvLyEgXHBhcmFtIHVsQ2xrRmxhZ3MgYXJlIGJpdG1hc2sgb2YgY2xvY2socykgdG8gYmUgZW5hYmxlZC4KKy8vIQorLy8hIFRoaXMgZnVuY3Rpb24gZGlzYWJsZSB0aGUgY2xvY2sgZm9yIHRoZSBzcGVjaWZpZWQgcGVyaXBoZXJhbC4gUGVyaXBoZXJhbHMKKy8vISBhcmUgYnkgZGVmYXVsdCBjbG9jayBnYXRlZCAoZGlzYWJsZWQpIGFuZCBnZW5lcmF0ZWQgYSBidXMgZmF1bHQgaWYKKy8vISBhY2Nlc3NlZC4KKy8vIQorLy8hIFRoZSBwYXJhbWV0ZXIgXGUgdWxDbGtGbGFncyBjYW4gYmUgbG9naWNhbCBPUiBiaXQgZmllbGRzIGFzIGRlZmluZWQgaW4KKy8vISBQUkNNRW5hYmxlUGVyaXBoZXJhbCgpLgorLy8hCisvLyEgXHJldHVybiBOb25lLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK3ZvaWQKK1BSQ01QZXJpcGhlcmFsQ2xrRGlzYWJsZSh1bnNpZ25lZCBsb25nIHVsUGVyaXBoZXJhbCwgdW5zaWduZWQgbG9uZyB1bENsa0ZsYWdzKQoreworICAvLworICAvLyBEaXNhYmxlIHRoZSBzcGVjaWZpZWQgcGVyaXBoZXJhbCBjbG9ja3MKKyAgLy8KKyAgSFdSRUcoQVJDTV9CQVNFICsgUFJDTV9QZXJpcGhSZWdzTGlzdFt1bFBlcmlwaGVyYWxdLnVsQ2xrUmVnKSAmPSB+dWxDbGtGbGFnczsKK30KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vISBHZXRzIHRoZSBpbnB1dCBjbG9jayBmb3IgdGhlIHNwZWNpZmllZCBwZXJpcGhlcmFsLgorLy8hCisvLyEgXHBhcmFtIHVsUGVyaXBoZXJhbCBpcyBvbmUgb2YgdGhlIHZhbGlkIHBlcmlwaGVyYWxzLgorLy8hCisvLyEgVGhpcyBmdW5jdGlvbiBnZXRzIHRoZSBpbnB1dCBjbG9jayBmb3IgdGhlIHNwZWNpZmllZCBwZXJpcGhlcmFsLgorLy8hCisvLyEgVGhlIHBhcmFtZXRlciBcZSB1bFBlcmlwaGVyYWwgaGFzIHRoZSBzYW1lIGRlZmluaXRpb24gYXMgdGhhdCBpbgorLy8hIFBSQ01QZXJpcGhlcmFsQ2xrRW5hYmxlKCk7CisvLyEKKy8vISBccmV0dXJuIFJldHVybnMgaW5wdXQgY2xvY2sgZnJlcXVlbmN5IGZvciBzcGVjaWZpZWQgcGVyaXBoZXJhbC4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit1bnNpZ25lZCBsb25nCitQUkNNUGVyaXBoZXJhbENsb2NrR2V0KHVuc2lnbmVkIGxvbmcgdWxQZXJpcGhlcmFsKQoreworICB1bnNpZ25lZCBsb25nIHVsQ2xvY2tGcmVxOworICB1bnNpZ25lZCBsb25nIHVsSGlQdWxzZURpdjsKKyAgdW5zaWduZWQgbG9uZyB1bExvUHVsc2VEaXY7CisKKyAgLy8KKyAgLy8gR2V0IHRoZSBjbG9jayBiYXNlZCBvbiBzcGVjaWZpZWQgcGVyaXBoZXJhbC4KKyAgLy8KKyAgaWYoKCh1bFBlcmlwaGVyYWwgPT0gUFJDTV9TU1BJKSB8ICh1bFBlcmlwaGVyYWwgPT0gUFJDTV9MU1BJKQorICAgICAgICAgICAgfCAodWxQZXJpcGhlcmFsID09IFBSQ01fR1NQSSkpKQorICB7CisgICAgcmV0dXJuIFhUQUxfQ0xLOworICB9CisgIGVsc2UgaWYodWxQZXJpcGhlcmFsID09IFBSQ01fQ0FNRVJBKQorICB7CisgICAgdWxIaVB1bHNlRGl2ID0gKChIV1JFRyhBUkNNX0JBU0UgKyBBUFBTX1JDTV9PX0NBTUVSQV9DTEtfR0VOKSA+PiA4KSAmIDB4MDcpOworICAgIHVsTG9QdWxzZURpdiA9IChIV1JFRyhBUkNNX0JBU0UgKyBBUFBTX1JDTV9PX0NBTUVSQV9DTEtfR0VOKSYgMHhGRik7CisgIH0KKyAgZWxzZSBpZih1bFBlcmlwaGVyYWwgPT0gUFJDTV9TREhPU1QpCisgIHsKKyAgICB1bEhpUHVsc2VEaXYgPSAoKEhXUkVHKEFSQ01fQkFTRSArIEFQUFNfUkNNX09fTU1DSFNfQ0xLX0dFTikgPj4gOCkgJiAweDA3KTsKKyAgICB1bExvUHVsc2VEaXYgPSAoSFdSRUcoQVJDTV9CQVNFICsgQVBQU19SQ01fT19NTUNIU19DTEtfR0VOKSYgMHhGRik7CisgIH0KKyAgZWxzZQorICB7CisgICAgcmV0dXJuIFNZU19DTEs7CisgIH0KKworICAvLworICAvLyBDb21wdXRlIHRoZSBjbG9jayBmcmVxLiBmcm9tIHRoZSBkaXZpZGVyIHZhbHVlCisgIC8vCisgIHVsQ2xvY2tGcmVxID0gKDI0MDAwMDAwMC8oKHVsSGlQdWxzZURpdiArIDEpICsgKHVsTG9QdWxzZURpdiArIDEpKSk7CisKKyAgLy8KKyAgLy8gUmV0dXJuIHRoZSBjbG9jayByYXRlLgorICAvLworICByZXR1cm4gdWxDbG9ja0ZyZXE7Cit9CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyEgUGVyZm9ybXMgYSBzb2Z0d2FyZSByZXNldCBvZiBhIHBlcmlwaGVyYWwuCisvLyEKKy8vISBccGFyYW0gdWxQZXJpcGhlcmFsIGlzIG9uZSBvZiB0aGUgdmFsaWQgcGVyaXBoZXJhbC4KKy8vIQorLy8hIFRoaXMgZnVuY3Rpb24gZG9lcyBzb2Z0IHJlc2V0IG9mIHRoZSBzcGVjaWZpZWQgcGVyaXBoZXJhbAorLy8hCisvLyEgXHJldHVybiBOb25lLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK3ZvaWQKK1BSQ01QZXJpcGhlcmFsUmVzZXQodW5zaWduZWQgbG9uZyB1bFBlcmlwaGVyYWwpCit7CisgIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgdWxEZWxheTsKKworICBpZiggdWxQZXJpcGhlcmFsICE9IFBSQ01fRFRIRSkKKyAgeworICAgIC8vCisgICAgLy8gQXNzZXJ0IHRoZSByZXNldAorICAgIC8vCisgICAgSFdSRUcoQVJDTV9CQVNFICsgUFJDTV9QZXJpcGhSZWdzTGlzdFt1bFBlcmlwaGVyYWxdLnVsUnN0UmVnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfD0gUFJDTV9TT0ZUX1JFU0VUOworICAgIC8vCisgICAgLy8gRGVsYXkgYSBsaXR0bGUgYml0LgorICAgIC8vCisgICAgZm9yKHVsRGVsYXkgPSAwOyB1bERlbGF5IDwgMTY7IHVsRGVsYXkrKykKKyAgICB7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBEZWFzc2VydCB0aGUgcmVzZXQKKyAgICAvLworICAgIEhXUkVHKEFSQ01fQkFTRStQUkNNX1BlcmlwaFJlZ3NMaXN0W3VsUGVyaXBoZXJhbF0udWxSc3RSZWcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJj0gflBSQ01fU09GVF9SRVNFVDsKKyAgfQorfQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8hIERldGVybWluZXMgaWYgYSBwZXJpcGhlcmFsIGlzIHJlYWR5LgorLy8hCisvLyEgXHBhcmFtIHVsUGVyaXBoZXJhbCBpcyBvbmUgb2YgdGhlIHZhbGlkIG1vZHVsZXMKKy8vIQorLy8hIFRoaXMgZnVuY3Rpb24gZGV0ZXJtaW5lcyBpZiBhIHBhcnRpY3VsYXIgcGVyaXBoZXJhbCBpcyByZWFkeSB0byBiZQorLy8hIGFjY2Vzc2VkLiBUaGUgcGVyaXBoZXJhbCBtYXkgYmUgaW4gYSBub24tcmVhZHkgc3RhdGUgaWYgaXQgaXMgbm90IGVuYWJsZWQsCisvLyEgaXMgYmVpbmcgaGVsZCBpbiByZXNldCwgb3IgaXMgaW4gdGhlIHByb2Nlc3Mgb2YgYmVjb21pbmcgcmVhZHkgYWZ0ZXIgYmVpbmcKKy8vISBlbmFibGVkIG9yIHRha2VuIG91dCBvZiByZXNldC4KKy8vIQorLy8hIFxyZXR1cm4gUmV0dXJucyBcYiB0cnVlIGlmIHRoZSAgcGVyaXBoZXJhbCBpcyByZWFkeSwgXGIgZmFsc2Ugb3RoZXJ3aXNlLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK3RCb29sZWFuCitQUkNNUGVyaXBoZXJhbFN0YXR1c0dldCh1bnNpZ25lZCBsb25nIHVsUGVyaXBoZXJhbCkKK3sKKyAgdW5zaWduZWQgbG9uZyBSZWFkeUJpdDsKKworICAvLworICAvLyBSZWFkIHRoZSByZWFkeSBiaXQgc3RhdHVzCisgIC8vCisgIFJlYWR5Qml0ID0gSFdSRUcoQVJDTV9CQVNFICsgUFJDTV9QZXJpcGhSZWdzTGlzdFt1bFBlcmlwaGVyYWxdLnVsUnN0UmVnKTsKKyAgUmVhZHlCaXQgPSBSZWFkeUJpdCAmIFBSQ01fRU5BQkxFX1NUQVRVUzsKKworICBpZiAoUmVhZHlCaXQpCisgIHsKKyAgICAvLworICAgIC8vIE1vZHVsZSBpcyByZWFkeQorICAgIC8vCisgICAgcmV0dXJuKHRydWUpOworICB9CisgIGVsc2UKKyAgeworICAgIC8vCisgICAgLy8gTW9kdWxlIGlzIG5vdCByZWFkeQorICAgIC8vCisgICAgcmV0dXJuKGZhbHNlKTsKKyAgfQorfQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8hIENvbmZpZ3VyZSBJMlMgZnJhY2FjdGlvbmFsIGRpdmlkZXIKKy8vIQorLy8hIFxwYXJhbSB1bEkyQ0Nsa0ZyZXEgaXMgdGhlIHJlcXVpcmVkIGlucHV0IGNsb2NrIGZvciBNY0FQUyBtb2R1bGUKKy8vIQorLy8hIFRoaXMgZnVuY3Rpb24gY29uZmlndXJlcyBJMlMgZnJhY3Rpb25hbCBkaXZpZGVyLiBCeSBkZWZhdWx0IHRoaXMKKy8vISBkaXZpZGVyIGlzIHNldCB0byBvdXRwdXQgMjQgTWh6IGNsb2NrIHRvIEkyUyBtb2R1bGUuCisvLyEKKy8vISBUaGUgbWluaW11bSBmcmVxdWVuY3kgdGhhdCBjYW4gYmUgb2J0YWluZWQgYnkgY29uZmlndXJpbmcgdGhpcyBkaXZpZGVyIGlzCisvLyEKKy8vISAoMjQwMDAwS0h6LzEwMjMuOTkpID0gIDIzNC4zNzcgS0h6CisvLyEKKy8vISBccmV0dXJuIE5vbmUuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgordm9pZAorUFJDTUkyU0Nsb2NrRnJlcVNldCh1bnNpZ25lZCBsb25nIHVsSTJDQ2xrRnJlcSkKK3sKKyAgdW5zaWduZWQgbG9uZyBsb25nIHVsbERpdjsKKyAgdW5zaWduZWQgc2hvcnQgdXNJbnRlZ2VyOworICB1bnNpZ25lZCBzaG9ydCB1c0ZyYWM7CisKKyAgdWxsRGl2ID0gKCgodW5zaWduZWQgbG9uZyBsb25nKTI0MDAwMDAwMCAqIDY1NTM2KS91bEkyQ0Nsa0ZyZXEpOworCisgIHVzSW50ZWdlciA9ICh1bGxEaXYvNjU1MzYpOworICB1c0ZyYWMgICAgPSAodWxsRGl2JTY1NTM2KTsKKworICBIV1JFRyhBUkNNX0JBU0UgKyBBUFBTX1JDTV9PX01DQVNQX0ZSQUNfQ0xLX0NPTkZJRzApID0KKyAgICAoKHVzSW50ZWdlciAmIDB4M0ZGKSA8PCAxNiB8IHVzRnJhYyk7Cit9CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyEgU2V0cyB0aGUgTFBEUyBleGl0IFBDIGFuZCBTUCByZXN0b3JlIHZsYXVlcy4KKy8vIQorLy8hIFxwYXJhbSB1bFN0YWNrUHRyIGlzIHRoZSBTUCByZXN0b3JlIHZhbHVlLgorLy8hIFxwYXJhbSB1bFByb2dDbnRyIGlzIHRoZSBQQyByZXN0b3JlIHZhbHVlCisvLyEKKy8vISBUaGlzIGZ1bmN0aW9uIHNldHMgdGhlIExQRFMgZXhpdCBQQyBhbmQgU1AgcmVzdG9yZSB2bGF1ZXMuIFNldHRpbmcKKy8vISBcZSB1bFByb2dDbnRyIHRvIGEgbm9uLXplcm8gdmFsdWUsIGZvcmNlcyBib290bG9hZGVyIHRvIGp1bXAgdG8gdGhhdAorLy8hIGFkZHJlc3Mgd2l0aCBTdGFjayBQb2ludGVyIGluaXRpYWxpemVkIHRvIFxlIHVsU3RhY2tQdHIgb24gTFBEUyBleGl0LAorLy8hIG90aGVyd2lzZSB0aGUgYXBwbGljYXRpb24ncyB2ZWN0b3IgdGFibGUgZW50cmllcyBhcmUgdXNlZC4KKy8vIQorLy8hIFxyZXR1cm4gTm9uZS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit2b2lkCitQUkNNTFBEU1Jlc3RvcmVJbmZvU2V0KHVuc2lnbmVkIGxvbmcgdWxTdGFja1B0ciwgdW5zaWduZWQgbG9uZyB1bFByb2dDbnRyKQoreworICAvLworICAvLyBST00gVmVyc2lvbiAyLngueCBvciBncmVhdGVyCisgIC8vCisgIGlmKCAoSFdSRUcoMHgwMDAwMDQwMCkgJiAweEZGRkYpID49IDIgKQorICB7CisgICAgLy8KKyAgICAvLyBTZXQgVGhlIFNQIFZhbHVlCisgICAgLy8KKyAgICBIV1JFRygweDQ0MDJFMTYwKSA9IHVsU3RhY2tQdHI7CisKKyAgICAvLworICAgIC8vIFNldCBUaGUgUEMgVmFsdWUKKyAgICAvLworICAgIEhXUkVHKDB4NDQwMkUxOTgpID0gdWxQcm9nQ250cjsKKworICB9CisgIGVsc2UKKyAgeworICAgIC8vCisgICAgLy8gU2V0IFRoZSBTUCBWYWx1ZQorICAgIC8vCisgICAgSFdSRUcoMHg0NDAyRTE4QykgPSB1bFN0YWNrUHRyOworCisgICAgLy8KKyAgICAvLyBTZXQgVGhlIFBDIFZhbHVlCisgICAgLy8KKyAgICBIV1JFRygweDQ0MDJFMTkwKSA9IHVsUHJvZ0NudHI7CisgIH0KK30KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vISBQdXRzIHRoZSBzeXN0ZW0gaW50byBMb3cgUG93ZXIgRGVlbCBTbGVlcCAoTFBEUykgcG93ZXIgbW9kZS4KKy8vIQorLy8hIFRoaXMgZnVuY3Rpb24gcHV0cyB0aGUgc3lzdGVtIGludG8gTG93IFBvd2VyIERlZWwgU2xlZXAgKExQRFMpIHBvd2VyIG1vZGUuCisvLyEgQSBjYWxsIHRvIHRoaXMgZnVuY3Rpb24gbmV2ZXIgcmV0dXJucyBhbmQgdGhlIGV4ZWN1dGlvbiBzdGFydHMgZnJvbSBSZXNldC4KKy8vISBcc2EgUFJDTUxQRFNSZXN0b3JlSW5mb1NldCgpLgorLy8hCisvLyEgXHJldHVybiBOb25lLgorLy8hCisvLyEgXG5vdGUgIEV4dGVybmFsIGRlYnVnZ2VyIHdpbGwgYWx3YXlzIGRpc2Nvbm5lY3Qgd2hlbmV2ZXIgdGhlIHN5c3RlbQorLy8hICBlbnRlcnMgTFBEUyBhbmQgZGVidWcgaW50ZXJmYWNlIGlzIHNodXRkb3duIHVudGlsIG5leHQgUE9SIHJlc2V0LiBJbiBvcmRlcgorLy8hICB0byBhdm9pZCB0aGlzIGFuZCBhbGxvdyBmb3IgY29ubmVjdGluZyBiYWNrIHRoZSBkZWJ1Z2dlciBhZnRlciB3YWtpbmcgdXAKKy8vISAgZnJvbSBMUERTIFxzYSBQUkNNTFBEU0VudGVyS2VlcERlYnVnSWYoKS4KKy8vIQorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK3ZvaWQKK1BSQ01MUERTRW50ZXIoKQoreworICB1bnNpZ25lZCBsb25nIHVsQ2hpcElkOworCisgIC8vCisgIC8vIFJlYWQgdGhlIENoaXAgSUQKKyAgLy8KKyAgdWxDaGlwSWQgPSAoKEhXUkVHKEdQUkNNX0JBU0UgKyBHUFJDTV9PX0dQUkNNX0VGVVNFX1JFQURfUkVHMikgPj4gMTYpICYgMHgxRik7CisKKyAgLy8KKyAgLy8gQ2hlY2sgaWYgZmxhc2ggZXhpc3RzCisgIC8vCisgIGlmKCAoMHgxMSA9PSB1bENoaXBJZCkgfHwgKDB4MTkgPT0gdWxDaGlwSWQpKQorICB7CisKKyAgICAvLworICAgIC8vIERpc2FibGUgdGhlIGZsYXNoCisgICAgLy8KKyAgICBGbGFzaERpc2FibGUoKTsKKyAgfQorCisjaWZuZGVmIEtFRVBfVEVTVFBEX0FMSVZFCisKKyAgLy8KKyAgLy8gRGlzYWJsZSBUZXN0UEQKKyAgLy8KKyAgSFdSRUcoMHg0NDAyRTE2OCkgfD0gKDE8PDkpOworI2VuZGlmCisKKyAgLy8KKyAgLy8gU2V0IGJhbmRnYXAgZHV0eSBjeWNsZSB0byAxCisgIC8vCisgIEhXUkVHKEhJQjFQMl9CQVNFICsgSElCMVAyX09fQkdBUF9EVVRZX0NZQ0xJTkdfRVhJVF9DRkcpID0gMHgxOworCisgIC8vCisgIC8vIFJlcXVlc3QgTFBEUworICAvLworICBIV1JFRyhBUkNNX0JBU0UgKyBBUFBTX1JDTV9PX0FQUFNfTFBEU19SRVEpCisgICAgICAgICAgPSBBUFBTX1JDTV9BUFBTX0xQRFNfUkVRX0FQUFNfTFBEU19SRVE7CisKKyAgLy8KKyAgLy8gV2FpdCBmb3Igc3lzdGVtIHRvIGVudGVyIExQRFMKKyAgLy8KKyAgX19hc20oIiAgICB3ZmlcbiIpOworCisgIC8vCisgIC8vIEluZmluaXRlIGxvb3AKKyAgLy8KKyAgd2hpbGUoMSkKKyAgeworCisgIH0KKworfQorCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyEgUHV0cyB0aGUgc3lzdGVtIGludG8gTG93IFBvd2VyIERlZWwgU2xlZXAgKExQRFMpIHBvd2VyIG1vZGUga2VlcGluZworLy8hIGRlYnVnIGludGVyZmFjZSBhbGl2ZS4KKy8vIQorLy8hIFRoaXMgZnVuY3Rpb24gcHV0cyB0aGUgc3lzdGVtIGludG8gTG93IFBvd2VyIERlZWwgU2xlZXAgKExQRFMpIHBvd2VyIG1vZGUKKy8vISBrZWVwaW5nIGRlYnVnIGludGVyZmFjZSBhbGl2ZS4gQSBjYWxsIHRvIHRoaXMgZnVuY3Rpb24gbmV2ZXIgcmV0dXJucyBhbmQgdGhlCisvLyEgZXhlY3V0aW9uIHN0YXJ0cyBmcm9tIFJlc2V0IFxzYSBQUkNNTFBEU1Jlc3RvcmVJbmZvU2V0KCkuCisvLyEKKy8vISBccmV0dXJuIE5vbmUuCisvLyEKKy8vISBcbm90ZSBFeHRlcm5hbCBkZWJ1Z2dlciB3aWxsIGFsd2F5cyBkaXNjb25uZWN0IHdoZW5ldmVyIHRoZSBzeXN0ZW0KKy8vISAgZW50ZXJzIExQRFMsIHVzaW5nIHRoaXMgQVBJIHdpbGwgYWxsb3cgY29ubmVjdGluZyBiYWNrIHRoZSBkZWJ1Z2dlciBhZnRlcgorLy8hICB3YWtpbmcgdXAgZnJvbSBMUERTLiBUaGlzIEFQSSBpcyByZWNvbW1lbmRlZCBmb3IgZGV2ZWxvcG1lbnQgcHVycG9zZXMKKy8vISAgb25seSBhcyBpdCBhZGRzIHRvIHRoZSBjdXJyZW50IGNvbnN1bXB0aW9uIG9mIHRoZSBzeXN0ZW0uCisvLyEKKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit2b2lkCitQUkNNTFBEU0VudGVyS2VlcERlYnVnSWYoKQoreworICB1bnNpZ25lZCBsb25nIHVsQ2hpcElkOworCisgIC8vCisgIC8vIFJlYWQgdGhlIENoaXAgSUQKKyAgLy8KKyAgdWxDaGlwSWQgPSAoKEhXUkVHKEdQUkNNX0JBU0UgKyBHUFJDTV9PX0dQUkNNX0VGVVNFX1JFQURfUkVHMikgPj4gMTYpICYgMHgxRik7CisKKyAgLy8KKyAgLy8gQ2hlY2sgaWYgZmxhc2ggZXhpc3RzCisgIC8vCisgIGlmKCAoMHgxMSA9PSB1bENoaXBJZCkgfHwgKDB4MTkgPT0gdWxDaGlwSWQpKQorICB7CisKKyAgICAvLworICAgIC8vIERpc2FibGUgdGhlIGZsYXNoCisgICAgLy8KKyAgICBGbGFzaERpc2FibGUoKTsKKyAgfQorCisgIC8vCisgIC8vIFNldCBiYW5kZ2FwIGR1dHkgY3ljbGUgdG8gMQorICAvLworICBIV1JFRyhISUIxUDJfQkFTRSArIEhJQjFQMl9PX0JHQVBfRFVUWV9DWUNMSU5HX0VYSVRfQ0ZHKSA9IDB4MTsKKworICAvLworICAvLyBSZXF1ZXN0IExQRFMKKyAgLy8KKyAgSFdSRUcoQVJDTV9CQVNFICsgQVBQU19SQ01fT19BUFBTX0xQRFNfUkVRKQorICAgICAgICAgID0gQVBQU19SQ01fQVBQU19MUERTX1JFUV9BUFBTX0xQRFNfUkVROworCisgIC8vCisgIC8vIFdhaXQgZm9yIHN5c3RlbSB0byBlbnRlciBMUERTCisgIC8vCisgIF9fYXNtKCIgICAgd2ZpXG4iKTsKKworICAvLworICAvLyBJbmZpbml0ZSBsb29wCisgIC8vCisgIHdoaWxlKDEpCisgIHsKKworICB9CisKK30KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vISBFbmFibGUgdGhlIGluZGl2aWR1YWwgTFBEUyB3YWtldXAgc291cmNlKHMpLgorLy8hCisvLyEgXHBhcmFtIHVsTHBkc1dha2V1cFNyYyBpcyBsb2dpY2FsIE9SIG9mIHdha2V1cCBzb3VyY2VzLgorLy8hCisvLyEgVGhpcyBmdW5jdGlvbiBlbmFibGUgdGhlIGluZGl2aWR1YWwgTFBEUyB3YWtldXAgc291cmNlKHMpIGFuZCBmb2xsb3dpbmcKKy8vISB0aHJlZSB3YWtldXAgc291cmNlcyAoXGUgdWxMcGRzV2FrZXVwU3JjICkgYXJlIHN1cHBvcnRlZCBieSB0aGUgZGV2aWNlLgorLy8hIC1cYiBQUkNNX0xQRFNfSE9TVF9JUlEKKy8vISAtXGIgUFJDTV9MUERTX0dQSU8KKy8vISAtXGIgUFJDTV9MUERTX1RJTUVSCisvLyEKKy8vISBccmV0dXJuIE5vbmUuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgordm9pZAorUFJDTUxQRFNXYWtldXBTb3VyY2VFbmFibGUodW5zaWduZWQgbG9uZyB1bExwZHNXYWtldXBTcmMpCit7CisgIHVuc2lnbmVkIGxvbmcgdWxSZWdWYWw7CisKKyAgLy8KKyAgLy8gUmVhZCB0aGUgY3VycmVudCB3YWt1cCBzb3VyY2VzCisgIC8vCisgIHVsUmVnVmFsID0gSFdSRUcoR1BSQ01fQkFTRSsgR1BSQ01fT19BUFBTX0xQRFNfV0FLRVVQX0NGRyk7CisKKyAgLy8KKyAgLy8gRW5hYmxlIGluZGl2aWR1YWwgd2FrZXVwIHNvdXJjZQorICAvLworICB1bFJlZ1ZhbCA9ICgodWxSZWdWYWwgfCB1bExwZHNXYWtldXBTcmMpICYgMHg5MSk7CisKKyAgLy8KKyAgLy8gU2V0IHRoZSBjb25maWd1cmF0aW9uIGluIHRoZSByZWdpc3RlcgorICAvLworICBIV1JFRyhHUFJDTV9CQVNFKyBHUFJDTV9PX0FQUFNfTFBEU19XQUtFVVBfQ0ZHKSA9IHVsUmVnVmFsOworfQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8hIERpc2FibGUgdGhlIGluZGl2aWR1YWwgTFBEUyB3YWtldXAgc291cmNlKHMpLgorLy8hCisvLyEgXHBhcmFtIHVsTHBkc1dha2V1cFNyYyBpcyBsb2dpY2FsIE9SIG9mIHdha2V1cCBzb3VyY2VzLgorLy8hCisvLyEgVGhpcyBmdW5jdGlvbiBlbmFibGUgdGhlIGluZGl2aWR1YWwgTFBEUyB3YWtldXAgc291cmNlKHMpIGFuZCBmb2xsb3dpbmcKKy8vISB0aHJlZSB3YWtlIHVwIHNvdXJjZXMgKFxlIHVsTHBkc1dha2V1cFNyYyApIGFyZSBzdXBwb3J0ZWQgYnkgdGhlIGRldmljZS4KKy8vISAtXGIgUFJDTV9MUERTX0hPU1RfSVJRCisvLyEgLVxiIFBSQ01fTFBEU19HUElPCisvLyEgLVxiIFBSQ01fTFBEU19USU1FUgorLy8hCisvLyEgXHJldHVybiBOb25lLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK3ZvaWQKK1BSQ01MUERTV2FrZXVwU291cmNlRGlzYWJsZSh1bnNpZ25lZCBsb25nIHVsTHBkc1dha2V1cFNyYykKK3sKKyAgSFdSRUcoR1BSQ01fQkFTRSsgR1BSQ01fT19BUFBTX0xQRFNfV0FLRVVQX0NGRykgJj0gfnVsTHBkc1dha2V1cFNyYzsKK30KKworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8hIEdldCBMUERTIHdha2V1cCBjYXVzZQorLy8hCisvLyEgVGhpcyBmdW5jdGlvbiBnZXRzIExQRFMgd2FrZXVwIGNhb3VzZQorLy8hCisvLyEgXHJldHVybiBSZXR1cm5zIHZhbHVlcyBlbnVtZXJhdGVkIGFzIGRlc2NyaWJlZCBpbgorLy8hIFBSQ01MUERTV2FrZXVwU291cmNlRW5hYmxlKCkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgordW5zaWduZWQgbG9uZworUFJDTUxQRFNXYWtldXBDYXVzZUdldCgpCit7CisgIHJldHVybiAoSFdSRUcoR1BSQ01fQkFTRSsgR1BSQ01fT19BUFBTX0xQRFNfV0FLRVVQX1NSQykpOworfQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8hIFNldHMgTFBEUyB3YWtldXAgVGltZXIKKy8vIQorLy8hIFxwYXJhbSB1bFRpY2tzIGlzIG51bWJlciBvZiAzMi43NjggS0h6IGNsb2NrcworLy8hCisvLyEgVGhpcyBmdW5jdGlvbiBzZXRzIGludGVybmFsIExQRFMgd2FrZXVwIHRpbWVyIHJ1bm5pbmcgYXQgMzIuNzY4IEtIei4gVGhlCisvLyEgdGltZXIgaXMgb25seSBjb25maWd1cmVkIGlmIHRoZSBwYXJhbWV0ZXIgXGUgdWxUaWNrcyBpcyBpbiB2YWxpZCByYW5nZSBpLmUuCisvLyEgZnJvbSAyMSB0byAyXjMyLgorLy8hCisvLyEgXHJldHVybiBSZXR1cm5zIFxiIHRydWUgb24gc3VjY2VzcywgXGIgZmFsc2Ugb3RoZXJ3aXNlLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK3ZvaWQKK1BSQ01MUERTSW50ZXJ2YWxTZXQodW5zaWduZWQgbG9uZyB1bFRpY2tzKQoreworICAvLworICAvLyBDaGVjayBzbGVlcCBpcyBhdGxlYXN0IGZvciAyMSBjeWNsZXMKKyAgLy8gSWYgbm90IHNldCB0aGUgc2xlZXAgdGltZSB0byAyMSBjeWNsZXMKKyAgLy8KKyAgaWYoIHVsVGlja3MgPCAyMSkKKyAgeworICAgICAgdWxUaWNrcyA9IDIxOworICB9CisKKyAgSFdSRUcoR1BSQ01fQkFTRSArIEdQUkNNX09fQVBQU19MUERTX1dBS0VUSU1FX1dBS0VfQ0ZHKSA9IHVsVGlja3M7CisgIEhXUkVHKEdQUkNNX0JBU0UgKyBHUFJDTV9PX0FQUFNfTFBEU19XQUtFVElNRV9PUFBfQ0ZHKSA9IHVsVGlja3MtMjA7Cit9CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyEgU2VsZWN0cyB0aGUgR1BJTyBmb3IgTFBEUyB3YWtldXAKKy8vIQorLy8hIFxwYXJhbSB1bEdQSU9QaW4gaXMgb25lIG9mIHRoZSB2YWxpZCBHUElPIGZybyBMUERTIHdha2V1cC4KKy8vISBccGFyYW0gdWxUeXBlIGlzIHRoZSB3YWtldXAgdHJpZ2dlciB0eXBlLgorLy8hCisvLyEgVGhpcyBmdW5jdGlvbiBzZXRlY3RzIHRoZSB3YWtldXAgR1BJTyBmb3IgTFBEUyB3YWtldXAgYW5kIGNhbiBiZQorLy8hIHVzZWQgdG8gc2VsZWN0IG9uZSBvdXQgb2YgNyBwcmUtZGVmaW5lZCBHUElPKHMpLgorLy8hCisvLyEgVGhlIHBhcmFtZXRlciBcZSB1bExwZHNHUElPU2VsIHNob3VsZCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzotCisvLyEgLVxiIFBSQ01fTFBEU19HUElPMgorLy8hIC1cYiBQUkNNX0xQRFNfR1BJTzQKKy8vISAtXGIgUFJDTV9MUERTX0dQSU8xMworLy8hIC1cYiBQUkNNX0xQRFNfR1BJTzE3CisvLyEgLVxiIFBSQ01fTFBEU19HUElPMTEKKy8vISAtXGIgUFJDTV9MUERTX0dQSU8yNAorLy8hIC1cYiBQUkNNX0xQRFNfR1BJTzI2CisvLyEKKy8vISBUaGUgcGFyYW1ldGVyIFxlIHVsVHlwZSBzZXRzIHRoZSB0cmlnZ2VyIHR5cGUgYW5kIGNhbiBiZSBvbmUgb2YgdGhlCisvLyEgZm9sbG93aW5nOgorLy8hIC0gXGIgUFJDTV9MUERTX0xPV19MRVZFTAorLy8hIC0gXGIgUFJDTV9MUERTX0hJR0hfTEVWRUwKKy8vISAtIFxiIFBSQ01fTFBEU19GQUxMX0VER0UKKy8vISAtIFxiIFBSQ01fTFBEU19SSVNFX0VER0UKKy8vIQorLy8hIFxyZXR1cm4gTm9uZS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit2b2lkCitQUkNNTFBEU1dha2VVcEdQSU9TZWxlY3QodW5zaWduZWQgbG9uZyB1bEdQSU9QaW4sIHVuc2lnbmVkIGxvbmcgdWxUeXBlKQoreworICAvLworICAvLyBTZXQgdGhlIHdha2V1cCBHUElPCisgIC8vCisgIFBSQ01ISUJSZWdXcml0ZShISUIzUDNfQkFTRSArIEhJQjNQM19PX01FTV9ISUJfTFBEU19HUElPX1NFTCwgdWxHUElPUGluKTsKKworICAvLworICAvLyBTZXQgdGhlIHRyaWdnZXIgdHlwZS4KKyAgLy8KKyAgSFdSRUcoR1BSQ01fQkFTRSArIEdQUkNNX09fQVBQU19HUElPX1dBS0VfQ09ORikgPSAodWxUeXBlICYgMHgzKTsKK30KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vISBQdXRzIHRoZSBzeXN0ZW0gaW50byBTbGVlcC4KKy8vIQorLy8hIFRoaXMgZnVuY3Rpb24gcHV0cyB0aGUgc3lzdGVtIGludG8gc2xlZXAgcG93ZXIgbW9kZS4gU3lzdGVtIGV4aXRzIHRoZSBwb3dlcgorLy8hIHN0YXRlIG9uIGFueSBvbmUgb2YgdGhlIGF2YWlsYWJsZSBpbnRlcnJ1cHQuIE9uIGV4aXQgZnJvbSBzbGVlcCBtb2RlIHRoZQorLy8hIGZ1bmN0aW9uIHJldHVybnMgdG8gdGhlIGNhbGxpbmcgZnVuY3Rpb24gd2l0aCBhbGwgdGhlIHByb2Nlc3NvciBjb3JlCisvLyEgcmVnaXN0ZXJzIHJldGFpbmVkLgorLy8hCisvLyEgXHJldHVybiBOb25lLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK3ZvaWQKK1BSQ01TbGVlcEVudGVyKCkKK3sKKyAgLy8KKyAgLy8gUmVxdWVzdCBTbGVlcAorICAvLworICBDUFV3ZmkoKTsKK30KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vISBFbmFibGUgU1JBTSBjb2x1bW4gcmV0ZW50aW9uIGR1cmluZyBMUERTIFBvd2VyIG1vZGUocykKKy8vIQorLy8hIFxwYXJhbSB1bFNyYW1Db2xTZWwgaXMgYml0IG1hc2sgb2YgdmFsaWQgU1JBTSBjb2x1bW5zLgorLy8hIFxwYXJhbSB1bE1vZGVGbGFncyBpcyB0aGUgYml0IG1hc2sgb2YgcG93ZXIgbW9kZXMuCisvLyEKKy8vISBUaGlzIGZ1bmN0aW9ucyBlbmFibGVzIHRoZSBTUkFNIHJldGVudGlvbi4gVGhlIGRldmljZSBzdXBwb3J0cyBjb25maWd1cmFibGUKKy8vISBTUkFNIGNvbHVtbiByZXRlbnRpb24gaW4gTG93IFBvd2VyIERlZXAgU2xlZXAgKExQRFMpLiBFYWNoIGNvbHVtbiBpcyBvZgorLy8hIDY0IEtCIHNpemUuCisvLyEKKy8vISBUaGUgcGFyYW1ldGVyIFxlIHVsU3JhbUNvbFNlbCBzaG91bGQgYmUgbG9naWNhbCBPUiBvZiB0aGUgZm9sbG93aW5nOi0KKy8vISAtXGIgUFJDTV9TUkFNX0NPTF8xCisvLyEgLVxiIFBSQ01fU1JBTV9DT0xfMgorLy8hIC1cYiBQUkNNX1NSQU1fQ09MXzMKKy8vISAtXGIgUFJDTV9TUkFNX0NPTF80CisvLyEKKy8vISBUaGUgcGFyYW1ldGVyIFxlIHVsTW9kZUZsYWdzIHNlbGVjdHMgdGhlIHBvd2VyIG1vZGVzIGFuZCBzaG9sdWQgYmUgbG9naWNhbAorLy8hIE9SIG9mIG9uZSBvciBtb3JlIG9mIHRoZSBmb2xsb3dpbmcKKy8vISAtXGIgUFJDTV9TUkFNX0xQRFNfUkVUCisvLyEKKy8vISBccmV0dXJuIE5vbmUuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit2b2lkCitQUkNNU1JBTVJldGVudGlvbkVuYWJsZSh1bnNpZ25lZCBsb25nIHVsU3JhbUNvbFNlbCwgdW5zaWduZWQgbG9uZyB1bE1vZGVGbGFncykKK3sKKyAgaWYodWxNb2RlRmxhZ3MgJiBQUkNNX1NSQU1fTFBEU19SRVQpCisgIHsKKyAgICAvLworICAgIC8vIENvbmZpZ3VyZSBMUERTIFNSQU0gcmV0ZW50aW9uIHJlZ2lzdGVyCisgICAgLy8KKyAgICBIV1JFRyhHUFJDTV9CQVNFKyBHUFJDTV9PX0FQUFNfU1JBTV9MUERTX0NGRykgPSAodWxTcmFtQ29sU2VsICYgMHhGKTsKKyAgfQorfQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8hIERpc2FibGUgU1JBTSBjb2x1bW4gcmV0ZW50aW9uIGR1cmluZyBMUERTIFBvd2VyIG1vZGUocykuCisvLyEKKy8vISBccGFyYW0gdWxTcmFtQ29sU2VsIGlzIGJpdCBtYXNrIG9mIHZhbGlkIFNSQU0gY29sdW1ucy4KKy8vISBccGFyYW0gdWxGbGFncyBpcyB0aGUgYml0IG1hc2sgb2YgcG93ZXIgbW9kZXMuCisvLyEKKy8vISBUaGlzIGZ1bmN0aW9ucyBkaXNhYmxlIHRoZSBTUkFNIHJldGVudGlvbi4gVGhlIGRldmljZSBzdXBwb3J0cyBjb25maWd1cmFibGUKKy8vISBTUkFNIGNvbHVtbiByZXRlbnRpb24gaW4gTG93IFBvd2VyIERlZXAgU2xlZXAgKExQRFMpLiBFYWNoIGNvbHVtbiBpcworLy8hIG9mIDY0IEtCIHNpemUuCisvLyEKKy8vISBUaGUgcGFyYW1ldGVyIFxlIHVsU3JhbUNvbFNlbCBzaG91bGQgYmUgbG9naWNhbCBPUiBvZiB0aGUgZm9sbG93aW5nOi0KKy8vISAtXGIgUFJDTV9TUkFNX0NPTF8xCisvLyEgLVxiIFBSQ01fU1JBTV9DT0xfMgorLy8hIC1cYiBQUkNNX1NSQU1fQ09MXzMKKy8vISAtXGIgUFJDTV9TUkFNX0NPTF80CisvLyEKKy8vISBUaGUgcGFyYW1ldGVyIFxlIHVsRmxhZ3Mgc2VsZWN0cyB0aGUgcG93ZXIgbW9kZXMgYW5kIHNob2x1ZCBiZSBsb2dpY2FsIE9SCisvLyEgb2Ygb25lIG9yIG1vcmUgb2YgdGhlIGZvbGxvd2luZworLy8hIC1cYiBQUkNNX1NSQU1fTFBEU19SRVQKKy8vIQorLy8hIFxyZXR1cm4gTm9uZS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK3ZvaWQKK1BSQ01TUkFNUmV0ZW50aW9uRGlzYWJsZSh1bnNpZ25lZCBsb25nIHVsU3JhbUNvbFNlbCwgdW5zaWduZWQgbG9uZyB1bEZsYWdzKQoreworICBpZih1bEZsYWdzICYgUFJDTV9TUkFNX0xQRFNfUkVUKQorICB7CisgICAgLy8KKyAgICAvLyBDb25maWd1cmUgTFBEUyBTUkFNIHJldGVudGlvbiByZWdpc3RlcgorICAgIC8vCisgICAgSFdSRUcoR1BSQ01fQkFTRSsgR1BSQ01fT19BUFBTX1NSQU1fTFBEU19DRkcpICY9IH4odWxTcmFtQ29sU2VsICYgMHhGKTsKKyAgfQorfQorCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyEgRW5hYmxlcyBpbmRpdmlkdWFsIEhJQiB3YWtldXAgc291cmNlKHMpLgorLy8hCisvLyEgXHBhcmFtIHVsSElCV2FrdXBTcmMgaXMgbG9naWNhbCBPUiBvZiB2YWxpZCBISUIgd2FrZXVwIHNvdXJjZXMuCisvLyEKKy8vISBUaGlzIGZ1bmN0aW9uIGVuYWJsZXMgaW5kaXZpZHVhbCBISUIgd2FrZXVwIHNvdXJjZShzKS4gVGhlIHBhcmFtdGVyCisvLyEgXGUgdWxISUJXYWt1cFNyYyBpcyB0aGUgYml0IG1hc2sgb2YgSElCIHdha2V1cCBzb3VyY2VzIGFuZCBzaG91bGQgYmUKKy8vISBsb2dpY2FsIE9SIG9mIG9uZSBvciBtb3JlIG9mIHRoZSBmb2xsd29pbmcgOi0KKy8vISAtXGIgUFJDTV9ISUJfU0xPV19DTEtfQ1RSCisvLyEgLVxiIFBSQ01fSElCX0dQSU8yCisvLyEgLVxiIFBSQ01fSElCX0dQSU80CisvLyEgLVxiIFBSQ01fSElCX0dQSU8xMworLy8hIC1cYiBQUkNNX0hJQl9HUElPMTcKKy8vISAtXGIgUFJDTV9ISUJfR1BJTzExCisvLyEgLVxiIFBSQ01fSElCX0dQSU8yNAorLy8hIC1cYiBQUkNNX0hJQl9HUElPMjYKKy8vIQorLy8hIFxyZXR1cm4gTm9uZS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit2b2lkCitQUkNNSGliZXJuYXRlV2FrZXVwU291cmNlRW5hYmxlKHVuc2lnbmVkIGxvbmcgdWxISUJXYWt1cFNyYykKK3sKKyAgdW5zaWduZWQgbG9uZyB1bFJlZ1ZhbHVlOworCisgIC8vCisgIC8vIFJlYWQgdGhlIFJUQyByZWdpc3RlcgorICAvLworICB1bFJlZ1ZhbHVlID0gUFJDTUhJQlJlZ1JlYWQoSElCM1AzX0JBU0UrSElCM1AzX09fTUVNX0hJQl9SVENfV0FLRV9FTik7CisKKyAgLy8KKyAgLy8gRW5hYmxlIHRoZSBSVEMgYXMgd2FrZXVwIHNvdXJjZSBpZiBzcGVjaWZpZWQKKyAgLy8KKyAgdWxSZWdWYWx1ZSB8PSAodWxISUJXYWt1cFNyYyAmIDB4MSk7CisKKyAgLy8KKyAgLy8gRW5hYmxlIEhJQiB3YWtldXAgc291cmNlcworICAvLworICBQUkNNSElCUmVnV3JpdGUoSElCM1AzX0JBU0UrSElCM1AzX09fTUVNX0hJQl9SVENfV0FLRV9FTix1bFJlZ1ZhbHVlKTsKKworICAvLworICAvLyBSRWFkIHRoZSBHUElPIHdha2V1cCBjb25maWd1cmF0aW9uIHJlZ2lzdGVyCisgIC8vCisgIHVsUmVnVmFsdWUgPSBQUkNNSElCUmVnUmVhZChISUIzUDNfQkFTRStISUIzUDNfT19NRU1fR1BJT19XQUtFX0VOKTsKKworICAvLworICAvLyBFbmFibGUgdGhlIHNwZWNpZmllZCBHUElPcyBhIHdha2V1cCBzb3VyY2VzCisgIC8vCisgIHVsUmVnVmFsdWUgfD0gKCh1bEhJQldha3VwU3JjPj4xNikmMHhGRik7CisKKyAgLy8KKyAgLy8gV3JpdGUgdGhlIG5ldyByZWdpc3RlciBjb25maWd1cmF0aW9uCisgIC8vCisgIFBSQ01ISUJSZWdXcml0ZShISUIzUDNfQkFTRStISUIzUDNfT19NRU1fR1BJT19XQUtFX0VOLHVsUmVnVmFsdWUpOworfQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8hIERpc2FibGUgaW5kaXZpZHVhbCBISUIgd2FrZXVwIHNvdXJjZShzKS4KKy8vIQorLy8hIFxwYXJhbSB1bEhJQldha3VwU3JjIGlzIGxvZ2ljYWwgT1Igb2YgdmFsaWQgSElCIHdha2V1cCBzb3VyY2VzLgorLy8hCisvLyEgVGhpcyBmdW5jdGlvbiBkaXNhYmxlIGluZGl2aWR1YWwgSElCIHdha2V1cCBzb3VyY2UocykuIFRoZSBwYXJhbXRlcgorLy8hIFxlIHVsSElCV2FrdXBTcmMgaXMgc2FtZSBhcyBiaXQgZmlsZWRzIGRlZmluZWQgaW4KKy8vISBQUkNNRW5hYmxlSGliZXJuYXRlV2FrZXVwU291cmNlKCkKKy8vIQorLy8hIFxyZXR1cm4gTm9uZS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit2b2lkCitQUkNNSGliZXJuYXRlV2FrZXVwU291cmNlRGlzYWJsZSh1bnNpZ25lZCBsb25nIHVsSElCV2FrdXBTcmMpCit7CisgIHVuc2lnbmVkIGxvbmcgdWxSZWdWYWx1ZTsKKworICAvLworICAvLyBSZWFkIHRoZSBSVEMgcmVnaXN0ZXIKKyAgLy8KKyAgdWxSZWdWYWx1ZSA9IFBSQ01ISUJSZWdSZWFkKEhJQjNQM19CQVNFK0hJQjNQM19PX01FTV9ISUJfUlRDX1dBS0VfRU4pOworCisgIC8vCisgIC8vIERpc2FibGUgdGhlIFJUQyBhcyB3YWtldXAgc291cmNlIGlmIHNwZWNpZmllZAorICAvLworICB1bFJlZ1ZhbHVlICY9IH4odWxISUJXYWt1cFNyYyAmIDB4MSk7CisKKyAgLy8KKyAgLy8gRGlzYWJsZSBISUIgd2FrZXVwIHNvdXJjZXMKKyAgLy8KKyAgUFJDTUhJQlJlZ1dyaXRlKEhJQjNQM19CQVNFK0hJQjNQM19PX01FTV9ISUJfUlRDX1dBS0VfRU4sdWxSZWdWYWx1ZSk7CisKKyAgLy8KKyAgLy8gUmVhZCB0aGUgR1BJTyB3YWtldXAgY29uZmlndXJhdGlvbiByZWdpc3RlcgorICAvLworICB1bFJlZ1ZhbHVlID0gUFJDTUhJQlJlZ1JlYWQoSElCM1AzX0JBU0UrSElCM1AzX09fTUVNX0dQSU9fV0FLRV9FTik7CisKKyAgLy8KKyAgLy8gRW5hYmxlIHRoZSBzcGVjaWZpZWQgR1BJT3MgYSB3YWtldXAgc291cmNlcworICAvLworICB1bFJlZ1ZhbHVlICY9IH4oKHVsSElCV2FrdXBTcmM+PjE2KSYweEZGKTsKKworICAvLworICAvLyBXcml0ZSB0aGUgbmV3IHJlZ2lzdGVyIGNvbmZpZ3VyYXRpb24KKyAgLy8KKyAgUFJDTUhJQlJlZ1dyaXRlKEhJQjNQM19CQVNFK0hJQjNQM19PX01FTV9HUElPX1dBS0VfRU4sdWxSZWdWYWx1ZSk7Cit9CisKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vISBHZXQgaGliZXJuYXRlIHdha2V1cCBjYXVzZQorLy8hCisvLyEgVGhpcyBmdW5jdGlvbiBnZXRzIHRoZSBoaWJlcm5hdGUgd2FrZXVwIGNhdXNlLgorLy8hCisvLyEgXHJldHVybiBSZXR1cm5zIFxiIFBSQ01fSElCX1dBS0VVUF9DQVVTRV9TTE9XX0NMT0NLIG9yCisvLyEgXGIgUFJDTV9ISUJfV0FLRVVQX0NBVVNFX0dQSU8KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit1bnNpZ25lZCBsb25nCitQUkNNSGliZXJuYXRlV2FrZXVwQ2F1c2VHZXQoKQoreworICAvLworICAvLyBTdXBwb3J0ZWQgb25seSBpbiBFUzIuMDAgYW5kIExhdGVyIGRldmljZXMgaS5lLiBST00gVmVyc2lvbiAyLngueCBvciBncmVhdGVyCisgIC8vCisgIGlmKCAoSFdSRUcoMHgwMDAwMDQwMCkgJiAweEZGRkYpID49IDIgKQorICB7CisgICAgICByZXR1cm4gKChQUkNNSElCUmVnUmVhZCgoT0NQX1NIQVJFRF9CQVNFICsgT0NQX1NIQVJFRF9PX1NQQVJFX1JFR184KSk+PjIpJjB4Nyk7CisgIH0KKyAgZWxzZQorICB7CisgICAgICByZXR1cm4oMCk7CisgIH0KK30KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vISBTZXRzIEhpYmVybmF0ZSB3YWtldXAgVGltZXIKKy8vIQorLy8hIFxwYXJhbSB1bGxUaWNrcyBpcyBudW1iZXIgb2YgMzIuNzY4IEtIeiBjbG9ja3MKKy8vIQorLy8hIFRoaXMgZnVuY3Rpb24gc2V0cyBpbnRlcm5hbCBoaWJlcm5hdGUgd2FrZXVwIHRpbWVyIHJ1bm5pbmcgYXQgMzIuNzY4IEtIei4KKy8vIQorLy8hIFxyZXR1cm4gUmV0dXJucyBcYiB0cnVlIG9uIHN1Y2Nlc3MsIFxiIGZhbHNlIG90aGVyd2lzZS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit2b2lkCitQUkNNSGliZXJuYXRlSW50ZXJ2YWxTZXQodW5zaWduZWQgbG9uZyBsb25nIHVsbFRpY2tzKQoreworICB1bnNpZ25lZCBsb25nIGxvbmcgdWxsUlRDVmFsOworCisgIC8vCisgIC8vIExhdGNoIHRoZSBSVEMgdmxhdWUKKyAgLy8KKyAgUFJDTUhJQlJlZ1dyaXRlKEhJQjNQM19CQVNFK0hJQjNQM19PX01FTV9ISUJfUlRDX1RJTUVSX1JFQUQgLDB4MSk7CisKKyAgLy8KKyAgLy8gUmVhZCBsYXRjaGVkIHZhbHVlcyBhcyAyIDMyLWJpdCB2bGF1ZXMKKyAgLy8KKyAgdWxsUlRDVmFsICA9IFBSQ01ISUJSZWdSZWFkKEhJQjNQM19CQVNFICsgSElCM1AzX09fTUVNX0hJQl9SVENfVElNRVJfTVNXKTsKKyAgdWxsUlRDVmFsICA9IHVsbFJUQ1ZhbCA8PCAzMjsKKyAgdWxsUlRDVmFsIHw9IFBSQ01ISUJSZWdSZWFkKEhJQjNQM19CQVNFK0hJQjNQM19PX01FTV9ISUJfUlRDX1RJTUVSX0xTVyk7CisKKyAgLy8KKyAgLy8gQWRkIHRoZSBpbnRlcnZhbAorICAvLworICB1bGxSVENWYWwgPSB1bGxSVENWYWwgKyB1bGxUaWNrczsKKworICAvLworICAvLyBTZXQgUlRDIG1hdGNoIHZhbHVlCisgIC8vCisgIFBSQ01ISUJSZWdXcml0ZShISUIzUDNfQkFTRStISUIzUDNfT19NRU1fSElCX1JUQ19XQUtFX0xTV19DT05GLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykodWxsUlRDVmFsKSk7CisgIFBSQ01ISUJSZWdXcml0ZShISUIzUDNfQkFTRStISUIzUDNfT19NRU1fSElCX1JUQ19XQUtFX01TV19DT05GLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSh1bGxSVENWYWw+PjMyKSk7Cit9CisKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vISBTZWxlY3RzIHRoZSBHUElPKHMpIGZvciBoaWJlcm5hdGUgd2FrZXVwCisvLyEKKy8vISBccGFyYW0gdWxHUElPQml0TWFwIGlzIHRoZSBiaXQtbWFwIG9mIHZhbGlkIGhpYmVybmF0ZSB3YWtldXAgR1BJTy4KKy8vISBccGFyYW0gdWxUeXBlIGlzIHRoZSB3YWtldXAgdHJpZ2dlciB0eXBlLgorLy8hCisvLyEgVGhpcyBmdW5jdGlvbiBzZXRlY3RzIHRoZSB3YWtldXAgR1BJTyBmb3IgaGliZXJuYXRlIGFuZCBjYW4gYmUKKy8vISB1c2VkIHRvIHNlbGVjdCBhbnkgY29tYmluYXRpb24gb2YgNyBwcmUtZGVmaW5lZCBHUElPKHMpLgorLy8hCisvLyEgVGhpcyBmdW5jdGlvbiBlbmFibGVzIGluZGl2aWR1YWwgSElCIHdha2V1cCBzb3VyY2UocykuIFRoZSBwYXJhbXRlcgorLy8hIFxlIHVsR1BJT0JpdE1hcCBzaG91bGQgYmUgb25lIG9mIHRoZSBmb2xsd29pbmcgOi0KKy8vISAtXGIgUFJDTV9ISUJfR1BJTzIKKy8vISAtXGIgUFJDTV9ISUJfR1BJTzQKKy8vISAtXGIgUFJDTV9ISUJfR1BJTzEzCisvLyEgLVxiIFBSQ01fSElCX0dQSU8xNworLy8hIC1cYiBQUkNNX0hJQl9HUElPMTEKKy8vISAtXGIgUFJDTV9ISUJfR1BJTzI0CisvLyEgLVxiIFBSQ01fSElCX0dQSU8yNgorLy8hCisvLyEgVGhlIHBhcmFtZXRlciBcZSB1bFR5cGUgc2V0cyB0aGUgdHJpZ2dlciB0eXBlIGFuZCBjYW4gYmUgb25lIG9mIHRoZQorLy8hIGZvbGxvd2luZzoKKy8vISAtIFxiIFBSQ01fSElCX0xPV19MRVZFTAorLy8hIC0gXGIgUFJDTV9ISUJfSElHSF9MRVZFTAorLy8hIC0gXGIgUFJDTV9ISUJfRkFMTF9FREdFCisvLyEgLSBcYiBQUkNNX0hJQl9SSVNFX0VER0UKKy8vIQorLy8hIFxyZXR1cm4gTm9uZS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit2b2lkCitQUkNNSGliZXJuYXRlV2FrZVVwR1BJT1NlbGVjdCh1bnNpZ25lZCBsb25nIHVsR1BJT0JpdE1hcCwgdW5zaWduZWQgbG9uZyB1bFR5cGUpCit7CisgIHVuc2lnbmVkIGNoYXIgdWNMb29wOworICB1bnNpZ25lZCBsb25nIHVsUmVnVmFsdWU7CisKKyAgLy8KKyAgLy8gU2hpZnQgdGhlIGJpdHMgdG8gZXh0cmFjdCB0aGUgR1BJTyBzZWxlY3Rpb24KKyAgLy8KKyAgdWxHUElPQml0TWFwID4+PSAxNjsKKworICAvLworICAvLyBTZXQgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIGVhY2ggR1BJTworICAvLworICBmb3IodWNMb29wPTA7IHVjTG9vcCA8IDc7IHVjTG9vcCsrKQorICB7CisgICAgaWYodWxHUElPQml0TWFwICYgKDE8PHVjTG9vcCkpCisgICAgeworICAgICAgdWxSZWdWYWx1ZSAgPSBQUkNNSElCUmVnUmVhZChISUIzUDNfQkFTRStISUIzUDNfT19NRU1fR1BJT19XQUtFX0NPTkYpOworICAgICAgdWxSZWdWYWx1ZSA9ICh1bFJlZ1ZhbHVlICYgKH4oMHgzIDw8ICh1Y0xvb3AqMikpKSkgfCAodWxUeXBlIDw8KHVjTG9vcCoyKSk7CisgICAgICBQUkNNSElCUmVnV3JpdGUoSElCM1AzX0JBU0UrSElCM1AzX09fTUVNX0dQSU9fV0FLRV9DT05GLCB1bFJlZ1ZhbHVlKTsKKyAgICB9CisgIH0KK30KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vISBQdXRzIHRoZSBzeXN0ZW0gaW50byBIaWJlcm5hdGUKKy8vIQorLy8hIFRoaXMgZnVuY3Rpb24gcHV0cyB0aGUgc3lzdGVtIGludG8gSGliZXJuYXRlLiBUaGUgZGV2aWNlIGVudGVycyBISUIKKy8vISBpbW1lZGlhdGVseSBhbmQgb24gZXhpdCBmcm9tIEhJQiBkZXZpY2UgY29yZSBzdGFydHMgaXRzIGV4ZWN1dGlvbiBmcm9tCisvLyEgcmVzZXQgdGh1cyB0aGUgZnVuY3Rpb24gbmV2ZXIgcmV0dXJucy4KKy8vIQorLy8hIFxyZXR1cm4gTm9uZS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit2b2lkCitQUkNNSGliZXJuYXRlRW50ZXIoKQoreworCisgIC8vCisgIC8vIFJlcXVlc3QgaGliZXJuYXRlLgorICAvLworICBQUkNNSElCUmVnV3JpdGUoKEhJQjNQM19CQVNFK0hJQjNQM19PX01FTV9ISUJfUkVRKSwweDEpOworCisgIC8vCisgIC8vIFdhaXQgZm9yIHN5c3RlbSB0byBlbnRlciBoaWJlcm5hdGUKKyAgLy8KKyAgX19hc20oIiAgICB3ZmlcbiIpOworCisgIC8vCisgIC8vIEluZmluaXRlIGxvb3AKKyAgLy8KKyAgd2hpbGUoMSkKKyAgeworCisgIH0KK30KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vISBHZXRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpbnRlcm5hbCBzbG93IGNsb2NrIGNvdW50ZXIKKy8vIQorLy8hIFRoaXMgZnVuY3Rpb24gbGF0Y2hlcyBhbmQgcmVhZHMgdGhlIGludGVybmFsIFJUQyBydW5uaW5nIGF0IDMyLjc2OCBLaHoKKy8vIQorLy8hIFxyZXR1cm4gNjQtYml0IGN1cnJlbnQgY291bnRlciB2bGF1ZS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit1bnNpZ25lZCBsb25nIGxvbmcKK1BSQ01TbG93Q2xrQ3RyR2V0KCkKK3sKKyAgdW5zaWduZWQgbG9uZyBsb25nIHVsbFJUQ1ZhbDsKKworICAvLworICAvLyBMYXRjaCB0aGUgUlRDIHZsYXVlCisgIC8vCisgIFBSQ01ISUJSZWdXcml0ZShISUIzUDNfQkFTRStISUIzUDNfT19NRU1fSElCX1JUQ19USU1FUl9SRUFELCAweDEpOworCisgIC8vCisgIC8vIFJlYWQgbGF0Y2hlZCB2YWx1ZXMgYXMgMiAzMi1iaXQgdmxhdWVzCisgIC8vCisgIHVsbFJUQ1ZhbCAgPSBQUkNNSElCUmVnUmVhZChISUIzUDNfQkFTRSArIEhJQjNQM19PX01FTV9ISUJfUlRDX1RJTUVSX01TVyk7CisgIHVsbFJUQ1ZhbCAgPSB1bGxSVENWYWwgPDwgMzI7CisgIHVsbFJUQ1ZhbCB8PSBQUkNNSElCUmVnUmVhZChISUIzUDNfQkFTRStISUIzUDNfT19NRU1fSElCX1JUQ19USU1FUl9MU1cpOworCisgIHJldHVybiB1bGxSVENWYWw7Cit9CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyEgR2V0cyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaW50ZXJuYWwgc2xvdyBjbG9jayBjb3VudGVyCisvLyEKKy8vISBUaGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIgdG8gXHNhIFBSQ01TbG93Q2xrQ3RyR2V0KCkgYnV0IHJlYWRzIHRoZSBjb3VudGVyCisvLyEgdmFsdWUgZnJvbSBhIHJlbGF0aXZlbHkgZmFzdGVyIGludGVyZmFjZSB1c2luZyBhbiBhdXRvLWxhdGNoIG1lY2hhaW5zbS4KKy8vIQorLy8hIFxub3RlIER1ZSB0byB0aGUgbmF0dXJlIG9mIGltcGxlbWV0YXRpb24gb2YgYXV0byBsYXRjaGluZywgd2hlbiB1c2luZyB0aGlzCisvLyEgQVBJLCB0aGUgcmVjb21tZW5kYXRpb24gaXMgdG8gcmVhZCB0aGUgdmFsdWUgdGhyaWNlIGFuZCBpZGVudGlmeSB0aGUgcmlnaHQKKy8vISB2YWx1ZSAoYXMgMiBvdXQgdGhlIDMgcmVhZCB2YWx1ZXMgd2lsbCBhbHdheXMgYmUgY29ycmVjdCBhbmQgd2l0aCBhIG1heC4gb2YKKy8vISAxIExTQiBjaGFuZ2UpCisvLyEKKy8vISBccmV0dXJuIDY0LWJpdCBjdXJyZW50IGNvdW50ZXIgdmxhdWUuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgordW5zaWduZWQgbG9uZyBsb25nIFBSQ01TbG93Q2xrQ3RyRmFzdEdldCh2b2lkKQoreworICB1bnNpZ25lZCBsb25nIGxvbmcgdWxsUlRDVmFsOworCisgIC8vCisgIC8vIFJlYWQgYXMgMiAzMi1iaXQgdmFsdWVzCisgIC8vCisgIHVsbFJUQ1ZhbCA9IEhXUkVHKEhJQjFQMl9CQVNFICsgSElCMVAyX09fSElCX1JUQ19USU1FUl9NU1dfMVAyKTsKKyAgdWxsUlRDVmFsID0gdWxsUlRDVmFsIDw8IDMyOworICB1bGxSVENWYWwgfD0gSFdSRUcoSElCMVAyX0JBU0UgKyBISUIxUDJfT19ISUJfUlRDX1RJTUVSX0xTV18xUDIpOworCisgIHJldHVybiB1bGxSVENWYWw7CisKK30KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vISBTZXRzIHNsb3cgY2xvY2sgY291bnRlciBtYXRjaCB2YWx1ZSB0byBpbnRlcnJ1cHQgdGhlIHByb2Nlc3Nvci4KKy8vIQorLy8hIFxwYXJhbSB1bGxWYWx1ZSBpcyB0aGUgbWF0Y2ggdmFsdWUuCisvLyEKKy8vISBUaGlzIGZ1bmN0aW9uIHNldHMgdGhlIG1hdGNoIHZhbHVlIGZvciAgc2xvdyBjbG9jayBjb3VudGVyLiBUaGlzIGlzIHVzZQorLy8hIHRvIGludGVycnVwdCB0aGUgcHJvY2Vzc29yIHdoZW4gUlRDIGNvdW50cyB0byB0aGUgc3BlY2lmaWVkIHZhbHVlLgorLy8hCisvLyEgXHJldHVybiBOb25lLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK3ZvaWQgUFJDTVNsb3dDbGtDdHJNYXRjaFNldCh1bnNpZ25lZCBsb25nIGxvbmcgdWxsVmFsdWUpCit7CisgIC8vCisgIC8vIFNldCBSVEMgbWF0Y2ggdmFsdWUKKyAgLy8KKyAgUFJDTUhJQlJlZ1dyaXRlKEhJQjNQM19CQVNFICsgSElCM1AzX09fTUVNX0hJQl9SVENfSVJRX0xTV19DT05GLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSh1bGxWYWx1ZSkpOworICBQUkNNSElCUmVnV3JpdGUoSElCM1AzX0JBU0UgKyBISUIzUDNfT19NRU1fSElCX1JUQ19JUlFfTVNXX0NPTkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpKHVsbFZhbHVlPj4zMikpOworfQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8hIEdldHMgc2xvdyBjbG9jayBjb3VudGVyIG1hdGNoIHZhbHVlLgorLy8hCisvLyEgVGhpcyBmdW5jdGlvbiBnZXRzIHRoZSBtYXRjaCB2YWx1ZSBmb3IgIHNsb3cgY2xvY2sgY291bnRlci4gVGhpcyBpcyB1c2UKKy8vISB0byBpbnRlcnJ1cHQgdGhlIHByb2Nlc3NvciB3aGVuIFJUQyBjb3VudHMgdG8gdGhlIHNwZWNpZmllZCB2YWx1ZS4KKy8vIQorLy8hIFxyZXR1cm4gTm9uZS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit1bnNpZ25lZCBsb25nIGxvbmcgUFJDTVNsb3dDbGtDdHJNYXRjaEdldCgpCit7CisgIHVuc2lnbmVkIGxvbmcgbG9uZyB1bGxWYWx1ZTsKKworICAvLworICAvLyBHZXQgUlRDIG1hdGNoIHZhbHVlCisgIC8vCisgIHVsbFZhbHVlID0gUFJDTUhJQlJlZ1JlYWQoSElCM1AzX0JBU0UgKyBISUIzUDNfT19NRU1fSElCX1JUQ19JUlFfTVNXX0NPTkYpOworICB1bGxWYWx1ZSA9IHVsbFZhbHVlPDwzMjsKKyAgdWxsVmFsdWUgfD0gUFJDTUhJQlJlZ1JlYWQoSElCM1AzX0JBU0UgKyBISUIzUDNfT19NRU1fSElCX1JUQ19JUlFfTFNXX0NPTkYpOworCisgIC8vCisgIC8vIFJldHVybiB0aGUgdmFsdWUKKyAgLy8KKyAgcmV0dXJuIHVsbFZhbHVlOworfQorCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyEgV3JpdGUgdG8gT24tQ2hpcCBSZXRlbnRpb24gKE9DUikgcmVnaXN0ZXIuCisvLyEKKy8vISBUaGlzIGZ1bmN0aW9uIHdyaXRlcyB0byBPbi1DaGlwIHJldGVudGlvbiByZWdpc3Rlci4gVGhlIGRldmljZSBzdXBwb3J0cyB0d28KKy8vISA0LWJ5dGUgT0NSIHJlZ2lzdGVyIHdoaWNoIGFyZSByZXRhaW5lZCBhY3Jvc3MgYWxsIHBvd2VyIG1vZGUuCisvLyEKKy8vISBUaGUgcGFyYW1ldGVyIFxlIHVjSW5kZXggaXMgYW4gaW5kZXggb2YgdGhlIE9DUiBhbmQgY2FuIGJlIFxiIDAgb3IgXGIgMS4KKy8vIQorLy8hIFRoZXNlIHJlZ2lzdGVycyBhcmUgc2hhcmVkIGJ5IHRoZSBSVEMgaW1wbGVtZW50YXRpb24gKGlmIERyaXZlcmxpYiBSVEMKKy8vISBBUElzIGFyZSB1c2VkKSwgUk9NLCBhbmQgdXNlciBhcHBsaWNhdGlvbi4KKy8vIQorLy8hIFdoZW4gUlRDIEFQSXMgaW4gdXNlOgorLy8hCisvLyEgICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKy8vISAgICAgfCAgICAgICAgICAgICAgICAgIElOREVYIDEgICAgICAgICAgICAgICAgICAgICAgfAorLy8hICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisvLyEgICAgIHwzMXwzMHwyOXwyOHwyN3wyNnwyNXwyNHwyM3wyMnwyMXwyMHwxOXwxOHwxN3wxNnwKKy8vISAgICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorLy8hICAgICB8ICAgICAgICAgICBSZXNlcnZlZCBieSBSVEMgQVBJcyAtIFlZICAgICAgICAgICB8CisvLyEgICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKy8vISAgICAgfDE1fDE0fDEzfDEyfDExfDEwfDA5fDA4fDA3fDA2fDA1fDA0fDAzfDAyfDAxfDAwfAorLy8hICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisvLyEgICAgIHwgICAgICAgICAgIFJlc2VydmVkIGJ5IFJUQyBBUElzIC0gWVkgICAgICAgICAgIHwKKy8vISAgICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorLy8hCisvLyEKKy8vISAgICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorLy8hICAgICB8ICAgICAgICAgICAgICAgICAgSU5ERVggMCAgICAgICAgICAgICAgICAgICAgICB8CisvLyEgICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKy8vISAgICAgfDMxfDMwfDI5fDI4fDI3fDI2fDI1fDI0fDIzfDIyfDIxfDIwfDE5fDE4fDE3fDE2fAorLy8hICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisvLyEgICAgIHwgICAgICAgICAgIFJlc2VydmVkIGJ5IFJUQyBBUElzIC0gWVkgICAgICAgICAgIHwKKy8vISAgICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorLy8hICAgICB8MTV8MTR8MTN8MTJ8MTF8MTB8MDl8MDh8MDd8MDZ8MDV8MDR8MDN8MDJ8MDF8MDB8CisvLyEgICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKy8vISAgICAgfFlZfCAgICAgICAgRm9yIFVzZXIgQXBwbGljYXRpb24gICAgICAgICAgICAgfFhYfAorLy8hICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisvLyEKKy8vISAgICAgWVkgPT4gUmVzZXJ2ZWQgYnkgUlRDIEFQSXMuIElmIERyaXZlcmxpYiBSVEMgQVBJcyBhcmUgdXNlZAorLy8hICAgICBYWCA9PiBSZXNlcnZlZCBieSBST00KKy8vIQorLy8hCisvLyEgV2hlbiBSVEMgQVBJcyBhcmUgbm90IGluIHVzZToKKy8vIQorLy8hICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisvLyEgICAgIHwgICAgICAgICAgICAgICAgICBJTkRFWCAxICAgICAgICAgICAgICAgICAgICAgIHwKKy8vISAgICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorLy8hICAgICB8MzF8MzB8Mjl8Mjh8Mjd8MjZ8MjV8MjR8MjN8MjJ8MjF8MjB8MTl8MTh8MTd8MTZ8CisvLyEgICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKy8vISAgICAgfCAgICAgICAgICAgIEZvciBVc2VyIEFwcGxpY2F0aW9uICAgICAgICAgICAgICAgfAorLy8hICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisvLyEgICAgIHwxNXwxNHwxM3wxMnwxMXwxMHwwOXwwOHwwN3wwNnwwNXwwNHwwM3wwMnwwMXwwMHwKKy8vISAgICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorLy8hICAgICB8ICAgICAgICAgICAgRm9yIFVzZXIgQXBwbGljYXRpb24gICAgICAgICAgICAgICB8CisvLyEgICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKy8vIQorLy8hCisvLyEgICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKy8vISAgICAgfCAgICAgICAgICAgICAgICAgIElOREVYIDAgICAgICAgICAgICAgICAgICAgICAgfAorLy8hICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisvLyEgICAgIHwzMXwzMHwyOXwyOHwyN3wyNnwyNXwyNHwyM3wyMnwyMXwyMHwxOXwxOHwxN3wxNnwKKy8vISAgICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorLy8hICAgICB8ICAgICAgICAgICAgRm9yIFVzZXIgQXBwbGljYXRpb24gICAgICAgICAgICAgICB8CisvLyEgICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKy8vISAgICAgfDE1fDE0fDEzfDEyfDExfDEwfDA5fDA4fDA3fDA2fDA1fDA0fDAzfDAyfDAxfDAwfAorLy8hICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisvLyEgICAgIHwgICAgICAgICAgIEZvciBVc2VyIEFwcGxpY2F0aW9uICAgICAgICAgICAgIHxYWHwKKy8vISAgICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorLy8hCisvLyEgICAgIFhYID0+IFJlc2VydmVkIGJ5IFJPTQorLy8hCisvLyEKKy8vIQorLy8hIFxyZXR1cm4gTm9uZS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit2b2lkIFBSQ01PQ1JSZWdpc3RlcldyaXRlKHVuc2lnbmVkIGNoYXIgdWNJbmRleCwgdW5zaWduZWQgbG9uZyB1bFJlZ1ZhbHVlKQoreworICB1bnNpZ25lZCBsb25nIHVsVmFsOworCisgIC8vCisgIC8vIENvbXB1aXRyIHRoZSBvZmZzZXQKKyAgLy8KKyAgdWNJbmRleCA9IHVjSW5kZXggPDwgMjsKKworICAvLworICAvLyBJZiBiaXQgMCBpcyByZXNlcnZlZAorICAvLworICBpZiggKEhXUkVHKE9DUF9TSEFSRURfQkFTRSArIE9DUF9TSEFSRURfT19TUEFSRV9SRUdfOCkgJiAoMHgwMDAwMDA4MCkpICYmCisgICAgICAodWNJbmRleCA9PSAwKSApCisgIHsKKyAgICB1bFZhbCA9IFBSQ01ISUJSZWdSZWFkKEhJQjNQM19CQVNFICsgSElCM1AzX09fTUVNX0hJQl9SRUcyICsgdWNJbmRleCk7CisgICAgdWxSZWdWYWx1ZSA9ICgodWxSZWdWYWx1ZSA8PCAweDEpIHwgKHVsVmFsICYgKDB4MSkpKTsKKyAgfQorCisgIC8vCisgIC8vIFdyaXRlIHRociB2YWx1ZQorICAvLworICBQUkNNSElCUmVnV3JpdGUoSElCM1AzX0JBU0UgKyBISUIzUDNfT19NRU1fSElCX1JFRzIgKyB1Y0luZGV4LHVsUmVnVmFsdWUpOworCit9CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyEgUmVhZCBmcm9tIE9uLUNoaXAgUmV0ZW50aW9uIChPQ1IpIHJlZ2lzdGVyLgorLy8hCisvLyEgVGhpcyBmdW5jdGlvbiByZWFkcyBmcm9tIE9uLUNoaXAgcmV0ZW50aW9uIHJlZ2lzdGVyLiBUaGUgZGV2aWNlIHN1cHBvcnRzIHR3bworLy8hIDQtYnl0ZSBPQ1IgcmVnaXN0ZXIgd2hpY2ggYXJlIHJldGFpbmVkIGFjcm9zcyBhbGwgcG93ZXIgbW9kZS4KKy8vIQorLy8hIFRoZSBwYXJhbWV0ZXIgXGUgdWNJbmRleCBpcyBhbiBpbmRleCBvZiB0aGUgT0NSIGFuZCBjYW4gYmUgXGIgMCBvciBcYiAxLgorLy8hCisvLyEgXHNhIFBSQ01PQ1JSZWdpc3RlcldyaXRlKCkgZm9yIHRoZSByZWdpc3RlciB1c2FnZSBkZXRhaWxzLgorLy8hCisvLyEgXHJldHVybiBOb25lLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK3Vuc2lnbmVkIGxvbmcgUFJDTU9DUlJlZ2lzdGVyUmVhZCh1bnNpZ25lZCBjaGFyIHVjSW5kZXgpCit7CisgIHVuc2lnbmVkIGxvbmcgdWxSZXQ7CisKKyAgLy8KKyAgLy8gUmVhZCB0aGUgT0NSIHJlZ2lzdGVyCisgIC8vCisgIHVsUmV0ID0gUFJDTUhJQlJlZ1JlYWQoSElCM1AzX0JBU0UrSElCM1AzX09fTUVNX0hJQl9SRUcyICsgKHVjSW5kZXggPDwgMikpOworCisgIC8vCisgIC8vIElmIGJpdCAwIGlzIHJlc2VydmVkCisgIC8vCisgIGlmKCAoSFdSRUcoT0NQX1NIQVJFRF9CQVNFICsgT0NQX1NIQVJFRF9PX1NQQVJFX1JFR184KSAmICgweDAwMDAwMDgwKSkgJiYKKyAgICAgICh1Y0luZGV4ID09IDApICkKKyAgeworICAgICB1bFJldCA9IHVsUmV0ID4+IDB4MTsKKyAgfQorCisgIC8vCisgIC8vIFJldHVybiB0aGUgcmVhZCB2YWx1ZS4KKyAgLy8KKyAgcmV0dXJuIHVsUmV0OworfQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8hIFJlZ2lzdGVycyBhbiBpbnRlcnJ1cHQgaGFuZGxlciBmb3IgdGhlIFBSQ00uCisvLyEKKy8vISBccGFyYW0gcGZuSGFuZGxlciBpcyBhIHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZQorLy8hIGludGVycnVwdCBpcyBhY3RpdmF0ZWQuCisvLyEKKy8vISBUaGlzIGZ1bmN0aW9uIGRvZXMgdGhlIGFjdHVhbCByZWdpc3RlcmluZyBvZiB0aGUgaW50ZXJydXB0IGhhbmRsZXIuICBUaGlzCisvLyEgZnVuY3Rpb24gZW5hYmxlcyB0aGUgZ2xvYmFsIGludGVycnVwdCBpbiB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXI7CisvLyEKKy8vISBccmV0dXJuIE5vbmUuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgordm9pZCBQUkNNSW50UmVnaXN0ZXIodm9pZCAoKnBmbkhhbmRsZXIpKHZvaWQpKQoreworICAvLworICAvLyBSZWdpc3RlciB0aGUgaW50ZXJydXB0IGhhbmRsZXIuCisgIC8vCisgIEludFJlZ2lzdGVyKElOVF9QUkNNLCBwZm5IYW5kbGVyKTsKKworICAvLworICAvLyBFbmFibGUgdGhlIFBSQ00gaW50ZXJydXB0LgorICAvLworICBJbnRFbmFibGUoSU5UX1BSQ00pOworfQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8hIFVucmVnaXN0ZXJzIGFuIGludGVycnVwdCBoYW5kbGVyIGZvciB0aGUgUFJDTS4KKy8vIQorLy8hIFRoaXMgZnVuY3Rpb24gZG9lcyB0aGUgYWN0dWFsIHVucmVnaXN0ZXJpbmcgb2YgdGhlIGludGVycnVwdCBoYW5kbGVyLiAgSXQKKy8vISBjbGVhcnMgdGhlIGhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gYSBQUkNNIGludGVycnVwdCBvY2N1cnMuICBUaGlzCisvLyEgZnVuY3Rpb24gYWxzbyBtYXNrcyBvZmYgdGhlIGludGVycnVwdCBpbiB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIgc28gdGhhdAorLy8hIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciBubyBsb25nZXIgaXMgY2FsbGVkLgorLy8hCisvLyEgXHJldHVybiBOb25lLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK3ZvaWQgUFJDTUludFVucmVnaXN0ZXIoKQoreworICAvLworICAvLyBFbmFibGUgdGhlIFVBUlQgaW50ZXJydXB0LgorICAvLworICBJbnREaXNhYmxlKElOVF9QUkNNKTsKKworICAvLworICAvLyBSZWdpc3RlciB0aGUgaW50ZXJydXB0IGhhbmRsZXIuCisgIC8vCisgIEludFVucmVnaXN0ZXIoSU5UX1BSQ00pOworfQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8hIEVuYWJsZXMgaW5kaXZpZHVhbCBQUkNNIGludGVycnVwdCBzb3VyY2VzLgorLy8hCisvLyEgXHBhcmFtIHVsSW50RmxhZ3MgaXMgdGhlIGJpdCBtYXNrIG9mIHRoZSBpbnRlcnJ1cHQgc291cmNlcyB0byBiZSBlbmFibGVkLgorLy8hCisvLyEgVGhpcyBmdW5jdGlvbiBlbmFibGVzIHRoZSBpbmRpY2F0ZWQgQVJDTSBpbnRlcnJ1cHQgc291cmNlcy4gIE9ubHkgdGhlCisvLyEgc291cmNlcyB0aGF0IGFyZSBlbmFibGVkIGNhbiBiZSByZWZsZWN0ZWQgdG8gdGhlIHByb2Nlc3NvciBpbnRlcnJ1cHQ7CisvLyEgZGlzYWJsZWQgc291cmNlcyBoYXZlIG5vIGVmZmVjdCBvbiB0aGUgcHJvY2Vzc29yLgorLy8hCisvLyEgVGhlIFxlIHVsSW50RmxhZ3MgcGFyYW1ldGVyIGlzIHRoZSBsb2dpY2FsIE9SIG9mIGFueSBvZiB0aGUgZm9sbG93aW5nOgorLy8hIC1cYiBQUkNNX0lOVF9TTE9XX0NMS19DVFIKKy8vIQorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK3ZvaWQgUFJDTUludEVuYWJsZSh1bnNpZ25lZCBsb25nIHVsSW50RmxhZ3MpCit7CisgIHVuc2lnbmVkIGxvbmcgdWxSZWdWYWx1ZTsKKworICBpZih1bEludEZsYWdzICYgUFJDTV9JTlRfU0xPV19DTEtfQ1RSICkKKyAgeworICAgIC8vCisgICAgLy8gRW5hYmxlIFBSQ00gaW50ZXJydXB0CisgICAgLy8KKyAgICBIV1JFRyhBUkNNX0JBU0UgKyBBUFBTX1JDTV9PX0FQUFNfUkNNX0lOVEVSUlVQVF9FTkFCTEUpIHw9IDB4NDsKKworICAgIC8vCisgICAgLy8gRW5hYmxlIFJUQyBpbnRlcnJ1cHQKKyAgICAvLworICAgIHVsUmVnVmFsdWUgPSBQUkNNSElCUmVnUmVhZChISUIzUDNfQkFTRSArIEhJQjNQM19PX01FTV9ISUJfUlRDX0lSUV9FTkFCTEUpOworICAgIHVsUmVnVmFsdWUgfD0gMHgxOworICAgIFBSQ01ISUJSZWdXcml0ZShISUIzUDNfQkFTRSArIEhJQjNQM19PX01FTV9ISUJfUlRDX0lSUV9FTkFCTEUsIHVsUmVnVmFsdWUpOworICB9Cit9CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyEgRGlzYWJsZXMgaW5kaXZpZHVhbCBQUkNNIGludGVycnVwdCBzb3VyY2VzLgorLy8hCisvLyEgXHBhcmFtIHVsSW50RmxhZ3MgaXMgdGhlIGJpdCBtYXNrIG9mIHRoZSBpbnRlcnJ1cHQgc291cmNlcyB0byBiZSBkaXNhYmxlZC4KKy8vIQorLy8hIFRoaXMgZnVuY3Rpb24gZGlzYWJsZXMgdGhlIGluZGljYXRlZCBBUkNNIGludGVycnVwdCBzb3VyY2VzLiAgT25seSB0aGUKKy8vISBzb3VyY2VzIHRoYXQgYXJlIGVuYWJsZWQgY2FuIGJlIHJlZmxlY3RlZCB0byB0aGUgcHJvY2Vzc29yIGludGVycnVwdDsKKy8vISBkaXNhYmxlZCBzb3VyY2VzIGhhdmUgbm8gZWZmZWN0IG9uIHRoZSBwcm9jZXNzb3IuCisvLyEKKy8vISBUaGUgXGUgdWxJbnRGbGFncyBwYXJhbWV0ZXIgaGFzIHRoZSBzYW1lIGRlZmluaXRpb24gYXMgdGhlIFxlIHVsSW50RmxhZ3MKKy8vISBwYXJhbWV0ZXIgdG8gUFJDTUVuYWJsZUludGVycnVwdCgpLgorLy8hCisvLyEgXHJldHVybiBOb25lLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK3ZvaWQgUFJDTUludERpc2FibGUodW5zaWduZWQgbG9uZyB1bEludEZsYWdzKQoreworICB1bnNpZ25lZCBsb25nIHVsUmVnVmFsdWU7CisKKyAgaWYodWxJbnRGbGFncyAmIFBSQ01fSU5UX1NMT1dfQ0xLX0NUUiApCisgIHsKKyAgICAvLworICAgIC8vIERpc2FibGUgUFJDTSBpbnRlcnJ1cHQKKyAgICAvLworICAgIEhXUkVHKEFSQ01fQkFTRSArIEFQUFNfUkNNX09fQVBQU19SQ01fSU5URVJSVVBUX0VOQUJMRSkgJj0gfjB4NDsKKworICAgIC8vCisgICAgLy8gRGlzYWJsZSBSVEMgaW50ZXJydXB0CisgICAgLy8KKyAgICB1bFJlZ1ZhbHVlID0gUFJDTUhJQlJlZ1JlYWQoSElCM1AzX0JBU0UgKyBISUIzUDNfT19NRU1fSElCX1JUQ19JUlFfRU5BQkxFKTsKKyAgICB1bFJlZ1ZhbHVlICY9IH4weDE7CisgICAgUFJDTUhJQlJlZ1dyaXRlKEhJQjNQM19CQVNFICsgSElCM1AzX09fTUVNX0hJQl9SVENfSVJRX0VOQUJMRSwgdWxSZWdWYWx1ZSk7CisgIH0KK30KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vISBHZXRzIHRoZSBjdXJyZW50IGludGVycnVwdCBzdGF0dXMuCisvLyEKKy8vISBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIFBSQ00gaW50ZXJydXB0IHN0YXR1cyBvZiBpbnRlcnJ1cHRzIHRoYXQgYXJlCisvLyEgYWxsb3dlZCB0byByZWZsZWN0IHRvIHRoZSBwcm9jZXNzb3IuIFRoZSBpbnRlcnJ1cHRzIGFyZSBjbGVhcmVkIG9uIHJlYWQuCisvLyEKKy8vISBccmV0dXJuIFJldHVybnMgdGhlIGN1cnJlbnQgaW50ZXJydXB0IHN0YXR1cy4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit1bnNpZ25lZCBsb25nIFBSQ01JbnRTdGF0dXMoKQoreworICAgIHJldHVybiBIV1JFRyhBUkNNX0JBU0UgKyBBUFBTX1JDTV9PX0FQUFNfUkNNX0lOVEVSUlVQVF9TVEFUVVMpOworfQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8hIE1hcmsgdGhlIGZ1bmN0aW9uIG9mIFJUQyBhcyBiZWluZyB1c2VkCisvLyEKKy8vISBUaGlzIGZ1bmN0aW9uIG1hcmtzIGluIEhXIHRoYXQgZmVhdHVyZSB0byBtYWludGFpbiBjYWxlbmRhciB0aW1lIGluIGRldmljZQorLy8hIGlzIGJlaW5nIHVzZWQuCisvLyEKKy8vISBTcGVjaWZpY2FsbHksIHRoaXMgZmVhdHVyZSByZXNlcnZlcyB1c2VyJ3MgSElCIFJlZ2lzdGVyLTEgYWNjZXNzZWQgdGhyb3VnaAorLy8hIFBSQ01PQ1JSZWdpc3RlcldyaXRlKDEpIGZvciBpbnRlcm5hbCB3b3JrIC8gcHVycG9zZSwgdGhlcmVmb3JlLCB0aGUgc3RhdGVkCisvLyEgcmVnaXN0ZXIgaXMgbm90IGF2YWlsYWJsZSB0byB1c2VyLiBBbHNvLCB1c2VycyBtdXN0IG5vdCBleGNlcmNpc2UgdGhlIFNsb3cKKy8vISBDbG9jayBDb3VudGVyIEFQSShzKSwgaWYgUlRDIGhhcyBiZWVuIHNldCBmb3IgdXNlLgorLy8hCisvLyEgVGhlIFJUQyBmZWF0dXJlLCBpZiBzZXQgb3IgbWFya2VkLCBjYW4gYmUgb25seSByZXNldCBlaXRoZXIgdGhyb3VnaCByZWJvb3QKKy8vISBvciBwb3dlciBjeWNsZS4KKy8vIQorLy8hIFxyZXR1cm4gTm9uZS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit2b2lkIFBSQ01SVENJblVzZVNldCgpCit7CisgICAgICAgIFJUQ19VU0VfU0VUKCk7CisgICAgICAgIHJldHVybjsKK30KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vISBBc2NlcnRhaW4gd2hldGhlciBmdW5jdGlvbiBvZiBSVEMgaXMgYmVpbmcgdXNlZAorLy8hCisvLyEgVGhpcyBmdW5jdGlvbiBpbmRpY2F0ZXMgd2hldGhlciBmdW5jdGlvbiBvZiBSVEMgaXMgYmVpbmcgdXNlZCBvbiB0aGUgZGV2aWNlCisvLyEgb3Igbm90LgorLy8hCisvLyEgVGhpcyByb3V0aW5lIHNob3VsZCBiZSB1dGlsaXplZCBieSB0aGUgYXBwbGljYXRpb24gc29mdHdhcmUsIHdoZW4gcmV0dXJuaW5nCisvLyEgZnJvbSBsb3ctcG93ZXIsIHRvIGNvbmZpcm0gdGhhdCBSVEMgaGFzIGJlZW4gcHV0IHRvIHVzZSBhbmQgbWF5IG5vdCBuZWVkIHRvCisvLyEgc2V0IHRoZSB2YWx1ZSBvZiB0aGUgUlRDLgorLy8hCisvLyEgVGhlIFJUQyBmZWF0dXJlLCBpZiBzZXQgb3IgbWFya2VkLCBjYW4gYmUgb25seSByZXNldCBlaXRoZXIgdGhyb3VnaCByZWJvb3QKKy8vISBvciBwb3dlciBjeWNsZS4KKy8vIQorLy8hIFxyZXR1cm4gTm9uZS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit0Qm9vbGVhbiBQUkNNUlRDSW5Vc2VHZXQoKQoreworICAgICAgICByZXR1cm4gSVNfUlRDX1VTRUQoKT8gdHJ1ZSA6IGZhbHNlOworfQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8hIFNldCB0aGUgY2FsZW5kYXIgdGltZSBpbiB0aGUgZGV2aWNlLgorLy8hCisvLyEgXHBhcmFtIHVsU2VjcyByZWZlcnMgdG8gdGhlIHNlY29uZHMgcGFydCBvZiB0aGUgIGNhbGVuZGFyIHRpbWUKKy8vISBccGFyYW0gdXNNc2VjIHJlZmVycyB0byB0aGUgZnJhY3Rpb25hbCAobXMpIHBhcnQgb2YgdGhlIHNlY29uZAorLy8hCisvLyEgVGhpcyBmdW5jdGlvbiBzZXRzIHRoZSBzcGVjaWZpZWQgY2FsZW5kYXIgdGltZSBpbiB0aGUgZGV2aWNlLiBUaGUgY2FsZW5kYXIKKy8vISB0aW1lIGlzIG91dGxpbmVkIGluIHRlcm1zIG9mIHNlY29uZHMgYW5kIG1pbGxpc2Vjb25kcy4gSG93ZXZlciwgdGhlIGRldmljZQorLy8hIG1ha2VzIG5vIGFzc3VtcHRpb24gYWJvdXQgdGhlIG9yaWdpbiBvciByZWZlcmVuY2Ugb2YgdGhlIGNhbGVuZGFyIHRpbWUuCisvLyEKKy8vISBUaGUgZGV2aWNlIHVzZXMgdGhlIGluZGljYXRlZCBjYWxlbmRhciB2YWx1ZSB0byB1cGRhdGUgYW5kIG1haW50YWluIHRoZQorLy8hIHdhbGwtY2xvY2sgdGltZSBhY3Jvc3MgYWN0aXZlIGFuZCBsb3cgcG93ZXIgc3RhdGVzLgorLy8hCisvLyEgVGhlIGZ1bmN0aW9uIFBSQ01SVENJblVzZVNldCgpIG11c3QgYmUgaW52b2tlZCBwcmlvciB0byB1c2Ugb2YgdGhpcyBmZWF0dXJlLgorLy8hCisvLyEgXHJldHVybiBOb25lLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK3ZvaWQgUFJDTVJUQ1NldCh1bnNpZ25lZCBsb25nIHVsU2VjcywgdW5zaWduZWQgc2hvcnQgdXNNc2VjKQoreworICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdWxsTXNlYyA9IDA7CisKKyAgICAgICAgaWYoSVNfUlRDX1VTRUQoKSkgeworICAgICAgICAgICAgICAgIHVsbE1zZWMgPSBSVENfVTY0TVNFQ19NSyh1bFNlY3MsIHVzTXNlYykgLSBTQ0NfVTY0TVNFQ19HRVQoKTsKKworICAgICAgICAgICAgICAgICBSVENfVTMyU0VDU19SRUdfV1IoUlRDX1NFQ1NfSU5fVTY0TVNFQyh1bGxNc2VjKSk7CisgICAgICAgICAgICAgICAgIFJUQ19VMTZNU0VDX1JFR19XUihSVENfTVNFQ19JTl9VNjRNU0VDKHVsbE1zZWMpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybjsKK30KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vISBHZXQgdGhlIGluc3RhbnRhbmVvdXMgY2FsZW5kYXIgdGltZSBmcm9tIHRoZSBkZXZpY2UuCisvLyEKKy8vISBccGFyYW0gdWxTZWNzIHJlZmVycyB0byB0aGUgc2Vjb25kcyBwYXJ0IG9mIHRoZSAgY2FsZW5kYXIgdGltZQorLy8hIFxwYXJhbSB1c01zZWMgcmVmZXJzIHRvIHRoZSBmcmFjdGlvbmFsIChtcykgcGFydCBvZiB0aGUgc2Vjb25kCisvLyEKKy8vISBUaGlzIGZ1bmN0aW9uIGZldGNoZXMgdGhlIGluc3RhbnRhbmVvdXMgdmFsdWUgb2YgdGhlIHRpY2tpbmcgY2FsZW5kYXIgdGltZQorLy8hIGZyb20gdGhlIGRldmljZS4gVGhlIGNhbGVuZGFyIHRpbWUgaXMgb3V0bGluZWQgaW4gdGVybXMgb2Ygc2Vjb25kcyBhbmQKKy8vISBtaWxsaXNlY29uZHMuCisvLyEKKy8vISBUaGUgZGV2aWNlIHByb3ZpZGVzIHRoZSBjYWxlbmRhciB2YWx1ZSB0aGF0IGhhcyBiZWVuIG1haW50YWluZWQgYWNyb3NzCisvLyEgYWN0aXZlIGFuZCBsb3cgcG93ZXIgc3RhdGVzLgorLy8hCisvLyEgVGhlIGZ1bmN0aW9uIFBSQ01SVENTZXQoKSBtdXN0IGhhdmUgYmVlbiBpbnZva2VkIG9uY2UgdG8gc2V0IGEgcmVmZXJlbmNlLgorLy8hCisvLyEgXHJldHVybiBOb25lLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK3ZvaWQgUFJDTVJUQ0dldCh1bnNpZ25lZCBsb25nICp1bFNlY3MsIHVuc2lnbmVkIHNob3J0ICp1c01zZWMpCit7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB1bGxNc2VjID0gMDsKKworICAgICAgICBpZihJU19SVENfVVNFRCgpKSB7CisgICAgICAgICAgICAgICAgdWxsTXNlYyAgPSBSVENfVTY0TVNFQ19NSyhSVENfVTMyU0VDU19SRUdfUkQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJUQ19VMTZNU0VDX1JFR19SRCgpKTsKKyAgICAgICAgICAgICAgICB1bGxNc2VjICs9IFNDQ19VNjRNU0VDX0dFVCgpOworICAgICAgICB9CisKKyAgICAgICAgKnVsU2VjcyA9IFJUQ19TRUNTX0lOX1U2NE1TRUModWxsTXNlYyk7CisgICAgICAgICp1c01zZWMgPSBSVENfTVNFQ19JTl9VNjRNU0VDKHVsbE1zZWMpOworCisgICAgICAgIHJldHVybjsKK30KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vISBTZXQgYSBjYWxlbmRhciB0aW1lIGFsYXJtLgorLy8hCisvLyEgXHBhcmFtIHVsU2VjcyByZWZlcnMgdG8gdGhlIHNlY29uZHMgcGFydCBvZiB0aGUgIGNhbGVuZGFyIHRpbWUKKy8vISBccGFyYW0gdXNNc2VjIHJlZmVycyB0byB0aGUgZnJhY3Rpb25hbCAobXMpIHBhcnQgb2YgdGhlIHNlY29uZAorLy8hCisvLyEgVGhpcyBmdW5jdGlvbiBzZXRzIGFuIHdhbGwtY2xvY2sgYWxhcm0gaW4gdGhlIGRldmljZSB0byBiZSByZXBvcnRlZCBmb3IgIGEKKy8vISBmdXR1cmlzdGljIGNhbGVuZGFyIHRpbWUuIFRoZSBjYWxlbmRhciB0aW1lIGlzIG91dGxpbmVkIGluIHRlcm1zIG9mIHNlY29uZHMKKy8vISBhbmQgbWlsbGlzZWNvbmRzLgorLy8hCisvLyEgVGhlIGRldmljZSBwcm92aWRlcyB1c2VzIHRoZSBjYWxlbmRhciB2YWx1ZSB0aGF0IGhhcyBiZWVuIG1haW50YWluZWQgYWNyb3NzCisvLyEgYWN0aXZlIGFuZCBsb3cgcG93ZXIgc3RhdGVzIHRvIHJlcG9ydCBhdHRhaW5tZW50IG9mIGFsYXJtIHRpbWUuCisvLyEKKy8vISBUaGUgZnVuY3Rpb24gUFJDTVJUQ1NldCgpIG11c3QgaGF2ZSBiZWVuIGludm9rZWQgb25jZSB0byBzZXQgYSByZWZlcmVuY2UuCisvLyEKKy8vISBccmV0dXJuIE5vbmUuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgordm9pZCBQUkNNUlRDTWF0Y2hTZXQodW5zaWduZWQgbG9uZyB1bFNlY3MsIHVuc2lnbmVkIHNob3J0IHVzTXNlYykKK3sKKyAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHVsbE1zZWMgPSAwOworCisgICAgICAgIGlmKElTX1JUQ19VU0VEKCkpIHsKKyAgICAgICAgICAgICAgICB1bGxNc2VjICA9IFJUQ19VNjRNU0VDX01LKHVsU2VjcywgdXNNc2VjKTsKKyAgICAgICAgICAgICAgICB1bGxNc2VjIC09IFJUQ19VNjRNU0VDX01LKFJUQ19VMzJTRUNTX1JFR19SRCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlRDX1UxNk1TRUNfUkVHX1JEKCkpOworICAgICAgICAgICAgICAgIFNDQ19VNjRNU0VDX01BVENIX1NFVChTRUxFQ1RfU0NDX1U0MkJJVFModWxsTXNlYykpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuOworfQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8hIEdldCBhIHByZXZpb3VzbHkgc2V0IGNhbGVuZGFyIHRpbWUgYWxhcm0uCisvLyEKKy8vISBccGFyYW0gdWxTZWNzIHJlZmVycyB0byB0aGUgc2Vjb25kcyBwYXJ0IG9mIHRoZSAgY2FsZW5kYXIgdGltZQorLy8hIFxwYXJhbSB1c01zZWMgcmVmZXJzIHRvIHRoZSBmcmFjdGlvbmFsIChtcykgcGFydCBvZiB0aGUgc2Vjb25kCisvLyEKKy8vISBUaGlzIGZ1bmN0aW9uIGZldGNoZXMgZnJvbSB0aGUgZGV2aWNlIGEgd2FsbC1jbG9jayBhbGFybSB0aGF0IHdvdWxkICBoYXZlCisvLyEgYmVlbiBwcmV2aW91c2x5IHNldCBpbiB0aGUgZGV2aWNlLiBUaGUgY2FsZW5kYXIgdGltZSBpcyBvdXRsaW5lZCBpbiB0ZXJtcworLy8hIG9mIHNlY29uZHMgYW5kIG1pbGxpc2Vjb25kcy4KKy8vIQorLy8hIElmIG5vIGFsYXJtIHdhcyBzZXQgaW4gdGhlIHBhc3QsIHRoZW4gdGhpcyBmdW5jdGlvbiB3b3VsZCBmZXRjaCBhIHJhbmRvbQorLy8hIGluZm9ybWF0aW9uLgorLy8hCisvLyEgVGhlIGZ1bmN0aW9uIFBSQ01SVENNYXRjaFNldCgpIG11c3QgaGF2ZSBiZWVuIGludm9rZWQgb25jZSB0byBzZXQgYW4gYWxhcm0uCisvLyEKKy8vISBccmV0dXJuIE5vbmUuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgordm9pZCBQUkNNUlRDTWF0Y2hHZXQodW5zaWduZWQgbG9uZyAqdWxTZWNzLCB1bnNpZ25lZCBzaG9ydCAqdXNNc2VjKQoreworICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdWxsTXNlYyA9IDA7CisKKyAgICAgICAgaWYoSVNfUlRDX1VTRUQoKSkgeworICAgICAgICAgICAgICAgIHVsbE1zZWMgID0gU0NDX1U2NE1TRUNfTUFUQ0hfR0VUKCk7CisgICAgICAgICAgICAgICAgdWxsTXNlYyArPSBSVENfVTY0TVNFQ19NSyhSVENfVTMyU0VDU19SRUdfUkQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJUQ19VMTZNU0VDX1JFR19SRCgpKTsKKyAgICAgICAgfQorCisgICAgICAgICp1bFNlY3MgPSBSVENfU0VDU19JTl9VNjRNU0VDKHVsbE1zZWMpOworICAgICAgICAqdXNNc2VjID0gUlRDX01TRUNfSU5fVTY0TVNFQyh1bGxNc2VjKTsKKworICAgICAgICByZXR1cm47Cit9CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyEgTUNVIEluaXRpYWxpemF0aW9uIFJvdXRpbmUKKy8vIQorLy8hIFRoaXMgZnVuY3Rpb24gY29udGFpbnMgYWxsIHRoZSBtYW5kYXRvcnkgYnVnIGZpeGVzLCBFQ08gZW5hYmxlcywKKy8vISBpbml0aWFsaXphdGlvbnMgZm9yIGJvdGggQ0MzMjAwIGFuZCBDQzMyMjAuCisvLyEKKy8vISBcbm90ZSBcYiAjIyNJTVBPUlRBTlQjIyMgOiBUaGlzIGlzIGEgcm91dGluZSB3aGljaCBzaG91bGQgYmUgb25lIG9mIHRoZQorLy8hIGZpcnN0IHRoaW5ncyB0byBiZSBleGVjdXRlZCBhZnRlciBjb250cm9sIGNvbWVzIHRvIE1DVSBBcHBsaWNhdGlvbiBjb2RlLgorLy8hCisvLyEgXHJldHVybiBOb25lCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgordm9pZCBQUkNNQ0MzMjAwTUNVSW5pdCgpCit7CisKKyAgaWYoIFBSQ01TeXNSZXNldENhdXNlR2V0KCkgIT0gUFJDTV9MUERTX0VYSVQgKQorICB7CisgICAgaWYoIDB4MDAwMTAwMDEgPT0gSFdSRUcoMHgwMDAwMDQwMCkgKQorICAgIHsKKworI2lmbmRlZiBSRU1PVkVfQ0MzMjAwX0VTXzFfMl8xX0NPREUKKworICAgICAgdW5zaWduZWQgbG9uZyB1bFJlZ1ZhbDsKKworICAgICAgLy8KKyAgICAgIC8vIERJRyBEQ0RDIE5GRVQgU0VMIGFuZCBDT1QgbW9kZSBkaXNhYmxlCisgICAgICAvLworICAgICAgSFdSRUcoMHg0NDAyRjAxMCkgPSAweDMwMDMxODIwOworICAgICAgSFdSRUcoMHg0NDAyRjAwQykgPSAweDA0MDAwMDAwOworCisgICAgICBVdGlsc0RlbGF5KDMyMDAwKTsKKworICAgICAgLy8KKyAgICAgIC8vIEFOQSBEQ0RDIGNsb2NrIGNvbmZpZworICAgICAgLy8KKyAgICAgIEhXUkVHKDB4NDQwMkYxMUMpID0gMHgwOTk7CisgICAgICBIV1JFRygweDQ0MDJGMTFDKSA9IDB4MEFBOworICAgICAgSFdSRUcoMHg0NDAyRjExQykgPSAweDFBQTsKKworICAgICAgLy8KKyAgICAgIC8vIFBBIERDREMgY2xvY2sgY29uZmlnCisgICAgICAvLworICAgICAgSFdSRUcoMHg0NDAyRjEyNCkgPSAweDA5OTsKKyAgICAgIEhXUkVHKDB4NDQwMkYxMjQpID0gMHgwQUE7CisgICAgICBIV1JFRygweDQ0MDJGMTI0KSA9IDB4MUFBOworCisgICAgICAvLworICAgICAgLy8gVEQgRmxhc2ggdGltaW5nIGNvbmZpZ3VyYXRpb25zIGluIGNhc2Ugb2YgTUNVIFdEVCByZXNldAorICAgICAgLy8KKyAgICAgIGlmKChIV1JFRygweDQ0MDJEMDBDKSAmIDB4RkYpID09IDB4MDAwMDAwMDUpCisgICAgICB7CisgICAgICAgICAgSFdSRUcoMHg0MDBGNzA3QykgfD0gMHgwMTg0MDA4MjsKKyAgICAgICAgICBIV1JFRygweDQwMEY3MEM0KT0gMHgxOworICAgICAgICAgIEhXUkVHKDB4NDAwRjcwQzQpPSAweDA7CisgICAgICB9CisKKyAgICAgIC8vCisgICAgICAvLyBUYWtlIEkyQyBzZW1hcGhvcmUKKyAgICAgIC8vCisgICAgICB1bFJlZ1ZhbCA9IEhXUkVHKDB4NDAwRjcwMDApOworICAgICAgdWxSZWdWYWwgPSAodWxSZWdWYWwgJiB+MHgzKSB8IDB4MTsKKyAgICAgIEhXUkVHKDB4NDAwRjcwMDApID0gdWxSZWdWYWw7CisKKyAgICAgIC8vCisgICAgICAvLyBUYWtlIEdQSU8gc2VtYXBob3JlCisgICAgICAvLworICAgICAgdWxSZWdWYWwgPSBIV1JFRygweDQwMEY3MDNDKTsKKyAgICAgIHVsUmVnVmFsID0gKHVsUmVnVmFsICYgfjB4M0ZGKSB8IDB4MTU1OworICAgICAgSFdSRUcoMHg0MDBGNzAzQykgPSB1bFJlZ1ZhbDsKKworICAgICAgLy8KKyAgICAgIC8vIEVuYWJsZSAzMktIeiBpbnRlcm5hbCBSQyBvc2NpbGxhdG9yCisgICAgICAvLworICAgICAgUFJDTUhJQlJlZ1dyaXRlKEhJQjNQM19CQVNFK0hJQjNQM19PX01FTV9JTlRfT1NDX0NPTkYsIDB4MDAwMDAxMDEpOworCisgICAgICAvLworICAgICAgLy8gRGVsYXkgZm9yIGEgbGl0dGxlIGJpdC4KKyAgICAgIC8vCisgICAgICBVdGlsc0RlbGF5KDgwMDApOworCisgICAgICAvLworICAgICAgLy8gRW5hYmxlIDE2TUh6IGNsb2NrCisgICAgICAvLworICAgICAgSFdSRUcoSElCMVAyX0JBU0UrSElCMVAyX09fQ01fT1NDXzE2TV9DT05GSUcpID0gMHgwMDAxMDAwODsKKworICAgICAgLy8KKyAgICAgIC8vIERlbGF5IGZvciBhIGxpdHRsZSBiaXQuCisgICAgICAvLworICAgICAgVXRpbHNEZWxheSg4MDAwKTsKKworI2VuZGlmIC8vIFJFTU9WRV9DQzMyMDBfRVNfMV8yXzFfQ09ERQorCisgICAgfQorICAgIGVsc2UKKyAgICB7CisKKyAgICAgIHVuc2lnbmVkIGxvbmcgdWxSZWdWYWx1ZTsKKworICAgICAgLy8KKyAgICAgIC8vIERJRyBEQ0RDIExQRFMgRUNPIEVuYWJsZQorICAgICAgLy8KKyAgICAgIEhXUkVHKDB4NDQwMkYwNjQpIHw9IDB4ODAwMDAwOworCisgICAgICAvLworICAgICAgLy8gRW5hYmxlIGhpYmVybmF0ZSBFQ08gZm9yIFBHIDEuMzIgZGV2aWNlcyBvbmx5LiBXaXRoIHRoaXMgRUNPIGVuYWJsZWQsCisgICAgICAvLyBhbnkgaGliZXJuYXRlIHdha2V1cCBzb3VyY2Ugd2lsbCBiZSBrZXB0IG1ha2VkIHVudGlsIHRoZSBkZXZpY2UgZW50ZXJzCisgICAgICAvLyBoaWJlcm5hdGUgY29tcGxldGVseSAoYW5hbG9nICsgZGlnaXRhbCkKKyAgICAgIC8vCisgICAgICB1bFJlZ1ZhbHVlID0gUFJDTUhJQlJlZ1JlYWQoSElCM1AzX0JBU0UgICsgSElCM1AzX09fTUVNX0hJQl9SRUcwKTsKKyAgICAgIFBSQ01ISUJSZWdXcml0ZShISUIzUDNfQkFTRSArIEhJQjNQM19PX01FTV9ISUJfUkVHMCwgdWxSZWdWYWx1ZSB8ICgxPDw0KSk7CisKKyAgICAgIC8vCisgICAgICAvLyBIYW5kbGluZyB0aGUgY2xvY2sgc3dpdGNoaW5nIChmb3IgMS4zMiBvbmx5KQorICAgICAgLy8KKyAgICAgIEhXUkVHKDB4NDQwMkUxNkMpIHw9IDB4M0M7CisgICAgfQorCisKKyAgICAvLworICAgIC8vIEVuYWJsZSB1RE1BCisgICAgLy8KKyAgICBQUkNNUGVyaXBoZXJhbENsa0VuYWJsZShQUkNNX1VETUEsUFJDTV9SVU5fTU9ERV9DTEspOworCisgICAgLy8KKyAgICAvLyBSZXNldCB1RE1BCisgICAgLy8KKyAgICBQUkNNUGVyaXBoZXJhbFJlc2V0KFBSQ01fVURNQSk7CisKKyAgICAvLworICAgIC8vIERpc2FibGUgdURNQQorICAgIC8vCisgICAgUFJDTVBlcmlwaGVyYWxDbGtEaXNhYmxlKFBSQ01fVURNQSxQUkNNX1JVTl9NT0RFX0NMSyk7CisKKyAgICAvLworICAgIC8vIEVuYWJsZSBSVEMKKyAgICAvLworICAgIGlmKFBSQ01TeXNSZXNldENhdXNlR2V0KCk9PSBQUkNNX1BPV0VSX09OKQorICAgIHsKKyAgICAgICAgUFJDTUhJQlJlZ1dyaXRlKDB4NDQwMkY4MDQsMHgxKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIFNXRCBtb2RlCisgICAgLy8KKyAgICBpZigoKEhXUkVHKDB4NDQwMkYwQzgpICYgMHhGRikgPT0gMHgyKSkKKyAgICB7CisgICAgICAgIEhXUkVHKDB4NDQwMkUxMTApID0gKChIV1JFRygweDQ0MDJFMTEwKSAmIH4weEMwRikgfCAweDIpOworICAgICAgICBIV1JFRygweDQ0MDJFMTE0KSA9ICgoSFdSRUcoMHg0NDAyRTExMCkgJiB+MHhDMEYpIHwgMHgyKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIE92ZXJyaWRlIEpUQUcgbXV4CisgICAgLy8KKyAgICBIV1JFRygweDQ0MDJFMTg0KSB8PSAweDI7CisKKyAgICAvLworICAgIC8vIENoYW5nZSBVQVJUIHBpbnMoNTUsNTcpIG1vZGUgdG8gUElOX01PREVfMCBpZiB0aGV5IGFyZSBpbiBQSU5fTU9ERV8xCisgICAgLy8KKyAgICBpZiggKEhXUkVHKDB4NDQwMkUwQTQpICYgMHhGKSA9PSAweDEpCisgICAgeworICAgICAgICBIV1JFRygweDQ0MDJFMEE0KSA9ICgoSFdSRUcoMHg0NDAyRTBBNCkgJiB+MHhGKSk7CisgICAgfQorCisgICAgaWYoIChIV1JFRygweDQ0MDJFMEE4KSAmIDB4RikgPT0gMHgxKQorICAgIHsKKyAgICAgICAgSFdSRUcoMHg0NDAyRTBBOCkgPSAoKEhXUkVHKDB4NDQwMkUwQTgpICYgfjB4RikpOworICAgIH0KKworICAgIC8vCisgICAgLy8gRElHIERDREMgVk9VVCB0cmltIHNldHRpbmdzIGJhc2VkIG9uIFBST0NFU1MgSU5ESUNBVE9SCisgICAgLy8KKyAgICBpZigoKEhXUkVHKDB4NDQwMkRDNzgpID4+IDIyKSAmIDB4RikgPT0gMHhFKQorICAgIHsKKyAgICAgICAgSFdSRUcoMHg0NDAyRjBCMCkgPSAoKEhXUkVHKDB4NDQwMkYwQjApICYgfigweDAwRkMwMDAwKSl8KDB4MzIgPDwgMTgpKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgSFdSRUcoMHg0NDAyRjBCMCkgPSAoKEhXUkVHKDB4NDQwMkYwQjApICYgfigweDAwRkMwMDAwKSl8KDB4MjkgPDwgMTgpKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIEVuYWJsZSBTT0ZUIFJFU1RBUlQgaW4gY2FzZSBvZiBESUcgRENEQyBjb2xsYXBzZQorICAgIC8vCisgICAgSFdSRUcoMHg0NDAyRkM3NCkgJj0gfigweDEwMDAwMDAwKTsKKworICAgIC8vCisgICAgLy8gUmVxdWlyZWQgb25seSBpZiBST00gdmVyc2lvbiBpcyBsb3dlciB0aGFuIDIueC54CisgICAgLy8KKyAgICBpZiggKEhXUkVHKDB4MDAwMDA0MDApICYgMHhGRkZGKSA8IDIgKQorICAgIHsKKyAgICAgIC8vCisgICAgICAvLyBEaXNhYmxlIHRoZSBzbGVlcCBmb3IgQU5BIERDREMKKyAgICAgIC8vCisgICAgICBIV1JFRygweDQ0MDJGMEE4KSB8PSAweDAwMDAwMDA0IDsKKyAgICB9CisgICAgZWxzZSBpZiggKEhXUkVHKDB4MDAwMDA0MDApID4+IDE2KSAgPj0gMSApCisgICAgeworICAgICAgLy8KKyAgICAgIC8vIEVuYWJsZSBOV1AgZm9yY2UgcmVzZXQgYW5kIEhJQiBvbiBXRFQgcmVzZXQKKyAgICAgIC8vIEVuYWJsZSBkaXJlY3QgYm9vdCBwYXRoIGZvciBmbGFzaAorICAgICAgLy8KKyAgICAgIEhXUkVHKE9DUF9TSEFSRURfQkFTRSArIE9DUF9TSEFSRURfT19TUEFSRV9SRUdfOCkgfD0gKCg3PDw1KSB8IDB4MSk7CisgICAgICBpZigoSFdSRUcoSElCM1AzX0JBU0UgKyBISUIzUDNfT19NRU1fSElCX1JFRzIpICYgMHgxKSApCisgICAgICB7CisgICAgICAgICAgSFdSRUcoSElCM1AzX0JBU0UgKyBISUIzUDNfT19NRU1fSElCX1JFRzIpICY9IH4weDE7CisgICAgICAgICAgSFdSRUcoT0NQX1NIQVJFRF9CQVNFICsgT0NQX1NIQVJFRF9PX1NQQVJFX1JFR184KSB8PSAoMTw8OSk7CisKKyAgICAgICAgICAvLworICAgICAgICAgIC8vIENsZWFyIHRoZSBSVEMgaGliIHdha2UgdXAgc291cmNlCisgICAgICAgICAgLy8KKyAgICAgICAgICBIV1JFRyhISUIzUDNfQkFTRStISUIzUDNfT19NRU1fSElCX1JUQ19XQUtFX0VOKSAmPSB+MHgxOworCisgICAgICAgICAgLy8KKyAgICAgICAgICAvLyBSZXNldCBSVEMgbWF0Y2ggdmFsdWUKKyAgICAgICAgICAvLworICAgICAgICAgIEhXUkVHKEhJQjNQM19CQVNFICsgSElCM1AzX09fTUVNX0hJQl9SVENfV0FLRV9MU1dfQ09ORikgPSAwOworICAgICAgICAgIEhXUkVHKEhJQjNQM19CQVNFICsgSElCM1AzX09fTUVNX0hJQl9SVENfV0FLRV9NU1dfQ09ORikgPSAwOworCisgICAgICB9CisgICAgfQorCisgICAgdW5zaWduZWQgbG9uZyBlZnVzZV9yZWcyOworICAgIHVuc2lnbmVkIGxvbmcgdWxEZXZNYWpvclZlciwgdWxEZXZNaW5vclZlcjsKKyAgICAvLworICAgIC8vIFJlYWQgdGhlIGRldmljZSBpZGVudGlmaWNhdGlvbiByZWdpc3RlcgorICAgIC8vCisgICAgZWZ1c2VfcmVnMj0gSFdSRUcoR1BSQ01fQkFTRSArIEdQUkNNX09fR1BSQ01fRUZVU0VfUkVBRF9SRUcyKTsKKworICAgIC8vCisgICAgLy8gUmVhZCB0aGUgUk9NIG1vam9yIGFuZCBtaW5vciB2ZXJzaW9uCisgICAgLy8KKyAgICB1bERldk1ham9yVmVyID0gKChlZnVzZV9yZWcyID4+IDI4KSAmIDB4Rik7CisgICAgdWxEZXZNaW5vclZlciA9ICgoZWZ1c2VfcmVnMiA+PiAyNCkgJiAweEYpOworCisgICAgaWYoKCh1bERldk1ham9yVmVyID09IDB4MykgJiYgKHVsRGV2TWlub3JWZXIgPT0gMCkpIHx8ICh1bERldk1ham9yVmVyIDwgMHgzKSkKKyAgICB7CisgICAgICB1bnNpZ25lZCBpbnQgU2NyYXRjaCwgUHJlUmVndWxhdGVkTW9kZTsKKworICAgICAgLy8gMHg0NDAyRjg0MCA9PiA2dGggYml0IOKAnDHigJ0gaW5kaWNhdGVzIGRldmljZSBpcyBpbiBwcmUtcmVndWxhdGVkIG1vZGUuCisgICAgICBQcmVSZWd1bGF0ZWRNb2RlID0gKEhXUkVHKDB4NDQwMkY4NDApID4+IDYpICYgMTsKKworICAgICAgaWYoIFByZVJlZ3VsYXRlZE1vZGUpCisgICAgICB7CisgICAgICAgIFNjcmF0Y2ggPSBIV1JFRygweDQ0MDJGMDI4KTsKKyAgICAgICAgU2NyYXRjaCAmPSAweEZGRkZGRjdGOyAvLyA8Nzo3PiA9IDAKKyAgICAgICAgSFdSRUcoMHg0NDAyRjAyOCkgPSBTY3JhdGNoOworCisgICAgICAgIFNjcmF0Y2ggPSBIV1JFRygweDQ0MDJGMDEwKTsKKyAgICAgICAgU2NyYXRjaCAmPSAweDBGRkZGRkZGOyAvLyA8MzE6Mjg+ID0gMAorICAgICAgICBTY3JhdGNoIHw9IDB4MTAwMDAwMDA7IC8vIDwzMToyOD4gPSAxCisgICAgICAgIEhXUkVHKDB4NDQwMkYwMTApID0gU2NyYXRjaDsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgU2NyYXRjaCA9IEhXUkVHKDB4NDQwMkYwMjQpOworCisgICAgICAgIFNjcmF0Y2ggJj0gMHhGRkZGRkZGMDsgLy8gPDM6MD4gPSAwCisgICAgICAgIFNjcmF0Y2ggfD0gMHgwMDAwMDAwMTsgLy8gPDM6MD4gPSAxCisgICAgICAgIFNjcmF0Y2ggJj0gMHhGRkZGRjBGRjsgLy8gPDExOjg+ID0gMDAwMAorICAgICAgICBTY3JhdGNoIHw9IDB4MDAwMDA1MDA7IC8vIDwxMTo4PiA9IDAxMDEKKyAgICAgICAgU2NyYXRjaCAmPSAweEZGRkU3RkZGOyAvLyA8MTY6MTU+ID0gMDAwMAorICAgICAgICBTY3JhdGNoIHw9IDB4MDAwMTAwMDA7IC8vIDwxNjoxNT4gPSAxMAorCisgICAgICAgIEhXUkVHKDB4NDQwMkYwMjQpID0gU2NyYXRjaDsKKworICAgICAgICBTY3JhdGNoID0gSFdSRUcoMHg0NDAyRjAyOCk7CisKKyAgICAgICAgU2NyYXRjaCAmPSAweEZGRkZGRjdGOyAvLyA8Nzo3PiA9IDAKKyAgICAgICAgU2NyYXRjaCAmPSAweDBGRkZGRkZGOyAvLyA8MzE6Mjg+ID0gMAorICAgICAgICBTY3JhdGNoICY9IDB4RkYwRkZGRkY7IC8vIDwyMzoyMD4gPSAwCisgICAgICAgIFNjcmF0Y2ggfD0gMHgwMDMwMDAwMDsgLy8gPDIzOjIwPiA9IDAwMTEKKyAgICAgICAgU2NyYXRjaCAmPSAweEZGRjBGRkZGOyAvLyA8MTk6MTY+ID0gMAorICAgICAgICBTY3JhdGNoIHw9IDB4MDAwMzAwMDA7IC8vIDwxOToxNj4gPSAwMDExCisKKyAgICAgICAgSFdSRUcoMHg0NDAyRjAyOCkgPSBTY3JhdGNoOworICAgICAgICBIV1JFRygweDQ0MDJGMDEwKSAmPSAweDBGRkZGRkZGOyAvLyA8MzE6Mjg+ID0gMAorICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgdW5zaWduZWQgaW50IFNjcmF0Y2gsIFByZVJlZ3VsYXRlZE1vZGU7CisKKyAgICAgIC8vIDB4NDQwMkY4NDAgPT4gNnRoIGJpdCDigJwx4oCdIGluZGljYXRlcyBkZXZpY2UgaXMgaW4gcHJlLXJlZ3VsYXRlZCBtb2RlLgorICAgICAgUHJlUmVndWxhdGVkTW9kZSA9IChIV1JFRygweDQ0MDJGODQwKSA+PiA2KSAmIDE7CisKKyAgICAgIFNjcmF0Y2ggPSBIV1JFRygweDQ0MDJGMDI4KTsKKyAgICAgIFNjcmF0Y2ggJj0gMHhGRkZGRkY3RjsgLy8gPDc6Nz4gPSAwCisgICAgICBIV1JFRygweDQ0MDJGMDI4KSA9IFNjcmF0Y2g7CisKKyAgICAgIEhXUkVHKDB4NDQwMkYwMTApICY9IDB4MEZGRkZGRkY7IC8vIDwzMToyOD4gPSAwCisgICAgICBpZiggUHJlUmVndWxhdGVkTW9kZSkKKyAgICAgIHsKKyAgICAgICAgSFdSRUcoMHg0NDAyRjAxMCkgfD0gMHgxMDAwMDAwMDsgLy8gPDMxOjI4PiA9IDEKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgZWxzZQorICB7CisgICAgdW5zaWduZWQgbG9uZyB1bFJlZ1ZhbDsKKworICAgIC8vCisgICAgLy8gSTJDIENvbmZpZ3VyYXRpb24KKyAgICAvLworICAgIHVsUmVnVmFsID0gSFdSRUcoQ09NTU9OX1JFR19CQVNFICsgQ09NTU9OX1JFR19PX0kyQ19Qcm9wZXJ0aWVzX1JlZ2lzdGVyKTsKKyAgICB1bFJlZ1ZhbCA9ICh1bFJlZ1ZhbCAmIH4weDMpIHwgMHgxOworICAgIEhXUkVHKENPTU1PTl9SRUdfQkFTRSArIENPTU1PTl9SRUdfT19JMkNfUHJvcGVydGllc19SZWdpc3RlcikgPSB1bFJlZ1ZhbDsKKworICAgIC8vCisgICAgLy8gR1BJTyBjb25maWd1cmF0aW9uCisgICAgLy8KKyAgICB1bFJlZ1ZhbCA9IEhXUkVHKENPTU1PTl9SRUdfQkFTRSArIENPTU1PTl9SRUdfT19HUElPX3Byb3BlcnRpZXNfcmVnaXN0ZXIpOworICAgIHVsUmVnVmFsID0gKHVsUmVnVmFsICYgfjB4M0ZGKSB8IDB4MTU1OworICAgIEhXUkVHKENPTU1PTl9SRUdfQkFTRSArIENPTU1PTl9SRUdfT19HUElPX3Byb3BlcnRpZXNfcmVnaXN0ZXIpID0gdWxSZWdWYWw7CisKKyAgfQorfQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8hIFJlYWRzIDMyLWJpdCB2YWx1ZSBmcm9tIHJlZ2lzdGVyIGF0IHNwZWNpZmllZCBhZGRyZXNzCisvLyEKKy8vISBccGFyYW0gdWxSZWdBZGRyIGlzIHRoZSBhZGRyZXNzIG9mIHJlZ2lzdGVyIHRvIGJlIHJlYWQuCisvLyEKKy8vISBUaGlzIGZ1bmN0aW9uIHJlYWRzIDMyLWJpdCB2YWx1ZSBmcm9tIHRoZSByZWdpc3RlciBhcyBzcGVjaWZpZWQgYnkKKy8vISBcZSB1bFJlZ0FkZHIuCisvLyEKKy8vISBccmV0dXJuIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK3Vuc2lnbmVkIGxvbmcgUFJDTUhJQlJlZ1JlYWQodW5zaWduZWQgbG9uZyB1bFJlZ0FkZHIpCit7CisgIHVuc2lnbmVkIGxvbmcgdWxWYWx1ZTsKKworICAvLworICAvLyBSZWFkIHRoZSBSZWcgdmFsdWUKKyAgLy8KKyAgdWxWYWx1ZSA9IEhXUkVHKHVsUmVnQWRkcik7CisKKyAgLy8KKyAgLy8gV2FpdCBmb3IgMjAwIHVTZWMKKyAgLy8KKyAgVXRpbHNEZWxheSgoODAqMjAwKS8zKTsKKworICAvLworICAvLyBSZXR1cm4gdGhlIHZhbHVlCisgIC8vCisgIHJldHVybiB1bFZhbHVlOworfQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8hIFdyaXRlcyAzMi1iaXQgdmFsdWUgdG8gcmVnaXN0ZXIgYXQgc3BlY2lmaWVkIGFkZHJlc3MKKy8vIQorLy8hIFxwYXJhbSB1bFJlZ0FkZHIgaXMgdGhlIGFkZHJlc3Mgb2YgcmVnaXN0ZXIgdG8gYmUgcmVhZC4KKy8vISBccGFyYW0gdWxWYWx1ZSBpcyB0aGUgMzItYml0IHZhbHVlIHRvIGJlIHdyaXR0ZW4uCisvLyEKKy8vISBUaGlzIGZ1bmN0aW9uIHdyaXRlcyAzMi1iaXQgdmFsdWUgcGFzc2VkIGFzIFxlIHVsVmFsdWUgdG8gdGhlIHJlZ2lzdGVyIGFzCisvLyEgc3BlY2lmaWVkIGJ5IFxlIHVsUmVnQWRkcgorLy8hCisvLyEgXHJldHVybiBOb25lCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgordm9pZCBQUkNNSElCUmVnV3JpdGUodW5zaWduZWQgbG9uZyB1bFJlZ0FkZHIsIHVuc2lnbmVkIGxvbmcgdWxWYWx1ZSkKK3sKKyAgLy8KKyAgLy8gUmVhZCB0aGUgUmVnIHZhbHVlCisgIC8vCisgIEhXUkVHKHVsUmVnQWRkcikgPSB1bFZhbHVlOworCisgIC8vCisgIC8vIFdhaXQgZm9yIDIwMCB1U2VjCisgIC8vCisgIFV0aWxzRGVsYXkoKDgwKjIwMCkvMyk7Cit9CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyEgXHBhcmFtIHVsRGl2aWRlciBpcyBjbG9jayBmcmVxdWVuY3kgZGl2aWRlciB2YWx1ZQorLy8hIFxwYXJhbSB1bFdpZHRoIGlzIHRoZSB3aWR0aCBvZiB0aGUgaGlnaCBwdWxzZQorLy8hCisvLyEgVGhpcyBmdW5jdGlvbiBzZXRzIHRoZSBpbnB1dCBmcmVxdWVuY3kgZm9yIGNhbWVyYSBtb2R1bGUuCisvLyEKKy8vISBUaGUgZnJlcXVlbmN5IGlzIGNhbGN1bGF0ZWQgYXMgZm9sbG93czoKKy8vIQorLy8hICAgICAgICBmX291dCA9IDI0ME1Iei91bERpdmlkZXI7CisvLyEKKy8vISBUaGUgcGFyYW1ldGVyIFxlIHVsV2lkdGggc2V0cyB0aGUgd2lkdGggb2YgdGhlIGhpZ2ggcHVsc2UuCisvLyEKKy8vISBGb3IgZS5nLjoKKy8vIQorLy8hICAgICB1bERpdmlkZXIgPSA0OworLy8hICAgICB1bFdpZHRoICAgPSAyOworLy8hCisvLyEgICAgIGZfb3V0ID0gMzAgTUh6IGFuZCA1MCUgZHV0eSBjeWNsZQorLy8hCisvLyEgQW5kLAorLy8hCisvLyEgICAgIHVsRGl2aWRlciA9IDQ7CisvLyEgICAgIHVsV2lkdGggICA9IDE7CisvLyEKKy8vISAgICAgZl9vdXQgPSAzMCBNSHogYW5kIDI1JSBkdXR5IGN5Y2xlCisvLyEKKy8vISBccmV0dXJuIDAgb24gc3VjY2VzcywgMSBvbiBlcnJvcgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK3Vuc2lnbmVkIGxvbmcgUFJDTUNhbWVyYUZyZXFTZXQodW5zaWduZWQgY2hhciB1bERpdmlkZXIsIHVuc2lnbmVkIGNoYXIgdWxXaWR0aCkKK3sKKyAgICBpZih1bERpdmlkZXIgPiB1bFdpZHRoICYmIHVsV2lkdGggIT0gMCApCisgICAgeworICAgICAgLy8KKyAgICAgIC8vIFNldCAgdGhlIGhpZmggcHVsc2Ugd2lkdGgKKyAgICAgIC8vCisgICAgICBIV1JFRyhBUkNNX0JBU0UgKworICAgICAgICAgICAgQVBQU19SQ01fT19DQU1FUkFfQ0xLX0dFTikgPSAoKCh1bFdpZHRoICYgMHgwNykgLTEpIDw8IDgpOworCisgICAgICAvLworICAgICAgLy8gU2V0IHRoZSBsb3cgcHVsc2Ugd2lkdGgKKyAgICAgIC8vCisgICAgICBIV1JFRyhBUkNNX0JBU0UgKworICAgICAgICAgICAgQVBQU19SQ01fT19DQU1FUkFfQ0xLX0dFTikgPSAoKHVsRGl2aWRlciAtIHVsV2lkdGggLSAxKSAmIDB4MDcpOworICAgICAgLy8KKyAgICAgIC8vIFJldHVybiBzdWNjZXNzCisgICAgICAvLworICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBTdWNjZXNzOworICAgIC8vCisgICAgcmV0dXJuIDE7Cit9CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyEgRW5hYmxlIHRoZSBJTyB2YWx1ZSByZXRlbnRpb24KKy8vIQorLy8hIFxwYXJhbSB1bElPUmV0R3JwRmxhZ3MgaXMgb25lIG9mIHRoZSB2YWxpZCBJTyBncm91cHMuCisvLyEKKy8vISBUaGlzIGZ1bmN0aW9uIGVuYWJsZXMgdGhlIElPIHJldGVudGlvbiBmb3IgZ3JvdXAgb2YgcGlucyBhcyBzcGVjaWZpZWQgYnkKKy8vISBcZSB1bElPUmV0R3JwRmxhZ3MgcGFyYW1ldGVyLiBFbmFibGluZyByZXRlbnRpb24gd2lsbCBpbW1lZGlhdGVseSBsb2NrIHRoZQorLy8hIGRpZ2l0YWwgcGlucywgaW4gdGhlIHNwZWNpZmllZCBncm91cCwgdG8gdGhlaXIgY3VycmVudCBzdGF0ZSAoMCBvciAxKS4KKy8vISBPdXRwdXQgcGlucyBjYW4gb25seSBiZSBkcml2ZW4gd2hlbiByZXRlbnRpb24gaXMgZGlzYWJsZWQuCisvLyEKKy8vISBUaGUgcGFyYW1ldGVyIFxlIHVsSU9SZXRHcnBGbGFncyBjYW4gYmUgbG9naWNhbCBPUiBvZiBvbmUgb3IKKy8vISBtb3JlIG9mIHRoZSBmb2xsb3dpbmc6CisvLyEgLVxiIFBSQ01fSU9fUkVUX0dSUF8wIC0gQWxsIHRoZSBwaW5zIGV4Y2VwdCBzRmxhc2ggYW5kIEpUQUcgaW50ZXJmYWNlCisvLyEgLVxiIFBSQ01fSU9fUkVUX0dSUF8xIC0gc0ZsYXNoIGludGVyZmFjZSBwaW5zIDExLDEyLDEzLDE0CisvLyEgLVxiIFBSQ01fSU9fUkVUX0dSUF8yIC0gSlRBRyBUREkgYW5kIFRETyBpbnRlcmZhY2UgcGlucyAxNiwxNworLy8hIC1cYiBQUkNNX0lPX1JFVF9HUlBfMyAtIEpUQUcgVENLIGFuZCBUTVMgaW50ZXJmYWNlIHBpbnMgMTksMjAKKy8vIQorLy8hIFxub3RlIFVzZSBjYXNlIGlzIHRvIHBhcmsgdGhlIHBpbnMgd2hlbiBlbnRlcmluZyBISUIuCisvLyEKKy8vISBccmV0dXJuIE5vbmUuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgordm9pZCBQUkNNSU9SZXRlbnRpb25FbmFibGUodW5zaWduZWQgbG9uZyB1bElPUmV0R3JwRmxhZ3MpCit7CisgIHVuc2lnbmVkIGxvbmcgdWxSZWdWYWw7CisKKyAgLy8KKyAgLy8gU3VwcG9ydGVkIG9ubHkgaW4gRVMyLjAwIGFuZCBMYXRlciBkZXZpY2VzIGkuZS4gUk9NIFZlcnNpb24gMi54Lnggb3IgZ3JlYXRlcgorICAvLworICBpZiggKEhXUkVHKDB4MDAwMDA0MDApICYgMHhGRkZGKSA+PSAyICkKKyAgeworICAgIC8vCisgICAgLy8gRGlzYWJsZSBJTyBQYWQgdG8gT0RJIFBhdGgKKyAgICAvLworICAgIEhXUkVHKE9DUF9TSEFSRURfQkFTRSArIE9DUF9TSEFSRURfT19HUElPX1BBRF9DTU5fQ09ORklHKSB8PSAweDAwMDAxRDAwOworCisgICAgLy8KKyAgICAvLyAwYicwIGluIGJpdCA1IGZvciBKVEFHIFBBRFMKKyAgICAvLyAwYicwIGluIGJpdCAwIGZvciBhbGwgb3RoZXIgSU9zCisgICAgLy8KKyAgICBIV1JFRyhPQ1BfU0hBUkVEX0JBU0UgKyBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ01OX0NPTkZJRykgJj0gfigweDAwMDAwMDIzKTsKKworICAgIC8vCisgICAgLy8gRW5hYmxlIHJldGVudGlvbiBmb3IgR1JQMAorICAgIC8vCisgICAgaWYoIHVsSU9SZXRHcnBGbGFncyAmIFBSQ01fSU9fUkVUX0dSUF8wICkKKyAgICB7CisgICAgICB1bFJlZ1ZhbCAgPSBQUkNNSElCUmVnUmVhZChISUIzUDNfQkFTRStISUIzUDNfT19NRU1fUEFEX09FTl9SRVQzM19DT05GKTsKKyAgICAgIHVsUmVnVmFsIHw9IDB4NTsKKyAgICAgIFBSQ01ISUJSZWdXcml0ZShISUIzUDNfQkFTRStISUIzUDNfT19NRU1fUEFEX09FTl9SRVQzM19DT05GLHVsUmVnVmFsKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIEVuYWJsZSByZXRlbnRpb24gZm9yIEdSUDEKKyAgICAvLworICAgIGlmKCB1bElPUmV0R3JwRmxhZ3MgJiBQUkNNX0lPX1JFVF9HUlBfMSApCisgICAgeworICAgICAgdWxSZWdWYWwgID0gUFJDTUhJQlJlZ1JlYWQoSElCM1AzX0JBU0UgICsgSElCM1AzX09fTUVNX0hJQl9SRUcwKTsKKyAgICAgIHVsUmVnVmFsIHw9ICgoMHgzPDw1KSk7CisgICAgICBQUkNNSElCUmVnV3JpdGUoSElCM1AzX0JBU0UgICsgSElCM1AzX09fTUVNX0hJQl9SRUcwLHVsUmVnVmFsKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIEVuYWJsZSByZXRlbnRpb24gZm9yIEdSUDIKKyAgICAvLworICAgIGlmKCB1bElPUmV0R3JwRmxhZ3MgJiBQUkNNX0lPX1JFVF9HUlBfMiApCisgICAgeworICAgICAgdWxSZWdWYWwgID0gUFJDTUhJQlJlZ1JlYWQoSElCM1AzX0JBU0UgICsgSElCM1AzX09fTUVNX0pUQUdfQ09ORik7CisgICAgICB1bFJlZ1ZhbCB8PSAweDAwMDAwMTAxOworICAgICAgUFJDTUhJQlJlZ1dyaXRlKEhJQjNQM19CQVNFICArIEhJQjNQM19PX01FTV9KVEFHX0NPTkYsdWxSZWdWYWwpOworICAgIH0KKworICAgIC8vCisgICAgLy8gRW5hYmxlIHJldGVudGlvbiBmb3IgR1JQMworICAgIC8vCisgICAgaWYoIHVsSU9SZXRHcnBGbGFncyAmIFBSQ01fSU9fUkVUX0dSUF8zICkKKyAgICB7CisgICAgICAgdWxSZWdWYWwgID0gUFJDTUhJQlJlZ1JlYWQoSElCM1AzX0JBU0UgICsgSElCM1AzX09fTUVNX0pUQUdfQ09ORik7CisgICAgICAgdWxSZWdWYWwgfD0gMHgwMDAwMDIwNDsKKyAgICAgICBQUkNNSElCUmVnV3JpdGUoSElCM1AzX0JBU0UgICsgSElCM1AzX09fTUVNX0pUQUdfQ09ORix1bFJlZ1ZhbCk7CisgICAgfQorICB9Cit9CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyEgRGlzYWJsZSB0aGUgSU8gdmFsdWUgcmV0ZW50aW9uCisvLyEKKy8vISBccGFyYW0gdWxJT1JldEdycEZsYWdzIGlzIG9uZSBvZiB0aGUgdmFsaWQgSU8gZ3JvdXBzLgorLy8hCisvLyEgVGhpcyBmdW5jdGlvbiBkaXNhYmxlIHRoZSBJTyByZXRlbnRpb24gZm9yIGdyb3VwIG9mIHBpbnMgYXMgc3BlY2lmaWVkIGJ5CisvLyEgXGUgdWxJT1JldEdycEZsYWdzIHBhcmFtZXRlci4gRGlzYWJsaW5nIHJldGVudGlvbiB3aWxsIHVubG9jayB0aGUKKy8vISBkaWdpdGFsIHBpbnMgaW4gdGhlIHNwZWNpZmllZCBncm91cC4gT3V0cHV0IHBpbnMgY2FuIG9ubHkgYmUgZHJpdmVuIHdoZW4KKy8vISByZXRlbnRpb24gaXMgZGlzYWJsZWQuCisvLyEKKy8vISBUaGUgcGFyYW1ldGVyIFxlIHVsSU9SZXRHcnBGbGFncyBjYW4gYmUgbG9naWNhbCBPUiBvZiBvbmUgb3IKKy8vISBtb3JlIG9mIHRoZSBmb2xsb3dpbmc6CisvLyEgLVxiIFBSQ01fSU9fUkVUX0dSUF8wIC0gQWxsIHRoZSBwaW5zIGV4Y2VwdCBzRmxhc2ggYW5kIEpUQUcgaW50ZXJmYWNlCisvLyEgLVxiIFBSQ01fSU9fUkVUX0dSUF8xIC0gc0ZsYXNoIGludGVyZmFjZSBwaW5zIDExLDEyLDEzLDE0CisvLyEgLVxiIFBSQ01fSU9fUkVUX0dSUF8yIC0gSlRBRyBUREkgYW5kIFRETyBpbnRlcmZhY2UgcGlucyAxNiwxNworLy8hIC1cYiBQUkNNX0lPX1JFVF9HUlBfMyAtIEpUQUcgVENLIGFuZCBUTVMgaW50ZXJmYWNlIHBpbnMgMTksMjAKKy8vIQorLy8hIFxub3RlIFVzZSBjYXNlIGlzIHRvIHVuLXBhcmsgdGhlIHBpbnMgd2hlbiBleGl0aW5nIEhJQgorLy8hCisvLyEgXHJldHVybiBOb25lLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK3ZvaWQgUFJDTUlPUmV0ZW50aW9uRGlzYWJsZSh1bnNpZ25lZCBsb25nIHVsSU9SZXRHcnBGbGFncykKK3sKKyAgdW5zaWduZWQgbG9uZyB1bFJlZ1ZhbDsKKworICAvLworICAvLyBTdXBwb3J0ZWQgb25seSBpbiBFUzIuMDAgYW5kIExhdGVyIGRldmljZXMgaS5lLiBST00gVmVyc2lvbiAyLngueCBvciBncmVhdGVyCisgIC8vCisgIGlmKCAoSFdSRUcoMHgwMDAwMDQwMCkgJiAweEZGRkYpID49IDIgKQorICB7CisKKyAgICAvLworICAgIC8vIEVuYWJsZSBJTyBQYWQgdG8gT0RJIFBhdGgKKyAgICAvLworICAgIEhXUkVHKE9DUF9TSEFSRURfQkFTRSArIE9DUF9TSEFSRURfT19HUElPX1BBRF9DTU5fQ09ORklHKSAmPSB+KDB4MDAwMDFEMDApOworCisgICAgLy8KKyAgICAvLyAwYicxIGluIGJpdCA1IGZvciBKVEFHIFBBRFMKKyAgICAvLyAwYicxIGluIGJpdCAwIGZvciBhbGwgb3RoZXIgSU9zCisgICAgLy8KKyAgICBIV1JFRyhPQ1BfU0hBUkVEX0JBU0UgKyBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ01OX0NPTkZJRykgfD0gMHgwMDAwMDAyMzsKKworICAgIC8vCisgICAgLy8gRGlzYWJsZSByZXRlbnRpb24gZm9yIEdSUDAKKyAgICAvLworICAgIGlmKCB1bElPUmV0R3JwRmxhZ3MgJiBQUkNNX0lPX1JFVF9HUlBfMCApCisgICAgeworICAgICAgdWxSZWdWYWwgID0gUFJDTUhJQlJlZ1JlYWQoSElCM1AzX0JBU0UrSElCM1AzX09fTUVNX1BBRF9PRU5fUkVUMzNfQ09ORik7CisgICAgICB1bFJlZ1ZhbCAmPSB+MHg1OworICAgICAgUFJDTUhJQlJlZ1dyaXRlKEhJQjNQM19CQVNFK0hJQjNQM19PX01FTV9QQURfT0VOX1JFVDMzX0NPTkYsdWxSZWdWYWwpOworICAgIH0KKworICAgIC8vCisgICAgLy8gRGlzYWJsZSByZXRlbnRpb24gZm9yIEdSUDEKKyAgICAvLworICAgIGlmKCB1bElPUmV0R3JwRmxhZ3MgJiBQUkNNX0lPX1JFVF9HUlBfMSApCisgICAgeworICAgICAgdWxSZWdWYWwgID0gUFJDTUhJQlJlZ1JlYWQoSElCM1AzX0JBU0UgKyBISUIzUDNfT19NRU1fSElCX1JFRzApOworICAgICAgdWxSZWdWYWwgJj0gfigoMHgzPDw1KSk7CisgICAgICBQUkNNSElCUmVnV3JpdGUoSElCM1AzX0JBU0UgKyBISUIzUDNfT19NRU1fSElCX1JFRzAsdWxSZWdWYWwpOworICAgIH0KKworICAgIC8vCisgICAgLy8gRGlzYWJsZSByZXRlbnRpb24gZm9yIEdSUDIKKyAgICAvLworICAgIGlmKCB1bElPUmV0R3JwRmxhZ3MgJiBQUkNNX0lPX1JFVF9HUlBfMiApCisgICAgeworICAgICAgdWxSZWdWYWwgID0gUFJDTUhJQlJlZ1JlYWQoSElCM1AzX0JBU0UgICsgSElCM1AzX09fTUVNX0pUQUdfQ09ORik7CisgICAgICB1bFJlZ1ZhbCAmPSB+MHgwMDAwMDEwMTsKKyAgICAgIFBSQ01ISUJSZWdXcml0ZShISUIzUDNfQkFTRSAgKyBISUIzUDNfT19NRU1fSlRBR19DT05GLHVsUmVnVmFsKTsKKworICAgIH0KKworICAgIC8vCisgICAgLy8gRGlzYWJsZSByZXRlbnRpb24gZm9yIEdSUDMKKyAgICAvLworICAgIGlmKCB1bElPUmV0R3JwRmxhZ3MgJiBQUkNNX0lPX1JFVF9HUlBfMyApCisgICAgeworICAgICAgdWxSZWdWYWwgID0gUFJDTUhJQlJlZ1JlYWQoSElCM1AzX0JBU0UgICsgSElCM1AzX09fTUVNX0pUQUdfQ09ORik7CisgICAgICB1bFJlZ1ZhbCAmPSB+MHgwMDAwMDIwNDsKKyAgICAgIFBSQ01ISUJSZWdXcml0ZShISUIzUDNfQkFTRSAgKyBISUIzUDNfT19NRU1fSlRBR19DT05GLHVsUmVnVmFsKTsKKyAgICB9CisKKyAgfQorfQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8hIEdldHMgdGhlIGRldmljZSB0eXBlCisvLyEKKy8vISBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYml0LXBhY2tlZCB2YWx1ZSByZXByZXNlbnRpbmcgdGhlIGRldmljZSB0eXBlCisvLyEKKy8vISBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgbG9naWNhbCBPUiBvZiBvbmUgb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5nOi0KKy8vIQorLy8hIC1cYiBQUkNNX0RFVl9UWVBFX0ZMQUdfUiAgICAgICAgLSBSIHZhcmlhbnQKKy8vISAtXGIgUFJDTV9ERVZfVFlQRV9GTEFHX0YgICAgICAgIC0gRiB2YXJpYW50CisvLyEgLVxiIFBSQ01fREVWX1RZUEVfRkxBR19aICAgICAgICAtIFogdmFyaWFudAorLy8hIC1cYiBQUkNNX0RFVl9UWVBFX0ZMQUdfU0VDVVJFICAgLSBEZXZpY2UgaXMgc2VjdXJlCisvLyEgLVxiIFBSQ01fREVWX1RZUEVfRkxBR19QUkVfUFJPRCAtIERldmljZSBpcyBhIHByZS1wcm9kdWN0aW9uIHBhcnQKKy8vISAtXGIgUFJDTV9ERVZfVFlQRV9GTEFHXzMyMDAgICAgIC0gRGV2aWNlIGlzIENDMzIwMAorLy8hIC1cYiBQUkNNX0RFVl9UWVBFX0ZMQUdfMzIyMCAgICAgLSBEZXZpY2UgaXMgQ0MzMjIwCisvLyEgLVxiIFBSQ01fREVWX1RZUEVfRkxBR19SRVYxICAgICAtIERldmljZSBSZXYgMQorLy8hIC1cYiBQUkNNX0RFVl9UWVBFX0ZMQUdfUkVWMiAgICAgLSBEZXZpY2UgUmV2IDIKKy8vIQorLy8hIFByZS1kZWZpbmVkIGhlbHBlciBtYWNyb3M6LQorLy8hCisvLyEgLVxiIFBSQ01fREVWX1RZUEVfUFJFX0NDMzIwMFIgICAtIFByZS1Qcm9kdWN0aW9uIENDMzIwMFIKKy8vISAtXGIgUFJDTV9ERVZfVFlQRV9QUkVfQ0MzMjAwRiAgIC0gUHJlLVByb2R1Y3Rpb24gQ0MzMjAwRgorLy8hIC1cYiBQUkNNX0RFVl9UWVBFX1BSRV9DQzMyMDBaICAgLSBQcmUtUHJvZHVjdGlvbiBDQzMyMDBaCisvLyEgLVxiIFBSQ01fREVWX1RZUEVfQ0MzMjAwUiAgICAgICAtIFByb2R1Y3Rpb24gQ0MzMjAwUgorLy8hIC1cYiBQUkNNX0RFVl9UWVBFX1BSRV9DQzMyMjBSICAgLSBQcmUtUHJvZHVjdGlvbiBDQzMyMjBSCisvLyEgLVxiIFBSQ01fREVWX1RZUEVfUFJFX0NDMzIyMEYgICAtIFByZS1Qcm9kdWN0aW9uIENDMzIyMEYKKy8vISAtXGIgUFJDTV9ERVZfVFlQRV9QUkVfQ0MzMjIwWiAgIC0gUHJlLVByb2R1Y3Rpb24gQ0MzMjIwWgorLy8hIC1cYiBQUkNNX0RFVl9UWVBFX0NDMzIyMFIgICAgICAgLSBQcm9kdWN0aW9uIENDMzIyMFIKKy8vISAtXGIgUFJDTV9ERVZfVFlQRV9QUkVfQ0MzMjIwUlMgIC0gUHJlLVByb2R1Y3Rpb24gQ0MzMjIwUlMKKy8vISAtXGIgUFJDTV9ERVZfVFlQRV9QUkVfQ0MzMjIwRlMgIC0gUHJlLVByb2R1Y3Rpb24gQ0MzMjIwRlMKKy8vISAtXGIgUFJDTV9ERVZfVFlQRV9QUkVfQ0MzMjIwWlMgIC0gUHJlLVByb2R1Y3Rpb24gQ0MzMjIwWlMKKy8vISAtXGIgUFJDTV9ERVZfVFlQRV9DQzMyMjBSUyAgICAgIC0gUHJvZHVjdGlvbiBDQzMyMjBSUworLy8hIC1cYiBQUkNNX0RFVl9UWVBFX0NDMzIyMEZTICAgICAgLSBQcm9kdWN0aW9uIENDMzIyMEZTCisvLyEKKy8vISBccmV0dXJuICBSZXR1cm5zLCBiaXQtcGFja2VkIHZhbHVlIHJlcHJlc2VudGluZyB0aGUgZGV2aWNlIHR5cGUsCisvLyEgb3IgMCBpZiBkZXZpY2UgaXMgdW5rbm93bgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK3Vuc2lnbmVkIGxvbmcgUFJDTURldmljZVR5cGVHZXQoKQoreworICB1bnNpZ25lZCBsb25nIHVsRGV2VHlwZTsKKyAgdW5zaWduZWQgbG9uZyB1bENoaXBJZDsKKyAgdW5zaWduZWQgbG9uZyB1bERldk1ham9yVmVyOworICB1bnNpZ25lZCBsb25nIHVsRGV2TWlub3JWZXI7CisKKyAgLy8KKyAgLy8gUmVhZCB0aGUgZGV2aWNlIGlkZW50aWZpY2F0aW9uIHJlZ2lzdGVyCisgIC8vCisgIHVsQ2hpcElkID0gSFdSRUcoR1BSQ01fQkFTRSArIEdQUkNNX09fR1BSQ01fRUZVU0VfUkVBRF9SRUcyKTsKKworICAvLworICAvLyBSZWFkIHRoZSBST00gbW9qb3IgYW5kIG1pbm9yIHZlcnNpb24KKyAgLy8KKyAgdWxEZXZNYWpvclZlciA9ICgodWxDaGlwSWQgPj4gMjgpICYgMHhGKTsKKyAgdWxEZXZNaW5vclZlciA9ICgodWxDaGlwSWQgPj4gMjQpICYgMHhGKTsKKworCisgIHVsQ2hpcElkID0gKChIV1JFRyhHUFJDTV9CQVNFICsgR1BSQ01fT19HUFJDTV9FRlVTRV9SRUFEX1JFRzIpID4+IDE2KSAmIDB4MUYpOworCisgIC8vCisgIC8vIEdldCB0aGUgZGV2aWNlIHZhcmlhbnQgZnJvbSB0aGUgY2hpcCBpZAorICAvLworICBzd2l0Y2goKHVsQ2hpcElkICYgMHhGKSkKKyAgeworICAgIC8vCisgICAgLy8gSXQgaXMgUiB2YXJpYW50CisgICAgLy8KKyAgICBjYXNlIDB4MDoKKyAgICAgIHVsRGV2VHlwZSA9IFBSQ01fREVWX1RZUEVfRkxBR19SOworICAgICAgYnJlYWs7CisKKyAgICAvLworICAgIC8vIEl0IGlzIEYgdmFyaWFudCwgbm9uIHNlY3VyZSBGIHZhcmlhbnQgaXMgYWx3YXlzIFByZS1Qcm9kdWN0aW9uCisgICAgLy8KKyAgICBjYXNlIDB4MToKKyAgICAgIHVsRGV2VHlwZSA9IFBSQ01fREVWX1RZUEVfRkxBR19GfFBSQ01fREVWX1RZUEVfRkxBR19QUkVfUFJPRDsKKyAgICAgIGJyZWFrOworCisgICAgLy8KKyAgICAvLyBJdCBpcyBaIHZhcmlhbnQgYW5kIGlzIGFsd2F5cyBQcmUtUHJvZHVjdGlvbgorICAgIC8vCisgICAgY2FzZSAweDM6CisgICAgICB1bERldlR5cGUgPSBQUkNNX0RFVl9UWVBFX0ZMQUdfWnxQUkNNX0RFVl9UWVBFX0ZMQUdfUFJFX1BST0Q7CisgICAgICBicmVhazsKKworICAgIC8vCisgICAgLy8gSXQgaXMgU2VjdXJlIFIKKyAgICAvLworICAgIGNhc2UgMHg4OgorICAgICAgdWxEZXZUeXBlID0gUFJDTV9ERVZfVFlQRV9GTEFHX1J8UFJDTV9ERVZfVFlQRV9GTEFHX1NFQ1VSRTsKKyAgICAgIGJyZWFrOworCisgICAgLy8KKyAgICAvLyBJdCBpcyBTZWN1cmUgRgorICAgIC8vCisgICAgY2FzZSAweDk6CisgICAgICB1bERldlR5cGUgPSBQUkNNX0RFVl9UWVBFX0ZMQUdfRnxQUkNNX0RFVl9UWVBFX0ZMQUdfU0VDVVJFOworICAgICAgYnJlYWs7CisKKyAgICAvLworICAgIC8vIEl0IGlzIHNlY3VyZSBaIHZhcmlhbnQgYW5kIHZhcmlhbnQgaXMgYWx3YXlzIFByZS1Qcm9kdWN0aW9uCisgICAgLy8KKyAgICBjYXNlIDB4QjoKKyAgICAgIHVsRGV2VHlwZSA9IFBSQ01fREVWX1RZUEVfRkxBR19afFBSQ01fREVWX1RZUEVfRkxBR19TRUNVUkV8CisgICAgICAgICAgICAgICAgICBQUkNNX0RFVl9UWVBFX0ZMQUdfUFJFX1BST0Q7CisgICAgICBicmVhazsKKworICAgIC8vCisgICAgLy8gVW5kZWZpbmVkIHZhcmlhbnQKKyAgICAvLworICAgIGRlZmF1bHQ6CisgICAgICB1bERldlR5cGUgPSAweDA7CisgIH0KKworICBpZiggdWxEZXZUeXBlICE9IDAgKQorICB7CisgICAgaWYoIHVsRGV2TWFqb3JWZXIgPT0gMHgzICkKKyAgICB7CisgICAgICB1bERldlR5cGUgfD0gUFJDTV9ERVZfVFlQRV9GTEFHXzMyMjA7CisgICAgfQorICAgIGVsc2UgaWYoIHVsRGV2TWFqb3JWZXIgPT0gMHgyICkKKyAgICB7CisgICAgICB1bERldlR5cGUgIHw9IChQUkNNX0RFVl9UWVBFX0ZMQUdfUFJFX1BST0R8UFJDTV9ERVZfVFlQRV9GTEFHXzMyMjApOworCisgICAgICBpZiggKCh1bERldlR5cGUgJiBQUkNNX0RFVl9UWVBFX0ZMQUdfWikgIT0gMCkgKQorICAgICAgeworICAgICAgICBpZigodWxEZXZNaW5vclZlciA9PSAweDApKQorICAgICAgICB7CisgICAgICAgICAgdWxEZXZUeXBlIHw9IFBSQ01fREVWX1RZUEVfRkxBR19SRVYxOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIHVsRGV2VHlwZSB8PSBQUkNNX0RFVl9UWVBFX0ZMQUdfUkVWMjsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICBpZigodWxEZXZNaW5vclZlciA9PSAweDEpKQorICAgICAgICB7CisgICAgICAgICAgdWxEZXZUeXBlIHw9IFBSQ01fREVWX1RZUEVfRkxBR19SRVYxOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICBpZiggKHVsRGV2TWlub3JWZXIgPT0gMHg0KSkKKyAgICAgIHsKKyAgICAgICAgaWYoICgodWxEZXZUeXBlICYgUFJDTV9ERVZfVFlQRV9GTEFHX1opICE9IDApKQorICAgICAgICB7CisgICAgICAgICAgdWxEZXZUeXBlIHw9IChQUkNNX0RFVl9UWVBFX0ZMQUdfUFJFX1BST0R8UFJDTV9ERVZfVFlQRV9GTEFHXzMyMjApOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIHVsRGV2VHlwZSB8PSBQUkNNX0RFVl9UWVBFX0ZMQUdfMzIwMDsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICB1bERldlR5cGUgfD0gKFBSQ01fREVWX1RZUEVfRkxBR19QUkVfUFJPRHxQUkNNX0RFVl9UWVBFX0ZMQUdfMzIwMCk7CisgICAgICB9CisgICAgfQorICB9CisKKworICByZXR1cm4gdWxEZXZUeXBlOworfQorCisKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8hIFVzZWQgdG8gdHJpZ2dlciBhIGhpYmVybmF0ZSBjeWNsZSBmb3IgdGhlIGRldmljZSB1c2luZyBSVEMKKy8vIQorLy8hIFRoaXMgQVBJIGNhbiBiZSB1c2VkIHRvIGRvIGEgY2xlYW4gcmVib290IG9mIGRldmljZS4KKy8vIQorLy8hIFxub3RlIFRoaXMgcm91dGluZSBzaG91bGQgb25seSBiZSBleGVyY2lzZWQgYWZ0ZXIgYWxsIHRoZSBuZXR3b3JrIHByb2Nlc3NpbmcKKy8vISBoYXMgYmVlbiBzdG9wcGVkLiBUbyBzdG9wIG5ldHdvcmsgcHJvY2Vzc2luZyB1c2UgXGIgc2xfc3RvcCBBUEkgZnJvbQorLy8hIHNpbXBsZWxpbmsgbGlicmFyeS4KKy8vIQorLy8hIFxyZXR1cm4gTm9uZQorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgordm9pZCBQUkNNSGliZXJuYXRlQ3ljbGVUcmlnZ2VyKCkKK3sKKyAgdW5zaWduZWQgbG9uZyB1bFJlZ1ZhbHVlOworICB1bnNpZ25lZCBsb25nIGxvbmcgdWxsUlRDVmFsOworCisgIC8vCisgIC8vIFJlYWQgdGhlIFJUQyByZWdpc3RlcgorICAvLworICB1bFJlZ1ZhbHVlID0gUFJDTUhJQlJlZ1JlYWQoSElCM1AzX0JBU0UrSElCM1AzX09fTUVNX0hJQl9SVENfV0FLRV9FTik7CisKKyAgLy8KKyAgLy8gRW5hYmxlIHRoZSBSVEMgYXMgd2FrZXVwIHNvdXJjZSBpZiBzcGVjaWZpZWQKKyAgLy8KKyAgdWxSZWdWYWx1ZSB8PSAoUFJDTV9ISUJfU0xPV19DTEtfQ1RSICYgMHgxKTsKKworICAvLworICAvLyBFbmFibGUgSElCIHdha2V1cCBzb3VyY2VzCisgIC8vCisgIFBSQ01ISUJSZWdXcml0ZShISUIzUDNfQkFTRStISUIzUDNfT19NRU1fSElCX1JUQ19XQUtFX0VOLHVsUmVnVmFsdWUpOworCisgIC8vCisgIC8vIExhdGNoIHRoZSBSVEMgdmxhdWUKKyAgLy8KKyAgUFJDTUhJQlJlZ1dyaXRlKEhJQjNQM19CQVNFK0hJQjNQM19PX01FTV9ISUJfUlRDX1RJTUVSX1JFQUQgLDB4MSk7CisKKyAgLy8KKyAgLy8gUmVhZCBsYXRjaGVkIHZhbHVlcyBhcyAyIDMyLWJpdCB2bGF1ZXMKKyAgLy8KKyAgdWxsUlRDVmFsICA9IFBSQ01ISUJSZWdSZWFkKEhJQjNQM19CQVNFICsgSElCM1AzX09fTUVNX0hJQl9SVENfVElNRVJfTVNXKTsKKyAgdWxsUlRDVmFsICA9IHVsbFJUQ1ZhbCA8PCAzMjsKKyAgdWxsUlRDVmFsIHw9IFBSQ01ISUJSZWdSZWFkKEhJQjNQM19CQVNFK0hJQjNQM19PX01FTV9ISUJfUlRDX1RJTUVSX0xTVyk7CisKKyAgLy8KKyAgLy9Db25zaWRlcmluZyB3b3JzdCBjYXNlIGV4ZWN1dGlvbiB0aW1lcyBvZiBST00sUkFNLEZsYXNoIHZhbHVlIG9mIDE2MCBpcyB1c2VkCisgIC8vCisgIHVsbFJUQ1ZhbCA9IHVsbFJUQ1ZhbCArIDE2MDsKKworICAvLworICAvLyBTZXQgUlRDIG1hdGNoIHZhbHVlCisgIC8vCisgIFBSQ01ISUJSZWdXcml0ZShISUIzUDNfQkFTRStISUIzUDNfT19NRU1fSElCX1JUQ19XQUtFX0xTV19DT05GLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykodWxsUlRDVmFsKSk7CisgIFBSQ01ISUJSZWdXcml0ZShISUIzUDNfQkFTRStISUIzUDNfT19NRU1fSElCX1JUQ19XQUtFX01TV19DT05GLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSh1bGxSVENWYWw+PjMyKSk7CisgIC8vCisgIC8vIE5vdGUgOiBBbnkgYWRkaXRpb24gb2YgY29kZSBhZnRlciB0aGlzIGxpbmUgd291bGQgbmVlZCBhIGNoYW5nZSBpbgorICAvLyB1bGxUaWNrcyBJbnRlcnZhbCBjdXJyZW50bHkgc2V0IHRvIDE2MAorICAvLworCisgIC8vCisgIC8vIFJlcXVlc3QgaGliZXJuYXRlLgorICAvLworICBQUkNNSElCUmVnV3JpdGUoKEhJQjNQM19CQVNFK0hJQjNQM19PX01FTV9ISUJfUkVRKSwweDEpOworCisgIC8vCisgIC8vIFdhaXQgZm9yIHN5c3RlbSB0byBlbnRlciBoaWJlcm5hdGUKKyAgLy8KKyAgX19hc20oIiAgICB3ZmlcbiIpOworCisgIC8vCisgIC8vIEluZmluaXRlIGxvb3AKKyAgLy8KKyAgd2hpbGUoMSkKKyAgeworCisgIH0KK30KKworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gQ2xvc2UgdGhlIERveHlnZW4gZ3JvdXAuCisvLyEgQH0KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCmRpZmYgLS1naXQgYS9leHQvaGFsL3RpL2NjMzIyMHNkay9kcml2ZXJsaWIvcHJjbS5oIGIvZXh0L2hhbC90aS9jYzMyMjBzZGsvZHJpdmVybGliL3ByY20uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2UyNGZmCi0tLSAvZGV2L251bGwKKysrIGIvZXh0L2hhbC90aS9jYzMyMjBzZGsvZHJpdmVybGliL3ByY20uaApAQCAtMCwwICsxLDM2OCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTYgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkIC0gaHR0cDovL3d3dy50aS5jb20vCisgKgorICogIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogIGFyZSBtZXQ6CisgKgorICogICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAgICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogICAgTmVpdGhlciB0aGUgbmFtZSBvZiBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgbm9yIHRoZSBuYW1lcyBvZgorICogICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqICBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqICBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqICBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiAgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyAgcHJjbS5oCisvLworLy8gIFByb3RvdHlwZXMgZm9yIHRoZSBQUkNNIGNvbnRyb2wgZHJpdmVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworI2lmbmRlZiBfX1BSQ01fSF9fCisjZGVmaW5lIF9fUFJDTV9IX18KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIElmIGJ1aWxkaW5nIHdpdGggYSBDKysgY29tcGlsZXIsIG1ha2UgYWxsIG9mIHRoZSBkZWZpbml0aW9ucyBpbiB0aGlzIGhlYWRlcgorLy8gaGF2ZSBhIEMgYmluZGluZy4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKK3sKKyNlbmRpZgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gUGVyaXBoZXJhbCBjbG9jayBhbmQgcmVzZXQgY29udHJvbCByZWdpc3RlcnMKKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit0eXBlZGVmIHN0cnVjdCBfUFJDTV9QZXJpcGhlcmFsUmVnc18KK3sKKwordW5zaWduZWQgbG9uZyB1bENsa1JlZzsKK3Vuc2lnbmVkIGxvbmcgdWxSc3RSZWc7CisKK31QUkNNX1BlcmlwaFJlZ3NfdDsKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8gVmFsdWVzIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBQUkNNUGVyaXBoZXJhbEVuYWJsZSgpIGFuZAorLy8gUFJDTVBlcmlwaGVyYWxEaXNhYmxlKCkKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgUFJDTV9SVU5fTU9ERV9DTEsgICAgICAgICAweDAwMDAwMDAxCisjZGVmaW5lIFBSQ01fU0xQX01PREVfQ0xLICAgICAgICAgMHgwMDAwMDEwMAorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBWYWx1ZXMgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIFBSQ01TUkFNUmV0ZW50aW9uRW5hYmxlKCkgYW5kCisvLyBQUkNNU1JBTVJldGVudGlvbkRpc2FibGUoKSBhcyB1bFNyYW1Db2xTZWwuCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIFBSQ01fU1JBTV9DT0xfMSAgICAgICAgICAgMHgwMDAwMDAwMQorI2RlZmluZSBQUkNNX1NSQU1fQ09MXzIgICAgICAgICAgIDB4MDAwMDAwMDIKKyNkZWZpbmUgUFJDTV9TUkFNX0NPTF8zICAgICAgICAgICAweDAwMDAwMDA0CisjZGVmaW5lIFBSQ01fU1JBTV9DT0xfNCAgICAgICAgICAgMHgwMDAwMDAwOAorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBWYWx1ZXMgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIFBSQ01TUkFNUmV0ZW50aW9uRW5hYmxlKCkgYW5kCisvLyBQUkNNU1JBTVJldGVudGlvbkRpc2FibGUoKSBhcyB1bE1vZGVGbGFncy4KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgUFJDTV9TUkFNX0xQRFNfUkVUICAgICAgICAweDAwMDAwMDAyCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIFZhbHVlcyB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gUFJDTUxQRFNXYWtldXBTb3VyY2VFbmFibGUoKSwKKy8vIFBSQ01MUERTV2FrZXVwQ2F1c2VHZXQoKSBhbmQgUFJDTUxQRFNXYWtldXBTb3VyY2VEaXNhYmxlKCkuCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIFBSQ01fTFBEU19IT1NUX0lSUSAgICAgICAgMHgwMDAwMDA4MAorI2RlZmluZSBQUkNNX0xQRFNfR1BJTyAgICAgICAgICAgIDB4MDAwMDAwMTAKKyNkZWZpbmUgUFJDTV9MUERTX1RJTUVSICAgICAgICAgICAweDAwMDAwMDAxCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIFZhbHVlcyB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gUFJDTUxQRFNXYWtlVXBHUElPU2VsZWN0KCkgYXMgVHlwZQorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBQUkNNX0xQRFNfTE9XX0xFVkVMICAgICAgIDB4MDAwMDAwMDIKKyNkZWZpbmUgUFJDTV9MUERTX0hJR0hfTEVWRUwgICAgICAweDAwMDAwMDAwCisjZGVmaW5lIFBSQ01fTFBEU19GQUxMX0VER0UgICAgICAgMHgwMDAwMDAwMQorI2RlZmluZSBQUkNNX0xQRFNfUklTRV9FREdFICAgICAgIDB4MDAwMDAwMDMKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8gVmFsdWVzIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBQUkNNTFBEU1dha2VVcEdQSU9TZWxlY3QoKQorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBQUkNNX0xQRFNfR1BJTzIgICAgICAgICAgIDB4MDAwMDAwMDAKKyNkZWZpbmUgUFJDTV9MUERTX0dQSU80ICAgICAgICAgICAweDAwMDAwMDAxCisjZGVmaW5lIFBSQ01fTFBEU19HUElPMTMgICAgICAgICAgMHgwMDAwMDAwMgorI2RlZmluZSBQUkNNX0xQRFNfR1BJTzE3ICAgICAgICAgIDB4MDAwMDAwMDMKKyNkZWZpbmUgUFJDTV9MUERTX0dQSU8xMSAgICAgICAgICAweDAwMDAwMDA0CisjZGVmaW5lIFBSQ01fTFBEU19HUElPMjQgICAgICAgICAgMHgwMDAwMDAwNQorI2RlZmluZSBQUkNNX0xQRFNfR1BJTzI2ICAgICAgICAgIDB4MDAwMDAwMDYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8gVmFsdWVzIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBQUkNNSGliZXJuYXRlV2FrZXVwU291cmNlRW5hYmxlKCksCisvLyBQUkNNSGliZXJuYXRlV2FrZXVwU291cmNlRGlzYWJsZSgpLgorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBQUkNNX0hJQl9TTE9XX0NMS19DVFIgICAgIDB4MDAwMDAwMDEKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8gVmFsdWVzIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBQUkNNSGliZXJuYXRlV2FrZVVwR1BJT1NlbGVjdCgpIGFzIHVsVHlwZQorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBQUkNNX0hJQl9MT1dfTEVWRUwgICAgICAgIDB4MDAwMDAwMDAKKyNkZWZpbmUgUFJDTV9ISUJfSElHSF9MRVZFTCAgICAgICAweDAwMDAwMDAxCisjZGVmaW5lIFBSQ01fSElCX0ZBTExfRURHRSAgICAgICAgMHgwMDAwMDAwMgorI2RlZmluZSBQUkNNX0hJQl9SSVNFX0VER0UgICAgICAgIDB4MDAwMDAwMDMKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8gVmFsdWVzIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBQUkNNSGliZXJuYXRlV2FrZXVwU291cmNlRW5hYmxlKCksCisvLyBQUkNNSGliZXJuYXRlV2FrZXVwU291cmNlRGlzYWJsZSgpLCBQUkNNSGliZXJuYXRlV2FrZVVwR1BJT1NlbGVjdCgpCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIFBSQ01fSElCX0dQSU8yICAgICAgICAgICAgMHgwMDAxMDAwMAorI2RlZmluZSBQUkNNX0hJQl9HUElPNCAgICAgICAgICAgIDB4MDAwMjAwMDAKKyNkZWZpbmUgUFJDTV9ISUJfR1BJTzEzICAgICAgICAgICAweDAwMDQwMDAwCisjZGVmaW5lIFBSQ01fSElCX0dQSU8xNyAgICAgICAgICAgMHgwMDA4MDAwMAorI2RlZmluZSBQUkNNX0hJQl9HUElPMTEgICAgICAgICAgIDB4MDAxMDAwMDAKKyNkZWZpbmUgUFJDTV9ISUJfR1BJTzI0ICAgICAgICAgICAweDAwMjAwMDAwCisjZGVmaW5lIFBSQ01fSElCX0dQSU8yNiAgICAgICAgICAgMHgwMDQwMDAwMAorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBWYWx1ZXMgdGhhdCB3aWxsIGJlIHJldHVybmVkIGZyb20gUFJDTVN5c1Jlc2V0Q2F1c2VHZXQoKS4KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgUFJDTV9QT1dFUl9PTiAgICAgICAgICAgICAweDAwMDAwMDAwCisjZGVmaW5lIFBSQ01fTFBEU19FWElUICAgICAgICAgICAgMHgwMDAwMDAwMQorI2RlZmluZSBQUkNNX0NPUkVfUkVTRVQgICAgICAgICAgIDB4MDAwMDAwMDMKKyNkZWZpbmUgUFJDTV9NQ1VfUkVTRVQgICAgICAgICAgICAweDAwMDAwMDA0CisjZGVmaW5lIFBSQ01fV0RUX1JFU0VUICAgICAgICAgICAgMHgwMDAwMDAwNQorI2RlZmluZSBQUkNNX1NPQ19SRVNFVCAgICAgICAgICAgIDB4MDAwMDAwMDYKKyNkZWZpbmUgUFJDTV9ISUJfRVhJVCAgICAgICAgICAgICAweDAwMDAwMDA3CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIFZhbHVlcyB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gUFJDTUhpYmVybmF0ZVdha2V1cENhdXNlR2V0KCkuCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIFBSQ01fSElCX1dBS0VVUF9DQVVTRV9TTE9XX0NMT0NLICAweDAwMDAwMDAyCisjZGVmaW5lIFBSQ01fSElCX1dBS0VVUF9DQVVTRV9HUElPICAgICAgICAweDAwMDAwMDA0CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIFZhbHVlcyB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gUFJDTVNFbmFibGVJbnRlcnJ1cHQKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgUFJDTV9JTlRfU0xPV19DTEtfQ1RSICAgICAweDAwMDA0MDAwCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIFZhbHVlcyB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gUFJDTVBlcmlwaGVyYWxDbGtFbmFibGUoKSwKKy8vIFBSQ01QZXJpcGhlcmFsQ2xrRGlzYWJsZSgpLCBQUkNNUGVyaXBoZXJhbFJlc2V0KCkKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgUFJDTV9DQU1FUkEgICAgICAgICAgICAgICAweDAwMDAwMDAwCisjZGVmaW5lIFBSQ01fSTJTICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMQorI2RlZmluZSBQUkNNX1NESE9TVCAgICAgICAgICAgICAgIDB4MDAwMDAwMDIKKyNkZWZpbmUgUFJDTV9HU1BJICAgICAgICAgICAgICAgICAweDAwMDAwMDAzCisjZGVmaW5lIFBSQ01fTFNQSSAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNAorI2RlZmluZSBQUkNNX1VETUEgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDUKKyNkZWZpbmUgUFJDTV9HUElPQTAgICAgICAgICAgICAgICAweDAwMDAwMDA2CisjZGVmaW5lIFBSQ01fR1BJT0ExICAgICAgICAgICAgICAgMHgwMDAwMDAwNworI2RlZmluZSBQUkNNX0dQSU9BMiAgICAgICAgICAgICAgIDB4MDAwMDAwMDgKKyNkZWZpbmUgUFJDTV9HUElPQTMgICAgICAgICAgICAgICAweDAwMDAwMDA5CisjZGVmaW5lIFBSQ01fR1BJT0E0ICAgICAgICAgICAgICAgMHgwMDAwMDAwQQorI2RlZmluZSBQUkNNX1dEVCAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMEIKKyNkZWZpbmUgUFJDTV9VQVJUQTAgICAgICAgICAgICAgICAweDAwMDAwMDBDCisjZGVmaW5lIFBSQ01fVUFSVEExICAgICAgICAgICAgICAgMHgwMDAwMDAwRAorI2RlZmluZSBQUkNNX1RJTUVSQTAgICAgICAgICAgICAgIDB4MDAwMDAwMEUKKyNkZWZpbmUgUFJDTV9USU1FUkExICAgICAgICAgICAgICAweDAwMDAwMDBGCisjZGVmaW5lIFBSQ01fVElNRVJBMiAgICAgICAgICAgICAgMHgwMDAwMDAxMAorI2RlZmluZSBQUkNNX1RJTUVSQTMgICAgICAgICAgICAgIDB4MDAwMDAwMTEKKyNkZWZpbmUgUFJDTV9EVEhFICAgICAgICAgICAgICAgICAweDAwMDAwMDEyCisjZGVmaW5lIFBSQ01fU1NQSSAgICAgICAgICAgICAgICAgMHgwMDAwMDAxMworI2RlZmluZSBQUkNNX0kyQ0EwICAgICAgICAgICAgICAgIDB4MDAwMDAwMTQKKy8vIE5vdGUgOiBQUkNNX0FEQyBpcyBhIGR1bW15IGRlZmluZSBmb3IgcGlubXV4IHV0aWxpdHkgY29kZSBnZW5lcmF0aW9uCisvLyBQUkNNX0FEQyBzaG91bGQgbmV2ZXIgYmUgdXNlZCBpbiBhbnkgdXNlciBjb2RlLgorI2RlZmluZSBQUkNNX0FEQyAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkYKKworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBWYWx1ZXMgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIFBSQ01JT1JldEVuYWJsZSgpIGFuZCBQUkNNSU9SZXREaXNhYmxlKCkKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgUFJDTV9JT19SRVRfR1JQXzAgICAgICAgMHgwMDAwMDAwMQorI2RlZmluZSBQUkNNX0lPX1JFVF9HUlBfMSAgICAgICAweDAwMDAwMDAyCisjZGVmaW5lIFBSQ01fSU9fUkVUX0dSUF8yICAgICAgIDB4MDAwMDAwMDQKKyNkZWZpbmUgUFJDTV9JT19SRVRfR1JQXzMgICAgICAgMHgwMDAwMDAwOAorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBNYWNyb3MgZGVmaW5pZyB0aGUgZGV2aWNlIHR5cGUKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgUFJDTV9ERVZfVFlQRV9GTEFHX1IgICAgICAgICAweDAwMDAwMDAxCisjZGVmaW5lIFBSQ01fREVWX1RZUEVfRkxBR19GICAgICAgICAgMHgwMDAwMDAwMgorI2RlZmluZSBQUkNNX0RFVl9UWVBFX0ZMQUdfWiAgICAgICAgIDB4MDAwMDAwMDQKKyNkZWZpbmUgUFJDTV9ERVZfVFlQRV9GTEFHX1NFQ1VSRSAgICAweDAwMDAwMDA4CisjZGVmaW5lIFBSQ01fREVWX1RZUEVfRkxBR19QUkVfUFJPRCAgMHgwMDAwMDAxMAorI2RlZmluZSBQUkNNX0RFVl9UWVBFX0ZMQUdfMzIwMCAgICAgIDB4MDAwMDAwMjAKKyNkZWZpbmUgUFJDTV9ERVZfVFlQRV9GTEFHXzMyMjAgICAgICAweDAwMDAwMDQwCisjZGVmaW5lIFBSQ01fREVWX1RZUEVfRkxBR19SRVYxICAgICAgMHgwMDAxMDAwMAorI2RlZmluZSBQUkNNX0RFVl9UWVBFX0ZMQUdfUkVWMiAgICAgIDB4MDAwMjAwMDAKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8gUHJlLWRlZmluZWQgaGVscGVyIG1hY3JvcworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBQUkNNX0RFVl9UWVBFX1BSRV9DQzMyMDBSICAgIChQUkNNX0RFVl9UWVBFX0ZMQUdfUFJFX1BST0R8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJDTV9ERVZfVFlQRV9GTEFHXzMyMDB8ICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQ01fREVWX1RZUEVfRkxBR19SKQorCisjZGVmaW5lIFBSQ01fREVWX1RZUEVfUFJFX0NDMzIwMEYgICAgKFBSQ01fREVWX1RZUEVfRkxBR19QUkVfUFJPRHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkNNX0RFVl9UWVBFX0ZMQUdfMzIwMHwgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJDTV9ERVZfVFlQRV9GTEFHX0YpCisKKyNkZWZpbmUgUFJDTV9ERVZfVFlQRV9QUkVfQ0MzMjAwWiAgICAoUFJDTV9ERVZfVFlQRV9GTEFHX1BSRV9QUk9EfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQ01fREVWX1RZUEVfRkxBR18zMjAwfCAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkNNX0RFVl9UWVBFX0ZMQUdfWikKKworI2RlZmluZSBQUkNNX0RFVl9UWVBFX0NDMzIwMFIgICAgICAgIChQUkNNX0RFVl9UWVBFX0ZMQUdfUFJFX1BST0R8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJDTV9ERVZfVFlQRV9GTEFHXzMyMDB8ICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQ01fREVWX1RZUEVfRkxBR19SKQorCisjZGVmaW5lIFBSQ01fREVWX1RZUEVfUFJFX0NDMzIyMFIgICAgKFBSQ01fREVWX1RZUEVfRkxBR19QUkVfUFJPRHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkNNX0RFVl9UWVBFX0ZMQUdfMzIyMHwgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJDTV9ERVZfVFlQRV9GTEFHX1IpCisKKyNkZWZpbmUgUFJDTV9ERVZfVFlQRV9QUkVfQ0MzMjIwRiAgICAoUFJDTV9ERVZfVFlQRV9GTEFHX1BSRV9QUk9EfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQ01fREVWX1RZUEVfRkxBR18zMjIwfCAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkNNX0RFVl9UWVBFX0ZMQUdfRikKKworI2RlZmluZSBQUkNNX0RFVl9UWVBFX1BSRV9DQzMyMjBaICAgIChQUkNNX0RFVl9UWVBFX0ZMQUdfUFJFX1BST0R8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJDTV9ERVZfVFlQRV9GTEFHXzMyMjB8ICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQ01fREVWX1RZUEVfRkxBR19aKQorCisjZGVmaW5lIFBSQ01fREVWX1RZUEVfQ0MzMjIwUiAgICAgICAgKFBSQ01fREVWX1RZUEVfRkxBR18zMjIwfCAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkNNX0RFVl9UWVBFX0ZMQUdfUikKKworCisjZGVmaW5lIFBSQ01fREVWX1RZUEVfUFJFX0NDMzIyMFJTICAgKFBSQ01fREVWX1RZUEVfRkxBR19QUkVfUFJPRHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkNNX0RFVl9UWVBFX0ZMQUdfMzIyMHwgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJDTV9ERVZfVFlQRV9GTEFHX1J8ICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQ01fREVWX1RZUEVfRkxBR19TRUNVUkUpCisKKyNkZWZpbmUgUFJDTV9ERVZfVFlQRV9QUkVfQ0MzMjIwRlMgICAoUFJDTV9ERVZfVFlQRV9GTEFHX1BSRV9QUk9EfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQ01fREVWX1RZUEVfRkxBR18zMjIwfCAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkNNX0RFVl9UWVBFX0ZMQUdfRnwgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJDTV9ERVZfVFlQRV9GTEFHX1NFQ1VSRSkKKworI2RlZmluZSBQUkNNX0RFVl9UWVBFX1BSRV9DQzMyMjBaUyAgIChQUkNNX0RFVl9UWVBFX0ZMQUdfUFJFX1BST0R8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJDTV9ERVZfVFlQRV9GTEFHXzMyMjB8ICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQ01fREVWX1RZUEVfRkxBR19afCAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkNNX0RFVl9UWVBFX0ZMQUdfU0VDVVJFKQorCisjZGVmaW5lIFBSQ01fREVWX1RZUEVfQ0MzMjIwUlMgICAgICAgKFBSQ01fREVWX1RZUEVfRkxBR18zMjIwfCAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkNNX0RFVl9UWVBFX0ZMQUdfUnwgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJDTV9ERVZfVFlQRV9GTEFHX1NFQ1VSRSkKKworI2RlZmluZSBQUkNNX0RFVl9UWVBFX0NDMzIyMEZTICAgICAgIChQUkNNX0RFVl9UWVBFX0ZMQUdfMzIyMHwgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJDTV9ERVZfVFlQRV9GTEFHX0Z8ICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQ01fREVWX1RZUEVfRkxBR19TRUNVUkUpCisKKworI2RlZmluZSBQUkNNX0RFVl9UWVBFX1BSRV9DQzMyMjBaMSAgIChQUkNNX0RFVl9UWVBFX0ZMQUdfUFJFX1BST0R8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJDTV9ERVZfVFlQRV9GTEFHXzMyMjB8ICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQ01fREVWX1RZUEVfRkxBR19afCAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkNNX0RFVl9UWVBFX0ZMQUdfUkVWMSkKKworI2RlZmluZSBQUkNNX0RFVl9UWVBFX1BSRV9DQzMyMjBaMiAgIChQUkNNX0RFVl9UWVBFX0ZMQUdfUFJFX1BST0R8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJDTV9ERVZfVFlQRV9GTEFHXzMyMjB8ICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQ01fREVWX1RZUEVfRkxBR19afCAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkNNX0RFVl9UWVBFX0ZMQUdfUkVWMikKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIEFQSSBGdW5jdGlvbiBwcm90b3R5cGVzCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorZXh0ZXJuIHZvaWQgUFJDTU1DVVJlc2V0KHRCb29sZWFuIGJJbmNsdWRlU3Vic3lzdGVtKTsKK2V4dGVybiB1bnNpZ25lZCBsb25nIFBSQ01TeXNSZXNldENhdXNlR2V0KHZvaWQpOworCitleHRlcm4gdm9pZCBQUkNNUGVyaXBoZXJhbENsa0VuYWJsZSh1bnNpZ25lZCBsb25nIHVsUGVyaXBoZXJhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxDbGtGbGFncyk7CitleHRlcm4gdm9pZCBQUkNNUGVyaXBoZXJhbENsa0Rpc2FibGUodW5zaWduZWQgbG9uZyB1bFBlcmlwaGVyYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bENsa0ZsYWdzKTsKK2V4dGVybiB2b2lkIFBSQ01QZXJpcGhlcmFsUmVzZXQodW5zaWduZWQgbG9uZyB1bFBlcmlwaGVyYWwpOworZXh0ZXJuIHRCb29sZWFuIFBSQ01QZXJpcGhlcmFsU3RhdHVzR2V0KHVuc2lnbmVkIGxvbmcgdWxQZXJpcGhlcmFsKTsKKworZXh0ZXJuIHZvaWQgUFJDTUkyU0Nsb2NrRnJlcVNldCh1bnNpZ25lZCBsb25nIHVsSTJDQ2xrRnJlcSk7CitleHRlcm4gdW5zaWduZWQgbG9uZyBQUkNNUGVyaXBoZXJhbENsb2NrR2V0KHVuc2lnbmVkIGxvbmcgdWxQZXJpcGhlcmFsKTsKKworZXh0ZXJuIHZvaWQgUFJDTVNsZWVwRW50ZXIodm9pZCk7CisKK2V4dGVybiB2b2lkIFBSQ01TUkFNUmV0ZW50aW9uRW5hYmxlKHVuc2lnbmVkIGxvbmcgdWxTcmFtQ29sU2VsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bEZsYWdzKTsKK2V4dGVybiB2b2lkIFBSQ01TUkFNUmV0ZW50aW9uRGlzYWJsZSh1bnNpZ25lZCBsb25nIHVsU3JhbUNvbFNlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsRmxhZ3MpOworZXh0ZXJuIHZvaWQgUFJDTUxQRFNSZXN0b3JlSW5mb1NldCh1bnNpZ25lZCBsb25nIHVsUmVzdG9yZVNQLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsUmVzdG9yZVBDKTsKK2V4dGVybiB2b2lkIFBSQ01MUERTRW50ZXIodm9pZCk7CitleHRlcm4gdm9pZCBQUkNNTFBEU0ludGVydmFsU2V0KHVuc2lnbmVkIGxvbmcgdWxUaWNrcyk7CitleHRlcm4gdm9pZCBQUkNNTFBEU1dha2V1cFNvdXJjZUVuYWJsZSh1bnNpZ25lZCBsb25nIHVsTHBkc1dha2V1cFNyYyk7CitleHRlcm4gdW5zaWduZWQgbG9uZyBQUkNNTFBEU1dha2V1cENhdXNlR2V0KHZvaWQpOworZXh0ZXJuIHZvaWQgUFJDTUxQRFNXYWtlVXBHUElPU2VsZWN0KHVuc2lnbmVkIGxvbmcgdWxHUElPUGluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxUeXBlKTsKK2V4dGVybiB2b2lkIFBSQ01MUERTV2FrZXVwU291cmNlRGlzYWJsZSh1bnNpZ25lZCBsb25nIHVsTHBkc1dha2V1cFNyYyk7CisKK2V4dGVybiB2b2lkIFBSQ01IaWJlcm5hdGVFbnRlcih2b2lkKTsKK2V4dGVybiB2b2lkIFBSQ01IaWJlcm5hdGVXYWtldXBTb3VyY2VFbmFibGUodW5zaWduZWQgbG9uZyB1bEhJQldha3VwU3JjKTsKK2V4dGVybiB1bnNpZ25lZCBsb25nIFBSQ01IaWJlcm5hdGVXYWtldXBDYXVzZUdldCh2b2lkKTsKK2V4dGVybiB2b2lkIFBSQ01IaWJlcm5hdGVXYWtlVXBHUElPU2VsZWN0KHVuc2lnbmVkIGxvbmcgdWxNdWx0aUdQSU9CaXRNYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsVHlwZSk7CitleHRlcm4gdm9pZCBQUkNNSGliZXJuYXRlV2FrZXVwU291cmNlRGlzYWJsZSh1bnNpZ25lZCBsb25nIHVsSElCV2FrdXBTcmMpOworZXh0ZXJuIHZvaWQgUFJDTUhpYmVybmF0ZUludGVydmFsU2V0KHVuc2lnbmVkIGxvbmcgbG9uZyB1bGxUaWNrcyk7CisKK2V4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgUFJDTVNsb3dDbGtDdHJHZXQodm9pZCk7CitleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIFBSQ01TbG93Q2xrQ3RyRmFzdEdldCh2b2lkKTsKK2V4dGVybiB2b2lkIFBSQ01TbG93Q2xrQ3RyTWF0Y2hTZXQodW5zaWduZWQgbG9uZyBsb25nIHVsbFRpY2tzKTsKK2V4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgUFJDTVNsb3dDbGtDdHJNYXRjaEdldCh2b2lkKTsKKworZXh0ZXJuIHZvaWQgUFJDTU9DUlJlZ2lzdGVyV3JpdGUodW5zaWduZWQgY2hhciB1Y0luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFJlZ1ZhbHVlKTsKK2V4dGVybiB1bnNpZ25lZCBsb25nIFBSQ01PQ1JSZWdpc3RlclJlYWQodW5zaWduZWQgY2hhciB1Y0luZGV4KTsKKworZXh0ZXJuIHZvaWQgUFJDTUludFJlZ2lzdGVyKHZvaWQgKCpwZm5IYW5kbGVyKSh2b2lkKSk7CitleHRlcm4gdm9pZCBQUkNNSW50VW5yZWdpc3Rlcih2b2lkKTsKK2V4dGVybiB2b2lkIFBSQ01JbnRFbmFibGUodW5zaWduZWQgbG9uZyB1bEludEZsYWdzKTsKK2V4dGVybiB2b2lkIFBSQ01JbnREaXNhYmxlKHVuc2lnbmVkIGxvbmcgdWxJbnRGbGFncyk7CitleHRlcm4gdW5zaWduZWQgbG9uZyBQUkNNSW50U3RhdHVzKHZvaWQpOworZXh0ZXJuIHZvaWQgUFJDTVJUQ0luVXNlU2V0KHZvaWQpOworZXh0ZXJuIHRCb29sZWFuIFBSQ01SVENJblVzZUdldCh2b2lkKTsKK2V4dGVybiB2b2lkIFBSQ01SVENTZXQodW5zaWduZWQgbG9uZyB1bFNlY3MsIHVuc2lnbmVkIHNob3J0IHVzTXNlYyk7CitleHRlcm4gdm9pZCBQUkNNUlRDR2V0KHVuc2lnbmVkIGxvbmcgKnVsU2VjcywgdW5zaWduZWQgc2hvcnQgKnVzTXNlYyk7CitleHRlcm4gdm9pZCBQUkNNUlRDTWF0Y2hTZXQodW5zaWduZWQgbG9uZyB1bFNlY3MsIHVuc2lnbmVkIHNob3J0IHVzTXNlYyk7CitleHRlcm4gdm9pZCBQUkNNUlRDTWF0Y2hHZXQodW5zaWduZWQgbG9uZyAqdWxTZWNzLCB1bnNpZ25lZCBzaG9ydCAqdXNNc2VjKTsKK2V4dGVybiB2b2lkIFBSQ01DQzMyMDBNQ1VJbml0KHZvaWQpOworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgUFJDTUhJQlJlZ1JlYWQodW5zaWduZWQgbG9uZyB1bFJlZ0FkZHIpOworZXh0ZXJuIHZvaWQgUFJDTUhJQlJlZ1dyaXRlKHVuc2lnbmVkIGxvbmcgdWxSZWdBZGRyLCB1bnNpZ25lZCBsb25nIHVsVmFsdWUpOworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgUFJDTUNhbWVyYUZyZXFTZXQodW5zaWduZWQgY2hhciB1bERpdmlkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHVsV2lkdGgpOworZXh0ZXJuIHZvaWQgUFJDTUlPUmV0ZW50aW9uRW5hYmxlKHVuc2lnbmVkIGxvbmcgdWxJT1JldEdycEZsYWdzKTsKK2V4dGVybiB2b2lkIFBSQ01JT1JldGVudGlvbkRpc2FibGUodW5zaWduZWQgbG9uZyB1bElPUmV0R3JwRmxhZ3MpOworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgUFJDTURldmljZVR5cGVHZXQodm9pZCk7CitleHRlcm4gdm9pZCBQUkNNTFBEU0VudGVyS2VlcERlYnVnSWYodm9pZCk7CitleHRlcm4gdm9pZCBQUkNNSGliZXJuYXRlQ3ljbGVUcmlnZ2VyKHZvaWQpOworCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYXJrIHRoZSBlbmQgb2YgdGhlIEMgYmluZGluZ3Mgc2VjdGlvbiBmb3IgQysrIGNvbXBpbGVycy4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gIF9fUFJDTV9IX18KZGlmZiAtLWdpdCBhL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2RyaXZlcmxpYi9yb20uaCBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2RyaXZlcmxpYi9yb20uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODkzOGNmCi0tLSAvZGV2L251bGwKKysrIGIvZXh0L2hhbC90aS9jYzMyMjBzZGsvZHJpdmVybGliL3JvbS5oCkBAIC0wLDAgKzEsMjc4NyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTYgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkIC0gaHR0cDovL3d3dy50aS5jb20vCisgKgorICogIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogIGFyZSBtZXQ6CisgKgorICogICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAgICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogICAgTmVpdGhlciB0aGUgbmFtZSBvZiBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgbm9yIHRoZSBuYW1lcyBvZgorICogICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqICBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqICBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqICBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiAgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyByb20uaCAtIE1hY3JvcyB0byBmYWNpbGl0YXRlIGNhbGxpbmcgZnVuY3Rpb25zIGluIHRoZSBST00uCisvLworLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUSElTIElTIEFOIEFVVE8tR0VORVJBVEVEIEZJTEUuICBETyBOT1QgRURJVCBCWSBIQU5ELgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworI2lmbmRlZiBfX1JPTV9IX18KKyNkZWZpbmUgX19ST01fSF9fCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIERyaXZlcmxpYiB2ZXJzaW9ucworLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpZmRlZiBUQVJHRVRfSVNfQ0MzMjAwCisjZGVmaW5lIFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkKKyNlbmRpZgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gUG9pbnRlcnMgdG8gdGhlIG1haW4gQVBJIHRhYmxlcy4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIFJPTV9BUElUQUJMRSAgICAgICAgICAgICgodW5zaWduZWQgbG9uZyAqKTB4MDAwMDA0MEMpCisjZGVmaW5lIFJPTV9WRVJTSU9OICAgICAgICAgICAgIChST01fQVBJVEFCTEVbMF0pCisjZGVmaW5lIFJPTV9VQVJUVEFCTEUgICAgICAgICAgICgodW5zaWduZWQgbG9uZyAqKShST01fQVBJVEFCTEVbMV0pKQorI2RlZmluZSBST01fVElNRVJUQUJMRSAgICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKikoUk9NX0FQSVRBQkxFWzJdKSkKKyNkZWZpbmUgUk9NX1dBVENIRE9HVEFCTEUgICAgICAgKCh1bnNpZ25lZCBsb25nICopKFJPTV9BUElUQUJMRVszXSkpCisjZGVmaW5lIFJPTV9JTlRFUlJVUFRUQUJMRSAgICAgICgodW5zaWduZWQgbG9uZyAqKShST01fQVBJVEFCTEVbNF0pKQorI2RlZmluZSBST01fVURNQVRBQkxFICAgICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKikoUk9NX0FQSVRBQkxFWzVdKSkKKyNkZWZpbmUgUk9NX1BSQ01UQUJMRSAgICAgICAgICAgKCh1bnNpZ25lZCBsb25nICopKFJPTV9BUElUQUJMRVs2XSkpCisjZGVmaW5lIFJPTV9JMkNUQUJMRSAgICAgICAgICAgICgodW5zaWduZWQgbG9uZyAqKShST01fQVBJVEFCTEVbN10pKQorI2RlZmluZSBST01fU1BJVEFCTEUgICAgICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKikoUk9NX0FQSVRBQkxFWzhdKSkKKyNkZWZpbmUgUk9NX0NBTUVSQVRBQkxFICAgICAgICAgKCh1bnNpZ25lZCBsb25nICopKFJPTV9BUElUQUJMRVs5XSkpCisjZGVmaW5lIFJPTV9GTEFTSFRBQkxFICAgICAgICAgICgodW5zaWduZWQgbG9uZyAqKShST01fQVBJVEFCTEVbMTBdKSkKKyNkZWZpbmUgUk9NX1BJTlRBQkxFICAgICAgICAgICAgKCh1bnNpZ25lZCBsb25nICopKFJPTV9BUElUQUJMRVsxMV0pKQorI2RlZmluZSBST01fU1lTVElDS1RBQkxFICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKikoUk9NX0FQSVRBQkxFWzEyXSkpCisjZGVmaW5lIFJPTV9VVElMU1RBQkxFICAgICAgICAgICgodW5zaWduZWQgbG9uZyAqKShST01fQVBJVEFCTEVbMTNdKSkKKyNkZWZpbmUgUk9NX0kyU1RBQkxFICAgICAgICAgICAgKCh1bnNpZ25lZCBsb25nICopKFJPTV9BUElUQUJMRVsxNF0pKQorI2RlZmluZSBST01fSFdTUElOTE9DS1RBQkxFICAgICAoKHVuc2lnbmVkIGxvbmcgKikoUk9NX0FQSVRBQkxFWzE1XSkpCisjZGVmaW5lIFJPTV9HUElPVEFCTEUgICAgICAgICAgICgodW5zaWduZWQgbG9uZyAqKShST01fQVBJVEFCTEVbMTZdKSkKKyNkZWZpbmUgUk9NX0FFU1RBQkxFICAgICAgICAgICAgKCh1bnNpZ25lZCBsb25nICopKFJPTV9BUElUQUJMRVsxN10pKQorI2RlZmluZSBST01fREVTVEFCTEUgICAgICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKikoUk9NX0FQSVRBQkxFWzE4XSkpCisjZGVmaW5lIFJPTV9TSEFNRDVUQUJMRSAgICAgICAgICgodW5zaWduZWQgbG9uZyAqKShST01fQVBJVEFCTEVbMTldKSkKKyNkZWZpbmUgUk9NX0NSQ1RBQkxFICAgICAgICAgICAgKCh1bnNpZ25lZCBsb25nICopKFJPTV9BUElUQUJMRVsyMF0pKQorI2RlZmluZSBST01fU0RIT1NUVEFCTEUgICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKikoUk9NX0FQSVRBQkxFWzIxXSkpCisjZGVmaW5lIFJPTV9BRENUQUJMRSAgICAgICAgICAgICgodW5zaWduZWQgbG9uZyAqKShST01fQVBJVEFCTEVbMjJdKSkKKyNkZWZpbmUgUk9NX0NQVVRBQkxFICAgICAgICAgICAgKCh1bnNpZ25lZCBsb25nICopKFJPTV9BUElUQUJMRVsyM10pKQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFjcm9zIGZvciBjYWxsaW5nIFJPTSBmdW5jdGlvbnMgaW4gdGhlIEludGVycnVwdCBBUEkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0ludEVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsSW50ZXJydXB0KSlST01fSU5URVJSVVBUVEFCTEVbMF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JbnRNYXN0ZXJFbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodEJvb2xlYW4gKCopKHZvaWQpKVJPTV9JTlRFUlJVUFRUQUJMRVsxXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0ludE1hc3RlckRpc2FibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh0Qm9vbGVhbiAoKikodm9pZCkpUk9NX0lOVEVSUlVQVFRBQkxFWzJdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSW50RGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxJbnRlcnJ1cHQpKVJPTV9JTlRFUlJVUFRUQUJMRVszXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0ludFByaW9yaXR5R3JvdXBpbmdTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQml0cykpUk9NX0lOVEVSUlVQVFRBQkxFWzRdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSW50UHJpb3JpdHlHcm91cGluZ0dldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHZvaWQpKVJPTV9JTlRFUlJVUFRUQUJMRVs1XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0ludFByaW9yaXR5U2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsSW50ZXJydXB0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHVjUHJpb3JpdHkpKVJPTV9JTlRFUlJVUFRUQUJMRVs2XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0ludFByaW9yaXR5R2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKChsb25nICgqKSh1bnNpZ25lZCBsb25nIHVsSW50ZXJydXB0KSlST01fSU5URVJSVVBUVEFCTEVbN10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JbnRQZW5kU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEludGVycnVwdCkpUk9NX0lOVEVSUlVQVFRBQkxFWzhdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSW50UGVuZENsZWFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxJbnRlcnJ1cHQpKVJPTV9JTlRFUlJVUFRUQUJMRVs5XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0ludFByaW9yaXR5TWFza1NldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsUHJpb3JpdHlNYXNrKSlST01fSU5URVJSVVBUVEFCTEVbMTBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSW50UHJpb3JpdHlNYXNrR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHZvaWQpKVJPTV9JTlRFUlJVUFRUQUJMRVsxMV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JbnRSZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEludGVycnVwdCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdm9pZCAoKnBmbkhhbmRsZXIpKHZvaWQpKSlST01fSU5URVJSVVBUVEFCTEVbMTJdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSW50VW5yZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxJbnRlcnJ1cHQpKVJPTV9JTlRFUlJVUFRUQUJMRVsxM10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JbnRWVGFibGVCYXNlU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bFZ0YWJsZUJhc2UpKVJPTV9JTlRFUlJVUFRUQUJMRVsxNF0pCisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIE1hY3JvcyBmb3IgY2FsbGluZyBST00gZnVuY3Rpb25zIGluIHRoZSBUaW1lciBBUEkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1RpbWVyRW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsVGltZXIpKVJPTV9USU1FUlRBQkxFWzBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVGltZXJEaXNhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxUaW1lcikpUk9NX1RJTUVSVEFCTEVbMV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9UaW1lckNvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bENvbmZpZykpUk9NX1RJTUVSVEFCTEVbMl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9UaW1lckNvbnRyb2xMZXZlbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFRpbWVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdEJvb2xlYW4gYkludmVydCkpUk9NX1RJTUVSVEFCTEVbM10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9UaW1lckNvbnRyb2xFdmVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFRpbWVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bEV2ZW50KSlST01fVElNRVJUQUJMRVs0XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1RpbWVyQ29udHJvbFN0YWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsVGltZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB0Qm9vbGVhbiBiU3RhbGwpKVJPTV9USU1FUlRBQkxFWzVdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVGltZXJQcmVzY2FsZVNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxUaW1lciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxWYWx1ZSkpUk9NX1RJTUVSVEFCTEVbNl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9UaW1lclByZXNjYWxlR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFRpbWVyKSlST01fVElNRVJUQUJMRVs3XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1RpbWVyUHJlc2NhbGVNYXRjaFNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsVGltZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsVmFsdWUpKVJPTV9USU1FUlRBQkxFWzhdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVGltZXJQcmVzY2FsZU1hdGNoR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxUaW1lcikpUk9NX1RJTUVSVEFCTEVbOV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9UaW1lckxvYWRTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFRpbWVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFZhbHVlKSlST01fVElNRVJUQUJMRVsxMF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9UaW1lckxvYWRHZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFRpbWVyKSlST01fVElNRVJUQUJMRVsxMV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9UaW1lclZhbHVlR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFRpbWVyKSlST01fVElNRVJUQUJMRVsxMl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9UaW1lck1hdGNoU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFRpbWVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFZhbHVlKSlST01fVElNRVJUQUJMRVsxM10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9UaW1lck1hdGNoR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFRpbWVyKSlST01fVElNRVJUQUJMRVsxNF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9UaW1lckludFJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFRpbWVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdm9pZCAoKnBmbkhhbmRsZXIpKHZvaWQpKSlST01fVElNRVJUQUJMRVsxNV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9UaW1lckludFVucmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFRpbWVyKSlST01fVElNRVJUQUJMRVsxNl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9UaW1lckludEVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bEludEZsYWdzKSlST01fVElNRVJUQUJMRVsxN10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9UaW1lckludERpc2FibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bEludEZsYWdzKSlST01fVElNRVJUQUJMRVsxOF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9UaW1lckludFN0YXR1cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdEJvb2xlYW4gYk1hc2tlZCkpUk9NX1RJTUVSVEFCTEVbMTldKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVGltZXJJbnRDbGVhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxJbnRGbGFncykpUk9NX1RJTUVSVEFCTEVbMjBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVGltZXJWYWx1ZVNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxUaW1lciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxWYWx1ZSkpUk9NX1RJTUVSVEFCTEVbMjJdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVGltZXJETUFFdmVudFNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxETUFFdmVudCkpUk9NX1RJTUVSVEFCTEVbMjNdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVGltZXJETUFFdmVudEdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fVElNRVJUQUJMRVsyNF0pCisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIE1hY3JvcyBmb3IgY2FsbGluZyBST00gZnVuY3Rpb25zIGluIHRoZSBVQVJUIEFQSS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVUFSVFBhcml0eU1vZGVTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxQYXJpdHkpKVJPTV9VQVJUVEFCTEVbMF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9VQVJUUGFyaXR5TW9kZUdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9VQVJUVEFCTEVbMV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9VQVJURklGT0xldmVsU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFR4TGV2ZWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFJ4TGV2ZWwpKVJPTV9VQVJUVEFCTEVbMl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9VQVJURklGT0xldmVsR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqcHVsVHhMZXZlbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqcHVsUnhMZXZlbCkpUk9NX1VBUlRUQUJMRVszXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1VBUlRDb25maWdTZXRFeHBDbGsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsVUFSVENsaywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsQmF1ZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsQ29uZmlnKSlST01fVUFSVFRBQkxFWzRdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVUFSVENvbmZpZ0dldEV4cENsayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxVQVJUQ2xrLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKnB1bEJhdWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKnB1bENvbmZpZykpUk9NX1VBUlRUQUJMRVs1XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1VBUlRFbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSkpUk9NX1VBUlRUQUJMRVs2XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1VBUlREaXNhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSkpUk9NX1VBUlRUQUJMRVs3XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1VBUlRGSUZPRW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSkpUk9NX1VBUlRUQUJMRVs4XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1VBUlRGSUZPRGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSkpUk9NX1VBUlRUQUJMRVs5XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1VBUlRDaGFyc0F2YWlsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh0Qm9vbGVhbiAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9VQVJUVEFCTEVbMTBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVUFSVFNwYWNlQXZhaWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHRCb29sZWFuICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSkpUk9NX1VBUlRUQUJMRVsxMV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9VQVJUQ2hhckdldE5vbkJsb2NraW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgobG9uZyAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9VQVJUVEFCTEVbMTJdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVUFSVENoYXJHZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fVUFSVFRBQkxFWzEzXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1VBUlRDaGFyUHV0Tm9uQmxvY2tpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh0Qm9vbGVhbiAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciB1Y0RhdGEpKVJPTV9VQVJUVEFCTEVbMTRdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVUFSVENoYXJQdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgdWNEYXRhKSlST01fVUFSVFRBQkxFWzE1XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1VBUlRCcmVha0N0bCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB0Qm9vbGVhbiBiQnJlYWtTdGF0ZSkpUk9NX1VBUlRUQUJMRVsxNl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9VQVJUQnVzeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodEJvb2xlYW4gKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fVUFSVFRBQkxFWzE3XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1VBUlRJbnRSZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB2b2lkKCpwZm5IYW5kbGVyKSh2b2lkKSkpUk9NX1VBUlRUQUJMRVsxOF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9VQVJUSW50VW5yZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9VQVJUVEFCTEVbMTldKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVUFSVEludEVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxJbnRGbGFncykpUk9NX1VBUlRUQUJMRVsyMF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9VQVJUSW50RGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bEludEZsYWdzKSlST01fVUFSVFRBQkxFWzIxXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1VBUlRJbnRTdGF0dXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Qm9vbGVhbiBiTWFza2VkKSlST01fVUFSVFRBQkxFWzIyXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1VBUlRJbnRDbGVhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsSW50RmxhZ3MpKVJPTV9VQVJUVEFCTEVbMjNdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVUFSVERNQUVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxETUFGbGFncykpUk9NX1VBUlRUQUJMRVsyNF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9VQVJURE1BRGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bERNQUZsYWdzKSlST01fVUFSVFRBQkxFWzI1XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1VBUlRSeEVycm9yR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSkpUk9NX1VBUlRUQUJMRVsyNl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9VQVJUUnhFcnJvckNsZWFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9VQVJUVEFCTEVbMjddKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVUFSVE1vZGVtQ29udHJvbFNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxDb250cm9sKSlST01fVUFSVFRBQkxFWzI4XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1VBUlRNb2RlbUNvbnRyb2xDbGVhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsQ29udHJvbCkpUk9NX1VBUlRUQUJMRVsyOV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9VQVJUTW9kZW1Db250cm9sR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9VQVJUVEFCTEVbMzBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVUFSVE1vZGVtU3RhdHVzR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fVUFSVFRBQkxFWzMxXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1VBUlRGbG93Q29udHJvbFNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsTW9kZSkpUk9NX1VBUlRUQUJMRVszMl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9VQVJURmxvd0NvbnRyb2xHZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9VQVJUVEFCTEVbMzNdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVUFSVFR4SW50TW9kZVNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxNb2RlKSlST01fVUFSVFRBQkxFWzM0XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1VBUlRUeEludE1vZGVHZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSkpUk9NX1VBUlRUQUJMRVszNV0pCisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIE1hY3JvcyBmb3IgY2FsbGluZyBST00gZnVuY3Rpb25zIGluIHRoZSB1RE1BIEFQSS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fdURNQUNoYW5uZWxUcmFuc2ZlclNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxDaGFubmVsU3RydWN0SW5kZXgsICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxNb2RlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHZvaWQgKnB2U3JjQWRkciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHZvaWQgKnB2RHN0QWRkciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxUcmFuc2ZlclNpemUpKVJPTV9VRE1BVEFCTEVbMF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV91RE1BRW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodm9pZCkpUk9NX1VETUFUQUJMRVsxXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX3VETUFEaXNhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh2b2lkKSlST01fVURNQVRBQkxFWzJdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fdURNQUVycm9yU3RhdHVzR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHZvaWQpKVJPTV9VRE1BVEFCTEVbM10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV91RE1BRXJyb3JTdGF0dXNDbGVhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodm9pZCkpUk9NX1VETUFUQUJMRVs0XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX3VETUFDaGFubmVsRW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQ2hhbm5lbE51bSkpUk9NX1VETUFUQUJMRVs1XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX3VETUFDaGFubmVsRGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQ2hhbm5lbE51bSkpUk9NX1VETUFUQUJMRVs2XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX3VETUFDaGFubmVsSXNFbmFibGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh0Qm9vbGVhbiAoKikodW5zaWduZWQgbG9uZyB1bENoYW5uZWxOdW0pKVJPTV9VRE1BVEFCTEVbN10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV91RE1BQ29udHJvbEJhc2VTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodm9pZCAqcENvbnRyb2xUYWJsZSkpUk9NX1VETUFUQUJMRVs4XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX3VETUFDb250cm9sQmFzZUdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICogKCopKHZvaWQpKVJPTV9VRE1BVEFCTEVbOV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV91RE1BQ2hhbm5lbFJlcXVlc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bENoYW5uZWxOdW0pKVJPTV9VRE1BVEFCTEVbMTBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fdURNQUNoYW5uZWxBdHRyaWJ1dGVFbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxDaGFubmVsTnVtLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxBdHRyKSlST01fVURNQVRBQkxFWzExXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX3VETUFDaGFubmVsQXR0cmlidXRlRGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQ2hhbm5lbE51bSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsQXR0cikpUk9NX1VETUFUQUJMRVsxMl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV91RE1BQ2hhbm5lbEF0dHJpYnV0ZUdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyAoKikodW5zaWduZWQgbG9uZyB1bENoYW5uZWxOdW0pKVJPTV9VRE1BVEFCTEVbMTNdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fdURNQUNoYW5uZWxDb250cm9sU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxDaGFubmVsU3RydWN0SW5kZXgsICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxDb250cm9sKSlST01fVURNQVRBQkxFWzE0XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX3VETUFDaGFubmVsU2l6ZUdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nICgqKSh1bnNpZ25lZCBsb25nIHVsQ2hhbm5lbFN0cnVjdEluZGV4KSlST01fVURNQVRBQkxFWzE1XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX3VETUFDaGFubmVsTW9kZUdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nICgqKSh1bnNpZ25lZCBsb25nIHVsQ2hhbm5lbFN0cnVjdEluZGV4KSlST01fVURNQVRBQkxFWzE2XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX3VETUFJbnRTdGF0dXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nICgqKSh2b2lkKSlST01fVURNQVRBQkxFWzE3XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX3VETUFJbnRDbGVhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQ2hhbk1hc2spKVJPTV9VRE1BVEFCTEVbMThdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fdURNQUNvbnRyb2xBbHRlcm5hdGVCYXNlR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKiAoKikodm9pZCkpUk9NX1VETUFUQUJMRVsxOV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV91RE1BQ2hhbm5lbFNjYXR0ZXJHYXRoZXJTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bENoYW5uZWxOdW0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgdWxUYXNrQ291bnQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdm9pZCAqcHZUYXNrTGlzdCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bElzUGVyaXBoU0cpKVJPTV9VRE1BVEFCTEVbMjBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fdURNQUNoYW5uZWxBc3NpZ24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxNYXBwaW5nKSlST01fVURNQVRBQkxFWzIxXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX3VETUFJbnRSZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsSW50Q2hhbm5lbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB2b2lkICgqcGZuSGFuZGxlcikodm9pZCkpKVJPTV9VRE1BVEFCTEVbMjJdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fdURNQUludFVucmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxJbnRDaGFubmVsKSlST01fVURNQVRBQkxFWzIzXSkKKyNlbmRpZgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFjcm9zIGZvciBjYWxsaW5nIFJPTSBmdW5jdGlvbnMgaW4gdGhlIFdhdGNoZG9nIEFQSS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fV2F0Y2hkb2dJbnRDbGVhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fV0FUQ0hET0dUQUJMRVswXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1dhdGNoZG9nUnVubmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh0Qm9vbGVhbiAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9XQVRDSERPR1RBQkxFWzFdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fV2F0Y2hkb2dFbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fV0FUQ0hET0dUQUJMRVsyXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1dhdGNoZG9nTG9jayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSkpUk9NX1dBVENIRE9HVEFCTEVbM10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9XYXRjaGRvZ1VubG9jayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9XQVRDSERPR1RBQkxFWzRdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fV2F0Y2hkb2dMb2NrU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHRCb29sZWFuICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSkpUk9NX1dBVENIRE9HVEFCTEVbNV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9XYXRjaGRvZ1JlbG9hZFNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bExvYWRWYWwpKVJPTV9XQVRDSERPR1RBQkxFWzZdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fV2F0Y2hkb2dSZWxvYWRHZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fV0FUQ0hET0dUQUJMRVs3XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1dhdGNoZG9nVmFsdWVHZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSkpUk9NX1dBVENIRE9HVEFCTEVbOF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9XYXRjaGRvZ0ludFN0YXR1cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdEJvb2xlYW4gYk1hc2tlZCkpUk9NX1dBVENIRE9HVEFCTEVbMTBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fV2F0Y2hkb2dTdGFsbEVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fV0FUQ0hET0dUQUJMRVsxMV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9XYXRjaGRvZ1N0YWxsRGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9XQVRDSERPR1RBQkxFWzEyXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1dhdGNoZG9nSW50UmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB2b2lkKCpwZm5IYW5kbGVyKSh2b2lkKSkpUk9NX1dBVENIRE9HVEFCTEVbMTNdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fV2F0Y2hkb2dJbnRVbnJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fV0FUQ0hET0dUQUJMRVsxNF0pCisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIE1hY3JvcyBmb3IgY2FsbGluZyBST00gZnVuY3Rpb25zIGluIHRoZSBJMkMgQVBJLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNJbnRSZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdm9pZChwZm5IYW5kbGVyKSh2b2lkKSkpUk9NX0kyQ1RBQkxFWzBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJDSW50VW5yZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlKSlST01fSTJDVEFCTEVbMV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNUeEZJRk9Db25maWdTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdWkzMkNvbmZpZykpUk9NX0kyQ1RBQkxFWzJdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJDVHhGSUZPRmx1c2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlKSlST01fSTJDVEFCTEVbM10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNSeEZJRk9Db25maWdTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdWkzMkNvbmZpZykpUk9NX0kyQ1RBQkxFWzRdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJDUnhGSUZPRmx1c2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlKSlST01fSTJDVEFCTEVbNV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNGSUZPU3RhdHVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodWludDMyX3QgKCopKHVpbnQzMl90IHVpMzJCYXNlKSlST01fSTJDVEFCTEVbNl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNGSUZPRGF0YVB1dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDhfdCB1aThEYXRhKSlST01fSTJDVEFCTEVbN10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNGSUZPRGF0YVB1dE5vbkJsb2NraW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodWludDMyX3QgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgdWk4RGF0YSkpUk9NX0kyQ1RBQkxFWzhdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJDRklGT0RhdGFHZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVpbnQzMl90ICgqKSh1aW50MzJfdCB1aTMyQmFzZSkpUk9NX0kyQ1RBQkxFWzldKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJDRklGT0RhdGFHZXROb25CbG9ja2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVpbnQzMl90ICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwdWk4RGF0YSkpUk9NX0kyQ1RBQkxFWzEwXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyQ01hc3RlckJ1cnN0TGVuZ3RoU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90IHVpOExlbmd0aCkpUk9NX0kyQ1RBQkxFWzExXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyQ01hc3RlckJ1cnN0Q291bnRHZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1aW50MzJfdCAoKikodWludDMyX3QgdWkzMkJhc2UpKVJPTV9JMkNUQUJMRVsxMl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNNYXN0ZXJHbGl0Y2hGaWx0ZXJDb25maWdTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdWkzMkNvbmZpZykpUk9NX0kyQ1RBQkxFWzEzXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyQ1NsYXZlRklGT0VuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB1aTMyQ29uZmlnKSlST01fSTJDVEFCTEVbMTRdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJDU2xhdmVGSUZPRGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlKSlST01fSTJDVEFCTEVbMTVdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJDTWFzdGVyQnVzQnVzeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKGJvb2wgKCopKHVpbnQzMl90IHVpMzJCYXNlKSlST01fSTJDVEFCTEVbMTZdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJDTWFzdGVyQnVzeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKGJvb2wgKCopKHVpbnQzMl90IHVpMzJCYXNlKSlST01fSTJDVEFCTEVbMTddKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJDTWFzdGVyQ29udHJvbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHVpMzJDbWQpKVJPTV9JMkNUQUJMRVsxOF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNNYXN0ZXJEYXRhR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodWludDMyX3QgKCopKHVpbnQzMl90IHVpMzJCYXNlKSlST01fSTJDVEFCTEVbMTldKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJDTWFzdGVyRGF0YVB1dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgdWk4RGF0YSkpUk9NX0kyQ1RBQkxFWzIwXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyQ01hc3RlckRpc2FibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSkpUk9NX0kyQ1RBQkxFWzIxXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyQ01hc3RlckVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSkpUk9NX0kyQ1RBQkxFWzIyXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyQ01hc3RlckVyciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1aW50MzJfdCAoKikodWludDMyX3QgdWkzMkJhc2UpKVJPTV9JMkNUQUJMRVsyM10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNNYXN0ZXJJbnRDbGVhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UpKVJPTV9JMkNUQUJMRVsyNF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNNYXN0ZXJJbnREaXNhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UpKVJPTV9JMkNUQUJMRVsyNV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNNYXN0ZXJJbnRFbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UpKVJPTV9JMkNUQUJMRVsyNl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNNYXN0ZXJJbnRTdGF0dXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgoYm9vbCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgYm9vbCBiTWFza2VkKSlST01fSTJDVEFCTEVbMjddKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJDTWFzdGVySW50RW5hYmxlRXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHVpMzJJbnRGbGFncykpUk9NX0kyQ1RBQkxFWzI4XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyQ01hc3RlckludERpc2FibGVFeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB1aTMySW50RmxhZ3MpKVJPTV9JMkNUQUJMRVsyOV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNNYXN0ZXJJbnRTdGF0dXNFeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodWludDMyX3QgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYk1hc2tlZCkpUk9NX0kyQ1RBQkxFWzMwXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyQ01hc3RlckludENsZWFyRXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB1aTMySW50RmxhZ3MpKVJPTV9JMkNUQUJMRVszMV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNNYXN0ZXJUaW1lb3V0U2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdWkzMlZhbHVlKSlST01fSTJDVEFCTEVbMzJdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJDU2xhdmVBQ0tPdmVycmlkZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIGJvb2wgYkVuYWJsZSkpUk9NX0kyQ1RBQkxFWzMzXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyQ1NsYXZlQUNLVmFsdWVTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICBib29sIGJBQ0spKVJPTV9JMkNUQUJMRVszNF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNNYXN0ZXJMaW5lU3RhdGVHZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodWludDMyX3QgKCopKHVpbnQzMl90IHVpMzJCYXNlKSlST01fSTJDVEFCTEVbMzVdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJDTWFzdGVyU2xhdmVBZGRyU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgdWk4U2xhdmVBZGRyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIGJvb2wgYlJlY2VpdmUpKVJPTV9JMkNUQUJMRVszNl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNTbGF2ZURhdGFHZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodWludDMyX3QgKCopKHVpbnQzMl90IHVpMzJCYXNlKSlST01fSTJDVEFCTEVbMzddKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJDU2xhdmVEYXRhUHV0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgdWk4RGF0YSkpUk9NX0kyQ1RBQkxFWzM4XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyQ1NsYXZlRGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSkpUk9NX0kyQ1RBQkxFWzM5XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyQ1NsYXZlRW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSkpUk9NX0kyQ1RBQkxFWzQwXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyQ1NsYXZlSW5pdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90IHVpOFNsYXZlQWRkcikpUk9NX0kyQ1RBQkxFWzQxXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyQ1NsYXZlQWRkcmVzc1NldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90IHVpOEFkZHJOdW0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90IHVpOFNsYXZlQWRkcikpUk9NX0kyQ1RBQkxFWzQyXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyQ1NsYXZlSW50Q2xlYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSkpUk9NX0kyQ1RBQkxFWzQzXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyQ1NsYXZlSW50RGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSkpUk9NX0kyQ1RBQkxFWzQ0XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyQ1NsYXZlSW50RW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSkpUk9NX0kyQ1RBQkxFWzQ1XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyQ1NsYXZlSW50Q2xlYXJFeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB1aTMySW50RmxhZ3MpKVJPTV9JMkNUQUJMRVs0Nl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNTbGF2ZUludERpc2FibGVFeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdWkzMkludEZsYWdzKSlST01fSTJDVEFCTEVbNDddKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJDU2xhdmVJbnRFbmFibGVFeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHVpMzJJbnRGbGFncykpUk9NX0kyQ1RBQkxFWzQ4XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyQ1NsYXZlSW50U3RhdHVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKChib29sICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICBib29sIGJNYXNrZWQpKVJPTV9JMkNUQUJMRVs0OV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNTbGF2ZUludFN0YXR1c0V4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodWludDMyX3QgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYk1hc2tlZCkpUk9NX0kyQ1RBQkxFWzUwXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyQ1NsYXZlU3RhdHVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1aW50MzJfdCAoKikodWludDMyX3QgdWkzMkJhc2UpKVJPTV9JMkNUQUJMRVs1MV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNNYXN0ZXJJbml0RXhwQ2xrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdWkzMkkyQ0NsaywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgYm9vbCBiRmFzdCkpUk9NX0kyQ1RBQkxFWzUyXSkKKyNlbmRpZgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFjcm9zIGZvciBjYWxsaW5nIFJPTSBmdW5jdGlvbnMgaW4gdGhlIFNQSSBBUEkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NQSUVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSkpUk9NX1NQSVRBQkxFWzBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU1BJRGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fU1BJVEFCTEVbMV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TUElSZXNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9TUElUQUJMRVsyXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NQSUNvbmZpZ1NldEV4cENsayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxTUElDbGssICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsQml0UmF0ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsTW9kZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsU3ViTW9kZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsQ29uZmlnKSlST01fU1BJVEFCTEVbM10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TUElEYXRhR2V0Tm9uQmxvY2tpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgobG9uZyAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqIHB1bERhdGEpKVJPTV9TUElUQUJMRVs0XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NQSURhdGFHZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICpwdWxEYXRhKSlST01fU1BJVEFCTEVbNV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TUElEYXRhUHV0Tm9uQmxvY2tpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgobG9uZyAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bERhdGEpKVJPTV9TUElUQUJMRVs2XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NQSURhdGFQdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsRGF0YSkpUk9NX1NQSVRBQkxFWzddKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU1BJRklGT0VuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxGbGFncykpUk9NX1NQSVRBQkxFWzhdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU1BJRklGT0Rpc2FibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxGbGFncykpUk9NX1NQSVRBQkxFWzldKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU1BJRklGT0xldmVsU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxUeExldmVsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxSeExldmVsKSlST01fU1BJVEFCTEVbMTBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU1BJRklGT0xldmVsR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKnB1bFR4TGV2ZWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKnB1bFJ4TGV2ZWwpKVJPTV9TUElUQUJMRVsxMV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TUElXb3JkQ291bnRTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFdvcmRDb3VudCkpUk9NX1NQSVRBQkxFWzEyXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NQSUludFJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB2b2lkKCpwZm5IYW5kbGVyKSh2b2lkKSkpUk9NX1NQSVRBQkxFWzEzXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NQSUludFVucmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSkpUk9NX1NQSVRBQkxFWzE0XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NQSUludEVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsSW50RmxhZ3MpKVJPTV9TUElUQUJMRVsxNV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TUElJbnREaXNhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bEludEZsYWdzKSlST01fU1BJVEFCTEVbMTZdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU1BJSW50U3RhdHVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRCb29sZWFuIGJNYXNrZWQpKVJPTV9TUElUQUJMRVsxN10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TUElJbnRDbGVhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bEludEZsYWdzKSlST01fU1BJVEFCTEVbMThdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU1BJRG1hRW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxGbGFncykpUk9NX1NQSVRBQkxFWzE5XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NQSURtYURpc2FibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsRmxhZ3MpKVJPTV9TUElUQUJMRVsyMF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TUElDU0VuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9TUElUQUJMRVsyMV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TUElDU0Rpc2FibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9TUElUQUJMRVsyMl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TUElUcmFuc2ZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgobG9uZyAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqdWNEb3V0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqdWNEaW4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFNpemUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bEZsYWdzKSlST01fU1BJVEFCTEVbMjNdKQorI2VuZGlmCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYWNyb3MgZm9yIGNhbGxpbmcgUk9NIGZ1bmN0aW9ucyBpbiB0aGUgQ0FNIEFQSS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQ2FtZXJhUmVzZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fQ0FNRVJBVEFCTEVbMF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9DYW1lcmFQYXJhbXNDb25maWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bEhTUG9sLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFZTUG9sLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bEZsYWdzKSlST01fQ0FNRVJBVEFCTEVbMV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9DYW1lcmFYQ2xrQ29uZmlnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bENhbUNsa0luLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFhDbGspKVJPTV9DQU1FUkFUQUJMRVsyXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0NhbWVyYVhDbGtTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGJYQ2xrRmxhZ3MpKVJPTV9DQU1FUkFUQUJMRVszXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0NhbWVyYURNQUVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSkpUk9NX0NBTUVSQVRBQkxFWzRdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQ2FtZXJhRE1BRGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fQ0FNRVJBVEFCTEVbNV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9DYW1lcmFUaHJlc2hvbGRTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFRocmVzaG9sZCkpUk9NX0NBTUVSQVRBQkxFWzZdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQ2FtZXJhSW50UmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHZvaWQgKCpwZm5IYW5kbGVyKSh2b2lkKSkpUk9NX0NBTUVSQVRBQkxFWzddKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQ2FtZXJhSW50VW5yZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fQ0FNRVJBVEFCTEVbOF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9DYW1lcmFJbnRFbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bEludEZsYWdzKSlST01fQ0FNRVJBVEFCTEVbOV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9DYW1lcmFJbnREaXNhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bEludEZsYWdzKSlST01fQ0FNRVJBVEFCTEVbMTBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQ2FtZXJhSW50U3RhdHVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fQ0FNRVJBVEFCTEVbMTFdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQ2FtZXJhSW50Q2xlYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxJbnRGbGFncykpUk9NX0NBTUVSQVRBQkxFWzEyXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0NhbWVyYUNhcHR1cmVTdG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB0Qm9vbGVhbiBiSW1tZWRpYXRlKSlST01fQ0FNRVJBVEFCTEVbMTNdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQ2FtZXJhQ2FwdHVyZVN0YXJ0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fQ0FNRVJBVEFCTEVbMTRdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQ2FtZXJhQnVmZmVyUmVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqcEJ1ZmZlciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgdWNTaXplKSlST01fQ0FNRVJBVEFCTEVbMTVdKQorI2VuZGlmCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYWNyb3MgZm9yIGNhbGxpbmcgUk9NIGZ1bmN0aW9ucyBpbiB0aGUgRkxBU0ggQVBJLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9GbGFzaERpc2FibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodm9pZCkpUk9NX0ZMQVNIVEFCTEVbMF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9GbGFzaEVyYXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgobG9uZyAoKikodW5zaWduZWQgbG9uZyB1bEFkZHJlc3MpKVJPTV9GTEFTSFRBQkxFWzFdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fRmxhc2hNYXNzRXJhc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKGxvbmcgKCopKHZvaWQpKVJPTV9GTEFTSFRBQkxFWzJdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fRmxhc2hNYXNzRXJhc2VOb25CbG9ja2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHZvaWQpKVJPTV9GTEFTSFRBQkxFWzNdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fRmxhc2hFcmFzZU5vbkJsb2NraW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxBZGRyZXNzKSlST01fRkxBU0hUQUJMRVs0XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0ZsYXNoUHJvZ3JhbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKChsb25nICgqKSh1bnNpZ25lZCBsb25nICpwdWxEYXRhLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsQWRkcmVzcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsQ291bnQpKVJPTV9GTEFTSFRBQkxFWzVdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fRmxhc2hQcm9ncmFtTm9uQmxvY2tpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgKnB1bERhdGEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxBZGRyZXNzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxDb3VudCkpUk9NX0ZMQVNIVEFCTEVbNl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9GbGFzaEludFJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodm9pZCAoKnBmbkhhbmRsZXIpKHZvaWQpKSlST01fRkxBU0hUQUJMRVs3XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0ZsYXNoSW50VW5yZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh2b2lkKSlST01fRkxBU0hUQUJMRVs4XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0ZsYXNoSW50RW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsSW50RmxhZ3MpKVJPTV9GTEFTSFRBQkxFWzldKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fRmxhc2hJbnREaXNhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxJbnRGbGFncykpUk9NX0ZMQVNIVEFCTEVbMTBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fRmxhc2hJbnRTdGF0dXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHRCb29sZWFuIGJNYXNrZWQpKVJPTV9GTEFTSFRBQkxFWzExXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0ZsYXNoSW50Q2xlYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsSW50RmxhZ3MpKVJPTV9GTEFTSFRBQkxFWzEyXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0ZsYXNoUHJvdGVjdEdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh0Rmxhc2hQcm90ZWN0aW9uICgqKSh1bnNpZ25lZCBsb25nIHVsQWRkcmVzcykpUk9NX0ZMQVNIVEFCTEVbMTNdKQorI2VuZGlmCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYWNyb3MgZm9yIGNhbGxpbmcgUk9NIGZ1bmN0aW9ucyBpbiB0aGUgUGluIEFQSS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUGluTW9kZVNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxQaW4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxQaW5Nb2RlKSlST01fUElOVEFCTEVbMF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QaW5EaXJNb2RlU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bFBpbiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFBpbklPKSlST01fUElOVEFCTEVbMV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QaW5EaXJNb2RlR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyAoKikodW5zaWduZWQgbG9uZyB1bFBpbikpUk9NX1BJTlRBQkxFWzJdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUGluTW9kZUdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgdWxQaW4pKVJPTV9QSU5UQUJMRVszXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BpbkNvbmZpZ0dldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsUGluLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgICpwdWxQaW5TdHJlbmd0aCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICpwdWxQaW5UeXBlKSlST01fUElOVEFCTEVbNF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QaW5Db25maWdTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bFBpbiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICB1bFBpblN0cmVuZ3RoLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFBpblR5cGUpKVJPTV9QSU5UQUJMRVs1XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BpblR5cGVVQVJUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsUGluLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxQaW5Nb2RlKSlST01fUElOVEFCTEVbNl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QaW5UeXBlSTJDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bFBpbiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsUGluTW9kZSkpUk9NX1BJTlRBQkxFWzddKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUGluVHlwZVNQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxQaW4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFBpbk1vZGUpKVJPTV9QSU5UQUJMRVs4XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BpblR5cGVJMlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsUGluLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxQaW5Nb2RlKSlST01fUElOVEFCTEVbOV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QaW5UeXBlVGltZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bFBpbiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsUGluTW9kZSkpUk9NX1BJTlRBQkxFWzEwXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BpblR5cGVDYW1lcmEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsUGluLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxQaW5Nb2RlKSlST01fUElOVEFCTEVbMTFdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUGluVHlwZUdQSU8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxQaW4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFBpbk1vZGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHRCb29sZWFuIGJPcGVuRHJhaW4pKVJPTV9QSU5UQUJMRVsxMl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QaW5UeXBlQURDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bFBpbiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsUGluTW9kZSkpUk9NX1BJTlRBQkxFWzEzXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BpblR5cGVTREhvc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsUGluLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxQaW5Nb2RlKSlST01fUElOVEFCTEVbMTRdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUGluSHlzdGVyZXNpc1NldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxIeXN0ZXJlc2lzKSlST01fUElOVEFCTEVbMTVdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUGluTG9ja0xldmVsU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxQaW4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgdWNMZXZlbCkpUk9NX1BJTlRBQkxFWzE2XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BpbkxvY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsT3V0RW5hYmxlKSlST01fUElOVEFCTEVbMTddKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUGluVW5sb2NrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHZvaWQpKVJPTV9QSU5UQUJMRVsxOF0pCisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIE1hY3JvcyBmb3IgY2FsbGluZyBST00gZnVuY3Rpb25zIGluIHRoZSBTWVNUSUNLIEFQSS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU3lzVGlja0VuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHZvaWQpKVJPTV9TWVNUSUNLVEFCTEVbMF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TeXNUaWNrRGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodm9pZCkpUk9NX1NZU1RJQ0tUQUJMRVsxXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1N5c1RpY2tJbnRSZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh2b2lkICgqcGZuSGFuZGxlcikodm9pZCkpKVJPTV9TWVNUSUNLVEFCTEVbMl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TeXNUaWNrSW50VW5yZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodm9pZCkpUk9NX1NZU1RJQ0tUQUJMRVszXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1N5c1RpY2tJbnRFbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh2b2lkKSlST01fU1lTVElDS1RBQkxFWzRdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU3lzVGlja0ludERpc2FibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHZvaWQpKVJPTV9TWVNUSUNLVEFCTEVbNV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TeXNUaWNrUGVyaW9kU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bFBlcmlvZCkpUk9NX1NZU1RJQ0tUQUJMRVs2XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1N5c1RpY2tQZXJpb2RHZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nICgqKSh2b2lkKSlST01fU1lTVElDS1RBQkxFWzddKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU3lzVGlja1ZhbHVlR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHZvaWQpKVJPTV9TWVNUSUNLVEFCTEVbOF0pCisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIE1hY3JvcyBmb3IgY2FsbGluZyBST00gZnVuY3Rpb25zIGluIHRoZSBVVElMUyBBUEkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1V0aWxzRGVsYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQ291bnQpKVJPTV9VVElMU1RBQkxFWzBdKQorI2VuZGlmCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYWNyb3MgZm9yIGNhbGxpbmcgUk9NIGZ1bmN0aW9ucyBpbiB0aGUgSTJTIEFQSS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJTRW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxNb2RlKSlST01fSTJTVEFCTEVbMF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMlNEaXNhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9JMlNUQUJMRVsxXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyU0RhdGFQdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsRGF0YUxpbmUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsRGF0YSkpUk9NX0kyU1RBQkxFWzJdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJTRGF0YVB1dE5vbkJsb2NraW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxEYXRhTGluZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxEYXRhKSlST01fSTJTVEFCTEVbM10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMlNEYXRhR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bERhdGFMaW5lLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqcHVsRGF0YSkpUk9NX0kyU1RBQkxFWzRdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJTRGF0YUdldE5vbkJsb2NraW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxEYXRhTGluZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKnB1bERhdGEpKVJPTV9JMlNUQUJMRVs1XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyU0NvbmZpZ1NldEV4cENsayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsSTJTQ2xrLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsQml0Q2xrLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsQ29uZmlnKSlST01fSTJTVEFCTEVbNl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMlNUeEZJRk9FbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFR4TGV2ZWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFdvcmRzUGVyVHJhbnNmZXIpKVJPTV9JMlNUQUJMRVs3XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyU1R4RklGT0Rpc2FibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSkpUk9NX0kyU1RBQkxFWzhdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJTUnhGSUZPRW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxSeExldmVsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxXb3Jkc1BlclRyYW5zZmVyKSlST01fSTJTVEFCTEVbOV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMlNSeEZJRk9EaXNhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9JMlNUQUJMRVsxMF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMlNUeEZJRk9TdGF0dXNHZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9JMlNUQUJMRVsxMV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMlNSeEZJRk9TdGF0dXNHZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9JMlNUQUJMRVsxMl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMlNTZXJpYWxpemVyQ29uZmlnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bERhdGFMaW5lLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFNlck1vZGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bEluQWN0U3RhdGUpKVJPTV9JMlNUQUJMRVsxM10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMlNJbnRFbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bEludEZsYWdzKSlST01fSTJTVEFCTEVbMTRdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJTSW50RGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxJbnRGbGFncykpUk9NX0kyU1RBQkxFWzE1XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyU0ludFN0YXR1cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSkpUk9NX0kyU1RBQkxFWzE2XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyU0ludENsZWFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsSW50RmxhZ3MpKVJPTV9JMlNUQUJMRVsxN10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMlNJbnRSZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdm9pZCAoKnBmbkhhbmRsZXIpKHZvaWQpKSlST01fSTJTVEFCTEVbMThdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJTSW50VW5yZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fSTJTVEFCTEVbMTldKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJTVHhBY3RpdmVTbG90U2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxBY3RTbG90KSlST01fSTJTVEFCTEVbMjBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJTUnhBY3RpdmVTbG90U2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxBY3RTbG90KSlST01fSTJTVEFCTEVbMjFdKQorI2VuZGlmCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYWNyb3MgZm9yIGNhbGxpbmcgUk9NIGZ1bmN0aW9ucyBpbiB0aGUgR1BJTyBBUEkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0dQSU9EaXJNb2RlU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsUG9ydCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHVjUGlucywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsUGluSU8pKVJPTV9HUElPVEFCTEVbMF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9HUElPRGlyTW9kZUdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyAoKikodW5zaWduZWQgbG9uZyB1bFBvcnQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciB1Y1BpbikpUk9NX0dQSU9UQUJMRVsxXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0dQSU9JbnRUeXBlU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsUG9ydCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHVjUGlucywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsSW50VHlwZSkpUk9NX0dQSU9UQUJMRVsyXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0dQSU9ETUFUcmlnZ2VyRW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsUG9ydCkpUk9NX0dQSU9UQUJMRVszXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0dQSU9ETUFUcmlnZ2VyRGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsUG9ydCkpUk9NX0dQSU9UQUJMRVs0XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0dQSU9JbnRUeXBlR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nICgqKSh1bnNpZ25lZCBsb25nIHVsUG9ydCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHVjUGluKSlST01fR1BJT1RBQkxFWzVdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fR1BJT0ludEVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxQb3J0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxJbnRGbGFncykpUk9NX0dQSU9UQUJMRVs2XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0dQSU9JbnREaXNhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsUG9ydCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsSW50RmxhZ3MpKVJPTV9HUElPVEFCTEVbN10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9HUElPSW50U3RhdHVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgobG9uZyAoKikodW5zaWduZWQgbG9uZyB1bFBvcnQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdEJvb2xlYW4gYk1hc2tlZCkpUk9NX0dQSU9UQUJMRVs4XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0dQSU9JbnRDbGVhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsUG9ydCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsSW50RmxhZ3MpKVJPTV9HUElPVEFCTEVbOV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9HUElPSW50UmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bFBvcnQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdm9pZCAoKnBmbkludEhhbmRsZXIpKHZvaWQpKSlST01fR1BJT1RBQkxFWzEwXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0dQSU9JbnRVbnJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsUG9ydCkpUk9NX0dQSU9UQUJMRVsxMV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9HUElPUGluUmVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgobG9uZyAoKikodW5zaWduZWQgbG9uZyB1bFBvcnQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciB1Y1BpbnMpKVJPTV9HUElPVEFCTEVbMTJdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fR1BJT1BpbldyaXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxQb3J0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgdWNQaW5zLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgdWNWYWwpKVJPTV9HUElPVEFCTEVbMTNdKQorI2VuZGlmCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYWNyb3MgZm9yIGNhbGxpbmcgUk9NIGZ1bmN0aW9ucyBpbiB0aGUgQUVTIEFQSS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQUVTQ29uZmlnU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHVpMzJDb25maWcpKVJPTV9BRVNUQUJMRVswXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0FFU0tleTFTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwdWk4S2V5LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB1aTMyS2V5c2l6ZSkpUk9NX0FFU1RBQkxFWzFdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQUVTS2V5MlNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnB1aThLZXksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHVpMzJLZXlzaXplKSlST01fQUVTVEFCTEVbMl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9BRVNLZXkzU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcHVpOEtleSkpUk9NX0FFU1RBQkxFWzNdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQUVTSVZTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnB1aThJVmRhdGEpKVJPTV9BRVNUQUJMRVs0XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0FFU1RhZ1JlYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwdWk4VGFnRGF0YSkpUk9NX0FFU1RBQkxFWzVdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQUVTRGF0YUxlbmd0aFNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHVpNjRMZW5ndGgpKVJPTV9BRVNUQUJMRVs2XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0FFU0F1dGhEYXRhTGVuZ3RoU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB1aTMyTGVuZ3RoKSlST01fQUVTVEFCTEVbN10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9BRVNEYXRhUmVhZE5vbkJsb2NraW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgoYm9vbCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcHVpOERlc3QsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDhfdCB1aThMZW5ndGgpKVJPTV9BRVNUQUJMRVs4XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0FFU0RhdGFSZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwdWk4RGVzdCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90IHVpOExlbmd0aCkpUk9NX0FFU1RBQkxFWzldKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQUVTRGF0YVdyaXRlTm9uQmxvY2tpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKGJvb2wgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnB1aThTcmMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgdWk4TGVuZ3RoKSlST01fQUVTVEFCTEVbMTBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQUVTRGF0YVdyaXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnB1aThTcmMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgdWk4TGVuZ3RoKSlST01fQUVTVEFCTEVbMTFdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQUVTRGF0YVByb2Nlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKGJvb2wgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnB1aThTcmMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnB1aThEZXN0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHVpMzJMZW5ndGgpKVJPTV9BRVNUQUJMRVsxMl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9BRVNEYXRhTUFDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgoYm9vbCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcHVpOFNyYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdWkzMkxlbmd0aCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcHVpOFRhZykpUk9NX0FFU1RBQkxFWzEzXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0FFU0RhdGFQcm9jZXNzQUUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKChib29sICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwdWk4U3JjLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwdWk4RGVzdCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB1aTMyTGVuZ3RoLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwdWk4QXV0aFNyYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB1aTMyQXV0aExlbmd0aCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwdWk4VGFnKSlST01fQUVTVEFCTEVbMTRdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQUVTSW50U3RhdHVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVpbnQzMl90ICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICBib29sIGJNYXNrZWQpKVJPTV9BRVNUQUJMRVsxNV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9BRVNJbnRFbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdWkzMkludEZsYWdzKSlST01fQUVTVEFCTEVbMTZdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQUVTSW50RGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHVpMzJJbnRGbGFncykpUk9NX0FFU1RBQkxFWzE3XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0FFU0ludENsZWFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB1aTMySW50RmxhZ3MpKVJPTV9BRVNUQUJMRVsxOF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9BRVNJbnRSZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdm9pZCgqcGZuSGFuZGxlcikodm9pZCkpKVJPTV9BRVNUQUJMRVsxOV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9BRVNJbnRVbnJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UpKVJPTV9BRVNUQUJMRVsyMF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9BRVNETUFFbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdWkzMkZsYWdzKSlST01fQUVTVEFCTEVbMjFdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQUVTRE1BRGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHVpMzJGbGFncykpUk9NX0FFU1RBQkxFWzIyXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0FFU0lWR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwdWk4SVZkYXRhKSlST01fQUVTVEFCTEVbMjNdKQorI2VuZGlmCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYWNyb3MgZm9yIGNhbGxpbmcgUk9NIGZ1bmN0aW9ucyBpbiB0aGUgREVTIEFQSS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fREVTQ29uZmlnU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHVpMzJDb25maWcpKVJPTV9ERVNUQUJMRVswXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0RFU0RhdGFSZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwdWk4RGVzdCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90IHVpOExlbmd0aCkpUk9NX0RFU1RBQkxFWzFdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fREVTRGF0YVJlYWROb25CbG9ja2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKGJvb2wgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnB1aThEZXN0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgdWk4TGVuZ3RoKSlST01fREVTVEFCTEVbMl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9ERVNEYXRhUHJvY2VzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgoYm9vbCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcHVpOFNyYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcHVpOERlc3QsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdWkzMkxlbmd0aCkpUk9NX0RFU1RBQkxFWzNdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fREVTRGF0YVdyaXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnB1aThTcmMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgdWk4TGVuZ3RoKSlST01fREVTVEFCTEVbNF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9ERVNEYXRhV3JpdGVOb25CbG9ja2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgoYm9vbCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcHVpOFNyYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDhfdCB1aThMZW5ndGgpKVJPTV9ERVNUQUJMRVs1XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0RFU0RNQURpc2FibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB1aTMyRmxhZ3MpKVJPTV9ERVNUQUJMRVs2XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0RFU0RNQUVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB1aTMyRmxhZ3MpKVJPTV9ERVNUQUJMRVs3XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0RFU0ludENsZWFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB1aTMySW50RmxhZ3MpKVJPTV9ERVNUQUJMRVs4XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0RFU0ludERpc2FibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB1aTMySW50RmxhZ3MpKVJPTV9ERVNUQUJMRVs5XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0RFU0ludEVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB1aTMySW50RmxhZ3MpKVJPTV9ERVNUQUJMRVsxMF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9ERVNJbnRSZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdm9pZCgqcGZuSGFuZGxlcikodm9pZCkpKVJPTV9ERVNUQUJMRVsxMV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9ERVNJbnRTdGF0dXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodWludDMyX3QgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYk1hc2tlZCkpUk9NX0RFU1RBQkxFWzEyXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0RFU0ludFVucmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSkpUk9NX0RFU1RBQkxFWzEzXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0RFU0lWU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKChib29sICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwdWk4SVZkYXRhKSlST01fREVTVEFCTEVbMTRdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fREVTS2V5U2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnB1aThLZXkpKVJPTV9ERVNUQUJMRVsxNV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9ERVNEYXRhTGVuZ3RoU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdWkzMkxlbmd0aCkpUk9NX0RFU1RBQkxFWzE2XSkKKyNlbmRpZgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFjcm9zIGZvciBjYWxsaW5nIFJPTSBmdW5jdGlvbnMgaW4gdGhlIFNIQU1ENSBBUEkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NIQU1ENUNvbmZpZ1NldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB1aTMyTW9kZSkpUk9NX1NIQU1ENVRBQkxFWzBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU0hBTUQ1RGF0YVByb2Nlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKGJvb2wgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnB1aThEYXRhU3JjLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHVpMzJEYXRhTGVuZ3RoLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnB1aThIYXNoUmVzdWx0KSlST01fU0hBTUQ1VEFCTEVbMV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TSEFNRDVEYXRhV3JpdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcHVpOFNyYykpUk9NX1NIQU1ENVRBQkxFWzJdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU0hBTUQ1RGF0YVdyaXRlTm9uQmxvY2tpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKGJvb2wgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnB1aThTcmMpKVJPTV9TSEFNRDVUQUJMRVszXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NIQU1ENURNQURpc2FibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSkpUk9NX1NIQU1ENVRBQkxFWzRdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU0hBTUQ1RE1BRW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlKSlST01fU0hBTUQ1VEFCTEVbNV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TSEFNRDVEYXRhTGVuZ3RoU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdWkzMkxlbmd0aCkpUk9NX1NIQU1ENVRBQkxFWzZdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU0hBTUQ1SE1BQ0tleVNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnB1aThTcmMpKVJPTV9TSEFNRDVUQUJMRVs3XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NIQU1ENUhNQUNQUEtleUdlbmVyYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwdWk4S2V5LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwdWk4UFBLZXkpKVJPTV9TSEFNRDVUQUJMRVs4XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NIQU1ENUhNQUNQUEtleVNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwdWk4U3JjKSlST01fU0hBTUQ1VEFCTEVbOV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TSEFNRDVITUFDUHJvY2VzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgoYm9vbCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcHVpOERhdGFTcmMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdWkzMkRhdGFMZW5ndGgsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcHVpOEhhc2hSZXN1bHQpKVJPTV9TSEFNRDVUQUJMRVsxMF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TSEFNRDVJbnRDbGVhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdWkzMkludEZsYWdzKSlST01fU0hBTUQ1VEFCTEVbMTFdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU0hBTUQ1SW50RGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHVpMzJJbnRGbGFncykpUk9NX1NIQU1ENVRBQkxFWzEyXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NIQU1ENUludEVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB1aTMySW50RmxhZ3MpKVJPTV9TSEFNRDVUQUJMRVsxM10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TSEFNRDVJbnRSZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdm9pZCgqcGZuSGFuZGxlcikodm9pZCkpKVJPTV9TSEFNRDVUQUJMRVsxNF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TSEFNRDVJbnRTdGF0dXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodWludDMyX3QgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYk1hc2tlZCkpUk9NX1NIQU1ENVRBQkxFWzE1XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NIQU1ENUludFVucmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSkpUk9NX1NIQU1ENVRBQkxFWzE2XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NIQU1ENVJlc3VsdFJlYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwdWk4RGVzdCkpUk9NX1NIQU1ENVRBQkxFWzE3XSkKKyNlbmRpZgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFjcm9zIGZvciBjYWxsaW5nIFJPTSBmdW5jdGlvbnMgaW4gdGhlIENSQyBBUEkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0NSQ0NvbmZpZ1NldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB1aTMyQ1JDQ29uZmlnKSlST01fQ1JDVEFCTEVbMF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9DUkNEYXRhUHJvY2VzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodWludDMyX3QgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnB1aURhdGFJbiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHVpMzJEYXRhTGVuZ3RoLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHVpMzJDb25maWcpKVJPTV9DUkNUQUJMRVsxXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0NSQ0RhdGFXcml0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB1aTMyRGF0YSkpUk9NX0NSQ1RBQkxFWzJdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQ1JDUmVzdWx0UmVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVpbnQzMl90ICgqKSh1aW50MzJfdCB1aTMyQmFzZSkpUk9NX0NSQ1RBQkxFWzNdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQ1JDU2VlZFNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHVpMzJTZWVkKSlST01fQ1JDVEFCTEVbNF0pCisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIE1hY3JvcyBmb3IgY2FsbGluZyBST00gZnVuY3Rpb25zIGluIHRoZSBTREhPU1QgQVBJLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TREhvc3RDbWRSZXNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9TREhPU1RUQUJMRVswXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NESG9zdEluaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSkpUk9NX1NESE9TVFRBQkxFWzFdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU0RIb3N0Q21kU2VuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bENtZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHVsQXJnKSlST01fU0RIT1NUVEFCTEVbMl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TREhvc3RJbnRSZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdm9pZCAoKnBmbkhhbmRsZXIpKHZvaWQpKSlST01fU0RIT1NUVEFCTEVbM10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TREhvc3RJbnRVbnJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9TREhPU1RUQUJMRVs0XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NESG9zdEludEVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxJbnRGbGFncykpUk9NX1NESE9TVFRBQkxFWzVdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU0RIb3N0SW50RGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bEludEZsYWdzKSlST01fU0RIT1NUVEFCTEVbNl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TREhvc3RJbnRTdGF0dXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9TREhPU1RUQUJMRVs3XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NESG9zdEludENsZWFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxJbnRGbGFncykpUk9NX1NESE9TVFRBQkxFWzhdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU0RIb3N0UmVzcEdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxSZXNwbnNlWzRdKSlST01fU0RIT1NUVEFCTEVbMTBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU0RIb3N0QmxvY2tTaXplU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IHVsQmxrU2l6ZSkpUk9NX1NESE9TVFRBQkxFWzExXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NESG9zdEJsb2NrQ291bnRTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCB1bEJsa0NvdW50KSlST01fU0RIT1NUVEFCTEVbMTJdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU0RIb3N0RGF0YU5vbkJsb2NraW5nV3JpdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHRCb29sZWFuICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsRGF0YSkpUk9NX1NESE9TVFRBQkxFWzEzXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NESG9zdERhdGFOb25CbG9ja2luZ1JlYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh0Qm9vbGVhbiAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqcHVsRGF0YSkpUk9NX1NESE9TVFRBQkxFWzE0XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NESG9zdERhdGFXcml0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsRGF0YSkpUk9NX1NESE9TVFRBQkxFWzE1XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NESG9zdERhdGFSZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICp1bERhdGEpKVJPTV9TREhPU1RUQUJMRVsxNl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TREhvc3RTZXRFeHBDbGsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFNESG9zdENsaywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bENhcmRDbGspKVJPTV9TREhPU1RUQUJMRVsxN10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TREhvc3RDYXJkRXJyb3JNYXNrU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bEVyck1hc2spKVJPTV9TREhPU1RUQUJMRVsxOF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TREhvc3RDYXJkRXJyb3JNYXNrR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9TREhPU1RUQUJMRVsxOV0pCisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIE1hY3JvcyBmb3IgY2FsbGluZyBST00gZnVuY3Rpb25zIGluIHRoZSBQUkNNIEFQSS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUFJDTU1DVVJlc2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHRCb29sZWFuIGJJbmNsdWRlU3Vic3lzdGVtKSlST01fUFJDTVRBQkxFWzFdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUFJDTVN5c1Jlc2V0Q2F1c2VHZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHZvaWQpKVJPTV9QUkNNVEFCTEVbMl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QUkNNUGVyaXBoZXJhbENsa0VuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bFBlcmlwaGVyYWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bENsa0ZsYWdzKSlST01fUFJDTVRBQkxFWzNdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUFJDTVBlcmlwaGVyYWxDbGtEaXNhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxQZXJpcGhlcmFsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxDbGtGbGFncykpUk9NX1BSQ01UQUJMRVs0XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BSQ01QZXJpcGhlcmFsUmVzZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsUGVyaXBoZXJhbCkpUk9NX1BSQ01UQUJMRVs1XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BSQ01QZXJpcGhlcmFsU3RhdHVzR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh0Qm9vbGVhbiAoKikodW5zaWduZWQgbG9uZyB1bFBlcmlwaGVyYWwpKVJPTV9QUkNNVEFCTEVbNl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QUkNNSTJTQ2xvY2tGcmVxU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEkyQ0Nsa0ZyZXEpKVJPTV9QUkNNVEFCTEVbN10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QUkNNUGVyaXBoZXJhbENsb2NrR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyAoKikodW5zaWduZWQgbG9uZyB1bFBlcmlwaGVyYWwpKVJPTV9QUkNNVEFCTEVbOF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QUkNNU2xlZXBFbnRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodm9pZCkpUk9NX1BSQ01UQUJMRVs5XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BSQ01TUkFNUmV0ZW50aW9uRW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsU3JhbUNvbFNlbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsRmxhZ3MpKVJPTV9QUkNNVEFCTEVbMTFdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUFJDTVNSQU1SZXRlbnRpb25EaXNhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxTcmFtQ29sU2VsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxGbGFncykpUk9NX1BSQ01UQUJMRVsxMl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QUkNNTFBEU0VudGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodm9pZCkpUk9NX1BSQ01UQUJMRVsxM10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QUkNNTFBEU0ludGVydmFsU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bFRpY2tzKSlST01fUFJDTVRBQkxFWzE0XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BSQ01MUERTV2FrZXVwU291cmNlRW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsTHBkc1dha2V1cFNyYykpUk9NX1BSQ01UQUJMRVsxNV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QUkNNTFBEU1dha2V1cENhdXNlR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyAoKikodm9pZCkpUk9NX1BSQ01UQUJMRVsxNl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QUkNNTFBEU1dha2VVcEdQSU9TZWxlY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEdQSU9QaW4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFR5cGUpKVJPTV9QUkNNVEFCTEVbMTddKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUFJDTUxQRFNXYWtldXBTb3VyY2VEaXNhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxMcGRzV2FrZXVwU3JjKSlST01fUFJDTVRBQkxFWzE4XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BSQ01IaWJlcm5hdGVFbnRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh2b2lkKSlST01fUFJDTVRBQkxFWzE5XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BSQ01IaWJlcm5hdGVXYWtldXBTb3VyY2VFbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsSElCV2FrdXBTcmMpKVJPTV9QUkNNVEFCTEVbMjBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUFJDTUhpYmVybmF0ZVdha2V1cENhdXNlR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHZvaWQpKVJPTV9QUkNNVEFCTEVbMjFdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUFJDTUhpYmVybmF0ZVdha2VVcEdQSU9TZWxlY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxNdWx0aUdQSU9CaXRNYXAsICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxUeXBlKSlST01fUFJDTVRBQkxFWzIyXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BSQ01IaWJlcm5hdGVXYWtldXBTb3VyY2VEaXNhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsSElCV2FrdXBTcmMpKVJPTV9QUkNNVEFCTEVbMjNdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUFJDTUhpYmVybmF0ZUludGVydmFsU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgbG9uZyB1bGxUaWNrcykpUk9NX1BSQ01UQUJMRVsyNF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QUkNNU2xvd0Nsa0N0ckdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyBsb25nICgqKSh2b2lkKSlST01fUFJDTVRBQkxFWzI1XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BSQ01TbG93Q2xrQ3RyTWF0Y2hTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIGxvbmcgdWxsVGlja3MpKVJPTV9QUkNNVEFCTEVbMjZdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUFJDTVNsb3dDbGtDdHJNYXRjaEdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgbG9uZyAoKikodm9pZCkpUk9NX1BSQ01UQUJMRVsyN10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QUkNNT0NSUmVnaXN0ZXJXcml0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgY2hhciB1Y0luZGV4LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFJlZ1ZhbHVlKSlST01fUFJDTVRBQkxFWzI4XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BSQ01PQ1JSZWdpc3RlclJlYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nICgqKSh1bnNpZ25lZCBjaGFyIHVjSW5kZXgpKVJPTV9QUkNNVEFCTEVbMjldKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUFJDTUludFJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHZvaWQgKCpwZm5IYW5kbGVyKSh2b2lkKSkpUk9NX1BSQ01UQUJMRVszMF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QUkNNSW50VW5yZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodm9pZCkpUk9NX1BSQ01UQUJMRVszMV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QUkNNSW50RW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEludEZsYWdzKSlST01fUFJDTVRBQkxFWzMyXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BSQ01JbnREaXNhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsSW50RmxhZ3MpKVJPTV9QUkNNVEFCTEVbMzNdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUFJDTUludFN0YXR1cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHZvaWQpKVJPTV9QUkNNVEFCTEVbMzRdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUFJDTVJUQ0luVXNlU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHZvaWQpKVJPTV9QUkNNVEFCTEVbMzVdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUFJDTVJUQ0luVXNlR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHRCb29sZWFuICgqKSh2b2lkKSlST01fUFJDTVRBQkxFWzM2XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BSQ01SVENTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsU2VjcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCB1c01zZWMpKVJPTV9QUkNNVEFCTEVbMzddKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUFJDTVJUQ0dldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgKnVsU2VjcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0ICp1c01zZWMpKVJPTV9QUkNNVEFCTEVbMzhdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUFJDTVJUQ01hdGNoU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxTZWNzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IHVzTXNlYykpUk9NX1BSQ01UQUJMRVszOV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QUkNNUlRDTWF0Y2hHZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyAqdWxTZWNzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgKnVzTXNlYykpUk9NX1BSQ01UQUJMRVs0MF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QUkNNTFBEU1Jlc3RvcmVJbmZvU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bFJlc3RvcmVTUCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFJlc3RvcmVQQykpUk9NX1BSQ01UQUJMRVs0MV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QUkNNU2xvd0Nsa0N0ckZhc3RHZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyBsb25nICgqKSh2b2lkKSlST01fUFJDTVRBQkxFWzQyXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BSQ01DQzMyMDBNQ1VJbml0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh2b2lkKSlST01fUFJDTVRBQkxFWzQzXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BSQ01ISUJSZWdSZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nICgqKSh1bnNpZ25lZCBsb25nIHVsUmVnQWRkcikpUk9NX1BSQ01UQUJMRVs0NF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QUkNNSElCUmVnV3JpdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bFJlZ0FkZHIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFZhbHVlKSlST01fUFJDTVRBQkxFWzQ1XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BSQ01DYW1lcmFGcmVxU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nICgqKSh1bnNpZ25lZCBjaGFyIHVsRGl2aWRlciwgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHVsV2lkdGgpKVJPTV9QUkNNVEFCTEVbNDZdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUFJDTUlPUmV0ZW50aW9uRW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxJT1JldEdycEZsYWdzKSlST01fUFJDTVRBQkxFWzQ3XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BSQ01JT1JldGVudGlvbkRpc2FibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsSU9SZXRHcnBGbGFncykpUk9NX1BSQ01UQUJMRVs0OF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QUkNNRGV2aWNlVHlwZUdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyAoKikodm9pZCkpUk9NX1BSQ01UQUJMRVs0OV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QUkNNTFBEU0VudGVyS2VlcERlYnVnSWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodm9pZCkpUk9NX1BSQ01UQUJMRVs1MF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QUkNNSGliZXJuYXRlQ3ljbGVUcmlnZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodm9pZCkpUk9NX1BSQ01UQUJMRVs1MV0pCisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIE1hY3JvcyBmb3IgY2FsbGluZyBST00gZnVuY3Rpb25zIGluIHRoZSBIV1NQSU5MT0NLIEFQSS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSHdTcGluTG9ja0FjcXVpcmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJMb2NrSUQpKVJPTV9IV1NQSU5MT0NLVEFCTEVbMF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9Id1NwaW5Mb2NrVHJ5QWNxdWlyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgoaW50MzJfdCAoKikodWludDMyX3QgdWkzMkxvY2tJRCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdWkzMlJldHJ5KSlST01fSFdTUElOTE9DS1RBQkxFWzFdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSHdTcGluTG9ja1JlbGVhc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJMb2NrSUQpKVJPTV9IV1NQSU5MT0NLVEFCTEVbMl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9Id1NwaW5Mb2NrVGVzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodWludDMyX3QgKCopKHVpbnQzMl90IHVpMzJMb2NrSUQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYkN1cnJlbnRTdGF0dXMpKVJPTV9IV1NQSU5MT0NLVEFCTEVbM10pCisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIE1hY3JvcyBmb3IgY2FsbGluZyBST00gZnVuY3Rpb25zIGluIHRoZSBBREMgQVBJLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9BRENFbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9BRENUQUJMRVswXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0FEQ0Rpc2FibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSkpUk9NX0FEQ1RBQkxFWzFdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQURDQ2hhbm5lbEVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bENoYW5uZWwpKVJPTV9BRENUQUJMRVsyXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0FEQ0NoYW5uZWxEaXNhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxDaGFubmVsKSlST01fQURDVEFCTEVbM10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9BRENJbnRSZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bENoYW5uZWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdm9pZCAoKnBmbkhhbmRsZXIpKHZvaWQpKSlST01fQURDVEFCTEVbNF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9BRENJbnRVbnJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bENoYW5uZWwpKVJPTV9BRENUQUJMRVs1XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0FEQ0ludEVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsQ2hhbm5lbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsSW50RmxhZ3MpKVJPTV9BRENUQUJMRVs2XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0FEQ0ludERpc2FibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsQ2hhbm5lbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsSW50RmxhZ3MpKVJPTV9BRENUQUJMRVs3XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0FEQ0ludFN0YXR1cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxDaGFubmVsKSlST01fQURDVEFCTEVbOF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9BRENJbnRDbGVhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bENoYW5uZWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bEludEZsYWdzKSlST01fQURDVEFCTEVbOV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9BRENETUFFbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bENoYW5uZWwpKVJPTV9BRENUQUJMRVsxMF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9BRENETUFEaXNhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bENoYW5uZWwpKVJPTV9BRENUQUJMRVsxMV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9BRENUaW1lckNvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFZhbHVlKSlST01fQURDVEFCTEVbMTRdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQURDVGltZXJFbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fQURDVEFCTEVbMTVdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQURDVGltZXJEaXNhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fQURDVEFCTEVbMTZdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQURDVGltZXJSZXNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fQURDVEFCTEVbMTddKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQURDVGltZXJWYWx1ZUdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fQURDVEFCTEVbMThdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQURDRklGT0x2bEdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGNoYXIgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxDaGFubmVsKSlST01fQURDVEFCTEVbMTldKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQURDRklGT1JlYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxDaGFubmVsKSlST01fQURDVEFCTEVbMjBdKQorI2VuZGlmCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYWNyb3MgZm9yIGNhbGxpbmcgUk9NIGZ1bmN0aW9ucyBpbiB0aGUgQ1BVIEFQSS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWYgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQ1BVY3BzaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHZvaWQpKVJPTV9DUFVUQUJMRVswXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0NQVWNwc2llICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nICgqKSh2b2lkKSlST01fQ1BVVEFCTEVbMV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9DUFVwcmltYXNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyAoKikodm9pZCkpUk9NX0NQVVRBQkxFWzJdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQ1BVd2ZpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHZvaWQpKVJPTV9DUFVUQUJMRVszXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0NQVWJhc2VwcmlHZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nICgqKSh2b2lkKSlST01fQ1BVVEFCTEVbNF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9DUFViYXNlcHJpU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bE5ld0Jhc2VwcmkpKVJPTV9DUFVUQUJMRVs1XSkKKyNlbmRpZgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFjcm9zIGZvciBjYWxsaW5nIFJPTSBmdW5jdGlvbnMgRGlyZWN0bHkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBST01fVXRpbHNEZWxheURpcmVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxDb3VudCkpUk9NX1VUSUxTVEFCTEVbMF0pCisKKyNkZWZpbmUgUk9NX1BSQ01MUERTRW50ZXJEaXJlY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh2b2lkKSlST01fUFJDTVRBQkxFWzEzXSkKKworI2RlZmluZSBST01fUFJDTUxQRFNFbnRlcktlZXBEZWJ1Z0lmRGlyZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHZvaWQpKVJPTV9QUkNNVEFCTEVbNTBdKQorCisjZW5kaWYgLy8gX19ST01fSF9fCmRpZmYgLS1naXQgYS9leHQvaGFsL3RpL2NjMzIyMHNkay9kcml2ZXJsaWIvcm9tX21hcC5oIGIvZXh0L2hhbC90aS9jYzMyMjBzZGsvZHJpdmVybGliL3JvbV9tYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmI2ODM4Ci0tLSAvZGV2L251bGwKKysrIGIvZXh0L2hhbC90aS9jYzMyMjBzZGsvZHJpdmVybGliL3JvbV9tYXAuaApAQCAtMCwwICsxLDMzMjEgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDE2IFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCAtIGh0dHA6Ly93d3cudGkuY29tLworICoKKyAqICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqICBhcmUgbWV0OgorICoKKyAqICAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogICAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqICAgIE5laXRoZXIgdGhlIG5hbWUgb2YgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqICBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqICBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiAgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiAgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiAgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gcm9tX21hcC5oIC0gTWFjcm9zIHRvIGZhY2lsaXRhdGUgY2FsbGluZyBmdW5jdGlvbnMgaW4gdGhlIFJPTSB3aGVuIHRoZXkgYXJlCisvLyAgICAgICAgICAgICBhdmFpbGFibGUuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRISVMgSVMgQU4gQVVUTy1HRU5FUkFURUQgRklMRS4gIERPIE5PVCBFRElUIEJZIEhBTkQuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCisjaWZuZGVmIF9fUk9NX01BUF9IX18KKyNkZWZpbmUgX19ST01fTUFQX0hfXworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBQYXRjaGVkIFJPTSBBUElzCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaW5jbHVkZSAicm9tX3BhdGNoLmgiCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYWNyb3MgZm9yIHRoZSBJbnRlcnJ1cHQgQVBJLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpZmRlZiBST01fSW50RW5hYmxlCisjZGVmaW5lIE1BUF9JbnRFbmFibGUgXAorICAgICAgICBST01fSW50RW5hYmxlCisjZWxzZQorI2RlZmluZSBNQVBfSW50RW5hYmxlIFwKKyAgICAgICAgSW50RW5hYmxlCisjZW5kaWYKKyNpZmRlZiBST01fSW50TWFzdGVyRW5hYmxlCisjZGVmaW5lIE1BUF9JbnRNYXN0ZXJFbmFibGUgXAorICAgICAgICBST01fSW50TWFzdGVyRW5hYmxlCisjZWxzZQorI2RlZmluZSBNQVBfSW50TWFzdGVyRW5hYmxlIFwKKyAgICAgICAgSW50TWFzdGVyRW5hYmxlCisjZW5kaWYKKyNpZmRlZiBST01fSW50TWFzdGVyRGlzYWJsZQorI2RlZmluZSBNQVBfSW50TWFzdGVyRGlzYWJsZSBcCisgICAgICAgIFJPTV9JbnRNYXN0ZXJEaXNhYmxlCisjZWxzZQorI2RlZmluZSBNQVBfSW50TWFzdGVyRGlzYWJsZSBcCisgICAgICAgIEludE1hc3RlckRpc2FibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9JbnREaXNhYmxlCisjZGVmaW5lIE1BUF9JbnREaXNhYmxlIFwKKyAgICAgICAgUk9NX0ludERpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9JbnREaXNhYmxlIFwKKyAgICAgICAgSW50RGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0ludFByaW9yaXR5R3JvdXBpbmdTZXQKKyNkZWZpbmUgTUFQX0ludFByaW9yaXR5R3JvdXBpbmdTZXQgXAorICAgICAgICBST01fSW50UHJpb3JpdHlHcm91cGluZ1NldAorI2Vsc2UKKyNkZWZpbmUgTUFQX0ludFByaW9yaXR5R3JvdXBpbmdTZXQgXAorICAgICAgICBJbnRQcmlvcml0eUdyb3VwaW5nU2V0CisjZW5kaWYKKyNpZmRlZiBST01fSW50UHJpb3JpdHlHcm91cGluZ0dldAorI2RlZmluZSBNQVBfSW50UHJpb3JpdHlHcm91cGluZ0dldCBcCisgICAgICAgIFJPTV9JbnRQcmlvcml0eUdyb3VwaW5nR2V0CisjZWxzZQorI2RlZmluZSBNQVBfSW50UHJpb3JpdHlHcm91cGluZ0dldCBcCisgICAgICAgIEludFByaW9yaXR5R3JvdXBpbmdHZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9JbnRQcmlvcml0eVNldAorI2RlZmluZSBNQVBfSW50UHJpb3JpdHlTZXQgXAorICAgICAgICBST01fSW50UHJpb3JpdHlTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9JbnRQcmlvcml0eVNldCBcCisgICAgICAgIEludFByaW9yaXR5U2V0CisjZW5kaWYKKyNpZmRlZiBST01fSW50UHJpb3JpdHlHZXQKKyNkZWZpbmUgTUFQX0ludFByaW9yaXR5R2V0IFwKKyAgICAgICAgUk9NX0ludFByaW9yaXR5R2V0CisjZWxzZQorI2RlZmluZSBNQVBfSW50UHJpb3JpdHlHZXQgXAorICAgICAgICBJbnRQcmlvcml0eUdldAorI2VuZGlmCisjaWZkZWYgUk9NX0ludFBlbmRTZXQKKyNkZWZpbmUgTUFQX0ludFBlbmRTZXQgXAorICAgICAgICBST01fSW50UGVuZFNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX0ludFBlbmRTZXQgXAorICAgICAgICBJbnRQZW5kU2V0CisjZW5kaWYKKyNpZmRlZiBST01fSW50UGVuZENsZWFyCisjZGVmaW5lIE1BUF9JbnRQZW5kQ2xlYXIgXAorICAgICAgICBST01fSW50UGVuZENsZWFyCisjZWxzZQorI2RlZmluZSBNQVBfSW50UGVuZENsZWFyIFwKKyAgICAgICAgSW50UGVuZENsZWFyCisjZW5kaWYKKyNpZmRlZiBST01fSW50UHJpb3JpdHlNYXNrU2V0CisjZGVmaW5lIE1BUF9JbnRQcmlvcml0eU1hc2tTZXQgXAorICAgICAgICBST01fSW50UHJpb3JpdHlNYXNrU2V0CisjZWxzZQorI2RlZmluZSBNQVBfSW50UHJpb3JpdHlNYXNrU2V0IFwKKyAgICAgICAgSW50UHJpb3JpdHlNYXNrU2V0CisjZW5kaWYKKyNpZmRlZiBST01fSW50UHJpb3JpdHlNYXNrR2V0CisjZGVmaW5lIE1BUF9JbnRQcmlvcml0eU1hc2tHZXQgXAorICAgICAgICBST01fSW50UHJpb3JpdHlNYXNrR2V0CisjZWxzZQorI2RlZmluZSBNQVBfSW50UHJpb3JpdHlNYXNrR2V0IFwKKyAgICAgICAgSW50UHJpb3JpdHlNYXNrR2V0CisjZW5kaWYKKyNpZmRlZiBST01fSW50UmVnaXN0ZXIKKyNkZWZpbmUgTUFQX0ludFJlZ2lzdGVyIFwKKyAgICAgICAgUk9NX0ludFJlZ2lzdGVyCisjZWxzZQorI2RlZmluZSBNQVBfSW50UmVnaXN0ZXIgXAorICAgICAgICBJbnRSZWdpc3RlcgorI2VuZGlmCisjaWZkZWYgUk9NX0ludFVucmVnaXN0ZXIKKyNkZWZpbmUgTUFQX0ludFVucmVnaXN0ZXIgXAorICAgICAgICBST01fSW50VW5yZWdpc3RlcgorI2Vsc2UKKyNkZWZpbmUgTUFQX0ludFVucmVnaXN0ZXIgXAorICAgICAgICBJbnRVbnJlZ2lzdGVyCisjZW5kaWYKKyNpZmRlZiBST01fSW50VlRhYmxlQmFzZVNldAorI2RlZmluZSBNQVBfSW50VlRhYmxlQmFzZVNldCBcCisgICAgICAgIFJPTV9JbnRWVGFibGVCYXNlU2V0CisjZWxzZQorI2RlZmluZSBNQVBfSW50VlRhYmxlQmFzZVNldCBcCisgICAgICAgIEludFZUYWJsZUJhc2VTZXQKKyNlbmRpZgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFjcm9zIGZvciB0aGUgVGltZXIgQVBJLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpZmRlZiBST01fVGltZXJFbmFibGUKKyNkZWZpbmUgTUFQX1RpbWVyRW5hYmxlIFwKKyAgICAgICAgUk9NX1RpbWVyRW5hYmxlCisjZWxzZQorI2RlZmluZSBNQVBfVGltZXJFbmFibGUgXAorICAgICAgICBUaW1lckVuYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX1RpbWVyRGlzYWJsZQorI2RlZmluZSBNQVBfVGltZXJEaXNhYmxlIFwKKyAgICAgICAgUk9NX1RpbWVyRGlzYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX1RpbWVyRGlzYWJsZSBcCisgICAgICAgIFRpbWVyRGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX1RpbWVyQ29uZmlndXJlCisjZGVmaW5lIE1BUF9UaW1lckNvbmZpZ3VyZSBcCisgICAgICAgIFJPTV9UaW1lckNvbmZpZ3VyZQorI2Vsc2UKKyNkZWZpbmUgTUFQX1RpbWVyQ29uZmlndXJlIFwKKyAgICAgICAgVGltZXJDb25maWd1cmUKKyNlbmRpZgorI2lmZGVmIFJPTV9UaW1lckNvbnRyb2xMZXZlbAorI2RlZmluZSBNQVBfVGltZXJDb250cm9sTGV2ZWwgXAorICAgICAgICBST01fVGltZXJDb250cm9sTGV2ZWwKKyNlbHNlCisjZGVmaW5lIE1BUF9UaW1lckNvbnRyb2xMZXZlbCBcCisgICAgICAgIFRpbWVyQ29udHJvbExldmVsCisjZW5kaWYKKyNpZmRlZiBST01fVGltZXJDb250cm9sRXZlbnQKKyNkZWZpbmUgTUFQX1RpbWVyQ29udHJvbEV2ZW50IFwKKyAgICAgICAgUk9NX1RpbWVyQ29udHJvbEV2ZW50CisjZWxzZQorI2RlZmluZSBNQVBfVGltZXJDb250cm9sRXZlbnQgXAorICAgICAgICBUaW1lckNvbnRyb2xFdmVudAorI2VuZGlmCisjaWZkZWYgUk9NX1RpbWVyQ29udHJvbFN0YWxsCisjZGVmaW5lIE1BUF9UaW1lckNvbnRyb2xTdGFsbCBcCisgICAgICAgIFJPTV9UaW1lckNvbnRyb2xTdGFsbAorI2Vsc2UKKyNkZWZpbmUgTUFQX1RpbWVyQ29udHJvbFN0YWxsIFwKKyAgICAgICAgVGltZXJDb250cm9sU3RhbGwKKyNlbmRpZgorI2lmZGVmIFJPTV9UaW1lclByZXNjYWxlU2V0CisjZGVmaW5lIE1BUF9UaW1lclByZXNjYWxlU2V0IFwKKyAgICAgICAgUk9NX1RpbWVyUHJlc2NhbGVTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9UaW1lclByZXNjYWxlU2V0IFwKKyAgICAgICAgVGltZXJQcmVzY2FsZVNldAorI2VuZGlmCisjaWZkZWYgUk9NX1RpbWVyUHJlc2NhbGVHZXQKKyNkZWZpbmUgTUFQX1RpbWVyUHJlc2NhbGVHZXQgXAorICAgICAgICBST01fVGltZXJQcmVzY2FsZUdldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1RpbWVyUHJlc2NhbGVHZXQgXAorICAgICAgICBUaW1lclByZXNjYWxlR2V0CisjZW5kaWYKKyNpZmRlZiBST01fVGltZXJQcmVzY2FsZU1hdGNoU2V0CisjZGVmaW5lIE1BUF9UaW1lclByZXNjYWxlTWF0Y2hTZXQgXAorICAgICAgICBST01fVGltZXJQcmVzY2FsZU1hdGNoU2V0CisjZWxzZQorI2RlZmluZSBNQVBfVGltZXJQcmVzY2FsZU1hdGNoU2V0IFwKKyAgICAgICAgVGltZXJQcmVzY2FsZU1hdGNoU2V0CisjZW5kaWYKKyNpZmRlZiBST01fVGltZXJQcmVzY2FsZU1hdGNoR2V0CisjZGVmaW5lIE1BUF9UaW1lclByZXNjYWxlTWF0Y2hHZXQgXAorICAgICAgICBST01fVGltZXJQcmVzY2FsZU1hdGNoR2V0CisjZWxzZQorI2RlZmluZSBNQVBfVGltZXJQcmVzY2FsZU1hdGNoR2V0IFwKKyAgICAgICAgVGltZXJQcmVzY2FsZU1hdGNoR2V0CisjZW5kaWYKKyNpZmRlZiBST01fVGltZXJMb2FkU2V0CisjZGVmaW5lIE1BUF9UaW1lckxvYWRTZXQgXAorICAgICAgICBST01fVGltZXJMb2FkU2V0CisjZWxzZQorI2RlZmluZSBNQVBfVGltZXJMb2FkU2V0IFwKKyAgICAgICAgVGltZXJMb2FkU2V0CisjZW5kaWYKKyNpZmRlZiBST01fVGltZXJMb2FkR2V0CisjZGVmaW5lIE1BUF9UaW1lckxvYWRHZXQgXAorICAgICAgICBST01fVGltZXJMb2FkR2V0CisjZWxzZQorI2RlZmluZSBNQVBfVGltZXJMb2FkR2V0IFwKKyAgICAgICAgVGltZXJMb2FkR2V0CisjZW5kaWYKKyNpZmRlZiBST01fVGltZXJWYWx1ZUdldAorI2RlZmluZSBNQVBfVGltZXJWYWx1ZUdldCBcCisgICAgICAgIFJPTV9UaW1lclZhbHVlR2V0CisjZWxzZQorI2RlZmluZSBNQVBfVGltZXJWYWx1ZUdldCBcCisgICAgICAgIFRpbWVyVmFsdWVHZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9UaW1lck1hdGNoU2V0CisjZGVmaW5lIE1BUF9UaW1lck1hdGNoU2V0IFwKKyAgICAgICAgUk9NX1RpbWVyTWF0Y2hTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9UaW1lck1hdGNoU2V0IFwKKyAgICAgICAgVGltZXJNYXRjaFNldAorI2VuZGlmCisjaWZkZWYgUk9NX1RpbWVyTWF0Y2hHZXQKKyNkZWZpbmUgTUFQX1RpbWVyTWF0Y2hHZXQgXAorICAgICAgICBST01fVGltZXJNYXRjaEdldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1RpbWVyTWF0Y2hHZXQgXAorICAgICAgICBUaW1lck1hdGNoR2V0CisjZW5kaWYKKyNpZmRlZiBST01fVGltZXJJbnRSZWdpc3RlcgorI2RlZmluZSBNQVBfVGltZXJJbnRSZWdpc3RlciBcCisgICAgICAgIFJPTV9UaW1lckludFJlZ2lzdGVyCisjZWxzZQorI2RlZmluZSBNQVBfVGltZXJJbnRSZWdpc3RlciBcCisgICAgICAgIFRpbWVySW50UmVnaXN0ZXIKKyNlbmRpZgorI2lmZGVmIFJPTV9UaW1lckludFVucmVnaXN0ZXIKKyNkZWZpbmUgTUFQX1RpbWVySW50VW5yZWdpc3RlciBcCisgICAgICAgIFJPTV9UaW1lckludFVucmVnaXN0ZXIKKyNlbHNlCisjZGVmaW5lIE1BUF9UaW1lckludFVucmVnaXN0ZXIgXAorICAgICAgICBUaW1lckludFVucmVnaXN0ZXIKKyNlbmRpZgorI2lmZGVmIFJPTV9UaW1lckludEVuYWJsZQorI2RlZmluZSBNQVBfVGltZXJJbnRFbmFibGUgXAorICAgICAgICBST01fVGltZXJJbnRFbmFibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9UaW1lckludEVuYWJsZSBcCisgICAgICAgIFRpbWVySW50RW5hYmxlCisjZW5kaWYKKyNpZmRlZiBST01fVGltZXJJbnREaXNhYmxlCisjZGVmaW5lIE1BUF9UaW1lckludERpc2FibGUgXAorICAgICAgICBST01fVGltZXJJbnREaXNhYmxlCisjZWxzZQorI2RlZmluZSBNQVBfVGltZXJJbnREaXNhYmxlIFwKKyAgICAgICAgVGltZXJJbnREaXNhYmxlCisjZW5kaWYKKyNpZmRlZiBST01fVGltZXJJbnRTdGF0dXMKKyNkZWZpbmUgTUFQX1RpbWVySW50U3RhdHVzIFwKKyAgICAgICAgUk9NX1RpbWVySW50U3RhdHVzCisjZWxzZQorI2RlZmluZSBNQVBfVGltZXJJbnRTdGF0dXMgXAorICAgICAgICBUaW1lckludFN0YXR1cworI2VuZGlmCisjaWZkZWYgUk9NX1RpbWVySW50Q2xlYXIKKyNkZWZpbmUgTUFQX1RpbWVySW50Q2xlYXIgXAorICAgICAgICBST01fVGltZXJJbnRDbGVhcgorI2Vsc2UKKyNkZWZpbmUgTUFQX1RpbWVySW50Q2xlYXIgXAorICAgICAgICBUaW1lckludENsZWFyCisjZW5kaWYKKyNpZmRlZiBST01fVGltZXJWYWx1ZVNldAorI2RlZmluZSBNQVBfVGltZXJWYWx1ZVNldCBcCisgICAgICAgIFJPTV9UaW1lclZhbHVlU2V0CisjZWxzZQorI2RlZmluZSBNQVBfVGltZXJWYWx1ZVNldCBcCisgICAgICAgIFRpbWVyVmFsdWVTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9UaW1lckRNQUV2ZW50U2V0CisjZGVmaW5lIE1BUF9UaW1lckRNQUV2ZW50U2V0IFwKKyAgICAgICAgUk9NX1RpbWVyRE1BRXZlbnRTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9UaW1lckRNQUV2ZW50U2V0IFwKKyAgICAgICAgVGltZXJETUFFdmVudFNldAorI2VuZGlmCisjaWZkZWYgUk9NX1RpbWVyRE1BRXZlbnRHZXQKKyNkZWZpbmUgTUFQX1RpbWVyRE1BRXZlbnRHZXQgXAorICAgICAgICBST01fVGltZXJETUFFdmVudEdldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1RpbWVyRE1BRXZlbnRHZXQgXAorICAgICAgICBUaW1lckRNQUV2ZW50R2V0CisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIE1hY3JvcyBmb3IgdGhlIFVBUlQgQVBJLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpZmRlZiBST01fVUFSVFBhcml0eU1vZGVTZXQKKyNkZWZpbmUgTUFQX1VBUlRQYXJpdHlNb2RlU2V0IFwKKyAgICAgICAgUk9NX1VBUlRQYXJpdHlNb2RlU2V0CisjZWxzZQorI2RlZmluZSBNQVBfVUFSVFBhcml0eU1vZGVTZXQgXAorICAgICAgICBVQVJUUGFyaXR5TW9kZVNldAorI2VuZGlmCisjaWZkZWYgUk9NX1VBUlRQYXJpdHlNb2RlR2V0CisjZGVmaW5lIE1BUF9VQVJUUGFyaXR5TW9kZUdldCBcCisgICAgICAgIFJPTV9VQVJUUGFyaXR5TW9kZUdldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1VBUlRQYXJpdHlNb2RlR2V0IFwKKyAgICAgICAgVUFSVFBhcml0eU1vZGVHZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9VQVJURklGT0xldmVsU2V0CisjZGVmaW5lIE1BUF9VQVJURklGT0xldmVsU2V0IFwKKyAgICAgICAgUk9NX1VBUlRGSUZPTGV2ZWxTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9VQVJURklGT0xldmVsU2V0IFwKKyAgICAgICAgVUFSVEZJRk9MZXZlbFNldAorI2VuZGlmCisjaWZkZWYgUk9NX1VBUlRGSUZPTGV2ZWxHZXQKKyNkZWZpbmUgTUFQX1VBUlRGSUZPTGV2ZWxHZXQgXAorICAgICAgICBST01fVUFSVEZJRk9MZXZlbEdldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1VBUlRGSUZPTGV2ZWxHZXQgXAorICAgICAgICBVQVJURklGT0xldmVsR2V0CisjZW5kaWYKKyNpZmRlZiBST01fVUFSVENvbmZpZ1NldEV4cENsaworI2RlZmluZSBNQVBfVUFSVENvbmZpZ1NldEV4cENsayBcCisgICAgICAgIFJPTV9VQVJUQ29uZmlnU2V0RXhwQ2xrCisjZWxzZQorI2RlZmluZSBNQVBfVUFSVENvbmZpZ1NldEV4cENsayBcCisgICAgICAgIFVBUlRDb25maWdTZXRFeHBDbGsKKyNlbmRpZgorI2lmZGVmIFJPTV9VQVJUQ29uZmlnR2V0RXhwQ2xrCisjZGVmaW5lIE1BUF9VQVJUQ29uZmlnR2V0RXhwQ2xrIFwKKyAgICAgICAgUk9NX1VBUlRDb25maWdHZXRFeHBDbGsKKyNlbHNlCisjZGVmaW5lIE1BUF9VQVJUQ29uZmlnR2V0RXhwQ2xrIFwKKyAgICAgICAgVUFSVENvbmZpZ0dldEV4cENsaworI2VuZGlmCisjaWZkZWYgUk9NX1VBUlRFbmFibGUKKyNkZWZpbmUgTUFQX1VBUlRFbmFibGUgXAorICAgICAgICBST01fVUFSVEVuYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX1VBUlRFbmFibGUgXAorICAgICAgICBVQVJURW5hYmxlCisjZW5kaWYKKyNpZmRlZiBST01fVUFSVERpc2FibGUKKyNkZWZpbmUgTUFQX1VBUlREaXNhYmxlIFwKKyAgICAgICAgUk9NX1VBUlREaXNhYmxlCisjZWxzZQorI2RlZmluZSBNQVBfVUFSVERpc2FibGUgXAorICAgICAgICBVQVJURGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX1VBUlRGSUZPRW5hYmxlCisjZGVmaW5lIE1BUF9VQVJURklGT0VuYWJsZSBcCisgICAgICAgIFJPTV9VQVJURklGT0VuYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX1VBUlRGSUZPRW5hYmxlIFwKKyAgICAgICAgVUFSVEZJRk9FbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9VQVJURklGT0Rpc2FibGUKKyNkZWZpbmUgTUFQX1VBUlRGSUZPRGlzYWJsZSBcCisgICAgICAgIFJPTV9VQVJURklGT0Rpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9VQVJURklGT0Rpc2FibGUgXAorICAgICAgICBVQVJURklGT0Rpc2FibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9VQVJUQ2hhcnNBdmFpbAorI2RlZmluZSBNQVBfVUFSVENoYXJzQXZhaWwgXAorICAgICAgICBST01fVUFSVENoYXJzQXZhaWwKKyNlbHNlCisjZGVmaW5lIE1BUF9VQVJUQ2hhcnNBdmFpbCBcCisgICAgICAgIFVBUlRDaGFyc0F2YWlsCisjZW5kaWYKKyNpZmRlZiBST01fVUFSVFNwYWNlQXZhaWwKKyNkZWZpbmUgTUFQX1VBUlRTcGFjZUF2YWlsIFwKKyAgICAgICAgUk9NX1VBUlRTcGFjZUF2YWlsCisjZWxzZQorI2RlZmluZSBNQVBfVUFSVFNwYWNlQXZhaWwgXAorICAgICAgICBVQVJUU3BhY2VBdmFpbAorI2VuZGlmCisjaWZkZWYgUk9NX1VBUlRDaGFyR2V0Tm9uQmxvY2tpbmcKKyNkZWZpbmUgTUFQX1VBUlRDaGFyR2V0Tm9uQmxvY2tpbmcgXAorICAgICAgICBST01fVUFSVENoYXJHZXROb25CbG9ja2luZworI2Vsc2UKKyNkZWZpbmUgTUFQX1VBUlRDaGFyR2V0Tm9uQmxvY2tpbmcgXAorICAgICAgICBVQVJUQ2hhckdldE5vbkJsb2NraW5nCisjZW5kaWYKKyNpZmRlZiBST01fVUFSVENoYXJHZXQKKyNkZWZpbmUgTUFQX1VBUlRDaGFyR2V0IFwKKyAgICAgICAgUk9NX1VBUlRDaGFyR2V0CisjZWxzZQorI2RlZmluZSBNQVBfVUFSVENoYXJHZXQgXAorICAgICAgICBVQVJUQ2hhckdldAorI2VuZGlmCisjaWZkZWYgUk9NX1VBUlRDaGFyUHV0Tm9uQmxvY2tpbmcKKyNkZWZpbmUgTUFQX1VBUlRDaGFyUHV0Tm9uQmxvY2tpbmcgXAorICAgICAgICBST01fVUFSVENoYXJQdXROb25CbG9ja2luZworI2Vsc2UKKyNkZWZpbmUgTUFQX1VBUlRDaGFyUHV0Tm9uQmxvY2tpbmcgXAorICAgICAgICBVQVJUQ2hhclB1dE5vbkJsb2NraW5nCisjZW5kaWYKKyNpZmRlZiBST01fVUFSVENoYXJQdXQKKyNkZWZpbmUgTUFQX1VBUlRDaGFyUHV0IFwKKyAgICAgICAgUk9NX1VBUlRDaGFyUHV0CisjZWxzZQorI2RlZmluZSBNQVBfVUFSVENoYXJQdXQgXAorICAgICAgICBVQVJUQ2hhclB1dAorI2VuZGlmCisjaWZkZWYgUk9NX1VBUlRCcmVha0N0bAorI2RlZmluZSBNQVBfVUFSVEJyZWFrQ3RsIFwKKyAgICAgICAgUk9NX1VBUlRCcmVha0N0bAorI2Vsc2UKKyNkZWZpbmUgTUFQX1VBUlRCcmVha0N0bCBcCisgICAgICAgIFVBUlRCcmVha0N0bAorI2VuZGlmCisjaWZkZWYgUk9NX1VBUlRCdXN5CisjZGVmaW5lIE1BUF9VQVJUQnVzeSBcCisgICAgICAgIFJPTV9VQVJUQnVzeQorI2Vsc2UKKyNkZWZpbmUgTUFQX1VBUlRCdXN5IFwKKyAgICAgICAgVUFSVEJ1c3kKKyNlbmRpZgorI2lmZGVmIFJPTV9VQVJUSW50UmVnaXN0ZXIKKyNkZWZpbmUgTUFQX1VBUlRJbnRSZWdpc3RlciBcCisgICAgICAgIFJPTV9VQVJUSW50UmVnaXN0ZXIKKyNlbHNlCisjZGVmaW5lIE1BUF9VQVJUSW50UmVnaXN0ZXIgXAorICAgICAgICBVQVJUSW50UmVnaXN0ZXIKKyNlbmRpZgorI2lmZGVmIFJPTV9VQVJUSW50VW5yZWdpc3RlcgorI2RlZmluZSBNQVBfVUFSVEludFVucmVnaXN0ZXIgXAorICAgICAgICBST01fVUFSVEludFVucmVnaXN0ZXIKKyNlbHNlCisjZGVmaW5lIE1BUF9VQVJUSW50VW5yZWdpc3RlciBcCisgICAgICAgIFVBUlRJbnRVbnJlZ2lzdGVyCisjZW5kaWYKKyNpZmRlZiBST01fVUFSVEludEVuYWJsZQorI2RlZmluZSBNQVBfVUFSVEludEVuYWJsZSBcCisgICAgICAgIFJPTV9VQVJUSW50RW5hYmxlCisjZWxzZQorI2RlZmluZSBNQVBfVUFSVEludEVuYWJsZSBcCisgICAgICAgIFVBUlRJbnRFbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9VQVJUSW50RGlzYWJsZQorI2RlZmluZSBNQVBfVUFSVEludERpc2FibGUgXAorICAgICAgICBST01fVUFSVEludERpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9VQVJUSW50RGlzYWJsZSBcCisgICAgICAgIFVBUlRJbnREaXNhYmxlCisjZW5kaWYKKyNpZmRlZiBST01fVUFSVEludFN0YXR1cworI2RlZmluZSBNQVBfVUFSVEludFN0YXR1cyBcCisgICAgICAgIFJPTV9VQVJUSW50U3RhdHVzCisjZWxzZQorI2RlZmluZSBNQVBfVUFSVEludFN0YXR1cyBcCisgICAgICAgIFVBUlRJbnRTdGF0dXMKKyNlbmRpZgorI2lmZGVmIFJPTV9VQVJUSW50Q2xlYXIKKyNkZWZpbmUgTUFQX1VBUlRJbnRDbGVhciBcCisgICAgICAgIFJPTV9VQVJUSW50Q2xlYXIKKyNlbHNlCisjZGVmaW5lIE1BUF9VQVJUSW50Q2xlYXIgXAorICAgICAgICBVQVJUSW50Q2xlYXIKKyNlbmRpZgorI2lmZGVmIFJPTV9VQVJURE1BRW5hYmxlCisjZGVmaW5lIE1BUF9VQVJURE1BRW5hYmxlIFwKKyAgICAgICAgUk9NX1VBUlRETUFFbmFibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9VQVJURE1BRW5hYmxlIFwKKyAgICAgICAgVUFSVERNQUVuYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX1VBUlRETUFEaXNhYmxlCisjZGVmaW5lIE1BUF9VQVJURE1BRGlzYWJsZSBcCisgICAgICAgIFJPTV9VQVJURE1BRGlzYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX1VBUlRETUFEaXNhYmxlIFwKKyAgICAgICAgVUFSVERNQURpc2FibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9VQVJUUnhFcnJvckdldAorI2RlZmluZSBNQVBfVUFSVFJ4RXJyb3JHZXQgXAorICAgICAgICBST01fVUFSVFJ4RXJyb3JHZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9VQVJUUnhFcnJvckdldCBcCisgICAgICAgIFVBUlRSeEVycm9yR2V0CisjZW5kaWYKKyNpZmRlZiBST01fVUFSVFJ4RXJyb3JDbGVhcgorI2RlZmluZSBNQVBfVUFSVFJ4RXJyb3JDbGVhciBcCisgICAgICAgIFJPTV9VQVJUUnhFcnJvckNsZWFyCisjZWxzZQorI2RlZmluZSBNQVBfVUFSVFJ4RXJyb3JDbGVhciBcCisgICAgICAgIFVBUlRSeEVycm9yQ2xlYXIKKyNlbmRpZgorI2lmZGVmIFJPTV9VQVJUTW9kZW1Db250cm9sU2V0CisjZGVmaW5lIE1BUF9VQVJUTW9kZW1Db250cm9sU2V0IFwKKyAgICAgICAgUk9NX1VBUlRNb2RlbUNvbnRyb2xTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9VQVJUTW9kZW1Db250cm9sU2V0IFwKKyAgICAgICAgVUFSVE1vZGVtQ29udHJvbFNldAorI2VuZGlmCisjaWZkZWYgUk9NX1VBUlRNb2RlbUNvbnRyb2xDbGVhcgorI2RlZmluZSBNQVBfVUFSVE1vZGVtQ29udHJvbENsZWFyIFwKKyAgICAgICAgUk9NX1VBUlRNb2RlbUNvbnRyb2xDbGVhcgorI2Vsc2UKKyNkZWZpbmUgTUFQX1VBUlRNb2RlbUNvbnRyb2xDbGVhciBcCisgICAgICAgIFVBUlRNb2RlbUNvbnRyb2xDbGVhcgorI2VuZGlmCisjaWZkZWYgUk9NX1VBUlRNb2RlbUNvbnRyb2xHZXQKKyNkZWZpbmUgTUFQX1VBUlRNb2RlbUNvbnRyb2xHZXQgXAorICAgICAgICBST01fVUFSVE1vZGVtQ29udHJvbEdldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1VBUlRNb2RlbUNvbnRyb2xHZXQgXAorICAgICAgICBVQVJUTW9kZW1Db250cm9sR2V0CisjZW5kaWYKKyNpZmRlZiBST01fVUFSVE1vZGVtU3RhdHVzR2V0CisjZGVmaW5lIE1BUF9VQVJUTW9kZW1TdGF0dXNHZXQgXAorICAgICAgICBST01fVUFSVE1vZGVtU3RhdHVzR2V0CisjZWxzZQorI2RlZmluZSBNQVBfVUFSVE1vZGVtU3RhdHVzR2V0IFwKKyAgICAgICAgVUFSVE1vZGVtU3RhdHVzR2V0CisjZW5kaWYKKyNpZmRlZiBST01fVUFSVEZsb3dDb250cm9sU2V0CisjZGVmaW5lIE1BUF9VQVJURmxvd0NvbnRyb2xTZXQgXAorICAgICAgICBST01fVUFSVEZsb3dDb250cm9sU2V0CisjZWxzZQorI2RlZmluZSBNQVBfVUFSVEZsb3dDb250cm9sU2V0IFwKKyAgICAgICAgVUFSVEZsb3dDb250cm9sU2V0CisjZW5kaWYKKyNpZmRlZiBST01fVUFSVEZsb3dDb250cm9sR2V0CisjZGVmaW5lIE1BUF9VQVJURmxvd0NvbnRyb2xHZXQgXAorICAgICAgICBST01fVUFSVEZsb3dDb250cm9sR2V0CisjZWxzZQorI2RlZmluZSBNQVBfVUFSVEZsb3dDb250cm9sR2V0IFwKKyAgICAgICAgVUFSVEZsb3dDb250cm9sR2V0CisjZW5kaWYKKyNpZmRlZiBST01fVUFSVFR4SW50TW9kZVNldAorI2RlZmluZSBNQVBfVUFSVFR4SW50TW9kZVNldCBcCisgICAgICAgIFJPTV9VQVJUVHhJbnRNb2RlU2V0CisjZWxzZQorI2RlZmluZSBNQVBfVUFSVFR4SW50TW9kZVNldCBcCisgICAgICAgIFVBUlRUeEludE1vZGVTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9VQVJUVHhJbnRNb2RlR2V0CisjZGVmaW5lIE1BUF9VQVJUVHhJbnRNb2RlR2V0IFwKKyAgICAgICAgUk9NX1VBUlRUeEludE1vZGVHZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9VQVJUVHhJbnRNb2RlR2V0IFwKKyAgICAgICAgVUFSVFR4SW50TW9kZUdldAorI2VuZGlmCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYWNyb3MgZm9yIHRoZSB1RE1BIEFQSS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWZkZWYgUk9NX3VETUFDaGFubmVsVHJhbnNmZXJTZXQKKyNkZWZpbmUgTUFQX3VETUFDaGFubmVsVHJhbnNmZXJTZXQgXAorICAgICAgICBST01fdURNQUNoYW5uZWxUcmFuc2ZlclNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX3VETUFDaGFubmVsVHJhbnNmZXJTZXQgXAorICAgICAgICB1RE1BQ2hhbm5lbFRyYW5zZmVyU2V0CisjZW5kaWYKKyNpZmRlZiBST01fdURNQUVuYWJsZQorI2RlZmluZSBNQVBfdURNQUVuYWJsZSBcCisgICAgICAgIFJPTV91RE1BRW5hYmxlCisjZWxzZQorI2RlZmluZSBNQVBfdURNQUVuYWJsZSBcCisgICAgICAgIHVETUFFbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV91RE1BRGlzYWJsZQorI2RlZmluZSBNQVBfdURNQURpc2FibGUgXAorICAgICAgICBST01fdURNQURpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF91RE1BRGlzYWJsZSBcCisgICAgICAgIHVETUFEaXNhYmxlCisjZW5kaWYKKyNpZmRlZiBST01fdURNQUVycm9yU3RhdHVzR2V0CisjZGVmaW5lIE1BUF91RE1BRXJyb3JTdGF0dXNHZXQgXAorICAgICAgICBST01fdURNQUVycm9yU3RhdHVzR2V0CisjZWxzZQorI2RlZmluZSBNQVBfdURNQUVycm9yU3RhdHVzR2V0IFwKKyAgICAgICAgdURNQUVycm9yU3RhdHVzR2V0CisjZW5kaWYKKyNpZmRlZiBST01fdURNQUVycm9yU3RhdHVzQ2xlYXIKKyNkZWZpbmUgTUFQX3VETUFFcnJvclN0YXR1c0NsZWFyIFwKKyAgICAgICAgUk9NX3VETUFFcnJvclN0YXR1c0NsZWFyCisjZWxzZQorI2RlZmluZSBNQVBfdURNQUVycm9yU3RhdHVzQ2xlYXIgXAorICAgICAgICB1RE1BRXJyb3JTdGF0dXNDbGVhcgorI2VuZGlmCisjaWZkZWYgUk9NX3VETUFDaGFubmVsRW5hYmxlCisjZGVmaW5lIE1BUF91RE1BQ2hhbm5lbEVuYWJsZSBcCisgICAgICAgIFJPTV91RE1BQ2hhbm5lbEVuYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX3VETUFDaGFubmVsRW5hYmxlIFwKKyAgICAgICAgdURNQUNoYW5uZWxFbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV91RE1BQ2hhbm5lbERpc2FibGUKKyNkZWZpbmUgTUFQX3VETUFDaGFubmVsRGlzYWJsZSBcCisgICAgICAgIFJPTV91RE1BQ2hhbm5lbERpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF91RE1BQ2hhbm5lbERpc2FibGUgXAorICAgICAgICB1RE1BQ2hhbm5lbERpc2FibGUKKyNlbmRpZgorI2lmZGVmIFJPTV91RE1BQ2hhbm5lbElzRW5hYmxlZAorI2RlZmluZSBNQVBfdURNQUNoYW5uZWxJc0VuYWJsZWQgXAorICAgICAgICBST01fdURNQUNoYW5uZWxJc0VuYWJsZWQKKyNlbHNlCisjZGVmaW5lIE1BUF91RE1BQ2hhbm5lbElzRW5hYmxlZCBcCisgICAgICAgIHVETUFDaGFubmVsSXNFbmFibGVkCisjZW5kaWYKKyNpZmRlZiBST01fdURNQUNvbnRyb2xCYXNlU2V0CisjZGVmaW5lIE1BUF91RE1BQ29udHJvbEJhc2VTZXQgXAorICAgICAgICBST01fdURNQUNvbnRyb2xCYXNlU2V0CisjZWxzZQorI2RlZmluZSBNQVBfdURNQUNvbnRyb2xCYXNlU2V0IFwKKyAgICAgICAgdURNQUNvbnRyb2xCYXNlU2V0CisjZW5kaWYKKyNpZmRlZiBST01fdURNQUNvbnRyb2xCYXNlR2V0CisjZGVmaW5lIE1BUF91RE1BQ29udHJvbEJhc2VHZXQgXAorICAgICAgICBST01fdURNQUNvbnRyb2xCYXNlR2V0CisjZWxzZQorI2RlZmluZSBNQVBfdURNQUNvbnRyb2xCYXNlR2V0IFwKKyAgICAgICAgdURNQUNvbnRyb2xCYXNlR2V0CisjZW5kaWYKKyNpZmRlZiBST01fdURNQUNoYW5uZWxSZXF1ZXN0CisjZGVmaW5lIE1BUF91RE1BQ2hhbm5lbFJlcXVlc3QgXAorICAgICAgICBST01fdURNQUNoYW5uZWxSZXF1ZXN0CisjZWxzZQorI2RlZmluZSBNQVBfdURNQUNoYW5uZWxSZXF1ZXN0IFwKKyAgICAgICAgdURNQUNoYW5uZWxSZXF1ZXN0CisjZW5kaWYKKyNpZmRlZiBST01fdURNQUNoYW5uZWxBdHRyaWJ1dGVFbmFibGUKKyNkZWZpbmUgTUFQX3VETUFDaGFubmVsQXR0cmlidXRlRW5hYmxlIFwKKyAgICAgICAgUk9NX3VETUFDaGFubmVsQXR0cmlidXRlRW5hYmxlCisjZWxzZQorI2RlZmluZSBNQVBfdURNQUNoYW5uZWxBdHRyaWJ1dGVFbmFibGUgXAorICAgICAgICB1RE1BQ2hhbm5lbEF0dHJpYnV0ZUVuYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX3VETUFDaGFubmVsQXR0cmlidXRlRGlzYWJsZQorI2RlZmluZSBNQVBfdURNQUNoYW5uZWxBdHRyaWJ1dGVEaXNhYmxlIFwKKyAgICAgICAgUk9NX3VETUFDaGFubmVsQXR0cmlidXRlRGlzYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX3VETUFDaGFubmVsQXR0cmlidXRlRGlzYWJsZSBcCisgICAgICAgIHVETUFDaGFubmVsQXR0cmlidXRlRGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX3VETUFDaGFubmVsQXR0cmlidXRlR2V0CisjZGVmaW5lIE1BUF91RE1BQ2hhbm5lbEF0dHJpYnV0ZUdldCBcCisgICAgICAgIFJPTV91RE1BQ2hhbm5lbEF0dHJpYnV0ZUdldAorI2Vsc2UKKyNkZWZpbmUgTUFQX3VETUFDaGFubmVsQXR0cmlidXRlR2V0IFwKKyAgICAgICAgdURNQUNoYW5uZWxBdHRyaWJ1dGVHZXQKKyNlbmRpZgorI2lmZGVmIFJPTV91RE1BQ2hhbm5lbENvbnRyb2xTZXQKKyNkZWZpbmUgTUFQX3VETUFDaGFubmVsQ29udHJvbFNldCBcCisgICAgICAgIFJPTV91RE1BQ2hhbm5lbENvbnRyb2xTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF91RE1BQ2hhbm5lbENvbnRyb2xTZXQgXAorICAgICAgICB1RE1BQ2hhbm5lbENvbnRyb2xTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV91RE1BQ2hhbm5lbFNpemVHZXQKKyNkZWZpbmUgTUFQX3VETUFDaGFubmVsU2l6ZUdldCBcCisgICAgICAgIFJPTV91RE1BQ2hhbm5lbFNpemVHZXQKKyNlbHNlCisjZGVmaW5lIE1BUF91RE1BQ2hhbm5lbFNpemVHZXQgXAorICAgICAgICB1RE1BQ2hhbm5lbFNpemVHZXQKKyNlbmRpZgorI2lmZGVmIFJPTV91RE1BQ2hhbm5lbE1vZGVHZXQKKyNkZWZpbmUgTUFQX3VETUFDaGFubmVsTW9kZUdldCBcCisgICAgICAgIFJPTV91RE1BQ2hhbm5lbE1vZGVHZXQKKyNlbHNlCisjZGVmaW5lIE1BUF91RE1BQ2hhbm5lbE1vZGVHZXQgXAorICAgICAgICB1RE1BQ2hhbm5lbE1vZGVHZXQKKyNlbmRpZgorI2lmZGVmIFJPTV91RE1BSW50U3RhdHVzCisjZGVmaW5lIE1BUF91RE1BSW50U3RhdHVzIFwKKyAgICAgICAgUk9NX3VETUFJbnRTdGF0dXMKKyNlbHNlCisjZGVmaW5lIE1BUF91RE1BSW50U3RhdHVzIFwKKyAgICAgICAgdURNQUludFN0YXR1cworI2VuZGlmCisjaWZkZWYgUk9NX3VETUFJbnRDbGVhcgorI2RlZmluZSBNQVBfdURNQUludENsZWFyIFwKKyAgICAgICAgUk9NX3VETUFJbnRDbGVhcgorI2Vsc2UKKyNkZWZpbmUgTUFQX3VETUFJbnRDbGVhciBcCisgICAgICAgIHVETUFJbnRDbGVhcgorI2VuZGlmCisjaWZkZWYgUk9NX3VETUFDb250cm9sQWx0ZXJuYXRlQmFzZUdldAorI2RlZmluZSBNQVBfdURNQUNvbnRyb2xBbHRlcm5hdGVCYXNlR2V0IFwKKyAgICAgICAgUk9NX3VETUFDb250cm9sQWx0ZXJuYXRlQmFzZUdldAorI2Vsc2UKKyNkZWZpbmUgTUFQX3VETUFDb250cm9sQWx0ZXJuYXRlQmFzZUdldCBcCisgICAgICAgIHVETUFDb250cm9sQWx0ZXJuYXRlQmFzZUdldAorI2VuZGlmCisjaWZkZWYgUk9NX3VETUFDaGFubmVsU2NhdHRlckdhdGhlclNldAorI2RlZmluZSBNQVBfdURNQUNoYW5uZWxTY2F0dGVyR2F0aGVyU2V0IFwKKyAgICAgICAgUk9NX3VETUFDaGFubmVsU2NhdHRlckdhdGhlclNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX3VETUFDaGFubmVsU2NhdHRlckdhdGhlclNldCBcCisgICAgICAgIHVETUFDaGFubmVsU2NhdHRlckdhdGhlclNldAorI2VuZGlmCisjaWZkZWYgUk9NX3VETUFDaGFubmVsQXNzaWduCisjZGVmaW5lIE1BUF91RE1BQ2hhbm5lbEFzc2lnbiBcCisgICAgICAgIFJPTV91RE1BQ2hhbm5lbEFzc2lnbgorI2Vsc2UKKyNkZWZpbmUgTUFQX3VETUFDaGFubmVsQXNzaWduIFwKKyAgICAgICAgdURNQUNoYW5uZWxBc3NpZ24KKyNlbmRpZgorI2lmZGVmIFJPTV91RE1BSW50UmVnaXN0ZXIKKyNkZWZpbmUgTUFQX3VETUFJbnRSZWdpc3RlciBcCisgICAgICAgIFJPTV91RE1BSW50UmVnaXN0ZXIKKyNlbHNlCisjZGVmaW5lIE1BUF91RE1BSW50UmVnaXN0ZXIgXAorICAgICAgICB1RE1BSW50UmVnaXN0ZXIKKyNlbmRpZgorI2lmZGVmIFJPTV91RE1BSW50VW5yZWdpc3RlcgorI2RlZmluZSBNQVBfdURNQUludFVucmVnaXN0ZXIgXAorICAgICAgICBST01fdURNQUludFVucmVnaXN0ZXIKKyNlbHNlCisjZGVmaW5lIE1BUF91RE1BSW50VW5yZWdpc3RlciBcCisgICAgICAgIHVETUFJbnRVbnJlZ2lzdGVyCisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIE1hY3JvcyBmb3IgdGhlIFdhdGNoZG9nIEFQSS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWZkZWYgUk9NX1dhdGNoZG9nSW50Q2xlYXIKKyNkZWZpbmUgTUFQX1dhdGNoZG9nSW50Q2xlYXIgXAorICAgICAgICBST01fV2F0Y2hkb2dJbnRDbGVhcgorI2Vsc2UKKyNkZWZpbmUgTUFQX1dhdGNoZG9nSW50Q2xlYXIgXAorICAgICAgICBXYXRjaGRvZ0ludENsZWFyCisjZW5kaWYKKyNpZmRlZiBST01fV2F0Y2hkb2dSdW5uaW5nCisjZGVmaW5lIE1BUF9XYXRjaGRvZ1J1bm5pbmcgXAorICAgICAgICBST01fV2F0Y2hkb2dSdW5uaW5nCisjZWxzZQorI2RlZmluZSBNQVBfV2F0Y2hkb2dSdW5uaW5nIFwKKyAgICAgICAgV2F0Y2hkb2dSdW5uaW5nCisjZW5kaWYKKyNpZmRlZiBST01fV2F0Y2hkb2dFbmFibGUKKyNkZWZpbmUgTUFQX1dhdGNoZG9nRW5hYmxlIFwKKyAgICAgICAgUk9NX1dhdGNoZG9nRW5hYmxlCisjZWxzZQorI2RlZmluZSBNQVBfV2F0Y2hkb2dFbmFibGUgXAorICAgICAgICBXYXRjaGRvZ0VuYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX1dhdGNoZG9nTG9jaworI2RlZmluZSBNQVBfV2F0Y2hkb2dMb2NrIFwKKyAgICAgICAgUk9NX1dhdGNoZG9nTG9jaworI2Vsc2UKKyNkZWZpbmUgTUFQX1dhdGNoZG9nTG9jayBcCisgICAgICAgIFdhdGNoZG9nTG9jaworI2VuZGlmCisjaWZkZWYgUk9NX1dhdGNoZG9nVW5sb2NrCisjZGVmaW5lIE1BUF9XYXRjaGRvZ1VubG9jayBcCisgICAgICAgIFJPTV9XYXRjaGRvZ1VubG9jaworI2Vsc2UKKyNkZWZpbmUgTUFQX1dhdGNoZG9nVW5sb2NrIFwKKyAgICAgICAgV2F0Y2hkb2dVbmxvY2sKKyNlbmRpZgorI2lmZGVmIFJPTV9XYXRjaGRvZ0xvY2tTdGF0ZQorI2RlZmluZSBNQVBfV2F0Y2hkb2dMb2NrU3RhdGUgXAorICAgICAgICBST01fV2F0Y2hkb2dMb2NrU3RhdGUKKyNlbHNlCisjZGVmaW5lIE1BUF9XYXRjaGRvZ0xvY2tTdGF0ZSBcCisgICAgICAgIFdhdGNoZG9nTG9ja1N0YXRlCisjZW5kaWYKKyNpZmRlZiBST01fV2F0Y2hkb2dSZWxvYWRTZXQKKyNkZWZpbmUgTUFQX1dhdGNoZG9nUmVsb2FkU2V0IFwKKyAgICAgICAgUk9NX1dhdGNoZG9nUmVsb2FkU2V0CisjZWxzZQorI2RlZmluZSBNQVBfV2F0Y2hkb2dSZWxvYWRTZXQgXAorICAgICAgICBXYXRjaGRvZ1JlbG9hZFNldAorI2VuZGlmCisjaWZkZWYgUk9NX1dhdGNoZG9nUmVsb2FkR2V0CisjZGVmaW5lIE1BUF9XYXRjaGRvZ1JlbG9hZEdldCBcCisgICAgICAgIFJPTV9XYXRjaGRvZ1JlbG9hZEdldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1dhdGNoZG9nUmVsb2FkR2V0IFwKKyAgICAgICAgV2F0Y2hkb2dSZWxvYWRHZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9XYXRjaGRvZ1ZhbHVlR2V0CisjZGVmaW5lIE1BUF9XYXRjaGRvZ1ZhbHVlR2V0IFwKKyAgICAgICAgUk9NX1dhdGNoZG9nVmFsdWVHZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9XYXRjaGRvZ1ZhbHVlR2V0IFwKKyAgICAgICAgV2F0Y2hkb2dWYWx1ZUdldAorI2VuZGlmCisjaWZkZWYgUk9NX1dhdGNoZG9nSW50U3RhdHVzCisjZGVmaW5lIE1BUF9XYXRjaGRvZ0ludFN0YXR1cyBcCisgICAgICAgIFJPTV9XYXRjaGRvZ0ludFN0YXR1cworI2Vsc2UKKyNkZWZpbmUgTUFQX1dhdGNoZG9nSW50U3RhdHVzIFwKKyAgICAgICAgV2F0Y2hkb2dJbnRTdGF0dXMKKyNlbmRpZgorI2lmZGVmIFJPTV9XYXRjaGRvZ1N0YWxsRW5hYmxlCisjZGVmaW5lIE1BUF9XYXRjaGRvZ1N0YWxsRW5hYmxlIFwKKyAgICAgICAgUk9NX1dhdGNoZG9nU3RhbGxFbmFibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9XYXRjaGRvZ1N0YWxsRW5hYmxlIFwKKyAgICAgICAgV2F0Y2hkb2dTdGFsbEVuYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX1dhdGNoZG9nU3RhbGxEaXNhYmxlCisjZGVmaW5lIE1BUF9XYXRjaGRvZ1N0YWxsRGlzYWJsZSBcCisgICAgICAgIFJPTV9XYXRjaGRvZ1N0YWxsRGlzYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX1dhdGNoZG9nU3RhbGxEaXNhYmxlIFwKKyAgICAgICAgV2F0Y2hkb2dTdGFsbERpc2FibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9XYXRjaGRvZ0ludFJlZ2lzdGVyCisjZGVmaW5lIE1BUF9XYXRjaGRvZ0ludFJlZ2lzdGVyIFwKKyAgICAgICAgUk9NX1dhdGNoZG9nSW50UmVnaXN0ZXIKKyNlbHNlCisjZGVmaW5lIE1BUF9XYXRjaGRvZ0ludFJlZ2lzdGVyIFwKKyAgICAgICAgV2F0Y2hkb2dJbnRSZWdpc3RlcgorI2VuZGlmCisjaWZkZWYgUk9NX1dhdGNoZG9nSW50VW5yZWdpc3RlcgorI2RlZmluZSBNQVBfV2F0Y2hkb2dJbnRVbnJlZ2lzdGVyIFwKKyAgICAgICAgUk9NX1dhdGNoZG9nSW50VW5yZWdpc3RlcgorI2Vsc2UKKyNkZWZpbmUgTUFQX1dhdGNoZG9nSW50VW5yZWdpc3RlciBcCisgICAgICAgIFdhdGNoZG9nSW50VW5yZWdpc3RlcgorI2VuZGlmCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYWNyb3MgZm9yIHRoZSBJMkMgQVBJLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpZmRlZiBST01fSTJDSW50UmVnaXN0ZXIKKyNkZWZpbmUgTUFQX0kyQ0ludFJlZ2lzdGVyIFwKKyAgICAgICAgUk9NX0kyQ0ludFJlZ2lzdGVyCisjZWxzZQorI2RlZmluZSBNQVBfSTJDSW50UmVnaXN0ZXIgXAorICAgICAgICBJMkNJbnRSZWdpc3RlcgorI2VuZGlmCisjaWZkZWYgUk9NX0kyQ0ludFVucmVnaXN0ZXIKKyNkZWZpbmUgTUFQX0kyQ0ludFVucmVnaXN0ZXIgXAorICAgICAgICBST01fSTJDSW50VW5yZWdpc3RlcgorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ0ludFVucmVnaXN0ZXIgXAorICAgICAgICBJMkNJbnRVbnJlZ2lzdGVyCisjZW5kaWYKKyNpZmRlZiBST01fSTJDVHhGSUZPQ29uZmlnU2V0CisjZGVmaW5lIE1BUF9JMkNUeEZJRk9Db25maWdTZXQgXAorICAgICAgICBST01fSTJDVHhGSUZPQ29uZmlnU2V0CisjZWxzZQorI2RlZmluZSBNQVBfSTJDVHhGSUZPQ29uZmlnU2V0IFwKKyAgICAgICAgSTJDVHhGSUZPQ29uZmlnU2V0CisjZW5kaWYKKyNpZmRlZiBST01fSTJDVHhGSUZPRmx1c2gKKyNkZWZpbmUgTUFQX0kyQ1R4RklGT0ZsdXNoIFwKKyAgICAgICAgUk9NX0kyQ1R4RklGT0ZsdXNoCisjZWxzZQorI2RlZmluZSBNQVBfSTJDVHhGSUZPRmx1c2ggXAorICAgICAgICBJMkNUeEZJRk9GbHVzaAorI2VuZGlmCisjaWZkZWYgUk9NX0kyQ1J4RklGT0NvbmZpZ1NldAorI2RlZmluZSBNQVBfSTJDUnhGSUZPQ29uZmlnU2V0IFwKKyAgICAgICAgUk9NX0kyQ1J4RklGT0NvbmZpZ1NldAorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ1J4RklGT0NvbmZpZ1NldCBcCisgICAgICAgIEkyQ1J4RklGT0NvbmZpZ1NldAorI2VuZGlmCisjaWZkZWYgUk9NX0kyQ1J4RklGT0ZsdXNoCisjZGVmaW5lIE1BUF9JMkNSeEZJRk9GbHVzaCBcCisgICAgICAgIFJPTV9JMkNSeEZJRk9GbHVzaAorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ1J4RklGT0ZsdXNoIFwKKyAgICAgICAgSTJDUnhGSUZPRmx1c2gKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNGSUZPU3RhdHVzCisjZGVmaW5lIE1BUF9JMkNGSUZPU3RhdHVzIFwKKyAgICAgICAgUk9NX0kyQ0ZJRk9TdGF0dXMKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNGSUZPU3RhdHVzIFwKKyAgICAgICAgSTJDRklGT1N0YXR1cworI2VuZGlmCisjaWZkZWYgUk9NX0kyQ0ZJRk9EYXRhUHV0CisjZGVmaW5lIE1BUF9JMkNGSUZPRGF0YVB1dCBcCisgICAgICAgIFJPTV9JMkNGSUZPRGF0YVB1dAorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ0ZJRk9EYXRhUHV0IFwKKyAgICAgICAgSTJDRklGT0RhdGFQdXQKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNGSUZPRGF0YVB1dE5vbkJsb2NraW5nCisjZGVmaW5lIE1BUF9JMkNGSUZPRGF0YVB1dE5vbkJsb2NraW5nIFwKKyAgICAgICAgUk9NX0kyQ0ZJRk9EYXRhUHV0Tm9uQmxvY2tpbmcKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNGSUZPRGF0YVB1dE5vbkJsb2NraW5nIFwKKyAgICAgICAgSTJDRklGT0RhdGFQdXROb25CbG9ja2luZworI2VuZGlmCisjaWZkZWYgUk9NX0kyQ0ZJRk9EYXRhR2V0CisjZGVmaW5lIE1BUF9JMkNGSUZPRGF0YUdldCBcCisgICAgICAgIFJPTV9JMkNGSUZPRGF0YUdldAorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ0ZJRk9EYXRhR2V0IFwKKyAgICAgICAgSTJDRklGT0RhdGFHZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNGSUZPRGF0YUdldE5vbkJsb2NraW5nCisjZGVmaW5lIE1BUF9JMkNGSUZPRGF0YUdldE5vbkJsb2NraW5nIFwKKyAgICAgICAgUk9NX0kyQ0ZJRk9EYXRhR2V0Tm9uQmxvY2tpbmcKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNGSUZPRGF0YUdldE5vbkJsb2NraW5nIFwKKyAgICAgICAgSTJDRklGT0RhdGFHZXROb25CbG9ja2luZworI2VuZGlmCisjaWZkZWYgUk9NX0kyQ01hc3RlckJ1cnN0TGVuZ3RoU2V0CisjZGVmaW5lIE1BUF9JMkNNYXN0ZXJCdXJzdExlbmd0aFNldCBcCisgICAgICAgIFJPTV9JMkNNYXN0ZXJCdXJzdExlbmd0aFNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ01hc3RlckJ1cnN0TGVuZ3RoU2V0IFwKKyAgICAgICAgSTJDTWFzdGVyQnVyc3RMZW5ndGhTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNNYXN0ZXJCdXJzdENvdW50R2V0CisjZGVmaW5lIE1BUF9JMkNNYXN0ZXJCdXJzdENvdW50R2V0IFwKKyAgICAgICAgUk9NX0kyQ01hc3RlckJ1cnN0Q291bnRHZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNNYXN0ZXJCdXJzdENvdW50R2V0IFwKKyAgICAgICAgSTJDTWFzdGVyQnVyc3RDb3VudEdldAorI2VuZGlmCisjaWZkZWYgUk9NX0kyQ01hc3RlckdsaXRjaEZpbHRlckNvbmZpZ1NldAorI2RlZmluZSBNQVBfSTJDTWFzdGVyR2xpdGNoRmlsdGVyQ29uZmlnU2V0IFwKKyAgICAgICAgUk9NX0kyQ01hc3RlckdsaXRjaEZpbHRlckNvbmZpZ1NldAorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ01hc3RlckdsaXRjaEZpbHRlckNvbmZpZ1NldCBcCisgICAgICAgIEkyQ01hc3RlckdsaXRjaEZpbHRlckNvbmZpZ1NldAorI2VuZGlmCisjaWZkZWYgUk9NX0kyQ1NsYXZlRklGT0VuYWJsZQorI2RlZmluZSBNQVBfSTJDU2xhdmVGSUZPRW5hYmxlIFwKKyAgICAgICAgUk9NX0kyQ1NsYXZlRklGT0VuYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ1NsYXZlRklGT0VuYWJsZSBcCisgICAgICAgIEkyQ1NsYXZlRklGT0VuYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0kyQ1NsYXZlRklGT0Rpc2FibGUKKyNkZWZpbmUgTUFQX0kyQ1NsYXZlRklGT0Rpc2FibGUgXAorICAgICAgICBST01fSTJDU2xhdmVGSUZPRGlzYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ1NsYXZlRklGT0Rpc2FibGUgXAorICAgICAgICBJMkNTbGF2ZUZJRk9EaXNhYmxlCisjZW5kaWYKKyNpZmRlZiBST01fSTJDTWFzdGVyQnVzQnVzeQorI2RlZmluZSBNQVBfSTJDTWFzdGVyQnVzQnVzeSBcCisgICAgICAgIFJPTV9JMkNNYXN0ZXJCdXNCdXN5CisjZWxzZQorI2RlZmluZSBNQVBfSTJDTWFzdGVyQnVzQnVzeSBcCisgICAgICAgIEkyQ01hc3RlckJ1c0J1c3kKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNNYXN0ZXJCdXN5CisjZGVmaW5lIE1BUF9JMkNNYXN0ZXJCdXN5IFwKKyAgICAgICAgUk9NX0kyQ01hc3RlckJ1c3kKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNNYXN0ZXJCdXN5IFwKKyAgICAgICAgSTJDTWFzdGVyQnVzeQorI2VuZGlmCisjaWZkZWYgUk9NX0kyQ01hc3RlckNvbnRyb2wKKyNkZWZpbmUgTUFQX0kyQ01hc3RlckNvbnRyb2wgXAorICAgICAgICBST01fSTJDTWFzdGVyQ29udHJvbAorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ01hc3RlckNvbnRyb2wgXAorICAgICAgICBJMkNNYXN0ZXJDb250cm9sCisjZW5kaWYKKyNpZmRlZiBST01fSTJDTWFzdGVyRGF0YUdldAorI2RlZmluZSBNQVBfSTJDTWFzdGVyRGF0YUdldCBcCisgICAgICAgIFJPTV9JMkNNYXN0ZXJEYXRhR2V0CisjZWxzZQorI2RlZmluZSBNQVBfSTJDTWFzdGVyRGF0YUdldCBcCisgICAgICAgIEkyQ01hc3RlckRhdGFHZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNNYXN0ZXJEYXRhUHV0CisjZGVmaW5lIE1BUF9JMkNNYXN0ZXJEYXRhUHV0IFwKKyAgICAgICAgUk9NX0kyQ01hc3RlckRhdGFQdXQKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNNYXN0ZXJEYXRhUHV0IFwKKyAgICAgICAgSTJDTWFzdGVyRGF0YVB1dAorI2VuZGlmCisjaWZkZWYgUk9NX0kyQ01hc3RlckRpc2FibGUKKyNkZWZpbmUgTUFQX0kyQ01hc3RlckRpc2FibGUgXAorICAgICAgICBST01fSTJDTWFzdGVyRGlzYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ01hc3RlckRpc2FibGUgXAorICAgICAgICBJMkNNYXN0ZXJEaXNhYmxlCisjZW5kaWYKKyNpZmRlZiBST01fSTJDTWFzdGVyRW5hYmxlCisjZGVmaW5lIE1BUF9JMkNNYXN0ZXJFbmFibGUgXAorICAgICAgICBST01fSTJDTWFzdGVyRW5hYmxlCisjZWxzZQorI2RlZmluZSBNQVBfSTJDTWFzdGVyRW5hYmxlIFwKKyAgICAgICAgSTJDTWFzdGVyRW5hYmxlCisjZW5kaWYKKyNpZmRlZiBST01fSTJDTWFzdGVyRXJyCisjZGVmaW5lIE1BUF9JMkNNYXN0ZXJFcnIgXAorICAgICAgICBST01fSTJDTWFzdGVyRXJyCisjZWxzZQorI2RlZmluZSBNQVBfSTJDTWFzdGVyRXJyIFwKKyAgICAgICAgSTJDTWFzdGVyRXJyCisjZW5kaWYKKyNpZmRlZiBST01fSTJDTWFzdGVySW50Q2xlYXIKKyNkZWZpbmUgTUFQX0kyQ01hc3RlckludENsZWFyIFwKKyAgICAgICAgUk9NX0kyQ01hc3RlckludENsZWFyCisjZWxzZQorI2RlZmluZSBNQVBfSTJDTWFzdGVySW50Q2xlYXIgXAorICAgICAgICBJMkNNYXN0ZXJJbnRDbGVhcgorI2VuZGlmCisjaWZkZWYgUk9NX0kyQ01hc3RlckludERpc2FibGUKKyNkZWZpbmUgTUFQX0kyQ01hc3RlckludERpc2FibGUgXAorICAgICAgICBST01fSTJDTWFzdGVySW50RGlzYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ01hc3RlckludERpc2FibGUgXAorICAgICAgICBJMkNNYXN0ZXJJbnREaXNhYmxlCisjZW5kaWYKKyNpZmRlZiBST01fSTJDTWFzdGVySW50RW5hYmxlCisjZGVmaW5lIE1BUF9JMkNNYXN0ZXJJbnRFbmFibGUgXAorICAgICAgICBST01fSTJDTWFzdGVySW50RW5hYmxlCisjZWxzZQorI2RlZmluZSBNQVBfSTJDTWFzdGVySW50RW5hYmxlIFwKKyAgICAgICAgSTJDTWFzdGVySW50RW5hYmxlCisjZW5kaWYKKyNpZmRlZiBST01fSTJDTWFzdGVySW50U3RhdHVzCisjZGVmaW5lIE1BUF9JMkNNYXN0ZXJJbnRTdGF0dXMgXAorICAgICAgICBST01fSTJDTWFzdGVySW50U3RhdHVzCisjZWxzZQorI2RlZmluZSBNQVBfSTJDTWFzdGVySW50U3RhdHVzIFwKKyAgICAgICAgSTJDTWFzdGVySW50U3RhdHVzCisjZW5kaWYKKyNpZmRlZiBST01fSTJDTWFzdGVySW50RW5hYmxlRXgKKyNkZWZpbmUgTUFQX0kyQ01hc3RlckludEVuYWJsZUV4IFwKKyAgICAgICAgUk9NX0kyQ01hc3RlckludEVuYWJsZUV4CisjZWxzZQorI2RlZmluZSBNQVBfSTJDTWFzdGVySW50RW5hYmxlRXggXAorICAgICAgICBJMkNNYXN0ZXJJbnRFbmFibGVFeAorI2VuZGlmCisjaWZkZWYgUk9NX0kyQ01hc3RlckludERpc2FibGVFeAorI2RlZmluZSBNQVBfSTJDTWFzdGVySW50RGlzYWJsZUV4IFwKKyAgICAgICAgUk9NX0kyQ01hc3RlckludERpc2FibGVFeAorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ01hc3RlckludERpc2FibGVFeCBcCisgICAgICAgIEkyQ01hc3RlckludERpc2FibGVFeAorI2VuZGlmCisjaWZkZWYgUk9NX0kyQ01hc3RlckludFN0YXR1c0V4CisjZGVmaW5lIE1BUF9JMkNNYXN0ZXJJbnRTdGF0dXNFeCBcCisgICAgICAgIFJPTV9JMkNNYXN0ZXJJbnRTdGF0dXNFeAorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ01hc3RlckludFN0YXR1c0V4IFwKKyAgICAgICAgSTJDTWFzdGVySW50U3RhdHVzRXgKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNNYXN0ZXJJbnRDbGVhckV4CisjZGVmaW5lIE1BUF9JMkNNYXN0ZXJJbnRDbGVhckV4IFwKKyAgICAgICAgUk9NX0kyQ01hc3RlckludENsZWFyRXgKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNNYXN0ZXJJbnRDbGVhckV4IFwKKyAgICAgICAgSTJDTWFzdGVySW50Q2xlYXJFeAorI2VuZGlmCisjaWZkZWYgUk9NX0kyQ01hc3RlclRpbWVvdXRTZXQKKyNkZWZpbmUgTUFQX0kyQ01hc3RlclRpbWVvdXRTZXQgXAorICAgICAgICBST01fSTJDTWFzdGVyVGltZW91dFNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ01hc3RlclRpbWVvdXRTZXQgXAorICAgICAgICBJMkNNYXN0ZXJUaW1lb3V0U2V0CisjZW5kaWYKKyNpZmRlZiBST01fSTJDU2xhdmVBQ0tPdmVycmlkZQorI2RlZmluZSBNQVBfSTJDU2xhdmVBQ0tPdmVycmlkZSBcCisgICAgICAgIFJPTV9JMkNTbGF2ZUFDS092ZXJyaWRlCisjZWxzZQorI2RlZmluZSBNQVBfSTJDU2xhdmVBQ0tPdmVycmlkZSBcCisgICAgICAgIEkyQ1NsYXZlQUNLT3ZlcnJpZGUKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNTbGF2ZUFDS1ZhbHVlU2V0CisjZGVmaW5lIE1BUF9JMkNTbGF2ZUFDS1ZhbHVlU2V0IFwKKyAgICAgICAgUk9NX0kyQ1NsYXZlQUNLVmFsdWVTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNTbGF2ZUFDS1ZhbHVlU2V0IFwKKyAgICAgICAgSTJDU2xhdmVBQ0tWYWx1ZVNldAorI2VuZGlmCisjaWZkZWYgUk9NX0kyQ01hc3RlckxpbmVTdGF0ZUdldAorI2RlZmluZSBNQVBfSTJDTWFzdGVyTGluZVN0YXRlR2V0IFwKKyAgICAgICAgUk9NX0kyQ01hc3RlckxpbmVTdGF0ZUdldAorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ01hc3RlckxpbmVTdGF0ZUdldCBcCisgICAgICAgIEkyQ01hc3RlckxpbmVTdGF0ZUdldAorI2VuZGlmCisjaWZkZWYgUk9NX0kyQ01hc3RlclNsYXZlQWRkclNldAorI2RlZmluZSBNQVBfSTJDTWFzdGVyU2xhdmVBZGRyU2V0IFwKKyAgICAgICAgUk9NX0kyQ01hc3RlclNsYXZlQWRkclNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ01hc3RlclNsYXZlQWRkclNldCBcCisgICAgICAgIEkyQ01hc3RlclNsYXZlQWRkclNldAorI2VuZGlmCisjaWZkZWYgUk9NX0kyQ1NsYXZlRGF0YUdldAorI2RlZmluZSBNQVBfSTJDU2xhdmVEYXRhR2V0IFwKKyAgICAgICAgUk9NX0kyQ1NsYXZlRGF0YUdldAorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ1NsYXZlRGF0YUdldCBcCisgICAgICAgIEkyQ1NsYXZlRGF0YUdldAorI2VuZGlmCisjaWZkZWYgUk9NX0kyQ1NsYXZlRGF0YVB1dAorI2RlZmluZSBNQVBfSTJDU2xhdmVEYXRhUHV0IFwKKyAgICAgICAgUk9NX0kyQ1NsYXZlRGF0YVB1dAorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ1NsYXZlRGF0YVB1dCBcCisgICAgICAgIEkyQ1NsYXZlRGF0YVB1dAorI2VuZGlmCisjaWZkZWYgUk9NX0kyQ1NsYXZlRGlzYWJsZQorI2RlZmluZSBNQVBfSTJDU2xhdmVEaXNhYmxlIFwKKyAgICAgICAgUk9NX0kyQ1NsYXZlRGlzYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ1NsYXZlRGlzYWJsZSBcCisgICAgICAgIEkyQ1NsYXZlRGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0kyQ1NsYXZlRW5hYmxlCisjZGVmaW5lIE1BUF9JMkNTbGF2ZUVuYWJsZSBcCisgICAgICAgIFJPTV9JMkNTbGF2ZUVuYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ1NsYXZlRW5hYmxlIFwKKyAgICAgICAgSTJDU2xhdmVFbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNTbGF2ZUluaXQKKyNkZWZpbmUgTUFQX0kyQ1NsYXZlSW5pdCBcCisgICAgICAgIFJPTV9JMkNTbGF2ZUluaXQKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNTbGF2ZUluaXQgXAorICAgICAgICBJMkNTbGF2ZUluaXQKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNTbGF2ZUFkZHJlc3NTZXQKKyNkZWZpbmUgTUFQX0kyQ1NsYXZlQWRkcmVzc1NldCBcCisgICAgICAgIFJPTV9JMkNTbGF2ZUFkZHJlc3NTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNTbGF2ZUFkZHJlc3NTZXQgXAorICAgICAgICBJMkNTbGF2ZUFkZHJlc3NTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNTbGF2ZUludENsZWFyCisjZGVmaW5lIE1BUF9JMkNTbGF2ZUludENsZWFyIFwKKyAgICAgICAgUk9NX0kyQ1NsYXZlSW50Q2xlYXIKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNTbGF2ZUludENsZWFyIFwKKyAgICAgICAgSTJDU2xhdmVJbnRDbGVhcgorI2VuZGlmCisjaWZkZWYgUk9NX0kyQ1NsYXZlSW50RGlzYWJsZQorI2RlZmluZSBNQVBfSTJDU2xhdmVJbnREaXNhYmxlIFwKKyAgICAgICAgUk9NX0kyQ1NsYXZlSW50RGlzYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ1NsYXZlSW50RGlzYWJsZSBcCisgICAgICAgIEkyQ1NsYXZlSW50RGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0kyQ1NsYXZlSW50RW5hYmxlCisjZGVmaW5lIE1BUF9JMkNTbGF2ZUludEVuYWJsZSBcCisgICAgICAgIFJPTV9JMkNTbGF2ZUludEVuYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ1NsYXZlSW50RW5hYmxlIFwKKyAgICAgICAgSTJDU2xhdmVJbnRFbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNTbGF2ZUludENsZWFyRXgKKyNkZWZpbmUgTUFQX0kyQ1NsYXZlSW50Q2xlYXJFeCBcCisgICAgICAgIFJPTV9JMkNTbGF2ZUludENsZWFyRXgKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNTbGF2ZUludENsZWFyRXggXAorICAgICAgICBJMkNTbGF2ZUludENsZWFyRXgKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNTbGF2ZUludERpc2FibGVFeAorI2RlZmluZSBNQVBfSTJDU2xhdmVJbnREaXNhYmxlRXggXAorICAgICAgICBST01fSTJDU2xhdmVJbnREaXNhYmxlRXgKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNTbGF2ZUludERpc2FibGVFeCBcCisgICAgICAgIEkyQ1NsYXZlSW50RGlzYWJsZUV4CisjZW5kaWYKKyNpZmRlZiBST01fSTJDU2xhdmVJbnRFbmFibGVFeAorI2RlZmluZSBNQVBfSTJDU2xhdmVJbnRFbmFibGVFeCBcCisgICAgICAgIFJPTV9JMkNTbGF2ZUludEVuYWJsZUV4CisjZWxzZQorI2RlZmluZSBNQVBfSTJDU2xhdmVJbnRFbmFibGVFeCBcCisgICAgICAgIEkyQ1NsYXZlSW50RW5hYmxlRXgKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNTbGF2ZUludFN0YXR1cworI2RlZmluZSBNQVBfSTJDU2xhdmVJbnRTdGF0dXMgXAorICAgICAgICBST01fSTJDU2xhdmVJbnRTdGF0dXMKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNTbGF2ZUludFN0YXR1cyBcCisgICAgICAgIEkyQ1NsYXZlSW50U3RhdHVzCisjZW5kaWYKKyNpZmRlZiBST01fSTJDU2xhdmVJbnRTdGF0dXNFeAorI2RlZmluZSBNQVBfSTJDU2xhdmVJbnRTdGF0dXNFeCBcCisgICAgICAgIFJPTV9JMkNTbGF2ZUludFN0YXR1c0V4CisjZWxzZQorI2RlZmluZSBNQVBfSTJDU2xhdmVJbnRTdGF0dXNFeCBcCisgICAgICAgIEkyQ1NsYXZlSW50U3RhdHVzRXgKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNTbGF2ZVN0YXR1cworI2RlZmluZSBNQVBfSTJDU2xhdmVTdGF0dXMgXAorICAgICAgICBST01fSTJDU2xhdmVTdGF0dXMKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNTbGF2ZVN0YXR1cyBcCisgICAgICAgIEkyQ1NsYXZlU3RhdHVzCisjZW5kaWYKKyNpZmRlZiBST01fSTJDTWFzdGVySW5pdEV4cENsaworI2RlZmluZSBNQVBfSTJDTWFzdGVySW5pdEV4cENsayBcCisgICAgICAgIFJPTV9JMkNNYXN0ZXJJbml0RXhwQ2xrCisjZWxzZQorI2RlZmluZSBNQVBfSTJDTWFzdGVySW5pdEV4cENsayBcCisgICAgICAgIEkyQ01hc3RlckluaXRFeHBDbGsKKyNlbmRpZgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFjcm9zIGZvciB0aGUgU1BJIEFQSS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWZkZWYgUk9NX1NQSUVuYWJsZQorI2RlZmluZSBNQVBfU1BJRW5hYmxlIFwKKyAgICAgICAgUk9NX1NQSUVuYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX1NQSUVuYWJsZSBcCisgICAgICAgIFNQSUVuYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX1NQSURpc2FibGUKKyNkZWZpbmUgTUFQX1NQSURpc2FibGUgXAorICAgICAgICBST01fU1BJRGlzYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX1NQSURpc2FibGUgXAorICAgICAgICBTUElEaXNhYmxlCisjZW5kaWYKKyNpZmRlZiBST01fU1BJUmVzZXQKKyNkZWZpbmUgTUFQX1NQSVJlc2V0IFwKKyAgICAgICAgUk9NX1NQSVJlc2V0CisjZWxzZQorI2RlZmluZSBNQVBfU1BJUmVzZXQgXAorICAgICAgICBTUElSZXNldAorI2VuZGlmCisjaWZkZWYgUk9NX1NQSUNvbmZpZ1NldEV4cENsaworI2RlZmluZSBNQVBfU1BJQ29uZmlnU2V0RXhwQ2xrIFwKKyAgICAgICAgUk9NX1NQSUNvbmZpZ1NldEV4cENsaworI2Vsc2UKKyNkZWZpbmUgTUFQX1NQSUNvbmZpZ1NldEV4cENsayBcCisgICAgICAgIFNQSUNvbmZpZ1NldEV4cENsaworI2VuZGlmCisjaWZkZWYgUk9NX1NQSURhdGFHZXROb25CbG9ja2luZworI2RlZmluZSBNQVBfU1BJRGF0YUdldE5vbkJsb2NraW5nIFwKKyAgICAgICAgUk9NX1NQSURhdGFHZXROb25CbG9ja2luZworI2Vsc2UKKyNkZWZpbmUgTUFQX1NQSURhdGFHZXROb25CbG9ja2luZyBcCisgICAgICAgIFNQSURhdGFHZXROb25CbG9ja2luZworI2VuZGlmCisjaWZkZWYgUk9NX1NQSURhdGFHZXQKKyNkZWZpbmUgTUFQX1NQSURhdGFHZXQgXAorICAgICAgICBST01fU1BJRGF0YUdldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1NQSURhdGFHZXQgXAorICAgICAgICBTUElEYXRhR2V0CisjZW5kaWYKKyNpZmRlZiBST01fU1BJRGF0YVB1dE5vbkJsb2NraW5nCisjZGVmaW5lIE1BUF9TUElEYXRhUHV0Tm9uQmxvY2tpbmcgXAorICAgICAgICBST01fU1BJRGF0YVB1dE5vbkJsb2NraW5nCisjZWxzZQorI2RlZmluZSBNQVBfU1BJRGF0YVB1dE5vbkJsb2NraW5nIFwKKyAgICAgICAgU1BJRGF0YVB1dE5vbkJsb2NraW5nCisjZW5kaWYKKyNpZmRlZiBST01fU1BJRGF0YVB1dAorI2RlZmluZSBNQVBfU1BJRGF0YVB1dCBcCisgICAgICAgIFJPTV9TUElEYXRhUHV0CisjZWxzZQorI2RlZmluZSBNQVBfU1BJRGF0YVB1dCBcCisgICAgICAgIFNQSURhdGFQdXQKKyNlbmRpZgorI2lmZGVmIFJPTV9TUElGSUZPRW5hYmxlCisjZGVmaW5lIE1BUF9TUElGSUZPRW5hYmxlIFwKKyAgICAgICAgUk9NX1NQSUZJRk9FbmFibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9TUElGSUZPRW5hYmxlIFwKKyAgICAgICAgU1BJRklGT0VuYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX1NQSUZJRk9EaXNhYmxlCisjZGVmaW5lIE1BUF9TUElGSUZPRGlzYWJsZSBcCisgICAgICAgIFJPTV9TUElGSUZPRGlzYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX1NQSUZJRk9EaXNhYmxlIFwKKyAgICAgICAgU1BJRklGT0Rpc2FibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9TUElGSUZPTGV2ZWxTZXQKKyNkZWZpbmUgTUFQX1NQSUZJRk9MZXZlbFNldCBcCisgICAgICAgIFJPTV9TUElGSUZPTGV2ZWxTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9TUElGSUZPTGV2ZWxTZXQgXAorICAgICAgICBTUElGSUZPTGV2ZWxTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9TUElGSUZPTGV2ZWxHZXQKKyNkZWZpbmUgTUFQX1NQSUZJRk9MZXZlbEdldCBcCisgICAgICAgIFJPTV9TUElGSUZPTGV2ZWxHZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9TUElGSUZPTGV2ZWxHZXQgXAorICAgICAgICBTUElGSUZPTGV2ZWxHZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9TUElXb3JkQ291bnRTZXQKKyNkZWZpbmUgTUFQX1NQSVdvcmRDb3VudFNldCBcCisgICAgICAgIFJPTV9TUElXb3JkQ291bnRTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9TUElXb3JkQ291bnRTZXQgXAorICAgICAgICBTUElXb3JkQ291bnRTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9TUElJbnRSZWdpc3RlcgorI2RlZmluZSBNQVBfU1BJSW50UmVnaXN0ZXIgXAorICAgICAgICBST01fU1BJSW50UmVnaXN0ZXIKKyNlbHNlCisjZGVmaW5lIE1BUF9TUElJbnRSZWdpc3RlciBcCisgICAgICAgIFNQSUludFJlZ2lzdGVyCisjZW5kaWYKKyNpZmRlZiBST01fU1BJSW50VW5yZWdpc3RlcgorI2RlZmluZSBNQVBfU1BJSW50VW5yZWdpc3RlciBcCisgICAgICAgIFJPTV9TUElJbnRVbnJlZ2lzdGVyCisjZWxzZQorI2RlZmluZSBNQVBfU1BJSW50VW5yZWdpc3RlciBcCisgICAgICAgIFNQSUludFVucmVnaXN0ZXIKKyNlbmRpZgorI2lmZGVmIFJPTV9TUElJbnRFbmFibGUKKyNkZWZpbmUgTUFQX1NQSUludEVuYWJsZSBcCisgICAgICAgIFJPTV9TUElJbnRFbmFibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9TUElJbnRFbmFibGUgXAorICAgICAgICBTUElJbnRFbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9TUElJbnREaXNhYmxlCisjZGVmaW5lIE1BUF9TUElJbnREaXNhYmxlIFwKKyAgICAgICAgUk9NX1NQSUludERpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9TUElJbnREaXNhYmxlIFwKKyAgICAgICAgU1BJSW50RGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX1NQSUludFN0YXR1cworI2RlZmluZSBNQVBfU1BJSW50U3RhdHVzIFwKKyAgICAgICAgUk9NX1NQSUludFN0YXR1cworI2Vsc2UKKyNkZWZpbmUgTUFQX1NQSUludFN0YXR1cyBcCisgICAgICAgIFNQSUludFN0YXR1cworI2VuZGlmCisjaWZkZWYgUk9NX1NQSUludENsZWFyCisjZGVmaW5lIE1BUF9TUElJbnRDbGVhciBcCisgICAgICAgIFJPTV9TUElJbnRDbGVhcgorI2Vsc2UKKyNkZWZpbmUgTUFQX1NQSUludENsZWFyIFwKKyAgICAgICAgU1BJSW50Q2xlYXIKKyNlbmRpZgorI2lmZGVmIFJPTV9TUElEbWFFbmFibGUKKyNkZWZpbmUgTUFQX1NQSURtYUVuYWJsZSBcCisgICAgICAgIFJPTV9TUElEbWFFbmFibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9TUElEbWFFbmFibGUgXAorICAgICAgICBTUElEbWFFbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9TUElEbWFEaXNhYmxlCisjZGVmaW5lIE1BUF9TUElEbWFEaXNhYmxlIFwKKyAgICAgICAgUk9NX1NQSURtYURpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9TUElEbWFEaXNhYmxlIFwKKyAgICAgICAgU1BJRG1hRGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX1NQSUNTRW5hYmxlCisjZGVmaW5lIE1BUF9TUElDU0VuYWJsZSBcCisgICAgICAgIFJPTV9TUElDU0VuYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX1NQSUNTRW5hYmxlIFwKKyAgICAgICAgU1BJQ1NFbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9TUElDU0Rpc2FibGUKKyNkZWZpbmUgTUFQX1NQSUNTRGlzYWJsZSBcCisgICAgICAgIFJPTV9TUElDU0Rpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9TUElDU0Rpc2FibGUgXAorICAgICAgICBTUElDU0Rpc2FibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9TUElUcmFuc2ZlcgorI2RlZmluZSBNQVBfU1BJVHJhbnNmZXIgXAorICAgICAgICBST01fU1BJVHJhbnNmZXIKKyNlbHNlCisjZGVmaW5lIE1BUF9TUElUcmFuc2ZlciBcCisgICAgICAgIFNQSVRyYW5zZmVyCisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIE1hY3JvcyBmb3IgdGhlIENBTSBBUEkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmZGVmIFJPTV9DYW1lcmFSZXNldAorI2RlZmluZSBNQVBfQ2FtZXJhUmVzZXQgXAorICAgICAgICBST01fQ2FtZXJhUmVzZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9DYW1lcmFSZXNldCBcCisgICAgICAgIENhbWVyYVJlc2V0CisjZW5kaWYKKyNpZmRlZiBST01fQ2FtZXJhUGFyYW1zQ29uZmlnCisjZGVmaW5lIE1BUF9DYW1lcmFQYXJhbXNDb25maWcgXAorICAgICAgICBST01fQ2FtZXJhUGFyYW1zQ29uZmlnCisjZWxzZQorI2RlZmluZSBNQVBfQ2FtZXJhUGFyYW1zQ29uZmlnIFwKKyAgICAgICAgQ2FtZXJhUGFyYW1zQ29uZmlnCisjZW5kaWYKKyNpZmRlZiBST01fQ2FtZXJhWENsa0NvbmZpZworI2RlZmluZSBNQVBfQ2FtZXJhWENsa0NvbmZpZyBcCisgICAgICAgIFJPTV9DYW1lcmFYQ2xrQ29uZmlnCisjZWxzZQorI2RlZmluZSBNQVBfQ2FtZXJhWENsa0NvbmZpZyBcCisgICAgICAgIENhbWVyYVhDbGtDb25maWcKKyNlbmRpZgorI2lmZGVmIFJPTV9DYW1lcmFYQ2xrU2V0CisjZGVmaW5lIE1BUF9DYW1lcmFYQ2xrU2V0IFwKKyAgICAgICAgUk9NX0NhbWVyYVhDbGtTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9DYW1lcmFYQ2xrU2V0IFwKKyAgICAgICAgQ2FtZXJhWENsa1NldAorI2VuZGlmCisjaWZkZWYgUk9NX0NhbWVyYURNQUVuYWJsZQorI2RlZmluZSBNQVBfQ2FtZXJhRE1BRW5hYmxlIFwKKyAgICAgICAgUk9NX0NhbWVyYURNQUVuYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0NhbWVyYURNQUVuYWJsZSBcCisgICAgICAgIENhbWVyYURNQUVuYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0NhbWVyYURNQURpc2FibGUKKyNkZWZpbmUgTUFQX0NhbWVyYURNQURpc2FibGUgXAorICAgICAgICBST01fQ2FtZXJhRE1BRGlzYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0NhbWVyYURNQURpc2FibGUgXAorICAgICAgICBDYW1lcmFETUFEaXNhYmxlCisjZW5kaWYKKyNpZmRlZiBST01fQ2FtZXJhVGhyZXNob2xkU2V0CisjZGVmaW5lIE1BUF9DYW1lcmFUaHJlc2hvbGRTZXQgXAorICAgICAgICBST01fQ2FtZXJhVGhyZXNob2xkU2V0CisjZWxzZQorI2RlZmluZSBNQVBfQ2FtZXJhVGhyZXNob2xkU2V0IFwKKyAgICAgICAgQ2FtZXJhVGhyZXNob2xkU2V0CisjZW5kaWYKKyNpZmRlZiBST01fQ2FtZXJhSW50UmVnaXN0ZXIKKyNkZWZpbmUgTUFQX0NhbWVyYUludFJlZ2lzdGVyIFwKKyAgICAgICAgUk9NX0NhbWVyYUludFJlZ2lzdGVyCisjZWxzZQorI2RlZmluZSBNQVBfQ2FtZXJhSW50UmVnaXN0ZXIgXAorICAgICAgICBDYW1lcmFJbnRSZWdpc3RlcgorI2VuZGlmCisjaWZkZWYgUk9NX0NhbWVyYUludFVucmVnaXN0ZXIKKyNkZWZpbmUgTUFQX0NhbWVyYUludFVucmVnaXN0ZXIgXAorICAgICAgICBST01fQ2FtZXJhSW50VW5yZWdpc3RlcgorI2Vsc2UKKyNkZWZpbmUgTUFQX0NhbWVyYUludFVucmVnaXN0ZXIgXAorICAgICAgICBDYW1lcmFJbnRVbnJlZ2lzdGVyCisjZW5kaWYKKyNpZmRlZiBST01fQ2FtZXJhSW50RW5hYmxlCisjZGVmaW5lIE1BUF9DYW1lcmFJbnRFbmFibGUgXAorICAgICAgICBST01fQ2FtZXJhSW50RW5hYmxlCisjZWxzZQorI2RlZmluZSBNQVBfQ2FtZXJhSW50RW5hYmxlIFwKKyAgICAgICAgQ2FtZXJhSW50RW5hYmxlCisjZW5kaWYKKyNpZmRlZiBST01fQ2FtZXJhSW50RGlzYWJsZQorI2RlZmluZSBNQVBfQ2FtZXJhSW50RGlzYWJsZSBcCisgICAgICAgIFJPTV9DYW1lcmFJbnREaXNhYmxlCisjZWxzZQorI2RlZmluZSBNQVBfQ2FtZXJhSW50RGlzYWJsZSBcCisgICAgICAgIENhbWVyYUludERpc2FibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9DYW1lcmFJbnRTdGF0dXMKKyNkZWZpbmUgTUFQX0NhbWVyYUludFN0YXR1cyBcCisgICAgICAgIFJPTV9DYW1lcmFJbnRTdGF0dXMKKyNlbHNlCisjZGVmaW5lIE1BUF9DYW1lcmFJbnRTdGF0dXMgXAorICAgICAgICBDYW1lcmFJbnRTdGF0dXMKKyNlbmRpZgorI2lmZGVmIFJPTV9DYW1lcmFJbnRDbGVhcgorI2RlZmluZSBNQVBfQ2FtZXJhSW50Q2xlYXIgXAorICAgICAgICBST01fQ2FtZXJhSW50Q2xlYXIKKyNlbHNlCisjZGVmaW5lIE1BUF9DYW1lcmFJbnRDbGVhciBcCisgICAgICAgIENhbWVyYUludENsZWFyCisjZW5kaWYKKyNpZmRlZiBST01fQ2FtZXJhQ2FwdHVyZVN0b3AKKyNkZWZpbmUgTUFQX0NhbWVyYUNhcHR1cmVTdG9wIFwKKyAgICAgICAgUk9NX0NhbWVyYUNhcHR1cmVTdG9wCisjZWxzZQorI2RlZmluZSBNQVBfQ2FtZXJhQ2FwdHVyZVN0b3AgXAorICAgICAgICBDYW1lcmFDYXB0dXJlU3RvcAorI2VuZGlmCisjaWZkZWYgUk9NX0NhbWVyYUNhcHR1cmVTdGFydAorI2RlZmluZSBNQVBfQ2FtZXJhQ2FwdHVyZVN0YXJ0IFwKKyAgICAgICAgUk9NX0NhbWVyYUNhcHR1cmVTdGFydAorI2Vsc2UKKyNkZWZpbmUgTUFQX0NhbWVyYUNhcHR1cmVTdGFydCBcCisgICAgICAgIENhbWVyYUNhcHR1cmVTdGFydAorI2VuZGlmCisjaWZkZWYgUk9NX0NhbWVyYUJ1ZmZlclJlYWQKKyNkZWZpbmUgTUFQX0NhbWVyYUJ1ZmZlclJlYWQgXAorICAgICAgICBST01fQ2FtZXJhQnVmZmVyUmVhZAorI2Vsc2UKKyNkZWZpbmUgTUFQX0NhbWVyYUJ1ZmZlclJlYWQgXAorICAgICAgICBDYW1lcmFCdWZmZXJSZWFkCisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIE1hY3JvcyBmb3IgdGhlIEZMQVNIIEFQSS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWZkZWYgUk9NX0ZsYXNoRGlzYWJsZQorI2RlZmluZSBNQVBfRmxhc2hEaXNhYmxlIFwKKyAgICAgICAgUk9NX0ZsYXNoRGlzYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0ZsYXNoRGlzYWJsZSBcCisgICAgICAgIEZsYXNoRGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0ZsYXNoRXJhc2UKKyNkZWZpbmUgTUFQX0ZsYXNoRXJhc2UgXAorICAgICAgICBST01fRmxhc2hFcmFzZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0ZsYXNoRXJhc2UgXAorICAgICAgICBGbGFzaEVyYXNlCisjZW5kaWYKKyNpZmRlZiBST01fRmxhc2hNYXNzRXJhc2UKKyNkZWZpbmUgTUFQX0ZsYXNoTWFzc0VyYXNlIFwKKyAgICAgICAgUk9NX0ZsYXNoTWFzc0VyYXNlCisjZWxzZQorI2RlZmluZSBNQVBfRmxhc2hNYXNzRXJhc2UgXAorICAgICAgICBGbGFzaE1hc3NFcmFzZQorI2VuZGlmCisjaWZkZWYgUk9NX0ZsYXNoTWFzc0VyYXNlTm9uQmxvY2tpbmcKKyNkZWZpbmUgTUFQX0ZsYXNoTWFzc0VyYXNlTm9uQmxvY2tpbmcgXAorICAgICAgICBST01fRmxhc2hNYXNzRXJhc2VOb25CbG9ja2luZworI2Vsc2UKKyNkZWZpbmUgTUFQX0ZsYXNoTWFzc0VyYXNlTm9uQmxvY2tpbmcgXAorICAgICAgICBGbGFzaE1hc3NFcmFzZU5vbkJsb2NraW5nCisjZW5kaWYKKyNpZmRlZiBST01fRmxhc2hFcmFzZU5vbkJsb2NraW5nCisjZGVmaW5lIE1BUF9GbGFzaEVyYXNlTm9uQmxvY2tpbmcgXAorICAgICAgICBST01fRmxhc2hFcmFzZU5vbkJsb2NraW5nCisjZWxzZQorI2RlZmluZSBNQVBfRmxhc2hFcmFzZU5vbkJsb2NraW5nIFwKKyAgICAgICAgRmxhc2hFcmFzZU5vbkJsb2NraW5nCisjZW5kaWYKKyNpZmRlZiBST01fRmxhc2hQcm9ncmFtCisjZGVmaW5lIE1BUF9GbGFzaFByb2dyYW0gXAorICAgICAgICBST01fRmxhc2hQcm9ncmFtCisjZWxzZQorI2RlZmluZSBNQVBfRmxhc2hQcm9ncmFtIFwKKyAgICAgICAgRmxhc2hQcm9ncmFtCisjZW5kaWYKKyNpZmRlZiBST01fRmxhc2hQcm9ncmFtTm9uQmxvY2tpbmcKKyNkZWZpbmUgTUFQX0ZsYXNoUHJvZ3JhbU5vbkJsb2NraW5nIFwKKyAgICAgICAgUk9NX0ZsYXNoUHJvZ3JhbU5vbkJsb2NraW5nCisjZWxzZQorI2RlZmluZSBNQVBfRmxhc2hQcm9ncmFtTm9uQmxvY2tpbmcgXAorICAgICAgICBGbGFzaFByb2dyYW1Ob25CbG9ja2luZworI2VuZGlmCisjaWZkZWYgUk9NX0ZsYXNoSW50UmVnaXN0ZXIKKyNkZWZpbmUgTUFQX0ZsYXNoSW50UmVnaXN0ZXIgXAorICAgICAgICBST01fRmxhc2hJbnRSZWdpc3RlcgorI2Vsc2UKKyNkZWZpbmUgTUFQX0ZsYXNoSW50UmVnaXN0ZXIgXAorICAgICAgICBGbGFzaEludFJlZ2lzdGVyCisjZW5kaWYKKyNpZmRlZiBST01fRmxhc2hJbnRVbnJlZ2lzdGVyCisjZGVmaW5lIE1BUF9GbGFzaEludFVucmVnaXN0ZXIgXAorICAgICAgICBST01fRmxhc2hJbnRVbnJlZ2lzdGVyCisjZWxzZQorI2RlZmluZSBNQVBfRmxhc2hJbnRVbnJlZ2lzdGVyIFwKKyAgICAgICAgRmxhc2hJbnRVbnJlZ2lzdGVyCisjZW5kaWYKKyNpZmRlZiBST01fRmxhc2hJbnRFbmFibGUKKyNkZWZpbmUgTUFQX0ZsYXNoSW50RW5hYmxlIFwKKyAgICAgICAgUk9NX0ZsYXNoSW50RW5hYmxlCisjZWxzZQorI2RlZmluZSBNQVBfRmxhc2hJbnRFbmFibGUgXAorICAgICAgICBGbGFzaEludEVuYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0ZsYXNoSW50RGlzYWJsZQorI2RlZmluZSBNQVBfRmxhc2hJbnREaXNhYmxlIFwKKyAgICAgICAgUk9NX0ZsYXNoSW50RGlzYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0ZsYXNoSW50RGlzYWJsZSBcCisgICAgICAgIEZsYXNoSW50RGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0ZsYXNoSW50U3RhdHVzCisjZGVmaW5lIE1BUF9GbGFzaEludFN0YXR1cyBcCisgICAgICAgIFJPTV9GbGFzaEludFN0YXR1cworI2Vsc2UKKyNkZWZpbmUgTUFQX0ZsYXNoSW50U3RhdHVzIFwKKyAgICAgICAgRmxhc2hJbnRTdGF0dXMKKyNlbmRpZgorI2lmZGVmIFJPTV9GbGFzaEludENsZWFyCisjZGVmaW5lIE1BUF9GbGFzaEludENsZWFyIFwKKyAgICAgICAgUk9NX0ZsYXNoSW50Q2xlYXIKKyNlbHNlCisjZGVmaW5lIE1BUF9GbGFzaEludENsZWFyIFwKKyAgICAgICAgRmxhc2hJbnRDbGVhcgorI2VuZGlmCisjaWZkZWYgUk9NX0ZsYXNoUHJvdGVjdEdldAorI2RlZmluZSBNQVBfRmxhc2hQcm90ZWN0R2V0IFwKKyAgICAgICAgUk9NX0ZsYXNoUHJvdGVjdEdldAorI2Vsc2UKKyNkZWZpbmUgTUFQX0ZsYXNoUHJvdGVjdEdldCBcCisgICAgICAgIEZsYXNoUHJvdGVjdEdldAorI2VuZGlmCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYWNyb3MgZm9yIHRoZSBQaW4gQVBJLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpZmRlZiBST01fUGluTW9kZVNldAorI2RlZmluZSBNQVBfUGluTW9kZVNldCBcCisgICAgICAgIFJPTV9QaW5Nb2RlU2V0CisjZWxzZQorI2RlZmluZSBNQVBfUGluTW9kZVNldCBcCisgICAgICAgIFBpbk1vZGVTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9QaW5EaXJNb2RlU2V0CisjZGVmaW5lIE1BUF9QaW5EaXJNb2RlU2V0IFwKKyAgICAgICAgUk9NX1BpbkRpck1vZGVTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9QaW5EaXJNb2RlU2V0IFwKKyAgICAgICAgUGluRGlyTW9kZVNldAorI2VuZGlmCisjaWZkZWYgUk9NX1BpbkRpck1vZGVHZXQKKyNkZWZpbmUgTUFQX1BpbkRpck1vZGVHZXQgXAorICAgICAgICBST01fUGluRGlyTW9kZUdldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1BpbkRpck1vZGVHZXQgXAorICAgICAgICBQaW5EaXJNb2RlR2V0CisjZW5kaWYKKyNpZmRlZiBST01fUGluTW9kZUdldAorI2RlZmluZSBNQVBfUGluTW9kZUdldCBcCisgICAgICAgIFJPTV9QaW5Nb2RlR2V0CisjZWxzZQorI2RlZmluZSBNQVBfUGluTW9kZUdldCBcCisgICAgICAgIFBpbk1vZGVHZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9QaW5Db25maWdHZXQKKyNkZWZpbmUgTUFQX1BpbkNvbmZpZ0dldCBcCisgICAgICAgIFJPTV9QaW5Db25maWdHZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9QaW5Db25maWdHZXQgXAorICAgICAgICBQaW5Db25maWdHZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9QaW5Db25maWdTZXQKKyNkZWZpbmUgTUFQX1BpbkNvbmZpZ1NldCBcCisgICAgICAgIFJPTV9QaW5Db25maWdTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9QaW5Db25maWdTZXQgXAorICAgICAgICBQaW5Db25maWdTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9QaW5UeXBlVUFSVAorI2RlZmluZSBNQVBfUGluVHlwZVVBUlQgXAorICAgICAgICBST01fUGluVHlwZVVBUlQKKyNlbHNlCisjZGVmaW5lIE1BUF9QaW5UeXBlVUFSVCBcCisgICAgICAgIFBpblR5cGVVQVJUCisjZW5kaWYKKyNpZmRlZiBST01fUGluVHlwZUkyQworI2RlZmluZSBNQVBfUGluVHlwZUkyQyBcCisgICAgICAgIFJPTV9QaW5UeXBlSTJDCisjZWxzZQorI2RlZmluZSBNQVBfUGluVHlwZUkyQyBcCisgICAgICAgIFBpblR5cGVJMkMKKyNlbmRpZgorI2lmZGVmIFJPTV9QaW5UeXBlU1BJCisjZGVmaW5lIE1BUF9QaW5UeXBlU1BJIFwKKyAgICAgICAgUk9NX1BpblR5cGVTUEkKKyNlbHNlCisjZGVmaW5lIE1BUF9QaW5UeXBlU1BJIFwKKyAgICAgICAgUGluVHlwZVNQSQorI2VuZGlmCisjaWZkZWYgUk9NX1BpblR5cGVJMlMKKyNkZWZpbmUgTUFQX1BpblR5cGVJMlMgXAorICAgICAgICBST01fUGluVHlwZUkyUworI2Vsc2UKKyNkZWZpbmUgTUFQX1BpblR5cGVJMlMgXAorICAgICAgICBQaW5UeXBlSTJTCisjZW5kaWYKKyNpZmRlZiBST01fUGluVHlwZVRpbWVyCisjZGVmaW5lIE1BUF9QaW5UeXBlVGltZXIgXAorICAgICAgICBST01fUGluVHlwZVRpbWVyCisjZWxzZQorI2RlZmluZSBNQVBfUGluVHlwZVRpbWVyIFwKKyAgICAgICAgUGluVHlwZVRpbWVyCisjZW5kaWYKKyNpZmRlZiBST01fUGluVHlwZUNhbWVyYQorI2RlZmluZSBNQVBfUGluVHlwZUNhbWVyYSBcCisgICAgICAgIFJPTV9QaW5UeXBlQ2FtZXJhCisjZWxzZQorI2RlZmluZSBNQVBfUGluVHlwZUNhbWVyYSBcCisgICAgICAgIFBpblR5cGVDYW1lcmEKKyNlbmRpZgorI2lmZGVmIFJPTV9QaW5UeXBlR1BJTworI2RlZmluZSBNQVBfUGluVHlwZUdQSU8gXAorICAgICAgICBST01fUGluVHlwZUdQSU8KKyNlbHNlCisjZGVmaW5lIE1BUF9QaW5UeXBlR1BJTyBcCisgICAgICAgIFBpblR5cGVHUElPCisjZW5kaWYKKyNpZmRlZiBST01fUGluVHlwZUFEQworI2RlZmluZSBNQVBfUGluVHlwZUFEQyBcCisgICAgICAgIFJPTV9QaW5UeXBlQURDCisjZWxzZQorI2RlZmluZSBNQVBfUGluVHlwZUFEQyBcCisgICAgICAgIFBpblR5cGVBREMKKyNlbmRpZgorI2lmZGVmIFJPTV9QaW5UeXBlU0RIb3N0CisjZGVmaW5lIE1BUF9QaW5UeXBlU0RIb3N0IFwKKyAgICAgICAgUk9NX1BpblR5cGVTREhvc3QKKyNlbHNlCisjZGVmaW5lIE1BUF9QaW5UeXBlU0RIb3N0IFwKKyAgICAgICAgUGluVHlwZVNESG9zdAorI2VuZGlmCisjaWZkZWYgUk9NX1Bpbkh5c3RlcmVzaXNTZXQKKyNkZWZpbmUgTUFQX1Bpbkh5c3RlcmVzaXNTZXQgXAorICAgICAgICBST01fUGluSHlzdGVyZXNpc1NldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1Bpbkh5c3RlcmVzaXNTZXQgXAorICAgICAgICBQaW5IeXN0ZXJlc2lzU2V0CisjZW5kaWYKKyNpZmRlZiBST01fUGluTG9ja0xldmVsU2V0CisjZGVmaW5lIE1BUF9QaW5Mb2NrTGV2ZWxTZXQgXAorICAgICAgICBST01fUGluTG9ja0xldmVsU2V0CisjZWxzZQorI2RlZmluZSBNQVBfUGluTG9ja0xldmVsU2V0IFwKKyAgICAgICAgUGluTG9ja0xldmVsU2V0CisjZW5kaWYKKyNpZmRlZiBST01fUGluTG9jaworI2RlZmluZSBNQVBfUGluTG9jayBcCisgICAgICAgIFJPTV9QaW5Mb2NrCisjZWxzZQorI2RlZmluZSBNQVBfUGluTG9jayBcCisgICAgICAgIFBpbkxvY2sKKyNlbmRpZgorI2lmZGVmIFJPTV9QaW5VbmxvY2sKKyNkZWZpbmUgTUFQX1BpblVubG9jayBcCisgICAgICAgIFJPTV9QaW5VbmxvY2sKKyNlbHNlCisjZGVmaW5lIE1BUF9QaW5VbmxvY2sgXAorICAgICAgICBQaW5VbmxvY2sKKyNlbmRpZgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFjcm9zIGZvciB0aGUgU1lTVElDSyBBUEkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmZGVmIFJPTV9TeXNUaWNrRW5hYmxlCisjZGVmaW5lIE1BUF9TeXNUaWNrRW5hYmxlIFwKKyAgICAgICAgUk9NX1N5c1RpY2tFbmFibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9TeXNUaWNrRW5hYmxlIFwKKyAgICAgICAgU3lzVGlja0VuYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX1N5c1RpY2tEaXNhYmxlCisjZGVmaW5lIE1BUF9TeXNUaWNrRGlzYWJsZSBcCisgICAgICAgIFJPTV9TeXNUaWNrRGlzYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX1N5c1RpY2tEaXNhYmxlIFwKKyAgICAgICAgU3lzVGlja0Rpc2FibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9TeXNUaWNrSW50UmVnaXN0ZXIKKyNkZWZpbmUgTUFQX1N5c1RpY2tJbnRSZWdpc3RlciBcCisgICAgICAgIFJPTV9TeXNUaWNrSW50UmVnaXN0ZXIKKyNlbHNlCisjZGVmaW5lIE1BUF9TeXNUaWNrSW50UmVnaXN0ZXIgXAorICAgICAgICBTeXNUaWNrSW50UmVnaXN0ZXIKKyNlbmRpZgorI2lmZGVmIFJPTV9TeXNUaWNrSW50VW5yZWdpc3RlcgorI2RlZmluZSBNQVBfU3lzVGlja0ludFVucmVnaXN0ZXIgXAorICAgICAgICBST01fU3lzVGlja0ludFVucmVnaXN0ZXIKKyNlbHNlCisjZGVmaW5lIE1BUF9TeXNUaWNrSW50VW5yZWdpc3RlciBcCisgICAgICAgIFN5c1RpY2tJbnRVbnJlZ2lzdGVyCisjZW5kaWYKKyNpZmRlZiBST01fU3lzVGlja0ludEVuYWJsZQorI2RlZmluZSBNQVBfU3lzVGlja0ludEVuYWJsZSBcCisgICAgICAgIFJPTV9TeXNUaWNrSW50RW5hYmxlCisjZWxzZQorI2RlZmluZSBNQVBfU3lzVGlja0ludEVuYWJsZSBcCisgICAgICAgIFN5c1RpY2tJbnRFbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9TeXNUaWNrSW50RGlzYWJsZQorI2RlZmluZSBNQVBfU3lzVGlja0ludERpc2FibGUgXAorICAgICAgICBST01fU3lzVGlja0ludERpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9TeXNUaWNrSW50RGlzYWJsZSBcCisgICAgICAgIFN5c1RpY2tJbnREaXNhYmxlCisjZW5kaWYKKyNpZmRlZiBST01fU3lzVGlja1BlcmlvZFNldAorI2RlZmluZSBNQVBfU3lzVGlja1BlcmlvZFNldCBcCisgICAgICAgIFJPTV9TeXNUaWNrUGVyaW9kU2V0CisjZWxzZQorI2RlZmluZSBNQVBfU3lzVGlja1BlcmlvZFNldCBcCisgICAgICAgIFN5c1RpY2tQZXJpb2RTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9TeXNUaWNrUGVyaW9kR2V0CisjZGVmaW5lIE1BUF9TeXNUaWNrUGVyaW9kR2V0IFwKKyAgICAgICAgUk9NX1N5c1RpY2tQZXJpb2RHZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9TeXNUaWNrUGVyaW9kR2V0IFwKKyAgICAgICAgU3lzVGlja1BlcmlvZEdldAorI2VuZGlmCisjaWZkZWYgUk9NX1N5c1RpY2tWYWx1ZUdldAorI2RlZmluZSBNQVBfU3lzVGlja1ZhbHVlR2V0IFwKKyAgICAgICAgUk9NX1N5c1RpY2tWYWx1ZUdldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1N5c1RpY2tWYWx1ZUdldCBcCisgICAgICAgIFN5c1RpY2tWYWx1ZUdldAorI2VuZGlmCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYWNyb3MgZm9yIHRoZSBVVElMUyBBUEkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgTUFQX1V0aWxzRGVsYXkgXAorICAgICAgICBST01fVXRpbHNEZWxheQorI2Vsc2UKKyNkZWZpbmUgTUFQX1V0aWxzRGVsYXkgXAorICAgICAgICBVdGlsc0RlbGF5CisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIE1hY3JvcyBmb3IgdGhlIEkyUyBBUEkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmZGVmIFJPTV9JMlNFbmFibGUKKyNkZWZpbmUgTUFQX0kyU0VuYWJsZSBcCisgICAgICAgIFJPTV9JMlNFbmFibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9JMlNFbmFibGUgXAorICAgICAgICBJMlNFbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9JMlNEaXNhYmxlCisjZGVmaW5lIE1BUF9JMlNEaXNhYmxlIFwKKyAgICAgICAgUk9NX0kyU0Rpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9JMlNEaXNhYmxlIFwKKyAgICAgICAgSTJTRGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0kyU0RhdGFQdXQKKyNkZWZpbmUgTUFQX0kyU0RhdGFQdXQgXAorICAgICAgICBST01fSTJTRGF0YVB1dAorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyU0RhdGFQdXQgXAorICAgICAgICBJMlNEYXRhUHV0CisjZW5kaWYKKyNpZmRlZiBST01fSTJTRGF0YVB1dE5vbkJsb2NraW5nCisjZGVmaW5lIE1BUF9JMlNEYXRhUHV0Tm9uQmxvY2tpbmcgXAorICAgICAgICBST01fSTJTRGF0YVB1dE5vbkJsb2NraW5nCisjZWxzZQorI2RlZmluZSBNQVBfSTJTRGF0YVB1dE5vbkJsb2NraW5nIFwKKyAgICAgICAgSTJTRGF0YVB1dE5vbkJsb2NraW5nCisjZW5kaWYKKyNpZmRlZiBST01fSTJTRGF0YUdldAorI2RlZmluZSBNQVBfSTJTRGF0YUdldCBcCisgICAgICAgIFJPTV9JMlNEYXRhR2V0CisjZWxzZQorI2RlZmluZSBNQVBfSTJTRGF0YUdldCBcCisgICAgICAgIEkyU0RhdGFHZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9JMlNEYXRhR2V0Tm9uQmxvY2tpbmcKKyNkZWZpbmUgTUFQX0kyU0RhdGFHZXROb25CbG9ja2luZyBcCisgICAgICAgIFJPTV9JMlNEYXRhR2V0Tm9uQmxvY2tpbmcKKyNlbHNlCisjZGVmaW5lIE1BUF9JMlNEYXRhR2V0Tm9uQmxvY2tpbmcgXAorICAgICAgICBJMlNEYXRhR2V0Tm9uQmxvY2tpbmcKKyNlbmRpZgorI2lmZGVmIFJPTV9JMlNDb25maWdTZXRFeHBDbGsKKyNkZWZpbmUgTUFQX0kyU0NvbmZpZ1NldEV4cENsayBcCisgICAgICAgIFJPTV9JMlNDb25maWdTZXRFeHBDbGsKKyNlbHNlCisjZGVmaW5lIE1BUF9JMlNDb25maWdTZXRFeHBDbGsgXAorICAgICAgICBJMlNDb25maWdTZXRFeHBDbGsKKyNlbmRpZgorI2lmZGVmIFJPTV9JMlNUeEZJRk9FbmFibGUKKyNkZWZpbmUgTUFQX0kyU1R4RklGT0VuYWJsZSBcCisgICAgICAgIFJPTV9JMlNUeEZJRk9FbmFibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9JMlNUeEZJRk9FbmFibGUgXAorICAgICAgICBJMlNUeEZJRk9FbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9JMlNUeEZJRk9EaXNhYmxlCisjZGVmaW5lIE1BUF9JMlNUeEZJRk9EaXNhYmxlIFwKKyAgICAgICAgUk9NX0kyU1R4RklGT0Rpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9JMlNUeEZJRk9EaXNhYmxlIFwKKyAgICAgICAgSTJTVHhGSUZPRGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0kyU1J4RklGT0VuYWJsZQorI2RlZmluZSBNQVBfSTJTUnhGSUZPRW5hYmxlIFwKKyAgICAgICAgUk9NX0kyU1J4RklGT0VuYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyU1J4RklGT0VuYWJsZSBcCisgICAgICAgIEkyU1J4RklGT0VuYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0kyU1J4RklGT0Rpc2FibGUKKyNkZWZpbmUgTUFQX0kyU1J4RklGT0Rpc2FibGUgXAorICAgICAgICBST01fSTJTUnhGSUZPRGlzYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyU1J4RklGT0Rpc2FibGUgXAorICAgICAgICBJMlNSeEZJRk9EaXNhYmxlCisjZW5kaWYKKyNpZmRlZiBST01fSTJTVHhGSUZPU3RhdHVzR2V0CisjZGVmaW5lIE1BUF9JMlNUeEZJRk9TdGF0dXNHZXQgXAorICAgICAgICBST01fSTJTVHhGSUZPU3RhdHVzR2V0CisjZWxzZQorI2RlZmluZSBNQVBfSTJTVHhGSUZPU3RhdHVzR2V0IFwKKyAgICAgICAgSTJTVHhGSUZPU3RhdHVzR2V0CisjZW5kaWYKKyNpZmRlZiBST01fSTJTUnhGSUZPU3RhdHVzR2V0CisjZGVmaW5lIE1BUF9JMlNSeEZJRk9TdGF0dXNHZXQgXAorICAgICAgICBST01fSTJTUnhGSUZPU3RhdHVzR2V0CisjZWxzZQorI2RlZmluZSBNQVBfSTJTUnhGSUZPU3RhdHVzR2V0IFwKKyAgICAgICAgSTJTUnhGSUZPU3RhdHVzR2V0CisjZW5kaWYKKyNpZmRlZiBST01fSTJTU2VyaWFsaXplckNvbmZpZworI2RlZmluZSBNQVBfSTJTU2VyaWFsaXplckNvbmZpZyBcCisgICAgICAgIFJPTV9JMlNTZXJpYWxpemVyQ29uZmlnCisjZWxzZQorI2RlZmluZSBNQVBfSTJTU2VyaWFsaXplckNvbmZpZyBcCisgICAgICAgIEkyU1NlcmlhbGl6ZXJDb25maWcKKyNlbmRpZgorI2lmZGVmIFJPTV9JMlNJbnRFbmFibGUKKyNkZWZpbmUgTUFQX0kyU0ludEVuYWJsZSBcCisgICAgICAgIFJPTV9JMlNJbnRFbmFibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9JMlNJbnRFbmFibGUgXAorICAgICAgICBJMlNJbnRFbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9JMlNJbnREaXNhYmxlCisjZGVmaW5lIE1BUF9JMlNJbnREaXNhYmxlIFwKKyAgICAgICAgUk9NX0kyU0ludERpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9JMlNJbnREaXNhYmxlIFwKKyAgICAgICAgSTJTSW50RGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0kyU0ludFN0YXR1cworI2RlZmluZSBNQVBfSTJTSW50U3RhdHVzIFwKKyAgICAgICAgUk9NX0kyU0ludFN0YXR1cworI2Vsc2UKKyNkZWZpbmUgTUFQX0kyU0ludFN0YXR1cyBcCisgICAgICAgIEkyU0ludFN0YXR1cworI2VuZGlmCisjaWZkZWYgUk9NX0kyU0ludENsZWFyCisjZGVmaW5lIE1BUF9JMlNJbnRDbGVhciBcCisgICAgICAgIFJPTV9JMlNJbnRDbGVhcgorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyU0ludENsZWFyIFwKKyAgICAgICAgSTJTSW50Q2xlYXIKKyNlbmRpZgorI2lmZGVmIFJPTV9JMlNJbnRSZWdpc3RlcgorI2RlZmluZSBNQVBfSTJTSW50UmVnaXN0ZXIgXAorICAgICAgICBST01fSTJTSW50UmVnaXN0ZXIKKyNlbHNlCisjZGVmaW5lIE1BUF9JMlNJbnRSZWdpc3RlciBcCisgICAgICAgIEkyU0ludFJlZ2lzdGVyCisjZW5kaWYKKyNpZmRlZiBST01fSTJTSW50VW5yZWdpc3RlcgorI2RlZmluZSBNQVBfSTJTSW50VW5yZWdpc3RlciBcCisgICAgICAgIFJPTV9JMlNJbnRVbnJlZ2lzdGVyCisjZWxzZQorI2RlZmluZSBNQVBfSTJTSW50VW5yZWdpc3RlciBcCisgICAgICAgIEkyU0ludFVucmVnaXN0ZXIKKyNlbmRpZgorI2lmZGVmIFJPTV9JMlNUeEFjdGl2ZVNsb3RTZXQKKyNkZWZpbmUgTUFQX0kyU1R4QWN0aXZlU2xvdFNldCBcCisgICAgICAgIFJPTV9JMlNUeEFjdGl2ZVNsb3RTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9JMlNUeEFjdGl2ZVNsb3RTZXQgXAorICAgICAgICBJMlNUeEFjdGl2ZVNsb3RTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9JMlNSeEFjdGl2ZVNsb3RTZXQKKyNkZWZpbmUgTUFQX0kyU1J4QWN0aXZlU2xvdFNldCBcCisgICAgICAgIFJPTV9JMlNSeEFjdGl2ZVNsb3RTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9JMlNSeEFjdGl2ZVNsb3RTZXQgXAorICAgICAgICBJMlNSeEFjdGl2ZVNsb3RTZXQKKyNlbmRpZgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFjcm9zIGZvciB0aGUgR1BJTyBBUEkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmZGVmIFJPTV9HUElPRGlyTW9kZVNldAorI2RlZmluZSBNQVBfR1BJT0Rpck1vZGVTZXQgXAorICAgICAgICBST01fR1BJT0Rpck1vZGVTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9HUElPRGlyTW9kZVNldCBcCisgICAgICAgIEdQSU9EaXJNb2RlU2V0CisjZW5kaWYKKyNpZmRlZiBST01fR1BJT0Rpck1vZGVHZXQKKyNkZWZpbmUgTUFQX0dQSU9EaXJNb2RlR2V0IFwKKyAgICAgICAgUk9NX0dQSU9EaXJNb2RlR2V0CisjZWxzZQorI2RlZmluZSBNQVBfR1BJT0Rpck1vZGVHZXQgXAorICAgICAgICBHUElPRGlyTW9kZUdldAorI2VuZGlmCisjaWZkZWYgUk9NX0dQSU9JbnRUeXBlU2V0CisjZGVmaW5lIE1BUF9HUElPSW50VHlwZVNldCBcCisgICAgICAgIFJPTV9HUElPSW50VHlwZVNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX0dQSU9JbnRUeXBlU2V0IFwKKyAgICAgICAgR1BJT0ludFR5cGVTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9HUElPRE1BVHJpZ2dlckVuYWJsZQorI2RlZmluZSBNQVBfR1BJT0RNQVRyaWdnZXJFbmFibGUgXAorICAgICAgICBST01fR1BJT0RNQVRyaWdnZXJFbmFibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9HUElPRE1BVHJpZ2dlckVuYWJsZSBcCisgICAgICAgIEdQSU9ETUFUcmlnZ2VyRW5hYmxlCisjZW5kaWYKKyNpZmRlZiBST01fR1BJT0RNQVRyaWdnZXJEaXNhYmxlCisjZGVmaW5lIE1BUF9HUElPRE1BVHJpZ2dlckRpc2FibGUgXAorICAgICAgICBST01fR1BJT0RNQVRyaWdnZXJEaXNhYmxlCisjZWxzZQorI2RlZmluZSBNQVBfR1BJT0RNQVRyaWdnZXJEaXNhYmxlIFwKKyAgICAgICAgR1BJT0RNQVRyaWdnZXJEaXNhYmxlCisjZW5kaWYKKyNpZmRlZiBST01fR1BJT0ludFR5cGVHZXQKKyNkZWZpbmUgTUFQX0dQSU9JbnRUeXBlR2V0IFwKKyAgICAgICAgUk9NX0dQSU9JbnRUeXBlR2V0CisjZWxzZQorI2RlZmluZSBNQVBfR1BJT0ludFR5cGVHZXQgXAorICAgICAgICBHUElPSW50VHlwZUdldAorI2VuZGlmCisjaWZkZWYgUk9NX0dQSU9JbnRFbmFibGUKKyNkZWZpbmUgTUFQX0dQSU9JbnRFbmFibGUgXAorICAgICAgICBST01fR1BJT0ludEVuYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0dQSU9JbnRFbmFibGUgXAorICAgICAgICBHUElPSW50RW5hYmxlCisjZW5kaWYKKyNpZmRlZiBST01fR1BJT0ludERpc2FibGUKKyNkZWZpbmUgTUFQX0dQSU9JbnREaXNhYmxlIFwKKyAgICAgICAgUk9NX0dQSU9JbnREaXNhYmxlCisjZWxzZQorI2RlZmluZSBNQVBfR1BJT0ludERpc2FibGUgXAorICAgICAgICBHUElPSW50RGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0dQSU9JbnRTdGF0dXMKKyNkZWZpbmUgTUFQX0dQSU9JbnRTdGF0dXMgXAorICAgICAgICBST01fR1BJT0ludFN0YXR1cworI2Vsc2UKKyNkZWZpbmUgTUFQX0dQSU9JbnRTdGF0dXMgXAorICAgICAgICBHUElPSW50U3RhdHVzCisjZW5kaWYKKyNpZmRlZiBST01fR1BJT0ludENsZWFyCisjZGVmaW5lIE1BUF9HUElPSW50Q2xlYXIgXAorICAgICAgICBST01fR1BJT0ludENsZWFyCisjZWxzZQorI2RlZmluZSBNQVBfR1BJT0ludENsZWFyIFwKKyAgICAgICAgR1BJT0ludENsZWFyCisjZW5kaWYKKyNpZmRlZiBST01fR1BJT0ludFJlZ2lzdGVyCisjZGVmaW5lIE1BUF9HUElPSW50UmVnaXN0ZXIgXAorICAgICAgICBST01fR1BJT0ludFJlZ2lzdGVyCisjZWxzZQorI2RlZmluZSBNQVBfR1BJT0ludFJlZ2lzdGVyIFwKKyAgICAgICAgR1BJT0ludFJlZ2lzdGVyCisjZW5kaWYKKyNpZmRlZiBST01fR1BJT0ludFVucmVnaXN0ZXIKKyNkZWZpbmUgTUFQX0dQSU9JbnRVbnJlZ2lzdGVyIFwKKyAgICAgICAgUk9NX0dQSU9JbnRVbnJlZ2lzdGVyCisjZWxzZQorI2RlZmluZSBNQVBfR1BJT0ludFVucmVnaXN0ZXIgXAorICAgICAgICBHUElPSW50VW5yZWdpc3RlcgorI2VuZGlmCisjaWZkZWYgUk9NX0dQSU9QaW5SZWFkCisjZGVmaW5lIE1BUF9HUElPUGluUmVhZCBcCisgICAgICAgIFJPTV9HUElPUGluUmVhZAorI2Vsc2UKKyNkZWZpbmUgTUFQX0dQSU9QaW5SZWFkIFwKKyAgICAgICAgR1BJT1BpblJlYWQKKyNlbmRpZgorI2lmZGVmIFJPTV9HUElPUGluV3JpdGUKKyNkZWZpbmUgTUFQX0dQSU9QaW5Xcml0ZSBcCisgICAgICAgIFJPTV9HUElPUGluV3JpdGUKKyNlbHNlCisjZGVmaW5lIE1BUF9HUElPUGluV3JpdGUgXAorICAgICAgICBHUElPUGluV3JpdGUKKyNlbmRpZgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFjcm9zIGZvciB0aGUgQUVTIEFQSS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWZkZWYgUk9NX0FFU0NvbmZpZ1NldAorI2RlZmluZSBNQVBfQUVTQ29uZmlnU2V0IFwKKyAgICAgICAgUk9NX0FFU0NvbmZpZ1NldAorI2Vsc2UKKyNkZWZpbmUgTUFQX0FFU0NvbmZpZ1NldCBcCisgICAgICAgIEFFU0NvbmZpZ1NldAorI2VuZGlmCisjaWZkZWYgUk9NX0FFU0tleTFTZXQKKyNkZWZpbmUgTUFQX0FFU0tleTFTZXQgXAorICAgICAgICBST01fQUVTS2V5MVNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX0FFU0tleTFTZXQgXAorICAgICAgICBBRVNLZXkxU2V0CisjZW5kaWYKKyNpZmRlZiBST01fQUVTS2V5MlNldAorI2RlZmluZSBNQVBfQUVTS2V5MlNldCBcCisgICAgICAgIFJPTV9BRVNLZXkyU2V0CisjZWxzZQorI2RlZmluZSBNQVBfQUVTS2V5MlNldCBcCisgICAgICAgIEFFU0tleTJTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9BRVNLZXkzU2V0CisjZGVmaW5lIE1BUF9BRVNLZXkzU2V0IFwKKyAgICAgICAgUk9NX0FFU0tleTNTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9BRVNLZXkzU2V0IFwKKyAgICAgICAgQUVTS2V5M1NldAorI2VuZGlmCisjaWZkZWYgUk9NX0FFU0lWU2V0CisjZGVmaW5lIE1BUF9BRVNJVlNldCBcCisgICAgICAgIFJPTV9BRVNJVlNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX0FFU0lWU2V0IFwKKyAgICAgICAgQUVTSVZTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9BRVNUYWdSZWFkCisjZGVmaW5lIE1BUF9BRVNUYWdSZWFkIFwKKyAgICAgICAgUk9NX0FFU1RhZ1JlYWQKKyNlbHNlCisjZGVmaW5lIE1BUF9BRVNUYWdSZWFkIFwKKyAgICAgICAgQUVTVGFnUmVhZAorI2VuZGlmCisjaWZkZWYgUk9NX0FFU0RhdGFMZW5ndGhTZXQKKyNkZWZpbmUgTUFQX0FFU0RhdGFMZW5ndGhTZXQgXAorICAgICAgICBST01fQUVTRGF0YUxlbmd0aFNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX0FFU0RhdGFMZW5ndGhTZXQgXAorICAgICAgICBBRVNEYXRhTGVuZ3RoU2V0CisjZW5kaWYKKyNpZmRlZiBST01fQUVTQXV0aERhdGFMZW5ndGhTZXQKKyNkZWZpbmUgTUFQX0FFU0F1dGhEYXRhTGVuZ3RoU2V0IFwKKyAgICAgICAgUk9NX0FFU0F1dGhEYXRhTGVuZ3RoU2V0CisjZWxzZQorI2RlZmluZSBNQVBfQUVTQXV0aERhdGFMZW5ndGhTZXQgXAorICAgICAgICBBRVNBdXRoRGF0YUxlbmd0aFNldAorI2VuZGlmCisjaWZkZWYgUk9NX0FFU0RhdGFSZWFkTm9uQmxvY2tpbmcKKyNkZWZpbmUgTUFQX0FFU0RhdGFSZWFkTm9uQmxvY2tpbmcgXAorICAgICAgICBST01fQUVTRGF0YVJlYWROb25CbG9ja2luZworI2Vsc2UKKyNkZWZpbmUgTUFQX0FFU0RhdGFSZWFkTm9uQmxvY2tpbmcgXAorICAgICAgICBBRVNEYXRhUmVhZE5vbkJsb2NraW5nCisjZW5kaWYKKyNpZmRlZiBST01fQUVTRGF0YVJlYWQKKyNkZWZpbmUgTUFQX0FFU0RhdGFSZWFkIFwKKyAgICAgICAgUk9NX0FFU0RhdGFSZWFkCisjZWxzZQorI2RlZmluZSBNQVBfQUVTRGF0YVJlYWQgXAorICAgICAgICBBRVNEYXRhUmVhZAorI2VuZGlmCisjaWZkZWYgUk9NX0FFU0RhdGFXcml0ZU5vbkJsb2NraW5nCisjZGVmaW5lIE1BUF9BRVNEYXRhV3JpdGVOb25CbG9ja2luZyBcCisgICAgICAgIFJPTV9BRVNEYXRhV3JpdGVOb25CbG9ja2luZworI2Vsc2UKKyNkZWZpbmUgTUFQX0FFU0RhdGFXcml0ZU5vbkJsb2NraW5nIFwKKyAgICAgICAgQUVTRGF0YVdyaXRlTm9uQmxvY2tpbmcKKyNlbmRpZgorI2lmZGVmIFJPTV9BRVNEYXRhV3JpdGUKKyNkZWZpbmUgTUFQX0FFU0RhdGFXcml0ZSBcCisgICAgICAgIFJPTV9BRVNEYXRhV3JpdGUKKyNlbHNlCisjZGVmaW5lIE1BUF9BRVNEYXRhV3JpdGUgXAorICAgICAgICBBRVNEYXRhV3JpdGUKKyNlbmRpZgorI2lmZGVmIFJPTV9BRVNEYXRhUHJvY2VzcworI2RlZmluZSBNQVBfQUVTRGF0YVByb2Nlc3MgXAorICAgICAgICBST01fQUVTRGF0YVByb2Nlc3MKKyNlbHNlCisjZGVmaW5lIE1BUF9BRVNEYXRhUHJvY2VzcyBcCisgICAgICAgIEFFU0RhdGFQcm9jZXNzCisjZW5kaWYKKyNpZmRlZiBST01fQUVTRGF0YU1BQworI2RlZmluZSBNQVBfQUVTRGF0YU1BQyBcCisgICAgICAgIFJPTV9BRVNEYXRhTUFDCisjZWxzZQorI2RlZmluZSBNQVBfQUVTRGF0YU1BQyBcCisgICAgICAgIEFFU0RhdGFNQUMKKyNlbmRpZgorI2lmZGVmIFJPTV9BRVNEYXRhUHJvY2Vzc0FFCisjZGVmaW5lIE1BUF9BRVNEYXRhUHJvY2Vzc0FFIFwKKyAgICAgICAgUk9NX0FFU0RhdGFQcm9jZXNzQUUKKyNlbHNlCisjZGVmaW5lIE1BUF9BRVNEYXRhUHJvY2Vzc0FFIFwKKyAgICAgICAgQUVTRGF0YVByb2Nlc3NBRQorI2VuZGlmCisjaWZkZWYgUk9NX0FFU0ludFN0YXR1cworI2RlZmluZSBNQVBfQUVTSW50U3RhdHVzIFwKKyAgICAgICAgUk9NX0FFU0ludFN0YXR1cworI2Vsc2UKKyNkZWZpbmUgTUFQX0FFU0ludFN0YXR1cyBcCisgICAgICAgIEFFU0ludFN0YXR1cworI2VuZGlmCisjaWZkZWYgUk9NX0FFU0ludEVuYWJsZQorI2RlZmluZSBNQVBfQUVTSW50RW5hYmxlIFwKKyAgICAgICAgUk9NX0FFU0ludEVuYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0FFU0ludEVuYWJsZSBcCisgICAgICAgIEFFU0ludEVuYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0FFU0ludERpc2FibGUKKyNkZWZpbmUgTUFQX0FFU0ludERpc2FibGUgXAorICAgICAgICBST01fQUVTSW50RGlzYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0FFU0ludERpc2FibGUgXAorICAgICAgICBBRVNJbnREaXNhYmxlCisjZW5kaWYKKyNpZmRlZiBST01fQUVTSW50Q2xlYXIKKyNkZWZpbmUgTUFQX0FFU0ludENsZWFyIFwKKyAgICAgICAgUk9NX0FFU0ludENsZWFyCisjZWxzZQorI2RlZmluZSBNQVBfQUVTSW50Q2xlYXIgXAorICAgICAgICBBRVNJbnRDbGVhcgorI2VuZGlmCisjaWZkZWYgUk9NX0FFU0ludFJlZ2lzdGVyCisjZGVmaW5lIE1BUF9BRVNJbnRSZWdpc3RlciBcCisgICAgICAgIFJPTV9BRVNJbnRSZWdpc3RlcgorI2Vsc2UKKyNkZWZpbmUgTUFQX0FFU0ludFJlZ2lzdGVyIFwKKyAgICAgICAgQUVTSW50UmVnaXN0ZXIKKyNlbmRpZgorI2lmZGVmIFJPTV9BRVNJbnRVbnJlZ2lzdGVyCisjZGVmaW5lIE1BUF9BRVNJbnRVbnJlZ2lzdGVyIFwKKyAgICAgICAgUk9NX0FFU0ludFVucmVnaXN0ZXIKKyNlbHNlCisjZGVmaW5lIE1BUF9BRVNJbnRVbnJlZ2lzdGVyIFwKKyAgICAgICAgQUVTSW50VW5yZWdpc3RlcgorI2VuZGlmCisjaWZkZWYgUk9NX0FFU0RNQUVuYWJsZQorI2RlZmluZSBNQVBfQUVTRE1BRW5hYmxlIFwKKyAgICAgICAgUk9NX0FFU0RNQUVuYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0FFU0RNQUVuYWJsZSBcCisgICAgICAgIEFFU0RNQUVuYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0FFU0RNQURpc2FibGUKKyNkZWZpbmUgTUFQX0FFU0RNQURpc2FibGUgXAorICAgICAgICBST01fQUVTRE1BRGlzYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0FFU0RNQURpc2FibGUgXAorICAgICAgICBBRVNETUFEaXNhYmxlCisjZW5kaWYKKyNpZmRlZiBST01fQUVTSVZHZXQKKyNkZWZpbmUgTUFQX0FFU0lWR2V0IFwKKyAgICAgICAgUk9NX0FFU0lWR2V0CisjZWxzZQorI2RlZmluZSBNQVBfQUVTSVZHZXQgXAorICAgICAgICBBRVNJVkdldAorI2VuZGlmCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYWNyb3MgZm9yIHRoZSBERVMgQVBJLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpZmRlZiBST01fREVTQ29uZmlnU2V0CisjZGVmaW5lIE1BUF9ERVNDb25maWdTZXQgXAorICAgICAgICBST01fREVTQ29uZmlnU2V0CisjZWxzZQorI2RlZmluZSBNQVBfREVTQ29uZmlnU2V0IFwKKyAgICAgICAgREVTQ29uZmlnU2V0CisjZW5kaWYKKyNpZmRlZiBST01fREVTRGF0YVJlYWQKKyNkZWZpbmUgTUFQX0RFU0RhdGFSZWFkIFwKKyAgICAgICAgUk9NX0RFU0RhdGFSZWFkCisjZWxzZQorI2RlZmluZSBNQVBfREVTRGF0YVJlYWQgXAorICAgICAgICBERVNEYXRhUmVhZAorI2VuZGlmCisjaWZkZWYgUk9NX0RFU0RhdGFSZWFkTm9uQmxvY2tpbmcKKyNkZWZpbmUgTUFQX0RFU0RhdGFSZWFkTm9uQmxvY2tpbmcgXAorICAgICAgICBST01fREVTRGF0YVJlYWROb25CbG9ja2luZworI2Vsc2UKKyNkZWZpbmUgTUFQX0RFU0RhdGFSZWFkTm9uQmxvY2tpbmcgXAorICAgICAgICBERVNEYXRhUmVhZE5vbkJsb2NraW5nCisjZW5kaWYKKyNpZmRlZiBST01fREVTRGF0YVByb2Nlc3MKKyNkZWZpbmUgTUFQX0RFU0RhdGFQcm9jZXNzIFwKKyAgICAgICAgUk9NX0RFU0RhdGFQcm9jZXNzCisjZWxzZQorI2RlZmluZSBNQVBfREVTRGF0YVByb2Nlc3MgXAorICAgICAgICBERVNEYXRhUHJvY2VzcworI2VuZGlmCisjaWZkZWYgUk9NX0RFU0RhdGFXcml0ZQorI2RlZmluZSBNQVBfREVTRGF0YVdyaXRlIFwKKyAgICAgICAgUk9NX0RFU0RhdGFXcml0ZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0RFU0RhdGFXcml0ZSBcCisgICAgICAgIERFU0RhdGFXcml0ZQorI2VuZGlmCisjaWZkZWYgUk9NX0RFU0RhdGFXcml0ZU5vbkJsb2NraW5nCisjZGVmaW5lIE1BUF9ERVNEYXRhV3JpdGVOb25CbG9ja2luZyBcCisgICAgICAgIFJPTV9ERVNEYXRhV3JpdGVOb25CbG9ja2luZworI2Vsc2UKKyNkZWZpbmUgTUFQX0RFU0RhdGFXcml0ZU5vbkJsb2NraW5nIFwKKyAgICAgICAgREVTRGF0YVdyaXRlTm9uQmxvY2tpbmcKKyNlbmRpZgorI2lmZGVmIFJPTV9ERVNETUFEaXNhYmxlCisjZGVmaW5lIE1BUF9ERVNETUFEaXNhYmxlIFwKKyAgICAgICAgUk9NX0RFU0RNQURpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9ERVNETUFEaXNhYmxlIFwKKyAgICAgICAgREVTRE1BRGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0RFU0RNQUVuYWJsZQorI2RlZmluZSBNQVBfREVTRE1BRW5hYmxlIFwKKyAgICAgICAgUk9NX0RFU0RNQUVuYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0RFU0RNQUVuYWJsZSBcCisgICAgICAgIERFU0RNQUVuYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0RFU0ludENsZWFyCisjZGVmaW5lIE1BUF9ERVNJbnRDbGVhciBcCisgICAgICAgIFJPTV9ERVNJbnRDbGVhcgorI2Vsc2UKKyNkZWZpbmUgTUFQX0RFU0ludENsZWFyIFwKKyAgICAgICAgREVTSW50Q2xlYXIKKyNlbmRpZgorI2lmZGVmIFJPTV9ERVNJbnREaXNhYmxlCisjZGVmaW5lIE1BUF9ERVNJbnREaXNhYmxlIFwKKyAgICAgICAgUk9NX0RFU0ludERpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9ERVNJbnREaXNhYmxlIFwKKyAgICAgICAgREVTSW50RGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0RFU0ludEVuYWJsZQorI2RlZmluZSBNQVBfREVTSW50RW5hYmxlIFwKKyAgICAgICAgUk9NX0RFU0ludEVuYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0RFU0ludEVuYWJsZSBcCisgICAgICAgIERFU0ludEVuYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0RFU0ludFJlZ2lzdGVyCisjZGVmaW5lIE1BUF9ERVNJbnRSZWdpc3RlciBcCisgICAgICAgIFJPTV9ERVNJbnRSZWdpc3RlcgorI2Vsc2UKKyNkZWZpbmUgTUFQX0RFU0ludFJlZ2lzdGVyIFwKKyAgICAgICAgREVTSW50UmVnaXN0ZXIKKyNlbmRpZgorI2lmZGVmIFJPTV9ERVNJbnRTdGF0dXMKKyNkZWZpbmUgTUFQX0RFU0ludFN0YXR1cyBcCisgICAgICAgIFJPTV9ERVNJbnRTdGF0dXMKKyNlbHNlCisjZGVmaW5lIE1BUF9ERVNJbnRTdGF0dXMgXAorICAgICAgICBERVNJbnRTdGF0dXMKKyNlbmRpZgorI2lmZGVmIFJPTV9ERVNJbnRVbnJlZ2lzdGVyCisjZGVmaW5lIE1BUF9ERVNJbnRVbnJlZ2lzdGVyIFwKKyAgICAgICAgUk9NX0RFU0ludFVucmVnaXN0ZXIKKyNlbHNlCisjZGVmaW5lIE1BUF9ERVNJbnRVbnJlZ2lzdGVyIFwKKyAgICAgICAgREVTSW50VW5yZWdpc3RlcgorI2VuZGlmCisjaWZkZWYgUk9NX0RFU0lWU2V0CisjZGVmaW5lIE1BUF9ERVNJVlNldCBcCisgICAgICAgIFJPTV9ERVNJVlNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX0RFU0lWU2V0IFwKKyAgICAgICAgREVTSVZTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9ERVNLZXlTZXQKKyNkZWZpbmUgTUFQX0RFU0tleVNldCBcCisgICAgICAgIFJPTV9ERVNLZXlTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9ERVNLZXlTZXQgXAorICAgICAgICBERVNLZXlTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9ERVNEYXRhTGVuZ3RoU2V0CisjZGVmaW5lIE1BUF9ERVNEYXRhTGVuZ3RoU2V0IFwKKyAgICAgICAgUk9NX0RFU0RhdGFMZW5ndGhTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9ERVNEYXRhTGVuZ3RoU2V0IFwKKyAgICAgICAgREVTRGF0YUxlbmd0aFNldAorI2VuZGlmCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYWNyb3MgZm9yIHRoZSBTSEFNRDUgQVBJLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpZmRlZiBST01fU0hBTUQ1Q29uZmlnU2V0CisjZGVmaW5lIE1BUF9TSEFNRDVDb25maWdTZXQgXAorICAgICAgICBST01fU0hBTUQ1Q29uZmlnU2V0CisjZWxzZQorI2RlZmluZSBNQVBfU0hBTUQ1Q29uZmlnU2V0IFwKKyAgICAgICAgU0hBTUQ1Q29uZmlnU2V0CisjZW5kaWYKKyNpZmRlZiBST01fU0hBTUQ1RGF0YVByb2Nlc3MKKyNkZWZpbmUgTUFQX1NIQU1ENURhdGFQcm9jZXNzIFwKKyAgICAgICAgUk9NX1NIQU1ENURhdGFQcm9jZXNzCisjZWxzZQorI2RlZmluZSBNQVBfU0hBTUQ1RGF0YVByb2Nlc3MgXAorICAgICAgICBTSEFNRDVEYXRhUHJvY2VzcworI2VuZGlmCisjaWZkZWYgUk9NX1NIQU1ENURhdGFXcml0ZQorI2RlZmluZSBNQVBfU0hBTUQ1RGF0YVdyaXRlIFwKKyAgICAgICAgUk9NX1NIQU1ENURhdGFXcml0ZQorI2Vsc2UKKyNkZWZpbmUgTUFQX1NIQU1ENURhdGFXcml0ZSBcCisgICAgICAgIFNIQU1ENURhdGFXcml0ZQorI2VuZGlmCisjaWZkZWYgUk9NX1NIQU1ENURhdGFXcml0ZU5vbkJsb2NraW5nCisjZGVmaW5lIE1BUF9TSEFNRDVEYXRhV3JpdGVOb25CbG9ja2luZyBcCisgICAgICAgIFJPTV9TSEFNRDVEYXRhV3JpdGVOb25CbG9ja2luZworI2Vsc2UKKyNkZWZpbmUgTUFQX1NIQU1ENURhdGFXcml0ZU5vbkJsb2NraW5nIFwKKyAgICAgICAgU0hBTUQ1RGF0YVdyaXRlTm9uQmxvY2tpbmcKKyNlbmRpZgorI2lmZGVmIFJPTV9TSEFNRDVETUFEaXNhYmxlCisjZGVmaW5lIE1BUF9TSEFNRDVETUFEaXNhYmxlIFwKKyAgICAgICAgUk9NX1NIQU1ENURNQURpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9TSEFNRDVETUFEaXNhYmxlIFwKKyAgICAgICAgU0hBTUQ1RE1BRGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX1NIQU1ENURNQUVuYWJsZQorI2RlZmluZSBNQVBfU0hBTUQ1RE1BRW5hYmxlIFwKKyAgICAgICAgUk9NX1NIQU1ENURNQUVuYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX1NIQU1ENURNQUVuYWJsZSBcCisgICAgICAgIFNIQU1ENURNQUVuYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX1NIQU1ENURhdGFMZW5ndGhTZXQKKyNkZWZpbmUgTUFQX1NIQU1ENURhdGFMZW5ndGhTZXQgXAorICAgICAgICBST01fU0hBTUQ1RGF0YUxlbmd0aFNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1NIQU1ENURhdGFMZW5ndGhTZXQgXAorICAgICAgICBTSEFNRDVEYXRhTGVuZ3RoU2V0CisjZW5kaWYKKyNpZmRlZiBST01fU0hBTUQ1SE1BQ0tleVNldAorI2RlZmluZSBNQVBfU0hBTUQ1SE1BQ0tleVNldCBcCisgICAgICAgIFJPTV9TSEFNRDVITUFDS2V5U2V0CisjZWxzZQorI2RlZmluZSBNQVBfU0hBTUQ1SE1BQ0tleVNldCBcCisgICAgICAgIFNIQU1ENUhNQUNLZXlTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9TSEFNRDVITUFDUFBLZXlHZW5lcmF0ZQorI2RlZmluZSBNQVBfU0hBTUQ1SE1BQ1BQS2V5R2VuZXJhdGUgXAorICAgICAgICBST01fU0hBTUQ1SE1BQ1BQS2V5R2VuZXJhdGUKKyNlbHNlCisjZGVmaW5lIE1BUF9TSEFNRDVITUFDUFBLZXlHZW5lcmF0ZSBcCisgICAgICAgIFNIQU1ENUhNQUNQUEtleUdlbmVyYXRlCisjZW5kaWYKKyNpZmRlZiBST01fU0hBTUQ1SE1BQ1BQS2V5U2V0CisjZGVmaW5lIE1BUF9TSEFNRDVITUFDUFBLZXlTZXQgXAorICAgICAgICBST01fU0hBTUQ1SE1BQ1BQS2V5U2V0CisjZWxzZQorI2RlZmluZSBNQVBfU0hBTUQ1SE1BQ1BQS2V5U2V0IFwKKyAgICAgICAgU0hBTUQ1SE1BQ1BQS2V5U2V0CisjZW5kaWYKKyNpZmRlZiBST01fU0hBTUQ1SE1BQ1Byb2Nlc3MKKyNkZWZpbmUgTUFQX1NIQU1ENUhNQUNQcm9jZXNzIFwKKyAgICAgICAgUk9NX1NIQU1ENUhNQUNQcm9jZXNzCisjZWxzZQorI2RlZmluZSBNQVBfU0hBTUQ1SE1BQ1Byb2Nlc3MgXAorICAgICAgICBTSEFNRDVITUFDUHJvY2VzcworI2VuZGlmCisjaWZkZWYgUk9NX1NIQU1ENUludENsZWFyCisjZGVmaW5lIE1BUF9TSEFNRDVJbnRDbGVhciBcCisgICAgICAgIFJPTV9TSEFNRDVJbnRDbGVhcgorI2Vsc2UKKyNkZWZpbmUgTUFQX1NIQU1ENUludENsZWFyIFwKKyAgICAgICAgU0hBTUQ1SW50Q2xlYXIKKyNlbmRpZgorI2lmZGVmIFJPTV9TSEFNRDVJbnREaXNhYmxlCisjZGVmaW5lIE1BUF9TSEFNRDVJbnREaXNhYmxlIFwKKyAgICAgICAgUk9NX1NIQU1ENUludERpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9TSEFNRDVJbnREaXNhYmxlIFwKKyAgICAgICAgU0hBTUQ1SW50RGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX1NIQU1ENUludEVuYWJsZQorI2RlZmluZSBNQVBfU0hBTUQ1SW50RW5hYmxlIFwKKyAgICAgICAgUk9NX1NIQU1ENUludEVuYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX1NIQU1ENUludEVuYWJsZSBcCisgICAgICAgIFNIQU1ENUludEVuYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX1NIQU1ENUludFJlZ2lzdGVyCisjZGVmaW5lIE1BUF9TSEFNRDVJbnRSZWdpc3RlciBcCisgICAgICAgIFJPTV9TSEFNRDVJbnRSZWdpc3RlcgorI2Vsc2UKKyNkZWZpbmUgTUFQX1NIQU1ENUludFJlZ2lzdGVyIFwKKyAgICAgICAgU0hBTUQ1SW50UmVnaXN0ZXIKKyNlbmRpZgorI2lmZGVmIFJPTV9TSEFNRDVJbnRTdGF0dXMKKyNkZWZpbmUgTUFQX1NIQU1ENUludFN0YXR1cyBcCisgICAgICAgIFJPTV9TSEFNRDVJbnRTdGF0dXMKKyNlbHNlCisjZGVmaW5lIE1BUF9TSEFNRDVJbnRTdGF0dXMgXAorICAgICAgICBTSEFNRDVJbnRTdGF0dXMKKyNlbmRpZgorI2lmZGVmIFJPTV9TSEFNRDVJbnRVbnJlZ2lzdGVyCisjZGVmaW5lIE1BUF9TSEFNRDVJbnRVbnJlZ2lzdGVyIFwKKyAgICAgICAgUk9NX1NIQU1ENUludFVucmVnaXN0ZXIKKyNlbHNlCisjZGVmaW5lIE1BUF9TSEFNRDVJbnRVbnJlZ2lzdGVyIFwKKyAgICAgICAgU0hBTUQ1SW50VW5yZWdpc3RlcgorI2VuZGlmCisjaWZkZWYgUk9NX1NIQU1ENVJlc3VsdFJlYWQKKyNkZWZpbmUgTUFQX1NIQU1ENVJlc3VsdFJlYWQgXAorICAgICAgICBST01fU0hBTUQ1UmVzdWx0UmVhZAorI2Vsc2UKKyNkZWZpbmUgTUFQX1NIQU1ENVJlc3VsdFJlYWQgXAorICAgICAgICBTSEFNRDVSZXN1bHRSZWFkCisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIE1hY3JvcyBmb3IgdGhlIENSQyBBUEkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmZGVmIFJPTV9DUkNDb25maWdTZXQKKyNkZWZpbmUgTUFQX0NSQ0NvbmZpZ1NldCBcCisgICAgICAgIFJPTV9DUkNDb25maWdTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9DUkNDb25maWdTZXQgXAorICAgICAgICBDUkNDb25maWdTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9DUkNEYXRhUHJvY2VzcworI2RlZmluZSBNQVBfQ1JDRGF0YVByb2Nlc3MgXAorICAgICAgICBST01fQ1JDRGF0YVByb2Nlc3MKKyNlbHNlCisjZGVmaW5lIE1BUF9DUkNEYXRhUHJvY2VzcyBcCisgICAgICAgIENSQ0RhdGFQcm9jZXNzCisjZW5kaWYKKyNpZmRlZiBST01fQ1JDRGF0YVdyaXRlCisjZGVmaW5lIE1BUF9DUkNEYXRhV3JpdGUgXAorICAgICAgICBST01fQ1JDRGF0YVdyaXRlCisjZWxzZQorI2RlZmluZSBNQVBfQ1JDRGF0YVdyaXRlIFwKKyAgICAgICAgQ1JDRGF0YVdyaXRlCisjZW5kaWYKKyNpZmRlZiBST01fQ1JDUmVzdWx0UmVhZAorI2RlZmluZSBNQVBfQ1JDUmVzdWx0UmVhZCBcCisgICAgICAgIFJPTV9DUkNSZXN1bHRSZWFkCisjZWxzZQorI2RlZmluZSBNQVBfQ1JDUmVzdWx0UmVhZCBcCisgICAgICAgIENSQ1Jlc3VsdFJlYWQKKyNlbmRpZgorI2lmZGVmIFJPTV9DUkNTZWVkU2V0CisjZGVmaW5lIE1BUF9DUkNTZWVkU2V0IFwKKyAgICAgICAgUk9NX0NSQ1NlZWRTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9DUkNTZWVkU2V0IFwKKyAgICAgICAgQ1JDU2VlZFNldAorI2VuZGlmCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYWNyb3MgZm9yIHRoZSBTREhPU1QgQVBJLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpZmRlZiBST01fU0RIb3N0Q21kUmVzZXQKKyNkZWZpbmUgTUFQX1NESG9zdENtZFJlc2V0IFwKKyAgICAgICAgUk9NX1NESG9zdENtZFJlc2V0CisjZWxzZQorI2RlZmluZSBNQVBfU0RIb3N0Q21kUmVzZXQgXAorICAgICAgICBTREhvc3RDbWRSZXNldAorI2VuZGlmCisjaWZkZWYgUk9NX1NESG9zdEluaXQKKyNkZWZpbmUgTUFQX1NESG9zdEluaXQgXAorICAgICAgICBST01fU0RIb3N0SW5pdAorI2Vsc2UKKyNkZWZpbmUgTUFQX1NESG9zdEluaXQgXAorICAgICAgICBTREhvc3RJbml0CisjZW5kaWYKKyNpZmRlZiBST01fU0RIb3N0Q21kU2VuZAorI2RlZmluZSBNQVBfU0RIb3N0Q21kU2VuZCBcCisgICAgICAgIFJPTV9TREhvc3RDbWRTZW5kCisjZWxzZQorI2RlZmluZSBNQVBfU0RIb3N0Q21kU2VuZCBcCisgICAgICAgIFNESG9zdENtZFNlbmQKKyNlbmRpZgorI2lmZGVmIFJPTV9TREhvc3RJbnRSZWdpc3RlcgorI2RlZmluZSBNQVBfU0RIb3N0SW50UmVnaXN0ZXIgXAorICAgICAgICBST01fU0RIb3N0SW50UmVnaXN0ZXIKKyNlbHNlCisjZGVmaW5lIE1BUF9TREhvc3RJbnRSZWdpc3RlciBcCisgICAgICAgIFNESG9zdEludFJlZ2lzdGVyCisjZW5kaWYKKyNpZmRlZiBST01fU0RIb3N0SW50VW5yZWdpc3RlcgorI2RlZmluZSBNQVBfU0RIb3N0SW50VW5yZWdpc3RlciBcCisgICAgICAgIFJPTV9TREhvc3RJbnRVbnJlZ2lzdGVyCisjZWxzZQorI2RlZmluZSBNQVBfU0RIb3N0SW50VW5yZWdpc3RlciBcCisgICAgICAgIFNESG9zdEludFVucmVnaXN0ZXIKKyNlbmRpZgorI2lmZGVmIFJPTV9TREhvc3RJbnRFbmFibGUKKyNkZWZpbmUgTUFQX1NESG9zdEludEVuYWJsZSBcCisgICAgICAgIFJPTV9TREhvc3RJbnRFbmFibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9TREhvc3RJbnRFbmFibGUgXAorICAgICAgICBTREhvc3RJbnRFbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9TREhvc3RJbnREaXNhYmxlCisjZGVmaW5lIE1BUF9TREhvc3RJbnREaXNhYmxlIFwKKyAgICAgICAgUk9NX1NESG9zdEludERpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9TREhvc3RJbnREaXNhYmxlIFwKKyAgICAgICAgU0RIb3N0SW50RGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX1NESG9zdEludFN0YXR1cworI2RlZmluZSBNQVBfU0RIb3N0SW50U3RhdHVzIFwKKyAgICAgICAgUk9NX1NESG9zdEludFN0YXR1cworI2Vsc2UKKyNkZWZpbmUgTUFQX1NESG9zdEludFN0YXR1cyBcCisgICAgICAgIFNESG9zdEludFN0YXR1cworI2VuZGlmCisjaWZkZWYgUk9NX1NESG9zdEludENsZWFyCisjZGVmaW5lIE1BUF9TREhvc3RJbnRDbGVhciBcCisgICAgICAgIFJPTV9TREhvc3RJbnRDbGVhcgorI2Vsc2UKKyNkZWZpbmUgTUFQX1NESG9zdEludENsZWFyIFwKKyAgICAgICAgU0RIb3N0SW50Q2xlYXIKKyNlbmRpZgorI2lmZGVmIFJPTV9TREhvc3RSZXNwR2V0CisjZGVmaW5lIE1BUF9TREhvc3RSZXNwR2V0IFwKKyAgICAgICAgUk9NX1NESG9zdFJlc3BHZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9TREhvc3RSZXNwR2V0IFwKKyAgICAgICAgU0RIb3N0UmVzcEdldAorI2VuZGlmCisjaWZkZWYgUk9NX1NESG9zdEJsb2NrU2l6ZVNldAorI2RlZmluZSBNQVBfU0RIb3N0QmxvY2tTaXplU2V0IFwKKyAgICAgICAgUk9NX1NESG9zdEJsb2NrU2l6ZVNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1NESG9zdEJsb2NrU2l6ZVNldCBcCisgICAgICAgIFNESG9zdEJsb2NrU2l6ZVNldAorI2VuZGlmCisjaWZkZWYgUk9NX1NESG9zdEJsb2NrQ291bnRTZXQKKyNkZWZpbmUgTUFQX1NESG9zdEJsb2NrQ291bnRTZXQgXAorICAgICAgICBST01fU0RIb3N0QmxvY2tDb3VudFNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1NESG9zdEJsb2NrQ291bnRTZXQgXAorICAgICAgICBTREhvc3RCbG9ja0NvdW50U2V0CisjZW5kaWYKKyNpZmRlZiBST01fU0RIb3N0RGF0YU5vbkJsb2NraW5nV3JpdGUKKyNkZWZpbmUgTUFQX1NESG9zdERhdGFOb25CbG9ja2luZ1dyaXRlIFwKKyAgICAgICAgUk9NX1NESG9zdERhdGFOb25CbG9ja2luZ1dyaXRlCisjZWxzZQorI2RlZmluZSBNQVBfU0RIb3N0RGF0YU5vbkJsb2NraW5nV3JpdGUgXAorICAgICAgICBTREhvc3REYXRhTm9uQmxvY2tpbmdXcml0ZQorI2VuZGlmCisjaWZkZWYgUk9NX1NESG9zdERhdGFOb25CbG9ja2luZ1JlYWQKKyNkZWZpbmUgTUFQX1NESG9zdERhdGFOb25CbG9ja2luZ1JlYWQgXAorICAgICAgICBST01fU0RIb3N0RGF0YU5vbkJsb2NraW5nUmVhZAorI2Vsc2UKKyNkZWZpbmUgTUFQX1NESG9zdERhdGFOb25CbG9ja2luZ1JlYWQgXAorICAgICAgICBTREhvc3REYXRhTm9uQmxvY2tpbmdSZWFkCisjZW5kaWYKKyNpZmRlZiBST01fU0RIb3N0RGF0YVdyaXRlCisjZGVmaW5lIE1BUF9TREhvc3REYXRhV3JpdGUgXAorICAgICAgICBST01fU0RIb3N0RGF0YVdyaXRlCisjZWxzZQorI2RlZmluZSBNQVBfU0RIb3N0RGF0YVdyaXRlIFwKKyAgICAgICAgU0RIb3N0RGF0YVdyaXRlCisjZW5kaWYKKyNpZmRlZiBST01fU0RIb3N0RGF0YVJlYWQKKyNkZWZpbmUgTUFQX1NESG9zdERhdGFSZWFkIFwKKyAgICAgICAgUk9NX1NESG9zdERhdGFSZWFkCisjZWxzZQorI2RlZmluZSBNQVBfU0RIb3N0RGF0YVJlYWQgXAorICAgICAgICBTREhvc3REYXRhUmVhZAorI2VuZGlmCisjaWZkZWYgUk9NX1NESG9zdFNldEV4cENsaworI2RlZmluZSBNQVBfU0RIb3N0U2V0RXhwQ2xrIFwKKyAgICAgICAgUk9NX1NESG9zdFNldEV4cENsaworI2Vsc2UKKyNkZWZpbmUgTUFQX1NESG9zdFNldEV4cENsayBcCisgICAgICAgIFNESG9zdFNldEV4cENsaworI2VuZGlmCisjaWZkZWYgUk9NX1NESG9zdENhcmRFcnJvck1hc2tTZXQKKyNkZWZpbmUgTUFQX1NESG9zdENhcmRFcnJvck1hc2tTZXQgXAorICAgICAgICBST01fU0RIb3N0Q2FyZEVycm9yTWFza1NldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1NESG9zdENhcmRFcnJvck1hc2tTZXQgXAorICAgICAgICBTREhvc3RDYXJkRXJyb3JNYXNrU2V0CisjZW5kaWYKKyNpZmRlZiBST01fU0RIb3N0Q2FyZEVycm9yTWFza0dldAorI2RlZmluZSBNQVBfU0RIb3N0Q2FyZEVycm9yTWFza0dldCBcCisgICAgICAgIFJPTV9TREhvc3RDYXJkRXJyb3JNYXNrR2V0CisjZWxzZQorI2RlZmluZSBNQVBfU0RIb3N0Q2FyZEVycm9yTWFza0dldCBcCisgICAgICAgIFNESG9zdENhcmRFcnJvck1hc2tHZXQKKyNlbmRpZgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFjcm9zIGZvciB0aGUgUFJDTSBBUEkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmZGVmIFJPTV9QUkNNTUNVUmVzZXQKKyNkZWZpbmUgTUFQX1BSQ01NQ1VSZXNldCBcCisgICAgICAgIFJPTV9QUkNNTUNVUmVzZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9QUkNNTUNVUmVzZXQgXAorICAgICAgICBQUkNNTUNVUmVzZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9QUkNNU3lzUmVzZXRDYXVzZUdldAorI2RlZmluZSBNQVBfUFJDTVN5c1Jlc2V0Q2F1c2VHZXQgXAorICAgICAgICBST01fUFJDTVN5c1Jlc2V0Q2F1c2VHZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9QUkNNU3lzUmVzZXRDYXVzZUdldCBcCisgICAgICAgIFBSQ01TeXNSZXNldENhdXNlR2V0CisjZW5kaWYKKyNpZmRlZiBST01fUFJDTVBlcmlwaGVyYWxDbGtFbmFibGUKKyNkZWZpbmUgTUFQX1BSQ01QZXJpcGhlcmFsQ2xrRW5hYmxlIFwKKyAgICAgICAgUk9NX1BSQ01QZXJpcGhlcmFsQ2xrRW5hYmxlCisjZWxzZQorI2RlZmluZSBNQVBfUFJDTVBlcmlwaGVyYWxDbGtFbmFibGUgXAorICAgICAgICBQUkNNUGVyaXBoZXJhbENsa0VuYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX1BSQ01QZXJpcGhlcmFsQ2xrRGlzYWJsZQorI2RlZmluZSBNQVBfUFJDTVBlcmlwaGVyYWxDbGtEaXNhYmxlIFwKKyAgICAgICAgUk9NX1BSQ01QZXJpcGhlcmFsQ2xrRGlzYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX1BSQ01QZXJpcGhlcmFsQ2xrRGlzYWJsZSBcCisgICAgICAgIFBSQ01QZXJpcGhlcmFsQ2xrRGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX1BSQ01QZXJpcGhlcmFsUmVzZXQKKyNkZWZpbmUgTUFQX1BSQ01QZXJpcGhlcmFsUmVzZXQgXAorICAgICAgICBST01fUFJDTVBlcmlwaGVyYWxSZXNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1BSQ01QZXJpcGhlcmFsUmVzZXQgXAorICAgICAgICBQUkNNUGVyaXBoZXJhbFJlc2V0CisjZW5kaWYKKyNpZmRlZiBST01fUFJDTVBlcmlwaGVyYWxTdGF0dXNHZXQKKyNkZWZpbmUgTUFQX1BSQ01QZXJpcGhlcmFsU3RhdHVzR2V0IFwKKyAgICAgICAgUk9NX1BSQ01QZXJpcGhlcmFsU3RhdHVzR2V0CisjZWxzZQorI2RlZmluZSBNQVBfUFJDTVBlcmlwaGVyYWxTdGF0dXNHZXQgXAorICAgICAgICBQUkNNUGVyaXBoZXJhbFN0YXR1c0dldAorI2VuZGlmCisjaWZkZWYgUk9NX1BSQ01JMlNDbG9ja0ZyZXFTZXQKKyNkZWZpbmUgTUFQX1BSQ01JMlNDbG9ja0ZyZXFTZXQgXAorICAgICAgICBST01fUFJDTUkyU0Nsb2NrRnJlcVNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1BSQ01JMlNDbG9ja0ZyZXFTZXQgXAorICAgICAgICBQUkNNSTJTQ2xvY2tGcmVxU2V0CisjZW5kaWYKKyNpZmRlZiBST01fUFJDTVBlcmlwaGVyYWxDbG9ja0dldAorI2RlZmluZSBNQVBfUFJDTVBlcmlwaGVyYWxDbG9ja0dldCBcCisgICAgICAgIFJPTV9QUkNNUGVyaXBoZXJhbENsb2NrR2V0CisjZWxzZQorI2RlZmluZSBNQVBfUFJDTVBlcmlwaGVyYWxDbG9ja0dldCBcCisgICAgICAgIFBSQ01QZXJpcGhlcmFsQ2xvY2tHZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9QUkNNU2xlZXBFbnRlcgorI2RlZmluZSBNQVBfUFJDTVNsZWVwRW50ZXIgXAorICAgICAgICBST01fUFJDTVNsZWVwRW50ZXIKKyNlbHNlCisjZGVmaW5lIE1BUF9QUkNNU2xlZXBFbnRlciBcCisgICAgICAgIFBSQ01TbGVlcEVudGVyCisjZW5kaWYKKyNpZmRlZiBST01fUFJDTVNSQU1SZXRlbnRpb25FbmFibGUKKyNkZWZpbmUgTUFQX1BSQ01TUkFNUmV0ZW50aW9uRW5hYmxlIFwKKyAgICAgICAgUk9NX1BSQ01TUkFNUmV0ZW50aW9uRW5hYmxlCisjZWxzZQorI2RlZmluZSBNQVBfUFJDTVNSQU1SZXRlbnRpb25FbmFibGUgXAorICAgICAgICBQUkNNU1JBTVJldGVudGlvbkVuYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX1BSQ01TUkFNUmV0ZW50aW9uRGlzYWJsZQorI2RlZmluZSBNQVBfUFJDTVNSQU1SZXRlbnRpb25EaXNhYmxlIFwKKyAgICAgICAgUk9NX1BSQ01TUkFNUmV0ZW50aW9uRGlzYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX1BSQ01TUkFNUmV0ZW50aW9uRGlzYWJsZSBcCisgICAgICAgIFBSQ01TUkFNUmV0ZW50aW9uRGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX1BSQ01MUERTRW50ZXIKKyNkZWZpbmUgTUFQX1BSQ01MUERTRW50ZXIgXAorICAgICAgICBST01fUFJDTUxQRFNFbnRlcgorI2Vsc2UKKyNkZWZpbmUgTUFQX1BSQ01MUERTRW50ZXIgXAorICAgICAgICBQUkNNTFBEU0VudGVyCisjZW5kaWYKKyNpZmRlZiBST01fUFJDTUxQRFNJbnRlcnZhbFNldAorI2RlZmluZSBNQVBfUFJDTUxQRFNJbnRlcnZhbFNldCBcCisgICAgICAgIFJPTV9QUkNNTFBEU0ludGVydmFsU2V0CisjZWxzZQorI2RlZmluZSBNQVBfUFJDTUxQRFNJbnRlcnZhbFNldCBcCisgICAgICAgIFBSQ01MUERTSW50ZXJ2YWxTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9QUkNNTFBEU1dha2V1cFNvdXJjZUVuYWJsZQorI2RlZmluZSBNQVBfUFJDTUxQRFNXYWtldXBTb3VyY2VFbmFibGUgXAorICAgICAgICBST01fUFJDTUxQRFNXYWtldXBTb3VyY2VFbmFibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9QUkNNTFBEU1dha2V1cFNvdXJjZUVuYWJsZSBcCisgICAgICAgIFBSQ01MUERTV2FrZXVwU291cmNlRW5hYmxlCisjZW5kaWYKKyNpZmRlZiBST01fUFJDTUxQRFNXYWtldXBDYXVzZUdldAorI2RlZmluZSBNQVBfUFJDTUxQRFNXYWtldXBDYXVzZUdldCBcCisgICAgICAgIFJPTV9QUkNNTFBEU1dha2V1cENhdXNlR2V0CisjZWxzZQorI2RlZmluZSBNQVBfUFJDTUxQRFNXYWtldXBDYXVzZUdldCBcCisgICAgICAgIFBSQ01MUERTV2FrZXVwQ2F1c2VHZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9QUkNNTFBEU1dha2VVcEdQSU9TZWxlY3QKKyNkZWZpbmUgTUFQX1BSQ01MUERTV2FrZVVwR1BJT1NlbGVjdCBcCisgICAgICAgIFJPTV9QUkNNTFBEU1dha2VVcEdQSU9TZWxlY3QKKyNlbHNlCisjZGVmaW5lIE1BUF9QUkNNTFBEU1dha2VVcEdQSU9TZWxlY3QgXAorICAgICAgICBQUkNNTFBEU1dha2VVcEdQSU9TZWxlY3QKKyNlbmRpZgorI2lmZGVmIFJPTV9QUkNNTFBEU1dha2V1cFNvdXJjZURpc2FibGUKKyNkZWZpbmUgTUFQX1BSQ01MUERTV2FrZXVwU291cmNlRGlzYWJsZSBcCisgICAgICAgIFJPTV9QUkNNTFBEU1dha2V1cFNvdXJjZURpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9QUkNNTFBEU1dha2V1cFNvdXJjZURpc2FibGUgXAorICAgICAgICBQUkNNTFBEU1dha2V1cFNvdXJjZURpc2FibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9QUkNNSGliZXJuYXRlRW50ZXIKKyNkZWZpbmUgTUFQX1BSQ01IaWJlcm5hdGVFbnRlciBcCisgICAgICAgIFJPTV9QUkNNSGliZXJuYXRlRW50ZXIKKyNlbHNlCisjZGVmaW5lIE1BUF9QUkNNSGliZXJuYXRlRW50ZXIgXAorICAgICAgICBQUkNNSGliZXJuYXRlRW50ZXIKKyNlbmRpZgorI2lmZGVmIFJPTV9QUkNNSGliZXJuYXRlV2FrZXVwU291cmNlRW5hYmxlCisjZGVmaW5lIE1BUF9QUkNNSGliZXJuYXRlV2FrZXVwU291cmNlRW5hYmxlIFwKKyAgICAgICAgUk9NX1BSQ01IaWJlcm5hdGVXYWtldXBTb3VyY2VFbmFibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9QUkNNSGliZXJuYXRlV2FrZXVwU291cmNlRW5hYmxlIFwKKyAgICAgICAgUFJDTUhpYmVybmF0ZVdha2V1cFNvdXJjZUVuYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX1BSQ01IaWJlcm5hdGVXYWtldXBDYXVzZUdldAorI2RlZmluZSBNQVBfUFJDTUhpYmVybmF0ZVdha2V1cENhdXNlR2V0IFwKKyAgICAgICAgUk9NX1BSQ01IaWJlcm5hdGVXYWtldXBDYXVzZUdldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1BSQ01IaWJlcm5hdGVXYWtldXBDYXVzZUdldCBcCisgICAgICAgIFBSQ01IaWJlcm5hdGVXYWtldXBDYXVzZUdldAorI2VuZGlmCisjaWZkZWYgUk9NX1BSQ01IaWJlcm5hdGVXYWtlVXBHUElPU2VsZWN0CisjZGVmaW5lIE1BUF9QUkNNSGliZXJuYXRlV2FrZVVwR1BJT1NlbGVjdCBcCisgICAgICAgIFJPTV9QUkNNSGliZXJuYXRlV2FrZVVwR1BJT1NlbGVjdAorI2Vsc2UKKyNkZWZpbmUgTUFQX1BSQ01IaWJlcm5hdGVXYWtlVXBHUElPU2VsZWN0IFwKKyAgICAgICAgUFJDTUhpYmVybmF0ZVdha2VVcEdQSU9TZWxlY3QKKyNlbmRpZgorI2lmZGVmIFJPTV9QUkNNSGliZXJuYXRlV2FrZXVwU291cmNlRGlzYWJsZQorI2RlZmluZSBNQVBfUFJDTUhpYmVybmF0ZVdha2V1cFNvdXJjZURpc2FibGUgXAorICAgICAgICBST01fUFJDTUhpYmVybmF0ZVdha2V1cFNvdXJjZURpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9QUkNNSGliZXJuYXRlV2FrZXVwU291cmNlRGlzYWJsZSBcCisgICAgICAgIFBSQ01IaWJlcm5hdGVXYWtldXBTb3VyY2VEaXNhYmxlCisjZW5kaWYKKyNpZmRlZiBST01fUFJDTUhpYmVybmF0ZUludGVydmFsU2V0CisjZGVmaW5lIE1BUF9QUkNNSGliZXJuYXRlSW50ZXJ2YWxTZXQgXAorICAgICAgICBST01fUFJDTUhpYmVybmF0ZUludGVydmFsU2V0CisjZWxzZQorI2RlZmluZSBNQVBfUFJDTUhpYmVybmF0ZUludGVydmFsU2V0IFwKKyAgICAgICAgUFJDTUhpYmVybmF0ZUludGVydmFsU2V0CisjZW5kaWYKKyNpZmRlZiBST01fUFJDTVNsb3dDbGtDdHJHZXQKKyNkZWZpbmUgTUFQX1BSQ01TbG93Q2xrQ3RyR2V0IFwKKyAgICAgICAgUk9NX1BSQ01TbG93Q2xrQ3RyR2V0CisjZWxzZQorI2RlZmluZSBNQVBfUFJDTVNsb3dDbGtDdHJHZXQgXAorICAgICAgICBQUkNNU2xvd0Nsa0N0ckdldAorI2VuZGlmCisjaWZkZWYgUk9NX1BSQ01TbG93Q2xrQ3RyTWF0Y2hTZXQKKyNkZWZpbmUgTUFQX1BSQ01TbG93Q2xrQ3RyTWF0Y2hTZXQgXAorICAgICAgICBST01fUFJDTVNsb3dDbGtDdHJNYXRjaFNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1BSQ01TbG93Q2xrQ3RyTWF0Y2hTZXQgXAorICAgICAgICBQUkNNU2xvd0Nsa0N0ck1hdGNoU2V0CisjZW5kaWYKKyNpZmRlZiBST01fUFJDTVNsb3dDbGtDdHJNYXRjaEdldAorI2RlZmluZSBNQVBfUFJDTVNsb3dDbGtDdHJNYXRjaEdldCBcCisgICAgICAgIFJPTV9QUkNNU2xvd0Nsa0N0ck1hdGNoR2V0CisjZWxzZQorI2RlZmluZSBNQVBfUFJDTVNsb3dDbGtDdHJNYXRjaEdldCBcCisgICAgICAgIFBSQ01TbG93Q2xrQ3RyTWF0Y2hHZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9QUkNNT0NSUmVnaXN0ZXJXcml0ZQorI2RlZmluZSBNQVBfUFJDTU9DUlJlZ2lzdGVyV3JpdGUgXAorICAgICAgICBST01fUFJDTU9DUlJlZ2lzdGVyV3JpdGUKKyNlbHNlCisjZGVmaW5lIE1BUF9QUkNNT0NSUmVnaXN0ZXJXcml0ZSBcCisgICAgICAgIFBSQ01PQ1JSZWdpc3RlcldyaXRlCisjZW5kaWYKKyNpZmRlZiBST01fUFJDTU9DUlJlZ2lzdGVyUmVhZAorI2RlZmluZSBNQVBfUFJDTU9DUlJlZ2lzdGVyUmVhZCBcCisgICAgICAgIFJPTV9QUkNNT0NSUmVnaXN0ZXJSZWFkCisjZWxzZQorI2RlZmluZSBNQVBfUFJDTU9DUlJlZ2lzdGVyUmVhZCBcCisgICAgICAgIFBSQ01PQ1JSZWdpc3RlclJlYWQKKyNlbmRpZgorI2lmZGVmIFJPTV9QUkNNSW50UmVnaXN0ZXIKKyNkZWZpbmUgTUFQX1BSQ01JbnRSZWdpc3RlciBcCisgICAgICAgIFJPTV9QUkNNSW50UmVnaXN0ZXIKKyNlbHNlCisjZGVmaW5lIE1BUF9QUkNNSW50UmVnaXN0ZXIgXAorICAgICAgICBQUkNNSW50UmVnaXN0ZXIKKyNlbmRpZgorI2lmZGVmIFJPTV9QUkNNSW50VW5yZWdpc3RlcgorI2RlZmluZSBNQVBfUFJDTUludFVucmVnaXN0ZXIgXAorICAgICAgICBST01fUFJDTUludFVucmVnaXN0ZXIKKyNlbHNlCisjZGVmaW5lIE1BUF9QUkNNSW50VW5yZWdpc3RlciBcCisgICAgICAgIFBSQ01JbnRVbnJlZ2lzdGVyCisjZW5kaWYKKyNpZmRlZiBST01fUFJDTUludEVuYWJsZQorI2RlZmluZSBNQVBfUFJDTUludEVuYWJsZSBcCisgICAgICAgIFJPTV9QUkNNSW50RW5hYmxlCisjZWxzZQorI2RlZmluZSBNQVBfUFJDTUludEVuYWJsZSBcCisgICAgICAgIFBSQ01JbnRFbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9QUkNNSW50RGlzYWJsZQorI2RlZmluZSBNQVBfUFJDTUludERpc2FibGUgXAorICAgICAgICBST01fUFJDTUludERpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9QUkNNSW50RGlzYWJsZSBcCisgICAgICAgIFBSQ01JbnREaXNhYmxlCisjZW5kaWYKKyNpZmRlZiBST01fUFJDTUludFN0YXR1cworI2RlZmluZSBNQVBfUFJDTUludFN0YXR1cyBcCisgICAgICAgIFJPTV9QUkNNSW50U3RhdHVzCisjZWxzZQorI2RlZmluZSBNQVBfUFJDTUludFN0YXR1cyBcCisgICAgICAgIFBSQ01JbnRTdGF0dXMKKyNlbmRpZgorI2lmZGVmIFJPTV9QUkNNUlRDSW5Vc2VTZXQKKyNkZWZpbmUgTUFQX1BSQ01SVENJblVzZVNldCBcCisgICAgICAgIFJPTV9QUkNNUlRDSW5Vc2VTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9QUkNNUlRDSW5Vc2VTZXQgXAorICAgICAgICBQUkNNUlRDSW5Vc2VTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9QUkNNUlRDSW5Vc2VHZXQKKyNkZWZpbmUgTUFQX1BSQ01SVENJblVzZUdldCBcCisgICAgICAgIFJPTV9QUkNNUlRDSW5Vc2VHZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9QUkNNUlRDSW5Vc2VHZXQgXAorICAgICAgICBQUkNNUlRDSW5Vc2VHZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9QUkNNUlRDU2V0CisjZGVmaW5lIE1BUF9QUkNNUlRDU2V0IFwKKyAgICAgICAgUk9NX1BSQ01SVENTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9QUkNNUlRDU2V0IFwKKyAgICAgICAgUFJDTVJUQ1NldAorI2VuZGlmCisjaWZkZWYgUk9NX1BSQ01SVENHZXQKKyNkZWZpbmUgTUFQX1BSQ01SVENHZXQgXAorICAgICAgICBST01fUFJDTVJUQ0dldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1BSQ01SVENHZXQgXAorICAgICAgICBQUkNNUlRDR2V0CisjZW5kaWYKKyNpZmRlZiBST01fUFJDTVJUQ01hdGNoU2V0CisjZGVmaW5lIE1BUF9QUkNNUlRDTWF0Y2hTZXQgXAorICAgICAgICBST01fUFJDTVJUQ01hdGNoU2V0CisjZWxzZQorI2RlZmluZSBNQVBfUFJDTVJUQ01hdGNoU2V0IFwKKyAgICAgICAgUFJDTVJUQ01hdGNoU2V0CisjZW5kaWYKKyNpZmRlZiBST01fUFJDTVJUQ01hdGNoR2V0CisjZGVmaW5lIE1BUF9QUkNNUlRDTWF0Y2hHZXQgXAorICAgICAgICBST01fUFJDTVJUQ01hdGNoR2V0CisjZWxzZQorI2RlZmluZSBNQVBfUFJDTVJUQ01hdGNoR2V0IFwKKyAgICAgICAgUFJDTVJUQ01hdGNoR2V0CisjZW5kaWYKKyNpZmRlZiBST01fUFJDTUxQRFNSZXN0b3JlSW5mb1NldAorI2RlZmluZSBNQVBfUFJDTUxQRFNSZXN0b3JlSW5mb1NldCBcCisgICAgICAgIFJPTV9QUkNNTFBEU1Jlc3RvcmVJbmZvU2V0CisjZWxzZQorI2RlZmluZSBNQVBfUFJDTUxQRFNSZXN0b3JlSW5mb1NldCBcCisgICAgICAgIFBSQ01MUERTUmVzdG9yZUluZm9TZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9QUkNNU2xvd0Nsa0N0ckZhc3RHZXQKKyNkZWZpbmUgTUFQX1BSQ01TbG93Q2xrQ3RyRmFzdEdldCBcCisgICAgICAgIFJPTV9QUkNNU2xvd0Nsa0N0ckZhc3RHZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9QUkNNU2xvd0Nsa0N0ckZhc3RHZXQgXAorICAgICAgICBQUkNNU2xvd0Nsa0N0ckZhc3RHZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9QUkNNQ0MzMjAwTUNVSW5pdAorI2RlZmluZSBNQVBfUFJDTUNDMzIwME1DVUluaXQgXAorICAgICAgICBST01fUFJDTUNDMzIwME1DVUluaXQKKyNlbHNlCisjZGVmaW5lIE1BUF9QUkNNQ0MzMjAwTUNVSW5pdCBcCisgICAgICAgIFBSQ01DQzMyMDBNQ1VJbml0CisjZW5kaWYKKyNpZmRlZiBST01fUFJDTUhJQlJlZ1JlYWQKKyNkZWZpbmUgTUFQX1BSQ01ISUJSZWdSZWFkIFwKKyAgICAgICAgUk9NX1BSQ01ISUJSZWdSZWFkCisjZWxzZQorI2RlZmluZSBNQVBfUFJDTUhJQlJlZ1JlYWQgXAorICAgICAgICBQUkNNSElCUmVnUmVhZAorI2VuZGlmCisjaWZkZWYgUk9NX1BSQ01ISUJSZWdXcml0ZQorI2RlZmluZSBNQVBfUFJDTUhJQlJlZ1dyaXRlIFwKKyAgICAgICAgUk9NX1BSQ01ISUJSZWdXcml0ZQorI2Vsc2UKKyNkZWZpbmUgTUFQX1BSQ01ISUJSZWdXcml0ZSBcCisgICAgICAgIFBSQ01ISUJSZWdXcml0ZQorI2VuZGlmCisjaWZkZWYgUk9NX1BSQ01DYW1lcmFGcmVxU2V0CisjZGVmaW5lIE1BUF9QUkNNQ2FtZXJhRnJlcVNldCBcCisgICAgICAgIFJPTV9QUkNNQ2FtZXJhRnJlcVNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1BSQ01DYW1lcmFGcmVxU2V0IFwKKyAgICAgICAgUFJDTUNhbWVyYUZyZXFTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9QUkNNSU9SZXRlbnRpb25FbmFibGUKKyNkZWZpbmUgTUFQX1BSQ01JT1JldGVudGlvbkVuYWJsZSBcCisgICAgICAgIFJPTV9QUkNNSU9SZXRlbnRpb25FbmFibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9QUkNNSU9SZXRlbnRpb25FbmFibGUgXAorICAgICAgICBQUkNNSU9SZXRlbnRpb25FbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9QUkNNSU9SZXRlbnRpb25EaXNhYmxlCisjZGVmaW5lIE1BUF9QUkNNSU9SZXRlbnRpb25EaXNhYmxlIFwKKyAgICAgICAgUk9NX1BSQ01JT1JldGVudGlvbkRpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9QUkNNSU9SZXRlbnRpb25EaXNhYmxlIFwKKyAgICAgICAgUFJDTUlPUmV0ZW50aW9uRGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX1BSQ01EZXZpY2VUeXBlR2V0CisjZGVmaW5lIE1BUF9QUkNNRGV2aWNlVHlwZUdldCBcCisgICAgICAgIFJPTV9QUkNNRGV2aWNlVHlwZUdldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1BSQ01EZXZpY2VUeXBlR2V0IFwKKyAgICAgICAgUFJDTURldmljZVR5cGVHZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9QUkNNTFBEU0VudGVyS2VlcERlYnVnSWYKKyNkZWZpbmUgTUFQX1BSQ01MUERTRW50ZXJLZWVwRGVidWdJZiBcCisgICAgICAgIFJPTV9QUkNNTFBEU0VudGVyS2VlcERlYnVnSWYKKyNlbHNlCisjZGVmaW5lIE1BUF9QUkNNTFBEU0VudGVyS2VlcERlYnVnSWYgXAorICAgICAgICBQUkNNTFBEU0VudGVyS2VlcERlYnVnSWYKKyNlbmRpZgorI2lmZGVmIFJPTV9QUkNNSGliZXJuYXRlQ3ljbGVUcmlnZ2VyCisjZGVmaW5lIE1BUF9QUkNNSGliZXJuYXRlQ3ljbGVUcmlnZ2VyIFwKKyAgICAgICAgUk9NX1BSQ01IaWJlcm5hdGVDeWNsZVRyaWdnZXIKKyNlbHNlCisjZGVmaW5lIE1BUF9QUkNNSGliZXJuYXRlQ3ljbGVUcmlnZ2VyIFwKKyAgICAgICAgUFJDTUhpYmVybmF0ZUN5Y2xlVHJpZ2dlcgorI2VuZGlmCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYWNyb3MgZm9yIHRoZSBIV1NQSU5MT0NLIEFQSS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWZkZWYgUk9NX0h3U3BpbkxvY2tBY3F1aXJlCisjZGVmaW5lIE1BUF9Id1NwaW5Mb2NrQWNxdWlyZSBcCisgICAgICAgIFJPTV9Id1NwaW5Mb2NrQWNxdWlyZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0h3U3BpbkxvY2tBY3F1aXJlIFwKKyAgICAgICAgSHdTcGluTG9ja0FjcXVpcmUKKyNlbmRpZgorI2lmZGVmIFJPTV9Id1NwaW5Mb2NrVHJ5QWNxdWlyZQorI2RlZmluZSBNQVBfSHdTcGluTG9ja1RyeUFjcXVpcmUgXAorICAgICAgICBST01fSHdTcGluTG9ja1RyeUFjcXVpcmUKKyNlbHNlCisjZGVmaW5lIE1BUF9Id1NwaW5Mb2NrVHJ5QWNxdWlyZSBcCisgICAgICAgIEh3U3BpbkxvY2tUcnlBY3F1aXJlCisjZW5kaWYKKyNpZmRlZiBST01fSHdTcGluTG9ja1JlbGVhc2UKKyNkZWZpbmUgTUFQX0h3U3BpbkxvY2tSZWxlYXNlIFwKKyAgICAgICAgUk9NX0h3U3BpbkxvY2tSZWxlYXNlCisjZWxzZQorI2RlZmluZSBNQVBfSHdTcGluTG9ja1JlbGVhc2UgXAorICAgICAgICBId1NwaW5Mb2NrUmVsZWFzZQorI2VuZGlmCisjaWZkZWYgUk9NX0h3U3BpbkxvY2tUZXN0CisjZGVmaW5lIE1BUF9Id1NwaW5Mb2NrVGVzdCBcCisgICAgICAgIFJPTV9Id1NwaW5Mb2NrVGVzdAorI2Vsc2UKKyNkZWZpbmUgTUFQX0h3U3BpbkxvY2tUZXN0IFwKKyAgICAgICAgSHdTcGluTG9ja1Rlc3QKKyNlbmRpZgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFjcm9zIGZvciB0aGUgQURDIEFQSS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWZkZWYgUk9NX0FEQ0VuYWJsZQorI2RlZmluZSBNQVBfQURDRW5hYmxlIFwKKyAgICAgICAgUk9NX0FEQ0VuYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0FEQ0VuYWJsZSBcCisgICAgICAgIEFEQ0VuYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0FEQ0Rpc2FibGUKKyNkZWZpbmUgTUFQX0FEQ0Rpc2FibGUgXAorICAgICAgICBST01fQURDRGlzYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0FEQ0Rpc2FibGUgXAorICAgICAgICBBRENEaXNhYmxlCisjZW5kaWYKKyNpZmRlZiBST01fQURDQ2hhbm5lbEVuYWJsZQorI2RlZmluZSBNQVBfQURDQ2hhbm5lbEVuYWJsZSBcCisgICAgICAgIFJPTV9BRENDaGFubmVsRW5hYmxlCisjZWxzZQorI2RlZmluZSBNQVBfQURDQ2hhbm5lbEVuYWJsZSBcCisgICAgICAgIEFEQ0NoYW5uZWxFbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9BRENDaGFubmVsRGlzYWJsZQorI2RlZmluZSBNQVBfQURDQ2hhbm5lbERpc2FibGUgXAorICAgICAgICBST01fQURDQ2hhbm5lbERpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9BRENDaGFubmVsRGlzYWJsZSBcCisgICAgICAgIEFEQ0NoYW5uZWxEaXNhYmxlCisjZW5kaWYKKyNpZmRlZiBST01fQURDSW50UmVnaXN0ZXIKKyNkZWZpbmUgTUFQX0FEQ0ludFJlZ2lzdGVyIFwKKyAgICAgICAgUk9NX0FEQ0ludFJlZ2lzdGVyCisjZWxzZQorI2RlZmluZSBNQVBfQURDSW50UmVnaXN0ZXIgXAorICAgICAgICBBRENJbnRSZWdpc3RlcgorI2VuZGlmCisjaWZkZWYgUk9NX0FEQ0ludFVucmVnaXN0ZXIKKyNkZWZpbmUgTUFQX0FEQ0ludFVucmVnaXN0ZXIgXAorICAgICAgICBST01fQURDSW50VW5yZWdpc3RlcgorI2Vsc2UKKyNkZWZpbmUgTUFQX0FEQ0ludFVucmVnaXN0ZXIgXAorICAgICAgICBBRENJbnRVbnJlZ2lzdGVyCisjZW5kaWYKKyNpZmRlZiBST01fQURDSW50RW5hYmxlCisjZGVmaW5lIE1BUF9BRENJbnRFbmFibGUgXAorICAgICAgICBST01fQURDSW50RW5hYmxlCisjZWxzZQorI2RlZmluZSBNQVBfQURDSW50RW5hYmxlIFwKKyAgICAgICAgQURDSW50RW5hYmxlCisjZW5kaWYKKyNpZmRlZiBST01fQURDSW50RGlzYWJsZQorI2RlZmluZSBNQVBfQURDSW50RGlzYWJsZSBcCisgICAgICAgIFJPTV9BRENJbnREaXNhYmxlCisjZWxzZQorI2RlZmluZSBNQVBfQURDSW50RGlzYWJsZSBcCisgICAgICAgIEFEQ0ludERpc2FibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9BRENJbnRTdGF0dXMKKyNkZWZpbmUgTUFQX0FEQ0ludFN0YXR1cyBcCisgICAgICAgIFJPTV9BRENJbnRTdGF0dXMKKyNlbHNlCisjZGVmaW5lIE1BUF9BRENJbnRTdGF0dXMgXAorICAgICAgICBBRENJbnRTdGF0dXMKKyNlbmRpZgorI2lmZGVmIFJPTV9BRENJbnRDbGVhcgorI2RlZmluZSBNQVBfQURDSW50Q2xlYXIgXAorICAgICAgICBST01fQURDSW50Q2xlYXIKKyNlbHNlCisjZGVmaW5lIE1BUF9BRENJbnRDbGVhciBcCisgICAgICAgIEFEQ0ludENsZWFyCisjZW5kaWYKKyNpZmRlZiBST01fQURDRE1BRW5hYmxlCisjZGVmaW5lIE1BUF9BRENETUFFbmFibGUgXAorICAgICAgICBST01fQURDRE1BRW5hYmxlCisjZWxzZQorI2RlZmluZSBNQVBfQURDRE1BRW5hYmxlIFwKKyAgICAgICAgQURDRE1BRW5hYmxlCisjZW5kaWYKKyNpZmRlZiBST01fQURDRE1BRGlzYWJsZQorI2RlZmluZSBNQVBfQURDRE1BRGlzYWJsZSBcCisgICAgICAgIFJPTV9BRENETUFEaXNhYmxlCisjZWxzZQorI2RlZmluZSBNQVBfQURDRE1BRGlzYWJsZSBcCisgICAgICAgIEFEQ0RNQURpc2FibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9BRENUaW1lckNvbmZpZworI2RlZmluZSBNQVBfQURDVGltZXJDb25maWcgXAorICAgICAgICBST01fQURDVGltZXJDb25maWcKKyNlbHNlCisjZGVmaW5lIE1BUF9BRENUaW1lckNvbmZpZyBcCisgICAgICAgIEFEQ1RpbWVyQ29uZmlnCisjZW5kaWYKKyNpZmRlZiBST01fQURDVGltZXJFbmFibGUKKyNkZWZpbmUgTUFQX0FEQ1RpbWVyRW5hYmxlIFwKKyAgICAgICAgUk9NX0FEQ1RpbWVyRW5hYmxlCisjZWxzZQorI2RlZmluZSBNQVBfQURDVGltZXJFbmFibGUgXAorICAgICAgICBBRENUaW1lckVuYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0FEQ1RpbWVyRGlzYWJsZQorI2RlZmluZSBNQVBfQURDVGltZXJEaXNhYmxlIFwKKyAgICAgICAgUk9NX0FEQ1RpbWVyRGlzYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0FEQ1RpbWVyRGlzYWJsZSBcCisgICAgICAgIEFEQ1RpbWVyRGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0FEQ1RpbWVyUmVzZXQKKyNkZWZpbmUgTUFQX0FEQ1RpbWVyUmVzZXQgXAorICAgICAgICBST01fQURDVGltZXJSZXNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX0FEQ1RpbWVyUmVzZXQgXAorICAgICAgICBBRENUaW1lclJlc2V0CisjZW5kaWYKKyNpZmRlZiBST01fQURDVGltZXJWYWx1ZUdldAorI2RlZmluZSBNQVBfQURDVGltZXJWYWx1ZUdldCBcCisgICAgICAgIFJPTV9BRENUaW1lclZhbHVlR2V0CisjZWxzZQorI2RlZmluZSBNQVBfQURDVGltZXJWYWx1ZUdldCBcCisgICAgICAgIEFEQ1RpbWVyVmFsdWVHZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9BRENGSUZPTHZsR2V0CisjZGVmaW5lIE1BUF9BRENGSUZPTHZsR2V0IFwKKyAgICAgICAgUk9NX0FEQ0ZJRk9MdmxHZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9BRENGSUZPTHZsR2V0IFwKKyAgICAgICAgQURDRklGT0x2bEdldAorI2VuZGlmCisjaWZkZWYgUk9NX0FEQ0ZJRk9SZWFkCisjZGVmaW5lIE1BUF9BRENGSUZPUmVhZCBcCisgICAgICAgIFJPTV9BRENGSUZPUmVhZAorI2Vsc2UKKyNkZWZpbmUgTUFQX0FEQ0ZJRk9SZWFkIFwKKyAgICAgICAgQURDRklGT1JlYWQKKyNlbmRpZgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFjcm9zIGZvciB0aGUgQ1BVIEFQSS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWZkZWYgUk9NX0NQVWNwc2lkCisjZGVmaW5lIE1BUF9DUFVjcHNpZCBcCisgICAgICAgIFJPTV9DUFVjcHNpZAorI2Vsc2UKKyNkZWZpbmUgTUFQX0NQVWNwc2lkIFwKKyAgICAgICAgQ1BVY3BzaWQKKyNlbmRpZgorI2lmZGVmIFJPTV9DUFVjcHNpZQorI2RlZmluZSBNQVBfQ1BVY3BzaWUgXAorICAgICAgICBST01fQ1BVY3BzaWUKKyNlbHNlCisjZGVmaW5lIE1BUF9DUFVjcHNpZSBcCisgICAgICAgIENQVWNwc2llCisjZW5kaWYKKyNpZmRlZiBST01fQ1BVcHJpbWFzaworI2RlZmluZSBNQVBfQ1BVcHJpbWFzayBcCisgICAgICAgIFJPTV9DUFVwcmltYXNrCisjZWxzZQorI2RlZmluZSBNQVBfQ1BVcHJpbWFzayBcCisgICAgICAgIENQVXByaW1hc2sKKyNlbmRpZgorI2lmZGVmIFJPTV9DUFV3ZmkKKyNkZWZpbmUgTUFQX0NQVXdmaSBcCisgICAgICAgIFJPTV9DUFV3ZmkKKyNlbHNlCisjZGVmaW5lIE1BUF9DUFV3ZmkgXAorICAgICAgICBDUFV3ZmkKKyNlbmRpZgorI2lmZGVmIFJPTV9DUFViYXNlcHJpR2V0CisjZGVmaW5lIE1BUF9DUFViYXNlcHJpR2V0IFwKKyAgICAgICAgUk9NX0NQVWJhc2VwcmlHZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9DUFViYXNlcHJpR2V0IFwKKyAgICAgICAgQ1BVYmFzZXByaUdldAorI2VuZGlmCisjaWZkZWYgUk9NX0NQVWJhc2VwcmlTZXQKKyNkZWZpbmUgTUFQX0NQVWJhc2VwcmlTZXQgXAorICAgICAgICBST01fQ1BVYmFzZXByaVNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX0NQVWJhc2VwcmlTZXQgXAorICAgICAgICBDUFViYXNlcHJpU2V0CisjZW5kaWYKKworI2VuZGlmIC8vIF9fUk9NX01BUF9IX18KZGlmZiAtLWdpdCBhL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2RyaXZlcmxpYi9yb21fcGF0Y2guaCBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2RyaXZlcmxpYi9yb21fcGF0Y2guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzMzZWM0Ci0tLSAvZGV2L251bGwKKysrIGIvZXh0L2hhbC90aS9jYzMyMjBzZGsvZHJpdmVybGliL3JvbV9wYXRjaC5oCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxNiBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgLSBodHRwOi8vd3d3LnRpLmNvbS8KKyAqCisgKiAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiAgYXJlIG1ldDoKKyAqCisgKiAgICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqICAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAgICBOZWl0aGVyIHRoZSBuYW1lIG9mIFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCBub3IgdGhlIG5hbWVzIG9mCisgKiAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqICBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vICByb21fcGF0Y2guaCAtIE1hY3JvcyB0byBmYWNpbGl0YXRlIHBhdGNoaW5nIGRyaXZlcmxpYiBBUEkncyBpbiB0aGUgUk9NLgorLy8KKy8vCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBMaXN0IG9mIEFQSSdzIGluIHRoZSBST00gdGhhdCBuZWVkIHRvIGJlIHBhdGNoZWQuCisvLyBGb3IgZS5nLiB0byBwYXRjaCBST01fVUFSVENoYXJQdXQgYWRkIHRoZSBsaW5lICN1bmRlZiBST01fVUFSVENoYXJQdXQKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworI2lmbmRlZiBfX1JPTV9QQVRDSF9IX18KKyNkZWZpbmUgX19ST01fUEFUQ0hfSF9fCisKKyNpZiBkZWZpbmVkKFRBUkdFVF9JU19DQzMyMDApIHx8IGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkKKyN1bmRlZiBST01fQURDSW50Q2xlYXIKKyN1bmRlZiBST01fSW50RW5hYmxlCisjdW5kZWYgUk9NX0ludERpc2FibGUKKyN1bmRlZiBST01fSW50UGVuZFNldAorI3VuZGVmIFJPTV9TREhvc3RDYXJkRXJyb3JNYXNrU2V0CisjdW5kZWYgUk9NX1NESG9zdENhcmRFcnJvck1hc2tHZXQKKyN1bmRlZiBST01fVGltZXJDb25maWd1cmUKKyN1bmRlZiBST01fVGltZXJETUFFdmVudFNldAorI3VuZGVmIFJPTV9UaW1lckRNQUV2ZW50R2V0CisjdW5kZWYgUk9NX1NESG9zdERhdGFOb25CbG9ja2luZ1dyaXRlCisjdW5kZWYgUk9NX1NESG9zdERhdGFXcml0ZQorI3VuZGVmIFJPTV9TREhvc3REYXRhUmVhZAorI3VuZGVmIFJPTV9TREhvc3REYXRhTm9uQmxvY2tpbmdSZWFkCisjdW5kZWYgUk9NX1BSQ01TeXNSZXNldENhdXNlR2V0CisjdW5kZWYgUk9NX1BSQ01QZXJpcGhlcmFsQ2xrRW5hYmxlCisjdW5kZWYgUk9NX1BSQ01MUERTV2FrZVVwR1BJT1NlbGVjdAorI3VuZGVmIFJPTV9QUkNNSGliZXJuYXRlV2FrZXVwU291cmNlRW5hYmxlCisjdW5kZWYgUk9NX1BSQ01IaWJlcm5hdGVXYWtldXBTb3VyY2VEaXNhYmxlCisjdW5kZWYgUk9NX1BSQ01IaWJlcm5hdGVXYWtldXBDYXVzZUdldAorI3VuZGVmIFJPTV9QUkNNSGliZXJuYXRlSW50ZXJ2YWxTZXQKKyN1bmRlZiBST01fUFJDTUhpYmVybmF0ZVdha2VVcEdQSU9TZWxlY3QKKyN1bmRlZiBST01fUFJDTUhpYmVybmF0ZUVudGVyCisjdW5kZWYgUk9NX1BSQ01TbG93Q2xrQ3RyR2V0CisjdW5kZWYgUk9NX1BSQ01TbG93Q2xrQ3RyTWF0Y2hTZXQKKyN1bmRlZiBST01fUFJDTVNsb3dDbGtDdHJNYXRjaEdldAorI3VuZGVmIFJPTV9QUkNNT0NSUmVnaXN0ZXJXcml0ZQorI3VuZGVmIFJPTV9QUkNNT0NSUmVnaXN0ZXJSZWFkCisjdW5kZWYgUk9NX1BSQ01JbnRFbmFibGUKKyN1bmRlZiBST01fUFJDTUludERpc2FibGUKKyN1bmRlZiBST01fUFJDTVJUQ0luVXNlU2V0CisjdW5kZWYgUk9NX1BSQ01SVENJblVzZUdldAorI3VuZGVmIFJPTV9QUkNNUlRDU2V0CisjdW5kZWYgUk9NX1BSQ01SVENHZXQKKyN1bmRlZiBST01fUFJDTVJUQ01hdGNoU2V0CisjdW5kZWYgUk9NX1BSQ01SVENNYXRjaEdldAorI3VuZGVmIFJPTV9QUkNNUGVyaXBoZXJhbENsa0Rpc2FibGUKKyN1bmRlZiBST01fUFJDTVBlcmlwaGVyYWxSZXNldAorI3VuZGVmIFJPTV9QUkNNUGVyaXBoZXJhbFN0YXR1c0dldAorI3VuZGVmIFJPTV9TUElDb25maWdTZXRFeHBDbGsKKyN1bmRlZiBST01fQUVTRGF0YVByb2Nlc3MKKyN1bmRlZiBST01fREVTRGF0YVByb2Nlc3MKKyN1bmRlZiBST01fSTJTRW5hYmxlCisjdW5kZWYgUk9NX0kyU0NvbmZpZ1NldEV4cENsaworI3VuZGVmIFJPTV9QaW5Db25maWdTZXQKKyN1bmRlZiBST01fUFJDTUxQRFNFbnRlcgorI3VuZGVmIFJPTV9QUkNNQ0MzMjAwTUNVSW5pdAorI3VuZGVmIFJPTV9TREhvc3RJbnRTdGF0dXMKKyN1bmRlZiBST01fU0RIb3N0QmxvY2tDb3VudFNldAorI3VuZGVmIFJPTV9VQVJUTW9kZW1Db250cm9sU2V0CisjdW5kZWYgUk9NX1VBUlRNb2RlbUNvbnRyb2xDbGVhcgorI3VuZGVmIFJPTV9DYW1lcmFYQ2xrU2V0CisjdW5kZWYgUk9NX1BSQ01NQ1VSZXNldAorI3VuZGVmIFJPTV9QUkNNUGVyaXBoZXJhbENsa0VuYWJsZQorI3VuZGVmIFJPTV9TUElEbWFEaXNhYmxlCisjZW5kaWYKKworI2lmIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyN1bmRlZiBST01fUFJDTURldmljZVR5cGVHZXQKKyN1bmRlZiBST01fU0RIb3N0RGF0YU5vbkJsb2NraW5nUmVhZAorI3VuZGVmIFJPTV9QUkNNSU9SZXRlbnRpb25FbmFibGUKKyN1bmRlZiBST01fUFJDTUlPUmV0ZW50aW9uRGlzYWJsZQorI3VuZGVmIFJPTV9QUkNNQ0MzMjAwTUNVSW5pdAorI2VuZGlmCisKKyNlbmRpZiAvLyBfX1JPTV9QQVRDSF9IX18KZGlmZiAtLWdpdCBhL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2RyaXZlcmxpYi91YXJ0LmggYi9leHQvaGFsL3RpL2NjMzIyMHNkay9kcml2ZXJsaWIvdWFydC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkMWYxNTAKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvaGFsL3RpL2NjMzIyMHNkay9kcml2ZXJsaWIvdWFydC5oCkBAIC0wLDAgKzEsMjM1IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxNiBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgLSBodHRwOi8vd3d3LnRpLmNvbS8KKyAqCisgKiAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiAgYXJlIG1ldDoKKyAqCisgKiAgICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqICAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAgICBOZWl0aGVyIHRoZSBuYW1lIG9mIFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCBub3IgdGhlIG5hbWVzIG9mCisgKiAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqICBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vICB1YXJ0LmgKKy8vCisvLyAgRGVmaW5lcyBhbmQgTWFjcm9zIGZvciB0aGUgVUFSVC4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKyNpZm5kZWYgX19VQVJUX0hfXworI2RlZmluZSBfX1VBUlRfSF9fCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBJZiBidWlsZGluZyB3aXRoIGEgQysrIGNvbXBpbGVyLCBtYWtlIGFsbCBvZiB0aGUgZGVmaW5pdGlvbnMgaW4gdGhpcyBoZWFkZXIKKy8vIGhhdmUgYSBDIGJpbmRpbmcuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCit7CisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFZhbHVlcyB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gVUFSVEludEVuYWJsZSwgVUFSVEludERpc2FibGUsIGFuZCBVQVJUSW50Q2xlYXIKKy8vIGFzIHRoZSB1bEludEZsYWdzIHBhcmFtZXRlciwgYW5kIHJldHVybmVkIGZyb20gVUFSVEludFN0YXR1cy4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIFVBUlRfSU5UX0RNQVRYICAgICAgICAgIDB4MjAwMDAgICAgIC8vIERNQSBUeCBEb25lIGludGVycnVwdCBNYXNrCisjZGVmaW5lIFVBUlRfSU5UX0RNQVJYICAgICAgICAgIDB4MTAwMDAgICAgIC8vIERNQSBSeCBEb25lIGludGVycnVwdCBNYXNrCisjZGVmaW5lIFVBUlRfSU5UX0VPVCAgICAgICAgICAgIDB4ODAwICAgICAgIC8vIEVuZCBvZiB0cmFuc2ZlciBpbnRlcnJ1cHQgTWFzaworI2RlZmluZSBVQVJUX0lOVF9PRSAgICAgICAgICAgICAweDQwMCAgICAgICAvLyBPdmVycnVuIEVycm9yIEludGVycnVwdCBNYXNrCisjZGVmaW5lIFVBUlRfSU5UX0JFICAgICAgICAgICAgIDB4MjAwICAgICAgIC8vIEJyZWFrIEVycm9yIEludGVycnVwdCBNYXNrCisjZGVmaW5lIFVBUlRfSU5UX1BFICAgICAgICAgICAgIDB4MTAwICAgICAgIC8vIFBhcml0eSBFcnJvciBJbnRlcnJ1cHQgTWFzaworI2RlZmluZSBVQVJUX0lOVF9GRSAgICAgICAgICAgICAweDA4MCAgICAgICAvLyBGcmFtaW5nIEVycm9yIEludGVycnVwdCBNYXNrCisjZGVmaW5lIFVBUlRfSU5UX1JUICAgICAgICAgICAgIDB4MDQwICAgICAgIC8vIFJlY2VpdmUgVGltZW91dCBJbnRlcnJ1cHQgTWFzaworI2RlZmluZSBVQVJUX0lOVF9UWCAgICAgICAgICAgICAweDAyMCAgICAgICAvLyBUcmFuc21pdCBJbnRlcnJ1cHQgTWFzaworI2RlZmluZSBVQVJUX0lOVF9SWCAgICAgICAgICAgICAweDAxMCAgICAgICAvLyBSZWNlaXZlIEludGVycnVwdCBNYXNrCisjZGVmaW5lIFVBUlRfSU5UX0NUUyAgICAgICAgICAgIDB4MDAyICAgICAgIC8vIENUUyBNb2RlbSBJbnRlcnJ1cHQgTWFzaworCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBWYWx1ZXMgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIFVBUlRDb25maWdTZXRFeHBDbGsgYXMgdGhlIHVsQ29uZmlnIHBhcmFtZXRlcgorLy8gYW5kIHJldHVybmVkIGJ5IFVBUlRDb25maWdHZXRFeHBDbGsgaW4gdGhlIHB1bENvbmZpZyBwYXJhbWV0ZXIuCisvLyBBZGRpdGlvbmFsbHksIHRoZSBVQVJUX0NPTkZJR19QQVJfKiBzdWJzZXQgY2FuIGJlIHBhc3NlZCB0bworLy8gVUFSVFBhcml0eU1vZGVTZXQgYXMgdGhlIHVsUGFyaXR5IHBhcmFtZXRlciwgYW5kIGFyZSByZXR1cm5lZCBieQorLy8gVUFSVFBhcml0eU1vZGVHZXQuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBVQVJUX0NPTkZJR19XTEVOX01BU0sgICAweDAwMDAwMDYwICAvLyBNYXNrIGZvciBleHRyYWN0aW5nIHdvcmQgbGVuZ3RoCisjZGVmaW5lIFVBUlRfQ09ORklHX1dMRU5fOCAgICAgIDB4MDAwMDAwNjAgIC8vIDggYml0IGRhdGEKKyNkZWZpbmUgVUFSVF9DT05GSUdfV0xFTl83ICAgICAgMHgwMDAwMDA0MCAgLy8gNyBiaXQgZGF0YQorI2RlZmluZSBVQVJUX0NPTkZJR19XTEVOXzYgICAgICAweDAwMDAwMDIwICAvLyA2IGJpdCBkYXRhCisjZGVmaW5lIFVBUlRfQ09ORklHX1dMRU5fNSAgICAgIDB4MDAwMDAwMDAgIC8vIDUgYml0IGRhdGEKKyNkZWZpbmUgVUFSVF9DT05GSUdfU1RPUF9NQVNLICAgMHgwMDAwMDAwOCAgLy8gTWFzayBmb3IgZXh0cmFjdGluZyBzdG9wIGJpdHMKKyNkZWZpbmUgVUFSVF9DT05GSUdfU1RPUF9PTkUgICAgMHgwMDAwMDAwMCAgLy8gT25lIHN0b3AgYml0CisjZGVmaW5lIFVBUlRfQ09ORklHX1NUT1BfVFdPICAgIDB4MDAwMDAwMDggIC8vIFR3byBzdG9wIGJpdHMKKyNkZWZpbmUgVUFSVF9DT05GSUdfUEFSX01BU0sgICAgMHgwMDAwMDA4NiAgLy8gTWFzayBmb3IgZXh0cmFjdGluZyBwYXJpdHkKKyNkZWZpbmUgVUFSVF9DT05GSUdfUEFSX05PTkUgICAgMHgwMDAwMDAwMCAgLy8gTm8gcGFyaXR5CisjZGVmaW5lIFVBUlRfQ09ORklHX1BBUl9FVkVOICAgIDB4MDAwMDAwMDYgIC8vIEV2ZW4gcGFyaXR5CisjZGVmaW5lIFVBUlRfQ09ORklHX1BBUl9PREQgICAgIDB4MDAwMDAwMDIgIC8vIE9kZCBwYXJpdHkKKyNkZWZpbmUgVUFSVF9DT05GSUdfUEFSX09ORSAgICAgMHgwMDAwMDA4MiAgLy8gUGFyaXR5IGJpdCBpcyBvbmUKKyNkZWZpbmUgVUFSVF9DT05GSUdfUEFSX1pFUk8gICAgMHgwMDAwMDA4NiAgLy8gUGFyaXR5IGJpdCBpcyB6ZXJvCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBWYWx1ZXMgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIFVBUlRGSUZPTGV2ZWxTZXQgYXMgdGhlIHVsVHhMZXZlbCBwYXJhbWV0ZXIgYW5kCisvLyByZXR1cm5lZCBieSBVQVJURklGT0xldmVsR2V0IGluIHRoZSBwdWxUeExldmVsLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgVUFSVF9GSUZPX1RYMV84ICAgICAgICAgMHgwMDAwMDAwMCAgLy8gVHJhbnNtaXQgaW50ZXJydXB0IGF0IDEvOCBGdWxsCisjZGVmaW5lIFVBUlRfRklGT19UWDJfOCAgICAgICAgIDB4MDAwMDAwMDEgIC8vIFRyYW5zbWl0IGludGVycnVwdCBhdCAxLzQgRnVsbAorI2RlZmluZSBVQVJUX0ZJRk9fVFg0XzggICAgICAgICAweDAwMDAwMDAyICAvLyBUcmFuc21pdCBpbnRlcnJ1cHQgYXQgMS8yIEZ1bGwKKyNkZWZpbmUgVUFSVF9GSUZPX1RYNl84ICAgICAgICAgMHgwMDAwMDAwMyAgLy8gVHJhbnNtaXQgaW50ZXJydXB0IGF0IDMvNCBGdWxsCisjZGVmaW5lIFVBUlRfRklGT19UWDdfOCAgICAgICAgIDB4MDAwMDAwMDQgIC8vIFRyYW5zbWl0IGludGVycnVwdCBhdCA3LzggRnVsbAorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVmFsdWVzIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBVQVJURklGT0xldmVsU2V0IGFzIHRoZSB1bFJ4TGV2ZWwgcGFyYW1ldGVyIGFuZAorLy8gcmV0dXJuZWQgYnkgVUFSVEZJRk9MZXZlbEdldCBpbiB0aGUgcHVsUnhMZXZlbC4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIFVBUlRfRklGT19SWDFfOCAgICAgICAgIDB4MDAwMDAwMDAgIC8vIFJlY2VpdmUgaW50ZXJydXB0IGF0IDEvOCBGdWxsCisjZGVmaW5lIFVBUlRfRklGT19SWDJfOCAgICAgICAgIDB4MDAwMDAwMDggIC8vIFJlY2VpdmUgaW50ZXJydXB0IGF0IDEvNCBGdWxsCisjZGVmaW5lIFVBUlRfRklGT19SWDRfOCAgICAgICAgIDB4MDAwMDAwMTAgIC8vIFJlY2VpdmUgaW50ZXJydXB0IGF0IDEvMiBGdWxsCisjZGVmaW5lIFVBUlRfRklGT19SWDZfOCAgICAgICAgIDB4MDAwMDAwMTggIC8vIFJlY2VpdmUgaW50ZXJydXB0IGF0IDMvNCBGdWxsCisjZGVmaW5lIFVBUlRfRklGT19SWDdfOCAgICAgICAgIDB4MDAwMDAwMjAgIC8vIFJlY2VpdmUgaW50ZXJydXB0IGF0IDcvOCBGdWxsCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBWYWx1ZXMgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIFVBUlRETUFFbmFibGUoKSBhbmQgVUFSVERNQURpc2FibGUoKS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIFVBUlRfRE1BX0VSUl9SWFNUT1AgICAgIDB4MDAwMDAwMDQgIC8vIFN0b3AgRE1BIHJlY2VpdmUgaWYgVUFSVCBlcnJvcgorI2RlZmluZSBVQVJUX0RNQV9UWCAgICAgICAgICAgICAweDAwMDAwMDAyICAvLyBFbmFibGUgRE1BIGZvciB0cmFuc21pdAorI2RlZmluZSBVQVJUX0RNQV9SWCAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyBFbmFibGUgRE1BIGZvciByZWNlaXZlCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBWYWx1ZXMgcmV0dXJuZWQgZnJvbSBVQVJUUnhFcnJvckdldCgpLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgVUFSVF9SWEVSUk9SX09WRVJSVU4gICAgMHgwMDAwMDAwOAorI2RlZmluZSBVQVJUX1JYRVJST1JfQlJFQUsgICAgICAweDAwMDAwMDA0CisjZGVmaW5lIFVBUlRfUlhFUlJPUl9QQVJJVFkgICAgIDB4MDAwMDAwMDIKKyNkZWZpbmUgVUFSVF9SWEVSUk9SX0ZSQU1JTkcgICAgMHgwMDAwMDAwMQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVmFsdWVzIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBVQVJUTW9kZW1Db250cm9sU2V0KClhbmQgVUFSVE1vZGVtQ29udHJvbENsZWFyKCkKKy8vIG9yIHJldHVybmVkIGZyb20gVUFSVE1vZGVtQ29udHJvbEdldCgpLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgVUFSVF9PVVRQVVRfUlRTICAgICAgICAgMHgwMDAwMDgwMAorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVmFsdWVzIHRoYXQgY2FuIGJlIHJldHVybmVkIGZyb20gVUFSVE1vZGVtU3RhdHVzR2V0KCkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBVQVJUX0lOUFVUX0NUUyAgICAgICAgICAweDAwMDAwMDAxCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBWYWx1ZXMgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIFVBUlRGbG93Q29udHJvbCgpIG9yIHJldHVybmVkIGZyb20KKy8vIFVBUlRGbG93Q29udHJvbEdldCgpLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgVUFSVF9GTE9XQ09OVFJPTF9UWCAgICAgMHgwMDAwODAwMAorI2RlZmluZSBVQVJUX0ZMT1dDT05UUk9MX1JYICAgICAweDAwMDA0MDAwCisjZGVmaW5lIFVBUlRfRkxPV0NPTlRST0xfTk9ORSAgIDB4MDAwMDAwMDAKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFZhbHVlcyB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gVUFSVFR4SW50TW9kZVNldCgpIG9yIHJldHVybmVkIGZyb20KKy8vIFVBUlRUeEludE1vZGVHZXQoKS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIFVBUlRfVFhJTlRfTU9ERV9GSUZPICAgIDB4MDAwMDAwMDAKKyNkZWZpbmUgVUFSVF9UWElOVF9NT0RFX0VPVCAgICAgMHgwMDAwMDAxMAorCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBBUEkgRnVuY3Rpb24gcHJvdG90eXBlcworLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK2V4dGVybiB2b2lkIFVBUlRQYXJpdHlNb2RlU2V0KHVuc2lnbmVkIGxvbmcgdWxCYXNlLCB1bnNpZ25lZCBsb25nIHVsUGFyaXR5KTsKK2V4dGVybiB1bnNpZ25lZCBsb25nIFVBUlRQYXJpdHlNb2RlR2V0KHVuc2lnbmVkIGxvbmcgdWxCYXNlKTsKK2V4dGVybiB2b2lkIFVBUlRGSUZPTGV2ZWxTZXQodW5zaWduZWQgbG9uZyB1bEJhc2UsIHVuc2lnbmVkIGxvbmcgdWxUeExldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsUnhMZXZlbCk7CitleHRlcm4gdm9pZCBVQVJURklGT0xldmVsR2V0KHVuc2lnbmVkIGxvbmcgdWxCYXNlLCB1bnNpZ25lZCBsb25nICpwdWxUeExldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICpwdWxSeExldmVsKTsKK2V4dGVybiB2b2lkIFVBUlRDb25maWdTZXRFeHBDbGsodW5zaWduZWQgbG9uZyB1bEJhc2UsIHVuc2lnbmVkIGxvbmcgdWxVQVJUQ2xrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsQmF1ZCwgdW5zaWduZWQgbG9uZyB1bENvbmZpZyk7CitleHRlcm4gdm9pZCBVQVJUQ29uZmlnR2V0RXhwQ2xrKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCB1bnNpZ25lZCBsb25nIHVsVUFSVENsaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqcHVsQmF1ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqcHVsQ29uZmlnKTsKK2V4dGVybiB2b2lkIFVBUlRFbmFibGUodW5zaWduZWQgbG9uZyB1bEJhc2UpOworZXh0ZXJuIHZvaWQgVUFSVERpc2FibGUodW5zaWduZWQgbG9uZyB1bEJhc2UpOworZXh0ZXJuIHZvaWQgVUFSVEZJRk9FbmFibGUodW5zaWduZWQgbG9uZyB1bEJhc2UpOworZXh0ZXJuIHZvaWQgVUFSVEZJRk9EaXNhYmxlKHVuc2lnbmVkIGxvbmcgdWxCYXNlKTsKK2V4dGVybiB0Qm9vbGVhbiBVQVJUQ2hhcnNBdmFpbCh1bnNpZ25lZCBsb25nIHVsQmFzZSk7CitleHRlcm4gdEJvb2xlYW4gVUFSVFNwYWNlQXZhaWwodW5zaWduZWQgbG9uZyB1bEJhc2UpOworZXh0ZXJuIGxvbmcgVUFSVENoYXJHZXROb25CbG9ja2luZyh1bnNpZ25lZCBsb25nIHVsQmFzZSk7CitleHRlcm4gbG9uZyBVQVJUQ2hhckdldCh1bnNpZ25lZCBsb25nIHVsQmFzZSk7CitleHRlcm4gdEJvb2xlYW4gVUFSVENoYXJQdXROb25CbG9ja2luZyh1bnNpZ25lZCBsb25nIHVsQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgdWNEYXRhKTsKK2V4dGVybiB2b2lkIFVBUlRDaGFyUHV0KHVuc2lnbmVkIGxvbmcgdWxCYXNlLCB1bnNpZ25lZCBjaGFyIHVjRGF0YSk7CitleHRlcm4gdm9pZCBVQVJUQnJlYWtDdGwodW5zaWduZWQgbG9uZyB1bEJhc2UsIHRCb29sZWFuIGJCcmVha1N0YXRlKTsKK2V4dGVybiB0Qm9vbGVhbiBVQVJUQnVzeSh1bnNpZ25lZCBsb25nIHVsQmFzZSk7CitleHRlcm4gdm9pZCBVQVJUSW50UmVnaXN0ZXIodW5zaWduZWQgbG9uZyB1bEJhc2UsIHZvaWQoKnBmbkhhbmRsZXIpKHZvaWQpKTsKK2V4dGVybiB2b2lkIFVBUlRJbnRVbnJlZ2lzdGVyKHVuc2lnbmVkIGxvbmcgdWxCYXNlKTsKK2V4dGVybiB2b2lkIFVBUlRJbnRFbmFibGUodW5zaWduZWQgbG9uZyB1bEJhc2UsIHVuc2lnbmVkIGxvbmcgdWxJbnRGbGFncyk7CitleHRlcm4gdm9pZCBVQVJUSW50RGlzYWJsZSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgdW5zaWduZWQgbG9uZyB1bEludEZsYWdzKTsKK2V4dGVybiB1bnNpZ25lZCBsb25nIFVBUlRJbnRTdGF0dXModW5zaWduZWQgbG9uZyB1bEJhc2UsIHRCb29sZWFuIGJNYXNrZWQpOworZXh0ZXJuIHZvaWQgVUFSVEludENsZWFyKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCB1bnNpZ25lZCBsb25nIHVsSW50RmxhZ3MpOworZXh0ZXJuIHZvaWQgVUFSVERNQUVuYWJsZSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgdW5zaWduZWQgbG9uZyB1bERNQUZsYWdzKTsKK2V4dGVybiB2b2lkIFVBUlRETUFEaXNhYmxlKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCB1bnNpZ25lZCBsb25nIHVsRE1BRmxhZ3MpOworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgVUFSVFJ4RXJyb3JHZXQodW5zaWduZWQgbG9uZyB1bEJhc2UpOworZXh0ZXJuIHZvaWQgVUFSVFJ4RXJyb3JDbGVhcih1bnNpZ25lZCBsb25nIHVsQmFzZSk7CitleHRlcm4gdm9pZCBVQVJUTW9kZW1Db250cm9sU2V0KHVuc2lnbmVkIGxvbmcgdWxCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsQ29udHJvbCk7CitleHRlcm4gdm9pZCBVQVJUTW9kZW1Db250cm9sQ2xlYXIodW5zaWduZWQgbG9uZyB1bEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bENvbnRyb2wpOworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgVUFSVE1vZGVtQ29udHJvbEdldCh1bnNpZ25lZCBsb25nIHVsQmFzZSk7CitleHRlcm4gdW5zaWduZWQgbG9uZyBVQVJUTW9kZW1TdGF0dXNHZXQodW5zaWduZWQgbG9uZyB1bEJhc2UpOworZXh0ZXJuIHZvaWQgVUFSVEZsb3dDb250cm9sU2V0KHVuc2lnbmVkIGxvbmcgdWxCYXNlLCB1bnNpZ25lZCBsb25nIHVsTW9kZSk7CitleHRlcm4gdW5zaWduZWQgbG9uZyBVQVJURmxvd0NvbnRyb2xHZXQodW5zaWduZWQgbG9uZyB1bEJhc2UpOworZXh0ZXJuIHZvaWQgVUFSVFR4SW50TW9kZVNldCh1bnNpZ25lZCBsb25nIHVsQmFzZSwgdW5zaWduZWQgbG9uZyB1bE1vZGUpOworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgVUFSVFR4SW50TW9kZUdldCh1bnNpZ25lZCBsb25nIHVsQmFzZSk7CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYXJrIHRoZSBlbmQgb2YgdGhlIEMgYmluZGluZ3Mgc2VjdGlvbiBmb3IgQysrIGNvbXBpbGVycy4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gIF9fVUFSVF9IX18KZGlmZiAtLWdpdCBhL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2RyaXZlcmxpYi91dGlscy5jIGIvZXh0L2hhbC90aS9jYzMyMjBzZGsvZHJpdmVybGliL3V0aWxzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjk3Y2VhNgotLS0gL2Rldi9udWxsCisrKyBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2RyaXZlcmxpYi91dGlscy5jCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxNiBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgLSBodHRwOi8vd3d3LnRpLmNvbS8KKyAqCisgKiAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiAgYXJlIG1ldDoKKyAqCisgKiAgICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqICAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAgICBOZWl0aGVyIHRoZSBuYW1lIG9mIFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCBub3IgdGhlIG5hbWVzIG9mCisgKiAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqICBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vICB1dGlscy5jCisvLworLy8gIFV0aWxpdHkgQVBJcworLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vISBcYWRkdG9ncm91cCBVdGlsc19hcGkKKy8vISBAeworLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpbmNsdWRlICJ1dGlscy5oIgorCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyEgUHJvdmlkZXMgYSBzbWFsbCBkZWxheS4KKy8vIQorLy8hIFxwYXJhbSB1bENvdW50IGlzIHRoZSBudW1iZXIgb2YgZGVsYXkgbG9vcCBpdGVyYXRpb25zIHRvIHBlcmZvcm0uCisvLyEKKy8vISBUaGlzIGZ1bmN0aW9uIHByb3ZpZGVzIGEgbWVhbnMgb2YgZ2VuZXJhdGluZyBhIGNvbnN0YW50IGxlbmd0aCBkZWxheS4gIEl0CisvLyEgaXMgd3JpdHRlbiBpbiBhc3NlbWJseSB0byBrZWVwIHRoZSBkZWxheSBjb25zaXN0ZW50IGFjcm9zcyB0b29sIGNoYWlucywKKy8vISBhdm9pZGluZyB0aGUgbmVlZCB0byB0dW5lIHRoZSBkZWxheSBiYXNlZCBvbiB0aGUgdG9vbCBjaGFpbiBpbiB1c2UuCisvLyEKKy8vISBUaGUgbG9vcCB0YWtlcyAzIGN5Y2xlcy9sb29wLgorLy8hCisvLyEgXHJldHVybiBOb25lLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpZiBkZWZpbmVkKGV3YXJtKSB8fCBkZWZpbmVkKERPWFlHRU4pCit2b2lkCitVdGlsc0RlbGF5KHVuc2lnbmVkIGxvbmcgdWxDb3VudCkKK3sKKyAgICBfX2FzbSgiICAgIHN1YnMgICAgcjAsICMxXG4iCisgICAgICAgICAgIiAgICBibmUubiAgIFV0aWxzRGVsYXlcbiIpOworfQorI2VuZGlmCisKKyNpZiBkZWZpbmVkKGdjYykKK3ZvaWQgX19hdHRyaWJ1dGVfXygobmFrZWQpKQorVXRpbHNEZWxheSh1bnNpZ25lZCBsb25nIHVsQ291bnQpCit7CisgICAgX19hc20oIiAgICBzdWJzICAgIHIwLCAjMVxuIgorICAgICAgICAgICIgICAgYm5lICAgICBVdGlsc0RlbGF5XG4iCisgICAgICAgICAgIiAgICBieCAgICAgIGxyIik7Cit9CisjZW5kaWYKKworLy8KKy8vIEZvciBDQ1MgaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24gaW4gcHVyZSBhc3NlbWJseS4gIFRoaXMgcHJldmVudHMgdGhlIFRJCisvLyBjb21waWxlciBmcm9tIGRvaW5nIGZ1bm55IHRoaW5ncyB3aXRoIHRoZSBvcHRpbWl6ZXIuCisvLworI2lmIGRlZmluZWQoY2NzKQorICAgIF9fYXNtKCIgICAgLnNlY3QgXCIudGV4dDpVdGlsc0RlbGF5XCJcbiIKKyAgICAgICAgICAiICAgIC5jbGlua1xuIgorICAgICAgICAgICIgICAgLnRodW1iZnVuYyBVdGlsc0RlbGF5XG4iCisgICAgICAgICAgIiAgICAudGh1bWJcbiIKKyAgICAgICAgICAiICAgIC5nbG9iYWwgVXRpbHNEZWxheVxuIgorICAgICAgICAgICJVdGlsc0RlbGF5OlxuIgorICAgICAgICAgICIgICAgc3VicyByMCwgIzFcbiIKKyAgICAgICAgICAiICAgIGJuZS5uIFV0aWxzRGVsYXlcbiIKKyAgICAgICAgICAiICAgIGJ4IGxyXG4iKTsKKyNlbmRpZgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gQ2xvc2UgdGhlIERveHlnZW4gZ3JvdXAuCisvLyEgQH0KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCmRpZmYgLS1naXQgYS9leHQvaGFsL3RpL2NjMzIyMHNkay9kcml2ZXJsaWIvdXRpbHMuaCBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2RyaXZlcmxpYi91dGlscy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlN2UzOWIKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvaGFsL3RpL2NjMzIyMHNkay9kcml2ZXJsaWIvdXRpbHMuaApAQCAtMCwwICsxLDcyIEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxNiBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgLSBodHRwOi8vd3d3LnRpLmNvbS8KKyAqCisgKiAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiAgYXJlIG1ldDoKKyAqCisgKiAgICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqICAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAgICBOZWl0aGVyIHRoZSBuYW1lIG9mIFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCBub3IgdGhlIG5hbWVzIG9mCisgKiAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqICBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vICB1dGlscy5oCisvLworLy8gIFByb3RvdHlwZXMgYW5kIG1hY3JvcyBmb3IgdXRpbGl0eSBBUElzCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCisjaWZuZGVmIF9fVVRJTFNfSF9fCisjZGVmaW5lIF9fVVRJTFNfSF9fCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBJZiBidWlsZGluZyB3aXRoIGEgQysrIGNvbXBpbGVyLCBtYWtlIGFsbCBvZiB0aGUgZGVmaW5pdGlvbnMgaW4gdGhpcyBoZWFkZXIKKy8vIGhhdmUgYSBDIGJpbmRpbmcuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCit7CisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIEFQSSBGdW5jdGlvbiBwcm90b3R5cGVzCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorZXh0ZXJuIHZvaWQgVXRpbHNEZWxheSh1bnNpZ25lZCBsb25nIHVsQ291bnQpOworCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYXJrIHRoZSBlbmQgb2YgdGhlIEMgYmluZGluZ3Mgc2VjdGlvbiBmb3IgQysrIGNvbXBpbGVycy4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy9fX1VUSUxTX0hfXwpkaWZmIC0tZ2l0IGEvZXh0L2hhbC90aS9jYzMyMjBzZGsvaW5jL2h3X2FwcHNfcmNtLmggYi9leHQvaGFsL3RpL2NjMzIyMHNkay9pbmMvaHdfYXBwc19yY20uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmM2NjZmCi0tLSAvZGV2L251bGwKKysrIGIvZXh0L2hhbC90aS9jYzMyMjBzZGsvaW5jL2h3X2FwcHNfcmNtLmgKQEAgLTAsMCArMSwxNTA0IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxNiBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgLSBodHRwOi8vd3d3LnRpLmNvbS8KKyAqCisgKiAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiAgYXJlIG1ldDoKKyAqCisgKiAgICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqICAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAgICBOZWl0aGVyIHRoZSBuYW1lIG9mIFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCBub3IgdGhlIG5hbWVzIG9mCisgKiAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqICBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaWZuZGVmIF9fSFdfQVBQU19SQ01fSF9fCisjZGVmaW5lIF9fSFdfQVBQU19SQ01fSF9fCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgQVBQU19SQ00gcmVnaXN0ZXIgb2Zmc2V0cy4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX09fQ0FNRVJBX0NMS19HRU4gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAwCisKKyNkZWZpbmUgQVBQU19SQ01fT19DQU1FUkFfQ0xLX0dBVElORyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDQKKworI2RlZmluZSBBUFBTX1JDTV9PX0NBTUVSQV9TT0ZUX1JFU0VUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwOAorCisjZGVmaW5lIEFQUFNfUkNNX09fTUNBU1BfQ0xLX0dBVElORyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTQKKworI2RlZmluZSBBUFBTX1JDTV9PX01DQVNQX1NPRlRfUkVTRVQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDE4CisKKyNkZWZpbmUgQVBQU19SQ01fT19NTUNIU19DTEtfR0VOIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAyMAorCisjZGVmaW5lIEFQUFNfUkNNX09fTU1DSFNfQ0xLX0dBVElORyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMjQKKworI2RlZmluZSBBUFBTX1JDTV9PX01NQ0hTX1NPRlRfUkVTRVQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDI4CisKKyNkZWZpbmUgQVBQU19SQ01fT19NQ1NQSV9BMV9DTEtfR0VOIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAyQworCisjZGVmaW5lIEFQUFNfUkNNX09fTUNTUElfQTFfQ0xLX0dBVElORyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMzAKKworI2RlZmluZSBBUFBTX1JDTV9PX01DU1BJX0ExX1NPRlRfUkVTRVQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDM0CisKKyNkZWZpbmUgQVBQU19SQ01fT19NQ1NQSV9BMl9DTEtfR0VOIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAzOAorCisjZGVmaW5lIEFQUFNfUkNNX09fTUNTUElfQTJfQ0xLX0dBVElORyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNDAKKworI2RlZmluZSBBUFBTX1JDTV9PX01DU1BJX0EyX1NPRlRfUkVTRVQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDQ0CisKKyNkZWZpbmUgQVBQU19SQ01fT19VRE1BX0FfQ0xLX0dBVElORyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNDgKKworI2RlZmluZSBBUFBTX1JDTV9PX1VETUFfQV9TT0ZUX1JFU0VUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA0QworCisjZGVmaW5lIEFQUFNfUkNNX09fR1BJT19BX0NMS19HQVRJTkcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDUwCisKKyNkZWZpbmUgQVBQU19SQ01fT19HUElPX0FfU09GVF9SRVNFVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNTQKKworI2RlZmluZSBBUFBTX1JDTV9PX0dQSU9fQl9DTEtfR0FUSU5HIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA1OAorCisjZGVmaW5lIEFQUFNfUkNNX09fR1BJT19CX1NPRlRfUkVTRVQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDVDCisKKyNkZWZpbmUgQVBQU19SQ01fT19HUElPX0NfQ0xLX0dBVElORyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNjAKKworI2RlZmluZSBBUFBTX1JDTV9PX0dQSU9fQ19TT0ZUX1JFU0VUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA2NAorCisjZGVmaW5lIEFQUFNfUkNNX09fR1BJT19EX0NMS19HQVRJTkcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDY4CisKKyNkZWZpbmUgQVBQU19SQ01fT19HUElPX0RfU09GVF9SRVNFVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNkMKKworI2RlZmluZSBBUFBTX1JDTV9PX0dQSU9fRV9DTEtfR0FUSU5HIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA3MAorCisjZGVmaW5lIEFQUFNfUkNNX09fR1BJT19FX1NPRlRfUkVTRVQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDc0CisKKyNkZWZpbmUgQVBQU19SQ01fT19XRE9HX0FfQ0xLX0dBVElORyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNzgKKworI2RlZmluZSBBUFBTX1JDTV9PX1dET0dfQV9TT0ZUX1JFU0VUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA3QworCisjZGVmaW5lIEFQUFNfUkNNX09fVUFSVF9BMF9DTEtfR0FUSU5HIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA4MAorCisjZGVmaW5lIEFQUFNfUkNNX09fVUFSVF9BMF9TT0ZUX1JFU0VUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA4NAorCisjZGVmaW5lIEFQUFNfUkNNX09fVUFSVF9BMV9DTEtfR0FUSU5HIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA4OAorCisjZGVmaW5lIEFQUFNfUkNNX09fVUFSVF9BMV9TT0ZUX1JFU0VUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA4QworCisjZGVmaW5lIEFQUFNfUkNNX09fR1BUX0EwX0NMS19HQVRJTkcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDkwCisKKyNkZWZpbmUgQVBQU19SQ01fT19HUFRfQTBfU09GVF9SRVNFVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwOTQKKworI2RlZmluZSBBUFBTX1JDTV9PX0dQVF9BMV9DTEtfR0FUSU5HIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA5OAorCisjZGVmaW5lIEFQUFNfUkNNX09fR1BUX0ExX1NPRlRfUkVTRVQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDlDCisKKyNkZWZpbmUgQVBQU19SQ01fT19HUFRfQTJfQ0xLX0dBVElORyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQTAKKworI2RlZmluZSBBUFBTX1JDTV9PX0dQVF9BMl9TT0ZUX1JFU0VUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBBNAorCisjZGVmaW5lIEFQUFNfUkNNX09fR1BUX0EzX0NMS19HQVRJTkcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEE4CisKKyNkZWZpbmUgQVBQU19SQ01fT19HUFRfQTNfU09GVF9SRVNFVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQUMKKworI2RlZmluZSBBUFBTX1JDTV9PX01DQVNQX0ZSQUNfQ0xLX0NPTkZJRzAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEIwCisKKyNkZWZpbmUgQVBQU19SQ01fT19NQ0FTUF9GUkFDX0NMS19DT05GSUcxIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBCNAorCisjZGVmaW5lIEFQUFNfUkNNX09fQ1JZUFRPX0NMS19HQVRJTkcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEI4CisKKyNkZWZpbmUgQVBQU19SQ01fT19DUllQVE9fU09GVF9SRVNFVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQkMKKworI2RlZmluZSBBUFBTX1JDTV9PX01DU1BJX1MwX0NMS19HQVRJTkcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEM4CisKKyNkZWZpbmUgQVBQU19SQ01fT19NQ1NQSV9TMF9TT0ZUX1JFU0VUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBDQworCisjZGVmaW5lIEFQUFNfUkNNX09fTUNTUElfUzBfQ0xLRElWX0NGRyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRDAKKworI2RlZmluZSBBUFBTX1JDTV9PX0kyQ19DTEtfR0FUSU5HIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBEOAorCisjZGVmaW5lIEFQUFNfUkNNX09fSTJDX1NPRlRfUkVTRVQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMERDCisKKyNkZWZpbmUgQVBQU19SQ01fT19BUFBTX0xQRFNfUkVRIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBFNAorCisjZGVmaW5lIEFQUFNfUkNNX09fQVBQU19UVVJCT19SRVEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEVDCisKKyNkZWZpbmUgQVBQU19SQ01fT19BUFBTX0RTTFBfV0FLRV9DT05GSUcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTA4CisKKyNkZWZpbmUgQVBQU19SQ01fT19BUFBTX0RTTFBfV0FLRV9USU1FUl9DRkcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTBDCisKKyNkZWZpbmUgQVBQU19SQ01fT19BUFBTX1JDTV9TTFBfV0FLRV9FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTEwCisKKyNkZWZpbmUgQVBQU19SQ01fT19BUFBTX1NMUF9XQUtFVElNRVJfQ0ZHIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDExNAorCisjZGVmaW5lIEFQUFNfUkNNX09fQVBQU19UT19OV1BfV0FLRV9SRVFVRVNUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDExOAorCisjZGVmaW5lIEFQUFNfUkNNX09fQVBQU19SQ01fSU5URVJSVVBUX1NUQVRVUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMjAKKworI2RlZmluZSBBUFBTX1JDTV9PX0FQUFNfUkNNX0lOVEVSUlVQVF9FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTI0CisKKworCisKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fQ0FNRVJBX0NMS19HRU4gcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fQ0FNRVJBX0NMS19HRU5fQ0FNRVJBX1BMTENLRElWX09GRl9USU1FX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNzAwICAvLyBDb25maWd1cmF0aW9uIG9mIE9GRi1USU1FIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkaXZpZGluZyBQTEwgY2xrICgyNDAgTUh6KSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZW5lcmF0aW9uIG9mIENhbWVyYSBmdW5jLWNsayA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIwMDAiIC0gMSAiMDAxIiAtIDIgIjAxMCIgLSAzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIwMTEiIC0gNCAiMTAwIiAtIDUgIjEwMSIgLSA2CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIxMTAiIC0gNyAiMTExIiAtIDgKKworI2RlZmluZSBBUFBTX1JDTV9DQU1FUkFfQ0xLX0dFTl9DQU1FUkFfUExMQ0tESVZfT0ZGX1RJTUVfUyA4CisjZGVmaW5lIEFQUFNfUkNNX0NBTUVSQV9DTEtfR0VOX05VMV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGOAorCisjZGVmaW5lIEFQUFNfUkNNX0NBTUVSQV9DTEtfR0VOX05VMV9TIDMKKyNkZWZpbmUgQVBQU19SQ01fQ0FNRVJBX0NMS19HRU5fQ0FNRVJBX1BMTENLRElWX09OX1RJTUVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDcgIC8vIENvbmZpZ3VyYXRpb24gb2YgT04tVElNRSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGl2aWRpbmcgUExMIGNsayAoMjQwIE1IeikgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2VuZXJhdGlvbiBvZiBDYW1lcmEgZnVuYy1jbGsgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiMDAwIiAtIDEgIjAwMSIgLSAyICIwMTAiIC0gMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiMDExIiAtIDQgIjEwMCIgLSA1ICIxMDEiIC0gNgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiMTEwIiAtIDcgIjExMSIgLSA4CisKKyNkZWZpbmUgQVBQU19SQ01fQ0FNRVJBX0NMS19HRU5fQ0FNRVJBX1BMTENLRElWX09OX1RJTUVfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQVBQU19SQ01fT19DQU1FUkFfQ0xLX0dBVElORyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBBUFBTX1JDTV9DQU1FUkFfQ0xLX0dBVElOR19OVTFfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDBGRTAwMDAKKworI2RlZmluZSBBUFBTX1JDTV9DQU1FUkFfQ0xLX0dBVElOR19OVTFfUyAxNworI2RlZmluZSBBUFBTX1JDTV9DQU1FUkFfQ0xLX0dBVElOR19DQU1FUkFfRFNMUF9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAxMDAwMCAgLy8gMCAtIERpc2FibGUgY2FtZXJhIGNsayBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVlcC1zbGVlcCBtb2RlCisKKyNkZWZpbmUgQVBQU19SQ01fQ0FNRVJBX0NMS19HQVRJTkdfTlUyX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGRTAwCisKKyNkZWZpbmUgQVBQU19SQ01fQ0FNRVJBX0NMS19HQVRJTkdfTlUyX1MgOQorI2RlZmluZSBBUFBTX1JDTV9DQU1FUkFfQ0xLX0dBVElOR19DQU1FUkFfU0xQX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwICAvLyAxLSBFbmFibGUgY2FtZXJhIGNsayBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2xlZXAgbW9kZSA7IDAtIERpc2FibGUgY2FtZXJhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsayBkdXJpbmcgc2xlZXAgbW9kZQorCisjZGVmaW5lIEFQUFNfUkNNX0NBTUVSQV9DTEtfR0FUSU5HX05VM19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRQorCisjZGVmaW5lIEFQUFNfUkNNX0NBTUVSQV9DTEtfR0FUSU5HX05VM19TIDEKKyNkZWZpbmUgQVBQU19SQ01fQ0FNRVJBX0NMS19HQVRJTkdfQ0FNRVJBX1JVTl9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMS0gRW5hYmxlIGNhbWVyYSBjbGsgZHVyaW5nIHJ1bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtb2RlIDsgMC0gRGlzYWJsZSBjYW1lcmEgY2xrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGR1cmluZyBydW4gbW9kZQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQVBQU19SQ01fT19DQU1FUkFfU09GVF9SRVNFVCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBBUFBTX1JDTV9DQU1FUkFfU09GVF9SRVNFVF9DQU1FUkFfRU5BQkxFRF9TVEFUVVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyICAvLyAxIC0gQ2FtZXJhIGNsb2Nrcy9yZXNldHMgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZWQgOyAwIC0gQ2FtZXJhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsb2Nrcy9yZXNldHMgYXJlIGRpc2FibGVkCisKKyNkZWZpbmUgQVBQU19SQ01fQ0FNRVJBX1NPRlRfUkVTRVRfQ0FNRVJBX1NPRlRfUkVTRVQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gQXNzZXJ0IHJlc2V0IGZvciBDYW1lcmEtY29yZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA7IDAgLSBEZS1hc3NlcnQgcmVzZXQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENhbWVyYS1jb3JlCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX01DQVNQX0NMS19HQVRJTkcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fTUNBU1BfQ0xLX0dBVElOR19OVTFfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDBGRTAwMDAKKworI2RlZmluZSBBUFBTX1JDTV9NQ0FTUF9DTEtfR0FUSU5HX05VMV9TIDE3CisjZGVmaW5lIEFQUFNfUkNNX01DQVNQX0NMS19HQVRJTkdfTUNBU1BfRFNMUF9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAxMDAwMCAgLy8gMCAtIERpc2FibGUgTUNBU1AgY2xrIGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWVwLXNsZWVwIG1vZGUKKworI2RlZmluZSBBUFBTX1JDTV9NQ0FTUF9DTEtfR0FUSU5HX05VMl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRkUwMAorCisjZGVmaW5lIEFQUFNfUkNNX01DQVNQX0NMS19HQVRJTkdfTlUyX1MgOQorI2RlZmluZSBBUFBTX1JDTV9NQ0FTUF9DTEtfR0FUSU5HX01DQVNQX1NMUF9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMCAgLy8gMS0gRW5hYmxlIE1DQVNQIGNsayBkdXJpbmcgc2xlZXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbW9kZSA7IDAtIERpc2FibGUgTUNBU1AgY2xrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGR1cmluZyBzbGVlcCBtb2RlCisKKyNkZWZpbmUgQVBQU19SQ01fTUNBU1BfQ0xLX0dBVElOR19OVTNfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkUKKworI2RlZmluZSBBUFBTX1JDTV9NQ0FTUF9DTEtfR0FUSU5HX05VM19TIDEKKyNkZWZpbmUgQVBQU19SQ01fTUNBU1BfQ0xLX0dBVElOR19NQ0FTUF9SVU5fQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEtIEVuYWJsZSBNQ0FTUCBjbGsgZHVyaW5nIHJ1bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtb2RlIDsgMC0gRGlzYWJsZSBNQ0FTUCBjbGsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHVyaW5nIHJ1biBtb2RlCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX01DQVNQX1NPRlRfUkVTRVQgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fTUNBU1BfU09GVF9SRVNFVF9NQ0FTUF9FTkFCTEVEX1NUQVRVUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIgIC8vIDEgLSBNQ0FTUCBDbG9ja3MvcmVzZXRzIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVkIDsgMCAtIE1DQVNQIENsb2Nrcy9yZXNldHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXJlIGRpc2FibGVkCisKKyNkZWZpbmUgQVBQU19SQ01fTUNBU1BfU09GVF9SRVNFVF9NQ0FTUF9TT0ZUX1JFU0VUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIEFzc2VydCByZXNldCBmb3IgTUNBU1AtY29yZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA7IDAgLSBEZS1hc3NlcnQgcmVzZXQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1DQVNQLWNvcmUKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fTU1DSFNfQ0xLX0dFTiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBBUFBTX1JDTV9NTUNIU19DTEtfR0VOX01NQ0hTX1BMTENLRElWX09GRl9USU1FX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNzAwICAvLyBDb25maWd1cmF0aW9uIG9mIE9GRi1USU1FIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkaXZpZGluZyBQTEwgY2xrICgyNDAgTUh6KSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZW5lcmF0aW9uIG9mIE1NQ0hTIGZ1bmMtY2xrIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIjAwMCIgLSAxICIwMDEiIC0gMiAiMDEwIiAtIDMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIjAxMSIgLSA0ICIxMDAiIC0gNSAiMTAxIiAtIDYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIjExMCIgLSA3ICIxMTEiIC0gOAorCisjZGVmaW5lIEFQUFNfUkNNX01NQ0hTX0NMS19HRU5fTU1DSFNfUExMQ0tESVZfT0ZGX1RJTUVfUyA4CisjZGVmaW5lIEFQUFNfUkNNX01NQ0hTX0NMS19HRU5fTlUxX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEY4CisKKyNkZWZpbmUgQVBQU19SQ01fTU1DSFNfQ0xLX0dFTl9OVTFfUyAzCisjZGVmaW5lIEFQUFNfUkNNX01NQ0hTX0NMS19HRU5fTU1DSFNfUExMQ0tESVZfT05fVElNRV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNyAgLy8gQ29uZmlndXJhdGlvbiBvZiBPTi1USU1FIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkaXZpZGluZyBQTEwgY2xrICgyNDAgTUh6KSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZW5lcmF0aW9uIG9mIE1NQ0hTIGZ1bmMtY2xrIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIjAwMCIgLSAxICIwMDEiIC0gMiAiMDEwIiAtIDMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIjAxMSIgLSA0ICIxMDAiIC0gNSAiMTAxIiAtIDYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIjExMCIgLSA3ICIxMTEiIC0gOAorCisjZGVmaW5lIEFQUFNfUkNNX01NQ0hTX0NMS19HRU5fTU1DSFNfUExMQ0tESVZfT05fVElNRV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX01NQ0hTX0NMS19HQVRJTkcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fTU1DSFNfQ0xLX0dBVElOR19OVTFfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDBGRTAwMDAKKworI2RlZmluZSBBUFBTX1JDTV9NTUNIU19DTEtfR0FUSU5HX05VMV9TIDE3CisjZGVmaW5lIEFQUFNfUkNNX01NQ0hTX0NMS19HQVRJTkdfTU1DSFNfRFNMUF9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAxMDAwMCAgLy8gMCAtIERpc2FibGUgTU1DSFMgY2xrIGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWVwLXNsZWVwIG1vZGUKKworI2RlZmluZSBBUFBTX1JDTV9NTUNIU19DTEtfR0FUSU5HX05VMl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRkUwMAorCisjZGVmaW5lIEFQUFNfUkNNX01NQ0hTX0NMS19HQVRJTkdfTlUyX1MgOQorI2RlZmluZSBBUFBTX1JDTV9NTUNIU19DTEtfR0FUSU5HX01NQ0hTX1NMUF9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMCAgLy8gMS0gRW5hYmxlIE1NQ0hTIGNsayBkdXJpbmcgc2xlZXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbW9kZSA7IDAtIERpc2FibGUgTU1DSFMgY2xrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGR1cmluZyBzbGVlcCBtb2RlCisKKyNkZWZpbmUgQVBQU19SQ01fTU1DSFNfQ0xLX0dBVElOR19OVTNfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkUKKworI2RlZmluZSBBUFBTX1JDTV9NTUNIU19DTEtfR0FUSU5HX05VM19TIDEKKyNkZWZpbmUgQVBQU19SQ01fTU1DSFNfQ0xLX0dBVElOR19NTUNIU19SVU5fQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEtIEVuYWJsZSBNTUNIUyBjbGsgZHVyaW5nIHJ1bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtb2RlIDsgMC0gRGlzYWJsZSBNTUNIUyBjbGsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHVyaW5nIHJ1biBtb2RlCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX01NQ0hTX1NPRlRfUkVTRVQgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fTU1DSFNfU09GVF9SRVNFVF9NTUNIU19FTkFCTEVEX1NUQVRVUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIgIC8vIDEgLSBNTUNIUyBDbG9ja3MvcmVzZXRzIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVkIDsgMCAtIE1NQ0hTIENsb2Nrcy9yZXNldHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXJlIGRpc2FibGVkCisKKyNkZWZpbmUgQVBQU19SQ01fTU1DSFNfU09GVF9SRVNFVF9NTUNIU19TT0ZUX1JFU0VUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIEFzc2VydCByZXNldCBmb3IgTU1DSFMtY29yZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA7IDAgLSBEZS1hc3NlcnQgcmVzZXQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1NQ0hTLWNvcmUKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fTUNTUElfQTFfQ0xLX0dFTiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9BMV9DTEtfR0VOX01DU1BJX0ExX0JBVURfQ0xLX1NFTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMTAwMDAgIC8vIDAgLSBYVEFMIGNsayBpcyB1c2VkIGFzIGJhdWQgY2xrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBNQ1NQSV9BMSA7IDEgLSBQTEwgZGl2Y2xrIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgYXMgYmF1ZCBjbGsgZm9yIE1DU1BJX0ExLgorCisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX0ExX0NMS19HRU5fTlUxX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGODAwCisKKyNkZWZpbmUgQVBQU19SQ01fTUNTUElfQTFfQ0xLX0dFTl9OVTFfUyAxMQorI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9BMV9DTEtfR0VOX01DU1BJX0ExX1BMTENMS0RJVl9PRkZfVElNRV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDcwMCAgLy8gQ29uZmlndXJhdGlvbiBvZiBPRkYtVElNRSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGl2aWRpbmcgUExMIGNsayAoMjQwIE1IeikgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2VuZXJhdGlvbiBvZiBNQ1NQSV9BMSBmdW5jLWNsayA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIwMDAiIC0gMSAiMDAxIiAtIDIgIjAxMCIgLSAzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIwMTEiIC0gNCAiMTAwIiAtIDUgIjEwMSIgLSA2CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIxMTAiIC0gNyAiMTExIiAtIDgKKworI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9BMV9DTEtfR0VOX01DU1BJX0ExX1BMTENMS0RJVl9PRkZfVElNRV9TIDgKKyNkZWZpbmUgQVBQU19SQ01fTUNTUElfQTFfQ0xLX0dFTl9OVTJfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRjgKKworI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9BMV9DTEtfR0VOX05VMl9TIDMKKyNkZWZpbmUgQVBQU19SQ01fTUNTUElfQTFfQ0xLX0dFTl9NQ1NQSV9BMV9QTExDTEtESVZfT05fVElNRV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNyAgLy8gQ29uZmlndXJhdGlvbiBvZiBPTi1USU1FIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkaXZpZGluZyBQTEwgY2xrICgyNDAgTUh6KSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZW5lcmF0aW9uIG9mIE1DU1BJX0ExIGZ1bmMtY2xrIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIjAwMCIgLSAxICIwMDEiIC0gMiAiMDEwIiAtIDMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIjAxMSIgLSA0ICIxMDAiIC0gNSAiMTAxIiAtIDYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIjExMCIgLSA3ICIxMTEiIC0gOAorCisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX0ExX0NMS19HRU5fTUNTUElfQTFfUExMQ0xLRElWX09OX1RJTUVfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQVBQU19SQ01fT19NQ1NQSV9BMV9DTEtfR0FUSU5HIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX0ExX0NMS19HQVRJTkdfTlUxX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwRkUwMDAwCisKKyNkZWZpbmUgQVBQU19SQ01fTUNTUElfQTFfQ0xLX0dBVElOR19OVTFfUyAxNworI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9BMV9DTEtfR0FUSU5HX01DU1BJX0ExX0RTTFBfQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMTAwMDAgIC8vIDAgLSBEaXNhYmxlIE1DU1BJX0ExIGNsayBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVlcC1zbGVlcCBtb2RlCisKKyNkZWZpbmUgQVBQU19SQ01fTUNTUElfQTFfQ0xLX0dBVElOR19OVTJfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZFMDAKKworI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9BMV9DTEtfR0FUSU5HX05VMl9TIDkKKyNkZWZpbmUgQVBQU19SQ01fTUNTUElfQTFfQ0xLX0dBVElOR19NQ1NQSV9BMV9TTFBfQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAgIC8vIDEtIEVuYWJsZSBNQ1NQSV9BMSBjbGsgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNsZWVwIG1vZGUgOyAwLSBEaXNhYmxlIE1DU1BJX0ExCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsayBkdXJpbmcgc2xlZXAgbW9kZQorCisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX0ExX0NMS19HQVRJTkdfTlUzX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEZFCisKKyNkZWZpbmUgQVBQU19SQ01fTUNTUElfQTFfQ0xLX0dBVElOR19OVTNfUyAxCisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX0ExX0NMS19HQVRJTkdfTUNTUElfQTFfUlVOX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxLSBFbmFibGUgTUNTUElfQTEgY2xrIGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBydW4gbW9kZSA7IDAtIERpc2FibGUgTUNTUElfQTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xrIGR1cmluZyBydW4gbW9kZQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQVBQU19SQ01fT19NQ1NQSV9BMV9TT0ZUX1JFU0VUIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX0ExX1NPRlRfUkVTRVRfTUNTUElfQTFfRU5BQkxFRF9TVEFUVVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyICAvLyAxIC0gTUNTUElfQTEgQ2xvY2tzL1Jlc2V0cyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlZCA7IDAgLSBNQ1NQSV9BMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDbG9ja3MvUmVzZXRzIGFyZSBkaXNhYmxlZAorCisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX0ExX1NPRlRfUkVTRVRfTUNTUElfQTFfU09GVF9SRVNFVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBBc3NlcnQgcmVzZXQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1DU1BJX0ExLWNvcmUgOyAwIC0gRGUtYXNzZXJ0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc2V0IGZvciBNQ1NQSV9BMS1jb3JlCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX01DU1BJX0EyX0NMS19HRU4gcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fTUNTUElfQTJfQ0xLX0dFTl9NQ1NQSV9BMl9CQVVEX0NMS19TRUwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDEwMDAwICAvLyAwIC0gWFRBTCBjbGsgaXMgdXNlZCBhcyBiYXVkLWNsaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgTUNTUElfQTIgOyAxIC0gUExMIGRpdmNsayBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VkIGFzIGJhdWQtY2xrIGZvciBNQ1NQSV9BMgorCisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX0EyX0NMS19HRU5fTlUxX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGODAwCisKKyNkZWZpbmUgQVBQU19SQ01fTUNTUElfQTJfQ0xLX0dFTl9OVTFfUyAxMQorI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9BMl9DTEtfR0VOX01DU1BJX0EyX1BMTENLRElWX09GRl9USU1FX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNzAwICAvLyBDb25maWd1cmF0aW9uIG9mIE9GRi1USU1FIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkaXZpZGluZyBQTEwgY2xrICgyNDAgTUh6KSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZW5lcmF0aW9uIG9mIE1DU1BJX0EyIGZ1bmMtY2xrIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIjAwMCIgLSAxICIwMDEiIC0gMiAiMDEwIiAtIDMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIjAxMSIgLSA0ICIxMDAiIC0gNSAiMTAxIiAtIDYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIjExMCIgLSA3ICIxMTEiIC0gOAorCisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX0EyX0NMS19HRU5fTUNTUElfQTJfUExMQ0tESVZfT0ZGX1RJTUVfUyA4CisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX0EyX0NMS19HRU5fTlUyX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEY4CisKKyNkZWZpbmUgQVBQU19SQ01fTUNTUElfQTJfQ0xLX0dFTl9OVTJfUyAzCisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX0EyX0NMS19HRU5fTUNTUElfQTJfUExMQ0tESVZfT05fVElNRV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNyAgLy8gQ29uZmlndXJhdGlvbiBvZiBPRkYtVElNRSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGl2aWRpbmcgUExMIGNsayAoMjQwIE1IeikgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2VuZXJhdGlvbiBvZiBNQ1NQSV9BMiBmdW5jLWNsayA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIwMDAiIC0gMSAiMDAxIiAtIDIgIjAxMCIgLSAzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIwMTEiIC0gNCAiMTAwIiAtIDUgIjEwMSIgLSA2CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIxMTAiIC0gNyAiMTExIiAtIDgKKworI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9BMl9DTEtfR0VOX01DU1BJX0EyX1BMTENLRElWX09OX1RJTUVfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQVBQU19SQ01fT19NQ1NQSV9BMl9DTEtfR0FUSU5HIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX0EyX0NMS19HQVRJTkdfTlUxX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwRkUwMDAwCisKKyNkZWZpbmUgQVBQU19SQ01fTUNTUElfQTJfQ0xLX0dBVElOR19OVTFfUyAxNworI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9BMl9DTEtfR0FUSU5HX01DU1BJX0EyX0RTTFBfQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMTAwMDAgIC8vIDAgLSBEaXNhYmxlIE1DU1BJX0EyIGNsayBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVlcC1zbGVlcCBtb2RlCisKKyNkZWZpbmUgQVBQU19SQ01fTUNTUElfQTJfQ0xLX0dBVElOR19OVTJfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZFMDAKKworI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9BMl9DTEtfR0FUSU5HX05VMl9TIDkKKyNkZWZpbmUgQVBQU19SQ01fTUNTUElfQTJfQ0xLX0dBVElOR19NQ1NQSV9BMl9TTFBfQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAgIC8vIDEtIEVuYWJsZSBNQ1NQSV9BMiBjbGsgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNsZWVwIG1vZGUgOyAwLSBEaXNhYmxlIE1DU1BJX0EyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsayBkdXJpbmcgc2xlZXAgbW9kZQorCisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX0EyX0NMS19HQVRJTkdfTlUzX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEZFCisKKyNkZWZpbmUgQVBQU19SQ01fTUNTUElfQTJfQ0xLX0dBVElOR19OVTNfUyAxCisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX0EyX0NMS19HQVRJTkdfTUNTUElfQTJfUlVOX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxLSBFbmFibGUgTUNTUElfQTIgY2xrIGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBydW4gbW9kZSA7IDAtIERpc2FibGUgTUNTUElfQTIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xrIGR1cmluZyBydW4gbW9kZQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQVBQU19SQ01fT19NQ1NQSV9BMl9TT0ZUX1JFU0VUIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX0EyX1NPRlRfUkVTRVRfTUNTUElfQTJfRU5BQkxFRF9TVEFUVVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyICAvLyAxIC0gTUNTUElfQTIgQ2xvY2tzL1Jlc2V0cyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlZCA7IDAgLSBNQ1NQSV9BMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDbG9ja3MvUmVzZXRzIGFyZSBkaXNhYmxlZAorCisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX0EyX1NPRlRfUkVTRVRfTUNTUElfQTJfU09GVF9SRVNFVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBBc3NlcnQgcmVzZXQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1DU1BJX0EyLWNvcmUgOyAwIC0gRGUtYXNzZXJ0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc2V0IGZvciBNQ1NQSV9BMi1jb3JlCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX1VETUFfQV9DTEtfR0FUSU5HIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX1VETUFfQV9DTEtfR0FUSU5HX1VETUFfQV9EU0xQX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDEwMDAwICAvLyAxIC0gRW5hYmxlIFVETUFfQSBjbGsgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlZXAtc2xlZXAgbW9kZSAwIC0gRGlzYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVRE1BX0EgY2xrIGR1cmluZyBkZWVwLXNsZWVwIG1vZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOworCisjZGVmaW5lIEFQUFNfUkNNX1VETUFfQV9DTEtfR0FUSU5HX05VMV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRkUwMAorCisjZGVmaW5lIEFQUFNfUkNNX1VETUFfQV9DTEtfR0FUSU5HX05VMV9TIDkKKyNkZWZpbmUgQVBQU19SQ01fVURNQV9BX0NMS19HQVRJTkdfVURNQV9BX1NMUF9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMCAgLy8gMSAtIEVuYWJsZSBVRE1BX0EgY2xrIGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzbGVlcCBtb2RlIDAgLSBEaXNhYmxlIFVETUFfQSBjbGsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHVyaW5nIHNsZWVwIG1vZGUgOworCisjZGVmaW5lIEFQUFNfUkNNX1VETUFfQV9DTEtfR0FUSU5HX05VMl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRQorCisjZGVmaW5lIEFQUFNfUkNNX1VETUFfQV9DTEtfR0FUSU5HX05VMl9TIDEKKyNkZWZpbmUgQVBQU19SQ01fVURNQV9BX0NMS19HQVRJTkdfVURNQV9BX1JVTl9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIEVuYWJsZSBVRE1BX0EgY2xrIGR1cmluZyBydW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbW9kZSAwIC0gRGlzYWJsZSBVRE1BX0EgY2xrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGR1cmluZyBydW4gbW9kZSA7CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX1VETUFfQV9TT0ZUX1JFU0VUIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX1VETUFfQV9TT0ZUX1JFU0VUX1VETUFfQV9FTkFCTEVEX1NUQVRVUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIgIC8vIDEgLSBVRE1BX0EgQ2xvY2tzL1Jlc2V0cyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlZCA7IDAgLSBVRE1BX0EKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2xvY2tzL1Jlc2V0cyBhcmUgZGlzYWJsZWQKKworI2RlZmluZSBBUFBTX1JDTV9VRE1BX0FfU09GVF9SRVNFVF9VRE1BX0FfU09GVF9SRVNFVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBBc3NlcnQgcmVzZXQgZm9yIERNQV9BIDsgMCAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlLWFzc2VydCByZXNldCBmb3IgRE1BX0EKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fR1BJT19BX0NMS19HQVRJTkcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fR1BJT19BX0NMS19HQVRJTkdfR1BJT19BX0RTTFBfQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMTAwMDAgIC8vIDEgLSBFbmFibGUgR1BJT19BIGNsayBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVlcC1zbGVlcCBtb2RlIDAgLSBEaXNhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU9fQSBjbGsgZHVyaW5nIGRlZXAtc2xlZXAgbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA7CisKKyNkZWZpbmUgQVBQU19SQ01fR1BJT19BX0NMS19HQVRJTkdfTlUxX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGRTAwCisKKyNkZWZpbmUgQVBQU19SQ01fR1BJT19BX0NMS19HQVRJTkdfTlUxX1MgOQorI2RlZmluZSBBUFBTX1JDTV9HUElPX0FfQ0xLX0dBVElOR19HUElPX0FfU0xQX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwICAvLyAxIC0gRW5hYmxlIEdQSU9fQSBjbGsgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNsZWVwIG1vZGUgMCAtIERpc2FibGUgR1BJT19BIGNsaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkdXJpbmcgc2xlZXAgbW9kZSA7CisKKyNkZWZpbmUgQVBQU19SQ01fR1BJT19BX0NMS19HQVRJTkdfTlUyX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEZFCisKKyNkZWZpbmUgQVBQU19SQ01fR1BJT19BX0NMS19HQVRJTkdfTlUyX1MgMQorI2RlZmluZSBBUFBTX1JDTV9HUElPX0FfQ0xLX0dBVElOR19HUElPX0FfUlVOX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gRW5hYmxlIEdQSU9fQSBjbGsgZHVyaW5nIHJ1bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtb2RlIDAgLSBEaXNhYmxlIEdQSU9fQSBjbGsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHVyaW5nIHJ1biBtb2RlIDsKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fR1BJT19BX1NPRlRfUkVTRVQgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fR1BJT19BX1NPRlRfUkVTRVRfR1BJT19BX0VOQUJMRURfU1RBVFVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMiAgLy8gMSAtIEdQSU9fQSBDbG9ja3MvUmVzZXRzIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVkIDsgMCAtIEdQSU9fQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDbG9ja3MvUmVzZXRzIGFyZSBkaXNhYmxlZAorCisjZGVmaW5lIEFQUFNfUkNNX0dQSU9fQV9TT0ZUX1JFU0VUX0dQSU9fQV9TT0ZUX1JFU0VUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIEFzc2VydCByZXNldCBmb3IgR1BJT19BIDsgMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtIERlLWFzc2VydCByZXNldCBmb3IgR1BJT19BCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX0dQSU9fQl9DTEtfR0FUSU5HIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX0dQSU9fQl9DTEtfR0FUSU5HX0dQSU9fQl9EU0xQX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDEwMDAwICAvLyAxIC0gRW5hYmxlIEdQSU9fQiBjbGsgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlZXAtc2xlZXAgbW9kZSAwIC0gRGlzYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPX0IgY2xrIGR1cmluZyBkZWVwLXNsZWVwIG1vZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOworCisjZGVmaW5lIEFQUFNfUkNNX0dQSU9fQl9DTEtfR0FUSU5HX05VMV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRkUwMAorCisjZGVmaW5lIEFQUFNfUkNNX0dQSU9fQl9DTEtfR0FUSU5HX05VMV9TIDkKKyNkZWZpbmUgQVBQU19SQ01fR1BJT19CX0NMS19HQVRJTkdfR1BJT19CX1NMUF9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMCAgLy8gMSAtIEVuYWJsZSBHUElPX0IgY2xrIGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzbGVlcCBtb2RlIDAgLSBEaXNhYmxlIEdQSU9fQiBjbGsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHVyaW5nIHNsZWVwIG1vZGUgOworCisjZGVmaW5lIEFQUFNfUkNNX0dQSU9fQl9DTEtfR0FUSU5HX05VMl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRQorCisjZGVmaW5lIEFQUFNfUkNNX0dQSU9fQl9DTEtfR0FUSU5HX05VMl9TIDEKKyNkZWZpbmUgQVBQU19SQ01fR1BJT19CX0NMS19HQVRJTkdfR1BJT19CX1JVTl9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIEVuYWJsZSBHUElPX0IgY2xrIGR1cmluZyBydW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbW9kZSAwIC0gRGlzYWJsZSBHUElPX0IgY2xrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGR1cmluZyBydW4gbW9kZSA7CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX0dQSU9fQl9TT0ZUX1JFU0VUIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX0dQSU9fQl9TT0ZUX1JFU0VUX0dQSU9fQl9FTkFCTEVEX1NUQVRVUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIgIC8vIDEgLSBHUElPX0IgQ2xvY2tzL1Jlc2V0cyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlZCA7IDAgLSBHUElPX0IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2xvY2tzL1Jlc2V0cyBhcmUgZGlzYWJsZWQKKworI2RlZmluZSBBUFBTX1JDTV9HUElPX0JfU09GVF9SRVNFVF9HUElPX0JfU09GVF9SRVNFVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBBc3NlcnQgcmVzZXQgZm9yIEdQSU9fQiA7IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLSBEZS1hc3NlcnQgcmVzZXQgZm9yIEdQSU9fQgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQVBQU19SQ01fT19HUElPX0NfQ0xLX0dBVElORyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBBUFBTX1JDTV9HUElPX0NfQ0xLX0dBVElOR19HUElPX0NfRFNMUF9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAxMDAwMCAgLy8gMSAtIEVuYWJsZSBHUElPX0MgY2xrIGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWVwLXNsZWVwIG1vZGUgMCAtIERpc2FibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJT19DIGNsayBkdXJpbmcgZGVlcC1zbGVlcCBtb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDsKKworI2RlZmluZSBBUFBTX1JDTV9HUElPX0NfQ0xLX0dBVElOR19OVTFfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZFMDAKKworI2RlZmluZSBBUFBTX1JDTV9HUElPX0NfQ0xLX0dBVElOR19OVTFfUyA5CisjZGVmaW5lIEFQUFNfUkNNX0dQSU9fQ19DTEtfR0FUSU5HX0dQSU9fQ19TTFBfQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAgIC8vIDEgLSBFbmFibGUgR1BJT19DIGNsayBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2xlZXAgbW9kZSAwIC0gRGlzYWJsZSBHUElPX0MgY2xrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGR1cmluZyBzbGVlcCBtb2RlIDsKKworI2RlZmluZSBBUFBTX1JDTV9HUElPX0NfQ0xLX0dBVElOR19OVTJfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkUKKworI2RlZmluZSBBUFBTX1JDTV9HUElPX0NfQ0xLX0dBVElOR19OVTJfUyAxCisjZGVmaW5lIEFQUFNfUkNNX0dQSU9fQ19DTEtfR0FUSU5HX0dQSU9fQ19SVU5fQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBFbmFibGUgR1BJT19DIGNsayBkdXJpbmcgcnVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1vZGUgMCAtIERpc2FibGUgR1BJT19DIGNsaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkdXJpbmcgcnVuIG1vZGUgOworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQVBQU19SQ01fT19HUElPX0NfU09GVF9SRVNFVCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBBUFBTX1JDTV9HUElPX0NfU09GVF9SRVNFVF9HUElPX0NfRU5BQkxFRF9TVEFUVVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyICAvLyAxIC0gR1BJT19DIENsb2Nrcy9SZXNldHMgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZWQgOyAwIC0gR1BJT19DCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENsb2Nrcy9SZXNldHMgYXJlIGRpc2FibGVkCisKKyNkZWZpbmUgQVBQU19SQ01fR1BJT19DX1NPRlRfUkVTRVRfR1BJT19DX1NPRlRfUkVTRVQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gQXNzZXJ0IHJlc2V0IGZvciBHUElPX0MgOyAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0gRGUtYXNzZXJ0IHJlc2V0IGZvciBHUElPX0MKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fR1BJT19EX0NMS19HQVRJTkcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fR1BJT19EX0NMS19HQVRJTkdfR1BJT19EX0RTTFBfQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMTAwMDAgIC8vIDEgLSBFbmFibGUgR1BJT19EIGNsayBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVlcC1zbGVlcCBtb2RlIDAgLSBEaXNhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU9fRCBjbGsgZHVyaW5nIGRlZXAtc2xlZXAgbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA7CisKKyNkZWZpbmUgQVBQU19SQ01fR1BJT19EX0NMS19HQVRJTkdfTlUxX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGRTAwCisKKyNkZWZpbmUgQVBQU19SQ01fR1BJT19EX0NMS19HQVRJTkdfTlUxX1MgOQorI2RlZmluZSBBUFBTX1JDTV9HUElPX0RfQ0xLX0dBVElOR19HUElPX0RfU0xQX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwICAvLyAxIC0gRW5hYmxlIEdQSU9fRCBjbGsgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNsZWVwIG1vZGUgMCAtIERpc2FibGUgR1BJT19EIGNsaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkdXJpbmcgc2xlZXAgbW9kZSA7CisKKyNkZWZpbmUgQVBQU19SQ01fR1BJT19EX0NMS19HQVRJTkdfTlUyX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEZFCisKKyNkZWZpbmUgQVBQU19SQ01fR1BJT19EX0NMS19HQVRJTkdfTlUyX1MgMQorI2RlZmluZSBBUFBTX1JDTV9HUElPX0RfQ0xLX0dBVElOR19HUElPX0RfUlVOX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gRW5hYmxlIEdQSU9fRCBjbGsgZHVyaW5nIHJ1bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtb2RlIDAgLSBEaXNhYmxlIEdQSU9fRCBjbGsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHVyaW5nIHJ1biBtb2RlIDsKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fR1BJT19EX1NPRlRfUkVTRVQgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fR1BJT19EX1NPRlRfUkVTRVRfR1BJT19EX0VOQUJMRURfU1RBVFVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMiAgLy8gMSAtIEdQSU9fRCBDbG9ja3MvUmVzZXRzIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVkIDsgMCAtIEdQSU9fRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDbG9ja3MvUmVzZXRzIGFyZSBkaXNhYmxlZAorCisjZGVmaW5lIEFQUFNfUkNNX0dQSU9fRF9TT0ZUX1JFU0VUX0dQSU9fRF9TT0ZUX1JFU0VUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIEFzc2VydCByZXNldCBmb3IgR1BJT19EIDsgMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtIERlLWFzc2VydCByZXNldCBmb3IgR1BJT19ECisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX0dQSU9fRV9DTEtfR0FUSU5HIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX0dQSU9fRV9DTEtfR0FUSU5HX0dQSU9fRV9EU0xQX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDEwMDAwICAvLyAxIC0gRW5hYmxlIEdQSU9fRSBjbGsgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlZXAtc2xlZXAgbW9kZSAwIC0gRGlzYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPX0UgY2xrIGR1cmluZyBkZWVwLXNsZWVwIG1vZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOworCisjZGVmaW5lIEFQUFNfUkNNX0dQSU9fRV9DTEtfR0FUSU5HX05VMV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRkUwMAorCisjZGVmaW5lIEFQUFNfUkNNX0dQSU9fRV9DTEtfR0FUSU5HX05VMV9TIDkKKyNkZWZpbmUgQVBQU19SQ01fR1BJT19FX0NMS19HQVRJTkdfR1BJT19FX1NMUF9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMCAgLy8gMSAtIEVuYWJsZSBHUElPX0UgY2xrIGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzbGVlcCBtb2RlIDAgLSBEaXNhYmxlIEdQSU9fRSBjbGsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHVyaW5nIHNsZWVwIG1vZGUgOworCisjZGVmaW5lIEFQUFNfUkNNX0dQSU9fRV9DTEtfR0FUSU5HX05VMl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRQorCisjZGVmaW5lIEFQUFNfUkNNX0dQSU9fRV9DTEtfR0FUSU5HX05VMl9TIDEKKyNkZWZpbmUgQVBQU19SQ01fR1BJT19FX0NMS19HQVRJTkdfR1BJT19FX1JVTl9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIEVuYWJsZSBHUElPX0UgY2xrIGR1cmluZyBydW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbW9kZSAwIC0gRGlzYWJsZSBHUElPX0UgY2xrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGR1cmluZyBydW4gbW9kZSA7CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX0dQSU9fRV9TT0ZUX1JFU0VUIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX0dQSU9fRV9TT0ZUX1JFU0VUX0dQSU9fRV9FTkFCTEVEX1NUQVRVUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIgIC8vIDEgLSBHUElPX0UgQ2xvY2tzL1Jlc2V0cyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlZCA7IDAgLSBHUElPX0UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2xvY2tzL1Jlc2V0cyBhcmUgZGlzYWJsZWQKKworI2RlZmluZSBBUFBTX1JDTV9HUElPX0VfU09GVF9SRVNFVF9HUElPX0VfU09GVF9SRVNFVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBBc3NlcnQgcmVzZXQgZm9yIEdQSU9fRSA7IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLSBEZS1hc3NlcnQgcmVzZXQgZm9yIEdQSU9fRQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQVBQU19SQ01fT19XRE9HX0FfQ0xLX0dBVElORyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBBUFBTX1JDTV9XRE9HX0FfQ0xLX0dBVElOR19XRE9HX0FfQkFVRF9DTEtfU0VMX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAzMDAwMDAwICAvLyAiMDAiIC0gU3lzY2xrIDsgIjAxIiAtIFJFRl9DTEsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKDM4LjQgTUh6KSA7ICIxMC8xMSIgLSBTbG93X2NsaworCisjZGVmaW5lIEFQUFNfUkNNX1dET0dfQV9DTEtfR0FUSU5HX1dET0dfQV9CQVVEX0NMS19TRUxfUyAyNAorI2RlZmluZSBBUFBTX1JDTV9XRE9HX0FfQ0xLX0dBVElOR19XRE9HX0FfRFNMUF9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAxMDAwMCAgLy8gMSAtIEVuYWJsZSBXRE9HX0EgY2xrIGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWVwLXNsZWVwIG1vZGUgMCAtIERpc2FibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV0RPR19BIGNsayBkdXJpbmcgZGVlcC1zbGVlcCBtb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDsKKworI2RlZmluZSBBUFBTX1JDTV9XRE9HX0FfQ0xLX0dBVElOR19OVTFfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZFMDAKKworI2RlZmluZSBBUFBTX1JDTV9XRE9HX0FfQ0xLX0dBVElOR19OVTFfUyA5CisjZGVmaW5lIEFQUFNfUkNNX1dET0dfQV9DTEtfR0FUSU5HX1dET0dfQV9TTFBfQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAgIC8vIDEgLSBFbmFibGUgV0RPR19BIGNsayBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2xlZXAgbW9kZSAwIC0gRGlzYWJsZSBXRE9HX0EgY2xrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGR1cmluZyBzbGVlcCBtb2RlIDsKKworI2RlZmluZSBBUFBTX1JDTV9XRE9HX0FfQ0xLX0dBVElOR19OVTJfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkUKKworI2RlZmluZSBBUFBTX1JDTV9XRE9HX0FfQ0xLX0dBVElOR19OVTJfUyAxCisjZGVmaW5lIEFQUFNfUkNNX1dET0dfQV9DTEtfR0FUSU5HX1dET0dfQV9SVU5fQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBFbmFibGUgV0RPR19BIGNsayBkdXJpbmcgcnVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1vZGUgMCAtIERpc2FibGUgV0RPR19BIGNsaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkdXJpbmcgcnVuIG1vZGUgOworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQVBQU19SQ01fT19XRE9HX0FfU09GVF9SRVNFVCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBBUFBTX1JDTV9XRE9HX0FfU09GVF9SRVNFVF9XRE9HX0FfRU5BQkxFRF9TVEFUVVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyICAvLyAxIC0gV0RPR19BIENsb2Nrcy9SZXNldHMgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZWQgOyAwIC0gV0RPR19BCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENsb2Nrcy9SZXNldHMgYXJlIGRpc2FibGVkCisKKyNkZWZpbmUgQVBQU19SQ01fV0RPR19BX1NPRlRfUkVTRVRfV0RPR19BX1NPRlRfUkVTRVQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gQXNzZXJ0IHJlc2V0IGZvciBXRE9HX0EgOyAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0gRGUtYXNzZXJ0IHJlc2V0IGZvciBXRE9HX0EKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fVUFSVF9BMF9DTEtfR0FUSU5HIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX1VBUlRfQTBfQ0xLX0dBVElOR19VQVJUX0EwX0RTTFBfQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMTAwMDAgIC8vIDEgLSBFbmFibGUgVUFSVF9BMCBjbGsgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlZXAtc2xlZXAgbW9kZSAwIC0gRGlzYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVQVJUX0EwIGNsayBkdXJpbmcgZGVlcC1zbGVlcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtb2RlIDsKKworI2RlZmluZSBBUFBTX1JDTV9VQVJUX0EwX0NMS19HQVRJTkdfTlUxX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGRTAwCisKKyNkZWZpbmUgQVBQU19SQ01fVUFSVF9BMF9DTEtfR0FUSU5HX05VMV9TIDkKKyNkZWZpbmUgQVBQU19SQ01fVUFSVF9BMF9DTEtfR0FUSU5HX1VBUlRfQTBfU0xQX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwICAvLyAxIC0gRW5hYmxlIFVBUlRfQTAgY2xrIGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzbGVlcCBtb2RlIDAgLSBEaXNhYmxlIFVBUlRfQTAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xrIGR1cmluZyBzbGVlcCBtb2RlIDsKKworI2RlZmluZSBBUFBTX1JDTV9VQVJUX0EwX0NMS19HQVRJTkdfTlUyX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEZFCisKKyNkZWZpbmUgQVBQU19SQ01fVUFSVF9BMF9DTEtfR0FUSU5HX05VMl9TIDEKKyNkZWZpbmUgQVBQU19SQ01fVUFSVF9BMF9DTEtfR0FUSU5HX1VBUlRfQTBfUlVOX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gRW5hYmxlIFVBUlRfQTAgY2xrIGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBydW4gbW9kZSAwIC0gRGlzYWJsZSBVQVJUX0EwIGNsaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkdXJpbmcgcnVuIG1vZGUgOworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQVBQU19SQ01fT19VQVJUX0EwX1NPRlRfUkVTRVQgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fVUFSVF9BMF9TT0ZUX1JFU0VUX1VBUlRfQTBfRU5BQkxFRF9TVEFUVVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyICAvLyAxIC0gVUFSVF9BMCBDbG9ja3MvUmVzZXRzIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVkIDsgMCAtIFVBUlRfQTAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2xvY2tzL1Jlc2V0cyBhcmUgZGlzYWJsZWQKKworI2RlZmluZSBBUFBTX1JDTV9VQVJUX0EwX1NPRlRfUkVTRVRfVUFSVF9BMF9TT0ZUX1JFU0VUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIEFzc2VydCByZXNldCBmb3IgVUFSVF9BMCA7IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLSBEZS1hc3NlcnQgcmVzZXQgZm9yIFVBUlRfQTAKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fVUFSVF9BMV9DTEtfR0FUSU5HIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX1VBUlRfQTFfQ0xLX0dBVElOR19VQVJUX0ExX0RTTFBfQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMTAwMDAgIC8vIDEgLSBFbmFibGUgVUFSVF9BMSBjbGsgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlZXAtc2xlZXAgbW9kZSAwIC0gRGlzYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVQVJUX0ExIGNsayBkdXJpbmcgZGVlcC1zbGVlcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtb2RlIDsKKworI2RlZmluZSBBUFBTX1JDTV9VQVJUX0ExX0NMS19HQVRJTkdfTlUxX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGRTAwCisKKyNkZWZpbmUgQVBQU19SQ01fVUFSVF9BMV9DTEtfR0FUSU5HX05VMV9TIDkKKyNkZWZpbmUgQVBQU19SQ01fVUFSVF9BMV9DTEtfR0FUSU5HX1VBUlRfQTFfU0xQX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwICAvLyAxIC0gRW5hYmxlIFVBUlRfQTEgY2xrIGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzbGVlcCBtb2RlIDAgLSBEaXNhYmxlIFVBUlRfQTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xrIGR1cmluZyBzbGVlcCBtb2RlIDsKKworI2RlZmluZSBBUFBTX1JDTV9VQVJUX0ExX0NMS19HQVRJTkdfTlUyX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEZFCisKKyNkZWZpbmUgQVBQU19SQ01fVUFSVF9BMV9DTEtfR0FUSU5HX05VMl9TIDEKKyNkZWZpbmUgQVBQU19SQ01fVUFSVF9BMV9DTEtfR0FUSU5HX1VBUlRfQTFfUlVOX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gRW5hYmxlIFVBUlRfQTEgY2xrIGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBydW4gbW9kZSAwIC0gRGlzYWJsZSBVQVJUX0ExIGNsaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkdXJpbmcgcnVuIG1vZGUgOworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQVBQU19SQ01fT19VQVJUX0ExX1NPRlRfUkVTRVQgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fVUFSVF9BMV9TT0ZUX1JFU0VUX1VBUlRfQTFfRU5BQkxFRF9TVEFUVVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyICAvLyAxIC0gVUFSVF9BMSBDbG9ja3MvUmVzZXRzIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVkIDsgMCAtIFVBUlRfQTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2xvY2tzL1Jlc2V0cyBhcmUgZGlzYWJsZWQKKworI2RlZmluZSBBUFBTX1JDTV9VQVJUX0ExX1NPRlRfUkVTRVRfVUFSVF9BMV9TT0ZUX1JFU0VUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIEFzc2VydCB0aGUgc29mdCByZXNldCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVUFSVF9BMSA7IDAgLSBEZS1hc3NlcnQgdGhlIHNvZnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzZXQgZm9yIFVBUlRfQTEKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fR1BUX0EwX0NMS19HQVRJTkcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fR1BUX0EwX0NMS19HQVRJTkdfR1BUX0EwX0RTTFBfQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMTAwMDAgIC8vIDEgLSBFbmFibGUgdGhlIEdQVF9BMCBjbG9jaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkdXJpbmcgZGVlcC1zbGVlcCA7IDAgLSBEaXNhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBHUFRfQTAgY2xvY2sgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlZXAtc2xlZXAKKworI2RlZmluZSBBUFBTX1JDTV9HUFRfQTBfQ0xLX0dBVElOR19OVTFfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZFMDAKKworI2RlZmluZSBBUFBTX1JDTV9HUFRfQTBfQ0xLX0dBVElOR19OVTFfUyA5CisjZGVmaW5lIEFQUFNfUkNNX0dQVF9BMF9DTEtfR0FUSU5HX0dQVF9BMF9TTFBfQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAgIC8vIDEgLSBFbmFibGUgdGhlIEdQVF9BMCBjbG9jaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkdXJpbmcgc2xlZXAgOyAwIC0gRGlzYWJsZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BUX0EwIGNsb2NrIGR1cmluZyBzbGVlcAorCisjZGVmaW5lIEFQUFNfUkNNX0dQVF9BMF9DTEtfR0FUSU5HX05VMl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRQorCisjZGVmaW5lIEFQUFNfUkNNX0dQVF9BMF9DTEtfR0FUSU5HX05VMl9TIDEKKyNkZWZpbmUgQVBQU19SQ01fR1BUX0EwX0NMS19HQVRJTkdfR1BUX0EwX1JVTl9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIEVuYWJsZSB0aGUgR1BUX0EwIGNsb2NrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGR1cmluZyBydW4gOyAwIC0gRGlzYWJsZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BUX0EwIGNsb2NrIGR1cmluZyBydW4KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fR1BUX0EwX1NPRlRfUkVTRVQgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fR1BUX0EwX1NPRlRfUkVTRVRfR1BUX0EwX0VOQUJMRURfU1RBVFVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMiAgLy8gMSAtIEdQVF9BMCBjbG9ja3MvcmVzZXRzIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVkIDsgMCAtIEdQVF9BMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjbG9ja3MvcmVzZXRzIGFyZSBkaXNhYmxlZAorCisjZGVmaW5lIEFQUFNfUkNNX0dQVF9BMF9TT0ZUX1JFU0VUX0dQVF9BMF9TT0ZUX1JFU0VUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIEFzc2VydCB0aGUgc29mdCByZXNldCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BUX0EwIDsgMCAtIERlLWFzc2VydCB0aGUgc29mdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXNldCBmb3IgR1BUX0EwCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX0dQVF9BMV9DTEtfR0FUSU5HIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX0dQVF9BMV9DTEtfR0FUSU5HX0dQVF9BMV9EU0xQX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDEwMDAwICAvLyAxIC0gRW5hYmxlIHRoZSBHUFRfQTEgY2xvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHVyaW5nIGRlZXAtc2xlZXAgOyAwIC0gRGlzYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgR1BUX0ExIGNsb2NrIGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWVwLXNsZWVwCisKKyNkZWZpbmUgQVBQU19SQ01fR1BUX0ExX0NMS19HQVRJTkdfTlUxX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGRTAwCisKKyNkZWZpbmUgQVBQU19SQ01fR1BUX0ExX0NMS19HQVRJTkdfTlUxX1MgOQorI2RlZmluZSBBUFBTX1JDTV9HUFRfQTFfQ0xLX0dBVElOR19HUFRfQTFfU0xQX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwICAvLyAxIC0gRW5hYmxlIHRoZSBHUFRfQTEgY2xvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHVyaW5nIHNsZWVwIDsgMCAtIERpc2FibGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQVF9BMSBjbG9jayBkdXJpbmcgc2xlZXAKKworI2RlZmluZSBBUFBTX1JDTV9HUFRfQTFfQ0xLX0dBVElOR19OVTJfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkUKKworI2RlZmluZSBBUFBTX1JDTV9HUFRfQTFfQ0xLX0dBVElOR19OVTJfUyAxCisjZGVmaW5lIEFQUFNfUkNNX0dQVF9BMV9DTEtfR0FUSU5HX0dQVF9BMV9SVU5fQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBFbmFibGUgdGhlIEdQVF9BMSBjbG9jaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkdXJpbmcgcnVuIDsgMCAtIERpc2FibGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQVF9BMSBjbG9jayBkdXJpbmcgcnVuCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX0dQVF9BMV9TT0ZUX1JFU0VUIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX0dQVF9BMV9TT0ZUX1JFU0VUX0dQVF9BMV9FTkFCTEVEX1NUQVRVUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIgIC8vIDEgLSBHUFRfQTEgY2xvY2tzL3Jlc2V0cyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlZCA7IDAgLSBHUFRfQTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xvY2tzL3Jlc2V0cyBhcmUgZGlzYWJsZWQKKworI2RlZmluZSBBUFBTX1JDTV9HUFRfQTFfU09GVF9SRVNFVF9HUFRfQTFfU09GVF9SRVNFVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBBc3NlcnQgdGhlIHNvZnQgcmVzZXQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQVF9BMSA7IDAgLSBEZS1hc3NlcnQgdGhlIHNvZnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzZXQgZm9yIEdQVF9BMQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQVBQU19SQ01fT19HUFRfQTJfQ0xLX0dBVElORyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBBUFBTX1JDTV9HUFRfQTJfQ0xLX0dBVElOR19HUFRfQTJfRFNMUF9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAxMDAwMCAgLy8gMSAtIEVuYWJsZSB0aGUgR1BUX0EyIGNsb2NrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGR1cmluZyBkZWVwLXNsZWVwIDsgMCAtIERpc2FibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIEdQVF9BMiBjbG9jayBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVlcC1zbGVlcAorCisjZGVmaW5lIEFQUFNfUkNNX0dQVF9BMl9DTEtfR0FUSU5HX05VMV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRkUwMAorCisjZGVmaW5lIEFQUFNfUkNNX0dQVF9BMl9DTEtfR0FUSU5HX05VMV9TIDkKKyNkZWZpbmUgQVBQU19SQ01fR1BUX0EyX0NMS19HQVRJTkdfR1BUX0EyX1NMUF9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMCAgLy8gMSAtIEVuYWJsZSB0aGUgR1BUX0EyIGNsb2NrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGR1cmluZyBzbGVlcCA7IDAgLSBEaXNhYmxlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUFRfQTIgY2xvY2sgZHVyaW5nIHNsZWVwCisKKyNkZWZpbmUgQVBQU19SQ01fR1BUX0EyX0NMS19HQVRJTkdfTlUyX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEZFCisKKyNkZWZpbmUgQVBQU19SQ01fR1BUX0EyX0NMS19HQVRJTkdfTlUyX1MgMQorI2RlZmluZSBBUFBTX1JDTV9HUFRfQTJfQ0xLX0dBVElOR19HUFRfQTJfUlVOX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gRW5hYmxlIHRoZSBHUFRfQTIgY2xvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHVyaW5nIHJ1biA7IDAgLSBEaXNhYmxlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUFRfQTIgY2xvY2sgZHVyaW5nIHJ1bgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQVBQU19SQ01fT19HUFRfQTJfU09GVF9SRVNFVCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBBUFBTX1JDTV9HUFRfQTJfU09GVF9SRVNFVF9HUFRfQTJfRU5BQkxFRF9TVEFUVVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyICAvLyAxIC0gR1BUX0EyIGNsb2Nrcy9yZXNldHMgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZWQgOyAwIC0gR1BUX0EyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsb2Nrcy9yZXNldHMgYXJlIGRpc2FibGVkCisKKyNkZWZpbmUgQVBQU19SQ01fR1BUX0EyX1NPRlRfUkVTRVRfR1BUX0EyX1NPRlRfUkVTRVQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gQXNzZXJ0IHRoZSBzb2Z0IHJlc2V0IGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUFRfQTIgOyAwIC0gRGUtYXNzZXJ0IHRoZSBzb2Z0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc2V0IGZvciBHUFRfQTIKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fR1BUX0EzX0NMS19HQVRJTkcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fR1BUX0EzX0NMS19HQVRJTkdfR1BUX0EzX0RTTFBfQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMTAwMDAgIC8vIDEgLSBFbmFibGUgdGhlIEdQVF9BMyBjbG9jaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkdXJpbmcgZGVlcC1zbGVlcCA7IDAgLSBEaXNhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBHUFRfQTMgY2xvY2sgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlZXAtc2xlZXAKKworI2RlZmluZSBBUFBTX1JDTV9HUFRfQTNfQ0xLX0dBVElOR19OVTFfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZFMDAKKworI2RlZmluZSBBUFBTX1JDTV9HUFRfQTNfQ0xLX0dBVElOR19OVTFfUyA5CisjZGVmaW5lIEFQUFNfUkNNX0dQVF9BM19DTEtfR0FUSU5HX0dQVF9BM19TTFBfQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAgIC8vIDEgLSBFbmFibGUgdGhlIEdQVF9BMyBjbG9jaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkdXJpbmcgc2xlZXAgOyAwIC0gRGlzYWJsZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BUX0EzIGNsb2NrIGR1cmluZyBzbGVlcAorCisjZGVmaW5lIEFQUFNfUkNNX0dQVF9BM19DTEtfR0FUSU5HX05VMl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRQorCisjZGVmaW5lIEFQUFNfUkNNX0dQVF9BM19DTEtfR0FUSU5HX05VMl9TIDEKKyNkZWZpbmUgQVBQU19SQ01fR1BUX0EzX0NMS19HQVRJTkdfR1BUX0EzX1JVTl9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIEVuYWJsZSB0aGUgR1BUX0EzIGNsb2NrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGR1cmluZyBydW4gOyAwIC0gRGlzYWJsZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BUX0EzIGNsb2NrIGR1cmluZyBydW4KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fR1BUX0EzX1NPRlRfUkVTRVQgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fR1BUX0EzX1NPRlRfUkVTRVRfR1BUX0EzX0VOQUJMRURfU1RBVFVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMiAgLy8gMSAtIEdQVF9BMyBDbG9ja3MvcmVzZXRzIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVkIDsgMCAtIEdQVF9BMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDbG9ja3MvcmVzZXRzIGFyZSBkaXNhYmxlZAorCisjZGVmaW5lIEFQUFNfUkNNX0dQVF9BM19TT0ZUX1JFU0VUX0dQVF9BM19TT0ZUX1JFU0VUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIEFzc2VydCB0aGUgc29mdCByZXNldCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BUX0EzIDsgMCAtIERlLWFzc2VydCB0aGUgc29mdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXNldCBmb3IgR1BUX0EzCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX01DQVNQX0ZSQUNfQ0xLX0NPTkZJRzAgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fTUNBU1BfRlJBQ19DTEtfQ09ORklHMF9NQ0FTUF9GUkFDX0RJVl9ESVZJU09SX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAzRkYwMDAwCisKKyNkZWZpbmUgQVBQU19SQ01fTUNBU1BfRlJBQ19DTEtfQ09ORklHMF9NQ0FTUF9GUkFDX0RJVl9ESVZJU09SX1MgMTYKKyNkZWZpbmUgQVBQU19SQ01fTUNBU1BfRlJBQ19DTEtfQ09ORklHMF9NQ0FTUF9GUkFDX0RJVl9GUkFDVElPTl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRkZGRgorCisjZGVmaW5lIEFQUFNfUkNNX01DQVNQX0ZSQUNfQ0xLX0NPTkZJRzBfTUNBU1BfRlJBQ19ESVZfRlJBQ1RJT05fUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQVBQU19SQ01fT19NQ0FTUF9GUkFDX0NMS19DT05GSUcxIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX01DQVNQX0ZSQUNfQ0xLX0NPTkZJRzFfTUNBU1BfRlJBQ19ESVZfU09GVF9SRVNFVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMTAwMDAgIC8vIDEgLSBBc3NlcnQgdGhlIHJlc2V0IGZvciBNQ0FTUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGcmFjLWNsayBkaXY7IDAgLSBEb25vdCBhc3NlcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHJlc2V0IGZvciBNQ0FTUCBmcmFjIGNsay1kaXYKKworI2RlZmluZSBBUFBTX1JDTV9NQ0FTUF9GUkFDX0NMS19DT05GSUcxX01DQVNQX0ZSQUNfRElWX1BFUklPRF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDNGRgorCisjZGVmaW5lIEFQUFNfUkNNX01DQVNQX0ZSQUNfQ0xLX0NPTkZJRzFfTUNBU1BfRlJBQ19ESVZfUEVSSU9EX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fQ1JZUFRPX0NMS19HQVRJTkcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fQ1JZUFRPX0NMS19HQVRJTkdfQ1JZUFRPX0RTTFBfQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMTAwMDAgIC8vIDAgLSBEaXNhYmxlIHRoZSBDcnlwdG8gY2xvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHVyaW5nIGRlZXAtc2xlZXAKKworI2RlZmluZSBBUFBTX1JDTV9DUllQVE9fQ0xLX0dBVElOR19OVTFfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZFMDAKKworI2RlZmluZSBBUFBTX1JDTV9DUllQVE9fQ0xLX0dBVElOR19OVTFfUyA5CisjZGVmaW5lIEFQUFNfUkNNX0NSWVBUT19DTEtfR0FUSU5HX0NSWVBUT19TTFBfQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAgIC8vIDEgLSBFbmFibGUgdGhlIENyeXB0byBjbG9jaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkdXJpbmcgc2xlZXAgOyAwIC0gRGlzYWJsZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ3J5cHRvIGNsb2NrIGR1cmluZyBzbGVlcAorCisjZGVmaW5lIEFQUFNfUkNNX0NSWVBUT19DTEtfR0FUSU5HX05VMl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRQorCisjZGVmaW5lIEFQUFNfUkNNX0NSWVBUT19DTEtfR0FUSU5HX05VMl9TIDEKKyNkZWZpbmUgQVBQU19SQ01fQ1JZUFRPX0NMS19HQVRJTkdfQ1JZUFRPX1JVTl9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIEVuYWJsZSB0aGUgQ3J5cHRvIGNsb2NrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGR1cmluZyBydW4gOyAwIC0gRGlzYWJsZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ3J5cHRvIGNsb2NrIGR1cmluZyBydW4KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fQ1JZUFRPX1NPRlRfUkVTRVQgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fQ1JZUFRPX1NPRlRfUkVTRVRfQ1JZUFRPX0VOQUJMRURfU1RBVFVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMiAgLy8gMSAtIENyeXB0byBjbG9ja3MvcmVzZXRzIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVkIDsgMCAtIENyeXB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjbG9ja3MvcmVzZXRzIGFyZSBkaXNhYmxlZAorCisjZGVmaW5lIEFQUFNfUkNNX0NSWVBUT19TT0ZUX1JFU0VUX0NSWVBUT19TT0ZUX1JFU0VUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIEFzc2VydCB0aGUgc29mdCByZXNldCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ3J5cHRvIDsgMCAtIERlLWFzc2VydCB0aGUgc29mdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXNldCBmb3IgQ3J5cHRvCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX01DU1BJX1MwX0NMS19HQVRJTkcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fTUNTUElfUzBfQ0xLX0dBVElOR19NQ1NQSV9TMF9EU0xQX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDEwMDAwICAvLyAwIC0gRGlzYWJsZSB0aGUgTUNTUElfUzAgY2xvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHVyaW5nIGRlZXAtc2xlZXAKKworI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9TMF9DTEtfR0FUSU5HX05VMV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRkUwMAorCisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX1MwX0NMS19HQVRJTkdfTlUxX1MgOQorI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9TMF9DTEtfR0FUSU5HX01DU1BJX1MwX1NMUF9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMCAgLy8gMSAtIEVuYWJsZSB0aGUgTUNTUElfUzAgY2xvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHVyaW5nIHNsZWVwIDsgMCAtIERpc2FibGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1DU1BJX1MwIGNsb2NrIGR1cmluZyBzbGVlcAorCisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX1MwX0NMS19HQVRJTkdfTlUyX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEZFCisKKyNkZWZpbmUgQVBQU19SQ01fTUNTUElfUzBfQ0xLX0dBVElOR19OVTJfUyAxCisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX1MwX0NMS19HQVRJTkdfTUNTUElfUzBfUlVOX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gRW5hYmxlIHRoZSBNQ1NQSV9TMCBjbG9jaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkdXJpbmcgcnVuIDsgMCAtIERpc2FibGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1DU1BJX1MwIGNsb2NrIGR1cmluZyBydW4KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fTUNTUElfUzBfU09GVF9SRVNFVCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9TMF9TT0ZUX1JFU0VUX01DU1BJX1MwX0VOQUJMRURfU1RBVFVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMiAgLy8gMSAtIE1DU1BJX1MwIENsb2Nrcy9SZXNldHMgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZWQgOyAwIC0gTUNTUElfUzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2xvY2tzL3Jlc2V0cyBhcmUgZGlzYWJsZWQKKworI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9TMF9TT0ZUX1JFU0VUX01DU1BJX1MwX1NPRlRfUkVTRVQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gQXNzZXJ0IHRoZSBzb2Z0IHJlc2V0IGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNQ1NQSV9TMCA7IDAgLSBEZS1hc3NlcnQgdGhlIHNvZnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzZXQgZm9yIE1DU1BJX1MwCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX01DU1BJX1MwX0NMS0RJVl9DRkcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fTUNTUElfUzBfQ0xLRElWX0NGR19NQ1NQSV9TMF9CQVVEX0NMS19TRUwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDEwMDAwICAvLyAwIC0gWFRBTCBjbGsgaXMgdXNlZCBhcyBiYXVkLWNsaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgTUNTUElfUzAgOyAxIC0gUExMIGRpdmNsayBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VkIGFzIGJ1YWQtY2xrIGZvciBNQ1NQSV9TMAorCisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX1MwX0NMS0RJVl9DRkdfTlUxX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGODAwCisKKyNkZWZpbmUgQVBQU19SQ01fTUNTUElfUzBfQ0xLRElWX0NGR19OVTFfUyAxMQorI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9TMF9DTEtESVZfQ0ZHX01DU1BJX1MwX1BMTENMS0RJVl9PRkZfVElNRV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDcwMCAgLy8gQ29uZmlndXJhdGlvbiBvZiBPRkYtVElNRSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGl2aWRpbmcgUExMIGNsayAoMjQwIE1IeikgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2VuZXJhdGlvbiBvZiBNQ1NQSV9TMCBmdW5jLWNsayA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIwMDAiIC0gMSAiMDAxIiAtIDIgIjAxMCIgLSAzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIwMTEiIC0gNCAiMTAwIiAtIDUgIjEwMSIgLSA2CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIxMTAiIC0gNyAiMTExIiAtIDgKKworI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9TMF9DTEtESVZfQ0ZHX01DU1BJX1MwX1BMTENMS0RJVl9PRkZfVElNRV9TIDgKKyNkZWZpbmUgQVBQU19SQ01fTUNTUElfUzBfQ0xLRElWX0NGR19OVTJfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRjgKKworI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9TMF9DTEtESVZfQ0ZHX05VMl9TIDMKKyNkZWZpbmUgQVBQU19SQ01fTUNTUElfUzBfQ0xLRElWX0NGR19NQ1NQSV9TMF9QTExDTEtESVZfT05fVElNRV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNyAgLy8gQ29uZmlndXJhdGlvbiBvZiBPTi1USU1FIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkaXZpZGluZyBQTEwgY2xrICgyNDAgTUh6KSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZW5lcmF0aW9uIG9mIE1DU1BJX1MwIGZ1bmMtY2xrIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIjAwMCIgLSAxICIwMDEiIC0gMiAiMDEwIiAtIDMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIjAxMSIgLSA0ICIxMDAiIC0gNSAiMTAxIiAtIDYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIjExMCIgLSA3ICIxMTEiIC0gOAorCisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX1MwX0NMS0RJVl9DRkdfTUNTUElfUzBfUExMQ0xLRElWX09OX1RJTUVfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQVBQU19SQ01fT19JMkNfQ0xLX0dBVElORyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBBUFBTX1JDTV9JMkNfQ0xLX0dBVElOR19JMkNfRFNMUF9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAxMDAwMCAgLy8gMSAtIEVuYWJsZSB0aGUgSTJDIENsb2NrIGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWVwLXNsZWVwIDAgLSBEaXNhYmxlIHRoZSBJMkMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xvY2sgZHVyaW5nIGRlZXAtc2xlZXAKKworI2RlZmluZSBBUFBTX1JDTV9JMkNfQ0xLX0dBVElOR19OVTFfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZFMDAKKworI2RlZmluZSBBUFBTX1JDTV9JMkNfQ0xLX0dBVElOR19OVTFfUyA5CisjZGVmaW5lIEFQUFNfUkNNX0kyQ19DTEtfR0FUSU5HX0kyQ19TTFBfQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAgIC8vIDEgLSBFbmFibGUgdGhlIEkyQyBjbG9jayBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2xlZXAgOyAwIC0gRGlzYWJsZSB0aGUgSTJDIGNsb2NrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGR1cmluZyBzbGVlcAorCisjZGVmaW5lIEFQUFNfUkNNX0kyQ19DTEtfR0FUSU5HX05VMl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRQorCisjZGVmaW5lIEFQUFNfUkNNX0kyQ19DTEtfR0FUSU5HX05VMl9TIDEKKyNkZWZpbmUgQVBQU19SQ01fSTJDX0NMS19HQVRJTkdfSTJDX1JVTl9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIEVuYWJsZSB0aGUgSTJDIGNsb2NrIGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBydW4gOyAwIC0gRGlzYWJsZSB0aGUgSTJDIGNsb2NrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGR1cmluZyBydW4KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fSTJDX1NPRlRfUkVTRVQgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fSTJDX1NPRlRfUkVTRVRfSTJDX0VOQUJMRURfU1RBVFVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMiAgLy8gMSAtIEkyQyBDbG9ja3MvUmVzZXRzIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVkIDsgMCAtIEkyQyBjbG9ja3MvcmVzZXRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFyZSBkaXNhYmxlZAorCisjZGVmaW5lIEFQUFNfUkNNX0kyQ19TT0ZUX1JFU0VUX0kyQ19TT0ZUX1JFU0VUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIEFzc2VydCB0aGUgc29mdCByZXNldCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2hhcmVkLUkyQyA7IDAgLSBEZS1hc3NlcnQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNvZnQgcmVzZXQgZm9yIFNoYXJlZC1JMkMKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fQVBQU19MUERTX1JFUSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBBUFBTX1JDTV9BUFBTX0xQRFNfUkVRX0FQUFNfTFBEU19SRVEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gUmVxdWVzdCBmb3IgTFBEUworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQVBQU19SQ01fT19BUFBTX1RVUkJPX1JFUSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBBUFBTX1JDTV9BUFBTX1RVUkJPX1JFUV9BUFBTX1RVUkJPX1JFUSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBSZXF1ZXN0IGZvciBUVVJCTworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQVBQU19SQ01fT19BUFBTX0RTTFBfV0FLRV9DT05GSUcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fQVBQU19EU0xQX1dBS0VfQ09ORklHX0RTTFBfV0FLRV9GUk9NX05XUF9FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyICAvLyAxIC0gRW5hYmxlIHRoZSBOV1AgdG8gd2FrZSBBUFBTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZyb20gZGVlcC1zbGVlcCA7IDAgLSBEaXNhYmxlIE5XUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byB3YWtlIEFQUFMgZnJvbSBkZWVwLXNsZWVwCisKKyNkZWZpbmUgQVBQU19SQ01fQVBQU19EU0xQX1dBS0VfQ09ORklHX0RTTFBfV0FLRV9USU1FUl9FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gRW5hYmxlIGRlZXAtc2xlZXAgd2FrZSB0aW1lcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbiBBUFBTIFJDTSBmb3IgZGVlcC1zbGVlcDsgMCAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERpc2FibGUgZGVlcC1zbGVlcCB3YWtlIHRpbWVyIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFQUFMgUkNNCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX0FQUFNfRFNMUF9XQUtFX1RJTUVSX0NGRyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBBUFBTX1JDTV9BUFBTX0RTTFBfV0FLRV9USU1FUl9DRkdfRFNMUF9XQUtFX1RJTUVSX09QUF9DRkdfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRjAwMDAgIC8vIENvbmZpZ3VyYXRpb24gKGluIHNsb3dfY2xrcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggc2F5cyB3aGVuIHRvIHJlcXVlc3QgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9QUCBkdXJpbmcgZGVlcC1zbGVlcCBleGl0CisKKyNkZWZpbmUgQVBQU19SQ01fQVBQU19EU0xQX1dBS0VfVElNRVJfQ0ZHX0RTTFBfV0FLRV9USU1FUl9PUFBfQ0ZHX1MgMTYKKyNkZWZpbmUgQVBQU19SQ01fQVBQU19EU0xQX1dBS0VfVElNRVJfQ0ZHX0RTTFBfV0FLRV9USU1FUl9XQUtFX0NGR19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRkZGRiAgLy8gQ29uZmlndXJhdGlvbiAoaW4gc2xvd19jbGtzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBzYXlzIHdoZW4gdG8gcmVxdWVzdCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV0FLRSBkdXJpbmcgZGVlcC1zbGVlcCBleGl0CisKKyNkZWZpbmUgQVBQU19SQ01fQVBQU19EU0xQX1dBS0VfVElNRVJfQ0ZHX0RTTFBfV0FLRV9USU1FUl9XQUtFX0NGR19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX0FQUFNfUkNNX1NMUF9XQUtFX0VOQUJMRSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBBUFBTX1JDTV9BUFBTX1JDTV9TTFBfV0FLRV9FTkFCTEVfU0xQX1dBS0VfRlJPTV9OV1BfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMiAgLy8gMS0gRW5hYmxlIHRoZSBzbGVlcCB3YWtldXAgZHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIE5XUCByZXF1ZXN0LiAwLSBEaXNhYmxlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzbGVlcCB3YWtldXAgZHVlIHRvIE5XUCByZXF1ZXN0CisKKyNkZWZpbmUgQVBQU19SQ01fQVBQU19SQ01fU0xQX1dBS0VfRU5BQkxFX1NMUF9XQUtFX1RJTUVSX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEtIEVuYWJsZSB0aGUgc2xlZXAgd2FrZXVwIGR1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBzbGVlcC10aW1lcjsgMC1EaXNhYmxlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzbGVlcCB3YWtldXAgZHVlIHRvIHNsZWVwLXRpbWVyCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX0FQUFNfU0xQX1dBS0VUSU1FUl9DRkcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fQVBQU19TTFBfV0FLRVRJTUVSX0NGR19TTFBfV0FLRV9USU1FUl9DRkdfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIENvbmZpZ3VyYXRpb24gKG51bWJlciBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzeXNjbGtzLTgwTUh6KSBmb3IgdGhlIFNsZWVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdha2V1cCB0aW1lcgorCisjZGVmaW5lIEFQUFNfUkNNX0FQUFNfU0xQX1dBS0VUSU1FUl9DRkdfU0xQX1dBS0VfVElNRVJfQ0ZHX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fQVBQU19UT19OV1BfV0FLRV9SRVFVRVNUIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX0FQUFNfVE9fTldQX1dBS0VfUkVRVUVTVF9BUFBTX1RPX05XUF9XQUtFVVBfUkVRVUVTVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIFdoZW4gMSA9PiBBUFBTIGdlbmVyYXRlZCBhIHdha2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVxdWVzdCB0byBOV1AgKFdoZW4gTldQIGlzIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFueSBvZiBpdHMgbG93LXBvd2VyIG1vZGVzIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU0xQL0RTTFAvTFBEUykKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fQVBQU19SQ01fSU5URVJSVVBUX1NUQVRVUyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBBUFBTX1JDTV9BUFBTX1JDTV9JTlRFUlJVUFRfU1RBVFVTX2FwcHNfZGVlcF9zbGVlcF90aW1lcl93YWtlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwOCAgLy8gMSAtIEluZGljYXRlcyB0aGF0IGRlZXAtc2xlZXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGltZXIgZXhwaXJ5IGhhZCBjYXVzZWQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdha2V1cCBmcm9tIGRlZXAtc2xlZXAKKworI2RlZmluZSBBUFBTX1JDTV9BUFBTX1JDTV9JTlRFUlJVUFRfU1RBVFVTX2FwcHNfc2xlZXBfdGltZXJfd2FrZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDQgIC8vIDEgLSBJbmRpY2F0ZXMgdGhhdCBzbGVlcCB0aW1lcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBleHBpcnkgaGFkIGNhdXNlZCB0aGUgd2FrZXVwIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2xlZXAKKworI2RlZmluZSBBUFBTX1JDTV9BUFBTX1JDTV9JTlRFUlJVUFRfU1RBVFVTX2FwcHNfZGVlcF9zbGVlcF93YWtlX2Zyb21fbndwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMiAgLy8gMSAtIEluZGljYXRlcyB0aGF0IE5XUCBoYWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2F1c2VkIHRoZSB3YWtldXAgZnJvbSBkZWVwLXNsZWVwCisKKyNkZWZpbmUgQVBQU19SQ01fQVBQU19SQ01fSU5URVJSVVBUX1NUQVRVU19hcHBzX3NsZWVwX3dha2VfZnJvbV9ud3AgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gSW5kaWNhdGVzIHRoYXQgTldQIGhhZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXVzZWQgdGhlIHdha2V1cCBmcm9tIFNsZWVwCisKKworCisKKyNlbmRpZiAvLyBfX0hXX0FQUFNfUkNNX0hfXwpkaWZmIC0tZ2l0IGEvZXh0L2hhbC90aS9jYzMyMjBzZGsvaW5jL2h3X2NvbW1vbl9yZWcuaCBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2luYy9od19jb21tb25fcmVnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDhiZWJjOAotLS0gL2Rldi9udWxsCisrKyBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2luYy9od19jb21tb25fcmVnLmgKQEAgLTAsMCArMSwxMTE1IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxNiBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgLSBodHRwOi8vd3d3LnRpLmNvbS8KKyAqCisgKiAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiAgYXJlIG1ldDoKKyAqCisgKiAgICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqICAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAgICBOZWl0aGVyIHRoZSBuYW1lIG9mIFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCBub3IgdGhlIG5hbWVzIG9mCisgKiAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqICBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaWZuZGVmIF9fSFdfQ09NTU9OX1JFR19IX18KKyNkZWZpbmUgX19IV19DT01NT05fUkVHX0hfXworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIENPTU1PTl9SRUcgcmVnaXN0ZXIgb2Zmc2V0cy4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIENPTU1PTl9SRUdfT19JMkNfUHJvcGVydGllc19SZWdpc3RlciBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDAKKworI2RlZmluZSBDT01NT05fUkVHX09fU1BJX1Byb3BlcnRpZXNfUmVnaXN0ZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA0CisKKyNkZWZpbmUgQ09NTU9OX1JFR19PX0FQUFNfc2hfcmVzb3VyY2VfSW50ZXJydXB0X2VuYWJsZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMEMKKworI2RlZmluZSBDT01NT05fUkVHX09fQVBQU19zaF9yZXNvdXJjZV9JbnRlcnJ1cHRfc3RhdHVzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxMAorCisjZGVmaW5lIENPTU1PTl9SRUdfT19OV1Bfc2hfcmVzb3VyY2VfSW50ZXJydXB0X2VuYWJsZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTQKKworI2RlZmluZSBDT01NT05fUkVHX09fTldQX3NoX3Jlc291cmNlX0ludGVycnVwdF9zdGF0dXMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDE4CisKKyNkZWZpbmUgQ09NTU9OX1JFR19PX0ZsYXNoX2N0cmxfcmVnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxQworCisjZGVmaW5lIENPTU1PTl9SRUdfT19CdXNfbWF0cml4X00wX3NlZ21lbnRfYWNjZXNzX2NvbmZpZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMjQKKworI2RlZmluZSBDT01NT05fUkVHX09fQnVzX21hdHJpeF9NMV9zZWdtZW50X2FjY2Vzc19jb25maWcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDI4CisKKyNkZWZpbmUgQ09NTU9OX1JFR19PX0J1c19tYXRyaXhfTTJfc2VnbWVudF9hY2Nlc3NfY29uZmlnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAyQworCisjZGVmaW5lIENPTU1PTl9SRUdfT19CdXNfbWF0cml4X00zX3NlZ21lbnRfYWNjZXNzX2NvbmZpZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMzAKKworI2RlZmluZSBDT01NT05fUkVHX09fQnVzX21hdHJpeF9NNF9zZWdtZW50X2FjY2Vzc19jb25maWcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDM0CisKKyNkZWZpbmUgQ09NTU9OX1JFR19PX0J1c19tYXRyaXhfTTVfc2VnbWVudF9hY2Nlc3NfY29uZmlnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAzOAorCisjZGVmaW5lIENPTU1PTl9SRUdfT19HUElPX3Byb3BlcnRpZXNfcmVnaXN0ZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDNDCisKKyNkZWZpbmUgQ09NTU9OX1JFR19PX0FQUFNfTldfU0VNQVBIT1JFMSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNDAKKworI2RlZmluZSBDT01NT05fUkVHX09fQVBQU19OV19TRU1BUEhPUkUyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA0NAorCisjZGVmaW5lIENPTU1PTl9SRUdfT19BUFBTX05XX1NFTUFQSE9SRTMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDQ4CisKKyNkZWZpbmUgQ09NTU9OX1JFR19PX0FQUFNfTldfU0VNQVBIT1JFNCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNEMKKworI2RlZmluZSBDT01NT05fUkVHX09fQVBQU19OV19TRU1BUEhPUkU1IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA1MAorCisjZGVmaW5lIENPTU1PTl9SRUdfT19BUFBTX05XX1NFTUFQSE9SRTYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDU0CisKKyNkZWZpbmUgQ09NTU9OX1JFR19PX0FQUFNfTldfU0VNQVBIT1JFNyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNTgKKworI2RlZmluZSBDT01NT05fUkVHX09fQVBQU19OV19TRU1BUEhPUkU4IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA1QworCisjZGVmaW5lIENPTU1PTl9SRUdfT19BUFBTX05XX1NFTUFQSE9SRTkgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDYwCisKKyNkZWZpbmUgQ09NTU9OX1JFR19PX0FQUFNfTldfU0VNQVBIT1JFMTAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDY0CisKKyNkZWZpbmUgQ09NTU9OX1JFR19PX0FQUFNfTldfU0VNQVBIT1JFMTEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDY4CisKKyNkZWZpbmUgQ09NTU9OX1JFR19PX0FQUFNfTldfU0VNQVBIT1JFMTIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDZDCisKKyNkZWZpbmUgQ09NTU9OX1JFR19PX0FQUFNfU0VNQVBQSE9SRV9QRU5EIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA3MAorCisjZGVmaW5lIENPTU1PTl9SRUdfT19OV19TRU1BUFBIT1JFX1BFTkQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDc0CisKKyNkZWZpbmUgQ09NTU9OX1JFR19PX1NFTUFQSE9SRV9TVEFUVVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDc4CisKKyNkZWZpbmUgQ09NTU9OX1JFR19PX0lETUVNX1RJTV9VcGRhdGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDdDCisKKyNkZWZpbmUgQ09NTU9OX1JFR19PX0ZQR0FfUk9NX1dSX0VOIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA4MAorCisjZGVmaW5lIENPTU1PTl9SRUdfT19OV19JTlRfTUFTSyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwODQKKworI2RlZmluZSBDT01NT05fUkVHX09fTldfSU5UX01BU0tfU0VUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA4OAorCisjZGVmaW5lIENPTU1PTl9SRUdfT19OV19JTlRfTUFTS19DTFIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDhDCisKKyNkZWZpbmUgQ09NTU9OX1JFR19PX05XX0lOVF9TVFNfQ0xSIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA5MAorCisjZGVmaW5lIENPTU1PTl9SRUdfT19OV19JTlRfQUNLIDB4MDAwMDAwOTQKKyNkZWZpbmUgQ09NTU9OX1JFR19PX05XX0lOVF9UUklHIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA5OAorCisjZGVmaW5lIENPTU1PTl9SRUdfT19OV19JTlRfU1RTX01BU0tFRCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwOUMKKworI2RlZmluZSBDT01NT05fUkVHX09fTldfSU5UX1NUU19SQVcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEEwCisKKyNkZWZpbmUgQ09NTU9OX1JFR19PX0FQUFNfSU5UX01BU0sgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEE0CisKKyNkZWZpbmUgQ09NTU9OX1JFR19PX0FQUFNfSU5UX01BU0tfU0VUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBBOAorCisjZGVmaW5lIENPTU1PTl9SRUdfT19BUFBTX0lOVF9NQVNLX0NMUiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQUMKKworI2RlZmluZSBDT01NT05fUkVHX09fQVBQU19JTlRfU1RTX0NMUiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQjAKKworI2RlZmluZSBDT01NT05fUkVHX09fQVBQU19JTlRfQUNLIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBCNAorCisjZGVmaW5lIENPTU1PTl9SRUdfT19BUFBTX0lOVF9UUklHIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBCOAorCisjZGVmaW5lIENPTU1PTl9SRUdfT19BUFBTX0lOVF9TVFNfTUFTS0VEIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBCQworCisjZGVmaW5lIENPTU1PTl9SRUdfT19BUFBTX0lOVF9TVFNfUkFXIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBDMAorCisjZGVmaW5lIENPTU1PTl9SRUdfT19JRE1FTV9USU1fVXBkYXRlZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQzQKKworI2RlZmluZSBDT01NT05fUkVHX09fQVBQU19HUElPX1RSSUdfRU4gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEM4CisKKyNkZWZpbmUgQ09NTU9OX1JFR19PX0VNVV9ERUJVR19SRUcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMENDCisKKyNkZWZpbmUgQ09NTU9OX1JFR19PX1NFTUFQSE9SRV9TVEFUVVMyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBEMAorCisjZGVmaW5lIENPTU1PTl9SRUdfT19TRU1BUEhPUkVfUFJFVl9PV05FUjEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEQ0CisKKyNkZWZpbmUgQ09NTU9OX1JFR19PX1NFTUFQSE9SRV9QUkVWX09XTkVSMiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRDgKKworCisKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19JMkNfUHJvcGVydGllc19SZWdpc3RlciByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX0kyQ19Qcm9wZXJ0aWVzX1JlZ2lzdGVyX0kyQ19Qcm9wZXJ0aWVzX1JlZ2lzdGVyX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAzICAvLyDigKIgRWFjaCBzZW1hcGhvcmUgcmVnaXN0ZXIgaXMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMiBiaXQuIOKAoiBXaGVuIHRoaXMgcmVnaXN0ZXIgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIDLigJliMDEg4oCTIEFwcHMgaGF2ZSBhY2Nlc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHdoZW4gc2V0IHRvIDLigJliMTAg4oCTIE5XIGhhdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWNjZXNzLiDigKIgSWRlYWxseSBib3RoIHRoZSBtYXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FuIG1vZGlmeSBhbnkgb2YgdGhpcyAyIGJpdCwgYnV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gYXBwcyB3aWxsIHdyaXRlIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMSBvciAy4oCZYjAwIHRvIHRoaXMgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIG53IHdpbGwgd3JpdGUgb25seSAy4oCZYjEwIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDLigJliMDAuIOKAoiBJbXBsZW1lbnRhdGlvbiBpcyB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFueSBvZiB0aGUgYml0IG9mIHRoaXMgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgc2V0LCBvbmx5IG5leHQgd3JpdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb3dlZHZpcyAy4oCZYjAwIOKAkyBBZ2FpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGlzIG9uZSBtYXN0ZXIgd2lsbCBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdGUgMuKAmWIwMCBpZiBvdGhlciBpcyBhbHJlYWR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhvbGRpbmcgdGhlIHNlbWFwaG9yZS4KKworI2RlZmluZSBDT01NT05fUkVHX0kyQ19Qcm9wZXJ0aWVzX1JlZ2lzdGVyX0kyQ19Qcm9wZXJ0aWVzX1JlZ2lzdGVyX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19TUElfUHJvcGVydGllc19SZWdpc3RlciByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX1NQSV9Qcm9wZXJ0aWVzX1JlZ2lzdGVyX1NQSV9Qcm9wZXJ0aWVzX1JlZ2lzdGVyX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAzICAvLyDigKIgRWFjaCBzZW1hcGhvcmUgcmVnaXN0ZXIgaXMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMiBiaXQuIOKAoiBXaGVuIHRoaXMgcmVnaXN0ZXIgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIDLigJliMDEg4oCTIEFwcHMgaGF2ZSBhY2Nlc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHdoZW4gc2V0IHRvIDLigJliMTAg4oCTIE5XIGhhdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWNjZXNzLiDigKIgSWRlYWxseSBib3RoIHRoZSBtYXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FuIG1vZGlmeSBhbnkgb2YgdGhpcyAyIGJpdCwgYnV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gYXBwcyB3aWxsIHdyaXRlIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMSBvciAy4oCZYjAwIHRvIHRoaXMgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIG53IHdpbGwgd3JpdGUgb25seSAy4oCZYjEwIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDLigJliMDAuIOKAoiBJbXBsZW1lbnRhdGlvbiBpcyB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFueSBvZiB0aGUgYml0IG9mIHRoaXMgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgc2V0LCBvbmx5IG5leHQgd3JpdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb3dlZHZpcyAy4oCZYjAwIOKAkyBBZ2FpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGlzIG9uZSBtYXN0ZXIgd2lsbCBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdGUgMuKAmWIwMCBpZiBvdGhlciBpcyBhbHJlYWR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhvbGRpbmcgdGhlIHNlbWFwaG9yZS4KKworI2RlZmluZSBDT01NT05fUkVHX1NQSV9Qcm9wZXJ0aWVzX1JlZ2lzdGVyX1NQSV9Qcm9wZXJ0aWVzX1JlZ2lzdGVyX1MgMAorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQ09NTU9OX1JFR19PX0FQUFNfc2hfcmVzb3VyY2VfSW50ZXJydXB0X2VuYWJsZSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX0FQUFNfc2hfcmVzb3VyY2VfSW50ZXJydXB0X2VuYWJsZV9BUFBTX3NoX3Jlc291cmNlX0ludGVycnVwdF9lbmFibGVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMEYgIC8vIEludGVycnVwdCBlbmFibGUgQVBQUyBiaXQgMCAtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuICcxJyBlbmFibGUgSTJDIGludGVycnVwdCBiaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMSAtPiB3aGVuICcxJyBlbmFibGUgU1BJCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVycnVwdCBiaXQgMyAtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuICcxJyBlbmFibGUgR1BJTyBpbnRlcnJ1cHQKKworI2RlZmluZSBDT01NT05fUkVHX0FQUFNfc2hfcmVzb3VyY2VfSW50ZXJydXB0X2VuYWJsZV9BUFBTX3NoX3Jlc291cmNlX0ludGVycnVwdF9lbmFibGVfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQ09NTU9OX1JFR19PX0FQUFNfc2hfcmVzb3VyY2VfSW50ZXJydXB0X3N0YXR1cyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX0FQUFNfc2hfcmVzb3VyY2VfSW50ZXJydXB0X3N0YXR1c19BUFBTX3NoX3Jlc291cmNlX0ludGVycnVwdF9zdGF0dXNfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMEYgIC8vIEludGVycnVwdCBlbmFibGUgQVBQUyBiaXQgMCAtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuICcxJyBlbmFibGUgSTJDIGludGVycnVwdCBiaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMSAtPiB3aGVuICcxJyBlbmFibGUgU1BJCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVycnVwdCBiaXQgMyAtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuICcxJyBlbmFibGUgR1BJTyBpbnRlcnJ1cHQKKworI2RlZmluZSBDT01NT05fUkVHX0FQUFNfc2hfcmVzb3VyY2VfSW50ZXJydXB0X3N0YXR1c19BUFBTX3NoX3Jlc291cmNlX0ludGVycnVwdF9zdGF0dXNfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQ09NTU9OX1JFR19PX05XUF9zaF9yZXNvdXJjZV9JbnRlcnJ1cHRfZW5hYmxlIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIENPTU1PTl9SRUdfTldQX3NoX3Jlc291cmNlX0ludGVycnVwdF9lbmFibGVfTldQX3NoX3Jlc291cmNlX0ludGVycnVwdF9lbmFibGVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMEYgIC8vIEludGVycnVwdCBlbmFibGUgTldQIGJpdCAwIC0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gJzEnIGVuYWJsZSBJMkMgaW50ZXJydXB0IGJpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxIC0+IHdoZW4gJzEnIGVuYWJsZSBTUEkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJydXB0IGJpdCAzIC0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gJzEnIGVuYWJsZSBHUElPIGludGVycnVwdAorCisjZGVmaW5lIENPTU1PTl9SRUdfTldQX3NoX3Jlc291cmNlX0ludGVycnVwdF9lbmFibGVfTldQX3NoX3Jlc291cmNlX0ludGVycnVwdF9lbmFibGVfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQ09NTU9OX1JFR19PX05XUF9zaF9yZXNvdXJjZV9JbnRlcnJ1cHRfc3RhdHVzIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIENPTU1PTl9SRUdfTldQX3NoX3Jlc291cmNlX0ludGVycnVwdF9zdGF0dXNfTldQX3NoX3Jlc291cmNlX0ludGVycnVwdF9zdGF0dXNfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMEYgIC8vIEludGVycnVwdCBlbmFibGUgTldQIGJpdCAwIC0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gJzEnIGVuYWJsZSBJMkMgaW50ZXJydXB0IGJpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxIC0+IHdoZW4gJzEnIGVuYWJsZSBTUEkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJydXB0IGJpdCAzIC0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gJzEnIGVuYWJsZSBHUElPIGludGVycnVwdAorCisjZGVmaW5lIENPTU1PTl9SRUdfTldQX3NoX3Jlc291cmNlX0ludGVycnVwdF9zdGF0dXNfTldQX3NoX3Jlc291cmNlX0ludGVycnVwdF9zdGF0dXNfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQ09NTU9OX1JFR19PX0ZsYXNoX2N0cmxfcmVnIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIENPTU1PTl9SRUdfRmxhc2hfY3RybF9yZWdfRmxhc2hfY3RybF9yZWdfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDMgIC8vIOKAoiBFYWNoIHNlbWFwaG9yZSByZWdpc3RlciBpcyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAyIGJpdC4g4oCiIFdoZW4gdGhpcyByZWdpc3RlciBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gMuKAmWIwMSDigJMgQXBwcyBoYXZlIGFjY2VzcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgd2hlbiBzZXQgdG8gMuKAmWIxMCDigJMgTlcgaGF2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY2Nlc3MuIOKAoiBJZGVhbGx5IGJvdGggdGhlIG1hc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYW4gbW9kaWZ5IGFueSBvZiB0aGlzIDIgYml0LCBidXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzdW1wdGlvbiBhcHBzIHdpbGwgd3JpdGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAy4oCZYjAxIG9yIDLigJliMDAgdG8gdGhpcyByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgbncgd2lsbCB3cml0ZSBvbmx5IDLigJliMTAgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMC4g4oCiIEltcGxlbWVudGF0aW9uIGlzIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW55IG9mIHRoZSBiaXQgb2YgdGhpcyByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBzZXQsIG9ubHkgbmV4dCB3cml0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGxvd2VkdmlzIDLigJliMDAg4oCTIEFnYWluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gaXMgb25lIG1hc3RlciB3aWxsIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3cml0ZSAy4oCZYjAwIGlmIG90aGVyIGlzIGFscmVhZHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaG9sZGluZyB0aGUgc2VtYXBob3JlLgorCisjZGVmaW5lIENPTU1PTl9SRUdfRmxhc2hfY3RybF9yZWdfRmxhc2hfY3RybF9yZWdfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQ09NTU9OX1JFR19PX0J1c19tYXRyaXhfTTBfc2VnbWVudF9hY2Nlc3NfY29uZmlnIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIENPTU1PTl9SRUdfQnVzX21hdHJpeF9NMF9zZWdtZW50X2FjY2Vzc19jb25maWdfQnVzX21hdHJpeF9NMF9zZWdtZW50X2FjY2Vzc19jb25maWdfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwM0ZGRkYgIC8vIE1hc3RlciAwIGNvbnRyb2wgd29yZCBtYXRyaXggdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWFjaCBzZWdtZW50LiBUaWVvZmYuIEJpdCB2YWx1ZSAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluZGljYXRlcyBzZWdtZW50IGlzIGFjY2VzYWJsZS4KKworI2RlZmluZSBDT01NT05fUkVHX0J1c19tYXRyaXhfTTBfc2VnbWVudF9hY2Nlc3NfY29uZmlnX0J1c19tYXRyaXhfTTBfc2VnbWVudF9hY2Nlc3NfY29uZmlnX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19CdXNfbWF0cml4X00xX3NlZ21lbnRfYWNjZXNzX2NvbmZpZyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX0J1c19tYXRyaXhfTTFfc2VnbWVudF9hY2Nlc3NfY29uZmlnX0J1c19tYXRyaXhfTTFfc2VnbWVudF9hY2Nlc3NfY29uZmlnX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDNGRkZGICAvLyBNYXN0ZXIgMSBjb250cm9sIHdvcmQgbWF0cml4IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVhY2ggc2VnbWVudC4gVGllb2ZmLiBCaXQgdmFsdWUgMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmRpY2F0ZXMgc2VnbWVudCBpcyBhY2Nlc2FibGUuCisKKyNkZWZpbmUgQ09NTU9OX1JFR19CdXNfbWF0cml4X00xX3NlZ21lbnRfYWNjZXNzX2NvbmZpZ19CdXNfbWF0cml4X00xX3NlZ21lbnRfYWNjZXNzX2NvbmZpZ19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBDT01NT05fUkVHX09fQnVzX21hdHJpeF9NMl9zZWdtZW50X2FjY2Vzc19jb25maWcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQ09NTU9OX1JFR19CdXNfbWF0cml4X00yX3NlZ21lbnRfYWNjZXNzX2NvbmZpZ19CdXNfbWF0cml4X00yX3NlZ21lbnRfYWNjZXNzX2NvbmZpZ19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAzRkZGRiAgLy8gTWFzdGVyIDIgY29udHJvbCB3b3JkIG1hdHJpeCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlYWNoIHNlZ21lbnQuIFRpZW9mZi4gQml0IHZhbHVlIDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5kaWNhdGVzIHNlZ21lbnQgaXMgYWNjZXNhYmxlLgorCisjZGVmaW5lIENPTU1PTl9SRUdfQnVzX21hdHJpeF9NMl9zZWdtZW50X2FjY2Vzc19jb25maWdfQnVzX21hdHJpeF9NMl9zZWdtZW50X2FjY2Vzc19jb25maWdfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQ09NTU9OX1JFR19PX0J1c19tYXRyaXhfTTNfc2VnbWVudF9hY2Nlc3NfY29uZmlnIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIENPTU1PTl9SRUdfQnVzX21hdHJpeF9NM19zZWdtZW50X2FjY2Vzc19jb25maWdfQnVzX21hdHJpeF9NM19zZWdtZW50X2FjY2Vzc19jb25maWdfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwM0ZGRkYgIC8vIE1hc3RlciAzIGNvbnRyb2wgd29yZCBtYXRyaXggdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWFjaCBzZWdtZW50LiBUaWVvZmYuIEJpdCB2YWx1ZSAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluZGljYXRlcyBzZWdtZW50IGlzIGFjY2VzYWJsZS4KKworI2RlZmluZSBDT01NT05fUkVHX0J1c19tYXRyaXhfTTNfc2VnbWVudF9hY2Nlc3NfY29uZmlnX0J1c19tYXRyaXhfTTNfc2VnbWVudF9hY2Nlc3NfY29uZmlnX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19CdXNfbWF0cml4X000X3NlZ21lbnRfYWNjZXNzX2NvbmZpZyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX0J1c19tYXRyaXhfTTRfc2VnbWVudF9hY2Nlc3NfY29uZmlnX0J1c19tYXRyaXhfTTRfc2VnbWVudF9hY2Nlc3NfY29uZmlnX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDNGRkZGICAvLyBNYXN0ZXIgNCBjb250cm9sIHdvcmQgbWF0cml4IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVhY2ggc2VnbWVudC4gVGllb2ZmLiBCaXQgdmFsdWUgMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmRpY2F0ZXMgc2VnbWVudCBpcyBhY2Nlc2FibGUuCisKKyNkZWZpbmUgQ09NTU9OX1JFR19CdXNfbWF0cml4X000X3NlZ21lbnRfYWNjZXNzX2NvbmZpZ19CdXNfbWF0cml4X000X3NlZ21lbnRfYWNjZXNzX2NvbmZpZ19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBDT01NT05fUkVHX09fQnVzX21hdHJpeF9NNV9zZWdtZW50X2FjY2Vzc19jb25maWcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQ09NTU9OX1JFR19CdXNfbWF0cml4X001X3NlZ21lbnRfYWNjZXNzX2NvbmZpZ19CdXNfbWF0cml4X001X3NlZ21lbnRfYWNjZXNzX2NvbmZpZ19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAzRkZGRiAgLy8gTWFzdGVyIDUgY29udHJvbCB3b3JkIG1hdHJpeCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlYWNoIHNlZ21lbnQuIFRpZW9mZi4gQml0IHZhbHVlIDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5kaWNhdGVzIHNlZ21lbnQgaXMgYWNjZXNhYmxlLgorCisjZGVmaW5lIENPTU1PTl9SRUdfQnVzX21hdHJpeF9NNV9zZWdtZW50X2FjY2Vzc19jb25maWdfQnVzX21hdHJpeF9NNV9zZWdtZW50X2FjY2Vzc19jb25maWdfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQ09NTU9OX1JFR19PX0dQSU9fcHJvcGVydGllc19yZWdpc3RlciByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX0dQSU9fcHJvcGVydGllc19yZWdpc3Rlcl9HUElPX3Byb3BlcnRpZXNfcmVnaXN0ZXJfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAzRkYgIC8vIFNoYXJlZCBHUElPIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIuIEJpdCBbMTowXSB0byBjb25maWd1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTzAgQml0IFszOjJdIHRvIGNvbmZpZ3VyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPMSBCaXQgWzU6NF0gdG8gY29uZmlndXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU8yIEJpdCBbNzo2XSB0byBjb25maWd1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTzMgQml0IFs5OjhdIHRvIGNvbmZpZ3VyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPNCBlYWNoIEdQSU8gY2FuIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluZGl2aWR1bGx5IHNlbGVjdGVkLiBXaGVuIOKAnDAw4oA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU8gaXMgZnJlZSByZXNvdXJjZS4gV2hlbiDigJwwMeKAPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPIGlzIEFQUFMgcmVzb3VyY2UuIFdoZW4g4oCcMTDigD8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTyBpcyBOV1AgcmVzb3VyY2UuIFdyaXRpbmcgMTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG9lc250IGhhdmUgYW55IGFmZmVjdCwgaS5lLiBJZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvbmUgd3JpdGUgb25seSByZWxldmFudCBncGlvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNlbWFwaG9yZSBhbmQgb3RoZXIgYml0cyBhcmUgMXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0J2xsIG5vdCBkaXN0dXJiIHRoZSBvdGhlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZW1hcGhvcmUgYml0cy4gRm9yIGV4YW1wbGUgOiBTYXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgTlcgd2FudHMgdG8gdGFrZSBjb250cm9sIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdwaW8tMSwgb25lIHNob3VsZCB3cml0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxMCdiMTFfMTExMV8xMDExIGFuZCBpZiBvbmUgd2FudHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gcmVsZWFzZSBpdCB3cml0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxMCdiMTFfMTExMV8wMDExLgorCisjZGVmaW5lIENPTU1PTl9SRUdfR1BJT19wcm9wZXJ0aWVzX3JlZ2lzdGVyX0dQSU9fcHJvcGVydGllc19yZWdpc3Rlcl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBDT01NT05fUkVHX09fQVBQU19OV19TRU1BUEhPUkUxIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIENPTU1PTl9SRUdfQVBQU19OV19TRU1BUEhPUkUxX0FQUFNfTldfU0VNQVBIT1JFMV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8g4oCiIEVhY2ggc2VtYXBob3JlIHJlZ2lzdGVyIGlzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDIgYml0LiDigKIgV2hlbiB0aGlzIHJlZ2lzdGVyIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0byAy4oCZYjAxIOKAkyBBcHBzIGhhdmUgYWNjZXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCB3aGVuIHNldCB0byAy4oCZYjEwIOKAkyBOVyBoYXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjY2Vzcy4g4oCiIElkZWFsbHkgYm90aCB0aGUgbWFzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbiBtb2RpZnkgYW55IG9mIHRoaXMgMiBiaXQsIGJ1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGFwcHMgd2lsbCB3cml0ZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDLigJliMDEgb3IgMuKAmWIwMCB0byB0aGlzIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBudyB3aWxsIHdyaXRlIG9ubHkgMuKAmWIxMCBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAy4oCZYjAwLiDigKIgSW1wbGVtZW50YXRpb24gaXMgd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbnkgb2YgdGhlIGJpdCBvZiB0aGlzIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIHNldCwgb25seSBuZXh0IHdyaXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsbG93ZWR2aXMgMuKAmWIwMCDigJMgQWdhaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzdW1wdGlvbiBpcyBvbmUgbWFzdGVyIHdpbGwgbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyaXRlIDLigJliMDAgaWYgb3RoZXIgaXMgYWxyZWFkeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBob2xkaW5nIHRoZSBzZW1hcGhvcmUuCisKKyNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX05XX1NFTUFQSE9SRTFfQVBQU19OV19TRU1BUEhPUkUxX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19BUFBTX05XX1NFTUFQSE9SRTIgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX05XX1NFTUFQSE9SRTJfQVBQU19OV19TRU1BUEhPUkUyX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyDigKIgRWFjaCBzZW1hcGhvcmUgcmVnaXN0ZXIgaXMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMiBiaXQuIOKAoiBXaGVuIHRoaXMgcmVnaXN0ZXIgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIDLigJliMDEg4oCTIEFwcHMgaGF2ZSBhY2Nlc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHdoZW4gc2V0IHRvIDLigJliMTAg4oCTIE5XIGhhdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWNjZXNzLiDigKIgSWRlYWxseSBib3RoIHRoZSBtYXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FuIG1vZGlmeSBhbnkgb2YgdGhpcyAyIGJpdCwgYnV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gYXBwcyB3aWxsIHdyaXRlIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMSBvciAy4oCZYjAwIHRvIHRoaXMgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIG53IHdpbGwgd3JpdGUgb25seSAy4oCZYjEwIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDLigJliMDAuIOKAoiBJbXBsZW1lbnRhdGlvbiBpcyB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFueSBvZiB0aGUgYml0IG9mIHRoaXMgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgc2V0LCBvbmx5IG5leHQgd3JpdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb3dlZHZpcyAy4oCZYjAwIOKAkyBBZ2FpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGlzIG9uZSBtYXN0ZXIgd2lsbCBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdGUgMuKAmWIwMCBpZiBvdGhlciBpcyBhbHJlYWR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhvbGRpbmcgdGhlIHNlbWFwaG9yZS4KKworI2RlZmluZSBDT01NT05fUkVHX0FQUFNfTldfU0VNQVBIT1JFMl9BUFBTX05XX1NFTUFQSE9SRTJfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQ09NTU9OX1JFR19PX0FQUFNfTldfU0VNQVBIT1JFMyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX0FQUFNfTldfU0VNQVBIT1JFM19BUFBTX05XX1NFTUFQSE9SRTNfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIOKAoiBFYWNoIHNlbWFwaG9yZSByZWdpc3RlciBpcyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAyIGJpdC4g4oCiIFdoZW4gdGhpcyByZWdpc3RlciBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gMuKAmWIwMSDigJMgQXBwcyBoYXZlIGFjY2VzcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgd2hlbiBzZXQgdG8gMuKAmWIxMCDigJMgTlcgaGF2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY2Nlc3MuIOKAoiBJZGVhbGx5IGJvdGggdGhlIG1hc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYW4gbW9kaWZ5IGFueSBvZiB0aGlzIDIgYml0LCBidXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzdW1wdGlvbiBhcHBzIHdpbGwgd3JpdGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAy4oCZYjAxIG9yIDLigJliMDAgdG8gdGhpcyByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgbncgd2lsbCB3cml0ZSBvbmx5IDLigJliMTAgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMC4g4oCiIEltcGxlbWVudGF0aW9uIGlzIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW55IG9mIHRoZSBiaXQgb2YgdGhpcyByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBzZXQsIG9ubHkgbmV4dCB3cml0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGxvd2VkdmlzIDLigJliMDAg4oCTIEFnYWluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gaXMgb25lIG1hc3RlciB3aWxsIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3cml0ZSAy4oCZYjAwIGlmIG90aGVyIGlzIGFscmVhZHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaG9sZGluZyB0aGUgc2VtYXBob3JlLgorCisjZGVmaW5lIENPTU1PTl9SRUdfQVBQU19OV19TRU1BUEhPUkUzX0FQUFNfTldfU0VNQVBIT1JFM19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBDT01NT05fUkVHX09fQVBQU19OV19TRU1BUEhPUkU0IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIENPTU1PTl9SRUdfQVBQU19OV19TRU1BUEhPUkU0X0FQUFNfTldfU0VNQVBIT1JFNF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8g4oCiIEVhY2ggc2VtYXBob3JlIHJlZ2lzdGVyIGlzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDIgYml0LiDigKIgV2hlbiB0aGlzIHJlZ2lzdGVyIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0byAy4oCZYjAxIOKAkyBBcHBzIGhhdmUgYWNjZXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCB3aGVuIHNldCB0byAy4oCZYjEwIOKAkyBOVyBoYXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjY2Vzcy4g4oCiIElkZWFsbHkgYm90aCB0aGUgbWFzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbiBtb2RpZnkgYW55IG9mIHRoaXMgMiBiaXQsIGJ1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGFwcHMgd2lsbCB3cml0ZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDLigJliMDEgb3IgMuKAmWIwMCB0byB0aGlzIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBudyB3aWxsIHdyaXRlIG9ubHkgMuKAmWIxMCBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAy4oCZYjAwLiDigKIgSW1wbGVtZW50YXRpb24gaXMgd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbnkgb2YgdGhlIGJpdCBvZiB0aGlzIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIHNldCwgb25seSBuZXh0IHdyaXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsbG93ZWR2aXMgMuKAmWIwMCDigJMgQWdhaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzdW1wdGlvbiBpcyBvbmUgbWFzdGVyIHdpbGwgbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyaXRlIDLigJliMDAgaWYgb3RoZXIgaXMgYWxyZWFkeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBob2xkaW5nIHRoZSBzZW1hcGhvcmUuCisKKyNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX05XX1NFTUFQSE9SRTRfQVBQU19OV19TRU1BUEhPUkU0X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19BUFBTX05XX1NFTUFQSE9SRTUgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX05XX1NFTUFQSE9SRTVfQVBQU19OV19TRU1BUEhPUkU1X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyDigKIgRWFjaCBzZW1hcGhvcmUgcmVnaXN0ZXIgaXMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMiBiaXQuIOKAoiBXaGVuIHRoaXMgcmVnaXN0ZXIgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIDLigJliMDEg4oCTIEFwcHMgaGF2ZSBhY2Nlc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHdoZW4gc2V0IHRvIDLigJliMTAg4oCTIE5XIGhhdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWNjZXNzLiDigKIgSWRlYWxseSBib3RoIHRoZSBtYXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FuIG1vZGlmeSBhbnkgb2YgdGhpcyAyIGJpdCwgYnV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gYXBwcyB3aWxsIHdyaXRlIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMSBvciAy4oCZYjAwIHRvIHRoaXMgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIG53IHdpbGwgd3JpdGUgb25seSAy4oCZYjEwIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDLigJliMDAuIOKAoiBJbXBsZW1lbnRhdGlvbiBpcyB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFueSBvZiB0aGUgYml0IG9mIHRoaXMgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgc2V0LCBvbmx5IG5leHQgd3JpdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb3dlZHZpcyAy4oCZYjAwIOKAkyBBZ2FpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGlzIG9uZSBtYXN0ZXIgd2lsbCBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdGUgMuKAmWIwMCBpZiBvdGhlciBpcyBhbHJlYWR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhvbGRpbmcgdGhlIHNlbWFwaG9yZS4KKworI2RlZmluZSBDT01NT05fUkVHX0FQUFNfTldfU0VNQVBIT1JFNV9BUFBTX05XX1NFTUFQSE9SRTVfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQ09NTU9OX1JFR19PX0FQUFNfTldfU0VNQVBIT1JFNiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX0FQUFNfTldfU0VNQVBIT1JFNl9BUFBTX05XX1NFTUFQSE9SRTZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIOKAoiBFYWNoIHNlbWFwaG9yZSByZWdpc3RlciBpcyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAyIGJpdC4g4oCiIFdoZW4gdGhpcyByZWdpc3RlciBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gMuKAmWIwMSDigJMgQXBwcyBoYXZlIGFjY2VzcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgd2hlbiBzZXQgdG8gMuKAmWIxMCDigJMgTlcgaGF2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY2Nlc3MuIOKAoiBJZGVhbGx5IGJvdGggdGhlIG1hc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYW4gbW9kaWZ5IGFueSBvZiB0aGlzIDIgYml0LCBidXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzdW1wdGlvbiBhcHBzIHdpbGwgd3JpdGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAy4oCZYjAxIG9yIDLigJliMDAgdG8gdGhpcyByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgbncgd2lsbCB3cml0ZSBvbmx5IDLigJliMTAgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMC4g4oCiIEltcGxlbWVudGF0aW9uIGlzIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW55IG9mIHRoZSBiaXQgb2YgdGhpcyByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBzZXQsIG9ubHkgbmV4dCB3cml0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGxvd2VkdmlzIDLigJliMDAg4oCTIEFnYWluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gaXMgb25lIG1hc3RlciB3aWxsIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3cml0ZSAy4oCZYjAwIGlmIG90aGVyIGlzIGFscmVhZHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaG9sZGluZyB0aGUgc2VtYXBob3JlLgorCisjZGVmaW5lIENPTU1PTl9SRUdfQVBQU19OV19TRU1BUEhPUkU2X0FQUFNfTldfU0VNQVBIT1JFNl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBDT01NT05fUkVHX09fQVBQU19OV19TRU1BUEhPUkU3IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIENPTU1PTl9SRUdfQVBQU19OV19TRU1BUEhPUkU3X0FQUFNfTldfU0VNQVBIT1JFN19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8g4oCiIEVhY2ggc2VtYXBob3JlIHJlZ2lzdGVyIGlzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDIgYml0LiDigKIgV2hlbiB0aGlzIHJlZ2lzdGVyIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0byAy4oCZYjAxIOKAkyBBcHBzIGhhdmUgYWNjZXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCB3aGVuIHNldCB0byAy4oCZYjEwIOKAkyBOVyBoYXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjY2Vzcy4g4oCiIElkZWFsbHkgYm90aCB0aGUgbWFzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbiBtb2RpZnkgYW55IG9mIHRoaXMgMiBiaXQsIGJ1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGFwcHMgd2lsbCB3cml0ZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDLigJliMDEgb3IgMuKAmWIwMCB0byB0aGlzIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBudyB3aWxsIHdyaXRlIG9ubHkgMuKAmWIxMCBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAy4oCZYjAwLiDigKIgSW1wbGVtZW50YXRpb24gaXMgd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbnkgb2YgdGhlIGJpdCBvZiB0aGlzIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIHNldCwgb25seSBuZXh0IHdyaXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsbG93ZWR2aXMgMuKAmWIwMCDigJMgQWdhaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzdW1wdGlvbiBpcyBvbmUgbWFzdGVyIHdpbGwgbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyaXRlIDLigJliMDAgaWYgb3RoZXIgaXMgYWxyZWFkeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBob2xkaW5nIHRoZSBzZW1hcGhvcmUuCisKKyNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX05XX1NFTUFQSE9SRTdfQVBQU19OV19TRU1BUEhPUkU3X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19BUFBTX05XX1NFTUFQSE9SRTggcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX05XX1NFTUFQSE9SRThfQVBQU19OV19TRU1BUEhPUkU4X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyDigKIgRWFjaCBzZW1hcGhvcmUgcmVnaXN0ZXIgaXMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMiBiaXQuIOKAoiBXaGVuIHRoaXMgcmVnaXN0ZXIgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIDLigJliMDEg4oCTIEFwcHMgaGF2ZSBhY2Nlc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHdoZW4gc2V0IHRvIDLigJliMTAg4oCTIE5XIGhhdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWNjZXNzLiDigKIgSWRlYWxseSBib3RoIHRoZSBtYXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FuIG1vZGlmeSBhbnkgb2YgdGhpcyAyIGJpdCwgYnV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gYXBwcyB3aWxsIHdyaXRlIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMSBvciAy4oCZYjAwIHRvIHRoaXMgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIG53IHdpbGwgd3JpdGUgb25seSAy4oCZYjEwIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDLigJliMDAuIOKAoiBJbXBsZW1lbnRhdGlvbiBpcyB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFueSBvZiB0aGUgYml0IG9mIHRoaXMgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgc2V0LCBvbmx5IG5leHQgd3JpdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb3dlZHZpcyAy4oCZYjAwIOKAkyBBZ2FpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGlzIG9uZSBtYXN0ZXIgd2lsbCBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdGUgMuKAmWIwMCBpZiBvdGhlciBpcyBhbHJlYWR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhvbGRpbmcgdGhlIHNlbWFwaG9yZS4KKworI2RlZmluZSBDT01NT05fUkVHX0FQUFNfTldfU0VNQVBIT1JFOF9BUFBTX05XX1NFTUFQSE9SRThfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQ09NTU9OX1JFR19PX0FQUFNfTldfU0VNQVBIT1JFOSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX0FQUFNfTldfU0VNQVBIT1JFOV9BUFBTX05XX1NFTUFQSE9SRTlfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIOKAoiBFYWNoIHNlbWFwaG9yZSByZWdpc3RlciBpcyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAyIGJpdC4g4oCiIFdoZW4gdGhpcyByZWdpc3RlciBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gMuKAmWIwMSDigJMgQXBwcyBoYXZlIGFjY2VzcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgd2hlbiBzZXQgdG8gMuKAmWIxMCDigJMgTlcgaGF2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY2Nlc3MuIOKAoiBJZGVhbGx5IGJvdGggdGhlIG1hc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYW4gbW9kaWZ5IGFueSBvZiB0aGlzIDIgYml0LCBidXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzdW1wdGlvbiBhcHBzIHdpbGwgd3JpdGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAy4oCZYjAxIG9yIDLigJliMDAgdG8gdGhpcyByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgbncgd2lsbCB3cml0ZSBvbmx5IDLigJliMTAgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMC4g4oCiIEltcGxlbWVudGF0aW9uIGlzIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW55IG9mIHRoZSBiaXQgb2YgdGhpcyByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBzZXQsIG9ubHkgbmV4dCB3cml0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGxvd2VkdmlzIDLigJliMDAg4oCTIEFnYWluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gaXMgb25lIG1hc3RlciB3aWxsIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3cml0ZSAy4oCZYjAwIGlmIG90aGVyIGlzIGFscmVhZHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaG9sZGluZyB0aGUgc2VtYXBob3JlLgorCisjZGVmaW5lIENPTU1PTl9SRUdfQVBQU19OV19TRU1BUEhPUkU5X0FQUFNfTldfU0VNQVBIT1JFOV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBDT01NT05fUkVHX09fQVBQU19OV19TRU1BUEhPUkUxMCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX0FQUFNfTldfU0VNQVBIT1JFMTBfQVBQU19OV19TRU1BUEhPUkUxMF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8g4oCiIEVhY2ggc2VtYXBob3JlIHJlZ2lzdGVyIGlzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDIgYml0LiDigKIgV2hlbiB0aGlzIHJlZ2lzdGVyIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0byAy4oCZYjAxIOKAkyBBcHBzIGhhdmUgYWNjZXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCB3aGVuIHNldCB0byAy4oCZYjEwIOKAkyBOVyBoYXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjY2Vzcy4g4oCiIElkZWFsbHkgYm90aCB0aGUgbWFzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbiBtb2RpZnkgYW55IG9mIHRoaXMgMiBiaXQsIGJ1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGFwcHMgd2lsbCB3cml0ZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDLigJliMDEgb3IgMuKAmWIwMCB0byB0aGlzIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBudyB3aWxsIHdyaXRlIG9ubHkgMuKAmWIxMCBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAy4oCZYjAwLiDigKIgSW1wbGVtZW50YXRpb24gaXMgd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbnkgb2YgdGhlIGJpdCBvZiB0aGlzIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIHNldCwgb25seSBuZXh0IHdyaXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsbG93ZWR2aXMgMuKAmWIwMCDigJMgQWdhaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzdW1wdGlvbiBpcyBvbmUgbWFzdGVyIHdpbGwgbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyaXRlIDLigJliMDAgaWYgb3RoZXIgaXMgYWxyZWFkeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBob2xkaW5nIHRoZSBzZW1hcGhvcmUuCisKKyNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX05XX1NFTUFQSE9SRTEwX0FQUFNfTldfU0VNQVBIT1JFMTBfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQ09NTU9OX1JFR19PX0FQUFNfTldfU0VNQVBIT1JFMTEgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX05XX1NFTUFQSE9SRTExX0FQUFNfTldfU0VNQVBIT1JFMTFfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIOKAoiBFYWNoIHNlbWFwaG9yZSByZWdpc3RlciBpcyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAyIGJpdC4g4oCiIFdoZW4gdGhpcyByZWdpc3RlciBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gMuKAmWIwMSDigJMgQXBwcyBoYXZlIGFjY2VzcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgd2hlbiBzZXQgdG8gMuKAmWIxMCDigJMgTlcgaGF2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY2Nlc3MuIOKAoiBJZGVhbGx5IGJvdGggdGhlIG1hc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYW4gbW9kaWZ5IGFueSBvZiB0aGlzIDIgYml0LCBidXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzdW1wdGlvbiBhcHBzIHdpbGwgd3JpdGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAy4oCZYjAxIG9yIDLigJliMDAgdG8gdGhpcyByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgbncgd2lsbCB3cml0ZSBvbmx5IDLigJliMTAgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMC4g4oCiIEltcGxlbWVudGF0aW9uIGlzIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW55IG9mIHRoZSBiaXQgb2YgdGhpcyByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBzZXQsIG9ubHkgbmV4dCB3cml0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGxvd2VkdmlzIDLigJliMDAg4oCTIEFnYWluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gaXMgb25lIG1hc3RlciB3aWxsIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3cml0ZSAy4oCZYjAwIGlmIG90aGVyIGlzIGFscmVhZHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaG9sZGluZyB0aGUgc2VtYXBob3JlLgorCisjZGVmaW5lIENPTU1PTl9SRUdfQVBQU19OV19TRU1BUEhPUkUxMV9BUFBTX05XX1NFTUFQSE9SRTExX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19BUFBTX05XX1NFTUFQSE9SRTEyIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIENPTU1PTl9SRUdfQVBQU19OV19TRU1BUEhPUkUxMl9BUFBTX05XX1NFTUFQSE9SRTEyX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyBBUFBTIE5XIHNlbWFwaG9yZSByZWdpc3RlciAtIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWZsZWN0ZWQgaW4gc3RhdHVzLgorCisjZGVmaW5lIENPTU1PTl9SRUdfQVBQU19OV19TRU1BUEhPUkUxMl9BUFBTX05XX1NFTUFQSE9SRTEyX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19BUFBTX1NFTUFQUEhPUkVfUEVORCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX0FQUFNfU0VNQVBQSE9SRV9QRU5EX0FQUFNfU0VNQVBQSE9SRV9QRU5EX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyBBUFBTIFNFTUFQT0hPUkUgU1RBVFVTCisKKyNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX1NFTUFQUEhPUkVfUEVORF9BUFBTX1NFTUFQUEhPUkVfUEVORF9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBDT01NT05fUkVHX09fTldfU0VNQVBQSE9SRV9QRU5EIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIENPTU1PTl9SRUdfTldfU0VNQVBQSE9SRV9QRU5EX05XX1NFTUFQUEhPUkVfUEVORF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gTlcgU0VNQVBIT1JFIFNUQVRVUworCisjZGVmaW5lIENPTU1PTl9SRUdfTldfU0VNQVBQSE9SRV9QRU5EX05XX1NFTUFQUEhPUkVfUEVORF9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBDT01NT05fUkVHX09fU0VNQVBIT1JFX1NUQVRVUyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX1NFTUFQSE9SRV9TVEFUVVNfU0VNQVBIT1JFX1NUQVRVU19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gU0VNQVBIT1JFIFNUQVRVUyA5OjggOnNlbWFwaG9yZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGF0dXMgb2YgZmxhc2hfY29udHJvbCA3OjYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOnNlbWFwaG9yZSBzdGF0dXMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ3Bpb19wcm9wZXJ0aWVzIDU6NAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA6c2VtYXBob3JlIHN0YXR1cyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcGlfcHJvcGVydGllIDE6MCA6c2VtYXBob3JlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YXR1cyBvZiBpMmNfcHJvcGVydGllCisKKyNkZWZpbmUgQ09NTU9OX1JFR19TRU1BUEhPUkVfU1RBVFVTX1NFTUFQSE9SRV9TVEFUVVNfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQ09NTU9OX1JFR19PX0lETUVNX1RJTV9VcGRhdGUgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBDT01NT05fUkVHX09fRlBHQV9ST01fV1JfRU4gcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQ09NTU9OX1JFR19GUEdBX1JPTV9XUl9FTl9GUEdBX1JPTV9XUl9FTiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIHdoZW4gJzEnIGVuYWJsZXMgV3JpdGUgaW50bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJRE1FTSBDT1JFIFJPTSwgQVBQUyBST00sIE5XUCBST00KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19OV19JTlRfTUFTSyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX05XX0lOVF9NQVNLX05XX0lOVF9NQVNLX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyAxPSBkaXNhYmxlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJydXB0OzAgPSBpbnRlcnJ1cHQgZW5hYmxlZAorCisjZGVmaW5lIENPTU1PTl9SRUdfTldfSU5UX01BU0tfTldfSU5UX01BU0tfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQ09NTU9OX1JFR19PX05XX0lOVF9NQVNLX1NFVCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX05XX0lOVF9NQVNLX1NFVF9OV19JTlRfTUFTS19TRVRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIHdyaXRlIDEgdG8gc2V0IGNvcnJlc3BvbmRpbmcgYml0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIE5XX0lOVF9NQVNLOzAgPSBubyBlZmZlY3QKKworI2RlZmluZSBDT01NT05fUkVHX05XX0lOVF9NQVNLX1NFVF9OV19JTlRfTUFTS19TRVRfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQ09NTU9OX1JFR19PX05XX0lOVF9NQVNLX0NMUiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX05XX0lOVF9NQVNLX0NMUl9OV19JTlRfTUFTS19DTFJfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIHdyaXRlIDEgdG8gY2xlYXIgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiaXQgaW4gTldfSU5UX01BU0s7MCA9IG5vIGVmZmVjdAorCisjZGVmaW5lIENPTU1PTl9SRUdfTldfSU5UX01BU0tfQ0xSX05XX0lOVF9NQVNLX0NMUl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBDT01NT05fUkVHX09fTldfSU5UX1NUU19DTFIgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQ09NTU9OX1JFR19OV19JTlRfU1RTX0NMUl9OV19JTlRfU1RTX0NMUl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gd3JpdGUgMSB0byBjbGVhciBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVycnVwdDsgMCA9IG5vIGVmZmVjdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJydXB0IGlzIG5vdCBsb3N0IGlmIGNvaW5jaWRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpdGggd3JpdGUgb3BlcmF0aW9uCisKKyNkZWZpbmUgQ09NTU9OX1JFR19OV19JTlRfU1RTX0NMUl9OV19JTlRfU1RTX0NMUl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBDT01NT05fUkVHX09fTldfSU5UX0FDSyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX05XX0lOVF9BQ0tfTldfSU5UX0FDS19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gd3JpdGUgMSB0byBjbGVhciBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVycnVwdDswID0gbm8gZWZmZWN0CisKKyNkZWZpbmUgQ09NTU9OX1JFR19OV19JTlRfQUNLX05XX0lOVF9BQ0tfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQ09NTU9OX1JFR19PX05XX0lOVF9UUklHIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIENPTU1PTl9SRUdfTldfSU5UX1RSSUdfTldfSU5UX1RSSUdfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIFdyaXRpbmcgYSAxIHRvIGEgYml0IGluIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgY2F1c2VzIHRoZSB0aGUgSG9zdCBDUFUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgZW5hYmxlZCAobm90IG1hc2tlZCkuIFRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgaXMgc2VsZi1jbGVhcmluZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV3JpdGluZyAwIGhhcyBubyBlZmZlY3QKKworI2RlZmluZSBDT01NT05fUkVHX05XX0lOVF9UUklHX05XX0lOVF9UUklHX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19OV19JTlRfU1RTX01BU0tFRCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX05XX0lOVF9TVFNfTUFTS0VEX05XX0lOVF9TVFNfTUFTS0VEX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyAxPSBjb3JyZXNwb25kaW5nIGludGVycnVwdCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY3RpdmUgYW5kIG5vdCBtYXNrZWQuIHJlYWQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm9uLWRlc3RydWN0aXZlOzAgPSBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVycnVwdCBpcyBpbmFjdGl2ZSBvciBtYXNrZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnkgTldfSU5UIG1hc2sKKworI2RlZmluZSBDT01NT05fUkVHX05XX0lOVF9TVFNfTUFTS0VEX05XX0lOVF9TVFNfTUFTS0VEX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19OV19JTlRfU1RTX1JBVyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX05XX0lOVF9TVFNfUkFXX05XX0lOVF9TVFNfUkFXX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyAxPSBjb3JyZXNwb25kaW5nIGludGVycnVwdCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY3RpdmUuIHJlYWQgaXMgbm9uLWRlc3RydWN0aXZlOzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gPSBjb3JyZXNwb25kaW5nIGludGVycnVwdCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmFjdGl2ZQorCisjZGVmaW5lIENPTU1PTl9SRUdfTldfSU5UX1NUU19SQVdfTldfSU5UX1NUU19SQVdfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQ09NTU9OX1JFR19PX0FQUFNfSU5UX01BU0sgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX0lOVF9NQVNLX0FQUFNfSU5UX01BU0tfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIDE9IGRpc2FibGUgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRlcnJ1cHQ7MCA9IGludGVycnVwdCBlbmFibGVkCisKKyNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX0lOVF9NQVNLX0FQUFNfSU5UX01BU0tfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQ09NTU9OX1JFR19PX0FQUFNfSU5UX01BU0tfU0VUIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIENPTU1PTl9SRUdfQVBQU19JTlRfTUFTS19TRVRfQVBQU19JTlRfTUFTS19TRVRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIHdyaXRlIDEgdG8gc2V0IGNvcnJlc3BvbmRpbmcgYml0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIEFQUFNfSU5UX01BU0s7MCA9IG5vIGVmZmVjdAorCisjZGVmaW5lIENPTU1PTl9SRUdfQVBQU19JTlRfTUFTS19TRVRfQVBQU19JTlRfTUFTS19TRVRfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQ09NTU9OX1JFR19PX0FQUFNfSU5UX01BU0tfQ0xSIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIENPTU1PTl9SRUdfQVBQU19JTlRfTUFTS19DTFJfQVBQU19JTlRfTUFTS19DTFJfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIHdyaXRlIDEgdG8gY2xlYXIgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiaXQgaW4gQVBQU19JTlRfTUFTSzswID0gbm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWZmZWN0CisKKyNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX0lOVF9NQVNLX0NMUl9BUFBTX0lOVF9NQVNLX0NMUl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBDT01NT05fUkVHX09fQVBQU19JTlRfU1RTX0NMUiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX0FQUFNfSU5UX1NUU19DTFJfQVBQU19JTlRfU1RTX0NMUl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gd3JpdGUgMSB0byBjbGVhciBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVycnVwdDsgMCA9IG5vIGVmZmVjdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJydXB0IGlzIG5vdCBsb3N0IGlmIGNvaW5jaWRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpdGggd3JpdGUgb3BlcmF0aW9uCisKKyNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX0lOVF9TVFNfQ0xSX0FQUFNfSU5UX1NUU19DTFJfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQ09NTU9OX1JFR19PX0FQUFNfSU5UX0FDSyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX0FQUFNfSU5UX0FDS19BUFBTX0lOVF9BQ0tfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIHdyaXRlIDEgdG8gY2xlYXIgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRlcnJ1cHQ7MCA9IG5vIGVmZmVjdAorCisjZGVmaW5lIENPTU1PTl9SRUdfQVBQU19JTlRfQUNLX0FQUFNfSU5UX0FDS19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBDT01NT05fUkVHX09fQVBQU19JTlRfVFJJRyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX0FQUFNfSU5UX1RSSUdfQVBQU19JTlRfVFJJR19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gV3JpdGluZyBhIDEgdG8gYSBiaXQgaW4gdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciBjYXVzZXMgdGhlIHRoZSBIb3N0IENQVQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBlbmFibGVkIChub3QgbWFza2VkKS4gVGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciBpcyBzZWxmLWNsZWFyaW5nLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXcml0aW5nIDAgaGFzIG5vIGVmZmVjdAorCisjZGVmaW5lIENPTU1PTl9SRUdfQVBQU19JTlRfVFJJR19BUFBTX0lOVF9UUklHX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19BUFBTX0lOVF9TVFNfTUFTS0VEIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIENPTU1PTl9SRUdfQVBQU19JTlRfU1RTX01BU0tFRF9BUFBTX0lOVF9TVFNfTUFTS0VEX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyAxPSBjb3JyZXNwb25kaW5nIGludGVycnVwdCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY3RpdmUgYW5kIG5vdCBtYXNrZWQuIHJlYWQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm9uLWRlc3RydWN0aXZlOzAgPSBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVycnVwdCBpcyBpbmFjdGl2ZSBvciBtYXNrZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnkgQVBQU19JTlQgbWFzaworCisjZGVmaW5lIENPTU1PTl9SRUdfQVBQU19JTlRfU1RTX01BU0tFRF9BUFBTX0lOVF9TVFNfTUFTS0VEX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19BUFBTX0lOVF9TVFNfUkFXIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIENPTU1PTl9SRUdfQVBQU19JTlRfU1RTX1JBV19BUFBTX0lOVF9TVFNfUkFXX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyAxPSBjb3JyZXNwb25kaW5nIGludGVycnVwdCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY3RpdmUuIHJlYWQgaXMgbm9uLWRlc3RydWN0aXZlOzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gPSBjb3JyZXNwb25kaW5nIGludGVycnVwdCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmFjdGl2ZQorCisjZGVmaW5lIENPTU1PTl9SRUdfQVBQU19JTlRfU1RTX1JBV19BUFBTX0lOVF9TVFNfUkFXX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19JRE1FTV9USU1fVXBkYXRlZCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX0lETUVNX1RJTV9VcGRhdGVkX1RJTV9VUERBVEVEIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gdG9nZ2xlIGluIHRoaXMgc2lnbmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluZGljYXRlc0lETUVNX1RJTV9VUERBVEUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgbWVudGlvbmVkIGFib3ZlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVwZGF0ZWQuCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBDT01NT05fUkVHX09fQVBQU19HUElPX1RSSUdfRU4gcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX0dQSU9fVFJJR19FTl9BUFBTX0dQSU9fVFJJR19FTl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxRiAgLy8gQVBQUyBHUElPIFRyaWdnZXIgRU4gY29udHJvbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQml0IDA6IHdoZW4gJzEnIGVuYWJsZSBHUElPIDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpZ2dlci4gVGhpcyBiaXQgZW5hYmxlcyB0cmlnZ2VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBhbGwgR1BJTyAwIHBpbnMgKEdQSU8gMCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPNykuIEJpdCAxOiB3aGVuICcxJyBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTyAxIHRyaWdnZXIuIFRoaXMgYml0IGVuYWJsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpZ2dlciBmb3IgYWxsIEdQSU8gMSBwaW5zICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTzggdG8gR1BJTzE1KS4gQml0IDI6IHdoZW4gJzEnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZSBHUElPIDIgdHJpZ2dlci4gVGhpcyBiaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0cmlnZ2VyIGZvciBhbGwgR1BJTyAyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBpbnMgKEdQSU8xNiB0byBHUElPMjMpLiBCaXQgMzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiAnMScgZW5hYmxlIEdQSU8gMyB0cmlnZ2VyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGJpdCBlbmFibGVzIHRyaWdnZXIgZm9yIGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPIDMgcGlucyAoR1BJTzI0IHRvIEdQSU8zMSkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJpdCA0OiB3aGVuICcxJyBlbmFibGUgR1BJTyA0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaWdnZXIuIFRoaXMgYml0IGVuYWJsZXMgdHJpZ2dlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgYWxsIEdQSU8gNCBwaW5zLihHUElPMzIgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTzM5KQorCisjZGVmaW5lIENPTU1PTl9SRUdfQVBQU19HUElPX1RSSUdfRU5fQVBQU19HUElPX1RSSUdfRU5fUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQ09NTU9OX1JFR19PX0VNVV9ERUJVR19SRUcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQ09NTU9OX1JFR19FTVVfREVCVUdfUkVHX0VNVV9ERUJVR19SRUdfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIDAgdGggYml0IHVzZWQgZm9yIHN0YWxsaW5nIEFQUFMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRE1BIGFuZCAxc3QgYml0IGlzIHVzZWQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YWxsaW5nIE5XUCBETUEgZm9yIGRlYnVnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHB1cnBvc2UuIE90aGVyIGJpdHMgYXJlIHVudXNlZC4KKworI2RlZmluZSBDT01NT05fUkVHX0VNVV9ERUJVR19SRUdfRU1VX0RFQlVHX1JFR19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBDT01NT05fUkVHX09fU0VNQVBIT1JFX1NUQVRVUzIgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQ09NTU9OX1JFR19TRU1BUEhPUkVfU1RBVFVTMl9TRU1QQVBIT1JFX1NUQVRVUzJfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDBGRkZGRkYgIC8vIFNFTUFQSE9SRSBTVEFUVVMgMjM6MjIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOnNlbWFwaG9yZSBzdGF0dXMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXBwc19ud19zZW1hcGhvcmUxMSAyMToyMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA6c2VtYXBob3JlIHN0YXR1cyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBzX253X3NlbWFwaG9yZTExIDE5OjE4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDpzZW1hcGhvcmUgc3RhdHVzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFwcHNfbndfc2VtYXBob3JlMTAgMTc6MTYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOnNlbWFwaG9yZSBzdGF0dXMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXBwc19ud19zZW1hcGhvcmU5IDE1OjE0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDpzZW1hcGhvcmUgc3RhdHVzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFwcHNfbndfc2VtYXBob3JlOCAxMzoxMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA6c2VtYXBob3JlIHN0YXR1cyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBzX253X3NlbWFwaG9yZTcgMTE6MTAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOnNlbWFwaG9yZSBzdGF0dXMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXBwc19ud19zZW1hcGhvcmU2IDk6OCA6c2VtYXBob3JlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YXR1cyBvZiBhcHBzX253X3NlbWFwaG9yZTUgNzo2CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDpzZW1hcGhvcmUgc3RhdHVzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFwcHNfbndfc2VtYXBob3JlNCA1OjQgOnNlbWFwaG9yZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGF0dXMgb2YgYXBwc19ud19zZW1hcGhvcmUzIDM6MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA6c2VtYXBob3JlIHN0YXR1cyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBzX253X3NlbWFwaG9yZTIgMTowIDpzZW1hcGhvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhdHVzIG9mIGFwcHNfbndfc2VtYXBob3JlMQorCisjZGVmaW5lIENPTU1PTl9SRUdfU0VNQVBIT1JFX1NUQVRVUzJfU0VNUEFQSE9SRV9TVEFUVVMyX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19TRU1BUEhPUkVfUFJFVl9PV05FUjEgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQ09NTU9OX1JFR19TRU1BUEhPUkVfUFJFVl9PV05FUjFfU0VNQVBIT1JFX1BSRVZfT1dORVIxX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDNGRkZGICAvLyAxOjAgOiBwcnZpb3VzIG93bmVyIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGkyY19wcm9wZXJ0aWVzX3JlZ1sxOjBdIDM6MiA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBydmlvdXMgb3duZXIgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BpX3Byb3BlcnRpZXNfcmVnWzE6MF0gNTo0IDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJ2aW91cyBvd25lciBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBncGlvX3Byb3BlcnRpZXNfcmVnWzE6MF0gOTo4IDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJ2aW91cyBvd25lciBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBncGlvX3Byb3BlcnRpZXNfcmVnWzM6Ml0gMTE6MTAgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcnZpb3VzIG93bmVyIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdwaW9fcHJvcGVydGllc19yZWdbNTo0XSAxMzoxMiA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBydmlvdXMgb3duZXIgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ3Bpb19wcm9wZXJ0aWVzX3JlZ1s3OjZdIDE1OjE0IDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJ2aW91cyBvd25lciBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBncGlvX3Byb3BlcnRpZXNfcmVnWzk6OF0gMTc6MTYgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcnZpb3VzIG93bmVyIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZsYXNoX2NvbnRyb2xfcmVnWzE6MF0KKworI2RlZmluZSBDT01NT05fUkVHX1NFTUFQSE9SRV9QUkVWX09XTkVSMV9TRU1BUEhPUkVfUFJFVl9PV05FUjFfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQ09NTU9OX1JFR19PX1NFTUFQSE9SRV9QUkVWX09XTkVSMiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX1NFTUFQSE9SRV9QUkVWX09XTkVSMl9TRU1BUEhPUkVfUFJFVl9PV05FUjJfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDBGRkZGRkYgIC8vIDE6MCA6IHByZXZpb3VzIG93bmVyIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFwcHNfbndfc2VtYXBob3JlMV9yZWdbMTowXSAzOjIgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcmV2aW91cyBvd25lciBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBzX253X3NlbWFwaG9yZTJfcmVnWzE6MF0gNTo0IDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJldmlvdXMgb3duZXIgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXBwc19ud19zZW1hcGhvcmUzX3JlZ1sxOjBdIDc6NiA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByZXZpb3VzIG93bmVyIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFwcHNfbndfc2VtYXBob3JlNF9yZWdbMTowXSA5OjggOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcmV2aW91cyBvd25lciBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBzX253X3NlbWFwaG9yZTVfcmVnWzE6MF0gMTE6MTAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOiBwcmV2aW91cyBvd25lciBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBzX253X3NlbWFwaG9yZTZfcmVnWzE6MF0gMTM6MTIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOiBwcmV2aW91cyBvd25lciBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBzX253X3NlbWFwaG9yZTdfcmVnWzE6MF0gMTU6MTQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOiBwcmV2aW91cyBvd25lciBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBzX253X3NlbWFwaG9yZThfcmVnWzE6MF0gMTc6MTYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOiBwcmV2aW91cyBvd25lciBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBzX253X3NlbWFwaG9yZTlfcmVnWzE6MF0gMTk6MTgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOiBwcmV2aW91cyBvd25lciBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBzX253X3NlbWFwaG9yZTEwX3JlZ1sxOjBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDIxOjIwIDogcHJldmlvdXMgb3duZXIgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXBwc19ud19zZW1hcGhvcmUxMV9yZWdbMTowXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAyMzoyMiA6IHByZXZpb3VzIG93bmVyIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFwcHNfbndfc2VtYXBob3JlMTJfcmVnWzE6MF0KKworI2RlZmluZSBDT01NT05fUkVHX1NFTUFQSE9SRV9QUkVWX09XTkVSMl9TRU1BUEhPUkVfUFJFVl9PV05FUjJfUyAwCisKKworCisjZW5kaWYgLy8gX19IV19DT01NT05fUkVHX0hfXwpkaWZmIC0tZ2l0IGEvZXh0L2hhbC90aS9jYzMyMjBzZGsvaW5jL2h3X2dwaW8uaCBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2luYy9od19ncGlvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDFkZGJiMQotLS0gL2Rldi9udWxsCisrKyBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2luYy9od19ncGlvLmgKQEAgLTAsMCArMSwxMzQ3IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxNiBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgLSBodHRwOi8vd3d3LnRpLmNvbS8KKyAqCisgKiAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiAgYXJlIG1ldDoKKyAqCisgKiAgICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqICAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAgICBOZWl0aGVyIHRoZSBuYW1lIG9mIFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCBub3IgdGhlIG5hbWVzIG9mCisgKiAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqICBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaWZuZGVmIF9fSFdfR1BJT19IX18KKyNkZWZpbmUgX19IV19HUElPX0hfXworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIEdQSU8gcmVnaXN0ZXIgb2Zmc2V0cy4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQSU9fT19HUElPX0RBVEEgICAgICAgIDB4MDAwMDAwMDAgIC8vIDB4NDAwMCA1MDAwIDB4NDAwMCA2MDAwIDB4NDAwMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA3MDAwIDB4NDAwMiA0MDAwIEdQSU8gRGF0YQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoR1BJT0RBVEEpQEAgb2Zmc2V0IDB4MDAwIFRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPREFUQSByZWdpc3RlciBpcyB0aGUgZGF0YQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3Rlci4gSW4gc29mdHdhcmUgY29udHJvbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtb2RlQEAgdmFsdWVzIHdyaXR0ZW4gaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU9EQVRBIHJlZ2lzdGVyIGFyZSB0cmFuc2ZlcnJlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvbnRvIHRoZSBHUElPIHBvcnQgcGlucyBpZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzcGVjdGl2ZSBwaW5zIGhhdmUgYmVlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25maWd1cmVkIGFzIG91dHB1dHMgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTyBEaXJlY3Rpb24gKEdQSU9ESVIpIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChzZWUgcGFnZSA2NTMpLiBJbiBvcmRlciB0byB3cml0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBHUElPREFUQUBAIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdHMgaW4gdGhlIG1hc2tAQCByZXN1bHRpbmcgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgYWRkcmVzcyBidXMgYml0cyBbOToyXUBAIG11c3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmUgc2V0LiBPdGhlcndpc2VAQCB0aGUgYml0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlcyByZW1haW4gdW5jaGFuZ2VkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3cml0ZS4gU2ltaWxhcmx5QEAgdGhlIHZhbHVlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWFkIGZyb20gdGhpcyByZWdpc3RlciBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGV0ZXJtaW5lZCBmb3IgZWFjaCBiaXQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1hc2sgYml0IGRlcml2ZWQgZnJvbSB0aGUgYWRkcmVzcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VkIHRvIGFjY2VzcyB0aGUgZGF0YQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlckBAIGJpdHMgWzk6Ml0uIEJpdHMgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcmUgc2V0IGluIHRoZSBhZGRyZXNzIG1hc2sgY2F1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGNvcnJlc3BvbmRpbmcgYml0cyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPREFUQSB0byBiZSByZWFkQEAgYW5kIGJpdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCBhcmUgY2xlYXIgaW4gdGhlIGFkZHJlc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWFzayBjYXVzZSB0aGUgY29ycmVzcG9uZGluZyBiaXRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIEdQSU9EQVRBIHRvIGJlIHJlYWQgYXMgMEBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2FyZGxlc3Mgb2YgdGhlaXIgdmFsdWUuIEEgcmVhZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmcm9tIEdQSU9EQVRBIHJldHVybnMgdGhlIGxhc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0IHZhbHVlIHdyaXR0ZW4gaWYgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc3BlY3RpdmUgcGlucyBhcmUgY29uZmlndXJlZCBhcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXRzQEAgb3IgaXQgcmV0dXJucyB0aGUgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb24gdGhlIGNvcnJlc3BvbmRpbmcgaW5wdXQgcGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdGhlc2UgYXJlIGNvbmZpZ3VyZWQgYXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzLiBBbGwgYml0cyBhcmUgY2xlYXJlZCBieSBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc2V0LgorI2RlZmluZSBHUElPX09fR1BJT19ESVIgICAgICAgICAweDAwMDAwNDAwICAvLyAweDQwMDAgNTQwMCAweDQwMDAgNjQwMCAweDQwMDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNzQwMCAweDQwMDIgNDQwMCBHUElPIERpcmVjdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoR1BJT0RJUilAQCBvZmZzZXQgMHg0MDAgVGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU9ESVIgcmVnaXN0ZXIgaXMgdGhlIGRhdGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGlyZWN0aW9uIHJlZ2lzdGVyLiBTZXR0aW5nIGEgYml0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIHRoZSBHUElPRElSIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbmZpZ3VyZXMgdGhlIGNvcnJlc3BvbmRpbmcgcGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGJlIGFuIG91dHB1dEBAIHdoaWxlIGNsZWFyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGEgYml0IGNvbmZpZ3VyZXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgcGluIHRvIGJlIGFuIGlucHV0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBbGwgYml0cyBhcmUgY2xlYXJlZCBieSBhIHJlc2V0QEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWVhbmluZyBhbGwgR1BJTyBwaW5zIGFyZSBpbnB1dHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnkgZGVmYXVsdC4KKyNkZWZpbmUgR1BJT19PX0dQSU9fSVMgICAgICAgICAgMHgwMDAwMDQwNCAgLy8gMHg0MDAwIDU0MDQgMHg0MDAwIDY0MDQgMHg0MDAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDc0MDQgMHg0MDAyIDQ0MDQgR1BJTyBJbnRlcnJ1cHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2Vuc2UgKEdQSU9JUylAQCBvZmZzZXQgMHg0MDQgVGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU9JUyByZWdpc3RlciBpcyB0aGUgaW50ZXJydXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNlbnNlIHJlZ2lzdGVyLiBTZXR0aW5nIGEgYml0IGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBHUElPSVMgcmVnaXN0ZXIgY29uZmlndXJlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgY29ycmVzcG9uZGluZyBwaW4gdG8gZGV0ZWN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxldmVsc0BAIHdoaWxlIGNsZWFyaW5nIGEgYml0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbmZpZ3VyZXMgdGhlIGNvcnJlc3BvbmRpbmcgcGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGRldGVjdCBlZGdlcy4gQWxsIGJpdHMgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsZWFyZWQgYnkgYSByZXNldC4KKyNkZWZpbmUgR1BJT19PX0dQSU9fSUJFICAgICAgICAgMHgwMDAwMDQwOCAgLy8gMHg0MDAwIDU0MDggMHg0MDAwIDY0MDggMHg0MDAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDc0MDggMHg0MDAyIDQ0MDggR1BJTyBJbnRlcnJ1cHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQm90aCBFZGdlcyAoR1BJT0lCRSlAQCBvZmZzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMHg0MDggVGhlIEdQSU9JQkUgcmVnaXN0ZXIgYWxsb3dzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJvdGggZWRnZXMgdG8gY2F1c2UgaW50ZXJydXB0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2hlbiB0aGUgY29ycmVzcG9uZGluZyBiaXQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU8gSW50ZXJydXB0IFNlbnNlIChHUElPSVMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyIGlzIHNldCB0byBkZXRlY3QgZWRnZXNAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXR0aW5nIGEgYml0IGluIHRoZSBHUElPSUJFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyIGNvbmZpZ3VyZXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgcGluIHRvIGRldGVjdCBib3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJpc2luZyBhbmQgZmFsbGluZyBlZGdlc0BACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2FyZGxlc3Mgb2YgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0IGluIHRoZSBHUElPIEludGVycnVwdCBFdmVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoR1BJT0lFVikgcmVnaXN0ZXIgLiBDbGVhcmluZyBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdCBjb25maWd1cmVzIHRoZSBwaW4gdG8gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udHJvbGxlZCBieSB0aGUgR1BJT0lFVgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3Rlci4gQWxsIGJpdHMgYXJlIGNsZWFyZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSByZXNldC4KKyNkZWZpbmUgR1BJT19PX0dQSU9fSUVWICAgICAgICAgMHgwMDAwMDQwQyAgLy8gMHg0MDAwIDU0MEMgMHg0MDAwIDY0MEMgMHg0MDAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDc0MEMgMHg0MDAyIDQ0MEMgR1BJTyBJbnRlcnJ1cHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXZlbnQgKEdQSU9JRVYpQEAgb2Zmc2V0IDB4NDBDCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBHUElPSUVWIHJlZ2lzdGVyIGlzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRlcnJ1cHQgZXZlbnQgcmVnaXN0ZXIuIFNldHRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBiaXQgaW4gdGhlIEdQSU9JRVYgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uZmlndXJlcyB0aGUgY29ycmVzcG9uZGluZyBwaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gZGV0ZWN0IHJpc2luZyBlZGdlcyBvciBoaWdoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxldmVsc0BAIGRlcGVuZGluZyBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29ycmVzcG9uZGluZyBiaXQgdmFsdWUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU8gSW50ZXJydXB0IFNlbnNlIChHUElPSVMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyIC4gQ2xlYXJpbmcgYSBiaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uZmlndXJlcyB0aGUgcGluIHRvIGRldGVjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmYWxsaW5nIGVkZ2VzIG9yIGxvdyBsZXZlbHNAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZXBlbmRpbmcgb24gdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0IHZhbHVlIGluIHRoZSBHUElPSVMgcmVnaXN0ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFsbCBiaXRzIGFyZSBjbGVhcmVkIGJ5IGEgcmVzZXQuCisjZGVmaW5lIEdQSU9fT19HUElPX0lNICAgICAgICAgIDB4MDAwMDA0MTAgIC8vIDB4NDAwMCA1NDEwIDB4NDAwMCA2NDEwIDB4NDAwMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA3NDEwIDB4NDAwMiA0NDEwIEdQSU8gSW50ZXJydXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1hc2sgKEdQSU9JTSlAQCBvZmZzZXQgMHg0MTAgVGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU9JTSByZWdpc3RlciBpcyB0aGUgaW50ZXJydXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1hc2sgcmVnaXN0ZXIuIFNldHRpbmcgYSBiaXQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIEdQSU9JTSByZWdpc3RlciBhbGxvd3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJydXB0cyB0aGF0IGFyZSBnZW5lcmF0ZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGNvcnJlc3BvbmRpbmcgcGluIHRvIGJlIHNlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gdGhlIGludGVycnVwdCBjb250cm9sbGVyIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBjb21iaW5lZCBpbnRlcnJ1cHQgc2lnbmFsLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDbGVhcmluZyBhIGJpdCBwcmV2ZW50cyBhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRlcnJ1cHQgb24gdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGluIGZyb20gYmVpbmcgc2VudCB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJydXB0IGNvbnRyb2xsZXIuIEFsbCBiaXRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFyZSBjbGVhcmVkIGJ5IGEgcmVzZXQuCisjZGVmaW5lIEdQSU9fT19HUElPX1JJUyAgICAgICAgIDB4MDAwMDA0MTQgIC8vIDB4NDAwMCA1NDE0IDB4NDAwMCA2NDE0IDB4NDAwMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA3NDE0IDB4NDAwMiA0NDE0IEdQSU8gUmF3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEludGVycnVwdCBTdGF0dXMgKEdQSU9SSVMpQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2Zmc2V0IDB4NDE0IFRoZSBHUElPUklTIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIHRoZSByYXcgaW50ZXJydXB0IHN0YXR1cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3Rlci4gQSBiaXQgaW4gdGhpcyByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBzZXQgd2hlbiBhbiBpbnRlcnJ1cHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uZGl0aW9uIG9jY3VycyBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29ycmVzcG9uZGluZyBHUElPIHBpbi4gSWYgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgYml0IGluIHRoZSBHUElPCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEludGVycnVwdCBNYXNrIChHUElPSU0pIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIHNldEBAIHRoZSBpbnRlcnJ1cHQgaXMgc2VudCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIuIEJpdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVhZCBhcyB6ZXJvIGluZGljYXRlIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29ycmVzcG9uZGluZyBpbnB1dCBwaW5zIGhhdmUgbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluaXRpYXRlZCBhbiBpbnRlcnJ1cHQuIEEgYml0IGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgcmVnaXN0ZXIgY2FuIGJlIGNsZWFyZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdGluZyBhIDEgdG8gdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0IGluIHRoZSBHUElPIEludGVycnVwdCBDbGVhcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoR1BJT0lDUikgcmVnaXN0ZXIuCisjZGVmaW5lIEdQSU9fT19HUElPX01JUyAgICAgICAgIDB4MDAwMDA0MTggIC8vIDB4NDAwMCA1NDE4IDB4NDAwMCA2NDE4IDB4NDAwMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA3NDE4IDB4NDAwMiA0NDE4IEdQSU8gTWFza2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEludGVycnVwdCBTdGF0dXMgKEdQSU9NSVMpQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2Zmc2V0IDB4NDE4IFRoZSBHUElPTUlTIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIHRoZSBtYXNrZWQgaW50ZXJydXB0IHN0YXR1cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3Rlci4gSWYgYSBiaXQgaXMgc2V0IGluIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXJAQCB0aGUgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRlcnJ1cHQgaGFzIHRyaWdnZXJlZCBhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRlcnJ1cHQgdG8gdGhlIGludGVycnVwdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250cm9sbGVyLiBJZiBhIGJpdCBpcyBjbGVhckBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVpdGhlciBubyBpbnRlcnJ1cHQgaGFzIGJlZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2VuZXJhdGVkQEAgb3IgdGhlIGludGVycnVwdCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYXNrZWQuIElmIG5vIHBvcnQgcGluQEAgb3RoZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhbiB0aGUgb25lIHRoYXQgaXMgYmVpbmcgdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcyBhbiBBREMgdHJpZ2dlckBAIGlzIGJlaW5nIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gZ2VuZXJhdGUgaW50ZXJydXB0c0BAIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHByb3ByaWF0ZSBJbnRlcnJ1cHQgU2V0IEVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoRU5uKSByZWdpc3RlciBjYW4gZGlzYWJsZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJydXB0cyBmb3IgdGhlIHBvcnRAQCBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFEQyBpbnRlcnJ1cHQgY2FuIGJlIHVzZWQgdG8gcmVhZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiYWNrIHRoZSBjb252ZXJ0ZWQgZGF0YS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlQEAgdGhlIHBvcnQgaW50ZXJydXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZXIgbXVzdCBpZ25vcmUgYW5kIGNsZWFyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVycnVwdHMgb24gdGhlIHBvcnQgcGluIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3YWl0IGZvciB0aGUgQURDIGludGVycnVwdEBAIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBBREMgaW50ZXJydXB0IG11c3QgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGlzYWJsZWQgaW4gdGhlIEVOMCByZWdpc3RlciBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHBvcnQgaW50ZXJydXB0IGhhbmRsZXIgbXVzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwb2xsIHRoZSBBREMgcmVnaXN0ZXJzIHVudGlsIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb252ZXJzaW9uIGlzIGNvbXBsZXRlZC4gSWYgbm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9ydCBwaW5AQCBvdGhlciB0aGFuIHRoZSBvbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCBpcyBiZWluZyB1c2VkIGFzIGFuIEFEQworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmlnZ2VyQEAgaXMgYmVpbmcgdXNlZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZW5lcmF0ZSBpbnRlcnJ1cHRzQEAgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFwcHJvcHJpYXRlIEludGVycnVwdCBTZXQgRW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChFTm4pIHJlZ2lzdGVyIGNhbiBkaXNhYmxlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRlcnJ1cHRzIGZvciB0aGUgcG9ydEBAIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQURDIGludGVycnVwdCBjYW4gYmUgdXNlZCB0byByZWFkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJhY2sgdGhlIGNvbnZlcnRlZCBkYXRhLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2VAQCB0aGUgcG9ydCBpbnRlcnJ1cHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFuZGxlciBtdXN0IGlnbm9yZSBhbmQgY2xlYXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJydXB0cyBvbiB0aGUgcG9ydCBwaW4gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdhaXQgZm9yIHRoZSBBREMgaW50ZXJydXB0QEAgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIEFEQyBpbnRlcnJ1cHQgbXVzdCBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkaXNhYmxlZCBpbiB0aGUgRU4wIHJlZ2lzdGVyIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcG9ydCBpbnRlcnJ1cHQgaGFuZGxlciBtdXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBvbGwgdGhlIEFEQyByZWdpc3RlcnMgdW50aWwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnZlcnNpb24gaXMgY29tcGxldGVkLiBOb3RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQgaWYgdGhlIFBvcnQgQiBHUElPQURDQ1RMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyIGlzIGNsZWFyZWRAQCBQQjQgY2FuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0aWxsIGJlIHVzZWQgYXMgYW4gZXh0ZXJuYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpZ2dlciBmb3IgdGhlIEFEQy4gVGhpcyBpcyBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxlZ2FjeSBtb2RlIHdoaWNoIGFsbG93cyBjb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyaXR0ZW4gZm9yIHByZXZpb3VzIFN0ZWxsYXJpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZXZpY2VzIHRvIG9wZXJhdGUgb24gdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtaWNyb2NvbnRyb2xsZXIuIEdQSU9NSVMgaXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YXRlIG9mIHRoZSBpbnRlcnJ1cHQgYWZ0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWFza2luZy4KKyNkZWZpbmUgR1BJT19PX0dQSU9fSUNSICAgICAgICAgMHgwMDAwMDQxQyAgLy8gMHg0MDAwIDU0MUMgMHg0MDAwIDY0MUMgMHg0MDAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDc0MUMgMHg0MDAyIDQ0MUMgR1BJTyBJbnRlcnJ1cHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2xlYXIgKEdQSU9JQ1IpQEAgb2Zmc2V0IDB4NDFDCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBHUElPSUNSIHJlZ2lzdGVyIGlzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRlcnJ1cHQgY2xlYXIgcmVnaXN0ZXIuIFdyaXRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSAxIHRvIGEgYml0IGluIHRoaXMgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xlYXJzIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVycnVwdCBiaXQgaW4gdGhlIEdQSU9SSVMgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU9NSVMgcmVnaXN0ZXJzLiBXcml0aW5nIGEgMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYXMgbm8gZWZmZWN0LgorI2RlZmluZSBHUElPX09fR1BJT19BRlNFTCAgICAgICAweDAwMDAwNDIwICAvLyAweDQwMDAgNTQyMCAweDQwMDAgNjQyMCAweDQwMDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNzQyMCAweDQwMDIgNDQyMCBHUElPIEFsdGVybmF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGdW5jdGlvbiBTZWxlY3QgKEdQSU9BRlNFTClAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZmZzZXQgMHg0MjAgVGhlIEdQSU9BRlNFTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciBpcyB0aGUgbW9kZSBjb250cm9sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNlbGVjdCByZWdpc3Rlci4gSWYgYSBiaXQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xlYXJAQCB0aGUgcGluIGlzIHVzZWQgYXMgYSBHUElPCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBpcyBjb250cm9sbGVkIGJ5IHRoZSBHUElPCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVycy4gU2V0dGluZyBhIGJpdCBpbiB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyIGNvbmZpZ3VyZXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgR1BJTyBsaW5lIHRvIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRyb2xsZWQgYnkgYW4gYXNzb2NpYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwZXJpcGhlcmFsLiBTZXZlcmFsIHBvc3NpYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBlcmlwaGVyYWwgZnVuY3Rpb25zIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtdWx0aXBsZXhlZCBvbiBlYWNoIEdQSU8uIFRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPIFBvcnQgQ29udHJvbCAoR1BJT1BDVEwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyIGlzIHVzZWQgdG8gc2VsZWN0IG9uZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcG9zc2libGUgZnVuY3Rpb25zLgorI2RlZmluZSBHUElPX09fR1BJT19EUjJSICAgICAgICAweDAwMDAwNTAwICAvLyAweDQwMDAgNTUwMCAweDQwMDAgNjUwMCAweDQwMDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNzUwMCAweDQwMDIgNDUwMCBHUElPIDItbUEgRHJpdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2VsZWN0IChHUElPRFIyUilAQCBvZmZzZXQgMHg1MDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIEdQSU9EUjJSIHJlZ2lzdGVyIGlzIHRoZSAyLW1BCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRyaXZlIGNvbnRyb2wgcmVnaXN0ZXIuIEVhY2ggR1BJTworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaWduYWwgaW4gdGhlIHBvcnQgY2FuIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluZGl2aWR1YWxseSBjb25maWd1cmVkIHdpdGhvdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWZmZWN0aW5nIHRoZSBvdGhlciBwYWRzLiBXaGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldHRpbmcgdGhlIERSVjIgYml0IGZvciBhIEdQSU8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2lnbmFsQEAgdGhlIGNvcnJlc3BvbmRpbmcgRFJWNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiaXQgaW4gdGhlIEdQSU9EUjRSIHJlZ2lzdGVyIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEUlY4IGJpdCBpbiB0aGUgR1BJT0RSOFIgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXJlIGF1dG9tYXRpY2FsbHkgY2xlYXJlZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYXJkd2FyZS4gQnkgZGVmYXVsdEBAIGFsbCBHUElPCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBpbnMgaGF2ZSAyLW1BIGRyaXZlLgorI2RlZmluZSBHUElPX09fR1BJT19EUjRSICAgICAgICAweDAwMDAwNTA0ICAvLyAweDQwMDAgNTUwNCAweDQwMDAgNjUwNCAweDQwMDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNzUwNCAweDQwMDIgNDUwNCBHUElPIDQtbUEgRHJpdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2VsZWN0IChHUElPRFI0UilAQCBvZmZzZXQgMHg1MDQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIEdQSU9EUjRSIHJlZ2lzdGVyIGlzIHRoZSA0LW1BCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRyaXZlIGNvbnRyb2wgcmVnaXN0ZXIuIEVhY2ggR1BJTworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaWduYWwgaW4gdGhlIHBvcnQgY2FuIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluZGl2aWR1YWxseSBjb25maWd1cmVkIHdpdGhvdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWZmZWN0aW5nIHRoZSBvdGhlciBwYWRzLiBXaGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldHRpbmcgdGhlIERSVjQgYml0IGZvciBhIEdQSU8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2lnbmFsQEAgdGhlIGNvcnJlc3BvbmRpbmcgRFJWMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiaXQgaW4gdGhlIEdQSU9EUjJSIHJlZ2lzdGVyIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEUlY4IGJpdCBpbiB0aGUgR1BJT0RSOFIgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXJlIGF1dG9tYXRpY2FsbHkgY2xlYXJlZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYXJkd2FyZS4KKyNkZWZpbmUgR1BJT19PX0dQSU9fRFI4UiAgICAgICAgMHgwMDAwMDUwOCAgLy8gMHg0MDAwIDU1MDggMHg0MDAwIDY1MDggMHg0MDAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDc1MDggMHg0MDAyIDQ1MDggR1BJTyA4LW1BIERyaXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNlbGVjdCAoR1BJT0RSOFIpQEAgb2Zmc2V0IDB4NTA4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBHUElPRFI4UiByZWdpc3RlciBpcyB0aGUgOC1tQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkcml2ZSBjb250cm9sIHJlZ2lzdGVyLiBFYWNoIEdQSU8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2lnbmFsIGluIHRoZSBwb3J0IGNhbiBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmRpdmlkdWFsbHkgY29uZmlndXJlZCB3aXRob3V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFmZmVjdGluZyB0aGUgb3RoZXIgcGFkcy4gV2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXR0aW5nIHRoZSBEUlY4IGJpdCBmb3IgYSBHUElPCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpZ25hbEBAIHRoZSBjb3JyZXNwb25kaW5nIERSVjIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0IGluIHRoZSBHUElPRFIyUiByZWdpc3RlciBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRFJWNCBiaXQgaW4gdGhlIEdQSU9EUjRSIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFyZSBhdXRvbWF0aWNhbGx5IGNsZWFyZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFyZHdhcmUuIFRoZSA4LW1BIHNldHRpbmcgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxzbyB1c2VkIGZvciBoaWdoLWN1cnJlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3BlcmF0aW9uLiBOb3RlOiBUaGVyZSBpcyBubworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25maWd1cmF0aW9uIGRpZmZlcmVuY2UgYmV0d2VlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA4LW1BIGFuZCBoaWdoLWN1cnJlbnQgb3BlcmF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgYWRkaXRpb25hbCBjdXJyZW50IGNhcGFjaXR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc3VsdHMgZnJvbSBhIHNoaWZ0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBWT0gvVk9MIGxldmVscy4KKyNkZWZpbmUgR1BJT19PX0dQSU9fT0RSICAgICAgICAgMHgwMDAwMDUwQyAgLy8gMHg0MDAwIDU1MEMgMHg0MDAwIDY1MEMgMHg0MDAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDc1MEMgMHg0MDAyIDQ1MEMgR1BJTyBPcGVuIERyYWluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNlbGVjdCAoR1BJT09EUilAQCBvZmZzZXQgMHg1MEMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIEdQSU9PRFIgcmVnaXN0ZXIgaXMgdGhlIG9wZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHJhaW4gY29udHJvbCByZWdpc3Rlci4gU2V0dGluZyBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdCBpbiB0aGlzIHJlZ2lzdGVyIGVuYWJsZXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wZW4tZHJhaW4gY29uZmlndXJhdGlvbiBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29ycmVzcG9uZGluZyBHUElPIHBhZC4gV2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcGVuLWRyYWluIG1vZGUgaXMgZW5hYmxlZEBAIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3JyZXNwb25kaW5nIGJpdCBzaG91bGQgYWxzbyBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgaW4gdGhlIEdQSU8gRGlnaXRhbCBJbnB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFbmFibGUgKEdQSU9ERU4pIHJlZ2lzdGVyIC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29ycmVzcG9uZGluZyBiaXRzIGluIHRoZSBkcml2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdHJlbmd0aCBhbmQgc2xldyByYXRlIGNvbnRyb2wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXJzIChHUElPRFIyUkBAIEdQSU9EUjRSQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJT0RSOFJAQCBhbmQgR1BJT1NMUikgY2FuIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0byBhY2hpZXZlIHRoZSBkZXNpcmVkIHJpc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIGZhbGwgdGltZXMuIFRoZSBHUElPIGFjdHMgYXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW4gb3Blbi1kcmFpbiBpbnB1dCBpZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29ycmVzcG9uZGluZyBiaXQgaW4gdGhlIEdQSU9ESVIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgaXMgY2xlYXJlZC4gSWYgb3BlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkcmFpbiBpcyBzZWxlY3RlZCB3aGlsZSB0aGUgR1BJTworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBjb25maWd1cmVkIGFzIGFuIGlucHV0QEAgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU8gd2lsbCByZW1haW4gYW4gaW5wdXQgYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcGVuLWRyYWluIHNlbGVjdGlvbiBoYXMgbm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWZmZWN0IHVudGlsIHRoZSBHUElPIGlzIGNoYW5nZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gYW4gb3V0cHV0LiBXaGVuIHVzaW5nIHRoZSBJMkMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbW9kdWxlQEAgaW4gYWRkaXRpb24gdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uZmlndXJpbmcgdGhlIHBpbiB0byBvcGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRyYWluQEAgdGhlIEdQSU8gQWx0ZXJuYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZ1bmN0aW9uIFNlbGVjdCAoR1BJT0FGU0VMKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciBiaXRzIGZvciB0aGUgSTJDIGNsb2NrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBkYXRhIHBpbnMgc2hvdWxkIGJlIHNldAorI2RlZmluZSBHUElPX09fR1BJT19QVVIgICAgICAgICAweDAwMDAwNTEwICAvLyAweDQwMDAgNTUxMCAweDQwMDAgNjUxMCAweDQwMDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNzUxMCAweDQwMDIgNDUxMCBHUElPIFB1bGwtVXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2VsZWN0IChHUElPUFVSKUBAIG9mZnNldCAweDUxMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgR1BJT1BVUiByZWdpc3RlciBpcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHVsbC11cCBjb250cm9sIHJlZ2lzdGVyLiBXaGVuIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0IGlzIHNldEBAIGEgd2VhayBwdWxsLXVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc2lzdG9yIG9uIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU8gc2lnbmFsIGlzIGVuYWJsZWQuIFNldHRpbmcgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiaXQgaW4gR1BJT1BVUiBhdXRvbWF0aWNhbGx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsZWFycyB0aGUgY29ycmVzcG9uZGluZyBiaXQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIEdQSU8gUHVsbC1Eb3duIFNlbGVjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoR1BJT1BEUikgcmVnaXN0ZXIgLiBXcml0ZSBhY2Nlc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gdGhpcyByZWdpc3RlciBpcyBwcm90ZWN0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2l0aCB0aGUgR1BJT0NSIHJlZ2lzdGVyLiBCaXRzIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU9DUiB0aGF0IGFyZSBjbGVhcmVkIHByZXZlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdGVzIHRvIHRoZSBlcXVpdmFsZW50IGJpdCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIHJlZ2lzdGVyLgorI2RlZmluZSBHUElPX09fR1BJT19QRFIgICAgICAgICAweDAwMDAwNTE0ICAvLyAweDQwMDAgNTUxNCAweDQwMDAgNjUxNCAweDQwMDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNzUxNCAweDQwMDIgNDUxNCBHUElPIFB1bGwtRG93bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTZWxlY3QgKEdQSU9QRFIpQEAgb2Zmc2V0IDB4NTE0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBHUElPUERSIHJlZ2lzdGVyIGlzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwdWxsLWRvd24gY29udHJvbCByZWdpc3Rlci4gV2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhIGJpdCBpcyBzZXRAQCBhIHdlYWsgcHVsbC1kb3duCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc2lzdG9yIG9uIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU8gc2lnbmFsIGlzIGVuYWJsZWQuIFNldHRpbmcgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiaXQgaW4gR1BJT1BEUiBhdXRvbWF0aWNhbGx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsZWFycyB0aGUgY29ycmVzcG9uZGluZyBiaXQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIEdQSU8gUHVsbC1VcCBTZWxlY3QgKEdQSU9QVVIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyCisjZGVmaW5lIEdQSU9fT19HUElPX1NMUiAgICAgICAgIDB4MDAwMDA1MTggIC8vIDB4NDAwMCA1NTE4IDB4NDAwMCA2NTE4IDB4NDAwMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA3NTE4IDB4NDAwMiA0NTE4IFRoZSBHUElPU0xSCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyIGlzIHRoZSBzbGV3IHJhdGUgY29udHJvbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3Rlci4gU2xldyByYXRlIGNvbnRyb2wgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb25seSBhdmFpbGFibGUgd2hlbiB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOC1tQSBkcml2ZSBzdHJlbmd0aCBvcHRpb24gdmlhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBHUElPIDgtbUEgRHJpdmUgU2VsZWN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChHUElPRFI4UikgcmVnaXN0ZXIKKyNkZWZpbmUgR1BJT19PX0dQSU9fREVOICAgICAgICAgMHgwMDAwMDUxQyAgLy8gMHg0MDAwIDU1MUMgMHg0MDAwIDY1MUMgMHg0MDAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDc1MUMgMHg0MDAyIDQ1MUMgR1BJTyBEaWdpdGFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVuYWJsZSAoR1BJT0RFTilAQCBvZmZzZXQgMHg1MUMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm90ZTogUGlucyBjb25maWd1cmVkIGFzIGRpZ2l0YWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzIGFyZSBTY2htaXR0LXRyaWdnZXJlZC4gVGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU9ERU4gcmVnaXN0ZXIgaXMgdGhlIGRpZ2l0YWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlIHJlZ2lzdGVyLiBCeSBkZWZhdWx0QEAgYWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU8gc2lnbmFscyBleGNlcHQgdGhvc2UgbGlzdGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJlbG93IGFyZSBjb25maWd1cmVkIG91dCBvZiByZXNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBiZSB1bmRyaXZlbiAodHJpc3RhdGUpLiBUaGVpcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkaWdpdGFsIGZ1bmN0aW9uIGlzIGRpc2FibGVkOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGV5IGRvIG5vdCBkcml2ZSBhIGxvZ2ljIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9uIHRoZSBwaW4gYW5kIHRoZXkgZG8gbm90IGFsbG93CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBwaW4gdm9sdGFnZSBpbnRvIHRoZSBHUElPCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlY2VpdmVyLiBUbyB1c2UgdGhlIHBpbiBhcyBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpZ2l0YWwgaW5wdXQgb3Igb3V0cHV0IChlaXRoZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTyBvciBhbHRlcm5hdGUgZnVuY3Rpb24pQEAgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgR1BJT0RFTiBiaXQgbXVzdCBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQuCisjZGVmaW5lIEdQSU9fT19HUElPX0xPQ0sgICAgICAgIDB4MDAwMDA1MjAgIC8vIDB4NDAwMCA1NTIwIDB4NDAwMCA2NTIwIDB4NDAwMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA3NTIwIDB4NDAwMiA0NTIwIEdQSU8gTG9jaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoR1BJT0xPQ0spQEAgb2Zmc2V0IDB4NTIwIFRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPTE9DSyByZWdpc3RlciBlbmFibGVzIHdyaXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjY2VzcyB0byB0aGUgR1BJT0NSIHJlZ2lzdGVyIC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV3JpdGluZyAweDRDNEYuNDM0QiB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJT0xPQ0sgcmVnaXN0ZXIgdW5sb2NrcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJT0NSIHJlZ2lzdGVyLiBXcml0aW5nIGFueQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdGhlciB2YWx1ZSB0byB0aGUgR1BJT0xPQ0sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgcmUtZW5hYmxlcyB0aGUgbG9ja2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YXRlLiBSZWFkaW5nIHRoZSBHUElPTE9DSworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciByZXR1cm5zIHRoZSBsb2NrIHN0YXR1cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByYXRoZXIgdGhhbiB0aGUgMzItYml0IHZhbHVlIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2FzIHByZXZpb3VzbHkgd3JpdHRlbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlcmVmb3JlQEAgd2hlbiB3cml0ZSBhY2Nlc3NlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcmUgZGlzYWJsZWRAQCBvciBsb2NrZWRAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWFkaW5nIHRoZSBHUElPTE9DSyByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXR1cm5zIDB4MDAwMC4wMDAxLiBXaGVuIHdyaXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjY2Vzc2VzIGFyZSBlbmFibGVkQEAgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdW5sb2NrZWRAQCByZWFkaW5nIHRoZSBHUElPTE9DSworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciByZXR1cm5zIDB4MDAwMC4wMDAwLgorI2RlZmluZSBHUElPX09fR1BJT19DUiAgICAgICAgICAweDAwMDAwNTI0ICAvLyAweDQwMDAgNTUyNCAweDQwMDAgNjUyNCAweDQwMDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNzUyNCAweDQwMDIgNDUyNCBHUElPIENvbW1pdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoR1BJT0NSKUBAIG9mZnNldCAweDUyNCBUaGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJT0NSIHJlZ2lzdGVyIGlzIHRoZSBjb21taXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIuIFRoZSB2YWx1ZSBvZiB0aGUgR1BJT0NSCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyIGRldGVybWluZXMgd2hpY2ggYml0cyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgR1BJT0FGU0VMQEAgR1BJT1BVUkBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU9QRFJAQCBhbmQgR1BJT0RFTiByZWdpc3RlcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXJlIGNvbW1pdHRlZCB3aGVuIGEgd3JpdGUgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlc2UgcmVnaXN0ZXJzIGlzIHBlcmZvcm1lZC4gSWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBiaXQgaW4gdGhlIEdQSU9DUiByZWdpc3RlciBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjbGVhcmVkQEAgdGhlIGRhdGEgYmVpbmcgd3JpdHRlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byB0aGUgY29ycmVzcG9uZGluZyBiaXQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU9BRlNFTEBAIEdQSU9QVVJAQCBHUElPUERSQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3IgR1BJT0RFTiByZWdpc3RlcnMgY2Fubm90IGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbW1pdHRlZCBhbmQgcmV0YWlucyBpdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJldmlvdXMgdmFsdWUuIElmIGEgYml0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPQ1IgcmVnaXN0ZXIgaXMgc2V0QEAgdGhlIGRhdGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmVpbmcgd3JpdHRlbiB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29ycmVzcG9uZGluZyBiaXQgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU9BRlNFTEBAIEdQSU9QVVJAQCBHUElPUERSQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3IgR1BJT0RFTiByZWdpc3RlcnMgaXMgY29tbWl0dGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIHRoZSByZWdpc3RlciBhbmQgcmVmbGVjdHMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5ldyB2YWx1ZS4gVGhlIGNvbnRlbnRzIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPQ1IgcmVnaXN0ZXIgY2FuIG9ubHkgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbW9kaWZpZWQgaWYgdGhlIHN0YXR1cyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJT0xPQ0sgcmVnaXN0ZXIgaXMgdW5sb2NrZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdyaXRlcyB0byB0aGUgR1BJT0NSIHJlZ2lzdGVyIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZ25vcmVkIGlmIHRoZSBzdGF0dXMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU9MT0NLIHJlZ2lzdGVyIGlzIGxvY2tlZC4KKyNkZWZpbmUgR1BJT19PX0dQSU9fQU1TRUwgICAgICAgMHgwMDAwMDUyOCAgLy8gMHg0MDAwIDU1MjggMHg0MDAwIDY1MjggMHg0MDAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDc1MjggMHg0MDAyIDQ1MjggVGhlIEdQSU9BTVNFTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciBjb250cm9scyBpc29sYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2lyY3VpdHMgdG8gdGhlIGFuYWxvZyBzaWRlIG9mIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdW5pZmllZCBJL08gcGFkLiBCZWNhdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPcyBtYXkgYmUgZHJpdmVuIGJ5IGEgNS1WCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNvdXJjZSBhbmQgYWZmZWN0IGFuYWxvZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcGVyYXRpb25AQCBhbmFsb2cgY2lyY3VpdHJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlcXVpcmVzIGlzb2xhdGlvbiBmcm9tIHRoZSBwaW5zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdGhleSBhcmUgbm90IHVzZWQgaW4gdGhlaXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5hbG9nIGZ1bmN0aW9uLiBFYWNoIGJpdCBvZiB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyIGNvbnRyb2xzIHRoZSBpc29sYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2lyY3VpdHJ5IGZvciB0aGUgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPIHNpZ25hbC4KKyNkZWZpbmUgR1BJT19PX0dQSU9fUENUTCAgICAgICAgMHgwMDAwMDUyQyAgLy8gVGhpcyByZWdpc3RlciBpcyBub3QgdXNlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYzN4eC4gZXF1aXZhbGFudCByZWdpc3RlciBleHNpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0c2lkZSBHUElPIElQIChyZWZlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQQUQqX2NvbmZpZyByZWdpc3RlciBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2hhcmVkIGNvbW4gc3BhY2UpIDB4NDAwMCA1NTJDCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDB4NDAwMCA2NTJDIDB4NDAwMCA3NTJDIDB4NDAwMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0NTJDIEdQSU8gUG9ydCBDb250cm9sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChHUElPUENUTClAQCBvZmZzZXQgMHg1MkMgVGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU9QQ1RMIHJlZ2lzdGVyIGlzIHVzZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uanVuY3Rpb24gd2l0aCB0aGUgR1BJT0FGU0VMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyIGFuZCBzZWxlY3RzIHRoZSBzcGVjaWZpYworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwZXJpcGhlcmFsIHNpZ25hbCBmb3IgZWFjaCBHUElPCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBpbiB3aGVuIHVzaW5nIHRoZSBhbHRlcm5hdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZnVuY3Rpb24gbW9kZS4gTW9zdCBiaXRzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPQUZTRUwgcmVnaXN0ZXIgYXJlIGNsZWFyZWQgb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzZXRAQCB0aGVyZWZvcmUgbW9zdCBHUElPIHBpbnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXJlIGNvbmZpZ3VyZWQgYXMgR1BJT3MgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVmYXVsdC4gV2hlbiBhIGJpdCBpcyBzZXQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU9BRlNFTCByZWdpc3RlckBAIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3JyZXNwb25kaW5nIEdQSU8gc2lnbmFsIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRyb2xsZWQgYnkgYW4gYXNzb2NpYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwZXJpcGhlcmFsLiBUaGUgR1BJT1BDVEwgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2VsZWN0cyBvbmUgb3V0IG9mIGEgc2V0IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBlcmlwaGVyYWwgZnVuY3Rpb25zIGZvciBlYWNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU9AQCBwcm92aWRpbmcgYWRkaXRpb25hbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmbGV4aWJpbGl0eSBpbiBzaWduYWwgZGVmaW5pdGlvbi4KKyNkZWZpbmUgR1BJT19PX0dQSU9fQURDQ1RMICAgICAgMHgwMDAwMDUzMCAgLy8gVGhpcyByZWdpc3RlciBpcyBub3QgdXNlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYzN4eC4gQURDIHRyaWdnZXIgdmlhIEdQSU8gaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm90IHN1cHBvcnRlZC4gMHg0MDAwIDU1MzAgMHg0MDAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDY1MzAgMHg0MDAwIDc1MzAgMHg0MDAyIDQ1MzAgR1BJTworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBREMgQ29udHJvbCAoR1BJT0FEQ0NUTClAQCBvZmZzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMHg1MzAgVGhpcyByZWdpc3RlciBpcyB1c2VkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbmZpZ3VyZSBhIEdQSU8gcGluIGFzIGEgc291cmNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciB0aGUgQURDIHRyaWdnZXIuIE5vdGUgdGhhdCBpZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgUG9ydCBCIEdQSU9BRENDVEwgcmVnaXN0ZXIgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xlYXJlZEBAIFBCNCBjYW4gc3RpbGwgYmUgdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcyBhbiBleHRlcm5hbCB0cmlnZ2VyIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQURDLiBUaGlzIGlzIGEgbGVnYWN5IG1vZGUgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb3dzIGNvZGUgd3JpdHRlbiBmb3IgcHJldmlvdXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3RlbGxhcmlzIGRldmljZXMgdG8gb3BlcmF0ZSBvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIG1pY3JvY29udHJvbGxlci4KKyNkZWZpbmUgR1BJT19PX0dQSU9fRE1BQ1RMICAgICAgMHgwMDAwMDUzNCAgLy8gMHg0MDAwIDU1MzQgMHg0MDAwIDY1MzQgMHg0MDAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDc1MzQgMHg0MDAyIDQ1MzQgR1BJTyBETUEgQ29udHJvbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoR1BJT0RNQUNUTClAQCBvZmZzZXQgMHg1MzQgVGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciBpcyB1c2VkIHRvIGNvbmZpZ3VyZSBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU8gcGluIGFzIGEgc291cmNlIGZvciB0aGUgP0RNQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmlnZ2VyLgorI2RlZmluZSBHUElPX09fR1BJT19TSSAgICAgICAgICAweDAwMDAwNTM4ICAvLyAweDQwMDAgNTUzOCAweDQwMDAgNjUzOCAweDQwMDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNzUzOCAweDQwMDIgNDUzOCBHUElPIFNlbGVjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbnRlcnJ1cHQgKEdQSU9TSSlAQCBvZmZzZXQgMHg1MzgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyByZWdpc3RlciBpcyB1c2VkIHRvIGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmRpdmlkdWFsIGludGVycnVwdHMgZm9yIGVhY2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGluLiBOb3RlOiBUaGlzIHJlZ2lzdGVyIGlzIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXZhaWxhYmxlIG9uIFBvcnQgUCBhbmQgUG9ydCBRLgorI2RlZmluZSBHUElPX09fR1BJT19QRVJJUEhJRDQgICAweDAwMDAwRkQwICAvLyAweDQwMDAgNUZEMCAweDQwMDAgNkZEMCAweDQwMDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gN0ZEMCAweDQwMDIgNEZEMCBHUElPIFBlcmlwaGVyYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWRlbnRpZmljYXRpb24gNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoR1BJT1BlcmlwaElENClAQCBvZmZzZXQgMHhGRDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIEdQSU9QZXJpcGhJRDRAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPUGVyaXBoSUQ1QEAgR1BJT1BlcmlwaElENkBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBHUElPUGVyaXBoSUQ3IHJlZ2lzdGVycyBjYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uY2VwdHVhbGx5IGJlIHRyZWF0ZWQgYXMgb25lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDMyLWJpdCByZWdpc3RlcjsgZWFjaCByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250YWlucyBlaWdodCBiaXRzIG9mIHRoZSAzMi1iaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXJAQCB1c2VkIGJ5IHNvZnR3YXJlIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlkZW50aWZ5IHRoZSBwZXJpcGhlcmFsLgorI2RlZmluZSBHUElPX09fR1BJT19QRVJJUEhJRDUgICAweDAwMDAwRkQ0ICAvLyAweDQwMDAgNUZENCAweDQwMDAgNkZENCAweDQwMDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gN0ZENCAweDQwMDIgNEZENCBHUElPIFBlcmlwaGVyYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWRlbnRpZmljYXRpb24gNQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoR1BJT1BlcmlwaElENSlAQCBvZmZzZXQgMHhGRDQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIEdQSU9QZXJpcGhJRDRAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPUGVyaXBoSUQ1QEAgR1BJT1BlcmlwaElENkBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBHUElPUGVyaXBoSUQ3IHJlZ2lzdGVycyBjYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uY2VwdHVhbGx5IGJlIHRyZWF0ZWQgYXMgb25lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDMyLWJpdCByZWdpc3RlcjsgZWFjaCByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250YWlucyBlaWdodCBiaXRzIG9mIHRoZSAzMi1iaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXJAQCB1c2VkIGJ5IHNvZnR3YXJlIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlkZW50aWZ5IHRoZSBwZXJpcGhlcmFsLgorI2RlZmluZSBHUElPX09fR1BJT19QRVJJUEhJRDYgICAweDAwMDAwRkQ4ICAvLyAweDQwMDAgNUZEOCAweDQwMDAgNkZEOCAweDQwMDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gN0ZEOCAweDQwMDIgNEZEOCBHUElPIFBlcmlwaGVyYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWRlbnRpZmljYXRpb24gNgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoR1BJT1BlcmlwaElENilAQCBvZmZzZXQgMHhGRDgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIEdQSU9QZXJpcGhJRDRAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPUGVyaXBoSUQ1QEAgR1BJT1BlcmlwaElENkBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBHUElPUGVyaXBoSUQ3IHJlZ2lzdGVycyBjYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uY2VwdHVhbGx5IGJlIHRyZWF0ZWQgYXMgb25lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDMyLWJpdCByZWdpc3RlcjsgZWFjaCByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250YWlucyBlaWdodCBiaXRzIG9mIHRoZSAzMi1iaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXJAQCB1c2VkIGJ5IHNvZnR3YXJlIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlkZW50aWZ5IHRoZSBwZXJpcGhlcmFsLgorI2RlZmluZSBHUElPX09fR1BJT19QRVJJUEhJRDcgICAweDAwMDAwRkRDICAvLyAweDQwMDAgNUZEQyAweDQwMDAgNkZEQyAweDQwMDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gN0ZEQyAweDQwMDIgNEZEQyBHUElPIFBlcmlwaGVyYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWRlbnRpZmljYXRpb24gNworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoR1BJT1BlcmlwaElENylAQCBvZmZzZXQgMHhGREMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIEdQSU9QZXJpcGhJRDRAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPUGVyaXBoSUQ1QEAgR1BJT1BlcmlwaElENkBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBHUElPUGVyaXBoSUQ3IHJlZ2lzdGVycyBjYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uY2VwdHVhbGx5IGJlIHRyZWF0ZWQgYXMgb25lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDMyLWJpdCByZWdpc3RlcjsgZWFjaCByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250YWlucyBlaWdodCBiaXRzIG9mIHRoZSAzMi1iaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXJAQCB1c2VkIGJ5IHNvZnR3YXJlIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlkZW50aWZ5IHRoZSBwZXJpcGhlcmFsLgorI2RlZmluZSBHUElPX09fR1BJT19QRVJJUEhJRDAgICAweDAwMDAwRkUwICAvLyAweDQwMDAgNUZFMCAweDQwMDAgNkZFMCAweDQwMDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gN0ZFMCAweDQwMDIgNEZFMCBHUElPIFBlcmlwaGVyYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWRlbnRpZmljYXRpb24gMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoR1BJT1BlcmlwaElEMClAQCBvZmZzZXQgMHhGRTAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIEdQSU9QZXJpcGhJRDBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPUGVyaXBoSUQxQEAgR1BJT1BlcmlwaElEMkBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBHUElPUGVyaXBoSUQzIHJlZ2lzdGVycyBjYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uY2VwdHVhbGx5IGJlIHRyZWF0ZWQgYXMgb25lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDMyLWJpdCByZWdpc3RlcjsgZWFjaCByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250YWlucyBlaWdodCBiaXRzIG9mIHRoZSAzMi1iaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXJAQCB1c2VkIGJ5IHNvZnR3YXJlIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlkZW50aWZ5IHRoZSBwZXJpcGhlcmFsLgorI2RlZmluZSBHUElPX09fR1BJT19QRVJJUEhJRDEgICAweDAwMDAwRkU0ICAvLyAweDQwMDAgNUZFNCAweDQwMDAgNkZFNCAweDQwMDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gN0ZFNCAweDQwMDIgNEZFNCBHUElPIFBlcmlwaGVyYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWRlbnRpZmljYXRpb24gMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoR1BJT1BlcmlwaElEMSlAQCBvZmZzZXQgMHhGRTQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIEdQSU9QZXJpcGhJRDBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPUGVyaXBoSUQxQEAgR1BJT1BlcmlwaElEMkBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBHUElPUGVyaXBoSUQzIHJlZ2lzdGVycyBjYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uY2VwdHVhbGx5IGJlIHRyZWF0ZWQgYXMgb25lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDMyLWJpdCByZWdpc3RlcjsgZWFjaCByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250YWlucyBlaWdodCBiaXRzIG9mIHRoZSAzMi1iaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXJAQCB1c2VkIGJ5IHNvZnR3YXJlIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlkZW50aWZ5IHRoZSBwZXJpcGhlcmFsLgorI2RlZmluZSBHUElPX09fR1BJT19QRVJJUEhJRDIgICAweDAwMDAwRkU4ICAvLyAweDQwMDAgNUZFOCAweDQwMDAgNkZFOCAweDQwMDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gN0ZFOCAweDQwMDIgNEZFOCBHUElPIFBlcmlwaGVyYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWRlbnRpZmljYXRpb24gMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoR1BJT1BlcmlwaElEMilAQCBvZmZzZXQgMHhGRTgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIEdQSU9QZXJpcGhJRDBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPUGVyaXBoSUQxQEAgR1BJT1BlcmlwaElEMkBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBHUElPUGVyaXBoSUQzIHJlZ2lzdGVycyBjYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uY2VwdHVhbGx5IGJlIHRyZWF0ZWQgYXMgb25lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDMyLWJpdCByZWdpc3RlcjsgZWFjaCByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250YWlucyBlaWdodCBiaXRzIG9mIHRoZSAzMi1iaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXJAQCB1c2VkIGJ5IHNvZnR3YXJlIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlkZW50aWZ5IHRoZSBwZXJpcGhlcmFsLgorI2RlZmluZSBHUElPX09fR1BJT19QRVJJUEhJRDMgICAweDAwMDAwRkVDICAvLyAweDQwMDAgNUZFQyAweDQwMDAgNkZFQyAweDQwMDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gN0ZFQyAweDQwMDIgNEZFQyBHUElPIFBlcmlwaGVyYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWRlbnRpZmljYXRpb24gMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoR1BJT1BlcmlwaElEMylAQCBvZmZzZXQgMHhGRUMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIEdQSU9QZXJpcGhJRDBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPUGVyaXBoSUQxQEAgR1BJT1BlcmlwaElEMkBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBHUElPUGVyaXBoSUQzIHJlZ2lzdGVycyBjYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uY2VwdHVhbGx5IGJlIHRyZWF0ZWQgYXMgb25lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDMyLWJpdCByZWdpc3RlcjsgZWFjaCByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250YWlucyBlaWdodCBiaXRzIG9mIHRoZSAzMi1iaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXJAQCB1c2VkIGJ5IHNvZnR3YXJlIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlkZW50aWZ5IHRoZSBwZXJpcGhlcmFsLgorI2RlZmluZSBHUElPX09fR1BJT19QQ0VMTElEMCAgICAweDAwMDAwRkYwICAvLyAweDQwMDAgNUZGMCAweDQwMDAgNkZGMCAweDQwMDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gN0ZGMCAweDQwMDIgNEZGMCBHUElPIFByaW1lQ2VsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZGVudGlmaWNhdGlvbiAwIChHUElPUENlbGxJRDApQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2Zmc2V0IDB4RkYwIFRoZSBHUElPUENlbGxJRDBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPUENlbGxJRDFAQCBHUElPUENlbGxJRDJAQCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJT1BDZWxsSUQzIHJlZ2lzdGVycyBhcmUgZm91cgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA4LWJpdCB3aWRlIHJlZ2lzdGVyc0BAIHRoYXQgY2FuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbmNlcHR1YWxseSBiZSB0cmVhdGVkIGFzIG9uZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAzMi1iaXQgcmVnaXN0ZXIuIFRoZSByZWdpc3RlciBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VkIGFzIGEgc3RhbmRhcmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY3Jvc3MtcGVyaXBoZXJhbCBpZGVudGlmaWNhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzeXN0ZW0uCisjZGVmaW5lIEdQSU9fT19HUElPX1BDRUxMSUQxICAgIDB4MDAwMDBGRjQgIC8vIDB4NDAwMCA1RkY0IDB4NDAwMCA2RkY0IDB4NDAwMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA3RkY0IDB4NDAwMiA0RkY0IEdQSU8gUHJpbWVDZWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElkZW50aWZpY2F0aW9uIDEgKEdQSU9QQ2VsbElEMSlAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZmZzZXQgMHhGRjQgVGhlIEdQSU9QQ2VsbElEMEBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU9QQ2VsbElEMUBAIEdQSU9QQ2VsbElEMkBAIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPUENlbGxJRDMgcmVnaXN0ZXJzIGFyZSBmb3VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDgtYml0IHdpZGUgcmVnaXN0ZXJzQEAgdGhhdCBjYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uY2VwdHVhbGx5IGJlIHRyZWF0ZWQgYXMgb25lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDMyLWJpdCByZWdpc3Rlci4gVGhlIHJlZ2lzdGVyIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgYXMgYSBzdGFuZGFyZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjcm9zcy1wZXJpcGhlcmFsIGlkZW50aWZpY2F0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN5c3RlbS4KKyNkZWZpbmUgR1BJT19PX0dQSU9fUENFTExJRDIgICAgMHgwMDAwMEZGOCAgLy8gMHg0MDAwIDVGRjggMHg0MDAwIDZGRjggMHg0MDAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDdGRjggMHg0MDAyIDRGRjggR1BJTyBQcmltZUNlbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWRlbnRpZmljYXRpb24gMiAoR1BJT1BDZWxsSUQyKUBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mZnNldCAweEZGOCBUaGUgR1BJT1BDZWxsSUQwQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJT1BDZWxsSUQxQEAgR1BJT1BDZWxsSUQyQEAgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU9QQ2VsbElEMyByZWdpc3RlcnMgYXJlIGZvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOC1iaXQgd2lkZSByZWdpc3RlcnNAQCB0aGF0IGNhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25jZXB0dWFsbHkgYmUgdHJlYXRlZCBhcyBvbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMzItYml0IHJlZ2lzdGVyLiBUaGUgcmVnaXN0ZXIgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCBhcyBhIHN0YW5kYXJkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNyb3NzLXBlcmlwaGVyYWwgaWRlbnRpZmljYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3lzdGVtLgorI2RlZmluZSBHUElPX09fR1BJT19QQ0VMTElEMyAgICAweDAwMDAwRkZDICAvLyAweDQwMDAgNUZGQyAweDQwMDAgNkZGQyAweDQwMDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gN0ZGQyAweDQwMDIgNEZGQyBHUElPIFByaW1lQ2VsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZGVudGlmaWNhdGlvbiAzIChHUElPUENlbGxJRDMpQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2Zmc2V0IDB4RkZDIFRoZSBHUElPUENlbGxJRDBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPUENlbGxJRDFAQCBHUElPUENlbGxJRDJAQCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJT1BDZWxsSUQzIHJlZ2lzdGVycyBhcmUgZm91cgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA4LWJpdCB3aWRlIHJlZ2lzdGVyc0BAIHRoYXQgY2FuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbmNlcHR1YWxseSBiZSB0cmVhdGVkIGFzIG9uZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAzMi1iaXQgcmVnaXN0ZXIuIFRoZSByZWdpc3RlciBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VkIGFzIGEgc3RhbmRhcmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY3Jvc3MtcGVyaXBoZXJhbCBpZGVudGlmaWNhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzeXN0ZW0uMHhiMQorCisKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUgR1BJT19PX0dQSU9fREFUQSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUElPX0dQSU9fREFUQV9EQVRBX00gICAweDAwMDAwMEZGICAvLyBHUElPIERhdGEgVGhpcyByZWdpc3RlciBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2aXJ0dWFsbHkgbWFwcGVkIHRvIDI1NiBsb2NhdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW4gdGhlIGFkZHJlc3Mgc3BhY2UuIFRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZhY2lsaXRhdGUgdGhlIHJlYWRpbmcgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyaXRpbmcgb2YgZGF0YSB0byB0aGVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlcnMgYnkgaW5kZXBlbmRlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHJpdmVyc0BAIHRoZSBkYXRhIHJlYWQgZnJvbSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdHRlbiB0byB0aGUgcmVnaXN0ZXJzIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYXNrZWQgYnkgdGhlIGVpZ2h0IGFkZHJlc3MgbGluZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzk6Ml0uIFJlYWRzIGZyb20gdGhpcyByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXR1cm4gaXRzIGN1cnJlbnQgc3RhdGUuIFdyaXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byB0aGlzIHJlZ2lzdGVyIG9ubHkgYWZmZWN0IGJpdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCBhcmUgbm90IG1hc2tlZCBieSBBRERSWzk6Ml0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIGFyZSBjb25maWd1cmVkIGFzIG91dHB1dHMuCisjZGVmaW5lIEdQSU9fR1BJT19EQVRBX0RBVEFfUyAgIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlIEdQSU9fT19HUElPX0RJUiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUElPX0dQSU9fRElSX0RJUl9NICAgICAweDAwMDAwMEZGICAvLyBHUElPIERhdGEgRGlyZWN0aW9uIFZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlc2NyaXB0aW9uIDAgQ29ycmVzcG9uZGluZyBwaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgYW4gaW5wdXQuIDEgQ29ycmVzcG9uZGluZyBwaW5zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGFuIG91dHB1dC4KKyNkZWZpbmUgR1BJT19HUElPX0RJUl9ESVJfUyAgICAgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUgR1BJT19PX0dQSU9fSVMgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BJT19HUElPX0lTX0lTX00gICAgICAgMHgwMDAwMDBGRiAgLy8gR1BJTyBJbnRlcnJ1cHQgU2Vuc2UgVmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVzY3JpcHRpb24gMCBUaGUgZWRnZSBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29ycmVzcG9uZGluZyBwaW4gaXMgZGV0ZWN0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKGVkZ2Utc2Vuc2l0aXZlKS4gMSBUaGUgbGV2ZWwgb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGNvcnJlc3BvbmRpbmcgcGluIGlzIGRldGVjdGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChsZXZlbC1zZW5zaXRpdmUpLgorI2RlZmluZSBHUElPX0dQSU9fSVNfSVNfUyAgICAgICAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZSBHUElPX09fR1BJT19JQkUgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BJT19HUElPX0lCRV9JQkVfTSAgICAgMHgwMDAwMDBGRiAgLy8gR1BJTyBJbnRlcnJ1cHQgQm90aCBFZGdlcyBWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZXNjcmlwdGlvbiAwIEludGVycnVwdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZW5lcmF0aW9uIGlzIGNvbnRyb2xsZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU8gSW50ZXJydXB0IEV2ZW50IChHUElPSUVWKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3Rlci4gMSBCb3RoIGVkZ2VzIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3JyZXNwb25kaW5nIHBpbiB0cmlnZ2VyIGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVycnVwdC4KKyNkZWZpbmUgR1BJT19HUElPX0lCRV9JQkVfUyAgICAgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUgR1BJT19PX0dQSU9fSUVWIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQSU9fR1BJT19JRVZfSUVWX00gICAgIDB4MDAwMDAwRkYgIC8vIEdQSU8gSW50ZXJydXB0IEV2ZW50IFZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlc2NyaXB0aW9uIDEgQSBmYWxsaW5nIGVkZ2Ugb3IgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBMb3cgbGV2ZWwgb24gdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGluIHRyaWdnZXJzIGFuIGludGVycnVwdC4gMCBBCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJpc2luZyBlZGdlIG9yIGEgSGlnaCBsZXZlbCBvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgY29ycmVzcG9uZGluZyBwaW4gdHJpZ2dlcnMgYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJydXB0LgorI2RlZmluZSBHUElPX0dQSU9fSUVWX0lFVl9TICAgICAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZSBHUElPX09fR1BJT19JTSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUElPX0dQSU9fSU1fSU1FX00gICAgICAweDAwMDAwMEZGICAvLyBHUElPIEludGVycnVwdCBNYXNrIEVuYWJsZSBWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZXNjcmlwdGlvbiAwIFRoZSBpbnRlcnJ1cHQgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgY29ycmVzcG9uZGluZyBwaW4gaXMgbWFza2VkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxIFRoZSBpbnRlcnJ1cHQgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29ycmVzcG9uZGluZyBwaW4gaXMgc2VudCB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJydXB0IGNvbnRyb2xsZXIuCisjZGVmaW5lIEdQSU9fR1BJT19JTV9JTUVfUyAgICAgIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlIEdQSU9fT19HUElPX1JJUyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUElPX0dQSU9fUklTX1JJU19NICAgICAweDAwMDAwMEZGICAvLyBHUElPIEludGVycnVwdCBSYXcgU3RhdHVzIFZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlc2NyaXB0aW9uIDEgQW4gaW50ZXJydXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbmRpdGlvbiBoYXMgb2NjdXJyZWQgb24gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgcGluLiAwIGludGVycnVwdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25kaXRpb24gaGFzIG5vdCBvY2N1cnJlZCBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29ycmVzcG9uZGluZyBwaW4uIEEgYml0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsZWFyZWQgYnkgd3JpdGluZyBhIDEgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgYml0IGluIHRoZSBHUElPSUNSCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyLgorI2RlZmluZSBHUElPX0dQSU9fUklTX1JJU19TICAgICAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZSBHUElPX09fR1BJT19NSVMgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BJT19HUElPX01JU19NSVNfTSAgICAgMHgwMDAwMDBGRiAgLy8gR1BJTyBNYXNrZWQgSW50ZXJydXB0IFN0YXR1cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBWYWx1ZSBEZXNjcmlwdGlvbiAxIEFuIGludGVycnVwdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25kaXRpb24gb24gdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGluIGhhcyB0cmlnZ2VyZWQgYW4gaW50ZXJydXB0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlci4gMCBBbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRlcnJ1cHQgY29uZGl0aW9uIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3JyZXNwb25kaW5nIHBpbiBpcyBtYXNrZWQgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFzIG5vdCBvY2N1cnJlZC4gQSBiaXQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xlYXJlZCBieSB3cml0aW5nIGEgMSB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29ycmVzcG9uZGluZyBiaXQgaW4gdGhlIEdQSU9JQ1IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIuCisjZGVmaW5lIEdQSU9fR1BJT19NSVNfTUlTX1MgICAgIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlIEdQSU9fT19HUElPX0lDUiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUElPX0dQSU9fSUNSX0lDX00gICAgICAweDAwMDAwMEZGICAvLyBHUElPIEludGVycnVwdCBDbGVhciBWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZXNjcmlwdGlvbiAxIFRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVycnVwdCBpcyBjbGVhcmVkLiAwIFRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3JyZXNwb25kaW5nIGludGVycnVwdCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1bmFmZmVjdGVkLgorI2RlZmluZSBHUElPX0dQSU9fSUNSX0lDX1MgICAgICAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZSBHUElPX09fR1BJT19BRlNFTCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUgR1BJT19PX0dQSU9fRFIyUiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUElPX0dQSU9fRFIyUl9EUlYyX00gICAweDAwMDAwMEZGICAvLyBUaGlzIHJlZ2lzdGVyIGlzIG5vdCB1c2VkIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNjM3h4LiBlcXVpdmFsYW50IHJlZ2lzdGVyIGV4c2lzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRzaWRlIEdQSU8gSVAgKHJlZmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBBRCpfY29uZmlnIHJlZ2lzdGVyIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaGFyZWQgY29tbiBzcGFjZSkgT3V0cHV0IFBhZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAyLW1BIERyaXZlIEVuYWJsZSBWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZXNjcmlwdGlvbiAxIFRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU8gcGluIGhhcyAyLW1BIGRyaXZlLiBUaGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHJpdmUgZm9yIHRoZSBjb3JyZXNwb25kaW5nIEdQSU8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGluIGlzIGNvbnRyb2xsZWQgYnkgdGhlIEdQSU9EUjRSCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIEdQSU9EUjhSIHJlZ2lzdGVyLiAwIFNldHRpbmcgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiaXQgaW4gZWl0aGVyIHRoZSBHUElPRFI0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyIG9yIHRoZSBHUElPRFI4IHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsZWFycyB0aGUgY29ycmVzcG9uZGluZyAyLW1BCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZSBiaXQuIFRoZSBjaGFuZ2UgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWZmZWN0aXZlIG9uIHRoZSBzZWNvbmQgY2xvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY3ljbGUgYWZ0ZXIgdGhlIHdyaXRlIGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjY2Vzc2luZyBHUElPIHZpYSB0aGUgQVBCIG1lbW9yeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcGVydHVyZS4gSWYgdXNpbmcgQUhCIGFjY2Vzc0BACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBjaGFuZ2UgaXMgZWZmZWN0aXZlIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBuZXh0IGNsb2NrIGN5Y2xlLgorI2RlZmluZSBHUElPX0dQSU9fRFIyUl9EUlYyX1MgICAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZSBHUElPX09fR1BJT19EUjRSIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQSU9fR1BJT19EUjRSX0RSVjRfTSAgIDB4MDAwMDAwRkYgIC8vIFRoaXMgcmVnaXN0ZXIgaXMgbm90IHVzZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2MzeHguIGVxdWl2YWxhbnQgcmVnaXN0ZXIgZXhzaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHNpZGUgR1BJTyBJUCAocmVmZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUEFEKl9jb25maWcgcmVnaXN0ZXIgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNoYXJlZCBjb21uIHNwYWNlKSBPdXRwdXQgUGFkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDQtbUEgRHJpdmUgRW5hYmxlIFZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlc2NyaXB0aW9uIDEgVGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTyBwaW4gaGFzIDQtbUEgZHJpdmUuIFRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkcml2ZSBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgR1BJTworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwaW4gaXMgY29udHJvbGxlZCBieSB0aGUgR1BJT0RSMlIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3IgR1BJT0RSOFIgcmVnaXN0ZXIuIDAgU2V0dGluZyBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdCBpbiBlaXRoZXIgdGhlIEdQSU9EUjIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgb3IgdGhlIEdQSU9EUjggcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xlYXJzIHRoZSBjb3JyZXNwb25kaW5nIDQtbUEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlIGJpdC4gVGhlIGNoYW5nZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlZmZlY3RpdmUgb24gdGhlIHNlY29uZCBjbG9jaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjeWNsZSBhZnRlciB0aGUgd3JpdGUgaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWNjZXNzaW5nIEdQSU8gdmlhIHRoZSBBUEIgbWVtb3J5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFwZXJ0dXJlLiBJZiB1c2luZyBBSEIgYWNjZXNzQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGNoYW5nZSBpcyBlZmZlY3RpdmUgb24gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5leHQgY2xvY2sgY3ljbGUuCisjZGVmaW5lIEdQSU9fR1BJT19EUjRSX0RSVjRfUyAgIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlIEdQSU9fT19HUElPX0RSOFIgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BJT19HUElPX0RSOFJfRFJWOF9NICAgMHgwMDAwMDBGRiAgLy8gVGhpcyByZWdpc3RlciBpcyBub3QgdXNlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYzN4eC4gZXF1aXZhbGFudCByZWdpc3RlciBleHNpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0c2lkZSBHUElPIElQIChyZWZlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQQUQqX2NvbmZpZyByZWdpc3RlciBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2hhcmVkIGNvbW4gc3BhY2UpIE91dHB1dCBQYWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOC1tQSBEcml2ZSBFbmFibGUgVmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVzY3JpcHRpb24gMSBUaGUgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPIHBpbiBoYXMgOC1tQSBkcml2ZS4gVGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRyaXZlIGZvciB0aGUgY29ycmVzcG9uZGluZyBHUElPCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBpbiBpcyBjb250cm9sbGVkIGJ5IHRoZSBHUElPRFIyUgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvciBHUElPRFI0UiByZWdpc3Rlci4gMCBTZXR0aW5nIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0IGluIGVpdGhlciB0aGUgR1BJT0RSMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciBvciB0aGUgR1BJT0RSNCByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjbGVhcnMgdGhlIGNvcnJlc3BvbmRpbmcgOC1tQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGUgYml0LiBUaGUgY2hhbmdlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVmZmVjdGl2ZSBvbiB0aGUgc2Vjb25kIGNsb2NrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGN5Y2xlIGFmdGVyIHRoZSB3cml0ZSBpZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY2Nlc3NpbmcgR1BJTyB2aWEgdGhlIEFQQiBtZW1vcnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXBlcnR1cmUuIElmIHVzaW5nIEFIQiBhY2Nlc3NAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgY2hhbmdlIGlzIGVmZmVjdGl2ZSBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmV4dCBjbG9jayBjeWNsZS4KKyNkZWZpbmUgR1BJT19HUElPX0RSOFJfRFJWOF9TICAgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUgR1BJT19PX0dQSU9fT0RSIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQSU9fR1BJT19PRFJfT0RFX00gICAgIDB4MDAwMDAwRkYgIC8vIFRoaXMgcmVnaXN0ZXIgaXMgbm90IHVzZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2MzeHguIGVxdWl2YWxhbnQgcmVnaXN0ZXIgZXhzaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHNpZGUgR1BJTyBJUCAocmVmZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUEFEKl9jb25maWcgcmVnaXN0ZXIgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNoYXJlZCBjb21uIHNwYWNlKSBPdXRwdXQgUGFkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9wZW4gRHJhaW4gRW5hYmxlIFZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlc2NyaXB0aW9uIDEgVGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGluIGlzIGNvbmZpZ3VyZWQgYXMgb3BlbiBkcmFpbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMCBUaGUgY29ycmVzcG9uZGluZyBwaW4gaXMgbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbmZpZ3VyZWQgYXMgb3BlbiBkcmFpbi4KKyNkZWZpbmUgR1BJT19HUElPX09EUl9PREVfUyAgICAgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUgR1BJT19PX0dQSU9fUFVSIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQSU9fR1BJT19QVVJfUFVFX00gICAgIDB4MDAwMDAwRkYgIC8vIFRoaXMgcmVnaXN0ZXIgaXMgbm90IHVzZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2MzeHguIGVxdWl2YWxhbnQgcmVnaXN0ZXIgZXhzaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHNpZGUgR1BJTyBJUCAocmVmZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUEFEKl9jb25maWcgcmVnaXN0ZXIgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNoYXJlZCBjb21uIHNwYWNlKSBQYWQgV2VhaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQdWxsLVVwIEVuYWJsZSBWYWx1ZSBEZXNjcmlwdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxIFRoZSBjb3JyZXNwb25kaW5nIHBpbiBoYXMgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZWFrIHB1bGwtdXAgcmVzaXN0b3IuIDAgVGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgcGluIGlzIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhZmZlY3RlZC4gU2V0dGluZyBhIGJpdCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJT1BEUiByZWdpc3RlciBjbGVhcnMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgYml0IGluIHRoZSBHUElPUFVSCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyLiBUaGUgY2hhbmdlIGlzIGVmZmVjdGl2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvbiB0aGUgc2Vjb25kIGNsb2NrIGN5Y2xlIGFmdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSB3cml0ZSBpZiBhY2Nlc3NpbmcgR1BJTyB2aWEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIEFQQiBtZW1vcnkgYXBlcnR1cmUuIElmIHVzaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFIQiBhY2Nlc3NAQCB0aGUgY2hhbmdlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVmZmVjdGl2ZSBvbiB0aGUgbmV4dCBjbG9jaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjeWNsZS4KKyNkZWZpbmUgR1BJT19HUElPX1BVUl9QVUVfUyAgICAgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUgR1BJT19PX0dQSU9fUERSIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQSU9fR1BJT19QRFJfUERFX00gICAgIDB4MDAwMDAwRkYgIC8vIFRoaXMgcmVnaXN0ZXIgaXMgbm90IHVzZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2MzeHguIGVxdWl2YWxhbnQgcmVnaXN0ZXIgZXhzaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHNpZGUgR1BJTyBJUCAocmVmZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUEFEKl9jb25maWcgcmVnaXN0ZXIgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNoYXJlZCBjb21uIHNwYWNlKSBQYWQgV2VhaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQdWxsLURvd24gRW5hYmxlIFZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlc2NyaXB0aW9uIDEgVGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGluIGhhcyBhIHdlYWsgcHVsbC1kb3duCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc2lzdG9yLiAwIFRoZSBjb3JyZXNwb25kaW5nIHBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBub3QgYWZmZWN0ZWQuIFNldHRpbmcgYSBiaXQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIEdQSU9QVVIgcmVnaXN0ZXIgY2xlYXJzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3JyZXNwb25kaW5nIGJpdCBpbiB0aGUgR1BJT1BEUgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3Rlci4gVGhlIGNoYW5nZSBpcyBlZmZlY3RpdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb24gdGhlIHNlY29uZCBjbG9jayBjeWNsZSBhZnRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgd3JpdGUgaWYgYWNjZXNzaW5nIEdQSU8gdmlhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBBUEIgbWVtb3J5IGFwZXJ0dXJlLiBJZiB1c2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBSEIgYWNjZXNzQEAgdGhlIGNoYW5nZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlZmZlY3RpdmUgb24gdGhlIG5leHQgY2xvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY3ljbGUuCisjZGVmaW5lIEdQSU9fR1BJT19QRFJfUERFX1MgICAgIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlIEdQSU9fT19HUElPX1NMUiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUElPX0dQSU9fU0xSX1NSTF9NICAgICAweDAwMDAwMEZGICAvLyBUaGlzIHJlZ2lzdGVyIGlzIG5vdCB1c2VkIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNjM3h4LiBlcXVpdmFsYW50IHJlZ2lzdGVyIGV4c2lzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRzaWRlIEdQSU8gSVAgKHJlZmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBBRCpfY29uZmlnIHJlZ2lzdGVyIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaGFyZWQgY29tbiBzcGFjZSkgU2xldyBSYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIExpbWl0IEVuYWJsZSAoOC1tQSBkcml2ZSBvbmx5KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBWYWx1ZSBEZXNjcmlwdGlvbiAxIFNsZXcgcmF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250cm9sIGlzIGVuYWJsZWQgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3JyZXNwb25kaW5nIHBpbi4gMCBTbGV3IHJhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udHJvbCBpcyBkaXNhYmxlZCBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgcGluLgorI2RlZmluZSBHUElPX0dQSU9fU0xSX1NSTF9TICAgICAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZSBHUElPX09fR1BJT19ERU4gcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BJT19HUElPX0RFTl9ERU5fTSAgICAgMHgwMDAwMDBGRiAgLy8gVGhpcyByZWdpc3RlciBpcyBub3QgdXNlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYzN4eC4gZXF1aXZhbGFudCByZWdpc3RlciBleHNpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0c2lkZSBHUElPIElQIChyZWZlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQQUQqX2NvbmZpZyByZWdpc3RlciBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2hhcmVkIGNvbW4gc3BhY2UpIERpZ2l0YWwgRW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFZhbHVlIERlc2NyaXB0aW9uIDAgVGhlIGRpZ2l0YWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZnVuY3Rpb25zIGZvciB0aGUgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwaW4gYXJlIGRpc2FibGVkLiAxIFRoZSBkaWdpdGFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZ1bmN0aW9ucyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGluIGFyZSBlbmFibGVkLgorI2RlZmluZSBHUElPX0dQSU9fREVOX0RFTl9TICAgICAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZSBHUElPX09fR1BJT19MT0NLIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQSU9fR1BJT19MT0NLX0xPQ0tfTSAgIDB4RkZGRkZGRkYgIC8vIFRoaXMgcmVnaXN0ZXIgaXMgbm90IHVzZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2MzeHguIEdQSU8gTG9jayBBIHdyaXRlIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZSAweDRDNEYuNDM0QiB1bmxvY2tzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPIENvbW1pdCAoR1BJT0NSKSByZWdpc3RlciBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdGUgYWNjZXNzLkEgd3JpdGUgb2YgYW55IG90aGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlIG9yIGEgd3JpdGUgdG8gdGhlIEdQSU9DUgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciByZWFwcGxpZXMgdGhlIGxvY2tAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcmV2ZW50aW5nIGFueSByZWdpc3RlciB1cGRhdGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBIHJlYWQgb2YgdGhpcyByZWdpc3RlciByZXR1cm5zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBmb2xsb3dpbmcgdmFsdWVzOiBWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZXNjcmlwdGlvbiAweDEgVGhlIEdQSU9DUgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciBpcyBsb2NrZWQgYW5kIG1heSBub3QgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbW9kaWZpZWQuIDB4MCBUaGUgR1BJT0NSIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIHVubG9ja2VkIGFuZCBtYXkgYmUgbW9kaWZpZWQuCisjZGVmaW5lIEdQSU9fR1BJT19MT0NLX0xPQ0tfUyAgIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlIEdQSU9fT19HUElPX0NSIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQSU9fR1BJT19DUl9DUl9NICAgICAgIDB4MDAwMDAwRkYgIC8vIFRoaXMgcmVnaXN0ZXIgaXMgbm90IHVzZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2MzeHguIGVxdWl2YWxhbnQgcmVnaXN0ZXIgZXhzaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHNpZGUgR1BJTyBJUCAocmVmZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUEFEKl9jb25maWcgcmVnaXN0ZXIgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNoYXJlZCBjb21uIHNwYWNlKSBHUElPIENvbW1pdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBWYWx1ZSBEZXNjcmlwdGlvbiBUaGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29ycmVzcG9uZGluZyBHUElPQUZTRUxAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPUFVSQEAgR1BJT1BEUkBAIG9yIEdQSU9ERU4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0cyBjYW4gYmUgd3JpdHRlbi4gMSBUaGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29ycmVzcG9uZGluZyBHUElPQUZTRUxAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPUFVSQEAgR1BJT1BEUkBAIG9yIEdQSU9ERU4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0cyBjYW5ub3QgYmUgd3JpdHRlbi4gMCBOb3RlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgZGVmYXVsdCByZWdpc3RlciB0eXBlIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJT0NSIHJlZ2lzdGVyIGlzIFJPIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTyBwaW5zIHdpdGggdGhlIGV4Y2VwdGlvbiBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgTk1JIHBpbiBhbmQgdGhlIGZvdXIgSlRBRy9TV0QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGlucyAoUEQ3QEAgUEYwQEAgYW5kIFBDWzM6MF0pLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGVzZSBzaXggcGlucyBhcmUgdGhlIG9ubHkgR1BJT3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCBhcmUgcHJvdGVjdGVkIGJ5IHRoZSBHUElPQ1IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIuIEJlY2F1c2Ugb2YgdGhpc0BAIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciB0eXBlIGZvciBHUElPIFBvcnQgRDdAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPIFBvcnQgRjBAQCBhbmQgR1BJTyBQb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENbMzowXSBpcyBSL1cuIFRoZSBkZWZhdWx0IHJlc2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlIGZvciB0aGUgR1BJT0NSIHJlZ2lzdGVyIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDB4MDAwMC4wMEZGIGZvciBhbGwgR1BJTyBwaW5zQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBOTUkgcGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCB0aGUgZm91ciBKVEFHL1NXRCBwaW5zIChQRDdAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQRjBAQCBhbmQgUENbMzowXSkuIFRvIGVuc3VyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGF0IHRoZSBKVEFHIHBvcnQgaXMgbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjY2lkZW50YWxseSBwcm9ncmFtbWVkIGFzIEdQSU8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGluc0BAIHRoZSBQQ1szOjBdIHBpbnMgZGVmYXVsdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBub24tY29tbWl0dGFibGUuIFNpbWlsYXJseUBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGVuc3VyZSB0aGF0IHRoZSBOTUkgcGluIGlzIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY2NpZGVudGFsbHkgcHJvZ3JhbW1lZCBhcyBhIEdQSU8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGluQEAgdGhlIFBENyBhbmQgUEYwIHBpbnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVmYXVsdCB0byBub24tY29tbWl0dGFibGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJlY2F1c2Ugb2YgdGhpc0BAIHRoZSBkZWZhdWx0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc2V0IHZhbHVlIG9mIEdQSU9DUiBmb3IgR1BJTworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQb3J0IEMgaXMgMHgwMDAwLjAwRjBAQCBmb3IgR1BJTworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQb3J0IEQgaXMgMHgwMDAwLjAwN0ZAQCBhbmQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU8gUG9ydCBGIGlzIDB4MDAwMC4wMEZFLgorI2RlZmluZSBHUElPX0dQSU9fQ1JfQ1JfUyAgICAgICAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZSBHUElPX09fR1BJT19BTVNFTCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUElPX0dQSU9fQU1TRUxfR1BJT19BTVNFTF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRiAgLy8gVGhpcyByZWdpc3RlciBpcyBub3QgdXNlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYzN4eC4gZXF1aXZhbGFudCByZWdpc3RlciBleHNpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0c2lkZSBHUElPIElQIChyZWZlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQQUQqX2NvbmZpZyByZWdpc3RlciBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2hhcmVkIGNvbW4gc3BhY2UpIEdQSU8gQW5hbG9nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1vZGUgU2VsZWN0IFZhbHVlIERlc2NyaXB0aW9uIDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGFuYWxvZyBmdW5jdGlvbiBvZiB0aGUgcGluIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZWRAQCB0aGUgaXNvbGF0aW9uIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpc2FibGVkQEAgYW5kIHRoZSBwaW4gaXMgY2FwYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZiBhbmFsb2cgZnVuY3Rpb25zLiAwIFRoZSBhbmFsb2cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZnVuY3Rpb24gb2YgdGhlIHBpbiBpcyBkaXNhYmxlZEBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBpc29sYXRpb24gaXMgZW5hYmxlZEBAIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcGluIGlzIGNhcGFibGUgb2YgZGlnaXRhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmdW5jdGlvbnMgYXMgc3BlY2lmaWVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdGhlciBHUElPIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXJzLiBOb3RlOiBUaGlzIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBiaXRzIGFyZSBvbmx5IHZhbGlkIGZvciBHUElPCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpZ25hbHMgdGhhdCBzaGFyZSBhbmFsb2cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZnVuY3Rpb24gdGhyb3VnaCBhIHVuaWZpZWQgSS9PCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBhZC4gVGhlIHJlc2V0IHN0YXRlIG9mIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgaXMgMCBmb3IgYWxsIHNpZ25hbHMuCisKKyNkZWZpbmUgR1BJT19HUElPX0FNU0VMX0dQSU9fQU1TRUxfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZSBHUElPX09fR1BJT19QQ1RMIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQSU9fR1BJT19QQ1RMX1BNQzdfTSAgIDB4RjAwMDAwMDAgIC8vIFRoaXMgcmVnaXN0ZXIgaXMgbm90IHVzZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2MzeHguIGVxdWl2YWxhbnQgcmVnaXN0ZXIgZXhzaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHNpZGUgR1BJTyBJUCAocmVmZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUEFEKl9jb25maWcgcmVnaXN0ZXIgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNoYXJlZCBjb21uIHNwYWNlKSBQb3J0IE11eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb250cm9sIDcgVGhpcyBmaWVsZCBjb250cm9scyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uZmlndXJhdGlvbiBmb3IgR1BJTyBwaW4gNy4KKyNkZWZpbmUgR1BJT19HUElPX1BDVExfUE1DN19TICAgMjgKKyNkZWZpbmUgR1BJT19HUElPX1BDVExfUE1DNl9NICAgMHgwRjAwMDAwMCAgLy8gVGhpcyByZWdpc3RlciBpcyBub3QgdXNlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYzN4eC4gZXF1aXZhbGFudCByZWdpc3RlciBleHNpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0c2lkZSBHUElPIElQIChyZWZlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQQUQqX2NvbmZpZyByZWdpc3RlciBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2hhcmVkIGNvbW4gc3BhY2UpIFBvcnQgTXV4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbnRyb2wgNiBUaGlzIGZpZWxkIGNvbnRyb2xzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25maWd1cmF0aW9uIGZvciBHUElPIHBpbiA2LgorI2RlZmluZSBHUElPX0dQSU9fUENUTF9QTUM2X1MgICAyNAorI2RlZmluZSBHUElPX0dQSU9fUENUTF9QTUM1X00gICAweDAwRjAwMDAwICAvLyBUaGlzIHJlZ2lzdGVyIGlzIG5vdCB1c2VkIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNjM3h4LiBlcXVpdmFsYW50IHJlZ2lzdGVyIGV4c2lzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRzaWRlIEdQSU8gSVAgKHJlZmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBBRCpfY29uZmlnIHJlZ2lzdGVyIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaGFyZWQgY29tbiBzcGFjZSkgUG9ydCBNdXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29udHJvbCA1IFRoaXMgZmllbGQgY29udHJvbHMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbmZpZ3VyYXRpb24gZm9yIEdQSU8gcGluIDUuCisjZGVmaW5lIEdQSU9fR1BJT19QQ1RMX1BNQzVfUyAgIDIwCisjZGVmaW5lIEdQSU9fR1BJT19QQ1RMX1BNQzRfTSAgIDB4MDAwRjAwMDAgIC8vIFRoaXMgcmVnaXN0ZXIgaXMgbm90IHVzZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2MzeHguIGVxdWl2YWxhbnQgcmVnaXN0ZXIgZXhzaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHNpZGUgR1BJTyBJUCAocmVmZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUEFEKl9jb25maWcgcmVnaXN0ZXIgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNoYXJlZCBjb21uIHNwYWNlKSBQb3J0IE11eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb250cm9sIDQgVGhpcyBmaWVsZCBjb250cm9scyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uZmlndXJhdGlvbiBmb3IgR1BJTyBwaW4gNC4KKyNkZWZpbmUgR1BJT19HUElPX1BDVExfUE1DNF9TICAgMTYKKyNkZWZpbmUgR1BJT19HUElPX1BDVExfUE1DM19NICAgMHgwMDAwRjAwMCAgLy8gVGhpcyByZWdpc3RlciBpcyBub3QgdXNlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYzN4eC4gZXF1aXZhbGFudCByZWdpc3RlciBleHNpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0c2lkZSBHUElPIElQIChyZWZlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQQUQqX2NvbmZpZyByZWdpc3RlciBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2hhcmVkIGNvbW4gc3BhY2UpIFBvcnQgTXV4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbnRyb2wgNDMgVGhpcyBmaWVsZCBjb250cm9scworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgY29uZmlndXJhdGlvbiBmb3IgR1BJTyBwaW4gMy4KKyNkZWZpbmUgR1BJT19HUElPX1BDVExfUE1DM19TICAgMTIKKyNkZWZpbmUgR1BJT19HUElPX1BDVExfUE1DMV9NICAgMHgwMDAwMEYwMCAgLy8gVGhpcyByZWdpc3RlciBpcyBub3QgdXNlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYzN4eC4gZXF1aXZhbGFudCByZWdpc3RlciBleHNpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0c2lkZSBHUElPIElQIChyZWZlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQQUQqX2NvbmZpZyByZWdpc3RlciBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2hhcmVkIGNvbW4gc3BhY2UpIFBvcnQgTXV4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbnRyb2wgMSBUaGlzIGZpZWxkIGNvbnRyb2xzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25maWd1cmF0aW9uIGZvciBHUElPIHBpbiAxLgorI2RlZmluZSBHUElPX0dQSU9fUENUTF9QTUMxX1MgICA4CisjZGVmaW5lIEdQSU9fR1BJT19QQ1RMX1BNQzJfTSAgIDB4MDAwMDAwRjAgIC8vIFRoaXMgcmVnaXN0ZXIgaXMgbm90IHVzZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2MzeHguIGVxdWl2YWxhbnQgcmVnaXN0ZXIgZXhzaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHNpZGUgR1BJTyBJUCAocmVmZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUEFEKl9jb25maWcgcmVnaXN0ZXIgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNoYXJlZCBjb21uIHNwYWNlKSBQb3J0IE11eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb250cm9sIDIgVGhpcyBmaWVsZCBjb250cm9scyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uZmlndXJhdGlvbiBmb3IgR1BJTyBwaW4gMi4KKyNkZWZpbmUgR1BJT19HUElPX1BDVExfUE1DMl9TICAgNAorI2RlZmluZSBHUElPX0dQSU9fUENUTF9QTUMwX00gICAweDAwMDAwMDBGICAvLyBUaGlzIHJlZ2lzdGVyIGlzIG5vdCB1c2VkIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNjM3h4LiBlcXVpdmFsYW50IHJlZ2lzdGVyIGV4c2lzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRzaWRlIEdQSU8gSVAgKHJlZmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBBRCpfY29uZmlnIHJlZ2lzdGVyIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaGFyZWQgY29tbiBzcGFjZSkgUG9ydCBNdXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29udHJvbCAwIFRoaXMgZmllbGQgY29udHJvbHMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbmZpZ3VyYXRpb24gZm9yIEdQSU8gcGluIDAuCisjZGVmaW5lIEdQSU9fR1BJT19QQ1RMX1BNQzBfUyAgIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUElPX09fR1BJT19BRENDVEwgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BJT19HUElPX0FEQ0NUTF9BRENFTl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRiAgLy8gVGhpcyByZWdpc3RlciBpcyBub3QgdXNlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYzN4eC4gQURDIHRyaWdnZXIgdmlhIEdQSU8gaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm90IHN1cHBvcnRlZC4gQURDIFRyaWdnZXIgRW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFZhbHVlIERlc2NyaXB0aW9uIDEgVGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgcGluIGlzIHVzZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpZ2dlciB0aGUgQURDLiAwIFRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3JyZXNwb25kaW5nIHBpbiBpcyBub3QgdXNlZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmlnZ2VyIHRoZSBBREMuCisKKyNkZWZpbmUgR1BJT19HUElPX0FEQ0NUTF9BRENFTl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUElPX09fR1BJT19ETUFDVEwgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BJT19HUElPX0RNQUNUTF9ETUFFTl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRiAgLy8gVGhpcyByZWdpc3RlciBpcyBub3QgdXNlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2MzeHguIEFsdGVybmF0ZSByZWdpc3RlciB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdXBwb3J0IHRoaXMgZmVhdHVyZSBpcyBjb2RlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgQVBQU19OV1BfQ01OIHNwYWNlLiByZWZlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciBhcyBvZmZzZXQgMHg0MDBGNzBEOAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA/RE1BIFRyaWdnZXIgRW5hYmxlIFZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlc2NyaXB0aW9uIDEgVGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGluIGlzIHVzZWQgdG8gdHJpZ2dlciB0aGUgP0RNQS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMCBUaGUgY29ycmVzcG9uZGluZyBwaW4gaXMgbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgdG8gdHJpZ2dlciB0aGUgP0RNQS4KKworI2RlZmluZSBHUElPX0dQSU9fRE1BQ1RMX0RNQUVOX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUgR1BJT19PX0dQSU9fU0kgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BJT19HUElPX1NJX1NVTSAgICAgICAgMHgwMDAwMDAwMSAgLy8gU3VtbWFyeSBJbnRlcnJ1cHQgVmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVzY3JpcHRpb24gMSBFYWNoIHBpbiBoYXMgaXRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG93biBpbnRlcnJ1cHQgdmVjdG9yLiAwIEFsbCBwb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBpbiBpbnRlcnJ1cHRzIGFyZSBPUidlZCB0b2dldGhlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBwcm9kdWNlIGEgc3VtbWFyeSBpbnRlcnJ1cHQuCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BJT19PX0dQSU9fUEVSSVBISUQ0IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQSU9fR1BJT19QRVJJUEhJRDRfUElENF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRiAgLy8gVGhpcyByZWdpc3RlciBpcyBub3QgdXNlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDQzNYWC4gR1BJTyBQZXJpcGhlcmFsIElECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlZ2lzdGVyIFs3OjBdCisKKyNkZWZpbmUgR1BJT19HUElPX1BFUklQSElENF9QSUQ0X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQSU9fT19HUElPX1BFUklQSElENSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUElPX0dQSU9fUEVSSVBISUQ1X1BJRDVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkYgIC8vIFRoaXMgcmVnaXN0ZXIgaXMgbm90IHVzZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ0MzWFguIEdQSU8gUGVyaXBoZXJhbCBJRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZWdpc3RlciBbMTU6OF0KKworI2RlZmluZSBHUElPX0dQSU9fUEVSSVBISUQ1X1BJRDVfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BJT19PX0dQSU9fUEVSSVBISUQ2IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQSU9fR1BJT19QRVJJUEhJRDZfUElENl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRiAgLy8gVGhpcyByZWdpc3RlciBpcyBub3QgdXNlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDQzNYWC4gR1BJTyBQZXJpcGhlcmFsIElECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlZ2lzdGVyIFsyMzoxNl0KKworI2RlZmluZSBHUElPX0dQSU9fUEVSSVBISUQ2X1BJRDZfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BJT19PX0dQSU9fUEVSSVBISUQ3IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQSU9fR1BJT19QRVJJUEhJRDdfUElEN19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRiAgLy8gVGhpcyByZWdpc3RlciBpcyBub3QgdXNlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDQzNYWC4gR1BJTyBQZXJpcGhlcmFsIElECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlZ2lzdGVyIFszMToyNF0KKworI2RlZmluZSBHUElPX0dQSU9fUEVSSVBISUQ3X1BJRDdfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BJT19PX0dQSU9fUEVSSVBISUQwIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQSU9fR1BJT19QRVJJUEhJRDBfUElEMF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRiAgLy8gVGhpcyByZWdpc3RlciBpcyBub3QgdXNlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDQzNYWC4gR1BJTyBQZXJpcGhlcmFsIElECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlZ2lzdGVyIFs3OjBdIENhbiBiZSB1c2VkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNvZnR3YXJlIHRvIGlkZW50aWZ5IHRoZSBwcmVzZW5jZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZiB0aGlzIHBlcmlwaGVyYWwuCisKKyNkZWZpbmUgR1BJT19HUElPX1BFUklQSElEMF9QSUQwX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQSU9fT19HUElPX1BFUklQSElEMSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUElPX0dQSU9fUEVSSVBISUQxX1BJRDFfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkYgIC8vIEdQSU8gUGVyaXBoZXJhbCBJRCBSZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbMTU6OF0gQ2FuIGJlIHVzZWQgYnkgc29mdHdhcmUgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWRlbnRpZnkgdGhlIHByZXNlbmNlIG9mIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGVyaXBoZXJhbC4KKworI2RlZmluZSBHUElPX0dQSU9fUEVSSVBISUQxX1BJRDFfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BJT19PX0dQSU9fUEVSSVBISUQyIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQSU9fR1BJT19QRVJJUEhJRDJfUElEMl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRiAgLy8gVGhpcyByZWdpc3RlciBpcyBub3QgdXNlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDQzNYWC52IEdQSU8gUGVyaXBoZXJhbCBJRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZWdpc3RlciBbMjM6MTZdIENhbiBiZSB1c2VkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNvZnR3YXJlIHRvIGlkZW50aWZ5IHRoZSBwcmVzZW5jZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZiB0aGlzIHBlcmlwaGVyYWwuCisKKyNkZWZpbmUgR1BJT19HUElPX1BFUklQSElEMl9QSUQyX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQSU9fT19HUElPX1BFUklQSElEMyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUElPX0dQSU9fUEVSSVBISUQzX1BJRDNfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkYgIC8vIFRoaXMgcmVnaXN0ZXIgaXMgbm90IHVzZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ0MzWFguIEdQSU8gUGVyaXBoZXJhbCBJRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZWdpc3RlciBbMzE6MjRdIENhbiBiZSB1c2VkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNvZnR3YXJlIHRvIGlkZW50aWZ5IHRoZSBwcmVzZW5jZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZiB0aGlzIHBlcmlwaGVyYWwuCisKKyNkZWZpbmUgR1BJT19HUElPX1BFUklQSElEM19QSUQzX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQSU9fT19HUElPX1BDRUxMSUQwIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQSU9fR1BJT19QQ0VMTElEMF9DSUQwX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEZGICAvLyBUaGlzIHJlZ2lzdGVyIGlzIG5vdCB1c2VkIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENDM1hYLiBHUElPIFByaW1lQ2VsbCBJRCBSZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbNzowXSBQcm92aWRlcyBzb2Z0d2FyZSBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YW5kYXJkIGNyb3NzLXBlcmlwaGVyYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWRlbnRpZmljYXRpb24gc3lzdGVtLgorCisjZGVmaW5lIEdQSU9fR1BJT19QQ0VMTElEMF9DSUQwX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQSU9fT19HUElPX1BDRUxMSUQxIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQSU9fR1BJT19QQ0VMTElEMV9DSUQxX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEZGICAvLyBUaGlzIHJlZ2lzdGVyIGlzIG5vdCB1c2VkIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENDM1hYLiBHUElPIFByaW1lQ2VsbCBJRCBSZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbMTU6OF0gUHJvdmlkZXMgc29mdHdhcmUgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFuZGFyZCBjcm9zcy1wZXJpcGhlcmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlkZW50aWZpY2F0aW9uIHN5c3RlbS4KKworI2RlZmluZSBHUElPX0dQSU9fUENFTExJRDFfQ0lEMV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUElPX09fR1BJT19QQ0VMTElEMiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUElPX0dQSU9fUENFTExJRDJfQ0lEMl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRiAgLy8gVGhpcyByZWdpc3RlciBpcyBub3QgdXNlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDQzNYWC4gR1BJTyBQcmltZUNlbGwgSUQgUmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzIzOjE2XSBQcm92aWRlcyBzb2Z0d2FyZSBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YW5kYXJkIGNyb3NzLXBlcmlwaGVyYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWRlbnRpZmljYXRpb24gc3lzdGVtLgorCisjZGVmaW5lIEdQSU9fR1BJT19QQ0VMTElEMl9DSUQyX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQSU9fT19HUElPX1BDRUxMSUQzIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQSU9fR1BJT19QQ0VMTElEM19DSUQzX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEZGICAvLyBUaGlzIHJlZ2lzdGVyIGlzIG5vdCB1c2VkIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENDM1hYLiBHUElPIFByaW1lQ2VsbCBJRCBSZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbMzE6MjRdIFByb3ZpZGVzIHNvZnR3YXJlIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhbmRhcmQgY3Jvc3MtcGVyaXBoZXJhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZGVudGlmaWNhdGlvbiBzeXN0ZW0uCisKKyNkZWZpbmUgR1BJT19HUElPX1BDRUxMSUQzX0NJRDNfUyAwCisKKworCisjZW5kaWYgLy8gX19IV19HUElPX0hfXwpkaWZmIC0tZ2l0IGEvZXh0L2hhbC90aS9jYzMyMjBzZGsvaW5jL2h3X2dwcmNtLmggYi9leHQvaGFsL3RpL2NjMzIyMHNkay9pbmMvaHdfZ3ByY20uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjgzZTM4Ci0tLSAvZGV2L251bGwKKysrIGIvZXh0L2hhbC90aS9jYzMyMjBzZGsvaW5jL2h3X2dwcmNtLmgKQEAgLTAsMCArMSwzMzIwIEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxNiBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgLSBodHRwOi8vd3d3LnRpLmNvbS8KKyAqCisgKiAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiAgYXJlIG1ldDoKKyAqCisgKiAgICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqICAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAgICBOZWl0aGVyIHRoZSBuYW1lIG9mIFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCBub3IgdGhlIG5hbWVzIG9mCisgKiAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqICBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaWZuZGVmIF9fSFdfR1BSQ01fSF9fCisjZGVmaW5lIF9fSFdfR1BSQ01fSF9fCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgR1BSQ00gcmVnaXN0ZXIgb2Zmc2V0cy4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX09fQVBQU19TT0ZUX1JFU0VUIDB4MDAwMDAwMDAKKyNkZWZpbmUgR1BSQ01fT19BUFBTX0xQRFNfV0FLRVVQX0NGRyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDQKKworI2RlZmluZSBHUFJDTV9PX0FQUFNfTFBEU19XQUtFVVBfU1JDIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwOAorCisjZGVmaW5lIEdQUkNNX09fQVBQU19SRVNFVF9DQVVTRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMEMKKworI2RlZmluZSBHUFJDTV9PX0FQUFNfTFBEU19XQUtFVElNRV9PUFBfQ0ZHIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxMAorCisjZGVmaW5lIEdQUkNNX09fQVBQU19TUkFNX0RTTFBfQ0ZHIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxOAorCisjZGVmaW5lIEdQUkNNX09fQVBQU19TUkFNX0xQRFNfQ0ZHIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxQworCisjZGVmaW5lIEdQUkNNX09fQVBQU19MUERTX1dBS0VUSU1FX1dBS0VfQ0ZHIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAyMAorCisjZGVmaW5lIEdQUkNNX09fVE9QX0RJRV9FTkFCTEUgIDB4MDAwMDAxMDAKKyNkZWZpbmUgR1BSQ01fT19UT1BfRElFX0VOQUJMRV9QQVJBTUVURVJTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwNAorCisjZGVmaW5lIEdQUkNNX09fTUNVX0dMT0JBTF9TT0ZUX1JFU0VUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwOAorCisjZGVmaW5lIEdQUkNNX09fQURDX0NMS19DT05GSUcgIDB4MDAwMDAxMEMKKyNkZWZpbmUgR1BSQ01fT19BUFBTX0dQSU9fV0FLRV9DT05GIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDExMAorCisjZGVmaW5lIEdQUkNNX09fRU5fTldQX0JPT1RfV09fREVWSU5JVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMTQKKworI2RlZmluZSBHUFJDTV9PX01FTV9IQ0xLX0RJVl9DRkcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTE4CisKKyNkZWZpbmUgR1BSQ01fT19NRU1fU1lTQ0xLX0RJVl9DRkcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTFDCisKKyNkZWZpbmUgR1BSQ01fT19BUExMTUNTX0xPQ0tfVElNRV9DT05GIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEyMAorCisjZGVmaW5lIEdQUkNNX09fTldQX1NPRlRfUkVTRVQgIDB4MDAwMDA0MDAKKyNkZWZpbmUgR1BSQ01fT19OV1BfTFBEU19XQUtFVVBfQ0ZHIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDQwNAorCisjZGVmaW5lIEdQUkNNX09fTldQX0xQRFNfV0FLRVVQX1NSQyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA0MDgKKworI2RlZmluZSBHUFJDTV9PX05XUF9SRVNFVF9DQVVTRSAweDAwMDAwNDBDCisjZGVmaW5lIEdQUkNNX09fTldQX0xQRFNfV0FLRVRJTUVfT1BQX0NGRyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA0MTAKKworI2RlZmluZSBHUFJDTV9PX05XUF9TUkFNX0RTTFBfQ0ZHIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDQxOAorCisjZGVmaW5lIEdQUkNNX09fTldQX1NSQU1fTFBEU19DRkcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNDFDCisKKyNkZWZpbmUgR1BSQ01fT19OV1BfTFBEU19XQUtFVElNRV9XQUtFX0NGRyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA0MjAKKworI2RlZmluZSBHUFJDTV9PX05XUF9BVVRPTk1TX1NQSV9NQVNURVJfU0VMIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDQyNAorCisjZGVmaW5lIEdQUkNNX09fTldQX0FVVE9OTVNfU1BJX0lETEVfUkVRIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDQyOAorCisjZGVmaW5lIEdQUkNNX09fV0xBTl9UT19OV1BfV0FLRV9SRVFVRVNUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDQyQworCisjZGVmaW5lIEdQUkNNX09fTldQX1RPX1dMQU5fV0FLRV9SRVFVRVNUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDQzMAorCisjZGVmaW5lIEdQUkNNX09fTldQX0dQSU9fV0FLRV9DT05GIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDQzNAorCisjZGVmaW5lIEdQUkNNX09fR1BSQ01fRUZVU0VfUkVBRF9SRUcxMiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA0MzgKKworI2RlZmluZSBHUFJDTV9PX0dQUkNNX0RJRUlEX1JFQURfUkVHNSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA0NDgKKworI2RlZmluZSBHUFJDTV9PX0dQUkNNX0RJRUlEX1JFQURfUkVHNiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA0NEMKKworI2RlZmluZSBHUFJDTV9PX1JFRl9GU01fQ0ZHMCAgICAweDAwMDAwODAwCisjZGVmaW5lIEdQUkNNX09fUkVGX0ZTTV9DRkcxICAgIDB4MDAwMDA4MDQKKyNkZWZpbmUgR1BSQ01fT19BUExMTUNTX1dMQU5fQ09ORklHMF80MCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA4MDgKKworI2RlZmluZSBHUFJDTV9PX0FQTExNQ1NfV0xBTl9DT05GSUcxXzQwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDgwQworCisjZGVmaW5lIEdQUkNNX09fQVBMTE1DU19XTEFOX0NPTkZJRzBfMjYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwODEwCisKKyNkZWZpbmUgR1BSQ01fT19BUExMTUNTX1dMQU5fQ09ORklHMV8yNiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA4MTQKKworI2RlZmluZSBHUFJDTV9PX0FQTExNQ1NfV0xBTl9PVkVSUklERVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwODE4CisKKyNkZWZpbmUgR1BSQ01fT19BUExMTUNTX01DVV9SVU5fQ09ORklHMF8zOFA0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDgxQworCisjZGVmaW5lIEdQUkNNX09fQVBMTE1DU19NQ1VfUlVOX0NPTkZJRzFfMzhQNCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA4MjAKKworI2RlZmluZSBHUFJDTV9PX0FQTExNQ1NfTUNVX1JVTl9DT05GSUcwXzI2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDgyNAorCisjZGVmaW5lIEdQUkNNX09fQVBMTE1DU19NQ1VfUlVOX0NPTkZJRzFfMjYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwODI4CisKKyNkZWZpbmUgR1BSQ01fT19TUEFSRV9SVzAgICAgICAgMHgwMDAwMDgyQworI2RlZmluZSBHUFJDTV9PX1NQQVJFX1JXMSAgICAgICAweDAwMDAwODMwCisjZGVmaW5lIEdQUkNNX09fQVBMTE1DU19NQ1VfT1ZFUlJJREVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDgzNAorCisjZGVmaW5lIEdQUkNNX09fU1lTQ0xLX1NXSVRDSF9TVEFUVVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwODM4CisKKyNkZWZpbmUgR1BSQ01fT19SRUZfTERPX0NPTlRST0xTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDgzQworCisjZGVmaW5lIEdQUkNNX09fUkVGX1JUUklNX0NPTlRST0wgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwODQwCisKKyNkZWZpbmUgR1BSQ01fT19SRUZfU0xJQ0VSX0NPTlRST0xTMCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA4NDQKKworI2RlZmluZSBHUFJDTV9PX1JFRl9TTElDRVJfQ09OVFJPTFMxIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDg0OAorCisjZGVmaW5lIEdQUkNNX09fUkVGX0FOQV9CR0FQX0NPTlRST0xTMCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA4NEMKKworI2RlZmluZSBHUFJDTV9PX1JFRl9BTkFfQkdBUF9DT05UUk9MUzEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwODUwCisKKyNkZWZpbmUgR1BSQ01fT19SRUZfQU5BX1NQQVJFX0NPTlRST0xTMCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA4NTQKKworI2RlZmluZSBHUFJDTV9PX1JFRl9BTkFfU1BBUkVfQ09OVFJPTFMxIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDg1OAorCisjZGVmaW5lIEdQUkNNX09fTUVNU1NfUFNDT05fT1ZFUlJJREVTMCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA4NUMKKworI2RlZmluZSBHUFJDTV9PX01FTVNTX1BTQ09OX09WRVJSSURFUzEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwODYwCisKKyNkZWZpbmUgR1BSQ01fT19QTExfUkVGX0xPQ0tfT1ZFUlJJREVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDg2NAorCisjZGVmaW5lIEdQUkNNX09fTUNVX1BTQ09OX0RFQlVHIDB4MDAwMDA4NjgKKyNkZWZpbmUgR1BSQ01fT19NRU1TU19QV1JfUFMgICAgMHgwMDAwMDg2QworI2RlZmluZSBHUFJDTV9PX1JFRl9GU01fREVCVUcgICAweDAwMDAwODcwCisjZGVmaW5lIEdQUkNNX09fTUVNX1NZU19PUFBfUkVRX09WRVJSSURFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDg3NAorCisjZGVmaW5lIEdQUkNNX09fTUVNX1RFU1RDVFJMX1BEX09QUF9DT05GSUcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwODc4CisKKyNkZWZpbmUgR1BSQ01fT19NRU1fV0xfRkFTVF9DTEtfUkVRX09WRVJSSURFUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA4N0MKKworI2RlZmluZSBHUFJDTV9PX01FTV9NQ1VfUERfTU9ERV9SRVFfT1ZFUlJJREVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDg4MAorCisjZGVmaW5lIEdQUkNNX09fTUVNX01DU1BJX1NSQU1fT0ZGX1JFUV9PVkVSUklERVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwODg0CisKKyNkZWZpbmUgR1BSQ01fT19NRU1fV0xBTl9BUExMTUNTX09WRVJSSURFUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA4ODgKKworI2RlZmluZSBHUFJDTV9PX01FTV9SRUZfRlNNX0NGRzIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwODhDCisKKyNkZWZpbmUgR1BSQ01fT19URVNUQ1RSTF9QT1dFUl9DVFJMIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEMxMAorCisjZGVmaW5lIEdQUkNNX09fU1NESU9fUE9XRVJfQ1RSTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDMTQKKworI2RlZmluZSBHUFJDTV9PX01DU1BJX04xX1BPV0VSX0NUUkwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwQzE4CisKKyNkZWZpbmUgR1BSQ01fT19XRUxQX1BPV0VSX0NUUkwgMHgwMDAwMEMxQworI2RlZmluZSBHUFJDTV9PX1dMX1NESU9fUE9XRVJfQ1RSTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDMjAKKworI2RlZmluZSBHUFJDTV9PX1dMQU5fU1JBTV9BQ1RJVkVfUFdSX0NGRyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDMjQKKworI2RlZmluZSBHUFJDTV9PX1dMQU5fU1JBTV9TTEVFUF9QV1JfQ0ZHIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEMyOAorCisjZGVmaW5lIEdQUkNNX09fQVBQU19TRUNVUkVfSU5JVF9ET05FIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEMzMAorCisjZGVmaW5lIEdQUkNNX09fQVBQU19ERVZfTU9ERV9JTklUX0RPTkUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwQzM0CisKKyNkZWZpbmUgR1BSQ01fT19FTl9BUFBTX1JFQk9PVCAgMHgwMDAwMEMzOAorI2RlZmluZSBHUFJDTV9PX01FTV9BUFBTX1BFUklQSF9QUkVTRU5UIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEMzQworCisjZGVmaW5lIEdQUkNNX09fTUVNX05XUF9QRVJJUEhfUFJFU0VOVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDNDAKKworI2RlZmluZSBHUFJDTV9PX01FTV9TSEFSRURfUEVSSVBIX1BSRVNFTlQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwQzQ0CisKKyNkZWZpbmUgR1BSQ01fT19OV1BfUFdSX1NUQVRFICAgMHgwMDAwMEM0OAorI2RlZmluZSBHUFJDTV9PX0FQUFNfUFdSX1NUQVRFICAweDAwMDAwQzRDCisjZGVmaW5lIEdQUkNNX09fTUNVX1BXUl9TVEFURSAgIDB4MDAwMDBDNTAKKyNkZWZpbmUgR1BSQ01fT19XVE9QX1BNX1BTICAgICAgMHgwMDAwMEM1NAorI2RlZmluZSBHUFJDTV9PX1dUT1BfUERfUkVTRVRaX09WRVJSSURFX1JFRyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDNTgKKworI2RlZmluZSBHUFJDTV9PX1dFTFBfUERfUkVTRVRaX09WRVJSSURFX1JFRyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDNUMKKworI2RlZmluZSBHUFJDTV9PX1dMX1NESU9fUERfUkVTRVRaX09WRVJSSURFX1JFRyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDNjAKKworI2RlZmluZSBHUFJDTV9PX1NTRElPX1BEX1JFU0VUWl9PVkVSUklERV9SRUcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwQzY0CisKKyNkZWZpbmUgR1BSQ01fT19NQ1NQSV9OMV9QRF9SRVNFVFpfT1ZFUlJJREVfUkVHIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEM2OAorCisjZGVmaW5lIEdQUkNNX09fVEVTVENUUkxfUERfUkVTRVRaX09WRVJSSURFX1JFRyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDNkMKKworI2RlZmluZSBHUFJDTV9PX01DVV9QRF9SRVNFVFpfT1ZFUlJJREVfUkVHIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEM3MAorCisjZGVmaW5lIEdQUkNNX09fR1BSQ01fRUZVU0VfUkVBRF9SRUcwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEM3OAorCisjZGVmaW5lIEdQUkNNX09fR1BSQ01fRUZVU0VfUkVBRF9SRUcxIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEM3QworCisjZGVmaW5lIEdQUkNNX09fR1BSQ01fRUZVU0VfUkVBRF9SRUcyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEM4MAorCisjZGVmaW5lIEdQUkNNX09fR1BSQ01fRUZVU0VfUkVBRF9SRUczIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEM4NAorCisjZGVmaW5lIEdQUkNNX09fV1RPUF9NRU1fUkVUX0NGRyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDODgKKworI2RlZmluZSBHUFJDTV9PX0NPRVhfQ0xLX1NXQUxMT1dfQ0ZHMCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDOEMKKworI2RlZmluZSBHUFJDTV9PX0NPRVhfQ0xLX1NXQUxMT1dfQ0ZHMSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDOTAKKworI2RlZmluZSBHUFJDTV9PX0NPRVhfQ0xLX1NXQUxMT1dfQ0ZHMiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDOTQKKworI2RlZmluZSBHUFJDTV9PX0NPRVhfQ0xLX1NXQUxMT1dfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEM5OAorCisjZGVmaW5lIEdQUkNNX09fRENEQ19DTEtfR0VOX0NPTkZJRyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDOUMKKworI2RlZmluZSBHUFJDTV9PX0dQUkNNX0VGVVNFX1JFQURfUkVHNCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDQTAKKworI2RlZmluZSBHUFJDTV9PX0dQUkNNX0VGVVNFX1JFQURfUkVHNSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDQTQKKworI2RlZmluZSBHUFJDTV9PX0dQUkNNX0VGVVNFX1JFQURfUkVHNiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDQTgKKworI2RlZmluZSBHUFJDTV9PX0dQUkNNX0VGVVNFX1JFQURfUkVHNyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDQUMKKworI2RlZmluZSBHUFJDTV9PX0dQUkNNX0VGVVNFX1JFQURfUkVHOCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDQjAKKworI2RlZmluZSBHUFJDTV9PX0dQUkNNX0VGVVNFX1JFQURfUkVHOSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDQjQKKworI2RlZmluZSBHUFJDTV9PX0dQUkNNX0VGVVNFX1JFQURfUkVHMTAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwQ0I4CisKKyNkZWZpbmUgR1BSQ01fT19HUFJDTV9FRlVTRV9SRUFEX1JFRzExIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMENCQworCisjZGVmaW5lIEdQUkNNX09fR1BSQ01fRElFSURfUkVBRF9SRUcwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMENDMAorCisjZGVmaW5lIEdQUkNNX09fR1BSQ01fRElFSURfUkVBRF9SRUcxIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMENDNAorCisjZGVmaW5lIEdQUkNNX09fR1BSQ01fRElFSURfUkVBRF9SRUcyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMENDOAorCisjZGVmaW5lIEdQUkNNX09fR1BSQ01fRElFSURfUkVBRF9SRUczIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMENDQworCisjZGVmaW5lIEdQUkNNX09fR1BSQ01fRElFSURfUkVBRF9SRUc0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMENEMAorCisjZGVmaW5lIEdQUkNNX09fQVBQU19TU19PVkVSUklERVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwQ0Q0CisKKyNkZWZpbmUgR1BSQ01fT19OV1BfU1NfT1ZFUlJJREVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMENEOAorCisjZGVmaW5lIEdQUkNNX09fU0hBUkVEX1NTX09WRVJSSURFUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDREMKKworI2RlZmluZSBHUFJDTV9PX0lETUVNX0NPUkVfUlNUX09WRVJSSURFUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDRTAKKworI2RlZmluZSBHUFJDTV9PX1RPUF9ESUVfRlNNX09WRVJSSURFUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDRTQKKworI2RlZmluZSBHUFJDTV9PX01DVV9QU0NPTl9PVkVSUklERVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwQ0U4CisKKyNkZWZpbmUgR1BSQ01fT19XVE9QX1BTQ09OX09WRVJSSURFUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDRUMKKworI2RlZmluZSBHUFJDTV9PX1dFTFBfUFNDT05fT1ZFUlJJREVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMENGMAorCisjZGVmaW5lIEdQUkNNX09fV0xfU0RJT19QU0NPTl9PVkVSUklERVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwQ0Y0CisKKyNkZWZpbmUgR1BSQ01fT19NQ1NQSV9QU0NPTl9PVkVSUklERVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwQ0Y4CisKKyNkZWZpbmUgR1BSQ01fT19TU0RJT19QU0NPTl9PVkVSUklERVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwQ0ZDCisKKworCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0FQUFNfU09GVF9SRVNFVCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9BUFBTX1NPRlRfUkVTRVRfQVBQU19TT0ZUX1JFU0VUMSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIgIC8vIFNvZnQtcmVzZXQxIGZvciBBUFBTIDogQ29ydGV4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN5c3JzdG4gaXMgYXNzZXJ0ZWQgYW5kIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFkZGl0aW9uIHRvIHRoYXQgdGhlIGFzc29jaWF0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQVBQUyBQZXJpcGhlcmFscyBhcmUgYWxzbyByZXNldC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhbiBhdXRvLWNsZWFyIGJpdC4KKworI2RlZmluZSBHUFJDTV9BUFBTX1NPRlRfUkVTRVRfQVBQU19TT0ZUX1JFU0VUMCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIFNvZnQtcmVzZXQwIGZvciBBUFBTIDogT25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzeXMtcmVzZXRuIGZvciBDb3J0ZXggd2lsbCBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3NlcnRlZC4gVGhpcyBpcyBhbiBhdXRvLWNsZWFyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdC4KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fQVBQU19MUERTX1dBS0VVUF9DRkcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fQVBQU19MUERTX1dBS0VVUF9DRkdfQVBQU19MUERTX1dBS0VVUF9DRkdfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkYgIC8vIE1hc2sgZm9yIExQRFMgV2FrZXVwIGludGVycnVwdCA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFs3XSAtIEhvc3QgSVJRIGZyb20gTldQIFs2XSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5XUF9MUERTX1dha2VfaXJxIChUUlVFX0xQRFMpIFs1XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtIE5XUCBXYWtlLXJlcXVlc3QgdG8gQVBQUyBbNF0gLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPIFszOjFdIC0gUmVzZXJ2ZWQgWzBdIC0gTFBEUworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXYWtldXAtdGltZXIKKworI2RlZmluZSBHUFJDTV9BUFBTX0xQRFNfV0FLRVVQX0NGR19BUFBTX0xQRFNfV0FLRVVQX0NGR19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0FQUFNfTFBEU19XQUtFVVBfU1JDIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0FQUFNfTFBEU19XQUtFVVBfU1JDX0FQUFNfTFBEU19XQUtFVVBfU1JDX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEZGICAvLyBJbmRpY2F0ZXMgdGhlIGNhdXNlIGZvciB3YWtldXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZnJvbSBMUERTIDogWzddIC0gSG9zdCBJUlEgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOV1AgWzZdIC0gTldQX0xQRFNfV2FrZV9pcnEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKFRSVUVfTFBEUykgWzVdIC0gTldQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdha2UtcmVxdWVzdCB0byBBUFBTIFs0XSAtIEdQSU8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzM6MV0gLSBSZXNlcnZlZCBbMF0gLSBMUERTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdha2V1cC10aW1lcgorCisjZGVmaW5lIEdQUkNNX0FQUFNfTFBEU19XQUtFVVBfU1JDX0FQUFNfTFBEU19XQUtFVVBfU1JDX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fQVBQU19SRVNFVF9DQVVTRSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9BUFBTX1JFU0VUX0NBVVNFX0FQUFNfUkVTRVRfQ0FVU0VfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkYgIC8vIEluZGljYXRlcyB0aGUgcmVzZXQgY2F1c2UgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFQUFMgOiAiMDAwMCIgLSBXYWtlIGZyb20gSElCL09GRgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtb2RlOyAiMDAwMSIgLSBXYWtlIGZyb20gTFBEUyA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIwMDEwIiAtIFJlc2VydmVkIDsgIjAwMTEiIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU29mdC1yZXNldDAgKE9ubHkgQVBQUworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb3J0ZXgtc3lzcnN0biBpcyBhc3NlcnRlZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIwMTAwIiAtIFNvZnQtcmVzZXQxIChBUFBTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvcnRleC1zeXNyc3RuIGFuZCBBUFBTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBlcmlwaGVyYWxzIGFyZSByZXNldCk7ICIwMTAxIiAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdET0cwIChBUFBTIENvcnRleC1zeXNyc3RuIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBUFBTIHBlcmlwaGVyYWxzIGFyZSByZXNldCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIwMTEwIiAtIE1DVSBTb2Z0LXJlc2V0IChBUFBTICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTldQIENvcnRleC1zeXNyc3RuICsgUGVyaXBoZXJhbHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXJlIHJlc2V0KTsgIjAxMTEiIC0gU2VjdXJlIEluaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG9uZSAoSW5kaWNhdGlvbiB0aGF0IHJlc2V0IGhhcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYXBwZW5lZCBhZnRlciBEZXZJbml0KTsgIjEwMDAiIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGV2IE1vZGUgUGF0Y2ggSW5pdCBkb25lIChEdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGV2ZWxvcG1lbnQgbW9kZSwgcGF0Y2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG93bmxvYWRpbmcgYW5kIENvcnRleAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZS12ZWN0b3JpbmcgaXMgY29tcGxldGVkKQorCisjZGVmaW5lIEdQUkNNX0FQUFNfUkVTRVRfQ0FVU0VfQVBQU19SRVNFVF9DQVVTRV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0FQUFNfTFBEU19XQUtFVElNRV9PUFBfQ0ZHIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0FQUFNfTFBEU19XQUtFVElNRV9PUFBfQ0ZHX0FQUFNfTFBEU19XQUtFVElNRV9PUFBfQ0ZHX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyBPUFAgUmVxdWVzdCBDb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChOdW1iZXIgb2Ygc2xvdy1jbGsgY3ljbGVzKSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTFBEUyBXYWtlLXRpbWVyIDogVGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25maWd1cmF0aW9uIGltcGxpZXMgdGhlIFJUQworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aW1lLXN0YW1wLCB3aGljaCBtdXN0IGJlIGZldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzbG93LWNsa3MgcHJpb3IgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQVBQU19MUERTX1dBS0VUSU1FX1dBS0VfQ0ZHLCBzdWNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQgYnkgdGhlIHRpbWUgYWN0dWFsIHdha2V1cCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnaXZlbiwgT1BQIGlzIGFscmVhZHkgc3dpdGNoZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQUNUSVZFIChSVU4pLgorCisjZGVmaW5lIEdQUkNNX0FQUFNfTFBEU19XQUtFVElNRV9PUFBfQ0ZHX0FQUFNfTFBEU19XQUtFVElNRV9PUFBfQ0ZHX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fQVBQU19TUkFNX0RTTFBfQ0ZHIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0FQUFNfU1JBTV9EU0xQX0NGR19BUFBTX1NSQU1fRFNMUF9DRkdfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwRkZGRkYgIC8vIENvbmZpZ3VyYXRpb24gb2YgQVBQUyBNZW1vcmllcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkdXJpbmcgRGVlcC1zbGVlcCA6IDAgLSBTUkFNcyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT0ZGIDsgMSAtIFNSQU1zIGFyZSBSZXRhaW5lZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQVBQUyBTUkFNIENsdXN0ZXIgaW5mb3JtYXRpb24gOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbMF0gLSAxc3QgY29sdW1uIGluIE1FTVNTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChBcHBsaWNhYmxlIG9ubHkgd2hlbiBvd25lZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBUFBTKTsgWzFdIC0gMm5kIGNvbHVtbiBpbiBNRU1TUworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoQXBwbGljYWJsZSBvbmx5IHdoZW4gb3duZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQVBQUyk7IFsyXSAtIDNyZCBjb2x1bW4gaW4gTUVNU1MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKEFwcGxpY2FibGUgb25seSB3aGVuIG93bmVkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFQUFMpIDsgWzNdIC0gNHRoIGNvbHVtbiBpbiBNRU1TUworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoQXBwbGljYWJsZSBvbmx5IHdoZW4gb3duZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQVBQUykgOyBbMTZdIC0gTUNVLVBEIC0gQXBwcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjbHVzdGVyIDAgKFRCRCk7IFsxOToxOF0gLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXNlcnZlZC4KKworI2RlZmluZSBHUFJDTV9BUFBTX1NSQU1fRFNMUF9DRkdfQVBQU19TUkFNX0RTTFBfQ0ZHX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fQVBQU19TUkFNX0xQRFNfQ0ZHIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0FQUFNfU1JBTV9MUERTX0NGR19BUFBTX1NSQU1fTFBEU19DRkdfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwRkZGRkYgIC8vIENvbmZpZ3VyYXRpb24gb2YgQVBQUyBNZW1vcmllcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkdXJpbmcgTFBEUyA6IDAgLSBTUkFNcyBhcmUgT0ZGIDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMSAtIFNSQU1zIGFyZSBSZXRhaW5lZC4gQVBQUyBTUkFNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENsdXN0ZXIgaW5mb3JtYXRpb24gOiBbMF0gLSAxc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29sdW1uIGluIE1FTVNTIChBcHBsaWNhYmxlIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBvd25lZCBieSBBUFBTKTsgWzFdIC0gMm5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbHVtbiBpbiBNRU1TUyAoQXBwbGljYWJsZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gb3duZWQgYnkgQVBQUyk7IFsyXSAtIDNyZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gaW4gTUVNU1MgKEFwcGxpY2FibGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIG93bmVkIGJ5IEFQUFMpIDsgWzNdIC0gNHRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbHVtbiBpbiBNRU1TUyAoQXBwbGljYWJsZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gb3duZWQgYnkgQVBQUykgOyBbMTZdIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTUNVLVBEIC0gQXBwcyBjbHVzdGVyIDAgKFRCRCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFsxOToxOF0gLSBSZXNlcnZlZC4KKworI2RlZmluZSBHUFJDTV9BUFBTX1NSQU1fTFBEU19DRkdfQVBQU19TUkFNX0xQRFNfQ0ZHX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fQVBQU19MUERTX1dBS0VUSU1FX1dBS0VfQ0ZHIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0FQUFNfTFBEU19XQUtFVElNRV9XQUtFX0NGR19BUFBTX0xQRFNfV0FLRVRJTUVfV0FLRV9DRkdfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIENvbmZpZ3VyYXRpb24gKGluIG5vIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNsb3dfY2xrcykgd2hpY2ggc2F5cyB3aGVuIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY3R1YWwgd2FrZXVwIHJlcXVlc3QgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbW92aW5nIHRoZSBQRC1yZXNldCBiZSBnaXZlbi4KKworI2RlZmluZSBHUFJDTV9BUFBTX0xQRFNfV0FLRVRJTUVfV0FLRV9DRkdfQVBQU19MUERTX1dBS0VUSU1FX1dBS0VfQ0ZHX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fVE9QX0RJRV9FTkFCTEUgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fVE9QX0RJRV9FTkFCTEVfRkxBU0hfQlVTWSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDEwMDAKKworI2RlZmluZSBHUFJDTV9UT1BfRElFX0VOQUJMRV9UT1BfRElFX1BXUl9QU19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEYwMAorCisjZGVmaW5lIEdQUkNNX1RPUF9ESUVfRU5BQkxFX1RPUF9ESUVfUFdSX1BTX1MgOAorI2RlZmluZSBHUFJDTV9UT1BfRElFX0VOQUJMRV9UT1BfRElFX0VOQUJMRV9TVEFUVVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyICAvLyAxIC0gVG9wLWRpZSBpcyBlbmFibGVkIDsKKworI2RlZmluZSBHUFJDTV9UT1BfRElFX0VOQUJMRV9UT1BfRElFX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBFbmFibGUgdGhlIHRvcC1kaWUgOyAwIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGlzYWJsZSB0aGUgdG9wLWRpZQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19UT1BfRElFX0VOQUJMRV9QQVJBTUVURVJTIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX1RPUF9ESUVfRU5BQkxFX1BBUkFNRVRFUlNfRkxBU0hfM1AzX1JTVE4yRDJEX1BPUl9SU1ROX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEYwMDAwMDAwICAvLyBDb25maWd1cmF0aW9uIChpbiBzbG93X2Nsa3MpIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBudW1iZXIgb2YgY2xrcyBiZXR3ZWVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZsYXNoLTNwMy1yc3RuIHRvIEQyRCBQT1IgUmVzZXRuLgorCisjZGVmaW5lIEdQUkNNX1RPUF9ESUVfRU5BQkxFX1BBUkFNRVRFUlNfRkxBU0hfM1AzX1JTVE4yRDJEX1BPUl9SU1ROX1MgMjgKKyNkZWZpbmUgR1BSQ01fVE9QX0RJRV9FTkFCTEVfUEFSQU1FVEVSU19UT1BfRElFX1NXX0VOMlRPUF9ESUVfRkxBU0hfM1AzX1JTVE5fTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDBGRjAwMDAgIC8vIENvbmZpZ3VyYXRpb24gKGluIHNsb3dfY2xrcykgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG51bWJlciBvZiBjbGtzIGJldHdlZW4gVG9wLWRpZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTd2l0Y2gtRW5hYmxlIGFuZCBUb3AtZGllIEZsYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDNwMyBSZXNldCByZW1vdmFsCisKKyNkZWZpbmUgR1BSQ01fVE9QX0RJRV9FTkFCTEVfUEFSQU1FVEVSU19UT1BfRElFX1NXX0VOMlRPUF9ESUVfRkxBU0hfM1AzX1JTVE5fUyAxNgorI2RlZmluZSBHUFJDTV9UT1BfRElFX0VOQUJMRV9QQVJBTUVURVJTX1RPUF9ESUVfUE9SX1JTVE4yQk9UVF9ESUVfRk1DX1JTVE5fTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkYgIC8vIENvbmZpZ3VyYXRpb24gKGluIHNsb3dfY2xrcykgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG51bWJlciBvZiBjbGtzIGJldHdlZW4gRDJEIFBPUgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXNldCByZW1vdmFsIGFuZCBib3R0b20gZGllIEZNQworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXNldCByZW1vdmFsCisKKyNkZWZpbmUgR1BSQ01fVE9QX0RJRV9FTkFCTEVfUEFSQU1FVEVSU19UT1BfRElFX1BPUl9SU1ROMkJPVFRfRElFX0ZNQ19SU1ROX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fTUNVX0dMT0JBTF9TT0ZUX1JFU0VUIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX01DVV9HTE9CQUxfU09GVF9SRVNFVF9NQ1VfR0xPQkFMX1NPRlRfUkVTRVQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gQXNzZXJ0IHRoZSBnbG9iYWwgcmVzZXQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1DVSAoQVBQUyArIE5XUCkgOyBBc3NlcnRzIGJvdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29ydGV4IHN5c3JzdG4gYW5kIGl0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwZXJpcGhlcmFscyAwIC0gRGVhc3NlcnQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdsb2JhbCByZXNldCBmb3IgTUNVIChBUFBTICsgTldQKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA7IEFzc2VydHMgYm90aCBDb3J0ZXggc3lzcnN0biBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXRzIHBlcmlwaGVyYWxzIE5vdGUgOiBSZXNldCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2hhcmVkIHBlcmlwaGVyYWxzIGlzIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhZmZlY3RlZCBoZXJlLgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19BRENfQ0xLX0NPTkZJRyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9BRENfQ0xLX0NPTkZJR19BRENfQ0xLR0VOX09GRl9USU1FX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwN0MwICAvLyBDb25maWd1cmF0aW9uIChpbiBudW1iZXIgb2YgMzguNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNSHogY2xrcykgZm9yIHRoZSBPRkYtVGltZSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZW5lcmF0aW9uIG9mIEFEQ19DTEsKKworI2RlZmluZSBHUFJDTV9BRENfQ0xLX0NPTkZJR19BRENfQ0xLR0VOX09GRl9USU1FX1MgNgorI2RlZmluZSBHUFJDTV9BRENfQ0xLX0NPTkZJR19BRENfQ0xLR0VOX09OX1RJTUVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwM0UgIC8vIENvbmZpZ3VyYXRpb24gKGluIG51bWJlciBvZiAzOC40CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1IeiBjbGtzKSBmb3IgdGhlIE9OLVRpbWUgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2VuZXJhdGlvbiBvZiBBRENfQ0xLCisKKyNkZWZpbmUgR1BSQ01fQURDX0NMS19DT05GSUdfQURDX0NMS0dFTl9PTl9USU1FX1MgMQorI2RlZmluZSBHUFJDTV9BRENfQ0xLX0NPTkZJR19BRENfQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBFbmFibGUgdGhlIEFEQ19DTEsgOyAwIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGlzYWJsZSB0aGUgQURDX0NMSworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19BUFBTX0dQSU9fV0FLRV9DT05GIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0FQUFNfR1BJT19XQUtFX0NPTkZfQVBQU19HUElPX1dBS0VfQ09ORl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMyAgLy8gIjAwIiAtIFdha2Ugb24gTGV2ZWwwIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNlbGVjdGVkIEdQSU8gcGluIChHUElPIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNlbGVjdGVkIGluc2lkZSB0aGUgSElCM3AzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1vZHVsZSk7ICIwMSIgLSBXYWtldXAgb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmFsbC1lZGdlIG9mIEdQSU8gcGluLgorCisjZGVmaW5lIEdQUkNNX0FQUFNfR1BJT19XQUtFX0NPTkZfQVBQU19HUElPX1dBS0VfQ09ORl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0VOX05XUF9CT09UX1dPX0RFVklOSVQgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fRU5fTldQX0JPT1RfV09fREVWSU5JVF9yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRQorCisjZGVmaW5lIEdQUkNNX0VOX05XUF9CT09UX1dPX0RFVklOSVRfcmVzZXJ2ZWRfUyAxCisjZGVmaW5lIEdQUkNNX0VOX05XUF9CT09UX1dPX0RFVklOSVRfbWVtX2VuX253cF9ib290X3dvX2RldmluaXQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gT3ZlcnJpZGUgdGhlIHNlY3VyZS1tb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvbmUgZm9yIGJvb3RpbmcgdXAgTldQIChXYWtldXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTldQIG9uIGl0cyBldmVudCBpbmRlcGVuZGVudCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDTTQgc3RhdGUpIDsgMCAtIERvbm90IG92ZXJyaWRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBzZWN1cmUtbW9kZSBkb25lIGZvciBOV1AgYm9vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoTldQIG11c3QgYmUgZW5hYmxlZCBieSBDTTQgb25seSkKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fTUVNX0hDTEtfRElWX0NGRyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9NRU1fSENMS19ESVZfQ0ZHX21lbV9oY2xrX2Rpdl9jZmdfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDcgIC8vIERpdmlzaW9uIGNvbmZpZ3VyYXRpb24gZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhDTEtESVZPVVQgOiAiMDAwIiAtIERpdmlkZSBieSAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDsgIjAwMSIgLSBEaXZpZGUgYnkgMiA7ICIwMTAiIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGl2aWRlIGJ5IDMgOyAiMDExIiAtIERpdmlkZSBieSA0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDsgIjEwMCIgLSBEaXZpZGUgYnkgNSA7ICIxMDEiIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGl2aWRlIGJ5IDYgOyAiMTEwIiAtIERpdmlkZSBieSA3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDsgIjExMSIgLSBEaXZpZGUgYnkgOAorCisjZGVmaW5lIEdQUkNNX01FTV9IQ0xLX0RJVl9DRkdfbWVtX2hjbGtfZGl2X2NmZ19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX01FTV9TWVNDTEtfRElWX0NGRyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9NRU1fU1lTQ0xLX0RJVl9DRkdfbWVtX3N5c2Nsa19kaXZfb2ZmX3RpbWVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMzgKKworI2RlZmluZSBHUFJDTV9NRU1fU1lTQ0xLX0RJVl9DRkdfbWVtX3N5c2Nsa19kaXZfb2ZmX3RpbWVfUyAzCisjZGVmaW5lIEdQUkNNX01FTV9TWVNDTEtfRElWX0NGR19tZW1fc3lzY2xrX2Rpdl9vbl90aW1lX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA3CisKKyNkZWZpbmUgR1BSQ01fTUVNX1NZU0NMS19ESVZfQ0ZHX21lbV9zeXNjbGtfZGl2X29uX3RpbWVfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19BUExMTUNTX0xPQ0tfVElNRV9DT05GIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfTE9DS19USU1FX0NPTkZfbWVtX2FwbGxtY3Nfd2xhbl9sb2NrX3RpbWVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZGMDAKKworI2RlZmluZSBHUFJDTV9BUExMTUNTX0xPQ0tfVElNRV9DT05GX21lbV9hcGxsbWNzX3dsYW5fbG9ja190aW1lX1MgOAorI2RlZmluZSBHUFJDTV9BUExMTUNTX0xPQ0tfVElNRV9DT05GX21lbV9hcGxsbWNzX21jdV9sb2NrX3RpbWVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkYKKworI2RlZmluZSBHUFJDTV9BUExMTUNTX0xPQ0tfVElNRV9DT05GX21lbV9hcGxsbWNzX21jdV9sb2NrX3RpbWVfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19OV1BfU09GVF9SRVNFVCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9OV1BfU09GVF9SRVNFVF9OV1BfU09GVF9SRVNFVDEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyICAvLyBTb2Z0LXJlc2V0MSBmb3IgTldQIC0gQ29ydGV4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN5c3JzdG4gYW5kIE5XUCBhc3NvY2lhdGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBlcmlwaGVyYWxzIGFyZSAtIFRoaXMgaXMgYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXV0by1jbHIgYml0LgorCisjZGVmaW5lIEdQUkNNX05XUF9TT0ZUX1JFU0VUX05XUF9TT0ZUX1JFU0VUMCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIFNvZnQtcmVzZXQwIGZvciBOV1AgLSBPbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvcnRleC1zeXNyc3RuIGlzIGFzc2VydGVkIC0gVGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBhbiBhdXRvLWNsZWFyIGJpdC4KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fTldQX0xQRFNfV0FLRVVQX0NGRyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9OV1BfTFBEU19XQUtFVVBfQ0ZHX05XUF9MUERTX1dBS0VVUF9DRkdfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkYgIC8vIE1hc2sgZm9yIExQRFMgV2FrZXVwIGludGVycnVwdCA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDcgLSBXTEFOIEhvc3QgSW50ZXJydXB0IDsgNiAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdMQU4gdG8gTldQIFdha2UgcmVxdWVzdCA7IDUgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBUFBTIHRvIE5XUCBXYWtlIHJlcXVlc3Q7IDQgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPIFdha2V1cCA7IDMgLSBBdXRvbm9tb3VzIFVBUlQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2FrZXVwIDsgMiAtIFNTRElPIFdha2V1cCA7IDEgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBdXRvbm9tb3VzIFNQSSBXYWtldXAgOyAwIC0gTFBEUworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXYWtldXAtdGltZXIKKworI2RlZmluZSBHUFJDTV9OV1BfTFBEU19XQUtFVVBfQ0ZHX05XUF9MUERTX1dBS0VVUF9DRkdfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19OV1BfTFBEU19XQUtFVVBfU1JDIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX05XUF9MUERTX1dBS0VVUF9TUkNfTldQX0xQRFNfV0FLRVVQX1NSQ19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRiAgLy8gSW5kaWNhdGVzIHRoZSBjYXVzZSBmb3IgTldQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIExQRFMtV2FrZXVwIDogNyAtIFdMQU4gSG9zdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbnRlcnJ1cHQgOyA2IC0gV0xBTiB0byBOV1AgV2FrZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXF1ZXN0IDsgNSAtIEFQUFMgdG8gTldQIFdha2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVxdWVzdDsgNCAtIEdQSU8gV2FrZXVwIDsgMyAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEF1dG9ub21vdXMgVUFSVCBXYWtldXAgOyAyIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU1NESU8gV2FrZXVwIDsgMSAtIEF1dG9ub21vdXMgU1BJCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdha2V1cCA7IDAgLSBMUERTIFdha2V1cC10aW1lcgorCisjZGVmaW5lIEdQUkNNX05XUF9MUERTX1dBS0VVUF9TUkNfTldQX0xQRFNfV0FLRVVQX1NSQ19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX05XUF9SRVNFVF9DQVVTRSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9OV1BfUkVTRVRfQ0FVU0VfTldQX1JFU0VUX0NBVVNFX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEZGICAvLyBJbmRpY2F0ZXMgdGhlIHJlc2V0IGNhdXNlIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOV1AgOiAiMDAwMCIgLSBXYWtlIGZyb20gSElCL09GRgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtb2RlOyAiMDAwMSIgLSBXYWtlIGZyb20gTFBEUyA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIwMDEwIiAtIFJlc2VydmVkIDsgIjAwMTEiIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU29mdC1yZXNldDAgKE9ubHkgTldQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvcnRleC1zeXNyc3RuIGlzIGFzc2VydGVkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIjAxMDAiIC0gU29mdC1yZXNldDEgKE5XUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb3J0ZXgtc3lzcnN0biBhbmQgTldQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBlcmlwaGVyYWxzIGFyZSByZXNldCk7ICIwMTAxIiAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdET0cwIChOV1AgQ29ydGV4LXN5c3JzdG4gYW5kIE5XUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwZXJpcGhlcmFscyBhcmUgcmVzZXQpOyAiMDExMCIgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNQ1UgU29mdC1yZXNldCAoQVBQUyArIE5XUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb3J0ZXgtc3lzcnN0biArIFBlcmlwaGVyYWxzIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXNldCk7ICIwMTExIiAtIFNTRElPIEZ1bmN0aW9uMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXNldCAoT25seSBDb3J0ZXgtc3lzcnN0biBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3NlcnRlZCkgOyAiMTAwMCIgLSBSZXNldCBkdWUgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV0RPRyBvZiBBUFBTIChOV1AgQ29ydGV4LXN5c3JzdG4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIE5XUCBwZXJpcGhlcmFscyBhcmUgcmVzZXQpOworCisjZGVmaW5lIEdQUkNNX05XUF9SRVNFVF9DQVVTRV9OV1BfUkVTRVRfQ0FVU0VfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19OV1BfTFBEU19XQUtFVElNRV9PUFBfQ0ZHIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX05XUF9MUERTX1dBS0VUSU1FX09QUF9DRkdfTldQX0xQRFNfV0FLRVRJTUVfT1BQX0NGR19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gT1BQIFJlcXVlc3QgQ29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoTnVtYmVyIG9mIHNsb3ctY2xrIGN5Y2xlcykgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIExQRFMgV2FrZS10aW1lcgorCisjZGVmaW5lIEdQUkNNX05XUF9MUERTX1dBS0VUSU1FX09QUF9DRkdfTldQX0xQRFNfV0FLRVRJTUVfT1BQX0NGR19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX05XUF9TUkFNX0RTTFBfQ0ZHIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX05XUF9TUkFNX0RTTFBfQ0ZHX05XUF9TUkFNX0RTTFBfQ0ZHX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMEZGRkZGICAvLyBDb25maWd1cmF0aW9uIG9mIE5XUCBNZW1vcmllcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkdXJpbmcgRFNMUCA6IDAgLSBTUkFNcyBhcmUgT0ZGIDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMSAtIFNSQU1zIGFyZSBSZXRhaW5lZC4gTldQIFNSQU0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2x1c3RlciBpbmZvcm1hdGlvbiA6IFsyXSAtIDNyZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gaW4gTUVNU1MgKEFwcGxpY2FibGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIG93bmVkIGJ5IE5XUCkgOyBbM10gLSA0dGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29sdW1uIGluIE1FTVNTIChBcHBsaWNhYmxlIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBvd25lZCBieSBOV1ApIDsgWzRdIC0gNXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbHVtbiBpbiBNRU1TUyAoQXBwbGljYWJsZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gb3duZWQgYnkgTldQKSA7IFs1XSAtIDZ0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gaW4gTUVNU1MgKEFwcGxpY2FibGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIG93bmVkIGJ5IE5XUCkgOyBbNl0gLSA3dGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29sdW1uIGluIE1FTVNTIChBcHBsaWNhYmxlIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBvd25lZCBieSBOV1ApIDsgWzddIC0gOHRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbHVtbiBpbiBNRU1TUyAoQXBwbGljYWJsZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gb3duZWQgYnkgTldQKSA7IFs4XSAtIDl0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gaW4gTUVNU1MgKEFwcGxpY2FibGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIG93bmVkIGJ5IE5XUCkgOyBbOV0gLSAxMHRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbHVtbiBpbiBNRU1TUyAoQXBwbGljYWJsZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gb3duZWQgYnkgTldQKSA7IFsxMF0gLSAxMXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbHVtbiBpbiBNRU1TUyAoQXBwbGljYWJsZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gb3duZWQgYnkgTldQKSA7IFsxMV0gLSAxMnRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbHVtbiBpbiBNRU1TUyAoQXBwbGljYWJsZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gb3duZWQgYnkgTldQKSA7IFsxMl0gLSAxM3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbHVtbiBpbiBNRU1TUyAoQXBwbGljYWJsZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gb3duZWQgYnkgTldQKSA7IFsxM10gLSAxNHRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbHVtbiBpbiBNRU1TUyAoQXBwbGljYWJsZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gb3duZWQgYnkgTldQKSA7IFsxNF0gLSAxNXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbHVtbiBpbiBNRU1TUyAoQXBwbGljYWJsZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gb3duZWQgYnkgTldQKSA7IFsxOToxOF0gLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXNlcnZlZC4KKworI2RlZmluZSBHUFJDTV9OV1BfU1JBTV9EU0xQX0NGR19OV1BfU1JBTV9EU0xQX0NGR19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX05XUF9TUkFNX0xQRFNfQ0ZHIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX05XUF9TUkFNX0xQRFNfQ0ZHX05XUF9TUkFNX0xQRFNfQ0ZHX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMEZGRkZGICAvLyBDb25maWd1cmF0aW9uIG9mIE5XUCBNZW1vcmllcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkdXJpbmcgTFBEUyA6IDAgLSBTUkFNcyBhcmUgT0ZGIDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMSAtIFNSQU1zIGFyZSBSZXRhaW5lZC4gTldQIFNSQU0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2x1c3RlciBpbmZvcm1hdGlvbiA6IFsyXSAtIDNyZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gaW4gTUVNU1MgKEFwcGxpY2FibGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIG93bmVkIGJ5IE5XUCkgOyBbM10gLSA0dGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29sdW1uIGluIE1FTVNTIChBcHBsaWNhYmxlIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBvd25lZCBieSBOV1ApIDsgWzRdIC0gNXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbHVtbiBpbiBNRU1TUyAoQXBwbGljYWJsZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gb3duZWQgYnkgTldQKSA7IFs1XSAtIDZ0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gaW4gTUVNU1MgKEFwcGxpY2FibGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIG93bmVkIGJ5IE5XUCkgOyBbNl0gLSA3dGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29sdW1uIGluIE1FTVNTIChBcHBsaWNhYmxlIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBvd25lZCBieSBOV1ApIDsgWzddIC0gOHRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbHVtbiBpbiBNRU1TUyAoQXBwbGljYWJsZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gb3duZWQgYnkgTldQKSA7IFs4XSAtIDl0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gaW4gTUVNU1MgKEFwcGxpY2FibGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIG93bmVkIGJ5IE5XUCkgOyBbOV0gLSAxMHRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbHVtbiBpbiBNRU1TUyAoQXBwbGljYWJsZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gb3duZWQgYnkgTldQKSA7IFsxMF0gLSAxMXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbHVtbiBpbiBNRU1TUyAoQXBwbGljYWJsZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gb3duZWQgYnkgTldQKSA7IFsxMV0gLSAxMnRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbHVtbiBpbiBNRU1TUyAoQXBwbGljYWJsZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gb3duZWQgYnkgTldQKSA7IFsxMl0gLSAxM3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbHVtbiBpbiBNRU1TUyAoQXBwbGljYWJsZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gb3duZWQgYnkgTldQKSA7IFsxM10gLSAxNHRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbHVtbiBpbiBNRU1TUyAoQXBwbGljYWJsZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gb3duZWQgYnkgTldQKSA7IFsxNF0gLSAxNXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbHVtbiBpbiBNRU1TUyAoQXBwbGljYWJsZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gb3duZWQgYnkgTldQKSA7IFsxOToxOF0gLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXNlcnZlZC4KKworI2RlZmluZSBHUFJDTV9OV1BfU1JBTV9MUERTX0NGR19OV1BfU1JBTV9MUERTX0NGR19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX05XUF9MUERTX1dBS0VUSU1FX1dBS0VfQ0ZHIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX05XUF9MUERTX1dBS0VUSU1FX1dBS0VfQ0ZHX05XUF9MUERTX1dBS0VUSU1FX1dBS0VfQ0ZHX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyBXYWtlIHRpbWUgY29uZmlndXJhdGlvbiAobm8gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2xvdyBjbGtzKSBmb3IgTldQIHdha2UgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBMUERTLgorCisjZGVmaW5lIEdQUkNNX05XUF9MUERTX1dBS0VUSU1FX1dBS0VfQ0ZHX05XUF9MUERTX1dBS0VUSU1FX1dBS0VfQ0ZHX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fTldQX0FVVE9OTVNfU1BJX01BU1RFUl9TRUwgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fTldQX0FVVE9OTVNfU1BJX01BU1RFUl9TRUxfRl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZFMDAwMAorCisjZGVmaW5lIEdQUkNNX05XUF9BVVRPTk1TX1NQSV9NQVNURVJfU0VMX0ZfUyAxNworI2RlZmluZSBHUFJDTV9OV1BfQVVUT05NU19TUElfTUFTVEVSX1NFTF9NRU1fQVVUT05NU19TUElfTUFTVEVSX1NFTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMTAwMDAgIC8vIDAgLSBBUFBTIGlzIHNlbGVjdGVkIGFzIGhvc3QgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEF1dG9ubXMgU1BJIDsgMSAtIEV4dGVybmFsIGhvc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgc2VsZWN0ZWQgYXMgaG9zdCBmb3IgQXV0b25tcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTUEkKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fTldQX0FVVE9OTVNfU1BJX0lETEVfUkVRIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX05XUF9BVVRPTk1TX1NQSV9JRExFX1JFUV9OV1BfQVVUT05NU19TUElfSURMRV9XQUtFVVAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDEwMDAwCisKKyNkZWZpbmUgR1BSQ01fTldQX0FVVE9OTVNfU1BJX0lETEVfUkVRX05XUF9BVVRPTk1TX1NQSV9JRExFX0FDSyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIgIC8vIFdoZW4gMSA9PiBJRExFLW1vZGUgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWNrbm93bGVkZ2VkIGJ5IHRoZSBTUEktSVAuIChUaGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGZvciBNQ1NQSV9OMSkKKworI2RlZmluZSBHUFJDTV9OV1BfQVVUT05NU19TUElfSURMRV9SRVFfTldQX0FVVE9OTVNfU1BJX0lETEVfUkVRIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gV2hlbiAxID0+IFJlcXVlc3QgZm9yIElETEUtbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgYXV0b25vbW91cyBTUEkuIChUaGlzIGlzIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNQ1NQSV9OMSkKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fV0xBTl9UT19OV1BfV0FLRV9SRVFVRVNUIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX1dMQU5fVE9fTldQX1dBS0VfUkVRVUVTVF9XTEFOX1RPX05XUF9XQUtFX1JFUVVFU1QgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gUmVxdWVzdCBmb3Igd2FraW5nIHVwIE5XUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmcm9tIGFueSBvZiBpdHMgbG93LXBvd2VyIG1vZGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChTTFAvRFNMUC9MUERTKQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19OV1BfVE9fV0xBTl9XQUtFX1JFUVVFU1QgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fTldQX1RPX1dMQU5fV0FLRV9SRVFVRVNUX05XUF9UT19XTEFOX1dBS0VfUkVRVUVTVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBSZXF1ZXN0IGZvciB3YWtpbnAgdXAgV0xBTgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmcm9tIGl0cyBFTFAgTW9kZSAoVGhpcyBnZXRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaWdnZXJlZCB0byBFTFAtbG9naWMgb2YgV0xBTikKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fTldQX0dQSU9fV0FLRV9DT05GIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX05XUF9HUElPX1dBS0VfQ09ORl9OV1BfR1BJT19XQUtFX0NPTkZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDMgIC8vICIwMCIgLSBXYWtldXAgb24gbGV2ZWwwIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZWxlY3RlZCBHUElPIChHUElPIGdldHMgc2VsZWN0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5zaWRlIEhJQjNQMy1tb2R1bGUpOyAiMDEiIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2FrZXVwIG9uIGZhbGwtZWRnZSBvZiBzZWxlY3RlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPLgorCisjZGVmaW5lIEdQUkNNX05XUF9HUElPX1dBS0VfQ09ORl9OV1BfR1BJT19XQUtFX0NPTkZfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19HUFJDTV9FRlVTRV9SRUFEX1JFRzEyIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0dQUkNNX0VGVVNFX1JFQURfUkVHMTJfRlVTRUZBUk1fUk9XXzMyX01TV19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRkZGRiAgLy8gVGhpcyBjb3Jyc3BvbmRzIHRvIFJPV18zMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbMzE6MTZdIG9mIHRoZSBGVVNFRkFSTS4gU1BBUkUKKworI2RlZmluZSBHUFJDTV9HUFJDTV9FRlVTRV9SRUFEX1JFRzEyX0ZVU0VGQVJNX1JPV18zMl9NU1dfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19HUFJDTV9ESUVJRF9SRUFEX1JFRzUgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fR1BSQ01fRElFSURfUkVBRF9SRUc1X0ZVU0VGQVJNX1JPV18xMF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gQ29ycmVzcG9uZHMgdG8gUk9XMTAgb2YgRlVTRUZBUk0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOiBbNTowXSAtIEFEQyBPRkZTRVQgOyBbMTM6Nl0gLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBURU1QX1NFTlNFIDsgWzE0OjE0XSAtIERGVF9HU0cgOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbMTU6MTVdIC0gRk1DX0RJU0FCTEUgOyBbMzE6MTZdIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV0xBTl9NQUMgSUQKKworI2RlZmluZSBHUFJDTV9HUFJDTV9ESUVJRF9SRUFEX1JFRzVfRlVTRUZBUk1fUk9XXzEwX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fR1BSQ01fRElFSURfUkVBRF9SRUc2IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0dQUkNNX0RJRUlEX1JFQURfUkVHNl9GVVNFRkFSTV9ST1dfMTFfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIENvcnJlc3BvbmRzIHRvIFJPVzExIG9mIEZVU0VGQVJNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDogWzMxOjBdIDogV0xBTiBNQUMgSUQKKworI2RlZmluZSBHUFJDTV9HUFJDTV9ESUVJRF9SRUFEX1JFRzZfRlVTRUZBUk1fUk9XXzExX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fUkVGX0ZTTV9DRkcwIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX1JFRl9GU01fQ0ZHMF9CR0FQX1NFVFRMSU5HX1RJTUVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDBGRjAwMDAgIC8vIEFOQS1CR0FQIFNldHRsaW5nIHRpbWUgKEluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG51bWJlciBvZiBzbG93X2Nsa3MpCisKKyNkZWZpbmUgR1BSQ01fUkVGX0ZTTV9DRkcwX0JHQVBfU0VUVExJTkdfVElNRV9TIDE2CisjZGVmaW5lIEdQUkNNX1JFRl9GU01fQ0ZHMF9GUkVGX0xET19TRVRUTElOR19USU1FX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGRjAwICAvLyBTbGljZXIgTERPIHNldHRsaW5nIHRpbWUgKEluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG51bWJlciBvZiBzbG93IGNsa3MpCisKKyNkZWZpbmUgR1BSQ01fUkVGX0ZTTV9DRkcwX0ZSRUZfTERPX1NFVFRMSU5HX1RJTUVfUyA4CisjZGVmaW5lIEdQUkNNX1JFRl9GU01fQ0ZHMF9ESUdfQlVGX1NFVFRMSU5HX1RJTUVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkYgIC8vIERpZy1idWZmZXIgc2V0dGxpbmcgdGltZSAoSW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbnVtYmVyIG9mIHNsb3cgY2xrcykKKworI2RlZmluZSBHUFJDTV9SRUZfRlNNX0NGRzBfRElHX0JVRl9TRVRUTElOR19USU1FX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fUkVGX0ZTTV9DRkcxIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX1JFRl9GU01fQ0ZHMV9YVEFMX1NFVFRMSU5HX1RJTUVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkYwMDAwMDAgIC8vIFhUQUwgc2V0dGxpbmcgdGltZSAoSW4gbnVtYmVyIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNsb3cgY2xrcykKKworI2RlZmluZSBHUFJDTV9SRUZfRlNNX0NGRzFfWFRBTF9TRVRUTElOR19USU1FX1MgMjQKKyNkZWZpbmUgR1BSQ01fUkVGX0ZTTV9DRkcxX1NMSUNFUl9MVl9TRVRUTElOR19USU1FX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwRkYwMDAwICAvLyBMViBTbGljZXIgc2V0dGxpbmcgdGltZQorCisjZGVmaW5lIEdQUkNNX1JFRl9GU01fQ0ZHMV9TTElDRVJfTFZfU0VUVExJTkdfVElNRV9TIDE2CisjZGVmaW5lIEdQUkNNX1JFRl9GU01fQ0ZHMV9TTElDRVJfSFZfUERfU0VUVExJTkdfVElNRV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRkYwMCAgLy8gSFYgU2xpY2VyIFB1bGwtZG93biBzZXR0bGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aW1lCisKKyNkZWZpbmUgR1BSQ01fUkVGX0ZTTV9DRkcxX1NMSUNFUl9IVl9QRF9TRVRUTElOR19USU1FX1MgOAorI2RlZmluZSBHUFJDTV9SRUZfRlNNX0NGRzFfU0xJQ0VSX0hWX1NFVFRMSU5HX1RJTUVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkYgIC8vIEhWIFNsaWNlciBzZXR0bGluZyB0aW1lCisKKyNkZWZpbmUgR1BSQ01fUkVGX0ZTTV9DRkcxX1NMSUNFUl9IVl9TRVRUTElOR19USU1FX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fQVBMTE1DU19XTEFOX0NPTkZJRzBfNDAgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fQVBMTE1DU19XTEFOX0NPTkZJRzBfNDBfQVBMTE1DU19XTEFOX05fNDBfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDdGMDAgIC8vIENvbmZpZ3VyYXRpb24gZm9yIFdMQU4gQVBMTE1DUyAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5bNjowXSwgaWYgdGhlIFhUQUwgZnJlcXVlbmN5IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDQwIE1IeiAoU2VsZWN0ZWQgYnkgZWZ1c2UpCisKKyNkZWZpbmUgR1BSQ01fQVBMTE1DU19XTEFOX0NPTkZJRzBfNDBfQVBMTE1DU19XTEFOX05fNDBfUyA4CisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfV0xBTl9DT05GSUcwXzQwX0FQTExNQ1NfV0xBTl9NXzQwX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEZGICAvLyBDb25maWd1cmF0aW9uIGZvciBXTEFOIEFQTExNQ1MgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNWzc6MF0sIGlmIHRoZSBYVEFMIGZyZXF1ZW5jeSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0MCBNSHogKFNlbGVjdGVkIGJ5IGVmdXNlKQorCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfV0xBTl9DT05GSUcwXzQwX0FQTExNQ1NfV0xBTl9NXzQwX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fQVBMTE1DU19XTEFOX0NPTkZJRzFfNDAgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fQVBMTE1DU19XTEFOX0NPTkZJRzFfNDBfQVBMTE1DU19ISVNQRUVEXzQwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxMCAgLy8gQ29uZmlndXJhdGlvbiBmb3IgV0xBTiBBUExMTUNTIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIFhUQUwgZnJlcXVlbmN5IGlmIDQwIE1IegorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoU2VsZWN0ZWQgYnkgRWZ1c2UpCisKKyNkZWZpbmUgR1BSQ01fQVBMTE1DU19XTEFOX0NPTkZJRzFfNDBfQVBMTE1DU19TRUw5Nl80MCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDggIC8vIENvbmZpZ3VyYXRpb24gZm9yIFdMQU4gQVBMTE1DUyAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNlbDk2LCBpZiB0aGUgWFRBTCBmcmVxdWVuY3kgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNDAgTUh6IChTZWxlY3RlZCBieSBFZnVzZSkKKworI2RlZmluZSBHUFJDTV9BUExMTUNTX1dMQU5fQ09ORklHMV80MF9BUExMTUNTX1NFTElOUEZSRVFfNDBfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDcgIC8vIENvbmZpZ3VyYXRpb24gZm9yIFdMQU4gQVBMTE1DUyAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNlbGlucGZyZXEsIGlmIHRoZSBYVEFMIGZyZXF1ZW5jeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyA0MCBNSHogKFNlbGVjdGVkIGJ5IEVmdXNlKQorCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfV0xBTl9DT05GSUcxXzQwX0FQTExNQ1NfU0VMSU5QRlJFUV80MF9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0FQTExNQ1NfV0xBTl9DT05GSUcwXzI2IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfV0xBTl9DT05GSUcwXzI2X0FQTExNQ1NfV0xBTl9OXzI2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDA3RjAwICAvLyBDb25maWd1cmF0aW9uIGZvciBXTEFOIEFQTExNQ1MgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOWzY6MF0sIGlmIHRoZSBYVEFMIGZyZXF1ZW5jeSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAyNiBNSHogKFNlbGVjdGVkIGJ5IGVmdXNlKQorCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfV0xBTl9DT05GSUcwXzI2X0FQTExNQ1NfV0xBTl9OXzI2X1MgOAorI2RlZmluZSBHUFJDTV9BUExMTUNTX1dMQU5fQ09ORklHMF8yNl9BUExMTUNTX1dMQU5fTV8yNl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRiAgLy8gQ29uZmlndXJhdGlvbiBmb3IgV0xBTiBBUExMTUNTIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTVs3OjBdLCBpZiB0aGUgWFRBTCBmcmVxdWVuY3kgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMjYgTUh6IChTZWxlY3RlZCBieSBlZnVzZSkKKworI2RlZmluZSBHUFJDTV9BUExMTUNTX1dMQU5fQ09ORklHMF8yNl9BUExMTUNTX1dMQU5fTV8yNl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0FQTExNQ1NfV0xBTl9DT05GSUcxXzI2IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfV0xBTl9DT05GSUcxXzI2X0FQTExNQ1NfSElTUEVFRF8yNiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTAgIC8vIENvbmZpZ3VyYXRpb24gZm9yIFdMQU4gQVBMTE1DUyAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBYVEFMIGZyZXF1ZW5jeSBpZiAyNiBNSHoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKFNlbGVjdGVkIGJ5IEVmdXNlKQorCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfV0xBTl9DT05GSUcxXzI2X0FQTExNQ1NfU0VMOTZfMjYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA4ICAvLyBDb25maWd1cmF0aW9uIGZvciBXTEFOIEFQTExNQ1MgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTZWw5NiwgaWYgdGhlIFhUQUwgZnJlcXVlbmN5IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDI2IE1IeiAoU2VsZWN0ZWQgYnkgRWZ1c2UpCisKKyNkZWZpbmUgR1BSQ01fQVBMTE1DU19XTEFOX0NPTkZJRzFfMjZfQVBMTE1DU19TRUxJTlBGUkVRXzI2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA3ICAvLyBDb25maWd1cmF0aW9uIGZvciBXTEFOIEFQTExNQ1MgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTZWxpbnBmcmVxLCBpZiB0aGUgWFRBTCBmcmVxdWVuY3kKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgMjYgTUh6IChTZWxlY3RlZCBieSBFZnVzZSkKKworI2RlZmluZSBHUFJDTV9BUExMTUNTX1dMQU5fQ09ORklHMV8yNl9BUExMTUNTX1NFTElOUEZSRVFfMjZfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19BUExMTUNTX1dMQU5fT1ZFUlJJREVTIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfV0xBTl9PVkVSUklERVNfQVBMTE1DU19XTEFOX1BPU1RESVZfT1ZFUlJJREVfQ1RSTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwODAwMDAKKworI2RlZmluZSBHUFJDTV9BUExMTUNTX1dMQU5fT1ZFUlJJREVTX0FQTExNQ1NfV0xBTl9QT1NURElWX09WRVJSSURFX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDcwMDAwCisKKyNkZWZpbmUgR1BSQ01fQVBMTE1DU19XTEFOX09WRVJSSURFU19BUExMTUNTX1dMQU5fUE9TVERJVl9PVkVSUklERV9TIDE2CisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfV0xBTl9PVkVSUklERVNfQVBMTE1DU19XTEFOX1NQQVJFX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNzAwCisKKyNkZWZpbmUgR1BSQ01fQVBMTE1DU19XTEFOX09WRVJSSURFU19BUExMTUNTX1dMQU5fU1BBUkVfUyA4CisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfV0xBTl9PVkVSUklERVNfQVBMTE1DU19XTEFOX01fOF9PVkVSUklERV9DVFJMIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAyMCAgLy8gT3ZlcnJpZGUgY29udHJvbCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV0xBTl9BUExMTUNTX01bOF0uIFdoZW4gc2V0IHRvMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTVs4XSB3aWxsIGJlIHNlbGVjdGVkIGJ5IGJpdCBbM10uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChFbHNlIGNvbnRyb2xsZWQgZnJvbSBXVE9QKQorCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfV0xBTl9PVkVSUklERVNfQVBMTE1DU19XTEFOX01fOF9PVkVSUklERSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTAgIC8vIE92ZXJyaWRlIGZvciBXTEFOX0FQTExNQ1NfTVs4XS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXBwbGljYWJsZSBvbmx5IHdoZW4gYml0IFs0XSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gMS4gKEVsc2UgY29udHJvbGxlZCBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdUT1ApCisKKyNkZWZpbmUgR1BSQ01fQVBMTE1DU19XTEFOX09WRVJSSURFU19BUExMTUNTX1dMQU5fTl83XzhfT1ZFUlJJREVfQ1RSTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDQgIC8vIE92ZXJyaWRlIGNvbnRyb2wgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdMQU5fQVBMTE1DU19OWzg6N10uIFdoZW4gc2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvMSwgTls4OjddIHdpbGwgYmUgc2VsZWN0ZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0cyBbMjoxXS4gKEVsc2UgY29udHJvbGxlZCBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdUT1ApCisKKyNkZWZpbmUgR1BSQ01fQVBMTE1DU19XTEFOX09WRVJSSURFU19BUExMTUNTX1dMQU5fTl83XzhfT1ZFUlJJREVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDMgIC8vIE92ZXJyaWRlIHZhbHVlIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXTEFOX0FQTExNQ1NfTls4OjddIGJpdHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFwcGxpY2FibGUgb25seSB3aGVuIGJpdCBbMV0gaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIDEuIChFbHNlIGNvbnRyb2xsZWQgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXVE9QKQorCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfV0xBTl9PVkVSUklERVNfQVBMTE1DU19XTEFOX05fN184X09WRVJSSURFX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fQVBMTE1DU19NQ1VfUlVOX0NPTkZJRzBfMzhQNCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9BUExMTUNTX01DVV9SVU5fQ09ORklHMF8zOFA0X0FQTExNQ1NfTUNVX1BPU1RESVZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzgwMDAwMDAKKworI2RlZmluZSBHUFJDTV9BUExMTUNTX01DVV9SVU5fQ09ORklHMF8zOFA0X0FQTExNQ1NfTUNVX1BPU1RESVZfUyAyNworI2RlZmluZSBHUFJDTV9BUExMTUNTX01DVV9SVU5fQ09ORklHMF8zOFA0X0FQTExNQ1NfTUNVX1NQQVJFX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA3MDAwMDAwCisKKyNkZWZpbmUgR1BSQ01fQVBMTE1DU19NQ1VfUlVOX0NPTkZJRzBfMzhQNF9BUExMTUNTX01DVV9TUEFSRV9TIDI0CisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfTUNVX1JVTl9DT05GSUcwXzM4UDRfQVBMTE1DU19NQ1VfUlVOX05fMzhQNF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDdGMDAwMCAgLy8gQ29uZmlndXJhdGlvbiBmb3IgTUNVLUFQTExNQ1MgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOIGR1cmluZyBSVU4gbW9kZS4gU2VsZWN0ZWQgaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIFhUQUwgZnJlcXVlbmN5IGlzIDM4LjQgTUh6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChmcm9tIEVmdXNlKQorCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfTUNVX1JVTl9DT05GSUcwXzM4UDRfQVBMTE1DU19NQ1VfUlVOX05fMzhQNF9TIDE2CisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfTUNVX1JVTl9DT05GSUcwXzM4UDRfQVBMTE1DU19NQ1VfUlVOX01fMzhQNF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRkYwMCAgLy8gQ29uZmlndXJhdGlvbiBmb3IgTUNVLUFQTExNQ1MgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNIGR1cmluZyBSVU4gbW9kZS4gU2VsZWN0ZWQgaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIFhUQUwgZnJlcXVlbmN5IGlzIDM4LjQgTUh6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChmcm9tIEVmdXNlKQorCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfTUNVX1JVTl9DT05GSUcwXzM4UDRfQVBMTE1DU19NQ1VfUlVOX01fMzhQNF9TIDgKKyNkZWZpbmUgR1BSQ01fQVBMTE1DU19NQ1VfUlVOX0NPTkZJRzBfMzhQNF9BUExMTUNTX01DVV9SVU5fTV84XzM4UDQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDEwICAvLyBDb25maWd1cmF0aW9uIGZvciBNQ1UtQVBMTE1DUyA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1bOF0gZHVyaW5nIFJVTiBtb2RlLiBTZWxlY3RlZCBpZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgWFRBTCBmcmVxdWVuY3kgaXMgMzguNCBNSHoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKEZyb20gRWZ1c2UpCisKKyNkZWZpbmUgR1BSQ01fQVBMTE1DU19NQ1VfUlVOX0NPTkZJRzBfMzhQNF9BUExMTUNTX01DVV9SVU5fTl83XzhfMzhQNF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMyAgLy8gQ29uZmlndXJhdGlvbiBmb3IgTUNVLUFQTExNQ1MgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOWzg6N10gZHVyaW5nIFJVTiBtb2RlLiBTZWxlY3RlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgWFRBTCBmcmVxdWVuY3kgaXMgMzguNCBNSHoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKEZyb20gRWZ1c2UpCisKKyNkZWZpbmUgR1BSQ01fQVBMTE1DU19NQ1VfUlVOX0NPTkZJRzBfMzhQNF9BUExMTUNTX01DVV9SVU5fTl83XzhfMzhQNF9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0FQTExNQ1NfTUNVX1JVTl9DT05GSUcxXzM4UDQgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fQVBMTE1DU19NQ1VfUlVOX0NPTkZJRzFfMzhQNF9BUExMTUNTX01DVV9SVU5fSElTUEVFRF8zOFA0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxMCAgLy8gQ29uZmlndXJhdGlvbiBmb3IgTUNVLUFQTExNQ1MgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBISVNQRUVEIGR1cmluZyBSVU4gbW9kZS4gU2VsZWN0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIFhUQUwgZnJlcXVlbmN5IGlzIDM4LjQgTUh6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChmcm9tIEVmdXNlKQorCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfTUNVX1JVTl9DT05GSUcxXzM4UDRfQVBMTE1DU19NQ1VfUlVOX1NFTDk2XzM4UDQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA4ICAvLyBDb25maWd1cmF0aW9uIGZvciBNQ1UtQVBMTE1DUyA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNFTDk2IGR1cmluZyBSVU4gbW9kZS4gU2VsZWN0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIFhUQUwgZnJlcXVlbmN5IGlzIDM4LjQgTUh6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChmcm9tIEVmdXNlKQorCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfTUNVX1JVTl9DT05GSUcxXzM4UDRfQVBMTE1DU19NQ1VfUlVOX1NFTElOUEZSRVFfMzhQNF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNyAgLy8gQ29uZmlndXJhdGlvbiBmb3IgTUNVLUFQTExNQ1MgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTRUxJTlBGUkVRIGR1cmluZyBSVU4gbW9kZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2VsZWN0ZWQgaWYgdGhlIFhUQUwgZnJlcXVlbmN5IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDM4LjQgTUh6IChmcm9tIEVmdXNlKQorCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfTUNVX1JVTl9DT05GSUcxXzM4UDRfQVBMTE1DU19NQ1VfUlVOX1NFTElOUEZSRVFfMzhQNF9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0FQTExNQ1NfTUNVX1JVTl9DT05GSUcwXzI2IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfTUNVX1JVTl9DT05GSUcwXzI2X0FQTExNQ1NfTUNVX1JVTl9OXzI2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwN0YwMDAwICAvLyBDb25maWd1cmF0aW9uIGZvciBNQ1UtQVBMTE1DUyA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE4gZHVyaW5nIFJVTiBtb2RlLiBTZWxlY3RlZCBpZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgWFRBTCBmcmVxdWVuY3kgaXMgMjYgTUh6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChmcm9tIEVmdXNlKQorCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfTUNVX1JVTl9DT05GSUcwXzI2X0FQTExNQ1NfTUNVX1JVTl9OXzI2X1MgMTYKKyNkZWZpbmUgR1BSQ01fQVBMTE1DU19NQ1VfUlVOX0NPTkZJRzBfMjZfQVBMTE1DU19NQ1VfUlVOX01fMjZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZGMDAgIC8vIENvbmZpZ3VyYXRpb24gZm9yIE1DVS1BUExMTUNTIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTSBkdXJpbmcgUlVOIG1vZGUuIFNlbGVjdGVkIGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBYVEFMIGZyZXF1ZW5jeSBpcyAyNiBNSHoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKGZyb20gRWZ1c2UpCisKKyNkZWZpbmUgR1BSQ01fQVBMTE1DU19NQ1VfUlVOX0NPTkZJRzBfMjZfQVBMTE1DU19NQ1VfUlVOX01fMjZfUyA4CisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfTUNVX1JVTl9DT05GSUcwXzI2X0FQTExNQ1NfTUNVX1JVTl9NXzhfMjYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDEwICAvLyBDb25maWd1cmF0aW9uIGZvciBNQ1UtQVBMTE1DUyA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1bOF0gZHVyaW5nIFJVTiBtb2RlLiBTZWxlY3RlZCBpZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgWFRBTCBmcmVxdWVuY3kgaXMgMjYgTUh6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChGcm9tIEVmdXNlKQorCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfTUNVX1JVTl9DT05GSUcwXzI2X0FQTExNQ1NfTUNVX1JVTl9OXzdfOF8yNl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMyAgLy8gQ29uZmlndXJhdGlvbiBmb3IgTUNVLUFQTExNQ1MgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOWzg6N10gZHVyaW5nIFJVTiBtb2RlLiBTZWxlY3RlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgWFRBTCBmcmVxdWVuY3kgaXMgMjYgTUh6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChGcm9tIEVmdXNlKQorCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfTUNVX1JVTl9DT05GSUcwXzI2X0FQTExNQ1NfTUNVX1JVTl9OXzdfOF8yNl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0FQTExNQ1NfTUNVX1JVTl9DT05GSUcxXzI2IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfTUNVX1JVTl9DT05GSUcxXzI2X0FQTExNQ1NfTUNVX1JVTl9ISVNQRUVEXzI2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxMCAgLy8gQ29uZmlndXJhdGlvbiBmb3IgTUNVLUFQTExNQ1MgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBISVNQRUVEIGR1cmluZyBSVU4gbW9kZS4gU2VsZWN0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIFhUQUwgZnJlcXVlbmN5IGlzIDI2IE1IegorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoZnJvbSBFZnVzZSkKKworI2RlZmluZSBHUFJDTV9BUExMTUNTX01DVV9SVU5fQ09ORklHMV8yNl9BUExMTUNTX01DVV9SVU5fU0VMOTZfMjYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA4ICAvLyBDb25maWd1cmF0aW9uIGZvciBNQ1UtQVBMTE1DUyA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNFTDk2IGR1cmluZyBSVU4gbW9kZS4gU2VsZWN0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIFhUQUwgZnJlcXVlbmN5IGlzIDI2IE1IegorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoZnJvbSBFZnVzZSkKKworI2RlZmluZSBHUFJDTV9BUExMTUNTX01DVV9SVU5fQ09ORklHMV8yNl9BUExMTUNTX01DVV9SVU5fU0VMSU5QRlJFUV8yNl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNyAgLy8gQ29uZmlndXJhdGlvbiBmb3IgTUNVLUFQTExNQ1MgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTRUxJTlBGUkVRIGR1cmluZyBSVU4gbW9kZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2VsZWN0ZWQgaWYgdGhlIFhUQUwgZnJlcXVlbmN5IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDI2IE1IeiAoZnJvbSBFZnVzZSkKKworI2RlZmluZSBHUFJDTV9BUExMTUNTX01DVV9SVU5fQ09ORklHMV8yNl9BUExMTUNTX01DVV9SVU5fU0VMSU5QRlJFUV8yNl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlIEdQUkNNX09fU1BBUkVfUlcwIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZSBHUFJDTV9PX1NQQVJFX1JXMSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fQVBMTE1DU19NQ1VfT1ZFUlJJREVTIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfTUNVX09WRVJSSURFU19BUExMTUNTX01DVV9MT0NLIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDQwMCAgLy8gMSAtIEFQTExNQ1NfTUNVIGlzIGxvY2tlZCA7IDAgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBUExMTUNTX01DVSBpcyBub3QgbG9ja2VkCisKKyNkZWZpbmUgR1BSQ01fQVBMTE1DU19NQ1VfT1ZFUlJJREVTX0FQTExNQ1NfTUNVX0VOQUJMRV9PVkVSUklERSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAyMDAgIC8vIE92ZXJyaWRlIGZvciBBUExMTUNTX01DVSBFbmFibGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFwcGxpY2FibGUgaWYgYml0IFs4XSBpcyBzZXQKKworI2RlZmluZSBHUFJDTV9BUExMTUNTX01DVV9PVkVSUklERVNfQVBMTE1DU19NQ1VfRU5BQkxFX09WRVJSSURFX0NUUkwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwICAvLyAxIC0gRW5hYmxlIGZvciBBUExMTUNTX01DVSBjb21lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmcm9tIGJpdCBbOV0uIDAgLSBFbmFibGUgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFQTExNQ1NfTUNVIGNvbWVzIGZyb20gRlNNLgorCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfTUNVX09WRVJSSURFU19TWVNDTEtfU1JDX09WRVJSSURFX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA2ICAvLyBPdmVycmlkZSBmb3Igc3lzY2xrIHNyYworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoYXBwbGljYWJsZSBvbmx5IGlmIGJpdCBbMF0gaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIDEuICIwMCItIFNMT1dfQ0xLICIwMSItCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFhUQUxfQ0xLICIxMCItIFBMTF9DTEsKKworI2RlZmluZSBHUFJDTV9BUExMTUNTX01DVV9PVkVSUklERVNfU1lTQ0xLX1NSQ19PVkVSUklERV9TIDEKKyNkZWZpbmUgR1BSQ01fQVBMTE1DU19NQ1VfT1ZFUlJJREVTX1NZU0NMS19TUkNfT1ZFUlJJREVfQ1RSTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBTeXNjbGsgc3JjIGlzIHNlbGVjdGVkIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0cyBbMjoxXSBvZiB0aGlzIHJlZ2lzdGVyLiAwIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3lzY2xrIHNyYyBpcyBzZWxlY3RlZCBmcm9tIEZTTQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19TWVNDTEtfU1dJVENIX1NUQVRVUyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9TWVNDTEtfU1dJVENIX1NUQVRVU19TWVNDTEtfU1dJVENIX1NUQVRVUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBTeXNjbGsgc3dpdGNoaW5nIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbXBsZXRlLiAwIC0gU3lzY2xrIHN3aXRjaGluZyBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbiBwcm9ncmVzcy4KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fUkVGX0xET19DT05UUk9MUyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9SRUZfTERPX0NPTlRST0xTX1JFRl9MRE9fRU5BQkxFX09WRVJSSURFX0NUUkwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDEwMDAwICAvLyAxIC0gRW5hYmxlIGZvciBSRUZfTERPIGNvbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZyb20gYml0IFswXSBvZiB0aGlzIHJlZ2lzdGVyIDsgMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtIEVuYWJsZSBmb3IgUkVGX0xETyBjb21lcyBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBGU00uIE5vdGUgOiBGaW5hbCBSRUZfTERPX0VOCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlYWNoZXMgb24gdGhlIHBvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9QX1BNX1JFRzJbMF0gb2YgZ3ByY20uCisKKyNkZWZpbmUgR1BSQ01fUkVGX0xET19DT05UUk9MU19SRUZfU1BBUkVfQ09OVFJPTF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwQzAwMCAgLy8gU3BhcmUgYml0cyBmb3IgUkVGX0NUUkxfRlNNLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZWFjaGVzIGRpcmVjdGx5IG9uIHBvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9QX1BNX1JFRzJbMTU6MTRdIG9mIGdwcmNtLgorCisjZGVmaW5lIEdQUkNNX1JFRl9MRE9fQ09OVFJPTFNfUkVGX1NQQVJFX0NPTlRST0xfUyAxNAorI2RlZmluZSBHUFJDTV9SRUZfTERPX0NPTlRST0xTX1JFRl9UTE9BRF9FTkFCTEVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDM4MDAgIC8vIFJFRiBUTE9BRCBFbmFibGUuIFJlYWNoZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGlyZWN0bHkgb24gcG9ydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUT1BfUE1fUkVHMlsxMzoxMV0gb2YgZ3ByY20uCisKKyNkZWZpbmUgR1BSQ01fUkVGX0xET19DT05UUk9MU19SRUZfVExPQURfRU5BQkxFX1MgMTEKKyNkZWZpbmUgR1BSQ01fUkVGX0xET19DT05UUk9MU19SRUZfTERPX1RNVVhfQ09OVFJPTF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDcwMCAgLy8gUkVGX0xETyBUZXN0LW11eCBjb250cm9sLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZWFjaGVzIGRpcmVjdGx5IG9uIHBvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9QX1BNX1JFRzJbMTA6OF0gb2YgZ3ByY20uCisKKyNkZWZpbmUgR1BSQ01fUkVGX0xET19DT05UUk9MU19SRUZfTERPX1RNVVhfQ09OVFJPTF9TIDgKKyNkZWZpbmUgR1BSQ01fUkVGX0xET19DT05UUk9MU19SRUZfQldfQ09OVFJPTF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBDMCAgLy8gUkVGIEJXIENvbnRyb2wuIFJlYWNoZXMgZGlyZWN0bHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb24gcG9ydCBUT1BfUE1fUkVHMls3OjZdIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdwcmNtLgorCisjZGVmaW5lIEdQUkNNX1JFRl9MRE9fQ09OVFJPTFNfUkVGX0JXX0NPTlRST0xfUyA2CisjZGVmaW5lIEdQUkNNX1JFRl9MRE9fQ09OVFJPTFNfUkVGX1ZUUklNX0NPTlRST0xfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwM0MgIC8vIFJFRiBWVFJJTSBDb250cm9sLiBSZWFjaGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpcmVjdGx5IG9uIHBvcnQgVE9QX1BNX1JFRzJbNToyXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZiBncHJjbS4KKworI2RlZmluZSBHUFJDTV9SRUZfTERPX0NPTlRST0xTX1JFRl9WVFJJTV9DT05UUk9MX1MgMgorI2RlZmluZSBHUFJDTV9SRUZfTERPX0NPTlRST0xTX1JFRl9MRE9fQllQQVNTX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIgIC8vIFJFRiBMRE8gQnlwYXNzIEVuYWJsZS4gUmVhY2hlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkaXJlY3RseSBvbiBwb3J0IFRPUF9QTV9SRUcyWzFdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mIGdwcmNtLgorCisjZGVmaW5lIEdQUkNNX1JFRl9MRE9fQ09OVFJPTFNfUkVGX0xET19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyBPdmVycmlkZSBmb3IgUkVGX0xETyBFbmFibGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFwcGxpY2FibGUgb25seSBpZiBiaXQgWzE2XSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIHJlZ2lzdGVyIGlzIHNldC4gTm90ZSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpbmFsIFJFRl9MRE9fRU4gcmVhY2hlcyBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9ydCBUT1BfUE1fUkVHMlswXSBvZiBncHJjbS4KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fUkVGX1JUUklNX0NPTlRST0wgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fUkVGX1JUUklNX0NPTlRST0xfVE9QX1BNX1JFRzBfNV80X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4MDAwMDAwICAvLyBUaGlzIGlzIFs1OjRdIGJpdHMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9QX1BNX1JFRzAKKworI2RlZmluZSBHUFJDTV9SRUZfUlRSSU1fQ09OVFJPTF9UT1BfUE1fUkVHMF81XzRfUyAyNworI2RlZmluZSBHUFJDTV9SRUZfUlRSSU1fQ09OVFJPTF9UT1BfQ0xLTV9SRUcwXzE1XzVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDdGRjAwMDAgIC8vIFRoaXMgaXMgWzE1OjVdIGJpdHMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9QX0NMS01fUkVHMAorCisjZGVmaW5lIEdQUkNNX1JFRl9SVFJJTV9DT05UUk9MX1RPUF9DTEtNX1JFRzBfMTVfNV9TIDE2CisjZGVmaW5lIEdQUkNNX1JFRl9SVFJJTV9DT05UUk9MX1JFRl9DTEtNX1JUUklNX09WRVJSSURFX0NUUkwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwICAvLyAxIC0gQ0xLTV9SVFJJTSBjb21lcyBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0c1s0OjBdIG9mIHRoaXMgcmVnaXN0ZXIuIDAgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDTEtNX1JUUklNIGNvbWVzIGZyb20gRWZ1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKGFmdGVyIGVmdXNlX2RvbmUgPSAxKS4KKworI2RlZmluZSBHUFJDTV9SRUZfUlRSSU1fQ09OVFJPTF9SRUZfQ0xLTV9SVFJJTV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxRiAgLy8gQ0xLTV9UUklNIE92ZXJyaWRlLiBBcHBsaWNhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gZWZ1c2VfZG9uZSA9IDAgb3IgYml0WzhdIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0byAxLgorCisjZGVmaW5lIEdQUkNNX1JFRl9SVFJJTV9DT05UUk9MX1JFRl9DTEtNX1JUUklNX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fUkVGX1NMSUNFUl9DT05UUk9MUzAgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fUkVGX1NMSUNFUl9DT05UUk9MUzBfQ0xLX0VOX1dMQU5fTE9XVl9PVkVSUklERV9DVFJMIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDIwMDAwMCAgLy8gMSAtIEVOX0RJR19CVUZfVE9QIGNvbWVzIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0IFsxNF0gb2YgdGhpcyByZWdpc3Rlci4gMCAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVOX0RJR19CVUZfVE9QIGNvbWVzIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZTTS4gTm90ZSA6IEZpbmFsIEVOX0RJR19CVUZfV0xBTgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWFjaGVzIG9uIFRPUF9DTEtNX1JFRzFfSU5bMTRdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBvcnQgb2YgZ3ByY20KKworI2RlZmluZSBHUFJDTV9SRUZfU0xJQ0VSX0NPTlRST0xTMF9DTEtfRU5fVE9QX0xPV1ZfT1ZFUlJJREVfQ1RSTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAxMDAwMDAgIC8vIDEgLSBFTl9ESUdfQlVGX1RPUCBjb21lcyBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdCBbMTVdIG9mIHRoaXMgcmVnaXN0ZXIuIDAgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFTl9ESUdfQlVGX1RPUCBjb21lcyBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGU00uIE5vdGUgOiBGaW5hbCBFTl9ESUdfQlVGX1RPUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWFjaGVzIG9uIFRPUF9DTEtNX1JFRzFfSU5bMTVdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBvcnQgb2YgZ3ByY20KKworI2RlZmluZSBHUFJDTV9SRUZfU0xJQ0VSX0NPTlRST0xTMF9FTl9YVEFMX09WRVJSSURFX0NUUkwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDgwMDAwICAvLyAxIC0gRU5fWFRBTCBjb21lcyBmcm9tIGJpdCBbM10KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2YgdGhpcyByZWdpc3Rlci4gMCAtIEVOX1hUQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29tZXMgZnJvbSBGU00uIE5vdGUgOiBGaW5hbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBYVEFMX0VOIHJlYWNoZXMgb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9QX0NMS01fUkVHMV9JTlszXSBvZiBncHJjbS4KKworI2RlZmluZSBHUFJDTV9SRUZfU0xJQ0VSX0NPTlRST0xTMF9FTl9TTElfSFZfT1ZFUlJJREVfQ1RSTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwNDAwMDAgIC8vIDEgLSBFbmFibGUgSFYgU2xpY2VyIGNvbWVzIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0IFsyXSBvZiB0aGlzIHJlZ2lzdGVyLiAwIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRW5hYmxlIEhWIFNsaWNlciBjb21lcyBmcm9tIEZTTS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm90ZSA6IEZpbmFsIEhWX1NMSUNFUl9FTiByZWFjaGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9uIHBvcnQgVE9QX0NMS01fUkVHMV9JTlsxXSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBncHJjbS4KKworI2RlZmluZSBHUFJDTV9SRUZfU0xJQ0VSX0NPTlRST0xTMF9FTl9TTElfTFZfT1ZFUlJJREVfQ1RSTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMjAwMDAgIC8vIDEgLSBFbmFibGUgTFYgU2xpY2VyIGNvbWVzIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0WzFdIG9mIHRoaXMgcmVnaXN0ZXIuIDAgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFbmFibGUgTFYgU2xpY2VyIGNvbWVzIGZyb20gRlNNLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3RlIDogZmluYWwgTFZfU0xJQ0VSX0VOIHJlYWNoZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb24gcG9ydCBUT1BfQ0xLTV9SRUcxX0lOWzJdIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdwcmNtLgorCisjZGVmaW5lIEdQUkNNX1JFRl9TTElDRVJfQ09OVFJPTFMwX0VOX1NMSV9IVl9QRE5fT1ZFUlJJREVfQ1RSTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMTAwMDAgIC8vIDEgLSBFbmFibGUgSFYgUHVsbC1kb3duIGNvbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZyb20gYml0WzBdIG9mIHRoaXMgcmVnaXN0ZXIuIDAgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFbmFibGUgSFYgUHVsbC1kb3duIGNvbWVzIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRlNNLiBOb3RlIDogRmluYWwgSFZfUFVMTF9ET1dOCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlYWNoZXMgb24gcG9ydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUT1BfQ0xLTV9SRUcxX0lOWzBdIG9mIGdwcmNtLgorCisjZGVmaW5lIEdQUkNNX1JFRl9TTElDRVJfQ09OVFJPTFMwX0NMS19FTl9UT1BfTE9XViBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDgwMDAgIC8vIE92ZXJyaWRlIGZvciBFTl9ESUdfQlVGX1RPUC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXBwbGljYWJsZSBpZiBiaXRbMjBdIGlzIHNldCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxLiBOb3RlIDogRmluYWwgRU5fRElHX0JVRl9UT1AKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVhY2hlcyBvbiBUT1BfQ0xLTV9SRUcxX0lOWzE1XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwb3J0IG9mIGdwcmNtCisKKyNkZWZpbmUgR1BSQ01fUkVGX1NMSUNFUl9DT05UUk9MUzBfQ0xLX0VOX1dMQU5fTE9XViBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDQwMDAgIC8vIE92ZXJyaWRlIGZvciBFTl9ESUdfQlVGX1dMQU4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFwcGxpY2FibGUgaWYgYml0WzE5XSBpcyBzZXQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMS4gTm90ZSA6IEZpbmFsIEVOX0RJR19CVUZfV0xBTgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWFjaGVzIG9uIFRPUF9DTEtNX1JFRzFfSU5bMTRdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBvcnQgb2YgZ3ByY20KKworI2RlZmluZSBHUFJDTV9SRUZfU0xJQ0VSX0NPTlRST0xTMF9DTEtPVVRfRkxJUF9FTiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDIwMDAgIC8vIENMS09VVCBGbGlwIEVuYWJsZS4gUmVhY2hlcyBvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiaXRbMTNdIG9mIFRPUF9DTEtNX1JFRzFfSU5bMTNdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBvcnQgb2YgZ3ByY20uCisKKyNkZWZpbmUgR1BSQ01fUkVGX1NMSUNFUl9DT05UUk9MUzBfRU5fRElWMl9XTEFOX0NMSyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDEwMDAgIC8vIEVuYWJsZSBkaXZpZGUyIGluIFdMQU4gQ2xrLXBhdGguCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlYWNoZXMgb24gVE9QX0NMS01fUkVHMV9JTlsxMl0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9ydCBvZiBncHJjbQorCisjZGVmaW5lIEdQUkNNX1JFRl9TTElDRVJfQ09OVFJPTFMwX0VOX0RJVjNfV0xBTl9DTEsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwODAwICAvLyBFbmFibGUgZGl2aWRlMyBpbiBXTEFOIENsay1wYXRoLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZWFjaGVzIG9uIFRPUF9DTEtNX1JFRzFfSU5bMTFdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBvcnQgb2YgZ3ByY20KKworI2RlZmluZSBHUFJDTV9SRUZfU0xJQ0VSX0NPTlRST0xTMF9FTl9ESVY0X1dMQU5fQ0xLIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDQwMCAgLy8gRW5hYmxlIGRpdmlkZTQgaW4gV0xBTiBDbGstcGF0aC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVhY2hlcyBvbiBUT1BfQ0xLTV9SRUcxX0lOWzEwXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwb3J0IG9mIGdwcmNtCisKKyNkZWZpbmUgR1BSQ01fUkVGX1NMSUNFUl9DT05UUk9MUzBfQ01fVE1VWF9TRUxfTE9XVl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDNDMCAgLy8gQ00gVGVzdC1tdXggc2VsZWN0LiBSZWFjaGVzIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPUF9DTE1NX1JFRzFfSU5bOTo2XSBwb3J0IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdwcmNtCisKKyNkZWZpbmUgR1BSQ01fUkVGX1NMSUNFUl9DT05UUk9MUzBfQ01fVE1VWF9TRUxfTE9XVl9TIDYKKyNkZWZpbmUgR1BSQ01fUkVGX1NMSUNFUl9DT05UUk9MUzBfU0xJQ0VSX1NQQVJFMF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAzMCAgLy8gU2xpY2VyIHNwYXJlMCBjb250cm9sLiBSZWFjaGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9uIFRPUF9DTEtNX1JFRzFfSU5bNTo0XSBwb3J0IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdwcmNtCisKKyNkZWZpbmUgR1BSQ01fUkVGX1NMSUNFUl9DT05UUk9MUzBfU0xJQ0VSX1NQQVJFMF9TIDQKKyNkZWZpbmUgR1BSQ01fUkVGX1NMSUNFUl9DT05UUk9MUzBfRU5fWFRBTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDggIC8vIEVuYWJsZSBYVEFMIG92ZXJyaWRlLiBSZWFjaGVzIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPUF9DTEtNX1JFRzFfSU5bM10gcG9ydCBvZiBncHJjbQorCisjZGVmaW5lIEdQUkNNX1JFRl9TTElDRVJfQ09OVFJPTFMwX0VOX1NMSUNFUl9IViBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDQgIC8vIEVuYWJsZSBIViBTbGljZXIgb3ZlcnJpZGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlYWNoZXMgb24gVE9QX0NMS01fUkVHMV9JTlsxXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwb3J0IG9mIGdwcmNtCisKKyNkZWZpbmUgR1BSQ01fUkVGX1NMSUNFUl9DT05UUk9MUzBfRU5fU0xJQ0VSX0xWIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMiAgLy8gRW5hYmxlIExWIFNsaWNlciBvdmVycmlkZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVhY2hlcyBvbiBUT1BfQ0xLTV9SRUcxX0lOWzJdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBvcnQgb2YgZ3ByY20KKworI2RlZmluZSBHUFJDTV9SRUZfU0xJQ0VSX0NPTlRST0xTMF9FTl9TTElDRVJfSFZfUEROIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gRW5hYmxlIEhWIFB1bGwtZG93biBvdmVycmlkZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVhY2hlcyBvbiBUT1BfQ0xLTV9SRUcxX0lOWzBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBvcnQgb2YgZ3ByY20KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fUkVGX1NMSUNFUl9DT05UUk9MUzEgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fUkVGX1NMSUNFUl9DT05UUk9MUzFfU0xJQ0VSX1NQQVJFMV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRkMwMCAgLy8gU2xpY2VyIHNwYXJlMS4gUmVhY2hlcyBvbiBwb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPUF9DTEtNX1JFRzJfSU5bMTU6MTBdIG9mIGdwcmNtLgorCisjZGVmaW5lIEdQUkNNX1JFRl9TTElDRVJfQ09OVFJPTFMxX1NMSUNFUl9TUEFSRTFfUyAxMAorI2RlZmluZSBHUFJDTV9SRUZfU0xJQ0VSX0NPTlRST0xTMV9YT1NDX1RSSU1fTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAzRjAgIC8vIFhPU0MgVHJpbS4gUmVhY2hlcyBvbiBwb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPUF9DTEtNX1JFRzJfSU5bOTo0XSBvZiBncHJjbQorCisjZGVmaW5lIEdQUkNNX1JFRl9TTElDRVJfQ09OVFJPTFMxX1hPU0NfVFJJTV9TIDQKKyNkZWZpbmUgR1BSQ01fUkVGX1NMSUNFUl9DT05UUk9MUzFfU0xJQ0VSX0lUUklNX0NIQU5HRV9UT0dHTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA4ICAvLyBTbGljZXIgSVRSSU0gVG9nZ2xlLiBSZWFjaGVzIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBvcnQgVE9QX0NMS01fUkVHMl9JTlszXSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBncHJjbS4KKworI2RlZmluZSBHUFJDTV9SRUZfU0xJQ0VSX0NPTlRST0xTMV9TTElDRVJfTFZfVFJJTV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNyAgLy8gTFYgU2xpY2VyIHRyaW0uIFJlYWNoZXMgb24gcG9ydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUT1BfQ0xLTV9SRUcyX0lOWzI6MF0gb2YgZ3ByY20uCisKKyNkZWZpbmUgR1BSQ01fUkVGX1NMSUNFUl9DT05UUk9MUzFfU0xJQ0VSX0xWX1RSSU1fUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19SRUZfQU5BX0JHQVBfQ09OVFJPTFMwIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX1JFRl9BTkFfQkdBUF9DT05UUk9MUzBfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkY4MDAwMDAKKworI2RlZmluZSBHUFJDTV9SRUZfQU5BX0JHQVBfQ09OVFJPTFMwX3Jlc2VydmVkX1MgMjMKKyNkZWZpbmUgR1BSQ01fUkVGX0FOQV9CR0FQX0NPTlRST0xTMF9tZW1fcmVmX21hZ190cmltX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwNDAwMDAwICAvLyAxIC0gUkVGX01BR19UUklNIGNvbWVzIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0WzQ6MF0gb2YgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVGX0FOQV9CR0FQX0NPTlRST0xTMSBbQWRkciA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDB4MDg1MF07IDAgLSBSRUZfTUFHX1RSSU0gY29tZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZnJvbSBlZnVzZSAoQWZ0ZXIgZWZjX2RvbmUgPSAxKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm90ZSA6IEZpbmFsIFJFRl9NQUdfVFJJTSByZWFjaGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9uIHBvcnQgVE9QX1BNX1JFRzFbNDowXSBvZiBncHJjbQorCisjZGVmaW5lIEdQUkNNX1JFRl9BTkFfQkdBUF9DT05UUk9MUzBfbWVtX3JlZl92MmlfdHJpbV9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDIwMDAwMCAgLy8gMSAtIFJFRl9WMklfVFJJTSBjb21lcyBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdFs5OjZdIG9mIHRoaXMgcmVnaXN0ZXIgOyAwIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVGX1YySV9UUklNIGNvbWVzIGZyb20gZWZ1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKEFmdGVyIGVmY19kb25lID0gMSkuIE5vdGUgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGaW5hbCBSRUZfVjJJX1RSSU0gcmVhY2hlcyBvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwb3J0IFRPUF9QTV9SRUcwWzk6Nl0gb2YgZ3ByY20uCisKKyNkZWZpbmUgR1BSQ01fUkVGX0FOQV9CR0FQX0NPTlRST0xTMF9tZW1fcmVmX3RlbXBfdHJpbV9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDEwMDAwMCAgLy8gMSAtIFJFRl9URU1QX1RSSU0gY29tZXMgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiaXRbMTU6MTBdIG9mIHRoaXMgcmVnaXN0ZXIgOyAwIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVGX1RFTVBfVFJJTSBjb21lcyBmcm9tIGVmdXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChBZnRlciBlZmNfZG9uZSA9IDEpLiBOb3RlIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmluYWwgUkVGX1RFTVBfVFJJTSByZWFjaGVzIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBvcnQgVE9QX1BNX1JFRzBbMTU6MTBdIG9mIGdwcmNtLgorCisjZGVmaW5lIEdQUkNNX1JFRl9BTkFfQkdBUF9DT05UUk9MUzBfbWVtX3JlZl9zdGFydHVwX2VuX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDgwMDAwICAvLyAxIC0gUkVGX1NUQVJUVVBfRU4gY29tZXMgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiaXQgWzNdIG9mIHRoaXMgcmVnaXN0ZXIgOyAwIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVGX1NUQVJUVVBfRU4gY29tZXMgZnJvbSBGU00uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdGUgOiBGaW5hbCBSRUZfU1RBUlRVUF9FTgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWFjaGVzIG9uIHBvcnQgVE9QX1BNX1JFRzBbM10gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ3ByY20KKworI2RlZmluZSBHUFJDTV9SRUZfQU5BX0JHQVBfQ09OVFJPTFMwX21lbV9yZWZfdjJpX2VuX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDQwMDAwICAvLyAxIC0gUkVGX1YySV9FTiBjb21lcyBmcm9tIGJpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbMl0gb2YgdGhpcyByZWdpc3RlciA7IDAgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRUZfVjJJX0VOIGNvbWVzIGZyb20gRlNNLiBOb3RlIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmluYWwgUkVGX1YySV9FTiByZWFjaGVzIG9uIHBvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9QX1BNX1JFRzBbMl0gb2YgZ3ByY20uCisKKyNkZWZpbmUgR1BSQ01fUkVGX0FOQV9CR0FQX0NPTlRST0xTMF9tZW1fcmVmX2ZjX2VuX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDIwMDAwICAvLyAxIC0gUkVGX0ZDX0VOIGNvbWVzIGZyb20gYml0IFsxXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZiB0aGlzIHJlZ2lzdGVyIDsgMCAtIFJFRl9GQ19FTgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb21lcyBmcm9tIEZTTS4gTm90ZSA6IEZpbmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJFRl9GQ19FTiByZWFjaGVzIG9uIHBvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9QX1BNX1JFRzBbMV0gb2YgZ3ByY20uCisKKyNkZWZpbmUgR1BSQ01fUkVGX0FOQV9CR0FQX0NPTlRST0xTMF9tZW1fcmVmX2JnYXBfZW5fb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMTAwMDAgIC8vIDEgLSBSRUZfQkdBUF9FTiBjb21lcyBmcm9tIGJpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbMF0gb2YgdGhpcyByZWdpc3RlciA7IDAgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRUZfQkdBUF9FTiBjb21lcyBmcm9tIEZTTS4gTm90ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA6IEZpbmFsIFJFRl9CR0FQX0VOIHJlYWNoZXMgb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9ydCBUT1BfUE1fUkVHMFswXSBvZiBncHJjbS4KKworI2RlZmluZSBHUFJDTV9SRUZfQU5BX0JHQVBfQ09OVFJPTFMwX21lbV9yZWZfdGVtcF90cmltX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGQzAwICAvLyBSRUZfVEVNUF9UUklNIG92ZXJyaWRlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBcHBsaWNhYmxlIHdoZW4gYml0IFsyMF0gb2YgdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciBzZXQgdG8gMS4gKG9yIGVmY19kb25lID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMCkgTm90ZSA6IEZpbmFsIFJFRl9URU1QX1RSSU0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVhY2hlcyBvbiBwb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPUF9QTV9SRUcwWzE1OjEwXSBvZiBncHJjbS4KKworI2RlZmluZSBHUFJDTV9SRUZfQU5BX0JHQVBfQ09OVFJPTFMwX21lbV9yZWZfdGVtcF90cmltX1MgMTAKKyNkZWZpbmUgR1BSQ01fUkVGX0FOQV9CR0FQX0NPTlRST0xTMF9tZW1fcmVmX3YyaV90cmltX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwM0MwICAvLyBSRUZfVjJJX1RSSU0gT3ZlcnJpZGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFwcGxpY2FibGUgd2hlbiBiaXQgWzIxXSBvZiB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyIHNldCB0byAxIC4gKG9mIGVmY19kb25lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vID0gMCkgTm90ZSA6IEZpbmFsIFJFRl9WMklfVFJJTQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWFjaGVzIG9uIHBvcnQgVE9QX1BNX1JFRzBbOTo2XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZiBncHJjbS4KKworI2RlZmluZSBHUFJDTV9SRUZfQU5BX0JHQVBfQ09OVFJPTFMwX21lbV9yZWZfdjJpX3RyaW1fUyA2CisjZGVmaW5lIEdQUkNNX1JFRl9BTkFfQkdBUF9DT05UUk9MUzBfTlUxX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDMwCisKKyNkZWZpbmUgR1BSQ01fUkVGX0FOQV9CR0FQX0NPTlRST0xTMF9OVTFfUyA0CisjZGVmaW5lIEdQUkNNX1JFRl9BTkFfQkdBUF9DT05UUk9MUzBfbWVtX3JlZl9zdGFydHVwX2VuIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwOCAgLy8gUkVGX1NUQVJUVVBfRU4gb3ZlcnJpZGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFwcGxpY2FibGUgd2hlbiBiaXQgWzE5XSBvZiB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyIGlzIHNldCB0byAxLiBOb3RlIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmluYWwgUkVGX1NUQVJUVVBfRU4gcmVhY2hlcyBvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwb3J0IFRPUF9QTV9SRUcwWzNdIG9mIGdwcmNtCisKKyNkZWZpbmUgR1BSQ01fUkVGX0FOQV9CR0FQX0NPTlRST0xTMF9tZW1fcmVmX3YyaV9lbiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDQgIC8vIFJFRl9WMklfRU4gb3ZlcnJpZGUuIEFwcGxpY2FibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBiaXQgWzIxXSBvZiB0aGlzIHJlZ2lzdGVyIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0byAxLiBOb3RlIDogRmluYWwgUkVGX1YySV9FTgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWFjaGVzIG9uIHBvcnQgVE9QX1BNX1JFRzBbMl0gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ3ByY20uCisKKyNkZWZpbmUgR1BSQ01fUkVGX0FOQV9CR0FQX0NPTlRST0xTMF9tZW1fcmVmX2ZjX2VuIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMiAgLy8gUkVGX0ZDX0VOIG92ZXJyaWRlLiBBcHBsaWNhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gYml0IFsxN10gb2YgdGhpcyByZWdpc3RlciBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gMS4gTm90ZSA6IEZpbmFsIFJFRl9GQ19FTgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWFjaGVzIG9uIHBvcnQgVE9QX1BNX1JFRzBbMV0gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ3ByY20uCisKKyNkZWZpbmUgR1BSQ01fUkVGX0FOQV9CR0FQX0NPTlRST0xTMF9tZW1fcmVmX2JnYXBfZW4gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyBSRUZfQkdBUF9FTiBvdmVycmlkZS4gQXBwbGljYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIGJpdCBbMTZdIG9mIHRoaXMgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIDEuIE5vdGUgOiBGaW5hbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRUZfQkdBUF9FTiByZWFjaGVzIG9uIHBvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9QX1BNX1JFRzBbMF0gb2YgZ3ByY20uCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX1JFRl9BTkFfQkdBUF9DT05UUk9MUzEgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fUkVGX0FOQV9CR0FQX0NPTlRST0xTMV9yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGMDAwMAorCisjZGVmaW5lIEdQUkNNX1JFRl9BTkFfQkdBUF9DT05UUk9MUzFfcmVzZXJ2ZWRfUyAxNgorI2RlZmluZSBHUFJDTV9SRUZfQU5BX0JHQVBfQ09OVFJPTFMxX21lbV9yZWZfYmdfc3BhcmVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEMwMDAgIC8vIFJFRl9CR0FQX1NQQVJFLiBSZWFjaGVzIG9uIHBvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9QX1BNX1JFRzFbMTU6MTRdIG9mIGdwcmNtLgorCisjZGVmaW5lIEdQUkNNX1JFRl9BTkFfQkdBUF9DT05UUk9MUzFfbWVtX3JlZl9iZ19zcGFyZV9TIDE0CisjZGVmaW5lIEdQUkNNX1JFRl9BTkFfQkdBUF9DT05UUk9MUzFfbWVtX3JlZl9iZ2FwX3RtdXhfY3RybF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwM0UwMCAgLy8gUkVGX0JHQVBfVE1VWF9DVFJMLiBSZWFjaGVzIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBvcnQgVE9QX1BNX1JFRzFbMTM6OV0gb2YgZ3ByY20uCisKKyNkZWZpbmUgR1BSQ01fUkVGX0FOQV9CR0FQX0NPTlRST0xTMV9tZW1fcmVmX2JnYXBfdG11eF9jdHJsX1MgOQorI2RlZmluZSBHUFJDTV9SRUZfQU5BX0JHQVBfQ09OVFJPTFMxX21lbV9yZWZfZmlsdF90cmltX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMUUwICAvLyBSRUZfRklMVF9UUklNLiBSZWFjaGVzIG9uIHBvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9QX1BNX1JFRzFbODo1XSBvZiBncHJjbS4KKworI2RlZmluZSBHUFJDTV9SRUZfQU5BX0JHQVBfQ09OVFJPTFMxX21lbV9yZWZfZmlsdF90cmltX1MgNQorI2RlZmluZSBHUFJDTV9SRUZfQU5BX0JHQVBfQ09OVFJPTFMxX21lbV9yZWZfbWFnX3RyaW1fTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMUYgIC8vIFJFRl9NQUdfVFJJTSBPdmVycmlkZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXBwbGljYWJsZSB3aGVuIGJpdFsyMl0gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVGX0FOQV9CR0FQX0NPTlRST0xTMCBbMHgwODRDXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gMSAob2YgZWZjX2RvbmUgPSAwKS4gTm90ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA6IEZpbmFsIFJFRl9NQUdfVFJJTSByZWFjaGVzIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBvcnQgVE9QX1BNX1JFRzFbNDowXSBvZiBncHJjbQorCisjZGVmaW5lIEdQUkNNX1JFRl9BTkFfQkdBUF9DT05UUk9MUzFfbWVtX3JlZl9tYWdfdHJpbV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX1JFRl9BTkFfU1BBUkVfQ09OVFJPTFMwIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX1JFRl9BTkFfU1BBUkVfQ09OVFJPTFMwX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkYwMDAwCisKKyNkZWZpbmUgR1BSQ01fUkVGX0FOQV9TUEFSRV9DT05UUk9MUzBfcmVzZXJ2ZWRfUyAxNgorI2RlZmluZSBHUFJDTV9SRUZfQU5BX1NQQVJFX0NPTlRST0xTMF9tZW1fdG9wX3BtX3JlZzNfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZGRkYgIC8vIFNwYXJlIGNvbnRyb2wuIFJlYWNoZXMgb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9QX1BNX1JFRzMgWzE1OjBdIG9mIGdwcmNtLgorCisjZGVmaW5lIEdQUkNNX1JFRl9BTkFfU1BBUkVfQ09OVFJPTFMwX21lbV90b3BfcG1fcmVnM19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX1JFRl9BTkFfU1BBUkVfQ09OVFJPTFMxIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX1JFRl9BTkFfU1BBUkVfQ09OVFJPTFMxX21lbV90b3BfY2xrbV9yZWczX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkYwMDAwICAvLyBTcGFyZSBjb250cm9sLiBSZWFjaGVzIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPUF9DTEtNX1JFRzMgWzE1OjBdIG9mIGdwcmNtLgorCisjZGVmaW5lIEdQUkNNX1JFRl9BTkFfU1BBUkVfQ09OVFJPTFMxX21lbV90b3BfY2xrbV9yZWczX1MgMTYKKyNkZWZpbmUgR1BSQ01fUkVGX0FOQV9TUEFSRV9DT05UUk9MUzFfbWVtX3RvcF9jbGttX3JlZzRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZGRkYgIC8vIFNwYXJlIGNvbnRyb2wuIFJlYWNoZXMgb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9QX0NMS01fUkVHNCBbMTU6MF0gb2YgZ3ByY20uCisKKyNkZWZpbmUgR1BSQ01fUkVGX0FOQV9TUEFSRV9DT05UUk9MUzFfbWVtX3RvcF9jbGttX3JlZzRfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19NRU1TU19QU0NPTl9PVkVSUklERVMwIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX01FTVNTX1BTQ09OX09WRVJSSURFUzBfbWVtX21lbXNzX3BzY29uX21lbV9vZmZfb3ZlcnJpZGVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRjAwMDAKKworI2RlZmluZSBHUFJDTV9NRU1TU19QU0NPTl9PVkVSUklERVMwX21lbV9tZW1zc19wc2Nvbl9tZW1fb2ZmX292ZXJyaWRlX1MgMTYKKyNkZWZpbmUgR1BSQ01fTUVNU1NfUFNDT05fT1ZFUlJJREVTMF9tZW1fbWVtc3NfcHNjb25fbWVtX3JldGFpbl9vdmVycmlkZV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRkZGRgorCisjZGVmaW5lIEdQUkNNX01FTVNTX1BTQ09OX09WRVJSSURFUzBfbWVtX21lbXNzX3BzY29uX21lbV9yZXRhaW5fb3ZlcnJpZGVfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19NRU1TU19QU0NPTl9PVkVSUklERVMxIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX01FTVNTX1BTQ09OX09WRVJSSURFUzFfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGQzAKKworI2RlZmluZSBHUFJDTV9NRU1TU19QU0NPTl9PVkVSUklERVMxX3Jlc2VydmVkX1MgNgorI2RlZmluZSBHUFJDTV9NRU1TU19QU0NPTl9PVkVSUklERVMxX21lbV9tZW1zc19wc2Nvbl9tZW1fdXBkYXRlX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDIwCisKKyNkZWZpbmUgR1BSQ01fTUVNU1NfUFNDT05fT1ZFUlJJREVTMV9tZW1fbWVtc3NfcHNjb25fbWVtX3VwZGF0ZV9vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTAKKworI2RlZmluZSBHUFJDTV9NRU1TU19QU0NPTl9PVkVSUklERVMxX21lbV9tZW1zc19wc2Nvbl9zbGVlcF9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwOAorCisjZGVmaW5lIEdQUkNNX01FTVNTX1BTQ09OX09WRVJSSURFUzFfbWVtX21lbXNzX3BzY29uX3NsZWVwX292ZXJyaWRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNAorCisjZGVmaW5lIEdQUkNNX01FTVNTX1BTQ09OX09WRVJSSURFUzFfbWVtX21lbXNzX3BzY29uX21lbV9vZmZfb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIKKworI2RlZmluZSBHUFJDTV9NRU1TU19QU0NPTl9PVkVSUklERVMxX21lbV9tZW1tc19wc2Nvbl9tZW1fcmV0YWluX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX1BMTF9SRUZfTE9DS19PVkVSUklERVMgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fUExMX1JFRl9MT0NLX09WRVJSSURFU19yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGOAorCisjZGVmaW5lIEdQUkNNX1BMTF9SRUZfTE9DS19PVkVSUklERVNfcmVzZXJ2ZWRfUyAzCisjZGVmaW5lIEdQUkNNX1BMTF9SRUZfTE9DS19PVkVSUklERVNfbWVtX21jdV9hcGxsbWNzX2xvY2tfb3ZlcnJpZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA0CisKKyNkZWZpbmUgR1BSQ01fUExMX1JFRl9MT0NLX09WRVJSSURFU19tZW1fd2xhbl9hcGxsbWNzX2xvY2tfb3ZlcnJpZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyCisKKyNkZWZpbmUgR1BSQ01fUExMX1JFRl9MT0NLX09WRVJSSURFU19tZW1fcmVmX2Nsa192YWxpZF9vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fTUNVX1BTQ09OX0RFQlVHIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX01DVV9QU0NPTl9ERUJVR19yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZDMAorCisjZGVmaW5lIEdQUkNNX01DVV9QU0NPTl9ERUJVR19yZXNlcnZlZF9TIDYKKyNkZWZpbmUgR1BSQ01fTUNVX1BTQ09OX0RFQlVHX21jdV9wc2Nvbl9ydGNfcHNfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMzggIC8vIE1DVV9QU0NPTl9SVENfT04gPSAiMDAwMCI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1DVV9QU0NPTl9SVENfT0ZGID0gIjAwMDEiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNQ1VfUFNDT05fUlRDX1JFVCA9ICIwMDEwIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTUNVX1BTQ09OX1JUQ19PRkZfVE9fT04gPSAiMDAxMSI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1DVV9QU0NPTl9SVENfUkVUX1RPX09OID0gIjAxMDAiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNQ1VfUFNDT05fUlRDX09OX1RPX1JFVCA9ICIwMTAxIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTUNVX1BTQ09OX1JUQ19PTl9UT19PRkYgPSAiMDExMCI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1DVV9QU0NPTl9SVENfUkVUX1RPX09OX1dBSVRfT1BQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vID0gIjAxMTEiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNQ1VfUFNDT05fUlRDX09GRl9UT19PTl9XQUlUX09QUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA9ICIxMDAwIjsKKworI2RlZmluZSBHUFJDTV9NQ1VfUFNDT05fREVCVUdfbWN1X3BzY29uX3J0Y19wc19TIDMKKyNkZWZpbmUgR1BSQ01fTUNVX1BTQ09OX0RFQlVHX21jdV9wc2Nvbl9zeXNfcHNfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDcKKworI2RlZmluZSBHUFJDTV9NQ1VfUFNDT05fREVCVUdfbWN1X3BzY29uX3N5c19wc19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX01FTVNTX1BXUl9QUyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9NRU1TU19QV1JfUFNfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRjgKKworI2RlZmluZSBHUFJDTV9NRU1TU19QV1JfUFNfcmVzZXJ2ZWRfUyAzCisjZGVmaW5lIEdQUkNNX01FTVNTX1BXUl9QU19wd3JfcHNfbWVtc3NfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDcgIC8vIE1FTVNTX1BNX1NMRUVQID0gIjAwMCI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1FTVNTX1BNX1dBSVRfT1BQID0gIjAxMCI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1FTVNTX1BNX0FDVElWRSA9ICIwMTEiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNRU1TU19QTV9TTEVFUF9UT19BQ1RJVkUgPSAiMTAwIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTUVNU1NfUE1fQUNUSVZFX1RPX1NMRUVQID0gIjEwMSI7CisKKyNkZWZpbmUgR1BSQ01fTUVNU1NfUFdSX1BTX3B3cl9wc19tZW1zc19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX1JFRl9GU01fREVCVUcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fUkVGX0ZTTV9ERUJVR19yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZDMAorCisjZGVmaW5lIEdQUkNNX1JFRl9GU01fREVCVUdfcmVzZXJ2ZWRfUyA2CisjZGVmaW5lIEdQUkNNX1JFRl9GU01fREVCVUdfZnJlZl9tb2RlX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDMwICAvLyAwMSAtIEhWIE1vZGUgOyAxMCAtIExWIE1vZGUgOyAxMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtIFhUQUwgTW9kZQorCisjZGVmaW5lIEdQUkNNX1JFRl9GU01fREVCVUdfZnJlZl9tb2RlX1MgNAorI2RlZmluZSBHUFJDTV9SRUZfRlNNX0RFQlVHX3JlZl9mc21fcHNfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMEYgIC8vIGNvbnN0YW50IEZSRUZfQ0xLX09GRiA9ICIwMDAwMCI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0YW50IEZSRUZfRU5fQkdBUCA9ICIwMDAwMSI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0YW50IEZSRUZfRU5fTERPID0gIjAwMDEwIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc3RhbnQgRlJFRl9FTl9TTElfSFYgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiMDAwMTEiOyBjb25zdGFudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGUkVGX0VOX1NMSV9IVl9QRCA9ICIwMDEwMCI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0YW50IEZSRUZfRU5fRElHX0JVRiA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIwMDEwMSI7IGNvbnN0YW50IEZSRUZfRU5fT1NDID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIjAwMTEwIjsgY29uc3RhbnQgRlJFRl9FTl9TTElfTFYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gPSAiMDAxMTEiOyBjb25zdGFudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGUkVGX0VOX0NMS19SRVEgPSAiMDEwMDAiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zdGFudCBGUkVGX0NMS19WQUxJRCA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIwMTAwMSI7IGNvbnN0YW50IEZSRUZfTU9ERV9ERVQwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vID0gIjAxMDEwIjsgY29uc3RhbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRlJFRl9NT0RFX0RFVDEgPSAiMDEwMTEiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zdGFudCBGUkVGX01PREVfREVUMiA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIxMDAxMCI7IGNvbnN0YW50IEZSRUZfTU9ERV9ERVQzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vID0gIjEwMDExIjsgY29uc3RhbnQgRlJFRl9WQUxJRCA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIwMTEwMCI7IGNvbnN0YW50IEZSRUZfVkFMSUQwID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIjAxMTAxIjsgY29uc3RhbnQgRlJFRl9WQUxJRDEgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiMDExMTAiOyBjb25zdGFudCBGUkVGX1ZBTElEMiA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIwMTExMSI7IGNvbnN0YW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZSRUZfV0FJVF9FWFRfVENYTzAgPSAiMTAwMDAiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zdGFudCBGUkVGX1dBSVRfRVhUX1RDWE8xID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIjEwMDAxIjsKKworI2RlZmluZSBHUFJDTV9SRUZfRlNNX0RFQlVHX3JlZl9mc21fcHNfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19NRU1fU1lTX09QUF9SRVFfT1ZFUlJJREUgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fTUVNX1NZU19PUFBfUkVRX09WRVJSSURFX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkUwCisKKyNkZWZpbmUgR1BSQ01fTUVNX1NZU19PUFBfUkVRX09WRVJSSURFX3Jlc2VydmVkX1MgNQorI2RlZmluZSBHUFJDTV9NRU1fU1lTX09QUF9SRVFfT1ZFUlJJREVfbWVtX3N5c19vcHBfcmVxX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDEwICAvLyAxIC0gT3ZlcnJpZGUgdGhlIHN5dGVtLW9wcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXF1ZXN0IHRvIEFOQVRPUCB1c2luZyBiaXQwIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgcmVnaXN0ZXIKKworI2RlZmluZSBHUFJDTV9NRU1fU1lTX09QUF9SRVFfT1ZFUlJJREVfbWVtX3N5c19vcHBfcmVxX292ZXJyaWRlX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDBGICAvLyAiMDAwMSIgLSBSVU4gOyAiMDAxMCIgLSBEU0xQIDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIjAxMDAiIC0gTFBEUyA7IE90aGVycyAtIE5BCisKKyNkZWZpbmUgR1BSQ01fTUVNX1NZU19PUFBfUkVRX09WRVJSSURFX21lbV9zeXNfb3BwX3JlcV9vdmVycmlkZV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX01FTV9URVNUQ1RSTF9QRF9PUFBfQ09ORklHIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX01FTV9URVNUQ1RSTF9QRF9PUFBfQ09ORklHX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZFCisKKyNkZWZpbmUgR1BSQ01fTUVNX1RFU1RDVFJMX1BEX09QUF9DT05GSUdfcmVzZXJ2ZWRfUyAxCisjZGVmaW5lIEdQUkNNX01FTV9URVNUQ1RSTF9QRF9PUFBfQ09ORklHX21lbV9zbGVlcF9vcHBfZW50ZXJfd2l0aF90ZXN0cGRfb24gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gRW5hYmxlIHNsZWVwLW9wcCAoRFNMUC9MUERTKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbnRyeSBldmVuIGlmIFRlc3QtUGQgaXMga2VwdCBPTgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA7IDAgLSBEb25vdCBlbmFibGUgc2xlZXAtb3BwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChEU0xQL0xQRFMpIGVudHJ5IHdpdGggVGVzdC1QZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPTi4KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fTUVNX1dMX0ZBU1RfQ0xLX1JFUV9PVkVSUklERVMgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fTUVNX1dMX0ZBU1RfQ0xLX1JFUV9PVkVSUklERVNfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRjgKKworI2RlZmluZSBHUFJDTV9NRU1fV0xfRkFTVF9DTEtfUkVRX09WRVJSSURFU19yZXNlcnZlZF9TIDMKKyNkZWZpbmUgR1BSQ01fTUVNX1dMX0ZBU1RfQ0xLX1JFUV9PVkVSUklERVNfbWVtX3dsX2Zhc3RfY2xrX3JlcV9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNCAgLy8gTkEKKworI2RlZmluZSBHUFJDTV9NRU1fV0xfRkFTVF9DTEtfUkVRX09WRVJSSURFU19tZW1fd2xfZmFzdF9jbGtfcmVxX292ZXJyaWRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMiAgLy8gTkEKKworI2RlZmluZSBHUFJDTV9NRU1fV0xfRkFTVF9DTEtfUkVRX09WRVJSSURFU19tZW1fd2xfc2xlZXBfd2l0aF9jbGtfcmVxX292ZXJyaWRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gTkEKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fTUVNX01DVV9QRF9NT0RFX1JFUV9PVkVSUklERVMgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fTUVNX01DVV9QRF9NT0RFX1JFUV9PVkVSUklERVNfbWVtX21jdV9wZF9tb2RlX3JlcV9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNCAgLy8gMSAtIE92ZXJyaWRlIHRoZSBNQ1UtUEQgcG93ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbW9kZXMgdXNpbmcgYml0cyBbMV0gJiBbMF0gOworCisjZGVmaW5lIEdQUkNNX01FTV9NQ1VfUERfTU9ERV9SRVFfT1ZFUlJJREVTX21lbV9tY3VfcGRfcHdyZG5fcmVxX292ZXJyaWRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMiAgLy8gMSAtIFJlcXVlc3QgZm9yIHBvd2VyLWRvd24gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTUNVLVBEIDsKKworI2RlZmluZSBHUFJDTV9NRU1fTUNVX1BEX01PREVfUkVRX09WRVJSSURFU19tZW1fbWN1X3BkX3JldF9yZXFfb3ZlcnJpZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gUmVxdWVzdCBmb3IgcmV0ZW50aW9uIG1vZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2YgTUNVLVBELgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19NRU1fTUNTUElfU1JBTV9PRkZfUkVRX09WRVJSSURFUyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9NRU1fTUNTUElfU1JBTV9PRkZfUkVRX09WRVJSSURFU19tZW1fbWNzcGlfc3JhbV9vZmZfcmVxX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyICAvLyAxLSBPdmVycmlkZSB0aGUgTUNTUEkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKEF1dG9ub21vdXMgU1BJKSBtZW1vcnkgc3RhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNpbmcgYml0IFswXQorCisjZGVmaW5lIEdQUkNNX01FTV9NQ1NQSV9TUkFNX09GRl9SRVFfT1ZFUlJJREVTX21lbV9tY3NwaV9zcmFtX29mZl9yZXFfb3ZlcnJpZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gUmVxdWVzdCBmb3IgcG93ZXItZG93biBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBdXRvbm9tb3VzIFNQSSA4ayBtZW1vcnkgOyAwIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG9ub3QgcmVxdWVzdCBwb3dlci1kb3duIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEF1dG9ub21vdXMgU1BJIDhrIE1lbW9yeQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19NRU1fV0xBTl9BUExMTUNTX09WRVJSSURFUyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9NRU1fV0xBTl9BUExMTUNTX09WRVJSSURFU193bGFuX2FwbGxtY3NfbG9jayBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAKKworI2RlZmluZSBHUFJDTV9NRU1fV0xBTl9BUExMTUNTX09WRVJSSURFU19tZW1fd2xhbl9hcGxsbWNzX2VuYWJsZV9vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIKKworI2RlZmluZSBHUFJDTV9NRU1fV0xBTl9BUExMTUNTX09WRVJSSURFU19tZW1fd2xhbl9hcGxsbWNzX2VuYWJsZV9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19NRU1fUkVGX0ZTTV9DRkcyIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX01FTV9SRUZfRlNNX0NGRzJfTUVNX0ZDX0RFQVNTRVJUX0RFTEFZX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMzgwMDAwICAvLyBOdW1iZXIgb2YgUlRDIGNsb2NrcyBmb3Iga2VlcGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgRkNfRU4gYXNzZXJ0ZWQgaGlnaAorCisjZGVmaW5lIEdQUkNNX01FTV9SRUZfRlNNX0NGRzJfTUVNX0ZDX0RFQVNTRVJUX0RFTEFZX1MgMTkKKyNkZWZpbmUgR1BSQ01fTUVNX1JFRl9GU01fQ0ZHMl9NRU1fU1RBUlRVUF9ERUFTU0VSVF9ERUxBWV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDA3MDAwMCAgLy8gTnVtYmVyIG9mIFJUQyBjbG9ja3MgZm9yIGtlZXBpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIFNUQVJUVVBfRU4gYXNzZXJ0ZWQgaGlnaAorCisjZGVmaW5lIEdQUkNNX01FTV9SRUZfRlNNX0NGRzJfTUVNX1NUQVJUVVBfREVBU1NFUlRfREVMQVlfUyAxNgorI2RlZmluZSBHUFJDTV9NRU1fUkVGX0ZTTV9DRkcyX01FTV9FWFRfVENYT19TRVRUTElOR19USU1FX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGRkZGICAvLyBOdW1iZXIgb2YgUlRDIGNsb2NrcyBmb3Igd2FpdGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgY2xvY2sgdG8gc2V0dGxlLgorCisjZGVmaW5lIEdQUkNNX01FTV9SRUZfRlNNX0NGRzJfTUVNX0VYVF9UQ1hPX1NFVFRMSU5HX1RJTUVfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19URVNUQ1RSTF9QT1dFUl9DVFJMIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX1RFU1RDVFJMX1BPV0VSX0NUUkxfVEVTVENUUkxfUERfU1RBVFVTX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA2CisKKyNkZWZpbmUgR1BSQ01fVEVTVENUUkxfUE9XRVJfQ1RSTF9URVNUQ1RSTF9QRF9TVEFUVVNfUyAxCisjZGVmaW5lIEdQUkNNX1RFU1RDVFJMX1BPV0VSX0NUUkxfVEVTVENUUkxfUERfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMCAtIERpc2FibGUgdGhlIFRlc3RDdHJsLXBkIDsgMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtIEVuYWJsZSB0aGUgVGVzdEN0cmwtcGQuCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX1NTRElPX1BPV0VSX0NUUkwgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fU1NESU9fUE9XRVJfQ1RSTF9TU0RJT19QRF9TVEFUVVNfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDYgIC8vIDEgLSBTU0RJTy1QRCBpcyBPTiA7IDAgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTU0RJTy1QRCBpcyBPRkYKKworI2RlZmluZSBHUFJDTV9TU0RJT19QT1dFUl9DVFJMX1NTRElPX1BEX1NUQVRVU19TIDEKKyNkZWZpbmUgR1BSQ01fU1NESU9fUE9XRVJfQ1RSTF9TU0RJT19QRF9FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAwIC0gRGlzYWJsZSB0aGUgU1NESU8tcGQgOyAxIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRW5hYmxlIHRoZSBTU0RJTy1wZC4KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fTUNTUElfTjFfUE9XRVJfQ1RSTCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9NQ1NQSV9OMV9QT1dFUl9DVFJMX01DU1BJX04xX1BEX1NUQVRVU19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNiAgLy8gMSAtIE1DU1BJX04xLVBEIGlzIE9OIDsgMCAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1DU1BJX04xLVBEIGlmIE9GRgorCisjZGVmaW5lIEdQUkNNX01DU1BJX04xX1BPV0VSX0NUUkxfTUNTUElfTjFfUERfU1RBVFVTX1MgMQorI2RlZmluZSBHUFJDTV9NQ1NQSV9OMV9QT1dFUl9DVFJMX01DU1BJX04xX1BEX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDAgLSBEaXNhYmxlIHRoZSBNQ1NQSV9OMS1wZCA7IDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLSBFbmFibGUgdGhlIE1DU1BJX04xLXBkLgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19XRUxQX1BPV0VSX0NUUkwgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fV0VMUF9QT1dFUl9DVFJMX1dUT1BfUERfU1RBVFVTX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAxQzAwCisKKyNkZWZpbmUgR1BSQ01fV0VMUF9QT1dFUl9DVFJMX1dUT1BfUERfU1RBVFVTX1MgMTAKKyNkZWZpbmUgR1BSQ01fV0VMUF9QT1dFUl9DVFJMX1dUT1BfUERfUkVRX09WRVJSSURFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDIwMAorCisjZGVmaW5lIEdQUkNNX1dFTFBfUE9XRVJfQ1RSTF9XVE9QX1BEX1JFUV9PVkVSUklERV9DVFJMIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMAorCisjZGVmaW5lIEdQUkNNX1dFTFBfUE9XRVJfQ1RSTF9XRUxQX1BEX1NUQVRVU19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNgorCisjZGVmaW5lIEdQUkNNX1dFTFBfUE9XRVJfQ1RSTF9XRUxQX1BEX1NUQVRVU19TIDEKKyNkZWZpbmUgR1BSQ01fV0VMUF9QT1dFUl9DVFJMX1dFTFBfUERfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMCAtIERpc2FibGUgdGhlIFdFTFAtcGQgOyAxIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRW5hYmxlIHRoZSBXRUxQLXBkLgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19XTF9TRElPX1BPV0VSX0NUUkwgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fV0xfU0RJT19QT1dFUl9DVFJMX1dMX1NESU9fUERfU1RBVFVTX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA2CisKKyNkZWZpbmUgR1BSQ01fV0xfU0RJT19QT1dFUl9DVFJMX1dMX1NESU9fUERfU1RBVFVTX1MgMQorI2RlZmluZSBHUFJDTV9XTF9TRElPX1BPV0VSX0NUUkxfV0xfU0RJT19QRF9FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAwIC0gRGlzYWJsZSB0aGUgV0xfU0RJTy1wZCA7IDEgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFbmFibGUgdGhlIFdMX1NESU8tcGQuCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX1dMQU5fU1JBTV9BQ1RJVkVfUFdSX0NGRyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9XTEFOX1NSQU1fQUNUSVZFX1BXUl9DRkdfV0xBTl9TUkFNX0FDVElWRV9QV1JfQ0ZHX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwRkZGRkZGICAvLyBTUkFNIChXVE9QK0RSUCkgc3RhdGUgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFjdGl2ZS1tb2RlIDogMSAtIFNSQU1zIGFyZSBPTiA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAgLSBTUkFNcyBhcmUgT0ZGLiBDbHVzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluZm9ybWF0aW9uIDogWzBdIC0gMXN0IGNvbHVtbiBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNRU1TUyAoQXBwbGljYWJsZSBvbmx5IHdoZW4gb3duZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnkgV1RPUC9QSFkpIFsxXSAtIDJuZCBjb2x1bW4gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTUVNU1MgKEFwcGxpY2FibGUgb25seSB3aGVuIG93bmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ5IFdUT1AvUEhZKSA7IFsyXSAtIDNyZCBjb2x1bW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2YgTUVNU1MgKEFwcGxpY2FibGUgb25seSB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG93bmVkIGJ5IFdUT1AvUEhZKSA7IFszXSAtIDR0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gb2YgTUVNU1MgKEFwcGxpY2FibGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIG93bmVkIGJ5IFdUT1AvUEhZKSA7IFs0XSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDV0aCBjb2x1bW4gb2YgTUVNU1MgKEFwcGxpY2FibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb25seSB3aGVuIG93bmVkIGJ5IFdUT1AvUEhZKSA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFs1XSAtIDZ0aCBjb2x1bW4gb2YgTUVNU1MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKEFwcGxpY2FibGUgb25seSB3aGVuIG93bmVkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdUT1AvUEhZKSA7IFs2XSAtIDd0aCBjb2x1bW4gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTUVNU1MgKEFwcGxpY2FibGUgb25seSB3aGVuIG93bmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ5IFdUT1AvUEhZKSA7IFs3XSAtIDh0aCBjb2x1bW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2YgTUVNU1MgKEFwcGxpY2FibGUgb25seSB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG93bmVkIGJ5IFdUT1AvUEhZKSA7IFs4XSAtIDl0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gb2YgTUVNU1MgKEFwcGxpY2FibGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIG93bmVkIGJ5IFdUT1AvUEhZKSA7IFs5XSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEwdGggY29sdW1uIG9mIE1FTVNTIChBcHBsaWNhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9ubHkgd2hlbiBvd25lZCBieSBXVE9QL1BIWSkgOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbMTBdIC0gMTF0aCBjb2x1bW4gb2YgTUVNU1MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKEFwcGxpY2FibGUgb25seSB3aGVuIG93bmVkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdUT1AvUEhZKSA7IFsxMV0gLSAxMnRoIGNvbHVtbiBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNRU1TUyAoQXBwbGljYWJsZSBvbmx5IHdoZW4gb3duZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnkgV1RPUC9QSFkpIDsgWzEyXSAtIDEzdGggY29sdW1uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mIE1FTVNTIChBcHBsaWNhYmxlIG9ubHkgd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvd25lZCBieSBXVE9QL1BIWSkgOyBbMTNdIC0gMTR0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gb2YgTUVNU1MgKEFwcGxpY2FibGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIG93bmVkIGJ5IFdUT1AvUEhZKSA7IFsxNF0gLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxNXRoIGNvbHVtbiBvZiBNRU1TUyAoQXBwbGljYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvbmx5IHdoZW4gb3duZWQgYnkgV1RPUC9QSFkpIDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzE1XSAtIDE2dGggY29sdW1uIG9mIE1FTVNTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChBcHBsaWNhYmxlIG9ubHkgd2hlbiBvd25lZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXVE9QL1BIWSkgOyBbMjM6MTZdIC0gSW50ZXJuYWwgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV1RPUCBDbHVzdGVyCisKKyNkZWZpbmUgR1BSQ01fV0xBTl9TUkFNX0FDVElWRV9QV1JfQ0ZHX1dMQU5fU1JBTV9BQ1RJVkVfUFdSX0NGR19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX1dMQU5fU1JBTV9TTEVFUF9QV1JfQ0ZHIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX1dMQU5fU1JBTV9TTEVFUF9QV1JfQ0ZHX1dMQU5fU1JBTV9TTEVFUF9QV1JfQ0ZHX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwRkZGRkZGICAvLyBTUkFNIChXVE9QK0RSUCkgc3RhdGUgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNsZWVwLW1vZGUgOiAxIC0gU1JBTXMgYXJlIFJFVCA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAgLSBTUkFNcyBhcmUgT0ZGLiBDbHVzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluZm9ybWF0aW9uIDogWzBdIC0gMXN0IGNvbHVtbiBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNRU1TUyAoQXBwbGljYWJsZSBvbmx5IHdoZW4gb3duZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnkgV1RPUC9QSFkpIFsxXSAtIDJuZCBjb2x1bW4gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTUVNU1MgKEFwcGxpY2FibGUgb25seSB3aGVuIG93bmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ5IFdUT1AvUEhZKSA7IFsyXSAtIDNyZCBjb2x1bW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2YgTUVNU1MgKEFwcGxpY2FibGUgb25seSB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG93bmVkIGJ5IFdUT1AvUEhZKSA7IFszXSAtIDR0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gb2YgTUVNU1MgKEFwcGxpY2FibGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIG93bmVkIGJ5IFdUT1AvUEhZKSA7IFs0XSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDV0aCBjb2x1bW4gb2YgTUVNU1MgKEFwcGxpY2FibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb25seSB3aGVuIG93bmVkIGJ5IFdUT1AvUEhZKSA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFs1XSAtIDZ0aCBjb2x1bW4gb2YgTUVNU1MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKEFwcGxpY2FibGUgb25seSB3aGVuIG93bmVkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdUT1AvUEhZKSA7IFs2XSAtIDd0aCBjb2x1bW4gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTUVNU1MgKEFwcGxpY2FibGUgb25seSB3aGVuIG93bmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ5IFdUT1AvUEhZKSA7IFs3XSAtIDh0aCBjb2x1bW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2YgTUVNU1MgKEFwcGxpY2FibGUgb25seSB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG93bmVkIGJ5IFdUT1AvUEhZKSA7IFs4XSAtIDl0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gb2YgTUVNU1MgKEFwcGxpY2FibGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIG93bmVkIGJ5IFdUT1AvUEhZKSA7IFs5XSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEwdGggY29sdW1uIG9mIE1FTVNTIChBcHBsaWNhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9ubHkgd2hlbiBvd25lZCBieSBXVE9QL1BIWSkgOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbMTBdIC0gMTF0aCBjb2x1bW4gb2YgTUVNU1MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKEFwcGxpY2FibGUgb25seSB3aGVuIG93bmVkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdUT1AvUEhZKSA7IFsxMV0gLSAxMnRoIGNvbHVtbiBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNRU1TUyAoQXBwbGljYWJsZSBvbmx5IHdoZW4gb3duZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnkgV1RPUC9QSFkpIDsgWzEyXSAtIDEzdGggY29sdW1uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mIE1FTVNTIChBcHBsaWNhYmxlIG9ubHkgd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvd25lZCBieSBXVE9QL1BIWSkgOyBbMTNdIC0gMTR0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gb2YgTUVNU1MgKEFwcGxpY2FibGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIG93bmVkIGJ5IFdUT1AvUEhZKSA7IFsxNF0gLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxNXRoIGNvbHVtbiBvZiBNRU1TUyAoQXBwbGljYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvbmx5IHdoZW4gb3duZWQgYnkgV1RPUC9QSFkpIDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzE1XSAtIDE2dGggY29sdW1uIG9mIE1FTVNTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChBcHBsaWNhYmxlIG9ubHkgd2hlbiBvd25lZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXVE9QL1BIWSkgOyBbMjM6MTZdIC0gSW50ZXJuYWwgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV1RPUCBDbHVzdGVyCisKKyNkZWZpbmUgR1BSQ01fV0xBTl9TUkFNX1NMRUVQX1BXUl9DRkdfV0xBTl9TUkFNX1NMRUVQX1BXUl9DRkdfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19BUFBTX1NFQ1VSRV9JTklUX0RPTkUgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fQVBQU19TRUNVUkVfSU5JVF9ET05FX1NFQ1VSRV9JTklUX0RPTkVfU1RBVFVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMiAgLy8gMS1TZWN1cmUgbW9kZSBpbml0IGlzIGRvbmUgOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwLVNlY3VyZSBtb2RlIGluaXQgaXMgbm90IGRvbmUKKworI2RlZmluZSBHUFJDTV9BUFBTX1NFQ1VSRV9JTklUX0RPTkVfQVBQU19TRUNVUkVfSU5JVF9ET05FIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gTXVzdCBiZSBwcm9ncmFtbWVkIDEgaW4gb3JkZXIgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2F5IHRoYXQgc2VjdXJlLW1vZGUgZGV2aWNlIGluaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgZG9uZQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19BUFBTX0RFVl9NT0RFX0lOSVRfRE9ORSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9BUFBTX0RFVl9NT0RFX0lOSVRfRE9ORV9BUFBTX0RFVl9NT0RFX0lOSVRfRE9ORSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBQYXRjaCBkb3dubG9hZCBhbmQgb3RoZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5pdGlhbGl6YXRpb25zIGFyZSBkb25lIChiZWZvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVtb3ZpbmcgQVBQUyByZXNldG4pIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZXZlbG9wbWVudCBtb2RlICgjMykgLiAwIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGV2ZWxvcG1lbnQgbW9kZSAoIzMpIGluaXQgaXMgbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvbmUgeWV0CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0VOX0FQUFNfUkVCT09UIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0VOX0FQUFNfUkVCT09UX0VOX0FQUFNfUkVCT09UIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIFdoZW4gMSwgZGlzYWJsZSB0aGUgcmVib290CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mIEFQUFMgYWZ0ZXIgRGV2SW5pdCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb21wbGV0ZWQuIEluIHRoaXMgY2FzZSwgQVBQUworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIHBlcm1hbmFudGx5IGhlbHAgaW4gcmVzZXQuIDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLSBXaGVuIDAsIGVuYWJsZSB0aGUgcmVib290IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFQUFMgYWZ0ZXIgRGV2SW5pdCBpcyBjb21wbGV0ZWQuCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX01FTV9BUFBTX1BFUklQSF9QUkVTRU5UIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX01FTV9BUFBTX1BFUklQSF9QUkVTRU5UX1dMQU5fR0VNX1BQIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAxMDAwMCAgLy8gMSAtIEVuYWJsZSA7IDAgLSBEaXNhYmxlCisKKyNkZWZpbmUgR1BSQ01fTUVNX0FQUFNfUEVSSVBIX1BSRVNFTlRfQVBQU19BRVNfUFAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDA4MDAwCisKKyNkZWZpbmUgR1BSQ01fTUVNX0FQUFNfUEVSSVBIX1BSRVNFTlRfQVBQU19ERVNfUFAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDA0MDAwCisKKyNkZWZpbmUgR1BSQ01fTUVNX0FQUFNfUEVSSVBIX1BSRVNFTlRfQVBQU19TSEFfUFAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAyMDAwCisKKyNkZWZpbmUgR1BSQ01fTUVNX0FQUFNfUEVSSVBIX1BSRVNFTlRfQVBQU19DQU1FUkFfUFAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAxMDAwCisKKyNkZWZpbmUgR1BSQ01fTUVNX0FQUFNfUEVSSVBIX1BSRVNFTlRfQVBQU19NTUNIU19QUCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA4MDAKKworI2RlZmluZSBHUFJDTV9NRU1fQVBQU19QRVJJUEhfUFJFU0VOVF9BUFBTX01DQVNQX1BQIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDQwMAorCisjZGVmaW5lIEdQUkNNX01FTV9BUFBTX1BFUklQSF9QUkVTRU5UX0FQUFNfTUNTUElfQTFfUFAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMjAwCisKKyNkZWZpbmUgR1BSQ01fTUVNX0FQUFNfUEVSSVBIX1BSRVNFTlRfQVBQU19NQ1NQSV9BMl9QUCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAKKworI2RlZmluZSBHUFJDTV9NRU1fQVBQU19QRVJJUEhfUFJFU0VOVF9BUFBTX1VETUFfUFAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDgwCisKKyNkZWZpbmUgR1BSQ01fTUVNX0FQUFNfUEVSSVBIX1BSRVNFTlRfQVBQU19XRE9HX1BQIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA0MAorCisjZGVmaW5lIEdQUkNNX01FTV9BUFBTX1BFUklQSF9QUkVTRU5UX0FQUFNfVUFSVF9BMF9QUCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMjAKKworI2RlZmluZSBHUFJDTV9NRU1fQVBQU19QRVJJUEhfUFJFU0VOVF9BUFBTX1VBUlRfQTFfUFAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDEwCisKKyNkZWZpbmUgR1BSQ01fTUVNX0FQUFNfUEVSSVBIX1BSRVNFTlRfQVBQU19HUFRfQTBfUFAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA4CisKKyNkZWZpbmUgR1BSQ01fTUVNX0FQUFNfUEVSSVBIX1BSRVNFTlRfQVBQU19HUFRfQTFfUFAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA0CisKKyNkZWZpbmUgR1BSQ01fTUVNX0FQUFNfUEVSSVBIX1BSRVNFTlRfQVBQU19HUFRfQTJfUFAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyCisKKyNkZWZpbmUgR1BSQ01fTUVNX0FQUFNfUEVSSVBIX1BSRVNFTlRfQVBQU19HUFRfQTNfUFAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX01FTV9OV1BfUEVSSVBIX1BSRVNFTlQgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fTUVNX05XUF9QRVJJUEhfUFJFU0VOVF9OV1BfQVNZTkNfQlJJREdFX1BQIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDIwMAorCisjZGVmaW5lIEdQUkNNX01FTV9OV1BfUEVSSVBIX1BSRVNFTlRfTldQX01DU1BJX04yX1BQIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMAorCisjZGVmaW5lIEdQUkNNX01FTV9OV1BfUEVSSVBIX1BSRVNFTlRfTldQX0dQVF9OMF9QUCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwODAKKworI2RlZmluZSBHUFJDTV9NRU1fTldQX1BFUklQSF9QUkVTRU5UX05XUF9HUFRfTjFfUFAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDQwCisKKyNkZWZpbmUgR1BSQ01fTUVNX05XUF9QRVJJUEhfUFJFU0VOVF9OV1BfV0RPR19QUCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMjAKKworI2RlZmluZSBHUFJDTV9NRU1fTldQX1BFUklQSF9QUkVTRU5UX05XUF9VRE1BX1BQIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxMAorCisjZGVmaW5lIEdQUkNNX01FTV9OV1BfUEVSSVBIX1BSRVNFTlRfTldQX1VBUlRfTjBfUFAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA4CisKKyNkZWZpbmUgR1BSQ01fTUVNX05XUF9QRVJJUEhfUFJFU0VOVF9OV1BfVUFSVF9OMV9QUCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDQKKworI2RlZmluZSBHUFJDTV9NRU1fTldQX1BFUklQSF9QUkVTRU5UX05XUF9TU0RJT19QUCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIKKworI2RlZmluZSBHUFJDTV9NRU1fTldQX1BFUklQSF9QUkVTRU5UX05XUF9NQ1NQSV9OMV9QUCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fTUVNX1NIQVJFRF9QRVJJUEhfUFJFU0VOVCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCisjZGVmaW5lIEdQUkNNX01FTV9TSEFSRURfUEVSSVBIX1BSRVNFTlRfU0hBUkVEX01DU1BJX1BQIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA0MAorCisjZGVmaW5lIEdQUkNNX01FTV9TSEFSRURfUEVSSVBIX1BSRVNFTlRfU0hBUkVEX0kyQ19QUCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMjAKKworI2RlZmluZSBHUFJDTV9NRU1fU0hBUkVEX1BFUklQSF9QUkVTRU5UX1NIQVJFRF9HUElPX0FfUFAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDEwCisKKyNkZWZpbmUgR1BSQ01fTUVNX1NIQVJFRF9QRVJJUEhfUFJFU0VOVF9TSEFSRURfR1BJT19CX1BQIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwOAorCisjZGVmaW5lIEdQUkNNX01FTV9TSEFSRURfUEVSSVBIX1BSRVNFTlRfU0hBUkVEX0dQSU9fQ19QUCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDQKKworI2RlZmluZSBHUFJDTV9NRU1fU0hBUkVEX1BFUklQSF9QUkVTRU5UX1NIQVJFRF9HUElPX0RfUFAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyCisKKyNkZWZpbmUgR1BSQ01fTUVNX1NIQVJFRF9QRVJJUEhfUFJFU0VOVF9TSEFSRURfR1BJT19FX1BQIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19OV1BfUFdSX1NUQVRFIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX05XUF9QV1JfU1RBVEVfTldQX1BXUl9TVEFURV9QU19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEYwMCAgLy8gIjAwMDAiLSBQT1JaIDotIE5XUCBpcyB5ZXQgdG8gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlZCBieSBBUFBTIGR1cmluZyBwb3dlcnVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChmcm9tIEhJQi9PRkYpIDsgIjAwMTEiLSBBQ1RJVkUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOi0gTldQIGlzIGVuYWJsZWQsIGNsb2NrcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzZXRzIHRvIE5XUC1TdWJTeXN0ZW0gYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZWQgOyAiMDAxMCItIExQRFMgOi0gTldQIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIExQRFMtbW9kZSA7IENsb2NrcyBhbmQgcmVzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gTldQLVN1YlN5c3RlbSBhcmUgZ2F0ZWQgOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiMDEwMSItIFdBSVRfRk9SX09QUCA6LSBOV1AgaXMgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJhbnNpdGlvbiBmcm9tIExQRFMgdG8gQUNUSVZFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVyZSBpdCBpcyB3YWl0aW5nIGZvciBPUFAgdG8gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhYmxlIDsgIjEwMDAiLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXQUtFX1RJTUVSX09QUF9SRVEgOi0gTldQIGlzIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyYW5zaXRpb24gZnJvbSBMUERTLCB3aGVyZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2FrZXVwIGNhdXNlIGlzIExQRFNfV2FrZSB0aW1lcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPVEhFUlMgOiBOQQorCisjZGVmaW5lIEdQUkNNX05XUF9QV1JfU1RBVEVfTldQX1BXUl9TVEFURV9QU19TIDgKKyNkZWZpbmUgR1BSQ01fTldQX1BXUl9TVEFURV9OV1BfUkNNX1BTX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA3ICAvLyAiMDAwIiAtIE5XUF9SVU4gOiBOV1AgaXMgaW4gUlVOCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YXRlIChkZWZhdWx0KSAtIEFwcGxpY2FibGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIE5XUF9QV1JfU1RBVEVfUFMgPSBBQ1RJVkUgOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiMDAxIiAtIE5XUF9TTFAgOiBOV1AgaXMgaW4gU0xFRVAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhdGUgKGRlZmF1bHQpIC0gQXBwbGljYWJsZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gTldQX1BXUl9TVEFURV9QUyA9IEFDVElWRSA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIwMTAiIC0gTldQX0RTTFAgOiBOV1AgaXMgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVlcC1TbGVlcCBzdGF0ZSAoZGVmYXVsdCkgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBcHBsaWNhYmxlIG9ubHkgd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOV1BfUFdSX1NUQVRFX1BTID0gQUNUSVZFIDsgIjAxMSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLSBXQUlUX0ZPUl9BQ1RJVkUgOiBOV1AgaXMgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJhbnNpdGlvbiBmcm9tIERlZXAtc2xlZXAgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUnVuLCB3aGVyZSBpdCBpcyB3YWl0aW5nIGZvciBPUFAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gYmUgc3RhYmxlIDsgIjEwMCIgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXQUlUX0ZPUl9EU0xQX1RJTUVSX1dBS0VfUkVRIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTldQIGlzIGluIHRyYW5zaXRpb24gZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWVwLXNsZWVwIHRvIFJ1biwgd2hlcmUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdha2V1cCBjYXVzZSBpcyBkZWVwLXNsZWVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdha2UtdGltZXIKKworI2RlZmluZSBHUFJDTV9OV1BfUFdSX1NUQVRFX05XUF9SQ01fUFNfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19BUFBTX1BXUl9TVEFURSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9BUFBTX1BXUl9TVEFURV9BUFBTX1BXUl9TVEFURV9QU19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEYwMCAgLy8gIjAwMDAiLSBQT1JaIDotIEFQUFMgaXMgd2FpdGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgUExMX2Nsb2NrIGR1cmluZyBwb3dlcnVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChmcm9tIEhJQi9PRkYpIDsgIjAwMTEiLSBBQ1RJVkUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOi0gQVBQUyBpcyBlbmFibGVkLCBjbG9ja3MgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc2V0cyB0byBBUFBTLVN1YlN5c3RlbSBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlZCA7IEFQUFMgbWlnaHQgYmUgZWl0aGVyIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNlY3VyZSBvciBVbi1zZWN1cmUgbW9kZSBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBzdGF0ZS4gIjEwMDEiIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU0VDVVJFX01PREVfTFBEUyA6LSBXaGlsZSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBQ1RJVkUgKFNlY3VyZS1tb2RlKSwgQVBQUyBoYWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJvZ3JhbSB0aGUgRGV2SW5pdF9kb25lIGJpdCBhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgZW5kLCBhZnRlciB3aGljaCBpdCBlbnRlcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50byB0aGlzIHN0YXRlLCB3aGVyZSB0aGUgcmVzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gQVBQUyB3aWxsIGJlIGFzc2VydGVkLiBGcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgc3RhdGUgQVBQUyBtaWdodCBlaXRoZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmUtYm9vdCBpdHNlbGYgb3IgZW50ZXIgaW50byBMUERTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlcGVuZGluZyB1cG9uIHdoZXRoZXIgdGhlIGRldmljZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyAzMjAwIG9yIDMxMDAuICIwMDEwIi0gTFBEUyA6LQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBUFBTIGlzIGluIExQRFMtbW9kZSA7IENsb2NrcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzZXQgdG8gQVBQUy1TdWJTeXN0ZW0gYXJlIGdhdGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDsgIjAxMDEiLSBXQUlUX0ZPUl9PUFAgOi0gQVBQUyBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbiB0cmFuc2l0aW9uIGZyb20gTFBEUyB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBQ1RJVkUsIHdoZXJlIGl0IGlzIHdhaXRpbmcgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9QUCB0byBiZSBzdGFibGUgOyAiMTAwMCIgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXQUtFX1RJTUVSX09QUF9SRVEgOiBBUFBTIGlzIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyYW5zaXRpb24gZnJvbSBMUERTLCB3aGVyZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2FrZXVwIGNhdXNlIGlzIExQRFNfV2FrZSB0aW1lciA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIxMDEwIiAtIFdBSVRfRk9SX1BBVENIX0lOSVQgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBUFBTIGVudGVycyBpbnRvIHRoaXMgc3RhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHVyaW5nIGRldmVsb3BtZW50LW1vZGUgIzMgKFNPUCA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDMpLCB3aGVyZSBpdCBpcyB3YWl0aW5nIGZvciBwYXRjaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb3dubG9hZCB0byBjb21wbGV0ZSBhbmQgMHg0IGhhY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgcHJvZ3JhbW1lZC4gT1RIRVJTIDogTkEKKworI2RlZmluZSBHUFJDTV9BUFBTX1BXUl9TVEFURV9BUFBTX1BXUl9TVEFURV9QU19TIDgKKyNkZWZpbmUgR1BSQ01fQVBQU19QV1JfU1RBVEVfQVBQU19SQ01fUFNfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDcgIC8vICIwMDAiIC0gQVBQU19SVU4gOiBBUFBTIGlzIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJVTiBzdGF0ZSAoZGVmYXVsdCkgLSBBcHBsaWNhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9ubHkgd2hlbiBBUFBTX1BXUl9TVEFURV9QUyA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFDVElWRSA7ICIwMDEiIC0gQVBQU19TTFAgOiBBUFBTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGluIFNMRUVQIHN0YXRlIChkZWZhdWx0KSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFwcGxpY2FibGUgb25seSB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFQUFNfUFdSX1NUQVRFX1BTID0gQUNUSVZFIDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIjAxMCIgLSBBUFBTX0RTTFAgOiBBUFBTIGlzIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlZXAtU2xlZXAgc3RhdGUgKGRlZmF1bHQpIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXBwbGljYWJsZSBvbmx5IHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQVBQU19QV1JfU1RBVEVfUFMgPSBBQ1RJVkUgOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiMDExIiAtIFdBSVRfRk9SX0FDVElWRSA6IEFQUFMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW4gdHJhbnNpdGlvbiBmcm9tIERlZXAtc2xlZXAgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUnVuLCB3aGVyZSBpdCBpcyB3YWl0aW5nIGZvciBPUFAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gYmUgc3RhYmxlIDsgIjEwMCIgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXQUlUX0ZPUl9EU0xQX1RJTUVSX1dBS0VfUkVRIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQVBQUyBpcyBpbiB0cmFuc2l0aW9uIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVlcC1zbGVlcCB0byBSdW4sIHdoZXJlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3YWtldXAgY2F1c2UgaXMgZGVlcC1zbGVlcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3YWtlLXRpbWVyCisKKyNkZWZpbmUgR1BSQ01fQVBQU19QV1JfU1RBVEVfQVBQU19SQ01fUFNfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19NQ1VfUFdSX1NUQVRFIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX01DVV9QV1JfU1RBVEVfTUNVX09QUF9QU19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxRiAgLy8gVEJECisKKyNkZWZpbmUgR1BSQ01fTUNVX1BXUl9TVEFURV9NQ1VfT1BQX1BTX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fV1RPUF9QTV9QUyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9XVE9QX1BNX1BTX1dUT1BfUE1fUFNfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDcgIC8vICIwMTEiIC0gV1RPUF9QTV9BQ1RJVkUgKERlZmF1bHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDotIFdUT1BfUGQgaXMgaW4gQUNUSVZFIG1vZGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIxMDAiIC0gV1RPUF9QTV9BQ1RJVkVfVE9fU0xFRVAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOi0gV1RPUF9QZCBpcyBpbiB0cmFuc2l0aW9uIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQUNUSVZFIHRvIFNMRUVQIDsgIjAwMCIgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXVE9QX1BNX1NMRUVQIDogV1RPUC1QZCBpcyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTbGVlcC1zdGF0ZSA7ICIxMDAiIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV1RPUF9QTV9TTEVFUF9UT19BQ1RJVkUgOiBXVE9QX1BkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGluIHRyYW5zaXRpb24gZnJvbSBTTEVFUCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBQ1RJVkUgOyAiMDAwIiAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdUT1BfUE1fV0FJVF9GT1JfT1BQIDogV2FpdCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT1BQIHRvIGJlIHN0YWJsZSA7CisKKyNkZWZpbmUgR1BSQ01fV1RPUF9QTV9QU19XVE9QX1BNX1BTX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fV1RPUF9QRF9SRVNFVFpfT1ZFUlJJREVfUkVHIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX1dUT1BfUERfUkVTRVRaX09WRVJSSURFX1JFR19XVE9QX1BEX1JFU0VUWl9PVkVSUklERV9DVFJMIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMCAgLy8gT3ZlcnJpZGUgY29udHJvbCBmb3IgV1RPUCBQRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXNldHouIFdoZW4gc2V0IHRvIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdUT1BfUmVzZXR6IHdpbGwgYmUgY29udHJvbGxlZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiaXQgWzBdCisKKyNkZWZpbmUgR1BSQ01fV1RPUF9QRF9SRVNFVFpfT1ZFUlJJREVfUkVHX1dUT1BfUERfUkVTRVRaX09WRVJSSURFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gT3ZlcnJpZGUgZm9yIFdUT1AgUEQgUmVzZXR6LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBcHBsaWNhYmxlIG9ubHkgd2hlbiBiaXRbOF0gaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIDEKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fV0VMUF9QRF9SRVNFVFpfT1ZFUlJJREVfUkVHIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX1dFTFBfUERfUkVTRVRaX09WRVJSSURFX1JFR19XRUxQX1BEX1JFU0VUWl9PVkVSUklERV9DVFJMIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMCAgLy8gT3ZlcnJpZGUgY29udHJvbCBmb3IgV0VMUCBQRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXNldHouIFdoZW4gc2V0IHRvIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdFTFBfUmVzZXR6IHdpbGwgYmUgY29udHJvbGxlZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiaXQgWzBdCisKKyNkZWZpbmUgR1BSQ01fV0VMUF9QRF9SRVNFVFpfT1ZFUlJJREVfUkVHX1dFTFBfUERfUkVTRVRaX09WRVJSSURFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gT3ZlcnJpZGUgZm9yIFdFTFAgUEQgUmVzZXR6LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBcHBsaWNhYmxlIG9ubHkgd2hlbiBiaXRbOF0gaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIDEKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fV0xfU0RJT19QRF9SRVNFVFpfT1ZFUlJJREVfUkVHIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX1dMX1NESU9fUERfUkVTRVRaX09WRVJSSURFX1JFR19XTF9TRElPX1BEX1JFU0VUWl9PVkVSUklERV9DVFJMIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMCAgLy8gT3ZlcnJpZGUgY29udHJvbCBmb3IgV0xfU0RJTworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXNldHouIFdoZW4gc2V0IHRvIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdMX1NESU9fUmVzZXR6IHdpbGwgYmUgY29udHJvbGxlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBieSBiaXQgWzBdCisKKyNkZWZpbmUgR1BSQ01fV0xfU0RJT19QRF9SRVNFVFpfT1ZFUlJJREVfUkVHX1dMX1NESU9fUERfUkVTRVRaX09WRVJSSURFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gT3ZlcnJpZGUgZm9yIFdMX1NESU8gUmVzZXR6LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBcHBsaWNhYmxlIG9ubHkgd2hlbiBiaXRbOF0gaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIDEKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fU1NESU9fUERfUkVTRVRaX09WRVJSSURFX1JFRyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9TU0RJT19QRF9SRVNFVFpfT1ZFUlJJREVfUkVHX1NTRElPX1BEX1JFU0VUWl9PVkVSUklERV9DVFJMIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMCAgLy8gT3ZlcnJpZGUgY29udHJvbCBmb3IgU1NESU8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzZXR6LiBXaGVuIHNldCB0byAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTU0RJT19SZXNldHogd2lsbCBiZSBjb250cm9sbGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ5IGJpdCBbMF0KKworI2RlZmluZSBHUFJDTV9TU0RJT19QRF9SRVNFVFpfT1ZFUlJJREVfUkVHX1NTRElPX1BEX1JFU0VUWl9PVkVSUklERSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIE92ZXJyaWRlIGZvciBTU0RJTyBSZXNldHouCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFwcGxpY2FibGUgb25seSB3aGVuIGJpdFs4XSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gMQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19NQ1NQSV9OMV9QRF9SRVNFVFpfT1ZFUlJJREVfUkVHIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX01DU1BJX04xX1BEX1JFU0VUWl9PVkVSUklERV9SRUdfTUNTUElfTjFfUERfUkVTRVRaX09WRVJSSURFX0NUUkwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwICAvLyBPdmVycmlkZSBjb250cm9sIGZvciBNQ1NQSV9OMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXNldHouIFdoZW4gc2V0IHRvIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1DU1BJX04xX1Jlc2V0eiB3aWxsIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRyb2xsZWQgYnkgYml0IFswXQorCisjZGVmaW5lIEdQUkNNX01DU1BJX04xX1BEX1JFU0VUWl9PVkVSUklERV9SRUdfTUNTUElfTjFfUERfUkVTRVRaX09WRVJSSURFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gT3ZlcnJpZGUgZm9yIE1DU1BJX04xIFJlc2V0ei4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXBwbGljYWJsZSBvbmx5IHdoZW4gYml0WzhdIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0byAxCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX1RFU1RDVFJMX1BEX1JFU0VUWl9PVkVSUklERV9SRUcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fVEVTVENUUkxfUERfUkVTRVRaX09WRVJSSURFX1JFR19URVNUQ1RSTF9QRF9SRVNFVFpfT1ZFUlJJREVfQ1RSTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAgIC8vIE92ZXJyaWRlIGNvbnRyb2wgZm9yIFRFU1RDVFJMLVBECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlc2V0ei4gV2hlbiBzZXQgdG8gMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVEVTVENUUkxfUmVzZXR6IHdpbGwgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udHJvbGxlZCBieSBiaXQgWzBdCisKKyNkZWZpbmUgR1BSQ01fVEVTVENUUkxfUERfUkVTRVRaX09WRVJSSURFX1JFR19URVNUQ1RSTF9QRF9SRVNFVFpfT1ZFUlJJREUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyBPdmVycmlkZSBmb3IgVEVTVENUUkwgUmVzZXR6LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBcHBsaWNhYmxlIG9ubHkgd2hlbiBiaXRbOF0gaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIDEKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fTUNVX1BEX1JFU0VUWl9PVkVSUklERV9SRUcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fTUNVX1BEX1JFU0VUWl9PVkVSUklERV9SRUdfTUNVX1BEX1JFU0VUWl9PVkVSUklERV9DVFJMIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMCAgLy8gT3ZlcnJpZGUgY29udHJvbCBmb3IgTUNVLVBECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlc2V0ei4gV2hlbiBzZXQgdG8gMSwgTUNVX1Jlc2V0egorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGJlIGNvbnRyb2xsZWQgYnkgYml0IFswXQorCisjZGVmaW5lIEdQUkNNX01DVV9QRF9SRVNFVFpfT1ZFUlJJREVfUkVHX01DVV9QRF9SRVNFVFpfT1ZFUlJJREUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyBPdmVycmlkZSBmb3IgTUNVIFJlc2V0ei4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXBwbGljYWJsZSBvbmx5IHdoZW4gYml0WzhdIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0byAxCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0dQUkNNX0VGVVNFX1JFQURfUkVHMCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9HUFJDTV9FRlVTRV9SRUFEX1JFRzBfRlVTRUZBUk1fUk9XXzE0X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyBUaGlzIGlzIFJPV18xNCBbMzE6MF0gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRlVTRUZBUk0uIFswOjBdIDogWFRBTF9JU18yNk1IWgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbNToxXSA6IFRPUF9DTEtNX1JUUklNWzQ6MF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzEwOjZdIDogQU5BX0JHQVBfTUFHX1RSSU1bNDowXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbMTY6MTFdIDogQU5BX0JHQVBfVEVNUF9UUklNWzU6MF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzIwOjE3XSA6IEFOQV9CR0FQX1YySV9UUklNWzM6MF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzI1OjIyXSA6IFBST0NFU1MgSU5ESUNBVE9SCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFsyNjoyNl0gOiBSZXNlcnZlZCBbMzE6MjddIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRlVTRVJPTSBWZXJzaW9uCisKKyNkZWZpbmUgR1BSQ01fR1BSQ01fRUZVU0VfUkVBRF9SRUcwX0ZVU0VGQVJNX1JPV18xNF9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0dQUkNNX0VGVVNFX1JFQURfUkVHMSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9HUFJDTV9FRlVTRV9SRUFEX1JFRzFfRlVTRUZBUk1fUk9XXzE1X0xTV19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRkZGRiAgLy8gVGhpcyBpcyBST1dfMTVbMTU6MF0gb2YgRlVTRUZBUk0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMS4gTldQIFBlcmlwaGVyYWwgUHJlc2VudCBiaXRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFsxNTo4XSBOV1BfR1BUX04wX1BQIFsxNToxNV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTldQX0dQVF9OMV9QUCBbMTQ6MTRdIE5XUF9XRE9HX1BQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFsxMzoxM10gTldQX1VETUFfUFAgWzEyOjEyXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOV1BfVUFSVF9OMF9QUCBbMTE6MTFdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5XUF9VQVJUX04xX1BQIFsxMDoxMF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTldQX1NTRElPX1BQIFs5OjldCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5XUF9NQ1NQSV9OMV9QUCBbODo4XSAyLiBTaGFyZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGVyaXBoZXJhbCBQcmVzZW50IGJpdHMgWzc6MF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU0hBUkVEIFNQSSBQUCBbNjo2XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTSEFSRUQgSTJDIFBQIFs1OjVdIFNIQVJFRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPLUEgUFAgWzQ6NF0gU0hBUkVEIEdQSU8tQiBQUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbMzozXSBTSEFSRUQgR1BJTy1DIFBQIFsyOjJdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNIQVJFRCBHUElPLUQgUFAgWzE6MV0gU0hBUkVECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU8tRSBQUCBbMDowXQorCisjZGVmaW5lIEdQUkNNX0dQUkNNX0VGVVNFX1JFQURfUkVHMV9GVVNFRkFSTV9ST1dfMTVfTFNXX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fR1BSQ01fRUZVU0VfUkVBRF9SRUcyIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0dQUkNNX0VGVVNFX1JFQURfUkVHMl9GVVNFRkFSTV9ST1dfMTZfTFNXX1JPV18xNV9NU1dfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIFRoaXMgaXMgUk9XXzE2WzE1OjBdICYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUk9XXzE1WzMxOjE2XSBvZiBGVVNFRkFSTS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzMxOjIxXSAtIFJlc2VydmVkIFsyMDoxNl0gLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDSElQX0lEIFsxNToxNV0gLSBTU0JEIFNPUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb250cm9sIFsxNDoxNF0gLSBTU0JEIFRBUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb250cm9sIFsxMzoyXSAtIEFQUFMgUGVyaXBoZXJhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQcmVzZW50IGJpdHMgOiBBUFBTX0NBTUVSQV9QUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbMTM6MTNdIEFQUFNfTU1DSFNfUFAgWzEyOjEyXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBUFBTX01DQVNQX1BQIFsxMToxMV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQVBQU19NQ1NQSV9BMV9QUCBbMTA6MTBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFQUFNfTUNTUElfQTJfUFAgWzk6OV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQVBQU19VRE1BX1BQIFs4OjhdIEFQUFNfV0RPR19QUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbNzo3XSBBUFBTX1VBUlRfQTBfUFAgWzY6Nl0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQVBQU19VQVJUX0ExX1BQIFs1OjVdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFQUFNfR1BUX0EwX1BQIFs0OjRdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFQUFNfR1BUX0ExX1BQIFszOjNdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFQUFNfR1BUX0EyX1BQIFsyOjJdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFQUFNfR1BUX0EzX1BQIFsxOjFdIFswOjBdIC0gTldQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBlcmlwaGVyYWwgcHJlc2VudCBiaXRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5XUF9BQ1NQSV9QUCBbMDowXQorCisjZGVmaW5lIEdQUkNNX0dQUkNNX0VGVVNFX1JFQURfUkVHMl9GVVNFRkFSTV9ST1dfMTZfTFNXX1JPV18xNV9NU1dfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19HUFJDTV9FRlVTRV9SRUFEX1JFRzMgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fR1BSQ01fRUZVU0VfUkVBRF9SRUczX0ZVU0VGQVJNX1JPV18xN19MU1dfUk9XXzE2X01TV19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gVGhpcyBpcyBST1dfMTdbMTU6MF0gJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBST1dfMTZbMzE6MTZdIG9mIEZVU0VGQVJNIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzMxOjE2XSAtIFRFU1RfVEFQX0tFWSgxNTowKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbMTU6MF0gLSBSZXNlcnZlZAorCisjZGVmaW5lIEdQUkNNX0dQUkNNX0VGVVNFX1JFQURfUkVHM19GVVNFRkFSTV9ST1dfMTdfTFNXX1JPV18xNl9NU1dfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19XVE9QX01FTV9SRVRfQ0ZHIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX1dUT1BfTUVNX1JFVF9DRkdfV1RPUF9NRU1fUkVUX0NGRyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBTb2Z0LWNvbXBpbGUgbWVtb3JpZXMgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV1RPUCBjYW4gYmUgdHVybmVkLW9mZiBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV1RPUC1zbGVlcCBtb2RlIDsgMCAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNvZnQtY29tcGlsZSBtZW1vcmllcyBpbiBXVE9QCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG11c3QgYmUga2VwdCBvbiBkdXJpbmcgV1RPUC1zbGVlcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtb2RlLgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19DT0VYX0NMS19TV0FMTE9XX0NGRzAgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fQ09FWF9DTEtfU1dBTExPV19DRkcwX1FfRkFDVE9SX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwN0ZGRkZGICAvLyBUQkQKKworI2RlZmluZSBHUFJDTV9DT0VYX0NMS19TV0FMTE9XX0NGRzBfUV9GQUNUT1JfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19DT0VYX0NMS19TV0FMTE9XX0NGRzEgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fQ09FWF9DTEtfU1dBTExPV19DRkcxX1BfRkFDVE9SX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMEZGRkZGICAvLyBUQkQKKworI2RlZmluZSBHUFJDTV9DT0VYX0NMS19TV0FMTE9XX0NGRzFfUF9GQUNUT1JfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19DT0VYX0NMS19TV0FMTE9XX0NGRzIgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fQ09FWF9DTEtfU1dBTExPV19DRkcyX0NPTlNFQ1VUSVZFX1NXQUxMT1dfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTgKKworI2RlZmluZSBHUFJDTV9DT0VYX0NMS19TV0FMTE9XX0NGRzJfQ09OU0VDVVRJVkVfU1dBTExPV19TIDMKKyNkZWZpbmUgR1BSQ01fQ09FWF9DTEtfU1dBTExPV19DRkcyX1BSQlNfR0FJTiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDQKKworI2RlZmluZSBHUFJDTV9DT0VYX0NMS19TV0FMTE9XX0NGRzJfUFJCU19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyCisKKyNkZWZpbmUgR1BSQ01fQ09FWF9DTEtfU1dBTExPV19DRkcyX1NXQUxMT1dfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gVEJECisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0NPRVhfQ0xLX1NXQUxMT1dfRU5BQkxFIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0NPRVhfQ0xLX1NXQUxMT1dfRU5BQkxFX0NPRVhfQ0xLX1NXQUxMT1dfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIEVuYWJsZSBzd2l0Y2hpbmcgb2Ygc3lzY2xrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIENvZXgtY2xrIHBhdGggOyAwIC0gRGlzYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzd2l0Y2hpbmcgb2Ygc3lzY2xrIHRvIENvZXgtY2xrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBhdGguCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0RDRENfQ0xLX0dFTl9DT05GSUcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fRENEQ19DTEtfR0VOX0NPTkZJR19EQ0RDX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gRW5hYmxlIHRoZSBjbG9jayBmb3IgRENEQworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoUFdNLW1vZGUpIDsgMCAtIERpc2FibGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsb2NrIGZvciBEQ0RDIChQV00tbW9kZSkKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fR1BSQ01fRUZVU0VfUkVBRF9SRUc0IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0dQUkNNX0VGVVNFX1JFQURfUkVHNF9GVVNFRkFSTV9ST1dfMTdfTVNXX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGRkZGICAvLyBUaGlzIGNvcnJlc3BvbmRzIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJPV18xN1szMToxNl0gb2YgdGhlIEZVU0VGQVJNIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzE1OjBdIDogVEVTVF9UQVBfS0VZKDMxOjE2KQorCisjZGVmaW5lIEdQUkNNX0dQUkNNX0VGVVNFX1JFQURfUkVHNF9GVVNFRkFSTV9ST1dfMTdfTVNXX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fR1BSQ01fRUZVU0VfUkVBRF9SRUc1IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0dQUkNNX0VGVVNFX1JFQURfUkVHNV9GVVNFRkFSTV9ST1dfMThfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIENvcnJlc3BvbmRzIHRvIFJPV18xOCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGVVNFRkFSTS4gWzI5OjBdIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTUVNU1NfQ09MVU1OX1NFTF9MU1cgOyBbMzA6MzBdIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV0xBTiBHRU0gRElTQUJMRSA7IFszMTozMV0gLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTRVJJQUwgV0lSRSBKVEFHIFNFTEVDVAorCisjZGVmaW5lIEdQUkNNX0dQUkNNX0VGVVNFX1JFQURfUkVHNV9GVVNFRkFSTV9ST1dfMThfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19HUFJDTV9FRlVTRV9SRUFEX1JFRzYgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fR1BSQ01fRUZVU0VfUkVBRF9SRUc2X0ZVU0VGQVJNX1JPV18xOV9MU1dfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZGRkYgIC8vIENvcnJlc3BvbmRzIHRvIFJPV18xOVsxNTowXSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGVVNFRkFSTS4gWzE1OjBdIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTUVNU1NfQ09MVU1OX1NFTF9NU1cKKworI2RlZmluZSBHUFJDTV9HUFJDTV9FRlVTRV9SRUFEX1JFRzZfRlVTRUZBUk1fUk9XXzE5X0xTV19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0dQUkNNX0VGVVNFX1JFQURfUkVHNyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9HUFJDTV9FRlVTRV9SRUFEX1JFRzdfRlVTRUZBUk1fUk9XXzIwX0xTV19ST1dfMTlfTVNXX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyBDb3JyZXNwb25kcyB0byBST1dfMjBbMTU6MF0gJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBST1dfMTlbMzE6MTZdIG9mIEZVU0VGQVJNLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGTEFTSF9SRUdJT04wCisKKyNkZWZpbmUgR1BSQ01fR1BSQ01fRUZVU0VfUkVBRF9SRUc3X0ZVU0VGQVJNX1JPV18yMF9MU1dfUk9XXzE5X01TV19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0dQUkNNX0VGVVNFX1JFQURfUkVHOCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9HUFJDTV9FRlVTRV9SRUFEX1JFRzhfRlVTRUZBUk1fUk9XXzIxX0xTV19ST1dfMjBfTVNXX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyBDb3JyZXNwb25kcyB0byBST1dfMjFbMTU6MF0gJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBST1dfMjBbMzE6MTZdIG9mIEZVU0VGQVJNLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGTEFTSF9SRUdJT04xCisKKyNkZWZpbmUgR1BSQ01fR1BSQ01fRUZVU0VfUkVBRF9SRUc4X0ZVU0VGQVJNX1JPV18yMV9MU1dfUk9XXzIwX01TV19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0dQUkNNX0VGVVNFX1JFQURfUkVHOSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9HUFJDTV9FRlVTRV9SRUFEX1JFRzlfRlVTRUZBUk1fUk9XXzIyX0xTV19ST1dfMjFfTVNXX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyBDb3JyZXNwb25kcyB0byBST1dfMjJbMTU6MF0gJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBST1dfMjFbMzE6MTZdIG9mIEZVU0VGQVJNLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGTEFTSF9SRUdJT04yCisKKyNkZWZpbmUgR1BSQ01fR1BSQ01fRUZVU0VfUkVBRF9SRUc5X0ZVU0VGQVJNX1JPV18yMl9MU1dfUk9XXzIxX01TV19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0dQUkNNX0VGVVNFX1JFQURfUkVHMTAgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fR1BSQ01fRUZVU0VfUkVBRF9SRUcxMF9GVVNFRkFSTV9ST1dfMjNfTFNXX1JPV18yMl9NU1dfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIENvcnJlc3BvbmRzIHRvIFJPV18yM1sxNTowXSAmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJPV18yMlszMToxNl0gb2YgRlVTRUZBUk0uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZMQVNIX1JFR0lPTjMKKworI2RlZmluZSBHUFJDTV9HUFJDTV9FRlVTRV9SRUFEX1JFRzEwX0ZVU0VGQVJNX1JPV18yM19MU1dfUk9XXzIyX01TV19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0dQUkNNX0VGVVNFX1JFQURfUkVHMTEgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fR1BSQ01fRUZVU0VfUkVBRF9SRUcxMV9GVVNFRkFSTV9ST1dfMjRfTFNXX1JPV18yM19NU1dfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIENvcnJlc3BvbmRzIHRvIFJPV18yNFsxNTowXSAmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJPV18yM1szMToxNl0gb2YgRlVTRUZBUk0uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZMQVNIX0RFU0NSSVBUT1IKKworI2RlZmluZSBHUFJDTV9HUFJDTV9FRlVTRV9SRUFEX1JFRzExX0ZVU0VGQVJNX1JPV18yNF9MU1dfUk9XXzIzX01TV19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0dQUkNNX0RJRUlEX1JFQURfUkVHMCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9HUFJDTV9ESUVJRF9SRUFEX1JFRzBfRlVTRUZBUk1fMTkxXzE2MF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gQ29ycmVzcG9uZHMgdG8gYml0cyBbMTkxOjE2MF0gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIEZVU0VGQVJNLiBUaGlzIGlzIFJPV181IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZVU0VGQVJNIFsxOTE6MTYwXSA6IFszMTowXSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERJRV9JRDAgWzMxOjBdIDogREVWWCBbMTE6MF0gREVWWQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbMjM6MTJdIERFVldBRiBbMjk6MjRdIERFVl9TUEFSRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbMzE6MzBdCisKKyNkZWZpbmUgR1BSQ01fR1BSQ01fRElFSURfUkVBRF9SRUcwX0ZVU0VGQVJNXzE5MV8xNjBfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19HUFJDTV9ESUVJRF9SRUFEX1JFRzEgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fR1BSQ01fRElFSURfUkVBRF9SRUcxX0ZVU0VGQVJNXzIyM18xOTJfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIENvcnJlc3BvbmRzIHRvIGJpdHMgWzIyMzoxOTJdIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBGVVNFRkFSTS4gVGhpcyBpcyBST1dfNiBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGVVNFRkFSTSA6LSBERVZMT1QgWzIzOjBdIERFVkZBQgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbMjg6MjRdIERFVkZBQkJFIFszMToyOV0KKworI2RlZmluZSBHUFJDTV9HUFJDTV9ESUVJRF9SRUFEX1JFRzFfRlVTRUZBUk1fMjIzXzE5Ml9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0dQUkNNX0RJRUlEX1JFQURfUkVHMiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9HUFJDTV9ESUVJRF9SRUFEX1JFRzJfRlVTRUZBUk1fMjU1XzIyNF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gQ29ycmVzcG9uZHMgdG8gYml0cyBbMjU1OjIyNF0gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIEZVU0VGQVJNLiBUaGlzIGlzIFJPV183IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZVU0VGQVJNOi0gREVWREVTUkVWWzQ6MF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWVtcmVwYWlyWzU6NV0gTWFrZURlZmluZWRbMTY6Nl0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ0hFQ0tTVU1bMzA6MTddIFJlc2VydmVkIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzMxOjMxXQorCisjZGVmaW5lIEdQUkNNX0dQUkNNX0RJRUlEX1JFQURfUkVHMl9GVVNFRkFSTV8yNTVfMjI0X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fR1BSQ01fRElFSURfUkVBRF9SRUczIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0dQUkNNX0RJRUlEX1JFQURfUkVHM19GVVNFRkFSTV8yODdfMjU2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyBDb3JyZXNwb25kcyB0byBiaXRzIFsyODc6MjU2XSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgRlVTRUZBUk0uIFRoaXMgaXMgUk9XXzggb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRlVTRUZBUk0gOi0gRElFSUQwIC0gREVWUkVHCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFszMTowXQorCisjZGVmaW5lIEdQUkNNX0dQUkNNX0RJRUlEX1JFQURfUkVHM19GVVNFRkFSTV8yODdfMjU2X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fR1BSQ01fRElFSURfUkVBRF9SRUc0IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0dQUkNNX0RJRUlEX1JFQURfUkVHNF9GVVNFRkFSTV8zMTlfMjg4X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyBDb3JyZXNwb25kcyB0byBiaXRzIFszMTk6Mjg4XSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgRlVTRUZBUk0uIFRoaXMgaXMgUk9XXzkgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRlVTRUZBUk0gOi0gWzc6MF0gLSBWQkFUTU9OIDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzEzOjhdIC0gQlVGRl9PRkZTRVQgOyBbMTU6MTVdIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gREZUX0dYRyA7IFsxNDoxNF0gLSBERlRfR0xYIDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzE5OjE2XSAtIFBIWSBST00gVmVyc2lvbiA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFsyMzoyMF0gLSBNQUMgUk9NIFZlcnNpb24gOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbMjc6MjRdIC0gTldQIFJPTSBWZXJzaW9uIDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzMxOjI4XSAtIEFQUFMgUk9NIFZlcnNpb24KKworI2RlZmluZSBHUFJDTV9HUFJDTV9ESUVJRF9SRUFEX1JFRzRfRlVTRUZBUk1fMzE5XzI4OF9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0FQUFNfU1NfT1ZFUlJJREVTIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0FQUFNfU1NfT1ZFUlJJREVTX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGQzAwCisKKyNkZWZpbmUgR1BSQ01fQVBQU19TU19PVkVSUklERVNfcmVzZXJ2ZWRfUyAxMAorI2RlZmluZSBHUFJDTV9BUFBTX1NTX09WRVJSSURFU19tZW1fYXBwc19yZWZjbGtfZ2F0aW5nX292ZXJyaWRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDIwMAorCisjZGVmaW5lIEdQUkNNX0FQUFNfU1NfT1ZFUlJJREVTX21lbV9hcHBzX3JlZmNsa19nYXRpbmdfb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAKKworI2RlZmluZSBHUFJDTV9BUFBTX1NTX09WRVJSSURFU19tZW1fYXBwc19wbGxjbGtfZ2F0aW5nX292ZXJyaWRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA4MAorCisjZGVmaW5lIEdQUkNNX0FQUFNfU1NfT1ZFUlJJREVTX21lbV9hcHBzX3BsbGNsa19nYXRpbmdfb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNDAKKworI2RlZmluZSBHUFJDTV9BUFBTX1NTX09WRVJSSURFU19tZW1fYXBwc19wb3JfcnN0bl9vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMjAKKworI2RlZmluZSBHUFJDTV9BUFBTX1NTX09WRVJSSURFU19tZW1fYXBwc19zeXNyc3RuX292ZXJyaWRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxMAorCisjZGVmaW5lIEdQUkNNX0FQUFNfU1NfT1ZFUlJJREVTX21lbV9hcHBzX3N5c2Nsa19nYXRpbmdfb3ZlcnJpZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA4CisKKyNkZWZpbmUgR1BSQ01fQVBQU19TU19PVkVSUklERVNfbWVtX2FwcHNfcG9yX3JzdG5fb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDQKKworI2RlZmluZSBHUFJDTV9BUFBTX1NTX09WRVJSSURFU19tZW1fYXBwc19zeXNyc3RuX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyCisKKyNkZWZpbmUgR1BSQ01fQVBQU19TU19PVkVSUklERVNfbWVtX2FwcHNfc3lzY2xrX2dhdGluZ19vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19OV1BfU1NfT1ZFUlJJREVTIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX05XUF9TU19PVkVSUklERVNfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZDMDAKKworI2RlZmluZSBHUFJDTV9OV1BfU1NfT1ZFUlJJREVTX3Jlc2VydmVkX1MgMTAKKyNkZWZpbmUgR1BSQ01fTldQX1NTX09WRVJSSURFU19tZW1fbndwX3JlZmNsa19nYXRpbmdfb3ZlcnJpZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMjAwCisKKyNkZWZpbmUgR1BSQ01fTldQX1NTX09WRVJSSURFU19tZW1fbndwX3JlZmNsa19nYXRpbmdfb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAKKworI2RlZmluZSBHUFJDTV9OV1BfU1NfT1ZFUlJJREVTX21lbV9ud3BfcGxsY2xrX2dhdGluZ19vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwODAKKworI2RlZmluZSBHUFJDTV9OV1BfU1NfT1ZFUlJJREVTX21lbV9ud3BfcGxsY2xrX2dhdGluZ19vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA0MAorCisjZGVmaW5lIEdQUkNNX05XUF9TU19PVkVSUklERVNfbWVtX253cF9wb3JfcnN0bl9vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMjAKKworI2RlZmluZSBHUFJDTV9OV1BfU1NfT1ZFUlJJREVTX21lbV9ud3Bfc3lzcnN0bl9vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTAKKworI2RlZmluZSBHUFJDTV9OV1BfU1NfT1ZFUlJJREVTX21lbV9ud3Bfc3lzY2xrX2dhdGluZ19vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDgKKworI2RlZmluZSBHUFJDTV9OV1BfU1NfT1ZFUlJJREVTX21lbV9ud3BfcG9yX3JzdG5fb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDQKKworI2RlZmluZSBHUFJDTV9OV1BfU1NfT1ZFUlJJREVTX21lbV9ud3Bfc3lzcnN0bl9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMgorCisjZGVmaW5lIEdQUkNNX05XUF9TU19PVkVSUklERVNfbWVtX253cF9zeXNjbGtfZ2F0aW5nX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX1NIQVJFRF9TU19PVkVSUklERVMgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fU0hBUkVEX1NTX09WRVJSSURFU19yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkYwMAorCisjZGVmaW5lIEdQUkNNX1NIQVJFRF9TU19PVkVSUklERVNfcmVzZXJ2ZWRfUyA4CisjZGVmaW5lIEdQUkNNX1NIQVJFRF9TU19PVkVSUklERVNfbWVtX3NoYXJlZF9wbGxjbGtfZ2F0aW5nX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDgwCisKKyNkZWZpbmUgR1BSQ01fU0hBUkVEX1NTX09WRVJSSURFU19tZW1fc2hhcmVkX3BsbGNsa19nYXRpbmdfb3ZlcnJpZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDQwCisKKyNkZWZpbmUgR1BSQ01fU0hBUkVEX1NTX09WRVJSSURFU19tZW1fc2hhcmVkX3JlZmNsa19nYXRpbmdfb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMjAKKworI2RlZmluZSBHUFJDTV9TSEFSRURfU1NfT1ZFUlJJREVTX21lbV9zaGFyZWRfcmVmY2xrX2dhdGluZ19vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTAKKworI2RlZmluZSBHUFJDTV9TSEFSRURfU1NfT1ZFUlJJREVTX21lbV9zaGFyZWRfcnN0bl9vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDgKKworI2RlZmluZSBHUFJDTV9TSEFSRURfU1NfT1ZFUlJJREVTX21lbV9zaGFyZWRfc3lzY2xrX2dhdGluZ19vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDQKKworI2RlZmluZSBHUFJDTV9TSEFSRURfU1NfT1ZFUlJJREVTX21lbV9zaGFyZWRfcnN0bl9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMgorCisjZGVmaW5lIEdQUkNNX1NIQVJFRF9TU19PVkVSUklERVNfbWVtX3NoYXJlZF9zeXNjbGtfZ2F0aW5nX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0lETUVNX0NPUkVfUlNUX09WRVJSSURFUyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9JRE1FTV9DT1JFX1JTVF9PVkVSUklERVNfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGMDAKKworI2RlZmluZSBHUFJDTV9JRE1FTV9DT1JFX1JTVF9PVkVSUklERVNfcmVzZXJ2ZWRfUyA4CisjZGVmaW5lIEdQUkNNX0lETUVNX0NPUkVfUlNUX09WRVJSSURFU19tZW1faWRtZW1fY29yZV9zeXNyc3RuX292ZXJyaWRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA4MAorCisjZGVmaW5lIEdQUkNNX0lETUVNX0NPUkVfUlNUX09WRVJSSURFU19tZW1faWRtZW1fY29yZV9mbWNfcnN0bl9vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNDAKKworI2RlZmluZSBHUFJDTV9JRE1FTV9DT1JFX1JTVF9PVkVSUklERVNfU1BBUkVfUlcxIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAyMAorCisjZGVmaW5lIEdQUkNNX0lETUVNX0NPUkVfUlNUX09WRVJSSURFU19tZW1faWRtZW1fY29yZV9waW9zY19nYXRpbmdfb3ZlcnJpZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDEwCisKKyNkZWZpbmUgR1BSQ01fSURNRU1fQ09SRV9SU1RfT1ZFUlJJREVTX21lbV9pZG1lbV9jb3JlX3N5c3JzdG5fb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDgKKworI2RlZmluZSBHUFJDTV9JRE1FTV9DT1JFX1JTVF9PVkVSUklERVNfbWVtX2lkbWVtX2NvcmVfZm1jX3JzdG5fb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDQKKworI2RlZmluZSBHUFJDTV9JRE1FTV9DT1JFX1JTVF9PVkVSUklERVNfU1BBUkVfUlcwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMgorCisjZGVmaW5lIEdQUkNNX0lETUVNX0NPUkVfUlNUX09WRVJSSURFU19tZW1faWRtZW1fY29yZV9waW9zY19nYXRpbmdfb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fVE9QX0RJRV9GU01fT1ZFUlJJREVTIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX1RPUF9ESUVfRlNNX09WRVJSSURFU19yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRjAwMAorCisjZGVmaW5lIEdQUkNNX1RPUF9ESUVfRlNNX09WRVJSSURFU19yZXNlcnZlZF9TIDEyCisjZGVmaW5lIEdQUkNNX1RPUF9ESUVfRlNNX09WRVJSSURFU19tZW1fZDJkX3B3cl9zd2l0Y2hfcGdvb2Rpbl9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDgwMAorCisjZGVmaW5lIEdQUkNNX1RPUF9ESUVfRlNNX09WRVJSSURFU19tZW1fZDJkX3B3cl9zd2l0Y2hfcGdvb2Rpbl9vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA0MDAKKworI2RlZmluZSBHUFJDTV9UT1BfRElFX0ZTTV9PVkVSUklERVNfbWVtX2QyZF9oY2xrX2dhdGluZ19vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAyMDAKKworI2RlZmluZSBHUFJDTV9UT1BfRElFX0ZTTV9PVkVSUklERVNfbWVtX2QyZF9waW9zY19nYXRpbmdfb3ZlcnJpZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwCisKKyNkZWZpbmUgR1BSQ01fVE9QX0RJRV9GU01fT1ZFUlJJREVTX21lbV9kMmRfcnN0bl9vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwODAKKworI2RlZmluZSBHUFJDTV9UT1BfRElFX0ZTTV9PVkVSUklERVNfbWVtX2QyZF9wd3Jfc3dpdGNoX3BvbmluX292ZXJyaWRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA0MAorCisjZGVmaW5lIEdQUkNNX1RPUF9ESUVfRlNNX09WRVJSSURFU19tZW1fZmxhc2hfcmVhZHlfb3ZlcnJpZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDIwCisKKyNkZWZpbmUgR1BSQ01fVE9QX0RJRV9GU01fT1ZFUlJJREVTX21lbV9kMmRfaGNsa19nYXRpbmdfb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTAKKworI2RlZmluZSBHUFJDTV9UT1BfRElFX0ZTTV9PVkVSUklERVNfbWVtX2QyZF9waW9zY19nYXRpbmdfb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDgKKworI2RlZmluZSBHUFJDTV9UT1BfRElFX0ZTTV9PVkVSUklERVNfbWVtX2QyZF9yc3RuX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA0CisKKyNkZWZpbmUgR1BSQ01fVE9QX0RJRV9GU01fT1ZFUlJJREVTX21lbV9kMmRfcHdyX3N3aXRjaF9wb25pbl9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMgorCisjZGVmaW5lIEdQUkNNX1RPUF9ESUVfRlNNX09WRVJSSURFU19tZW1fZmxhc2hfcmVhZHlfb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fTUNVX1BTQ09OX09WRVJSSURFUyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9NQ1VfUFNDT05fT1ZFUlJJREVTX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRjAwMDAwCisKKyNkZWZpbmUgR1BSQ01fTUNVX1BTQ09OX09WRVJSSURFU19yZXNlcnZlZF9TIDIwCisjZGVmaW5lIEdQUkNNX01DVV9QU0NPTl9PVkVSUklERVNfbWVtX21jdV9wc2Nvbl9tZW1fc2xlZXBfb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwODAwMDAKKworI2RlZmluZSBHUFJDTV9NQ1VfUFNDT05fT1ZFUlJJREVTX21lbV9tY3VfcHNjb25fbWVtX3VwZGF0ZV9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDA0MDAwMAorCisjZGVmaW5lIEdQUkNNX01DVV9QU0NPTl9PVkVSUklERVNfbWVtX21jdV9wc2Nvbl9tZW1fb2ZmX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDIwMDAwCisKKyNkZWZpbmUgR1BSQ01fTUNVX1BTQ09OX09WRVJSSURFU19tZW1fbWN1X3BzY29uX21lbV9yZXRhaW5fb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMTAwMDAKKworI2RlZmluZSBHUFJDTV9NQ1VfUFNDT05fT1ZFUlJJREVTX05VMV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRkMwMAorCisjZGVmaW5lIEdQUkNNX01DVV9QU0NPTl9PVkVSUklERVNfTlUxX1MgMTAKKyNkZWZpbmUgR1BSQ01fTUNVX1BTQ09OX09WRVJSSURFU19tZW1fbWN1X3BzY29uX3NsZWVwX292ZXJyaWRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDIwMAorCisjZGVmaW5lIEdQUkNNX01DVV9QU0NPTl9PVkVSUklERVNfbWVtX21jdV9wc2Nvbl9tZW1fdXBkYXRlX292ZXJyaWRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMAorCisjZGVmaW5lIEdQUkNNX01DVV9QU0NPTl9PVkVSUklERVNfbWVtX21jdV9wc2Nvbl9tZW1fb2ZmX292ZXJyaWRlX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEYwCisKKyNkZWZpbmUgR1BSQ01fTUNVX1BTQ09OX09WRVJSSURFU19tZW1fbWN1X3BzY29uX21lbV9vZmZfb3ZlcnJpZGVfUyA0CisjZGVmaW5lIEdQUkNNX01DVV9QU0NPTl9PVkVSUklERVNfbWVtX21jdV9wc2Nvbl9tZW1fcmV0YWluX292ZXJyaWRlX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDBGCisKKyNkZWZpbmUgR1BSQ01fTUNVX1BTQ09OX09WRVJSSURFU19tZW1fbWN1X3BzY29uX21lbV9yZXRhaW5fb3ZlcnJpZGVfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19XVE9QX1BTQ09OX09WRVJSSURFUyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9XVE9QX1BTQ09OX09WRVJSSURFU19yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkMwMDAwMAorCisjZGVmaW5lIEdQUkNNX1dUT1BfUFNDT05fT1ZFUlJJREVTX3Jlc2VydmVkX1MgMjIKKyNkZWZpbmUgR1BSQ01fV1RPUF9QU0NPTl9PVkVSUklERVNfbWVtX3d0b3BfcHNjb25fc2xlZXBfb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAyMDAwMDAKKworI2RlZmluZSBHUFJDTV9XVE9QX1BTQ09OX09WRVJSSURFU19tZW1fd3RvcF9wc2Nvbl9tZW1fdXBkYXRlX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMTAwMDAwCisKKyNkZWZpbmUgR1BSQ01fV1RPUF9QU0NPTl9PVkVSUklERVNfbWVtX3d0b3BfcHNjb25fbWVtX29mZl9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDA4MDAwMAorCisjZGVmaW5lIEdQUkNNX1dUT1BfUFNDT05fT1ZFUlJJREVTX21lbV93dG9wX3BzY29uX21lbV9yZXRhaW5fb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwNDAwMDAKKworI2RlZmluZSBHUFJDTV9XVE9QX1BTQ09OX09WRVJSSURFU19tZW1fd3RvcF9wc2Nvbl9zbGVlcF9vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMjAwMDAKKworI2RlZmluZSBHUFJDTV9XVE9QX1BTQ09OX09WRVJSSURFU19tZW1fd3RvcF9wc2Nvbl9tZW1fdXBkYXRlX292ZXJyaWRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAxMDAwMAorCisjZGVmaW5lIEdQUkNNX1dUT1BfUFNDT05fT1ZFUlJJREVTX21lbV93dG9wX3BzY29uX21lbV9vZmZfb3ZlcnJpZGVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZGMDAKKworI2RlZmluZSBHUFJDTV9XVE9QX1BTQ09OX09WRVJSSURFU19tZW1fd3RvcF9wc2Nvbl9tZW1fb2ZmX292ZXJyaWRlX1MgOAorI2RlZmluZSBHUFJDTV9XVE9QX1BTQ09OX09WRVJSSURFU19tZW1fd3RvcF9wc2Nvbl9tZW1fcmV0YWluX292ZXJyaWRlX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEZGCisKKyNkZWZpbmUgR1BSQ01fV1RPUF9QU0NPTl9PVkVSUklERVNfbWVtX3d0b3BfcHNjb25fbWVtX3JldGFpbl9vdmVycmlkZV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX1dFTFBfUFNDT05fT1ZFUlJJREVTIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX1dFTFBfUFNDT05fT1ZFUlJJREVTX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZDCisKKyNkZWZpbmUgR1BSQ01fV0VMUF9QU0NPTl9PVkVSUklERVNfcmVzZXJ2ZWRfUyAyCisjZGVmaW5lIEdQUkNNX1dFTFBfUFNDT05fT1ZFUlJJREVTX21lbV93ZWxwX3BzY29uX3NsZWVwX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyCisKKyNkZWZpbmUgR1BSQ01fV0VMUF9QU0NPTl9PVkVSUklERVNfbWVtX3dlbHBfcHNjb25fc2xlZXBfb3ZlcnJpZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX1dMX1NESU9fUFNDT05fT1ZFUlJJREVTIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX1dMX1NESU9fUFNDT05fT1ZFUlJJREVTX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZDCisKKyNkZWZpbmUgR1BSQ01fV0xfU0RJT19QU0NPTl9PVkVSUklERVNfcmVzZXJ2ZWRfUyAyCisjZGVmaW5lIEdQUkNNX1dMX1NESU9fUFNDT05fT1ZFUlJJREVTX21lbV93bF9zZGlvX3BzY29uX3NsZWVwX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyCisKKyNkZWZpbmUgR1BSQ01fV0xfU0RJT19QU0NPTl9PVkVSUklERVNfbWVtX3dsX3NkaW9fcHNjb25fc2xlZXBfb3ZlcnJpZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX01DU1BJX1BTQ09OX09WRVJSSURFUyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9NQ1NQSV9QU0NPTl9PVkVSUklERVNfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGMDAKKworI2RlZmluZSBHUFJDTV9NQ1NQSV9QU0NPTl9PVkVSUklERVNfcmVzZXJ2ZWRfUyA4CisjZGVmaW5lIEdQUkNNX01DU1BJX1BTQ09OX09WRVJSSURFU19tZW1fbWNzcGlfcHNjb25fbWVtX3JldGFpbl9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA4MAorCisjZGVmaW5lIEdQUkNNX01DU1BJX1BTQ09OX09WRVJSSURFU19tZW1fbWNzcGlfcHNjb25fbWVtX29mZl9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA0MAorCisjZGVmaW5lIEdQUkNNX01DU1BJX1BTQ09OX09WRVJSSURFU19tZW1fbWNzcGlfcHNjb25fbWVtX3JldGFpbl9vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMjAKKworI2RlZmluZSBHUFJDTV9NQ1NQSV9QU0NPTl9PVkVSUklERVNfbWVtX21jc3BpX3BzY29uX21lbV9vZmZfb3ZlcnJpZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDEwCisKKyNkZWZpbmUgR1BSQ01fTUNTUElfUFNDT05fT1ZFUlJJREVTX21lbV9tY3NwaV9wc2Nvbl9tZW1fdXBkYXRlX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA4CisKKyNkZWZpbmUgR1BSQ01fTUNTUElfUFNDT05fT1ZFUlJJREVTX21lbV9tY3NwaV9wc2Nvbl9tZW1fdXBkYXRlX292ZXJyaWRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNAorCisjZGVmaW5lIEdQUkNNX01DU1BJX1BTQ09OX09WRVJSSURFU19tZW1fbWNzcGlfcHNjb25fc2xlZXBfb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIKKworI2RlZmluZSBHUFJDTV9NQ1NQSV9QU0NPTl9PVkVSUklERVNfbWVtX21jc3BpX3BzY29uX3NsZWVwX292ZXJyaWRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19TU0RJT19QU0NPTl9PVkVSUklERVMgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fU1NESU9fUFNDT05fT1ZFUlJJREVTX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZDCisKKyNkZWZpbmUgR1BSQ01fU1NESU9fUFNDT05fT1ZFUlJJREVTX3Jlc2VydmVkX1MgMgorI2RlZmluZSBHUFJDTV9TU0RJT19QU0NPTl9PVkVSUklERVNfbWVtX3NzZGlvX3BzY29uX3NsZWVwX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyCisKKyNkZWZpbmUgR1BSQ01fU1NESU9fUFNDT05fT1ZFUlJJREVTX21lbV9zc2Rpb19wc2Nvbl9zbGVlcF9vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEKKworCisKKworI2VuZGlmIC8vIF9fSFdfR1BSQ01fSF9fCmRpZmYgLS1naXQgYS9leHQvaGFsL3RpL2NjMzIyMHNkay9pbmMvaHdfaGliMXAyLmggYi9leHQvaGFsL3RpL2NjMzIyMHNkay9pbmMvaHdfaGliMXAyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGI1ZThkYgotLS0gL2Rldi9udWxsCisrKyBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2luYy9od19oaWIxcDIuaApAQCAtMCwwICsxLDE3NDggQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDE2IFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCAtIGh0dHA6Ly93d3cudGkuY29tLworICoKKyAqICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqICBhcmUgbWV0OgorICoKKyAqICAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogICAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqICAgIE5laXRoZXIgdGhlIG5hbWUgb2YgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqICBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqICBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiAgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiAgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiAgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpZm5kZWYgX19IV19ISUIxUDJfSF9fCisjZGVmaW5lIF9fSFdfSElCMVAyX0hfXworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIEhJQjFQMiByZWdpc3RlciBvZmZzZXRzLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX09fU1JBTV9TS0FfTERPX1BBUkFNRVRFUlMwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9PX1NSQU1fU0tBX0xET19QQVJBTUVURVJTMSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDQKKworI2RlZmluZSBISUIxUDJfT19ESUdfRENEQ19QQVJBTUVURVJTMCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDgKKworI2RlZmluZSBISUIxUDJfT19ESUdfRENEQ19QQVJBTUVURVJTMSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMEMKKworI2RlZmluZSBISUIxUDJfT19ESUdfRENEQ19QQVJBTUVURVJTMiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTAKKworI2RlZmluZSBISUIxUDJfT19ESUdfRENEQ19QQVJBTUVURVJTMyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTQKKworI2RlZmluZSBISUIxUDJfT19ESUdfRENEQ19QQVJBTUVURVJTNCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTgKKworI2RlZmluZSBISUIxUDJfT19ESUdfRENEQ19QQVJBTUVURVJTNSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMUMKKworI2RlZmluZSBISUIxUDJfT19ESUdfRENEQ19QQVJBTUVURVJTNiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMjAKKworI2RlZmluZSBISUIxUDJfT19BTkFfRENEQ19QQVJBTUVURVJTMCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMjQKKworI2RlZmluZSBISUIxUDJfT19BTkFfRENEQ19QQVJBTUVURVJTMSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMjgKKworI2RlZmluZSBISUIxUDJfT19BTkFfRENEQ19QQVJBTUVURVJTMTYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDY0CisKKyNkZWZpbmUgSElCMVAyX09fQU5BX0RDRENfUEFSQU1FVEVSUzE3IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA2OAorCisjZGVmaW5lIEhJQjFQMl9PX0FOQV9EQ0RDX1BBUkFNRVRFUlMxOCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNkMKKworI2RlZmluZSBISUIxUDJfT19BTkFfRENEQ19QQVJBTUVURVJTMTkgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDcwCisKKyNkZWZpbmUgSElCMVAyX09fRkxBU0hfRENEQ19QQVJBTUVURVJTMCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNzQKKworI2RlZmluZSBISUIxUDJfT19GTEFTSF9EQ0RDX1BBUkFNRVRFUlMxIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA3OAorCisjZGVmaW5lIEhJQjFQMl9PX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDdDCisKKyNkZWZpbmUgSElCMVAyX09fRkxBU0hfRENEQ19QQVJBTUVURVJTMyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwODAKKworI2RlZmluZSBISUIxUDJfT19GTEFTSF9EQ0RDX1BBUkFNRVRFUlM0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA4NAorCisjZGVmaW5lIEhJQjFQMl9PX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDg4CisKKyNkZWZpbmUgSElCMVAyX09fRkxBU0hfRENEQ19QQVJBTUVURVJTNiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwOEMKKworI2RlZmluZSBISUIxUDJfT19QTUJJU1RfUEFSQU1FVEVSUzAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDk0CisKKyNkZWZpbmUgSElCMVAyX09fUE1CSVNUX1BBUkFNRVRFUlMxIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA5OAorCisjZGVmaW5lIEhJQjFQMl9PX1BNQklTVF9QQVJBTUVURVJTMiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwOUMKKworI2RlZmluZSBISUIxUDJfT19QTUJJU1RfUEFSQU1FVEVSUzMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEEwCisKKyNkZWZpbmUgSElCMVAyX09fRkxBU0hfRENEQ19QQVJBTUVURVJTOCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQTQKKworI2RlZmluZSBISUIxUDJfT19BTkFfRENEQ19QQVJBTUVURVJTX09WRVJSSURFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBBOAorCisjZGVmaW5lIEhJQjFQMl9PX0ZMQVNIX0RDRENfUEFSQU1FVEVSU19PVkVSUklERSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQUMKKworI2RlZmluZSBISUIxUDJfT19ESUdfRENEQ19WVFJJTV9DRkcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEIwCisKKyNkZWZpbmUgSElCMVAyX09fRElHX0RDRENfRlNNX1BBUkFNRVRFUlMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEI0CisKKyNkZWZpbmUgSElCMVAyX09fQU5BX0RDRENfRlNNX1BBUkFNRVRFUlMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEI4CisKKyNkZWZpbmUgSElCMVAyX09fU1JBTV9TS0FfTERPX0ZTTV9QQVJBTUVURVJTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBCQworCisjZGVmaW5lIEhJQjFQMl9PX0JHQVBfRFVUWV9DWUNMSU5HX0VYSVRfQ0ZHIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBDMAorCisjZGVmaW5lIEhJQjFQMl9PX0NNX09TQ18xNk1fQ09ORklHIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBDNAorCisjZGVmaW5lIEhJQjFQMl9PX1NPUF9TRU5TRV9WQUxVRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQzgKKworI2RlZmluZSBISUIxUDJfT19ISUJfUlRDX1RJTUVSX0xTV18xUDIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMENDCisKKyNkZWZpbmUgSElCMVAyX09fSElCX1JUQ19USU1FUl9NU1dfMVAyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBEMAorCisjZGVmaW5lIEhJQjFQMl9PX0hJQjFQMl9CR0FQX1RSSU1fT1ZFUlJJREVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBENAorCisjZGVmaW5lIEhJQjFQMl9PX0hJQjFQMl9FRlVTRV9SRUFEX1JFRzAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEQ4CisKKyNkZWZpbmUgSElCMVAyX09fSElCMVAyX0VGVVNFX1JFQURfUkVHMSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwREMKKworI2RlZmluZSBISUIxUDJfT19ISUIxUDJfUE9SX1RFU1RfQ1RSTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRTAKKworI2RlZmluZSBISUIxUDJfT19ISUJfVElNRVJfU1lOQ19DQUxJQl9DRkcwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBFNAorCisjZGVmaW5lIEhJQjFQMl9PX0hJQl9USU1FUl9TWU5DX0NBTElCX0NGRzEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEU4CisKKyNkZWZpbmUgSElCMVAyX09fSElCX1RJTUVSX1NZTkNfQ0ZHMiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRUMKKworI2RlZmluZSBISUIxUDJfT19ISUJfVElNRVJfU1lOQ19UU0ZfQURKX1ZBTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRjAKKworI2RlZmluZSBISUIxUDJfT19ISUJfVElNRVJfUlRDX0dUU19USU1FU1RBTVBfTFNXIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGNAorCisjZGVmaW5lIEhJQjFQMl9PX0hJQl9USU1FUl9SVENfR1RTX1RJTUVTVEFNUF9NU1cgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEY4CisKKyNkZWZpbmUgSElCMVAyX09fSElCX1RJTUVSX1JUQ19XVVBfVElNRVNUQU1QX0xTVyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkMKKworI2RlZmluZSBISUIxUDJfT19ISUJfVElNRVJfUlRDX1dVUF9USU1FU1RBTVBfTVNXIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMAorCisjZGVmaW5lIEhJQjFQMl9PX0hJQl9USU1FUl9TWU5DX1dBS0VfT0ZGU0VUX0VSUiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDQKKworI2RlZmluZSBISUIxUDJfT19ISUJfVElNRVJfU1lOQ19UU0ZfQ1VSUl9WQUxfTFNXIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwOAorCisjZGVmaW5lIEhJQjFQMl9PX0hJQl9USU1FUl9TWU5DX1RTRl9DVVJSX1ZBTF9NU1cgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTBDCisKKyNkZWZpbmUgSElCMVAyX09fQ01fU1BBUkUgICAgICAgMHgwMDAwMDExMAorI2RlZmluZSBISUIxUDJfT19QT1JQT0xfU1BBUkUgICAweDAwMDAwMTE0CisjZGVmaW5lIEhJQjFQMl9PX01FTV9ESUdfRENEQ19DTEtfQ09ORklHIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDExOAorCisjZGVmaW5lIEhJQjFQMl9PX01FTV9BTkFfRENEQ19DTEtfQ09ORklHIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDExQworCisjZGVmaW5lIEhJQjFQMl9PX01FTV9GTEFTSF9EQ0RDX0NMS19DT05GSUcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTIwCisKKyNkZWZpbmUgSElCMVAyX09fTUVNX1BBX0RDRENfQ0xLX0NPTkZJRyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMjQKKworI2RlZmluZSBISUIxUDJfT19NRU1fU0xET19WTldBX09WRVJSSURFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEyOAorCisjZGVmaW5lIEhJQjFQMl9PX01FTV9CR0FQX0RVVFlfQ1lDTElOR19FTkFCTEVfT1ZFUlJJREUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTJDCisKKyNkZWZpbmUgSElCMVAyX09fTUVNX0hJQl9GU01fREVCVUcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTMwCisKKyNkZWZpbmUgSElCMVAyX09fTUVNX1NMRE9fVk5XQV9TV19DVFJMIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEzNAorCisjZGVmaW5lIEhJQjFQMl9PX01FTV9TTERPX1dFQUtfUFJPQ0VTUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMzgKKworI2RlZmluZSBISUIxUDJfT19NRU1fUEFfRENEQ19PVl9VVl9TVEFUVVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTNDCisKKyNkZWZpbmUgSElCMVAyX09fTUVNX0NNX1RFU1RfTU9ERSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxNDAKKworCisKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjFQMl9PX1NSQU1fU0tBX0xET19QQVJBTUVURVJTMCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfU1JBTV9TS0FfTERPX1BBUkFNRVRFUlMwX21lbV9zbGRvX2VuX3NjX2l0cmltX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4QzAwMDAwMDAKKworI2RlZmluZSBISUIxUDJfU1JBTV9TS0FfTERPX1BBUkFNRVRFUlMwX21lbV9zbGRvX2VuX3NjX2l0cmltX2xvd3ZfUyAzMAorI2RlZmluZSBISUIxUDJfU1JBTV9TS0FfTERPX1BBUkFNRVRFUlMwX21lbV9zbGRvX2VuX2lxX3RyaW1fbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMDAwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9TUkFNX1NLQV9MRE9fUEFSQU1FVEVSUzBfbWVtX3NsZG9fZW5faXFfdHJpbV9sb3d2X1MgMjgKKyNkZWZpbmUgSElCMVAyX1NSQU1fU0tBX0xET19QQVJBTUVURVJTMF9tZW1fc2xkb19lbl9zY19wcm90X2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA4MDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX1NSQU1fU0tBX0xET19QQVJBTUVURVJTMF9tZW1fc2xkb19lbl9sb3d2X292ZXJyaWRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwNDAwMDAwMCAgLy8gRlNNIE92ZXJyaWRlIHZhbHVlIGZvciBTTERPX0VOIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXBwbGljYWJsZSBvbmx5IHdoZW4gYml0IFs0XSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIHJlZ2lzdGVyIGlzIHNldCB0byAxLgorCisjZGVmaW5lIEhJQjFQMl9TUkFNX1NLQV9MRE9fUEFSQU1FVEVSUzBfbWVtX3NsZG9fZW5fbG93X3B3cl9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMjAwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9TUkFNX1NLQV9MRE9fUEFSQU1FVEVSUzBfbWVtX3NsZG9faW50X2NhcF9zZWxfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEwMDAwMDAKKworI2RlZmluZSBISUIxUDJfU1JBTV9TS0FfTERPX1BBUkFNRVRFUlMwX21lbV9zbGRvX3Z0cmltX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDBGQzAwMDAKKworI2RlZmluZSBISUIxUDJfU1JBTV9TS0FfTERPX1BBUkFNRVRFUlMwX21lbV9zbGRvX3Z0cmltX2xvd3ZfUyAxOAorI2RlZmluZSBISUIxUDJfU1JBTV9TS0FfTERPX1BBUkFNRVRFUlMwX21lbV9zbGRvX3NwYXJlX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwM0ZGMDAKKworI2RlZmluZSBISUIxUDJfU1JBTV9TS0FfTERPX1BBUkFNRVRFUlMwX21lbV9zbGRvX3NwYXJlX2xvd3ZfUyA4CisjZGVmaW5lIEhJQjFQMl9TUkFNX1NLQV9MRE9fUEFSQU1FVEVSUzBfbWVtX3NrYWxkb19lbl9sb3d2X292ZXJyaWRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA4MCAgLy8gRlNNIE92ZXJyaWRlIHZhbHVlIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTS0FfTERPX0VOIDogQXBwbGljYWJsZSBvbmx5IHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0IFszXSBvZiB0aGlzIHJlZ2lzdGVyIGlzIHNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byAxLgorCisjZGVmaW5lIEhJQjFQMl9TUkFNX1NLQV9MRE9fUEFSQU1FVEVSUzBfbWVtX3NrYWxkb19lbl9jYXBfcmVmX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDQwCisKKyNkZWZpbmUgSElCMVAyX1NSQU1fU0tBX0xET19QQVJBTUVURVJTMF9tZW1fc2thbGRvX2VuX3Jlc2Rpdl9yZWZfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMjAKKworI2RlZmluZSBISUIxUDJfU1JBTV9TS0FfTERPX1BBUkFNRVRFUlMwX21lbV9zbGRvX2VuX2xvd3ZfZnNtX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDEwICAvLyBXaGVuIDEsIGJpdFsyNl0gb2YgdGhpcyByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGJlIHVzZWQgYXMgU0xET19FTgorCisjZGVmaW5lIEhJQjFQMl9TUkFNX1NLQV9MRE9fUEFSQU1FVEVSUzBfbWVtX3NrYWxkb19lbl9sb3d2X2ZzbV9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwOCAgLy8gV2hlbiAxLCBiaXRbMjZdIG9mIHRoaXMgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBiZSB1c2VkIGFzIFNLQV9MRE9fRU4KKworI2RlZmluZSBISUIxUDJfU1JBTV9TS0FfTERPX1BBUkFNRVRFUlMwX05BMV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNworCisjZGVmaW5lIEhJQjFQMl9TUkFNX1NLQV9MRE9fUEFSQU1FVEVSUzBfTkExX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjFQMl9PX1NSQU1fU0tBX0xET19QQVJBTUVURVJTMSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfU1JBTV9TS0FfTERPX1BBUkFNRVRFUlMxX21lbV9za2FsZG9fY3RybF9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGQzAwMDAwCisKKyNkZWZpbmUgSElCMVAyX1NSQU1fU0tBX0xET19QQVJBTUVURVJTMV9tZW1fc2thbGRvX2N0cmxfbG93dl9TIDIyCisjZGVmaW5lIEhJQjFQMl9TUkFNX1NLQV9MRE9fUEFSQU1FVEVSUzFfbWVtX3NrYWxkb192dHJpbV9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwM0YwMDAwCisKKyNkZWZpbmUgSElCMVAyX1NSQU1fU0tBX0xET19QQVJBTUVURVJTMV9tZW1fc2thbGRvX3Z0cmltX2xvd3ZfUyAxNgorI2RlZmluZSBISUIxUDJfU1JBTV9TS0FfTERPX1BBUkFNRVRFUlMxX21lbV9zbGRvX2VuX3Rsb2FkX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDA4MDAwCisKKyNkZWZpbmUgSElCMVAyX1NSQU1fU0tBX0xET19QQVJBTUVURVJTMV9tZW1fc2thbGRvX2VuX3Rsb2FkX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDA0MDAwCisKKyNkZWZpbmUgSElCMVAyX1NSQU1fU0tBX0xET19QQVJBTUVURVJTMV9tZW1fc2thbGRvX2NhcF9zd19lbl9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMjAwMAorCisjZGVmaW5lIEhJQjFQMl9TUkFNX1NLQV9MRE9fUEFSQU1FVEVSUzFfbWVtX3NrYWxkb19lbl9oaWJfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDEwMDAKKworI2RlZmluZSBISUIxUDJfU1JBTV9TS0FfTERPX1BBUkFNRVRFUlMxX21lbV9za2FsZG9fZW5fdnJlZl9idWZfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA4MDAKKworI2RlZmluZSBISUIxUDJfU1JBTV9TS0FfTERPX1BBUkFNRVRFUlMxX05BMl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDdGRgorCisjZGVmaW5lIEhJQjFQMl9TUkFNX1NLQV9MRE9fUEFSQU1FVEVSUzFfTkEyX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjFQMl9PX0RJR19EQ0RDX1BBUkFNRVRFUlMwIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19kaWdfZW5fbG93dl9vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAwMDAwMDAgIC8vIE92ZXJyaWRlIHZhbHVlIGZvciBEQ0RDX0RJR19FTiA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFwcGxpY2FibGUgb25seSB3aGVuIGJpdCBbMzFdIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERJR19EQ0RDX1BBUkFNRVRFUlMxIFsweDAwMENdIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0byAxLiBFbHNlIGZyb20gRlNNCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2RpZ19kZWxheWVkX2VuX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwMDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2RpZ19lbl9zdWJyZWdfMXA4dl9sb3d2X292ZXJyaWRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMDAwMDAwMCAgLy8gT3ZlcnJpZGUgdmFsdWUgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERDRENfRElHX0VOX1NVQlJFR18xUDhWIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXBwbGljYWJsZSBvbmx5IHdoZW4gYml0IFszMF0gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRElHX0RDRENfUEFSQU1FVEVSUzEgWzB4MDAwQ10gaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIDEuIEVsc2UgZnJvbSBGU00KKworI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfZGlnX2VuX3N1YnJlZ18xcDJ2X2xvd3Zfb3ZlcnJpZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwMDAwMDAwICAvLyBPdmVycmlkZSB2YWx1ZSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRENEQ19ESUdfRU5fU1VCUkVHXzFQMlYgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBcHBsaWNhYmxlIG9ubHkgd2hlbiBiaXQgWzI5XSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBESUdfRENEQ19QQVJBTUVURVJTMSBbMHgwMDBDXSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gMS4gRWxzZSBmcm9tIEZTTQorCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19kaWdfZW5fc2xwX21vZGVfbG93dl9vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDgwMDAwMDAgIC8vIE92ZXJyaWRlIHZhbHVlIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEQ0RDX0RJR19TTFBfRU4gOiBBcHBsaWNhYmxlIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBiaXQgWzI4XSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBESUdfRENEQ19QQVJBTUVURVJTMSBbMHgwMDBDXSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gMS4gRWxzZSBmcm9tIEZTTQorCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19kaWdfZW5fbGRvX21vZGVfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDQwMDAwMDAKKworI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfZGlnX2VuX25mZXRfcmRzX21vZGVfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIwMDAwMDAKKworI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfZGlnX2VuX3BmZXRfcmRzX21vZGVfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEwMDAwMDAKKworI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfZGlnX2V4dF9zbXBzX292ZXJyaWRlX21vZGVfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDA4MDAwMDAKKworI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfZGlnX2Nsa19pbl9sb3d2X2VuYWJsZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDA0MDAwMDAKKworI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfZGlnX3Z0cmltX2xvd3Zfb3ZlcnJpZGVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAzRjAwMDAgIC8vIE92ZXJyaWRlIHZhbHVlIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEQ0RDX0RJR19WVFJJTSA6IEFwcGxpY2FibGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIGJpdCBbMjddIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERJR19EQ0RDX1BBUkFNRVRFUlMxIFsweDAwMENdIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0byAxLgorCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19kaWdfdnRyaW1fbG93dl9vdmVycmlkZV9TIDE2CisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19kaWdfcGZtX3JpcHBsZV90cmltX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEMwMDAKKworI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfZGlnX3BmbV9yaXBwbGVfdHJpbV9sb3d2X1MgMTQKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2RpZ19pcV9jdHJsX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDMwMDAKKworI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfZGlnX2lxX2N0cmxfbG93dl9TIDEyCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19kaWdfZW5fY2xfbm9uX292X2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwODAwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2RpZ19ub25fb3ZfY3RybF9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNzgwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2RpZ19ub25fb3ZfY3RybF9sb3d2X1MgNworI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfZGlnX3NscF9kcnZfZGx5X3NlbF9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDc4CisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2RpZ19zbHBfZHJ2X2RseV9zZWxfbG93dl9TIDMKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMwX05BM19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNworCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTMF9OQTNfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fRElHX0RDRENfUEFSQU1FVEVSUzEgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2RpZ19lbl9sb3d2X2ZzbV9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDAwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTMV9tZW1fZGNkY19kaWdfZW5fc3VicmVnXzFwOHZfZnNtX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwMDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2RpZ19lbl9zdWJyZWdfMXAydl9mc21fb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAwMDAwMDAKKworI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzFfbWVtX2RjZGNfZGlnX2VuX3NscF9tb2RlX2xvd3ZfZnNtX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwMDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2RpZ192dHJpbV9mc21fb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDgwMDAwMDAKKworI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzFfbWVtX2RjZGNfZGlnX2NvdF9tb2RlX2VuX2xvd3ZfZnNtX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA0MDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2RpZ19pbGltX3RyaW1fbG93dl9lZmNfb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIwMDAwMDAKKworI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzFfTkE0X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAxRkZGRkZGCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMxX05BNF9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19ESUdfRENEQ19QQVJBTUVURVJTMiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzJfbWVtX2RjZGNfZGlnX3BmZXRfc2VsX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RjAwMDAwMDAKKworI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzJfbWVtX2RjZGNfZGlnX3BmZXRfc2VsX2xvd3ZfUyAyOAorI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzJfbWVtX2RjZGNfZGlnX25mZXRfc2VsX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEYwMDAwMDAKKworI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzJfbWVtX2RjZGNfZGlnX25mZXRfc2VsX2xvd3ZfUyAyNAorI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzJfbWVtX2RjZGNfZGlnX3BkcnZfc3RhZ2dlcl9jdHJsX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDBDMDAwMDAKKworI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzJfbWVtX2RjZGNfZGlnX3BkcnZfc3RhZ2dlcl9jdHJsX2xvd3ZfUyAyMgorI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzJfbWVtX2RjZGNfZGlnX25kcnZfc3RhZ2dlcl9jdHJsX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAzMDAwMDAKKworI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzJfbWVtX2RjZGNfZGlnX25kcnZfc3RhZ2dlcl9jdHJsX2xvd3ZfUyAyMAorI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzJfbWVtX2RjZGNfZGlnX3BkcnZfc3RyX3NlbF9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMEYwMDAwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMyX21lbV9kY2RjX2RpZ19wZHJ2X3N0cl9zZWxfbG93dl9TIDE2CisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTMl9OQTUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDA4MDAwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMyX21lbV9kY2RjX2RpZ19uZHJ2X3N0cl9zZWxfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwNzgwMAorCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTMl9tZW1fZGNkY19kaWdfbmRydl9zdHJfc2VsX2xvd3ZfUyAxMQorI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzJfbWVtX2RjZGNfZGlnX2VuX3Nob290dGhydV9jdHJsX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNDAwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMyX21lbV9kY2RjX2RpZ190b25fdHJpbV9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwM0ZDCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMyX21lbV9kY2RjX2RpZ190b25fdHJpbV9sb3d2X1MgMgorI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzJfbWVtX2RjZGNfZGlnX3N3Y2FwX3Jlc19oZl9jbGtfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIKKworI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzJfbWVtX2RjZGNfZGlnX2NvdF9tb2RlX2VuX2xvd3Zfb3ZlcnJpZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyBPdmVycmlkZSB2YWx1ZSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRENEQ19ESUdfQ09UX0VOIDogQXBwbGljYWJsZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gYml0WzI2XSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBESUdfRENEQ19QQVJBTUVURVJTMSBbMHgwMDBDXSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gMS4KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjFQMl9PX0RJR19EQ0RDX1BBUkFNRVRFUlMzIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTM19OQTYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwMDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMzX21lbV9kY2RjX2RpZ19jb3RfY3RybF9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdGODAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMzX21lbV9kY2RjX2RpZ19jb3RfY3RybF9sb3d2X1MgMjMKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMzX21lbV9kY2RjX2RpZ19lbl9pbGltX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwNDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMzX21lbV9kY2RjX2RpZ19lbl9pbGltX2hpYl9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDIwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTM19tZW1fZGNkY19kaWdfaWxpbV90cmltX2xvd3Zfb3ZlcnJpZGVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAxRkUwMDAgIC8vIE92ZXJyaWRlIHZhbHVlIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEQ0RDX0RJR19JTElNX1RSSU0gOiBBcHBsaWNhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9ubHkgd2hlbiBiaXQgWzI1XSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBESUdfRENEQ19QQVJBTUVURVJTMSBbMHgwMDBDXSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gMQorCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTM19tZW1fZGNkY19kaWdfaWxpbV90cmltX2xvd3Zfb3ZlcnJpZGVfUyAxMworI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzNfbWVtX2RjZGNfZGlnX2lsaW1fbWFza19kbHlfc2VsX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDE4MDAKKworI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzNfbWVtX2RjZGNfZGlnX2lsaW1fbWFza19kbHlfc2VsX2xvd3ZfUyAxMQorI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzNfbWVtX2RjZGNfZGlnX2VuX25jb21wX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNDAwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMzX21lbV9kY2RjX2RpZ19lbl9uY29tcF9oaWJfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAyMDAKKworI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzNfbWVtX2RjZGNfZGlnX25jb21wX3RyaW1fbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDFGMAorCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTM19tZW1fZGNkY19kaWdfbmNvbXBfdHJpbV9sb3d2X1MgNAorI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzNfbWVtX2RjZGNfZGlnX25jb21wX21hc2tfZGx5X3NlbF9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDBDCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMzX21lbV9kY2RjX2RpZ19uY29tcF9tYXNrX2RseV9zZWxfbG93dl9TIDIKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMzX21lbV9kY2RjX2RpZ19lbl91dl9wcm90X2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMzX21lbV9kY2RjX2RpZ19lbl9vdl9wcm90X2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19ESUdfRENEQ19QQVJBTUVURVJTNCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzRfZGNkY19kaWdfdXZfcHJvdF9vdXRfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAwMDAwMDAKKworI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzRfZGNkY19kaWdfb3ZfcHJvdF9vdXRfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAwMDAKKworI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzRfbWVtX2RjZGNfZGlnX2VuX3RtdXhfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAwMDAwMDAKKworI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzRfTkE3X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFGRkZGRkZGCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlM0X05BN19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19ESUdfRENEQ19QQVJBTUVURVJTNSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzVfbWVtX2RjZGNfZGlnX3RtdXhfY3RybF9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlM1X21lbV9kY2RjX2RpZ190bXV4X2N0cmxfbG93dl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19ESUdfRENEQ19QQVJBTUVURVJTNiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzZfbWVtX2RjZGNfZGlnX3NwYXJlX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYKKworI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzZfbWVtX2RjZGNfZGlnX3NwYXJlX2xvd3ZfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fQU5BX0RDRENfUEFSQU1FVEVSUzAgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2FuYV9lbl9sb3d2X292ZXJyaWRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDAwMDAwMCAgLy8gT3ZlcnJpZGUgZm9yIEFOQSBEQ0RDIEVOCisKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2FuYV9kZWxheWVkX2VuX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwMDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2FuYV9lbl9zdWJyZWdfMXA4dl9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMDAwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19hbmFfZW5fc3VicmVnXzFwMnZfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAwMDAwMDAKKworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfYW5hX2VuX3B3bV9tb2RlX2xvd3Zfb3ZlcnJpZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA4MDAwMDAwICAvLyBPdmVycmlkZSBmb3IgQU5BIERDREMgUFdNCisKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2FuYV9lbl9zbHBfbW9kZV9sb3d2X292ZXJyaWRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwNDAwMDAwMCAgLy8gT3ZlcnJpZGUgZm9yIEFOQSBEQ0RDIFNMUAorCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19hbmFfZW5fbGRvX21vZGVfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIwMDAwMDAKKworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfYW5hX2VuX3BmZXRfcmRzX21vZGVfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEwMDAwMDAKKworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfYW5hX2VuX25mZXRfcmRzX21vZGVfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDA4MDAwMDAKKworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfYW5hX2V4dF9zbXBzX292ZXJyaWRlX21vZGVfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDA0MDAwMDAKKworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfYW5hX2Nsa19pbl9sb3d2X2VuYWJsZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAyMDAwMDAKKworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfYW5hX3Z0cmltX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAxRTAwMDAKKworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfYW5hX3Z0cmltX2xvd3ZfUyAxNworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfYW5hX3BmbV9yaXBwbGVfdHJpbV9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDE4MDAwCisKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2FuYV9wZm1fcmlwcGxlX3RyaW1fbG93dl9TIDE1CisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19hbmFfaXFfY3RybF9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDA2MDAwCisKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2FuYV9pcV9jdHJsX2xvd3ZfUyAxMworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfYW5hX2VuX2NsX25vbl9vdl9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMTAwMAorCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19hbmFfbm9uX292X2N0cmxfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEYwMAorCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19hbmFfbm9uX292X2N0cmxfbG93dl9TIDgKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2FuYV9zbHBfZHJ2X2RseV9zZWxfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGMAorCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19hbmFfc2xwX2Rydl9kbHlfc2VsX2xvd3ZfUyA0CisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19hbmFfcGZldF9zZWxfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwRgorCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19hbmFfcGZldF9zZWxfbG93dl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19BTkFfRENEQ19QQVJBTUVURVJTMSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzFfbWVtX2RjZGNfYW5hX25mZXRfc2VsX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RjAwMDAwMDAKKworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzFfbWVtX2RjZGNfYW5hX25mZXRfc2VsX2xvd3ZfUyAyOAorI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzFfbWVtX2RjZGNfYW5hX3BkcnZfc3RhZ2dlcl9jdHJsX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEMwMDAwMDAKKworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzFfbWVtX2RjZGNfYW5hX3BkcnZfc3RhZ2dlcl9jdHJsX2xvd3ZfUyAyNgorI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzFfbWVtX2RjZGNfYW5hX25kcnZfc3RhZ2dlcl9jdHJsX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDMwMDAwMDAKKworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzFfbWVtX2RjZGNfYW5hX25kcnZfc3RhZ2dlcl9jdHJsX2xvd3ZfUyAyNAorI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzFfbWVtX2RjZGNfYW5hX3BkcnZfc3RyX3NlbF9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwRjAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2FuYV9wZHJ2X3N0cl9zZWxfbG93dl9TIDIwCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMV9tZW1fZGNkY19hbmFfbmRydl9zdHJfc2VsX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwRjAwMDAKKworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzFfbWVtX2RjZGNfYW5hX25kcnZfc3RyX3NlbF9sb3d2X1MgMTYKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2FuYV9lbl9ydHJpbV9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwODAwMCAgLy8gKEVhcmxpZXIgU0hPT1RUSFJVIENUUkwpCisKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2FuYV9hcHdtX2VuX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDA0MDAwCisKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2FuYV9yYW1wX2hndF9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAzRTAwCisKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2FuYV9yYW1wX2hndF9sb3d2X1MgOQorI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzFfbWVtX2RjZGNfYW5hX2VuX2FudGlfZ2xpdGNoX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwCisKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2FuYV9lbl9oaV9jbGFtcF9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA4MAorCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMV9tZW1fZGNkY19hbmFfaGlfY2xhbXBfdHJpbV9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDYwCisKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2FuYV9oaV9jbGFtcF90cmltX2xvd3ZfUyA1CisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMV9tZW1fZGNkY19hbmFfZW5fbG9fY2xhbXBfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTAKKworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzFfbWVtX2RjZGNfYW5hX2xvX2NsYW1wX3RyaW1fbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwQworCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMV9tZW1fZGNkY19hbmFfbG9fY2xhbXBfdHJpbV9sb3d2X1MgMgorI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzFfTkE4X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAzCisKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMxX05BOF9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19BTkFfRENEQ19QQVJBTUVURVJTMTYgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMxNl9tZW1fZGNkY19hbmFfZW5faWxpbV9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDIwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMTZfbWVtX2RjZGNfYW5hX2VuX2lsaW1faGliX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMTAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMxNl9tZW1fZGNkY19hbmFfaWxpbV90cmltX2xvd3Zfb3ZlcnJpZGVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwRkYwMDAKKworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzE2X21lbV9kY2RjX2FuYV9pbGltX3RyaW1fbG93dl9vdmVycmlkZV9TIDEyCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMTZfbWVtX2RjZGNfYW5hX2lsaW1fbWFza19kbHlfc2VsX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDMDAKKworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzE2X21lbV9kY2RjX2FuYV9pbGltX21hc2tfZGx5X3NlbF9sb3d2X1MgMTAKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMxNl9tZW1fZGNkY19hbmFfZW5fbmNvbXBfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAyMDAKKworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzE2X21lbV9kY2RjX2FuYV9lbl9uY29tcF9oaWJfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAKKworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzE2X21lbV9kY2RjX2FuYV9uY29tcF90cmltX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRjgKKworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzE2X21lbV9kY2RjX2FuYV9uY29tcF90cmltX2xvd3ZfUyAzCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMTZfbWVtX2RjZGNfYW5hX25jb21wX21hc2tfZGx5X3NlbF9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA2CisKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMxNl9tZW1fZGNkY19hbmFfbmNvbXBfbWFza19kbHlfc2VsX2xvd3ZfUyAxCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMTZfbWVtX2RjZGNfYW5hX2VuX292X3Byb3RfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjFQMl9PX0FOQV9EQ0RDX1BBUkFNRVRFUlMxNyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzE3X2RjZGNfYW5hX292X3Byb3Rfb3V0X2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwMDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMxN19tZW1fZGNkY19hbmFfZW5fdG11eF9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MDAwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMTdfTkExN19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzRkZGRkZGRgorCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMTdfTkExN19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19BTkFfRENEQ19QQVJBTUVURVJTMTggcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMxOF9tZW1fZGNkY19hbmFfdG11eF9jdHJsX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYKKworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzE4X21lbV9kY2RjX2FuYV90bXV4X2N0cmxfbG93dl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19BTkFfRENEQ19QQVJBTUVURVJTMTkgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMxOV9tZW1fZGNkY19hbmFfc3BhcmVfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRgorCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMTlfbWVtX2RjZGNfYW5hX3NwYXJlX2xvd3ZfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fRkxBU0hfRENEQ19QQVJBTUVURVJTMCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19mbGFzaF9lbl9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDAwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2ZsYXNoX2RlbGF5ZWRfZW5fbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAwMDAKKworI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19mbGFzaF9jbGtfaW5fbG93dl9lbmFibGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwMDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfZmxhc2hfaXFfY3RybF9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4MDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfZmxhc2hfaXFfY3RybF9sb3d2X1MgMjcKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfZmxhc2hfZW5fYnVja19tb2RlX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA0MDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfZmxhc2hfZW5fYm9vc3RfbW9kZV9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMjAwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2ZsYXNoX2VuX2J1Y2tfYm9vc3RfbW9kZV9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMTAwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2ZsYXNoX2VuX2JiX2FsdF9jeWNsZXNfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDA4MDAwMDAKKworI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19mbGFzaF9lbl9jbF9ub25fb3ZfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDA0MDAwMDAKKworI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19mbGFzaF9ub25fb3ZfY3RybF9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwM0MwMDAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfZmxhc2hfbm9uX292X2N0cmxfbG93dl9TIDE4CisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2ZsYXNoX2VuX2Rydl9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAyMDAwMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2ZsYXNoX2VuX3B3bV9tb2RlX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDEwMDAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfZmxhc2hfZW5fcGZtX2NvbXBfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDgwMDAKKworI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19mbGFzaF9lbl9zbHBfbW9kZV9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwNDAwMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2ZsYXNoX2VuX24xZmV0X3Jkc19tb2RlX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAyMDAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfZmxhc2hfZW5fbjJmZXRfcmRzX21vZGVfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDEwMDAKKworI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19mbGFzaF9lbl9wMWZldF9yZHNfbW9kZV9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDgwMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2ZsYXNoX2VuX3AyZmV0X3Jkc19tb2RlX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNDAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfZmxhc2hfZXh0X3NtcHNfbW9kZV9vdmVycmlkZV9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDIwMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2ZsYXNoX3AxZmV0X3NlbF9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMUUwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfZmxhc2hfcDFmZXRfc2VsX2xvd3ZfUyA1CisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2ZsYXNoX24xZmV0X3NlbF9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDFFCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfZmxhc2hfbjFmZXRfc2VsX2xvd3ZfUyAxCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMwX05BMTggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19GTEFTSF9EQ0RDX1BBUkFNRVRFUlMxIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2ZsYXNoX3AyZmV0X3NlbF9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEYwMDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzFfbWVtX2RjZGNfZmxhc2hfcDJmZXRfc2VsX2xvd3ZfUyAyOAorI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTMV9tZW1fZGNkY19mbGFzaF9uMmZldF9zZWxfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwRjAwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2ZsYXNoX24yZmV0X3NlbF9sb3d2X1MgMjQKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzFfbWVtX2RjZGNfZmxhc2hfcDFkcnZfc3RyX3NlbF9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwRjAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzFfbWVtX2RjZGNfZmxhc2hfcDFkcnZfc3RyX3NlbF9sb3d2X1MgMjAKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzFfbWVtX2RjZGNfZmxhc2hfbjFkcnZfc3RyX3NlbF9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMEYwMDAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzFfbWVtX2RjZGNfZmxhc2hfbjFkcnZfc3RyX3NlbF9sb3d2X1MgMTYKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzFfbWVtX2RjZGNfZmxhc2hfcDJkcnZfc3RyX3NlbF9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGMDAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzFfbWVtX2RjZGNfZmxhc2hfcDJkcnZfc3RyX3NlbF9sb3d2X1MgMTIKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzFfbWVtX2RjZGNfZmxhc2hfbjJkcnZfc3RyX3NlbF9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwRjAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzFfbWVtX2RjZGNfZmxhc2hfbjJkcnZfc3RyX3NlbF9sb3d2X1MgOAorI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTMV9tZW1fZGNkY19mbGFzaF9wMWZldF9ub25fb3ZfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBDMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2ZsYXNoX3AxZmV0X25vbl9vdl9sb3d2X1MgNgorI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTMV9tZW1fZGNkY19mbGFzaF9uMWZldF9ub25fb3ZfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAzMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2ZsYXNoX24xZmV0X25vbl9vdl9sb3d2X1MgNAorI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTMV9tZW1fZGNkY19mbGFzaF9wMmZldF9ub25fb3ZfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwQworCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2ZsYXNoX3AyZmV0X25vbl9vdl9sb3d2X1MgMgorI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTMV9tZW1fZGNkY19mbGFzaF9uMmZldF9ub25fb3ZfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMworCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2ZsYXNoX24yZmV0X25vbl9vdl9sb3d2X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjFQMl9PX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzIgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzJfbWVtX2RjZGNfZmxhc2hfcDFmZXRfc3RhZ2dlcl9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEMwMDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzJfbWVtX2RjZGNfZmxhc2hfcDFmZXRfc3RhZ2dlcl9sb3d2X1MgMzAKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzJfbWVtX2RjZGNfZmxhc2hfbjFmZXRfc3RhZ2dlcl9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMwMDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzJfbWVtX2RjZGNfZmxhc2hfbjFmZXRfc3RhZ2dlcl9sb3d2X1MgMjgKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzJfbWVtX2RjZGNfZmxhc2hfcDJmZXRfc3RhZ2dlcl9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBDMDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzJfbWVtX2RjZGNfZmxhc2hfcDJmZXRfc3RhZ2dlcl9sb3d2X1MgMjYKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzJfbWVtX2RjZGNfZmxhc2hfbjJmZXRfc3RhZ2dlcl9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAzMDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzJfbWVtX2RjZGNfZmxhc2hfbjJmZXRfc3RhZ2dlcl9sb3d2X1MgMjQKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzJfbWVtX2RjZGNfZmxhc2hfc2hvb3RfdGhydV9jdHJsX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwODAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzJfbWVtX2RjZGNfZmxhc2hfZW5fbmNvbXBfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDA0MDAwMDAKKworI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTMl9tZW1fZGNkY19mbGFzaF9lbl9uY29tcF9oaWJfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAyMDAwMDAKKworI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTMl9tZW1fZGNkY19mbGFzaF9uY29tcF90cmltX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAxRjAwMDAKKworI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTMl9tZW1fZGNkY19mbGFzaF9uY29tcF90cmltX2xvd3ZfUyAxNgorI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTMl9tZW1fZGNkY19mbGFzaF9uY29tcF9tYXNrX2RseV90cmltX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEYwMDAKKworI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTMl9tZW1fZGNkY19mbGFzaF9uY29tcF9tYXNrX2RseV90cmltX2xvd3ZfUyAxMgorI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTMl9tZW1fZGNkY19mbGFzaF9lbl9pbGltX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwODAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzJfbWVtX2RjZGNfZmxhc2hfZW5faWxpbV9oaWJfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA0MDAKKworI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTMl9tZW1fZGNkY19mbGFzaF9pbGltX3RyaW1fbG93dl9vdmVycmlkZV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDNGQworCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMyX21lbV9kY2RjX2ZsYXNoX2lsaW1fdHJpbV9sb3d2X292ZXJyaWRlX1MgMgorI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTMl9tZW1fZGNkY19mbGFzaF9pbGltX21hc2tfZGx5X3NlbF9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAzCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzJfbWVtX2RjZGNfZmxhc2hfaWxpbV9tYXNrX2RseV9zZWxfbG93dl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19GTEFTSF9EQ0RDX1BBUkFNRVRFUlMzIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMzX21lbV9kY2RjX2ZsYXNoX2VuX2FudGlfZ2xpdGNoX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwMDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzNfbWVtX2RjZGNfZmxhc2hfZW5faGlfY2xhbXBfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAwMDAKKworI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTM19tZW1fZGNkY19mbGFzaF9lbl9sb19jbGFtcF9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMDAwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMzX21lbV9kY2RjX2ZsYXNoX3JhbXBfaGd0X2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MUYwMDAwMDAKKworI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTM19tZW1fZGNkY19mbGFzaF9yYW1wX2hndF9sb3d2X1MgMjQKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzNfbWVtX2RjZGNfZmxhc2hfdmNsYW1waF90cmltX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDBFMDAwMDAKKworI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTM19tZW1fZGNkY19mbGFzaF92Y2xhbXBoX3RyaW1fbG93dl9TIDIxCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMzX21lbV9kY2RjX2ZsYXNoX3ZjbGFtcGxfdHJpbV9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMUMwMDAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzNfbWVtX2RjZGNfZmxhc2hfdmNsYW1wbF90cmltX2xvd3ZfUyAxOAorI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTM19tZW1fZGNkY19mbGFzaF92dHJpbV9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDNDMDAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzNfbWVtX2RjZGNfZmxhc2hfdnRyaW1fbG93dl9TIDE0CisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMzX21lbV9kY2RjX2ZsYXNoX3BmbV9yaXBwbGVfdHJpbV9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAzQzAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzNfbWVtX2RjZGNfZmxhc2hfcGZtX3JpcHBsZV90cmltX2xvd3ZfUyAxMAorI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTM19tZW1fZGNkY19mbGFzaF9zbHBfZHJ2X2RseV9zZWxfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDMwMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMzX21lbV9kY2RjX2ZsYXNoX3NscF9kcnZfZGx5X3NlbF9sb3d2X1MgOAorI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTM19tZW1fZGNkY19mbGFzaF9lbl9vdl9wcm90X2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDgwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzNfbWVtX2RjZGNfZmxhc2hfZW5fdXZfcHJvdF9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA0MAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMzX21lbV9kY2RjX2ZsYXNoX2VuX3RtdXhfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMjAKKworI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTM19OQTE5X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDFGCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzNfTkExOV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19GTEFTSF9EQ0RDX1BBUkFNRVRFUlM0IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlM0X21lbV9kY2RjX2ZsYXNoX3RtdXhfY3RybF9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzRfbWVtX2RjZGNfZmxhc2hfdG11eF9jdHJsX2xvd3ZfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fRkxBU0hfRENEQ19QQVJBTUVURVJTNSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTNV9tZW1fZGNkY19mbGFzaF9zcGFyZV9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzVfbWVtX2RjZGNfZmxhc2hfc3BhcmVfbG93dl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19GTEFTSF9EQ0RDX1BBUkFNRVRFUlM2IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlM2X2RjZGNfZmxhc2hfb3ZfcHJvdF9vdXRfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAwMDAwMDAKKworI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTNl9kY2RjX2ZsYXNoX3V2X3Byb3Rfb3V0X2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwMDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzZfTkEyMF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzRkZGRkZGRgorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlM2X05BMjBfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fUE1CSVNUX1BBUkFNRVRFUlMwIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9QTUJJU1RfUEFSQU1FVEVSUzBfbWVtX3BtX2Jpc3RfZW5fbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAwMDAwMDAKKworI2RlZmluZSBISUIxUDJfUE1CSVNUX1BBUkFNRVRFUlMwX21lbV9wbV9iaXN0X2N0cmxfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3RkZGRjgwMAorCisjZGVmaW5lIEhJQjFQMl9QTUJJU1RfUEFSQU1FVEVSUzBfbWVtX3BtX2Jpc3RfY3RybF9sb3d2X1MgMTEKKyNkZWZpbmUgSElCMVAyX1BNQklTVF9QQVJBTUVURVJTMF9OQTIxX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwN0ZGCisKKyNkZWZpbmUgSElCMVAyX1BNQklTVF9QQVJBTUVURVJTMF9OQTIxX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjFQMl9PX1BNQklTVF9QQVJBTUVURVJTMSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfUE1CSVNUX1BBUkFNRVRFUlMxX21lbV9wbV9iaXN0X3NwYXJlX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRjAwMDAKKworI2RlZmluZSBISUIxUDJfUE1CSVNUX1BBUkFNRVRFUlMxX21lbV9wbV9iaXN0X3NwYXJlX2xvd3ZfUyAxNgorI2RlZmluZSBISUIxUDJfUE1CSVNUX1BBUkFNRVRFUlMxX21lbV9wbXRlc3RfZW5fbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDgwMDAKKworI2RlZmluZSBISUIxUDJfUE1CSVNUX1BBUkFNRVRFUlMxX05BMjJfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDdGRkYKKworI2RlZmluZSBISUIxUDJfUE1CSVNUX1BBUkFNRVRFUlMxX05BMjJfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fUE1CSVNUX1BBUkFNRVRFUlMyIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9QTUJJU1RfUEFSQU1FVEVSUzJfbWVtX3BtdGVzdF90bXV4X2N0cmxfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRgorCisjZGVmaW5lIEhJQjFQMl9QTUJJU1RfUEFSQU1FVEVSUzJfbWVtX3BtdGVzdF90bXV4X2N0cmxfbG93dl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19QTUJJU1RfUEFSQU1FVEVSUzMgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX1BNQklTVF9QQVJBTUVURVJTM19tZW1fcG10ZXN0X3NwYXJlX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRjAwMDAKKworI2RlZmluZSBISUIxUDJfUE1CSVNUX1BBUkFNRVRFUlMzX21lbV9wbXRlc3Rfc3BhcmVfbG93dl9TIDE2CisjZGVmaW5lIEhJQjFQMl9QTUJJU1RfUEFSQU1FVEVSUzNfbWVtX3BtdGVzdF9sb2FkX3RyaW1fbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRTAwMAorCisjZGVmaW5lIEhJQjFQMl9QTUJJU1RfUEFSQU1FVEVSUzNfbWVtX3BtdGVzdF9sb2FkX3RyaW1fbG93dl9TIDEzCisjZGVmaW5lIEhJQjFQMl9QTUJJU1RfUEFSQU1FVEVSUzNfbWVtX3Jud2VsbF9jYWxpYl9lbl9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMTAwMAorCisjZGVmaW5lIEhJQjFQMl9QTUJJU1RfUEFSQU1FVEVSUzNfTkEyM19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEZGRgorCisjZGVmaW5lIEhJQjFQMl9QTUJJU1RfUEFSQU1FVEVSUzNfTkEyM19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19GTEFTSF9EQ0RDX1BBUkFNRVRFUlM4IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlM4X21lbV9lbl9mbGFzaF9zdXBfY29tcF9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDAwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlM4X21lbV9mbGFzaF9oaWdoX3N1cF90cmltX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N0MwMDAwMDAKKworI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTOF9tZW1fZmxhc2hfaGlnaF9zdXBfdHJpbV9sb3d2X1MgMjYKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzhfbWVtX2ZsYXNoX2xvd19zdXBfdHJpbV9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAzRTAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzhfbWVtX2ZsYXNoX2xvd19zdXBfdHJpbV9sb3d2X1MgMjEKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzhfTkEyNF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDFGRkZGRgorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlM4X05BMjRfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fQU5BX0RDRENfUEFSQU1FVEVSU19PVkVSUklERSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSU19PVkVSUklERV9yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZDMAorCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTX09WRVJSSURFX3Jlc2VydmVkX1MgNgorI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSU19PVkVSUklERV9tZW1fZGNkY19hbmFfZW5fc3VicmVnXzFwMnZfbG93dl9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAyMAorCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTX09WRVJSSURFX21lbV9kY2RjX2FuYV9lbl9zdWJyZWdfMXA4dl9sb3d2X292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDEwCisKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlNfT1ZFUlJJREVfbWVtX2RjZGNfYW5hX2lsaW1fdHJpbV9sb3d2X2VmY19vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwOAorCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTX09WRVJSSURFX21lbV9kY2RjX2FuYV9lbl9zbHBfbW9kZV9sb3d2X2ZzbV9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNAorCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTX09WRVJSSURFX21lbV9kY2RjX2FuYV9lbl9wd21fbW9kZV9sb3d2X2ZzbV9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMgorCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTX09WRVJSSURFX21lbV9kY2RjX2FuYV9lbl9sb3d2X2ZzbV9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fRkxBU0hfRENEQ19QQVJBTUVURVJTX09WRVJSSURFIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlNfT1ZFUlJJREVfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkMKKworI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTX09WRVJSSURFX3Jlc2VydmVkX1MgMgorI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTX09WRVJSSURFX21lbV9kY2RjX2ZsYXNoX2VuX2xvd3Zfb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIKKworI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTX09WRVJSSURFX21lbV9kY2RjX2ZsYXNoX2lsaW1fdHJpbV9sb3d2X292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19ESUdfRENEQ19WVFJJTV9DRkcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1ZUUklNX0NGR19yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRjAwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19WVFJJTV9DRkdfcmVzZXJ2ZWRfUyAyNAorI2RlZmluZSBISUIxUDJfRElHX0RDRENfVlRSSU1fQ0ZHX21lbV9kY2RjX2RpZ19ydW5fdnRyaW1fTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDBGQzAwMDAKKworI2RlZmluZSBISUIxUDJfRElHX0RDRENfVlRSSU1fQ0ZHX21lbV9kY2RjX2RpZ19ydW5fdnRyaW1fUyAxOAorI2RlZmluZSBISUIxUDJfRElHX0RDRENfVlRSSU1fQ0ZHX21lbV9kY2RjX2RpZ19kc2xwX3Z0cmltX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDNGMDAwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1ZUUklNX0NGR19tZW1fZGNkY19kaWdfZHNscF92dHJpbV9TIDEyCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19WVFJJTV9DRkdfbWVtX2RjZGNfZGlnX2xwZHNfdnRyaW1fTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBGQzAKKworI2RlZmluZSBISUIxUDJfRElHX0RDRENfVlRSSU1fQ0ZHX21lbV9kY2RjX2RpZ19scGRzX3Z0cmltX1MgNgorI2RlZmluZSBISUIxUDJfRElHX0RDRENfVlRSSU1fQ0ZHX1NwYXJlX1JXX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDNGCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1ZUUklNX0NGR19TcGFyZV9SV19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19ESUdfRENEQ19GU01fUEFSQU1FVEVSUyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfRElHX0RDRENfRlNNX1BBUkFNRVRFUlNfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRjgwMDAKKworI2RlZmluZSBISUIxUDJfRElHX0RDRENfRlNNX1BBUkFNRVRFUlNfcmVzZXJ2ZWRfUyAxNQorI2RlZmluZSBISUIxUDJfRElHX0RDRENfRlNNX1BBUkFNRVRFUlNfbWVtX2RjZGNfZGlnX2RzbHBfZW50ZXJfY290X3RvX3Z0cmltX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDA3MDAwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX0ZTTV9QQVJBTUVURVJTX21lbV9kY2RjX2RpZ19kc2xwX2VudGVyX2NvdF90b192dHJpbV9TIDEyCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19GU01fUEFSQU1FVEVSU19tZW1fZGNkY19kaWdfZHNscF9lbnRlcl92dHJpbV90b19zbGVlcF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEUwMAorCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19GU01fUEFSQU1FVEVSU19tZW1fZGNkY19kaWdfZHNscF9lbnRlcl92dHJpbV90b19zbGVlcF9TIDkKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX0ZTTV9QQVJBTUVURVJTX21lbV9kY2RjX2RpZ19kc2xwX2V4aXRfc2xlZXBfdG9fdnRyaW1fTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxQzAKKworI2RlZmluZSBISUIxUDJfRElHX0RDRENfRlNNX1BBUkFNRVRFUlNfbWVtX2RjZGNfZGlnX2RzbHBfZXhpdF9zbGVlcF90b192dHJpbV9TIDYKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX0ZTTV9QQVJBTUVURVJTX21lbV9kY2RjX2RpZ19kc2xwX2V4aXRfdnRyaW1fdG9fY290X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDM4CisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX0ZTTV9QQVJBTUVURVJTX21lbV9kY2RjX2RpZ19kc2xwX2V4aXRfdnRyaW1fdG9fY290X1MgMworI2RlZmluZSBISUIxUDJfRElHX0RDRENfRlNNX1BBUkFNRVRFUlNfbWVtX2RjZGNfZGlnX2RzbHBfZXhpdF9jb3RfdG9fcnVuX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA3CisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX0ZTTV9QQVJBTUVURVJTX21lbV9kY2RjX2RpZ19kc2xwX2V4aXRfY290X3RvX3J1bl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19BTkFfRENEQ19GU01fUEFSQU1FVEVSUyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfQU5BX0RDRENfRlNNX1BBUkFNRVRFUlNfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRjgKKworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfRlNNX1BBUkFNRVRFUlNfcmVzZXJ2ZWRfUyAzCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19GU01fUEFSQU1FVEVSU19tZW1fZGNkY19hbmFfZHNscF9leGl0X3NsZWVwX3RvX3J1bl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNworCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19GU01fUEFSQU1FVEVSU19tZW1fZGNkY19hbmFfZHNscF9leGl0X3NsZWVwX3RvX3J1bl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19TUkFNX1NLQV9MRE9fRlNNX1BBUkFNRVRFUlMgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX1NSQU1fU0tBX0xET19GU01fUEFSQU1FVEVSU19yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZDMAorCisjZGVmaW5lIEhJQjFQMl9TUkFNX1NLQV9MRE9fRlNNX1BBUkFNRVRFUlNfcmVzZXJ2ZWRfUyA2CisjZGVmaW5lIEhJQjFQMl9TUkFNX1NLQV9MRE9fRlNNX1BBUkFNRVRFUlNfbWVtX3NrYV9sZG9fZW5fdG9fc3JhbV9sZG9fZGlzX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDM4CisKKyNkZWZpbmUgSElCMVAyX1NSQU1fU0tBX0xET19GU01fUEFSQU1FVEVSU19tZW1fc2thX2xkb19lbl90b19zcmFtX2xkb19kaXNfUyAzCisjZGVmaW5lIEhJQjFQMl9TUkFNX1NLQV9MRE9fRlNNX1BBUkFNRVRFUlNfbWVtX3NyYW1fbGRvX2VuX3RvX3NrYV9sZG9fZGlzX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA3CisKKyNkZWZpbmUgSElCMVAyX1NSQU1fU0tBX0xET19GU01fUEFSQU1FVEVSU19tZW1fc3JhbV9sZG9fZW5fdG9fc2thX2xkb19kaXNfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fQkdBUF9EVVRZX0NZQ0xJTkdfRVhJVF9DRkcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX0JHQVBfRFVUWV9DWUNMSU5HX0VYSVRfQ0ZHX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkY4CisKKyNkZWZpbmUgSElCMVAyX0JHQVBfRFVUWV9DWUNMSU5HX0VYSVRfQ0ZHX3Jlc2VydmVkX1MgMworI2RlZmluZSBISUIxUDJfQkdBUF9EVVRZX0NZQ0xJTkdfRVhJVF9DRkdfbWVtX2JnYXBfZHV0eV9jeWNsaW5nX2V4aXRfdGltZV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNworCisjZGVmaW5lIEhJQjFQMl9CR0FQX0RVVFlfQ1lDTElOR19FWElUX0NGR19tZW1fYmdhcF9kdXR5X2N5Y2xpbmdfZXhpdF90aW1lX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjFQMl9PX0NNX09TQ18xNk1fQ09ORklHIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9DTV9PU0NfMTZNX0NPTkZJR19yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZDMDAwMAorCisjZGVmaW5lIEhJQjFQMl9DTV9PU0NfMTZNX0NPTkZJR19yZXNlcnZlZF9TIDE4CisjZGVmaW5lIEhJQjFQMl9DTV9PU0NfMTZNX0NPTkZJR19jbV9jbGtfZ29vZF8xNm0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDIwMDAwCisKKyNkZWZpbmUgSElCMVAyX0NNX09TQ18xNk1fQ09ORklHX21lbV9jbV9lbl9vc2NfMTZtIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAxMDAwMAorCisjZGVmaW5lIEhJQjFQMl9DTV9PU0NfMTZNX0NPTkZJR19tZW1fY21fb3NjXzE2bV90cmltX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGQzAwCisKKyNkZWZpbmUgSElCMVAyX0NNX09TQ18xNk1fQ09ORklHX21lbV9jbV9vc2NfMTZtX3RyaW1fUyAxMAorI2RlZmluZSBISUIxUDJfQ01fT1NDXzE2TV9DT05GSUdfbWVtX2NtX29zY18xNm1fc3BhcmVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAzRjAKKworI2RlZmluZSBISUIxUDJfQ01fT1NDXzE2TV9DT05GSUdfbWVtX2NtX29zY18xNm1fc3BhcmVfUyA0CisjZGVmaW5lIEhJQjFQMl9DTV9PU0NfMTZNX0NPTkZJR19tZW1fY21fb3NjX2VuX3NsaV8xNm0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA4CisKKyNkZWZpbmUgSElCMVAyX0NNX09TQ18xNk1fQ09ORklHX21lbV9jbV9zbGlfMTZtX3RyaW1fTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDcKKworI2RlZmluZSBISUIxUDJfQ01fT1NDXzE2TV9DT05GSUdfbWVtX2NtX3NsaV8xNm1fdHJpbV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19TT1BfU0VOU0VfVkFMVUUgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX1NPUF9TRU5TRV9WQUxVRV9yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkYwMAorCisjZGVmaW5lIEhJQjFQMl9TT1BfU0VOU0VfVkFMVUVfcmVzZXJ2ZWRfUyA4CisjZGVmaW5lIEhJQjFQMl9TT1BfU0VOU0VfVkFMVUVfc29wX3NlbnNlX3ZhbHVlX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEZGCisKKyNkZWZpbmUgSElCMVAyX1NPUF9TRU5TRV9WQUxVRV9zb3Bfc2Vuc2VfdmFsdWVfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fSElCX1JUQ19USU1FUl9MU1dfMVAyIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9ISUJfUlRDX1RJTUVSX0xTV18xUDJfaGliX3J0Y190aW1lcl9sc3dfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYKKworI2RlZmluZSBISUIxUDJfSElCX1JUQ19USU1FUl9MU1dfMVAyX2hpYl9ydGNfdGltZXJfbHN3X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjFQMl9PX0hJQl9SVENfVElNRVJfTVNXXzFQMiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfSElCX1JUQ19USU1FUl9NU1dfMVAyX2hpYl9ydGNfdGltZXJfbXN3X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGRkZGCisKKyNkZWZpbmUgSElCMVAyX0hJQl9SVENfVElNRVJfTVNXXzFQMl9oaWJfcnRjX3RpbWVyX21zd19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19ISUIxUDJfQkdBUF9UUklNX09WRVJSSURFUyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfSElCMVAyX0JHQVBfVFJJTV9PVkVSUklERVNfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkY4MDAwMDAKKworI2RlZmluZSBISUIxUDJfSElCMVAyX0JHQVBfVFJJTV9PVkVSUklERVNfcmVzZXJ2ZWRfUyAyMworI2RlZmluZSBISUIxUDJfSElCMVAyX0JHQVBfVFJJTV9PVkVSUklERVNfbWVtX2JnYXBfbWFnX3RyaW1fb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDA0MDAwMDAKKworI2RlZmluZSBISUIxUDJfSElCMVAyX0JHQVBfVFJJTV9PVkVSUklERVNfbWVtX2JnYXBfbWFnX3RyaW1fb3ZlcnJpZGVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAzRkMwMDAKKworI2RlZmluZSBISUIxUDJfSElCMVAyX0JHQVBfVFJJTV9PVkVSUklERVNfbWVtX2JnYXBfbWFnX3RyaW1fb3ZlcnJpZGVfUyAxNAorI2RlZmluZSBISUIxUDJfSElCMVAyX0JHQVBfVFJJTV9PVkVSUklERVNfbWVtX2JnYXBfdGVtcF90cmltX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAyMDAwCisKKyNkZWZpbmUgSElCMVAyX0hJQjFQMl9CR0FQX1RSSU1fT1ZFUlJJREVTX21lbV9iZ2FwX3RlbXBfdHJpbV9vdmVycmlkZV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMUZDMAorCisjZGVmaW5lIEhJQjFQMl9ISUIxUDJfQkdBUF9UUklNX09WRVJSSURFU19tZW1fYmdhcF90ZW1wX3RyaW1fb3ZlcnJpZGVfUyA2CisjZGVmaW5lIEhJQjFQMl9ISUIxUDJfQkdBUF9UUklNX09WRVJSSURFU19tZW1fYmdhcF9ydHJpbV9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAyMAorCisjZGVmaW5lIEhJQjFQMl9ISUIxUDJfQkdBUF9UUklNX09WRVJSSURFU19tZW1fYmdhcF9ydHJpbV9vdmVycmlkZV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxRgorCisjZGVmaW5lIEhJQjFQMl9ISUIxUDJfQkdBUF9UUklNX09WRVJSSURFU19tZW1fYmdhcF9ydHJpbV9vdmVycmlkZV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19ISUIxUDJfRUZVU0VfUkVBRF9SRUcwIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9ISUIxUDJfRUZVU0VfUkVBRF9SRUcwX0ZVU0VGQVJNX1JPV18xMl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gQ29ycmVzcG9uZHMgdG8gUk9XXzEyIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZVU0VGQVJNLiBbNzowXSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERDRENfRElHX0lMSU1fVFJJTV9MT1dWKDc6MCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzE1OjhdIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRENEQ19BTkFfSUxJTV9UUklNX0xPV1YoNzowKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbMjM6MTZdIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRENEQ19GTEFTSF9JTElNX1RSSU1fTE9XVig3OjApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFsyNDoyNF0gOiBEVEhFIFNIQSBESVNBQkxFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFsyNToyNV0gOiBEVEhFIERFUyBESVNBQkxFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFsyNjoyNl0gOiBEVEhFIEFFUyBESVNBQkxFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFszMToyN10gOiBIRF9CR19SVFJJTSAoNDowKQorCisjZGVmaW5lIEhJQjFQMl9ISUIxUDJfRUZVU0VfUkVBRF9SRUcwX0ZVU0VGQVJNX1JPV18xMl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19ISUIxUDJfRUZVU0VfUkVBRF9SRUcxIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9ISUIxUDJfRUZVU0VfUkVBRF9SRUcxX0ZVU0VGQVJNX1JPV18xM19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gQ29ycmVzcG9uZHMgdG8gUk9XXzEzIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGVVNFRkFSTS4gWzc6MF0gOiBIRF9CR19NQUdfVFJJTQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoNzowKSBbMTQ6OF0gOiBIRF9CR19URU1QX1RSSU0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKDY6MCkgWzE1OjE1XSA6IEdSRVlPVVQgRU5BQkxFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERVVFkgQ1lDTElORyBbMzE6MTZdIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzZXJ2ZWQvQ2hlY2tzdW0KKworI2RlZmluZSBISUIxUDJfSElCMVAyX0VGVVNFX1JFQURfUkVHMV9GVVNFRkFSTV9ST1dfMTNfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fSElCMVAyX1BPUl9URVNUX0NUUkwgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX0hJQjFQMl9QT1JfVEVTVF9DVFJMX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRjAwCisKKyNkZWZpbmUgSElCMVAyX0hJQjFQMl9QT1JfVEVTVF9DVFJMX3Jlc2VydmVkX1MgOAorI2RlZmluZSBISUIxUDJfSElCMVAyX1BPUl9URVNUX0NUUkxfbWVtX3ByY21fcG9yX3Rlc3RfY3RybF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRgorCisjZGVmaW5lIEhJQjFQMl9ISUIxUDJfUE9SX1RFU1RfQ1RSTF9tZW1fcHJjbV9wb3JfdGVzdF9jdHJsX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjFQMl9PX0hJQl9USU1FUl9TWU5DX0NBTElCX0NGRzAgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX0hJQl9USU1FUl9TWU5DX0NBTElCX0NGRzBfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRjAwMDAKKworI2RlZmluZSBISUIxUDJfSElCX1RJTUVSX1NZTkNfQ0FMSUJfQ0ZHMF9yZXNlcnZlZF9TIDE2CisjZGVmaW5lIEhJQjFQMl9ISUJfVElNRVJfU1lOQ19DQUxJQl9DRkcwX21lbV9jZmdfY2FsaWJfdGltZV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRkYwMAorCisjZGVmaW5lIEhJQjFQMl9ISUJfVElNRVJfU1lOQ19DQUxJQl9DRkcwX21lbV9jZmdfY2FsaWJfdGltZV9TIDgKKyNkZWZpbmUgSElCMVAyX0hJQl9USU1FUl9TWU5DX0NBTElCX0NGRzBfTlUxX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEZFCisKKyNkZWZpbmUgSElCMVAyX0hJQl9USU1FUl9TWU5DX0NBTElCX0NGRzBfTlUxX1MgMQorI2RlZmluZSBISUIxUDJfSElCX1RJTUVSX1NZTkNfQ0FMSUJfQ0ZHMF9tZW1fY2ZnX2NhbGliX3N0YXJ0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fSElCX1RJTUVSX1NZTkNfQ0FMSUJfQ0ZHMSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfSElCX1RJTUVSX1NZTkNfQ0FMSUJfQ0ZHMV9yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkYwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9ISUJfVElNRVJfU1lOQ19DQUxJQl9DRkcxX3Jlc2VydmVkX1MgMjAKKyNkZWZpbmUgSElCMVAyX0hJQl9USU1FUl9TWU5DX0NBTElCX0NGRzFfZmFzdF9jYWxpYl9jb3VudF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDBGRkZGRgorCisjZGVmaW5lIEhJQjFQMl9ISUJfVElNRVJfU1lOQ19DQUxJQl9DRkcxX2Zhc3RfY2FsaWJfY291bnRfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fSElCX1RJTUVSX1NZTkNfQ0ZHMiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfSElCX1RJTUVSX1NZTkNfQ0ZHMl9yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkUwMAorCisjZGVmaW5lIEhJQjFQMl9ISUJfVElNRVJfU1lOQ19DRkcyX3Jlc2VydmVkX1MgOQorI2RlZmluZSBISUIxUDJfSElCX1RJTUVSX1NZTkNfQ0ZHMl9tZW1fY2ZnX2hpYl91bmxvYWQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwCisKKyNkZWZpbmUgSElCMVAyX0hJQl9USU1FUl9TWU5DX0NGRzJfTlUxX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEZDCisKKyNkZWZpbmUgSElCMVAyX0hJQl9USU1FUl9TWU5DX0NGRzJfTlUxX1MgMgorI2RlZmluZSBISUIxUDJfSElCX1RJTUVSX1NZTkNfQ0ZHMl9tZW1fY2ZnX3RzZl9hZGogXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyCisKKyNkZWZpbmUgSElCMVAyX0hJQl9USU1FUl9TWU5DX0NGRzJfbWVtX2NmZ191cGRhdGVfdHNmIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fSElCX1RJTUVSX1NZTkNfVFNGX0FESl9WQUwgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX0hJQl9USU1FUl9TWU5DX1RTRl9BREpfVkFMX21lbV90c2ZfYWRqX3ZhbF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRgorCisjZGVmaW5lIEhJQjFQMl9ISUJfVElNRVJfU1lOQ19UU0ZfQURKX1ZBTF9tZW1fdHNmX2Fkal92YWxfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fSElCX1RJTUVSX1JUQ19HVFNfVElNRVNUQU1QX0xTVyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfSElCX1RJTUVSX1JUQ19HVFNfVElNRVNUQU1QX0xTV19ydGNfZ3RzX3RpbWVzdGFtcF9sc3dfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYKKworI2RlZmluZSBISUIxUDJfSElCX1RJTUVSX1JUQ19HVFNfVElNRVNUQU1QX0xTV19ydGNfZ3RzX3RpbWVzdGFtcF9sc3dfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fSElCX1RJTUVSX1JUQ19HVFNfVElNRVNUQU1QX01TVyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfSElCX1RJTUVSX1JUQ19HVFNfVElNRVNUQU1QX01TV19yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGMDAwMAorCisjZGVmaW5lIEhJQjFQMl9ISUJfVElNRVJfUlRDX0dUU19USU1FU1RBTVBfTVNXX3Jlc2VydmVkX1MgMTYKKyNkZWZpbmUgSElCMVAyX0hJQl9USU1FUl9SVENfR1RTX1RJTUVTVEFNUF9NU1dfcnRjX2d0c190aW1lc3RhbXBfbXN3X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGRkZGCisKKyNkZWZpbmUgSElCMVAyX0hJQl9USU1FUl9SVENfR1RTX1RJTUVTVEFNUF9NU1dfcnRjX2d0c190aW1lc3RhbXBfbXN3X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjFQMl9PX0hJQl9USU1FUl9SVENfV1VQX1RJTUVTVEFNUF9MU1cgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX0hJQl9USU1FUl9SVENfV1VQX1RJTUVTVEFNUF9MU1dfcnRjX3d1cF90aW1lc3RhbXBfbHN3X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGCisKKyNkZWZpbmUgSElCMVAyX0hJQl9USU1FUl9SVENfV1VQX1RJTUVTVEFNUF9MU1dfcnRjX3d1cF90aW1lc3RhbXBfbHN3X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjFQMl9PX0hJQl9USU1FUl9SVENfV1VQX1RJTUVTVEFNUF9NU1cgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX0hJQl9USU1FUl9SVENfV1VQX1RJTUVTVEFNUF9NU1dfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRjAwMDAKKworI2RlZmluZSBISUIxUDJfSElCX1RJTUVSX1JUQ19XVVBfVElNRVNUQU1QX01TV19yZXNlcnZlZF9TIDE2CisjZGVmaW5lIEhJQjFQMl9ISUJfVElNRVJfUlRDX1dVUF9USU1FU1RBTVBfTVNXX3J0Y193dXBfdGltZXN0YW1wX21zd19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRkZGRgorCisjZGVmaW5lIEhJQjFQMl9ISUJfVElNRVJfUlRDX1dVUF9USU1FU1RBTVBfTVNXX3J0Y193dXBfdGltZXN0YW1wX21zd19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19ISUJfVElNRVJfU1lOQ19XQUtFX09GRlNFVF9FUlIgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX0hJQl9USU1FUl9TWU5DX1dBS0VfT0ZGU0VUX0VSUl9yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRjAwMAorCisjZGVmaW5lIEhJQjFQMl9ISUJfVElNRVJfU1lOQ19XQUtFX09GRlNFVF9FUlJfcmVzZXJ2ZWRfUyAxMgorI2RlZmluZSBISUIxUDJfSElCX1RJTUVSX1NZTkNfV0FLRV9PRkZTRVRfRVJSX3d1cF9vZmZzZXRfZXJyb3JfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBGRkYKKworI2RlZmluZSBISUIxUDJfSElCX1RJTUVSX1NZTkNfV0FLRV9PRkZTRVRfRVJSX3d1cF9vZmZzZXRfZXJyb3JfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fSElCX1RJTUVSX1NZTkNfVFNGX0NVUlJfVkFMX0xTVyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfSElCX1RJTUVSX1NZTkNfVFNGX0NVUlJfVkFMX0xTV190c2ZfY3Vycl92YWxfbHN3X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGCisKKyNkZWZpbmUgSElCMVAyX0hJQl9USU1FUl9TWU5DX1RTRl9DVVJSX1ZBTF9MU1dfdHNmX2N1cnJfdmFsX2xzd19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19ISUJfVElNRVJfU1lOQ19UU0ZfQ1VSUl9WQUxfTVNXIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9ISUJfVElNRVJfU1lOQ19UU0ZfQ1VSUl9WQUxfTVNXX3RzZl9jdXJyX3ZhbF9tc3dfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYKKworI2RlZmluZSBISUIxUDJfSElCX1RJTUVSX1NZTkNfVFNGX0NVUlJfVkFMX01TV190c2ZfY3Vycl92YWxfbXN3X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUgSElCMVAyX09fQ01fU1BBUkUgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX0NNX1NQQVJFX0NNX1NQQVJFX09VVF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRjAwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9DTV9TUEFSRV9DTV9TUEFSRV9PVVRfUyAyNAorI2RlZmluZSBISUIxUDJfQ01fU1BBUkVfTUVNX0NNX1RFU1RfQ1RSTF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMEZGMDAwMAorCisjZGVmaW5lIEhJQjFQMl9DTV9TUEFSRV9NRU1fQ01fVEVTVF9DVFJMX1MgMTYKKyNkZWZpbmUgSElCMVAyX0NNX1NQQVJFX01FTV9DTV9TUEFSRV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRkZGRgorCisjZGVmaW5lIEhJQjFQMl9DTV9TUEFSRV9NRU1fQ01fU1BBUkVfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fUE9SUE9MX1NQQVJFIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9QT1JQT0xfU1BBUkVfTUVNX1BPUlBPTF9TUEFSRV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRgorCisjZGVmaW5lIEhJQjFQMl9QT1JQT0xfU1BBUkVfTUVNX1BPUlBPTF9TUEFSRV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19NRU1fRElHX0RDRENfQ0xLX0NPTkZJRyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfTUVNX0RJR19EQ0RDX0NMS19DT05GSUdfTUVNX0RJR19EQ0RDX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwCisKKyNkZWZpbmUgSElCMVAyX01FTV9ESUdfRENEQ19DTEtfQ09ORklHX01FTV9ESUdfRENEQ19DTEtfUExMR0VOX09GRl9USU1FX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEYwCisKKyNkZWZpbmUgSElCMVAyX01FTV9ESUdfRENEQ19DTEtfQ09ORklHX01FTV9ESUdfRENEQ19DTEtfUExMR0VOX09GRl9USU1FX1MgNAorI2RlZmluZSBISUIxUDJfTUVNX0RJR19EQ0RDX0NMS19DT05GSUdfTUVNX0RJR19EQ0RDX0NMS19QTExHRU5fT05fVElNRV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwRgorCisjZGVmaW5lIEhJQjFQMl9NRU1fRElHX0RDRENfQ0xLX0NPTkZJR19NRU1fRElHX0RDRENfQ0xLX1BMTEdFTl9PTl9USU1FX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjFQMl9PX01FTV9BTkFfRENEQ19DTEtfQ09ORklHIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9NRU1fQU5BX0RDRENfQ0xLX0NPTkZJR19NRU1fQU5BX0RDRENfQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAKKworI2RlZmluZSBISUIxUDJfTUVNX0FOQV9EQ0RDX0NMS19DT05GSUdfTUVNX0FOQV9EQ0RDX0NMS19QTExHRU5fT0ZGX1RJTUVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRjAKKworI2RlZmluZSBISUIxUDJfTUVNX0FOQV9EQ0RDX0NMS19DT05GSUdfTUVNX0FOQV9EQ0RDX0NMS19QTExHRU5fT0ZGX1RJTUVfUyA0CisjZGVmaW5lIEhJQjFQMl9NRU1fQU5BX0RDRENfQ0xLX0NPTkZJR19NRU1fQU5BX0RDRENfQ0xLX1BMTEdFTl9PTl9USU1FX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDBGCisKKyNkZWZpbmUgSElCMVAyX01FTV9BTkFfRENEQ19DTEtfQ09ORklHX01FTV9BTkFfRENEQ19DTEtfUExMR0VOX09OX1RJTUVfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fTUVNX0ZMQVNIX0RDRENfQ0xLX0NPTkZJRyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfTUVNX0ZMQVNIX0RDRENfQ0xLX0NPTkZJR19NRU1fRkxBU0hfRENEQ19DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMAorCisjZGVmaW5lIEhJQjFQMl9NRU1fRkxBU0hfRENEQ19DTEtfQ09ORklHX01FTV9GTEFTSF9EQ0RDX0NMS19QTExHRU5fT0ZGX1RJTUVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRjAKKworI2RlZmluZSBISUIxUDJfTUVNX0ZMQVNIX0RDRENfQ0xLX0NPTkZJR19NRU1fRkxBU0hfRENEQ19DTEtfUExMR0VOX09GRl9USU1FX1MgNAorI2RlZmluZSBISUIxUDJfTUVNX0ZMQVNIX0RDRENfQ0xLX0NPTkZJR19NRU1fRkxBU0hfRENEQ19DTEtfUExMR0VOX09OX1RJTUVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMEYKKworI2RlZmluZSBISUIxUDJfTUVNX0ZMQVNIX0RDRENfQ0xLX0NPTkZJR19NRU1fRkxBU0hfRENEQ19DTEtfUExMR0VOX09OX1RJTUVfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fTUVNX1BBX0RDRENfQ0xLX0NPTkZJRyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfTUVNX1BBX0RDRENfQ0xLX0NPTkZJR19NRU1fUEFfRENEQ19DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMAorCisjZGVmaW5lIEhJQjFQMl9NRU1fUEFfRENEQ19DTEtfQ09ORklHX01FTV9QQV9EQ0RDX0NMS19QTExHRU5fT0ZGX1RJTUVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRjAKKworI2RlZmluZSBISUIxUDJfTUVNX1BBX0RDRENfQ0xLX0NPTkZJR19NRU1fUEFfRENEQ19DTEtfUExMR0VOX09GRl9USU1FX1MgNAorI2RlZmluZSBISUIxUDJfTUVNX1BBX0RDRENfQ0xLX0NPTkZJR19NRU1fUEFfRENEQ19DTEtfUExMR0VOX09OX1RJTUVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMEYKKworI2RlZmluZSBISUIxUDJfTUVNX1BBX0RDRENfQ0xLX0NPTkZJR19NRU1fUEFfRENEQ19DTEtfUExMR0VOX09OX1RJTUVfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fTUVNX1NMRE9fVk5XQV9PVkVSUklERSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfTUVNX1NMRE9fVk5XQV9PVkVSUklERV9NRU1fU0xET19FTl9UT1BfVk5XQV9PVkVSUklERV9DVFJMIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMgorCisjZGVmaW5lIEhJQjFQMl9NRU1fU0xET19WTldBX09WRVJSSURFX01FTV9TTERPX0VOX1RPUF9WTldBX09WRVJSSURFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fTUVNX0JHQVBfRFVUWV9DWUNMSU5HX0VOQUJMRV9PVkVSUklERSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfTUVNX0JHQVBfRFVUWV9DWUNMSU5HX0VOQUJMRV9PVkVSUklERV9NRU1fQkdBUF9EVVRZX0NZQ0xJTkdfT1ZFUlJJREVfQ1RSTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIKKworI2RlZmluZSBISUIxUDJfTUVNX0JHQVBfRFVUWV9DWUNMSU5HX0VOQUJMRV9PVkVSUklERV9NRU1fQkdBUF9EVVRZX0NZQ0xJTkdfT1ZFUlJJREUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19NRU1fSElCX0ZTTV9ERUJVRyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfTUVNX0hJQl9GU01fREVCVUdfU1JBTV9QU19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDcwMAorCisjZGVmaW5lIEhJQjFQMl9NRU1fSElCX0ZTTV9ERUJVR19TUkFNX1BTX1MgOAorI2RlZmluZSBISUIxUDJfTUVNX0hJQl9GU01fREVCVUdfQU5BX0RDRENfUFNfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRjAKKworI2RlZmluZSBISUIxUDJfTUVNX0hJQl9GU01fREVCVUdfQU5BX0RDRENfUFNfUyA0CisjZGVmaW5lIEhJQjFQMl9NRU1fSElCX0ZTTV9ERUJVR19ESUdfRENEQ19QU19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwRgorCisjZGVmaW5lIEhJQjFQMl9NRU1fSElCX0ZTTV9ERUJVR19ESUdfRENEQ19QU19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19NRU1fU0xET19WTldBX1NXX0NUUkwgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX01FTV9TTERPX1ZOV0FfU1dfQ1RSTF9NRU1fU0xET19WTldBX1NXX0NUUkxfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwRkZGRkYKKworI2RlZmluZSBISUIxUDJfTUVNX1NMRE9fVk5XQV9TV19DVFJMX01FTV9TTERPX1ZOV0FfU1dfQ1RSTF9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19NRU1fU0xET19XRUFLX1BST0NFU1MgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX01FTV9TTERPX1dFQUtfUFJPQ0VTU19NRU1fU0xET19XRUFLX1BST0NFU1MgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19NRU1fUEFfRENEQ19PVl9VVl9TVEFUVVMgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX01FTV9QQV9EQ0RDX09WX1VWX1NUQVRVU19kY2RjX3BhX292X3Byb3Rfb3V0X2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19NRU1fQ01fVEVTVF9NT0RFIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9NRU1fQ01fVEVTVF9NT0RFX21lbV9jbV90ZXN0X21vZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxCisKKworCisKKyNlbmRpZiAvLyBfX0hXX0hJQjFQMl9IX18KZGlmZiAtLWdpdCBhL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2luYy9od19oaWIzcDMuaCBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2luYy9od19oaWIzcDMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MmNkZTViCi0tLSAvZGV2L251bGwKKysrIGIvZXh0L2hhbC90aS9jYzMyMjBzZGsvaW5jL2h3X2hpYjNwMy5oCkBAIC0wLDAgKzEsMTEzNiBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTYgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkIC0gaHR0cDovL3d3dy50aS5jb20vCisgKgorICogIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogIGFyZSBtZXQ6CisgKgorICogICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAgICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogICAgTmVpdGhlciB0aGUgbmFtZSBvZiBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgbm9yIHRoZSBuYW1lcyBvZgorICogICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqICBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqICBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqICBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiAgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRlZiBfX0hXX0hJQjNQM19IX18KKyNkZWZpbmUgX19IV19ISUIzUDNfSF9fCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgSElCM1AzIHJlZ2lzdGVyIG9mZnNldHMuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIzUDNfT19NRU1fSElCX1JFUSAgICAweDAwMDAwMDAwCisjZGVmaW5lIEhJQjNQM19PX01FTV9ISUJfUlRDX1RJTUVSX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDQKKworI2RlZmluZSBISUIzUDNfT19NRU1fSElCX1JUQ19USU1FUl9SRVNFVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDgKKworI2RlZmluZSBISUIzUDNfT19NRU1fSElCX1JUQ19USU1FUl9SRUFEIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwQworCisjZGVmaW5lIEhJQjNQM19PX01FTV9ISUJfUlRDX1RJTUVSX0xTVyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTAKKworI2RlZmluZSBISUIzUDNfT19NRU1fSElCX1JUQ19USU1FUl9NU1cgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDE0CisKKyNkZWZpbmUgSElCM1AzX09fTUVNX0hJQl9SVENfV0FLRV9FTiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTgKKworI2RlZmluZSBISUIzUDNfT19NRU1fSElCX1JUQ19XQUtFX0xTV19DT05GIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxQworCisjZGVmaW5lIEhJQjNQM19PX01FTV9ISUJfUlRDX1dBS0VfTVNXX0NPTkYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDIwCisKKyNkZWZpbmUgSElCM1AzX09fTUVNX0lOVF9PU0NfQ09ORiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMkMKKworI2RlZmluZSBISUIzUDNfT19NRU1fWFRBTF9PU0NfQ09ORiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMzQKKworI2RlZmluZSBISUIzUDNfT19NRU1fQkdBUF9QQVJBTUVURVJTMCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMzgKKworI2RlZmluZSBISUIzUDNfT19NRU1fQkdBUF9QQVJBTUVURVJTMSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwM0MKKworI2RlZmluZSBISUIzUDNfT19NRU1fSElCX0RFVEVDVElPTl9TVEFUVVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDQwCisKKyNkZWZpbmUgSElCM1AzX09fTUVNX0hJQl9NSVNDX0NPTlRST0xTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA0NAorCisjZGVmaW5lIEhJQjNQM19PX01FTV9ISUJfQ09ORklHIDB4MDAwMDAwNTAKKyNkZWZpbmUgSElCM1AzX09fTUVNX0hJQl9SVENfSVJRX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNTQKKworI2RlZmluZSBISUIzUDNfT19NRU1fSElCX1JUQ19JUlFfTFNXX0NPTkYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDU4CisKKyNkZWZpbmUgSElCM1AzX09fTUVNX0hJQl9SVENfSVJRX01TV19DT05GIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA1QworCisjZGVmaW5lIEhJQjNQM19PX01FTV9ISUJfVUFSVF9DT05GIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDQwMAorCisjZGVmaW5lIEhJQjNQM19PX01FTV9HUElPX1dBS0VfRU4gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNDA0CisKKyNkZWZpbmUgSElCM1AzX09fTUVNX0dQSU9fV0FLRV9DT05GIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDQwOAorCisjZGVmaW5lIEhJQjNQM19PX01FTV9QQURfT0VOX1JFVDMzX0NPTkYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNDBDCisKKyNkZWZpbmUgSElCM1AzX09fTUVNX1VBUlRfUlRTX09FTl9SRVQzM19DT05GIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDQxMAorCisjZGVmaW5lIEhJQjNQM19PX01FTV9KVEFHX0NPTkYgIDB4MDAwMDA0MTQKKyNkZWZpbmUgSElCM1AzX09fTUVNX0hJQl9SRUcwICAgMHgwMDAwMDQxOAorI2RlZmluZSBISUIzUDNfT19NRU1fSElCX1JFRzEgICAweDAwMDAwNDFDCisjZGVmaW5lIEhJQjNQM19PX01FTV9ISUJfUkVHMiAgIDB4MDAwMDA0MjAKKyNkZWZpbmUgSElCM1AzX09fTUVNX0hJQl9SRUczICAgMHgwMDAwMDQyNAorI2RlZmluZSBISUIzUDNfT19NRU1fSElCX1NFUVVFTkNFUl9DRkcwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDQ1QworCisjZGVmaW5lIEhJQjNQM19PX01FTV9ISUJfU0VRVUVOQ0VSX0NGRzEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNDYwCisKKyNkZWZpbmUgSElCM1AzX09fTUVNX0hJQl9NSVNDX0NPTkZJRyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA0NjQKKworI2RlZmluZSBISUIzUDNfT19NRU1fSElCX1dBS0VfU1RBVFVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDQ2OAorCisjZGVmaW5lIEhJQjNQM19PX01FTV9ISUJfTFBEU19HUElPX1NFTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA0NkMKKworI2RlZmluZSBISUIzUDNfT19NRU1fSElCX1NFUVVFTkNFUl9DRkcyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDQ3MAorCisjZGVmaW5lIEhJQjNQM19PX0hJQkFOQV9TUEFSRV9MT1dWIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDQ3NAorCisjZGVmaW5lIEhJQjNQM19PX0hJQl9UTVVYX0NUUkwgIDB4MDAwMDA0NzgKKyNkZWZpbmUgSElCM1AzX09fSElCXzFQMl8xUDhfTERPX1RSSU0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNDdDCisKKyNkZWZpbmUgSElCM1AzX09fSElCX0NPTVBfVFJJTSAgMHgwMDAwMDQ4MAorI2RlZmluZSBISUIzUDNfT19ISUJfRU5fVFMgICAgICAweDAwMDAwNDg0CisjZGVmaW5lIEhJQjNQM19PX0hJQl8xUDhWX0RFVF9FTiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA0ODgKKworI2RlZmluZSBISUIzUDNfT19ISUJfVkJBVF9NT05fRU4gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNDhDCisKKyNkZWZpbmUgSElCM1AzX09fSElCX05ISUJfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDQ5MAorCisjZGVmaW5lIEhJQjNQM19PX0hJQl9VQVJUX1JUU19TV19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNDk0CisKKworCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIzUDNfT19NRU1fSElCX1JFUSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIzUDNfTUVNX0hJQl9SRVFfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZFMDAKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9SRVFfcmVzZXJ2ZWRfUyA5CisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1JFUV9OVTFfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxRkMKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9SRVFfTlUxX1MgMgorI2RlZmluZSBISUIzUDNfTUVNX0hJQl9SRVFfbWVtX2hpYl9jbGtfZGlzYWJsZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIgIC8vIDEgLSBTcGVjaWZpZXMgdGhhdCB0aGUgSGliZXJhbnRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1vZGUgaXMgd2l0aG91dCBjbG9ja3MgOyAwIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3BlY2lmaWVkIHRoYXQgdGhlIEhpYmVybmF0ZSBtb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIHdpdGggY2xvY2tzIFRoaXMgcmVnaXN0ZXIgd2lsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZSByZXNldCBkdXJpbmcgSGliZXJuYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC1XTy1DbGtzIG1vZGUgKGJ1dCBub3QgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhpYmVybmF0ZS1XLUNsa3MgbW9kZSkuCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfUkVRX21lbV9oaWJfcmVxIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIFJlcXVlc3QgZm9yIGhpYmVybmF0ZSBtb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChUaGlzIGlzIGFuIGF1dG8tY2xlYXIgYml0KSA7IDAgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb25vdCByZXF1ZXN0IGZvciBoaWJlcm5hdGUgbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIHJlZ2lzdGVyIHdpbGwgYmUgcmVzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHVyaW5nIEhpYmVybmF0ZSAtV08tQ2xrcyBtb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChidXQgbm90IGR1cmluZyBIaWJlcm5hdGUtVy1DbGtzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1vZGUpLgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCM1AzX09fTUVNX0hJQl9SVENfVElNRVJfRU5BQkxFIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1JUQ19USU1FUl9FTkFCTEVfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkUKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9SVENfVElNRVJfRU5BQkxFX3Jlc2VydmVkX1MgMQorI2RlZmluZSBISUIzUDNfTUVNX0hJQl9SVENfVElNRVJfRU5BQkxFX21lbV9oaWJfcnRjX3RpbWVyX2VuYWJsZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBFbmFibGUgdGhlIFJUQyB0aW1lciB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFydCBydW5uaW5nIDsgMCAtIEtlZXAgdGhlIFJUQworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aW1lciBkaXNhYmxlZCBUaGlzIHJlZ2lzdGVyIHdpbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmUgcmVzZXQgZHVyaW5nIEhpYmVybmF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtV08tQ2xrcyBtb2RlIChidXQgbm90IGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBIaWJlcm5hdGUtVy1DbGtzIG1vZGUpLgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCM1AzX09fTUVNX0hJQl9SVENfVElNRVJfUkVTRVQgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfUlRDX1RJTUVSX1JFU0VUX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZFCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfUlRDX1RJTUVSX1JFU0VUX3Jlc2VydmVkX1MgMQorI2RlZmluZSBISUIzUDNfTUVNX0hJQl9SVENfVElNRVJfUkVTRVRfbWVtX2hpYl9ydGNfdGltZXJfcmVzZXQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gUmVzZXQgdGhlIFJUQyB0aW1lciA7IDAgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb25vdCByZXNldCB0aGUgUlRDIHRpbWVyLiBUaGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGFuIGF1dG8tY2xlYXIgYml0LiBUaGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyIHdpbGwgYmUgcmVzZXQgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhpYmVybmF0ZSAtV08tQ2xrcyBtb2RlIChidXQgbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGR1cmluZyBIaWJlcm5hdGUtVy1DbGtzIG1vZGUpLgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCM1AzX09fTUVNX0hJQl9SVENfVElNRVJfUkVBRCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIzUDNfTUVNX0hJQl9SVENfVElNRVJfUkVBRF9yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRQorCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1JUQ19USU1FUl9SRUFEX3Jlc2VydmVkX1MgMQorI2RlZmluZSBISUIzUDNfTUVNX0hJQl9SVENfVElNRVJfUkVBRF9tZW1faGliX3J0Y190aW1lcl9yZWFkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIExhdGNoIHRoZSBydW5uaW5nIFJUQyB0aW1lcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRvIGxvY2FsIHJlZ2lzdGVycy4gQWZ0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJvZ3JhbW1pbmcgdGhpcyBiaXQgdG8gMSwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEYvdyBjYW4gcmVhZCB0aGUgbGF0Y2hlZCBSVEMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGltZXIgdmFsdWVzIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTUVNX0hJQl9SVENfVElNRVJfTFNXIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNRU1fSElCX1JUQ19USU1FUl9NU1cuIEJlZm9yZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRi93IChBUFBTIG9yIE5XUCkgd2FudHMgdG8gcmVhZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgUlRDLVRpbWVyLCBpdCBoYXMgdG8gcHJvZ3JhbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGJpdCB0byAxLCB0aGVuIG9ubHkgcmVhZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTVNXIGFuZCBMU1cgdmFsdWVzLiBUaGlzIGlzIGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGF1dG8tY2xlYXIgYml0LiBUaGlzIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgYmUgcmVzZXQgZHVyaW5nIEhpYmVybmF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtV08tQ2xrcyBtb2RlIChidXQgbm90IGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBIaWJlcm5hdGUtVy1DbGtzIG1vZGUpLgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCM1AzX09fTUVNX0hJQl9SVENfVElNRVJfTFNXIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1JUQ19USU1FUl9MU1dfaGliX3J0Y190aW1lcl9sc3dfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIExvd2VyIDMyYiB2YWx1ZSBvZiB0aGUgbGF0Y2hlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSVEMtVGltZXIuCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfUlRDX1RJTUVSX0xTV19oaWJfcnRjX3RpbWVyX2xzd19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIzUDNfT19NRU1fSElCX1JUQ19USU1FUl9NU1cgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfUlRDX1RJTUVSX01TV19yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGMDAwMAorCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1JUQ19USU1FUl9NU1dfcmVzZXJ2ZWRfUyAxNgorI2RlZmluZSBISUIzUDNfTUVNX0hJQl9SVENfVElNRVJfTVNXX2hpYl9ydGNfdGltZXJfbXN3X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGRkZGICAvLyBVcHBlciAzMmIgdmFsdWUgb2YgdGhlIGxhdGNoZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUlRDLVRpbWVyLgorCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1JUQ19USU1FUl9NU1dfaGliX3J0Y190aW1lcl9tc3dfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCM1AzX09fTUVNX0hJQl9SVENfV0FLRV9FTiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIzUDNfTUVNX0hJQl9SVENfV0FLRV9FTl9yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRQorCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1JUQ19XQUtFX0VOX3Jlc2VydmVkX1MgMQorI2RlZmluZSBISUIzUDNfTUVNX0hJQl9SVENfV0FLRV9FTl9tZW1faGliX3J0Y193YWtlX2VuIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIEVuYWJsZSB0aGUgUlRDIHRpbWVyIGJhc2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdha2V1cCBkdXJpbmcgSGliZXJuYXRlIG1vZGUgOyAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0gRGlzYWJsZSB0aGUgUlRDIHRpbWVyIGJhc2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdha2V1cCBkdXJpbmcgSGliZXJuYXRlIG1vZGUgVGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciB3aWxsIGJlIHJlc2V0IGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBIaWJlcm5hdGUtV08tQ2xrcyBtb2RlIChidXQgbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGR1cmluZyBIaWJlcm5hdGUtVy1DbGtzIG1vZGUpLgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCM1AzX09fTUVNX0hJQl9SVENfV0FLRV9MU1dfQ09ORiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIzUDNfTUVNX0hJQl9SVENfV0FLRV9MU1dfQ09ORl9tZW1faGliX3J0Y193YWtlX2xzd19jb25mX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyBDb25maWd1cmF0aW9uIGZvciBSVEMtVGltZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2FrZXVwIChMb3dlciAzMmIgd29yZCkKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9SVENfV0FLRV9MU1dfQ09ORl9tZW1faGliX3J0Y193YWtlX2xzd19jb25mX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjNQM19PX01FTV9ISUJfUlRDX1dBS0VfTVNXX0NPTkYgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfUlRDX1dBS0VfTVNXX0NPTkZfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRjAwMDAKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9SVENfV0FLRV9NU1dfQ09ORl9yZXNlcnZlZF9TIDE2CisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1JUQ19XQUtFX01TV19DT05GX21lbV9oaWJfcnRjX3dha2VfbXN3X2NvbmZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZGRkYgIC8vIENvbmZpZ3VyYXRpb24gZm9yIFJUQy1UaW1lcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXYWtldXAgKFVwcGVyIDE2YiB3b3JkKQorCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1JUQ19XQUtFX01TV19DT05GX21lbV9oaWJfcnRjX3dha2VfbXN3X2NvbmZfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCM1AzX09fTUVNX0lOVF9PU0NfQ09ORiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIzUDNfTUVNX0lOVF9PU0NfQ09ORl9yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGMDAwMAorCisjZGVmaW5lIEhJQjNQM19NRU1fSU5UX09TQ19DT05GX3Jlc2VydmVkX1MgMTYKKyNkZWZpbmUgSElCM1AzX01FTV9JTlRfT1NDX0NPTkZfY21fY2xrX2dvb2RfMzJrX2ludCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDgwMDAgIC8vIDEgLSBJbnRlcm5hbCAzMmtIeiBPc2NpbGxhdG9yIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbGlkIDsgMCAtIEludGVybmFsIDMyaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvc2NpbGxhdG9yIGNsayBpcyBub3QgdmFsaWQKKworI2RlZmluZSBISUIzUDNfTUVNX0lOVF9PU0NfQ09ORl9tZW1fY21faW50b3NjXzMya19zcGFyZV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwN0UwMAorCisjZGVmaW5lIEhJQjNQM19NRU1fSU5UX09TQ19DT05GX21lbV9jbV9pbnRvc2NfMzJrX3NwYXJlX1MgOQorI2RlZmluZSBISUIzUDNfTUVNX0lOVF9PU0NfQ09ORl9tZW1fY21fZW5faW50b3NjXzMya19vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMCAgLy8gV2hlbiAxLCB0aGUgSU5UXzMyS19PU0NfRU4gY29tZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZnJvbSBiaXQgWzBdIG9mIHRoaXMgcmVnaXN0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVsc2UgY29tZXMgZnJvbSB0aGUgRlNNLiBUaGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyIHdpbGwgYmUgcmVzZXQgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhpYmVybmF0ZS1XTy1DbGtzIG1vZGUgKGJ1dCBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHVyaW5nIEhpYmVybmF0ZS1XLUNsa3MgbW9kZSkKKworI2RlZmluZSBISUIzUDNfTUVNX0lOVF9PU0NfQ09ORl9OVTEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDgwCisKKyNkZWZpbmUgSElCM1AzX01FTV9JTlRfT1NDX0NPTkZfbWVtX2NtX2ludG9zY18zMmtfdHJpbV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA3RQorCisjZGVmaW5lIEhJQjNQM19NRU1fSU5UX09TQ19DT05GX21lbV9jbV9pbnRvc2NfMzJrX3RyaW1fUyAxCisjZGVmaW5lIEhJQjNQM19NRU1fSU5UX09TQ19DT05GX21lbV9jbV9lbl9pbnRvc2NfMzJrIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gT3ZlcnJpZGUgdmFsdWUgZm9yIElOVF9PU0NfRU4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFwcGxpY2FibGUgb25seSB3aGVuIGJpdCBbM10gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyByZWdpc3RlciBpcyBzZXQgdG8gMS4KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjNQM19PX01FTV9YVEFMX09TQ19DT05GIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjNQM19NRU1fWFRBTF9PU0NfQ09ORl9yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkYwMDAwMAorCisjZGVmaW5lIEhJQjNQM19NRU1fWFRBTF9PU0NfQ09ORl9yZXNlcnZlZF9TIDIwCisjZGVmaW5lIEhJQjNQM19NRU1fWFRBTF9PU0NfQ09ORl9tZW1fY21fZW5fc2xpXzMya19vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDA4MDAwMCAgLy8gV2hlbiAxLCB0aGUgU0xJQ0VSX0VOIGNvbWVzIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0IFsxMF0gb2YgdGhpcyByZWdpc3RlciwgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb21lcyBmcm9tIHRoZSBGU00uCisKKyNkZWZpbmUgSElCM1AzX01FTV9YVEFMX09TQ19DT05GX21lbV9jbV9lbl94dGFsXzMya19vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDA0MDAwMCAgLy8gV2hlbiAxLCB0aGUgWFRBTF9FTiBjb21lcyBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdCBbMF0gb2YgdGhpcyByZWdpc3RlciwgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb21lcyBmcm9tIHRoZSBGU00uCisKKyNkZWZpbmUgSElCM1AzX01FTV9YVEFMX09TQ19DT05GX2NtX2Nsa19nb29kX3h0YWwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDIwMDAwICAvLyAxIC0gWFRBTCBDbGsgaXMgZ29vZCA7IDAgLSBYVEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENsayBpcyB5ZXQgdG8gYmUgdmFsaWQuCisKKyNkZWZpbmUgSElCM1AzX01FTV9YVEFMX09TQ19DT05GX21lbV9jbV94dGFsX3RyaW1fTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMUY4MDAKKworI2RlZmluZSBISUIzUDNfTUVNX1hUQUxfT1NDX0NPTkZfbWVtX2NtX3h0YWxfdHJpbV9TIDExCisjZGVmaW5lIEhJQjNQM19NRU1fWFRBTF9PU0NfQ09ORl9tZW1fY21fZW5fc2xpXzMyayBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA0MDAgIC8vIFNMSUNFUl9FTiBPdmVycmlkZSB2YWx1ZSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFwcGxpY2FibGUgb25seSB3aGVuIGJpdCBbMTldIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgcmVnaXN0ZXIgaXMgc2V0IHRvIDEuCisKKyNkZWZpbmUgSElCM1AzX01FTV9YVEFMX09TQ19DT05GX21lbV9jbV9zbGlfMzJrX3RyaW1fTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAzODAKKworI2RlZmluZSBISUIzUDNfTUVNX1hUQUxfT1NDX0NPTkZfbWVtX2NtX3NsaV8zMmtfdHJpbV9TIDcKKyNkZWZpbmUgSElCM1AzX01FTV9YVEFMX09TQ19DT05GX21lbV9jbV9mcmVmXzMya19zbGljZXJfaXRyaW1fTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNzAKKworI2RlZmluZSBISUIzUDNfTUVNX1hUQUxfT1NDX0NPTkZfbWVtX2NtX2ZyZWZfMzJrX3NsaWNlcl9pdHJpbV9TIDQKKyNkZWZpbmUgSElCM1AzX01FTV9YVEFMX09TQ19DT05GX21lbV9jbV9lbl9mcmVmXzMya19zbGljZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA4CisKKyNkZWZpbmUgSElCM1AzX01FTV9YVEFMX09TQ19DT05GX21lbV9jbV9lbl9pbnB1dF9zZW5zZV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNgorCisjZGVmaW5lIEhJQjNQM19NRU1fWFRBTF9PU0NfQ09ORl9tZW1fY21fZW5faW5wdXRfc2Vuc2VfUyAxCisjZGVmaW5lIEhJQjNQM19NRU1fWFRBTF9PU0NfQ09ORl9tZW1fY21fZW5feHRhbF8zMmsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyBYVEFMX0VOIE92ZXJyaWRlIHZhbHVlIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXBwbGljYWJsZSBvbmx5IHdoZW4gYml0IFsxOF0gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyByZWdpc3RlciBpcyBzZXQgdG8gMS4KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjNQM19PX01FTV9CR0FQX1BBUkFNRVRFUlMwIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjNQM19NRU1fQkdBUF9QQVJBTUVURVJTMF9yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkY4MDAwMAorCisjZGVmaW5lIEhJQjNQM19NRU1fQkdBUF9QQVJBTUVURVJTMF9yZXNlcnZlZF9TIDE5CisjZGVmaW5lIEhJQjNQM19NRU1fQkdBUF9QQVJBTUVURVJTMF9tZW1fZW5fc2VxIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDA0MDAwMAorCisjZGVmaW5lIEhJQjNQM19NRU1fQkdBUF9QQVJBTUVURVJTMF9tZW1fdmJvazRiZ19jb21wX3RyaW1fTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMUMwMDAKKworI2RlZmluZSBISUIzUDNfTUVNX0JHQVBfUEFSQU1FVEVSUzBfbWVtX3Zib2s0YmdfY29tcF90cmltX1MgMTQKKyNkZWZpbmUgSElCM1AzX01FTV9CR0FQX1BBUkFNRVRFUlMwX21lbV9iZ2FwX2VuX3ZiYXRfb2tfNGJnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMTAwMAorCisjZGVmaW5lIEhJQjNQM19NRU1fQkdBUF9QQVJBTUVURVJTMF9tZW1fYmdhcF9lbl92Ym9rNGJnX2NvbXAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwODAwCisKKyNkZWZpbmUgSElCM1AzX01FTV9CR0FQX1BBUkFNRVRFUlMwX21lbV9iZ2FwX2VuX3Zib2s0YmdfY29tcF9yZWYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNDAwCisKKyNkZWZpbmUgSElCM1AzX01FTV9CR0FQX1BBUkFNRVRFUlMwX21lbV9iZ2FwX3NwYXJlX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwM0ZGCisKKyNkZWZpbmUgSElCM1AzX01FTV9CR0FQX1BBUkFNRVRFUlMwX21lbV9iZ2FwX3NwYXJlX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjNQM19PX01FTV9CR0FQX1BBUkFNRVRFUlMxIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjNQM19NRU1fQkdBUF9QQVJBTUVURVJTMV9yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhFMDAwMDAwMAorCisjZGVmaW5lIEhJQjNQM19NRU1fQkdBUF9QQVJBTUVURVJTMV9yZXNlcnZlZF9TIDI5CisjZGVmaW5lIEhJQjNQM19NRU1fQkdBUF9QQVJBTUVURVJTMV9tZW1fYmdhcF9hY3RfaXJlZl9pdHJpbV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxRjAwMDAwMAorCisjZGVmaW5lIEhJQjNQM19NRU1fQkdBUF9QQVJBTUVURVJTMV9tZW1fYmdhcF9hY3RfaXJlZl9pdHJpbV9TIDI0CisjZGVmaW5lIEhJQjNQM19NRU1fQkdBUF9QQVJBTUVURVJTMV9tZW1fYmdhcF9lbl9hY3RfaXJlZiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDgKKworI2RlZmluZSBISUIzUDNfTUVNX0JHQVBfUEFSQU1FVEVSUzFfbWVtX2JnYXBfZW5fdjJpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNAorCisjZGVmaW5lIEhJQjNQM19NRU1fQkdBUF9QQVJBTUVURVJTMV9tZW1fYmdhcF9lbl9jYXBfc3cgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyCisKKyNkZWZpbmUgSElCM1AzX01FTV9CR0FQX1BBUkFNRVRFUlMxX21lbV9iZ2FwX2VuIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCM1AzX09fTUVNX0hJQl9ERVRFQ1RJT05fU1RBVFVTIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX0RFVEVDVElPTl9TVEFUVVNfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGODAKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9ERVRFQ1RJT05fU1RBVFVTX3Jlc2VydmVkX1MgNworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9ERVRFQ1RJT05fU1RBVFVTX2hpYl9mb3JjZWRfYW5hX3N0YXR1cyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNDAgIC8vIDEgLSAxLjggViBzdXBwbHkgZm9yY2VkIG1vZGUuCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfREVURUNUSU9OX1NUQVRVU19oaWJfZm9yY2VkX2ZsYXNoX3N0YXR1cyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDQgIC8vIDEgLSAzLjMgViBzdXBwbHkgZm9yY2VkIG1vZGUgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZsYXNoIHN1cHBseQorCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX0RFVEVDVElPTl9TVEFUVVNfaGliX2V4dF9jbGtfZGV0X291dF9zdGF0dXMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyICAvLyAxIC0gRm9yY2VkIGNsb2NrIG1vZGUKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9ERVRFQ1RJT05fU1RBVFVTX2hpYl94dGFsX2RldF9vdXRfc3RhdHVzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIFhUQUwgY2xvY2sgbW9kZQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCM1AzX09fTUVNX0hJQl9NSVNDX0NPTlRST0xTIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX01JU0NfQ09OVFJPTFNfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkY4MDAKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9NSVNDX0NPTlRST0xTX3Jlc2VydmVkX1MgMTEKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfTUlTQ19DT05UUk9MU19tZW1faGliX2VuX3Bva19wb3JfY29tcCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA0MDAKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9NSVNDX0NPTlRST0xTX21lbV9oaWJfZW5fcG9rX3Bvcl9jb21wX3JlZiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAyMDAKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9NSVNDX0NPTlRST0xTX21lbV9oaWJfcG9rX3Bvcl9jb21wX3RyaW1fTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxQzAKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9NSVNDX0NPTlRST0xTX21lbV9oaWJfcG9rX3Bvcl9jb21wX3RyaW1fUyA2CisjZGVmaW5lIEhJQjNQM19NRU1fSElCX01JU0NfQ09OVFJPTFNfTlUxIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAyMAorCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX01JU0NfQ09OVFJPTFNfbWVtX2hpYl9mbGFzaF9kZXRfZW4gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDEwCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfTUlTQ19DT05UUk9MU19tZW1faGliX2VuX3RtdXggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIzUDNfT19NRU1fSElCX0NPTkZJRyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIzUDNfTUVNX0hJQl9DT05GSUdfVE9QX01VWF9DVFJMX1NPUF9TUElPX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGMDAwMDAwCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfQ09ORklHX1RPUF9NVVhfQ1RSTF9TT1BfU1BJT19TIDI0CisjZGVmaW5lIEhJQjNQM19NRU1fSElCX0NPTkZJR19FTl9BTkFfRElHX1NIQVJFRDMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDgwMDAwICAvLyAxIC0gRW5hYmxlIFZERF9GTEFTSF9JTkRQX1BBRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgZGlnaXRhbCBwYXRoIChTSEFSRUQ0KSA7IDAgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEaXNhYmxlIFZERF9GTEFTSF9JTkRQX1BBRCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGlnaXRhbCBwYXRoIChTSEFSRUQ0KSA7IEJlZm9yZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcm9ncmFtbWluZyB0aGlzIGJpdCB0byAxLCBlbnN1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCB0aGUgZGV2aWNlIGlzIGluIEZPUkNFRCAzLjMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3VwcGx5IE1vZGUsIHdoaWNoIGNhbiBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmZlcnJlZCBmcm9tIHRoZSByZWdpc3RlciA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1FTV9ISUJfREVURUNUSU9OX1NUQVRVUyA6IDB4MDA0MAorCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX0NPTkZJR19FTl9BTkFfRElHX1NIQVJFRDIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDQwMDAwICAvLyAxIC0gRW5hYmxlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBWRERfRkJfR1BJT19NVVhfUEFEIGZvciBkaWdpdGFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBhdGggKFNIQVJFRDMpIDsgMCAtIERpc2FibGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFZERF9GQl9HUElPX01VWF9QQUQgZm9yIGRpZ2l0YWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGF0aCAoU0hBUkVEMykgOyBUaGlzIHBpbiBjYW4gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCBvbmx5IGluIG1vZGVzIG90aGVyIHRoYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU09QKCIxMTEiKQorCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX0NPTkZJR19FTl9BTkFfRElHX1NIQVJFRDEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDIwMDAwICAvLyAxIC0gRW5hYmxlIHRoZSBQTV9URVNUX1BBRCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGlnaXRhbCBHUElPIHBhdGggKFNIQVJFRDIpIDsgMCAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERpc2FibGUgdGhlIFBNX1RFU1RfUEFEIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkaWdpdGFsIEdQSU8gcGF0aCAoU0hBUkVEMikgVGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwaW4gY2FuIGJlIHVzZWQgZm9yIGRpZ2l0YWwgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbiBtb2RlcyBvdGhlciB0aGVuIFNPUC0xMTEKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9DT05GSUdfRU5fQU5BX0RJR19TSEFSRUQwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAxMDAwMCAgLy8gMSAtIEVuYWJsZSB0aGUgWFRBTF9OIHBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkaWdpdGFsIEdQSU8gcGF0aCAoU0hBUkVEMSk7IDAgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEaXNhYmxlIHRoZSBYVEFMX04gcGluIGRpZ2l0YWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTyBwYXRoIChTSEFSRUQxKS4gQmVmb3JlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByb2dyYW1taW5nIHRoaXMgYml0IHRvIDEsIGVuc3VyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGF0IHRoZSBkZXZpY2UgaXMgaW4gRk9SQ0VEIENMSworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNb2RlLCB3aGljaCBjYW4gaW5mZXJyZWQgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNRU1fSElCX0RFVEVDVElPTl9TVEFUVVMgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAweDAwNDAuCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfQ09ORklHX21lbV9oaWJfeHRhbF9lbmFibGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwICAvLyAxIC0gRW5hYmxlIHRoZSBYVEFMIENsb2NrIDsgMCAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvbm90IGVuYWJsZSB0aGUgWFRBTCBDbG9jay4gVGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiaXQgaGFzIHRvIGJlIHByb2dyYW1tZWQgdG8gMSAoYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQVBQUyBEZXZpbml0IEYvdyksIGR1cmluZyBleGl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZyb20gT0ZGIG9yIEhpYl93b19jbGtzIG1vZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhZnRlciBjaGVja2luZyBpZiB0aGUgc2xvd19jbGsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbW9kZSBpcyBYVEFMX0NMSyBtb2RlLiBPbmNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZWQgdGhlIFhUQUwgd2lsbCBiZSBkaXNhYmxlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvbmx5IGFmdGVyIGVudGVyaW5nIEhJQl9XT19DTEtTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1vZGUuIFRoaXMgcmVnaXN0ZXIgd2lsbCBiZSByZXNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkdXJpbmcgSGliZXJuYXRlIC1XTy1DbGtzIG1vZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKGJ1dCBub3QgZHVyaW5nIEhpYmVybmF0ZS1XLUNsa3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbW9kZSkuCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIzUDNfT19NRU1fSElCX1JUQ19JUlFfRU5BQkxFIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1JUQ19JUlFfRU5BQkxFX0hJQl9SVENfSVJRX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBFbmFibGUgdGhlIEhJQiBSVEMgLSBJUlEgOyAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0gRGlzYWJsZSB0aGUgSElCIFJUQyAtIElSUQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCM1AzX09fTUVNX0hJQl9SVENfSVJRX0xTV19DT05GIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1JUQ19JUlFfTFNXX0NPTkZfSElCX1JUQ19JUlFfTFNXX0NPTkZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIENvbmZpZ3VyYXRpb24gZm9yIExTVyBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUlRDLVRpbWVzdGFtcCBhdCB3aGljaCBpbnRlcnJ1cHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmVlZCB0byBiZSBnZW5lcmF0ZWQKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9SVENfSVJRX0xTV19DT05GX0hJQl9SVENfSVJRX0xTV19DT05GX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjNQM19PX01FTV9ISUJfUlRDX0lSUV9NU1dfQ09ORiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIzUDNfTUVNX0hJQl9SVENfSVJRX01TV19DT05GX0hJQl9SVENfSVJRX01TV19DT05GX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGRkZGICAvLyBDb25maWd1cmF0aW9uIGZvciBNU1cgb2YgdGhyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJUQy1UaW1lc3RhbXAgYXQgd2hpY2ggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVycnVwdCBuZWVkIHRvIGJlIGdlbmVyYXRlZAorCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1JUQ19JUlFfTVNXX0NPTkZfSElCX1JUQ19JUlFfTVNXX0NPTkZfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCM1AzX09fTUVNX0hJQl9VQVJUX0NPTkYgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfVUFSVF9DT05GX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZFCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfVUFSVF9DT05GX3Jlc2VydmVkX1MgMQorI2RlZmluZSBISUIzUDNfTUVNX0hJQl9VQVJUX0NPTkZfbWVtX2hpYl91YXJ0X3dha2VfZW4gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gRW5hYmxlIHRoZSBVQVJULUF1dG9ub21vdXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbW9kZSB3YWtldXAgZHVyaW5nIEhpYmVybmF0ZSBtb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDsgVGhpcyBpcyBhbiBhdXRvLWNsZWFyIGJpdCwgb25jZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcm9ncmFtbWVkIHRvIDEsIGl0IHdpbGwgbGF0Y2hlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRvIGFuIGludGVybmFsIHJlZ2lzdGVyIHdoaWNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbWFpbiBhc3NlcnRlZCB1bnRpbCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSGliLXdha2V1cCBpcyBpbml0aWF0ZWQuCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIzUDNfT19NRU1fR1BJT19XQUtFX0VOIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjNQM19NRU1fR1BJT19XQUtFX0VOX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRjAwCisKKyNkZWZpbmUgSElCM1AzX01FTV9HUElPX1dBS0VfRU5fcmVzZXJ2ZWRfUyA4CisjZGVmaW5lIEhJQjNQM19NRU1fR1BJT19XQUtFX0VOX21lbV9ncGlvX3dha2VfZW5fTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkYgIC8vIDEgLSBFbmFibGUgdGhlIEdQSU8tQXV0b25vbW91cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtb2RlIHdha2V1cCBkdXJpbmcgSGliZXJuYXRlIG1vZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOyBUaGlzIGlzIGFuIGF1dG8tY2xlYXIgYml0LCBvbmNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByb2dyYW1tZWQgdG8gMSwgaXQgd2lsbCBsYXRjaGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludG8gYW4gaW50ZXJuYWwgcmVnaXN0ZXIgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVtYWluIGFzc2VydGVkIHVudGlsIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBIaWItd2FrZXVwIGlzIGluaXRpYXRlZC4KKworI2RlZmluZSBISUIzUDNfTUVNX0dQSU9fV0FLRV9FTl9tZW1fZ3Bpb193YWtlX2VuX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjNQM19PX01FTV9HUElPX1dBS0VfQ09ORiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIzUDNfTUVNX0dQSU9fV0FLRV9DT05GX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkYwMDAwCisKKyNkZWZpbmUgSElCM1AzX01FTV9HUElPX1dBS0VfQ09ORl9yZXNlcnZlZF9TIDE2CisjZGVmaW5lIEhJQjNQM19NRU1fR1BJT19XQUtFX0NPTkZfbWVtX2dwaW9fd2FrZV9jb25mX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGRkZGICAvLyBDb25maWd1cmF0aW9uIHRvIHNheSB3aGV0aGVyIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPIHdha2V1cCBoYXMgdG8gaGFwcGVuIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIExldmVsMCBvciBmYWxsaW5nLWVkZ2UgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnaXZlbiBncm91cC4g4oCcMDDigD8g4oCTIExldmVsMCDigJwwMeKAPyDigJMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGV2ZWwxIOKAnDEw4oA/LSBGYWxsLWVkZ2Ug4oCcMTHigD8tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJpc2UtZWRnZSBbMTowXSDigJMgQ29uZiBmb3IgR1BJTzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzM6Ml0g4oCTIENvbmYgZm9yIEdQSU8xIFs1OjRdIOKAkworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb25mIGZvciBHUElPMiBbNzo2XSDigJMgQ29uZiBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTzMgWzk6OF0g4oCTIENvbmYgZm9yIEdQSU80CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFsxMToxMF0g4oCTIENvbmYgZm9yIEdQSU81IFsxMzoxMl0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g4oCTIENvbmYgZm9yIEdQSU82CisKKyNkZWZpbmUgSElCM1AzX01FTV9HUElPX1dBS0VfQ09ORl9tZW1fZ3Bpb193YWtlX2NvbmZfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCM1AzX09fTUVNX1BBRF9PRU5fUkVUMzNfQ09ORiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIzUDNfTUVNX1BBRF9PRU5fUkVUMzNfQ09ORl9tZW1fcGFkX29lbl9yZXQzM19vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNCAgLy8gMSAtIE92ZXJyaWRlIHRoZSBPRU4zMyBhbmQgUkVUMzMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udHJvbHMgb2YgR1BJT3MgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNPUC1Cb290ZGVidWcgbW9kZSA7IDAgLSBEb25vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVycmlkZSB0aGUgT0VOMzMgYW5kIFJFVDMzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRyb2xzIG9mIEdQSU9zIGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTT1AtQm9vdGRlYnVnIG1vZGUKKworI2RlZmluZSBISUIzUDNfTUVNX1BBRF9PRU5fUkVUMzNfQ09ORl9QQURfT0VOMzNfQ09ORiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIKKworI2RlZmluZSBISUIzUDNfTUVNX1BBRF9PRU5fUkVUMzNfQ09ORl9QQURfUkVUMzNfQ09ORiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjNQM19PX01FTV9VQVJUX1JUU19PRU5fUkVUMzNfQ09ORiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIzUDNfTUVNX1VBUlRfUlRTX09FTl9SRVQzM19DT05GX21lbV91YXJ0X25ydHNfb2VuX3JldDMzX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA0ICAvLyAxIC0gT3ZlcnJpZGUgdGhlIE9FTjMzIGFuZCBSRVQzMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250cm9scyBvZiBVQVJUIE5SVFMgR1BJTyBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU09QLUJvb3RkZWJ1ZyBtb2RlIDsgMCAtIERvbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG92ZXJyaWRlIHRoZSBPRU4zMyBhbmQgUkVUMzMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udHJvbHMgb2YgVUFSVCBOUlRTIEdQSU8gZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNPUC1Cb290ZGVidWcgbW9kZQorCisjZGVmaW5lIEhJQjNQM19NRU1fVUFSVF9SVFNfT0VOX1JFVDMzX0NPTkZfUEFEX1VBUlRfUlRTX09FTjMzX0NPTkYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyCisKKyNkZWZpbmUgSElCM1AzX01FTV9VQVJUX1JUU19PRU5fUkVUMzNfQ09ORl9QQURfVUFSVF9SVFNfUkVUMzNfQ09ORiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjNQM19PX01FTV9KVEFHX0NPTkYgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCM1AzX01FTV9KVEFHX0NPTkZfbWVtX2p0YWcxX29lbl9yZXQzM19vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDIwMAorCisjZGVmaW5lIEhJQjNQM19NRU1fSlRBR19DT05GX21lbV9qdGFnMF9vZW5fcmV0MzNfb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAKKworI2RlZmluZSBISUIzUDNfTUVNX0pUQUdfQ09ORl9QQURfSlRBRzFfUlRTX09FTjMzX0NPTkYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA4CisKKyNkZWZpbmUgSElCM1AzX01FTV9KVEFHX0NPTkZfUEFEX0pUQUcxX1JUU19SRVQzM19DT05GIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNAorCisjZGVmaW5lIEhJQjNQM19NRU1fSlRBR19DT05GX1BBRF9KVEFHMF9SVFNfT0VOMzNfQ09ORiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIKKworI2RlZmluZSBISUIzUDNfTUVNX0pUQUdfQ09ORl9QQURfSlRBRzBfUlRTX1JFVDMzX0NPTkYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIzUDNfT19NRU1fSElCX1JFRzAgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfUkVHMF9tZW1faGliX3JlZzBfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9SRUcwX21lbV9oaWJfcmVnMF9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIzUDNfT19NRU1fSElCX1JFRzEgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfUkVHMV9tZW1faGliX3JlZzFfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9SRUcxX21lbV9oaWJfcmVnMV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIzUDNfT19NRU1fSElCX1JFRzIgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfUkVHMl9tZW1faGliX3JlZzJfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9SRUcyX21lbV9oaWJfcmVnMl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIzUDNfT19NRU1fSElCX1JFRzMgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfUkVHM19tZW1faGliX3JlZzNfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9SRUczX21lbV9oaWJfcmVnM19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIzUDNfT19NRU1fSElCX1NFUVVFTkNFUl9DRkcwIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1NFUVVFTkNFUl9DRkcwX21lbV9iZGNfZXYwX3RvX2V2MV90aW1lX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkYwMDAwICAvLyBDb25maWd1cmF0aW9uIGZvciB0aGUgbnVtYmVyIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNsb3ctY2xrcyBiZXR3ZWVuIGRlLWFzc2VydGlvbiBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFTl9CR18zUDNWIHRvIGFzc2VydGlvbiBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFTl9CR18zUDNWCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfU0VRVUVOQ0VSX0NGRzBfbWVtX2JkY19ldjBfdG9fZXYxX3RpbWVfUyAxNgorI2RlZmluZSBISUIzUDNfTUVNX0hJQl9TRVFVRU5DRVJfQ0ZHMF9OVTEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDA4MDAwCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfU0VRVUVOQ0VSX0NGRzBfbWVtX2JkY19ldjNfdG9fZXY0X3RpbWVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDYwMDAgIC8vIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBudW1iZXIgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2xvdy1jbGtzIGJldHdlZW4gYXNzZXJ0aW9uIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVOX0NPTVBfM1AzViBhbmQgYXNzZXJ0aW9uIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVOX0NPTVBfTEFUQ0hfM1AzVgorCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1NFUVVFTkNFUl9DRkcwX21lbV9iZGNfZXYzX3RvX2V2NF90aW1lX1MgMTMKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfU0VRVUVOQ0VSX0NGRzBfbWVtX2JkY19ldjJfdG9fZXYzX3RpbWVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDE4MDAgIC8vIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBudW1iZXIgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2xvdy1jbGtzIGJldHdlZW4gYXNzZXJ0aW9uIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChFTl9DQVBfU1dfM1AzVixFTl9DT01QX1JFRikgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc2VydGlvbiBvZiAoRU5fQ09NUF8zUDNWKQorCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1NFUVVFTkNFUl9DRkcwX21lbV9iZGNfZXYyX3RvX2V2M190aW1lX1MgMTEKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfU0VRVUVOQ0VSX0NGRzBfbWVtX2JkY19ldjFfdG9fZXYyX3RpbWVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA2MDAgIC8vIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBudW1iZXIgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2xvdy1jbGtzIGJldHdlZW4gYXNzZXJ0aW9uIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChFTl9CR18zUDNWKSBhbmQgYXNzZXJ0aW9uIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChFTl9DQVBfU1dfM1AzViwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRU5fQ09NUF9SRUZfM1AzVikKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9TRVFVRU5DRVJfQ0ZHMF9tZW1fYmRjX2V2MV90b19ldjJfdGltZV9TIDkKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfU0VRVUVOQ0VSX0NGRzBfbWVtX2VuX2NydWRlX3JlZl9jb21wIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMAorCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1NFUVVFTkNFUl9DRkcwX21lbV9lbl92Ym9rNGJnX3JlZl9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA4MCAgLy8gMSAtIEVOX1ZCT0s0QkdfUkVGIGNvbWVzIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0WzEwXSBvZiB0aGUgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTUVNX0JHQVBfUEFSQU1FVEVSUzAgWzB4MDAzOF0uIDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLSBFTl9WQk9LNEJHX1JFRiBjb21lcyBkaXJlY3RseQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmcm9tIHRoZSBIaWItU2VxdWVuY2VyLgorCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1NFUVVFTkNFUl9DRkcwX21lbV9lbl92Ym9rNGJnX2NvbXBfb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNDAgIC8vIDEgLSBFTl9WQk9LNEJHIGNvbWVzIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0WzExXSBvZiB0aGUgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTUVNX0JHQVBfUEFSQU1FVEVSUzAgWzB4MDAzOF0uIDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLSBFTl9WQk9LNEJHIGNvbWVzIGRpcmVjdGx5IGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIEhpYi1TZXF1ZW5jZXIuCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfU0VRVUVOQ0VSX0NGRzBfbWVtX2VuX3YyaV9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAyMCAgLy8gMSAtIEVOX1YySSBjb21lcyBmcm9tIGJpdFsyXSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcmVnaXN0ZXIgTUVNX0JHQVBfUEFSQU1FVEVSUzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzB4MDAzQ10uIDAgLSBFTl9WMkkgY29tZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGlyZWN0bHkgZnJvbSB0aGUgSGliLVNlcXVlbmNlci4KKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9TRVFVRU5DRVJfQ0ZHMF9tZW1fcG9yX2NvbXBfcmVmX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDEwICAvLyAxIC0gRU5fUE9SX0NPTVBfUkVGIGNvbWVzIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0WzldIG9mIHRoZSByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNRU1fSElCX01JU0NfQ09OVFJPTFMgWzB4MDA0NF0uIDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLSBFTl9QT1JfQ09NUF9SRUYgY29tZXMgZGlyZWN0bHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZnJvbSB0aGUgSGliLVNlcXVlbmNlci4KKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9TRVFVRU5DRVJfQ0ZHMF9tZW1fZW5fcG9yX2NvbXBfb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDggIC8vIDEgLSBFTl9QT1JfQ09NUCBjb21lcyBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdFsxMF0gb2YgdGhlIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1FTV9ISUJfTUlTQ19DT05UUk9MUyBbMHgwNDRdLiAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0gRU5fUE9SX0NPTVAgY29tZXMgZGlyZWN0bHkgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgSGliLVNlcXVlbmNlci4KKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9TRVFVRU5DRVJfQ0ZHMF9tZW1fY2FwX3N3X292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA0ICAvLyAxIC0gRU5fQ0FQX1NXIGNvbWVzIGZyb20gYml0WzFdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mIHRoZSByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNRU1fQkdBUF9QQVJBTUVURVJTMSBbMHgwMDNDXS4gMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtIEVOX0NBUF9TVyBjb21lcyBkaXJlY3RseSBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhpYi1TZXF1ZW5jZXIuCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfU0VRVUVOQ0VSX0NGRzBfbWVtX2JnX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyICAvLyAxIC0gRU5fQkdBUCBjb21lcyBmcm9tIGJpdFswXSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcmVnaXN0ZXIgTUVNX0JHQVBfUEFSQU1FVEVSUzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzB4MDAzQ10uIDAgLSBFTl9CR0FQIGNvbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpcmVjdGx5IGZyb20gSGliLVNlcXVlbmNlci4KKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9TRVFVRU5DRVJfQ0ZHMF9tZW1fYWN0X2lyZWZfb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjNQM19PX01FTV9ISUJfU0VRVUVOQ0VSX0NGRzEgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfU0VRVUVOQ0VSX0NGRzFfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRjAwMDAKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9TRVFVRU5DRVJfQ0ZHMV9yZXNlcnZlZF9TIDE2CisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1NFUVVFTkNFUl9DRkcxX21lbV9iZGNfZXY1X3RvX2V2Nl90aW1lX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBDMDAwICAvLyBDb25maWd1cmF0aW9uIGZvciBudW1iZXIgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2xvdy1jbGtzIGJldHdlZW4gZGUtYXNzZXJ0aW9uIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVOX0NPTVBfTEFUQ0ggYW5kIGFzc2VydGlvbiBvZgorCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1NFUVVFTkNFUl9DRkcxX21lbV9iZGNfZXY1X3RvX2V2Nl90aW1lX1MgMTQKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfU0VRVUVOQ0VSX0NGRzFfbWVtX2JkY190b19hY3RpdmVfZXYxX3RvX2V2Ml90aW1lX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAzMDAwICAvLyBDb25maWd1cmF0aW9uIGZvciBudW1iZXIgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2xvdy1jbGtzIGJldHdlZW4gYXNzZXJ0aW9uIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVOX0NPTVBfUkVGIHRvIGFzc2VydGlvbiBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFTl9DT01QIGR1cmluZyBISUItRXhpdAorCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1NFUVVFTkNFUl9DRkcxX21lbV9iZGNfdG9fYWN0aXZlX2V2MV90b19ldjJfdGltZV9TIDEyCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1NFUVVFTkNFUl9DRkcxX21lbV9iZGNfdG9fYWN0aXZlX2V2MF90b19ldjFfdGltZV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEMwMCAgLy8gVEJECisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfU0VRVUVOQ0VSX0NGRzFfbWVtX2JkY190b19hY3RpdmVfZXYwX3RvX2V2MV90aW1lX1MgMTAKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfU0VRVUVOQ0VSX0NGRzFfbWVtX2JkY190b19hY3RpdmVfZXYwX3RvX2FjdGl2ZV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDMwMCAgLy8gQ29uZmlndXJhdGlvbiBpbiBudW1iZXIgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2xvdy1jbGtzIGJldHdlZW4gYXNzZXJ0aW9uIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChFTl9CR0FQXzNQM1YsIEVOX0NBUF9TV18zUDNWLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFTl9BQ1RfSVJFRl8zUDNWLCBFTl9DT01QX1JFRikgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzZXJ0aW9uIG9mIEVOX0NPTVBfM1AzVgorCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1NFUVVFTkNFUl9DRkcxX21lbV9iZGNfdG9fYWN0aXZlX2V2MF90b19hY3RpdmVfUyA4CisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1NFUVVFTkNFUl9DRkcxX21lbV9hY3RpdmVfdG9fYmRjX2V2MV90b19iZGNfZXYwX3RpbWVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQzAgIC8vIENvbmZpZ3VyYXRpb24gaW4gbnVtYmVyIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNsb3ctY2xrcyBiZXR3ZWVuIGRlLWFzc2VydGlvbiBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoRU5fQ09NUF8zUDNWLCBFTl9DT01QX1JFRl8zUDNWLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFTl9BQ1RfSVJFRl8zUDNWLCBFTl9DQVBfU1dfM1AzVikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gZGVhc3NlcnRpb24gb2YgRU5fQkdBUF8zUDNWLgorCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1NFUVVFTkNFUl9DRkcxX21lbV9hY3RpdmVfdG9fYmRjX2V2MV90b19iZGNfZXYwX3RpbWVfUyA2CisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1NFUVVFTkNFUl9DRkcxX05VMV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAzRgorCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1NFUVVFTkNFUl9DRkcxX05VMV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIzUDNfT19NRU1fSElCX01JU0NfQ09ORklHIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX01JU0NfQ09ORklHX21lbV9lbl9wbGxfdW50cmltX2N1cnJlbnQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIzUDNfT19NRU1fSElCX1dBS0VfU1RBVFVTIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1dBS0VfU1RBVFVTX2hpYl93YWtlX3NyY19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxRSAgLy8gIjAxMDAiIC0gR1BJTyA7ICIwMDEwIiAtIFJUQyA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIwMDAxIiAtIFVBUlQgT3RoZXJzIC0gUmVzZXJ2ZWQKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9XQUtFX1NUQVRVU19oaWJfd2FrZV9zcmNfUyAxCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1dBS0VfU1RBVFVTX2hpYl93YWtlX3N0YXR1cyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBXYWtlIGZyb20gSGliZXJuYXRlIDsgMCAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdha2UgZnJvbSBPRkYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjNQM19PX01FTV9ISUJfTFBEU19HUElPX1NFTCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIzUDNfTUVNX0hJQl9MUERTX0dQSU9fU0VMX0hJQl9MUERTX0dQSU9fU0VMX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA3CisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfTFBEU19HUElPX1NFTF9ISUJfTFBEU19HUElPX1NFTF9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIzUDNfT19NRU1fSElCX1NFUVVFTkNFUl9DRkcyIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1NFUVVFTkNFUl9DRkcyX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGODAwCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfU0VRVUVOQ0VSX0NGRzJfcmVzZXJ2ZWRfUyAxMQorI2RlZmluZSBISUIzUDNfTUVNX0hJQl9TRVFVRU5DRVJfQ0ZHMl9tZW1fYWN0aXZlX3RvX2JkY19ldjBfdG9fYWN0aXZlX3RvX2JkY19ldjFfdGltZV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDYwMCAgLy8gRGVhc3NlcnRpb24gb2YgRU5fQ09NUF9MQVRDSF8zUDMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gZGVhc3NlcnRpb24gb2YgKEVOX0NPTVBfM1AzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFTl9DT01QX1JFRl8zUDMsIEVOX0FDVF9JUkVGXzNQMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRU5fQ0FQX1NXXzNQMykKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9TRVFVRU5DRVJfQ0ZHMl9tZW1fYWN0aXZlX3RvX2JkY19ldjBfdG9fYWN0aXZlX3RvX2JkY19ldjFfdGltZV9TIDkKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfU0VRVUVOQ0VSX0NGRzJfbWVtX2JkY19ldjRfdG9fZXY1X3RpbWVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxQzAgIC8vIEFzc2VydGlvbiBvZiBFTl9DT01QX0xBVENIXzNQMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBkZWFzc2VydGlvbiBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFTl9DT01QX0xBVENIXzNQMworCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1NFUVVFTkNFUl9DRkcyX21lbV9iZGNfZXY0X3RvX2V2NV90aW1lX1MgNgorI2RlZmluZSBISUIzUDNfTUVNX0hJQl9TRVFVRU5DRVJfQ0ZHMl9tZW1fYmRjX2V2Nl90b19ldjdfdGltZV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAzMCAgLy8gRGVhc3NlcnRpb24gb2YgKEVOX0NBUF9TV18zUDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVOX0NPTVBfUkVGXzNQMywgRU5fQ09NUF8zUDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVOX0NPTVBfT1VUX0xBVENIXzNQMykgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVhc3NlcnRpb24gb2YgRU5fQkdBUF8zUDMKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9TRVFVRU5DRVJfQ0ZHMl9tZW1fYmRjX2V2Nl90b19ldjdfdGltZV9TIDQKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfU0VRVUVOQ0VSX0NGRzJfbWVtX2JkY190b19hY3RpdmVfZXYxX3RvX2V2Ml90aW1lX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDBDICAvLyBBc3NlcnRpb24gb2YgRU5fQ09NUF8zUDMgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzZXJ0aW9uIG9mIEVOX0NPTVBPVVRfTEFUQ0hfM1AzCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfU0VRVUVOQ0VSX0NGRzJfbWVtX2JkY190b19hY3RpdmVfZXYxX3RvX2V2Ml90aW1lX1MgMgorI2RlZmluZSBISUIzUDNfTUVNX0hJQl9TRVFVRU5DRVJfQ0ZHMl9tZW1faGliX3RvX2FjdGl2ZV9ldjJfdG9fZXYzX3RpbWVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDMgIC8vIEFzc2VydGlvbiBvZiBFTl9DT01QXzNQMyB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3NlcnRpb24gb2YgRU5fQ09NUE9VVF9MQVRDSF8zUDMKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9TRVFVRU5DRVJfQ0ZHMl9tZW1faGliX3RvX2FjdGl2ZV9ldjJfdG9fZXYzX3RpbWVfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCM1AzX09fSElCQU5BX1NQQVJFX0xPV1YgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCM1AzX0hJQkFOQV9TUEFSRV9MT1dWX21lbV9oaWJhbmFfc3BhcmUxX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGQzAwMDAwCisKKyNkZWZpbmUgSElCM1AzX0hJQkFOQV9TUEFSRV9MT1dWX21lbV9oaWJhbmFfc3BhcmUxX1MgMjIKKyNkZWZpbmUgSElCM1AzX0hJQkFOQV9TUEFSRV9MT1dWX21lbV9oaWJhbmFfc3BhcmUwX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDFGRkZGCisKKyNkZWZpbmUgSElCM1AzX0hJQkFOQV9TUEFSRV9MT1dWX21lbV9oaWJhbmFfc3BhcmUwX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjNQM19PX0hJQl9UTVVYX0NUUkwgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCM1AzX0hJQl9UTVVYX0NUUkxfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZDMDAKKworI2RlZmluZSBISUIzUDNfSElCX1RNVVhfQ1RSTF9yZXNlcnZlZF9TIDEwCisjZGVmaW5lIEhJQjNQM19ISUJfVE1VWF9DVFJMX21lbV9oZF90bXV4X2NudHJsX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwM0ZGCisKKyNkZWZpbmUgSElCM1AzX0hJQl9UTVVYX0NUUkxfbWVtX2hkX3RtdXhfY250cmxfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCM1AzX09fSElCXzFQMl8xUDhfTERPX1RSSU0gcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCM1AzX0hJQl8xUDJfMVA4X0xET19UUklNX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGMDAwCisKKyNkZWZpbmUgSElCM1AzX0hJQl8xUDJfMVA4X0xET19UUklNX3Jlc2VydmVkX1MgMTIKKyNkZWZpbmUgSElCM1AzX0hJQl8xUDJfMVA4X0xET19UUklNX21lbV9oZF8xcDJfbGRvX2VuX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwODAwCisKKyNkZWZpbmUgSElCM1AzX0hJQl8xUDJfMVA4X0xET19UUklNX21lbV9oZF8xcDhfbGRvX2VuX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNDAwCisKKyNkZWZpbmUgSElCM1AzX0hJQl8xUDJfMVA4X0xET19UUklNX21lbV9oZF8xcDJfbGRvX2VuX292ZXJyaWRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDIwMAorCisjZGVmaW5lIEhJQjNQM19ISUJfMVAyXzFQOF9MRE9fVFJJTV9tZW1faGRfMXA4X2xkb19lbl9vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAKKworI2RlZmluZSBISUIzUDNfSElCXzFQMl8xUDhfTERPX1RSSU1fbWVtX2hkXzFwMl9sZG9fdnRyaW1fTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRjAKKworI2RlZmluZSBISUIzUDNfSElCXzFQMl8xUDhfTERPX1RSSU1fbWVtX2hkXzFwMl9sZG9fdnRyaW1fUyA0CisjZGVmaW5lIEhJQjNQM19ISUJfMVAyXzFQOF9MRE9fVFJJTV9tZW1faGRfMXA4X2xkb192dHJpbV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwRgorCisjZGVmaW5lIEhJQjNQM19ISUJfMVAyXzFQOF9MRE9fVFJJTV9tZW1faGRfMXA4X2xkb192dHJpbV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIzUDNfT19ISUJfQ09NUF9UUklNIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjNQM19ISUJfQ09NUF9UUklNX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkY4CisKKyNkZWZpbmUgSElCM1AzX0hJQl9DT01QX1RSSU1fcmVzZXJ2ZWRfUyAzCisjZGVmaW5lIEhJQjNQM19ISUJfQ09NUF9UUklNX21lbV9oZF9jb21wX3RyaW1fTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDcKKworI2RlZmluZSBISUIzUDNfSElCX0NPTVBfVFJJTV9tZW1faGRfY29tcF90cmltX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjNQM19PX0hJQl9FTl9UUyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIzUDNfSElCX0VOX1RTX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZFCisKKyNkZWZpbmUgSElCM1AzX0hJQl9FTl9UU19yZXNlcnZlZF9TIDEKKyNkZWZpbmUgSElCM1AzX0hJQl9FTl9UU19tZW1faGRfZW5fdHMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIzUDNfT19ISUJfMVA4Vl9ERVRfRU4gcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCM1AzX0hJQl8xUDhWX0RFVF9FTl9yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRQorCisjZGVmaW5lIEhJQjNQM19ISUJfMVA4Vl9ERVRfRU5fcmVzZXJ2ZWRfUyAxCisjZGVmaW5lIEhJQjNQM19ISUJfMVA4Vl9ERVRfRU5fbWVtX2hpYl8xcDh2X2RldF9lbiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjNQM19PX0hJQl9WQkFUX01PTl9FTiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIzUDNfSElCX1ZCQVRfTU9OX0VOX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZDCisKKyNkZWZpbmUgSElCM1AzX0hJQl9WQkFUX01PTl9FTl9yZXNlcnZlZF9TIDIKKyNkZWZpbmUgSElCM1AzX0hJQl9WQkFUX01PTl9FTl9tZW1faGliX3ZiYXRfbW9uX2RlbF9lbiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIKKworI2RlZmluZSBISUIzUDNfSElCX1ZCQVRfTU9OX0VOX21lbV9oaWJfdmJhdF9tb25fZW4gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIzUDNfT19ISUJfTkhJQl9FTkFCTEUgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCM1AzX0hJQl9OSElCX0VOQUJMRV9tZW1faGliX25oaWJfZW5hYmxlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCM1AzX09fSElCX1VBUlRfUlRTX1NXX0VOQUJMRSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIzUDNfSElCX1VBUlRfUlRTX1NXX0VOQUJMRV9tZW1faGliX3VhcnRfcnRzX3N3X2VuYWJsZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEKKworCisKKworI2VuZGlmIC8vIF9fSFdfSElCM1AzX0hfXwpkaWZmIC0tZ2l0IGEvZXh0L2hhbC90aS9jYzMyMjBzZGsvaW5jL2h3X2ludHMuaCBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2luYy9od19pbnRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWYyYzAyZgotLS0gL2Rldi9udWxsCisrKyBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2luYy9od19pbnRzLmgKQEAgLTAsMCArMSwxMTUgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDE2IFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCAtIGh0dHA6Ly93d3cudGkuY29tLworICoKKyAqICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqICBhcmUgbWV0OgorICoKKyAqICAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogICAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqICAgIE5laXRoZXIgdGhlIG5hbWUgb2YgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqICBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqICBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiAgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiAgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiAgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBod19pbnRzLmggLSBNYWNyb3MgdGhhdCBkZWZpbmUgdGhlIGludGVycnVwdCBhc3NpZ25tZW50IG9uIENDMzIwMC4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKyNpZm5kZWYgX19IV19JTlRTX0hfXworI2RlZmluZSBfX0hXX0lOVFNfSF9fCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgZmF1bHQgYXNzaWdubWVudHMuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBGQVVMVF9OTUkgICAgICAgICAgICAgICAyICAgICAgICAgICAvLyBOTUkgZmF1bHQKKyNkZWZpbmUgRkFVTFRfSEFSRCAgICAgICAgICAgICAgMyAgICAgICAgICAgLy8gSGFyZCBmYXVsdAorI2RlZmluZSBGQVVMVF9NUFUgICAgICAgICAgICAgICA0ICAgICAgICAgICAvLyBNUFUgZmF1bHQKKyNkZWZpbmUgRkFVTFRfQlVTICAgICAgICAgICAgICAgNSAgICAgICAgICAgLy8gQnVzIGZhdWx0CisjZGVmaW5lIEZBVUxUX1VTQUdFICAgICAgICAgICAgIDYgICAgICAgICAgIC8vIFVzYWdlIGZhdWx0CisjZGVmaW5lIEZBVUxUX1NWQ0FMTCAgICAgICAgICAgIDExICAgICAgICAgIC8vIFNWQ2FsbAorI2RlZmluZSBGQVVMVF9ERUJVRyAgICAgICAgICAgICAxMiAgICAgICAgICAvLyBEZWJ1ZyBtb25pdG9yCisjZGVmaW5lIEZBVUxUX1BFTkRTViAgICAgICAgICAgIDE0ICAgICAgICAgIC8vIFBlbmRTVgorI2RlZmluZSBGQVVMVF9TWVNUSUNLICAgICAgICAgICAxNSAgICAgICAgICAvLyBTeXN0ZW0gVGljaworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGludGVycnVwdCBhc3NpZ25tZW50cy4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIElOVF9HUElPQTAgICAgICAgICAgICAgIDE2ICAgICAgICAgIC8vIEdQSU8gUG9ydCBTMAorI2RlZmluZSBJTlRfR1BJT0ExICAgICAgICAgICAgICAxNyAgICAgICAgICAvLyBHUElPIFBvcnQgUzEKKyNkZWZpbmUgSU5UX0dQSU9BMiAgICAgICAgICAgICAgMTggICAgICAgICAgLy8gR1BJTyBQb3J0IFMyCisjZGVmaW5lIElOVF9HUElPQTMgICAgICAgICAgICAgIDE5ICAgICAgICAgIC8vIEdQSU8gUG9ydCBTMworI2RlZmluZSBJTlRfVUFSVEEwICAgICAgICAgICAgICAyMSAgICAgICAgICAvLyBVQVJUMCBSeCBhbmQgVHgKKyNkZWZpbmUgSU5UX1VBUlRBMSAgICAgICAgICAgICAgMjIgICAgICAgICAgLy8gVUFSVDEgUnggYW5kIFR4CisjZGVmaW5lIElOVF9JMkNBMCAgICAgICAgICAgICAgIDI0ICAgICAgICAgIC8vIEkyQyBjb250cm9sbGVyCisjZGVmaW5lIElOVF9BRENDSDAgICAgICAgICAgICAgIDMwICAgICAgICAgIC8vIEFEQyBTZXF1ZW5jZSAwCisjZGVmaW5lIElOVF9BRENDSDEgICAgICAgICAgICAgIDMxICAgICAgICAgIC8vIEFEQyBTZXF1ZW5jZSAxCisjZGVmaW5lIElOVF9BRENDSDIgICAgICAgICAgICAgIDMyICAgICAgICAgIC8vIEFEQyBTZXF1ZW5jZSAyCisjZGVmaW5lIElOVF9BRENDSDMgICAgICAgICAgICAgIDMzICAgICAgICAgIC8vIEFEQyBTZXF1ZW5jZSAzCisjZGVmaW5lIElOVF9XRFQgICAgICAgICAgICAgICAgIDM0ICAgICAgICAgIC8vIFdhdGNoZG9nIFRpbWVyMAorI2RlZmluZSBJTlRfVElNRVJBMEEgICAgICAgICAgICAzNSAgICAgICAgICAvLyBUaW1lciAwIHN1YnRpbWVyIEEKKyNkZWZpbmUgSU5UX1RJTUVSQTBCICAgICAgICAgICAgMzYgICAgICAgICAgLy8gVGltZXIgMCBzdWJ0aW1lciBCCisjZGVmaW5lIElOVF9USU1FUkExQSAgICAgICAgICAgIDM3ICAgICAgICAgIC8vIFRpbWVyIDEgc3VidGltZXIgQQorI2RlZmluZSBJTlRfVElNRVJBMUIgICAgICAgICAgICAzOCAgICAgICAgICAvLyBUaW1lciAxIHN1YnRpbWVyIEIKKyNkZWZpbmUgSU5UX1RJTUVSQTJBICAgICAgICAgICAgMzkgICAgICAgICAgLy8gVGltZXIgMiBzdWJ0aW1lciBBCisjZGVmaW5lIElOVF9USU1FUkEyQiAgICAgICAgICAgIDQwICAgICAgICAgIC8vIFRpbWVyIDIgc3VidGltZXIgQgorI2RlZmluZSBJTlRfRkxBU0ggICAgICAgICAgICAgICA0NSAgICAgICAgICAvLyBGTEFTSCBDb250cm9sCisjZGVmaW5lIElOVF9USU1FUkEzQSAgICAgICAgICAgIDUxICAgICAgICAgIC8vIFRpbWVyIDMgc3VidGltZXIgQQorI2RlZmluZSBJTlRfVElNRVJBM0IgICAgICAgICAgICA1MiAgICAgICAgICAvLyBUaW1lciAzIHN1YnRpbWVyIEIKKyNkZWZpbmUgSU5UX1VETUEgICAgICAgICAgICAgICAgNjIgICAgICAgICAgLy8gdURNQSBjb250cm9sbGVyCisjZGVmaW5lIElOVF9VRE1BRVJSICAgICAgICAgICAgIDYzICAgICAgICAgIC8vIHVETUEgRXJyb3IKKyNkZWZpbmUgSU5UX1NIQSAgICAgICAgICAgICAgICAgMTY0ICAgICAgICAgLy8gU0hBCisjZGVmaW5lIElOVF9BRVMgICAgICAgICAgICAgICAgIDE2NyAgICAgICAgIC8vIEFFUworI2RlZmluZSBJTlRfREVTICAgICAgICAgICAgICAgICAxNjkgICAgICAgICAvLyBERVMKKyNkZWZpbmUgSU5UX01NQ0hTICAgICAgICAgICAgICAgMTc1ICAgICAgICAgLy8gU0RJTworI2RlZmluZSBJTlRfSTJTICAgICAgICAgICAgICAgICAxNzcgICAgICAgICAvLyBNY0FQUworI2RlZmluZSBJTlRfQ0FNRVJBICAgICAgICAgICAgICAxNzkgICAgICAgICAvLyBDYW1lcmEKKyNkZWZpbmUgSU5UX05XUElDICAgICAgICAgICAgICAgMTg3ICAgICAgICAgLy8gSW50ZXJwcm9jZXNzb3IgY29tbXVuaWNhdGlvbgorI2RlZmluZSBJTlRfUFJDTSAgICAgICAgICAgICAgICAxODggICAgICAgICAvLyBQb3dlciwgUmVzZXQgYW5kIENsb2NrIE1vZHVsZQorI2RlZmluZSBJTlRfU1NQSSAgICAgICAgICAgICAgICAxOTEgICAgICAgICAvLyBTaGFyZWQgU1BJCisjZGVmaW5lIElOVF9HU1BJICAgICAgICAgICAgICAgIDE5MiAgICAgICAgIC8vIEdlbmVyaWMgU1BJCisjZGVmaW5lIElOVF9MU1BJICAgICAgICAgICAgICAgIDE5MyAgICAgICAgIC8vIExpbmsgU1BJCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgdG90YWwgbnVtYmVyIG9mIGludGVycnVwdHMuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBOVU1fSU5URVJSVVBUUyAgICAgICAgICAxOTUgLy9UaGUgYWJvdmUgbnVtYmVyIHBsdXMgMj8KKworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIHRvdGFsIG51bWJlciBvZiBwcmlvcml0eSBsZXZlbHMuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBOVU1fUFJJT1JJVFkgICAgICAgICAgICA4CisjZGVmaW5lIE5VTV9QUklPUklUWV9CSVRTICAgICAgIDMKKworCisjZW5kaWYgLy8gX19IV19JTlRTX0hfXwpkaWZmIC0tZ2l0IGEvZXh0L2hhbC90aS9jYzMyMjBzZGsvaW5jL2h3X21lbW1hcC5oIGIvZXh0L2hhbC90aS9jYzMyMjBzZGsvaW5jL2h3X21lbW1hcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlMjY3NzQKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvaGFsL3RpL2NjMzIyMHNkay9pbmMvaHdfbWVtbWFwLmgKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTYgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkIC0gaHR0cDovL3d3dy50aS5jb20vCisgKgorICogIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogIGFyZSBtZXQ6CisgKgorICogICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAgICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogICAgTmVpdGhlciB0aGUgbmFtZSBvZiBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgbm9yIHRoZSBuYW1lcyBvZgorICogICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqICBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqICBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqICBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiAgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRlZiBfX0hXX01FTU1BUF9IX18KKyNkZWZpbmUgX19IV19NRU1NQVBfSF9fCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYmFzZSBhZGRyZXNzIG9mIHRoZSBtZW1vcmllcyBhbmQKKy8vIHBlcmlwaGVyYWxzIG9uIHRoZSBzbGF2ZV8xIGludGVyZmFjZS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEZMQVNIX0JBU0UgICAgICAgICAgICAgIDB4MDEwMDAwMDAKKyNkZWZpbmUgU1JBTV9CQVNFICAgICAgICAgICAgICAgMHgyMDAwMDAwMAorI2RlZmluZSBXRFRfQkFTRSAgICAgICAgICAgICAgICAweDQwMDAwMDAwCisjZGVmaW5lIEdQSU9BMF9CQVNFICAgICAgICAgICAgIDB4NDAwMDQwMDAKKyNkZWZpbmUgR1BJT0ExX0JBU0UgICAgICAgICAgICAgMHg0MDAwNTAwMAorI2RlZmluZSBHUElPQTJfQkFTRSAgICAgICAgICAgICAweDQwMDA2MDAwCisjZGVmaW5lIEdQSU9BM19CQVNFICAgICAgICAgICAgIDB4NDAwMDcwMDAKKyNkZWZpbmUgR1BJT0E0X0JBU0UgICAgICAgICAgICAgMHg0MDAyNDAwMAorI2RlZmluZSBVQVJUQTBfQkFTRSAgICAgICAgICAgICAweDQwMDBDMDAwCisjZGVmaW5lIFVBUlRBMV9CQVNFICAgICAgICAgICAgIDB4NDAwMEQwMDAKKyNkZWZpbmUgSTJDQTBfQkFTRSAgICAgICAgICAgICAgMHg0MDAyMDAwMAorI2RlZmluZSBUSU1FUkEwX0JBU0UgICAgICAgICAgICAweDQwMDMwMDAwCisjZGVmaW5lIFRJTUVSQTFfQkFTRSAgICAgICAgICAgIDB4NDAwMzEwMDAKKyNkZWZpbmUgVElNRVJBMl9CQVNFICAgICAgICAgICAgMHg0MDAzMjAwMAorI2RlZmluZSBUSU1FUkEzX0JBU0UgICAgICAgICAgICAweDQwMDMzMDAwCisjZGVmaW5lIFNUQUNLRElFX0NUUkxfQkFTRSAgICAgIDB4NDAwRjUwMDAKKyNkZWZpbmUgQ09NTU9OX1JFR19CQVNFICAgICAgICAgMHg0MDBGNzAwMAorI2RlZmluZSBGTEFTSF9DT05UUk9MX0JBU0UgICAgICAweDQwMEZEMDAwCisjZGVmaW5lIFNZU1RFTV9DT05UUk9MX0JBU0UgICAgIDB4NDAwRkUwMDAKKyNkZWZpbmUgVURNQV9CQVNFICAgICAgICAgICAgICAgMHg0MDBGRjAwMAorI2RlZmluZSBTREhPU1RfQkFTRSAgICAgICAgICAgICAweDQ0MDEwMDAwCisjZGVmaW5lIENBTUVSQV9CQVNFICAgICAgICAgICAgIDB4NDQwMTgwMDAKKyNkZWZpbmUgSTJTX0JBU0UgICAgICAgICAgICAgICAgMHg0NDAxQzAwMAorI2RlZmluZSBTU1BJX0JBU0UgICAgICAgICAgICAgICAweDQ0MDIwMDAwCisjZGVmaW5lIEdTUElfQkFTRSAgICAgICAgICAgICAgIDB4NDQwMjEwMDAKKyNkZWZpbmUgTFNQSV9CQVNFICAgICAgICAgICAgICAgMHg0NDAyMjAwMAorI2RlZmluZSBBUkNNX0JBU0UgICAgICAgICAgICAgICAweDQ0MDI1MDAwCisjZGVmaW5lIEFQUFNfQ09ORklHX0JBU0UgICAgICAgIDB4NDQwMjYwMDAKKyNkZWZpbmUgR1BSQ01fQkFTRSAgICAgICAgICAgICAgMHg0NDAyRDAwMAorI2RlZmluZSBPQ1BfU0hBUkVEX0JBU0UgICAgICAgICAweDQ0MDJFMDAwCisjZGVmaW5lIEFEQ19CQVNFICAgICAgICAgICAgICAgIDB4NDQwMkU4MDAKKyNkZWZpbmUgSElCMVAyX0JBU0UgICAgICAgICAgICAgMHg0NDAyRjAwMAorI2RlZmluZSBISUIzUDNfQkFTRSAgICAgICAgICAgICAweDQ0MDJGODAwCisjZGVmaW5lIERUSEVfQkFTRSAgICAgICAgICAgICAgIDB4NDQwMzAwMDAKKyNkZWZpbmUgU0hBTUQ1X0JBU0UgICAgICAgICAgICAgMHg0NDAzNTAwMAorI2RlZmluZSBBRVNfQkFTRSAgICAgICAgICAgICAgICAweDQ0MDM3MDAwCisjZGVmaW5lIERFU19CQVNFICAgICAgICAgICAgICAgIDB4NDQwMzkwMDAKKworCisjZW5kaWYgLy8gX19IV19NRU1NQVBfSF9fCmRpZmYgLS1naXQgYS9leHQvaGFsL3RpL2NjMzIyMHNkay9pbmMvaHdfb2NwX3NoYXJlZC5oIGIvZXh0L2hhbC90aS9jYzMyMjBzZGsvaW5jL2h3X29jcF9zaGFyZWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWI1Zjc2Ci0tLSAvZGV2L251bGwKKysrIGIvZXh0L2hhbC90aS9jYzMyMjBzZGsvaW5jL2h3X29jcF9zaGFyZWQuaApAQCAtMCwwICsxLDM0NDMgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDE2IFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCAtIGh0dHA6Ly93d3cudGkuY29tLworICoKKyAqICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqICBhcmUgbWV0OgorICoKKyAqICAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogICAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqICAgIE5laXRoZXIgdGhlIG5hbWUgb2YgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqICBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqICBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiAgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiAgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiAgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpZm5kZWYgX19IV19PQ1BfU0hBUkVEX0hfXworI2RlZmluZSBfX0hXX09DUF9TSEFSRURfSF9fCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgT0NQX1NIQVJFRCByZWdpc3RlciBvZmZzZXRzLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX1NFTUFQSE9SRTEgMHgwMDAwMDAwMAorI2RlZmluZSBPQ1BfU0hBUkVEX09fU0VNQVBIT1JFMiAweDAwMDAwMDA0CisjZGVmaW5lIE9DUF9TSEFSRURfT19TRU1BUEhPUkUzIDB4MDAwMDAwMDgKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX1NFTUFQSE9SRTQgMHgwMDAwMDAwQworI2RlZmluZSBPQ1BfU0hBUkVEX09fU0VNQVBIT1JFNSAweDAwMDAwMDEwCisjZGVmaW5lIE9DUF9TSEFSRURfT19TRU1BUEhPUkU2IDB4MDAwMDAwMTQKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX1NFTUFQSE9SRTcgMHgwMDAwMDAxOAorI2RlZmluZSBPQ1BfU0hBUkVEX09fU0VNQVBIT1JFOCAweDAwMDAwMDFDCisjZGVmaW5lIE9DUF9TSEFSRURfT19TRU1BUEhPUkU5IDB4MDAwMDAwMjAKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX1NFTUFQSE9SRTEwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAyNAorCisjZGVmaW5lIE9DUF9TSEFSRURfT19TRU1BUEhPUkUxMSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMjgKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fU0VNQVBIT1JFMTIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDJDCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0lDX0xPQ0tFUl9JRCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMzAKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fTUNVX1NFTUFQSE9SRV9QRU5EIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAzNAorCisjZGVmaW5lIE9DUF9TSEFSRURfT19XTF9TRU1BUEhPUkVfUEVORCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMzgKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fUExBVEZPUk1fREVURUNUSU9OX1JEX09OTFkgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDNDCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX1NFTUFQSE9SRVNfU1RBVFVTX1JEX09OTFkgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDQwCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0NDM1hYX0NPTkZJR19DVFJMIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA0NAorCisjZGVmaW5lIE9DUF9TSEFSRURfT19DQzNYWF9TSEFSRURfTUVNX1NFTF9MU0IgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDQ4CisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0NDM1hYX1NIQVJFRF9NRU1fU0VMX01TQiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNEMKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fV0xBTl9FTFBfV0FLRV9FTiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNTAKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fREVWSU5JVF9ST01fU1RBUlRfQUREUiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNTQKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fREVWSU5JVF9ST01fRU5EX0FERFIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDU4CisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX1NTQkRfU0VFRCAgMHgwMDAwMDA1QworI2RlZmluZSBPQ1BfU0hBUkVEX09fU1NCRF9DSEsgICAweDAwMDAwMDYwCisjZGVmaW5lIE9DUF9TSEFSRURfT19TU0JEX1BPTFlfU0VMIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA2NAorCisjZGVmaW5lIE9DUF9TSEFSRURfT19TUEFSRV9SRUdfMCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNjgKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fU1BBUkVfUkVHXzEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDZDCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX1NQQVJFX1JFR18yIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA3MAorCisjZGVmaW5lIE9DUF9TSEFSRURfT19TUEFSRV9SRUdfMyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNzQKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEEwCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18xIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBBNAorCisjZGVmaW5lIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQTgKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEFDCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR180IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBCMAorCisjZGVmaW5lIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfNSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQjQKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEI4CisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR183IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBCQworCisjZGVmaW5lIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfOCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQzAKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzkgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEM0CisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18xMCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQzgKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzExIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBDQworCisjZGVmaW5lIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMTIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEQwCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18xMyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRDQKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzE0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBEOAorCisjZGVmaW5lIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMTUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMERDCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18xNiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRTAKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzE3IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBFNAorCisjZGVmaW5lIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMTggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEU4CisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18xOSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRUMKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzIwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGMAorCisjZGVmaW5lIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMjEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEY0CisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18yMiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRjgKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzIzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGQworCisjZGVmaW5lIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMjQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18yNSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDQKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzI2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwOAorCisjZGVmaW5lIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMjcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTBDCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18yOCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMTAKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzI5IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDExNAorCisjZGVmaW5lIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMzAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTE4CisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18zMSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMUMKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzMyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEyMAorCisjZGVmaW5lIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMzMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTI0CisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18zNCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMjgKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzM1IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEyQworCisjZGVmaW5lIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMzYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTMwCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18zNyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMzQKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzM4IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEzOAorCisjZGVmaW5lIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMzkgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTNDCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR180MCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxNDAKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ01OX0NPTkZJRyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxNDQgIC8vIFRoaXMgcmVnaXN0ZXIgcHJvdmlkZSBjb250cm9sIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU9fQ0MzWFhWMSBJTyBQQUQuIENvbW1vbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250cm9sIHNpZ25hbHMgdG8gYWxsIGJvdHRvbSBEaWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncyBhcmUgY29udHJvbGxlZCB2aWEgdGhpcy4KKworI2RlZmluZSBPQ1BfU0hBUkVEX09fRDJEX0RFVl9QQURfQ01OX0NPTkZJRyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxNDgKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fRDJEX1RPU1RBQ0tfUEFEX0NPTkYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTRDCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0QyRF9NSVNDX1BBRF9DT05GIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDE1MAorCisjZGVmaW5lIE9DUF9TSEFSRURfT19TT1BfQ09ORl9PVkVSUklERSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxNTQKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fQ0MzWFhfREVCVUdTU19TVEFUVVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTU4CisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0NDM1hYX0RFQlVHTVVYX1NFTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxNUMKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fQUxUX1BDX1ZBTF9OVyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxNjAKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fQUxUX1BDX1ZBTF9BUFBTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDE2NAorCisjZGVmaW5lIE9DUF9TSEFSRURfT19TUEFSRV9SRUdfNCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxNjgKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fU1BBUkVfUkVHXzUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTZDCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX1NIX1NQSV9DU19NQVNLIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDE3MAorCisjZGVmaW5lIE9DUF9TSEFSRURfT19DQzNYWF9ERVZJQ0VfVFlQRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxNzQKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fTUVNX1RPUE1VWENUUkxfSUZPUkNFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDE3OAorCisjZGVmaW5lIE9DUF9TSEFSRURfT19DQzNYWF9ERVZfUEFDS0FHRV9ERVRFQ1QgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTdDCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0FVVE9OTVNfU1BJQ0xLX1NFTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxODAKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fQ0MzWFhfREVWX1BBRENPTkYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTg0CisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX1NQQVJFX1JFR184IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDE4OAorCisjZGVmaW5lIE9DUF9TSEFSRURfT19TUEFSRV9SRUdfNiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxOEMKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fU1BBUkVfUkVHXzcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTkwCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0FQUFNfV0xBTl9PUkJJVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxOTQKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fQVBQU19XTEFOX1NDUkFUQ0hfUEFEIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDE5OAorCisKKworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX1NFTUFQSE9SRTEgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9TRU1BUEhPUkUxX01FTV9TRU1BUEhPUkUxX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAzICAvLyBHZW5lcmFsIFB1cnBvc2UgU2VtYXBob3JlIGZvciBTVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVc2FnZS4gSWYgYW55IG9mIHRoZSAyIGJpdHMgb2YgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnaXZlbiByZWdpc3RlciBpcyBzZXQgdG8gMSwgaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWVhbnMgdGhhdCB0aGUgc2VtYXBob3JlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvY2tlZCBieSBvbmUgb2YgdGhlIG1hc3RlcnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVhY2ggYml0IHJlcHJlc2VudHMgYSBtYXN0ZXIgSVAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXMgZm9sbG93czoge1dMQU4sTldQfS4gVGhlIEpUQUcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2Fubm90IGNhcHR1cmUgdGhlIHNlbWFwaG9yZSBidXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXQgY2FuIHJlbGVhc2UgaXQuIEFzIGEgbWFzdGVyIElQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlYWRzIHRoZSBzZW1hcGhvcmUsIGl0IHdpbGwgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FwdXRlZCBhbmQgdGhlIG1hc3RlcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29ycmVsYXRpbmcgYml0IHdpbGwgYmUgc2V0IHRvIDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHNldCB1cG9uIHJlYWQpLiBBcyBhbnkgSVAgd3JpdGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIHRoaXMgYWRkcmVzcyAoaW5kZXBlbmRlbnQgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHdyaXR0ZW4gZGF0YSkgdGhlIHNlbWFwaG9yZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGJlIHNldCB0byAyJ2IwMC4KKworI2RlZmluZSBPQ1BfU0hBUkVEX1NFTUFQSE9SRTFfTUVNX1NFTUFQSE9SRTFfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX1NFTUFQSE9SRTIgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9TRU1BUEhPUkUyX01FTV9TRU1BUEhPUkUyX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAzICAvLyBHZW5lcmFsIFB1cnBvc2UgU2VtYXBob3JlIGZvciBTVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVc2FnZS4gSWYgYW55IG9mIHRoZSAyIGJpdHMgb2YgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnaXZlbiByZWdpc3RlciBpcyBzZXQgdG8gMSwgaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWVhbnMgdGhhdCB0aGUgc2VtYXBob3JlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvY2tlZCBieSBvbmUgb2YgdGhlIG1hc3RlcnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVhY2ggYml0IHJlcHJlc2VudHMgYSBtYXN0ZXIgSVAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXMgZm9sbG93czoge1dMQU4sTldQfS4gVGhlIEpUQUcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2Fubm90IGNhcHR1cmUgdGhlIHNlbWFwaG9yZSBidXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXQgY2FuIHJlbGVhc2UgaXQuIEFzIGEgbWFzdGVyIElQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlYWRzIHRoZSBzZW1hcGhvcmUsIGl0IHdpbGwgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FwdXRlZCBhbmQgdGhlIG1hc3RlcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29ycmVsYXRpbmcgYml0IHdpbGwgYmUgc2V0IHRvIDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHNldCB1cG9uIHJlYWQpLiBBcyBhbnkgSVAgd3JpdGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIHRoaXMgYWRkcmVzcyAoaW5kZXBlbmRlbnQgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHdyaXR0ZW4gZGF0YSkgdGhlIHNlbWFwaG9yZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGJlIHNldCB0byAyJ2IwMC4KKworI2RlZmluZSBPQ1BfU0hBUkVEX1NFTUFQSE9SRTJfTUVNX1NFTUFQSE9SRTJfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX1NFTUFQSE9SRTMgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9TRU1BUEhPUkUzX01FTV9TRU1BUEhPUkUzX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAzICAvLyBHZW5lcmFsIFB1cnBvc2UgU2VtYXBob3JlIGZvciBTVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVc2FnZS4gSWYgYW55IG9mIHRoZSAyIGJpdHMgb2YgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnaXZlbiByZWdpc3RlciBpcyBzZXQgdG8gMSwgaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWVhbnMgdGhhdCB0aGUgc2VtYXBob3JlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvY2tlZCBieSBvbmUgb2YgdGhlIG1hc3RlcnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVhY2ggYml0IHJlcHJlc2VudHMgYSBtYXN0ZXIgSVAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXMgZm9sbG93czoge1dMQU4sTldQfS4gVGhlIEpUQUcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2Fubm90IGNhcHR1cmUgdGhlIHNlbWFwaG9yZSBidXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXQgY2FuIHJlbGVhc2UgaXQuIEFzIGEgbWFzdGVyIElQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlYWRzIHRoZSBzZW1hcGhvcmUsIGl0IHdpbGwgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FwdXRlZCBhbmQgdGhlIG1hc3RlcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29ycmVsYXRpbmcgYml0IHdpbGwgYmUgc2V0IHRvIDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHNldCB1cG9uIHJlYWQpLiBBcyBhbnkgSVAgd3JpdGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIHRoaXMgYWRkcmVzcyAoaW5kZXBlbmRlbnQgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHdyaXR0ZW4gZGF0YSkgdGhlIHNlbWFwaG9yZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGJlIHNldCB0byAyJ2IwMC4KKworI2RlZmluZSBPQ1BfU0hBUkVEX1NFTUFQSE9SRTNfTUVNX1NFTUFQSE9SRTNfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX1NFTUFQSE9SRTQgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9TRU1BUEhPUkU0X01FTV9TRU1BUEhPUkU0X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAzICAvLyBHZW5lcmFsIFB1cnBvc2UgU2VtYXBob3JlIGZvciBTVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVc2FnZS4gSWYgYW55IG9mIHRoZSAyIGJpdHMgb2YgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnaXZlbiByZWdpc3RlciBpcyBzZXQgdG8gMSwgaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWVhbnMgdGhhdCB0aGUgc2VtYXBob3JlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvY2tlZCBieSBvbmUgb2YgdGhlIG1hc3RlcnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVhY2ggYml0IHJlcHJlc2VudHMgYSBtYXN0ZXIgSVAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXMgZm9sbG93czoge1dMQU4sTldQfS4gVGhlIEpUQUcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2Fubm90IGNhcHR1cmUgdGhlIHNlbWFwaG9yZSBidXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXQgY2FuIHJlbGVhc2UgaXQuIEFzIGEgbWFzdGVyIElQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlYWRzIHRoZSBzZW1hcGhvcmUsIGl0IHdpbGwgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FwdXRlZCBhbmQgdGhlIG1hc3RlcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29ycmVsYXRpbmcgYml0IHdpbGwgYmUgc2V0IHRvIDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHNldCB1cG9uIHJlYWQpLiBBcyBhbnkgSVAgd3JpdGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIHRoaXMgYWRkcmVzcyAoaW5kZXBlbmRlbnQgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHdyaXR0ZW4gZGF0YSkgdGhlIHNlbWFwaG9yZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGJlIHNldCB0byAyJ2IwMC4KKworI2RlZmluZSBPQ1BfU0hBUkVEX1NFTUFQSE9SRTRfTUVNX1NFTUFQSE9SRTRfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX1NFTUFQSE9SRTUgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9TRU1BUEhPUkU1X01FTV9TRU1BUEhPUkU1X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAzICAvLyBHZW5lcmFsIFB1cnBvc2UgU2VtYXBob3JlIGZvciBTVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVc2FnZS4gSWYgYW55IG9mIHRoZSAyIGJpdHMgb2YgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnaXZlbiByZWdpc3RlciBpcyBzZXQgdG8gMSwgaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWVhbnMgdGhhdCB0aGUgc2VtYXBob3JlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvY2tlZCBieSBvbmUgb2YgdGhlIG1hc3RlcnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVhY2ggYml0IHJlcHJlc2VudHMgYSBtYXN0ZXIgSVAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXMgZm9sbG93czoge1dMQU4sTldQfS4gVGhlIEpUQUcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2Fubm90IGNhcHR1cmUgdGhlIHNlbWFwaG9yZSBidXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXQgY2FuIHJlbGVhc2UgaXQuIEFzIGEgbWFzdGVyIElQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlYWRzIHRoZSBzZW1hcGhvcmUsIGl0IHdpbGwgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FwdXRlZCBhbmQgdGhlIG1hc3RlcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29ycmVsYXRpbmcgYml0IHdpbGwgYmUgc2V0IHRvIDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHNldCB1cG9uIHJlYWQpLiBBcyBhbnkgSVAgd3JpdGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIHRoaXMgYWRkcmVzcyAoaW5kZXBlbmRlbnQgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHdyaXR0ZW4gZGF0YSkgdGhlIHNlbWFwaG9yZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGJlIHNldCB0byAyJ2IwMC4KKworI2RlZmluZSBPQ1BfU0hBUkVEX1NFTUFQSE9SRTVfTUVNX1NFTUFQSE9SRTVfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX1NFTUFQSE9SRTYgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9TRU1BUEhPUkU2X01FTV9TRU1BUEhPUkU2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAzICAvLyBHZW5lcmFsIFB1cnBvc2UgU2VtYXBob3JlIGZvciBTVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVc2FnZS4gSWYgYW55IG9mIHRoZSAyIGJpdHMgb2YgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnaXZlbiByZWdpc3RlciBpcyBzZXQgdG8gMSwgaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWVhbnMgdGhhdCB0aGUgc2VtYXBob3JlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvY2tlZCBieSBvbmUgb2YgdGhlIG1hc3RlcnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVhY2ggYml0IHJlcHJlc2VudHMgYSBtYXN0ZXIgSVAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXMgZm9sbG93czoge1dMQU4sTldQfS4gVGhlIEpUQUcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2Fubm90IGNhcHR1cmUgdGhlIHNlbWFwaG9yZSBidXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXQgY2FuIHJlbGVhc2UgaXQuIEFzIGEgbWFzdGVyIElQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlYWRzIHRoZSBzZW1hcGhvcmUsIGl0IHdpbGwgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FwdXRlZCBhbmQgdGhlIG1hc3RlcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29ycmVsYXRpbmcgYml0IHdpbGwgYmUgc2V0IHRvIDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHNldCB1cG9uIHJlYWQpLiBBcyBhbnkgSVAgd3JpdGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIHRoaXMgYWRkcmVzcyAoaW5kZXBlbmRlbnQgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHdyaXR0ZW4gZGF0YSkgdGhlIHNlbWFwaG9yZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGJlIHNldCB0byAyJ2IwMC4KKworI2RlZmluZSBPQ1BfU0hBUkVEX1NFTUFQSE9SRTZfTUVNX1NFTUFQSE9SRTZfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX1NFTUFQSE9SRTcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9TRU1BUEhPUkU3X01FTV9TRU1BUEhPUkU3X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAzICAvLyBHZW5lcmFsIFB1cnBvc2UgU2VtYXBob3JlIGZvciBTVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVc2FnZS4gSWYgYW55IG9mIHRoZSAyIGJpdHMgb2YgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnaXZlbiByZWdpc3RlciBpcyBzZXQgdG8gMSwgaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWVhbnMgdGhhdCB0aGUgc2VtYXBob3JlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvY2tlZCBieSBvbmUgb2YgdGhlIG1hc3RlcnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVhY2ggYml0IHJlcHJlc2VudHMgYSBtYXN0ZXIgSVAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXMgZm9sbG93czoge1dMQU4sTldQfS4gVGhlIEpUQUcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2Fubm90IGNhcHR1cmUgdGhlIHNlbWFwaG9yZSBidXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXQgY2FuIHJlbGVhc2UgaXQuIEFzIGEgbWFzdGVyIElQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlYWRzIHRoZSBzZW1hcGhvcmUsIGl0IHdpbGwgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FwdXRlZCBhbmQgdGhlIG1hc3RlcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29ycmVsYXRpbmcgYml0IHdpbGwgYmUgc2V0IHRvIDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHNldCB1cG9uIHJlYWQpLiBBcyBhbnkgSVAgd3JpdGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIHRoaXMgYWRkcmVzcyAoaW5kZXBlbmRlbnQgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHdyaXR0ZW4gZGF0YSkgdGhlIHNlbWFwaG9yZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGJlIHNldCB0byAyJ2IwMC4KKworI2RlZmluZSBPQ1BfU0hBUkVEX1NFTUFQSE9SRTdfTUVNX1NFTUFQSE9SRTdfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX1NFTUFQSE9SRTggcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9TRU1BUEhPUkU4X01FTV9TRU1BUEhPUkU4X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAzICAvLyBHZW5lcmFsIFB1cnBvc2UgU2VtYXBob3JlIGZvciBTVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVc2FnZS4gSWYgYW55IG9mIHRoZSAyIGJpdHMgb2YgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnaXZlbiByZWdpc3RlciBpcyBzZXQgdG8gMSwgaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWVhbnMgdGhhdCB0aGUgc2VtYXBob3JlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvY2tlZCBieSBvbmUgb2YgdGhlIG1hc3RlcnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVhY2ggYml0IHJlcHJlc2VudHMgYSBtYXN0ZXIgSVAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXMgZm9sbG93czoge1dMQU4sTldQfS4gVGhlIEpUQUcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2Fubm90IGNhcHR1cmUgdGhlIHNlbWFwaG9yZSBidXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXQgY2FuIHJlbGVhc2UgaXQuIEFzIGEgbWFzdGVyIElQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlYWRzIHRoZSBzZW1hcGhvcmUsIGl0IHdpbGwgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FwdXRlZCBhbmQgdGhlIG1hc3RlcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29ycmVsYXRpbmcgYml0IHdpbGwgYmUgc2V0IHRvIDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHNldCB1cG9uIHJlYWQpLiBBcyBhbnkgSVAgd3JpdGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIHRoaXMgYWRkcmVzcyAoaW5kZXBlbmRlbnQgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHdyaXR0ZW4gZGF0YSkgdGhlIHNlbWFwaG9yZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGJlIHNldCB0byAyJ2IwMC4KKworI2RlZmluZSBPQ1BfU0hBUkVEX1NFTUFQSE9SRThfTUVNX1NFTUFQSE9SRThfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX1NFTUFQSE9SRTkgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9TRU1BUEhPUkU5X01FTV9TRU1BUEhPUkU5X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAzICAvLyBHZW5lcmFsIFB1cnBvc2UgU2VtYXBob3JlIGZvciBTVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVc2FnZS4gSWYgYW55IG9mIHRoZSAyIGJpdHMgb2YgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnaXZlbiByZWdpc3RlciBpcyBzZXQgdG8gMSwgaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWVhbnMgdGhhdCB0aGUgc2VtYXBob3JlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvY2tlZCBieSBvbmUgb2YgdGhlIG1hc3RlcnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVhY2ggYml0IHJlcHJlc2VudHMgYSBtYXN0ZXIgSVAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXMgZm9sbG93czoge1dMQU4sTldQfS4gVGhlIEpUQUcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2Fubm90IGNhcHR1cmUgdGhlIHNlbWFwaG9yZSBidXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXQgY2FuIHJlbGVhc2UgaXQuIEFzIGEgbWFzdGVyIElQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlYWRzIHRoZSBzZW1hcGhvcmUsIGl0IHdpbGwgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FwdXRlZCBhbmQgdGhlIG1hc3RlcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29ycmVsYXRpbmcgYml0IHdpbGwgYmUgc2V0IHRvIDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHNldCB1cG9uIHJlYWQpLiBBcyBhbnkgSVAgd3JpdGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIHRoaXMgYWRkcmVzcyAoaW5kZXBlbmRlbnQgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHdyaXR0ZW4gZGF0YSkgdGhlIHNlbWFwaG9yZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGJlIHNldCB0byAyJ2IwMC4KKworI2RlZmluZSBPQ1BfU0hBUkVEX1NFTUFQSE9SRTlfTUVNX1NFTUFQSE9SRTlfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX1NFTUFQSE9SRTEwIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfU0VNQVBIT1JFMTBfTUVNX1NFTUFQSE9SRTEwX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAzICAvLyBHZW5lcmFsIFB1cnBvc2UgU2VtYXBob3JlIGZvciBTVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVc2FnZS4gSWYgYW55IG9mIHRoZSAyIGJpdHMgb2YgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnaXZlbiByZWdpc3RlciBpcyBzZXQgdG8gMSwgaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWVhbnMgdGhhdCB0aGUgc2VtYXBob3JlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvY2tlZCBieSBvbmUgb2YgdGhlIG1hc3RlcnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVhY2ggYml0IHJlcHJlc2VudHMgYSBtYXN0ZXIgSVAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXMgZm9sbG93czoge1dMQU4sTldQfS4gVGhlIEpUQUcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2Fubm90IGNhcHR1cmUgdGhlIHNlbWFwaG9yZSBidXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXQgY2FuIHJlbGVhc2UgaXQuIEFzIGEgbWFzdGVyIElQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlYWRzIHRoZSBzZW1hcGhvcmUsIGl0IHdpbGwgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FwdXRlZCBhbmQgdGhlIG1hc3RlcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29ycmVsYXRpbmcgYml0IHdpbGwgYmUgc2V0IHRvIDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHNldCB1cG9uIHJlYWQpLiBBcyBhbnkgSVAgd3JpdGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIHRoaXMgYWRkcmVzcyAoaW5kZXBlbmRlbnQgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHdyaXR0ZW4gZGF0YSkgdGhlIHNlbWFwaG9yZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGJlIHNldCB0byAyJ2IwMC4KKworI2RlZmluZSBPQ1BfU0hBUkVEX1NFTUFQSE9SRTEwX01FTV9TRU1BUEhPUkUxMF9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fU0VNQVBIT1JFMTEgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9TRU1BUEhPUkUxMV9NRU1fU0VNQVBIT1JFMTFfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDMgIC8vIEdlbmVyYWwgUHVycG9zZSBTZW1hcGhvcmUgZm9yIFNXCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVzYWdlLiBJZiBhbnkgb2YgdGhlIDIgYml0cyBvZiBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdpdmVuIHJlZ2lzdGVyIGlzIHNldCB0byAxLCBpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtZWFucyB0aGF0IHRoZSBzZW1hcGhvcmUgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9ja2VkIGJ5IG9uZSBvZiB0aGUgbWFzdGVycy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRWFjaCBiaXQgcmVwcmVzZW50cyBhIG1hc3RlciBJUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcyBmb2xsb3dzOiB7V0xBTixOV1B9LiBUaGUgSlRBRworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYW5ub3QgY2FwdHVyZSB0aGUgc2VtYXBob3JlIGJ1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpdCBjYW4gcmVsZWFzZSBpdC4gQXMgYSBtYXN0ZXIgSVAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVhZHMgdGhlIHNlbWFwaG9yZSwgaXQgd2lsbCBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXB1dGVkIGFuZCB0aGUgbWFzdGVycworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3JyZWxhdGluZyBiaXQgd2lsbCBiZSBzZXQgdG8gMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoc2V0IHVwb24gcmVhZCkuIEFzIGFueSBJUCB3cml0ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gdGhpcyBhZGRyZXNzIChpbmRlcGVuZGVudCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgd3JpdHRlbiBkYXRhKSB0aGUgc2VtYXBob3JlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgYmUgc2V0IHRvIDInYjAwLgorCisjZGVmaW5lIE9DUF9TSEFSRURfU0VNQVBIT1JFMTFfTUVNX1NFTUFQSE9SRTExX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19TRU1BUEhPUkUxMiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX1NFTUFQSE9SRTEyX01FTV9TRU1BUEhPUkUxMl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMyAgLy8gR2VuZXJhbCBQdXJwb3NlIFNlbWFwaG9yZSBmb3IgU1cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXNhZ2UuIElmIGFueSBvZiB0aGUgMiBiaXRzIG9mIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2l2ZW4gcmVnaXN0ZXIgaXMgc2V0IHRvIDEsIGl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1lYW5zIHRoYXQgdGhlIHNlbWFwaG9yZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NrZWQgYnkgb25lIG9mIHRoZSBtYXN0ZXJzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFYWNoIGJpdCByZXByZXNlbnRzIGEgbWFzdGVyIElQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzIGZvbGxvd3M6IHtXTEFOLE5XUH0uIFRoZSBKVEFHCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbm5vdCBjYXB0dXJlIHRoZSBzZW1hcGhvcmUgYnV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0IGNhbiByZWxlYXNlIGl0LiBBcyBhIG1hc3RlciBJUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWFkcyB0aGUgc2VtYXBob3JlLCBpdCB3aWxsIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhcHV0ZWQgYW5kIHRoZSBtYXN0ZXJzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlbGF0aW5nIGJpdCB3aWxsIGJlIHNldCB0byAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChzZXQgdXBvbiByZWFkKS4gQXMgYW55IElQIHdyaXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byB0aGlzIGFkZHJlc3MgKGluZGVwZW5kZW50IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSB3cml0dGVuIGRhdGEpIHRoZSBzZW1hcGhvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBiZSBzZXQgdG8gMidiMDAuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9TRU1BUEhPUkUxMl9NRU1fU0VNQVBIT1JFMTJfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0lDX0xPQ0tFUl9JRCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0lDX0xPQ0tFUl9JRF9NRU1fSUNfTE9DS0VSX0lEX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA3ICAvLyBUaGlzIHJlZ2lzdGVyIGlzIHVzZWQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsbG93aW5nIG9ubHkgb25lIG1hc3RlciBPQ1AgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGVyZm9ybSB3cml0ZSB0cmFuc2FjdGlvbnMgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9DUCBzbGF2ZXMuIEVhY2ggYml0IHJlcHJlc2VudHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW4gSVAgaW4gdGhlIGZvbGxvd2luZyBmb3JtYXQ6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSlRBRyxXTEFOLCBOV1AgbWN1fS4gQXMgYW55IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBiaXRzIGlzIHNldCB0byBvbmUsIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3JyZWxhdGluZyBJUCBpcyBwcmV2ZW50aW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdGhlciBJUCdzIGZyb20gcGVyZm9ybWluZyB3cml0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmFuc2FjdGlvbnMgdG8gdGhlIHNsYXZlcy4gQXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIEludGVyIENvbm5lY3QgaXMgbG9ja2VkLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb25seSB0aGUgbG9ja2luZyBJUCBjYW4gd3JpdGUgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHJlZ2lzdGVyIGFuZCBieSB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbGVhc2luZyB0aGUgbG9jay4gMydiMDAwID0+IElDCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIG5vdCBsb2NrZWQuIDMnYjAwMSA9PiBJQyBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NrZWQgYnkgTldQIG1jdS4gMydiMDEwID0+IElDCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGxvY2tlZCBieSBXTEFOLiAzJ2IxMDAgPT4gSUMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgbG9ja2VkIGJ5IEpUQUcuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9JQ19MT0NLRVJfSURfTUVNX0lDX0xPQ0tFUl9JRF9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fTUNVX1NFTUFQSE9SRV9QRU5EIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfTUNVX1NFTUFQSE9SRV9QRU5EX01FTV9NQ1VfU0VNQVBIT1JFX1BFTkRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZGRkYgIC8vIFRoaXMgcmVnaXN0ZXIgc3BlY2lmaWVzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZW1hcGhvcmUgZm9yIHdoaWNoIHRoZSBOV1AgbWN1CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIHdhaXRpbmcgdG8gYmUgcmVsZWFzZWQuIEl0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0byB0aGUgc2VyaWFsIG51bWJlciBvZiBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdpdmVuIGxvY2tlZCBzZW1hcGhvcmUgYWZ0ZXIgaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2FzIHJlYWQgYnkgdGhlIE5XUCBtY3UuIE9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzExOjBdIGlzIHVzZWQuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9NQ1VfU0VNQVBIT1JFX1BFTkRfTUVNX01DVV9TRU1BUEhPUkVfUEVORF9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fV0xfU0VNQVBIT1JFX1BFTkQgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9XTF9TRU1BUEhPUkVfUEVORF9NRU1fV0xfU0VNQVBIT1JFX1BFTkRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZGRkYgIC8vIFRoaXMgcmVnaXN0ZXIgc3BlY2lmaWVzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZW1hcGhvcmUgZm9yIHdoaWNoIHRoZSBXTEFOIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdhaXRpbmcgdG8gYmUgcmVsZWFzZWQuIEl0IGlzIHNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byB0aGUgc2VyaWFsIG51bWJlciBvZiBhIGdpdmVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvY2tlZCBzZW1hcGhvcmUgYWZ0ZXIgaXQgd2FzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlYWQgYnkgdGhlIFdMQU4uIE9ubHkgWzExOjBdIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9XTF9TRU1BUEhPUkVfUEVORF9NRU1fV0xfU0VNQVBIT1JFX1BFTkRfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX1BMQVRGT1JNX0RFVEVDVElPTl9SRF9PTkxZIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfUExBVEZPUk1fREVURUNUSU9OX1JEX09OTFlfUExBVEZPUk1fREVURUNUSU9OX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGRkZGICAvLyBUaGlzIGluZm9ybWF0aW9uIHNlcnZlcyB0aGUgSVBzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBrbm93aW5nIGluIHdoaWNoIHBsYXRmb3JtIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGV5IGludGVncmF0ZWQgYXQ6IDAgPSBDQzMxWFguCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9QTEFURk9STV9ERVRFQ1RJT05fUkRfT05MWV9QTEFURk9STV9ERVRFQ1RJT05fUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX1NFTUFQSE9SRVNfU1RBVFVTX1JEX09OTFkgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9TRU1BUEhPUkVTX1NUQVRVU19SRF9PTkxZX1NFTUFQSE9SRVNfU1RBVFVTX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwRkZGICAvLyBDYXB0dXJlZC9yZWxlYXNlZCBzZW1hcGhvcmVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YXR1cyBmb3IgdGhlIDEyIHNlbWFwaG9yZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVhY2ggYml0IG9mIHRoZSAxMiBiaXRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlcHJlc2VudHMgYSBzZW1hcGhvcmUuIDAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2VtYXBob3JlIEZyZWUuIDEgPT4gU2VtYXBob3JlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENhcHR1cmVkLgorCisjZGVmaW5lIE9DUF9TSEFSRURfU0VNQVBIT1JFU19TVEFUVVNfUkRfT05MWV9TRU1BUEhPUkVTX1NUQVRVU19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fQ0MzWFhfQ09ORklHX0NUUkwgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9DQzNYWF9DT05GSUdfQ1RSTF9NRU1fSUNfVE9fRU4gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDEwICAvLyBUaGlzIGJpdCBpcyB1c2VkIHRvIGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aW1lb3V0IG1lY2hhbmlzbSBmb3IgdG9wX29jcF9pYworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoZm9yIGRlYnVnIHB1cm9wc2UpLiBXaGVuIDEgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLCBpbiBjYXNlIGFueSBvY3Agc2xhdmUgZG9lc24ndAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnaXZlIHNyZXNwb25zZSB3aXRoaW4gMTYgY3lsY2xlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0b3BfaWMgd2lsbCBnaXZlIGVycm9yIHJlc3BvbnNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0c2VsZiB0byBhdm9pZCBidXMgaGFuZ2UuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9DQzNYWF9DT05GSUdfQ1RSTF9NRU1fQUxUX1BDX0VOX0FQUFMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA4ICAvLyAxIGJpdCBzaG91bGQgYmUgYWNjZXNzaWJsZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIGRldmluaXQuIFRoaXMgd2lsbCBlbmFibGUgMHg0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhY2sgZm9yIGFwcHMgcHJvY2Vzc29yCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9DQzNYWF9DT05GSUdfQ1RSTF9NRU1fQUxUX1BDX0VOX05XIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNCAgLy8gMSBiaXQsIHNob3VsZCBiZSBhY2Nlc3NpYmxlIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW4gZGV2aW5pdC4gVGhpcyB3aWxsIGVuYWJsZSAweDQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFjayBmb3IgbncgcHJvY2Vzc29yCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9DQzNYWF9DT05GSUdfQ1RSTF9NRU1fRVhURU5EX05XX1JPTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIgIC8vIFdoZW4gc2V0IE5XIGNhbiB0YWtlIG92ZXIgYXBwcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByb20gYW5kIGZsYXNoIHZpYSBJRENPREUgYnVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBcHBzIHdpbGwgYWJsZSB0byBhY2Nlc3MgdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciBvbmx5IGR1cmluZyBkZXZpbml0IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXNldCB2YWx1ZSBzaG91bGQgYmUgMC4KKworI2RlZmluZSBPQ1BfU0hBUkVEX0NDM1hYX0NPTkZJR19DVFJMX01FTV9XTEFOX0hPU1RfSU5URl9TRUwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyBXaGVuIHRoaXMgYml0IGlzIHNldCB0byAwIFdQU0kKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaG9zdCBpbnRlcmZhY2Ugd2lsIGJlIHNlbGVjdGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIHRoaXMgYml0IGlzIHNldCB0byAxICwgV0xBTgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBob3N0IGFzeW5jIGJyaWRnZSB3aWxsIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNlbGVjdGVkLgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0NDM1hYX1NIQVJFRF9NRU1fU0VMX0xTQiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0NDM1hYX1NIQVJFRF9NRU1fU0VMX0xTQl9NRU1fU0hBUkVEX01FTV9TRUxfTFNCX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNGRkZGRkZGICAvLyBUaGlzIHJlZ2lzdGVyIHByb3ZpZGVzIG1lbXNzIFJBTQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gY29uZmlndXJhdGlvbiBmb3IgY29sdW1uIDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gOS4gMyBiaXRzIGFyZSBhbGxvY2F0ZWQgcGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbHVtbi4gVGhpcyByZWdpc3RlciBpcyByZXF1aXJlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBiZSBjb25maWd1cmVkIGJlZm9yZSBzdGFydGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSQU0gYWNjZXNzLiBDaGFuZ2luZyByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXR0aW5nIHdoaWxlIGNvZGUgaXMgcnVubmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIHJlc3VsdCBpbnRvIHVucHJlZGljdGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWVtb3J5IGJlaGF2aW91ci4gUmVnaXN0ZXIgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3VwcG9ydGVkIHRvIGNvbmZpZ3VyZWQgb25lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhZnRlciBjb3JlIGlzIGJvb3RlZCB1cC4gMyBiaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5jb2RpbmcgcGVyIGNvbHVtbiBpcyBhcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb2xsb3dzOiB3aGVuIDAwMCA6IFdMQU4sIDAwMToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTldQLCAwMTA6IEFQUFMsIDAxMTogUEhZLCAxMDA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9DTEEgY29sdW1uIDAgc2VsZWN0OiBiaXQgWzI6MF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOndoZW4gMDAwIC0+IFdMQU4sMDAxIC0+IE5XUCwwMTAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLT4gQVBQUywgMDExIC0+IFBIWSwgMTAwIC0+IE9DTEEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29sdW1uIDEgc2VsZWN0OiBiaXQgWzU6M10KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOmNvbHVtbiAyIHNlbGVjdDogYml0IFs4IDogNl06CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbHVtbiAzIHNlbGVjdCA6IGJpdCBbMTE6IDldCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbHVtbiA0IHNlbGVjdCA6IGJpdCBbMTQ6MTJdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbHVtbiA1IHNlbGVjdCA6IGJpdCBbMTc6MTVdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbHVtbiA2IHNlbGVjdCA6IGJpdCBbMjA6MThdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbHVtbiA3IHNlbGVjdCA6IGJpdCBbMjM6MjFdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbHVtbiA4IHNlbGVjdCA6IGJpdCBbMjY6MjRdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbHVtbiA5IHNlbGVjdCA6IGJpdCBbMjk6MjddCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbHVtbiAxMCBzZWxlY3QKKworI2RlZmluZSBPQ1BfU0hBUkVEX0NDM1hYX1NIQVJFRF9NRU1fU0VMX0xTQl9NRU1fU0hBUkVEX01FTV9TRUxfTFNCX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19DQzNYWF9TSEFSRURfTUVNX1NFTF9NU0IgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9DQzNYWF9TSEFSRURfTUVNX1NFTF9NU0JfTUVNX1NIQVJFRF9NRU1fU0VMX01TQl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEZGRiAgLy8gVGhpcyByZWdpc3RlciBwcm92aWRlcyBtZW1zcyBSQU0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29sdW1uIGNvbmZpZ3VyYXRpb24gZm9yIGNvbHVtbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxMCB0byAxNS4gMyBiaXRzIGFyZSBhbGxvY2F0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGVyIGNvbHVtbi4gVGhpcyByZWdpc3RlciBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXF1aXJlZCB0byBiZSBjb25maWd1cmVkIGJlZm9yZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFydGluZyBSQU0gYWNjZXNzLiBDaGFuZ2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciBzZXR0aW5nIHdoaWxlIGNvZGUgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcnVubmluZyB3aWxsIHJlc3VsdCBpbnRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVucHJlZGljdGFibGUgbWVtb3J5IGJlaGF2aW91ci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVnaXN0ZXIgaXMgc3VwcG9ydGVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbmZpZ3VyZWQgb25lcyBhZnRlciBjb3JlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJvb3RlZCB1cC4gMyBiaXQgZW5jb2RpbmcgcGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbHVtbiBpcyBhcyBmb2xsb3dzOiB3aGVuIDAwMCA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdMQU4sIDAwMTogTldQLCAwMTA6IEFQUFMsIDAxMToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUEhZLCAxMDA6IE9DTEEgY29sdW1uIDExIHNlbGVjdCA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdCBbMjowXSBjb2x1bW4gMTIgc2VsZWN0IDogYml0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFs1OjNdIGNvbHVtbiAxMyBzZWxlY3QgOiBiaXQgWzggOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA2XSBjb2x1bW4gMTQgc2VsZWN0IDoKKworI2RlZmluZSBPQ1BfU0hBUkVEX0NDM1hYX1NIQVJFRF9NRU1fU0VMX01TQl9NRU1fU0hBUkVEX01FTV9TRUxfTVNCX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19XTEFOX0VMUF9XQUtFX0VOIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfV0xBTl9FTFBfV0FLRV9FTl9NRU1fV0xBTl9FTFBfV0FLRV9FTiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIHdoZW4gJzEnIDogc2lnbmFsIHdpbGwgZW5hYmxlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFTFAgcG93ZXIgZG9hbWluIHdoZW4gJzAnOiBFTFAgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm90IHBvd2VyZWQgdXAuCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fREVWSU5JVF9ST01fU1RBUlRfQUREUiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0RFVklOSVRfUk9NX1NUQVJUX0FERFJfTUVNX0RFVklOSVRfUk9NX1NUQVJUX0FERFJfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIDMyIGJpdCwgV3JpdGFibGUgb25seSBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGV2aW5pdCwgYW5kIHdob2xlIDMyIGJpdCBzaG91bGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmUgb3V0cHV0IG9mIHRoZSBjb25maWcgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbW9kdWxlLiBUaGlzIHJlZ2lzdGVyIGlzIG5vdCB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICwgc2ltaWxhciByZWdpc3RlciBhdmFpbGJsZSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUFJDTSBzcGFjZS4KKworI2RlZmluZSBPQ1BfU0hBUkVEX0RFVklOSVRfUk9NX1NUQVJUX0FERFJfTUVNX0RFVklOSVRfUk9NX1NUQVJUX0FERFJfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0RFVklOSVRfUk9NX0VORF9BRERSIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfREVWSU5JVF9ST01fRU5EX0FERFJfTUVNX0RFVklOSVRfUk9NX0VORF9BRERSX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyAzMiBiaXQsIFdyaXRhYmxlIG9ubHkgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRldmluaXQsIGFuZCB3aG9sZSAzMiBiaXQgc2hvdWxkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJlIG91dHB1dCBvZiB0aGUgY29uZmlnIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1vZHVsZS4KKworI2RlZmluZSBPQ1BfU0hBUkVEX0RFVklOSVRfUk9NX0VORF9BRERSX01FTV9ERVZJTklUX1JPTV9FTkRfQUREUl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fU1NCRF9TRUVEIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfU1NCRF9TRUVEX01FTV9TU0JEX1NFRURfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIDMyIGJpdCwgV3JpdGFibGUgb25seSBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGV2aW5pdCwgYW5kIHdob2xlIDMyIGJpdCBzaG91bGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmUgb3V0cHV0IG9mIHRoZSBjb25maWcgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbW9kdWxlLgorCisjZGVmaW5lIE9DUF9TSEFSRURfU1NCRF9TRUVEX01FTV9TU0JEX1NFRURfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX1NTQkRfQ0hLIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfU1NCRF9DSEtfTUVNX1NTQkRfQ0hLX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyAzMiBiaXQsIFdyaXRhYmxlIG9ubHkgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRldmluaXQsIGFuZCB3aG9sZSAzMiBiaXQgc2hvdWxkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJlIG91dHB1dCBvZiB0aGUgY29uZmlnIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1vZHVsZS4KKworI2RlZmluZSBPQ1BfU0hBUkVEX1NTQkRfQ0hLX01FTV9TU0JEX0NIS19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fU1NCRF9QT0xZX1NFTCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX1NTQkRfUE9MWV9TRUxfTUVNX1NTQkRfUE9MWV9TRUxfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDMgIC8vIDIgYml0LCBXcml0YWJsZSBvbmx5IGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZXZpbml0LCBhbmQgd2hvbGUgMiBiaXQgc2hvdWxkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJlIG91dHB1dCBvZiB0aGUgY29uZmlnIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1vZHVsZS4KKworI2RlZmluZSBPQ1BfU0hBUkVEX1NTQkRfUE9MWV9TRUxfTUVNX1NTQkRfUE9MWV9TRUxfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX1NQQVJFX1JFR18wIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfU1BBUkVfUkVHXzBfTUVNX1NQQVJFX1JFR18wX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyBEZXZpbml0IGNvZGUgc2hvdWxkIGxvb2sgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZXRoZXIgY29ycmVzcG9uZGluZyBmdXNlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJsb3duIGFuZCBpZiBibG93biB3cml0ZSB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMTF0aCBiaXQgb2YgdGhpcyByZWdpc3RlciB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkaXNhYmxlIGZsc2h0c3QgaW50ZXJmYWNlCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9TUEFSRV9SRUdfMF9NRU1fU1BBUkVfUkVHXzBfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX1NQQVJFX1JFR18xIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfU1BBUkVfUkVHXzFfTUVNX1NQQVJFX1JFR18xX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyBOV1AgU29mdHdhcmUgcmVnaXN0ZXIKKworI2RlZmluZSBPQ1BfU0hBUkVEX1NQQVJFX1JFR18xX01FTV9TUEFSRV9SRUdfMV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fU1BBUkVfUkVHXzIgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9TUEFSRV9SRUdfMl9NRU1fU1BBUkVfUkVHXzJfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIE5XUCBTb2Z0d2FyZSByZWdpc3RlcgorCisjZGVmaW5lIE9DUF9TSEFSRURfU1BBUkVfUkVHXzJfTUVNX1NQQVJFX1JFR18yX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19TUEFSRV9SRUdfMyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX1NQQVJFX1JFR18zX01FTV9TUEFSRV9SRUdfM19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gQVBQUyBTb2Z0d2FyZSByZWdpc3RlcgorCisjZGVmaW5lIE9DUF9TSEFSRURfU1BBUkVfUkVHXzNfTUVNX1NQQVJFX1JFR18zX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18wX01FTV9HUElPX1BBRF9DT05GSUdfMF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEZGRiAgLy8gR1BJTyAwIHJlZ2lzdGVyOiAiQml0IDAgLSAzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgZm9yIFBBRCBJTyBtb2RlIHNlbGVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW9fcmVnaXN0ZXI9eyAiIiAwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVswXSIiIiIiIiAiIiAxID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsxXSIiIiIiIiAiIiAyID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsyXSIiIiIiIiAiIiAzID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVszXSIiIiIgNCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9ERU4iIiIiIC0tPiBXaGVuIGxldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBkaXNhYmxlcyB0aGUgUE1PUyB4dG9ycyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgb3V0cHV0IHN0YWdlcyBtYWtpbmcgdGhlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcGVuLWRyYWluIHR5cGUuIiAiRm9yIGV4YW1wbGUgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSBvZiBJMkMgVmFsdWUgZ2V0cyBsYXRjaGVkIGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJpc2luZyBlZGdlIG9mIFJFVDMzLiIiIiAiIiIgNSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSTJNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggMm1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZSIiIiAiIiIgNiA9PiAiIiIiSTRNQUVOIiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtLT4gTGV2ZWwg4oCYMeKAmSBlbmFibGVzIHRoZSBhcHByb3gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIG91dHB1dCBzdGFnZSIiIiAiIiIgNyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSThNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggOG1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZS4gTm90ZTogYW55IGRyaXZlIHN0cmVuZ3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJldHdlZW4gMm1BIGFuZCAxNG1BIGNhbiBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvYnRhaW5lZCB3aXRoIGNvbWJpbmF0aW9uIG9mIDJtQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgYW5kIDhtQS4iIiIgIiIiIDggPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BVRU4iIiIiIC0tPiAxMHVBIHB1bGwgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiA5ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQREVOIiIiIiAtLT4gMTB1QSBwdWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvd24gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiAxMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9FX04iIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBsZXZlbCDigJgw4oCZIGVuYWJsZXMgdGhlIElETworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBQQUQgcGF0aC4gRWxzZSBQQUQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpc3RhdGVkIChleGNlcHQgZm9yIHRoZSBQVS9QRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgaW5kZXBlbmRlbnQpLiIgIlZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldHMgbGF0Y2hlZCBhdCByaXNpbmcgZWRnZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRVQzMyIiIiAiIiIgMTEgPT4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OX09WIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyaXJkZS4gd2hlbiBiaXQgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljICcxJyBJT0VfTiAoYml0IDQpIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgY29udHJvbCBJTyBJT0VfTiBzaWduYWwgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTiBpcyBjb250cm9sIHZpYSBzZWxlY3RlZCBIVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYy4gc3Ryb25nIFBVTEwgVVAgYW5kIFBVTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93biBjb250cm9sIGlzIGRpc2FibGVkIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gYm90aCBjb250cm9scyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMF9NRU1fR1BJT19QQURfQ09ORklHXzBfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18xIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzFfTUVNX0dQSU9fUEFEX0NPTkZJR18xX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwRkZGICAvLyBHUElPIDAgcmVnaXN0ZXI6ICJCaXQgMCAtIDMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCBmb3IgUEFEIElPIG1vZGUgc2VsZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpb19yZWdpc3Rlcj17ICIiIDAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzBdIiIiIiIiICIiIDEgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzFdIiIiIiIiICIiIDIgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzJdIiIiIiIiICIiIDMgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzNdIiIiIiA0ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0RFTiIiIiIgLS0+IFdoZW4gbGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGRpc2FibGVzIHRoZSBQTU9TIHh0b3JzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvdXRwdXQgc3RhZ2VzIG1ha2luZyB0aGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wZW4tZHJhaW4gdHlwZS4iIGl0IGNhbiBiZSB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBJMkMgdHlwZSBvZiBwZXJpcGhlcmFscy4gNSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSTJNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggMm1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZSIiIiAiIiIgNiA9PiAiIiIiSTRNQUVOIiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtLT4gTGV2ZWwg4oCYMeKAmSBlbmFibGVzIHRoZSBhcHByb3gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIG91dHB1dCBzdGFnZSIiIiAiIiIgNyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSThNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggOG1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZS4gTm90ZTogYW55IGRyaXZlIHN0cmVuZ3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJldHdlZW4gMm1BIGFuZCAxNG1BIGNhbiBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvYnRhaW5lZCB3aXRoIGNvbWJpbmF0aW9uIG9mIDJtQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgYW5kIDhtQS4iIiIgIiIiIDggPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BVRU4iIiIiIC0tPiAxMHVBIHB1bGwgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiA5ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQREVOIiIiIiAtLT4gMTB1QSBwdWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvd24gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiAxMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9FX04iIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBsZXZlbCDigJgw4oCZIGVuYWJsZXMgdGhlIElETworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBQQUQgcGF0aC4gRWxzZSBQQUQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpc3RhdGVkIChleGNlcHQgZm9yIHRoZSBQVS9QRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgaW5kZXBlbmRlbnQpLiIgIlZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldHMgbGF0Y2hlZCBhdCByaXNpbmcgZWRnZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRVQzMyIiIiAiIiIgMTEgPT4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OX09WIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyaXJkZS4gd2hlbiBiaXQgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljICcxJyBJT0VfTiAoYml0IDQpIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgY29udHJvbCBJTyBJT0VfTiBzaWduYWwgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTiBpcyBjb250cm9sIHZpYSBzZWxlY3RlZCBIVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYy4gc3Ryb25nIFBVTEwgVVAgYW5kIFBVTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93biBjb250cm9sIGlzIGRpc2FibGVkIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gYm90aCBjb250cm9scyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMV9NRU1fR1BJT19QQURfQ09ORklHXzFfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18yIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzJfTUVNX0dQSU9fUEFEX0NPTkZJR18yX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwRkZGICAvLyBHUElPIDAgcmVnaXN0ZXI6ICJCaXQgMCAtIDMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCBmb3IgUEFEIElPIG1vZGUgc2VsZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpb19yZWdpc3Rlcj17ICIiIDAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzBdIiIiIiIiICIiIDEgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzFdIiIiIiIiICIiIDIgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzJdIiIiIiIiICIiIDMgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzNdIiIiIiA0ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0RFTiIiIiIgLS0+IFdoZW4gbGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGRpc2FibGVzIHRoZSBQTU9TIHh0b3JzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvdXRwdXQgc3RhZ2VzIG1ha2luZyB0aGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wZW4tZHJhaW4gdHlwZS4iIGl0IGNhbiBiZSB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBJMkMgdHlwZSBvZiBwZXJpcGhlcmFscy4gNSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSTJNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggMm1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZSIiIiAiIiIgNiA9PiAiIiIiSTRNQUVOIiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtLT4gTGV2ZWwg4oCYMeKAmSBlbmFibGVzIHRoZSBhcHByb3gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIG91dHB1dCBzdGFnZSIiIiAiIiIgNyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSThNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggOG1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZS4gTm90ZTogYW55IGRyaXZlIHN0cmVuZ3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJldHdlZW4gMm1BIGFuZCAxNG1BIGNhbiBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvYnRhaW5lZCB3aXRoIGNvbWJpbmF0aW9uIG9mIDJtQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgYW5kIDhtQS4iIiIgIiIiIDggPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BVRU4iIiIiIC0tPiAxMHVBIHB1bGwgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiA5ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQREVOIiIiIiAtLT4gMTB1QSBwdWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvd24gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiAxMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9FX04iIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBsZXZlbCDigJgw4oCZIGVuYWJsZXMgdGhlIElETworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBQQUQgcGF0aC4gRWxzZSBQQUQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpc3RhdGVkIChleGNlcHQgZm9yIHRoZSBQVS9QRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgaW5kZXBlbmRlbnQpLiIgIlZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldHMgbGF0Y2hlZCBhdCByaXNpbmcgZWRnZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRVQzMyIiIiAiIiIgMTEgPT4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OX09WIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyaXJkZS4gd2hlbiBiaXQgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljICcxJyBJT0VfTiAoYml0IDQpIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgY29udHJvbCBJTyBJT0VfTiBzaWduYWwgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTiBpcyBjb250cm9sIHZpYSBzZWxlY3RlZCBIVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYy4gc3Ryb25nIFBVTEwgVVAgYW5kIFBVTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93biBjb250cm9sIGlzIGRpc2FibGVkIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gYm90aCBjb250cm9scyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMl9NRU1fR1BJT19QQURfQ09ORklHXzJfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18zIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzNfTUVNX0dQSU9fUEFEX0NPTkZJR18zX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwRkZGICAvLyBHUElPIDAgcmVnaXN0ZXI6ICJCaXQgMCAtIDMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCBmb3IgUEFEIElPIG1vZGUgc2VsZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpb19yZWdpc3Rlcj17ICIiIDAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzBdIiIiIiIiICIiIDEgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzFdIiIiIiIiICIiIDIgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzJdIiIiIiIiICIiIDMgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzNdIiIiIiA0ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0RFTiIiIiIgLS0+IFdoZW4gbGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGRpc2FibGVzIHRoZSBQTU9TIHh0b3JzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvdXRwdXQgc3RhZ2VzIG1ha2luZyB0aGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wZW4tZHJhaW4gdHlwZS4iIGl0IGNhbiBiZSB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBJMkMgdHlwZSBvZiBwZXJpcGhlcmFscy4gNSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSTJNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggMm1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZSIiIiAiIiIgNiA9PiAiIiIiSTRNQUVOIiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtLT4gTGV2ZWwg4oCYMeKAmSBlbmFibGVzIHRoZSBhcHByb3gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIG91dHB1dCBzdGFnZSIiIiAiIiIgNyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSThNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggOG1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZS4gTm90ZTogYW55IGRyaXZlIHN0cmVuZ3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJldHdlZW4gMm1BIGFuZCAxNG1BIGNhbiBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvYnRhaW5lZCB3aXRoIGNvbWJpbmF0aW9uIG9mIDJtQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgYW5kIDhtQS4iIiIgIiIiIDggPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BVRU4iIiIiIC0tPiAxMHVBIHB1bGwgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiA5ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQREVOIiIiIiAtLT4gMTB1QSBwdWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvd24gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiAxMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9FX04iIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBsZXZlbCDigJgw4oCZIGVuYWJsZXMgdGhlIElETworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBQQUQgcGF0aC4gRWxzZSBQQUQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpc3RhdGVkIChleGNlcHQgZm9yIHRoZSBQVS9QRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgaW5kZXBlbmRlbnQpLiIgIlZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldHMgbGF0Y2hlZCBhdCByaXNpbmcgZWRnZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRVQzMyIiIiAiIiIgMTEgPT4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OX09WIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyaXJkZS4gd2hlbiBiaXQgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljICcxJyBJT0VfTiAoYml0IDQpIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgY29udHJvbCBJTyBJT0VfTiBzaWduYWwgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTiBpcyBjb250cm9sIHZpYSBzZWxlY3RlZCBIVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYy4gc3Ryb25nIFBVTEwgVVAgYW5kIFBVTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93biBjb250cm9sIGlzIGRpc2FibGVkIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gYm90aCBjb250cm9scyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfM19NRU1fR1BJT19QQURfQ09ORklHXzNfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR180IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzRfTUVNX0dQSU9fUEFEX0NPTkZJR180X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwRkZGICAvLyBHUElPIDAgcmVnaXN0ZXI6ICJCaXQgMCAtIDMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCBmb3IgUEFEIElPIG1vZGUgc2VsZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpb19yZWdpc3Rlcj17ICIiIDAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzBdIiIiIiIiICIiIDEgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzFdIiIiIiIiICIiIDIgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzJdIiIiIiIiICIiIDMgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzNdIiIiIiA0ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0RFTiIiIiIgLS0+IFdoZW4gbGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGRpc2FibGVzIHRoZSBQTU9TIHh0b3JzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvdXRwdXQgc3RhZ2VzIG1ha2luZyB0aGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wZW4tZHJhaW4gdHlwZS4iIGl0IGNhbiBiZSB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBJMkMgdHlwZSBvZiBwZXJpcGhlcmFscy4gNSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSTJNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggMm1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZSIiIiAiIiIgNiA9PiAiIiIiSTRNQUVOIiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtLT4gTGV2ZWwg4oCYMeKAmSBlbmFibGVzIHRoZSBhcHByb3gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIG91dHB1dCBzdGFnZSIiIiAiIiIgNyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSThNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggOG1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZS4gTm90ZTogYW55IGRyaXZlIHN0cmVuZ3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJldHdlZW4gMm1BIGFuZCAxNG1BIGNhbiBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvYnRhaW5lZCB3aXRoIGNvbWJpbmF0aW9uIG9mIDJtQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgYW5kIDhtQS4iIiIgIiIiIDggPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BVRU4iIiIiIC0tPiAxMHVBIHB1bGwgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiA5ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQREVOIiIiIiAtLT4gMTB1QSBwdWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvd24gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiAxMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9FX04iIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBsZXZlbCDigJgw4oCZIGVuYWJsZXMgdGhlIElETworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBQQUQgcGF0aC4gRWxzZSBQQUQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpc3RhdGVkIChleGNlcHQgZm9yIHRoZSBQVS9QRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgaW5kZXBlbmRlbnQpLiIgIlZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldHMgbGF0Y2hlZCBhdCByaXNpbmcgZWRnZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRVQzMyIiIiAiIiIgMTEgPT4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OX09WIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyaXJkZS4gd2hlbiBiaXQgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljICcxJyBJT0VfTiAoYml0IDQpIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgY29udHJvbCBJTyBJT0VfTiBzaWduYWwgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTiBpcyBjb250cm9sIHZpYSBzZWxlY3RlZCBIVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYy4gc3Ryb25nIFBVTEwgVVAgYW5kIFBVTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93biBjb250cm9sIGlzIGRpc2FibGVkIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gYm90aCBjb250cm9scyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfNF9NRU1fR1BJT19QQURfQ09ORklHXzRfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR181IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzVfTUVNX0dQSU9fUEFEX0NPTkZJR181X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwRkZGICAvLyBHUElPIDAgcmVnaXN0ZXI6ICJCaXQgMCAtIDMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCBmb3IgUEFEIElPIG1vZGUgc2VsZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpb19yZWdpc3Rlcj17ICIiIDAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzBdIiIiIiIiICIiIDEgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzFdIiIiIiIiICIiIDIgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzJdIiIiIiIiICIiIDMgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzNdIiIiIiA0ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0RFTiIiIiIgLS0+IFdoZW4gbGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGRpc2FibGVzIHRoZSBQTU9TIHh0b3JzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvdXRwdXQgc3RhZ2VzIG1ha2luZyB0aGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wZW4tZHJhaW4gdHlwZS4iIGl0IGNhbiBiZSB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBJMkMgdHlwZSBvZiBwZXJpcGhlcmFscy4gNSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSTJNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggMm1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZSIiIiAiIiIgNiA9PiAiIiIiSTRNQUVOIiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtLT4gTGV2ZWwg4oCYMeKAmSBlbmFibGVzIHRoZSBhcHByb3gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIG91dHB1dCBzdGFnZSIiIiAiIiIgNyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSThNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggOG1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZS4gTm90ZTogYW55IGRyaXZlIHN0cmVuZ3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJldHdlZW4gMm1BIGFuZCAxNG1BIGNhbiBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvYnRhaW5lZCB3aXRoIGNvbWJpbmF0aW9uIG9mIDJtQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgYW5kIDhtQS4iIiIgIiIiIDggPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BVRU4iIiIiIC0tPiAxMHVBIHB1bGwgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiA5ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQREVOIiIiIiAtLT4gMTB1QSBwdWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvd24gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiAxMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9FX04iIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBsZXZlbCDigJgw4oCZIGVuYWJsZXMgdGhlIElETworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBQQUQgcGF0aC4gRWxzZSBQQUQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpc3RhdGVkIChleGNlcHQgZm9yIHRoZSBQVS9QRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgaW5kZXBlbmRlbnQpLiIgIlZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldHMgbGF0Y2hlZCBhdCByaXNpbmcgZWRnZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRVQzMyIiIiAiIiIgMTEgPT4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OX09WIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyaXJkZS4gd2hlbiBiaXQgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljICcxJyBJT0VfTiAoYml0IDQpIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgY29udHJvbCBJTyBJT0VfTiBzaWduYWwgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTiBpcyBjb250cm9sIHZpYSBzZWxlY3RlZCBIVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYy4gc3Ryb25nIFBVTEwgVVAgYW5kIFBVTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93biBjb250cm9sIGlzIGRpc2FibGVkIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gYm90aCBjb250cm9scyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfNV9NRU1fR1BJT19QQURfQ09ORklHXzVfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR182IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzZfTUVNX0dQSU9fUEFEX0NPTkZJR182X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwRkZGICAvLyBHUElPIDAgcmVnaXN0ZXI6ICJCaXQgMCAtIDMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCBmb3IgUEFEIElPIG1vZGUgc2VsZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpb19yZWdpc3Rlcj17ICIiIDAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzBdIiIiIiIiICIiIDEgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzFdIiIiIiIiICIiIDIgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzJdIiIiIiIiICIiIDMgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzNdIiIiIiA0ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0RFTiIiIiIgLS0+IFdoZW4gbGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGRpc2FibGVzIHRoZSBQTU9TIHh0b3JzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvdXRwdXQgc3RhZ2VzIG1ha2luZyB0aGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wZW4tZHJhaW4gdHlwZS4iIGl0IGNhbiBiZSB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBJMkMgdHlwZSBvZiBwZXJpcGhlcmFscy4gNSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSTJNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggMm1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZSIiIiAiIiIgNiA9PiAiIiIiSTRNQUVOIiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtLT4gTGV2ZWwg4oCYMeKAmSBlbmFibGVzIHRoZSBhcHByb3gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIG91dHB1dCBzdGFnZSIiIiAiIiIgNyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSThNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggOG1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZS4gTm90ZTogYW55IGRyaXZlIHN0cmVuZ3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJldHdlZW4gMm1BIGFuZCAxNG1BIGNhbiBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvYnRhaW5lZCB3aXRoIGNvbWJpbmF0aW9uIG9mIDJtQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgYW5kIDhtQS4iIiIgIiIiIDggPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BVRU4iIiIiIC0tPiAxMHVBIHB1bGwgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiA5ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQREVOIiIiIiAtLT4gMTB1QSBwdWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvd24gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiAxMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9FX04iIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBsZXZlbCDigJgw4oCZIGVuYWJsZXMgdGhlIElETworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBQQUQgcGF0aC4gRWxzZSBQQUQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpc3RhdGVkIChleGNlcHQgZm9yIHRoZSBQVS9QRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgaW5kZXBlbmRlbnQpLiIgIlZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldHMgbGF0Y2hlZCBhdCByaXNpbmcgZWRnZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRVQzMyIiIiAiIiIgMTEgPT4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OX09WIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyaXJkZS4gd2hlbiBiaXQgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljICcxJyBJT0VfTiAoYml0IDQpIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgY29udHJvbCBJTyBJT0VfTiBzaWduYWwgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTiBpcyBjb250cm9sIHZpYSBzZWxlY3RlZCBIVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYy4gc3Ryb25nIFBVTEwgVVAgYW5kIFBVTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93biBjb250cm9sIGlzIGRpc2FibGVkIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gYm90aCBjb250cm9scyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfNl9NRU1fR1BJT19QQURfQ09ORklHXzZfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR183IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzdfTUVNX0dQSU9fUEFEX0NPTkZJR183X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwRkZGICAvLyBHUElPIDAgcmVnaXN0ZXI6ICJCaXQgMCAtIDMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCBmb3IgUEFEIElPIG1vZGUgc2VsZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpb19yZWdpc3Rlcj17ICIiIDAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzBdIiIiIiIiICIiIDEgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzFdIiIiIiIiICIiIDIgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzJdIiIiIiIiICIiIDMgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzNdIiIiIiA0ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0RFTiIiIiIgLS0+IFdoZW4gbGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGRpc2FibGVzIHRoZSBQTU9TIHh0b3JzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvdXRwdXQgc3RhZ2VzIG1ha2luZyB0aGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wZW4tZHJhaW4gdHlwZS4iIGl0IGNhbiBiZSB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBJMkMgdHlwZSBvZiBwZXJpcGhlcmFscy4gNSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSTJNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggMm1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZSIiIiAiIiIgNiA9PiAiIiIiSTRNQUVOIiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtLT4gTGV2ZWwg4oCYMeKAmSBlbmFibGVzIHRoZSBhcHByb3gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIG91dHB1dCBzdGFnZSIiIiAiIiIgNyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSThNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggOG1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZS4gTm90ZTogYW55IGRyaXZlIHN0cmVuZ3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJldHdlZW4gMm1BIGFuZCAxNG1BIGNhbiBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvYnRhaW5lZCB3aXRoIGNvbWJpbmF0aW9uIG9mIDJtQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgYW5kIDhtQS4iIiIgIiIiIDggPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BVRU4iIiIiIC0tPiAxMHVBIHB1bGwgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiA5ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQREVOIiIiIiAtLT4gMTB1QSBwdWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvd24gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiAxMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9FX04iIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBsZXZlbCDigJgw4oCZIGVuYWJsZXMgdGhlIElETworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBQQUQgcGF0aC4gRWxzZSBQQUQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpc3RhdGVkIChleGNlcHQgZm9yIHRoZSBQVS9QRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgaW5kZXBlbmRlbnQpLiIgIlZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldHMgbGF0Y2hlZCBhdCByaXNpbmcgZWRnZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRVQzMyIiIiAiIiIgMTEgPT4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OX09WIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyaXJkZS4gd2hlbiBiaXQgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljICcxJyBJT0VfTiAoYml0IDQpIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgY29udHJvbCBJTyBJT0VfTiBzaWduYWwgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTiBpcyBjb250cm9sIHZpYSBzZWxlY3RlZCBIVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYy4gc3Ryb25nIFBVTEwgVVAgYW5kIFBVTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93biBjb250cm9sIGlzIGRpc2FibGVkIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gYm90aCBjb250cm9scyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfN19NRU1fR1BJT19QQURfQ09ORklHXzdfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR184IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzhfTUVNX0dQSU9fUEFEX0NPTkZJR184X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwRkZGICAvLyBHUElPIDAgcmVnaXN0ZXI6ICJCaXQgMCAtIDMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCBmb3IgUEFEIElPIG1vZGUgc2VsZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpb19yZWdpc3Rlcj17ICIiIDAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzBdIiIiIiIiICIiIDEgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzFdIiIiIiIiICIiIDIgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzJdIiIiIiIiICIiIDMgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzNdIiIiIiA0ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0RFTiIiIiIgLS0+IFdoZW4gbGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGRpc2FibGVzIHRoZSBQTU9TIHh0b3JzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvdXRwdXQgc3RhZ2VzIG1ha2luZyB0aGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wZW4tZHJhaW4gdHlwZS4iIGl0IGNhbiBiZSB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBJMkMgdHlwZSBvZiBwZXJpcGhlcmFscy4gNSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSTJNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggMm1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZSIiIiAiIiIgNiA9PiAiIiIiSTRNQUVOIiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtLT4gTGV2ZWwg4oCYMeKAmSBlbmFibGVzIHRoZSBhcHByb3gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIG91dHB1dCBzdGFnZSIiIiAiIiIgNyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSThNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggOG1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZS4gTm90ZTogYW55IGRyaXZlIHN0cmVuZ3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJldHdlZW4gMm1BIGFuZCAxNG1BIGNhbiBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvYnRhaW5lZCB3aXRoIGNvbWJpbmF0aW9uIG9mIDJtQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgYW5kIDhtQS4iIiIgIiIiIDggPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BVRU4iIiIiIC0tPiAxMHVBIHB1bGwgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiA5ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQREVOIiIiIiAtLT4gMTB1QSBwdWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvd24gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiAxMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9FX04iIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBsZXZlbCDigJgw4oCZIGVuYWJsZXMgdGhlIElETworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBQQUQgcGF0aC4gRWxzZSBQQUQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpc3RhdGVkIChleGNlcHQgZm9yIHRoZSBQVS9QRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgaW5kZXBlbmRlbnQpLiIgIlZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldHMgbGF0Y2hlZCBhdCByaXNpbmcgZWRnZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRVQzMyIiIiAiIiIgMTEgPT4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OX09WIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyaXJkZS4gd2hlbiBiaXQgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljICcxJyBJT0VfTiAoYml0IDQpIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgY29udHJvbCBJTyBJT0VfTiBzaWduYWwgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTiBpcyBjb250cm9sIHZpYSBzZWxlY3RlZCBIVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYy4gc3Ryb25nIFBVTEwgVVAgYW5kIFBVTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93biBjb250cm9sIGlzIGRpc2FibGVkIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gYm90aCBjb250cm9scyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfOF9NRU1fR1BJT19QQURfQ09ORklHXzhfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR185IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzlfTUVNX0dQSU9fUEFEX0NPTkZJR185X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwRkZGICAvLyBHUElPIDAgcmVnaXN0ZXI6ICJCaXQgMCAtIDMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCBmb3IgUEFEIElPIG1vZGUgc2VsZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpb19yZWdpc3Rlcj17ICIiIDAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzBdIiIiIiIiICIiIDEgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzFdIiIiIiIiICIiIDIgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzJdIiIiIiIiICIiIDMgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzNdIiIiIiA0ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0RFTiIiIiIgLS0+IFdoZW4gbGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGRpc2FibGVzIHRoZSBQTU9TIHh0b3JzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvdXRwdXQgc3RhZ2VzIG1ha2luZyB0aGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wZW4tZHJhaW4gdHlwZS4iIGl0IGNhbiBiZSB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBJMkMgdHlwZSBvZiBwZXJpcGhlcmFscy4gNSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSTJNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggMm1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZSIiIiAiIiIgNiA9PiAiIiIiSTRNQUVOIiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtLT4gTGV2ZWwg4oCYMeKAmSBlbmFibGVzIHRoZSBhcHByb3gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIG91dHB1dCBzdGFnZSIiIiAiIiIgNyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSThNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggOG1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZS4gTm90ZTogYW55IGRyaXZlIHN0cmVuZ3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJldHdlZW4gMm1BIGFuZCAxNG1BIGNhbiBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvYnRhaW5lZCB3aXRoIGNvbWJpbmF0aW9uIG9mIDJtQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgYW5kIDhtQS4iIiIgIiIiIDggPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BVRU4iIiIiIC0tPiAxMHVBIHB1bGwgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiA5ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQREVOIiIiIiAtLT4gMTB1QSBwdWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvd24gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiAxMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9FX04iIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBsZXZlbCDigJgw4oCZIGVuYWJsZXMgdGhlIElETworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBQQUQgcGF0aC4gRWxzZSBQQUQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpc3RhdGVkIChleGNlcHQgZm9yIHRoZSBQVS9QRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgaW5kZXBlbmRlbnQpLiIgIlZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldHMgbGF0Y2hlZCBhdCByaXNpbmcgZWRnZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRVQzMyIiIiAiIiIgMTEgPT4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OX09WIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyaXJkZS4gd2hlbiBiaXQgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljICcxJyBJT0VfTiAoYml0IDQpIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgY29udHJvbCBJTyBJT0VfTiBzaWduYWwgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTiBpcyBjb250cm9sIHZpYSBzZWxlY3RlZCBIVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYy4gc3Ryb25nIFBVTEwgVVAgYW5kIFBVTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93biBjb250cm9sIGlzIGRpc2FibGVkIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gYm90aCBjb250cm9scyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfOV9NRU1fR1BJT19QQURfQ09ORklHXzlfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18xMCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18xMF9NRU1fR1BJT19QQURfQ09ORklHXzEwX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwRkZGICAvLyBHUElPIDAgcmVnaXN0ZXI6ICJCaXQgMCAtIDMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCBmb3IgUEFEIElPIG1vZGUgc2VsZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpb19yZWdpc3Rlcj17ICIiIDAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzBdIiIiIiIiICIiIDEgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzFdIiIiIiIiICIiIDIgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzJdIiIiIiIiICIiIDMgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzNdIiIiIiA0ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0RFTiIiIiIgLS0+IFdoZW4gbGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGRpc2FibGVzIHRoZSBQTU9TIHh0b3JzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvdXRwdXQgc3RhZ2VzIG1ha2luZyB0aGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wZW4tZHJhaW4gdHlwZS4iIGl0IGNhbiBiZSB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBJMkMgdHlwZSBvZiBwZXJpcGhlcmFscy4gNSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSTJNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggMm1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZSIiIiAiIiIgNiA9PiAiIiIiSTRNQUVOIiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtLT4gTGV2ZWwg4oCYMeKAmSBlbmFibGVzIHRoZSBhcHByb3gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIG91dHB1dCBzdGFnZSIiIiAiIiIgNyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSThNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggOG1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZS4gTm90ZTogYW55IGRyaXZlIHN0cmVuZ3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJldHdlZW4gMm1BIGFuZCAxNG1BIGNhbiBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvYnRhaW5lZCB3aXRoIGNvbWJpbmF0aW9uIG9mIDJtQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgYW5kIDhtQS4iIiIgIiIiIDggPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BVRU4iIiIiIC0tPiAxMHVBIHB1bGwgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiA5ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQREVOIiIiIiAtLT4gMTB1QSBwdWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvd24gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiAxMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9FX04iIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBsZXZlbCDigJgw4oCZIGVuYWJsZXMgdGhlIElETworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBQQUQgcGF0aC4gRWxzZSBQQUQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpc3RhdGVkIChleGNlcHQgZm9yIHRoZSBQVS9QRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgaW5kZXBlbmRlbnQpLiIgIlZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldHMgbGF0Y2hlZCBhdCByaXNpbmcgZWRnZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRVQzMyIiIiAiIiIgMTEgPT4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OX09WIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyaXJkZS4gd2hlbiBiaXQgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljICcxJyBJT0VfTiAoYml0IDQpIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgY29udHJvbCBJTyBJT0VfTiBzaWduYWwgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTiBpcyBjb250cm9sIHZpYSBzZWxlY3RlZCBIVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYy4gc3Ryb25nIFBVTEwgVVAgYW5kIFBVTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93biBjb250cm9sIGlzIGRpc2FibGVkIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gYm90aCBjb250cm9scyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMTBfTUVNX0dQSU9fUEFEX0NPTkZJR18xMF9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzExIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzExX01FTV9HUElPX1BBRF9DT05GSUdfMTFfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBGRkYgIC8vIEdQSU8gMCByZWdpc3RlcjogIkJpdCAwIC0gMyBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VkIGZvciBQQUQgSU8gbW9kZSBzZWxlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlvX3JlZ2lzdGVyPXsgIiIgMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMF0iIiIiIiIgIiIgMSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMV0iIiIiIiIgIiIgMiA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMl0iIiIiIiIgIiIgMyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbM10iIiIiIDQgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPREVOIiIiIiAtLT4gV2hlbiBsZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgZGlzYWJsZXMgdGhlIFBNT1MgeHRvcnMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG91dHB1dCBzdGFnZXMgbWFraW5nIHRoZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3Blbi1kcmFpbiB0eXBlLiIgaXQgY2FuIGJlIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIEkyQyB0eXBlIG9mIHBlcmlwaGVyYWxzLiA1ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJMk1BRU4iIiIiIC0tPiBMZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZXMgdGhlIGFwcHJveCAybUEgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YWdlIiIiICIiIiA2ID0+ICIiIiJJNE1BRU4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0tPiBMZXZlbCDigJgx4oCZIGVuYWJsZXMgdGhlIGFwcHJveAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgb3V0cHV0IHN0YWdlIiIiICIiIiA3ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJOE1BRU4iIiIiIC0tPiBMZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZXMgdGhlIGFwcHJveCA4bUEgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YWdlLiBOb3RlOiBhbnkgZHJpdmUgc3RyZW5ndGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmV0d2VlbiAybUEgYW5kIDE0bUEgY2FuIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9idGFpbmVkIHdpdGggY29tYmluYXRpb24gb2YgMm1BCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBhbmQgOG1BLiIiIiAiIiIgOCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUFVFTiIiIiIgLS0+IDEwdUEgcHVsbCB1cAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAod2VhayBzdHJlbmd0aCkiIiIgIiIiIDkgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BERU4iIiIiIC0tPiAxMHVBIHB1bGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG93biAod2VhayBzdHJlbmd0aCkiIiIgIiIiIDEwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0VfTiIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFsdWUuIGxldmVsIOKAmDDigJkgZW5hYmxlcyB0aGUgSURPCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIFBBRCBwYXRoLiBFbHNlIFBBRCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmlzdGF0ZWQgKGV4Y2VwdCBmb3IgdGhlIFBVL1BECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoaWNoIGFyZSBpbmRlcGVuZGVudCkuIiAiVmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2V0cyBsYXRjaGVkIGF0IHJpc2luZyBlZGdlIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJFVDMzIiIiICIiIiAxMSA9PiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX05fT1YiIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG92ZXJpcmRlLiB3aGVuIGJpdCBpcyBzZXQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgJzEnIElPRV9OIChiaXQgNCkgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBjb250cm9sIElPIElPRV9OIHNpZ25hbCBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OIGlzIGNvbnRyb2wgdmlhIHNlbGVjdGVkIEhXCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljLiBzdHJvbmcgUFVMTCBVUCBhbmQgUFVMTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb3duIGNvbnRyb2wgaXMgZGlzYWJsZWQgZm9yIGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJTydzLiBib3RoIGNvbnRyb2xzIGFyZSB0aWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljIGxldmVsICcwJy4KKworI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18xMV9NRU1fR1BJT19QQURfQ09ORklHXzExX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMTIgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMTJfTUVNX0dQSU9fUEFEX0NPTkZJR18xMl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEZGRiAgLy8gR1BJTyAwIHJlZ2lzdGVyOiAiQml0IDAgLSAzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgZm9yIFBBRCBJTyBtb2RlIHNlbGVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW9fcmVnaXN0ZXI9eyAiIiAwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVswXSIiIiIiIiAiIiAxID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsxXSIiIiIiIiAiIiAyID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsyXSIiIiIiIiAiIiAzID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVszXSIiIiIgNCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9ERU4iIiIiIC0tPiBXaGVuIGxldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBkaXNhYmxlcyB0aGUgUE1PUyB4dG9ycyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgb3V0cHV0IHN0YWdlcyBtYWtpbmcgdGhlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcGVuLWRyYWluIHR5cGUuIiBpdCBjYW4gYmUgdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgSTJDIHR5cGUgb2YgcGVyaXBoZXJhbHMuIDUgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkkyTUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDJtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UiIiIgIiIiIDYgPT4gIiIiIkk0TUFFTiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLS0+IExldmVsIOKAmDHigJkgZW5hYmxlcyB0aGUgYXBwcm94CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBvdXRwdXQgc3RhZ2UiIiIgIiIiIDcgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkk4TUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDhtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UuIE5vdGU6IGFueSBkcml2ZSBzdHJlbmd0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZXR3ZWVuIDJtQSBhbmQgMTRtQSBjYW4gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2J0YWluZWQgd2l0aCBjb21iaW5hdGlvbiBvZiAybUEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIGFuZCA4bUEuIiIiICIiIiA4ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQVUVOIiIiIiAtLT4gMTB1QSBwdWxsIHVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgOSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUERFTiIiIiIgLS0+IDEwdUEgcHVsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb3duICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgMTAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPRV9OIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZS4gbGV2ZWwg4oCYMOKAmSBlbmFibGVzIHRoZSBJRE8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gUEFEIHBhdGguIEVsc2UgUEFEIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaXN0YXRlZCAoZXhjZXB0IGZvciB0aGUgUFUvUEQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYXJlIGluZGVwZW5kZW50KS4iICJWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXRzIGxhdGNoZWQgYXQgcmlzaW5nIGVkZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVUMzMiIiIgIiIiIDExID0+IiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTl9PViIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3ZlcmlyZGUuIHdoZW4gYml0IGlzIHNldCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyAnMScgSU9FX04gKGJpdCA0KSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGNvbnRyb2wgSU8gSU9FX04gc2lnbmFsIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX04gaXMgY29udHJvbCB2aWEgc2VsZWN0ZWQgSFcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMuIHN0cm9uZyBQVUxMIFVQIGFuZCBQVUxMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvd24gY29udHJvbCBpcyBkaXNhYmxlZCBmb3IgYWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPJ3MuIGJvdGggY29udHJvbHMgYXJlIHRpZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgbGV2ZWwgJzAnLgorCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzEyX01FTV9HUElPX1BBRF9DT05GSUdfMTJfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18xMyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18xM19NRU1fR1BJT19QQURfQ09ORklHXzEzX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwRkZGICAvLyBHUElPIDAgcmVnaXN0ZXI6ICJCaXQgMCAtIDMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCBmb3IgUEFEIElPIG1vZGUgc2VsZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpb19yZWdpc3Rlcj17ICIiIDAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzBdIiIiIiIiICIiIDEgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzFdIiIiIiIiICIiIDIgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzJdIiIiIiIiICIiIDMgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzNdIiIiIiA0ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0RFTiIiIiIgLS0+IFdoZW4gbGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGRpc2FibGVzIHRoZSBQTU9TIHh0b3JzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvdXRwdXQgc3RhZ2VzIG1ha2luZyB0aGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wZW4tZHJhaW4gdHlwZS4iIGl0IGNhbiBiZSB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBJMkMgdHlwZSBvZiBwZXJpcGhlcmFscy4gNSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSTJNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggMm1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZSIiIiAiIiIgNiA9PiAiIiIiSTRNQUVOIiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtLT4gTGV2ZWwg4oCYMeKAmSBlbmFibGVzIHRoZSBhcHByb3gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIG91dHB1dCBzdGFnZSIiIiAiIiIgNyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSThNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggOG1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZS4gTm90ZTogYW55IGRyaXZlIHN0cmVuZ3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJldHdlZW4gMm1BIGFuZCAxNG1BIGNhbiBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvYnRhaW5lZCB3aXRoIGNvbWJpbmF0aW9uIG9mIDJtQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgYW5kIDhtQS4iIiIgIiIiIDggPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BVRU4iIiIiIC0tPiAxMHVBIHB1bGwgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiA5ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQREVOIiIiIiAtLT4gMTB1QSBwdWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvd24gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiAxMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9FX04iIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBsZXZlbCDigJgw4oCZIGVuYWJsZXMgdGhlIElETworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBQQUQgcGF0aC4gRWxzZSBQQUQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpc3RhdGVkIChleGNlcHQgZm9yIHRoZSBQVS9QRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgaW5kZXBlbmRlbnQpLiIgIlZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldHMgbGF0Y2hlZCBhdCByaXNpbmcgZWRnZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRVQzMyIiIiAiIiIgMTEgPT4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OX09WIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyaXJkZS4gd2hlbiBiaXQgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljICcxJyBJT0VfTiAoYml0IDQpIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgY29udHJvbCBJTyBJT0VfTiBzaWduYWwgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTiBpcyBjb250cm9sIHZpYSBzZWxlY3RlZCBIVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYy4gc3Ryb25nIFBVTEwgVVAgYW5kIFBVTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93biBjb250cm9sIGlzIGRpc2FibGVkIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gYm90aCBjb250cm9scyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMTNfTUVNX0dQSU9fUEFEX0NPTkZJR18xM19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzE0IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzE0X01FTV9HUElPX1BBRF9DT05GSUdfMTRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBGRkYgIC8vIEdQSU8gMCByZWdpc3RlcjogIkJpdCAwIC0gMyBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VkIGZvciBQQUQgSU8gbW9kZSBzZWxlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlvX3JlZ2lzdGVyPXsgIiIgMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMF0iIiIiIiIgIiIgMSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMV0iIiIiIiIgIiIgMiA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMl0iIiIiIiIgIiIgMyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbM10iIiIiIDQgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPREVOIiIiIiAtLT4gV2hlbiBsZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgZGlzYWJsZXMgdGhlIFBNT1MgeHRvcnMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG91dHB1dCBzdGFnZXMgbWFraW5nIHRoZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3Blbi1kcmFpbiB0eXBlLiIgaXQgY2FuIGJlIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIEkyQyB0eXBlIG9mIHBlcmlwaGVyYWxzLiA1ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJMk1BRU4iIiIiIC0tPiBMZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZXMgdGhlIGFwcHJveCAybUEgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YWdlIiIiICIiIiA2ID0+ICIiIiJJNE1BRU4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0tPiBMZXZlbCDigJgx4oCZIGVuYWJsZXMgdGhlIGFwcHJveAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgb3V0cHV0IHN0YWdlIiIiICIiIiA3ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJOE1BRU4iIiIiIC0tPiBMZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZXMgdGhlIGFwcHJveCA4bUEgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YWdlLiBOb3RlOiBhbnkgZHJpdmUgc3RyZW5ndGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmV0d2VlbiAybUEgYW5kIDE0bUEgY2FuIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9idGFpbmVkIHdpdGggY29tYmluYXRpb24gb2YgMm1BCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBhbmQgOG1BLiIiIiAiIiIgOCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUFVFTiIiIiIgLS0+IDEwdUEgcHVsbCB1cAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAod2VhayBzdHJlbmd0aCkiIiIgIiIiIDkgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BERU4iIiIiIC0tPiAxMHVBIHB1bGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG93biAod2VhayBzdHJlbmd0aCkiIiIgIiIiIDEwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0VfTiIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFsdWUuIGxldmVsIOKAmDDigJkgZW5hYmxlcyB0aGUgSURPCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIFBBRCBwYXRoLiBFbHNlIFBBRCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmlzdGF0ZWQgKGV4Y2VwdCBmb3IgdGhlIFBVL1BECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoaWNoIGFyZSBpbmRlcGVuZGVudCkuIiAiVmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2V0cyBsYXRjaGVkIGF0IHJpc2luZyBlZGdlIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJFVDMzIiIiICIiIiAxMSA9PiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX05fT1YiIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG92ZXJpcmRlLiB3aGVuIGJpdCBpcyBzZXQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgJzEnIElPRV9OIChiaXQgNCkgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBjb250cm9sIElPIElPRV9OIHNpZ25hbCBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OIGlzIGNvbnRyb2wgdmlhIHNlbGVjdGVkIEhXCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljLiBzdHJvbmcgUFVMTCBVUCBhbmQgUFVMTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb3duIGNvbnRyb2wgaXMgZGlzYWJsZWQgZm9yIGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJTydzLiBib3RoIGNvbnRyb2xzIGFyZSB0aWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljIGxldmVsICcwJy4KKworI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18xNF9NRU1fR1BJT19QQURfQ09ORklHXzE0X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMTUgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMTVfTUVNX0dQSU9fUEFEX0NPTkZJR18xNV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEZGRiAgLy8gR1BJTyAwIHJlZ2lzdGVyOiAiQml0IDAgLSAzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgZm9yIFBBRCBJTyBtb2RlIHNlbGVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW9fcmVnaXN0ZXI9eyAiIiAwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVswXSIiIiIiIiAiIiAxID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsxXSIiIiIiIiAiIiAyID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsyXSIiIiIiIiAiIiAzID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVszXSIiIiIgNCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9ERU4iIiIiIC0tPiBXaGVuIGxldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBkaXNhYmxlcyB0aGUgUE1PUyB4dG9ycyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgb3V0cHV0IHN0YWdlcyBtYWtpbmcgdGhlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcGVuLWRyYWluIHR5cGUuIiBpdCBjYW4gYmUgdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgSTJDIHR5cGUgb2YgcGVyaXBoZXJhbHMuIDUgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkkyTUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDJtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UiIiIgIiIiIDYgPT4gIiIiIkk0TUFFTiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLS0+IExldmVsIOKAmDHigJkgZW5hYmxlcyB0aGUgYXBwcm94CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBvdXRwdXQgc3RhZ2UiIiIgIiIiIDcgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkk4TUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDhtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UuIE5vdGU6IGFueSBkcml2ZSBzdHJlbmd0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZXR3ZWVuIDJtQSBhbmQgMTRtQSBjYW4gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2J0YWluZWQgd2l0aCBjb21iaW5hdGlvbiBvZiAybUEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIGFuZCA4bUEuIiIiICIiIiA4ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQVUVOIiIiIiAtLT4gMTB1QSBwdWxsIHVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgOSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUERFTiIiIiIgLS0+IDEwdUEgcHVsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb3duICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgMTAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPRV9OIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZS4gbGV2ZWwg4oCYMOKAmSBlbmFibGVzIHRoZSBJRE8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gUEFEIHBhdGguIEVsc2UgUEFEIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaXN0YXRlZCAoZXhjZXB0IGZvciB0aGUgUFUvUEQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYXJlIGluZGVwZW5kZW50KS4iICJWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXRzIGxhdGNoZWQgYXQgcmlzaW5nIGVkZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVUMzMiIiIgIiIiIDExID0+IiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTl9PViIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3ZlcmlyZGUuIHdoZW4gYml0IGlzIHNldCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyAnMScgSU9FX04gKGJpdCA0KSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGNvbnRyb2wgSU8gSU9FX04gc2lnbmFsIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX04gaXMgY29udHJvbCB2aWEgc2VsZWN0ZWQgSFcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMuIHN0cm9uZyBQVUxMIFVQIGFuZCBQVUxMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvd24gY29udHJvbCBpcyBkaXNhYmxlZCBmb3IgYWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPJ3MuIGJvdGggY29udHJvbHMgYXJlIHRpZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgbGV2ZWwgJzAnLgorCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzE1X01FTV9HUElPX1BBRF9DT05GSUdfMTVfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18xNiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18xNl9NRU1fR1BJT19QQURfQ09ORklHXzE2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwRkZGICAvLyBHUElPIDAgcmVnaXN0ZXI6ICJCaXQgMCAtIDMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCBmb3IgUEFEIElPIG1vZGUgc2VsZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpb19yZWdpc3Rlcj17ICIiIDAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzBdIiIiIiIiICIiIDEgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzFdIiIiIiIiICIiIDIgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzJdIiIiIiIiICIiIDMgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzNdIiIiIiA0ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0RFTiIiIiIgLS0+IFdoZW4gbGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGRpc2FibGVzIHRoZSBQTU9TIHh0b3JzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvdXRwdXQgc3RhZ2VzIG1ha2luZyB0aGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wZW4tZHJhaW4gdHlwZS4iIGl0IGNhbiBiZSB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBJMkMgdHlwZSBvZiBwZXJpcGhlcmFscy4gNSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSTJNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggMm1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZSIiIiAiIiIgNiA9PiAiIiIiSTRNQUVOIiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtLT4gTGV2ZWwg4oCYMeKAmSBlbmFibGVzIHRoZSBhcHByb3gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIG91dHB1dCBzdGFnZSIiIiAiIiIgNyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSThNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggOG1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZS4gTm90ZTogYW55IGRyaXZlIHN0cmVuZ3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJldHdlZW4gMm1BIGFuZCAxNG1BIGNhbiBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvYnRhaW5lZCB3aXRoIGNvbWJpbmF0aW9uIG9mIDJtQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgYW5kIDhtQS4iIiIgIiIiIDggPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BVRU4iIiIiIC0tPiAxMHVBIHB1bGwgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiA5ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQREVOIiIiIiAtLT4gMTB1QSBwdWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvd24gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiAxMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9FX04iIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBsZXZlbCDigJgw4oCZIGVuYWJsZXMgdGhlIElETworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBQQUQgcGF0aC4gRWxzZSBQQUQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpc3RhdGVkIChleGNlcHQgZm9yIHRoZSBQVS9QRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgaW5kZXBlbmRlbnQpLiIgIlZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldHMgbGF0Y2hlZCBhdCByaXNpbmcgZWRnZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRVQzMyIiIiAiIiIgMTEgPT4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OX09WIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyaXJkZS4gd2hlbiBiaXQgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljICcxJyBJT0VfTiAoYml0IDQpIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgY29udHJvbCBJTyBJT0VfTiBzaWduYWwgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTiBpcyBjb250cm9sIHZpYSBzZWxlY3RlZCBIVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYy4gc3Ryb25nIFBVTEwgVVAgYW5kIFBVTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93biBjb250cm9sIGlzIGRpc2FibGVkIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gYm90aCBjb250cm9scyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMTZfTUVNX0dQSU9fUEFEX0NPTkZJR18xNl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzE3IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzE3X01FTV9HUElPX1BBRF9DT05GSUdfMTdfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBGRkYgIC8vIEdQSU8gMCByZWdpc3RlcjogIkJpdCAwIC0gMyBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VkIGZvciBQQUQgSU8gbW9kZSBzZWxlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlvX3JlZ2lzdGVyPXsgIiIgMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMF0iIiIiIiIgIiIgMSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMV0iIiIiIiIgIiIgMiA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMl0iIiIiIiIgIiIgMyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbM10iIiIiIDQgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPREVOIiIiIiAtLT4gV2hlbiBsZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgZGlzYWJsZXMgdGhlIFBNT1MgeHRvcnMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG91dHB1dCBzdGFnZXMgbWFraW5nIHRoZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3Blbi1kcmFpbiB0eXBlLiIgaXQgY2FuIGJlIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIEkyQyB0eXBlIG9mIHBlcmlwaGVyYWxzLiA1ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJMk1BRU4iIiIiIC0tPiBMZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZXMgdGhlIGFwcHJveCAybUEgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YWdlIiIiICIiIiA2ID0+ICIiIiJJNE1BRU4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0tPiBMZXZlbCDigJgx4oCZIGVuYWJsZXMgdGhlIGFwcHJveAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgb3V0cHV0IHN0YWdlIiIiICIiIiA3ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJOE1BRU4iIiIiIC0tPiBMZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZXMgdGhlIGFwcHJveCA4bUEgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YWdlLiBOb3RlOiBhbnkgZHJpdmUgc3RyZW5ndGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmV0d2VlbiAybUEgYW5kIDE0bUEgY2FuIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9idGFpbmVkIHdpdGggY29tYmluYXRpb24gb2YgMm1BCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBhbmQgOG1BLiIiIiAiIiIgOCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUFVFTiIiIiIgLS0+IDEwdUEgcHVsbCB1cAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAod2VhayBzdHJlbmd0aCkiIiIgIiIiIDkgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BERU4iIiIiIC0tPiAxMHVBIHB1bGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG93biAod2VhayBzdHJlbmd0aCkiIiIgIiIiIDEwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0VfTiIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFsdWUuIGxldmVsIOKAmDDigJkgZW5hYmxlcyB0aGUgSURPCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIFBBRCBwYXRoLiBFbHNlIFBBRCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmlzdGF0ZWQgKGV4Y2VwdCBmb3IgdGhlIFBVL1BECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoaWNoIGFyZSBpbmRlcGVuZGVudCkuIiAiVmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2V0cyBsYXRjaGVkIGF0IHJpc2luZyBlZGdlIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJFVDMzIiIiICIiIiAxMSA9PiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX05fT1YiIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG92ZXJpcmRlLiB3aGVuIGJpdCBpcyBzZXQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgJzEnIElPRV9OIChiaXQgNCkgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBjb250cm9sIElPIElPRV9OIHNpZ25hbCBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OIGlzIGNvbnRyb2wgdmlhIHNlbGVjdGVkIEhXCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljLiBzdHJvbmcgUFVMTCBVUCBhbmQgUFVMTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb3duIGNvbnRyb2wgaXMgZGlzYWJsZWQgZm9yIGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJTydzLiBib3RoIGNvbnRyb2xzIGFyZSB0aWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljIGxldmVsICcwJy4KKworI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18xN19NRU1fR1BJT19QQURfQ09ORklHXzE3X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMTggcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMThfTUVNX0dQSU9fUEFEX0NPTkZJR18xOF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEZGRiAgLy8gR1BJTyAwIHJlZ2lzdGVyOiAiQml0IDAgLSAzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgZm9yIFBBRCBJTyBtb2RlIHNlbGVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW9fcmVnaXN0ZXI9eyAiIiAwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVswXSIiIiIiIiAiIiAxID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsxXSIiIiIiIiAiIiAyID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsyXSIiIiIiIiAiIiAzID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVszXSIiIiIgNCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9ERU4iIiIiIC0tPiBXaGVuIGxldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBkaXNhYmxlcyB0aGUgUE1PUyB4dG9ycyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgb3V0cHV0IHN0YWdlcyBtYWtpbmcgdGhlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcGVuLWRyYWluIHR5cGUuIiBpdCBjYW4gYmUgdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgSTJDIHR5cGUgb2YgcGVyaXBoZXJhbHMuIDUgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkkyTUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDJtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UiIiIgIiIiIDYgPT4gIiIiIkk0TUFFTiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLS0+IExldmVsIOKAmDHigJkgZW5hYmxlcyB0aGUgYXBwcm94CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBvdXRwdXQgc3RhZ2UiIiIgIiIiIDcgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkk4TUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDhtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UuIE5vdGU6IGFueSBkcml2ZSBzdHJlbmd0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZXR3ZWVuIDJtQSBhbmQgMTRtQSBjYW4gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2J0YWluZWQgd2l0aCBjb21iaW5hdGlvbiBvZiAybUEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIGFuZCA4bUEuIiIiICIiIiA4ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQVUVOIiIiIiAtLT4gMTB1QSBwdWxsIHVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgOSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUERFTiIiIiIgLS0+IDEwdUEgcHVsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb3duICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgMTAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPRV9OIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZS4gbGV2ZWwg4oCYMOKAmSBlbmFibGVzIHRoZSBJRE8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gUEFEIHBhdGguIEVsc2UgUEFEIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaXN0YXRlZCAoZXhjZXB0IGZvciB0aGUgUFUvUEQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYXJlIGluZGVwZW5kZW50KS4iICJWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXRzIGxhdGNoZWQgYXQgcmlzaW5nIGVkZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVUMzMiIiIgIiIiIDExID0+IiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTl9PViIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3ZlcmlyZGUuIHdoZW4gYml0IGlzIHNldCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyAnMScgSU9FX04gKGJpdCA0KSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGNvbnRyb2wgSU8gSU9FX04gc2lnbmFsIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX04gaXMgY29udHJvbCB2aWEgc2VsZWN0ZWQgSFcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMuIHN0cm9uZyBQVUxMIFVQIGFuZCBQVUxMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvd24gY29udHJvbCBpcyBkaXNhYmxlZCBmb3IgYWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPJ3MuIGJvdGggY29udHJvbHMgYXJlIHRpZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgbGV2ZWwgJzAnLgorCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzE4X01FTV9HUElPX1BBRF9DT05GSUdfMThfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18xOSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18xOV9NRU1fR1BJT19QQURfQ09ORklHXzE5X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwRkZGICAvLyBHUElPIDAgcmVnaXN0ZXI6ICJCaXQgMCAtIDMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCBmb3IgUEFEIElPIG1vZGUgc2VsZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpb19yZWdpc3Rlcj17ICIiIDAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzBdIiIiIiIiICIiIDEgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzFdIiIiIiIiICIiIDIgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzJdIiIiIiIiICIiIDMgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzNdIiIiIiA0ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0RFTiIiIiIgLS0+IFdoZW4gbGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGRpc2FibGVzIHRoZSBQTU9TIHh0b3JzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvdXRwdXQgc3RhZ2VzIG1ha2luZyB0aGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wZW4tZHJhaW4gdHlwZS4iIGl0IGNhbiBiZSB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBJMkMgdHlwZSBvZiBwZXJpcGhlcmFscy4gNSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSTJNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggMm1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZSIiIiAiIiIgNiA9PiAiIiIiSTRNQUVOIiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtLT4gTGV2ZWwg4oCYMeKAmSBlbmFibGVzIHRoZSBhcHByb3gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIG91dHB1dCBzdGFnZSIiIiAiIiIgNyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSThNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggOG1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZS4gTm90ZTogYW55IGRyaXZlIHN0cmVuZ3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJldHdlZW4gMm1BIGFuZCAxNG1BIGNhbiBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvYnRhaW5lZCB3aXRoIGNvbWJpbmF0aW9uIG9mIDJtQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgYW5kIDhtQS4iIiIgIiIiIDggPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BVRU4iIiIiIC0tPiAxMHVBIHB1bGwgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiA5ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQREVOIiIiIiAtLT4gMTB1QSBwdWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvd24gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiAxMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9FX04iIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBsZXZlbCDigJgw4oCZIGVuYWJsZXMgdGhlIElETworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBQQUQgcGF0aC4gRWxzZSBQQUQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpc3RhdGVkIChleGNlcHQgZm9yIHRoZSBQVS9QRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgaW5kZXBlbmRlbnQpLiIgIlZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldHMgbGF0Y2hlZCBhdCByaXNpbmcgZWRnZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRVQzMyIiIiAiIiIgMTEgPT4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OX09WIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyaXJkZS4gd2hlbiBiaXQgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljICcxJyBJT0VfTiAoYml0IDQpIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgY29udHJvbCBJTyBJT0VfTiBzaWduYWwgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTiBpcyBjb250cm9sIHZpYSBzZWxlY3RlZCBIVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYy4gc3Ryb25nIFBVTEwgVVAgYW5kIFBVTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93biBjb250cm9sIGlzIGRpc2FibGVkIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gYm90aCBjb250cm9scyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMTlfTUVNX0dQSU9fUEFEX0NPTkZJR18xOV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzIwIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzIwX01FTV9HUElPX1BBRF9DT05GSUdfMjBfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBGRkYgIC8vIEdQSU8gMCByZWdpc3RlcjogIkJpdCAwIC0gMyBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VkIGZvciBQQUQgSU8gbW9kZSBzZWxlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlvX3JlZ2lzdGVyPXsgIiIgMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMF0iIiIiIiIgIiIgMSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMV0iIiIiIiIgIiIgMiA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMl0iIiIiIiIgIiIgMyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbM10iIiIiIDQgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPREVOIiIiIiAtLT4gV2hlbiBsZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgZGlzYWJsZXMgdGhlIFBNT1MgeHRvcnMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG91dHB1dCBzdGFnZXMgbWFraW5nIHRoZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3Blbi1kcmFpbiB0eXBlLiIgaXQgY2FuIGJlIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIEkyQyB0eXBlIG9mIHBlcmlwaGVyYWxzLiA1ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJMk1BRU4iIiIiIC0tPiBMZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZXMgdGhlIGFwcHJveCAybUEgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YWdlIiIiICIiIiA2ID0+ICIiIiJJNE1BRU4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0tPiBMZXZlbCDigJgx4oCZIGVuYWJsZXMgdGhlIGFwcHJveAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgb3V0cHV0IHN0YWdlIiIiICIiIiA3ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJOE1BRU4iIiIiIC0tPiBMZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZXMgdGhlIGFwcHJveCA4bUEgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YWdlLiBOb3RlOiBhbnkgZHJpdmUgc3RyZW5ndGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmV0d2VlbiAybUEgYW5kIDE0bUEgY2FuIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9idGFpbmVkIHdpdGggY29tYmluYXRpb24gb2YgMm1BCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBhbmQgOG1BLiIiIiAiIiIgOCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUFVFTiIiIiIgLS0+IDEwdUEgcHVsbCB1cAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAod2VhayBzdHJlbmd0aCkiIiIgIiIiIDkgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BERU4iIiIiIC0tPiAxMHVBIHB1bGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG93biAod2VhayBzdHJlbmd0aCkiIiIgIiIiIDEwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0VfTiIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFsdWUuIGxldmVsIOKAmDDigJkgZW5hYmxlcyB0aGUgSURPCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIFBBRCBwYXRoLiBFbHNlIFBBRCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmlzdGF0ZWQgKGV4Y2VwdCBmb3IgdGhlIFBVL1BECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoaWNoIGFyZSBpbmRlcGVuZGVudCkuIiAiVmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2V0cyBsYXRjaGVkIGF0IHJpc2luZyBlZGdlIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJFVDMzIiIiICIiIiAxMSA9PiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX05fT1YiIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG92ZXJpcmRlLiB3aGVuIGJpdCBpcyBzZXQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgJzEnIElPRV9OIChiaXQgNCkgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBjb250cm9sIElPIElPRV9OIHNpZ25hbCBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OIGlzIGNvbnRyb2wgdmlhIHNlbGVjdGVkIEhXCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljLiBzdHJvbmcgUFVMTCBVUCBhbmQgUFVMTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb3duIGNvbnRyb2wgaXMgZGlzYWJsZWQgZm9yIGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJTydzLiBib3RoIGNvbnRyb2xzIGFyZSB0aWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljIGxldmVsICcwJy4KKworI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18yMF9NRU1fR1BJT19QQURfQ09ORklHXzIwX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMjEgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMjFfTUVNX0dQSU9fUEFEX0NPTkZJR18yMV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEZGRiAgLy8gR1BJTyAwIHJlZ2lzdGVyOiAiQml0IDAgLSAzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgZm9yIFBBRCBJTyBtb2RlIHNlbGVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW9fcmVnaXN0ZXI9eyAiIiAwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVswXSIiIiIiIiAiIiAxID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsxXSIiIiIiIiAiIiAyID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsyXSIiIiIiIiAiIiAzID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVszXSIiIiIgNCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9ERU4iIiIiIC0tPiBXaGVuIGxldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBkaXNhYmxlcyB0aGUgUE1PUyB4dG9ycyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgb3V0cHV0IHN0YWdlcyBtYWtpbmcgdGhlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcGVuLWRyYWluIHR5cGUuIiBpdCBjYW4gYmUgdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgSTJDIHR5cGUgb2YgcGVyaXBoZXJhbHMuIDUgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkkyTUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDJtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UiIiIgIiIiIDYgPT4gIiIiIkk0TUFFTiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLS0+IExldmVsIOKAmDHigJkgZW5hYmxlcyB0aGUgYXBwcm94CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBvdXRwdXQgc3RhZ2UiIiIgIiIiIDcgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkk4TUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDhtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UuIE5vdGU6IGFueSBkcml2ZSBzdHJlbmd0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZXR3ZWVuIDJtQSBhbmQgMTRtQSBjYW4gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2J0YWluZWQgd2l0aCBjb21iaW5hdGlvbiBvZiAybUEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIGFuZCA4bUEuIiIiICIiIiA4ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQVUVOIiIiIiAtLT4gMTB1QSBwdWxsIHVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgOSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUERFTiIiIiIgLS0+IDEwdUEgcHVsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb3duICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgMTAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPRV9OIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZS4gbGV2ZWwg4oCYMOKAmSBlbmFibGVzIHRoZSBJRE8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gUEFEIHBhdGguIEVsc2UgUEFEIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaXN0YXRlZCAoZXhjZXB0IGZvciB0aGUgUFUvUEQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYXJlIGluZGVwZW5kZW50KS4iICJWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXRzIGxhdGNoZWQgYXQgcmlzaW5nIGVkZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVUMzMiIiIgIiIiIDExID0+IiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTl9PViIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3ZlcmlyZGUuIHdoZW4gYml0IGlzIHNldCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyAnMScgSU9FX04gKGJpdCA0KSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGNvbnRyb2wgSU8gSU9FX04gc2lnbmFsIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX04gaXMgY29udHJvbCB2aWEgc2VsZWN0ZWQgSFcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMuIHN0cm9uZyBQVUxMIFVQIGFuZCBQVUxMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvd24gY29udHJvbCBpcyBkaXNhYmxlZCBmb3IgYWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPJ3MuIGJvdGggY29udHJvbHMgYXJlIHRpZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgbGV2ZWwgJzAnLgorCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzIxX01FTV9HUElPX1BBRF9DT05GSUdfMjFfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18yMiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18yMl9NRU1fR1BJT19QQURfQ09ORklHXzIyX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwRkZGICAvLyBHUElPIDAgcmVnaXN0ZXI6ICJCaXQgMCAtIDMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCBmb3IgUEFEIElPIG1vZGUgc2VsZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpb19yZWdpc3Rlcj17ICIiIDAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzBdIiIiIiIiICIiIDEgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzFdIiIiIiIiICIiIDIgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzJdIiIiIiIiICIiIDMgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzNdIiIiIiA0ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0RFTiIiIiIgLS0+IFdoZW4gbGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGRpc2FibGVzIHRoZSBQTU9TIHh0b3JzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvdXRwdXQgc3RhZ2VzIG1ha2luZyB0aGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wZW4tZHJhaW4gdHlwZS4iIGl0IGNhbiBiZSB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBJMkMgdHlwZSBvZiBwZXJpcGhlcmFscy4gNSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSTJNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggMm1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZSIiIiAiIiIgNiA9PiAiIiIiSTRNQUVOIiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtLT4gTGV2ZWwg4oCYMeKAmSBlbmFibGVzIHRoZSBhcHByb3gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIG91dHB1dCBzdGFnZSIiIiAiIiIgNyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSThNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggOG1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZS4gTm90ZTogYW55IGRyaXZlIHN0cmVuZ3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJldHdlZW4gMm1BIGFuZCAxNG1BIGNhbiBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvYnRhaW5lZCB3aXRoIGNvbWJpbmF0aW9uIG9mIDJtQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgYW5kIDhtQS4iIiIgIiIiIDggPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BVRU4iIiIiIC0tPiAxMHVBIHB1bGwgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiA5ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQREVOIiIiIiAtLT4gMTB1QSBwdWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvd24gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiAxMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9FX04iIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBsZXZlbCDigJgw4oCZIGVuYWJsZXMgdGhlIElETworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBQQUQgcGF0aC4gRWxzZSBQQUQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpc3RhdGVkIChleGNlcHQgZm9yIHRoZSBQVS9QRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgaW5kZXBlbmRlbnQpLiIgIlZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldHMgbGF0Y2hlZCBhdCByaXNpbmcgZWRnZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRVQzMyIiIiAiIiIgMTEgPT4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OX09WIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyaXJkZS4gd2hlbiBiaXQgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljICcxJyBJT0VfTiAoYml0IDQpIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgY29udHJvbCBJTyBJT0VfTiBzaWduYWwgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTiBpcyBjb250cm9sIHZpYSBzZWxlY3RlZCBIVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYy4gc3Ryb25nIFBVTEwgVVAgYW5kIFBVTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93biBjb250cm9sIGlzIGRpc2FibGVkIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gYm90aCBjb250cm9scyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMjJfTUVNX0dQSU9fUEFEX0NPTkZJR18yMl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzIzIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzIzX01FTV9HUElPX1BBRF9DT05GSUdfMjNfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBGRkYgIC8vIEdQSU8gMCByZWdpc3RlcjogIkJpdCAwIC0gMyBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VkIGZvciBQQUQgSU8gbW9kZSBzZWxlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlvX3JlZ2lzdGVyPXsgIiIgMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMF0iIiIiIiIgIiIgMSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMV0iIiIiIiIgIiIgMiA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMl0iIiIiIiIgIiIgMyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbM10iIiIiIDQgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPREVOIiIiIiAtLT4gV2hlbiBsZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgZGlzYWJsZXMgdGhlIFBNT1MgeHRvcnMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG91dHB1dCBzdGFnZXMgbWFraW5nIHRoZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3Blbi1kcmFpbiB0eXBlLiIgaXQgY2FuIGJlIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIEkyQyB0eXBlIG9mIHBlcmlwaGVyYWxzLiA1ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJMk1BRU4iIiIiIC0tPiBMZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZXMgdGhlIGFwcHJveCAybUEgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YWdlIiIiICIiIiA2ID0+ICIiIiJJNE1BRU4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0tPiBMZXZlbCDigJgx4oCZIGVuYWJsZXMgdGhlIGFwcHJveAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgb3V0cHV0IHN0YWdlIiIiICIiIiA3ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJOE1BRU4iIiIiIC0tPiBMZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZXMgdGhlIGFwcHJveCA4bUEgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YWdlLiBOb3RlOiBhbnkgZHJpdmUgc3RyZW5ndGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmV0d2VlbiAybUEgYW5kIDE0bUEgY2FuIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9idGFpbmVkIHdpdGggY29tYmluYXRpb24gb2YgMm1BCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBhbmQgOG1BLiIiIiAiIiIgOCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUFVFTiIiIiIgLS0+IDEwdUEgcHVsbCB1cAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAod2VhayBzdHJlbmd0aCkiIiIgIiIiIDkgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BERU4iIiIiIC0tPiAxMHVBIHB1bGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG93biAod2VhayBzdHJlbmd0aCkiIiIgIiIiIDEwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0VfTiIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFsdWUuIGxldmVsIOKAmDDigJkgZW5hYmxlcyB0aGUgSURPCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIFBBRCBwYXRoLiBFbHNlIFBBRCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmlzdGF0ZWQgKGV4Y2VwdCBmb3IgdGhlIFBVL1BECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoaWNoIGFyZSBpbmRlcGVuZGVudCkuIiAiVmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2V0cyBsYXRjaGVkIGF0IHJpc2luZyBlZGdlIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJFVDMzIiIiICIiIiAxMSA9PiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX05fT1YiIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG92ZXJpcmRlLiB3aGVuIGJpdCBpcyBzZXQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgJzEnIElPRV9OIChiaXQgNCkgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBjb250cm9sIElPIElPRV9OIHNpZ25hbCBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OIGlzIGNvbnRyb2wgdmlhIHNlbGVjdGVkIEhXCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljLiBzdHJvbmcgUFVMTCBVUCBhbmQgUFVMTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb3duIGNvbnRyb2wgaXMgZGlzYWJsZWQgZm9yIGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJTydzLiBib3RoIGNvbnRyb2xzIGFyZSB0aWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljIGxldmVsICcwJy4KKworI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18yM19NRU1fR1BJT19QQURfQ09ORklHXzIzX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMjQgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMjRfTUVNX0dQSU9fUEFEX0NPTkZJR18yNF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEZGRiAgLy8gR1BJTyAwIHJlZ2lzdGVyOiAiQml0IDAgLSAzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgZm9yIFBBRCBJTyBtb2RlIHNlbGVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW9fcmVnaXN0ZXI9eyAiIiAwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVswXSIiIiIiIiAiIiAxID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsxXSIiIiIiIiAiIiAyID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsyXSIiIiIiIiAiIiAzID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVszXSIiIiIgNCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9ERU4iIiIiIC0tPiBXaGVuIGxldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBkaXNhYmxlcyB0aGUgUE1PUyB4dG9ycyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgb3V0cHV0IHN0YWdlcyBtYWtpbmcgdGhlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcGVuLWRyYWluIHR5cGUuIiBpdCBjYW4gYmUgdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgSTJDIHR5cGUgb2YgcGVyaXBoZXJhbHMuIDUgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkkyTUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDJtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UiIiIgIiIiIDYgPT4gIiIiIkk0TUFFTiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLS0+IExldmVsIOKAmDHigJkgZW5hYmxlcyB0aGUgYXBwcm94CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBvdXRwdXQgc3RhZ2UiIiIgIiIiIDcgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkk4TUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDhtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UuIE5vdGU6IGFueSBkcml2ZSBzdHJlbmd0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZXR3ZWVuIDJtQSBhbmQgMTRtQSBjYW4gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2J0YWluZWQgd2l0aCBjb21iaW5hdGlvbiBvZiAybUEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIGFuZCA4bUEuIiIiICIiIiA4ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQVUVOIiIiIiAtLT4gMTB1QSBwdWxsIHVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgOSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUERFTiIiIiIgLS0+IDEwdUEgcHVsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb3duICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgMTAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPRV9OIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZS4gbGV2ZWwg4oCYMOKAmSBlbmFibGVzIHRoZSBJRE8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gUEFEIHBhdGguIEVsc2UgUEFEIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaXN0YXRlZCAoZXhjZXB0IGZvciB0aGUgUFUvUEQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYXJlIGluZGVwZW5kZW50KS4iICJWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXRzIGxhdGNoZWQgYXQgcmlzaW5nIGVkZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVUMzMiIiIgIiIiIDExID0+IiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTl9PViIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3ZlcmlyZGUuIHdoZW4gYml0IGlzIHNldCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyAnMScgSU9FX04gKGJpdCA0KSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGNvbnRyb2wgSU8gSU9FX04gc2lnbmFsIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX04gaXMgY29udHJvbCB2aWEgc2VsZWN0ZWQgSFcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMuIHN0cm9uZyBQVUxMIFVQIGFuZCBQVUxMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvd24gY29udHJvbCBpcyBkaXNhYmxlZCBmb3IgYWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPJ3MuIGJvdGggY29udHJvbHMgYXJlIHRpZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgbGV2ZWwgJzAnLgorCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzI0X01FTV9HUElPX1BBRF9DT05GSUdfMjRfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18yNSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18yNV9NRU1fR1BJT19QQURfQ09ORklHXzI1X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwRkZGICAvLyBHUElPIDAgcmVnaXN0ZXI6ICJCaXQgMCAtIDMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCBmb3IgUEFEIElPIG1vZGUgc2VsZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpb19yZWdpc3Rlcj17ICIiIDAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzBdIiIiIiIiICIiIDEgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzFdIiIiIiIiICIiIDIgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzJdIiIiIiIiICIiIDMgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzNdIiIiIiA0ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0RFTiIiIiIgLS0+IFdoZW4gbGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGRpc2FibGVzIHRoZSBQTU9TIHh0b3JzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvdXRwdXQgc3RhZ2VzIG1ha2luZyB0aGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wZW4tZHJhaW4gdHlwZS4iIGl0IGNhbiBiZSB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBJMkMgdHlwZSBvZiBwZXJpcGhlcmFscy4gNSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSTJNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggMm1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZSIiIiAiIiIgNiA9PiAiIiIiSTRNQUVOIiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtLT4gTGV2ZWwg4oCYMeKAmSBlbmFibGVzIHRoZSBhcHByb3gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIG91dHB1dCBzdGFnZSIiIiAiIiIgNyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSThNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggOG1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZS4gTm90ZTogYW55IGRyaXZlIHN0cmVuZ3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJldHdlZW4gMm1BIGFuZCAxNG1BIGNhbiBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvYnRhaW5lZCB3aXRoIGNvbWJpbmF0aW9uIG9mIDJtQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgYW5kIDhtQS4iIiIgIiIiIDggPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BVRU4iIiIiIC0tPiAxMHVBIHB1bGwgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiA5ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQREVOIiIiIiAtLT4gMTB1QSBwdWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvd24gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiAxMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9FX04iIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBsZXZlbCDigJgw4oCZIGVuYWJsZXMgdGhlIElETworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBQQUQgcGF0aC4gRWxzZSBQQUQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpc3RhdGVkIChleGNlcHQgZm9yIHRoZSBQVS9QRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgaW5kZXBlbmRlbnQpLiIgIlZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldHMgbGF0Y2hlZCBhdCByaXNpbmcgZWRnZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRVQzMyIiIiAiIiIgMTEgPT4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OX09WIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyaXJkZS4gd2hlbiBiaXQgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljICcxJyBJT0VfTiAoYml0IDQpIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgY29udHJvbCBJTyBJT0VfTiBzaWduYWwgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTiBpcyBjb250cm9sIHZpYSBzZWxlY3RlZCBIVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYy4gc3Ryb25nIFBVTEwgVVAgYW5kIFBVTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93biBjb250cm9sIGlzIGRpc2FibGVkIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gYm90aCBjb250cm9scyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMjVfTUVNX0dQSU9fUEFEX0NPTkZJR18yNV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzI2IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzI2X01FTV9HUElPX1BBRF9DT05GSUdfMjZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBGRkYgIC8vIEdQSU8gMCByZWdpc3RlcjogIkJpdCAwIC0gMyBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VkIGZvciBQQUQgSU8gbW9kZSBzZWxlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlvX3JlZ2lzdGVyPXsgIiIgMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMF0iIiIiIiIgIiIgMSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMV0iIiIiIiIgIiIgMiA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMl0iIiIiIiIgIiIgMyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbM10iIiIiIDQgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPREVOIiIiIiAtLT4gV2hlbiBsZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgZGlzYWJsZXMgdGhlIFBNT1MgeHRvcnMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG91dHB1dCBzdGFnZXMgbWFraW5nIHRoZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3Blbi1kcmFpbiB0eXBlLiIgaXQgY2FuIGJlIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIEkyQyB0eXBlIG9mIHBlcmlwaGVyYWxzLiA1ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJMk1BRU4iIiIiIC0tPiBMZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZXMgdGhlIGFwcHJveCAybUEgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YWdlIiIiICIiIiA2ID0+ICIiIiJJNE1BRU4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0tPiBMZXZlbCDigJgx4oCZIGVuYWJsZXMgdGhlIGFwcHJveAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgb3V0cHV0IHN0YWdlIiIiICIiIiA3ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJOE1BRU4iIiIiIC0tPiBMZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZXMgdGhlIGFwcHJveCA4bUEgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YWdlLiBOb3RlOiBhbnkgZHJpdmUgc3RyZW5ndGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmV0d2VlbiAybUEgYW5kIDE0bUEgY2FuIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9idGFpbmVkIHdpdGggY29tYmluYXRpb24gb2YgMm1BCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBhbmQgOG1BLiIiIiAiIiIgOCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUFVFTiIiIiIgLS0+IDEwdUEgcHVsbCB1cAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAod2VhayBzdHJlbmd0aCkiIiIgIiIiIDkgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BERU4iIiIiIC0tPiAxMHVBIHB1bGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG93biAod2VhayBzdHJlbmd0aCkiIiIgIiIiIDEwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0VfTiIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFsdWUuIGxldmVsIOKAmDDigJkgZW5hYmxlcyB0aGUgSURPCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIFBBRCBwYXRoLiBFbHNlIFBBRCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmlzdGF0ZWQgKGV4Y2VwdCBmb3IgdGhlIFBVL1BECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoaWNoIGFyZSBpbmRlcGVuZGVudCkuIiAiVmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2V0cyBsYXRjaGVkIGF0IHJpc2luZyBlZGdlIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJFVDMzIiIiICIiIiAxMSA9PiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX05fT1YiIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG92ZXJpcmRlLiB3aGVuIGJpdCBpcyBzZXQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgJzEnIElPRV9OIChiaXQgNCkgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBjb250cm9sIElPIElPRV9OIHNpZ25hbCBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OIGlzIGNvbnRyb2wgdmlhIHNlbGVjdGVkIEhXCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljLiBzdHJvbmcgUFVMTCBVUCBhbmQgUFVMTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb3duIGNvbnRyb2wgaXMgZGlzYWJsZWQgZm9yIGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJTydzLiBib3RoIGNvbnRyb2xzIGFyZSB0aWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljIGxldmVsICcwJy4KKworI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18yNl9NRU1fR1BJT19QQURfQ09ORklHXzI2X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMjcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMjdfTUVNX0dQSU9fUEFEX0NPTkZJR18yN19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEZGRiAgLy8gR1BJTyAwIHJlZ2lzdGVyOiAiQml0IDAgLSAzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgZm9yIFBBRCBJTyBtb2RlIHNlbGVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW9fcmVnaXN0ZXI9eyAiIiAwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVswXSIiIiIiIiAiIiAxID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsxXSIiIiIiIiAiIiAyID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsyXSIiIiIiIiAiIiAzID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVszXSIiIiIgNCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9ERU4iIiIiIC0tPiBXaGVuIGxldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBkaXNhYmxlcyB0aGUgUE1PUyB4dG9ycyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgb3V0cHV0IHN0YWdlcyBtYWtpbmcgdGhlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcGVuLWRyYWluIHR5cGUuIiBpdCBjYW4gYmUgdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgSTJDIHR5cGUgb2YgcGVyaXBoZXJhbHMuIDUgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkkyTUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDJtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UiIiIgIiIiIDYgPT4gIiIiIkk0TUFFTiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLS0+IExldmVsIOKAmDHigJkgZW5hYmxlcyB0aGUgYXBwcm94CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBvdXRwdXQgc3RhZ2UiIiIgIiIiIDcgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkk4TUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDhtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UuIE5vdGU6IGFueSBkcml2ZSBzdHJlbmd0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZXR3ZWVuIDJtQSBhbmQgMTRtQSBjYW4gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2J0YWluZWQgd2l0aCBjb21iaW5hdGlvbiBvZiAybUEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIGFuZCA4bUEuIiIiICIiIiA4ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQVUVOIiIiIiAtLT4gMTB1QSBwdWxsIHVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgOSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUERFTiIiIiIgLS0+IDEwdUEgcHVsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb3duICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgMTAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPRV9OIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZS4gbGV2ZWwg4oCYMOKAmSBlbmFibGVzIHRoZSBJRE8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gUEFEIHBhdGguIEVsc2UgUEFEIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaXN0YXRlZCAoZXhjZXB0IGZvciB0aGUgUFUvUEQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYXJlIGluZGVwZW5kZW50KS4iICJWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXRzIGxhdGNoZWQgYXQgcmlzaW5nIGVkZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVUMzMiIiIgIiIiIDExID0+IiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTl9PViIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3ZlcmlyZGUuIHdoZW4gYml0IGlzIHNldCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyAnMScgSU9FX04gKGJpdCA0KSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGNvbnRyb2wgSU8gSU9FX04gc2lnbmFsIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX04gaXMgY29udHJvbCB2aWEgc2VsZWN0ZWQgSFcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMuIHN0cm9uZyBQVUxMIFVQIGFuZCBQVUxMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvd24gY29udHJvbCBpcyBkaXNhYmxlZCBmb3IgYWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPJ3MuIGJvdGggY29udHJvbHMgYXJlIHRpZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgbGV2ZWwgJzAnLgorCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzI3X01FTV9HUElPX1BBRF9DT05GSUdfMjdfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18yOCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18yOF9NRU1fR1BJT19QQURfQ09ORklHXzI4X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwRkZGICAvLyBHUElPIDAgcmVnaXN0ZXI6ICJCaXQgMCAtIDMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCBmb3IgUEFEIElPIG1vZGUgc2VsZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpb19yZWdpc3Rlcj17ICIiIDAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzBdIiIiIiIiICIiIDEgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzFdIiIiIiIiICIiIDIgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzJdIiIiIiIiICIiIDMgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzNdIiIiIiA0ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0RFTiIiIiIgLS0+IFdoZW4gbGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGRpc2FibGVzIHRoZSBQTU9TIHh0b3JzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvdXRwdXQgc3RhZ2VzIG1ha2luZyB0aGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wZW4tZHJhaW4gdHlwZS4iIGl0IGNhbiBiZSB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBJMkMgdHlwZSBvZiBwZXJpcGhlcmFscy4gNSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSTJNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggMm1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZSIiIiAiIiIgNiA9PiAiIiIiSTRNQUVOIiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtLT4gTGV2ZWwg4oCYMeKAmSBlbmFibGVzIHRoZSBhcHByb3gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIG91dHB1dCBzdGFnZSIiIiAiIiIgNyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSThNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggOG1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZS4gTm90ZTogYW55IGRyaXZlIHN0cmVuZ3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJldHdlZW4gMm1BIGFuZCAxNG1BIGNhbiBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvYnRhaW5lZCB3aXRoIGNvbWJpbmF0aW9uIG9mIDJtQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgYW5kIDhtQS4iIiIgIiIiIDggPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BVRU4iIiIiIC0tPiAxMHVBIHB1bGwgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiA5ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQREVOIiIiIiAtLT4gMTB1QSBwdWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvd24gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiAxMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9FX04iIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBsZXZlbCDigJgw4oCZIGVuYWJsZXMgdGhlIElETworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBQQUQgcGF0aC4gRWxzZSBQQUQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpc3RhdGVkIChleGNlcHQgZm9yIHRoZSBQVS9QRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgaW5kZXBlbmRlbnQpLiIgIlZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldHMgbGF0Y2hlZCBhdCByaXNpbmcgZWRnZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRVQzMyIiIiAiIiIgMTEgPT4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OX09WIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyaXJkZS4gd2hlbiBiaXQgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljICcxJyBJT0VfTiAoYml0IDQpIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgY29udHJvbCBJTyBJT0VfTiBzaWduYWwgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTiBpcyBjb250cm9sIHZpYSBzZWxlY3RlZCBIVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYy4gc3Ryb25nIFBVTEwgVVAgYW5kIFBVTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93biBjb250cm9sIGlzIGRpc2FibGVkIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gYm90aCBjb250cm9scyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMjhfTUVNX0dQSU9fUEFEX0NPTkZJR18yOF9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzI5IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzI5X01FTV9HUElPX1BBRF9DT05GSUdfMjlfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBGRkYgIC8vIEdQSU8gMCByZWdpc3RlcjogIkJpdCAwIC0gMyBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VkIGZvciBQQUQgSU8gbW9kZSBzZWxlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlvX3JlZ2lzdGVyPXsgIiIgMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMF0iIiIiIiIgIiIgMSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMV0iIiIiIiIgIiIgMiA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMl0iIiIiIiIgIiIgMyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbM10iIiIiIDQgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPREVOIiIiIiAtLT4gV2hlbiBsZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgZGlzYWJsZXMgdGhlIFBNT1MgeHRvcnMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG91dHB1dCBzdGFnZXMgbWFraW5nIHRoZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3Blbi1kcmFpbiB0eXBlLiIgaXQgY2FuIGJlIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIEkyQyB0eXBlIG9mIHBlcmlwaGVyYWxzLiA1ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJMk1BRU4iIiIiIC0tPiBMZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZXMgdGhlIGFwcHJveCAybUEgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YWdlIiIiICIiIiA2ID0+ICIiIiJJNE1BRU4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0tPiBMZXZlbCDigJgx4oCZIGVuYWJsZXMgdGhlIGFwcHJveAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgb3V0cHV0IHN0YWdlIiIiICIiIiA3ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJOE1BRU4iIiIiIC0tPiBMZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZXMgdGhlIGFwcHJveCA4bUEgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YWdlLiBOb3RlOiBhbnkgZHJpdmUgc3RyZW5ndGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmV0d2VlbiAybUEgYW5kIDE0bUEgY2FuIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9idGFpbmVkIHdpdGggY29tYmluYXRpb24gb2YgMm1BCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBhbmQgOG1BLiIiIiAiIiIgOCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUFVFTiIiIiIgLS0+IDEwdUEgcHVsbCB1cAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAod2VhayBzdHJlbmd0aCkiIiIgIiIiIDkgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BERU4iIiIiIC0tPiAxMHVBIHB1bGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG93biAod2VhayBzdHJlbmd0aCkiIiIgIiIiIDEwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0VfTiIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFsdWUuIGxldmVsIOKAmDDigJkgZW5hYmxlcyB0aGUgSURPCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIFBBRCBwYXRoLiBFbHNlIFBBRCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmlzdGF0ZWQgKGV4Y2VwdCBmb3IgdGhlIFBVL1BECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoaWNoIGFyZSBpbmRlcGVuZGVudCkuIiAiVmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2V0cyBsYXRjaGVkIGF0IHJpc2luZyBlZGdlIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJFVDMzIiIiICIiIiAxMSA9PiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX05fT1YiIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG92ZXJpcmRlLiB3aGVuIGJpdCBpcyBzZXQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgJzEnIElPRV9OIChiaXQgNCkgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBjb250cm9sIElPIElPRV9OIHNpZ25hbCBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OIGlzIGNvbnRyb2wgdmlhIHNlbGVjdGVkIEhXCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljLiBzdHJvbmcgUFVMTCBVUCBhbmQgUFVMTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb3duIGNvbnRyb2wgaXMgZGlzYWJsZWQgZm9yIGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJTydzLiBib3RoIGNvbnRyb2xzIGFyZSB0aWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljIGxldmVsICcwJy4KKworI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18yOV9NRU1fR1BJT19QQURfQ09ORklHXzI5X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMzAgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMzBfTUVNX0dQSU9fUEFEX0NPTkZJR18zMF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEZGRiAgLy8gR1BJTyAwIHJlZ2lzdGVyOiAiQml0IDAgLSAzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgZm9yIFBBRCBJTyBtb2RlIHNlbGVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW9fcmVnaXN0ZXI9eyAiIiAwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVswXSIiIiIiIiAiIiAxID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsxXSIiIiIiIiAiIiAyID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsyXSIiIiIiIiAiIiAzID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVszXSIiIiIgNCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9ERU4iIiIiIC0tPiBXaGVuIGxldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBkaXNhYmxlcyB0aGUgUE1PUyB4dG9ycyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgb3V0cHV0IHN0YWdlcyBtYWtpbmcgdGhlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcGVuLWRyYWluIHR5cGUuIiBpdCBjYW4gYmUgdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgSTJDIHR5cGUgb2YgcGVyaXBoZXJhbHMuIDUgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkkyTUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDJtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UiIiIgIiIiIDYgPT4gIiIiIkk0TUFFTiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLS0+IExldmVsIOKAmDHigJkgZW5hYmxlcyB0aGUgYXBwcm94CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBvdXRwdXQgc3RhZ2UiIiIgIiIiIDcgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkk4TUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDhtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UuIE5vdGU6IGFueSBkcml2ZSBzdHJlbmd0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZXR3ZWVuIDJtQSBhbmQgMTRtQSBjYW4gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2J0YWluZWQgd2l0aCBjb21iaW5hdGlvbiBvZiAybUEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIGFuZCA4bUEuIiIiICIiIiA4ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQVUVOIiIiIiAtLT4gMTB1QSBwdWxsIHVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgOSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUERFTiIiIiIgLS0+IDEwdUEgcHVsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb3duICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgMTAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPRV9OIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZS4gbGV2ZWwg4oCYMOKAmSBlbmFibGVzIHRoZSBJRE8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gUEFEIHBhdGguIEVsc2UgUEFEIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaXN0YXRlZCAoZXhjZXB0IGZvciB0aGUgUFUvUEQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYXJlIGluZGVwZW5kZW50KS4iICJWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXRzIGxhdGNoZWQgYXQgcmlzaW5nIGVkZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVUMzMiIiIgIiIiIDExID0+IiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTl9PViIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3ZlcmlyZGUuIHdoZW4gYml0IGlzIHNldCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyAnMScgSU9FX04gKGJpdCA0KSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGNvbnRyb2wgSU8gSU9FX04gc2lnbmFsIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX04gaXMgY29udHJvbCB2aWEgc2VsZWN0ZWQgSFcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMuIHN0cm9uZyBQVUxMIFVQIGFuZCBQVUxMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvd24gY29udHJvbCBpcyBkaXNhYmxlZCBmb3IgYWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPJ3MuIGJvdGggY29udHJvbHMgYXJlIHRpZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgbGV2ZWwgJzAnLgorCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzMwX01FTV9HUElPX1BBRF9DT05GSUdfMzBfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18zMSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18zMV9NRU1fR1BJT19QQURfQ09ORklHXzMxX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwRkZGICAvLyBHUElPIDAgcmVnaXN0ZXI6ICJCaXQgMCAtIDMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCBmb3IgUEFEIElPIG1vZGUgc2VsZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpb19yZWdpc3Rlcj17ICIiIDAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzBdIiIiIiIiICIiIDEgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzFdIiIiIiIiICIiIDIgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzJdIiIiIiIiICIiIDMgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzNdIiIiIiA0ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0RFTiIiIiIgLS0+IFdoZW4gbGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGRpc2FibGVzIHRoZSBQTU9TIHh0b3JzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvdXRwdXQgc3RhZ2VzIG1ha2luZyB0aGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wZW4tZHJhaW4gdHlwZS4iIGl0IGNhbiBiZSB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBJMkMgdHlwZSBvZiBwZXJpcGhlcmFscy4gNSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSTJNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggMm1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZSIiIiAiIiIgNiA9PiAiIiIiSTRNQUVOIiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtLT4gTGV2ZWwg4oCYMeKAmSBlbmFibGVzIHRoZSBhcHByb3gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIG91dHB1dCBzdGFnZSIiIiAiIiIgNyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSThNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggOG1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZS4gTm90ZTogYW55IGRyaXZlIHN0cmVuZ3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJldHdlZW4gMm1BIGFuZCAxNG1BIGNhbiBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvYnRhaW5lZCB3aXRoIGNvbWJpbmF0aW9uIG9mIDJtQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgYW5kIDhtQS4iIiIgIiIiIDggPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BVRU4iIiIiIC0tPiAxMHVBIHB1bGwgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiA5ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQREVOIiIiIiAtLT4gMTB1QSBwdWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvd24gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiAxMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9FX04iIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBsZXZlbCDigJgw4oCZIGVuYWJsZXMgdGhlIElETworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBQQUQgcGF0aC4gRWxzZSBQQUQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpc3RhdGVkIChleGNlcHQgZm9yIHRoZSBQVS9QRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgaW5kZXBlbmRlbnQpLiIgIlZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldHMgbGF0Y2hlZCBhdCByaXNpbmcgZWRnZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRVQzMyIiIiAiIiIgMTEgPT4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OX09WIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyaXJkZS4gd2hlbiBiaXQgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljICcxJyBJT0VfTiAoYml0IDQpIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgY29udHJvbCBJTyBJT0VfTiBzaWduYWwgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTiBpcyBjb250cm9sIHZpYSBzZWxlY3RlZCBIVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYy4gc3Ryb25nIFBVTEwgVVAgYW5kIFBVTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93biBjb250cm9sIGlzIGRpc2FibGVkIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gYm90aCBjb250cm9scyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMzFfTUVNX0dQSU9fUEFEX0NPTkZJR18zMV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzMyIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzMyX01FTV9HUElPX1BBRF9DT05GSUdfMzJfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBGRkYgIC8vIEdQSU8gMCByZWdpc3RlcjogIkJpdCAwIC0gMyBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VkIGZvciBQQUQgSU8gbW9kZSBzZWxlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlvX3JlZ2lzdGVyPXsgIiIgMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMF0iIiIiIiIgIiIgMSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMV0iIiIiIiIgIiIgMiA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMl0iIiIiIiIgIiIgMyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbM10iIiIiIDQgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPREVOIiIiIiAtLT4gV2hlbiBsZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgZGlzYWJsZXMgdGhlIFBNT1MgeHRvcnMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG91dHB1dCBzdGFnZXMgbWFraW5nIHRoZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3Blbi1kcmFpbiB0eXBlLiIgaXQgY2FuIGJlIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIEkyQyB0eXBlIG9mIHBlcmlwaGVyYWxzLiA1ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJMk1BRU4iIiIiIC0tPiBMZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZXMgdGhlIGFwcHJveCAybUEgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YWdlIiIiICIiIiA2ID0+ICIiIiJJNE1BRU4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0tPiBMZXZlbCDigJgx4oCZIGVuYWJsZXMgdGhlIGFwcHJveAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgb3V0cHV0IHN0YWdlIiIiICIiIiA3ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJOE1BRU4iIiIiIC0tPiBMZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZXMgdGhlIGFwcHJveCA4bUEgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YWdlLiBOb3RlOiBhbnkgZHJpdmUgc3RyZW5ndGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmV0d2VlbiAybUEgYW5kIDE0bUEgY2FuIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9idGFpbmVkIHdpdGggY29tYmluYXRpb24gb2YgMm1BCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBhbmQgOG1BLiIiIiAiIiIgOCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUFVFTiIiIiIgLS0+IDEwdUEgcHVsbCB1cAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAod2VhayBzdHJlbmd0aCkiIiIgIiIiIDkgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BERU4iIiIiIC0tPiAxMHVBIHB1bGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG93biAod2VhayBzdHJlbmd0aCkiIiIgIiIiIDEwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0VfTiIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFsdWUuIGxldmVsIOKAmDDigJkgZW5hYmxlcyB0aGUgSURPCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIFBBRCBwYXRoLiBFbHNlIFBBRCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmlzdGF0ZWQgKGV4Y2VwdCBmb3IgdGhlIFBVL1BECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoaWNoIGFyZSBpbmRlcGVuZGVudCkuIiAiVmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2V0cyBsYXRjaGVkIGF0IHJpc2luZyBlZGdlIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJFVDMzIiIiICIiIiAxMSA9PiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX05fT1YiIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG92ZXJpcmRlLiB3aGVuIGJpdCBpcyBzZXQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgJzEnIElPRV9OIChiaXQgNCkgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBjb250cm9sIElPIElPRV9OIHNpZ25hbCBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OIGlzIGNvbnRyb2wgdmlhIHNlbGVjdGVkIEhXCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljLiBzdHJvbmcgUFVMTCBVUCBhbmQgUFVMTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb3duIGNvbnRyb2wgaXMgZGlzYWJsZWQgZm9yIGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJTydzLiBib3RoIGNvbnRyb2xzIGFyZSB0aWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljIGxldmVsICcwJy4KKworI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18zMl9NRU1fR1BJT19QQURfQ09ORklHXzMyX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMzMgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMzNfTUVNX0dQSU9fUEFEX0NPTkZJR18zM19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAzRiAgLy8gR1BJTyAwIHJlZ2lzdGVyOiAiQml0IDAgLSAzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgZm9yIFBBRCBJTyBtb2RlIHNlbGVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW9fcmVnaXN0ZXI9eyAiIiAwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVswXSIiIiIiIiAiIiAxID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsxXSIiIiIiIiAiIiAyID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsyXSIiIiIiIiAiIiAzID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVszXSIiIiIgNCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9FX04iIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBsZXZlbCDigJgw4oCZIGVuYWJsZXMgdGhlIElETworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBQQUQgcGF0aC4gRWxzZSBQQUQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpc3RhdGVkIChleGNlcHQgZm9yIHRoZSBQVS9QRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgaW5kZXBlbmRlbnQpLiIgIlZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldHMgbGF0Y2hlZCBhdCByaXNpbmcgZWRnZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRVQzMyIiIiAiIiIgNSA9PiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX05fT1YiIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG92ZXJpcmRlLiB3aGVuIGJpdCBpcyBzZXQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgJzEnIElPRV9OIChiaXQgNCkgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBjb250cm9sIElPIElPRV9OIHNpZ25hbCBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OIGlzIGNvbnRyb2wgdmlhIHNlbGVjdGVkIEhXCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljLiBzdHJvbmcgUFVMTCBVUCBhbmQgUFVMTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb3duIGNvbnRyb2wgaXMgZGlzYWJsZWQgZm9yIGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJTydzLiBib3RoIGNvbnRyb2xzIGFyZSB0aWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljIGxldmVsICcwJy4gSU9ERU4gYW5kIEk4TUFFTgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBkaWVzYWJsZWQgZm9yIGFsbCBkZXZlbG9wbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJTydzLiBUaGVzZSBzaWduYWxzIGFyZSB0aWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljIGxldmVsICcwJy4gY29tbW9uIGNvbnRyb2wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgaW1wbGVtZW50ZWQgZm9yIEkyTUFFTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSTRNQUVOLCBXS1BVLCBXS1BEIGNvbnRyb2wgLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWZlciBkZXZfcGFkX2Ntbl9jb25maWcgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0cy4KKworI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18zM19NRU1fR1BJT19QQURfQ09ORklHXzMzX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMzQgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMzRfTUVNX0dQSU9fUEFEX0NPTkZJR18zNF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAzRiAgLy8gR1BJTyAwIHJlZ2lzdGVyOiAiQml0IDAgLSAzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgZm9yIFBBRCBJTyBtb2RlIHNlbGVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW9fcmVnaXN0ZXI9eyAiIiAwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVswXSIiIiIiIiAiIiAxID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsxXSIiIiIiIiAiIiAyID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsyXSIiIiIiIiAiIiAzID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVszXSIiIiIgNCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9FX04iIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBsZXZlbCDigJgw4oCZIGVuYWJsZXMgdGhlIElETworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBQQUQgcGF0aC4gRWxzZSBQQUQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpc3RhdGVkIChleGNlcHQgZm9yIHRoZSBQVS9QRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgaW5kZXBlbmRlbnQpLiIgIlZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldHMgbGF0Y2hlZCBhdCByaXNpbmcgZWRnZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRVQzMyIiIiAiIiIgNSA9PiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX05fT1YiIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG92ZXJpcmRlLiB3aGVuIGJpdCBpcyBzZXQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgJzEnIElPRV9OIChiaXQgNCkgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBjb250cm9sIElPIElPRV9OIHNpZ25hbCBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OIGlzIGNvbnRyb2wgdmlhIHNlbGVjdGVkIEhXCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljLiBzdHJvbmcgUFVMTCBVUCBhbmQgUFVMTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb3duIGNvbnRyb2wgaXMgZGlzYWJsZWQgZm9yIGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJTydzLiBib3RoIGNvbnRyb2xzIGFyZSB0aWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljIGxldmVsICcwJy4gSU9ERU4gYW5kIEk4TUFFTgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBkaWVzYWJsZWQgZm9yIGFsbCBkZXZlbG9wbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJTydzLiBUaGVzZSBzaWduYWxzIGFyZSB0aWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljIGxldmVsICcwJy4gY29tbW9uIGNvbnRyb2wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgaW1wbGVtZW50ZWQgZm9yIEkyTUFFTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSTRNQUVOLCBXS1BVLCBXS1BEIGNvbnRyb2wgLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWZlciBkZXZfcGFkX2Ntbl9jb25maWcgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0cy4KKworI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18zNF9NRU1fR1BJT19QQURfQ09ORklHXzM0X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMzUgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMzVfTUVNX0dQSU9fUEFEX0NPTkZJR18zNV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAzRiAgLy8gR1BJTyAwIHJlZ2lzdGVyOiAiQml0IDAgLSAzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgZm9yIFBBRCBJTyBtb2RlIHNlbGVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW9fcmVnaXN0ZXI9eyAiIiAwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVswXSIiIiIiIiAiIiAxID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsxXSIiIiIiIiAiIiAyID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsyXSIiIiIiIiAiIiAzID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVszXSIiIiIgNCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9FX04iIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBsZXZlbCDigJgw4oCZIGVuYWJsZXMgdGhlIElETworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBQQUQgcGF0aC4gRWxzZSBQQUQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpc3RhdGVkIChleGNlcHQgZm9yIHRoZSBQVS9QRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgaW5kZXBlbmRlbnQpLiIgIlZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldHMgbGF0Y2hlZCBhdCByaXNpbmcgZWRnZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRVQzMyIiIiAiIiIgNSA9PiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX05fT1YiIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG92ZXJpcmRlLiB3aGVuIGJpdCBpcyBzZXQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgJzEnIElPRV9OIChiaXQgNCkgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBjb250cm9sIElPIElPRV9OIHNpZ25hbCBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OIGlzIGNvbnRyb2wgdmlhIHNlbGVjdGVkIEhXCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljLiBzdHJvbmcgUFVMTCBVUCBhbmQgUFVMTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb3duIGNvbnRyb2wgaXMgZGlzYWJsZWQgZm9yIGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJTydzLiBib3RoIGNvbnRyb2xzIGFyZSB0aWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljIGxldmVsICcwJy4gSU9ERU4gYW5kIEk4TUFFTgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBkaWVzYWJsZWQgZm9yIGFsbCBkZXZlbG9wbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJTydzLiBUaGVzZSBzaWduYWxzIGFyZSB0aWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljIGxldmVsICcwJy4gY29tbW9uIGNvbnRyb2wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgaW1wbGVtZW50ZWQgZm9yIEkyTUFFTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSTRNQUVOLCBXS1BVLCBXS1BEIGNvbnRyb2wgLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWZlciBkZXZfcGFkX2Ntbl9jb25maWcgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0cy4KKworI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18zNV9NRU1fR1BJT19QQURfQ09ORklHXzM1X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMzYgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMzZfTUVNX0dQSU9fUEFEX0NPTkZJR18zNl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAzRiAgLy8gR1BJTyAwIHJlZ2lzdGVyOiAiQml0IDAgLSAzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgZm9yIFBBRCBJTyBtb2RlIHNlbGVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW9fcmVnaXN0ZXI9eyAiIiAwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVswXSIiIiIiIiAiIiAxID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsxXSIiIiIiIiAiIiAyID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsyXSIiIiIiIiAiIiAzID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVszXSIiIiIgNCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9FX04iIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBsZXZlbCDigJgw4oCZIGVuYWJsZXMgdGhlIElETworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBQQUQgcGF0aC4gRWxzZSBQQUQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpc3RhdGVkIChleGNlcHQgZm9yIHRoZSBQVS9QRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgaW5kZXBlbmRlbnQpLiIgIlZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldHMgbGF0Y2hlZCBhdCByaXNpbmcgZWRnZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRVQzMyIiIiAiIiIgNSA9PiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX05fT1YiIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG92ZXJpcmRlLiB3aGVuIGJpdCBpcyBzZXQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgJzEnIElPRV9OIChiaXQgNCkgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBjb250cm9sIElPIElPRV9OIHNpZ25hbCBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OIGlzIGNvbnRyb2wgdmlhIHNlbGVjdGVkIEhXCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljLiBzdHJvbmcgUFVMTCBVUCBhbmQgUFVMTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb3duIGNvbnRyb2wgaXMgZGlzYWJsZWQgZm9yIGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJTydzLiBib3RoIGNvbnRyb2xzIGFyZSB0aWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljIGxldmVsICcwJy4gSU9ERU4gYW5kIEk4TUFFTgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBkaWVzYWJsZWQgZm9yIGFsbCBkZXZlbG9wbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJTydzLiBUaGVzZSBzaWduYWxzIGFyZSB0aWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljIGxldmVsICcwJy4gY29tbW9uIGNvbnRyb2wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgaW1wbGVtZW50ZWQgZm9yIEkyTUFFTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSTRNQUVOLCBXS1BVLCBXS1BEIGNvbnRyb2wgLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWZlciBkZXZfcGFkX2Ntbl9jb25maWcgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0cy4KKworI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18zNl9NRU1fR1BJT19QQURfQ09ORklHXzM2X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMzcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMzdfTUVNX0dQSU9fUEFEX0NPTkZJR18zN19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAzRiAgLy8gR1BJTyAwIHJlZ2lzdGVyOiAiQml0IDAgLSAzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgZm9yIFBBRCBJTyBtb2RlIHNlbGVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW9fcmVnaXN0ZXI9eyAiIiAwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVswXSIiIiIiIiAiIiAxID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsxXSIiIiIiIiAiIiAyID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsyXSIiIiIiIiAiIiAzID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVszXSIiIiIgNCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9FX04iIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBsZXZlbCDigJgw4oCZIGVuYWJsZXMgdGhlIElETworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBQQUQgcGF0aC4gRWxzZSBQQUQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpc3RhdGVkIChleGNlcHQgZm9yIHRoZSBQVS9QRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgaW5kZXBlbmRlbnQpLiIgIlZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldHMgbGF0Y2hlZCBhdCByaXNpbmcgZWRnZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRVQzMyIiIiAiIiIgNSA9PiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX05fT1YiIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG92ZXJpcmRlLiB3aGVuIGJpdCBpcyBzZXQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgJzEnIElPRV9OIChiaXQgNCkgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBjb250cm9sIElPIElPRV9OIHNpZ25hbCBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OIGlzIGNvbnRyb2wgdmlhIHNlbGVjdGVkIEhXCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljLiBzdHJvbmcgUFVMTCBVUCBhbmQgUFVMTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb3duIGNvbnRyb2wgaXMgZGlzYWJsZWQgZm9yIGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJTydzLiBib3RoIGNvbnRyb2xzIGFyZSB0aWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljIGxldmVsICcwJy4gSU9ERU4gYW5kIEk4TUFFTgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBkaWVzYWJsZWQgZm9yIGFsbCBkZXZlbG9wbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJTydzLiBUaGVzZSBzaWduYWxzIGFyZSB0aWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljIGxldmVsICcwJy4gY29tbW9uIGNvbnRyb2wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgaW1wbGVtZW50ZWQgZm9yIEkyTUFFTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSTRNQUVOLCBXS1BVLCBXS1BEIGNvbnRyb2wgLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWZlciBkZXZfcGFkX2Ntbl9jb25maWcgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0cy4KKworI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18zN19NRU1fR1BJT19QQURfQ09ORklHXzM3X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMzggcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMzhfTUVNX0dQSU9fUEFEX0NPTkZJR18zOF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAzRiAgLy8gR1BJTyAwIHJlZ2lzdGVyOiAiQml0IDAgLSAzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgZm9yIFBBRCBJTyBtb2RlIHNlbGVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW9fcmVnaXN0ZXI9eyAiIiAwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVswXSIiIiIiIiAiIiAxID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsxXSIiIiIiIiAiIiAyID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsyXSIiIiIiIiAiIiAzID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVszXSIiIiIgNCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9FX04iIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBsZXZlbCDigJgw4oCZIGVuYWJsZXMgdGhlIElETworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBQQUQgcGF0aC4gRWxzZSBQQUQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpc3RhdGVkIChleGNlcHQgZm9yIHRoZSBQVS9QRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgaW5kZXBlbmRlbnQpLiIgIlZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldHMgbGF0Y2hlZCBhdCByaXNpbmcgZWRnZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRVQzMyIiIiAiIiIgNSA9PiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX05fT1YiIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG92ZXJpcmRlLiB3aGVuIGJpdCBpcyBzZXQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgJzEnIElPRV9OIChiaXQgNCkgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBjb250cm9sIElPIElPRV9OIHNpZ25hbCBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OIGlzIGNvbnRyb2wgdmlhIHNlbGVjdGVkIEhXCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljLiBzdHJvbmcgUFVMTCBVUCBhbmQgUFVMTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb3duIGNvbnRyb2wgaXMgZGlzYWJsZWQgZm9yIGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJTydzLiBib3RoIGNvbnRyb2xzIGFyZSB0aWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljIGxldmVsICcwJy4gSU9ERU4gYW5kIEk4TUFFTgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBkaWVzYWJsZWQgZm9yIGFsbCBkZXZlbG9wbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJTydzLiBUaGVzZSBzaWduYWxzIGFyZSB0aWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljIGxldmVsICcwJy4gY29tbW9uIGNvbnRyb2wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgaW1wbGVtZW50ZWQgZm9yIEkyTUFFTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSTRNQUVOLCBXS1BVLCBXS1BEIGNvbnRyb2wgLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWZlciBkZXZfcGFkX2Ntbl9jb25maWcgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0cy4KKworI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18zOF9NRU1fR1BJT19QQURfQ09ORklHXzM4X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMzkgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMzlfTUVNX0dQSU9fUEFEX0NPTkZJR18zOV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAzRiAgLy8gR1BJTyAwIHJlZ2lzdGVyOiAiQml0IDAgLSAzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgZm9yIFBBRCBJTyBtb2RlIHNlbGVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW9fcmVnaXN0ZXI9eyAiIiAwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVswXSIiIiIiIiAiIiAxID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsxXSIiIiIiIiAiIiAyID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsyXSIiIiIiIiAiIiAzID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVszXSIiIiIgNCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9FX04iIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBsZXZlbCDigJgw4oCZIGVuYWJsZXMgdGhlIElETworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBQQUQgcGF0aC4gRWxzZSBQQUQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpc3RhdGVkIChleGNlcHQgZm9yIHRoZSBQVS9QRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgaW5kZXBlbmRlbnQpLiIgIlZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldHMgbGF0Y2hlZCBhdCByaXNpbmcgZWRnZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRVQzMyIiIiAiIiIgNSA9PiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX05fT1YiIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG92ZXJpcmRlLiB3aGVuIGJpdCBpcyBzZXQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgJzEnIElPRV9OIChiaXQgNCkgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBjb250cm9sIElPIElPRV9OIHNpZ25hbCBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OIGlzIGNvbnRyb2wgdmlhIHNlbGVjdGVkIEhXCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljLiBzdHJvbmcgUFVMTCBVUCBhbmQgUFVMTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb3duIGNvbnRyb2wgaXMgZGlzYWJsZWQgZm9yIGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJTydzLiBib3RoIGNvbnRyb2xzIGFyZSB0aWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljIGxldmVsICcwJy4gSU9ERU4gYW5kIEk4TUFFTgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBkaWVzYWJsZWQgZm9yIGFsbCBkZXZlbG9wbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJTydzLiBUaGVzZSBzaWduYWxzIGFyZSB0aWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljIGxldmVsICcwJy4gY29tbW9uIGNvbnRyb2wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgaW1wbGVtZW50ZWQgZm9yIEkyTUFFTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSTRNQUVOLCBXS1BVLCBXS1BEIGNvbnRyb2wgLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWZlciBkZXZfcGFkX2Ntbl9jb25maWcgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0cy4KKworI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18zOV9NRU1fR1BJT19QQURfQ09ORklHXzM5X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfNDAgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfNDBfTUVNX0dQSU9fUEFEX0NPTkZJR180MF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDA3RkZGRiAgLy8gR1BJTyAwIHJlZ2lzdGVyOiAiQml0IDAgLSAzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgZm9yIFBBRCBJTyBtb2RlIHNlbGVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW9fcmVnaXN0ZXI9eyAiIiAwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVswXSIiIiIiIiAiIiAxID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsxXSIiIiIiIiAiIiAyID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsyXSIiIiIiIiAiIiAzID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVszXSIiIiIgNCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9ERU4iIiIiIC0tPiBXaGVuIGxldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBkaXNhYmxlcyB0aGUgUE1PUyB4dG9ycyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgb3V0cHV0IHN0YWdlcyBtYWtpbmcgdGhlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcGVuLWRyYWluIHR5cGUuIiAiRm9yIGV4YW1wbGUgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSBvZiBJMkMgVmFsdWUgZ2V0cyBsYXRjaGVkIGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJpc2luZyBlZGdlIG9mIFJFVDMzLiIiIiAiIiIgNSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSTJNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggMm1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZSIiIiAiIiIgNiA9PiAiIiIiSTRNQUVOIiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtLT4gTGV2ZWwg4oCYMeKAmSBlbmFibGVzIHRoZSBhcHByb3gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIG91dHB1dCBzdGFnZSIiIiAiIiIgNyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSThNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggOG1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZS4gTm90ZTogYW55IGRyaXZlIHN0cmVuZ3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJldHdlZW4gMm1BIGFuZCAxNG1BIGNhbiBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvYnRhaW5lZCB3aXRoIGNvbWJpbmF0aW9uIG9mIDJtQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgYW5kIDhtQS4iIiIgIiIiIDggPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BVRU4iIiIiIC0tPiAxMHVBIHB1bGwgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiA5ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQREVOIiIiIiAtLT4gMTB1QSBwdWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvd24gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiAxMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9FX04iIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBsZXZlbCDigJgw4oCZIGVuYWJsZXMgdGhlIElETworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBQQUQgcGF0aC4gRWxzZSBQQUQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpc3RhdGVkIChleGNlcHQgZm9yIHRoZSBQVS9QRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgaW5kZXBlbmRlbnQpLiIgIlZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldHMgbGF0Y2hlZCBhdCByaXNpbmcgZWRnZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRVQzMyIiIiAiIiIgMTEgPT4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OX09WIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyaXJkZS4gd2hlbiBiaXQgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljICcxJyBJT0VfTiAoYml0IDQpIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgY29udHJvbCBJTyBJT0VfTiBzaWduYWwgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTiBpcyBjb250cm9sIHZpYSBzZWxlY3RlZCBIVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYy4gc3Ryb25nIFBVTEwgVVAgYW5kIFBVTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93biBjb250cm9sIGlzIGRpc2FibGVkIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gYm90aCBjb250cm9scyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfNDBfTUVNX0dQSU9fUEFEX0NPTkZJR180MF9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ01OX0NPTkZJRyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NNTl9DT05GSUdfTUVNX0QyRF9JU09fQV9FTiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwODAgIC8vIHdoZW4gJzEnIGVuYWJsZSBJU08gQSBjb250cm9sIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEQyRCBQYWRzIGVsc2UgSVNPIGlzIGRpc2FibGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGb3IgdGhlc2UgUEFEUyB0byBiZSBmdW5jdGlvbmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgc2lnbmFscyBzaG91bGQgYmUgc2V0IDAuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DTU5fQ09ORklHX01FTV9EMkRfSVNPX1lfRU4gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDQwICAvLyB3aGVuICcxJyBlbmFibGUgSVNPIFkgY29udHJvbCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEMkQgUGFkcyBlbHNlIElTTyBpcyBkaXNhYmxlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRm9yIHRoZXNlIFBBRFMgdG8gYmUgZnVuY3Rpb25hbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIHNpZ25hbHMgc2hvdWxkIGJlIHNldCAwLgorCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ01OX0NPTkZJR19NRU1fUEFEX0pUQUdfSURJRU4gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDIwICAvLyBJZiBsZXZlbCDigJgx4oCZIGVuYWJsZXMgdGhlIFBBRCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPREkgcGF0aCBmb3IgSlRBRyBQQURTIFtQQUQgMjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDI0LCAyOCwgMjldLiBFbHNlIE9ESSBpcyBwdWxsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g4oCYTG934oCZIHJlZ2FyZGxlc3Mgb2YgUEFEIGxldmVsLiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIlZhbHVlIGdldHMgbGF0Y2hlZCBhdCByaXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWRnZSBvZiBSRVQzMy4iIiIgIiIiCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DTU5fQ09ORklHX01FTV9QQURfSFlTVFZBTF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxOCAgLy8gMDDigJk6IGh5c3RlcmlyaXMgPSAxMCUgb2YgVkREUworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoZGlmZmVyZW5jZSBiZXR3ZWVuIHVwcGVyIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb3dlciB0aHJlc2hvbGQgb2YgdGhlIHNjaG1pdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmlnZ2VyKSDigJgwMeKAmTogaHlzdGVyaXJpcyA9IDIwJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZiBWRERTIChkaWZmZXJlbmNlIGJldHdlZW4gdXBwZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIGxvd2VyIHRocmVzaG9sZCBvZiB0aGUgc2NobWl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaWdnZXIpIOKAmDEw4oCZOiBoeXN0ZXJpcmlzID0gMzAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mIFZERFMgKGRpZmZlcmVuY2UgYmV0d2VlbiB1cHBlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgbG93ZXIgdGhyZXNob2xkIG9mIHRoZSBzY2htaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpZ2dlcikg4oCYMTHigJk6IGh5c3RlcmlyaXMgPSA0MCUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2YgVkREUyAoZGlmZmVyZW5jZSBiZXR3ZWVuIHVwcGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBsb3dlciB0aHJlc2hvbGQgb2YgdGhlIHNjaG1pdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmlnZ2VyKSIgIiIiCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DTU5fQ09ORklHX01FTV9QQURfSFlTVFZBTF9TIDMKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DTU5fQ09ORklHX01FTV9QQURfSFlTVEVOIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNCAgLy8gSWYgbG9naWMg4oCYMOKAmSB0aGVyZSBpcyBubworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoeXN0ZXJlc2lzLiBTZXQgdG8g4oCYMeKAmSB0byBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaHlzdGVyZXNpcy4gTGVhdmUgdGhlIGNob2ljZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjdXN0b21lcnMiIiIKKworI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NNTl9DT05GSUdfTUVNX1BBRF9JQklBU0VOIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMiAgLy8gTm9ybWFsIGZ1bmN0aW9uYWwgb3BlcmF0aW9uIHNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIHRvIGxvZ2ljIOKAmDHigJkgdG8gaW5jcmVhc2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwZWVkIG9mIHRoZSBvL3AgYnVmZmVyIGF0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3N0IG9mIDAuMnVBIHN0YXRpYyBjdXJyZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnN1bXB0aW9uIHBlciBJTy4gRHVyaW5nIElERFEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGVzdCBhbmQgZHVyaW5nIEhpYmVybmF0ZSB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdvdWxkIGJlIGZvcmNlZCB0byBsb2dpYyDigJgw4oCZLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBWYWx1ZSBpcyBub3QgbGF0Y2hlZCBhdCByaXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWRnZSBvZiBSRVQzMy4iIgorCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ01OX0NPTkZJR19NRU1fUEFEX0lESUVOIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gSWYgbGV2ZWwg4oCYMeKAmSBlbmFibGVzIHRoZSBQQUQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT0RJIHBhdGguIEVsc2UgT0RJIGlzIHB1bGxlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDigJhMb3figJkgcmVnYXJkbGVzcyBvZiBQQUQgbGV2ZWwuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiVmFsdWUgZ2V0cyBsYXRjaGVkIGF0IHJpc2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlZGdlIG9mIFJFVDMzLiIiIiAiIiIKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19EMkRfREVWX1BBRF9DTU5fQ09ORklHIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfRDJEX0RFVl9QQURfQ01OX0NPTkZJR19NRU1fREVWX1BBRF9DTU5fQ09ORl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAzRiAgLy8gdGhpcyByZWdpc3RlciBpbXBsZW1lbnRzIGNvbW1vbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJTyBjb250cm9sIHRvIGFsbCBkZXZlbWVudCBtb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBBRHM7IHRoZXNlIFBBRHMgYXJlIERFVl9QQUQzMyB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBERVZfUEFEMzkuIEJpdCBbMTowXSA6IERyaXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0cmVuZ3RoIGNvbnRyb2wuIFRoZXNlIDIgYml0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcmUgY29ubmVjdGVkIHRvIERFViBQQUQgZHJpdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RyZW5ndGggY29udHJvbC4gcG9zc2libGUgZHJpdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RyZWdudGhzIGFyZSAyTUEsIDRNQSBhbmQgNiBNQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgdGhlIHRoZXNlIElPJ3MuIGJpdCAwOiB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0byBsb2dpYyB2YWx1ZSAnMScgZW5hYmxlIDJNQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkcml2ZSBzdHJlbmd0aCBmb3IgREVWUEFEMDEgdG8gMDcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0IDE6IHdoZW4gc2V0IHRvIGxvZ2ljIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxJyBlbmFibGUgNE1BIGRyaXZlIHN0cmVuZ3RoIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBERVZQQUQwMSB0byAwNy4gYml0WzM6Ml0gOiBXSworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQVUxMIFVQIGFuZCBQVUxMIGRvd24gY29udHJvbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlc2UgMiBiaXRzIHByb3ZpZGUgSVdLUFVFTiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSVdLUERFTiBjb250cm9sIGZvciBhbGwgREVWIElPJ3MuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdCAyOiB3aGVuIHNldCB0byBsb2dpYyB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAnMScgZW5hYmxlIFdLUFUgdG8gREVWUEFEMDEgdG8gMDcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0IDM6IHdoZW4gc2V0IHRvIGxvZ2ljIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxJyBlbmFibGUgV0tQRCB0byBERVZQQUQwMSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwNy4gYml0IDQ6IFdLIFBVTEwgY29udHJvbCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gREVWX1BLR19ERVRFQ1QgcGluLiB3aGVuICcxJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwdWxsdXAgZW5hYmxlZCBlbHNlIGl0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpc2FibGUuIGJpdCA1OiB3aGVuIHNldCB0byBsb2dpYworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZSAnMScgZW5hYmxlIDhNQSBkcml2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdHJlbmd0aCBmb3IgREVWUEFEMDEgdG8gMDcuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9EMkRfREVWX1BBRF9DTU5fQ09ORklHX01FTV9ERVZfUEFEX0NNTl9DT05GX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19EMkRfVE9TVEFDS19QQURfQ09ORiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0QyRF9UT1NUQUNLX1BBRF9DT05GX01FTV9EMkRfVE9TVEFDS19QQURfQ09ORl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxRkZGRkZGRiAgLy8gT0VOL09FTjJYIGNvbnRyb2wuIFdoZW4gMCA6IEFjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcyBpbnB1dCBidWZmZXIgZWxzZSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnVmZmVyIHdpdGggZHJpdmUgc3RyZW5ndGggMi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyByZWdpc3RlciBjb250cm9sIE9FTjJYIHBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZiBEMkQgVE9TVEFDSyBQQUQ6IE9FTjFYIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPRU4yWCBkZWNvZGluZyBpcyBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAid2hlbiAiIjAwIiIgOiIgIndoZW4gIiIwMSIiIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGlydmUgc3RyZW5ndGggaXMgJzEnIGFuZCBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnVmZmVyIGVuYWJsZWQuIiAid2hlbiAiIjEwIiIgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkcml2ZSBzdHJlbmd0aCBpcyAyIGFuZCBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnVmZmVyIGlzIGRpc2FibGVkLiIgIndoZW4gIiIxMSIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDogZGlydmUgc3RyZW5ndGggaXMgJzMnIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXQgYnVmZmVyIGVuYWJsZWQuIgorCisjZGVmaW5lIE9DUF9TSEFSRURfRDJEX1RPU1RBQ0tfUEFEX0NPTkZfTUVNX0QyRF9UT1NUQUNLX1BBRF9DT05GX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19EMkRfTUlTQ19QQURfQ09ORiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0QyRF9NSVNDX1BBRF9DT05GX01FTV9EMkRfUE9SX1JFU0VUX04gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMjAwICAvLyBUaGlzIHJlZ2lzdGVyIHByb3ZpZGUgT0VOMlgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udHJvbCB0byBEMkQgUEFEUyBPRU4vT0VOMlgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udHJvbC4gV2hlbiAwIDogQWN0IGFzIGlucHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ1ZmZlciBlbHNlIG91dHB1dCBidWZmZXIgd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkcml2ZSBzdHJlbmd0aCAyLgorCisjZGVmaW5lIE9DUF9TSEFSRURfRDJEX01JU0NfUEFEX0NPTkZfTUVNX0QyRF9SRVNFVF9OIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMCAgLy8gT0VOL09FTjJYIGNvbnRyb2wuIFdoZW4gMCA6IEFjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcyBpbnB1dCBidWZmZXIgZWxzZSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnVmZmVyIHdpdGggZHJpdmUgc3RyZW5ndGggMi4KKworI2RlZmluZSBPQ1BfU0hBUkVEX0QyRF9NSVNDX1BBRF9DT05GX01FTV9EMkRfSENMSyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwODAgIC8vIE9FTi9PRU4yWCBjb250cm9sLiBXaGVuIDAgOiBBY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXMgaW5wdXQgYnVmZmVyIGVsc2Ugb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ1ZmZlciB3aXRoIGRyaXZlIHN0cmVuZ3RoIDIuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9EMkRfTUlTQ19QQURfQ09ORl9NRU1fRDJEX0pUQUdfVENLIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA0MCAgLy8gT0VOL09FTjJYIGNvbnRyb2wuIFdoZW4gMCA6IEFjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcyBpbnB1dCBidWZmZXIgZWxzZSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnVmZmVyIHdpdGggZHJpdmUgc3RyZW5ndGggMi4KKworI2RlZmluZSBPQ1BfU0hBUkVEX0QyRF9NSVNDX1BBRF9DT05GX01FTV9EMkRfSlRBR19UTVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDIwICAvLyBPRU4vT0VOMlggY29udHJvbC4gV2hlbiAwIDogQWN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzIGlucHV0IGJ1ZmZlciBlbHNlIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBidWZmZXIgd2l0aCBkcml2ZSBzdHJlbmd0aCAyLgorCisjZGVmaW5lIE9DUF9TSEFSRURfRDJEX01JU0NfUEFEX0NPTkZfTUVNX0QyRF9KVEFHX1RESSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTAgIC8vIE9FTi9PRU4yWCBjb250cm9sLiBXaGVuIDAgOiBBY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXMgaW5wdXQgYnVmZmVyIGVsc2Ugb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ1ZmZlciB3aXRoIGRyaXZlIHN0cmVuZ3RoIDIuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9EMkRfTUlTQ19QQURfQ09ORl9NRU1fRDJEX1BJT1NDIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwOCAgLy8gT0VOL09FTjJYIGNvbnRyb2wuIFdoZW4gMCA6IEFjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcyBpbnB1dCBidWZmZXIgZWxzZSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnVmZmVyIHdpdGggZHJpdmUgc3RyZW5ndGggMi4KKworI2RlZmluZSBPQ1BfU0hBUkVEX0QyRF9NSVNDX1BBRF9DT05GX01FTV9EMkRfU1BBUkVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDcgIC8vIEQyRCBTUEFSRSBQQUQgT0VOL09FTjJYIGNvbnRyb2wuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdoZW4gMDogQWN0IGFzIGlucHV0IGJ1ZmZlciBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHB1dCBidWZmZXIgd2l0aCBkcml2ZSBzdHJlbmd0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAyLgorCisjZGVmaW5lIE9DUF9TSEFSRURfRDJEX01JU0NfUEFEX0NPTkZfTUVNX0QyRF9TUEFSRV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fU09QX0NPTkZfT1ZFUlJJREUgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9TT1BfQ09ORl9PVkVSUklERV9NRU1fU09QX0NPTkZfT1ZFUlJJREUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyB3aGVuICcxJyA6IHNpZ25hbCB3aWxsIG92YmVycmlkZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTb1Agc2V0dGluZyBvZiBKVEFHIFBBRFMuIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAnOiBTb1Agc2V0dGluZyB3aWxsIGNvbnRyb2wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSlRBRyBQQURzIFsgVERJLCBURE8sIFRNUywgVENLXQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0NDM1hYX0RFQlVHU1NfU1RBVFVTIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfQ0MzWFhfREVCVUdTU19TVEFUVVNfQVBQU19NQ1VfSlRBR05TVyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMjAgIC8vIFRoaXMgcmVnaXN0ZXIgY29udGFpbnMgZGVidWcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3Vic3lzdGVtIHN0YXR1cyBiaXRzIEZyb20gQVBQUworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNQ1Ugc3RhdHVzIGJpdCB0byBpbmRpY2F0ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hldGhlciBzZXJpYWwgd2lyZSBvciA0IHBpbnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8ganRhZyBzZWxlY3QuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9DQzNYWF9ERUJVR1NTX1NUQVRVU19DSlRBR19CWVBBU1NfU1RBVFVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxMCAgLy8gY2p0YWcgYnlwYXNzIGJpdCBzZWxlY3QKKworI2RlZmluZSBPQ1BfU0hBUkVEX0NDM1hYX0RFQlVHU1NfU1RBVFVTX1NXX0lOVEVSRkFDRV9TRUxfU1RBVFVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwOCAgLy8gc2VyaWFsIHdpcmUgaW50ZXJmYWNlIGJpdCBzZWxlY3QKKworI2RlZmluZSBPQ1BfU0hBUkVEX0NDM1hYX0RFQlVHU1NfU1RBVFVTX0FQUFNfVEFQX0VOQUJMRV9TVEFUVVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA0ICAvLyBhcHBzIHRhcCBlbmFibGUgc3RhdHVzCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9DQzNYWF9ERUJVR1NTX1NUQVRVU19UQVBTX0VOQUJMRV9TVEFUVVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyICAvLyB0YXAgZW5hYmxlIHN0YXR1cworCisjZGVmaW5lIE9DUF9TSEFSRURfQ0MzWFhfREVCVUdTU19TVEFUVVNfU1NCRF9VTkxPQ0sgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyBzc2JkIHVubG9jayBzdGF0dXMKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19DQzNYWF9ERUJVR01VWF9TRUwgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9DQzNYWF9ERUJVR01VWF9TRUxfTUVNX0NDM1hYX0RFQlVHTVVYX1NFTF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRkZGRiAgLy8gZGVidWcgbXV4IHNlbGVjdCByZWdpc3Rlci4gVXBwZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOCBiaXRzIGFyZSB1c2VkIGZvciBkZWJ1ZyBtb2R1bGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2VsZWN0aW9uLiBMb3dlciA4IGJpdCBbNzowXSB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluc2lkZSBkZWJ1ZyBtb2R1bGUgZm9yIHNlbGVjdGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtb2R1bGUgc3BlY2lmaWMgc2lnbmFscy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQml0c1sxNTo4OiB3aGVuIHNldCB4IjAwIiA6IEdQUkNNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlYnVnIGJ1cy4gV2hlbiAibzEiIDogU0RJTyBkZWJ1ZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWJ1ZyBidXMgd2hlbiB4IjAyIiA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGF1dG9ub3Vtb3VzIFNQSSB3aGVuIHgiMDMiIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9QSUMgd2hlbiB4IjA0IjogbWVtc3Mgd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB4IjI1IjogbWN1IGRlYnVnIGJ1cyA6IEFQUFMgZGVidWcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiB4IjQ1IjogbWN1IGRlYnVnIGJ1cyA6IE5XUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWJ1ZyB3aGVuIHgiNjUiOiBtY3UgZGVidWcgYnVzIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQUhCMlZCVVMgZGVidWcgd2hlbiB4Ijg1IjogbWN1CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlYnVnIGJ1cyA6IFZCVVMySEFCIGRlYnVnIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8geCI5NSI6IG1jdSBkZWJ1ZyBidXMgOiBSQ00gZGVidWcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiB4IkE1IjogbWN1IGRlYnVnIGJ1cyA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNyeXB0byBkZWJ1ZyB3aGVuIHgiMDYiOiBXTEFOCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlYnVnIGJ1cyB3aGVuIHgiMDciOiBkZWJ1Z3NzIGJ1cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIHgiMDgiOiBBREMgZGVidWcgd2hlbiB4IjA5IjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU0RJTyBQSFkgZGVidWcgYnVzIHRoZW4gIm90aGVycyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOiBubyBkZWJ1ZyBpcyBzZWxlY3RlZAorCisjZGVmaW5lIE9DUF9TSEFSRURfQ0MzWFhfREVCVUdNVVhfU0VMX01FTV9DQzNYWF9ERUJVR01VWF9TRUxfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0FMVF9QQ19WQUxfTlcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9BTFRfUENfVkFMX05XX01FTV9BTFRfUENfVkFMX05XX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyAzMiBiaXQuIFByb2dyYW0gY291bnRlciB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgMHg0IGFkZHJlc3Mgd2hlbiBBbHRfcGNfZW5fbncKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgc2V0LgorCisjZGVmaW5lIE9DUF9TSEFSRURfQUxUX1BDX1ZBTF9OV19NRU1fQUxUX1BDX1ZBTF9OV19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fQUxUX1BDX1ZBTF9BUFBTIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfQUxUX1BDX1ZBTF9BUFBTX01FTV9BTFRfUENfVkFMX0FQUFNfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIDMyIGJpdC4gUHJvZ3JhbSBjb3VudGVyIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciAweDQgYWRkcmVzcyB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFsdF9wY19lbl9hcHBzIGlzIHNldAorCisjZGVmaW5lIE9DUF9TSEFSRURfQUxUX1BDX1ZBTF9BUFBTX01FTV9BTFRfUENfVkFMX0FQUFNfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX1NQQVJFX1JFR180IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfU1BBUkVfUkVHXzRfTUVNX1NQQVJFX1JFR180X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZFICAvLyBIVyByZWdpc3RlcgorCisjZGVmaW5lIE9DUF9TSEFSRURfU1BBUkVfUkVHXzRfTUVNX1NQQVJFX1JFR180X1MgMQorI2RlZmluZSBPQ1BfU0hBUkVEX1NQQVJFX1JFR180X0lOVkVSVF9EMkRfSU5URVJGQUNFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gRGF0YSB0byB0aGUgdG9wIGRpZSBsYXVuY2hlZCBhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBuZWdhdGl2ZSBlZGdlIGluc3RlYWQgb2YgcG9zaXRpdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWRnZS4KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19TUEFSRV9SRUdfNSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX1NQQVJFX1JFR181X01FTV9TUEFSRV9SRUdfNV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gSFcgcmVnaXN0ZXIKKworI2RlZmluZSBPQ1BfU0hBUkVEX1NQQVJFX1JFR181X01FTV9TUEFSRV9SRUdfNV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fU0hfU1BJX0NTX01BU0sgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9TSF9TUElfQ1NfTUFTS19NRU1fU0hfU1BJX0NTX01BU0tfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMEYgIC8vICggY2hpcCBzZWxlY3QgMCBpcyB1bm1hc2tlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhZnRlciByZXNldC4gV2hlbiDigJgx4oCZIDogQ1MgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdW5tYXNrZWQgb3IgZWxzZSBtYXNrZWQuIFZhbGlkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbmZpZ3VyYXRpb25zIGFyZSAxMDAwLCAwMTAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwMDEwIG9yIDAwMDEuIEFueSBvdGhlciBzZXR0aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbiBsZWFkIHRvIHVucHJlZGljdGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmVoYXZpb3IuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9TSF9TUElfQ1NfTUFTS19NRU1fU0hfU1BJX0NTX01BU0tfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0NDM1hYX0RFVklDRV9UWVBFIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfQ0MzWFhfREVWSUNFX1RZUEVfREVWSUNFX1RZUEVfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNjAgIC8vIHJlc2VydmVkIGJpdHMgdGllZCBvZmYgIjAwIi4KKworI2RlZmluZSBPQ1BfU0hBUkVEX0NDM1hYX0RFVklDRV9UWVBFX0RFVklDRV9UWVBFX3Jlc2VydmVkX1MgNQorI2RlZmluZSBPQ1BfU0hBUkVEX0NDM1hYX0RFVklDRV9UWVBFX0RFVklDRV9UWVBFX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDFGICAvLyBDQzNYWCBEZXZpY2UgdHlwZSBpbmZvcm1hdGlvbi4KKworI2RlZmluZSBPQ1BfU0hBUkVEX0NDM1hYX0RFVklDRV9UWVBFX0RFVklDRV9UWVBFX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19NRU1fVE9QTVVYQ1RSTF9JRk9SQ0UgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9NRU1fVE9QTVVYQ1RSTF9JRk9SQ0VfTUVNX1RPUE1VWENUUkxfSUZPUkNFMV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGMCAgLy8gWzRdIDE6IHN3aXRjaCBiZXR3ZWVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdMQU5fSTJDX1NDTCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9QX0dQSU9fUE9SVDRfSTJDIGNsb3NlcyAwOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzd2l0Y2ggb3BlbnMgWzVdIDE6IHN3aXRjaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZXR3ZWVuIFdMQU5fSTJDX1NDTCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9QX1ZTRU5TRV9QT1JUIGNsb3NlcyAwOiBzd2l0Y2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3BlbnMgWzZdIDE6IHN3aXRjaCBiZXR3ZWVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdMQU5fSTJDX1NDTCBhbmQgV0xBTl9BTkFfVFA0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsb3NlcyAwOiBzd2l0Y2ggb3BlbnMgWzddCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlc2VydmVkCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9NRU1fVE9QTVVYQ1RSTF9JRk9SQ0VfTUVNX1RPUE1VWENUUkxfSUZPUkNFMV9TIDQKKyNkZWZpbmUgT0NQX1NIQVJFRF9NRU1fVE9QTVVYQ1RSTF9JRk9SQ0VfTUVNX1RPUE1VWENUUkxfSUZPUkNFX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDBGICAvLyBbMF0gMTogc3dpdGNoIGJldHdlZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV0xBTl9JMkNfU0RBIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUT1BfR1BJT19QT1JUM19JMkMgY2xvc2VzIDA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN3aXRjaCBvcGVucyBbMV0gMTogc3dpdGNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJldHdlZW4gV0xBTl9JMkNfU0RBIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUT1BfSUZPUkNFX1BPUlQgY2xvc2VzIDA6IHN3aXRjaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcGVucyBbMl0gMTogc3dpdGNoIGJldHdlZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV0xBTl9JMkNfU0RBIGFuZCBXTEFOX0FOQV9UUDMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xvc2VzIDA6IHN3aXRjaCBvcGVucyBbM10KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzZXJ2ZWQKKworI2RlZmluZSBPQ1BfU0hBUkVEX01FTV9UT1BNVVhDVFJMX0lGT1JDRV9NRU1fVE9QTVVYQ1RSTF9JRk9SQ0VfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0NDM1hYX0RFVl9QQUNLQUdFX0RFVEVDVCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0NDM1hYX0RFVl9QQUNLQUdFX0RFVEVDVF9ERVZfUEtHX0RFVEVDVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIHdoZW4gJzAnIGluZGljYXRlcyBwYWNrYWdlIHR5cGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgZGV2ZWxvcG1lbnQuCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fQVVUT05NU19TUElDTEtfU0VMIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfQVVUT05NU19TUElDTEtfU0VMX01FTV9BVVRPTk9NT1VTX0JZUEFTUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIgIC8vIFRoaXMgYml0IGlzIHVzZWQgdG8gYnlwYXNzIE1DUFNJCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGF1dG9ub21vdXMgbW9kZSAuaWYgdGhpcyBiaXQgaXMgMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhdXRvbm9tb3VzIE1DU1BJIGxvZ2ljIHdpbGwgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnlwYXNzZWQgYW5kIGl0IHdpbGwgYWN0IGFzIGxpbmsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU1BJCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9BVVRPTk1TX1NQSUNMS19TRUxfTUVNX0FVVE9OTVNfU1BJQ0xLX1NFTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIFRoaXMgYml0IGlzIHVzZWQgaW4gU1BJCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEF1dG9ub21vdXMgbW9kZSB0byBzd2l0Y2ggY2xvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZnJvbSBzeXN0ZW0gY2xvY2sgdG8gU1BJIGNsayB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGNvbWluZyBmcm9tIFBBRC4gV2hlbiB2YWx1ZSAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBBRCBTUEkgY2xrIGlzIHVzZWQgYXMgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsb2NrIGluIExQRFMgbW9kZSBieSBTUEkgYXMgd2VsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcyBhdXRvbm9tb3VzIHdyYXBwZXIgbG9naWMuCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fQ0MzWFhfREVWX1BBRENPTkYgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9DQzNYWF9ERVZfUEFEQ09ORl9NRU1fQ0MzWFhfREVWX1BBRENPTkZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZGRkYKKworI2RlZmluZSBPQ1BfU0hBUkVEX0NDM1hYX0RFVl9QQURDT05GX01FTV9DQzNYWF9ERVZfUEFEQ09ORl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fSURNRU1fVElNX1VQREFURSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0lETUVNX1RJTV9VUERBVEVfTUVNX0lETUVNX1RJTV9VUERBVEVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYKKworI2RlZmluZSBPQ1BfU0hBUkVEX0lETUVNX1RJTV9VUERBVEVfTUVNX0lETUVNX1RJTV9VUERBVEVfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX1NQQVJFX1JFR182IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfU1BBUkVfUkVHXzZfTUVNX1NQQVJFX1JFR182X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyBOV1AgU29mdHdhcmUgcmVnaXN0ZXIKKworI2RlZmluZSBPQ1BfU0hBUkVEX1NQQVJFX1JFR182X01FTV9TUEFSRV9SRUdfNl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fU1BBUkVfUkVHXzcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9TUEFSRV9SRUdfN19NRU1fU1BBUkVfUkVHXzdfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIE5XUCBTb2Z0d2FyZSByZWdpc3RlcgorCisjZGVmaW5lIE9DUF9TSEFSRURfU1BBUkVfUkVHXzdfTUVNX1NQQVJFX1JFR183X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19BUFBTX1dMQU5fT1JCSVQgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9BUFBTX1dMQU5fT1JCSVRfbWVtX29yYml0X3NwYXJlX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGQzAwICAvLyBTcGFyZSBiaXQKKworI2RlZmluZSBPQ1BfU0hBUkVEX0FQUFNfV0xBTl9PUkJJVF9tZW1fb3JiaXRfc3BhcmVfUyAxMAorI2RlZmluZSBPQ1BfU0hBUkVEX0FQUFNfV0xBTl9PUkJJVF9tZW1fb3JiaXRfdGVzdF9zdGF0dXMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMjAwICAvLyBBIHJpc2luZyBlZGdlIG9uIHRoaXMgYml0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluZGljYXRlcyB0aGF0IHRoZSB0ZXN0IGNhc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGFzc2VzLiBUaGlzIGJpdCB3b3VsZCBiZSBicm91Z2h0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dCBvbiB0aGUgcGluIGludGVyZmFjZSBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT1JCSVQuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9BUFBTX1dMQU5fT1JCSVRfbWVtX29yYml0X3Rlc3RfZXhlYyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAgIC8vIFRoaXMgcmVnaXN0ZXIgYml0IGlzIHdyaXRhYmxlIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBGVyBhbmQgd2hlbiBzZXQgdG8gMSBpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmRpY2F0ZXMgdGhlIHN0YXJ0IG9mIGEgdGVzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBleGVjdXRpb24uIEEgZmFpbGluZyBlZGdlIG9uIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0IGluZGljYXRlcyB0aGF0IHRoZSB0ZXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGV4ZWN1dGlvbiBpcyBjb21wbGV0ZS4gVGhpcyBiaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd291bGQgYmUgYnJvdWdodCBvdXQgb24gdGhlIHBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRlcmZhY2UgZHVyaW5nIE9SQklULgorCisjZGVmaW5lIE9DUF9TSEFSRURfQVBQU19XTEFOX09SQklUX21lbV9vcmJpdF90ZXN0X2lkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEZDICAvLyBJbXBsaWVzIHRoZSB0ZXN0IGNhc2UgSUQgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBuZWVkcyB0byBydW4uCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9BUFBTX1dMQU5fT1JCSVRfbWVtX29yYml0X3Rlc3RfaWRfUyAyCisjZGVmaW5lIE9DUF9TSEFSRURfQVBQU19XTEFOX09SQklUX21lbV9vcmJpdF9oYWx0X3Byb2MgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyICAvLyBUaGlzIGJpdCBpcyB1c2VkIHRvIHRyaWdnZXIgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGV4ZWN1dGlvbiBvZiB0ZXN0IGNhc2VzIHdpdGhpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgKFJPTSBiYXNlZCkgSVAuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9BUFBTX1dMQU5fT1JCSVRfbWVtX29yYml0X3Rlc3RfbW9kZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIFdoZW4gdGhpcyBiaXQgaXMgMSBpdCBpbXBsaWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9SQklUIG1vZGUgb2Ygb3BlcmF0aW9uIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKFJPTSBiYXNlZCkgSVAgc3RhcnQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGV4ZWN1dGlvbiBmcm9tIGEgdGVzdCBjYXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBlcnNwZWN0aXZlCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fQVBQU19XTEFOX1NDUkFUQ0hfUEFEIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfQVBQU19XTEFOX1NDUkFUQ0hfUEFEX01FTV9BUFBTX1dMQU5fU0NSQVRDSF9QQURfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIHNjcmF0Y2ggcGFkIHJlZ2lzdGVyLgorCisjZGVmaW5lIE9DUF9TSEFSRURfQVBQU19XTEFOX1NDUkFUQ0hfUEFEX01FTV9BUFBTX1dMQU5fU0NSQVRDSF9QQURfUyAwCisKKworCisjZW5kaWYgLy8gX19IV19PQ1BfU0hBUkVEX0hfXwpkaWZmIC0tZ2l0IGEvZXh0L2hhbC90aS9jYzMyMjBzZGsvaW5jL2h3X3R5cGVzLmggYi9leHQvaGFsL3RpL2NjMzIyMHNkay9pbmMvaHdfdHlwZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWZmNGU0Ci0tLSAvZGV2L251bGwKKysrIGIvZXh0L2hhbC90aS9jYzMyMjBzZGsvaW5jL2h3X3R5cGVzLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTYgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkIC0gaHR0cDovL3d3dy50aS5jb20vCisgKgorICogIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogIGFyZSBtZXQ6CisgKgorICogICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAgICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogICAgTmVpdGhlciB0aGUgbmFtZSBvZiBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgbm9yIHRoZSBuYW1lcyBvZgorICogICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqICBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqICBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqICBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiAgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRlZiBfX0hXX1RZUEVTX0hfXworI2RlZmluZSBfX0hXX1RZUEVTX0hfXworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gRGVmaW5lIGEgYm9vbGVhbiB0eXBlLCBhbmQgdmFsdWVzIGZvciB0cnVlIGFuZCBmYWxzZS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdEJvb2xlYW47CisKKyNpZm5kZWYgdHJ1ZQorI2RlZmluZSB0cnVlIDEKKyNlbmRpZgorCisjaWZuZGVmIGZhbHNlCisjZGVmaW5lIGZhbHNlIDAKKyNlbmRpZgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFjcm9zIGZvciBoYXJkd2FyZSBhY2Nlc3MsIGJvdGggZGlyZWN0IGFuZCB2aWEgdGhlIGJpdC1iYW5kIHJlZ2lvbi4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhXUkVHKHgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgqKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopKHgpKSkKKyNkZWZpbmUgSFdSRUdIKHgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCooKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopKHgpKSkKKyNkZWZpbmUgSFdSRUdCKHgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCooKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikoeCkpKQorI2RlZmluZSBIV1JFR0JJVFcoeCwgYikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBIV1JFRygoKHVuc2lnbmVkIGxvbmcpKHgpICYgMHhGMDAwMDAwMCkgfCAweDAyMDAwMDAwIHwgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAoKCh1bnNpZ25lZCBsb25nKSh4KSAmIDB4MDAwRkZGRkYpIDw8IDUpIHwgKChiKSA8PCAyKSkKKyNkZWZpbmUgSFdSRUdCSVRIKHgsIGIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSFdSRUdIKCgodW5zaWduZWQgbG9uZykoeCkgJiAweEYwMDAwMDAwKSB8IDB4MDIwMDAwMDAgfCAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICgoKHVuc2lnbmVkIGxvbmcpKHgpICYgMHgwMDBGRkZGRikgPDwgNSkgfCAoKGIpIDw8IDIpKQorI2RlZmluZSBIV1JFR0JJVEIoeCwgYikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBIV1JFR0IoKCh1bnNpZ25lZCBsb25nKSh4KSAmIDB4RjAwMDAwMDApIHwgMHgwMjAwMDAwMCB8ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgKCgodW5zaWduZWQgbG9uZykoeCkgJiAweDAwMEZGRkZGKSA8PCA1KSB8ICgoYikgPDwgMikpCisKKworI2VuZGlmIC8vIF9fSFdfVFlQRVNfSF9fCg==