PCEtLQ0KICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lIG9yIG1vcmUNCiAgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZSBkaXN0cmlidXRlZCB3aXRoDQogIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4NCiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUgdG8gWW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjANCiAgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgNCiAgdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCg0KICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQoNCiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCi0tPg0KPGh0bWw+DQoNCjxoZWFkPg0KPG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdpbmRvd3MtMTI1MiI+DQo8dGl0bGU+QmxhemVEUyBTb3VyY2UgUmVhZG1lPC90aXRsZT4NCjxzdHlsZT4NCjwhLS0NCiAvKiBGb250IERlZmluaXRpb25zICovDQogQGZvbnQtZmFjZQ0KCXtmb250LWZhbWlseToiQ2FtYnJpYSBNYXRoIjsNCglwYW5vc2UtMToyIDQgNSAzIDUgNCA2IDMgMiA0O30NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6VmVyZGFuYTsNCglwYW5vc2UtMToyIDExIDYgNCAzIDUgNCA0IDIgNDt9DQogLyogU3R5bGUgRGVmaW5pdGlvbnMgKi8NCiBwLk1zb05vcm1hbCwgbGkuTXNvTm9ybWFsLCBkaXYuTXNvTm9ybWFsDQoJe21hcmdpbjowaW47DQoJbWFyZ2luLWJvdHRvbTouMDAwMXB0Ow0KCWZvbnQtc2l6ZToxMi4wcHQ7DQoJZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiIsInNlcmlmIjsNCgljb2xvcjp3aW5kb3d0ZXh0O30NCmgzDQoJe21zby1zdHlsZS1saW5rOiJIZWFkaW5nIDMgQ2hhciI7DQoJbWFyZ2luLXJpZ2h0OjBpbjsNCgltYXJnaW4tbGVmdDowaW47DQoJZm9udC1zaXplOjEzLjVwdDsNCglmb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIiwic2VyaWYiOw0KCWNvbG9yOmJsYWNrOw0KCWZvbnQtd2VpZ2h0OmJvbGQ7fQ0KYTpsaW5rLCBzcGFuLk1zb0h5cGVybGluaw0KCXtjb2xvcjpibHVlOw0KCXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fQ0KYTp2aXNpdGVkLCBzcGFuLk1zb0h5cGVybGlua0ZvbGxvd2VkDQoJe2NvbG9yOnB1cnBsZTsNCgl0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30NCnANCgl7bWFyZ2luLXJpZ2h0OjIuNnB0Ow0KCW1hcmdpbi1sZWZ0OjIuNnB0Ow0KCWZvbnQtc2l6ZToxMi4wcHQ7DQoJZm9udC1mYW1pbHk6IlZlcmRhbmEiLCJzYW5zLXNlcmlmIjsNCgljb2xvcjpibGFjazt9DQpwcmUNCgl7bXNvLXN0eWxlLWxpbms6IkhUTUwgUHJlZm9ybWF0dGVkIENoYXIiOw0KCW1hcmdpbjowaW47DQoJbWFyZ2luLWJvdHRvbTouMDAwMXB0Ow0KCWZvbnQtc2l6ZToxMC4wcHQ7DQoJZm9udC1mYW1pbHk6IkNvdXJpZXIgTmV3IjsNCgljb2xvcjp3aW5kb3d0ZXh0O30NCnNwYW4uSGVhZGluZzNDaGFyDQoJe21zby1zdHlsZS1uYW1lOiJIZWFkaW5nIDMgQ2hhciI7DQoJbXNvLXN0eWxlLWxpbms6IkhlYWRpbmcgMyI7DQoJZm9udC1mYW1pbHk6IkNhbWJyaWEiLCJzZXJpZiI7DQoJY29sb3I6IzRGODFCRDsNCglmb250LXdlaWdodDpib2xkO30NCnNwYW4uSFRNTFByZWZvcm1hdHRlZENoYXINCgl7bXNvLXN0eWxlLW5hbWU6IkhUTUwgUHJlZm9ybWF0dGVkIENoYXIiOw0KCW1zby1zdHlsZS1saW5rOiJIVE1MIFByZWZvcm1hdHRlZCI7DQoJZm9udC1mYW1pbHk6IkNvdXJpZXIgTmV3Ijt9DQouTXNvQ2hwRGVmYXVsdA0KCXtmb250LXNpemU6MTAuMHB0O30NCkBwYWdlIFNlY3Rpb24xDQoJe3NpemU6OC41aW4gMTEuMGluOw0KCW1hcmdpbjoxLjBpbiAxLjI1aW4gMS4waW4gMS4yNWluO30NCmRpdi5TZWN0aW9uMQ0KCXtwYWdlOlNlY3Rpb24xO30NCiAvKiBMaXN0IERlZmluaXRpb25zICovDQogb2wNCgl7bWFyZ2luLWJvdHRvbTowaW47fQ0KdWwNCgl7bWFyZ2luLWJvdHRvbTowaW47fQ0KLS0+DQo8L3N0eWxlPg0KDQo8L2hlYWQ+DQoNCjxib2R5IGxhbmc9RU4tVVMgbGluaz1ibHVlIHZsaW5rPXB1cnBsZT4NCg0KPGRpdiBjbGFzcz1TZWN0aW9uMT4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsPiZuYnNwOzwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsPkJsYXplRFMgU291cmNlIERpc3RyaWJ1dGlvbjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsPiZuYnNwOzwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsPlRoaXMgQmxhemVEUyBTb3VyY2UgRGlzdHJpYnV0aW9uIGluY2x1ZGVzDQp0aGUgQWRvYmUgQmxhemVEUyBhbmQgQWRvYmUgRmxleCBTREssIHdoaWNoIGFyZSBlYWNoIGxpY2Vuc2VkIHVuZGVyIHNlcGFyYXRlDQpsaWNlbnNlcyBhcyBkZXNjcmliZWQgYmVsb3c6PC9wPg0KDQo8cCBjbGFzcz1Nc29Ob3JtYWw+Jm5ic3A7PC9wPg0KDQo8cCBjbGFzcz1Nc29Ob3JtYWw+Jm5ic3A7PC9wPg0KDQo8cCBjbGFzcz1Nc29Ob3JtYWw+PHU+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxNC4wcHQnPkFkb2JlIEJsYXplRFMgTGljZW5zZQ0KSW5mb3JtYXRpb248L3NwYW4+PC91PjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTQuMHB0Jz46PC9zcGFuPjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsPiZuYnNwOzwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+qQ0KMjAwNC0yMDA4IEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvc3Bhbj48L3A+DQoNCjxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPiZuYnNwOzwvc3Bhbj48L3A+DQoNCjxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPlRoaXMNCnByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUNCnRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMywgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLjwvc3Bhbj48L3A+DQoNCjxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPiZuYnNwOzwvc3Bhbj48L3A+DQoNCjxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPlRoaXMNCnByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQpXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBDQpQQVJUSUNVTEFSIFBVUlBPU0UuoCBTZWUgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZQ0KZGV0YWlscy48L3NwYW4+PC9wPg0KDQo8cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mbmJzcDs8L3NwYW4+PC9wPg0KDQo8cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5Zb3UNCnNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGgNCnRoaXMgcHJvZ3JhbS6gIElmIG5vdCwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8uPC9zcGFuPjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Jm5ic3A7PC9zcGFuPjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+WW91DQpzaGFsbCBub3QgZGlzY2xhaW0gd2FycmFudHkgb3IgbGltaXQgbGlhYmlsaXR5IGRpZmZlcmVudGx5IGZyb20gdGhlIHRlcm1zIG9mDQpTZWN0aW9ucyAxNSBhbmQgMTYgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDMsIHdoaWNoIGlzDQppbmNvcnBvcmF0ZWQgaW50byB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLjwvc3Bhbj48L3A+DQoNCjxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPiZuYnNwOzwvc3Bhbj48L3A+DQoNCjxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPllvdQ0Kc2hhbGwgcHJlc2VydmUgYWxsIGxlZ2FsIG5vdGljZXMgb3IgYXV0aG9yIGF0dHJpYnV0aW9ucyBpbiB0aGUgcHJvZ3JhbS48L3NwYW4+PC9wPg0KDQo8cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mbmJzcDs8L3NwYW4+PC9wPg0KDQo8cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5Zb3UNCnNoYWxsIG5vdCBtaXNyZXByZXNlbnQgdGhlIG9yaWdpbmFsIHZlcnNpb24gb2YgdGhlIHByb2dyYW0sIGFuZCB5b3Ugc2hhbGwgbWFyaw0KYWxsIG1vZGlmaWVkIHZlcnNpb25zIG9mIHRoZSBwcm9ncmFtIGluIHJlYXNvbmFibGUgd2F5cyB0byBzaG93IHRoZSBkaWZmZXJlbmNlcw0KZnJvbSB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUgcHJvZ3JhbS48L3NwYW4+PC9wPg0KDQo8cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz6gPC9zcGFuPjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+SW4NCmFjY29yZGFuY2Ugd2l0aCBTZWN0aW9uIDcoZikgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDMsDQp3aGljaCBpcyBpbmNvcnBvcmF0ZWQgaW50byB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBjZXJ0YWluDQpwb3J0aW9ucyBvZiB0aGlzIHByb2dyYW0gYXJlIGxpY2Vuc2VkIHVuZGVyIEFwYWNoZSAyLjAgd2hpY2ggcmVxdWlyZXMgdGhlDQppbmRlbW5pZmljYXRpb24gb2YgdGhlIGF1dGhvciBvciBsaWNlbnNvcnMgb2YgdGhlIHNvZnR3YXJlIGxpY2Vuc2VkIHVuZGVyDQpBcGFjaGUgMi4wIGxpY2Vuc2UgYnkgdGhvc2Ugd2hvIGNvbnZleSB0aGUgcHJvZ3JhbS48L3NwYW4+PC9wPg0KDQo8cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5JZg0KeW91IGhhdmUgYW55IHF1ZXN0aW9ucyByZWdhcmRpbmcgdGhpcyBhZ3JlZW1lbnQgb3IgaWYgeW91IHdpc2ggdG8gcmVxdWVzdCBhbnkNCmluZm9ybWF0aW9uIGZyb20gQWRvYmUgcGxlYXNlIHVzZSB0aGUgYWRkcmVzcyBhbmQgY29udGFjdCBpbmZvcm1hdGlvbiBpbmNsdWRlZA0Kd2l0aCB0aGlzIHByb2dyYW0gdG8gY29udGFjdCB0aGUgQWRvYmUgb2ZmaWNlIHNlcnZpbmcgeW91ciBqdXJpc2RpY3Rpb24uPC9zcGFuPjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Jm5ic3A7PC9zcGFuPjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+QnkNCmRvd25sb2FkaW5nLCB1c2luZywgbW9kaWZ5aW5nLCBkaXN0cmlidXRpbmcgYW5kL29yIGFjY2Vzc2luZyB0aGUgcHJvZ3JhbSwgeW91DQphZ3JlZSB0byB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDMuPC9zcGFuPjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Jm5ic3A7PC9zcGFuPjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+VGhlIG5hbWUgJmxkcXVvO0JsYXplRFMmcmRxdW87IGFuZCB0aGUgQmxhemVEUyBsb2dvIG11c3Qgbm90IGJlICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHByaW9yICB3cml0dGVuIHBlcm1pc3Npb24gZnJvbSBBZG9iZS4gJm5ic3A7U2ltaWxhcmx5LCBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBvcGVuICBzb3VyY2Ugc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgJnF1b3Q7QmxhemVEUyZxdW90Oywgbm9yIG1heSAgJnF1b3Q7QmxhemVEUyZxdW90OyBhcHBlYXIgaW4gdGhlaXIgbmFtZSBvciB0aGUgQmxhemVEUyBsb2dvIGFwcGVhciB3aXRoIHN1Y2ggIHByb2R1Y3RzLCB3aXRob3V0IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbiBvZiBBZG9iZS48L3NwYW4+PC9wPg0KDQo8cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mbmJzcDs8L3NwYW4+PC9iPjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Tk9USUNFUw0KUkVMQVRFRCBUTyBDRVJUQUlOIFRISVJEIFBBUlRZIE1BVEVSSUFMUzo8L3NwYW4+PC9iPjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Jm5ic3A7PC9zcGFuPjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48dT48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+QXBhY2hlDQoxLjEgTGljZW5zZWQgUHJvZHVjdHM8L3NwYW4+PC91PjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz46oCA8L3NwYW4+PC9wPg0KDQo8cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mbmJzcDs8L3NwYW4+PC9wPg0KDQo8cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5UaGlzDQpwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGxpc3RlZCBiZWxvdyB0aGF0IHdlcmUgZGV2ZWxvcGVkIGJ5IHRoZSBBcGFjaGUNClNvZnR3YXJlIEZvdW5kYXRpb24gKGh0dHA6Ly93d3cuYXBhY2hlLm9yZy8pLqAgU3VjaCBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlcg0KdGhlIEFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMTsgeW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHN1Y2ggbGljZW5zZQ0KYXSgIGh0dHA6Ly9hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMS4xLjwvc3Bhbj48L3A+DQoNCjxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPiZuYnNwOzwvc3Bhbj48L3A+DQoNCjxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPi0NCkFwYWNoZSBDb21tb25zPC9zcGFuPjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+oKANCi0tIGNvbW1vbnMtY29kZWMtMS4zLmphcjwvc3Bhbj48L3A+DQoNCjxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPqCgDQotLSBjb21tb25zLWZpbGV1cGxvYWQtMS4xLmphcjwvc3Bhbj48L3A+DQoNCjxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPqCgDQotLSBjb21tb25zLWh0dHBjbGllbnQtMy4wLjEuamFyPC9zcGFuPjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+oKANCi0tIGNvbW1vbnMtaW8tMS4xLmphcjwvc3Bhbj48L3A+DQoNCjxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPiZuYnNwOzwvc3Bhbj48L3A+DQoNCjxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPi0gQXBhY2hlDQpWZWxvY2l0eTwvc3Bhbj48L3A+DQoNCjxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPqCgDQotLSBtbS12ZWxvY2l0eS0xLjQuamFyPC9zcGFuPjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Jm5ic3A7PC9zcGFuPjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+LQ0KQXBhY2hlIFhNTDwvc3Bhbj48L3A+DQoNCjxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPqCgDQotLSB4YWxhbi5qYXIgKHZlcnNpb24gMi41LjIpPC9zcGFuPjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Jm5ic3A7PC9zcGFuPjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Jm5ic3A7PC9zcGFuPjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48dT48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+QXBhY2hlDQoyLjAgTGljZW5zZWQgUHJvZHVjdHM8L3NwYW4+PC91PjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz46oCA8L3NwYW4+PC9wPg0KDQo8cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mbmJzcDs8L3NwYW4+PC9wPg0KDQo8cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5UaGlzDQpwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGxpc3RlZCBiZWxvdyB0aGF0IHdlcmUgbGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZQ0KTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAmcXVvdDtMaWNlbnNlJnF1b3Q7KTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZQ0KZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQpodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAuIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdw0Kb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkDQpvbiBhbiAmcXVvdDtBUyBJUyZxdW90OyBCQVNJUyygoCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwNCmVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZw0KcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLjwvc3Bhbj48L3A+DQoNCjxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPiZuYnNwOzwvc3Bhbj48L3A+DQoNCjxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPi0NCkFwYWNoZSBUb21jYXQ8L3NwYW4+PC9wPg0KDQo8cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz6goA0KLS0gQXBhY2hlIFRvbWNhdCA2LjAuMjk8L3NwYW4+PC9wPg0KDQo8cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mbmJzcDs8L3NwYW4+PC9wPg0KDQo8cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mbmJzcDs8L3NwYW4+PC9wPg0KDQo8cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjx1PjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5DcmVhdGl2ZQ0KQ29tbW9ucyBMaWNlbnNlZCBQcm9kdWN0czwvc3Bhbj48L3U+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjogPC9zcGFuPjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Jm5ic3A7PC9zcGFuPjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+VGhpcw0Kc29mdHdhcmUgdXNlcyB0aGUgamF2YS51dGlsLmNvbmN1cnJlbnQgKGNvbmN1cnJlbnQuamFyIHZlcnNpb24gMS4zLjMpIEFQSSBhbmQNCnRoZSBiYWNrcG9ydCBvZiBqYXZhLnV0aWwuY29uY3VycmVudCBBUEkuIEJvdGggcGFja2FnZXMgYXJlIHB1YmxpYy1kb21haW4NCnNvdXJjZXMgZnJvbSB0aGUgSlNSIDE2NiBDVlMgcmVwb3NpdG9yeSwgdGhlIGRsLnV0aWwuY29uY3VycmVudCBwYWNrYWdlLCBhbmQNCnRoZSBEb3VnIExlYSdzIGNvbGxlY3Rpb25zIHBhY2thZ2UuYmFja3BvcnQtdXRpbC1jb25jdXJyZW50LmphciAodmVyc2lvbiAyLjIpDQpUaGUgbGljZW5zZSB0ZXJtcyBvZiB0aGVzZSBwYWNrYWdlcyBjYW4gYmUgZm91bmQgaGVyZQ0KKGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnOjgxL2xpY2Vuc2VzL3B1YmxpY2RvbWFpbi8pLiA8L3NwYW4+PC9wPg0KDQo8cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mbmJzcDs8L3NwYW4+PC9wPg0KDQo8cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mbmJzcDs8L3NwYW4+PC9wPg0KDQo8cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjx1PjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5HTlUNCkxHUEx2LjIuMSBMaWNlbnNlZCBQcm9kdWN0czwvc3Bhbj48L3U+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjogPC9zcGFuPjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Jm5ic3A7PC9zcGFuPjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+VGhpcw0Kc29mdHdhcmUgdXNlcyB0aGUgSkdyb3VwcyB0b29sa2l0IGxpYnJhcnkgZm9yIHJlbGlhYmxlIG11bHRpY2FzdCBjb21tdW5pY2F0aW9uDQooamdyb3Vwcy5qYXIpLqAgU3VjaCBKR3JvdXBzIGxpYnJhcnkgaXMgbGljZW5zZWQgdW5kZXKgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwNClB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDIuMSwgYSBjb3B5IG9mIHdoaWNoIGlzIGluY2x1ZGVkIHdpdGggc3VjaCBsaWJyYXJ5LqANCllvdSBtYXkgYWxzbyBvYnRhaW4gYSBjb3B5IG9mIHN1Y2ggbGljZW5zZSBhdCA8YQ0KaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLyI+aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLzwvYT4uoKAgPC9zcGFuPjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Jm5ic3A7PC9zcGFuPjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Jm5ic3A7PC9zcGFuPjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48dT48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+SHlwZXJzb25pYw0KTGljZW5zZWQgUHJvZHVjdHM8L3NwYW4+PC91PjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz46oCA8L3NwYW4+PC9wPg0KDQo8cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mbmJzcDs8L3NwYW4+PC9wPg0KDQo8cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5UaGlzDQpzb2Z0d2FyZSB1c2VzIHRoZSBIeXBlcnNvbmljIEphdmEgU1FMIGRhdGFiYXNlIGVuZ2luZSAoaHNxbGRiLmphciB2ZXJzaW9uDQoxLjguMCkgd2hpY2ggaXMgbGljZW5zZWQgdW5kZXIgdGhlIEh5cGVyc29uaWMgbGljZW5zZSAoPGENCmhyZWY9Imh0dHA6Ly9oc3FsZGIub3JnL3dlYi9oc3FsTGljZW5zZS5odG1sIj5odHRwOi8vaHNxbGRiLm9yZy93ZWIvaHNxbExpY2Vuc2UuaHRtbDwvYT4pLA0KdGhlIHRleHQgb2Ygd2hpY2ggaXMgcHJvdmlkZWQgYmVsb3c6PC9zcGFuPjwvcD4NCg0KPHAgc3R5bGU9J21hcmdpbi1sZWZ0OjEuMGluJz48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIiwic2VyaWYiJz5Gb3INCmNvbnRlbnQsIGNvZGUsIGFuZCBwcm9kdWN0cyBvcmlnaW5hbGx5IGRldmVsb3BlZCBieSBUaG9tYXMgTXVlbGxlciBhbmQgdGhlDQpIeXBlcnNvbmljIFNRTCBHcm91cDo8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iLCJzZXJpZiInPjxicj4NCjxicj4NCkNvcHlyaWdodCAoYykgMTk5NS0yMDAwIGJ5IHRoZSBIeXBlcnNvbmljIFNRTCBHcm91cC48YnI+DQpBbGwgcmlnaHRzIHJlc2VydmVkLiA8L3NwYW4+PC9wPg0KDQo8cCBzdHlsZT0nbWFyZ2luLWxlZnQ6MS4waW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iLCJzZXJpZiInPlJlZGlzdHJpYnV0aW9uDQphbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQ8YnI+DQptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDo8YnI+DQo8YnI+DQpSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXM8YnI+DQpsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci48YnI+DQo8YnI+DQpSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsPGJyPg0KdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbjxicj4NCmFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLjxicj4NCjxicj4NCk5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIEh5cGVyc29uaWMgU1FMIEdyb3VwIG5vciB0aGUgbmFtZXMgb2YgaXRzPGJyPg0KY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpczxicj4NCnNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLjxicj4NCjxicj4NClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgJnF1b3Q7QVMNCklTJnF1b3Q7QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sDQpUSEVJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBIWVBFUlNPTklDIFNRTCBHUk9VUCygIE9SIENPTlRSSUJVVE9SUyBCRQ0KTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUg0KQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURQ0KR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pDQpIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVA0KTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQNCk9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS48L3NwYW4+PC9wPg0KDQo8cCBzdHlsZT0nbWFyZ2luLWxlZnQ6MS4waW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iLCJzZXJpZiInPlRoaXMNCnNvZnR3YXJlIGNvbnNpc3RzIG9mIHZvbHVudGFyeSBjb250cmlidXRpb25zIG1hZGUgYnkgbWFueSBpbmRpdmlkdWFscyBvbiBiZWhhbGYNCm9mIHRoZTxicj4NCkh5cGVyc29uaWMgU1FMIEdyb3VwLjwvc3Bhbj48L3A+DQoNCjxoMyBzdHlsZT0nbWFyZ2luLWxlZnQ6NjkuNHB0Jz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Rm9yIHdvcmsgYWRkZWQgYnkNCnRoZSBIU1FMIERldmVsb3BtZW50IEdyb3VwIChhLmsuYS4gaHNxbGRiX2xpYy50eHQpOjwvc3Bhbj48L2gzPg0KDQo8cCBzdHlsZT0nbWFyZ2luLWxlZnQ6MS4waW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iLCJzZXJpZiInPkNvcHlyaWdodA0KKGMpIDIwMDEtMjAwNSwgVGhlIEhTUUwgRGV2ZWxvcG1lbnQgR3JvdXA8YnI+DQpBbGwgcmlnaHRzIHJlc2VydmVkLjxicj4NCjxicj4NClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dDxicj4NCm1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Ojxicj4NCjxicj4NClJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpczxicj4NCmxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLjxicj4NCjxicj4NClJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSw8YnI+DQp0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uPGJyPg0KYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uPGJyPg0KPGJyPg0KTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgSFNRTCBEZXZlbG9wbWVudCBHcm91cCBub3IgdGhlIG5hbWVzIG9mIGl0czxicj4NCmNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXM8YnI+DQpzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi48YnI+DQo8YnI+DQpUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICZxdW90O0FTDQpJUyZxdW90OyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywNClRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEhTUUwgREVWRUxPUE1FTlQgR1JPVVAsIEhTUUxEQi5PUkcsoCBPUg0KQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsDQpFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UDQpPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MNCklOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElODQpDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcNCklOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWQ0KT0YgU1VDSCBEQU1BR0UuPC9zcGFuPjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+oDwvc3Bhbj48L3A+DQoNCjxwIGNsYXNzPU1zb05vcm1hbD4mbmJzcDs8L3A+DQoNCjxwIGNsYXNzPU1zb05vcm1hbD4mbmJzcDs8L3A+DQoNCjxwIGNsYXNzPU1zb05vcm1hbD4mbmJzcDs8L3A+DQoNCjxwIGNsYXNzPU1zb05vcm1hbD4mbmJzcDs8L3A+DQoNCjxwIGNsYXNzPU1zb05vcm1hbD48dT48c3BhbiBzdHlsZT0nZm9udC1zaXplOjE0LjBwdCc+QWRvYmUgRmxleCBTREsgTGljZW5zZQ0KSW5mb3JtYXRpb248L3NwYW4+PC91PjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTQuMHB0Jz46PC9zcGFuPjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsPiZuYnNwOzwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48dT48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+QWRvYmUNCkZsZXggU0RLIExpY2Vuc2UgQWdyZWVtZW50Ojwvc3Bhbj48L3U+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPqAgPC9zcGFuPjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Jm5ic3A7PC9zcGFuPjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDoxLjBpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkFsbA0KZmlsZXMgY29udGFpbmVkIGluIHRoZSBBZG9iZSBGbGV4IFNESyBhcmUgc3ViamVjdCB0byBhbmQgZ292ZXJuZWQgYnkgdGhlIEFkb2JlDQpGbGV4IFNESyBMaWNlbnNlIEFncmVlbWVudCBzcGVjaWZpZWQgaGVyZTogPGEgaHJlZj0ibGljZW5zZXNcbGljZW5zZS1hZG9iZXNkay5odG0iPkFkb2JlDQpGbGV4IFNESyBMaWNlbnNlIEFncmVlbWVudDwvYT4sIDx1PkVYQ0VQVDwvdT4gdGhvc2UgZmlsZXMgc3BlY2lmaWNhbGx5DQppZGVudGlmaWVkIGJlbG93IGFzIJNNb3ppbGxhIFB1YmxpYyBMaWNlbnNlIEZpbGVzlC6gIDwvc3Bhbj48L3A+DQoNCjxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6MS4waW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mbmJzcDs8L3NwYW4+PC9wPg0KDQo8cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0OjEuMGluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+QnkgZG93bmxvYWRpbmcsDQptb2RpZnlpbmcsIGRpc3RyaWJ1dGluZywgdXNpbmcgYW5kL29yIGFjY2Vzc2luZyBhbnkgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnksDQp5b3UgYWdyZWUgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBhcHBsaWNhYmxlIGVuZCB1c2VyIGxpY2Vuc2UNCmFncmVlbWVudC4gPC9zcGFuPjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDoxLjBpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPiZuYnNwOzwvc3Bhbj48L3A+DQoNCjxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6MS4waW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5Jbg0KYWRkaXRpb24gdG8gdGhlIEFkb2JlIGxpY2Vuc2UgdGVybXMsIHlvdSBhbHNvIGFncmVlIHRvIGJlIGJvdW5kIGJ5IHRoZSB0aGlyZC1wYXJ0eQ0KdGVybXMgc3BlY2lmaWVkIGhlcmU6IDxhIGhyZWY9Imh0dHA6Ly93d3cuYWRvYmUuY29tL2dvL3RoaXJkcGFydHkiPlRoaXJkIFBhcnR5DQpTb2Z0d2FyZSBOb3RpY2VzPC9hPi4gQWRvYmUgcmVjb21tZW5kcyB0aGF0IHlvdSByZXZpZXcgdGhlc2UgdGhpcmQtcGFydHkgdGVybXMuPC9zcGFuPjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48dT48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+PHNwYW4NCiBzdHlsZT0ndGV4dC1kZWNvcmF0aW9uOm5vbmUnPiZuYnNwOzwvc3Bhbj48L3NwYW4+PC91PjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48dT48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+TW96aWxsYQ0KUHVibGljIExpY2Vuc2UgRmlsZXM6PC9zcGFuPjwvdT48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+oCA8L3NwYW4+PC9wPg0KDQo8cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0OjEuMGluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Jm5ic3A7PC9zcGFuPjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDoxLjBpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPlRoZQ0KZmlsZXMgbG9jYXRlZCBpbiB0aGUgZm9sbG93aW5nIGRpcmVjdG9yeSBsb2NhdGlvbnMgb2YgdGhlIEFkb2JlIEZsZXggU0RLIGFyZQ0KZ292ZXJuZWQgYnkgdGhlIJNNb3ppbGxhIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4xlCBmb3VuZCBiZWxvdy6gIDwvc3Bhbj48L3A+DQoNCjxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6MS4waW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mbmJzcDs8L3NwYW4+PC9wPg0KDQo8cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0OjEuMGluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YW50PGJyPg0KYXNkb2M8YnI+DQpmcmFtZXdvcmtzL2phdmFzY3JpcHQ8YnI+DQpmcmFtZXdvcmtzL2xvY2FsZTxicj4NCmZyYW1ld29ya3MvcHJvamVjdHM8YnI+DQpmcmFtZXdvcmtzL3RoZW1lczwvc3Bhbj48L3A+DQoNCjxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6MS4waW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mbmJzcDs8L3NwYW4+PC9wPg0KDQo8cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0OjEuMGluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+VGhlDQpjb250ZW50cyBvZiBzdWNoIGFib3ZlIGZpbGVzIGFyZSBzdWJqZWN0IHRvIHRoZSBNb3ppbGxhIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24NCjEuMSAodGhlICZxdW90O0xpY2Vuc2UmcXVvdDspOyB5b3UgbWF5IG5vdCB1c2UgdGhlc2UgZmlsZXMgZXhjZXB0IGluIGNvbXBsaWFuY2UNCndpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBoZXJlOiA8YQ0KaHJlZj0ibGljZW5zZXNcbGljZW5zZS1tcGwuaHRtIj5Nb3ppbGxhIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4xPC9hPiBvciA8YQ0KaHJlZj0iaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvIj5odHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC88L2E+Ljwvc3Bhbj48L3A+DQoNCjxwcmUgc3R5bGU9J21hcmdpbi1sZWZ0OjEuMGluJz48c3BhbiBzdHlsZT0nZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiIsInNlcmlmIic+U29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJnF1b3Q7QVMgSVMmcXVvdDsgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyByaWdodHMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLjwvc3Bhbj48L3ByZT48cHJlDQpzdHlsZT0nbWFyZ2luLWxlZnQ6MS4waW4nPjxzcGFuIHN0eWxlPSdmb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIiwic2VyaWYiJz4mbmJzcDs8L3NwYW4+PC9wcmU+PHByZQ0Kc3R5bGU9J21hcmdpbi1sZWZ0OjEuMGluJz48c3BhbiBzdHlsZT0nZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiIsInNlcmlmIic+VGhlIE9yaWdpbmFsIENvZGUgY29uc2lzdHMgb2YgdGhlIGZpbGVzIGxpc3RlZCBhYm92ZS48L3NwYW4+PC9wcmU+PHByZQ0Kc3R5bGU9J21hcmdpbi1sZWZ0OjEuMGluJz48c3BhbiBzdHlsZT0nZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiIsInNlcmlmIic+Jm5ic3A7PC9zcGFuPjwvcHJlPg0KDQo8cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0OjEuMGluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+VGhlDQpJbml0aWFsIERldmVsb3BlciBvZiB0aGUgT3JpZ2luYWwgQ29kZSBpcyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC48L3NwYW4+PC9wPg0KDQo8cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0OjEuMGluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+QnkNCmRvd25sb2FkaW5nLCBtb2RpZnlpbmcsIGRpc3RyaWJ1dGluZywgdXNpbmcgYW5kL29yIGFjY2Vzc2luZyBhbnkgZmlsZXMgaW4gdGhpcw0KZGlyZWN0b3J5LCB5b3UgYWdyZWUgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBhcHBsaWNhYmxlIGVuZCB1c2VyDQpsaWNlbnNlIGFncmVlbWVudC48L3NwYW4+PC9wPg0KDQo8cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5OT1RJQ0VTDQpSRUxBVEVEIFRPIENFUlRBSU4gVEhJUkQgUEFSVFkgTUFURVJJQUxTOjwvc3Bhbj48L2I+PC9wPg0KDQo8cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjx1PjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5BcGFjaGUNCjEuMSBMaWNlbnNlZCBQcm9kdWN0czwvc3Bhbj48L3U+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjqgIDwvc3Bhbj48L3A+DQoNCjxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPiZuYnNwOzwvc3Bhbj48L3A+DQoNCjxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6MS4waW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5UaGlzDQpwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGxpc3RlZCBiZWxvdyB0aGF0IHdlcmUgZGV2ZWxvcGVkIGJ5IHRoZSBBcGFjaGUNClNvZnR3YXJlIEZvdW5kYXRpb24gKDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iPmh0dHA6Ly93d3cuYXBhY2hlLm9yZzwvYT4vKS6gDQpTdWNoIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjE7IHlvdQ0KbWF5IG9idGFpbiBhIGNvcHkgb2Ygc3VjaCBsaWNlbnNlIGF0IDxhDQpocmVmPSJodHRwOi8vYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTEuMSI+aHR0cDovL2FwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0xLjE8L2E+Ljwvc3Bhbj48L3A+DQoNCjxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6MS41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5BcGFjaGUNCkNvbW1vbnMgQ29sbGVjdGlvbnMgMi4xPGJyPg0KQXBhY2hlIENvbW1vbnMgRGlzY292ZXJ5IDAuMjxicj4NCkFwYWNoZSBYZXJjZXMgMi40PC9zcGFuPjwvcD4NCg0KPHAgc3R5bGU9J21hcmdpbi1sZWZ0OjM4LjZwdCc+PHU+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6DQoiVGltZXMgTmV3IFJvbWFuIiwic2VyaWYiJz5BcGFjaGUgMi4wIExpY2Vuc2VkIFByb2R1Y3RzPC9zcGFuPjwvdT48c3Bhbg0Kc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiIsInNlcmlmIic+OqAgPC9zcGFuPjwvcD4NCg0KPHAgc3R5bGU9J21hcmdpbi1sZWZ0OjEuMGluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIiwic2VyaWYiJz5UaGlzDQpwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGxpc3RlZCBiZWxvdyB0aGF0IHdlcmUgbGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZQ0KTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAmcXVvdDtMaWNlbnNlJnF1b3Q7KTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZQ0KZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0IDxhDQpocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAiDQp0aXRsZT0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIj5odHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjA8L2E+Lg0KVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZSBkaXN0cmlidXRlZA0KdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJnF1b3Q7QVMgSVMmcXVvdDsgQkFTSVMsJm5ic3A7Jm5ic3A7DQpXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlDQp0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCnVuZGVyIHRoZSBMaWNlbnNlLjwvc3Bhbj48L3A+DQoNCjxwIHN0eWxlPSdtYXJnaW4tbGVmdDoxLjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiIsInNlcmlmIic+QXBhY2hlDQpBeGlzIDEuMSwgqSAyMDAxLTIwMDQsIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uPGJyPg0KQXBhY2hlIEJhdGlrIFNWRyBUb29sa2l0IDEuNiwgqSAyMDA1LCBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbjxicj4NCkFwYWNoZSBDb21tb25zIExvZ2dpbmcgMS4wLjQsIKkgMjAwNCwgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb248YnI+DQpBcGFjaGUgVmVsb2NpdHkgMS40LCCpIDIwMDQsIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uPGJyPg0KQXBhY2hlIFhhbGFuIDIuNi4wLCCpIDIwMDQsIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uPC9zcGFuPjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48dT48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+QlNEDQpMaWNlbnNlZCBQcm9kdWN0czwvc3Bhbj48L3U+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjo8L3NwYW4+PC9wPg0KDQo8cCBzdHlsZT0nbWFyZ2luLWxlZnQ6MS4waW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iLCJzZXJpZiInPkVhc2luZw0KRXF1YXRpb25zIENvcHlyaWdodCAoYykgMjAwMS0yMDAzLCBSb2JlcnQgUGVubmVyPC9zcGFuPjwvcD4NCg0KPHAgc3R5bGU9J21hcmdpbi1sZWZ0OjEuMGluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIiwic2VyaWYiJz5BbGwNCnJpZ2h0cyByZXNlcnZlZC48L3NwYW4+PC9wPg0KDQo8cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0OjEuMGluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+UmVkaXN0cmlidXRpb24NCmFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQNCnByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6PC9zcGFuPjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDoxLjVpbjt0ZXh0LWluZGVudDotLjI1aW4nPjxzcGFuDQpzdHlsZT0nZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTpTeW1ib2wnPrc8c3BhbiBzdHlsZT0nZm9udDo3LjBwdCAiVGltZXMgTmV3IFJvbWFuIic+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQo8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5SZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUNCm11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlDQpmb2xsb3dpbmcgZGlzY2xhaW1lci4gPC9zcGFuPjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDoxLjVpbjt0ZXh0LWluZGVudDotLjI1aW4nPjxzcGFuDQpzdHlsZT0nZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTpTeW1ib2wnPrc8c3BhbiBzdHlsZT0nZm9udDo3LjBwdCAiVGltZXMgTmV3IFJvbWFuIic+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQo8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5SZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0NCm11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlDQpmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgNCnRoZSBkaXN0cmlidXRpb24uIDwvc3Bhbj48L3A+DQoNCjxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6MS41aW47dGV4dC1pbmRlbnQ6LS4yNWluJz48c3Bhbg0Kc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6U3ltYm9sJz63PHNwYW4gc3R5bGU9J2ZvbnQ6Ny4wcHQgIlRpbWVzIE5ldyBSb21hbiInPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+TmVpdGhlciB0aGUgbmFtZSBvZiB0aGUNCiZsdDtPUkdBTklaQVRJT04mZ3Q7IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlDQpvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbg0KcGVybWlzc2lvbi4gPC9zcGFuPjwvcD4NCg0KPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDoxLjBpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPlRISVMNClNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICZxdW90O0FTDQpJUyZxdW90OyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywNClRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQ0KRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwNCkRBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SDQpTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUg0KQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwNCk9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFDQpPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFPHNwYW4NCnN0eWxlPSdjb2xvcjpibHVlJz4uPC9zcGFuPjwvc3Bhbj48L3A+DQoNCjxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6MS4waW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Ow0KY29sb3I6Ymx1ZSc+Jm5ic3A7PC9zcGFuPjwvcD4NCg0KPC9kaXY+DQoNCjwvYm9keT4NCg0KPC9odG1sPg0K