PCEtLSAqKiogV2luZSBGQVEgKioqIC0tPgogIDx0aXRsZT5XaW5lIEZBUTwvdGl0bGU+CgogIDxxYW5kYXNldD4KICAgIDxxYW5kYWRpdiBpZD0iQWJvdXQtdGhpcy1GQVEiPjx0aXRsZT5BYm91dCB0aGlzIEZBUTwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ildoby1tYWludGFpbnMtdGhpcy1GQVEiPgogICAgICAgIDxwYXJhPldobyBtYWludGFpbnMgdGhpcyBGQVEgPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT5EYXZlIEdhcmRuZXIgbWFpbnRhaW5lZCBpdCBmcm9tIDE5OTUtMTk5OC48L3BhcmE+CiAgICAgICAgPHBhcmE+RG91Z2xhcyBSaWRnd2F5IChyaWRnd2F5QHdpbmVocS5jb20pIHRvb2sgaXQgb3ZlciBpbiAxOTk5LjwvcGFyYT4KICAgICAgICA8cGFyYT5BbmRyZWFzIE1vaHIgKGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbSkgY29udmVydGVkIGl0IHRvIEZBUS1PLU1hdGljIGluIDIwMDAuPC9wYXJhPgogICAgICAgIDxwYXJhPkRpbWl0cmllIE8uIFBhdW4sIEtlaXRoIE1hdHRoZXdzIGFuZCBUaG9tYXMgV2lja2xpbmUgcmVvcmdhbmlzZWQgaXQgaW4gMjAwMi48L3BhcmE+CiAgICAgICAgPHBhcmE+Rm9yIHN1Z2dlc3Rpb25zL2FkZGl0aW9ucy9jb21wbGFpbnRzIHJlZ2FyZGluZyB0aGlzIEZBUSwgcGxlYXNlIHNlbmQgYW4gZW1haWwgdG8KICAgICAgICA8dWxpbmsgdXJsPSJtYWlsdG86d2luZS1mYXFAd2luZWhxLm9yZyI+d2luZS1mYXFAd2luZWhxLm9yZzwvdWxpbms+PC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGF0LWlzLXRoZS1jb3B5cmlnaHQtb24tdGhlLUZBUS1BbmQiPgogICAgICAgIDxwYXJhPldoYXQgaXMgdGhlIGNvcHlyaWdodCBvbiB0aGUgRkFRPyBBbmQgaG93IG1heSBJIHVzZSBpdD88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+VGhlIG9yaWdpbmFsIFdpbmUgRkFRLCB3aGljaCB0aGlzIEZBUSB3YXMgYmFzZWQgb24sIHdhcyBjb3B5cmlnaHQgJmNvcHk7IDE5OTUtMTk5OCBEYXZpZCBHYXJkbmVyLjwvcGFyYT4KICAgICAgICA8cGFyYT5JdCBtYXkgYmUgcmVwcm9kdWNlZCBhbmQgbW9kaWZpZWQgdW5kZXIgdGhlIHNhbWUgdGVybXMgYXMgV2luZSBpdHNlbGYuPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgPC9xYW5kYWRpdj4KICAgIDxxYW5kYWRpdiBpZD0iR2VuZXJhbC1RdWVzdGlvbnMtYWJvdXQtV2luZSI+CiAgICAgIDx0aXRsZT5HZW5lcmFsIFF1ZXN0aW9ucyBhYm91dCBXaW5lPC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CgogICAgICA8cXVlc3Rpb24gaWQ9IldoYXQtaXMtV2luZS1hbmQtd2hhdC1pcy1pdC1zdXBwb3NlZC10byI+CiAgICAgICAgPHBhcmE+V2hhdCBpcyBXaW5lIGFuZCB3aGF0IGlzIGl0IHN1cHBvc2VkIHRvIGRvPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgYSBwcm9ncmFtIHdoaWNoIGFsbG93cyB0aGUgb3BlcmF0aW9uIG9mIERPUyBhbmQgTVMKICAgICAgICAgIFdpbmRvd3MgcHJvZ3JhbXMgKFdpbmRvd3MgMy54IGFuZCBXaW4zMiBleGVjdXRhYmxlcykgb24gVU5JWC4gCiAgICAgICAgICBJdCBjb25zaXN0cyBvZiBhIHByb2dyYW0gbG9hZGVyLCB3aGljaCBsb2FkcyBhbmQgZXhlY3V0ZXMgYSBXaW5kb3dzCiAgICAgICAgICBiaW5hcnksIGFuZCBhIHNldCBvZiBsaWJyYXJpZXMgdGhhdCBpbXBsZW1lbnRzIFdpbmRvd3MgQVBJIGNhbGxzCiAgICAgICAgICB1c2luZyB0aGVpciBVTklYIG9yIFgxMSBlcXVpdmFsZW50cy4gVGhlIGxpYnJhcmllcyBtYXkgYWxzbyBiZSB1c2VkCiAgICAgICAgICBmb3IgcG9ydGluZyBXaW4zMiBjb2RlIGludG8gbmF0aXZlIFVOSVggZXhlY3V0YWJsZXMsIG9mdGVuCiAgICAgICAgICB3aXRob3V0IG1hbnkgY2hhbmdlcyBpbiB0aGUgc291cmNlLiBXaW5lIGlzIGZyZWUgc29mdHdhcmUsIAogICAgICAgICAgYW5kIGl0cyBsaWNlbnNlIChjb250YWluZWQgaW4gdGhlIGZpbGUgTElDRU5TRQogICAgICAgICAgaW4gZWFjaCBkaXN0cmlidXRpb24pIGlzIExHUEwuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJcy1XaW5lLWFuLWVtdWxhdG9yIj4KICAgICAgICA8cGFyYT5JcyBXaW5lIGFuIGVtdWxhdG9yPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE5vLCBhcyB0aGUgbmFtZSBzYXlzLCBXaW5lIElzIE5vdCBhIChDUFUpIEVtdWxhdG9yLiBXaW5lIGp1c3QKICAgICAgICAgIHByb3ZpZGVzIHRoZSBXaW5kb3dzIEFQSS4gVGhpcyBtZWFucyB0aGF0IHlvdSB3aWxsIG5lZWQgYW4KICAgICAgICAgIHg4Ni1jb21wYXRpYmxlIHByb2Nlc3NvciB0byBydW4gYW4geDg2IFdpbmRvd3MgYXBwbGljYXRpb24uIFRoZQogICAgICAgICAgYWR2YW50YWdlIGlzIHRoYXQsIHVubGlrZSBzb2x1dGlvbnMgdGhhdCByZWx5IG9uIGVtdWxhdGlvbiwgV2luZQogICAgICAgICAgcnVucyBhcHBsaWNhdGlvbnMgcnVuIGF0IGZ1bGwgc3BlZWQuCiAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnkKCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkFyZS1oZXJlLWFueS1hbHRlcm5hdGl2ZXMtdG8tV2luZSI+CiAgICAgICAgPHBhcmE+QXJlIHRoZXJlIGFueSBhbHRlcm5hdGl2ZXMgdG8gV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZZXMsIHRoZXJlIGFyZS4gWW91IGNhbiB1c2UgPHVsaW5rIHVybD0iaHR0cDovL3d3dy52bXdhcmUuY29tIj5WTVdhcmU8L3VsaW5rPiB0byBydW4gYSBXaW5kb3dzIGluc3RhbGxhdGlvbiBpbnNpZGUgYSB2aXJ0dWFsIG1hY2hpbmUsCgkgIG9yIHVzZSA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbjRsaW4uY29tIj5XaW40TGluPC91bGluaz4KCSAgdG8gcnVuIGEgc3BlY2lhbGx5IGFkYXB0ZWQgV2luZG93cyB2ZXJzaW9uIG9uIExpbnV4LgoJICBCb3RoIHNvbHV0aW9ucyBjb3N0IG1vbmV5IGZvciBib3RoIHRoZSBzb2Z0d2FyZSBpdHNlbGYKCSAgYW5kIGEgV2luZG93cyBsaWNlbnNlLgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAgICAgICAgIE5vdGUgdGhhdCwgbGlrZSBXaW5lLCB0aGV5IGNhbiBvbmx5IHVzZSB0aGUgaGFyZHdhcmUgcGxhdGZvcm0gdGhhdAogICAgICAgICB0aGUgdGFyZ2V0IHByb2dyYW1zIHdlcmUgb3JpZ2luYWxseSBjb21waWxlZCBmb3IgKHNlZSBiZWxvdykuCiAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgICAgICAKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iRGlmZmVyZW5jZS1iZXR3ZWVuLVdpbmUtYW5kLWVtdWxhdG9ycyI+CiAgICAgICAgPHBhcmE+V2hhdCBpcyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIFdpbmUgYW5kIHg4NiBoYXJkd2FyZSBlbXVsYXRvcnM/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlcmUgYXJlIHR3byBmcmVlIHg4NiBoYXJkd2FyZSBlbXVsYXRvcnM6CiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vYm9jaHMuc291cmNlZm9yZ2UubmV0Ij5ib2NoczwvdWxpbms+LCBhbmQgCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vc2F2YW5uYWgubm9uZ251Lm9yZy9wcm9qZWN0cy9wbGV4ODYiPnBsZXg4NjwvdWxpbms+LgogICAgICAgPC9wYXJhPgoKICAgICAgIDxwYXJhPgogICAgICAgICAgUGxleDg2IGlzIHRoZSBvcGVuc291cmNlIGZyZWUtc29mdHdhcmUgYWx0ZXJuYXRpdmUgZm9yIFZNV2FyZSwKCSAgVmlydHVhbFBDLCBhbmQgb3RoZXIgSUEtMzIgb24gSUEtMzIgIlZpcnR1YWwgUEMgcHJvZHVjdHMuIiBJdAogICAgICAgICAgY2FuIG9ubHkgcnVuIG9uIHRoZSBJQS0zMiBhcmNoaXRlY3R1cmUuCiAgICAgICA8L3BhcmE+CgogICAgICAgPHBhcmE+CiAgICAgICAgICBCb2NocyBpcyBhIGhpZ2hseSBwb3J0YWJsZSBvcGVuIHNvdXJjZSBJQS0zMiAoeDg2KSBQQyBlbXVsYXRvciAKICAgICAgICAgIHdyaXR0ZW4gaW4gQysrLCB0aGF0IHJ1bnMgb24gbW9zdCBwb3B1bGFyIHBsYXRmb3Jtcy4gSXQgaW5jbHVkZXMgZW11bGF0aW9uCiAgICAgICAgICBvZiB0aGUgSW50ZWwgeDg2IENQVSwgY29tbW9uIEkvTyBkZXZpY2VzLCBhbmQgYSBjdXN0b20gQklPUy4gQ3VycmVudGx5LCAKICAgICAgICAgIGJvY2hzIGNhbiBiZSBjb21waWxlZCB0byBlbXVsYXRlIGEgMzg2LCA0ODYgb3IgUGVudGl1bSBDUFUuIEJvY2hzIGlzIGNhcGFibGUgCiAgICAgICAgICBvZiBydW5uaW5nIG1vc3QgT3BlcmF0aW5nIFN5c3RlbXMgaW5zaWRlIHRoZSBlbXVsYXRpb24gaW5jbHVkaW5nIExpbnV4LCAKICAgICAgICAgIFdpbmRvd3OuIDk1LCBET1MsIGFuZCByZWNlbnRseSBXaW5kb3dzriBOVCA0LgogICAgICAgPC9wYXJhPgoKICAgICAgIDxwYXJhPgogICAgICAgICAgQm90aCBhcmUgbGljZW5zZWQgdW5kZXIgdGhlIEdQTC4gQm9jaHMgaXMgb2xkZXIgdGhhbiBwbGV4ODYsIHNlZW1zIHRvIGJlIAogICAgICAgICAgZWFzaWVyIHRvIGluc3RhbGwsIGJ1dCBwbGV4ODYgd2lsbCBydW4gZmFzdGVyIGJlY2F1c2UgcGxleDg2IHVzZXMgYSBqdXN0IGluCiAgICAgICAgICB0aW1lIGJpbmFyeSBjb21waWxlci4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIGRyYXdiYWNrIG9mIGFsbCBlbXVsYXRvcnMgaXMgdGhhdCB5b3UgbmVlZCBhIHZlcnNpb24KICAgICAgICAgIG9mIFdpbmRvd3MgaW4gb3JkZXIgdG8gcnVuIFdpbmRvd3MsIGFuZCB0aGF0IHRoZXkgYWxsIGhhdmUgYW4KICAgICAgICAgIGltcGFjdCBvbiBwZXJmb3JtYW5jZS4KICAgICAgIDwvcGFyYT4KCiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaHktd291bGQtYW55b25lLXdhbnQtV2luZS1XaW5kb3dzLXN1Y2siPgogICAgICAgIDxwYXJhPldoeSB3b3VsZCBhbnlvbmUgd2FudCBXaW5lPyBEb2Vzbid0IFdpbmRvd3Mgc3Vjaz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBGaXJzdCBXaW5lIGlzIG5vdCBhYm91dCBydW5uaW5nIFdpbmRvd3MgYnV0IGFib3V0IHJ1bm5pbmcgV2luZG93cyAKICAgICAgICAgIGFwcGxpY2F0aW9ucy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBTbyBpZiBhbGwgeW91ciBjb21wdXRpbmcgbmVlZHMgYXJlIGZ1bGZpbGxlZCBieSBuYXRpdmUgVW5peCAKICAgICAgICAgIGFwcGxpY2F0aW9ucywgdGhlbiB5b3UgZG8gbm90IG5lZWQgV2luZSBhbmQgc2hvdWxkIG5vdCBiZSB1c2luZwogICAgICAgICAgaXQuIEhvd2V2ZXIsIGlmIHlvdSBkZXBlbmQgb24gb25lIG9yIG1vcmUgb2YgdGhlIHRlbnMgb2YgCiAgICAgICAgICB0aG91c2FuZHMgb2YgV2luZG93cyBhcHBsaWNhdGlvbnMsIHRoZW4gV2luZSBpcyB0aGUgYmVzdCB3YXkgdG8KICAgICAgICAgIHVzZSBpdCB3aXRob3V0IGdpdmluZyB1cCBvbiBVbml4LiBMZXQncyBsb29rIGF0IHRoZSBhbHRlcm5hdGl2ZXMKICAgICAgICAgIHRvIHNlZSB3aHk6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIG1vc3Qgb2J2aW91cyBhbHRlcm5hdGl2ZSBpcyB0byBkdWFsLWJvb3QuIFRoaXMgaXMgdGhlIHNvbHV0aW9uCiAgICAgICAgICB0aGF0IHByb3ZpZGVzIHRoZSBiZXN0IGNvbXBhdGliaWxpdHkuIEhvd2V2ZXIgaXQgcmVxdWlyZXMgdGhhdCB5b3UKICAgICAgICAgIGFjcXVpcmUgYSBXaW5kb3dzIGxpY2Vuc2UgYW5kIHRoZW4gZGVkaWNhdGUgYSBnb29kIGNodW5rIG9mIHlvdXIgCiAgICAgICAgICBoYXJkLWRyaXZlIHRvIFdpbmRvd3MuIEJ1dCB0aGUgd29yc3QgaXMgeWV0IHRvIGNvbWUuIEVhY2ggdGltZSB5b3UKICAgICAgICAgIHdpbGwgd2FudCB0byB1c2UgdGhhdCBhcHBsaWNhdGlvbiB5b3Ugd2lsbCBoYXZlIHRvIHJlYm9vdCB0byAKICAgICAgICAgIFdpbmRvd3MuIFRoaXMgaXMgZXNwZWNpYWxseSBzaWduaWZpY2FudCBpZiBleHRlcm5hbCBmYWN0b3JzIGRpY3RhdGUKICAgICAgICAgIHdoZW4geW91IG11c3QgdXNlIHRoaXMgYXBwbGljYXRpb24gKGUuZy4gY3JlZGl0IGNhcmQgdG8gcHJvY2VzcywgCiAgICAgICAgICBlbWFpbCB0byByZXRyaWV2ZSBmcm9tIGEgTG90dXMgTm90ZXMgc2VydmVyKS4gVGhlbiB5b3Ugd2lsbCBmaW5kCiAgICAgICAgICB5b3Vyc2VsZiBmb3JjZWQgdG8gY2xvc2UgYWxsIHlvdXIgTGludXggYXBwbGljYXRpb25zIGp1c3QgdG8gcnVuCiAgICAgICAgICB0aGF0IG9uZSBXaW5kb3dzIGFwcGxpY2F0aW9uLiBZb3UgbWF5IHF1aWNrbHkgZ2V0IHRpcmVkIG9mIHRoaXMsIG9yCiAgICAgICAgICB3aWxsIGZpbmQgdGhhdCBzdWNoIGEgc2l0dWF0aW9uIGlzIGltcG9zc2libGUgdG8ganVzdGlmeSBpbiBhIAogICAgICAgICAgYnVzaW5lc3MgZW52aXJvbm1lbnQuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIG5leHQgc29sdXRpb24gaXMgdG8gaW5zdGFsbCB2aXJ0dWFsIG1hY2hpbmUgZW11bGF0aW9uIHNvZnR3YXJlCiAgICAgICAgICBzdWNoIGFzIFZNV2FyZSwgV2luNExpbiBvciBQbGV4ODYuIFRoZW4geW91IGNhbiB1c2Ugd2luZG93cyAKICAgICAgICAgIGFwcGxpY2F0aW9ucyB3aXRob3V0IHN1ZmZlcmluZyBzdWNoIGEgYmlnIGRpc3J1cHRpb24uIEJ1dCBpdCBzdGlsbAogICAgICAgICAgcmVxdWlyZXMgdGhhdCB5b3UgYWNxdWlyZSBhIFdpbmRvd3MgbGljZW5zZSBhbmQgZGVkaWNhdGUgYXMgbXVjaCAKICAgICAgICAgIGRpc2sgc3BhY2UgdG8gV2luZG93cy4gRnVydGhlcm1vcmUgeW91IHdpbGwgcGF5IGZvciB0aGUgYWRkZWQgCiAgICAgICAgICBjb252ZW5pZW5jZTogaWYgdXNpbmcgVk1XYXJlIG9yIFdpbjRMaW4geW91IGhhdmUgdG8gYnV5IGFub3RoZXIgCiAgICAgICAgICBsaWNlbnNlLCBhbmQgbW9yZSBpbXBvcnRhbnRseSB5b3Ugbm93IGhhdmUgdG8gZGVkaWNhdGUgYSBnb29kIGNodW5rCiAgICAgICAgICBvZiB5b3VyIGNvbXB1dGVyJ3MgbWVtb3J5IHRvIHRoZSB2aXJ0dWFsIG1hY2hpbmUuIFBlcmZvcm1hbmNlIHdpbGwKICAgICAgICAgIHRha2UgYSBzaWduaWZpY2FudCBoaXQgdG9vLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFVzaW5nIFdpbmUgbGV0cyB5b3UgYXZvaWQgYWxsIG9mIHRoYXQgb3ZlcmhlYWQ6IFdpbmRvd3MgbGljZW5zZSwKICAgICAgICAgIGhhcmQtZHJpdmUgc3BhY2UgcmVxdWlyZWQgYnkgV2luZG93cywgbWVtb3J5IGFuZCBwZXJmb3JtYW5jZSBoaXQgCiAgICAgICAgICB0YWtlbiBieSBlbXVsYXRlZCB2aXJ0dWFsIG1hY2hpbmVzLiBOb3cgeW91IGNhbiBzdGFydCB5b3VyIFdpbmRvd3MKICAgICAgICAgIGFwcGxpY2F0aW9uIHN0cmFpZ2h0IGZyb20geW91ciByZWd1bGFyIGRlc2t0b3AgZW52aXJvbm1lbnQsIHBsYWNlCiAgICAgICAgICB0aGF0IGFwcGxpY2F0aW9uJ3Mgd2luZG93IHNpZGUgYnkgc2lkZSB3aXRoIG5hdGl2ZSBhcHBsaWNhdGlvbiAKICAgICAgICAgIHdpbmRvd3MsIGNvcHkvcGFzdGUgZnJvbSBvbmUgdG8gdGhlIG90aGVyLCBhbmQgcnVuIGl0IGFsbCBhdCBmdWxsIHNwZWVkLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEl0IGlzIGFsc28gYSBwcmV0dHkgdml0YWwgcGFydCBvZiBtaWdyYXRpbmcgYSBsYXJnZSBvcmdhbmlzYXRpb24sCiAgICAgICAgICB5b3UgY2FuJ3QgY2hhbmdlIGEgNTAwMCBkZXNrdG9wIHNldHVwIG92ZXJuaWdodCB3aXRob3V0IGEgbG90IG9mIHJpc2suCiAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGljaC1vbmUtb2YtdGhlLWRpZmZlcmVudC1XaW5lLXBhY2thZ2VzIj4KICAgICAgICA8cGFyYT5XaGljaCBvbmUgb2YgdGhlIGRpZmZlcmVudCBXaW5lIHBhY2thZ2VzIG91dCB0aGVyZSBpcyBnb29kIGZvciBtZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBDdXJyZW50bHkgdGhlcmUgaXMgYSBicm9hZCBzZWxlY3Rpb24gb2YgZGlmZmVyZW50IFdpbmUgcGFja2FnZXMvdmVyc2lvbnM6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDx2YXJpYWJsZWxpc3Q+CgoJICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgIDx0ZXJtPjx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLmNvbSI+V2luZTwvdWxpbms+PC90ZXJtPgogICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBUaGlzIGlzIHRoZSAic3RhbmRhcmQiIHNvdXJjZSBkaXN0cmlidXRpb24gb2YgV2luZS4gSXRzIGxpY2Vuc2UgaXMgCiAgICAgICAgICAgICAgdGhlIExHUEwsIGl0IGNhbiBiZSBkb3dubG9hZGVkIGZvciBmcmVlLgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogCgkgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dGVybT48dWxpbmsgdXJsPSJodHRwOi8vcmV3aW5kLnNvdXJjZWZvcmdlLm5ldCI+UmVXaW5kPC91bGluaz48L3Rlcm0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIFRoaXMgaXMgYSBmb3JrZWQgV2luZSB0cmVlIHRoYXQgZ290IGNyZWF0ZWQgd2hlbiBXaW5lIGNoYW5nZWQgaXRzCiAgICAgICAgICAgICAgbGljZW5zZSBmcm9tIFgxMSB0byB0aGUgbW9yZSByZXN0cmljdGl2ZSBMR1BMLCBpbiBvcmRlciB0byBsZXQgCiAgICAgICAgICAgICAgcGVvcGxlIGNvbnRpbnVlIHRvIG1haW50YWluIGFuIFgxMSBsaWNlbnNlZCBXaW5lIHZlcnNpb24uIEl0cyAKICAgICAgICAgICAgICBsaWNlbnNlIGlzIFgxMSwgaXQgY2FuIGJlIGRvd25sb2FkZWQgZm9yIGZyZWUuIAogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIAoJICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgPHRlcm0+PHVsaW5rIHVybD0iaHR0cDovL3d3dy50cmFuc2dhbWluZy5jb20iPlRyYW5zZ2FtaW5nJ3MgV2luZVg8L3VsaW5rPjwvdGVybT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgVGhpcyBpcyBUcmFuc0dhbWluZydzIFdpbmUgdmVyc2lvbiBzcGVjaWFsbHkgc3VpdGVkIGZvciBnYW1lcy4gCiAgICAgICAgICAgICAgSXQgaW5jbHVkZXMgRGlyZWN0M0Qgc3VwcG9ydCAodGh1cyBpdHMgRGlyZWN0WCBzdXBwb3J0IGlzIG11Y2gKICAgICAgICAgICAgICBtb3JlIGNvbXBsZXRlIHRoYW4gV2luZSdzKS4gTW9zdCBvZiB0aGUgY29kZSBpcyB1bmRlciB0aGUgQUZQTAogICAgICAgICAgICAgIGFuZCBjYW4gYmUgZG93bmxvYWRlZCBmb3IgZnJlZS4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBIb3dldmVyIFRyYW5zZ2FtaW5nIGFsc28gZGlzdHJpYnV0ZXMgYmluYXJpZXMgdGhhdCBjb250YWluCiAgICAgICAgICAgICAgaW1wcm92ZWQgY29weSBwcm90ZWN0aW9uIHN1cHBvcnQgKG5lZWRlZCBmb3IgbWFueQogICAgICAgICAgICAgIGdhbWVzKSwgc3VwcG9ydCwgYW5kIG90aGVyIGVuaGFuY2VtZW50cy4gVGhlc2UgcGFja2FnZXMgYXJlCiAgICAgICAgICAgICAgb25seSBhdmFpbGFibGUgaW4gYmluYXJ5IGZvcm0gdG8gc3Vic2NyaWJlZCBjdXN0b21lcnMKICAgICAgICAgICAgICAoJDUvbW9udGgpLgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIAoJICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgPHRlcm0+PHVsaW5rIHVybD0iaHR0cDovL3dpbmUuY29kZXdlYXZlcnMuY29tIj5Db2RlV2VhdmVycycgV2luZSBwcmV2aWV3PC91bGluaz48L3Rlcm0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIFRoaXMgaXMgYSBzcGVjaWFsIHBhY2thZ2VkIHZlcnNpb24gb2YgdGhlIHN0YW5kYXJkIFdpbmUgdHJlZQogICAgICAgICAgICAgIHdoaWNoIGhhcyBhIG5pY2Ugc2V0dXAgZm9yIGVhc3kgaW5zdGFsbGF0aW9uLiBMaWNlbnNlIExHUEwsIGZyZWUKICAgICAgICAgICAgICBkb3dubG9hZC4gCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogCgkgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dGVybT48dWxpbmsgdXJsPSJodHRwOi8vd3d3LmNvZGV3ZWF2ZXJzLmNvbS9wcm9kdWN0cy9jcm9zc292ZXIvIj5Db2RlV2VhdmVycycgQ3Jvc3NvdmVyIFBsdWdpbjwvdWxpbms+PC90ZXJtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBTcGVjaWFsIFdpbmUgaW5zdGFsbGF0aW9uIHRvIGJlIHVzZWQgZm9yIHJ1bm5pbmcgV2luZG93cwogICAgICAgICAgICAgIE5ldHNjYXBlIGJyb3dzZXIgcGx1Z2lucyBzdWNoIGFzIGUuZy4gUXVpY2tUaW1lIGluIExpbnV4CiAgICAgICAgICAgICAgYnJvd3NlcnMuIENvc3RzICQyNC45NS4KICAgICAgICAgICAgICBXZWxsIHdvcnRoIGl0ICh2ZXJ5IHN0YWJsZSBhbmQgdXNlZnVsIHBhY2thZ2luZykuIAogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CgoJICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgPHRlcm0+PHVsaW5rIHVybD0iaHR0cDovL3d3dy5jb2Rld2VhdmVycy5jb20vcHJvZHVjdHMvb2ZmaWNlLyI+Q29kZVdlYXZlcnMnIENyb3Nzb3ZlciBPZmZpY2U8L3VsaW5rPjwvdGVybT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgV2luZSB2ZXJzaW9uIHdpdGggc3BlY2lhbCBwYWNrYWdpbmcgdG8gbWFrZSBzdXJlIGFsbW9zdCBhbGwgCiAgICAgICAgICAgICAgaW1wb3J0YW50IE9mZmljZSB0eXBlIHByb2dyYW1zIHdvcmsgcHJldHR5IHdlbGwuIENvc3RzICQ1NC45NS4gCiAgICAgICAgICAgICAgU2VlbXMgdG8gYmUgd2VsbCB3b3J0aCBpdCBzbyBmYXIgYWNjb3JkaW5nIHRvIHNvbWUgY29tbWVudHMuIAogICAgICAgICAgICAgIChub3RlOiB5b3UncmUgc3VwcG9ydGluZyBhIGNvbXBhbnkgYWN0aXZlbHkgY29udHJpYnV0aW5nIHRvIFdpbmUKICAgICAgICAgICAgICBpZiB5b3UgZGVjaWRlIHRvIGJ1eSBlaXRoZXIgUGx1Z2luIG9yIE9mZmljZS4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogCgkgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dGVybT48dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvZG93bmxvYWQvIj5PdGhlciBwYWNrYWdlZCB2ZXJzaW9ucyBvZiBXaW5lPC91bGluaz48L3Rlcm0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIFZhcmlvdXMgV2luZSBwYWNrYWdlcyBjYW4gYmUgZG93bmxvYWRlZCBmb3IgZnJlZSBmcm9tCiAgICAgICAgICAgICAgV2luZSBIUS4gVGhleSBhcmUgbm90IG9mZmljaWFsbHkgcGFja2FnZWQgYnkgV2luZSBIUSwgYW5kIGFzCiAgICAgICAgICAgICAgc3VjaCBtYXkgaGF2ZSBzb21lIGNvbmZpZ3VyYXRpb24gaW5jb25zaXN0ZW5jaWVzLgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgPC92YXJpYWJsZWxpc3Q+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGF0cy10aGUtaGlzdG9yeS1vZi1XaW5lIj4KICAgICAgICA8cGFyYT5XaGF0J3MgdGhlIGhpc3Rvcnkgb2YgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGUgV2luZSBwcm9qZWN0IHN0YXJ0ZWQgaW4gMTk5MyBhcyBhIHdheSB0byBzdXBwb3J0IHJ1bm5pbmcgV2luZG93cyAzLjEKICAgICAgICAgIHByb2dyYW1zIG9uIExpbnV4LiBCb2IgQW1zdGFkdCB3YXMgdGhlIG9yaWdpbmFsIGNvb3JkaW5hdG9yLCBidXQgdHVybmVkCiAgICAgICAgICBpdCBvdmVyIGZhaXJseSBlYXJseSBvbiB0byBBbGV4YW5kcmUgSnVsbGlhcmQsIHdobyBoYXMgcnVuIGl0IGV2ZXIgCiAgICAgICAgICBzaW5jZS4gQSA8dWxpbmsgdXJsPSJuZXdzOmNvbXAuZW11bGF0b3JzLm1zLXdpbmRvd3Mud2luZSI+bmV3c2dyb3VwPC91bGluaz4KICAgICAgICAgIHdhcyBjcmVhdGVkIGluIEp1bHkgMTk5NC4gT3ZlciB0aGUgeWVhcnMsIHBvcnRzIGZvcgogICAgICAgICAgb3RoZXIgVW5peGVzIGhhdmUgYmVlbiBhZGRlZCwgYWxvbmcgd2l0aCBzdXBwb3J0IGZvciBXaW4zMiBhcyBXaW4zMiAKICAgICAgICAgIGFwcGxpY2F0aW9ucyBiZWNhbWUgcG9wdWxhci4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLmNvbS9hYm91dC5zaHRtbCI+CiAgICAgICAgICBodHRwOi8vd3d3LndpbmVocS5jb20vYWJvdXQuc2h0bWw8L3VsaW5rPgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoYXQtaXMtdGhlLWN1cnJlbnQtdmVyc2lvbi1vZi1XaW5lIj4KICAgICAgICA8cGFyYT5XaGF0IGlzIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBBIG5ldyB2ZXJzaW9uIG9mIFdpbmUgaXMgZGlzdHJpYnV0ZWQgYWJvdXQgZXZlcnkgbW9udGguIFlvdSB3aWxsIGJlIAogICAgICAgICAgYWJsZSB0byBrZWVwIHVwIG9uIGFsbCB0aGUgbGF0ZXN0IHJlbGVhc2VzIGJ5IHJlYWRpbmcgdGhlIG5ld3Nncm91cAogICAgICAgICAgPHVsaW5rIHVybD0ibmV3czpjb21wLmVtdWxhdG9ycy5tcy13aW5kb3dzLndpbmUiPgogICAgICAgICAgY29tcC5lbXVsYXRvcnMubXMtd2luZG93cy53aW5lPC91bGluaz4sIG9yIGJ5IHZpc2l0aW5nIHRoZQogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEuY29tIj5XaW5lIEhRIGhvbWVwYWdlPC91bGluaz4uIFdoZW4KICAgICAgICAgIGRvd25sb2FkaW5nIFdpbmUgZnJvbSB5b3VyIEZUUCBzaXRlIG9mIGNob2ljZSAoc2VlCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5jb20vZG93bmxvYWQuc2h0bWwiPnRoZSBEb3dubG9hZCBwYWdlPC91bGluaz4KICAgICAgICAgIGZvciBzb21lIG9mIHRoZXNlIGNob2ljZXMpLCB5b3UgY2FuIG1ha2Ugc3VyZSB0aGF0IHlvdSBhcmUgZ2V0dGluZyAKICAgICAgICAgIHRoZSBsYXRlc3QgdmVyc2lvbiBieSB3YXRjaGluZyB0aGUgdmVyc2lvbiBudW1iZXJzIGluIHRoZSBkaXN0cmlidXRpb24KICAgICAgICAgIGZpbGVuYW1lLiBGb3IgaW5zdGFuY2UsIHRoZSBkaXN0cmlidXRpb24gcmVsZWFzZWQgb24gT2N0b2JlciAzMSwgMjAwMgogICAgICAgICAgd2FzIGNhbGxlZCBXaW5lLTIwMDIxMDMxLnRhci5nei4gUGF0Y2ggZmlsZXMgYXJlIGFsc28gYXZhaWxhYmxlLiBJZgogICAgICAgICAgeW91IGFyZSBjdXJyZW50IHRvIHRoZSBwcmV2aW91cyB2ZXJzaW9uLCB5b3UgY2FuIGRvd25sb2FkIGFuZCBhcHBseSAKICAgICAgICAgIGp1c3QgdGhlIGN1cnJlbnQgcGF0Y2ggZmlsZSByYXRoZXIgdGhhbiB0aGUgZW50aXJlIG5ldyBkaXN0cmlidXRpb24uCiAgICAgICAgICBUaGUgcGF0Y2ggZmlsZW5hbWVzIGZvbGxvdyB0aGUgc2FtZSBjb252ZW50aW9ucyBhcyB0aGUgbW9udGhseSAKICAgICAgICAgIGRpc3RyaWJ1dGlvbi4gPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEuY29tL2Rldi5zaHRtbCI+CiAgICAgICAgICBSZWFkLW9ubHkgQ1ZTPC91bGluaz4gYWNjZXNzIGlzIGFsc28gYXZhaWxhYmxlLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoYXQtaXMtdGhlLWN1cnJlbnQtU3RhdHVzLW9mLVdpbmUiPgogICAgICAgIDxwYXJhPldoYXQgaXMgdGhlIGN1cnJlbnQgU3RhdHVzIG9mIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQXMgb2YgbWlkIDIwMDIsIFdpbmUgY29uc2lzdHMgb2Ygb3ZlciAxIG1pbGxpb24gbGluZXMgb2YgQyBjb2RlLAogICAgICAgICAgd3JpdHRlbiBieSBtb3JlIHRoYW4gMzAwIGRldmVsb3BlcnMgZnJvbSBkb3plbnMgb2YgY291bnRyaWVzIGFyb3VuZAogICAgICAgICAgdGhlIHdvcmxkLiBXaW5lIGlzIGluIGFjdGl2ZSB1c2UgYnkgYW4gZXN0aW1hdGVkIDEwMEsgcGVvcGxlLiBXaW5lCiAgICAgICAgICBpbXBsZW1lbnRzIG1vcmUgdGhhbiA5MCUgb2YgdGhlIGNhbGxzIGluIHBvcHVsYXIgV2luZG93cyAKICAgICAgICAgIHNwZWNpZmljYXRpb25zIHN1Y2ggYXMgRUNNQS0yMzQgYW5kIE9wZW4zMi4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZb3UgbWF5IGFsc28gd2FudCB0byBsb29rIGF0IHRoZQogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEuY29tL2Fib3V0L2luZGV4LnBocD9zdGF0dXMiPgogICAgICAgICAgU3RhdHVzIHBhZ2U8L3VsaW5rPiBmb3IgYSBnbG9iYWwgdmlldyBvbiBXaW5lJ3MgaW1wbGVtZW50YXRpb24gcHJvZ3Jlc3MuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hlbi13aWxsLVdpbmUtYmUtZmluaXNoZWQiPgogICAgICAgIDxwYXJhPldoZW4gd2lsbCBXaW5lIGJlIGZpbmlzaGVkPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIExhcmdlIHNvZnR3YXJlIHByb2plY3RzIGFyZSBuZXZlciBmaW5pc2hlZCwgb25seSByZWxlYXNlZC4gSW4gYW55CiAgICAgICAgICBjYXNlIFdpbmUgaXMgY2hhc2luZyBhIG1vdmluZyB0YXJnZXQgc2luY2UgZXZlcnkgbmV3IHJlbGVhc2Ugb2YgCiAgICAgICAgICBXaW5kb3dzIGNvbnRhaW5zIG5ldyBBUEkgY2FsbHMgb3IgdmFyaWF0aW9ucyBvbiB0aGUgZXhpc3Rpbmcgb25lcy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBCZWNhdXNlIFdpbmUgaXMgYmVpbmcgZGV2ZWxvcGVkIGJ5IHZvbHVudGVlcnMsIGl0IGlzIGRpZmZpY3VsdCB0bwogICAgICAgICAgcHJlZGljdCB3aGVuIGl0IHdpbGwgYmUgcmVhZHkgZm9yIGdlbmVyYWwgcmVsZWFzZS4gQnV0IGR1ZSB0byB0aGUKICAgICAgICAgIG11Y2ggaW5jcmVhc2VkIGludGVyZXN0IGJ5IGNvbXBhbmllcyBpbiBwb3J0aW5nIGFwcHMgdmlhIFdpbmUsIFdpbmUKICAgICAgICAgIGRldmVsb3BtZW50IGlzIGNvbnN0YW50bHkgZ2V0dGluZyBtb3JlIGFuZCBtb3JlIGFjdGl2ZS4gUmlnaHQgbm93CiAgICAgICAgICB3ZSBhcmUgd29ya2luZyBvbiByZWxlYXNpbmcgV2luZSAwLjkgaW4gMjAwMy4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaG8taXMtcmVzcG9uc2libGUtZm9yLVdpbmUiPgogICAgICAgIDxwYXJhPldobyBpcyByZXNwb25zaWJsZSBmb3IgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIGlzIGF2YWlsYWJsZSB0aGFua3MgdG8gdGhlIHdvcmsgb2YgbWFueSBwZW9wbGUuIFBsZWFzZSBzZWUgdGhlCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5jb20vc291cmNlL0FVVEhPUlMiPkFVVEhPUlM8L3VsaW5rPgogICAgICAgICAgZmlsZSBpbiB0aGUgZGlzdHJpYnV0aW9uIGZvciB0aGUgY29tcGxldGUgbGlzdC4gU29tZSBjb21wYW5pZXMgdGhhdAogICAgICAgICAgYXJlIG9yIGhhdmUgYmVlbiBpbnZvbHZlZCB3aXRoIFdpbmUgZGV2ZWxvcG1lbnQgYXJlIENvZGVXZWF2ZXJzLAogICAgICAgICAgVHJhbnNHYW1pbmcsIENvcmVsLCBhbmQgTWFjYWRhbWlhbi4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJmb2xrcy13aG8tY29udHJpYnV0ZWQtbW9uZXktb3ItZXF1aXBtZW50Ij4KICAgICAgICA8cGFyYT5XaG8gYXJlIHRoZSBmb2xrcyBhbmQgb3JnYW5pemF0aW9ucyB3aG8gaGF2ZSBjb250cmlidXRlZCBtb25leSBvciBlcXVpcG1lbnQgdG8gdGhlIFdpbmUgcHJvamVjdD88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBQZW9wbGUgYW5kIG9yZ2FuaXphdGlvbnMgd2hvIGhhdmUgZ2l2ZW4gZ2VuZXJvdXMgY29udHJpYnV0aW9ucyBvZgogICAgICAgICAgbW9uZXksIGVxdWlwbWVudCwgb3IgbGljZW5zZXMsIGluY2x1ZGU6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxpdGVtaXplZGxpc3Qgc3BhY2luZz0iY29tcGFjdCI+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPkRhdmlkIEwuIEhhcnBlcjwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPkJvYiBIZXBwbGU8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT5NYXJrIEEuIEhvcnRvbjwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPktldmluIFAuIExhd3RvbjwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPlRoZSBTeW50cm9weSBJbnN0aXR1dGU8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT5KYW1lcyBXb3VsZmU8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFZNV2FyZSBJbmMuICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LnZtd2FyZS5jb20iPgogICAgICAgICAgICAgaHR0cDovL3d3dy52bXdhcmUuY29tPC91bGluaz4pCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgQ29yZWwgKDx1bGluayB1cmw9Imh0dHA6Ly93d3cuY29yZWwuY29tIj4KICAgICAgICAgICAgIGh0dHA6Ly93d3cuY29yZWwuY29tPC91bGluaz4pCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGF0LXVuZG9jdW1lbnRlZC1BUElzLWFyZS1ub3QtdW5kZXJzdG9vZCI+CiAgICAgICAgPHBhcmE+V2hhdCB1bmRvY3VtZW50ZWQgQVBJcyAvIGludGVyZmFjZXMgYXJlIG5vdCB1bmRlcnN0b29kPyBXb3VsZAogICAgICAgICAgICAgIHNlZWluZyBNaWNyb3NvZnQgc291cmNlIGhlbHA/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIGJlc3Qgd291bGQgYmUgaWYgdGhlIFdpbmRvd3MgQVBJIHdhcyBmdWxseSBkb2N1bWVudGVkLCBzbyBXaW5lCiAgICAgICAgICBjb3VsZCBiZSBhIHBlcmZlY3QgImNsZWFuLXJvb20iIGltcGxlbWVudGF0aW9uLiBTZWVpbmcgdGhlIHNvdXJjZQogICAgICAgICAgY29kZSBtaWdodCBtYWtlIGl0IGhhcmRlciB0byBwcm92ZSB0aGF0IG5vIGNvcHlyaWdodCB2aW9sYXRpb25zIGhhdmUKICAgICAgICAgIHRha2VuIHBsYWNlLiBUaGF0IHNhaWQsIHRoZSBkb2N1bWVudGF0aW9uIGlzIG9mdGVuIGJhZCwgbm9uZXhpc3RlbnQsCiAgICAgICAgICBhbmQgZXZlbiBtaXNsZWFkaW5nIHdoZXJlIGl0IGV4aXN0cywgc28gYSBmYWlyIGFtb3VudCBvZiByZXZlcnNlCiAgICAgICAgICBlbmdpbmVlcmluZyBoYXMgYmVlbiBuZWNlc3NhcnksIHBhcnRpY3VsYXJseSBpbiB0aGUgc2hlbGwgKEV4cGxvcmVyKQogICAgICAgICAgaW50ZXJmYWNlLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSXMtVHJhbnNHYW1pbmdzLWxhc3QtcGF0Y2gtaW5jbHVkZWQtaW4tV2luZSI+CiAgICAgICAgPHBhcmE+SXMgVHJhbnNHYW1pbmcncyBsYXRlc3QgcGF0Y2ggaW5jbHVkZWQgaW4gdGhlIHN0YW5kYXJkIFdpbmUgcmVsZWFzZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBObywgaXQncyBub3QuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVHJhbnNHYW1pbmcgbWFrZXMgbW9uZXkgdmlhIGEgc3Vic2NyaXB0aW9uIHNlcnZpY2UgYW5kIHRoZSBsaWNlbnNlCiAgICAgICAgICBvZiB0aGVpciBXaW5lWCB0cmVlIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBXaW5lIGxpY2Vuc2UuIFRodXMKICAgICAgICAgIFdpbmVYIHBhdGNoZXMgY2Fubm90IGJlIGludGVncmF0ZWQgaW50byB0aGUgV2luZSB0cmVlIHdpdGhvdXQKICAgICAgICAgIGV4cHJlc3MgcGVybWlzc2lvbiBieSBUcmFuc0dhbWluZy4gVGhleSBoYXZlIHN1Ym1pdHRlZCBzb21lCiAgICAgICAgICBvZiB0aGVpciB3b3JrIGZvciBpbnRlZ3JhdGlvbiBpbnRvIFdpbmUsIG1vc3Qgbm90YWJseSBEaXJlY3REcmF3CiAgICAgICAgICBhbmQgc29tZSBEaXJlY3RTb3VuZCB3b3JrLCBhbmQgc3VjaCB3b3JrIGhhcyBiZWVuIGludGVncmF0ZWQgaW50bwogICAgICAgICAgV2luZSB0cmVlLiBIb3dldmVyIGl0IHNlZW1zIHVubGlrZWx5IHRoZXkgd2lsbCBzdWJtaXQgdGhlaXIgRGlyZWN0M0QKICAgICAgICAgIHdvcmsuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2lsbC10aGVyZS1iZS1hLVdpbmRvd3MtdmVyc2lvbi1vZi1XaW5lIj4KICAgICAgICA8cGFyYT5XaWxsIHRoZXJlIGJlIGEgV2luZG93cyB2ZXJzaW9uIG9mIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgU29tZSBwZW9wbGUgYXJlIHdvcmtpbmcgb24gZ2V0dGluZyBXaW5lIGNvZGUgdG8gY29tcGlsZSBvbiBXaW5kb3dzLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8aXRlbWl6ZWRsaXN0IHNwYWNpbmc9ImNvbXBhY3QiPgogICAgICAgICAgPGxpc3RpdGVtPiAKICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgQ3lnd2luICg8dWxpbmsgdXJsPSJodHRwOi93d3cuY3lnd2luLmNvbSI+CiAgICAgICAgICAgICAgaHR0cDovL3d3dy5jeWd3aW4uY29tLzwvdWxpbms+KQogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBSZWFjdG9zICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LnJlYWN0b3MuY29tLyI+CiAgICAgICAgICAgICBodHRwOi8vd3d3LnJlYWN0b3MuY29tLzwvdWxpbms+KQogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlcmUncyBzb21lIHByb2dyZXNzLCBzbyBhIFdpbmUgdmVyc2lvbiB0aGF0J3MgdXNhYmxlIG9uIFdpbmRvd3MKICAgICAgICAgIG1pZ2h0IGJlIGF2YWlsYWJsZSBhdCBzb21lIHRpbWUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogIAogICAgPC9xYW5kYWRpdj4KICAgIDxxYW5kYWRpdiBpZD0iV2hhdC1kby1JLW5lZWQtaW4tb3JkZXItdG8tdXNlLVdpbmUiPgogICAgICA8dGl0bGU+V2hhdCBkbyBJIG5lZWQgaW4gb3JkZXIgdG8gdXNlIFdpbmU/PC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iVW5kZXItd2hhdC1wbGF0Zm9ybXMtd2lsbC1XaW5lLXJ1biI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBVbmRlciB3aGF0IGhhcmR3YXJlIHBsYXRmb3JtKHMpIGFuZCBvcGVyYXRpbmcgc3lzdGVtKHMpIHdpbGwKICAgICAgICAgIFdpbmUoTGliKSBydW4/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBpcyBiZWluZyBkZXZlbG9wZWQgc3BlY2lmaWNhbGx5IHRvIHJ1biBvbiB0aGUgPGVtcGhhc2lzPkludGVsIHg4NjwvZW1waGFzaXM+IGNsYXNzIG9mIENQVXMgdW5kZXIgY2VydGFpbiBVTklYZXMgdGhhdCBydW4gb24gdGhlIHg4NiBwbGF0Zm9ybS4KCSAgV2luZWxpYiBob3dldmVyIGlzIGNhcGFibGUgb2YgcG9ydGluZyBXaW5kb3dzIHByb2dyYW0gPGVtcGhhc2lzPnNvdXJjZSBjb2RlPC9lbXBoYXNpcz4gdG8gb3RoZXIgcGxhdGZvcm1zIGFsc28sIG5vdCBvbmx5IHg4Ni4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaHVzIHJ1bm5pbmcgV2luZG93cyBwcm9ncmFtcyB2aWEgV2luZSBvbiBvdGhlciBwbGF0Zm9ybXMgKGUuZy4gTWFjT1MgWCkgaXMgPGVtcGhhc2lzPm5vdDwvZW1waGFzaXM+IHBvc3NpYmxlOyB0aGUgb25seSB3YXkgdG8gcnVuIFdpbmRvd3MgY29kZQoJICBvbiBNYWNPUyBYIHdvdWxkIGJlIHRvIHRha2UgV2luZG93cyBwcm9ncmFtIHNvdXJjZSBjb2RlIGFuZCByZWNvbXBpbGUgaXQgZm9yIGUuZy4gTWFjT1MgWCB1c2luZyBXaW5lbGliLgoJPC9wYXJhPgoJPHBhcmE+CgkgIFRoZSBmb2xsb3dpbmcgd2lsbCBsaXN0IHRoZSB4ODYgb3BlcmF0aW5nIHN5c3RlbXMgc3VwcG9ydGVkIGJ5CgkgIFdpbmU7IFdpbmVsaWIgc3VwcG9ydCBmb3Igb3RoZXIgcGxhdGZvcm1zIGtlZXBzIGV2b2x2aW5nLAoJICBzbyBpdCdzIG5vdCBzcGVjaWZpY2FsbHkgbGlzdGVkIGhlcmUuCgk8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBOZXRCU0QsIE9wZW5CU0QsIFVuaXh3YXJlLCBhbmQgU0NPIE9wZW5TZXJ2ZXIgNSB3b3JrZWQgYXQgb25lIHRpbWUsCiAgICAgICAgICBidXQgV2luZSBub3cgcmVxdWlyZXMga2VybmVsLWxldmVsIHRocmVhZHMgd2hpY2ggYXJlIG5vdCBjdXJyZW50bHkgCiAgICAgICAgICBhdmFpbGFibGUgKG9yIHVuZGVyc3Rvb2QgYnkgdGhlIFdpbmUgdGVhbSkgb24gdGhvc2UgcGxhdGZvcm1zLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBXaW5lIGRldmVsb3BtZW50IHRlYW0gaG9wZXMgdG8gYXR0cmFjdCB0aGUgaW50ZXJlc3Qgb2Ygb3RoZXIKICAgICAgICAgIGNvbW1lcmNpYWwgVU5JWCBhbmQgVU5JWCBjbG9uZSB2ZW5kb3JzIGFzIHdlbGwuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQmVPUzogcG9ydGluZyBlZmZvcnRzIHVzZWQgdG8gYmUgcHJldHR5IHN0cm9uZywgYnV0IEJlT1MgaGFzIHNldmVyZQogICAgICAgICAgbGltaXRhdGlvbnMgaW4gVW5peCBjYWxsIHN1cHBvcnQsIHNvIGEgcG9ydCB3aWxsIHByb2JhYmx5IG5ldmVyCiAgICAgICAgICBoYXBwZW4uCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgRnJlZUJTRDogU2hvdWxkIHdvcmssIHdpdGggbGltaXRhdGlvbnMgaW4gc3BlY2lmaWMgYXJlYXMgKG1haW5seSAKICAgICAgICAgIG1pc3NpbmcgZGV2aWNlL2hhcmR3YXJlIHN1cHBvcnQpLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIExpbnV4L3g4NjogV29ya3MsIGFuZCBhcyBtb3N0IHBvcHVsYXIgcGxhdGZvcm0gZm9yIGJvdGggZGV2ZWxvcGVycwoJICBhbmQgdXNlcnMsIGl0IGlzIHRoZSBiZXN0IHN1cHBvcnRlZCBwbGF0Zm9ybSBvZiBhbGwuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hhdC1taW5pbXVtLUNQVS1tdXN0LUktaGF2ZSI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaGF0IG1pbmltdW0gQ1BVIG11c3QgSSBoYXZlIGluIG15IGNvbXB1dGVyIHRvIGJlIGFibGUgdG8gcnVuIFdpbmUgCiAgICAgICAgICBhbmQgTVMgV2luZG93cyBhcHBsaWNhdGlvbnMgc21vb3RobHk/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2UgbmVlZCB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gV2luZSBhbmQgV2luZWxpYiBoZXJlLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgd29uJ3QgcnVuIG9uIGFueSB4ODYgQ1BVIGxlc3MgdGhhbiBhbiA4MDM4NiBkdWUgdG8gYWRkcmVzcwogICAgICAgICAgbWFuYWdlbWVudCBsaW1pdGF0aW9ucy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJdCBpcyBrbm93biB0byBhbHNvIHdvcmsgaW4gdGhlIDgwNDg2IGFuZCB1cHdhcmRzIGNvbXBhdGlibGUgQ1BVcy4KICAgICAgICAgIFRoZSBiYXNpYyB0ZXN0IGlzLCBpZiB5b3UgY2FuIHJ1biBYMTEgbm93LCB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gcnVuCiAgICAgICAgICBXaW5lIGFuZCBNUyBXaW5kb3dzIGFwcGxpY2F0aW9ucyB1bmRlciBpdC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBBcyBhbHdheXMsIHRoZSBmYXN0ZXIgeW91ciBDUFUsIHRoZSBiZXR0ZXIuIEhhdmluZyBhIG1hdGggY29wcm9jZXNzb3IKICAgICAgICAgIGlzIHVuaW1wb3J0YW50LiBIb3dldmVyLCBoYXZpbmcgYSBncmFwaGljcyBhY2NlbGVyYXRlZCB2aWRlbyBjYXJkCiAgICAgICAgICBzdXBwb3J0ZWQgYnkgWCB3aWxsIGhlbHAgZ3JlYXRseS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBEZXBlbmRpbmcgb24geW91ciBhcHBsaWNhdGlvbiB5b3UgbWF5IGZpbmQgdGhhdCBmYXN0ZXIgc3BlZWRzIGFyZQogICAgICAgICAgcmVxdWlyZWQgZm9yIHNlbnNpYmxlIHVzZS4gV2UgY2FuJ3QgZ2l2ZSBzcGVjaWZpYyBhZHZpY2Ugb24gdGhhdCBkdWUKICAgICAgICAgIHRvIHRoZSB2YXN0IHJhbmdlIG9mIGFwcGxpY2F0aW9ucyBvdXQgdGhlcmUuIEhvd2V2ZXIgdGhlIHJ1bGUgb2YKICAgICAgICAgIHRodW1iIGlzIHRoYXQgaWYgeW91ciBhcHBsaWNhdGlvbiBydW5zIGZpbmUgb24gV2luZG93cywgaXQgc2hvdWxkCiAgICAgICAgICBydW4gZmluZSBvbiB0aGUgc2FtZSBwbGF0Zm9ybSBpbiBXaW5lLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy1tdWNoLWRpc2stc3BhY2Utd2lsbC1XaW5lLXRha2UiPgogICAgICAgIDxwYXJhPgogICAgICAgICBIb3cgbXVjaCBkaXNrIHNwYWNlIHdpbGwgdGhlIFdpbmUgc291cmNlIGNvZGUgYW5kIGJpbmFyaWVzIHRha2Ugb24gbXkKICAgICAgICAgaGFyZCBkcml2ZT8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZb3UgbmVlZCBhcHByb3hpbWF0ZWx5IDI1MCBtZWdhYnl0ZXMgb2YgZnJlZSBoYXJkIGRyaXZlIHNwYWNlIHRvCiAgICAgICAgICBzdG9yZSBhbmQgY29tcGlsZSB0aGUgc291cmNlIGNvZGUuIFdpbmUgYWxzbyBuZWVkcyBhYm91dCAxOCBtZWdzIGluCiAgICAgICAgICB5b3VyIC90bXAgZGlyZWN0b3J5LiBBbmQgYWJvdXQgNTAgTUIgYXJlIG5lZWRlZCB0byBkbyBhIG1ha2UgaW5zdGFsbC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBCaW5hcnkgcGFja2FnZXMsIGVzcGVjaWFsbHkgdGhvc2Ugbm90IGNvbnRhaW5pbmcgZGVidWcgaW5mb3JtYXRpb24sCiAgICAgICAgICBoYXZlIG11Y2ggbG93ZXIgZGlzayBzcGFjZSByZXF1aXJlbWVudHMsIHVzdWFsbHkgaW4gdGhlIDIwTUIgcmFuZ2UuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hhdC1vdGhlci1zb2Z0d2FyZS1kby1JLW5lZWQtdG8tY29tcGlsZSI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaGF0IG90aGVyIHNvZnR3YXJlIGRvIEkgbmVlZCB0byBpbnN0YWxsLCBjb21waWxlIGFuZCBydW4KICAgICAgICAgIFdpbmU/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTWFueSBkZXZlbG9wbWVudCB0b29scyBhcmUgbmVlZGVkIGluIG9yZGVyIHRvIGNvbXBpbGUgV2luZS4KICAgICAgICAgIEEgbGlzdCBvZiByZXF1aXJlZCBwYWNrYWdlcyBmb3Igc2V2ZXJhbCBkaXN0cmlidXRpb25zIGlzIGluY2x1ZGVkIGluCiAgICAgICAgICB0aGUgUkVBRE1FICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5jb20vc291cmNlL1JFQURNRSI+CiAgICAgICAgICBodHRwOi8vd3d3LndpbmVocS5jb20vc291cmNlL1JFQURNRTwvdWxpbms+KS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUbyBydW4gV2luZSwgeW91IHdpbGwgbmVlZCB0aGUgZm9sbG93aW5nOgogICAgICAgIDwvcGFyYT4KCiAgICAgICAgPGl0ZW1pemVkbGlzdCBzcGFjaW5nPSJjb21wYWN0Ij4KICAgICAgICAgIDxsaXN0aXRlbT4gCiAgICAgICAgICAgIDxwYXJhPlRoZSBjb21waWxlZCBXaW5lIGJpbmFyeTwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPkEgcHJvcGVybHkgY29uZmlndXJlZCB3aW5lLmNvbmYgZmlsZSAob3Igfi8ud2luZXJjIGZpbGUpPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+QW4gaW5zdGFsbGVkIGFuZCB3b3JraW5nIFggV2luZG93IHN5c3RlbTwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPlNvbWUgV2luZG93cyBwcm9ncmFtcyB0byB0ZXN0PC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy1tdWNoLVJBTS1kby1JLW5lZWQiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSG93IG11Y2ggUkFNIGRvIEkgbmVlZCB0byBoYXZlIG9uIG15IFVOSVggc3lzdGVtIHRvIGJlIGFibGUgdG8gcnVuIAogICAgICAgICAgV2luZSBhbmQgTVMgV2luZG93cyBhcHBsaWNhdGlvbnMgc21vb3RobHk/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgeW91IGNhbiBydW4gWCBzbW9vdGhseSBvbiB5b3VyIFVOSVggc3lzdGVtIG5vdywgeW91IHNob3VsZCBiZSAKICAgICAgICAgIGFibGUgdG8gcnVuIFdpbmUgYW5kIE1TIFdpbmRvd3MgYXBwbGljYXRpb25zIGp1c3QgZmluZSB0b28sIGRlcGVuZGluZwogICAgICAgICAgb24gaG93IG1lbW9yeSBodW5ncnkgdGhlIGFwcGxpY2F0aW9uIGlzLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEEgV2luZSB3b3Jrc3RhdGlvbiB3aWxsIHdvcmsgd2l0aCAxNiBtZWdhYnl0ZXMgb2YgUkFNIGFuZCBhIDE2IAogICAgICAgICAgbWVnYWJ5dGUgc3dhcCBwYXJ0aXRpb24gYXMgbG9uZyBhcyB5b3UgaGF2ZSBhIHJlYXNvbmFibGUgZ3JhcGhpY3MgCiAgICAgICAgICBjYXJkLiBNb3N0IGFwcGxpY2F0aW9ucyB3aWxsIHJ1biByZWFzb25hYmx5IHdpdGggNjQvNjQgTWIsIAogICAgICAgICAgaW50ZXJhY3RpdmUgZ2FtZXMgYXJlIGxpa2VseSB0byBuZWVkIG1vcmUuIFlvdSBjYW4gcnVuIFdpbmUgd2l0aCA4LzgsCiAgICAgICAgICBidXQgaXQgaXMgZ29pbmcgdG8gYmUgdW51c2FibHkgc2xvdyBhbmQgdmVyeSBjb25zdHJhaW5pbmcgb24gdGhlIAogICAgICAgICAgYXBwbGljYXRpb25zIHlvdSBjYW4gcnVuLiBJZiB5b3Ugd2lzaCB0byBiZSBwYXJ0IG9mIHRoZSBkZXZlbG9wbWVudAogICAgICAgICAgdGVhbSBhbmQgcHJvZ3JhbSBXaW5lIGl0c2VsZiwgYmUgYXdhcmUgdGhhdCB0aGUgZGVidWdnZXIgaXMgcmF0aGVyIAogICAgICAgICAgbWVtb3J5IGludGVuc2l2ZS4gU29tZSBoYXZlIHN1Z2dlc3RlZCB0aGF0IDY0IG1lZ2FieXRlcyBpcyB0aGUKICAgICAgICAgIG1pbmltdW0gUkFNIG5lZWRlZCBmb3IgV2luZSBkZXZlbG9wbWVudCwgYWx0aG91Z2ggc29tZSBhcmUgYWJsZSB0byAKICAgICAgICAgIHdvcmsgKGFsYmVpdCBzbG93bHkpIHdpdGggMjQgbWVnYWJ5dGVzIG9mIHBoeXNpY2FsIFJBTSBhbmQgbG90cyBvZgogICAgICAgICAgc3dhcCBzcGFjZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctbG9uZy1kb2VzLVdpbmUtdGFrZS10by1idWlsZCI+CiAgICAgICAgPHBhcmE+SG93IGxvbmcgZG9lcyBXaW5lIHRha2UgdG8gYnVpbGQ8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIGlzIGdldHRpbmcgdG8gYmUgcXVpdGUgbGFyZ2UsIGFuZCBidWlsZGluZyBmcm9tIHNjcmF0Y2ggdGFrZXMgYQogICAgICAgICAgbG90IG9mIHByb2Nlc3NpbmcuIEFzIG9mIFNlcHRlbWJlciAyMDAyLCBjb21waWxlIHRpbWVzIHdlcmUgYXJvdW5kIDIwCiAgICAgICAgICBtaW51dGVzIG9uIGFuIEF0aGxvbiAxMjAwIHdpdGggNjQwIE1iIGFuZCA0NS01MCBtaW51dGVzIG9uIGEgQ3lyaXggCiAgICAgICAgICAzMDAgd2l0aCA2NCBNYi4gSWYgeW91IGhhdmUgYSBDVlMgY29weSwgeW91IG1heSBub3QgbmVlZCB0byByZWJ1aWxkCiAgICAgICAgICB0aGUgd2hvbGUgdGhpbmcgZXZlcnkgdGltZSB5b3UgdXBkYXRlLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSS1oYXZlLWEtRHJpdmVzcGFjZWQtcGFydGl0aW9uIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEkgaGF2ZSBhIERyaXZlc3BhY2VkLCBEb3VibGVzcGFjZWQgb3IgU3RhY2tlcmVkIERPUyBwYXJ0aXRpb24uIENhbiAKICAgICAgICAgIFdpbmUgcnVuIE1TIFdpbmRvd3MgYmluYXJpZXMgbG9jYXRlZCBpbiBzdWNoIGEgcGFydGl0aW9uPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFllcywgYnV0IG9ubHkgaWYgdGhlIG9wZXJhdGluZyBzeXN0ZW0gc3VwcG9ydHMgbW91bnRpbmcgdGhvc2UgdHlwZXMKICAgICAgICAgIG9mIGRyaXZlcy4gVGhlcmUgaXMgYSBMaW51eCBmaWxlIHN5c3RlbSBkcml2ZXIgY2FsbGVkIGRtc2RvcyB0aGF0CiAgICAgICAgICB3aWxsIGFsbG93IHJlYWQvd3JpdGUgYWNjZXNzIHRvIERvdWJsZXNwYWNlZCBhbmQgRHJpdmVzcGFjZSAxLjAKICAgICAgICAgIGRyaXZlcy4gTW9yZSBzcGVjaWZpY2FsbHksIGl0IHN1cHBvcnRzIG1vdW50aW5nIERPUyA2LjAgYW5kIDYuMiAKICAgICAgICAgIERvdWJsZXNwYWNlZCwgRE9TIDYuMjIgRHJpdmVzcGFjZWQsIGFuZCBXaW5kb3dzIDk1IERvdWJsZXNwYWNlZCAKICAgICAgICAgIGNvbXByZXNzZWQgcGFydGl0aW9ucyAocmVhZCBhbmQgd3JpdGUgYWNjZXNzIHdvcmtzIGZpbmUsIGJ1dCB3cml0ZSAKICAgICAgICAgIGFjY2VzcyBpcyBzbG93KS4gSXQgY2FuIGJlIGZvdW5kIGF0IAogICAgICAgICAgPHVsaW5rIHVybD0iZnRwOi8vbWV0YWxhYi51bmMuZWR1L3B1Yi9MaW51eC9zeXN0ZW0vZmlsZXN5c3RlbXMvZG9zZnMvIj4KICAgICAgICAgIGZ0cDovL21ldGFsYWIudW5jLmVkdS9wdWIvTGludXgvc3lzdGVtL2ZpbGUgc3lzdGVtcy9kb3Nmcy88L3VsaW5rPgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkRvLUktbmVlZC10by1oYXZlLWEtRE9TLXBhcnRpdGlvbiI+CiAgICAgICAgPHBhcmE+RG8gSSBuZWVkIHRvIGhhdmUgYSBET1MgcGFydGl0aW9uIG9uIG15IHN5c3RlbSB0byB1c2UgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZb3UgZG8gbm90IG5lZWQgYSBsaWNlbnNlZCBhbmQgaW5zdGFsbGVkIGNvcHkgb2YgRE9TIG9yIE1TIFdpbmRvd3MgdG8KICAgICAgICAgIGluc3RhbGwsIGNvbmZpZ3VyZSBhbmQgcnVuIFdpbmUuIEhvd2V2ZXIsIFdpbmUgaGFzIHRvIGJlIGFibGUgdG8gCiAgICAgICAgICAnc2VlJyBhbiBNUyBXaW5kb3dzIGJpbmFyeSAoaS5lLiBhcHBsaWNhdGlvbikgaWYgaXQgaXMgdG8gcnVuIGl0LgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KIAogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJEb2VzLU1TLVdpbmRvd3MtbmVlZC10by1iZS1pbnN0YWxsZWQiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgRG9lcyBNUyBXaW5kb3dzIG5lZWQgdG8gYmUgbG9hZGVkIGludG8gdGhhdCBwYXJ0aXRpb24gaW4gb3JkZXIgdG8KICAgICAgICAgIHJ1biBNUyBXaW5kb3dzIHByb2dyYW1zIHVuZGVyIFdpbmU/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTWFueSBmb2xrcyBoYXZlIHN1Y2Nlc3NmdWxseSBpbnN0YWxsZWQgYW5kIHJ1biBzb21lIHNtYWxsIHByb2dyYW1zCiAgICAgICAgICBpbiB0aGVpciBVTklYIGZpbGVzeXN0ZW0gd2l0aG91dCBoYXZpbmcgYSBET1MgcGFydGl0aW9uIG9yIE1TIAogICAgICAgICAgV2luZG93cy4gSG93ZXZlciwgaW4gbWFueSBjYXNlcyB5b3UgbmVlZCBhIGRpcmVjdG9yeSBhbmQgZmlsZSAKICAgICAgICAgIGluZnJhc3RydWN0dXJlIHRoYXQgaXMgc2ltaWxhciB0byBhbiBleGlzdGluZyBXaW5kb3dzIGluc3RhbGxhdGlvbi4KICAgICAgICAgIFNvbWUgYXBwbGljYXRpb25zJyBpbnN0YWxsYXRpb24gcHJvZ3JhbXMgd2FudCB0byBkaXN0cmlidXRlIHNvbWUgb2YKICAgICAgICAgIHRoZSBwYWNrYWdlJ3MgZmlsZXMgaW50byB0aGUgL3dpbmRvd3MgYW5kIC93aW5kb3dzL3N5c3RlbSAKICAgICAgICAgIGRpcmVjdG9yaWVzIGluIG9yZGVyIHRvIHJ1biwgYW5kIHVubGVzcyB0aGVzZSBleGlzdCBvbiB5b3VyIFVOSVggCiAgICAgICAgICBmaWxlIHN5c3RlbSwgdGhvc2UgcHJvZ3JhbXMgd2lsbCBub3QgaW5zdGFsbCBjb3JyZWN0bHkgYW5kIHByb2JhYmx5CiAgICAgICAgICB3aWxsIG5vdCBydW4gd2VsbCwgaWYgYXQgYWxsLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHlvdSBoYXZlIGEgRE9TIHBhcnRpdGlvbiB3aXRoIE1TIFdpbmRvd3MgaW5zdGFsbGVkIGluIGl0LCBtYWtlCiAgICAgICAgICBzdXJlIHRoYXQgeW91ciBVTklYIHN5c3RlbSBjYW4gJ3NlZScgdGhpcyBwYXJ0aXRpb24gKGNoZWNrIHlvdXIgCiAgICAgICAgICAvZXRjL2ZzdGFiIGZpbGUgb3IgbW91bnQgdGhlIHBhcnRpdGlvbiBtYW51YWxseSkgc28gdGhhdCBXaW5lIGNhbgogICAgICAgICAgcnVuIHRoZSBNUyBXaW5kb3dzIGJpbmFyaWVzIGxvY2F0ZWQgaW4gdGhlIERPUyBwYXJ0aXRpb24uIFRvIHJ1bgogICAgICAgICAgd2l0aG91dCBhIERPUyBwYXJ0aXRpb24sIHlvdSBuZWVkIHRvIHNldCBhIFVOSVggcGF0aCB0byBiZSB5b3VyIAogICAgICAgICAgZHJpdmUgQywgYW5kIG1ha2Ugc3VyZSB0aGF0IHRoZSAvd2luZG93cyBhbmQgL3dpbmRvd3Mvc3lzdGVtIAogICAgICAgICAgZGlyZWN0b3JpZXMgcG9pbnQgdG8gc29tZSBwbGFjZSB0aGF0IGFjdHVhbGx5IGV4aXN0LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEhlcmUncyBhbiBleGFtcGxlLCBjb3BpZWQgZnJvbSBhIG1hY2hpbmUgd2hpY2ggaGFzIG5vIERPUyBwYXJ0aXRpb24KICAgICAgICAgIGJ1dCBzdWNjZXNzZnVsbHkgcnVucyBXaW5lOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgogICAgW0RyaXZlIENdICAgICAgCiAgICAgICAgICBQYXRoPS92YXIvbGliL3dpbmUKICAgICAgICAgIFR5cGU9aGQKICAgICAgICAgIExhYmVsPU1TLURPUwogICAgICAgICAgRmlsZXN5c3RlbT13aW45NQogICAgW3dpbmVdCiAgICAgICAgICBXaW5kb3dzPWM6XHdpbmRvd3MKICAgICAgICAgIFN5c3RlbT1jOlx3aW5kb3dzXHN5c3RlbQogICAgICAgICAgVGVtcD1lOlwKICAgICAgICAgIFBhdGg9Yzpcd2luZG93cztjOlx3aW5kb3dzXHN5c3RlbTtjOgogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICBJbiA8ZmlsZW5hbWU+L3Zhci9saWIvd2luZS93aW5kb3dzPC9maWxlbmFtZT4sIHlvdSB3aWxsIG5lZWQgdG8KICAgICAgICAgaW5zdGFsbCBhIDxmaWxlbmFtZT53aW4uaW5pPC9maWxlbmFtZT4gY29uZmlnIGZpbGUgdGhhdCB5b3UgbWlnaHQKICAgICAgICAgZmluZCBvbiBhIHR5cGljYWwgTVMgV2luZG93cyAzLjEgbWFjaGluZS4gVGhlIGRpcmVjdG9yeQogICAgICAgICA8ZmlsZW5hbWU+L3Zhci9saWIvd2luZS93aW5kb3dzL3N5c3RlbTwvZmlsZW5hbWU+IHNob3VsZCBleGlzdCwgYnV0CiAgICAgICAgIGRvZXNuJ3QgbmVlZCB0byBjb250YWluIGFueXRoaW5nLiBIb3dldmVyLCB0byB1c2UgTVMgRExMcywgeW91IGNhbgogICAgICAgICBjb3B5IHRoZW0gaW50byB0aGF0IGRpcmVjdG9yeS4gTm90ZSB0aGF0IHRoaXMgaXMgYSBjb250cmF2ZW50aW9uIG9mCiAgICAgICAgIHRoZSBXaW5kb3dzIGxpY2VuY2UgdW5sZXNzIFdpbmRvd3MgaXMgcHJvcGVybHkgaW5zdGFsbGVkIG9uIHRoZQogICAgICAgICBtYWNoaW5lLiBJZiB5b3UgaGF2ZSBET1MvTVMgV2luZG93cyBpbnN0YWxsZWQgb24geW91ciBzeXN0ZW0sIHlvdSBjYW4KICAgICAgICAgbW91bnQgdGhhdCBwYXJ0aXRpb24gYXQgYm9vdHVwIGJ5IG1vZGlmeWluZyB0aGUgZmlsZSAKICAgICAgICAgPGZpbGVuYW1lPi9ldGMvZnN0YWI8L2ZpbGVuYW1lPiBpbiB5b3VyIFVOSVggcGFydGl0aW9uIChhc3N1bWluZyB0aGF0CiAgICAgICAgIHRoZSBVTklYIGtlcm5lbCBzdXBwb3J0cyB0aGUgRE9TL01TIFdpbmRvd3MgZmlsZXN5c3RlbSB0eXBlKS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UgZWRpdCB0aGlzIGZpbGUgYnkgaGFuZCwgaXQgc2hvdWxkIGNvbnRhaW4gc29tZXRoaW5nIHNpbWlsYXIKICAgICAgICAgIHRvIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+Ci9kZXYvaGRhMSAvZG9zYyBtc2RvcyB1aWQ9MCxnaWQ9MTAwLHVtYXNrPTAwNyAwIDAKICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoaXMgd2lsbCBhbGxvdyB5b3UgdG8gcmVhZCBhbmQgd3JpdGUgdG8gdGhlIERPUyBwYXJ0aXRpb24gd2l0aG91dAogICAgICAgICAgYmVpbmcgcm9vdC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSWYtV2luZS1jb21wbGV0ZWx5LXJlcGxhY2VzLU1TLVdpbmRvd3MiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgV2luZSBjb21wbGV0ZWx5IHJlcGxhY2VzIE1TIFdpbmRvd3MsIHdpbGwgaXQgZHVwbGljYXRlIGFsbCBvZiB0aGUKICAgICAgICAgIGZ1bmN0aW9ucyBvZiBNUyBXaW5kb3dzPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE1vc3Qgb2YgdGhlbSwgeWVzLiBIb3dldmVyLCBzb21lIGFwcGxpY2F0aW9ucyBhbmQgYXBwbGV0cyB0aGF0IGNvbWUKICAgICAgICAgIHdpdGggTVMgV2luZG93cywgc3VjaCBhcyBGaWxlIE1hbmFnZXIgYW5kIENhbGN1bGF0b3IsIGNhbiBiZSAKICAgICAgICAgIGNvbnNpZGVyZWQgYnkgc29tZSB0byBiZSByZWR1bmRhbnQsIHNpbmNlIDMyLWJpdCBVTklYIHByb2dyYW1zIHRoYXQKICAgICAgICAgIGR1cGxpY2F0ZSB0aGVzZSBhcHBsZXRzJyBmdW5jdGlvbnMgYWxyZWFkeSBleGlzdC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaWxsLUktaW5zdGFsbC1vbi1vbnktVU5JWC1maWxlLXN5c3RlbSI+CiAgICAgICAgPHBhcmE+IAogICAgICAgICAgV2lsbCBJIGJlIGFibGUgdG8gaW5zdGFsbCBNUyBXaW5kb3dzIGFwcGxpY2F0aW9ucyBpbiBhbnkgZmxhdm9yIG9mIGEKICAgICAgICAgIFVOSVggZmlsZSBzeXN0ZW0/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBpcyB3cml0dGVuIHRvIGJlIGZpbGUgc3lzdGVtIGluZGVwZW5kZW50LCBzbyBNUyBXaW5kb3dzIAogICAgICAgICAgYXBwbGljYXRpb25zIHdpbGwgaW5zdGFsbCBhbmQgcnVuIHVuZGVyIHZpcnR1YWxseSBhbnkgZmlsZSBzeXN0ZW0KICAgICAgICAgIHN1cHBvcnRlZCBieSB5b3VyIGJyYW5kIG9mIFVOSVguCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldpbGwtV2luZS1ydW4tb25seS11bmRlci1YIj4KICAgICAgICA8cGFyYT5XaWxsIFdpbmUgcnVuIG9ubHkgdW5kZXIgWCwgb3IgY2FuIGl0IHJ1biBpbiBjaGFyYWN0ZXIgbW9kZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBNb3N0IG9mIFdpbmUncyBkZXZlbG9wbWVudCBlZmZvcnQgaXMgZ2VhcmVkIGFnYWluc3QgTVMgV2luZG93cycgR1VJLAogICAgICAgICAgYnV0IHNvbWUgbGltaXRlZCBzdXBwb3J0IGZvciBjaGFyYWN0ZXIgbW9kZSBoYXMgYXBwZWFyZWQsIGJ5IHNldHRpbmcKICAgICAgICAgIDxwYXJhbWV0ZXI+R3JhcGhpY3NEcml2ZXI9dHR5ZHJ2PC9wYXJhbWV0ZXI+IGluIHdpbmUuY29uZidzCiAgICAgICAgICA8cGFyYW1ldGVyPlt3aW5lXTwvcGFyYW1ldGVyPiBzZWN0aW9uLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUncyBpbmZyYXN0cnVjdHVyZSBpcyBhbHJlYWR5IHNvbWV3aGF0IHByZXBhcmVkIGZvciBzdXBwb3J0aW5nCiAgICAgICAgICBvdGhlciBncmFwaGljcyBkcml2ZXJzIHRoYW4geDExZHJ2LCBidXQgbm8gcmVhbCAiYWx0ZXJuYXRpdmUiIAogICAgICAgICAgZ3JhcGhpY3MgZHJpdmVyIGhhcyBiZWVuIGRldmVsb3BwZWQgeWV0LgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KIAogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaWxsLVdpbmUtcnVuLXVuZGVyLWFueS1YLXdpbmRvdy1tYW5hZ2VyIj4KICAgICAgICA8cGFyYT5XaWxsIFdpbmUgcnVuIHVuZGVyIGFueSBYIHdpbmRvdyBtYW5hZ2VyPyBEb2VzIGl0IHJlcXVpcmUgYSB3aW5kb3cgbWFuYWdlciBhdCBhbGw/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBpcyB3aW5kb3cgbWFuYWdlciBpbmRlcGVuZGVudCwgc28gdGhlIFggd2luZG93IG1hbmFnZXIgeW91CiAgICAgICAgICBjaG9vc2UgdG8gcnVuIGhhcyAoYWxtb3N0KSBubyBiZWFyaW5nIG9uIHlvdXIgYWJpbGl0eSB0byBydW4gTVMKICAgICAgICAgIFdpbmRvd3MgcHJvZ3JhbXMgdW5kZXIgV2luZS4gV2luZSB1c2VzIHN0YW5kYXJkIFggbGlicmFyaWVzLCBzbyBubwogICAgICAgICAgYWRkaXRpb25hbCBvbmVzIGFyZSBuZWVkZWQuIFdpbmUgaGFzIGl0cyBvd24gd2luZG93IG1hbmFnZW1lbnQsCiAgICAgICAgICB3aGljaCBhY3RzIGxpa2UgTVMgV2luZG93cy4gSXQgY2FuIGJlIHR1cm5lZCBvZmYgdG8gdXNlIHRoZSBuYXRpdmUKICAgICAgICAgIHdpbmRvdyBtYW5hZ2VyIGJ5IG1vZGlmeWluZyBNYW5hZ2VkIG9yIERlc2t0b3Agc2V0dGluZ3MgYXMgZGVzY3JpYmVkCiAgICAgICAgICBpbiA8Y29tbWFuZD5tYW4gd2luZS5jb25mPC9jb21tYW5kPi4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaWxsLTMyLWJpdC1hcHBsaWNhdGlvbnMtcnVuLXVuZGVyLVdpbmUiPgogICAgICAgIDxwYXJhPldpbGwgMzItYml0IFdpbmRvd3MgOTUvOTggYXBwbGljYXRpb25zIHJ1biB1bmRlciBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFllcywgMzItYml0IHByb2dyYW1zIGFyZSBub3cgYWJvdXQgYXMgd2VsbCBzdXBwb3J0ZWQgYXMgMTYtYml0IAogICAgICAgICAgIHByb2dyYW1zLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgICAgCiAgICA8L3FhbmRhZGl2PgogICAgPHFhbmRhZGl2IGlkPSJGQVEtR2V0dGluZy1XaW5lIj4KICAgICAgPHRpdGxlPkdldHRpbmcgV2luZTwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoZXJlLWNhbi1JLWdldC1XaW5lIj4KICAgICAgICA8cGFyYT5XaGVyZSBjYW4gSSBnZXQgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBCZWNhdXNlIG9mIGxhZ3MgY3JlYXRlZCBieSB1c2luZyBtaXJyb3IsIHdvcmQgb2YgdGhpcyBuZXdlc3QgcmVsZWFzZQogICAgICAgICAgbWF5IHJlYWNoIHlvdSBiZWZvcmUgdGhlIHJlbGVhc2UgaXMgYWN0dWFsbHkgYXZhaWxhYmxlIGF0IHRoZSBmdHAKICAgICAgICAgIHNpdGVzIGxpc3RlZCBoZXJlLiBUaGUgc291cmNlcyBhcmUgYXZhaWxhYmxlIGZyb20gdGhlIGZvbGxvd2luZwogICAgICAgICAgbG9jYXRpb25zOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LmliaWJsaW8ub3JnL3B1Yi9MaW51eC9BTFBIQS93aW5lL2RldmVsb3BtZW50LyI+CiAgICAgICAgICAgICAgIGh0dHA6Ly93d3cuaWJpYmxpby5vcmcvcHViL0xpbnV4L0FMUEhBL3dpbmUvZGV2ZWxvcG1lbnQvCiAgICAgICAgICAgICAgPC91bGluaz4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgPHVsaW5rIHVybD0iZnRwOi8vZnRwLmluZm9tYWdpYy5jb20vcHViL21pcnJvcnMvbGludXgvc3Vuc2l0ZS9BTFBIQS93aW5lL2RldmVsb3BtZW50LyI+CiAgICAgICAgICAgICAgZnRwOi8vZnRwLmluZm9tYWdpYy5jb20vcHViL21pcnJvcnMvbGludXgvc3Vuc2l0ZS9BTFBIQS93aW5lL2RldmVsb3BtZW50LyAKICAgICAgICAgICAgICA8L3VsaW5rPgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgoKICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgPHVsaW5rIHVybD0iZnRwOi8vZnRwLmZ1LWJlcmxpbi5kZS91bml4L2xpbnV4L21pcnJvcnMvc3Vuc2l0ZS51bmMuZWR1L0FMUEhBL3dpbmUvZGV2ZWxvcG1lbnQvIj4KICAgICAgICAgICAgICBmdHA6Ly9mdHAuZnUtYmVybGluLmRlL3VuaXgvbGludXgvbWlycm9ycy9zdW5zaXRlLnVuYy5lZHUvQUxQSEEvd2luZS9kZXZlbG9wbWVudC8gCiAgICAgICAgICAgICAgPC91bGluaz4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KCiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIDx1bGluayB1cmw9ImZ0cDovL29yY3VzLnByb2dzb2MudXRzLmVkdS5hdS9wdWIvV2luZS9kZXZlbG9wbWVudC8iPgogICAgICAgICAgICAgIGZ0cDovL29yY3VzLnByb2dzb2MudXRzLmVkdS5hdS9wdWIvV2luZS9kZXZlbG9wbWVudC8gCiAgICAgICAgICAgICAgPC91bGluaz4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KCiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJdCBzaG91bGQgYWxzbyBiZSBhdmFpbGFibGUgZnJvbSBhbnkgb3RoZXIgc2l0ZSB0aGF0IG1pcnJvcnMgCiAgICAgICAgICBpYmlibGlvLm9yZy4gRm9yIG1vcmUgZG93bmxvYWQgbG9jYXRpb25zLCBzZWUgCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vZnRwIHNlYXJjaC5seWNvcy5jb20uIj5seWNvczwvdWxpbms+IFNvbWUgb2YKICAgICAgICAgIHRoZXNlIGZ0cCBzaXRlcyBtYXkgYXJjaGl2ZSBwcmV2aW91cyB2ZXJzaW9ucyBvZiBXaW5lIGFzIHdlbGwgYXMgdGhlCiAgICAgICAgICBjdXJyZW50IG9uZS4gVG8gZGV0ZXJtaW5lIHdoaWNoIGlzIHRoZSBsYXRlc3Qgb25lLCBsb29rIGF0IHRoZSAKICAgICAgICAgIGRpc3RyaWJ1dGlvbiBmaWxlIG5hbWUsIHdoaWNoIHdpbGwgdGFrZSB0aGUgZm9ybSAKICAgICAgICAgIFdpbmUtWVlZWU1NREQudGFyLmd6LiBTaW1wbHkgcmVwbGFjZSBZWVlZTU1ERCBpbiB0aGUgZGlzdHJpYnV0aW9uCiAgICAgICAgICBmaWxlIG5hbWUgd2l0aCB0aGUgbnVtYmVycyBmb3IgeWVhciwgbW9udGggYW5kIGRhdGUsIHJlc3BlY3RpdmVseS4KICAgICAgICAgIFRoZSBsYXRlc3Qgb25lIGlzIHRoZSBvbmUgdG8gZ2V0LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgYmluYXJ5IHBhY2thZ2VzIGFyZSBhdmFpbGFibGUgZm9yIHNldmVyYWwgT1MnZXMgYW5kIAogICAgICAgICAgZGlzdHJpYnV0aW9ucy4gU2VlIAogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEuY29tL2Rvd25sb2FkLnNodG1sIj4KICAgICAgICAgIHRoZSBkb3dubG9hZCBwYWdlPC91bGluaz4gZm9yIHRoZSBtb3N0IHJlY2VudCBsaXN0LgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IklzLXRoZXJlLWEtQ1ZTLXRyZWUiPgogICAgICAgIDxwYXJhPklzIHRoZXJlIGEgQ1ZTIHRyZWU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQ3VycmVudCBXaW5lIHNvdXJjZXMgYXJlIGFsc28gYXZhaWxhYmxlIHZpYSBhbm9ueW1vdXMgY2xpZW50L3NlcnZlcgogICAgICAgICAgQ1ZTLiBZb3Ugd2lsbCBuZWVkIENWUyAxLjkgb3IgYWJvdmUuIElmIHlvdSBhcmUgY29taW5nIGZyb20gYmVoaW5kIGEKICAgICAgICAgIGZpcmV3YWxsLCB5b3Ugd2lsbCBlaXRoZXIgbmVlZCBhIGhvbGUgaW4gdGhlIGZpcmV3YWxsIGZvciB0aGUgQ1ZTCiAgICAgICAgICBwb3J0ICgyNDAxKSBvciB1c2UgU09DS1MuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVG8gbG9naW4gdG8gdGhlIENWUyB0cmVlLCBkbwogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgpleHBvcnQgQ1ZTUk9PVD06cHNlcnZlcjpjdnNAY3ZzLndpbmVocS5jb20vaG9tZS93aW5lCmN2cyBsb2dpbgogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVXNlICJjdnMiIGFzIHRoZSBwYXNzd29yZCAod2l0aG91dCB0aGUgcXVvdGVzKS4gTm90ZSB0aGF0IAogICAgICAgICAgPGZpbGVuYW1lPi9ob21lL3dpbmU8L2ZpbGVuYW1lPiBpcyBhIHBhdGggb24gdGhlIHNlcnZlciwgbm90IG9uIHlvdXIKICAgICAgICAgIG1hY2hpbmUuIFRvIGNoZWNrIG91dCB0aGUgZW50aXJlIFdpbmUgc291cmNlIHRyZWUgKHdoaWNoIG1heSBiZSAKICAgICAgICAgIHNsb3cpLCB1c2UKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KY3ZzIC16IDMgY2hlY2tvdXQgd2luZSAKICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIG9yIGlmIHlvdSBqdXN0IHdhbnQgYSBzdWJ0cmVlLCBvciBpbmRpdmlkdWFsIGZpbGUsIHlvdSBjYW4gZG8gdGhhdCAKICAgICAgICAgIHRvbyB3aXRoCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+CmN2cyAteiAzIGNoZWNrb3V0IHdpbmUvQU5OT1VOQ0UgCiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBCZSBhd2FyZSwgdGhvdWdoLCB0aGF0IGdldHRpbmcgdGhlIGVudGlyZSBXaW5lIHNvdXJjZSB0cmVlIHZpYSBDVlMKICAgICAgICAgIGlzIHByZXR0eSBzbG93LCBlc3BlY2lhbGx5IGNvbXBhcmVkIHRvIGdldHRpbmcgV2luZSBmcm9tIGFuIEZUUCAKICAgICAgICAgIG1pcnJvciBuZWFyIHlvdS4gRm9yIGEgQ1ZTIG1pcnJvciBsaXN0LCBzZWUgCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5jb20vZGV2LnNodG1sIj4KICAgICAgICAgIGh0dHA6Ly93d3cud2luZWhxLmNvbS9kZXYuc2h0bWw8L3VsaW5rPgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFBhdGNoIGZpbGVzIGFyZSBhbHNvIGF2YWlsYWJsZSwgc28gdGhhdCB5b3UgZG9uJ3QgaGF2ZSB0byBkb3dubG9hZCwKICAgICAgICAgIGluc3RhbGwsIGFuZCBjb25maWd1cmUgdGhlIGVudGlyZSBkaXN0cmlidXRpb24gZWFjaCB3ZWVrIGlmIHlvdSBhcmUKICAgICAgICAgIGN1cnJlbnQgdG8gdGhlIHByZXZpb3VzIHJlbGVhc2UuIFBhdGNoIGZpbGUgcmVsZWFzZSBuYW1lcyBmb2xsb3cgdGhlCiAgICAgICAgICBzYW1lIG51bWJlcmluZyBjb252ZW50aW9uIGFzIGRvIHRoZSBnZW5lcmFsIHJlbGVhc2VzLCBhbmQgdGFrZSB0aGUgCiAgICAgICAgICBmb3JtCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZS1ZWVlZTU1ERC5kaWZmLmd6ICAKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBQYXRjaCBmaWxlcyBhcmUgYXZhaWxhYmxlIGZyb20gdGhlIHNhbWUgc2l0ZXMgdGhhdCBkaXN0cmlidXRlIHRoZQogICAgICAgICAgZnVsbCByZWxlYXNlLiBUbyB1cGdyYWRlIHRvIGEgbmV3IHJlbGVhc2UgYnkgdXNpbmcgYSBwYXRjaCBmaWxlLAogICAgICAgICAgZmlyc3QgY2QgdG8gdGhlIHRvcC1sZXZlbCBkaXJlY3Rvcnkgb2YgdGhlIHJlbGVhc2UgKHRoZSBvbmUKICAgICAgICAgIGNvbnRhaW5pbmcgdGhlIFJFQURNRSBmaWxlKSwgdGhlbiBkbyBhICJtYWtlIGNsZWFuIiwgYW5kIHBhdGNoIHRoZQogICAgICAgICAgcmVsZWFzZSB3aXRoCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+Cmd1bnppcCAtYyBwYXRjaC1maWxlIHwgcGF0Y2ggLXAxIAogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgd2hlcmUgcGF0Y2gtZmlsZSBpcyB0aGUgbmFtZSBvZiB0aGUgcGF0Y2ggZmlsZSBzb21ldGhpbmcgbGlrZQogICAgICAgICAgV2luZS1ZWVlZTU1ERC5kaWZmLmd6LiBZb3UgY2FuIHRoZW4gcmUtcnVuIC4vY29uZmlndXJlLCBhbmQgdGhlbiBydW4KICAgICAgICAgIG1ha2UgZGVwZW5kICYmIG1ha2UKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UgYXJlIG1pcnJvcmluZyB0aGUgV2luZSBkaXN0cmlidXRpb24gZnJvbSB0aGUgdHN4LTExIHNpdGUgYW5kCiAgICAgICAgICB3aXNoIHRvIGJlIGxpc3RlZCBoZXJlIGluIHRoaXMgRkFRLCBwbGVhc2UgYWRkIGl0IHRvIHRoZSAKICAgICAgICAgICJ0aGluZ3MgdG8gZ28gaW50byB0aGUgZG9jdW1lbnRhdGlvbiIgYXJlYS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJDYW4tSS1nZXQtV2luZS11c2luZy1jdnN1cCI+CiAgICAgICAgPHBhcmE+Q2FuIEkgZ2V0IFdpbmUgdXNpbmcgY3ZzdXA/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIENWUyBtaXJyb3JzIGRvbid0IG9mZmVyIGN2c3VwIHN1cHBvcnQgeWV0LCBidXQgdGhlIG1haW4gc2VydmVyCiAgICAgICAgICBkb2VzLiBVc2UgYSA8ZmlsZW5hbWU+d2luZS5zdXA8L2ZpbGVuYW1lPiBmaWxlIG9mOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgoqZGVmYXVsdCBob3N0PWN2cy53aW5laHEuY29tCipkZWZhdWx0IGJhc2U9L2N2cwoqZGVmYXVsdCBwcmVmaXg9L2N2cy93aW5lCipkZWZhdWx0IHJlbGVhc2U9d2luZQoqZGVmYXVsdCBkZWxldGUgCgojIElmIHlvdXIgbmV0d29yayBsaW5rIGlzIGEgVDEgb3IgZmFzdGVyLCBjb21tZW50IG91dCB0aGUgZm9sbG93aW5nIGxpbmUuCiMqZGVmYXVsdCBjb21wcmVzcyAKCipkZWZhdWx0IHVzZS1yZWwtc3VmZml4IAp3aW5lIAogICAgICAgIDwvc2NyZWVuPgogICAgIDwvYW5zd2VyPgogICAgIDwvcWFuZGFlbnRyeT4KICAgIDwvcWFuZGFkaXY+CgogICAgPHFhbmRhZGl2IGlkPSJJbnN0YWxsaW5nLUFuZC1Db25maWd1cmluZy1XaW5lIj4KICAgICAgPHRpdGxlPkluc3RhbGxpbmcgQW5kIENvbmZpZ3VyaW5nIFdpbmU8L3RpdGxlPgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctZG8tSS1jb21waWxlLXRoZS1XaW5lLXNvdXJjZS1jb2RlIj4KICAgICAgICA8cGFyYT5Ib3cgZG8gSSBjb21waWxlIHRoZSBXaW5lIGRpc3RyaWJ1dGlvbiBzb3VyY2UgY29kZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBTZWUgdGhlIFJFQURNRSAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEuY29tL3NvdXJjZS9SRUFETUUiPmh0dHA6Ly93d3cud2luZWhxLmNvbS9zb3VyY2UvUkVBRE1FPC91bGluaz4pIGZvciBpbnN0cnVjdGlvbnMuCiAgICAgICAgICBBZGRpdGlvbmFsbHksIHlvdSBtYXkgd2FudCB0byBzZXQgdGhlIDxwYXJhbWV0ZXI+VE1QRElSPC9wYXJhbWV0ZXI+CiAgICAgICAgICBlbnZpcm9ubWVudCB2YXJpYWJsZSA8Y29tbWFuZD5UTVBESVI9fi90bXA8L2NvbW1hbmQ+IG9yCiAgICAgICAgICA8Y29tbWFuZD5UTVBESVI9L3RtcDwvY29tbWFuZD4gKGlmIHlvdSBhcmUgcm9vdCkuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWRvLUktaW5zdGFsbC1XaW5kb3dzLWluLVdpbmUiPgogICAgICAgIDxwYXJhPkhvdyBkbyBJIGluc3RhbGwgV2luZG93cyBpbiBXaW5lIHVuZGVyIExpbnV4PzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFNpbXBsZSBhbnN3ZXI6IHlvdSBDQU4nVC4gV2luZG93cyBkZW1hbmRzIGRpcmVjdCBhY2Nlc3MgdG8gdGhlCiAgICAgICAgICBoYXJkd2FyZSBhbmQgY2Fubm90IGdldCBpdCB3aXRoIFdpbmUgYW5kIFVOSVggaW4gdGhlIHdheQogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgc3VwcG9zZWQgdG8gYmUgdXNlZCBXSVRIT1VUIFdpbmRvd3MgcHJpbWFyaWx5LiBJZiB5b3Ugd2FudAogICAgICAgICAgdG8gdXNlIGEgV2luZG93cyBpbnN0YWxsYXRpb24sIHRoZW4gdXNlIGFuIGV4aXN0aW5nIGluc3RhbGxhdGlvbiAKICAgICAgICAgIGFsb25nc2lkZSB0aGUgVU5JWCBpbnN0YWxsYXRpb24gKHNlZSB0aGUgZHVhbC1ib290IEhPV1RPIGZvciB5b3VyIE9TCiAgICAgICAgICBmb3IgbW9yZSBkZXRhaWxzKS4gT3IgYWx0ZXJuYXRpdmVseSB1c2UgdGhlIGNhYmV4dHJhY3QgdXRpbGl0eSB0bwogICAgICAgICAgZXh0cmFjdCBXaW5kb3dzIGluc3RhbGwgYXJjaGl2ZXMgdG8gYSBkaXJlY3RvcnkgdGhhdCB5b3Ugd2FudCB0byB1c2UKICAgICAgICAgIGFzIFdpbmUncyBXaW5kb3dzIHRyZWUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWRvLUktY29uZmlndXJlLVdpbmUtdG8tcnVuLW9uLW15LXN5c3RlbSI+CiAgICAgICAgPHBhcmE+SG93IGRvIEkgY29uZmlndXJlIFdpbmUgdG8gcnVuIG9uIG15IHN5c3RlbT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIHJlcXVpcmVzIHRoYXQgeW91IGhhdmUgYSBjb25maWcgZmlsZSBhcyAKICAgICAgICAgIDxmaWxlbmFtZT5+Ly53aW5lL2NvbmZpZzwvZmlsZW5hbWU+LiBUaGUgZm9ybWF0IG9mIHRoaXMgZmlsZSBpcwogICAgICAgICAgZXhwbGFpbmVkIGluIHRoZSA8ZmlsZW5hbWU+d2luZS5jb25mPC9maWxlbmFtZT4gbWFuIHBhZ2UuIFRoZSBmaWxlCiAgICAgICAgICA8ZmlsZW5hbWU+ZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzwvZmlsZW5hbWU+CiAgICAgICAgICAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEuY29tL3NvdXJjZS9kb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnIj4KICAgICAgICAgIGh0dHA6Ly93d3cud2luZWhxLmNvbS9zb3VyY2UvZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzwvdWxpbms+KSAKICAgICAgICAgIGNvbnRhaW5zIGEgY29uZmlnIGZpbGUgZXhhbXBsZS4gTW9yZSBleHBsaWNpdCBkaXJlY3Rpb25zIGNhbiBiZSAKICAgICAgICAgIGZvdW5kIGluIHRoZSA8ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT4gZmlsZQogICAgICAgICAgKDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLmNvbS9zb3VyY2UvUkVBRE1FIj4KICAgICAgICAgIGh0dHA6Ly93d3cud2luZWhxLmNvbS9zb3VyY2UvUkVBRE1FPC91bGluaz4pIHRoYXQgd2lsbCBiZSBsb2NhdGVkIGluCiAgICAgICAgICB0aGUgYmFzZSBXaW5lIGRpcmVjdG9yeSBhZnRlciB5b3UgZ3VuemlwIGFuZCB1bnRhciB0aGUgZGlzdHJpYnV0aW9uCiAgICAgICAgICBmaWxlLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy1kby1JLXVwZ3JhZGUtY29uZmlndXJhdGlvbiI+CiAgICAgICAgPHBhcmE+SG93IGRvIEkgdXBncmFkZSBXaW5lIHdpdGhvdXQgbG9zaW5nIG15IHdvcmtpbmcgY29uZmlndXJhdGlvbj88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBVcGdyYWRpbmcgdGhlIHdpbmUgaW5zdGFsbGF0aW9uIGRvZXMgbm90IGFmZmVjdCB0aGUgZXhpc3Rpbmcgd2luZQogICAgICAgICAgY29uZmlndXJhdGlvbi4gU28gYWZ0ZXIgdXBncmFkaW5nIHdpbmUgeW91IHN0aWxsIGhhdmUgdGhlIG9sZCAod29ya2luZyApCiAgICAgICAgICB3aW5lIGNvbmZpZ3VyYXRpb24uCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSWYtSS11c2UtV2luZG93cy13aGljaC12ZXJzaW9ucy1PSyI+CiAgICAgICAgPHBhcmE+SWYgSSB3YW50IHRvIHVzZSBhIFdpbmRvd3MgaW5zdGFsbCwgd2hpY2ggdmVyc2lvbnMgYXJlIE9LPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEVpdGhlciB1c2UgYSBjbGFzc2ljIG5vLXdpbmRvd3MgaW5zdGFsbCAoV2luZSBpcyBnZXR0ZXIgYmV0dGVyIGFsbAogICAgICAgICAgdGhlIHRpbWUpIG9yIHVzZSBhIFdpbjl4IGluc3RhbGwgKFdpbjk1LCA5OCwgOThTRSwgTUUpLiBET04nVCAKICAgICAgICAgIGNvbmZpZ3VyZSBXaW5lIHRvIHVzZSBhbiBOVC1iYXNlZCBXaW5kb3dzIGluc3RhbGwgKE5ULCBXaW4ySywgV2luWFApLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IklmLUktdXNlLVdpbmRvd3Mtd2hpY2gtb25lLXdvcmtzLWJlc3QiPgogICAgICAgIDxwYXJhPklmIEkgdXNlIGEgV2luZG93cyBpbnN0YWxsIHdpdGggV2luZSwgd2hpY2ggb25lIHdvcmtzIGJlc3Q/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQXMgb2YgMDIvMjAwMjoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJJ2Qgc2F5IFdpbjk4U0UgaXMgdGhlIGJlc3QgdmVyc2lvbiB0byB1c2Ugd2l0aCBXaW5lLCBhcyBpdCdzIGZhaXJseQogICAgICAgICAgd2lkZXNwcmVhZCBhbW9uZ3N0IGRldmVsb3BlcnMgYW5kIHJlbGF0aXZlbHkgb2xkLiBVc2luZyBXaW4ySyBmaWxlcwogICAgICAgICAgaXMgPGVtcGhhc2lzPmRlZmluaXRlbHk8L2VtcGhhc2lzPiB3b3JzZSB0aGFuIGEgcGxhaW4gbm8td2luZG93cyAKICAgICAgICAgIFdpbmUgaW5zdGFsbCwgYW5kIFdpbiBNRSBpcyBzYWlkIHRvIGJlIHByb2JsZW1hdGljLCB0b28gKGFzIHByb2JhYmx5CiAgICAgICAgICBubyBkZXZlbG9wZXIgdXNlcyBpdCkuIEluIHNob3J0OiBhbGwgV2luOXggJmx0Oz0gVzk4U0UgYXJlIGdvb2QuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSW5zdGFsbGluZy1WaXN1YWwtQmFzaWMtYXBwcy13b250LXJ1biI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJbnN0YWxsaW5nIGFwcGxpY2F0aW9ucyBnZW5lcmF0ZWQgYnkgVmlzdWFsIEJhc2ljIHdvbid0IHJ1bi4gV2hhdAogICAgICAgICAgc2hvdWxkIEkgZG8/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTWFrZSBzdXJlIHlvdSBoYXZlIGFsbCB0aGUgVkIgcnVudGltZSBsaWJyYXJpZXMgaW5zdGFsbGVkLiBZb3UgbWF5CiAgICAgICAgICBuZWVkIHRvIHVzZSB0aGUgbmF0aXZlIERMTCB2YnJ1bjYwLmRsbAogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoZW4tSS1jbGljay1vbi1leGUtZmlsZS1ub3RoaW5nLWhhcHBlbnMiPgogICAgICAgIDxwYXJhPldoZW4gSSBjbGljayBvbiAqLmV4ZSBmaWxlIGluIG15IGZpbGUgTWFuYWdlciwgbm90aGluZyBoYXBwZW5zPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIG5vcm1hbCBXaW5lIHJlbGVhc2VzIGRvbid0IGhhdmUgLmV4ZSBleHRlbnNpb25zIHJlZ2lzdGVyZWQgZm9yCiAgICAgICAgICBXaW5lIGluIEtERS9Hbm9tZSB5ZXQuIFlvdSBoYXZlIHRvIG9wZW4gYSB0ZXJtaW5hbCB3aW5kb3cgaW5zdGVhZAogICAgICAgICAgKG9mdGVuIGFuIGljb24gc2hvd2luZyBhICJibGFjayBzY3JlZW4iKSBhbmQgdHlwZSBzb21ldGhpbmcgbGlrZToKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KY2QgL215L3dpbmRvd3MvcHJvZ3JhbS9kaXJlY3RvcnkKd2luZSBteXByb2dyYW0uZXhlCiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBPciBhbHRlcm5hdGl2ZWx5IHlvdSBjb3VsZCBkb3dubG9hZCB0aGUgQ29kZVdlYXZlcnMgV2luZSBwcmV2aWV3IAogICAgICAgICAgd2hpY2ggaW5jbHVkZXMgLmV4ZSBleHRlbnNpb24gcmVnaXN0cmF0aW9uIGZvciBLREUvR25vbWUgYW5kIGEgbmljZQogICAgICAgICAgc2V0dXAgcHJvZ3JhbS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJiYXNoLXdpbmUtQ29tbWFuZC1ub3QtZm91bmQtV2hhdC1jYW4tSS1kbyI+CiAgICAgICAgPHBhcmE+YmFzaCAid2luZTogQ29tbWFuZCBub3QgZm91bmQiIFdoYXQgY2FuIEkgZG8/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVHJ5IHRvIHJlbG9naW4gaW50byBiYXNoLiBUaGF0IG1pZ2h0IGZpeCBpdC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiBpdCBkb2Vzbid0LCB0aGVuIG1ha2Ugc3VyZSB0aGUgd2luZSBiaW5hcnkgaXMgaW4geW91ciAKICAgICAgICAgIDxwYXJhbWV0ZXI+UEFUSDwvcGFyYW1ldGVyPi4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBSdW4gYXMgcm9vdDoKICAgICAgICA8L1BhcmE+CiAgICAgICAgPHNjcmVlbj4KZmluZCAvIC1uYW1lICJ3aW5lIiAtdHlwZSBmIC1wZXJtICsxMTEKICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIHRvIGZpbmQgdGhlIHBhdGggd2hlcmUgdGhlIHdpbmUgYmluYXJ5IGlzIGluLiBUaGVuIGNoZWNrIHdoZXRoZXIKICAgICAgICA8cGFyYW1ldGVyPlBBVEg8L3BhcmFtZXRlcj4gaW5jbHVkZXMgaXQ6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+CmVjaG8gJFBBVEggCiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiBub3QsIGFkZCB0aGF0IGUuZy4gdG8gPGZpbGVuYW1lPi9ldGMvcHJvZmlsZTwvZmlsZW5hbWU+IGJ5IGRvaW5nOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgpleHBvcnQgUEFUSD0kUEFUSDovcGF0aC90by93aW5lL2JpbmFyeSAKICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoYXQgc2hvdWxkIGhlbHAuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgIElmIHlvdSB1c2VkIGEgcGFja2FnZSBtYW5hZ2VyICg8Y29tbWFuZD5ycG08L2NvbW1hbmQ+IG9yIAogICAgICAgICAgIDxjb21tYW5kPmFwdDwvY29tbWFuZD4pIC0gVmVyaWZ5IHlvdXIgcGFja2FnZXMuIFRoZSBwYWNrYWdlIAogICAgICAgICAgIDxmaWxlbmFtZT53aW5lc2V0dXB0ay5ycG08L2ZpbGVuYW1lPiBpcyBvbmx5IGEgZnJvbnQtZW5kIGZvciAKICAgICAgICAgICBtYWtpbmcgYSBtZWFuaW5nZnVsbCBjb25maWcgZmlsZSwgaXQgRE9FUyBOT1QgaW5zdGFsbCB0aGUgd2luZQogICAgICAgICAgIHBhY2thZ2UuLi4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICAgRm9yIGNvbXBsZXRlIHBhY2thZ2VzLCB1c2UgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5ycG1maW5kLm5ldC8iPgogICAgICAgICAgIHd3dy5ycG1maW5kLm5ldDwvdWxpbms+IG9yIHRoZSA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvZG93bmxvYWQvIj4KICAgICAgICAgICBEb3dubG9hZDwvdWxpbms+IHNlY3Rpb24uCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWRvLUktcmVtb3ZlLVdpbmUtZnJvbS1teS1Db21wdXRlciI+CiAgICAgICAgPHBhcmE+SG93IGRvIEkgcmVtb3ZlIFdpbmUgZnJvbSBteSBDb21wdXRlcj88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBBbGwgeW91IGhhdmUgdG8gZG8gaXMgdG8gdHlwZToKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4Kcm0gLWZSIFxbL3BhdGgvXF1XaW5lKgogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTWFrZSBzdXJlIHRoYXQgeW91IHNwZWNpZnkgdGhlIGV4YWN0IHBhdGggd2hlbiB1c2luZyB0aGUgcG93ZXJmdWwKICAgICAgICAgIDxjb21tYW5kPnJtIC1mUjwvY29tbWFuZD4gY29tbWFuZC4gSWYgeW91IGFyZSBhZnJhaWQgdGhhdCB5b3UgbWlnaHQKICAgICAgICAgIGRlbGV0ZSBzb21ldGhpbmcgaW1wb3J0YW50LCBvciBtaWdodCBvdGhlcndpc2UgZGVsZXRlIG90aGVyIGZpbGVzIAogICAgICAgICAgd2l0aGluIHlvdXIgZmlsZXN5c3RlbSwgPGNvbW1hbmQ+Y2Q8L2NvbW1hbmQ+IGludG8gZWFjaCBXaW5lIAogICAgICAgICAgc3ViZGlyZWN0b3J5IHNpbmdseSBhbmQgZGVsZXRlIHRoZSBmaWxlcyBmb3VuZCB0aGVyZSBtYW51YWxseSwgCiAgICAgICAgICBvbmUgZmlsZSBvciBkaXJlY3RvcnkgYXQgYSB0aW1lLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICBOZWl0aGVyIHRoZSBXaW5lIGRldmVsb3BlcnMgYW5kIHByb2dyYW1tZXJzLCBub3IgdGhlIFdpbmUgRkFRIAogICAgICAgIGF1dGhvci9tYWludGFpbmVyLCBjYW4gYmUgaGVsZCByZXNwb25zaWJsZSBmb3IgeW91ciBkZWxldGluZyBhbnkKICAgICAgICBmaWxlcyBpbiB5b3VyIG93biBmaWxlc3lzdGVtLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgIDwvcWFuZGFkaXY+CgogICAgPHFhbmRhZGl2IGlkPSJBYm91dC1ydW5uaW5nLVdpbmUiPgogICAgICA8dGl0bGU+QWJvdXQgcnVubmluZyBXaW5lPC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWRvLUktcnVuLWFuLU1TLVdpbmRvd3MtcHJvZ3JhbSI+CiAgICAgICAgPHBhcmE+SG93IGRvIEkgcnVuIGFuIE1TIFdpbmRvd3MgcHJvZ3JhbSB1bmRlciBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdoZW4gaW52b2tpbmcgV2luZSwgeW91IG11c3Qgc3BlY2lmeSB0aGUgZW50aXJlIHBhdGggdG8gdGhlCiAgICAgICAgICBleGVjdXRhYmxlLCBvciBieSBmaWxlbmFtZSBvbmx5LiBGb3IgZXhhbXBsZSB0byBydW4gV2luZG93cycKICAgICAgICAgIHNvbGl0YWlyZSwgdHlwZSBhbnkgb2YgdGhlIGZvbGxvd2luZzoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8Y29tbWFuZD53aW5lIHNvbDwvY29tbWFuZD4gb3IgPGNvbW1hbmQ+d2luZSBzb2wuZXhlPC9jb21tYW5kPgogICAgICAgICAgICh1c2luZyB0aGUgc2VhcmNoIHBhdGggdG8gbG9jYXRlIHRoZSBmaWxlKS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPGNvbW1hbmQ+d2luZSBjOlxcd2luZG93c1xcc29sLmV4ZTwvY29tbWFuZD4gCiAgICAgICAgICAgKHVzaW5nIGEgRE9TIGZpbGVuYW1lKS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPGNvbW1hbmQ+d2luZSAvdXNyL3dpbmRvd3Mvc29sLmV4ZTwvY29tbWFuZD4KICAgICAgICAgICAodXNpbmcgYSBVTklYIGZpbGVuYW1lKS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPGNvbW1hbmQ+d2luZSAiYzpcd2luZG93c1xzb2wuZXhlIjwvY29tbWFuZD4KICAgICAgICAgICAgKHVzaW5nIHF1b3RlZCBET1MgZmlsZW5hbWUpLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBwYXRoIG9mIHRoZSBmaWxlIHdpbGwgYWxzbyBiZSBhZGRlZCB0byB0aGUgcGF0aCB3aGVuIGEgZnVsbCBuYW1lCiAgICAgICAgICBpcyBzdXBwbGllZCBvbiB0aGUgY29tbWFuZCBsaW5lLgoKICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaW5lLWNhbm5vdC1maW5kLU1TLVdpbmRvd3Mtb24tbXktZHJpdmUiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSBoYXZlIGluc3RhbGxlZCBhbmQgY29uZmlndXJlZCBXaW5lLCBidXQgV2luZSBjYW5ub3QgZmluZCBNUyAKICAgICAgICAgIFdpbmRvd3Mgb24gbXkgZHJpdmUuIFdoZXJlIGRpZCBJIGdvIHdyb25nPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHlvdSBoYXZlIGEgRE9TIHBhcnRpdGlvbiwgZmlyc3QgbWFrZSBzdXJlIHRoYXQgeW91IGhhdmUgbW91bnRlZAogICAgICAgICAgaXQsIGVpdGhlciBieSBwdXR0aW5nIHRoZSBlbnRyeSBpbnRvIDxmaWxlbmFtZT4vZXRjL2ZzdGFiPC9maWxlbmFtZT4sCiAgICAgICAgICBvciBieSBtYW51YWxseSBtb3VudGluZyBpdC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBSZW1lbWJlciB0b28gdGhhdCB1bmxlc3MgeW91ciB2ZXJzaW9uIG9mIFVOSVggY2FuIHNlZSB0aHJvdWdoIGl0LCBvcgogICAgICAgICAgeW91IGFyZSBydW5uaW5nIGEgdXRpbGl0eSB0aGF0IGNhbiBzZWUgdGhyb3VnaCBpdCwgeW91ciBET1MKICAgICAgICAgIHBhcnRpdGlvbiBtdXN0IG5vdCBiZSBsb2NhdGVkIG9uIGEgRHJpdmVzcGFjZWQsIERvdWJsZXNwYWNlZCBvcgogICAgICAgICAgU3RhY2tlcmVkIHBhcnRpdGlvbiwgYXMgbmVpdGhlciBMaW51eCwgRnJlZUJTRCwgTmV0QlNEIG9yIFdpbmUgY2FuCiAgICAgICAgICBuYXRpdmVseSAnc2VlJyBmaWxlcyBsb2NhdGVkIGluIHRoZXNlIGNvbXByZXNzZWQgRE9TIHBhcnRpdGlvbnMuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQ2hlY2sgeW91ciBwYXRoIHN0YXRlbWVudHMgaW4gdGhlIDxmaWxlbmFtZT53aW5lLmNvbmY8L2ZpbGVuYW1lPiAKICAgICAgICAgIGZpbGUuIE5vIGNhcGl0YWwgbGV0dGVycyBtYXkgYmUgdXNlZCBpbiBwYXRocywgYXMgdGhleSBhcmUgCiAgICAgICAgICBhdXRvbWF0aWNhbGx5IGNvbnZlcnRlZCB0byBsb3dlcmNhc2UuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iUGFydHMtb2YtbXktYXBwLWRvLW5vdC13b3JrLVdoYXQtaXMtd3JvbmciPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSB3YXMgYWJsZSB0byBnZXQgdmFyaW91cyBNUyBXaW5kb3dzIHByb2dyYW1zIHRvIHJ1biwgYnV0IHBhcnRzIG9mCiAgICAgICAgICB0aGVtIGRvIG5vdCB3b3JrLiBXaGF0IGlzIHdyb25nPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgbm90IGNvbXBsZXRlIGF0IHRoaXMgdGltZSwgc28gc29tZSBvZiBlYWNoIHByb2dyYW1zJyAKICAgICAgICAgIGZlYXR1cmVzIG1heSBub3Qgd29yay4gVGhleSB3aWxsIGluIHRpbWUgYXMgbW9yZSBvZiB0aGUgTVMgCiAgICAgICAgICBXaW5kb3dzIEFQSSBjYWxscyBhcmUgaW5jbHVkZWQgaW4gV2luZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJNZW51cy1kby1ub3Qtd29yay1ob3ctY2FuLUktZXhpdCI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJIGhhdmUgcnVuIHZhcmlvdXMgTVMgV2luZG93cyBwcm9ncmFtcywgYnV0IHNpbmNlIHRoZSBwcm9ncmFtIG1lbnVzCiAgICAgICAgICBkbyBub3Qgd29yaywgaG93IGNhbiBJIGV4aXQgdGhlc2UgcHJvZ3JhbXM/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgS2lsbCB0aGUgeHRlcm0gc2hlbGwgd2luZG93IHRoYXQgeW91IGNhbGxlZCB1cCB0byBydW4geW91ciBNUyAKICAgICAgICAgIFdpbmRvd3MgcHJvZ3JhbSwgYW5kIHRoZSBYIHdpbmRvdyB0aGF0IGFwcGVhcmVkIHdpdGggdGhlIHByb2dyYW0gCiAgICAgICAgICB3aWxsIGJlIGtpbGxlZCB0b28uCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iQ2FuLUktdXNlLVdpbmUtd2l0aC1vdGhlci1MaW51eC1EaXN0cm9zIj4KICAgICAgICA8cGFyYT5DYW4gSSB1c2UgV2luZSB3aXRoIFN1U2UsIFBlYW51dCBvciBvdGhlciBMaW51eCBEaXN0cm8ncz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZb3UgY2FuIHVzZSBXaW5lIG9uIGFueSBzdWZmaWNpZW50bHkgcmVjZW50IExpbnV4IGluc3RhbGxhdGlvbi4gVGhlCiAgICAgICAgICBhbW91bnQgb2Ygd29yayBnZXR0aW5nIFdpbmUgdXAgYW5kIHJ1bm5pbmcgZGVwZW5kcyBvbiB3aGV0aGVyIHRoZXJlCiAgICAgICAgICBhcmUgcHJvcGVyIHBhY2thZ2VzIGF2YWlsYWJsZSBvciBhIHNvdXJjZSBjb21waWxlIGhhcyB0byBiZSBkb25lLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkRvZXMtV2luZS13b3JrLXdpdGgtQU1ELVByb2Nlc3NvcnMiPgogICAgICAgIDxwYXJhPkRvZXMgV2luZSB3b3JrIHdpdGggQU1EIFByb2Nlc3NvcnM/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWWVzLCBpdCBkb2VzLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJDYW4tSS1sYXVuY2gtVW5peC1hcHAtZnJvbS1XaW5kb3dzLWFwcCI+CiAgICAgICAgPHBhcmE+IENhbiBJIGxhdW5jaCBhIFVuaXggcHJvZ3JhbSBmcm9tIGEgV2luZG93cyBwcm9ncmFtPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFN1cmUsIFdpbmUgc3VwcG9ydHMgdGhhdC4gSnVzdCBlbnRlciB0aGUgdW5peCBwcm9ncmFtIG5hbWUgd2hlcmV2ZXIKICAgICAgICAgIGEgcHJvZ3JhbSBoYXMgc29tZXRoaW5nIHRoYXQgaXQncyBzdXBwb3NlZCB0byBleGVjdXRlLGFuZCB0aGVuIGl0IAogICAgICAgICAgc2hvdWxkIGp1c3Qgd29yay4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkVycm9yLXdpdGgtaW5zdGFsbHNoaWVsZC02Ij4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEkgZ2V0IDxxdW90ZT5FcnJvciBpbnN0YWxsaW5nIGlLZXJuZWwuZXhlOiAoMHgxNDAwKTwvcXVvdGU+CiAgICAgICAgICB3aGVuIHJ1bm5pbmcgYW4gSW5zdGFsbHNoaWVsZCA2IGluc3RhbGxlcgogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHlvdSBnZXQgdGhlIGVycm9yICJFcnJvciBpbnN0YWxsaW5nIGlLZXJuZWwuZXhlOiAoMHgxNDAwKSIgYXQgYW55CiAgICAgICAgICBwb2ludCwgaXQncyBwcm9iYWJseSBiZWNhdXNlIHRoZXJlIGFyZSBsZWZ0b3ZlciBwcm9jZXNzZXMgZnJvbSBhCiAgICAgICAgICBwcmV2aW91cyB0cnkuIFlvdSBjYW4gdmVyaWZ5IHRoaXMgd2l0aCB0aGUgY29tbWFuZAogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT48Y29tbWFuZD4kIHBzIGF1Z3h3IHwgZ3JlcCB3aW5lPC9jb21tYW5kPjwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHRoYXQgY29tbWFuZCBzaG93cyBvbGQgY29waWVzIG9mIHdpbmUgcnVubmluZyB5b3VyIHNldHVwLAogICAgICAgICAgeW91IG5lZWQgdG8ga2lsbCB0aGVtIGJlZm9yZSB5b3UgY2FuIHJ1biB0aGUgc2V0dXAgcHJvZ3JhbS4KICAgICAgICAgIElmIHRoZXJlIGFyZSBubyBvdGhlciBXaW5lIHByb2dyYW1zIHJ1bm5pbmcsIHlvdSBjYW4ga2lsbCB0aGVtCiAgICAgICAgICBhbGwgd2l0aCB0aGUgY29tbWFuZAogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT48Y29tbWFuZD4kIGtpbGxhbGwgd2luZTwvY29tbWFuZD48L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UncmUgYWxzbyBydW5uaW5nIFdpbmUgcHJvZ3JhbXMgeW91IGNhcmUgYWJvdXQsIHlvdSdsbAogICAgICAgICAgaGF2ZSB0byBraWxsIG9mZiB0aGUgb2xkIFNldHVwIGluc3RhbmNlcyBvbmUgYnkgb25lIHVzaW5nCiAgICAgICAgICBraWxsIGFuZCB0aGUgaW5kaXZpZHVhbCBQSURzIChvciBwZXJoYXBzIFdpbmUncyBzcGlmZnkgVGFzayBNYW5hZ2VyLAogICAgICAgICAgd2hpY2ggZG9lc24ndCBleGlzdCB5ZXQpLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFlvdSBzaG91bGQgcmVwZWF0IHRoZSA8Y29tbWFuZD5wczwvY29tbWFuZD4gdG8gbWFrZSBzdXJlIHRoZSBvbGQgCiAgICAgICAgICB3aW5lcyBhcmUgZ29uZS4gCiAgICAgICAgPC9wYXJhPgogICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgIDwvcWFuZGFkaXY+CiAgICAgCiAgICA8cWFuZGFkaXYgaWQ9IkdldHRpbmctaGVscCI+CiAgICAgIDx0aXRsZT5HZXR0aW5nIGhlbHA8L3RpdGxlPgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJcy10aGVyZS1hbnktZG9jdW1lbnRhdGlvbi1mb3ItV2luZSI+CiAgICAgICAgPHBhcmE+SXMgdGhlcmUgYW55IGRvY3VtZW50YXRpb24gZm9yIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWWVzLCBzZWUgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL3N1cHBvcnQuc2h0bWwiPgogICAgICAgICAgaHR0cDovL3d3dy53aW5laHEuY29tL3N1cHBvcnQuc2h0bWwuPC91bGluaz4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJLWhhdmUtd3JpdHRlbi1zb21lLWRvY3VtZW50ZW50YXRpb24iPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSBjb3VsZG4ndCBmaW5kIHRoZSBhbnN3ZXIgdG8gbXkgcXVlc3Rpb24gaW4gdGhlIGRvY3VtZW50YXRpb24sIGJ1dAogICAgICAgICAgSSd2ZSB3cml0dGVuIGEgZG9jdW1lbnQgZXhwbGFpbmluZyBob3cgdG8gc29sdmUgaXQuIFdoYXQgc2hvdWxkIEkgZG8/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVXBkYXRlcyBhbmQgYWRkaXRpb25zIHRvIHRoZSBXaW5lIGRvY3VtZW50YXRpb24gZGlyZWN0b3J5IHNob3VsZCBiZQogICAgICAgICAgc2VudCB0byB0aGUgd2luZS1wYXRjaGVzIG1haWxpbmcgbGlzdCBhdCAKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLmNvbS9kZXYuc2h0bWwjbWwiPgogICAgICAgICAgaHR0cDovL3d3dy53aW5laHEuY29tL2Rldi5zaHRtbCNtbDwvdWxpbms+LiBXZWJzaXRlIGFuZCBGQVEgCiAgICAgICAgICBhZGRpdGlvbnMgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBhcHByb3ByaWF0ZSBXaW5lIEtub3dsZWRnZWJhc2UKICAgICAgICAgIGRpcmVjdG9yeS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJcy10aGVyZS1hLVVzZW5ldC1uZXdzZ3JvdXAtZm9yLVdpbmUiPgogICAgICAgIDxwYXJhPklzIHRoZXJlIGEgVXNlbmV0IG5ld3Nncm91cCBmb3IgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZZXMsIGFuZCBpdCdzIGNhbGxlZCAKICAgICAgICAgIDx1bGluayB1cmw9Im5ld3M6Y29tcC5lbXVsYXRvcnMubXMtd2luZG93cy53aW5lIj4KICAgICAgICAgIGNvbXAuZW11bGF0b3JzLm1zLXdpbmRvd3Mud2luZTwvdWxpbms+LiBUaGUgbmV3c2dyb3VwIHNlcnZlcyBhcyBhCiAgICAgICAgICBwbGFjZSBmb3IgdXNlcnMgYW5kIGRldmVsb3BlcnMgdG8gZGlzY3VzcyBXaW5lLCBhbmQgZm9yIG1pbm9yIAogICAgICAgICAgYW5ub3VuY2VtZW50cyBmb3IgdGhlIGdlbmVyYWwgcHVibGljLiBNYWpvciBhbm5vdW5jZW1lbnRzIHdpbGwgYmUKICAgICAgICAgIGNyb3NzcG9zdGVkIHRvIG90aGVyIGFwcHJvcHJpYXRlIG5ld3Nncm91cHMsIHN1Y2ggYXMgdGhlIGZvbGxvd2luZzoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8dWxpbmsgdXJsPSJuZXdzOmNvbXAub3MubGludXguYW5ub3VuY2UiPgogICAgICAgICAgICBjb21wLm9zLmxpbnV4LmFubm91bmNlPC91bGluaz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHVsaW5rIHVybD0ibmV3czpjY29tcC53aW5kb3dzLnguYW5ub3VuY2UiPgogICAgICAgICAgICBjb21wLndpbmRvd3MueC5hbm5vdW5jZTwvdWxpbms+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDx1bGluayB1cmw9Im5ld3M6Y2NvbXAuZW11bGF0b3JzLmFubm91bmNlIj4KICAgICAgICAgICAgY29tcC5lbXVsYXRvcnMuYW5ub3VuY2U8L3VsaW5rPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHlvdXIgVXNlbmV0IHNpdGUgZG9lcyBub3QgY2FycnkgdGhlc2UgbmV3c2dyb3VwcywgcGxlYXNlIHVyZ2UgCiAgICAgICAgICB5b3VyIElTUCdzIHN5c2FkbWluIHRvIGFkZCBhbmQvb3IgdXBsaW5rIHRoZW0uCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSXMtdGhlcmUtYS1Xb3JsZC1XaWRlLVdlYi1zaXRlLWZvci1XaW5lIj4KICAgICAgICA8cGFyYT5JcyB0aGVyZSBhIFdvcmxkIFdpZGUgV2ViIHNpdGUgZm9yIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBIUSAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEuY29tIj5odHRwOi8vd3d3LndpbmVocS5jb208L3VsaW5rPikgaXMgdGhlIG9mZmljaWFsIHNpdGUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSXMtdGhlcmUtYW4tSVJDLWNoYW5uZWwtZm9yLVdpbmUiPgogICAgICAgIDxwYXJhPklzIHRoZXJlIGFuIElSQyBjaGFubmVsIGZvciBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFN1cmUuIEl0J3MgY2hhbm5lbCA8ZmlsZW5hbWU+I1dpbmVIUTwvZmlsZW5hbWU+IG9uIAogICAgICAgICAgPGZpbGVuYW1lPmlyYy5mcmVlbm9kZS5uZXQ8L2ZpbGVuYW1lPiBzZWUgCiAgICAgICAgICAoPHVsaW5rIHVybD0iaHR0cDovL2ZyZWVub2RlLm5ldCI+aHR0cDovL2ZyZWVub2RlLm5ldDwvdWxpbms+KS4KICAgICAgICAgIFVzdWFsbHkgc2V2ZXJhbCBXaW5lIGRldmVsb3BlcnMgaGFuZyBvdXQgdGhlcmUganVzdCB0byBoZWxwIFlPVSA7LSkKICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJLXRoaW5rLUktZm91bmQtYS1idWctSG93LWRvLUktcmVwb3J0LWl0Ij4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEkgdGhpbmsgSSd2ZSBmb3VuZCBhIGJ1Zy4gSG93IGRvIEkgcmVwb3J0IHRoaXMgYnVnIHRvIHRoZSBXaW5lCiAgICAgICAgICBwcm9ncmFtbWluZyB0ZWFtPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEJ1ZyByZXBvcnRzIHNob3VsZCBiZSBzdWJtaXR0ZWQgdG8gb3VyIG9ubGluZSBCdWd6aWxsYSBzeXN0ZW0gCiAgICAgICAgICAoPHVsaW5rIHVybD0iaHR0cDovL2J1Z3Mud2luZWhxLmNvbSI+aHR0cDovL2J1Z3Mud2luZWhxLmNvbS88L3VsaW5rPikuCiAgICAgICAgICBZb3Ugc2hvdWxkIGluY2x1ZGUgYXQgbGVhc3QgdGhlIGZvbGxvd2luZzoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGUgV2luZSB2ZXJzaW9uIHRlc3RlZAogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGUgTVMgV2luZG93cyBwcm9ncmFtIG5hbWUgYW5kLCBpZiBwb3NzaWJsZSwgdGhlIHZlcnNpb24gbnVtYmVyIAogICAgICAgICAgICBvZiB0aGUgc29mdHdhcmUgdGVzdGVkCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIEEgYnJpZWYgZGVzY3JpcHRpb24gb2YgdGhlIGJ1ZwogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGUgcmVsZXZhbnQgcGFydChzKSBvZiB0aGUgb3V0cHV0IG9mIHRoZSBXaW5lIGRlYnVnZ2VyCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIEEgc2NyZWVuc2hvdCBvZiB0aGUgdmlzdWFsIHByb2JsZW0sIGlmIGFwcGxpY2FibGUKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgPHBhcmE+CiAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHJlcG9ydGluZyBidWdzIHBsZWFzZSBzZWUgdGhlIAogICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvRG9jcy93aW5lLXVzZXIvYnVnLXJlcG9ydGluZy5zaHRtbCI+CiAgICAgICAgIEhvdyB0byByZXBvcnQgYSBidWc8L3VsaW5rPiBzZWN0aW9uIG9mIHRoZSBXaW5lIFVzZXJzIEd1aWRlLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgIDwvcWFuZGFkaXY+CiAKICAgIDxxYW5kYWRpdiBpZD0iSGVscGluZy1XaW5lLW9yLWJlY29taW5nLWEtV2luZS1kZXZlbG9wZXIiPgogICAgICA8dGl0bGU+SGVscGluZyBXaW5lIG9yIGJlY29taW5nIGEgV2luZSBkZXZlbG9wZXI8L3RpdGxlPgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctZG8tSS1iZWNvbWUtYS1XaW5lLWRldmVsb3BlciI+CiAgICAgICAgPHBhcmE+SG93IGRvIEkgYmVjb21lIGEgV2luZSBkZXZlbG9wZXI/IFdoYXQgZG8gSSBuZWVkIHRvIGtub3c/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgeW91IGNhbiBwcm9ncmFtIEMsIHRoYXQncyBhIGdvb2Qgc3RhcnQuIERvd25sb2FkIHRoZSBzb3VyY2VzIHZpYQogICAgICAgICAgQ1ZTLCBzdWJzY3JpYmUgdG8gdGhlIG1haWxpbmcgbGlzdHMsIGxvb2sgYXJvdW5kIHRoZSBzb3VyY2UsIGFuZCBwYXkKICAgICAgICAgIGF0dGVudGlvbiB0byB0aGUgY29tcC5lbXVsYXRvcnMubXMtd2luZG93cy53aW5lIG5ld3Nncm91cCBhbmQgdGhlIAogICAgICAgICAgbWFpbGluZyBsaXN0cyAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEuY29tL2Rldi5zaHRtbCNtbCI+aHR0cDovL3d3dy53aW5laHEuY29tL2Rldi5zaHRtbCNtbDwvdWxpbms+KS4gU2VlIGlmIHRoZXJlJ3MgYW55dGhpbmcKICAgICAgICAgIHRoYXQgeW91IHRoaW5rIHlvdSBjYW4gZml4IG9yIHdvcmsgb24uIFlvdSB3b24ndCBoYXZlIG11Y2ggdHJvdWJsZQogICAgICAgICAgZmluZGluZyBhcmVhcyB0aGF0IG5lZWQgd29yayBpbiBXaW5lIChncmVwIGZvciBGSVhNRXMgaW4gdGhlIHNvdXJjZSkuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWNhbi1JLWNvbnRyaWJ1dGUtdG8tdGhlLVdpbmUtcHJvamVjdCI+CiAgICAgICAgPHBhcmE+SG93IGNhbiBJIGhlbHAgY29udHJpYnV0ZSB0byB0aGUgV2luZSBwcm9qZWN0LCBhbmQgaW4gd2hhdCB3YXkocyk/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWW91IGNhbiBjb250cmlidXRlIHByb2dyYW1taW5nIG9yIGRvY3VtZW50YXRpb24gc2tpbGxzLCBvciBtb25ldGFyeQogICAgICAgICAgb3IgZXF1aXBtZW50IGRvbmF0aW9ucywgdG8gYWlkIHRoZSBXaW5lIGRldmVsb3BlcnMgaW4gcmVhY2hpbmcgdGhlaXIgCiAgICAgICAgICBnb2Fscy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBGb3IgYSBsaXN0IG9mIGlkZWFzIG9mIGhvdyB5b3UgY2FuIGhlbHAsIHBsZWFzZSBjb25zdWx0IHRoZSAKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLmNvbS9hYm91dC9pbmRleC5waHA/Y29udHJpYiI+CiAgICAgICAgICBXaW5lIGNvbnRyaWIgcGFnZTwvdWxpbms+LgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikktd2FudC10by1oZWxwLWJldGEtdGVzdC1XaW5lIj4KICAgICAgICA8cGFyYT5JIHdhbnQgdG8gaGVscCBiZXRhIHRlc3QgV2luZS4gSG93IGNhbiBJIGRvIHRoaXM/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBzdGlsbCBjb25zaXN0cyBvZiBzb21lIEFscGhhIGNvZGUgYXQgdGhpcyB0aW1lLiBIb3dldmVyLCBhbnlvbmUKICAgICAgICAgIGlzIHdlbGNvbWUgdG8gZG93bmxvYWQgdGhlIGxhdGVzdCB2ZXJzaW9uLCBhbmQgdHJ5IGl0IG91dCBhdCBhbnkKICAgICAgICAgIHRpbWUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSS13cm90ZS1zb21lLWNvZGUtSS13b3VsZC1saWtlLXRvLXN1Ym1pdCI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJIGhhdmUgd3JpdHRlbiBzb21lIGNvZGUgdGhhdCBJIHdvdWxkIGxpa2UgdG8gc3VibWl0IHRvIHRoZSBXaW5lCiAgICAgICAgICBwcm9qZWN0LiBIb3cgZG8gSSBnbyBhYm91dCBkb2luZyB0aGlzPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFBhdGNoZXMgYXJlIGdyZWF0bHkgYXBwcmVjaWF0ZWQgYW5kIHNob3VsZCBiZSBzdWJtaXR0ZWQgdG8gdGhlIAogICAgICAgICAgd2luZS1wYXRjaGVzIG1haWxpbmcgbGlzdCAKICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5jb20vZGV2LnNodG1sI21sIj5odHRwOi8vd3d3LndpbmVocS5jb20vZGV2LnNodG1sI21sPC91bGluaz4pLiBBbHNvIHNlZSB0aGlzIHBhZ2UgZm9yCiAgICAgICAgICBhIGRlc2NyaXB0aW9uIG9mIHdoYXQgaGFwcGVucyB0byBzdWJtaXR0ZWQgcGF0Y2hlcy4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgICA8L3FhbmRhZGl2PgogCiAgICA8cWFuZGFkaXYgaWQ9IkRldmVsb3BpbmctcHJvZ3JhbXMtdXNpbmctV2luZS1XaW5lTGliIj4KICAgICAgPHRpdGxlPkRldmVsb3BpbmcgcHJvZ3JhbXMgdXNpbmcgV2luZS9XaW5lTGliPC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iQ2FuLUktdXNlLVdpbmUtdG8tcG9ydC1XaW4zMi1zb3VyY2VzLXRvLVVuaXgiPgogICAgICAgIDxwYXJhPkNhbiBJIHVzZSBXaW5lIHRvIHBvcnQgbXkgV2luMzIgc291cmNlcyB0byBVbml4PzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoYXQgaXMgdGhlIGlkZWEgb2YgV2luZWxpYi4gUmlnaHQgbm93IHlvdSBtYXkgc3RpbGwgaGF2ZSBzb21lIAogICAgICAgICAgZGlmZmljdWx0aWVzLCBidXQgdGhpcyBpcyBjaGFuZ2luZyBhbGwgdGhlIHRpbWUuIFJlYWQgdGhlIAogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL0RvY3Mvd2luZWxpYi11c2VyLyI+V2luZWxpYiBVc2VyJ3MgR3VpZGU8L3VsaW5rPiBmb3IgaW5mby4KCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaWxsLU1GQy13b3JrLXdpdGgtV2luZS1XaGF0LWRvLUktbmVlZC10by1kbyI+CiAgICAgICAgPHBhcmE+V2lsbCBNRkMgd29yayB3aXRoIFdpbmU/IFdoYXQgZG8gSSBuZWVkIHRvIGRvPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgbm90IGltcGxlbWVudGluZyBhbiBNRkMgcmVwbGFjZW1lbnQgbm9yIGRvZXMgaXQgaW50ZW5kIHRvLgogICAgICAgICAgSG93ZXZlciBpdCBpcyBwb3NzaWJsZSAod2l0aCBhIGxvdCBvZiB3b3JrKSB0byBjb21waWxlIHRoZSBNRkMgZnJvbQogICAgICAgICAgc291cmNlIGFuZCB0aHVzIHByb2R1Y2UgYW4gPGZpbGVuYW1lPm1mYzQyLmRsbC5zbzwvZmlsZW5hbWU+IGxpYnJhcnkuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgUGxlYXNlIHJlZmVyIHRvIHRoZSAKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9Eb2NzL3dpbmVsaWItdXNlci8iPldpbmVsaWIgVXNlcidzIEd1aWRlPC91bGluaz4gZm9yIGhvdyB0byBkbyB0aGlzLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkFyZS10aGVyZS1jb21tZXJjaWFsLWFwcHMtcG9ydGVkLXVzaW5nLVdpbmUiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQXJlIHRoZXJlIGFueSBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucyB3aGljaCBoYXZlIGJlZW4gcG9ydGVkCiAgICAgICAgICB1c2luZyBXaW5lPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEEgZmV3IGV4YW1wbGVzIG9mIGFwcGxpY2F0aW9ucyB1c2luZyBXaW5lbGliOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIENvcmVsJ3MgV29yZFBlcmZlY3QgT2ZmaWNlIFN1aXRlIAogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBBYmlsaXR5IE9mZmljZQogICAgICAgICAgICAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy5hYmlsaXR5LmNvbS9saW51eC9hYmlsaXR5bGludXgucGhwIj5odHRwOi8vd3d3LmFiaWxpdHkuY29tL2xpbnV4L2FiaWxpdHlsaW51eC5waHA8L3VsaW5rPikKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgSUJNJ3MgV2Vic3BoZXJlCiAgICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3N2IuYm91bGRlci5pYm0uY29tL2RsL3N3d3Mvc3d3c2dkZGItcCI+aHR0cDovL3d3dzdiLmJvdWxkZXIuaWJtLmNvbS9kbC9zd3dzL3N3d3NnZGRiLXA8L3VsaW5rPikKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBNYW55IG90aGVyIGltcG9ydGFudCBhcHBsaWNhdGlvbnMgaGF2ZSBhbHJlYWR5IGJlZW4gcG9ydGVkLiAod2UgYXJlCiAgICAgICAgICBzcGVha2luZyBvZiBzZXZlcmFsIHRvcCA1MDAgYXBwbGljYXRpb25zIGhlcmUpCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWNhbi1JLWRldGVjdC1XaW5lIj4KICAgICAgICA8cGFyYT5Ib3cgY2FuIEkgZGV0ZWN0IFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWW91IHJlYWxseSBzaG91bGRuJ3Qgd2FudCB0byBkbyB0aGlzLiBJZiB0aGVyZSdzIGEgcXVpcmsgaW4gV2luZSAKICAgICAgICAgIHlvdSBuZWVkIHRvIHdvcmsgYXJvdW5kLCBpdCdzIG11Y2ggYmV0dGVyIHRvIGZpeCBpdCBpbiBXaW5lIChhZnRlcgogICAgICAgICAgYWxsIHlvdSdyZSBhIGRldmVsb3Blciwgc28geW91IHNob3VsZCBiZSBhYmxlIHRvIGdhdGhlciBlbm91Z2ggaGVscAogICAgICAgICAgYW5kIGtub3dsZWRnZSB0byBmaXggaXQgZm9yIHJlYWwpLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgCiAgICA8L3FhbmRhZGl2PgoKICAgIDxxYW5kYWRpdiBpZD0iV2luZS1IUS1pc3N1ZXMiPgogICAgICA8dGl0bGU+V2luZSBIUSBpc3N1ZXM8L3RpdGxlPgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaHktYXJlLXRoZS1tYWlsbGlzdHMtc2V0LXRvLXJlcGx5LXRvLWF1dGhvciI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaHkgYXJlIHRoZSBtYWlsbGlzdHMgc2V0IHRvIHJlcGx5IHRvIGF1dGhvciwgbm90IHRvIG1haWxpbmcgbGlzdD8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGVyZSBhcmUgdmVyeSB2YWxpZCByZWFzb25zIGZvciBkb2luZyBzby4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctdG8tdW5zdWJzY3JpYmUtZnJvbS10aGUtbWFpbGluZy1saXN0cyI+CiAgICAgICAgPHBhcmE+SG93IHRvIHVuc3Vic2NyaWJlIGZyb20gdGhlIG1haWxpbmcgbGlzdHM/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgUGxlYXNlIHNlZTogPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL2RldmVsb3BtZW50LyNtbCI+aHR0cDovL3d3dy53aW5laHEub3JnL2RldmVsb3BtZW50LyNtbDwvdWxpbms+CiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgIDwvcWFuZGFkaXY+CiAKICA8L3FhbmRhc2V0PgoKPCEtLSBLZWVwIHRoaXMgY29tbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlCkxvY2FsIHZhcmlhYmxlczoKbW9kZTogc2dtbApzZ21sLXBhcmVudC1kb2N1bWVudDooIndpbmUtZGV2ZWwuc2dtbCIgImJvb2siICJwYXJ0IiAiY2hhcHRlciIgIiIpCkVuZDoKLS0+Cg==