SW4gYSBtZXNzYWdlIGRhdGVkIDEyLzE5LzIwMDIgNjo1MTo0NyBQTSBFYXN0ZXJuIFN0YW5k YXJkIFRpbWUsIG1ncmVlbndvb2RAdGVsdXMubmV0IHdyaXRlczoKCj4gTWFuYWdlbWVudCBz aG91bGRuJ3QgaGF2ZSB0byBuZWdvdGlhdGUgaW4gYSBjcmlzaXMgc2l0dWF0aW9uLiBMYWJv dXIgY29zdHMKPiBhcmUgcHJvYmFibHkgVUEncyBiaWdnZXN0IGV4cGVuc2UgYXQgdGhlIG1v bWVudC4gIEJyaW5nIHRob3NlIGluIGxpbmUgYW5kCj4gZXZlcnl0aGluZyBlbHNlIHdpbGwg Zm9sbG93IHN1aXQuICBJIHNheSBmaXJlIGV2ZXJ5IGxhc3Qgb25lIG9mIHRoZW0gYW5kCj4g dGhlbiBoaXJlIGJhY2sgdGhlIG9uZXMgd2hvIGFyZSB3aWxsaW5nIHRvIHdvcmsgZm9yIHdo YXQgdGhlIGNvbXBhbnkgaXMKPiB3aWxsaW5nIHRvIHBheS4gIFVuaW9ucyBoYWQgdGhlaXIg cGxhY2UgaW4gdGhlIDE5dGggCj4gY2VudHVyeSwgdGhleSBhcmUgd2F5Cj4gcGFzdCB0aGVp ciBleHBpcnkgZGF0ZSBpbiB0aGUgMjFzdC4KPiAKPiBNYXJrCgogICAgICJNYW5hZ2VtZW50 IHNob3VsZG4ndCBoYXZlIHRvIG5lZ290aWF0ZSBpbiBhIGNyaXNpcyBzaXR1YXRpb24iPz8g WWVhaCBtYXJrLHRoZSBzYW1lIG1hbmFnZW1lbnQgd2hvIHB1dCB0aGlzIGNvbXBhbnkgaW4g dGhlIGhvbGUgaXQncyBpbiBub3cuLi4KTWVjaGFuaWNzLHRoZSBndXlzIHdobyBrZWVwIHRo b3NlIGZsaWdodGNyZXdzLCBjYWJpbiBhdHRlbmRhbnRzIGFuZCBtaWxsaW9ucyBvZiBwYXNz ZW5nZXJzIHNhZmUgb24gbXVsdGktbWlsbGlvbiBkb2xsYXIgbWV0YWwgdHViZXMsIFJhbXAg c2VydmljZSBlbXBsb3llZXMgd2hvIGJ1c3QgdGhlaXIgYXNzZXMgaW4gYWxsIGNsaW1hdGVz IHRvIGVuc3VyZSB0aGUgZnJpZWdodCwgbWFpbCxsdWdnYWdlIGV0Yy4gZ2V0cyBsb2FkZWQg b24gdGhlIGFpcmNyYWZ0Li4gQ3VzdG9tZXIgc2VydmljZSBlbXBsb3llZXMgdGhhdCBhcmUg dGhlIGZyb250IGxpbmUgZW1wbG95ZWVzICAgcmVwcmVzZW50aW5nIHRoZSBVbml0ZWQgQWly bGluZXMgaW1hZ2UgYXQgdGhlIHRpY2tldCBjb3VudGVycyBhbmQgZ2F0ZXMgbWFraW5nIHN1 cmUgdGhhdCB0aGUgQ1VTVE9NRVIgaXMgcHJvcGVybHkgdGVuZGVkIHRvIHJlZ2FyZGxlc3Mg b2Ygd2VhdGhlciwgb3ZlcmJvb2tpbmdzLGNhbmNlbGxhdGlvbnMgZXRjLiBSZXNlcnZhdGlv bnMgYWdlbnRzIHRoYXQgbWFuIHRoZSBwaG9uZXMgMjQgaHJzLiBhIGRheSB0byBzZWxsIHRo ZSBVbml0ZWQgcHJvZHVjdC4gRmxpZ2h0IEF0dGVuZGFudHMgdGhhdCBlbnN1cmUgdGhlIHNh ZmV0eSBvZiB0aG9zZSBvbiBib2FyZCB3aGlsZSBwdXR0aW5nIHVwIHdpdGggcnVkZSBkcnVu a2VuIHBhc3NlbmdlcnMuIFRoZXNlIGFyZSBqdXN0IGEgZmV3IG9mIHRoZSBVbmlvbiByZXBy ZXNlbnRlZCBlbXBsb3llZXMgdGhhdCBoYWQgbm90IHNlZW4gYSByYWlzZSBvZiBBTlkga2lu ZCBmb3IgNy04IHllYXJzLi4uIFdoaWxlIG1hbmFnZW1lbnQgZW1wbG95ZWVzIHdlcmUgZ2V0 dGluZyB2ZXJ5IGdyYWNpb3VzIHJhaXNlcyBkdXJpbmcgdGhlIHNhbWUgdGltZSBkdXJpbmcg c29tZXRoaW5nIGNhbGxlZCAiVmlzb24gMjAwMCIuIFNvbWUgb2YgdGhlc2UgbWFuYWdlbWVu dCBlbXBsb3llZXMgcmVjZWl2ZWQgYWxtb3N0IGRvdWJsZSB0aGVpciBzYWxhcnkhIExldCBp dCdzIHRoZSBmYXVsdCBvZiB0aGUgdW5pb25zPz8/Pz8gCiAgICAgV2hvIGFncmVlZCB0byBs ZXQgdGhlIEFMUEEgbWVtYmVycyBnZXQgdGhlaXIgbWFzc2l2ZSByYWlzZXM/IG1hbmFnZW1l bnQuLgogICAgIFdobyBzcGVudCBNSUxMSU9OUyBhbmQgTUlMTElPTlMgaW4gYW4gb2J2aW91 c2x5IGZ1dGlsZSBhdHRlbXB0IHRvIGJ1eSBVUyBBaXJ3YXlzPyBtYW5hZ2VtZW50Li4uCiAg ICAgIFdobyBzcGVudCBhbm90aGVyIHBpbGUgb2YgZG91Z2ggb24gdGhlIGlkZWEgb2YgYnV5 aW5nIHByaXZhdGUgamV0cyBmb3IgYnVzaW5lc3MgdHJhdmVsZXJzIGluc3RlYWQgb2YgcHJv bW90aW5nIHRoZSBVbml0ZWQgQWlybGluZSBwcm9kdWN0PyBtYW5hZ2VtZW50Li4uCiAgICAg SSBjb3VsZCBwcm9iYWJseSBnbyBvbiBmb3IgYSBmZXcgbW9yZSBwYWdlcyBsaXN0aW5nIHRo ZSBzYW1lIGtpbmQgb2YgY3JhcCB0aGF0IG1hbmFnZW1lbnQgaGFzIGRvbmUgdGhhdCBoYXMg cHV0IHRoaXMgY29tYXBueSB3aGVyZSBpdCBpcyB0b2RheS4uCiAgICAgTm93IHRoZSBVbmlv biBlbXBsb3llZXMgaGF2ZSB0byB0YWtlIGRyYXN0aWMgY3V0cyBpbiBwYXksIGJlbmVmaXRz IGFuZCBqb2Igc2VjdXJpdHkgdG8gaGVscCBzYXZlIHRoaXMgZ3JlYXQgYWlybGluZS4uLkFu ZCBJIHRoaW5rIHRoYXQgdGhleSB3aWxsLCB3aGljaCBpcyB3aHkgSSB0aGluayBub3cgaXMg dGhlIHRpbWUgdGhhdCB0aGV5IG5lZWQgdGhlIFVuaW9uIHRoZSBtb3N0LiBXaGlsZSBJIHRo aW5rIHRoYXQgbW9zdCBvZiB0aGUgVW5pb24gcmVwcmVzZW50ZWQgZW1wbG95ZWVzIHdpbGwg Z2l2ZSB1cCBwYXkgYW5kIGJlbmVmaXRzLCB0aGV5IGFsc28gaGF2ZSB0aGUgcmlnaHQgdG8g aGF2ZSBhbiBvcmdhbml6ZWQgbGFib3IgVW5pb24gbWFrZSBzdXJlIHRoYXQgdGhleSBkb24n dCBnZXQgcHV0IGJhY2sgaW50byBwb3ZlcnR5LCBvciBnZXQgdHJlYXRlZCBsaWtlIHNlY29u ZCBjbGFzcyBjaXRpemVucyB3aGlsZSBtYW5hZ2VtZW50IGNvbnRpbnVlcyB3aXRoIHRoZWly IG1pbmRib2dnbGluZyBzZWxmY2VudGVyZWQgZGVjaXNpb24gbWFraW5nLiBJdCdzIG9uZSB0 aGluZyB0byBnaXZlIGJhY2sgcGF5IGFuZCBiZW5lZml0cywgYnV0IHdoYXQgdGhlIGhlbGwg aXMgdGhlIHJlYXNvbiBmb3IgZ2l2aW5nIHVwIGpvYiBzZWN1cml0eT8gCiAgICAgSSBob3Bl IHRoYXQgdGhlIFVuaW9ucyBhbmQgTWFuYWdlbWVudCBjb21lIHRvZ2V0aGVyIHJhdGlvbmFs eSwgYW5kIHdvcmsgb3V0IGEgZmFpciBhbmQgZXF1aXRhYmxlIHNvbHV0aW9uIHRvIHRoaXMg dW5iZWxpZXZhYmx5IGNvbXBsZXggaXNzdWUsIGFuZCBJIGZ1bGx5IHN1cHBvcnQgdGhlIElB TSBhbmQgdGhlIEFGQSBpbiB0aGVpciBxdWVzdCBmb3IgcHJvdGVjdGlvbiBmb3IgdGhlIHBv b3IgZnJvbnQgbGluZSBlbXBsb3llZXMgYXQgVW5pdGVkLi4uClRvbSAK