IwojICRSQ1NJZDogeGMvbGliL2ZvbnRjb25maWcvZmMtbGFuZy9kYS5vcnRoLHYgMS4zIDIwMDIvMDcvMTIgMDk6MTI6MzYga2VpdGhwIEV4cCAkCiMKIyBDb3B5cmlnaHQgqSAyMDAyIEtlaXRoIFBhY2thcmQKIwojIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGRpc3RyaWJ1dGUsIGFuZCBzZWxsIHRoaXMgc29mdHdhcmUgYW5kIGl0cwojIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkIHdpdGhvdXQgZmVlLCBwcm92aWRlZCB0aGF0CiMgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5kIHRoYXQgYm90aCB0aGF0CiMgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gc3VwcG9ydGluZwojIGRvY3VtZW50YXRpb24sIGFuZCB0aGF0IHRoZSBuYW1lIG9mIEtlaXRoIFBhY2thcmQgbm90IGJlIHVzZWQgaW4KIyBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkgcGVydGFpbmluZyB0byBkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlIHdpdGhvdXQKIyBzcGVjaWZpYywgd3JpdHRlbiBwcmlvciBwZXJtaXNzaW9uLiAgS2VpdGggUGFja2FyZCBtYWtlcyBubwojIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UuICBJdAojIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuCiMKIyBLRUlUSCBQQUNLQVJEIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFLAojIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUywgSU4gTk8KIyBFVkVOVCBTSEFMTCBLRUlUSCBQQUNLQVJEIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIElORElSRUNUIE9SCiMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsCiMgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUgojIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IKIyBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgojCiMgRGFuaXNoIChEQSkKIwojIFNvdXJjZXM6CiMJd3d3LmV2ZXJ0eXBlLmNvbQojCXd3dy5la2kuZWUvbGV0dGVyCiMgTm90ZToKIwlUaGUgc291cmNlcyBjaXRlZCBhdCB3d3cuZXZlcnR5cGUuY29tIGFwcGVhciB0byBoYXZlIHVuaWZpZWQKIwlhbGwgb2YgdGhlIG5vcmRpYyBsYW5ndWFnZXMgbWFraW5nIHRoZSBvcnRob2dyYXBoeSBzaWduaWZpY2FudGx5CiMJbGFyZ2VyIHRoYW4gbmVlZGVkIGZvciBEYW5pc2guICBUaGUgb3J0aG9ncmFwaHkgdXNlZCBoZXJlIGlzCiMJanVzdCB0aGF0IGZyb20gZWtpLmVlIHdpdGggdGhlIGV2ZXJ0eXBlLmNvbSBhZGRpdGlvbnMgY29tbWVudGVkIG91dAojCQowMDQxLTAwNWEKMDA2MS0wMDdhCiMwMGFiCiMwMGJiCiMwMEMwCQkjIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBHUkFWRQowMEMxCQkjIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBBQ1VURQojMDBDMgkJIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAojMDBDNAkJIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCjAwQzUJCSMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKMDBDNgkJIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBBRSAoYXNoKSAqCiMwMEM3CQkjIExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiMwMEM4CQkjIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBHUkFWRQowMEM5CQkjIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBBQ1VURQojMDBDQQkJIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAojMDBDQgkJIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCjAwQ0QJCSMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEFDVVRFCiMwMEQwCQkjIExBVElOIENBUElUQUwgTEVUVEVSIEVUSCAoSWNlbGFuZGljKQowMEQzCQkjIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBBQ1VURQojMDBENAkJIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAojMDBENgkJIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCjAwRDgJCSMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFNUUk9LRQowMERBCQkjIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBBQ1VURQojMDBEQwkJIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCjAwREQJCSMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEFDVVRFCiMwMERFCQkjIExBVElOIENBUElUQUwgTEVUVEVSIFRIT1JOIChJY2VsYW5kaWMpCiMwMEUwCQkjIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggR1JBVkUKMDBFMQkJIyBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEFDVVRFCiMwMEUyCQkjIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAojMDBFNAkJIyBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwowMEU1CQkjIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQowMEU2CQkjIExBVElOIFNNQUxMIExFVFRFUiBBRSAoYXNoKSAqCiMwMEU3CQkjIExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0VESUxMQQojMDBFOAkJIyBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEdSQVZFCjAwRTkJCSMgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQojMDBFQQkJIyBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKIzAwRUIJCSMgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKMDBFRAkJIyBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFCiMwMEYwCQkjIExBVElOIFNNQUxMIExFVFRFUiBFVEggKEljZWxhbmRpYykKMDBGMwkJIyBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCiMwMEY0CQkjIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAojMDBGNgkJIyBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwowMEY4CQkjIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggU1RST0tFCjAwRkEJCSMgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQojMDBGQwkJIyBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwowMEZECQkjIExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggQUNVVEUKIzAwRkUJCSMgTEFUSU4gU01BTEwgTEVUVEVSIFRIT1JOIChJY2VsYW5kaWMpCiMwMTUyCQkjIExBVElOIENBUElUQUwgTElHQVRVUkUgT0UKIzAxNTMJCSMgTEFUSU4gU01BTEwgTElHQVRVUkUgT0UKIzAxRkEJCSMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUgQU5EIEFDVVRFCiMwMUZCCQkjIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRSBBTkQgQUNVVEUKIzAxRkMJCSMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQUUgV0lUSCBBQ1VURSAoYXNoKSAqCiMwMUZECQkjIExBVElOIFNNQUxMIExFVFRFUiBBRSBXSVRIIEFDVVRFIChhc2gpICoKIzAxRkUJCSMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFNUUk9LRSBBTkQgQUNVVEUKIzAxRkYJCSMgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBTVFJPS0UgQU5EIEFDVVRFCiMyMDM5LTIwM2EJIyBhbmdsZSBxdW90ZXMK