LyoqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBAZmlsZSAgICBzdG0zMmY0eHguaAogICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0KICAqIEBicmllZiAgIENNU0lTIFNUTTMyRjR4eCBEZXZpY2UgUGVyaXBoZXJhbCBBY2Nlc3MgTGF5ZXIgSGVhZGVyIEZpbGUuCiAgKiAgICAgICAgICAgIAogICogICAgICAgICAgVGhlIGZpbGUgaXMgdGhlIHVuaXF1ZSBpbmNsdWRlIGZpbGUgdGhhdCB0aGUgYXBwbGljYXRpb24gcHJvZ3JhbW1lcgogICogICAgICAgICAgaXMgdXNpbmcgaW4gdGhlIEMgc291cmNlIGNvZGUsIHVzdWFsbHkgaW4gbWFpbi5jLiBUaGlzIGZpbGUgY29udGFpbnM6CiAgKiAgICAgICAgICAgLSBDb25maWd1cmF0aW9uIHNlY3Rpb24gdGhhdCBhbGxvd3MgdG8gc2VsZWN0OgogICogICAgICAgICAgICAgIC0gVGhlIFNUTTMyRjR4eCBkZXZpY2UgdXNlZCBpbiB0aGUgdGFyZ2V0IGFwcGxpY2F0aW9uCiAgKiAgICAgICAgICAgICAgLSBUbyB1c2Ugb3Igbm90IHRoZSBwZXJpcGhlcmFsknMgZHJpdmVycyBpbiBhcHBsaWNhdGlvbiBjb2RlKGkuZS4gCiAgKiAgICAgICAgICAgICAgICBjb2RlIHdpbGwgYmUgYmFzZWQgb24gZGlyZWN0IGFjY2VzcyB0byBwZXJpcGhlcmFsknMgcmVnaXN0ZXJzIAogICogICAgICAgICAgICAgICAgcmF0aGVyIHRoYW4gZHJpdmVycyBBUEkpLCB0aGlzIG9wdGlvbiBpcyBjb250cm9sbGVkIGJ5IAogICogICAgICAgICAgICAgICAgIiNkZWZpbmUgVVNFX0hBTF9EUklWRVIiCiAgKiAgCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBAYXR0ZW50aW9uCiAgKgogICogPGgyPjxjZW50ZXI+JmNvcHk7IENPUFlSSUdIVChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljczwvY2VudGVyPjwvaDI+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAqIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKICAqICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAogICogICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogICogICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCiAgKiAgICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KICAqICAgICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgKiAgIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgU1RNaWNyb2VsZWN0cm9uaWNzIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwogICogICAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKICAqICAgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCiAgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCiAgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKICAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKICAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCiAgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgogICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKICAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCiAgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKi8KCi8qKiBAYWRkdG9ncm91cCBDTVNJUwogICogQHsKICAqLwoKLyoqIEBhZGR0b2dyb3VwIHN0bTMyZjR4eAogICogQHsKICAqLwogICAgCiNpZm5kZWYgX19TVE0zMkY0eHhfSAojZGVmaW5lIF9fU1RNMzJGNHh4X0gKCiNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CiNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLwogICAKLyoqIEBhZGR0b2dyb3VwIExpYnJhcnlfY29uZmlndXJhdGlvbl9zZWN0aW9uCiAgKiBAewogICovCiAgCi8qKgogICogQGJyaWVmIFNUTTMyIEZhbWlseQogICovCiNpZiAhZGVmaW5lZCAgKFNUTTMyRjQpCiNkZWZpbmUgU1RNMzJGNAojZW5kaWYgLyogU1RNMzJGNCAqLwoKLyogVW5jb21tZW50IHRoZSBsaW5lIGJlbG93IGFjY29yZGluZyB0byB0aGUgdGFyZ2V0IFNUTTMyIGRldmljZSB1c2VkIGluIHlvdXIKICAgYXBwbGljYXRpb24gCiAgKi8KI2lmICFkZWZpbmVkIChTVE0zMkY0MDV4eCkgJiYgIWRlZmluZWQgKFNUTTMyRjQxNXh4KSAmJiAhZGVmaW5lZCAoU1RNMzJGNDA3eHgpICYmICFkZWZpbmVkIChTVE0zMkY0MTd4eCkgJiYgXAogICAgIWRlZmluZWQgKFNUTTMyRjQyN3h4KSAmJiAhZGVmaW5lZCAoU1RNMzJGNDM3eHgpICYmICFkZWZpbmVkIChTVE0zMkY0Mjl4eCkgJiYgIWRlZmluZWQgKFNUTTMyRjQzOXh4KSAmJiBcCiAgICAhZGVmaW5lZCAoU1RNMzJGNDAxeEMpICYmICFkZWZpbmVkIChTVE0zMkY0MDF4RSkgJiYgIWRlZmluZWQgKFNUTTMyRjQxMFR4KSAmJiAhZGVmaW5lZCAoU1RNMzJGNDEwQ3gpICYmIFwKICAgICFkZWZpbmVkIChTVE0zMkY0MTBSeCkgJiYgIWRlZmluZWQgKFNUTTMyRjQxMXhFKSAmJiAhZGVmaW5lZCAoU1RNMzJGNDQ2eHgpICYmICFkZWZpbmVkIChTVE0zMkY0Njl4eCkgJiYgXAogICAgIWRlZmluZWQgKFNUTTMyRjQ3OXh4KSAmJiAhZGVmaW5lZCAoU1RNMzJGNDEyQ3gpICYmICFkZWZpbmVkIChTVE0zMkY0MTJSeCkgJiYgIWRlZmluZWQgKFNUTTMyRjQxMlZ4KSAmJiBcCiAgICAhZGVmaW5lZCAoU1RNMzJGNDEyWngpICYmICFkZWZpbmVkIChTVE0zMkY0MTN4eCkgJiYgIWRlZmluZWQgKFNUTTMyRjQyM3h4KQogIC8qICNkZWZpbmUgU1RNMzJGNDA1eHggKi8gICAvKiE8IFNUTTMyRjQwNVJHLCBTVE0zMkY0MDVWRyBhbmQgU1RNMzJGNDA1WkcgRGV2aWNlcyAqLwogIC8qICNkZWZpbmUgU1RNMzJGNDE1eHggKi8gICAvKiE8IFNUTTMyRjQxNVJHLCBTVE0zMkY0MTVWRyBhbmQgU1RNMzJGNDE1WkcgRGV2aWNlcyAqLwogIC8qICNkZWZpbmUgU1RNMzJGNDA3eHggKi8gICAvKiE8IFNUTTMyRjQwN1ZHLCBTVE0zMkY0MDdWRSwgU1RNMzJGNDA3WkcsIFNUTTMyRjQwN1pFLCBTVE0zMkY0MDdJRyAgYW5kIFNUTTMyRjQwN0lFIERldmljZXMgKi8KICAvKiAjZGVmaW5lIFNUTTMyRjQxN3h4ICovICAgLyohPCBTVE0zMkY0MTdWRywgU1RNMzJGNDE3VkUsIFNUTTMyRjQxN1pHLCBTVE0zMkY0MTdaRSwgU1RNMzJGNDE3SUcgYW5kIFNUTTMyRjQxN0lFIERldmljZXMgKi8KICAvKiAjZGVmaW5lIFNUTTMyRjQyN3h4ICovICAgLyohPCBTVE0zMkY0MjdWRywgU1RNMzJGNDI3VkksIFNUTTMyRjQyN1pHLCBTVE0zMkY0MjdaSSwgU1RNMzJGNDI3SUcgYW5kIFNUTTMyRjQyN0lJIERldmljZXMgKi8KICAvKiAjZGVmaW5lIFNUTTMyRjQzN3h4ICovICAgLyohPCBTVE0zMkY0MzdWRywgU1RNMzJGNDM3VkksIFNUTTMyRjQzN1pHLCBTVE0zMkY0MzdaSSwgU1RNMzJGNDM3SUcgYW5kIFNUTTMyRjQzN0lJIERldmljZXMgKi8KICAvKiAjZGVmaW5lIFNUTTMyRjQyOXh4ICovICAgLyohPCBTVE0zMkY0MjlWRywgU1RNMzJGNDI5VkksIFNUTTMyRjQyOVpHLCBTVE0zMkY0MjlaSSwgU1RNMzJGNDI5QkcsIFNUTTMyRjQyOUJJLCBTVE0zMkY0MjlORywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RNMzJGNDM5TkksIFNUTTMyRjQyOUlHICBhbmQgU1RNMzJGNDI5SUkgRGV2aWNlcyAqLwogIC8qICNkZWZpbmUgU1RNMzJGNDM5eHggKi8gICAvKiE8IFNUTTMyRjQzOVZHLCBTVE0zMkY0MzlWSSwgU1RNMzJGNDM5WkcsIFNUTTMyRjQzOVpJLCBTVE0zMkY0MzlCRywgU1RNMzJGNDM5QkksIFNUTTMyRjQzOU5HLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVE0zMkY0MzlOSSwgU1RNMzJGNDM5SUcgYW5kIFNUTTMyRjQzOUlJIERldmljZXMgKi8KICAvKiAjZGVmaW5lIFNUTTMyRjQwMXhDICovICAgLyohPCBTVE0zMkY0MDFDQiwgU1RNMzJGNDAxQ0MsIFNUTTMyRjQwMVJCLCBTVE0zMkY0MDFSQywgU1RNMzJGNDAxVkIgYW5kIFNUTTMyRjQwMVZDIERldmljZXMgKi8KICAvKiAjZGVmaW5lIFNUTTMyRjQwMXhFICovICAgLyohPCBTVE0zMkY0MDFDRCwgU1RNMzJGNDAxUkQsIFNUTTMyRjQwMVZELCBTVE0zMkY0MDFDRSwgU1RNMzJGNDAxUkUgYW5kIFNUTTMyRjQwMVZFIERldmljZXMgKi8KICAvKiAjZGVmaW5lIFNUTTMyRjQxMFR4ICovICAgLyohPCBTVE0zMkY0MTBUOCBhbmQgU1RNMzJGNDEwVEIgRGV2aWNlcyAqLwogIC8qICNkZWZpbmUgU1RNMzJGNDEwQ3ggKi8gICAvKiE8IFNUTTMyRjQxMEM4IGFuZCBTVE0zMkY0MTBDQiBEZXZpY2VzICovCiAgLyogI2RlZmluZSBTVE0zMkY0MTBSeCAqLyAgIC8qITwgU1RNMzJGNDEwUjggYW5kIFNUTTMyRjQxMFJCIERldmljZXMgKi8KICAvKiAjZGVmaW5lIFNUTTMyRjQxMXhFICovICAgLyohPCBTVE0zMkY0MTFDQywgU1RNMzJGNDExUkMsIFNUTTMyRjQxMVZDLCBTVE0zMkY0MTFDRSwgU1RNMzJGNDExUkUgYW5kIFNUTTMyRjQxMVZFIERldmljZXMgKi8KICAvKiAjZGVmaW5lIFNUTTMyRjQ0Nnh4ICovICAgLyohPCBTVE0zMkY0NDZNQywgU1RNMzJGNDQ2TUUsIFNUTTMyRjQ0NlJDLCBTVE0zMkY0NDZSRSwgU1RNMzJGNDQ2VkMsIFNUTTMyRjQ0NlZFLCBTVE0zMkY0NDZaQywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFNUTTMyRjQ0NlpFIERldmljZXMgKi8KICAvKiAjZGVmaW5lIFNUTTMyRjQ2OXh4ICovICAgLyohPCBTVE0zMkY0NjlBSSwgU1RNMzJGNDY5SUksIFNUTTMyRjQ2OUJJLCBTVE0zMkY0NjlOSSwgU1RNMzJGNDY5QUcsIFNUTTMyRjQ2OUlHLCBTVE0zMkY0NjlCRywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RNMzJGNDY5TkcsIFNUTTMyRjQ2OUFFLCBTVE0zMkY0NjlJRSwgU1RNMzJGNDY5QkUgYW5kIFNUTTMyRjQ2OU5FIERldmljZXMgKi8KICAvKiAjZGVmaW5lIFNUTTMyRjQ3OXh4ICovICAgLyohPCBTVE0zMkY0NzlBSSwgU1RNMzJGNDc5SUksIFNUTTMyRjQ3OUJJLCBTVE0zMkY0NzlOSSwgU1RNMzJGNDc5QUcsIFNUTTMyRjQ3OUlHLCBTVE0zMkY0NzlCRyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgU1RNMzJGNDc5TkcgRGV2aWNlcyAqLwogIC8qICNkZWZpbmUgU1RNMzJGNDEyQ3ggKi8gICAvKiE8IFNUTTMyRjQxMkNFVSBhbmQgU1RNMzJGNDEyQ0dVIERldmljZXMgKi8KICAvKiAjZGVmaW5lIFNUTTMyRjQxMlp4ICovICAgLyohPCBTVE0zMkY0MTJaRVQsIFNUTTMyRjQxMlpHVCwgU1RNMzJGNDEyWkVKIGFuZCBTVE0zMkY0MTJaR0ogRGV2aWNlcyAqLwogIC8qICNkZWZpbmUgU1RNMzJGNDEyVnggKi8gICAvKiE8IFNUTTMyRjQxMlZFVCwgU1RNMzJGNDEyVkdULCBTVE0zMkY0MTJWRUggYW5kIFNUTTMyRjQxMlZHSCBEZXZpY2VzICovCiAgLyogI2RlZmluZSBTVE0zMkY0MTJSeCAqLyAgIC8qITwgU1RNMzJGNDEyUkVULCBTVE0zMkY0MTJSR1QsIFNUTTMyRjQxMlJFWSBhbmQgU1RNMzJGNDEyUkdZIERldmljZXMgKi8KICAvKiAjZGVmaW5lIFNUTTMyRjQxM3h4ICovICAgLyohPCBTVE0zMkY0MTNDSCwgU1RNMzJGNDEzTUgsIFNUTTMyRjQxM1JILCBTVE0zMkY0MTNWSCwgU1RNMzJGNDEzWkgsIFNUTTMyRjQxM0NHLCBTVE0zMkY0MTNNRywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVE0zMkY0MTNSRywgU1RNMzJGNDEzVkcgYW5kIFNUTTMyRjQxM1pHIERldmljZXMgKi8KICAvKiAjZGVmaW5lIFNUTTMyRjQyM3h4ICovICAgLyohPCBTVE0zMkY0MjNDSCwgU1RNMzJGNDIzUkgsIFNUTTMyRjQyM1ZIIGFuZCBTVE0zMkY0MjNaSCBEZXZpY2VzICovCiNlbmRpZgogICAKLyogIFRpcDogVG8gYXZvaWQgbW9kaWZ5aW5nIHRoaXMgZmlsZSBlYWNoIHRpbWUgeW91IG5lZWQgdG8gc3dpdGNoIGJldHdlZW4gdGhlc2UKICAgICAgICBkZXZpY2VzLCB5b3UgY2FuIGRlZmluZSB0aGUgZGV2aWNlIGluIHlvdXIgdG9vbGNoYWluIGNvbXBpbGVyIHByZXByb2Nlc3Nvci4KICAqLwojaWYgIWRlZmluZWQgIChVU0VfSEFMX0RSSVZFUikKLyoqCiAqIEBicmllZiBDb21tZW50IHRoZSBsaW5lIGJlbG93IGlmIHlvdSB3aWxsIG5vdCB1c2UgdGhlIHBlcmlwaGVyYWxzIGRyaXZlcnMuCiAgIEluIHRoaXMgY2FzZSwgdGhlc2UgZHJpdmVycyB3aWxsIG5vdCBiZSBpbmNsdWRlZCBhbmQgdGhlIGFwcGxpY2F0aW9uIGNvZGUgd2lsbCAKICAgYmUgYmFzZWQgb24gZGlyZWN0IGFjY2VzcyB0byBwZXJpcGhlcmFscyByZWdpc3RlcnMgCiAgICovCiAgLyojZGVmaW5lIFVTRV9IQUxfRFJJVkVSICovCiNlbmRpZiAvKiBVU0VfSEFMX0RSSVZFUiAqLwoKLyoqCiAgKiBAYnJpZWYgQ01TSVMgdmVyc2lvbiBudW1iZXIgVjIuNi40CiAgKi8KI2RlZmluZSBfX1NUTTMyRjR4eF9DTVNJU19WRVJTSU9OX01BSU4gICAoMHgwMlUpIC8qITwgWzMxOjI0XSBtYWluIHZlcnNpb24gKi8KI2RlZmluZSBfX1NUTTMyRjR4eF9DTVNJU19WRVJTSU9OX1NVQjEgICAoMHgwNlUpIC8qITwgWzIzOjE2XSBzdWIxIHZlcnNpb24gKi8KI2RlZmluZSBfX1NUTTMyRjR4eF9DTVNJU19WRVJTSU9OX1NVQjIgICAoMHgwNFUpIC8qITwgWzE1OjhdICBzdWIyIHZlcnNpb24gKi8KI2RlZmluZSBfX1NUTTMyRjR4eF9DTVNJU19WRVJTSU9OX1JDICAgICAoMHgwMFUpIC8qITwgWzc6MF0gIHJlbGVhc2UgY2FuZGlkYXRlICovCiNkZWZpbmUgX19TVE0zMkY0eHhfQ01TSVNfVkVSU0lPTiAgICAgICAgKChfX1NUTTMyRjR4eF9DTVNJU19WRVJTSU9OX01BSU4gPDwgMjQpXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwoX19TVE0zMkY0eHhfQ01TSVNfVkVSU0lPTl9TVUIxIDw8IDE2KVwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8KF9fU1RNMzJGNHh4X0NNU0lTX1ZFUlNJT05fU1VCMiA8PCA4IClcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfChfX1NUTTMyRjR4eF9DTVNJU19WRVJTSU9OKSkKCi8qKgogICogQH0KICAqLwoKLyoqIEBhZGR0b2dyb3VwIERldmljZV9JbmNsdWRlZAogICogQHsKICAqLwoKI2lmIGRlZmluZWQoU1RNMzJGNDA1eHgpCiAgI2luY2x1ZGUgInN0bTMyZjQwNXh4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJGNDE1eHgpCiAgI2luY2x1ZGUgInN0bTMyZjQxNXh4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJGNDA3eHgpCiAgI2luY2x1ZGUgInN0bTMyZjQwN3h4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJGNDE3eHgpCiAgI2luY2x1ZGUgInN0bTMyZjQxN3h4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJGNDI3eHgpCiAgI2luY2x1ZGUgInN0bTMyZjQyN3h4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJGNDM3eHgpCiAgI2luY2x1ZGUgInN0bTMyZjQzN3h4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJGNDI5eHgpCiAgI2luY2x1ZGUgInN0bTMyZjQyOXh4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJGNDM5eHgpCiAgI2luY2x1ZGUgInN0bTMyZjQzOXh4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJGNDAxeEMpCiAgI2luY2x1ZGUgInN0bTMyZjQwMXhjLmgiCiNlbGlmIGRlZmluZWQoU1RNMzJGNDAxeEUpCiAgI2luY2x1ZGUgInN0bTMyZjQwMXhlLmgiCiNlbGlmIGRlZmluZWQoU1RNMzJGNDEwVHgpCiAgI2luY2x1ZGUgInN0bTMyZjQxMHR4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJGNDEwQ3gpCiAgI2luY2x1ZGUgInN0bTMyZjQxMGN4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJGNDEwUngpCiAgI2luY2x1ZGUgInN0bTMyZjQxMHJ4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJGNDExeEUpCiAgI2luY2x1ZGUgInN0bTMyZjQxMXhlLmgiCiNlbGlmIGRlZmluZWQoU1RNMzJGNDQ2eHgpCiAgI2luY2x1ZGUgInN0bTMyZjQ0Nnh4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJGNDY5eHgpCiAgI2luY2x1ZGUgInN0bTMyZjQ2OXh4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJGNDc5eHgpCiAgI2luY2x1ZGUgInN0bTMyZjQ3OXh4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJGNDEyQ3gpCiAgI2luY2x1ZGUgInN0bTMyZjQxMmN4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJGNDEyWngpCiAgI2luY2x1ZGUgInN0bTMyZjQxMnp4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJGNDEyUngpCiAgI2luY2x1ZGUgInN0bTMyZjQxMnJ4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJGNDEyVngpCiAgI2luY2x1ZGUgInN0bTMyZjQxMnZ4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJGNDEzeHgpCiAgI2luY2x1ZGUgInN0bTMyZjQxM3h4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJGNDIzeHgpCiAgI2luY2x1ZGUgInN0bTMyZjQyM3h4LmgiCiNlbHNlCiAjZXJyb3IgIlBsZWFzZSBzZWxlY3QgZmlyc3QgdGhlIHRhcmdldCBTVE0zMkY0eHggZGV2aWNlIHVzZWQgaW4geW91ciBhcHBsaWNhdGlvbiAoaW4gc3RtMzJmNHh4LmggZmlsZSkiCiNlbmRpZgoKLyoqCiAgKiBAfQogICovCgovKiogQGFkZHRvZ3JvdXAgRXhwb3J0ZWRfdHlwZXMKICAqIEB7CiAgKi8gCnR5cGVkZWYgZW51bSAKewogIFJFU0VUID0gMFUsIAogIFNFVCA9ICFSRVNFVAp9IEZsYWdTdGF0dXMsIElUU3RhdHVzOwoKdHlwZWRlZiBlbnVtIAp7CiAgRElTQUJMRSA9IDBVLCAKICBFTkFCTEUgPSAhRElTQUJMRQp9IEZ1bmN0aW9uYWxTdGF0ZTsKI2RlZmluZSBJU19GVU5DVElPTkFMX1NUQVRFKFNUQVRFKSAoKChTVEFURSkgPT0gRElTQUJMRSkgfHwgKChTVEFURSkgPT0gRU5BQkxFKSkKCnR5cGVkZWYgZW51bQp7CiAgU1VDQ0VTUyA9IDBVLAogIEVSUk9SID0gIVNVQ0NFU1MKfSBFcnJvclN0YXR1czsKCi8qKgogICogQH0KICAqLwoKCi8qKiBAYWRkdG9ncm91cCBFeHBvcnRlZF9tYWNybwogICogQHsKICAqLwojZGVmaW5lIFNFVF9CSVQoUkVHLCBCSVQpICAgICAoKFJFRykgfD0gKEJJVCkpCgojZGVmaW5lIENMRUFSX0JJVChSRUcsIEJJVCkgICAoKFJFRykgJj0gfihCSVQpKQoKI2RlZmluZSBSRUFEX0JJVChSRUcsIEJJVCkgICAgKChSRUcpICYgKEJJVCkpCgojZGVmaW5lIENMRUFSX1JFRyhSRUcpICAgICAgICAoKFJFRykgPSAoMHgwKSkKCiNkZWZpbmUgV1JJVEVfUkVHKFJFRywgVkFMKSAgICgoUkVHKSA9IChWQUwpKQoKI2RlZmluZSBSRUFEX1JFRyhSRUcpICAgICAgICAgKChSRUcpKQoKI2RlZmluZSBNT0RJRllfUkVHKFJFRywgQ0xFQVJNQVNLLCBTRVRNQVNLKSAgV1JJVEVfUkVHKChSRUcpLCAoKChSRUFEX1JFRyhSRUcpKSAmICh+KENMRUFSTUFTSykpKSB8IChTRVRNQVNLKSkpCgojZGVmaW5lIFBPU0lUSU9OX1ZBTChWQUwpICAgICAoX19DTFooX19SQklUKFZBTCkpKSAKCgovKioKICAqIEB9CiAgKi8KCiNpZiBkZWZpbmVkIChVU0VfSEFMX0RSSVZFUikKICNpbmNsdWRlICJzdG0zMmY0eHhfaGFsLmgiCiNlbmRpZiAvKiBVU0VfSEFMX0RSSVZFUiAqLwoKI2lmZGVmIF9fY3BsdXNwbHVzCn0KI2VuZGlmIC8qIF9fY3BsdXNwbHVzICovCgojZW5kaWYgLyogX19TVE0zMkY0eHhfSCAqLwovKioKICAqIEB9CiAgKi8KCi8qKgogICogQH0KICAqLwogIAoKCgovKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwo=