ZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvYWljMjMuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvYWljMjMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTBiYWMyCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9haWMyMy5oCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9haWMyMy5oCisgKgorICogSGFyZHdhcmUgZGVmaW5pdGlvbnMgZm9yIFRJIFRMVjMyMEFJQzIzIGF1ZGlvIGNvZGVjCisgKgorICogQ29weXJpZ2h0IChDKSAyMDAyIFJpZGdlUnVuLCBJbmMuCisgKiBBdXRob3I6IFN0ZXZlIEpvaG5zb24KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCisgKiBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVECisgKiBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4KKyAqIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKKyAqIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAorICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YKKyAqIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisgKiB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSAgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKyAqIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorICovCisKKyNpZm5kZWYgX19BU01fQVJDSF9BSUMyM19ICisjZGVmaW5lIF9fQVNNX0FSQ0hfQUlDMjNfSAorCisvLyBDb2RlYyBUTFYzMjBBSUMyMworI2RlZmluZSBMRUZUX0xJTkVfVk9MVU1FX0FERFIJCTB4MDAKKyNkZWZpbmUgUklHSFRfTElORV9WT0xVTUVfQUREUgkJMHgwMQorI2RlZmluZSBMRUZUX0NIQU5ORUxfVk9MVU1FX0FERFIJMHgwMgorI2RlZmluZSBSSUdIVF9DSEFOTkVMX1ZPTFVNRV9BRERSCTB4MDMKKyNkZWZpbmUgQU5BTE9HX0FVRElPX0NPTlRST0xfQUREUgkweDA0CisjZGVmaW5lIERJR0lUQUxfQVVESU9fQ09OVFJPTF9BRERSCTB4MDUKKyNkZWZpbmUgUE9XRVJfRE9XTl9DT05UUk9MX0FERFIJCTB4MDYKKyNkZWZpbmUgRElHSVRBTF9BVURJT19GT1JNQVRfQUREUgkweDA3CisjZGVmaW5lIFNBTVBMRV9SQVRFX0NPTlRST0xfQUREUgkweDA4CisjZGVmaW5lIERJR0lUQUxfSU5URVJGQUNFX0FDVF9BRERSCTB4MDkKKyNkZWZpbmUgUkVTRVRfQ09OVFJPTF9BRERSCQkweDBGCisKKy8vIExlZnQgKHJpZ2h0KSBsaW5lIGlucHV0IHZvbHVtZSBjb250cm9sIHJlZ2lzdGVyCisjZGVmaW5lIExSU19FTkFCTEVECQkJMHgwMTAwCisjZGVmaW5lIExJTV9NVVRFRAkJCTB4MDA4MAorI2RlZmluZSBMSVZfREVGQVVMVAkJCTB4MDAxNworI2RlZmluZSBMSVZfTUFYCQkJCTB4MDAxZgorI2RlZmluZSBMSVZfTUlOCQkJCTB4MDAwMAorCisvLyBMZWZ0IChyaWdodCkgY2hhbm5lbCBoZWFkcGhvbmUgdm9sdW1lIGNvbnRyb2wgcmVnaXN0ZXIKKyNkZWZpbmUgTFpDX09OCQkJCTB4MDA4MAorI2RlZmluZSBMSFZfREVGQVVMVAkJCTB4MDA3OQorI2RlZmluZSBMSFZfTUFYCQkJCTB4MDA3ZgorI2RlZmluZSBMSFZfTUlOCQkJCTB4MDAwMAorCisvLyBBbmFsb2cgYXVkaW8gcGF0aCBjb250cm9sIHJlZ2lzdGVyCisjZGVmaW5lIFNURV9FTkFCTEVECQkJMHgwMDIwCisjZGVmaW5lIERBQ19TRUxFQ1RFRAkJCTB4MDAxMAorI2RlZmluZSBCWVBBU1NfT04JCQkweDAwMDgKKyNkZWZpbmUgSU5TRUxfTUlDCQkJMHgwMDA0CisjZGVmaW5lIE1JQ01fTVVURUQJCQkweDAwMDIKKyNkZWZpbmUgTUlDQl8yMERCCQkJMHgwMDAxCisKKy8vIERpZ2l0YWwgYXVkaW8gcGF0aCBjb250cm9sIHJlZ2lzdGVyCisjZGVmaW5lIERBQ01fTVVURQkJCTB4MDAwOAorI2RlZmluZSBERUVNUF8zMksJCQkweDAwMDIKKyNkZWZpbmUgREVFTVBfNDRLCQkJMHgwMDA0CisjZGVmaW5lIERFRU1QXzQ4SwkJCTB4MDAwNgorI2RlZmluZSBBRENIUF9PTgkJCTB4MDAwMQorCisvLyBQb3dlciBjb250cm9sIGRvd24gcmVnaXN0ZXIKKyNkZWZpbmUgREVWSUNFX1BPV0VSX09GRgkgIAkweDAwODAKKyNkZWZpbmUgQ0xLX09GRgkJCQkweDAwNDAKKyNkZWZpbmUgT1NDX09GRgkJCQkweDAwMjAKKyNkZWZpbmUgT1VUX09GRgkJCQkweDAwMTAKKyNkZWZpbmUgREFDX09GRgkJCQkweDAwMDgKKyNkZWZpbmUgQURDX09GRgkJCQkweDAwMDQKKyNkZWZpbmUgTUlDX09GRgkJCQkweDAwMDIKKyNkZWZpbmUgTElORV9PRkYJCQkweDAwMDEKKworLy8gRGlnaXRhbCBhdWRpbyBpbnRlcmZhY2UgcmVnaXN0ZXIKKyNkZWZpbmUgTVNfTUFTVEVSCQkJMHgwMDQwCisjZGVmaW5lIExSU1dBUF9PTgkJCTB4MDAyMAorI2RlZmluZSBMUlBfT04JCQkJMHgwMDEwCisjZGVmaW5lIElXTF8xNgkJCQkweDAwMDAKKyNkZWZpbmUgSVdMXzIwCQkJCTB4MDAwNAorI2RlZmluZSBJV0xfMjQJCQkJMHgwMDA4CisjZGVmaW5lIElXTF8zMgkJCQkweDAwMEMKKyNkZWZpbmUgRk9SX0kyUwkJCQkweDAwMDIKKyNkZWZpbmUgRk9SX0RTUAkJCQkweDAwMDMKKworLy8gU2FtcGxlIHJhdGUgY29udHJvbCByZWdpc3RlcgorI2RlZmluZSBDTEtPVVRfSEFMRgkJCTB4MDA4MAorI2RlZmluZSBDTEtJTl9IQUxGCQkJMHgwMDQwCisjZGVmaW5lIEJPU1JfMzg0ZnMJCQkweDAwMDIgLy8gQk9TUl8yNzJmcyB3aGVuIGluIFVTQiBtb2RlCisjZGVmaW5lIFVTQl9DTEtfT04JCQkweDAwMDEKKyNkZWZpbmUgU1JfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAweGYKKyNkZWZpbmUgQ0xLT1VUX1NISUZUICAgICAgICAgICAgICAgICAgICA3CisjZGVmaW5lIENMS0lOX1NISUZUICAgICAgICAgICAgICAgICAgICAgNgorI2RlZmluZSBTUl9TSElGVCAgICAgICAgICAgICAgICAgICAgICAgIDIKKyNkZWZpbmUgQk9TUl9TSElGVCAgICAgICAgICAgICAgICAgICAgICAxCisKKy8vIERpZ2l0YWwgaW50ZXJmYWNlIHJlZ2lzdGVyCisjZGVmaW5lIEFDVF9PTgkJCQkweDAwMDEKKworI2RlZmluZSBUTFYzMjBBSUMyM0lEMSAgICAgICAgICAgICAgICAgICgweDFhKQkvLyBjcyBsb3cKKyNkZWZpbmUgVExWMzIwQUlDMjNJRDIgICAgICAgICAgICAgICAgICAoMHgxYikJLy8gY3MgaGlnaAorCisjZW5kaWYgLyogX19BU01fQVJDSF9BSUMyM19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2JvYXJkLWgyLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2JvYXJkLWgyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjBmMDAyYgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvYm9hcmQtaDIuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ib2FyZC1oMi5oCisgKgorICogSGFyZHdhcmUgZGVmaW5pdGlvbnMgZm9yIFRJIE9NQVAxNjEwIEgyIGJvYXJkLgorICoKKyAqIENsZWFudXAgZm9yIExpbnV4LTIuNiBieSBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGRlLmJvc2NoLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCisgKiBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVECisgKiBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4KKyAqIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKKyAqIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAorICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YKKyAqIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyAqIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCisgKiA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KKyAqLworCisjaWZuZGVmIF9fQVNNX0FSQ0hfT01BUF9IMl9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfT01BUF9IMl9ICisKKy8qIFBsYWNlaG9sZGVyIGZvciBIMiBzcGVjaWZpYyBkZWZpbmVzICovCisKKy8qIEF0IE9NQVAxNjEwIElubm92YXRvciB0aGUgRXRoZXJuZXQgaXMgZGlyZWN0bHkgY29ubmVjdGVkIHRvIENTMSAqLworI2RlZmluZSBPTUFQMTYxMF9FVEhSX1NUQVJUCQkweDA0MDAwMzAwCisKKy8qIEludGVsIFNUUkFUQSBOT1IgZmxhc2ggYXQgQ1MzIG9yIENTMkIoTkFORCBCb290KSAqLworI2RlZmluZSBPTUFQX05PUl9GTEFTSF9TSVpFICAgICAgICAgICAgIFNaXzMyTQorI2RlZmluZSBPTUFQX05PUl9GTEFTSF9TVEFSVDEgICAgICAgICAgIDB4MEMwMDAwMDAgLyogQ1MzICovCisjZGVmaW5lIE9NQVBfTk9SX0ZMQVNIX1NUQVJUMiAgICAgICAgICAgMHgwQTAwMDAwMCAvKiBDUzJCICovCisKKy8qIFNhbXN1bmcgTkFORCBmbGFzaCBhdCBDUzJCIG9yIENTMyhOQU5EIEJvb3QpICovCisjZGVmaW5lIE9NQVBfTkFORF9GTEFTSF9TVEFSVDEgICAgICAgICAgIDB4MEEwMDAwMDAgLyogQ1MyQiAqLworI2RlZmluZSBPTUFQX05BTkRfRkxBU0hfU1RBUlQyICAgICAgICAgICAweDBDMDAwMDAwIC8qIENTMyAqLworCisjZW5kaWYgLyogIF9fQVNNX0FSQ0hfT01BUF9IMl9IICovCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvYm9hcmQtaDMuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvYm9hcmQtaDMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNGQxY2QyCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ib2FyZC1oMy5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2JvYXJkLWgzLmgKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEgUmlkZ2VSdW4sIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwNCBUZXhhcyBJbnN0cnVtZW50cywgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIKKyAqIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQKKyAqIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTgorICogTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULAorICogSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRgorICogVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyAqIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlICB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAorICogNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCisgKi8KKyNpZm5kZWYgX19BU01fQVJDSF9PTUFQX0gzX0gKKyNkZWZpbmUgX19BU01fQVJDSF9PTUFQX0gzX0gKKworLyogSW4gT01BUDE3MTAgSDMgdGhlIEV0aGVybmV0IGlzIGRpcmVjdGx5IGNvbm5lY3RlZCB0byBDUzEgKi8KKyNkZWZpbmUgT01BUDE3MTBfRVRIUl9TVEFSVAkJMHgwNDAwMDMwMAorCisvKiBJbnRlbCBTVFJBVEEgTk9SIGZsYXNoIGF0IENTMyBvciBDUzJCKE5BTkQgQm9vdCkgKi8KKyNkZWZpbmUgT01BUF9OT1JfRkxBU0hfU0laRSAgICAgICAgICAgICBTWl8zMk0KKyNkZWZpbmUgT01BUF9OT1JfRkxBU0hfU1RBUlQxIAkJMHgwQzAwMDAwMCAvKiBDUzMgKi8KKyNkZWZpbmUgT01BUF9OT1JfRkxBU0hfU1RBUlQyIAkJMHgwQTAwMDAwMCAvKiBDUzJCICovCisKKy8qIFNhbXN1bmcgTkFORCBmbGFzaCBhdCBDUzJCIG9yIENTMyhOQU5EIEJvb3QpICovCisjZGVmaW5lIE9NQVBfTkFORF9GTEFTSF9TVEFSVDEgICAgICAgICAgIDB4MEEwMDAwMDAgLyogQ1MyQiAqLworI2RlZmluZSBPTUFQX05BTkRfRkxBU0hfU1RBUlQyICAgICAgICAgICAweDBDMDAwMDAwIC8qIENTMyAqLworCisjZGVmaW5lIE1BWElSUU5VTQkJCShJSF9CT0FSRF9CQVNFKQorI2RlZmluZSBNQVhGSVFOVU0JCQlNQVhJUlFOVU0KKyNkZWZpbmUgTUFYU1dJTlVNCQkJTUFYSVJRTlVNCisKKyNkZWZpbmUgTlJfSVJRUwkJCQkoTUFYSVJRTlVNICsgMSkKKworCisjZW5kaWYgLyogIF9fQVNNX0FSQ0hfT01BUF9IM19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2JvYXJkLWg0LmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2JvYXJkLWg0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzkxMzhkY2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2JvYXJkLWg0LmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvYm9hcmQtaDQuaAorICoKKyAqIEhhcmR3YXJlIGRlZmluaXRpb25zIGZvciBUSSBPTUFQMTYxMCBINCBib2FyZC4KKyAqCisgKiBJbml0aWFsIGNyZWF0aW9uIGJ5IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZGUuYm9zY2guY29tPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIKKyAqIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQKKyAqIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTgorICogTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULAorICogSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRgorICogVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworICogd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKyAqIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorICovCisKKyNpZm5kZWYgX19BU01fQVJDSF9PTUFQX0g0X0gKKyNkZWZpbmUgX19BU01fQVJDSF9PTUFQX0g0X0gKKworLyogUGxhY2Vob2xkZXIgZm9yIEg0IHNwZWNpZmljIGRlZmluZXMgKi8KKworI2VuZGlmIC8qICBfX0FTTV9BUkNIX09NQVBfSDRfSCAqLworCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2JvYXJkLWlubm92YXRvci5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ib2FyZC1pbm5vdmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjFhYmFlCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ib2FyZC1pbm5vdmF0b3IuaApAQCAtMCwwICsxLDgwIEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ib2FyZC1pbm5vdmF0b3IuaAorICoKKyAqIENvcHlyaWdodCAoQykgMjAwMSBSaWRnZVJ1biwgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIKKyAqIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQKKyAqIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTgorICogTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULAorICogSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRgorICogVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworICogd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKyAqIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorICovCisjaWZuZGVmIF9fQVNNX0FSQ0hfT01BUF9JTk5PVkFUT1JfSAorI2RlZmluZSBfX0FTTV9BUkNIX09NQVBfSU5OT1ZBVE9SX0gKKworI2lmIGRlZmluZWQgKENPTkZJR19BUkNIX09NQVAxNTEwKQorCisjaWZuZGVmIE9NQVBfU0RSQU1fREVWSUNFCisjZGVmaW5lIE9NQVBfU0RSQU1fREVWSUNFCQkJRDI1Nk1fMVgxNl80QgorI2VuZGlmCisKKyNkZWZpbmUgT01BUDE1MTBQMV9JTUlGX1BSSV9WQUxVRQkJMHgwMAorI2RlZmluZSBPTUFQMTUxMFAxX0VNSUZTX1BSSV9WQUxVRQkJMHgwMAorI2RlZmluZSBPTUFQMTUxMFAxX0VNSUZGX1BSSV9WQUxVRQkJMHgwMAorCisvKgorICogVGhlc2UgZGVmaW5pdGlvbnMgZGVmaW5lIGFuIGFyZWEgb2YgRkxBU0ggc2V0IGFzaWRlCisgKiBmb3IgdGhlIHVzZSBvZiBNVEQvSkZGUzIuIFRoaXMgaXMgdGhlIGFyZWEgb2YgZmxhc2gKKyAqIHRoYXQgYSBKRkZTMiBmaWxlc3lzdGVtIHdpbGwgcmVzaWRlIHdoaWNoIGlzIG1vdW50ZWQKKyAqIGF0IGJvb3Qgd2l0aCB0aGUgInJvb3Q9L2Rldi9tdGRibG9jay8wIHJ3IgorICogY29tbWFuZCBsaW5lIG9wdGlvbi4gVGhlIGZsYXNoIGFkZHJlc3MgdXNlZCBoZXJlIG11c3QKKyAqIGZhbGwgd2l0aGluIHRoZSBsZWdhbCByYW5nZSBkZWZpbmVkIGJ5IHJybG9hZCBmb3Igc3RvcmluZworICogdGhlIGZpbGVzeXN0ZW0gY29tcG9uZW50LiBUaGlzIGFkZHJlc3Mgd2lsbCBiZSBzdWZmaWNpZW50bHkKKyAqIGRlZXAgaW50byB0aGUgb3ZlcmFsbCBmbGFzaCByYW5nZSB0byBhdm9pZCB0aGUgb3RoZXIKKyAqIGNvbXBvbmVudHMgYWxzbyBzdG9yZWQgaW4gZmxhc2ggc3VjaCBhcyB0aGUgYm9vdGxvYWRlciwKKyAqIHRoZSBib290bG9hZGVyIHBhcmFtcywgYW5kIHRoZSBrZXJuZWwuCisgKiBUaGUgU1cyIHNldHRpbmdzIGZvciB0aGUgbWFwIGJlbG93IGFyZToKKyAqIDEgb2ZmLCAyIG9mZiwgMyBvbiwgNCBvZmYuCisgKi8KKworLyogSW50ZWwgZmxhc2hfMCwgcGFydGl0aW9uZWQgYXMgZXhwZWN0ZWQgYnkgcnJsb2FkICovCisjZGVmaW5lIE9NQVBfRkxBU0hfMF9CQVNFCTB4RDgwMDAwMDAKKyNkZWZpbmUgT01BUF9GTEFTSF8wX1NUQVJUCTB4MDAwMDAwMDAKKyNkZWZpbmUgT01BUF9GTEFTSF8wX1NJWkUJU1pfMTZNCisKKy8qIEludGVsIGZsYXNoXzEsIHVzZWQgZm9yIGNyYW1mcyBvciBvdGhlciBmbGFzaCBmaWxlIHN5c3RlbXMgKi8KKyNkZWZpbmUgT01BUF9GTEFTSF8xX0JBU0UJMHhEOTAwMDAwMAorI2RlZmluZSBPTUFQX0ZMQVNIXzFfU1RBUlQJMHgwMTAwMDAwMAorI2RlZmluZSBPTUFQX0ZMQVNIXzFfU0laRQlTWl8xNk0KKworI2RlZmluZSBOUl9GUEdBX0lSUVMJCTI0CisjZGVmaW5lIE5SX0lSUVMgICAgICAgICAgICAgICAgIElIX0JPQVJEX0JBU0UgKyBOUl9GUEdBX0lSUVMKKworI2lmbmRlZiBfX0FTU0VNQkxZX18KK3ZvaWQgZnBnYV93cml0ZSh1bnNpZ25lZCBjaGFyIHZhbCwgaW50IHJlZyk7Cit1bnNpZ25lZCBjaGFyIGZwZ2FfcmVhZChpbnQgcmVnKTsKKyNlbmRpZgorCisjZW5kaWYgLyogQ09ORklHX0FSQ0hfT01BUDE1MTAgKi8KKworI2lmIGRlZmluZWQgKENPTkZJR19BUkNIX09NQVAxNlhYKQorCisvKiBBdCBPTUFQMTYxMCBJbm5vdmF0b3IgdGhlIEV0aGVybmV0IGlzIGRpcmVjdGx5IGNvbm5lY3RlZCB0byBDUzEgKi8KKyNkZWZpbmUgSU5OT1ZBVE9SMTYxMF9FVEhSX1NUQVJUCTB4MDQwMDAzMDAKKworI2VuZGlmIC8qIENPTkZJR19BUkNIX09NQVAxNjEwICovCisjZW5kaWYgLyogX19BU01fQVJDSF9PTUFQX0lOTk9WQVRPUl9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2JvYXJkLW5ldHN0YXIuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvYm9hcmQtbmV0c3Rhci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3Y2MwZmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2JvYXJkLW5ldHN0YXIuaApAQCAtMCwwICsxLDE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0IDJOIFRlbGVrb211bmlrYWNlLCBMYWRpc2xhdiBNaWNobCA8bWljaGxAMm4uY3o+CisgKgorICogSGFyZHdhcmUgZGVmaW5pdGlvbnMgZm9yIE9NQVA1OTEwIGJhc2VkIE5ldFN0YXIgYm9hcmQuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworCisjaWZuZGVmIF9fQVNNX0FSQ0hfTkVUU1RBUl9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfTkVUU1RBUl9ICisKKyNpbmNsdWRlIDxhc20vYXJjaC90Yy5oPgorCisjZGVmaW5lIE9NQVBfTkFORF9GTEFTSF9TVEFSVDEJCU9NQVBfQ1MxX1BIWVMgKyAoMSA8PCAyMykKKyNkZWZpbmUgT01BUF9OQU5EX0ZMQVNIX1NUQVJUMgkJT01BUF9DUzFfUEhZUyArICgyIDw8IDIzKQorCisjZW5kaWYgLyogIF9fQVNNX0FSQ0hfTkVUU1RBUl9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2JvYXJkLW9zay5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ib2FyZC1vc2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYWE0OWEwCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ib2FyZC1vc2suaApAQCAtMCwwICsxLDQxIEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ib2FyZC1vc2suaAorICoKKyAqIEhhcmR3YXJlIGRlZmluaXRpb25zIGZvciBUSSBPTUFQNTkxMiBPU0sgYm9hcmQuCisgKgorICogV3JpdHRlbiBieSBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGRlLmJvc2NoLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCisgKiBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVECisgKiBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4KKyAqIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKKyAqIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAorICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YKKyAqIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyAqIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCisgKiA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KKyAqLworCisjaWZuZGVmIF9fQVNNX0FSQ0hfT01BUF9PU0tfSAorI2RlZmluZSBfX0FTTV9BUkNIX09NQVBfT1NLX0gKKworLyogQXQgT01BUDU5MTIgT1NLIHRoZSBFdGhlcm5ldCBpcyBkaXJlY3RseSBjb25uZWN0ZWQgdG8gQ1MxICovCisjZGVmaW5lIE9NQVBfT1NLX0VUSFJfU1RBUlQJCTB4MDQ4MDAzMDAKKworLyogTWljcm9uIE5PUiBmbGFzaCBhdCBDUzMgbWFwcGVkIHRvIGFkZHJlc3MgMHgwIGlmIEJNIGJpdCBpcyAxICovCisjZGVmaW5lIE9NQVBfT1NLX05PUl9GTEFTSF9CQVNFCQkweEQ4MDAwMDAwCisjZGVmaW5lIE9NQVBfT1NLX05PUl9GTEFTSF9TSVpFCQlTWl8zMk0KKyNkZWZpbmUgT01BUF9PU0tfTk9SX0ZMQVNIX1NUQVJUCTB4MDAwMDAwMDAKKworI2VuZGlmIC8qICBfX0FTTV9BUkNIX09NQVBfT1NLX0ggKi8KKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ib2FyZC1wZXJzZXVzMi5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ib2FyZC1wZXJzZXVzMi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjMjI0Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2JvYXJkLXBlcnNldXMyLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2JvYXJkLXBlcnNldXMyLmgKKyAqCisgKiAgQ29weXJpZ2h0IDIwMDMgYnkgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkCisgKiAgICBPTUFQNzMwIC8gUGVyc2V1czIgc3VwcG9ydCBieSBKZWFuIFBpaGV0CisgKgorICogQ29weXJpZ2h0IChDKSAyMDAxIFJpZGdlUnVuLCBJbmMuIChodHRwOi8vd3d3LnJpZGdlcnVuLmNvbSkKKyAqIEF1dGhvcjogUmlkZ2VSdW4sIEluYy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCisgKiBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVECisgKiBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4KKyAqIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKKyAqIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAorICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YKKyAqIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyAqIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCisgKiA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KKyAqLworI2lmbmRlZiBfX0FTTV9BUkNIX09NQVBfUEVSU0VVUzJfSAorI2RlZmluZSBfX0FTTV9BUkNIX09NQVBfUEVSU0VVUzJfSAorCisjaW5jbHVkZSA8YXNtL2FyY2gvZnBnYS5oPgorCisjaWZuZGVmIE9NQVBfU0RSQU1fREVWSUNFCisjZGVmaW5lIE9NQVBfU0RSQU1fREVWSUNFCQlEMjU2TV8xWDE2XzRCCisjZW5kaWYKKworLyoKKyAqIFRoZXNlIGRlZmluaXRpb25zIGRlZmluZSBhbiBhcmVhIG9mIEZMQVNIIHNldCBhc2lkZQorICogZm9yIHRoZSB1c2Ugb2YgTVREL0pGRlMyLiBUaGlzIGlzIHRoZSBhcmVhIG9mIGZsYXNoCisgKiB0aGF0IGEgSkZGUzIgZmlsZXN5c3RlbSB3aWxsIHJlc2lkZSB3aGljaCBpcyBtb3VudGVkCisgKiBhdCBib290IHdpdGggdGhlICJyb290PS9kZXYvbXRkYmxvY2svMCBydyIKKyAqIGNvbW1hbmQgbGluZSBvcHRpb24uCisgKi8KKworLyogSW50ZWwgZmxhc2hfMCwgcGFydGl0aW9uZWQgYXMgZXhwZWN0ZWQgYnkgcnJsb2FkICovCisjZGVmaW5lIE9NQVBfRkxBU0hfMF9CQVNFCTB4RDgwMDAwMDAJLyogVkEgKi8KKyNkZWZpbmUgT01BUF9GTEFTSF8wX1NUQVJUCTB4MDAwMDAwMDAJLyogUEEgKi8KKyNkZWZpbmUgT01BUF9GTEFTSF8wX1NJWkUJU1pfMzJNCisKKyNkZWZpbmUgTUFYSVJRTlVNCQlJSF9CT0FSRF9CQVNFCisjZGVmaW5lIE1BWEZJUU5VTQkJTUFYSVJRTlVNCisjZGVmaW5lIE1BWFNXSU5VTQkJTUFYSVJRTlVNCisKKyNkZWZpbmUgTlJfSVJRUwkJCShNQVhJUlFOVU0gKyAxKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvYm9hcmQtdm9pY2VibHVlLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2JvYXJkLXZvaWNlYmx1ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzOTc3YjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2JvYXJkLXZvaWNlYmx1ZS5oCkBAIC0wLDAgKzEsMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQgMk4gVGVsZWtvbXVuaWthY2UsIExhZGlzbGF2IE1pY2hsIDxtaWNobEAybi5jej4KKyAqCisgKiBIYXJkd2FyZSBkZWZpbml0aW9ucyBmb3IgT01BUDU5MTAgYmFzZWQgVm9pY2VCbHVlIGJvYXJkLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX1ZPSUNFQkxVRV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfVk9JQ0VCTFVFX0gKKworI2lmIChFWFRFUk5BTF9NQVhfTlJfUE9SVFMgPCA0KQorI3VuZGVmIEVYVEVSTkFMX01BWF9OUl9QT1JUUworI2RlZmluZSBFWFRFUk5BTF9NQVhfTlJfUE9SVFMJNAorI2VuZGlmCisKK2V4dGVybiB2b2lkIHZvaWNlYmx1ZV93ZHRfZW5hYmxlKHZvaWQpOworZXh0ZXJuIHZvaWQgdm9pY2VibHVlX3dkdF9kaXNhYmxlKHZvaWQpOworZXh0ZXJuIHZvaWQgdm9pY2VibHVlX3dkdF9waW5nKHZvaWQpOworZXh0ZXJuIHZvaWQgdm9pY2VibHVlX3Jlc2V0KHZvaWQpOworCisjZW5kaWYgLyogIF9fQVNNX0FSQ0hfVk9JQ0VCTFVFX0ggKi8KKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ib2FyZC5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ib2FyZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjZWZkNjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2JvYXJkLmgKQEAgLTAsMCArMSwxMjYgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ib2FyZC5oCisgKgorICogIEluZm9ybWF0aW9uIHN0cnVjdHVyZXMgZm9yIGJvYXJkLXNwZWNpZmljIGRhdGEKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDA0CU5va2lhIENvcnBvcmF0aW9uCisgKiAgV3JpdHRlbiBieSBKdWhhIFlyavZs5CA8anVoYS55cmpvbGFAbm9raWEuY29tPgorICovCisKKyNpZm5kZWYgX09NQVBfQk9BUkRfSAorI2RlZmluZSBfT01BUF9CT0FSRF9ICisKKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorCisvKiBEaWZmZXJlbnQgcGVyaXBoZXJhbCBpZHMgKi8KKyNkZWZpbmUgT01BUF9UQUdfQ0xPQ0sJCTB4NGYwMQorI2RlZmluZSBPTUFQX1RBR19NTUMJCTB4NGYwMgorI2RlZmluZSBPTUFQX1RBR19VQVJUCQkweDRmMDMKKyNkZWZpbmUgT01BUF9UQUdfVVNCCQkweDRmMDQKKyNkZWZpbmUgT01BUF9UQUdfTENECQkweDRmMDUKKyNkZWZpbmUgT01BUF9UQUdfR1BJT19TV0lUQ0gJMHg0ZjA2CisKKyNkZWZpbmUgT01BUF9UQUdfQk9PVF9SRUFTT04gICAgMHg0ZjgwCisjZGVmaW5lIE9NQVBfVEFHX0ZMQVNIX1BBUlQJMHg0ZjgxCisKK3N0cnVjdCBvbWFwX2Nsb2NrX2NvbmZpZyB7CisJLyogMCBmb3IgMTIgTUh6LCAxIGZvciAxMyBNSHogYW5kIDIgZm9yIDE5LjIgTUh6ICovCisJdTggc3lzdGVtX2Nsb2NrX3R5cGU7Cit9OworCitzdHJ1Y3Qgb21hcF9tbWNfY29uZmlnIHsKKwl1OCBtbWNfYmxvY2tzOworCXMxNiBtbWMxX3Bvd2VyX3BpbiwgbW1jMl9wb3dlcl9waW47CisJczE2IG1tYzFfc3dpdGNoX3BpbiwgbW1jMl9zd2l0Y2hfcGluOworfTsKKworc3RydWN0IG9tYXBfdWFydF9jb25maWcgeworCXU4IGNvbnNvbGVfdWFydDsKKwl1MzIgY29uc29sZV9zcGVlZDsKK307CisKK3N0cnVjdCBvbWFwX3VzYl9jb25maWcgeworCS8qIENvbmZpZ3VyZSBkcml2ZXJzIGFjY29yZGluZyB0byB0aGUgY29ubmVjdG9ycyBvbiB5b3VyIGJvYXJkOgorCSAqICAtICJBIiBjb25uZWN0b3IgKHJlY3RhZ3VsYXIpCisJICoJLi4uIGZvciBob3N0L09IQ0kgdXNlLCBzZXQgInJlZ2lzdGVyX2hvc3QiLgorCSAqICAtICJCIiBjb25uZWN0b3IgKHNxdWFyaXNoKSBvciAiTWluaS1CIgorCSAqCS4uLiBmb3IgZGV2aWNlL2dhZGdldCB1c2UsIHNldCAicmVnaXN0ZXJfZGV2Ii4KKwkgKiAgLSAiTWluaS1BQiIgY29ubmVjdG9yICh2ZXJ5IHNpbWlsYXIgdG8gTWluaS1CKQorCSAqCS4uLiBmb3IgT1RHIHVzZSBhcyBkZXZpY2UgT1IgaG9zdCwgaW5pdGlhbGl6ZSAib3RnIgorCSAqLworCXVuc2lnbmVkCXJlZ2lzdGVyX2hvc3Q6MTsKKwl1bnNpZ25lZAlyZWdpc3Rlcl9kZXY6MTsKKwl1OAkJb3RnOwkvKiBwb3J0IG51bWJlciwgMS1iYXNlZDogIHVzYjEgPT0gMiAqLworCisJdTgJCWhtY19tb2RlOworCisJLyogaW1wbGljaXRseSB0cnVlIGlmIG90ZzogIGhvc3Qgc3VwcG9ydHMgcmVtb3RlIHdha2V1cD8gKi8KKwl1OAkJcndjOworCisJLyogc2lnbmFsaW5nIHBpbnMgdXNlZCB0byB0YWxrIHRvIHRyYW5zY2VpdmVyIG9uIHVzYk46CisJICogIDAgPT0gdXNiTiB1bnVzZWQKKwkgKiAgMiA9PSB1c2IwLW9ubHksIHVzaW5nIGludGVybmFsIHRyYW5zY2VpdmVyCisJICogIDMgPT0gMyB3aXJlIGJpZGlyZWN0aW9uYWwKKwkgKiAgNCA9PSA0IHdpcmUgYmlkaXJlY3Rpb25hbAorCSAqICA2ID09IDYgd2lyZSB1bmlkaXJlY3Rpb25hbCAob3IgVExMKQorCSAqLworCXU4CQlwaW5zWzNdOworfTsKKworc3RydWN0IG9tYXBfbGNkX2NvbmZpZyB7CisJY2hhciBwYW5lbF9uYW1lWzE2XTsKKwljaGFyIGN0cmxfbmFtZVsxNl07Cit9OworCisvKiBDb3ZlcjoKKyAqICAgICAgaGlnaCAtPiBjbG9zZWQKKyAqICAgICAgbG93ICAtPiBvcGVuCisgKiBDb25uZWN0aW9uOgorICogICAgICBoaWdoIC0+IGNvbm5lY3RlZAorICogICAgICBsb3cgIC0+IGRpc2Nvbm5lY3RlZAorICovCisjZGVmaW5lIE9NQVBfR1BJT19TV0lUQ0hfVFlQRV9DT1ZFUgkJMHgwMDAwCisjZGVmaW5lIE9NQVBfR1BJT19TV0lUQ0hfVFlQRV9DT05ORUNUSU9OCTB4MDAwMQorI2RlZmluZSBPTUFQX0dQSU9fU1dJVENIX0ZMQUdfSU5WRVJURUQgICAgICAgICAgMHgwMDAxCitzdHJ1Y3Qgb21hcF9ncGlvX3N3aXRjaF9jb25maWcgeworCWNoYXIgbmFtZVsxMl07CisJdTE2IGdwaW87CisJaW50IGZsYWdzOjQ7CisJaW50IHR5cGU6NDsKKwlpbnQga2V5X2NvZGU6MjQ7IC8qIExpbnV4IGtleSBjb2RlICovCit9OworCitzdHJ1Y3Qgb21hcF9mbGFzaF9wYXJ0X2NvbmZpZyB7CisJY2hhciBwYXJ0X3RhYmxlWzBdOworfTsKKworc3RydWN0IG9tYXBfYm9vdF9yZWFzb25fY29uZmlnIHsKKwljaGFyIHJlYXNvbl9zdHJbMTJdOworfTsKKworCitzdHJ1Y3Qgb21hcF9ib2FyZF9jb25maWdfZW50cnkgeworCXUxNiB0YWc7CisJdTE2IGxlbjsKKwl1OCAgZGF0YVswXTsKK307CisKK3N0cnVjdCBvbWFwX2JvYXJkX2NvbmZpZ19rZXJuZWwgeworCXUxNiB0YWc7CisJY29uc3Qgdm9pZCAqZGF0YTsKK307CisKK2V4dGVybiBjb25zdCB2b2lkICpfX29tYXBfZ2V0X2NvbmZpZyh1MTYgdGFnLCBzaXplX3QgbGVuLCBpbnQgbnIpOworCisjZGVmaW5lIG9tYXBfZ2V0X2NvbmZpZyh0YWcsIHR5cGUpIFwKKwkoKGNvbnN0IHR5cGUgKikgX19vbWFwX2dldF9jb25maWcoKHRhZyksIHNpemVvZih0eXBlKSwgMCkpCisjZGVmaW5lIG9tYXBfZ2V0X25yX2NvbmZpZyh0YWcsIHR5cGUsIG5yKSBcCisJKChjb25zdCB0eXBlICopIF9fb21hcF9nZXRfY29uZmlnKCh0YWcpLCBzaXplb2YodHlwZSksIChucikpKQorCitleHRlcm4gY29uc3Qgdm9pZCAqb21hcF9nZXRfdmFyX2NvbmZpZyh1MTYgdGFnLCBzaXplX3QgKmxlbik7CisKK2V4dGVybiBzdHJ1Y3Qgb21hcF9ib2FyZF9jb25maWdfa2VybmVsICpvbWFwX2JvYXJkX2NvbmZpZzsKK2V4dGVybiBpbnQgb21hcF9ib2FyZF9jb25maWdfc2l6ZTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2NwdS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9jcHUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODc4NjcxCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9jcHUuaApAQCAtMCwwICsxLDE4MyBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvY3B1LmgKKyAqCisgKiBPTUFQIGNwdSB0eXBlIGRldGVjdGlvbgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNCBOb2tpYSBDb3Jwb3JhdGlvbgorICoKKyAqIFdyaXR0ZW4gYnkgVG9ueSBMaW5kZ3JlbiA8dG9ueS5saW5kZ3JlbkBub2tpYS5jb20+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQorICoKKyAqLworCisjaWZuZGVmIF9fQVNNX0FSQ0hfT01BUF9DUFVfSAorI2RlZmluZSBfX0FTTV9BUkNIX09NQVBfQ1BVX0gKKworZXh0ZXJuIHVuc2lnbmVkIGludCBzeXN0ZW1fcmV2OworCisjZGVmaW5lIE9NQVBfRElFX0lEXzAJCTB4ZmZmZTE4MDAKKyNkZWZpbmUgT01BUF9ESUVfSURfMQkJMHhmZmZlMTgwNAorI2RlZmluZSBPTUFQX1BST0RVQ1RJT05fSURfMAkweGZmZmUyMDAwCisjZGVmaW5lIE9NQVBfUFJPRFVDVElPTl9JRF8xCTB4ZmZmZTIwMDQKKyNkZWZpbmUgT01BUDMyX0lEXzAJCTB4ZmZmZWQ0MDAKKyNkZWZpbmUgT01BUDMyX0lEXzEJCTB4ZmZmZWQ0MDQKKworLyoKKyAqIFRlc3QgaWYgbXVsdGljb3JlIE9NQVAgc3VwcG9ydCBpcyBuZWVkZWQKKyAqLworI3VuZGVmIE1VTFRJX09NQVAKKyN1bmRlZiBPTUFQX05BTUUKKworI2lmZGVmIENPTkZJR19BUkNIX09NQVA3MzAKKyMgaWZkZWYgT01BUF9OQU1FCisjICB1bmRlZiAgTVVMVElfT01BUAorIyAgZGVmaW5lIE1VTFRJX09NQVAKKyMgZWxzZQorIyAgZGVmaW5lIE9NQVBfTkFNRSBvbWFwNzMwCisjIGVuZGlmCisjZW5kaWYKKyNpZmRlZiBDT05GSUdfQVJDSF9PTUFQMTUxMAorIyBpZmRlZiBPTUFQX05BTUUKKyMgIHVuZGVmICBNVUxUSV9PTUFQCisjICBkZWZpbmUgTVVMVElfT01BUAorIyBlbHNlCisjICBkZWZpbmUgT01BUF9OQU1FIG9tYXAxNTEwCisjIGVuZGlmCisjZW5kaWYKKyNpZmRlZiBDT05GSUdfQVJDSF9PTUFQMTZYWAorIyBpZmRlZiBPTUFQX05BTUUKKyMgIHVuZGVmICBNVUxUSV9PTUFQCisjICBkZWZpbmUgTVVMVElfT01BUAorIyBlbHNlCisjICBkZWZpbmUgT01BUF9OQU1FIG9tYXAxNjEwCisjIGVuZGlmCisjZW5kaWYKKyNpZmRlZiBDT05GSUdfQVJDSF9PTUFQMTZYWAorIyBpZmRlZiBPTUFQX05BTUUKKyMgIHVuZGVmICBNVUxUSV9PTUFQCisjICBkZWZpbmUgTVVMVElfT01BUAorIyBlbHNlCisjICBkZWZpbmUgT01BUF9OQU1FIG9tYXAxNzEwCisjIGVuZGlmCisjZW5kaWYKKworLyoKKyAqIEdlbmVyYXRlIHZhcmlvdXMgT01BUCBjcHUgc3BlY2lmaWMgbWFjcm9zLCBhbmQgY3B1IGNsYXNzCisgKiBzcGVjaWZpYyBtYWNyb3MKKyAqLworI2RlZmluZSBHRVRfT01BUF9UWVBFCSgoc3lzdGVtX3JldiA+PiAyNCkgJiAweGZmKQorI2RlZmluZSBHRVRfT01BUF9DTEFTUwkoc3lzdGVtX3JldiAmIDB4ZmYpCisKKyNkZWZpbmUgSVNfT01BUF9UWVBFKHR5cGUsIGlkKQkJCQlcCitzdGF0aWMgaW5saW5lIGludCBpc19vbWFwICMjdHlwZSAodm9pZCkJCQlcCit7CQkJCQkJCVwKKwlyZXR1cm4gKEdFVF9PTUFQX1RZUEUgPT0gKGlkKSkgPyAxIDogMDsJCVwKK30KKworI2RlZmluZSBJU19PTUFQX0NMQVNTKGNsYXNzLCBpZCkJCQlcCitzdGF0aWMgaW5saW5lIGludCBpc19vbWFwICMjY2xhc3MgKHZvaWQpCQlcCit7CQkJCQkJCVwKKwlyZXR1cm4gKEdFVF9PTUFQX0NMQVNTID09IChpZCkpID8gMSA6IDA7CVwKK30KKworSVNfT01BUF9UWVBFKDczMCwgMHgwNykKK0lTX09NQVBfVFlQRSgxNTEwLCAweDE1KQorSVNfT01BUF9UWVBFKDE2MTAsIDB4MTYpCitJU19PTUFQX1RZUEUoNTkxMiwgMHgxNikKK0lTX09NQVBfVFlQRSgxNzEwLCAweDE3KQorSVNfT01BUF9UWVBFKDI0MjAsIDB4MjQpCisKK0lTX09NQVBfQ0xBU1MoN3h4LCAweDA3KQorSVNfT01BUF9DTEFTUygxNXh4LCAweDE1KQorSVNfT01BUF9DTEFTUygxNnh4LCAweDE2KQorSVNfT01BUF9DTEFTUygyNHh4LCAweDI0KQorCisvKgorICogTWFjcm9zIHRvIGdyb3VwIE9NQVAgdHlwZXMgaW50byBjcHUgY2xhc3Nlcy4KKyAqIFRoZXNlIGNhbiBiZSB1c2VkIGluIG1vc3QgcGxhY2VzLgorICogY3B1X2lzX29tYXAxNXh4KCk6CVRydWUgZm9yIDE1MTAgYW5kIDU5MTAKKyAqIGNwdV9pc19vbWFwMTZ4eCgpOglUcnVlIGZvciAxNjEwLCA1OTEyIGFuZCAxNzEwCisgKi8KKyNpZiBkZWZpbmVkKE1VTFRJX09NQVApCisjIGRlZmluZSBjcHVfaXNfb21hcDd4eCgpCQlpc19vbWFwN3h4KCkKKyMgZGVmaW5lIGNwdV9pc19vbWFwMTV4eCgpCQlpc19vbWFwMTV4eCgpCisjIGlmICEoZGVmaW5lZChDT05GSUdfQVJDSF9PTUFQMTUxMCkgfHwgZGVmaW5lZChDT05GSUdfQVJDSF9PTUFQNzMwKSkKKyMgIGRlZmluZSBjcHVfaXNfb21hcDE2eHgoKQkJMQorIyBlbHNlCisjICBkZWZpbmUgY3B1X2lzX29tYXAxNnh4KCkJCWlzX29tYXAxNnh4KCkKKyMgZW5kaWYKKyNlbHNlCisjIGlmIGRlZmluZWQoQ09ORklHX0FSQ0hfT01BUDczMCkKKyMgIGRlZmluZSBjcHVfaXNfb21hcDd4eCgpCQkxCisjIGVsc2UKKyMgIGRlZmluZSBjcHVfaXNfb21hcDd4eCgpCQkwCisjIGVuZGlmCisjIGlmIGRlZmluZWQoQ09ORklHX0FSQ0hfT01BUDE1MTApCisjICBkZWZpbmUgY3B1X2lzX29tYXAxNXh4KCkJCTEKKyMgZWxzZQorIyAgZGVmaW5lIGNwdV9pc19vbWFwMTV4eCgpCQkwCisjIGVuZGlmCisjIGlmIGRlZmluZWQoQ09ORklHX0FSQ0hfT01BUDE2WFgpCisjICBkZWZpbmUgY3B1X2lzX29tYXAxNnh4KCkJCTEKKyMgZWxzZQorIyAgZGVmaW5lIGNwdV9pc19vbWFwMTZ4eCgpCQkwCisjIGVuZGlmCisjZW5kaWYKKworI2lmIGRlZmluZWQoTVVMVElfT01BUCkKKyMgZGVmaW5lIGNwdV9pc19vbWFwNzMwKCkJCWlzX29tYXA3MzAoKQorIyBkZWZpbmUgY3B1X2lzX29tYXAxNTEwKCkJCWlzX29tYXAxNTEwKCkKKyMgZGVmaW5lIGNwdV9pc19vbWFwMTYxMCgpCQlpc19vbWFwMTYxMCgpCisjIGRlZmluZSBjcHVfaXNfb21hcDU5MTIoKQkJaXNfb21hcDU5MTIoKQorIyBkZWZpbmUgY3B1X2lzX29tYXAxNzEwKCkJCWlzX29tYXAxNzEwKCkKKyNlbHNlCisjIGlmIGRlZmluZWQoQ09ORklHX0FSQ0hfT01BUDczMCkKKyMgIGRlZmluZSBjcHVfaXNfb21hcDczMCgpCQkxCisjIGVsc2UKKyMgIGRlZmluZSBjcHVfaXNfb21hcDczMCgpCQkwCisjIGVuZGlmCisjIGlmIGRlZmluZWQoQ09ORklHX0FSQ0hfT01BUDE1MTApCisjICBkZWZpbmUgY3B1X2lzX29tYXAxNTEwKCkJCTEKKyMgZWxzZQorIyAgZGVmaW5lIGNwdV9pc19vbWFwMTUxMCgpCQkwCisjIGVuZGlmCisjIGlmIGRlZmluZWQoQ09ORklHX0FSQ0hfT01BUDE2WFgpCisjICBkZWZpbmUgY3B1X2lzX29tYXAxNjEwKCkJCTEKKyMgZWxzZQorIyAgZGVmaW5lIGNwdV9pc19vbWFwMTYxMCgpCQkwCisjIGVuZGlmCisjIGlmIGRlZmluZWQoQ09ORklHX0FSQ0hfT01BUDE2WFgpCisjICBkZWZpbmUgY3B1X2lzX29tYXA1OTEyKCkJCTEKKyMgZWxzZQorIyAgZGVmaW5lIGNwdV9pc19vbWFwNTkxMigpCQkwCisjIGVuZGlmCisjIGlmIGRlZmluZWQoQ09ORklHX0FSQ0hfT01BUDE2WFgpCisjIGRlZmluZSBjcHVfaXNfb21hcDE2MTAoKQkJaXNfb21hcDE2MTAoKQorIyBkZWZpbmUgY3B1X2lzX29tYXA1OTEyKCkJCWlzX29tYXA1OTEyKCkKKyMgZGVmaW5lIGNwdV9pc19vbWFwMTcxMCgpCQlpc19vbWFwMTcxMCgpCisjIGVsc2UKKyMgZGVmaW5lIGNwdV9pc19vbWFwMTYxMCgpCQkwCisjIGRlZmluZSBjcHVfaXNfb21hcDU5MTIoKQkJMAorIyBkZWZpbmUgY3B1X2lzX29tYXAxNzEwKCkJCTAKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChDT05GSUdfQVJDSF9PTUFQMjQyMCkKKyMgIGRlZmluZSBjcHVfaXNfb21hcDI0MjAoKQkJMQorIyBlbHNlCisjICBkZWZpbmUgY3B1X2lzX29tYXAyNDIwKCkJCTAKKyMgZW5kaWYKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvZGVidWctbWFjcm8uUyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvZGVidWctbWFjcm8uUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44M2JiNDU4Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9kZWJ1Zy1tYWNyby5TCkBAIC0wLDAgKzEsNDUgQEAKKy8qIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvZGVidWctbWFjcm8uUworICoKKyAqIERlYnVnZ2luZyBtYWNybyBpbmNsdWRlIGhlYWRlcgorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTQtMTk5OSBSdXNzZWxsIEtpbmcKKyAqICBNb3ZlZCBmcm9tIGxpbnV4L2FyY2gvYXJtL2tlcm5lbC9kZWJ1Zy5TIGJ5IEJlbiBEb29rcworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorKi8KKworCQkubWFjcm8JYWRkcnVhcnQscngKKwkJbXJjCXAxNSwgMCwgXHJ4LCBjMSwgYzAKKwkJdHN0CVxyeCwgIzEJCQlAIE1NVSBlbmFibGVkPworCQltb3ZlcQlccngsICMweGZmMDAwMDAwCUAgcGh5c2ljYWwgYmFzZSBhZGRyZXNzCisJCW1vdm5lCVxyeCwgIzB4ZmUwMDAwMDAJQCB2aXJ0dWFsIGJhc2UKKwkJb3JyCVxyeCwgXHJ4LCAjMHgwMGZiMDAwMAorI2lmZGVmIENPTkZJR19PTUFQX0xMX0RFQlVHX1VBUlQzCisJCW9ycglccngsIFxyeCwgIzB4MDAwMDkwMDAJQCBVQVJUIDMKKyNlbmRpZgorI2lmIGRlZmluZWQoQ09ORklHX09NQVBfTExfREVCVUdfVUFSVDIpIHx8IGRlZmluZWQoQ09ORklHX09NQVBfTExfREVCVUdfVUFSVDMpCisJCW9ycglccngsIFxyeCwgIzB4MDAwMDA4MDAJQCBVQVJUIDIgJiAzCisjZW5kaWYKKwkJLmVuZG0KKworCQkubWFjcm8Jc2VuZHVhcnQscmQscngKKwkJc3RyYglccmQsIFtccnhdCisJCS5lbmRtCisKKwkJLm1hY3JvCWJ1c3l1YXJ0LHJkLHJ4CisxMDAxOgkJbGRyYglccmQsIFtccngsICMoMHg1IDw8IDIpXQlAIE9NQVAtMTUxMCBhbmQgZnJpZW5kcworCQlhbmQJXHJkLCBccmQsICMweDYwCisJCXRlcQlccmQsICMweDYwCisJCWJlcQkxMDAyZgorCQlsZHJiCVxyZCwgW1xyeCwgIygweDUgPDwgMCldCUAgT01BUC03MzAgb25seQorCQlhbmQJXHJkLCBccmQsICMweDYwCisJCXRlcQlccmQsICMweDYwCisJCWJuZQkxMDAxYgorMTAwMjoKKwkJLmVuZG0KKworCQkubWFjcm8Jd2FpdHVhcnQscmQscngKKwkJLmVuZG0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvZG1hLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2RtYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3ODUyNDgKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2RtYS5oCkBAIC0wLDAgKzEsMjY0IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvZG1hLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzIE5va2lhIENvcnBvcmF0aW9uCisgKiAgQXV0aG9yOiBKdWhhIFlyavZs5CA8anVoYS55cmpvbGFAbm9raWEuY29tPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworI2lmbmRlZiBfX0FTTV9BUkNIX0RNQV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfRE1BX0gKKworI2RlZmluZSBNQVhfRE1BX0FERFJFU1MJCQkweGZmZmZmZmZmCisKKyNkZWZpbmUgT01BUF9MT0dJQ0FMX0RNQV9DSF9DT1VOVAkxNworCisjZGVmaW5lIE9NQVBfRE1BX05PX0RFVklDRQkJMAorI2RlZmluZSBPTUFQX0RNQV9NQ1NJMV9UWAkJMQorI2RlZmluZSBPTUFQX0RNQV9NQ1NJMV9SWAkJMgorI2RlZmluZSBPTUFQX0RNQV9JMkNfUlgJCQkzCisjZGVmaW5lIE9NQVBfRE1BX0kyQ19UWAkJCTQKKyNkZWZpbmUgT01BUF9ETUFfRVhUX05ETUFfUkVRCQk1CisjZGVmaW5lIE9NQVBfRE1BX0VYVF9ORE1BX1JFUTIJCTYKKyNkZWZpbmUgT01BUF9ETUFfVVdJUkVfVFgJCTcKKyNkZWZpbmUgT01BUF9ETUFfTUNCU1AxX1RYCQk4CisjZGVmaW5lIE9NQVBfRE1BX01DQlNQMV9SWAkJOQorI2RlZmluZSBPTUFQX0RNQV9NQ0JTUDNfVFgJCTEwCisjZGVmaW5lIE9NQVBfRE1BX01DQlNQM19SWAkJMTEKKyNkZWZpbmUgT01BUF9ETUFfVUFSVDFfVFgJCTEyCisjZGVmaW5lIE9NQVBfRE1BX1VBUlQxX1JYCQkxMworI2RlZmluZSBPTUFQX0RNQV9VQVJUMl9UWAkJMTQKKyNkZWZpbmUgT01BUF9ETUFfVUFSVDJfUlgJCTE1CisjZGVmaW5lIE9NQVBfRE1BX01DQlNQMl9UWAkJMTYKKyNkZWZpbmUgT01BUF9ETUFfTUNCU1AyX1JYCQkxNworI2RlZmluZSBPTUFQX0RNQV9VQVJUM19UWAkJMTgKKyNkZWZpbmUgT01BUF9ETUFfVUFSVDNfUlgJCTE5CisjZGVmaW5lIE9NQVBfRE1BX0NBTUVSQV9JRl9SWAkJMjAKKyNkZWZpbmUgT01BUF9ETUFfTU1DX1RYCQkJMjEKKyNkZWZpbmUgT01BUF9ETUFfTU1DX1JYCQkJMjIKKyNkZWZpbmUgT01BUF9ETUFfTkFORAkJCTIzCisjZGVmaW5lIE9NQVBfRE1BX0lSUV9MQ0RfTElORQkJMjQKKyNkZWZpbmUgT01BUF9ETUFfTUVNT1JZX1NUSUNLCQkyNQorI2RlZmluZSBPTUFQX0RNQV9VU0JfVzJGQ19SWDAJCTI2CisjZGVmaW5lIE9NQVBfRE1BX1VTQl9XMkZDX1JYMQkJMjcKKyNkZWZpbmUgT01BUF9ETUFfVVNCX1cyRkNfUlgyCQkyOAorI2RlZmluZSBPTUFQX0RNQV9VU0JfVzJGQ19UWDAJCTI5CisjZGVmaW5lIE9NQVBfRE1BX1VTQl9XMkZDX1RYMQkJMzAKKyNkZWZpbmUgT01BUF9ETUFfVVNCX1cyRkNfVFgyCQkzMQorCisvKiBUaGVzZSBhcmUgb25seSBmb3IgMTYxMCAqLworI2RlZmluZSBPTUFQX0RNQV9DUllQVE9fREVTX0lOCQkzMgorI2RlZmluZSBPTUFQX0RNQV9TUElfVFgJCQkzMworI2RlZmluZSBPTUFQX0RNQV9TUElfUlgJCQkzNAorI2RlZmluZSBPTUFQX0RNQV9DUllQVE9fSEFTSAkJMzUKKyNkZWZpbmUgT01BUF9ETUFfQ0NQX0FUVE4JCTM2CisjZGVmaW5lIE9NQVBfRE1BX0NDUF9GSUZPX05PVF9FTVBUWQkzNworI2RlZmluZSBPTUFQX0RNQV9DTVRfQVBFX1RYX0NIQU5fMAkzOAorI2RlZmluZSBPTUFQX0RNQV9DTVRfQVBFX1JWX0NIQU5fMAkzOQorI2RlZmluZSBPTUFQX0RNQV9DTVRfQVBFX1RYX0NIQU5fMQk0MAorI2RlZmluZSBPTUFQX0RNQV9DTVRfQVBFX1JWX0NIQU5fMQk0MQorI2RlZmluZSBPTUFQX0RNQV9DTVRfQVBFX1RYX0NIQU5fMgk0MgorI2RlZmluZSBPTUFQX0RNQV9DTVRfQVBFX1JWX0NIQU5fMgk0MworI2RlZmluZSBPTUFQX0RNQV9DTVRfQVBFX1RYX0NIQU5fMwk0NAorI2RlZmluZSBPTUFQX0RNQV9DTVRfQVBFX1JWX0NIQU5fMwk0NQorI2RlZmluZSBPTUFQX0RNQV9DTVRfQVBFX1RYX0NIQU5fNAk0NgorI2RlZmluZSBPTUFQX0RNQV9DTVRfQVBFX1JWX0NIQU5fNAk0NworI2RlZmluZSBPTUFQX0RNQV9DTVRfQVBFX1RYX0NIQU5fNQk0OAorI2RlZmluZSBPTUFQX0RNQV9DTVRfQVBFX1JWX0NIQU5fNQk0OQorI2RlZmluZSBPTUFQX0RNQV9DTVRfQVBFX1RYX0NIQU5fNgk1MAorI2RlZmluZSBPTUFQX0RNQV9DTVRfQVBFX1JWX0NIQU5fNgk1MQorI2RlZmluZSBPTUFQX0RNQV9DTVRfQVBFX1RYX0NIQU5fNwk1MgorI2RlZmluZSBPTUFQX0RNQV9DTVRfQVBFX1JWX0NIQU5fNwk1MworI2RlZmluZSBPTUFQX0RNQV9NTUMyX1RYCQk1NAorI2RlZmluZSBPTUFQX0RNQV9NTUMyX1JYCQk1NQorI2RlZmluZSBPTUFQX0RNQV9DUllQVE9fREVTX09VVAkJNTYKKworCisjZGVmaW5lIE9NQVBfRE1BX0JBU0UJCQkoMHhmZmZlZDgwMCkKKyNkZWZpbmUgT01BUF9ETUFfR0NSCQkJKE9NQVBfRE1BX0JBU0UgKyAweDQwMCkKKyNkZWZpbmUgT01BUF9ETUFfR1NDUgkJCShPTUFQX0RNQV9CQVNFICsgMHg0MDQpCisjZGVmaW5lIE9NQVBfRE1BX0dSU1QJCQkoT01BUF9ETUFfQkFTRSArIDB4NDA4KQorI2RlZmluZSBPTUFQX0RNQV9IV19JRAkJCShPTUFQX0RNQV9CQVNFICsgMHg0NDIpCisjZGVmaW5lIE9NQVBfRE1BX1BDSDJfSUQJCShPTUFQX0RNQV9CQVNFICsgMHg0NDQpCisjZGVmaW5lIE9NQVBfRE1BX1BDSDBfSUQJCShPTUFQX0RNQV9CQVNFICsgMHg0NDYpCisjZGVmaW5lIE9NQVBfRE1BX1BDSDFfSUQJCShPTUFQX0RNQV9CQVNFICsgMHg0NDgpCisjZGVmaW5lIE9NQVBfRE1BX1BDSEdfSUQJCShPTUFQX0RNQV9CQVNFICsgMHg0NGEpCisjZGVmaW5lIE9NQVBfRE1BX1BDSERfSUQJCShPTUFQX0RNQV9CQVNFICsgMHg0NGMpCisjZGVmaW5lIE9NQVBfRE1BX0NBUFNfMF9VCQkoT01BUF9ETUFfQkFTRSArIDB4NDRlKQorI2RlZmluZSBPTUFQX0RNQV9DQVBTXzBfTAkJKE9NQVBfRE1BX0JBU0UgKyAweDQ1MCkKKyNkZWZpbmUgT01BUF9ETUFfQ0FQU18xX1UJCShPTUFQX0RNQV9CQVNFICsgMHg0NTIpCisjZGVmaW5lIE9NQVBfRE1BX0NBUFNfMV9MCQkoT01BUF9ETUFfQkFTRSArIDB4NDU0KQorI2RlZmluZSBPTUFQX0RNQV9DQVBTXzIJCQkoT01BUF9ETUFfQkFTRSArIDB4NDU2KQorI2RlZmluZSBPTUFQX0RNQV9DQVBTXzMJCQkoT01BUF9ETUFfQkFTRSArIDB4NDU4KQorI2RlZmluZSBPTUFQX0RNQV9DQVBTXzQJCQkoT01BUF9ETUFfQkFTRSArIDB4NDVhKQorI2RlZmluZSBPTUFQX0RNQV9QQ0gyX1NSCQkoT01BUF9ETUFfQkFTRSArIDB4NDYwKQorI2RlZmluZSBPTUFQX0RNQV9QQ0gwX1NSCQkoT01BUF9ETUFfQkFTRSArIDB4NDgwKQorI2RlZmluZSBPTUFQX0RNQV9QQ0gxX1NSCQkoT01BUF9ETUFfQkFTRSArIDB4NDgyKQorI2RlZmluZSBPTUFQX0RNQV9QQ0hEX1NSCQkoT01BUF9ETUFfQkFTRSArIDB4NGMwKQorCisjZGVmaW5lIE9NQVAxNTEwX0RNQV9MQ0RfQkFTRQkJKDB4ZmZmZWRiMDApCisjZGVmaW5lIE9NQVAxNTEwX0RNQV9MQ0RfQ1RSTAkJKE9NQVAxNTEwX0RNQV9MQ0RfQkFTRSArIDB4MDApCisjZGVmaW5lIE9NQVAxNTEwX0RNQV9MQ0RfVE9QX0YxX0wJKE9NQVAxNTEwX0RNQV9MQ0RfQkFTRSArIDB4MDIpCisjZGVmaW5lIE9NQVAxNTEwX0RNQV9MQ0RfVE9QX0YxX1UJKE9NQVAxNTEwX0RNQV9MQ0RfQkFTRSArIDB4MDQpCisjZGVmaW5lIE9NQVAxNTEwX0RNQV9MQ0RfQk9UX0YxX0wJKE9NQVAxNTEwX0RNQV9MQ0RfQkFTRSArIDB4MDYpCisjZGVmaW5lIE9NQVAxNTEwX0RNQV9MQ0RfQk9UX0YxX1UJKE9NQVAxNTEwX0RNQV9MQ0RfQkFTRSArIDB4MDgpCisKKyNkZWZpbmUgT01BUDE2MTBfRE1BX0xDRF9CQVNFCQkoMHhmZmZlZTMwMCkKKyNkZWZpbmUgT01BUDE2MTBfRE1BX0xDRF9DU0RQICAgICAgCShPTUFQMTYxMF9ETUFfTENEX0JBU0UgKyAweGMwKQorI2RlZmluZSBPTUFQMTYxMF9ETUFfTENEX0NDUgkJKE9NQVAxNjEwX0RNQV9MQ0RfQkFTRSArIDB4YzIpCisjZGVmaW5lIE9NQVAxNjEwX0RNQV9MQ0RfQ1RSTAkJKE9NQVAxNjEwX0RNQV9MQ0RfQkFTRSArIDB4YzQpCisjZGVmaW5lIE9NQVAxNjEwX0RNQV9MQ0RfVE9QX0IxX0wJKE9NQVAxNjEwX0RNQV9MQ0RfQkFTRSArIDB4YzgpCisjZGVmaW5lIE9NQVAxNjEwX0RNQV9MQ0RfVE9QX0IxX1UJKE9NQVAxNjEwX0RNQV9MQ0RfQkFTRSArIDB4Y2EpCisjZGVmaW5lIE9NQVAxNjEwX0RNQV9MQ0RfQk9UX0IxX0wJKE9NQVAxNjEwX0RNQV9MQ0RfQkFTRSArIDB4Y2MpCisjZGVmaW5lIE9NQVAxNjEwX0RNQV9MQ0RfQk9UX0IxX1UJKE9NQVAxNjEwX0RNQV9MQ0RfQkFTRSArIDB4Y2UpCisjZGVmaW5lIE9NQVAxNjEwX0RNQV9MQ0RfVE9QX0IyX0wJKE9NQVAxNjEwX0RNQV9MQ0RfQkFTRSArIDB4ZDApCisjZGVmaW5lIE9NQVAxNjEwX0RNQV9MQ0RfVE9QX0IyX1UJKE9NQVAxNjEwX0RNQV9MQ0RfQkFTRSArIDB4ZDIpCisjZGVmaW5lIE9NQVAxNjEwX0RNQV9MQ0RfQk9UX0IyX0wJKE9NQVAxNjEwX0RNQV9MQ0RfQkFTRSArIDB4ZDQpCisjZGVmaW5lIE9NQVAxNjEwX0RNQV9MQ0RfQk9UX0IyX1UJKE9NQVAxNjEwX0RNQV9MQ0RfQkFTRSArIDB4ZDYpCisjZGVmaW5lIE9NQVAxNjEwX0RNQV9MQ0RfU1JDX0VJX0IxCShPTUFQMTYxMF9ETUFfTENEX0JBU0UgKyAweGQ4KQorI2RlZmluZSBPTUFQMTYxMF9ETUFfTENEX1NSQ19GSV9CMV9MCShPTUFQMTYxMF9ETUFfTENEX0JBU0UgKyAweGRhKQorI2RlZmluZSBPTUFQMTYxMF9ETUFfTENEX1NSQ19FTl9CMQkoT01BUDE2MTBfRE1BX0xDRF9CQVNFICsgMHhlMCkKKyNkZWZpbmUgT01BUDE2MTBfRE1BX0xDRF9TUkNfRk5fQjEJKE9NQVAxNjEwX0RNQV9MQ0RfQkFTRSArIDB4ZTQpCisjZGVmaW5lIE9NQVAxNjEwX0RNQV9MQ0RfTENIX0NUUkwJKE9NQVAxNjEwX0RNQV9MQ0RfQkFTRSArIDB4ZWEpCisjZGVmaW5lIE9NQVAxNjEwX0RNQV9MQ0RfU1JDX0ZJX0IxX1UJKE9NQVAxNjEwX0RNQV9MQ0RfQkFTRSArIDB4ZjQpCisKKworLyogRXZlcnkgTENoIGhhcyBpdHMgb3duIHNldCBvZiB0aGUgcmVnaXN0ZXJzIGJlbG93ICovCisjZGVmaW5lIE9NQVBfRE1BX0NTRFAobikJCShPTUFQX0RNQV9CQVNFICsgMHg0MCAqIChuKSArIDB4MDApCisjZGVmaW5lIE9NQVBfRE1BX0NDUihuKQkJCShPTUFQX0RNQV9CQVNFICsgMHg0MCAqIChuKSArIDB4MDIpCisjZGVmaW5lIE9NQVBfRE1BX0NJQ1IobikJCShPTUFQX0RNQV9CQVNFICsgMHg0MCAqIChuKSArIDB4MDQpCisjZGVmaW5lIE9NQVBfRE1BX0NTUihuKQkJCShPTUFQX0RNQV9CQVNFICsgMHg0MCAqIChuKSArIDB4MDYpCisjZGVmaW5lIE9NQVBfRE1BX0NTU0FfTChuKQkJKE9NQVBfRE1BX0JBU0UgKyAweDQwICogKG4pICsgMHgwOCkKKyNkZWZpbmUgT01BUF9ETUFfQ1NTQV9VKG4pCQkoT01BUF9ETUFfQkFTRSArIDB4NDAgKiAobikgKyAweDBhKQorI2RlZmluZSBPTUFQX0RNQV9DRFNBX0wobikJCShPTUFQX0RNQV9CQVNFICsgMHg0MCAqIChuKSArIDB4MGMpCisjZGVmaW5lIE9NQVBfRE1BX0NEU0FfVShuKQkJKE9NQVBfRE1BX0JBU0UgKyAweDQwICogKG4pICsgMHgwZSkKKyNkZWZpbmUgT01BUF9ETUFfQ0VOKG4pCQkJKE9NQVBfRE1BX0JBU0UgKyAweDQwICogKG4pICsgMHgxMCkKKyNkZWZpbmUgT01BUF9ETUFfQ0ZOKG4pCQkJKE9NQVBfRE1BX0JBU0UgKyAweDQwICogKG4pICsgMHgxMikKKyNkZWZpbmUgT01BUF9ETUFfQ1NGSShuKQkJKE9NQVBfRE1BX0JBU0UgKyAweDQwICogKG4pICsgMHgxNCkKKyNkZWZpbmUgT01BUF9ETUFfQ1NFSShuKQkJKE9NQVBfRE1BX0JBU0UgKyAweDQwICogKG4pICsgMHgxNikKKyNkZWZpbmUgT01BUF9ETUFfQ1NBQyhuKQkJKE9NQVBfRE1BX0JBU0UgKyAweDQwICogKG4pICsgMHgxOCkKKyNkZWZpbmUgT01BUF9ETUFfQ0RBQyhuKQkJKE9NQVBfRE1BX0JBU0UgKyAweDQwICogKG4pICsgMHgxYSkKKyNkZWZpbmUgT01BUF9ETUFfQ0RFSShuKQkJKE9NQVBfRE1BX0JBU0UgKyAweDQwICogKG4pICsgMHgxYykKKyNkZWZpbmUgT01BUF9ETUFfQ0RGSShuKQkJKE9NQVBfRE1BX0JBU0UgKyAweDQwICogKG4pICsgMHgxZSkKKyNkZWZpbmUgT01BUF9ETUFfQ09MT1JfTChuKQkJKE9NQVBfRE1BX0JBU0UgKyAweDQwICogKG4pICsgMHgyMCkKKyNkZWZpbmUgT01BUF9ETUFfQ09MT1JfVShuKQkJKE9NQVBfRE1BX0JBU0UgKyAweDQwICogKG4pICsgMHgyMikKKyNkZWZpbmUgT01BUF9ETUFfQ0NSMihuKQkJKE9NQVBfRE1BX0JBU0UgKyAweDQwICogKG4pICsgMHgyNCkKKyNkZWZpbmUgT01BUF9ETUFfQ0xOS19DVFJMKG4pCQkoT01BUF9ETUFfQkFTRSArIDB4NDAgKiAobikgKyAweDI4KQorI2RlZmluZSBPTUFQX0RNQV9MQ0hfQ1RSTChuKQkJKE9NQVBfRE1BX0JBU0UgKyAweDQwICogKG4pICsgMHgyYSkKKworI2RlZmluZSBPTUFQX0RNQV9UT1VUX0lSUQkJKDEgPDwgMCkKKyNkZWZpbmUgT01BUF9ETUFfRFJPUF9JUlEJCSgxIDw8IDEpCisjZGVmaW5lIE9NQVBfRE1BX0hBTEZfSVJRCQkoMSA8PCAyKQorI2RlZmluZSBPTUFQX0RNQV9GUkFNRV9JUlEJCSgxIDw8IDMpCisjZGVmaW5lIE9NQVBfRE1BX0xBU1RfSVJRCQkoMSA8PCA0KQorI2RlZmluZSBPTUFQX0RNQV9CTE9DS19JUlEJCSgxIDw8IDUpCisjZGVmaW5lIE9NQVBfRE1BX1NZTkNfSVJRCQkoMSA8PCA2KQorCisjZGVmaW5lIE9NQVBfRE1BX0RBVEFfVFlQRV9TOAkJMHgwMAorI2RlZmluZSBPTUFQX0RNQV9EQVRBX1RZUEVfUzE2CQkweDAxCisjZGVmaW5lIE9NQVBfRE1BX0RBVEFfVFlQRV9TMzIJCTB4MDIKKworI2RlZmluZSBPTUFQX0RNQV9TWU5DX0VMRU1FTlQJCTB4MDAKKyNkZWZpbmUgT01BUF9ETUFfU1lOQ19GUkFNRQkJMHgwMQorI2RlZmluZSBPTUFQX0RNQV9TWU5DX0JMT0NLCQkweDAyCisKKyNkZWZpbmUgT01BUF9ETUFfUE9SVF9FTUlGRgkJMHgwMAorI2RlZmluZSBPTUFQX0RNQV9QT1JUX0VNSUZTCQkweDAxCisjZGVmaW5lIE9NQVBfRE1BX1BPUlRfT0NQX1QxCQkweDAyCisjZGVmaW5lIE9NQVBfRE1BX1BPUlRfVElQQgkJMHgwMworI2RlZmluZSBPTUFQX0RNQV9QT1JUX09DUF9UMgkJMHgwNAorI2RlZmluZSBPTUFQX0RNQV9QT1JUX01QVUkJCTB4MDUKKworI2RlZmluZSBPTUFQX0RNQV9BTU9ERV9DT05TVEFOVAkJMHgwMAorI2RlZmluZSBPTUFQX0RNQV9BTU9ERV9QT1NUX0lOQwkJMHgwMQorI2RlZmluZSBPTUFQX0RNQV9BTU9ERV9TSU5HTEVfSURYCTB4MDIKKyNkZWZpbmUgT01BUF9ETUFfQU1PREVfRE9VQkxFX0lEWAkweDAzCisKKy8qIExDRCBETUEgYmxvY2sgbnVtYmVycyAqLworZW51bSB7CisJT01BUF9MQ0RfRE1BX0IxX1RPUCwKKwlPTUFQX0xDRF9ETUFfQjFfQk9UVE9NLAorCU9NQVBfTENEX0RNQV9CMl9UT1AsCisJT01BUF9MQ0RfRE1BX0IyX0JPVFRPTQorfTsKKworZW51bSBvbWFwX2RtYV9idXJzdF9tb2RlIHsKKwlPTUFQX0RNQV9EQVRBX0JVUlNUX0RJUyA9IDAsCisJT01BUF9ETUFfREFUQV9CVVJTVF80LAorCU9NQVBfRE1BX0RBVEFfQlVSU1RfOAorfTsKKworZW51bSBvbWFwX2RtYV9jb2xvcl9tb2RlIHsKKwlPTUFQX0RNQV9DT0xPUl9ESVMgPSAwLAorCU9NQVBfRE1BX0NPTlNUQU5UX0ZJTEwsCisJT01BUF9ETUFfVFJBTlNQQVJFTlRfQ09QWQorfTsKKworZXh0ZXJuIHZvaWQgb21hcF9zZXRfZG1hX3ByaW9yaXR5KGludCBkc3RfcG9ydCwgaW50IHByaW9yaXR5KTsKK2V4dGVybiBpbnQgb21hcF9yZXF1ZXN0X2RtYShpbnQgZGV2X2lkLCBjb25zdCBjaGFyICpkZXZfbmFtZSwKKwkJCSAgICB2b2lkICgqIGNhbGxiYWNrKShpbnQgbGNoLCB1MTYgY2hfc3RhdHVzLCB2b2lkICpkYXRhKSwKKwkJCSAgICB2b2lkICpkYXRhLCBpbnQgKmRtYV9jaCk7CitleHRlcm4gdm9pZCBvbWFwX2VuYWJsZV9kbWFfaXJxKGludCBjaCwgdTE2IGlycV9iaXRzKTsKK2V4dGVybiB2b2lkIG9tYXBfZGlzYWJsZV9kbWFfaXJxKGludCBjaCwgdTE2IGlycV9iaXRzKTsKK2V4dGVybiB2b2lkIG9tYXBfZnJlZV9kbWEoaW50IGNoKTsKK2V4dGVybiB2b2lkIG9tYXBfc3RhcnRfZG1hKGludCBsY2gpOworZXh0ZXJuIHZvaWQgb21hcF9zdG9wX2RtYShpbnQgbGNoKTsKK2V4dGVybiB2b2lkIG9tYXBfc2V0X2RtYV90cmFuc2Zlcl9wYXJhbXMoaW50IGxjaCwgaW50IGRhdGFfdHlwZSwKKwkJCQkJIGludCBlbGVtX2NvdW50LCBpbnQgZnJhbWVfY291bnQsCisJCQkJCSBpbnQgc3luY19tb2RlKTsKK2V4dGVybiB2b2lkIG9tYXBfc2V0X2RtYV9jb2xvcl9tb2RlKGludCBsY2gsIGVudW0gb21hcF9kbWFfY29sb3JfbW9kZSBtb2RlLAorCQkJCSAgICB1MzIgY29sb3IpOworCitleHRlcm4gdm9pZCBvbWFwX3NldF9kbWFfc3JjX3BhcmFtcyhpbnQgbGNoLCBpbnQgc3JjX3BvcnQsIGludCBzcmNfYW1vZGUsCisJCQkJICAgIHVuc2lnbmVkIGxvbmcgc3JjX3N0YXJ0KTsKK2V4dGVybiB2b2lkIG9tYXBfc2V0X2RtYV9zcmNfaW5kZXgoaW50IGxjaCwgaW50IGVpZHgsIGludCBmaWR4KTsKK2V4dGVybiB2b2lkIG9tYXBfc2V0X2RtYV9zcmNfZGF0YV9wYWNrKGludCBsY2gsIGludCBlbmFibGUpOworZXh0ZXJuIHZvaWQgb21hcF9zZXRfZG1hX3NyY19idXJzdF9tb2RlKGludCBsY2gsCisJCQkJCWVudW0gb21hcF9kbWFfYnVyc3RfbW9kZSBidXJzdF9tb2RlKTsKKworZXh0ZXJuIHZvaWQgb21hcF9zZXRfZG1hX2Rlc3RfcGFyYW1zKGludCBsY2gsIGludCBkZXN0X3BvcnQsIGludCBkZXN0X2Ftb2RlLAorCQkJCSAgICAgdW5zaWduZWQgbG9uZyBkZXN0X3N0YXJ0KTsKK2V4dGVybiB2b2lkIG9tYXBfc2V0X2RtYV9kZXN0X2luZGV4KGludCBsY2gsIGludCBlaWR4LCBpbnQgZmlkeCk7CitleHRlcm4gdm9pZCBvbWFwX3NldF9kbWFfZGVzdF9kYXRhX3BhY2soaW50IGxjaCwgaW50IGVuYWJsZSk7CitleHRlcm4gdm9pZCBvbWFwX3NldF9kbWFfZGVzdF9idXJzdF9tb2RlKGludCBsY2gsCisJCQkJCSBlbnVtIG9tYXBfZG1hX2J1cnN0X21vZGUgYnVyc3RfbW9kZSk7CisKK2V4dGVybiB2b2lkIG9tYXBfZG1hX2xpbmtfbGNoIChpbnQgbGNoX2hlYWQsIGludCBsY2hfcXVldWUpOworZXh0ZXJuIHZvaWQgb21hcF9kbWFfdW5saW5rX2xjaCAoaW50IGxjaF9oZWFkLCBpbnQgbGNoX3F1ZXVlKTsKKworZXh0ZXJuIGRtYV9hZGRyX3Qgb21hcF9nZXRfZG1hX3NyY19wb3MoaW50IGxjaCk7CitleHRlcm4gZG1hX2FkZHJfdCBvbWFwX2dldF9kbWFfZHN0X3BvcyhpbnQgbGNoKTsKK2V4dGVybiB2b2lkIG9tYXBfY2xlYXJfZG1hKGludCBsY2gpOworCisvKiBSZXR1cm5zIDEgaWYgdGhlIERNQSBtb2R1bGUgaXMgaW4gT01BUDE1MTAtY29tcGF0aWJsZSBtb2RlLCAwIG90aGVyd2lzZSAqLworZXh0ZXJuIGludCBvbWFwX2RtYV9pbl8xNTEwX21vZGUodm9pZCk7CisKKy8qIExDRCBETUEgZnVuY3Rpb25zICovCitleHRlcm4gaW50IG9tYXBfcmVxdWVzdF9sY2RfZG1hKHZvaWQgKCogY2FsbGJhY2spKHUxNiBzdGF0dXMsIHZvaWQgKmRhdGEpLAorCQkJCXZvaWQgKmRhdGEpOworZXh0ZXJuIHZvaWQgb21hcF9mcmVlX2xjZF9kbWEodm9pZCk7CitleHRlcm4gdm9pZCBvbWFwX3NldHVwX2xjZF9kbWEodm9pZCk7CitleHRlcm4gdm9pZCBvbWFwX2VuYWJsZV9sY2RfZG1hKHZvaWQpOworZXh0ZXJuIHZvaWQgb21hcF9zdG9wX2xjZF9kbWEodm9pZCk7CitleHRlcm4gdm9pZCBvbWFwX3NldF9sY2RfZG1hX2V4dF9jb250cm9sbGVyKGludCBleHRlcm5hbCk7CitleHRlcm4gdm9pZCBvbWFwX3NldF9sY2RfZG1hX3NpbmdsZV90cmFuc2ZlcihpbnQgc2luZ2xlKTsKK2V4dGVybiB2b2lkIG9tYXBfc2V0X2xjZF9kbWFfYjEodW5zaWduZWQgbG9uZyBhZGRyLCB1MTYgZmJfeHJlcywgdTE2IGZiX3lyZXMsCisJCQkJaW50IGRhdGFfdHlwZSk7CitleHRlcm4gdm9pZCBvbWFwX3NldF9sY2RfZG1hX2IxX3JvdGF0aW9uKGludCByb3RhdGUpOworZXh0ZXJuIHZvaWQgb21hcF9zZXRfbGNkX2RtYV9iMV92eHJlcyh1bnNpZ25lZCBsb25nIHZ4cmVzKTsKK2V4dGVybiB2b2lkIG9tYXBfc2V0X2xjZF9kbWFfYjFfbWlycm9yKGludCBtaXJyb3IpOworZXh0ZXJuIHZvaWQgb21hcF9zZXRfbGNkX2RtYV9iMV9zY2FsZSh1bnNpZ25lZCBpbnQgeHNjYWxlLCB1bnNpZ25lZCBpbnQgeXNjYWxlKTsKKworI2VuZGlmIC8qIF9fQVNNX0FSQ0hfRE1BX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvZW50cnktbWFjcm8uUyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvZW50cnktbWFjcm8uUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41N2IxMjY4Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9lbnRyeS1tYWNyby5TCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBpbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2VudHJ5LW1hY3JvLlMKKyAqCisgKiBMb3ctbGV2ZWwgSVJRIGhlbHBlciBtYWNyb3MgZm9yIE9NQVAtYmFzZWQgcGxhdGZvcm1zCisgKgorICogVGhpcyBmaWxlIGlzIGxpY2Vuc2VkIHVuZGVyICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSB2ZXJzaW9uIDIuIFRoaXMgcHJvZ3JhbSBpcyBsaWNlbnNlZCAiYXMgaXMiIHdpdGhvdXQgYW55CisgKiB3YXJyYW50eSBvZiBhbnkga2luZCwgd2hldGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKi8KKworIAkJLm1hY3JvCWRpc2FibGVfZmlxCisJCS5lbmRtCisKKwkJLm1hY3JvCWdldF9pcnFucl9hbmRfYmFzZSwgaXJxbnIsIGlycXN0YXQsIGJhc2UsIHRtcAorCQlsZHIJXGJhc2UsID1JT19BRERSRVNTKE9NQVBfSUgxX0JBU0UpCisJCWxkcglcaXJxbnIsIFtcYmFzZSwgI0lSUV9JVFJfUkVHX09GRlNFVF0KKwkJbGRyCVx0bXAsIFtcYmFzZSwgI0lSUV9NSVJfUkVHX09GRlNFVF0KKwkJbW92CVxpcnFzdGF0LCAjMHhmZmZmZmZmZgorCQliaWMJXHRtcCwgXGlycXN0YXQsIFx0bXAKKwkJdHN0CVxpcnFuciwgXHRtcAorCQliZXEJMTUxMGYKKworCQlsZHIJXGlycW5yLCBbXGJhc2UsICNJUlFfU0lSX0ZJUV9SRUdfT0ZGU0VUXQorCQljbXAJXGlycW5yLCAjMAorCQlsZHJlcQlcaXJxbnIsIFtcYmFzZSwgI0lSUV9TSVJfSVJRX1JFR19PRkZTRVRdCisJCWNtcGVxCVxpcnFuciwgI0lOVF9JSDJfSVJRCisJCWxkcmVxCVxiYXNlLCA9SU9fQUREUkVTUyhPTUFQX0lIMl9CQVNFKQorCQlsZHJlcQlcaXJxbnIsIFtcYmFzZSwgI0lSUV9TSVJfSVJRX1JFR19PRkZTRVRdCisJCWFkZGVxcwlcaXJxbnIsIFxpcnFuciwgIzMyCisxNTEwOgorCQkuZW5kbQorCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2ZwZ2EuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvZnBnYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3NjgwN2QKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2ZwZ2EuaApAQCAtMCwwICsxLDE5NiBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvZnBnYS5oCisgKgorICogSW50ZXJydXB0IGhhbmRsZXIgZm9yIE9NQVAtMTUxMCBGUEdBCisgKgorICogQ29weXJpZ2h0IChDKSAyMDAxIFJpZGdlUnVuLCBJbmMuCisgKiBBdXRob3I6IEdyZWcgTG9ubm9uIDxnbG9ubm9uQHJpZGdlcnVuLmNvbT4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDIgTW9udGFWaXN0YSBTb2Z0d2FyZSwgSW5jLgorICoKKyAqIFNlcGFyYXRlZCBGUEdBIGludGVycnVwdHMgZnJvbSBpbm5vdmF0b3IxNTEwLmMgYW5kIGNsZWFuZWQgdXAgZm9yIDIuNgorICogQ29weXJpZ2h0IChDKSAyMDA0IE5va2lhIENvcnBvcmF0aW9uIGJ5IFRvbnkgTGluZHJnZW4gPHRvbnlAYXRvbWlkZS5jb20+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworCisjaWZuZGVmIF9fQVNNX0FSQ0hfT01BUF9GUEdBX0gKKyNkZWZpbmUgX19BU01fQVJDSF9PTUFQX0ZQR0FfSAorCisjaWYgZGVmaW5lZChDT05GSUdfTUFDSF9PTUFQX0lOTk9WQVRPUikgJiYgZGVmaW5lZChDT05GSUdfQVJDSF9PTUFQMTUxMCkKK2V4dGVybiB2b2lkIG9tYXAxNTEwX2ZwZ2FfaW5pdF9pcnEodm9pZCk7CisjZWxzZQorI2RlZmluZSBvbWFwMTUxMF9mcGdhX2luaXRfaXJxKCkJKDApCisjZW5kaWYKKworI2RlZmluZSBmcGdhX3JlYWQocmVnKQkJCV9fcmF3X3JlYWRiKHJlZykKKyNkZWZpbmUgZnBnYV93cml0ZSh2YWwsIHJlZykJCV9fcmF3X3dyaXRlYih2YWwsIHJlZykKKworLyoKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogIEgyL1AyIERlYnVnIGJvYXJkIEZQR0EKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisvKiBtYXBzIGluIHRoZSBGUEdBIHJlZ2lzdGVycyBhbmQgdGhlIEVUSFIgcmVnaXN0ZXJzICovCisjZGVmaW5lIEgyUDJfREJHX0ZQR0FfQkFTRQkJMHhFODAwMDAwMAkvKiBWQSAqLworI2RlZmluZSBIMlAyX0RCR19GUEdBX1NJWkUJCVNaXzRLCQkvKiBTSVpFICovCisjZGVmaW5lIEgyUDJfREJHX0ZQR0FfU1RBUlQJCTB4MDQwMDAwMDAJLyogUEEgKi8KKworI2RlZmluZSBIMlAyX0RCR19GUEdBX0VUSFJfU1RBUlQJKEgyUDJfREJHX0ZQR0FfU1RBUlQgKyAweDMwMCkKKyNkZWZpbmUgSDJQMl9EQkdfRlBHQV9GUEdBX1JFVgkJKEgyUDJfREJHX0ZQR0FfQkFTRSArIDB4MTApCS8qIEZQR0EgUmV2aXNpb24gKi8KKyNkZWZpbmUgSDJQMl9EQkdfRlBHQV9CT0FSRF9SRVYJCShIMlAyX0RCR19GUEdBX0JBU0UgKyAweDEyKQkvKiBCb2FyZCBSZXZpc2lvbiAqLworI2RlZmluZSBIMlAyX0RCR19GUEdBX0dQSU8JCShIMlAyX0RCR19GUEdBX0JBU0UgKyAweDE0KQkvKiBHUElPIG91dHB1dHMgKi8KKyNkZWZpbmUgSDJQMl9EQkdfRlBHQV9MRURTCQkoSDJQMl9EQkdfRlBHQV9CQVNFICsgMHgxNikJLyogTEVEcyBvdXRwdXRzICovCisjZGVmaW5lIEgyUDJfREJHX0ZQR0FfTUlTQ19JTlBVVFMJKEgyUDJfREJHX0ZQR0FfQkFTRSArIDB4MTgpCS8qIE1pc2MgaW5wdXRzICovCisjZGVmaW5lIEgyUDJfREJHX0ZQR0FfTEFOX1NUQVRVUwkoSDJQMl9EQkdfRlBHQV9CQVNFICsgMHgxQSkJLyogTEFOIFN0YXR1cyBsaW5lICovCisjZGVmaW5lIEgyUDJfREJHX0ZQR0FfTEFOX1JFU0VUCQkoSDJQMl9EQkdfRlBHQV9CQVNFICsgMHgxQykJLyogTEFOIFJlc2V0IGxpbmUgKi8KKworLyogTk9URTogIG1vc3QgYm9hcmRzIGRvbid0IGhhdmUgYSBzdGF0aWMgbWFwcGluZyBmb3IgdGhlIEZQR0EgLi4uICovCitzdHJ1Y3QgaDJwMl9kYmdfZnBnYSB7CisJLyogb2Zmc2V0IDB4MDAgKi8KKwl1MTYJCXNtYzkxeFs4XTsKKwkvKiBvZmZzZXQgMHgxMCAqLworCXUxNgkJZnBnYV9yZXY7CisJdTE2CQlib2FyZF9yZXY7CisJdTE2CQlncGlvX291dHB1dHM7CisJdTE2CQlsZWRzOworCS8qIG9mZnNldCAweDE4ICovCisJdTE2CQltaXNjX2lucHV0czsKKwl1MTYJCWxhbl9zdGF0dXM7CisJdTE2CQlsYW5fcmVzZXQ7CisJdTE2CQlyZXNlcnZlZDA7CisJLyogb2Zmc2V0IDB4MjAgKi8KKwl1MTYJCXBzMl9kYXRhOworCXUxNgkJcHMyX2N0cmw7CisJLyogcGx1cyBhbHNvIDQgcnMyMzIgcG9ydHMgLi4uICovCit9OworCisvKiBMRURzIGRlZmluaXRpb24gb24gZGVidWcgYm9hcmQgKDE2IExFRHMsIGFsbCBwaHlzaWNhbGx5IGdyZWVuKSAqLworI2RlZmluZSBIMlAyX0RCR19GUEdBX0xFRF9HUkVFTgkJKDEgPDwgMTUpCisjZGVmaW5lIEgyUDJfREJHX0ZQR0FfTEVEX0FNQkVSCQkoMSA8PCAxNCkKKyNkZWZpbmUgSDJQMl9EQkdfRlBHQV9MRURfUkVECQkoMSA8PCAxMykKKyNkZWZpbmUgSDJQMl9EQkdfRlBHQV9MRURfQkxVRQkJKDEgPDwgMTIpCisvKiAgY3B1MCBsb2FkLW1ldGVyIExFRHMgKi8KKyNkZWZpbmUgSDJQMl9EQkdfRlBHQV9MT0FEX01FVEVSCSgxIDw8IDApCS8vIEEgYml0IG9mIGZ1biBvbiBvdXIgYm9hcmQgLi4uCisjZGVmaW5lIEgyUDJfREJHX0ZQR0FfTE9BRF9NRVRFUl9TSVpFCTExCisjZGVmaW5lIEgyUDJfREJHX0ZQR0FfTE9BRF9NRVRFUl9NQVNLCSgoMSA8PCBIMlAyX0RCR19GUEdBX0xPQURfTUVURVJfU0laRSkgLSAxKQorCisKKy8qCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqICBPTUFQLTE1MTAgRlBHQQorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNkZWZpbmUgT01BUDE1MTBfRlBHQV9CQVNFCQkJMHhFODAwMDAwMAkvKiBWaXJ0dWFsICovCisjZGVmaW5lIE9NQVAxNTEwX0ZQR0FfU0laRQkJCVNaXzRLCisjZGVmaW5lIE9NQVAxNTEwX0ZQR0FfU1RBUlQJCQkweDA4MDAwMDAwCS8qIFBoeXNpY2FsICovCisKKy8qIFJldmlzaW9uICovCisjZGVmaW5lIE9NQVAxNTEwX0ZQR0FfUkVWX0xPVwkJCShPTUFQMTUxMF9GUEdBX0JBU0UgKyAweDApCisjZGVmaW5lIE9NQVAxNTEwX0ZQR0FfUkVWX0hJR0gJCQkoT01BUDE1MTBfRlBHQV9CQVNFICsgMHgxKQorCisjZGVmaW5lIE9NQVAxNTEwX0ZQR0FfTENEX1BBTkVMX0NPTlRST0wJCShPTUFQMTUxMF9GUEdBX0JBU0UgKyAweDIpCisjZGVmaW5lIE9NQVAxNTEwX0ZQR0FfTEVEX0RJR0lUCQkJKE9NQVAxNTEwX0ZQR0FfQkFTRSArIDB4MykKKyNkZWZpbmUgSU5OT1ZBVE9SX0ZQR0FfSElEX1NQSQkJCShPTUFQMTUxMF9GUEdBX0JBU0UgKyAweDQpCisjZGVmaW5lIE9NQVAxNTEwX0ZQR0FfUE9XRVIJCQkoT01BUDE1MTBfRlBHQV9CQVNFICsgMHg1KQorCisvKiBJbnRlcnJ1cHQgc3RhdHVzICovCisjZGVmaW5lIE9NQVAxNTEwX0ZQR0FfSVNSX0xPCQkJKE9NQVAxNTEwX0ZQR0FfQkFTRSArIDB4NikKKyNkZWZpbmUgT01BUDE1MTBfRlBHQV9JU1JfSEkJCQkoT01BUDE1MTBfRlBHQV9CQVNFICsgMHg3KQorCisvKiBJbnRlcnJ1cHQgbWFzayAqLworI2RlZmluZSBPTUFQMTUxMF9GUEdBX0lNUl9MTwkJCShPTUFQMTUxMF9GUEdBX0JBU0UgKyAweDgpCisjZGVmaW5lIE9NQVAxNTEwX0ZQR0FfSU1SX0hJCQkJKE9NQVAxNTEwX0ZQR0FfQkFTRSArIDB4OSkKKworLyogUmVzZXQgcmVnaXN0ZXJzICovCisjZGVmaW5lIE9NQVAxNTEwX0ZQR0FfSE9TVF9SRVNFVAkJKE9NQVAxNTEwX0ZQR0FfQkFTRSArIDB4YSkKKyNkZWZpbmUgT01BUDE1MTBfRlBHQV9SU1QJCQkoT01BUDE1MTBfRlBHQV9CQVNFICsgMHhiKQorCisjZGVmaW5lIE9NQVAxNTEwX0ZQR0FfQVVESU8JCQkoT01BUDE1MTBfRlBHQV9CQVNFICsgMHhjKQorI2RlZmluZSBPTUFQMTUxMF9GUEdBX0RJUAkJCShPTUFQMTUxMF9GUEdBX0JBU0UgKyAweGUpCisjZGVmaW5lIE9NQVAxNTEwX0ZQR0FfRlBHQV9JTwkJCShPTUFQMTUxMF9GUEdBX0JBU0UgKyAweGYpCisjZGVmaW5lIE9NQVAxNTEwX0ZQR0FfVUFSVDEJCQkoT01BUDE1MTBfRlBHQV9CQVNFICsgMHgxNCkKKyNkZWZpbmUgT01BUDE1MTBfRlBHQV9VQVJUMgkJCShPTUFQMTUxMF9GUEdBX0JBU0UgKyAweDE1KQorI2RlZmluZSBPTUFQMTUxMF9GUEdBX09NQVAxNTEwX1NUQVRVUwkJKE9NQVAxNTEwX0ZQR0FfQkFTRSArIDB4MTYpCisjZGVmaW5lIE9NQVAxNTEwX0ZQR0FfQk9BUkRfUkVWCQkJKE9NQVAxNTEwX0ZQR0FfQkFTRSArIDB4MTgpCisjZGVmaW5lIE9NQVAxNTEwUDFfUFBUX0RBVEEJCQkoT01BUDE1MTBfRlBHQV9CQVNFICsgMHgxMDApCisjZGVmaW5lIE9NQVAxNTEwUDFfUFBUX1NUQVRVUwkJCShPTUFQMTUxMF9GUEdBX0JBU0UgKyAweDEwMSkKKyNkZWZpbmUgT01BUDE1MTBQMV9QUFRfQ09OVFJPTAkJCShPTUFQMTUxMF9GUEdBX0JBU0UgKyAweDEwMikKKworI2RlZmluZSBPTUFQMTUxMF9GUEdBX1RPVUNIU0NSRUVOCQkoT01BUDE1MTBfRlBHQV9CQVNFICsgMHgyMDQpCisKKyNkZWZpbmUgSU5OT1ZBVE9SX0ZQR0FfSU5GTwkJCShPTUFQMTUxMF9GUEdBX0JBU0UgKyAweDIwNSkKKyNkZWZpbmUgSU5OT1ZBVE9SX0ZQR0FfTENEX0JSSUdIVF9MTwkJKE9NQVAxNTEwX0ZQR0FfQkFTRSArIDB4MjA2KQorI2RlZmluZSBJTk5PVkFUT1JfRlBHQV9MQ0RfQlJJR0hUX0hJCQkoT01BUDE1MTBfRlBHQV9CQVNFICsgMHgyMDcpCisjZGVmaW5lIElOTk9WQVRPUl9GUEdBX0xFRF9HUk5fTE8JCShPTUFQMTUxMF9GUEdBX0JBU0UgKyAweDIwOCkKKyNkZWZpbmUgSU5OT1ZBVE9SX0ZQR0FfTEVEX0dSTl9ISQkJKE9NQVAxNTEwX0ZQR0FfQkFTRSArIDB4MjA5KQorI2RlZmluZSBJTk5PVkFUT1JfRlBHQV9MRURfUkVEX0xPCQkoT01BUDE1MTBfRlBHQV9CQVNFICsgMHgyMGEpCisjZGVmaW5lIElOTk9WQVRPUl9GUEdBX0xFRF9SRURfSEkJCShPTUFQMTUxMF9GUEdBX0JBU0UgKyAweDIwYikKKyNkZWZpbmUgSU5OT1ZBVE9SX0ZQR0FfQ0FNX1VTQl9DT05UUk9MCQkoT01BUDE1MTBfRlBHQV9CQVNFICsgMHgyMGMpCisjZGVmaW5lIElOTk9WQVRPUl9GUEdBX0VYUF9DT05UUk9MCQkoT01BUDE1MTBfRlBHQV9CQVNFICsgMHgyMGQpCisjZGVmaW5lIElOTk9WQVRPUl9GUEdBX0lTUjIJCQkoT01BUDE1MTBfRlBHQV9CQVNFICsgMHgyMGUpCisjZGVmaW5lIElOTk9WQVRPUl9GUEdBX0lNUjIJCQkoT01BUDE1MTBfRlBHQV9CQVNFICsgMHgyMTApCisKKyNkZWZpbmUgT01BUDE1MTBfRlBHQV9FVEhSX1NUQVJUCQkoT01BUDE1MTBfRlBHQV9TVEFSVCArIDB4MzAwKQorCisvKgorICogUG93ZXIgdXAgR2lnYSBVQVJUIGRyaXZlciwgdHVybiBvbiBISUQgY2xvY2suCisgKiBUdXJuIG9mZiBCVCBwb3dlciwgc2luY2Ugd2UncmUgbm90IHVzaW5nIGl0IGFuZCBpdAorICogZHJhd3MgcG93ZXIuCisgKi8KKyNkZWZpbmUgT01BUDE1MTBfRlBHQV9SRVNFVF9WQUxVRQkJMHg0MgorCisjZGVmaW5lIE9NQVAxNTEwX0ZQR0FfUENSX0lGX1BEMAkJKDEgPDwgNykKKyNkZWZpbmUgT01BUDE1MTBfRlBHQV9QQ1JfQ09NMl9FTgkJKDEgPDwgNikKKyNkZWZpbmUgT01BUDE1MTBfRlBHQV9QQ1JfQ09NMV9FTgkJKDEgPDwgNSkKKyNkZWZpbmUgT01BUDE1MTBfRlBHQV9QQ1JfRVhQX1BEMAkJKDEgPDwgNCkKKyNkZWZpbmUgT01BUDE1MTBfRlBHQV9QQ1JfRVhQX1BEMQkJKDEgPDwgMykKKyNkZWZpbmUgT01BUDE1MTBfRlBHQV9QQ1JfNDhNSFpfQ0xLCQkoMSA8PCAyKQorI2RlZmluZSBPTUFQMTUxMF9GUEdBX1BDUl80TUhaX0NMSwkJKDEgPDwgMSkKKyNkZWZpbmUgT01BUDE1MTBfRlBHQV9QQ1JfUlNSVkRfQklUMAkJKDEgPDwgMCkKKworLyoKKyAqIElubm92YXRvci9PTUFQMTUxMCBGUEdBIEhJRCByZWdpc3RlciBiaXQgZGVmaW5pdGlvbnMKKyAqLworI2RlZmluZSBPTUFQMTUxMF9GUEdBX0hJRF9TQ0xLCSgxPDwwKQkvKiBvdXRwdXQgKi8KKyNkZWZpbmUgT01BUDE1MTBfRlBHQV9ISURfTU9TSQkoMTw8MSkJLyogb3V0cHV0ICovCisjZGVmaW5lIE9NQVAxNTEwX0ZQR0FfSElEX25TUwkoMTw8MikJLyogb3V0cHV0IDAvMSBjaGlwIGlkbGUvc2VsZWN0ICovCisjZGVmaW5lIE9NQVAxNTEwX0ZQR0FfSElEX25IU1VTCSgxPDwzKQkvKiBvdXRwdXQgMC8xIGhvc3QgYWN0aXZlL3N1c3BlbmRlZCAqLworI2RlZmluZSBPTUFQMTUxMF9GUEdBX0hJRF9NSVNPCSgxPDw0KQkvKiBpbnB1dCAqLworI2RlZmluZSBPTUFQMTUxMF9GUEdBX0hJRF9BVE4JKDE8PDUpCS8qIGlucHV0ICAwLzEgY2hpcCBpZGxlL0FUTiAqLworI2RlZmluZSBPTUFQMTUxMF9GUEdBX0hJRF9yc3J2ZAkoMTw8NikKKyNkZWZpbmUgT01BUDE1MTBfRlBHQV9ISURfUkVTRVRuICgxPDw3KQkvKiBvdXRwdXQgLSAwLzEgVVNBUiByZXNldC9ydW4gKi8KKworLyogVGhlIEZQR0EgSVJRIGlzIGNhc2NhZGVkIHRocm91Z2ggR1BJT18xMyAqLworI2RlZmluZSBPTUFQMTUxMF9JTlRfRlBHQQkJKElIX0dQSU9fQkFTRSArIDEzKQorCisvKiBJUlEgTnVtYmVycyBmb3IgaW50ZXJydXB0cyBtdXhlZCB0aHJvdWdoIHRoZSBGUEdBICovCisjZGVmaW5lIE9NQVAxNTEwX0lIX0ZQR0FfQkFTRQkJSUhfQk9BUkRfQkFTRQorI2RlZmluZSBPTUFQMTUxMF9JTlRfRlBHQV9BVE4JCShPTUFQMTUxMF9JSF9GUEdBX0JBU0UgKyAwKQorI2RlZmluZSBPTUFQMTUxMF9JTlRfRlBHQV9BQ0sJCShPTUFQMTUxMF9JSF9GUEdBX0JBU0UgKyAxKQorI2RlZmluZSBPTUFQMTUxMF9JTlRfRlBHQTIJCShPTUFQMTUxMF9JSF9GUEdBX0JBU0UgKyAyKQorI2RlZmluZSBPTUFQMTUxMF9JTlRfRlBHQTMJCShPTUFQMTUxMF9JSF9GUEdBX0JBU0UgKyAzKQorI2RlZmluZSBPTUFQMTUxMF9JTlRfRlBHQTQJCShPTUFQMTUxMF9JSF9GUEdBX0JBU0UgKyA0KQorI2RlZmluZSBPTUFQMTUxMF9JTlRfRlBHQTUJCShPTUFQMTUxMF9JSF9GUEdBX0JBU0UgKyA1KQorI2RlZmluZSBPTUFQMTUxMF9JTlRfRlBHQTYJCShPTUFQMTUxMF9JSF9GUEdBX0JBU0UgKyA2KQorI2RlZmluZSBPTUFQMTUxMF9JTlRfRlBHQTcJCShPTUFQMTUxMF9JSF9GUEdBX0JBU0UgKyA3KQorI2RlZmluZSBPTUFQMTUxMF9JTlRfRlBHQTgJCShPTUFQMTUxMF9JSF9GUEdBX0JBU0UgKyA4KQorI2RlZmluZSBPTUFQMTUxMF9JTlRfRlBHQTkJCShPTUFQMTUxMF9JSF9GUEdBX0JBU0UgKyA5KQorI2RlZmluZSBPTUFQMTUxMF9JTlRfRlBHQTEwCQkoT01BUDE1MTBfSUhfRlBHQV9CQVNFICsgMTApCisjZGVmaW5lIE9NQVAxNTEwX0lOVF9GUEdBMTEJCShPTUFQMTUxMF9JSF9GUEdBX0JBU0UgKyAxMSkKKyNkZWZpbmUgT01BUDE1MTBfSU5UX0ZQR0ExMgkJKE9NQVAxNTEwX0lIX0ZQR0FfQkFTRSArIDEyKQorI2RlZmluZSBPTUFQMTUxMF9JTlRfRVRIRVIJCShPTUFQMTUxMF9JSF9GUEdBX0JBU0UgKyAxMykKKyNkZWZpbmUgT01BUDE1MTBfSU5UX0ZQR0FVQVJUMQkJKE9NQVAxNTEwX0lIX0ZQR0FfQkFTRSArIDE0KQorI2RlZmluZSBPTUFQMTUxMF9JTlRfRlBHQVVBUlQyCQkoT01BUDE1MTBfSUhfRlBHQV9CQVNFICsgMTUpCisjZGVmaW5lIE9NQVAxNTEwX0lOVF9GUEdBX1RTCQkoT01BUDE1MTBfSUhfRlBHQV9CQVNFICsgMTYpCisjZGVmaW5lIE9NQVAxNTEwX0lOVF9GUEdBMTcJCShPTUFQMTUxMF9JSF9GUEdBX0JBU0UgKyAxNykKKyNkZWZpbmUgT01BUDE1MTBfSU5UX0ZQR0FfQ0FNCQkoT01BUDE1MTBfSUhfRlBHQV9CQVNFICsgMTgpCisjZGVmaW5lIE9NQVAxNTEwX0lOVF9GUEdBX1JUQ19BCQkoT01BUDE1MTBfSUhfRlBHQV9CQVNFICsgMTkpCisjZGVmaW5lIE9NQVAxNTEwX0lOVF9GUEdBX1JUQ19CCQkoT01BUDE1MTBfSUhfRlBHQV9CQVNFICsgMjApCisjZGVmaW5lIE9NQVAxNTEwX0lOVF9GUEdBX0NECQkoT01BUDE1MTBfSUhfRlBHQV9CQVNFICsgMjEpCisjZGVmaW5lIE9NQVAxNTEwX0lOVF9GUEdBMjIJCShPTUFQMTUxMF9JSF9GUEdBX0JBU0UgKyAyMikKKyNkZWZpbmUgT01BUDE1MTBfSU5UX0ZQR0EyMwkJKE9NQVAxNTEwX0lIX0ZQR0FfQkFTRSArIDIzKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvZ3Bpby5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ncGlvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmFkMmZjOQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvZ3Bpby5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2dwaW8uaAorICoKKyAqIE9NQVAgR1BJTyBoYW5kbGluZyBkZWZpbmVzIGFuZCBmdW5jdGlvbnMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMgTm9raWEgQ29ycG9yYXRpb24KKyAqCisgKiBXcml0dGVuIGJ5IEp1aGEgWXJq9mzkIDxqdWhhLnlyam9sYUBub2tpYS5jb20+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQorICoKKyAqLworCisjaWZuZGVmIF9fQVNNX0FSQ0hfT01BUF9HUElPX0gKKyNkZWZpbmUgX19BU01fQVJDSF9PTUFQX0dQSU9fSAorCisjaW5jbHVkZSA8YXNtL2FyY2gvaGFyZHdhcmUuaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9pcnFzLmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+CisKKyNkZWZpbmUgT01BUF9NUFVJT19CQVNFCQkJMHhmZmZiNTAwMAorI2RlZmluZSBPTUFQX01QVUlPX0lOUFVUX0xBVENICQkweDAwCisjZGVmaW5lIE9NQVBfTVBVSU9fT1VUUFVUCQkweDA0CisjZGVmaW5lIE9NQVBfTVBVSU9fSU9fQ05UTAkJMHgwOAorI2RlZmluZSBPTUFQX01QVUlPX0tCUl9MQVRDSAkJMHgxMAorI2RlZmluZSBPTUFQX01QVUlPX0tCQwkJCTB4MTQKKyNkZWZpbmUgT01BUF9NUFVJT19HUElPX0VWRU5UX01PREUJMHgxOAorI2RlZmluZSBPTUFQX01QVUlPX0dQSU9fSU5UX0VER0UJMHgxYworI2RlZmluZSBPTUFQX01QVUlPX0tCRF9JTlQJCTB4MjAKKyNkZWZpbmUgT01BUF9NUFVJT19HUElPX0lOVAkJMHgyNAorI2RlZmluZSBPTUFQX01QVUlPX0tCRF9NQVNLSVQJCTB4MjgKKyNkZWZpbmUgT01BUF9NUFVJT19HUElPX01BU0tJVAkJMHgyYworI2RlZmluZSBPTUFQX01QVUlPX0dQSU9fREVCT1VOQ0lORwkweDMwCisjZGVmaW5lIE9NQVBfTVBVSU9fTEFUQ0gJCTB4MzQKKworI2RlZmluZSBPTUFQX01QVUlPKG5yKQkJKE9NQVBfTUFYX0dQSU9fTElORVMgKyAobnIpKQorI2RlZmluZSBPTUFQX0dQSU9fSVNfTVBVSU8obnIpCSgobnIpID49IE9NQVBfTUFYX0dQSU9fTElORVMpCisKKyNkZWZpbmUgT01BUF9HUElPX0lSUShucikJKE9NQVBfR1BJT19JU19NUFVJTyhucikgPyBcCisJCQkJIElIX01QVUlPX0JBU0UgKyAoKG5yKSAmIDB4MGYpIDogXAorCQkJCSBJSF9HUElPX0JBU0UgKyAoKG5yKSAmIDB4M2YpKQorCisvKiBGb3IgRURHRUNUUkwgKi8KKyNkZWZpbmUgT01BUF9HUElPX05PX0VER0UJICAweDAwCisjZGVmaW5lIE9NQVBfR1BJT19GQUxMSU5HX0VER0UJICAweDAxCisjZGVmaW5lIE9NQVBfR1BJT19SSVNJTkdfRURHRQkgIDB4MDIKKyNkZWZpbmUgT01BUF9HUElPX0JPVEhfRURHRVMJICAweDAzCisKK2V4dGVybiBpbnQgb21hcF9ncGlvX2luaXQodm9pZCk7CS8qIENhbGwgZnJvbSBib2FyZCBpbml0IG9ubHkgKi8KK2V4dGVybiBpbnQgb21hcF9yZXF1ZXN0X2dwaW8oaW50IGdwaW8pOworZXh0ZXJuIHZvaWQgb21hcF9mcmVlX2dwaW8oaW50IGdwaW8pOworZXh0ZXJuIHZvaWQgb21hcF9zZXRfZ3Bpb19kaXJlY3Rpb24oaW50IGdwaW8sIGludCBpc19pbnB1dCk7CitleHRlcm4gdm9pZCBvbWFwX3NldF9ncGlvX2RhdGFvdXQoaW50IGdwaW8sIGludCBlbmFibGUpOworZXh0ZXJuIGludCBvbWFwX2dldF9ncGlvX2RhdGFpbihpbnQgZ3Bpbyk7CitleHRlcm4gdm9pZCBvbWFwX3NldF9ncGlvX2VkZ2VfY3RybChpbnQgZ3BpbywgaW50IGVkZ2UpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvaGFyZHdhcmUuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvaGFyZHdhcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zN2UwNmM3Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9oYXJkd2FyZS5oCkBAIC0wLDAgKzEsMzI0IEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9oYXJkd2FyZS5oCisgKgorICogSGFyZHdhcmUgZGVmaW5pdGlvbnMgZm9yIFRJIE9NQVAgcHJvY2Vzc29ycyBhbmQgYm9hcmRzCisgKgorICogTk9URTogUGxlYXNlIHB1dCBkZXZpY2UgZHJpdmVyIHNwZWNpZmljIGRlZmluZXMgaW50byBhIHNlcGFyYXRlIGhlYWRlcgorICoJIGZpbGUgZm9yIGVhY2ggZHJpdmVyLgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwMSBSaWRnZVJ1biwgSW5jLgorICogQXV0aG9yOiBSaWRnZVJ1biwgSW5jLiBHcmVnIExvbm5vbiA8Z2xvbm5vbkByaWRnZXJ1bi5jb20+CisgKgorICogUmVvcmdhbml6ZWQgZm9yIExpbnV4LTIuNiBieSBUb255IExpbmRncmVuIDx0b255QGF0b21pZGUuY29tPgorICogICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGRlLmJvc2NoLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCisgKiBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVECisgKiBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4KKyAqIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKKyAqIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAorICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YKKyAqIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyAqIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCisgKiA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KKyAqLworCisjaWZuZGVmIF9fQVNNX0FSQ0hfT01BUF9IQVJEV0FSRV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfT01BUF9IQVJEV0FSRV9ICisKKyNpbmNsdWRlIDxhc20vc2l6ZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKyNpZm5kZWYgX19BU1NFTUJMRVJfXworI2luY2x1ZGUgPGFzbS90eXBlcy5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL2NwdS5oPgorI2VuZGlmCisjaW5jbHVkZSA8YXNtL2FyY2gvaW8uaD4KKworLyoKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogQ29tbW9uIGRlZmluaXRpb25zIGZvciBhbGwgT01BUCBwcm9jZXNzb3JzCisgKiBOT1RFOiBQdXQgYWxsIHByb2Nlc3NvciBvciBib2FyZCBzcGVjaWZpYyBwYXJ0cyB0byB0aGUgc3BlY2lhbCBoZWFkZXIKKyAqCSBmaWxlcy4KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKy8qCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBDbG9ja3MKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2RlZmluZSBDTEtHRU5fUkVHX0JBU0UJCSgweGZmZmVjZTAwKQorI2RlZmluZSBBUk1fQ0tDVEwJCShDTEtHRU5fUkVHX0JBU0UgKyAweDApCisjZGVmaW5lIEFSTV9JRExFQ1QxCQkoQ0xLR0VOX1JFR19CQVNFICsgMHg0KQorI2RlZmluZSBBUk1fSURMRUNUMgkJKENMS0dFTl9SRUdfQkFTRSArIDB4OCkKKyNkZWZpbmUgQVJNX0VXVVBDVAkJKENMS0dFTl9SRUdfQkFTRSArIDB4QykKKyNkZWZpbmUgQVJNX1JTVENUMQkJKENMS0dFTl9SRUdfQkFTRSArIDB4MTApCisjZGVmaW5lIEFSTV9SU1RDVDIJCShDTEtHRU5fUkVHX0JBU0UgKyAweDE0KQorI2RlZmluZSBBUk1fU1lTU1QJCShDTEtHRU5fUkVHX0JBU0UgKyAweDE4KQorI2RlZmluZSBBUk1fSURMRUNUMwkJKENMS0dFTl9SRUdfQkFTRSArIDB4MjQpCisKKyNkZWZpbmUgQ0tfUkFURUYJCTEKKyNkZWZpbmUgQ0tfSURMRUYJCTIKKyNkZWZpbmUgQ0tfRU5BQkxFRgkJNAorI2RlZmluZSBDS19TRUxFQ1RGCQk4CisjZGVmaW5lIFNFVEFSTV9JRExFX1NISUZUCisKKy8qIERQTEwgY29udHJvbCByZWdpc3RlcnMgKi8KKyNkZWZpbmUgRFBMTF9DVEwJCSgweGZmZmVjZjAwKQorCisvKiBEU1AgY2xvY2sgY29udHJvbCAqLworI2RlZmluZSBEU1BfQ09ORklHX1JFR19CQVNFICAgICAoMHhlMTAwODAwMCkKKyNkZWZpbmUgRFNQX0lETEVDVDEJCShEU1BfQ09ORklHX1JFR19CQVNFICsgMHg0KQorI2RlZmluZSBEU1BfSURMRUNUMgkJKERTUF9DT05GSUdfUkVHX0JBU0UgKyAweDgpCisKKy8qCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFVQTEQKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjZGVmaW5lIFVMUERfUkVHX0JBU0UJCSgweGZmZmUwODAwKQorI2RlZmluZSBVTFBEX0lUX1NUQVRVUwkJKFVMUERfUkVHX0JBU0UgKyAweDE0KQorI2RlZmluZSBVTFBEX0NMT0NLX0NUUkwJCShVTFBEX1JFR19CQVNFICsgMHgzMCkKKyMJZGVmaW5lIERJU19VU0JfUFZDSV9DTEsJCSgxIDw8IDUpCS8qIG5vIFVTQi9GQUMgc3luY2ggKi8KKyMJZGVmaW5lIFVTQl9NQ0xLX0VOCQkoMSA8PCA0KQkvKiBlbmFibGUgVzRfVVNCX0NMS08gKi8KKyNkZWZpbmUgVUxQRF9TT0ZUX1JFUQkJKFVMUERfUkVHX0JBU0UgKyAweDM0KQorIwlkZWZpbmUgU09GVF9VRENfUkVRCQkoMSA8PCA0KQorIwlkZWZpbmUgU09GVF9VU0JfQ0xLX1JFUQkJKDEgPDwgMykKKyMJZGVmaW5lIFNPRlRfRFBMTF9SRVEJCSgxIDw8IDApCisjZGVmaW5lIFVMUERfRFBMTF9DVFJMCQkoVUxQRF9SRUdfQkFTRSArIDB4M2MpCisjZGVmaW5lIFVMUERfU1RBVFVTX1JFUQkJKFVMUERfUkVHX0JBU0UgKyAweDQwKQorI2RlZmluZSBVTFBEX0FQTExfQ1RSTAkJKFVMUERfUkVHX0JBU0UgKyAweDRjKQorI2RlZmluZSBVTFBEX1BPV0VSX0NUUkwJCShVTFBEX1JFR19CQVNFICsgMHg1MCkKKyNkZWZpbmUgVUxQRF9TT0ZUX0RJU0FCTEVfUkVRX1JFRwkoVUxQRF9SRUdfQkFTRSArIDB4NjgpCisjCWRlZmluZSBESVNfTU1DMl9EUExMX1JFUQkoMSA8PCAxMSkKKyMJZGVmaW5lIERJU19NTUMxX0RQTExfUkVRCSgxIDw8IDEwKQorIwlkZWZpbmUgRElTX1VBUlQzX0RQTExfUkVRCSgxIDw8IDkpCisjCWRlZmluZSBESVNfVUFSVDJfRFBMTF9SRVEJKDEgPDwgOCkKKyMJZGVmaW5lIERJU19VQVJUMV9EUExMX1JFUQkoMSA8PCA3KQorIwlkZWZpbmUgRElTX1VTQl9IT1NUX0RQTExfUkVRCSgxIDw8IDYpCisjZGVmaW5lIFVMUERfU0RXX0NMS19ESVZfQ1RSTF9TRUwJKFVMUERfUkVHX0JBU0UgKyAweDc0KQorI2RlZmluZSBVTFBEX0NBTV9DTEtfQ1RSTAkoVUxQRF9SRUdfQkFTRSArIDB4N2MpCisKKy8qCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFdhdGNoZG9nIHRpbWVyCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisvKiBXYXRjaGRvZyB0aW1lciB3aXRoaW4gdGhlIE9NQVAzLjIgZ2lnYWNlbGwgKi8KKyNkZWZpbmUgT01BUF9NUFVfV0FUQ0hET0dfQkFTRQkoMHhmZmZlYzgwMCkKKyNkZWZpbmUgT01BUF9XRFRfVElNRVIJCShPTUFQX01QVV9XQVRDSERPR19CQVNFICsgMHgwKQorI2RlZmluZSBPTUFQX1dEVF9MT0FEX1RJTQkoT01BUF9NUFVfV0FUQ0hET0dfQkFTRSArIDB4NCkKKyNkZWZpbmUgT01BUF9XRFRfUkVBRF9USU0JKE9NQVBfTVBVX1dBVENIRE9HX0JBU0UgKyAweDQpCisjZGVmaW5lIE9NQVBfV0RUX1RJTUVSX01PREUJKE9NQVBfTVBVX1dBVENIRE9HX0JBU0UgKyAweDgpCisKKy8qCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIEludGVycnVwdHMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjZGVmaW5lIE9NQVBfSUgxX0JBU0UJCTB4ZmZmZWNiMDAKKyNkZWZpbmUgT01BUF9JSDJfQkFTRQkJMHhmZmZlMDAwMAorCisjZGVmaW5lIE9NQVBfSUgxX0lUUgkJKE9NQVBfSUgxX0JBU0UgKyAweDAwKQorI2RlZmluZSBPTUFQX0lIMV9NSVIJCShPTUFQX0lIMV9CQVNFICsgMHgwNCkKKyNkZWZpbmUgT01BUF9JSDFfU0lSX0lSUQkoT01BUF9JSDFfQkFTRSArIDB4MTApCisjZGVmaW5lIE9NQVBfSUgxX1NJUl9GSVEJKE9NQVBfSUgxX0JBU0UgKyAweDE0KQorI2RlZmluZSBPTUFQX0lIMV9DT05UUk9MCShPTUFQX0lIMV9CQVNFICsgMHgxOCkKKyNkZWZpbmUgT01BUF9JSDFfSUxSMAkJKE9NQVBfSUgxX0JBU0UgKyAweDFjKQorI2RlZmluZSBPTUFQX0lIMV9JU1IJCShPTUFQX0lIMV9CQVNFICsgMHg5YykKKworI2RlZmluZSBPTUFQX0lIMl9JVFIJCShPTUFQX0lIMl9CQVNFICsgMHgwMCkKKyNkZWZpbmUgT01BUF9JSDJfTUlSCQkoT01BUF9JSDJfQkFTRSArIDB4MDQpCisjZGVmaW5lIE9NQVBfSUgyX1NJUl9JUlEJKE9NQVBfSUgyX0JBU0UgKyAweDEwKQorI2RlZmluZSBPTUFQX0lIMl9TSVJfRklRCShPTUFQX0lIMl9CQVNFICsgMHgxNCkKKyNkZWZpbmUgT01BUF9JSDJfQ09OVFJPTAkoT01BUF9JSDJfQkFTRSArIDB4MTgpCisjZGVmaW5lIE9NQVBfSUgyX0lMUjAJCShPTUFQX0lIMl9CQVNFICsgMHgxYykKKyNkZWZpbmUgT01BUF9JSDJfSVNSCQkoT01BUF9JSDJfQkFTRSArIDB4OWMpCisKKyNkZWZpbmUgSVJRX0lUUl9SRUdfT0ZGU0VUCTB4MDAKKyNkZWZpbmUgSVJRX01JUl9SRUdfT0ZGU0VUCTB4MDQKKyNkZWZpbmUgSVJRX1NJUl9JUlFfUkVHX09GRlNFVAkweDEwCisjZGVmaW5lIElSUV9TSVJfRklRX1JFR19PRkZTRVQJMHgxNAorI2RlZmluZSBJUlFfQ09OVFJPTF9SRUdfT0ZGU0VUCTB4MTgKKyNkZWZpbmUgSVJRX0lTUl9SRUdfT0ZGU0VUCTB4OWMKKyNkZWZpbmUgSVJRX0lMUjBfUkVHX09GRlNFVAkweDFjCisjZGVmaW5lIElSUV9HTVJfUkVHX09GRlNFVAkweGEwCisKKy8qCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBTeXN0ZW0gY29udHJvbCByZWdpc3RlcnMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2RlZmluZSBNT0RfQ09ORl9DVFJMXzAJCTB4ZmZmZTEwODAKKyNkZWZpbmUgTU9EX0NPTkZfQ1RSTF8xCQkweGZmZmUxMTEwCisKKy8qCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBQaW4gbXVsdGlwbGV4aW5nIHJlZ2lzdGVycworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjZGVmaW5lIEZVTkNfTVVYX0NUUkxfMAkJMHhmZmZlMTAwMAorI2RlZmluZSBGVU5DX01VWF9DVFJMXzEJCTB4ZmZmZTEwMDQKKyNkZWZpbmUgRlVOQ19NVVhfQ1RSTF8yCQkweGZmZmUxMDA4CisjZGVmaW5lIENPTVBfTU9ERV9DVFJMXzAJMHhmZmZlMTAwYworI2RlZmluZSBGVU5DX01VWF9DVFJMXzMJCTB4ZmZmZTEwMTAKKyNkZWZpbmUgRlVOQ19NVVhfQ1RSTF80CQkweGZmZmUxMDE0CisjZGVmaW5lIEZVTkNfTVVYX0NUUkxfNQkJMHhmZmZlMTAxOAorI2RlZmluZSBGVU5DX01VWF9DVFJMXzYJCTB4ZmZmZTEwMUMKKyNkZWZpbmUgRlVOQ19NVVhfQ1RSTF83CQkweGZmZmUxMDIwCisjZGVmaW5lIEZVTkNfTVVYX0NUUkxfOAkJMHhmZmZlMTAyNAorI2RlZmluZSBGVU5DX01VWF9DVFJMXzkJCTB4ZmZmZTEwMjgKKyNkZWZpbmUgRlVOQ19NVVhfQ1RSTF9BCQkweGZmZmUxMDJDCisjZGVmaW5lIEZVTkNfTVVYX0NUUkxfQgkJMHhmZmZlMTAzMAorI2RlZmluZSBGVU5DX01VWF9DVFJMX0MJCTB4ZmZmZTEwMzQKKyNkZWZpbmUgRlVOQ19NVVhfQ1RSTF9ECQkweGZmZmUxMDM4CisjZGVmaW5lIFBVTExfRFdOX0NUUkxfMAkJMHhmZmZlMTA0MAorI2RlZmluZSBQVUxMX0RXTl9DVFJMXzEJCTB4ZmZmZTEwNDQKKyNkZWZpbmUgUFVMTF9EV05fQ1RSTF8yCQkweGZmZmUxMDQ4CisjZGVmaW5lIFBVTExfRFdOX0NUUkxfMwkJMHhmZmZlMTA0YworI2RlZmluZSBQVUxMX0RXTl9DVFJMXzQJCTB4ZmZmZTEwYWMKKworLyogT01BUC0xNjEwIHNwZWNpZmljIG11bHRpcGxleGluZyByZWdpc3RlcnMgKi8KKyNkZWZpbmUgRlVOQ19NVVhfQ1RSTF9FCQkweGZmZmUxMDkwCisjZGVmaW5lIEZVTkNfTVVYX0NUUkxfRgkJMHhmZmZlMTA5NAorI2RlZmluZSBGVU5DX01VWF9DVFJMXzEwCTB4ZmZmZTEwOTgKKyNkZWZpbmUgRlVOQ19NVVhfQ1RSTF8xMQkweGZmZmUxMDljCisjZGVmaW5lIEZVTkNfTVVYX0NUUkxfMTIJMHhmZmZlMTBhMAorI2RlZmluZSBQVV9QRF9TRUxfMAkJMHhmZmZlMTBiNAorI2RlZmluZSBQVV9QRF9TRUxfMQkJMHhmZmZlMTBiOAorI2RlZmluZSBQVV9QRF9TRUxfMgkJMHhmZmZlMTBiYworI2RlZmluZSBQVV9QRF9TRUxfMwkJMHhmZmZlMTBjMAorI2RlZmluZSBQVV9QRF9TRUxfNAkJMHhmZmZlMTBjNAorCisvKiBUaW1lcjMySyBmb3IgMTYxMCBhbmQgMTcxMCovCisjZGVmaW5lIE9NQVBfVElNRVIzMktfQkFTRQkweEZGRkJDNDAwCisKKy8qCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFRJUEIgYnVzIGludGVyZmFjZQorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNkZWZpbmUgVElQQl9QVUJMSUNfQ05UTF9CQVNFCQkweGZmZmVkMzAwCisjZGVmaW5lIE1QVV9QVUJMSUNfVElQQl9DTlRMCQkoVElQQl9QVUJMSUNfQ05UTF9CQVNFICsgMHg4KQorI2RlZmluZSBUSVBCX1BSSVZBVEVfQ05UTF9CQVNFCQkweGZmZmVjYTAwCisjZGVmaW5lIE1QVV9QUklWQVRFX1RJUEJfQ05UTAkJKFRJUEJfUFJJVkFURV9DTlRMX0JBU0UgKyAweDgpCisKKy8qCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBNUFVJIGludGVyZmFjZQorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjZGVmaW5lIE1QVUlfQkFTRQkJCSgweGZmZmVjOTAwKQorI2RlZmluZSBNUFVJX0NUUkwJCQkoTVBVSV9CQVNFICsgMHgwKQorI2RlZmluZSBNUFVJX0RFQlVHX0FERFIJCQkoTVBVSV9CQVNFICsgMHg0KQorI2RlZmluZSBNUFVJX0RFQlVHX0RBVEEJCQkoTVBVSV9CQVNFICsgMHg4KQorI2RlZmluZSBNUFVJX0RFQlVHX0ZMQUcJCQkoTVBVSV9CQVNFICsgMHhjKQorI2RlZmluZSBNUFVJX1NUQVRVU19SRUcJCQkoTVBVSV9CQVNFICsgMHgxMCkKKyNkZWZpbmUgTVBVSV9EU1BfU1RBVFVTCQkJKE1QVUlfQkFTRSArIDB4MTQpCisjZGVmaW5lIE1QVUlfRFNQX0JPT1RfQ09ORklHCQkoTVBVSV9CQVNFICsgMHgxOCkKKyNkZWZpbmUgTVBVSV9EU1BfQVBJX0NPTkZJRwkJKE1QVUlfQkFTRSArIDB4MWMpCisKKy8qCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBMRUQgUHVsc2UgR2VuZXJhdG9yCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNkZWZpbmUgT01BUF9MUEcxX0JBU0UJCQkweGZmZmJkMDAwCisjZGVmaW5lIE9NQVBfTFBHMl9CQVNFCQkJMHhmZmZiZDgwMAorI2RlZmluZSBPTUFQX0xQRzFfTENSCQkJKE9NQVBfTFBHMV9CQVNFICsgMHgwMCkKKyNkZWZpbmUgT01BUF9MUEcxX1BNUgkJCShPTUFQX0xQRzFfQkFTRSArIDB4MDQpCisjZGVmaW5lIE9NQVBfTFBHMl9MQ1IJCQkoT01BUF9MUEcyX0JBU0UgKyAweDAwKQorI2RlZmluZSBPTUFQX0xQRzJfUE1SCQkJKE9NQVBfTFBHMl9CQVNFICsgMHgwNCkKKworI2lmbmRlZiBfX0FTU0VNQkxFUl9fCisKKy8qCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFNlcmlhbCBwb3J0cworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNkZWZpbmUgT01BUF9VQVJUMV9CQVNFCQkodW5zaWduZWQgY2hhciAqKTB4ZmZmYjAwMDAKKyNkZWZpbmUgT01BUF9VQVJUMl9CQVNFCQkodW5zaWduZWQgY2hhciAqKTB4ZmZmYjA4MDAKKyNkZWZpbmUgT01BUF9VQVJUM19CQVNFCQkodW5zaWduZWQgY2hhciAqKTB4ZmZmYjk4MDAKKyNkZWZpbmUgT01BUF9NQVhfTlJfUE9SVFMJMworI2RlZmluZSBPTUFQMTUxMF9CQVNFX0JBVUQJKDEyMDAwMDAwLzE2KQorI2RlZmluZSBPTUFQMTZYWF9CQVNFX0JBVUQJKDQ4MDAwMDAwLzE2KQorCisjZGVmaW5lIGlzX29tYXBfcG9ydChwKQkoe2ludCBfX3JldCA9IDA7CQkJXAorCQkJaWYgKHAgPT0gSU9fQUREUkVTUyhPTUFQX1VBUlQxX0JBU0UpIHx8CVwKKwkJCSAgICBwID09IElPX0FERFJFU1MoT01BUF9VQVJUMl9CQVNFKSB8fAlcCisJCQkgICAgcCA9PSBJT19BRERSRVNTKE9NQVBfVUFSVDNfQkFTRSkpCVwKKwkJCQlfX3JldCA9IDE7CQkJXAorCQkJX19yZXQ7CQkJCQlcCisJCQl9KQorCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBQcm9jZXNzb3Igc3BlY2lmaWMgZGVmaW5lcworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpZmRlZiBDT05GSUdfQVJDSF9PTUFQNzMwCisjaW5jbHVkZSAib21hcDczMC5oIgorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9PTUFQMTUxMAorI2luY2x1ZGUgIm9tYXAxNTEwLmgiCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX09NQVAxNlhYCisjaW5jbHVkZSAib21hcDE2eHguaCIKKyNlbmRpZgorCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBCb2FyZCBzcGVjaWZpYyBkZWZpbmVzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaWZkZWYgQ09ORklHX01BQ0hfT01BUF9JTk5PVkFUT1IKKyNpbmNsdWRlICJib2FyZC1pbm5vdmF0b3IuaCIKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX01BQ0hfT01BUF9IMgorI2luY2x1ZGUgImJvYXJkLWgyLmgiCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19NQUNIX09NQVBfUEVSU0VVUzIKKyNpbmNsdWRlICJib2FyZC1wZXJzZXVzMi5oIgorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfTUFDSF9PTUFQX0gzCisjaW5jbHVkZSAiYm9hcmQtaDMuaCIKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX01BQ0hfT01BUF9INAorI2luY2x1ZGUgImJvYXJkLWg0LmgiCisjZXJyb3IgIlN1cHBvcnQgZm9yIEg0IGJvYXJkIG5vdCB5ZXQgaW1wbGVtZW50ZWQuIgorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfTUFDSF9PTUFQX09TSworI2luY2x1ZGUgImJvYXJkLW9zay5oIgorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfTUFDSF9WT0lDRUJMVUUKKyNpbmNsdWRlICJib2FyZC12b2ljZWJsdWUuaCIKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX01BQ0hfTkVUU1RBUgorI2luY2x1ZGUgImJvYXJkLW5ldHN0YXIuaCIKKyNlbmRpZgorCisjZW5kaWYgLyogIV9fQVNTRU1CTEVSX18gKi8KKworI2VuZGlmCS8qIF9fQVNNX0FSQ0hfT01BUF9IQVJEV0FSRV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2lvLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2lvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWM4YzlmYwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvaW8uaApAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvaW8uaAorICoKKyAqIElPIGRlZmluaXRpb25zIGZvciBUSSBPTUFQIHByb2Nlc3NvcnMgYW5kIGJvYXJkcworICoKKyAqIENvcGllZCBmcm9tIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC9pby5oCisgKiBDb3B5cmlnaHQgKEMpIDE5OTctMTk5OSBSdXNzZWxsIEtpbmcKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCisgKiBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVECisgKiBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4KKyAqIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKKyAqIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAorICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YKKyAqIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyAqIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCisgKiA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KKyAqCisgKiBNb2RpZmljYXRpb25zOgorICogIDA2LTEyLTE5OTcJUk1LCUNyZWF0ZWQuCisgKiAgMDctMDQtMTk5OQlSTUsJTWFqb3IgY2xlYW51cAorICovCisKKyNpZm5kZWYgX19BU01fQVJNX0FSQ0hfSU9fSAorI2RlZmluZSBfX0FTTV9BUk1fQVJDSF9JT19ICisKKyNkZWZpbmUgSU9fU1BBQ0VfTElNSVQgMHhmZmZmZmZmZgorCisvKgorICogV2UgZG9uJ3QgYWN0dWFsbHkgaGF2ZSByZWFsIElTQSBub3IgUENJIGJ1c2VzLCBidXQgdGhlcmUgaXMgc28gbWFueQorICogZHJpdmVycyBvdXQgdGhlcmUgdGhhdCBtaWdodCBqdXN0IHdvcmsgaWYgd2UgZmFrZSB0aGVtLi4uCisgKi8KKyNkZWZpbmUgX19pbyhhKQkJCSgodm9pZCBfX2lvbWVtICopKFBDSU9fQkFTRSArIChhKSkpCisjZGVmaW5lIF9fbWVtX3BjaShhKQkJKGEpCisjZGVmaW5lIF9fbWVtX2lzYShhKQkJKGEpCisKKy8qCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJL08gbWFwcGluZworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjZGVmaW5lIElPX1BIWVMJCQkweEZGRkIwMDAwCisjZGVmaW5lIElPX09GRlNFVAkJMHgwMTAwMDAwMAkvKiBWaXJ0dWFsIElPID0gMHhmZWZiMDAwMCAqLworI2RlZmluZSBJT19WSVJUCQkJKElPX1BIWVMgLSBJT19PRkZTRVQpCisjZGVmaW5lIElPX1NJWkUJCQkweDQwMDAwCisjZGVmaW5lIElPX0FERFJFU1MoeCkJCSgoeCkgLSBJT19PRkZTRVQpCisKKyNkZWZpbmUgUENJT19CQVNFCQkwCisKKyNkZWZpbmUgaW9fcDJ2KHgpICAgICAgICAgICAgICAgKCh4KSAtIElPX09GRlNFVCkKKyNkZWZpbmUgaW9fdjJwKHgpICAgICAgICAgICAgICAgKCh4KSArIElPX09GRlNFVCkKKworI2lmbmRlZiBfX0FTU0VNQkxFUl9fCisKKy8qCisgKiBGdW5jdGlvbnMgdG8gYWNjZXNzIHRoZSBPTUFQIElPIHJlZ2lvbgorICoKKyAqIE5PVEU6IC0gVXNlIG9tYXBfcmVhZC93cml0ZVtid2xdIGZvciBwaHlzaWNhbCByZWdpc3RlciBhZGRyZXNzZXMKKyAqCSAtIFVzZSBfX3Jhd19yZWFkL3dyaXRlW2J3bF0oKSBmb3IgdmlydHVhbCByZWdpc3RlciBhZGRyZXNzZXMKKyAqCSAtIFVzZSBJT19BRERSRVNTKHBoeXNfYWRkcikgdG8gY29udmVydCByZWdpc3RlcnMgdG8gdmlydHVhbCBhZGRyZXNzZXMKKyAqCSAtIERPIE5PVCB1c2UgaGFyZGNvZGVkIHZpcnR1YWwgYWRkcmVzc2VzIHRvIGFsbG93IGNoYW5naW5nIHRoZQorICoJICAgSU8gYWRkcmVzcyBzcGFjZSBhZ2FpbiBpZiBuZWVkZWQKKyAqLworI2RlZmluZSBvbWFwX3JlYWRiKGEpCQkoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICAqKUlPX0FERFJFU1MoYSkpCisjZGVmaW5lIG9tYXBfcmVhZHcoYSkJCSgqKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopSU9fQUREUkVTUyhhKSkKKyNkZWZpbmUgb21hcF9yZWFkbChhKQkJKCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICAgKilJT19BRERSRVNTKGEpKQorCisjZGVmaW5lIG9tYXBfd3JpdGViKHYsYSkJKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAgKilJT19BRERSRVNTKGEpID0gKHYpKQorI2RlZmluZSBvbWFwX3dyaXRldyh2LGEpCSgqKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopSU9fQUREUkVTUyhhKSA9ICh2KSkKKyNkZWZpbmUgb21hcF93cml0ZWwodixhKQkoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgICAqKUlPX0FERFJFU1MoYSkgPSAodikpCisKKy8qIDE2IGJpdCB1c2VzIExEUkgvU1RSSCwgYmFzZSArLy0gb2Zmc2V0XzggKi8KK3R5cGVkZWYgc3RydWN0IHsgdm9sYXRpbGUgdTE2IG9mZnNldFsyNTZdOyB9IF9fcmVnYmFzZTE2OworI2RlZmluZSBfX1JFR1YxNih2YWRkcikJCSgoX19yZWdiYXNlMTYgKikoKHZhZGRyKSZ+MHhmZikpIFwKKwkJCQkJLT5vZmZzZXRbKCh2YWRkcikmMHhmZik+PjFdCisjZGVmaW5lIF9fUkVHMTYocGFkZHIpICAgICAgICAgIF9fUkVHVjE2KGlvX3AydihwYWRkcikpCisKKy8qIDgvMzIgYml0IHVzZXMgTERSL1NUUiwgYmFzZSArLy0gb2Zmc2V0XzEyICovCit0eXBlZGVmIHN0cnVjdCB7IHZvbGF0aWxlIHU4IG9mZnNldFs0MDk2XTsgfSBfX3JlZ2Jhc2U4OworI2RlZmluZSBfX1JFR1Y4KHZhZGRyKQkJKChfX3JlZ2Jhc2U4ICAqKSgodmFkZHIpJn40MDk1KSkgXAorCQkJCQktPm9mZnNldFsoKHZhZGRyKSY0MDk1KT4+MF0KKyNkZWZpbmUgX19SRUc4KHBhZGRyKQkJX19SRUdWOChpb19wMnYocGFkZHIpKQorCit0eXBlZGVmIHN0cnVjdCB7IHZvbGF0aWxlIHUzMiBvZmZzZXRbNDA5Nl07IH0gX19yZWdiYXNlMzI7CisjZGVmaW5lIF9fUkVHVjMyKHZhZGRyKQkJKChfX3JlZ2Jhc2UzMiAqKSgodmFkZHIpJn40MDk1KSkgXAorCQkJCQktPm9mZnNldFsoKHZhZGRyKSY0MDk1KT4+Ml0KKyNkZWZpbmUgX19SRUczMihwYWRkcikJCV9fUkVHVjMyKGlvX3AydihwYWRkcikpCisKKyNlbHNlCisKKyNkZWZpbmUgX19SRUc4KHBhZGRyKQkJaW9fcDJ2KHBhZGRyKQorI2RlZmluZSBfX1JFRzE2KHBhZGRyKQkJaW9fcDJ2KHBhZGRyKQorI2RlZmluZSBfX1JFRzMyKHBhZGRyKQkJaW9fcDJ2KHBhZGRyKQorCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2lycXMuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvaXJxcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3MDFmZDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2lycXMuaApAQCAtMCwwICsxLDI1NSBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2lycXMuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIEdyZWcgTG9ubm9uIDIwMDEKKyAqICBVcGRhdGVkIGZvciBPTUFQLTE2MTAgYnkgVG9ueSBMaW5kZ3JlbiA8dG9ueUBhdG9taWRlLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCisgKgorICogTk9URTogVGhlIGludGVycnVwdCB2ZWN0b3JzIGZvciB0aGUgT01BUC0xNTA5LCBPTUFQLTE1MTAsIGFuZCBPTUFQLTE2MTAKKyAqCSBhcmUgZGlmZmVyZW50LgorICovCisKKyNpZm5kZWYgX19BU01fQVJDSF9PTUFQMTUxMF9JUlFTX0gKKyNkZWZpbmUgX19BU01fQVJDSF9PTUFQMTUxMF9JUlFTX0gKKworLyoKKyAqIElSUSBudW1iZXJzIGZvciBpbnRlcnJ1cHQgaGFuZGxlciAxCisgKgorICogTk9URTogU2VlIGFsc28gdGhlIE9NQVAtMTUxMCBhbmQgMTYxMCBzcGVjaWZpYyBJUlEgbnVtYmVycyBiZWxvdworICoKKyAqLworI2RlZmluZSBJTlRfSUgyX0lSUQkJMAorI2RlZmluZSBJTlRfQ0FNRVJBCQkxCisjZGVmaW5lIElOVF9GSVEJCQkzCisjZGVmaW5lIElOVF9SVERYCQk2CisjZGVmaW5lIElOVF9EU1BfTU1VX0FCT1JUCTcKKyNkZWZpbmUgSU5UX0hPU1QJCTgKKyNkZWZpbmUgSU5UX0FCT1JUCQk5CisjZGVmaW5lIElOVF9EU1BfTUFJTEJPWDEJMTAKKyNkZWZpbmUgSU5UX0RTUF9NQUlMQk9YMgkxMQorI2RlZmluZSBJTlRfQlJJREdFX1BSSVYJCTEzCisjZGVmaW5lIElOVF9HUElPX0JBTksxCQkxNAorI2RlZmluZSBJTlRfVUFSVDMJCTE1CisjZGVmaW5lIElOVF9USU1FUjMJCTE2CisjZGVmaW5lIElOVF9ETUFfQ0gwXzYJCTE5CisjZGVmaW5lIElOVF9ETUFfQ0gxXzcJCTIwCisjZGVmaW5lIElOVF9ETUFfQ0gyXzgJCTIxCisjZGVmaW5lIElOVF9ETUFfQ0gzCQkyMgorI2RlZmluZSBJTlRfRE1BX0NINAkJMjMKKyNkZWZpbmUgSU5UX0RNQV9DSDUJCTI0CisjZGVmaW5lIElOVF9ETUFfTENECQkyNQorI2RlZmluZSBJTlRfVElNRVIxCQkyNgorI2RlZmluZSBJTlRfV0RfVElNRVIJCTI3CisjZGVmaW5lIElOVF9CUklER0VfUFVCCQkyOAorI2RlZmluZSBJTlRfVElNRVIyCQkzMAorI2RlZmluZSBJTlRfTENEX0NUUkwJCTMxCisKKy8qCisgKiBPTUFQLTE1MTAgc3BlY2lmaWMgSVJRIG51bWJlcnMgZm9yIGludGVycnVwdCBoYW5kbGVyIDEKKyAqLworI2RlZmluZSBJTlRfMTUxMF9SRVMyCQkyCisjZGVmaW5lIElOVF8xNTEwX1NQSV9UWAkJNAorI2RlZmluZSBJTlRfMTUxMF9TUElfUlgJCTUKKyNkZWZpbmUgSU5UXzE1MTBfUkVTMTIJCTEyCisjZGVmaW5lIElOVF8xNTEwX0xCX01NVQkJMTcKKyNkZWZpbmUgSU5UXzE1MTBfUkVTMTgJCTE4CisjZGVmaW5lIElOVF8xNTEwX0xPQ0FMX0JVUwkyOQorCisvKgorICogT01BUC0xNjEwIHNwZWNpZmljIElSUSBudW1iZXJzIGZvciBpbnRlcnJ1cHQgaGFuZGxlciAxCisgKi8KKyNkZWZpbmUgSU5UXzE2MTBfSUgyX0ZJUQkyCisjZGVmaW5lIElOVF8xNjEwX01jQlNQMl9UWAk0CisjZGVmaW5lIElOVF8xNjEwX01jQlNQMl9SWAk1CisjZGVmaW5lIElOVF8xNjEwX0xDRF9MSU5FCTEyCisjZGVmaW5lIElOVF8xNjEwX0dQVElNRVIxCTE3CisjZGVmaW5lIElOVF8xNjEwX0dQVElNRVIyCTE4CisjZGVmaW5lIElOVF8xNjEwX1NTUl9GSUZPXzAJMjkKKworLyoKKyAqIE9NQVAtNzMwIHNwZWNpZmljIElSUSBudW1iZXJzIGZvciBpbnRlcnJ1cHQgaGFuZGxlciAxCisgKi8KKyNkZWZpbmUgSU5UXzczMF9JSDJfRklRCQkwCisjZGVmaW5lIElOVF83MzBfSUgyX0lSUQkJMQorI2RlZmluZSBJTlRfNzMwX1VTQl9OT05fSVNPCTIKKyNkZWZpbmUgSU5UXzczMF9VU0JfSVNPCQkzCisjZGVmaW5lIElOVF83MzBfSUNSCQk0CisjZGVmaW5lIElOVF83MzBfRUFDCQk1CisjZGVmaW5lIElOVF83MzBfR1BJT19CQU5LMQk2CisjZGVmaW5lIElOVF83MzBfR1BJT19CQU5LMgk3CisjZGVmaW5lIElOVF83MzBfR1BJT19CQU5LMwk4CisjZGVmaW5lIElOVF83MzBfTWNCU1AyVFgJMTAKKyNkZWZpbmUgSU5UXzczMF9NY0JTUDJSWAkxMQorI2RlZmluZSBJTlRfNzMwX01jQlNQMlJYX09WRgkxMgorI2RlZmluZSBJTlRfNzMwX0xDRF9MSU5FCTE0CisjZGVmaW5lIElOVF83MzBfR1NNX1BST1RFQ1QJMTUKKyNkZWZpbmUgSU5UXzczMF9USU1FUjMJCTE2CisjZGVmaW5lIElOVF83MzBfR1BJT19CQU5LNQkxNworI2RlZmluZSBJTlRfNzMwX0dQSU9fQkFOSzYJMTgKKyNkZWZpbmUgSU5UXzczMF9TUEdJT19XUgkyOQorCisvKgorICogSVJRIG51bWJlcnMgZm9yIGludGVycnVwdCBoYW5kbGVyIDIKKyAqCisgKiBOT1RFOiBTZWUgYWxzbyB0aGUgT01BUC0xNTEwIGFuZCAxNjEwIHNwZWNpZmljIElSUSBudW1iZXJzIGJlbG93CisgKi8KKyNkZWZpbmUgSUgyX0JBU0UJCTMyCisKKyNkZWZpbmUgSU5UX0tFWUJPQVJECQkoMSArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfdVdpcmVUWAkJKDIgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UX3VXaXJlUlgJCSgzICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF9JMkMJCQkoNCArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfTVBVSU8JCSg1ICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF9VU0JfSEhDXzEJCSg2ICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF9NY0JTUDNUWAkJKDEwICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF9NY0JTUDNSWAkJKDExICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF9NY0JTUDFUWAkJKDEyICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF9NY0JTUDFSWAkJKDEzICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF9VQVJUMQkJKDE0ICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF9VQVJUMgkJKDE1ICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF9CVF9NQ1NJMVRYCQkoMTYgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UX0JUX01DU0kxUlgJCSgxNyArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfVVNCX1cyRkMJCSgyMCArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfMVdJUkUJCSgyMSArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfT1NfVElNRVIJCSgyMiArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfTU1DCQkJKDIzICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF9HQVVHRV8zMksJCSgyNCArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfUlRDX1RJTUVSCQkoMjUgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UX1JUQ19BTEFSTQkJKDI2ICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF9NRU1fU1RJQ0sJCSgyNyArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfRFNQX01NVQkJKDI4ICsgSUgyX0JBU0UpCisKKy8qCisgKiBPTUFQLTE1MTAgc3BlY2lmaWMgSVJRIG51bWJlcnMgZm9yIGludGVycnVwdCBoYW5kbGVyIDIKKyAqLworI2RlZmluZSBJTlRfMTUxMF9PU18zMmtIel9USU1FUiAoMjIgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzE1MTBfQ09NX1NQSV9STwkoMzEgKyBJSDJfQkFTRSkKKworLyoKKyAqIE9NQVAtMTYxMCBzcGVjaWZpYyBJUlEgbnVtYmVycyBmb3IgaW50ZXJydXB0IGhhbmRsZXIgMgorICovCisjZGVmaW5lIElOVF8xNjEwX0ZBQwkJKDAgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzE2MTBfVVNCX0hIQ18yCSg3ICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF8xNjEwX1VTQl9PVEcJKDggKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzE2MTBfU29TU0kJCSg5ICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF8xNjEwX1NvU1NJX01BVENICSgxOSArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfMTYxMF9NY0JTUDJSWF9PRgkoMzEgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzE2MTBfU1RJCQkoMzIgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzE2MTBfU1RJX1dBS0VVUAkoMzMgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzE2MTBfR1BUSU1FUjMJKDM0ICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF8xNjEwX0dQVElNRVI0CSgzNSArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfMTYxMF9HUFRJTUVSNQkoMzYgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzE2MTBfR1BUSU1FUjYJKDM3ICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF8xNjEwX0dQVElNRVI3CSgzOCArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfMTYxMF9HUFRJTUVSOAkoMzkgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzE2MTBfR1BJT19CQU5LMgkoNDAgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzE2MTBfR1BJT19CQU5LMwkoNDEgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzE2MTBfTU1DMgkJKDQyICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF8xNjEwX0NGCQkoNDMgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzE2MTBfR1BJT19CQU5LNAkoNDggKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzE2MTBfU1BJCQkoNDkgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzE2MTBfRE1BX0NINgkoNTMgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzE2MTBfRE1BX0NINwkoNTQgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzE2MTBfRE1BX0NIOAkoNTUgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzE2MTBfRE1BX0NIOQkoNTYgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzE2MTBfRE1BX0NIMTAJKDU3ICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF8xNjEwX0RNQV9DSDExCSg1OCArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfMTYxMF9ETUFfQ0gxMgkoNTkgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzE2MTBfRE1BX0NIMTMJKDYwICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF8xNjEwX0RNQV9DSDE0CSg2MSArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfMTYxMF9ETUFfQ0gxNQkoNjIgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzE2MTBfTkFORAkJKDYzICsgSUgyX0JBU0UpCisKKy8qCisgKiBPTUFQLTczMCBzcGVjaWZpYyBJUlEgbnVtYmVycyBmb3IgaW50ZXJydXB0IGhhbmRsZXIgMgorICovCisjZGVmaW5lIElOVF83MzBfSFdfRVJST1JTCSgwICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF83MzBfTkZJUV9QV1JfRkFJTAkoMSArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX0NGQ0QJCSgyICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF83MzBfQ0ZJUkVRCQkoMyArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX0kyQwkJKDQgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzczMF9QQ0MJCSg1ICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF83MzBfTVBVX0VYVF9OSVJRCSg2ICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF83MzBfU1BJXzEwMEtfMQkoNyArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX1NZUkVOX1NQSQkoOCArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX1ZMWU5RCQkoOSArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX0dQSU9fQkFOSzQJKDEwICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF83MzBfTWNCU1AxVFgJKDExICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF83MzBfTWNCU1AxUlgJKDEyICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF83MzBfTWNCU1AxUlhfT0YJKDEzICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF83MzBfVUFSVF9NT0RFTV9JUkRBXzIgKDE0ICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF83MzBfVUFSVF9NT0RFTV8xCSgxNSArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX01DU0kJCSgxNiArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX3VXaXJlVFgJCSgxNyArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX3VXaXJlUlgJCSgxOCArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX1NNQ19DRAkJKDE5ICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF83MzBfU01DX0lSRVEJKDIwICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF83MzBfSERRXzFXSVJFCSgyMSArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX1RJTUVSMzJLCSgyMiArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX01NQ19TRElPCSgyMyArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX1VQTEQJCSgyNCArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX1VTQl9ISENfMQkoMjcgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzczMF9VU0JfSEhDXzIJKDI4ICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF83MzBfVVNCX0dFTkkJKDI5ICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF83MzBfVVNCX09URwkJKDMwICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF83MzBfQ0FNRVJBX0lGCSgzMSArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX1JORwkJKDMyICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF83MzBfRFVBTF9NT0RFX1RJTUVSICgzMyArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX0RCQl9SRl9FTgkoMzQgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzczMF9NUFVJT19LRVlQQUQJKDM1ICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF83MzBfU0hBMV9NRDUJKDM2ICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF83MzBfU1BJXzEwMEtfMgkoMzcgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzczMF9STkdfSURMRQkoMzggKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzczMF9NUFVJTwkJKDM5ICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF83MzBfTExQQ19MQ0RfQ1RSTF9DQU5fQkVfT0ZGCSg0MCArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX0xMUENfT0VfRkFMTElORyAoNDEgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzczMF9MTFBDX09FX1JJU0lORwkoNDIgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzczMF9MTFBDX1ZTWU5DCSg0MyArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX1dBS0VfVVBfUkVRCSg0NiArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX0RNQV9DSDYJCSg1MyArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX0RNQV9DSDcJCSg1NCArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX0RNQV9DSDgJCSg1NSArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX0RNQV9DSDkJCSg1NiArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX0RNQV9DSDEwCSg1NyArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX0RNQV9DSDExCSg1OCArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX0RNQV9DSDEyCSg1OSArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX0RNQV9DSDEzCSg2MCArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX0RNQV9DSDE0CSg2MSArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX0RNQV9DSDE1CSg2MiArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX05BTkQJCSg2MyArIElIMl9CQVNFKQorCisvKiBNYXguIDEyOCBsZXZlbCAyIElSUXMgKE9NQVAxNjEwKSwgMTkyIEdQSU9zIChPTUFQNzMwKSBhbmQKKyAqIDE2IE1QVUlPIGxpbmVzICovCisjZGVmaW5lIE9NQVBfTUFYX0dQSU9fTElORVMJMTkyCisjZGVmaW5lIElIX0dQSU9fQkFTRQkJKDEyOCArIElIMl9CQVNFKQorI2RlZmluZSBJSF9NUFVJT19CQVNFCQkoT01BUF9NQVhfR1BJT19MSU5FUyArIElIX0dQSU9fQkFTRSkKKyNkZWZpbmUgSUhfQk9BUkRfQkFTRQkJKDE2ICsgSUhfTVBVSU9fQkFTRSkKKworI2lmbmRlZiBfX0FTU0VNQkxZX18KK2V4dGVybiB2b2lkIG9tYXBfaW5pdF9pcnEodm9pZCk7CisjZW5kaWYKKworLyoKKyAqIFRoZSBkZWZpbml0aW9uIG9mIE5SX0lSUVMgaXMgaW4gYm9hcmQtc3BlY2lmaWMgaGVhZGVyIGZpbGUsIHdoaWNoIGlzCisgKiBpbmNsdWRlZCB2aWEgaGFyZHdhcmUuaAorICovCisjaW5jbHVkZSA8YXNtL2FyY2gvaGFyZHdhcmUuaD4KKworI2lmbmRlZiBOUl9JUlFTCisjZGVmaW5lIE5SX0lSUVMgICAgICAgICAgICAgICAgIElIX0JPQVJEX0JBU0UKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvbWNic3AuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvbWNic3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDViZGViCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9tY2JzcC5oCkBAIC0wLDAgKzEsMjU3IEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ncGlvLmgKKyAqCisgKiBEZWZpbmVzIGZvciBNdWx0aS1DaGFubmVsIEJ1ZmZlcmVkIFNlcmlhbCBQb3J0CisgKgorICogQ29weXJpZ2h0IChDKSAyMDAyIFJpZGdlUnVuLCBJbmMuCisgKiBBdXRob3I6IFN0ZXZlIEpvaG5zb24KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCisgKgorICovCisjaWZuZGVmIF9fQVNNX0FSQ0hfT01BUF9NQ0JTUF9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfT01BUF9NQ0JTUF9ICisKKyNpbmNsdWRlIDxhc20vYXJjaC9oYXJkd2FyZS5oPgorCisjZGVmaW5lIE9NQVA3MzBfTUNCU1AxX0JBU0UJMHhmZmZiMTAwMAorI2RlZmluZSBPTUFQNzMwX01DQlNQMl9CQVNFCTB4ZmZmYjE4MDAKKworI2RlZmluZSBPTUFQMTUxMF9NQ0JTUDFfQkFTRQkweGUxMDExODAwCisjZGVmaW5lIE9NQVAxNTEwX01DQlNQMl9CQVNFCTB4ZmZmYjEwMDAKKyNkZWZpbmUgT01BUDE1MTBfTUNCU1AzX0JBU0UJMHhlMTAxNzAwMAorCisjZGVmaW5lIE9NQVAxNjEwX01DQlNQMV9CQVNFCTB4ZTEwMTE4MDAKKyNkZWZpbmUgT01BUDE2MTBfTUNCU1AyX0JBU0UJMHhmZmZiMTAwMAorI2RlZmluZSBPTUFQMTYxMF9NQ0JTUDNfQkFTRQkweGUxMDE3MDAwCisKKyNkZWZpbmUgT01BUF9NQ0JTUF9SRUdfRFJSMgkweDAwCisjZGVmaW5lIE9NQVBfTUNCU1BfUkVHX0RSUjEJMHgwMgorI2RlZmluZSBPTUFQX01DQlNQX1JFR19EWFIyCTB4MDQKKyNkZWZpbmUgT01BUF9NQ0JTUF9SRUdfRFhSMQkweDA2CisjZGVmaW5lIE9NQVBfTUNCU1BfUkVHX1NQQ1IyCTB4MDgKKyNkZWZpbmUgT01BUF9NQ0JTUF9SRUdfU1BDUjEJMHgwYQorI2RlZmluZSBPTUFQX01DQlNQX1JFR19SQ1IyCTB4MGMKKyNkZWZpbmUgT01BUF9NQ0JTUF9SRUdfUkNSMQkweDBlCisjZGVmaW5lIE9NQVBfTUNCU1BfUkVHX1hDUjIJMHgxMAorI2RlZmluZSBPTUFQX01DQlNQX1JFR19YQ1IxCTB4MTIKKyNkZWZpbmUgT01BUF9NQ0JTUF9SRUdfU1JHUjIJMHgxNAorI2RlZmluZSBPTUFQX01DQlNQX1JFR19TUkdSMQkweDE2CisjZGVmaW5lIE9NQVBfTUNCU1BfUkVHX01DUjIJMHgxOAorI2RlZmluZSBPTUFQX01DQlNQX1JFR19NQ1IxCTB4MWEKKyNkZWZpbmUgT01BUF9NQ0JTUF9SRUdfUkNFUkEJMHgxYworI2RlZmluZSBPTUFQX01DQlNQX1JFR19SQ0VSQgkweDFlCisjZGVmaW5lIE9NQVBfTUNCU1BfUkVHX1hDRVJBCTB4MjAKKyNkZWZpbmUgT01BUF9NQ0JTUF9SRUdfWENFUkIJMHgyMgorI2RlZmluZSBPTUFQX01DQlNQX1JFR19QQ1IwCTB4MjQKKyNkZWZpbmUgT01BUF9NQ0JTUF9SRUdfUkNFUkMJMHgyNgorI2RlZmluZSBPTUFQX01DQlNQX1JFR19SQ0VSRAkweDI4CisjZGVmaW5lIE9NQVBfTUNCU1BfUkVHX1hDRVJDCTB4MkEKKyNkZWZpbmUgT01BUF9NQ0JTUF9SRUdfWENFUkQJMHgyQworI2RlZmluZSBPTUFQX01DQlNQX1JFR19SQ0VSRQkweDJFCisjZGVmaW5lIE9NQVBfTUNCU1BfUkVHX1JDRVJGCTB4MzAKKyNkZWZpbmUgT01BUF9NQ0JTUF9SRUdfWENFUkUJMHgzMgorI2RlZmluZSBPTUFQX01DQlNQX1JFR19YQ0VSRgkweDM0CisjZGVmaW5lIE9NQVBfTUNCU1BfUkVHX1JDRVJHCTB4MzYKKyNkZWZpbmUgT01BUF9NQ0JTUF9SRUdfUkNFUkgJMHgzOAorI2RlZmluZSBPTUFQX01DQlNQX1JFR19YQ0VSRwkweDNBCisjZGVmaW5lIE9NQVBfTUNCU1BfUkVHX1hDRVJICTB4M0MKKworI2RlZmluZSBPTUFQX01BWF9NQ0JTUF9DT1VOVCAzCisKKyNkZWZpbmUgT01BUF9NQ0JTUF9SRUFEKGJhc2UsIHJlZykJCV9fcmF3X3JlYWR3KChiYXNlKSArIE9NQVBfTUNCU1BfUkVHXyMjcmVnKQorI2RlZmluZSBPTUFQX01DQlNQX1dSSVRFKGJhc2UsIHJlZywgdmFsKQlfX3Jhd193cml0ZXcoKHZhbCksIChiYXNlKSArIE9NQVBfTUNCU1BfUkVHXyMjcmVnKQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKiogTWNCU1AgU1BDUjEgYml0IGRlZmluaXRpb25zICoqKioqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSBSUlNUCQkJMHgwMDAxCisjZGVmaW5lIFJSRFkJCQkweDAwMDIKKyNkZWZpbmUgUkZVTEwJCQkweDAwMDQKKyNkZWZpbmUgUlNZTkNfRVJSCQkweDAwMDgKKyNkZWZpbmUgUklOVE0odmFsdWUpCQkoKHZhbHVlKTw8NCkJLyogYml0cyA0OjUgKi8KKyNkZWZpbmUgQUJJUwkJCTB4MDA0MAorI2RlZmluZSBEWEVOQQkJCTB4MDA4MAorI2RlZmluZSBDTEtTVFAodmFsdWUpCQkoKHZhbHVlKTw8MTEpCS8qIGJpdHMgMTE6MTIgKi8KKyNkZWZpbmUgUkpVU1QodmFsdWUpCQkoKHZhbHVlKTw8MTMpCS8qIGJpdHMgMTM6MTQgKi8KKyNkZWZpbmUgRExCCQkJMHg4MDAwCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKiBNY0JTUCBTUENSMiBiaXQgZGVmaW5pdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lIFhSU1QJCTB4MDAwMQorI2RlZmluZSBYUkRZCQkweDAwMDIKKyNkZWZpbmUgWEVNUFRZCQkweDAwMDQKKyNkZWZpbmUgWFNZTkNfRVJSCTB4MDAwOAorI2RlZmluZSBYSU5UTSh2YWx1ZSkJKCh2YWx1ZSk8PDQpCQkvKiBiaXRzIDQ6NSAqLworI2RlZmluZSBHUlNUCQkweDAwNDAKKyNkZWZpbmUgRlJTVAkJMHgwMDgwCisjZGVmaW5lIFNPRlQJCTB4MDEwMAorI2RlZmluZSBGUkVFCQkweDAyMDAKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqIE1jQlNQIFBDUiBiaXQgZGVmaW5pdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgQ0xLUlAJCTB4MDAwMQorI2RlZmluZSBDTEtYUAkJMHgwMDAyCisjZGVmaW5lIEZTUlAJCTB4MDAwNAorI2RlZmluZSBGU1hQCQkweDAwMDgKKyNkZWZpbmUgRFJfU1RBVAkJMHgwMDEwCisjZGVmaW5lIERYX1NUQVQJCTB4MDAyMAorI2RlZmluZSBDTEtTX1NUQVQJMHgwMDQwCisjZGVmaW5lIFNDTEtNRQkJMHgwMDgwCisjZGVmaW5lIENMS1JNCQkweDAxMDAKKyNkZWZpbmUgQ0xLWE0JCTB4MDIwMAorI2RlZmluZSBGU1JNCQkweDA0MDAKKyNkZWZpbmUgRlNYTQkJMHgwODAwCisjZGVmaW5lIFJJT0VOCQkweDEwMDAKKyNkZWZpbmUgWElPRU4JCTB4MjAwMAorI2RlZmluZSBJRExFX0VOCQkweDQwMDAKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqIE1jQlNQIFJDUjEgYml0IGRlZmluaXRpb25zICoqKioqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgUldETEVOMSh2YWx1ZSkJCSgodmFsdWUpPDw1KQkvKiBCaXRzIDU6NyAqLworI2RlZmluZSBSRlJMRU4xKHZhbHVlKQkJKCh2YWx1ZSk8PDgpCS8qIEJpdHMgODoxNCAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKiogTWNCU1AgWENSMSBiaXQgZGVmaW5pdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSBYV0RMRU4xKHZhbHVlKQkJKCh2YWx1ZSk8PDUpCS8qIEJpdHMgNTo3ICovCisjZGVmaW5lIFhGUkxFTjEodmFsdWUpCQkoKHZhbHVlKTw8OCkJLyogQml0cyA4OjE0ICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKiogTWNCU1AgUkNSMiBiaXQgZGVmaW5pdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lIFJEQVRETFkodmFsdWUpCQkodmFsdWUpCQkvKiBCaXRzIDA6MSAqLworI2RlZmluZSBSRklHCQkJMHgwMDA0CisjZGVmaW5lIFJDT01QQU5EKHZhbHVlKQkJKCh2YWx1ZSk8PDMpCS8qIEJpdHMgMzo0ICovCisjZGVmaW5lIFJXRExFTjIodmFsdWUpCQkoKHZhbHVlKTw8NSkJLyogQml0cyA1OjcgKi8KKyNkZWZpbmUgUkZSTEVOMih2YWx1ZSkJCSgodmFsdWUpPDw4KQkvKiBCaXRzIDg6MTQgKi8KKyNkZWZpbmUgUlBIQVNFCQkJMHg4MDAwCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKiogTWNCU1AgWENSMiBiaXQgZGVmaW5pdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lIFhEQVRETFkodmFsdWUpCQkodmFsdWUpCQkvKiBCaXRzIDA6MSAqLworI2RlZmluZSBYRklHCQkJMHgwMDA0CisjZGVmaW5lIFhDT01QQU5EKHZhbHVlKQkJKCh2YWx1ZSk8PDMpCS8qIEJpdHMgMzo0ICovCisjZGVmaW5lIFhXRExFTjIodmFsdWUpCQkoKHZhbHVlKTw8NSkJLyogQml0cyA1OjcgKi8KKyNkZWZpbmUgWEZSTEVOMih2YWx1ZSkJCSgodmFsdWUpPDw4KQkvKiBCaXRzIDg6MTQgKi8KKyNkZWZpbmUgWFBIQVNFCQkJMHg4MDAwCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqIE1jQlNQIFNSR1IxIGJpdCBkZWZpbml0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lIENMS0dEVih2YWx1ZSkJCSh2YWx1ZSkJCS8qIEJpdHMgMDo3ICovCisjZGVmaW5lIEZXSUQodmFsdWUpCQkoKHZhbHVlKTw8OCkJLyogQml0cyA4OjE1ICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqIE1jQlNQIFNSR1IyIGJpdCBkZWZpbml0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lIEZQRVIodmFsdWUpCQkodmFsdWUpCQkvKiBCaXRzIDA6MTEgKi8KKyNkZWZpbmUgRlNHTQkJCTB4MTAwMAorI2RlZmluZSBDTEtTTQkJCTB4MjAwMAorI2RlZmluZSBDTEtTUAkJCTB4NDAwMAorI2RlZmluZSBHU1lOQwkJCTB4ODAwMAorCisvKioqKioqKioqKioqKioqKioqKioqKioqKiBNY0JTUCBNQ1IxIGJpdCBkZWZpbml0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSBSTUNNCQkJMHgwMDAxCisjZGVmaW5lIFJDQkxLKHZhbHVlKQkJKCh2YWx1ZSk8PDIpCS8qIEJpdHMgMjo0ICovCisjZGVmaW5lIFJQQUJMSyh2YWx1ZSkJCSgodmFsdWUpPDw1KQkvKiBCaXRzIDU6NiAqLworI2RlZmluZSBSUEJCTEsodmFsdWUpCQkoKHZhbHVlKTw8NykJLyogQml0cyA3OjggKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKiogTWNCU1AgTUNSMiBiaXQgZGVmaW5pdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgWE1DTSh2YWx1ZSkJCSh2YWx1ZSkJCS8qIEJpdHMgMDoxICovCisjZGVmaW5lIFhDQkxLKHZhbHVlKQkJKCh2YWx1ZSk8PDIpCS8qIEJpdHMgMjo0ICovCisjZGVmaW5lIFhQQUJMSyh2YWx1ZSkJCSgodmFsdWUpPDw1KQkvKiBCaXRzIDU6NiAqLworI2RlZmluZSBYUEJCTEsodmFsdWUpCQkoKHZhbHVlKTw8NykJLyogQml0cyA3OjggKi8KKworCisvKiB3ZSBkb24ndCBkbyBtdWx0aWNoYW5uZWwgZm9yIG5vdyAqLworc3RydWN0IG9tYXBfbWNic3BfcmVnX2NmZyB7CisJdTE2IHNwY3IyOworCXUxNiBzcGNyMTsKKwl1MTYgcmNyMjsKKwl1MTYgcmNyMTsKKwl1MTYgeGNyMjsKKwl1MTYgeGNyMTsKKwl1MTYgc3JncjI7CisJdTE2IHNyZ3IxOworCXUxNiBtY3IyOworCXUxNiBtY3IxOworCXUxNiBwY3IwOworCXUxNiByY2VyYzsKKwl1MTYgcmNlcmQ7CisJdTE2IHhjZXJjOworCXUxNiB4Y2VyZDsKKwl1MTYgcmNlcmU7CisJdTE2IHJjZXJmOworCXUxNiB4Y2VyZTsKKwl1MTYgeGNlcmY7CisJdTE2IHJjZXJnOworCXUxNiByY2VyaDsKKwl1MTYgeGNlcmc7CisJdTE2IHhjZXJoOworfTsKKwordHlwZWRlZiBlbnVtIHsKKwlPTUFQX01DQlNQMSA9IDAsCisJT01BUF9NQ0JTUDIsCisJT01BUF9NQ0JTUDMsCit9IG9tYXBfbWNic3BfaWQ7CisKK3R5cGVkZWYgZW51bSB7CisJT01BUF9NQ0JTUF9XT1JEXzggPSAwLAorCU9NQVBfTUNCU1BfV09SRF8xMiwKKwlPTUFQX01DQlNQX1dPUkRfMTYsCisJT01BUF9NQ0JTUF9XT1JEXzIwLAorCU9NQVBfTUNCU1BfV09SRF8yNCwKKwlPTUFQX01DQlNQX1dPUkRfMzIsCit9IG9tYXBfbWNic3Bfd29yZF9sZW5ndGg7CisKK3R5cGVkZWYgZW51bSB7CisJT01BUF9NQ0JTUF9DTEtfUklTSU5HID0gMCwKKwlPTUFQX01DQlNQX0NMS19GQUxMSU5HLAorfSBvbWFwX21jYnNwX2Nsa19wb2xhcml0eTsKKwordHlwZWRlZiBlbnVtIHsKKwlPTUFQX01DQlNQX0ZTX0FDVElWRV9ISUdIID0gMCwKKwlPTUFQX01DQlNQX0ZTX0FDVElWRV9MT1csCit9IG9tYXBfbWNic3BfZnNfcG9sYXJpdHk7CisKK3R5cGVkZWYgZW51bSB7CisJT01BUF9NQ0JTUF9DTEtfU1RQX01PREVfTk9fREVMQVkgPSAwLAorCU9NQVBfTUNCU1BfQ0xLX1NUUF9NT0RFX0RFTEFZLAorfSBvbWFwX21jYnNwX2Nsa19zdHBfbW9kZTsKKworCisvKioqKioqKiBTUEkgc3BlY2lmaWMgbW9kZSAqKioqKioqKioqLwordHlwZWRlZiBlbnVtIHsKKwlPTUFQX01DQlNQX1NQSV9NQVNURVIgPSAwLAorCU9NQVBfTUNCU1BfU1BJX1NMQVZFLAorfSBvbWFwX21jYnNwX3NwaV9tb2RlOworCitzdHJ1Y3Qgb21hcF9tY2JzcF9zcGlfY2ZnIHsKKwlvbWFwX21jYnNwX3NwaV9tb2RlCQlzcGlfbW9kZTsKKwlvbWFwX21jYnNwX2Nsa19wb2xhcml0eQkJcnhfY2xvY2tfcG9sYXJpdHk7CisJb21hcF9tY2JzcF9jbGtfcG9sYXJpdHkJCXR4X2Nsb2NrX3BvbGFyaXR5OworCW9tYXBfbWNic3BfZnNfcG9sYXJpdHkJCWZzeF9wb2xhcml0eTsKKwl1OAkJCQljbGtfZGl2OworCW9tYXBfbWNic3BfY2xrX3N0cF9tb2RlCQljbGtfc3RwX21vZGU7CisJb21hcF9tY2JzcF93b3JkX2xlbmd0aAkJd29yZF9sZW5ndGg7Cit9OworCit2b2lkIG9tYXBfbWNic3BfY29uZmlnKHVuc2lnbmVkIGludCBpZCwgY29uc3Qgc3RydWN0IG9tYXBfbWNic3BfcmVnX2NmZyAqIGNvbmZpZyk7CitpbnQgb21hcF9tY2JzcF9yZXF1ZXN0KHVuc2lnbmVkIGludCBpZCk7Cit2b2lkIG9tYXBfbWNic3BfZnJlZSh1bnNpZ25lZCBpbnQgaWQpOwordm9pZCBvbWFwX21jYnNwX3N0YXJ0KHVuc2lnbmVkIGludCBpZCk7Cit2b2lkIG9tYXBfbWNic3Bfc3RvcCh1bnNpZ25lZCBpbnQgaWQpOwordm9pZCBvbWFwX21jYnNwX3htaXRfd29yZCh1bnNpZ25lZCBpbnQgaWQsIHUzMiB3b3JkKTsKK3UzMiBvbWFwX21jYnNwX3JlY3Zfd29yZCh1bnNpZ25lZCBpbnQgaWQpOworCitpbnQgb21hcF9tY2JzcF94bWl0X2J1ZmZlcih1bnNpZ25lZCBpbnQgaWQsIGRtYV9hZGRyX3QgYnVmZmVyLCB1bnNpZ25lZCBpbnQgbGVuZ3RoKTsKK2ludCBvbWFwX21jYnNwX3JlY3ZfYnVmZmVyKHVuc2lnbmVkIGludCBpZCwgZG1hX2FkZHJfdCBidWZmZXIsIHVuc2lnbmVkIGludCBsZW5ndGgpOworCisvKiBTUEkgc3BlY2lmaWMgQVBJICovCit2b2lkIG9tYXBfbWNic3Bfc2V0X3NwaV9tb2RlKHVuc2lnbmVkIGludCBpZCwgY29uc3Qgc3RydWN0IG9tYXBfbWNic3Bfc3BpX2NmZyAqIHNwaV9jZmcpOworCisvKiBQb2xsZWQgcmVhZC93cml0ZSBmdW5jdGlvbnMgKi8KK2ludCBvbWFwX21jYnNwX3BvbGxyZWFkKHVuc2lnbmVkIGludCBpZCwgdTE2ICogYnVmKTsKK2ludCBvbWFwX21jYnNwX3BvbGx3cml0ZSh1bnNpZ25lZCBpbnQgaWQsIHUxNiBidWYpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvbWVtb3J5LmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL21lbW9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2YjU3ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL21lbW9yeS5oCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL21lbW9yeS5oCisgKgorICogTWVtb3J5IG1hcCBmb3IgT01BUC0xNTEwIGFuZCAxNjEwCisgKgorICogQ29weXJpZ2h0IChDKSAyMDAwIFJpZGdlUnVuLCBJbmMuCisgKiBBdXRob3I6IEdyZWcgTG9ubm9uIDxnbG9ubm9uQHJpZGdlcnVuLmNvbT4KKyAqCisgKiBUaGlzIGZpbGUgd2FzIGRlcml2ZWQgZnJvbSBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbnRlcmdyYXRvci9tZW1vcnkuaAorICogQ29weXJpZ2h0IChDKSAxOTk5IEFSTSBMaW1pdGVkCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91cgorICogb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRAorICogV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOCisgKiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCisgKiBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GCisgKiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisgKiB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAorICogNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX01FTU9SWV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfTUVNT1JZX0gKKworLyoKKyAqIFBoeXNpY2FsIERSQU0gb2Zmc2V0LgorICovCisjZGVmaW5lIFBIWVNfT0ZGU0VUCQkoMHgxMDAwMDAwMFVMKQorCisvKgorICogT01BUC0xNTEwIExvY2FsIEJ1cyBhZGRyZXNzIG9mZnNldAorICovCisjZGVmaW5lIE9NQVAxNTEwX0xCX09GRlNFVAkoMHgzMDAwMDAwMFVMKQorCisvKgorICogQ29udmVyc2lvbiBiZXR3ZWVuIFNEUkFNIGFuZCBmYWtlIFBDSSBidXMsIHVzZWQgYnkgVVNCCisgKiBOT1RFOiBQaHlzaWNhbCBhZGRyZXNzIG11c3QgYmUgY29udmVydGVkIHRvIExvY2FsIEJ1cyBhZGRyZXNzCisgKgkgb24gT01BUC0xNTEwIG9ubHkKKyAqLworCisvKgorICogQnVzIGFkZHJlc3MgaXMgcGh5c2ljYWwgYWRkcmVzcywgZXhjZXB0IGZvciBPTUFQLTE1MTAgTG9jYWwgQnVzLgorICovCisjZGVmaW5lIF9fdmlydF90b19idXMoeCkJX192aXJ0X3RvX3BoeXMoeCkKKyNkZWZpbmUgX19idXNfdG9fdmlydCh4KQlfX3BoeXNfdG9fdmlydCh4KQorCisvKgorICogT01BUC0xNTEwIGJ1cyBhZGRyZXNzIGlzIHRyYW5zbGF0ZWQgaW50byBhIExvY2FsIEJ1cyBhZGRyZXNzIGlmIHRoZQorICogT01BUCBidXMgdHlwZSBpcyBsYnVzLiBXZSBkbyB0aGUgYWRkcmVzcyB0cmFuc2xhdGlvbiBiYXNlZCBvbiB0aGUKKyAqIGRldmljZSBvdmVycmlkaW5nIHRoZSBkZWZhdWx0cyB1c2VkIGluIHRoZSBkbWEtbWFwcGluZyBBUEkuCisgKiBOb3RlIHRoYXQgdGhlIGlzX2xidXNfZGV2aWNlKCkgdGVzdCBpcyBub3QgdmVyeSBlZmZpY2llbnQgb24gMTUxMAorICogYmVjYXVzZSBvZiB0aGUgc3RybmNtcCgpLgorICovCisjaWZkZWYgQ09ORklHX0FSQ0hfT01BUDE1MTAKKworI2RlZmluZSB2aXJ0X3RvX2xidXMoeCkJCSgoeCkgLSBQQUdFX09GRlNFVCArIE9NQVAxNTEwX0xCX09GRlNFVCkKKyNkZWZpbmUgbGJ1c190b192aXJ0KHgpCQkoKHgpIC0gT01BUDE1MTBfTEJfT0ZGU0VUICsgUEFHRV9PRkZTRVQpCisjZGVmaW5lIGlzX2xidXNfZGV2aWNlKGRldikJKGNwdV9pc19vbWFwMTUxMCgpICYmIGRldiAmJiAoc3RybmNtcChkZXYtPmJ1c19pZCwgIm9oY2kiLCA0KSA9PSAwKSkKKworI2RlZmluZSBfX2FyY2hfcGFnZV90b19kbWEoZGV2LCBwYWdlKQkoe2lzX2xidXNfZGV2aWNlKGRldikgPyBcCisJCQkJCShkbWFfYWRkcl90KXZpcnRfdG9fbGJ1cyhwYWdlX2FkZHJlc3MocGFnZSkpIDogXAorCQkJCQkoZG1hX2FkZHJfdClfX3ZpcnRfdG9fYnVzKHBhZ2VfYWRkcmVzcyhwYWdlKSk7fSkKKworI2RlZmluZSBfX2FyY2hfZG1hX3RvX3ZpcnQoZGV2LCBhZGRyKQkoe2lzX2xidXNfZGV2aWNlKGRldikgPyBcCisJCQkJCWxidXNfdG9fdmlydChhZGRyKSA6IFwKKwkJCQkJX19idXNfdG9fdmlydChhZGRyKTt9KQorCisjZGVmaW5lIF9fYXJjaF92aXJ0X3RvX2RtYShkZXYsIGFkZHIpCSh7aXNfbGJ1c19kZXZpY2UoZGV2KSA/IFwKKwkJCQkJdmlydF90b19sYnVzKGFkZHIpIDogXAorCQkJCQlfX3ZpcnRfdG9fYnVzKGFkZHIpO30pCisKKyNlbmRpZgkvKiBDT05GSUdfQVJDSF9PTUFQMTUxMCAqLworCisjZGVmaW5lIFBIWVNfVE9fTklEKGFkZHIpICgwKQorI2VuZGlmCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvbXV4LmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL211eC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5Zjk5ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL211eC5oCkBAIC0wLDAgKzEsNTYxIEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9tdXguaAorICoKKyAqIFRhYmxlIG9mIHRoZSBPbWFwIHJlZ2lzdGVyIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgRlVOQ19NVVggYW5kCisgKiBQVUxMX0RXTiBjb21iaW5hdGlvbnMuCisgKgorICogQ29weXJpZ2h0IChDKSAyMDAzIE5va2lhIENvcnBvcmF0aW9uCisgKgorICogV3JpdHRlbiBieSBUb255IExpbmRncmVuIDx0b255LmxpbmRncmVuQG5va2lhLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCisgKgorICogTk9URTogUGxlYXNlIHVzZSB0aGUgZm9sbG93aW5nIG5hbWluZyBzdHlsZSBmb3IgbmV3IHBpbiBlbnRyaWVzLgorICoJIEZvciBleGFtcGxlLCBXOF8xNjEwX01NQzJfREFUMCwgd2hlcmU6CisgKgkgLSBXOAkgICAgID0gYmFsbAorICoJIC0gMTYxMAkgICAgID0gMTUxMCBvciAxNjEwLCBub25lIGlmIGNvbW1vbiBmb3IgYm90aCAxNTEwIGFuZCAxNjEwCisgKgkgLSBNTUMyX0RBVDAgPSBmdW5jdGlvbgorICoKKyAqIENoYW5nZSBsb2c6CisgKiAgIEFkZGVkIGVudHJ5IGZvciB0aGUgSTJDIGludGVyZmFjZS4gKDAyRmViIDIwMDQpCisgKiAgIENvcHlyaWdodCAoQykgMjAwNCBUZXhhcyBJbnN0cnVtZW50cworICoKKyAqICAgQWRkZWQgZW50cnkgZm9yIHRoZSBrZXlwYWQgYW5kIHV3aXJlIENTMS4gKDA5TWFyIDIwMDQpCisgKiAgIENvcHlyaWdodCAoQykgMjAwNCBUZXhhcyBJbnN0cnVtZW50cworICoKKyAqLworCisjaWZuZGVmIF9fQVNNX0FSQ0hfTVVYX0gKKyNkZWZpbmUgX19BU01fQVJDSF9NVVhfSAorCisjZGVmaW5lIFBVX1BEX1NFTF9OQQkJMAkvKiBObyBwdV9wZCByZWcgYXZhaWxhYmxlICovCisjZGVmaW5lIFBVTExfRFdOX0NUUkxfTkEJMAkvKiBObyBwdWxsLWRvd24gY29udHJvbCBuZWVkZWQgKi8KKworI2lmZGVmCUNPTkZJR19PTUFQX01VWF9ERUJVRworI2RlZmluZSBNVVhfUkVHKHJlZywgbW9kZV9vZmZzZXQsIG1vZGUpIC5tdXhfcmVnX25hbWUgPSAiRlVOQ19NVVhfQ1RSTF8iI3JlZywgXAorCQkJCQkubXV4X3JlZyA9IEZVTkNfTVVYX0NUUkxfIyNyZWcsIFwKKwkJCQkJLm1hc2tfb2Zmc2V0ID0gbW9kZV9vZmZzZXQsIFwKKwkJCQkJLm1hc2sgPSBtb2RlLAorCisjZGVmaW5lIFBVTExfUkVHKHJlZywgYml0LCBzdGF0dXMpCS5wdWxsX25hbWUgPSAiUFVMTF9EV05fQ1RSTF8iI3JlZywgXAorCQkJCQkucHVsbF9yZWcgPSBQVUxMX0RXTl9DVFJMXyMjcmVnLCBcCisJCQkJCS5wdWxsX2JpdCA9IGJpdCwgXAorCQkJCQkucHVsbF92YWwgPSBzdGF0dXMsCisKKyNkZWZpbmUgUFVfUERfUkVHKHJlZywgc3RhdHVzKQkJLnB1X3BkX25hbWUgPSAiUFVfUERfU0VMXyIjcmVnLCBcCisJCQkJCS5wdV9wZF9yZWcgPSBQVV9QRF9TRUxfIyNyZWcsIFwKKwkJCQkJLnB1X3BkX3ZhbCA9IHN0YXR1cywKKworI2Vsc2UKKworI2RlZmluZSBNVVhfUkVHKHJlZywgbW9kZV9vZmZzZXQsIG1vZGUpIC5tdXhfcmVnID0gRlVOQ19NVVhfQ1RSTF8jI3JlZywgXAorCQkJCQkubWFza19vZmZzZXQgPSBtb2RlX29mZnNldCwgXAorCQkJCQkubWFzayA9IG1vZGUsCisKKyNkZWZpbmUgUFVMTF9SRUcocmVnLCBiaXQsIHN0YXR1cykJLnB1bGxfcmVnID0gUFVMTF9EV05fQ1RSTF8jI3JlZywgXAorCQkJCQkucHVsbF9iaXQgPSBiaXQsIFwKKwkJCQkJLnB1bGxfdmFsID0gc3RhdHVzLAorCisjZGVmaW5lIFBVX1BEX1JFRyhyZWcsIHN0YXR1cykJCS5wdV9wZF9yZWcgPSBQVV9QRF9TRUxfIyNyZWcsIFwKKwkJCQkJLnB1X3BkX3ZhbCA9IHN0YXR1cywKKworI2VuZGlmIC8qIENPTkZJR19PTUFQX01VWF9ERUJVRyAqLworCisjZGVmaW5lIE1VWF9DRkcoZGVzYywgbXV4X3JlZywgbW9kZV9vZmZzZXQsIG1vZGUsCVwKKwkJcHVsbF9yZWcsIHB1bGxfYml0LCBwdWxsX3N0YXR1cywJXAorCQlwdV9wZF9yZWcsIHB1X3BkX3N0YXR1cywgZGVidWdfc3RhdHVzKQlcCit7CQkJCQkJCVwKKwkubmFtZSA9CSBkZXNjLAkJCQkJXAorCS5kZWJ1ZyA9IGRlYnVnX3N0YXR1cywJCQkJXAorCU1VWF9SRUcobXV4X3JlZywgbW9kZV9vZmZzZXQsIG1vZGUpCQlcCisJUFVMTF9SRUcocHVsbF9yZWcsIHB1bGxfYml0LCBwdWxsX3N0YXR1cykJXAorCVBVX1BEX1JFRyhwdV9wZF9yZWcsIHB1X3BkX3N0YXR1cykJCVwKK30sCisKKyNkZWZpbmUgUFVMTF9ESVNBQkxFRAkwCisjZGVmaW5lIFBVTExfRU5BQkxFRAkxCisKKyNkZWZpbmUgUFVMTF9ET1dOCTAKKyNkZWZpbmUgUFVMTF9VUAkJMQorCit0eXBlZGVmIHN0cnVjdCB7CisJY2hhciAqbmFtZTsKKwl1bnNpZ25lZCBjaGFyIGJ1c3k7CisJdW5zaWduZWQgY2hhciBkZWJ1ZzsKKworCWNvbnN0IGNoYXIgKm11eF9yZWdfbmFtZTsKKwljb25zdCB1bnNpZ25lZCBpbnQgbXV4X3JlZzsKKwljb25zdCB1bnNpZ25lZCBjaGFyIG1hc2tfb2Zmc2V0OworCWNvbnN0IHVuc2lnbmVkIGNoYXIgbWFzazsKKworCWNvbnN0IGNoYXIgKnB1bGxfbmFtZTsKKwljb25zdCB1bnNpZ25lZCBpbnQgcHVsbF9yZWc7CisJY29uc3QgdW5zaWduZWQgY2hhciBwdWxsX3ZhbDsKKwljb25zdCB1bnNpZ25lZCBjaGFyIHB1bGxfYml0OworCisJY29uc3QgY2hhciAqcHVfcGRfbmFtZTsKKwljb25zdCB1bnNpZ25lZCBpbnQgcHVfcGRfcmVnOworCWNvbnN0IHVuc2lnbmVkIGNoYXIgcHVfcGRfdmFsOworfSByZWdfY2ZnX3NldDsKKworLyoKKyAqIExvb2t1cCB0YWJsZSBmb3IgRlVOQ19NVVggYW5kIFBVTExfRFdOIHJlZ2lzdGVyIGNvbWJpbmF0aW9ucyBmb3IgZWFjaAorICogZGV2aWNlLiBTZWUgYWxzbyByZWdfY2ZnX3RhYmxlIGJlbG93IGZvciB0aGUgcmVnaXN0ZXIgdmFsdWVzLgorICovCit0eXBlZGVmIGVudW0geworCS8qIFVBUlQxIChCVF9VQVJUX0dBVElORykqLworCVVBUlQxX1RYID0gMCwKKwlVQVJUMV9SVFMsCisKKwkvKiBVQVJUMiAoQ09NX1VBUlRfR0FUSU5HKSovCisJVUFSVDJfVFgsCisJVUFSVDJfUlgsCisJVUFSVDJfQ1RTLAorCVVBUlQyX1JUUywKKworCS8qIFVBUlQzIChHSUdBX1VBUlRfR0FUSU5HKSAqLworCVVBUlQzX1RYLAorCVVBUlQzX1JYLAorCVVBUlQzX0NUUywKKwlVQVJUM19SVFMsCisJVUFSVDNfQ0xLUkVRLAorCVVBUlQzX0JDTEssCS8qIDEyTUh6IGNsb2NrIG91dCAqLworCVkxNV8xNjEwX1VBUlQzX1JUUywKKworCS8qIFBXVCAmIFBXTCAqLworCVBXVCwKKwlQV0wsCisKKwkvKiBVU0IgbWFzdGVyIGdlbmVyaWMgKi8KKwlSMThfVVNCX1ZCVVMsCisJUjE4XzE1MTBfVVNCX0dQSU8wLAorCVc0X1VTQl9QVUVOLAorCVc0X1VTQl9DTEtPLAorCVc0X1VTQl9ISUdIWiwKKwlXNF9HUElPNTgsCisKKwkvKiBVU0IxIG1hc3RlciAqLworCVVTQjFfU1VTUCwKKwlVU0IxX1NFTywKKwlXMTNfMTYxMF9VU0IxX1NFMCwKKwlVU0IxX1RYRU4sCisJVVNCMV9UWEQsCisJVVNCMV9WUCwKKwlVU0IxX1ZNLAorCVVTQjFfUkNWLAorCVVTQjFfU1BFRUQsCisJUjEzXzE2MTBfVVNCMV9TUEVFRCwKKwlSMTNfMTcxMF9VU0IxX1NFMCwKKworCS8qIFVTQjIgbWFzdGVyICovCisJVVNCMl9TVVNQLAorCVVTQjJfVlAsCisJVVNCMl9UWEVOLAorCVVTQjJfVk0sCisJVVNCMl9SQ1YsCisJVVNCMl9TRU8sCisJVVNCMl9UWEQsCisKKwkvKiBPTUFQLTE1MTAgR1BJTyAqLworCVIxOF8xNTEwX0dQSU8wLAorCVIxOV8xNTEwX0dQSU8xLAorCU0xNF8xNTEwX0dQSU8yLAorCisJLyogT01BUDE2MTAgR1BJTyAqLworCVAxOF8xNjEwX0dQSU8zLAorCVkxNV8xNjEwX0dQSU8xNywKKworCS8qIE9NQVAtMTcxMCBHUElPICovCisJUjE4XzE3MTBfR1BJTzAsCisJVjJfMTcxMF9HUElPMTAsCisJTjIxXzE3MTBfR1BJTzE0LAorCVcxNV8xNzEwX0dQSU80MCwKKworCS8qIE1QVUlPICovCisJTVBVSU8yLAorCU1QVUlPNCwKKwlNUFVJTzUsCisJVDIwXzE2MTBfTVBVSU81LAorCVcxMV8xNjEwX01QVUlPNiwKKwlWMTBfMTYxMF9NUFVJTzcsCisJVzExXzE2MTBfTVBVSU85LAorCVYxMF8xNjEwX01QVUlPMTAsCisJVzEwXzE2MTBfTVBVSU8xMSwKKwlFMjBfMTYxMF9NUFVJTzEzLAorCVUyMF8xNjEwX01QVUlPMTQsCisJRTE5XzE2MTBfTVBVSU8xNSwKKworCS8qIE1DQlNQMiAqLworCU1DQlNQMl9DTEtSLAorCU1DQlNQMl9DTEtYLAorCU1DQlNQMl9EUiwKKwlNQ0JTUDJfRFgsCisJTUNCU1AyX0ZTUiwKKwlNQ0JTUDJfRlNYLAorCisJLyogTUNCU1AzICovCisJTUNCU1AzX0NMS1gsCisKKwkvKiBNaXNjIGJhbGxvdXRzICovCisJQkFMTE9VVF9WOF9BUk1JTzMsCisKKwkvKiBPTUFQLTE2MTAgTU1DMiAqLworCVc4XzE2MTBfTU1DMl9EQVQwLAorCVY4XzE2MTBfTU1DMl9EQVQxLAorCVcxNV8xNjEwX01NQzJfREFUMiwKKwlSMTBfMTYxMF9NTUMyX0RBVDMsCisJWTEwXzE2MTBfTU1DMl9DTEssCisJWThfMTYxMF9NTUMyX0NNRCwKKwlWOV8xNjEwX01NQzJfQ01ERElSLAorCVY1XzE2MTBfTU1DMl9EQVRESVIwLAorCVcxOV8xNjEwX01NQzJfREFURElSMSwKKwlSMThfMTYxMF9NTUMyX0NMS0lOLAorCisJLyogT01BUC0xNjEwIEV4dGVybmFsIFRyYWNlIEludGVyZmFjZSAqLworCU0xOV8xNjEwX0VUTV9QU1RBVDAsCisJTDE1XzE2MTBfRVRNX1BTVEFUMSwKKwlMMThfMTYxMF9FVE1fUFNUQVQyLAorCUwxOV8xNjEwX0VUTV9EMCwKKwlKMTlfMTYxMF9FVE1fRDYsCisJSjE4XzE2MTBfRVRNX0Q3LAorCisJLyogT01BUC0xNjEwIEdQSU8gKi8KKwlQMjBfMTYxMF9HUElPNCwKKwlWOV8xNjEwX0dQSU83LAorCVc4XzE2MTBfR1BJTzksCisJTjE5XzE2MTBfR1BJTzEzLAorCVAxMF8xNjEwX0dQSU8yMiwKKwlWNV8xNjEwX0dQSU8yNCwKKwlBQTIwXzE2MTBfR1BJT180MSwKKwlXMTlfMTYxMF9HUElPNDgsCisJTTdfMTYxMF9HUElPNjIsCisKKwkvKiBPTUFQLTE2MTAgdVdpcmUgKi8KKwlWMTlfMTYxMF9VV0lSRV9TQ0xLLAorCVUxOF8xNjEwX1VXSVJFX1NESSwKKwlXMjFfMTYxMF9VV0lSRV9TRE8sCisJTjE0XzE2MTBfVVdJUkVfQ1MwLAorCVAxNV8xNjEwX1VXSVJFX0NTMCwKKwlOMTVfMTYxMF9VV0lSRV9DUzEsCisKKwkvKiBPTUFQLTE2MTAgRmxhc2ggKi8KKwlMM18xNjEwX0ZMQVNIX0NTMkJfT0UsCisJTThfMTYxMF9GTEFTSF9DUzJCX1dFLAorCisJLyogRmlyc3QgTU1DICovCisJTU1DX0NNRCwKKwlNTUNfREFUMSwKKwlNTUNfREFUMiwKKwlNTUNfREFUMCwKKwlNTUNfQ0xLLAorCU1NQ19EQVQzLAorCisJLyogT01BUC0xNzEwIE1NQyBDTURESVIgYW5kIERBVERJUjAgKi8KKwlNMTVfMTcxMF9NTUNfQ0xLSSwKKwlQMTlfMTcxMF9NTUNfQ01ERElSLAorCVAyMF8xNzEwX01NQ19EQVRESVIwLAorCisJLyogT01BUC0xNjEwIFVTQjAgYWx0ZXJuYXRlIHBpbiBjb25maWd1cmF0aW9uICovCisJVzlfVVNCMF9UWEVOLAorCUFBOV9VU0IwX1ZQLAorCVk1X1VTQjBfUkNWLAorCVI5X1VTQjBfVk0sCisJVjZfVVNCMF9UWEQsCisJVzVfVVNCMF9TRTAsCisJVjlfVVNCMF9TUEVFRCwKKwlWOV9VU0IwX1NVU1AsCisKKwkvKiBVU0IyICovCisJVzlfVVNCMl9UWEVOLAorCUFBOV9VU0IyX1ZQLAorCVk1X1VTQjJfUkNWLAorCVI5X1VTQjJfVk0sCisJVjZfVVNCMl9UWEQsCisJVzVfVVNCMl9TRTAsCisKKwkvKiBVQVJUMSAxNjEwICovCisKKwlSMTNfMTYxMF9VQVJUMV9UWCwKKwlWMTRfMTYxMF9VQVJUMV9SWCwKKwlSMTRfMTYxMF9VQVJUMV9DVFMsCisJQUExNV8xNjEwX1VBUlQxX1JUUywKKworCS8qIEkyQyBPTUFQLTE2MTAgKi8KKwlJMkNfU0NMLAorCUkyQ19TREEsCisKKwkvKiBLZXlwYWQgKi8KKwlGMThfMTYxMF9LQkMwLAorCUQyMF8xNjEwX0tCQzEsCisJRDE5XzE2MTBfS0JDMiwKKwlFMThfMTYxMF9LQkMzLAorCUMyMV8xNjEwX0tCQzQsCisJRzE4XzE2MTBfS0JSMCwKKwlGMTlfMTYxMF9LQlIxLAorCUgxNF8xNjEwX0tCUjIsCisJRTIwXzE2MTBfS0JSMywKKwlFMTlfMTYxMF9LQlI0LAorCU4xOV8xNjEwX0tCUjUsCisKKwkvKiBQb3dlciBtYW5hZ2VtZW50ICovCisJVDIwXzE2MTBfTE9XX1BXUiwKKworCS8qIE1DTEsgU2V0dGluZ3MgKi8KKwlWNV8xNzEwX01DTEtfT04sCisJVjVfMTcxMF9NQ0xLX09GRiwKKwlSMTBfMTYxMF9NQ0xLX09OLAorCVIxMF8xNjEwX01DTEtfT0ZGLAorCisJLyogQ29tcGFjdEZsYXNoIGNvbnRyb2xsZXIgKi8KKwlQMTFfMTYxMF9DRl9DRDIsCisJUjExXzE2MTBfQ0ZfSU9JUzE2LAorCVYxMF8xNjEwX0NGX0lSRVEsCisJVzEwXzE2MTBfQ0ZfUkVTRVQsCisJVzExXzE2MTBfQ0ZfQ0QxLAorfSByZWdfY2ZnX3Q7CisKKyNpZiBkZWZpbmVkKF9fTVVYX0NfXykgJiYgZGVmaW5lZChDT05GSUdfT01BUF9NVVgpCisKKy8qCisgKiBUYWJsZSBvZiB2YXJpb3VzIEZVTkNfTVVYIGFuZCBQVUxMX0RXTiBjb21iaW5hdGlvbnMgZm9yIGVhY2ggZGV2aWNlLgorICogU2VlIGFsc28gcmVnX2NmZ190IGFib3ZlIGZvciB0aGUgbG9va3VwIHRhYmxlLgorICovCitzdGF0aWMgcmVnX2NmZ19zZXQgX19pbml0ZGF0YV9vcl9tb2R1bGUKK3JlZ19jZmdfdGFibGVbXSA9IHsKKy8qCisgKgkgZGVzY3JpcHRpb24JCW11eCAgbW9kZSAgIG11eAkgcHVsbCBwdWxsICBwdWxsICBwdV9wZAkgcHUgIGRiZworICoJCQkJcmVnICBvZmZzZXQgbW9kZSByZWcgIGJpdCAgIGVuYQkgIHJlZworICovCitNVVhfQ0ZHKCJVQVJUMV9UWCIsCQkgOSwgICAyMSwgICAgMSwJICAyLCAgIDMsICAgMCwJIE5BLAkgMCwgIDApCitNVVhfQ0ZHKCJVQVJUMV9SVFMiLAkJIDksICAgMTIsICAgIDEsCSAgMiwgICAwLCAgIDAsCSBOQSwJIDAsICAwKQorCisvKiBVQVJUMiAoQ09NX1VBUlRfR0FUSU5HKSwgY29uZmxpY3RzIHdpdGggVVNCMiAqLworTVVYX0NGRygiVUFSVDJfVFgiLAkJIEMsICAgMjcsICAgIDEsCSAgMywgICAzLCAgIDAsCSBOQSwJIDAsICAwKQorTVVYX0NGRygiVUFSVDJfUlgiLAkJIEMsICAgMTgsICAgIDAsCSAgMywgICAxLCAgIDEsCSBOQSwJIDAsICAwKQorTVVYX0NGRygiVUFSVDJfQ1RTIiwJCSBDLCAgIDIxLCAgICAwLAkgIDMsICAgMSwgICAxLAkgTkEsCSAwLCAgMCkKK01VWF9DRkcoIlVBUlQyX1JUUyIsCQkgQywgICAyNCwgICAgMSwJICAzLCAgIDIsICAgMCwJIE5BLAkgMCwgIDApCisKKy8qIFVBUlQzIChHSUdBX1VBUlRfR0FUSU5HKSAqLworTVVYX0NGRygiVUFSVDNfVFgiLAkJIDYsICAgIDAsICAgIDEsCSAgMCwgIDMwLCAgIDAsCSBOQSwJIDAsICAwKQorTVVYX0NGRygiVUFSVDNfUlgiLAkJIDYsICAgIDMsICAgIDAsCSAgMCwgIDMxLCAgIDEsCSBOQSwJIDAsICAwKQorTVVYX0NGRygiVUFSVDNfQ1RTIiwJCSA1LCAgIDEyLCAgICAyLAkgIDAsICAyNCwgICAwLAkgTkEsCSAwLCAgMCkKK01VWF9DRkcoIlVBUlQzX1JUUyIsCQkgNSwgICAxNSwgICAgMiwJICAwLCAgMjUsICAgMCwJIE5BLAkgMCwgIDApCitNVVhfQ0ZHKCJVQVJUM19DTEtSRVEiLAkJIDksICAgMjcsICAgIDAsCSAgMiwgICA1LCAgIDAsCSBOQSwJIDAsICAwKQorTVVYX0NGRygiVUFSVDNfQkNMSyIsCQkgQSwgICAgMCwgICAgMCwJICAyLCAgIDYsICAgMCwJIE5BLAkgMCwgIDApCitNVVhfQ0ZHKCJZMTVfMTYxMF9VQVJUM19SVFMiLAkgQSwgICAgMCwgICAgMSwJICAyLCAgIDYsICAgMCwJIE5BLAkgMCwgIDApCisKKy8qIFBXVCAmIFBXTCwgY29uZmxpY3RzIHdpdGggVUFSVDMgKi8KK01VWF9DRkcoIlBXVCIsCQkgCSA2LCAgICAwLCAgICAyLAkgIDAsICAzMCwgICAwLAkgTkEsCSAwLCAgMCkKK01VWF9DRkcoIlBXTCIsCQkgCSA2LCAgICAzLCAgICAxLAkgIDAsICAzMSwgICAxLAkgTkEsCSAwLCAgMCkKKworLyogVVNCIGludGVybmFsIG1hc3RlciBnZW5lcmljICovCitNVVhfQ0ZHKCJSMThfVVNCX1ZCVVMiLAkJIDcsICAgIDksICAgIDIsCSAgMSwgIDExLCAgIDAsCSBOQSwJIDAsICAxKQorTVVYX0NGRygiUjE4XzE1MTBfVVNCX0dQSU8wIiwJIDcsICAgIDksICAgIDAsCSAgMSwgIDExLCAgIDEsCSBOQSwJIDAsICAxKQorLyogd29ya3MgYXJvdW5kIGVycmF0dW06ICBXNF9VU0JfUFVFTiBhbmQgVzRfVVNCX1BVRElTIGFyZSBzd2l0Y2hlZCEgKi8KK01VWF9DRkcoIlc0X1VTQl9QVUVOIiwJCSBELCAgICAzLCAgICAzLAkgIDMsICAgNSwgICAxLAkgTkEsCSAwLCAgMSkKK01VWF9DRkcoIlc0X1VTQl9DTEtPIiwJCSBELCAgICAzLCAgICAxLAkgIDMsICAgNSwgICAwLAkgTkEsCSAwLCAgMSkKK01VWF9DRkcoIlc0X1VTQl9ISUdIWiIsCQkgRCwgICAgMywgICAgNCwJICAzLCAgIDUsICAgMCwJICAzLAkgMCwgIDEpCitNVVhfQ0ZHKCJXNF9HUElPNTgiLAkJIEQsICAgIDMsICAgIDcsCSAgMywgICA1LCAgIDAsCSAgMywJIDAsICAxKQorCisvKiBVU0IxIG1hc3RlciAqLworTVVYX0NGRygiVVNCMV9TVVNQIiwJCSA4LCAgIDI3LCAgICAyLAkgIDEsICAyNywgICAwLAkgTkEsCSAwLCAgMSkKK01VWF9DRkcoIlVTQjFfU0UwIiwJCSA5LCAgICAwLCAgICAyLAkgIDEsICAyOCwgICAwLAkgTkEsCSAwLCAgMSkKK01VWF9DRkcoIlcxM18xNjEwX1VTQjFfU0UwIiwJIDksICAgIDAsICAgIDQsCSAgMSwgIDI4LCAgIDAsCSBOQSwJIDAsICAxKQorTVVYX0NGRygiVVNCMV9UWEVOIiwJCSA5LCAgICAzLCAgICAyLAkgIDEsICAyOSwgICAwLAkgTkEsCSAwLCAgMSkKK01VWF9DRkcoIlVTQjFfVFhEIiwJCSA5LCAgIDI0LCAgICAxLAkgIDIsICAgNCwgICAwLAkgTkEsCSAwLCAgMSkKK01VWF9DRkcoIlVTQjFfVlAiLAkJIEEsICAgIDMsICAgIDEsCSAgMiwgICA3LCAgIDAsCSBOQSwJIDAsICAxKQorTVVYX0NGRygiVVNCMV9WTSIsCQkgQSwgICAgNiwgICAgMSwJICAyLCAgIDgsICAgMCwJIE5BLAkgMCwgIDEpCitNVVhfQ0ZHKCJVU0IxX1JDViIsCQkgQSwgICAgOSwgICAgMSwJICAyLCAgIDksICAgMCwJIE5BLAkgMCwgIDEpCitNVVhfQ0ZHKCJVU0IxX1NQRUVEIiwJCSBBLCAgIDEyLCAgICAyLAkgIDIsICAxMCwgICAwLAkgTkEsCSAwLCAgMSkKK01VWF9DRkcoIlIxM18xNjEwX1VTQjFfU1BFRUQiLAkgQSwgICAxMiwgICAgNSwJICAyLCAgMTAsICAgMCwJIE5BLAkgMCwgIDEpCitNVVhfQ0ZHKCJSMTNfMTcxMF9VU0IxX1NFTyIsCSBBLCAgIDEyLCAgICA1LCAgIDIsICAxMCwgICAwLCAgIE5BLCAgICAgMCwgIDEpCisKKy8qIFVTQjIgbWFzdGVyICovCitNVVhfQ0ZHKCJVU0IyX1NVU1AiLAkJIEIsICAgIDMsICAgIDEsCSAgMiwgIDE3LCAgIDAsCSBOQSwJIDAsICAxKQorTVVYX0NGRygiVVNCMl9WUCIsCQkgQiwgICAgNiwgICAgMSwJICAyLCAgMTgsICAgMCwJIE5BLAkgMCwgIDEpCitNVVhfQ0ZHKCJVU0IyX1RYRU4iLAkJIEIsICAgIDksICAgIDEsCSAgMiwgIDE5LCAgIDAsCSBOQSwJIDAsICAxKQorTVVYX0NGRygiVVNCMl9WTSIsCQkgQywgICAxOCwgICAgMSwJICAzLCAgIDAsICAgMCwJIE5BLAkgMCwgIDEpCitNVVhfQ0ZHKCJVU0IyX1JDViIsCQkgQywgICAyMSwgICAgMSwJICAzLCAgIDEsICAgMCwJIE5BLAkgMCwgIDEpCitNVVhfQ0ZHKCJVU0IyX1NFMCIsCQkgQywgICAyNCwgICAgMiwJICAzLCAgIDIsICAgMCwJIE5BLAkgMCwgIDEpCitNVVhfQ0ZHKCJVU0IyX1RYRCIsCQkgQywgICAyNywgICAgMiwJICAzLCAgIDMsICAgMCwJIE5BLAkgMCwgIDEpCisKKy8qIE9NQVAtMTUxMCBHUElPICovCitNVVhfQ0ZHKCJSMThfMTUxMF9HUElPMCIsCSA3LCAgICA5LCAgICAwLCAgIDEsICAxMSwgICAxLCAgICAwLCAgICAgMCwgIDEpCitNVVhfQ0ZHKCJSMTlfMTUxMF9HUElPMSIsCSA3LCAgICA2LCAgICAwLCAgIDEsICAxMCwgICAxLCAgICAwLCAgICAgMCwgIDEpCitNVVhfQ0ZHKCJNMTRfMTUxMF9HUElPMiIsCSA3LCAgICAzLCAgICAwLCAgIDEsICAgOSwgICAxLCAgICAwLCAgICAgMCwgIDEpCisKKy8qIE9NQVAxNjEwIEdQSU8gKi8KK01VWF9DRkcoIlAxOF8xNjEwX0dQSU8zIiwJIDcsICAgIDAsICAgIDAsICAgMSwgICA4LCAgIDAsICAgTkEsICAgICAwLCAgMSkKK01VWF9DRkcoIlkxNV8xNjEwX0dQSU8xNyIsCSBBLCAgICAwLCAgICA3LCAgIDIsICAgNiwgICAwLCAgIE5BLCAgICAgMCwgIDEpCisKKy8qIE9NQVAtMTcxMCBHUElPICovCitNVVhfQ0ZHKCJSMThfMTcxMF9HUElPMCIsICAgICAgICA3LCAgICA5LCAgICAwLCAgIDEsICAxMSwgICAxLCAgICAxLCAgICAgMSwgIDEpCitNVVhfQ0ZHKCJWMl8xNzEwX0dQSU8xMCIsICAgICAgICBGLCAgIDI3LCAgICAxLCAgIDQsICAgMywgICAxLCAgICA0LCAgICAgMSwgIDEpCitNVVhfQ0ZHKCJOMjFfMTcxMF9HUElPMTQiLCAgICAgICA2LCAgICA5LCAgICAwLCAgIDEsICAgMSwgICAxLCAgICAxLCAgICAgMSwgIDEpCitNVVhfQ0ZHKCJXMTVfMTcxMF9HUElPNDAiLCAgICAgICA5LCAgIDI3LCAgICA3LCAgIDIsICAgNSwgICAxLCAgICAyLCAgICAgMSwgIDEpCisKKy8qIE1QVUlPICovCitNVVhfQ0ZHKCJNUFVJTzIiLAkJIDcsICAgMTgsICAgIDAsCSAgMSwgICAxLCAgIDEsCSBOQSwJIDAsICAxKQorTVVYX0NGRygiTVBVSU80IiwJCSA3LCAgIDE1LCAgICAwLAkgIDEsICAxMywgICAxLAkgTkEsCSAwLCAgMSkKK01VWF9DRkcoIk1QVUlPNSIsCQkgNywgICAxMiwgICAgMCwJICAxLCAgMTIsICAgMSwJIE5BLAkgMCwgIDEpCisKK01VWF9DRkcoIlQyMF8xNjEwX01QVUlPNSIsCSA3LCAgIDEyLCAgICAwLAkgIDEsICAxMiwgICAwLAkgIDMsCSAwLCAgMSkKK01VWF9DRkcoIlcxMV8xNjEwX01QVUlPNiIsCTEwLCAgIDE1LCAgICAyLAkgIDMsICAgOCwgICAwLAkgIDMsCSAwLCAgMSkKK01VWF9DRkcoIlYxMF8xNjEwX01QVUlPNyIsCSBBLCAgIDI0LCAgICAyLAkgIDIsICAxNCwgICAwLAkgIDIsCSAwLCAgMSkKK01VWF9DRkcoIlcxMV8xNjEwX01QVUlPOSIsCTEwLCAgIDE1LCAgICAxLAkgIDMsICAgOCwgICAwLAkgIDMsCSAwLCAgMSkKK01VWF9DRkcoIlYxMF8xNjEwX01QVUlPMTAiLAkgQSwgICAyNCwgICAgMSwJICAyLCAgMTQsICAgMCwJICAyLAkgMCwgIDEpCitNVVhfQ0ZHKCJXMTBfMTYxMF9NUFVJTzExIiwJIEEsICAgMTgsICAgIDIsCSAgMiwgIDExLCAgIDAsCSAgMiwJIDAsICAxKQorTVVYX0NGRygiRTIwXzE2MTBfTVBVSU8xMyIsCSAzLCAgIDIxLCAgICAxLAkgIDAsICAgNywgICAwLAkgIDAsCSAwLCAgMSkKK01VWF9DRkcoIlUyMF8xNjEwX01QVUlPMTQiLAkgOSwgICAgNiwgICAgNiwJICAwLCAgMzAsICAgMCwJICAwLAkgMCwgIDEpCitNVVhfQ0ZHKCJFMTlfMTYxMF9NUFVJTzE1IiwJIDMsICAgMTgsICAgIDEsCSAgMCwgICA2LCAgIDAsCSAgMCwJIDAsICAxKQorCisvKiBNQ0JTUDIgKi8KK01VWF9DRkcoIk1DQlNQMl9DTEtSIiwJCSBDLCAgICA2LCAgICAwLAkgIDIsICAyNywgICAxLAkgTkEsCSAwLCAgMSkKK01VWF9DRkcoIk1DQlNQMl9DTEtYIiwJCSBDLCAgICA5LCAgICAwLAkgIDIsICAyOSwgICAxLAkgTkEsCSAwLCAgMSkKK01VWF9DRkcoIk1DQlNQMl9EUiIsCQkgQywgICAgMCwgICAgMCwJICAyLCAgMjYsICAgMSwJIE5BLAkgMCwgIDEpCitNVVhfQ0ZHKCJNQ0JTUDJfRFgiLAkJIEMsICAgMTUsICAgIDAsCSAgMiwgIDMxLCAgIDEsCSBOQSwJIDAsICAxKQorTVVYX0NGRygiTUNCU1AyX0ZTUiIsCQkgQywgICAxMiwgICAgMCwJICAyLCAgMzAsICAgMSwJIE5BLAkgMCwgIDEpCitNVVhfQ0ZHKCJNQ0JTUDJfRlNYIiwJCSBDLCAgICAzLCAgICAwLAkgIDIsICAyNywgICAxLAkgTkEsCSAwLCAgMSkKKworLyogTUNCU1AzIE5PVEU6IE1vZGUgbXVzdCAxIGZvciBjbG9jayAqLworTVVYX0NGRygiTUNCU1AzX0NMS1giLAkJIDksICAgIDMsICAgIDEsCSAgMSwgIDI5LCAgIDAsCSBOQSwJIDAsICAxKQorCisvKiBNaXNjIGJhbGxvdXRzICovCitNVVhfQ0ZHKCJCQUxMT1VUX1Y4X0FSTUlPMyIsCSBCLCAgIDE4LCAgICAwLAkgIDIsICAyNSwgICAxLAkgTkEsCSAwLCAgMSkKKworLyogT01BUC0xNjEwIE1NQzIgKi8KK01VWF9DRkcoIlc4XzE2MTBfTU1DMl9EQVQwIiwJIEIsICAgMjEsICAgIDYsCSAgMiwgIDIzLCAgIDEsCSAgMiwJIDEsICAxKQorTVVYX0NGRygiVjhfMTYxMF9NTUMyX0RBVDEiLAkgQiwgICAyNywgICAgNiwJICAyLCAgMjUsICAgMSwJICAyLAkgMSwgIDEpCitNVVhfQ0ZHKCJXMTVfMTYxMF9NTUMyX0RBVDIiLAkgOSwgICAxMiwgICAgNiwJICAyLCAgIDUsICAgMSwJICAyLAkgMSwgIDEpCitNVVhfQ0ZHKCJSMTBfMTYxMF9NTUMyX0RBVDMiLAkgQiwgICAxOCwgICAgNiwJICAyLCAgMjIsICAgMSwJICAyLAkgMSwgIDEpCitNVVhfQ0ZHKCJZMTBfMTYxMF9NTUMyX0NMSyIsCSBCLCAgICAzLCAgICA2LAkgIDIsICAxNywgICAwLAkgIDIsCSAwLCAgMSkKK01VWF9DRkcoIlk4XzE2MTBfTU1DMl9DTUQiLAkgQiwgICAyNCwgICAgNiwJICAyLCAgMjQsICAgMSwJICAyLAkgMSwgIDEpCitNVVhfQ0ZHKCJWOV8xNjEwX01NQzJfQ01ERElSIiwJIEIsICAgMTIsICAgIDYsCSAgMiwgIDIwLCAgIDAsCSAgMiwJIDEsICAxKQorTVVYX0NGRygiVjVfMTYxMF9NTUMyX0RBVERJUjAiLAkgQiwgICAxNSwgICAgNiwJICAyLCAgMjEsICAgMCwJICAyLAkgMSwgIDEpCitNVVhfQ0ZHKCJXMTlfMTYxMF9NTUMyX0RBVERJUjEiLCA4LCAgIDE1LCAgICA2LAkgIDEsICAyMywgICAwLAkgIDEsCSAxLCAgMSkKK01VWF9DRkcoIlIxOF8xNjEwX01NQzJfQ0xLSU4iLAkgNywgICAgOSwgICAgNiwJICAxLCAgMTEsICAgMCwJICAxLAkxMSwgIDEpCisKKy8qIE9NQVAtMTYxMCBFeHRlcm5hbCBUcmFjZSBJbnRlcmZhY2UgKi8KK01VWF9DRkcoIk0xOV8xNjEwX0VUTV9QU1RBVDAiLAkgNSwgICAyNywgICAgMSwJICAwLCAgMjksICAgMCwJICAwLAkgMCwgIDEpCitNVVhfQ0ZHKCJMMTVfMTYxMF9FVE1fUFNUQVQxIiwJIDUsICAgMjQsICAgIDEsCSAgMCwgIDI4LCAgIDAsCSAgMCwJIDAsICAxKQorTVVYX0NGRygiTDE4XzE2MTBfRVRNX1BTVEFUMiIsCSA1LCAgIDIxLCAgICAxLAkgIDAsICAyNywgICAwLAkgIDAsCSAwLCAgMSkKK01VWF9DRkcoIkwxOV8xNjEwX0VUTV9EMCIsCSA1LCAgIDE4LCAgICAxLAkgIDAsICAyNiwgICAwLAkgIDAsCSAwLCAgMSkKK01VWF9DRkcoIkoxOV8xNjEwX0VUTV9ENiIsCSA1LCAgICAwLCAgICAxLAkgIDAsICAyMCwgICAwLAkgIDAsCSAwLCAgMSkKK01VWF9DRkcoIkoxOF8xNjEwX0VUTV9ENyIsCSA1LCAgIDI3LCAgICAxLAkgIDAsICAxOSwgICAwLAkgIDAsCSAwLCAgMSkKKworLyogT01BUC0xNjEwIEdQSU8gKi8KK01VWF9DRkcoIlAyMF8xNjEwX0dQSU80IiwJIDYsICAgMjcsICAgIDAsCSAgMSwgICA3LCAgIDAsCSAgMSwJIDEsICAxKQorTVVYX0NGRygiVjlfMTYxMF9HUElPNyIsCSBCLCAgIDEyLCAgICAxLAkgIDIsICAyMCwgICAwLAkgIDIsCSAxLCAgMSkKK01VWF9DRkcoIlc4XzE2MTBfR1BJTzkiLAkgQiwgICAyMSwgICAgMCwJICAyLCAgMjMsICAgMCwJICAyLAkgMSwgIDEpCitNVVhfQ0ZHKCJOMTlfMTYxMF9HUElPMTMiLAkgNiwgICAxMiwgICAgMCwJICAxLCAgIDIsICAgMCwJICAxLAkgMSwgIDEpCitNVVhfQ0ZHKCJQMTBfMTYxMF9HUElPMjIiLAkgQywgICAgMCwgICAgNywJICAyLCAgMjYsICAgMCwJICAyLAkgMSwgIDEpCitNVVhfQ0ZHKCJWNV8xNjEwX0dQSU8yNCIsCSBCLCAgIDE1LCAgICA3LAkgIDIsICAyMSwgICAwLAkgIDIsCSAxLCAgMSkKK01VWF9DRkcoIkFBMjBfMTYxMF9HUElPXzQxIiwJIDksICAgIDksICAgIDcsCSAgMSwgIDMxLCAgIDAsCSAgMSwJIDEsICAxKQorTVVYX0NGRygiVzE5XzE2MTBfR1BJTzQ4IiwJIDgsICAgMTUsICAgIDcsICAgMSwgIDIzLCAgIDEsICAgIDEsICAgICAwLCAgMSkKK01VWF9DRkcoIk03XzE2MTBfR1BJTzYyIiwJMTAsICAgIDAsICAgIDAsICAgNCwgIDI0LCAgIDAsICAgIDQsICAgICAwLCAgMSkKKworLyogT01BUC0xNjEwIHVXaXJlICovCitNVVhfQ0ZHKCJWMTlfMTYxMF9VV0lSRV9TQ0xLIiwJIDgsICAgIDYsICAgIDAsCSAgMSwgIDIwLCAgIDAsCSAgMSwJIDEsICAxKQorTVVYX0NGRygiVTE4XzE2MTBfVVdJUkVfU0RJIiwJIDgsICAgIDAsICAgIDAsCSAgMSwgIDE4LCAgIDAsCSAgMSwJIDEsICAxKQorTVVYX0NGRygiVzIxXzE2MTBfVVdJUkVfU0RPIiwJIDgsICAgIDMsICAgIDAsCSAgMSwgIDE5LCAgIDAsCSAgMSwJIDEsICAxKQorTVVYX0NGRygiTjE0XzE2MTBfVVdJUkVfQ1MwIiwJIDgsICAgIDksICAgIDEsCSAgMSwgIDIxLCAgIDAsCSAgMSwJIDEsICAxKQorTVVYX0NGRygiUDE1XzE2MTBfVVdJUkVfQ1MzIiwJIDgsICAgMTIsICAgIDEsCSAgMSwgIDIyLCAgIDAsCSAgMSwJIDEsICAxKQorTVVYX0NGRygiTjE1XzE2MTBfVVdJUkVfQ1MxIiwJIDcsICAgMTgsICAgIDIsCSAgMSwgIDE0LCAgIDAsCSBOQSwJIDAsICAxKQorCisvKiBPTUFQLTE2MTAgRmxhc2ggKi8KK01VWF9DRkcoIkwzXzE2MTBfRkxBU0hfQ1MyQl9PRSIsMTAsICAgIDYsICAgIDEsCSBOQSwgICAwLCAgIDAsCSBOQSwJIDAsICAxKQorTVVYX0NGRygiTThfMTYxMF9GTEFTSF9DUzJCX1dFIiwxMCwgICAgMywgICAgMSwJIE5BLCAgIDAsICAgMCwJIE5BLAkgMCwgIDEpCisKKy8qIEZpcnN0IE1NQyBpbnRlcmZhY2UsIHNhbWUgb24gMTUxMCwgMTYxMCBhbmQgMTcxMCAqLworTVVYX0NGRygiTU1DX0NNRCIsCQkgQSwgICAyNywgICAgMCwJICAyLCAgMTUsICAgMSwJICAyLAkgMSwgIDEpCitNVVhfQ0ZHKCJNTUNfREFUMSIsCQkgQSwgICAyNCwgICAgMCwJICAyLCAgMTQsICAgMSwJICAyLAkgMSwgIDEpCitNVVhfQ0ZHKCJNTUNfREFUMiIsCQkgQSwgICAxOCwgICAgMCwJICAyLCAgMTIsICAgMSwJICAyLAkgMSwgIDEpCitNVVhfQ0ZHKCJNTUNfREFUMCIsCQkgQiwgICAgMCwgICAgMCwJICAyLCAgMTYsICAgMSwJICAyLAkgMSwgIDEpCitNVVhfQ0ZHKCJNTUNfQ0xLIiwJCSBBLCAgIDIxLCAgICAwLAkgTkEsICAgMCwgICAwLAkgTkEsCSAwLCAgMSkKK01VWF9DRkcoIk1NQ19EQVQzIiwJCTEwLCAgIDE1LCAgICAwLAkgIDMsICAgOCwgICAxLAkgIDMsCSAxLCAgMSkKK01VWF9DRkcoIk0xNV8xNzEwX01NQ19DTEtJIiwJIDYsICAgMjEsICAgIDIsICAgMCwgICAwLCAgIDAsICAgTkEsICAgICAwLCAgMSkKK01VWF9DRkcoIlAxOV8xNzEwX01NQ19DTURESVIiLAkgNiwgICAyNCwgICAgNiwgICAwLCAgIDAsICAgMCwgICBOQSwgICAgIDAsICAxKQorTVVYX0NGRygiUDIwXzE3MTBfTU1DX0RBVERJUjAiLAkgNiwgICAyNywgICAgNSwgICAwLCAgIDAsICAgMCwgICBOQSwgICAgIDAsICAxKQorCisvKiBPTUFQLTE2MTAgVVNCMCBhbHRlcm5hdGUgY29uZmlndXJhdGlvbiAqLworTVVYX0NGRygiVzlfVVNCMF9UWEVOIiwJCSBCLCAgIDksICAgICA1LAkgIDIsICAxOSwgICAwLAkgIDIsCSAwLCAgMSkKK01VWF9DRkcoIkFBOV9VU0IwX1ZQIiwJCSBCLCAgIDYsICAgICA1LAkgIDIsICAxOCwgICAwLAkgIDIsCSAwLCAgMSkKK01VWF9DRkcoIlk1X1VTQjBfUkNWIiwJCSBDLCAgMjEsICAgICA1LAkgIDMsICAgMSwgICAwLAkgIDEsCSAwLCAgMSkKK01VWF9DRkcoIlI5X1VTQjBfVk0iLAkJIEMsICAxOCwgICAgIDUsCSAgMywgICAwLCAgIDAsCSAgMywJIDAsICAxKQorTVVYX0NGRygiVjZfVVNCMF9UWEQiLAkJIEMsICAyNywgICAgIDUsCSAgMywgICAzLCAgIDAsCSAgMywJIDAsICAxKQorTVVYX0NGRygiVzVfVVNCMF9TRTAiLAkJIEMsICAyNCwgICAgIDUsCSAgMywgICAyLCAgIDAsCSAgMywJIDAsICAxKQorTVVYX0NGRygiVjlfVVNCMF9TUEVFRCIsCSBCLCAgMTIsICAgICA1LAkgIDIsICAyMCwgICAwLAkgIDIsCSAwLCAgMSkKK01VWF9DRkcoIlkxMF9VU0IwX1NVU1AiLAkgQiwgICAzLCAgICAgNSwJICAyLCAgMTcsICAgMCwJICAyLAkgMCwgIDEpCisKKy8qIFVTQjIgaW50ZXJmYWNlICovCitNVVhfQ0ZHKCJXOV9VU0IyX1RYRU4iLAkJIEIsICAgOSwgICAgIDEsCSBOQSwgICAwLCAgIDAsCSBOQSwJIDAsICAxKQorTVVYX0NGRygiQUE5X1VTQjJfVlAiLAkJIEIsICAgNiwgICAgIDEsCSBOQSwgICAwLCAgIDAsCSBOQSwJIDAsICAxKQorTVVYX0NGRygiWTVfVVNCMl9SQ1YiLAkJIEMsICAyMSwgICAgIDEsCSBOQSwgICAwLCAgIDAsCSBOQSwJIDAsICAxKQorTVVYX0NGRygiUjhfVVNCMl9WTSIsCQkgQywgIDE4LCAgICAgMSwJIE5BLCAgIDAsICAgMCwJIE5BLAkgMCwgIDEpCitNVVhfQ0ZHKCJWNl9VU0IyX1RYRCIsCQkgQywgIDI3LCAgICAgMiwJIE5BLCAgIDAsICAgMCwJIE5BLAkgMCwgIDEpCitNVVhfQ0ZHKCJXNV9VU0IyX1NFMCIsCQkgQywgIDI0LCAgICAgMiwJIE5BLCAgIDAsICAgMCwJIE5BLAkgMCwgIDEpCisKKworLyogVUFSVDEgKi8KK01VWF9DRkcoIlIxM18xNjEwX1VBUlQxX1RYIiwJIEEsICAxMiwgICAgIDYsCSAgMiwgIDEwLCAgIDAsCSAgMiwJMTAsICAxKQorTVVYX0NGRygiVjE0XzE2MTBfVUFSVDFfUlgiLAkgOSwgIDE4LCAgICAgMCwJICAyLCAgIDIsICAgMCwJICAyLAkgMiwgIDEpCitNVVhfQ0ZHKCJSMTRfMTYxMF9VQVJUMV9DVFMiLAkgOSwgIDE1LCAgICAgMCwJICAyLCAgIDEsICAgMCwJICAyLAkgMSwgIDEpCitNVVhfQ0ZHKCJBQTE1XzE2MTBfVUFSVDFfUlRTIiwJIDksICAxMiwgICAgIDEsCSAgMiwgICAwLCAgIDAsCSAgMiwJIDAsICAxKQorCisvKiBJMkMgaW50ZXJmYWNlICovCitNVVhfQ0ZHKCJJMkNfU0NMIiwJCSA3LCAgMjQsICAgICAwLAkgTkEsICAgMCwgICAwLAkgTkEsCSAwLCAgMCkKK01VWF9DRkcoIkkyQ19TREEiLAkJIDcsICAyNywgICAgIDAsCSBOQSwgICAwLCAgIDAsCSBOQSwJIDAsICAwKQorCisvKiBLZXlwYWQgKi8KK01VWF9DRkcoIkYxOF8xNjEwX0tCQzAiLAkgMywgIDE1LCAgICAgMCwJICAwLCAgIDUsICAgMSwJICAwLAkgMCwgIDApCitNVVhfQ0ZHKCJEMjBfMTYxMF9LQkMxIiwJIDMsICAxMiwgICAgIDAsCSAgMCwgICA0LCAgIDEsCSAgMCwJIDAsICAwKQorTVVYX0NGRygiRDE5XzE2MTBfS0JDMiIsCSAzLCAgIDksICAgICAwLAkgIDAsICAgMywgICAxLAkgIDAsCSAwLCAgMCkKK01VWF9DRkcoIkUxOF8xNjEwX0tCQzMiLAkgMywgICA2LCAgICAgMCwJICAwLCAgIDIsICAgMSwJICAwLAkgMCwgIDApCitNVVhfQ0ZHKCJDMjFfMTYxMF9LQkM0IiwJIDMsICAgMywgICAgIDAsCSAgMCwgICAxLCAgIDEsCSAgMCwJIDAsICAwKQorTVVYX0NGRygiRzE4XzE2MTBfS0JSMCIsCSA0LCAgIDAsICAgICAwLAkgIDAsICAgMTAsICAxLAkgIDAsCSAxLCAgMCkKK01VWF9DRkcoIkYxOV8xNjEwX0tCUjEiLAkgMywgICAyNywgICAgMCwJICAwLCAgIDksICAgMSwJICAwLAkgMSwgIDApCitNVVhfQ0ZHKCJIMTRfMTYxMF9LQlIyIiwJIDMsICAgMjQsICAgIDAsCSAgMCwgICA4LCAgIDEsCSAgMCwJIDEsICAwKQorTVVYX0NGRygiRTIwXzE2MTBfS0JSMyIsCSAzLCAgIDIxLCAgICAwLAkgIDAsICAgNywgICAxLAkgIDAsCSAxLCAgMCkKK01VWF9DRkcoIkUxOV8xNjEwX0tCUjQiLAkgMywgICAxOCwgICAgMCwJICAwLCAgIDYsICAgMSwJICAwLAkgMSwgIDApCitNVVhfQ0ZHKCJOMTlfMTYxMF9LQlI1IiwJIDYsICAxMiwgICAgIDEsCSAgMSwgICAyLCAgIDEsCSAgMSwJIDEsICAwKQorCisvKiBQb3dlciBtYW5hZ2VtZW50ICovCitNVVhfQ0ZHKCJUMjBfMTYxMF9MT1dfUFdSIiwJIDcsICAgMTIsICAgIDEsCSAgTkEsICAgMCwgICAwLCAgIE5BLAkgMCwgIDApCisKKy8qIE1DTEsgU2V0dGluZ3MgKi8KK01VWF9DRkcoIlY1XzE3MTBfTUNMS19PTiIsCSBCLCAgIDE1LCAgICAwLAkgIE5BLCAgIDAsICAgMCwgICBOQSwJIDAsICAwKQorTVVYX0NGRygiVjVfMTcxMF9NQ0xLX09GRiIsCSBCLCAgIDE1LCAgICA2LAkgIE5BLCAgIDAsICAgMCwgICBOQSwJIDAsICAwKQorTVVYX0NGRygiUjEwXzE2MTBfTUNMS19PTiIsCSBCLCAgIDE4LCAgICAwLAkgIE5BLCAgMjIsICAgMCwJICBOQSwJIDEsICAwKQorTVVYX0NGRygiUjEwXzE2MTBfTUNMS19PRkYiLAkgQiwgICAxOCwgICAgNiwJICAyLCAgIDIyLCAgIDEsCSAgMiwJIDEsICAxKQorCisvKiBDb21wYWN0Rmxhc2ggY29udHJvbGxlciwgY29uZmxpY3RzIHdpdGggTU1DMSAqLworTVVYX0NGRygiUDExXzE2MTBfQ0ZfQ0QyIiwJIEEsICAgMjcsICAgIDMsCSAgMiwgICAxNSwgICAxLAkgIDIsCSAxLCAgMSkKK01VWF9DRkcoIlIxMV8xNjEwX0NGX0lPSVMxNiIsCSBCLCAgICAwLCAgICAzLAkgIDIsICAgMTYsICAgMSwJICAyLAkgMSwgIDEpCitNVVhfQ0ZHKCJWMTBfMTYxMF9DRl9JUkVRIiwJIEEsICAgMjQsICAgIDMsCSAgMiwgICAxNCwgICAwLAkgIDIsCSAwLCAgMSkKK01VWF9DRkcoIlcxMF8xNjEwX0NGX1JFU0VUIiwJIEEsICAgMTgsICAgIDMsCSAgMiwgICAxMiwgICAxLAkgIDIsCSAxLCAgMSkKK01VWF9DRkcoIlcxMV8xNjEwX0NGX0NEMSIsCTEwLCAgIDE1LCAgICAzLAkgIDMsICAgIDgsICAgMSwJICAzLAkgMSwgIDEpCit9OworCisjZW5kaWYJLyogX19NVVhfQ19fICovCisKKyNpZmRlZglDT05GSUdfT01BUF9NVVgKKy8qIHNldHVwIHBpbiBtdXhpbmcgaW4gTGludXggKi8KK2V4dGVybiBpbnQgb21hcF9jZmdfcmVnKHJlZ19jZmdfdCByZWdfY2ZnKTsKKyNlbHNlCisvKiBib290IGxvYWRlciBkb2VzIGl0IGFsbCAobm8gd2FybmluZ3MgZnJvbSBDT05GSUdfT01BUF9NVVhfV0FSTklOR1MpICovCitzdGF0aWMgaW5saW5lIGludCBvbWFwX2NmZ19yZWcocmVnX2NmZ190IHJlZ19jZmcpIHsgcmV0dXJuIDA7IH0KKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvb21hcDE1MTAuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvb21hcDE1MTAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDkxYTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9vbWFwMTUxMC5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvb21hcDE1MTAuaAorICoKKyAqIEhhcmR3YXJlIGRlZmluaXRpb25zIGZvciBUSSBPTUFQMTUxMCBwcm9jZXNzb3IuCisgKgorICogQ2xlYW51cCBmb3IgTGludXgtMi42IGJ5IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZGUuYm9zY2guY29tPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIKKyAqIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQKKyAqIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTgorICogTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULAorICogSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRgorICogVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyAqIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlICB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAorICogNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX09NQVAxNTEwX0gKKyNkZWZpbmUgX19BU01fQVJDSF9PTUFQMTUxMF9ICisKKy8qCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBCYXNlIGFkZHJlc3NlcworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKy8qIFN5bnRheDogWFhfQkFTRSA9IFZpcnR1YWwgYmFzZSBhZGRyZXNzLCBYWF9TVEFSVCA9IFBoeXNpY2FsIGJhc2UgYWRkcmVzcyAqLworCisjZGVmaW5lIE9NQVAxNTEwX1NSQU1fQkFTRQkweEQwMDAwMDAwCisjZGVmaW5lIE9NQVAxNTEwX1NSQU1fU0laRQkoU1pfMTI4SyArIFNaXzY0SykKKyNkZWZpbmUgT01BUDE1MTBfU1JBTV9TVEFSVAkweDIwMDAwMDAwCisKKyNkZWZpbmUgT01BUDE1MTBfRFNQX0JBU0UJMHhFMDAwMDAwMAorI2RlZmluZSBPTUFQMTUxMF9EU1BfU0laRQkweDI4MDAwCisjZGVmaW5lIE9NQVAxNTEwX0RTUF9TVEFSVAkweEUwMDAwMDAwCisKKyNkZWZpbmUgT01BUDE1MTBfRFNQUkVHX0JBU0UJMHhFMTAwMDAwMAorI2RlZmluZSBPTUFQMTUxMF9EU1BSRUdfU0laRQlTWl8xMjhLCisjZGVmaW5lIE9NQVAxNTEwX0RTUFJFR19TVEFSVAkweEUxMDAwMDAwCisKKy8qCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBNZW1vcnkgdXNlZCBieSBwb3dlciBtYW5hZ2VtZW50CisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2RlZmluZSBPTUFQMTUxMF9TUkFNX0lETEVfU1VTUEVORAkoT01BUDE1MTBfU1JBTV9CQVNFICsgT01BUDE1MTBfU1JBTV9TSVpFIC0gMHgyMDApCisjZGVmaW5lIE9NQVAxNTEwX1NSQU1fQVBJX1NVU1BFTkQJKE9NQVAxNTEwX1NSQU1fSURMRV9TVVNQRU5EICsgMHgxMDApCisKKyNlbmRpZiAvKiAgX19BU01fQVJDSF9PTUFQMTUxMF9IICovCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvb21hcDE2eHguaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvb21hcDE2eHguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OGIxZmU0Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9vbWFwMTZ4eC5oCkBAIC0wLDAgKzEsMTg3IEBACisvKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL29tYXAxNnh4LmgKKyAqCisgKiBIYXJkd2FyZSBkZWZpbml0aW9ucyBmb3IgVEkgT01BUDE2MTAvNTkxMi8xNzEwIHByb2Nlc3NvcnMuCisgKgorICogQ2xlYW51cCBmb3IgTGludXgtMi42IGJ5IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZGUuYm9zY2guY29tPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIKKyAqIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQKKyAqIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTgorICogTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULAorICogSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRgorICogVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyAqIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlICB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAorICogNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX09NQVAxNlhYX0gKKyNkZWZpbmUgX19BU01fQVJDSF9PTUFQMTZYWF9ICisKKy8qCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBCYXNlIGFkZHJlc3NlcworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKy8qIFN5bnRheDogWFhfQkFTRSA9IFZpcnR1YWwgYmFzZSBhZGRyZXNzLCBYWF9TVEFSVCA9IFBoeXNpY2FsIGJhc2UgYWRkcmVzcyAqLworCisjZGVmaW5lIE9NQVAxNlhYX1NSQU1fQkFTRQkweEQwMDAwMDAwCisjZGVmaW5lIE9NQVAxNjEwX1NSQU1fU0laRQkoU1pfMTZLKQorI2RlZmluZSBPTUFQNTkxMl9TUkFNX1NJWkUJMHgzRTgwMAorI2RlZmluZSBPTUFQMTZYWF9TUkFNX1NUQVJUCTB4MjAwMDAwMDAKKworI2RlZmluZSBPTUFQMTZYWF9EU1BfQkFTRQkweEUwMDAwMDAwCisjZGVmaW5lIE9NQVAxNlhYX0RTUF9TSVpFCTB4MjgwMDAKKyNkZWZpbmUgT01BUDE2WFhfRFNQX1NUQVJUCTB4RTAwMDAwMDAKKworI2RlZmluZSBPTUFQMTZYWF9EU1BSRUdfQkFTRQkweEUxMDAwMDAwCisjZGVmaW5lIE9NQVAxNlhYX0RTUFJFR19TSVpFCVNaXzEyOEsKKyNkZWZpbmUgT01BUDE2WFhfRFNQUkVHX1NUQVJUCTB4RTEwMDAwMDAKKworLyoKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIE1lbW9yeSB1c2VkIGJ5IHBvd2VyIG1hbmFnZW1lbnQKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjZGVmaW5lIE9NQVAxNjEwX1NSQU1fSURMRV9TVVNQRU5ECShPTUFQMTZYWF9TUkFNX0JBU0UgKyBPTUFQMTYxMF9TUkFNX1NJWkUgLSAweDIwMCkKKyNkZWZpbmUgT01BUDE2MTBfU1JBTV9BUElfU1VTUEVORAkoT01BUDE2MTBfU1JBTV9JRExFX1NVU1BFTkQgKyAweDEwMCkKKyNkZWZpbmUgT01BUDU5MTJfU1JBTV9JRExFX1NVU1BFTkQJKE9NQVAxNlhYX1NSQU1fQkFTRSArIE9NQVA1OTEyX1NSQU1fU0laRSAtIDB4MjAwKQorI2RlZmluZSBPTUFQNTkxMl9TUkFNX0FQSV9TVVNQRU5ECShPTUFQNTkxMl9TUkFNX0lETEVfU1VTUEVORCArIDB4MTAwKQorCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJbnRlcnJ1cHRzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2RlZmluZSBPTUFQX0lIMl8wX0JBU0UJCSgweGZmZmUwMDAwKQorI2RlZmluZSBPTUFQX0lIMl8xX0JBU0UJCSgweGZmZmUwMTAwKQorI2RlZmluZSBPTUFQX0lIMl8yX0JBU0UJCSgweGZmZmUwMjAwKQorI2RlZmluZSBPTUFQX0lIMl8zX0JBU0UJCSgweGZmZmUwMzAwKQorCisjZGVmaW5lIE9NQVBfSUgyXzBfSVRSCQkoT01BUF9JSDJfMF9CQVNFICsgMHgwMCkKKyNkZWZpbmUgT01BUF9JSDJfMF9NSVIJCShPTUFQX0lIMl8wX0JBU0UgKyAweDA0KQorI2RlZmluZSBPTUFQX0lIMl8wX1NJUl9JUlEJKE9NQVBfSUgyXzBfQkFTRSArIDB4MTApCisjZGVmaW5lIE9NQVBfSUgyXzBfU0lSX0ZJUQkoT01BUF9JSDJfMF9CQVNFICsgMHgxNCkKKyNkZWZpbmUgT01BUF9JSDJfMF9DT05UUk9MCShPTUFQX0lIMl8wX0JBU0UgKyAweDE4KQorI2RlZmluZSBPTUFQX0lIMl8wX0lMUjAJCShPTUFQX0lIMl8wX0JBU0UgKyAweDFjKQorI2RlZmluZSBPTUFQX0lIMl8wX0lTUgkJKE9NQVBfSUgyXzBfQkFTRSArIDB4OWMpCisKKyNkZWZpbmUgT01BUF9JSDJfMV9JVFIJCShPTUFQX0lIMl8xX0JBU0UgKyAweDAwKQorI2RlZmluZSBPTUFQX0lIMl8xX01JUgkJKE9NQVBfSUgyXzFfQkFTRSArIDB4MDQpCisjZGVmaW5lIE9NQVBfSUgyXzFfU0lSX0lSUQkoT01BUF9JSDJfMV9CQVNFICsgMHgxMCkKKyNkZWZpbmUgT01BUF9JSDJfMV9TSVJfRklRCShPTUFQX0lIMl8xX0JBU0UgKyAweDE0KQorI2RlZmluZSBPTUFQX0lIMl8xX0NPTlRST0wJKE9NQVBfSUgyXzFfQkFTRSArIDB4MTgpCisjZGVmaW5lIE9NQVBfSUgyXzFfSUxSMQkJKE9NQVBfSUgyXzFfQkFTRSArIDB4MWMpCisjZGVmaW5lIE9NQVBfSUgyXzFfSVNSCQkoT01BUF9JSDJfMV9CQVNFICsgMHg5YykKKworI2RlZmluZSBPTUFQX0lIMl8yX0lUUgkJKE9NQVBfSUgyXzJfQkFTRSArIDB4MDApCisjZGVmaW5lIE9NQVBfSUgyXzJfTUlSCQkoT01BUF9JSDJfMl9CQVNFICsgMHgwNCkKKyNkZWZpbmUgT01BUF9JSDJfMl9TSVJfSVJRCShPTUFQX0lIMl8yX0JBU0UgKyAweDEwKQorI2RlZmluZSBPTUFQX0lIMl8yX1NJUl9GSVEJKE9NQVBfSUgyXzJfQkFTRSArIDB4MTQpCisjZGVmaW5lIE9NQVBfSUgyXzJfQ09OVFJPTAkoT01BUF9JSDJfMl9CQVNFICsgMHgxOCkKKyNkZWZpbmUgT01BUF9JSDJfMl9JTFIyCQkoT01BUF9JSDJfMl9CQVNFICsgMHgxYykKKyNkZWZpbmUgT01BUF9JSDJfMl9JU1IJCShPTUFQX0lIMl8yX0JBU0UgKyAweDljKQorCisjZGVmaW5lIE9NQVBfSUgyXzNfSVRSCQkoT01BUF9JSDJfM19CQVNFICsgMHgwMCkKKyNkZWZpbmUgT01BUF9JSDJfM19NSVIJCShPTUFQX0lIMl8zX0JBU0UgKyAweDA0KQorI2RlZmluZSBPTUFQX0lIMl8zX1NJUl9JUlEJKE9NQVBfSUgyXzNfQkFTRSArIDB4MTApCisjZGVmaW5lIE9NQVBfSUgyXzNfU0lSX0ZJUQkoT01BUF9JSDJfM19CQVNFICsgMHgxNCkKKyNkZWZpbmUgT01BUF9JSDJfM19DT05UUk9MCShPTUFQX0lIMl8zX0JBU0UgKyAweDE4KQorI2RlZmluZSBPTUFQX0lIMl8zX0lMUjMJCShPTUFQX0lIMl8zX0JBU0UgKyAweDFjKQorI2RlZmluZSBPTUFQX0lIMl8zX0lTUgkJKE9NQVBfSUgyXzNfQkFTRSArIDB4OWMpCisKKy8qCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBDbG9ja3MKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2RlZmluZSBPTUFQMTZYWF9BUk1fSURMRUNUMwkoQ0xLR0VOX1JFR19CQVNFICsgMHgyNCkKKworLyoKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFBpbiBjb25maWd1cmF0aW9uIHJlZ2lzdGVycworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjZGVmaW5lIE9NQVAxNlhYX0NPTkZfVk9MVEFHRV9WRERTSFY2CSgxIDw8IDgpCisjZGVmaW5lIE9NQVAxNlhYX0NPTkZfVk9MVEFHRV9WRERTSFY3CSgxIDw8IDkpCisjZGVmaW5lIE9NQVAxNlhYX0NPTkZfVk9MVEFHRV9WRERTSFY4CSgxIDw8IDEwKQorI2RlZmluZSBPTUFQMTZYWF9DT05GX1ZPTFRBR0VfVkREU0hWOQkoMSA8PCAxMSkKKyNkZWZpbmUgT01BUDE2WFhfU1VCTFZEU19DT05GX1ZBTElECSgxIDw8IDEzKQorCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogU3lzdGVtIGNvbnRyb2wgcmVnaXN0ZXJzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNkZWZpbmUgT01BUDE2MTBfUkVTRVRfQ09OVFJPTCAgMHhmZmZlMTE0MAorCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBUSVBCIGJ1cyBpbnRlcmZhY2UKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjZGVmaW5lIFRJUEJfU1dJVENIX0JBU0UJCSAoMHhmZmZiYzgwMCkKKyNkZWZpbmUgT01BUDE2WFhfTU1DU0QyX1NTV19NUFVfQ09ORgkoVElQQl9TV0lUQ0hfQkFTRSArIDB4MTYwKQorCisvKiBVQVJUMyBSZWdpc3RlcnMgTWFwaW5nIHRocm91Z2ggTVBVIGJ1cyAqLworI2RlZmluZSBVQVJUM19SSFIgICAgICAgICAgICAgICAoT01BUF9VQVJUM19CQVNFICsgMCkKKyNkZWZpbmUgVUFSVDNfVEhSICAgICAgICAgICAgICAgKE9NQVBfVUFSVDNfQkFTRSArIDApCisjZGVmaW5lIFVBUlQzX0RMTCAgICAgICAgICAgICAgIChPTUFQX1VBUlQzX0JBU0UgKyAwKQorI2RlZmluZSBVQVJUM19JRVIgICAgICAgICAgICAgICAoT01BUF9VQVJUM19CQVNFICsgNCkKKyNkZWZpbmUgVUFSVDNfRExIICAgICAgICAgICAgICAgKE9NQVBfVUFSVDNfQkFTRSArIDQpCisjZGVmaW5lIFVBUlQzX0lJUiAgICAgICAgICAgICAgIChPTUFQX1VBUlQzX0JBU0UgKyA4KQorI2RlZmluZSBVQVJUM19GQ1IgICAgICAgICAgICAgICAoT01BUF9VQVJUM19CQVNFICsgOCkKKyNkZWZpbmUgVUFSVDNfRUZSICAgICAgICAgICAgICAgKE9NQVBfVUFSVDNfQkFTRSArIDgpCisjZGVmaW5lIFVBUlQzX0xDUiAgICAgICAgICAgICAgIChPTUFQX1VBUlQzX0JBU0UgKyAweDBDKQorI2RlZmluZSBVQVJUM19NQ1IgICAgICAgICAgICAgICAoT01BUF9VQVJUM19CQVNFICsgMHgxMCkKKyNkZWZpbmUgVUFSVDNfWE9OMV9BRERSMSAgICAgICAgKE9NQVBfVUFSVDNfQkFTRSArIDB4MTApCisjZGVmaW5lIFVBUlQzX1hPTjJfQUREUjIgICAgICAgIChPTUFQX1VBUlQzX0JBU0UgKyAweDE0KQorI2RlZmluZSBVQVJUM19MU1IgICAgICAgICAgICAgICAoT01BUF9VQVJUM19CQVNFICsgMHgxNCkKKyNkZWZpbmUgVUFSVDNfVENSICAgICAgICAgICAgICAgKE9NQVBfVUFSVDNfQkFTRSArIDB4MTgpCisjZGVmaW5lIFVBUlQzX01TUiAgICAgICAgICAgICAgIChPTUFQX1VBUlQzX0JBU0UgKyAweDE4KQorI2RlZmluZSBVQVJUM19YT0ZGMSAgICAgICAgICAgICAoT01BUF9VQVJUM19CQVNFICsgMHgxOCkKKyNkZWZpbmUgVUFSVDNfWE9GRjIgICAgICAgICAgICAgKE9NQVBfVUFSVDNfQkFTRSArIDB4MUMpCisjZGVmaW5lIFVBUlQzX1NQUiAgICAgICAgICAgICAgIChPTUFQX1VBUlQzX0JBU0UgKyAweDFDKQorI2RlZmluZSBVQVJUM19UTFIgICAgICAgICAgICAgICAoT01BUF9VQVJUM19CQVNFICsgMHgxQykKKyNkZWZpbmUgVUFSVDNfTURSMSAgICAgICAgICAgICAgKE9NQVBfVUFSVDNfQkFTRSArIDB4MjApCisjZGVmaW5lIFVBUlQzX01EUjIgICAgICAgICAgICAgIChPTUFQX1VBUlQzX0JBU0UgKyAweDI0KQorI2RlZmluZSBVQVJUM19TRkxTUiAgICAgICAgICAgICAoT01BUF9VQVJUM19CQVNFICsgMHgyOCkKKyNkZWZpbmUgVUFSVDNfVFhGTEwgICAgICAgICAgICAgKE9NQVBfVUFSVDNfQkFTRSArIDB4MjgpCisjZGVmaW5lIFVBUlQzX1JFU1VNRSAgICAgICAgICAgIChPTUFQX1VBUlQzX0JBU0UgKyAweDJDKQorI2RlZmluZSBVQVJUM19UWEZMSCAgICAgICAgICAgICAoT01BUF9VQVJUM19CQVNFICsgMHgyQykKKyNkZWZpbmUgVUFSVDNfU0ZSRUdMICAgICAgICAgICAgKE9NQVBfVUFSVDNfQkFTRSArIDB4MzApCisjZGVmaW5lIFVBUlQzX1JYRkxMICAgICAgICAgICAgIChPTUFQX1VBUlQzX0JBU0UgKyAweDMwKQorI2RlZmluZSBVQVJUM19TRlJFR0ggICAgICAgICAgICAoT01BUF9VQVJUM19CQVNFICsgMHgzNCkKKyNkZWZpbmUgVUFSVDNfUlhGTEggICAgICAgICAgICAgKE9NQVBfVUFSVDNfQkFTRSArIDB4MzQpCisjZGVmaW5lIFVBUlQzX0JMUiAgICAgICAgICAgICAgIChPTUFQX1VBUlQzX0JBU0UgKyAweDM4KQorI2RlZmluZSBVQVJUM19BQ1JFRyAgICAgICAgICAgICAoT01BUF9VQVJUM19CQVNFICsgMHgzQykKKyNkZWZpbmUgVUFSVDNfRElWMTYgICAgICAgICAgICAgKE9NQVBfVUFSVDNfQkFTRSArIDB4M0MpCisjZGVmaW5lIFVBUlQzX1NDUiAgICAgICAgICAgICAgIChPTUFQX1VBUlQzX0JBU0UgKyAweDQwKQorI2RlZmluZSBVQVJUM19TU1IgICAgICAgICAgICAgICAoT01BUF9VQVJUM19CQVNFICsgMHg0NCkKKyNkZWZpbmUgVUFSVDNfRUJMUiAgICAgICAgICAgICAgKE9NQVBfVUFSVDNfQkFTRSArIDB4NDgpCisjZGVmaW5lIFVBUlQzX09TQ18xMk1fU0VMICAgICAgIChPTUFQX1VBUlQzX0JBU0UgKyAweDRDKQorI2RlZmluZSBVQVJUM19NVlIgICAgICAgICAgICAgICAoT01BUF9VQVJUM19CQVNFICsgMHg1MCkKKworLyoKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFB1bHNlLVdpZHRoIExpZ2h0CisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNkZWZpbmUgT01BUDE2WFhfUFdMX0JBU0UJKDB4ZmZmYjU4MDApCisjZGVmaW5lIE9NQVAxNlhYX1BXTF9FTkFCTEUJKE9NQVAxNlhYX1BXTF9CQVNFICsgMHgwMCkKKyNkZWZpbmUgT01BUDE2WFhfUFdMX0NMS19FTkFCTEUJKE9NQVAxNlhYX1BXTF9CQVNFICsgMHgwNCkKKworI2VuZGlmIC8qICBfX0FTTV9BUkNIX09NQVAxNlhYX0ggKi8KKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9vbWFwNzMwLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL29tYXA3MzAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTlhYjAwCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9vbWFwNzMwLmgKQEAgLTAsMCArMSwxMDYgQEAKKy8qIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvb21hcDczMC5oCisgKgorICogSGFyZHdhcmUgZGVmaW5pdGlvbnMgZm9yIFRJIE9NQVA3MzAgcHJvY2Vzc29yLgorICoKKyAqIENsZWFudXAgZm9yIExpbnV4LTIuNiBieSBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGRlLmJvc2NoLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCisgKiBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVECisgKiBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4KKyAqIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKKyAqIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAorICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YKKyAqIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisgKiB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSAgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKyAqIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorICovCisKKyNpZm5kZWYgX19BU01fQVJDSF9PTUFQNzMwX0gKKyNkZWZpbmUgX19BU01fQVJDSF9PTUFQNzMwX0gKKworLyoKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIEJhc2UgYWRkcmVzc2VzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworLyogU3ludGF4OiBYWF9CQVNFID0gVmlydHVhbCBiYXNlIGFkZHJlc3MsIFhYX1NUQVJUID0gUGh5c2ljYWwgYmFzZSBhZGRyZXNzICovCisKKyNkZWZpbmUgT01BUDczMF9TUkFNX0JBU0UJMHhEMDAwMDAwMAorI2RlZmluZSBPTUFQNzMwX1NSQU1fU0laRQkoU1pfMTI4SyArIFNaXzY0SyArIFNaXzhLKQorI2RlZmluZSBPTUFQNzMwX1NSQU1fU1RBUlQJMHgyMDAwMDAwMAorCisjZGVmaW5lIE9NQVA3MzBfRFNQX0JBU0UJMHhFMDAwMDAwMAorI2RlZmluZSBPTUFQNzMwX0RTUF9TSVpFCTB4NTAwMDAKKyNkZWZpbmUgT01BUDczMF9EU1BfU1RBUlQJMHhFMDAwMDAwMAorCisjZGVmaW5lIE9NQVA3MzBfRFNQUkVHX0JBU0UJMHhFMTAwMDAwMAorI2RlZmluZSBPTUFQNzMwX0RTUFJFR19TSVpFCVNaXzEyOEsKKyNkZWZpbmUgT01BUDczMF9EU1BSRUdfU1RBUlQJMHhFMTAwMDAwMAorCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogT01BUDczMCBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHJlZ2lzdGVycworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjZGVmaW5lIE9NQVA3MzBfQ09ORklHX0JBU0UJMHhmZmZlMTAwMAorI2RlZmluZSBPTUFQNzMwX0lPX0NPTkZfMAkweGZmZmUxMDcwCisjZGVmaW5lIE9NQVA3MzBfSU9fQ09ORl8xCTB4ZmZmZTEwNzQKKyNkZWZpbmUgT01BUDczMF9JT19DT05GXzIJMHhmZmZlMTA3OAorI2RlZmluZSBPTUFQNzMwX0lPX0NPTkZfMwkweGZmZmUxMDdjCisjZGVmaW5lIE9NQVA3MzBfSU9fQ09ORl80CTB4ZmZmZTEwODAKKyNkZWZpbmUgT01BUDczMF9JT19DT05GXzUJMHhmZmZlMTA4NAorI2RlZmluZSBPTUFQNzMwX0lPX0NPTkZfNgkweGZmZmUxMDg4CisjZGVmaW5lIE9NQVA3MzBfSU9fQ09ORl83CTB4ZmZmZTEwOGMKKyNkZWZpbmUgT01BUDczMF9JT19DT05GXzgJMHhmZmZlMTA5MAorI2RlZmluZSBPTUFQNzMwX0lPX0NPTkZfOQkweGZmZmUxMDk0CisjZGVmaW5lIE9NQVA3MzBfSU9fQ09ORl8xMAkweGZmZmUxMDk4CisjZGVmaW5lIE9NQVA3MzBfSU9fQ09ORl8xMQkweGZmZmUxMDljCisjZGVmaW5lIE9NQVA3MzBfSU9fQ09ORl8xMgkweGZmZmUxMGEwCisjZGVmaW5lIE9NQVA3MzBfSU9fQ09ORl8xMwkweGZmZmUxMGE0CisKKyNkZWZpbmUgT01BUDczMF9NT0RFXzEJCTB4ZmZmZTEwMTAKKyNkZWZpbmUgT01BUDczMF9NT0RFXzIJCTB4ZmZmZTEwMTQKKworLyogQ1NNSSBzcGVjaWFsczogaW4gdGVybXMgb2YgYmFzZSArIG9mZnNldCAqLworI2RlZmluZSBPTUFQNzMwX01PREUyX09GRlNFVAkweDE0CisKKy8qCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBPTUFQNzMwIHRyYWZmaWMgY29udHJvbGxlciBjb25maWd1cmF0aW9uIHJlZ2lzdGVycworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjZGVmaW5lIE9NQVA3MzBfRkxBU0hfQ0ZHXzAJMHhmZmZlY2MxMAorI2RlZmluZSBPTUFQNzMwX0ZMQVNIX0FDRkdfMAkweGZmZmVjYzUwCisjZGVmaW5lIE9NQVA3MzBfRkxBU0hfQ0ZHXzEJMHhmZmZlY2MxNAorI2RlZmluZSBPTUFQNzMwX0ZMQVNIX0FDRkdfMQkweGZmZmVjYzU0CisKKy8qCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBPTUFQNzMwIERTUCBjb250cm9sIHJlZ2lzdGVycworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjZGVmaW5lIE9NQVA3MzBfSUNSX0JBU0UJMHhmZmZiYjgwMAorI2RlZmluZSBPTUFQNzMwX0RTUF9NX0NUTAkweGZmZmJiODA0CisjZGVmaW5lIE9NQVA3MzBfRFNQX01NVV9CQVNFCTB4ZmZmZWQyMDAKKworLyoKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIE9NQVA3MzAgUENDX1VQTEQgY29uZmlndXJhdGlvbiByZWdpc3RlcnMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2RlZmluZSBPTUFQNzMwX1BDQ19VUExEX0NUUkxfQkFTRQkoMHhmZmZlMDkwMCkKKyNkZWZpbmUgT01BUDczMF9QQ0NfVVBMRF9DVFJMCQkoT01BUDczMF9QQ0NfVVBMRF9DVFJMX0JBU0UgKyAweDAwKQorCisjZW5kaWYgLyogIF9fQVNNX0FSQ0hfT01BUDczMF9IICovCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvcGFyYW0uaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvcGFyYW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYWNlOWFkCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9wYXJhbS5oCkBAIC0wLDAgKzEsOCBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL3BhcmFtLmgKKyAqCisgKi8KKworI2lmZGVmIENPTkZJR19PTUFQXzMyS19USU1FUl9IWgorI2RlZmluZSBIWglDT05GSUdfT01BUF8zMktfVElNRVJfSFoKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9wbS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9wbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyMDlmYzAKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL3BtLmgKQEAgLTAsMCArMSwyMjkgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS9hcmNoLW9tYXAvcG0uaAorICoKKyAqIEhlYWRlciBmaWxlIGZvciBPTUFQIFBvd2VyIE1hbmFnZW1lbnQgUm91dGluZXMKKyAqCisgKiBBdXRob3I6IE1vbnRhVmlzdGEgU29mdHdhcmUsIEluYy4KKyAqCSAgIHN1cHBvcnRAbXZpc3RhLmNvbQorICoKKyAqIENvcHlyaWdodCAyMDAyIE1vbnRhVmlzdGEgU29mdHdhcmUgSW5jLgorICoKKyAqIENsZWFudXAgMjAwNCBmb3IgTGludXggMi42IGJ5IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZGUuYm9zY2guY29tPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIKKyAqIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQKKyAqIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTgorICogTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULAorICogSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRgorICogVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworICogd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKyAqIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorICovCisKKyNpZm5kZWYgX19BU01fQVJDSF9PTUFQX1BNX0gKKyNkZWZpbmUgX19BU01fQVJDSF9PTUFQX1BNX0gKKworLyoKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJlZ2lzdGVyIGFuZCBvZmZzZXQgZGVmaW5pdGlvbnMgdG8gYmUgdXNlZCBpbiBQTSBhc3NlbWJsZXIgY29kZQorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjZGVmaW5lIENMS0dFTl9SRUdfQVNNX0JBU0UJCWlvX3AydigweGZmZmVjZTAwKQorI2RlZmluZSBBUk1fSURMRUNUMV9BU01fT0ZGU0VUCQkweDA0CisjZGVmaW5lIEFSTV9JRExFQ1QyX0FTTV9PRkZTRVQJCTB4MDgKKworI2RlZmluZSBUQ01JRl9BU01fQkFTRQkJCWlvX3AydigweGZmZmVjYzAwKQorI2RlZmluZSBFTUlGU19DT05GSUdfQVNNX09GRlNFVAkJMHgwYworI2RlZmluZSBFTUlGRl9TRFJBTV9DT05GSUdfQVNNX09GRlNFVAkweDIwCisKKy8qCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBQb3dlcm1hbmFnZW1lbnQgYml0bWFza3MKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2RlZmluZSBJRExFX1dBSVRfQ1lDTEVTCQkweDAwMDAwZmZmCisjZGVmaW5lIFBFUklQSEVSQUxfRU5BQkxFCQkweDIKKworI2RlZmluZSBTRUxGX1JFRlJFU0hfTU9ERQkJMHgwYzAwMDAwMQorI2RlZmluZSBJRExFX0VNSUZTX1JFUVVFU1QJCTB4YworI2RlZmluZSBNT0RFTV8zMktfRU4JCQkweDEKKyNkZWZpbmUgUEVSX0VOCQkJCTB4MQorCisjZGVmaW5lIENQVV9TVVNQRU5EX1NJWkUJCTIwMAorI2RlZmluZSBVTFBEX0xPV19QT1dFUl9FTgkJMHgwMDAxCisKKyNkZWZpbmUgRFNQX0lETEVfREVMQVkJCQkxMAorI2RlZmluZSBEU1BfSURMRQkJCTB4MDA0MAorI2RlZmluZSBEU1BfUlNUCQkJCTB4MDAwNAorI2RlZmluZSBEU1BfRU5BQkxFCQkJMHgwMDAyCisjZGVmaW5lIFNVRkZJQ0lFTlRfRFNQX1JFU0VUX1RJTUUJMTAwMAorI2RlZmluZSBERUZBVUxUX01QVUlfQ09ORklHCQkweDA1Y2YKKyNkZWZpbmUgRU5BQkxFX1hPUkNMSwkJCTB4MgorI2RlZmluZSBEU1BfQ0xPQ0tfRU5BQkxFCQkweDIwMDAKKyNkZWZpbmUgRFNQX0lETEVfTU9ERQkJCTB4MgorI2RlZmluZSBUQ19JRExFX1JFUVVFU1QJCQkoMHgwMDAwMDAwYykKKworI2RlZmluZSBJUlFfTEVWRUwyCQkJKDE8PDApCisjZGVmaW5lIElSUV9LRVlCT0FSRAkJCSgxPDwxKQorI2RlZmluZSBJUlFfVUFSVDIJCQkoMTw8MTUpCisKKyNkZWZpbmUgUERFX0JJVAkJCQkweDA4CisjZGVmaW5lIFBXRF9FTl9CSVQJCQkweDA0CisjZGVmaW5lIEVOX1BFUkNLX0JJVAkJCTB4MDQKKworI2RlZmluZSBPTUFQMTUxMF9ERUVQX1NMRUVQX1JFUVVFU1QJMHgwZWM3CisjZGVmaW5lIE9NQVAxNTEwX0JJR19TTEVFUF9SRVFVRVNUCTB4MGNjNQorI2RlZmluZSBPTUFQMTUxMF9JRExFX0xPT1BfUkVRVUVTVAkweDBjMDAKKyNkZWZpbmUgT01BUDE1MTBfSURMRV9DTE9DS19ET01BSU5TCTB4MgorI2RlZmluZSBPTUFQMTUxMF9VTFBEX0xPV19QT1dFUl9SRVEJMHgwMDAxCisKKyNkZWZpbmUgT01BUDE2MTBfREVFUF9TTEVFUF9SRVFVRVNUCTB4MTdjNworI2RlZmluZSBPTUFQMTYxMF9CSUdfU0xFRVBfUkVRVUVTVAlUQkQKKyNkZWZpbmUgT01BUDE2MTBfSURMRV9MT09QX1JFUVVFU1QJMHgwNDAwCisjZGVmaW5lIE9NQVAxNjEwX0lETEVfQ0xPQ0tfRE9NQUlOUwkweDA5YzcKKyNkZWZpbmUgT01BUDE2MTBfVUxQRF9MT1dfUE9XRVJfUkVRCTB4MworCisjaWZuZGVmIE9NQVAxNTEwX1NSQU1fSURMRV9TVVNQRU5ECisjZGVmaW5lIE9NQVAxNTEwX1NSQU1fSURMRV9TVVNQRU5EIDAKKyNlbmRpZgorI2lmbmRlZiBPTUFQMTYxMF9TUkFNX0lETEVfU1VTUEVORAorI2RlZmluZSBPTUFQMTYxMF9TUkFNX0lETEVfU1VTUEVORCAwCisjZW5kaWYKKyNpZm5kZWYgT01BUDU5MTJfU1JBTV9JRExFX1NVU1BFTkQKKyNkZWZpbmUgT01BUDU5MTJfU1JBTV9JRExFX1NVU1BFTkQgMAorI2VuZGlmCisKKyNpZm5kZWYgT01BUDE1MTBfU1JBTV9BUElfU1VTUEVORAorI2RlZmluZSBPTUFQMTUxMF9TUkFNX0FQSV9TVVNQRU5EIDAKKyNlbmRpZgorI2lmbmRlZiBPTUFQMTYxMF9TUkFNX0FQSV9TVVNQRU5ECisjZGVmaW5lIE9NQVAxNjEwX1NSQU1fQVBJX1NVU1BFTkQgMAorI2VuZGlmCisjaWZuZGVmIE9NQVA1OTEyX1NSQU1fQVBJX1NVU1BFTkQKKyNkZWZpbmUgT01BUDU5MTJfU1JBTV9BUElfU1VTUEVORCAwCisjZW5kaWYKKworI2lmICAgICAhZGVmaW5lZChDT05GSUdfQVJDSF9PTUFQMTUxMCkgJiYgXAorCSFkZWZpbmVkKENPTkZJR19BUkNIX09NQVAxNlhYKQorI2Vycm9yICJQb3dlciBtYW5hZ2VtZW50IGZvciB0aGlzIHByb2Nlc3NvciBub3QgaW1wbGVtZW50ZWQgeWV0IgorI2VuZGlmCisKKyNpZm5kZWYgX19BU1NFTUJMRVJfXworZXh0ZXJuIHZvaWQgb21hcF9wbV9pZGxlKHZvaWQpOworZXh0ZXJuIHZvaWQgb21hcF9wbV9zdXNwZW5kKHZvaWQpOworZXh0ZXJuIGludCBvbWFwMTUxMF9jcHVfc3VzcGVuZCh1bnNpZ25lZCBzaG9ydCwgdW5zaWduZWQgc2hvcnQpOworZXh0ZXJuIGludCBvbWFwMTYxMF9jcHVfc3VzcGVuZCh1bnNpZ25lZCBzaG9ydCwgdW5zaWduZWQgc2hvcnQpOworZXh0ZXJuIGludCBvbWFwMTUxMF9pZGxlX2xvb3Bfc3VzcGVuZCh2b2lkKTsKK2V4dGVybiBpbnQgb21hcDE2MTBfaWRsZV9sb29wX3N1c3BlbmQodm9pZCk7CitleHRlcm4gdW5zaWduZWQgaW50IG9tYXAxNTEwX2NwdV9zdXNwZW5kX3N6OworZXh0ZXJuIHVuc2lnbmVkIGludCBvbWFwMTUxMF9pZGxlX2xvb3Bfc3VzcGVuZF9zejsKK2V4dGVybiB1bnNpZ25lZCBpbnQgb21hcDE2MTBfY3B1X3N1c3BlbmRfc3o7CitleHRlcm4gdW5zaWduZWQgaW50IG9tYXAxNjEwX2lkbGVfbG9vcF9zdXNwZW5kX3N6OworCisjZGVmaW5lIEFSTV9TQVZFKHgpIGFybV9zbGVlcF9zYXZlW0FSTV9TTEVFUF9TQVZFXyMjeF0gPSBvbWFwX3JlYWRsKHgpCisjZGVmaW5lIEFSTV9SRVNUT1JFKHgpIG9tYXBfd3JpdGVsKChhcm1fc2xlZXBfc2F2ZVtBUk1fU0xFRVBfU0FWRV8jI3hdKSwgKHgpKQorI2RlZmluZSBBUk1fU0hPVyh4KSBhcm1fc2xlZXBfc2F2ZVtBUk1fU0xFRVBfU0FWRV8jI3hdCisKKyNkZWZpbmUgVUxQRF9TQVZFKHgpIHVscGRfc2xlZXBfc2F2ZVtVTFBEX1NMRUVQX1NBVkVfIyN4XSA9IG9tYXBfcmVhZHcoeCkKKyNkZWZpbmUgVUxQRF9SRVNUT1JFKHgpIG9tYXBfd3JpdGV3KCh1bHBkX3NsZWVwX3NhdmVbVUxQRF9TTEVFUF9TQVZFXyMjeF0pLCAoeCkpCisjZGVmaW5lIFVMUERfU0hPVyh4KSB1bHBkX3NsZWVwX3NhdmVbVUxQRF9TTEVFUF9TQVZFXyMjeF0KKworI2RlZmluZSBNUFVJMTUxMF9TQVZFKHgpIG1wdWkxNTEwX3NsZWVwX3NhdmVbTVBVSTE1MTBfU0xFRVBfU0FWRV8jI3hdID0gb21hcF9yZWFkbCh4KQorI2RlZmluZSBNUFVJMTUxMF9SRVNUT1JFKHgpIG9tYXBfd3JpdGVsKChtcHVpMTUxMF9zbGVlcF9zYXZlW01QVUkxNTEwX1NMRUVQX1NBVkVfIyN4XSksICh4KSkKKyNkZWZpbmUgTVBVSTE1MTBfU0hPVyh4KSBtcHVpMTUxMF9zbGVlcF9zYXZlW01QVUkxNTEwX1NMRUVQX1NBVkVfIyN4XQorCisjZGVmaW5lIE1QVUkxNjEwX1NBVkUoeCkgbXB1aTE2MTBfc2xlZXBfc2F2ZVtNUFVJMTYxMF9TTEVFUF9TQVZFXyMjeF0gPSBvbWFwX3JlYWRsKHgpCisjZGVmaW5lIE1QVUkxNjEwX1JFU1RPUkUoeCkgb21hcF93cml0ZWwoKG1wdWkxNjEwX3NsZWVwX3NhdmVbTVBVSTE2MTBfU0xFRVBfU0FWRV8jI3hdKSwgKHgpKQorI2RlZmluZSBNUFVJMTYxMF9TSE9XKHgpIG1wdWkxNjEwX3NsZWVwX3NhdmVbTVBVSTE2MTBfU0xFRVBfU0FWRV8jI3hdCisKKy8qCisgKiBMaXN0IG9mIGdsb2JhbCBPTUFQIHJlZ2lzdGVycyB0byBwcmVzZXJ2ZS4KKyAqIE1vcmUgb25lcyBsaWtlIENQIGFuZCBnZW5lcmFsIHB1cnBvc2UgcmVnaXN0ZXIgdmFsdWVzIGFyZSBwcmVzZXJ2ZWQKKyAqIHdpdGggdGhlIHN0YWNrIHBvaW50ZXIgaW4gc2xlZXAuUy4KKyAqLworCitlbnVtIGFybV9zYXZlX3N0YXRlIHsKKwlBUk1fU0xFRVBfU0FWRV9TVEFSVCA9IDAsCisJLyoKKwkgKiBNUFUgY29udHJvbCByZWdpc3RlcnMgMzIgYml0cworCSAqLworCUFSTV9TTEVFUF9TQVZFX0FSTV9DS0NUTCwKKwlBUk1fU0xFRVBfU0FWRV9BUk1fSURMRUNUMSwKKwlBUk1fU0xFRVBfU0FWRV9BUk1fSURMRUNUMiwKKwlBUk1fU0xFRVBfU0FWRV9BUk1fRVdVUENULAorCUFSTV9TTEVFUF9TQVZFX0FSTV9SU1RDVDEsCisJQVJNX1NMRUVQX1NBVkVfQVJNX1JTVENUMiwKKwlBUk1fU0xFRVBfU0FWRV9BUk1fU1lTU1QsCisJQVJNX1NMRUVQX1NBVkVfU0laRQorfTsKKworZW51bSB1bHBkX3NhdmVfc3RhdGUgeworCVVMUERfU0xFRVBfU0FWRV9TVEFSVCA9IDAsCisJLyoKKwkgKiBVTFBEIHJlZ2lzdGVycyAxNiBiaXRzCisJICovCisJVUxQRF9TTEVFUF9TQVZFX1VMUERfSVRfU1RBVFVTLAorCVVMUERfU0xFRVBfU0FWRV9VTFBEX0NMT0NLX0NUUkwsCisJVUxQRF9TTEVFUF9TQVZFX1VMUERfU09GVF9SRVEsCisJVUxQRF9TTEVFUF9TQVZFX1VMUERfU1RBVFVTX1JFUSwKKwlVTFBEX1NMRUVQX1NBVkVfVUxQRF9EUExMX0NUUkwsCisJVUxQRF9TTEVFUF9TQVZFX1VMUERfUE9XRVJfQ1RSTCwKKwlVTFBEX1NMRUVQX1NBVkVfU0laRQorfTsKKworZW51bSBtcHVpMTUxMF9zYXZlX3N0YXRlIHsKKwlNUFVJMTUxMF9TTEVFUF9TQVZFX1NUQVJUID0gMCwKKwkvKgorCSAqIE1QVUkgcmVnaXN0ZXJzIDMyIGJpdHMKKwkgKi8KKwlNUFVJMTUxMF9TTEVFUF9TQVZFX01QVUlfQ1RSTCwKKwlNUFVJMTUxMF9TTEVFUF9TQVZFX01QVUlfRFNQX0JPT1RfQ09ORklHLAorCU1QVUkxNTEwX1NMRUVQX1NBVkVfTVBVSV9EU1BfQVBJX0NPTkZJRywKKwlNUFVJMTUxMF9TTEVFUF9TQVZFX01QVUlfRFNQX1NUQVRVUywKKwlNUFVJMTUxMF9TTEVFUF9TQVZFX0VNSUZGX1NEUkFNX0NPTkZJRywKKwlNUFVJMTUxMF9TTEVFUF9TQVZFX0VNSUZTX0NPTkZJRywKKwlNUFVJMTUxMF9TTEVFUF9TQVZFX09NQVBfSUgxX01JUiwKKwlNUFVJMTUxMF9TTEVFUF9TQVZFX09NQVBfSUgyX01JUiwKKyNpZiBkZWZpbmVkKENPTkZJR19BUkNIX09NQVAxNTEwKQorCU1QVUkxNTEwX1NMRUVQX1NBVkVfU0laRQorI2Vsc2UKKwlNUFVJMTUxMF9TTEVFUF9TQVZFX1NJWkUgPSAwCisjZW5kaWYKK307CisKK2VudW0gbXB1aTE2MTBfc2F2ZV9zdGF0ZSB7CisJTVBVSTE2MTBfU0xFRVBfU0FWRV9TVEFSVCA9IDAsCisJLyoKKwkgKiBNUFVJIHJlZ2lzdGVycyAzMiBiaXRzCisJICovCisJTVBVSTE2MTBfU0xFRVBfU0FWRV9NUFVJX0NUUkwsCisJTVBVSTE2MTBfU0xFRVBfU0FWRV9NUFVJX0RTUF9CT09UX0NPTkZJRywKKwlNUFVJMTYxMF9TTEVFUF9TQVZFX01QVUlfRFNQX0FQSV9DT05GSUcsCisJTVBVSTE2MTBfU0xFRVBfU0FWRV9NUFVJX0RTUF9TVEFUVVMsCisJTVBVSTE2MTBfU0xFRVBfU0FWRV9FTUlGRl9TRFJBTV9DT05GSUcsCisJTVBVSTE2MTBfU0xFRVBfU0FWRV9FTUlGU19DT05GSUcsCisJTVBVSTE2MTBfU0xFRVBfU0FWRV9PTUFQX0lIMV9NSVIsCisJTVBVSTE2MTBfU0xFRVBfU0FWRV9PTUFQX0lIMl8wX01JUiwKKwlNUFVJMTYxMF9TTEVFUF9TQVZFX09NQVBfSUgyXzFfTUlSLAorCU1QVUkxNjEwX1NMRUVQX1NBVkVfT01BUF9JSDJfMl9NSVIsCisJTVBVSTE2MTBfU0xFRVBfU0FWRV9PTUFQX0lIMl8zX01JUiwKKyNpZiBkZWZpbmVkKENPTkZJR19BUkNIX09NQVAxNlhYKQorCU1QVUkxNjEwX1NMRUVQX1NBVkVfU0laRQorI2Vsc2UKKwlNUFVJMTYxMF9TTEVFUF9TQVZFX1NJWkUgPSAwCisjZW5kaWYKK307CisKKyNlbmRpZiAvKiBBU1NFTUJMRVIgKi8KKyNlbmRpZiAvKiBfX0FTTV9BUkNIX09NQVBfUE1fSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9zeXN0ZW0uaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvc3lzdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdhMmM0OAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvc3lzdGVtLmgKQEAgLTAsMCArMSwyMCBAQAorLyoKKyAqIENvcGllZCBmcm9tIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC9zeXN0ZW0uaAorICogQ29weXJpZ2h0IChjKSAxOTk5IE5pY29sYXMgUGl0cmUgPG5pY29AY2FtLm9yZz4KKyAqLworI2lmbmRlZiBfX0FTTV9BUkNIX1NZU1RFTV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfU1lTVEVNX0gKKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9oYXJkd2FyZS5oPgorCitzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9pZGxlKHZvaWQpCit7CisJY3B1X2RvX2lkbGUoKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGFyY2hfcmVzZXQoY2hhciBtb2RlKQoreworCW9tYXBfd3JpdGV3KDEsIEFSTV9SU1RDVDEpOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvdGMuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvdGMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGVkMjE4Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC90Yy5oCkBAIC0wLDAgKzEsMTA4IEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC90Yy5oCisgKgorICogT01BUCBUcmFmZmljIENvbnRyb2xsZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQgTm9raWEgQ29ycG9yYXRpb24KKyAqIEF1dGhvcjogSW1yZSBEZWFrIDxpbXJlLmRlYWtAbm9raWEuY29tPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIKKyAqIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorICogV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworICogd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKyAqIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNywgVVNBLgorICovCisKKyNpZm5kZWYgX19BU01fQVJDSF9UQ19ICisjZGVmaW5lIF9fQVNNX0FSQ0hfVENfSAorCisjZGVmaW5lIFRDTUlGX0JBU0UJCTB4ZmZmZWNjMDAKKyNkZWZpbmUgT01BUF9UQ19PQ1BUMV9QUklPUgkoVENNSUZfQkFTRSArIDB4MDApCisjZGVmaW5lIE9NQVBfVENfRU1JRlNfUFJJT1IJKFRDTUlGX0JBU0UgKyAweDA0KQorI2RlZmluZSBPTUFQX1RDX0VNSUZGX1BSSU9SCShUQ01JRl9CQVNFICsgMHgwOCkKKyNkZWZpbmUgRU1JRlNfQ09ORklHCQkoVENNSUZfQkFTRSArIDB4MGMpCisjZGVmaW5lIEVNSUZTX0NTMF9DT05GSUcJKFRDTUlGX0JBU0UgKyAweDEwKQorI2RlZmluZSBFTUlGU19DUzFfQ09ORklHCShUQ01JRl9CQVNFICsgMHgxNCkKKyNkZWZpbmUgRU1JRlNfQ1MyX0NPTkZJRwkoVENNSUZfQkFTRSArIDB4MTgpCisjZGVmaW5lIEVNSUZTX0NTM19DT05GSUcJKFRDTUlGX0JBU0UgKyAweDFjKQorI2RlZmluZSBFTUlGRl9TRFJBTV9DT05GSUcJKFRDTUlGX0JBU0UgKyAweDIwKQorI2RlZmluZSBFTUlGRl9NUlMJCShUQ01JRl9CQVNFICsgMHgyNCkKKyNkZWZpbmUgVENfVElNRU9VVDEJCShUQ01JRl9CQVNFICsgMHgyOCkKKyNkZWZpbmUgVENfVElNRU9VVDIJCShUQ01JRl9CQVNFICsgMHgyYykKKyNkZWZpbmUgVENfVElNRU9VVDMJCShUQ01JRl9CQVNFICsgMHgzMCkKKyNkZWZpbmUgVENfRU5ESUFOSVNNCQkoVENNSUZfQkFTRSArIDB4MzQpCisjZGVmaW5lIEVNSUZGX1NEUkFNX0NPTkZJR18yCShUQ01JRl9CQVNFICsgMHgzYykKKyNkZWZpbmUgRU1JRl9DRkdfRFlOQU1JQ19XUwkoVENNSUZfQkFTRSArIDB4NDApCisjZGVmaW5lIEVNSUZTX0FDUzAJCShUQ01JRl9CQVNFICsgMHg1MCkKKyNkZWZpbmUgRU1JRlNfQUNTMQkJKFRDTUlGX0JBU0UgKyAweDU0KQorI2RlZmluZSBFTUlGU19BQ1MyCQkoVENNSUZfQkFTRSArIDB4NTgpCisjZGVmaW5lIEVNSUZTX0FDUzMJCShUQ01JRl9CQVNFICsgMHg1YykKKyNkZWZpbmUgT01BUF9UQ19PQ1BUMl9QUklPUgkoVENNSUZfQkFTRSArIDB4ZDApCisKKy8qIGV4dGVybmFsIEVNSUZTIGNoaXBzZWxlY3QgcmVnaW9ucyAqLworI2RlZmluZQlPTUFQX0NTMF9QSFlTCQkweDAwMDAwMDAwCisjZGVmaW5lCU9NQVBfQ1MwX1NJWkUJCVNaXzY0TQorCisjZGVmaW5lCU9NQVBfQ1MxX1BIWVMJCTB4MDQwMDAwMDAKKyNkZWZpbmUJT01BUF9DUzFfU0laRQkJU1pfNjRNCisKKyNkZWZpbmUJT01BUF9DUzFBX1BIWVMJCU9NQVBfQ1MxX1BIWVMKKyNkZWZpbmUJT01BUF9DUzFBX1NJWkUJCVNaXzMyTQorCisjZGVmaW5lCU9NQVBfQ1MxQl9QSFlTCQkoT01BUF9DUzFBX1BIWVMgKyBPTUFQX0NTMUFfU0laRSkKKyNkZWZpbmUJT01BUF9DUzFCX1NJWkUJCVNaXzMyTQorCisjZGVmaW5lCU9NQVBfQ1MyX1BIWVMJCTB4MDgwMDAwMDAKKyNkZWZpbmUJT01BUF9DUzJfU0laRQkJU1pfNjRNCisKKyNkZWZpbmUJT01BUF9DUzJBX1BIWVMJCU9NQVBfQ1MyX1BIWVMKKyNkZWZpbmUJT01BUF9DUzJBX1NJWkUJCVNaXzMyTQorCisjZGVmaW5lCU9NQVBfQ1MyQl9QSFlTCQkoT01BUF9DUzJBX1BIWVMgKyBPTUFQX0NTMkFfU0laRSkKKyNkZWZpbmUJT01BUF9DUzJCX1NJWkUJCVNaXzMyTQorCisjZGVmaW5lCU9NQVBfQ1MzX1BIWVMJCTB4MGMwMDAwMDAKKyNkZWZpbmUJT01BUF9DUzNfU0laRQkJU1pfNjRNCisKKyNpZm5kZWYJX19BU1NFTUJMRVJfXworCisvKiBFTUlGIFNsb3cgSW50ZXJmYWNlIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgKi8KKyNkZWZpbmUJT01BUF9FTUlGU19DT05GSUdfUkVHCV9fUkVHMzIoRU1JRlNfQ09ORklHKQorCisjZGVmaW5lIE9NQVBfRU1JRlNfQ09ORklHX0ZSCQkoMSA8PCA0KQorI2RlZmluZSBPTUFQX0VNSUZTX0NPTkZJR19QREUJCSgxIDw8IDMpCisjZGVmaW5lIE9NQVBfRU1JRlNfQ09ORklHX1BXRF9FTgkoMSA8PCAyKQorI2RlZmluZSBPTUFQX0VNSUZTX0NPTkZJR19CTQkJKDEgPDwgMSkKKyNkZWZpbmUgT01BUF9FTUlGU19DT05GSUdfV1AJCSgxIDw8IDApCisKKyNkZWZpbmUgRU1JRlNfQ0NTKG4pCQlfX1JFRzMyKEVNSUZTX0NTMF9DT05GSUcgKyAoNCAqIChuKSkpCisjZGVmaW5lIEVNSUZTX0FDUyhuKQkJX19SRUczMihFTUlGU19BQ1MwICsgKDQgKiAobikpKQorCisvKiBBbG1vc3QgYWxsIGRvY3VtZW50YXRpb24gZm9yIGNoaXAgYW5kIGJvYXJkIG1lbW9yeSBtYXBzIGFzc3VtZXMKKyAqIEJNIGlzIGNsZWFyLiAgTW9zdCBkZXZlbCBib2FyZHMgaGF2ZSBhIHN3aXRjaCB0byBjb250cm9sIGJvb3RpbmcKKyAqIGZyb20gTk9SIGZsYXNoICh1c2luZyBleHRlcm5hbCBjaGlwc2VsZWN0IDMpIHJhdGhlciB0aGFuIG1hc2sgUk9NLAorICogd2hpY2ggdXNlcyBCTSB0byBpbnRlcmNoYW5nZSB0aGUgcGh5c2ljYWwgQ1MwIGFuZCBDUzMgYWRkcmVzc2VzLgorICovCitzdGF0aWMgaW5saW5lIHUzMiBvbWFwX2NzMF9waHlzKHZvaWQpCit7CisJcmV0dXJuIChPTUFQX0VNSUZTX0NPTkZJR19SRUcgJiBPTUFQX0VNSUZTX0NPTkZJR19CTSkKKwkJCT8gIE9NQVBfQ1MzX1BIWVMgOiAwOworfQorCitzdGF0aWMgaW5saW5lIHUzMiBvbWFwX2NzM19waHlzKHZvaWQpCit7CisJcmV0dXJuIChPTUFQX0VNSUZTX0NPTkZJR19SRUcgJiBPTUFQX0VNSUZTX0NPTkZJR19CTSkKKwkJCT8gMCA6IE9NQVBfQ1MzX1BIWVM7Cit9CisKKyNlbmRpZgkvKiBfX0FTU0VNQkxFUl9fICovCisKKyNlbmRpZgkvKiBfX0FTTV9BUkNIX1RDX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvdGltZXguaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvdGltZXguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjFkZGI0Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC90aW1leC5oCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL3RpbWV4LmgKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDAgUmlkZ2VSdW4sIEluYy4KKyAqIEF1dGhvcjogIEdyZWcgTG9ubm9uIDxnbG9ubm9uQHJpZGdlcnVuLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCisgKiBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVECisgKiBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4KKyAqIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKKyAqIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAorICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YKKyAqIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisgKiB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSAgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKyAqIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorICovCisKKyNpZiAhZGVmaW5lZChfX0FTTV9BUkNIX09NQVBfVElNRVhfSCkKKyNkZWZpbmUgX19BU01fQVJDSF9PTUFQX1RJTUVYX0gKKworI2RlZmluZSBDTE9DS19USUNLX1JBVEUJCShIWiAqIDEwMDAwMFVMKQorCisjZW5kaWYgLyogX19BU01fQVJDSF9PTUFQX1RJTUVYX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvdHBzNjUwMTAuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvdHBzNjUwMTAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjk3YmIyCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC90cHM2NTAxMC5oCkBAIC0wLDAgKzEsODAgQEAKKy8qIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvdHBzNjUwMTAuaAorICoKKyAqIEZ1bmN0aW9ucyB0byBhY2Nlc3MgVFBTNjUwMTAgcG93ZXIgbWFuYWdlbWVudCBkZXZpY2UuCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA0IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZGUuYm9zY2guY29tPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIKKyAqIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQKKyAqIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTgorICogTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULAorICogSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRgorICogVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyAqIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlICB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAorICogNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX1RQUzY1MDEwX0gKKyNkZWZpbmUgX19BU01fQVJDSF9UUFM2NTAxMF9ICisKKy8qCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBNYWNyb3MgdXNlZCBieSBleHBvcnRlZCBmdW5jdGlvbnMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjZGVmaW5lIExFRDEgIDEKKyNkZWZpbmUgTEVEMiAgMgorI2RlZmluZSBPRkYgICAwCisjZGVmaW5lIE9OICAgIDEKKyNkZWZpbmUgQkxJTksgMgorI2RlZmluZSBHUElPMSAxCisjZGVmaW5lIEdQSU8yIDIKKyNkZWZpbmUgR1BJTzMgMworI2RlZmluZSBHUElPNCA0CisjZGVmaW5lIExPVyAgIDAKKyNkZWZpbmUgSElHSCAgMQorCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogRXhwb3J0ZWQgZnVuY3Rpb25zCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworLyogRHJhdyBmcm9tIFZCVVM6CisgKiAgIDAgbUEgLS0gRE9OJ1QgRFJBVyAobWlnaHQgc3VwcGx5IHBvd2VyIGluc3RlYWQpCisgKiAxMDAgbUEgLS0gdXNiIHVuaXQgbG9hZCAoc2xvd2VzdCBjaGFyZ2UgcmF0ZSkKKyAqIDUwMCBtQSAtLSB1c2IgaGlnaCBwb3dlciAoZmFzdCBiYXR0ZXJ5IGNoYXJnZSkKKyAqLworZXh0ZXJuIGludCB0cHM2NTAxMF9zZXRfdmJ1c19kcmF3KHVuc2lnbmVkIG1BKTsKKworLyogdHBzNjUwMTBfc2V0X2dwaW9fb3V0X3ZhbHVlIHBhcmFtZXRlcjoKKyAqIGdwaW86ICBHUElPMSwgR1BJTzIsIEdQSU8zIG9yIEdQSU80CisgKiB2YWx1ZTogTE9XIG9yIEhJR0gKKyAqLworZXh0ZXJuIGludCB0cHM2NTAxMF9zZXRfZ3Bpb19vdXRfdmFsdWUodW5zaWduZWQgZ3BpbywgdW5zaWduZWQgdmFsdWUpOworCisvKiB0cHM2NTAxMF9zZXRfbGVkIHBhcmFtZXRlcjoKKyAqIGxlZDogIExFRDEgb3IgTEVEMgorICogbW9kZTogT04sIE9GRiBvciBCTElOSworICovCitleHRlcm4gaW50IHRwczY1MDEwX3NldF9sZWQodW5zaWduZWQgbGVkLCB1bnNpZ25lZCBtb2RlKTsKKworLyogdHBzNjUwMTBfc2V0X2xvd19wd3IgcGFyYW1ldGVyOgorICogbW9kZTogT04gb3IgT0ZGCisgKi8KK2V4dGVybiBpbnQgdHBzNjUwMTBfc2V0X2xvd19wd3IodW5zaWduZWQgbW9kZSk7CisKKyNlbmRpZiAvKiAgX19BU01fQVJDSF9UUFM2NTAxMF9IICovCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvdW5jb21wcmVzcy5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC91bmNvbXByZXNzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2U2NDBhYgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvdW5jb21wcmVzcy5oCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL3VuY29tcHJlc3MuaAorICoKKyAqIFNlcmlhbCBwb3J0IHN0dWJzIGZvciBrZXJuZWwgZGVjb21wcmVzcyBzdGF0dXMgbWVzc2FnZXMKKyAqCisgKiBJbml0aWFsbHkgYmFzZWQgb246CisgKiBsaW51eC0yLjQuMTUtcm1rMS1kc3BsaW51eDEuNi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwMTUxMC91bmNvbXByZXNzLmgKKyAqIENvcHlyaWdodCAoQykgMjAwMCBSaWRnZVJ1biwgSW5jLgorICogQXV0aG9yOiBHcmVnIExvbm5vbiA8Z2xvbm5vbkByaWRnZXJ1bi5jb20+CisgKgorICogUmV3cml0dGVuIGJ5OgorICogQXV0aG9yOiA8c291cmNlQG12aXN0YS5jb20+CisgKiAyMDA0IChjKSBNb250YVZpc3RhIFNvZnR3YXJlLCBJbmMuCisgKgorICogVGhpcyBmaWxlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIHZlcnNpb24gMi4gVGhpcyBwcm9ncmFtIGlzIGxpY2Vuc2VkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgb2YgYW55CisgKiBraW5kLCB3aGV0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqLworCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9zZXJpYWxfcmVnLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvaGFyZHdhcmUuaD4KKwordW5zaWduZWQgaW50IHN5c3RlbV9yZXY7CisKKyNkZWZpbmUgVUFSVF9PTUFQX01EUjEJCTB4MDgJLyogbW9kZSBkZWZpbml0aW9uIHJlZ2lzdGVyICovCisjZGVmaW5lIE9NQVBfSURfNzMwCQkweDM1NUYKKyNkZWZpbmUgSURfTUFTSwkJCTB4N2ZmZgorI2RlZmluZSBjaGVja19wb3J0KGJhc2UsIHNoaWZ0KSAoKGJhc2VbVUFSVF9PTUFQX01EUjEgPDwgc2hpZnRdICYgNykgPT0gMCkKKyNkZWZpbmUgb21hcF9nZXRfaWQoKSAoKCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICopKDB4ZmZmZWQ0MDQpKSA+PiAxMikgJiBJRF9NQVNLCisKK3N0YXRpYyB2b2lkCitwdXRzdHIoY29uc3QgY2hhciAqcykKK3sKKwl2b2xhdGlsZSB1OCAqIHVhcnQgPSAwOworCWludCBzaGlmdDsKKworI2lmZGVmCUNPTkZJR19PTUFQX0xMX0RFQlVHX1VBUlQzCisJdWFydCA9ICh2b2xhdGlsZSB1OCAqKShPTUFQX1VBUlQzX0JBU0UpOworI2VsaWYJQ09ORklHX09NQVBfTExfREVCVUdfVUFSVDIKKwl1YXJ0ID0gKHZvbGF0aWxlIHU4ICopKE9NQVBfVUFSVDJfQkFTRSk7CisjZWxzZQorCXVhcnQgPSAodm9sYXRpbGUgdTggKikoT01BUF9VQVJUMV9CQVNFKTsKKyNlbmRpZgorCisJLyogRGV0ZXJtaW5lIHdoaWNoIHNlcmlhbCBwb3J0IHRvIHVzZSAqLworCWRvIHsKKwkJLyogTU1VIGlzIG5vdCBvbiwgc28gY3B1X2lzX29tYXBYWFhYKCkgd29uJ3Qgd29yayBoZXJlICovCisJCXVuc2lnbmVkIGludCBvbWFwX2lkID0gb21hcF9nZXRfaWQoKTsKKworCQlpZiAob21hcF9pZCA9PSBPTUFQX0lEXzczMCkKKwkJCXNoaWZ0ID0gMDsKKwkJZWxzZQorCQkJc2hpZnQgPSAyOworCisJCWlmIChjaGVja19wb3J0KHVhcnQsIHNoaWZ0KSkKKwkJCWJyZWFrOworCQkvKiBTaWxlbnQgYm9vdCBpZiBubyBzZXJpYWwgcG9ydHMgYXJlIGVuYWJsZWQuICovCisJCXJldHVybjsKKwl9IHdoaWxlICgwKTsKKworCS8qCisJICogTm93LCB4bWl0IGVhY2ggY2hhcmFjdGVyCisJICovCisJd2hpbGUgKCpzKSB7CisJCXdoaWxlICghKHVhcnRbVUFSVF9MU1IgPDwgc2hpZnRdICYgVUFSVF9MU1JfVEhSRSkpCisJCQliYXJyaWVyKCk7CisJCXVhcnRbVUFSVF9UWCA8PCBzaGlmdF0gPSAqczsKKwkJaWYgKCpzKysgPT0gJ1xuJykgeworCQkJd2hpbGUgKCEodWFydFtVQVJUX0xTUiA8PCBzaGlmdF0gJiBVQVJUX0xTUl9USFJFKSkKKwkJCQliYXJyaWVyKCk7CisJCQl1YXJ0W1VBUlRfVFggPDwgc2hpZnRdID0gJ1xyJzsKKwkJfQorCX0KK30KKworLyoKKyAqIG5vdGhpbmcgdG8gZG8KKyAqLworI2RlZmluZSBhcmNoX2RlY29tcF9zZXR1cCgpCisjZGVmaW5lIGFyY2hfZGVjb21wX3dkb2coKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC91c2IuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvdXNiLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQzOGM2YwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvdXNiLmgKQEAgLTAsMCArMSwxMDggQEAKKy8vIGluY2x1ZGUvYXNtLWFybS9tYWNoLW9tYXAvdXNiLmgKKworI2lmbmRlZglfX0FTTV9BUkNIX09NQVBfVVNCX0gKKyNkZWZpbmUJX19BU01fQVJDSF9PTUFQX1VTQl9ICisKKyNpbmNsdWRlIDxhc20vYXJjaC9ib2FyZC5oPgorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisjZGVmaW5lIE9UR19CQVNFCQkJMHhmZmZiMDQwMAorI2RlZmluZSBVRENfQkFTRQkJCTB4ZmZmYjQwMDAKKyNkZWZpbmUgT01BUF9PSENJX0JBU0UJCQkweGZmZmJhMDAwCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8qCisgKiBPVEcgYW5kIHRyYW5zY2VpdmVyIHJlZ2lzdGVycywgZm9yIE9NQVBzIHN0YXJ0aW5nIHdpdGggQVJNOTI2CisgKi8KKyNkZWZpbmUgT1RHX1JFRzMyKG9mZnNldCkJCV9fUkVHMzIoT1RHX0JBU0UgKyAob2Zmc2V0KSkKKyNkZWZpbmUgT1RHX1JFRzE2KG9mZnNldCkJCV9fUkVHMTYoT1RHX0JBU0UgKyAob2Zmc2V0KSkKKworI2RlZmluZSBPVEdfUkVWX1JFRwkJCU9UR19SRUczMigweDAwKQorI2RlZmluZSBPVEdfU1lTQ09OXzFfUkVHCQlPVEdfUkVHMzIoMHgwNCkKKyMJZGVmaW5lCSBVU0IyX1RSWF9NT0RFKHcpCSgoKHcpPj4yNCkmMHgwNykKKyMJZGVmaW5lCSBVU0IxX1RSWF9NT0RFKHcpCSgoKHcpPj4yMCkmMHgwNykKKyMJZGVmaW5lCSBVU0IwX1RSWF9NT0RFKHcpCSgoKHcpPj4xNikmMHgwNykKKyMJZGVmaW5lCSBPVEdfSURMRV9FTgkJKDEgPDwgMTUpCisjCWRlZmluZQkgSFNUX0lETEVfRU4JCSgxIDw8IDE0KQorIwlkZWZpbmUJIERFVl9JRExFX0VOCQkoMSA8PCAxMykKKyMJZGVmaW5lCSBPVEdfUkVTRVRfRE9ORQkJKDEgPDwgMikKKyNkZWZpbmUgT1RHX1NZU0NPTl8yX1JFRwkJT1RHX1JFRzMyKDB4MDgpCisjCWRlZmluZQkgT1RHX0VOCQkJKDEgPDwgMzEpCisjCWRlZmluZQkgVVNCWF9TWU5DSFJPCQkoMSA8PCAzMCkKKyMJZGVmaW5lCSBPVEdfTVNUMTYJCSgxIDw8IDI5KQorIwlkZWZpbmUJIFNSUF9HUERBVEEJCSgxIDw8IDI4KQorIwlkZWZpbmUJIFNSUF9HUERWQlVTCQkoMSA8PCAyNykKKyMJZGVmaW5lCSBTUlBfR1BVVkJVUyh3KQkJKCgodyk+PjI0KSYweDA3KQorIwlkZWZpbmUJIEFfV0FJVF9WUklTRSh3KQkoKCh3KT4+MjApJjB4MDcpCisjCWRlZmluZQkgQl9BU0VfQlJTVCh3KQkJKCgodyk+PjE2KSYweDA3KQorIwlkZWZpbmUJIFNSUF9EUFcJCSgxIDw8IDE0KQorIwlkZWZpbmUJIFNSUF9EQVRBCQkoMSA8PCAxMykKKyMJZGVmaW5lCSBTUlBfVkJVUwkJKDEgPDwgMTIpCisjCWRlZmluZQkgT1RHX1BBREVOCQkoMSA8PCAxMCkKKyMJZGVmaW5lCSBITUNfUEFERU4JCSgxIDw8IDkpCisjCWRlZmluZQkgVUhPU1RfRU4JCSgxIDw8IDgpCisjCWRlZmluZQkgSE1DX1RMTFNQRUVECQkoMSA8PCA3KQorIwlkZWZpbmUJIEhNQ19UTExBVFRBQ0gJCSgxIDw8IDYpCisjCWRlZmluZQkgT1RHX0hNQyh3KQkJKCgodyk+PjApJjB4M2YpCisjZGVmaW5lIE9UR19DVFJMX1JFRwkJCU9UR19SRUczMigweDBjKQorIwlkZWZpbmUJIE9UR19BU0VTU1ZMRAkJKDEgPDwgMjApCisjCWRlZmluZQkgT1RHX0JTRVNTRU5ECQkoMSA8PCAxOSkKKyMJZGVmaW5lCSBPVEdfQlNFU1NWTEQJCSgxIDw8IDE4KQorIwlkZWZpbmUJIE9UR19WQlVTVkxECQkoMSA8PCAxNykKKyMJZGVmaW5lCSBPVEdfSUQJCQkoMSA8PCAxNikKKyMJZGVmaW5lCSBPVEdfRFJJVkVSX1NFTAkJKDEgPDwgMTUpCisjCWRlZmluZQkgT1RHX0FfU0VUQl9ITlBFTgkoMSA8PCAxMikKKyMJZGVmaW5lCSBPVEdfQV9CVVNSRVEJCSgxIDw8IDExKQorIwlkZWZpbmUJIE9UR19CX0hOUEVOCQkoMSA8PCA5KQorIwlkZWZpbmUJIE9UR19CX0JVU1JFUQkJKDEgPDwgOCkKKyMJZGVmaW5lCSBPVEdfQlVTRFJPUAkJKDEgPDwgNykKKyMJZGVmaW5lCSBPVEdfUFVMTERPV04JCSgxIDw8IDUpCisjCWRlZmluZQkgT1RHX1BVTExVUAkJKDEgPDwgNCkKKyMJZGVmaW5lCSBPVEdfRFJWX1ZCVVMJCSgxIDw8IDMpCisjCWRlZmluZQkgT1RHX1BEX1ZCVVMJCSgxIDw8IDIpCisjCWRlZmluZQkgT1RHX1BVX1ZCVVMJCSgxIDw8IDEpCisjCWRlZmluZQkgT1RHX1BVX0lECQkoMSA8PCAwKQorI2RlZmluZSBPVEdfSVJRX0VOX1JFRwkJCU9UR19SRUcxNigweDEwKQorIwlkZWZpbmUJIERSSVZFUl9TV0lUQ0gJCSgxIDw8IDE1KQorIwlkZWZpbmUJIEFfVkJVU19FUlIJCSgxIDw8IDEzKQorIwlkZWZpbmUJIEFfUkVRX1RNUk9VVAkJKDEgPDwgMTIpCisjCWRlZmluZQkgQV9TUlBfREVURUNUCQkoMSA8PCAxMSkKKyMJZGVmaW5lCSBCX0hOUF9GQUlMCQkoMSA8PCAxMCkKKyMJZGVmaW5lCSBCX1NSUF9UTVJPVVQJCSgxIDw8IDkpCisjCWRlZmluZQkgQl9TUlBfRE9ORQkJKDEgPDwgOCkKKyMJZGVmaW5lCSBCX1NSUF9TVEFSVEVECQkoMSA8PCA3KQorIwlkZWZpbmUJIE9QUlRfQ0hHCQkoMSA8PCAwKQorI2RlZmluZSBPVEdfSVJRX1NSQ19SRUcJCQlPVEdfUkVHMTYoMHgxNCkKKwkvLyBzYW1lIGJpdHMgYXMgaW4gSVJRX0VOCisjZGVmaW5lIE9UR19PVVRDVFJMX1JFRwkJCU9UR19SRUcxNigweDE4KQorIwlkZWZpbmUJIE9UR1ZQRAkJCSgxIDw8IDE0KQorIwlkZWZpbmUJIE9UR1ZQVQkJCSgxIDw8IDEzKQorIwlkZWZpbmUJIE9UR1BVSUQJCSgxIDw8IDEyKQorIwlkZWZpbmUJIFVTQjJWRFIJCSgxIDw8IDEwKQorIwlkZWZpbmUJIFVTQjJQREVOCQkoMSA8PCA5KQorIwlkZWZpbmUJIFVTQjJQVUVOCQkoMSA8PCA4KQorIwlkZWZpbmUJIFVTQjFWRFIJCSgxIDw8IDYpCisjCWRlZmluZQkgVVNCMVBERU4JCSgxIDw8IDUpCisjCWRlZmluZQkgVVNCMVBVRU4JCSgxIDw8IDQpCisjCWRlZmluZQkgVVNCMFZEUgkJKDEgPDwgMikKKyMJZGVmaW5lCSBVU0IwUERFTgkJKDEgPDwgMSkKKyMJZGVmaW5lCSBVU0IwUFVFTgkJKDEgPDwgMCkKKyNkZWZpbmUgT1RHX1RFU1RfUkVHCQkJT1RHX1JFRzE2KDB4MjApCisjZGVmaW5lIE9UR19WRU5ET1JfQ09ERV9SRUcJCU9UR19SRUczMigweGZjKQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisjZGVmaW5lCVVTQl9UUkFOU0NFSVZFUl9DVFJMX1JFRwlfX1JFRzMyKDB4ZmZmZTEwMDAgKyAweDAwNjQpCisjCWRlZmluZQlDT05GX1VTQjJfVU5JX1IJCSgxIDw8IDgpCisjCWRlZmluZQlDT05GX1VTQjFfVU5JX1IJCSgxIDw8IDcpCisjCWRlZmluZQlDT05GX1VTQl9QT1JUMF9SKHgpCSgoKHgpPj40KSYweDcpCisjCWRlZmluZQlDT05GX1VTQjBfSVNPTEFURV9SCSgxIDw8IDMpCisjCWRlZmluZQlDT05GX1VTQl9QV1JETl9ETV9SCSgxIDw8IDIpCisjCWRlZmluZQlDT05GX1VTQl9QV1JETl9EUF9SCSgxIDw8IDEpCisKKworCisKKyNlbmRpZgkvKiBfX0FTTV9BUkNIX09NQVBfVVNCX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvdm1hbGxvYy5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC92bWFsbG9jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzZhODM1OAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvdm1hbGxvYy5oCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC92bWFsbG9jLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDAwIFJ1c3NlbGwgS2luZy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworLyoKKyAqIEp1c3QgYW55IGFyYml0cmFyeSBvZmZzZXQgdG8gdGhlIHN0YXJ0IG9mIHRoZSB2bWFsbG9jIFZNIGFyZWE6IHRoZQorICogY3VycmVudCA4TUIgdmFsdWUganVzdCBtZWFucyB0aGF0IHRoZXJlIHdpbGwgYmUgYSA4TUIgImhvbGUiIGFmdGVyIHRoZQorICogcGh5c2ljYWwgbWVtb3J5IHVudGlsIHRoZSBrZXJuZWwgdmlydHVhbCBtZW1vcnkgc3RhcnRzLiAgVGhhdCBtZWFucyB0aGF0CisgKiBhbnkgb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMgd2lsbCBob3BlZnVsbHkgYmUgY2F1Z2h0LgorICogVGhlIHZtYWxsb2MoKSByb3V0aW5lcyBsZWF2ZXMgYSBob2xlIG9mIDRrQiBiZXR3ZWVuIGVhY2ggdm1hbGxvY2VkCisgKiBhcmVhIGZvciB0aGUgc2FtZSByZWFzb24uIDspCisgKi8KKyNkZWZpbmUgVk1BTExPQ19PRkZTRVQJICAoOCoxMDI0KjEwMjQpCisjZGVmaW5lIFZNQUxMT0NfU1RBUlQJICAoKCh1bnNpZ25lZCBsb25nKWhpZ2hfbWVtb3J5ICsgVk1BTExPQ19PRkZTRVQpICYgfihWTUFMTE9DX09GRlNFVC0xKSkKKyNkZWZpbmUgVk1BTExPQ19WTUFERFIoeCkgKCh1bnNpZ25lZCBsb25nKSh4KSkKKyNkZWZpbmUgVk1BTExPQ19FTkQJICAoUEFHRV9PRkZTRVQgKyAweDEwMDAwMDAwKQorCg==