LyoKICogKEMpIENvcHlyaWdodCAyMDAyCiAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCLCBkYW5pZWxAb21pY3Jvbi5zZS4KICoKICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKICogcHJvamVjdC4KICoKICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwogKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgogKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4JIFNlZSB0aGUKICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKICogTUEgMDIxMTEtMTMwNyBVU0EKICovCgovKgogKiBib2FyZC9jb25maWcuaCAtIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYm9hcmQgc3BlY2lmaWMKICovCgojaWZuZGVmIF9fQ09ORklHX0gKI2RlZmluZSBfX0NPTkZJR19ICgovKgogKiBIaWdoIExldmVsIENvbmZpZ3VyYXRpb24gT3B0aW9ucwogKiAoZWFzeSB0byBjaGFuZ2UpCiAqLwoKI2RlZmluZSBDT05GSUdfWDg2CQkxCS8qIFRoaXMgaXMgYSBYODYgQ1BVCQkqLwojZGVmaW5lIENPTkZJR19TWVNfU0M1MjAJMQkvKiBJbmNsdWRlIHN1cHBvcnQgZm9yIEFNRCBTQzUyMCAqLwoKI2RlZmluZSBDT05GSUdfU1lTX1NEUkFNX1BSRUNIQVJHRV9ERUxBWSA2ICAgICAvKiA2VCAqLwojZGVmaW5lIENPTkZJR19TWVNfU0RSQU1fUkVGUkVTSF9SQVRFICAgIDc4ICAgIC8qIDcuOHVTIChjaG9pY2VzIGFyZSA3LjgsIDE1LjYsIDMxLjIgb3IgNjIuNXVTKSAqLwojZGVmaW5lIENPTkZJR19TWVNfU0RSQU1fUkFTX0NBU19ERUxBWSAgIDMgICAgIC8qIDNUICovCgovKiBkZWZpbmUgYXQgbW9zdCBvbmUgb2YgdGhlc2UgKi8KI3VuZGVmIENPTkZJR19TWVNfU0RSQU1fQ0FTX0xBVEVOQ1lfMlQKI2RlZmluZSBDT05GSUdfU1lTX1NEUkFNX0NBU19MQVRFTkNZXzNUCgojZGVmaW5lIENPTkZJR19TWVNfU0M1MjBfSElHSF9TUEVFRCAgICAwICAgICAgIC8qIDEwMCBvciAxMzNNSHogKi8KI3VuZGVmICBDT05GSUdfU1lTX1NDNTIwX1JFU0VUICAgICAgICAgICAgICAgICAvKiB1c2UgU0M1MjAgTU1DUidzIHRvIHJlc2V0IGNwdSAqLwojdW5kZWYgIENPTkZJR19TWVNfU0M1MjBfVElNRVIgICAgICAgICAgICAgICAgIC8qIHVzZSBTQzUyMCBzd3RpbWVycyAqLwojZGVmaW5lIENPTkZJR19TWVNfR0VORVJJQ19USU1FUiAgICAgICAxICAgICAgIC8qIHVzZSB0aGUgaTgyNTQgUElUIHRpbWVycyAqLwojdW5kZWYgIENPTkZJR19TWVNfVFNDX1RJTUVSICAgICAgICAgICAgICAgICAgIC8qIHVzZSB0aGUgUGVudGl1bSBUU0MgdGltZXJzICovCiNkZWZpbmUgQ09ORklHX1NZU19QQ0FUX0lOVEVSUlVQVFMKI2RlZmluZSBDT05GSUdfU1lTX05VTV9JUlFTCQkxNgoKI2RlZmluZSBDT05GSUdfU1lTX1NUQUNLX1NJWkUgICAgICAgICAgMHg4MDAwICAvKiBTaXplIG9mIGJvb3Rsb2FkZXIgc3RhY2sgKi8KCiNkZWZpbmUgQ09ORklHX1NIT1dfQk9PVF9QUk9HUkVTUyAxCiNkZWZpbmUgQ09ORklHX0xBU1RfU1RBR0VfSU5JVCAgICAxCgovKgogKiBTaXplIG9mIG1hbGxvYygpIHBvb2wKICovCiNkZWZpbmUgQ09ORklHX01BTExPQ19TSVpFCShDT05GSUdfRU5WX1NJWkUgKyAxMjgqMTAyNCkKCgojZGVmaW5lIENPTkZJR19CQVVEUkFURQkJOTYwMAoKCi8qCiAqIEJPT1RQIG9wdGlvbnMKICovCiNkZWZpbmUgQ09ORklHX0JPT1RQX0JPT1RGSUxFU0laRQojZGVmaW5lIENPTkZJR19CT09UUF9CT09UUEFUSAojZGVmaW5lIENPTkZJR19CT09UUF9HQVRFV0FZCiNkZWZpbmUgQ09ORklHX0JPT1RQX0hPU1ROQU1FCgoKLyoKICogQ29tbWFuZCBsaW5lIGNvbmZpZ3VyYXRpb24uCiAqLwojaW5jbHVkZSA8Y29uZmlnX2NtZF9kZWZhdWx0Lmg+CgojZGVmaW5lIENPTkZJR19DTURfUENJCiNkZWZpbmUgQ09ORklHX0NNRF9KRkZTMgojZGVmaW5lIENPTkZJR19DTURfSURFCiNkZWZpbmUgQ09ORklHX0NNRF9ORVQKI2RlZmluZSBDT05GSUdfQ01EX1BDTUNJQQojZGVmaW5lIENPTkZJR19DTURfRUVQUk9NCgoKI2RlZmluZSBDT05GSUdfQk9PVERFTEFZCTE1CiNkZWZpbmUgQ09ORklHX0JPT1RBUkdTCQkicm9vdD0vZGV2L210ZGJsb2NrMSBjb25zb2xlPXR0eVMwLDk2MDAgIiBcCgkJCQkJIm10ZHBhcnRzPXBoeXM6NzkzNmsocm9vdCksMjU2ayh1Ym9vdCkgIgojZGVmaW5lIENPTkZJR19CT09UQ09NTUFORAkic2V0ZW52IGJvb3RhcmdzIHJvb3Q9L2Rldi9uZnMgaXA9YXV0b2NvbmYgIiBcCgkJCQkJImNvbnNvbGU9dHR5UzAsOTYwMCAiIFwKCQkJCQkibXRkcGFydHM9cGh5czo3ODA4ayhyb290KSwxMjhrKGVudiksMjU2ayh1Ym9vdCk7IiBcCgkJCQkJImJvb3RwO2Jvb3RtIgoKI2lmIGRlZmluZWQoQ09ORklHX0NNRF9LR0RCKQojZGVmaW5lIENPTkZJR19LR0RCX0JBVURSQVRFCTExNTIwMAkJLyogc3BlZWQgdG8gcnVuIGtnZGIgc2VyaWFsIHBvcnQgKi8KI2RlZmluZSBDT05GSUdfS0dEQl9TRVJfSU5ERVgJMgkJLyogd2hpY2ggc2VyaWFsIHBvcnQgdG8gdXNlICovCiNlbmRpZgoKCi8qCiAqIE1pc2NlbGxhbmVvdXMgY29uZmlndXJhYmxlIG9wdGlvbnMKICovCiNkZWZpbmUJQ09ORklHX1NZU19MT05HSEVMUAkJCQkvKiB1bmRlZiB0byBzYXZlIG1lbW9yeQkJKi8KI2RlZmluZQlDT05GSUdfU1lTX1BST01QVAkJImJvb3QgPiAiCS8qIE1vbml0b3IgQ29tbWFuZCBQcm9tcHQJKi8KI2RlZmluZQlDT05GSUdfU1lTX0NCU0laRQkJMjU2CQkvKiBDb25zb2xlIEkvTyBCdWZmZXIgU2l6ZQkqLwojZGVmaW5lCUNPTkZJR19TWVNfUEJTSVpFIChDT05GSUdfU1lTX0NCU0laRStzaXplb2YoQ09ORklHX1NZU19QUk9NUFQpKzE2KSAvKiBQcmludCBCdWZmZXIgU2l6ZSAqLwojZGVmaW5lCUNPTkZJR19TWVNfTUFYQVJHUwkJMTYJCS8qIG1heCBudW1iZXIgb2YgY29tbWFuZCBhcmdzCSovCiNkZWZpbmUgQ09ORklHX1NZU19CQVJHU0laRQkJQ09ORklHX1NZU19DQlNJWkUJLyogQm9vdCBBcmd1bWVudCBCdWZmZXIgU2l6ZQkqLwoKI2RlZmluZSBDT05GSUdfU1lTX01FTVRFU1RfU1RBUlQJMHgwMDEwMDAwMAkvKiBtZW10ZXN0IHdvcmtzIG9uCSovCiNkZWZpbmUgQ09ORklHX1NZU19NRU1URVNUX0VORAkJMHgwMTAwMDAwMAkvKiAxIC4uLiAxNiBNQiBpbiBEUkFNCSovCgojdW5kZWYgIENPTkZJR19TWVNfQ0xLU19JTl9IWgkJLyogZXZlcnl0aGluZywgaW5jbCBib2FyZCBpbmZvLCBpbiBIeiAqLwoKI2RlZmluZQlDT05GSUdfU1lTX0xPQURfQUREUgkJMHgxMDAwMDAJLyogZGVmYXVsdCBsb2FkIGFkZHJlc3MJKi8KCiNkZWZpbmUJQ09ORklHX1NZU19IWgkJCTEwMjQJCS8qIGluY3JlbWVudGVyIGZyZXE6IDFrSHogKi8KCgkJCQkJCS8qIHZhbGlkIGJhdWRyYXRlcyAqLwojZGVmaW5lIENPTkZJR19TWVNfQkFVRFJBVEVfVEFCTEUJeyA5NjAwLCAxOTIwMCwgMzg0MDAsIDU3NjAwLCAxMTUyMDAgfQoKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogUGh5c2ljYWwgTWVtb3J5IE1hcAogKi8KI2RlZmluZSBDT05GSUdfTlJfRFJBTV9CQU5LUwk0CSAgIC8qIHdlIGhhdmUgNCBiYW5rcyBvZiBEUkFNICovCgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIEZMQVNIIGFuZCBlbnZpcm9ubWVudCBvcmdhbml6YXRpb24KICovCgoKI2RlZmluZSBDT05GSUdfU1lTX01BWF9GTEFTSF9CQU5LUwkxCS8qIG1heCBudW1iZXIgb2YgbWVtb3J5IGJhbmtzCQkqLwojZGVmaW5lIENPTkZJR19TWVNfTUFYX0ZMQVNIX1NFQ1QJNTEyCS8qIG1heCBudW1iZXIgb2Ygc2VjdG9ycyBvbiBvbmUgY2hpcAkqLwoKLyogdGltZW91dCB2YWx1ZXMgYXJlIGluIHRpY2tzICovCiNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9FUkFTRV9UT1VUCSgyKkNPTkZJR19TWVNfSFopIC8qIFRpbWVvdXQgZm9yIEZsYXNoIEVyYXNlICovCiNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9XUklURV9UT1VUCSgyKkNPTkZJR19TWVNfSFopIC8qIFRpbWVvdXQgZm9yIEZsYXNoIFdyaXRlICovCgoKI2RlZmluZSBDT05GSUdfU1BJX0VFUFJPTSAgICAgICAvKiBTUEkgRUVQUk9NcyBzdWNoIGFzIEFUMjUwMTAgb3IgQVQyNTY0MCAqLwojZGVmaW5lIENPTkZJR19NV19FRVBST00gICAgICAgIC8qIE1pY3JvV2lyZSBFRVBST01TIHN1Y2ggYXMgQVQ5M0xDNDYgKi8KI2RlZmluZSBDT05GSUdfRFRUX0RTMTcyMiAgICAgICAvKiBEYWxsYXMgRFMxNzIyIFNQSSBUZW1wZXJhdHVyZSBwcm9iZSAqLwoKCi8qIGFsbG93IHRvIG92ZXJ3cml0ZSBzZXJpYWwgYW5kIGV0aGFkZHIgKi8KI2RlZmluZSBDT05GSUdfRU5WX09WRVJXUklURQoKCiNpZiAwCi8qIEVudmlyb25tZW50IGluIGZsYXNoICovCiNkZWZpbmUgQ09ORklHX0VOVl9JU19JTl9GTEFTSCAgICAgMQojIGRlZmluZSBDT05GSUdfRU5WX0FERFIJCSgweDM4N2EwMDAwKQkvKiBBZGRyIG9mIEVudmlyb25tZW50IFNlY3RvcgkqLwojIGRlZmluZSBDT05GSUdfRU5WX1NJWkUJCTB4MjAwMDAJLyogVG90YWwgU2l6ZSBvZiBFbnZpcm9ubWVudCBTZWN0b3IgKG9yIDB4MTAwMDApICovCiMgZGVmaW5lIENPTkZJR19FTlZfT0ZGU0VUICAgICAgICAgMAoKI2Vsc2UKLyogRW52aXJvbm1lbnQgaW4gRUVQUk9NICovCgojIGRlZmluZSBDT05GSUdfRU5WX0lTX0lOX0VFUFJPTSAgIDEKIyBkZWZpbmUgQ09ORklHX1NQSQojIGRlZmluZSBDT05GSUdfU1BJX1ggMQojIGRlZmluZSBDT05GSUdfRU5WX1NJWkUJCTB4MjAwMAkvKiBUb3RhbCBTaXplIG9mIEVudmlyb25tZW50IEVFUFJPTQkqLwojIGRlZmluZSBDT05GSUdfRU5WX09GRlNFVCAgICAgICAgIDB4MWMwMAoKI2VuZGlmCgovKgogKiBKRkZTMiBwYXJ0aXRpb25zCiAqCiAqLwovKiBObyBjb21tYW5kIGxpbmUsIG9uZSBzdGF0aWMgcGFydGl0aW9uLCB3aG9sZSBkZXZpY2UgKi8KI3VuZGVmIENPTkZJR19KRkZTMl9DTURMSU5FCiNkZWZpbmUgQ09ORklHX0pGRlMyX0RFVgkJIm5vcjAiCiNkZWZpbmUgQ09ORklHX0pGRlMyX1BBUlRfU0laRQkJMHhGRkZGRkZGRgojZGVmaW5lIENPTkZJR19KRkZTMl9QQVJUX09GRlNFVAkweDAwMDAwMDAwCgovKiBtdGRwYXJ0cyBjb21tYW5kIGxpbmUgc3VwcG9ydCAqLwovKiBOb3RlOiBmYWtlIG10ZF9pZCB1c2VkLCBubyBsaW51eCBtdGQgbWFwIGZpbGUgKi8KLyoKI2RlZmluZSBDT05GSUdfSkZGUzJfQ01ETElORQojZGVmaW5lIE1URElEU19ERUZBVUxUCQkibm9yMD1zYzUyMF9zcHVuay0wIgojZGVmaW5lIE1URFBBUlRTX0RFRkFVTFQJIm10ZHBhcnRzPXNjNTIwX3NwdW5rLTA6LShqZmZzMikiCiovCgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIERldmljZSBkcml2ZXJzCiAqLwojZGVmaW5lIENPTkZJR19ORVRfTVVMVEkgICAgICAgIC8qIE11bHRpIGV0aGVybmV0IGNhcmRzIHN1cHBvcnQgKi8KI2RlZmluZSBDT05GSUdfRUVQUk8xMDAKI2RlZmluZSBDT05GSUdfU1lTX1JYX0VUSF9CVUZGRVIJOCAgICAgICAgICAgICAgIC8qIHVzZSA4IHJ4IGJ1ZmZlciBvbiBlZXBybzEwMCAgKi8KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogSURFL0FUQSBzdHVmZgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojZGVmaW5lIENPTkZJR19TWVNfSURFX01BWEJVUwkJMiAgIC8qIG1heC4gMiBJREUgYnVzc2VzCSovCiNkZWZpbmUgQ09ORklHX1NZU19JREVfTUFYREVWSUNFCShDT05GSUdfU1lTX0lERV9NQVhCVVMqMikgLyogbWF4LiAyIGRyaXZlcyBwZXIgSURFIGJ1cyAqLwojZGVmaW5lIENPTkZJR19TWVNfQVRBX0JBU0VfQUREUiAgICAgICAwCiNkZWZpbmUgQ09ORklHX1NZU19BVEFfSURFMF9PRkZTRVQJMHgwMWYwCS8qIGlkZTAgb2Zmc2V0ICovCiNkZWZpbmUgQ09ORklHX1NZU19BVEFfSURFMV9PRkZTRVQJMHhlMDAwCS8qIGlkZTEgb2Zmc2V0ICovCiNkZWZpbmUgQ09ORklHX1NZU19BVEFfREFUQV9PRkZTRVQJMAkvKiBkYXRhIHJlZyBvZmZzZXQJKi8KI2RlZmluZSBDT05GSUdfU1lTX0FUQV9SRUdfT0ZGU0VUCTAJLyogcmVnIG9mZnNldCAqLwojZGVmaW5lIENPTkZJR19TWVNfQVRBX0FMVF9PRkZTRVQJMHgyMDAJLyogYWx0ZXJuYXRlIHJlZ2lzdGVyIG9mZnNldCAqLwoKI2RlZmluZSBDT05GSUdfU1lTX0ZJUlNUX1BDTUNJQV9CVVMgICAgMQoKI3VuZGVmCUNPTkZJR19JREVfTEVECQkJLyogbm8gbGVkIGZvciBpZGUgc3VwcG9ydGVkCSovCiN1bmRlZiAgQ09ORklHX0lERV9SRVNFVAkJLyogcmVzZXQgZm9yIGlkZSB1bnN1cHBvcnRlZC4uLgkqLwojdW5kZWYgIENPTkZJR19JREVfUkVTRVRfUk9VVElORQkvKiBubyBzcGVjaWFsIHJlc2V0IGZ1bmN0aW9uICovCgojZGVmaW5lIENPTkZJR19JREVfVElfQ0FSREJVUwojZGVmaW5lIENPTkZJR19TWVNfUENNQ0lBX0NJU19XSU4gICAgICAgICAgMHgyN2YwMDAwMAojZGVmaW5lIENPTkZJR19TWVNfUENNQ0lBX0NJU19XSU5fU0laRSAgICAgMHgwMDEwMDAwMAojZGVmaW5lIENPTkZJR19TWVNfUENNQ0lBX0lPX1dJTiAgICAgICAgICAgMHhlMDAwCiNkZWZpbmUgQ09ORklHX1NZU19QQ01DSUFfSU9fV0lOX1NJWkUgICAgICAxNgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBESVNLIFBhcnRpdGlvbiBzdXBwb3J0CiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNkZWZpbmUgQ09ORklHX0RPU19QQVJUSVRJT04KI2RlZmluZSBDT05GSUdfTUFDX1BBUlRJVElPTgojZGVmaW5lIENPTkZJR19JU09fUEFSVElUSU9OIC8qIEV4cGVyaW1lbnRhbCAqLwoKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogUlRDCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2RlZmluZSBDT05GSUdfUlRDX01DMTQ2ODE4CiN1bmRlZiBDT05GSUdfV0FUQ0hET0cJCQkvKiB3YXRjaGRvZyBkaXNhYmxlZAkJKi8KCi8qCiAqIFBDSSBzdHVmZgogKi8KI2RlZmluZSBDT05GSUdfUENJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbmNsdWRlIHBjaSBzdXBwb3J0ICovCiNkZWZpbmUgQ09ORklHX1BDSV9QTlAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcGNpIHBsdWctYW5kLXBsYXkgKi8KI2RlZmluZSBDT05GSUdfUENJX1NDQU5fU0hPVwoKI2RlZmluZQlDT05GSUdfU1lTX0ZJUlNUX1BDSV9JUlEgICA5CiNkZWZpbmUJQ09ORklHX1NZU19TRUNPTkRfUENJX0lSUSAgMTAKI2RlZmluZQlDT05GSUdfU1lTX1RISVJEX1BDSV9JUlEgICAxMQojZGVmaW5lCUNPTkZJR19TWVNfRk9SVEhfUENJX0lSUSAgIDEyCgojZW5kaWYJLyogX19DT05GSUdfSCAqLwo=