Skip to content

Latest commit

 

History

History
1 lines (1 loc) · 14.3 KB

cl7flfisp0aiu1cnv4img71cx.md

File metadata and controls

1 lines (1 loc) · 14.3 KB

IyMgSW50cm9kdWN0aW9uIFRvIERhdGFiYXNlCgojIyAxLiBXaGF0IGlzIERhdGEKCgohW2RyaWJiYmxlX18xXy5naWZdKGh0dHBzOi8vY2RuLmhhc2hub2RlLmNvbS9yZXMvaGFzaG5vZGUvaW1hZ2UvdXBsb2FkL3YxNjYxNjU4MDU3NTA4L3dDaFA2NWtVTC5naWYgYWxpZ249ImxlZnQiKQoKRGF0YSBjYW4gYmUgZGVmaW5lZCBhcyBhIHJlcHJlc2VudGF0aW9uIG9mIGZhY3RzLCBjb25jZXB0cywgb3IgaW5zdHJ1Y3Rpb25zIGluIGEgZm9ybWFsaXplZCBtYW5uZXIsIHdoaWNoIHNob3VsZCBiZSBzdWl0YWJsZSBmb3IgY29tbXVuaWNhdGlvbiwgaW50ZXJwcmV0YXRpb24sIG9yIHByb2Nlc3NpbmcgYnkgaHVtYW4gb3IgZWxlY3Ryb25pYyBtYWNoaW5lLiBEYXRhIGNhbiBleGlzdCBpbiB2YXJpb3VzIGZvcm1zOiBhcyBudW1iZXJzIG9yIHRleHQgcmVjb3JkZWQgb24gcGFwZXIsIGFzIGJpdHMgb3IgYnl0ZXMgc3RvcmVkIGluIGVsZWN0cm9uaWMgbWVtb3J5LCBvciBhcyBmYWN0cyBsaXZpbmcgaW4gYSBwZXJzb27igJlzIG1pbmQuIEFsbCB0aGUgZGF0YSBhcmUgY29sbGVjdCBpbiBmb3JtIG9mIGJpbmFyeSAoMS8wKSBmb3JtYXQgYW5kIHRyYW5zbWl0IGZyb20gc291cmNlIHRvIGRlc3RpbmF0aW9uIHZpYSBpbnRlcm5ldCwgd2lyZXMsIHNpZ25hbHMuCgoKIVsyMDAuZ2lmXShodHRwczovL2Nkbi5oYXNobm9kZS5jb20vcmVzL2hhc2hub2RlL2ltYWdlL3VwbG9hZC92MTY2MTY1ODA4Mzc2MC9fejVmZ1EtMVQuZ2lmIGFsaWduPSJsZWZ0IikKCiMjIDIuIFdoYXQgaXMgRGF0YWJhc2UKCiFbMGI0ZWJkXzMwMWRjMmFkODNjNDQwZTliNTJiNzY3ZTQ4NWIxOTQ5X212Mi5naWZdKGh0dHBzOi8vY2RuLmhhc2hub2RlLmNvbS9yZXMvaGFzaG5vZGUvaW1hZ2UvdXBsb2FkL3YxNjYxNjU4Njg4Mzk0L1lhTl96Zk1WMi5naWYgYWxpZ249ImxlZnQiKQoKQSBkYXRhYmFzZSBpcyBhbiBvcmdhbml6ZWQgY29sbGVjdGlvbiBvZiBzdHJ1Y3R1cmVkIGluZm9ybWF0aW9uLCBvciBkYXRhLCB0eXBpY2FsbHkgc3RvcmVkIGVsZWN0cm9uaWNhbGx5IGluIGEgY29tcHV0ZXIgc3lzdGVtLiBBIGRhdGFiYXNlIGlzIHVzdWFsbHkgY29udHJvbGxlZCBieSBhIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtIChEQk1TKS4gV2UgY2FuIG9yZ2FuaXplIGRhdGEgaW50byB0YWJsZXMsIHJvd3MsIGNvbHVtbnMsIGFuZCBpbmRleCBpdCB0byBtYWtlIGl0IGVhc2llciB0byBmaW5kIHJlbGV2YW50IGluZm9ybWF0aW9uLiBCYXNpY2FsbHkgd2UgdXNlIGEgZGF0YWJhc2UgZm9yIGNvbGxlY3QgZGF0YSBhbmQgbWFuYWdlIHRob3NlIGRhdGEgaW4gYSBlZmZpY2llbnQgd2F5IHRoYXRzIGNhbiBiZSBkb25lIGJ5IGEgc3BlY2lmaWMgc29mdHdhcmUsIHN0b3JhZ2UgZGV2aWNlLCBhbmQgYSBncm91cCBvZiBkZXZlbG9wZXJzIHRvIG1haW50YWluIHRob3NlIHNvZnR3YXJlIGFuZCBkYXRhIGNlbnRlcnMuCk1hbnkgb3JnYW5pc2F0aW9uIGFuZCBpbnN0aXR1dGUgdXNlIHRoZWlyIG93biBkYXRhIGNlbnRyZSBsaWtlIEdvb2dsZSwgRmFjZWJvb2ssIE1pY3Jvc29mdCBldGMuCgoKIVswMDA0LlBOR10oaHR0cHM6Ly9jZG4uaGFzaG5vZGUuY29tL3Jlcy9oYXNobm9kZS9pbWFnZS91cGxvYWQvdjE2NjE2NjAwNjMzMTQvR2Nyb1hDV1BmLlBORyBhbGlnbj0ibGVmdCIpCgoKIyMgMy4gV2hhdCBpcyBEQk1TIChEYXRhYmFzZSBNYW5hZ2VtZW50IFN5c3RlbSkKCgohW0RCTVMucG5nXShodHRwczovL2Nkbi5oYXNobm9kZS5jb20vcmVzL2hhc2hub2RlL2ltYWdlL3VwbG9hZC92MTY2MTY1OTEwNTk3NC9ZNDdyY1BFMUgucG5nIGFsaWduPSJsZWZ0IikKCkRCTVMgKERhdGFiYXNlIE1hbmFnZW1lbnQgU3lzdGVtKSBpcyBhIHNvZnR3YXJlIHRvIG1hbmFnZSBhbmQgYWNjZXNzIHRoZSBkYXRhYmFzZSBpbiBlZmZpY2llbnQgd2F5LiBJdCBiYXNvY2FsbHkgbWFuYWdlcyB0aGUgZGF0YSBpbiBkYXRhYmFzZS4gVGhlcmUgYXJlIHZhcmlvdXMgREJNUyBhdmFpbGFibGUgbGlrZSBPcmFjbGUsIE15c3FsLCBNc0FjY2Vzcy4gU28gREJNUyBpcyBhIHBhY2thZ2UgaWYgaXQgaXMgd2l0aCByZWxhdGlvbmFsIGRhdGFiYXNlIHdoZW4gaXQgd2lsbCBiZSBjYWxsZWQgUkRCTVMoUmVsYXRpb25hbCBEYXRhYmFzZSBNYW5hZ2VtZW50IFN5c3RlbSkKCgojIyA0LiBUeXBlcyBvZiBEQk1TCgoKIVtUeXBlcy1vZi1EQk1TLmpwZ10oaHR0cHM6Ly9jZG4uaGFzaG5vZGUuY29tL3Jlcy9oYXNobm9kZS9pbWFnZS91cGxvYWQvdjE2NjE2NjAyNDg4MjYvcm5MVTVWd1RfLmpwZyBhbGlnbj0ibGVmdCIpCgotICAqKlR5cGVzIG9mIGRhdGFiYXNlcyoqIDoKClRoZXJlIGFyZSBtYW55IGRpZmZlcmVudCB0eXBlcyBvZiBkYXRhYmFzZXMuIFRoZSBiZXN0IGRhdGFiYXNlIGZvciBhIHNwZWNpZmljIG9yZ2FuaXphdGlvbiBkZXBlbmRzIG9uIGhvdyB0aGUgb3JnYW5pemF0aW9uIGludGVuZHMgdG8gdXNlIHRoZSBkYXRhLiAKCgotICAqKlJlbGF0aW9uYWwgZGF0YWJhc2VzKiogOgoKQSByZWxhdGlvbmFsIGRhdGFiYXNlIGlzIGEgdHlwZSBvZiBkYXRhYmFzZSB0aGF0IHN0b3JlcyBhbmQgcHJvdmlkZXMgYWNjZXNzIHRvIGRhdGEgcG9pbnRzIHRoYXQgYXJlIHJlbGF0ZWQgdG8gb25lIGFub3RoZXIuIFJlbGF0aW9uYWwgZGF0YWJhc2VzIGFyZSBiYXNlZCBvbiB0aGUgcmVsYXRpb25hbCBtb2RlbC4gU28gREJNUyBpcyBhIHBhY2thZ2UgaWYgaXQgaXMgd2l0aCByZWxhdGlvbmFsIGRhdGFiYXNlIHdoZW4gaXQgd2lsbCBiZSBjYWxsZWQgUkRCTVMoUmVsYXRpb25hbCBEYXRhYmFzZSBNYW5hZ2VtZW50IFN5c3RlbSkuUG9wdWxhciBleGFtcGxlcyBvZiBzdGFuZGFyZCByZWxhdGlvbmFsIGRhdGFiYXNlcyBpbmNsdWRlIE1pY3Jvc29mdCBTUUwgU2VydmVyLCBPcmFjbGUgRGF0YWJhc2UsIE15U1FMIGFuZCBJQk0gREIyLgoKLSAgKipPYmplY3Qtb3JpZW50ZWQgZGF0YWJhc2VzKiogOgoKSW5mb3JtYXRpb24gaW4gYW4gb2JqZWN0LW9yaWVudGVkIGRhdGFiYXNlIGlzIHJlcHJlc2VudGVkIGluIHRoZSBmb3JtIG9mIG9iamVjdHMsIGFzIGluIG9iamVjdC1vcmllbnRlZCBwcm9ncmFtbWluZy4gQ29tbW9uIGV4YW1wbGVzIGFyZSBTbWFsbHRhbGsgaXMgdXNlZCBpbiBHZW1TdG9uZSwgTElTUCBpcyB1c2VkIGluIEdiYXNlLCBhbmQgQ09QIGlzIHVzZWQgaW4gVmJhc2UuCgotICAqKkRpc3RyaWJ1dGVkIGRhdGFiYXNlcyoqIDoKCkEgZGlzdHJpYnV0ZWQgZGF0YWJhc2UgY29uc2lzdHMgb2YgdHdvIG9yIG1vcmUgZmlsZXMgbG9jYXRlZCBpbiBkaWZmZXJlbnQgc2l0ZXMuIFRoZSBkYXRhYmFzZSBtYXkgYmUgc3RvcmVkIG9uIG11bHRpcGxlIGNvbXB1dGVycywgbG9jYXRlZCBpbiB0aGUgc2FtZSBwaHlzaWNhbCBsb2NhdGlvbiwgb3Igc2NhdHRlcmVkIG92ZXIgZGlmZmVyZW50IG5ldHdvcmtzLiBzb21lIGV4YW1wbGVzIG9mIGRpc3RyaWJ1dGVkIGRhdGFiYXNlcyBpbmNsdWRlIEFwYWNoZSBJZ25pdGUsIEFwYWNoZSBDYXNzYW5kcmEsIEFwYWNoZSBIQmFzZSwgQ291Y2hiYXNlIFNlcnZlciwgQW1hem9uIFNpbXBsZURCLCBDbHVzdGVycG9pbnQsIGFuZCBGb3VuZGF0aW9uREIsIENvY2tyb2FjaERCIGV0Yy4KCi0gICoqRGF0YSB3YXJlaG91c2VzKiogOgoKQSBjZW50cmFsIHJlcG9zaXRvcnkgZm9yIGRhdGEsIGEgZGF0YSB3YXJlaG91c2UgaXMgYSB0eXBlIG9mIGRhdGFiYXNlIHNwZWNpZmljYWxseSBkZXNpZ25lZCBmb3IgZmFzdCBxdWVyeSBhbmQgYW5hbHlzaXMuCgotICAqKk5vU1FMIGRhdGFiYXNlcyoqIDoKCkEgTm9TUUwsIG9yIG5vbiByZWxhdGlvbmFsIGRhdGFiYXNlLCBhbGxvd3MgdW5zdHJ1Y3R1cmVkIGFuZCBzZW1pc3RydWN0dXJlZCBkYXRhIHRvIGJlIHN0b3JlZCBhbmQgbWFuaXB1bGF0ZWQuIFRoZSBtb3N0IHBvcHVsYXIgZGF0YWJhc2VzIGZyb20gU1FMIGFuZCBOb1NRTCBhcmUgTXlTUUwgYW5kIE1vbmdvREIuCgotICAqKkdyYXBoIGRhdGFiYXNlcyoqIDoKCkEgZ3JhcGggZGF0YWJhc2Ugc3RvcmVzIGRhdGEgaW4gdGVybXMgb2YgZW50aXRpZXMgYW5kIHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gZW50aXRpZXMuCgotICAqKk9MVFAgZGF0YWJhc2VzKiogOgoKQW4gT0xUUCBkYXRhYmFzZSBpcyBhIHNwZWVkeSwgYW5hbHl0aWMgZGF0YWJhc2UgZGVzaWduZWQgZm9yIGxhcmdlIG51bWJlcnMgb2YgdHJhbnNhY3Rpb25zIHBlcmZvcm1lZCBieSBtdWx0aXBsZSB1c2Vycy4KCgotICAqKk9wZW4gc291cmNlIGRhdGFiYXNlcyoqIDoKCkFuIG9wZW4gc291cmNlIGRhdGFiYXNlIHN5c3RlbSBpcyBvbmUgd2hvc2Ugc291cmNlIGNvZGUgaXMgb3BlbiBzb3VyY2U7IHN1Y2ggZGF0YWJhc2VzIGNvdWxkIGJlIFNRTCBvciBOb1NRTCBkYXRhYmFzZXMuCgoKLSAgKipDbG91ZCBkYXRhYmFzZXMqKiA6CgpBIGNsb3VkIGRhdGFiYXNlIGlzIGEgY29sbGVjdGlvbiBvZiBkYXRhLCBlaXRoZXIgc3RydWN0dXJlZCBvciB1bnN0cnVjdHVyZWQsIHRoYXQgcmVzaWRlcyBvbiBhIHByaXZhdGUsIHB1YmxpYywgb3IgaHlicmlkIGNsb3VkIGNvbXB1dGluZyBwbGF0Zm9ybS4gVGhlcmUgYXJlIHR3byB0eXBlcyBvZiBjbG91ZCBkYXRhYmFzZSBtb2RlbHM6IHRyYWRpdGlvbmFsIGFuZCBkYXRhYmFzZSBhcyBhIHNlcnZpY2UgKERCYWFTKS4gV2l0aCBEQmFhUywgYWRtaW5pc3RyYXRpdmUgdGFza3MgYW5kIG1haW50ZW5hbmNlIGFyZSBwZXJmb3JtZWQgYnkgYSBzZXJ2aWNlIHByb3ZpZGVyLiBUaGUgY29tbW9uIGV4YW1wbGUgb2YgY2xvdWQgZGF0YWJhc2UgYXJlIENsb3VkIFNRTCBieSBHb29nbGUsIEF6dXJlIGJ5IE1pY3Jvc29mdC4KCi0gICoqTXVsdGltb2RlbCBkYXRhYmFzZSoqIDoKCk11bHRpbW9kZWwgZGF0YWJhc2VzIGNvbWJpbmUgZGlmZmVyZW50IHR5cGVzIG9mIGRhdGFiYXNlIG1vZGVscyBpbnRvIGEgc2luZ2xlLCBpbnRlZ3JhdGVkIGJhY2sgZW5kLiBUaGlzIG1lYW5zIHRoZXkgY2FuIGFjY29tbW9kYXRlIHZhcmlvdXMgZGF0YSB0eXBlcy4KCi0gICoqRG9jdW1lbnQvSlNPTiBkYXRhYmFzZSoqIDoKCkRlc2lnbmVkIGZvciBzdG9yaW5nLCByZXRyaWV2aW5nLCBhbmQgbWFuYWdpbmcgZG9jdW1lbnQtb3JpZW50ZWQgaW5mb3JtYXRpb24sIGRvY3VtZW50IGRhdGFiYXNlcyBhcmUgYSBtb2Rlcm4gd2F5IHRvIHN0b3JlIGRhdGEgaW4gSlNPTiBmb3JtYXQgcmF0aGVyIHRoYW4gcm93cyBhbmQgY29sdW1ucy4KCi0gICoqU2VsZi1kcml2aW5nIGRhdGFiYXNlcyoqIDoKClRoZSBuZXdlc3QgdHlwZSBvZiBkYXRhYmFzZSwgc2VsZi1kcml2aW5nIGRhdGFiYXNlcyAoYWxzbyBrbm93biBhcyBhdXRvbm9tb3VzIGRhdGFiYXNlcykgYXJlIGNsb3VkLWJhc2VkIGFuZCB1c2UgbWFjaGluZSBsZWFybmluZyB0byBhdXRvbWF0ZSBkYXRhYmFzZSB0dW5pbmcsIHNlY3VyaXR5LCBiYWNrdXBzLCB1cGRhdGVzLCBhbmQgb3RoZXIgcm91dGluZSBtYW5hZ2VtZW50IHRhc2tzIHRyYWRpdGlvbmFsbHkgcGVyZm9ybWVkIGJ5IGRhdGFiYXNlIGFkbWluaXN0cmF0b3JzLiBPcmFjbGUgdW52ZWlsZWQgdGhlIHdvcmxkLWZpcnN0IHNlbGYtZHJpdmluZyBkYXRhYmFzZSBhcyBhIHNlcnZpY2UgdGhhdCBldmVuIHN1cHBvcnRzIGF1dG9tYXRlZCBwZXJmb3JtYW5jZSB0dW5pbmcsIHNlbGYtc2NhbGluZyBhbmQgc2VsZi1yZXBhaXJpbmcuCgoKCiMjIDUuIFdoYXQgaXMgU1FMCgoKIVsyMDAuZ2lmXShodHRwczovL2Nkbi5oYXNobm9kZS5jb20vcmVzL2hhc2hub2RlL2ltYWdlL3VwbG9hZC92MTY2MTc0MTc5OTcwNS8tbnllbnVqV2kuZ2lmIGFsaWduPSJsZWZ0IikKClNRTCBzdGFucyBmb3Igc3RydWN0dXJlIHF1ZXJ5IGxhbmd1YWdlLiBTUUwgaXMgYSBzdGFuZGFyZCBsYW5ndWFnZSBmb3IgYWNjZXNzaW5nIGFuZCBtYW5pcHVsYXRpbmcgZGF0YWJhc2VzLiBTbyBiYXNpY2FsbHkgd2UgY2FuIG1hbmFnZSBvdXIgZGF0YSBieSBkaWZmZXJlbnQgb3BlcmF0aW9uIGxpa2UgaW5zZXJ0LCBkZWxldGUsIGRpc3BsYXksIHJlbW92ZSwgY3JlYXRlIGV0Yy4gQWxsIHRoZSBSZWxhdGlvbmFsIERhdGFiYXNlIE1hbmFnZW1lbnQgU3lzdGVtcyAoUkRNUykgbGlrZSBNeVNRTCwgTVMgQWNjZXNzLCBPcmFjbGUsIFN5YmFzZSwgSW5mb3JtaXgsIFBvc3RncmVzIGFuZCBTUUwgU2VydmVyIHVzZSBTUUwgYXMgdGhlaXIgc3RhbmRhcmQgZGF0YWJhc2UgbGFuZ3VhZ2UuIAoKIyMgNi4gT3JhY2xlCgohW1FPVEZFUVpHTEJJRk5JWDNRV0VNNEFBQTNJLmpwZ10oaHR0cHM6Ly9jZG4uaGFzaG5vZGUuY29tL3Jlcy9oYXNobm9kZS9pbWFnZS91cGxvYWQvdjE2NjE3NDA5MDkwMjYvMDJIWE1EMG5ULmpwZyBhbGlnbj0ibGVmdCIpCgpbT3JhY2xlIENvcnBvcmF0aW9uXShodHRwczovL3d3dy5vcmFjbGUuY29tLykgaXMgdGhlIGxhcmdlc3Qgc29mdHdhcmUgY29tcGFueSB0byBkZXZlbG9wIGFuZCBtYXJrZXRzIGNvbXB1dGVyIHNvZnR3YXJlIGFwcGxpY2F0aW9ucyBmb3IgYnVzaW5lc3MuIFRoZSBjb21wYW55IGlzIGJlc3Qga25vd24gZm9yIGl0cyBPcmFjbGUgZGF0YWJhc2UgcHJvZHVjdHMgYW5kLCBtb3JlIHJlY2VudGx5LCBjbG91ZCBwcm9kdWN0cyBhbmQgc2VydmljZXMuIEl0cyByZWxhdGlvbmFsIGRhdGFiYXNlIHdhcyB0aGUgZmlyc3QgdG8gc3VwcG9ydCBTUUwsIHdoaWNoIGhhcyBzaW5jZSBiZWNvbWUgdGhlIGluZHVzdHJ5IHN0YW5kYXJkLiBPcmFjbGUgZGF0YWJhc2UgaXMgb25lIG9mIHRoZSBtb3N0IHRydXN0ZWQgYW5kIHdpZGVseSB1c2VkIHJlbGF0aW9uYWwgZGF0YWJhc2UgZW5naW5lcy4gVGhlIGJpZ2dlc3Qgcml2YWwgb2YgT3JhY2xlIGRhdGFiYXNlIGlzIE1pY3Jvc29mdCdzIFNRTCBTZXJ2ZXIuIE9yYWNsZSBkYXRhYmFzZSBpcyBhIHJlbGF0aW9uYWwgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0uIEl0IGlzIGFsc28gY2FsbGVkIE9yYWNsZURCLCBvciBzaW1wbHkgT3JhY2xlLiBJdCBpcyBwcm9kdWNlZCBhbmQgbWFya2V0ZWQgYnkgT3JhY2xlIENvcnBvcmF0aW9uLiBJdCB3YXMgY3JlYXRlZCBpbiAxOTc3IGJ5IExhd3JlbmNlIEVsbGlzb24gYW5kIG90aGVyIGVuZ2luZWVycy4gSXQgaXMgb25lIG9mIHRoZSBtb3N0IHBvcHVsYXIgcmVsYXRpb25hbCBkYXRhYmFzZSBlbmdpbmVzIGluIHRoZSBJVCBtYXJrZXQgZm9yIHN0b3JpbmcsIG9yZ2FuaXppbmcsIGFuZCByZXRyaWV2aW5nIGRhdGEuCgojIyA3LiBXaHkgRGF0YWJhc2UgbmVlZGVkCgohW1doYXQtaXMtYS1EYXRhYmFzZS1XaHktRG8tV2UtTmVlZC1JdC5wbmddKGh0dHBzOi8vY2RuLmhhc2hub2RlLmNvbS9yZXMvaGFzaG5vZGUvaW1hZ2UvdXBsb2FkL3YxNjYxNzQyMjE2NTg3L1J1NUhJemx4Ni5wbmcgYWxpZ249ImxlZnQiKQoKLSAgKipBYnNvcmJpbmcgc2lnbmlmaWNhbnQgaW5jcmVhc2VzIGluIGRhdGEgdm9sdW1lICoqOgoKIFRoZXJlIGFyZSAyLjUgcXVpbnRpbGxpb24gYnl0ZXMgb2YgZGF0YSBjcmVhdGVkIGVhY2ggZGF5IGF0IG91ciBjdXJyZW50IHBhY2UuIE5vdyB0aGlzIGFtb3VudCBvZiBkYXRhIGNhbiBiZSBpbmNyZWFzZSBkYXkgYnkgZGF5IGFuZCBpdCBpcyB2ZXJ5IGNoYWxsZW5naW5nIGZhY3RvciB0byBtYW5hZ2UgYW5kIHN0b3JlIHRoaXMgZGF0YSwgZm9yIHRoaXMgcmVhc29uIGRhdGFiYXNlIGlzIG5lZWRlZC4KCgotICAqKkVuc3VyaW5nIGRhdGEgc2VjdXJpdHkqKjoKCkV2ZXJ5IHNpbmdsZSBkYXkgd2UgdXBsb2FkIGFuZCBzdG9yZSBkYXRhIGluIG91ciBsb2NhbCBzeXN0ZW0gYnV0IGV2ZXJ5IHN5c3RlbSBub3QgaGF2ZSBpdCdzIG93biBkYXRhIGFjY2VzcyBvciBzZWN1cml0eSBtZWFzdXJlIGFuZCBzdHVmZnMsIHNvIGluIHRoaXMgY29uZGl0aW9uIHdlIGhhdmUgdG8gdXNlIGEgc3BlY2lmaWMgZGF0YWJhc2UgdGhhdCBpcyBtYWludGFpbiB1c2VyIGRhdGEgc2VjdXJpdHkuIAoKLSAgKipNYW5hZ2luZyBhbmQgbWFpbnRhaW5pbmcgdGhlIGRhdGFiYXNlIGFuZCBpbmZyYXN0cnVjdHVyZSoqOgoKSWYgd2UgaGF2ZSBhIGxhcmdlIHNldCBvZiBkYXRhLCB0aGVuIHdlIGhhdmUgdG8gbWFuYWdlIHRob3NlIGRhdGEgbGlrZSByZWFkIGFuZCB3cml0ZSBkYXRhLCBkYXRhIHJlbW92aW5nIG9wZXJhdGlvbiBldGMsIHNvIHRvIGltcGxlbWVudCB0aGlzIGtpbmQgb2Ygb3BlcmF0aW9uIHdlIGhhdmUgdG8gdXNlIGEgdW5pcXVlIGRhdGFiYXNlIHN5c3RlbSB0byBtYW5hZ2UgdGhvc2UgZGF0YSBpbiBlZmZpY2llbnQgd2F5LgoKLSAgKipFbnN1cmluZyBkYXRhIHJlc2lkZW5jeSwgZGF0YSBzb3ZlcmVpZ250eSwgb3IgbGF0ZW5jeSByZXF1aXJlbWVudHMqKjoKClRoZXJlIGFyZSBsb3RzIG9mIGNoYW5jZSB0byBoYXZlIGEgcmVkdW5kYW50IGRhdGEgaW4gYSBzdG9yZWQgZGF0YSBzZXQuIFNvIGl0IGlzIG5lY2Vzc2FyeSB0byByZW1vdmUgcmVkdW5kYW50IGRhdGEgYmVjYXVzZSBpdCBvY2N1cHkgdGhlIHNwYWNlIGluIGEgc3RvcmFnZSBzeXN0ZW0sIGluIHRoaXMgc2l0dWF0aW9uIHdlIGhhdmUgdG8gdXNlIGEgc3BlY2lmaWMgZGF0YWJhc2UgZm9yIHJlbW92ZSByZWR1bmRhbnQgZGF0YS4KCiMjIDguIEFkdmFudGFnZSBvZiBEQk1TCgohW0FkdmFudGFnZXMtT2YtREJNUy5qcGddKGh0dHBzOi8vY2RuLmhhc2hub2RlLmNvbS9yZXMvaGFzaG5vZGUvaW1hZ2UvdXBsb2FkL3YxNjYxNzQyMDAxNzgzL1RPay1DSDVuQi5qcGcgYWxpZ249ImxlZnQiKQoKLSAqKkJldHRlciBEYXRhIFRyYW5zZmVycmluZyoqOiBEYXRhYmFzZSBtYW5hZ2VtZW50IGNyZWF0ZXMgYSBwbGFjZSB3aGVyZSB1c2VycyBoYXZlIGFuIGFkdmFudGFnZSBvZiBtb3JlIGFuZCBiZXR0ZXItbWFuYWdlZCBkYXRhLiBUaHVzIG1ha2luZyBpdCBwb3NzaWJsZSBmb3IgZW5kLXVzZXJzIHRvIGhhdmUgYSBxdWljayBsb29rIGFuZCB0byByZXNwb25kIGZhc3QgdG8gYW55IGNoYW5nZXMgbWFkZSBpbiB0aGVpciBlbnZpcm9ubWVudC4KCi0gKipCZXR0ZXIgRGF0YSBTZWN1cml0eSoqOiBUaGUgbW9yZSBhY2Nlc3NpYmxlIGFuZCB1c2FibGUgdGhlIGRhdGFiYXNlLCB0aGUgbW9yZSBpdCBpcyBwcm9uZSB0byBzZWN1cml0eSBpc3N1ZXMuIEFzIHRoZSBudW1iZXIgb2YgdXNlcnMgaW5jcmVhc2VzLCB0aGUgZGF0YSB0cmFuc2ZlcnJpbmcgb3IgZGF0YSBzaGFyaW5nIHJhdGUgYWxzbyBpbmNyZWFzZXMgdGh1cyBpbmNyZWFzaW5nIHRoZSByaXNrIG9mIGRhdGEgc2VjdXJpdHkuIAoKLSAqKkJldHRlciBkYXRhIGludGVncmF0aW9uKio6IER1ZSB0byB0aGUgRGF0YWJhc2UgTWFuYWdlbWVudCBTeXN0ZW0gd2UgaGF2ZSBhbiBhY2Nlc3MgdG8gd2VsbCBtYW5hZ2VkIGFuZCBzeW5jaHJvbml6ZWQgZm9ybSBvZiBkYXRhIHRodXMgaXQgbWFrZXMgZGF0YSBoYW5kbGluZyB2ZXJ5IGVhc3kgYW5kIGdpdmVzIGFuIGludGVncmF0ZWQgdmlldyBvZiBob3cgYSBwYXJ0aWN1bGFyIG9yZ2FuaXphdGlvbiBpcyB3b3JraW5nIGFuZCBhbHNvIGhlbHBzIHRvIGtlZXAgYSB0cmFjayBvZiBob3cgb25lIHNlZ21lbnQgb2YgdGhlIGNvbXBhbnkgYWZmZWN0cyBhbm90aGVyIHNlZ21lbnQuCgotICoqTWluaW1pemVkIERhdGEgSW5jb25zaXN0ZW5jeSoqOiBEYXRhIGluY29uc2lzdGVuY3kgb2NjdXJzIGJldHdlZW4gZmlsZXMgd2hlbiBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgdGhlIHNhbWUgZGF0YSBhcHBlYXIgaW4gZGlmZmVyZW50IHBsYWNlcy4gCgotICoqRmFzdGVyIGRhdGEgQWNjZXNzKio6IFRoZSBEYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3RlbSAoREJNUykgaGVscHMgdG8gcHJvZHVjZSBxdWljayBhbnN3ZXJzIHRvIGRhdGFiYXNlIHF1ZXJpZXMgdGh1cyBtYWtpbmcgZGF0YSBhY2Nlc3MgZmFzdGVyIGFuZCBtb3JlIGFjY3VyYXRlLiBGb3IgZXhhbXBsZSwgdG8gcmVhZCBvciB1cGRhdGUgdGhlIGRhdGEuIAoKLSAqKkluY3JlYXNlZCBlbmQtdXNlciBwcm9kdWN0aXZpdHkqKjogVGhlIGRhdGEgd2hpY2ggaXMgYXZhaWxhYmxlIHdpdGggdGhlIGhlbHAgb2YgYSBjb21iaW5hdGlvbiBvZiB0b29scyB0aGF0IHRyYW5zZm9ybSBkYXRhIGludG8gdXNlZnVsIGluZm9ybWF0aW9uLCBoZWxwcyBlbmQtdXNlcnMgdG8gbWFrZSBxdWljaywgaW5mb3JtYXRpdmUsIGFuZCBiZXR0ZXIgZGVjaXNpb25zIHRoYXQgY2FuIG1ha2UgZGlmZmVyZW5jZSBiZXR3ZWVuIHN1Y2Nlc3MgYW5kIGZhaWx1cmUgaW4gdGhlIGdsb2JhbCBlY29ub215LgoKLSAqKlJlZHVjdGlvbiBpbiBkYXRhIFJlZHVuZGFuY3kqKjogV2hlbiB3b3JraW5nIHdpdGggYSBzdHJ1Y3R1cmVkIGRhdGFiYXNlLCBEQk1TIHByb3ZpZGVzIHRoZSBmZWF0dXJlIHRvIHByZXZlbnQgdGhlIGlucHV0IG9mIGR1cGxpY2F0ZSBpdGVtcyBpbiB0aGUgZGF0YWJhc2UuIGZvciBlLmcuIOKAkyBJZiB0aGVyZSBhcmUgdHdvIHNhbWUgc3R1ZGVudHMgaW4gZGlmZmVyZW50IHJvd3MsIHRoZW4gb25lIG9mIHRoZSBkdXBsaWNhdGUgZGF0YSB3aWxsIGJlIGRlbGV0ZWQuCgojIyA5LiBSZWZlcmVuY2UKCi0gaHR0cHM6Ly93d3cub3JhY2xlLmNvbS8g8J+aqQoKLSBodHRwczovL3d3dy5jb2Nrcm9hY2hsYWJzLmNvbS8g8J+aqQoKLSBodHRwczovL3d3dy5pbmZsdXhkYXRhLmNvbS8g8J+aqQoKLSBodHRwczovL3d3dy5pYm0uY29tL2Nsb3VkL2xlYXJuL3doYXQtaXMtY2xvdWQtZGF0YWJhc2Ug8J+aqQoKClRoYXQncyBhbGwgZm9yIHRoaXMgYmxvZywgSSBob3BlIHlvdSB3aWxsIGxlYXJuIHNvbWV0aGluZyBuZXcuIEFuZCBmZWVsIGZyZWUgdG8gc2hhcmUgeW91ciB0aG91Z2h0cyBhbmQgZmVlZGJhY2ssIFRoYW5rcyBmb3IgcmVhZGluZy4KCkZlZWwgZnJlZSB0byByZWFjaCBvdXQgbWUg8J+RgAoKW1R3aXR0ZXJdKGh0dHBzOi8vdHdpdHRlci5jb20vQURJVFlBOTA1NDYxNzApIPCflrEKCltMaW5rZWRJbl0oaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2luL2FkaXR5YS1kYXMtN2IyMjc2MjAyKSDwn5axCgpbR2l0aHViXShodHRwczovL2dpdGh1Yi5jb20vQURJVFlBREFTMTk5OSkg8J+WsQoK