LyoKICogRGVmaW5pdGlvbnMgZm9yIHRoZSBGVERJIFVTQiBTaW5nbGUgUG9ydCBTZXJpYWwgQ29udmVydGVyIC0gCiAqIGtub3duIGFzIEZURElfU0lPIChTZXJpYWwgSW5wdXQvT3V0cHV0IGFwcGxpY2F0aW9uIG9mIHRoZSBjaGlwc2V0KSAKICoKICogVGhlIGV4YW1wbGUgSSBoYXZlIGlzIGtub3duIGFzIHRoZSBVU0MtMTAwMCB3aGljaCBpcyBhdmFpbGFibGUgZnJvbQogKiBodHRwOi8vd3d3LmRzZS5jby5ueiAtIGNhdCBubyBYSDQyMTQgSXQgbG9va3Mgc2ltaWxhciB0byB0aGlzOgogKiBodHRwOi8vd3d3LmRhbnNkYXRhLmNvbS91c2JzZXIuaHRtIGJ1dCBJIGNhbid0IGJlIHN1cmUgVGhlcmUgYXJlIG90aGVyCiAqIFVTQy0xMDAwcyB3aGljaCBkb24ndCBsb29rIGxpa2UgbXkgZGV2aWNlIHRob3VnaCBzbyBiZXdhcmUhCiAqCiAqIFRoZSBkZXZpY2UgaXMgYmFzZWQgb24gdGhlIEZUREkgRlQ4VTEwMEFYIGNoaXAuIEl0IGhhcyBhIERCMjUgb24gb25lIHNpZGUsIAogKiBVU0Igb24gdGhlIG90aGVyLgogKgogKiBUaGFueCB0byBGVERJIChodHRwOi8vd3d3LmZ0ZGkuY28udWspIGZvciBzbyBraW5kbHkgcHJvdmlkaW5nIGRldGFpbHMKICogb2YgdGhlIHByb3RvY29sIHJlcXVpcmVkIHRvIHRhbGsgdG8gdGhlIGRldmljZSBhbmQgb25nb2luZyBhc3Npc3RlbmNlCiAqIGR1cmluZyBkZXZlbG9wbWVudC4KICoKICogQmlsbCBSeWRlciAtIGJyeWRlckBzZ2kuY29tIGZvcm1lcmx5IG9mIFNpbGljb24gR3JhcGhpY3MsIEluYy4tIHdyb3RlIHRoZSAKICogRlRESV9TSU8gaW1wbGVtZW50YXRpb24uCiAqCiAqIFBoaWxpcHAgR/xocmluZyAtIHBnQGZ1dHVyZXdhcmUuYXQgLSBhZGRlZCB0aGUgRGV2aWNlIElEIG9mIHRoZSBVU0IgcmVsYWlzCiAqIGZyb20gUnVkb2xmIEd1Z2xlcgogKgogKi8KCiNkZWZpbmUgRlRESV9WSUQJMHgwNDAzCS8qIFZlbmRvciBJZCAqLwojZGVmaW5lIEZURElfU0lPX1BJRAkweDgzNzIJLyogUHJvZHVjdCBJZCBTSU8gYXBwbGljYXRpb24gb2YgOFUxMDBBWCAgKi8KI2RlZmluZSBGVERJXzhVMjMyQU1fUElEIDB4NjAwMSAvKiBTaW1pbGFyIGRldmljZSB0byBTSU8gYWJvdmUgKi8KI2RlZmluZSBGVERJXzhVMjMyQU1fQUxUX1BJRCAweDYwMDYgLyogRlRESSdzIGFsdGVybmF0ZSBQSUQgZm9yIGFib3ZlICovCiNkZWZpbmUgRlRESV84VTIyMzJDX1BJRCAweDYwMTAgLyogRHVhbCBjaGFubmVsIGRldmljZSAqLwojZGVmaW5lIEZURElfUkVMQUlTX1BJRAkweEZBMTAgIC8qIFJlbGFpcyBkZXZpY2UgZnJvbSBSdWRvbGYgR3VnbGVyICovCiNkZWZpbmUgRlRESV9ORl9SSUNfVklECTB4MERDRAkvKiBWZW5kb3IgSWQgKi8KI2RlZmluZSBGVERJX05GX1JJQ19QSUQJMHgwMDAxCS8qIFByb2R1Y3QgSWQgKi8KCgovKiB3d3cuY2FudXNiLmNvbSBMYXdpY2VsIENBTlVTQiBkZXZpY2UgKi8KI2RlZmluZSBGVERJX0NBTlVTQl9QSUQgMHhGRkE4IC8qIFByb2R1Y3QgSWQgKi8KCi8qIEFscGhhTWljcm8gQ29tcG9uZW50cyBBTUMtMjMyVVNCMDEgZGV2aWNlICovCiNkZWZpbmUgRlRESV9BTUMyMzJfUElEIDB4RkYwMCAvKiBQcm9kdWN0IElkICovCgovKiBBQ1QgU29sdXRpb25zIEhvbWVQcm8gWldhdmUgaW50ZXJmYWNlIChodHRwOi8vd3d3LmFjdC1zb2x1dGlvbnMuY29tL0hvbWVQcm8uaHRtKSAqLwojZGVmaW5lIEZURElfQUNUWldBVkVfUElECTB4RjJEMAoKCi8qIHd3dy5zdGFydGluZy1wb2ludC1zeXN0ZW1zLmNvbSC1Q2hhbWVsZW9uIGRldmljZSAqLwojZGVmaW5lIEZURElfTUlDUk9fQ0hBTUVMRU9OX1BJRAkweENBQTAJLyogUHJvZHVjdCBJZCAqLwoKLyogd3d3LmlydHJhbnMuZGUgZGV2aWNlICovCiNkZWZpbmUgRlRESV9JUlRSQU5TX1BJRCAweEZDNjAgLyogUHJvZHVjdCBJZCAqLwoKCi8qIHd3dy50aG91Z2h0dGVjaG5vbG9neS5jb20vIFRULVVTQiBwcm92aWRlIHdpdGggcHJvY29tcCB1c2UgZnRkaV9zaW8gKi8KI2RlZmluZSBGVERJX1RUVVNCX1BJRCAweEZGMjAgLyogUHJvZHVjdCBJZCAqLwoKLyogaVBsdXMgZGV2aWNlICovCiNkZWZpbmUgRlRESV9JUExVU19QSUQgMHhEMDcwIC8qIFByb2R1Y3QgSWQgKi8KCi8qIHd3dy5jcnlzdGFsZm9udHouY29tIGRldmljZXMgLSB0aGFueCBmb3IgcHJvdmlkaW5nIGZyZWUgZGV2aWNlcyBmb3IgZXZhbHVhdGlvbiAhICovCi8qIHRoZXkgdXNlIHRoZSBmdGRpIGNoaXBzZXQgZm9yIHRoZSBVU0IgaW50ZXJmYWNlIGFuZCB0aGUgdmVuZG9yIGlkIGlzIHRoZSBzYW1lICovCiNkZWZpbmUgRlRESV9YRl82MzJfUElEIDB4RkMwOAkvKiA2MzI6IDE2eDIgQ2hhcmFjdGVyIERpc3BsYXkgKi8KI2RlZmluZSBGVERJX1hGXzYzNF9QSUQgMHhGQzA5CS8qIDYzNDogMjB4NCBDaGFyYWN0ZXIgRGlzcGxheSAqLwojZGVmaW5lIEZURElfWEZfNTQ3X1BJRCAweEZDMEEJLyogNTQ3OiBUd28gbGluZSBEaXNwbGF5ICovCiNkZWZpbmUgRlRESV9YRl82MzNfUElEIDB4RkMwQgkvKiA2MzM6IDE2eDIgQ2hhcmFjdGVyIERpc3BsYXkgd2l0aCBLZXlzICovCiNkZWZpbmUgRlRESV9YRl82MzFfUElEIDB4RkMwQwkvKiA2MzE6IDIweDIgQ2hhcmFjdGVyIERpc3BsYXkgKi8KI2RlZmluZSBGVERJX1hGXzYzNV9QSUQgMHhGQzBECS8qIDYzNTogMjB4NCBDaGFyYWN0ZXIgRGlzcGxheSAqLwojZGVmaW5lIEZURElfWEZfNjQwX1BJRCAweEZDMEUJLyogNjQwOiBUd28gbGluZSBEaXNwbGF5ICovCiNkZWZpbmUgRlRESV9YRl82NDJfUElEIDB4RkMwRgkvKiA2NDI6IFR3byBsaW5lIERpc3BsYXkgKi8KCi8qIFZpZGVvIE5ldHdvcmtzIExpbWl0ZWQgLyBIb21lY2hvaWNlIGluIHRoZSBVSyB1c2UgYW4gZnRkaS1iYXNlZCBkZXZpY2UgZm9yIHRoZWlyIDFNYiAqLwovKiBicm9hZGJhbmQgaW50ZXJuZXQgc2VydmljZS4gIFRoZSBmb2xsb3dpbmcgUElEIGlzIGV4aGliaXRlZCBieSB0aGUgdXNiIGRldmljZSBzdXBwbGllZCAqLwovKiAodGhlIFZJRCBpcyB0aGUgc3RhbmRhcmQgZnRkaSB2aWQgKEZURElfVklEKSAqLwojZGVmaW5lIEZURElfVk5IQ1BDVVNCX0RfUElEIDB4ZmUzOCAvKiBQcm9kdWN0IElkICovCgovKgogKiBQQ0RKIHVzZSBmdGRpIGJhc2VkIGRqLWNvbnRyb2xsZXJzLiAgVGhlIGZvbGxvd2luZyBQSUQgaXMgZm9yIHRoZWlyIERBQy0yIGRldmljZQogKiBodHRwOi8vd3d3LnBjZGpoYXJkd2FyZS5jb20vREFDMi5hc3AgKFBJRCBzZW50IGJ5IFdvdXRlciBQYWVzZW4pCiAqICh0aGUgVklEIGlzIHRoZSBzdGFuZGFyZCBmdGRpIHZpZCAoRlRESV9WSUQpICovCiNkZWZpbmUgRlRESV9QQ0RKX0RBQzJfUElEIDB4RkE4OAoKLyoKICogVGhlIGZvbGxvd2luZyBhcmUgdGhlIHZhbHVlcyBmb3IgdGhlIE1hdHJpeCBPcmJpdGFsIExDRCBkaXNwbGF5cywKICogd2hpY2ggYXJlIHRoZSBGVDIzMkJNICggc2ltaWxhciB0byB0aGUgOFUyMzJBTSApCiAqLwojZGVmaW5lIEZURElfTVRYT1JCXzBfUElEICAgICAgMHhGQTAwICAvKiBNYXRyaXggT3JiaXRhbCBQcm9kdWN0IElkICovCiNkZWZpbmUgRlRESV9NVFhPUkJfMV9QSUQgICAgICAweEZBMDEgIC8qIE1hdHJpeCBPcmJpdGFsIFByb2R1Y3QgSWQgKi8KI2RlZmluZSBGVERJX01UWE9SQl8yX1BJRCAgICAgIDB4RkEwMiAgLyogTWF0cml4IE9yYml0YWwgUHJvZHVjdCBJZCAqLwojZGVmaW5lIEZURElfTVRYT1JCXzNfUElEICAgICAgMHhGQTAzICAvKiBNYXRyaXggT3JiaXRhbCBQcm9kdWN0IElkICovCiNkZWZpbmUgRlRESV9NVFhPUkJfNF9QSUQgICAgICAweEZBMDQgIC8qIE1hdHJpeCBPcmJpdGFsIFByb2R1Y3QgSWQgKi8KI2RlZmluZSBGVERJX01UWE9SQl81X1BJRCAgICAgIDB4RkEwNSAgLyogTWF0cml4IE9yYml0YWwgUHJvZHVjdCBJZCAqLwojZGVmaW5lIEZURElfTVRYT1JCXzZfUElEICAgICAgMHhGQTA2ICAvKiBNYXRyaXggT3JiaXRhbCBQcm9kdWN0IElkICovCgovKiBJbnRlcmJpb21ldHJpY3MgVVNCIEkvTyBCb2FyZCAqLwovKiBEZXZlbG9wZWQgZm9yIEludGVyYmlvbWV0cmljcyBieSBSdWRvbGYgR3VnbGVyICovCiNkZWZpbmUgSU5URVJCSU9NRVRSSUNTX1ZJRCAgICAgICAgICAgICAgMHgxMjA5CiNkZWZpbmUgSU5URVJCSU9NRVRSSUNTX0lPQk9BUkRfUElEICAgICAgMHgxMDAyCiNkZWZpbmUgSU5URVJCSU9NRVRSSUNTX01JTklfSU9CT0FSRF9QSUQgMHgxMDA2CgovKgogKiBUaGUgZm9sbG93aW5nIGFyZSB0aGUgdmFsdWVzIGZvciB0aGUgUGVybGUgU3lzdGVtcwogKiBVbHRyYVBvcnQgVVNCIHNlcmlhbCBjb252ZXJ0ZXJzCiAqLwojZGVmaW5lIEZURElfUEVSTEVfVUxUUkFQT1JUX1BJRCAweEYwQzAJLyogUGVybGUgVWx0cmFQb3J0IFByb2R1Y3QgSWQgKi8KCi8qCiAqIFRoZSBmb2xsb3dpbmcgYXJlIHRoZSB2YWx1ZXMgZm9yIHRoZSBTZWFsZXZlbCBTZWFMSU5LKyBhZGFwdGVycy4KICogKE9yaWdpbmFsIGxpc3Qgc2VudCBieSBUdWFuIEhvYW5nLiAgSWFuIEFiYm90dCByZW5hbWVkIHRoZSBtYWNyb3MgYW5kCiAqIHJlbW92ZWQgc29tZSBQSURzIHRoYXQgZG9uJ3Qgc2VlbSB0byBtYXRjaCBhbnkgZXhpc3RpbmcgcHJvZHVjdHMuKQogKi8KI2RlZmluZSBTRUFMRVZFTF9WSUQJCTB4MGM1MgkvKiBTZWFsZXZlbCBWZW5kb3IgSUQgKi8KI2RlZmluZSBTRUFMRVZFTF8yMTAxX1BJRAkweDIxMDEJLyogU2VhTElOSysyMzIgKDIxMDEvMjEwNSkgKi8KI2RlZmluZSBTRUFMRVZFTF8yMTAyX1BJRAkweDIxMDIJLyogU2VhTElOSys0ODUgKDIxMDIpICovCiNkZWZpbmUgU0VBTEVWRUxfMjEwM19QSUQJMHgyMTAzCS8qIFNlYUxJTksrMjMySSAoMjEwMykgKi8KI2RlZmluZSBTRUFMRVZFTF8yMTA0X1BJRAkweDIxMDQJLyogU2VhTElOSys0ODVJICgyMTA0KSAqLwojZGVmaW5lIFNFQUxFVkVMXzIyMDFfMV9QSUQJMHgyMjExCS8qIFNlYVBPUlQrMi8yMzIgKDIyMDEpIFBvcnQgMSAqLwojZGVmaW5lIFNFQUxFVkVMXzIyMDFfMl9QSUQJMHgyMjIxCS8qIFNlYVBPUlQrMi8yMzIgKDIyMDEpIFBvcnQgMiAqLwojZGVmaW5lIFNFQUxFVkVMXzIyMDJfMV9QSUQJMHgyMjEyCS8qIFNlYVBPUlQrMi80ODUgKDIyMDIpIFBvcnQgMSAqLwojZGVmaW5lIFNFQUxFVkVMXzIyMDJfMl9QSUQJMHgyMjIyCS8qIFNlYVBPUlQrMi80ODUgKDIyMDIpIFBvcnQgMiAqLwojZGVmaW5lIFNFQUxFVkVMXzIyMDNfMV9QSUQJMHgyMjEzCS8qIFNlYVBPUlQrMiAoMjIwMykgUG9ydCAxICovCiNkZWZpbmUgU0VBTEVWRUxfMjIwM18yX1BJRAkweDIyMjMJLyogU2VhUE9SVCsyICgyMjAzKSBQb3J0IDIgKi8KI2RlZmluZSBTRUFMRVZFTF8yNDAxXzFfUElECTB4MjQxMQkvKiBTZWFQT1JUKzQvMjMyICgyNDAxKSBQb3J0IDEgKi8KI2RlZmluZSBTRUFMRVZFTF8yNDAxXzJfUElECTB4MjQyMQkvKiBTZWFQT1JUKzQvMjMyICgyNDAxKSBQb3J0IDIgKi8KI2RlZmluZSBTRUFMRVZFTF8yNDAxXzNfUElECTB4MjQzMQkvKiBTZWFQT1JUKzQvMjMyICgyNDAxKSBQb3J0IDMgKi8KI2RlZmluZSBTRUFMRVZFTF8yNDAxXzRfUElECTB4MjQ0MQkvKiBTZWFQT1JUKzQvMjMyICgyNDAxKSBQb3J0IDQgKi8KI2RlZmluZSBTRUFMRVZFTF8yNDAyXzFfUElECTB4MjQxMgkvKiBTZWFQT1JUKzQvNDg1ICgyNDAyKSBQb3J0IDEgKi8KI2RlZmluZSBTRUFMRVZFTF8yNDAyXzJfUElECTB4MjQyMgkvKiBTZWFQT1JUKzQvNDg1ICgyNDAyKSBQb3J0IDIgKi8KI2RlZmluZSBTRUFMRVZFTF8yNDAyXzNfUElECTB4MjQzMgkvKiBTZWFQT1JUKzQvNDg1ICgyNDAyKSBQb3J0IDMgKi8KI2RlZmluZSBTRUFMRVZFTF8yNDAyXzRfUElECTB4MjQ0MgkvKiBTZWFQT1JUKzQvNDg1ICgyNDAyKSBQb3J0IDQgKi8KI2RlZmluZSBTRUFMRVZFTF8yNDAzXzFfUElECTB4MjQxMwkvKiBTZWFQT1JUKzQgKDI0MDMpIFBvcnQgMSAqLwojZGVmaW5lIFNFQUxFVkVMXzI0MDNfMl9QSUQJMHgyNDIzCS8qIFNlYVBPUlQrNCAoMjQwMykgUG9ydCAyICovCiNkZWZpbmUgU0VBTEVWRUxfMjQwM18zX1BJRAkweDI0MzMJLyogU2VhUE9SVCs0ICgyNDAzKSBQb3J0IDMgKi8KI2RlZmluZSBTRUFMRVZFTF8yNDAzXzRfUElECTB4MjQ0MwkvKiBTZWFQT1JUKzQgKDI0MDMpIFBvcnQgNCAqLwojZGVmaW5lIFNFQUxFVkVMXzI4MDFfMV9QSUQJMFgyODExCS8qIFNlYUxJTksrOC8yMzIgKDI4MDEpIFBvcnQgMSAqLwojZGVmaW5lIFNFQUxFVkVMXzI4MDFfMl9QSUQJMFgyODIxCS8qIFNlYUxJTksrOC8yMzIgKDI4MDEpIFBvcnQgMiAqLwojZGVmaW5lIFNFQUxFVkVMXzI4MDFfM19QSUQJMFgyODMxCS8qIFNlYUxJTksrOC8yMzIgKDI4MDEpIFBvcnQgMyAqLwojZGVmaW5lIFNFQUxFVkVMXzI4MDFfNF9QSUQJMFgyODQxCS8qIFNlYUxJTksrOC8yMzIgKDI4MDEpIFBvcnQgNCAqLwojZGVmaW5lIFNFQUxFVkVMXzI4MDFfNV9QSUQJMFgyODUxCS8qIFNlYUxJTksrOC8yMzIgKDI4MDEpIFBvcnQgNSAqLwojZGVmaW5lIFNFQUxFVkVMXzI4MDFfNl9QSUQJMFgyODYxCS8qIFNlYUxJTksrOC8yMzIgKDI4MDEpIFBvcnQgNiAqLwojZGVmaW5lIFNFQUxFVkVMXzI4MDFfN19QSUQJMFgyODcxCS8qIFNlYUxJTksrOC8yMzIgKDI4MDEpIFBvcnQgNyAqLwojZGVmaW5lIFNFQUxFVkVMXzI4MDFfOF9QSUQJMFgyODgxCS8qIFNlYUxJTksrOC8yMzIgKDI4MDEpIFBvcnQgOCAqLwojZGVmaW5lIFNFQUxFVkVMXzI4MDJfMV9QSUQJMFgyODEyCS8qIFNlYUxJTksrOC80ODUgKDI4MDIpIFBvcnQgMSAqLwojZGVmaW5lIFNFQUxFVkVMXzI4MDJfMl9QSUQJMFgyODIyCS8qIFNlYUxJTksrOC80ODUgKDI4MDIpIFBvcnQgMiAqLwojZGVmaW5lIFNFQUxFVkVMXzI4MDJfM19QSUQJMFgyODMyCS8qIFNlYUxJTksrOC80ODUgKDI4MDIpIFBvcnQgMyAqLwojZGVmaW5lIFNFQUxFVkVMXzI4MDJfNF9QSUQJMFgyODQyCS8qIFNlYUxJTksrOC80ODUgKDI4MDIpIFBvcnQgNCAqLwojZGVmaW5lIFNFQUxFVkVMXzI4MDJfNV9QSUQJMFgyODUyCS8qIFNlYUxJTksrOC80ODUgKDI4MDIpIFBvcnQgNSAqLwojZGVmaW5lIFNFQUxFVkVMXzI4MDJfNl9QSUQJMFgyODYyCS8qIFNlYUxJTksrOC80ODUgKDI4MDIpIFBvcnQgNiAqLwojZGVmaW5lIFNFQUxFVkVMXzI4MDJfN19QSUQJMFgyODcyCS8qIFNlYUxJTksrOC80ODUgKDI4MDIpIFBvcnQgNyAqLwojZGVmaW5lIFNFQUxFVkVMXzI4MDJfOF9QSUQJMFgyODgyCS8qIFNlYUxJTksrOC80ODUgKDI4MDIpIFBvcnQgOCAqLwojZGVmaW5lIFNFQUxFVkVMXzI4MDNfMV9QSUQJMFgyODEzCS8qIFNlYUxJTksrOCAoMjgwMykgUG9ydCAxICovCiNkZWZpbmUgU0VBTEVWRUxfMjgwM18yX1BJRAkwWDI4MjMgCS8qIFNlYUxJTksrOCAoMjgwMykgUG9ydCAyICovCiNkZWZpbmUgU0VBTEVWRUxfMjgwM18zX1BJRAkwWDI4MzMgCS8qIFNlYUxJTksrOCAoMjgwMykgUG9ydCAzICovCiNkZWZpbmUgU0VBTEVWRUxfMjgwM180X1BJRAkwWDI4NDMgCS8qIFNlYUxJTksrOCAoMjgwMykgUG9ydCA0ICovCiNkZWZpbmUgU0VBTEVWRUxfMjgwM181X1BJRAkwWDI4NTMgCS8qIFNlYUxJTksrOCAoMjgwMykgUG9ydCA1ICovCiNkZWZpbmUgU0VBTEVWRUxfMjgwM182X1BJRAkwWDI4NjMgCS8qIFNlYUxJTksrOCAoMjgwMykgUG9ydCA2ICovCiNkZWZpbmUgU0VBTEVWRUxfMjgwM183X1BJRAkwWDI4NzMgCS8qIFNlYUxJTksrOCAoMjgwMykgUG9ydCA3ICovCiNkZWZpbmUgU0VBTEVWRUxfMjgwM184X1BJRAkwWDI4ODMgCS8qIFNlYUxJTksrOCAoMjgwMykgUG9ydCA4ICovCgovKgogKiBUaGUgZm9sbG93aW5nIGFyZSB0aGUgdmFsdWVzIGZvciB0d28gS09CSUwgY2hpcGNhcmQgdGVybWluYWxzLgogKi8KI2RlZmluZSBLT0JJTF9WSUQJCTB4MGQ0NgkvKiBLT0JJTCBWZW5kb3IgSUQgKi8KI2RlZmluZSBLT0JJTF9DT05WX0IxX1BJRAkweDIwMjAJLyogS09CSUwgS29udmVydGVyIGZvciBCMSAqLwojZGVmaW5lIEtPQklMX0NPTlZfS0FBTl9QSUQJMHgyMDIxCS8qIEtPQklMX0tvbnZlcnRlciBmb3IgS0FBTiAqLwoKLyoKICogSWNvbSBJRC0xIGRpZ2l0YWwgdHJhbnNjZWl2ZXIKICovCgojZGVmaW5lIElDT01fSUQxX1ZJRCAgICAgICAgICAgIDB4MEMyNgojZGVmaW5lIElDT01fSUQxX1BJRCAgICAgICAgICAgIDB4MDAwNAoKLyoKICogQVNLLmZyIGRldmljZXMKICovCiNkZWZpbmUgRlRESV9BU0tfUkRSNDAwX1BJRAkweEM5OTEJLyogQVNLIFJEUiA0MDAgc2VyaWVzIGNhcmQgcmVhZGVyICovCgovKgogKiBEU1MtMjAgU3luYyBTdGF0aW9uIGZvciBTb255IEVyaWNzc29uIFA4MDAKICovCiAKI2RlZmluZSBGVERJX0RTUzIwX1BJRCAgICAgICAgICAweEZDODIgIAoKLyoKICogSG9tZSBFbGVjdHJvbmljcyAod3d3LmhvbWUtZWxlY3Ryby5jb20pIFVTQiBnYWRnZXRzCiAqLwojZGVmaW5lIEZURElfSEVfVElSQTFfUElECTB4RkE3OAkvKiBUaXJhLTEgSVIgdHJhbnNjZWl2ZXIgKi8KCi8qIFVTQi1VSVJUIC0gQW4gaW5mcmFyZWQgcmVjZWl2ZXIgYW5kIHRyYW5zbWl0dGVyIHVzaW5nIHRoZSA4VTIzMkFNIGNoaXAgKi8KLyogaHR0cDovL2hvbWUuZWFydGhsaW5rLm5ldC9+anJoZWVzL1VTQlVJUlQvaW5kZXguaHRtICovCiNkZWZpbmUgRlRESV9VU0JfVUlSVF9QSUQJMHhGODUwCS8qIFByb2R1Y3QgSWQgKi8KCi8qIFROQy1YIFVTQi10by1wYWNrZXQtcmFkaW8gYWRhcHRlciwgdmVyc2lvbnMgcHJpb3IgdG8gMy4wIChETFAgbW9kdWxlKSAqLwoKI2RlZmluZSBGVERJX1ROQ19YX1BJRAkJMHhFQkUwCgovKgogKiBFTFYgVVNCIGRldmljZXMgc3VibWl0dGVkIGJ5IENocmlzdGlhbiBBYnQgb2YgRUxWICh3d3cuZWx2LmRlKS4KICogQWxsIG9mIHRoZXNlIGRldmljZXMgdXNlIEZUREkncyB2ZW5kb3IgSUQgKDB4MDQwMykuCiAqCiAqIFRoZSBwcmV2aW91c2x5IGluY2x1ZGVkIFBJRCBmb3IgdGhlIFVPIDEwMCBtb2R1bGUgd2FzIGluY29ycmVjdC4KICogSW4gZmFjdCwgdGhhdCBQSUQgd2FzIGZvciBFTFYncyBVUiAxMDAgVVNCLVJTMjMyIGNvbnZlcnRlciAoMHhGQjU4KS4KICoKICogQXJtaW4gTGFldWdlciBvcmlnaW5hbGx5IHNlbnQgdGhlIFBJRCBmb3IgdGhlIFVNIDEwMCBtb2R1bGUuCiAqLwojZGVmaW5lIEZURElfRUxWX1VSMTAwX1BJRAkweEZCNTgJLyogVVNCLVJTMjMyLVVtc2V0emVyIChVUiAxMDApICovCiNkZWZpbmUgRlRESV9FTFZfVU0xMDBfUElECTB4RkI1QQkvKiBVU0ItTW9kdWwgVU0gMTAwICovCiNkZWZpbmUgRlRESV9FTFZfVU8xMDBfUElECTB4RkI1QgkvKiBVU0ItTW9kdWwgVU8gMTAwICovCiNkZWZpbmUgRlRESV9FTFZfQUxDODUwMF9QSUQJMHhGMDZFCS8qIEFMQyA4NTAwIEV4cGVydCAqLwovKiBBZGRpdGlvbmFsIEVMViBQSURzIHRoYXQgZGVmYXVsdCB0byB1c2luZyB0aGUgRlRESSBEMlhYIGRyaXZlcnMgb24KICogTVMgV2luZG93cywgcmF0aGVyIHRoYW4gdGhlIEZUREkgVmlydHVhbCBDb20gUG9ydCBkcml2ZXJzLgogKiBNYXliZSB0aGVzZSB3aWxsIGJlIGVhc2llciB0byB1c2Ugd2l0aCB0aGUgbGliZnRkaS9saWJ1c2IgdXNlci1zcGFjZQogKiBkcml2ZXJzLCBvciBwb3NzaWJseSB0aGUgQ29tZWRpIGRyaXZlcnMgaW4gc29tZSBjYXNlcy4gKi8KI2RlZmluZSBGVERJX0VMVl9DTEk3MDAwX1BJRAkweEZCNTkJLyogQ29tcHV0ZXItTGlnaHQtSW50ZXJmYWNlIChDTEkgNzAwMCkgKi8KI2RlZmluZSBGVERJX0VMVl9QUFM3MzMwX1BJRAkweEZCNUMJLyogUHJvY2Vzc29yLVBvd2VyLVN1cHBseSAoUFBTIDczMzApICovCiNkZWZpbmUgRlRESV9FTFZfVEZNMTAwX1BJRAkweEZCNUQJLyogVGVtcGVyYXJ0dXItRmV1Y2h0ZSBNZXNzZ2VyYWV0IChURk0gMTAwKSAqLwojZGVmaW5lIEZURElfRUxWX1VERjc3X1BJRAkweEZCNUUJLyogVVNCIERDRiBGdW5rdXJoIChVREYgNzcpICovCiNkZWZpbmUgRlRESV9FTFZfVUlPODhfUElECTB4RkI1RgkvKiBVU0ItSS9PIEludGVyZmFjZSAoVUlPIDg4KSAqLwojZGVmaW5lIEZURElfRUxWX1VBRDhfUElECTB4RjA2OAkvKiBVU0ItQUQtV2FuZGxlciAoVUFEIDgpICovCiNkZWZpbmUgRlRESV9FTFZfVURBN19QSUQJMHhGMDY5CS8qIFVTQi1EQS1XYW5kbGVyIChVREEgNykgKi8KI2RlZmluZSBGVERJX0VMVl9VU0kyX1BJRAkweEYwNkEJLyogVVNCLVNjaHJpdHRtb3RvcmVuLUludGVyZmFjZSAoVVNJIDIpICovCiNkZWZpbmUgRlRESV9FTFZfVDExMDBfUElECTB4RjA2QgkvKiBUaGVybW9tZXRlciAoVCAxMTAwKSAqLwojZGVmaW5lIEZURElfRUxWX1BDRDIwMF9QSUQJMHhGMDZDCS8qIFBDLURhdGVubG9nZ2VyIChQQ0QgMjAwKSAqLwojZGVmaW5lIEZURElfRUxWX1VMQTIwMF9QSUQJMHhGMDZECS8qIFVTQi1MQ0QtQW5zdGV1ZXJ1bmcgKFVMQSAyMDApICovCiNkZWZpbmUgRlRESV9FTFZfRkhaMTAwMFBDX1BJRAkweEYwNkYJLyogRkhaIDEwMDAgUEMgKi8KI2RlZmluZSBGVERJX0VMVl9DU0k4X1BJRAkweEUwRjAJLyogQ29tcHV0ZXItU2NoYWx0LUludGVyZmFjZSAoQ1NJIDgpICovCiNkZWZpbmUgRlRESV9FTFZfRU0xMDAwRExfUElECTB4RTBGMQkvKiBQQy1EYXRlbmxvZ2dlciBmdWVyIEVuZXJnaWVtb25pdG9yIChFTSAxMDAwIERMKSAqLwojZGVmaW5lIEZURElfRUxWX1BDSzEwMF9QSUQJMHhFMEYyCS8qIFBDLUthYmVsdGVzdGVyIChQQ0sgMTAwKSAqLwojZGVmaW5lIEZURElfRUxWX1JGUDUwMF9QSUQJMHhFMEYzCS8qIEhGLUxlaXN0dW5nc21lc3NlciAoUkZQIDUwMCkgKi8KI2RlZmluZSBGVERJX0VMVl9GUzIwU0lHX1BJRAkweEUwRjQJLyogU2lnbmFsZ2ViZXIgKEZTIDIwIFNJRykgKi8KI2RlZmluZSBGVERJX0VMVl9XUzMwMFBDX1BJRAkweEUwRjYJLyogUEMtV2V0dGVyc3RhdGlvbiAoV1MgMzAwIFBDKSAqLwojZGVmaW5lIEZURElfRUxWX0ZIWjEzMDBQQ19QSUQJMHhFMEU4CS8qIEZIWiAxMzAwIFBDICovCiNkZWZpbmUgRlRESV9FTFZfV1M1MDBfUElECTB4RTBFOQkvKiBQQy1XZXR0ZXJzdGF0aW9uIChXUyA1MDApICovCgovKgogKiBEZWZpbml0aW9ucyBmb3IgSUQgVEVDSCAod3d3LmlkdC1uZXQuY29tKSBkZXZpY2VzCiAqLwojZGVmaW5lIElEVEVDSF9WSUQJCTB4MEFDRAkvKiBJRCBURUNIIFZlbmRvciBJRCAqLwojZGVmaW5lIElEVEVDSF9JRFQxMjIxVV9QSUQJMHgwMzAwCS8qIElEVDEyMjFVIFVTQiB0byBSUy0yMzIgYWRhcHRlciAqLwoKLyoKICogRGVmaW5pdGlvbnMgZm9yIE9tbmlkaXJlY3Rpb25hbCBDb250cm9sIFRlY2hub2xvZ3ksIEluYy4gZGV2aWNlcwogKi8KI2RlZmluZSBPQ1RfVklECQkJMHgwQjM5CS8qIE9DVCB2ZW5kb3IgSUQgKi8KLyogTm90ZTogT0NUIFVTMTAxIGlzIGFsc28gcmViYWRnZWQgYXMgRGljayBTbWl0aCBFbGVjdHJvbmljcyAoTlopIFhINjM4MSAqLwovKiBBbHNvIHJlYmFkZ2VkIGFzIERpY2sgU21pdGggRWxlY3Ryb25pY3MgKEF1cykgWEg2NDUxICovCi8qIEFsc28gcmViYWRnZWQgYXMgU0lJRyBJbmMuIG1vZGVsIFVTMjMwOCBoYXJkd2FyZSB2ZXJzaW9uIDEgKi8KI2RlZmluZSBPQ1RfVVMxMDFfUElECQkweDA0MjEJLyogT0NUIFVTMTAxIFVTQiB0byBSUy0yMzIgKi8KCi8qIGFuIGluZnJhcmVkIHJlY2VpdmVyIGZvciB1c2VyIGFjY2VzcyBjb250cm9sIHdpdGggSVIgdGFncyAqLwojZGVmaW5lIEZURElfUElFR1JPVVBfUElECTB4RjIwOAkvKiBQcm9kdWN0IElkICovCgovKgogKiBEZWZpbml0aW9ucyBmb3IgQXJ0ZW1pcyBhc3Ryb25vbWljYWwgVVNCIGJhc2VkIGNhbWVyYXMKICogQ2hlY2sgaXQgYXQgaHR0cDovL3d3dy5hcnRlbWlzY2NkLmNvLnVrLwogKi8KI2RlZmluZSBGVERJX0FSVEVNSVNfUElECTB4REYyOAkvKiBBbGwgQXJ0ZW1pcyBDYW1lcmFzICovCgovKgogKiBEZWZpbml0aW9ucyBmb3IgQVRJSyBJbnN0cnVtZW50cyBhc3Ryb25vbWljYWwgVVNCIGJhc2VkIGNhbWVyYXMKICogQ2hlY2sgaXQgYXQgaHR0cDovL3d3dy5hdGlrLWluc3RydW1lbnRzLmNvbS8KICovCiNkZWZpbmUgRlRESV9BVElLX0FUSzE2X1BJRAkweERGMzAJLyogQVRJSyBBVEstMTYgR3JheXNjYWxlIENhbWVyYSAqLwojZGVmaW5lIEZURElfQVRJS19BVEsxNkNfUElECTB4REYzMgkvKiBBVElLIEFUSy0xNkMgQ29sb3VyIENhbWVyYSAqLwojZGVmaW5lIEZURElfQVRJS19BVEsxNkhSX1BJRAkweERGMzEJLyogQVRJSyBBVEstMTZIUiBHcmF5c2NhbGUgQ2FtZXJhICovCiNkZWZpbmUgRlRESV9BVElLX0FUSzE2SFJDX1BJRAkweERGMzMJLyogQVRJSyBBVEstMTZIUkMgQ29sb3VyIENhbWVyYSAqLwoKLyoKICogUHJvdGVnbyBwcm9kdWN0IGlkcwogKi8KI2RlZmluZSBQUk9URUdPX1NQRUNJQUxfMQkweEZDNzAJLyogc3BlY2lhbC91bmtub3duIGRldmljZSAqLwojZGVmaW5lIFBST1RFR09fUjJYMAkJMHhGQzcxCS8qIFIyMDAtVVNCIFRSTkcgdW5pdCAoUjIxMCwgUjIyMCwgYW5kIFIyMzApICovCiNkZWZpbmUgUFJPVEVHT19TUEVDSUFMXzMJMHhGQzcyCS8qIHNwZWNpYWwvdW5rbm93biBkZXZpY2UgKi8KI2RlZmluZSBQUk9URUdPX1NQRUNJQUxfNAkweEZDNzMJLyogc3BlY2lhbC91bmtub3duIGRldmljZSAqLwoKLyoKICogR3VkZSBBbmFsb2ctIHVuZCBEaWdpdGFsc3lzdGVtZSBHbWJICiAqLwojZGVmaW5lIEZURElfR1VERUFEU19FODA4X1BJRCAgICAweEU4MDgKI2RlZmluZSBGVERJX0dVREVBRFNfRTgwOV9QSUQgICAgMHhFODA5CiNkZWZpbmUgRlRESV9HVURFQURTX0U4MEFfUElEICAgIDB4RTgwQQojZGVmaW5lIEZURElfR1VERUFEU19FODBCX1BJRCAgICAweEU4MEIKI2RlZmluZSBGVERJX0dVREVBRFNfRTgwQ19QSUQgICAgMHhFODBDCiNkZWZpbmUgRlRESV9HVURFQURTX0U4MERfUElEICAgIDB4RTgwRAojZGVmaW5lIEZURElfR1VERUFEU19FODBFX1BJRCAgICAweEU4MEUKI2RlZmluZSBGVERJX0dVREVBRFNfRTgwRl9QSUQgICAgMHhFODBGCiNkZWZpbmUgRlRESV9HVURFQURTX0U4ODhfUElEICAgIDB4RTg4OCAgLyogRXhwZXJ0IElTRE4gQ29udHJvbCBVU0IgKi8KI2RlZmluZSBGVERJX0dVREVBRFNfRTg4OV9QSUQgICAgMHhFODg5ICAvKiBVU0IgUlMtMjMyIE9wdG9CcmlkZ2UgKi8KI2RlZmluZSBGVERJX0dVREVBRFNfRTg4QV9QSUQgICAgMHhFODhBCiNkZWZpbmUgRlRESV9HVURFQURTX0U4OEJfUElEICAgIDB4RTg4QgojZGVmaW5lIEZURElfR1VERUFEU19FODhDX1BJRCAgICAweEU4OEMKI2RlZmluZSBGVERJX0dVREVBRFNfRTg4RF9QSUQgICAgMHhFODhECiNkZWZpbmUgRlRESV9HVURFQURTX0U4OEVfUElEICAgIDB4RTg4RQojZGVmaW5lIEZURElfR1VERUFEU19FODhGX1BJRCAgICAweEU4OEYKCi8qCiAqIExpbnggVGVjaG5vbG9naWVzIHByb2R1Y3QgaWRzCiAqLwojZGVmaW5lIExJTlhfU0RNVVNCUVNTX1BJRAkweEY0NDgJLyogTGlueCBTRE0tVVNCLVFTLVMgKi8KI2RlZmluZSBMSU5YX01BU1RFUkRFVkVMMl9QSUQgICAweEY0NDkgICAvKiBMaW54IE1hc3RlciBEZXZlbG9wbWVudCAyLjAgKi8KI2RlZmluZSBMSU5YX0ZVVFVSRV8wX1BJRCAgIDB4RjQ0QSAgIC8qIExpbnggZnV0dXJlIGRldmljZSAqLwojZGVmaW5lIExJTlhfRlVUVVJFXzFfUElEICAgMHhGNDRCICAgLyogTGlueCBmdXR1cmUgZGV2aWNlICovCiNkZWZpbmUgTElOWF9GVVRVUkVfMl9QSUQgICAweEY0NEMgICAvKiBMaW54IGZ1dHVyZSBkZXZpY2UgKi8KCi8qIENDUyBJbmMuIElDRFUvSUNEVTQwIHByb2R1Y3QgSUQgLSB0aGUgRlQyMzJCTSBpcyB1c2VkIGluIGFuIGluLWNpcmN1aXQtZGVidWdnZXIgKi8KLyogdW5pdCBmb3IgUElDMTYncy9QSUMxOCdzICovCiNkZWZpbmUgRlRESV9DQ1NJQ0RVMjBfMF9QSUQgICAgMHhGOUQwICAgICAKI2RlZmluZSBGVERJX0NDU0lDRFU0MF8xX1BJRCAgICAweEY5RDEgICAgIAoKLyogSW5zaWRlIEFjY2Vzc28gY29udGFjdGxlc3MgcmVhZGVyIChodHRwOi8vd3d3Lmluc2lkZWZyLmNvbSkgKi8KI2RlZmluZSBJTlNJREVfQUNDRVNTTwkJMHhGQUQwCgovKgogKiBJbnRyZXBpZCBDb250cm9sIFN5c3RlbXMgKGh0dHA6Ly93d3cuaW50cmVwaWRjcy5jb20vKSBWYWx1ZUNBTiBhbmQgTmVvVkkKICovCiNkZWZpbmUgSU5UUkVQSURfVklECQkweDA5M0MKI2RlZmluZSBJTlRSRVBJRF9WQUxVRUNBTl9QSUQJMHgwNjAxCiNkZWZpbmUgSU5UUkVQSURfTkVPVklfUElECTB4MDcwMQoKLyoKICogRmFsY29tIFdpcmVsZXNzIENvbW11bmljYXRpb25zIEdtYkgKICovCiNkZWZpbmUgRkFMQ09NX1ZJRAkJMHgwRjk0CS8qIFZlbmRvciBJZCAqLwojZGVmaW5lIEZBTENPTV9UV0lTVF9QSUQJMHgwMDAxCS8qIEZhbGNvbSBUd2lzdCBVU0IgR1BSUyBtb2RlbSAqLwojZGVmaW5lIEZBTENPTV9TQU1CQV9QSUQJMHgwMDA1CS8qIEZhbGNvbSBTYW1iYSBVU0IgR1BSUyBtb2RlbSAqLwoKLyoKICogU1VVTlRPIHByb2R1Y3QgaWRzCiAqLwojZGVmaW5lIEZURElfU1VVTlRPX1NQT1JUU19QSUQJMHhGNjgwCS8qIFN1dW50byBTcG9ydHMgaW5zdHJ1bWVudCAqLwoKLyoKICogRGVmaW5pdGlvbnMgZm9yIEImQiBFbGVjdHJvbmljcyBwcm9kdWN0cy4KICovCiNkZWZpbmUgQkFOREJfVklECQkweDA4NTYJLyogQiZCIEVsZWN0cm9uaWNzIFZlbmRvciBJRCAqLwojZGVmaW5lIEJBTkRCX1VTT1RMNF9QSUQJMHhBQzAxCS8qIFVTT1RMNCBJc29sYXRlZCBSUy00ODUgQ29udmVydGVyICovCiNkZWZpbmUgQkFOREJfVVNUTDRfUElECQkweEFDMDIJLyogVVNUTDQgUlMtNDg1IENvbnZlcnRlciAqLwojZGVmaW5lIEJBTkRCX1VTTzlNTDJfUElECTB4QUMwMwkvKiBVU085TUwyIElzb2xhdGVkIFJTLTIzMiBDb252ZXJ0ZXIgKi8KCi8qCiAqIFJNIE1pY2hhZWxpZGVzIENBTnZpZXcgVVNCIChodHRwOi8vd3d3LnJtY2FuLmNvbSkKICogQ0FOIGZpZWxkYnVzIGludGVyZmFjZSBhZGFwdGVyLCBhZGRlZCBieSBwb3J0IEdtYkggd3d3LnBvcnQuZGUpCiAqIElhbiBBYmJvdHQgY2hhbmdlZCB0aGUgbWFjcm8gbmFtZXMgZm9yIGNvbnNpc3RlbmN5LgogKi8KI2RlZmluZSBGVERJX1JNX0NBTlZJRVdfUElECTB4ZmQ2MAkvKiBQcm9kdWN0IElkICovCgovKgogKiBFVkVSIEVjbyBQcm8gVVBTIChodHRwOi8vd3d3LmV2ZXIuY29tLnBsLykKICovCgojZGVmaW5lCUVWRVJfRUNPX1BST19DRFMJMHhlNTIwCS8qIFJTLTIzMiBjb252ZXJ0ZXIgKi8KCi8qCiAqIDROLUdBTEFYWS5ERSBQSURzIGZvciBDQU4tVVNCLCBVU0ItUlMyMzIsIFVTQi1SUzQyMiwgVVNCLVJTNDg1LAogKiBVU0ItVFRZIGFjdGl2LCBVU0ItVFRZIHBhc3Npdi4gIFNvbWUgUElEcyBhcmUgdXNlZCBieSBzZXZlcmFsIGRldmljZXMKICogYW5kIEknbSBub3QgZW50aXJlbHkgc3VyZSB3aGljaCBhcmUgdXNlZCBieSB3aGljaC4KICovCiNkZWZpbmUgRlRESV80Tl9HQUxBWFlfREVfMF9QSUQJMHg4MzcyCiNkZWZpbmUgRlRESV80Tl9HQUxBWFlfREVfMV9QSUQJMHhGM0MwCiNkZWZpbmUgRlRESV80Tl9HQUxBWFlfREVfMl9QSUQJMHhGM0MxCgovKgogKiBNb2JpbGl0eSBFbGVjdHJvbmljcyBwcm9kdWN0cy4KICovCiNkZWZpbmUgTU9CSUxJVFlfVklECQkJMHgxMzQyCiNkZWZpbmUgTU9CSUxJVFlfVVNCX1NFUklBTF9QSUQJCTB4MDIwMgkvKiBFYXNpRG9jayBVU0IgMjAwIHNlcmlhbCAqLwoKLyoKICogbWljcm9IQU0gcHJvZHVjdCBJRHMgKGh0dHA6Ly93d3cubWljcm9oYW0uY29tKS4KICogU3VibWl0dGVkIGJ5IEp1c3RpbiBCdXJrZXQgKEtMMVJMKSA8em9ydG9uQGp0YW4uY29tPgogKiBhbmQgTWlrZSBTdHVkZXIgKEs2RUVQKSA8azZlZXBAaGFtc29mdHdhcmUub3JnPi4KICogSWFuIEFiYm90dCA8YWJib3R0aUBtZXYuY28udWs+IGFkZGVkIGEgZmV3IG1vcmUgZnJvbSB0aGUgZHJpdmVyIElORiBmaWxlLgogKi8KI2RlZmluZSBGVERJX01IQU1fS1dfUElEIDB4RUVFOAkJLyogVVNCLUtXIGludGVyZmFjZSAqLwojZGVmaW5lIEZURElfTUhBTV9ZU19QSUQgMHhFRUU5CQkvKiBVU0ItWVMgaW50ZXJmYWNlICovCiNkZWZpbmUgRlRESV9NSEFNX1k2X1BJRCAweEVFRUEJCS8qIFVTQi1ZNiBpbnRlcmZhY2UgKi8KI2RlZmluZSBGVERJX01IQU1fWThfUElEIDB4RUVFQgkJLyogVVNCLVk4IGludGVyZmFjZSAqLwojZGVmaW5lIEZURElfTUhBTV9JQ19QSUQgMHhFRUVDCQkvKiBVU0ItSUMgaW50ZXJmYWNlICovCiNkZWZpbmUgRlRESV9NSEFNX0RCOV9QSUQgMHhFRUVECS8qIFVTQi1EQjkgaW50ZXJmYWNlICovCiNkZWZpbmUgRlRESV9NSEFNX1JTMjMyX1BJRCAweEVFRUUJLyogVVNCLVJTMjMyIGludGVyZmFjZSAqLwojZGVmaW5lIEZURElfTUhBTV9ZOV9QSUQgMHhFRUVGCQkvKiBVU0ItWTkgaW50ZXJmYWNlICovCgovKgogKiBBY3RpdmUgUm9ib3RzIHByb2R1Y3QgaWRzLgogKi8KI2RlZmluZSBGVERJX0FDVElWRV9ST0JPVFNfUElECTB4RTU0OAkvKiBVU0IgY29tbXMgYm9hcmQgKi8KCi8qCiAqIFhzZW5zIFRlY2hub2xvZ2llcyBCViBwcm9kdWN0cyAoaHR0cDovL3d3dy54c2Vucy5jb20pLgogKi8KI2RlZmluZSBYU0VOU19DT05WRVJURVJfMF9QSUQJMHhEMzg4CiNkZWZpbmUgWFNFTlNfQ09OVkVSVEVSXzFfUElECTB4RDM4OQojZGVmaW5lIFhTRU5TX0NPTlZFUlRFUl8yX1BJRAkweEQzOEEKI2RlZmluZSBYU0VOU19DT05WRVJURVJfM19QSUQJMHhEMzhCCiNkZWZpbmUgWFNFTlNfQ09OVkVSVEVSXzRfUElECTB4RDM4QwojZGVmaW5lIFhTRU5TX0NPTlZFUlRFUl81X1BJRAkweEQzOEQKI2RlZmluZSBYU0VOU19DT05WRVJURVJfNl9QSUQJMHhEMzhFCiNkZWZpbmUgWFNFTlNfQ09OVkVSVEVSXzdfUElECTB4RDM4RgoKLyoKICogVGVyYXRyb25payBwcm9kdWN0IGlkcy4KICogU3VibWl0dGVkIGJ5IE8uIFf2bGZlbHNjaG5laWRlci4KICovCiNkZWZpbmUgRlRESV9URVJBVFJPTklLX1ZDUF9QSUQJIDB4RUM4OAkvKiBUZXJhdHJvbmlrIGRldmljZSAocHJlZmVycmluZyBWQ1AgZHJpdmVyIG9uIHdpbmRvd3MpICovCiNkZWZpbmUgRlRESV9URVJBVFJPTklLX0QyWFhfUElEIDB4RUM4OQkvKiBUZXJhdHJvbmlrIGRldmljZSAocHJlZmVycmluZyBEMlhYIGRyaXZlciBvbiB3aW5kb3dzKSAqLwoKLyoKICogRXZvbHV0aW9uIFJvYm90aWNzIHByb2R1Y3RzIChodHRwOi8vd3d3LmV2b2x1dGlvbi5jb20vKS4KICogU3VibWl0dGVkIGJ5IFNoYXduIE0uIExhdmVsbGUuCiAqLwojZGVmaW5lIEVWT0xVVElPTl9WSUQJCTB4REVFRQkvKiBWZW5kb3IgSUQgKi8KI2RlZmluZSBFVk9MVVRJT05fRVIxX1BJRAkweDAzMDAJLyogRVIxIENvbnRyb2wgTW9kdWxlICovCgovKiBQeXJhbWlkIENvbXB1dGVyIEdtYkggKi8KI2RlZmluZSBGVERJX1BZUkFNSURfUElECTB4RTZDOAkvKiBQeXJhbWlkIEFwcGxpYW5jZSBEaXNwbGF5ICovCgovKgogKiBQb3NpZmxleCBpbmMgcmV0YWlsIGVxdWlwbWVudCAoaHR0cDovL3d3dy5wb3NpZmxleC5jb20udHcpCiAqLwojZGVmaW5lIFBPU0lGTEVYX1ZJRAkJMHgwZDNhICAvKiBWZW5kb3IgSUQgKi8KI2RlZmluZSBQT1NJRkxFWF9QUDcwMDBfUElECTB4MDMwMCAgLyogUFAtNzAwMElJIHRoZXJtYWwgcHJpbnRlciAqLwoKLyoKICogV2VzdHJleCBJbnRlcm5hdGlvbmFsIGRldmljZXMgc3VibWl0dGVkIGJ5IENvcnkgTGVlCiAqLwojZGVmaW5lIEZURElfV0VTVFJFWF9NT0RFTF83NzdfUElECTB4REMwMAkvKiBNb2RlbCA3NzcgKi8KI2RlZmluZSBGVERJX1dFU1RSRVhfTU9ERUxfODkwMEZfUElECTB4REMwMQkvKiBNb2RlbCA4OTAwRiAqLwoKLyoKICogUlItQ2lyS2l0cyBMb2NvQnVmZmVyIFVTQiAoaHR0cDovL3d3dy5yci1jaXJraXRzLmNvbSkKICovCiNkZWZpbmUgRlRESV9SUkNJUktJVFNfTE9DT0JVRkZFUl9QSUQJMHhjN2QwCS8qIExvY29CdWZmZXIgVVNCICovCgovKgogKiBFY2xvIChodHRwOi8vd3d3LmVjbG8ucHQvKSBwcm9kdWN0IElEcy4KICogUElEIDB4RUE5MCBzdWJtaXR0ZWQgYnkgTWFydGluIEdyaWxsLgogKi8KI2RlZmluZSBGVERJX0VDTE9fQ09NXzFXSVJFX1BJRAkweEVBOTAJLyogQ09NIHRvIDEtV2lyZSBVU0IgYWRhcHRvciAqLwoKLyoKICogUGFwb3VjaCBwcm9kdWN0cyAoaHR0cDovL3d3dy5wYXBvdWNoLmNvbS8pCiAqIFN1Ym1pdHRlZCBieSBGb2xrZXJ0IHZhbiBIZXVzZGVuCiAqLwoKI2RlZmluZSBQQVBPVUNIX1ZJRAkJCTB4NTA1MAkvKiBWZW5kb3IgSUQgKi8KI2RlZmluZSBQQVBPVUNIX1RNVV9QSUQJCQkweDA0MDAJLyogVE1VIFVTQiBUaGVybW9tZXRlciAqLwoKLyoKICogQUNHIElkZW50aWZpY2F0aW9uIFRlY2hub2xvZ2llcyBHbWJIIHByb2R1Y3RzIChodHRwOi8vd3d3LmFjZy5kZS8pLgogKiBTdWJtaXR0ZWQgYnkgYW50b24gLWF0LSBnb3RvMTAgLWRvdC0gb3JnLgogKi8KI2RlZmluZSBGVERJX0FDR19IRkRVQUxfUElECQkweEREMjAJLyogSEYgRHVhbCBJU08gUmVhZGVyIChSRklEKSAqLwoKLyoKICogWW9zdCBFbmdpbmVlcmluZywgSW5jLiBwcm9kdWN0cyAod3d3Lnlvc3RlbmdpbmVlcmluZy5jb20pLgogKiBQSUQgMHhFMDUwIHN1Ym1pdHRlZCBieSBBYXJvbiBQcm9zZS4KICovCiNkZWZpbmUgRlRESV9ZRUlfU0VSVk9DRU5URVIzMV9QSUQJMHhFMDUwCS8qIFlFSSBTZXJ2b0NlbnRlcjMuMSBVU0IgKi8KCi8qCiAqIFRob3JMYWJzIFVTQiBtb3RvciBkcml2ZXJzCiAqLwojZGVmaW5lIEZURElfVEhPUkxBQlNfUElECQkweGZhZjAgLyogVGhvckxhYnMgVVNCIG1vdG9yIGRyaXZlcnMgKi8KCi8qCiAqIFRlc3RvIHByb2R1Y3RzIChodHRwOi8vd3d3LnRlc3RvLmNvbS8pCiAqIFN1Ym1pdHRlZCBieSBDb2xpbiBMZXJveQogKi8KI2RlZmluZSBURVNUT19WSUQJCQkweDEyOEQKI2RlZmluZSBURVNUT19VU0JfSU5URVJGQUNFX1BJRAkJMHgwMDAxCgovKiBDb21tYW5kcyAqLwojZGVmaW5lIEZURElfU0lPX1JFU0VUIAkJMCAvKiBSZXNldCB0aGUgcG9ydCAqLwojZGVmaW5lIEZURElfU0lPX01PREVNX0NUUkwgCTEgLyogU2V0IHRoZSBtb2RlbSBjb250cm9sIHJlZ2lzdGVyICovCiNkZWZpbmUgRlRESV9TSU9fU0VUX0ZMT1dfQ1RSTAkyIC8qIFNldCBmbG93IGNvbnRyb2wgcmVnaXN0ZXIgKi8KI2RlZmluZSBGVERJX1NJT19TRVRfQkFVRF9SQVRFCTMgLyogU2V0IGJhdWQgcmF0ZSAqLwojZGVmaW5lIEZURElfU0lPX1NFVF9EQVRBCTQgLyogU2V0IHRoZSBkYXRhIGNoYXJhY3RlcmlzdGljcyBvZiB0aGUgcG9ydCAqLwojZGVmaW5lIEZURElfU0lPX0dFVF9NT0RFTV9TVEFUVVMJNSAvKiBSZXRyaWV2ZSBjdXJyZW50IHZhbHVlIG9mIG1vZGVybiBzdGF0dXMgcmVnaXN0ZXIgKi8KI2RlZmluZSBGVERJX1NJT19TRVRfRVZFTlRfQ0hBUgk2IC8qIFNldCB0aGUgZXZlbnQgY2hhcmFjdGVyICovCiNkZWZpbmUgRlRESV9TSU9fU0VUX0VSUk9SX0NIQVIJNyAvKiBTZXQgdGhlIGVycm9yIGNoYXJhY3RlciAqLwojZGVmaW5lIEZURElfU0lPX1NFVF9MQVRFTkNZX1RJTUVSCTkgLyogU2V0IHRoZSBsYXRlbmN5IHRpbWVyICovCiNkZWZpbmUgRlRESV9TSU9fR0VUX0xBVEVOQ1lfVElNRVIJMTAgLyogR2V0IHRoZSBsYXRlbmN5IHRpbWVyICovCgoKLyoKICogICBCbVJlcXVlc3RUeXBlOiAgMTEwMCAwMDAwYgogKiAgIGJSZXF1ZXN0OiAgICAgICBGVERJX0UyX1JFQUQKICogICB3VmFsdWU6ICAgICAgICAgMAogKiAgIHdJbmRleDogICAgICAgICBBZGRyZXNzIG9mIHdvcmQgdG8gcmVhZAogKiAgIHdMZW5ndGg6ICAgICAgICAyCiAqICAgRGF0YTogICAgICAgICAgIFdpbGwgcmV0dXJuIGEgd29yZCBvZiBkYXRhIGZyb20gRTJBZGRyZXNzCiAqCiAqLwoKLyogUG9ydCBJZGVudGlmaWVyIFRhYmxlICovCiNkZWZpbmUgUElUX0RFRkFVTFQgCQkwIC8qIFNJT0EgKi8KI2RlZmluZSBQSVRfU0lPQQkJMSAvKiBTSU9BICovCi8qIFRoZSBkZXZpY2UgdGhpcyBkcml2ZXIgaXMgdGVzdGVkIHdpdGggb25lIGhhcyBvbmx5IG9uZSBwb3J0ICovCiNkZWZpbmUgUElUX1NJT0IJCTIgLyogU0lPQiAqLwojZGVmaW5lIFBJVF9QQVJBTExFTAkJMyAvKiBQYXJhbGxlbCAqLwoKLyogRlRESV9TSU9fUkVTRVQgKi8KI2RlZmluZSBGVERJX1NJT19SRVNFVF9SRVFVRVNUIEZURElfU0lPX1JFU0VUCiNkZWZpbmUgRlRESV9TSU9fUkVTRVRfUkVRVUVTVF9UWVBFIDB4NDAKI2RlZmluZSBGVERJX1NJT19SRVNFVF9TSU8gMAojZGVmaW5lIEZURElfU0lPX1JFU0VUX1BVUkdFX1JYIDEKI2RlZmluZSBGVERJX1NJT19SRVNFVF9QVVJHRV9UWCAyCgovKgogKiBCbVJlcXVlc3RUeXBlOiAgMDEwMCAwMDAwQgogKiBiUmVxdWVzdDogICAgICAgRlRESV9TSU9fUkVTRVQKICogd1ZhbHVlOiAgICAgICAgIENvbnRyb2wgVmFsdWUgCiAqICAgICAgICAgICAgICAgICAgIDAgPSBSZXNldCBTSU8KICogICAgICAgICAgICAgICAgICAgMSA9IFB1cmdlIFJYIGJ1ZmZlcgogKiAgICAgICAgICAgICAgICAgICAyID0gUHVyZ2UgVFggYnVmZmVyCiAqIHdJbmRleDogICAgICAgICBQb3J0CiAqIHdMZW5ndGg6ICAgICAgICAwCiAqIERhdGE6ICAgICAgICAgICBOb25lCiAqCiAqIFRoZSBSZXNldCBTSU8gY29tbWFuZCBoYXMgdGhpcyBlZmZlY3Q6CiAqCiAqICAgIFNldHMgZmxvdyBjb250cm9sIHNldCB0byAnbm9uZScKICogICAgRXZlbnQgY2hhciA9ICQwRAogKiAgICBFdmVudCB0cmlnZ2VyID0gZGlzYWJsZWQKICogICAgUHVyZ2UgUlggYnVmZmVyCiAqICAgIFB1cmdlIFRYIGJ1ZmZlcgogKiAgICBDbGVhciBEVFIKICogICAgQ2xlYXIgUlRTCiAqICAgIGJhdWQgYW5kIGRhdGEgZm9ybWF0IG5vdCByZXNldAogKgogKiBUaGUgUHVyZ2UgUlggYW5kIFRYIGJ1ZmZlciBjb21tYW5kcyBhZmZlY3Qgbm90aGluZyBleGNlcHQgdGhlIGJ1ZmZlcnMKICoKICAgKi8KCi8qIEZURElfU0lPX1NFVF9CQVVEUkFURSAqLwojZGVmaW5lIEZURElfU0lPX1NFVF9CQVVEUkFURV9SRVFVRVNUX1RZUEUgMHg0MAojZGVmaW5lIEZURElfU0lPX1NFVF9CQVVEUkFURV9SRVFVRVNUIDMKCi8qCiAqIEJtUmVxdWVzdFR5cGU6ICAwMTAwIDAwMDBCCiAqIGJSZXF1ZXN0OiAgICAgICBGVERJX1NJT19TRVRfQkFVRFJBVEUKICogd1ZhbHVlOiAgICAgICAgIEJhdWREaXZpc29yIHZhbHVlIC0gc2VlIGJlbG93CiAqIHdJbmRleDogICAgICAgICBQb3J0CiAqIHdMZW5ndGg6ICAgICAgICAwCiAqIERhdGE6ICAgICAgICAgICBOb25lCiAqIFRoZSBCYXVkRGl2aXNvciB2YWx1ZXMgYXJlIGNhbGN1bGF0ZWQgYXMgZm9sbG93czoKICogLSBCYXNlQ2xvY2sgaXMgZWl0aGVyIDEyMDAwMDAwIG9yIDQ4MDAwMDAwIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlLiBGSVhNRTogSSB3aXNoCiAqICAgSSBrbmV3IGhvdyB0byBkZXRlY3Qgb2xkIGNoaXBzIHRvIHNlbGVjdCBwcm9wZXIgYmFzZSBjbG9jayEKICogLSBCYXVkRGl2aXNvciBpcyBhIGZpeGVkIHBvaW50IG51bWJlciBlbmNvZGVkIGluIGEgZnVubnkgd2F5LgogKiAgICgtLVdST05HIFdBWSBPRiBUSElOS0lORy0tKQogKiAgIEJhdWREaXZpc29yIGlzIGEgZml4ZWQgcG9pbnQgbnVtYmVyIGVuY29kZWQgd2l0aCBmb2xsb3dpbmcgYml0IHdlaWdoczoKICogICAoLTIpKC0xKSgxMy4uMCkuIEl0IGlzIGEgcmFkaWNhbCB3aXRoIGEgZGVub21pbmF0b3Igb2YgNCwgc28gdmFsdWVzCiAqICAgZW5kIHdpdGggMC4wICgwMC4uLiksIDAuMjUgKDEwLi4uKSwgMC41ICgwMS4uLiksIGFuZCAwLjc1ICgxMS4uLikuCiAqICAgKC0tVEhFIFJFQUxJVFktLSkKICogICBUaGUgYm90aC1iaXRzLXNldCBoYXMgcXVpdGUgZGlmZmVyZW50IG1lYW5pbmcgZnJvbSAwLjc1IC0gdGhlIGNoaXAgZGVzaWduZXJzCiAqICAgaGF2ZSBkZWNpZGVkIGl0IHRvIG1lYW4gMC4xMjUgaW5zdGVhZCBvZiAwLjc1LgogKiAgIFRoaXMgaW5mbyBsb29rZWQgdXAgaW4gRlRESSBhcHBsaWNhdGlvbiBub3RlICJGVDhVMjMyIERFVklDRVMgXCBEYXRhIFJhdGVzCiAqICAgYW5kIEZsb3cgQ29udHJvbCBDb25zaWRlcmF0aW9uIGZvciBVU0IgdG8gUlMyMzIiLgogKiAtIEJhdWREaXZpc29yID0gKEJhc2VDbG9jayAvIDE2KSAvIEJhdWRSYXRlLCB3aGVyZSB0aGUgKD0pIG9wZXJhdGlvbiBzaG91bGQKICogICBhdXRvbWFnaWNhbGx5IHJlLWVuY29kZSB0aGUgcmVzdWx0aW5nIHZhbHVlIHRvIHRha2UgZnJhY3Rpb25zIGludG8gY29uc2lkZXJhdGlvbi4KICogQXMgYWxsIHZhbHVlcyBhcmUgaW50ZWdlcnMsIHNvbWUgYml0IHR3aWRkbGluZyBpcyBpbiBvcmRlcjoKICogICBCYXVkRGl2aXNvciA9IChCYXNlQ2xvY2sgLyAxNiAvIEJhdWRSYXRlKSB8CiAqICAgKCgoQmFzZUNsb2NrIC8gMiAvIEJhdWRSYXRlKSAmIDQpID8gMHg0MDAwICAgIC8vIDAuNQogKiAgICA6ICgoQmFzZUNsb2NrIC8gMiAvIEJhdWRSYXRlKSAmIDIpID8gMHg4MDAwICAvLyAwLjI1CiAqICAgIDogKChCYXNlQ2xvY2sgLyAyIC8gQmF1ZFJhdGUpICYgMSkgPyAweGMwMDAgIC8vIDAuMTI1CiAqICAgIDogMCkKICoKICogRm9yIHRoZSBGVDIzMkJNLCBhIDE3dGggZGl2aXNvciBiaXQgd2FzIGludHJvZHVjZWQgdG8gZW5jb2RlIHRoZSBtdWx0aXBsZXMKICogb2YgMC4xMjUgbWlzc2luZyBmcm9tIHRoZSBGVDhVMjMyQU0uICBCaXRzIDE2IHRvIDE0IGFyZSBjb2RlZCBhcyBmb2xsb3dzCiAqICh0aGUgZmlyc3QgZm91ciBjb2RlcyBhcmUgdGhlIHNhbWUgYXMgZm9yIHRoZSBGVDhVMjMyQU0sIHdoZXJlIGJpdCAxNiBpcwogKiBhbHdheXMgMCk6CiAqICAgMDAwIC0gYWRkIC4wMDAgdG8gZGl2aXNvcgogKiAgIDAwMSAtIGFkZCAuNTAwIHRvIGRpdmlzb3IKICogICAwMTAgLSBhZGQgLjI1MCB0byBkaXZpc29yCiAqICAgMDExIC0gYWRkIC4xMjUgdG8gZGl2aXNvcgogKiAgIDEwMCAtIGFkZCAuMzc1IHRvIGRpdmlzb3IKICogICAxMDEgLSBhZGQgLjYyNSB0byBkaXZpc29yCiAqICAgMTEwIC0gYWRkIC43NTAgdG8gZGl2aXNvcgogKiAgIDExMSAtIGFkZCAuODc1IHRvIGRpdmlzb3IKICogQml0cyAxNSB0byAwIG9mIHRoZSAxNy1iaXQgZGl2aXNvciBhcmUgcGxhY2VkIGluIHRoZSB1cmIgdmFsdWUuICBCaXQgMTYgaXMgCiAqIHBsYWNlZCBpbiBiaXQgMCBvZiB0aGUgdXJiIGluZGV4LgogKgogKiBOb3RlIHRoYXQgdGhlcmUgYXJlIGEgY291cGxlIG9mIHNwZWNpYWwgY2FzZXMgdG8gc3VwcG9ydCB0aGUgaGlnaGVzdCBiYXVkCiAqIHJhdGVzLiAgSWYgdGhlIGNhbGN1bGF0ZWQgZGl2aXNvciB2YWx1ZSBpcyAxLCB0aGlzIG5lZWRzIHRvIGJlIHJlcGxhY2VkIHdpdGgKICogMC4gIEFkZGl0aW9uYWxseSBmb3IgdGhlIEZUMjMyQk0sIGlmIHRoZSBjYWxjdWxhdGVkIGRpdmlzb3IgdmFsdWUgaXMgMHg0MDAxCiAqICgxLjUpLCB0aGlzIG5lZWRzIHRvIGJlIHJlcGxhY2VkIHdpdGggMHgwMDAxICgxKSAoYnV0IHRoaXMgZGl2aXNvciB2YWx1ZSBpcwogKiBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBGVDhVMjMyQU0pLgogKi8KCnR5cGVkZWYgZW51bSB7CglTSU8gPSAxLAoJRlQ4VTIzMkFNID0gMiwKCUZUMjMyQk0gPSAzLAoJRlQyMjMyQyA9IDQsCn0gZnRkaV9jaGlwX3R5cGVfdDsKCnR5cGVkZWYgZW51bSB7CiBmdGRpX3Npb19iMzAwID0gMCwgCiBmdGRpX3Npb19iNjAwID0gMSwgCiBmdGRpX3Npb19iMTIwMCA9IDIsCiBmdGRpX3Npb19iMjQwMCA9IDMsCiBmdGRpX3Npb19iNDgwMCA9IDQsCiBmdGRpX3Npb19iOTYwMCA9IDUsCiBmdGRpX3Npb19iMTkyMDAgPSA2LAogZnRkaV9zaW9fYjM4NDAwID0gNywKIGZ0ZGlfc2lvX2I1NzYwMCA9IDgsCiBmdGRpX3Npb19iMTE1MjAwID0gOQp9IEZURElfU0lPX2JhdWRyYXRlX3QgOwoKLyoKICogVGhlIGZ0ZGlfOFUyMzJBTV94eE1Iel9ieXl5IGNvbnN0YW50cyBoYXZlIGJlZW4gcmVtb3ZlZC4gVGhlIGVuY29kZWQgZGl2aXNvciB2YWx1ZXMKICogYXJlIGNhbGN1bGF0ZWQgaW50ZXJuYWxseS4KICovCgojZGVmaW5lIEZURElfU0lPX1NFVF9EQVRBX1JFUVVFU1QgRlRESV9TSU9fU0VUX0RBVEEKI2RlZmluZSBGVERJX1NJT19TRVRfREFUQV9SRVFVRVNUX1RZUEUgMHg0MAojZGVmaW5lIEZURElfU0lPX1NFVF9EQVRBX1BBUklUWV9OT05FICgweDAgPDwgOCApCiNkZWZpbmUgRlRESV9TSU9fU0VUX0RBVEFfUEFSSVRZX09ERCAoMHgxIDw8IDggKQojZGVmaW5lIEZURElfU0lPX1NFVF9EQVRBX1BBUklUWV9FVkVOICgweDIgPDwgOCApCiNkZWZpbmUgRlRESV9TSU9fU0VUX0RBVEFfUEFSSVRZX01BUksgKDB4MyA8PCA4ICkKI2RlZmluZSBGVERJX1NJT19TRVRfREFUQV9QQVJJVFlfU1BBQ0UgKDB4NCA8PCA4ICkKI2RlZmluZSBGVERJX1NJT19TRVRfREFUQV9TVE9QX0JJVFNfMSAoMHgwIDw8IDExICkKI2RlZmluZSBGVERJX1NJT19TRVRfREFUQV9TVE9QX0JJVFNfMTUgKDB4MSA8PCAxMSApCiNkZWZpbmUgRlRESV9TSU9fU0VUX0RBVEFfU1RPUF9CSVRTXzIgKDB4MiA8PCAxMSApCiNkZWZpbmUgRlRESV9TSU9fU0VUX0JSRUFLICgweDEgPDwgMTQpCi8qIEZURElfU0lPX1NFVF9EQVRBICovCgovKgogKiBCbVJlcXVlc3RUeXBlOiAgMDEwMCAwMDAwQiAKICogYlJlcXVlc3Q6ICAgICAgIEZURElfU0lPX1NFVF9EQVRBCiAqIHdWYWx1ZTogICAgICAgICBEYXRhIGNoYXJhY3RlcmlzdGljcyAoc2VlIGJlbG93KQogKiB3SW5kZXg6ICAgICAgICAgUG9ydAogKiB3TGVuZ3RoOiAgICAgICAgMAogKiBEYXRhOiAgICAgICAgICAgTm8KICoKICogRGF0YSBjaGFyYWN0ZXJpc3RpY3MKICoKICogICBCMC4uNyAgIE51bWJlciBvZiBkYXRhIGJpdHMKICogICBCOC4uMTAgIFBhcml0eQogKiAgICAgICAgICAgMCA9IE5vbmUKICogICAgICAgICAgIDEgPSBPZGQKICogICAgICAgICAgIDIgPSBFdmVuCiAqICAgICAgICAgICAzID0gTWFyawogKiAgICAgICAgICAgNCA9IFNwYWNlCiAqICAgQjExLi4xMyBTdG9wIEJpdHMKICogICAgICAgICAgIDAgPSAxCiAqICAgICAgICAgICAxID0gMS41CiAqICAgICAgICAgICAyID0gMgogKiAgIEIxNAogKiAgICAgICAgICAgMSA9IFRYIE9OIChicmVhaykKICogICAgICAgICAgIDAgPSBUWCBPRkYgKG5vcm1hbCBzdGF0ZSkKICogICBCMTUgUmVzZXJ2ZWQKICoKICovCgoKCi8qIEZURElfU0lPX01PREVNX0NUUkwgKi8KI2RlZmluZSBGVERJX1NJT19TRVRfTU9ERU1fQ1RSTF9SRVFVRVNUX1RZUEUgMHg0MAojZGVmaW5lIEZURElfU0lPX1NFVF9NT0RFTV9DVFJMX1JFUVVFU1QgRlRESV9TSU9fTU9ERU1fQ1RSTAoKLyogCiAqIEJtUmVxdWVzdFR5cGU6ICAgMDEwMCAwMDAwQgogKiBiUmVxdWVzdDogICAgICAgIEZURElfU0lPX01PREVNX0NUUkwKICogd1ZhbHVlOiAgICAgICAgICBDb250cm9sVmFsdWUgKHNlZSBiZWxvdykKICogd0luZGV4OiAgICAgICAgICBQb3J0CiAqIHdMZW5ndGg6ICAgICAgICAgMAogKiBEYXRhOiAgICAgICAgICAgIE5vbmUKICoKICogTk9URTogSWYgdGhlIGRldmljZSBpcyBpbiBSVFMvQ1RTIGZsb3cgY29udHJvbCwgdGhlIFJUUyBzZXQgYnkgdGhpcwogKiBjb21tYW5kIHdpbGwgYmUgSUdOT1JFRCB3aXRob3V0IGFuIGVycm9yIGJlaW5nIHJldHVybmVkCiAqIEFsc28gLSB5b3UgY2FuIG5vdCBzZXQgRFRSIGFuZCBSVFMgd2l0aCBvbmUgY29udHJvbCBtZXNzYWdlCiAqLwoKI2RlZmluZSBGVERJX1NJT19TRVRfRFRSX01BU0sgMHgxCiNkZWZpbmUgRlRESV9TSU9fU0VUX0RUUl9ISUdIICggMSB8ICggRlRESV9TSU9fU0VUX0RUUl9NQVNLICA8PCA4KSkKI2RlZmluZSBGVERJX1NJT19TRVRfRFRSX0xPVyAgKCAwIHwgKCBGVERJX1NJT19TRVRfRFRSX01BU0sgIDw8IDgpKQojZGVmaW5lIEZURElfU0lPX1NFVF9SVFNfTUFTSyAweDIKI2RlZmluZSBGVERJX1NJT19TRVRfUlRTX0hJR0ggKCAyIHwgKCBGVERJX1NJT19TRVRfUlRTX01BU0sgPDwgOCApKQojZGVmaW5lIEZURElfU0lPX1NFVF9SVFNfTE9XICggMCB8ICggRlRESV9TSU9fU0VUX1JUU19NQVNLIDw8IDggKSkKCi8qCiAqIENvbnRyb2xWYWx1ZQogKiBCMCAgICBEVFIgc3RhdGUKICogICAgICAgICAgMCA9IHJlc2V0CiAqICAgICAgICAgIDEgPSBzZXQKICogQjEgICAgUlRTIHN0YXRlCiAqICAgICAgICAgIDAgPSByZXNldAogKiAgICAgICAgICAxID0gc2V0CiAqIEIyLi43IFJlc2VydmVkCiAqIEI4ICAgIERUUiBzdGF0ZSBlbmFibGUKICogICAgICAgICAgMCA9IGlnbm9yZQogKiAgICAgICAgICAxID0gdXNlIERUUiBzdGF0ZQogKiBCOSAgICBSVFMgc3RhdGUgZW5hYmxlCiAqICAgICAgICAgIDAgPSBpZ25vcmUKICogICAgICAgICAgMSA9IHVzZSBSVFMgc3RhdGUKICogQjEwLi4xNSBSZXNlcnZlZAogKi8KCi8qIEZURElfU0lPX1NFVF9GTE9XX0NUUkwgKi8KI2RlZmluZSBGVERJX1NJT19TRVRfRkxPV19DVFJMX1JFUVVFU1RfVFlQRSAweDQwCiNkZWZpbmUgRlRESV9TSU9fU0VUX0ZMT1dfQ1RSTF9SRVFVRVNUIEZURElfU0lPX1NFVF9GTE9XX0NUUkwKI2RlZmluZSBGVERJX1NJT19ESVNBQkxFX0ZMT1dfQ1RSTCAweDAgCiNkZWZpbmUgRlRESV9TSU9fUlRTX0NUU19IUyAoMHgxIDw8IDgpCiNkZWZpbmUgRlRESV9TSU9fRFRSX0RTUl9IUyAoMHgyIDw8IDgpCiNkZWZpbmUgRlRESV9TSU9fWE9OX1hPRkZfSFMgKDB4NCA8PCA4KQovKgogKiAgIEJtUmVxdWVzdFR5cGU6ICAwMTAwIDAwMDBiCiAqICAgYlJlcXVlc3Q6ICAgICAgIEZURElfU0lPX1NFVF9GTE9XX0NUUkwKICogICB3VmFsdWU6ICAgICAgICAgWG9mZi9Yb24KICogICB3SW5kZXg6ICAgICAgICAgUHJvdG9jb2wvUG9ydCAtIGhJbmRleCBpcyBwcm90b2NsIC8gbEluZGV4IGlzIHBvcnQKICogICB3TGVuZ3RoOiAgICAgICAgMCAKICogICBEYXRhOiAgICAgICAgICAgTm9uZQogKgogKiBoSW5kZXggcHJvdG9jb2wgaXM6CiAqICAgQjAgT3V0cHV0IGhhbmRzaGFraW5nIHVzaW5nIFJUUy9DVFMKICogICAgICAgMCA9IGRpc2FibGVkCiAqICAgICAgIDEgPSBlbmFibGVkCiAqICAgQjEgT3V0cHV0IGhhbmRzaGFraW5nIHVzaW5nIERUUi9EU1IKICogICAgICAgMCA9IGRpc2FibGVkCiAqICAgICAgIDEgPSBlbmFibGVkCiAqICAgQjIgWG9uL1hvZmYgaGFuZHNoYWtpbmcKICogICAgICAgMCA9IGRpc2FibGVkCiAqICAgICAgIDEgPSBlbmFibGVkCiAqCiAqIEEgdmFsdWUgb2YgemVybyBpbiB0aGUgaEluZGV4IGZpZWxkIGRpc2FibGVzIGhhbmRzaGFraW5nCiAqCiAqIElmIFhvbi9Yb2ZmIGhhbmRzaGFraW5nIGlzIHNwZWNpZmllZCwgdGhlIGhWYWx1ZSBmaWVsZCBzaG91bGQgY29udGFpbiB0aGUgWE9GRiBjaGFyYWN0ZXIgCiAqIGFuZCB0aGUgbFZhbHVlIGZpZWxkIGNvbnRhaW5zIHRoZSBYT04gY2hhcmFjdGVyLgogKi8gIAogCi8qCiAqIEZURElfU0lPX0dFVF9MQVRFTkNZX1RJTUVSCiAqCiAqIFNldCB0aGUgdGltZW91dCBpbnRlcnZhbC4gVGhlIEZUREkgY29sbGVjdHMgZGF0YSBmcm9tIHRoZSBzbGF2ZQogKiBkZXZpY2UsIHRyYW5zbWl0dGluZyBpdCB0byB0aGUgaG9zdCB3aGVuIGVpdGhlciBBKSA2MiBieXRlcyBhcmUKICogcmVjZWl2ZWQsIG9yIEIpIHRoZSB0aW1lb3V0IGludGVydmFsIGhhcyBlbGFwc2VkIGFuZCB0aGUgYnVmZmVyCiAqIGNvbnRhaW5zIGF0IGxlYXN0IDEgYnl0ZS4gIFNldHRpbmcgdGhpcyB2YWx1ZSB0byBhIHNtYWxsIG51bWJlcgogKiBjYW4gZHJhbWF0aWNhbGx5IGltcHJvdmUgcGVyZm9ybWFuY2UgZm9yIGFwcGxpY2F0aW9ucyB3aGljaCBzZW5kCiAqIHNtYWxsIHBhY2tldHMsIHNpbmNlIHRoZSBkZWZhdWx0IHZhbHVlIGlzIDE2bXMuCiAqLwojZGVmaW5lICBGVERJX1NJT19HRVRfTEFURU5DWV9USU1FUl9SRVFVRVNUIEZURElfU0lPX0dFVF9MQVRFTkNZX1RJTUVSCiNkZWZpbmUgIEZURElfU0lPX0dFVF9MQVRFTkNZX1RJTUVSX1JFUVVFU1RfVFlQRSAweEMwCgovKiAKICogIEJtUmVxdWVzdFR5cGU6ICAgMTEwMCAwMDAwYgogKiAgYlJlcXVlc3Q6ICAgICAgICBGVERJX1NJT19HRVRfTEFURU5DWV9USU1FUgogKiAgd1ZhbHVlOiAgICAgICAgICAwCiAqICB3SW5kZXg6ICAgICAgICAgIFBvcnQKICogIHdMZW5ndGg6ICAgICAgICAgMAogKiAgRGF0YTogICAgICAgICAgICBsYXRlbmN5IChvbiByZXR1cm4pCiAqLwoKLyogCiAqIEZURElfU0lPX1NFVF9MQVRFTkNZX1RJTUVSCiAqCiAqIFNldCB0aGUgdGltZW91dCBpbnRlcnZhbC4gVGhlIEZUREkgY29sbGVjdHMgZGF0YSBmcm9tIHRoZSBzbGF2ZQogKiBkZXZpY2UsIHRyYW5zbWl0dGluZyBpdCB0byB0aGUgaG9zdCB3aGVuIGVpdGhlciBBKSA2MiBieXRlcyBhcmUKICogcmVjZWl2ZWQsIG9yIEIpIHRoZSB0aW1lb3V0IGludGVydmFsIGhhcyBlbGFwc2VkIGFuZCB0aGUgYnVmZmVyCiAqIGNvbnRhaW5zIGF0IGxlYXN0IDEgYnl0ZS4gIFNldHRpbmcgdGhpcyB2YWx1ZSB0byBhIHNtYWxsIG51bWJlcgogKiBjYW4gZHJhbWF0aWNhbGx5IGltcHJvdmUgcGVyZm9ybWFuY2UgZm9yIGFwcGxpY2F0aW9ucyB3aGljaCBzZW5kCiAqIHNtYWxsIHBhY2tldHMsIHNpbmNlIHRoZSBkZWZhdWx0IHZhbHVlIGlzIDE2bXMuCiAqLwojZGVmaW5lICBGVERJX1NJT19TRVRfTEFURU5DWV9USU1FUl9SRVFVRVNUIEZURElfU0lPX1NFVF9MQVRFTkNZX1RJTUVSCiNkZWZpbmUgIEZURElfU0lPX1NFVF9MQVRFTkNZX1RJTUVSX1JFUVVFU1RfVFlQRSAweDQwCgovKiAKICogIEJtUmVxdWVzdFR5cGU6ICAgMDEwMCAwMDAwYgogKiAgYlJlcXVlc3Q6ICAgICAgICBGVERJX1NJT19TRVRfTEFURU5DWV9USU1FUgogKiAgd1ZhbHVlOiAgICAgICAgICBMYXRlbmN5IChtaWxsaXNlY29uZHMpCiAqICB3SW5kZXg6ICAgICAgICAgIFBvcnQKICogIHdMZW5ndGg6ICAgICAgICAgMAogKiAgRGF0YTogICAgICAgICAgICBOb25lCiAqCiAqIHdWYWx1ZToKICogICBCMC4uNyAgIExhdGVuY3kgdGltZXIKICogICBCOC4uMTUgIDAKICoKICovCgovKgogKiBGVERJX1NJT19TRVRfRVZFTlRfQ0hBUiAKICoKICogU2V0IHRoZSBzcGVjaWFsIGV2ZW50IGNoYXJhY3RlciBmb3IgdGhlIHNwZWNpZmllZCBjb21tdW5pY2F0aW9ucyBwb3J0LgogKiBJZiB0aGUgZGV2aWNlIHNlZXMgdGhpcyBjaGFyYWN0ZXIgaXQgd2lsbCBpbW1lZGlhdGVseSByZXR1cm4gdGhlCiAqIGRhdGEgcmVhZCBzbyBmYXIgLSByYXRoZXIgdGhhbiB3YWl0IDQwbXMgb3IgdW50aWwgNjIgYnl0ZXMgYXJlIHJlYWQKICogd2hpY2ggaXMgd2hhdCBub3JtYWxseSBoYXBwZW5zLgogKi8KCgojZGVmaW5lICBGVERJX1NJT19TRVRfRVZFTlRfQ0hBUl9SRVFVRVNUIEZURElfU0lPX1NFVF9FVkVOVF9DSEFSCiNkZWZpbmUgIEZURElfU0lPX1NFVF9FVkVOVF9DSEFSX1JFUVVFU1RfVFlQRSAweDQwCgoKLyogCiAqICBCbVJlcXVlc3RUeXBlOiAgIDAxMDAgMDAwMGIKICogIGJSZXF1ZXN0OiAgICAgICAgRlRESV9TSU9fU0VUX0VWRU5UX0NIQVIKICogIHdWYWx1ZTogICAgICAgICAgRXZlbnRDaGFyCiAqICB3SW5kZXg6ICAgICAgICAgIFBvcnQKICogIHdMZW5ndGg6ICAgICAgICAgMAogKiAgRGF0YTogICAgICAgICAgICBOb25lCiAqCiAqIHdWYWx1ZToKICogICBCMC4uNyAgIEV2ZW50IENoYXJhY3RlcgogKiAgIEI4ICAgICAgRXZlbnQgQ2hhcmFjdGVyIFByb2Nlc3NpbmcKICogICAgICAgICAgICAgMCA9IGRpc2FibGVkCiAqICAgICAgICAgICAgIDEgPSBlbmFibGVkCiAqICAgQjkuLjE1ICBSZXNlcnZlZAogKgogKi8KICAgICAgICAgIAovKiBGVERJX1NJT19TRVRfRVJST1JfQ0hBUiAqLwoKLyogU2V0IHRoZSBwYXJpdHkgZXJyb3IgcmVwbGFjZW1lbnQgY2hhcmFjdGVyIGZvciB0aGUgc3BlY2lmaWVkIGNvbW11bmljYXRpb25zIHBvcnQgKi8KCi8qIAogKiAgQm1SZXF1ZXN0VHlwZTogIDAxMDAgMDAwMGIKICogIGJSZXF1ZXN0OiAgICAgICBGVERJX1NJT19TRVRfRVZFTlRfQ0hBUgogKiAgd1ZhbHVlOiAgICAgICAgIEVycm9yIENoYXIKICogIHdJbmRleDogICAgICAgICBQb3J0CiAqICB3TGVuZ3RoOiAgICAgICAgMAogKiAgRGF0YTogICAgICAgICAgIE5vbmUKICoKICpFcnJvciBDaGFyCiAqICBCMC4uNyAgRXJyb3IgQ2hhcmFjdGVyCiAqICBCOCAgICAgRXJyb3IgQ2hhcmFjdGVyIFByb2Nlc3NpbmcKICogICAgICAgICAgIDAgPSBkaXNhYmxlZAogKiAgICAgICAgICAgMSA9IGVuYWJsZWQKICogIEI5Li4xNSBSZXNlcnZlZAogKgogKi8KCi8qIEZURElfU0lPX0dFVF9NT0RFTV9TVEFUVVMgKi8KLyogUmV0cmlldmUgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIG1vZGVtIHN0YXR1cyByZWdpc3RlciAqLwoKI2RlZmluZSBGVERJX1NJT19HRVRfTU9ERU1fU1RBVFVTX1JFUVVFU1RfVFlQRSAweGMwCiNkZWZpbmUgRlRESV9TSU9fR0VUX01PREVNX1NUQVRVU19SRVFVRVNUIEZURElfU0lPX0dFVF9NT0RFTV9TVEFUVVMKI2RlZmluZSBGVERJX1NJT19DVFNfTUFTSyAweDEwCiNkZWZpbmUgRlRESV9TSU9fRFNSX01BU0sgMHgyMAojZGVmaW5lIEZURElfU0lPX1JJX01BU0sgIDB4NDAKI2RlZmluZSBGVERJX1NJT19STFNEX01BU0sgMHg4MAovKiAKICogICBCbVJlcXVlc3RUeXBlOiAgIDExMDAgMDAwMGIKICogICBiUmVxdWVzdDogICAgICAgIEZURElfU0lPX0dFVF9NT0RFTV9TVEFUVVMKICogICB3VmFsdWU6ICAgICAgICAgIHplcm8KICogICB3SW5kZXg6ICAgICAgICAgIFBvcnQKICogICB3TGVuZ3RoOiAgICAgICAgIDEKICogICBEYXRhOiAgICAgICAgICAgIFN0YXR1cwogKiAKICogT25lIGJ5dGUgb2YgZGF0YSBpcyByZXR1cm5lZCAKICogQjAuLjMgMAogKiBCNCAgICBDVFMKICogICAgICAgICAwID0gaW5hY3RpdmUKICogICAgICAgICAxID0gYWN0aXZlCiAqIEI1ICAgIERTUgogKiAgICAgICAgIDAgPSBpbmFjdGl2ZQogKiAgICAgICAgIDEgPSBhY3RpdmUKICogQjYgICAgUmluZyBJbmRpY2F0b3IgKFJJKQogKiAgICAgICAgIDAgPSBpbmFjdGl2ZQogKiAgICAgICAgIDEgPSBhY3RpdmUKICogQjcgICAgUmVjZWl2ZSBMaW5lIFNpZ25hbCBEZXRlY3QgKFJMU0QpCiAqICAgICAgICAgMCA9IGluYWN0aXZlCiAqICAgICAgICAgMSA9IGFjdGl2ZSAKICovCgoKCi8qIERlc2NyaXB0b3JzIHJldHVybmVkIGJ5IHRoZSBkZXZpY2UgCiAqIAogKiAgRGV2aWNlIERlc2NyaXB0b3IKICogCiAqIE9mZnNldAlGaWVsZAkJU2l6ZQlWYWx1ZQlEZXNjcmlwdGlvbgogKiAwCWJMZW5ndGgJCTEJMHgxMglTaXplIG9mIGRlc2NyaXB0b3IgaW4gYnl0ZXMKICogMQliRGVzY3JpcHRvclR5cGUJMQkweDAxCURFVklDRSBEZXNjcmlwdG9yIFR5cGUKICogMgliY2RVU0IJCTIJMHgwMTEwCVVTQiBTcGVjIFJlbGVhc2UgTnVtYmVyCiAqIDQJYkRldmljZUNsYXNzCTEJMHgwMAlDbGFzcyBDb2RlCiAqIDUJYkRldmljZVN1YkNsYXNzCTEJMHgwMAlTdWJDbGFzcyBDb2RlCiAqIDYJYkRldmljZVByb3RvY29sCTEJMHgwMAlQcm90b2NvbCBDb2RlCiAqIDcJYk1heFBhY2tldFNpemUwIDEJMHgwOAlNYXhpbXVtIHBhY2tldCBzaXplIGZvciBlbmRwb2ludCAwCiAqIDgJaWRWZW5kb3IJMgkweDA0MDMJVmVuZG9yIElECiAqIDEwCWlkUHJvZHVjdAkyCTB4ODM3MglQcm9kdWN0IElEIChGVERJX1NJT19QSUQpCiAqIDEyCWJjZERldmljZQkyCTB4MDAwMQlEZXZpY2UgcmVsZWFzZSBudW1iZXIKICogMTQJaU1hbnVmYWN0dXJlcgkxCTB4MDEJSW5kZXggb2YgbWFuLiBzdHJpbmcgZGVzYwogKiAxNQlpUHJvZHVjdAkxCTB4MDIJSW5kZXggb2YgcHJvZCBzdHJpbmcgZGVzYwogKiAxNglpU2VyaWFsTnVtYmVyCTEJMHgwMglJbmRleCBvZiBzZXJpYWwgbm1yIHN0cmluZyBkZXNjCiAqIDE3CWJOdW1Db25maWd1cmF0aW9ucyAxICAgIDB4MDEJTnVtYmVyIG9mIHBvc3NpYmxlIGNvbmZpZ3VyYXRpb25zCiAqIAogKiBDb25maWd1cmF0aW9uIERlc2NyaXB0b3IKICogCiAqIE9mZnNldAlGaWVsZAkJCVNpemUJVmFsdWUKICogMAliTGVuZ3RoCQkJMQkweDA5CVNpemUgb2YgZGVzY3JpcHRvciBpbiBieXRlcwogKiAxCWJEZXNjcmlwdG9yVHlwZQkJMQkweDAyCUNPTkZJR1VSQVRJT04gRGVzY3JpcHRvciBUeXBlCiAqIDIJd1RvdGFsTGVuZ3RoCQkyCTB4MDAyMAlUb3RhbCBsZW5ndGggb2YgZGF0YQogKiA0CWJOdW1JbnRlcmZhY2VzCQkxCTB4MDEJTnVtYmVyIG9mIGludGVyZmFjZXMgc3VwcG9ydGVkCiAqIDUJYkNvbmZpZ3VyYXRpb25WYWx1ZQkxCTB4MDEJQXJndW1lbnQgZm9yIFNldENPbmZpZ3VyYXRpb24oKSByZXEKICogNglpQ29uZmlndXJhdGlvbgkJMQkweDAyCUluZGV4IG9mIGNvbmZpZyBzdHJpbmcgZGVzY3JpcHRvcgogKiA3CWJtQXR0cmlidXRlcwkJMQkweDIwCUNvbmZpZyBjaGFyYWN0ZXJpc3RpY3MgUmVtb3RlIFdha2V1cAogKiA4CU1heFBvd2VyCQkxCTB4MUUJTWF4IHBvd2VyIGNvbnN1bXB0aW9uCiAqIAogKiBJbnRlcmZhY2UgRGVzY3JpcHRvcgogKiAKICogT2Zmc2V0CUZpZWxkCQkJU2l6ZQlWYWx1ZQogKiAwCWJMZW5ndGgJCQkxCTB4MDkJU2l6ZSBvZiBkZXNjcmlwdG9yIGluIGJ5dGVzCiAqIDEJYkRlc2NyaXB0b3JUeXBlCQkxCTB4MDQJSU5URVJGQUNFIERlc2NyaXB0b3IgVHlwZQogKiAyCWJJbnRlcmZhY2VOdW1iZXIJMQkweDAwCU51bWJlciBvZiBpbnRlcmZhY2UKICogMwliQWx0ZXJuYXRlU2V0dGluZwkxCTB4MDAJVmFsdWUgdXNlZCB0byBzZWxlY3QgYWx0ZXJuYXRlCiAqIDQJYk51bUVuZHBvaW50cwkJMQkweDAyCU51bWJlciBvZiBlbmRwb2ludHMKICogNQliSW50ZXJmYWNlQ2xhc3MJCTEJMHhGRglDbGFzcyBDb2RlCiAqIDYJYkludGVyZmFjZVN1YkNsYXNzCTEJMHhGRglTdWJjbGFzcyBDb2RlCiAqIDcJYkludGVyZmFjZVByb3RvY29sCTEJMHhGRglQcm90b2NvbCBDb2RlCiAqIDgJaUludGVyZmFjZQkJMQkweDAyCUluZGV4IG9mIGludGVyZmFjZSBzdHJpbmcgZGVzY3JpcHRpb24KICogCiAqIElOIEVuZHBvaW50IERlc2NyaXB0b3IKICogCiAqIE9mZnNldAlGaWVsZAkJCVNpemUJVmFsdWUKICogMAliTGVuZ3RoCQkJMQkweDA3CVNpemUgb2YgZGVzY3JpcHRvciBpbiBieXRlcwogKiAxCWJEZXNjcmlwdG9yVHlwZQkJMQkweDA1CUVORFBPSU5UIGRlc2NyaXB0b3IgdHlwZQogKiAyCWJFbmRwb2ludEFkZHJlc3MJMQkweDgyCUFkZHJlc3Mgb2YgZW5kcG9pbnQKICogMwlibUF0dHJpYnV0ZXMJCTEJMHgwMglFbmRwb2ludCBhdHRyaWJ1dGVzIC0gQnVsawogKiA0CWJOdW1FbmRwb2ludHMJCTIJMHgwMDQwCW1heGltdW0gcGFja2V0IHNpemUKICogNQliSW50ZXJ2YWwJCTEJMHgwMAlJbnRlcnZhbCBmb3IgcG9sbGluZyBlbmRwb2ludAogKiAKICogT1VUIEVuZHBvaW50IERlc2NyaXB0b3IKICogCiAqIE9mZnNldAlGaWVsZAkJCVNpemUJVmFsdWUKICogMAliTGVuZ3RoCQkJMQkweDA3CVNpemUgb2YgZGVzY3JpcHRvciBpbiBieXRlcwogKiAxCWJEZXNjcmlwdG9yVHlwZQkJMQkweDA1CUVORFBPSU5UIGRlc2NyaXB0b3IgdHlwZQogKiAyCWJFbmRwb2ludEFkZHJlc3MJMQkweDAyCUFkZHJlc3Mgb2YgZW5kcG9pbnQKICogMwlibUF0dHJpYnV0ZXMJCTEJMHgwMglFbmRwb2ludCBhdHRyaWJ1dGVzIC0gQnVsawogKiA0CWJOdW1FbmRwb2ludHMJCTIJMHgwMDQwCW1heGltdW0gcGFja2V0IHNpemUKICogNQliSW50ZXJ2YWwJCTEJMHgwMAlJbnRlcnZhbCBmb3IgcG9sbGluZyBlbmRwb2ludAogKiAgICAgCiAqIERBVEEgRk9STUFUCiAqIAogKiBJTiBFbmRwb2ludAogKiAKICogVGhlIGRldmljZSByZXNlcnZlcyB0aGUgZmlyc3QgdHdvIGJ5dGVzIG9mIGRhdGEgb24gdGhpcyBlbmRwb2ludCB0byBjb250YWluIHRoZSBjdXJyZW50CiAqIHZhbHVlcyBvZiB0aGUgbW9kZW0gYW5kIGxpbmUgc3RhdHVzIHJlZ2lzdGVycy4gSW4gdGhlIGFic2VuY2Ugb2YgZGF0YSwgdGhlIGRldmljZSAKICogZ2VuZXJhdGVzIGEgbWVzc2FnZSBjb25zaXN0aW5nIG9mIHRoZXNlIHR3byBzdGF0dXMgYnl0ZXMgZXZlcnkgNDAgbXMKICogCiAqIEJ5dGUgMDogTW9kZW0gU3RhdHVzCiAqIAogKiBPZmZzZXQJRGVzY3JpcHRpb24KICogQjAJUmVzZXJ2ZWQgLSBtdXN0IGJlIDEKICogQjEJUmVzZXJ2ZWQgLSBtdXN0IGJlIDAKICogQjIJUmVzZXJ2ZWQgLSBtdXN0IGJlIDAKICogQjMJUmVzZXJ2ZWQgLSBtdXN0IGJlIDAKICogQjQJQ2xlYXIgdG8gU2VuZCAoQ1RTKQogKiBCNQlEYXRhIFNldCBSZWFkeSAoRFNSKQogKiBCNglSaW5nIEluZGljYXRvciAoUkkpCiAqIEI3CVJlY2VpdmUgTGluZSBTaWduYWwgRGV0ZWN0IChSTFNEKQogKiAKICogQnl0ZSAxOiBMaW5lIFN0YXR1cwogKiAKICogT2Zmc2V0CURlc2NyaXB0aW9uCiAqIEIwCURhdGEgUmVhZHkgKERSKQogKiBCMQlPdmVycnVuIEVycm9yIChPRSkKICogQjIJUGFyaXR5IEVycm9yIChQRSkKICogQjMJRnJhbWluZyBFcnJvciAoRkUpCiAqIEI0CUJyZWFrIEludGVycnVwdCAoQkkpCiAqIEI1CVRyYW5zbWl0dGVyIEhvbGRpbmcgUmVnaXN0ZXIgKFRIUkUpCiAqIEI2CVRyYW5zbWl0dGVyIEVtcHR5IChURU1UKQogKiBCNwlFcnJvciBpbiBSQ1ZSIEZJRk8KICogCiAqLwojZGVmaW5lIEZURElfUlMwX0NUUwkoMSA8PCA0KQojZGVmaW5lIEZURElfUlMwX0RTUgkoMSA8PCA1KQojZGVmaW5lIEZURElfUlMwX1JJCSgxIDw8IDYpCiNkZWZpbmUgRlRESV9SUzBfUkxTRAkoMSA8PCA3KQoKI2RlZmluZSBGVERJX1JTX0RSICAxCiNkZWZpbmUgRlRESV9SU19PRSAoMTw8MSkKI2RlZmluZSBGVERJX1JTX1BFICgxPDwyKQojZGVmaW5lIEZURElfUlNfRkUgKDE8PDMpCiNkZWZpbmUgRlRESV9SU19CSSAoMTw8NCkKI2RlZmluZSBGVERJX1JTX1RIUkUgKDE8PDUpCiNkZWZpbmUgRlRESV9SU19URU1UICgxPDw2KQojZGVmaW5lIEZURElfUlNfRklGTyAgKDE8PDcpCgovKgogKiBPVVQgRW5kcG9pbnQKICogCiAqIFRoaXMgZGV2aWNlIHJlc2VydmVzIHRoZSBmaXJzdCBieXRlcyBvZiBkYXRhIG9uIHRoaXMgZW5kcG9pbnQgY29udGFpbiB0aGUgbGVuZ3RoCiAqIGFuZCBwb3J0IGlkZW50aWZpZXIgb2YgdGhlIG1lc3NhZ2UuIEZvciB0aGUgRlRESSBVU0IgU2VyaWFsIGNvbnZlcnRlciB0aGUgcG9ydCAKICogaWRlbnRpZmllciBpcyBhbHdheXMgMS4KICogCiAqIEJ5dGUgMDogTGluZSBTdGF0dXMKICogCiAqIE9mZnNldAlEZXNjcmlwdGlvbgogKiBCMAlSZXNlcnZlZCAtIG11c3QgYmUgMQogKiBCMQlSZXNlcnZlZCAtIG11c3QgYmUgMAogKiBCMi4uNwlMZW5ndGggb2YgbWVzc2FnZSAtIChub3QgaW5jbHVkaW5nIEJ5dGUgMCkKICogCiAqLwoK