PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IS0tCiAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZSBvciBtb3JlCiAgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZSBkaXN0cmlidXRlZCB3aXRoCiAgdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLgogIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlIHRvIFlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wCiAgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgKICB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLS0+CjwhRE9DVFlQRSBkb2N1bWVudCBbCiAgPCFFTlRJVFkgcHJvamVjdCBTWVNURU0gInByb2plY3QueG1sIj4KXT4KPD94bWwtc3R5bGVzaGVldCB0eXBlPSJ0ZXh0L3hzbCIgaHJlZj0idG9tY2F0LWRvY3MueHNsIj8+Cjxkb2N1bWVudCB1cmw9ImNoYW5nZWxvZy5odG1sIj4KCiAgJnByb2plY3Q7CgogIDxwcm9wZXJ0aWVzPgogICAgPGF1dGhvciBlbWFpbD0icmVtbUBhcGFjaGUub3JnIj5SZW15IE1hdWNoZXJhdDwvYXV0aG9yPgogICAgPGF1dGhvciBlbWFpbD0ieW9hdnNAYXBhY2hlLm9yZyI+WW9hdiBTaGFwaXJhPC9hdXRob3I+CiAgICA8YXV0aG9yIGVtYWlsPSJmaGFuaWtAYXBhY2hlLm9yZyI+RmlsaXAgSGFuaWs8L2F1dGhvcj4KICAgIDxhdXRob3IgZW1haWw9InBlcm9AYXBhY2hlLm9yZyI+UGV0ZXIgUm9zc2JhY2g8L2F1dGhvcj4KICAgIDxhdXRob3IgZW1haWw9Imtrb2xpbmtvQGFwYWNoZS5vcmciPktvbnN0YW50aW4gS29saW5rbzwvYXV0aG9yPgogICAgPGF1dGhvciBlbWFpbD0ia2Z1amlub0BhcGFjaGUub3JnIj5LZWlpY2hpIEZ1amlubzwvYXV0aG9yPgogICAgPGF1dGhvciBlbWFpbD0iamltQGFwYWNoZS5vcmciPkppbSBKYWdpZWxza2k8L2F1dGhvcj4KICAgIDxhdXRob3IgZW1haWw9Im10dXJrQGFwYWNoZS5vcmciPk1sYWRlbiBUdXJrPC9hdXRob3I+CiAgICA8dGl0bGU+Q2hhbmdlbG9nPC90aXRsZT4KICA8L3Byb3BlcnRpZXM+Cgo8Ym9keT4KPCEtLSBTZWN0aW9uIG5hbWVzOgogR2VuZXJhbCwgQ2F0YWxpbmEsIENveW90ZSwgSmFzcGVyLCBDbHVzdGVyLCBXZWJhcHBzLCBPdGhlcgotLT4KPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS4zNiAobWFya3QpIiBydGV4dD0iIj4KICA8c3Vic2VjdGlvbiBuYW1lPSJHZW5lcmFsIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIHRvIEFwYWNoZSBDb21tb25zIERhZW1vbiAxLjAuMTAuIChtYXJrdCkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIHRvIEFwYWNoZSBDb21tb25zIFBvb2wgMS41LjcuIChtYXJrdCkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIHRvIEFwYWNoZSBUb21jYXQgTmF0aXZlIDEuMS4yNC4gKG1hcmt0KQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVcGRhdGUgdG8gRWNsaXBzZSBKRFQgMy43LjIuIChtYXJrdCkKICAgICAgPC91cGRhdGU+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2F0YWxpbmEiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjUyNjc3PC9idWc+OiBUaGUgbmV3IDxjb2RlPlNldENoYXJhY3RlckVuY29kaW5nRmlsdGVyPC9jb2RlPiBuZWVkcwogICAgICAgIHRvIGltcGxlbWVudCA8Y29kZT5GaWx0ZXI8L2NvZGU+IHRvIGJlIHVzZWZ1bC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjUzMDUwPC9idWc+OiBGaXggWE9SIGFyaXRobWV0aWNzIGFuZCBjaGFyc2V0IGlzc3VlIHdoZW4gY2FsY3VsYXRpbmcKICAgICAgICBlbnRyb3B5IHRvIGluaXRpYWxpemUgcmFuZG9tIG51bWJlcnMgZ2VuZXJhdG9yIGluIHNlc3Npb24gbWFuYWdlci4gQmFzZWQKICAgICAgICBvbiBhIHByb3Bvc2FsIGJ5IEFuZHJhcyBSb3pzYS4gKGtrb2xpbmtvL2ppbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz41MzUzMTwvYnVnPjogQmV0dGVyIGNoZWNraW5nIGFuZCBpbXByb3ZlZCBlcnJvciBtZXNzYWdlcyBmb3IKICAgICAgICBkaXJlY3RvcnkgY3JlYXRpb24gZHVyaW5nIGF1dG9tYXRpYyBkZXBsb3ltZW50LiAoc2NodWx0ei9ra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgVmFyaW91cyBpbXByb3ZlbWVudHMgdG8gdGhlIERJR0VTVCBhdXRoZW50aWNhdG9yIGluY2x1ZGluZwogICAgICAgIDxidWc+NTI5NTQ8L2J1Zz4sIHRoZSBkaXNhYmxpbmcgY2FjaGluZyBvZiBhbiBhdXRoZW50aWNhdGVkIHVzZXIgaW4gdGhlCiAgICAgICAgc2Vzc2lvbiBieSBkZWZhdWx0LCB0cmFja2luZyBzZXJ2ZXIgcmF0aGVyIHRoYW4gY2xpZW50IG5vbmNlcyBhbmQgYmV0dGVyCiAgICAgICAgaGFuZGxpbmcgb2Ygc3RhbGUgbm9uY2UgdmFsdWVzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8c2NvZGU+CiAgICAgICAgUmVtb3ZlIHVubmVlZGVkIGhhbmRsaW5nIG9mIEZPUk0gYXV0aGVudGljYXRpb24gaW4gUmVhbG1CYXNlLiAoa2tvbGlua28pCiAgICAgIDwvc2NvZGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz41MzgzMDwvYnVnPjogQmV0dGVyIGhhbmRsaW5nIG9mIE1hbmFnZXIucmFuZG9tRmlsZSBkZWZhdWx0IHZhbHVlIG9uCiAgICAgICAgV2luZG93cy4gKGtrb2xpbmtvKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDb3lvdGUiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGFkZD4KICAgICAgICBJbXBsZW1lbnQgdGhlIG1heEhlYWRlckNvdW50IGZvciB0aGUgSFRUUCBjb25uZWN0b3JzLiAoa2tvbGlua28pCiAgICAgIDwvYWRkPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDIxODE8L2J1Zz46IEJldHRlciBoYW5kbGluZyBvZiBlZGdlIGNvbmRpdGlvbnMgaW4gY2h1bmsgaGVhZGVyCiAgICAgICAgcHJvY2Vzc2luZy4gSW1wcm92ZSBjaHVuayBoZWFkZXIgcGFyc2luZy4gUHJvcGVybHkgaWdub3JlCiAgICAgICAgY2h1bmstZXh0ZW5zaW9uIHN1ZmZpeCwgbm90IHRyeWluZyB0byBwYXJzZSBkaWdpdHMgY29udGFpbmVkIGluIGl0LgogICAgICAgIFJlamVjdCBjaHVua3Mgd2hvc2UgaGVhZGVyIGlzIGluY29ycmVjdC4gKGtrb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjUyMDU1PC9idWc+IChjb21tZW50IDE0KTogRW5zdXJlIHRoYXQgdGhlIGNodW5rZWQgaW5wdXQgZmlsdGVyCiAgICAgICAgaXMgY29ycmVjdGx5IHJlY3ljbGVkIGJldHdlZW4gcmVxdWVzdHMuIChra29saW5rby9qaW0pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IldlYmFwcHMiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjUyNjQxPC9idWc+OiBSZW1vdmUgbWVudGlvbmluZyBvZiBsZGFwLmphciBmcm9tIGRvY3MuCiAgICAgICAgUGF0Y2ggcHJvdmlkZWQgYnkgRmVsaXggU2NodW1hY2hlci4gKHJqdW5nKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjUzMTU4PC9idWc+OiBGaXggZG9jdW1lbnRlZCBkZWZhdWx0cyBmb3IgREJDUC4KICAgICAgICBQYXRjaCBwcm92aWRlZCBieSBwaC5kZXphbm5lYXUgYXQgZ21haWwuY29tLiAocmp1bmcpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9Ik90aGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz41MjY0MDwvYnVnPjogQ29ycmVjdCBzZXQgdGhlIGVuZG9yc2VkIGRpcmVjdG9yeSBsb2NhdGlvbiB3aGVuIHVzaW5nCiAgICAgICAgdGhlIFdpbmRvd3MgaW5zdGFsbGVyLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIDxidWc+NTI1Nzk8L2J1Zz46IEFkZCBhIG5vdGUgYWJvdXQgU3VuJ3MgQ2hhcnNldC5kZWNvZGUoKSBidWcgdG8gdGhlCiAgICAgICAgUkVMRUFTRS1OT1RFUyBmaWxlLiAoa2tvbGlua28pCiAgICAgIDwvdXBkYXRlPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgo8L3NlY3Rpb24+CjxzZWN0aW9uIG5hbWU9IlRvbWNhdCA1LjUuMzUgKGppbSkiIHJ0ZXh0PSJyZWxlYXNlZCAyMDEyLTAxLTE2Ij4KICA8c3Vic2VjdGlvbiBuYW1lPSJDYXRhbGluYSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8YWRkPgogICAgICAgIE1ha2UgY29uZmlndXJhdGlvbiBpc3N1ZXMgZm9yIHNlY3VyaXR5IHJlbGF0ZWQgVmFsdmVzIGFuZCBGaWx0ZXJzIHJlc3VsdAogICAgICAgIGluIHRoZSBmYWlsdXJlIG9mIHRoZSB2YWx2ZSBvciBmaWx0ZXIgcmF0aGVyIHRoYW4ganVzdCBhIHdhcm5pbmcKICAgICAgICBtZXNzYWdlLiAobWFya3QpCiAgICAgIDwvYWRkPgogICAgICA8Zml4PgogICAgICAgIEVuc3VyZSBjaGFuZ2VzIHRvIHRoZSBjb25maWd1cmF0aW9uIG9mIHRoZSBSZW1vdGVIb3N0VmFsdmUgYW5kIHRoZQogICAgICAgIFJlbW90ZUFkZHJWYWx2ZSB2aWEgSk1YIGFyZSB0aHJlYWQtc2FmZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBJbiA8Y29kZT5SZXF1ZXN0RmlsdGVyVmFsdmU8L2NvZGU+ICg8Y29kZT5SZW1vdGVBZGRyVmFsdmU8L2NvZGU+LAogICAgICAgIDxjb2RlPlJlbW90ZUhvc3RWYWx2ZTwvY29kZT4pOiByZWZhY3RvciB2YWx1ZSBtYXRjaGluZyBsb2dpYyBpbnRvCiAgICAgICAgc2VwYXJhdGUgbWV0aG9kIGFuZCBleHBvc2UgdGhpcyBuZXcgbWV0aG9kIDxjb2RlPmlzQWxsb3dlZDwvY29kZT4KICAgICAgICB0aHJvdWdoIEpNWC4gKGtrb2xpbmtvKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGFkZD4KICAgICAgICBJbXByb3ZlIHBlcmZvcm1hbmNlIG9mIHBhcmFtZXRlciBwcm9jZXNzaW5nIGZvciBHRVQgYW5kIFBPU1QgcmVxdWVzdHMuCiAgICAgICAgQWxzbyBhZGQgYW4gb3B0aW9uIHRvIGxpbWl0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBwYXJhbWV0ZXJzIHByb2Nlc3NlZAogICAgICAgIHBlciByZXF1ZXN0LiBUaGlzIGRlZmF1bHRzIHRvIDEwMDAwLiBFeGNlc3NpdmUgcGFyYW1ldGVycyBhcmUgaWdub3JlZC4KICAgICAgICBOb3RlIHRoYXQgPGNvZGU+RmFpbGVkUmVxdWVzdEZpbHRlcjwvY29kZT4gY2FuIGJlIHVzZWQgdG8gcmVqZWN0IHRoZQogICAgICAgIHJlcXVlc3QgaWYgc29tZSBwYXJhbWV0ZXJzIHdlcmUgaWdub3JlZC4gKG1hcmt0L2trb2xpbmtvKQogICAgICA8L2FkZD4KICAgICAgPGFkZD4KICAgICAgICBOZXcgZmlsdGVyIDxjb2RlPkZhaWxlZFJlcXVlc3RGaWx0ZXI8L2NvZGU+IHRoYXQgd2lsbCByZWplY3QgYSByZXF1ZXN0CiAgICAgICAgaWYgdGhlcmUgd2VyZSBlcnJvcnMgZHVyaW5nIEhUVFAgcGFyYW1ldGVyIHBhcnNpbmcuIChra29saW5rbykKICAgICAgPC9hZGQ+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz41MjM4NDwvYnVnPjogRG8gbm90IGZhaWwgd2l0aCBwYXJhbWV0ZXIgcGFyc2luZyB3aGVuIGRlYnVnIGxvZ2dpbmcKICAgICAgICBpcyBlbmFibGVkLiAoa2tvbGlua28sIGppbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRG8gbm90IGZsYWcgZXh0cmEgJyZhbXA7JyBjaGFyYWN0ZXJzIGluIHBhcmFtZXRlcnMgYXMgcGFyc2UgZXJyb3JzLgogICAgICAgIChra29saW5rbywgamltKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBTbGlnaHRseSBpbXByb3ZlIHBlcmZvcm1hbmNlIG9mIFVEZWNvZGVyLmNvbnZlcnQoKS4gQWxpZ24KICAgICAgICA8Y29kZT4lMmY8L2NvZGU+IGhhbmRsaW5nIGJldHdlZW4gaW1wbGVtZW50YXRpb25zLiAoa2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NTIyMjU8L2J1Zz46IEZpeCBDbGFzc0Nhc3RFeGNlcHRpb24gd2hlbiBhZGRpbmcgYW4gYWxpYXMgZm9yIGFuCiAgICAgICAgZXhpc3RpbmcgaG9zdCB2aWEgSk1YLiAoa2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIERvIG5vdCB0aHJvdyBhbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZnJvbSBhCiAgICAgICAgPGNvZGU+cGFyc2VQYXJhbWV0ZXJzKCk8L2NvZGU+IGNhbGwgd2hlbiBhIGNodW5rZWQgUE9TVCByZXF1ZXN0IGlzIHRvbwogICAgICAgIGxhcmdlLCBidXQgdHJlYXQgaXQgbGlrZSBhbiBJTyBlcnJvci4gKGtrb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICBBZGQgU2V0Q2hhcmFjdGVyRW5jb2RpbmdGaWx0ZXIgKHNpbWlsYXIgdG8gdGhlIG9uZSBjb250YWluZWQgaW4gdGhlCiAgICAgICAgZXhhbXBsZXMgd2ViIGFwcGxpY2F0aW9uKQogICAgICAgIHRvIHRoZSA8Y29kZT5vcmcuYXBhY2hlLmNhdGFsaW5hLmZpbHRlcnM8L2NvZGU+IHBhY2thZ2Ugc28gaXQgaXMKICAgICAgICBhdmFpbGFibGUgZm9yIGFsbCB3ZWIgYXBwbGljYXRpb25zLiAoa2tvbGlua28pCiAgICAgIDwvYWRkPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkdlbmVyYWwiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVcGRhdGUgRWNsaXBzZSBjb21waWxlciB0byAzLjcgYW5kIHN3aXRjaCB0byB1c2luZyBlY2ouamFyLiAobWFya3QpICAgICAgICAKICAgICAgPC91cGRhdGU+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ295b3RlIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgSW1wcm92ZSBtdWx0aS1ieXRlIGNoYXJhY3RlciBoYW5kbGluZyBpbiBhbGwgY29ubmVjdG9ycy4gKHJqdW5nKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJKYXNwZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjUyMzM1PC9idWc+OiBPbmx5IGhhbmRsZSA8Y29kZT4mbHQ7XCU8L2NvZGU+IGFuZCBub3QKICAgICAgICA8Y29kZT5cJTwvY29kZT4gYXMgZXNjYXBlZCBpbiB0ZW1wbGF0ZSB0ZXh0LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IldlYmFwcHMiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjUyMDQ5PC9idWc+OiBJbXByb3ZlIHNldHVwIGluc3RydWN0aW9ucyBmb3IgcnVubmluZyBhcyBhIFdpbmRvd3MKICAgICAgICBzZXJ2aWNlOiBjb3JyZWN0IGluZm9ybWF0aW9uIG9uIGhvdyBhIEpSRSBpcyBpZGVudGlmaWVkIGFuZCBzZWxlY3RlZC4KICAgICAgICAoa2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIDxidWc+NTIxNzI8L2J1Zz46IFVwZGF0ZSBUb21jYXQgYnVpbGQgaW5zdHJ1Y3Rpb25zLiBJbmNsdWRlcyBjaGFuZ2VzCiAgICAgICAgcHJvcG9zZWQgYnkgYm1hcmd1bGllcy4gKGtrb2xpbmtvKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjUyMjQzPC9idWc+OiBJbXByb3ZlIHdpbmRvd3Mgc2VydmljZSBkb2N1bWVudGF0aW9uIHRvIGNsYXJpZnkgaG93CiAgICAgICAgdG8gaW5jbHVkZSA8Y29kZT4jPC9jb2RlPiBhbmQvb3IgPGNvZGU+OzwvY29kZT4gaW4gdGhlIHZhbHVlIG9mIGFuCiAgICAgICAgZW52aXJvbm1lbnQgdmFyaWFibGUgdGhhdCBpcyBwYXNzZWQgdG8gdGhlIHNlcnZpY2UuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iT3RoZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjUyMDU5PC9idWc+OiBFbnN1cmUgV2luZG93cyByZWdpc3RyeSBrZXlzIGFyZSByZW1vdmVkIHdoZW4gdXNpbmcKICAgICAgICB0aGUgdW4taW5zdGFsbCBvcHRpb24gb2YgdGhlIFdpbmRvd3MgaW5zdGFsbGVyLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgo8L3NlY3Rpb24+CjxzZWN0aW9uIG5hbWU9IlRvbWNhdCA1LjUuMzQgKGppbSkiIHJ0ZXh0PSJyZWxlYXNlZCAyMDExLTA5LTIyIj4KICA8c3Vic2VjdGlvbiBuYW1lPSJHZW5lcmFsIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIFRvbWNhdC1OYXRpdmUgdG8gMS4xLjIyLiAoamltKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBGaXggQ1ZFLTIwMTEtMjcyOS4gVXBkYXRlIHRvIENvbW1vbnMgRGFlbW9uIDEuMC43LiAobWFya3QpCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzMyNjI8L2J1Zz46IFdoZW4gdXNpbmcgdGhlIFdpbmRvd3MgaW5zdGFsbGVyLCB0aGUgbW9uaXRvciBpcyBub3cKICAgICAgICBhdXRvLXN0YXJ0ZWQgZm9yIHRoZSBjdXJyZW50IHVzZXIgcmF0aGVyIHRoYW4gYWxsIHVzZXJzIHRvIGJlIGNvbnNpc3RlbnQKICAgICAgICB3aXRoIG1lbnUgaXRlbSBjcmVhdGlvbi4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwNTEwPC9idWc+OiBQcm92aWRlIGFuIG9wdGlvbiB3aXRoaW4gdGhlIFdpbmRvd3MgaW5zdGFsbGVyIHRvCiAgICAgICAgY3JlYXRlIG1lbnUgZW50cmllcyBmb3IgdGhlIGN1cnJlbnQgdXNlciBvciBhbGwgdXNlcnMuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz41MDk0OTwvYnVnPjogQWRkIHRoZSBhYmlsaXR5IHRvIHNwZWNpZnkgdGhlIEFKUCBwb3J0IGFuZCB0aGUKICAgICAgICBzaHV0ZG93biBwb3J0IHdoZW4gdXNpbmcgdGhlIFdpbmRvd3MgaW5zdGFsbGVyLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NTExMzU8L2J1Zz46IEZpeCBhdXRvLWRldGVjdGlvbiBvZiBKQVZBX0hPTUUgZm9yIDY0LWJpdCBXaW5kb3dzCiAgICAgICAgcGxhdGZvcm1zIHRoYXQgb25seSBoYXZlIGEgMzItYml0IEpWTSBpbnN0YWxsZWQgd2hlbiB1c2luZyB0aGUgV2luZG93cwogICAgICAgIGluc3RhbGxlci4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDYXRhbGluYSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mjc5ODg8L2J1Zz46IEltcHJvdmUgcmVwb3J0aW5nIG9mIG1pc3NpbmcgZmlsZXMuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4yODg1MjwvYnVnPjogQWRkIFVSTCBlbmNvZGluZyB3aGVyZSBtaXNzaW5nIHRvIHBhcmFtZXRlcnMgaW4gVVJMcwogICAgICAgIHByZXNlbnRlZCBieSBBbnQgdGFza3MgdG8gdGhlIE1hbmFnZXIgYXBwbGljYXRpb24uIEJhc2VkIG9uIGEgcGF0Y2ggYnkKICAgICAgICBTdGVwaGFuZSBCYWlsbGllei4gKG1hcmspIAogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQxMTc5PC9idWc+OiBSZXR1cm4gNDA0IHJhdGhlciB0aGFuIDQwMCBmb3IgcmVxdWVzdHMgdG8gdGhlIFJPT1QKICAgICAgICBjb250ZXh0IHdoZW4gbm8gUk9PVCBjb250ZXh0IGhhcyBiZWVuIGRlcGxveWVkLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NTAxODk8L2J1Zz46IE9uY2UgdGhlIGFwcGxpY2F0aW9uIGhhcyBmaW5pc2hlZCB3cml0aW5nIHRvIHRoZQogICAgICAgIHJlc3BvbnNlLCBwcmV2ZW50IGZ1cnRoZXIgcmVhZHMgZnJvbSB0aGUgcmVxdWVzdCBzaW5jZSB0aGlzIGNhdXNlcwogICAgICAgIHZhcmlvdXMgcHJvYmxlbXMgaW4gdGhlIGNvbm5lY3RvcnMgd2hpY2ggZG8gbm90IGV4cGVjdCB0aGlzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCBDVkUtMjAxMS0yMjA0LiBQcmV2ZW50IHVzZXIgcGFzc3dvcmRzIGFwcGVhcmluZyBpbiBsb2cgZmlsZXMgaWYgYQogICAgICAgIHJ1bnRpbWUgZXhjZXB0aW9uIChlLmcuIE9PTUUpIG9jY3VycyB3aGlsZSBjcmVhdGluZyBhIG5ldyB1c2VyIGZvciBhCiAgICAgICAgTWVtb3J5VXNlckRhdGFiYXNlIHZpYSBKTVguIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz41MTA0MjwvYnVnPjogRG9uJmFwb3M7dCB0cmlnZ2VyIHNlc3Npb24gY3JlYXRpb24gbGlzdGVuZXJzIHdoZW4gYQogICAgICAgIHNlc3Npb24gSUQgaXMgY2hhbmdlZCBhcyBwYXJ0IG9mIHRoZSBhdXRoZW50aWNhdGlvbiBwcm9jZXNzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NTEzMjQ8L2J1Zz46IEltcHJvdmUgaGFuZGxpbmcgb2YgZXhjZXB0aW9ucyB3aGVuIGZsdXNoaW5nIHRoZQogICAgICAgIHJlc3BvbnNlIGJ1ZmZlciB0byBlbnN1cmUgdGhhdCB0aGUgZG9GbHVzaCBmbGFnIGRvZXMgbm90IGdldCBzdHVjayBpbgogICAgICAgIHRoZSBlbmFibGVkIHN0YXRlLiBQYXRjaCBwcm92aWRlZCBieSBKZXJlbXkgTm9ycmlzLiAoa2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NTE0MDM8L2J1Zz46IEF2b2lkIE51bGxQb2ludGVyRXhjZXB0aW9uIGluIEpVTEkgRmlsZUhhbmRsZXIgaWYKICAgICAgICBmb3JtYXR0ZXIgaXMgbWlzY29uZmlndXJlZC4gKGtrb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjUxNDczPC9idWc+OiBGaXggY29uY2F0ZW5hdGlvbiBvZiB2YWx1ZXMgaW4KICAgICAgICBTZWN1cml0eUNvbmZpZy5zZXRTZWN1cml0eVByb3BlcnR5KCkgd2hlbiB0aGUgdmFsdWUgcHJvdmlkZWQgYnkgSlJFIGlzCiAgICAgICAgbnVsbC4gKGtrb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjUxNTUwPC9idWc+OiBJbnRlcm5hbCBlcnJvcnMgaW4gVG9tY2F0IGNvbXBvbmVudHMgdGhhdCBwcm9jZXNzCiAgICAgICAgcmVxdWVzdHMgYmVmb3JlIHRoZXkgYXJlIHBhc3NlZCB0byBhIHdlYiBhcHBsaWNhdGlvbiwgc3VjaCBhcwogICAgICAgIEF1dGhlbnRpY2F0b3JzLCBub3cgcmV0dXJuIGEgNTAwIHJlc3BvbnNlIHJhdGhlciB0aGFuIGEgMjAwIHJlc3BvbnNlLgogICAgICAgIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgQ1ZFLTIwMTEtMTE4NDogQWRkIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHRoZSBESUdFU1QKICAgICAgICBhdXRoZW50aWNhdG9yLiAobWFya3QpCiAgICAgIDwvYWRkPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNveW90ZSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIEZpeCBDVkUtMjAxMS0yNTI2LiBQcm90ZWN0IGFnYWluc3QgY3Jhc2hlcyAoSFRUUCBBUFIpIGlmIHNlbmRmaWxlIGlzCiAgICAgICAgY29uZmlndXJlZCB0byBzZW5kIG1vcmUgZGF0YSB0aGFuIGlzIGF2YWlsYWJsZSBpbiB0aGUgZmlsZS4gKG1hcmt0KSAKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz41MDM5NDwvYnVnPjogUmV0dXJuIC0xIGZyb20gcmVhZCBvcGVyYXRpb24gaW5zdGVhZCBvZiB0aHJvd2luZyBhbgogICAgICAgIGV4Y2VwdGlvbiB3aGVuIGVuY291bnRlcmluZyBhbiBFT0Ygd2l0aCB0aGUgSFRUUCBBUFIgY29ubmVjdG9yLgogICAgICAgIChra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz41MDc0NDwvYnVnPjogU2tpcCB0aGUgU1NMIGNvbmZpZ3VyYXRpb24gY2hlY2sgb24gcGxhdGZvcm1zIHdoZXJlIGFuCiAgICAgICAgdW5ib3VuZGVkIHNvY2tldCBjYW5ub3QgYmUgY3JlYXRlZC4gKGtrb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjUxMDczPC9idWc+OiBUaHJvdyBhbiBleGNlcHRpb24gYW5kIGRvIG5vdCBzdGFydCB0aGUgQVBSIGNvbm5lY3RvcgogICAgICAgIGlmIGl0IGlzIGNvbmZpZ3VyZWQgZm9yIFNTTCBhbmQgYW4gaW52YWxpZCB2YWx1ZSBpcyBwcm92aWRlZCBmb3IKICAgICAgICBTU0xQcm90b2NvbC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjUxNjk4PC9idWc+OiBGaXggQ1ZFLTIwMTEtMzE5MC4gUHJldmVudCBBSlAgbWVzc2FnZSBpbmplY3Rpb24uCiAgICAgICAgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICBEZXRlY3QgaW5jb21wbGV0ZSBBSlAgbWVzc2FnZXMgYW5kIHJlamVjdCB0aGUgYXNzb2NpYXRlZCByZXF1ZXN0IGlmIG9uZQogICAgICAgIGlzIGZvdW5kLiAobWFya3QpIAogICAgICA8L2FkZD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJKYXNwZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM2MzYyPC9idWc+OiBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGFnIGZpbGUgYXR0cmlidXRlcyAod2hpY2ggY2FuCiAgICAgICAgdXNlIGFueSB2YWxpZCBYTUwgbmFtZSkgaGF2ZSBhIG5hbWUgd2hpY2ggaXMgbm90IGEgSmF2YSBpZGVudGlmaWVyLgogICAgICAgIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IHBvc3NpYmxlIHRocmVhZGluZyBpc3N1ZSBpbiBKU1AgY29tcGlsYXRpb24gd2hlbiBkZXZlbG9wbWVudCBtb2RlIGlzCiAgICAgICAgZW5hYmxlZC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDbHVzdGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40ODcxNzwvYnVnPjogRW5zdXJlIHNlc3Npb24gYWN0aXZhdGlvbiBldmVudHMgYXJlIGZpcmVkLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NTA3NzE8L2J1Zz46IEVuc3VyZSBIdHRwU2VydmxldFJlcXVlc3QjZ2V0QXV0aFR5cGUoKSByZXR1cm5zIHRoZQogICAgICAgIG5hbWUgb2YgdGhlIGF1dGhlbnRpY2F0aW9uIHNjaGVtZSBpZiByZXF1ZXN0IGhhcyBhbHJlYWR5IGJlZW4KICAgICAgICBhdXRoZW50aWNhdGVkLiAoa2Z1amlubykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz41MTY0NzwvYnVnPjogRml4IHNlc3Npb24gcmVwbGljYXRpb24gd2hlbiBhIHNlc3Npb24gYXR0cmlidXRlIGlzIGEKICAgICAgICBKYXZhIGR5bmFtaWMgcHJveHkuIEJhc2VkIG9uIGEgcGF0Y2ggYnkgVG9tYXN6IFNrdXRuaWsuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iV2ViYXBwcyI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDE0OTg8L2J1Zz46IEFkZCB0aGUgYWxsUm9sZXNNb2RlIGF0dHJpYnV0ZSB0byB0aGUgUmVhbG0KICAgICAgICBjb25maWd1cmF0aW9uIHBhZ2UgaW4gdGhlIGRvY3VtZW50YXRpb24gd2ViIGFwcGxpY2F0aW9uLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIENvbmZpZ3VyZSBTZWN1cml0eSBNYW5hZ2VyIEhvdy1UbyB0byBpbmNsdWRlIGEgY29weSBvZiB0aGUgYWN0dWFsCiAgICAgICAgY29uZi9jYXRhbGluYS5wb2xpY3kgZmlsZSB3aGVuIHRoZSBkb2N1bWVudGF0aW9uIGlzIGJ1aWx0LCByYXRoZXIKICAgICAgICB0aGFuIG1haW50YWluaW5nIGEgY29weSBvZiBpdHMgY29udGVudC4gKGtrb2xpbmtvKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ4OTk3PC9idWc+OiBGaXhlZCBzb21lIHR5cG9zIGFuZCBpbXByb3ZlIGNyb3NzLXJlZmVyZW5jaW5nIHRvIHRoZQogICAgICAgIEhUVFAgQ29ubmVjdG9yIGFuZCBBUFIgZG9jdW1lbnRhdGlvbiB3aXRoIHRoZSBTU0wgSG93LVRvIHBhZ2Ugb2YgdGhlCiAgICAgICAgZG9jdW1lbnRhdGlvbiB3ZWIgYXBwbGljYXRpb24uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iT3RoZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBBbGlnbiBqcGRhIHNldHRpbmdzIGluIGNhdGFsaW5hLmJhdCB3aXRoIGNhdGFsaW5hLnNoLCB0YzYuMC54LCB0YzcuMC54CiAgICAgICAgYW5kIHRydW5rLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIENsYXJpZnkgZXJyb3IgbWVzc2FnZXMgaW4gKi5zaCBmaWxlcyB0byBtZW50aW9uIHRoYXQgaWYgYSBzY3JpcHQgaXMKICAgICAgICBub3QgZm91bmQgaXQgbWlnaHQgYmUgYmVjYXVzZSBleGVjdXRlIHBlcm1pc3Npb24gaXMgbmVlZGVkLiAoa2tvbGlua28pCiAgICAgIDwvdXBkYXRlPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgo8L3NlY3Rpb24+CjxzZWN0aW9uIG5hbWU9IlRvbWNhdCA1LjUuMzMgKGppbSkiIHJ0ZXh0PSJyZWxlYXNlZCAyMDExLTAyLTEwIj4KICA8c3Vic2VjdGlvbiBuYW1lPSJHZW5lcmFsIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IHBlcm1pc3Npb25zIG9mIHZlcnNpb24uc2ggaW4gYmluIHRhcmJhbGwuIChyanVuZykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NTMzMjwvYnVnPiwgPGJ1Zz40NTg1MjwvYnVnPiwgPGJ1Zz41MDE0MDwvYnVnPjoKICAgICAgICBCYWNrcG9ydCBudW1lcm91cyBpbXByb3ZlbWVudHMgdG8gdGhlIFdpbmRvd3MgaW5zdGFsbGVyLgogICAgICAgIFNwZWNpZnkgdGhlIGNvcnJlY3QgZW5jb2RpbmcgKHRoZSBjdXJyZW50IFdpbmRvd3MgY29kZSBwYWdlKSByYXRoZXIKICAgICAgICB0aGFuIGFzc3VtaW5nIFVURi04IHdoZW4gY3JlYXRpbmcgdG9tY2F0LXVzZXJzLnhtbCAtIDxidWc+NDUzMzI8L2J1Zz4sCiAgICAgICAgPGJ1Zz40NTg1MjwvYnVnPi4KICAgICAgICBVcGRhdGUgaW5zdGFsbC91bmluc3RhbGwgaWNvbnMuIENyZWF0ZSBhbiBpbnN0YWxsYXRpb24gbG9nLgogICAgICAgIEFsbG93IDMyLWJpdCBKVk1zIHRvIGJlIHNlbGVjdGVkIHdoZW4gaW5zdGFsbGluZyBvbiBhIDY0LWJpdCBwbGF0Zm9ybS4KICAgICAgICBEbyBub3QgaWdub3JlIGluc3RhbGwgZGlyZWN0b3J5IGlmIGl0IGlzIHNwZWNpZmllZCB3aXRoIHRoZSBjb21tYW5kCiAgICAgICAgbGluZSBzd2l0Y2ggb24gNjQtYml0IHBsYXRmb3JtcyAtIDxidWc+NTAxNDA8L2J1Zz4uCiAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHRoZSA8Y29kZT4vPzwvY29kZT4gY29tbWFuZCBsaW5lIHN3aXRjaC4KICAgICAgICBSZXBsYWNlIHRoZSAuaW5pIGZpbGVzIHdpdGggdGhlIHNjcmlwdCBlcXVpdmFsZW50cy4KICAgICAgICBQcm92aWRlIHRoZSBhYmlsaXR5IHRvIGVkaXQgdGhlIHJvbGVzIGZvciB0aGUgYWRkZWQgdXNlci4KICAgICAgICBDbGVhbiB1cCBmdWxseSBhZnRlciBpbnN0YWxsYXRpb24uCiAgICAgICAgQWRkIERldGFpbFByaW50IHN0YXRlbWVudHMgZm9yIG9wZXJhdGlvbnMgdGhhdCBtYXkgdGFrZSB0aW1lLgogICAgICAgIEltcHJvdmUgdGhlIGRlc2NyaXB0aW9ucyBvZiB0aGUgY29tcG9uZW50cy4KICAgICAgICAoa2tvbGlua28sIG10dXJrLCBtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgQWRkIHJvbGVzIChhZG1pbi1ndWksIGFkbWluLXNjcmlwdCwgbWFuYWdlci1ndWksIG1hbmFnZXItc2NyaXB0LAogICAgICAgIG1hbmFnZXItam14LCBtYW5hZ2VyLXN0YXR1cykgdG8gdGhlIE1hbmFnZXIsIEhvc3QgTWFuYWdlciBhbmQgQWRtaW4KICAgICAgICBhcHBsaWNhdGlvbnMgdG8gYWxsb3cgbW9yZSBmaW5lLWdyYWluZWQgY29udHJvbCBvZiBwZXJtaXNzaW9ucy4gVGhlIG9sZAogICAgICAgIHJvbGVzIGFyZSBkZXByZWNhdGVkIGJ1dCB3aWxsIHN0aWxsIHdvcmsgaW4gdGhlIHNhbWUgd2F5LiAoa2tvbGlua28pCiAgICAgIDwvYWRkPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNhdGFsaW5hIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgSW1wcm92ZSBIVFRQIHNwZWNpZmljYXRpb24gY29tcGxpYW5jZSBpbiBzdXBwb3J0IG9mCiAgICAgICAgPGNvZGU+QWNjZXB0LUxhbmd1YWdlPC9jb2RlPiBoZWFkZXIuIFRoaXMgcHJvdGVjdHMgZnJvbSBrbm93biBleHBsb2l0CiAgICAgICAgb2YgdGhlIE9yYWNsZSBKVk0gYnVnIHRoYXQgdHJpZ2dlcnMgYSBEb1MsIENWRS0yMDEwLTQ0NzYuIChra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz41MDYyMDwvYnVnPjogU3RvcCBleGNlcHRpb25zIHRoYXQgb2NjdXIgZHVyaW5nCiAgICAgICAgPGNvZGU+U2Vzc2lvbi5lbmRBY2Nlc3MoKTwvY29kZT4gZnJvbSBwcmV2ZW50aW5nIHRoZSBub3JtYWwgY29tcGxldGlvbgogICAgICAgIG9mIDxjb2RlPlJlcXVlc3QucmVjeWNsZSgpPC9jb2RlPi4gKG1hcmt0L2trb2xpbmtvKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDb3lvdGUiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPHVwZGF0ZT4KICAgICAgICBSZW1vdmUgPGNvZGU+SlNTRTEzRmFjdG9yeTwvY29kZT4sIDxjb2RlPkpTU0UxM1NvY2tldEZhY3Rvcnk8L2NvZGU+CiAgICAgICAgY2xhc3NlcywgYXMgVG9tY2F0IDUuNSBhbHdheXMgcnVucyBvbiBKUkUgMS40IG9yIGxhdGVyLiAoa2tvbGlua28pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NTAzMjU8L2J1Zz46IFdoZW4gdGhlIEpWTSBpbmRpY2F0ZXMgc3VwcG9ydCBmb3IgUkZDIDU3NDYsIGRpc2FibGUKICAgICAgICBUb21jYXQmYXBvcztzIDxjb2RlPmFsbG93VW5zYWZlTGVnYWN5UmVuZWdvdGlhdGlvbjwvY29kZT4gY29uZmlndXJhdGlvbgogICAgICAgIGF0dHJpYnV0ZSBhbmQgdXNlIHRoZSBKVk0gY29uZmlndXJhdGlvbiB0byBjb250cm9sIHJlbmVnb3RpYXRpb24uCiAgICAgICAgKG1hcmt0L2trb2xpbmtvKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KPC9zZWN0aW9uPgo8c2VjdGlvbiBuYW1lPSJUb21jYXQgNS41LjMyIChqaW0pIiBydGV4dD0icmVsZWFzZWQgMjAxMS0wMi0wMSI+CiAgPHN1YnNlY3Rpb24gbmFtZT0iR2VuZXJhbCI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8dXBkYXRlPgogICAgICAgIFVwZGF0ZSB0byBDb21tb25zIERhZW1vbiAxLjAuNS4gKG10dXJrKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVcGRhdGUgdG8gY29tbW9ucy1wb29sIDEuNS41LiAobWFya3QpCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIEVuc3VyZSBQT00gZmlsZXMgaGF2ZSBjb3JyZWN0IGxpbmUgZW5kaW5ncyBpbiBzb3VyY2UgZGlzdHJpYnV0aW9ucy4KICAgICAgICAocmp1bmcvbWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNhdGFsaW5hIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxhZGQ+CiAgICAgICAgPGJ1Zz40Mzk2MDwvYnVnPjogRXhwb3NlIDxjb2RlPmF2YWlsYWJsZTwvY29kZT4gcHJvcGVydHkgb2YKICAgICAgICBTdGFuZGFyZFdyYXBwZXIgdmlhIEpNWC4gKG1hcmt0KQogICAgICA8L2FkZD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjUwMTMxPC9idWc+OiBBdm9pZCBwb3NzaWJsZSBOUEUgaW4gZGVidWcgb3V0cHV0IGluIFBlcnNpc3RlbnRWYWx2ZS4KICAgICAgICBQYXRjaCBwcm92aWRlZCBieSBzZWJiLiAoa2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NTA0MTM8L2J1Zz46IEVuc3VyZSAzMDRzIGFyZSBub3QgcmV0dXJuZWQgd2hlbiB1c2luZyBzdGF0aWMgZmlsZXMKICAgICAgICBhcyBlcnJvciBwYWdlcy4gKG1hcmt0L2trb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBBdm9pZCB1bm5lY2Vzc2FyeSBjYXN0IGluIFN0YW5kYXJkQ29udGV4dC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjUwNDYwPC9idWc+OiBBdm9pZCBhIHBvc3NpYmxlIG1lbW9yeSBsZWFrIGNhdXNlZCBieSB1c2luZyBhIGNhY2hlZAogICAgICAgIGV4Y2VwdGlvbiBpbnN0YW5jZS4gKGtrb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjUwNTUwPC9idWc+OiBXaGVuIGEgbmV3IGRpcmVjdG9yeSBpcyBjcmVhdGVkIChlLmcuIHZpYSBXZWJEQVYpCiAgICAgICAgZW5zdXJlIHRoYXQgYSBzdWJzZXF1ZW50IHJlcXVlc3QgZm9yIHRoYXQgZGlyZWN0b3J5IGRvZXMgbm90IHJlc3VsdCBpbiBhCiAgICAgICAgNDA0IHJlc3BvbnNlLiAobWFya3Qva2tvbGlua28pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNveW90ZSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDc5MTM8L2J1Zz46IFJldHVybiB0aGUgSVAgYWRkcmVzcyByYXRoZXIgdGhhbiBudWxsIGZvcgogICAgICAgIDxjb2RlPmdldFJlbW90ZUhvc3QoKTwvY29kZT4gd2l0aCB0aGUgQVBSIGNvbm5lY3RvciBpZiB0aGUgSVAgYWRkcmVzcwogICAgICAgIGRvZXMgbm90IHJlc29sdmUuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40OTUyMTwvYnVnPjogRGlzYWJsZSBzY2FubmluZyBmb3IgYSBmcmVlIHBvcnQgaW4gSmsgQUpQLzEuMwogICAgICAgIGNvbm5lY3RvciBieSBkZWZhdWx0LiBEbyBub3QgY2hhbmdlIG1heFBvcnQgZmllbGQgdmFsdWUgb2YgQ2hhbm5lbFNvY2tldAogICAgICAgIGluIGl0cyA8Y29kZT5zZXRQb3J0KCk8L2NvZGU+IGFuZCA8Y29kZT5pbml0KCk8L2NvZGU+IG1ldGhvZHMuIEFkZAogICAgICAgIHN1cHBvcnQgZm9yIDxjb2RlPm1heFBvcnQ8L2NvZGU+IGF0dHJpYnV0ZSBvbiBhIDxjb2RlPkNvbm5lY3RvcjwvY29kZT4KICAgICAgICBlbGVtZW50IGFzIGEgc3lub255bSBmb3IgY2hhbm5lbFNvY2tldC5tYXhQb3J0LiAoa2tvbGlua28pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9Ikphc3BlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDk5MzU8L2J1Zz46IEhhbmRsZSBjb21waWxhdGlvbiBvZiByZWN1cnNpdmUgdGFnIGZpbGVzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNsdXN0ZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBJbXByb3ZlIHNlbmRpbmcgYW4gYWNjZXNzIG1lc3NhZ2UgaW4gRGVsdGFNYW5hZ2VyLgogICAgICAgIG1heEluYWN0aXZlSW50ZXJ2YWwgb2Ygbm90IE1hbmFnZXIgYnV0IHRoZSBzZXNzaW9uIGlzIHVzZWQuIAogICAgICAgIElmIG1heEluYWN0aXZlSW50ZXJ2YWwgaXMgbmVnYXRpdmUsIGFuIGFjY2VzcyBtZXNzYWdlIGlzIG5vdCBzZW5kaW5nLiAKICAgICAgICAoa2Z1amlubykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz41MDU0NzwvYnVnPjogQWRkIHRpbWUgc3RhbXAgZm9yIENIQU5HRV9TRVNTSU9OX0lEIG1lc3NhZ2UgYW5kIAogICAgICAgIFNFU1NJT05fRVhQSVJFRCBtZXNzYWdlLiAoa2Z1amlubykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iV2ViYXBwcyI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8YWRkPgogICAgICAgIDxidWc+NTAyOTQ8L2J1Zz46IEFkZCBtb3JlIGluZm9ybWF0aW9uIHRvIGRvY3VtZW50YXRpb24gcmVnYXJkaW5nIGZvcm1hdAogICAgICAgIG9mIGNvbmZpZ3VyYXRpb24gZmlsZXMuIFBhdGNoIHByb3ZpZGVkIGJ5IEx1a2UgTWV5ZXIuIChtYXJrdCkgCiAgICAgIDwvYWRkPgogICAgICA8dXBkYXRlPgogICAgICAgIEltcHJvdmUgZG9jdW1lbnRhdGlvbiBvZiBkYXRhYmFzZSBjb25uZWN0aW9uIGZhY3RvcnkuIChyanVuZykKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgSW1wcm92ZSBmaWx0ZXJpbmcgb2YgTWFuYWdlciBkaXNwbGF5IG91dHB1dC4gKGtrb2xpbmtvKSAKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQ29uZmlndXJlIHRoZSBBZG1pbiwgTWFuYWdlciBhbmQgSG9zdC1NYW5hZ2VyIHdlYiBhcHBsaWNhdGlvbnMgdG8gdXNlCiAgICAgICAgSHR0cE9ubHkgZmxhZyBmb3IgdGhlaXIgc2Vzc2lvbiBjb29raWVzLiAoa2tvbGlua28pCiAgICAgIDwvdXBkYXRlPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgo8L3NlY3Rpb24+CjxzZWN0aW9uIG5hbWU9IlRvbWNhdCA1LjUuMzEgKGppbSkiIHJ0ZXh0PSJyZWxlYXNlZCAyMDEwLTA5LTE2Ij4KICA8c3Vic2VjdGlvbiBuYW1lPSJHZW5lcmFsIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgQWRkIHN2bjpleGVjdXRhYmxlIHByb3BlcnR5IHRvIHNvbWUgc2NyaXB0IGZpbGVzIGFuZAogICAgICAgIHJlbW92ZSBpdCBmcm9tIG5vbi1leGVjdXRhYmxlIGZpbGVzLiAocmp1bmcpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNhdGFsaW5hIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zODExMzwvYnVnPiBBZGQgc3lzdGVtIHByb3BlcnR5IChBTExPV19FTVBUWV9RVUVSWV9TVFJJTkcpIHRvIGFsbG93CiAgICAgICAgc3BlYyBjb21wbGlhbnQgaGFuZGxpbmcgb2YgcXVlcnkgc3RyaW5nLiAobWFya3Qva2tvbGlua28vamltKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBVUkwgYmVpbmcgdXNlZCBmcm9tIHRoZSB3ZWJhcHAgY2xhc3MgbG9hZGVyLCBub3QKICAgICAgICB0aGUgb3JpZ2luYWwgYXJyYXkuIChra29saW5rby9tYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40OTc0OTwvYnVnPjogVXNlIEh0dHBPbmx5IGZsYWcgb2YgY3VycmVudCBjb250ZXh0IHdoZW4gZ2VucmF0aW5nCiAgICAgICAgYSBTaW5nbGUtU2lnbi1PbiBjb29raWUuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ295b3RlIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40OTcxODwvYnVnPjogRml4IHJlZ3Jlc3Npb24gaW4gcHJldmlvdXMgZml4IGZvciA8YnVnPjQ2OTg0PC9idWc+CiAgICAgICAgY2F1c2VkIGJ5IHRoZSBwYXRjaCBiZWluZyBhcHBsaWVkIHRvIHRoZSB3cm9uZyBzZWN0aW9uIG9mIGNvZGUuIFRoZQogICAgICAgIHJlZ3Jlc3Npb24gY2F1c2VkIEhUVFAgMC45IHJlcXVlc3RzIHRvIGZhaWwuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iV2ViYXBwcyI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDk1ODU8L2J1Zz46IFVwZGF0ZSBKU1ZDIGRvY3VtZW50YXRpb24gdG8gcmVmbGVjdCBuZXcgcGFja2FnaW5nCiAgICAgICAgb2YgQ29tbW9ucyBEYWVtb24uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40OTc3NDwvYnVnPjogQWRkIHN1cHBvcnQgZm9yIFNTTCB3aXRoIGVpdGhlciBKU1NFIG9yIEFQUiBiYWFlZAogICAgICAgIGNvbm5lY3RvcnMgdG8gdGhlIGFkbWluIGFwcC4gKG1hcmt0KSAKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2x1c3RlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIEFkZCBOdWxsIGNoZWNrIHdoZW4gQ0hBTkdFX1NFU1NJT05fSUQgbWVzc2FnZSByZWNlaXZlZC4gKGtmdWppbm8pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPjwvc2VjdGlvbj4KPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS4zMCAoamltKSIgcnRleHQ9InJlbGVhc2VkIDIwMTAtMDctMDkiPgogIDxzdWJzZWN0aW9uIG5hbWU9IkdlbmVyYWwiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPHVwZGF0ZT5VcGRhdGUgdG8gQ29tbW9ucyBEYWVtb24gMS4wLjIuIFVzZSBzZXJ2aWNlIGxhdW5jaGVyIChwcm9jcnVuKQogICAgICBmcm9tIHRoZSBDb21tb25zIERhZW1vbiByZWxlYXNlLiBEbyBub3Qga2VlcCBhIGNvcHkgb2YgaXQgaW4gb3VyIHNvdXJjZQogICAgICB0cmVlLiAobXR1cmsva2tvbGlua28pPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIHRvIE5TSVMgMi40Ni4gKGtrb2xpbmtvKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVcGRhdGUgdG8gQXBhY2hlIENvbW1vbnMgREJDUCAxLjMuIChtYXJrdCkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40ODg0MDwvYnVnPjogU3dhbGxvdyBvdXRwdXQgKGlmIGFueSkgZnJvbSB1c2Ugb2YgY2Qgd2hlbiBkZXRlcm1pbmluZwogICAgICAgICRDQVRBTElOQV9IT01FIGluIGNhdGFsaW5hLnNoIGFuZCB0b29sLXdyYXBwZXIuc2ggc2NyaXB0cy4gQmFzZWQgb24gcGF0Y2gKICAgICAgICBwcm92aWRlZCBieSBtZGlldHplLiAobWFya3Qva2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDkyMzY8L2J1Zz46IERvIG5vdCB1c2UgaW5kZXhpbmcgd2hlbiBwYWNraW5nIFRvbWNhdCBKQVJzLgogICAgICAgIChra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40ODk5MDwvYnVnPjogQnVpbGQgd2luZG93cyBkaXN0cmlidXRpb25zIGNvcnJlY3RseSBvbiBMaW51eCBhbmQKICAgICAgICBhZGQgc3VwcG9ydCBmb3IgdGhlIHNraXAuaW5zdGFsbGVyIHByb3BlcnR5LiAoa2tvbGlua28pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNhdGFsaW5hIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IENWRS0yMDEwLTExNTcuIFByZXZlbnQgcG9zc2libGUgZGlzY2xvc3VyZSBvZiBob3N0IG5hbWUgb3IgSVAKICAgICAgICBhZGRyZXNzIHZpYSB0aGUgSFRUUCBXV1ctQXV0aGVudGljYXRlIGhlYWRlciB3aGVuIHVzaW5nIEJBU0lDIG9yIERJR0VTVAogICAgICAgIGF1dGhlbnRpY2F0aW9uLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDQwNDE8L2J1Zz4sIDxidWc+NDg2OTQ8L2J1Zz46IEZpeCBkdXBsaWNhdGUgY2xhc3MgZGVmaW5pdGlvbgogICAgICAgIHVuZGVyIGxvYWQuIEF2b2lkIHBvc3NpYmxlIGRlYWRsb2NrIGluIGNsYXNzIGxvYWRpbmcuCiAgICAgICAgKG1hcmt0L2trb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ3Nzc0PC9idWc+OiBFbnN1cmUgd2ViIGFwcGxpY2F0aW9uIGNsYXNzIGxvYWRlciBpcyB1c2VkIHdoZW4gCiAgICAgICAgY2FsbGluZyBzZXNzaW9uIGxpc3RlbmVycy4gKGtmdWppbm8pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIDxidWc+NDgxNzk8L2J1Zz46IEltcHJvdmUgZXJyb3IgaGFuZGxpbmcgd2hlbiByZWFkaW5nIG9yIHdyaXRpbmcKICAgICAgICBUTEQgY2FjaGUgZmlsZSAoInRsZENhY2hlLnNlciIpLiAoa2tvbGlua28pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDkzOTg8L2J1Zz46IEJ5dGVDaHVuay5pbmRleE9mKFN0cmluZywgaW50LCBpbnQsIGludCkgY291bGQgbm90CiAgICAgICAgZmluZCBhIHN0cmluZyBvZiBsZW5ndGggMS4gKGtrb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBFbnN1cmUgYWxsIHJlcXVpcmVkIGkxOG4gbWVzc2FnZXMgYXJlIHByZXNlbnQgZm9yIHRoZSBBUFIvbmF0aXZlCiAgICAgICAgTGlzdGVuZXIuIChra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IHBvc3NpYmxlIG92ZXJmbG93cyB3aGVuIGNhbGN1bGF0aW5nIHNlc3Npb24gc3RhdGlzdGljcy4gKGtrb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ5NDI0PC9idWc+OiBBdm9pZCBOUEUgaWYgY2xpZW50IHByb3ZpZGVzIG5vIGRhdGEgd2l0aCBhIGNodW5rZWQKICAgICAgICBQT1NUIHJlcXVlc3QuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgTWlub3IgY29kZSBjbGVhbnVwIGluIEFjY2Vzc0xvZ1ZhbHZlIGFuZCBGYXN0Q29tbW9uQWNjZXNzTG9nVmFsdmUKICAgICAgICBjbGFzc2VzLiAoa2tvbGlua28pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNveW90ZSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PkFycmFuZ2UgZmlsdGVyIGxvZ2ljLiAoamZjbGVyZSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40ODYxMzwvYnVnPjogT25seSBhdHRlbXB0IEFQUi9uYXRpdmUgY29ubmVjdG9yIGluaXRpYWxpemF0aW9uIGlmCiAgICAgICAgdGhlIExpc3RlbmVyIGVsZW1lbnQgaGFzIGJlZW4gc3BlY2lmaWVkIGluIHNlcnZlci54bWwuIChmaGFuaWsva2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDg4NDM8L2J1Zz46IFByZXZlbnQgcG9zc2libGUgZGVhZGxvY2sgYW5kIGNvcnJlY3QgcXVldWUgaGFuZGxpbmcKICAgICAgICBmb3Igd29ya2VyIGFsbG9jYXRpb24gaW4gQVBSIGNvbm5lY3RvcnMuIChra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgVXNlIGNodW5rZWQgZW5jb2RpbmcgZm9yIGh0dHAgMS4xIHJlc3BvbnNlcyB3aXRoIG5vIGNvbnRlbnQtbGVuZ3RoCiAgICAgICAgKHJlZ2FyZGxlc3Mgb2Yga2VlcC1hbGl2ZSkgc28gY2xpZW50IGNhbiBkaWZmZXJlbnRpYXRlIGJldHdlZW4gY29tcGxldGUKICAgICAgICBhbmQgcGFydGlhbCByZXNwb25zZXMuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iSmFzcGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MjM5MDwvYnVnPiwgPGJ1Zz40ODYxNjwvYnVnPjogRml4IGNvbXBpbGF0aW9uIGVycm9yIHdpdGggc29tZQogICAgICAgIG5lc3RlZCB0YWcgZmlsZXMgYW5kIHNpbXBsZSB0YWdzLiBEbyBub3QgZGVjbGFyZSBvciBzeW5jaHJvbml6ZQogICAgICAgIHNjcmlwdGluZyB2YXJpYWJsZXMgZm9yIEpTUCBmcmFnbWVudHMgc2luY2UgdGhleSBhcmUgc2NyaXB0bGVzcy4KICAgICAgICAoa2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDc4Nzg8L2J1Zz46IFJldHVybiAmI3gyMDFDOzQwNCYjeDIwMUQ7cyByYXRoZXIgdGhhbiBhIHBlcm1hbmVudAogICAgICAgICYjeDIwMUM7NTAwJiN4MjAxRDsgaWYgYSBKU1AgaXMgZGVsZXRlZC4gTWFrZSBzdXJlIGZpcnN0IHJlc3BvbnNlIGFmdGVyCiAgICAgICAgZGVsZXRpb24gaXMgY29ycmVjdC4gKG1hcmt0L2trb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ4NzAxPC9idWc+OiBBZGQgYSBzeXN0ZW0gcHJvcGVydHkgdG8gYWxsb3cgZGlzYWJsaW5nIGVuZm9yY2VtZW50CiAgICAgICAgb2YgSlNQLjUuMy4gVGhlIHNwZWNpZmljYXRpb24gcmVjb21tZW5kcywgYnV0IGRvZXMgbm90IHJlcXVpcmUsIHRoaXMKICAgICAgICBlbmZvcmNlbWVudC4gKGtrb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ4NTgwPC9idWc+OiBQcmV2ZW50IEFjY2Vzc0NvbnRyb2xFeGNlcHRpb24gd2hlbiBydW5uaW5nIHVuZGVyIGEKICAgICAgICBzZWN1cml0eSBtYW5hZ2VyIGlmIHRoZSBmaXJzdCBhY2Nlc3MgaXMgdG8gYSBKU1AgdGhhdCB1c2VzIGEKICAgICAgICBGdW5jdGlvbk1hcHBlci4gKG1hcmt0L2trb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ5MTk2PC9idWc+OiBBdm9pZCBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpbgogICAgICAgIFBhZ2VDb250ZXh0LmdldEVycm9yRGF0YSgpIGlmIGFuIGVycm9yLWhhbmRsaW5nIEpTUCBwYWdlIGlzIGNhbGxlZAogICAgICAgIGRpcmVjdGx5LiAoa2tvbGlua28pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNsdXN0ZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ4NzE3PC9idWc+OiBXaGVuIGEgbm9kZSBqb2lucyBhIGNsdXN0ZXIgYW5kIGl0IHJlY2VpdmVzIGFsbCB0aGUKICAgICAgICBjdXJyZW50IHNlc3Npb25zLCBlbnN1cmUgdGhlIHNlc3Npb25DcmVhdGVkIGV2ZW50IGlzIGZpcmVkIGlmIHRoZQogICAgICAgIE1hbmFnZXIgaXMgY29uZmlndXJlZCB0byByZXBsaWNhdGUgc2Vzc2lvbiBldmVudHMuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40OTE3MDwvYnVnPjogRG8gbm90IHNlbmQgZHVwbGljYXRlZCBzZXNzaW9uLiAoa2Z1amlubykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40OTQ0NTwvYnVnPjogV2hlbiBzZXNzaW9uIElEIGlzIGNoYW5nZWQgYWZ0ZXIgYXV0aGVudGljYXRpb24sCiAgICAgICAgZW5zdXJlIHRoZSBEZWx0YU1hbmFnZXIgcmVwbGljYXRlcyB0aGUgY2hhbmdlIGluIElEIHRvIHRoZSBvdGhlciBub2RlcwogICAgICAgIGluIHRoZSBjbHVzdGVyLiAoa2Z1amlubykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iV2ViYXBwcyI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8YWRkPgogICAgICAgIEJhY2twb3J0IGRvY3VtZW50YXRpb24gc3R5bGVzaGVldCBpbXByb3ZlbWVudHMgZnJvbSBUb21jYXQgNjoKICAgICAgICB1c2UgQ1NTIHN0eWxlcyB0byBwcm92aWRlIHByaW50ZXItZnJpZW5kbHkgbGF5b3V0LAogICAgICAgIHN1cHBvcnQgZ2VuZXJhdGlvbiBvZiBUT0MgdGFibGVzLAogICAgICAgIHN1cHBvcnQgbGlua3MgdG8gcmV2aXNpb24gbnVtYmVycywKICAgICAgICB1c2UgdW5kZXJzY29yZXMgaW5zdGVhZCBvZiBzcGFjZXMgaW4gYW5jaG9yIG5hbWVzLiAoa2tvbGlua28pCiAgICAgIDwvYWRkPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgo8L3NlY3Rpb24+CjxzZWN0aW9uIG5hbWU9IlRvbWNhdCA1LjUuMjkgKGZoYW5paykiIHJ0ZXh0PSJyZWxlYXNlZCAyMDEwLTA0LTIwIj4KICA8c3Vic2VjdGlvbiBuYW1lPSJHZW5lcmFsIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxhZGQ+CiAgICAgICAgPGJ1Zz4zNzg0NzwvYnVnPjogTWFrZSBsb2NhdGlvbiBhbmQgZmlsZW5hbWUgb2YgY2F0YWxpbmEub3V0IGNvbmZpZ3VyYWJsZQogICAgICAgIGluIGNhdGFsaW5hLnNoLiAoZmhhbmlrL2trb2xpbmtvKQogICAgICA8L2FkZD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ3NjA5PC9idWc+OiBQcm92aWRlIGZhaWwtc2FmZSBFT0wgY29udmVyc2lvbiBmb3IgYnVpbGQgcHJvY2Vzcy4KICAgICAgICAoc2ViYi9tYXJrdC9ra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NzY4OTwvYnVnPjogRW5hYmxlIHRoZSB0ZXN0IEFudCB0YXJnZXQgdG8gd29yay4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ3NzEyPC9idWc+OiBMb2FkaW5nIHRjbmF0aXZlIHdhcyBicm9rZW4gaW4gNS41LjI4LiAocmp1bmcpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIENvcnJlY3QgQ1ZFLTIwMDktMzU0OC4gV2hlbiBpbnN0YWxsZWQgdmlhIHRoZSBXaW5kb3dzIGluc3RhbGxlciBhbmQKICAgICAgICB1c2luZyBkZWZhdWx0cywgZG9uJ3QgY3JlYXRlIGFuIGFkbWluaXN0cmF0aXZlIHVzZXIgd2l0aCBhIGJsYW5rCiAgICAgICAgcGFzc3dvcmQuIEFkZGl0aW9uYWxseSwgdGhlIGFkbWluaXN0cmF0aXZlIHVzZXIgaXMgb25seSBjcmVhdGVkIGlmIHRoZQogICAgICAgIG1hbmFnZXIgb3IgaG9zdC1tYW5hZ2VyIHdlYiBhcHBsaWNhdGlvbnMgYXJlIHNlbGVjdGVkIGZvciBpbnN0YWxsYXRpb24uCiAgICAgICAgKG1hcmt0L2trb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBEZXByZWNhdGUgdGhlIGpuaSBCdWZmZXIgYW5kIFRocmVhZCBjbGFzc2VzLiAocmp1bmcpCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIEluY2x1ZGUgMzItYml0IGFuZCA2NC1iaXQgdmVyc2lvbnMgb2YgVG9tY2F0IE5hdGl2ZSBETExzIGludG8gdGhlCiAgICAgICAgV2luZG93cyBpbnN0YWxsZXIsIGluc3RlYWQgb2YgZG93bmxvYWRpbmcgdGhlbSBmcm9tIGEgd2ViIHNpdGUgZHVyaW5nCiAgICAgICAgaW5zdGFsbCwgYW5kIGFsbG93IGl0IHRvIGF1dG9tYXRpY2FsbHkgc2VsZWN0IHRoZSBjb3JyZWN0IG9uZSBmb3IgdGhlCiAgICAgICAgY3VycmVudCBwbGF0Zm9ybS4gKGtrb2xpbmtvL210dXJrKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVcGRhdGUgV2luZG93cyBpbnN0YWxsZXIgdG8gdXNlIE5TSVMgMi40NS4gKGtrb2xpbmtvKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVcGRhdGUgdG8gY29tbW9ucy1wb29sIDEuNS40LiBUaGlzIGZpeGVzIHJlZ3Jlc3Npb25zIGluIDEuNS4yLiAobWFya3QpCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIEFsaWduIHNlcnZlci54bWwgaW5zdGFsbGVkIGJ5IHRoZSBXaW5kb3dzIGluc3RhbGxlciB3aXRoIHRoZSBvbmUKICAgICAgICBidW5kbGVkIGluIHppcC90YXIuZ3ogYXJjaGl2ZXMuIChra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRW5jb2RlIGFsbCBwcm9wZXJ0eSBmaWxlcyB1c2luZyBhc2NpaSBlc2NhcGVkIFVURi04LiAocmp1bmcpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIENvcnJlY3QgTUQ1IGdlbmVyYXRpb24gaW4gdGhlIGJ1aWxkIHByb2Nlc3MuIChra29saW5rbykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2F0YWxpbmEiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3ODQ4PC9idWc+OiBSZS1maXguIERvbid0IGRpc3BsYXkgaW5mbyBvdXRwdXQgd2hlbiB0aGVyZSBpcyBubwogICAgICAgIHRlcm1pbmFsLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzkyMzE8L2J1Zz46IENhbGwgTG9naW5Nb2R1bGUubG9nb3V0KCkgd2hlbiB1c2luZyBKQUFTUmVhbG0uCiAgICAgICAgKG1hcmt0L2trb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM5ODQ0PC9idWc+OiBGaXggTlBFIHdoZW4gcGVyZm9ybWluZyBhIG5vbi1IVFRQIGZvcndhcmQuCiAgICAgICAgKGJpbGxiYXJrZXIpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDEwNTk8L2J1Zz46IFJlZHVjZSB0aGUgY2hhbmNlcyBvZiBlcnJvcnMgd2hlbiB1c2luZwogICAgICAgIEVOQUJMRV9DTEVBUl9SRUZFUkVOQ0VTLiBQYXRjaCBieSBDdXJ0IEFybm9sZC4gKG1hcmt0KSAKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgPGJ1Zz40NTI1NTwvYnVnPjogQWRkIHRoZSBhYmlsaXR5IHRvIGNoYW5nZSBzZXNzaW9uIElEIG9uCiAgICAgICAgYXV0aGVudGljYXRpb24gdG8gcHJvdGVjdCBhZ2FpbnN0IHNlc3Npb24gZml4YXRpb24gYXR0YWNrcy4gVGhpcyBpcwogICAgICAgIGRpc2FibGVkIGJ5IGRlZmF1bHQuIChtYXJrdC9ra29saW5rbykKICAgICAgPC9hZGQ+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40Njk2NzwvYnVnPjogQmV0dGVyIGhhbmRsaW5nIG9mIGVycm9ycyB3aGVuIHRyeWluZyB0byB1c2UKICAgICAgICBNYW5hZ2VyLnJhbmRvbUZpbGUuIEJhc2VkIG9uIGEgcGF0Y2ggYnkgS2lyayBXb2xmLiAoa2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDc1MTg8L2J1Zz46IENvcnJlY3QgcmVmZXJlbmNlIGluIFZhbHZlIEphdmFkb2MgdGhhdCByZWZlcnJlZCB0byBhbgogICAgICAgIG9sZCBtZXRob2QuIFBhdGNoIHByb3ZpZGVkIGJ5IENocmlzdG9waGVyIFNjaHVsdHouIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NzUzNzwvYnVnPjogUmV0dXJuIGFuIGVycm9yIHBhZ2UgcmF0aGVyIHRoYW4gYSB6ZXJvIGxlbmd0aCAyMDAKICAgICAgICByZXNwb25zZSBpZiB0aGUgZm9yd2FyZCB0byB0aGUgbG9naW4gb3IgZXJyb3IgcGFnZSBmYWlscyBkdXJpbmcgRk9STQogICAgICAgIGF1dGhlbnRpY2F0aW9uLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDc3MTg8L2J1Zz46IEZpeCBmaWxlIGRlc2NyaXB0b3IgbGVhayBvbiBjb250ZXh0IHN0b3AvcmVsb2FkLiBQYXRjaAogICAgICAgIHByb3ZpZGVkIGJ5IEdlb3JnZSBTZXh0b24uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NzgyNjwvYnVnPjogQ29ycmVjdCBlcnJvciBpbiBkZWJ1ZyBtZXNzYWdlIGluCiAgICAgICAgb3JnLmFwYWNoZS5jYXRhbGluYS5Cb290c3RyYXAgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40Nzk2MzwvYnVnPjogRW5zdXJlIHRoYXQgYW55IEhUVFAgc3RhdHVzIG1lc3NhZ2VzIGFyZSBjb21wbGlhbnQKICAgICAgICB3aXRoIFJGQzI2MTYuIChtYXJrdC9ra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40Nzk5NzwvYnVnPjogRW5hYmxlIHRoZSBOYW1pbmdSZXNvdXJjZXNNQmVhbiB0byB3b3JrIHdpdGgKICAgICAgICBub24tU2VydmVyIChpLmUuIENvbnRleHQpIGNvbnRhaW5lcnMuIFBhdGNoIHByb3ZpZGVkIGJ5IE1pY2hhZWwgQWxsbWFuLgogICAgICAgIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40ODAwNDwvYnVnPjogQWxsb3cgYXBwbGljYXRpb25zIHRvIHNldCB0aGUgU2VydmVyIGhlYWRlci4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ4MDA3PC9idWc+OiBJbXByb3ZlIGV4Y2VwdGlvbiBwcm9jZXNzaW5nIGluCiAgICAgICAgQ3VzdG9tT2JqZWN0SW5wdXRTdHJlYW0uIChra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40ODA0OTwvYnVnPjogRml4IGNvcHkgYW5kIHBhc3RlIGVycm9yIHNvCiAgICAgICAgPGNvZGU+TmFtaW5nQ29udGV4dC5kZXN0cm95U3ViQ29udGV4dCgpPC9jb2RlPiB3b3JrcyBjb3JyZWN0bHkuCiAgICAgICAgUGF0Y2ggcHJvdmlkZWQgYnkgZ2luZ3lhbmcueHUgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICA8YnVnPjQ4MDk3PC9idWc+OiBNYWtlIFdlYmFwcENsYXNzTG9hZGVyIHRvIGRvIG5vdCBzd2FsbG93CiAgICAgICAgQWNjZXNzQ29udHJvbEV4Y2VwdGlvbi4gKGtrb2xpbmtvKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ4MDk3PC9idWc+OiBBdm9pZCB0aHJvd2luZyBhbiBBY2Nlc3NDb250cm9sRXhjZXB0aW9uIHdoaWNoIGNhbgogICAgICAgIGxlYWQgdG8gYSBOb0NsYXNzRGVmRm91bmRFcnJvciBvbiBmaXJzdCBhY2Nlc3Mgb2YgZmlyc3QganNwLgogICAgICAgIChra29saW5rby9tYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40ODMyMjwvYnVnPjogU2luZ2xlIHF1b3RlIGNoYXJhY3RlcnMgYXJlIG5vdCBIVFRQIHNlcGFyYXRvcnMgYW5kCiAgICAgICAgc2hvdWxkIG5vdCBiZSB0cmVhdGVkIGFzIHN1Y2ggaW4gdGhlIGNvb2tpZSBoYW5kbGluZy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICBQcm92aWRlIGFuIG9wdGlvbiB0byBhbGxvdyB0aGUgdXNlIG9mIGVxdWFscyBjaGFyYWN0ZXJzIGluIGNvb2tpZQogICAgICAgIHZhbHVlcy4gKG1hcmt0KQogICAgICA8L2FkZD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ4NTE2PC9idWc+OiBQcmV2ZW50IE5QRSBpbiBKTkRJUmVhbG0gaWYgcmVxdWVzdGVkIHVzZXIgZG9lcyBub3QKICAgICAgICBleGlzdC4gUGF0Y2ggcHJvdmlkZWQgYnkgS2V2aW4gQ29uYXdheS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ4NTc3PC9idWc+OiBGaWx0ZXIgVVJMIHdoZW4gZGlzcGxheWluZyBtaXNzaW5nIGluY2x1ZGVkIHBhZ2UuCiAgICAgICAgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ4NzYwPC9idWc+OiBSZW1vdmUgcmFjZSBjb25kaXRpb24gdGhhdCBjYW4gcmVzdWx0IGluIG11bHRpcGxlCiAgICAgICAgdGhyZWFkcyB0cnlpbmcgdG8gdXNlIHRoZSBzYW1lIElucHV0U3RyZWFtLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEFkZCBhbiBhZGRpdGlvbmFsIHBlcm1pc3Npb24gcmVxdWlyZWQgYnkgSlVMSSB3aGVuIHJ1bm5pbmcgdW5kZXIgbmV3ZXIKICAgICAgICBKREtzIGFuZCBhIHNlY3VyaXR5IG1hbmFnZXIuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgQ2xvc2UgcmVzb3VyY2Ugc3RyZWFtIGluIFdlYmFwcENsYXNzTG9hZGVyIGFmdGVyIHJlYWQgZXJyb3IuIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBEbyBub3Qgc3dhbGxvdyBleGNlcHRpb25zIGluIEFwcGxpY2F0aW9uQ29udGV4dEZhY2FkZS5kb1ByaXZpbGVnZWQoKQogICAgICAgIChra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgVmFyaW91cyByZWxhdGVkICh1bilkZXBsb3kgaW1wcm92ZW1lbnRzIGluY2x1ZGluZzogYmV0dGVyIGhhbmRsaW5nIG9mCiAgICAgICAgZmFpbGVkICh1bilkZXBsb3ltZW50OyBhZGRpbmcgY2hlY2tpbmcgZm9yIGludmFsaWQgemlwIGZpbGUgZW50cmllcyB0aGF0CiAgICAgICAgZG9uJ3QgbWFrZSBzZW5zZSBpbiBhIFdBUiBmaWxlOyBhbmQgaW1wcm92ZWQgdmFsaWRhdGlvbiBvZiBXQVIgZmlsZQogICAgICAgIG5hbWVzLiBUaGVzZSBjaGFuZ2VzIGFkZHJlc3MgQ1ZFLTIwMDktMjY5MywgQ1ZFLTIwMDktMjkwMSBhbmQKICAgICAgICBDVkUtMjAwOS0yOTAyLgogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDb3lvdGUiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQzMzI3PC9idWc+OiBBbGxvdyBBUFIvbmF0aXZlIGNvbm5lY3RvciB0byB3b3JrIGNvcnJlY3RseSBvbgogICAgICAgIHN5c3RlbXMgd2hlbiBJUHY2IGlzIGVuYWJsZWQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40Njk1MDwvYnVnPjogU3VwcG9ydCBTU0wgcmVuZWdvdGlhdGlvbiB3aXRoIEFQUi9uYXRpdmUgY29ubmVjdG9yLgogICAgICAgIE5vdGUgdGhhdCB0aGlzIHJlcXVpcmVzIEFQUi9uYXRpdmUgMS4xLjE3IG9yIGxhdGVyLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDcyMjU8L2J1Zz46IEZpeCBlcnJvciBpbiBjYWxjdWxhdGlvbiBvZiBhIGJ1ZmZlciBsZW5ndGggaW4gdGhlCiAgICAgICAgbWFwcGVyLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDc3NDQ8L2J1Zz46IFByZXZlbnQgYSBtZWRpdW0gdGVybSBtZW1vcnkgbGVhayBpZiB1c2luZyBTU2wgd2l0aAogICAgICAgIHRoZSBKU1NFIHByb3ZpZGVyIGFuZCBhbHNvIHVzaW5nIGEgc2VjdXJpdHkgbWFuYWdlci4gQmFzZWQgb24gYSBwYXRjaCBieQogICAgICAgIEdyZWcgVmFub3JlLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDc5ODc8L2J1Zz46IExpbWl0IHNpemUgb2Ygbm90IGZvdW5kIHJlc291cmNlcyBjYWNoZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ4MTA5PC9idWc+OiBFbnN1cmUgSW5wdXRTdHJlYW0gaXMgY2xvc2VkIGluIFdlYmFwcENsYXNzTG9hZGVyCiAgICAgICAgb24gZXJyb3IgY29uZGl0aW9ucy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ4MzExPC9idWc+OiBBUFIgc2hvdWxkIG5vdCBiZSBpbml0aWFsaXNlZCBpZiB0aGUgQVBSIGxpZmUtY3ljbGUKICAgICAgICBsaXN0ZW5lciBpcyBub3QgZW5hYmxlZC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ4NTgxPC9idWc+OiBBdm9pZCBzZWN1cml0eSBleGNlcHRpb24gb24gZmlyc3QgYWNjZXNzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDg1ODQ8L2J1Zz46IFByZXZlbnQgdGhlIEFQUiBjb25uZWN0b3IgbG9nZ2luZyBhbiBlcnJvciBpZiB0aGUKICAgICAgICBhY2NlcHRvciBmYWlscyBkdXJpbmcgc2h1dGRvd24gc2luY2UgdGhpcyBpcyBleHBlY3RlZC4gKG10dXJrKSAKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgQ1ZFLTIwMDktMzU1NS4gUHJvdmlkZSBvcHRpb24gdG8gZGlzYWJsZSBsZWdhY3kgU1NMIHJlbmVnb3RpYXRpb24uCiAgICAgICAgKG1hcmt0L2Nvc3RpbikgCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCBXaW5kb3dzIGluc3RhbGxlciB0byBidW5kbGUgYW4gdXAtdG8tZGF0ZSB2ZXJzaW9uIG9mIG5hdGl2ZS9BUFIgd2l0aAogICAgICAgIGl0LiBXaGVuIGFza2VkIHRvIGluc3RhbGwgVEMtTmF0aXZlIGl0IHdhcyBkb3dubG9hZGluZyBzb21lIHZlcnkgb2xkICgxLjEuNCkKICAgICAgICB2ZXJzaW9uIG9mIGl0IGZyb20gdGhlIEhFQW5ldCBzaXRlLiAoa2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIFVwZGF0ZSB0aGUgbmF0aXZlL0FQUiBsaWJyYXJ5IHZlcnNpb24gYnVuZGxlZCB3aXRoIFRvbWNhdCB0byAxLjEuMjAuCiAgICAgICAgKGtrb2xpbmtvKSAKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIHJlY29tbWVuZGVkIHZlcnNpb24gZm9yIG5hdGl2ZSB0byAxLjEuMTkuIChyanVuZykKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgUmVtb3ZlIHVubmVlZGVkIGxpbmUgZnJvbSB0aGUgbWV0aG9kIHRoYXQgbm9ybWFsaXplcyBkZWNvZGVkVVJJLgogICAgICAgIChra29saW5rbykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iSmFzcGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zODc5NzwvYnVnPjogRml4IHJlZ3Jlc3Npb24gaW4gcHJldmlvdXMgZml4IGZvciB0aGlzIGJ1Zy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQxNjYxPC9idWc+OiBGaXggdGhyZWFkIHNhZmV0eSBpc3N1ZSBpbiBKc3BDb25maWcuaW5pdCgpIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MTgyNDwvYnVnPjogTmVlZCB0byB1c2UgY2Fub25pY2FsIHJhdGhlciB0aGFuIGJpbmFyeSBmb3JtIHdoZW4KICAgICAgICB3cml0aW5nIGNvZGUuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NjkwNzwvYnVnPjogRG9uJ3Qgc3dhbGxvdyBpbnB1dCBzdHJlYW0gd2hlbiBkZWJ1ZyBsb2dnaW5nIGlzCiAgICAgICAgZW5hYmxlZC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ4NTgyPC9idWc+OiBBdm9pZCBOUEUgb24gYmFja2dyb3VuZCBjb21waWxlLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNsdXN0ZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBEZWx0YU1hbmFnZXIgbmVlZHMgdG8gcmVwbGljYXRlIGNoYW5nZWQgYXR0cmlidXRlcyBldmVuIGlmIHNlc3Npb24KICAgICAgICBnZXRzIGludmFsaWRhdGVkLiBPdGhlcndpc2Ugc2Vzc2lvbiBsaXN0ZW5lcnMgd2lsbCBub3Qgc2VlIHRoZSByaWdodAogICAgICAgIGRhdGEgb24gdGhlIHNlY29uZGFyeSBub2Rlcy4gKHJqdW5nKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBSZW1vdmUgdW5uZWNlc3NhcnkgSmF2YTUgZGVwZW5kZW5jaWVzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDYzODQ8L2J1Zz46IENvcnJlY3Qgc3luY2hyb25pc2F0aW9uIGlzc3VlIHRoYXQgY291bGQgbGVhZCB0byBhCiAgICAgICAgY2x1c3RlciBtZW1iZXIgZGlzYXBwZXJpbmcgcGVybWFuZW50bHkuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NzU1NDwvYnVnPjogSW5jbHVkZSBodHRwT25seSBhdHRyaWJ1dGUgd2hlbiByZS13cml0aW5nIHNlc3Npb24KICAgICAgICBjb29raWUgYWZ0ZXIgZmFpbCBvdmVyLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IldlYmFwcHMiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQxNTY0PC9idWc+OiBBZGQgc29tZSBpbmZvcm1hdGlvbiBvbiBpbnN0YWxsaW5nIFRvbWNhdCBhcyBhIHNlcnZpY2UKICAgICAgICBvbiBvcGVyYXRpbmcgc3lzdGVtcyB3aXRoIFVzZXIgQWNjb3VudCBDb250cm9sLCBlLmcuIFZpc3RhLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDc2NTY8L2J1Zz46IEFkZCBpbmZvcm1hdGlvbiB0byBkb2N1bWVudGF0aW9uIG9uIHN5c3RlbSBwcm9wZXJ0eQogICAgICAgIHJlcGxhY2VtZW50IGluIGNvbmZpZ3VyYXRpb24gZmlsZXMuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40Nzc2OTwvYnVnPjogQ2xhcmlmeSB0aGUgSk5ESSBkb2NzIHdpdGggcmVwZWN0IHRvIHVzZSBvZgogICAgICAgICZsdDtyZXNvdXJjZS1yZWYmZ3Q7IGFuZCByZWxhdGVkIGVsZW1lbnRzLCBzcGVjaWZpY2FsbHkgd2hlbiB0aGV5IGFyZQogICAgICAgIHJlcXVpcmVkIGFuZCB3aGVuIHRoZXkgbWF5IGJlIG9taXR0ZWQuIChtYXJrdCkgCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDgzODE8L2J1Zz46IEFkZCBpbmZvcm1hdGlvbiBvbiBob3cgVG9tY2F0IHRyZWF0cyBob3N0IG5hbWVzIHRvIHRoZQogICAgICAgIGhvc3QgY29uZmlndXJhdGlvbiBkb2N1bWVudGF0aW9uLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIDxidWc+NDg1MzA8L2J1Zz46IEFkZCBpbmZvcm1hdGlvbiBvbiB0aGUgTWFuYWdlciBTZXJ2ZXIgU3RhdHVzIHBhZ2UgdG8KICAgICAgICB0aGUgTWFuYWdlciBIb3ctVG8gaW4gdGhlIGRvY3VtZW50YXRpb24gd2ViYXBwLiBCYXNlZCBvbiBhIHBhdGNoIGJ5CiAgICAgICAgQXJuYXVkIEVzcHkuIChtYXJrdCkKICAgICAgPC9hZGQ+CiAgICAgIDxhZGQ+CiAgICAgICAgPGJ1Zz40ODUzMjwvYnVnPjogQWRkIGluZm9ybWF0aW9uIHRvIHRoZSBCSU8vTklPIFNTTCBjb25maWd1cmF0aW9uIHBhZ2UKICAgICAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiB3ZWIgYXBwbGljYXRpb24gdG8gc3BlY2lmeSBob3cgdGhlIGRlZmF1bHRzIGZvciB0aGUKICAgICAgICB2YXJpb3VzIHRydXN0IHN0b3JlIGF0dHJpYnV0ZXMgYXJlIGRldGVybWluZWQuIChtYXJrdCkKICAgICAgPC9hZGQ+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40ODY4NjwvYnVnPjogRml4IGRlbGV0aW5nIGEgaG9zdCB2aWEgdGhlIEFkbWluaXN0cmF0aW9uIHdlYgogICAgICAgIGFwcGxpY2F0aW9uIHJhdGhlciB0aGFuIGZhaWxpZ24gd2l0aCBhIEhUVFAgNTAwIHJlc3BvbnNlLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIE1ha2UgY2hhbmdlbG9nLnhtbCBiZSBkaXJlY3RseSByZW5kZXJlZCBhcyBIVE1MIGJ5IGNlcnRhaW4gYnJvd3NlcnMuCiAgICAgICAgKGtrb2xpbmtvKQogICAgICA8L2FkZD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KPC9zZWN0aW9uPgo8c2VjdGlvbiBuYW1lPSJUb21jYXQgNS41LjI4IChmaGFuaWspIiBydGV4dD0icmVsZWFzZWQgMjAwOS0wOS0wNCI+CiAgPHN1YnNlY3Rpb24gbmFtZT0iR2VuZXJhbCI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzkxOTQ8L2J1Zz46IE1ha2UgdGhlIHNldHRpbmcgb2YgdGhlIGNsYXNzcGF0aCBjb25zaXN0ZW50IGZvciB0aGUKICAgICAgICAuc2ggYW5kIC5iYXQgc3RhcnR1cCBzY3JpcHRzLiAobWFya3Qva2tvbGlua28pIAogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ1ODgwPC9idWc+OiBJbmNsdWRlIE5PVElDRSBmaWxlIGluIFdpbmRvd3MgaW5zdGFsbGVyIGFuZCBtYWtlIHN1cmUKICAgICAgICBzcmMgZmlsZXMgYXJlIGV4Y2x1ZGVkLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIFVwZGF0ZSB0byBOU0lTIDIuNDQgKGtrb2xpbmtvKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBCdWlsZCBzY3JpcHRzOiBVc2UgZGlmZmVyZW50IHZhbHVlcyBmb3IgJHt0b21jYXQtZGJjcC5ob21lfSBhbmQKICAgICAgICAke2phc3Blci1jb21waWxlci1qZHQuaG9tZX0gaW4gdG9tY2F0LWRlcHMuIEZpeCBkb3dubG9hZCB0YXNrCiAgICAgICAgY2hlY2tzIGZvciBjb21tb25zLXBvb2wgYW5kIGNvbW1vbnMtZGJjcC4gKGtrb2xpbmtvKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGFkZD4KICAgICAgICBBZGQgdGhlIDY0LWJpdCB3aW5kb3dzIHNlcnZpY2UgYmluYXJpZXMgdG8gdGhlIGRpc3RyaWJ1dGlvbiBhbmQgZ2V0IHRoZQogICAgICAgIFdpbmRvd3MgaW5zdGFsbGVyIHRvIGF1dG9tYXRpY2FsbHkgc2VsZWN0IHRoZSBjb3JyZWN0IG9uZSBmb3IgdGhlCiAgICAgICAgY3VycmVudCBwbGF0Zm9ybS4gKG1hcmt0L2trb2xpbmtvKQogICAgICA8L2FkZD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVcGRhdGUgdG8gY29tbW9ucy1wb29sIDEuNS4yLiBUaGlzIGluY2x1ZGVzIHZhcmlvdXMgZml4ZXMgdG8gcHJldmVudAogICAgICAgIGRlYWRsb2NrcywgcmVkdWNlIHN5bmNzIGFuZCBtYWtlIG9iamVjdCBhbGxvY2F0aW9uIG9jY3VyIGZhaXJseSAtIGkuZS4KICAgICAgICBvYmplY3RzIGFyZSBhbGxvY2F0ZWQgdG8gdGhyZWFkcyBpbiB0aGUgb3JkZXIgdGhhdCB0aGUgdGhyZWFkcyByZXF1ZXN0CiAgICAgICAgdGhlbS4gVGhpcyBmaXhlcyBhIG51bWJlciBvZiBpc3N1ZXMgd2l0aCB0aGUgdmVyc2lvbiBvZiBEQkNQIGVtYmVkZGVkCiAgICAgICAgd2l0aGluIFRvbWNhdC4gKG1hcmt0KQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVcGRhdGUgVG9tY2F0IFdpbmRvd3Mgc2VydmljZSBhcHBsaWNhdGlvbiAocHJvY3J1bikgdG8gdmVyc2lvbiAyLjAuNS4KICAgICAgICBJdCBjb250YWlucyBhIGZpeCBmb3IgaXNzdWUgPGJ1Zz40MTUzODwvYnVnPiAobXR1cmspCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDcxNDk8L2J1Zz46IEV4cGxpY2l0bHkgc3BlY2lmeSBlbmNvZGluZyB3aGVuIHBlcmZvcm1pbmcgZmlsdGVyaW5nCiAgICAgICAgZHVyaW5nIGNvcHksIGZpeGNybGYgb3IgcmVwbGFjZSBvcGVyYXRpb25zIGluIGJ1aWxkIHNjcmlwdHMuIERvbid0IGFkZAogICAgICAgIGJsYW5rIGxpbmVzIHRvIGZpbGVzIHdoZW4gZml4aW5nIGxpbmUgZW5kaW5ncy4gRXhwbGljaXRseSBzcGVjaWZ5CiAgICAgICAgZW5jb2Rpbmcgd2hlbiBjb21waWxpbmcuIChra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NzQ2NDwvYnVnPjogU29tZSBjbGFzcyBmaWxlcyB3ZXJlIGFjY2lkZW50YWxseSBpbmNsdWRlZCBpbnRvIHRoZQogICAgICAgIHNvdXJjZSBkaXN0cmlidXRpb25zIG9mIFRDIDUuNS4yNy4gKGtrb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGRvY3M+CiAgICAgICAgRG9jdW1lbnQgdGhhdCBidWlsZGluZyBUb21jYXQgcmVxdWlyZXMgQW50IDEuNi4yIG9yIGxhdGVyLiAoa2tvbGlua28pCiAgICAgIDwvZG9jcz4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDYXRhbGluYSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzc0NTg8L2J1Zz46IEZpeCBzeW5jIGVycm9yIHRoYXQgbWF5IGxlYWQgdG8gTlBFIGluIHJhcmUKICAgICAgICBjaXJjdW1zdGFuY2VzLiBQYXRjaCBieSBLb25zdGFudGluIEtvbGlua28uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzQ5ODwvYnVnPjogRmFsbCBiYWNrIHRvIGNvbnRhaW5lciBsb2cgaWYgYXBwbGljYXRpb24gbG9nIGlzCiAgICAgICAgdW5hdmFpbGFibGUgZHVyaW5nIGNvbnRleHQgZGVzdHJ1Y3Rpb24uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzc5NDwvYnVnPjogSGFuZGxlIFBPU1RlZCBwYXJhbWV0ZXJzIHdoZW4gc2VudCB3aXRoIGNodW5rZWQKICAgICAgICBlbmNvZGluZy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3OTg0PC9idWc+OiBTdHJpcCB7TUQ1fSBhcyB3ZWxsIGFzIHtTSEF9IGlmIHByZXNlbnQgaW4gZGlnZXN0CiAgICAgICAgcGFzc3dvcmRzIGluIExEQVAgZGlyZWN0b3JpZXMuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zODU1MzwvYnVnPjogQSBsYWNrIG9mIGNlcnRpZmljYXRlcyBpcyBub3JtYWwgaWYgYSB1c2VyIGRvZXNuJ3QKICAgICAgICBoYXZlIGEgY2VydGlmaWNhdGUuIFJldHVybiBhIDQwMSByYXRoZXIgdGhhbiBhIDQwMCBpbiB0aGlzIGNhc2UuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zODU3MDwvYnVnPjogV2hlbiBjaGVja2luZyBkb2NCYXNlIGFnYWluc3QgYXBwQmFzZSwgbWFrZSBzdXJlIHdlCiAgICAgICAgY2hlY2sgZm9yIGFuIGV4YWN0IG1hdGNoIGFnYWluc3QgdGhlIGFwcEJhc2UuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zOTAxMzwvYnVnPjogV2hlbiB0ZXN0aW5nIGZvciBhbiBpbnZhbGlkIGRvY0Jhc2UsIHVzZSBhbiBleGFjdAogICAgICAgIG1hdGNoIGZvciB0aGUgYXBwQmFzZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM5Mzk2PC9idWc+OiBPbmx5IGluY2x1ZGUgVFJBQ0UgaW4gYW4gT1BUSU9OUyByZXNwb25zZSBpZiB3ZSBrbm93CiAgICAgICAgaXQgaGFzIGJlZW4gZW5hYmxlZC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBSZW1vdmUgd3JvbmcgIk5vIHJvbGUgZm91bmQiIHJlYWxtIGRlYnVnIGxvZyBtZXNzYWdlLAogICAgICAgIGV2ZW4gaWYgYSByb2xlIHdhcyBmb3VuZC4gKHJqdW5nKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM5OTk3PC9idWc+OiBBZGQgdGhlIFNTTFJhbmRvbVNlZWQgb3B0aW9uIHRvIHRoZQogICAgICAgIEFwckxpZmVjeWNsZUxpc3RlbmVyIHRvIGVuYWJsZSBmYXN0ZXIgc3RhcnRzIG9uIGRldmVsb3BtZW50IHN5c3RlbXMuCiAgICAgICAgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwMzgwPC9idWc+OiBGaXggcG90ZW50aWFsIHN5bmNocm9uaXphdGlvbiBpc3N1ZSBpbgogICAgICAgIFN0YW5kYXJkU2Vzc2lvbi5leHBpcmUoKS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQxNDA3PC9idWc+OiBKQUFTIFJlYWxtIG5vdyB3b3JrcyB3aXRoIENMSUVOVC1DRVJUIGF1dGhlbnRpY2F0aW9uLgogICAgICAgIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgPGJ1Zz40MjQxOTwvYnVnPjogQWRkIGEgc3lzdGVtIHByb3BlcnR5IHRoYXQgZW5hYmxlcyB0aGUgbmFtZSBvZiB0aGUKICAgICAgICBzZXNzaW9uIGNvb2tpZSBhbmQgc2Vzc2lvbiBwYXRoIHBhcmFtZXRlciB0byBiZSBjb25maWd1cmVkLiAobWFya3QpCiAgICAgIDwvYWRkPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDI1Nzk8L2J1Zz46IFN1cHBvcnQgYm90aCByZWxhdGl2ZSBhbmQgYWJzb2x1dGUgc2VhcmNoIHJlc3VsdHMgaW4KICAgICAgICB0aGUgSk5ESSBSZWFsbSBpbXBsZW1lbnRhdGlvbi4gUGF0Y2ggcHJvdmlkZWQgYnkgQnJhbmRvbiBEdVJldHRlLgogICAgICAgIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MjcwNzwvYnVnPjogTWFrZSBhZGRpbmcgYSBob3N0IGFsaWFzIHZpYSBKTVggdGFrZSBlZmZlY3QKICAgICAgICBpbW1lZGlhdGVseS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQzMzQzPC9idWc+OiBDb3JyZWN0bHkgaGFuZGxlIHJlcXVlc3RpbmcgYSBzZXNzaW9uIHdlIGFyZSBpbiB0aGUKICAgICAgICBtaWRkbGUgb2YgcGVyc2lzdGluZy4gQmFzZWQgb24gYSBzdWdnZXN0aW9uIGJ5IFdhZGUgQ2hhbmRsZXIuCiAgICAgICAgKG1hcmt0L2trb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICAgPGJ1Zz40NDM4MjwvYnVnPjogQWRkIHN1cHBvcnQgZm9yIHVzaW5nIGh0dHBPbmx5IGZvciBzZXNzaW9uIGNvb2tpZXMuCiAgICAgICAgIFRoaXMgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4gKG1hcmt0L2ZoYW5paykKICAgICAgPC9hZGQ+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NTU3NjwvYnVnPjogSkFBUyBSZWFsbSBub3cgd29ya3Mgd2l0aCBESUdFU1QgYXV0aGVudGljYXRpb24uCiAgICAgICAgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ1NjI4PC9idWc+OiBKQVJzIHRoYXQgZG8gbm90IGRlY2xhcmUgYW55IGRlcGVuZGVuY2llcyBzaG91bGQKICAgICAgICBhbHdheXMgYmUgY29uc2lkZXJlZCBhcyBmdWxmaWxsZWQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NTkzMzwvYnVnPjogRG9uJ3QgdXNlIGEgd2ViIGFwcGxpY2F0aW9uIHByb3ZpZGVkIHBhcnNlciB0byBwcm9jZXNzCiAgICAgICAgVExEIGZpbGVzLiAobWFya3QpIAogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ1OTk2PC9idWc+OiBBZGQgQWNjZXB0LVJhbmdlcyBoZWFkZXIgdG8gcmVzcG9uc2VzIGZyb20gdGhlCiAgICAgICAgRGVmYXVsdFNlcnZsZXQgd2l0aCBhbiBvcHRpb24gdG8gZGlzYWJsZSBpdC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ2MTA1PC9idWc+OiBDb3JyZWN0bHkgc2V0IFVSSSBlbmNvZGluZyB3aGVuIHJlcGxheWluZyBhIHJlcXVlc3QKICAgICAgICBhZnRlciBGT1JNIGF1dGhlbnRpY2F0aW9uLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDY0MDg8L2J1Zz46IENvcnJlY3QgcG9zc2libGUgaW52YWxpZCBjYXNlIGluIFNlY3VyaXR5VXRpbC4gKG1hcmt0KSAKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NjU1MjwvYnVnPjogUmV0dXJuIGEgNDAwIHJlc3BvbnNlIHJhdGhlciB0aGFuIGEgMjAwIHJlc3BvbnNlIGlmCiAgICAgICAgdGhlIHJlcXVlc3QgaGVhZGVycyBhcmUgdG9vIGxhcmdlLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDY1OTc8L2J1Zz46IFBvcnQgYWxsIGNvb2tpZSBoYW5kbGluZyBjaGFuZ2VzIGZyb20gVG9tY2F0IDYuMC54LgogICAgICAgIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NjYwNjwvYnVnPjogTWFrZSBtYXggZGVwdGggbGltaXQgZm9yIFdlYkRBViBzZXJ2bGV0IGNvbmZpZ3VyYWJsZS4KICAgICAgICAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDY3MTc8L2J1Zz46IEZpeCBoYXJkIHRvIHJlcHJvZHVjZSB0aHJlYWQgc2FmZXR5IGlzc3VlIHdpdGggc2Vzc2lvbgogICAgICAgIGV4cGlyYXRpb24uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40Njk4MjwvYnVnPjogRml4IERTVCBwcm9ibGVtIHdpdGggQWNjZXNzTG9nVmFsdmUuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgSW1wcm92ZSBoYW5kbGluZyBvZiBzaXR1YXRpb24gd2hlcmUgd2ViIGFwcGxpY2F0aW9uIHRyaWVzIHRvIGNvbmZpZ3VyZQogICAgICAgIGxvZ2dpbmcgYXQgdGhlIGNvbnRleHQgbGV2ZWwgYnV0IHRoZSBzZWN1cml0eSBwb2xpY3kgcHJldmVudHMgdGhpcy4KICAgICAgICAobWFya3Qvcmp1bmcpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCBhbiBpbmZvcm1hdGlvbiBkaXNjbG9zdXJlIHZ1bG5lcmFiaWxpdHkgaW4gYSBudW1iZXIgb2YgdGhlIFJlYWxtcwogICAgICAgIHRoYXQgYWxsb3dlZCB1c2VyIGVudW1lcmF0aW9uIHdoZW4gdXNpbmcgRk9STSBhdXRoZW50aWNhdGlvbi4gVGhpcyBpcwogICAgICAgIENWRS0yMDA5LTA1ODAuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IHZhcmlvdXMgV2ViREFWIGNvbXBsaWFuY2UgaXNzdWVzIGlkZW50aWZpZWQgYnkgdGhlIExpdG11cyB0ZXN0CiAgICAgICAgc3VpdGUuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgVXNlIGEgYmV0dGVyIGRlZmF1bHQgKHdlYmFwcHMpIGZvciBhIEhvc3QncyBhcHBCYXNlLiAoaWRhcndpbi9tYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NDk0MzwvYnVnPjogUmVkdWNlIGNvcHkvcGFzdGUgaXNzdWVzIGNhdXNlZCBieSBkaWZmZXJlbnQgZW5naW5lCiAgICAgICAgbmFtZXMgaW4gc2VydmVyLnhtbC4gKG1hcmt0LCBra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgUmVtb3ZlIG9ic29sZXRlIGNsYXNzcGF0aCBlbnRyeSBmb3IgY29tbW9ucy1sb2dnaW5nIGZyb20gc3RhcnQgc2NyaXB0LgogICAgICAgIEl0IGlzIGFscmVhZHkgcHJlc2VudCBpbiB0aGUgY2xhc3NwYXRoIHNldCBieSB0aGUgbWFuaWZlc3QgaW4gYm9vdHN0cmFwLmphci4KICAgICAgICAocmp1bmcpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzg0ODM8L2J1Zz46IFRocmVhZCBzYWZldHkgaXNzdWVzIGluIEFjY2Vzc0xvZ1ZhbHZlIGNsYXNzZXMuIChra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgQWxsb3cgbG9nIGZpbGUgZW5jb2RpbmcgdG8gYmUgY29uZmlndXJlZCBmb3IgSlVMSSBGaWxlSGFuZGxlci4gKGtrb2xpbmtvKQogICAgICA8L2FkZD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJKYXNwZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM2OTIzPC9idWc+OiBQYXJzZSBkZWFjdGl2YXRlZCBFTCBleHByZXNzaW9ucyBjb3JyZWN0bHkuIChtYXJrdCkgCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzcwODQ8L2J1Zz46IEZpeCBKc3BDIGNvbXBpbGF0aW9uIHdpdGggQW50IHdoZW4gY29tcGlsaW5nIEpTUHMgdGhhdAogICAgICAgIHVzZSBhIGN1c3RvbSB0YWdsaWIuIChtYXJrdC9ra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzUxNTwvYnVnPjogQWRkIG9wdGlvbnMgZm9yIEphdmEgMS42IGFuZCAxLjcgdG8gdGhlIEpEVCBjb21waWxlci4KICAgICAgICAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzgxOTc8L2J1Zz46IEZpeCB0YWcgcG9vbGluZyB3aGVuIHRhZ3MgYXJlIHVzZWQgd2l0aCBqc3A6YXR0cmlidXRlLgogICAgICAgIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zODM1MjwvYnVnPjogTWFrZSB0aGUgZGlyZWN0b3J5IGRlZmluZWQgYnkKICAgICAgICBqYXZheC5zZXJ2bGV0LmNvbnRleHQudGVtcGRpciByZWFkYWJsZSBmb3IgSlNQcyB3aGVuIHJ1bm5pbmcgdW5kZXIgYQogICAgICAgIHNlY3VyaXR5IG1hbmFnZXIgYXMgcmVxdWlyZWQgYnkgdGhlIHNwZWNpZmljYXRpb24uIChtYXJrdCkgCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzg3OTc8L2J1Zz46IFJldmVydCBwcmV2aW91cyBmaXggZm9yIDxidWc+Mzc5MzM8L2J1Zz4gYW5kIGltcGxlbWVudAogICAgICAgIGEgbmV3IGZpeCB0aGF0IGRvZXMgbm90IGhhdmUgdGhlIHNpZGUgZWZmZWN0cyBkZXNjcmliZWQgaW4KICAgICAgICA8YnVnPjM4Nzk3PC9idWc+LiAgCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzg4OTc8L2J1Zz46IEFkZCB1cmkgb2YgYnJva2VuIFRMRCB0byBlcnJvciBtZXNzYWdlIHRvIGFpZAogICAgICAgIGRlYnVnZ2luZy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQxNjA2PC9idWc+OiBGaXggZG91YmxlIGluaXRpYWxpc2F0aW9uIG9mIEpTUHMuIFBhdGNoIHByb3ZpZGVkIGJ5CiAgICAgICAgQ2hyaXMgSGFsc3RlYWQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NTY2NjwvYnVnPjogRml4IGluZmluaXRlIGxvb3Agb24gaW5jbHVkZS4gUGF0Y2ggcHJvdmlkZWQgYnkgVG9tCiAgICAgICAgV2Fkemluc2tpLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDYzNTQ8L2J1Zz46IEZpeCBBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gd2hlbiB1c2luZwogICAgICAgIG9yZy5hcGFjaGUuamFzcGVyLnJ1bnRpbWUuQm9keUNvbnRlbnRJbXBsLkxJTUlUX0JVRkZFUj10cnVlLiBQYXRjaAogICAgICAgIHByb3ZpZGVkIGJ5IEtvbnN0YW50aW4gS29saW5rby4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ2OTA5PC9idWc+OiBPbmx5IGluY2x1ZGUgc2VtaS1jb2xvbiBpbiB0eXBlIGF0dHJpYnV0ZSBmb3IKICAgICAgICAmbHQ7anNwOnBsdWdpbiZndDsgd2hlbiBpdCBpcyByZXF1aXJlZC4gKG1hcmt0KSAgCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNsdXN0ZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBGaXggbWlub3IgbWVtb3J5IGxlYWsgZm91bmQgYnkgZmluZCBidWdzLiAobWFya3QsIHJqdW5nKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwNTUxPC9idWc+OiBFbmFibGUgdGhlIEp2bVJvdXRlQmluZGVyVmFsdmUgdG8gd29yayB3aXRoCiAgICAgICAgUGVyc2lzdGVudE1hbmFnZXJzIGFzIHdlbGwgYXMgY2x1c3RlcmluZy4gUGF0Y2ggYnkgQ2hyaXMgQ2hhbmRsZXIuCiAgICAgICAgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ2MzU3PC9idWc+OiBDb3JyZWN0ZWQgdGVzdCBmb3IgaG9zdCdzIHBhcmVudCBtdXN0IGJlIGFuIGVuZ2luZS4KICAgICAgICAobWFya3QsIHJqdW5nKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICA8YnVnPjQ1MzE3PC9idWc+OiBQcm9wZXJseSBsb2cgdGhlIHZhbHVlIG9mIHRoZSBzdGF0ZSB0cmFuc2ZlciB0aW1lb3V0IGZsYWcuCiAgICAgICAgKGZoYW5paywgcmp1bmcpCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDUyNzk8L2J1Zz46IFByb3Blcmx5IGNsb3NlIG11bHRpY2FzdCBzb2NrZXQuIChmaGFuaWssIHJqdW5nKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ1NDQ3PC9idWc+OiBBZGQgU3BhbmlzaCByZXNvdXJjZSBmaWxlcy4KICAgICAgICBQYXRjaCBwcm92aWRlZCBieSBKZXN1cyBNYXJpbi4gKG1hcmt0LCByanVuZykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40Njk5MDwvYnVnPjogRml4IHN5bmNocm9uaXphdGlvbiBpc3N1ZXMgaW4gY2x1c3RlciBtZW1iZXJzaGlwCiAgICAgICAgcmVwb3J0ZWQgYnkgRmluZEJ1Z3MuIFBhdGNoIHByb3ZpZGVkIGJ5IFNlYmIuIChtYXJrdCwgcmp1bmcpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDczODk8L2J1Zz46IERlbHRhTWFuYWdlciBkb2Vzbid0IGRvIHNlc3Npb24gcmVwbGljYXRpb24gaWYKICAgICAgICBub3RpZnlTZXNzaW9uTGlzdGVuZXJzT25SZXBsaWNhdGlvbj1mYWxzZS4KICAgICAgICBQYXRjaCBieSBLZWlpY2hpIEZ1amluby4gKGZoYW5paywgcmp1bmcpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIFNlcGFyYXRlIHN0YXRpc3RpY3MgY291bnRlciBsb2NrIGluIEZhc3RBc3luY1NvY2tldFNlbmRlciBmcm9tIGluaGVyaXRlZAogICAgICAgIERhdGFTZW5kZXIgbG9jayB0byByZWR1Y2UgYmxvY2tpbmcgZHVyaW5nIGZhaWxlZCBub2RlIGRldGVjdGlvbi4gKHJqdW5nKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBIYW5kbGUgc2l0dWF0aW9uIHNlc3Npb24gSUQgcmV3cml0aW5nIG9uIGZhaWwtb3ZlciB3aXRoIHBhcmFsbGVsIHJlcXVlc3RzCiAgICAgICAgZnJvbSB0aGUgc2FtZSBjbGllbnQuIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQzNjQxPC9idWc+OiBVc2Ugb2YgYmluZCBhdHRyaWJ1dGUgZm9yIG1lbWJlcnNoaXAgZWxlbWVudCBicmVha3MKICAgICAgICBtdWx0aWNhc3QuIChyanVuZykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iV2ViYXBwcyI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIEZpeCBDVkUtMjAwOS0wNzgxLiBYU1MgaW4gY2FsZW5kYXIgZXhhbXBsZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM2NTc0PC9idWc+OiBGaXggYnJva2VuIFBERnMuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zOTYwMzwvYnVnPjogQWRtaW4gYXBwIG9ubHkgc2hvd2VkIFJPT1Qgd2ViIGFwcGxpY2F0aW9uIHdoZW4KICAgICAgICBjbHVzdGVyaW5nIHdhcyBlbmFibGVkLiAobWFya3QpIAogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ3MDMyPC9idWc+OiBGaXggL3N0YXR1cy9hbGwgaW4gTWFuYWdlciB3ZWJhcHAgd2hlbiB1c2luZyB0aGUKICAgICAgICBQZXJzaXN0ZW50TWFuYWdlci4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ3MjM1PC9idWc+OiBSZW1vdmUgdXNlIG9mIGF1dG9SZWNvbm5lY3QgZnJvbSBNeVNRTCBleGFtcGxlcy4KICAgICAgICAobWFyaykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NjUwOTwvYnVnPjogVXNlIGNvcnJlY3QgbGluayBvbiBlcnJvciBwYWdlIGluIEpTUCBzZWN1cml0eQogICAgICAgIGV4YW1wbGUuIFBhdGNoIHByb3ZpZGVkIGJ5IE1pY2hhZWwgTW9vZHkuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NjU2MjwvYnVnPjogQ2xvc2UgZmlsZSB3aGVuIHJlYWRpbmcgaGFzIGZpbmlzaGVkIHdoZW4gdXNpbmcgU1NJLgogICAgICAgIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ295b3RlIiA+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzc4Njk8L2J1Zz46IENvcnJlY3RseSBleHRyYWN0IGNsaWVudCBjZXJ0aWZpY2F0ZXMsIGluY2x1ZGluZyB0aGUKICAgICAgICBmdWxsIGNlcnRpZmljYXRlIGNoYWluIHdoZW4gdXNpbmcgdGhlIEFQUi9uYXRpdmUgSFRUUCBjb25uZWN0b3IuIChtYXJrdCkgCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzk2Mzc8L2J1Zz46IENvcnJlY3RseSBleHRyYWN0IGNsaWVudCBjZXJ0aWZpY2F0ZXMsIGluY2x1ZGluZyB0aGUKICAgICAgICBmdWxsIGNlcnRpZmljYXRlIGNoYWluIHdoZW4gdXNpbmcgdGhlIEFKUCBjb25uZWN0b3JzLiBQYXRjaCBieSBQYXRyaWsKICAgICAgICBTY2huZWxsbWFubi4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBTZXQgcmVtb3RlIHBvcnQgZm9yIEFKUCBjb25uZWN0b3JzIGZyb20gdGhlIG9wdGlvbmFsIHJlcXVlc3QKICAgICAgICBhdHRyaWJ1dGUgQUpQX1JFTU9URV9QT1JULiAocmp1bmcpCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDUwMjY8L2J1Zz46IE5ldmVyIHJldHVybiBhbiBlbXB0eSBIVFRQIHN0YXR1cyByZWFzb24gcGhyYXNlLgogICAgICAgIG1vZF9qayBhbmQgaHR0cGQgMi54IGRvIG5vdCBsaWtlIHRoYXQuIChyanVuZykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NTUyODwvYnVnPjogQW4gaW52YWxpZCBTU0wgY29uZmlndXJhdGlvbiBjb3VsZCBjYXVzZSBhbiBpbmZpbml0ZQogICAgICAgIGxvZ2dpbmcgbG9vcCBvbiBzdGFydHVwLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDY5ODQ8L2J1Zz46IFJlamVjdCByZXF1ZXN0cyB3aXRoIGludmFsaWQgSFRUUCBtZXRob2RzIHdpdGggYSA0MDAKICAgICAgICByYXRoZXIgdGhhbiBhIDUwMS4gKG1hcmt0KSAKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIHRoZSBBUFIvbmF0aXZlIGNvbm5lY3RvciB0byAxLjEuMTYuIChtYXJrdCwga2tvbGlua28pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIENvcnJlY3QgcG90ZW50aWFsIERPUyBpc3N1ZSBpbiBKYXZhIEFKUCBjb25uZWN0b3Igd2hlbiBwcm9jZXNzaW5nCiAgICAgICAgaW52YWxpZCByZXF1ZXN0IGhlYWRlcnMuIFRoaXMgaXMgQ1ZFLTIwMDktMDAzMy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBNYWtlIERhdGVUb29sIHRocmVhZCBzYWZlLiAoZmhhbmlrKSAKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+Cjwvc2VjdGlvbj4KPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS4yNyAoZmhhbmlrKSIgcnRleHQ9InJlbGVhc2VkIDIwMDgtMDktMDgiPgogIDxzdWJzZWN0aW9uIG5hbWU9IkdlbmVyYWwiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ0NDYzPC9idWc+OiBXYXIgZmlsZSB1cGxvYWQgaW4gbWFuYWdlciB3ZWJhcHAgZmFpbHMgZHVlIHRvIG1pc3NpbmcKICAgICAgICBjb21tb25zLWlvIGRlcGVuZGVuY3kuIEFkZGVkIGNvbW1vbnMtaW8gMS40LiAocmp1bmcpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNhdGFsaW5hIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40Njc3MDwvYnVnPjogRG9uJ3Qgc2VuZCBkdXBsaWNhdGUgaGVhZGVycyB3aGVuIHVzaW5nIGZsdXNoQnVmZmVyKCkuIChyanVuZykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NDAyMTwvYnVnPiwgPGJ1Zz40MzAxMzwvYnVnPjogQWRkIHN1cHBvcnQgZm9yICMgdG8gc2lnbmlmeSBtdWx0aS1sZXZlbCBjb250ZXh0cyBmb3IgZGlyZWN0b3JpZXMgYW5kIHdhcnMuCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDQ0OTQ8L2J1Zz46IEJhY2twb3J0IGZyb20gNi4wIChyanVuZykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgQWRkIGFkZGl0aW9uYWwgY2hlY2tzIGZvciBVUkkgbm9ybWFsaXphdGlvbi4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIERvbid0IHRocm93IGFuIEFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiB3aGVuIGVtcHR5IFVSTCBpcwogICAgICAgIHJlcXVlc3RlZC4gUGF0Y2ggcHJvdmlkZWQgYnkgQ2hhcmxlcyBSIENhbGRhcmFsZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjI5OTM2PC9idWc+OiBEb24ndCB1c2UgcGFyc2VyIGZyb20gYSB3ZWJhcHAgdG8gcGFyc2Ugd2ViLnhtbCBhbmQgcG9zc2libHkKICAgICAgICBjb250ZXh0LnhtbCBmaWxlcy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQzMDc5PC9idWc+OiBDb3JyZWN0IHBhdHRlcm4gdmVyaWZpY2F0aW9uIGZvciBzdXNwaWNpb3VzIFVSTHMuCiAgICAgICAgUGF0Y2ggcHJvdmlkZWQgYnkgSm9obiBLZXcuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MzA4MDwvYnVnPjogTG9nIHN1c3BpY2lvdXMgVVJMIHBhdHRlcm4gd2FybmluZ3MgdG8gdGhlIGNvcnJlY3QKICAgICAgICB3ZWIgYXBwbGljYXRpb24uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MzExNzwvYnVnPjogU2V0dGluZyBhbiBlbXB0eSB3b3JrRElSIGNvdWxkIGRlbGV0ZSBhbGwgb2YKICAgICAgICBDQVRBTElOQV9IT01FLiBQYXRjaCBwcm92aWRlZCBieSBUYWtheXVraSBLYW5la28uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NDI4MjwvYnVnPjogUHJldmVudCBzZWN1cml0eSBleGNlcHRpb24gaW4gdHJhY2UgbGV2ZWwgbG9nZ2luZyBmb3IKICAgICAgICB3ZWIgYXBwbGljYXRpb24gY2xhc3MgbG9hZGVyIHdoZW4gcnVubmluZyB1bmRlciBhIHNlY3VyaXR5IG1hbmFnZXIuCiAgICAgICAgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ0NTI5PC9idWc+OiBObyByb2xlcyBzcGVjaWZpZWQgKGRlbnkgYWxsKSBzaG91bGQgdGFrZSBwcmVjZWRlbmNlCiAgICAgICAgb3ZlciBubyBhdXRoLWNvbnN0cmFpbnQgc3BlY2lmaWVkIChhbGxvdy1hbGwpLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDM1Nzg8L2J1Zz46IEVuYWJsZSBzdGFydCBvbiBMaW51eCBpZiAkQ0FUQUxJTkFfSE9NRSBjb250YWlucyBhCiAgICAgICAgc3BhY2UuIE9yaWdpbmFsIHBhdGNoIHByb3ZpZGVkIGJ5IFJheSBTYXVlcnMgd2l0aCBpbXByb3ZlbWVudHMgYnkgSWFuCiAgICAgICAgV2FyZCBDb21mb3J0LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDQ2NzM8L2J1Zz46IFRocm93IElPRSBpZiBTZXJ2bGV0SW5wdXRTdHJlYW0gaXMgY2xvc2VkIGFuZCBhIGNhbGwKICAgICAgICBpcyBtYWRlIHRvIGFueSByZWFkKCksIHJlYWR5KCksIG1hcmsoKSwgcmVzZXQoKSwgb3Igc2tpcCgpIG1ldGhvZCBhcyBwZXIKICAgICAgICBqYXZhZG9jcyBmb3IgUmVhZGVyLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEVuYWJsZSB0aGUgQ0dJU2VydmxldCB0byB3b3JrIHdpdGggV2luZG93cyBWaXN0YS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBBZGQgYWRkaXRpb25hbCBwZXJtaXNzaW9uIHJlcXVpcmVkIHRvIHJlYWQgSkRLIGxvZ2dpbmcgY29uZmlndXJhdGlvbgogICAgICAgIHdoZW4gcnVubmluZyB3aXRoIGEgc2VjdXJpdHkgbWFuYWdlci4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ0OTQzPC9idWc+OiBSZWR1Y2UgY29weS9wYXN0ZSBpc3N1ZXMgY2F1c2VkIGJ5IGRpZmZlcmVudCBlbmdpbmUKICAgICAgICBuYW1lcyBpbiBzZXJ2ZXIueG1sLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDUxOTU8L2J1Zz46IFByZXZlbnQgTlBFIHdoZW4gY2FsbGluZwogICAgICAgIDxjb2RlPlNlc3Npb24uZ2V0QXR0cmlidXRlKG51bGwpPC9jb2RlPiBhbmQgCiAgICAgICAgPGNvZGU+U2Vzc2lvbi5yZW1vdmVBdHRyaWJ1dGUobnVsbCk8L2NvZGU+LiBUaGUgc3BlYyBpcyB1bmNsZWFyIGJ1dCB0aGlzCiAgCQlpcyBhIHJlZ3Jlc3Npb24gZnJvbSA1LjAueC4gKG1hcmt0KQogIAkgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDUyOTM8L2J1Zz46IFVwZGF0ZSBuYW1lIG9mIGNvbW1vbnMtbG9nZ2luZyBqYXIgaW4gc2VjdXJpdHkgcG9saWN5LgogICAgICAgIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NTQ1MzwvYnVnPjogRml4IHJhY2UgY29uZGl0aW9uIGluIEpEQkMgUmVhbG0uIEJhc2VkIG9uIGEgcGF0Y2gKICAgICAgICBwcm92aWRlZCBieSBTYW50dHUgSHlya2suIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgSkFBUyBSZWFsbSBkaWQgbm90IHJlYWQgcm9sZSBpbmZvcm1hdGlvbiBmb3IgdXNlcnMuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NjY4MzwvYnVnPjogRml4IHR5cG8gaW4gRnJlbmNoIGxvY2FsaXNhdGlvbiBmaWxlIG5hbWUgZm9yIHRoZQogICAgICAgIG9yZy5hcGFjaGUuY2F0YWxpbmEubG9hZGVyIHBhY2thZ2UuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ295b3RlIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgTG9nIGVycm9ycyBmb3IgQUpQIHNpZ25vZmZzIGF0IERFQlVHIGxldmVsLCBzaW5jZSBpdCBpcyBoYXJtbGVzcyBpZgogICAgICAgIG1vZF9qayBoYXMgaHVuZyB1cCB0aGUgcGhvbmUuIChiaWxsYmFya2VyKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQyNzI3PC9idWc+OiBIYW5kbGUgcmVxdWVzdCBsaW5lcyB0aGF0IGFyZSBleGFjdCBtdWx0aXBsZXMgb2YgNDA5NgogICAgICAgIGluIGxlbmd0aC4gUGF0Y2ggcHJvdmlkZWQgYnkgV2lsbCBQdWdoLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDMxOTE8L2J1Zz46IENvbXByZXNzaW9uIGNvdWxkIG5vdCBiZSBkaXNhYmxlZCBmb3Igc29tZSBmaWxlIHR5cGVzLgogICAgICAgIEJhc2VkIG9uIGEgcGF0Y2ggYnkgTGVuIFBvcHAuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NTU5MTwvYnVnPjogRml4IE5QRSBvbiBzaHV0ZG93biBmYWlsdXJlIGluIHNvbWUgY2FzZXMuIEJhc2VkIG9uIGEKICAgICAgICBwYXRjaCBieSBNYXR0IFBhc3NlbGwuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iSmFzcGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMTI1NzwvYnVnPjogUXVvdGUgZW5kb3JzZWQgZGlycyBpZiB0aGV5IGNvbnRhaW4gYSBzcGFjZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQyOTQzPC9idWc+OiBNYWtlIHN1cmUgbmVzdGVkIGVsZW1lbnQgaXMgaW5zaWRlICZsdDtqc3A6dGV4dCZndDsKICAgICAgICBlbGVtZW50IGJlZm9yZSB0aHJvd2luZyBleGNlcHRpb24uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NDg3NzwvYnVnPjogUHJldmVudCBjb2xsaXNpb25zIGluIHRhZyBwb29sIG5hbWVzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDUwMTU8L2J1Zz46IEVuZm9yZSBKU1Agc3BlYyBydWxlcyBvbiBxdW90aW5nIGluIGF0dHJidXRlcy4gVGhpcyBpcwogICAgICAgIGNvbmZpZ3VyYWJsZSB1c2luZyB0aGUgc3lzdGVtIHByb3BlcnR5CiAgICAgICAgPGNvZGU+b3JnLmFwYWNoZS5qYXNwZXIuY29tcGlsZXIuUGFyc2VyLlNUUklDVF9RVU9URV9FU0NBUElORzwvY29kZT4uCiAgICAgICAgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJXZWJhcHBzIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40Mjg5OTwvYnVnPjogV2hlbiBzYXZpbmcgY29uZmlnIGZyb20gYWRtaW4gYXBwLCBjb3JyZWN0bHkgaGFuZGxlCiAgICAgICAgY2FzZSB3aGVyZSB0aGUgb2xkIGNvbmZpZyBmaWxlIGRvZXMgbm90IGV4aXN0LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDQ1NDE8L2J1Zz46IERvY3VtZW50IHBhY2tldFNpemUgYXR0cmlidXRlIGZvciBBSlAgY29ubmVjdG9yLgogICAgICAgIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NDcxNTwvYnVnPjogRG9jdW1lbnQgdXNlIG9mIHNlY3JldCBmb3IgQUpQIGNvbm5lY3Rvci4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICA8YnVnPjQ1MzIzPC9idWc+OiBBZGQgbm90ZSB0aGF0IGNvbnRleHQueG1sIGZpbGVzIGNhbiBvbmx5IGNvbnRhaW4gYQogICAgICAgIHNpbmdsZSBDb250ZXh0IGVsZW1lbnQuIChtYXJrdCkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgVXBkYXRlIEpOREkgZGF0YXNvdXJjZSBkb2NzIHNpbmNlIG1heEFjdGl2ZSBzZXR0aW5nIGZvciB1bmxpbWl0ZWQKICAgICAgICBjaGFuZ2VkIGluIGNvbW1vbnMtcG9vbCA+IDEuMi4gKG1hcmt0KQogICAgICA8L2ZpeD4gCiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iU3BlY2lmaWNhdGlvbiI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIFVzZSBhIGxvY2FsaXNlZCBlcnJvciBtZXNzYWdlIGlmIGEgdXNlciB0cmllcyB0byB3cml0ZSBhIG5lZ2F0aXZlIGxlbmd0aAogICAgICAgIGJ5dGUgYXJyYXkgZHVyaW5nIGRlZmF1bHQgcHJvY2Vzc2luZyBvZiBhIEhFQUQgcmVxdWVzdC4gKG1hcmt0KSAgIAogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ0NTYyPC9idWc+OiBIRUFEIHJlcXVlc3RzIGNhbm5vdCB1c2UgaW5jbHVkZXMuIFBhdGNoIHByb3ZpZGVkIGJ5CiAgICAgICAgICBEYXZpZCBKZW5ja3MuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+Cjwvc2VjdGlvbj4KPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS4yNiAoZmhhbmlrKSIgcnRleHQ9InJlbGVhc2VkIDIwMDgtMDItMDUiPgogIDxzdWJzZWN0aW9uIG5hbWU9IkdlbmVyYWwiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVc2UgRWNsaXBzZSBKRFQgMy4zLjEuIChwZXJvKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVc2UgbmV3IGNvbW1vbnMgZG93bmxvYWQgbG9jYXRpb24uIChtYXJrdCkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXNlIGNvbW1vbnMtbGF1bmNoZXIgMS4xLiAobWFya3QpCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFVzZSBjb21tb25zLWRpZ2VzdGVyIDEuOC4gKG1hcmt0KQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVc2UgWGVyY2VzIDIuOS4xLiAobWFya3QpCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFJlbW92ZSB1c3VzZWQgY29tbW9ucy1odHRwY2xpZW50LiAoZnVua21hbikKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXNlIGNvbW1vbnMtY29sbGVjdGlvbnMgMy4yLiAobWFya3QpCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFVzZSBjb21tb25zLWZpbGV1cGxvYWQgMS4yLiAobWFya3QpCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFVzZSBNWDRKIDMuMC4yLiAobWFya3QpCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFVzZSBKVW5pdCAzLjguMi4gKG1hcmt0KQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVc2UgTlNJUyAyLjM0LiAobWFya3QpCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFVzZSBTdHJ1dHMgMS4yLjkuIChtYXJrdCkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXNlIEpBRiAxLjEuMS4gKG1hcmt0KQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVc2UgSlRBIDEuMS4gKG1hcmt0KQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVc2UgSmF2YU1haWwgMS40LjEuIChtYXJrdCkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXNlIFB1cmVUTFMgMC45YjUuIChtYXJrdCkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXNlIGNvbW1vbnMtcG9vbCAxLjQuIChtYXJrdCkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MzU5NDwvYnVnPjogVXNlIHNldGVudiBmcm9tIENBVEFMSU5BX0JBU0UgKGlmIHNldCkgaW4gcHJlZmVyZW5jZQogICAgICAgIHRvIHRoZSBvbmUgaW4gQ0FUQUxJTkFfSE9NRS4gUGF0Y2ggcHJvdmlkZWQgYnkgU2hhZGR5IEJhZGRhaC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggQ1ZFLTIwMDctNTM0MiBieSBsaW1pdGluZyBwZXJtaXNzaW9ucyBncmFudGVkIHRvIEpVTEkuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+ICAKICA8c3Vic2VjdGlvbiBuYW1lPSJDYXRhbGluYSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PjxidWc+MzgxMzE8L2J1Zz46IFdhdGNoZWRSZXNvdXJjZSBkb2Vzbid0IHdvcmsgaWYgYXBwIGlzIG91dHNpZGUgaG9zdCBhcHBiYXNlIHdlYmFwcHMuIAogICAgICAgIFBhdGNoIHByb3ZpZGVkIGJ5IFBldGVyIEx5bmNoIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBTZXQgY29ycmVjdCBzZXNzaW9uQ291bnRlciBhdCBTdGFuZGFyZE1hbmFnZXIgYWZ0ZXIgcmVsb2FkIHNlc3Npb25zLiAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgIAlGaXggTlBFIHNpdHVhdGlvbiBhdCBBY2Nlc3NMb2dWYWx2ZSAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMDk0OTwvYnVnPjogSW1wcm92ZSBwcmV2aW91cyBmaXguIEVuc3VyZSByZXF1ZXN0cyBhcmUgcmVjeWNsZWQKICAgICAgICBvbiBjcm9zcy1jb250ZXh0IGluY2x1ZGVzIGFuZCBmb3J3YXJkcyB3aGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlCiAgICAgICAgdGFyZ2V0IHBhZ2UuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MzIxNjwvYnVnPjogU2V0IGNvcnJlY3QgU3RhbmRhcmRTZXNzaW9uI2FjY2Vzc0NvdW50IGFzIHN5c3RlbSBwcm9wZXJ0eSBTVFJJQ1RfU0VSVkxFVF9DT01QTElBTkNFIGlzIHRydWUgYWZ0ZXIgYXBwbGljYXRpb24gcmVzdGFydCB3aXRoIFNFU1NJT04uc2VyIGZpbGUuCiAgICAgICAgUGF0Y2ggcHJvdmlkZWQgYnkgVGFrYXl1a2kgS2FuZWtvIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICBNYWRlIHNlc3Npb24gY3JlYXRlVGltZSBhY2Nlc3NpYmxlIGZvciBhbGwgU2Vzc2lvbk1hbmFnZXIgdmlhIEpNWCAocGVybykKICAgICAgPC9hZGQ+CiAgICAgIDxhZGQ+CiAgICAgICAgU3VwcG9ydCBsb2dnaW5nIG9mIGFsbCByZXNwb25zZSBoZWFkZXIgdmFsdWVzIGF0IEV4dGVuZGVkQWNjZXNzTG9nVmFsdmUgKGV4LiBhZGQgeC1PKFNldC1Db29raWUpIHRvIHlvdXIgcGF0dGVybikuIChwZXJvKQogICAgICA8L2FkZD4KICAgICAgPGFkZD4KICAgICAgICBTdXBwb3J0IGxvZ2dpbmcgb2YgY3VycmVudCB0aHJlYWQgbmFtZSBhdCBBY2Nlc3NMb2dWYWx2ZSAoZXguIGFkZCAlSSB0byB5b3VyIHBhdHRlcm4pLgogICAgICAgIFVzZWZ1bGwgdG8gY29tcGFyZSBhY2Nlc3MgbG9nZ2luZyBlbnRyeSBsYXRlciB3aXRoIGEgc3RhY2t0cmFjZXMuIChwZXJvKQogICAgICA8L2FkZD4gIAogICAgICA8Zml4PgogICAgICAgIG8uYS5qdWxpLkNsYXNzTG9hZGVyTG9nTWFuYWdlciBoYW5kbGUgbW9yZSB0aGVuIG9uZSBzeXN0ZW0gcHJvcGVydHkgcmVwbGFjZW1lbnQgYXQgZmlsZSBsb2dnaW5nLnByb3BlcnRpZXMuIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQzMjM2PC9idWc+OiBSZXNldCB1c2luZ1dyaXRlciBhbmQgYXNzb2NpYXRlZCBmbGFncyB3aGVuIHJlc3BvbnNlCiAgICAgICAgaXMgcmVzZXQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MzI0MTwvYnVnPjogU2VydmxldENvbnRleHQuZ2V0UmVzb3VyY2VBc1N0cmVhbSgpIG5vdCBzcGVjCiAgICAgICAgY29tcGxpYW50LiBQYXRjaCBwcm92aWRlZCBieSBKb2huIEtldy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQzNjc1PC9idWc+OiBGaXggYSBwb3NzaWJsZSBsb2dnaW5nIHJlbGF0ZWQgY2xhc3MgbG9hZGVyIGxlYWsuCiAgICAgICAgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQzNjg3PC9idWc+OiBSZW1vdmUgY29uZGl0aW9uYWwgaGVhZGVycyBvbiBGb3JtIEF1dGggcmVwbGF5LCBzaW5jZSB0aGUgVUEgKGVzcC4gRmlyZUZveCkgaXNuJ3QgZXhwZWN0aW5nIGl0LiAoYmlsbGJhcmtlcikKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IGJ1ZyBpbiBDR0kgU2VydmxldCB0aGF0IGNhdXNlZCBpdCB0byBmYWlsIHdoZW4gYSBDR0kgcmVzb3VyY2Ugd2FzCiAgICAgICAgaW5jbHVkZWQgaW4gYW5vdGhlciByZXNvdXJjZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBDb29raWUgaGFuZGxpbmcvcGFyc2luZyBjaGFuZ2VzIQogICAgICAgIFRoZSBmb2xsb3dpbmcgYmVoYXZpb3IgaGFzIGJlZW4gY2hhbmdlZCB3aXRoIHJlZ2FyZHMgdG8gVG9tY2F0J3MgY29va2llCiAgICAgICAgaGFuZGxpbmc6PGJyLz4KICAgICAgICBhKSBDb29raWVzIGNvbnRhaW5pbmcgY29udHJvbCBjaGFyYWN0ZXJzLCBleGNlcHQgMHgwOShIVCksIGFyZSByZWplY3RlZAogICAgICAgIHVzaW5nIGFuIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbi48YnIvPgogICAgICAgIGIpIElmIGNvb2tpZXMgYXJlIG5vdCBxdW90ZWQsIHRoZXkgd2lsbCBiZSBxdW90ZWQgaWYgdGhleSBjb250YWluCiAgICAgICAgPGNvZGU+dHNwZWNpYWxzKHZlcjApPC9jb2RlPiBvciA8Y29kZT50c3BlY2lhbHMyKHZlcjEpPC9jb2RlPgogICAgICAgIGNoYXJhY3RlcnMuPGJyLz4KICAgICAgICBjKSBFc2NhcGUgY2hhcmFjdGVyICdcXCcgaXMgYWxsb3dlZCBhbmQgcmVzcGVjdGVkIGFzIGEgZXNjYXBlIGNoYXJhY3RlciwKICAgICAgICBhbmQgd2lsbCBiZSB1bmVzY2FwZWQgZHVyaW5nIHBhcnNpbmcuCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDM4Mzk8L2J1Zz46IFVSTCBiYXNlZCBzZXNzaW9uIHRyYWNraW5nIGZhaWxzIHdoZW4gc2Vzc2lvbiBjb29raWUKICAgICAgICBmcm9tIHBhcmVudCBjb250ZXh0IGlzIHByZXNlbnQuIEJhc2VkIG9uIGEgcGF0Y2ggYnkgWXVhbiBRaW5neXVuLgogICAgICAgIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40Mzg4NzwvYnVnPjogSW5jbHVkZSBleGNlcHRpb24gaW4gdGhlIGxvZyBtZXNzYWdlLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDM5MTQ8L2J1Zz46IExvY2F0aW9uIGhlYWRlcnMgbXVzdCBiZSBlbmNvZGVkLiBQYXRjaCBwcm92aWRlZCBieQogICAgICAgIEl2YW4gVG9kb3Jvc2tpLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDM5NTc8L2J1Zz46IFNlcnZpY2UuYmF0IGRpZG4ndCBjb25maWd1cmUgbG9nZ2luZyBjb3JyZWN0bHkuCiAgICAgICAgUGF0Y2ggcHJvdmlkZWQgYnkgUmljaGFyZCBGZWFybi4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ0MDQxPC9idWc+OiBGaXggZHVwbGljYXRlIGNsYXNzIGRlZmluaXRpb24gZXJyb3IgdW5kZXIgbG9hZC4KICAgICAgICAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDQwODQ8L2J1Zz46IEpBU1NSZWFsbSBpcyBicm9rZW4gZm9yIGFwcGxpY2F0aW9uIHByb3ZpZGVkCiAgICAgICAgUHJpbmNpcGFscy4gUGF0Y2ggcHJvdmlkZWQgYnkgTm9haCBMZXZpdHQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iSmFzcGVyIiA+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDM3MDI8L2J1Zz46IFJlZHVjZSBsZW5ndGggb2YgdW5uZWNlc3NhcmlseSBsb25nIGNsYXNzIG5hbWVzIGZvcgogICAgICAgIHRoZSBpbm5lciBoZWxwZXIgY2xhc3Mgd2hlbiB1c2luZyBzaW1wbGUgdGFncy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQzNzU3PC9idWc+OiBSYXRoZXIgdGhhbiB1c2Ugc3RyaW5nIG1hdGNoaW5nIHRvIHdvcmsgb3V0IHRoZSBsaW5lCiAgICAgICAgaW4gdGhlIEpTUCB3aXRoIHRoZSBlcnJvciwgdXNlIHRoZSBTTUFQIGluZm8gYW5kIHRoZSBrbm93bGVkZ2UgdGhhdCBmb3IKICAgICAgICBhIHNjcmlwdGxldCB0aGVyZSBpcyBhIG9uZSB0byBvbmUgbGluZSBtYXBwaW5nLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNsdXN0ZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBGaXggRmFybVdhckRlcGxveWVyIGNhbiBiZSBvbmx5IGNvbmZpZ3VyZWQgYXQgaG9zdCBzdWJlbGVtZW50IChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgCUZpeCB3cm9uZyAmYW1wOyZhbXA7IGF0IFJlcGxpY2F0aW9uVmFsdmUgKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIERlbHRhTWFuYWdlciBzZXNzaW9uQ291bnRlciBtdXN0IGJlIGFsc28gaW5jcmVtZW50IGF0IHJlbGljYXRlZCBzZXNzaW9ucy4gKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIE1hZGUgYXR0cmlidXRlIGNyZWF0ZVRpbWUgYWNjZXNzaWJsZSBmb3IgYWxsIERhdGFTZW5kZXJzLiAocGVybykKICAgICAgPC9hZGQ+ICAKICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJXZWJhcHBzIiA+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIEZpeCBDVkUtMjAwNy01NDYxLCBhbiBpbXBvcnRhbnQgaW5mb3JtYXRpb24gZGlzY2xvc3VyZSB2dWxuZXJhYmlsaXR5IGluCiAgICAgICAgdGhlIFdlYkRBViBTZXJ2bGV0LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDM2MTE8L2J1Zz46IFByb3ZpZGUgYW4gZXJyb3IgbWVzc2FnZSB3aGVuIHRyeWluZyB0byB1cGxvYWQgYSBXQVIKICAgICAgICBmb3IgYSBjb250ZXh0IHRoYXQgaGFzIGJlZW4gZGVmaW5lZCBpbiBzZXJ2ZXIueG1sLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDQwOTQ8L2J1Zz46IEFkZCBub3RlIHRvIGRvY3MgYWJvdXQgc2lkZS1lZmZlY3RzIG9mIHNldHRpbmcKICAgICAgICBwcml2aWxlZ2VkIG9uIGEgY29udGV4dC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDb3lvdGUiID4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MzQ3OTwvYnVnPjogRml4IG1lbW9yeSBsZWFrIGNsZWFuaW5nIHVwIHNlbmRmaWxlIGNvbm5lY3Rpb25zLgogICAgICAgIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MzYyMjwvYnVnPjogRG9uJ3QgYWx3YXlzIG92ZXJ3cml0ZSBtaW4gY29tcHJlc3Npb24gc2l6ZSB3aXRoCiAgICAgICAgZGVmYXVsdC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQzOTk1PC9idWc+OiBObyB0aW1lb3V0IGZvciBzZW5kZmlsZSAoVE9ETyBpdGVtIGhhZCBiZWVuCiAgICAgICAgZm9yZ290dGVuKS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KPC9zZWN0aW9uPgogICAgIAo8c2VjdGlvbiBuYW1lPSJUb21jYXQgNS41LjI1IChmaGFuaWspIiBydGV4dD0icmVsZWFzZWQgMjAwNy0wOS0wOCI+CiAgPHN1YnNlY3Rpb24gbmFtZT0iR2VuZXJhbCI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8ZG9jcz4KICAgICAgICBDb3JyZWN0IGoudS5sIGxvZyBsZXZlbHMgaW4gSlVMSSBkb2NzLiAocmp1bmcpCiAgICAgIDwvZG9jcz4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVcGRhdGUgdG8gQ29tbW9ucyBNb2RlbGVyIDIuMC4xLCBmaXggZW1iZWQgcmVsZWFzZSBzdGFydGluZyBpc3N1ZS4gKHBlcm8pCiAgICAgIDwvdXBkYXRlPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNhdGFsaW5hIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgSGFuZGxlIHNwZWNpYWwgY2FzZSBvZiBST09UIHdoZW4gcmUtbG9hZGluZyB3ZWJhcHAgYWZ0ZXIgUk9PVC54bWwgaGFzCiAgICAgICAgYmVlbiBtb2RpZmllZC4gSW4gc29tZSBjaXJjdW1zdGFuY2VzIHRoZSByZWxvYWRlZCBST09UIHdlYmFwcCBoYWQgbm8KICAgICAgICBhc3NvY2lhdGVkIHJlc291cmNlcy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggV2ViREFWIFNlcnZsZXQgc28gaXQgd29ya3MgY29ycmVjdGx5IHdpdGggTVMgY2xpZW50cy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBSZW1vdmUgaW52YWxpZCBhdHRyaWJ1dGUgImVuY29kaW5nIiBvZiBNQmVhbiBNZW1vcnlVc2VyRGF0YWJhc2UsCiAgICAgICAgd2hpY2ggbGVhZCB0byBlcnJvcnMgaW4gdGhlIG1hbmFnZXIgd2ViYXBwIEpNWFByb3h5IG91dHB1dC4gKHJqdW5nKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggWFNTIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHkgKENWRS0yMDA3LTI0NTApIGluIHRoZSBNYW5hZ2VyIGFuZCBIb3N0CiAgICAgICAgTWFuYWdlci4gUmVwb3J0ZWQgYnkgRGFpa2kgRnVrdW1vcmkuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgPGJ1Zz4zOTA1NTwvYnVnPjogQWRkIEpNWEFkYXB0b3JMaWZlY3ljbGVMaXN0ZW5lciB0byBzdGFydCBKTVggQ29ubmVjdG9yCiAgICAgICAgd2l0aCBmaXhlZCBuYW1pbmcgYW5kIGRhdGEgcG9ydHMuIFRoaXMgZmVhdHVyZSBpcyBuZWVkZWQgdG8gaGF2ZSBzdGFibGUKICAgICAgICByZW1vdGUgYWNjZXNzIHdoZW4gYSBmaXJld2FsbCBpcyBhY3RpdmUuIFRoZSBhZGFwdG9yIHJlYWRzIGFsbCBzdGFuZGFyZAogICAgICAgIEpNWCBzeXN0ZW0gcHJvcGVydGllcyAoLURjb20uc3VuLm1hbmFnZW1lbnQuam14cmVtb3RlLlhYWCkuIEN1cnJlbnRseQogICAgICAgIG9ubHkgaW5jbHVkZWQgYXQgc3JjIHJlbGVhc2UgKHVzZXMgSkRLIDEuNSBjbGFzc2VzKS4KICAgICAgICBGZWF0dXJlIHByb3ZpZGVkIGJ5IEdlb3JnZSBMaW5kaG9sbSBhbmQgSnVlcmdlbiBIZXJybWFuIChwZXJvKQogICAgICA8L2FkZD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQxNzIyPC9idWc+OiBNYWtlIHRoZSByb2xlLWxpbmsgZWxlbWVudCBvcHRpb25hbCAoYXMgcmVxdWlyZWQgYnkKICAgICAgICB0aGUgc3BlYykgd2hlbiB1c2luZyBhIHNlY3VyaXR5LXJvbGUtcmVmIGVsZW1lbnQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MjU0NzwvYnVnPjogRml4IE5QRSB3aGVuIGEgUmVzb3VyY2VMaW5rIGluIGNvbnRleHQueG1sIHRyaWVzIHRvCiAgICAgICAgb3ZlcnJpZGUgYW4gZW52LWVudHJ5IGluIHdlYi54bWwuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40Mjk0NDwvYnVnPjogQ29ycmVjdGx5IGhhbmRsZSBzZXJ2bGV0IG1hcHBpbmdzIHRoYXQgdXNlIGEgJysnCiAgICAgICAgY2hhcmFjdGVyIGFzIHBhcnQgb2YgdGhlIHVybCBwYXR0ZXJuLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEltcHJvdmUgbGFyZ2UtZmlsZSBzdXBwb3J0IChtb3JlIHRoZW4gNCBHYikgYXQgYWxsIEFjY2Vzc0xvZ1ZhbHZlcy4gKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIDxidWc+NDMxMjk8L2J1Zz46IFN1cHBvcnQgbG9nZ2luZyBvZiByZXNwb25zZSBoZWFkZXJzIGF0IEFjY2Vzc0xvZ1ZhbHZlIChleC4gYWRkICV7U2V0LUNvb2tpZX1vIHRvIHlvdXIgcGF0dGVybikuIChwZXJvKQogICAgICA8L3VwZGF0ZT4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJKYXNwZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjI1MDA8L2J1Zz46IEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiB3aXRoaW4gYSBKU1AgcGFnZXMgcmVzdWx0ZWQgaW4gYQogICAgICAgIDQwNCByYXRoZXIgdGhhbiBhIDUwMC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3MzI2PC9idWc+OiBObyBlcnJvciByZXBvcnRlZCB3aGVuIGFuIGluY2x1ZGVkIHBhZ2UgZG9lcyBub3QKICAgICAgICBleGlzdC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQyNjQzPC9idWc+OiBQcmV2ZW50IGNyZWF0aW9uIG9mIGR1cGxpY2F0ZSBKU1AgZnVuY3Rpb24gbWFwcGVyCiAgICAgICAgdmFyaWFibGVzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDIzMTQ8L2J1Zz46IFByb3ZpZGUgY29tcGlsYXRpb24gZXJyb3IgZGV0YWlscyBpbiBjYXNlcyB3aGVyZSB0aGUKICAgICAgICBlcnJvciBjYW4ndCBiZSBtYXBwZWQgYmFjayB0byBhIHNvdXJjZSBmaWxlLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IldlYmFwcHMiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBEb24ndCB3cml0ZSBlcnJvciBvbiBTeXN0ZW0ub3V0LCB1c2UgbG9nKCkgaW5zdGVhZC4gKHJqdW5nKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggWFNTIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcyAoQ1ZFLTIwMDctMjQ0OSkgaW4gdGhlIGV4YW1wbGVzLgogICAgICAgIFJlcG9ydGVkIGJ5IFRvc2hpaGFydSBTdWdpeWFtYS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM5MjEyPC9idWc+OiBGaXggcG9zc2libGUgTlBFIGluIER1bW15Q2FydCBleGFtcGxlIGFuZCByZW1vdmUKICAgICAgICByZWR1bmRhbnQgY29kZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQyOTc5PC9idWc+OiBVcGRhdGUgc2FtcGxlLndhciB0byBpbmNsdWRlIHJlY2VudCBzZWN1cml0eSBmaXhlcwogICAgICAgIGluIHRoZSBzb3VyY2UgY29kZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDb3lvdGUiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBTZXBhcmF0ZSBzZXF1ZW5jZSBpbmNyZW1lbnQgZnJvbSBnZXR0ZXIgaW4gVGhyZWFkUG9vbCB0byBhdm9pZAogICAgICAgIG1pc2xlYWRpbmcgaW5jcmVtZW50cyBkdXJpbmcgbW9uaXRvcmluZyB2aWEgSk1YLiAocmp1bmcpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPiAKICA8c3Vic2VjdGlvbiBuYW1lPSJDbHVzdGVyIj4KICAgPGNoYW5nZWxvZz4KICAgICA8Zml4PgogICAgICAgIDxidWc+NDAwNDI8L2J1Zz46IFJlY292ZXJ5IG1lbWJlcnNoaXAgaGVhcnRiZWF0IGFmdGVyIGludGVyZmFjZSBkb3duLiAocGVybykKICAgICA8L2ZpeD4KICAgICA8Zml4PgogICAgICAgIDxidWc+NDI2OTE8L2J1Zz46IERvbid0IHNldCBhY2Nlc3MgdGltZSBhZnRlciBzZXNzaW9uIHN5bmMuIEZpeCB0aGF0IHNlc3Npb25zCiAgICAgICAgYWZ0ZXIgbm9kZSByZXN0YXJ0IGJldHRlciBleHBpcmUuIFJlcXVlc3RlZCBieSBDYXNleSBMdWNhcyAocGVybykKICAgICA8L2ZpeD4gICAKICAgICA8Zml4PgogICAgICAgIEJhY2twb3J0IFRvbWNhdCA2IGNsdXN0ZXIgc29ja2V0IHBhcmFtZXRlci4gKHBlcm8pCiAgICAgPC9maXg+ICAgCiAgICAgPGZpeD4KICAgICAgICBGaXggdHlwbyBpbiBuZXcgTUJlYW4gYXR0cmlidXRlIHdoaWNoIGxlYWQgdG8gZXJyb3JzIGluIHRoZSBtYW5hZ2VyIHdlYmFwcCBKTVhQcm94eSBvdXRwdXQuIChyanVuZykKICAgICA8L2ZpeD4gICAgIAogICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MjY4OTwvYnVnPjogTm8gd2F5IHRvIHRpbWVvdXQgbmV3IGNvbm5lY3QgYXR0ZW1wdHMgZm9yIHJlcGxpY2F0aW9uIHNvY2tldHMuIAogICAgICAgIFBhdGNoIGJ5IENhc2V5IEx1Y2FzIChwZXJvKQogICAgIDwvZml4PiAgIAogICAgIDxmaXg+ICAKICAgICAgICAgRml4IHRpbWVvdXQgc2V0dGluZyBvbiBhIHJlcGxpY2F0ZWQgRGVsdGFTZXNzaW9uLgogICAgICAgICBQYXRjaCBieSBBbGV4YW5kZXIgTWFhcyAoZmhhbmlrLHBlcm8pCiAgICAgPC9maXg+CiAgICAgPGZpeD4gIAogICAgICAgICA8YnVnPjQyNzIwPC9idWc+OiBEb24ndCBzZW5kIGEgbWVzc2FnZSBpZiBubyBjbHVzdGVyIG1lbWJlciBleGlzdHMuCiAgICAgICAgIFBhdGNoIGJ5IEtlaWljaGkgRnVqaW5vIChwZXJvKQogICAgIDwvZml4PiAgCiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+Cjwvc2VjdGlvbj4KPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS4yNCAoZmhhbmlrKSIgcnRleHQ9Im5vdCByZWxlYXNlZCI+CiAgPHN1YnNlY3Rpb24gbmFtZT0iR2VuZXJhbCI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8dXBkYXRlPgogICAgICAgIFVwZGF0ZSB0byBDb21tb25zIERCQ1Agc3JjIDEuMi4yIChwZXJvKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVcGRhdGUgdG8gQ29tbW9ucyBQb29sIHNyYyAxLjMgKHBlcm8pCiAgICAgIDwvdXBkYXRlPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNhdGFsaW5hIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMzc3NDwvYnVnPiBSZXRyeSBKTkRJIGF1dGhlbnRpY3Rpb24gb24gU2VydmljZVVuYXZhaWxhYmxlRXhjZXB0aW9uCiAgICAgICAgYXMgYXQgbGVhc3Qgb25lIHByb3ZpZGVyIHRocm93cyB0aGlzIGFmdGVyIGFuIGlkbGUgY29ubmVjdGlvbiBoYXMgYmVlbgogICAgICAgIGNsb3NlZC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwNTkzPC9idWc+IENsZWFudXAgdGhhdCBMaXN0ZW5lciBzdG9wIGFmdGVyIE1hbmFnZXIgc3RvcCAKICAgICAgICBhdCBTdGFuZGFyZENvbnRleHQuc3RvcCgpLiBQYXRjaCBieSBTdXp1a2kgWXVpY2hpcm8gKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDE3NDc8L2J1Zz4gQ29ycmVjdCBleGFtcGxlIGFudCBzY3JpcHQgZm9yIGRlcGxveSB0YXNrLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDE3NTI8L2J1Zz4gQ29ycmVjdCBlcnJvciBtZXNzYWdlIG9uIGV4Y2VwdGlvbiBpbiBNZW1vcnlSZWFsbS4KICAgICAgICAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzk4NzU8L2J1Zz4gTWlub3IgY2xlYW51cCBpbiBSZWFsbUJhc2UuaW5pdCwgYXMgcmVxdWVzdGVkIGJ5IFRha2F5b3NoaSBLaW11cmEuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MTQ3NzwvYnVnPiBBZGQgY29tbW9ucy1lbC5qYXIgdG8gYmluL2NhdGFsaW5hLXRhc2tzLnhtbCwgcmVxdWlyZWQgZm9yIGphc3BlcjIgdGFza3MKICAgICAgICAgIHVzaW5nIEVMLiBQYXRjaCBieSBEYW5pZWwgU2FudG9zLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDAxNTA8L2J1Zz4gRW5zdXJlIHVzZXIgYW5kIHJvbGUgY2xhc3NuYW1lcyBhcmUgdmFsaWRhdGVkIG9uIHN0YXJ0dXAuICBQYXRjaCBieQogICAgICAgICAgVG9tLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDIwMzk8L2J1Zz4gTG9nIGEgc3RhY2sgdHJhY2UgaWYgYSBzZXJ2bGV0IHRocm93cyBhbgogICAgICAgICBVbmF2YWlsYWJsZUV4Y2VwdGlvbi4gUGF0Y2ggcHJvdmlkZWQgYnkgS2F3YXNpbWEgS2F6dWguIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MTk5MDwvYnVnPiBBZGQgc29tZSBhZGRpdGlvbmFsIG1pbWUtdHlwZSBtYXBwaW5ncy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQxNjU1PC9idWc+IEZpeCBtZXNzYWdlIHRyYW5zbGF0aW9ucy4gSmFwYW5lc2UgdHJhbnNsYXRpb25zCiAgICAgICAgcHJvdmlkZWQgYnkgU3V6dWtpIFl1aWNoaXJvLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDE5Mzk8L2J1Zz4gQWRkIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIGRpc2FibGUgbnVsbGluZyBvZiBzdGF0aWMKICAgICAgICBhbmQgZmluYWwgZmllbGRzIG9mIGxvYWRlZCBjbGFzc2VzIHdoZW4gc3RvcHBpbmcgYSB3ZWIgYXBwbGljYXRpb24KICAgICAgICBjbGFzc2xvYWRlci4gU2V0dGluZyB0aGUgc3lzdGVtIHByb3BlcnR5CiAgICAgICAgb3JnLmFwYWNoZS5jYXRhbGluYS5sb2FkZXIuV2ViYXBwQ2xhc3NMb2FkZXIuRU5BQkxFX0NMRUFSX1JFRkVSRU5DRVMgdG8KICAgICAgICBmYWxzZSB3aWxsIHN0b3AgdGhlc2UgZmllbGRzIGJlaW5nIHNldCB0byBudWxsIG9uIGNvbnRleHQgc3RvcC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggYSBsb2dnaW5nIHJlbGF0ZWQgbWVtb3J5IGxlYWsgaW4gTWFuYWdlckJhc2UgYW5kCiAgICAgICAgQXBwbGljYXRpb25EaXNwYXRjaGVyLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgICA8YnVnPjQyMzU0PC9idWc+OiBFbnN1cmUgSkFScyBpbiB3ZWJhcHBzIGFyZSBzY2FubmVkIGZvciBUTERzIHdoZW4gdGhlCiAgICAgICAgIFRvbWNhdCBpbnN0YWxsYXRpb24gcGF0aCBjb250YWlucyBzcGFjZXMuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgIDxidWc+NDIzNjE8L2J1Zz46IEhhbmRsZSBtdWx0aS1wYXJ0IGZvcm1zIHdoZW4gc2F2aW5nIHJlcXVlc3RzIGR1cmluZwogICAgICAgICBGT1JNIGF1dGhlbnRpY2F0aW9uIHByb2Nlc3MuIFBhdGNoIHByb3ZpZGVkIGJ5IFBldGVyIFJ1bmdlLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgICA8YnVnPjQyNDAxPC9idWc+OiBVcGRhdGUgUlVOTklORy50eHQgd2l0aCBiZXR0ZXIgSlJFL0pESyBpbmZvcm1hdGlvbi4KICAgICAgICAgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICAgPGJ1Zz40MjQ5NzwvYnVnPjogRW5zdXJlIEVUYWcgaGVhZGVyIGlzIHByZXNlbnQgaW4gYSAzMDQgcmVzcG9uc2UuCiAgICAgICAgIFBhdGNoIHByb3ZpZGVkIGJ5IExlbiBQb3BwLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgICBBbGxvdyBmb3IgYSBmb3J3YXJkL2luY2x1ZGUgdG8gY2FsbCBnZXRBdHRyaWJ1dGVOYW1lcyBvbiB0aGUgUmVxdWVzdCBpbiBhIHNhbmRib3guIChiaWxsYmFya2VyKQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICBBbmQgZ2V0U2Vzc2lvbigpIG9wZXJhdGlvbiB0byBTdGFuZGFyZE1hbmFnZXIgYW5kIERlbHRhTWFuYWdlciBKTVggSW50ZXJmYWNlIChwZXJvKQogICAgICA8L2FkZD4gICAgIAogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IldlYmFwcHMiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVcGRhdGUgaG9zdCBjb25maWd1cmF0aW9uIGRvY3VtZW50IGZvciBuZXcgYmVoYXZpb3VyIGZvciBkaXJlY3RvcmllcwogICAgICAgIGluIGFwcEJhc2UuIChtYXJrdCkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgPGJ1Zz4zOTg4MzwvYnVnPiAgQWRkIG5vdGUgdG8gY29udGV4dCBjb25maWd1cmF0aW9uIGRvY3VtZW50IGFib3V0IHVzaW5nCiAgICAgICAgICBhbnRpUmVzb3VyY2VMb2NraW5nIG9uIGEgd2ViYXBwIG91dHNpZGUgdGhlIEhvc3QncyBhcHBCYXNlIGRpcmVjdG9yeS4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICA8YnVnPjM5NTQwPC9idWc+IEFkZCBsaW5rIHRvIGh0dHBkIDIuMiBtb2RfcHJveHlfYWpwIGRvY3MgaW4gQUpQIGNvbm5lY3RvciBkb2MuICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MTI4OTwvYnVnPjogQ3JlYXRlIGNvbmZpZ0Jhc2UsIHNpbmNlIGl0IGlzIG5vIGxvbmdlciBjcmVhdGVkIGVsc2V3aGVyZS4KICAgICAgICBTdWJtaXR0ZWQgYnkgU2hpdmEgS3VtYXIgSCBSLiAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MjEwMzwvYnVnPjogVXNlIGNvcnJlY3QgbmFtZXMgZm9yIHRydXN0c3RvcmVGaWxlLCB0cnVzdHN0b3JlVHlwZSBhbmQgCiAgICAgICAgdHJ1c3RzdG9yZVBhc3Mgd2hlbiBzYXZpbmcgc2VydmVyLnhtbCBpbiBBZG1pbiB3ZWJhcHAuIFBhdGNoIHByb3ZpZGVkIGJ5CiAgICAgICAgTWF0aGV1cyBCYXN0b3MuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MjAyNTwvYnVnPjogVXBkYXRlIHZhbHZlIGRvY3VtZW50YXRpb24gdG8gcmVmZXIgdG8gY29ycmVjdCByZWd1bGFyCiAgICAgICAgZXhwcmVzc2lvbiBpbXBsZW1lbnRhdGlvbi4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQxOTU2PC9idWc+OiBEb24ndCBza2lwIHRoZSBjb25uZWN0b3IgYWRkcmVzcyBhdHRyaWJ1dGUgd2hlbgogICAgICAgIHBlcnNpc3Rpbmcgc2VydmVyLnhtbCBjaGFuZ2VzIHZpYSB0aGUgYWRtaW4gd2ViYXBwLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNveW90ZSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDA5NjA8L2J1Zz4gSW5jb25zaXN0ZW50IGV4Y2VwdGlvbiB0eXBlIHRocm93biBvbiBzb2NrZXQgdGltZW91dCBpbgogICAgICAgICAgSW50ZXJuYWxBcHJJbnB1dEJ1ZmZlci4gIFBhdGNoIGJ5IENocmlzdG9waGUgUGllcnJldC4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICA8YnVnPjQxNjc1PC9idWc+IEFkZCBhIGNvdXBsZSBvZiBERUJVRy1sZXZlbCBsb2dnaW5nIHN0YXRlbWVudHMgdG8gSHR0cDExUHJvY2Vzc29ycwogICAgICAgICAgd2hlbiBzZW5kaW5nIGVycm9yIHJlc3BvbnNlcy4gIFBhdGNoIGJ5IFJhbGYgSGF1c2VyLiAoeW9hdnMpCiAgICAgIDwvYWRkPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDIxMTk8L2J1Zz4gRml4IHJldHVybiB2YWx1ZSBmb3IgcmVxdWVzdC5nZXRDaGFyYWN0ZXJFbmNvZGluZygpIHdoZW4KICAgICAgICBDb250ZW50LVR5cGUgaGVhZGVycyBjb250YWluIHBhcmFtZXRlcnMgb3RoZXIgdGhhbiBjaGFyc2V0LiBQYXRjaCBieQogICAgICAgIExlaWdoIEwgS2xvdHogSnIuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNjE1NTwvYnVnPiBBbHdheXMgcmVzZXQgdGhlIE1CIHdoZW4gZG9pbmcgZ2V0Qnl0ZXMgaW4gdGhlIEpLIENvbm5lY3RvciAoYmlsbGJhcmtlcikKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgSW1wcm92ZSBsYXJnZS1maWxlIHN1cHBvcnQgaW4gdGhlIEFKUCBDb25uZWN0b3JzIChiaWxsYmFya2VyKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDbHVzdGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgUmVjZWl2ZXIgY2FuIGFsc28gdXNlIHRjcExpc3RlbkFkZHJlc3Mgd2l0aCBhIGhvc3RuYW1lLiAocmp1bmcsIHBlcm8pCiAgICAgIDwvZml4PiAgICAgCiAgICAgIDxmaXg+CiAgICAgICAgRGVsdGFSZXF1ZXN0IHN5bmNocm9uaXplZCBnZXRTaXplKCkgYW5kIHNob3cgbG9nIG1lc3NhZ2UgYXMgCiAgICAgICAgcmVhZEV4dGVybmFsKCkgZmFpbHVyZS4gKHJqdW5nLCBwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICBBZGQgRGVsdGFNYW5hZ2VyIGV4cGlyZVRvbGVyYW5jZSBhdHRyaWJ1dGUgdG8gcXVpY2tlciBhdXRvIGV4cGlyZSBsb25nIGJhY2t1cCBzZXNzaW9ucy4gKHJqdW5nLCBwZXJvKQogICAgICA8L2FkZD4KICAgICAgPGFkZD4KICAgICAgICBBZGQgRGVsdGFNYW5hZ2VyIHVwZGF0ZUFjdGl2ZUludGVydmFsbCBhdHRyaWJ1dGUgdG8gc2VuZCBldmVyeSA2MCBzZWMgYSBzZXNzaW9uIGFjY2VzcyBtZXNzYWdlLiAocmp1bmcsIHBlcm8pCiAgICAgIDwvYWRkPgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzk4NjY8L2J1Zz4gRHVwbGljYXRlIG5hbWVzIGFwcGVuZGVkIHRvIGNsdXN0ZXIgbWFuYWdlciBuYW1lLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPiAgIAogIDxzdWJzZWN0aW9uIG5hbWU9Ikphc3BlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzk0MjU8L2J1Zz4gQWRkIGFkZGl0aW9uYWwgc3lzdGVtIHByb3BlcnR5IHBlcm1pc3Npb24gdG8KICAgICAgICBjYXRhbGluYS5wb2xpY3kgZm9yIHByZS1jb21waWxlZCBKU1BzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDEyMjc8L2J1Zz4gQWRkIGEgYml0IG9mIERFQlVHLWxldmVsIGxvZ2dpbmcgdG8gSnNwQyBzbyB1c2VycyBrbm93CiAgICAgICAgICB3aGljaCBmaWxlIGlzIGJlaW5nIGNvbXBpbGVkLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDE4Njk8L2J1Zz4gVGFnRGF0YS5nZXRBdHRyaWJ1dGUoKSBzaG91bGQgcmV0dXJuCiAgICAgICAgVGFnRGF0YS5SRVFVRVNUX1RJTUVfVkFMVUUgd2hlbiB0aGUgYXR0cmlidXRlIHZhbHVlIGlzIGFuIEVMIGV4cHJlc3Npb24uCiAgICAgICAgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQyMDcxPC9idWc+IEZpeCBJbGxlZ2FsU3RhdGVFeGNlcHRpb24gb24gbXVsdGlwbGUgcmVxdWVzdHMgdG8KICAgICAgICBhbiB1bmF2YWlsYWJsZSBKU1AuIFBhdGNoIHByb3ZpZGVkIGJ5IEthd2FzaW1hIEthenVoLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEFmdGVyIGEgSlNQIHRocm93cyBhbiBVbmF2YWlsYWJsZUV4Y2VwdGlvbiBhbGxvdyBpdCB0byBiZSBhY2Nlc3NlZCBvbmNlCiAgICAgICAgdGhlIHVuYXZhaWxhYmxlIHBlcmlvZCBoYXMgZXhwaXJlZC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQyMDcyPC9idWc+IERvbid0IGNhbGwgZGVzdHJveSgpIGlmIHRoZSBhc3NvY2lhdGVkIGluaXQoKSBmYWlscy4KICAgICAgICBQYXRjaCBwcm92aWRlZCBieSBLYXdhc2ltYSBLYXp1aC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggYSBsb2dnaW5nIHJlbGF0ZWQgbWVtb3J5IGxlYWsgaW4gUGFnZUNvbnRleHRJbXBsLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDI0Mzg8L2J1Zz4gRHVwbGljYXRlIHRlbXBvcmFyeSB2YXJpYWJsZXMgd2VyZSBjcmVhdGVkIHdoZW4KICAgICAgICBqc3A6YXR0cmlidXRlIHdhcyB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggY3VzdG9tIHRhZ3MuIFBhdGNoIHByb3ZpZGVkCiAgICAgICAgYnkgQnJpYW4gTGVuei4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KPC9zZWN0aW9uPgoKPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS4yMyAoZmhhbmlrKSIgcnRleHQ9InJlbGVhc2VkIDIwMDctMDMtMDkiPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNhdGFsaW5hIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MTYwODwvYnVnPiBNYWtlIGxvZyBsZXZlbHMgY29uc2lzdGVudCB3aGVuIFNlcnZsZXQuc2VydmljZSgpCiAgICAgICAgdGhyb3dzIGFuIGV4Y2VwdGlvbi4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQxNjY2PC9idWc+IENvcnJlY3QgaGFuZGxpbmcgb2YgYm91bmRhcnkgY29uZGl0aW9ucyBmb3IKICAgICAgICBJZi1Vbm1vZGlmaWVkLVNpbmNlIGFuZCBJZi1Nb2RpZmllZC1TaW5jZSBoZWFkZXJzLiBQYXRjaCBwcm92aWRlZCBieQogICAgICAgIFN1enVraSBZdWljaGlyby4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQxNjc0PC9idWc+IEZpeCBlcnJvciBtZXNzYWdlcyB3aGVuIHBhcnNpbmcgY29udGV4dC54bWwgdGhhdAogICAgICAgIGluY29ycmVjdGx5IHJlZmVycmVkIHRvIHdlYi54bWwuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MTczOTwvYnVnPiBDb3JyZWN0IGhhbmRsaW5nIG9mIHNlcnZsZXRzIHdpdGggYSBsb2FkLW9uLXN0YXJ0dXAKICAgICAgICB2YWx1ZSBvZiB6ZXJvLiBUaGVzZSBhcmUgbm93IHRoZSBmaXJzdCBzZXJ2bGV0cyB0byBiZSBzdGFydGVkLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNveW90ZSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIFJlcXVlc3RzIHdpdGggbXVsdGlwbGUgY29udGVudC1sZW5ndGggaGVhZGVycyBhcmUgbm93IHJlamVjdGVkLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgo8L3NlY3Rpb24+Cgo8c2VjdGlvbiBuYW1lPSJUb21jYXQgNS41LjIyIChmaGFuaWspIiBydGV4dD0ibm90IHJlbGVhc2VkIj4KICA8c3Vic2VjdGlvbiBuYW1lPSJHZW5lcmFsIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IHJlZ3Jlc3Npb24gaW4gYnVpbGQgdGhhdCBwcmV2ZW50ZWQgY29ubmVjdG9ycyBmcm9tIGJ1aWxkaW5nLgogICAgICAgIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+Cjwvc2VjdGlvbj4KCjxzZWN0aW9uIG5hbWU9IlRvbWNhdCA1LjUuMjEgKGZoYW5paykiIHJ0ZXh0PSJub3QgcmVsZWFzZWQiPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNhdGFsaW5hIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MTQwMTwvYnVnPjogU3RhbmRhcmRTZXJ2aWNlLmdldENvbm5lY3Rvck5hbWVzKCkgcmV0dXJuIGFycmF5IG9mIAogICAgICAgIENvbm5lY3RvciBKTVggb2JqZWN0bmFtZXMuIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjI5NzI3PC9idWc+OiBJZiBlbnYtZW50cnkgdmFsdWVzIGluIHdlYi54bWwgYXJlIGNoYW5nZWQgdGhlbgogICAgICAgIGVuc3VyZSBuZXcgdmFsdWVzIGFyZSBhcHBsaWVkIHdoZW4gY29udGV4dCBpcyByZWxvYWRlZC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM0OTU2PC9idWc+OiBFbnN1cmUgcmVxdWVzdCBhbmQgcmVzcG9uc2Ugb2JqZWN0cyBwYXNzZWQgdG8gYQogICAgICAgIFJlcXVlc3REaXNwYXRjaGVyIG1lZXQgdGhlIHJlcXVpcmVtZW50cyBvZiBTUlYuOC4yIGFuZAogICAgICAgIFNSVi4xNC4yLjUuMS4gVGhpcyBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LiBUaGUgSmF2YSBvcHRpb24gCiAgICAgICAgPGNvZGU+LURvcmcuYXBhY2hlLmNhdGFsaW5hLlNUUklDVF9TRVJWTEVUX0NPTVBMSUFOQ0U9dHJ1ZTwvY29kZT4KICAgICAgICBpcyByZXF1aXJlZCB0byBlbmFibGUgdGhpcyB0ZXN0LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzYyNzQ8L2J1Zz46IFdoZW4gaW5jbHVkaW5nIHN0YXRpYyBjb250ZW50IHdpdGggdGhlCiAgICAgICAgRGVmYXVsdFNlcnZsZXQgYWxzbyB0cmVhdCBjb250ZW50IHR5cGVzIGVuZGluZyBpbiB4bWwgYXMgdGV4dC4KICAgICAgICAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzY5NzY8L2J1Zz46IERvbid0IHVzZSBDQVRBTElOQV9PUFRTIHdoZW4gc3RvcHBpbmcgVG9tY2F0LiBUaGlzCiAgICAgICAgYWxsb3dzIG9wdGlvbnMgZm9yIHN0YXJ0aW5nIGFuZCBzdG9wcGluZyB0byBiZSBzZXQgb24gSkFWQV9PUFRTIGFuZAogICAgICAgIG9wdGlvbnMgZm9yIHN0YXJ0aW5nIG9ubHkgdG8gYmUgc2V0IG9uIENBVEFMSU5BX09QVFMuIFdpdGhvdXQgdGhpcwogICAgICAgIGZpeCwgc29tZSBzdGFydHVwIG9wdGlvbnMgKGVnIHRoZSBwb3J0IGZvciByZW1vdGUgSk1YKSB3b3VsZCBjYXVzZQogICAgICAgIHN0b3AgdG8gZmFpbC4gQmFzZWQgb24gYSBmaXggc3VnZ2VzdGVkIGJ5IE1pY2hhZWwgVm9yYnVyZ2VyLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzcwNzA8L2J1Zz46IFVwZGF0ZSBtYmVhbiBuYW1lIGRvY3VtZW50YXRpb24gdG8gaW5jbHVkZSB0aGUKICAgICAgICBTdGFuZGFyZFdyYXBwZXIuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzM1NjwvYnVnPjogRW5zdXJlIHNlc3Npb25zIHRpbWUgb3V0IGNvcnJlY3RseS4gVGhpcyBoYXMgYmVlbgogICAgICAgIGZpeGVkIGJ5IHJlbW92aW5nIHRoZSBhY2Nlc3NDb3VudCBmZWF0dXJlIGJ5IGRlZmF1bHQuIFRoaXMgZmVhdHVyZQogICAgICAgIHByZXZlbnRzIHRoZSBzZXNzaW9uIGZyb20gdGltaW5nIG91dCB3aGlsc3QgcmVxdWVzdHMgdGhhdCBsYXN0CiAgICAgICAgbG9uZ2VyIHRoYW4gdGhlIHNlc3Npb24gdGltZSBvdXQgYXJlIGJlaW5nIHByb2Nlc3NlZC4gVGhpcyBmZWF0dXJlCiAgICAgICAgaXMgZW5hYmxlZCBieSBzZXR0aW5nIHRoZSBKYXZhIG9wdGlvbiAKICAgICAgICA8Y29kZT4tRG9yZy5hcGFjaGUuY2F0YWxpbmEuU1RSSUNUX1NFUlZMRVRfQ09NUExJQU5DRT10cnVlPC9jb2RlPgogICAgICAgIFRoZSBmZWF0dXJlIGlzIG5vdyBpbXBsZW1lbnRlZCB3aXRoIHN5bmNocm9uaXphdGlvbiB3aGljaCBhZGRyZXNzZXMKICAgICAgICB0aGUgdGhyZWFkIHNhZmV0eSBpc3N1ZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBvcmlnaW5hbCBidWcgcmVwb3J0LgogICAgICAgIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzQzOTwvYnVnPjogVXBkYXRlIGRvY3VtZW50YXRpb24gZm9yIEVuZ2luZSBjb21wb25lbnQgdG8gYWRkCiAgICAgICAgdGhlIHJlcXVpcmVtZW50IHRoYXQgdGhlIG5hbWUgbXVzdCBiZSB1bmlxdWUuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzQ1ODwvYnVnPjogQWRkIHN5bmNzIHRvIHRoZSBXZWJhcHBDbGFzc2xvYWRlciB0byBhZGRyZXNzCiAgICAgICAgcmFyZSBpc3N1ZXMgd2hlbiBtdWx0aXBsZSB0aHJlYWRzIGF0dGVtcHQgdG8gbG9hZCB0aGUgc2FtZSBjbGFzcwogICAgICAgIGNvbmN1cnJlbnRseS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3NTA5PC9idWc+OiBEbyBub3QgcmVtb3ZlIHdoaXRlc3BhY2UgZnJvbSB0aGUgZW5kIG9mIHZhbHVlcwogICAgICAgIGRlZmluZWQgaW4gbG9nZ2luZy5wcm9wZXJ0aWVzIGZpbGVzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzgxOTg8L2J1Zz46IEFkZCByZWZlcmVuY2UgdG8gQ29udGV4dCBkb2N1bWVudGF0aW9uIGZyb20gSG9zdAogICAgICAgIGRvY3VtZW50YXRpb24gdGhhdCBleHBsYWlucyBob3cgQ29udGV4dCBuYW1lIGlzIG9idGFpbmVkIGZyb20gdGhlCiAgICAgICAgQ29udGV4dCBmaWxlbmFtZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM5MDg4PC9idWc+OiBQcmV2ZW50IGluZmludGUgbG9vcHMgd2hlbiBhbiBleGNlcHRpb24gaXMgdGhyb3duCiAgICAgICAgdGhhdCByZXR1cm5zIGl0c2VsZiBmb3IgZ2V0Um9vdENhdXNlKCkuIEJhc2VkIG9uIGEgcGF0Y2ggYnkgV291dGVyCiAgICAgICAgWmVsbGUuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zOTQzNjwvYnVnPjogQ29ycmVjdCBNSU1FIHR5cGUgZm9yIFNWRy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM5NjI3PC9idWc+OiBKVUxJIG5vIGxvbmdlciBpZ25vcmVzIGEgIi5sZXZlbD1YWFgiIGRpcmVjdGl2ZQogICAgICAgIGluIGxvZ2dpbmcucHJvcGVydGllcy4gUGF0Y2ggcHJvdmlkZWQgYnkgUm9nZXIgS2VheXMgYW5kIFJpY2hhcmQKICAgICAgICBGZWFybi4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM5NzI0PC9idWc+OiBSZW1vdmluZyB0aGUgbGFzdCB2YWx2ZSBmcm9tIGEgcGlwZWxpbmUgZGlkIG5vdAogICAgICAgIHJldHVybiB0aGUgcGlwZWxpbmUgdG8gdGhlIG9yaWdpbmFsIHN0YXRlLiBQYXRjaCBwcm92aWRlZCBieQogICAgICAgIERhdmlkIEdhZ29uLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDAzNjc8L2J1Zz46IFVwZGF0ZSBKSyBhdXRvIGNvbmZpZ3VyYXRpb24gZG9jdW1lbnRhdGlvbiB0byBjbGFyaWZ5CiAgICAgICAgdGhhdCB3b3JrZXJzLnByb3BlcnRpZXMgbXVzdCBhbHNvIGV4aXN0LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDA1MjQ8L2J1Zz46IEh0dHBTZXJ2bGV0UmVxdWVzdC5nZXRBdXRoVHlwZSgpIG5vdyByZXR1cm5zCiAgICAgICAgQ0xJRU5UX0NFUlQgcmF0aGVyIHRoYW4gQ0xJRU5ULUNFUlQgZm9yIGNlcnRpZmljYXRlIGF1dGhlbnRpY2F0aW9uCiAgICAgICAgYXMgcGVyIHRoZSBzcGVjLiBOb3RlIHRoYXQgd2ViLnhtbCBjb250aW51ZXMgdG8gdXNlIENMSUVOVC1DRVJUIHRvCiAgICAgICAgc3BlY2lmeSB0aGUgY2VydGlmaWNhdGUgYXV0aGVudGljYXRpb24gc2hvdWxkIGJlIHVzZWQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDUyNjwvYnVnPjogQWRkIHN1cHBvcnQgZm9yIEpQREFfT1BUUyB0byBjYXRhbGluYS5iYXQgYW5kIGFkZCBhCiAgICAgICAgSlBEQV9TVVNQRU5EIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGJvdGggc3RhcnR1cCBzY3JpcHRzLiBQYXRjaAogICAgICAgIHByb3ZpZGVkIGJ5IEt1cnQgUm95LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDA1Mjg8L2J1Zz46IEFkZCBtaXNzaW5nIG1lc3NhZ2UgbG9jYWxpc2F0aW9ucyBhcyBwcm92aWRlZCBieQogICAgICAgIEJlbiBDbGlmZm9yZC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwNTg1PC9idWc+OiBGaXggcGFyYW1ldGVyaXNlZCBjb25zdHJ1Y3RvciBmb3Igby5hLmp1bGkuRmlsZUhhbmRsZXIKICAgICAgICBzbyBwYXJhbWV0ZXJzIGhhdmUgYW4gZWZmZWN0LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDA2MjU8L2J1Zz46IFN0b3AgQ0dJU2VydmxldCBzd2FsbG93aW5nIHRoZSByb290IGNhdXNlIG9mIGFuCiAgICAgICAgZXhjZXB0aW9uLiBQYXRjaCBwcm92aWRlZCBieSBUYWtheW9zaGkgS2ltdXJhLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDA3MjM8L2J1Zz46IENvcnJlY3QgdGFibGUgY3JlYXRpb24gZXhhbXBsZSBpbiBKYXZhRG9jIGZvcgogICAgICAgIEpEQkNBY2Nlc3NMb2dWYWx2ZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwODAyPC9idWc+OiBBZGQganNwLWFwaS5qYXIgdG8gZmlsZXNldCBpbiBjYXRhbGluYS10YXNrcy54bWwgYXMgcHJvdmlkZWQgYnkKICAgICAgICBEYW5pZWwgU2FudG9zLiAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDgxNzwvYnVnPjogQ29ycmVjdCBwcm9ibGVtIHdoZXJlIENHSSBzY3JpcHRzIGluIHRoZSByb290IG9mIHRoZQogICAgICAgIFJPT1QgY29udGV4dCB0aHJldyBhIDxjb2RlPlN0cmluZ0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb248L2NvZGU+LgogICAgICAgIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgU2V0IHRoZSA8Y29kZT5TQ1JJUFRfRklMRU5BTUU8L2NvZGU+IGVudmlyb25tZW50IHZhcmlhYmxlIHJlcXVpcmVkCiAgICAgICAgYnkgUEhQIHdoZW4gdXNpbmcgdGhlIENHSVNlcnZsZXQgdG8gZXhlY3V0ZSBQSFAuIChtYXJrdCkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDgyMzwvYnVnPjogVXBkYXRlIGNvbnRleHQgZG9jIHRvIGNsYXJpZnkgdXNlIG9mIFJPT1QueG1sLAogICAgICAgIG11bHRpLWxldmVsIGNvbnRleHQgcGF0aHMgYW5kIHRvIGZ1cnRoZXIgZGlzY291cmFnZSB1c2Ugb2Ygc2VydmVyLnhtbAogICAgICAgIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDg0NDwvYnVnPjogQWRkIGFkZGl0aW9uYWwgc3luY3MgdG8gSkRCQ1JlYWxtIHRvIHJlc29sdmUgTlBFIHdoZW4KICAgICAgICB0d28gdXNlcnMgdHJ5IHRvIGF1dGhlbnRpY2F0ZSB1c2luZyBESUdFU1QgYXV0aGVudGljYXRpb24gYXQgdGhlIHNhbWUKICAgICAgICB0aW1lLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDA4NjA8L2J1Zz46IExvZyBleGNlcHRpb25zIGFuZCBvdGhlciBwcm9ibGVtcyBkdXJpbmcgcGFyYW1ldGVyCiAgICAgICAgcHJvY2Vzc2luZy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwOTAxPC9idWc+OiBFbmNvZGUgZGlyZWN0b3J5IGxpc3Rpbmcgb3V0cHV0LiBCYXNlZCBvbiBhIHBhdGNoCiAgICAgICAgcHJvdmlkZWQgYnkgQ2hyaXMgSGFsc3RlYWQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDkyOTwvYnVnPjogQ29ycmVjdCBKYXZhRG9jIGZvciBTdGFuZGFyZENhbHNzTG9hZGVyLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDEwMDg8L2J1Zz46IEFsbG93IFBPU1QgdG8gYmUgdXNlZCBmb3IgaW5kZXhlZCBxdWVyaWVzIHdpdGggQ0dJCiAgICAgICAgU2VydmxldC4gUGF0Y2ggcHJvdmlkZWQgYnkgQ2hyaXMgSGFsc3RlYWQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MTAyMDwvYnVnPjogSW1wcm92ZSBlcnJvciBtZXNzYWdlIHdoZW4gY3VzdG9tIGVycm9yIHJlcG9ydCBWYWx2ZQogICAgICAgIGZhaWxzIHRvIGxvYWQuIEFsc28gcmVtb3ZlIHJlcXVpcmVtZW50IHRoYXQgY3VzdG9tIGVycm9yIHJlcG9ydCBWYWx2ZXMKICAgICAgICBleHRlbmQgVmFsdmVCYXNlLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDEyMTc8L2J1Zz46IFNldCBzZWN1cmUgYXR0cmlidXRlIG9uIFNTTyBjb29raWUgd2hlbiBjb29raWUgaXMKICAgICAgICBjcmVhdGVkIGR1cmluZyBhIHNlY3VyZSByZXF1ZXN0LiBQYXRjaCBwcm92aWRlZCBieSBDaHJpcyBIYWxzdGVhZC4KICAgICAgICAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEVuc3VyZSBBY2NlcHQtTGFuZ3VhZ2UgaGVhZGVycyBjb25mb3JtIHRvIFJGQyAyNjE2LiBJZ25vcmUgdGhlbSBpZgogICAgICAgIHRoZXkgZG8gbm90LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIE1ha2UgcHJvdmlkZWQgaW5zdGFuY2VzIG9mIFJlcXVlc3REaXNwYXRjaGVyIHRocmVhZCBzYWZlLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCBmb3JtYXR0aW5nIG9mIENHSSB2YXJpYWJsZSBTQ1JJUFRfTkFNRS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM0NjQzPC9idWc+OiBJbXByb3ZlZCBkb2N1bWVudGF0aW9uIGZvciBwZXItdXNlciAvIHBlci1zZXNzaW9uIGNsaWVudEF1dGgKICAgICAgICB1c2FnZSBpbiBTU0wgQXV0aGVudGljYXRvci4gIERvY3MgcHJvdmlkZWQgYnkgamFjayBhbmQgUmFsZiBIYXVzZXIuICAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDA2Njg8L2J1Zz46IFVwZGF0ZSByZWxlYXNlIG5vdGVzIGFuZCByZWFkbWUgZmlsZXMgc3BlY2lmaWMgdG8gdjUuNS4yMCB0byAKICAgICAgICBub3RpZnkgdXNlcnMgb2YgbWlzc2luZyBNYWlsU2Vzc2lvbkZhY3RvcnkgaW4gZGlzdHJpYnV0aW9uLCBzdWdnZXN0IHdvcmthcm91bmRzLAogICAgICAgIGFuZCBsaW5rIHRvIHJlbGV2YW50IEJ1Z3ppbGxhIGlzc3VlLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzc5Nzc8L2J1Zz46IGFkYXB0IEJVSUxESU5HLnR4dCBhbmQgbmV0IGJ1aWxkLnhtbCBmb3IgU1ZOLiAgUGF0Y2ggYnkKICAgICAgICBDaHJpc3RvcGhlciBTYWhud2FsZHQuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgPGJ1Zz4zOTA1NTwvYnVnPjogTGluayB0byBzYW1wbGUgd29ya2Fyb3VuZCBjb2RlIGZvciB1c2luZyBKU1IxNjAgSk1YIG1vbml0b3JpbmcKICAgICAgICB3aXRoIGEgbG9jYWwgZmlyZXdhbGwuICBUaGFua3MgdG8gR2VvcmdlIExpbmRob2xtIGZvciB0aGUgcGF0Y2guICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgPGJ1Zz4zOTQ3NjwvYnVnPjogYWRkIHhtbCBkZWNsYXJhdGlvbiB0byBtb3N0IGJ1aWxkLnhtbCBmaWxlcywgYXMgc3VnZ2VzdGVkIGJ5CiAgICAgICAgR3JlZ29yeSBTLiBIb2VybmVyIFNyLiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDAzMjY8L2J1Zz46IHN0b3AgdXNpbmcgRmlsZSNkZWxldGVPbkV4aXQgaW4gRGVmYXVsdFNlcnZsZXQgdG8gYXZvaWQKICAgICAgICBKVk0gbWVtb3J5IGxlYWssIGFzIHN1Z2dlc3RlZCBieSBxdWFydHouICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDE5MjwvYnVnPjogdXBkYXRlIHNldHVwLmh0bWwgbm90ZXMgcmVnYXJkaW5nIFdpbmRvd3MgdHJheSBpY29uLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDAxNzc8L2J1Zz46IGFkZCBtb3JlIHdhcm5pbmdzIHRvIGRvY3VtZW50YXRpb24gYWJvdXQgUmVxdWVzdER1bXBlclZhbHZlCiAgICAgICAgY2hhcmFjdGVyIGVuY29kaW5nLiAgKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM5MjU1PC9idWc+OiBOUEUgaW4gQXV0aGVudGljYXRvckJhc2Ugd2hlbiBsb2dnaW5nIGxldmVsIGlzIHNldCB0byBERUJVRwogICAgICAgIGFuZCBubyBwcmluaWNwYWwgZm91bmQuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MTQzNzwvYnVnPjogTWFrZSBsb2cgbWVzc2FnZXMgYW5kIGxvZ2xldmVsIGNvbnNpc3RlbnQgZHVyaW5nIENvbnRleHQKICAgICAgICBzdGFydC4gUGF0Y2ggcHJvdmlkZWQgYnkgU3V6dWtpIFl1aWNoaXJvLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPiAKICA8c3Vic2VjdGlvbiBuYW1lPSJDb3lvdGUiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM4MzMyPC9idWc+OiBBZGQgYmFja2xvZyBhdHRyaWJ1dGUgdG8gQ2hhbm5lbFNvY2tldCBhcyBwcm92aWRlZCBieQogICAgICAgICBUYWtheW9zaGkgS2ltdXJhLiAocGVybykKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQmFja3BvcnQgcGFja2V0U2l6ZSBmZWF0dXJlIGZyb20gVG9tY2F0IDYuMC54IGF0IHN0YW5kYXJkIGNveW90ZSBBSlAgSmsgaGFuZGxlci4gKHBlcm8pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDA3NzE8L2J1Zz46IEZpeCBpbXBsZW1lbnRhdGlvbiBvZgogICAgICAgIFNhdmVkUmVxdWVzdElucHV0RmlsdGVyLmRvUmVhZCgpIHNvIFBPU1QgZGF0YSBtYXkgYmUgcmVhZCB1c2luZyBhCiAgICAgICAgVmFsdmUgb3IgRmlsdGVyLiBQYXRjaCBwcm92aWRlZCBieSBNaWNoYWVsIER1ZmVsLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDEwMTc8L2J1Zz46IFJlc3RvcmUgYmVoYXZpb3VyIG9mIE1lc3NhZ2VCeXRlcy5zZXRTdHJpbmcobnVsbCkuCiAgICAgICAgKHJlbW0vbWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDEwNTc8L2J1Zz46IE1vZGlmeSBTdHJpbmdDYWNoZSB0byBhZGQgYSBjb25maWd1cmFibGUgdXBwZXIgYm91bmQKICAgICAgICB0byB0aGUgbGVuZ3RoIG9mIGNhY2hlZCBzdHJpbmdzLiAocmVtbS9tYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zODc3NDwvYnVnPjogQ2hlY2sgamF2YXgubmV0LnNzbC5rZXlTdG9yZVBhc3N3b3JkIHN5c3RlbSBwcm9wZXJ0eSBhcyBhIHNlY29uZGFyeQogICAgICAgIHNvdXJjZSBmb3Iga2V5c3RvcmUgcGFzc3dvcmQgaW4gSlNTRVNvY2tldEZhY3RvcnksIGFzIHN1Z2dlc3RlZCBieSBUZWQgWC4gVG90aC4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM5NDAyPC9idWc+OiBNb2RpZnkgZXhpc3RpbmcgVmFyeSBIVFRQIGhlYWRlciwgcmF0aGVyIHRoYW4gb3ZlcndyaXRlIGl0LCBpZiBpdAogICAgICAgIGV4aXN0cyB3aGVuIHVzaW5nIEdaaXAgY29tcHJlc3Npb24uICBQYXRjaCBieSBNYXR0aGV3IENvb2tlLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDAyNDE8L2J1Zz46IENhdGNoIEV4Y2VwdGlvbnMgaW5zdGVhZCBvZiBUaHJvd2FibGVzIGluIERlZmF1bHQgYW5kIFNTSSBzZXJ2bGV0cy4KICAgICAgICBBbHNvIGltcHJvdmUgcmVsZXZhbnQgbG9nZ2luZyB3aGlsZSB3ZSdyZSBhdCBpdC4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwMTMzPC9idWc+OiBCZXR0ZXIgZXJyb3IgbWVzc2FnZSB3aGVuIGNvbnRleHQgbmFtZSBpcyBub3QgYXZhaWxhYmxlIG9uIHN0YXJ0dXAsCiAgICAgICAgYXMgc3VnZ2VzdGVkIGJ5IEFuZHJlYXMgUGxlc25lciBKYWNvYnNlbi4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4gCiAgPHN1YnNlY3Rpb24gbmFtZT0iSmFzcGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zOTk3NTwvYnVnPjogZG9uJ3QgaGF2ZSBzdGF0aWMgTG9nIHJlZmVyZW5jZXMgdG8gcHJldmVudAogICAgICAgIGNsYXNzbG9hZGVyIGxlYWtzLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDAxMDQ8L2J1Zz46IFdoZW4gZGlzcGxheWluZyBKU1Agc291cmNlIGFmdGVyIGFuIGV4Y2VwdGlvbiwgaGFuZGxlCiAgICAgICAgaW5jbHVkZWQgZmlsZXMuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDc5NzwvYnVnPjogVGhpcyB3YXMgYSByZWdyZXNzaW9uIGFzIGEgcmVzdWx0IG9mIHRoZSBmaXggZm9yCiAgICAgICAgPGJ1Zz4zMzQwNzwvYnVnPi4gVExEIHZhbGlkYXRpb24gd2FzIGZhaWxpbmcgYXMgYSByZXN1bHQgb2YgdGhlIHVzZQogICAgICAgIG9mIHRoZSBlc2NhcGUgY2hhcmFjdGVyICgweDFiKSBhcyBhIHRlbXBvcmFyeSByZXBsYWNlbWVudCBmb3IgXCQuCiAgICAgICAgQW4gYWx0ZXJuYXRpdmUgY2hhcmFjdGVyICgweGUwMDApIGZyb20gdGhlIHVuaWNvZGUgcHJpdmF0ZSB1c2UgcmFuZ2UKICAgICAgICBpcyBub3cgdXNlZC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQxMDU3PC9idWc+OiBNYWtlIGpzcDpwbHVnaW4gb3V0cHV0IFhIVE1MIGNvbXBsaWFudC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQxMzI3PC9idWc+OiBTaG93IGZ1bGwgVVJJIGZvciBhIDQwNC4gUGF0Y2ggcHJvdmlkZWQgYnkgVmlqYXkuCiAgICAgICAgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQxMjY1PC9idWc+OiBBbGxvdyBKc3BTZXJ2bGV0IGNoZWNrSW50ZXJ2YWwgaW5pdCBwYXJhbWV0ZXIgdG8gYmUKICAgICAgICBleHBsaWNpdGx5IHNldCB0byB0aGUgc3RhdGVkIGRlZmF1bHQgdmFsdWUgb2YgemVybyBieSByZW1vdmluZyB0aGUKICAgICAgICBjb2RlIHRoYXQgcmVzZXRzIGl0IHRvIDMwMCBpZiBleHBsaWNpdGx5IHNwZWNpZmllZCBhcyB6ZXJvLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIERpc3BsYXkgdGhlIEpTUCBzb3VyY2Ugd2hlbiBhIGNvbXBpbGF0aW9uIGVycm9yIG9jY3VycyBhbmQgZGlzcGxheQogICAgICAgIHRoZSBjb3JyZWN0IGxpbmUgbnVtYmVyIHJhdGhlciB0aGFuIHN0YXJ0IG9mIGEgc2NyaXB0bGV0IGJsb2NrLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPiAKICA8c3Vic2VjdGlvbiBuYW1lPSJXZWJhcHBzIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNDk1MjwvYnVnPjogQ2xhcmlmeSB0aGF0IHRoZSBXaW5kb3dzIEluc3RhbGxlciBhbHdheXMgaW5zdGFsbHMKICAgICAgICBhIFdpbmRvd3Mgc2VydmljZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM1OTY4PC9idWc+OiBNYWtlIGVudmlyb25tZW50IGVudHJ5IHByb3BlcnRpZXMgaW5wdXQgYSB0ZXh0IGFyZWEuCiAgICAgICAgUGF0Y2ggcHJvdmlkZWQgYnkgVHJpc3RhbiBNYXJseS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3NTg4PC9idWc+OiBGaXggY3JlYXRpb24gb2YgSk5ESSBSZWFsbSBpbiBhZG1pbiBhcHBsaWNhdGlvbi4gUGF0Y2gKICAgICAgICBwcm92aWRlZCBieSBUZXJyeSBaaG91LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzgwNDg8L2J1Zz46IEZpeCBtZW1vcnkgbGVhayBhc3NvYWNpYXRlZCB3aXRoIHVzZSBvZiBleHByZXNzaW9uCiAgICAgICAgbGFuZ3VhZ2UgaW4gSlNQcy4gUGF0Y2ggcHJvdmlkZWQgYnkgVGFyYXMgVGllbGtlcy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM5NTcyPC9idWc+OiBJbXByb3ZlbWVudHMgdG8gQ29tcHJlc3Npb25GaWx0ZXIgZXhhbXBsZSBwcm92aWRlZCBieQogICAgICAgIEVyaWMgSGVkc3Ry9m0uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgPGJ1Zz40MDUwNzwvYnVnPjogVXBkYXRlIGhvc3QtbWFuYWdlciBhbmQgc2VydmxldC1leGFtcGxlcyB3ZWItYXBwcyB0bwogICAgICAgIHVzZSB0aGUgc2VydmxldCAyLjQgeHNkLiBQYXRjaCBwcm92aWRlZCBieSBDaHJpcyBIYWxzdGVhZC4gKG1hcmt0KQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwNTgxPC9idWc+OiBBZGQgaW5mb3JtYXRpb24gb24gdGhlIHVzZSBvZiBhIHN5bWJsb2ljIGxpbmsgYXMgdGhlCiAgICAgICAgZG9jQmFzZSBmb3IgYSBDb250ZXh0IHRvIHRoZSBDb250ZXh0IGRvY3VtZW50YXRpb24uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDYzMzwvYnVnPjogUmVtb3ZlIHJlZmVyZW5jZXMgdG8gdGhlIERlZmF1bHRDb250ZXh0IGZyb20gdGhlCiAgICAgICAgZG9jdW1lbnRhdGlvbi4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwNjc3PC9idWc+OiBVcGRhdGUgU1NMIGRvY3VtZW50YXRpb24gdG8gaW5kaWNhdGUgdGhhdCBQS0NTMTEKICAgICAgICBrZXlzdG9yZXMgbWF5IGJlIHVzZWQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDcxNDwvYnVnPjogQWRtaW4gd2ViYXBwIG5vIGxvbmdlciByZXF1aXJlcyBhIHVzZXJuYW1lIGZvciBhCiAgICAgICAgRGF0YVNvdXJjZSBzaW5jZSBpdCBpcyBub3QgcmVxdWlyZWQgaW4gYWxsIGNhc2VzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDA3MjA8L2J1Zz46IEZpeCBleGNlcHRpb24gaW4gYWRtaW4gd2ViYXBwIHdoZW4gYWRkaW5nIGEgZ3JvdXAgdG8KICAgICAgICBhIHVzZXIuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDg3NDwvYnVnPjogQ29ycmVjdCBsb2c0aiBjb25maWd1cmF0aW9uIGluIGRvY3VtZW50YXRpb24gd2ViYXBwLgogICAgICAgIFBhdGNoIHByb3ZpZGVkIGJ5IEZyYW5jayBCb3JlbC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwOTk5PC9idWc+OiBBZGQgdHJ1c3Qgc3RvcmUgY29uZmlndXJhdGlvbiBmb3IgU1NMIGNvbm5lY3RvcnMgdG8KICAgICAgICB0aGUgYWRtaW4gd2ViYXBwLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDEwNTE8L2J1Zz46IEFkZCBpbmZvcm1hdGlvbiBvbiBrZXlzdG9yZSBhbGlhc2VzIGFuZCBjYXNlCiAgICAgICAgc2Vuc2l0aXZpdHkgdG8gU1NMIEhPVy1UTy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQxMTgyPC9idWc+OiBVcGRhdGUgdGhlIEphc3BlciBkb2N1bWVudGF0aW9uIGZvciB0aGUgY2xhc3NwYXRoCiAgICAgICAgYXR0cmlidXRlLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDE0OTM8L2J1Zz46IEZpeCBoYW5kbGluZyBvZiBBUFIgY29ubmVjdG9ycyBpbiBBZG1pbiB3ZWJhcHAuCiAgICAgICAgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQxNTEyPC9idWc+OiBWZXJzaW9uIG51bWJlciB3YXMgbm90IGluc2VydGVkIGluIHJlbGVhc2Ugbm90ZXMuCiAgICAgICAgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwMjU3PC9idWc+OiBVcGRhdGUgTWFuYWdlciB3ZWJhcHAgaG93dG8gb24gcmVtb3RlIGRlcGxveW1lbnQgdG8gcmVmbGVjdAogICAgICAgIG5lZWQgZm9yIGV4cGxpY2l0IHBhdGggaW4gb25lIHNwZWNpZmljIHVzZS1jYXNlLiAgVGhhbmtzIHRvIFZlbmthdGVzaCBKYXlhcmFtYW4uICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgPGJ1Zz40MDE2MDwvYnVnPjogYWRkIHJlZmVyZW5jZSB0byB0aGUgRmlsdGVyIHByb3Bvc2VkIGluIHRoaXMgQnVnemlsbGEgaXRlbSB0byB0aGUgV2ViZGF2U2VydmxldC4KICAgICAgICBXaGlsZSBhdCBpdCwgZ2l2ZSB0aGUgV2ViZGF2U2VydmxldCBzb21lIGxvbmctb3ZlcmR1ZSBUTEMgYnkgY2xlYW5pbmcgdXAgc29tZSBvZiB0aGUgb2xkIGRhdGEKICAgICAgICBzdHJ1Y3R1cmVzIGluIGZhdm9yIG9mIG1vZGVybiAoYnV0IHN0aWxsIEpESyAxLjQtY29tcGxpYW50KSBpbnRlcmZhY2VzLiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgICA8ZG9jcz4KICAgICAgICBBZGQgYSB2aXJ0dWFsIGhvc3RpbmcgaG93LXRvIGNvbnRyaWJ1dGVkIGJ5IEhhc3NhbiBTY2hyb2VkZXIuIChtYXJrdCkKICAgICAgPC9kb2NzPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPiAKICA8c3Vic2VjdGlvbiBuYW1lPSJDbHVzdGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxhZGQ+CiAgICAgICAgQWRkIGNsdXN0ZXJlZCBTU08gY29kZSBhbmQgYmFja3BvcnQgZmVhdHVyZSBmcm9tIFRvbWNhdCA2LjAueCwKICAgICAgICBzdWJtaXR0ZWQgYnkgRmFiaWVuIENhcnJpb24gKHBlcm8pCiAgICAgIDwvYWRkPiAgICAKICAgICAgPGFkZD4KICAgICAgICBBZGQgYmV0dGVyIHJlY292ZXJ5IGF0IEZhc3RBc3luY1F1ZXVlU2VuZGVyLiBNYWRlIHRoZSBzdGFydGVneSBtb3JlIHJvYnVzdCBmb3IgdGVtcG9yYXJ5IGNvbm5lY3Rpb24gcHJvYmxlbXMgKHBlcm8pCiAgICAgIDwvYWRkPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPiAgIAo8L3NlY3Rpb24+CgoKPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS4yMCAoZmhhbmlrKSIgcnRleHQ9InJlbGVhc2VkIDIwMDYtMDktMjgiPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNhdGFsaW5hIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IGxvZ2ljIGVycm9yIGluIFVzZXJEYXRiYXNlUmVhbG0uZ2V0cHJpbmNpcGFsKCkgdGhhdCBjYXVzZWQgdXNlcgogICAgICAgIHJvbGVzIGFzc2lnbmVkIHZpYSBncm91cHMgdG8gYmUgaWdub3JlZC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwNTE4PC9idWc+OiBVc2UgY29ycmVjdCBtZXNzYWdlIHdoZW4gYSBSdW50aW1lRXhjZXB0aW9uIGlzCiAgICAgICAgdGhyb3duIGZyb20gdGhlIHJlcXVlc3RJbml0aWFsaXplZCBvciByZXF1ZXN0RGVzdHJveWVkIG1ldGhvZCBvZgogICAgICAgIGEgbGlzdGVuZXIgdGhhdCBpbXBsZW1lbnRzIFNlcnZsZXRSZXF1ZXN0TGlzdGVuZXIuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+IAogIDxzdWJzZWN0aW9uIG5hbWU9Ikphc3BlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzE4MDQ8L2J1Zz46IFVubmVzdGVkIHRhZ3Mgd2l0aGluIGEgdGFnIGZpbGUgYXJlIG5vdyBjb25maWd1cmVkCiAgICAgICAgd2l0aCB0aGUgVGFnIHJlcHJlc2VudGVkIGJ5IHRoZSBjb250YWluaW5nIHRhZyBmaWxlIGFzIHRoZWlyIHBhcmVudAogICAgICAgIHRhZy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMzMzU2PC9idWc+OiBUYWcgYXR0cmlidXRlcyB0aGF0IGNvbnRhaW5lZCAkIGZvbGxvd2VkIGJ5IDEgb3IKICAgICAgICBtb3JlIG5vbi1zcGVjaWFsIGNoYXJhY3RlcnMgYW5kIHRoZW4gYSB7IGNoYXJhY3RlciBjYXVzZWQgYW4KICAgICAgICBleGNlcHRpb24uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMzQwNzwvYnVnPjogVGhlIHN0cmluZyBcJCBpbiB0ZW1wbGF0ZSB0ZXh0IHdhcyByZWR1Y2VkIHRvICQKICAgICAgICB3aGVuIHRoZSBpc0VMSWdub3JlZCBwYWdlIGRpcmVjdGl2ZSB3YXMgc2V0IHRvIHRydWUuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNDUwOTwvYnVnPjogVGFnIG5hbWVzIG1heSBub3cgdXNlIHRoZSBmdWxsIHJhbmdlIG9mCiAgICAgICAgY2hhcmFjdGVycyBwZXJtaXR0ZWQgYnkgeHNkOm5tdG9rZW4uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+ICAgCiAgPHN1YnNlY3Rpb24gbmFtZT0iV2ViYXBwcyI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzQzOTk8L2J1Zz46IERpc2FibGUgdW5kZXBsb3kgZm9yIGFwcGxpY2F0aW9ucyB0aGF0IGhhdmUgbm90CiAgICAgICAgYmVlbiBkZXBsb3llZCBzdWNoIGFzIHRob3NlIGRlZmluZWQgaW4gc2VydmVyLnhtbCAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPiAKPC9zZWN0aW9uPgoKCjxzZWN0aW9uIG5hbWU9IlRvbWNhdCA1LjUuMTkgKGZoYW5paykiIHJ0ZXh0PSJub3QgcmVsZWFzZWQiPgogIDxzdWJzZWN0aW9uIG5hbWU9IkdlbmVyYWwiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPHVwZGF0ZT4KICAgICAgICAgQWRkIG11bHRpIGF0dHJpYnV0ZSBzZXR0aW5nIHRvIGpteDpzZXQgSk1YIHJlbW90ZSBhbnQgdGFzay4KICAgICAgICAgUGF0Y2ggY29udHJpYnV0ZWQgYnkgRGlkaWVyIERvbnNleiAocGVybykKICAgICAgPC91cGRhdGU+ICAgICAgCiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2F0YWxpbmEiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMwNzYyPC9idWc+OiBSZS1maXggdGhpcyBidWcgdGhhdCB3YXMgcmUtaW50cm9kdWNlZCBieSB0aGUgZml4CiAgICAgICAgdG8gPGJ1Zz4zNzI2NDwvYnVnPi4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3NTg4PC9idWc+OiBGaXggSk5ESSByZWFsbSBjcmVhdGlvbiB0aHJvdWdoIEpNWC4gUGF0Y2ggY29udHJpYnV0ZWQgYnkgVGVycnlaaG91ICAoZmhhbmlrKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM5NzA0PC9idWc+OiBUaGUgdXNlIG9mIGN1c3RvbSBjbGFzc2xvYWRlcnMgZmFpbGVkIHdoZW4gdGhlIGNvbnRleHQKICAgICAgICB3YXMgc3BlY2lmaWVkIGluIHNlcnZlci54bWwuIENvcnJlY3Rpb24gb2YgdGhlIGZhdWx0IHdpbGwgcmVxdWlyZSBzZXR0aW5nCiAgICAgICAgdGhlIG5ldyBsb2FkZXIgYXR0cmlidXRlIHVzZVN5c3RlbUNsYXNzTG9hZGVyQXNQYXJlbnQgdG8gZmFsc2UuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+IAogIDxzdWJzZWN0aW9uIG5hbWU9IkNveW90ZSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDA0MTg8L2J1Zz46IEFQUiBFbmRwb2ludCBzb2NrZXQgZXZhbHVhdGlvbiAocmVtbSkKICAgICAgPC9maXg+CiAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPiAKICA8c3Vic2VjdGlvbiBuYW1lPSJXZWJhcHBzIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMTMzOTwvYnVnPjogQWRtaW4gYXBwIHRocmV3IGV4Y2VwdGlvbnMgaWYgYSBuYW1lIG90aGVyIHRoYW4gQ2F0YWxpbmEKICAgICAgICB3YXMgY29uZmlndXJlZCBmb3IgdGhlIEVuZ2luZS4gUGF0Y2ggYmFzZWQgb24gYSBzdWdnZXN0aW9uIGZyb20gQW1pbGEKICAgICAgICBTdXJpYXJhY2hjaGkuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+IAo8L3NlY3Rpb24+CgoKPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS4xOCAoeW9hdnMpIiBydGV4dD0ibm90IHJlbGVhc2VkIj4KICA8c3Vic2VjdGlvbiBuYW1lPSJHZW5lcmFsIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQ2hhbmdlIE1ENSByZWxlYXNlIHNpZ25hdHVyZSBmaWxlcyB0byBoYXZlIG1kNSAobG93ZXJjYXNlKSBleHRlbnNpb24gaW5zdGVhZCBvZiBNRDUgKHVwcGVyY2FzZSksCiAgICAgICAgYXMgc3VnZ2VzdGVkIGJ5IEhlbmsgUGVubmluZyBhbmQgc3BlY2lmaWVkIGluIHRoZQogICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9kZXYvcmVsZWFzZS1wdWJsaXNoaW5nLmh0bWwiPkFTRiByZWxlYXNlIHB1Ymxpc2hpbmcgZ3VpZGVsaW5lczwvYT4uICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2F0YWxpbmEiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBGaXggdGhhdCBNYW5hZ2VyQmFzZSBpbmNyZW1lbnQgZXhwaXJlU2Vzc2lvbnMgY291bnRlciBhdCBiYWNrZ3JvdW5kIHRhc2sgdHdvIHRpbWVzLiAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zOTQwNjwvYnVnPjogRml4IHRoYXQgU3RhbmRhcmRTZXNzaW9uI2dldExhc3RBY2Nlc3NlZFRpbWUoKSB1c2VzIGNvcnJlY3QgZXhjZXB0aW9uIG1lc3NhZ2UsCiAgICAgICAgc3VnZ2VzdGVkIGJ5IFRha2F5b3NoaSBLaW11cmEuIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICA8YnVnPjM5NjYxPC9idWc+OiBBZGQgZG9jdW1lbnRhdGlvbiBvbiBKVUxJIEZpbGVIYW5kbGVyIHByb3BlcnRpZXMuICh5b2F2cykKICAgICAgPC9hZGQ+CiAgICAgIDxhZGQ+CiAgICAgICAgPGJ1Zz4zOTY1NzwvYnVnPjogV2FybiAoYW5kIGRvbid0IGxvYWQgamFyKSBpZiBKU1AgQVBJIGlzIGluIHdlYmFwcCBjbGFzc2xvYWRlciByZXBvc2l0b3J5LCBhcyBzdWdnZXN0ZWQgYnkKICAgICAgICAgIERhdmlkIFNhbmNoZXogQ3Jlc3BpbGxvLiAoeW9hdnMpCiAgICAgIDwvYWRkPgogICAgICA8YWRkPgogICAgICAgIDxidWc+Mzk2NzQ8L2J1Zz46IFN1cHBvcnQgSlJvY2tpdCBKVk0gaW4gc2VydmljZS5iYXQgc2NyaXB0LCBhcyBzdWdnZXN0ZWQgYnkgbGl6b25nYm8uICh5b2F2cykKICAgICAgPC9hZGQ+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zOTcxMTwvYnVnPjogVXBkYXRlIExvYWRlciBjb25maWd1cmF0aW9uIGRvY3VtZW50YXRpb24sIGFzIHN1Z2dlc3RlZCBieSBTdGVwaGFuZSBCYWlsbGllei4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM5ODY1PC9idWc+OiBBZGQgT3BlbiBPZmZpY2UgbWltZSB0eXBlcyB0byBjb25mL3dlYi54bWwuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zODgxNDwvYnVnPjogQWxpZ24gQ0dJIGhhbmRsaW5nIG9mIGluZGV4ZWQgcXVlcmllcywgcGFyYW1ldGVycyBhbmQKICAgICAgICBQT1NUIGNvbnRlbnQgd2l0aCBvdGhlciBDR0kgcHJvdmlkZXJzLiBUaGUgY2hhbmdlczogb25seSBwcm92aWRlCiAgICAgICAgcGFyYW1ldGVycyBvbiB0aGUgY29tbWFuZCBsaW5lIGZvciBpbmRleGVkIHF1ZXJpZXM7IGFsd2F5cyBwcm92aWRlIHRoZQogICAgICAgIHF1ZXJ5IHN0cmluZyB2aWEgdGhlIFFVRVJZX1NUUklORyBlbnZpcm9ubWVudCB2YXJpYWJsZTsgcHJvdmlkZSBQT1NUCiAgICAgICAgY29udGVudCB1bm1vZGlmaWVkIHRvIHN0ZGluOyBhbmQgbmV2ZXIgY2FsbCBnZXRQYXJhbWV0ZXJzKCkuIChtYXJrdCkgCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzQ4MDE8L2J1Zz46IFBhcnRpYWwgZml4IHRoYXQgYWRkcyBoYW5kbGluZyBvZiBJT0V4Y2VwdGlvbnMgZHVyaW5nCiAgICAgICAgbG9uZyBydW5uaW5nIENHSSByZXF1ZXN0cy4gQmFzZWQgb24gYSBwYXRjaCBieSBDaHJpcyBEYXZleS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM5Njg5PC9idWc+OiBBbGxvdyBzaW5nbGUgcXVvdGVzICgnKSBhbmQgYmFja3RpY2tzIChgKSBhcyB3ZWxsIGFzCiAgICAgICAgZG91YmxlIHF1b3RlcyAoIikgdG8gYmUgdXNlZCB0byBkZWxpbWl0IFNTSSBhdHRyaWJ1dGUgdmFsdWVzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDAwNTM8L2J1Zz46IENvcnJlY3QgYXBwbGljYXRpb24gZGVwbG95bWVudCBkb2N1bWVudGF0aW9uIHNvIGl0CiAgICAgICAgYWdyZWVzIHdpdGggdGhlIGNsYXNzbG9hZGVyIGRvY3VtZW50YXRpb24gcmVnYXJkaW5nIHNoYXJlZCBsaWIgYW5kCiAgICAgICAgQ0FUQUxJTkFfQkFTRS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM5NTkyPC9idWc+OiBTdG9wIEhFQUQgcmVxdWVzdHMgZm9yIHJlc291cmNlcyBoYW5kbGVkIGJ5IFNTSQogICAgICAgIHNlcnZsZXQgb3IgZmlsdGVyIGdlbmVyYXRpbmcgc3RhY2sgdHJhY2VzIGluIHRoZSBsb2dzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEltcHJvdmUgaGFuZGxpbmcgb2YgdGhlICc7JyBjaGFyYWN0ZXIgaW4gdGhlIFVSTCBzbyB0aGF0IGl0IGlzIG5vdwogICAgICAgIGFsbG93ZWQgaWYgcHJvcGVybHkgJXh4IGVuY29kZWQuIChyZW1tKQogICAgICA8L2ZpeD4KICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+IAogIDxzdWJzZWN0aW9uIG5hbWU9IkNveW90ZSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIEZpeCBBUFIgZW5kcG9pbnQgc28gdGhhdCB0aGUgYWNjZXB0b3IgdGhyZWFkIG5vdyBvbmx5IHByb2Nlc3NlcyBzb2NrZXQKICAgICAgICBhY2NlcHRzLiAocmVtbSkKICAgICAgPC9maXg+CiAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPiAKICA8c3Vic2VjdGlvbiBuYW1lPSJXZWJhcHBzIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zOTgxMzwvYnVnPjogQ29ycmVjdCBoYW5kbGluZyBvZiBuZXcgbGluZSBjaGFyYWN0ZXJzIGluIEpNWAogICAgICAgIGF0dHJpYnV0ZXMuIFBhdGNoIHByb3ZpZGVkIGJ5IFIgQnJhbWxleS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3NzgxPC9idWc+OiBNYWtlIHN1cmUgdGhhdCBTdG9yZUNvbmZpZyBzYXZlIGV4dGVybmFsIHJlZmVyZW5jZWQgd2FyIGZpbGVzIGF0IGNvbnRleHQueG1sIGNvcnJlY3QuIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM5NzkxPC9idWc+OiBVc2UgY29ycmVjdCBkZWZhdWx0IGZvciB1c2VOYW1pbmcgd2l0aGluIGEgQ29udGV4dC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBDb3JyZWN0bHkgZ2VuZXJhdGUgcmUtZGlyZWN0IGZvciBhZG1pbiBhcHAgaW5kZXguanNwIHRvIHByZXZlbnQgbG9naW4gcGFnZQogICAgICAgIGJlaW5nIGRpc3BsYXllZCB0d2ljZSB3aGVuIGNvb2tpZXMgYXJlIGRpc2FibGVkLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPiAKICA8c3Vic2VjdGlvbiBuYW1lPSJDbHVzdGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zOTQ3MzwvYnVnPjogU2Vzc2lvbiB0aW1lb3V0IG11Y2ggc2hvcnRlciB0aGFuIHNldHRpbmcKICAgICAgICAgYXQgd2ViLnhtbCBhdCBjbHVzdGVyIGVudmlyb25tZW50LCBzdWdnZXN0ZWQgYnkgSmluIEppYW5nLiAocGVybykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+ICAgCjwvc2VjdGlvbj4KCjxzZWN0aW9uIG5hbWU9IlRvbWNhdCA1LjUuMTcgKHlvYXZzKSIgcnRleHQ9InJlbGVhc2VkIDIwMDYtMDQtMjciPgogIDxzdWJzZWN0aW9uIG5hbWU9IkdlbmVyYWwiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVcGRhdGUgdG8gWGVyY2VzIDIuOC4wIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVcGRhdGUgdG8gdGNuYXRpdmUgMS4xLjMgKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNhdGFsaW5hIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IFNpbmdsZVNpZ25PbiBWYWx2ZSBhbmQgYWRkIFNlc3Npb24uZ2V0TGFzdEFjY2Vzc1RpbWVJbnRlcm5hbCgpIHdpdGhvdXQgc2Vzc2lvbiBpbnZhbGlkYXRpb24gdGVzdC4gKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzg4MTQ8L2J1Zz46IENHSVNlcnZsZXQgY29ycmVjdGx5IGhhbmRsZXMgU2hpZnRfSklTIG91dHB1dC4gKG1hcmt0KSAKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgQWRkIG1pc3NpbmcgUkVRVUVTVF9VUkkgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gQ0dJIGVudmlyb25tZW50LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mjc2MTc8L2J1Zz46IFN5bmMgZXhpc3RpbmcgbWltZSB0eXBlcyB3aXRoIGh0dHBkLiAoa2VpdGgpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzg3NjE8L2J1Zz46IEhhbmRsZSByZWxhdGl2ZSBzeW1saW5rcyB0byBzaGVsbCBzY3JpcHRzIGFzIHN1Z2dlc3RlZCBieSBBZGFtIE11cnJheSAoa2VpdGgpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzg3OTU8L2J1Zz46IEFzc29jaWF0ZSBtb3JlIGNsb3NlbHkgYmluZCB3aXRoIGEgZmluYWxseSB1bmJpbmQgaW4gU3RhbmRhcmRDb250ZXh0IHN0YXJ0IGFuZAogICAgICAgIHN0b3AsIGJhc2VkIG9uIGEgcGF0Y2ggYnkgRGFycnlsIE1pbGVzIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBJbXByb3ZlIHVuZGVwbG95bWVudCByb2J1c3RuZXNzIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBFeHBhbmQgdGhlIHNlbWFwaG9yZSB2YWx2ZSAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zOTAyMTwvYnVnPjogQWRkIGJhY2sgc3VwcG9ydCBmb3IgYXV0aGVudGljYXRpb24gb25seSwgc3VibWl0dGVkIGJ5IFNjb3R0IFN0YXJrIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBSZXZlcnQgZml4IGZvciA8YnVnPjM4MTEzPC9idWc+LCB3aGljaCBkb2VzIG5vdCBzZWVtIGEgbGVnaXRpbWF0ZSBwcm9ibGVtLCBhbmQgY2F1c2VzCiAgICAgICAgcmVncmVzc2lvbnMgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIENvcnJlY3RseSByZXNldCBsaXN0ZW5lcnMgd2hlbiByZWxvYWRpbmcgYSB3ZWJhcHAgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzgxOTQ8L2J1Zz46IERvbid0IGZhaWwgc2lsZW50bHkgaWYgLWZvcmNlIGlzIHVzZWQgd2l0aG91dCBDQVRBTElOQV9QSUQsIHN1Ym1pdHRlZCBieSBNYXR0aGV3IEJ1Y2tldHQuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zODE1NDwvYnVnPjogQXZvaWQgTlBFIGluIEZpbGVEaXJDb250ZXh0IGFmdGVyIHdlYmFwcCB1bmRlcGxveSwgcmVwb3J0ZWQgYnkgSmFtaWUgTWFoZXIuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zODIxNzwvYnVnPjogQWRkZWQgY2F1dGlvbmFyeSBub3RlIGFib3V0IGtleXN0b3JlIHBhc3N3b3JkIHRvIFNTTCBIb3dUbywgYXMgc3VnZ2VzdGVkIGJ5IFJhbGYgSGF1c2VyLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzgyNjI8L2J1Zz46IENsZWFyZWQgYW1iaWd1aXR5IGluIGhvc3QgZG9jdW1lbnRhdGlvbiwgYXMgc3VnZ2VzdGVkIGJ5IEplZmZyZXkgQmVubmV0dC4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM4NDc2PC9idWc+OiBNb2RpZmllZCBjaGVjayBmb3IgbnVsbCBUTEQgc3RyZWFtLCBhcyBzdWdnZXN0ZWQgYnkgRmFicml6aW8gR2l1c3RpbmEuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zODA1MjwvYnVnPjogVXNlIDxpPnVzZXJOYW1lPC9pPiBhcyB1c2VyRmllbGQgZGVmYXVsdC4gVXNlciBpcyBhdCBtYW55IGRhdGFiYXNlcyBhIAogICAgICAgIHJlc2VydmVkIGtleXdvcmQsIGFzIHN1Z2dlc3RlZCBieSByaWsuIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggaGFuZGxpbmcgb2Ygbm9uIG1hdGNoaW5nIGlmLXJhbmdlIGhlYWRlciAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzg0ODwvYnVnPjogT25seSBvdXRwdXQgY2F0YWxpbmEuc2ggZGlhZ25vc3RpYyBtZXNzYWdlcyBpZiB3ZSBoYXZlIGEgVFRZLCBzdWJtaXR0ZWQgYnkKICAgICAgICAgIERhdmlkIFNoYXcuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zODU5NjwvYnVnPjogTWlub3IgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIGluIERhdGFTb3VyY2VSZWFsbSwgc3VnZ2VzdGVkIGJ5IFNhbmR5CiAgICAgICAgICBNY0FydGh1ci4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDb3lvdGUiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBNYWtlIHRoZSBkZWZhdWx0IGNpcGhlciBzdWl0ZXMgYXZhaWxhYmxlIGZvciBTU0wgdGhlIHNhbWUgYXMgdGhlIHNldCBvZiBjaXBoZXIKICAgICAgICBzdWl0ZXMgZW5hYmxlZCBieSBkZWZhdWx0IHJhdGhlciB0aGFuIHRoZSBzZXQgb2YgYWxsIGNpcGhlciBzdWl0ZXMuIFRoaXMgcHJldmVudHMKICAgICAgICBjaXBoZXJzIHN1aXRlcyB0aGF0IGRvIG5vdCBwcm92aWRlIGNvbmZpZGVudGlhbGl0eSBwcm90ZWN0aW9uIGFuZC9vciBzZXJ2ZXIKICAgICAgICBhdXRoZW50aWNhdGlvbiBiZWluZyB1c2VkIGJ5IGRlZmF1bHQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgTW92ZSBBcHJFbmRwb2ludC5nZXRXb3JrZXJUaHJlYWQgaW5zaWRlIHRoZSB0cnkvY2F0Y2ggZm9yIHRoZSBtYWluIGFjY2VwdCBsb29wLCB0byBndWFyZAogICAgICAgIGFib3V0IGFuIE9PTSAod2hpY2ggd291bGQgbW9zdCBsaWtlbHkgZG9vbSB0aGUgc2VydmVyIGFueXdheSkgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEFzIGV4aGliaXRlZCBpbiB0aGUgQVNGJ3MgSklSQSBpbnN0YWxsYXRpb24sIGl0IHNlZW1zIEVJTlRSIGlzIGEgc3RhdHVzIGNvZGUgdGhhdCBzaG91bGQKICAgICAgICBiZSBpZ25vcmVkIGFzIGEgcmVzdWx0IHRvIGEgcG9sbCBjYWxsIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBOZXcgQVBSIGNvbm5lY3RvcnMgZGVmYXVsdHMgKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIEFkZCBtdWx0aXBsZSB0aHJlYWRzIGZvciBBUFIgcG9sbGVycywgdG8gd29yayBhcm91bmQgV2luZG93cyBsaW1pdGF0aW9ucyAocGVyZm9ybWFuY2UgZGVncmFkZXMKICAgICAgICB2ZXJ5IHJhcGlkbHkgaWYgcG9sbGVyIHNpemVzIG92ZXIgMTAyNCBhcmUgYWxsb3dlZCB3aGVuIGNvbXBpbGluZyBBUFIpIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBOZXcgbW9kZXMgZm9yIGZpcnN0UmVhZFRpbWVvdXQgKC0xIGJlaW5nIHRoZSBuZXcgZGVmYXVsdCkgKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFJlcGxhY2UgamF2YS51dGlsLlN0YWNrIHVzYWdlIHdpdGggYSBzaW1wbGUgYXJyYXkgaW4gdGhlIEFQUiBlbmRwb2ludCAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgdGNuYXRpdmUgam5pbGliLmMgbm93IHJlcG9ydCBjb3JyZWN0IGNvbXBpbGUgZmxhZ3MgZm9yIHJ1bnRpbWUgCiAgICAgICAgTGlicmFyeS5qYXZhIGNoZWNrcyBsaWtlIHNlbmRmaWxlIHN1cHBvcnQgZGVmYXVsdCB0cnVlL2ZhbHNlIChwZXJvKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJKYXNwZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM4MDE1PC9idWc+OiBSZW1vdmUgbWlzbGVhZGluZyB3YXJuaW5ncyBsb2dnZWQgaW4gVGFnTGlicmFyeUluZm9JbXBsLCBhcyBzdWdnZXN0ZWQgYnkgQW5kcmV3IEhvdWdodG9uLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzgzNzY8L2J1Zz46IE1ha2Ugc3VyZSBib2R5IGNvbnRlbnQgc3RhY2sgaXMgYWx3YXlzIHByb3Blcmx5IGFsaWduZWQsIGFzIHN1Ym1pdHRlZCBieSBUb255IERlaWdoLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIENvbXBhdGliaWxpdHkgd2l0aCBKRFQgMy4yIChyZW1tKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJXZWJhcHBzIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zOTI5MjwvYnVnPjogVXBkYXRlIGNhdGFsaW5hLnBvbGljeSBhdCBkZW1vIGJhbGFuY2VyIGFwcC4gRml4IHByb3ZpZGVkIGJ5IEtlcnJ5IFNhaW5zYnVyeSAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNjg0NzwvYnVnPjogRml4ZWQgdGhlIG1hbmFnZXIgYXBwIGNvcHkgZnVuY3Rpb24gdG8gbm90IG92ZXJ3cml0ZSBmaWxlQSB3aXRoIGZpbGVCIHdoZW4gZmlsZUE9PWZpbGVCLgogICAgICAgIEZpeCBwcm92aWRlZCBieSBIYXJvb24gUmFmaXF1ZSAoZmhhbmlrKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM4NTA4PC9idWc+OiBTZXZlcmFsIGVuaGFuY2VtZW50cyB0byBIb3N0IE1hbmFnZXIgYXBwbGljYXRpb24sIGluY2x1ZGluZyBjb25maWd1cmFibGUKICAgICAgICAgIG1hbmFnZXIgYXBwIHN1cHBvcnQgYW5kIGRpYWxvZyBib3ggZW5oYW5jZW1lbnRzLiAgVGhhbmtzIHRvIEdlb3JnZSBTZXh0b24gZm9yIHRoZSBwYXRjaC4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3NzgxPC9idWc+OiBNYWtlIHN1cmUgY29udGV4dCBjb25maWcgZmlsZSBpcyB3cml0ZWFibGUsIHN1Z2dlc3RlZCBieSBHZW9yZ2UgU2V4dG9uLiAoeW9hdnMscGVybykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2x1c3RlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICAgPHVwZGF0ZT4KICAgICAgICBBZGQgYXQgUG9vbGVkU29ja2V0U2VuZGVyIHRoZSBqbXggYXR0cmlidXRlcyBpblBvb2xTaXplIGFuZCBpblVzZVBvb2xTaXplLiAocGVybykKICAgICAgIDwvdXBkYXRlPgogICAgICAgPGZpeD4KICAgICAgICAgRGVsdGFNYW5hZ2VyIHNldCBzZXNzaW9uIGNyZWF0aW9uVGltZSBhdCBiYWNrdXAgbm9kZS4gKHBlcm8pCiAgICAgICA8L2ZpeD4KICAgICAgIDx1cGRhdGU+CiAgICAgICAgQWRkIEp2bVJvdXRlQmluZGVyVmFsdmUgZG9jdW1lbnRhdGlvbiBhdCBjbHVzdGVyLWhvd3RvLnhtbC4gKHBlcm8pCiAgICAgICA8L3VwZGF0ZT4KICAgICAgIDxhZGQ+CiAgICAgICAgSnZtUm91dGVCaW5kZXJWYWx2ZSBub3cgc3VwcG9ydHMgbm93IHNlc3Npb25pZCdzIGZyb20gcmVxdWVzdCBhbmQgY29va2llcy4KICAgICAgICBUaGFua3MgdG8gQnJpYW4gU3RhbnNiZXJyeSBmb3IgcmVwb3J0aW5nIGl0LiAocGVybykKICAgICAgIDwvYWRkPgogICAgICAgPGZpeD4KICAgICAgCTxidWc+Mzg3Nzk8L2J1Zz4gRml4IHdyb25nIGpteCBtZXNzYWdlIGFyZyBhdCBTaW1wbGVUY3BDbHVzdGVyCiAgICAgICAgICBhdCBvLmEuYy5jbHVzdGVyLnRjcC5tYmVhbnMtZGVzY3JpcHRvcnMueG1sLCBzdWJtaXR0ZWQgYnkgUGF3ZWwgVHVjaG9sc2tpIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggdGhhdCBub3QgYWZ0ZXIgZXZlcnkgIktlZXAgQWxpdmUgU29ja2V0IGNsb3NlIiBhIGxvZyB3YXJuaW5nIGlzIGdlbmVyYXRlZCBhdCBUY3BSZXBsaWNhdGlvblRocmVhZCAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zOTE3ODwvYnVnPjogTm93IFJPT1Qud2FyIGRlcGxveW1lbnQgd2l0aCBGYXJtV2FyRGVwbG95ZXIgaXMgcG9zc2libGUgKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIFJlcGxpY2F0aW9uVmFsdmUgbm90IHNldCBwcmltYXJ5U2Vzc2lvbiBmbGFnIHdoZW4gYWxsIGJhY2t1cCBub2RlcyBnb25lIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBBZGQgRGVsdGFTZXNzaW9uLmdldExhc3RBY2Nlc3NUaW1lSW50ZXJuYWwoKSB3aXRob3V0IHNlc3Npb24gaW52YWxpZGF0aW9uIHRlc3QuIChwZXJvKQogICAgICA8L3VwZGF0ZT4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KIDwvc2VjdGlvbj4KCjxzZWN0aW9uIG5hbWU9IlRvbWNhdCA1LjUuMTYgKHlvYXZzKSIgcnRleHQ9InJlbGVhc2VkIDIwMDYtMDMtMTUiPgogIDxzdWJzZWN0aW9uIG5hbWU9IkdlbmVyYWwiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVcGRhdGVkIC8gZW5oYW5jZWQgZG9jcyB0byByZW1vdmUgb2xkIEZJWE1FIHJlZmVyZW5jZXMuICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgUmVxdWlyZWQgdGNuYXRpdmUgbGlicmFyeSB2ZXJzaW9uIHVwZ3JhZGVkIHRvIDEuMS4yIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVcGRhdGUgdG8gRWNsaXBzZSBKRFQgMy4xLjIgKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNhdGFsaW5hIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4yMzk1MDwvYnVnPjogQ29udGV4dC5saXN0QmluZGluZ3MoKSBzaG91bGQgcmV0dXJuIG9iamVjdHMgbm90CiAgICAgICAgcmVmZXJlbmNlcy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM4MTI0PC9idWc+OiBBZGQgc3VwcG9ydCBmb3IgV2luZG93cyAyMHh4IHdoZW4gcmVhZGluZyBlbnZpcm9ubWVudAogICAgICAgIHZhcmlhYmxlcyBpbiBDR0lTZXJ2bGV0LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MjkyMTQ8L2J1Zz46IHJlc3BvbnNlLmNvbnRhaW5zSGVhZGVyKCkgbm93IHJldHVybnMgdGhlIGNvcnJlY3QKICAgICAgICB2YWx1ZSBmb3IgQ29udGVudC1UeXBlIGFuZCBDb250ZW50LUxlbmd0aCBoZWFkZXJzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEFsbG93IHVzaW5nIGEgY3VzdG9tIENvbnRleHRDb25maWcgd2hlbiB1c2luZyBKTVggZW1iZWRkaW5nIG9mIFRvbWNhdCwgYXMKICAgICAgICBpcyBkb25lIGJ5IHRoZSByZWd1bGFyIGRlcGxveWVyLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgQWRkIEpNWCBzZXJ2ZXJJbmZvIGF0dHJpYnV0ZSB0byBTZXJ2ZXIgTUJlYW4sIHRoYXQgd2UgY2FuIGlkZW50aWZ5CiAgICAgICAgdGhlIHRvbWNhdCByZWxlYXNlIHJlbW90ZWx5LiAocGVybykKICAgICAgPC9hZGQ+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IHRoZSBKTVggTUJlYW5GYWN0b3J5LmNyZWF0ZVN0YW5kYXJkSG9zdCBzaWduYXR1cmUgYXQgbWJlYW4tZGVzY3JpcHRvcnMueG1sIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggc29tZSBjYXNlcyAoZm9yIGV4YW1wbGUgd2l0aCByZWFsbSB1c2FnZSkgd2hlcmUgdGhlIGNvbnRhaW5lciBsb2dnZXIgZm9yIGEgY29udGV4dAogICAgICAgIHdvdWxkIGJlIHJldHJpZXZlZCB1c2luZyB0aGUgd3JvbmcgY2xhc3Nsb2FkZXIgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEh0dHBTZXNzaW9uLmdldElkIHdpbGwgbm8gbG9uZ2VyIHRocm93IGFuIElTRSB3aGVuIHRoZSBzZXNzaW9uIGlzIGludmFsaWQgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgICBNb3JlIGRldGFpbGVkIGVycm9ycyBmb3IgbmFtaW5nIGlzc3VlcyAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxkb2NzPgogICAgICAgIEFkZCBkb2N1bWVudGF0aW9uIGZvciB0aGUgVHJhbnNhY3Rpb24gZWxlbWVudCAocmVtbSkKICAgICAgPC9kb2NzPgogICAgICA8dXBkYXRlPgogICAgICAgIEFkZCBnZXRDb250ZXh0UGF0aCB0byB0aGUgaW50ZXJuYWwgc2VydmxldCBjb250ZXh0IGltcGxlbWVudGF0aW9uIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICBPbmx5IG51bGwgaW5zdGFuY2VzIGxvYWRlZCBieSB0aGUgd2ViYXBwIENMLCBzdWJtaXR0ZWQgYnkgTWF0dCBKZW5zZW4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIERlcGxveSBmb2xkZXJzIHdoaWNoIGRvbid0IGhhdmUgYSBXRUItSU5GLCBhbmQgcmV0dXJuIGFuIGVycm9yIHdoZW4gYSBjb250ZXh0CiAgICAgICAgZmlsZSBkb2VzIG5vdCBjb250YWluIGEgQ29udGV4dCBlbGVtZW50IChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM4NjUzPC9idWc+OiBGaXggcHJvcGVydHkgbmFtZSAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgU2xpZ2h0bHkgbW9kaWZ5IHRoZSB0aW1pbmcgb2YgdGhlIG1hbmFnZXIgc3RhcnQsIHNvIHRoYXQgaXQgaXMgbm90IHN0YXJ0ZWQgYnkgYQogICAgICAgIGxpc3RlbmVyIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBSZWZyZXNoIGxvZ2dlcnMgdXNlZCBieSB0aGUgZGlnZXN0ZXIgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIFVzZSBzZW5kRXJyb3IgaW5zdGVhZCBvZiBzZXRTdGF0dXMgdG8gc2VuZCB0aGUgNDAxIGNvZGUuIChiaWxsYmFya2VyKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBEb24ndCBhcHBlbmQgdGhlIHBvcnQgZm9yIGFuIFNTTCByZWRpcmVjdCBpZiBpdCBpcyB0aGUgZGVmYXVsdCBwb3J0LiAoYmlsbGJhcmtlcikKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ295b3RlIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgTG9nIGVycm9ycyB3aGVuIHNldHRpbmcgc29ja2V0IG9wdGlvbnMgd2l0aCBkZWJ1ZyBwcmlvcml0eSByYXRoZXIgdGhhbiBlcnJvci4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzgxMDA8L2J1Zz46IE1ha2UgY2VydGFpbiB0aGF0IGEgdmFsaWQgSG9zdCBuYW1lIGlzIHNldCwgb3Igbm9uZSBhdCBhbGwuIChiaWxsYmFya2VyKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM4NDg1PC9idWc+OiBGaXggbWlub3IgcmVncmVzc2lvbiBzZXR0aW5nIGNvbm5lY3Rpb24gdGltZW91dCAoYXMgd2VsbCBhcyBsaW5nZXIgYW5kCiAgICAgICAgbm8gZGVsYXkpIHdoZXJlIHRoZSBkZWZhdWx0IHZhbHVlIHdhcyBhbHdheXMgdXNlZCB3aGVuIHVzaW5nIHRoZSByZWd1bGFyIAogICAgICAgIEhUVFAgY29ubmVjdG9yIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBQYXNzIGFsb25nIG1vcmUgb2YgdGhlIFNTTCByZWxhdGVkIGZpZWxkcyB0byBPcGVuU1NMIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBDaGFyQ2h1bmsgbm93IGltcGxlbWVudHMgQ2hhclNlcXVlbmNlIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICBGaXggY29kaW5nIGVycm9yIHdoaWNoIGNvdWxkIGNhdXNlIGEgcmFyZSBjcmFzaCB3aGVuIGEgcG9sbGVyIGVycm9yIG9jY3VycmVkIGFuZCBzb2NrZXRzCiAgICAgICAgd2hlcmUgcGVuZGluZyBiZWluZyBhZGRlZCB0byB0aGUga2VlcGFsaXZlIHBvbGxlciAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IHBvdGVudGlhbCBzeW5jIGlzc3VlcyB3aGVuIHJlc3RhcnRpbmcgYSBwb2xsZXIgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIFVwZGF0ZSBBUFIgZXJyb3IgcmVwb3J0cywgaW5jbHVkaW5nIHRoZSBlcnJvciBjb2RlcyAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zODcyNjwvYnVnPjogUmVtb3ZlIGR1cGxpY2F0ZSByZXF1ZXN0IGdyb3VwIGZpZWxkIGNhdXNpbmcgYmxhbmsgc3RhdGlzdGljcyBmb3IgdGhlCiAgICAgICAgSFRUUCBjb25uZWN0b3IgKHJlbW0pIAogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggaW52YWxpZCBsZW5ndGggdXNlZCBieSBzb21lIEFKUCBwYWNrZXRzIGZvciB0aGUgQUpQIEFQUiBjb25uZWN0b3IsIHdoaWNoIGNvdWxkIGNhdXNlIAogICAgICAgIGNvcnJ1cHRpb24sIHN1Ym1pdHRlZCBieSBSdWRpZ2VyIFBsdW0gKGppbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zODM0NjwvYnVnPjogRml4IHByb2JsZW1zIHdpdGggcmVxdWVzdC5nZXRSZWFkZXIoKS5yZWFkTGluZSgpLiAKICAgICAgICBQYXRjaCBieSBSYWluZXIgSnVuZyAoYmlsbGJhcmtlcikKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgTG9jYWwgYWRkcmVzcyByZXVzZSBmb3IgQVBSIEVuZHBvaW50cyAodmlhIEFQUl9TT19SRVVTRUFERFIpIG5vdyBlbmFibGVkIChqaW0pCiAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgRG9uJ3Qgd3JpdGUgb3V0IHRoZSBzaHV0ZG93biBzZWNyZXQgZmlsZSBpZiBzaHV0ZG93biBpcyBkaXNhYmxlZCAodGhlIGRlZmF1bHQpIChiaWxsYmFya2VyKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggTlBFIHdoZW4gbm8gc2luayBpcyBzdXBwbGllZC4gKGJpbGxiYXJrZXIpCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIEFQUiBFbmRwb2ludHMgbm93IElQdjYgYXdhcmUgKGppbSkKICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBEb3duZ3JhZGUgIlJlc3BvbnNlIGFscmVhZHkgY29tbWl0dGVkIiBsb2dnaW5nIGVudHJ5IHRvIERFQlVHLiAoYmlsbGJhcmtlcikKICAgICA8L3VwZGF0ZT4KICAgICA8Zml4PgogICAgICAgPGJ1Zz4zODExMzwvYnVnPjogUmV0dXJuIHRoZSBlbXB0eSBTdHJpbmcgZm9yIGFuIGVtcHR5IHF1ZXJ5LXN0cmluZyBpbnN0ZWFkIG9mIG51bGwuIChiaWxsYmFya2VyKQogICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9Ikphc3BlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzgzODk8L2J1Zz46IFNldCBjb3JyZWN0IEpEVCBDb21waWxlciBvcHRpb24gdG8gamF2YSAxLjUgY29tcGxpYW5jZS4gCiAgICAgICAgUGF0Y2ggZnJvbSBPbGl2aWVyIFRob21hbm4gYW5kIFBhdWwgSGFtZXIgKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIEFkZCBzb21lIHVzZWZ1bCBoaW50cyB0byBqYXNwZXItaG93dG8uIChwZXJvKS4KICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zODc3NjwvYnVnPjogRml4IHNvdXJjZSBmaWxlIGF0dHJpYnV0ZSwgc3VibWl0dGVkIGJ5IE9saXZpZXIgVGhvbWFubiAocmVtbSkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2x1c3RlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIFVwZGF0ZSBEZWx0YU1hbmFnZXIgc2Vzc2lvbiBhY2Nlc3Mgc3RhdHMgIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBEZWx0YVNlc3Npb24gZ2V0SWQgd2lsbCBubyBsb25nZXIgdGhyb3cgYW4gSVNFIHdoZW4gdGhlIHNlc3Npb24gaXMgaW52YWxpZCAocGVybykKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgICBSZXN1cnJlY3RlZCB0aGUgJnF1b3Q7c3VzcGVjdCZxdW90OyBwcm9wZXJ0eSBzbyB0aGF0IHRoZSBsb2dzIGRvbid0IGZpbGwKICAgICAgICAgIHVwIHdpdGggZXJyb3JzIHdoZW4gbWVtYmVyIGRpc2FwcGVhcnMgb3IgYSBjb25uZWN0aW9uIGlzIGxvc3QuIE9ubHkgdXNlZnVsIGZvciBwb29sZWQgbW9kZSAoZmhhbmlrKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGFkZD4KICAgICAgIDxidWc+MzU3MTA8L2J1Zz46IEFkZCBzZXNzaW9uIHJlcGxpY2F0aW9uIGZvciBjcm9zcyBjb250ZXh0IHNlc3Npb24gY2hhbmdlcy4KICAgICAgIFRoZSBwb3J0bGV0IGFwaSBuZWVkIHRoaXMgc3VwcG9ydCwgc2VlIHJlZmFjdG9yZWQgUmVwbGljYXRpb25WYWx2ZS4gKHBlcm8pCiAgICAgIDwvYWRkPgogICAgICA8dXBkYXRlPgogICAgICAgIFJlcGxpY2F0aW9uVmFsdmUgcmVzZXQgRGVsdGFTZXNzaW9uIHdoZW4gY2x1c3RlciBub2RlIGhhcyBubyBiYWNrdXAgbm9kZS4gKHBlcm8pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIERhdGFTZW5kZXIgY2xvc2UgY29ubmVjdGlvbiBhbmQgdGhyb3cgZXhjZXB0aW9uIGFsc28gZXZlbiBpZiB3YWl0Rm9yQWNrIGlzIGZhbHNlLiAgKHBlcm8pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIEFjdGl2ZSBjbHVzdGVyIGp1bml0IHRlc3QgYWdhaW4uIChwZXJvKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJXZWJhcHBzIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IHNvbWUgWFNTIGlzc3VlcyBpbiB0aGUgSlNQIGV4YW1wbGVzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCBsb2dvcyBpbiB0aGUgbWFuYWdlciB3ZWJhcHAgKHJlbW0pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgo8L3NlY3Rpb24+Cgo8c2VjdGlvbiBuYW1lPSJUb21jYXQgNS41LjE1ICh5b2F2cykiIHJ0ZXh0PSJyZWxlYXNlZCAyMDA2LTAxLTIxIj4KICA8c3Vic2VjdGlvbiBuYW1lPSJHZW5lcmFsIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMjA4MTwvYnVnPjogUmVtb3ZlIHRoZSBKREsgcmVxdWlyZW1lbnQgZnJvbSB0aGUgV2luMzIgc2NyaXB0cy4gKGtlaXRoKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDYXRhbGluYSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgPGJ1Zz4zNzg1MjwvYnVnPjogRml4IHJlZ3Jlc3Npb24gd2hlcmUgdGhlIG1hZ2ljIHJvbGUgJyonIHdhcyBkZW55aW5nIGFsbCBhY2Nlc3MuIFBhdGNoIGJ5IHhyY2F0IChiaWxsYmFya2VyKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgIDxidWc+Mzc5MzQ8L2J1Zz46IERvbid0IGFzayBmb3IgYXV0aGVudGljYXRpb24gaWYgZGVueS1mcm9tLWFsbCBpcyBpbiBlZmZlY3QuIChiaWxsYmFya2VyKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjE1NTcwPC9idWc+OiBhdXRoLWNvbnN0cmFpbnQgb2YgKiB3YXMgaW50ZXJwcmV0dGVkIGFzIGFsbAogICAgICAgIGF1dGhlbnRpY2F0ZWQgdXNlcnMgcmF0aGVyIHRoYW4gYXMgYWxsIHJvbGVzIGRlZmluZWQgaW4gd2ViLnhtbC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgIFJlbW92ZSBsZWZ0b3ZlciBzdGF0aWMgbG9nZ2VyIHdoaWNoIHdhcyB1c2VkIHRvIGxvZyBhcHBsaWNhdGlvbiBsZXZlbCBtZXNzYWdlcyBpbgogICAgICAgQXBwbGljYXRpb25Db250ZXh0RmFjYWRlIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM4MDEyPC9idWc+OiBXaGVyZSBhIENHSSBzY3JpcHQgc2V0cyBhIHJlc3BvbnNlIGNvZGUsIHVzZSBpdC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3ODU0PC9idWc+OiBFeHRlbnNpb24tTGlzdCBjaGVja2luZyB3YXMgdG9vIHN0cmljdC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDb3lvdGUiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgIFJlcG9ydCBiaW5kaW5nIGVycm9ycyBpbiB0aGUgQVBSIGVuZHBvaW50IGFzIHN0cmluZ3MgcmF0aGVyIHRoYW4gcGxhdGZvcm0gc3BlY2lmaWMKICAgICAgIHN0YXR1cyBjb2RlcyAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICA8YnVnPjM3OTM0PC9idWc+OiBEb24ndCBhc2sgZm9yIGF1dGhlbnRpY2F0aW9uIGlmIGRlbnktZnJvbS1hbGwgaXMgaW4gZWZmZWN0LiAoYmlsbGJhcmtlcikKICAgICAgPC9maXg+CiAgICAgIDxmaXg+PGJ1Zz4zODA0NzwvYnVnPjogSGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoZSBTZXJ2bGV0IGF0dGVtcHRzIHRvIHJlYWQKICAgICAgICAgICAgICB0aGUgUmVxdWVzdCBib2R5IGZyb20gdGhlIEFKUC8xLjMgQ29ubmVjdG9yLCBpbiB0aGUgY2FzZSB0aGF0IG5vCiAgICAgICAgICAgICAgYm9keSB3YXMgc2VudC4gKGJpbGxiYXJrZXIpCiAgICAgIDwvZml4PgogICAgICA8Zml4PjxidWc+MzgwMzA8L2J1Zz46IFVuY29uZGl0aW9uYWxseSByZXR1cm4gRU9TIGZvciBhbiBhdHRlbXB0IHRvIHJlYWQgCiAgICAgICAgICAgICAgdGhlIGJvZHkgb2YgYW55IHJlcXVlc3QgdGhhdCBkb2Vzbid0IHNlbmQgQ0wgb3IgVEUuIAogICAgICAgICAgICAgIChyZW1tLCBiaWxsYmFya2VyKS4KICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iSmFzcGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNTM1MTwvYnVnPjogRml4IHByb2JsZW0gdXNpbmcgYW4gaW5uZXIgY2xhc3MgZm9yIGEgJmx0O2pzcDp1c2VCZWFuIC8mZ3Q7LiAoa2lubWFuKS4KICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzkyOTwvYnVnPjogRG9uJ3Qgc3RvcCBvbiB0aGUgZ2VuZXJpYyBhdHRyaWJ1dGUgbWV0aG9kcyBqdXN0IGJlY2F1c2UgdGhlIHNlc3Npb24gaXMgaW52YWxpZC4gUGF0Y2ggYnkgUGllcnJlIERlbGlzbGUuIChiaWxsYmFya2VyKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBBZGQgc3lzdGVtIHByb3BlcnRpZXMgb3JnLmFwYWNoZS5qYXNwZXIucnVudGltZS5Cb2R5Q29udGVudEltcGwuTElNSVRfQlVGRkVSIGFuZAogICAgICAgIG9yZy5hcGFjaGUuamFzcGVyLnJ1bnRpbWUuSnNwRmFjdG9yeUltcGwuVVNFX1BPT0wgdG8gYWxsb3cgY29uZmlndXJpbmcgSmFzcGVyCiAgICAgICAgbWVtb3J5IHVzYWdlIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3OTMzPC9idWc+OiBSZXN0cmljdCAmbHQ7anNwOmdldEF0dHJpYnV0ZSAvJmd0OyB0byBvbmx5IGxvb2sgaW4gUEFHRV9TQ09QRS4gKGJpbGxiYXJrZXIpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNsdXN0ZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgIDxidWc+Mzc4MDg8L2J1Zz46IEZpeCBBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gaW5zaWRlIFhCeXRlQnVmZmVyLiBSZXBvcnRlZCBieSBEaWV0bWFyIE11ZWxsZXIgKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIDxidWc+Mzc4OTY8L2J1Zz5EYXRhU2VuZGVyIHN0YXJ0cyBuZXcgU29ja2V0IGFmdGVyIElPRXhjZXB0aW9uLiAocGVybykKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgUmVkdWNlIG1lbW9yeSB1c2FnZSBhdCBtZW1iZXJzaGlwIHNlcnZpY2UuIChwZXJvKQogICAgICA8L3VwZGF0ZT4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KPC9zZWN0aW9uPgoKPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS4xNCAoeW9hdnMpIj4KICA8c3Vic2VjdGlvbiBuYW1lPSJHZW5lcmFsIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIG9wdGlvbmFsIG5hdGl2ZSBBUFIgY29ubmVjdG9yIHZlcnNpb24gdG8gMS4xLjEuIChtdHVyaykKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIGJ1aWxkLnByb3BlcnRpZXMuZGVmYXVsdCB0byBnZXQgbmF0aXZlIGNvbm5lY3RvciBmcm9tIG5ldyBsb2NhdGlvbi4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2F0YWxpbmEiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjEzMDQwPC9idWc+OiBGaXggZ2V0Q29udGV4dCgpIHdoZW4gdXNlZCB0byBvYnRhaW4gYSBjb250ZXh0IHRoYXQgaXMgYSBzdWItY29udGV4dAogICAgICAgIG9mIHRoZSBjdXJyZW50IGNvbnRleHQuIFBvcnRlZCBmcm9tIFRDNC4gKG1hcmt0KSAKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9Ikphc3BlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzc3NDY8L2J1Zz46IFJlbW92ZSBleHRyYSBzcGFjZSBmcm9tIFN0cmluZ1Rva2VuaXplciBwYXR0ZXJuIGluIEpzcEMsIGFzIHN1Z2dlc3RlZCBieQogICAgICAgIEVyaWMgSGVkc3Ryb20uICh5b2F2cykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ295b3RlIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICA8YnVnPjM2ODYzPC9idWc+OiBTdHJpcCBxdW90ZXMgd2hlbiBwYXJzaW5nIENvb2tpZSB2YWx1ZXMsIGV2ZW4gZm9yIHYwIENvb2tpZXMuIChiaWxsYmFya2VyKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgIDxidWc+Mzc4MDM8L2J1Zz46IERvbid0IGNsYWltIHRoYXQgd2UgaGF2ZSBhIHN0cmluZyB2YWx1ZSBpbiBNZXNzYWdlQnl0ZXMgdW50aWwgd2UgYWN0dWFsbHkgZG8uIAogICAgICAgICAgIFBhdGNoIGJ5IERvdWcgUmFuZCAoYmlsbGJhcmtlcikKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+Cjwvc2VjdGlvbj4KCjxzZWN0aW9uIG5hbWU9IlRvbWNhdCA1LjUuMTMgKHlvYXZzKSI+CiAgPHN1YnNlY3Rpb24gbmFtZT0iR2VuZXJhbCI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzY3MTE8L2J1Zz46IFVudXNlZCBsaW5lIG9mIGNvZGUuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgUmVtb3ZlZCB1bnVzZWQgU0FYUGF0aCwgSmF4ZW4gZGVwZW5kZW5jaWVzLiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFVwZGF0ZSBsb2c0aiBkZXBlbmRlbmN5IHRvIHZlcnNpb24gMS4yLjEyLCBTdHJ1dHMgdG8gMS4yLjcuICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgUmVtb3ZlZCBKREJDIDIuMCBTdGRFeHQgZGVwZW5kZW5jeSAob25seSBjbGFzcyBmcm9tIHRoZXJlIGlzIGphdmF4LnNxbC5YQURhdGFTb3VyY2UsIHdoaWNoIGlzCiAgICAgICAgcHJlc2VudCBpbiBKREsgMS40IGFuZCBsYXRlci4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3MDM5PC9idWc+OiB0eXBvIG9uIEpLIFF1aWNrIGNvbmZpZ3VyYXRpb24gaG93LXRvLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIDxidWc+MzcwMzU8L2J1Zz46IEFkZCBhIHBsYWNlaG9sZGVyIGZpbGUgaW4gdGhlIHRlbXAgZGlyZWN0b3J5IGZvciBXaW5aaXAgdGFyLmd6IGhhbmRsaW5nLiAoeW9hdnMpCiAgICAgIDwvYWRkPgogICAgICA8dXBkYXRlPgogICAgICAgIFVwZGF0ZSBKQUYgZGVwZW5kZW5jeSB0byAxLjAuMiwgSlRBIHRvIDEuMC4xYiBhbmQgSmF2YU1haWwgdG8gMS4zLjNfMDEuIChtYXJrdCkKICAgICAgPC91cGRhdGU+CiAgICAgIDxhZGQ+CiAgICAgICAgQWRkZWQgRWNsaXBzZSAucHJvamVjdCwgLmNsYXNzcGF0aCwgYW5kIGFzc29jaWF0ZWQgZmlsZXMgdG8gbWFrZSBidWlsZGluZyBUb21jYXQgZnJvbQogICAgICAgIEVjbGlwc2Ugc2lnbmlmaWNhbnRseSBlYXNpZXIuIChtYXJrdCkKICAgICAgPC9hZGQ+CiAgICAgIDxhZGQ+IAogICAgICAgIDxidWc+MzcyODQ8L2J1Zz46IEd1ZXNzIEpTRSA1LjAgbG9jYXRpb24gb24gTWFjIE9TIFgsIHBhdGNoIGJ5IFN0ZXBhbiBLb2x0c292LiAoeW9hdnMpCiAgICAgIDwvYWRkPgogICAgICA8Zml4PgogICAgICAgIFdyb25nIGNsYXNzIG5hbWUgaW4gYW50bGliLnhtbCBmb3IgSmtTdGF0dXNVcGRhdGVUYXNrLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNhdGFsaW5hIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNjgwMjwvYnVnPjogRml4IHByb2JsZW0gb2YgZG91YmxlLWluaXQgd2hlbiBKTVgtZGVwbG95aW5nIGEgCiAgICAgICAgQ29udGV4dCBpbnRvIGEgc3RhcnRlZCBIb3N0LiAoYmlsbGJhcmtlcikKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNjg0MDwvYnVnPjogUHJvdmlkZSBpbmZvcm1hdGlvbiBhcyB0byB3aGljaCB3ZWIueG1sIGlzIGJlaW5nIHByb2Nlc3NlZCBvbiBzdGFydHVwIHRvCiAgICAgICAgaGVscCBkZWJ1ZyBwYXJzaW5nIGVycm9ycy4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICA8YnVnPjM0NzI0PC9idWc+OiBBYmlsaXR5IHRvIHNldCBkb21haW4gZm9yIFNpbmdsZS1TaWduLU9uIGNvb2tpZS4gIFBhdGNoIGJ5IE9saXZlcgogICAgICAgIFJvc3NtdWVsbGVyLiAoeW9hdnMpCiAgICAgIDwvYWRkPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzcwNDQ8L2J1Zz46IFJlYWxtQmFzZS5oYXNSZXNvdXJjZVBlcm1pc3Npb24gbmVlZHMgdG8gYWNjZXNzIHRoZSBHZW5lcmljUHJpbmNpcGFsIGFzCiAgICAgICAgc2V0IGJ5IHRoZSByZWFsbSB1bmxlc3MgaGFzUm9sZSBpcyBvdmVycmlkZW4sIHdoaWNoIHdhcyBubyBsb25nZXIgYmVpbmcgZG9uZSBwcm9wZXJseSBmb3IKICAgICAgICB0aGUgSkFBUyByZWFsbSAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzI2NDwvYnVnPjogSk5ESSByZXNvdXJjZXMgd2VyZSBubyBsb25nZXIgYXZhaWxhYmxlIHdoZW4gc3RvcHBpbmcgbGlzdGVuZXJzLAogICAgICAgIHN1Ym1pdHRlZCBieSBCb2dkYW4gQ2FsbWFjIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3MTUwPC9idWc+OiBUdXJuIG9mZiBkaXJlY3RvcnkgbGlzdGluZyBieSBkZWZhdWx0IGFuZCBhZGQgYSB3YXJuaW5nCiAgICAgICAgcmVnYXJkaW5nIGVuYWJsaW5nIGxpc3Rpbmcgb2YgZGlyZWN0b3JpZXMgd2l0aCBtYW55IGVudHJpZXMuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQWRkIGNvbmZpZ3VyYWJpbGl0eSBmb3IgdGhlIGFtb3VudCBvZiB0aW1lIHRoYXQgdGhlIGNvbnRhaW5lciB3aWxsIHdhaXQgZm9yIHJlcXVlc3RzCiAgICAgICAgdG8gY29tcGxldGUgd2hlbiB1bmxvYWRpbmcgc2VydmxldHMsIHVzaW5nIHRoZSB1bmxvYWREZWxheSBwcm9wZXJ0eS4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIEFkZCBjb2RlIHRvIHNldCB0byBudWxsIGZpZWxkcyBpbiBsb2FkZWQgY2xhc3NlcyB3aGVuIHN0b3BwaW5nIGEgd2ViIGFwcGxpY2F0aW9uLCBhcyBhCiAgICAgICAgcG9zc2libGUgd29ya2Fyb3VuZCBmb3Igc3VzcGljaW91cyBnYXJiYWdlIGNvbGxlY3Rpb24gYmVoYXZpb3IuIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVcGRhdGUgbWVzc2FnZXMgYW5kIHN0YWNrIHRyYWNlcyBmb3IgY2xhc3Nsb2FkaW5nIGVycm9ycyB3aGljaCBtYXkgb2NjdXIgd2hlbiByZW1vdmluZwogICAgICAgIGEgd2ViIGFwcGxpY2F0aW9uLCBhbmQgZm9yIHN0b3BwZWQgd2ViIGFwcGxpY2F0aW9ucy4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzczMTk8L2J1Zz46IEZpeCBjYXRhbGluYS5iYXQgcmVmZXJlbmNlIHRvIENBVEFMSU5BX0JBU0UgZm9yIGxvZ2dpbmcucHJvcGVydGllcy4gIFRoYW5rcwogICAgICAgIHRvIFBpZXJyZS1ZdmVzIEJlbnpha2VuLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzY4NTI8L2J1Zz46IEN1c3RvbSBjbGFzc2xvYWRlcnMgZG9uJ3QgaG9ub3IgQ29udGV0IHByaXZpbGVnZWQgYXR0cmlidXRlLiAgVGhhbmtzIHRvCiAgICAgICAgTWF0dCBCcmlua2xleSBmb3IgdGhlIGFuYWx5c2lzIGFuZCBwYXRjaC4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD5GaXggZm9yIGEgY291cGxlIG9mIChtb3N0bHkgc2lsbHkpIGVkZ2UtY2FzZXMgaW4gdGVzdGluZyBhdXRoLgogICAgICAgICAgIFRoYW5rcyB0byBOYW0gVC4gTmd1eWVuIGZvciB0aGUgcmVwb3J0LiAoYmlsbGJhcmtlcikgCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzcwNjA8L2J1Zz46IEFjdHVhbGx5IGNvcHkgdGhlIFJlcXVlc3QgaGVhZGVycyB3aGVuIHJlcGxheWluZyBhZnRlciBGb3JtIGF1dGguIChiaWxsYmFya2VyKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3NTkxPC9idWc+OiBUeXBvIGluIEVuZ2luZSBjb25maWd1cmF0aW9uIHJlZmVyZW5jZS4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3NjY4PC9idWc+OiBBZGRlZCBub3RlIGFib3V0IEpTUCByZWNvbXBpbGF0aW9uIHRvIENvbnRleHQgY29uZmlndXJhdGlvbiBkb2N1bWVudGF0aW9uLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzcxMzI8L2J1Zz46IEhhdmUgRGlnZXN0QXV0aGVudGljYXRvciBIYW5kbGUgdXNlciBuYW1lcyB3aXRoIGNvbW1hcy4gIFRoYW5rcyB0byAKICAgICAgICAgIFJvYmVydCBXaWxsZSBmb3IgdGhlIHBhdGNoLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzcyMTI8L2J1Zz46IEJldHRlciBlcnJvciByZXBvcnRpbmcgaW4gQ29ubmVjdG9yLmphdmEuICBUaGFua3MgdG8gUmFsZiBIYXVzZXIgZm9yCiAgICAgICAgdGhlIHBhdGNoLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNveW90ZSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIEdyYWNlZnVsbHkgaGFuZGxlIHRoZSBjYXNlIHdoZXJlIHNvbWUgU29ja2V0IG9wdGlvbnMgYXJlIGRpc2FibGVkIGF0IAogICAgICAgIHRoZSBPUyBsZXZlbCBmb3IgdGhlIEFKUC8xLjMgQ29ubmVjdG9yLiAoYmlsbGJhcmtlcikKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNjM2NjwvYnVnPjogVXNlIHJld3JpdHRlbiBkZXBsb3llci1ob3d0byBwYWdlIGJ5IEFsbGlzdGFpciBDcm9zc2xleS4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIDxidWc+MzY2MzA8L2J1Zz46IEFkZGVkIGV4dHJhIGxvZyBvdXRwdXQgZm9yIGNsYXNzIGluc3RhbnRpYXRpb24gZmFpbHVyZS4gKHlvYXZzKQogICAgICA8L2FkZD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3MTIxPC9idWc+OiBTZW5kZmlsZSBhbHdheXMgbmVlZHMgdG8gYmUgZ2l2ZW4gdGhlIGxlbmd0aCBvZiBkYXRhIHRvIHdyaXRlLAogICAgICAgIHdoaWNoIGZpeGVzIHJhbmdlZCByZXF1ZXN0cy4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIE9wdGltaXplZCBkaXJlY3QgYnl0ZSBidWZmZXJzIGFzc29jaWF0aW9uIHdpdGggdGhlIHNvY2tldCBmb3IgQVBSIGNvbm5lY3RvcnMuIChtdHVyaykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IGhpZGRlbiBOUEVzIHdoZW4gdXNpbmcgdGhlIEFQUiBjb25uZWN0b3JzIGFuZCB0aGVyZSdzIG5vIGhvc3QgaGVhZGVyLiAocGVybywgcmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgSHR0cDExUHJvdG9jb2wgbm93IHJlZ2lzdGVyIFJlcXVlc3RQcm9jZXNzb3IgYXQgSk1YIGFuZCBzaG93IGN1cnJlbnQgdXNhZ2UgaW5zaWRlIG1hbmFnZXIgYXBwLiAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgSmtTdGF0dXMgQW50IHRhc2tzIGZvciBtb2RfamsgMS4yLjE1LiAocGVybykKICAgICAgPC9hZGQ+CiAgICAgIDx1cGRhdGU+Q29ubmVjdGlvbiBUaW1lb3V0IGlzIG5vcm1hbCwgc28gcmVkdWNlIGxvZ2dpbmcgdG8gREVCVUcgKGJpbGxiYXJrZXIpIAogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICBGaXggY3Jhc2ggd2hpY2ggY291bGQgb2NjdXIgd2l0aCB0aGUgSFRUUCBBUFIgY29ubmVjdG9yIHdoZW4gYWNjZXNzaW5nIHJlcXVlc3QgSk1YIG9iamVjdHMKICAgICAgICBvdXRzaWRlIG9mIHRoZSBwcm9jZXNzaW5nIG9mIHRoZSBzYWlkIHJlcXVlc3QgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzc2Mjc8L2J1Zz46IEZpeCBidWZmZXJpbmcgaXNzdWUgaW4gdGhlIEhUVFAgQVBSIGNvbm5lY3RvciB3aGVuIGEgbGFyZ2UgYnVmZmVyIHNpemUgd2FzCiAgICAgICAgdXNlZCBmb3Igc2VydmxldHMgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzc2NzM8L2J1Zz46IEZpeCBpbXBsZW1lbnRhdGlvbiBvZiBnZXRMb2NhbFBvcnQgYW5kIGdldExvY2FsQWRkciBpbiB0aGUgSFRUUCBBUFIgY29ubmVjdG9yCiAgICAgICAgKHJlbW0pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9Ikphc3BlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzUyNTI8L2J1Zz46IEphc3BlciBQYWdlRGF0YUltcGwgb3V0cHV0cyBtYWxmb3JtZWQgWE1MLiAgUGF0Y2ggYnkgUmFodWwgQWtvbGthci4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICA8YnVnPjM3MDYyPC9idWc+OiBIZWxwZnVsIEpTUCBleGNlcHRpb24gbWVzc2FnZSBjb250YWluaW5nIGZpbGUsIGxpbmUgbnVtYmVycy4gIFBhdGNoIGJ5CiAgICAgICAgVGltIEZlbm5lbGwgYXQgaHR0cDovL3d3dy50ZmVubmUuY29tL2phc3Blci8uICh5b2F2cykKICAgICAgPC9hZGQ+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzQwNzwvYnVnPjogRmlsZSBkZXNjcmlwdG9yIGxlYWsgaW4gSnNwUmVhZGVyLiAgVGhhbmtzIHRvIEZyZWQgZm9yIHRoZSBwYXRjaC4gIEkgYWxzbwogICAgICAgIGRpZCBzb21lIG1pbm9yIGNsZWFudXAgaW4gdGhlIGNsYXNzLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIDxidWc+Mzc2MTI8L2J1Zz46IEFkZCBmaWxlIGxvY2F0aW9uIHRvIEpTUCBWYWxpZGF0b3IgZXJyb3IgbWVzc2FnZS4gIFRoYW5rcyB0byBSZW5hdWQgQnJ1eWVyb24KICAgICAgICBmb3IgdGhlIHBhdGNoLiAoeW9hdnMpCiAgICAgIDwvYWRkPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNsdXN0ZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBGaXggdGhhdCBzZXNzaW9uIHJlcGxhY2UgbWVzc2FnZXMgYXJlIGxvZ2dlZCBhZnRlciBub2RlIHJlY292ZXJ5IGdldCBhbGwgc2Vzc2lvbiBmcm9tIG1hc3RlciBub2RlLiAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzg5NjwvYnVnPiBGaXggdGhhdCBzZW5kTWVzc2FnZSBzaWduYXR1cmUgYXQgYWxsIERhdGFTZW5kZXIgc3ViY2xhc3NlcyBtdXN0IGJlIGNoYW5nZWQuCiAgICAgICAgTm93IHBvb2xlZCBhbmQgYXN5bmMgbW9kZXMgd29ya2luZyBhcyBleHBlY3RlZC4gKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCB0aGF0IHNvY2tldCBhdCBvLmEuYy5jbHVzdGVyLnRjcC5GYXN0QXN5bmNTb2NrZXRTZW5kZXIgY2FuIGJlIGRpc2Nvbm5lY3QvY29ubmVjdC4gKHBlcm8pCiAgICAgIDwvZml4PiAgICAKICAgICAgPGZpeD4KICAgICAgICBGaXggY2x1c3RlciBtb2R1bGUgYnVpbGQueG1sIHNjcmlwdCBmb3IgbmV3IHN2biByZXBvc2l0b3J5IHN0cnVjdHVyZSAocGVybykKICAgICAgPC9maXg+ICAgIAogICAgICA8Zml4PgogICAgICAgIEZpeCBjbG9zZWQgc29ja2V0IGV4Y2VwdGlvbnMgYXQgbm9ybWFsIHNlcnZlciBzaHV0ZG93biwgcmVwb3J0ZWQgYnkgT2x2ZSBIYW5zZW4gKHBlcm8pCiAgICAgIDwvZml4PiAgICAKICAgICAgPGZpeD4KICAgICAgICBGaXggY2xvc2VkIHNvY2tldCBleGNlcHRpb25zIGluc2lkZSBhc3luYyBtZXNzYWdlIHRyYW5zZmVyIG1vZGVzIChwZXJvKQogICAgICA8L2ZpeD4gICAgCiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNDk4NDwvYnVnPjogSHR0cFNlc3Npb25CaW5kaW5nRXZlbnQuZ2V0VmFsdWUoKSBnZXQgY29ycmVjdCB2YWx1ZSAocGVybykKICAgICAgPC9maXg+ICAgIAogICAgICA8Zml4PgogICAgICAgIDxidWc+MzU5MTY8L2J1Zz46IHNlbmQgc2Vzc2lvbkNyZWF0ZWQgdG8gU2Vzc2lvbkxpc3RlbmVyIGFmdGVyIGNsdXN0ZXIgbm9kZSByZWNvdmVyeSAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNjU0MTwvYnVnPjogVXNlZCBhbHNvIEhhc2h0YWJsZSBhdCBEZWx0YVNlc3Npb24gKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEJldHRlciBzdXBwb3J0IGNsdXN0ZXIgYXQgZW5naW5lIGxldmVsLiAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNjg2NjwvYnVnPjogQ29ycmVjdCBhdHRyaWJ1dGUgbmFtZSBpbiBjb25mL3NlcnZlci54bWwgZG9jdW1lbnRhdGlvbiBmb3IgQ2x1c3RlciBlbGVtZW50LiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzcyNjE8L2J1Zz46IEFsbG93IHhlcmNlcyB0byBrbm93IHdoZXJlIHRoZSB3ZWIueG1sIGZpbGUgaXMgc28gdGhhdCByZWxhdGl2ZSBlbnRpdGllcyBjYW4gYmUgcmVzb2x2ZWQuCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzc1Mjk8L2J1Zz46IEZpeGVkIHJhY2UgY29uZGl0aW9uIGluIFJlcGxpY2F0aW9uTGlzdGVyI3N0b3BMaXN0ZW5pbmcuICBUaGFua3MgdG8gCiAgICAgICAgQ2hyaXMgV2Fsa2VyIGZvciB0aGUgcGF0Y2guICh5b2F2cykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iV2ViYXBwcyI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PlJlbW92ZSBvYnNvbGV0ZSBUYWdQbHVnaW4gZmlsZSBmcm9tIEpTUCBleGFtcGxlcyAoYmlsbGJhcmtlcik8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM2MDE5PC9idWc+OiBNYWRlIGNsZWFyIHRoZSBIb3N0LU1hbmFnZXIgSG93VG8gaXMgY29taW5nIHNvb24sIG5vdCByZWFkeSB5ZXQuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNjMzNjwvYnVnPjogQ2hlY2sgV0FSIGV4dGVuc2lvbiBpbiBib3RoIHVwcGVyIGFuZCBsb3dlciBjYXNlLCBhcyBzdWdnZXN0ZWQgYnkKICAgICAgICBBLiBHcmFzb2ZmLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzU5ODI8L2J1Zz46IENhbid0IGRlbGV0ZSBtYWlsIHNlc3Npb25zIGluIGFkbWluIHdlYmFwcC4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM2NjczPC9idWc+OiBTaW1pbGFyIHRvIHRoZSBvbmUgYWJvdmUsIGZvciBkYXRhIHNvdXJjZXMuICh5b2F2cykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+Cjwvc2VjdGlvbj4KCjxzZWN0aW9uIG5hbWU9IlRvbWNhdCA1LjUuMTIgKHlvYXZzKSI+CiAgPHN1YnNlY3Rpb24gbmFtZT0iR2VuZXJhbCI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIFJlbW92ZSB1bmVlZGVkIGZpbGVzIGluIGNvbmYuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBDaGFuZ2UgZGlzdHJpYnV0aW9uIGZpbGUgbmFtZXMgZnJvbSBqYWthcnRhLSogdG8gYXBhY2hlLSouIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICAKICA8c3Vic2VjdGlvbiBuYW1lPSJDYXRhbGluYSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8YWRkPgogICAgICAgIEFkZCBKTVggUmVtb3RlIGNyZWF0ZSBhbmQgdW5yZWdpc3RlciBhbnQgdGFza3MgKHBlcm8pCiAgICAgIDwvYWRkPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzYzNDM8L2J1Zz46IE9ubHkgbm9ybWFsaXplIG91dCBiYWNrc2xhc2ggb24gV2luZG93cyBwbGF0Zm9ybXMuIChiaWxsYmFya2VyKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBBbGxvdyBjb25maWd1cmluZyBzdGFuZGFyZCBzdHJlYW0gcmVkaXJlY3Rpb24uIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICA8YnVnPjM2MDg4PC9idWc+OiBBZGQgUlVOTklORy50eHQgYW5kIFJFTEVBU0UtTk9URVMudHh0IHRvIGZ1bGxkb2NzIGRpc3Ryby4gKHlvYXZzKQogICAgICA8L2FkZD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM2NTM0PC9idWc+OiBmaXggZXF1YWxzIGZvciBVUkxzIHJldHVybmVkIGJ5IFNlcnZsZXRDb250ZXh0LmdldFJlc291cmNlKCkgKGx1ZWhlKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM2NTU4PC9idWc+OiBDbGVhciBJbnRyb3NwZWN0aW9uVXRpbHMgY2FjaGUgd2hlbiBzdG9wcGluZyBhIHdlYmFwcCwgYXMgaXQgCiAgICAgICAgY291bGQgbGVhayB0byBrZWVwaW5nIGEgcmVmZXJlbmNlIHRvIHRoZSBjbGFzc2xvYWRlciAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNjExMzwvYnVnPjogU2Vzc2lvbiBwZXJzaXN0ZW5jZSBmb3Igb2JqZWN0cyB3aXRoIHByaW1pdGl2ZSB0eXBlcyBjb3VsZCBmYWlsIGluCiAgICAgICAgc29tZSByYXJlIGNhc2VzIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM2NTQxPC9idWc+OiBGdWxsIHN5bmNocm9uaXphdGlvbiBmb3Igc2Vzc2lvbiBvYmplY3RzIGF0dHJpYnV0ZXMgY29sbGVjdGlvbnMgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzU2MDk8L2J1Zz46IHNlcnZpY2UuYmF0IGVjaG8gY29tbWFuZCB3aGVuIHdyb25nIGFyZ3VtZW50cyBnaXZlbiBbcGF0Y2ggYnkgUm9iZXJ0CiAgICAgICAgTG9uZ3Nvbl0gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM0NzQ5PC9idWc+OiBqc2Vzc2lvbmlkIGRyb3BwZWQgb24gdHJhaWxpbmcgc2xhc2ggKC8pIHJlZGlyZWN0IChyZW1tKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICAKICAgPHN1YnNlY3Rpb24gbmFtZT0iQ295b3RlIj4KICAgICA8Y2hhbmdlbG9nPgogICAgICAgPHVwZGF0ZT4KICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHNlY3JldCBmb3IgQUpQIEFQUiAocmVtbSkKICAgICAgIDwvdXBkYXRlPgogICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iSmFzcGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IE5QRSB3aXRoIGFuIGVycm9yIG1lc3NhZ2Ugd2hlbiBubyBKYXZhIGNvbXBpbGVyIGlzIGF2YWlsYWJsZSAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgUmVzdHJpY3QgU3lzdGVtIGVyciBzdHJlYW0gY2FwdHVyZSB0byB0aGUgQW50IGNvbXBpbGVyLCBhcyB0aGUgRWNsaXBzZSBjb21waWxlcgogICAgICAgIGRvZXMgbm90IG5lZWQgaXQgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIEpTUCBjb21waWxhdGlvbiBzcGVlZCBpbXByb3ZlbWVudCB1c2luZyB0YWcgbGlicmFyeSBpbmZvcm1hdGlvbiBjYWNoaW5nLCAKICAgICAgICBzdWJtaXR0ZWQgYnkgWGluZ2JvIEdhbyAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDxhZGQ+CiAgICAgICAgSW5pdGlhbCBjb250cmlidXRpb24gb2YgSlNUTCB0YWcgcGx1Z2lucyBzdXBwb3J0aW5nIHRoZSBjb3JlIHRhZyBsaWJyYXJ5IG9mCiAgICAgICAgSlNUTCwgc3VibWl0dGVkIGJ5IEppbmcgTGkgKHJlbW0pCiAgICAgIDwvYWRkPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIAogIDxzdWJzZWN0aW9uIG5hbWU9IkNsdXN0ZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM2NTQxPC9idWc+OiBTeW5jIGFsbCBzZXNzaW9uIGF0dHJpYnV0ZSBhY2Nlc3MgKHJlYWQgYW5kIHdyaXRlKSBhdCBEZWx0YVNlc3Npb24gKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzY1MTg8L2J1Zz46IENsYXNzbmFtZSB0eXBvcyBmb3Igc2VuZGVycywgc3VibWl0dGVkIGJ5IENocmlzdG9waCBCYWNoaHViZXItSGFsbGVyIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICA8YnVnPjM1NjEzPC9idWc+OiBBZGRlZCBGQVEgcXVlc3Rpb24gYW5kIGFuc3dlciBhYm91dCB0Y3BMaXN0ZW5BZGRyZXNzPSJhdXRvIiBhbmQgL2V0Yy9ob3N0cyAoeW9hdnMpCiAgICAgIDwvYWRkPgogICAgICA8dXBkYXRlPgogICAgICAgIE1vdmVkIEZBUSBzZWN0aW9uIGZvciBDbHVzdGVyaW5nIGZyb20gQ2x1c3RlcmluZyBIb3dUbyBwYWdlIHRvIGl0cyBvd24gRkFRIHBhZ2UuICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgCiAgPHN1YnNlY3Rpb24gbmFtZT0iV2ViYXBwcyI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8ZG9jcz4KICAgICAgICA8YnVnPjM2MzE5PC9idWc+OiBGaXggYnJva2VuIGxpbmsgdG8gREJDUCBkb2NzLCBzdWJtaXR0ZWQgYnkgWGF2aWVyIFBvaW5zYXJkIChyZW1tKQogICAgICA8L2RvY3M+CiAgICAgIDxkb2NzPgogICAgICAgIEJyYW5kIG5ldyBkZXBsb3llciBzcGVjcywgc3VibWl0dGVkIGJ5IEFsbGlzdGFpciBDcm9zc2xleSAocmVtbSkKICAgICAgPC9kb2NzPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogPC9zZWN0aW9uPgoKPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS4xMSAoeW9hdnMpIj4KICA8c3Vic2VjdGlvbiBuYW1lPSJHZW5lcmFsIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIHRvIFhlcmNlcyAyLjcuMSAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDxhZGQ+CiAgICAgICAgQWRkIHJlYWR5IHRvIGJ1aWxkIGJpbi90b21jYXQtbmF0aXZlLnRhci5neiBmb3IgdGhlIEFQUiBKTkkgd3JhcHBlciBsaWJyYXJ5IChyZW1tKQogICAgICA8L2FkZD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM1OTMwPC9idWc+OiBCYWQgbG9nZ2luZyBjb25maWcgdXNlZCBieSB0aGUgVG9tY2F0IFdpbmRvd3Mgc2VydmljZSAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgPGJ1Zz4zMzI2MTwvYnVnPjogV2luZG93cyBpbnN0YWxsZXIgbm93IGNoZWNrcyB0aGUgdXNlciB0eXBlIGFuZCB3YXJucyBub24tYWRtaW5zIGFzIG5lZWRlZC4gKHlvYXZzKQogICAgICA8L2FkZD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBUaGUgV2luZG93cyBpbnN0YWxsZXIgd2lsbCBub3cgb3B0aW9uYWxseSBkb3dubG9hZCBhICgzMmJpdCkgV2luZG93cyAuZGxsIGZvciBUb21jYXQgbmF0aXZlCiAgICAgICAgZnJvbSBIRUFuZXQgKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIERlY2xhcmF0aW9uIG9mIGpzcGMgQW50IHRhc2sgdG8gZml4IHRoZSBkZXBsb3llciBwYWNrYWdlIChyZW1tKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICAKICA8c3Vic2VjdGlvbiBuYW1lPSJDYXRhbGluYSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8YWRkPgogICAgICAgIEFkZCBjb25jdXJyZW5jeSBjb250cm9sIHZhbHZlIChvLmEuYy52YWx2ZXMuU2VtYXBob3JlVmFsdmUpLiBBcyB0aGUgVG9tY2F0IGRpc3RyaWJ1dGlvbiAKICAgICAgICBpcyBub3QgYnVpbHQgZm9yIEphdmEgNSwgdGhlIHZhbHZlIHdpbGwgaGF2ZSB0byBiZSBjb21waWxlZCBmcm9tIHRoZSBzb3VyY2VzIAogICAgICAgIHVzaW5nIEphdmEgNSAocmVtbSkKICAgICAgPC9hZGQ+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNTg4MDwvYnVnPjogSWdub3JlIEpTU0UxNVNvY2tldEZhY3Rvcnkgd2hlbiBnZW5lcmF0aW5nIEphdmFEb2MsIGFzIGl0IGJyZWFrcwogICAgICAgICAgdGhlIEpESyAxLjQgSmF2YURvYyB0b29sLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzU4NjU8L2J1Zz46IHNldGNsYXNzcGF0aC5zaCBjYW5ub3QgYmUgZXhjdXRpdmUgdW5kZXIgY3lnd2luLiAoZnVua21hbikKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMzI2NzwvYnVnPjogU2V0IHdvcmtpbmcgcGF0aCBpbiBzZXJ2aWNlIGluc3RhbGxlciwgYXMgc3VnZ2VzdGVkIGJ5IERvbWluaWsKICAgICAgICAgIERyemV3aWVja2kuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgPGJ1Zz4zNDc5NDwvYnVnPjogVXBkYXRlIGNvbm5lY3RvciBkb2N1bWVudGF0aW9uIHRvIGluY2x1ZGUgY2xpZW50QXV0aCBhdHRyaWJ1dGUuICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNTg5NDwvYnVnPiwgPGJ1Zz4zNjIyODwvYnVnPjogRml4IENORkUgd2hlbiBzdGFydGluZyBpbiBhIHNhbmRib3guIChiaWxsYmFya2VyLCByZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBBZGQgdmVyc2lvbiBjaGVjayBmb3IgVG9tY2F0IG5hdGl2ZSBzbyB0aGF0IGluY29tcGF0aWJsZSBBUEkgY2hhbmdlcyBhcmUgZGV0ZWN0ZWQgZWFybHkgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzYwMjA8L2J1Zz46IEFsbG93IE1lbW9yeVVzZXJEYXRhYmFzZSB0byB3b3JrIGJldHRlciBvbiB3cml0ZSBwcm90ZWN0ZWQgbWVkaXVtcywKICAgICAgICBzdWJtaXR0ZWQgYnkgUmFpbmVyIEp1bmcgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzU5Nzg8L2J1Zz46IEJhZCBoYW5kbGluZyBvZiBzaW5nbGUgcmFuZ2UgcmVxdWVzdHMgZ3JlYXRlciB0aGFuIDJHQiBpbiB0aGUgRGVmYXVsdFNlcnZsZXQKICAgICAgICAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNTk4NDwvYnVnPjogQ2xpZW50IGFib3J0IGV4Y2VwdGlvbnMgd2lsbCBub3cgdXNlIGdldENhdXNlIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggaGFuZGxpbmcgb2Ygbm9uLWZpbGUgYmFzZWQgaW5jbHVkZXMgd2l0aCBTU0ksIHN1Ym1pdHRlZCBieSBEYXZpZCBCZWNrZXIgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICAKICAgPHN1YnNlY3Rpb24gbmFtZT0iQ295b3RlIj4KICAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIEZpeCBkZWZhdWx0IHBvcnRzIGZvciBodHRwIGFuZCBodHRwcyB3aGljaCBhcmUgc2V0IGluIHRoZSByZXF1ZXN0IHdoZW4gdGhlIHBhcnNlZAogICAgICAgIGhvc3RuYW1lIGRvZXMgbm90IHNwZWNpZnkgdGhlIHBvcnQsIGFuZCB3aGljaCB3ZXJlIGludmVydGVkIChodHRwcyB3YXMgc2V0IGFzIDgwIAogICAgICAgIGFuZCBodHRwIGFzIDQ0MykuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBBZGQgbWlzc2luZyB0b21jYXRBdXRoZW50aWNhdGlvbiBhdHRyaWJ1dGUgdG8gdGhlIEFKUCBBUFIgaW1wbGVtZW50YXRpb24uIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBDaGVjayBmaWxlbmFtZSBzZW5kZmlsZSBhdHRyaWJ1dGUgb25seSBpZiBzZW5kZmlsZSBpcyBlbmFibGVkLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IG91dHB1dCBidWZmZXJpbmcgZm9yIEFQUiBBSlAgaW1wbGVtZW50YXRpb24uIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM1OTQxPC9idWc+OiBGaXggZ2V0UmVtb3RlQWRkciBmb3IgQVBSIEFKUCBpbXBsZW1lbnRhdGlvbi4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzU5NDI8L2J1Zz46IEZpeCBOUEUgcmV0cml2aW5nIGNpcGhlciBzdWl0ZSBhdHRyaWJ1dGUgd2hlbiBubyBjZXJ0aWZpY2F0ZSAKICAgICAgICB3YXMgc3VibWl0dGVkIChmb3IgZXhhbXBsZSB3aXRoIG5vIFNTTCkuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBJbnRlcm5hdGlvbmFsaXphdGlvbiBhbmQgY29kZSBjbGVhbnVwcyBmb3IgQVBSIEFKUCBpbXBsZW1lbnRhdGlvbi4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIFNlY3VyaXR5IGV4Y2VwdGlvbiBpbiBBUFIgQUpQIGltcGxlbWVudGF0aW9uIHdoZW4gcnVubmluZyB3aXRoIHRoZSBzZWN1cml0eQogICAgICAgIG1hbmFnZXIgZW5hYmxlZC4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzYxNzM8L2J1Zz46IEFkZCBtaXNzaW5nIHN5bmMgaW4gRmFzdEh0dHBEYXRlRm9ybWF0LmZvcm1hdERhdGUsIHN1Ym1pdHRlZCAKICAgICAgICBieSBBbGV4ZWkgS3JhaW5pb3VrIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBEaXNhYmxlIEhUVFAgY29tcHJlc3Npb24gd2hlbiBzZW5kZmlsZSBpcyB1c2VkIGZvciBhIHJlc291cmNlIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBBSlAgc2VjcmV0IGF0dHJpYnV0ZSByZXBvcnQgb25seSBhdCB0cmFjZSBsZXZlbC4gKHBlcm8pCiAgICAgIDwvZml4PgogICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iSmFzcGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNjEyNzwvYnVnPjogVmFsaWRhdGlvbiBjb21wYXRpYmlsaXR5IHdpdGggWGVyY2VzIDIuNy4xLCBzdWJtaXR0ZWQgCiAgICAgICAgYnkgRmxvcmVudCBCZW5vaXQgKHJlbW0pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIAogIDxzdWJzZWN0aW9uIG5hbWU9IkNsdXN0ZXIiPgogICAgPGNoYW5nZWxvZz4gICAgICAgIAogICAgICA8Zml4PgogICAgICAgIEZpeCBOUEUgd2hlbiBjbHVzdGVyIHN0b3BzIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM2MjE4PC9idWc+OiBNZW1vcnlSZWFsbSBub3cgc3VwcG9ydCBhbHNvIEdlbmVyaWNQcmluY2lwYWwsIGJ1dCAKICAgICAgICBKQUFTUmVhbG0gd2l0aCBjbHVzdGVyIHJlcGxpY2F0aW9uIHN0aWxsIGhhcyBhIHByb2JsZW0sIGRldGVjdGVkIGJ5IERpcmsgRGVrb2sgKHBlcm8pCiAgICAgIDwvZml4PiAgIAogICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICAKICA8c3Vic2VjdGlvbiBuYW1lPSJXZWJhcHBzIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiA8L3NlY3Rpb24+Cgo8c2VjdGlvbiBuYW1lPSJUb21jYXQgNS41LjEwICh5b2F2cykiPgogIDxzdWJzZWN0aW9uIG5hbWU9IkdlbmVyYWwiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGFkZD4KICAgICAgICAgQWRkIEpNWCByZW1vdGUgYW50IHRhc2sgdG8gY29udHJvbCB0b21jYXQgTUJlYW5zZXJ2ZXIgdmlhIGFudCBzY3JpcHRzLgogICAgICAgICBBbnQgbGliIGlzIGluY2x1ZGVkIGF0ICJzZXJ2ZXIvbGliL2NhdGFsaW5hLWFudC1qbXguamFyIiBhbmQgZG9jdW1lbnRhdGlvbgogICAgICAgICBpcyBhZGRlZCB0byA8YSBocmVmPSJtb25pdG9yaW5nLmh0bWwiPk1vbml0b3JpbmcgYW5kIE1hbmFnaW5nIFRvbWNhdCBIb3ctVG88L2E+IChwZXJvKQogICAgICA8L2FkZD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM0MzYxPC9idWc+OiBJbnRlZ3JhdGUgYmV0dGVyIGFudGxpYiBhbmQgaW1wb3J0IHN1cHBvcnQgZm9yIAogICAgICAgIGNhdGFsaW5hIG1hbmFnZXIgdGFza3MgW01vZGlmaWVkIHBhdGNoIGZyb20gRGFuaWVsIFNhbnRvc10gIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBTdG9yZUNvbmZpZyBzYXZlIG5vdyB0aGUgQ29ubmVjdG9yLnNzbFByb3RvY29sIGF0dHJpYnV0ZS4gKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIENoYW5nZSBsb2cgZGlyIGF0IHNlcnZpY2UuYmF0IHRvICIkQ0FUQUxJTkFfQkFTRS9sb2dzIiBmb3IgYmV0dGVyIG11bHRpIGluc3RhbmNlIHN1cHBvcnQuIChwZXJvKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICA8YnVnPjM0MjM3PC9idWc+OiBBZGRlZCBub3RlIGFuZCBsaW5rcyB0byBjb250ZXh0IGFuZCBob3N0IGNvbmZpZ3VyYXRpb24KICAgICAgICAgIHJlZmVyZW5jZXMgaW4gSk5ESSBEYXRhU291cmNlcyBIb3dUbyB0byBhaWQgdGhlIGNsdWVsZXNzLiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIDxidWc+MzQyNDg8L2J1Zz46IFVwZGF0ZSBKYXZhTWFpbCBkb3dubG9hZCBpbnN0cnVjdGlvbnMgdG8gaW5jbHVkZSBKQUYuICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIHRvIEpEVCBmcm9tIEVjbGlwc2UgMy4xLCB3aXRoIHN1cHBvcnQgZm9yIEphdmEgNSAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgUmVmYWN0b3JpbmcsIHJlZGVzaWduIGFuZCBleHRlbmQgdGhlIGNsdXN0ZXIgbW9kdWxlCiAgICAgICAgICAtIENsdXN0ZXIgY2FuIGJlIGNvbmZpZ3VyZWQgYXMgc3ViZWxlbWVudCBmcm9tIEVuZ2luZSBhbmQgSG9zdC4KICAgICAgICAgIC0gT3B0aW1pemVkIHBlcmZvcm1hbmNlIGFuZCByZWR1Y2UgbWVtb3J5IHVzYWdlCiAgICAgICAgICAtIEJldHRlciBKTVggc3VwcG9ydAogICAgICAgICAgLSBhZGQgYSBsb3Qgb2YgSk1YIHN0YXRzIGF0dHJpYnV0ZSBmb3IgYmV0dGVyIG1vbml0b3JpbmcgCiAgICAgICAgICAtIGFkZCBhIHNpbmdsZSBlbGVtZW50IGRlZmF1bHQgY2x1c3RlciBjb25maWd1cmF0aW9uCiAgICAgICAgICAtIG1vcmUgY29uZmlnIG9wdGlvbnMKICAgICAgICAgICAgIExpZmVjeWNsZUxpc3RlbmVyCiAgICAgICAgICAgICBDbHVzdGVyTGlzdGVuZXIKICAgICAgICAgICAgIG1vcmUgdGhhbiBvbmUgY2x1c3RlciB2YWx2ZXMKICAgICAgICAgIC0gYmV0dGVyIHN1YmNsYXNzIHN1cHBvcnQKICAgICAgICAgIC0gY2hhbmdlIGEgbG90IG9mIGV4aXN0aW5nIGNsdXN0ZXIgQVBJJ3MgKHBlcm8pCiAgICAgICA8L3VwZGF0ZT4KICAgICAgIDxhZGQ+CiAgICAgICAgIEFkZCBBcGFjaGUgUG9ydGFibGUgUnVudGltZSBKTkkgd3JhcHBlciBhbmQgaGVscGVyIEFQSSAobXR1cmspCiAgICAgICA8L2FkZD4KICAgICAgIDx1cGRhdGU+CiAgICAgICAgIFVwZGF0ZSBKVUxJIHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGFraW5nIG92ZXIgamF2YS51dGlsLmxvZ2dpbmcgYm9vdHN0cmFwIGNvbmZpZ3VyYXRpb24sCiAgICAgICAgIGFuZCBtb3ZlIHRoZSBkZWZhdWx0IHByb3BlcnRpZXMgZmlsZSB0byAke2NhdGFsaW5hLmJhc2V9L2NvbmYvbG9nZ2luZy5wcm9wZXJ0aWVzIChyZW1tKQogICAgICAgPC91cGRhdGU+CiAgICAgICA8Zml4PgogICAgICAgICA8YnVnPjM0NzQ2PC9idWc+OiBVcGRhdGVkIGNhdGFsaW5hLnByb3BlcnRpZXMgaW5zdHJ1Y3Rpb25zIHBlciBCaWxsIEVkd2FyZHMnIHN1Z2dlc3Rpb24uICh5b2F2cykKICAgICAgIDwvZml4PgogICAgICAgPGZpeD4KICAgICAgICAgPGJ1Zz4zNTA5MDwvYnVnPjogTWlub3IgZG9jdW1lbnRhdGlvbiB0eXBvIGZpeC4gKHlvYXZzKQogICAgICAgPC9maXg+CiAgICAgICA8Zml4PgogICAgICAgICA8YnVnPjM0OTMxPC9idWc+OiBSZXdyb3RlIFJPT1QvaW5kZXguanNwIHRvIGJlIFhIVE1MIHN0cmljdCBjb21wbGlhbnQsIHBlciBSaWNoYXJkCiAgICAgICAgICAgQmV0b24ncyBwYXRjaC4gKHlvYXZzKQogICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2F0YWxpbmEiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjIwMzgwPC9idWc+OiBBY2Nlc3MgbG9nIHRpbWVzdGFtcHMgbm93IHRha2UgYWNjb3VudCBvZiBEYXlsaWdodCBTYXZpbmcKICAgICAgICBUaW1lIChEU1QpLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIDxidWc+MzQyMjA8L2J1Zz46IFByb3ZpZGUgYmV0dGVyIGVycm9yIG1lc3NhZ2Ugd2hlbiBzZXJ2ZXIueG1sIGNhbid0IGJlIGxvY2F0ZWQuCiAgICAgICAgICBbTW9kaWZpZWQgcGF0Y2ggZnJvbSBSYWxmIEhhdXNlcl0gKHlvYXZzKQogICAgICA8L2FkZD4KICAgICAgPGFkZD4KICAgICAgICAgIEFkZCBNZXNzYWdlTGlzdGVuZXIgYW5kIExpZmVjeWxjZUxpc3RlbmVyIGNsdXN0ZXIgc2F2aW5nIHRvIHN0b3JlY29uZmlnIG1vZHVsZQogICAgICAgICAgKCZsdDtDbHVzdGVyIC4uLiAmZ3Q7Jmx0O0NsdXN0ZXJMaXN0ZW5lciBjbGFzc05hbWU9Im9yZy5hcGFjaGUuY2F0YWxpbmEuY2x1c3Rlci5zZXNzaW9uLkp2bVJvdXRlU2Vzc2lvbklEQmluZGVyTGlzdGVuZXIiICZndDspIChwZXJvKQogICAgICA8L2FkZD4gIAogICAgICA8Zml4PgogICAgICAgIDxidWc+MzM3NDM8L2J1Zz46IEFkZCBhZGRpdGlvbmFsIHN5bmNocm9uaXphdGlvbiBpbiB3ZWJhcHAgY2xhc3Nsb2FkZXIgdG8gYXZvaWQKICAgICAgICBwb3NzaWJsZSByYWNlIGNvbmRpdGlvbiB3aGVuIGRlZmluaW5nIGEgY2xhc3MgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzM3MTE8L2J1Zz46IEFkZCBldmVudHMgb24gcGFzc2l2YXRlIGFuZCBhY3RpdmF0ZSB0byBjbGVhbnVwIFNTTywgYW5kIHJlY3ljbGUKICAgICAgICBzZXNzaW9uIG9iamVjdHMgd2hlbiByZW1vdmluZyB0aGVtIGZyb20gYSBtYW5hZ2VyIChzbyB0aGF0IGFueW9uZSBrZWVwaW5nIHJlZmVyZW5jZXMKICAgICAgICB0byBpdCB3b3VsZCBsZWFrIGEgbWluaW1hbCBhbW91bnQgb2YgbWVtb3J5KSAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgUmUtYWRkIHBhdGNoIGNhdXNpbmcgU2Vzc2lvbi5nZXRJZCB0byB0aHJvdyBhbiBJU0UsIGFuZCBtYWtlIGFsbCBpbnRlcm5hbCBjb21wb25lbnRzCiAgICAgICAgdXNlIGEgc2FmZSBnZXRJZEludGVybmFsIG1ldGhvZCAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgU3RvcmUgcHJpbmNpcGFsIHRvIGJlIGV4cG9zZWQgZm9yIFJlcXVlc3QuZ2V0VXNlclByaW5jaXBhbCBpbnNpZGUgdGhlIEdlbmVyaWNQcmluY2lwYWwsCiAgICAgICAgdG8gcmVtb3ZlIGhhY2tzIGZyb20gdGhlIEpBQVMgcmVhbG0gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MTAzODU8L2J1Zz46IFNTSSBTZXJ2bGV0IG5vdyBpbmNsdWRlcyBiZXR0ZXIgc3VwcG9ydCBmb3IgZmlsZXMgdGhhdCB1c2UgY2hhcmFjdGVyCiAgICAgICAgZW5jb2RpbmdzIG90aGVyIHRoYW4gdGhlIHBsYXRmb3JtIGRlZmF1bHQuKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBSZW1vdmUgQ29weVBhcmVudENsYXNzTG9hZGVyIHJ1bGUsIHdoaWNoIGRvZXNuJ3Qgc2VlbSB0byBiZSBkb2luZyBhbnl0aGluZyB1c2VmdWwKICAgICAgICBhbnltb3JlLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgUHJvdmlkZSBhbiBTZXJ2bGV0RmlsdGVyIGltcGxlbWVudGF0aW9uIG9mIFNlcnZlciBTaWRlIEluY2x1ZGVzIChTU0kpLiBUaGlzIHdhcwogICAgICAgIHN1Ym1pdHRlZCBieSBEYXZpZCBCZWNrZXIgdW5kZXIgPGJ1Zz4zMzEwNjwvYnVnPi4gKG1hcmt0KQogICAgICA8L2FkZD4KICAgICAgPGFkZD4KICAgICAgICBBZGQgc2VuZGZpbGUgc3VwcG9ydCB0byBkZWZhdWx0IHNlcnZsZXQsIHdpdGggYSBzZW5kZmlsZVNpemUgY29uZmlndXJhdGlvbiBhdHRyaWJ1dGUuCiAgICAgICAgKHJlbW0pCiAgICAgIDwvYWRkPgogICAgICA8dXBkYXRlPgogICAgICAgIElmIEFQUiBhcyB3ZWxsIGFzIFRvbWNhdCdzIEpOSSB3cmFwcGVyIGZvciBBUFIgYXJlIHByZXNlbnQsIHVzZSBBUFJpemVkIHByb3RvY29sIGhhbmRsZXJzCiAgICAgICAgaW5zdGVhZCBvZiB0aGUgcmVndWxhciBvbmVzIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjIyNjE3PC9idWc+OiBXaGVuIHVzZWQgd2l0aCBhbiBFSkIgY29udGFpbmVyIGFuZCBhIHJlYWxtIHRoYXQgc3VwcG9ydHMgdGhlIGNvbmNlcHQKICAgICAgICBvZiBhbiB1bmF1dGhlbnRpY2F0ZWQgdXNlciAoSjJFRS4zLjQuMykgQkFTSUMgYXV0aGVudGljYXRpb24gd2FzIGFsd2F5cyBhdXRoZW50aWNhdGluZwogICAgICAgIHVzZXJzIGFzIHRoZSB1bmF1dGhlbnRpY2F0ZWQgdXNlciB3aXRob3V0IGdpdmluZyB0aGVtIGEgY2hhbmNlIHRvIHN1cHBseSBhIHVzZXJuYW1lIGFuZAogICAgICAgIHBhc3N3b3JkLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIFByZXZlbnQgZmFjYWRlIG9iamVjdHMgY2xvbmluZyAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQWRkIG1pc3NpbmcgQ0dJIHZhcmlhYmxlcyB0byBTU0kgc2VydmxldC4gUGF0Y2ggc3VibWl0dGVkIGJ5IEZyaXR6IFNjaG5laWRlci4gKG1hcmt0KQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM0NTc4PC9idWc+OiBVcGRhdGVkIEpORElSZWFsbSBjb21tZW50LiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzQyNzM8L2J1Zz46IEJldHRlciBCb290c3RyYXAgd2FybmluZyBtZXNzYWdlLiBbUGF0aCBmcm9tIFJhbGYgSGF1c2VyXSAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIDxidWc+MzQ2NzU8L2J1Zz46IFVwZGF0ZWQgUHJveHktSG93VG8gcGFnZSB3aXRoIFNlcnZsZXQgQVBJIGNhbGxzLiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzQ1NDY8L2J1Zz46IEZpeCBwcm9ibGVtIHdoZXJlIHRoZSAiZmlyc3QiIFZhbHZlIGNvdWxkbid0IGJlIHJlbW92ZWQgZnJvbSBhIFBpcGVsaW5lLiAoYmlsbGJhcmtlcikKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IE5QRSB3aGVuIFBPU1Qgc2l6ZSBleGNlZWRzIGxpbWl0IGRlZmluZWQgYnkgbWF4UG9zdFNpemUuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IEZPUk0gYXV0aGVudGljYXRpb24gc28gUE9TVGVkIHBhcmFtZXRlcnMgYXJlIG5vdCBhc3N1bWVkIHRvIGJlIGVuY29kZWQgd2l0aCBwbGF0Zm9ybQogICAgICAgIGRlZmF1bHQgZW5jb2RpbmcuIEEgc2lkZSBlZmZlY3Qgb2YgdGhpcyBmaXggaXMgdGhhdCB0aGUgYm9kaWVzIG9mIFBPU1QgcmVxdWVzdHMgdGhhdAogICAgICAgIHJlcXVpcmUgRk9STSBhdXRoZW50aWNhdGlvbiBhcmUgbm93IGJ1ZmZlcmVkIGFuZCBtYWRlIGF2YWlsYWJsZSBhZnRlciBhIHN1Y2Vzc2Z1bCBsb2dpbi4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM0ODQwPC9idWc+OiBCZXR0ZXIgaGFuZGxpbmcgb2YgZXh0ZXJuYWwgV0FScyByZWRlcGxveW1lbnQsIGFuZCBpZ25vcmUgZG9jQmFzZSBzcGVjaWZpZWQKICAgICAgICBpbiBjb250ZXh0IGZpbGUgaWYgd2l0aGluIHRoZSBIb3N0IGFwcEJhc2UgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCBoYW5kbGluZyBvZiBzeW1ib2xpYyBsaW5rcyB3aGVuIHRoZSBEZWZhdWx0U2VydmxldCBpcyBnZW5lcmF0aW5nIGRpcmVjdG9yeQogICAgICAgIGxpc3RpbmdzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzU3Njk8L2J1Zz46IENvcnJlY3QgaW1wbGVtZW50YXRpb24gb2YgamF2YXgubmFtaW5nLkNvbnRleHQuY29tcG9zZU5hbWUoIE5hbWUsIE5hbWUpCiAgICAgICAgaW4gbXVsdGlwbGUgcGxhY2VzLiBQYXRjaCBwcm92aWRlZCBieSBMYXVyZW50IFNpbW9uLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIDxidWc+MzQ4MDU8L2J1Zz46IEFkZCB3YXJuaW5nIGZvciBzdXNwaWNpb3VzIHNlY3VyaXR5IHBhdHRlcm5zLCBhcyBzdWdnZXN0ZWQgYnkgUmFsZiBIYXVzZXIuICh5b2F2cykKICAgICAgPC9hZGQ+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNTgxOTwvYnVnPjogVXNlIGdldFdvcmtQYXRoIGZvciBkZWxldGluZyB3b3JrIGRpcmVjdG9yeSBvbiBjb250ZXh0IGRlc3Ryb3ksIGFzIHN1Z2dlc3RlZAogICAgICAgICAgYnkgUm9iIFN0ZWVsZS4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICAKICAgPHN1YnNlY3Rpb24gbmFtZT0iQ295b3RlIj4KICAgICA8Y2hhbmdlbG9nPgogICAgICA8dXBkYXRlPgogICAgICAgIEFkZCBzdXBwb3J0IGZvciB1c2luZyAiU21hcnQgQ2FyZHMiIGFzIHRydXN0L2tleVN0b3JlLiAoYmlsbGJhcmtlcikKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQWRkIHNvbWUgTWJlYW4gYXR0cmlidXRlcyBhbmQgb3BlcmF0aW9ucyB0byBDaGFubmVsU29ja2V0IChwZXJvKQogICAgICA8L3VwZGF0ZT4gICAgCiAgICAgIDxhZGQ+CiAgICAgICAgQXBhY2hlIFBvcnRhYmxlIFJ1bnRpbWUgYmFzZWQgSFRUUC8xLjEgcHJvdG9jb2wgaGFuZGxlciwgd2l0aCBTU0wgc3VwcG9ydCAocmVtbSkKICAgICAgPC9hZGQ+CiAgICAgIDxhZGQ+CiAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHNpbXBsZSBmaWxlLWJhc2VkIENSTHMgdW5kZXIgSkRLIDEuNSAoYmlsbGJhcmtlcikKICAgICAgPC9hZGQ+CiAgICAgIDxhZGQ+CiAgICAgICAgQWRkIGV4cGVyaW1lbnRhbCBOSU8tU29ja2V0IGNoYW5uZWwgZm9yIHRoZSBBSlAvMS4zIENvbm5lY3RvciAoYmlsbGJhcmtlcikKICAgICAgPC9hZGQ+CiAgICAgIDxhZGQ+CiAgICAgICAgPGJ1Zz4zNDY0ODwvYnVnPjogQWRkIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIGVuYWJsZSBJUC1iYXNlZCBWaXJ0dWFsIEhvc3RzLiAoYmlsbGJhcmtlcikKICAgICAgPC9hZGQ+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgUmVmYWN0b3IgdGhlIEFKUC8xLjMgQ29ubmVjdG9yIHRvIGJlIGFibGUgdG8gaGFuZGxlIG1vcmUgYWR2YW5jZWQgQWN0aW9ucy4gKGJpbGxiYXJrZXIpCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIEZpeCBjb25uZWN0b3IgaW5pdGlhbGlzYXRpb24gc28gc3NsUHJvdG9jb2wgaXMgbm90IHJlcXVpcmVkIGZvciBTU0wuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgQWRkIGJ1ZmZlclNpemUgb3B0aW9uIHRvIHRoZSBBSlAvMS4zIEphdmEgY29ubmVjdG9yIHRvIGNvbnRyb2wgb3V0cHV0IGJ1ZmZlcmluZy4gKGJpbGxiYXJrZXIpCiAgICAgIDwvYWRkPgogICAgICA8YWRkPgogICAgICAgIEFwYWNoZSBQb3J0YWJsZSBSdW50aW1lIGJhc2VkIEFKUC8xLjMgcHJvdG9jb2wgaGFuZGxlciAocmVtbSkKICAgICAgPC9hZGQ+CiAgICAgIDxmaXg+CiAgICAgICAgRGVsYXkgcmVhZGluZyB0aGUgaW5pdGFsIHJlcXVlc3QgYm9keSBwYWNrZXQgYnkgZGVmYXVsdCBmb3IgdGhlIEFKUC8xLjMgSmF2YSBjb25uZWN0b3IuIChiaWxsYmFya2VyKQogICAgICA8L2ZpeD4KICAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9Ikphc3BlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MTg0Nzc8L2J1Zz46IEFsbG93IHN5bWJvbGljIGxpbmtzIHdoZW4gcHJlY29tcGlsaW5nIEpTUHMgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICA8YnVnPjM0MjcyPC9idWc+OiBBbGxvdyBzcGVjaWZ5aW5nIHRoZSBPcHRpb24gY2xhc3MgdXNlZCBieSB0aGUgSmFzcGVyIGVuZ2luZSwKICAgICAgICBzdWJtaXR0ZWQgYnkgU2NvdHQgU3RhcmsgKHJlbW0pCiAgICAgIDwvYWRkPgogICAgICA8YWRkPgogICAgICAgIFN1cHBvcnQgZm9yIEphdmEgNS4wIGluIEpTUHMgKHJlbW0pCiAgICAgIDwvYWRkPgogICAgICA8dXBkYXRlPgogICAgICAgIEphdmEgNSB3aWxsIGJlIHRoZSBzb3VyY2UgYW5kIHRhcmdldCBmb3IgSlNQcyB3aGVuIHJ1bm5pbmcgb24gSmF2YSA1IChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICA8YnVnPjM0NjUyPC9idWc+OiBBZGQgdGhlIGFiaWxpdHkgdG8gZ2V0IFNNQVBzIHdoZW4gcHJlY29tcGlsaW5nLCBzdWJtaXR0ZWQgYnkKICAgICAgICBEYXJ5bCBSb2JiaW5zIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM0NDY1PC9idWc+OiBKc3BjIGZhaWx1cmUgaWYgdGhlcmUgaXMgbm8gd2ViLnhtbCAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNTY5NjwvYnVnPjogTWFrZSBjZXJ0YWluIHRoYXQgcmVsZWFzZSBpcyBjYWxsZWQgZm9yIGN1c3RvbSB0YWdzIAogICAgICAgICB3aGVuIHRhZy1wb29saW5nIGlzIGRpc2FibGVkLiAoYmlsbGJhcmtlcikKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNTM4NjwvYnVnPjogTWFrZSB1c2VCZWFuIHJlc291cmNlcyB1c2UgY29uc2lzdGVudCBzcGVsbGluZywgZnJvbSBLdXJ0IEh1d2lnLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIDxidWc+MzM1MjI8L2J1Zz46IFVwZGF0ZSBqYXNwZXItaG93dG8gdG8gcmVmbGVjdCB1c2Ugb2YgamF2YWMgc3dpdGNoLiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgICA8YWRkPgogICAgICAgIDxidWc+MzUxMTQ8L2J1Zz46IEFkZCBmYWlsT25FcnJvciBmbGFnIHRvIEpzcEMsIGJ5IHppd2V0aC4gKHlvYXZzKQogICAgICA8L2FkZD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM1NDEwPC9idWc+OiBGaXhlZCBOUEUgaW4gSnNwV3JpdGVySW1wbC4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICA8YnVnPjM1NTcxPC9idWc+OiBKc3BDIHJlc29sdmVkIHVyaVJvb3QgcmVsYXRpdmUgdG8gQW50IHByb2plY3QgYmFzZWRpciwgaWYgYW55LCBhcyBzdWdnZXN0ZWQKICAgICAgICAgIGJ5IEphc29uIFBldHRpc3MuICh5b2F2cykKICAgICAgPC9hZGQ+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2x1c3RlciI+CiAgICA8Y2hhbmdlbG9nPiAgICAgICAgCiAgICAgIDxhZGQ+CiAgICAgICAgQWRkIHRoYXQgY2x1c3RlciBjYW4gY29uZmlndXJlIGFzIEVuZ2luZSBhbmQgSG9zdCBlbGVtZW50LiAocGVybykKICAgICAgPC9hZGQ+ICAgICAgCiAgICAgIDxhZGQ+CiAgICAgICAgQWRkIHNpbmdsZSBjbHVzdGVyIGRlZmF1bHQgY29uZmlndXJhdGlvbiBlbGVtZW50IC0gZGlzY3Vzc2VkIGF0IEpBWCAyMDA1IGNvbmZlcmVuY2UgQ2x1c3RlciBXb3Jrc2hvcC4gKHBlcm8pCiAgICAgIDwvYWRkPiAgICAgIAogICAgICA8Zml4PgogICAgICAgIEZpeCByZXNlbmQgR0VUX0FMTF9TRVNTSU9OUyB3aGVuIHdhaXQgQUNLIGZhaWxlZCBhdCByZWNlaXZlciBzaWRlIChwZXJvKQogICAgICA8L2ZpeD4gIAogICAgICA8Zml4PgogICAgICAgIENsdXN0ZXJWYWx2ZSBub3cgcmVtb3ZlIGZyb20gY29udGFpbmVyIGVsZW1lbnQgd2hlbiBjbHVzdGVyIHN0b3BzIGFuZCBhZGRlZCB3aXRoIG5leHQgc3RhcnQgYWdhaW4uIChwZXJvKQogICAgICA8L2ZpeD4gICAgIAogICAgICA8YWRkPgogICAgICAgIFNldCB0aW1lc3RhbXAgb25seSBhdCBmaXJzdCB0aW1lIGluc2lkZSBTZXNzaW9uTWVzc2FnZUltcGwgKHBlcm8pCiAgICAgIDwvYWRkPiAgICAKICAgICAgPGFkZD4KICAgICAgIFNldCB0aW1lc3RhbXAgZnJvbSBmaW5kc2Vzc2lvbnMgbWV0aG9kIGNhbGwsIHdoZW4gaGFuZGxpbmcgR0VUX0FMTF9TRVNTSU9OCiAgICAgICB0byBhbGwgU0VORF9TRVNTSU9OX0RBVEEgYW5kIFRSQU5TRkVSIGNvbXBsZXRlIG1lc3NhZ2VzLiAocGVybz4KICAgICAgPC9hZGQ+CiAgICAgIDxhZGQ+IAogICAgICAgRHJvcCBhbGwgcmVjZWl2ZWQgbWVzc2FnZSBpbnNpZGUgR0VUX0FMTF9TRVNTSU9OIG1lc3NhZ2UgcXVldWUgYmVmb3JlIHN0YXRlIAogICAgICAgdHJhbnNmZXIgbWVzc2FnZSB0aW1lc3RhbXAuIChwZXJvKQogICAgICA8L2FkZD4gICAgICAKICAgICAgPGFkZD4KICAgICAgICBDbHVzdGVyIHBpbmcgbm93IHRyYW5zZmVyIGNsdXN0ZXIgZG9tYWluIGluZm9ybWF0aW9uIGFuZCBEZWx0YU1hbmFnZXIgb25seQogICAgICAgIHNlbmQgYW5kIHJlY2VpdmUgbWVzc2FnZSBmcm9tIHNhbWUgZG9tYWluIG1lbWJlcnMgKHBlcm8pCiAgICAgIDwvYWRkPiAgICAgIAogICAgICA8YWRkPgogICAgICAgIEpNWCBTdXBwb3J0IGZvciBNY2FzdFNlcnZpY2UgKE1lbWJlcnNoaXApIChwZXJvKQogICAgICA8L2FkZD4gICAgICAKICAgICAgPGFkZD4KICAgICAgICBSZWRlc2lnbiBTaW1wbGVUY3BDbHVzdGVyIG1lc3NhZ2UgcmVjZWl2aW5nIHRvIENsdXN0ZXJSZWNlaXZlckJhc2UgKHBlcm8pCiAgICAgIDwvYWRkPiAgICAgIAogICAgICA8YWRkPgogICAgICAgIENsdXN0ZXIgdHJhbnNmZXIgYWxsIGF0dHJpYnV0ZXMgdG8gdGhlIGdlbmVyYXRlIHNlc3Npb24gbWFuYWdlciBhdCBhZGRNYW5hZ2VyLiAKICAgICAgICBSZW1vdmUgc29tZSB1bnVzZWQgYXR0cmlidXRlcyBhdCBTaW1wbGVUY3BDbHVzdGVyIGFuZCBSZXBsaWNhdGlvblRyYW5zbWl0dGVyIChwZXJvKQogICAgICA8L2FkZD4gICAgCiAgICAgIDx1cGRhdGU+CiAgICAgICAgUmVmYWN0b3IgRGVsdGFNYW5hZ2VyOgogICAgICAgICAgLSBjcmVhdGVTZXNzaW9uIGNhbGwgbm93IE1hbmFnZXJCYXNlIHN1cGVyIGNsYXNzIG1ldGhvZAogICAgICAgICAgLSBleHRyYWN0IHNvbWUgbG9uZyBtZXRob2RzCiAgICAgICAgICAtIHNlbmQgR0VUX0FMTF9TRVNTSU9OIHdpdGggc2Vzc2lvbiBibG9ja3MKICAgICAgICAgIC0gZG9uJ3Qgc3luYyBzZXNzaW9ucyBtYXAgd2hlbiBzZW5kIGFsbCBzZXNzaW9ucyAocGVybykgIAogICAgICA8L3VwZGF0ZT4gICAgICAgICAgCiAgICAgIDx1cGRhdGU+CiAgICAgICAgQWRkIGRldmVsb3BlciBhY3Rpb25zIGF0IHRvLWRvLnR4dCAoUHJvcG9zYWwgb2YgY2hhbmdlcykgKHBlcm8pICAKICAgICAgPC91cGRhdGU+ICAgICAgICAgIAogICAgICA8dXBkYXRlPgogICAgICAgIFNtYWxsIHJlZmFjdG9yaW5ncyBhdCBGYXN0QXN5bmNTb2NrZXRTZW5kZXIgKHBlcm8pICAKICAgICAgPC91cGRhdGU+ICAgICAgICAgIAogICAgICA8dXBkYXRlPgogICAgICAgIFJlZGVzaWduIGNsdXN0ZXIgbWVzc2FnZSBzZW5kaW5nIHRvIGxlc3NlciBjcHUgYW5kIG1lbW9yeSB1c2FnZS4gCiAgICAgICAgU2V0IGF0IFJlcGxpY2F0aW9uVHJhbnNtaXR0ZXIjY29tcHJlc3M9ZmFsc2UgYXMgZGVmYXVsdC4gQ2hhbmdlIEFQSSBmcm9tCiAgICAgICAgQ2x1c3RlclNlbmRlciwgUmVwbGljYWl0b25UcmFuc21pdHRlciwgRGF0YVNlbmRlciwgU2ltcGxlVGNwQ2x1c3RlciAocGVybykgIAogICAgICA8L3VwZGF0ZT4gICAgICAgICAgCiAgICAgIDxhZGQ+CiAgICAgICAgRGVsdGFNYW5hZ2VyIGhhcyBub3cgSk1YIGV4cGlyZUFsbExvY2FsU2Vzc2lvbnMgYW5kIHByb2Nlc3NFeGlwcmUgb3BlcmF0aW9uIAogICAgICAgIGZvciBiZXR0ZXIgY2x1c3RlciBub2RlIHNodXRkb3duIGhhbmRsaW5nICh1c2VmdWxsIGZvciB0ZXN0aW5nIG9ubHkpIChwZXJvKSAgIAogICAgICA8L2FkZD4gIAogICAgICA8YWRkPgogICAgICAgIERhdGFTZW5kZXIgZG9XYWl0QWNrU3RhdHMgZm9yIGJldHRlciB1bmRlcnN0YW5kaW5nIHdhaXQgYWNrIHByb2JsZW1zIChwZXJvKSAgIAogICAgICA8L2FkZD4gIAogICAgICA8dXBkYXRlPgogICAgICAgIFJlZmFjdG9yIERlbHRhTWFuYWdlciBhbmQgYWRkIGNvdW50ZXIgZm9yIGNsdXN0ZXIgbWVzc2FnZSBzZW5kL3JlY2VpdmUgbWVzc2FnZSAocGVybykgIAogICAgICA8L3VwZGF0ZT4gICAgICAgICAgCiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNDM4OTwvYnVnPjpQb3J0aW5nIENsdXN0ZXJpbmcgZml4IHBhY2sgdG8gNS41LjEwIGNvZGUgYmFzZS4KICAgICAgICBSZW1vdmUgc3luY2hvbml6ZWQgZnJvbSBEYXRhU2VuZGVyLnB1c2hNZXNzYWdlKCkuIFZlcnkgb2ZmZW4gdGhlIAogICAgICAgIGNvbXBsZXRlIGNsdXN0ZXIgYmxvY2tpbmcgYWZ0ZXIgcmVwbGljYXRlZCBhIGJ1bGsgb2YgbmV3IHNlc3Npb24gbWVzc2FnZXMgdW5kZXIgaGVhdnkgbG9hZC4KICAgICAgICBBbGwgY2x1c3RlciBub2RlIHN0YW5kaW5nIGZvciBhIGxvdCBvZiB0aW1lIGFuZCBtYWRlIG5vdGhpbmcuIAogICAgICAgIEZpeCBpdCBmb3IgcG9vbGVkLCBhc3luY2hyb25vdXMgYW5kIGZhc3Rhc3luY3F1ZXVlIHJlcGxpY2F0aW9uIG1vZGUuIFZlcnkgYmFkIHRoaW5nLCBzb3JyeSEgKHBlcm8pICAKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgQWRkIG5vdGlmeVNlc3Npb25MaXN0ZW5lcnNPblJlcGxpY2F0aW9uIGF0dHJpYnV0ZSB0byBTaW1wbGVUY3BDbHVzdGVyIHRvIHN0b3Agbm90aWZ5IAogICAgICAgIGV2ZW50IHRvIFNlc3Npb25MaXN0ZW5lciBhdCBiYWNrdXAgbm9kZXMgZnJvbSBjcmVhdGUgYW5kIGRlc3Ryb3kgcmVwbGljYXRlZCBzZXNzaW9uIChwZXJvKQogICAgICA8L2FkZD4KICAgICAgPGFkZD4KICAgICAgICBBZGQgY29tcHJlc3MgYXR0cmlidXRlIHRvIENsdXN0ZXJTZW5kZXIgYW5kIENsdXN0ZXJSZWNlaXZlciBpbnRlcmZhY2UuIE5vdyBjb21wcmVzcyBjb25maWcKICAgICAgICB0cmFuc2ZlciBmcm9tIHNlbmRlciB0byByZWNlaXZlciBhdCBTaW1wbGVUY3BDbHVzdGVyLiAocGVybykgCiAgICAgIDwvYWRkPiAgICAKICAgICAgPGFkZD4KICAgICAgICBBZGQgQ2x1c3RlclZhbHZlIGludGVyZmFjZSBhbmQgaW1wbGVtZW50IGl0IGFzIFJlcGxpY2F0aW9uVmFsdmUgYW5kIEp2bVJvdXRlQmluZGVyVmFsdmUuIE5vdyBib3RoCiAgICAgICAgVmFsdmVzIGNhbiBiZSBkaXJlY3RseSBjb25maWd1cmVkIGF0IHNlcnZlci54bWwgSG9zdC9DbHVzdGVyL1ZhbHZlIHN1YmVsZW1lbnRzLgogICAgICAgIEFsc28gdGhpcyBjb25maWd1cmF0aW9uIGFyZSBjb3JyZWN0bHkgaGFuZGxlZCB3aXRoIHRoZSBTdG9yZUNvbmZpZyBtb2R1bGUuIChwZXJvKSAgCiAgICAgIDwvYWRkPiAgICAKICAgICAgPHVwZGF0ZT4KICAgICAgICBEZWFjdGl2YXRlIERhdGFTZW5kZXIga2VlcEFsaXZlTWF4UmVxdWVzdENvdW50IGNoYW5nZSBkZWZhdWx0IHRvIC0xLiAKICAgICAgICBDbHVzdGVyIHJlcGxpY2F0aW9uIHNvY2tldHMgYXJlIGZhc3QgYW5kIHZlcnkgc3RhYmxlISAocGVybykgIAogICAgICA8L3VwZGF0ZT4gICAgICAgICAgCiAgICAgIDx1cGRhdGU+CiAgICAgICAgU2V0dXAgSnZtUm91dGVCaW5kZXJWYWx2ZSBhcyBob3N0IHZhbHZlIGluc3RlYWQgY29udGV4dCB2YWx2ZS4gUmVmYWN0b3IgdGhlIEFQSSBhIGxpdHRsZSBiaXQuIChwZXJvKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICBEb24ndCBpbmNyZW1lbnQgb3BlbiBzb2NrZXQgY291bnRlciBiZWZvcmUgc29ja2V0IGlzIHJlYWxseSBvcGVuLiBBZGQgc29ja2V0IG9wZW4gZmFpbHVyZXMgY291bnRlciAocGVybykgCiAgICAgIDwvZml4PiAgCiAgICAgIDxhZGQ+CiAgICAgICAgQWRkIE1lc3NhZ2VMaXN0ZW5lciBzdXBwb3J0IHRvIGNsdXN0ZXIgc2VydmVyLnhtbCBlbGVtZW50IChDbHVzdGVyTGlzdGVuZXIpIHRvIAogICAgICAgIHJlZ2lzdGVyIHlvdXIgb3duIGNsdXN0ZXIgbWVzc2FnZSByZWNlaXZlciAocGVybykKICAgICAgPC9hZGQ+ICAKICAgICAgPGFkZD4KICAgICAgICBBZGQgTGlmZWN5Y2xlTGlzdGVuZXIgc3VwcG9ydCB0byBjbHVzdGVyIHNlcnZlci54bWwgZWxlbWVudCAoTGlzdGVuZXIpCiAgICAgICAgYW5kIG5vdGlmeSB0aG9zZSBsaXN0ZW5lciBmcm9tIHN0YXJ0L3N0b3AgY2x1c3RlciwKICAgICAgICBhZGQvcmVtb3ZlIHNlc3Npb24gbWFuYWdlciwgc2VuZGluZyBmYXVsdCBhbmQgc3RhcnQvc3RvcCBtZW1iZXIgIChwZXJvKQogICAgICA8L2FkZD4gIAogICAgICA8YWRkPgogICAgICAgIEFkZCBhY3RpdmUgYmFja2dyb3VuZFByb2Nlc3Mga2VlcEFsaXZlIHRpbWVvdXQgYW5kIHJlcXVlc3QgY291bnQgc29ja2V0IGNsb3NlIGNoZWNrCiAgICAgICAgYXQgUmVwbGljYXRpb25UcmFuc21pdHRlci4gIENoZWNrIGZyZXF1ZW5jeSBjYW4gYmUgY2hhbmdlIHdpdGggYXR0cmlidXRlIAogICAgICAgIHByb2Nlc3NTZW5kZXJGcmVxdWVuY3kgKGRlZmF1bHQgMikuIChwZXJvKQogICAgICA8L2FkZD4KICAgICAgPGFkZD4KICAgICAgICBSZW1vdmUgdXNlbGVzcyBKZGsxM1JlcGxpY2F0aW9uTGlzdGVuZXIsSmRrMTNPYmplY3RSZWFkZXIuIAogICAgICAgIEFkZCBTb2NrZXRSZXBsaWNhdGlvbkxpc3RlbmVyIGFuZCBTb2NrZXRPYmplY3RSZWFkZXIgdG8gaGF2ZSBuYXRpdiBzb2NrZXQgQ2x1c3RlclJlY2VpdmVyLiAKICAgICAgICBBbHNvIGV4dHJhY3QgQ2x1c3RlclJlY2VpdmVyQmFzZSBzdXBlcmNsYXNzIGZvciBTb2NrZXRSZXBsaWNhdGlvbkxpc3RlbmVyIGFuZCBSZXBsaWNhdGlvbkxpc3RlbmVyIChwZXJvKSAKICAgICAgPC9hZGQ+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQWRkIGFuZCB1cGRhdGUgc29tZSBBUEkgYW5kIHRoZSA8YSBocmVmPSJjbHVzdGVyLWhvd3RvLmh0bWwiPmNsdXN0ZXIgaG93dG8gZG9jdW1lbnRhdGlvbjwvYT4gKHBlcm8pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFJlZmFjdG9yIFJlcGxpY2F0aW9uVmFsdmUgZm9yIGJldHRlciB1bmRlcnN0YW5kaW5nIGFuZCBzbWFsbCBvcHRpbWl6YXRpb24gKHBlcm8pCiAgICAgIDwvdXBkYXRlPgogICAgICA8YWRkPgogICAgICAgIFN0YXJ0aW5nIGEgdW5pdCB0ZXN0IHN1aXRlIGZvciBjbHVzdGVyIG1vZHVsZSAtIHZlcnkgbXVjaCB0b2RvIChwZXJvKQogICAgICA8L2FkZD4KICAgICAgPGZpeD4KICAgICAgICBGaXggYW50IGJ1aWxkLnhtbCB0byBkaXJlY3QgY29tcGlsZSBhdCBjbHVzdGVyIG1vZHVsZSBkaXJlY3RvcnkgKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCBzb21lIEkxOE4gbWVzc2FnZXMsIGJ1dCBhIGxvdCBvZiB3b3JrIGlzIHdhaXRpbmcgZm9yIGZpeCAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgQWRkIFJlcGxpY2F0aW9uVmFsdmUgTWJlYW5zIHN0YXRzIGF0dHJpYnV0ZSBnZXR0ZXIgYW5kIHJlc2V0U3RhdGlzdGljcyBvcGVyYXRpb24gKHBlcm8pCiAgICAgIDwvYWRkPgogICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICAKICA8c3Vic2VjdGlvbiBuYW1lPSJXZWJhcHBzIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNTc1ODwvYnVnPjogQWRtaW4gd2ViYXBwIG1pc2hhbmRsaW5nIGRpZ2VzdCBhdHRyaWJ1dGUgb2YgSkRCQ0RhdGFTb3VyY2VSZWFsbS4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICA8YnVnPjM0MjUwPC9idWc+OiBBZG1pbiB3ZWJhcHAgQ29tbWl0IENoYW5nZXMgYnV0dG9uIG5vdyBhc2tzIGZvciBjb25maXJtYXRpb24uICh5b2F2cykKICAgICAgPC9hZGQ+CiAgICAgIDxhZGQ+CiAgICAgICAgPGJ1Zz4zNDgxODwvYnVnPjogQWx0ZXJuYXRpbmcgcm93IGZvciBhcHBzIGluIEhUTUwgbWFuYWdlciwgYXMgc3VnZ2VzdGVkIGJ5IEplZmYKICAgICAgICAgIERvbWV5ZXIuICh5b2F2cykKICAgICAgPC9hZGQ+CiAgICAgIDxhZGQ+CiAgICAgICAgPGJ1Zz4zNTM3OTwvYnVnPjogQWRkZWQgY29tbW9ucy1sb2dnaW5nIHRvIGJ1aWxkIHBhdGggb2YgbWFuYWdlciBhbmQgaG9zdC1tYW5hZ2VyIGFwcHMsCiAgICAgICAgICB0byBtYWtlIHRoZW0gYnVpbGQgd2l0aCBKaWtlcywgYXMgc3VnZ2VzdGVkIGJ5IEFhcm9uIElzb3R0b24uICh5b2F2cykKICAgICAgPC9hZGQ+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiA8L3NlY3Rpb24+Cgo8c2VjdGlvbiBuYW1lPSJUb21jYXQgNS41LjkgKHlvYXZzKSI+CiAgPHN1YnNlY3Rpb24gbmFtZT0iR2VuZXJhbCI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8YWRkPgogICAgICAgIEFkZCBKVUxJLCBhIGphdmEudXRpbC5sb2dnaW5nIGltcGxlbWVudGF0aW9uLCB1c2VkIHRvIHByb3ZpZGUgc2FuZSBkZWZhdWx0cyBhbmQKICAgICAgICBjb25maWd1cmFiaWxpdHkgZXF1aXZhbGVudCB0byBUb21jYXQgNC4wIGZvciBUb21jYXQgNS41IGxvZ2dpbmcgKHJlbW0pCiAgICAgIDwvYWRkPgogICAgICA8ZG9jcz4KICAgICAgICBBZGQgSlVMSSBkb2N1bWVudGF0aW9uIHRvIHRoZSBsb2dnaW5nIHBhZ2UgKHJlbW0pCiAgICAgIDwvZG9jcz4KICAgICAgPGFkZD4KICAgICAgICBBZGQgaG9zdCBtYW5hZ2VyIHdlYmFwcCAocmVtbSkKICAgICAgPC9hZGQ+CiAgICAgIDxhZGQ+CiAgICAgICAgQWRkIGFudCBKa1N0YXR1c1VwZGF0ZVRhc2sgZm9yIHJlbW90ZSBzdGF0dXMgd29ya2VyIGhhbmRsaW5nICggPj1tb2RfamsgMS4yLjkpIChwZXJvKQogICAgICA8L2FkZD4KICAgICAgPGFkZD4KICAgICAgICA8YnVnPjMzNzM5PC9idWc+OiBBZGQgcmVmZXJlbmNlIHRvIFJVTk5JTkcudHh0IGluIHNldHVwLmh0bWwuICh5b2F2cykKICAgICAgPC9hZGQ+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMzcxOTwvYnVnPjogVXBkYXRlIHJlZmVyZW5jZSB0byBBbnQgZG93bmxvYWQgcGFnZS4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMzODgzPC9idWc+OiBCYWQgb3B0aW9ucyBpbiBTU0wtSG93VG8uICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIHRvIE1YNEogMy4wLjEgKHBlcm8pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIDxidWc+MzQxMzk8L2J1Zz46IFVwZGF0ZWQgUmVhbG0tSG93VG8gdG8gc3BlY2lmeSBKTVgsIENvbW1vbnMtTG9nZ2luZyBqYXJzIGZvciBSZWFsbUJhc2UuICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICAgIDxhZGQ+CiAgICAgICAgPGJ1Zz4zMzMyNTwvYnVnPjogQWRkZWQgdG9wLWxldmVsIGNsZWFuIHRhcmdldCB0byBOZXRidWlsZCBidWlsZC54bWwgZmlsZS4gKHlvYXZzKQogICAgICA8L2FkZD4KICAgICAgPHVwZGF0ZT4KICAgICAgICA8YnVnPjMzNzU1PC9idWc+OiBDbGFyaWZpZWQgUG9zdGdyZXNxbCBKTkRJIGRhdGFzb3VyY2UgZXhhbXBsZS4gW3BhdGNoIHN1Ym1pdHRlZCBieQogICAgICAgICAgVG9tIFdpdG1lcl0gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgIDwvY2hhbmdlbG9nPgogICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9IkNhdGFsaW5hIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgUmVtb3ZlIHNvbWUgaW5zdGFuY2VzIG9mIGV4cGFuZGVkIGZvbGRlciByZW1vdmFsIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBEb24ndCBjYWxsIG1rZGlycyBpZiB3ZSdyZSBub3QgZ29pbmcgdG8gc2F2ZSB0aGUgY29uZmlndXJhdGlvbiBpbiBTdGFuZGFyZENvbnRleHQgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCBjb250ZXh0IGNsYXNzbG9hZGVyIGJpbmRpbmcgZHVyaW5nIGxvYWRlciBpbml0aWFsaXphdGlvbiAoaXQgd2FzIHNldCB0byBudWxsIGJlZm9yZSkgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIFRoZSB3ZWJhcHAgbG9nZ2VyIHNob3VsZCBvbmx5IGJlIHJldHJpZXZlZCB3aGVuIHRoZSBjb250ZXh0IGNsYXNzbG9hZGVyIGlzIHNldCB0byB0aGUgCiAgICAgICAgd2ViYXBwJ3MgY2xhc3Nsb2FkZXIgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzQxNzA8L2J1Zz46IEFkZCBiYWNrIHJldHJ5IGxvZ2ljIGluIEpEQkMgcmVhbG0gaW4gY2FzZSBvZiBhIGNvbm5lY3Rpb24gZmFpbHVyZSAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4yMjA0MTwvYnVnPjogU3VwcG9ydCBkeW5hbWljIHByb3hpZXMgYXMgc2Vzc2lvbiBvYmplY3RzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCBsb2dnZXIgbmFtZXMgZm9yIHdyYXBwZXJzIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM0MDA2PC9idWc+OiBJZiBhbnRpUmVzb3VyY2VMb2NraW5nIHdhcyB1c2VkLCBIb3N0Q29uZmlnIGNvbnNpZGVyZWQgdGhlIHBhdGggYXMgZXh0ZXJuYWwsCiAgICAgICAgYW5kIHdlYiBhcHBsaWNhdGlvbiByZXNvdXJjZXMgd2VyZSBub3QgY29ycmVjdGx5IHJlbW92ZWQgb3IgdGFja2VkOyBhbHNvIHNpbXBsaWZ5IHRoZSBjb2RlIGEgbG90CiAgICAgICAgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzQwMTY8L2J1Zz46IFNhdmUgYW5kIHJlc3RvcmUgZG9jQmFzZSB3aGVuIHVzaW5nIGFudGlSZXNvdXJjZUxvY2tpbmcsIGZvciBjb21wYXRpYmlsaXR5IHdpdGgKICAgICAgICB0aGUgYWRtaW4gd2ViYXBwIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICA8YnVnPjMzNjM2PC9idWc+OiBTZXQgbGFzdE1vZGlmaWVkIGF0dHJpYnV0ZSB3aGVuIGV4cGFuZGluZyBXQVIgZmlsZXMuICh5b2F2cykKICAgICAgPC9hZGQ+CiAgICAgIDxhZGQ+CiAgICAgICAgPGJ1Zz4zMjkzODwvYnVnPjogQWxsb3cgU2FsdGVkIFNIQSAoU1NIQSkgcGFzc3dvcmRzIGluIEpORElSZWFsbS4gKHlvYXZzKQogICAgICA8L2FkZD4KICAgICAgPGFkZD4KICAgICAgICA8YnVnPjMxMjg4PC9idWc+OiBBbGxvdyBTTVRQIGF1dGhlbnRpY2F0aW9uIGZvciBKTkRJIE1haWxTZXNzaW9uRmFjdG9yeS4gKHlvYXZzKQogICAgICA8L2FkZD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBIYXJtb25pemUgcHJvY2Vzc2luZyBvZiB0aGUgY29udGV4dC54bWwgZGVmYXVsdHMgd2l0aCB0aGUgd2F5IHdlYi54bWwgaXMgcHJvY2Vzc2VkCiAgICAgICAgKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIElnbm9yZSAnOycgaWYgaXQgaXMgaW4gdGhlIHF1ZXJ5IHN0cmluZyAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgcHJpdmF0ZSB0byBwcm90ZWN0ZWQgZm9yIHRoZSB3ZWJhcHAgY2xhc3Nsb2FkZXIgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEltcHJvdmUgbG9nZ2luZyBvZiBmaWx0ZXJzIGFuZCBsaXN0ZW5lcnMgc3RhcnR1cCBlcnJvcnMgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzM3NzQ8L2J1Zz46IFJldHJ5IG9uY2UgaW4gSk5ESSByZWFsbSBhdXRoZW50aWNhdGUgZmFpbHVyZSByZWdhcmRsZXNzIG9mIHRoZSAKICAgICAgICBleGNlcHRpb24gbWVzc2FnZSAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMzk2MTwvYnVnPjogRG9uJ3QgZW5jb2RlICd+JyBpbiBjb250ZXh0IHBhdGhzIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMyODY2PC9idWc+OiBQcm9wYWdhdGUgZGlzdHJpYnV0YWJsZSBwcm9wZXJ0eSBmcm9tIGNvbnRleHQgdG8gbWFuYWdlciAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzI4Njc8L2J1Zz46IFJlc2V0IGRpc3RyaWJ1dGFibGUgYXR0cmlidXRlIGluIGNvbnRleHQgZm9yIGNsZWFuIHJlbG9hZCBoYW5kbGluZyAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgICAgRml4IHNvbWUgUmVhbG1CYXNlL0pORElSZWFsbSBsb2cuaXNYWFhFbmFibGVkIChwZXJvKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICAgIDxidWc+MzQxNjE8L2J1Zz46IEhhcm1vbml6ZSBTdGFuZGFyZENvbnRleHQuc3RvcCB3aXRoIENvbnRhaW5lckJhc2Uuc3RvcCAocmVtbSkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICAgPC9zdWJzZWN0aW9uPgogICAKICAgPHN1YnNlY3Rpb24gbmFtZT0iQ295b3RlIj4KICAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzM5NzE8L2J1Zz46IFNldCByZW1vdGVIb3N0IHRvIG51bGwgd2hlbiBBcGFjaGUgZG9lc24ndCBzZW5kIG9uZS4gKGJpbGxiYXJrZXIpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCBjYWxjdWxhdGlvbiBvZiB0aHJlYWRSYXRpbyBmb3IgdGhlIG1zIHRocmVhZCBwb29sLCBhbmQgZml4IHNldHRpbmcgdGhlIHVwZGF0ZWQKICAgICAgICB0aW1lb3V0IHZhbHVlIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVcGRhdGUgdGhlIG1zIHRocmVhZCBwb29sIHNvIHRoYXQgd2UgYWxsb2NhdGUgYSB3b3JrZXIgYmVmb3JlIGFjY2VwdGluZyBhIG5ldyBzb2NrZXQsCiAgICAgICAgYW5kIHdhaXQgYSBsaXR0bGUgaWYgdGhlIHBvb2wgaXMgZXhoYXVzdGVkOyB0aGlzIHNob3VsZCBtYWtlIGxvdyBtYXhUaHJlYWRzIHZhbHVlcyB3b3JrIGEgCiAgICAgICAgbG90IGJldHRlciAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgPGJ1Zz4zMzg1NzwvYnVnPjogVXBkYXRlIGluZm9ybWF0aW9uIG9uIGF1dG9tYXRpYyBtb2RfamsgY29uZmlndXJhdGlvbiBpbiBBcGFjaGUtSG93VG8gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICBGaXggc3luYyBibG9jayBwbGFjZW1lbnQgaW4gTWFwcGVyLmFkZENvbnRleHQgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzI3NDE8L2J1Zz46IEZpeCBzcGVsbGluZyBvZiAiY29tbWl0dGVkIiBbcGF0Y2ggZnJvbSBCZW4gU291dGhlcl0gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM0MTMzPC9idWc+OiBNYWtlIHNldEhlYWRlciBjbGVhciBtdWx0aS12YWx1ZWQgaGVhZGVycyAoYmlsbGJhcmtlcikKICAgICAgPC9maXg+CiAgICAgPC9jaGFuZ2Vsb2c+CiAgIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iSmFzcGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNDAzNDwvYnVnPjogSmFzcGVyIGRvZXMgbm90IHJlc3BlY3QgZXh0ZXJuYWwgZW50aXRpZXMgKGJpbGxiYXJrZXIpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzM4MTA8L2J1Zz46IEluY29ycmVjdCByZWN5Y2xpbmcgb2YgQm9keUNvbnRlbnQgaWYgY2xvc2UgaXMgY2FsbGVkIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBQZXIgaW5zdGFuY2UgbG9nZ2VycyBpbiBKYXNwZXIgKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogICAKICAgPHN1YnNlY3Rpb24gbmFtZT0iQ2x1c3RlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIEZpeCBKdm1Sb3V0ZUJpbmRlclZhbHZlIHByaW1hcnkgZmFpbG92ZXIgYXR0cmlidXRlIHRvCiAgICAgICAgb3JnLmFwYWNoZS5jYXRhbGluYS5jbHVzdGVyLnNlc3Npb24uSnZtUm91dGVPcmlnbmFsU2Vzc2lvbklEIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBDaGFuZ2UgYXR0cmlidXRlIG5hbWUgd2FpdEZvckFjayB0byBzZW5kQWNrIGF0IFJlcGxpY2F0aW9uTGlzdGVuZXIgKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIEludGVncmF0ZSBuZXcgZmFzdGFzeW5jcXVldWUgY2x1c3RlciBzZW5kZXIgbW9kZS4KICAgICAgICBTdXBwb3J0IHF1ZXVlIHNpemUgbGltaXRhdGlvbiwKICAgICAgICBnZXQgYWxsIHF1ZXVlZCBvYmplY3RzIGFuZCBzZW5kIGl0IHRvIHRoZSBiYWNrdXAgbm9kZSwKICAgICAgICBubyBxdWV1ZSB0aHJlYWQgbG9jayBjb250ZW50aW9uIHVuZGVyIGhpZ2ggcmVwbGljYXRpb24gbG9hZCwKICAgICAgICBzdWJtaXR0ZWQgYnkgUmFpbmVyIEp1bmcgKHBlcm8pCiAgICAgIDwvYWRkPgogICAgICA8YWRkPgogICAgICAgIEFkZCBjb21wcmVzcyBhdHRyaWJ1dGUgdG8gU2VuZGVyIGFuZCBSZWNlaXZlciB0byB0cmFuc2ZlciBkYXRhIHVuY29tcHJlc3NlZC4gCiAgICAgICAgQXQgaGlnaCBjbHVzdGVyIGxvYWQgdGhpcyBvcHRpb24gY29uc3VtZSBsZXNzZXIgY3B1IGFuZCBtZW1vcnkuCiAgICAgICAgSW1wbGVtZW50IHRoZSBjb21wcmVzcyBoYW5kbGluZyB0byBSZXBsaWNhdGlvblRyYW5zbWl0dGVyLCBSZXBsaWNhdGlvbkxpc3RlbmVyLCAKICAgICAgICBYQnl0ZUJ1ZmZlciBhbmQgSmRrMTNSZXBsaWNhdGlvbkxpc3RlbmVyIChwZXJvKQogICAgICA8L2FkZD4KICAgICAgPGFkZD4KICAgICAgICBBZGQgZG9Qcm9jZXNzaW5nU3RhdHMgdG8gc3luY2hyb25vdXMsIGFzeW5jaHJvbm91cyBhbmQgZmFzdHF1ZXVlYXN5bmMgc2VuZGVyIG1vZGVzCiAgICAgICAgdG8gZ2V0IG1pbiwgYXZnLCBtYXggcHJvY2Vzc2luZyB0aW1lcyBhcyBJRGF0YVNlbmRlciBKTVggTUJlYW5zIChwZXJvKQogICAgICA8L2FkZD4KICAgICAgPGZpeD4KICAgICAgICBUY3BUaHJlYWRQb29sIHVzZSBjb25zdGFudCBBQ0sgYnl0ZSBhcnJheSBpbnN0ZWFkIGNyZWF0ZSAKICAgICAgICBuZXcgMyBieXRlIGJ1ZmZlciBmb3IgZXZlcnkgbWVzc2FnZSBhY2sgKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIFJlZmFjdG9yIFJlcGxpY2F0aW9uVHJhbnNtaXR0ZXIgYW5kIFJlcGxpY2F0aW9uTGlzdGVuZXIgKHBlcm8pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIGFkZCBnZXRDYXRhbGluYUNsdXN0ZXIoKSB0byBDbHVzdGVyUmVjZWl2ZXIgYW5kIFNpbXBsZVRjcENsdXN0ZXIgKHBlcm8pCiAgICAgIDwvdXBkYXRlPiAgICAKICAgICAgPHVwZGF0ZT4KICAgICAgICBVcGRhdGUgdGhlIEFwaSBkb2N1bWVudGF0aW9uIChwZXJvKQogICAgICA8L3VwZGF0ZT4KICAgIDwvY2hhbmdlbG9nPgogICA8L3N1YnNlY3Rpb24+CiAgIDxzdWJzZWN0aW9uIG5hbWU9IldlYmFwcHMiPgogICAgIDxjaGFuZ2Vsb2c+CiAgICAgICA8dXBkYXRlPgogICAgICAgICBVc2UgdGhlIHN0YW5kYXJkIHN0cnV0cyB0YWdsaWIgVVJJcyBpbiBhZG1pbiBKU1BzLiAoYmlsbGJhcmtlcikKICAgICAgIDwvdXBkYXRlPgogICAgICA8YWRkPgogICAgICAgIEFkZCBtb3JlIGhvc3QgcGFyYW1ldGVycyB0byBjcmVhdGUgbmV3IGhvc3Qgd2l0aCBob3N0LW1hbmFnZXIgKHBlcm8pCiAgICAgIDwvYWRkPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzQwMzM8L2J1Zz46IEZpeCBxdW90aW5nIHJlbGF0ZWQgYnVncyAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMzcxMzwvYnVnPjogQWRkIFN0cnV0cyBpbml0IGNvZGUgaW4gZnJhbWVzZXQuanNwIGFzIHdlbGwgKHJlbW0pCiAgICAgIDwvZml4PgogICAgIDwvY2hhbmdlbG9nPgogICA8L3N1YnNlY3Rpb24+Cjwvc2VjdGlvbj4KCjxzZWN0aW9uIG5hbWU9IlRvbWNhdCA1LjUuOCAoeW9hdnMpIj4KICA8c3Vic2VjdGlvbiBuYW1lPSJHZW5lcmFsIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMzIwNDwvYnVnPjogRml4ZWQgU1NMIEhvd1RvIHBhZ2UuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMzM1MTwvYnVnPjogRml4IHNpbGVudCB1bmluc3RhbGxhdGlvbi4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzM0ODk8L2J1Zz46IE1pc3Npbmcgc3BhY2UgaW4gdW5pbnN0YWxsZXIgbWVzc2FnZS4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2F0YWxpbmEiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBVbnJlZ2lzdGVyIGhvc3QgbWJlYW4gYW5kIGFsbCBjb250ZXh0IG1iZWFucyBhdCByZW1vdmUgYSBob3N0LCBzLiBTdGFuZGFyZEhvc3QuZGVzdHJveSgpIGFuZCBNQmVhbkZhY3RvcnkuY3JlYXRlU3RhbmRhcmRIb3N0L3JlbW92ZUhvc3QoLCkgZGV0ZWN0ZWQgYnkgVGhvcnN0ZW4gS2FtYW5uIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBtYWtlIGl0IHBvc3NpYmxlIHRvIHJlc3RhcnQgY29ubmVjdG9yLCBub3cgc2VydmVyc29ja2V0IHJlY3JlYXRlZCBhZnRlciBzdG9wLHN0YXJ0IChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBjaGFuZ2UgbWJlYW4gbmFtZXMgZnJvbSBNYXBwZXIgYW5kIFByb3RvY29sSGFuZGxlciB0byBjb25uZWN0b3IgbmFtaW5nIHN0eWxlIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBBZGQgc29tZSBsb2cuaXNYWFhFbmFibGVkIChwZXJvKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICBEZXJlZ2lzdGVyIE1hcHBlckxpc3RlbmVyIGFmdGVyIHJlbW92ZSBjb25uZWN0b3IgKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIFJlbW92ZSBob3N0IG9ubHkgYXQgb3duIGRvbWFpbiB3aXRoIHNhbWUgbmFtZSBhdCBhbGwgc2VydmljZXMsIGRldGVjdGVkIGJ5IFRob3JzdGVuIEthbWFubiAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMzE4NzwvYnVnPjogUmVtb3ZlIGFueSBsb2dnaW5nIG9mIHRoZSBwYXNzd29yZCBpbiB0aGUgSkFBUyByZWFsbSwKICAgICAgICBzdWJtaXR0ZWQgYnkgQW5kcmV3IEphcXVpdGggKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzMwMzM8L2J1Zz46IERvbid0IGRvIGFueXRoaW5nIHRvIHRoZSByZXNwb25zZSBpbiB0aGUgRXJyb3JSZXBvcnRWYWx2ZQogICAgICAgIGlmIGRhdGEgaGFzIGFscmVhZHkgYmVlbiB3cml0dGVuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBBZGQgY2hhcnNldCBzdXBwb3J0IGZvciB0aGUgVVJMcyB1c2VkIGJ5IHRoZSB0YXNrcywgdG8gcmVtb3ZlIGRlcHJlY2F0aW9uIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjI2MTM1PC9idWc+OiBXb3JrYXJvdW5kIGZvciBtZW1vcnkgbGVhayB3aGVuIHJlbG9hZGluZyBTdHJ1dHMKICAgICAgICBiYXNlZCB3ZWIgYXBwbGljYXRpb25zIGJ5IGNsZWFyaW5nIHRoZSBiZWFuIGluc3Ryb3NwZWN0b3IgY2FjaGUgb2YgdGhlIEpWTSBvbgogICAgICAgIGNsYXNzbG9hZGVyIHN0b3AsIHN1Ym1pdHRlZCBieSBUb2JpYXMgTG9mc3RyYW5kLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgIEVuc3VyZSB0aGF0IGlmIENMQVNTUEFUSCBpcyBkZWNsYXJlZCBvbiBzdGFydHVwIC0gaXQgaXMgbm90IHVzZWQuIChmdW5rbWFuKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICAgQWRkIGJhY2sgdXNlIG9mIGRlcGxveU9uU3RhcnR1cCBpbiBIb3N0Q29uZmlnIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGRvY3M+CiAgICAgICAgIEFudCB0YXNrcyBkb2NzIHBhdGNoZXMsIHN1Ym1pdHRlZCBieSBHYWJyaWVsZSBHYXJ1Z2xpZXJpLiAocmVtbSkKICAgICAgPC9kb2NzPgogICAgICA8dXBkYXRlPgogICAgICAgICBVc2UgTklPIGZvciB0aGUgcmF3IGNvcHlpbmcgb3BlcmF0aW9uLCBhcyBpdCBpcyBmYXN0ZXIgKGEgbGl0dGxlIHVuZGVyIDMwJSksIAogICAgICAgICBhbmQgZGVjcmVhc2VzIGEgbGl0dGxlIHRoZSBpbXBhY3Qgb2YgYW50aVJlc291cmNlTG9ja2luZy4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgICA8YnVnPjMzMzU3PC9idWc+OiBGaXggY29ubmVjdGlvbiBsZWFrcyB3aXRoIHRoZSBEYXRhU291cmNlUmVhbG0sIGFzIHdlbGwgCiAgICAgICAgIGFzIGltcHJvdmUgZWZmaWNpZW5jeSwgc3VibWl0dGVkIGJ5IERvbWluaWsgRHJ6ZXdpZWNraS4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgICBJbXByb3ZlIGEgbGl0dGxlIGxvZ2dpbmcgb2Ygc2VydmxldCBleGNlcHRpb25zLCB3aGljaCBzaG91bGQgYWxsIGxvZyB0aGUgcm9vdCBjYXVzZS4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgICBBZGQgbmV3IE1hbmFnZXIuY3JlYXRlU2Vzc2lvbihzZXNzaW9uSWQpIG1ldGhvZCwgYWxsb3dpbmcgdGhlIGNsaWVudCB0byAic3BlY2lmeSIgdGhlIHNlc3Npb24gaWQgd2hpY2ggc2hvdWxkIGJlIHVzZWQgdXNpbmcgYSBjb29raWUKICAgICAgICAgd2hlbiB1c2luZyBlbXB0eVNlc3Npb25QYXRoPSJ0cnVlIi4gVGhpcyBmaXhlcyBzZXNzaW9uIHRyYWNraW5nIGluIHRoaXMgY2FzZS4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgICA8YnVnPjMzMzY4PC9idWc+OiBGaXggbWVtb3J5IGxlYWsgaW4gc3dhbGxvd091dHB1dCBmZWF0dXJlIHdoaWNoIG9jY3VycmVkIHdoZW4gdGhlIHRocmVhZCBwb29sIHNpemUgaXMKICAgICAgICAgcmVkdWNlZCwgc3VibWl0dGVkIGJ5IFJhaW5lciBKdW5nLiAocmVtbSkKICAgICAgPC9maXg+CgkgIDxmaXg+CiAgICAgICAgICBTdG9yZUNvbmZpZzogY2FuJ3Qgc2F2ZSBjbHVzdGVyIE1lbWJlcnNoaXAgZWxlbWVudCAocGVybykKICAgICAgIDwvZml4PgoJICA8YWRkPgogICAgICAgICAgU3RvcmVDb25maWc6IHN1cHByZXNzIGRlZmF1bHQgamtIb21lIGF0dHJpYnV0ZSBhdCBjb25uZWN0b3IgIChwZXJvKQogICAgICA8L2FkZD4KCSAgPGFkZD4KICAgICAgICAgIFN0b3JlQ29uZmlnOiBTYXZlIG5ldyBkeW1hbmljIHByb3BlcnRpZXMgZnJvbSBSZXBsaWNhdGlvblRyYW5zbWl0dGVyICAocGVybykKICAgICAgPC9hZGQ+CiAgICAgIDxmaXg+CiAgICAgICAgIDxidWc+MzM0NjM8L2J1Zz46IFJlbW92ZSBhdHRyaWJ1dGVzIGFmdGVyIGNvbnRleHQgZGVzdHJveS4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgICA8YnVnPjMzNTcyPC9idWc+OiBjb250ZXh0LnhtbCBzaG91bGQgYmUgYSByZWRlcGxveSByZXNvdXJjZSwgYW5kIGFkZCBwcmlvcml0aXphdGlvbiBmb3IKICAgICAgICAgcmVkZXBsb3kgcmVzb3VyY2VzLiAocmVtbSkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ295b3RlIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgIFBvb2xUY3BFbmRwb2ludCByZWNyZWF0ZSBTZXJ2ZXJTb2NrZXQgYWZ0ZXIgc3RhcnQsc3RvcCxzdGFydCBjb25uZWN0b3IgKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIEFkZCBzb21lIGxvZy5pc1hYWEVuYWJsZWQgKHBlcm8pCiAgICAgIDwvdXBkYXRlPgoJICA8YWRkPgoJICAgIEprTVg6IG1ha2UgbG9nNGogbWJlYW4gY29uZmlndXJhYmxlIHdpdGggYXR0cmlidXRlIGxvZzRqRW5hYmxlZCAocGVybykKCSAgPC9hZGQ+CgkgIDxmaXg+CgkgICAgV2hlbiBUb21jYXQgcnVucyBvbiBXaW5kb3dzIGFuZCBJRSBpcyB1cGxvYWRpbmcgZGF0YSB0byB0aGUgc2VydmVyLCB0aGUgZmlyc3QgcmVhZCAKCSAgICBtdXN0IGJlIGF0IGxlYXN0IDhLQiwgb3RoZXJ3aXNlIHVwbG9hZCBzcGVlZCBpcyBleHRyZW1lbHkgbG93LCBzdWJtaXR0ZWQgYnkgTm9lbCAKCSAgICBSb2NoZXIgKHJlbW0pCgkgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogCiAgPHN1YnNlY3Rpb24gbmFtZT0iSmFzcGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMzIyMzwvYnVnPjogcGFnZUNvbnRleHQuZm9yd2FyZCBhbmQganNwOmluY2x1ZGUgcmVzdWx0CiAgICAgICAgaW4gU3RyaW5nSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiAobHVlaGUpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzMzNzM8L2J1Zz46IEZpeCBoYW5kbGluZyBvZiBjb250ZXh0IGNsYXNzbG9hZGVyIGluIGpzcGMgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzM1Mzg8L2J1Zz46IElnbm9yZSBleGFtcGxlIGFuZCB0YWctZXh0ZW5zaW9uIGVsZW1lbnRzIGluIFRhZ0xpYnJhcnlJbmZvSW1wbC4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMzNTM5PC9idWc+OiBCZXR0ZXIgZXJyb3IgbWVzc2FnZSB3aGVuIGFuIHVua25vd24gZWxlbWVudCBpcyBlbmNvdW50ZXJlZCBpbiB0aGUgdGFnIGZpbGUuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMzIxOTwvYnVnPjogTWlub3IgSnNwU2VydmxldFdyYXBwZXIgY29kZSBjbGVhbnVwLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIAogIDxzdWJzZWN0aW9uIG5hbWU9IkNsdXN0ZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgIDxmaXg+CiAgICAgICAgICBBZGQgaW5zdGFuY2UgYmFzZWQgUmVwbGljYXRpb25WYWx2ZSBzdGF0aXN0aWNzIHRvIE1iZWFuIGRlc2NyaXB0b3IgKHBlcm8pCiAgICAgICA8L2ZpeD4KICAgICAgIDxmaXg+CiAgICAgICAgICBCZXR0ZXIgSTE4TiBzdXBwb3J0IHRvIGNsdXN0ZXIgc2Vzc2lvbiBhbmQgdGNwIGNsYXNzZXMgKHBlcm8pCiAgICAgICA8L2ZpeD4KICAgICAgIDxhZGQ+CiAgICAgICAgICBTdXBwb3J0IG9wdGlvbmFsIHByaW1hcnlJbmRpY2F0b3IgYXQgUmVwbGljYXRpb25WYWx2ZSB0byBtYXJrIHRoYXQgCiAgICAgICAgICByZXF1ZXN0IHByb2Nlc3NpbmcgdG8gZXhpc3Rpbmcgc2Vzc2lvbiBpcyBhdCBwcmltYXJ5IGNsdXN0ZXIgbm9kZS4gCiAgICAgICAgICBFYXN5IGZhaWxvdmVyIGRldGVjdGlvbiwgd2hlbiBtYXJrIGlzIG5vdCBhdCAKICAgICAgICAgIGNvbmZpZ3VyYWJsZSBwcmltYXJ5SW5kaWNhdG9yIGF0dHJpYnV0ZSwgc3VibWl0dGVkIGJ5IFJhaW5lciBKdW5nIChwZXJvKQogICAgICAgPC9hZGQ+CiAgICAgICA8dXBkYXRlPgogICAgICAgICAgUmVmYWN0b3IgYWxsIGltcGxlbWVudGF0aW9uIGZyb20gaW50ZXJmYWNlIElEYXRhU2VuZGVycyAocGVybykKICAgICAgIDwvdXBkYXRlPgogICAgICA8YWRkPgogICAgICAgICAgQWRkIHNvbWUgdXNlZnVsbCBhdHRyaWJ1dGVzIGFuZCBvcGVyYXRpb25zIHRvIHRoZSBhbGwgc2VuZGVyIE1CZWFucy4gKHBlcm8pCiAgICAgICA8L2FkZD4KICAgICAgPGFkZD4KICAgICAgICAgIEFkZCBrZWVwQWxpdmUgYW5kIHdhaXRGb3JBY2sgaGFuZGxpbmcgdG8gQXN5bmNTb2NrZXRTZW5kZXIgYW5kIGZhY3RvciBvdXQgYSBEYXRhU2VuZGVyIGJhc2UgY2xhc3MuKHBlcm8pCiAgICAgICA8L2FkZD4KICAgICAgIDxhZGQ+CiAgICAgICAgICBSZXBsaWNhdGlvblRyYW5zbWl0dGVyOiBFbmFibGUgYW5kIERpc2FibGUgYXV0b3JlY29ubmVjdCBzZW5kZXIgYW5kIHdhaXRGb3JBY2suIChwZXJvKQogICAgICAgPC9hZGQ+CiAgICAgICA8YWRkPgogICAgICAgICAgUmVwbGljYXRpb25UcmFuc21pdHRlcjogdHJhbnNmZXIgYWxsIHByb3BlcnRpZXMgdG8gc29ja2V0IHNlbmRlciBmcm9tIHNlcnZlci54bWwgY29uZmlndXJhdGlvbi4gKHBlcm8pCiAgICAgICA8L2FkZD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iV2ViYXBwcyI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIEZpeCBjcmVhdGUgYW5kIHJlbW92ZSBIb3N0IGZvciBBZG1pbiBhcHAuIChwZXJvKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogICA8L3N1YnNlY3Rpb24+Cjwvc2VjdGlvbj4KCjxzZWN0aW9uIG5hbWU9IlRvbWNhdCA1LjUuNyAocmVtbSkiPgogIDxzdWJzZWN0aW9uIG5hbWU9IkdlbmVyYWwiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGFkZD4KICAgICAgICBBZGQgaW5zdGFsbGVyIGZvciBtb2Rfamsgb24gSUlTLiAobXR1cmspCiAgICAgIDwvYWRkPgogICAgICA8YWRkPgogICAgICAgIE5ldyBzdG9yZSBjb25maWcgbW9kdWxlIGZvciBiZXR0ZXIgc2VydmVyLnhtbCBzYXZpbmcgc3VwcG9ydC48YnIvPgogICAgICAgIEFkZCAmbHQ7TGlzdGVuZXIgY2xhc3NOYW1lPSJvcmcuYXBhY2hlLmNhdGFsaW5hLnN0b3JlY29uZmlnLlN0b3JlQ29uZmlnTGlmZWN5Y2xlTGlzdGVuZXIiIC8mZ3Q7IHRvIHlvdXIgc2VydmVyLnhtbCAocGVybykKICAgICAgPC9hZGQ+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgPGJ1Zz4zMjA4MTwvYnVnPjogUmVtb3ZlIHRoZSBKREsgcmVxdWlyZW1lbnQgZnJvbSB0aGUgVW5peCBzY3JpcHRzLCBzdWJtaXR0ZWQKICAgICAgICBieSBCZW4gU291dGhlciAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMjk1MzwvYnVnPjogU0VSVkxFVEFQSTogWFNTIElzc3Vlcywgc3VibWl0dGVkIGJ5IE1hcmsgVGhvbWFzIChqZmFyY2FuZCkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIHRvIGNvbW1vbnMtZGlnZXN0ZXIgMS42LCBKRFQgMy4wLjEsIE1YNEogMi4xLjAsIFN0cnV0cyAxLjIuNiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9IkNhdGFsaW5hIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgIEZpcnN0IGludGVncmF0aW9uIGF0IFN0b3JlQ29uZmlnIHRvIFN0YW5kYXJkU2VydmVyIChwZXJvKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMyNzE0IDwvYnVnPjogRG9uJ3QgbWFrZSB0aGUgQWNjZXNzTG9nVmFsdmUgZmluYWwgKGZ1bmttYW4pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzI2OTQ8L2J1Zz46IEZpeCBiYWQgY29kZSB0byBtYWtlIGRvY0Jhc2UgcGF0aCBhYm9zbHV0ZSBpbiBhbnRpTG9ja2luZwogICAgICAgIG1ldGhvZC4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzI3MTM8L2J1Zz46IEZpeCByZXNvdXJjZS1lbnYtcmVmIGhhbmRsaW5nLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMTIwMTwvYnVnPjogSW1wcm92ZSBpMThuIHN1cHBvcnQgaW4gRGVmYXVsdFNlcnZsZXQuIFRoaXMgd2FzIGNhdXNpbmcKICAgICAgICBwcm9ibGVtcyB3aXRoIEpTUCBpbmNsdWRlIGFjdGlvbnMgYW5kIHN0YXRpYyBmaWxlcy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBBZGQgc29tZSBsb2cuaXNYWFhFbmFibGVkIHRvIG8uYS5jLmNvcmUuU3RhbmRhcmRIb3N0IFN0YW5kYXJkRW5naW5lLCBTdGFuZGFyZFNlcnZpY2UgKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIEZlYXR1cmUgYWRkaXRpb24gdG8gYWRkIFJlZGlyZWN0b3IgYW5kIGZhaWxPbkVycm9yIHN1cHBvcnQgZm9yIGFsbCBDYXRhbGluYSBBbnQgdGFza3MsCiAgICAgICAgc3VibWl0dGVkIGJ5IEdhYnJpZWxlIEdhcnVnbGllcmkgKHJlbW0pCiAgICAgIDwvYWRkPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzExOTg8L2J1Zz46IEZpeCBGT1JNIGFuZCBESUdFU1QgYXV0aGVudGljYXRpb24gZm9yIG5vbi1BU0NJSQogICAgICAgIHVzZXJuYW1lcyBhbmQgcGFzc3dvcmRzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIFJlaW1wbGVtZW50IGNoYXJzZXQgbWFwcGVyIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBBZGQgbG9nZ2luZyBvZiBleGNlcHRpb24gd2hpY2ggY291bGQgb2NjdXIgd2hlbiByZXRyaWV2aW5nIHRoZSBwYXNzd29yZCBpbiBKREJDUmVhbG0gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MjU4ODk8L2J1Zz46IERvbid0IGV4ZWN1dGUgcXVlcmllcyB0d2ljZSwgc3VibWl0dGVkIGJ5IFRvbSBBbmRlcnNvbiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMjgzMjwvYnVnPjogcmVxdWVzdC5nZXRTZXNzaW9uKGZhbHNlKSBmYWlscyB0byByZXR1cm4gbnVsbCAobHVlaGUpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MjgyMjI8L2J1Zz46IHJlcXVlc3QuZ2V0UmVxdWVzdFVSTCgpIGluIGZvcndhcmRlZCBqc3Avc2VydmxldCByZXR1cm5zCiAgICAgICAgb3JpZ2luYWwgdXJsIHJhdGhlciB0aGFuIG5ldyB1cmwgYXMgcGVyIFNSVjguNCAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzMxNTc8L2J1Zz46IEZpeCBoYW5kbGluZyBvZiB0aGUgYnVmZmVyIGxlbmd0aCBmb3IgYmFzaWMgYXV0aGVudGljYXRpb24gcGFyc2luZyAocmVtbSkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9IkNveW90ZSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzI3MDg8L2J1Zz46IEJldHRlciBoYW5kbGluZyBvZiBiYWQgZW5jb2Rpbmcgd2l0aCB0aGUgc3RyaW5nIGNhY2hlLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMjc4MTwvYnVnPjogRml4IGJhZCBpbml0aWFsaXphdGlvbiBvZiB0aGUgInNjaGVtZSIgZmllbGQgb2YgdGhlIHJlcXVlc3QKICAgICAgICBvYmplY3QsIHdoaWNoIHdvdWxkIGNhdXNlIGdldFNjaGVtZSB0byByZXR1cm4gImh0dHAiIGZvciB0aGUgZmlyc3QgcmVxdWVzdC4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIENvbnRlbnQgbGVuZ3RoIHNob3VsZCBiZSBpZ25vcmVkIGlmIHRoZXJlIGlzIGNodW5raW5nIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBSZW1vdmUgbW9zdCBkZXByZWNhdGlvbiBwcm9ibGVtcyBmb3IgdGhlIEFKUCBjb25uZWN0b3IgKHJlbW0pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJKYXNwZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMyNzQ2PC9idWc+OiBBdm9pZCBKQVIgbG9ja2luZyB3aGVuIGxvYWRpbmcgY2xhc3NlcyBhbmQgaW1wcm92ZSBsb2FkaW5nCiAgICAgICAgcGVyZm9ybWFuY2UgYnkgdGFraW5nIGFkdmFudGFnZSBvZiBjYWNoaW5nLCBzdWJtaXR0ZWQgYnkgRG9taW5payBEcnpld2llY2tpLiAocmVtbSkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9IkNsdXN0ZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgIDxmaXg+CiAgICAgICAgICBjb3JyZWN0IEp2bVJvdXRlU2Vzc2lvbklEQmluZGVyTGlzdGVuZXIgTUJlYW4gbmFtZSB0byAmbHQ7ZG9tYWluJmd0Ozp0eXBlPUxpc3RlbmVyLG5hbWU9SnZtUm91dGVTZXNzaW9uSURCaW5kZXJMaXN0ZW5lcixob3N0PSZsdDtob3N0Jmd0OyAocGVybykKICAgICAgIDwvZml4PgogICAgICAgPGFkZD4KICAgICAgICAgIEpNWCBzdXBwb3J0IHRvIFNpbXBsZVRjcENsdXN0ZXIsIFJlcGxpY2F0aW9uVHJhbnNtaXR0ZXIgYW5kIGFsbCBzZW5kZXJzIChwZXJvKQogICAgICAgPC9hZGQ+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9IldlYmFwcHMiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBGaXggdGhlIHdlYkRBViBzZXJ2bGV0IHNvIGl0IGNhbiBiZSB1c2VkIHZpYSBhbnkgYXJiaXRyYXJ5IG1hcHBpbmcKICAgICAgICAoZWcgL3dlYmRhdi8qKSB0byBlZGl0IHRoZSBjb250ZW50cyBvZiBhIHdlYiBhcHBsaWNhdGlvbi4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMyNzI5PC9idWc+OiBTdG9wIGlzIG9wdGlvbmFsIGFuZCBtYXkgZmFpbCwgc28gaXQgbmVlZHMgdG8gYmUgaW4gYSBzZXBhcmF0ZSB0cnkvY2F0Y2ggKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIFJlbW92ZSB0aGUgcmVtb3ZlIG1ldGhvZCBvZiB0aGUgbWFuYWdlciBzZXJ2bGV0LCBhbmQgdXNlIHRoZSB1bmRlcGxveSBtZXRob2QgaW5zdGVhZCAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMjc3NzwvYnVnPjogRmFpbCBpZiBhcHBsaWNhdGlvbiBpc24ndCBjb25maWd1cmVkIHByb3Blcmx5LCBzdWJtaXR0ZWQgYnkgR2FicmllbGUgR2FydWdsaWVyaQogICAgICAgIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMyNzcxPC9idWc+OiBDYW5ub3QgdW5kZXBsb3kvZGVwbG95IG1pc2NvbmZpZ3VyZWQgYXBwIGFmdGVyIHRvbWNhdCBzdGFydHVwLAogICAgICAgIHN1Ym1pdHRlZCBieSBHYWJyaWVsZSBHYXJ1Z2xpZXJpIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjI4ODY3PC9idWc+OiBDb3JyZWN0IG1hbmFnZXIgZG9jdW1lbnRhdGlvbiB0byBkb2N1bWVudCBjb3JyZWN0IHdheSB0bwogICAgICAgIHJlZmVyZW5jZSB0aGUgUk9PVCBjb250ZXh0LiBTdWJtaXR0ZWQgYnkgU3RlcGhhbmUgQmFpbGxpZXouIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMzA4NTwvYnVnPjogQWRkIHN1cHBvcnQgZm9yIHNldHRpbmcgcHJpdmlsZWdlZCBhdHRyaWJ1dGUgb2YgY29udGV4dAogICAgICAgIHRvIGFkbWluIHdlYmFwcC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMzMTE3PC9idWc+OiBGaXggT3BlbiBidWdzIGxpbmsgYnJva2VuIG9uIGRlZmF1bHQgaG9tZXBhZ2UuCiAgICAgICAgUGF0Y2ggc3VwcGxpZWQgYnkgU2FuZGVyIFRlbW1lLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEltcHJvdmUgamF2YWRvYyBnZW5lcmF0aW9uIGZvciBDYXRhbGluYS4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgo8L3NlY3Rpb24+Cgo8c2VjdGlvbiBuYW1lPSJUb21jYXQgNS41LjYgKHlvYXZzKSI+CiAgPHN1YnNlY3Rpb24gbmFtZT0iR2VuZXJhbCI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8dXBkYXRlPgogICAgICAgIDxidWc+MzI1MzI8L2J1Zz46IHVwZGF0ZWQgbG9nZ2luZyBkb2N1bWVudGF0aW9uLiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIDxidWc+MzIzODI8L2J1Zz46IEluZGV4IHBhZ2UgYW5kIHBhY2thZWQgV0FSIGZvciBzYW1wbGUgd2ViYXBwLiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzI2MDM8L2J1Zz46IFVwZGF0ZWQgaG9zdC54bWwgdG8gcmVmbGVjdCBhcHBCYXNlIHJlc29sdXRpb24uICh5b2F2cykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9IkNhdGFsaW5hIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgQWRkIGNoaWxkIHRvIHRoZSBtYXAgb2YgdGhlIHBhcmVudCBiZWZvcmUgc3RhcnRpbmcgaXQuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBEZWNvdXBsZSB1c2FnZSBvZiB0aGUgc2NoZW1lIGFuZCBzZWN1cmUgYXR0cmlidXRlcyBmcm9tIGVuYWJsaW5nIFNTTC4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzI1MDI8L2J1Zz46IG1lbW9yeSBsZWFrIGluIERpZ2VzdEF1dGhlbnRpY2F0b3IuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4yODcwOTwvYnVnPjogamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdC5pc1JlcXVlc3RlZFNlc3Npb25JZFZhbGlkKCkgcmV0dXJucyB0cnVlIGZvciBhbiBpbnZhbGlkYXRlZCBzZXNzaW9uLiAobHVlaGUpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzIxMzc8L2J1Zz46IFBvc3NpYmxlIHRocmVhZC1zYWZldHkgaXNzdWUgaW4gUmVhbG1CYXNlLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJDb3lvdGUiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMyNTg1PC9idWc+OiBCZXR0ZXIgaGFuZGxpbmcgZm9yIGNvbnRlbnQgbGVuZ3RoIGdyZWF0ZXIgdGhhbiBJbnRlZ2VyLk1BWF9WQUxVRSBpbiByZXNwb25zZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBBbGxvdyBBcGFjaGVDb25maWcgYW5kIGZyaWVuZHMgdG8gbGl2ZSB1bmRlciBhbiBFbmdpbmUuIChiaWxsYmFya2VyKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBTeW5jcm9uaXplIGFjY2VzcyB0byB0aGUgSmsgUmVxdWVzdCByZWdpc3RyYXRpb24gY291bnQuIChiaWxsYmFya2VyKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBTcGVlZCB0aGUgTXNnQ29udGV4dCBvbiBpdHMgd2F5IHRvIEdDLiAoYmlsbGJhcmtlcikKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgS2VlcCBjb3JyZWN0IHRocmVhZCBjb3VudHMgaW4gVGhyZWFkIHBvb2wgd2hlbiB0aHJlYWQgZW5kcyBpbiBhbiBleGNlcHRpb24gKGJpbGxiYXJrZXIpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJKYXNwZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVcGRhdGVkIEphc3Blci1Ib3dUbyBzZWN0aW9uIG9uIHVzaW5nIEppa2VzLCBjaGFuZ2VkIGNvbmYvd2ViLnhtbCBKU1BTZXJ2bGV0IHRvIHJlZmVyIHBlb3BsZSB0byBKYXNwZXItSG93VG8gc28gdGhhdCB3ZSBkb24ndCBoYXZlIHRoZXNlIGluc3RydWN0aW9ucyBpbiB0d28gcGxhY2VzLiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJXZWJhcHBzIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMjUwNTwvYnVnPjogRml4IGhhbmRsaW5nIG9mIGFuIGVtcHR5IGNvbnRleHQgcGFyYW1ldGVyICh3aGljaCBvY2N1cnJlZCBldmVyeSB0aW1lIHRoZSBIVE1MCiAgICAgICAgbWFuYWdlciB3YXMgdXNlZCB0byBkZXBsb3kgYSBsb2NhbCB3YXIgd2l0aG91dCBzcGVjaWZ5aW5nIGFsc28gYSBjb250ZXh0IGZpbGUpLiAocmVtbSkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+Cjwvc2VjdGlvbj4KCjxzZWN0aW9uIG5hbWU9IlRvbWNhdCA1LjUuNSAoeW9hdnMpIj4KICA8c3Vic2VjdGlvbiBuYW1lPSJHZW5lcmFsIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgPGJ1Zz4zMjIzNTwvYnVnPjogU3luYyBjb25mL3dlYi54bWwgTUlNRSB0eXBlcyB3aXRoIEFwYWNoZSBodHRwZC4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMxMTMyPC9idWc+OiBCZXR0ZXIgLXgvLXIgc3VwcG9ydCBmb3IgT1MvNDAwIGluIHN0YXJ0dXAgc2NyaXB0cy4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICA8YnVnPjIyNjc5PC9idWc+OiBBZGRlZCBtaXNjIG5vdGUgb24gYWNjZXNzaW5nIHNlc3Npb24gSUQgdG8gU1NMLUhvd1RvLiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogPCEtLSBCeXRlQnVmZmVyQWNjZXNzTG9nVmFsdmUuamF2YSBpcyBub3QgaW5zaWRlISEKICAgICAgPHVwZGF0ZT4KICAgICAgICBBZGQgYW4gYXN5bmNocm91bm91cyBhY2Nlc3MgbG9nIHZhbHZlIGJhc2VkIG9uIE5JTyAoamZhcmNhbmQpCiAgICAgIDwvdXBkYXRlPgogLS0+CiAgICAgICA8dXBkYXRlPgogICAgICAgIDxidWc+MzIyNDk8L2J1Zz46IFVwZGF0ZWQgbG9nZ2luZyBkb2N1bWVudGF0aW9uLiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIDxidWc+MzIyODI8L2J1Zz46IE1vZGlmeSBXaW5kb3dzIFVuaW5zdGFsbGVyIHRvIG9ubHkgcmVtb3ZlIHdlYmFwcHMvUk9PVCBhbmQgd2ViYXBwcyBpZiB1c2VyIGFza3MgdG8gcmVtb3ZlIGV2ZXJ5dGhpbmcuICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMjM3MTwvYnVnPjogb3V0ZGF0ZWQgaW50cm9kdWN0aW9uLnhtbCBwYWdlLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzIzNzM8L2J1Zz46IG91dGRhdGVkIGluc3RhbGxhdGlvbi54bWwgcGFnZS4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICA8YnVnPjMyNDU0PC9idWc+OiBhbWVuZGVkIEpOREkgZG9jdW1lbnRhdGlvbiBmb3IgSmF2YU1haWwvSmF2YUFjdGl2YXRpb25GcmFtZXdvcmsgdXNhZ2UuICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9IkNhdGFsaW5hIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMjEzMDwvYnVnPjogQWRkIHNhZmV0eSBjaGVjayB0byBGaWxlU3RvcmUja2V5cyBtZXRob2QuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgPGJ1Zz4zMjI3NjwvYnVnPjogQWRkIGRldmVsb3BlciBpbmZvIHRvIFJlYWxtIEhvdy1Uby4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMyMDgyPC9idWc+OiBBZGRlZCBwcm90ZWN0ZWQgZ2V0UHJpbmNpcGFscyBtZXRob2QgdG8gTWVtb3J5UmVhbG0gZm9yIGVhc2llciBleHRlbnNpb24uICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMjAyMzwvYnVnPjogQ0dJU2VydmxldCBmYWlscyB0byBoYW5kbGUgcG9zdCBtZXNzYWdlIHdpdGggbXVsdGlwYXJ0L2Zvcm0gZGF0YS4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMyMjY5PC9idWc+OiBKTkRJUmVhbG0gZmFpbHMgd2l0aCBJbnZhbGlkTmFtZUV4Y2VwdGlvbiB0byBhdXRoZW50aWNhdGUgdXNlcnMgaWYgTERBUCBkaXN0aW5ndWlzaGVkIG5hbWUgKEROKSBjb250YWlucyBzbGFzaCBvciBkb3VibGUgcXVvdGUgY2hhcmFjdGVyKHMpLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgIDxmaXg+CiAgICAgICAgTW92ZSBwcm9jZXNzRXhwaXJlc0ZyZXF1ZW5jeSBjaGVjayB0byBNYW5hZ2VyQmFzZSBhbmQgcmVmbGVjdCBjaGFuZ2UgdG8gYWxsIHN1YmNsYXNzZXMgKFN0YW5kYXJkTWFuYWdlciwgUGVyc2llbnRNYW5hZ2VyQmFzZSwgRGVsdGFNYW5hZ2VyKS4gKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIEFkZCBESUdFU1QgYXV0aGVudGljYXRpb24gc3VwcG9ydCB0byB0aGUgSkRCQyBhbmQgRGF0YVNvdXJjZSByZWFsbXMuIFN1cHBvcnRzIGJvdGggZGlnZXN0ZWQgYW5kIGNsZWFydGV4dCBwYXNzd29yZHMuIChtYXJrdCkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMjQyOTwvYnVnPjogQ0dJU2VydmxldCBjYWxjdWxhdGVzIG51bWJlciBvZiBsaW5lcyByZWNlaXZlZCBvbiBzdGRlcnIgaW5jb3JyZWN0bHkuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMjQzMTwvYnVnPjogRml4IHR5cG8gaW4gY29kZSB0aGF0IHBhc3NlcyBkYXRhIHRvIENHSSBzY3JpcHQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMjQzMDwvYnVnPjogQ2xhc3MgY2FzdCBleGNlcHRpb24gaW4gdG9TdHJpbmcoKSBtZXRob2Qgd2l0aGluIENHSSBzZXJ2bGV0LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgICBBZGQgc29tZSBsb2cuaXNYWFhFbmFibGVkIGNoZWNrcyBhdCBTdGFuZGFyZENvbnRleHQgYW5kIEhvc3RDb25maWcgKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgICBSZW1vdmUgdGhlIGxhc3QgRGVmYXVsdENvbnRleHQgYXJ0aWZhY3RzIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICAgPGJ1Zz4zMjAzMTwvYnVnPjogdXNpbmcgY3JlYXRlQ29ubmVjdG9yIHdpdGggImh0dHAiIHByb3RvY29sIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICAgQWRkIGNvbmZpZ0ZpbGUgYXR0cmlidXRlIGluIEpNWCBkZXNjcmlwdG9ycyAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgIEZpeCBhdXRvZGVwbG95ZXIgaGFuZGxpbmcgb2YgYSB3YXIgd2hpY2ggaW5jbHVkZXMgYSAvTUVUQS1JTkYvY29udGV4dC54bWwsIHNvIHRoYXQgaXQgaXMKICAgICAgICAgY29ycmVjdGx5IHJlZ2lzdGVyZWQgYW5kIGNhbiBiZSByZWxvYWRlZCBjb3JyZWN0bHkgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgICA8YnVnPjMyMTM3PC9idWc+OiBVc2Ugb2YgTWVzc2FnZURpZ2VzdCBzaG91bGQgYmUgc3luY2VkIGluIERJR0VTVCAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgIEFkZCBpbmZvIGxvZyB3aGVuIHRoZSBhdXRvZGVwbG95ZXIgcmVsb2FkcyBhIGNvbnRleHQgKHJlbW0pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJDb3lvdGUiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPHVwZGF0ZT4KICAgICAgICBTbWFsbCBIVFRQLzEuMSBvcHRpbWl6YXRpb25zOiByZXBsYWNlIHVzYWdlIG9mIFN0cmluZ3Mgd2l0aCBjb25zdGFudCBieXRlIGFycmF5cywgYW5kCiAgICAgICAgc2ltcGxpZnkgdGhlIGNvZGUgY29udmVydGluZyBTdHJpbmdzIHRvIGJ5dGVzIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBHcmVhdGx5IHJlZHVjZSB0aGUgYW1vdW50IG9mIHJlY3ljbGUgbWV0aG9kIGNhbGxzIG9uIHRoZSBidWZmZXJzIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD5BZGQgbnVsbCBPTmFtZSBjaGVjayBmb3IgUmVxdWVzdCB1bnJlZ2lzdHJhdGlvbiBpbiBKaywgdG8gcmVtb3ZlCiAgICAgICAgICAgZXhjZXB0aW9uIHVuZGVyIEpESyAxLjUuIChiaWxsYmFya2VyKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD48YnVnPjMyMjkyPC9idWc+OiBEb24ndCBzZW5kIGtlZXAtYWxpdmUgaGVhZGVyIHdoZW4gdGhlIHByb3RvY29sCiAgICAgICAgICAgY2FuJ3QgYmUgcGFyc2VkLiAoYmlsbGJhcmtlcikKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9Ikphc3BlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8dXBkYXRlPgogICAgICAgIFVwZGF0ZWQgSnNwQyB1c2FnZSBtZXNzYWdlcyB0byBpbmNsdWRlIHJlY2VudGx5IGFkZGVkIGNvbmZpZ3VyYWJsZSBwYXJhbWV0ZXJzLiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzIzMzA8L2J1Zz46IEpzcEMgY2hhbmdlcyBjb250ZXh0IGNsYXNzbG9hZGVyLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJDbHVzdGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgICA8YWRkPgogICAgICAgICAgSnZtUm91dGVCaW5kZXJWYWx2ZS9Kdm1Sb3V0ZVNlc3Npb25JREJpbmRlckxpc3RlbmVyIHRvIGJpbmQgY2x1c3RlciBzZXNzaW9uIGFmdGVyIHByaW1hcnkgbm9kZSBmYWlsdXJlIGF0IGZpcnN0IGNhbGxpbmcgYmFja3VwIG5vZGUuCiAgICAgICAgICBUaGlzIHdhcyBhbiBvcHRpb24gdG8gaGF2ZSBzZXNzaW9uIHN0aWNreW5lc3MgYWZ0ZXIgY2x1c3RlciBub2RlIGNyYXNoZWQuIFdvcmsgb25seSB3aXRoIEpFU1NJT05JRCBjb29raWVzLiAocGVybykKICAgICAgIDwvYWRkPgogICAgICAgPGFkZD4KICAgICAgICAgIEJldHRlciBsb2cgc3VwcG9ydCB0byBEZWx0YU1hbmFnZXIgdG8gc2VlIGRldGFpbCBpbmZvcm1hdGlvbiBhdCBkZWJ1ZyBsZXZlbC4gKHBlcm8pCiAgICAgICA8L2FkZD4KICAgICAgIDxmaXg+CiAgICAgICAgICBGaXggRmFybVdhckRlcGxveWVyIGJhc2VkIG9uIG5ldyBIb3N0Q29uZmlnIGRlcGxveWVyLiAocGVybykKICAgICAgIDwvZml4PgogICAgICAgPGZpeD4KICAgICAgICAgIEZhcm1XYXJEZXBsb3llciBjb250cm9sbGVkIFdhcldhdGNoZXIgd2l0aCBlbmdpbmUgYmFja2dyb3VuZFByb2Nlc3MgY2FsbC4KICAgICAgICAgIEFkZGVkIHByb2Nlc3NEZXBsb3lGcmVxdWVuY3kgYXR0cmlidXRlIHRvIERlcGxveWVyIHNlcnZlci54bWwgZWxlbWVudC4gKHBlcm8pCiAgICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iV2ViYXBwcyI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8dXBkYXRlPgogICAgICAgIDxidWc+MzIwMTk8L2J1Zz46IFJlbW92ZSBtYXhsZW5ndGg9NjQgcmVzdHJpY3Rpb24gb24gZW52IGVudHJ5IHZhbHVlcyBpbiBhZG1pbiB3ZWJhcHAuICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IHZhcmlvdXMgcHJvYmxlbXMgaW4gcmVhbG0gZG9jcywgc3VibWl0dGVkIGJ5IFBoaWwgTW9jZWsuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBBZGQgbG9nNGogZG9jcyBzdWJtaXR0ZWQgYnkgQWxsaXN0YWlyIENyb3NzbGV5LiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+PGJ1Zz4zMjM4MTwvYnVnPjogRml4IHByb2JsZW0gd2hlcmUgRUwgZXhwcmVzc2lvbiBpcyB1c2VkIGFzIGEKICAgICAgICBwbGFjZSBob2xkZXIgaW4gdGhlIGFkbWluIHdlYmFwcC4KICAgICAgICBTdWJtaXR0ZWQgYnkgQWxsaXN0YWlyIENyb3NzbGV5LiAoYmlsbGJhcmtlcikKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+Cjwvc2VjdGlvbj4KCjxzZWN0aW9uIG5hbWU9IlRvbWNhdCA1LjUuNCAoeW9hdnMpIj4KICA8c3Vic2VjdGlvbiBuYW1lPSJHZW5lcmFsIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgPGJ1Zz4zMTY3MTwvYnVnPjogVXBkYXRlIHdlYi54bWwgZmlsZXMgdG8gMi40IHNjaGVtYSB3aGVyZSBhcHBsaWNhYmxlLiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIDxidWc+MzE5MTI8L2J1Zz46IEFkZCBQTkcgYW5kIENTUyBmaWxlIHR5cGVzIHRvIHJlcGxpY2F0aW9uIGZpbHRlciBkZWZhdWx0LiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJDYXRhbGluYSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIEFkZCBwcm9jZXNzRXhwaXJlc0ZyZXF1ZW5jeSB0byBQZXJzaXN0ZW50TWFuYWdlckJhc2UgYW5kIG1hZGUgc29tZSBzbWFsbCBKREJDU3RvcmUgb3B0aW1pemF0aW9ucyAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgUmVnaXN0ZXIgSlNQIG1vbml0b3JpbmcgbWJlYW4gZm9yIGVhY2ggc2VydmxldCB0aGF0IGRlY2xhcmVzIGEganNwLWZpbGUgaW4gd2ViLnhtbC4gKGx1ZWhlKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMxNTc4PC9idWc+OiBVcGRhdGUgTWFuYWdlciBjb25maWd1cmF0aW9uIGRvY3VtZW50YXRpb24uICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMTI3MzwvYnVnPjogQWRkIHN1cHBvcnQgZm9yIGRlcmVmYWxpYXNlcyBpbiBKTkRJUmVhbG0uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMTYyMzwvYnVnPjogQmV0dGVyIE9TNDAwIHN1cHBvcnQgaW4gc2V0Y2xhc3NwYXRoLnNoLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIEV4dGVuZCBiYWNrZ3JvdW5kIHByb2Nlc3NpbmcgdG8gbW9zdCBjb250YWluZXIgY29tcG9uZW50cy4gKHJlbW0pCiAgICAgIDwvYWRkPgogICAgICA8Zml4PgogICAgICAgIFJlbW92ZSBhbGwgTVg0SiByZWxhdGVkIGNvZGUuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBVcGRhdGUgSkFSIGxpc3QgaW4gVGxkQ29uZmlnLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgUmVnaXN0ZXIgZGF0YXNvdXJjZXMgd2l0aCBKTVguIFdpdGggREJDUCwgdGhpcyBpcyBlbm91Z2ggdG8gcHJvdmlkZSBKTVggbWFuYWdlbWVudCBhbmQgbW9uaXRvcmluZy4KICAgICAgICBJdCBtaWdodCB3b3JrIHdlbGwgd2l0aCBtYW55IG90aGVyIGRhdGEgc291cmNlcyB3aGljaCBtaWdodCBub3QgcmVnaXN0ZXIgdGhlbXNlbHZlcyBpbiBKTVgKICAgICAgICBidXQgZG8gZXhwb3NlIHRoZWlyIHN0dWZmIGluIGEgamF2YSBiZWFuIGZhc2hpb24uIChyZW1tKQogICAgICA8L2FkZD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBBZGQgdGhlIGFiaWxpdHkgdG8gZm9yY2Ugc2Vzc2lvbiBjb29raWVzIHRvIGJlIHNldCB0byB0aGUgcm9vdCBwYXRoICIvIi4gVGhpcyBzaG91bGQgbm90IGJlIHVzZWQKICAgICAgICBvbiBsYXJnZSBzZXJ2ZXJzLCBvdGhlcndpc2UgdG9ucyBvZiBjb29raWVzIG1heSBiZSBzZW50LiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgV29ya2Fyb3VuZCBmb3IgY2xpZW50IHNvY2tldCBleGNlcHRpb25zIG9jY3VycmluZyB3aGlsZSBydW5uaW5nIGEgQ0dJLCB3aGljaCBjb3VsZCBjYXVzZQogICAgICAgIHRoZSBleHRlcm5hbCBwcm9jZXNzIHRvIGhhbmcuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBPcHRpbWl6ZSBzZXNzaW9uIGNvb2tpZSBJRHMgY29udmVyc2lvbiB0byBTdHJpbmcsIHNpbmNlIHRoaXMgaXMgYW4gdW5hdm9pZGFibGUgYW5kIHVuY2FjaGVhYmxlCiAgICAgICAgb3BlcmF0aW9uLiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgQWRkIGV4cGxpY2l0IGVycm9yIG1lc3NhZ2UgaWYgdGVtcCBkaXIgZG9lcyBub3QgZXhpc3QsIGFuZCByZW1vdmUgdXNlbGVzcyBjYWxscyB0byBpbml0RGlycy4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIEFkZCBhbiBvcHRpbWl6ZWQgYWNjZXNzIGxvZyB2YWx2ZSwgc3VwcG9ydGluZyBoYXJkY29kZWQgc3VwcG9ydCBmb3IgdGhlIGNvbW1vbiBhbmQgY29tYmluZWQgcGF0dGVybnMsCiAgICAgICAgYW5kIGRvaW5nIGEgbWFqb3JpdHkgb2YgaXRzIHdyaXRlLXRvLWxvZ2ZpbGUgb3BlcmF0aW9ucyBhc3luY2hyb25vdXNseS4gKHJlbW0pCiAgICAgIDwvYWRkPgogICAgICA8dXBkYXRlPgogICAgICAgIFJlZ2lzdGVyIGFuIE1CZWFuIHRvIG1vbml0b3IgYW5kIG1hbmFnZSB0aGUgU3RyaW5nQ2FjaGUsIGFuZCBhbGxvdyBpbnZva2luZyB0aGUgcmVzZXQgb3BlcmF0aW9uLiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMTY3NzwvYnVnPjogTG9nIHdhcm5pbmcgaWYgd29yayBkaXIgZm9yIGNvbnRleHQgY2FuJ3QgYmUgZGV0ZXJtaW5lZC4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMxOTAzPC9idWc+OiBGaXggY29uZGl0aW9uIHdoaWNoIHNlZW1zIHRvIG5vdCBoYXZlIGJlZW4gcHJvcGVybHkgdXBkYXRlZCBhZnRlciBhZGRpbmcKICAgICAgICBlbnRyeS5iaW5hcnlDb250ZW50ID0gbnVsbCBhIGxpdHRsZSBiZWxvdywgc3VibWl0dGVkIGJ5IEpvZSBaaG91LiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgUHJldmVudCBzaWxlbnQgTlBFcyBkdXJpbmcgU3RhbmRhcmRDb250ZXh0LnN0YXJ0IGRlYWxpbmcgd2l0aCBKTVggcmVnaXN0cmF0aW9uIG9mIHJlYWxtLCBzdWJtaXR0ZWQKICAgICAgICBieSBLZWl0aCBXYW5uYW1ha2VyLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMTU5MjwvYnVnPjogU3VwcG9ydCBvdGhlciBlbmNvZGluZ3MgZm9yIGRpZ2VzdHMuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgPGJ1Zz4zMTczOTwvYnVnPjogTWlub3IgcmVhbG0taG93dG8gYW5kIEFKUCBjb25uZWN0b3IgZG9jIHVwZGF0ZXMuICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMTc1MzwvYnVnPjogTWlub3IgaW5jb25zaXN0ZW5jeSBiZXR3ZWVuIEpEQkMgYW5kIERhdGFTb3VyY2VSZWFsbSNhdXRoZW50aWNhdGUuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgPGJ1Zz4zMTY4MzwvYnVnPjogTWlub3IgY2xhcmlmaWNhdGlvbnMgdG8gcmVhbG0gZG9jdW1lbnRhdGlvbi4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ295b3RlIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgSW1wcm92ZSBpMThuIGluIFRDUCBlbmRwb2ludCwgYW5kIGFkZCBhIGJldHRlciBlcnJvciBtZXNzYWdlIHdoZW4gYW4gZXhjZXB0aW9uIG9jY3VycwogICAgICAgIGluIHNldFNvY2tldE9wdGlvbnMuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMxNjYzPC9idWc+OiBVc2UgaW50ZXJ2YWwgZmllbGQgYXMgdGhlIGRlbGF5IGZvciBtb25pdG9yIHRocmVhZC4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIFJlbW92ZSBiYWQgc2h1dGRvd24gbG9naWMgZm9yIG1zIHBvb2wgc3RyYXRlZ3kuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBTeW5jIHdpdGggQ29va2llLCBieSBhZGRpbmcgJyAnIGFzIGEgc3BlY2lhbCBjaGFyLiBJZiBhIHNwZWNpYWwgY2hhciBpcyBwcmVzZW50LAogICAgICAgIHRoZSBzdHJpbmcgd2lsbCBiZSBxdW90ZWQuIElmIHRoZSBjbGllbnQgZG9lc24ndCBzdXBwb3J0IGl0LCB0aGUgU3RyaW5nIHdpbGwgbm8gYmUgcXVvdGVkIGFueXdheQogICAgICAgIGFuZCBubyBJQUUgd2lsbCBiZSB0aHJvd24uIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICBBZGQgYW4gb3B0aW9uYWwgU3RyaW5nIGNhY2hlIGZvciBCeXRlQ2h1bmsudG9TdHJpbmcgYW5kIENoYXJDaHVuay50b1N0cmluZy4gVGhlIGNhY2hlIGlzCiAgICAgICAgdW5zeW5jaHJvbml6ZWQgZHVyaW5nIG1vc3Qgb2YgaXRzIG9wZXJhdGlvbiwgYW5kIGlzIHN0YXRpYyBhZnRlciBhIHRyYWluaW5nIHBlcmlvZC4gQW4gb3BlcmF0aW9uCiAgICAgICAgaXMgcHJvdmlkZWQgdG8gYWxsb3cgcmVzZXR0aW5nIHRoZSBjYWNoZS4gKHJlbW0pCiAgICAgIDwvYWRkPgogICAgICA8dXBkYXRlPgogICAgICAgIFN0cmluZyBjYWNoaW5nIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBmb3IgQnl0ZUNodW5rLiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMTA5MDwvYnVnPjogVXNlIGEgVVJMIGVuY29kZWQgcGF0aCB3aGVuIHNldHRpbmcgc2Vzc2lvbiBjb29raWVzLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgICA8YWRkPgogICAgICAgICAgQWRkIGdldEF0dHJpYnV0ZU5hbWUoKSB0byBQcm90b2NvbEhhbmRsZXIgdG8gZ2V0IGFsbCBhdHRyaWJ1dGVzIGF0IHJ1bnRpbWUgKHBlcm8pCiAgICAgICA8L2FkZD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iSmFzcGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgRXhwb3NlZCBjb21waWxlclNvdXJjZVZNIGFuZCBjb21waWxlclRhcmdldFZNIG9wdGlvbnMgdG8gSnNwQy4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2x1c3RlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICAgPGZpeD4KICAgICAgICAgIERlbHRhTWFuYWdlciBhbmQgU2ltcGxlVGNwUmVwbGljYXRpb25NYW5hZ2VyIGdlbmVyYXRlIGRvdWJsZSBqdm1Sb3V0ZSAocGVybykKICAgICAgIDwvZml4PgogICAgICAgPGFkZD4KICAgICAgICAgIEFkZCBzb21lIG1pc3NpbmcgR2V0dGVycyBhbmQgbG9nLmlzWFhYRW5hYmxlZHMgKHBlcm8pCiAgICAgICA8L2FkZD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iV2ViYXBwcyI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzE3MDc8L2J1Zz46IEJyb2tlbiBKYXZhU2NyaXB0IGNvbmZpcm1hdGlvbiBpbiBIVE1MIG1hbmFnZXIuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgUmVtb3ZlIGhhcmQtY29kZWQgYWRtaW4gY29udGV4dCBwYXRoIGZyb20gYWRtaW4ncyBiYW5uZXIuanNwLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIE1ham9yIGNvbm5lY3RvciBkb2NzIHVwZGF0ZS4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzE3MzI8L2J1Zz46IEZpeCBKYXBhbmVzZSBsb2NhbGl6YXRpb24gb2YgTWFuYWdlcidzIGxpc3Qgb3V0cHV0LiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKPC9zZWN0aW9uPgoKPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS4zICh5b2F2cykiPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJHZW5lcmFsIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMDU2ODwvYnVnPjogSW5jb21wbGV0ZSBzZXR1cC5odG1sIGRvY3VtZW50YXRpb24gZm9yIGxhdW5jaGluZyBqc3ZjLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIFJlcGFja2FnZSBuYW1pbmcgZmVhdHVyZXMuIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICBGaXggZGVwbG95ZXIgcGFja2FnaW5nLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IGVtYmVkIHBhY2thZ2luZy4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJDYXRhbGluYSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIEZpeCBtZW1vcnkgbGVhayB3aGVuIFNlY3VyaXR5IE1hbmFnZXIgaXMgdHVybmVkIG9uLiAoamZhcmNhbmQpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIFdoZW4gY2hlY2tpbmcgc3RhdHVzIGNvZGVzIGZvciBlcnJvciBoYW5kbGluZywgb25seSBjaGVjayBpZgogICAgICAgIFJlc3BvbnNlLmlzRXJyb3IoKSBpcyB0cnVlLiBUaGlzIHdheSwgdXNlcnMgbWF5IHVzZSBzZXRTdGF0dXMoKSB0byBzZXQgdGhlaXIgb3duCiAgICAgICAgZXJyb3Igc3RhdHVzIHdpdGhvdXQgaGF2aW5nIHRoZSBlcnJvciBwYWdlIGludm9rZWQuIChpbiB3aGljaCBjYXNlLCB0aGUgdXNlciBzaG91bGQndmUKICAgICAgICB1c2Ugc2VuZEVycm9yKCkpIChmdW5rbWFuKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBSZW1vdmUgRGlnZXN0ZXIgY29kZSBmb3IgWGVyY2VzIHdvcmthcm91bmQuIChqZmFyY2FuZCkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgR2l2ZSBwcm9wZXIgcGVybWlzc2lvbiB0byB0aGUgYmFsYW5jZXIgYXBwIHdoZW4gcnVubmluZyB1bmRlciB0aGUgc2VjdXJpdHkgbWFuYWdlci4gKGpmYXJjYW5kKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMwODY5PC9idWc+OiBNYWtlIHN1cmUgSkFBUyByZWFsbSBuYW1lIGlzIGxlZ2FsLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgICAgbWQ1SGVscGVyLCBtZDVFbmNvZGVyLCBhbmQgbm9ybWFsaXplIGFyZSB1c2VkIGJ5IFdlYmRhdlNlcnZsZXQsCiAgICAgICAgICBub3QgRGVmYXVsdFNlcnZlbHQgc28gbW92ZSB0aGVtIGludG8gV2ViZGF2U2VydmxldC4KICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMTI3NzwvYnVnPjogQ2xhcmlmaWVkIGF1dG9tYXRpYyBhcHBsaWNhdGlvbiBkZXBsb3ltZW50IHNlY3Rpb24gb2YgSG9zdCBjb25maWd1cmF0aW9uIHBhZ2UuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgPGZpeD4KICAgICAgIDxidWc+Mjg2MzE8L2J1Zz46IEpBQVNSZWFsbSBlbmhhbmNlbWVudHMgdG8gc3VwcG9ydCBjdXN0b20gdXNlciBhbmQgcm9sZSBjbGFzc2VzICB1c2UgQ29tbW9ucy1Mb2dnaW5nLiAoeW9hdnMpCiAgICAgPC9maXg+CiAgICAgPGZpeD4KICAgICAgIDxidWc+MzEzNjQ8L2J1Zz46IE1pc3NpbmcgcmVzb3VyY2UgaW4gb3JnLmFwYWNoZS5jYXRhbGluYS5jb3JlLkxvY2FsU3RyaW5nLnByb3BlcnRpZXMuICh5b2F2cykKICAgICA8L2ZpeD4KICAgICA8Zml4PgogICAgICAgPGJ1Zz4zMTM2MjwvYnVnPjogTWlzc2luZyAtWGRlYnVnIGluIGNhdGFsaW5hLmJhdCB3aGVuIGxhdW5jaGluZyB3aXRoIEpQREEgYW5kIFNlY3VyaXR5LiAoeW9hdnMpCiAgICAgPC9maXg+CiAgICAgPGZpeD4KICAgICAgIDxidWc+MzEzNTY8L2J1Zz46IER1cGxpY2F0ZXMgbm90IGNvdW50ZWQgaW4gc2Vzc2lvbiBnZW5lcmF0aW9uLiAoeW9hdnMpCiAgICAgPC9maXg+CiAgICAgPGZpeD4KICAgICAgIDxidWc+MzA5NDk8L2J1Zz46IE1ha2Ugc3VyZSBBcHBsaWNhdGlvbkRpc3BhdGNoZXIgdW53cmFwcyByZXF1ZXN0L3Jlc3BvbnNlIGV2ZW4gaWYgaW5jbHVkZSBlcnJvciBvY2N1cnMuICh5b2F2cykKICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXhlZCBTdGFuZGFyZENvbnRleHQuZ2V0U3RhcnRUaW1lKCkgdG8gcmV0dXJuIGFjdHVhbCBzdGFydCB0aW1lL2RhdGUgaW5zdGVhZCBvZiB0aW1lIChzdGFydHVwVGltZSkgaXQgdG9vayB0byBzdGFydCBjb250ZXh0LiAobHVlaGUpCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIGdldFJlcXVlc3QvZ2V0UmVzcG9uc2Ugc2hvdWxkIHJldHVybiB0aGUgbW9zdCByZWxldmFudCBpbnRlcmZhY2UsIHRvIGF2b2lkIGNhc3RzLiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQWRkIGNoZWNrIGZvciBkaXJlY3RvcnkgYmVmb3JlIGNvbnNpZGVyaW5nIHNvbWV0aGluZyBpcyBhIGNvbXByZXNzZWQgV0FSLiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDxkb2NzPgogICAgICAgIFVwZGF0ZSB0aGUgY29ubmVjdG9yIGRvY3VtZW50YXRpb24uIChyZW1tKQogICAgICA8L2RvY3M+CiAgICAgIDxmaXg+CiAgICAgICAgV2hlbiBwYXJzaW5nIGEgY29udGV4dCBmaWxlLCBpZ25vcmUgdGhlICJwYXRoIiBhdHRyaWJ1dGU6CiAgICAgICAgdGhlIG9ubHkgcGxhY2Ugd2hlcmUgaXQgaXMgYWNjZXB0YWJsZSBpcyBpbiBzZXJ2ZXIueG1sLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRGlnZXN0ZXIgaGFuZGxpbmcgZml4ZXM6IGFsd2F5cyBjYWxsIHJlc2V0IGluIGEgZmluYWxseSBibG9jayBhZnRlciB1c2luZyBhIGRpZ2VzdGVyLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgUmVtb3ZlIG1hbnkgZmllbGRzIGZyb20gQ29ubmVjdG9yLCBhbmQgdGllIHRoZSBjcmVhdGlvbiBvZiB0aGUgQ29ubmVjdG9yIHRvIHRoZQogICAgICAgIGNyZWF0aW9uIG9mIHRoZSBwcm90b2NvbCBoYW5kbGVyLiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgUmVtb3ZlIHBhY2thZ2UgdHJpZ2dlcnMgZnJvbSB0aGUgY2xhc3Nsb2FkZXIsIHdoaWNoIHNlZW0gdXNlbGVzcyB3aGVuIHVzaW5nIEphdmEgNS4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIFJlYWxtcyB3aWxsIG5vdyB1c2Ugc2V0IGF0dHJpYnV0ZSB0byBzZXQgdGhlbXNlbHZlcyBpbiB0aGVpciBjb250YWluZXIgd2hlbiB1c2luZyBKTVguIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggSk1YIHJlbGF0ZWQgb3BlcmF0aW9ucyB3aXRoIHRoZSBDb25uZWN0b3IuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggc2F2ZS10by1YTUwgZm9yIG5hbWluZyByZXNvdXJjZXMuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBSZW1vdmUgYXV0aGVudGljYXRvciAiZGVidWciIGF0dHJpYnV0ZXMgZnJvbSB0aGUgZGVzY3JpcHRvcnMuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBSZWZhY3RvciBvcmcuYXBhY2hlLmNhdGFsaW5hLmRlcGxveS5Db250ZXh0WFhYIHRvIHVzZSBuZXcgc3VwZXIgY2xhc3MgUmVzb3VyY2VCYXNlLiAocGVybykKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgRW5hYmxlIENvbm5lY3Rvci5maW5kTGlmZWN5Y2xlTGlzdGVuZXIgdGhhdCB3ZSBjYW4gbGlzdGVuIHN0YXJ0L3N0b3AgQ29ubmVjdG9yIGV2ZW50cyBhbmQgc2F2ZSB0aGUgbGlzdGVuZXIgdG8geG1sLiAocGVybykKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgUmVtb3ZlIFdhdGNoZG9nIHJlZmVyZW5jZXMsIGFzIGl0IGlzIG5vIGxvbmdlciB1c2VkLiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzE1MTE8L2J1Zz46IERvbid0IGNhbGwgc2V0ZW52LmJhdCBpZiBub3QgZm91bmQsIGluICp1c2luZy1sYXVuY2hlciBzY3JpcHRzLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzE1NDk8L2J1Zz46IEFkZCBuYW1lIHRvIFdlYmFwcENsYXNzTG9hZGVyJ3Mgc3RvcHBlZCBtZXNzYWdlLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJDb3lvdGUiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPHVwZGF0ZT4KICAgICAgICBBbGxvdyBjdXN0b21pemVkIHNlcnZlciBoZWFkZXIgZm9yIFN0YW5kYWxvbmUuIChmdW5rbWFuKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICBEaWdlc3Rlci5yZXNldCBub3cgcmVtb3ZlcyB0aGUgZXJyb3IgaGFuZGxlciwgdGhlIHJvb3QgYW5kIGNhbGxzIGNsZWFyLCB0byBwcmV2ZW50CiAgICAgICAgYW55IG1lbW9yeSBsZWFrLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgUmVtb3ZlIHVzZWxlc3Mgc3R1ZmYgaW4gZGlnZXN0ZXIuIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBJbiBIVFRQLCBhZGQgYSB1dGlsaXR5IG1ldGhvZCB0byBjb252ZXJ0IHN0cmluZ3MgdG8gYnl0ZSBhcnJheXMsIGFuZCBvdXRwdXQgdGhlIHNlcnZlciBoZWFkZXIKICAgICAgICBkaXJlY3RseSBhcyBieXRlcy4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8YWRkPgogICAgICAgIEFkZCBhIG1hc3RlciBzbGF2ZSB0aHJlYWQgcG9vbCBiYXNlZCBvbiB0aGUgY29kZSBmcm9tIFRvbWNhdCA0LjAuIEl0IGlzIGxlc3MgZXhvdGljIHRoYW4gdGhlCiAgICAgICAgZGVmYXVsdCBvbmUsIGFuZCBtaWdodCBmYXJlIGJldHRlciBvbiBzb21lIHBpY2t5IHN5c3RlbXMsIHN1Y2ggYXMgUmVkaGF0IDkuIFRoZSB0d28gdGhyZWFkcG9vbHMKICAgICAgICB3aWxsIGxpa2VseSBiZSByZW1vdmVkIG9uY2Ugd2UgdXNlIHRoZSBKYXZhIDUgQVBJLCBhbHRob3VnaCBtb3JlIGludmVzdGlnYXRpb24gaXMgbmVlZGVkLiAocmVtbSkKICAgICAgPC9hZGQ+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IGlzc3VlIHdpdGggZ2V0UHJvcGVydHkgaW4gSW50cm9zcGVjdGlvblV0aWxzLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgUmVtb3ZlIGF0dHJpYnV0ZSB0cmFuc2xhdGlvbiBmb3IgU1NMIGluIHRoZSBIVFRQIHByb3RvY29sIGhhbmRsZXI6IGl0IHdpbGwgbm93IGJlIGRvbmUgaW4gdGhlCiAgICAgICAgQ2F0YWxpbmEgQ29ubmVjdG9yIGNsYXNzLiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IGhhbmRsaW5nIG9mIHRoZSAidGltZW91dCIgYXR0cmlidXRlIG9mIHRoZSBIVFRQIHByb3RvY29sIGhhbmRsZXIuIChyZW1tKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iSmFzcGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMTE3MTwvYnVnPjogV3JhcCB0byBhdm9pZCBDbGFzc0Nhc3RFeGNlcHRpb24gaW4gUGFnZUNvbnRleHRJbXBsLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzEyNTc8L2J1Zz46IEFkZGVkIHNwZWNpZmljYXRpb24gb2YgZW5kb3JzZWQgZGlycyBpZiBmb3JraW5nLiAgTm90ZSB0aGF0IHRoaXMgaXMgZmFpcmx5IHVzZWxlc3MgZm9yIG5vdyBpbiA1LjUgc2luY2UgaXQgdXNlcyBKRFQgYW5kIG5vdCBqYXZhYyBieSBkZWZhdWx0LiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8ZG9jcz4KICAgICAgICBEb2N1bWVudCBuZXcgSmFzcGVyIGRlZmF1bHRzLCBhbmQgdXBkYXRlIHRoZSBwcm9kdWN0aW9uIGNvbmZpZ3VyYXRpb24uIChyZW1tKQogICAgICA8L2RvY3M+CiAgICAgIDxmaXg+CiAgICAgICAgQ29waWVkIFhNTCBlbmNvZGluZyBkZXRlY3Rpb24gbG9naWMgaW50byBKQVNQRVIsIHNvIHdlJ3JlIG5vIGxvbmdlciBkZXBlbmRlbnQgb24gWGVyY2VzLiAobHVlaGUpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCBjb3NtZXRpYyBpc3N1ZSB3aGVyZSBleHRyYSBDUkxGIHdvdWxkIGJlIGluc2VydGVkIGR1cmluZyBlYWNoIHByZWNvbXBpbGF0aW9uIGluIHdlYi54bWwuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBBbGxvdyBjb25maWd1cmluZyB0aGUgaW50ZXJ2YWwgZm9sbG93aW5nIGEgY29tcGlsYXRpb24gZHVyaW5nIHdoaWNoIGEgSlNQIHdpbGwgbm90IGJlIGNoZWNrZWQKICAgICAgICBmb3IgbW9kaWZpY2F0aW9ucy4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzE0NjU8L2J1Zz46IEVuc3VyZSB0aGF0IHRoZSBjb21waWxlciByZWFkcyB0aGUgLmphdmEgZmlsZSB1c2luZyB0aGUgc2FtZSBlbmNvZGluZyBhcyB0aGF0IHdpdGggd2hpY2ggaXQgd2FzIHdyaXR0ZW4uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMTUxMDwvYnVnPjogTnVsbCBvdXQgcmVzcG9uc2UgaW4gSnNwV3JpdGVySW1wbCNyZWN5Y2xlIHRvIGFpZCBpbiBKQm9zcyBtZW1vcnkgbGVhay4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2x1c3RlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8dXBkYXRlPgogICAgICAgIEFkZGVkIGZsYWcgdG8gdGhlIGNsdXN0ZXIgKG5vdGlmeUxpc3RlbmVyc09uUmVwbGljYXRpb24pIHRvIGVuYWJsZS9kaXNhYmxlIHRoZQogICAgICAgIG5vdGlmaWNhdGlvbnMgb2YgYXR0cmlidXRlL2NvbnRleHQgbGlzdGVuZXJzIHVwb24gcmVwbGljYXRpb24gb2YgYSBzZXNzaW9uIGRlbHRhCiAgICAgICAgV29ya3Mgb25seSB3aXRoIHRoZSBEZWx0YU1hbmFnZXIgKGZoYW5paykKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQWRkZWQgZmxhZyB0byB0aGUgY2x1c3RlciAoQ2x1c3Rlci9TZW5kZXIvYWNrVGltZW91dCkgdG8gc2V0IHRoZSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcwogICAgICAgIGZvciBhIHN5bmNocm9ub3VzIHJlcXVlc3QgdG8gZ28gdGhyb3VnaCwgZGVmYXVsdHMgdG8gMTUwMDBtcyAoZmhhbmlrKQogICAgICA8L3VwZGF0ZT4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iV2ViYXBwcyI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mjk0ODU8L2J1Zz46IEkgYnJva2UgdGhlIEhUTUwgbWFuYWdlciB3aGVuIGFkZGluZyBKYXZhU2NyaXB0IGNvbmZpcm1hdGlvbiwgZml4ZWQgbm93IDspICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMTA1ODwvYnVnPjogRW5zdXJlIFN0YXR1c1RyYW5zZm9ybWVyIGVzY2FwZXMgcXVlcnkgc3RyaW5nIGZvciBYTUwuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQWRkZWQgY29udGV4dHMnIHN0YXJ0IHRpbWUgKGF2YWlsYWJsZSBmcm9tICdzdGFydFRpbWUnIE1CZWFuIGF0dHJpYnV0ZSBvZiBTdGFuZGFyZENvbnRleHQpIHRvIHN0YXR1cyBwYWdlIChsdWVoZSkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMTI2NDwvYnVnPjogdGhlIGRlcGxveSB0YXNrIHNob3VsZCBub3cgYmVoYXZlIGNvcnJlY3RseS4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIFJlZmFjdG9yIHRoZSBtYW5hZ2VyIHNlcnZsZXQgdG8gbWFrZSBjYWxscyB0byB0aGUgZGVwbG95ZXIgbW9yZSByb2J1c3QuIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICBVc2UgdGhlIG1vcmUgcm9idXN0IFN0cmluZy52YWx1ZU9mIGluIHRoZSBmb3JtIGVkaXQgYWN0aW9uIG9mIHRoZSBjb25uZWN0b3IuIChyZW1tKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KPC9zZWN0aW9uPgoKCjxzZWN0aW9uIG5hbWU9IlRvbWNhdCA1LjUuMiAoeW9hdnMpIj4KICA8c3Vic2VjdGlvbiBuYW1lPSJHZW5lcmFsIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgVGhlIGluc3RhbGxlciB3aWxsIG5vdyB1c2UgdGhlIHN5c3RlbSdzIEpSRS4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJDYXRhbGluYSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIEZpeCBVUkwgZ2VuZXJhdGlvbiBmb3IgY2xhc3Nsb2FkZXJzIG9uIFdpbmRvd3MsIGNhdXNpbmcgY29tbW9uL2NsYXNzZXMgYW5kIHNoYXJlZC9jbGFzc2VzCiAgICAgICAgdG8gYmUgdW51c2FibGUgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzExMTA8L2J1Zz46IEZpeCByZXNvdXJjZSBwYWNrYWdpbmcgYnVnIGZvciBzZXJ2bGV0cyAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IDUuNSByZWdyZXNzaW9uIHdoZXJlIGdvaW5nIHRocm91Z2ggdGhlIGF1dGhlbnRpY2F0b3Igd291bGQgY3JlYXRlIGEgc2Vzc2lvbiBlYWNoIHRpbWUuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggY2xhc3NuYW1lIG9mIHRoZSBjb25uZWN0b3IgaW4gRW1iZWRkZWQsIGFuZCByZW1vdmUgdGhlIHNvY2tldCBmYWN0b3J5LiAocmVtbSkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9IkNveW90ZSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIFJlZG8gc2VydmVyIGhlYWRlciBoYW5kbGluZyBhZ2Fpbi4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIENsZWFudXAgYSBsaXR0bGUgYWNjZXNzIHRvIHRoZSBoZWFkZXJzIHVzaW5nIGEgbG9jYWwgdmFyaWFibGUgYW5kCiAgICAgICAgdXNlIHNldFZhbHVlIGZvciBTZXJ2ZXIgYW5kIERhdGUgaGVhZGVycy4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJKYXNwZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBSZW1vdmUgbWF4VGFnTmVzdGluZyBhbmQgY3VyVGFnTmVzdGluZyBzaW5jZSB0aGV5IGFyZSB1bnVzZWQuIChmdW5rbWFuKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggdGFnIGZpbGVzIGhhbmRsaW5nIHdpdGggSkRULCB3aGljaCB3ZXJlIHVzdXNhYmxlLCBhbmQgcmVmYWN0b3IgdGhlIGxpZmVjeWNsZSBoYW5kbGluZyBvZgogICAgICAgIHRoZSBwYWdlIGxvYWRlci4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJDbHVzdGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9IldlYmFwcHMiPgogICAgPGNoYW5nZWxvZz4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KPC9zZWN0aW9uPgoKPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS4xICh5b2F2cykiPgogIDxzdWJzZWN0aW9uIG5hbWU9IkdlbmVyYWwiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPHVwZGF0ZT4KICAgICAgICBUb21jYXQgNS41IGNhbiBiZSBidWlsdCBvbiBKREsgNS4wLiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIFdpbmRvd3MgaW5zdGFsbGVyIHBvbGlzaC4gKG1sYWRlbiwgcmVtbSkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgUmVtb3ZlIGRlcGVuZGVuY3kgb24gSmFrYXJ0YSByZWdleHAuIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2F0YWxpbmEiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBBbGxvdyBvdmVycmlkaW5nIHRoZSBsb2NhdGlvbiBvZiB0aGUgZGVmYXVsdCBjb250ZXh0IGZpbGUsIHNpbWlsYXIgdG8gdGhlIGRlZmF1bHQKICAgICAgICB3ZWIueG1sLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQmFja3BvcnQgaWYtZWxzZSBsb2dpYyBmb3IgU1NJIHNlcnZsZXQgZnJvbSA0LjEgKGZ1bmttYW4pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIFJlbW92ZSBEZWZhdWx0Q29udGV4dCBlbGVtZW50cyBmcm9tIHRoZSBkaWdlc3RlciBydWxlcy4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCBSZXNvdXJjZUxpbmsgaGFuZGxpbmcuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBNb2RpZnkgdGhlIGF1dG8gZGVwbG95ZXIgdG8gZ2V0IGFsb25nIHdpdGggY29udGV4dHMgd2hpY2ggYXJlIHN0YXRpY2FsbHkgZGVmaW5lZCBpbiBzZXJ2ZXIueG1sLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRXh0ZXJuYWxpemUgY29uc3RhbnQgc3RyaW5ncyBkZWZpbmluZyB0aGUgbG9jYXRpb24gb2YgZGVwbG95bWVudCByZWxhdGVkIHJlc291cmNlcy4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzEwNTI8L2J1Zz46IEJlYW5GYWN0b3J5IHN3YWxsb3dzIHJvb3QgY2F1c2Ugb2YgZXhjZXB0aW9uLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEFsbG93IHVzaW5nIGRlcGxveSBBbnQgdGFzayB3aXRoIGp1c3QgY29uZmlnIGF0dHJpYnV0ZSwgc3VibWl0dGVkIGJ5IE1pY2hhZWwgU2NodWVyaWcuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICBBZGRlZCBsb25nZXN0IHRpbWUgYW4gZXhwaXJlZCBzZXNzaW9uIGhhZCBiZWVuIGFsaXZlIHRvIHNldCBvZiBtb25pdG9yYWJsZSBzZXNzaW9uIG1hbmFnZXIgYXR0cmlidXRlcy4gKGx1ZWhlKQogICAgICA8L2FkZD4KICAgICAgPGFkZD4KICAgICAgICBBZGRlZCBhdmVyYWdlIHRpbWUgYW4gZXhwaXJlZCBzZXNzaW9uIGhhZCBiZWVuIGFsaXZlIHRvIHNldCBvZiBtb25pdG9yYWJsZSBzZXNzaW9uIG1hbmFnZXIgYXR0cmlidXRlcy4gKGx1ZWhlKQogICAgICA8L2FkZD4KICAgICAgPGZpeD4KICAgICAgICBDbGVhciBhIHJlZmVyZW5jZSBpbiB0aGUgZGlnZXN0ZXIgd2hlcmUgYSBjb250ZXh0IHdvdWxkIGJlIHJlZmVyZW5jZWQgZm9yIG1vcmUgdGltZSB0aGFuIGl0CiAgICAgICAgbmVlZGVkLCB1bnRpbCB0aGUgbmV4dCBjb250ZXh0IGRlcGxveW1lbnQgb3BlcmF0aW9uLiAocmVtbSkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9IkNveW90ZSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzEwMTg8L2J1Zz46IFJhY2UgY29uZGl0aW9uIGluIFN5c3RlbUxvZ0hhbmRsZXIuICh5b2F2cykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9Ikphc3BlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIFVzZSB0aGUgImNvbXBpbGVyIiBwYXJhbWV0ZXIgdG8gYWxsb3cgc3BlY2lmeWluZyB0aGF0IEFudCBzaG91bGQgYmUgdXNlZC4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIElnbm9yZSBKRFQgY29tcGlsZXIgd2FybmluZ3MuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICBBZGRlZCBjb21waWxlclRhcmdldFZNIG9wdGlvbiBzdXBwb3J0LCAiMS40IiBkZWZhdWx0LiAoeW9hdnMpCiAgICAgIDwvYWRkPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJDbHVzdGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IGFkZGluZyB0aGUgY2x1c3RlcmluZyB2YWx2ZSwgc28gdGhhdCBzZXNzaW9uIHJlcGxpY2F0aW9uIGFjdHVhbGx5IG9jY3Vycy4gKGZoYW5paykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9IldlYmFwcHMiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPHVwZGF0ZT4KICAgICAgICBNYWpvciBkb2N1bWVudGF0aW9uIHVwZGF0ZSB3aXRoIGN1cnJlbnQgVG9tY2F0IDUuNSBjaGFuZ2VzLiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQWRkZWQgSmF2YVNjcmlwdCBjb25maXJtYXRpb24gZGlhbG9nIHRvICJkYW5nZXJvdXMiIE1hbmFnZXIgc2VydmxlciBsaW5rcy4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KPC9zZWN0aW9uPgoKPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS4wICh5b2F2cykiPgogIDxzdWJzZWN0aW9uIG5hbWU9IkdlbmVyYWwiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPHVwZGF0ZT4KICAgICAgICBNYW55IHVwZGF0ZWQgYW5kIGZpeGVkIEphdmFEb2NzLiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIERlc2lnbmVkIGFuZCB0ZXN0ZWQgVG9tY2F0IG9uIEoyU0UgNS4wIChha2EgSkRLIDEuNSkuIChldmVyeW9uZSkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQnVuZGxlZCBFY2xpcHNlIEpEVCAobmV3IGRlcGVuZGVuY3kpIHRvIGFsbG93IFRvbWNhdCB0byBydW4gb24gYSBKUkUgb25seSwgaS5lLiBubyBKREsgcmVxdWlyZWQuIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBSZXBhY2thZ2UgY29tbW9ucy1kYmNwIGFuZCBpdHMgZGVwZW5kZW5jaWVzIGFzIGEgc2lnbGUgc21hbGxlciBXQVIsIHdpdGggcmVuYW1lZCBwYWNrYWdlcy4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFJlbW92ZWQgZGVwZW5kZW5jaWVzIG9uIGNvbW1vbnMtZGlnZXN0ZXIsIGNvbW1vbnMtYmVhbnV0aWxzLCBhbmQgY29tbW9ucy1jb2xsZWN0aW9ucy4KICAgICAgICBUaGUgcmVsZXZhbnQgZGlnZXN0ZXIgZnVuY3Rpb25hbGl0eSBpcyBub3cgbWVyZ2VkIGluIHRvbWNhdC11dGlsLiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9IkNhdGFsaW5hIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgUmVtb3ZlZCB1c2FnZSBvZiBvcmcuYXBhY2hlLmNhdGFsaW5hLkxvZ2dlciwgaW5jcmVhc2VkIHVzYWdlIG9mIGNvbW1vbnMtbG9nZ2luZyBldmVyeXdoZXJlLiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgUmVmYWN0b3JlZCBjbGFzc2xvYWRlciBjb2RlIHRvIGJldHRlciBoYW5kbGUgSkFSIGFuZCBnZW5lcmFsIHJlc291cmNlIGxvY2tpbmcuIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBXcml0dGVuIEpNWC1yZWxhdGVkIGNvZGUgdG8gcGxheSBuaWNlbHkgd2l0aCBKMlNFIDUuMCBidWlsdC1pbiBKTVggYWJpbGl0aWVzLiAocmVtbSwgY29zdGluKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBFeHRlbnNpdmVseSBwcm9maWxlZCBhbmQgb3B0aW1pemVkIHRoZSBzZXJ2ZXIgc3RhcnR1cCBwZXJmb3JtYW5jZSBhcyB3ZWxsIGFzIHRoZSByZXF1ZXN0IG1hcHBpbmcgYW5kIHByb2Nlc3NpbmcgcGlwZWxpbmUuIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBUaGUgY29udGFpbmVyIHdpbGwgbm93IGFsd2F5cyBwcm9jZXNzIGEgL01FVEEtSU5GL2NvbnRleHQueG1sIHJlc291cmNlLCB1bmxlc3MgdGhlIHdlYmFwcCBoYXMgYSBzcGVjaWZpZWQgZXh0ZXJuYWwgY29udGV4dCBmaWxlLiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgTmV3IGRlZmF1bHQgY29uZmlndXJhdGlvbiBtZWNoYW5pc20gZm9yIHdlYiBhcHBsaWNhdGlvbnMsIHJlcGxhY2luZyBEZWZhdWx0Q29udGV4dC4gVGhpcyB1c2VzIGEKICAgICAgICBzaGFyZWQgY29udGV4dCBmaWxlIGxvY2F0ZWQgaW4gY29uZi9jb250ZXh0LnhtbC4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFJldmFtcGVkIGRlcGxveWVyLCBhbGxveWluZyBmdWxsIGhvdGRlcGxveSAobm90ZTogb24gV2luZG93cywgdGhpcyByZXF1aXJlcyB0aGUgYW50aSBmaWxlIGxvY2tpbmcKICAgICAgICBmZWF0dXJlcykuIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBSZW1vdmUgdmVyYm9zaXR5IGZyb20gdGhlIEpOREkgcmVzb3VyY2VzIGNvbmZpZ3VyYXRpb24sIGJ5IGFsbG93aW5nIGFyYml0cmFyeSBhdHRyaWJ1dGVzIG9uIHRoZSBSZXNvdXJjZSBlbGVtZW50LiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgU2ltcGxlciBWYWx2ZSBpbnRlcmZhY2UsIHRvIGFsbG93IHNtYWxsZXIgc3RhY2sgdHJhY2VzIGFuZCByZWR1Y2luZyB0aGUgYW1vdW50IG9mIG1ldGhvZCBjYWxscy4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJDb3lvdGUiPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iSmFzcGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgRWNsaXBzZSBKRFQgaXMgbm93IHRoZSBkZWZhdWx0IEphdmEgY29tcGlsZXIgaW4gSmFzcGVyLiBTb3VyY2UgZGVwZW5kZW5jaWVzIGFyZSBub3cgbG9hZGVkIGZyb20KICAgICAgICB0aGUgY29udGFpbmVyIGNsYXNzbG9hZGVyLCBhbmQgY29tcGlsYXRpb24gdGltZXMgYXJlIG11Y2ggZmFzdGVyLiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgSmFzcGVyIGRldmVsb3BtZW50IG1vZGUgc2hvdWxkIG5vdyBoYXZlIGFjY2VwdGFibGUgcGVyZm9ybWFuY2UgZm9yIGhlYXZpbHkgYWNjZXNzZWQgcGFnZXMuCiAgICAgICAgUHJlY29tcGlsaW5nIEpTUHMgaXMgc3RpbGwgc2lnbmlmaWNhbnRseSBtb3JlIGVmZmljaWVudCwgaG93ZXZlci4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJDbHVzdGVyIj4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9IldlYmFwcHMiPgogICAgPGNoYW5nZWxvZz4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KPC9zZWN0aW9uPgoKPC9ib2R5Pgo8L2RvY3VtZW50Pgo=