BAhJIgL7EDxwPlRoZSBBcGFjaGUgV2lja2V0IFBNQyBpcyBwcm91ZCB0byBhbm5vdW5jZSBBcGFjaGUgV2lja2V0IDcuMTYuMCE8L3A+Cgo8cD5BcGFjaGUgV2lja2V0IGlzIGFuIG9wZW4gc291cmNlIEphdmEgY29tcG9uZW50IG9yaWVudGVkIHdlYiBhcHBsaWNhdGlvbgpmcmFtZXdvcmsgdGhhdCBwb3dlcnMgdGhvdXNhbmRzIG9mIHdlYiBhcHBsaWNhdGlvbnMgYW5kIHdlYiBzaXRlcyBmb3IKZ292ZXJubWVudHMsIHN0b3JlcywgdW5pdmVyc2l0aWVzLCBjaXRpZXMsIGJhbmtzLCBlbWFpbCBwcm92aWRlcnMsIGFuZAptb3JlLiBZb3UgY2FuIGZpbmQgbW9yZSBhYm91dCBBcGFjaGUgV2lja2V0IGF0IGh0dHBzOi8vd2lja2V0LmFwYWNoZS5vcmc8L3A+Cgo8cD5UaGlzIHJlbGVhc2UgbWFya3MgYW5vdGhlciBtaW5vciByZWxlYXNlIG9mIFdpY2tldCA3LiBXZQp1c2Ugc2VtYW50aWMgdmVyc2lvbmluZyBmb3IgdGhlIGRldmVsb3BtZW50IG9mIFdpY2tldCwgYW5kIGFzIHN1Y2ggbm8KQVBJIGJyZWFrcyBhcmUgcHJlc2VudCBicmVha3MgYXJlIHByZXNlbnQgaW4gdGhpcyByZWxlYXNlIGNvbXBhcmVkIHRvCjcuMC4wLjwvcD4KCjxPUFRJT05BTD4gTmV3IGFuZCBub3Rld29ydGh5CjxPUFRJT05BTD4gLS0tLS0tLS0tLS0tLS0tLS0tCjxPUFRJT05BTD4KVXNpbmcgdGhpcyByZWxlYXNlCi0tLS0tLS0tLS0tLS0tLS0tLQoKV2l0aCBBcGFjaGUgTWF2ZW4gdXBkYXRlIHlvdXIgZGVwZW5kZW5jeSB0byAoYW5kIGRvbid0IGZvcmdldCB0bwp1cGRhdGUgYW55IG90aGVyIGRlcGVuZGVuY2llcyBvbiBXaWNrZXQgcHJvamVjdHMgdG8gdGhlIHNhbWUgdmVyc2lvbik6CgoKPGZpZ3VyZSBjbGFzcz0iaGlnaGxpZ2h0Ij48cHJlPjxjb2RlIGNsYXNzPSJsYW5ndWFnZS14bWwiIGRhdGEtbGFuZz0ieG1sIj48c3BhbiBjbGFzcz0ibnQiPiZsdDtkZXBlbmRlbmN5Jmd0Ozwvc3Bhbj4KICAgIDxzcGFuIGNsYXNzPSJudCI+Jmx0O2dyb3VwSWQmZ3Q7PC9zcGFuPm9yZy5hcGFjaGUud2lja2V0PHNwYW4gY2xhc3M9Im50Ij4mbHQ7L2dyb3VwSWQmZ3Q7PC9zcGFuPgogICAgPHNwYW4gY2xhc3M9Im50Ij4mbHQ7YXJ0aWZhY3RJZCZndDs8L3NwYW4+d2lja2V0LWNvcmU8c3BhbiBjbGFzcz0ibnQiPiZsdDsvYXJ0aWZhY3RJZCZndDs8L3NwYW4+CiAgICA8c3BhbiBjbGFzcz0ibnQiPiZsdDt2ZXJzaW9uJmd0Ozwvc3Bhbj43LjE2LjA8c3BhbiBjbGFzcz0ibnQiPiZsdDsvdmVyc2lvbiZndDs8L3NwYW4+CjxzcGFuIGNsYXNzPSJudCI+Jmx0Oy9kZXBlbmRlbmN5Jmd0Ozwvc3Bhbj48L2NvZGU+PC9wcmU+PC9maWd1cmU+CgoKT3IgZG93bmxvYWQgYW5kIGJ1aWxkIHRoZSBkaXN0cmlidXRpb24geW91cnNlbGYsIG9yIHVzZSBvdXIKY29udmVuaWVuY2UgYmluYXJ5IHBhY2thZ2UgeW91IGNhbiBmaW5kIGhlcmU6CgogKiBEb3dubG9hZDogaHR0cDovL3dpY2tldC5hcGFjaGUub3JnL3N0YXJ0L3dpY2tldC03LnguaHRtbCNtYW51YWxseQoKPCEtLW1vcmUtLT4KClVwZ3JhZGluZyBmcm9tIGVhcmxpZXIgdmVyc2lvbnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKSWYgeW91IHVwZ3JhZGUgZnJvbSA3LnkueiB0aGlzIHJlbGVhc2UgaXMgYSBkcm9wIGluIHJlcGxhY2VtZW50LiBJZgp5b3UgY29tZSBmcm9tIGEgdmVyc2lvbiBwcmlvciB0byA3LjAuMCwgcGxlYXNlIHJlYWQgb3VyIFdpY2tldCA3Cm1pZ3JhdGlvbiBndWlkZSBmb3VuZCBhdAoKICogaHR0cDovL3MuYXBhY2hlLm9yZy93aWNrZXQ3bWlncmF0ZQoKSGF2ZSBmdW4hCgrigJQgVGhlIFdpY2tldCB0ZWFtCgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgogICAgVGhlIHNpZ25hdHVyZXMgZm9yIHRoZSBzb3VyY2UgcmVsZWFzZSBhcnRlZmFjdHM6CgogICAgClNpZ25hdHVyZSBmb3IgYXBhY2hlLXdpY2tldC03LjE2LjAuemlwOgoKPGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij48cHJlPgotLS0tLUJFR0lOIFBHUCBTSUdOQVRVUkUtLS0tLQoKaVFJekJBQUJDZ0FkRmlFRTBhNllaSEMxcEp3K2FpZXloNDhCK3FqVFZ1RUZBbDRRb2lBQUNna1FoNDhCK3FqVApWdUVjTWcvL1YvSExnQWVGelN5dmRqK0dTdnRxM3I4YVpnbVRoK1RMSjV6TWlGVnl1OWhmUG1oN1Q1VjNFWTMrClFuK0NIZFhoM2tEL0c2akxZQWhFVXc5aXFVNWR1eEZxQnFYUnpkVHRtSXd4SzJWVGRmSTJpSmh5VG5tS0dYUzgKdmFVVjhjakM4WU1YdEVqa2liUUdFcmJiVjVqWFJ3b2hGMDI5RjdaY2sxQTcrVTBQTjU4SzBmZU16N21YTUlYVApHeGwzZEMwd1hZYTFTcHRjdGplWlNBeFZDUjRRWmMvdHhJdkNhaDAwTGxWMEdEWTI0WE1meG92ZDZvRHNiNitXCitWanVOYkFtbGVWN0Q1MzRJUFRoOVZFOU9iY0h3cVhpN0piUGs1Zi91TDNCVVRpcytiYVpwMGUrM2tHcFk0SWwKdUxkVWNHRjRqdURqYytsWTFwaHhvUGJuaTRYbkhmRWtEUUxlejQwL2psTVdPM1Z4N0JVa0NGVm9sRk9DNWhBYQo4aG1GVVJYU3l0WFhERDRmMy95Q01acjk1U2RoNFNQK0ZlUXRyeWNrRTdLMDhscmJsT0hhUUpuL2RGMDh0Y1ZOClFPckZKNWsxTGZEazNiaUI3VThiekdRSjFweTBVY3RLeUR6dzE1UVkzRlFiL3N0eXBuL2JyczdoTUFYTFFiWnAKa251OUFodVRHdnUyUTJrcXFuNzhVd0crenE2aGNaQlZSNCtYR2tYOUtITXhOM0sxNm5LQm5rZHYydjZiTHQxRQpReXcxbEJaajIwVW8yZGtwaWR5TjZlc0R6WDhqOFVTOGMwQ055bGFrLzR4QTFlcjcrTXZraUFRaFZqRGx2cVRICkxiSU81UHlzemxxOW4xVnc2UlNaamJXbmhaTC9UdjdDSXV4NHpzZFRMWU1iYW9oWlBaTT0KPTlCVDAKLS0tLS1FTkQgUEdQIFNJR05BVFVSRS0tLS0tCjwvcHJlPjwvZGl2PgoKICAgIApTaWduYXR1cmUgZm9yIGFwYWNoZS13aWNrZXQtNy4xNi4wLnRhci5nejoKCjxkaXYgY2xhc3M9ImhpZ2hsaWdodCI+PHByZT4KLS0tLS1CRUdJTiBQR1AgU0lHTkFUVVJFLS0tLS0KCmlRSXpCQUFCQ2dBZEZpRUUwYTZZWkhDMXBKdythaWV5aDQ4QitxalRWdUVGQWw0UW9pQUFDZ2tRaDQ4QitxalQKVnVGRW9RLy9WeHNWd3F1SFJpNFpBSFFLNktPbEVtcVJ2RjFER3F1OUVhd3FiOFNRR05pcUFta1dFamtmSWFHMApnQndwWlVyMWcwQ1kyRjNOYlBRTXVQYW9rSW40MVFJR29lS0NNYXBDWXR6SThOamVFSEVCSHlkRHFzKzl2SEx3Cm1ibXVaZFplRm1yVUZIMURoaHVCWlk2WGdjenZsVEt4dzE3SFc2T0JrcUxxRTBHNldURlZqTURUbEZuWFBxT2QKN0lkWG1JZlN5bnhDU09SekR2d2paVXJ0UlNycmMvNlQxMGtpYUlETk5vQmt3cUJ2YTJEbmsyMGk2eUxnd29aVwpQQlp5am9zUWhLajBGZVA4UmZEMzBTNTFNZkozUU1mbFk5aU9ZZE4zb0d4eE5jQXhRQ0haWGt6WkEvZHF2TGNqClRCMVZKdG1KL08yd3VBU05EZmE4NUZtYkg3QitzRk00eXA2cllzVHNXTGNXRkxYbTZ5MnI4aUJFUjlBRDA0UDgKdlVicWg0czd4OHdXSFg0VDZuNXhNcThubFN5b01va0FFdStzRUEydmtkMzJhMXFyVVNuS2hJMHFKSzhYbGd6MQpEQ2VjYTJ0eHFXVFRyMnFtSzl4eWRCRWNOVW85dU5EUzZaNllwT1kzQVgzUDlvQTdUWEJLQkF5elJ2Wi9JNWFOCmlaVVZnWXd2R1BIN1ZmSUY3WVIzZlJCdmlrMkx3cGZBcTFrRTE5V1p1Z0tUQ1hXaWhnakhES2ZaS3hwbnpPTCsKcDUrV2NFbmY2TnpzSFN6b2FBVS9hejBXdmVtNHlDajJCNDl1WlVlTVpmcmdSb0x0L0RXQjRtT0JqL3VoYis4SwpHa04vdmVobjNkOVpISjc2SW1oa1YxRUdHZ2ZBa1NxMU83bkhFMkUyTnhyWk9WZThVZW89Cj0zckw5Ci0tLS0tRU5EIFBHUCBTSUdOQVRVUkUtLS0tLQo8L3ByZT48L2Rpdj4KCiAgICAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgojIyMgVGhpcyBSZWxlYXNlCgojIyMjIENIQU5HRUxPRyBmb3IgNy4xNi4wOgogICAgCiMjIyMjIEJ1ZwoKICogW1dJQ0tFVC02NTMxXSAtIENyYXNoIGluIFVuc2FmZS5nZXRPYmplY3Qgd2hlbiBydW5uaW5nIG9uIHRoZSBKOSBWTQogKiBbV0lDS0VULTY3MDRdIC0gSmF2YVNlcmlhbGl6ZXIuc2VyaWFsaXplIGNhdXNlcyB0aGUgSlZNIGNyYXNoICEKICogW1dJQ0tFVC02NzA2XSAtIFdlYnNvY2tldCBFbmRwb2ludCBsb2dzIGV4Y2VwdGlvbiB3aGVuIHVzZXIgbGVhdmVzIHBhZ2UKICogW1dJQ0tFVC02NzA3XSAtIFByb3BlcnR5IHNldHRlciBwYXJhbWV0ZXIgdHlwZSBpcyBhc3N1bWVkIHRvIGJlIGVxdWFsIHRvIGdldHRlciByZXR1cm4gdHlwZQogKiBbV0lDS0VULTY3MDhdIC0gRm9ybUNvbXBvbmVudCBzaG91bGQgcmVhZCBvbmx5IHRoZSBHRVQvUE9TVCBwYXJhbWV0ZXJzIG9mIHRoZSByZXF1ZXN0LCBub3QgYm90aAoKPC9PUFRJT05BTD48L09QVElPTkFMPjwvT1BUSU9OQUw+CgY6BkVU