LyoqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIEBmaWxlICAgIHN0bTMyZjd4eC5oDQogICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0NCiAgKiBAYnJpZWYgICBDTVNJUyBTVE0zMkY3eHggRGV2aWNlIFBlcmlwaGVyYWwgQWNjZXNzIExheWVyIEhlYWRlciBGaWxlLg0KICAqDQogICogICAgICAgICAgVGhlIGZpbGUgaXMgdGhlIHVuaXF1ZSBpbmNsdWRlIGZpbGUgdGhhdCB0aGUgYXBwbGljYXRpb24gcHJvZ3JhbW1lcg0KICAqICAgICAgICAgIGlzIHVzaW5nIGluIHRoZSBDIHNvdXJjZSBjb2RlLCB1c3VhbGx5IGluIG1haW4uYy4gVGhpcyBmaWxlIGNvbnRhaW5zOg0KICAqICAgICAgICAgICAtIENvbmZpZ3VyYXRpb24gc2VjdGlvbiB0aGF0IGFsbG93cyB0byBzZWxlY3Q6DQogICogICAgICAgICAgICAgIC0gVGhlIFNUTTMyRjd4eCBkZXZpY2UgdXNlZCBpbiB0aGUgdGFyZ2V0IGFwcGxpY2F0aW9uDQogICogICAgICAgICAgICAgIC0gVG8gdXNlIG9yIG5vdCB0aGUgcGVyaXBoZXJhbJJzIGRyaXZlcnMgaW4gYXBwbGljYXRpb24gY29kZShpLmUuDQogICogICAgICAgICAgICAgICAgY29kZSB3aWxsIGJlIGJhc2VkIG9uIGRpcmVjdCBhY2Nlc3MgdG8gcGVyaXBoZXJhbJJzIHJlZ2lzdGVycyANCiAgKiAgICAgICAgICAgICAgICByYXRoZXIgdGhhbiBkcml2ZXJzIEFQSSksIHRoaXMgb3B0aW9uIGlzIGNvbnRyb2xsZWQgYnkgDQogICogICAgICAgICAgICAgICAgIiNkZWZpbmUgVVNFX0hBTF9EUklWRVIiDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogQGF0dGVudGlvbg0KICAqDQogICogPGgyPjxjZW50ZXI+JmNvcHk7IENPUFlSSUdIVChjKSAyMDE2IFNUTWljcm9lbGVjdHJvbmljczwvY2VudGVyPjwvaDI+DQogICoNCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLA0KICAqIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoNCiAgKiAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwNCiAgKiAgICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQogICogICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsDQogICogICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uDQogICogICAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCiAgKiAgIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgU1RNaWNyb2VsZWN0cm9uaWNzIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycw0KICAqICAgICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlDQogICogICAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCiAgKg0KICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIg0KICAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUNCiAgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUNCiAgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFDQogICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwNCiAgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUg0KICAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSDQogICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwNCiAgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICovDQoNCi8qKiBAYWRkdG9ncm91cCBDTVNJUw0KICAqIEB7DQogICovDQoNCi8qKiBAYWRkdG9ncm91cCBzdG0zMmY3eHgNCiAgKiBAew0KICAqLw0KDQojaWZuZGVmIF9fU1RNMzJGN3h4X0gNCiNkZWZpbmUgX19TVE0zMkY3eHhfSA0KDQojaWZkZWYgX19jcGx1c3BsdXMNCiBleHRlcm4gIkMiIHsNCiNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLw0KDQovKiogQGFkZHRvZ3JvdXAgTGlicmFyeV9jb25maWd1cmF0aW9uX3NlY3Rpb24NCiAgKiBAew0KICAqLw0KDQovKioNCiAgKiBAYnJpZWYgU1RNMzIgRmFtaWx5DQogICovDQojaWYgIWRlZmluZWQgIChTVE0zMkY3KQ0KI2RlZmluZSBTVE0zMkY3DQojZW5kaWYgLyogU1RNMzJGNyAqLw0KDQovKiBVbmNvbW1lbnQgdGhlIGxpbmUgYmVsb3cgYWNjb3JkaW5nIHRvIHRoZSB0YXJnZXQgU1RNMzIgZGV2aWNlIHVzZWQgaW4geW91cg0KICAgYXBwbGljYXRpb24NCiAgKi8NCiNpZiAhZGVmaW5lZCAoU1RNMzJGNzU2eHgpICYmICFkZWZpbmVkIChTVE0zMkY3NDZ4eCkgJiYgIWRlZmluZWQgKFNUTTMyRjc0NXh4KSAmJiAhZGVmaW5lZCAoU1RNMzJGNzY3eHgpICYmIFwNCiAgICAhZGVmaW5lZCAoU1RNMzJGNzY5eHgpICYmICFkZWZpbmVkIChTVE0zMkY3Nzd4eCkgJiYgIWRlZmluZWQgKFNUTTMyRjc3OXh4KSAmJiAhZGVmaW5lZCAoU1RNMzJGNzIyeHgpICYmIFwNCgkhZGVmaW5lZCAoU1RNMzJGNzIzeHgpICYmICFkZWZpbmVkIChTVE0zMkY3MzJ4eCkgJiYgIWRlZmluZWQgKFNUTTMyRjczM3h4KQ0KICAvKiAjZGVmaW5lIFNUTTMyRjc1Nnh4ICovICAgLyohPCBTVE0zMkY3NTZWRywgU1RNMzJGNzU2WkcsIFNUTTMyRjc1NlpHLCBTVE0zMkY3NTZJRywgU1RNMzJGNzU2QkcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUTTMyRjc1Nk5HIERldmljZXMgKi8NCiAgLyogI2RlZmluZSBTVE0zMkY3NDZ4eCAqLyAgIC8qITwgU1RNMzJGNzQ2VkUsIFNUTTMyRjc0NlZHLCBTVE0zMkY3NDZaRSwgU1RNMzJGNzQ2WkcsIFNUTTMyRjc0NklFLCBTVE0zMkY3NDZJRywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RNMzJGNzQ2QkUsIFNUTTMyRjc0NkJHLCBTVE0zMkY3NDZORSwgU1RNMzJGNzQ2TkcgRGV2aWNlcyAqLw0KICAvKiAjZGVmaW5lIFNUTTMyRjc0NXh4ICovICAgLyohPCBTVE0zMkY3NDVWRSwgU1RNMzJGNzQ1VkcsIFNUTTMyRjc0NVpHLCBTVE0zMkY3NDVaRSwgU1RNMzJGNzQ1SUUsIFNUTTMyRjc0NUlHIERldmljZXMgKi8NCiAgLyogI2RlZmluZSBTVE0zMkY3NjV4eCAqLyAgIC8qITwgU1RNMzJGNzY1QkksIFNUTTMyRjc2NUJHLCBTVE0zMkY3NjVOSSwgU1RNMzJGNzY1TkcsIFNUTTMyRjc2NUlJLCBTVE0zMkY3NjVJRywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RNMzJGNzY1WkksIFNUTTMyRjc2NVpHLCBTVE0zMkY3NjVWSSwgU1RNMzJGNzY1VkcgRGV2aWNlcyAqLw0KICAvKiAjZGVmaW5lIFNUTTMyRjc2N3h4ICovICAgLyohPCBTVE0zMkY3NjdCRywgU1RNMzJGNzY3QkksIFNUTTMyRjc2N0lHLCBTVE0zMkY3NjdJSSwgU1RNMzJGNzY3TkcsIFNUTTMyRjc2N05JLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVE0zMkY3NjdWRywgU1RNMzJGNzY3VkksIFNUTTMyRjc2N1pHLCBTVE0zMkY3NjdaSSBEZXZpY2VzICovDQogIC8qICNkZWZpbmUgU1RNMzJGNzY5eHggKi8gICAvKiE8IFNUTTMyRjc2OUFHLCBTVE0zMkY3NjlBSSwgU1RNMzJGNzY5QkcsIFNUTTMyRjc2OUJJLCBTVE0zMkY3NjlJRywgU1RNMzJGNzY5SUksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUTTMyRjc2OU5HLCBTVE0zMkY3NjlOSSwgU1RNMzJGNzY4QUkgRGV2aWNlcyAqLw0KICAvKiAjZGVmaW5lIFNUTTMyRjc3N3h4ICovICAgLyohPCBTVE0zMkY3NzdWSSwgU1RNMzJGNzc3WkksIFNUTTMyRjc3N0lJLCBTVE0zMkY3NzdCSSwgU1RNMzJGNzc3TkkgRGV2aWNlcyAqLw0KICAvKiAjZGVmaW5lIFNUTTMyRjc3OXh4ICovICAgLyohPCBTVE0zMkY3NzlJSSwgU1RNMzJGNzc5QkksIFNUTTMyRjc3OU5JLCBTVE0zMkY3NzlBSSwgU1RNMzJGNzc4QUkgRGV2aWNlcyAqLw0KICAvKiAjZGVmaW5lIFNUTTMyRjcyMnh4ICovICAgLyohPCBTVE0zMkY3MjJJRSwgU1RNMzJGNzIyWkUsIFNUTTMyRjcyMlZFLCBTVE0zMkY3MjJSRSwgU1RNMzJGNzIySUMsIFNUTTMyRjcyMlpDLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVE0zMkY3MjJWQywgU1RNMzJGNzIyUkMgRGV2aWNlcyAqLw0KICAvKiAjZGVmaW5lIFNUTTMyRjcyM3h4ICovICAgLyohPCBTVE0zMkY3MjNJRSwgU1RNMzJGNzIzWkUsIFNUTTMyRjcyM1ZFLCBTVE0zMkY3MjNJQywgU1RNMzJGNzIzWkMsIFNUTTMyRjcyM1ZDIERldmljZXMgKi8NCiAgLyogI2RlZmluZSBTVE0zMkY3MzJ4eCAqLyAgIC8qITwgU1RNMzJGNzMySUUsIFNUTTMyRjczMlpFLCBTVE0zMkY3MzJWRSwgU1RNMzJGNzMyUkUgRGV2aWNlcyAqLw0KICAvKiAjZGVmaW5lIFNUTTMyRjczM3h4ICovICAgLyohPCBTVE0zMkY3MzNJRSwgU1RNMzJGNzMzWkUsIFNUTTMyRjczM1ZFIERldmljZXMgKi8NCiNlbmRpZg0KDQovKiAgVGlwOiBUbyBhdm9pZCBtb2RpZnlpbmcgdGhpcyBmaWxlIGVhY2ggdGltZSB5b3UgbmVlZCB0byBzd2l0Y2ggYmV0d2VlbiB0aGVzZQ0KICAgICAgICBkZXZpY2VzLCB5b3UgY2FuIGRlZmluZSB0aGUgZGV2aWNlIGluIHlvdXIgdG9vbGNoYWluIGNvbXBpbGVyIHByZXByb2Nlc3Nvci4NCiAgKi8NCg0KI2lmICFkZWZpbmVkICAoVVNFX0hBTF9EUklWRVIpDQovKioNCiAqIEBicmllZiBDb21tZW50IHRoZSBsaW5lIGJlbG93IGlmIHlvdSB3aWxsIG5vdCB1c2UgdGhlIHBlcmlwaGVyYWxzIGRyaXZlcnMuDQogICBJbiB0aGlzIGNhc2UsIHRoZXNlIGRyaXZlcnMgd2lsbCBub3QgYmUgaW5jbHVkZWQgYW5kIHRoZSBhcHBsaWNhdGlvbiBjb2RlIHdpbGwNCiAgIGJlIGJhc2VkIG9uIGRpcmVjdCBhY2Nlc3MgdG8gcGVyaXBoZXJhbHMgcmVnaXN0ZXJzDQogICAqLw0KICAvKiNkZWZpbmUgVVNFX0hBTF9EUklWRVIgKi8NCiNlbmRpZiAvKiBVU0VfSEFMX0RSSVZFUiAqLw0KDQovKioNCiAgKiBAYnJpZWYgQ01TSVMgRGV2aWNlIHZlcnNpb24gbnVtYmVyIFYxLjIuMQ0KICAqLw0KI2RlZmluZSBfX1NUTTMyRjdfQ01TSVNfVkVSU0lPTl9NQUlOICAgKDB4MDEpIC8qITwgWzMxOjI0XSBtYWluIHZlcnNpb24gKi8NCiNkZWZpbmUgX19TVE0zMkY3X0NNU0lTX1ZFUlNJT05fU1VCMSAgICgweDAyKSAvKiE8IFsyMzoxNl0gc3ViMSB2ZXJzaW9uICovDQojZGVmaW5lIF9fU1RNMzJGN19DTVNJU19WRVJTSU9OX1NVQjIgICAoMHgwMSkgLyohPCBbMTU6OF0gIHN1YjIgdmVyc2lvbiAqLw0KI2RlZmluZSBfX1NUTTMyRjdfQ01TSVNfVkVSU0lPTl9SQyAgICAgKDB4MDApIC8qITwgWzc6MF0gIHJlbGVhc2UgY2FuZGlkYXRlICovDQojZGVmaW5lIF9fU1RNMzJGN19DTVNJU19WRVJTSU9OICAgICAgICAoKF9fU1RNMzJGN19DTVNJU19WRVJTSU9OX01BSU4gPDwgMjQpXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfChfX1NUTTMyRjdfQ01TSVNfVkVSU0lPTl9TVUIxIDw8IDE2KVwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwoX19TVE0zMkY3X0NNU0lTX1ZFUlNJT05fU1VCMiA8PCA4IClcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8KF9fU1RNMzJGN19DTVNJU19WRVJTSU9OKSkNCi8qKg0KICAqIEB9DQogICovDQoNCi8qKiBAYWRkdG9ncm91cCBEZXZpY2VfSW5jbHVkZWQNCiAgKiBAew0KICAqLw0KI2lmIGRlZmluZWQoU1RNMzJGNzIyeHgpDQogICNpbmNsdWRlICJzdG0zMmY3MjJ4eC5oIg0KI2VsaWYgZGVmaW5lZChTVE0zMkY3MjN4eCkNCiAgI2luY2x1ZGUgInN0bTMyZjcyM3h4LmgiDQojZWxpZiBkZWZpbmVkKFNUTTMyRjczMnh4KQ0KICAjaW5jbHVkZSAic3RtMzJmNzMyeHguaCINCiNlbGlmIGRlZmluZWQoU1RNMzJGNzMzeHgpDQogICNpbmNsdWRlICJzdG0zMmY3MzN4eC5oIg0KI2VsaWYgZGVmaW5lZChTVE0zMkY3NTZ4eCkNCiAgI2luY2x1ZGUgInN0bTMyZjc1Nnh4LmgiDQojZWxpZiBkZWZpbmVkKFNUTTMyRjc0Nnh4KQ0KICAjaW5jbHVkZSAic3RtMzJmNzQ2eHguaCINCiNlbGlmIGRlZmluZWQoU1RNMzJGNzQ1eHgpDQogICNpbmNsdWRlICJzdG0zMmY3NDV4eC5oIg0KI2VsaWYgZGVmaW5lZChTVE0zMkY3NjV4eCkNCiAgI2luY2x1ZGUgInN0bTMyZjc2NXh4LmgiDQojZWxpZiBkZWZpbmVkKFNUTTMyRjc2N3h4KQ0KICAjaW5jbHVkZSAic3RtMzJmNzY3eHguaCINCiNlbGlmIGRlZmluZWQoU1RNMzJGNzY5eHgpDQogICNpbmNsdWRlICJzdG0zMmY3Njl4eC5oIg0KI2VsaWYgZGVmaW5lZChTVE0zMkY3Nzd4eCkNCiAgI2luY2x1ZGUgInN0bTMyZjc3N3h4LmgiDQojZWxpZiBkZWZpbmVkKFNUTTMyRjc3OXh4KQ0KICAjaW5jbHVkZSAic3RtMzJmNzc5eHguaCINCiNlbHNlDQogI2Vycm9yICJQbGVhc2Ugc2VsZWN0IGZpcnN0IHRoZSB0YXJnZXQgU1RNMzJGN3h4IGRldmljZSB1c2VkIGluIHlvdXIgYXBwbGljYXRpb24gKGluIHN0bTMyZjd4eC5oIGZpbGUpIg0KI2VuZGlmDQoNCi8qKg0KICAqIEB9DQogICovDQoNCi8qKiBAYWRkdG9ncm91cCBFeHBvcnRlZF90eXBlcw0KICAqIEB7DQogICovDQp0eXBlZGVmIGVudW0NCnsNCiAgUkVTRVQgPSAwVSwNCiAgU0VUID0gIVJFU0VUDQp9IEZsYWdTdGF0dXMsIElUU3RhdHVzOw0KDQp0eXBlZGVmIGVudW0NCnsNCiAgRElTQUJMRSA9IDBVLA0KICBFTkFCTEUgPSAhRElTQUJMRQ0KfSBGdW5jdGlvbmFsU3RhdGU7DQojZGVmaW5lIElTX0ZVTkNUSU9OQUxfU1RBVEUoU1RBVEUpICgoKFNUQVRFKSA9PSBESVNBQkxFKSB8fCAoKFNUQVRFKSA9PSBFTkFCTEUpKQ0KDQp0eXBlZGVmIGVudW0NCnsNCiAgRVJST1IgPSAwVSwNCiAgU1VDQ0VTUyA9ICFFUlJPUg0KfSBFcnJvclN0YXR1czsNCg0KLyoqDQogICogQH0NCiAgKi8NCg0KLyoqIEBhZGR0b2dyb3VwIEV4cG9ydGVkX21hY3JvDQogICogQHsNCiAgKi8NCiNkZWZpbmUgU0VUX0JJVChSRUcsIEJJVCkgICAgICgoUkVHKSB8PSAoQklUKSkNCg0KI2RlZmluZSBDTEVBUl9CSVQoUkVHLCBCSVQpICAgKChSRUcpICY9IH4oQklUKSkNCg0KI2RlZmluZSBSRUFEX0JJVChSRUcsIEJJVCkgICAgKChSRUcpICYgKEJJVCkpDQoNCiNkZWZpbmUgQ0xFQVJfUkVHKFJFRykgICAgICAgICgoUkVHKSA9ICgweDApKQ0KDQojZGVmaW5lIFdSSVRFX1JFRyhSRUcsIFZBTCkgICAoKFJFRykgPSAoVkFMKSkNCg0KI2RlZmluZSBSRUFEX1JFRyhSRUcpICAgICAgICAgKChSRUcpKQ0KDQojZGVmaW5lIE1PRElGWV9SRUcoUkVHLCBDTEVBUk1BU0ssIFNFVE1BU0spICBXUklURV9SRUcoKFJFRyksICgoKFJFQURfUkVHKFJFRykpICYgKH4oQ0xFQVJNQVNLKSkpIHwgKFNFVE1BU0spKSkNCg0KI2RlZmluZSBQT1NJVElPTl9WQUwoVkFMKSAgICAgKF9fQ0xaKF9fUkJJVChWQUwpKSkNCg0KLyoqDQogICogQH0NCiAgKi8NCg0KI2lmZGVmIFVTRV9IQUxfRFJJVkVSDQogI2luY2x1ZGUgInN0bTMyZjd4eF9oYWwuaCINCiNlbmRpZiAvKiBVU0VfSEFMX0RSSVZFUiAqLw0KDQojaWZkZWYgX19jcGx1c3BsdXMNCn0NCiNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLw0KDQojZW5kaWYgLyogX19TVE0zMkY3eHhfSCAqLw0KDQovKioNCiAgKiBAfQ0KICAqLw0KDQovKioNCiAgKiBAfQ0KICAqLw0KDQovKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLw0K