LyoKICogQ29weXJpZ2h0IKkgMjAxOCBCcm9hZGNvbS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gCiAqIFRoZSB0ZXJtIJNCcm9hZGNvbZQgcmVmZXJzIHRvIEJyb2FkY29tIEluYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJpZXMuCgogKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgogKiB0aGUgdGVybXMgb2YgdmVyc2lvbiAyIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCiAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KCiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLgogKiBBTEwgRVhQUkVTUyBPUiBJTVBMSUVEIENPTkRJVElPTlMsIFJFUFJFU0VOVEFUSU9OUyBBTkQgV0FSUkFOVElFUywgSU5DTFVESU5HIAogKiBBTlkgSU1QTElFRCBXQVJSQU5UWSBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLCBPUgogKiBOT04tSU5GUklOR0VNRU5ULCBBUkUgRElTQ0xBSU1FRCwgRVhDRVBUIFRPIFRIRSBFWFRFTlQgVEhBVCBTVUNIIERJU0NMQUlNRVJTCiAqIEFSRSBIRUxEIFRPIEJFIExFR0FMTFkgSU5WQUxJRC4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZQogKiBkZXRhaWxzLCBhIGNvcHkgb2Ygd2hpY2ggY2FuIGJlIGZvdW5kIGluIHRoZSBmaWxlIENPUFlJTkcgaW5jbHVkZWQgd2l0aCB0aGlzCiAqIHBhY2thZ2UuCiAqLwoKI3VuZGVmIEVSUkZJTEUKI2RlZmluZSBFUlJGSUxFIEVSUkZJTEVfdGczCgojZGVmaW5lIF9fbGUxNiAgdTE2CiNkZWZpbmUgX19sZTMyICB1MzIKI2RlZmluZSBfX2xlNjQgIHU2NAojZGVmaW5lIF9fYmUxNiAgdTE2CiNkZWZpbmUgX19iZTMyICB1MzIKI2RlZmluZSBfX2JlNjQgIHU2NAoKI2RlZmluZSBkbWFfYWRkcl90IHVuc2lnbmVkIGxvbmcKCnVuaW9uIGRtYV9hZGRyNjRfdCB7CglkbWFfYWRkcl90IGFkZHI7Cgl1NjQgYXNfdTY0Owp9OwoKI2luY2x1ZGUgImJueHRfaHNpLmgiCgojZGVmaW5lIERSVl9NT0RVTEVfTkFNRSAgICAgICAgICAgICAgImJueHQiCiNkZWZpbmUgSVBYRV9WRVJTSU9OX01BSk9SICAgICAgICAgICAxCiNkZWZpbmUgSVBYRV9WRVJTSU9OX01JTk9SICAgICAgICAgICAwCiNkZWZpbmUgSVBYRV9WRVJTSU9OX1VQREFURSAgICAgICAgICAwCgovKgogKiBCcm9hZGNvbSBldGhlcm5ldCBkcml2ZXIgZGVmaW5lcy4KICovCiNkZWZpbmUgRkxBR19TRVQoZiwgYikgICAgICAgICAgICAgICAgICAgICAgICAgICgoZikgfD0gKGIpKQojZGVmaW5lIEZMQUdfVEVTVChmLCBiKSAgICAgICAgICAgICAgICAgICAgICAgICAoKGYpICYgKGIpKQojZGVmaW5lIEZMQUdfUkVTRVQoZiwgYikgICAgICAgICAgICAgICAgICAgICAgICAoKGYpICY9IH4oYikpCiNkZWZpbmUgQk5YVF9GTEFHX0hXUk1fU0hPUlRfQ01EX1NVUFAgICAgICAgICAgIDB4MDAwMQojZGVmaW5lIEJOWFRfRkxBR19IV1JNX1NIT1JUX0NNRF9SRVEgICAgICAgICAgICAweDAwMDIKI2RlZmluZSBCTlhUX0ZMQUdfUkVTT1VSQ0VfUUNBUFNfU1VQUE9SVCAgICAgICAgMHgwMDA0CiNkZWZpbmUgQk5YVF9GTEFHX01VTFRJX0hPU1QgICAgICAgICAgICAgICAgICAgIDB4MDAwOAojZGVmaW5lIEJOWFRfRkxBR19OUEFSX01PREUgICAgICAgICAgICAgICAgICAgICAweDAwMTAKI2RlZmluZSBCTlhUX0ZMQUdfQVRPTUlDU19FTkFCTEUgICAgICAgICAgICAgICAgMHgwMDIwCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIFN0YXR1cyBjb2Rlcy4KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2RlZmluZSBTVEFUVVNfU1VDQ0VTUyAgICAgICAgICAgICAgICAgICAgICAgICAgMAojZGVmaW5lIFNUQVRVU19GQUlMVVJFICAgICAgICAgICAgICAgICAgICAgICAgICAxCiNkZWZpbmUgU1RBVFVTX05PX1JFU09VUkNFICAgICAgICAgICAgICAgICAgICAgIDIKI2RlZmluZSBTVEFUVVNfSU5WQUxJRF9QQVJBTUVURVIgICAgICAgICAgICAgICAgMwojZGVmaW5lIFNUQVRVU19MSU5LX0FDVElWRSAgICAgICAgICAgICAgICAgICAgICA0CiNkZWZpbmUgU1RBVFVTX0xJTktfRE9XTiAgICAgICAgICAgICAgICAgICAgICAgIDUKI2RlZmluZSBTVEFUVVNfTElOS19TRVRUSU5HX01JU01BVENIICAgICAgICAgICAgNgojZGVmaW5lIFNUQVRVU19UT09fTUFOWV9GUkFHTUVOVFMgICAgICAgICAgICAgICA3CiNkZWZpbmUgU1RBVFVTX1RSQU5TTUlUX0FCT1JURUQgICAgICAgICAgICAgICAgIDgKI2RlZmluZSBTVEFUVVNfVFJBTlNNSVRfRVJST1IgICAgICAgICAgICAgICAgICAgOQojZGVmaW5lIFNUQVRVU19SRUNFSVZFX0FCT1JURUQgICAgICAgICAgICAgICAgICAxMAojZGVmaW5lIFNUQVRVU19SRUNFSVZFX0VSUk9SICAgICAgICAgICAgICAgICAgICAxMQojZGVmaW5lIFNUQVRVU19JTlZBTElEX1BBQ0tFVF9TSVpFICAgICAgICAgICAgICAxMgojZGVmaW5lIFNUQVRVU19OT19NQVBfUkVHSVNURVIgICAgICAgICAgICAgICAgICAxMwojZGVmaW5lIFNUQVRVU19VTktOT1dOX0FEQVBURVIgICAgICAgICAgICAgICAgICAxNAojZGVmaW5lIFNUQVRVU19OT19DT0FMRVNDRV9CVUZGRVIgICAgICAgICAgICAgICAxNQojZGVmaW5lIFNUQVRVU19VTktOT1dOX1BIWSAgICAgICAgICAgICAgICAgICAgICAxNgojZGVmaW5lIFNUQVRVU19QRU5ESU5HICAgICAgICAgICAgICAgICAgICAgICAgICAxNwojZGVmaW5lIFNUQVRVU19OT19UWF9ERVNDICAgICAgICAgICAgICAgICAgICAgICAxOAojZGVmaW5lIFNUQVRVU19OT19UWF9CRCAgICAgICAgICAgICAgICAgICAgICAgICAxOQojZGVmaW5lIFNUQVRVU19VTktOT1dOX01FRElVTSAgICAgICAgICAgICAgICAgICAyMAojZGVmaW5lIFNUQVRVU19SRVNPVVJDRSAgICAgICAgICAgICAgICAgICAgICAgICAyMQojZGVmaW5lIFNUQVRVU19BQk9SVF9SRUFTT05fRElTQ09OTkVDVCAgICAgICAgICAyMgojZGVmaW5lIFNUQVRVU19BQk9SVF9SRUFTT05fVVBMT0FEICAgICAgICAgICAgICAyMwojZGVmaW5lIFNUQVRVU19USU1FT1VUICAgICAgICAgICAgICAgICAgICAgICAgICAweGZmZmYKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogUmVjZWl2ZSBmaWx0ZXIgbWFza3MuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNkZWZpbmUgUlhfTUFTS19BQ0NFUFRfTk9ORSAgICAgICAgICAgICAgICAgICAgIDB4MDAwMAojZGVmaW5lIFJYX01BU0tfQUNDRVBUX1VOSUNBU1QgICAgICAgICAgICAgICAgICAweDAwMDEKI2RlZmluZSBSWF9NQVNLX0FDQ0VQVF9NVUxUSUNBU1QgICAgICAgICAgICAgICAgMHgwMDAyCiNkZWZpbmUgUlhfTUFTS19BQ0NFUFRfQUxMX01VTFRJQ0FTVCAgICAgICAgICAgIDB4MDAwNAojZGVmaW5lIFJYX01BU0tfQUNDRVBUX0JST0FEQ0FTVCAgICAgICAgICAgICAgICAweDAwMDgKI2RlZmluZSBSWF9NQVNLX0FDQ0VQVF9FUlJPUl9QQUNLRVQgICAgICAgICAgICAgMHgwMDEwCiNkZWZpbmUgUlhfTUFTS19QUk9NSVNDVU9VU19NT0RFICAgICAgICAgICAgICAgIDB4MTAwMDAKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogbWVkaWEgc3BlZWQuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNkZWZpbmUgTUVESVVNX1NQRUVEX0FVVE9ORUcgICAgICAgICAgICAgICAgICAgIDB4MDAwMEwKI2RlZmluZSBNRURJVU1fU1BFRURfVU5LTk9XTiAgICAgICAgICAgICAgICAgICAgMHgwMDAwTAojZGVmaW5lIE1FRElVTV9TUEVFRF8xME1CUFMgICAgICAgICAgICAgICAgICAgICAweDAxMDBMCiNkZWZpbmUgTUVESVVNX1NQRUVEXzEwME1CUFMgICAgICAgICAgICAgICAgICAgIDB4MDIwMEwKI2RlZmluZSBNRURJVU1fU1BFRURfMTAwME1CUFMgICAgICAgICAgICAgICAgICAgMHgwMzAwTAojZGVmaW5lIE1FRElVTV9TUEVFRF8yNTAwTUJQUyAgICAgICAgICAgICAgICAgICAweDA0MDBMCiNkZWZpbmUgTUVESVVNX1NQRUVEXzEwR0JQUyAgICAgICAgICAgICAgICAgICAgIDB4MDYwMEwKI2RlZmluZSBNRURJVU1fU1BFRURfMjBHQlBTICAgICAgICAgICAgICAgICAgICAgMHgwNzAwTAojZGVmaW5lIE1FRElVTV9TUEVFRF8yNUdCUFMgICAgICAgICAgICAgICAgICAgICAweDA4MDBMCiNkZWZpbmUgTUVESVVNX1NQRUVEXzQwR0JQUyAgICAgICAgICAgICAgICAgICAgIDB4MDkwMEwKI2RlZmluZSBNRURJVU1fU1BFRURfNTBHQlBTICAgICAgICAgICAgICAgICAgICAgMHgwYTAwTAojZGVmaW5lIE1FRElVTV9TUEVFRF8xMDBHQlBTICAgICAgICAgICAgICAgICAgICAweDBiMDBMCiNkZWZpbmUgTUVESVVNX1NQRUVEXzIwMEdCUFMgICAgICAgICAgICAgICAgICAgIDB4MGMwMEwKI2RlZmluZSBNRURJVU1fU1BFRURfQVVUT05FR18xR19GQUxMQkFDSyAgICAgICAgMHg4MDAwTCAvKiBTZXJkZXMgKi8KI2RlZmluZSBNRURJVU1fU1BFRURfQVVUT05FR18yXzVHX0ZBTExCQUNLICAgICAgMHg4MTAwTCAvKiBTZXJkZXMgKi8KI2RlZmluZSBNRURJVU1fU1BFRURfSEFSRFdBUkVfREVGQVVMVCAgICAgICAgICAgMHhmZjAwTCAvKiBTZXJkZXMgbnZyYW0gZGVmLiovCiNkZWZpbmUgTUVESVVNX1NQRUVEX01BU0sgICAgICAgICAgICAgICAgICAgICAgIDB4ZmYwMEwKI2RlZmluZSBHRVRfTUVESVVNX1NQRUVEKG0pICAgICAgICAgICAgICAgICAgICAgKChtKSAmIE1FRElVTV9TUEVFRF9NQVNLKQojZGVmaW5lIFNFVF9NRURJVU1fU1BFRUQoYnAsIHMpICgoYnAtPm1lZGl1bSAmIH5NRURJVU1fU1BFRURfTUFTSykgfCBzKQojZGVmaW5lIE1FRElVTV9VTktOT1dOX0RVUExFWCAgICAgICAgICAgICAgICAgICAweDAwMDAwTAojZGVmaW5lIE1FRElVTV9GVUxMX0RVUExFWCAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwTAojZGVmaW5lIE1FRElVTV9IQUxGX0RVUExFWCAgICAgICAgICAgICAgICAgICAgICAweDEwMDAwTAojZGVmaW5lIEdFVF9NRURJVU1fRFVQTEVYKG0pICAgICAgICAgICAgICAgICAgICAoKG0pICYgTUVESVVNX0hBTEZfRFVQTEVYKQojZGVmaW5lIFNFVF9NRURJVU1fRFVQTEVYKGJwLCBkKSAoKGJwLT5tZWRpdW0gJiB+TUVESVVNX0hBTEZfRFVQTEVYKSB8IGQpCiNkZWZpbmUgTUVESVVNX1NFTEVDVElWRV9BVVRPTkVHICAgICAgICAgICAgICAgIDB4MDEwMDAwMDBMCiNkZWZpbmUgR0VUX01FRElVTV9BVVRPTkVHX01PREUobSkgICAgICAgICAgICAgICgobSkgJiAweGZmMDAwMDAwTCkKI2RlZmluZSBQQ0lDRkdfTUVfUkVHSVNURVIgICAgICAgICAgICAgICAgICAgICAgMHg5OAojZGVmaW5lIEdSQ19DT01fQ0hBTl9CQVNFICAgICAgICAgICAgICAgICAgICAgICAwCiNkZWZpbmUgR1JDX0NPTV9DSEFOX1RSSUcgICAgICAgICAgICAgICAgICAgICAgIDB4MTAwCiNkZWZpbmUgR1JDX0lORF9CQVJfMF9BRERSICAgICAgICAgICAgICAgICAgICAgIDB4NzgKI2RlZmluZSBHUkNfSU5EX0JBUl8xX0FERFIgICAgICAgICAgICAgICAgICAgICAgMHg3QwojZGVmaW5lIEdSQ19JTkRfQkFSXzBfREFUQSAgICAgICAgICAgICAgICAgICAgICAweDgwCiNkZWZpbmUgR1JDX0lORF9CQVJfMV9EQVRBICAgICAgICAgICAgICAgICAgICAgIDB4ODQKI2RlZmluZSBHUkNfQkFTRV9XSU5fMCAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MDAKI2RlZmluZSBHUkNfREFUQV9XSU5fMCAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMDAwCiNkZWZpbmUgSFdSTV9DTURfREVGQVVMVF9USU1FT1VUICAgICAgICAgICAgICAgIDUwMCAvKiBpbiBNaWxpc2Vjb25kcyAgKi8KI2RlZmluZSBIV1JNX0NNRF9QT0xMX1dBSVRfVElNRSAgICAgICAgICAgICAgICAgMTAwIC8qIEluIE1pY3JvZVNjb25kcyAqLwojZGVmaW5lIEhXUk1fQ01EX0RFRkFVTFRfTVVMVElQTEFZRVIoYSkgICAgICAgICAoKGEpICogMTApCiNkZWZpbmUgSFdSTV9DTURfRkxBU0hfTVVMVElQTEFZRVIoYSkgICAgICAgICAgICgoYSkgKiAxMDApCiNkZWZpbmUgSFdSTV9DTURfRkxBU0hfRVJBU0VfTVVMVElQTEFZRVIoYSkgICAgICgoYSkgKiAxMDAwKQojZGVmaW5lIEhXUk1fQ01EX1dBSVQoYikgKChicC0+aHdybV9jbWRfdGltZW91dCkgKiAoYikpCiNkZWZpbmUgTUFYX0VUSEVSTkVUX1BBQ0tFVF9CVUZGRVJfU0laRSAgICAgICAgIDE1MzYKI2RlZmluZSBERUZBVUxUX05VTUJFUl9PRl9DTVBMX1JJTkdTICAgICAgICAgICAgMHgwMQojZGVmaW5lIERFRkFVTFRfTlVNQkVSX09GX1RYX1JJTkdTICAgICAgICAgICAgICAweDAxCiNkZWZpbmUgREVGQVVMVF9OVU1CRVJfT0ZfUlhfUklOR1MgICAgICAgICAgICAgIDB4MDEKI2RlZmluZSBERUZBVUxUX05VTUJFUl9PRl9SSU5HX0dSUFMgICAgICAgICAgICAgMHgwMQojZGVmaW5lIERFRkFVTFRfTlVNQkVSX09GX1NUQVRfQ1RYUyAgICAgICAgICAgICAweDAxCiNkZWZpbmUgTlVNX1JYX0JVRkZFUlMgICAgICAgICAgICAgICAgICAgICAgICAgIDgKI2RlZmluZSBNQVhfUlhfREVTQ19DTlQgICAgICAgICAgICAgICAgICAgICAgICAgMTYKI2RlZmluZSBNQVhfVFhfREVTQ19DTlQgICAgICAgICAgICAgICAgICAgICAgICAgMTYKI2RlZmluZSBNQVhfQ1FfREVTQ19DTlQgICAgICAgICAgICAgICAgICAgICAgICAgNjQKI2RlZmluZSBUWF9SSU5HX0JVRkZFUl9TSVpFIChNQVhfVFhfREVTQ19DTlQgKiBzaXplb2Yoc3RydWN0IHR4X2JkX3Nob3J0KSkKI2RlZmluZSBSWF9SSU5HX0JVRkZFUl9TSVpFIFwKCShNQVhfUlhfREVTQ19DTlQgKiBzaXplb2Yoc3RydWN0IHJ4X3Byb2RfcGt0X2JkKSkKI2RlZmluZSBDUV9SSU5HX0JVRkZFUl9TSVpFIChNQVhfQ1FfREVTQ19DTlQgKiBzaXplb2Yoc3RydWN0IGNtcGxfYmFzZSkpCiNkZWZpbmUgQk5YVF9ETUFfQUxJR05NRU5UICAgICAgICAgICAgICAgICAgICAgIDI1NiAvLzY0CiNkZWZpbmUgRE1BX0FMSUdOXzRLICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQwOTYgLy90aG9yIHR4ICYgcngKI2RlZmluZSBSRVFfQlVGRkVSX1NJWkUgICAgICAgICAgICAgICAgICAgICAgICAgMTAyNAojZGVmaW5lIFJFU1BfQlVGRkVSX1NJWkUgICAgICAgICAgICAgICAgICAgICAgICAxMDI0CiNkZWZpbmUgRE1BX0JVRkZFUl9TSVpFICAgICAgICAgICAgICAgICAgICAgICAgIDEwMjQKI2RlZmluZSBMTV9QQUdFX0JJVFMoYSkgICAgICAgICAgICAgICAgICAgICAgICAgKGEpCiNkZWZpbmUgQk5YVF9SWF9TVERfRE1BX1NaICAgICAgICAgICAgICAgICAgICAgICgxNTM2ICsgNjQgKyAyKQojZGVmaW5lIE5FWFRfSURYKE4sIFMpICAgICAgICAgICAgICAgICAgICAgICAgICAoKChOKSArIDEpICYgKChTKSAtIDEpKQojZGVmaW5lIEJEX05PVyhiZCwgZW50cnksIGxlbikgKCYoKHU4ICopKGJkKSlbKGVudHJ5KSAqIChsZW4pXSkKI2RlZmluZSBCTlhUX0NRX0lOVFJfTU9ERSh2ZikgKFwKCSgodmYpID8gUklOR19BTExPQ19SRVFfSU5UX01PREVfTVNJWCA6IFJJTkdfQUxMT0NfUkVRX0lOVF9NT0RFX1BPTEwpKQovKiBTZXQgZGVmYXVsdCBsaW5rIHRpbWVvdXQgcGVyaW9kIHRvIDEgc2Vjb25kICovCiNkZWZpbmUgTElOS19ERUZBVUxUX1RJTUVPVVQgICAgICAgICAgICAgICAgICAgIDEwMDAKI2RlZmluZSBMSU5LX1BPTExfV0FJVF9USU1FICAgICAgICAgICAgICAgICAgICAgMTAwICAgIC8qIEluIE1pbGlzZWNvbmRzICovCiNkZWZpbmUgUlhfTUFTSyAoXAoJUlhfTUFTS19BQ0NFUFRfQlJPQURDQVNUIHwgXAoJUlhfTUFTS19BQ0NFUFRfQUxMX01VTFRJQ0FTVCB8IFwKCVJYX01BU0tfQUNDRVBUX01VTFRJQ0FTVCkKI2RlZmluZSBNQVhfTlFfREVTQ19DTlQgICAgICAgICAgICAgICAgICAgICAgICAgNjQKI2RlZmluZSBOUV9SSU5HX0JVRkZFUl9TSVpFIChNQVhfTlFfREVTQ19DTlQgKiBzaXplb2Yoc3RydWN0IGNtcGxfYmFzZSkpCiNkZWZpbmUgVFhfUklOR19RSUQgKGJwLT50aG9yID8gKHUxNilicC0+cXVldWVfaWQgOiAoKHUxNilicC0+cG9ydF9pZHggKiAxMCkpCiNkZWZpbmUgUlhfUklOR19RSUQgKGJwLT50aG9yID8gYnAtPnF1ZXVlX2lkIDogMCkKI2RlZmluZSBTVEFUX0NUWF9JRCAoKGJwLT52ZiB8fCBicC0+dGhvcikgPyBicC0+c3RhdF9jdHhfaWQgOiAwKQojZGVmaW5lIFRYX0FWQUlMKHIpICAgICAgICAgICAgICAgICAgICAgIChyIC0gMSkKI2RlZmluZSBUWF9JTl9VU0UoYSwgYiwgYykgKChhIC0gYikgJiAoYyAtIDEpKQojZGVmaW5lIE5PX01PUkVfTlFfQkRfVE9fU0VSVklDRSAgICAgICAgIDEKI2RlZmluZSBTRVJWSUNFX05FWFRfTlFfQkQgICAgICAgICAgICAgICAwCiNkZWZpbmUgTk9fTU9SRV9DUV9CRF9UT19TRVJWSUNFICAgICAgICAgMQojZGVmaW5lIFNFUlZJQ0VfTkVYVF9DUV9CRCAgICAgICAgICAgICAgIDAKI2RlZmluZSBNQUNfSERSX1NJWkUgICAgIDEyCiNkZWZpbmUgVkxBTl9IRFJfU0laRSAgICA0CiNkZWZpbmUgRVRIRVJUWVBFX1ZMQU4gICAweDgxMDAKI2RlZmluZSBCWVRFX1NXQVBfUyh3KSAoXAoJKCgodykgJiAweGZmMDApID4+IDgpIHwgXAoJKCgodykgJiAweDAwZmYpIDw8IDgpKQojZGVmaW5lIERCX09GRlNFVF9QRiAgICAgICAgICAgMHgxMDAwMAojZGVmaW5lIERCX09GRlNFVF9WRiAgICAgICAgICAgMHg0MDAwCiNkZWZpbmUgREJDX01TR19JRFgoaWR4KSAgICAgICAoXAoJKChpZHgpIDw8IERCQ19EQkNfSU5ERVhfU0ZUKSAmIERCQ19EQkNfSU5ERVhfTUFTSykKI2RlZmluZSBEQkNfTVNHX1hJRCh4aWQsIGZsZykgIChcCgkoKCh4aWQpIDw8IERCQ19EQkNfWElEX1NGVCkgJiBEQkNfREJDX1hJRF9NQVNLKSB8IFwKCURCQ19EQkNfUEFUSF9MMiB8IChmbGcpKQojZGVmaW5lIFBIWV9TVEFUVVMgICAgICAgICAweDAwMDEKI2RlZmluZSBQSFlfU1BFRUQgICAgICAgICAgMHgwMDAyCiNkZWZpbmUgREVURUNUX01FRElBICAgICAgIDB4MDAwNAojZGVmaW5lIFNVUFBPUlRfU1BFRURTICAgICAweDAwMDgKI2RlZmluZSBRQ0ZHX1BIWV9BTEwgICAoXAoJU1VQUE9SVF9TUEVFRFMgfCBERVRFQ1RfTUVESUEgfCBQSFlfU1BFRUQgfCBQSFlfU1RBVFVTKQojZGVmaW5lIHN0cl9tYnBzICAgICAgICAgICAiTWJwcyIKI2RlZmluZSBzdHJfZ2JwcyAgICAgICAgICAgIkdicHMiCi8qCiAqIEJyb2FkY29tIGV0aGVybmV0IGRyaXZlciBudm0gZGVmaW5lcy4KICovCi8qIG52bSBjZmcgMjAzIC0gdTMyIGxpbmtfc2V0dGluZ3MgKi8KI2RlZmluZSBMSU5LX1NQRUVEX0RSVl9OVU0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMwojZGVmaW5lIExJTktfU1BFRURfRFJWX01BU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwRgojZGVmaW5lIExJTktfU1BFRURfRFJWX1NISUZUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAojZGVmaW5lIExJTktfU1BFRURfRFJWX0FVVE9ORUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwCiNkZWZpbmUgTlNfTElOS19TUEVFRF9EUlZfQVVUT05FRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAKI2RlZmluZSBMSU5LX1NQRUVEX0RSVl8xRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MQojZGVmaW5lIE5TX0xJTktfU1BFRURfRFJWXzFHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxCiNkZWZpbmUgTElOS19TUEVFRF9EUlZfMTBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIKI2RlZmluZSBOU19MSU5LX1NQRUVEX0RSVl8xMEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MgojZGVmaW5lIExJTktfU1BFRURfRFJWXzI1RyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzCiNkZWZpbmUgTlNfTElOS19TUEVFRF9EUlZfMjVHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMKI2RlZmluZSBMSU5LX1NQRUVEX0RSVl80MEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NAojZGVmaW5lIE5TX0xJTktfU1BFRURfRFJWXzQwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0CiNkZWZpbmUgTElOS19TUEVFRF9EUlZfNTBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUKI2RlZmluZSBOU19MSU5LX1NQRUVEX0RSVl81MEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NQojZGVmaW5lIExJTktfU1BFRURfRFJWXzEwMEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2CiNkZWZpbmUgTlNfTElOS19TUEVFRF9EUlZfMTAwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYKI2RlZmluZSBMSU5LX1NQRUVEX0RSVl8yMDBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NwojZGVmaW5lIE5TX0xJTktfU1BFRURfRFJWXzIwMEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3CiNkZWZpbmUgTElOS19TUEVFRF9EUlZfMl81RyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEUKI2RlZmluZSBOU19MSU5LX1NQRUVEX0RSVl8yXzVHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RQojZGVmaW5lIExJTktfU1BFRURfRFJWXzEwME0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGCiNkZWZpbmUgTlNfTElOS19TUEVFRF9EUlZfMTAwTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEYKLyogbnZtIGNmZyAyMDEgLSB1MzIgc3BlZWRfY2FwX21hc2sgKi8KI2RlZmluZSBTUEVFRF9DQVBBQklMSVRZX0RSVl9NQVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZGRkYKI2RlZmluZSBTUEVFRF9DQVBBQklMSVRZX0RSVl9TSElGVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKI2RlZmluZSBTUEVFRF9DQVBBQklMSVRZX0RSVl8xRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MQojZGVmaW5lIE5TX1NQRUVEX0NBUEFCSUxJVFlfRFJWXzFHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxCiNkZWZpbmUgU1BFRURfQ0FQQUJJTElUWV9EUlZfMTBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIKI2RlZmluZSBOU19TUEVFRF9DQVBBQklMSVRZX0RSVl8xMEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MgojZGVmaW5lIFNQRUVEX0NBUEFCSUxJVFlfRFJWXzI1RyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0CiNkZWZpbmUgTlNfU1BFRURfQ0FQQUJJTElUWV9EUlZfMjVHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQKI2RlZmluZSBTUEVFRF9DQVBBQklMSVRZX0RSVl80MEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OAojZGVmaW5lIE5TX1NQRUVEX0NBUEFCSUxJVFlfRFJWXzQwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4CiNkZWZpbmUgU1BFRURfQ0FQQUJJTElUWV9EUlZfNTBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwCiNkZWZpbmUgTlNfU1BFRURfQ0FQQUJJTElUWV9EUlZfNTBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwCiNkZWZpbmUgU1BFRURfQ0FQQUJJTElUWV9EUlZfMTAwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwCiNkZWZpbmUgTlNfU1BFRURfQ0FQQUJJTElUWV9EUlZfMTAwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwCiNkZWZpbmUgU1BFRURfQ0FQQUJJTElUWV9EUlZfMjAwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwCiNkZWZpbmUgTlNfU1BFRURfQ0FQQUJJTElUWV9EUlZfMjAwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwCiNkZWZpbmUgU1BFRURfQ0FQQUJJTElUWV9EUlZfMl81RyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwMDAKI2RlZmluZSBOU19TUEVFRF9DQVBBQklMSVRZX0RSVl8yXzVHICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAwMAojZGVmaW5lIFNQRUVEX0NBUEFCSUxJVFlfRFJWXzEwME0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDAwCiNkZWZpbmUgTlNfU1BFRURfQ0FQQUJJTElUWV9EUlZfMTAwTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwMDAKLyogbnZtIGNmZyAyMDIgKi8KI2RlZmluZSBTUEVFRF9DQVBBQklMSVRZX0ZXX01BU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRjAwMDAKI2RlZmluZSBTUEVFRF9DQVBBQklMSVRZX0ZXX1NISUZUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2CiNkZWZpbmUgU1BFRURfQ0FQQUJJTElUWV9GV18xRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgxTCA8PCAxNikKI2RlZmluZSBOU19TUEVFRF9DQVBBQklMSVRZX0ZXXzFHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDEpCiNkZWZpbmUgU1BFRURfQ0FQQUJJTElUWV9GV18xMEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgyTCA8PCAxNikKI2RlZmluZSBOU19TUEVFRF9DQVBBQklMSVRZX0ZXXzEwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDIpCiNkZWZpbmUgU1BFRURfQ0FQQUJJTElUWV9GV18yNUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg0TCA8PCAxNikKI2RlZmluZSBOU19TUEVFRF9DQVBBQklMSVRZX0ZXXzI1RyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDQpCiNkZWZpbmUgU1BFRURfQ0FQQUJJTElUWV9GV180MEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg4TCA8PCAxNikKI2RlZmluZSBOU19TUEVFRF9DQVBBQklMSVRZX0ZXXzQwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDgpCiNkZWZpbmUgU1BFRURfQ0FQQUJJTElUWV9GV181MEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgxMEwgPDwgMTYpCiNkZWZpbmUgTlNfU1BFRURfQ0FQQUJJTElUWV9GV181MEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgxMCkKI2RlZmluZSBTUEVFRF9DQVBBQklMSVRZX0ZXXzEwMEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDIwTCA8PCAxNikKI2RlZmluZSBOU19TUEVFRF9DQVBBQklMSVRZX0ZXXzEwMEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDIwKQojZGVmaW5lIFNQRUVEX0NBUEFCSUxJVFlfRldfMjAwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4NDBMIDw8IDE2KQojZGVmaW5lIE5TX1NQRUVEX0NBUEFCSUxJVFlfRldfMjAwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4NDApCiNkZWZpbmUgU1BFRURfQ0FQQUJJTElUWV9GV18yXzVHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg0MDAwTCA8PCAxNikKI2RlZmluZSBOU19TUEVFRF9DQVBBQklMSVRZX0ZXXzJfNUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDQwMDApCiNkZWZpbmUgU1BFRURfQ0FQQUJJTElUWV9GV18xMDBNICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg4MDAwVUwgPDwgMTYpCiNkZWZpbmUgTlNfU1BFRURfQ0FQQUJJTElUWV9GV18xMDBNICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg4MDAwKQovKiBudm0gY2ZnIDIwNSAqLwojZGVmaW5lIExJTktfU1BFRURfRldfTlVNICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjA1CiNkZWZpbmUgTElOS19TUEVFRF9GV19NQVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNzgwCiNkZWZpbmUgTElOS19TUEVFRF9GV19TSElGVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3CiNkZWZpbmUgTElOS19TUEVFRF9GV19BVVRPTkVHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgwTCA8PCA3KQojZGVmaW5lIE5TX0xJTktfU1BFRURfRldfQVVUT05FRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MCkKI2RlZmluZSBMSU5LX1NQRUVEX0ZXXzFHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDFMIDw8IDcpCiNkZWZpbmUgTlNfTElOS19TUEVFRF9GV18xRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgxKQojZGVmaW5lIExJTktfU1BFRURfRldfMTBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MkwgPDwgNykKI2RlZmluZSBOU19MSU5LX1NQRUVEX0ZXXzEwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDIpCiNkZWZpbmUgTElOS19TUEVFRF9GV18yNUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgzTCA8PCA3KQojZGVmaW5lIE5TX0xJTktfU1BFRURfRldfMjVHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MykKI2RlZmluZSBMSU5LX1NQRUVEX0ZXXzQwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDRMIDw8IDcpCiNkZWZpbmUgTlNfTElOS19TUEVFRF9GV180MEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg0KQojZGVmaW5lIExJTktfU1BFRURfRldfNTBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4NUwgPDwgNykKI2RlZmluZSBOU19MSU5LX1NQRUVEX0ZXXzUwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDUpCiNkZWZpbmUgTElOS19TUEVFRF9GV18xMDBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg2TCA8PCA3KQojZGVmaW5lIE5TX0xJTktfU1BFRURfRldfMTAwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4NikKI2RlZmluZSBMSU5LX1NQRUVEX0ZXXzIwMEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDdMIDw8IDcpCiNkZWZpbmUgTlNfTElOS19TUEVFRF9GV18yMDBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg3KQojZGVmaW5lIExJTktfU1BFRURfRldfMl81RyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4RUwgPDwgNykKI2RlZmluZSBOU19MSU5LX1NQRUVEX0ZXXzJfNUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweEUpCiNkZWZpbmUgTElOS19TUEVFRF9GV18xMDBNICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHhGTCA8PCA3KQojZGVmaW5lIE5TX0xJTktfU1BFRURfRldfMTAwTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4RikKLyogbnZtIGNmZyAyMTAgKi8KI2RlZmluZSBEM19MSU5LX1NQRUVEX0ZXX05VTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxMAojZGVmaW5lIEQzX0xJTktfU1BFRURfRldfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDBGMDAwMAojZGVmaW5lIEQzX0xJTktfU1BFRURfRldfU0hJRlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYKI2RlZmluZSBEM19MSU5LX1NQRUVEX0ZXX0FVVE9ORUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDBMIDw8IDE2KQojZGVmaW5lIE5TX0QzX0xJTktfU1BFRURfRldfQVVUT05FRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MCkKI2RlZmluZSBEM19MSU5LX1NQRUVEX0ZXXzFHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDFMIDw8IDE2KQojZGVmaW5lIE5TX0QzX0xJTktfU1BFRURfRldfMUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MSkKI2RlZmluZSBEM19MSU5LX1NQRUVEX0ZXXzEwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDJMIDw8IDE2KQojZGVmaW5lIE5TX0QzX0xJTktfU1BFRURfRldfMTBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MikKI2RlZmluZSBEM19MSU5LX1NQRUVEX0ZXXzI1RyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDNMIDw8IDE2KQojZGVmaW5lIE5TX0QzX0xJTktfU1BFRURfRldfMjVHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MykKI2RlZmluZSBEM19MSU5LX1NQRUVEX0ZXXzQwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDRMIDw8IDE2KQojZGVmaW5lIE5TX0QzX0xJTktfU1BFRURfRldfNDBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4NCkKI2RlZmluZSBEM19MSU5LX1NQRUVEX0ZXXzUwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDVMIDw8IDE2KQojZGVmaW5lIE5TX0QzX0xJTktfU1BFRURfRldfNTBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4NSkKI2RlZmluZSBEM19MSU5LX1NQRUVEX0ZXXzEwMEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDZMIDw8IDE2KQojZGVmaW5lIE5TX0QzX0xJTktfU1BFRURfRldfMTAwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4NikKI2RlZmluZSBEM19MSU5LX1NQRUVEX0ZXXzIwMEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDdMIDw8IDE2KQojZGVmaW5lIE5TX0QzX0xJTktfU1BFRURfRldfMjAwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4NykKI2RlZmluZSBEM19MSU5LX1NQRUVEX0ZXXzJfNUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweEVMIDw8IDE2KQojZGVmaW5lIE5TX0QzX0xJTktfU1BFRURfRldfMl81RyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4RSkKI2RlZmluZSBEM19MSU5LX1NQRUVEX0ZXXzEwME0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweEZMIDw8IDE2KQojZGVmaW5lIE5TX0QzX0xJTktfU1BFRURfRldfMTAwTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4RikKLyogbnZtIGNmZyAyMTEgKi8KI2RlZmluZSBEM19GTE9XX0NPTlRST0xfRldfTlVNICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxMQojZGVmaW5lIEQzX0ZMT1dfQ09OVFJPTF9GV19NQVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDcwMDAwMAojZGVmaW5lIEQzX0ZMT1dfQ09OVFJPTF9GV19TSElGVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAKI2RlZmluZSBEM19GTE9XX0NPTlRST0xfRldfQVVUTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDBMIDw8IDIwKQojZGVmaW5lIE5TX0QzX0ZMT1dfQ09OVFJPTF9GV19BVVRPICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MCkKI2RlZmluZSBEM19GTE9XX0NPTlRST0xfRldfVFggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDFMIDw8IDIwKQojZGVmaW5lIE5TX0QzX0ZMT1dfQ09OVFJPTF9GV19UWCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MSkKI2RlZmluZSBEM19GTE9XX0NPTlRST0xfRldfUlggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDJMIDw8IDIwKQojZGVmaW5lIE5TX0QzX0ZMT1dfQ09OVFJPTF9GV19SWCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MikKI2RlZmluZSBEM19GTE9XX0NPTlRST0xfRldfQk9USCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDNMIDw8IDIwKQojZGVmaW5lIE5TX0QzX0ZMT1dfQ09OVFJPTF9GV19CT1RIICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MykKI2RlZmluZSBEM19GTE9XX0NPTlRST0xfRldfTk9ORSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDRMIDw8IDIwKQojZGVmaW5lIE5TX0QzX0ZMT1dfQ09OVFJPTF9GV19OT05FICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4NCkKLyogbnZtIGNmZyAyMTMgKi8KI2RlZmluZSBQT1JUX0NGR19MSU5LX1NFVFRJTkdTX01FRElBX0FVVE9fREVURUNUX05VTSAgICAgICAgICAgIDIxMwojZGVmaW5lIFBPUlRfQ0ZHX0xJTktfU0VUVElOR1NfTUVESUFfQVVUT19ERVRFQ1RfTUFTSyAgICAgICAgICAgMHgwMjAwMDAwMAojZGVmaW5lIFBPUlRfQ0ZHX0xJTktfU0VUVElOR1NfTUVESUFfQVVUT19ERVRFQ1RfU0hJRlQgICAgICAgICAgMjUKI2RlZmluZSBQT1JUX0NGR19MSU5LX1NFVFRJTkdTX01FRElBX0FVVE9fREVURUNUX0RJU0FCTEVEICAgICAgICgweDBMIDw8IDI1KQojZGVmaW5lIE5TX1BPUlRfQ0ZHX0xJTktfU0VUVElOR1NfTUVESUFfQVVUT19ERVRFQ1RfRElTQUJMRUQgICAgKDB4MCkKI2RlZmluZSBQT1JUX0NGR19MSU5LX1NFVFRJTkdTX01FRElBX0FVVE9fREVURUNUX0VOQUJMRUQgICAgICAgICgweDFMIDw8IDI1KQojZGVmaW5lIE5TX1BPUlRfQ0ZHX0xJTktfU0VUVElOR1NfTUVESUFfQVVUT19ERVRFQ1RfRU5BQkxFRCAgICAgKDB4MSkKLyogbnZtIGNmZyAzNTcgLSB1MzIgbWJhX2NmZzIgKi8KI2RlZmluZSBGVU5DX0NGR19QUkVfQk9PVF9NQkFfVkxBTl9WQUxVRV9OVU0gICAgICAgICAgICAgICAgICAgIDM1NwojZGVmaW5lIEZVTkNfQ0ZHX1BSRV9CT09UX01CQV9WTEFOX1ZBTFVFX01BU0sgICAgICAgICAgICAgICAgICAgMHgwMDAwRkZGRgojZGVmaW5lIEZVTkNfQ0ZHX1BSRV9CT09UX01CQV9WTEFOX1ZBTFVFX1NISUZUICAgICAgICAgICAgICAgICAgMAovKiBudm0gY2ZnIDM1OCAtIHUzMiBtYmFfY2ZnMiAqLwojZGVmaW5lIEZVTkNfQ0ZHX1BSRV9CT09UX01CQV9WTEFOX05VTSAgICAgICAgICAgICAgICAgICAgICAgICAgMzU4CiNkZWZpbmUgRlVOQ19DRkdfUFJFX0JPT1RfTUJBX1ZMQU5fTUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDEwMDAwCiNkZWZpbmUgRlVOQ19DRkdfUFJFX0JPT1RfTUJBX1ZMQU5fU0hJRlQgICAgICAgICAgICAgICAgICAgICAgICAxNgojZGVmaW5lIEZVTkNfQ0ZHX1BSRV9CT09UX01CQV9WTEFOX0RJU0FCTEVEICAgICAgICAgICAgICAgICAgICAgKDB4MEwgPDwgMTYpCiNkZWZpbmUgTlNfRlVOQ19DRkdfUFJFX0JPT1RfTUJBX1ZMQU5fRElTQUJMRUQgICAgICAgICAgICAgICAgICAoMHgwKQojZGVmaW5lIEZVTkNfQ0ZHX1BSRV9CT09UX01CQV9WTEFOX0VOQUJMRUQgICAgICAgICAgICAgICAgICAgICAgKDB4MUwgPDwgMTYpCiNkZWZpbmUgTlNfRlVOQ19DRkdfUFJFX0JPT1RfTUJBX1ZMQU5fRU5BQkxFRCAgICAgICAgICAgICAgICAgICAoMHgxKQoKc3RydWN0IHR4X2Rvb3JiZWxsIHsKCXUzMiBrZXlfaWR4OwojZGVmaW5lIFRYX0RPT1JCRUxMX0lEWF9NQVNLICAgICAgMHhmZmZmZmZVTAojZGVmaW5lIFRYX0RPT1JCRUxMX0lEWF9TRlQgICAgICAgMAojZGVmaW5lIFRYX0RPT1JCRUxMX0tFWV9NQVNLICAgICAgMHhmMDAwMDAwMFVMCiNkZWZpbmUgVFhfRE9PUkJFTExfS0VZX1NGVCAgICAgICAyOAogICAgI2RlZmluZSBUWF9ET09SQkVMTF9LRVlfVFggICAgKDB4MFVMIDw8IDI4KQogICAgI2RlZmluZSBUWF9ET09SQkVMTF9LRVlfTEFTVCAgVFhfRE9PUkJFTExfS0VZX1RYCn07CgpzdHJ1Y3QgcnhfZG9vcmJlbGwgewoJdTMyIGtleV9pZHg7CiNkZWZpbmUgUlhfRE9PUkJFTExfSURYX01BU0sgICAgICAweGZmZmZmZlVMCiNkZWZpbmUgUlhfRE9PUkJFTExfSURYX1NGVCAgICAgICAwCiNkZWZpbmUgUlhfRE9PUkJFTExfS0VZX01BU0sgICAgICAweGYwMDAwMDAwVUwKI2RlZmluZSBSWF9ET09SQkVMTF9LRVlfU0ZUICAgICAgIDI4CiAgICAjZGVmaW5lIFJYX0RPT1JCRUxMX0tFWV9SWCAgICAoMHgxVUwgPDwgMjgpCiAgICAjZGVmaW5lIFJYX0RPT1JCRUxMX0tFWV9MQVNUICBSWF9ET09SQkVMTF9LRVlfUlgKfTsKCnN0cnVjdCBjbXBsX2Rvb3JiZWxsIHsKCXUzMiAga2V5X21hc2tfdmFsaWRfaWR4OwojZGVmaW5lIENNUExfRE9PUkJFTExfSURYX01BU0sgICAgICAweGZmZmZmZlVMCiNkZWZpbmUgQ01QTF9ET09SQkVMTF9JRFhfU0ZUICAgICAgIDAKI2RlZmluZSBDTVBMX0RPT1JCRUxMX0lEWF9WQUxJRCAgICAgMHg0MDAwMDAwVUwKI2RlZmluZSBDTVBMX0RPT1JCRUxMX01BU0sgICAgICAgICAgMHg4MDAwMDAwVUwKI2RlZmluZSBDTVBMX0RPT1JCRUxMX0tFWV9NQVNLICAgICAgMHhmMDAwMDAwMFVMCiNkZWZpbmUgQ01QTF9ET09SQkVMTF9LRVlfU0ZUICAgICAgIDI4CiAgICAjZGVmaW5lIENNUExfRE9PUkJFTExfS0VZX0NNUEwgICgweDJVTCA8PCAyOCkKICAgICNkZWZpbmUgQ01QTF9ET09SQkVMTF9LRVlfTEFTVCAgQ01QTF9ET09SQkVMTF9LRVlfQ01QTAp9OwoKLyogZGJjX2RiYyAoc2l6ZTo2NGIvOEIpICovCnN0cnVjdCBkYmNfZGJjIHsKCV9fbGUzMiAgaW5kZXg7CgkjZGVmaW5lIERCQ19EQkNfSU5ERVhfTUFTSyAgICAgICAgICAweGZmZmZmZlVMCgkjZGVmaW5lIERCQ19EQkNfSU5ERVhfU0ZUICAgICAgICAgICAwCglfX2xlMzIgIHR5cGVfcGF0aF94aWQ7CgkjZGVmaW5lIERCQ19EQkNfWElEX01BU0sgICAgICAgICAgICAweGZmZmZmVUwKCSNkZWZpbmUgREJDX0RCQ19YSURfU0ZUICAgICAgICAgICAgIDAKCSNkZWZpbmUgREJDX0RCQ19QQVRIX01BU0sgICAgICAgICAgIDB4MzAwMDAwMFVMCgkjZGVmaW5lIERCQ19EQkNfUEFUSF9TRlQgICAgICAgICAgICAyNAoJI2RlZmluZSBEQkNfREJDX1BBVEhfUk9DRSAgICAgICAgICAgKDB4MFVMIDw8IDI0KQoJI2RlZmluZSBEQkNfREJDX1BBVEhfTDIgICAgICAgICAgICAgKDB4MVVMIDw8IDI0KQoJI2RlZmluZSBEQkNfREJDX1BBVEhfRU5HSU5FICAgICAgICAgKDB4MlVMIDw8IDI0KQoJI2RlZmluZSBEQkNfREJDX1BBVEhfTEFTVCAgICAgICAgICAgREJDX0RCQ19QQVRIX0VOR0lORQoJI2RlZmluZSBEQkNfREJDX0RFQlVHX1RSQUNFICAgICAgICAgMHg4MDAwMDAwVUwKCSNkZWZpbmUgREJDX0RCQ19UWVBFX01BU0sgICAgICAgICAgIDB4ZjAwMDAwMDBVTAoJI2RlZmluZSBEQkNfREJDX1RZUEVfU0ZUICAgICAgICAgICAgMjgKCSNkZWZpbmUgREJDX0RCQ19UWVBFX1NRICAgICAgICAgICAgICgweDBVTCA8PCAyOCkKCSNkZWZpbmUgREJDX0RCQ19UWVBFX1JRICAgICAgICAgICAgICgweDFVTCA8PCAyOCkKCSNkZWZpbmUgREJDX0RCQ19UWVBFX1NSUSAgICAgICAgICAgICgweDJVTCA8PCAyOCkKCSNkZWZpbmUgREJDX0RCQ19UWVBFX1NSUV9BUk0gICAgICAgICgweDNVTCA8PCAyOCkKCSNkZWZpbmUgREJDX0RCQ19UWVBFX0NRICAgICAgICAgICAgICgweDRVTCA8PCAyOCkKCSNkZWZpbmUgREJDX0RCQ19UWVBFX0NRX0FSTVNFICAgICAgICgweDVVTCA8PCAyOCkKCSNkZWZpbmUgREJDX0RCQ19UWVBFX0NRX0FSTUFMTCAgICAgICgweDZVTCA8PCAyOCkKCSNkZWZpbmUgREJDX0RCQ19UWVBFX0NRX0FSTUVOQSAgICAgICgweDdVTCA8PCAyOCkKCSNkZWZpbmUgREJDX0RCQ19UWVBFX1NSUV9BUk1FTkEgICAgICgweDhVTCA8PCAyOCkKCSNkZWZpbmUgREJDX0RCQ19UWVBFX0NRX0NVVE9GRl9BQ0sgICgweDlVTCA8PCAyOCkKCSNkZWZpbmUgREJDX0RCQ19UWVBFX05RICAgICAgICAgICAgICgweGFVTCA8PCAyOCkKCSNkZWZpbmUgREJDX0RCQ19UWVBFX05RX0FSTSAgICAgICAgICgweGJVTCA8PCAyOCkKCSNkZWZpbmUgREJDX0RCQ19UWVBFX05VTEwgICAgICAgICAgICgweGZVTCA8PCAyOCkKCSNkZWZpbmUgREJDX0RCQ19UWVBFX0xBU1QgICAgICAgICAgIERCQ19EQkNfVFlQRV9OVUxMCn07CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBUcmFuc21pdCBpbmZvLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCnN0cnVjdCB0eF9iZF9zaG9ydCB7Cgl1MTYgZmxhZ3NfdHlwZTsKI2RlZmluZSBUWF9CRF9TSE9SVF9UWVBFX01BU0sgICAgICAgICAgICAgICAweDNmVUwKI2RlZmluZSBUWF9CRF9TSE9SVF9UWVBFX1NGVCAgICAgICAgICAgICAgICAwCiNkZWZpbmUgVFhfQkRfU0hPUlRfVFlQRV9UWF9CRF9TSE9SVCAgICAgICAgMHgwVUwKI2RlZmluZSBUWF9CRF9TSE9SVF9UWVBFX0xBU1QgICAgICAgICAgICAgICBUWF9CRF9TSE9SVF9UWVBFX1RYX0JEX1NIT1JUCiNkZWZpbmUgVFhfQkRfU0hPUlRfRkxBR1NfTUFTSyAgICAgICAgICAgICAgMHhmZmMwVUwKI2RlZmluZSBUWF9CRF9TSE9SVF9GTEFHU19TRlQgICAgICAgICAgICAgICA2CiNkZWZpbmUgVFhfQkRfU0hPUlRfRkxBR1NfUEFDS0VUX0VORCAgICAgICAgMHg0MFVMCiNkZWZpbmUgVFhfQkRfU0hPUlRfRkxBR1NfTk9fQ01QTCAgICAgICAgICAgMHg4MFVMCiNkZWZpbmUgVFhfQkRfU0hPUlRfRkxBR1NfQkRfQ05UX01BU0sgICAgICAgMHgxZjAwVUwKI2RlZmluZSBUWF9CRF9TSE9SVF9GTEFHU19CRF9DTlRfU0ZUICAgICAgICA4CiNkZWZpbmUgVFhfQkRfU0hPUlRfRkxBR1NfTEhJTlRfTUFTSyAgICAgICAgMHg2MDAwVUwKI2RlZmluZSBUWF9CRF9TSE9SVF9GTEFHU19MSElOVF9TRlQgICAgICAgICAxMwojZGVmaW5lIFRYX0JEX1NIT1JUX0ZMQUdTX0xISU5UX0xUNTEyICAgICAgICgweDBVTCA8PCAxMykKI2RlZmluZSBUWF9CRF9TSE9SVF9GTEFHU19MSElOVF9MVDFLICAgICAgICAoMHgxVUwgPDwgMTMpCiNkZWZpbmUgVFhfQkRfU0hPUlRfRkxBR1NfTEhJTlRfTFQySyAgICAgICAgKDB4MlVMIDw8IDEzKQojZGVmaW5lIFRYX0JEX1NIT1JUX0ZMQUdTX0xISU5UX0dURTJLICAgICAgICgweDNVTCA8PCAxMykKI2RlZmluZSBUWF9CRF9TSE9SVF9GTEFHU19MSElOVF9MQVNUICAgICAgICBUWF9CRF9TSE9SVF9GTEFHU19MSElOVF9HVEUySwojZGVmaW5lIFRYX0JEX1NIT1JUX0ZMQUdTX0NPQUxfTk9XICAgICAgICAgIDB4ODAwMFVMCgl1MTYgbGVuOwoJdTMyIG9wYXF1ZTsKCXVuaW9uIGRtYV9hZGRyNjRfdCBkbWE7Cn07CgpzdHJ1Y3QgdHhfY21wbCB7Cgl1MTYgZmxhZ3NfdHlwZTsKI2RlZmluZSBUWF9DTVBMX1RZUEVfTUFTSyAgICAgICAgMHgzZlVMCiNkZWZpbmUgVFhfQ01QTF9UWVBFX1NGVCAgICAgICAgIDAKI2RlZmluZSBUWF9DTVBMX1RZUEVfVFhfTDIgICAgICAgMHgwVUwKI2RlZmluZSBUWF9DTVBMX1RZUEVfTEFTVCAgICAgICAgVFhfQ01QTF9UWVBFX1RYX0wyCiNkZWZpbmUgVFhfQ01QTF9GTEFHU19NQVNLICAgICAgIDB4ZmZjMFVMCiNkZWZpbmUgVFhfQ01QTF9GTEFHU19TRlQgICAgICAgIDYKI2RlZmluZSBUWF9DTVBMX0ZMQUdTX0VSUk9SICAgICAgMHg0MFVMCiNkZWZpbmUgVFhfQ01QTF9GTEFHU19QVVNIICAgICAgIDB4ODBVTAoJdTE2IHVudXNlZF8wOwoJdTMyIG9wYXF1ZTsKCXUxNiBlcnJvcnNfdjsKI2RlZmluZSBUWF9DTVBMX1YgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxVUwKI2RlZmluZSBUWF9DTVBMX0VSUk9SU19NQVNLICAgICAgICAgICAgICAgICAgICAgMHhmZmZlVUwKI2RlZmluZSBUWF9DTVBMX0VSUk9SU19TRlQgICAgICAgICAgICAgICAgICAgICAgMQojZGVmaW5lIFRYX0NNUExfRVJST1JTX0JVRkZFUl9FUlJPUl9NQVNLICAgICAgICAweGVVTAojZGVmaW5lIFRYX0NNUExfRVJST1JTX0JVRkZFUl9FUlJPUl9TRlQgICAgICAgICAxCiNkZWZpbmUgVFhfQ01QTF9FUlJPUlNfQlVGRkVSX0VSUk9SX05PX0VSUk9SICAgICgweDBVTCA8PCAxKQojZGVmaW5lIFRYX0NNUExfRVJST1JTX0JVRkZFUl9FUlJPUl9CQURfRk1UICAgICAoMHgyVUwgPDwgMSkKI2RlZmluZSBUWF9DTVBMX0VSUk9SU19CVUZGRVJfRVJST1JfTEFTVCBUWF9DTVBMX0VSUk9SU19CVUZGRVJfRVJST1JfQkFEX0ZNVAojZGVmaW5lIFRYX0NNUExfRVJST1JTX1pFUk9fTEVOR1RIX1BLVCAgICAgICAgICAweDEwVUwKI2RlZmluZSBUWF9DTVBMX0VSUk9SU19FWENFU1NJVkVfQkRfTEVOR1RIICAgICAgMHgyMFVMCiNkZWZpbmUgVFhfQ01QTF9FUlJPUlNfRE1BX0VSUk9SICAgICAgICAgICAgICAgIDB4NDBVTAojZGVmaW5lIFRYX0NNUExfRVJST1JTX0hJTlRfVE9PX1NIT1JUICAgICAgICAgICAweDgwVUwKI2RlZmluZSBUWF9DTVBMX0VSUk9SU19QT0lTT05fVExQX0VSUk9SICAgICAgICAgMHgxMDBVTAoJdTE2IHVudXNlZF8xOwoJdTMyIHVudXNlZF8yOwp9OwoKc3RydWN0IHR4X2luZm8gewoJdm9pZCAgICAgICAgICAgICAqYmRfdmlydDsKCXN0cnVjdCBpb19idWZmZXIgKmlvYltNQVhfVFhfREVTQ19DTlRdOwoJdTE2ICAgICAgICAgICAgICBwcm9kX2lkOyAgLyogVHggcHJvZHVjZXIgaW5kZXguICovCgl1MTYgICAgICAgICAgICAgIGNvbnNfaWQ7Cgl1MTYgICAgICAgICAgICAgIHJpbmdfY250OwoJdTMyICAgICAgICAgICAgICBjbnQ7ICAgLyogVHggc3RhdGlzdGljcy4gKi8KCXUzMiAgICAgICAgICAgICAgY250X3JlcTsKfTsKCnN0cnVjdCBjbXBsX2Jhc2UgewoJdTE2IHR5cGU7CiNkZWZpbmUgQ01QTF9CQVNFX1RZUEVfTUFTSyAgICAgICAgICAgICAgMHgzZlVMCiNkZWZpbmUgQ01QTF9CQVNFX1RZUEVfU0ZUICAgICAgICAgICAgICAgMAojZGVmaW5lIENNUExfQkFTRV9UWVBFX1RYX0wyICAgICAgICAgICAgIDB4MFVMCiNkZWZpbmUgQ01QTF9CQVNFX1RZUEVfUlhfTDIgICAgICAgICAgICAgMHgxMVVMCiNkZWZpbmUgQ01QTF9CQVNFX1RZUEVfUlhfQUdHICAgICAgICAgICAgMHgxMlVMCiNkZWZpbmUgQ01QTF9CQVNFX1RZUEVfUlhfVFBBX1NUQVJUICAgICAgMHgxM1VMCiNkZWZpbmUgQ01QTF9CQVNFX1RZUEVfUlhfVFBBX0VORCAgICAgICAgMHgxNVVMCiNkZWZpbmUgQ01QTF9CQVNFX1RZUEVfU1RBVF9FSkVDVCAgICAgICAgMHgxYVVMCiNkZWZpbmUgQ01QTF9CQVNFX1RZUEVfSFdSTV9ET05FICAgICAgICAgMHgyMFVMCiNkZWZpbmUgQ01QTF9CQVNFX1RZUEVfSFdSTV9GV0RfUkVRICAgICAgMHgyMlVMCiNkZWZpbmUgQ01QTF9CQVNFX1RZUEVfSFdSTV9GV0RfUkVTUCAgICAgMHgyNFVMCiNkZWZpbmUgQ01QTF9CQVNFX1RZUEVfSFdSTV9BU1lOQ19FVkVOVCAgMHgyZVVMCiNkZWZpbmUgQ01QTF9CQVNFX1RZUEVfQ1FfTk9USUZJQ0FUSU9OICAgMHgzMFVMCiNkZWZpbmUgQ01QTF9CQVNFX1RZUEVfU1JRX0VWRU5UICAgICAgICAgMHgzMlVMCiNkZWZpbmUgQ01QTF9CQVNFX1RZUEVfREJRX0VWRU5UICAgICAgICAgMHgzNFVMCiNkZWZpbmUgQ01QTF9CQVNFX1RZUEVfUVBfRVZFTlQgICAgICAgICAgMHgzOFVMCiNkZWZpbmUgQ01QTF9CQVNFX1RZUEVfRlVOQ19FVkVOVCAgICAgICAgMHgzYVVMCiNkZWZpbmUgQ01QTF9CQVNFX1RZUEVfTEFTVCBDTVBMX0JBU0VfVFlQRV9GVU5DX0VWRU5UCgl1MTYgaW5mbzE7Cgl1MzIgaW5mbzI7Cgl1MzIgaW5mbzNfdjsKI2RlZmluZSBDTVBMX0JBU0VfViAgICAgICAgICAweDFVTAojZGVmaW5lIENNUExfQkFTRV9JTkZPM19NQVNLIDB4ZmZmZmZmZmVVTAojZGVmaW5lIENNUExfQkFTRV9JTkZPM19TRlQgIDEKCXUzMiBpbmZvNDsKfTsKCnN0cnVjdCBjbXBfaW5mbyB7Cgl2b2lkICAgICAgKmJkX3ZpcnQ7Cgl1MTYgICAgICAgY29uc19pZDsKCXUxNiAgICAgICByaW5nX2NudDsKCXU4ICAgICAgICBjb21wbGV0aW9uX2JpdDsKCXU4ICAgICAgICByZXNbM107Cn07CgovKiBDb21wbGV0aW9uIFF1ZXVlIE5vdGlmaWNhdGlvbiAqLwovKiBucV9jbiAoc2l6ZToxMjhiLzE2QikgKi8Kc3RydWN0IG5xX2Jhc2UgewoJdTE2CXR5cGU7Ci8qCiAqIFRoaXMgZmllbGQgaW5kaWNhdGVzIHRoZSBleGFjdCB0eXBlIG9mIHRoZSBjb21wbGV0aW9uLgogKiBCeSBjb252ZW50aW9uLCB0aGUgTFNCIGlkZW50aWZpZXMgdGhlIGxlbmd0aCBvZiB0aGUKICogcmVjb3JkIGluIDE2QiB1bml0cy4gIEV2ZW4gdmFsdWVzIGluZGljYXRlIDE2QgogKiByZWNvcmRzLiAgT2RkIHZhbHVlcyBpbmRpY2F0ZSAzMkIKICogcmVjb3Jkcy4KICovCiNkZWZpbmUgTlFfQ05fVFlQRV9NQVNLICAgICAgICAgICAweDNmVUwKI2RlZmluZSBOUV9DTl9UWVBFX1NGVCAgICAgICAgICAgIDAKLyogQ1EgTm90aWZpY2F0aW9uICovCgkgICAgI2RlZmluZSBOUV9DTl9UWVBFX0NRX05PVElGSUNBVElPTiAgMHgzMFVMCgkgICAgI2RlZmluZSBOUV9DTl9UWVBFX0xBU1QgICAgICAgICAgICBOUV9DTl9UWVBFX0NRX05PVElGSUNBVElPTgoJdTE2CXJlc2VydmVkMTY7Ci8qCiAqIFRoaXMgaXMgYW4gYXBwbGljYXRpb24gbGV2ZWwgSUQgdXNlZCB0byBpZGVudGlmeSB0aGUKICogQ1EuICBUaGlzIGZpZWxkIGNhcnJpZXMgdGhlIGxvd2VyIDMyYiBvZiB0aGUgdmFsdWUuCiAqLwoJdTMyCWNxX2hhbmRsZV9sb3c7Cgl1MzIJdjsKLyoKICogVGhpcyB2YWx1ZSBpcyB3cml0dGVuIGJ5IHRoZSBOSUMgc3VjaCB0aGF0IGl0IHdpbGwgYmUgZGlmZmVyZW50CiAqIGZvciBlYWNoIHBhc3MgdGhyb3VnaCB0aGUgY29tcGxldGlvbiBxdWV1ZS4gICBUaGUgZXZlbiBwYXNzZXMKICogd2lsbCB3cml0ZSAxLiAgVGhlIG9kZCBwYXNzZXMgd2lsbCB3cml0ZSAwLgogKi8KI2RlZmluZSBOUV9DTl9WICAgICAweDFVTAovKgogKiBUaGlzIGlzIGFuIGFwcGxpY2F0aW9uIGxldmVsIElEIHVzZWQgdG8gaWRlbnRpZnkgdGhlCiAqIENRLiAgVGhpcyBmaWVsZCBjYXJyaWVzIHRoZSB1cHBlciAzMmIgb2YgdGhlIHZhbHVlLgogKi8KCXUzMgljcV9oYW5kbGVfaGlnaDsKfTsKCnN0cnVjdCBucV9pbmZvIHsKCXZvaWQgICAgICAqYmRfdmlydDsKCXUxNiAgICAgICBjb25zX2lkOwoJdTE2ICAgICAgIHJpbmdfY250OwoJdTggICAgICAgIGNvbXBsZXRpb25fYml0OwoJdTggICAgICAgIHJlc1szXTsKfTsKCnN0cnVjdCByeF9wa3RfY21wbCB7Cgl1MTYgZmxhZ3NfdHlwZTsKI2RlZmluZSBSWF9QS1RfQ01QTF9UWVBFX01BU0sgICAgICAgICAgICAgICAgICAgIDB4M2ZVTAojZGVmaW5lIFJYX1BLVF9DTVBMX1RZUEVfU0ZUICAgICAgICAgICAgICAgICAgICAgMAojZGVmaW5lIFJYX1BLVF9DTVBMX1RZUEVfUlhfTDIgICAgICAgICAgICAgICAgICAgMHgxMVVMCiNkZWZpbmUgUlhfUEtUX0NNUExfVFlQRV9MQVNUICAgICAgICAgICAgICAgICAgICBSWF9QS1RfQ01QTF9UWVBFX1JYX0wyCiNkZWZpbmUgUlhfUEtUX0NNUExfRkxBR1NfTUFTSyAgICAgICAgICAgICAgICAgICAweGZmYzBVTAojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTX1NGVCAgICAgICAgICAgICAgICAgICAgNgojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTX0VSUk9SICAgICAgICAgICAgICAgICAgMHg0MFVMCiNkZWZpbmUgUlhfUEtUX0NNUExfRkxBR1NfUExBQ0VNRU5UX01BU0sgICAgICAgICAweDM4MFVMCiNkZWZpbmUgUlhfUEtUX0NNUExfRkxBR1NfUExBQ0VNRU5UX1NGVCAgICAgICAgICA3CiNkZWZpbmUgUlhfUEtUX0NNUExfRkxBR1NfUExBQ0VNRU5UX05PUk1BTCAgICAgICAoMHgwVUwgPDwgNykKI2RlZmluZSBSWF9QS1RfQ01QTF9GTEFHU19QTEFDRU1FTlRfSlVNQk8gICAgICAgICgweDFVTCA8PCA3KQojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTX1BMQUNFTUVOVF9IRFMgICAgICAgICAgKDB4MlVMIDw8IDcpCiNkZWZpbmUgUlhfUEtUX0NNUExfRkxBR1NfUExBQ0VNRU5UX0xBU1QgUlhfUEtUX0NNUExfRkxBR1NfUExBQ0VNRU5UX0hEUwojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTX1JTU19WQUxJRCAgICAgICAgICAgICAgMHg0MDBVTAojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTX1VOVVNFRCAgICAgICAgICAgICAgICAgMHg4MDBVTAojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTX0lUWVBFX01BU0sgICAgICAgICAgICAgMHhmMDAwVUwKI2RlZmluZSBSWF9QS1RfQ01QTF9GTEFHU19JVFlQRV9TRlQgICAgICAgICAgICAgIDEyCiNkZWZpbmUgUlhfUEtUX0NNUExfRkxBR1NfSVRZUEVfTk9UX0tOT1dOICAgICAgICAgICgweDBVTCA8PCAxMikKI2RlZmluZSBSWF9QS1RfQ01QTF9GTEFHU19JVFlQRV9JUCAgICAgICAgICAgICAgICAgKDB4MVVMIDw8IDEyKQojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTX0lUWVBFX1RDUCAgICAgICAgICAgICAgICAoMHgyVUwgPDwgMTIpCiNkZWZpbmUgUlhfUEtUX0NNUExfRkxBR1NfSVRZUEVfVURQICAgICAgICAgICAgICAgICgweDNVTCA8PCAxMikKI2RlZmluZSBSWF9QS1RfQ01QTF9GTEFHU19JVFlQRV9GQ09FICAgICAgICAgICAgICAgKDB4NFVMIDw8IDEyKQojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTX0lUWVBFX1JPQ0UgICAgICAgICAgICAgICAoMHg1VUwgPDwgMTIpCiNkZWZpbmUgUlhfUEtUX0NNUExfRkxBR1NfSVRZUEVfSUNNUCAgICAgICAgICAgICAgICgweDdVTCA8PCAxMikKI2RlZmluZSBSWF9QS1RfQ01QTF9GTEFHU19JVFlQRV9QVFBfV09fVElNRVNUQU1QICAgKDB4OFVMIDw8IDEyKQojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTX0lUWVBFX1BUUF9XX1RJTUVTVEFNUCAgICAoMHg5VUwgPDwgMTIpCiNkZWZpbmUgUlhfUEtUX0NNUExfRkxBR1NfSVRZUEVfTEFTVCBSWF9QS1RfQ01QTF9GTEFHU19JVFlQRV9QVFBfV19USU1FU1RBTVAKCXUxNiBsZW47Cgl1MzIgb3BhcXVlOwoJdTggIGFnZ19idWZzX3YxOwojZGVmaW5lIFJYX1BLVF9DTVBMX1YxICAgICAgICAgICAgMHgxVUwKI2RlZmluZSBSWF9QS1RfQ01QTF9BR0dfQlVGU19NQVNLIDB4M2VVTAojZGVmaW5lIFJYX1BLVF9DTVBMX0FHR19CVUZTX1NGVCAgMQojZGVmaW5lIFJYX1BLVF9DTVBMX1VOVVNFRDFfTUFTSyAgMHhjMFVMCiNkZWZpbmUgUlhfUEtUX0NNUExfVU5VU0VEMV9TRlQgICA2Cgl1OCAgcnNzX2hhc2hfdHlwZTsKCXU4ICBwYXlsb2FkX29mZnNldDsKCXU4ICB1bnVzZWQxOwoJdTMyIHJzc19oYXNoOwp9OwoKc3RydWN0IHJ4X3BrdF9jbXBsX2hpIHsKCXUzMiAgZmxhZ3MyOwojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTMl9JUF9DU19DQUxDICAgICAgICAgMHgxVUwKI2RlZmluZSBSWF9QS1RfQ01QTF9GTEFHUzJfTDRfQ1NfQ0FMQyAgICAgICAgIDB4MlVMCiNkZWZpbmUgUlhfUEtUX0NNUExfRkxBR1MyX1RfSVBfQ1NfQ0FMQyAgICAgICAweDRVTAojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTMl9UX0w0X0NTX0NBTEMgICAgICAgMHg4VUwKI2RlZmluZSBSWF9QS1RfQ01QTF9GTEFHUzJfTUVUQV9GT1JNQVRfTUFTSyAgIDB4ZjBVTAojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTMl9NRVRBX0ZPUk1BVF9TRlQgICAgNAojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTMl9NRVRBX0ZPUk1BVF9OT05FICAgKDB4MFVMIDw8IDQpCiNkZWZpbmUgUlhfUEtUX0NNUExfRkxBR1MyX01FVEFfRk9STUFUX1ZMQU4gICAoMHgxVUwgPDwgNCkKI2RlZmluZSBSWF9QS1RfQ01QTF9GTEFHUzJfTUVUQV9GT1JNQVRfTEFTVCAgIFwKCVJYX1BLVF9DTVBMX0ZMQUdTMl9NRVRBX0ZPUk1BVF9WTEFOCiNkZWZpbmUgUlhfUEtUX0NNUExfRkxBR1MyX0lQX1RZUEUgICAgICAgICAgICAweDEwMFVMCgl1MzIgbWV0YWRhdGE7CiNkZWZpbmUgUlhfUEtUX0NNUExfTUVUQURBVEFfVklEX01BU0sgICAgICAgICAweGZmZlVMCiNkZWZpbmUgUlhfUEtUX0NNUExfTUVUQURBVEFfVklEX1NGVCAgICAgICAgICAwCiNkZWZpbmUgUlhfUEtUX0NNUExfTUVUQURBVEFfREUgICAgICAgICAgICAgICAweDEwMDBVTAojZGVmaW5lIFJYX1BLVF9DTVBMX01FVEFEQVRBX1BSSV9NQVNLICAgICAgICAgMHhlMDAwVUwKI2RlZmluZSBSWF9QS1RfQ01QTF9NRVRBREFUQV9QUklfU0ZUICAgICAgICAgIDEzCiNkZWZpbmUgUlhfUEtUX0NNUExfTUVUQURBVEFfVFBJRF9NQVNLICAgICAgICAweGZmZmYwMDAwVUwKI2RlZmluZSBSWF9QS1RfQ01QTF9NRVRBREFUQV9UUElEX1NGVCAgICAgICAgIDE2Cgl1MTYgZXJyb3JzX3YyOwojZGVmaW5lIFJYX1BLVF9DTVBMX1YyICAgICAgICAgICAgICAgICAgICAgICAgMHgxVUwKI2RlZmluZSBSWF9QS1RfQ01QTF9FUlJPUlNfTUFTSyAgICAgICAgICAgICAgIDB4ZmZmZVVMCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX1NGVCAgICAgICAgICAgICAgICAxCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX0JVRkZFUl9FUlJPUl9NQVNLICAweGVVTAojZGVmaW5lIFJYX1BLVF9DTVBMX0VSUk9SU19CVUZGRVJfRVJST1JfU0ZUICAgMQojZGVmaW5lIFJYX1BLVF9DTVBMX0VSUk9SU19CVUZGRVJfRVJST1JfTk9fQlVGRkVSICAgKDB4MFVMIDw8IDEpCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX0JVRkZFUl9FUlJPUl9ESURfTk9UX0ZJVCAoMHgxVUwgPDwgMSkKI2RlZmluZSBSWF9QS1RfQ01QTF9FUlJPUlNfQlVGRkVSX0VSUk9SX05PVF9PTl9DSElQICgweDJVTCA8PCAxKQojZGVmaW5lIFJYX1BLVF9DTVBMX0VSUk9SU19CVUZGRVJfRVJST1JfQkFEX0ZPUk1BVCAgKDB4M1VMIDw8IDEpCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX0JVRkZFUl9FUlJPUl9MQVNUIFwKCVJYX1BLVF9DTVBMX0VSUk9SU19CVUZGRVJfRVJST1JfQkFEX0ZPUk1BVAojZGVmaW5lIFJYX1BLVF9DTVBMX0VSUk9SU19JUF9DU19FUlJPUiAgICAgICAgICAgICAgMHgxMFVMCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX0w0X0NTX0VSUk9SICAgICAgICAgICAgICAweDIwVUwKI2RlZmluZSBSWF9QS1RfQ01QTF9FUlJPUlNfVF9JUF9DU19FUlJPUiAgICAgICAgICAgIDB4NDBVTAojZGVmaW5lIFJYX1BLVF9DTVBMX0VSUk9SU19UX0w0X0NTX0VSUk9SICAgICAgICAgICAgMHg4MFVMCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX0NSQ19FUlJPUiAgICAgICAgICAgICAgICAweDEwMFVMCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX1RfUEtUX0VSUk9SX01BU0sgICAgICAgICAweGUwMFVMCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX1RfUEtUX0VSUk9SX1NGVCAgICAgICAgICA5CiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX1RfUEtUX0VSUk9SX05PX0VSUk9SICAgICAoMHgwVUwgPDwgOSkKI2RlZmluZSBSWF9QS1RfQ01QTF9FUlJPUlNfVF9QS1RfRVJST1JfVF9MM19CQURfVkVSU0lPTiAgICgweDFVTCA8PCA5KQojZGVmaW5lIFJYX1BLVF9DTVBMX0VSUk9SU19UX1BLVF9FUlJPUl9UX0wzX0JBRF9IRFJfTEVOICAgKDB4MlVMIDw8IDkpCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX1RfUEtUX0VSUk9SX1RVTk5FTF9UT1RBTF9FUlJPUiAoMHgzVUwgPDwgOSkKI2RlZmluZSBSWF9QS1RfQ01QTF9FUlJPUlNfVF9QS1RfRVJST1JfVF9JUF9UT1RBTF9FUlJPUiAgICgweDRVTCA8PCA5KQojZGVmaW5lIFJYX1BLVF9DTVBMX0VSUk9SU19UX1BLVF9FUlJPUl9UX1VEUF9UT1RBTF9FUlJPUiAgKDB4NVVMIDw8IDkpCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX1RfUEtUX0VSUk9SX1RfTDNfQkFEX1RUTCAgICAgICAoMHg2VUwgPDwgOSkKI2RlZmluZSBSWF9QS1RfQ01QTF9FUlJPUlNfVF9QS1RfRVJST1JfTEFTVCBcCglSWF9QS1RfQ01QTF9FUlJPUlNfVF9QS1RfRVJST1JfVF9MM19CQURfVFRMCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX1BLVF9FUlJPUl9NQVNLICAgICAgICAgICAgICAgICAweGYwMDBVTAojZGVmaW5lIFJYX1BLVF9DTVBMX0VSUk9SU19QS1RfRVJST1JfU0ZUICAgICAgICAgICAgICAgICAgMTIKI2RlZmluZSBSWF9QS1RfQ01QTF9FUlJPUlNfUEtUX0VSUk9SX05PX0VSUk9SICAgICAgICAgICAgICgweDBVTCA8PCAxMikKI2RlZmluZSBSWF9QS1RfQ01QTF9FUlJPUlNfUEtUX0VSUk9SX0wzX0JBRF9WRVJTSU9OICAgICAgICgweDFVTCA8PCAxMikKI2RlZmluZSBSWF9QS1RfQ01QTF9FUlJPUlNfUEtUX0VSUk9SX0wzX0JBRF9IRFJfTEVOICAgICAgICgweDJVTCA8PCAxMikKI2RlZmluZSBSWF9QS1RfQ01QTF9FUlJPUlNfUEtUX0VSUk9SX0wzX0JBRF9UVEwgICAgICAgICAgICgweDNVTCA8PCAxMikKI2RlZmluZSBSWF9QS1RfQ01QTF9FUlJPUlNfUEtUX0VSUk9SX0lQX1RPVEFMX0VSUk9SICAgICAgICgweDRVTCA8PCAxMikKI2RlZmluZSBSWF9QS1RfQ01QTF9FUlJPUlNfUEtUX0VSUk9SX1VEUF9UT1RBTF9FUlJPUiAgICAgICAgICAoMHg1VUwgPDwgMTIpCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX1BLVF9FUlJPUl9MNF9CQURfSERSX0xFTiAgICAgICAgICAgKDB4NlVMIDw8IDEyKQojZGVmaW5lIFJYX1BLVF9DTVBMX0VSUk9SU19QS1RfRVJST1JfTDRfQkFEX0hEUl9MRU5fVE9PX1NNQUxMICgweDdVTCA8PCAxMikKI2RlZmluZSBSWF9QS1RfQ01QTF9FUlJPUlNfUEtUX0VSUk9SX0w0X0JBRF9PUFRfTEVOICAgICAgICAgICAoMHg4VUwgPDwgMTIpCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX1BLVF9FUlJPUl9MQVNUIFwKCVJYX1BLVF9DTVBMX0VSUk9SU19QS1RfRVJST1JfTDRfQkFEX09QVF9MRU4KCXUxNiBjZmFfY29kZTsKCXUzMiByZW9yZGVyOwojZGVmaW5lIFJYX1BLVF9DTVBMX1JFT1JERVJfTUFTSyAweGZmZmZmZlVMCiNkZWZpbmUgUlhfUEtUX0NNUExfUkVPUkRFUl9TRlQgIDAKfTsKCnN0cnVjdCByeF9wcm9kX3BrdF9iZCB7Cgl1MTYgIGZsYWdzX3R5cGU7CiNkZWZpbmUgUlhfUFJPRF9QS1RfQkRfVFlQRV9NQVNLICAgICAgICAgIDB4M2ZVTAojZGVmaW5lIFJYX1BST0RfUEtUX0JEX1RZUEVfU0ZUICAgICAgICAgICAwCiNkZWZpbmUgUlhfUFJPRF9QS1RfQkRfVFlQRV9SWF9QUk9EX1BLVCAgIDB4NFVMCiNkZWZpbmUgUlhfUFJPRF9QS1RfQkRfVFlQRV9MQVNUICAgICAgICAgIFJYX1BST0RfUEtUX0JEX1RZUEVfUlhfUFJPRF9QS1QKI2RlZmluZSBSWF9QUk9EX1BLVF9CRF9GTEFHU19NQVNLICAgICAgICAgMHhmZmMwVUwKI2RlZmluZSBSWF9QUk9EX1BLVF9CRF9GTEFHU19TRlQgICAgICAgICAgNgojZGVmaW5lIFJYX1BST0RfUEtUX0JEX0ZMQUdTX1NPUF9QQUQgICAgICAweDQwVUwKI2RlZmluZSBSWF9QUk9EX1BLVF9CRF9GTEFHU19FT1BfUEFEICAgICAgMHg4MFVMCiNkZWZpbmUgUlhfUFJPRF9QS1RfQkRfRkxBR1NfQlVGRkVSU19NQVNLIDB4MzAwVUwKI2RlZmluZSBSWF9QUk9EX1BLVF9CRF9GTEFHU19CVUZGRVJTX1NGVCAgOAoJdTE2ICBsZW47Cgl1MzIgIG9wYXF1ZTsKCXVuaW9uIGRtYV9hZGRyNjRfdCBkbWE7Cn07CgpzdHJ1Y3QgcnhfaW5mbyB7Cgl2b2lkICAgICAgICAgICAgICAqYmRfdmlydDsKCXN0cnVjdCBpb19idWZmZXIgICppb2JbTlVNX1JYX0JVRkZFUlNdOwoJdTE2ICAgICAgICAgICAgICAgaW9iX2NudDsKCXUxNiAgICAgICAgICAgICAgIGJ1Zl9jbnQ7ICAvKiBUb3RhbCBSeCBidWZmZXIgZGVzY3JpcHRvcnMuICovCgl1MTYgICAgICAgICAgICAgICByaW5nX2NudDsKCXUxNiAgICAgICAgICAgICAgIGNvbnNfaWQ7ICAvKiBMYXN0IHByb2Nlc3NlZCBjb25zdW1lciBpbmRleC4gKi8KLyogUmVjZWl2ZSBzdGF0aXN0aWNzLiAqLwoJdTMyICAgICAgICAgICAgICAgY250OwoJdTMyICAgICAgICAgICAgICAgZ29vZDsKCXUzMiAgICAgICAgICAgICAgIGRyb3BfZXJyOwoJdTMyICAgICAgICAgICAgICAgZHJvcF9sYjsKCXUzMiAgICAgICAgICAgICAgIGRyb3BfdmxhbjsKfTsKCiNkZWZpbmUgVkFMSURfRFJJVkVSX1JFRyAgICAgICAgICAweDAwMDEKI2RlZmluZSBWQUxJRF9TVEFUX0NUWCAgICAgICAgICAgIDB4MDAwMgojZGVmaW5lIFZBTElEX1JJTkdfQ1EgICAgICAgICAgICAgMHgwMDA0CiNkZWZpbmUgVkFMSURfUklOR19UWCAgICAgICAgICAgICAweDAwMDgKI2RlZmluZSBWQUxJRF9SSU5HX1JYICAgICAgICAgICAgIDB4MDAxMAojZGVmaW5lIFZBTElEX1JJTkdfR1JQICAgICAgICAgICAgMHgwMDIwCiNkZWZpbmUgVkFMSURfVk5JQ19JRCAgICAgICAgICAgICAweDAwNDAKI2RlZmluZSBWQUxJRF9SWF9JT0IgICAgICAgICAgICAgIDB4MDA4MAojZGVmaW5lIFZBTElEX0wyX0ZJTFRFUiAgICAgICAgICAgMHgwMTAwCiNkZWZpbmUgVkFMSURfUklOR19OUSAgICAgICAgICAgICAweDAyMDAKCnN0cnVjdCBibnh0IHsKLyogYmVnaW4gImdlbmVyYWwsIGZyZXF1ZW50bHktdXNlZCBtZW1iZXJzIiBjYWNoZWxpbmUgc2VjdGlvbiAqLwovKiBJZiB0aGUgSVJRIGhhbmRsZXIgKHdoaWNoIHJ1bnMgbG9ja2xlc3MpIG5lZWRzIHRvIGJlCiAqIHF1aWVzY2VkLCB0aGUgZm9sbG93aW5nIGJpdG1hc2sgc3RhdGUgaXMgdXNlZC4gVGhlCiAqIFNZTkMgZmxhZyBpcyBzZXQgYnkgbm9uLUlSUSBjb250ZXh0IGNvZGUgdG8gaW5pdGlhdGUKICogdGhlIHF1aWVzY2VuY2UuCiAqCiAqIFdoZW4gdGhlIElSUSBoYW5kbGVyIG5vdGljZXMgdGhhdCBTWU5DIGlzIHNldCwgaXQKICogZGlzYWJsZXMgaW50ZXJydXB0cyBhbmQgcmV0dXJucy4KICoKICogV2hlbiBhbGwgb3V0c3RhbmRpbmcgSVJRIGhhbmRsZXJzIGhhdmUgcmV0dXJuZWQgYWZ0ZXIKICogdGhlIFNZTkMgZmxhZyBoYXMgYmVlbiBzZXQsIHRoZSBzZXR0ZXIgY2FuIGJlIGFzc3VyZWQKICogdGhhdCBpbnRlcnJ1cHRzIHdpbGwgbm8gbG9uZ2VyIGdldCBydW4uCiAqCiAqIEluIHRoaXMgd2F5IGFsbCBTTVAgZHJpdmVyIGxvY2tzIGFyZSBuZXZlciBhY3F1aXJlZAogKiBpbiBodyBJUlEgY29udGV4dCwgb25seSBzdyBJUlEgY29udGV4dCBvciBsb3dlci4KICovCgl1bnNpZ25lZCBpbnQgICAgICAgICAgICAgIGlycV9zeW5jOwoJc3RydWN0IG5ldF9kZXZpY2UgICAgICAgICAqZGV2OwoJc3RydWN0IHBjaV9kZXZpY2UgICAgICAgICAqcGRldjsKCXZvaWQgICAgICAgICAgICAgICAgICAgICAgKmh3cm1fYWRkcl9yZXE7Cgl2b2lkICAgICAgICAgICAgICAgICAgICAgICpod3JtX2FkZHJfcmVzcDsKCXZvaWQgICAgICAgICAgICAgICAgICAgICAgKmh3cm1fYWRkcl9kbWE7CglkbWFfYWRkcl90ICAgICAgICAgICAgICAgIHJlcV9hZGRyX21hcHBpbmc7CglkbWFfYWRkcl90ICAgICAgICAgICAgICAgIHJlc3BfYWRkcl9tYXBwaW5nOwoJZG1hX2FkZHJfdCAgICAgICAgICAgICAgICBkbWFfYWRkcl9tYXBwaW5nOwoJc3RydWN0IHR4X2luZm8gICAgICAgICAgICB0eDsgLyogVHggaW5mby4gKi8KCXN0cnVjdCByeF9pbmZvICAgICAgICAgICAgcng7IC8qIFJ4IGluZm8uICovCglzdHJ1Y3QgY21wX2luZm8gICAgICAgICAgIGNxOyAvKiBjb21wbGV0aW9uIGluZm8uICovCglzdHJ1Y3QgbnFfaW5mbyAgICAgICAgICAgIG5xOyAvKiBjb21wbGV0aW9uIGluZm8uICovCgl1MTYgICAgICAgICAgICAgICAgICAgICAgIG5xX3JpbmdfaWQ7Cgl1OCAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXVlX2lkOwoJdTggICAgICAgICAgICAgICAgICAgICAgICB0aG9yOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBsYXN0X3Jlc3BfY29kZTsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgc2VxX2lkOwoJdTMyICAgICAgICAgICAgICAgICAgICAgICBmbGFnX2h3cm07Cgl1MzIgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzOwovKiBQQ0kgaW5mby4gKi8KCXUxNiAgICAgICAgICAgICAgICAgICAgICAgc3Vic3lzdGVtX3ZlbmRvcjsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgc3Vic3lzdGVtX2RldmljZTsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgY21kX3JlZzsKCXU4ICAgICAgICAgICAgICAgICAgICAgICAgcGZfbnVtOyAgLyogYWJzb2x1dGUgUEYgbnVtYmVyICovCgl1OCAgICAgICAgICAgICAgICAgICAgICAgIHZmOwoJdm9pZCAgICAgICAgICAgICAgICAgICAgICAqYmFyMDsKCXZvaWQgICAgICAgICAgICAgICAgICAgICAgKmJhcjE7Cgl2b2lkICAgICAgICAgICAgICAgICAgICAgICpiYXIyOwovKiBEZXZpY2UgaW5mby4gKi8KCXUxNiAgICAgICAgICAgICAgICAgICAgICAgY2hpcF9udW07Ci8qIGNoaXAgbnVtOjE2LTMxLCByZXY6MTItMTUsIG1ldGFsOjQtMTEsIGJvbmRfaWQ6MC0zICovCgl1MzIgICAgICAgICAgICAgICAgICAgICAgIGNoaXBfaWQ7Cgl1MzIgICAgICAgICAgICAgICAgICAgICAgIGh3cm1fY21kX3RpbWVvdXQ7Cgl1MTYgICAgICAgICAgICAgICAgICAgICAgIGh3cm1fc3BlY19jb2RlOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBod3JtX21heF9yZXFfbGVuOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBod3JtX21heF9leHRfcmVxX2xlbjsKCXU4ICAgICAgICAgICAgICAgICAgICAgICAgbWFjX2FkZHJbRVRIX0FMRU5dOyAvKiBIVyBNQUMgYWRkcmVzcyAqLwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBmaWQ7Cgl1OCAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRfaWR4OwoJdTggICAgICAgICAgICAgICAgICAgICAgICBvcmRpbmFsX3ZhbHVlOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBtdHU7Cgl1MTYgICAgICAgICAgICAgICAgICAgICAgIHJpbmdfZ3JwX2lkOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBjcV9yaW5nX2lkOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICB0eF9yaW5nX2lkOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICByeF9yaW5nX2lkOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2xpbmtfc3BlZWQ7Cgl1MTYgICAgICAgICAgICAgICAgICAgICAgIGxpbmtfc3RhdHVzOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICB3YWl0X2xpbmtfdGltZW91dDsKCXU2NCAgICAgICAgICAgICAgICAgICAgICAgbDJfZmlsdGVyX2lkOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICB2bmljX2lkOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBzdGF0X2N0eF9pZDsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgdmxhbl9pZDsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgdmxhbl90eDsKCXUzMiAgICAgICAgICAgICAgICAgICAgICAgbWJhX2NmZzI7Cgl1MzIgICAgICAgICAgICAgICAgICAgICAgIG1lZGl1bTsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydF9zcGVlZHM7Cgl1MzIgICAgICAgICAgICAgICAgICAgICAgIGxpbmtfc2V0OwoJdTggICAgICAgICAgICAgICAgICAgICAgICBtZWRpYV9kZXRlY3Q7Cgl1OCAgICAgICAgICAgICAgICAgICAgICAgIHJzdmQ7Cgl1MTYgICAgICAgICAgICAgICAgICAgICAgIG1heF92ZnM7Cgl1MTYgICAgICAgICAgICAgICAgICAgICAgIHZmX3Jlc19zdHJhdGVneTsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgbWluX3ZuaWNzOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBtYXhfdm5pY3M7Cgl1MTYgICAgICAgICAgICAgICAgICAgICAgIG1heF9tc2l4OwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBtaW5faHdfcmluZ19ncnBzOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBtYXhfaHdfcmluZ19ncnBzOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBtaW5fdHhfcmluZ3M7Cgl1MTYgICAgICAgICAgICAgICAgICAgICAgIG1heF90eF9yaW5nczsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgbWluX3J4X3JpbmdzOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBtYXhfcnhfcmluZ3M7Cgl1MTYgICAgICAgICAgICAgICAgICAgICAgIG1pbl9jcF9yaW5nczsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgbWF4X2NwX3JpbmdzOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBtaW5fcnNzY29zX2N0eHM7Cgl1MTYgICAgICAgICAgICAgICAgICAgICAgIG1heF9yc3Njb3NfY3R4czsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgbWluX2wyX2N0eHM7Cgl1MTYgICAgICAgICAgICAgICAgICAgICAgIG1heF9sMl9jdHhzOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBtaW5fc3RhdF9jdHhzOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBtYXhfc3RhdF9jdHhzOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBudW1fY21wbF9yaW5nczsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgbnVtX3R4X3JpbmdzOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBudW1fcnhfcmluZ3M7Cgl1MTYgICAgICAgICAgICAgICAgICAgICAgIG51bV9zdGF0X2N0eHM7Cgl1MTYgICAgICAgICAgICAgICAgICAgICAgIG51bV9od19yaW5nX2dycHM7Cn07CgovKiBkZWZpbmVzIHJlcXVpcmVkIHRvIHJzb2x2ZSBjaGVja3BhdGNoIGVycm9ycyAvIHdhcm5pbmdzICovCiNkZWZpbmUgdGVzdF9pZiAgICAgICAgICAgICAgIGlmCiNkZWZpbmUgd3JpdGUzMiAgICAgICAgICAgICAgIHdyaXRlbAojZGVmaW5lIHdyaXRlNjQgICAgICAgICAgICAgICB3cml0ZXEKI2RlZmluZSBwY2lfcmVhZF9ieXRlICAgICAgICAgcGNpX3JlYWRfY29uZmlnX2J5dGUKI2RlZmluZSBwY2lfcmVhZF93b3JkMTYgICAgICAgcGNpX3JlYWRfY29uZmlnX3dvcmQKI2RlZmluZSBwY2lfd3JpdGVfd29yZCAgICAgICAgcGNpX3dyaXRlX2NvbmZpZ193b3JkCiNkZWZpbmUgU0hPUlRfQ01EX1NVUFBPUlRFRCAgIFZFUl9HRVRfUkVTUF9ERVZfQ0FQU19DRkdfU0hPUlRfQ01EX1NVUFBPUlRFRAojZGVmaW5lIFNIT1JUX0NNRF9SRVFVSVJFRCAgICBWRVJfR0VUX1JFU1BfREVWX0NBUFNfQ0ZHX1NIT1JUX0NNRF9SRVFVSVJFRAojZGVmaW5lIENRX0RPT1JCRUxMX0tFWV9NQVNLKGEpIChcCglDTVBMX0RPT1JCRUxMX0tFWV9DTVBMIHwgXAoJQ01QTF9ET09SQkVMTF9JRFhfVkFMSUQgfCBcCglDTVBMX0RPT1JCRUxMX01BU0sgfCBcCgkodTMyKShhKSkKI2RlZmluZSBDUV9ET09SQkVMTF9LRVlfSURYKGEpIChcCglDTVBMX0RPT1JCRUxMX0tFWV9DTVBMIHwgXAoJQ01QTF9ET09SQkVMTF9JRFhfVkFMSUQgfCBcCgkodTMyKShhKSkKI2RlZmluZSBUWF9CRF9GTEFHUyAoXAoJVFhfQkRfU0hPUlRfVFlQRV9UWF9CRF9TSE9SVCB8XAoJVFhfQkRfU0hPUlRfRkxBR1NfQ09BTF9OT1cgICB8XAoJVFhfQkRfU0hPUlRfRkxBR1NfUEFDS0VUX0VORCB8XAoJKDEgPDwgVFhfQkRfU0hPUlRfRkxBR1NfQkRfQ05UX1NGVCkpCiNkZWZpbmUgUE9SVF9QSFlfRkxBR1MgKFwKCUJOWFRfRkxBR19OUEFSX01PREUgfCBcCglCTlhUX0ZMQUdfTVVMVElfSE9TVCkKI2RlZmluZSBSSU5HX0ZSRUUoYnAsIHJpZCwgZmxhZykgYm54dF9od3JtX3JpbmdfZnJlZShicCwgcmlkLCBmbGFnKQojZGVmaW5lIFNFVF9MSU5LKHAsIG0sIHMpICgocCAmIChtID4+IHMpKSA8PCBzKQojZGVmaW5lIFNFVF9NQkEocCwgbSwgcykgICgocCAmIChtID4+IHMpKSA8PCBzKQojZGVmaW5lIFNQRUVEX0RSVl9NQVNLICAgIExJTktfU1BFRURfRFJWX01BU0sKI2RlZmluZSBTUEVFRF9EUlZfU0hJRlQgICBMSU5LX1NQRUVEX0RSVl9TSElGVAojZGVmaW5lIFNQRUVEX0ZXX01BU0sgICAgIExJTktfU1BFRURfRldfTUFTSwojZGVmaW5lIFNQRUVEX0ZXX1NISUZUICAgIExJTktfU1BFRURfRldfU0hJRlQKI2RlZmluZSBEM19TUEVFRF9GV19NQVNLICBEM19MSU5LX1NQRUVEX0ZXX01BU0sKI2RlZmluZSBEM19TUEVFRF9GV19TSElGVCBEM19MSU5LX1NQRUVEX0ZXX1NISUZUCiNkZWZpbmUgTUVESUFfQVVUT19ERVRFQ1RfTUFTSyAgUE9SVF9DRkdfTElOS19TRVRUSU5HU19NRURJQV9BVVRPX0RFVEVDVF9NQVNLCiNkZWZpbmUgTUVESUFfQVVUT19ERVRFQ1RfU0hJRlQgUE9SVF9DRkdfTElOS19TRVRUSU5HU19NRURJQV9BVVRPX0RFVEVDVF9TSElGVAojZGVmaW5lIFZMQU5fTUFTSyAgICAgICAgRlVOQ19DRkdfUFJFX0JPT1RfTUJBX1ZMQU5fTUFTSwojZGVmaW5lIFZMQU5fU0hJRlQgICAgICAgRlVOQ19DRkdfUFJFX0JPT1RfTUJBX1ZMQU5fU0hJRlQKI2RlZmluZSBWTEFOX1ZBTFVFX01BU0sgIEZVTkNfQ0ZHX1BSRV9CT09UX01CQV9WTEFOX1ZBTFVFX01BU0sKI2RlZmluZSBWTEFOX1ZBTFVFX1NISUZUIEZVTkNfQ0ZHX1BSRV9CT09UX01CQV9WTEFOX1ZBTFVFX1NISUZUCiNkZWZpbmUgVkZfQ0ZHX0VOQUJMRV9GTEFHUyAoXAoJRlVOQ19WRl9DRkdfUkVRX0VOQUJMRVNfTVRVIHwgXAoJRlVOQ19WRl9DRkdfUkVRX0VOQUJMRVNfR1VFU1RfVkxBTiB8IFwKCUZVTkNfVkZfQ0ZHX1JFUV9FTkFCTEVTX0FTWU5DX0VWRU5UX0NSIHwgXAoJRlVOQ19WRl9DRkdfUkVRX0VOQUJMRVNfREZMVF9NQUNfQUREUikKCi8qIERldmljZSBJRCdzICovCiNkZWZpbmUgUENJX1ZJRF9CQ09NICAgICAgICAgMHgxNGU0CiNkZWZpbmUgQ0hJUF9OVU1fNTc1MDAgICAgICAgMHgxNzUwCgojZGVmaW5lIERJRF81NzUwOCAgICAgICAgICAgIDB4MTc1MAojZGVmaW5lIERJRF81NzUwOF9NRiAgICAgICAgIDB4MTgwMgojZGVmaW5lIERJRF81NzUwOF9NRl9SRE1BICAgIDB4MTgwNQojZGVmaW5lIERJRF81NzUwNCAgICAgICAgICAgIDB4MTc1MQojZGVmaW5lIERJRF81NzUwNF9NRiAgICAgICAgIDB4MTgwMQojZGVmaW5lIERJRF81NzUwNF9NRl9SRE1BICAgIDB4MTgwNAojZGVmaW5lIERJRF81NzUwMiAgICAgICAgICAgIDB4MTc1MgojZGVmaW5lIERJRF81NzUwMl9NRiAgICAgICAgIDB4MTgwMAojZGVmaW5lIERJRF81NzUwMl9NRl9SRE1BICAgIDB4MTgwMwojZGVmaW5lIERJRF81NzUwOF9WRiAgICAgICAgIDB4MTgwNgojZGVmaW5lIERJRF81NzUwOF9WRl9SRE1BICAgIDB4MTgwNwojZGVmaW5lIERJRF81NzUwOF9WRl9IViAgICAgIDB4MTgwNgojZGVmaW5lIERJRF81NzUwOF9WRl9SRE1BX0hWIDB4MTgwNwovKiBTdHJhdHVzIERldmljZSBJRHMgKi8KI2RlZmluZSBESURfNTczMjBfMSAgICAgICAgIDB4MTZGMAojZGVmaW5lIERJRF81NzMyMF8yICAgICAgICAgMHgxNkYxCiNkZWZpbmUgRElEXzU3NDU0X01IQiAgICAgICAweDE2MDQKI2RlZmluZSBESURfNTc0NTRfTUhCX1JETUEgIDB4MTYwNQojZGVmaW5lIERJRF81NzQ1NF9WRl9SRE1BICAgMHgxNjA2CiNkZWZpbmUgRElEXzU3NDU0X1ZGICAgICAgICAweDE2MDkKI2RlZmluZSBESURfNTc0NTQgICAgICAgICAgIDB4MTYxNAojZGVmaW5lIERJRF81ODgwMiAgICAgICAgICAgMHhEODAyCiNkZWZpbmUgRElEXzU4ODA0ICAgICAgICAgICAweEQ4MDQKCiNkZWZpbmUgRElEXzU3NDE3X1JETUFfTUYgICAweDE2QzAKI2RlZmluZSBESURfNTc0MTdfVkZfUkRNQSAgIDB4MTZjMQojZGVmaW5lIERJRF81NzMwMSAgICAgICAgICAgMHgxNkM4CiNkZWZpbmUgRElEXzU3MzAyICAgICAgICAgICAweDE2QzkKI2RlZmluZSBESURfNTczMDQgICAgICAgICAgIDB4MTZDQQojZGVmaW5lIERJRF81NzQxN19NRiAgICAgICAgMHgxNkNDCiNkZWZpbmUgRElEXzU4NzAwICAgICAgICAgICAweDE2Q0QKI2RlZmluZSBESURfNTczMTEgICAgICAgICAgIDB4MTZDRQojZGVmaW5lIERJRF81NzMxMiAgICAgICAgICAgMHgxNkNGCiNkZWZpbmUgRElEXzU3NDAyICAgICAgICAgICAweDE2RDAKI2RlZmluZSBESURfNTc0MDQgICAgICAgICAgIDB4MTZEMQojZGVmaW5lIERJRF81NzQwNiAgICAgICAgICAgMHgxNkQyCiNkZWZpbmUgRElEXzU3NDAyX01GICAgICAgICAweDE2RDQKI2RlZmluZSBESURfNTc0MDdDICAgICAgICAgIDB4MTZENQojZGVmaW5lIERJRF81NzQxMiAgICAgICAgICAgMHgxNkQ2CiNkZWZpbmUgRElEXzU3NDE0ICAgICAgICAgICAweDE2RDcKI2RlZmluZSBESURfNTc0MTZDICAgICAgICAgIDB4MTZEOAojZGVmaW5lIERJRF81NzQxN0MgICAgICAgICAgMHgxNkQ5CiNkZWZpbmUgRElEXzU3NDAyTCAgICAgICAgICAweDE2REEKI2RlZmluZSBESURfNTc0MDRMICAgICAgICAgIDB4MTZEQgojZGVmaW5lIERJRF81NzQxN19WRiAgICAgICAgMHgxNmRjCiNkZWZpbmUgRElEXzU3NDEyX01GICAgICAgICAweDE2REUKI2RlZmluZSBESURfNTczMTQgICAgICAgICAgIDB4MTZERgojZGVmaW5lIERJRF81NzMxN0MgICAgICAgICAgMHgxNkUwCiNkZWZpbmUgRElEXzU3NDE3RiAgICAgICAgICAweDE2RTIKI2RlZmluZSBESURfNTc0MTZGICAgICAgICAgIDB4MTZFMwojZGVmaW5lIERJRF81NzMxN0YgICAgICAgICAgMHgxNkU0CiNkZWZpbmUgRElEXzU3NDA0X01GICAgICAgICAweDE2RTcKI2RlZmluZSBESURfNTc0MDZfTUYgICAgICAgIDB4MTZFOAojZGVmaW5lIERJRF81NzQwN0YgICAgICAgICAgMHgxNkU5CiNkZWZpbmUgRElEXzU3NDA3X01GICAgICAgICAweDE2RUEKI2RlZmluZSBESURfNTc0MTJfUkRNQV9NRiAgIDB4MTZFQgojZGVmaW5lIERJRF81NzQxNF9NRiAgICAgICAgMHgxNkVDCiNkZWZpbmUgRElEXzU3NDE0X1JETUFfTUYgICAweDE2RUQKI2RlZmluZSBESURfNTc0MTZfTUYgICAgICAgIDB4MTZFRQojZGVmaW5lIERJRF81NzQxNl9SRE1BX01GICAgMHgxNkVGCgpzdGF0aWMgc3RydWN0IHBjaV9kZXZpY2VfaWQgYm54dF9uaWNzW10gPSB7CglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3NDE3X1JETUFfTUYsICIxNGU0LTE2QzAiLCAiMTRlNC0xNkMwIiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3NDE3X1ZGX1JETUEsICIxNGU0LTE2QzEiLCAiMTRlNC0xNkMxIiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3MzAxLCAgICAgICAgICIxNGU0LTE2QzgiLCAiMTRlNC0xNkM4IiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3MzAyLCAgICAgICAgICIxNGU0LTE2QzkiLCAiMTRlNC0xNkM5IiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3MzA0LCAgICAgICAgICIxNGU0LTE2Q0EiLCAiMTRlNC0xNkNBIiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3NDE3X01GLCAgICAgICIxNGU0LTE2Q0MiLCAiMTRlNC0xNkNDIiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU4NzAwLCAgICAgICAgICIxNGU0LTE2Q0QiLCAiMTRlNC0xNkNEIiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3MzExLCAgICAgICAgICIxNGU0LTE2Q0UiLCAiMTRlNC0xNkNFIiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3MzEyLCAgICAgICAgICIxNGU0LTE2Q0YiLCAiMTRlNC0xNkNGIiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3NDAyLCAgICAgICAgICIxNGU0LTE2RDAiLCAiMTRlNC0xNkQwIiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3NDA0LCAgICAgICAgICIxNGU0LTE2RDEiLCAiMTRlNC0xNkQxIiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3NDA2LCAgICAgICAgICIxNGU0LTE2RDIiLCAiMTRlNC0xNkQyIiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3NDAyX01GLCAgICAgICIxNGU0LTE2RDQiLCAiMTRlNC0xNkQ0IiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3NDA3QywgICAgICAgICIxNGU0LTE2RDUiLCAiMTRlNC0xNkQ1IiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3NDEyLCAgICAgICAgICIxNGU0LTE2RDYiLCAiMTRlNC0xNkQ2IiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3NDE0LCAgICAgICAgICIxNGU0LTE2RDciLCAiMTRlNC0xNkQ3IiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3NDE2QywgICAgICAgICIxNGU0LTE2RDgiLCAiMTRlNC0xNkQ4IiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3NDE3QywgICAgICAgICIxNGU0LTE2RDkiLCAiMTRlNC0xNkQ5IiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3NDAyTCwgICAgICAgICIxNGU0LTE2REEiLCAiMTRlNC0xNkRBIiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3NDA0TCwgICAgICAgICIxNGU0LTE2REIiLCAiMTRlNC0xNkRCIiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3NDE3X1ZGLCAgICAgICIxNGU0LTE2REMiLCAiMTRlNC0xNkRDIiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3NDEyX01GLCAgICAgICIxNGU0LTE2REUiLCAiMTRlNC0xNkRFIiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3MzE0LCAgICAgICAgICIxNGU0LTE2REYiLCAiMTRlNC0xNkRGIiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3MzE3QywgICAgICAgICIxNGU0LTE2RTAiLCAiMTRlNC0xNkUwIiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3NDE3RiwgICAgICAgICIxNGU0LTE2RTIiLCAiMTRlNC0xNkUyIiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3NDE2RiwgICAgICAgICIxNGU0LTE2RTMiLCAiMTRlNC0xNkUzIiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3MzE3RiwgICAgICAgICIxNGU0LTE2RTQiLCAiMTRlNC0xNkU0IiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3NDA0X01GLCAgICAgICIxNGU0LTE2RTciLCAiMTRlNC0xNkU3IiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3NDA2X01GLCAgICAgICIxNGU0LTE2RTgiLCAiMTRlNC0xNkU4IiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3NDA3RiwgICAgICAgICIxNGU0LTE2RTkiLCAiMTRlNC0xNkU5IiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3NDA3X01GLCAgICAgICIxNGU0LTE2RUEiLCAiMTRlNC0xNkVBIiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3NDEyX1JETUFfTUYsICIxNGU0LTE2RUIiLCAiMTRlNC0xNkVCIiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3NDE0X01GLCAgICAgICIxNGU0LTE2RUMiLCAiMTRlNC0xNkVDIiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3NDE0X1JETUFfTUYsICIxNGU0LTE2RUQiLCAiMTRlNC0xNkVEIiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3NDE2X01GLCAgICAgICIxNGU0LTE2RUUiLCAiMTRlNC0xNkVFIiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3NDE2X1JETUFfTUYsICIxNGU0LTE2RUYiLCAiMTRlNC0xNkVGIiwgMCksCgoJUENJX1JPTShQQ0lfVklEX0JDT00sIERJRF81NzMyMF8xLCAgICAgICAgIjE0ZTQtMTZGMCIsICIxNGU0LTE2RjAiLCAwKSwKCVBDSV9ST00oUENJX1ZJRF9CQ09NLCBESURfNTczMjBfMiwgICAgICAgICIxNGU0LTE2RjEiLCAiMTRlNC0xNkYxIiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3NDU0X01IQiwgICAgICAiMTRlNC0xNjA0IiwgIjE0ZTQtMTYwNCIsIDApLAoJUENJX1JPTShQQ0lfVklEX0JDT00sIERJRF81NzQ1NF9NSEJfUkRNQSwgIjE0ZTQtMTYwNSIsICIxNGU0LTE2MDUiLCAwKSwKCVBDSV9ST00oUENJX1ZJRF9CQ09NLCBESURfNTc0NTRfVkZfUkRNQSwgICIxNGU0LTE2MDYiLCAiMTRlNC0xNjA2IiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3NDU0X1ZGLCAgICAgICAiMTRlNC0xNjA5IiwgIjE0ZTQtMTYwOSIsIDApLAoJUENJX1JPTShQQ0lfVklEX0JDT00sIERJRF81NzQ1NCwgICAgICAgICAgIjE0ZTQtMTYxNCIsICIxNGU0LTE2MTQiLCAwKSwKCVBDSV9ST00oUENJX1ZJRF9CQ09NLCBESURfNTg4MDIsICAgICAgICAgICIxNGU0LUQ4MDIiLCAiMTRlNC1EODAyIiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU4ODA0LCAgICAgICAgICAiMTRlNC1EODA0IiwgIjE0ZTQtRDgwNCIsIDApLAoKCVBDSV9ST00oUENJX1ZJRF9CQ09NLCBESURfNTc1MDgsICAgICAgICAgICIxNGU0LTE3NTAiLCAiMTRlNC0xNzUwIiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3NTA4X01GLCAgICAgICAiMTRlNC0xODAyIiwgIjE0ZTQtMTgwMiIsIDApLAoJUENJX1JPTShQQ0lfVklEX0JDT00sIERJRF81NzUwOF9NRl9SRE1BLCAgIjE0ZTQtMTgwNSIsICIxNGU0LTE4MDUiLCAwKSwKCVBDSV9ST00oUENJX1ZJRF9CQ09NLCBESURfNTc1MDQsICAgICAgICAgICIxNGU0LTE3NTEiLCAiMTRlNC0xNzUxIiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3NTA0X01GLCAgICAgICAiMTRlNC0xODAxIiwgIjE0ZTQtMTgwMSIsIDApLAoJUENJX1JPTShQQ0lfVklEX0JDT00sIERJRF81NzUwNF9NRl9SRE1BLCAgIjE0ZTQtMTgwNCIsICIxNGU0LTE4MDQiLCAwKSwKCVBDSV9ST00oUENJX1ZJRF9CQ09NLCBESURfNTc1MDIsICAgICAgICAgICIxNGU0LTE3NTIiLCAiMTRlNC0xNzUyIiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3NTAyX01GLCAgICAgICAiMTRlNC0xODAwIiwgIjE0ZTQtMTgwMCIsIDApLAoJUENJX1JPTShQQ0lfVklEX0JDT00sIERJRF81NzUwMl9NRl9SRE1BLCAgIjE0ZTQtMTgwMyIsICIxNGU0LTE4MDMiLCAwKSwKCVBDSV9ST00oUENJX1ZJRF9CQ09NLCBESURfNTc1MDhfVkYsICAgICAgICIxNGU0LTE4MDYiLCAiMTRlNC0xODA2IiwgMCksCglQQ0lfUk9NKFBDSV9WSURfQkNPTSwgRElEXzU3NTA4X1ZGX1JETUEsICAiMTRlNC0xODA3IiwgIjE0ZTQtMTgwNyIsIDApLAoJUENJX1JPTShQQ0lfVklEX0JDT00sIERJRF81NzUwOF9WRl9IViwgICAgIjE0ZTQtMTgwOCIsICIxNGU0LTE4MDgiLCAwKSwKCVBDSV9ST00oUENJX1ZJRF9CQ09NLAoJCURJRF81NzUwOF9WRl9SRE1BX0hWLCAiMTRlNC0xODA5IiwgIjE0ZTQtMTgwOSIsIDApLAp9OwoKc3RhdGljIHUxNiBibnh0X3ZmX25pY3NbXSA9IHsKCURJRF81NzUwOF9WRiwKCURJRF81NzUwOF9WRl9SRE1BLAoJRElEXzU3NTA4X1ZGX0hWLAoJRElEXzU3NTA4X1ZGX1JETUFfSFYsCglESURfNTc0MTdfVkYsCglESURfNTc0MTdfVkZfUkRNQSwKfTsK