Iw0KIyBNYWtlZmlsZSBmb3IgRnJlZVR5cGUyIGxpbmsgbGlicmFyeSB1c2luZyBBbWlnYSBTQVMvQyA2LjU4DQojDQoNCg0KIyBDb3B5cmlnaHQgMjAwNS0yMDE1IGJ5DQojIFdlcm5lciBMZW1iZXJnIGFuZCBEZXRsZWYgV/xya25lci4NCiMNCiMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwNCiMgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCBsaWNlbnNlLA0KIyBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIHlvdQ0KIyBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdA0KIyBmdWxseS4NCg0KDQojIHRvIGJ1aWxkIGZyb20gdGhlIGJ1aWxkcy9hbWlnYSBkaXJlY3RvcnkgY2FsbA0KIw0KIyAgc21ha2UgYXNzaWduDQojICBzbWFrZQ0KIw0KIyBZb3VyIHByb2dyYW1zIHNvdXJjZSBjb2RlIHNob3VsZCBzdGFydCB3aXRoIHRoaXMNCiMgKHVuY29tbWVudCB0aGUgcGFydHMgeW91IGRvIG5vdCBuZWVkIHRvIGtlZXAgdGhlIHByb2dyYW0gc21hbGwpOg0KIyAtLS04PC0tLQ0KI2RlZmluZSBGVF9VU0VfQVVUT0ZJVCAvLyBhdXRvZml0dGVyDQojZGVmaW5lIEZUX1VTRV9SQVNURVIgIC8vIG1vbm9jaHJvbWUgcmFzdGVyaXplcg0KI2RlZmluZSBGVF9VU0VfU01PT1RIICAvLyBhbnRpLWFsaWFzaW5nIHJhc3Rlcml6ZXINCiNkZWZpbmUgRlRfVVNFX1RUICAgICAgLy8gdHJ1ZXR5cGUgZm9udCBkcml2ZXINCiNkZWZpbmUgRlRfVVNFX1QxICAgICAgLy8gdHlwZTEgZm9udCBkcml2ZXINCiNkZWZpbmUgRlRfVVNFX1Q0MiAgICAgLy8gdHlwZTQyIGZvbnQgZHJpdmVyDQojZGVmaW5lIEZUX1VTRV9UMUNJRCAgIC8vIGNpZC1rZXllZCB0eXBlMSBmb250IGRyaXZlcg0KI2RlZmluZSBGVF9VU0VfQ0ZGICAgICAvLyBvcGVudHlwZSBmb250IGRyaXZlcg0KI2RlZmluZSBGVF9VU0VfQkRGICAgICAvLyBiZGYgYml0bWFwIGZvbnQgZHJpdmVyDQojZGVmaW5lIEZUX1VTRV9QQ0YgICAgIC8vIHBjZiBiaXRtYXAgZm9udCBkcml2ZXINCiNkZWZpbmUgRlRfVVNFX1BGUiAgICAgLy8gcGZyIGZvbnQgZHJpdmVyDQojZGVmaW5lIEZUX1VTRV9XSU5GTlQgIC8vIHdpbmRvd3MgLmZudHwuZm9uIGJpdG1hcCBmb250IGRyaXZlcg0KI2RlZmluZSBGVF9VU0VfT1RWICAgICAvLyBvcGVudHlwZSB2YWxpZGF0b3INCiNkZWZpbmUgRlRfVVNFX0dYViAgICAgLy8gdHJ1ZXR5cGUgZ3ggdmFsaWRhdG9yDQojaW5jbHVkZSAiRlQ6c3JjL2Jhc2UvZnRpbml0LmMiDQojIC0tLTg8LS0tDQojDQojIGxpbmsgeW91ciBwcm9ncmFtcyB3aXRoIGZ0Ml82ODB4MC5saWIgYW5kIGVpdGhlciBmdHN5c3RlbS5vIG9yIGZ0c3lzdGVtcHVyZS5vDQojIChhbmQgZWl0aGVyIGZ0ZGVidWcubyBvciBmdGRlYnVncHVyZS5vIGlmIHlvdSBlbmFibGVkIEZUX0RFQlVHX0xFVkVMX0VSUk9SIG9yDQojIEZUX0RFQlVHX0xFVkVMX1RSQUNFIGluIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmgpLg0KDQpPQkpCQVNFID0gZnRiYXNlLm8gZnRiYm94Lm8gZnRiZGYubyBmdGJpdG1hcC5vIGZ0Y2lkLm8gZnRmbnRmbXQubyBmdGZzdHlwZS5vIFwNCgkgIGZ0Z2FzcC5vIGZ0Z2x5cGgubyBmdGd4dmFsLm8gZnRsY2RmaWwubyBmdG1tLm8gZnRvdHZhbC5vICAgICAgICAgICBcDQoJICBmdHBhdGVudC5vIGZ0cGZyLm8gZnRzdHJva2UubyBmdHN5bnRoLm8gZnR0eXBlMS5vIGZ0d2luZm50Lm8NCg0KT0JKU1lTVEVNID0gZnRzeXN0ZW0ubyBmdHN5c3RlbXB1cmUubw0KDQpPQkpERUJVRyA9IGZ0ZGVidWcubyBmdGRlYnVncHVyZS5vDQoNCk9CSkFGSVQgPSBhdXRvZml0Lm8NCg0KT0JKR1hWID0gZ3h2YWxpZC5vDQoNCk9CSk9UViA9IG90dmFsaWQubw0KDQpPQkpQUyA9IHBzYXV4Lm8gcHNuYW1lcy5vIHBzaGludGVyLm8NCg0KT0JKUkFTVEVSID0gcmFzdGVyLm8gc21vb3RoLm8NCg0KT0JKU0ZOVCA9IHNmbnQubw0KDQpPQkpDQUNIRSA9IGZ0Y2FjaGUubw0KDQpPQkpGT05URCA9IGNmZi5vIHR5cGUxLm8gdHlwZTQyLm8gdHlwZTFjaWQub1wNCgkgICB0cnVldHlwZS5vIHdpbmZudC5vIGJkZi5vIHBjZi5vIHBmci5vDQoNCkNPUkUgPSBGVDpzcmMvDQoNCkNQVSAgICAgICA9IDY4MDAwDQojQ1BVICAgICAgPSA2ODAyMA0KI0NQVSAgICAgID0gNjgwMzANCiNDUFUgICAgICA9IDY4MDQwDQojQ1BVICAgICAgPSA2ODA2MA0KDQpPUFRJTUlaRVIgPSBvcHRpbmxvY2FsDQoNClNDRkxBR1MgPSBvcHRpbWl6ZSBvcHR0aW1lIG9wdHNjaGVkIHN0cm1lcmdlIGRhdGE9ZmFyb25seSBpZGxlbj01MCBjcHU9JChDUFUpXA0KCSAgaWRpcj1pbmNsdWRlLyBpZGlyPSQoQ09SRSkgaWRpcj1GVDppbmNsdWRlLyBub3N0YWNrY2hlY2sgbm9jaGthYm9ydFwNCgkgIG5vaWNvbnMgaWdub3JlPTc5LDg1LDExMCwzMDYgcGFyYW1ldGVycz1ib3RoIGRlZmluZT1GVDJfQlVJTERfTElCUkFSWQ0KDQpMSUIgID0gZnQyXyQoQ1BVKS5saWINCg0KIyBzYW1wbGUgbGlua2VyIG9wdGlvbnMNCk9QVFMgPSBsaW5rIGxpYj0kKExJQiksbGliOnNjLmxpYixsaWI6YW1pZ2EubGliLGxpYjpkZWJ1Zy5saWJcDQogICAgICAgc21hbGxjb2RlIHNtYWxsZGF0YSBub2ljb25zIHV0aWxsaWINCg0KIyBzYW1wbGUgcHJvZ3JhbSBlbnRyeQ0KI215cHJvZzogbXlwcm9nLmMgZnRzeXN0ZW0ubyAkKExJQikNCiMJc2MgJDwgcHJvZ3JhbW5hbWU9JEAgZnRzeXN0ZW0ubyAkKFNDRkxBR1MpICQoT1BUUykNCg0KYWxsOgkkKExJQikgJChPQkpTWVNURU0pICQoT0JKREVCVUcpDQoNCmFzc2lnbjoNCglhc3NpZ24gRlQ6IC8vDQoNCiMgdXNlcyBzZXBhcmF0ZSBvYmplY3QgbW9kdWxlcyBpbiBsaWIgdG8gbWFrZSBmb3IgZWFzaWVyIGRlYnVnZ2luZw0KIyBhbHNvLCBjYW4gbWFrZSBzbWFsbGVyIHByb2dyYW1zIGlmIGVudGlyZSBlbmdpbmUgaXMgbm90IHVzZWQNCmZ0Ml8kKENQVSkubGliOiAgJChPQkpCQVNFKSAkKE9CSkFGSVQpICQoT0JKT1RWKSAkKE9CSlBTKSAkKE9CSlJBU1RFUikgJChPQkpTRk5UKSAkKE9CSkNBQ0hFKSAkKE9CSkZPTlREKSBsencubyBnemlwLm8gYnppcDIubw0KCW9tbCAkQCByICQoT0JKQkFTRSkgJChPQkpBRklUKSAkKE9CSk9UVikgJChPQkpQUykgJChPQkpSQVNURVIpICQoT0JKU0ZOVCkgJChPQkpDQUNIRSkgJChPQkpGT05URCkgbHp3Lm8gZ3ppcC5vIGJ6aXAyLm8NCg0KY2xlYW46DQoJLWRlbGV0ZSBcIz8ubw0KDQpyZWFsY2xlYW46IGNsZWFuDQoJLWRlbGV0ZSBmdDIkKENQVSkubGliDQoNCiMNCiMgZnJlZXR5cGUgbGlicmFyeSBiYXNlDQojDQpmdGJhc2UubzogJChDT1JFKWJhc2UvZnRiYXNlLmMNCglzYyAkKFNDRkxBR1MpIG9iam5hbWU9JEAgJDwNCmZ0aW5pdC5vOiAkKENPUkUpYmFzZS9mdGluaXQuYw0KCXNjICQoU0NGTEFHUykgb2JqbmFtZT0kQCAkPA0KZnRzeXN0ZW0ubzogJChDT1JFKWJhc2UvZnRzeXN0ZW0uYw0KCXNjICQoU0NGTEFHUykgb2JqbmFtZT0kQCAkPA0KZnRzeXN0ZW1wdXJlLm86IHNyYy9iYXNlL2Z0c3lzdGVtLmMJIyMgcHVyZSB2ZXJzaW9uIGZvciB1c2UgaW4gcnVuLXRpbWUgbGlicmFyeSBldGMNCglzYyAkKFNDRkxBR1MpIG9iam5hbWU9JEAgJDwNCmZ0ZGVidWcubzogJChDT1JFKWJhc2UvZnRkZWJ1Zy5jDQoJc2MgJChTQ0ZMQUdTKSBvYmpuYW1lPSRAICQ8DQpmdGRlYnVncHVyZS5vOiBzcmMvYmFzZS9mdGRlYnVnLmMJIyMgcHVyZSB2ZXJzaW9uIGZvciB1c2UgaW4gcnVuLXRpbWUgbGlicmFyeSBldGMNCglzYyAkKFNDRkxBR1MpIG9iam5hbWU9JEAgJDwNCiMNCiMgZnJlZXR5cGUgbGlicmFyeSBiYXNlIGV4dGVuc2lvbnMNCiMNCmZ0YmJveC5vOiAkKENPUkUpYmFzZS9mdGJib3guYw0KCXNjICQoU0NGTEFHUykgb2JqbmFtZT0kQCAkPA0KZnRiZGYubzogJChDT1JFKWJhc2UvZnRiZGYuYw0KCXNjICQoU0NGTEFHUykgb2JqbmFtZT0kQCAkPA0KZnRiaXRtYXAubzogJChDT1JFKWJhc2UvZnRiaXRtYXAuYw0KCXNjICQoU0NGTEFHUykgb2JqbmFtZT0kQCAkPA0KZnRjaWQubzogJChDT1JFKWJhc2UvZnRjaWQuYw0KCXNjICQoU0NGTEFHUykgb2JqbmFtZT0kQCAkPA0KZnRmbnRmbXQubzogJChDT1JFKWJhc2UvZnRmbnRmbXQuYw0KCXNjICQoU0NGTEFHUykgb2JqbmFtZT0kQCAkPA0KZnRmc3R5cGUubzogJChDT1JFKWJhc2UvZnRmc3R5cGUuYw0KCXNjICQoU0NGTEFHUykgb2JqbmFtZT0kQCAkPA0KZnRnYXNwLm86ICQoQ09SRSliYXNlL2Z0Z2FzcC5jDQoJc2MgJChTQ0ZMQUdTKSBvYmpuYW1lPSRAICQ8DQpmdGdseXBoLm86ICQoQ09SRSliYXNlL2Z0Z2x5cGguYw0KCXNjICQoU0NGTEFHUykgb2JqbmFtZT0kQCAkPA0KZnRneHZhbC5vOiAkKENPUkUpYmFzZS9mdGd4dmFsLmMNCglzYyAkKFNDRkxBR1MpIG9iam5hbWU9JEAgJDwNCmZ0bGNkZmlsLm86ICQoQ09SRSliYXNlL2Z0bGNkZmlsLmMNCglzYyAkKFNDRkxBR1MpIG9iam5hbWU9JEAgJDwNCmZ0bW0ubzogJChDT1JFKWJhc2UvZnRtbS5jDQoJc2MgJChTQ0ZMQUdTKSBvYmpuYW1lPSRAICQ8DQpmdG90dmFsLm86ICQoQ09SRSliYXNlL2Z0b3R2YWwuYw0KCXNjICQoU0NGTEFHUykgb2JqbmFtZT0kQCAkPA0KZnRwYXRlbnQubzogJChDT1JFKWJhc2UvZnRwYXRlbnQuYw0KCXNjICQoU0NGTEFHUykgb2JqbmFtZT0kQCAkPA0KZnRwZnIubzogJChDT1JFKWJhc2UvZnRwZnIuYw0KCXNjICQoU0NGTEFHUykgb2JqbmFtZT0kQCAkPA0KZnRzdHJva2UubzogJChDT1JFKWJhc2UvZnRzdHJva2UuYw0KCXNjICQoU0NGTEFHUykgb2JqbmFtZT0kQCAkPA0KZnRzeW50aC5vOiAkKENPUkUpYmFzZS9mdHN5bnRoLmMNCglzYyAkKFNDRkxBR1MpIG9iam5hbWU9JEAgJDwNCmZ0dHlwZTEubzogJChDT1JFKWJhc2UvZnR0eXBlMS5jDQoJc2MgJChTQ0ZMQUdTKSBvYmpuYW1lPSRAICQ8DQpmdHdpbmZudC5vOiAkKENPUkUpYmFzZS9mdHdpbmZudC5jDQoJc2MgJChTQ0ZMQUdTKSBvYmpuYW1lPSRAICQ8DQoNCiMNCiMgZnJlZXR5cGUgbGlicmFyeSBhdXRvZml0dGVyIG1vZHVsZQ0KIw0KYXV0b2ZpdC5vOiAkKENPUkUpYXV0b2ZpdC9hdXRvZml0LmMNCglzYyAkKFNDRkxBR1MpIG9iam5hbWU9JEAgJDwNCg0KIw0KIyBmcmVldHlwZSBsaWJyYXJ5IFBTIGhpbnRpbmcgbW9kdWxlDQojDQpwc2hpbnRlci5vOiAkKENPUkUpcHNoaW50ZXIvcHNoaW50ZXIuYw0KCXNjICQoU0NGTEFHUykgb2JqbmFtZT0kQCAkPA0KIw0KIyBmcmVldHlwZSBsaWJyYXJ5IFBTIHN1cHBvcnQgbW9kdWxlDQojDQpwc2F1eC5vOiAkKENPUkUpcHNhdXgvcHNhdXguYw0KCXNjICQoU0NGTEFHUykgb2JqbmFtZT0kQCAkPA0KDQojDQojIGZyZWV0eXBlIGxpYnJhcnkgUFMgZ2x5cGggbmFtZXMgbW9kdWxlDQojDQpwc25hbWVzLm86ICQoQ09SRSlwc25hbWVzL3BzbmFtZXMuYw0KCXNjICQoU0NGTEFHUykgY29kZT1mYXIgb2JqbmFtZT0kQCAkPA0KDQojDQojIGZyZWV0eXBlIGxpYnJhcnkgbW9ub2Nocm9tZSByYXN0ZXIgbW9kdWxlDQojDQpyYXN0ZXIubzogJChDT1JFKXJhc3Rlci9yYXN0ZXIuYw0KCXNjICQoU0NGTEFHUykgb2JqbmFtZT0kQCAkPA0KDQojDQojIGZyZWV0eXBlIGxpYnJhcnkgYW50aS1hbGlhc2luZyByYXN0ZXIgbW9kdWxlDQojDQpzbW9vdGgubzogJChDT1JFKXNtb290aC9zbW9vdGguYw0KCXNjICQoU0NGTEFHUykgb2JqbmFtZT0kQCAkPA0KDQojDQojIGZyZWV0eXBlIGxpYnJhcnkgJ3NmbnQnIG1vZHVsZQ0KIw0Kc2ZudC5vOiAkKENPUkUpc2ZudC9zZm50LmMNCglzYyAkKFNDRkxBR1MpIG9iam5hbWU9JEAgJDwNCg0KIw0KIyBmcmVldHlwZSBsaWJyYXJ5IGdseXBoIGFuZCBpbWFnZSBjYWNoaW5nIHN5c3RlbSAoc3RpbGwgZXhwZXJpbWVudGFsKQ0KIw0KZnRjYWNoZS5vOiAkKENPUkUpY2FjaGUvZnRjYWNoZS5jDQoJc2MgJChTQ0ZMQUdTKSBvYmpuYW1lPSRAICQ8DQoNCiMNCiMgZnJlZXR5cGUgbGlicmFyeSBPcGVuVHlwZSBmb250IGRyaXZlcg0KIw0KY2ZmLm86ICQoQ09SRSljZmYvY2ZmLmMNCglzYyAkKFNDRkxBR1MpIG9iam5hbWU9JEAgJDwNCg0KIw0KIyBmcmVldHlwZSBsaWJyYXJ5IFRydWVUeXBlIGZvbnQgZHJpdmVyDQojDQp0cnVldHlwZS5vOiAkKENPUkUpdHJ1ZXR5cGUvdHJ1ZXR5cGUuYw0KCXNjICQoU0NGTEFHUykgb2JqbmFtZT0kQCAkPA0KDQojDQojIGZyZWV0eXBlIGxpYnJhcnkgVHlwZTEgZm9udCBkcml2ZXINCiMNCnR5cGUxLm86ICQoQ09SRSl0eXBlMS90eXBlMS5jDQoJc2MgJChTQ0ZMQUdTKSBvYmpuYW1lPSRAICQ8DQoNCiMNCiMgRnJlZVR5cGUyIGxpYnJhcnkgVHlwZTQyIGZvbnQgZHJpdmVyDQojDQp0eXBlNDIubzogJChDT1JFKXR5cGU0Mi90eXBlNDIuYw0KCXNjICQoU0NGTEFHUykgb2JqbmFtZT0kQCAkPA0KDQojDQojIGZyZWV0eXBlIGxpYnJhcnkgQ0lELWtleWVkIFR5cGUxIGZvbnQgZHJpdmVyDQojDQp0eXBlMWNpZC5vOiAkKENPUkUpY2lkL3R5cGUxY2lkLmMNCglzYyAkKFNDRkxBR1MpIG9iam5hbWU9JEAgJDwNCiMNCiMgZnJlZXR5cGUgbGlicmFyeSBDSUQta2V5ZWQgVHlwZTEgZm9udCBkcml2ZXIgZXh0ZW5zaW9ucw0KIw0KI2NpZGFmbS5vOiAkKENPUkUpY2lkL2NpZGFmbS5jDQojCXNjICQoU0NGTEFHUykgb2JqbmFtZT0kQCAkPA0KDQojDQojIGZyZWV0eXBlIGxpYnJhcnkgQkRGIGJpdG1hcCBmb250IGRyaXZlcg0KIw0KYmRmLm86ICQoQ09SRSliZGYvYmRmLmMNCglzYyAkKFNDRkxBR1MpIG9iam5hbWU9JEAgJDwNCg0KIw0KIyBmcmVldHlwZSBsaWJyYXJ5IFBDRiBiaXRtYXAgZm9udCBkcml2ZXINCiMNCnBjZi5vOiAkKENPUkUpcGNmL3BjZi5jDQoJc2MgJChTQ0ZMQUdTKSBvYmpuYW1lPSRAICQ8DQoNCiMNCiMgZnJlZXR5cGUgbGlicmFyeSBnemlwIHN1cHBvcnQgZm9yIGNvbXByZXNzZWQgUENGIGJpdG1hcCBmb250cw0KIw0KZ3ppcC5vOiAkKENPUkUpZ3ppcC9mdGd6aXAuYw0KCXNjICQoU0NGTEFHUykgZGVmaW5lIEZBUiBvYmpuYW1lPSRAICQ8DQoNCiMNCiMgZnJlZXR5cGUgbGlicmFyeSBiemlwMiBzdXBwb3J0IGZvciBjb21wcmVzc2VkIFBDRiBiaXRtYXAgZm9udHMNCiMNCmJ6aXAyLm86ICQoQ09SRSliemlwMi9mdGJ6aXAyLmMNCglzYyAkKFNDRkxBR1MpIGRlZmluZSBGQVIgb2JqbmFtZT0kQCAkPA0KDQojDQojIGZyZWV0eXBlIGxpYnJhcnkgY29tcHJlc3Mgc3VwcG9ydCBmb3IgY29tcHJlc3NlZCBQQ0YgYml0bWFwIGZvbnRzDQojDQpsencubzogJChDT1JFKWx6dy9mdGx6dy5jDQoJc2MgJChTQ0ZMQUdTKSBvYmpuYW1lPSRAICQ8DQoNCiMNCiMgZnJlZXR5cGUgbGlicmFyeSBQRlIgZm9udCBkcml2ZXINCiMNCnBmci5vOiAkKENPUkUpcGZyL3Bmci5jDQoJc2MgJChTQ0ZMQUdTKSBvYmpuYW1lPSRAICQ8DQoNCiMNCiMgZnJlZXR5cGUgbGlicmFyeSBXaW5kb3dzIEZOVC9GT04gYml0bWFwIGZvbnQgZHJpdmVyDQojDQp3aW5mbnQubzogJChDT1JFKXdpbmZvbnRzL3dpbmZudC5jDQoJc2MgJChTQ0ZMQUdTKSBvYmpuYW1lPSRAICQ8DQoNCiMNCiMgZnJlZXR5cGUgbGlicmFyeSBUcnVlVHlwZUdYIHZhbGlkYXRvcg0KIw0KZ3h2YWxpZC5vOiAkKENPUkUpZ3h2YWxpZC9neHZhbGlkLmMNCglzYyAkKFNDRkxBR1MpIG9iam5hbWU9JEAgJDwNCg0KIw0KIyBmcmVldHlwZSBsaWJyYXJ5IE9wZW5UeXBlIHZhbGlkYXRvcg0KIw0Kb3R2YWxpZC5vOiAkKENPUkUpb3R2YWxpZC9vdHZhbGlkLmMNCglzYyAkKFNDRkxBR1MpIG9iam5hbWU9JEAgJDwNCg0KI0xvY2FsIFZhcmlhYmxlczoNCiNjb2Rpbmc6IGxhdGluLTENCiNFbmQ6DQo=