IwojIE1ha2VmaWxlIGZvciBGcmVlVHlwZTIgbGluayBsaWJyYXJ5IHVzaW5nIEFtaWdhIFNBUy9DIDYuNTgKIwoKCiMgQ29weXJpZ2h0IDIwMDUsMjAwNiwgMjAwNywgMjAwOSBieQojIFdlcm5lciBMZW1iZXJnIGFuZCBEZXRsZWYgV/xya25lci4KIwojIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCiMgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCBsaWNlbnNlLAojIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgeW91CiMgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQKIyBmdWxseS4KCgojIHRvIGJ1aWxkIGZyb20gdGhlIGJ1aWxkcy9hbWlnYSBkaXJlY3RvcnkgY2FsbAojCiMgIHNtYWtlIGFzc2lnbgojICBzbWFrZQojCiMgWW91ciBwcm9ncmFtcyBzb3VyY2UgY29kZSBzaG91bGQgc3RhcnQgd2l0aCB0aGlzCiMgKHVuY29tbWVudCB0aGUgcGFydHMgeW91IGRvIG5vdCBuZWVkIHRvIGtlZXAgdGhlIHByb2dyYW0gc21hbGwpOgojIC0tLTg8LS0tCiNkZWZpbmUgRlRfVVNFX0FVVE9GSVQgLy8gYXV0b2ZpdHRlcgojZGVmaW5lIEZUX1VTRV9SQVNURVIgIC8vIG1vbm9jaHJvbWUgcmFzdGVyaXplcgojZGVmaW5lIEZUX1VTRV9TTU9PVEggIC8vIGFudGktYWxpYXNpbmcgcmFzdGVyaXplcgojZGVmaW5lIEZUX1VTRV9UVCAgICAgIC8vIHRydWV0eXBlIGZvbnQgZHJpdmVyCiNkZWZpbmUgRlRfVVNFX1QxICAgICAgLy8gdHlwZTEgZm9udCBkcml2ZXIKI2RlZmluZSBGVF9VU0VfVDQyICAgICAvLyB0eXBlNDIgZm9udCBkcml2ZXIKI2RlZmluZSBGVF9VU0VfVDFDSUQgICAvLyBjaWQta2V5ZWQgdHlwZTEgZm9udCBkcml2ZXIKI2RlZmluZSBGVF9VU0VfQ0ZGICAgICAvLyBvcGVudHlwZSBmb250IGRyaXZlcgojZGVmaW5lIEZUX1VTRV9CREYgICAgIC8vIGJkZiBiaXRtYXAgZm9udCBkcml2ZXIKI2RlZmluZSBGVF9VU0VfUENGICAgICAvLyBwY2YgYml0bWFwIGZvbnQgZHJpdmVyCiNkZWZpbmUgRlRfVVNFX1BGUiAgICAgLy8gcGZyIGZvbnQgZHJpdmVyCiNkZWZpbmUgRlRfVVNFX1dJTkZOVCAgLy8gd2luZG93cyAuZm50fC5mb24gYml0bWFwIGZvbnQgZHJpdmVyCiNkZWZpbmUgRlRfVVNFX09UViAgICAgLy8gb3BlbnR5cGUgdmFsaWRhdG9yCiNkZWZpbmUgRlRfVVNFX0dYViAgICAgLy8gdHJ1ZXR5cGUgZ3ggdmFsaWRhdG9yCiNpbmNsdWRlICJGVDpzcmMvYmFzZS9mdGluaXQuYyIKIyAtLS04PC0tLQojCiMgbGluayB5b3VyIHByb2dyYW1zIHdpdGggZnQyXzY4MHgwLmxpYiBhbmQgZWl0aGVyIGZ0c3lzdGVtLm8gb3IgZnRzeXN0ZW1wdXJlLm8KIyAoYW5kIGVpdGhlciBmdGRlYnVnLm8gb3IgZnRkZWJ1Z3B1cmUubyBpZiB5b3UgZW5hYmxlZCBGVF9ERUJVR19MRVZFTF9FUlJPUiBvcgojIEZUX0RFQlVHX0xFVkVMX1RSQUNFIGluIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmgpLgoKT0JKQkFTRSA9IGZ0YmFzZS5vIGZ0YmJveC5vIGZ0YmRmLm8gZnRiaXRtYXAubyBmdGNpZC5vIGZ0ZnN0eXBlLm8gZnRnYXNwLm8gICBcCgkgIGZ0Z2x5cGgubyBmdGd4dmFsLm8gZnRsY2RmaWwubyBmdG1tLm8gZnRvdHZhbC5vIGZ0cGF0ZW50Lm8gZnRwZnIubyBcCgkgIGZ0c3Ryb2tlLm8gZnRzeW50aC5vIGZ0dHlwZTEubyBmdHdpbmZudC5vIGZ0eGY4Ni5vCgpPQkpTWVNURU0gPSBmdHN5c3RlbS5vIGZ0c3lzdGVtcHVyZS5vCgpPQkpERUJVRyA9IGZ0ZGVidWcubyBmdGRlYnVncHVyZS5vCgpPQkpBRklUID0gYXV0b2ZpdC5vCgpPQkpHWFYgPSBneHZhbGlkLm8KCk9CSk9UViA9IG90dmFsaWQubwoKT0JKUFMgPSBwc2F1eC5vIHBzbmFtZXMubyBwc2hpbnRlci5vCgpPQkpSQVNURVIgPSByYXN0ZXIubyBzbW9vdGgubwoKT0JKU0ZOVCA9IHNmbnQubwoKT0JKQ0FDSEUgPSBmdGNhY2hlLm8KCk9CSkZPTlREID0gY2ZmLm8gdHlwZTEubyB0eXBlNDIubyB0eXBlMWNpZC5vXAoJICAgdHJ1ZXR5cGUubyB3aW5mbnQubyBiZGYubyBwY2YubyBwZnIubwoKQ09SRSA9IEZUOnNyYy8KCkNQVSAgICAgICA9IDY4MDAwCiNDUFUgICAgICA9IDY4MDIwCiNDUFUgICAgICA9IDY4MDMwCiNDUFUgICAgICA9IDY4MDQwCiNDUFUgICAgICA9IDY4MDYwCgpPUFRJTUlaRVIgPSBvcHRpbmxvY2FsCgpTQ0ZMQUdTID0gb3B0aW1pemUgb3B0dGltZSBvcHRzY2hlZCBzdHJtZXJnZSBkYXRhPWZhcm9ubHkgaWRsZW49NTAgY3B1PSQoQ1BVKVwKCSAgaWRpcj1pbmNsdWRlLyBpZGlyPSQoQ09SRSkgaWRpcj1GVDppbmNsdWRlLyBub3N0YWNrY2hlY2sgbm9jaGthYm9ydFwKCSAgbm9pY29ucyBpZ25vcmU9NzksODUsMTEwLDMwNiBwYXJhbWV0ZXJzPWJvdGggZGVmaW5lPUZUMl9CVUlMRF9MSUJSQVJZCgpMSUIgID0gZnQyXyQoQ1BVKS5saWIKCiMgc2FtcGxlIGxpbmtlciBvcHRpb25zCk9QVFMgPSBsaW5rIGxpYj0kKExJQiksbGliOnNjLmxpYixsaWI6YW1pZ2EubGliLGxpYjpkZWJ1Zy5saWJcCiAgICAgICBzbWFsbGNvZGUgc21hbGxkYXRhIG5vaWNvbnMgdXRpbGxpYgoKIyBzYW1wbGUgcHJvZ3JhbSBlbnRyeQojbXlwcm9nOiBteXByb2cuYyBmdHN5c3RlbS5vICQoTElCKQojCXNjICQ8IHByb2dyYW1uYW1lPSRAIGZ0c3lzdGVtLm8gJChTQ0ZMQUdTKSAkKE9QVFMpCgphbGw6CSQoTElCKSAkKE9CSlNZU1RFTSkgJChPQkpERUJVRykKCmFzc2lnbjoKCWFzc2lnbiBGVDogLy8KCiMgdXNlcyBzZXBhcmF0ZSBvYmplY3QgbW9kdWxlcyBpbiBsaWIgdG8gbWFrZSBmb3IgZWFzaWVyIGRlYnVnZ2luZwojIGFsc28sIGNhbiBtYWtlIHNtYWxsZXIgcHJvZ3JhbXMgaWYgZW50aXJlIGVuZ2luZSBpcyBub3QgdXNlZApmdDJfJChDUFUpLmxpYjogICQoT0JKQkFTRSkgJChPQkpBRklUKSAkKE9CSk9UVikgJChPQkpQUykgJChPQkpSQVNURVIpICQoT0JKU0ZOVCkgJChPQkpDQUNIRSkgJChPQkpGT05URCkgbHp3Lm8gZ3ppcC5vCglvbWwgJEAgciAkKE9CSkJBU0UpICQoT0JKQUZJVCkgJChPQkpPVFYpICQoT0JKUFMpICQoT0JKUkFTVEVSKSAkKE9CSlNGTlQpICQoT0JKQ0FDSEUpICQoT0JKRk9OVEQpIGx6dy5vIGd6aXAubwoKY2xlYW46CgktZGVsZXRlIFwjPy5vCgpyZWFsY2xlYW46IGNsZWFuCgktZGVsZXRlIGZ0MiQoQ1BVKS5saWIKCiMKIyBmcmVldHlwZSBsaWJyYXJ5IGJhc2UKIwpmdGJhc2UubzogJChDT1JFKWJhc2UvZnRiYXNlLmMKCXNjICQoU0NGTEFHUykgb2JqbmFtZT0kQCAkPApmdGluaXQubzogJChDT1JFKWJhc2UvZnRpbml0LmMKCXNjICQoU0NGTEFHUykgb2JqbmFtZT0kQCAkPApmdHN5c3RlbS5vOiAkKENPUkUpYmFzZS9mdHN5c3RlbS5jCglzYyAkKFNDRkxBR1MpIG9iam5hbWU9JEAgJDwKZnRzeXN0ZW1wdXJlLm86IHNyYy9iYXNlL2Z0c3lzdGVtLmMJIyMgcHVyZSB2ZXJzaW9uIGZvciB1c2UgaW4gcnVuLXRpbWUgbGlicmFyeSBldGMKCXNjICQoU0NGTEFHUykgb2JqbmFtZT0kQCAkPApmdGRlYnVnLm86ICQoQ09SRSliYXNlL2Z0ZGVidWcuYwoJc2MgJChTQ0ZMQUdTKSBvYmpuYW1lPSRAICQ8CmZ0ZGVidWdwdXJlLm86IHNyYy9iYXNlL2Z0ZGVidWcuYwkjIyBwdXJlIHZlcnNpb24gZm9yIHVzZSBpbiBydW4tdGltZSBsaWJyYXJ5IGV0YwoJc2MgJChTQ0ZMQUdTKSBvYmpuYW1lPSRAICQ8CiMKIyBmcmVldHlwZSBsaWJyYXJ5IGJhc2UgZXh0ZW5zaW9ucwojCmZ0YmJveC5vOiAkKENPUkUpYmFzZS9mdGJib3guYwoJc2MgJChTQ0ZMQUdTKSBvYmpuYW1lPSRAICQ8CmZ0YmRmLm86ICQoQ09SRSliYXNlL2Z0YmRmLmMKCXNjICQoU0NGTEFHUykgb2JqbmFtZT0kQCAkPApmdGJpdG1hcC5vOiAkKENPUkUpYmFzZS9mdGJpdG1hcC5jCglzYyAkKFNDRkxBR1MpIG9iam5hbWU9JEAgJDwKZnRjaWQubzogJChDT1JFKWJhc2UvZnRjaWQuYwoJc2MgJChTQ0ZMQUdTKSBvYmpuYW1lPSRAICQ8CmZ0ZnN0eXBlLm86ICQoQ09SRSliYXNlL2Z0ZnN0eXBlLmMKCXNjICQoU0NGTEFHUykgb2JqbmFtZT0kQCAkPApmdGdhc3AubzogJChDT1JFKWJhc2UvZnRnYXNwLmMKCXNjICQoU0NGTEFHUykgb2JqbmFtZT0kQCAkPApmdGdseXBoLm86ICQoQ09SRSliYXNlL2Z0Z2x5cGguYwoJc2MgJChTQ0ZMQUdTKSBvYmpuYW1lPSRAICQ8CmZ0Z3h2YWwubzogJChDT1JFKWJhc2UvZnRneHZhbC5jCglzYyAkKFNDRkxBR1MpIG9iam5hbWU9JEAgJDwKZnRsY2RmaWwubzogJChDT1JFKWJhc2UvZnRsY2RmaWwuYwoJc2MgJChTQ0ZMQUdTKSBvYmpuYW1lPSRAICQ8CmZ0bW0ubzogJChDT1JFKWJhc2UvZnRtbS5jCglzYyAkKFNDRkxBR1MpIG9iam5hbWU9JEAgJDwKZnRvdHZhbC5vOiAkKENPUkUpYmFzZS9mdG90dmFsLmMKCXNjICQoU0NGTEFHUykgb2JqbmFtZT0kQCAkPApmdHBhdGVudC5vOiAkKENPUkUpYmFzZS9mdHBhdGVudC5jCglzYyAkKFNDRkxBR1MpIG9iam5hbWU9JEAgJDwKZnRwZnIubzogJChDT1JFKWJhc2UvZnRwZnIuYwoJc2MgJChTQ0ZMQUdTKSBvYmpuYW1lPSRAICQ8CmZ0c3Ryb2tlLm86ICQoQ09SRSliYXNlL2Z0c3Ryb2tlLmMKCXNjICQoU0NGTEFHUykgb2JqbmFtZT0kQCAkPApmdHN5bnRoLm86ICQoQ09SRSliYXNlL2Z0c3ludGguYwoJc2MgJChTQ0ZMQUdTKSBvYmpuYW1lPSRAICQ8CmZ0dHlwZTEubzogJChDT1JFKWJhc2UvZnR0eXBlMS5jCglzYyAkKFNDRkxBR1MpIG9iam5hbWU9JEAgJDwKZnR3aW5mbnQubzogJChDT1JFKWJhc2UvZnR3aW5mbnQuYwoJc2MgJChTQ0ZMQUdTKSBvYmpuYW1lPSRAICQ8CmZ0eGY4Ni5vOiAkKENPUkUpYmFzZS9mdHhmODYuYwoJc2MgJChTQ0ZMQUdTKSBvYmpuYW1lPSRAICQ8CgojCiMgZnJlZXR5cGUgbGlicmFyeSBhdXRvZml0dGVyIG1vZHVsZQojCmF1dG9maXQubzogJChDT1JFKWF1dG9maXQvYXV0b2ZpdC5jCglzYyAkKFNDRkxBR1MpIG9iam5hbWU9JEAgJDwKCiMKIyBmcmVldHlwZSBsaWJyYXJ5IFBTIGhpbnRpbmcgbW9kdWxlCiMKcHNoaW50ZXIubzogJChDT1JFKXBzaGludGVyL3BzaGludGVyLmMKCXNjICQoU0NGTEFHUykgb2JqbmFtZT0kQCAkPAojCiMgZnJlZXR5cGUgbGlicmFyeSBQUyBzdXBwb3J0IG1vZHVsZQojCnBzYXV4Lm86ICQoQ09SRSlwc2F1eC9wc2F1eC5jCglzYyAkKFNDRkxBR1MpIG9iam5hbWU9JEAgJDwKCiMKIyBmcmVldHlwZSBsaWJyYXJ5IFBTIGdseXBoIG5hbWVzIG1vZHVsZQojCnBzbmFtZXMubzogJChDT1JFKXBzbmFtZXMvcHNuYW1lcy5jCglzYyAkKFNDRkxBR1MpIGNvZGU9ZmFyIG9iam5hbWU9JEAgJDwKCiMKIyBmcmVldHlwZSBsaWJyYXJ5IG1vbm9jaHJvbWUgcmFzdGVyIG1vZHVsZQojCnJhc3Rlci5vOiAkKENPUkUpcmFzdGVyL3Jhc3Rlci5jCglzYyAkKFNDRkxBR1MpIG9iam5hbWU9JEAgJDwKCiMKIyBmcmVldHlwZSBsaWJyYXJ5IGFudGktYWxpYXNpbmcgcmFzdGVyIG1vZHVsZQojCnNtb290aC5vOiAkKENPUkUpc21vb3RoL3Ntb290aC5jCglzYyAkKFNDRkxBR1MpIG9iam5hbWU9JEAgJDwKCiMKIyBmcmVldHlwZSBsaWJyYXJ5ICdzZm50JyBtb2R1bGUKIwpzZm50Lm86ICQoQ09SRSlzZm50L3NmbnQuYwoJc2MgJChTQ0ZMQUdTKSBvYmpuYW1lPSRAICQ8CgojCiMgZnJlZXR5cGUgbGlicmFyeSBnbHlwaCBhbmQgaW1hZ2UgY2FjaGluZyBzeXN0ZW0gKHN0aWxsIGV4cGVyaW1lbnRhbCkKIwpmdGNhY2hlLm86ICQoQ09SRSljYWNoZS9mdGNhY2hlLmMKCXNjICQoU0NGTEFHUykgb2JqbmFtZT0kQCAkPAoKIwojIGZyZWV0eXBlIGxpYnJhcnkgT3BlblR5cGUgZm9udCBkcml2ZXIKIwpjZmYubzogJChDT1JFKWNmZi9jZmYuYwoJc2MgJChTQ0ZMQUdTKSBvYmpuYW1lPSRAICQ8CgojCiMgZnJlZXR5cGUgbGlicmFyeSBUcnVlVHlwZSBmb250IGRyaXZlcgojCnRydWV0eXBlLm86ICQoQ09SRSl0cnVldHlwZS90cnVldHlwZS5jCglzYyAkKFNDRkxBR1MpIG9iam5hbWU9JEAgJDwKCiMKIyBmcmVldHlwZSBsaWJyYXJ5IFR5cGUxIGZvbnQgZHJpdmVyCiMKdHlwZTEubzogJChDT1JFKXR5cGUxL3R5cGUxLmMKCXNjICQoU0NGTEFHUykgb2JqbmFtZT0kQCAkPAoKIwojIEZyZWVUeXBlMiBsaWJyYXJ5IFR5cGU0MiBmb250IGRyaXZlcgojCnR5cGU0Mi5vOiAkKENPUkUpdHlwZTQyL3R5cGU0Mi5jCglzYyAkKFNDRkxBR1MpIG9iam5hbWU9JEAgJDwKCiMKIyBmcmVldHlwZSBsaWJyYXJ5IENJRC1rZXllZCBUeXBlMSBmb250IGRyaXZlcgojCnR5cGUxY2lkLm86ICQoQ09SRSljaWQvdHlwZTFjaWQuYwoJc2MgJChTQ0ZMQUdTKSBvYmpuYW1lPSRAICQ8CiMKIyBmcmVldHlwZSBsaWJyYXJ5IENJRC1rZXllZCBUeXBlMSBmb250IGRyaXZlciBleHRlbnNpb25zCiMKI2NpZGFmbS5vOiAkKENPUkUpY2lkL2NpZGFmbS5jCiMJc2MgJChTQ0ZMQUdTKSBvYmpuYW1lPSRAICQ8CgojCiMgZnJlZXR5cGUgbGlicmFyeSBCREYgYml0bWFwIGZvbnQgZHJpdmVyCiMKYmRmLm86ICQoQ09SRSliZGYvYmRmLmMKCXNjICQoU0NGTEFHUykgb2JqbmFtZT0kQCAkPAoKIwojIGZyZWV0eXBlIGxpYnJhcnkgUENGIGJpdG1hcCBmb250IGRyaXZlcgojCnBjZi5vOiAkKENPUkUpcGNmL3BjZi5jCglzYyAkKFNDRkxBR1MpIG9iam5hbWU9JEAgJDwKCiMKIyBmcmVldHlwZSBsaWJyYXJ5IGd6aXAgc3VwcG9ydCBmb3IgY29tcHJlc3NlZCBQQ0YgYml0bWFwIGZvbnRzCiMKZ3ppcC5vOiAkKENPUkUpZ3ppcC9mdGd6aXAuYwoJc2MgJChTQ0ZMQUdTKSBkZWZpbmUgRkFSIG9iam5hbWU9JEAgJDwKCiMKIyBmcmVldHlwZSBsaWJyYXJ5IGNvbXByZXNzIHN1cHBvcnQgZm9yIGNvbXByZXNzZWQgUENGIGJpdG1hcCBmb250cwojCmx6dy5vOiAkKENPUkUpbHp3L2Z0bHp3LmMKCXNjICQoU0NGTEFHUykgb2JqbmFtZT0kQCAkPAoKIwojIGZyZWV0eXBlIGxpYnJhcnkgUEZSIGZvbnQgZHJpdmVyCiMKcGZyLm86ICQoQ09SRSlwZnIvcGZyLmMKCXNjICQoU0NGTEFHUykgb2JqbmFtZT0kQCAkPAoKIwojIGZyZWV0eXBlIGxpYnJhcnkgV2luZG93cyBGTlQvRk9OIGJpdG1hcCBmb250IGRyaXZlcgojCndpbmZudC5vOiAkKENPUkUpd2luZm9udHMvd2luZm50LmMKCXNjICQoU0NGTEFHUykgb2JqbmFtZT0kQCAkPAoKIwojIGZyZWV0eXBlIGxpYnJhcnkgVHJ1ZVR5cGVHWCB2YWxpZGF0b3IKIwpneHZhbGlkLm86ICQoQ09SRSlneHZhbGlkL2d4dmFsaWQuYwoJc2MgJChTQ0ZMQUdTKSBvYmpuYW1lPSRAICQ8CgojCiMgZnJlZXR5cGUgbGlicmFyeSBPcGVuVHlwZSB2YWxpZGF0b3IKIwpvdHZhbGlkLm86ICQoQ09SRSlvdHZhbGlkL290dmFsaWQuYwoJc2MgJChTQ0ZMQUdTKSBvYmpuYW1lPSRAICQ8CgojTG9jYWwgVmFyaWFibGVzOgojY29kaW5nOiBsYXRpbi0xCiNFbmQ6Cg==