QXBhY2hlIEFiZGVyYTogQ2hhbmdlcyBpbiAxLjEuMyBSZWxlYXNlDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KQUJERVJBLTI5MDogQXBwbHkgcGF0Y2ggZnJvbSBBbmRyZWFzIFZlaXRoZW4gYW5kIE9sdmUgU+Z0aGVyIEhhbnNlbiB0byBmaXggdXNpbmcgQXhpb20gMS4yLjEyIGJyZWFrcyBBYmRlcmEtcGFyc2VyIC0gY29tcGlsZS1lcnJvcnMNCnIxMTM3MDM4OiBmdXJ0aGVyIElTTyA2MzktMiBsYW5ndWFnZSBjb2RlcyBhZGRlZA0KcjExMzY5MTE6IHJlZmFjdG9yaW5nO2FkZGVkIHNvbWUgbmV3IElTTyA2MzktMiBsYW5ndWFnZSBjb2Rlcw0KcjExMzY4Njg6IGFkZGVkIHNvbWUgbmV3IElTTyA2MzktMiBsYW5ndWFnZSBjb2Rlcw0KQUJERVJBLTI4NTogZGVwcy5wcm9wZXJ0aWVzIGphdmFtYWlsLmRpciBpcyBub3QgdmFsaWQsIHVwZGF0ZWQgZGlyZWN0b3J5IGluIGRlc2NyaXB0aW9uDQpyMTEzNjgxNzogaGFybW9uaXplZCBnZXJvbmltby1hY3RpdmF0aW9uIHZlcnNpb24NCnIxMTMyOTQwOiByZW1vdmVkIGJyb2tlbiB0ZXN0DQpBQkRFUkEtMjgxOiBBZGQgYXhpb20tYXBpIGRlcGVuZGVuY3kgdG8gcGFyc2VyDQpBQkRFUkEtMjgyOiBNYXZlbiBidWlsZCBwcm9ibGVtDQpyMTA2NTM0NjogYWRkZWQgcXVhaWxpdHkgZmFjdG9ycyB0byByZXF1ZXN0IGFjY2VwdCBoZWFkZXINCkFCREVSQS0yNTk6IE51bGxQb2ludGVyRXhjZXB0aW9uIGhhcHBlbnMgd2hlbiB0cnlpbmcgdG8gZGVjb2RlIEhFQUQgcmVzcG9uc2UNCnIxMDYwMDU2OiBmaW5hbGx5IHJlbW92ZWQgb3V0ZGF0ZWQgY291Y2hkYiBhZGFwdGVyDQpBQkRFUkEtMjc5OiBwYXRjaCBmcm9tIEFudG9pbmUgVG91bG1lIHRvIGZpeCBGYXVsdHkgY2xhc3Nsb2FkaW5nIC0gdW5yZWFjaGFibGUgY29kZQ0KcjEwNTgwMDg6IHVwZGF0ZWQgcmVhZG1lIGFuZCBidWlsZCBzY3JpcHQgDQpyMTA1NzkyNjogbW92ZWQgZG9jbyB0byB3aWtpDQpyMTIxMDA5NCBBQkRFUkEtMjg0OiBVcGRhdGVkIHRoZSBBeGlvbSB2ZXJzaW9uIGluIHRoZSBhbnQgYnVpbGQgKHRvIG1hdGNoIHRoZSBvbmUgdXNlZCBpbiB0aGUgTWF2ZW4gYnVpbGQpLg0KcjEyMTAxMjYgT25seSBhZGQgZGVmYXVsdCBuYW1lc3BhY2UgZGVjbGFyYXRpb25zIG9uICJzZXJ2aWNlIiBlbGVtZW50cyB0aGF0IGFyZSBjcmVhdGVkIHByb2dyYW1tYXRpY2FsbHksIGJ1dCBub3Qgb24gZWxtZW50cyB0aGF0IGFyZSBjcmVhdGVkIGJ5IHRoZSBwYXJzZXIuIE90aGVyd2lzZSB0aGlzIG1heSByZXN1bHQgaW4gaW5jb25zaXN0ZW50IG5hbWVzcGFjZXMuIFRoaXMgY2hhbmdlIGFsc28gbWFrZXMgQWJkZXJhIDEueCBjb21wYXRpYmxlIHdpdGggQXhpb20gMS4yLjEzICh3aGljaCBkZXRlY3RzIHRoaXMgc2l0dWF0aW9uIGFuZCB0cmlnZ2VycyBhbiBleGNlcHRpb24pLg0KcjEzNzE4NzQgTGV0IHRoZSByb290IFBPTSBpbmhlcml0IGZyb20gdGhlIEFwYWNoZSBzdXBlci1QT00uDQpyMTM3MTg3NSBQcmV2ZW50IHRoZSBidWlsZCBmcm9tIGNyZWF0aW5nIGEgZGVyYnkubG9nIGZpbGUgaW4gdGhlIHNvdXJjZSB0cmVlIChpbnN0ZWFkLCBjcmVhdGUgaXQgaW4gdGhlIHRhcmdldCBkaXJlY3RvcnkpLg0KcjEzNzE4NzYgRml4ZWQgc3ZuOmlnbm9yZS4NCnIxMzcxODgyIEF2b2lkIHVzYWdlIG9mIGRlcHJlY2F0ZWQgVVVJREdlbmVyYXRvci4NCnIxMzcxODg1IFJlbW92ZWQgdW51c2VkIGF0dHJpYnV0ZS4NCnIxMzcxODg3IFJlbW92ZWQgdW5uZWNlc3NhcnkgbnVsbCBjaGVja3MuDQpyMTM3MTk1NiBSZW1vdmVkIG1ldGhvZCB0aGF0IGR1cGxpY2F0ZXMgY29kZSBmcm9tIHRoZSBiYXNlIGNsYXNzLg0KcjEzNzE5NjIgUmVhbGlnbmVkIHRoZSBjb250cm9sIGZsb3cgaW4gRk9NQnVpbGRlciB3aXRoIHRoZSBjb250cm9sIGZsb3cgaW4gdGhlIHN0YW5kYXJkIEF4aW9tIGJ1aWxkZXJzLg0KcjEzNzE5ODQgUmVtb3ZlZCB1bm5lY2Vzc2FyeSByZXBvc2l0b3J5IGRlY2xhcmF0aW9uLiBUaGUgQXBhY2hlIHNuYXBzaG90IHJlcG9zaXRvcnkgaXMgY29uZmlndXJlZCBpbiB0aGUgQXBhY2hlIHN1cGVyLVBPTS4NCnIxMzcyMDI5IERvbid0IGxldCB0aGUgYnVpbGQgZGVwZW5kIG9uIGV4dGVybmFsIHJlc291cmNlcyAob3RoZXIgdGhhbiBhcnRpZmFjdHMgZnJvbSBNYXZlbiByZXBvc2l0b3JpZXMpLiBBZGRlZCB0aGUgdGVzdCBjYXNlcyBmcm9tIGZlZWR2YWxpZGF0b3Iub3JnIHRvIHRoZSBzb3VyY2VzLiBUaGV5IGFyZSBNSVQgbGljZW5zZWQsIHdoaWNoIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgQXBhY2hlIGxpY2Vuc2UuDQpyMTM3MjA1NyBBZGRlZCBhIHVuaXQgdGVzdCB0byB0ZXN0IHZhcmlvdXMgcGFyc2VyIG9wdGlvbnMgZm9yIHdoaWNoIHRoZXJlIHdhcyBubyB0ZXN0IGNvdmVyYWdlIHlldC4NCnIxMzcyMTU1IFN0YXJ0ZWQgdG8gZGVjb3VwbGUgQWJkZXJhIGZyb20gdGhlIGludGVybmFscyBvZiB0aGUgQXhpb20gYnVpbGRlciBieSBtb3ZpbmcgdGhlIGZpbHRlcmluZyBsb2dpYyAoZm9yIHdoaXRlc3BhY2UsIGNvbW1lbnRzLCBldGMuKSBvdXQgb2YgRk9NQnVpbGRlciBpbnRvIGFuIFhNTFN0cmVhbVJlYWRlciB3cmFwcGVyLg0KcjEzNzIxNjEgTm8gbmVlZCB0byByZXBsYWNlIHRoZSBlbnRpcmUgU3RBWE9NQnVpbGRlciNuZXh0KCkgbWV0aG9kLiBBdCB0aGlzIHBvaW50IHdlIG9ubHkgbmVlZCB0byBvdmVycmlkZSB0aGUgbWV0aG9kIHRvIHRyYW5zZm9ybSBleGNlcHRpb25zLg0KcjEzNzIxNjUgQSBwcm9jZXNzaW5nIGluc3RydWN0aW9uIGlzIGFsd2F5cyBjb21wbGV0ZS4NCnIxMzcyMTc0IFVzZSBtZWFuaW5nZnVsIHBhcmFtZXRlciBuYW1lcy4NCnIxMzcyNDk3IFNpbmNlIHdlIGZpbHRlciBvdXQgRFREcywgd2UgZG9uJ3QgbmVlZCB0byBoYW5kbGUgdGhlbSBpbiBGT01Eb2N1bWVudCNjbG9uZSgpLg0KcjEzNzQ1NTAgRml4ZWQgdGhlIHFuYW1lQWxpYXNNYXAgc3R1ZmYuIEl0IHdhcyBub3QgZXhhY3RseSB3b3JraW5nIGFzIGV4cGVjdGVkIGJlY2F1c2UgQXhpb20gcmVzZXRzIHRoZSBuYW1lc3BhY2UgaW5mb3JtYXRpb24gYWZ0ZXIgYW4gZWxlbWVudCBoYXMgYmVlbiBjcmVhdGVkLiBNb3ZlZCB0aGUgbG9naWMgdG8gRk9NU3RBWEZpbHRlciBzbyB0aGF0IFFOYW1lIGFsaWFzaW5nIGlzIGVudGlyZWx5IHRyYW5zcGFyZW50IHRvIEF4aW9tLiBBbHNvIGFkZGVkIGEgdGVzdCBjYXNlLg0KcjEzNzQ2OTkgRm9yZ290IHRvIGdpdmUgdGhlIHVuaXQgdGVzdCBhIG1lYW5pbmdmdWwgbmFtZS4NCnIxMzc0NzAwIEFkZGVkIGEgdW5pdCB0ZXN0IGZvciBhdHRyaWJ1dGUgZmlsdGVyaW5nLg0KcjEzNzQ3MDIgQWxzbyBtb3ZlIGF0dHJpYnV0ZSBmaWx0ZXJpbmcgdG8gRk9NU3RBWEZpbHRlciwgc28gdGhhdCBGT01CdWlsZGVyIG5vIGxvbmdlciBuZWVkcyB0byBvdmVycmlkZSBTdEFYT01CdWlsZGVyI3Byb2Nlc3NBdHRyaWJ1dGVzLiBOb3csIGFsbCBmaWx0ZXJpbmcgYW5kIHRyYW5zZm9ybWF0aW9uIGlzIGRvbmUgaW4gRk9NU3RBWEZpbHRlci4NCnIxMzc0NzA3IFJlbW92ZWQgY29uc3RydWN0b3JzIHRoYXQgd291bGQgYWxsb3cgdG8gY3JlYXRlIE9NRWxlbWVudCBpbnN0YW5jZXMgdGhhdCBhcmUgbm90IGxpbmtlZCB0byBhbiBPTUZhY3RvcnkuDQpyMTM3NDcyNCBTb21lIGNvZGUgc2ltcGxpZmljYXRpb25zLg0KcjEzNzQ3MzIgV2hlbiBjcmVhdGluZyBhbiBlbGVtZW50IGZyb20gdGhlIGJ1aWxkZXIsIG9ubHkgaW5pdGlhbGl6ZSB0aGUgbG9jYWwgbmFtZS4gVGhlIG5hbWVzcGFjZSB3aWxsIGJlIHNldCBieSBTdEFYT01CdWlsZGVyI3Byb2Nlc3NOYW1lc3BhY2VEYXRhLiBUaGlzIHNob3VsZCBhdm9pZCB1bm5lY2Vzc2FyeSBjcmVhdGlvbiBvZiBPTU5hbWVzcGFjZSBvYmplY3RzLg0KcjEzNzQ3NjAgQXZvaWQgY2FsbGluZyBPTUVsZW1lbnQjcmVtb3ZlQXR0cmlidXRlKE9NQXR0cmlidXRlKSB3aXRoIGEgbnVsbCB2YWx1ZS4NCnIxMzc0NzY2IEVsaW1pbmF0ZWQgYSBjb3VwbGUgb2YgdW5uZWNlc3NhcnkvaW5jb3JyZWN0IGNhbGxzIHRvIHNldFBhcmVudEVsZW1lbnQuDQpyMTM3NDgxNSBVcGdyYWRlZCBBeGlvbSB0byAxLjIuMTQtU05BUFNIT1QuDQpyMTM3NDgxNiBSZW1vdmVkIGVtcHR5IHN2bjptZXJnZWluZm8gcHJvcGVydGllcy4NCnIxNDA3MjkxIGFkZGVkIHBhdGNoIGZyb20gV2lsbGVtIEppYW5nIGZvciBBQkRFUkEtMjkzDQpyMTQwNzM3OSBmaXggZm9yIEFCREVSQS0zMDkNCnIxNDA5Mjg5IFNldCBzdm46aWdub3JlLg0KcjE0MDkzMzEgQWRhcHQgdG8gbGF0ZXN0IGNoYW5nZXMgaW4gQXhpb20uDQpyMTQxMjMyOSBmaXggZm9yIHRoZSBKYXZhNyBidWlsZCBwcm9ibGVtcyBmcm9tIEFCREVSQS0zMTENCnIxNDIyNjE2IFN3aXRjaGVkIHRvIEF4aW9tIHJlbGVhc2UgdmVyc2lvbi4NCg0KQXBhY2hlIEFiZGVyYTogQ2hhbmdlcyBpbiAxLjEuMiBSZWxlYXNlDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KQUJERVJBLTI3ODogRml4IHRvIHJlbGF4IHRoZSB2ZXJzaW9uIHJlcXVpcmVtZW50IGZvciBjb21tb25zLWNvZGVjIGluIE9TR2kgbWFuaWZlc3RzDQpBQkRFUkEtMjc3OiBBcHBseSBwYXRjaCBmcm9tIE9sdmUgU+Z0aGVyIEhhbnNlbiB0byBmaXggRXhjZXNzaXZlIGNhbGxzIHRvIGZsdXNoKCkgb24gdGhlIFdyaXRlciByZXNwb25zaWJsZSBmb3Igd3JpdGluZyBKU09OU3RyZWFtIGRhdGEuDQphZGRlZCB1bml0IHRlc3QgZm9yIEFCREVSQS0yNTEgYW5kIGFuZCBBQkRFUkEtMjQzDQphcHBsaWVkIHBhdGNoIGZvciBBQkRFUkEtMjUxIENoYXJzZXQgaXNzdWUgaW4gRk9NRGl2LmdldEludGVybmFsVmFsdWUoKSBsZWFkcyB0byBjb3JydXB0IHJldHVybiB2YWx1ZSBvbiBub24tQVNDSUkgcGxhdGZvcm1zDQpyZW1vdmVkIGNvdWNoZGIgYWRhcHRlciBmcm9tIGJ1aWxkIGZpbGVzIHRvIGdldCByaWQgb2YgdGhlIGFkZGl0aW9uYWwgbWF2ZW4gcmVwbzsgdXBkYXRlZCBzb21lIGRlcGVuZGVuY2llcw0KZml4IGZvciBBQkRFUkEtMjc1IEVycm9yIGluIFR1cmtpc2ggTG9jYWxlIHdoZW4gdXNpbmcgR1pJUCBjb21wcmVzc2lvbg0KZml4IGZvciBBQkRFUkEtMjU4IEFiZGVyYSBuZWVkcyB0byBzdXBwb3J0IElQdjYNCmZpeGVkIG51bGwgcG9pbnRlcnM7IGFkZGVkIHVuaXQgdGVzdHMgLSBwcmVwYXJpbmcgYSByZWZhY3RvcmluZw0KDQpBcGFjaGUgQWJkZXJhOiBDaGFuZ2VzIGluIDEuMS4xIFJlbGVhc2UNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpyMTAzOTk0NDogQUJERVJBLTI2MjogcGF0Y2ggZnJvbSBOYXRoYW4gUmVlc2UgdG8gZml4IEVudHJ5UmVxdWVzdFByb2Nlc3NvciBhbmQgTWVkaWFSZXF1ZXN0UHJvY2Vzc29yIGRvIG5vdCBzdXBwb3J0IFBPU1QiDQpyMTAzOTY2NDogQUJERVJBLTI3MDogQXBwbHkgcGF0Y2ggZnJvbSBHdWlsbGF1bWUgTm9kZXQgZm9yIE9TR2kgbWV0YS1kYXRhIGlzIGJyb2tlbg0KcjEwMzkyMTA6IFVwZGF0ZSB0byB1c2UgdGhlIG1vdyByZWxlYXNlZCAxLjIuMTAgdmVyc2lvbiBvZiBBeGlvbSBpbnN0ZWFkIG9mIHRoZSBzbmFwc2hvdA0KcjEwMDYxMTQ6IEFCREVSQS0yNjc6IEFwcGx5IHBhdGNoIGZyb20gQW5kcmVhcyBWZWl0aGVuIHRvIHVzZSBsYXRlc3QgYXhpb20gdG8gZ2V0IGZpeCBmb3IgcGVyZm9ybWFuY2UgaXNzdWUNCnI5NTY0NzU6IEFkZCBhbiBleHBsaWNpdCBjYXN0IHRvIGZpeCBhIGNvbXBpbGUgZXJyb3Igd2hlbiBidWlsZGluZyB3aXRoIEpESyAxLjUNCnI5NTU4OTE6IEFkZCBzb21lIG5vdGVzIG9uIHJlbGVhc2luZyB0aGUgYXJ0aWZhY3RzDQpyOTU1ODY4OiBVcGRhdGUgY2hhbmdlcyBmaWxlIHdpdGggbGF0ZXN0IGZpeCBmcm9tIEpvc2ggR29yZGluZWVyIGZvciBVUkkgdGVtcGxhdGVzDQoNCkFwYWNoZSBBYmRlcmE6IENoYW5nZXMgaW4gMS4xIFJlbGVhc2UNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0Kcjk1NTUwMjogRml4IG5lZ2F0aXZlIGJlaGF2aW91ciBvbiB1cmkgdGVtcGxhdGVzDQpyOTQxMjU5OiBBZGQgYSBjaGFuZ2VzIGZpbGUgbGlzdGluZyB0aGUgY2hhbmdlcyBzaW5jZSAxLjANCnI5NDQxNDM6IFJlbW92ZSBvbGQgS0VZUyBmaWxlcywgdGhlIGFjdHVhbCBvbmUgdGhhdHMgdXNlZCBpcyBhdDogaHR0cDovL3d3dy5hcGFjaGUub3JnL2Rpc3QvYWJkZXJhL0tFWVMNCnI5NDQ3MzE6IG1pbm9yIHJlZmFjdG9yaW5nIG9mIHVuaXQgdGVzdHM7IGFkb3B0IHRlc3Qgc3RydWN0dXJlIHRvIHNyYyBzdHJ1Y3R1cmUNCnI5NDQ3NDA6IHJlbW92aW5nIGFsbCBvY2N1cmVuY2VzIG9mICdleHRlbmQgVGVzdGNhc2UnDQpyOTQ0NzQ1IGFuZCBvdGhlcnM6IHJlcGxhY2VkIGFsbCBvY2N1cmVuY2VzIG9mICdleHRlbmRzIEFzc2VydCcgd2l0aCBzdGF0aWMgaW1wb3J0cw0Kcjk0NDc4MDogdXBkYXRlIHRvIGp1bml0IDQuOC4xDQpyOTQ0NzkyOiBlYXN5bW9jayB2ZXJzaW9uIHVwZGF0ZQ0Kcjk0NDgwMzogZml4IGZvciBBQkRFUkEtMTAyIC0gVW5pdCB0ZXN0cyBlcXVhbGl0eSBhc3NlcnRpb25zLCBwYXJhbXMgaW4gd3Jvbmcgb3JkZXINCnI5NDQ4MTA6IHJlbW92ZWQgdW5uZWNlc3NhcnkgdHJ5L2NhdGNoIGZyb20gVW5pdCBUZXN0DQpyOTQ0ODEzIGFuZCBvdGhlcnM6IGZpeCBmb3IgQUJERVJBLTEwMg0Kcjk0NDg4MzogdXBkYXRlZCBqZXR0eSB2ZXJzaW9uDQpyOTQ1Mzc2OiBmaXggZm9yIEFCREVSQS0yNDIgLSBGYWlsaW5nIHRvIGNvbnZlcnQgc29tZSBiaWcgY2FwaXRhbCBsZXR0ZXJzIGZyb20gSFRNTCBlc2NhcGUgY2hhcmFjdGVycyB0byBVVEYtOA0Kcjk0Njc1NTogYWRkZWQgRk9NUGFyc2VyT3B0aW9uc1Rlc3Q7IGZpeGVkIE9FbGlnDQpyOTQ2NzU5OiBhZGRlZCBsaWNlbnNlIGhlYWRlcg0Kcjk0Njc2OTogYWRkZWQgVGVzdGNhc2UgZm9yIEhUTUwgc3BlY2lhbCBjaGFyYWN0ZXJzDQpyOTQ3MTAyOiBtaW5vciB2ZXJzaW9uIHVwZGF0ZXMNCnI5NDc0NTA6IGV4dGVuZGVkIGFuZCByZWZhY3RvcmVkIHVuaXQgdGVzdHMgaW4gY29yZQ0Kcjk0ODIwNDogcGF0Y2ggZm9yIEFCREVSQS0yNTAgKHRoZSBvcmlnaW5hbCBwYXRjaCBjb3VsZG4ndCBiZSBhcHBsaWVkIGFzIHRoZXJlIHdhcyBhIHJlZmFjdG9yaW5nIGluIHRoZSBtZWFudGltZSkNCnI5NTE2NjY6IFJlZm9ybWF0IGNvZGViYXNlIHVzaW5nIHRoZSB0ZW1wbGF0ZSBhdCBodHRwczovL3N2bi5hcGFjaGUub3JnL3JlcG9zL2FzZi9hYmRlcmEvZXRjLw0Kcjk0MDM4MDogQUJERVJBLTEwMjogQXBwbHkgcGF0Y2ggZnJvbSBDaHJpc3RpbmUgS29wcGVsdCBmb3IgVW5pdCB0ZXN0cyBlcXVhbGl0eSBhc3NlcnRpb25zLCBwYXJhbXMgaW4gd3Jvbmcgb3JkZXINCnI5NDAyMTg6IEZpeCBHZW9SU1MgZXh0ZW5zaW9uIGZyb20gTmF0aGFuIFJlZXNlIG9uIE1MIC0gaHR0cDovL3d3dy5tYWlsLWFyY2hpdmUuY29tL2RldkBhYmRlcmEuYXBhY2hlLm9yZy9tc2cwMDI1OS5odG1sDQpyOTQwMjE1OiBBQkRFUkEtMjMzOiBpbml0QmFzZVVyaSgpIGluIHRoZSBjbGFzcyBTZXJ2bGV0UmVxdWVzdENvbnRleHQgd2lsbCBhcHBlbmQgdGhlIHBvcnQgNDQzIHRvIGh0dHBzIHJlcXVlc3RzLCBmaXhlZCBhcyBzdWdnZXN0ZWQgaW4gSklSQSBieSBKIEcNCnI5NDAxOTU6IFVwZGF0ZSBqYXhlbiBsaWNlbnNlIHRleHQNCnI5MzYwMzY6IEFsbG93aW5nIHRvIHVzZSBhIGN1c3RvbSBYTUxSZWFkZXIgdG8gcGFyc2UgZG9jdW1lbnRzLiBUaGFua3MgdG8gRGFuIEJlYXVsaWV1Lg0KcjkzNjAzMDogcmV2ZXJ0aW5nIEFCREVSQS0yMTAsIHNpbmNlIGhhZCBvdGhlciBzaWRlIGVmZmVjdHMuIFRoYW5rcyB0byBDaw0KcjkzNjAyNzogZml4aW5nIGEgYnVnIGluaXRpYWxpemluZyBwcm92aWRlcnMNCnI5MTYyODc6IGZpeGVzIHJlZHVuZGFudCBhc3NpZ25hdGlvbiBvZiBtaW1lVHlwZS4gVGhhbmtzIHRvIFBhc2NhbCBDaHJpc3RvcGgNCnI5MTQ5OTg6IGZpeGluZyBwcm92aWRlcnMgZGlzY292ZXJpbmcgZXJyb3JzLiBOb3cgd2UganVzdCBuZWVkIHRvIGZpeCB0aGUgZmFpbGluZyB0ZXN0cw0Kcjc4MjczMjogRG9uJ3QgdXNlIHRoZSBkaXNjb3ZlcnkgbWVjaGFuaXNtIGZvciBjYWNoZSBpbXBscy4gZm9yIG5vdywgdGhpcyBtZWFucyB0aGUgQWJkZXJhQ2xpZW50IGlzIGhhcmQgY29kZWQgdG8gdXNlIHRoZSBMUlVDYWNoZSBpbi1tZW1vcnkgY2FjaGUgaW1wbGVtZW50YXRpb24uIFRoZSBvcmlnaW5hbCBkZXNpZ24gbWVhbnQgZm9yIHRoZSBjYWNoZSBpbXBsZW1lbnRhdGlvbiB0byBiZSBwbHVnZ2FibGUuIElkZWFsbHksIGhvd2V2ZXIsIHRoZSBIdHRwQ2xpZW50IHdvdWxkIGluY29ycG9yYXRlIHNvbWUga2luZCBvZiBjYWNoZSBzbyB3ZSB3b3VsZG4ndCBoYXZlIHRvIGRvIHRoaXMgYXQgYWxsLiBJJ20gd29uZGVyaW5nIGlmIHRoZXJlJ3Mgc29tZSB3YXkgd2UgY291bGQgc2VwYXJhdGUgYWxsIHRoZSBodHRwIGNsaWVudCByZWxhdGVkIHN0dWZmIG91dCB0byBhIGRpc3RpbmN0IHN1YnByb2plY3Q/DQpyNzgyNTcwOiBBcHBsaWVkIHBhdGNoIGZyb20gQUJERVJBLTIzNiAtIENyZWF0ZSBPU0dpIEJ1bmRsZXMgZm9yIEFiZGVyYSB1c2luZyB0aGUgTWF2ZW4gRmVsaXggcGx1Z2luDQpyNzgwNjYyOiBMUlVDYWNoZUZhY3RvcnkgbmVlZHMgYSBjb25zdHJ1Y3RvciB0aGF0IHRha2VzIGFuIEFiZGVyYSBwYXJhbWV0ZXINCnI3ODA2NjE6IEFkZGVkIGRlcGVuZGVuY3kgb24gY29tbW9ucy1jb2RlYyBmb3IgaTE4biBidWlsZA0Kcjc3NDAyNzogYXZvaWQgcG90ZW50aWFsIE5QRQ0Kcjc3MzYxMDogRml4IGNvbXBpbGVyIGVycm9yDQpyNzczMjk4OiByZW1vdmUgdW5uZWNlc3NhcnkgY29tcGlsZXIgd2FybmluZw0Kcjc3MzI5NzogRml4IGZvciBodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL0FCREVSQS0yMzENCnI3NzI0NDY6IFJlZmFjdG9yaW5nIG9mIHNvbWUgb2YgdGhlIGJhc2UgbGV2ZWwgY2xhc3MgZGlzY292ZXJ5IGNvZGUuIFRoZSBtb3ZlcyB0aGluZ3MgdG8gYSBtb3JlIGxvZ2ljYWwgbG9jYXRpb24sIGltcHJvdmVzIHRoZSByZWxpYWJpbGl0eSBvZiB0aGUgaW1wbGVtZW50YXRpb24gYW5kIHNpbXBsaWZpZXMgdGhlIGNvZGUgc3RydWN0dXJlIGEgYml0Lg0Kcjc3MjQzOTogRml4IE5QRSB3YWl0aW5nIHRvIGhhcHBlbg0Kcjc3MjQxNzogUmVmYWN0b3Jpbmcgb2Ygc29tZSBvZiB0aGUgYmFzZSBsZXZlbCBjbGFzcyBkaXNjb3ZlcnkgY29kZS4gVGhlIG1vdmVzIHRoaW5ncyB0byBhIG1vcmUgbG9naWNhbCBsb2NhdGlvbiwgaW1wcm92ZXMgdGhlIHJlbGlhYmlsaXR5IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBhbmQgc2ltcGxpZmllcyB0aGUgY29kZSBzdHJ1Y3R1cmUgYSBiaXQuDQpyNzcyNDA5OiByZW1vdmUgdW5uZWNlc3NhcnkgY29tcGlsZXIgd2FybmluZ3MNCnI3NzIzNDM6IFNvbWUgcmVmYWN0b3JpbmcuIHRoZSBFbmNvZGluZ1V0aWwgY2xhc3MgaXNuJ3Qgc3RyaWN0bHkgcmVxdWlyZWQsIHdhcyBtb3N0bHkgZGVwcmVjYXRlZC4uLiBtb3ZlZCB0aGUgc3RpbGwgcmVsZXZhbnQgY29kZSB0byBvdGhlciBhcmVhcyBhbmQgcmVtb3ZlZCB0aGUgRW5jb2RpbmdVdGlsIGNsYXNzLg0Kcjc3MjMyNDogRml4IGZvciBodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL0FCREVSQS0yMjUNCnI3NzIzMTY6IEZpeGluZyB0aGUgYW50IGJ1aWxkDQpyNzcxNTYyOiBJZ25vcmUgZWNsaXBzZSBhcnRpZmFjdHMNCnI3NzE0ODc6IEZpeCBmb3IgaHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9BQkRFUkEtMjIyIFRoZSBQZWVrQWhlYWRJbnB1dFN0cmVhbSB3YXMgd3JpdGluZyB0b28gbXVjaCBiYWNrIHRvIHRoZSBidWZmZXIsIHdoaWNoIGludHJvZHVjZXMgMHgwIGNoYXJzIHRvIHRoZSBzdHJlYW0NCnI3NzE0NTA6IEZvciBodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL0FCREVSQS0yMTANCg0KICAgUmVzcG9uc2VDb250ZXh0IG5lZWRzIHRvIGJlIGFibGUgdG8gc3VwcG9ydCBub24tQXRvbSBiaW5hcnkgcmVzb3VyY2VzIHNvIHdlIGNhbm5vdCBhc3N1bWUgdGhhdCANCiAgIEFiZGVyYVNlcnZsZXQgc2hvdWxkIGFsd2F5cyB1c2UgYSBXcml0ZXIuIFRoaXMgYWRkcyBhIG5ldyBtZXRob2QgdG8gUmVzcG9uc2VDb250ZXh0IGNhbGxlZCBpc0JpbmFyeSwNCiAgIHdoaWNoIGRlZmF1bHRzIHRvIGZhbHNlLiAgSWYgdHJ1ZSwgdGhlIEFiZGVyYVNlcnZsZXQgd2lsbCBwYXNzIHRoZSBPdXRwdXRTdHJlYW0gdG8gUmVzcG9uc2VDb250ZXh0LA0KICAgaWYgZmFsc2UsIHRoZSBzZXJ2bGV0IHdpbGwgcGFzcyB0aGUgV3JpdGVyIHRvIFJlc3BvbnNlQ29udGV4dC4gDQoNCiAgIFRoaXMgYWxzbyBmaXhlcyBhIGJ1ZyBpbiBSZXNwb25zZUNvbnRleHRXcmFwcGVyLg0Kcjc3MTQ0NjogT25lIGZpeCBmb3IgdHdvIGlzc3VlczogQUJERVJBLTIxMywgQUJERVJBLTIxMTogTm8gd2F5IHRvIGV4cGxpY2l0bHkgZGVjbGFyZSBuYW1lc3BhY2VzIHVzaW5nIFN0cmVhbVdyaXRlciBpbnRlcmZhY2UNCiAgICAgICAgIFN0cmVhbVdyaXRlciBpbnRlcmZhY2Ugbm90IG91dHB1dHRpbmcgY29ycmVjdCBuYW1lc3BhY2UgZm9yIGF0b206bGluayBlbGVtZW50IGluIHNlcnZpY2UgZG9jcw0Kcjc3MTQ0NDogSVJJLnRvU3RyaW5nKCkgZG9lcyBub3QgcHJlc2VydmUgZW1wdHkgZnJhZ21lbnQgaWRlbnRpZmllcnMgYW5kIHF1ZXJpZXMgUGVyIGh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvQUJERVJBLTIxOA0Kcjc3MTQ0MjogQ3JlYXRpbmcgQWJkZXJhQ2xpZW50IHVzaW5nIHByZWNvbmZpZ3VyZWQgSHR0cENsaWVudA0Kcjc0OTE1NTogUmVtb3ZlIG1pcy1zcGVsbGVkIDxyZXBvc2lvcmllcz4gZWxlbWVudC4NCnI3Mzc4ODM6IGh0bWxQYXJzZXIgbm90aWNlIGFkZGVkIHRvIG5vdGljZS1zdXBwbGVtZW50DQo=