ICAgIAogICAgICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lIG9yIG1vcmUKICAgICAgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZSBkaXN0cmlidXRlZCB3aXRoCiAgICAgIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4KICAgICAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUgdG8gWW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAKICAgICAgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgKICAgICAgdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICAgIAogICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAgICAKICAgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogICAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAogICAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogICAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCg0KVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSB0ZXh0IGRpc3BsYXllZCBieSB0aGUgJ2hlbHAnIGNvbW1hbmQgaW4gZmRiLg0KDQpJdCBpcyBkaXZpZGVkIGludG8gInRvcGljcyIuIEZvciBleGFtcGxlLCB3aGVuIGFuIGZkYiB1c2VyIHR5cGVzDQonaGVscCBicmVhaycsIHRoZSBbYnJlYWtdIHRvcGljIGJlbG93IGlzIGRpc3BsYXllZC4NCg0KVGhlIGZpcnN0IGFuZCBsYXN0IGxpbmVzIG9mIGVhY2ggdG9waWMgc2hvdWxkIGJlIGJsYW5rLg0KVGhleSBkb24ndCBnZXQgZGlzcGxheWVkIGluIGZkYjsgdGhleSBhcmUgaGVyZSBvbmx5DQp0byBtYWtlIHRoaXMgZmlsZSBtb3JlIGVhc2lseSByZWFkYWJsZS4NCg0KSGVscCB0ZXh0IHNob3VsZCBiZSBmb3JtYXR0ZWQgdG8gbm90IHdyYXANCndoZW4gZGlzcGxheWVkIG9uIGFuIDgwLWNoYXJhY3Rlci13aWRlIGNvbnNvbGUuDQpUaGUgZm9sbG93aW5nIGxpbmUgaXMgODAgY2hhcmFjdGVycyB3aWRlLg0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpbP10NCg0KTeTkcml0dORt5HT2biBrb21lbnRvLiBTefZ0dORt5Gxs5CAnaGVscCcgbuRldCBsdWV0dGVsb24ga2Fpa2lzdGEgDQpmZGIta29tZW5ub2lzdGEuDQoNClticmVha10NCg0KTeTkcml05CBrZXNrZXl0eXNrb2h0YSB0aWV0eWxs5CByaXZpbGzkIHRhaSB0aWV0eXNz5CB0b2ltaW5ub3NzYS4NCkVzaW1lcmtrZWrkOg0KICBicmVhayA4Nw0KICAgIEFzZXR0YWEga2Vza2V5dHlza29oZGFuIHJpdmlsbGUgODcgbnlreWlzZXNz5CB0aWVkb3N0b3NzYS4NCiAgYnJlYWsgbXlhcHAubXhtbDo1Ng0KICAgIEFzZXR0YWEga2Vza2V5dHlza29oZGFuIHJpdmlsbGUgNTYgdGllZG9zdG9zc2EgbXlhcHAubXhtbC4NCiAgYnJlYWsgIzM6MjkNCiAgICBBc2V0dGFhIGtlc2tleXR5c2tvaGRhbiByaXZpbGxlIDI5IHRpZWRvc3Rvc3NhICMzLg0KICBicmVhayBkb1RoaXMNCiAgICBBc2V0dGFhIGtlc2tleXR5c2tvaGRhbiB0b2ltaW50b29uIGRvVGhpcygpIG55a3lpc2Vzc+QgdGllZG9zdG9zc2EuDQogIGJyZWFrIG15YXBwLm14bWw6ZG9UaGF0DQogICAgQXNldHRhYSBrZXNrZXl0eXNrb2hkYW4gdG9pbWludG9vbiBkb1RoYXQoKSB0aWVkb3N0b3NzYSBteWFwcC5teG1sLg0KICBicmVhayAjMzpkb090aGVyDQogICAgQXNldHRhYSBrZXNrZXl0eXNrb2hkYW4gdG9pbWludG9vbiBkb090aGVyKCkgdGllZG9zdG9zc2EgIzMuDQogIGJyZWFrDQogICBBc2V0dGFhIGtlc2tleXR5c2tvaGRhbiBueWt5aXNlZW4gc3Vvcml0dXNvc29pdHRlZXNlZW4gbnlreWlzZW4gcGlub24gDQogICBrZWh5a3Nlc3PkLiBU5G3kIG9uIGh59mR5bGxpc3TkLCBrdW4ga2Vza2V5dHlzIHRhcGFodHV1IHBpbm9rZWh5a3NlZW4gDQogICBwYWxhdHRhZXNzYS4NClRpZWRvc3RvbmltZXQgamEgLW51bWVyb3QgbuRldCBzefZ0dORt5Gxs5CAnaW5mbyBzb3VyY2VzJyB0YWkgJ2luZm8gZmlsZXMnLg0KVG9pbWludG9qZW4gbmltZXQgbuRldCBzefZ0dORt5Gxs5CAnaW5mbyBmdW5jdGlvbnMnLg0KTHloZW5uZXR5dCB0aWVkb3N0b2plbiBqYSB0b2ltaW50b2plbiBuaW1ldCBoeXbka3N5dOTkbiwgam9zIG5lIG92YXQgc2VsdmnkLg0KSm9zIG3k5HJpdGV05ORuIHJpdmludW1lcm8sIGtlc2tleXR5cyB0YXBhaHR1dSBrb29kaW4gYWx1c3NhIHNpbGzkIHJpdmlsbOQuDQpKb3MgbeTkcml0ZXTk5G4gdG9pbWludG8sIGtlc2tleXR5cyB0YXBhaHR1dSBrb29kaW4gYWx1c3NhIHNpaW7kIHRvaW1pbm5vc3NhLg0KTGlz5HRpZXRvYSBrZXNrZXl0eXNrb2hkaXN0YSBu5GV0IGtvbWVubm9pbGxhICdjb21tYW5kcycgamEgJ2NvbmRpdGlvbicuDQoNCltidF0NCg0KUGlub24gYmFja3RyYWNlLg0KDQpbY2F0Y2hdDQoNCktlc2tleXR5cyBwb2lra2V1a3NlbiBzYXR0dWVzc2EuICBWYWlrdXR0YWEgdmFpbiBjYXRjaC1sb2hrb24ga+RzaXR0ZWxlbWlpbiANCnBvaWtrZXVrc2lpbi4gIEvkc2l0dGVsZW3kdHT2beR0IHBvaWtrZXVrc2V0IGtlc2tleXR05HbkdCBhaW5hIA0KdmlyaGVlbmtvcmphdWtzZW4uDQoNClZvaXQgcG9pc3RhYSBr5HNpdHRlbHlwaXN0ZWVuIERlbGV0ZS1rb21lbm5vbGxhLg0KDQpFc2ltZXJra2Vq5DoNCiAgY2F0Y2ggKg0KICAgIEtlc2tleXR5cyBtaW5r5CB0YWhhbnNhIHBvaWtrZXVrc2VuIHNhdHR1ZXNzYS4NCiAgY2F0Y2ggUmVmZXJlbmNlRXJyb3INCiAgICBLZXNrZXl0eXMgYWluYSBSZWZlcmVuY2VFcnJvci12aXJoZWVuIHN5bnR5ZXNz5Cwgb2xpcGEgc2Uga+RzaXRlbHR5IHRhaSBlaS4NCg0KW2NmXQ0KDQpO5Hl0dOTkIG55a3lpc2VuIHRpZWRvc3RvbiBuaW1lbiBqYSBudW1lcm9uIHRhaSB2YWlodGFhIG55a3lpc3TkIHRpZWRvc3RvYS4NCkVzaW1lcmtrZWrkOg0KICBjZg0KICAgIE7keXR05OQgbnlreWlzZW4gdGllZG9zdG9uIG5pbWVuIGphIG51bWVyb24uDQogIGNmIG15YXBwLm14bWwNCiAgICBWYWlodGFhIG55a3lpc2VuIHRpZWRvc3RvbiB0aWVkb3N0b2tzaSBteWFwcC5teG1sLg0KICBjZiAjMjkNCiAgICBWYWlodGFhIG55a3lpc2VuIHRpZWRvc3RvbiB0aWVkb3N0b2tzaSAjMjkuDQpUaWVkb3N0b25pbWV0IGphIC1udW1lcm90IG7kZXQgc3n2dHTkbeRsbOQgJ2luZm8gc291cmNlcycgdGFpICdpbmZvIGZpbGVzJy4NCkx5aGVubmV0eXQgdGllZG9zdG9uaW1ldCBoeXbka3N5dOTkbiwgam9zIG5lIG92YXQgc2VsdmnkLg0KS29tZW5ub24gJ2xpc3QnIGvkeXR05G1pbmVuIHRpZWRvc3Rvb24gdGVrZWUgdGllZG9zdG9zdGEgbnlreWlzZW4gdGllZG9zdG9uLg0KDQpbY2xlYXJdDQoNClBvaXN0YWEga2Vza2V5dHlza29oZGFuIHRpZXR5bHTkIHJpdmlsdOQgdGFpIHRpZXR5c3TkIHRvaW1pbm5vc3RhLg0KRXNpbWVya2tlauQ6DQogIGNsZWFyIDg3DQogICAgUG9pc3RhYSBrZXNrZXl0eXNrb2hkYW4gcml2aWx05CA4NyBueWt5aXNlc3PkIHRpZWRvc3Rvc3NhLg0KICBjbGVhciBteWFwcC5teG1sOjU2DQogICAgUG9pc3RhYSBrZXNrZXl0eXNrb2hkYW4gcml2aWx05CA1NiB0aWVkb3N0b3NzYSBteWFwcC5teG1sLg0KICBjbGVhciAjMzoyOQ0KICAgIFBvaXN0YWEga2Vza2V5dHlza29oZGFuIHJpdmlsdOQgMjkgdGllZG9zdG9zc2EgIzMuDQogIGNsZWFyIGRvVGhpcw0KICAgIFBvaXN0YWEga2Vza2V5dHlza29oZGFuIHRvaW1pbm5vc3RhIGRvVGhpcygpIG55a3lpc2Vzc+QgdGllZG9zdG9zc2EuDQogIGNsZWFyIG15YXBwLm14bWw6ZG9UaGF0DQogICAgUG9pc3RhYSBrZXNrZXl0eXNrb2hkYW4gdG9pbWlubm9zdGEgZG9UaGF0KCkgdGllZG9zdG9zc2EgbXlhcHAubXhtbC4NCiAgY2xlYXIgIzM6ZG9PdGhlcg0KICAgIFBvaXN0YWEga2Vza2V5dHlza29oZGFuIHRvaW1pbm5vc3RhIGRvT3RoZXIoKSB0aWVkb3N0b3NzYSAjMy4NCiAgY2xlYXINCiAgICBQb2lzdGFhIGtlc2tleXR5c2tvaGRhbiBueWt5aXNlbiB0aWVkb3N0b24gbnlreWlzZWx05CByaXZpbHTkLiANClRpZWRvc3RvbmltZXQgamEgLW51bWVyb3QgbuRldCBzefZ0dORt5Gxs5CAnaW5mbyBzb3VyY2VzJyB0YWkgJ2luZm8gZmlsZXMnLg0KVG9pbWludG9qZW4gbmltZXQgbuRldCBzefZ0dORt5Gxs5CAnaW5mbyBmdW5jdGlvbnMnLg0KTHloZW5uZXR5dCB0aWVkb3N0b2plbiBqYSB0b2ltaW50b2plbiBuaW1ldCBoeXbka3N5dOTkbiwgam9zIG5lIG92YXQgc2VsdmnkLg0KSm9zIG3k5HJpdGV05ORuIHJpdmludW1lcm8sIHNpbHTkIHJpdmlsdOQgcG9pc3RldGFhbiBrYWlra2kga2Vza2V5dHlza29oZGF0Lg0KSm9zIG3k5HJpdGV05ORuIHRvaW1pbnRvLCB0b2ltaW5ub24gYWx1c3NhIG9sZXZhdCBrZXNrZXl0eXNrb2hkYXQgcG9pc3RldGFhbi4NCg0KW2NvbnRpbnVlXQ0KDQpKYXRrYSBzdW9yaXR0YW1pc3RhIGtlc2tleXR5c2tvaGRhc3NhIHB5c+RodHltaXNlbiBq5GxrZWVuLg0KVORt5CBrb21lbnRvIGVpIGh5duRrc3kgYXJndW1lbnR0ZWphLg0KDQpbY29uZGl0aW9uXQ0KDQoNCk3k5HJpdOQga2Vza2V5dHlza29oZGFuIG51bWVybyBOLiBLZXNrZXl0eXMgdGFwYWh0dXUgdmFpbiwgam9zIENPTkQgdG90ZXV0dXUuDQpL5Hl0dPYgb24gYGNvbmRpdGlvbiBOIENPTkQnLCBqb3NzYSBOIG9uIGtva29uYWlzbHVrdSBqYSBDT05EIG9uIGxhdXNla2UsIGpva2EgDQphcnZpb2lkYWFuIGFpbmEsIGt1biBrZXNrZXl0eXNrb2h0YSBOIHNhYXZ1dGV0YWFuLg0KDQpbY29tbWFuZHNdDQoNCk3k5HJpdOQga29tZW5ub3QsIGpvdGthIHN1b3JpdGV0YWFuLCBrdW4gdPZybeR05ORuIGtlc2tleXR5c2tvaHRhYW4uDQpBbm5hIGtlc2tleXR5c2tvaGRhbiBudW1lcm8gYXJndW1lbnR0aW5hIGBjb21tYW5kc2Ata29tZW5ub24gauRsa2Vlbi4NCkpvcyBhcmd1bWVudHRpYSBlaSBhbm5ldGEsIGtvaHRlZW5hIG9sZXZhIGtlc2tleXR5c2tvaHRhIG3k5HJpdGV05ORuIHZpaW1laXNlbuQuDQpLb21lbm5vdCBhbGthdmF0IHNldXJhYXZhbHRhIHJpdmlsdOQuDQpLaXJqb2l0YSByaXZpLCBqb2thIHNpc+RsdOQgc2FuYW4gImVuZCIsIG1lcmtpdHNlbeTkbiBrb2h0YWEsIG1pc3PkIGtvbWVubm90IA0KbG9wcHV2YXQuDQpN5ORyaXR05G3kbGzkIGVoZG9uICJzaWxlbnQiIGVuc2ltbeRpc2Vrc2kgcml2aWtzaSB0ZWV0IGtlc2tleXR5c2tvaGRhc3RhIA0KaGlsamFpc2VuLiBU5Gxs9mluIG1pdOTkbiBlaSB0dWxvc3RldGEsIGt1biBrb2h0YSBzYWF2dXRldGFhbiwgbHVrdXVuIG90dGFtYXR0YSANCmtvbWVubm9uIHR1bG9zdGFtYWEgdHVsb3N0ZXR0YS4NCkVzaW1lcmtraToNCiAgKGZkYikgY29tbWFuZHMNCiAgS2lyam9pdGEga29tZW5ub3Qgc2l05CB2YXJ0ZW4sIGt1biBrZXNrZXl0eXNrb2h0YSAxIHR1bGVlIHZhc3RhYW4sIHlrc2kgDQogIGtvbWVudG8gcml2aWxsZS4NCiAgUOTkdOQgcml2aWxs5Cwgam9sbGEgbHVrZWUgdmFpbiAnZW5kJy4NCiAgPncNCiAgPmVuZA0KDQpbZGVsZXRlXQ0KDQpQb2lzdGEgeWtzaSB0YWkgdXNlYW1waSBrZXNrZXl0eXNrb2h0YS4NCkVzaW1lcmtrZWrkOg0KICBkZWxldGUNCiAgICBQb2lzdGFhIGthaWtraSBrZXNrZXl0eXNrb2hkYXQuDQogIGRlbGV0ZSAyIDUNCiAgICBQb2lzdGFhIGtlc2tleXR5c2tvaGRhdCAjMiBqYSAjNS4NCk7kZXQga2Vza2V5dHlza29odGllbiBudW1lcm90IHN59nR05G3kbGzkICdpbmZvIGJyZWFrcG9pbnRzJy4NCg0KW2RpcmVjdG9yeV0NCg0KTeTkcml05CBsdWV0dGVsbyBoYWtlbWlzdG9pc3RhLCBqb2lzdGEgZmRiIGV0c2lpIGzkaGRldGllZG9zdG9qYS4NCg0KRXNpbWVya2tlauQ6DQoNCiAgZGlyZWN0b3J5DQogICAgUGFsYXV0dGFhIGx1ZXR0ZWxvbiBvbGV0dXNhc2V0dWtzaWluLiBMdWV0dGVsbyBzaXPkbHTk5CBzaWxsb2luIGhha2VtaXN0b24sIA0KICAgIGpvc3NhIGzkaGRldGllZG9zdG8ga29vdHRpaW4gb2JqZWt0aWtvb2Rpa3NpLCBqYSBzZW4gauRsa2VlbiBueWt5aXNlbiANCiAgICBoYWtlbWlzdG9uLg0KDQogIGRpcmVjdG9yeSBDOlxNeVNvdXJjZSAgICAgICAgKFdpbmRvd3MpDQogIGRpcmVjdG9yeSAvTXlTb3VyY2UgICAgICAgICAgKE1hYykNCiAgICBMaXPk5CBt5ORyaXRldHluIGhha2VtaXN0b24gc2VuIGhha2VtaXN0b2x1ZXR0ZWxvbiBhbGt1dW4sIGpvc3RhIGzkaGRldHTkIA0KICAgIGhhZXRhYW4uICBKb3MgaGFldGFhbiBlc2ltZXJraWtzaSBsdW9rYW4gbXlwYWNrYWdlLk15Q2xhc3MgbORoZGV0dOQsIA0KICAgIHZpcmhlZW5rb3JqYXVzdG9pbWludG8gZXRzaWkgbORoZGV0dOQgc2Vr5CBrYW5zaW9zdGEgDQogICAgQzpcTXlTb3VyY2VcbXlwYWNrYWdlXE15Q2xhc3MuYXMgZXR05CBrYW5zaW9zdGEgQzpcTXlTb3VyY2VcTXlDbGFzcy5hcy4NCg0KICBkaXJlY3RvcnkgQzpcRGlyMTtDOlxEaXIyICAgIChXaW5kb3dzIJYga+R5dOQgcGlsa2t1YSAnOycgZXJvdHRpbWVuYSkNCiAgZGlyZWN0b3J5IC9EaXIxOi9EaXIyICAgICAgICAoTWFjIJYga+R5dOQgcGlzdGV0dOQgJzonIGVyb3R0aW1lbmEpDQogICAgTGlz5OQgdXNlaXRhIGhha2VtaXN0b2phIHNlbiBoYWtlbWlzdG9sdWV0dGVsb24gYWxrdXVuLCBqb3N0YSBs5GhkZXR05CANCiAgICBoYWV0YWFuLg0KDQpOeWt5aXNlbiBsdWV0dGVsb24gbuRldCBzefZ0dORt5Gxs5CAnc2hvdyBkaXJlY3RvcmllcycuDQoNCltkaXNhYmxlXQ0KDQpQb2lzdGEga+R5dPZzdOQgeWtzaSB0YWkgdXNlaXRhIGtlc2tleXR5c2tvaHRpYSB0YWkgYXV0b21hYXR0aXNlbiBu5Hl09m4gDQppbG1hdWtzZXQuDQpFc2ltZXJra2Vq5DoNCiAgZGlzYWJsZQ0KICBkaXNhYmxlIGJyZWFrcG9pbnRzDQogICAgUG9pc3RhYSBr5Hl09nN05CBrYWlra2kga2Vza2V5dHlza29oZGF0Lg0KICBkaXNhYmxlIDIgNQ0KICBkaXNhYmxlIGJyZWFrcG9pbnRzIDIgNQ0KICAgIFBvaXN0YWEga+R5dPZzdOQga2Vza2V5dHlza29oZGF0ICMyIGphICM1Lg0KICBkaXNhYmxlIGRpc3BsYXkNCiAgICBQb2lzdGFhIGvkeXT2c3TkIGthaWtraSBhdXRvbWFhdHRpc2VuIG7keXT2biBpbG1hdWtzZXQuDQogIGRpc2FibGUgZGlzcGxheSAxIDMNCiAgICBQb2lzdGFhIGvkeXT2c3TkIGF1dG9tYWF0dGlzZW4gbuR5dPZuIGlsbWF1a3NldCAjMSBqYSAjMy4NCk7kZXQga2Vza2V5dHlza29odGllbiBudW1lcm90IHN59nR05G3kbGzkICdpbmZvIGJyZWFrcG9pbnRzJy4NCk7kZXQgYXV0b21hYXR0aXNlbiBu5Hl09m4gaWxtYXVzdGVuIG51bWVyb3Qgc3n2dHTkbeRsbOQgJ2luZm8gZGlzcGxheScuDQoNCltkaXNhc3NlbWJsZV0NCg0KKFZhaW4gQWN0aW9uU2NyaXB0IDIuIEVpIHR1a2VhIEFjdGlvblNjcmlwdCAzOm4gdmlyaGVlbmtvcmphdWtzZWxsZS4pDQoNClB1cmEgam9raW4gbORoZGVrb29kaW4gdGlldHR5IG9zYS4NCk9sZXR1cyBvbiBhaW5hIG55a3lpbmVuIHJpdmkuDQpTYW1vamEgYXJndW1lbnR0ZWphIHR1ZXRhYW4ga3VpbiBsaXN0LWtvbWVubm9zc2FraW4uDQpFc2ltZXJra2Vq5DoNCiAgZGlzYXNzZW1ibGUgODcNCiAgICBQdXJrYWEgbnlreWlzZW4gdGllZG9zdG9uIHJpdmluIDg3Lg0KICBkaXNhc3NlbWJsZSA4NyAxMDINCiAgICBQdXJrYWEgbnlreWlzZW4gdGllZG9zdG9uIHJpdml0IDg3ljEwMi4NCiAgZGlzYXNzZW1ibGUgZG9UaGlzDQogICAgICBQdXJrYWEgdG9pbWlubm9uIGRvVGhpcygpIG55a3lpc2Vzc+QgdGllZG9zdG9zc2EuDQpTZW4gbGlz5GtzaSwgZXR05CBr5Hl05HQgeWtzaW5rZXJ0YWlzaWEgcml2aW51bWVyb2l0YSB5bGzkIG9sZXZhbiBlc2ltZXJraW4gDQptdWthaXNlc3RpLCB2b2l0IG3k5HJpdHTk5CByaXZlauQgbXVpbGxha2luIHRhdm9pbGxhOg0KICAgbXlhcHAubXhtbA0KICAgICAgUml2aSAxIHRpZWRvc3Rvc3NhIG15YXBwLm14bWwuDQogICBteWFwcC5teG1sOmRvVGhhdA0KICAgICAgVG9pbWlubm9uIGRvVGhhdCgpIGVuc2ltbeRpbmVuIHJpdmkgdGllZG9zdG9zc2EgbXlhcHAubXhtbC4NCiAgIG15YXBwLm14bWw6NTYNCiAgICAgIFJpdmkgNTYgdGllZG9zdG9zc2EgbXlhcHAubXhtbC4NCiAgICMzDQogICAgICBSaXZpIDEgdGllZG9zdG9zc2EgIzMuDQogICAjMzpkb090aGVyDQogICAgICBTZSB0aWVkb3N0b24gIzMgcml2aSwgam9sbGEgdG9pbWludG8gZG9PdGhlcigpIGFsa2FhLg0KICAgIzM6MjkNCiAgICAgIFJpdmkgMjkgdGllZG9zdG9zc2EgIzMuDQoNCltkaXNwbGF5XQ0KDQpMaXPk5CBpbG1hdXMgYXV0b21hYXR0aXNlbiBu5Hl09m4gaWxtYXVzdGVuIGx1ZXR0ZWxvb24uDQpFc2ltZXJra2k6DQogIGRpc3BsYXkgZW1wbG95ZWUubmFtZQ0KICAgIExpc+TkICdlbXBsb3llZS5uYW1lJyBhdXRvbWFhdHRpc2VuIG7keXT2biBpbG1hdXN0ZW4gbHVldHRlbG9vbi4NCiAgICBKb2thIGtlcnRhLCBrdW4gZmRiIHB5c+RodHl5LCBhcnZvIGVtcGxveWVlLm5hbWUgdHVsZWUgbuRreXZpaW4uDQpU5G3kbiBrb21lbm5vbiBhcmd1bWVudHRpIG9uIHNhbWEga3VpbiBrb21lbm5vbGxlICdwcmludCcuDQpO5GV0IGF1dG9tYWF0dGlzZW4gbuR5dPZuIGlsbWF1a3NldCBqYSBuaWlkZW4gbnVtZXJvdCBzefZ0dORt5Gxs5CAnaW5mbyANCmRpc3BsYXknLg0KDQpbZG93bl0NCg0KVmFsaXRzZSBqYSB0dWxvc3RhIHTkbeRuIGt1dHN1bWEgcGlub2tlaHlzLg0KU2V1cmFhdmF0ICdpbmZvIGFyZ3VtZW50cyctIGphICdpbmZvIGxvY2FscycgLWtvbWVubm90IG7keXR05HbkdCB2YWxpdHVuIA0Ka2VoeWtzZW4gYXJndW1lbnRpdCBqYSBwYWlrYWxsaXNldCBtdXV0dHVqYXQuDQpLYXRzbyBrb21lbm5vdCAndXAnIGphICdmcmFtZScuIA0KDQpbZW5hYmxlXQ0KDQpPdGEga+R5dHT29m4geWtzaSB0YWkgdXNlaXRhIGtlc2tleXR5c2tvaHRpYSB0YWkgYXV0b21hYXR0aXNlbiBu5Hl09m4gaWxtYXVrc2V0Lg0KRXNpbWVya2tlauQ6DQogIGVuYWJsZQ0KICBlbmFibGUgYnJlYWtwb2ludHMNCiAgICBPdHRhYSBr5Hl0dPb2biBrYWlra2kga2Vza2V5dHlza29oZGF0Lg0KICBlbmFibGUgMiA1DQogIGVuYWJsZSBicmVha3BvaW50cyAyIDUNCiAgICBPdHRhYSBr5Hl0dPb2biBrZXNrZXl0eXNrb2hkYXQgIzIgamEgIzUuDQogIGVuYWJsZSBkaXNwbGF5DQogICAgT3R0YWEga+R5dHT29m4ga2Fpa2tpIGF1dG9tYWF0dGlzZW4gbuR5dPZuIGlsbWF1a3NldC4NCiAgZW5hYmxlIGRpc3BsYXkgMSAzDQogICAgT3R0YWEga+R5dHT29m4gYXV0b21hYXR0aXNlbiBu5Hl09m4gaWxtYXVrc2V0ICMxIGphICMzLg0KTuRldCBrZXNrZXl0eXNrb2h0aWVuIG51bWVyb3Qgc3n2dHTkbeRsbOQgJ2luZm8gYnJlYWtwb2ludHMnLg0KTuRldCBhdXRvbWFhdHRpc2VuIG7keXT2biBpbG1hdXN0ZW4gbnVtZXJvdCBzefZ0dORt5Gxs5CAnaW5mbyBkaXNwbGF5Jy4NCg0KW2ZpbGVdDQoNCk3k5HJpdOQgc292ZWxsdXMsIGpvc3RhIGtvcmphdGFhbiB2aXJoZWl05Cwga+R5bm5pc3TkbeR0dOQgc2l05C4NCkVzaW1lcmtrZWrkOg0KICBmaWxlIGh0dHA6Ly93d3cubXlzaXRlLmNvbS9teWFwcC5teG1sDQogICAgTeTkcml05CBNWE1MLXNvdmVsbHVzLCBqb3N0YSBrb3JqYXRhYW4gdmlyaGVpdOQuDQogIGZpbGUgbXlhcHAuc3dmDQogICAgTeTkcml05CBueWt5aXNlc3TkIGhha2VtaXN0b3N0YSBwYWlrYWxsaW5lbiBTV0YtdGllZG9zdG8sIGpvc3RhIGtvcmphdGFhbiANCiAgICB2aXJoZWl05C4NCiAgICBU5HNz5CB0YXBhdWtzZXNzYSAodmlyaGVlbmtvcmphdXN0aWVkb3Qgc2lz5Gx05HbkbikgdGllZG9zdG9uIG15YXBwLnN3ZCANCiAgICBwaXTk5CBzaWphaXRhIG159nMgbnlreWlzZXNz5CBoYWtlbWlzdG9zc2EuDQpLb21lbnRvIGVpIGvkeW5uaXN05CBzb3ZlbGx1c3RhLiBL5HlubmlzdOQgc292ZWxsdWtzZW4gdmlyaGVlbmtvcmphdXMgDQprb21lbm5vbGxhICdydW4nIGlsbWFuIGFyZ3VtZW50dGVqYS4NClNlbiBzaWphYW4sIGV0dOQga+R5dHTkaXNpdCBrb21lbnRvYSAnZmlsZSA8dGFyZ2V0PicgamEgc2VuIGrkbGtlZW4ga29tZW50b2EgDQoncnVuJywgdm9pdCB5a3NpbmtlcnRhaXNlc3RpIG3k5HJpdHTk5CBrb3JqYXR0YXZhbiBzb3ZlbGx1a3NlbiBrb21lbm5vbiAncnVuJyANCmFyZ3VtZW50aWtzaToNCiAgcnVuIGh0dHA6Ly9teXNpdGUuY29tL215YXBwLm14bWwNCiAgcnVuIG15YXBwLnN3Zg0KVm9pdCBtefZzIG3k5HLkdOQgdGllZG9zdG9uIHZpcmhlZW5rb3JqYXVrc2VuIGtvbWVudG9yaXZpbiBhcmd1bWVudGlsbGEsIGt1biANCmvkeW5uaXN05HQgZmRiOm46DQogIGZkYiBodHRwOi8vd3d3Lm15c2l0ZS5jb20vbXlhcHAubXhtbA0KICBmZGIgbXlhcHAuc3dmDQpU5HNz5CB0YXBhdWtzZXNzYSBzaW51biBlaSB0YXJ2aXRzZSBr5Hl0dOTkIGtvbWVudG9hICdmaWxlJyBlaWvkIGtvbWVudG9hICdydW4nLg0KSm9zIHN1b3JpdGF0IGtvbWVubm9uICdydW4nIG3k5HJpdHTkbeR0dOQgc292ZWxsdXN0YSB2aXJoZWVua29yamF1c3RhIHZhcnRlbiwgDQpmZGIgb2RvdHRhYSwga3VubmVzIGpva2luIHNvdmVsbHVzIG11b2Rvc3RhYSBzaWloZW4geWh0ZXlkZW4uDQoNCltmaW5pc2hdDQoNClN1b3JpdGEsIGt1bm5lcyBueWt5aW5lbiB0b2ltaW50byBwYWxhYS4NClTkbeQga29tZW50byBlaSBoeXbka3N5IGFyZ3VtZW50dGVqYS4NCg0KW2ZyYW1lXQ0KDQpWYWxpdHNlIGphIHR1bG9zdGEgam9raW4gdGlldHR5IHBpbm9rZWh5cy4NClTkbeQga29tZW50byBoeXbka3N5eSB2YWxpbm5haXNlbiBhcmd1bWVudGluOiBrZWh5a3NlbiBudW1lcm9uLg0KSm9zIGFyZ3VtZW50dGlhIGVpIG3k5HJpdGV05Cwgb2xldHVrc2VuYSBwYWxhdGFhbiBueWt5aXNlZW4geWxpbXDk5G4ga2VoeWtzZWVuIA0KKGtlaHlrc2VlbiAwKS4NCkVzaW1lcmtrZWrkOg0KICBmcmFtZSA0DQogIGZyYW1lDQpTZXVyYWF2YXQgJ2luZm8gYXJndW1lbnRzJy0gamEgJ2luZm8gbG9jYWxzJyAta29tZW5ub3QgbuR5dHTkduR0IHZhbGl0dW4gDQprZWh5a3NlbiBhcmd1bWVudGl0IGphIHBhaWthbGxpc2V0IG11dXR0dWphdC4NCkthdHNvIGtvbWVubm90ICd1cCcsICdkb3duJyBqYSAnYnQnLiANCg0KW2hhbmRsZV0NCg0KTeTkcml05CwgbWl0ZW4gZmRiIGvkc2l0dGVsZWUgRmxhc2ggUGxheWVyaW4gdmlyaGVldC4NCkVzaW1lcmtrZWrkOg0KICBoYW5kbGUgcmVjdXJzaW9uX2xpbWl0IHN0b3ANCiAgICBO5Hl05CBmZGI6c3PkIGlsbW9pdHVzIHZpcmhlZXN05CByZWN1cnNpb25fbGltaXQgamEgcHlz5Hl05Cwga3V0ZW4gDQogICAga2Vza2V5dHlza29oZGFzc2EuDQogIGhhbmRsZSBhbGwgcHJpbnQgbm9zdG9wDQogICAgTuR5dOQgaWxtb2l0dXMga2Fpa2lzdGEgdmlyaGVpc3TkIGZkYjpzc+QsIG11dHRhIORs5CBweXPkeXTkLg0KRW5zaW1t5GluZW4gYXJndW1lbnR0aSBvbiB2aXJoZWVuIG5pbWkgdGFpICdhbGwnLg0KTGlz5GFyZ3VtZW50aXQgb3ZhdCB0b2ltaW50b2phLCBqb3RrYSBrb3NrZXZhdCB2aXJoZXR05C4NClZpcmhlaWRlbiBuaW1ldCBu5GV0IHN59nR05G3kbGzkICdpbmZvIGhhbmRsZScuDQpUb2ltaW5ub3Qgb3ZhdCBwcmludC9ub3ByaW50IGphIHN0b3Avbm9zdG9wLg0KVG9pbWlubm9sbGEgJ3ByaW50JyBzYW5vbWEgdHVsb3N0ZXRhYW4gdORt5G4gdmlyaGVlbiBzYXR0dWVzc2EuDQpUb2ltaW5ub2xsYSAnc3RvcCcgcGFsYXRhYW4gdmlyaGVlbmtvcmphdXN0b2ltaW50b29uIHTkbeRuIHZpcmhlZW4gc2F0dHVlc3NhLiANClRvaW1pbnRvICdwcmludCcgc3Vvcml0ZXRhYW4gc2FtYWxsYS4NCg0KW2hlbHBdDQoNCk9ua28gZmRiIHNpbnVsbGUgdXVzaT8gTuRldCBzZW4gcGVydXN0aWVkb3Qgc3n2dHTkbeRsbOQgJ3R1dG9yaWFsJy4NCkx1ZXR0ZWxvIGZkYjpuIGtvbWVubm9pc3RhOg0KYnQgKGJ0KSAgICAgICAgICAgICBUdWxvc3RhIGthaWtraWVuIHBpbm9rZWh5c3RlbiBiYWNrdHJhY2UtbHVldHRlbG90Lg0KYnJlYWsgKGIpICAgICAgICAgICBN5ORyaXTkIGtlc2tleXR5c2tvaHRhIHRpZXR5bGzkIHJpdmlsbOQgdGFpIHRpZXR5c3PkIA0KICAgICAgICAgICAgICAgICAgICB0b2ltaW5ub3NzYS4NCmNhdGNoIChjYSkgICAgICAgICAgS2Vza2V5dHlzIHBvaWtrZXVrc2VuIHNhdHR1ZXNzYS4NCmNmIChjZikgICAgICAgICAgICAgTuR5dOQgbnlreWlzZW4gdGllZG9zdG9uIG5pbWkgamEgbnVtZXJvLg0KY2xlYXIgKGNsKSAgICAgICAgICBQb2lzdGEga2Vza2V5dHlza29odGEgdGlldHlsdOQgcml2aWx05CB0YWkgdGlldHlzdOQgDQogICAgICAgICAgICAgICAgICAgIHRvaW1pbm5vc3RhLg0KY29uZGl0aW9uIChjb25kKSAgICBL5Hl05CBlaGRvbGxpc3RhIGlsbWF1c3RhIGtlc2tleXR5c3Bpc3RlZXNz5CB0YWkgcG9pc3RhIA0KICAgICAgICAgICAgICAgICAgICBpbG1hdXMuDQpjb250aW51ZSAoYykgICAgICAgIEphdGthIHN1b3JpdHRhbWlzdGEga2Vza2V5dHlza29oZGFzc2EgcHlz5Gh0eW1pc2VuIGrkbGtlZW4uDQpjb21tYW5kcyAoY29tKSAgICAgIE3k5HJpdOQga29tZW5ub3QsIGpvdGthIHN1b3JpdGV0YWFuIGtlc2tleXR5c3Bpc3RlZXNlZW4gDQogICAgICAgICAgICAgICAgICAgIHNhYXZ1dHRhZXNzYS4NCmRlbGV0ZSAoZCkgICAgICAgICAgUG9pc3RhIGtlc2tleXR5c3Bpc3RlZXQgdGFpIGF1dG9tYWF0dGlzZW4gbuR5dPZuIGlsbWF1a3NldC4NCmRpcmVjdG9yeSAoZGlyKSAgICAgTGlz5OQgaGFrZW1pc3RvIGzkaGRldGllZG9zdG9qZW4gaGFrdXBvbGt1dW4uDQpkaXNhYmxlIChkaXNhYikgICAgIFBvaXN0YSBrZXNrZXl0eXNwaXN0ZWV0IHRhaSBhdXRvbWFhdHRpc2VuIG7keXT2biBpbG1hdWtzZXQgDQogICAgICAgICAgICAgICAgICAgIGvkeXT2c3TkLg0KZGlzYXNzZW1ibGUgKGRpc2FzKSBQdXJhIGzkaGRlcml2aXQgdGFpIC10b2ltaW5ub3QuDQpkaXNwbGF5IChkaXNwKSAgICAgIExpc+TkIGF1dG9tYWF0dGlzZW4gbuR5dPZuIGlsbWF1cy4NCmVuYWJsZSAoZSkgICAgICAgICAgT3RhIGtlc2tleXR5c3Bpc3RlZXQgdGFpIGF1dG9tYWF0dGlzZW4gbuR5dPZuIGlsbWF1a3NldCANCiAgICAgICAgICAgICAgICAgICAga+R5dHT29m4uDQpmaWxlIChmaWwpICAgICAgICAgIE3k5HJpdOQgc292ZWxsdWtzZW4gdmlyaGVlbmtvcmphdXMuDQpmaW5pc2ggKGYpICAgICAgICAgIFN1b3JpdGEsIGt1bm5lcyBueWt5aW5lbiB0b2ltaW50byBwYWxhYS4NCmhhbmRsZSAoaGFuKSAgICAgICAgTeTkcml05CwgbWl0ZW4gdmlyaGUga+RzaXRlbGzk5G4uDQpoZWxwIChoKSAgICAgICAgICAgIE7keXTkIGZkYi1rb21lbnRvamVuIG9oamUuDQpob21lIChobykgICAgICAgICAgIE3k5HJpdOQgbHVldHRlbG9zaWphaW50aSBwYWlra2FhbiwgbWlzc+Qgc3Vvcml0dGFtaW5lbiANCiAgICAgICAgICAgICAgICAgICAga2Vza2V5dGV05ORuLg0KaW5mbyAoaSkgICAgICAgICAgICBO5Hl05CB0aWVkb3Qgb2hqZWxtYXN0YSwgam9zdGEga29yamF0YWFuIHZpcmhlaXTkLg0Ka2lsbCAoaykgICAgICAgICAgICBMb3BldGEgc2VuIG9oamVsbWFuIHN1b3JpdHRhbWluZW4sIGpvc3RhIGtvcmphdGFhbiB2aXJoZWl05C4NCmxpc3QgKGwpICAgICAgICAgICAgTGlz5OQgbeTkcml0ZXR0eSB0b2ltaW50byB0YWkgcml2aSBsdWV0dGVsb29uLg0KbmV4dCAobikgICAgICAgICAgICBBc2tlbGx1dGEgb2hqZWxtYS4NCnByaW50IChwKSAgICAgICAgICAgVHVsb3N0YSBFWFAtbXV1dHR1amFuIGFydm8uDQpwd2QgKHB3KSAgICAgICAgICAgIFR1bG9zdGEgdHn2aGFrZW1pc3RvLg0KcXVpdCAocSkgICAgICAgICAgICBTdWxqZSBmZGIuDQpydW4gKHIpICAgICAgICAgICAgIEvkeW5uaXN05CBvaGplbG1hLCBqb25rYSB2aXJoZWV0IG9uIGtvcmphdHR1Lg0Kc2V0IChzZSkgICAgICAgICAgICBBc2V0YSBtdXV0dHVqYW4gYXJ2by4NCnNvdXJjZSAoc28pICAgICAgICAgTHVlIGZkYi1rb21lbm5vdCB0aWVkb3N0b3N0YS4NCnN0ZXAgKHMpICAgICAgICAgICAgQXNrZWxsdXRhIG9oamVsbWEsIGt1bm5lcyBvaGplbG1hIHNhYXZ1dHRhYSBlcmkgbORoZGVyaXZpbi4NCnR1dG9yaWFsICh0KSAgICAgICAgTuR5dOQgb3BldHVzb2hqZWxtYSwgam9zc2Egc2VsaXRldOTkbiBmZGI6biBr5Hl0dPYuDQp1bmRpc3BsYXkgKHUpICAgICAgIFBvaXN0YSBhdXRvbWFhdHRpc2VuIG7keXT2biBpbG1hdXMuDQp2aWV3c3dmICh2KSAgICAgICAgIE3k5HJpdOQgdGFpIHR5aGplbm7kIHN1b2RhdGluIHRpZWRvc3RvbHVldHRlbG9sbGUgc3dmOm4gDQogICAgICAgICAgICAgICAgICAgIHBlcnVzdGVlbGxhLg0Kd2F0Y2ggKHdhKSAgICAgICAgICBMaXPk5CBrYXRzZWx1a29odGEgYW5uZXR0dXVuIG11dXR0dWphYW4uDQp3aGF0ICh3aCkgICAgICAgICAgIE7keXR05OQgbXV1dHR1amFuIHNpc+RsbPZuLg0Kd2hlcmUgKHcpICAgICAgICAgICBTYW1hIGt1aW4gYnQuDQpLaXJqb2l0YSAnaGVscCcgamEgc2VuIGrkbGtlZW4ga29tZW5ub24gbmltaSwgbmlpbiBu5GV0IHTkeWRldCBr5Hl0dPZvaGplZXQuDQoNCltob21lXQ0KDQpN5ORyaXTkIGx1ZXR0ZWxvc2lqYWludGkgcGFpa2thYW4sIG1pc3PkIHN1b3JpdHRhbWluZW4ga2Vza2V5dGV05ORuLg0KDQpbaW5mb10NCg0KWWxlaXNrb21lbnRvLCBqb2xsYSBu5Ghk5ORuIGVyaWxhaXNpYSB0aWV0b2phIG9oamVsbWFzdGEsIGpvc3RhIGtvcmphdGFhbiANCnZpcmhlaXTkLg0KTHVldHRlbG8gaW5mby1hbGlrb21lbm5vaXN0YToNCmluZm8gYXJndW1lbnRzIChpIGEpICAgIE55a3lpc2VuIHBpbm9rZWh5a3NlbiBhcmd1bWVudHRpbXV1dHR1amF0Lg0KaW5mbyBicmVha3BvaW50cyAoaSBiKSAgS+R5dHTkauRuIGFzZXRldHRhdmllbiBrZXNrZXl0eXNrb2h0aWVuIHRpbGF0Lg0KaW5mbyBkaXNwbGF5IChpIGQpICAgICAgTuR5dOQgbHVldHRlbG8gYXV0b21hYXR0aXNlbiBu5Hl09m4gaWxtYXVrc2lzdGEuDQppbmZvIGZpbGVzIChpIGYpICAgICAgICBOaWlkZW4ga29odGVpZGVuIGphIHRpZWRvc3RvamVuIG5pbWV0LCBqb2lzdGEga29yamF0YWFuIA0KICAgICAgICAgICAgICAgICAgICAgICAgdmlyaGVpdOQuDQppbmZvIGZ1bmN0aW9ucyAoaSBmdSkgICBLYWlra2kgdG9pbWludG9qZW4gbmltZXQuDQppbmZvIGhhbmRsZSAoaSBoKSAgICAgICBNaXRlbiB2aXJoZSBr5HNpdGVsbOTkbi4NCmluZm8gbG9jYWxzIChpIGwpICAgICAgIE55a3lpc2VuIHBpbm9rZWh5a3NlbiBwYWlrYWxsaXNldCBtdXV0dHVqYXQuDQppbmZvIHNjb3BlY2hhaW4gKGkgc2MpICBOeWt5aXNlbiBwaW5va2VoeWtzZW4gdmFpa3V0dXNhbHVla2V0anUuDQppbmZvIHNvdXJjZXMgKGkgc28pICAgICBM5GhkZXRpZWRvc3RvdCBvaGplbG1hc3NhLg0KaW5mbyBzdGFjayAoaSBzKSAgICAgICAgUGlub24gYmFja3RyYWNlLg0KaW5mbyBzd2ZzIChpIHN3KSAgICAgICAgVORt5G4gaXN0dW5ub24gc3dmLWx1ZXR0ZWxvLg0KaW5mbyB0YXJnZXRzKGkgdCkgICAgICAgU292ZWxsdXMsIGpvc3RhIGtvcmphdGFhbiB2aXJoZWl05C4NCmluZm8gdmFyaWFibGVzIChpIHYpICAgIEthaWtraSB5bGVpc3RlbiBqYSBzdGFhdHRpc3RlbiBtdXV0dHVqaWVuIG5pbWV0Lg0KS2lyam9pdGEgJ2hlbHAgaW5mbycgamEgc2VuIGrkbGtlZW4gaW5mby1hbGlrb21lbm5vbiBuaW1pLCBuaWluIG7kZXQgdOR5ZGV0IA0Ka+R5dHT2b2hqZWV0Lg0KDQpbaW5mbyBhcmd1bWVudHNdDQoNCk7keXTkIG55a3lpc2VuIHBpbm9rZWh5a3NlbiBhcmd1bWVudGl0Lg0KDQpbaW5mbyBicmVha3BvaW50c10NCg0KTuR5dOQga2Fpa2tpZW4ga2Vza2V5dHlza29odGllbiBqYSBrYXRzZWx1a29odGllbiB0aWxhLg0KVHlwZS1zYXJha2tlZXN0YSBu5Gt5eSBqb21waWt1bXBpIG7kaXN05DoNCiAgIGJyZWFrcG9pbnQgICAtIHRhdmFsbGluZW4ga2Vza2V5dHlza29odGENCiAgIHdhdGNocG9pbnQgICAtIGthdHNlbHVrb2h0YQ0KRGlzcC1zYXJha2Ugc2lz5Gx05OQgam9ua2luIHNldXJhYXZpc3RhOiAna2VlcCcsICdkZWwnLCAnZGlzJy4gVORt5CBrZXJ0b28sIA0KbWl05CBrZXNrZXl0eXNrb2hkYXNzYSB0YXBhaHR1dS4gVmFpaHRvZWh0byAnZGlzJyB0YXJrb2l0dGFhIHNpdOQsIGV0dOQgDQprZXNrZXl0eXNrb2h0YSBwb2lzdGV0YWFuIGvkeXT2c3TkLiBWYWlodG9laHRvICdkZWwnIHRhcmtvaXR0YWEgc2l05CwgZXR05CANCmtlc2tleXR5c2tvaHRhIHBvaXN0ZXRhYW4uICANCidBZGRyZXNzJy1zYXJha2Uga2VydG9vIG9zb2l0dGVlbi4gJ1doYXQnLXNhcmFrZSBrZXJ0b28gdGllZG9zdG9uL3JpdmludW1lcm9uLiANCg0KW2luZm8gZGlzcGxheV0NCg0KTuR5dOQgbHVldHRlbG8gYXV0b21hYXR0aXNlbiBu5Hl09m4gaWxtYXVrc2lzdGEgamEgbmlpZGVuIG51bWVyb2lzdGEuDQoNCltpbmZvIGZpbGVzXQ0KDQpO5Hl05CB0aWVkb3N0b2plbiBuaW1ldCBqYSBudW1lcm90IHNvdmVsbHVrc2VsbGUsIGpvc3RhIGtvcmphdGFhbiB2aXJoZWl05CwgDQptdWthYW4gbHVldHR1bmEgbORoZGV0aWVkb3N0b3QsIGtlaHlzdGllZG9zdG90IGphIGF1dG9tYWF0dGlzZXN0aSBsdW9kdXQgDQp0aWVkb3N0b3QuDQpFc2ltZXJra2Vq5DoNCiAgaW5mbyBmaWxlcw0KICAgIE7keXR05OQgYWFra29zauRyamVzdHlrc2Vzc+Qga2Fpa2tpIHRpZWRvc3RvdCBsdW9rYW4gbXVrYWFuLg0KICBpbmZvIGZpbGVzIG15DQogIGluZm8gZmlsZXMgbXkqDQogICAgTuR5dHTk5CBhYWtrb3Nq5HJqZXN0eWtzZXNz5CBrYWlra2kgdGllZG9zdG90LCBqb2lkZW4gbmltaSBhbGthYSAibXkiLg0KICBpbmZvIGZpbGVzICouYXMNCiAgICBO5Hl0dOTkIGFha2tvc2rkcmplc3R5a3Nlc3PkIGthaWtraSB0aWVkb3N0b3QsIGpvaWRlbiBuaW1pIHDk5HR0eXkgIi5hcyIuDQogIGluZm8gZmlsZXMgKmZvbyoNCiAgICBO5Hl0dOTkIGFha2tvc2rkcmplc3R5a3Nlc3PkIGthaWtraSB0aWVkb3N0b3QsIGpvaWRlbiBuaW1lZW4gc2lz5Gx0eXkgImZvbyIuDQpUaWVkb3N0b3QgbuR5dGV05ORuIG11b2Rvc3NhIG5hbWUjTiwgam9zc2EgTiBvbiB0aWVkb3N0b24gbnVtZXJvLg0KTW9uaXNzYSBrb21lbm5vaXNzYSB0aWVkb3N0b24gbmltZW4gdm9pIGtvcnZhdGEgI04uDQoNCltpbmZvIGZ1bmN0aW9uc10NCg0KTuR5dOQgdG9pbWludG9qZW4gbmltZXQuDQpFc2ltZXJra2Vq5DoNCiAgaW5mbyBmdW5jdGlvbnMgLg0KICAgIE7keXTkIGthaWtraSB0b2ltaW5ub3QgbnlreWlzZXNz5CB0aWVkb3N0b3NzYS4NCiAgaW5mbyBmdW5jdGlvbnMgbXlhcHAubXhtbA0KICAgIE7keXTkIGthaWtraSB0b2ltaW5ub3QgdGllZG9zdG9zc2EgbXlhcHAubXhtbC4NCiAgaW5mbyBmdW5jdGlvbnMgIzMNCiAgICBO5Hl05CBrYWlra2kgdG9pbWlubm90IHRpZWRvc3Rvc3NhICMzLg0KICBpbmZvIGZ1bmN0aW9ucw0KICAgIE7keXTkIGthaWtraSB0b2ltaW5ub3Qga2Fpa2lzc2EgdGllZG9zdG9pc3NhLg0KVGllZG9zdG9uaW1ldCBqYSAtbnVtZXJvdCBu5GV0IHN59nR05G3kbGzkICdpbmZvIHNvdXJjZXMnIHRhaSAnaW5mbyBmaWxlcycuDQpMeWhlbm5ldHl0IHRpZWRvc3RvbmltZXQgaHl25GtzeXTk5G4sIGpvcyBuZSBvdmF0IHNlbHZp5C4NCg0KW2luZm8gaGFuZGxlXQ0KDQpO5Hl05CwgbWl05CBmZGIgdGVrZWUsIGt1biBGbGFzaCBQbGF5ZXJpc3PkIHRhcGFodHV1IHZpcmhlLg0KRXNpbWVya2tlauQ6DQogIGluZm8gaGFuZGxlDQogICAgTuR5dOQsIG1pdGVuIGZkYiBr5HNpdHRlbGVlIGthaWtraSB2aXJoZWV0Lg0KICBpbmZvIGhhbmRsZSByZWN1cnNpb25fbGltaXQNCiAgICBO5Hl05CwgbWl0ZW4gZmRiIGvkc2l0dGVsZWUgdmlyaGVlbiByZWN1cnNpb25fbGltaXQuDQoNCltpbmZvIGxvY2Fsc10NCg0KTuR5dOQgbnlreWlzZW4gcGlub2tlaHlrc2VuIHBhaWthbGxpc2V0IG11dXR0dWphdC4NCg0KW2luZm8gc2NvcGVjaGFpbl0NCg0KTuR5dOQgbnlreWlzZW4gcGlub2tlaHlrc2VuIHZhaWt1dHVzYWx1ZWtldGp1LiAgVmFpa3V0dXNhbHVla2V0anUgb24gDQpvYmpla3RpbHVldHRlbG8sIGpvc3NhIEZsYXNoIFBsYXllciBzdW9yaXR0YWEgaGF1biB5cml0dORlc3Pk5G4gcmF0a2Fpc3RhIA0Kc3ltYm9saW4gbmltZW4uDQoNCltpbmZvIHNvdXJjZXNdDQoNCk7keXTkIGzkaGRldGllZG9zdG9qZW4gbmltZXQgamEgbnVtZXJvdCBzb3ZlbGx1a3NlbGxlLCBqb3N0YSBrb3JqYXRhYW4gdmlyaGVpdOQuDQpFaSBzaXPkbGzkIGtlaHlzdGllZG9zdG9qYSBqYSBhdXRvbWFhdHRpc2VzdGkgbHVvdHVqYSB0aWVkb3N0b2phLg0KVGllZG9zdG90IG7keXRldOTkbiBtdW9kb3NzYSBuYW1lI04sIGpvc3NhIE4gb24gdGllZG9zdG9uIG51bWVyby4NCk1vbmlzc2Ega29tZW5ub2lzc2EgdGllZG9zdG9uIG5pbWVuIHZvaSBrb3J2YXRhICNOLg0KDQpbaW5mbyBzdGFja10NCg0KUGlub24gYmFja3RyYWNlLg0KDQpbaW5mbyBzd2ZzXQ0KDQpO5Hl05CB2aXJoZWVua29yamF1c2lzdHVubm9uIHR1bnRlbWF0IHN3Zi10aWVkb3N0b3QuICBLb21lbm5vbGxhICd2aWV3c3dmJyBu5GV0IA0KbGlz5HRpZXRvamEgc2lpdOQsIG1pdGVuIHRpZWRvc3RvbHVldHRlbG8gdm9pZGFhbiBzdW9kYXR0YWEgc3dmLW5pbWVuIA0KcGVydXN0ZWVsbGEuIA0KDQpbaW5mbyB0YXJnZXRzXQ0KDQpO5Hl05CBVUkwgKGh0dHA6IHRhaSB0aWVkb3N0bzopIHNvdmVsbHVrc2VsbGUsIGpvc3RhIGtvcmphdGFhbiB2aXJoZWl05C4NCg0KW2luZm8gdmFyaWFibGVzXQ0KDQpO5Hl05CBrYWlra2kgeWxlaXN0ZW4gamEgc3RhYXR0aXN0ZW4gbXV1dHR1amllbiBuaW1ldCBqYSBhcnZvdC4NCg0KW2luZm8gP10NCg0KTeTkcml0dORt5HT2biBpbmZvLWtvbWVudG8uIEtva2VpbGUga29tZW50b2EgJ2hlbHAgaW5mbycuDQoNCltraWxsXQ0KDQpMb3BldGEgc2VuIG9oamVsbWFuIHN1b3JpdHRhbWluZW4sIGpvc3RhIGtvcmphdGFhbiB2aXJoZWl05C4NClTkbeQga29tZW50byBlaSBoeXbka3N5IGFyZ3VtZW50dGVqYS4NCg0KW2xpc3RdDQoNCkx1ZXR0ZWxvaSBrb29kaXJpdml0IGzkaGRldGllZG9zdG9zc2EuDQpFc2ltZXJra2Vq5DoNCiAgbGlzdA0KICAgIEx1ZXR0ZWxvaSBreW1tZW5lbiBsaXPkcml2aeQgbnlreWlzZXNz5CB0aWVkb3N0b3NzYSBlZGVsbGlzZW4gbHVldHRlbG9uIA0KICAgIGrkbGtlZW4gdGFpIHNlbiB5bXDkcmlsbGUuDQogIGxpc3QgLQ0KICAgIEx1ZXR0ZWxvaSBreW1tZW5lbiByaXZp5CBueWt5aXNlc3PkIHRpZWRvc3Rvc3NhIGVubmVuIGVkZWxsaXN05CBsdWV0dGVsb2EuDQogIGxpc3QgODcNCiAgICBMdWV0dGVsb2kga3ltbWVuZW4gcml2aeQgbnlreWlzZXNz5CB0aWVkb3N0b3NzYSByaXZpbiA4NyB5bXDkcmlsbOQuDQogIGxpc3QgODcgMTAyDQogICAgTHVldHRlbG9pIG55a3lpc2VuIHRpZWRvc3RvbiByaXZpdCA4N5YxMDIuDQpTZW4gbGlz5GtzaSwgZXR05CBr5Hl05HQgeWtzaW5rZXJ0YWlzaWEgcml2aW51bWVyb2l0YSB5bGzkIG9sZXZhbiBlc2ltZXJraW4gDQptdWthaXNlc3RpLCB2b2l0IG3k5HJpdHTk5CByaXZlauQgc2VpdHNlbeRsbOQgbXV1bGxhIHRhdmFsbGE6DQogIGRvVGhpcw0KICAgICAgVG9pbWlubm9uIGRvVGhpcygpIGVuc2ltbeRpbmVuIHJpdmkgbnlreWlzZXNz5CB0aWVkb3N0b3NzYS4NCiAgIG15YXBwLm14bWwNCiAgICAgIFJpdmkgMSB0aWVkb3N0b3NzYSBteWFwcC5teG1sLg0KICAgbXlhcHAubXhtbDpkb1RoYXQNCiAgICAgIFRvaW1pbm5vbiBkb1RoYXQoKSBlbnNpbW3kaW5lbiByaXZpIHRpZWRvc3Rvc3NhIG15YXBwLm14bWwuDQogICBteWFwcC5teG1sOjU2DQogICAgICBSaXZpIDU2IHRpZWRvc3Rvc3NhIG15YXBwLm14bWwuDQogICAjMw0KICAgICAgUml2aSAxIHRpZWRvc3Rvc3NhICMzLg0KICAgIzM6ZG9PdGhlcg0KICAgICAgU2UgdGllZG9zdG9uICMzIHJpdmksIGpvbGxhIHRvaW1pbnRvIGRvT3RoZXIoKSBhbGthYS4NCiAgICMzOjI5DQogICAgICBSaXZpIDI5IHRpZWRvc3Rvc3NhICMzLg0KVGllZG9zdG9uaW1ldCBqYSAtbnVtZXJvdCBu5GV0IHN59nR05G3kbGzkICdpbmZvIHNvdXJjZXMnIHRhaSAnaW5mbyBmaWxlcycuDQpUb2ltaW50b2plbiBuaW1ldCBu5GV0IHN59nR05G3kbGzkICdpbmZvIGZ1bmN0aW9ucycuDQpMeWhlbm5ldHl0IHRpZWRvc3RvamVuIGphIHRvaW1pbnRvamVuIG5pbWV0IGh5duRrc3l05ORuLCBqb3MgbmUgb3ZhdCBzZWx2aeQuDQpUaWVkb3N0b24gbGlz5ORtaW5lbiBsdWV0dGVsb29uIHRla2VlIHRpZWRvc3Rvc3RhIG55a3lpc2VuIHRpZWRvc3Rvbi4gKEthdHNvIA0Ka29tZW50byAnY2YnLikNCg0KW25leHRdDQoNCkFza2VsbHV0YSBvaGplbG1hIGFsaXJ1dGlpbmlrdXRzdWplbiBs5HBpLg0KICBuZXh0DQogICAgQXNrZWxsdXRhIGtlcnJhbi4NCiAgbmV4dCAzDQogICAgQXNrZWxsdXRhIGtvbG1hc3RpLCB0YWkga3VubmVzIG9oamVsbWEgcHlz5Gh0eXkgam9zdGFpbiBtdXVzdGEgc3l5c3TkLg0KVG9pbWlpIGt1dGVuIGtvbWVudG8gJ3N0ZXAnLCBrdW5oYW4gYWxpcnV0aWluaWt1dHN1amEgZWkgdGFwYWhkdS4gSm9zIA0KYWxpcnV0aWluaWt1dHN1IHRhcGFodHV1LCBzaXTkIGvkc2l0ZWxs5ORuIHlodGVu5CBvaGplZW5hLg0KDQpbcHJpbnRdDQoNClR1bG9zdGEgbXV1dHR1amFuIHRhaSBpbG1hdWtzZW4gYXJ2by4NCkVzaW1lcmtrZWrkOg0KICBwcmludCBpDQogICAgVHVsb3N0YSAnaSctYXJ2by4NCiAgcHJpbnQgZW1wbG95ZWUubmFtZQ0KICAgIFR1bG9zdGEgJ2VtcGxveWVlLm5hbWUnLWFydm8uDQogIHByaW50IGVtcGxveWVlDQogICAgVHVsb3N0YSBvYmpla3RpbiAnZW1wbG95ZWUnIGFydm8uDQogICAgVHVsb3Mgc2FhdHRhYSBvbGxhIGVzaW1lcmtpa3NpIFtPYmplY3QgMTAzNzhdLg0KICBwcmludCBlbXBsb3llZS4NCiAgICBUdWxvc3RhIG9iamVrdGluICdlbXBsb3llZScga2Fpa2tpZW4gb21pbmFpc3V1a3NpZW4gYXJ2b3QuDQogIHByaW50ICplbXBsb3llZQ0KICAgIFR1bG9zdGEgb2JqZWt0aW4gJ2VtcGxveWVlJyBrYWlra2llbiBvbWluYWlzdXVrc2llbiBhcnZvdC4NCiAgICBFdHVsaWl0ZW9wZXJhYXR0b3JpICogb24gauRsa2lsaWl0ZW9wZXJhYXR0b3JpbiAuIGV0dWxpaXRldmFpaHRvZWh0by4NCiAgcHJpbnQgIzEwMzc4Lg0KICAgIFR1bG9zdGEga2Fpa2tpZW4gT2JqZWN0ICMxMDM3ODpuIG9taW5haXN1dWtzaWVuIGFydm90Lg0KS+R5dGV0dOR2aXNz5CBvdmF0IHZhbGl0dW4gcGlub2tlaHlrc2VuIHNhbmFzdG9sbGlzZW4geW1w5HJpc3T2biBtdXV0dHVqYXQgc2Vr5CANCmthaWtraSBuZSBtdXV0dHVqYXQsIGpvaWRlbiB2YWlrdXR1c2FsdWUgb24geWxlaW5lbiB0YWkga29rb25haW5lbiB0aWVkb3N0by4NCg0KW3B3ZF0NCg0KVHVsb3N0YSBueWt5aW5lbiB0efZoYWtlbWlzdG8uDQpU5G3kIG9uIGhha2VtaXN0bywgam9zdGEgZmRiIGvkeW5uaXN0ZXR0aWluLiBIYWtlbWlzdG9hIGVpIHZvaSBtdXV0dGFhIGZkYjpuIA0Kc2lz5Gxs5C4gS29tZW50b2plbiAncnVuJyBqYSAnc291cmNlJyBhcmd1bWVudHRpIHZvaWRhYW4gbeTkcml0dOTkIHN1aHRlZXNzYSANCnTkaORuIGhha2VtaXN0b29uLg0KVORt5CBrb21lbnRvIGVpIGh5duRrc3kgYXJndW1lbnR0ZWphLg0KDQpbcXVpdF0NCg0KU3VsamUgZmRiLg0KVORt5CBrb21lbnRvIGVpIGh5duRrc3kgYXJndW1lbnR0ZWphLg0KDQpbcnVuXQ0KDQpBbG9pdGEgdmlyaGVlbmtvcmphdXNpc3R1bnRvLg0KRXNpbWVya2tlauQ6DQogIHJ1biBodHRwOi8vd3d3Lm15c2l0ZS5jb20vbXlhcHAubXhtbA0KICAgIFN1b3JpdHRhYSBt5ORyaXRldHluIE1YTUwtc292ZWxsdWtzZW4uDQogIHJ1biBteWFwcC5zd2YNCiAgcnVuIG15ZGlyXG15YXBwLnN3Zg0KICBydW4gYzpcbXlkaXJcbXlhcHAuc3dmDQogICAgU3Vvcml0dGFhIHBhaWthbGxpc2VuIFNXRi10aWVkb3N0b24gbXlhcHAuc3dmLCBqb2thIHZvaWRhYW4gbeTkcml0dOTkIGpva28gDQogICAgc3VodGVlc3NhIG55a3lpc2VlbiBoYWtlbWlzdG9vbiAoa2F0c28ga29tZW50byAncHdkJykgdGFpIGvkeXR05GVuIA0KICAgIGFic29sdXV0dGlzdGEgcG9sa3VhLiBO5Glzc+QgdGFwYXVrc2lzc2EgdGllZG9zdG9uIG15YXBwLnN3ZCANCiAgICAodmlyaGVlbmtvcmphdXN0aWVkb3Qgc2lz5Gx05HbkIHRpZWRvc3RvKSBwaXTk5CBzaWphaXRhIHNhbWFzc2EgDQogICAgaGFrZW1pc3Rvc3NhIGt1aW4gdGllZG9zdG8gbXlhcHAuc3dmLg0KICBydW4NCiAgICBTdW9yaXRhIGVkZWxs5CBrb21lbm5vc3NhICdmaWxlJyBt5ORyaXRldHR5IHNvdmVsbHVzLg0KICAgIEpvcyBzb3ZlbGx1c3RhIGVpIG9sZSBt5ORyaXRldHR5LCBmZGIgb2RvdHRhYSwga3VubmVzIGpva2luIHNvdmVsbHVzIA0KICAgIG11b2Rvc3RhYSBzaWloZW4geWh0ZXlkZW4uIEpvcyBtaWvk5G4gc292ZWxsdXMgZWkgdGVlIG5paW4sIGZkYiBzdW9yaXR0YWEgDQogICAgYWlrYWthdGthaXN1bi4NCktvbWVudG8gJ3J1bicga+R5bm5pc3Tk5CBzb3ZlbGx1a3NlbiBzZWxhaW1lc3NhIHRhaSBlcmlsbGlzZXNz5CBGbGFzaCANClBsYXllcmlzc+QuDQpIZXRpLCBrdW4gc292ZWxsdXMga+R5bm5pc3R5eSwgc2Uga2Vza2V5dHl5IGZkYi10aWxhYW4sIGpvdHRhIHZvaXQgbeTkcml0dOTkIA0Ka2Vza2V5dHlza29oZGF0Lg0KDQpNYWNpbnRvc2gta+R5dHT2auRyamVzdGVsbeRzc+Qga29tZW5ub24gYWlub2EgdHVldHR1IG11b3RvIG9uICdydW4nLCBpbG1hbiANCmFyZ3VtZW50dGVqYS4gIEZsYXNoIFBsYXllciBwaXTk5CBr5HlubmlzdOTkIG1hbnVhYWxpc2VzdGkuDQoNCltzZXRdDQoNCk3k5HJpdOQgbXV1dHR1amFuIHRhaSBtdWthdnV1c211dXR0dWphbiBhcnZvLg0KTXVrYXZ1dXNtdXR0dWppYSBlc2lpbnR5eSBhaW5vYXN0YWFuIGZkYjpzc+QuIE5lIGVpduR0IG9sZSBvc2Egb2hqZWxtYWEuDQpNdWthdnV1c211dXR0dWppbGxhIG9uIGV0dWxpaXRlICckJy4gTXV1dHR1amlsbGEgdm9pIG9sbGEgbWlr5CB0YWhhbnNhIG5pbWksIA0Kam9rYSBlaSBvbGUgam8gb2xlbWFzc2Egb2xldmFuIG11dXR0dWphbiBuaW1pLiAgRXNpbWVya2lrc2kgJG15VmFyLiAgDQpNdWthdnV1c211dXR0dWppbGxhIHZvaWRhYW4gaGFsbGl0YSB1c2VpdGEgZmRiOm4gb21pbmFpc3V1a3NpYS4gIA0KDQpTZXVyYWF2YXQgbXVrYXZ1dXNtdXV0dHVqYXQgb3ZhdCBmZGI6biBr5Hl09nNz5C4NCiRsaXN0c2l6ZSAgICAgICAgICAtIGtvbWVubm9sbGUgJ2xpc3QnIG7keXRldHTkdmllbiBs5GhkZXJpdmllbiBt5ORy5A0KJGNvbHVtbndyYXAgICAgICAgIC0gc2VuIHNhcmFra2VlbiBudW1lcm8sIGpvc3NhIHR1bG9zdHVzIHJpdml0ZXTk5G4NCiRpbmZvc3RhY2tzaG93dGhpcyAtIGpvcyAwLCBwaW5vbiBiYWNrdHJhY2UtbHVldHRlbG9zc2EgZWkgbHVlICd0aGlzJw0KJGludm9rZWdldHRlcnMgICAgIC0gam9zIDAsIGVzdOTkIGZkYjp05CBzdW9yaXR0YW1hc3RhIGdldC1mdW5rdGlvaXRhDQokYnBudW0gICAgICAgICAgICAgLSB2aWltZWluZW4gbeTkcml0ZXR0eSBrZXNrZXl0eXNrb2hkYW4gbnVtZXJvDQokZGlzcGxheWF0dHJpYnV0ZXMgLSBqb3MgMSwgJ3ByaW50IHZhci4nIG7keXR05OQga2Fpa2tpICd2YXInLWrkc2VuaWVuIA0KICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXV0aXQgKGVzaW0uIHlrc2l0eWluZW4sIHN0YWF0dGluZW4pDQoNCkVzaW1lcmtrZWrkOg0KICBzZXQgaSA9IDMNCiAgICBN5ORyaXR05OQgbXV1dHR1amFuICdpJyBudW1lcm9sbGUgMy4NCiAgc2V0IGVtcGxveWVlLm5hbWUgPSAiU3VzYW4iDQogICAgTeTkcml0dOTkIG11dXR0dWphbiAnZW1wbG95ZWUubmFtZScgbWVya2tpam9ub2xsZSAiU3VzYW4iLg0KICBzZXQgJG15VmFyID0gMjANCiAgICBN5ORyaXR05OQgbXVrYXZ1dXNtdXV0dHVqYW4gJyRteVZhcicgbnVtZXJvbGxlIDIwLg0KDQpbc2hvd10NCg0KWWxlaXNrb21lbnRvLCBqb2xsYSBu5Ghk5ORuIGVyaWxhaXNpYSB0aWxhdGlldG9qYSBmZGI6c3TkLg0KTHVldHRlbG8gc2hvdy1hbGlrb21lbm5vaXN0YToNCnNob3cgYnJlYWsgKHNoIGIpICAgICAgIFN1b3JpdHVrc2VuIGtlc2tleXR5a3NlbiBwYWlra2EgamEgc3l5Lg0Kc2hvdyBkaXJlY3RvcmllcyAoc2ggZCkgSGFrZW1pc3RvdCwgam9pc3RhIGV0c2l05ORuIGzkaGRldGllZG9zdG9qYS4NCnNob3cgZmlsZXMgKHNoIGYpICAgICAgIEtvaGRldGllZG9zdG90IGphIC1wb2x1dC4NCnNob3cgZnVuY3Rpb25zIChzaCBmdSkgIFRvaW1pbnRvcml2aW4gbeTkcml0eXN0aWVkb3QuIA0Kc2hvdyBsb2NhdGlvbnMgKHNoIGwpICAgS2Vza2V5dHlza29odGllbiBwYWlrYXQuDQpzaG93IG1lbW9yeSAoc2ggbSkgICAgICBOeWt5aW5lbiBtdWlzdGluIGvkeXR09i4NCnNob3cgbmV0IChzaCBuKSAgICAgICAgIFNvaXR0aW1lbiB2aWVzdGl0aWxhc3RvdC4gDQpzaG93IHByb3BlcnRpZXMgKHNoIHApICBPbWluYWlzdXVrc2llbiBhcnZvdC4NCnNob3cgdXJpIChzaCB1KSAgICAgICAgIFNvaXR0aW1lbiBVUkkgdOR05CBpc3R1bnRvYSB2YXJ0ZW4uIA0Kc2hvdyB2YXJpYWJsZSAoc2ggdikgICAgUmF3LW11dXR0dWphbiBub3V0YW1pbmVuLg0KS2lyam9pdGEgJ2hlbHAgc2hvdycgamEgc2VuIGrkbGtlZW4gc2hvdy1hbGlrb21lbm5vbiBuaW1pLCBuaWluIG7kZXQgdOR5ZGV0IA0Ka+R5dHT2b2hqZWV0Lg0KDQpbc2hvdyBicmVha10NCg0KTuR5dOQgc2lpcnR5beQgU1dGOnNz5Cwgam9ob24gb2hqZWxtYSBweXPkaHR5aS4NCg0KW3Nob3cgZGlyZWN0b3JpZXNdDQoNCk7keXTkIG55a3lpbmVuIGhha3Vwb2xrdSBs5GhkZXRpZWRvc3RvamVuIGz2eXTkbWlzdOQgdmFydGVuLg0KDQpbc2hvdyBmaWxlc10NCg0KTuR5dOQga2Fpa2tpZW4ga29oZGV0aWVkb3N0b2plbiBwb2xrdSBqYSB0aWVkb3N0b25pbWkuDQoNCltzaG93IGZ1bmN0aW9uc10NCg0KTuR5dOQgdG9pbWlubm9uL3JpdmludW1lcm9uIG3k5HJpdHlzdGllZG90Lg0KRXNpbWVya2tlauQ6DQogIHNob3cgZnVuY3Rpb25zIC4NCiAgICBO5Hl0dOTkIGthaWtraWVuIHRvaW1pbnRvamVuIG3k5HJpdHlzdGllZG90IG55a3lpc2Vzc+QgdGllZG9zdG9zc2EuDQogIHNob3cgZnVuY3Rpb25zIG15YXBwLm14bWwNCiAgICBO5Hl0dOTkIGthaWtraWVuIHRvaW1pbnRvamVuIG3k5HJpdHlzdGllZG90IHRpZWRvc3Rvc3NhIG15YXBwLm14bWwuDQogIHNob3cgZnVuY3Rpb25zICMzDQogICAgTuR5dHTk5CBrYWlra2llbiB0b2ltaW50b2plbiBt5ORyaXR5c3RpZWRvdCB0aWVkb3N0b3NzYSAjMy4NCiAgc2hvdyBmdW5jdGlvbnMNCiAgICBO5Hl0dOTkIGthaWtraWVuIHRvaW1pbnRvamVuIG3k5HJpdHlzdGllZG90IGthaWtpc3NhIHRpZWRvc3RvaXNzYS4NClRpZWRvc3RvbmltZXQgamEgLW51bWVyb3QgbuRldCBzefZ0dORt5Gxs5CAnaW5mbyBzb3VyY2VzJyB0YWkgJ2luZm8gZmlsZXMnLg0KTHloZW5uZXR5dCB0aWVkb3N0b25pbWV0IGh5duRrc3l05ORuLCBqb3MgbmUgb3ZhdCBzZWx2aeQuDQoNCltzaG93IGxvY2F0aW9uc10NCg0KTuR5dHTk5CBsdWV0dGVsb24gc2lqYWlubmVpc3RhLCBqb3RrYSBrdWxsZWtpbiBrZXNrZXl0eXNrb2hkYWxsZSBvbiBt5ORyaXRldHR5Lg0KDQpbc2hvdyBtZW1vcnldDQoNCk7keXR05OQgSmF2YS1u5GVubuRpc211aXN0aW4gdGlsYXN0b3QuDQoNCltzaG93IG5ldF0NCg0KTuR5dHTk5CB0aWVkb3QgRmxhc2ggUGxheWVyaWluIGzkaGV0ZXR5aXN05CBqYSBzaWx05CB2YXN0YWFub3RldHVpc3RhIA0Kdmllc3RlaXN05C4NCg0KW3Nob3cgcHJvcGVydGllc10NCg0KTuR5dHTk5CBsdWV0dGVsb24gdmlyaGVlbmtvcmphdWtzZXNzYSBr5Hl0ZXR5aXN05CBtdWthdnV1c211dXR0dWppc3RhLiANCg0KW3Nob3cgdXJpXQ0KDQpO5Hl0dOTkIFVSSTpuLCBqb25rYSBzb2l0aW4gbORoZXR0aSB05HTkIGlzdHVudG9hIHZhcnRlbi4NCg0KW3Nob3cgdmFyaWFibGVdDQoNCk7keXR05OQgbXV1dHR1amFuIGrkc2VudGVuIGFydm90LiAgVmFhZGl0YWFuIGtha3NpIHBhcmFtZXRyaeQuIEVuc2ltbeRpbmVuIG9uIA0KbnVtZXJvYXJ2b2luZW4gbXV1dHR1amFuIHR1bm5pc3RlLiBUb2luZW4gb24gbXV1dHR1amFuIG9taW5haXN1dWRlbiBuaW1pLiAgDQpNdWthdnV1c211dXR0dWphYSAkaW52b2tlZ2V0dGVycyBr5Hl0ZXTk5G4gbeTkcml0dORt5ORuLCBr5HlubmlzdGV05ORua/YgDQpnZXQtb21pbmFpc3V1cywgam9zIHNlbGxhaW5lbiBvbiBvbGVtYXNzYS4NCkVzaW1lcmtraToNCiAgICBzaG93IHZhcmlhYmxlIDEgX19wcm90b19fDQoNCltzaG93ID9dDQoNCk3k5HJpdHTkbeR09m4gc2hvdy1rb21lbnRvLiBLb2tlaWxlIGtvbWVudG9hICdoZWxwIHNob3cnLg0KDQpbc291cmNlXQ0KDQpMdWUgZmRiLWtvbWVubm90IHRpZWRvc3Rvc3RhIGphIHN1b3JpdGEgbmUuDQogIHNvdXJjZSBteWNvbW1hbmRzLnR4dA0KICBzb3VyY2UgbXlkaXJcbXljb21tYW5kcy50eHQNCiAgc291cmNlIGM6XG15ZGlyXG15Y29tbWFuZHMudHh0DQogICAgTHVrZWUga29odGVlbiBteWNvbW1hbmRzLnR4dCBqYSBzdW9yaXR0YWEgc2lpbuQgb2xldmF0IGZkYi1rb21lbm5vdC4NCiAgICBLb21lbm5vdCBzaXPkbHTkduQgdGllZG9zdG8gdm9pZGFhbiBt5ORyaXR05OQgam9rbw0KCXN1aHRlZXNzYSBueWt5aXNlZW4gaGFrZW1pc3Rvb24gKGthdHNvIGtvbWVudG8gJ3B3ZCcpDQoJdGFpIGvkeXR05GVuIGFic29sdXV0dGlzdGEgcG9sa3VhLg0KVGllZG9zdG8gLmZkYmluaXQgbHVldGFhbiBhdXRvbWFhdHRpc2VzdGkgdORsbOQgdGF2YWxsYSwga3VuIGZkYiBr5HlubmlzdGV05ORuLg0KVGllZG9zdG9hIC5mZGJpbml0IGhhZXRhYW4gdmFpbiBueWt5aXNlc3TkIGhha2VtaXN0b3N0YS4gVORt5CB0YXJrb2l0dGFhIHNpdOQsIA0KZXR05CB2b2l0IG3k5HJpdHTk5CB1c2VpdGEgLmZkYmluaXQtdGllZG9zdG9qYSBlcmkgcHJvamVrdGVqYSB2YXJ0ZW4uDQoNCltzdGVwXQ0KDQpBc2tlbGx1dGEgb2hqZWxtYSwga3VubmVzIG9oamVsbWEgc2FhdnV0dGFhIGVyaSBs5GhkZXJpdmluLg0KRXNpbWVya2tlauQ6DQogIHN0ZXANCiAgICBBc2tlbGx1dGEga2VycmFuLg0KICBzdGVwIDMNCiAgICBBc2tlbGx1dGEga29sbWFzdGksIHRhaSBrdW5uZXMgb2hqZWxtYSBweXPkaHR5eSBqb3N0YWluIG11dXN0YSBzeXlzdOQuDQoNClt0dXRvcmlhbF0NCg0KTuR5dOQgb3BldHVzb2hqZWxtYSwgam9zc2Egc2VsaXRldOTkbiBmZGI6biBr5Hl0dPYuDQpU5G3kIGtvbWVudG8gZWkgaHl25GtzeSBhcmd1bWVudHRlamEuDQoNCltUdXRvcmlhbF0NCg0KVHl5cGlsbGluZW4gZmRiLWlzdHVudG86DQpL5HlubmlzdOQgc292ZWxsdXMga29tZW5ub2xsYSAncnVuJy4NClRhcmthc3RlbGUgdGllZG9zdG9uaW1p5CBrb21lbm5vbGxhICdpbmZvIHNvdXJjZXMnLg0KTGlz5OQgdGllZG9zdG8gbHVldHRlbG9vbiBrb21lbm9sbGEgJ2xpc3QnLg0KTeTkcml05CBrZXNrZXl0eXNrb2hkYXQga29tZW5ub2xsYSAnYnJlYWsnLg0KU3Vvcml0YSBvaGplbG1hIGtvbWVubm9sbGEgJ2NvbnRpbnVlJywga3VubmVzIG9zdXRhYW4ga2Vza2V5dHlza29odGFhbi4NClR1dGtpIG9oamVsbWFuIHRpbGFhIGtvbWVubm9pbGxhICd3aGVyZScsICdwcmludCcsICdpbmZvIGxvY2FscycuDQpTdW9yaXRhIHlrc2l0dORpc2nkIGxhdXNla2tlaXRhIGtvbWVubm9pbGxhICduZXh0JywgJ3N0ZXAnLCAnZmluaXNoJy4NCkphdGthIHN1b3JpdHRhbWlzdGEga29tZW5ub2xsYSAnY29udGludWUnLg0KU3VsamUgZmRiIGtvbWVubm9sbGEgJ3F1aXQnLg0KDQpbdW5kaXNwbGF5XQ0KDQpQb2lzdGEgeWtzaSB0YWkgdXNlYSBhdXRvbWFhdHRpc2VuIG7keXT2biBpbG1hdXMuDQpFc2ltZXJra2Vq5DoNCiAgdW5kaXNwbGF5DQogICAgUG9pc3RhIGthaWtraSBhdXRvbWFhdHRpc2VuIG7keXT2biBpbG1hdWtzZXQuDQogIHVuZGlzcGxheSAyIDcNCiAgICBQb2lzdGEgYXV0b21hYXR0aXNlbiBu5Hl09m4gaWxtYXVrc2V0ICMyIGphICM3Lg0KTuRldCBhdXRvbWFhdHRpc2VuIG7keXT2biBpbG1hdWtzZXQgamEgbmlpZGVuIG51bWVyb3Qgc3n2dHTkbeRsbOQgJ2luZm8gDQpkaXNwbGF5Jy4NCg0KW3VwXQ0KDQpWYWxpdHNlIGphIHR1bG9zdGEgdOR05CBrdXRzdW51dCBwaW5va2VoeXMuDQpTZXVyYWF2YXQga29tZW5ub3QgJ2luZm8gYXJndW1lbnRzJyBqYSAnaW5mbyBsb2NhbHMnIG7keXR05HbkdA0KdmFsaXR1biBrZWh5a3NlbiBwYWlrYWxsaXNldCBtdXV0dHVqYXQgamEgYXJndW1lbnRpdC4NCkthdHNvIGtvbWVubm90ICdkb3duJyBqYSAnZnJhbWUnLg0KDQpbdmlld3N3Zl0NCg0KTeTkcml0dOTkIHRhaSB0eWhqZW505OQgdGllZG9zdG9sdWV0dGVsb24gKCdpbmZvIGZpbGVzJyB0YWkgJ2luZm8gc291cmNlcycpIA0Kc3VvZGF0dGltZW4gc3dmLW5pbWVuIHBlcnVzdGVlbGxhLiANCklsbWFuIHBhcmFtZXRyZWrkIGthaWtraSB0aWVkb3N0b3QgbuR5dGV05ORuLiAgSm9zIHNhbWEgdGllZG9zdG8gZXNpaW50eXkgDQp1c2Vhc3NhIHN3Zjpzc+QsIGx1ZXR0ZWxvc3NhIG7ka3l5IHZhaW4gdGllZG9zdG9uIGVuc2ltbeRpbmVuIGVzaWludHlt5C4gIA0KU2FhdCB0aWVkb3N0b24gbXV1dCBlc2lpbnR5beR0IG7ka3l2aWluIGvkeXR05G3kbGzkIHRpZWRvc3RvbiBudW1lcm9hIChlc2ltLiANCidsaXN0ICMxOTInKSB0YWkgdOR05CBrb21lbnRvYSBwYXJhbWV0cmluIGthbnNzYSAoa2F0c28gYWxsYSkuIE7kaW4gdm9pdCANCnRhcmthc3RlbGxhIGpvbmtpbiB0aWV0eW4gc3dmOm4gdGllZG9zdG9qYS4gIEpvcyBr5Hl09nNz5CBvbiB2YWluIHlrc2kgDQpwYXJhbWV0cmksIGtvbWVubm9uICdpbmZvIHN3ZnMnIG7keXR05G3kIHN3Zi1uaW1pLCBhaW5vYXN0YWFuIG3k5HJpdGV0eW4gc3dmOm4gDQp0aWVkb3N0b3QgdHVsZXZhdCBu5Gt5dmlpbiBsdWV0dGVsb29uLiAgDQpNdWlzc2Egc3dmLXRpZWRvc3RvaXNzYSBvbGV2aWEgdGllZG9zdG9qYSBlaSBu5Hl0ZXTkLiAgVORt5CBrb21lbnRvIHZhaWt1dHRhYSANCm159nMga29tZW50b2loaW4sIGpvdGthIGh5duRrc3l25HQgcGFyYW1ldHJpa3NpIHRpZWRvc3RvbiAoZXNpbS4gJ2JyZWFrJykuDQpFc2ltZXJra2k6DQogIHZpZXdzd2YgbXlBcHAubXhtbC5zd2YNCiAgICBWYWluIHRpZWRvc3Rvc3NhIG15QXBwLm14bWwuc3dmIG9sZXZhdCB0aWVkb3N0b3QgbuR5dGV05ORuLg0KICB2aWV3c3dmIA0KICAgIEthaWtraWVuIHN3Zi10aWVkb3N0b2plbiBrYWlra2kgdGllZG9zdG90IG7keXRldOTkbi4NCiANClt3YXRjaF0NCg0KTGlz5OQga2F0c2VsdWtvaHRhIGFubmV0dHV1biBtdXV0dHVqYWFuLiBWaXJoZWVua29yamF1c3RvaW1pbnRvIGtlc2tleXR05OQgDQpzdW9yaXR0YW1pc2VuIG11dXR0dWphbiBhcnZvbiB2YWlodHVlc3NhLg0KRXNpbWVya2tpOg0KICB3YXRjaCBmb28NCg0KW3doYXRdDQoNCk7keXR05OQga29udGVrc3Rpbiwgam9ua2Egc2lz5Gxs5CBtdXV0dHVqYSByYXRrYWlzdGFhbi4gDQoNClt3aGVyZV0NCg0KUGlub24gYmFja3RyYWNlLg0KDQpbenp6XQ0KDQooKCggS2VlcCB0aGlzIHVudXNlZCB0b3BpYyBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlICAgICkpKQ0KKCgoIHNvIHRoYXQgdGhlIG5leHQtdG8tbGFzdCBvbmUgaXMgcGFyc2VkIHByb3Blcmx5LiApKSkNCg==