PCEtLSAqKiogV2luZSBGQVEgKioqIC0tPgogIDx0aXRsZT5XaW5lIEZBUTwvdGl0bGU+CgogIDxxYW5kYXNldD4KICAgIDxxYW5kYWRpdiBpZD0iQWJvdXQtdGhpcy1GQVEiPjx0aXRsZT5BYm91dCB0aGlzIEZBUTwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ildoby1tYWludGFpbnMtdGhpcy1GQVEiPgogICAgICAgIDxwYXJhPldobyBtYWludGFpbnMgdGhpcyBGQVEgPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT5EYXZlIEdhcmRuZXIgbWFpbnRhaW5lZCBpdCBmcm9tIDE5OTUtMTk5OC48L3BhcmE+CiAgICAgICAgPHBhcmE+RG91Z2xhcyBSaWRnd2F5IHRvb2sgaXQgb3ZlciBpbiAxOTk5LjwvcGFyYT4KICAgICAgICA8cGFyYT5BbmRyZWFzIE1vaHIgY29udmVydGVkIGl0IHRvIEZBUS1PLU1hdGljIGluIDIwMDAuPC9wYXJhPgogICAgICAgIDxwYXJhPkRpbWl0cmllIE8uIFBhdW4sIEtlaXRoIE1hdHRoZXdzIGFuZCBUb20gV2lja2xpbmUgKGluIGFscGhhYmV0aWNhbCBvcmRlcikgcmVvcmdhbml6ZWQgaXQgaW4gMjAwMi48L3BhcmE+CiAgICAgICAgPHBhcmE+Rm9yIHN1Z2dlc3Rpb25zL2FkZGl0aW9ucy9jb21wbGFpbnRzIHJlZ2FyZGluZyB0aGlzIEZBUSwgcGxlYXNlIHNlbmQgYW4gZW1haWwgdG8KICAgICAgICA8dWxpbmsgdXJsPSJtYWlsdG86d2luZS1mYXFAd2luZWhxLm9yZyI+d2luZS1mYXFAd2luZWhxLm9yZzwvdWxpbms+PC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGF0LWlzLXRoZS1jb3B5cmlnaHQtb24tdGhlLUZBUS1BbmQiPgogICAgICAgIDxwYXJhPldoYXQgaXMgdGhlIGNvcHlyaWdodCBvZiB0aGlzIEZBUT8gQW5kIGhvdyBtYXkgSSB1c2UgaXQ/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPlRoZSBvcmlnaW5hbCBXaW5lIEZBUSwgd2hpY2ggdGhpcyBGQVEgd2FzIGJhc2VkIG9uLCB3YXMgY29weXJpZ2h0ICZjb3B5OyAxOTk1LTE5OTggRGF2aWQgR2FyZG5lci48L3BhcmE+CiAgICAgICAgPHBhcmE+SXQgbWF5IGJlIHJlcHJvZHVjZWQgYW5kIG1vZGlmaWVkIHVuZGVyIHRoZSBzYW1lIHRlcm1zIGFzIFdpbmUgaXRzZWxmLjwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgIDwvcWFuZGFkaXY+CiAgICA8cWFuZGFkaXYgaWQ9IkdlbmVyYWwtUXVlc3Rpb25zLWFib3V0LVdpbmUiPgogICAgICA8dGl0bGU+R2VuZXJhbCBRdWVzdGlvbnMgYWJvdXQgV2luZTwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgoKICAgICAgPHF1ZXN0aW9uIGlkPSJXaGF0LWlzLVdpbmUtYW5kLXdoYXQtaXMtaXQtc3VwcG9zZWQtdG8iPgogICAgICAgIDxwYXJhPldoYXQgaXMgV2luZSBhbmQgd2hhdCBpcyBpdCBzdXBwb3NlZCB0byBkbz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIGlzIGEgcHJvZ3JhbSB3aGljaCBhbGxvd3MgdGhlIG9wZXJhdGlvbiBvZiBET1MgYW5kIE1TCiAgICAgICAgICBXaW5kb3dzIHByb2dyYW1zIChXaW5kb3dzIDMueCBhbmQgV2luMzIgZXhlY3V0YWJsZXMpIG9uIFVOSVggb3BlcmF0aW5nIHN5c3RlbXMgc3VjaCBhcyBMaW51eC4gCiAgICAgICAgICBJdCBjb25zaXN0cyBvZiBhIHByb2dyYW0gbG9hZGVyLCB3aGljaCBsb2FkcyBhbmQgZXhlY3V0ZXMgYSBXaW5kb3dzCiAgICAgICAgICBiaW5hcnksIGFuZCBhIHNldCBvZiBsaWJyYXJpZXMgdGhhdCBpbXBsZW1lbnRzIFdpbmRvd3MgQVBJIGNhbGxzCiAgICAgICAgICB1c2luZyB0aGVpciBVTklYIG9yIFgxMSBlcXVpdmFsZW50cy4gVGhlIGxpYnJhcmllcyBtYXkgYWxzbyBiZSB1c2VkCiAgICAgICAgICBmb3IgcG9ydGluZyBXaW4zMiBjb2RlIGludG8gbmF0aXZlIFVOSVggZXhlY3V0YWJsZXMsIG9mdGVuCiAgICAgICAgICB3aXRob3V0IG1hbnkgY2hhbmdlcyBpbiB0aGUgc291cmNlLiBXaW5lIGlzIGZyZWUgc29mdHdhcmUsIAogICAgICAgICAgYW5kIGl0cyBsaWNlbnNlIChjb250YWluZWQgaW4gdGhlIGZpbGUgTElDRU5TRQogICAgICAgICAgaW4gZWFjaCBkaXN0cmlidXRpb24pIGlzIHRoZSBMR1BMLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSXMtV2luZS1hbi1lbXVsYXRvciI+CiAgICAgICAgPHBhcmE+RG9lcyBXaW5lIGVtdWxhdGUgYSBmdWxsIGNvbXB1dGVyPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE5vLCBhcyB0aGUgbmFtZSBzYXlzLCBXaW5lIElzIE5vdCBhIChDUFUpIEVtdWxhdG9yLiBXaW5lIGp1c3QKICAgICAgICAgIHByb3ZpZGVzIHRoZSBXaW5kb3dzIEFQSS4gVGhpcyBtZWFucyB0aGF0IHlvdSB3aWxsIG5lZWQgYW4KICAgICAgICAgIHg4Ni1jb21wYXRpYmxlIHByb2Nlc3NvciB0byBydW4gYW4geDg2IFdpbmRvd3MgYXBwbGljYXRpb24sIGZvciBpbnN0YW5jZSBmcm9tIEludGVsIG9yIEFNRC4gVGhlCiAgICAgICAgICBhZHZhbnRhZ2UgaXMgdGhhdCwgdW5saWtlIHNvbHV0aW9ucyB0aGF0IHJlbHkgb24gQ1BVIGVtdWxhdGlvbiwgV2luZQogICAgICAgICAgcnVucyBhcHBsaWNhdGlvbnMgYXQgZnVsbCBzcGVlZC4gU29tZXRpbWVzIGEgcHJvZ3JhbSBydW4gdW5kZXIKCSAgV2luZSB3aWxsIGJlIHNsb3dlciB0aGFuIHdoZW4gcnVuIG9uIGEgY29weSBvZiBNaWNyb3NvZnQgV2luZG93cywgYnV0CgkgIHRoaXMgaXMgbW9yZSBkdWUgdG8gdGhlIGZhY3QgdGhhdCBNaWNyb3NvZnQgaGFzIGhlYXZpbHkgb3B0aW1pemVkIHBhcnRzIG9mIHRoZWlyCgkgIGNvZGUsIHdoZXJlYXMgbW9zdGx5IFdpbmUgaXMgbm90IHdlbGwgb3B0aW1pemVkICh5ZXQpLiBPY2Nhc2lvbmFsbHksIGFuIGFwcAoJICBtYXkgcnVuIGZhc3RlciB1bmRlciBXaW5lIHRoYW4gb24gV2luZG93cy4gTW9zdCBhcHBzIHJ1biBhdCByb3VnaGx5IHRoZSBzYW1lIHNwZWVkLgogICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iQXJlLWhlcmUtYW55LWFsdGVybmF0aXZlcy10by1XaW5lIj4KICAgICAgICA8cGFyYT5BcmUgdGhlcmUgYW55IGFsdGVybmF0aXZlcyB0byBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFllcywgdGhlcmUgYXJlLiBZb3UgY2FuIHVzZSA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LnZtd2FyZS5jb20iPlZNV2FyZTwvdWxpbms+IHRvIHJ1biBhIFdpbmRvd3MgaW5zdGFsbGF0aW9uIGluc2lkZSBhIHZpcnR1YWwgbWFjaGluZSwKCSAgb3IgdXNlIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luNGxpbi5jb20iPldpbjRMaW48L3VsaW5rPgoJICB0byBydW4gYSBzcGVjaWFsbHkgYWRhcHRlZCBXaW5kb3dzIHZlcnNpb24gb24gTGludXguCgkgIEJvdGggc29sdXRpb25zIGNvc3QgbW9uZXkgZm9yIGJvdGggdGhlIHNvZnR3YXJlIGl0c2VsZgoJICBhbmQgYSBXaW5kb3dzIGxpY2Vuc2UuCiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICAgTm90ZSB0aGF0LCBsaWtlIFdpbmUsIHRoZXkgY2FuIG9ubHkgdXNlIHRoZSBoYXJkd2FyZSBwbGF0Zm9ybSB0aGF0CiAgICAgICAgIHRoZSB0YXJnZXQgcHJvZ3JhbXMgd2VyZSBvcmlnaW5hbGx5IGNvbXBpbGVkIGZvciAoc2VlIGJlbG93KS4KICAgICAgIDwvcGFyYT4KCiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgICAgICAKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iRGlmZmVyZW5jZS1iZXR3ZWVuLVdpbmUtYW5kLWVtdWxhdG9ycyI+CiAgICAgICAgPHBhcmE+V2hhdCBpcyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIFdpbmUgYW5kIHg4NiBoYXJkd2FyZSBlbXVsYXRvcnM/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlcmUgYXJlIHR3byBmcmVlIHg4NiBoYXJkd2FyZSBlbXVsYXRvcnM6CiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vYm9jaHMuc291cmNlZm9yZ2UubmV0Ij5Cb2NoczwvdWxpbms+LCBhbmQKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly9zYXZhbm5haC5ub25nbnUub3JnL3Byb2plY3RzL3BsZXg4NiI+UGxleDg2PC91bGluaz4uCiAgICAgICA8L3BhcmE+CgogICAgICAgPHBhcmE+CiAgICAgICAgICBQbGV4ODYgaXMgdGhlIG9wZW4tc291cmNlIGZyZWUtc29mdHdhcmUgYWx0ZXJuYXRpdmUgZm9yIFZNV2FyZSwKCSAgVmlydHVhbFBDLCBhbmQgb3RoZXIgSUEtMzIgb24gSUEtMzIgIlZpcnR1YWwgUEMgcHJvZHVjdHMuIiBJdAogICAgICAgICAgY2FuIG9ubHkgcnVuIG9uIHRoZSBJQS0zMiBhcmNoaXRlY3R1cmUuCiAgICAgICA8L3BhcmE+CgogICAgICAgPHBhcmE+CiAgICAgICAgICBCb2NocyBpcyBhIGhpZ2hseSBwb3J0YWJsZSBvcGVuIHNvdXJjZSBJQS0zMiAoeDg2KSBQQyBlbXVsYXRvciAKICAgICAgICAgIHdyaXR0ZW4gaW4gQysrLCB0aGF0IHJ1bnMgb24gbW9zdCBwb3B1bGFyIHBsYXRmb3Jtcy4gSXQgaW5jbHVkZXMgZW11bGF0aW9uCiAgICAgICAgICBvZiB0aGUgSW50ZWwgeDg2IENQVSwgY29tbW9uIEkvTyBkZXZpY2VzLCBhbmQgYSBjdXN0b20gQklPUy4gQ3VycmVudGx5LCAKICAgICAgICAgIEJvY2hzIGNhbiBiZSBjb21waWxlZCB0byBlbXVsYXRlIGEgMzg2LCA0ODYgb3IgUGVudGl1bSBDUFUuIEJvY2hzIGlzIGNhcGFibGUKICAgICAgICAgIG9mIHJ1bm5pbmcgbW9zdCBPcGVyYXRpbmcgU3lzdGVtcyBpbnNpZGUgdGhlIGVtdWxhdGlvbiBpbmNsdWRpbmcgTGludXgsIAogICAgICAgICAgV2luZG93c64gOTUsIERPUywgYW5kIHJlY2VudGx5IFdpbmRvd3OuIE5UIDQuCiAgICAgICA8L3BhcmE+CgogICAgICAgPHBhcmE+CiAgICAgICAgICBCb3RoIGFyZSBsaWNlbnNlZCB1bmRlciB0aGUgR1BMLiBCb2NocyBpcyBvbGRlciB0aGFuIFBsZXg4Niwgc2VlbXMgdG8gYmUKICAgICAgICAgIGVhc2llciB0byBpbnN0YWxsLCBidXQgUGxleDg2IHdpbGwgcnVuIGZhc3RlciBiZWNhdXNlIFBsZXg4NiB1c2VzIGEganVzdCBpbgogICAgICAgICAgdGltZSBiaW5hcnkgY29tcGlsZXIuCiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBkcmF3YmFjayBvZiBhbGwgZW11bGF0b3JzIGlzIHRoYXQgeW91IG5lZWQgYSB2ZXJzaW9uCiAgICAgICAgICBvZiBXaW5kb3dzIGluIG9yZGVyIHRvIHJ1biBXaW5kb3dzLCBhbmQgdGhhdCB0aGV5IGFsbCBoYXZlIGFuCiAgICAgICAgICBpbXBhY3Qgb24gcGVyZm9ybWFuY2UuIFdpbmUgYWxzbyBnaXZlcyBtdWNoIGJldHRlciBkZXNrdG9wIGludGVncmF0aW9uIC0gZm9yCgkgIGluc3RhbmNlLCBwcm9ncmFtcyB1c2UgeW91ciBzdGFuZGFyZCB3aW5kb3cgbWFuYWdlciwgc3lzdGVtIHRyYXkgaWNvbnMgd2lsbAoJICBhcHBlYXIgaW4geW91ciB0cmF5IGFyZWEgKGlmIHlvdSBoYXZlIG9uZSksIGFuZCB5b3UgY2FuIHJ1biBwcm9ncmFtcyBkaXJlY3QgZnJvbSB0aGUKCSAgY29tbWFuZCBsaW5lIGFzIHdlbGwgYXMgbWVudXMuIFRoZSBjbGlwYm9hcmQgYWxzbyB3b3JrcyBzZWFtbGVzc2x5IGF0IHRoaXMgdGltZS4KICAgICAgIDwvcGFyYT4KCiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJbnRlZ3JhdGUtYW4teDg2LWVtdWxhdG9yIj4KICAgICAgICA8cGFyYT5XaGVuIHdpbGwgV2luZSBpbnRlZ3JhdGUgYW4geDg2IENQVSBlbXVsYXRvciBzbyB3ZSBjYW4KICAgICAgICAgIHJ1biBXaW5kb3dzIGFwcGxpY2F0aW9ucyBvbiBub24teDg2IG1hY2hpbmVzPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBzaG9ydCBhbnN3ZXIgaXMgJ3Byb2JhYmx5IG5ldmVyJy4gUmVtZW1iZXIsIFdpbmUgSXMgTm90IGEKICAgICAgICAgIChDUFUpIEVtdWxhdG9yLiBUaGUgbG9uZyBhbnN3ZXIgaXMgdGhhdCB3ZSBwcm9iYWJseSBkb24ndCB3YW50IG9yCiAgICAgICAgICBuZWVkIHRvIGludGVncmF0ZSBvbmUgaW4gdGhlIHRyYWRpdGlvbmFsIHNlbnNlLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEludGVncmF0aW5nIGEgQ1BVIGVtdWxhdG9yIGluIFdpbmUgd291bGQgYmUgZXh0cmVtZWx5IGhhcmQsCiAgICAgICAgICBkdWUgdG8gdGhlIGxhcmdlIG51bWJlciBvZiBXaW5kb3dzIEFQSXMgYW5kIHRoZSBjb21wbGV4CiAgICAgICAgICBkYXRhIHR5cGVzIHRoZXkgZXhjaGFuZ2UuIEl0IGlzIG5vdCB1bmNvbW1vbiBmb3IgYSBXaW5kb3dzIEFQSSB0bwogICAgICAgICAgdGFrZSB0aHJlZSBvciBtb3JlIHBvaW50ZXJzIHRvIHN0cnVjdHVyZXMgY29tcG9zZWQgb2YgbWFueSBmaWVsZHMsCiAgICAgICAgICBpbmNsdWRpbmcgcG9pbnRlcnMgdG8gb3RoZXIgY29tcGxleCBzdHJ1Y3R1cmVzLiBGb3IgZWFjaCBvZiB0aGVzZQogICAgICAgICAgd2Ugd291bGQgbmVlZCBhIGNvbnZlcnNpb24gcm91dGluZSB0byBkZWFsIHdpdGggdGhlIGJ5dGUgb3JkZXIgYW5kCiAgICAgICAgICBhbGlnbm1lbnQgaXNzdWVzLiBGdXJ0aGVybW9yZSwgV2luZG93cyBhbHNvIGNvbnRhaW5zIG1hbnkgY2FsbGJhY2sKICAgICAgICAgIG1lY2hhbmlzbXMgdGhhdCBjb25zdGl0dXRlIGFzIG1hbnkgZXh0cmEgcGxhY2VzIHdoZXJlIHdlIHdvdWxkIGhhdmUKICAgICAgICAgIHRvIGhhbmRsZSB0aGVzZSBjb252ZXJzaW9uIGlzc3Vlcy4gV2luZSBhbHJlYWR5IGhhcyB0byBkZWFsIHdpdGgKICAgICAgICAgIDE2IHZzLiAzMiBiaXQgQVBJcyBhbmQgQW5zaSB2cy4gVW5pY29kZSBBUElzIHdoaWNoIGJvdGgKICAgICAgICAgIGludHJvZHVjZSBzaWduaWZpY2FudCBjb21wbGV4aXR5LiBBZGRpbmcgc3VwcG9ydCBmb3IgYSBDUFUgZW11bGF0b3IKICAgICAgICAgIGluc2lkZSBXaW5lIHdvdWxkIGludHJvZHVjZSBhdCBsZWFzdCBkb3VibGUgdGhhdCBjb21wbGV4aXR5IGFuZAogICAgICAgICAgb25seSBzZXJ2ZSB0byBzbG93IGRvd24gdGhlIGRldmVsb3BtZW50IG9mIFdpbmUuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgRm9ydHVuYXRlbHkgYW5vdGhlciBzb2x1dGlvbiBleGlzdHMgdG8gcnVuIFdpbmRvd3MgYXBwbGljYXRpb25zCiAgICAgICAgICBvbiBub24teDg2IHBsYXRmb3JtczogcnVuIGJvdGggV2luZSBhbmQgdGhlIGFwcGxpY2F0aW9uIGluc2lkZSB0aGUKICAgICAgICAgIENQVSBlbXVsYXRvci4gQXMgbG9uZyBhcyB0aGUgZW11bGF0b3IgcHJvdmlkZXMgYSBzdGFuZGFyZCBVbml4CiAgICAgICAgICBlbnZpcm9ubWVudCwgV2luZSBzaG91bGQgb25seSBuZWVkIG1pbmltYWwgbW9kaWZpY2F0aW9ucy4gV2hhdAogICAgICAgICAgcGVyZm9ybWFuY2UgeW91IGxvc2UgZHVlIHRvIFdpbmUgcnVubmluZyBpbnNpZGUgdGhlIGVtdWxhdG9yCiAgICAgICAgICByYXRoZXIgdGhhbiBuYXRpdmVseSwgeW91IGdhaW4gaW4gY29tcGxleGl0eSBpbnNpZGUgb2YgV2luZS4KICAgICAgICAgIEZ1cnRoZXJtb3JlLCBpZiB0aGUgZW11bGF0b3IgaXMgZmFzdCBlbm91Z2ggdG8gcnVuIFdpbmRvd3MKICAgICAgICAgIGFwcGxpY2F0aW9ucywgUGhvdG9zaG9wIGZvciBpbnN0YW5jZSwgdGhlbiBpdCBzaG91bGQgYmUgZmFzdCBlbm91Z2gKICAgICAgICAgIHRvIHJ1biB0aGF0IHNhbWUgV2luZG93cyBhcHBsaWNhdGlvbiBwbHVzIFdpbmUuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVHdvIHByb2plY3RzIGhhdmUgc3RhcnRlZCBhbG9uZyB0aG9zZSBsaW5lczogPHVsaW5rCiAgICAgICAgICB1cmw9Imh0dHA6Ly9mYWJyaWNlLmJlbGxhcmQuZnJlZS5mci9xZW11LyI+UUVNVTwvPiwgYW4KICAgICAgICAgIG9wZW4tc291cmNlIHByb2plY3QsIGFuZCA8dWxpbmsKICAgICAgICAgIHVybD0iaHR0cDovL3d3dy50cmFuc2l0aXZlcy5jb20vdGVjaF9vdmVydmlldy5odG0iPkR5bmFtaXRlPC8+LAogICAgICAgICAgYSBjb21tZXJjaWFsIENQVSBlbXVsYXRvciBlbnZpcm9ubWVudCBmcm9tCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LnRyYW5zaXRpdmVzLmNvbS8iPlRyYW5zaXRpdmVzIFRlY2hub2xvZ2llczwvPi4KICAgICAgICA8L3BhcmE+CgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2h5LXdvdWxkLWFueW9uZS13YW50LVdpbmUtV2luZG93cy1zdWNrIj4KICAgICAgICA8cGFyYT5XaHkgd291bGQgYW55b25lIHdhbnQgV2luZT8gRG9lc24ndCBXaW5kb3dzIHN1Y2s/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgRmlyc3QgV2luZSBpcyBub3QgYWJvdXQgcnVubmluZyBXaW5kb3dzIGJ1dCBhYm91dCBydW5uaW5nIFdpbmRvd3MgCiAgICAgICAgICBhcHBsaWNhdGlvbnMuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgU28gaWYgYWxsIHlvdXIgY29tcHV0aW5nIG5lZWRzIGFyZSBmdWxmaWxsZWQgYnkgbmF0aXZlIFVuaXggCiAgICAgICAgICBhcHBsaWNhdGlvbnMsIHRoZW4geW91IGRvIG5vdCBuZWVkIFdpbmUgYW5kIHNob3VsZCBub3QgYmUgdXNpbmcKICAgICAgICAgIGl0LiBIb3dldmVyLCBpZiB5b3UgZGVwZW5kIG9uIG9uZSBvciBtb3JlIG9mIHRoZSB0ZW5zIG9mIAogICAgICAgICAgdGhvdXNhbmRzIG9mIFdpbmRvd3MgYXBwbGljYXRpb25zLCB0aGVuIFdpbmUgaXMgdGhlIGJlc3Qgd2F5IHRvCiAgICAgICAgICB1c2UgaXQgd2l0aG91dCBnaXZpbmcgdXAgb24gVW5peC4gTGV0J3MgbG9vayBhdCB0aGUgYWx0ZXJuYXRpdmVzCiAgICAgICAgICB0byBzZWUgd2h5OgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBtb3N0IG9idmlvdXMgYWx0ZXJuYXRpdmUgaXMgdG8gZHVhbC1ib290LiBUaGlzIGlzIHRoZSBzb2x1dGlvbgogICAgICAgICAgdGhhdCBwcm92aWRlcyB0aGUgYmVzdCBjb21wYXRpYmlsaXR5LiBIb3dldmVyIGl0IHJlcXVpcmVzIHRoYXQgeW91CiAgICAgICAgICBhY3F1aXJlIGEgV2luZG93cyBsaWNlbnNlIGFuZCB0aGVuIGRlZGljYXRlIGEgZ29vZCBjaHVuayBvZiB5b3VyIAogICAgICAgICAgaGFyZC1kcml2ZSB0byBXaW5kb3dzLiBCdXQgdGhlIHdvcnN0IGlzIHlldCB0byBjb21lLiBFYWNoIHRpbWUgeW91CiAgICAgICAgICB3aWxsIHdhbnQgdG8gdXNlIHRoYXQgYXBwbGljYXRpb24geW91IHdpbGwgaGF2ZSB0byByZWJvb3QgdG8gCiAgICAgICAgICBXaW5kb3dzLiBUaGlzIGlzIGVzcGVjaWFsbHkgc2lnbmlmaWNhbnQgaWYgZXh0ZXJuYWwgZmFjdG9ycyBkaWN0YXRlCiAgICAgICAgICB3aGVuIHlvdSBtdXN0IHVzZSB0aGlzIGFwcGxpY2F0aW9uIChlLmcuIGNyZWRpdCBjYXJkIHRvIHByb2Nlc3MsIAogICAgICAgICAgZW1haWwgdG8gcmV0cmlldmUgZnJvbSBhIExvdHVzIE5vdGVzIHNlcnZlcikuIFRoZW4geW91IHdpbGwgZmluZAogICAgICAgICAgeW91cnNlbGYgZm9yY2VkIHRvIGNsb3NlIGFsbCB5b3VyIExpbnV4IGFwcGxpY2F0aW9ucyBqdXN0IHRvIHJ1bgogICAgICAgICAgdGhhdCBvbmUgV2luZG93cyBhcHBsaWNhdGlvbi4gWW91IG1heSBxdWlja2x5IGdldCB0aXJlZCBvZiB0aGlzLCBvcgogICAgICAgICAgd2lsbCBmaW5kIHRoYXQgc3VjaCBhIHNpdHVhdGlvbiBpcyBpbXBvc3NpYmxlIHRvIGp1c3RpZnkgaW4gYSAKICAgICAgICAgIGJ1c2luZXNzIGVudmlyb25tZW50LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBuZXh0IHNvbHV0aW9uIGlzIHRvIGluc3RhbGwgdmlydHVhbCBtYWNoaW5lIGVtdWxhdGlvbiBzb2Z0d2FyZQogICAgICAgICAgc3VjaCBhcyBWTVdhcmUsIFdpbjRMaW4gb3IgUGxleDg2LiBUaGVuIHlvdSBjYW4gdXNlIHdpbmRvd3MgCiAgICAgICAgICBhcHBsaWNhdGlvbnMgd2l0aG91dCBzdWZmZXJpbmcgc3VjaCBhIGJpZyBkaXNydXB0aW9uLiBCdXQgaXQgc3RpbGwKICAgICAgICAgIHJlcXVpcmVzIHRoYXQgeW91IGFjcXVpcmUgYSBXaW5kb3dzIGxpY2Vuc2UgYW5kIGRlZGljYXRlIGFzIG11Y2ggCiAgICAgICAgICBkaXNrIHNwYWNlIHRvIFdpbmRvd3MuIEZ1cnRoZXJtb3JlIHlvdSB3aWxsIHBheSBmb3IgdGhlIGFkZGVkIAogICAgICAgICAgY29udmVuaWVuY2U6IGlmIHVzaW5nIFZNV2FyZSBvciBXaW40TGluIHlvdSBoYXZlIHRvIGJ1eSBhbm90aGVyIAogICAgICAgICAgbGljZW5zZSwgYW5kIG1vcmUgaW1wb3J0YW50bHkgeW91IG5vdyBoYXZlIHRvIGRlZGljYXRlIGEgZ29vZCBjaHVuawogICAgICAgICAgb2YgeW91ciBjb21wdXRlcidzIG1lbW9yeSB0byB0aGUgdmlydHVhbCBtYWNoaW5lLiBQZXJmb3JtYW5jZSB3aWxsCiAgICAgICAgICB0YWtlIGEgc2lnbmlmaWNhbnQgaGl0IHRvby4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBVc2luZyBXaW5lIGxldHMgeW91IGF2b2lkIGFsbCBvZiB0aGF0IG92ZXJoZWFkOiBXaW5kb3dzIGxpY2Vuc2UsCiAgICAgICAgICBoYXJkLWRyaXZlIHNwYWNlIHJlcXVpcmVkIGJ5IFdpbmRvd3MsIG1lbW9yeSBhbmQgcGVyZm9ybWFuY2UgaGl0IAogICAgICAgICAgdGFrZW4gYnkgZW11bGF0ZWQgdmlydHVhbCBtYWNoaW5lcy4gTm93IHlvdSBjYW4gc3RhcnQgeW91ciBXaW5kb3dzCiAgICAgICAgICBhcHBsaWNhdGlvbiBzdHJhaWdodCBmcm9tIHlvdXIgcmVndWxhciBkZXNrdG9wIGVudmlyb25tZW50LCBwbGFjZQogICAgICAgICAgdGhhdCBhcHBsaWNhdGlvbidzIHdpbmRvdyBzaWRlIGJ5IHNpZGUgd2l0aCBuYXRpdmUgYXBwbGljYXRpb25zLAogICAgICAgICAgY29weS9wYXN0ZSBmcm9tIG9uZSB0byB0aGUgb3RoZXIsIGFuZCBydW4gaXQgYWxsIGF0IGZ1bGwgc3BlZWQuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSXQgaXMgYWxzbyBhIHByZXR0eSB2aXRhbCBwYXJ0IG9mIG1pZ3JhdGluZyBhIGxhcmdlIG9yZ2FuaXphdGlvbiwKICAgICAgICAgIHlvdSBjYW4ndCBjaGFuZ2UgYSA1MDAwIGRlc2t0b3Agc2V0dXAgb3Zlcm5pZ2h0IHdpdGhvdXQgYSBsb3Qgb2Ygcmlzay4KICAgICAgIDwvcGFyYT4KCiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJVc2UtV2luZG93cy1kcml2ZXItd2l0aC1XaW5lIj4KICAgICAgICA8cGFyYT5DYW4gSSB1c2UgV2luZSB0byBtYWtlIHRoZSBXaW5kb3dzIGRyaXZlciBmb3IgbXkgbmV0d29yayBjYXJkIC8KICAgICAgICAgIGdyYXBoaWNzIGNhcmQgLyBzY2FubmVyIC8gZXRjLiB3b3JrIG9uIFVuaXg/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIGdvYWwgb2YgV2luZSBpcyB0byBtYWtlIGl0IHBvc3NpYmxlIHRvIHJ1biBXaW5kb3dzIGFwcGxpY2F0aW9ucwogICAgICAgICAgb24gVW5peCwgbm90IFdpbmRvd3MgZHJpdmVycyBvciBWeERzLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIERyaXZlcnMgYW5kIFdpbmRvd3MgYXBwbGljYXRpb25zIGJlbG9uZyB0byBkaWZmZXJlbnQgd29ybGRzLgogICAgICAgICAgQXBwbGljYXRpb25zIHJ1biBpbiB1c2VyIG1vZGUgYW5kIHVzZSB0aGUgQVBJcyBwcm92aWRlZCBieQogICAgICAgICAgdGhlIGtlcm5lbCBhbmQgdGhlIG90aGVyIHVzZXIgbW9kZSBkbGxzLiBJbiBjb250cmFzdCwgZHJpdmVycwogICAgICAgICAgYXJlIGxvYWRlZCBpbiB0aGUgV2luZG93cyBrZXJuZWwsIGkuZS4gaW4gcmluZyAwIGluc3RlYWQgb2YgcmluZwogICAgICAgICAgMywgZHJpdmVycyBoYXZlIHRvIGRlYWwgd2l0aCBzcGVjaWZpYyBtZW1vcnkgbWFuYWdlbWVudCBpc3N1ZXMsIGFuZCB1c2UKICAgICAgICAgIGluc3RydWN0aW9ucyBub3QgYXZhaWxhYmxlIHRvIHJlZ3VsYXIgYXBwbGljYXRpb25zLiBUaGlzIG1lYW5zCiAgICAgICAgICB0aGV5IHdvdWxkIG5vdCBiZSBhYmxlIHRvIHJ1biBpbiBXaW5lIHNpbmNlIFdpbmUgcnVucyBlbnRpcmVseQogICAgICAgICAgaW4gdXNlciBtb2RlLiBSYXRoZXIgeW91IHdvdWxkIGhhdmUgdG8gbW9kaWZ5IHRoZSBMaW51eCBrZXJuZWwuCiAgICAgICAgICBCdXQgaW4gYWRkaXRpb24sIGRyaXZlcnMgdXNlIGEgY29tcGxldGVseSBkaWZmZXJlbnQgQVBJIGZyb20KICAgICAgICAgIHJlZ3VsYXIgV2luZG93cyBhcHBsaWNhdGlvbnMuIFNvIHRoZSB3b3JrIHBlcmZvcm1lZCBvbiBXaW5lIHdvdWxkCiAgICAgICAgICBub3QgZXZlbiBiZSBvZiBhbnkgdXNlIGZvciBzdWNoIGEgcHJvamVjdC4gSW4gb3RoZXIgd29yZHMsIG1ha2luZwogICAgICAgICAgaXQgcG9zc2libGUgdG8gdXNlIFdpbmRvd3MgZHJpdmVycyBvciBWeERzIG9uIFVuaXggd291bGQgYmUgYQogICAgICAgICAgY29tcGxldGVseSBzZXBhcmF0ZSBwcm9qZWN0LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEhvd2V2ZXIsIGlmIHlvdSB3YW50IHRvIHJldXNlIFdpbmRvd3MgZHJpdmVycyBvbiBhIG5vbi1NaWNyb3NvZnQKICAgICAgICAgIG9wZXJhdGluZyBzeXN0ZW0gd2UgcmVjb21tZW5kIHRoYXQgeW91IGhhdmUgYSBsb29rIGF0CiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LnJlYWN0b3MuY29tLyI+UmVhY3RPUzwvPi4KICAgICAgICA8L3BhcmE+CgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hpY2gtb25lLW9mLXRoZS1kaWZmZXJlbnQtV2luZS1wYWNrYWdlcyI+CiAgICAgICAgPHBhcmE+V2hpY2ggb25lIG9mIHRoZSBkaWZmZXJlbnQgV2luZSBwYWNrYWdlcyBvdXQgdGhlcmUgaXMgZ29vZCBmb3IgbWU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQ3VycmVudGx5IHRoZXJlIGlzIGEgYnJvYWQgc2VsZWN0aW9uIG9mIGRpZmZlcmVudCBXaW5lIHBhY2thZ2VzL3ZlcnNpb25zOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8dmFyaWFibGVsaXN0PgoKCSAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICA8dGVybT48dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmciPldpbmU8L3VsaW5rPjwvdGVybT4KICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgVGhpcyBpcyB0aGUgInN0YW5kYXJkIiBkaXN0cmlidXRpb24gb2YgV2luZS4gSXRzIGxpY2Vuc2UgaXMKICAgICAgICAgICAgICB0aGUgTEdQTCwgaXQgY2FuIGJlIGRvd25sb2FkZWQgZm9yIGZyZWUuIEJvdGggc291cmNlIGNvZGUgYW5kIGJpbmFyaWVzCiAgICAgICAgICAgICAgYXJlIGF2YWlsYWJsZSBpbiB0aGUgZG93bmxvYWQgc2VjdGlvbiBvZiB0aGUgc2l0ZS4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KCgkgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dGVybT48dWxpbmsgdXJsPSJodHRwOi8vd3d3LnRyYW5zZ2FtaW5nLmNvbSI+VHJhbnNHYW1pbmcncyBDZWRlZ2E8L3VsaW5rPjwvdGVybT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgVGhpcyBpcyBUcmFuc0dhbWluZydzIFdpbmUgdmVyc2lvbiBzcGVjaWFsbHkgc3VpdGVkIGZvcgogICAgICAgICAgICAgIGdhbWVzLiAgSXQgaW5jbHVkZXMgbW9yZSBtYXR1cmUgRGlyZWN0M0Qgc3VwcG9ydCB0aGFuCiAgICAgICAgICAgICAgV2luZUhRLCBhbHRob3VnaCB0aGVzZSBkYXlzIFdpbmVIUSBoYXMgcXVpdGUgYWR2YW5jZWQKICAgICAgICAgICAgICBEM0Qgc3VwcG9ydCBhcyB3ZWxsLiBNb3N0IG9mIHRoZSBjb2RlIGlzIHVuZGVyIHRoZSBBRlBMCiAgICAgICAgICAgICAgYW5kIGNhbiBiZSBkb3dubG9hZGVkIGZvciBmcmVlLgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIEhvd2V2ZXIgVHJhbnNHYW1pbmcgYWxzbyBkaXN0cmlidXRlcyBiaW5hcmllcyB0aGF0IGNvbnRhaW4KICAgICAgICAgICAgICBpbXByb3ZlZCBjb3B5IHByb3RlY3Rpb24gc3VwcG9ydCAobmVlZGVkIGZvciBtYW55CiAgICAgICAgICAgICAgZ2FtZXMpLCBzdXBwb3J0LCBhbmQgb3RoZXIgZW5oYW5jZW1lbnRzLiBUaGVzZSBwYWNrYWdlcyBhcmUKICAgICAgICAgICAgICBvbmx5IGF2YWlsYWJsZSBpbiBiaW5hcnkgZm9ybSB0byBzdWJzY3JpYmVkIGN1c3RvbWVycwogICAgICAgICAgICAgICgkNS9tb250aCwgbWluaW11bSB0aHJlZSBtb250aHMpLgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KCgkgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dGVybT48dWxpbmsgdXJsPSJodHRwOi8vd3d3LmNvZGV3ZWF2ZXJzLmNvbS9zaXRlL3Byb2R1Y3RzL2N4b2ZmaWNlLyI+Q29kZVdlYXZlcnMnIENyb3NzT3ZlciBPZmZpY2U8L3VsaW5rPjwvdGVybT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgV2luZSB2ZXJzaW9uIHdpdGggc3BlY2lhbCBwYWNrYWdpbmcgdG8gbWFrZSBzdXJlIGFsbW9zdCBhbGwgCiAgICAgICAgICAgICAgaW1wb3J0YW50IE9mZmljZSB0eXBlIHByb2dyYW1zIHdvcmsgcHJldHR5IHdlbGwuIENvc3RzICQ3NC45NSAKICAgICAgICAgICAgICBmb3IgdGhlIFBybyB2ZXJzaW9uIGFuZCAkMzkuOTUgZm9yIHRoZSBTdGFuZGFyZCB2ZXJzaW9uLgogICAgICAgICAgICAgIFNlZW1zIHRvIGJlIHdlbGwgd29ydGggaXQgc28gZmFyIGFjY29yZGluZyB0byBzb21lIGNvbW1lbnRzLiAKICAgICAgICAgICAgICAobm90ZTogeW91J3JlIHN1cHBvcnRpbmcgYSBjb21wYW55IGFjdGl2ZWx5IGNvbnRyaWJ1dGluZyB0byBXaW5lCiAgICAgICAgICAgICAgaWYgeW91IGRlY2lkZSB0byBidXkgQ3Jvc3NPdmVyLikKICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgCiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgPHRlcm0+PHVsaW5rIHVybD0iaHR0cDovL3d3dy5jb2Rld2VhdmVycy5jb20vc2l0ZS9wcm9kdWN0cy9jeHNlcnZlci8iPkNvZGVXZWF2ZXJzJyBDcm9zc092ZXIgT2ZmaWNlIFNlcnZlciBFZGl0aW9uPC91bGluaz48L3Rlcm0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgQWxsb3dzIHlvdSB0byBydW4geW91ciBmYXZvcml0ZSBXaW5kb3dzIHByb2R1Y3Rpdml0eSBhcHBsaWNhdGlvbnMgaW4gCiAgICAgICAgICAgICBhIGRpc3RyaWJ1dGVkIHRoaW4tY2xpZW50IGVudmlyb25tZW50IHVuZGVyIExpbnV4LiBTZXJ2ZXIgRWRpdGlvbiBpcyAKICAgICAgICAgICAgIGFsc28gYSBncmVhdCBhZGRpdGlvbiB0byBTb2xhcmlzIGVudmlyb25tZW50cywgc2luY2UgdGhlcmUgYnVpbHQtaW4gCiAgICAgICAgICAgICBzdXBwb3J0IGZvciBTb2xhcmlzIGRlc2t0b3BzIG1ha2VzIHJ1bm5pbmcgV2luZG93cyBhcHBsaWNhdGlvbnMgYSAKICAgICAgICAgICAgIHBvc3NpYmlsaXR5IG9uIFN1biB3b3Jrc3RhdGlvbnMgYXMgd2VsbC4gRm9yIHByaWNpbmcganVzdCBmb2xsb3cgdGhpcyBsaW5rOiAKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cuY29kZXdlYXZlcnMuY29tL3NpdGUvcHJvZHVjdHMvcHJpY2luZy8iPkNyb3NzT3ZlciBPZmZpY2UgU2VydmVyIEVkaXRpb24gUHJpY2luZzwvdWxpbms+CiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4gICAgICAgICAgCgogICAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hhdHMtdGhlLWhpc3Rvcnktb2YtV2luZSI+CiAgICAgICAgPHBhcmE+V2hhdCdzIHRoZSBoaXN0b3J5IG9mIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIFdpbmUgcHJvamVjdCBzdGFydGVkIGluIDE5OTMgYXMgYSB3YXkgdG8gc3VwcG9ydCBydW5uaW5nIFdpbmRvd3MgMy4xCiAgICAgICAgICBwcm9ncmFtcyBvbiBMaW51eC4gQm9iIEFtc3RhZHQgd2FzIHRoZSBvcmlnaW5hbCBjb29yZGluYXRvciwgYnV0IHR1cm5lZAogICAgICAgICAgaXQgb3ZlciBmYWlybHkgZWFybHkgb24gdG8gQWxleGFuZHJlIEp1bGxpYXJkLCB3aG8gaGFzIHJ1biBpdCBldmVyIAogICAgICAgICAgc2luY2UuIEEgPHVsaW5rIHVybD0ibmV3czpjb21wLmVtdWxhdG9ycy5tcy13aW5kb3dzLndpbmUiPm5ld3Nncm91cDwvdWxpbms+CiAgICAgICAgICB3YXMgY3JlYXRlZCBpbiBKdWx5IDE5OTQuIE92ZXIgdGhlIHllYXJzLCBwb3J0cyBmb3IKICAgICAgICAgIG90aGVyIFVuaXhlcyBoYXZlIGJlZW4gYWRkZWQsIGFsb25nIHdpdGggc3VwcG9ydCBmb3IgV2luMzIgYXMgV2luMzIgCiAgICAgICAgICBhcHBsaWNhdGlvbnMgYmVjYW1lIHBvcHVsYXIuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5jb20vc2l0ZS9oaXN0b3J5Ij4KICAgICAgICAgIGh0dHA6Ly93d3cud2luZWhxLmNvbS9zaXRlL2hpc3Rvcnk8L3VsaW5rPgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoYXQtaXMtdGhlLWN1cnJlbnQtdmVyc2lvbi1vZi1XaW5lIj4KICAgICAgICA8cGFyYT5XaGF0IGlzIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBBIG5ldyB2ZXJzaW9uIG9mIFdpbmUgaXMgZGlzdHJpYnV0ZWQgYWJvdXQgZXZlcnkgbW9udGguIFlvdSB3aWxsIGJlIAogICAgICAgICAgYWJsZSB0byBrZWVwIHVwIG9uIGFsbCB0aGUgbGF0ZXN0IHJlbGVhc2VzIGJ5IHJlYWRpbmcgdGhlIG5ld3Nncm91cAogICAgICAgICAgPHVsaW5rIHVybD0ibmV3czpjb21wLmVtdWxhdG9ycy5tcy13aW5kb3dzLndpbmUiPgogICAgICAgICAgY29tcC5lbXVsYXRvcnMubXMtd2luZG93cy53aW5lPC91bGluaz4sIG9yIGJ5IHZpc2l0aW5nIHRoZQogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnIj5XaW5lIEhRIGhvbWVwYWdlPC91bGluaz4uIFdoZW4KICAgICAgICAgIGRvd25sb2FkaW5nIFdpbmUgZnJvbSB5b3VyIEZUUCBzaXRlIG9mIGNob2ljZSAoc2VlCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvc2l0ZS9kb3dubG9hZCI+dGhlIERvd25sb2FkIHBhZ2U8L3VsaW5rPgogICAgICAgICAgZm9yIHNvbWUgb2YgdGhlc2UgY2hvaWNlcyksIHlvdSBjYW4gbWFrZSBzdXJlIHRoYXQgeW91IGFyZSBnZXR0aW5nIAogICAgICAgICAgdGhlIGxhdGVzdCB2ZXJzaW9uIGJ5IHdhdGNoaW5nIHRoZSB2ZXJzaW9uIG51bWJlcnMgaW4gdGhlIGRpc3RyaWJ1dGlvbgogICAgICAgICAgZmlsZSBuYW1lLiBGb3IgaW5zdGFuY2UsIHRoZSBkaXN0cmlidXRpb24gcmVsZWFzZWQgb24gQXVndXN0IDEzLCAyMDA0CiAgICAgICAgICB3YXMgY2FsbGVkIFdpbmUtMjAwNDA4MTMudGFyLmd6LiBQYXRjaCBmaWxlcyBhcmUgYWxzbyBhdmFpbGFibGUuIElmCiAgICAgICAgICB5b3UgYXJlIGN1cnJlbnQgdG8gdGhlIHByZXZpb3VzIHZlcnNpb24sIHlvdSBjYW4gZG93bmxvYWQgYW5kIGFwcGx5IAogICAgICAgICAganVzdCB0aGUgY3VycmVudCBwYXRjaCBmaWxlIHJhdGhlciB0aGFuIHRoZSBlbnRpcmUgbmV3IGRpc3RyaWJ1dGlvbi4KICAgICAgICAgIFRoZSBwYXRjaCBmaWxlIG5hbWVzIGZvbGxvdyB0aGUgc2FtZSBjb252ZW50aW9ucyBhcyB0aGUgbW9udGhseSAKICAgICAgICAgIGRpc3RyaWJ1dGlvbi4gPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvY3ZzIj4KICAgICAgICAgIFJlYWQtb25seSBDVlM8L3VsaW5rPiBhY2Nlc3MgaXMgYWxzbyBhdmFpbGFibGUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hhdC1pcy10aGUtY3VycmVudC1TdGF0dXMtb2YtV2luZSI+CiAgICAgICAgPHBhcmE+V2hhdCBpcyB0aGUgY3VycmVudCBTdGF0dXMgb2YgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBBcyBvZiBtaWQgMjAwNCwgV2luZSBjb25zaXN0cyBvZiBhYm91dCAxLjYgbWlsbGlvbiBsaW5lcyBvZiBjb2RlLAogICAgICAgICAgd3JpdHRlbiBieSBtb3JlIHRoYW4gNjAwIGRldmVsb3BlcnMgZnJvbSBkb3plbnMgb2YgY291bnRyaWVzIGFyb3VuZAogICAgICAgICAgdGhlIHdvcmxkLiBXaW5lIGlzIGluIGFjdGl2ZSB1c2UgYnkgYW4gZXN0aW1hdGVkIDEwMEsgcGVvcGxlLiBXaW5lCiAgICAgICAgICBpbXBsZW1lbnRzIG1vcmUgdGhhbiA5MCUgb2YgdGhlIGNhbGxzIGluIHBvcHVsYXIgV2luZG93cyAKICAgICAgICAgIHNwZWNpZmljYXRpb25zIHN1Y2ggYXMgRUNNQS0yMzQgYW5kIE9wZW4zMi4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZb3UgbWF5IGFsc28gd2FudCB0byBsb29rIGF0IHRoZQogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvc3RhdHVzIj4KICAgICAgICAgIFN0YXR1cyBwYWdlPC91bGluaz4gZm9yIGEgZ2xvYmFsIHZpZXcgb24gV2luZSdzIGltcGxlbWVudGF0aW9uIHByb2dyZXNzLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoZW4td2lsbC1XaW5lLWJlLWZpbmlzaGVkIj4KICAgICAgICA8cGFyYT5XaGVuIHdpbGwgV2luZSBiZSBmaW5pc2hlZD88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBMYXJnZSBzb2Z0d2FyZSBwcm9qZWN0cyBhcmUgbmV2ZXIgZmluaXNoZWQsIG9ubHkgcmVsZWFzZWQuIEluIGFueQogICAgICAgICAgY2FzZSBXaW5lIGlzIGNoYXNpbmcgYSBtb3ZpbmcgdGFyZ2V0IHNpbmNlIGV2ZXJ5IG5ldyByZWxlYXNlIG9mIAogICAgICAgICAgV2luZG93cyBjb250YWlucyBuZXcgQVBJIGNhbGxzIG9yIHZhcmlhdGlvbnMgb24gdGhlIGV4aXN0aW5nIG9uZXMuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQmVjYXVzZSBXaW5lIGlzIGJlaW5nIGRldmVsb3BlZCBieSB2b2x1bnRlZXJzLCBpdCBpcyBkaWZmaWN1bHQgdG8KICAgICAgICAgIHByZWRpY3Qgd2hlbiBpdCB3aWxsIGJlIHJlYWR5IGZvciBnZW5lcmFsIHJlbGVhc2UuIEJ1dCBkdWUgdG8gdGhlCiAgICAgICAgICBtdWNoIGluY3JlYXNlZCBpbnRlcmVzdCBieSBjb21wYW5pZXMgaW4gcG9ydGluZyBhcHBzIHZpYSBXaW5lLCBXaW5lCiAgICAgICAgICBkZXZlbG9wbWVudCBpcyBjb25zdGFudGx5IGdldHRpbmcgbW9yZSBhbmQgbW9yZSBhY3RpdmUuIFJpZ2h0IG5vdwogICAgICAgICAgd2UgYXJlIHdvcmtpbmcgb24gcmVsZWFzaW5nIFdpbmUgMC45IFJlYWwgU29vbiBOb3codG0pLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ildoby1pcy1yZXNwb25zaWJsZS1mb3ItV2luZSI+CiAgICAgICAgPHBhcmE+V2hvIGlzIHJlc3BvbnNpYmxlIGZvciBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgYXZhaWxhYmxlIHRoYW5rcyB0byB0aGUgd29yayBvZiBtYW55IHBlb3BsZS4gUGxlYXNlIHNlZSB0aGUKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly9zb3VyY2Uud2luZWhxLm9yZy9zb3VyY2UvQVVUSE9SUyI+QVVUSE9SUzwvdWxpbms+CiAgICAgICAgICBmaWxlIGluIHRoZSBkaXN0cmlidXRpb24gZm9yIHRoZSBjb21wbGV0ZSBsaXN0LiBTb21lIGNvbXBhbmllcyB0aGF0CiAgICAgICAgICBhcmUgb3IgaGF2ZSBiZWVuIGludm9sdmVkIHdpdGggV2luZSBkZXZlbG9wbWVudCBhcmUgQ29kZVdlYXZlcnMsCiAgICAgICAgICBUcmFuc0dhbWluZywgQ29yZWwsIGFuZCBNYWNhZGFtaWFuLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoYXQtdW5kb2N1bWVudGVkLUFQSXMtYXJlLW5vdC11bmRlcnN0b29kIj4KICAgICAgICA8cGFyYT5XaGF0IHVuZG9jdW1lbnRlZCBBUElzIC8gaW50ZXJmYWNlcyBhcmUgbm90IHVuZGVyc3Rvb2Q/IFdvdWxkCiAgICAgICAgICAgICAgc2VlaW5nIE1pY3Jvc29mdCBzb3VyY2UgaGVscD8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGUgYmVzdCB3b3VsZCBiZSBpZiB0aGUgV2luZG93cyBBUEkgd2FzIGZ1bGx5IGRvY3VtZW50ZWQsIHNvIFdpbmUKICAgICAgICAgIGNvdWxkIGJlIGEgcGVyZmVjdCAiY2xlYW4tcm9vbSIgaW1wbGVtZW50YXRpb24uIFNlZWluZyB0aGUgc291cmNlCiAgICAgICAgICBjb2RlIG1pZ2h0IG1ha2UgaXQgaGFyZGVyIHRvIHByb3ZlIHRoYXQgbm8gY29weXJpZ2h0IHZpb2xhdGlvbnMgaGF2ZQogICAgICAgICAgdGFrZW4gcGxhY2UuIFRoYXQgc2FpZCwgdGhlIGRvY3VtZW50YXRpb24gaXMgb2Z0ZW4gYmFkLCBub25leGlzdGVudCwKICAgICAgICAgIGFuZCBldmVuIG1pc2xlYWRpbmcgd2hlcmUgaXQgZXhpc3RzLCBzbyBhIGZhaXIgYW1vdW50IG9mIHJldmVyc2UKICAgICAgICAgIGVuZ2luZWVyaW5nIGhhcyBiZWVuIG5lY2Vzc2FyeSwgcGFydGljdWxhcmx5IGluIHRoZSBzaGVsbCAoRXhwbG9yZXIpCiAgICAgICAgICBpbnRlcmZhY2UuIFRoZSBiaWdnZXN0IHByb2JsZW0gZmFjaW5nIFdpbmUgdGhvdWdoIGlzIHNpbXBseSBsYWNrIG9mCgkgIG1hbnBvd2VyLiBBdCBvbmUgcG9pbnQsIG92ZXIgNTAwMCBwZW9wbGUgd2VyZSB3b3JraW5nIG9uIFdpbmRvd3MgMjAwMC4KCSAgV2hpbGUgV2luZSBkb2Vzbid0IG5lZWQgdG8gcmVwbGljYXRlIGFsbCBvZiBXaW5kb3dzICh3ZSBvbmx5IGNvdmVyIHRoZQoJICBwYXJ0cyBuZWVkZWQgdG8gbWFrZSBXaW5kb3dzIHByb2dyYW1zIHdvcmspLCB0aGF0J3Mgc3RpbGwgbmVhcmx5IDEwIHRpbWVzCgkgIG1vcmUgcGVvcGxlIHdvcmtpbmcgc2ltcGx5IG9uIG9uZSByZWxlYXNlIHRoYW4gaGF2ZSA8ZW1waGFzaXM+ZXZlcjwvZW1waGFzaXM+CgkgIHdvcmtlZCBvbiBXaW5lLCBpbiB0aGUgaGlzdG9yeSBvZiB0aGUgcHJvamVjdC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IklzLVRyYW5zR2FtaW5ncy1sYXN0LXBhdGNoLWluY2x1ZGVkLWluLVdpbmUiPgogICAgICAgIDxwYXJhPklzIFRyYW5zR2FtaW5nJ3MgbGF0ZXN0IHBhdGNoIGluY2x1ZGVkIGluIHRoZSBzdGFuZGFyZCBXaW5lIHJlbGVhc2U/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTm8sIGl0J3Mgbm90LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRyYW5zR2FtaW5nIG1ha2VzIG1vbmV5IHZpYSBhIHN1YnNjcmlwdGlvbiBzZXJ2aWNlIGFuZCB0aGUgbGljZW5zZQogICAgICAgICAgb2YgdGhlaXIgQ2VkZWdhIHRyZWUgaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIFdpbmUgbGljZW5zZS4gVGh1cwogICAgICAgICAgQ2VkZWdhIHBhdGNoZXMgY2Fubm90IGJlIGludGVncmF0ZWQgaW50byB0aGUgV2luZSB0cmVlIHdpdGhvdXQKICAgICAgICAgIGV4cHJlc3MgcGVybWlzc2lvbiBieSBUcmFuc0dhbWluZy4gVGhleSBoYXZlIHN1Ym1pdHRlZCBzb21lCiAgICAgICAgICBvZiB0aGVpciB3b3JrIGZvciBpbnRlZ3JhdGlvbiBpbnRvIFdpbmUsIG1vc3Qgbm90YWJseSBEaXJlY3REcmF3CiAgICAgICAgICBhbmQgc29tZSBEaXJlY3RTb3VuZCB3b3JrLCBhbmQgc3VjaCB3b3JrIGhhcyBiZWVuIGludGVncmF0ZWQgaW50bwogICAgICAgICAgdGhlIFdpbmUgdHJlZS4gSG93ZXZlciBpdCBzZWVtcyBoaWdobHkgdW5saWtlbHkgdGhleSB3aWxsIGV2ZXIgc3VibWl0IHRoZWlyCiAgICAgICAgICBEaXJlY3QzRCB3b3JrLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldpbGwtdGhlcmUtYmUtYS1XaW5kb3dzLXZlcnNpb24tb2YtV2luZSI+CiAgICAgICAgPHBhcmE+V2lsbCB0aGVyZSBiZSBhIFdpbmRvd3MgdmVyc2lvbiBvZiBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFNvbWUgcGVvcGxlIGFyZSB3b3JraW5nIG9uIGdldHRpbmcgV2luZSBjb2RlIHRvIGNvbXBpbGUgb24gV2luZG93cwogICAgICAgICAgdXNpbmcgb25lIG9mIHRoZSBmb2xsb3dpbmcgcHJvamVjdHMgYXMgYSBiYXNpczoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPGl0ZW1pemVkbGlzdCBzcGFjaW5nPSJjb21wYWN0Ij4KICAgICAgICAgIDxsaXN0aXRlbT4gCiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIEN5Z3dpbgogICAgICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi93d3cuY3lnd2luLmNvbS8iPmh0dHA6Ly93d3cuY3lnd2luLmNvbTwvdWxpbms+KQogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBNaW5HVwogICAgICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi93d3cubWluZ3cub3JnLyI+aHR0cDovL3d3dy5taW5ndy5vcmc8L3VsaW5rPikKICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgUmVhY3RPUwogICAgICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LnJlYWN0b3MuY29tLyI+aHR0cDovL3d3dy5yZWFjdG9zLmNvbTwvdWxpbms+KQogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlcmUncyBzb21lIHByb2dyZXNzLCBzbyBhIFdpbmUgdmVyc2lvbiB0aGF0J3MgdXNhYmxlIG9uIFdpbmRvd3MKICAgICAgICAgIG1pZ2h0IGJlIGF2YWlsYWJsZSBhdCBzb21lIHRpbWUgaW4gdGhlIGZ1dHVyZS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBQYXJ0IG9mIHRoZSByYXRpb25hbGUgZm9yIHRoZXNlIHByb2plY3RzIGlzIHRvIGZpbmQgb3V0IGFyZWFzIHdoZXJlCiAgICAgICAgICBXaW5lIHBvcnRhYmlsaXR5IGlzIGxhY2tpbmcuIFRoaXMgaXMgZXNwZWNpYWxseSB0cnVlIG9mIHRoZQogICAgICAgICAgUmVhY3RPUyBwcm9qZWN0IHdoaWNoIGlzIGEgcmVpbXBsZW1lbnRhdGlvbiBvZiB0aGUgV2luZG93cyBrZXJuZWwKICAgICAgICAgIGFuZCBzaG91bGQgdGh1cyBiZSBhYmxlIHRvIHJldXNlIG1vc3Qgb2YgV2luZSBkbGxzLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEFub3RoZXIgcmVhc29uIGZvciBwdXJzdWluZyB0aGVzZSBwcm9qZWN0cyBpcyB0byBiZSBhYmxlIHRvCiAgICAgICAgICByZXBsYWNlIGEgc2luZ2xlIFdpbmRvd3MgZGxsIHdpdGggaXRzIFdpbmUgY291bnRlcnBhcnQuIEJlc2lkZXMKICAgICAgICAgIGJlaW5nIGEgZ29vZCB0ZXN0IGZvciB0aGUgV2luZSBkbGwsIHRoaXMgbGV0cyB1cyBkZXRlY3QgY2FzZXMgd2hlcmUKICAgICAgICAgIHdlIG1hZGUgaW5jb3JyZWN0IGFzc3VtcHRpb25zIGFib3V0IGhvdyB0aGUgZGxscyBpbnRlcmFjdC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJDYW4tSS11c2UtbmF0aXZlLWRyaXZlcnMiPgogICAgICAgIDxwYXJhPkNhbiBJIHVzZSBXaW5kb3dzIHByaW50ZXIgZHJpdmVycyBpbiBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE5hdGl2ZSBwcmludGVyIGRyaXZlcnMgYXJlIG5vdCBzdXBwb3J0ZWQuIEF0IG9uZSB0aW1lIFdpbmUgc3VwcG9ydGVkIDE2Yml0IAogICAgICAgICAgbmF0aXZlIGRyaXZlcnMgYnV0IHRoYXQgd2FzIGxvbmcgYWdvLiBXaW5lIHVzZXMgdGhlIHByaW50ZXJzIChhbmQgb3RoZXIgCiAgICAgICAgICBkZXZpY2VzKSBpbnN0YWxsZWQgaW4geW91ciBvcGVyYXRpbmcgc3lzdGVtLiBGb3IgdGhlIG1vc3QgcGFydCBpZiB5b3UgZG9uJ3QgCiAgICAgICAgICBoYXZlIHRoZSBkZXZpY2UgaW5zdGFsbGVkIG9uIHlvdXIgT1MgdGhlbiB3aW5lIGNhbid0IHVzZSBpdC4gCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgIDwvcWFuZGFkaXY+CiAgICA8cWFuZGFkaXYgaWQ9IldoYXQtZG8tSS1uZWVkLWluLW9yZGVyLXRvLXVzZS1XaW5lIj4KICAgICAgPHRpdGxlPldoYXQgZG8gSSBuZWVkIGluIG9yZGVyIHRvIHVzZSBXaW5lPzwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IlVuZGVyLXdoYXQtcGxhdGZvcm1zLXdpbGwtV2luZS1ydW4iPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVW5kZXIgd2hhdCBoYXJkd2FyZSBwbGF0Zm9ybShzKSBhbmQgb3BlcmF0aW5nIHN5c3RlbShzKSB3aWxsCiAgICAgICAgICBXaW5lKExpYikgcnVuPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgYmVpbmcgZGV2ZWxvcGVkIHNwZWNpZmljYWxseSB0byBydW4gb24gdGhlIDxlbXBoYXNpcz5JbnRlbAogICAgICAgICAgeDg2PC9lbXBoYXNpcz4gY2xhc3Mgb2YgQ1BVcyB1bmRlciBjZXJ0YWluIFVOSVhlcyB0aGF0IHJ1biBvbiB0aGlzCiAgICAgICAgICBwbGF0Zm9ybS4gV2luZWxpYiBob3dldmVyIGlzIGNhcGFibGUgb2YgcG9ydGluZyB0aGUgV2luZG93cwogICAgICAgICAgYXBwbGljYXRpb25zIDxlbXBoYXNpcz5zb3VyY2UgY29kZTwvZW1waGFzaXM+IHRvIG90aGVyIHBsYXRmb3JtcwogICAgICAgICAgYWxzbywgbm90IG9ubHkgeDg2LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRodXMgcnVubmluZyBXaW5kb3dzIGJpbmFyaWVzIG9uIG90aGVyIHBsYXRmb3JtcyAoZS5nLiBNYWMgT1MgWCBvbgogICAgICAgICAgUG93ZXJQQykgdXNpbmcganVzdCBXaW5lIGlzIDxlbXBoYXNpcz5ub3Q8L2VtcGhhc2lzPiBwb3NzaWJsZS4gWW91CiAgICAgICAgICB3b3VsZCBoYXZlIHRvIGVpdGhlciBydW4gV2luZSBpbiBhbiBlbXVsYXRlZCB4ODYgZW52aXJvbm1lbnQgb3IKICAgICAgICAgIHRha2UgdGhlIFdpbmRvd3MgYXBwbGljYXRpb24gc291cmNlIGNvZGUgYW5kIHJlY29tcGlsZSBpdCB1c2luZwogICAgICAgICAgV2luZWxpYi4KCTwvcGFyYT4KCTxwYXJhPgoJICBUaGVzZSBhcmUgdGhlIHBsYXRmb3JtcyBzdXBwb3J0ZWQgYnkgV2luZS4KCSAgV2luZWxpYiBzdXBwb3J0IGZvciBvdGhlciBwbGF0Zm9ybXMga2VlcHMgZXZvbHZpbmcsCgkgIHNvIGl0J3Mgbm90IHNwZWNpZmljYWxseSBsaXN0ZWQgaGVyZS4KCTwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE5ldEJTRCwgT3BlbkJTRCwgVW5peFdhcmUsIGFuZCBTQ08gT3BlblNlcnZlciA1IHdvcmtlZCBhdCBvbmUgdGltZSwKICAgICAgICAgIGJ1dCBXaW5lIG5vdyByZXF1aXJlcyBrZXJuZWwtbGV2ZWwgdGhyZWFkcyB3aGljaCBhcmUgbm90IGN1cnJlbnRseSAKICAgICAgICAgIGF2YWlsYWJsZSAob3IgdW5kZXJzdG9vZCBieSB0aGUgV2luZSB0ZWFtKSBvbiB0aG9zZSBwbGF0Zm9ybXMuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIFdpbmUgZGV2ZWxvcG1lbnQgdGVhbSBob3BlcyB0byBhdHRyYWN0IHRoZSBpbnRlcmVzdCBvZiBvdGhlcgogICAgICAgICAgY29tbWVyY2lhbCBVTklYIGFuZCBVTklYIGNsb25lIHZlbmRvcnMgYXMgd2VsbC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBCZU9TOiBwb3J0aW5nIGVmZm9ydHMgKEJlV2luZSkgdXNlZCB0byBiZSBwcmV0dHkgc3Ryb25nLCBidXQgQmVPUwogICAgICAgICAgaGFzIHNldmVyZSBsaW1pdGF0aW9ucyBpbiBVbml4IGNhbGwgc3VwcG9ydC4gVGhlIGRlbWlzZSBvZiBCZQogICAgICAgICAgZnVydGhlciBoYW1wZXJlZCB0aGUgcHJvamVjdCB0aG91Z2ggaXQgbWlnaHQgY29tZSBiYWNrIG9uZSBkYXkgb24KICAgICAgICAgIG9uZSBvZiB0aGUgb3BlbiBCZU9TIHByb2plY3RzLiBJbiBhbnkgY2FzZSBhIGZ1bmN0aW9uYWwgcG9ydCBzZWVtcwogICAgICAgICAgdW5saWtlbHkgdG8gZXZlciBoYXBwZW4gYXQgdGhpcyBzdGFnZS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBNYWMgT1MgWCAvIERhcndpbjogVGhlIDx1bGluawogICAgICAgICAgdXJsPSJodHRwOi8vZGFyd2luZS5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdC5odG1sIj5EYXJ3aW5lPC8+IGlzCiAgICAgICAgICBjdXJyZW50bHkgd29ya2luZyBvbiBwb3J0aW5nIFdpbmUgdG8gdGhlIERhcndpbi94ODYgcGxhdGZvcm0uIFRoZWlyCiAgICAgICAgICBnb2FsIGlzIHRvIGV2ZW50dWFsbHkgbWFrZSBpdCBwb3NzaWJsZSB0byBydW4geDg2IFdpbmRvd3MKICAgICAgICAgIGFwcGxpY2F0aW9ucyBvbiBEYXJ3aW4vUFBDIGFuZCB0aGVuIE1hYyBPUyBYIGJ5IHVzaW5nIEJvY2hzLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEZyZWVCU0Q6IFRoaXMgcG9ydCBpcyB3ZWxsIG1haW50YWluZWQgYW5kIHNob3VsZCB3b3JrIHdpdGgKICAgICAgICAgIGxpbWl0YXRpb25zIGluIHNwZWNpZmljIGFyZWFzIChtYWlubHkgbWlzc2luZyBkZXZpY2UvaGFyZHdhcmUKICAgICAgICAgIHN1cHBvcnQpLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIExpbnV4L3g4NjogV29ya3MsIGFuZCBhcyB0aGUgbW9zdCBwb3B1bGFyIHBsYXRmb3JtIGZvciBib3RoCiAgICAgICAgICBkZXZlbG9wZXJzIGFuZCB1c2VycywgaXQgaXMgdGhlIGJlc3Qgc3VwcG9ydGVkIHBsYXRmb3JtIG9mIGFsbC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGF0LW1pbmltdW0tQ1BVLW11c3QtSS1oYXZlIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdoYXQgbWluaW11bSBDUFUgbXVzdCBJIGhhdmUgaW4gbXkgY29tcHV0ZXIgdG8gYmUgYWJsZSB0byBydW4gV2luZSAKICAgICAgICAgIGFuZCBNUyBXaW5kb3dzIGFwcGxpY2F0aW9ucyBzbW9vdGhseT8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXZSBuZWVkIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBXaW5lIGFuZCBXaW5lbGliIGhlcmUuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSB3b24ndCBydW4gb24gYW55IHg4NiBDUFUgbGVzcyB0aGFuIGFuIDgwMzg2IGR1ZSB0byBhZGRyZXNzCiAgICAgICAgICBtYW5hZ2VtZW50IGxpbWl0YXRpb25zLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEl0IGlzIGtub3duIHRvIGFsc28gd29yayBpbiB0aGUgODA0ODYgYW5kIHVwd2FyZHMgY29tcGF0aWJsZSBDUFVzLgogICAgICAgICAgVGhlIGJhc2ljIHRlc3QgaXMsIGlmIHlvdSBjYW4gcnVuIFgxMSBub3csIHlvdSBzaG91bGQgYmUgYWJsZSB0byBydW4KICAgICAgICAgIFdpbmUgYW5kIE1TIFdpbmRvd3MgYXBwbGljYXRpb25zIHVuZGVyIGl0LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEFzIGFsd2F5cywgdGhlIGZhc3RlciB5b3VyIENQVSwgdGhlIGJldHRlci4gSGF2aW5nIGEgbWF0aCBjb3Byb2Nlc3NvcgogICAgICAgICAgaXMgdW5pbXBvcnRhbnQuIEhvd2V2ZXIsIGhhdmluZyBhIGdyYXBoaWNzIGFjY2VsZXJhdGVkIHZpZGVvIGNhcmQKICAgICAgICAgIHN1cHBvcnRlZCBieSBYIHdpbGwgaGVscCBncmVhdGx5LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIERlcGVuZGluZyBvbiB5b3VyIGFwcGxpY2F0aW9uIHlvdSBtYXkgZmluZCB0aGF0IGZhc3RlciBzcGVlZHMgYXJlCiAgICAgICAgICByZXF1aXJlZCBmb3Igc2Vuc2libGUgdXNlLiBXZSBjYW4ndCBnaXZlIHNwZWNpZmljIGFkdmljZSBvbiB0aGF0IGR1ZQogICAgICAgICAgdG8gdGhlIHZhc3QgcmFuZ2Ugb2YgYXBwbGljYXRpb25zIG91dCB0aGVyZS4gSG93ZXZlciB0aGUgcnVsZSBvZgogICAgICAgICAgdGh1bWIgaXMgdGhhdCBpZiB5b3VyIGFwcGxpY2F0aW9uIHJ1bnMgZmluZSBvbiBXaW5kb3dzLCBpdCBzaG91bGQKICAgICAgICAgIHJ1biBmaW5lIG9uIHRoZSBzYW1lIHBsYXRmb3JtIGluIFdpbmUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LW11Y2gtZGlzay1zcGFjZS13aWxsLVdpbmUtdGFrZSI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgIEhvdyBtdWNoIGRpc2sgc3BhY2Ugd2lsbCB0aGUgV2luZSBzb3VyY2UgY29kZSBhbmQgYmluYXJpZXMgdGFrZSBvbiBteQogICAgICAgICBoYXJkIGRyaXZlPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFlvdSBuZWVkIGFwcHJveGltYXRlbHkgMjUwIG1lZ2FieXRlcyBvZiBmcmVlIGhhcmQgZHJpdmUgc3BhY2UgdG8KICAgICAgICAgIHN0b3JlIGFuZCBjb21waWxlIHRoZSBzb3VyY2UgY29kZS4gV2luZSBhbHNvIG5lZWRzIGFib3V0IDE4IG1lZ3MgaW4KICAgICAgICAgIHlvdXIgL3RtcCBkaXJlY3RvcnkuIEFuZCBhYm91dCA1MCBNQiBhcmUgbmVlZGVkIHRvIGRvIGEgbWFrZSBpbnN0YWxsLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEJpbmFyeSBwYWNrYWdlcywgZXNwZWNpYWxseSB0aG9zZSBub3QgY29udGFpbmluZyBkZWJ1ZyBpbmZvcm1hdGlvbiwKICAgICAgICAgIGhhdmUgbXVjaCBsb3dlciBkaXNrIHNwYWNlIHJlcXVpcmVtZW50cywgdXN1YWxseSBpbiB0aGUgMjBNQiByYW5nZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGF0LW90aGVyLXNvZnR3YXJlLWRvLUktbmVlZC10by1jb21waWxlIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdoYXQgb3RoZXIgc29mdHdhcmUgZG8gSSBuZWVkIHRvIGluc3RhbGwsIGNvbXBpbGUgYW5kIHJ1bgogICAgICAgICAgV2luZT8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBNYW55IGRldmVsb3BtZW50IHRvb2xzIGFyZSBuZWVkZWQgaW4gb3JkZXIgdG8gY29tcGlsZSBXaW5lLgogICAgICAgICAgQSBsaXN0IG9mIHJlcXVpcmVkIHBhY2thZ2VzIGZvciBzZXZlcmFsIGRpc3RyaWJ1dGlvbnMgaXMgaW5jbHVkZWQgaW4KICAgICAgICAgIHRoZSBSRUFETUUgKDx1bGluayB1cmw9Imh0dHA6Ly9zb3VyY2Uud2luZWhxLm9yZy9zb3VyY2UvUkVBRE1FIj4KICAgICAgICAgIGh0dHA6Ly9zb3VyY2Uud2luZWhxLm9yZy9zb3VyY2UvUkVBRE1FPC91bGluaz4pLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRvIHJ1biBXaW5lLCB5b3Ugd2lsbCBuZWVkIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgPC9wYXJhPgoKICAgICAgICA8aXRlbWl6ZWRsaXN0IHNwYWNpbmc9ImNvbXBhY3QiPgogICAgICAgICAgPGxpc3RpdGVtPiAKICAgICAgICAgICAgPHBhcmE+VGhlIGNvbXBpbGVkIFdpbmUgYmluYXJ5PC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+QSBwcm9wZXJseSBjb25maWd1cmVkIHdpbmUuY29uZiBmaWxlIChvciB+Ly53aW5lcmMgZmlsZSk8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT5BbiBpbnN0YWxsZWQgYW5kIHdvcmtpbmcgWCBXaW5kb3cgc3lzdGVtPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+U29tZSBXaW5kb3dzIHByb2dyYW1zIHRvIHRlc3Q8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LW11Y2gtUkFNLWRvLUktbmVlZCI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBIb3cgbXVjaCBSQU0gZG8gSSBuZWVkIHRvIGhhdmUgb24gbXkgVU5JWCBzeXN0ZW0gdG8gYmUgYWJsZSB0byBydW4gCiAgICAgICAgICBXaW5lIGFuZCBNUyBXaW5kb3dzIGFwcGxpY2F0aW9ucyBzbW9vdGhseT8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UgY2FuIHJ1biBYIHNtb290aGx5IG9uIHlvdXIgVU5JWCBzeXN0ZW0gbm93LCB5b3Ugc2hvdWxkIGJlIAogICAgICAgICAgYWJsZSB0byBydW4gV2luZSBhbmQgTVMgV2luZG93cyBhcHBsaWNhdGlvbnMganVzdCBmaW5lIHRvbywgZGVwZW5kaW5nCiAgICAgICAgICBvbiBob3cgbWVtb3J5IGh1bmdyeSB0aGUgYXBwbGljYXRpb24gaXMuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSdzIG1lbW9yeSByZXF1aXJlbWVudHMgd2lsbCBkZXBlbmQgb24gdGhlIGFwcGxpY2F0aW9uIG9yIGdhbWUKICAgICAgICAgIHRoYXQgeW91IGNob29zZSB0byBydW4uIFlvdSB3aWxsIG5lZWQgdG8gbWVldCB0aGUgbWluaW11bSByZXF1aXJlbWVudHMgZm9yCiAgICAgICAgICB0aGUgYXBwbGljYXRpb24gYXMgd2VsbCBhcyB0aGUgb3ZlcmhlYWQgb2YgeW91ciB1bmRlcmx5aW5nIE9TLgogICAgICAgICAgWW91IG1heSB3YW50IHRvIGNoZWNrIHdpdGggdGhlIHZlbmRvciBvZiB0aGUgYXBwbGljYXRpb24gZm9yIGl0cyAKICAgICAgICAgIHN1Z2dlc3RlZCBtZW1vcnkgcmVxdWlyZW1lbnRzLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy1sb25nLWRvZXMtV2luZS10YWtlLXRvLWJ1aWxkIj4KICAgICAgICA8cGFyYT5Ib3cgbG9uZyBkb2VzIFdpbmUgdGFrZSB0byBidWlsZDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgZ2V0dGluZyB0byBiZSBxdWl0ZSBsYXJnZSwgYW5kIGJ1aWxkaW5nIGZyb20gc2NyYXRjaCB0YWtlcyBhCiAgICAgICAgICBsb3Qgb2YgcHJvY2Vzc2luZy4gQXMgb2YgTWF5IDIwMDQsIGNvbXBpbGUgdGltZXMgd2VyZSBhcm91bmQgMTAKICAgICAgICAgIG1pbnV0ZXMgb24gYSBBdGhsb24gMjAwMCB3aXRoIDUxMiBNQiBvZiBSQU0gYW5kIDIwIG1pbnV0ZXMgb24gYSBBdGhsb24gCiAgICAgICAgICAxMjAwIHdpdGggNjQwIE1CIG9mIFJBTS4gSWYgeW91IGhhdmUgYSBDVlMgY29weSBvZiB3aW5lLCB5b3UgbWF5IG5vdCBuZWVkCiAgICAgICAgICB0byByZWJ1aWxkIGV2ZXJ5IHRoaW5nIGVhY2ggdXBkYXRlLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSS1oYXZlLWEtRHJpdmVzcGFjZWQtcGFydGl0aW9uIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEkgaGF2ZSBhIERyaXZlc3BhY2VkLCBEb3VibGVzcGFjZWQgb3IgU3RhY2tlcmVkIERPUyBwYXJ0aXRpb24uIENhbiAKICAgICAgICAgIFdpbmUgcnVuIE1TIFdpbmRvd3MgYmluYXJpZXMgbG9jYXRlZCBpbiBzdWNoIGEgcGFydGl0aW9uPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFllcywgYnV0IG9ubHkgaWYgdGhlIG9wZXJhdGluZyBzeXN0ZW0gc3VwcG9ydHMgbW91bnRpbmcgdGhvc2UgdHlwZXMKICAgICAgICAgIG9mIGRyaXZlcy4gVGhlcmUgaXMgYSBMaW51eCBmaWxlIHN5c3RlbSBkcml2ZXIgY2FsbGVkIGRtc2RvcyB0aGF0CiAgICAgICAgICB3aWxsIGFsbG93IHJlYWQvd3JpdGUgYWNjZXNzIHRvIERvdWJsZXNwYWNlZCBhbmQgRHJpdmVzcGFjZSAxLjAKICAgICAgICAgIGRyaXZlcy4gTW9yZSBzcGVjaWZpY2FsbHksIGl0IHN1cHBvcnRzIG1vdW50aW5nIERPUyA2LjAgYW5kIDYuMiAKICAgICAgICAgIERvdWJsZXNwYWNlZCwgRE9TIDYuMjIgRHJpdmVzcGFjZWQsIGFuZCBXaW5kb3dzIDk1IERvdWJsZXNwYWNlZCAKICAgICAgICAgIGNvbXByZXNzZWQgcGFydGl0aW9ucyAocmVhZCBhbmQgd3JpdGUgYWNjZXNzIHdvcmtzIGZpbmUsIGJ1dCB3cml0ZSAKICAgICAgICAgIGFjY2VzcyBpcyBzbG93KS4gSXQgY2FuIGJlIGZvdW5kIGF0IAogICAgICAgICAgPHVsaW5rIHVybD0iZnRwOi8vbWV0YWxhYi51bmMuZWR1L3B1Yi9MaW51eC9zeXN0ZW0vZmlsZXN5c3RlbXMvZG9zZnMvIj4KICAgICAgICAgIGZ0cDovL21ldGFsYWIudW5jLmVkdS9wdWIvTGludXgvc3lzdGVtL2ZpbGVzeXN0ZW1zL2Rvc2ZzLzwvdWxpbms+CiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iRG8tSS1uZWVkLXRvLWhhdmUtYS1ET1MtcGFydGl0aW9uIj4KICAgICAgICA8cGFyYT5EbyBJIG5lZWQgdG8gaGF2ZSBhIERPUyBwYXJ0aXRpb24gb24gbXkgc3lzdGVtIHRvIHVzZSBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFlvdSBkbyBub3QgbmVlZCBhIGxpY2Vuc2VkIGFuZCBpbnN0YWxsZWQgY29weSBvZiBET1Mgb3IgTVMgV2luZG93cyB0bwogICAgICAgICAgaW5zdGFsbCwgY29uZmlndXJlIGFuZCBydW4gV2luZS4gSG93ZXZlciwgV2luZSBoYXMgdG8gYmUgYWJsZSB0byAKICAgICAgICAgICdzZWUnIGFuIE1TIFdpbmRvd3MgYmluYXJ5IChpLmUuIGFwcGxpY2F0aW9uKSBpZiBpdCBpcyB0byBydW4gaXQuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iRG9lcy1NUy1XaW5kb3dzLW5lZWQtdG8tYmUtaW5zdGFsbGVkIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIERvZXMgTVMgV2luZG93cyBuZWVkIHRvIGJlIGxvYWRlZCBpbnRvIHRoYXQgcGFydGl0aW9uIGluIG9yZGVyIHRvCiAgICAgICAgICBydW4gTVMgV2luZG93cyBwcm9ncmFtcyB1bmRlciBXaW5lPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE1hbnkgZm9sa3MgaGF2ZSBzdWNjZXNzZnVsbHkgaW5zdGFsbGVkIGFuZCBydW4gcHJvZ3JhbXMKICAgICAgICAgIGluIHRoZWlyIFVOSVggZmlsZSBzeXN0ZW0gd2l0aG91dCBoYXZpbmcgYSBET1MgcGFydGl0aW9uIG9yIE1TIAogICAgICAgICAgV2luZG93cy4gSG93ZXZlciwgaW4gbWFueSBjYXNlcyB5b3UgbmVlZCBhIGRpcmVjdG9yeSBhbmQgZmlsZSAKICAgICAgICAgIGluZnJhc3RydWN0dXJlIHRoYXQgaXMgc2ltaWxhciB0byBhbiBleGlzdGluZyBXaW5kb3dzIGluc3RhbGxhdGlvbi4KICAgICAgICAgIFNvbWUgYXBwbGljYXRpb25zJyBpbnN0YWxsYXRpb24gcHJvZ3JhbXMgd2FudCB0byBkaXN0cmlidXRlIHNvbWUgb2YKICAgICAgICAgIHRoZSBwYWNrYWdlJ3MgZmlsZXMgaW50byB0aGUgL3dpbmRvd3MgYW5kIC93aW5kb3dzL3N5c3RlbSAKICAgICAgICAgIGRpcmVjdG9yaWVzIGluIG9yZGVyIHRvIHJ1biwgYW5kIHVubGVzcyB0aGVzZSBleGlzdCBvbiB5b3VyIFVOSVggCiAgICAgICAgICBmaWxlIHN5c3RlbSwgdGhvc2UgcHJvZ3JhbXMgd2lsbCBub3QgaW5zdGFsbCBjb3JyZWN0bHkgYW5kIHByb2JhYmx5CiAgICAgICAgICB3aWxsIG5vdCBydW4gd2VsbCwgaWYgYXQgYWxsLiBNb3N0IHBhY2thZ2VzIHdpbGwgc2V0IHRoYXQgdXAgZm9yIHlvdQoJICBhcyBwYXJ0IG9mIHRoZSBpbnN0YWxsIHByb2Nlc3MuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgeW91IGhhdmUgYSBET1MgcGFydGl0aW9uIHdpdGggTVMgV2luZG93cyBpbnN0YWxsZWQgaW4gaXQsIG1ha2UKICAgICAgICAgIHN1cmUgdGhhdCB5b3VyIFVOSVggc3lzdGVtIGNhbiAnc2VlJyB0aGlzIHBhcnRpdGlvbiAoY2hlY2sgeW91ciAKICAgICAgICAgIC9ldGMvZnN0YWIgZmlsZSBvciBtb3VudCB0aGUgcGFydGl0aW9uIG1hbnVhbGx5KSBzbyB0aGF0IFdpbmUgY2FuCiAgICAgICAgICBydW4gdGhlIE1TIFdpbmRvd3MgYmluYXJpZXMgbG9jYXRlZCBpbiB0aGUgRE9TIHBhcnRpdGlvbi4gVG8gcnVuCiAgICAgICAgICB3aXRob3V0IGEgRE9TIHBhcnRpdGlvbiwgeW91IG5lZWQgdG8gc2V0IGEgVU5JWCBwYXRoIHRvIGJlIHlvdXIgCiAgICAgICAgICBkcml2ZSBDLCBhbmQgbWFrZSBzdXJlIHRoYXQgdGhlIC93aW5kb3dzIGFuZCAvd2luZG93cy9zeXN0ZW0gCiAgICAgICAgICBkaXJlY3RvcmllcyBwb2ludCB0byBzb21lIHBsYWNlIHRoYXQgYWN0dWFsbHkgZXhpc3QuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSGVyZSdzIGFuIGV4YW1wbGUsIGNvcGllZCBmcm9tIGEgbWFjaGluZSB3aGljaCBoYXMgbm8gRE9TIHBhcnRpdGlvbgogICAgICAgICAgYnV0IHN1Y2Nlc3NmdWxseSBydW5zIFdpbmU6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+CiAgICBbRHJpdmUgQ10gICAgICAKICAgICAgICAgIFBhdGg9L3Zhci9saWIvd2luZQogICAgICAgICAgVHlwZT1oZAogICAgW3dpbmVdCiAgICAgICAgICBXaW5kb3dzPWM6XHdpbmRvd3MKICAgICAgICAgIFN5c3RlbT1jOlx3aW5kb3dzXHN5c3RlbQogICAgICAgICAgVGVtcD1lOlwKICAgICAgICAgIFBhdGg9Yzpcd2luZG93cztjOlx3aW5kb3dzXHN5c3RlbTtjOgogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICBJbiA8ZmlsZW5hbWU+L3Zhci9saWIvd2luZS93aW5kb3dzPC9maWxlbmFtZT4sIHlvdSB3aWxsIG5lZWQgdG8KICAgICAgICAgaW5zdGFsbCBhIDxmaWxlbmFtZT53aW4uaW5pPC9maWxlbmFtZT4gY29uZmlnIGZpbGUgdGhhdCB5b3UgbWlnaHQKICAgICAgICAgZmluZCBvbiBhIHR5cGljYWwgTVMgV2luZG93cyAzLjEgbWFjaGluZS4gVGhlIGRpcmVjdG9yeQogICAgICAgICA8ZmlsZW5hbWU+L3Zhci9saWIvd2luZS93aW5kb3dzL3N5c3RlbTwvZmlsZW5hbWU+IHNob3VsZCBleGlzdCwgYnV0CiAgICAgICAgIGRvZXNuJ3QgbmVlZCB0byBjb250YWluIGFueXRoaW5nLiBIb3dldmVyLCB0byB1c2UgTVMgRExMcywgeW91IGNhbgogICAgICAgICBjb3B5IHRoZW0gaW50byB0aGF0IGRpcmVjdG9yeS4gTm90ZSB0aGF0IHRoaXMgaXMgYSBjb250cmF2ZW50aW9uIG9mCiAgICAgICAgIHRoZSBXaW5kb3dzIGxpY2VuY2UgdW5sZXNzIFdpbmRvd3MgaXMgcHJvcGVybHkgaW5zdGFsbGVkIG9uIHRoZQogICAgICAgICBtYWNoaW5lLiBJZiB5b3UgaGF2ZSBET1MvTVMgV2luZG93cyBpbnN0YWxsZWQgb24geW91ciBzeXN0ZW0sIHlvdSBjYW4KICAgICAgICAgbW91bnQgdGhhdCBwYXJ0aXRpb24gYXQgYm9vdHVwIGJ5IG1vZGlmeWluZyB0aGUgZmlsZSAKICAgICAgICAgPGZpbGVuYW1lPi9ldGMvZnN0YWI8L2ZpbGVuYW1lPiBpbiB5b3VyIFVOSVggcGFydGl0aW9uIChhc3N1bWluZyB0aGF0CiAgICAgICAgIHRoZSBVTklYIGtlcm5lbCBzdXBwb3J0cyB0aGUgRE9TL01TIFdpbmRvd3MgZmlsZSBzeXN0ZW0gdHlwZSkuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgeW91IGVkaXQgdGhpcyBmaWxlIGJ5IGhhbmQsIGl0IHNob3VsZCBjb250YWluIHNvbWV0aGluZyBzaW1pbGFyCiAgICAgICAgICB0byB0aGUgZm9sbG93aW5nOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgovZGV2L2hkYTEgL2Rvc2MgbXNkb3MgdWlkPTAsZ2lkPTEwMCx1bWFzaz0wMDcgMCAwCiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGlzIHdpbGwgYWxsb3cgeW91IHRvIHJlYWQgYW5kIHdyaXRlIHRvIHRoZSBET1MgcGFydGl0aW9uIHdpdGhvdXQKICAgICAgICAgIGJlaW5nIHJvb3QuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSWYtV2luZS1jb21wbGV0ZWx5LXJlcGxhY2VzLU1TLVdpbmRvd3MiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgV2luZSBjb21wbGV0ZWx5IHJlcGxhY2VzIE1TIFdpbmRvd3MsIHdpbGwgaXQgZHVwbGljYXRlIGFsbCBvZiB0aGUKICAgICAgICAgIGZ1bmN0aW9ucyBvZiBNUyBXaW5kb3dzPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUncyBnb2FsIGlzIHRvIG1ha2UgaXQgcG9zc2libGUgdG8gcnVuIFdpbmRvd3MgYXBwbGljYXRpb25zIG9uCiAgICAgICAgICBVbml4LiBUbyB0aGlzIGVuZCBpdCB3aWxsIHByb3ZpZGUgcmVwbGFjZW1lbnRzIGZvciBqdXN0IHRob3NlCiAgICAgICAgICBETExzIGFuZCBBUElzIHRoYXQgYXJlIG5lZWRlZCBieSB0aGVzZSBXaW5kb3dzIGFwcGxpY2F0aW9ucy4KICAgICAgICAgIFRoaXMgbWVhbnMgdGhhdCBXaW5lIHdpbGwgbm90IHByb3ZpZGUgcmVwbGFjZW1lbnRzIGZvciBETExzIHRoYXQKICAgICAgICAgIGFyZSBub3Qgc2hpcHBlZCB3aXRoIFdpbmRvd3Mgb3IgYXJlIGFsd2F5cyBzaGlwcGVkIHdpdGggV2luZG93cwogICAgICAgICAgYXBwbGljYXRpb24gKGUuZy4gdGhlIFZpc3VhbCBCYXNpYyBydW4gdGltZSkuIFRoaXMgYWxzbwogICAgICAgICAgbWVhbnMgdGhhdCBpbXBsZW1lbnRpbmcgYW4gQVBJIHRoYXQgbm8gYXBwbGljYXRpb24gZXZlciB1c2VzIGlzIG5vdAogICAgICAgICAgYSBwcmlvcml0eS4gU2ltaWxhcmx5LCB1bnRpbCB0aGVyZSBhcmUgYXBwbGljYXRpb25zIG91dCB0aGVyZSB0aGF0CiAgICAgICAgICB1c2UgdGhlIFdpbjY0IEFQSSwgaXQgd2lsbCBub3QgYmUgYSBwcmlvcml0eS4gVGhhdCBiZWluZyBzYWlkLAogICAgICAgICAgd2Ugd2lsbCBjZXJ0YWlubHkgdHJ5IHRvIGtlZXAgb3VyIG9wdGlvbnMgb3BlbiBhbmQgdG8gaW1wcm92ZSBvdXIgQVBJCiAgICAgICAgICBjb3ZlcmFnZSBhcyB3ZSBjYW4uCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQWxzbyBXaW5lIGlzIG5vdCBhbiBvcGVyYXRpbmcgc3lzdGVtLCBzbyB0aGF0IHdyaXRpbmcgZGV2aWNlCiAgICAgICAgICBkcml2ZXJzIGlzIG5vdCBwYXJ0IG9mIFdpbmUncyBnb2Fscy4gSG93ZXZlciBpZiB5b3UgYXJlIGludGVyZXN0ZWQKICAgICAgICAgIGluIGRldmljZSBkcml2ZXJzLCB0aGUgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5rZXJuZWwub3JnLyI+TGludXg8L3VsaW5rPiwKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cuZnJlZWJzZC5vcmcvIj5GcmVlQlNEPC91bGluaz4gYW5kCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LnJlYWN0b3MuY29tLyI+UmVhY3RPUzwvdWxpbms+IGtlcm5lbCBkZXZlbG9wZXJzCiAgICAgICAgICB3b3VsZCBjZXJ0YWlubHkgYXBwcmVjaWF0ZSB5b3VyIGNvbnRyaWJ1dGlvbi4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBTaW1pbGFybHkgV2luZSBkb2VzIG5vdCB0cnkgdG8gYmUgYSBkZXNrdG9wIGVudmlyb25tZW50IHNvCiAgICAgICAgICBwcm92aWRpbmcgYXBwbGV0cyBzdWNoIGFzIGEgY2FsY3VsYXRvciwgYSBmaWxlIG1hbmFnZXIgb3IgZXZlbgogICAgICAgICAgd2luZG93IG1hbmFnZXIgdGhhdCBsb29rIGxpa2UgV2luZG93cywgYXJlIGxvdyBwcmlvcml0eSBvciB3b3VsZAogICAgICAgICAgZXZlbiBiZXN0IGJlIGRvbmUgYXMgYSBzZXBhcmF0ZSBwcm9qZWN0LiBTdWNoIHByb2plY3RzIHdvdWxkIGFsc28KICAgICAgICAgIHRvIGEgbGFyZ2UgZXh0YW50IGJlIHJlZHVuZGFudCB3aXRoIG90aGVyIG9wZW4tc291cmNlIHByb2plY3RzLgogICAgICAgICAgQWdhaW4sIHRoZXJlIGFyZSBwcm9qZWN0cyB0aGF0IHdvdWxkIGNlcnRhaW5seSBhcHByZWNpYXRlIHlvdXIKICAgICAgICAgIGNvbnRyaWJ1dGlvbnMgaW4gdGhpcyBhcmVhcywgc3VjaCBhcyB0aGUKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cuZ25vbWUub3JnLyI+R25vbWU8L3VsaW5rPiBvcgogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5rZGUub3JnLyI+S0RFPC91bGluaz4gZGVza3RvcCBlbnZpcm9ubWVudHMuIFlvdQogICAgICAgICAgd2lsbCBnZXQgdGhlIGFkZGVkIGJlbmVmaXQgdGhhdCB5b3VyIGNvbnRyaWJ1dGlvbiB3aWxsIHRoZW4gYmUKICAgICAgICAgIHVzYWJsZSBieSBldmVyeW9uZSwgbm90IGp1c3QgYnkgV2luZSB1c2Vycy4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaWxsLUktaW5zdGFsbC1vbi1hbnktVU5JWC1maWxlLXN5c3RlbSI+CiAgICAgICAgPHBhcmE+IAogICAgICAgICAgV2lsbCBJIGJlIGFibGUgdG8gaW5zdGFsbCBNUyBXaW5kb3dzIGFwcGxpY2F0aW9ucyBpbiBhbnkgZmxhdm9yIG9mIGEKICAgICAgICAgIFVOSVggZmlsZSBzeXN0ZW0/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBpcyB3cml0dGVuIHRvIGJlIGZpbGUgc3lzdGVtIGluZGVwZW5kZW50LCBzbyBNUyBXaW5kb3dzIAogICAgICAgICAgYXBwbGljYXRpb25zIHdpbGwgaW5zdGFsbCBhbmQgcnVuIHVuZGVyIHZpcnR1YWxseSBhbnkgZmlsZSBzeXN0ZW0KICAgICAgICAgIHN1cHBvcnRlZCBieSB5b3VyIGJyYW5kIG9mIFVOSVguCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2lsbC1XaW5lLXJ1bi1vbmx5LXVuZGVyLVgiPgogICAgICAgIDxwYXJhPldpbGwgV2luZSBydW4gb25seSB1bmRlciBYLCBvciBjYW4gaXQgcnVuIGluIGNoYXJhY3RlciBtb2RlPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE1vc3Qgb2YgV2luZSdzIGRldmVsb3BtZW50IGVmZm9ydCBpcyBnZWFyZWQgdG93YXJkcyBNUyBXaW5kb3dzJyBHVUksCiAgICAgICAgICBidXQgc29tZSBsaW1pdGVkIHN1cHBvcnQgZm9yIGNoYXJhY3RlciBtb2RlIGhhcyBhcHBlYXJlZCwgYnkgc2V0dGluZwogICAgICAgICAgPHBhcmFtZXRlcj5HcmFwaGljc0RyaXZlcj10dHlkcnY8L3BhcmFtZXRlcj4gaW4gd2luZS5jb25mJ3MKICAgICAgICAgIDxwYXJhbWV0ZXI+W3dpbmVdPC9wYXJhbWV0ZXI+IHNlY3Rpb24uCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSdzIGluZnJhc3RydWN0dXJlIGlzIGFscmVhZHkgc29tZXdoYXQgcHJlcGFyZWQgZm9yIHN1cHBvcnRpbmcKICAgICAgICAgIG90aGVyIGdyYXBoaWNzIGRyaXZlcnMgdGhhbiB4MTFkcnYsIGJ1dCBubyByZWFsICJhbHRlcm5hdGl2ZSIgCiAgICAgICAgICBncmFwaGljcyBkcml2ZXIgaGFzIGJlZW4gZGV2ZWxvcGVkIHlldC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaWxsLVdpbmUtcnVuLXVuZGVyLWFueS1YLXdpbmRvdy1tYW5hZ2VyIj4KICAgICAgICA8cGFyYT5XaWxsIFdpbmUgcnVuIHVuZGVyIGFueSBYIHdpbmRvdyBtYW5hZ2VyPyBEb2VzIGl0IHJlcXVpcmUgYSB3aW5kb3cgbWFuYWdlciBhdCBhbGw/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBpcyB3aW5kb3cgbWFuYWdlciBpbmRlcGVuZGVudCwgc28gdGhlIFggd2luZG93IG1hbmFnZXIgeW91CiAgICAgICAgICBjaG9vc2UgdG8gcnVuIGhhcyAoYWxtb3N0KSBubyBiZWFyaW5nIG9uIHlvdXIgYWJpbGl0eSB0byBydW4gTVMKICAgICAgICAgIFdpbmRvd3MgcHJvZ3JhbXMgdW5kZXIgV2luZS4gV2luZSB1c2VzIHN0YW5kYXJkIFggbGlicmFyaWVzLCBzbyBubwogICAgICAgICAgYWRkaXRpb25hbCBvbmVzIGFyZSBuZWVkZWQuIFdpbmUgaGFzIGl0cyBvd24gd2luZG93IG1hbmFnZW1lbnQsCiAgICAgICAgICB3aGljaCBhY3RzIGxpa2UgTVMgV2luZG93cy4gSXQgY2FuIGJlIHR1cm5lZCBvZmYgdG8gdXNlIHRoZSBuYXRpdmUKICAgICAgICAgIHdpbmRvdyBtYW5hZ2VyIGJ5IG1vZGlmeWluZyBNYW5hZ2VkIG9yIERlc2t0b3Agc2V0dGluZ3MgYXMgZGVzY3JpYmVkCiAgICAgICAgICBpbiA8Y29tbWFuZD5tYW4gd2luZS5jb25mPC9jb21tYW5kPi4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaWxsLTMyLWJpdC1hcHBsaWNhdGlvbnMtcnVuLXVuZGVyLVdpbmUiPgogICAgICAgIDxwYXJhPldpbGwgMzItYml0IFdpbmRvd3MgOTUvOTgvTUUvTlQvMjAwMC9YUCBhcHBsaWNhdGlvbnMgcnVuIHVuZGVyIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWWVzLCAzMi1iaXQgcHJvZ3JhbXMgYXJlIG5vdyB3ZWxsIHN1cHBvcnRlZC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgPC9xYW5kYWRpdj4KICAgIDxxYW5kYWRpdiBpZD0iRkFRLUdldHRpbmctV2luZSI+CiAgICAgIDx0aXRsZT5HZXR0aW5nIFdpbmU8L3RpdGxlPgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGVyZS1jYW4tSS1nZXQtV2luZSI+CiAgICAgICAgPHBhcmE+V2hlcmUgY2FuIEkgZ2V0IFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQmVjYXVzZSBvZiBsYWdzIGNyZWF0ZWQgYnkgdXNpbmcgYSBtaXJyb3IsIHdvcmQgb2YgdGhlIGxhdGVzdCByZWxlYXNlCiAgICAgICAgICBtYXkgcmVhY2ggeW91IGJlZm9yZSB0aGUgcmVsZWFzZSBpcyBhY3R1YWxseSBhdmFpbGFibGUgYXQgdGhlIGZ0cAogICAgICAgICAgc2l0ZXMgbGlzdGVkIGhlcmUuIFRoZSBzb3VyY2VzIGFyZSBhdmFpbGFibGUgZnJvbSB0aGUgZm9sbG93aW5nCiAgICAgICAgICBsb2NhdGlvbnM6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdC9zaG93ZmlsZXMucGhwP2dyb3VwX2lkPTYyNDEmYW1wO3BhY2thZ2VfaWQ9Nzc0NDkiPgogICAgICAgICAgICAgICBodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3Qvc2hvd2ZpbGVzLnBocD9ncm91cF9pZD02MjQxJmFtcDtwYWNrYWdlX2lkPTc3NDQ5CiAgICAgICAgICAgICAgPC91bGluaz4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5pYmlibGlvLm9yZy9wdWIvTGludXgvQUxQSEEvd2luZS9kZXZlbG9wbWVudC8iPgogICAgICAgICAgICAgICBodHRwOi8vd3d3LmliaWJsaW8ub3JnL3B1Yi9MaW51eC9BTFBIQS93aW5lL2RldmVsb3BtZW50LwogICAgICAgICAgICAgIDwvdWxpbms+CiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIDx1bGluayB1cmw9ImZ0cDovL2Z0cC5pbmZvbWFnaWMuY29tL3B1Yi9taXJyb3JzL2xpbnV4L3N1bnNpdGUvQUxQSEEvd2luZS9kZXZlbG9wbWVudC8iPgogICAgICAgICAgICAgIGZ0cDovL2Z0cC5pbmZvbWFnaWMuY29tL3B1Yi9taXJyb3JzL2xpbnV4L3N1bnNpdGUvQUxQSEEvd2luZS9kZXZlbG9wbWVudC8gCiAgICAgICAgICAgICAgPC91bGluaz4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KCiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIDx1bGluayB1cmw9ImZ0cDovL2Z0cC5mdS1iZXJsaW4uZGUvdW5peC9saW51eC9taXJyb3JzL3N1bnNpdGUudW5jLmVkdS9BTFBIQS93aW5lL2RldmVsb3BtZW50LyI+CiAgICAgICAgICAgICAgZnRwOi8vZnRwLmZ1LWJlcmxpbi5kZS91bml4L2xpbnV4L21pcnJvcnMvc3Vuc2l0ZS51bmMuZWR1L0FMUEhBL3dpbmUvZGV2ZWxvcG1lbnQvIAogICAgICAgICAgICAgIDwvdWxpbms+CiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICA8dWxpbmsgdXJsPSJmdHA6Ly9vcmN1cy5wcm9nc29jLnV0cy5lZHUuYXUvcHViL1dpbmUvZGV2ZWxvcG1lbnQvIj4KICAgICAgICAgICAgICBmdHA6Ly9vcmN1cy5wcm9nc29jLnV0cy5lZHUuYXUvcHViL1dpbmUvZGV2ZWxvcG1lbnQvIAogICAgICAgICAgICAgIDwvdWxpbms+CiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CgogICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgIDxwYXJhPgogICAgICAgICAgSXQgc2hvdWxkIGFsc28gYmUgYXZhaWxhYmxlIGZyb20gYW55IG90aGVyIHNpdGUgdGhhdCBtaXJyb3JzIAogICAgICAgICAgaWJpYmxpby5vcmcsIHNlZSA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LmliaWJsaW8ub3JnL3B1Yi9MaW51eC9NSVJST1JTLmh0bWwiPmh0dHA6Ly93d3cuaWJpYmxpby5vcmcvcHViL0xpbnV4L01JUlJPUlMuaHRtbDwvPi4KICAgICAgICAgIFNvbWUgb2YgdGhlc2Ugc2l0ZXMgbWF5IGFyY2hpdmUgcHJldmlvdXMgdmVyc2lvbnMgb2YgV2luZSBhcyB3ZWxsIGFzIHRoZQogICAgICAgICAgY3VycmVudCBvbmUuIFRvIGRldGVybWluZSB3aGljaCBpcyB0aGUgbGF0ZXN0IG9uZSwgbG9vayBhdCB0aGUgCiAgICAgICAgICBkaXN0cmlidXRpb24gZmlsZSBuYW1lLCB3aGljaCB3aWxsIHRha2UgdGhlIGZvcm0gCiAgICAgICAgICBXaW5lLVlZWVlNTURELnRhci5nei4gU2ltcGx5IHJlcGxhY2UgWVlZWU1NREQgaW4gdGhlIGRpc3RyaWJ1dGlvbgogICAgICAgICAgZmlsZSBuYW1lIHdpdGggdGhlIG51bWJlcnMgZm9yIHllYXIsIG1vbnRoIGFuZCBkYXRlLCByZXNwZWN0aXZlbHkuCiAgICAgICAgICBUaGUgbGF0ZXN0IG9uZSBpcyB0aGUgb25lIHRvIGdldC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIGJpbmFyeSBwYWNrYWdlcyBhcmUgYXZhaWxhYmxlIGZvciBzZXZlcmFsIE9TJ2VzIGFuZCAKICAgICAgICAgIGRpc3RyaWJ1dGlvbnMuIFNlZSAKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9zaXRlL2Rvd25sb2FkIj4KICAgICAgICAgIHRoZSBkb3dubG9hZCBwYWdlPC91bGluaz4gZm9yIHRoZSBtb3N0IHJlY2VudCBsaXN0LgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IklzLXRoZXJlLWEtQ1ZTLXRyZWUiPgogICAgICAgIDxwYXJhPklzIHRoZXJlIGEgQ1ZTIHRyZWU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQ3VycmVudCBXaW5lIHNvdXJjZXMgYXJlIGFsc28gYXZhaWxhYmxlIHZpYSBhbm9ueW1vdXMgY2xpZW50L3NlcnZlcgogICAgICAgICAgQ1ZTLiBZb3Ugd2lsbCBuZWVkIENWUyAxLjkgb3IgYWJvdmUuIElmIHlvdSBhcmUgY29taW5nIGZyb20gYmVoaW5kIGEKICAgICAgICAgIGZpcmV3YWxsLCB5b3Ugd2lsbCBlaXRoZXIgbmVlZCBhIGhvbGUgaW4gdGhlIGZpcmV3YWxsIGZvciB0aGUgQ1ZTCiAgICAgICAgICBwb3J0ICgyNDAxKSBvciB1c2UgU09DS1MuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVG8gbG9naW4gdG8gdGhlIENWUyB0cmVlLCBkbwogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgpleHBvcnQgQ1ZTUk9PVD06cHNlcnZlcjpjdnNAY3ZzLndpbmVocS5vcmcvaG9tZS93aW5lCmN2cyBsb2dpbgogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVXNlICJjdnMiIGFzIHRoZSBwYXNzd29yZCAod2l0aG91dCB0aGUgcXVvdGVzKS4gTm90ZSB0aGF0IAogICAgICAgICAgPGZpbGVuYW1lPi9ob21lL3dpbmU8L2ZpbGVuYW1lPiBpcyBhIHBhdGggb24gdGhlIHNlcnZlciwgbm90IG9uIHlvdXIKICAgICAgICAgIG1hY2hpbmUuIFRvIGNoZWNrIG91dCB0aGUgZW50aXJlIFdpbmUgc291cmNlIHRyZWUgKHdoaWNoIG1heSBiZSAKICAgICAgICAgIHNsb3cpLCB1c2UKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KY3ZzIC16IDMgY2hlY2tvdXQgd2luZSAKICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIG9yIGlmIHlvdSBqdXN0IHdhbnQgYSBzdWJ0cmVlLCBvciBpbmRpdmlkdWFsIGZpbGUsIHlvdSBjYW4gZG8gdGhhdCAKICAgICAgICAgIHRvbyB3aXRoCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+CmN2cyAteiAzIGNoZWNrb3V0IHdpbmUvQU5OT1VOQ0UgCiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBCZSBhd2FyZSwgdGhvdWdoLCB0aGF0IGdldHRpbmcgdGhlIGVudGlyZSBXaW5lIHNvdXJjZSB0cmVlIHZpYSBDVlMKICAgICAgICAgIGlzIHByZXR0eSBzbG93LCBlc3BlY2lhbGx5IGNvbXBhcmVkIHRvIGdldHRpbmcgV2luZSBmcm9tIGFuIEZUUCAKICAgICAgICAgIG1pcnJvciBuZWFyIHlvdS4gRm9yIGEgQ1ZTIG1pcnJvciBsaXN0LCBzZWUgCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvc2l0ZS9jdnMjY3Zzc2VydmVycyI+CiAgICAgICAgICBodHRwOi8vd3d3LndpbmVocS5vcmcvc2l0ZS9jdnMjY3Zzc2VydmVyczwvdWxpbms+CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgUGF0Y2ggZmlsZXMgYXJlIGFsc28gYXZhaWxhYmxlLCBzbyB0aGF0IHlvdSBkb24ndCBoYXZlIHRvIGRvd25sb2FkLAogICAgICAgICAgaW5zdGFsbCwgYW5kIGNvbmZpZ3VyZSB0aGUgZW50aXJlIGRpc3RyaWJ1dGlvbiBlYWNoIG1vbnRoIGlmIHlvdSBhcmUKICAgICAgICAgIGN1cnJlbnQgdG8gdGhlIHByZXZpb3VzIHJlbGVhc2UuIFBhdGNoIGZpbGUgcmVsZWFzZSBuYW1lcyBmb2xsb3cgdGhlCiAgICAgICAgICBzYW1lIG51bWJlcmluZyBjb252ZW50aW9uIGFzIGRvIHRoZSBnZW5lcmFsIHJlbGVhc2VzLCBhbmQgdGFrZSB0aGUgCiAgICAgICAgICBmb3JtCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZS1ZWVlZTU1ERC5kaWZmLmd6ICAKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBQYXRjaCBmaWxlcyBhcmUgYXZhaWxhYmxlIGZyb20gdGhlIHNhbWUgc2l0ZXMgdGhhdCBkaXN0cmlidXRlIHRoZQogICAgICAgICAgZnVsbCByZWxlYXNlLiBUbyB1cGdyYWRlIHRvIGEgbmV3IHJlbGVhc2UgYnkgdXNpbmcgYSBwYXRjaCBmaWxlLAogICAgICAgICAgZmlyc3QgY2QgdG8gdGhlIHRvcC1sZXZlbCBkaXJlY3Rvcnkgb2YgdGhlIHJlbGVhc2UgKHRoZSBvbmUKICAgICAgICAgIGNvbnRhaW5pbmcgdGhlIFJFQURNRSBmaWxlKSwgdGhlbiBkbyBhICJtYWtlIGNsZWFuIiwgYW5kIHBhdGNoIHRoZQogICAgICAgICAgcmVsZWFzZSB3aXRoCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+Cmd1bnppcCAtYyBwYXRjaC1maWxlIHwgcGF0Y2ggLXAxIAogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgd2hlcmUgcGF0Y2gtZmlsZSBpcyB0aGUgbmFtZSBvZiB0aGUgcGF0Y2ggZmlsZSBzb21ldGhpbmcgbGlrZQogICAgICAgICAgV2luZS1ZWVlZTU1ERC5kaWZmLmd6LiBZb3UgY2FuIHRoZW4gcmUtcnVuIC4vY29uZmlndXJlLCBhbmQgdGhlbiBydW4KICAgICAgICAgIG1ha2UgZGVwZW5kICYmIG1ha2UKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UgYXJlIG1pcnJvcmluZyB0aGUgV2luZSBkaXN0cmlidXRpb24gZnJvbSB0aGUgdHN4LTExIHNpdGUgYW5kCiAgICAgICAgICB3aXNoIHRvIGJlIGxpc3RlZCBoZXJlIGluIHRoaXMgRkFRLCBwbGVhc2UgYWRkIGl0IHRvIHRoZSAKICAgICAgICAgICJ0aGluZ3MgdG8gZ28gaW50byB0aGUgZG9jdW1lbnRhdGlvbiIgYXJlYS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJDYW4tSS1nZXQtV2luZS11c2luZy1jdnN1cCI+CiAgICAgICAgPHBhcmE+Q2FuIEkgZ2V0IFdpbmUgdXNpbmcgY3ZzdXA/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIENWUyBtaXJyb3JzIGRvbid0IG9mZmVyIGN2c3VwIHN1cHBvcnQgeWV0LCBidXQgdGhlIG1haW4gc2VydmVyCiAgICAgICAgICBkb2VzLiBVc2UgYSA8ZmlsZW5hbWU+d2luZS5zdXA8L2ZpbGVuYW1lPiBmaWxlIG9mOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgoqZGVmYXVsdCBob3N0PWN2cy53aW5laHEub3JnCipkZWZhdWx0IGJhc2U9L2N2cwoqZGVmYXVsdCBwcmVmaXg9L2N2cy93aW5lCipkZWZhdWx0IHJlbGVhc2U9d2luZQoqZGVmYXVsdCBkZWxldGUgCgojIElmIHlvdXIgbmV0d29yayBsaW5rIGlzIGEgVDEgb3IgZmFzdGVyLCBjb21tZW50IG91dCB0aGUgZm9sbG93aW5nIGxpbmUuCiMqZGVmYXVsdCBjb21wcmVzcyAKCipkZWZhdWx0IHVzZS1yZWwtc3VmZml4IAp3aW5lIAogICAgICAgIDwvc2NyZWVuPgogICAgIDwvYW5zd2VyPgogICAgIDwvcWFuZGFlbnRyeT4KICAgIDwvcWFuZGFkaXY+CgogICAgPHFhbmRhZGl2IGlkPSJJbnN0YWxsaW5nLUFuZC1Db25maWd1cmluZy1XaW5lIj4KICAgICAgPHRpdGxlPkluc3RhbGxpbmcgYW5kIENvbmZpZ3VyaW5nIFdpbmU8L3RpdGxlPgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctZG8tSS1jb21waWxlLXRoZS1XaW5lLXNvdXJjZS1jb2RlIj4KICAgICAgICA8cGFyYT5Ib3cgZG8gSSBjb21waWxlIHRoZSBXaW5lIGRpc3RyaWJ1dGlvbiBzb3VyY2UgY29kZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBTZWUgdGhlIFJFQURNRSAoPHVsaW5rIHVybD0iaHR0cDovL3NvdXJjZS53aW5laHEub3JnL3NvdXJjZS9SRUFETUUiPmh0dHA6Ly9zb3VyY2Uud2luZWhxLm9yZy9zb3VyY2UvUkVBRE1FPC91bGluaz4pIGZvciBpbnN0cnVjdGlvbnMuCiAgICAgICAgICBBZGRpdGlvbmFsbHksIHlvdSBtYXkgd2FudCB0byBzZXQgdGhlIDxwYXJhbWV0ZXI+VE1QRElSPC9wYXJhbWV0ZXI+CiAgICAgICAgICBlbnZpcm9ubWVudCB2YXJpYWJsZSA8Y29tbWFuZD5UTVBESVI9fi90bXA8L2NvbW1hbmQ+IG9yCiAgICAgICAgICA8Y29tbWFuZD5UTVBESVI9L3RtcDwvY29tbWFuZD4gKGlmIHlvdSBhcmUgcm9vdCkuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWRvLUktaW5zdGFsbC1XaW5kb3dzLWluLVdpbmUiPgogICAgICAgIDxwYXJhPkhvdyBkbyBJIGluc3RhbGwgV2luZG93cyBpbiBXaW5lIHVuZGVyIExpbnV4PzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFNpbXBsZSBhbnN3ZXI6IHlvdSBDQU4nVC4gV2luZG93cyBkZW1hbmRzIGRpcmVjdCBhY2Nlc3MgdG8gdGhlCiAgICAgICAgICBoYXJkd2FyZSBhbmQgY2Fubm90IGdldCBpdCB3aXRoIFdpbmUgYW5kIFVOSVggaW4gdGhlIHdheQogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgc3VwcG9zZWQgdG8gYmUgcHJpbWFyaWx5IHVzZWQgV0lUSE9VVCBXaW5kb3dzLiBJZiB5b3Ugd2FudAogICAgICAgICAgdG8gdXNlIGEgV2luZG93cyBpbnN0YWxsYXRpb24sIHRoZW4gdXNlIGFuIGV4aXN0aW5nIGluc3RhbGxhdGlvbiAKICAgICAgICAgIGFsb25nc2lkZSB0aGUgVU5JWCBpbnN0YWxsYXRpb24gKHNlZSB0aGUgZHVhbC1ib290IEhPV1RPIGZvciB5b3VyIE9TCiAgICAgICAgICBmb3IgbW9yZSBkZXRhaWxzKS4gT3IgYWx0ZXJuYXRpdmVseSB1c2UgdGhlIGNhYmV4dHJhY3QgdXRpbGl0eSB0bwogICAgICAgICAgZXh0cmFjdCBXaW5kb3dzIGluc3RhbGwgYXJjaGl2ZXMgdG8gYSBkaXJlY3RvcnkgdGhhdCB5b3Ugd2FudCB0byB1c2UKICAgICAgICAgIGFzIFdpbmUncyBXaW5kb3dzIHRyZWUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWRvLUktY29uZmlndXJlLVdpbmUtdG8tcnVuLW9uLW15LXN5c3RlbSI+CiAgICAgICAgPHBhcmE+SG93IGRvIEkgY29uZmlndXJlIFdpbmUgdG8gcnVuIG9uIG15IHN5c3RlbT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIHJlcXVpcmVzIHRoYXQgeW91IGhhdmUgYSBjb25maWcgZmlsZSBhcyAKICAgICAgICAgIDxmaWxlbmFtZT5+Ly53aW5lL2NvbmZpZzwvZmlsZW5hbWU+LiBUaGUgZm9ybWF0IG9mIHRoaXMgZmlsZSBpcwogICAgICAgICAgZXhwbGFpbmVkIGluIHRoZSA8ZmlsZW5hbWU+d2luZS5jb25mPC9maWxlbmFtZT4gbWFuIHBhZ2UuIFRoZSBmaWxlCiAgICAgICAgICA8ZmlsZW5hbWU+ZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzwvZmlsZW5hbWU+CiAgICAgICAgICAoPHVsaW5rIHVybD0iaHR0cDovL3NvdXJjZS53aW5laHEub3JnL3NvdXJjZS9kb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnIj4KICAgICAgICAgIGh0dHA6Ly9zb3VyY2Uud2luZWhxLm9yZy9zb3VyY2UvZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzwvdWxpbms+KSAKICAgICAgICAgIGNvbnRhaW5zIGEgY29uZmlnIGZpbGUgZXhhbXBsZS4gTW9yZSBleHBsaWNpdCBkaXJlY3Rpb25zIGNhbiBiZSAKICAgICAgICAgIGZvdW5kIGluIHRoZSA8ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT4gZmlsZQogICAgICAgICAgKDx1bGluayB1cmw9Imh0dHA6Ly9zb3VyY2Uud2luZWhxLm9yZy9zb3VyY2UvUkVBRE1FIj4KICAgICAgICAgIGh0dHA6Ly9zb3VyY2Uud2luZWhxLm9yZy9zb3VyY2UvUkVBRE1FPC91bGluaz4pIHRoYXQgd2lsbCBiZSBsb2NhdGVkIGluCiAgICAgICAgICB0aGUgYmFzZSBXaW5lIGRpcmVjdG9yeSBhZnRlciB5b3UgZ3VuemlwIGFuZCB1bnRhciB0aGUgZGlzdHJpYnV0aW9uCiAgICAgICAgICBmaWxlLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy1kby1JLXVwZ3JhZGUtY29uZmlndXJhdGlvbiI+CiAgICAgICAgPHBhcmE+SG93IGRvIEkgdXBncmFkZSBXaW5lIHdpdGhvdXQgbG9zaW5nIG15IHdvcmtpbmcgY29uZmlndXJhdGlvbj88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBVcGdyYWRpbmcgdGhlIHdpbmUgaW5zdGFsbGF0aW9uIGRvZXMgbm90IGFmZmVjdCB0aGUgZXhpc3Rpbmcgd2luZQogICAgICAgICAgY29uZmlndXJhdGlvbi4gU28gYWZ0ZXIgdXBncmFkaW5nIHdpbmUgeW91IHN0aWxsIGhhdmUgdGhlIG9sZCAod29ya2luZyApCiAgICAgICAgICB3aW5lIGNvbmZpZ3VyYXRpb24uCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSWYtSS11c2UtV2luZG93cy13aGljaC12ZXJzaW9ucy1PSyI+CiAgICAgICAgPHBhcmE+SWYgSSB3YW50IHRvIHVzZSBhIFdpbmRvd3MgaW5zdGFsbCwgd2hpY2ggdmVyc2lvbnMgYXJlIE9LPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEVpdGhlciB1c2UgYSBjbGFzc2ljIG5vLXdpbmRvd3MgaW5zdGFsbCAoV2luZSBpcyBnZXR0aW5nIGJldHRlciBhbGwKICAgICAgICAgIHRoZSB0aW1lKSBvciB1c2UgYSBXaW45eCBpbnN0YWxsIChXaW45NSwgOTgsIDk4U0UsIE1FKS4gRE9OJ1QgCiAgICAgICAgICBjb25maWd1cmUgV2luZSB0byB1c2UgYW4gTlQtYmFzZWQgV2luZG93cyBpbnN0YWxsIChOVCwgV2luMkssIFdpblhQLCBXaW4ySzMpLgogICAgICAgIDwvcGFyYT4KCTxwYXJhPgoJICBJbiBnZW5lcmFsLCBtb3N0IFdpbmRvd3MgaW5zdGFsbGF0aW9ucyBjb250YWluIHZhc3QgcXVhbnRpdGllcyBvZiBnYXJiYWdlCgkgIHRoYXQgY2FuIGNvbmZ1c2UgV2luZSBhbmQgbWFrZSBpdCBsZXNzIHJlbGlhYmxlLiBJZiB5b3UgY2FuLCBpdCdzIGJlc3QgdG8KCSAgaW5zdGFsbCB0aGUgcHJvZ3JhbXMgeW91IHdhbnQgaW50byBXaW5lJ3MgZmFrZSB3aW5kb3dzIGRyaXZlLgoJPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSWYtSS11c2UtV2luZG93cy13aGljaC1vbmUtd29ya3MtYmVzdCI+CiAgICAgICAgPHBhcmE+SWYgSSB1c2UgYSBXaW5kb3dzIGluc3RhbGwgd2l0aCBXaW5lLCB3aGljaCBvbmUgd29ya3MgYmVzdD88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBBcyBvZiAwMi8yMDAyOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEknZCBzYXkgV2luOThTRSBpcyB0aGUgYmVzdCB2ZXJzaW9uIHRvIHVzZSB3aXRoIFdpbmUsIGFzIGl0J3MgZmFpcmx5CiAgICAgICAgICB3aWRlc3ByZWFkIGFtb25nc3QgZGV2ZWxvcGVycyBhbmQgcmVsYXRpdmVseSBvbGQuIFVzaW5nIFdpbjJLIGZpbGVzCiAgICAgICAgICBpcyA8ZW1waGFzaXM+ZGVmaW5pdGVseTwvZW1waGFzaXM+IHdvcnNlIHRoYW4gYSBwbGFpbiBuby13aW5kb3dzIAogICAgICAgICAgV2luZSBpbnN0YWxsLCBhbmQgV2luIE1FIGlzIHNhaWQgdG8gYmUgcHJvYmxlbWF0aWMsIHRvbyAoYXMgcHJvYmFibHkKICAgICAgICAgIG5vIGRldmVsb3BlciB1c2VzIGl0KS4gSW4gc2hvcnQ6IGFsbCBXaW45eCAmbHQ7PSBXOThTRSBhcmUgZ29vZC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJbnN0YWxsaW5nLVZpc3VhbC1CYXNpYy1hcHBzLXdvbnQtcnVuIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEluc3RhbGxpbmcgYXBwbGljYXRpb25zIGdlbmVyYXRlZCBieSBWaXN1YWwgQmFzaWMgd29uJ3QgcnVuLiBXaGF0CiAgICAgICAgICBzaG91bGQgSSBkbz8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBNYWtlIHN1cmUgeW91IGhhdmUgYWxsIHRoZSBWQiBydW4gdGltZSBsaWJyYXJpZXMgaW5zdGFsbGVkLiBZb3UgY2FuCiAgICAgICAgICBnZXQgdGhlIGxhdGVzdCB2ZXJzaW9uIGZyb20gdGhlIE1pY3Jvc29mdCB3ZWIgc2l0ZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGVuLUktY2xpY2stb24tZXhlLWZpbGUtbm90aGluZy1oYXBwZW5zIj4KICAgICAgICA8cGFyYT5XaGVuIEkgY2xpY2sgb24gKi5leGUgZmlsZSBpbiBteSBmaWxlIE1hbmFnZXIsIG5vdGhpbmcgaGFwcGVucy48L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGUgbm9ybWFsIFdpbmUgcmVsZWFzZXMgZG9uJ3QgaGF2ZSAuZXhlIGV4dGVuc2lvbnMgcmVnaXN0ZXJlZCBmb3IKICAgICAgICAgIFdpbmUgaW4gS0RFL0dub21lIHlldC4gWW91IGhhdmUgdG8gb3BlbiBhIHRlcm1pbmFsIHdpbmRvdyBpbnN0ZWFkCiAgICAgICAgICAob2Z0ZW4gYW4gaWNvbiBzaG93aW5nIGEgImJsYWNrIHNjcmVlbiIpIGFuZCB0eXBlIHNvbWV0aGluZyBsaWtlOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgpjZCAvbXkvd2luZG93cy9wcm9ncmFtL2RpcmVjdG9yeQp3aW5lIG15cHJvZ3JhbS5leGUKICAgICAgICA8L3NjcmVlbj4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9ImJhc2gtd2luZS1Db21tYW5kLW5vdC1mb3VuZC1XaGF0LWNhbi1JLWRvIj4KICAgICAgICA8cGFyYT5iYXNoIHNheXMgIndpbmU6IENvbW1hbmQgbm90IGZvdW5kIiBXaGF0IGNhbiBJIGRvPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRyeSB0byBsb2dvdXQgYW5kIGxvZ2luIGFnYWluIGludG8gYmFzaC4gVGhhdCBtaWdodCBmaXggaXQuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgaXQgZG9lc24ndCwgdGhlbiBtYWtlIHN1cmUgdGhlIHdpbmUgYmluYXJ5IGlzIGluIHlvdXIgCiAgICAgICAgICA8cGFyYW1ldGVyPlBBVEg8L3BhcmFtZXRlcj4uCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgUnVuIGFzIHJvb3Q6CiAgICAgICAgPC9QYXJhPgogICAgICAgIDxzY3JlZW4+CmZpbmQgLyAtbmFtZSAid2luZSIgLXR5cGUgZiAtcGVybSArMTExCiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICB0byBmaW5kIHRoZSBwYXRoIHdoZXJlIHRoZSB3aW5lIGJpbmFyeSBpcyBpbi4gVGhlbiBjaGVjayB3aGV0aGVyCiAgICAgICAgPHBhcmFtZXRlcj5QQVRIPC9wYXJhbWV0ZXI+IGluY2x1ZGVzIGl0OgogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgplY2hvICRQQVRIIAogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgbm90LCBhZGQgdGhhdCBlLmcuIHRvIDxmaWxlbmFtZT4vZXRjL3Byb2ZpbGU8L2ZpbGVuYW1lPiBieSBkb2luZzoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KZXhwb3J0IFBBVEg9JFBBVEg6L3BhdGgvdG8vd2luZS9iaW5hcnkgCiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGF0IHNob3VsZCBoZWxwLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgICBJZiB5b3UgdXNlZCBhIHBhY2thZ2UgbWFuYWdlciAoPGNvbW1hbmQ+cnBtPC9jb21tYW5kPiBvciAKICAgICAgICAgICA8Y29tbWFuZD5hcHQ8L2NvbW1hbmQ+KSAtIFZlcmlmeSB5b3VyIHBhY2thZ2VzLiBUaGUgcGFja2FnZSAKICAgICAgICAgICA8ZmlsZW5hbWU+d2luZXNldHVwdGsucnBtPC9maWxlbmFtZT4gaXMgb25seSBhIGZyb250LWVuZCBmb3IgCiAgICAgICAgICAgbWFraW5nIGEgbWVhbmluZ2Z1bCBjb25maWcgZmlsZSwgaXQgRE9FUyBOT1QgaW5zdGFsbCB0aGUgd2luZQogICAgICAgICAgIHBhY2thZ2UuLi4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICAgRm9yIGNvbXBsZXRlIHBhY2thZ2VzLCB1c2UgPHVsaW5rIHVybD0iaHR0cDovL3JwbXNlZWsuY29tL3JwbS1wbC93aW5lLmh0bWw/aGw9Y29tJmFtcDtjeD0wOjoiPgogICAgICAgICAgIGh0dHA6Ly9ycG1zZWVrLmNvbS88L3VsaW5rPiBvciB0aGUgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvZG93bmxvYWQiPgogICAgICAgICAgIERvd25sb2FkPC91bGluaz4gc2VjdGlvbi4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctZG8tSS1yZW1vdmUtV2luZS1mcm9tLW15LUNvbXB1dGVyIj4KICAgICAgICA8cGFyYT5Ib3cgZG8gSSByZW1vdmUgV2luZSBmcm9tIG15IENvbXB1dGVyPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEl0IGRlcGVuZHMgb24gaG93IHlvdSBpbnN0YWxsZWQuIElmIHlvdSB1c2VkIGFuIFJQTSwgdGhlIHJpZ2h0IGNvbW1hbmQgaXMgdGhpczoKICAgICAgICAgPGNvbW1hbmQ+cnBtIC1lIHdpbmUgKGFzIHJvb3QpPC9jb21tYW5kPgogICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgogICAgICAgICBJZiB5b3UgaW5zdGFsbGVkIGZyb20gc291cmNlICh0aGUgLnRhci5neiBmaWxlKSwgdGhlIHJpZ2h0CiAgICAgICAgIHdheSB0byBkbyBpdCBpcyB0byBjaGFuZ2UgdG8gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlICh0aGUgZGlyZWN0b3J5IHdpdGggdGhlIGNvbmZpZ3VyZSBzY3JpcHQsCiAgICAgICAgIHJlYWRtZSBldGMpIHRoZW4gcnVuIGFzIHJvb3Q6CiAgICAgICAgIDxjb21tYW5kPm1ha2UgdW5pbnN0YWxsPC9jb21tYW5kPgogICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgPC9xYW5kYWRpdj4KCiAgICA8cWFuZGFkaXYgaWQ9IkFib3V0LXJ1bm5pbmctV2luZSI+CiAgICAgIDx0aXRsZT5BYm91dCBydW5uaW5nIFdpbmU8L3RpdGxlPgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctZG8tSS1ydW4tYW4tTVMtV2luZG93cy1wcm9ncmFtIj4KICAgICAgICA8cGFyYT5Ib3cgZG8gSSBydW4gYW4gTVMgV2luZG93cyBwcm9ncmFtIHVuZGVyIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2hlbiBpbnZva2luZyBXaW5lLCB5b3UgbXVzdCBzcGVjaWZ5IHRoZSBlbnRpcmUgcGF0aCB0byB0aGUKICAgICAgICAgIGV4ZWN1dGFibGUsIG9yIGJ5IGZpbGUgbmFtZSBvbmx5LiBGb3IgZXhhbXBsZSB0byBydW4gV2luZG93cycKICAgICAgICAgIHNvbGl0YWlyZSwgdHlwZSBhbnkgb2YgdGhlIGZvbGxvd2luZzoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8Y29tbWFuZD53aW5lIHNvbDwvY29tbWFuZD4gb3IgPGNvbW1hbmQ+d2luZSBzb2wuZXhlPC9jb21tYW5kPgogICAgICAgICAgICh1c2luZyB0aGUgc2VhcmNoIHBhdGggdG8gbG9jYXRlIHRoZSBmaWxlKS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPGNvbW1hbmQ+d2luZSBjOlxcd2luZG93c1xcc29sLmV4ZTwvY29tbWFuZD4gCiAgICAgICAgICAgKHVzaW5nIGEgRE9TIGZpbGUgbmFtZSkuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxjb21tYW5kPndpbmUgL3Vzci93aW5kb3dzL3NvbC5leGU8L2NvbW1hbmQ+CiAgICAgICAgICAgKHVzaW5nIGEgVU5JWCBmaWxlIG5hbWUpLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8Y29tbWFuZD53aW5lICJjOlx3aW5kb3dzXHNvbC5leGUiPC9jb21tYW5kPgogICAgICAgICAgICAodXNpbmcgcXVvdGVkIERPUyBmaWxlIG5hbWUpLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBwYXRoIG9mIHRoZSBmaWxlIHdpbGwgYWxzbyBiZSBhZGRlZCB0byB0aGUgcGF0aCB3aGVuIGEgZnVsbCBuYW1lCiAgICAgICAgICBpcyBzdXBwbGllZCBvbiB0aGUgY29tbWFuZCBsaW5lLgoKICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaW5lLWNhbm5vdC1maW5kLU1TLVdpbmRvd3Mtb24tbXktZHJpdmUiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSBoYXZlIGluc3RhbGxlZCBhbmQgY29uZmlndXJlZCBXaW5lLCBidXQgV2luZSBjYW5ub3QgZmluZCBNUyAKICAgICAgICAgIFdpbmRvd3Mgb24gbXkgZHJpdmUuIFdoZXJlIGRpZCBJIGdvIHdyb25nPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHlvdSBoYXZlIGEgRE9TIHBhcnRpdGlvbiwgZmlyc3QgbWFrZSBzdXJlIHRoYXQgeW91IGhhdmUgbW91bnRlZAogICAgICAgICAgaXQsIGVpdGhlciBieSBwdXR0aW5nIHRoZSBlbnRyeSBpbnRvIDxmaWxlbmFtZT4vZXRjL2ZzdGFiPC9maWxlbmFtZT4sCiAgICAgICAgICBvciBieSBtYW51YWxseSBtb3VudGluZyBpdC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBSZW1lbWJlciB0b28gdGhhdCB1bmxlc3MgeW91ciB2ZXJzaW9uIG9mIFVOSVggY2FuIHNlZSB0aHJvdWdoIGl0LCBvcgogICAgICAgICAgeW91IGFyZSBydW5uaW5nIGEgdXRpbGl0eSB0aGF0IGNhbiBzZWUgdGhyb3VnaCBpdCwgeW91ciBET1MKICAgICAgICAgIHBhcnRpdGlvbiBtdXN0IG5vdCBiZSBsb2NhdGVkIG9uIGEgRHJpdmVzcGFjZWQsIERvdWJsZXNwYWNlZCBvcgogICAgICAgICAgU3RhY2tlcmVkIHBhcnRpdGlvbiwgYXMgbmVpdGhlciBMaW51eCwgRnJlZUJTRCwgTmV0QlNEIG9yIFdpbmUgY2FuCiAgICAgICAgICBuYXRpdmVseSAnc2VlJyBmaWxlcyBsb2NhdGVkIGluIHRoZXNlIGNvbXByZXNzZWQgRE9TIHBhcnRpdGlvbnMuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQ2hlY2sgeW91ciBwYXRoIHN0YXRlbWVudHMgaW4gdGhlIDxmaWxlbmFtZT53aW5lLmNvbmY8L2ZpbGVuYW1lPiAKICAgICAgICAgIGZpbGUuIE5vIGNhcGl0YWwgbGV0dGVycyBtYXkgYmUgdXNlZCBpbiBwYXRocywgYXMgdGhleSBhcmUgCiAgICAgICAgICBhdXRvbWF0aWNhbGx5IGNvbnZlcnRlZCB0byBsb3dlcmNhc2UuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iUGFydHMtb2YtbXktYXBwLWRvLW5vdC13b3JrLVdoYXQtaXMtd3JvbmciPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSB3YXMgYWJsZSB0byBnZXQgdmFyaW91cyBNUyBXaW5kb3dzIHByb2dyYW1zIHRvIHJ1biwgYnV0IHBhcnRzIG9mCiAgICAgICAgICB0aGVtIGRvIG5vdCB3b3JrLiBXaGF0IGlzIHdyb25nPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgbm90IGNvbXBsZXRlIGF0IHRoaXMgdGltZSwgc28gc29tZSBvZiBlYWNoIHByb2dyYW1zJyAKICAgICAgICAgIGZlYXR1cmVzIG1heSBub3Qgd29yay4gVGhleSB3aWxsIGluIHRpbWUgYXMgbW9yZSBvZiB0aGUgTVMgCiAgICAgICAgICBXaW5kb3dzIEFQSSBjYWxscyBhcmUgaW5jbHVkZWQgaW4gV2luZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJNZW51cy1kby1ub3Qtd29yay1ob3ctY2FuLUktZXhpdCI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJIGhhdmUgcnVuIHZhcmlvdXMgTVMgV2luZG93cyBwcm9ncmFtcywgYnV0IHNpbmNlIHRoZSBwcm9ncmFtIG1lbnVzCiAgICAgICAgICBkbyBub3Qgd29yaywgaG93IGNhbiBJIGV4aXQgdGhlc2UgcHJvZ3JhbXM/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgS2lsbCB0aGUgeHRlcm0gc2hlbGwgd2luZG93IHRoYXQgeW91IGNhbGxlZCB1cCB0byBydW4geW91ciBNUyAKICAgICAgICAgIFdpbmRvd3MgcHJvZ3JhbSwgYW5kIHRoZSBYIHdpbmRvdyB0aGF0IGFwcGVhcmVkIHdpdGggdGhlIHByb2dyYW0gCiAgICAgICAgICB3aWxsIGJlIGtpbGxlZCB0b28uCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+Cgk8cXVlc3Rpb24gaWQ9Ik15LWFwcC1kb2VzbnQtd29yay13aGF0LWNhbi1pLWRvIj4KCSAgPHBhcmE+CgkgICAgTXkgcHJvZ3JhbSBkb2Vzbid0IHdvcmssIHdoYXQgY2FuIEkgZG8/CgkgIDwvcGFyYT4KCTwvcXVlc3Rpb24+Cgk8YW5zd2VyPgoJICA8cGFyYT4KCSAgICBJZiB5b3UgYXJlIGEgcHJvZ3JhbW1lciBhbmQga25vdyBDLCB0aGVuIHN0YXJ0IGRlYnVnZ2luZwoJICAgIFdpbmUgYW5kIGhlbHAgdXMgbWFrZSBpdCBiZXR0ZXIhIElmIHlvdSBjYW4ndCwgdGhlbiB5b3Ugd2lsbAoJICAgIGhhdmUgdG8gZWl0aGVyIGNvbnZpbmNlIGEgV2luZSBkZXZlbG9wZXIgdG8gdHJ5IGFuZCBtYWtlIHlvdXIKCSAgICBwcm9ncmFtIHdvcmsgKHRoZXJlIG11c3QgYmUgYSBkb3dubG9hZGFibGUgdmVyc2lvbiBvciBkZW1vIGZvciB0aGF0KS4gCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4gIAogICAgICAgICAgICBZb3UgY2FuIHN1Ym1pdCB5b3VyIGFwcGxpY2F0aW9uIHRvIHRoZSA8dWxpbmsgdXJsPSJodHRwOi8vYXBwZGIud2luZWhxLm9yZy8iPgogICAgICAgICAgICBXaW5lIEFwcGxpY2F0aW9uIERCIDwvdWxpbms+IGFuZCBnYXRoZXIgdGlwcyBvbiB3YXlzIHRvIGdldCB5b3VyIGFwcCB0byB3b3JrIGl0cyBiZXN0LgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+IAogICAgICAgICAgICBZb3UgY2FuIGFsc28gc3VibWl0IHlvdXIgYXBwbGljYXRpb24gdG8gdGhlIENvZGVXZWF2ZXJzIENyb3NzT3ZlciAKICAgICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5jb2Rld2VhdmVycy5jb20vc2l0ZS9jb21wYXRpYmlsaXR5LyI+IENvbXBhdGliaWxpdHkgPC91bGluaz4gQ2VudGVyLgogICAgICAgICAgICBXaGVyZSB5b3UgY2FuIHBsZWRnZS92b3RlIHRvd2FyZCBmdXR1cmUgc3VwcG9ydCBvZiB5b3VyIGZhdm9yaXRlIGFwcGxpY2F0aW9uLgoJICA8L3BhcmE+CgkgIDxwYXJhPgoJICAgIEFsdGVybmF0aXZlbHksIHlvdSBtYXkgYmUgYWJsZSB0byBnZXQgdGhlIGFwcCB3b3JraW5nIGJ5CgkgICAgdGFraW5nIG5hdGl2ZSBETExzIGZyb20gYSBNaWNyb3NvZnQgV2luZG93cyBpbnN0YWxsLCBhbmQgdXNpbmcKCSAgICB0aGVtIChzZXQgdGhlIGRsbHMgdG8gbmF0aXZlIGluIHRoZSBjb25maWcgZmlsZSkuIE5vdCBhbGwgRExMcwoJICAgIGNhbiBiZSByZXBsYWNlZCB0aGF0IHdheSAtIGluIHBhcnRpY3VsYXIgRGlyZWN0WCBjYW5ub3QgYmUsIG5vcgoJICAgIGNhbiBzb21lIGNvcmUgc3lzdGVtIERMTHMgbGlrZSBnZGkzMiwgdXNlciwgbnRkbGwsIGtlcm5lbDMyIGV0Yy4KCSAgPC9wYXJhPgoJPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkNhbi1JLXVzZS1XaW5lLXdpdGgtb3RoZXItTGludXgtRGlzdHJvcyI+CiAgICAgICAgPHBhcmE+Q2FuIEkgdXNlIFdpbmUgd2l0aCBTVVNFLCBSZWRIYXQgb3Igb3RoZXIgTGludXggRGlzdHJvJ3M/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWW91IGNhbiB1c2UgV2luZSBvbiBhbnkgc3VmZmljaWVudGx5IHJlY2VudCBMaW51eCBpbnN0YWxsYXRpb24uIFRoZQogICAgICAgICAgYW1vdW50IG9mIHdvcmsgZ2V0dGluZyBXaW5lIHVwIGFuZCBydW5uaW5nIGRlcGVuZHMgb24gd2hldGhlciB5b3UKICAgICAgICAgIGluc3RhbGwgYSBiaW5hcnkgcGFja2FnZXMgb3IgZG8gYSBzb3VyY2UgaW5zdGFsbC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJEb2VzLVdpbmUtd29yay13aXRoLUFNRC1Qcm9jZXNzb3JzIj4KICAgICAgICA8cGFyYT5Eb2VzIFdpbmUgd29yayB3aXRoIEFNRCBQcm9jZXNzb3JzPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFllcywgaXQgZG9lcy4gV2luZSBzaG91bGQgd29yayBvbiBhbnkgcHJvY2Vzc29yIGNvbXBhdGlibGUgd2l0aAogICAgICAgICAgdGhlIFBlbnRpdW0gb3IgZ3JlYXRlci4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iQ2FuLUktbGF1bmNoLVVuaXgtYXBwLWZyb20tV2luZG93cy1hcHAiPgogICAgICAgIDxwYXJhPiBDYW4gSSBsYXVuY2ggYSBVbml4IHByb2dyYW0gZnJvbSBhIFdpbmRvd3MgcHJvZ3JhbT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBTdXJlLCBXaW5lIHN1cHBvcnRzIHRoYXQuIEp1c3QgZW50ZXIgdGhlIHVuaXggcHJvZ3JhbSBuYW1lIHdoZXJldmVyCiAgICAgICAgICBhIHByb2dyYW0gaGFzIHNvbWV0aGluZyB0aGF0IGl0J3Mgc3VwcG9zZWQgdG8gZXhlY3V0ZSwgYW5kIGl0CiAgICAgICAgICBzaG91bGQganVzdCB3b3JrLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iRXJyb3Itd2l0aC1pbnN0YWxsc2hpZWxkLTYiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSBnZXQgPHF1b3RlPkVycm9yIGluc3RhbGxpbmcgaUtlcm5lbC5leGU6ICgweDE0MDApPC9xdW90ZT4KICAgICAgICAgIHdoZW4gcnVubmluZyBhbiBJbnN0YWxsU2hpZWxkIDYgaW5zdGFsbGVyLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHlvdSBnZXQgdGhlIGVycm9yICJFcnJvciBpbnN0YWxsaW5nIGlLZXJuZWwuZXhlOiAoMHgxNDAwKSIgYXQgYW55CiAgICAgICAgICBwb2ludCwgaXQncyBwcm9iYWJseSBiZWNhdXNlIHRoZXJlIGFyZSBsZWZ0b3ZlciBwcm9jZXNzZXMgZnJvbSBhCiAgICAgICAgICBwcmV2aW91cyB0cnkuIFlvdSBjYW4gdmVyaWZ5IHRoaXMgd2l0aCB0aGUgY29tbWFuZAogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT48cHJvbXB0PiQgPC8+PGNvbW1hbmQ+cHMgYXVneHcgfCBncmVwIHdpbmU8L2NvbW1hbmQ+PC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgdGhhdCBjb21tYW5kIHNob3dzIG9sZCBjb3BpZXMgb2Ygd2luZSBydW5uaW5nIHlvdXIgc2V0dXAsCiAgICAgICAgICB5b3UgbmVlZCB0byBraWxsIHRoZW0gYmVmb3JlIHlvdSBjYW4gcnVuIHRoZSBzZXR1cCBwcm9ncmFtLgogICAgICAgICAgSWYgdGhlcmUgYXJlIG5vIG90aGVyIFdpbmUgcHJvZ3JhbXMgcnVubmluZywgeW91IGNhbiBraWxsIHRoZW0KICAgICAgICAgIGFsbCB3aXRoIHRoZSBjb21tYW5kCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPjxwcm9tcHQ+JCA8Lz48Y29tbWFuZD5raWxsYWxsIHdpbmU8L2NvbW1hbmQ+PC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgeW91J3JlIGFsc28gcnVubmluZyBXaW5lIHByb2dyYW1zIHlvdSBjYXJlIGFib3V0LCB5b3UnbGwKICAgICAgICAgIGhhdmUgdG8ga2lsbCBvZmYgdGhlIG9sZCBTZXR1cCBpbnN0YW5jZXMgb25lIGJ5IG9uZSB1c2luZwogICAgICAgICAga2lsbCBhbmQgdGhlIGluZGl2aWR1YWwgUElEcyAob3IgcGVyaGFwcyBXaW5lJ3Mgc3BpZmZ5IFRhc2sgTWFuYWdlciwKICAgICAgICAgIHdoaWNoIGRvZXNuJ3QgZXhpc3QgeWV0KS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZb3Ugc2hvdWxkIHJlcGVhdCB0aGUgPGNvbW1hbmQ+cHM8L2NvbW1hbmQ+IHRvIG1ha2Ugc3VyZSBhbGwgb2YgdGhlIG9sZCAKICAgICAgICAgIFdpbmUgcHJvY2Vzc2VzIGFyZSBnb25lLgogICAgICAgIDwvcGFyYT4KICAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgICA8L3FhbmRhZGl2PgoKICAgIDxxYW5kYWRpdiBpZD0iR2V0dGluZy1oZWxwIj4KICAgICAgPHRpdGxlPkdldHRpbmcgaGVscDwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IklzLXRoZXJlLWFueS1kb2N1bWVudGF0aW9uLWZvci1XaW5lIj4KICAgICAgICA8cGFyYT5JcyB0aGVyZSBhbnkgZG9jdW1lbnRhdGlvbiBmb3IgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZZXMsIHNlZSA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvc2l0ZS9kb2N1bWVudGF0aW9uIj4KICAgICAgICAgIGh0dHA6Ly93d3cud2luZWhxLm9yZy9zaXRlL2RvY3VtZW50YXRpb24uPC91bGluaz4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJLWhhdmUtd3JpdHRlbi1zb21lLWRvY3VtZW50ZW50YXRpb24iPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSBjb3VsZG4ndCBmaW5kIHRoZSBhbnN3ZXIgdG8gbXkgcXVlc3Rpb24gaW4gdGhlIGRvY3VtZW50YXRpb24sIGJ1dAogICAgICAgICAgSSd2ZSB3cml0dGVuIGEgZG9jdW1lbnQgZXhwbGFpbmluZyBob3cgdG8gc29sdmUgaXQuIFdoYXQgc2hvdWxkIEkgZG8/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVXBkYXRlcyBhbmQgYWRkaXRpb25zIHRvIHRoZSBXaW5lIGRvY3VtZW50YXRpb24gZGlyZWN0b3J5IHNob3VsZCBiZQogICAgICAgICAgc2VudCB0byB0aGUgd2luZS1wYXRjaGVzIG1haWxpbmcgbGlzdCBhdCAKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9zaXRlL2ZvcnVtcyI+CiAgICAgICAgICBodHRwOi8vd3d3LndpbmVocS5vcmcvc2l0ZS9mb3J1bXM8L3VsaW5rPi4gV2Vic2l0ZSBhbmQgRkFRIAogICAgICAgICAgYWRkaXRpb25zIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgYXBwcm9wcmlhdGUgV2luZSBLbm93bGVkZ2UgYmFzZSBkaXJlY3RvcnkuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSXMtdGhlcmUtYS1Vc2VuZXQtbmV3c2dyb3VwLWZvci1XaW5lIj4KICAgICAgICA8cGFyYT5JcyB0aGVyZSBhIFVzZW5ldCBuZXdzZ3JvdXAgZm9yIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWWVzLCBhbmQgaXQncyBjYWxsZWQgCiAgICAgICAgICA8dWxpbmsgdXJsPSJuZXdzOmNvbXAuZW11bGF0b3JzLm1zLXdpbmRvd3Mud2luZSI+CiAgICAgICAgICBjb21wLmVtdWxhdG9ycy5tcy13aW5kb3dzLndpbmU8L3VsaW5rPi4gVGhlIG5ld3Nncm91cCBzZXJ2ZXMgYXMgYQogICAgICAgICAgcGxhY2UgZm9yIHVzZXJzIGFuZCBkZXZlbG9wZXJzIHRvIGRpc2N1c3MgV2luZSwgYW5kIGZvciBtaW5vciAKICAgICAgICAgIGFubm91bmNlbWVudHMgZm9yIHRoZSBnZW5lcmFsIHB1YmxpYy4gTWFqb3IgYW5ub3VuY2VtZW50cyB3aWxsIGJlCiAgICAgICAgICBjcm9zcyBwb3N0ZWQgdG8gb3RoZXIgYXBwcm9wcmlhdGUgbmV3c2dyb3Vwcywgc3VjaCBhcyB0aGUgZm9sbG93aW5nOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDx1bGluayB1cmw9Im5ld3M6Y29tcC5vcy5saW51eC5hbm5vdW5jZSI+CiAgICAgICAgICAgIGNvbXAub3MubGludXguYW5ub3VuY2U8L3VsaW5rPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8dWxpbmsgdXJsPSJuZXdzOmNjb21wLndpbmRvd3MueC5hbm5vdW5jZSI+CiAgICAgICAgICAgIGNvbXAud2luZG93cy54LmFubm91bmNlPC91bGluaz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHVsaW5rIHVybD0ibmV3czpjY29tcC5lbXVsYXRvcnMuYW5ub3VuY2UiPgogICAgICAgICAgICBjb21wLmVtdWxhdG9ycy5hbm5vdW5jZTwvdWxpbms+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgeW91ciBVc2VuZXQgc2l0ZSBkb2VzIG5vdCBjYXJyeSB0aGVzZSBuZXdzZ3JvdXBzLCBwbGVhc2UgdXJnZSAKICAgICAgICAgIHlvdXIgSVNQJ3Mgc3lzYWRtaW4gdG8gYWRkIGFuZC9vciB1cGxpbmsgdGhlbS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJcy10aGVyZS1hLVdvcmxkLVdpZGUtV2ViLXNpdGUtZm9yLVdpbmUiPgogICAgICAgIDxwYXJhPklzIHRoZXJlIGEgV29ybGQgV2lkZSBXZWIgc2l0ZSBmb3IgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIEhRICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmciPmh0dHA6Ly93d3cud2luZWhxLm9yZzwvdWxpbms+KSBpcyB0aGUgb2ZmaWNpYWwgc2l0ZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJcy10aGVyZS1hbi1JUkMtY2hhbm5lbC1mb3ItV2luZSI+CiAgICAgICAgPHBhcmE+SXMgdGhlcmUgYW4gSVJDIGNoYW5uZWwgZm9yIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgU3VyZS4gSXQncyBjaGFubmVsIDxmaWxlbmFtZT4jV2luZUhRPC9maWxlbmFtZT4gb24gCiAgICAgICAgICA8ZmlsZW5hbWU+aXJjLmZyZWVub2RlLm5ldDwvZmlsZW5hbWU+IHNlZSAKICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vZnJlZW5vZGUubmV0Ij5odHRwOi8vZnJlZW5vZGUubmV0PC91bGluaz4pLgogICAgICAgICAgVXN1YWxseSBzZXZlcmFsIFdpbmUgZGV2ZWxvcGVycyBoYW5nIG91dCB0aGVyZSBqdXN0IHRvIGhlbHAgWU9VIDstKQogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkktdGhpbmstSS1mb3VuZC1hLWJ1Zy1Ib3ctZG8tSS1yZXBvcnQtaXQiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSB0aGluayBJJ3ZlIGZvdW5kIGEgYnVnLiBIb3cgZG8gSSByZXBvcnQgdGhpcyBidWcgdG8gdGhlIFdpbmUKICAgICAgICAgIHByb2dyYW1taW5nIHRlYW0/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQnVnIHJlcG9ydHMgc2hvdWxkIGJlIHN1Ym1pdHRlZCB0byBvdXIgb25saW5lIEJ1Z3ppbGxhIHN5c3RlbSAKICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vYnVncy53aW5laHEub3JnLyI+aHR0cDovL2J1Z3Mud2luZWhxLm9yZy88L3VsaW5rPikuCiAgICAgICAgICBZb3Ugc2hvdWxkIGluY2x1ZGUgYXQgbGVhc3QgdGhlIGZvbGxvd2luZzoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGUgV2luZSB2ZXJzaW9uIHRlc3RlZAogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGUgV2luZG93cyBhcHBsaWNhdGlvbiBuYW1lLCBpbmNsdWRpbmcgdGhlIHZlcnNpb24sIGFuZCwgaWYKICAgICAgICAgICAgYXBwbGljYWJsZSwgYSBVUkwgdGhlIGFwcGxpY2F0aW9uIGNhbiBiZSBkb3dubG9hZGVkIGZyb20KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgQSBicmllZiBkZXNjcmlwdGlvbiBvZiB0aGUgYnVnCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFRoZSByZWxldmFudCBwYXJ0KHMpIG9mIHRoZSBvdXRwdXQgb2YgdGhlIFdpbmUgZGVidWdnZXIKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgQSBzY3JlZW5zaG90IG9mIHRoZSB2aXN1YWwgcHJvYmxlbSwgaWYgYXBwbGljYWJsZQogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICA8cGFyYT4KICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgcmVwb3J0aW5nIGJ1Z3MgcGxlYXNlIHNlZSB0aGUgCiAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9Eb2NzL3dpbmUtdXNlci9idWctcmVwb3J0aW5nLnNodG1sIj4KICAgICAgICAgSG93IHRvIHJlcG9ydCBhIGJ1ZzwvdWxpbms+IHNlY3Rpb24gb2YgdGhlIFdpbmUgVXNlcnMgR3VpZGUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgPC9xYW5kYWRpdj4KIAogICAgPHFhbmRhZGl2IGlkPSJIZWxwaW5nLVdpbmUtb3ItYmVjb21pbmctYS1XaW5lLWRldmVsb3BlciI+CiAgICAgIDx0aXRsZT5IZWxwaW5nIFdpbmUgb3IgYmVjb21pbmcgYSBXaW5lIGRldmVsb3BlcjwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy1kby1JLWJlY29tZS1hLVdpbmUtZGV2ZWxvcGVyIj4KICAgICAgICA8cGFyYT5Ib3cgZG8gSSBiZWNvbWUgYSBXaW5lIGRldmVsb3Blcj8gV2hhdCBkbyBJIG5lZWQgdG8ga25vdz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UgY2FuIHByb2dyYW0gQywgdGhhdCdzIGEgZ29vZCBzdGFydC4gRG93bmxvYWQgdGhlIHNvdXJjZXMgdmlhCiAgICAgICAgICAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvY3ZzIj5DVlMsPC91bGluaz4pCiAgICAgICAgICBzdWJzY3JpYmUgdG8gdGhlIG1haWxpbmcgbGlzdHMsIGxvb2sgYXJvdW5kIHRoZSBzb3VyY2UsIGFuZAogICAgICAgICAgcGF5IGF0dGVudGlvbiB0byB0aGUgY29tcC5lbXVsYXRvcnMubXMtd2luZG93cy53aW5lIG5ld3Nncm91cAogICAgICAgICAgYW5kIHRoZSBtYWlsaW5nIGxpc3RzICg8dWxpbmsKICAgICAgICAgIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvZm9ydW1zIj5odHRwOi8vd3d3LndpbmVocS5vcmcvc2l0ZS9mb3J1bXM8L3VsaW5rPikuCiAgICAgICAgICBTZWUgaWYgdGhlcmUncyBhbnl0aGluZyB0aGF0IHlvdSB0aGluayB5b3UgY2FuIGZpeCBvciB3b3JrCiAgICAgICAgICBvbi4gWW91IHdvbid0IGhhdmUgbXVjaCB0cm91YmxlIGZpbmRpbmcgYXJlYXMgdGhhdCBuZWVkIHdvcmsKICAgICAgICAgIGluIFdpbmUgKGdyZXAgZm9yIEZJWE1FcyBpbiB0aGUgc291cmNlKS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctY2FuLUktY29udHJpYnV0ZS10by10aGUtV2luZS1wcm9qZWN0Ij4KICAgICAgICA8cGFyYT5Ib3cgY2FuIEkgaGVscCBjb250cmlidXRlIHRvIHRoZSBXaW5lIHByb2plY3QsIGFuZCBpbiB3aGF0IHdheShzKT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZb3UgY2FuIGNvbnRyaWJ1dGUgcHJvZ3JhbW1pbmcgb3IgZG9jdW1lbnRhdGlvbiBza2lsbHMsIG9yIG1vbmV0YXJ5CiAgICAgICAgICBvciBlcXVpcG1lbnQgZG9uYXRpb25zLCB0byBhaWQgdGhlIFdpbmUgZGV2ZWxvcGVycyBpbiByZWFjaGluZyB0aGVpciAKICAgICAgICAgIGdvYWxzLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEZvciBhIGxpc3Qgb2YgaWRlYXMgb2YgaG93IHlvdSBjYW4gaGVscCwgcGxlYXNlIGNvbnN1bHQgdGhlIAogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvY29udHJpYnV0aW5nIj4KICAgICAgICAgIFdpbmUgY29udHJpYiBwYWdlPC91bGluaz4uCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSS13YW50LXRvLWhlbHAtYmV0YS10ZXN0LVdpbmUiPgogICAgICAgIDxwYXJhPkkgd2FudCB0byBoZWxwIGJldGEgdGVzdCBXaW5lLiBIb3cgY2FuIEkgZG8gdGhpcz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIHN0aWxsIGNvbnNpc3RzIG9mIHNvbWUgQWxwaGEgY29kZSBhdCB0aGlzIHRpbWUuIEhvd2V2ZXIsIGFueW9uZQogICAgICAgICAgaXMgd2VsY29tZSB0byBkb3dubG9hZCB0aGUgbGF0ZXN0IHZlcnNpb24sIGFuZCB0cnkgaXQgb3V0IGF0IGFueQogICAgICAgICAgdGltZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJLXdyb3RlLXNvbWUtY29kZS1JLXdvdWxkLWxpa2UtdG8tc3VibWl0Ij4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEkgaGF2ZSB3cml0dGVuIHNvbWUgY29kZSB0aGF0IEkgd291bGQgbGlrZSB0byBzdWJtaXQgdG8gdGhlIFdpbmUKICAgICAgICAgIHByb2plY3QuIEhvdyBkbyBJIGdvIGFib3V0IGRvaW5nIHRoaXM/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgU3VibWl0dGluZyBhIHBhdGNoIGZvciBpbmNsdXNpb24gaW4gV2luZSBpcyBwcmV0dHkgc2ltcGxlLgogICAgICAgICAgQmFzaWNhbGx5IGFsbCB5b3UgaGF2ZSB0byBkbyBpcyBzZW5kIHRoZSBwYXRjaCB0byB0aGUKICAgICAgICAgIHdpbmUtcGF0Y2hlcyBtYWlsaW5nIGxpc3QgCiAgICAgICAgICAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL21haWxtYW4vbGlzdGluZm8vd2luZS1wYXRjaGVzIj5odHRwOi8vd3d3LndpbmVocS5vcmcvbWFpbG1hbi9saXN0aW5mby93aW5lLXBhdGNoZXM8Lz4pLgogICAgICAgICAgU3RpbGwgdGhlcmUgYXJlIGEgY291cGxlIG9mIHJlY29tbWVuZGF0aW9ucyBhYm91dCB0aGUgcGF0Y2ggZm9ybWF0CiAgICAgICAgICBhbmQgYWxsIHNvIGl0J3MgYmVzdCB0byByZWFkIG91ciBwYWdlIGRlc2NyaWJpbmcgPHVsaW5rCiAgICAgICAgICB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9zaXRlL3NlbmRpbmdfcGF0Y2hlcyI+aG93IHRvIHN1Ym1pdAogICAgICAgICAgcGF0Y2hlczwvPi4gVGhpcyB3aWxsIGFsc28gZ2l2ZSB5b3UgbW9yZSBkZXRhaWxzIGFib3V0IHRoZSB3aG9sZQogICAgICAgICAgcHJvY2VzcyBhbmQgaW4gcGFydGljdWxhciB0byB3aGF0IHdpbGwgaGFwcGVuIHRvIHlvdXIgcGF0Y2ggb25jZQogICAgICAgICAgc3VibWl0dGVkLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgIDwvcWFuZGFkaXY+CgogICAgPHFhbmRhZGl2IGlkPSJEZXZlbG9waW5nLXByb2dyYW1zLXVzaW5nLVdpbmUtV2luZUxpYiI+CiAgICAgIDx0aXRsZT5EZXZlbG9waW5nIHByb2dyYW1zIHVzaW5nIFdpbmUvV2luZUxpYjwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkNhbi1JLXVzZS1XaW5lLXRvLXBvcnQtV2luMzItc291cmNlcy10by1Vbml4Ij4KICAgICAgICA8cGFyYT5DYW4gSSB1c2UgV2luZSB0byBwb3J0IG15IFdpbjMyIHNvdXJjZXMgdG8gVW5peD88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGF0IGlzIHRoZSBpZGVhIG9mIFdpbmVsaWIuIFJpZ2h0IG5vdyB5b3UgbWF5IHN0aWxsIGhhdmUgc29tZSAKICAgICAgICAgIGRpZmZpY3VsdGllcywgYnV0IHRoaXMgaXMgY2hhbmdpbmcgYWxsIHRoZSB0aW1lLiBSZWFkIHRoZSAKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9Eb2NzL3dpbmVsaWItdXNlci8iPldpbmVsaWIgVXNlcidzIEd1aWRlPC91bGluaz4gZm9yIGluZm8uCgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2lsbC1NRkMtd29yay13aXRoLVdpbmUtV2hhdC1kby1JLW5lZWQtdG8tZG8iPgogICAgICAgIDxwYXJhPldpbGwgTUZDIHdvcmsgd2l0aCBXaW5lPyBXaGF0IGRvIEkgbmVlZCB0byBkbz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIGlzIG5vdCBpbXBsZW1lbnRpbmcgYW4gTUZDIHJlcGxhY2VtZW50IG5vciBkb2VzIGl0IGludGVuZCB0by4KICAgICAgICAgIEhvd2V2ZXIgaXQgaXMgcG9zc2libGUgKHdpdGggYSBsb3Qgb2Ygd29yaykgdG8gY29tcGlsZSB0aGUgTUZDIGZyb20KICAgICAgICAgIHNvdXJjZSBhbmQgdGh1cyBwcm9kdWNlIGFuIDxmaWxlbmFtZT5tZmM0Mi5kbGwuc288L2ZpbGVuYW1lPiBsaWJyYXJ5LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFBsZWFzZSByZWZlciB0byB0aGUgCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvRG9jcy93aW5lbGliLXVzZXIvIj5XaW5lbGliIFVzZXIncyBHdWlkZTwvdWxpbms+IGZvciBob3cgdG8gZG8gdGhpcy4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJBcmUtdGhlcmUtY29tbWVyY2lhbC1hcHBzLXBvcnRlZC11c2luZy1XaW5lIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEFyZSB0aGVyZSBhbnkgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMgd2hpY2ggaGF2ZSBiZWVuIHBvcnRlZAogICAgICAgICAgdXNpbmcgV2luZT8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBIZXJlIGFyZSBmZXcgZXhhbXBsZXMgb2YgYXBwbGljYXRpb25zIHBvcnRlZCB1c2luZyBXaW5lIG9yIFdpbmVsaWI6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgQ29yZWwncyBXb3JkUGVyZmVjdCBPZmZpY2UgU3VpdGUgMjAwMCB3YXMgcG9ydGVkIHRvIExpbnV4IHVzaW5nCiAgICAgICAgICAgIFdpbmUuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIEt5bGl4LCB0aGUgTGludXggdmVyc2lvbiBvZiBEZWxwaGksIHdhcyBwb3J0ZWQgdG8gTGludXggdXNpbmcKICAgICAgICAgICAgV2luZWxpYi4gVGhlIElERSBhY3R1YWxseSB1c2VzIGEgY29tYmluYXRpb24gb2YgUVQgYW5kIFdpbmVsaWIKICAgICAgICAgICAgd2hpY2ggd291bGQgbm90IGhhdmUgYmVlbiBwb3NzaWJsZSB0byBhY2hpZXZlIHVzaW5nIG9ubHkgV2luZS4KICAgICAgICAgICAgVGhlIGdlbmVyYXRlZCBhcHBsaWNhdGlvbnMgaG93ZXZlciBkbyBub3QgZGVwZW5kIG9uIFdpbmUgaW4KICAgICAgICAgICAgYW55IHdheS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgTXVzaWNNYXRjaCBKdWtlYm94IDUgaGFzIGFsc28gYmVlbgogICAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3Lml0d29ybGQuY29tL25sL2xueF9kZXNrdG9wLzAxMDQyMDAxLyI+cG9ydGVkPC8+CiAgICAgICAgICAgIHRvIExpbnV4IHVzaW5nIFdpbmVsaWIuIEhvd2V2ZXIgbW9yZSByZWNlbnQgdmVyc2lvbnMgaGF2ZSBub3QsIGFuZAogICAgICAgICAgICB2ZXJzaW9uIDUgaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgQWJpbGl0eSBPZmZpY2UKICAgICAgICAgICAgKDx1bGluayB1cmw9Imh0dHA6Ly93d3cuYWJpbGl0eS5jb20vbGludXgvYWJpbGl0eWxpbnV4LnBocCI+aHR0cDovL3d3dy5hYmlsaXR5LmNvbS9saW51eC9hYmlsaXR5bGludXgucGhwPC91bGluaz4pCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIElCTSdzIFdlYnNwaGVyZQogICAgICAgICAgICAoPHVsaW5rIHVybD0iaHR0cDovL3d3dzdiLmJvdWxkZXIuaWJtLmNvbS9kbC9zd3dzL3N3d3NnZGRiLXAiPmh0dHA6Ly93d3c3Yi5ib3VsZGVyLmlibS5jb20vZGwvc3d3cy9zd3dzZ2RkYi1wPC91bGluaz4pCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgIDxwYXJhPgogICAgICAgICAgTWFueSBvdGhlciBpbXBvcnRhbnQgYXBwbGljYXRpb25zIGhhdmUgYWxyZWFkeSBiZWVuIHBvcnRlZC4gKHdlIGFyZQogICAgICAgICAgc3BlYWtpbmcgb2Ygc2V2ZXJhbCB0b3AgNTAwIGFwcGxpY2F0aW9ucyBoZXJlKQogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy1jYW4tSS1kZXRlY3QtV2luZSI+CiAgICAgICAgPHBhcmE+SG93IGNhbiBJIGRldGVjdCBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFlvdSByZWFsbHkgc2hvdWxkbid0IHdhbnQgdG8gZG8gdGhpcy4gSWYgdGhlcmUncyBhIHF1aXJrIGluIFdpbmUgCiAgICAgICAgICB5b3UgbmVlZCB0byB3b3JrIGFyb3VuZCwgaXQncyBtdWNoIGJldHRlciB0byBmaXggaXQgaW4gV2luZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgoKICAgIDwvcWFuZGFkaXY+CgogICAgPHFhbmRhZGl2IGlkPSJXaW5lLUhRLWlzc3VlcyI+CiAgICAgIDx0aXRsZT5XaW5lIEhRIGlzc3VlczwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoeS1hcmUtdGhlLW1haWxsaXN0cy1zZXQtdG8tcmVwbHktdG8tYXV0aG9yIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdoeSBhcmUgdGhlIG1haWxpbmcgbGlzdHMgc2V0IHRvIHJlcGx5IHRvIGF1dGhvciwgbm90IHRvIG1haWxpbmcgbGlzdD8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGVyZSBhcmUgc29tZSB2ZXJ5IHZhbGlkIHJlYXNvbnMgZm9yIGRvaW5nIHNvLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy10by11bnN1YnNjcmliZS1mcm9tLXRoZS1tYWlsaW5nLWxpc3RzIj4KICAgICAgICA8cGFyYT5Ib3cgdG8gdW5zdWJzY3JpYmUgZnJvbSB0aGUgbWFpbGluZyBsaXN0cz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBQbGVhc2Ugc2VlOiA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvc2l0ZS9mb3J1bXMiPmh0dHA6Ly93d3cud2luZWhxLm9yZy9zaXRlL2ZvcnVtczwvdWxpbms+CiAgICAgICAgICBBbmQgc2VsZWN0IFsoVW4tKVN1YnNjcmliZV0KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgPC9xYW5kYWRpdj4KIAogIDwvcWFuZGFzZXQ+Cgo8IS0tIEtlZXAgdGhpcyBjb21tZW50IGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUKTG9jYWwgdmFyaWFibGVzOgptb2RlOiBzZ21sCnNnbWwtcGFyZW50LWRvY3VtZW50Oigid2luZS1kZXZlbC5zZ21sIiAiYm9vayIgInBhcnQiICJjaGFwdGVyIiAiIikKRW5kOgotLT4K