LyogTkVWRVIgRVZFUiBlZGl0IHRoaXMgbWFudWFsbHksIGZpeCB0aGUgbWtoZWxwIHNjcmlwdCBpbnN0ZWFkISAqLwojaW5jbHVkZSA8c3RkaW8uaD4Kdm9pZCBodWdlaGVscCh2b2lkKQp7CnB1dHMgKAoiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8gICAgIFxuIgoiICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcXHwgfCAgICBcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfCAgICBcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXyBcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxfX198XFxfX18vfF98IFxcX1xcX19fX198XG4iCiJOQU1FXG4iCiIgICAgIGN1cmwgLSBnZXQgYSBVUkwgd2l0aCBGVFAsIFRFTE5FVCwgTERBUCwgR09QSEVSLCBESUNULCBGSUxFLFxuIgoiICAgICBIVFRQIG9yIEhUVFBTIHN5bnRheC5cbiIKIlxuIgoiU1lOT1BTSVNcbiIKIiAgICAgY3VybCBbb3B0aW9uc10gdXJsXG4iCiJcbiIKIkRFU0NSSVBUSU9OXG4iCiIgICAgIGN1cmwgaXMgYSBjbGllbnQgdG8gZ2V0IGRvY3VtZW50cy9maWxlcyBmcm9tIHNlcnZlcnMsICB1c2luZ1xuIgoiICAgICBhbnkgIG9mICB0aGUgc3VwcG9ydGVkIHByb3RvY29scy4gVGhlIGNvbW1hbmQgaXMgZGVzaWduZWQgdG9cbiIKIiAgICAgd29yayB3aXRob3V0IHVzZXIgaW50ZXJhY3Rpb24gb3IgYW55IGtpbmQgb2YgIGludGVyYWN0aXZpdHkuXG4iCiJcbiIKIiAgICAgY3VybCAgb2ZmZXJzICBhIGJ1c2xvYWQgb2YgdXNlZnVsIHRyaWNrcyBsaWtlIHByb3h5IHN1cHBvcnQsXG4iCiIgICAgIHVzZXIgYXV0aGVudGljYXRpb24sIGZ0cCB1cGxvYWQsICBIVFRQICBwb3N0LCAgU1NMICAoaHR0cHM6KVxuIgoiICAgICBjb25uZWN0aW9ucywgY29va2llcywgZmlsZSB0cmFuc2ZlciByZXN1bWUgYW5kIG1vcmUuXG4iCiJcbiIKIlVSTFxuIgoiICAgICBUaGUgVVJMIHN5bnRheCBpcyBwcm90b2NvbCBkZXBlbmRlbnQuIFlvdSdsbCBmaW5kIGEgZGV0YWlsZWRcbiIKIiAgICAgZGVzY3JpcHRpb24gaW4gUkZDIDIzOTYuXG4iCiJcbiIKIiAgICAgWW91IGNhbiBzcGVjaWZ5IG11bHRpcGxlIFVSTHMgb3IgcGFydHMgb2YgIFVSTHMgIGJ5ICB3cml0aW5nXG4iCiIgICAgIHBhcnQgc2V0cyB3aXRoaW4gYnJhY2VzIGFzIGluOlxuIgoiXG4iCiIgICAgICBodHRwOi8vc2l0ZS57b25lLHR3byx0aHJlZX0uY29tXG4iCiJcbiIKIiAgICAgb3IgIHlvdSBjYW4gZ2V0IHNlcXVlbmNlcyBvZiBhbHBoYW51bWVyaWMgc2VyaWVzIGJ5IHVzaW5nIFtdXG4iCiIgICAgIGFzIGluOlxuIgoiXG4iCiIgICAgICBmdHA6Ly9mdHAubnVtZXJpY2Fscy5jb20vZmlsZVsxLTEwMF0udHh0XG4iCiIgICAgICBmdHA6Ly9mdHAubnVtZXJpY2Fscy5jb20vZmlsZVswMDEtMTAwXS50eHQgICAgKHdpdGggbGVhZGluZ1xuIgoiICAgICB6ZXJvcylcbiIKIiAgICAgIGZ0cDovL2Z0cC5sZXR0ZXJzLmNvbS9maWxlW2Etel0udHh0XG4iCiJcbiIKIiAgICAgSXQgIGlzIHBvc3NpYmxlIHRvIHNwZWNpZnkgdXAgdG8gOSBzZXRzIG9yIHNlcmllcyBmb3IgYSBVUkwsXG4iCiIgICAgIGJ1dCBubyBuZXN0aW5nIGlzIHN1cHBvcnRlZCBhdCB0aGUgbW9tZW50OlxuIgoiXG4iCiIgICAgICBodHRwOi8vd3d3LmFueS5vcmcvYXJjaGl2ZVsxOTk2LTE5OTldL3ZvbK1cbiIKIiAgICAgdW1lWzEtNF1wYXJ0e2EsYixjLGluZGV4fS5odG1sXG4iCiJcbiIKIk9QVElPTlNcbiIKIiAgICAgLWEvLS1hcHBlbmRcbiIKIiAgICAgICAgICAoRlRQKSBXaGVuIHVzZWQgaW4gYSBmdHAgdXBsb2FkLCB0aGlzIHdpbGwgdGVsbCBjdXJsIHRvXG4iCiIgICAgICAgICAgYXBwZW5kIHRvIHRoZSB0YXJnZXQgZmlsZSBpbnN0ZWFkIG9mIG92ZXJ3cml0aW5nIGl0LiBJZlxuIgoiICAgICAgICAgIHRoZSBmaWxlIGRvZXNuJ3QgZXhpc3QsIGl0IHdpbGwgYmUgY3JlYXRlZC5cbiIKIlxuIgoiICAgICAtQS8tLXVzZXItYWdlbnQgPGFnZW50IHN0cmluZz5cbiIKIiAgICAgICAgICAoSFRUUCkgIFNwZWNpZnkgIHRoZSAgVXNlci1BZ2VudCAgc3RyaW5nIHRvIHNlbmQgdG8gdGhlXG4iCiIgICAgICAgICAgSFRUUCBzZXJ2ZXIuIFNvbWUgYmFkbHkgZG9uZSBDR0lzIGZhaWwgaWYgaXRzICBub3QgIHNldFxuIgoiICAgICAgICAgIHRvIFwiTW96aWxsYS80LjBcIi4gIFRvIGVuY29kZSBibGFua3MgaW4gdGhlIHN0cmluZywgc3VyrVxuIgoiICAgICAgICAgIHJvdW5kIHRoZSBzdHJpbmcgd2l0aCBzaW5nbGUgIHF1b3RlICBtYXJrcy4gICBUaGlzICBjYW5cbiIKIiAgICAgICAgICBhbHNvIGJlIHNldCB3aXRoIHRoZSAtSC8tLWhlYWRlciBmbGFnIG9mIGNvdXJzZS5cbiIKIiAgICAgLWIvLS1jb29raWUgPG5hbWU9ZGF0YT5cbiIKIiAgICAgICAgICAoSFRUUCkgUGFzcyB0aGUgZGF0YSB0byB0aGUgSFRUUCBzZXJ2ZXIgYXMgYSBjb29raWUuIEl0XG4iCiIgICAgICAgICAgaXMgc3VwcG9zZWRseSB0aGUgZGF0YSAgcHJldmlvdXNseSAgcmVjZWl2ZWQgIGZyb20gIHRoZVxuIgoiICAgICAgICAgIHNlcnZlciAgaW4gYSBcIlNldC1Db29raWU6XCIgbGluZS4gIFRoZSBkYXRhIHNob3VsZCBiZSBpblxuIgoiICAgICAgICAgIHRoZSBmb3JtYXQgXCJOQU1FMT1WQUxVRTE7IE5BTUUyPVZBTFVFMlwiLlxuIgoiXG4iCiIgICAgICAgICAgSWYgbm8gJz0nIGxldHRlciBpcyB1c2VkIGluIHRoZSBsaW5lLCBpdCBpcyB0cmVhdGVkICBhc1xuIgoiICAgICAgICAgIGEgIGZpbGVuYW1lICB0byAgdXNlICB0byAgcmVhZCBwcmV2aW91c2x5IHN0b3JlZCBjb29raWVcbiIKIiAgICAgICAgICBsaW5lcyBmcm9tLCB3aGljaCBzaG91bGQgYmUgdXNlZCAgaW4gIHRoaXMgIHNlc3Npb24gIGlmXG4iCiIgICAgICAgICAgdGhleSAgbWF0Y2guICBVc2luZyAgdGhpcyAgbWV0aG9kICBhbHNvICBhY3RpdmF0ZXMgIHRoZVxuIgoiICAgICAgICAgIFwiY29va2llIHBhcnNlclwiIHdoaWNoIHdpbGwgbWFrZSAgY3VybCAgcmVjb3JkICBpbmNvbWluZ1xuIgoiICAgICAgICAgIGNvb2tpZXMgdG9vLCB3aGljaCBtYXkgYmUgaGFuZHkgaWYgeW91J3JlIHVzaW5nIHRoaXMgaW5cbiIKIiAgICAgICAgICBjb21iaW5hdGlvbiB3aXRoIHRoZSAgLUwvLS1sb2NhdGlvbiAgb3B0aW9uLiAgVGhlICBmaWxlXG4iCiIgICAgICAgICAgZm9ybWF0IG9mIHRoZSBmaWxlIHRvIHJlYWQgY29va2llcyBmcm9tIHNob3VsZCBiZSBwbGFpblxuIgoiICAgICAgICAgIEhUVFAgaGVhZGVycyBvciB0aGUgbmV0c2NhcGUgY29va2llIGZpbGUgZm9ybWF0LlxuIgoiXG4iCiIgICAgICAgICAgTk9URSB0aGF0IHRoZSBmaWxlIHNwZWNpZmllZCB3aXRoIC1iLy0tY29va2llICBpcyAgb25seVxuIgoiICAgICAgICAgIHVzZWQgIGFzICBpbnB1dC4gTm8gY29va2llcyB3aWxsIGJlIHN0b3JlZCBpbiB0aGUgZmlsZS5cbiIKIiAgICAgICAgICBUbyBzdG9yZSBjb29raWVzLCBzYXZlIHRoZSBIVFRQIGhlYWRlcnMgdG8gYSBmaWxlIHVzaW5nXG4iCiIgICAgICAgICAgLUQvLS1kdW1wLWhlYWRlciFcbiIKIlxuIgoiICAgICAtQi8tLWZ0cC1hc2NpaVxuIgoiICAgICAgICAgIChGVFAvTERBUCkgIFVzZSBBU0NJSSB0cmFuc2ZlciB3aGVuIGdldHRpbmcgYW4gRlRQIGZpbGVcbiIKIiAgICAgICAgICBvciBMREFQIGluZm8uIEZvciBGVFAsIHRoaXMgY2FuICBhbHNvICBiZSAgZW5mb3JjZWQgIGJ5XG4iCiIgICAgICAgICAgdXNpbmcgYW4gVVJMIHRoYXQgZW5kcyB3aXRoIFwiO3R5cGU9QVwiLlxuIgoiXG4iCiIgICAgIC1jLy0tY29udGludWVcbiIKIiAgICAgICAgICBDb250aW51ZS9SZXN1bWUgICBhICAgcHJldmlvdXMgICBmaWxlICAgdHJhbnNmZXIuICBUaGlzXG4iCiIgICAgICAgICAgaW5zdHJ1Y3RzIGN1cmwgdG8gY29udGludWUgYXBwZW5kaW5nIGRhdGEgb24gIHRoZSAgZmlsZVxuIgoiICAgICAgICAgIHdoZXJlICBpdCAgd2FzICBwcmV2aW91c2x5ICBsZWZ0LCBwb3NzaWJseSBiZWNhdXNlIG9mIGFcbiIKIiAgICAgICAgICBicm9rZW4gY29ubmVjdGlvbiB0byB0aGUgc2VydmVyLiBUaGVyZSBtdXN0IGJlIGEgIG5hbWVkXG4iCiIgICAgICAgICAgcGh5c2ljYWwgIGZpbGUgIHRvICBhcHBlbmQgIHRvIGZvciB0aGlzIHRvIHdvcmsuICBOb3RlOlxuIgoiICAgICAgICAgIFVwbG9hZCByZXN1bWUgaXMgZGVwZW5pbmcgb24gYSBjb21tYW5kIG5hbWVkICBTSVpFICBub3RcbiIKIiAgICAgICAgICBhbHdheXMgcHJlc2VudCBpbiBhbGwgZnRwIHNlcnZlcnMhIFVwbG9hZCByZXN1bWUgaXMgZm9yXG4iCiIgICAgICAgICAgRlRQIG9ubHkuICBIVFRQIHJlc3VtZSBpcyBvbmx5IHBvc3NpYmxlICB3aXRoICBIVFRQLzEuMVxuIgoiICAgICAgICAgIG9yIGxhdGVyIHNlcnZlcnMuXG4iCiJcbiIKIiAgICAgLUMvLS1jb250aW51ZS1hdCA8b2Zmc2V0PlxuIgoiICAgICAgICAgIENvbnRpbnVlL1Jlc3VtZSAgYSAgcHJldmlvdXMgZmlsZSB0cmFuc2ZlciBhdCB0aGUgZ2l2ZW5cbiIKIiAgICAgICAgICBvZmZzZXQuIFRoZSBnaXZlbiBvZmZzZXQgaXMgdGhlIGV4YWN0IG51bWJlciAgb2YgIGJ5dGVzXG4iCiIgICAgICAgICAgdGhhdCAgd2lsbCBiZSBza2lwcGVkIGNvdW50ZWQgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZVxuIgoiICAgICAgICAgIHNvdXJjZSBmaWxlIGJlZm9yZSBpdCBpcyB0cmFuc2ZlcmVkIHRvIHRoZSBkZXN0aW5hdGlvbi5cbiIKIiAgICAgICAgICBJZiAgdXNlZCB3aXRoIHVwbG9hZHMsIHRoZSBmdHAgc2VydmVyIGNvbW1hbmQgU0laRSB3aWxsXG4iCiIgICAgICAgICAgbm90IGJlIHVzZWQgYnkgY3VybC4gVXBsb2FkIHJlc3VtZSAgaXMgIGZvciAgRlRQICBvbmx5LlxuIgoiICAgICAgICAgIEhUVFAgIHJlc3VtZSAgaXMgIG9ubHkgIHBvc3NpYmxlIHdpdGggSFRUUC8xLjEgb3IgbGF0ZXJcbiIKIiAgICAgICAgICBzZXJ2ZXJzLlxuIgoiXG4iCiIgICAgIC1kLy0tZGF0YSA8ZGF0YT5cbiIKIiAgICAgICAgICAoSFRUUCkgU2VuZHMgdGhlIHNwZWNpZmllZCBkYXRhIGluIGEgIFBPU1QgIHJlcXVlc3QgIHRvXG4iCiIgICAgICAgICAgdGhlICBIVFRQIHNlcnZlci4gTm90ZSB0aGF0IHRoZSBkYXRhIGlzIHNlbnQgZXhhY3RseSBhc1xuIgoiICAgICAgICAgIHNwZWNpZmllZCAgd2l0aCAgbm8gIGV4dHJhICBwcm9jZXNzaW5nLiAgIFRoZSAgZGF0YSAgaXNcbiIKIiAgICAgICAgICBleHBlY3RlZCAgdG8gIGJlIFwidXJsLWVuY29kZWRcIi4gVGhpcyB3aWxsIGNhdXNlIGN1cmwgdG9cbiIKIiAgICAgICAgICBwYXNzIHRoZSBkYXRhIHRvICB0aGUgIHNlcnZlciAgdXNpbmcgIHRoZSAgY29udGVudC10eXBlXG4iCiIgICAgICAgICAgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkLiBDb21wYXJlIHRvIC1GLlxuIgoiXG4iCiIgICAgICAgICAgSWYgIHlvdSAgc3RhcnQgIHRoZSAgZGF0YSAgd2l0aCAgdGhlIGxldHRlciBALCB0aGUgcmVzdFxuIgoiICAgICAgICAgIHNob3VsZCBiZSBhIGZpbGUgbmFtZSB0byByZWFkIHRoZSBkYXRhIGZyb20sICBvciAgLSAgaWZcbiIKIiAgICAgICAgICB5b3UgIHdhbnQgIGN1cmwgIHRvIHJlYWQgdGhlIGRhdGEgZnJvbSBzdGRpbi4gIFRoZSBjb26tXG4iCiIgICAgICAgICAgdGVudHMgb2YgdGhlIGZpbGUgbXVzdCBhbHJlYWR5IGJlIHVybC1lbmNvZGVkLlxuIgoiXG4iCiIgICAgIC1ELy0tZHVtcC1oZWFkZXIgPGZpbGU+XG4iCiIgICAgICAgICAgKEhUVFAvRlRQKSBXcml0ZSB0aGUgSFRUUCBoZWFkZXJzIHRvIHRoaXMgIGZpbGUuICBXcml0ZVxuIgoiICAgICAgICAgIHRoZSBGVFAgZmlsZSBpbmZvIHRvIHRoaXMgZmlsZSBpZiAtSS8tLWhlYWQgaXMgdXNlZC5cbiIKIlxuIgoiICAgICAgICAgIFRoaXMgIG9wdGlvbiBpcyBoYW5keSB0byB1c2Ugd2hlbiB5b3Ugd2FudCB0byBzdG9yZSB0aGVcbiIKIiAgICAgICAgICBjb29raWVzIHRoYXQgYSBIVFRQIHNpdGUgIHNlbmRzICB0byAgeW91LiAgVGhlICBjb29raWVzXG4iCiIgICAgICAgICAgY291bGQgdGhlbiBiZSByZWFkIGluIGEgc2Vjb25kIGN1cmwgaW52b2tlIGJ5IHVzaW5nIHRoZVxuIgoiICAgICAgICAgIC1iLy0tY29va2llIG9wdGlvbiFcbiIKIlxuIgoiICAgICAtZS8tLXJlZmVyZXIgPFVSTD5cbiIKIiAgICAgICAgICAoSFRUUCkgU2VuZHMgdGhlIFwiUmVmZXJlciBQYWdlXCIgaW5mb3JtYXRpb24gdG8gdGhlIEhUVFBcbiIKIiAgICAgICAgICBzZXJ2ZXIuIFNvbWUgYmFkbHkgZG9uZSBDR0lzIGZhaWwgaWYgaXQncyBub3Qgc2V0LiBUaGlzXG4iCiIgICAgICAgICAgY2FuIGFsc28gYmUgc2V0IHdpdGggdGhlIC1ILy0taGVhZGVyIGZsYWcgb2YgY291cnNlLlxuIgoiXG4iCiIgICAgIC1FLy0tY2VydCA8Y2VydGlmaWNhdGVbOnBhc3N3b3JkXT5cbiIKIiAgICAgICAgICAoSFRUUFMpIFRlbGxzIGN1cmwgdG8gIHVzZSAgdGhlICBzcGVjaWZpZWQgIGNlcnRpZmljYXRlXG4iCiIgICAgICAgICAgZmlsZSAgd2hlbiAgZ2V0dGluZyAgYSBmaWxlIHdpdGggSFRUUFMuIFRoZSBjZXJ0aWZpY2F0ZVxuIgoiICAgICAgICAgIG11c3QgYmUgaW4gUEVNIGZvcm1hdC4gIElmIHRoZSBvcHRpb25hbCBwYXNzd29yZCAgaXNuJ3RcbiIKIiAgICAgICAgICBzcGVjaWZpZWQsIGl0IHdpbGwgYmUgcXVlcmllZCBmb3Igb24gdGhlIHRlcm1pbmFsLiBOb3RlXG4iCiIgICAgICAgICAgdGhhdCB0aGlzIGNlcnRpZmljYXRlIGlzIHRoZSBwcml2YXRlIGtleSBhbmQgIHRoZSAgcHJprVxuIgoiICAgICAgICAgIHZhdGUgY2VydGlmaWNhdGUgY29uY2F0ZW5hdGVkIVxuIgoiXG4iCiIgICAgIC1mLy0tZmFpbFxuIgoiICAgICAgICAgIChIVFRQKSAgRmFpbCAgc2lsZW50bHkgIChubyAgb3V0cHV0ICBhdCAgYWxsKSBvbiBzZXJ2ZXJcbiIKIiAgICAgICAgICBlcnJvcnMuIFRoaXMgaXMgbW9zdGx5IGRvbmUgbGlrZSB0aGlzIHRvIGJldHRlciAgZW5hYmxlXG4iCiIgICAgICAgICAgc2NyaXB0cyAgZXRjICB0byAgYmV0dGVyICBkZWFsIHdpdGggZmFpbGVkIGF0dGVtcHRzLiBJblxuIgoiICAgICAgICAgIG5vcm1hbCBjYXNlcyB3aGVuIGEgSFRUUCBzZXJ2ZXIgZmFpbHMgdG8gZGVsaXZlciBhIGRvY61cbiIKIiAgICAgICAgICB1bWVudCwgIGl0ICByZXR1cm5zICBhICBIVE1MIGRvY3VtZW50IHN0YXRpbmcgc28gKHdoaWNoXG4iCiIgICAgICAgICAgb2Z0ZW4gYWxzbyBkZXNjcmliZXMgd2h5IGFuZCBtb3JlKS4gVGhpcyBmbGFnIHdpbGwgcHJlrVxuIgoiICAgICAgICAgIHZlbnQgIGN1cmwgIGZyb20gIG91dHB1dHRpbmcgIHRoYXQgIGFuZCAgZmFpbCAgc2lsZW50bHlcbiIKIiAgICAgICAgICBpbnN0ZWFkLlxuIgoiXG4iCiIgICAgIC1GLy0tZm9ybSA8bmFtZT1jb250ZW50PlxuIgoiICAgICAgICAgIChIVFRQKSBUaGlzIGxldHMgY3VybCBlbXVsYXRlIGEgZmlsbGVkIGluIGZvcm0gaW4gd2hpY2hcbiIKIiAgICAgICAgICBhICB1c2VyIGhhcyBwcmVzc2VkIHRoZSBzdWJtaXQgYnV0dG9uLiBUaGlzIGNhdXNlcyBjdXJsXG4iCiIgICAgICAgICAgdG8gUE9TVCBkYXRhIHVzaW5nIHRoZSBjb250ZW50LXR5cGUgbXVsdGlwYXJ0L2Zvcm0tZGF0YVxuIgoiICAgICAgICAgIGFjY29yZGluZyAgdG8gUkZDMTg2Ny4gVGhpcyBlbmFibGVzIHVwbG9hZGluZyBvZiBiaW5hcnlcbiIKIiAgICAgICAgICBmaWxlcyBldGMuIFRvIGZvcmNlIHRoZSAnY29udGVudCcgcGFydCB0byBiZSByZWFkICBmcm9tXG4iCiIgICAgICAgICAgYSAgZmlsZSwgIHByZWZpeCB0aGUgZmlsZSBuYW1lIHdpdGggYW4gQCBzaWduLiBFeGFtcGxlLFxuIgoiICAgICAgICAgIHRvIHNlbmQgeW91ciBwYXNzd29yZCBmaWxlIHRvIHRoZSBzZXJ2ZXIsIHdoZXJlICAncGFzc61cbiIKIiAgICAgICAgICB3b3JkJyAgIGlzICAgdGhlICAgbmFtZSAgb2YgIHRoZSAgZm9ybS1maWVsZCAgdG8gIHdoaWNoXG4iCiIgICAgICAgICAgL2V0Yy9wYXNzd2Qgd2lsbCBiZSB0aGUgaW5wdXQ6XG4iCiJcbiIKIiAgICAgICAgICBjdXJsIC1GIHBhc3N3b3JkPUAvZXRjL3Bhc3N3ZCB3d3cubXlwYXNzd29yZHMuY29tXG4iCiIgICAgICAgICAgVG8gcmVhZCB0aGUgZmlsZSdzIGNvbnRlbnQgZnJvbSBzdGRpbiBpbnN0ZWQgb2YgYSBmaWxlLFxuIgoiICAgICAgICAgIHVzZSAtIHdoZXJlIHRoZSBmaWxlIG5hbWUgc2hvdWxkJ3ZlIGJlZW4uXG4iCiJcbiIKIiAgICAgLWgvLS1oZWxwXG4iCiIgICAgICAgICAgVXNhZ2UgaGVscC5cbiIKIlxuIgoiICAgICAtSC8tLWhlYWRlciA8aGVhZGVyPlxuIgoiICAgICAgICAgIChIVFRQKSBFeHRyYSBoZWFkZXIgdG8gdXNlIHdoZW4gZ2V0dGluZyBhIHdlYiBwYWdlLiBZb3VcbiIKIiAgICAgICAgICBtYXkgc3BlY2lmeSBhbnkgbnVtYmVyIG9mIGV4dHJhIGhlYWRlcnMuIE5vdGUgIHRoYXQgIGlmXG4iCiIgICAgICAgICAgeW91ICBzaG91bGQgIGFkZCBhIGN1c3RvbSBoZWFkZXIgdGhhdCBoYXMgdGhlIHNhbWUgbmFtZVxuIgoiICAgICAgICAgIGFzIG9uZSBvZiB0aGUgaW50ZXJuYWwgb25lcyBjdXJsIHdvdWxkIHVzZSwgeW91ciBleHRlcq1cbiIKIiAgICAgICAgICBuYWxseSAgc2V0ICBoZWFkZXIgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIGludGVybmFsXG4iCiIgICAgICAgICAgb25lLiBUaGlzIGFsbG93cyB5b3UgdG8gbWFrZSBldmVuIHRyaWNraWVyICBzdHVmZiAgdGhhblxuIgoiICAgICAgICAgIGN1cmwgIHdvdWxkICBub3JtYWxseSBkby4gWW91IHNob3VsZCBub3QgcmVwbGFjZSBpbnRlcq1cbiIKIiAgICAgICAgICBuYWxseSBzZXQgaGVhZGVycyB3aXRob3V0IGtub3dpbmcgcGVyZmVjdGx5ICB3ZWxsICB3aGF0XG4iCiIgICAgICAgICAgeW91J3JlIGRvaW5nLlxuIgoiXG4iCiIgICAgIC1pLy0taW5jbHVkZVxuIgoiICAgICAgICAgIChIVFRQKSBJbmNsdWRlIHRoZSBIVFRQLWhlYWRlciBpbiB0aGUgb3V0cHV0LiBUaGUgSFRUUC1cbiIKIiAgICAgICAgICBoZWFkZXIgaW5jbHVkZXMgdGhpbmdzIGxpa2Ugc2VydmVyLW5hbWUsICBkYXRlICBvZiAgdGhlXG4iCiIgICAgICAgICAgZG9jdW1lbnQsIEhUVFAtdmVyc2lvbiBhbmQgbW9yZS4uLlxuIgoiXG4iCiIgICAgIC1JLy0taGVhZFxuIgoiICAgICAgICAgIChIVFRQL0ZUUCkgIEZldGNoICB0aGUgIEhUVFAtaGVhZGVyICBvbmx5ISBIVFRQLXNlcnZlcnNcbiIKIiAgICAgICAgICBmZWF0dXJlIHRoZSBjb21tYW5kIEhFQUQgd2hpY2ggdGhpcyB1c2VzIHRvIGdldCBub3RoaW5nXG4iCiIgICAgICAgICAgYnV0ICB0aGUgaGVhZGVyIG9mIGEgZG9jdW1lbnQuIFdoZW4gdXNlZCBvbiBhIEZUUCBmaWxlLFxuIgoiICAgICAgICAgIGN1cmwgZGlzcGxheXMgdGhlIGZpbGUgc2l6ZSBvbmx5LlxuIgoiXG4iCiIgICAgIC1LLy0tY29uZmlnIDxjb25maWcgZmlsZT5cbiIKIiAgICAgICAgICBTcGVjaWZ5IHdoaWNoIGNvbmZpZyBmaWxlIHRvIHJlYWQgY3VybCBhcmd1bWVudHMgIGZyb20uXG4iCiIgICAgICAgICAgVGhlICBjb25maWcgIGZpbGUgIGlzIGEgdGV4dCBmaWxlIGluIHdoaWNoIGNvbW1hbmQgbGluZVxuIgoiICAgICAgICAgIGFyZ3VtZW50cyBjYW4gYmUgd3JpdHRlbiB3aGljaCB0aGVuIHdpbGwgYmUgdXNlZCBhcyAgaWZcbiIKIiAgICAgICAgICB0aGV5ICB3ZXJlICB3cml0dGVuICBvbiB0aGUgYWN0dWFsIGNvbW1hbmQgbGluZS4gSWYgdGhlXG4iCiIgICAgICAgICAgZmlyc3QgY29sdW1uIG9mIGEgY29uZmlnIGxpbmUgaXMgYSAnIycgIGNoYXJhY3RlciwgIHRoZVxuIgoiICAgICAgICAgIHJlc3Qgb2YgdGhlIGxpbmUgd2lsbCBiZSB0cmVhdGVkIGFzIGEgY29tbWVudC5cbiIKIlxuIgoiICAgICAgICAgIFNwZWNpZnkgIHRoZSBmaWxlbmFtZSBhcyAnLScgdG8gbWFrZSBjdXJsIHJlYWQgdGhlIGZpbGVcbiIKIiAgICAgICAgICBmcm9tIHN0ZGluLlxuIgoiXG4iCiIgICAgIC1sLy0tbGlzdC1vbmx5XG4iCiIgICAgICAgICAgKEZUUCkgV2hlbiBsaXN0aW5nIGFuIEZUUCBkaXJlY3RvcnksIHRoaXMgc3dpdGNoIGZvcmNlc1xuIgoiICAgICAgICAgIGEgIG5hbWUtb25seSAgdmlldy4gICBFc3BlY2lhbGx5ICB1c2VmdWwgaWYgeW91IHdhbnQgdG9cbiIKIiAgICAgICAgICBtYWNoaW5lLXBhcnNlIHRoZSBjb250ZW50cyBvZiBhbiAgRlRQICBkaXJlY3RvcnkgIHNpbmNlXG4iCiIgICAgICAgICAgdGhlICBub3JtYWwgIGRpcmVjdG9yeSB2aWV3IGRvZXNuJ3QgdXNlIGEgc3RhbmRhcmQgbG9va1xuIgoiICAgICAgICAgIG9yIGZvcm1hdC5cbiIKIlxuIgoiICAgICAtTC8tLWxvY2F0aW9uXG4iCiIgICAgICAgICAgKEhUVFAvSFRUUFMpIElmIHRoZSBzZXJ2ZXIgcmVwb3J0cyB0aGF0ICB0aGUgIHJlcXVlc3RlZFxuIgoiICAgICAgICAgIHBhZ2UgIGhhcyAgYSAgZGlmZmVyZW50ICBsb2NhdGlvbiAgKGluZGljYXRlZCAgd2l0aCB0aGVcbiIKIiAgICAgICAgICBoZWFkZXIgbGluZSBMb2NhdGlvbjopIHRoaXMgZmxhZyB3aWxsIGxldCBjdXJsICBhdHRlbXB0XG4iCiIgICAgICAgICAgdG8gcmVhdHRlbXB0IHRoZSBnZXQgb24gdGhlIG5ldyBwbGFjZS4gSWYgdXNlZCB0b2dldGhlclxuIgoiICAgICAgICAgIHdpdGggLWkgb3IgLUksIGhlYWRlcnMgZnJvbSBhbGwgcmVxdWVzdGVkIHBhZ2VzIHdpbGwgYmVcbiIKIiAgICAgICAgICBzaG93bi5cbiIKIlxuIgoiICAgICAtbS8tLW1heC10aW1lIDxzZWNvbmRzPlxuIgoiICAgICAgICAgIE1heGltdW0gdGltZSBpbiBzZWNvbmRzIHRoYXQgeW91IGFsbG93IHRoZSB3aG9sZSBvcGVyYa1cbiIKIiAgICAgICAgICB0aW9uIHRvIHRha2UuICBUaGlzIGlzIHVzZWZ1bCBmb3IgcHJldmVudGluZyB5b3VyIGJhdGNoXG4iCiIgICAgICAgICAgam9icyAgZnJvbSAgaGFuZ2luZyAgZm9yICBob3VycyBkdWUgdG8gc2xvdyBuZXR3b3JrcyBvclxuIgoiICAgICAgICAgIGxpbmtzIGdvaW5nIGRvd24uICBUaGlzIGRvZXNuJ3Qgd29yayBwcm9wZXJseSBpbiAgd2luMzJcbiIKIiAgICAgICAgICBzeXN0ZW1zLlxuIgoiXG4iCiIgICAgIC1NLy0tbWFudWFsXG4iCiIgICAgICAgICAgTWFudWFsLiBEaXNwbGF5IHRoZSBodWdlIGhlbHAgdGV4dC5cbiIKIlxuIgoiICAgICAtbi8tLW5ldHJjXG4iCiIgICAgICAgICAgTWFrZXMgIGN1cmwgIHNjYW4gIHRoZSAgLm5ldHJjICBmaWxlIGluIHRoZSB1c2VyJ3MgaG9tZVxuIgoiICAgICAgICAgIGRpcmVjdG9yeSBmb3IgbG9naW4gbmFtZSBhbmQgcGFzc3dvcmQuICBUaGlzICBpcyAgdHlwaa1cbiIKIiAgICAgICAgICBjYWxseSAgdXNlZCAgZm9yICBmdHAgIG9uIHVuaXguIElmIHVzZWQgd2l0aCBodHRwLCBjdXJsXG4iCiIgICAgICAgICAgd2lsbCAgZW5hYmxlICB1c2VyICBhdXRoZW50aWNhdGlvbi4gIFNlZSAgbmV0cmMoNSkgIGZvclxuIgoiICAgICAgICAgIGRldGFpbHMgIG9uICB0aGUgZmlsZSBmb3JtYXQuIEN1cmwgd2lsbCBub3QgY29tcGxhaW4gaWZcbiIKIiAgICAgICAgICB0aGF0IGZpbGUgaGFzbid0IHRoZSByaWdodCBwZXJtaXNzaW9ucyAoaXQgIHNob3VsZCAgbm90XG4iCiIgICAgICAgICAgYmUgIHdvcmxkIG5vciBncm91cCByZWFkYWJsZSkuIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZVxuIgoiICAgICAgICAgIFwiSE9NRVwiIGlzIHVzZWQgdG8gZmluZCB0aGUgaG9tZSBkaXJlY3RvcnkuXG4iCiJcbiIKIiAgICAgICAgICBBIHF1aWNrIGFuZCB2ZXJ5IHNpbXBsZSAgZXhhbXBsZSAgb2YgIGhvdyAgdG8gIHNldHVwICBhXG4iCiIgICAgICAgICAgLm5ldHJjICAgdG8gICBhbGxvdyAgIGN1cmwgICB0byAgIGZ0cCAgdG8gIHRoZSAgbWFjaGluZVxuIgoiICAgICAgICAgIGhvc3QuZG9tYWluLmNvbSB3aXRoIHVzZXIgbmFtZVxuIgoiXG4iCiIgICAgICAgICAgbWFjaGluZSBob3N0LmRvbWFpbi5jb20gbG9naW4gbXlzZWxmIHBhc3N3b3JkIHNlY3JldFxuIgoiXG4iCiIgICAgIC1OLy0tbm8tYnVmZmVyXG4iCiIgICAgICAgICAgRGlzYWJsZXMgdGhlIGJ1ZmZlcmluZyBvZiB0aGUgb3V0cHV0IHN0cmVhbS4gSW4gIG5vcm1hbFxuIgoiICAgICAgICAgIHdvcmsgc2l0dWF0aW9ucywgY3VybCB3aWxsIHVzZSBhIHN0YW5kYXJkIGJ1ZmZlcmVkIG91dK1cbiIKIiAgICAgICAgICBwdXQgc3RyZWFtIHRoYXQgd2lsbCBoYXZlIHRoZSBlZmZlY3QgdGhhdCBpdCB3aWxsICBvdXStXG4iCiIgICAgICAgICAgcHV0ICB0aGUgIGRhdGEgIGluIGNodW5rcywgbm90IG5lY2Vzc2FyaWx5IGV4YWN0bHkgd2hlblxuIgoiICAgICAgICAgIHRoZSBkYXRhIGFycml2ZXMuICBVc2luZyB0aGlzIG9wdGlvbiB3aWxsIGRpc2FibGUgIHRoYXRcbiIKIiAgICAgICAgICBidWZmZXJpbmcuXG4iCiJcbiIKIiAgICAgLW8vLS1vdXRwdXQgPGZpbGU+XG4iCiIgICAgICAgICAgV3JpdGUgIG91dHB1dCAgdG8gIDxmaWxlPiBpbnN0ZWFkIG9mIHN0ZG91dC4gSWYgeW91IGFyZVxuIgoiICAgICAgICAgIHVzaW5nIHt9IG9yIFtdIHRvIGZldGNoIG11bHRpcGxlIGRvY3VtZW50cywgeW91IGNhbiB1c2VcbiIKIiAgICAgICAgICAnIycgIGZvbGxvd2VkIGJ5IGEgbnVtYmVyIGluIHRoZSA8ZmlsZT4gc3BlY2lmaWVyLiBUaGF0XG4iCiIgICAgICAgICAgdmFyaWFibGUgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBjdXJyZW50ICBzdHJpbmcgIGZvclxuIgoiICAgICAgICAgIHRoZSBVUkwgYmVpbmcgZmV0Y2hlZC4gTGlrZSBpbjpcbiIKIlxuIgoiICAgICAgICAgICAgY3VybCBodHRwOi8ve29uZSx0d299LnNpdGUuY29tIC1vIFwiZmlsZV8jMS50eHRcIlxuIgoiXG4iCiIgICAgICAgICAgb3IgdXNlIHNldmVyYWwgdmFyaWFibGVzIGxpa2U6XG4iCiJcbiIKIiAgICAgICAgICAgIGN1cmwgaHR0cDovL3tzaXRlLGhvc3R9Lmhvc3RbMS01XS5jb20gLW8gXCIjMV8jMlwiXG4iCiJcbiIKIiAgICAgLU8vLS1yZW1vdGUtbmFtZVxuIgoiICAgICAgICAgIFdyaXRlIG91dHB1dCB0byBhIGxvY2FsIGZpbGUgbmFtZWQgbGlrZSB0aGUgcmVtb3RlIGZpbGVcbiIKIiAgICAgICAgICB3ZSBnZXQuIChPbmx5IHRoZSBmaWxlIHBhcnQgb2YgdGhlIHJlbW90ZSBmaWxlIGlzIHVzZWQsXG4iCiIgICAgICAgICAgdGhlIHBhdGggaXMgY3V0IG9mZi4pXG4iCiJcbiIKIiAgICAgLVAvLS1mdHBwb3J0IDxhZGRyZXNzPlxuIgoiICAgICAgICAgIChGVFApICBSZXZlcnNlcyAgdGhlIGluaXRpYXRvci9saXN0ZW5lciByb2xlcyB3aGVuIGNvbq1cbiIKIiAgICAgICAgICBuZWN0aW5nIHdpdGggZnRwLiBUaGlzIHN3aXRjaCBtYWtlcyBDdXJsIHVzZSAgdGhlICBQT1JUXG4iCiIgICAgICAgICAgY29tbWFuZCAgaW5zdGVhZCAgb2YgIFBBU1YuIEluIHByYWN0aWNlLCBQT1JUIHRlbGxzIHRoZVxuIgoiICAgICAgICAgIHNlcnZlciB0byBjb25uZWN0IHRvIHRoZSBjbGllbnQncyBzcGVjaWZpZWQgYWRkcmVzcyBhbmRcbiIKIiAgICAgICAgICBwb3J0LCAgd2hpbGUgUEFTViBhc2tzIHRoZSBzZXJ2ZXIgZm9yIGFuIGlwIGFkZHJlc3MgYW5kXG4iCiIgICAgICAgICAgcG9ydCB0byBjb25uZWN0IHRvLiA8YWRkcmVzcz4gc2hvdWxkIGJlIG9uZSBvZjpcbiIKIlxuIgoiICAgICAgICAgIGludGVyZmFjZSAgIGkuZSBcImV0aDBcIiB0byBzcGVjaWZ5IHdoaWNoIGludGVyZmFjZSdzICBJUFxuIgoiICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MgeW91IHdhbnQgdG8gdXNlICAoVW5peCBvbmx5KVxuIgoiXG4iCiIgICAgICAgICAgSVAgYWRkcmVzcyAgaS5lIFwiMTkyLjE2OC4xMC4xXCIgdG8gc3BlY2lmeSBleGFjdCBJUCBudW2tXG4iCiIgICAgICAgICAgICAgICAgICAgICAgYmVyXG4iCiJcbiIKIiAgICAgICAgICBob3N0IG5hbWUgICBpLmUgXCJteS5ob3N0LmRvbWFpblwiIHRvIHNwZWNpZnkgbWFjaGluZVxuIgoiXG4iCiIgICAgICAgICAgLSAgICAgICAgICAgKGFueSBzaW5nbGUtbGV0dGVyIHN0cmluZykgdG8gbWFrZSBpdCAgcGlja1xuIgoiICAgICAgICAgICAgICAgICAgICAgIHRoZSBtYWNoaW5lJ3MgZGVmYXVsdFxuIgoiXG4iCiIgICAgIC1xICAgSWYgdXNlZCBhcyB0aGUgZmlyc3QgcGFyYW1ldGVyIG9uIHRoZSBjb21tYW5kIGxpbmUsIHRoZVxuIgoiICAgICAgICAgICRIT01FLy5jdXJscmMgZmlsZSB3aWxsIG5vdCBiZSByZWFkIGFuZCB1c2VkIGFzIGEgIGNvbq1cbiIKIiAgICAgICAgICBmaWcgZmlsZS5cbiIKIlxuIgoiICAgICAtUS8tLXF1b3RlIDxjb21hbmQ+XG4iCiIgICAgICAgICAgKEZUUCkgIFNlbmQgIGFuICBhcmJpdHJhcnkgIGNvbW1hbmQgIHRvICB0aGUgcmVtb3RlIEZUUFxuIgoiICAgICAgICAgIHNlcnZlciwgYnkgdXNpbmcgdGhlIFFVT1RFIGNvbW1hbmQgb2YgdGhlICBzZXJ2ZXIuICBOb3RcbiIKIiAgICAgICAgICBhbGwgIHNlcnZlcnMgc3VwcG9ydCB0aGlzIGNvbW1hbmQsIGFuZCB0aGUgc2V0IG9mIFFVT1RFXG4iCiIgICAgICAgICAgY29tbWFuZHMgYXJlIHNlcnZlciBzcGVjaWZpYyEgUXVvdGUgY29tbWFuZHMgIGFyZSAgc2VudFxuIgoiICAgICAgICAgIEJFRk9SRSAgdGhlICB0cmFuc2ZlciBpcyB0YWtpbmcgcGxhY2UuIFRvIG1ha2UgY29tbWFuZHNcbiIKIiAgICAgICAgICB0YWtlIHBsYWNlIGFmdGVyIGEgIHN1Y2Nlc3NmdWwgIHRyYW5zZmVyLCAgcHJlZml4ICB0aGVtXG4iCiIgICAgICAgICAgd2l0aCBhIGRhc2ggJy0nLiBZb3UgbWF5IHNwZWNpZnkgYW55IGFtb3VudCBvZiBjb21tYW5kc1xuIgoiICAgICAgICAgIHRvIGJlIHJ1biBiZWZvcmUgYW5kIGFmdGVyIHRoZSB0cmFuc2Zlci4gSWYgdGhlICBzZXJ2ZXJcbiIKIiAgICAgICAgICByZXR1cm5zICBmYWlsdXJlICBmb3IgIG9uZSAgb2YgdGhlIGNvbW1hbmRzLCB0aGUgZW50aXJlXG4iCiIgICAgICAgICAgb3BlcmF0aW9uIHdpbGwgYmUgYWJvcnRlZC5cbiIKIlxuIgoiICAgICAtci8tLXJhbmdlIDxyYW5nZT5cbiIKIiAgICAgICAgICAoSFRUUC9GVFApIFJldHJpZXZlIGEgYnl0ZSByYW5nZSAoaS5lIGEgIHBhcnRpYWwgIGRvY3WtXG4iCiIgICAgICAgICAgbWVudCkgIGZyb20gIGEgIEhUVFAvMS4xICBvciAgRlRQIHNlcnZlci4gUmFuZ2VzIGNhbiBiZVxuIgoiICAgICAgICAgIHNwZWNpZmllZCBpbiBhIG51bWJlciBvZiB3YXlzLlxuIgoiXG4iCiIgICAgICAgICAgMC00OTkgICAgIHNwZWNpZmllcyB0aGUgZmlyc3QgNTAwIGJ5dGVzXG4iCiJcbiIKIiAgICAgICAgICA1MDAtOTk5ICAgc3BlY2lmaWVzIHRoZSBzZWNvbmQgNTAwIGJ5dGVzXG4iCiJcbiIKIiAgICAgICAgICAtNTAwICAgICAgc3BlY2lmaWVzIHRoZSBsYXN0IDUwMCBieXRlc1xuIgoiXG4iCiIgICAgICAgICAgOTUwMCAgICAgIHNwZWNpZmllcyB0aGUgYnl0ZXMgZnJvbSBvZmZzZXQgOTUwMCBhbmQgZm9yrVxuIgoiICAgICAgICAgICAgICAgICAgICB3YXJkXG4iCiJcbiIKIiAgICAgICAgICAwLTAsLTEgICAgc3BlY2lmaWVzIHRoZSBmaXJzdCBhbmQgbGFzdCBieXRlIG9ubHkoKikoSClcbiIKIiAgICAgICAgICA1MDAtNzAwLDYwMC03OTlcbiIKIiAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVzIDMwMCBieXRlcyBmcm9tIG9mZnNldCA1MDAoSClcbiIKIlxuIgoiICAgICAgICAgIDEwMC0xOTksNTAwLTU5OVxuIgoiICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZXMgdHdvIHNlcGFyYXRlIDEwMCBieXRlcyByYW5nZXMoKikoSClcbiIKIlxuIgoiICAgICAoKikgPSBOT1RFIHRoYXQgdGhpcyB3aWxsIGNhdXNlIHRoZSBzZXJ2ZXIgdG8gcmVwbHkgIHdpdGggIGFcbiIKIiAgICAgbXVsdGlwYXJ0IHJlc3BvbnNlIVxuIgoiXG4iCiIgICAgIFlvdSAgc2hvdWxkICBhbHNvIGJlIGF3YXJlIHRoYXQgbWFueSBIVFRQLzEuMSBzZXJ2ZXJzIGRvIG5vdFxuIgoiICAgICBoYXZlIHRoaXMgZmVhdHVyZSBlbmFibGVkLCBzbyB0aGF0IHdoZW4geW91IGF0dGVtcHQgdG8gZ2V0IGFcbiIKIiAgICAgcmFuZ2UsIHlvdSdsbCBpbnN0ZWFkIGdldCB0aGUgd2hvbGUgZG9jdW1lbnQuXG4iCiJcbiIKIiAgICAgRlRQICByYW5nZSAgZG93bmxvYWRzIG9ubHkgc3VwcG9ydCB0aGUgc2ltcGxlIHN5bnRheCAnc3RhcnQtXG4iCiIgICAgIHN0b3AnIChvcHRpb25hbGx5IHdpdGggIG9uZSAgb2YgIHRoZSAgbnVtYmVycyAgb21pdHRlZCkuICBJdFxuIgoiICAgICBkZXBlbmRzIG9uIHRoZSBub24tUkZDIGNvbW1hbmQgU0laRS5cbiIKIlxuIgoiICAgICAtcy8tLXNpbGVudFxuIgoiICAgICAgICAgIFNpbGVudCAgbW9kZS4gIERvbid0ICBzaG93IHByb2dyZXNzIG1ldGVyIG9yIGVycm9yIG1lc61cbiIKIiAgICAgICAgICBzYWdlcy4gIE1ha2VzIEN1cmwgbXV0ZS5cbiIKIlxuIgoiICAgICAtUy8tLXNob3ctZXJyb3JcbiIKIiAgICAgICAgICBXaGVuIHVzZWQgd2l0aCAtcyBpdCBtYWtlcyBjdXJsIHNob3cgZXJyb3IgIG1lc3NhZ2UgIGlmXG4iCiIgICAgICAgICAgaXQgZmFpbHMuXG4iCiJcbiIKIiAgICAgLXQvLS11cGxvYWRcbiIKIiAgICAgICAgICBUcmFuc2ZlciAgdGhlICBzdGRpbiAgZGF0YSAgdG8gdGhlIHNwZWNpZmllZCBmaWxlLiBDdXJsXG4iCiIgICAgICAgICAgd2lsbCByZWFkIGV2ZXJ5dGhpbmcgZnJvbSBzdGRpbiAgdW50aWwgIEVPRiAgYW5kICBzdG9yZVxuIgoiICAgICAgICAgIHdpdGggIHRoZSAgc3VwcGxpZWQgIG5hbWUuIElmIHRoaXMgaXMgdXNlZCBvbiBhIGh0dHAocylcbiIKIiAgICAgICAgICBzZXJ2ZXIsIHRoZSBQVVQgY29tbWFuZCB3aWxsIGJlIHVzZWQuXG4iCiJcbiIKIiAgICAgLVQvLS11cGxvYWQtZmlsZSA8ZmlsZT5cbiIKIiAgICAgICAgICBMaWtlIC10LCBidXQgdGhpcyB0cmFuc2ZlcnMgdGhlIHNwZWNpZmllZCAgbG9jYWwgIGZpbGUuXG4iCiIgICAgICAgICAgSWYgIHRoZXJlICBpcyAgbm8gIGZpbGUgcGFydCBpbiB0aGUgc3BlY2lmaWVkIFVSTCwgQ3VybFxuIgoiICAgICAgICAgIHdpbGwgYXBwZW5kIHRoZSBsb2NhbCBmaWxlIG5hbWUuIE5PVEUgdGhhdCB5b3UgbXVzdCB1c2VcbiIKIiAgICAgICAgICBhICB0cmFpbGluZyAgLyBvbiB0aGUgbGFzdCBkaXJlY3RvcnkgdG8gcmVhbGx5IHByb3ZlIHRvXG4iCiIgICAgICAgICAgQ3VybCB0aGF0IHRoZXJlIGlzIG5vIGZpbGUgbmFtZSBvciBjdXJsIHdpbGwgdGhpbmsgdGhhdFxuIgoiICAgICAgICAgIHlvdXIgIGxhc3QgIGRpcmVjdG9yeSAgbmFtZSAgaXMgdGhlIHJlbW90ZSBmaWxlIG5hbWUgdG9cbiIKIiAgICAgICAgICB1c2UuIFRoYXQgd2lsbCBtb3N0IGxpa2VseSBjYXVzZSB0aGUgIHVwbG9hZCAgb3BlcmF0aW9uXG4iCiIgICAgICAgICAgdG8gIGZhaWwuICBJZiB0aGlzIGlzIHVzZWQgb24gYSBodHRwKHMpIHNlcnZlciwgdGhlIFBVVFxuIgoiICAgICAgICAgIGNvbW1hbmQgd2lsbCBiZSB1c2VkLlxuIgoiXG4iCiIgICAgIC11Ly0tdXNlciA8dXNlcjpwYXNzd29yZD5cbiIKIiAgICAgICAgICBTcGVjaWZ5IHVzZXIgYW5kIHBhc3N3b3JkIHRvICB1c2UgIHdoZW4gIGZldGNoaW5nLiAgU2VlXG4iCiIgICAgICAgICAgUkVBRE1FLmN1cmwgIGZvciAgZGV0YWlsZWQgZXhhbXBsZXMgb2YgaG93IHRvIHVzZSB0aGlzLlxuIgoiICAgICAgICAgIElmIG5vIHBhc3N3b3JkIGlzICBzcGVjaWZpZWQsICBjdXJsICB3aWxsICBhc2sgIGZvciAgaXRcbiIKIiAgICAgICAgICBpbnRlcmFjdGl2ZWx5LlxuIgoiXG4iCiIgICAgIC1VLy0tcHJveHktdXNlciA8dXNlcjpwYXNzd29yZD5cbiIKIiAgICAgICAgICBTcGVjaWZ5ICB1c2VyIGFuZCBwYXNzd29yZCB0byB1c2UgZm9yIFByb3h5IGF1dGhlbnRpY2GtXG4iCiIgICAgICAgICAgdGlvbi4gSWYgbm8gcGFzc3dvcmQgaXMgc3BlY2lmaWVkLCBjdXJsIHdpbGwgYXNrIGZvciBpdFxuIgoiICAgICAgICAgIGludGVyYWN0aXZlbHkuXG4iCiIgICAgIC12Ly0tdmVyYm9zZVxuIgoiICAgICAgICAgIE1ha2VzICAgdGhlICBmZXRjaGluZyAgbW9yZSAgdmVyYm9zZS90YWxrYXRpdmUuICBNb3N0bHlcbiIKIiAgICAgICAgICB1c2FibGUgZm9yIGRlYnVnZ2luZy4gTGluZXMgIHN0YXJ0aW5nICB3aXRoICAnPicgIG1lYW5zXG4iCiIgICAgICAgICAgZGF0YSBzZW50IGJ5IGN1cmwsICc8JyBtZWFucyBkYXRhIHJlY2VpdmVkIGJ5IGN1cmwgdGhhdFxuIgoiICAgICAgICAgIGlzIGhpZGRlbiBpbiBub3JtYWwgY2FzZXMgYW5kIGxpbmVzIHN0YXJ0aW5nICB3aXRoICAnKidcbiIKIiAgICAgICAgICBtZWFucyBhZGRpdGlvbmFsIGluZm8gcHJvdmlkZWQgYnkgY3VybC5cbiIKIlxuIgoiICAgICAtVi8tLXZlcnNpb25cbiIKIiAgICAgICAgICBEaXNwbGF5cyAgdGhlICBmdWxsICB2ZXJzaW9uIG9mIGN1cmwsIGxpYmN1cmwgYW5kIG90aGVyXG4iCiIgICAgICAgICAgM3JkIHBhcnR5IGxpYnJhcmllcyBsaW5rZWQgd2l0aCB0aGUgZXhlY3V0YWJsZS5cbiIKIlxuIgoiICAgICAtdy8tLXdyaXRlLW91dCA8Zm9ybWF0PlxuIgoiICAgICAgICAgIERlZmluZXMgd2hhdCB0byBkaXNwbGF5IGFmdGVyIGEgY29tcGxldGVkIGFuZCAgc3VjY2Vzc61cbiIKIiAgICAgICAgICBmdWwgIG9wZXJhdGlvbi4gVGhlIGZvcm1hdCBpcyBhIHN0cmluZyB0aGF0IG1heSBjb250YWluXG4iCiIgICAgICAgICAgcGxhaW4gdGV4dCBtaXhlZCB3aXRoICBhbnkgIG51bWJlciAgb2YgIHZhcmlhYmxlcy4gIFRoZVxuIgoiICAgICAgICAgIHN0cmluZyBjYW4gYmUgc3BlY2lmaWVkIGFzIFwic3RyaW5nXCIsIHRvIGdldCByZWFkIGZyb20gYVxuIgoiICAgICAgICAgIHBhcnRpY3VsYXIgZmlsZSB5b3Ugc3BlY2lmeSBpdCBcIkBmaWxlbmFtZVwiIGFuZCB0byAgdGVsbFxuIgoiICAgICAgICAgIGN1cmwgdG8gcmVhZCB0aGUgZm9ybWF0IGZyb20gc3RkaW4geW91IHdyaXRlIFwiQC1cIi5cbiIKIlxuIgoiICAgICAgICAgIFRoZSB2YXJpYWJsZXMgcHJlc2VudCBpbiB0aGUgb3V0cHV0IGZvcm1hdCB3aWxsIGJlIHN1Yq1cbiIKIiAgICAgICAgICBzdGl0dXRlZCBieSB0aGUgdmFsdWUgb3IgdGV4dCB0aGF0IGN1cmwgdGhpbmtzIGZpdCwgIGFzXG4iCiIgICAgICAgICAgZGVzY3JpYmVkICBiZWxvdy4gIEFsbCAgdmFyaWFibGVzICBhcmUgIHNwZWNpZmllZCAgbGlrZVxuIgoiICAgICAgICAgICV7dmFyaWFibGVfbmFtZX0gYW5kIHRvIG91dHB1dCAgYSAgbm9ybWFsICAlICB5b3UgIGp1c3RcbiIKIiAgICAgICAgICB3cml0ZSAgdGhlbSAgbGlrZSAlJS4gWW91IGNhbiBvdXRwdXQgYSBuZXdsaW5lIGJ5IHVzaW5nXG4iCiIgICAgICAgICAgXFxuLCBhIGNhcnJpZ2UgcmV0dXJuIHdpdGggXFxyIGFuZCBhIHRhYiBzcGFjZSB3aXRoIFxcdC5cbiIKIlxuIgoiICAgICAgICAgIE5PVEU6ICBUaGUgICUtbGV0dGVyICBpcyAgYSAgc3BlY2lhbCAgbGV0dGVyICAgaW4gICB0aGVcbiIKIiAgICAgICAgICB3aW4zMi1lbnZpcm9ubWVudCwgIHdoZXJlICBhbGwgb2NjdXJyZW5jZXMgb2YgJSBtdXN0IGJlXG4iCiIgICAgICAgICAgZG91YmxlZCB3aGVuIHVzaW5nIHRoaXMgb3B0aW9uLlxuIgoiXG4iCiIgICAgICAgICAgQXZhaWxhYmxlIHZhcmlhYmxlcyBhcmUgYXQgdGhpcyBwb2ludDpcbiIKIlxuIgoiICAgICAgICAgIHVybF9lZmZlY3RpdmUgIFRoZSBVUkwgdGhhdCB3YXMgZmV0Y2hlZCBsYXN0LiAgVGhpcyAgaXNcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBtb3N0bHkgbWVhbmluZ2Z1bCBpZiB5b3UndmUgdG9sZCBjdXJsIHRvXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93IGxvY2F0aW9uOiBoZWFkZXJzLlxuIgoiXG4iCiIgICAgICAgICAgaHR0cF9jb2RlICAgICAgVGhlIG51bWVyaWNhbCBjb2RlIHRoYXQgd2FzIGZvdW5kIGluIHRoZVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgcmV0cmlldmVkIEhUVFAoUykgcGFnZS5cbiIKIlxuIgoiICAgICAgICAgIHRpbWVfdG90YWwgICAgIFRoZSAgdG90YWwgIHRpbWUsICBpbiAgc2Vjb25kcywgdGhhdCB0aGVcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsIG9wZXJhdGlvbiBsYXN0ZWQuIFRoZSB0aW1lIHdpbGwgIGJlXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheWVkIHdpdGggbWlsbGlzZWNvbmQgcmVzb2x1dGlvbi5cbiIKIlxuIgoiICAgICAgICAgIHRpbWVfbmFtZWxvb2t1cFxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSAgdGltZSwgIGluIHNlY29uZHMsIGl0IHRvb2sgZnJvbSB0aGVcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCB1bnRpbCB0aGUgbmFtZSByZXNvbHZpbmcgd2FzICBjb22tXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgcGxldGVkLlxuIgoiXG4iCiIgICAgICAgICAgdGltZV9jb25uZWN0ICAgVGhlICB0aW1lLCAgaW4gc2Vjb25kcywgaXQgdG9vayBmcm9tIHRoZVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0IHVudGlsIHRoZSBjb25uZWN0ICB0byAgdGhlICByZW1vdGVcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBob3N0IChvciBwcm94eSkgd2FzIGNvbXBsZXRlZC5cbiIKIiAgICAgICAgICB0aW1lX3ByZXRyYW5zZmVyXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgVGhlICB0aW1lLCAgaW4gc2Vjb25kcywgaXQgdG9vayBmcm9tIHRoZVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0IHVudGlsIHRoZSBmaWxlICB0cmFuc2ZlciAgaXMgIGp1c3RcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBhYm91dCAgdG8gIGJlZ2luLiBUaGlzIGluY2x1ZGVzIGFsbCBwcmUtXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmZXIgY29tbWFuZHMgYW5kIG5lZ290aWF0aW9ucyAgdGhhdFxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSAgc3BlY2lmaWMgIHRvICB0aGUgcGFydGljdWxhciBwcm90b61cbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBjb2wocykgaW52b2x2ZWQuXG4iCiJcbiIKIiAgICAgICAgICBzaXplX2Rvd25sb2FkICBUaGUgdG90YWwgIGFtb3VudCAgb2YgIGJ5dGVzICB0aGF0ICB3ZXJlXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgZG93bmxvYWRlZC5cbiIKIlxuIgoiICAgICAgICAgIHNpemVfdXBsb2FkICAgIFRoZSAgdG90YWwgIGFtb3VudCAgb2YgIGJ5dGVzICB0aGF0IHdlcmVcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICB1cGxvYWRlZC5cbiIKIlxuIgoiICAgICAgICAgIHNwZWVkX2Rvd25sb2FkIFRoZSBhdmVyYWdlICBkb3dubG9hZCAgc3BlZWQgIHRoYXQgIGN1cmxcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBtZWFzdXJlZCBmb3IgdGhlIGNvbXBsZXRlIGRvd25sb2FkLlxuIgoiXG4iCiIgICAgICAgICAgc3BlZWRfdXBsb2FkICAgVGhlICBhdmVyYWdlIHVwbG9hZCBzcGVlZCB0aGF0IGN1cmwgbWVhrVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIHN1cmVkIGZvciB0aGUgY29tcGxldGUgZG93bmxvYWQuXG4iCiJcbiIKIiAgICAgLXgvLS1wcm94eSA8cHJveHlob3N0Wzpwb3J0XT5cbiIKIiAgICAgICAgICBVc2Ugc3BlY2lmaWVkIHByb3h5LiBJZiB0aGUgcG9ydCBudW1iZXIgaXMgIG5vdCAgc3BlY2mtXG4iCiIgICAgICAgICAgZmllZCwgaXQgaXMgYXNzdW1lZCBhdCBwb3J0IDEwODAuXG4iCiJcbiIKIiAgICAgLVgvLS1yZXF1ZXN0IDxjb21tYW5kPlxuIgoiICAgICAgICAgIChIVFRQKSAgU3BlY2lmaWVzIGEgY3VzdG9tIHJlcXVlc3QgdG8gdXNlIHdoZW4gY29tbXVuaa1cbiIKIiAgICAgICAgICBjYXRpbmcgd2l0aCB0aGUgSFRUUCAgc2VydmVyLiAgIFRoZSAgc3BlY2lmaWVkICByZXF1ZXN0XG4iCiIgICAgICAgICAgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIHN0YW5kYXJkIEdFVC4gUmVhZCB0aGUgSFRUUFxuIgoiICAgICAgICAgIDEuMSBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWxzIGFuZCBleHBsYW5hdGlvbnMuXG4iCiJcbiIKIiAgICAgICAgICAoRlRQKSBTcGVjaWZpZXMgYSBjdXN0b20gRlRQIGNvbW1hbmQgdG8gdXNlIGluc3RlYWQgIG9mXG4iCiIgICAgICAgICAgTElTVCB3aGVuIGRvaW5nIGZpbGUgbGlzdHMgd2l0aCBmdHAuXG4iCiJcbiIKIiAgICAgLXkvLS1zcGVlZC10aW1lIDx0aW1lPlxuIgoiICAgICAgICAgIElmIGEgZG93bmxvYWQgaXMgc2xvd2VyIHRoYW4gc3BlZWQtbGltaXQgYnl0ZXMgcGVyIHNlY61cbiIKIiAgICAgICAgICBvbmQgZHVyaW5nICBhICBzcGVlZC10aW1lICBwZXJpb2QsICB0aGUgIGRvd25sb2FkICBnZXRzXG4iCiIgICAgICAgICAgYWJvcnRlZC4gSWYgc3BlZWQtdGltZSBpcyB1c2VkLCB0aGUgZGVmYXVsdCBzcGVlZC1saW1pdFxuIgoiICAgICAgICAgIHdpbGwgYmUgMSB1bmxlc3Mgc2V0IHdpdGggLXkuXG4iCiJcbiIKIiAgICAgLVkvLS1zcGVlZC1saW1pdCA8c3BlZWQ+XG4iCiIgICAgICAgICAgSWYgYSBkb3dubG9hZCBpcyBzbG93ZXIgdGhhbiB0aGlzIGdpdmVuIHNwZWVkLCBpbiBieXRlc1xuIgoiICAgICAgICAgIHBlciAgc2Vjb25kLCAgZm9yICBzcGVlZC10aW1lICBzZWNvbmRzIGl0IGdldHMgYWJvcnRlZC5cbiIKIiAgICAgICAgICBzcGVlZC10aW1lIGlzIHNldCB3aXRoIC1ZIGFuZCBpcyAzMCBpZiBub3Qgc2V0LlxuIgoiXG4iCiIgICAgIC16Ly0tdGltZS1jb25kIDxkYXRlIGV4cHJlc3Npb24+XG4iCiIgICAgICAgICAgKEhUVFApIFJlcXVlc3QgdG8gZ2V0IGEgZmlsZSAgdGhhdCAgaGFzICBiZWVuICBtb2RpZmllZFxuIgoiICAgICAgICAgIGxhdGVyICB0aGFuICB0aGUgIGdpdmVuICB0aW1lIGFuZCBkYXRlLCBvciBvbmUgdGhhdCBoYXNcbiIKIiAgICAgICAgICBiZWVuIG1vZGlmaWVkIGJlZm9yZSB0aGF0IHRpbWUuIFRoZSBkYXRlIGV4cHJlc3Npb24gY2FuXG4iCiIgICAgICAgICAgYmUgYWxsIHNvcnRzIG9mIGRhdGUgc3RyaW5ncyBvciBpZiBpdCBkb2Vzbid0IG1hdGNoIGFueVxuIgoiICAgICAgICAgIGludGVybmFsIG9uZXMsIGl0IHRyaWVzIHRvIGdldCB0aGUgdGltZSAgZnJvbSAgYSAgZ2l2ZW5cbiIKIiAgICAgICAgICBmaWxlICBuYW1lICBpbnN0ZWFkISAgU2VlICB0aGUgR05VIGRhdGUoMSkgbWFuIHBhZ2UgZm9yXG4iCiIgICAgICAgICAgZGF0ZSBleHByZXNzaW9uIGRldGFpbHMuXG4iCiIgICAgICAgICAgU3RhcnQgdGhlIGRhdGUgZXhwcmVzc2lvbiB3aXRoIGEgZGFzaCAoLSkgIHRvICBtYWtlICBpdFxuIgoiICAgICAgICAgIHJlcXVlc3QgIGZvciAgYSAgZG9jdW1lbnQgIHRoYXQgaXMgb2xkZXIgdGhhbiB0aGUgZ2l2ZW5cbiIKIiAgICAgICAgICBkYXRlL3RpbWUsIGRlZmF1bHQgaXMgYSBkb2N1bWVudCB0aGF0IGlzIG5ld2VyIHRoYW4gdGhlXG4iCiIgICAgICAgICAgc3BlY2lmaWVkIGRhdGUvdGltZS5cbiIKIlxuIgoiICAgICAtMy8tLXNzbHYzXG4iCiIgICAgICAgICAgKEhUVFBTKSBGb3JjZXMgY3VybCB0byB1c2UgU1NMIHZlcnNpb24gMyB3aGVuIG5lZ290aWF0rVxuIgoiICAgICAgICAgIGluZyB3aXRoIGEgcmVtb3RlIFNTTCBzZXJ2ZXIuXG4iCiJcbiIKIiAgICAgLTIvLS1zc2x2MlxuIgoiICAgICAgICAgIChIVFRQUykgRm9yY2VzIGN1cmwgdG8gdXNlIFNTTCB2ZXJzaW9uIDIgd2hlbiBuZWdvdGlhdK1cbiIKIiAgICAgICAgICBpbmcgd2l0aCBhIHJlbW90ZSBTU0wgc2VydmVyLlxuIgoiXG4iCiIgICAgIC0jLy0tcHJvZ3Jlc3MtYmFyXG4iCiIgICAgICAgICAgTWFrZSAgY3VybCAgZGlzcGxheSAgcHJvZ3Jlc3MgaW5mb3JtYXRpb24gYXMgYSBwcm9ncmVzc1xuIgoiICAgICAgICAgIGJhciBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IHN0YXRpc3RpY3MuXG4iCiJcbiIKIiAgICAgLS1jcmxmXG4iCiIgICAgICAgICAgKEZUUCkgQ29udmVydCBMRiB0byBDUkxGICBpbiAgdXBsb2FkLiAgVXNlZnVsICBmb3IgIE1WU1xuIgoiICAgICAgICAgIChPUy8zOTApLlxuIgoiXG4iCiIgICAgIC0tc3RkZXJyIDxmaWxlPlxuIgoiICAgICAgICAgIFJlZGlyZWN0ICBhbGwgIHdyaXRlcyAgdG8gIHN0ZGVyciB0byB0aGUgc3BlY2lmaWVkIGZpbGVcbiIKIiAgICAgICAgICBpbnN0ZWFkLiBJZiB0aGUgZmlsZSBuYW1lIGlzIGEgcGxhaW4gJy0nLCBpdCBpcyBpbnN0ZWFkXG4iCiIgICAgICAgICAgd3JpdHRlbiB0byBzdGRvdXQuIFRoaXMgb3B0aW9uIGhhcyBubyBwb2ludCB3aGVuIHlvdSdyZVxuIgoiICAgICAgICAgIHVzaW5nIGEgc2hlbGwgd2l0aCBkZWNlbnQgcmVkaXJlY3RpbmcgY2FwYWJpbGl0aWVzLlxuIgoiXG4iCiJGSUxFU1xuIgoiICAgICB+Ly5jdXJscmNcbiIKIiAgICAgICAgICBEZWZhdWx0IGNvbmZpZyBmaWxlLlxuIgoiXG4iCiJFTlZJUk9OTUVOVFxuIgoiICAgICBIVFRQX1BST1hZIFtwcm90b2NvbDovL108aG9zdD5bOnBvcnRdXG4iCiIgICAgICAgICAgU2V0cyBwcm94eSBzZXJ2ZXIgdG8gdXNlIGZvciBIVFRQLlxuIgoiXG4iCiIgICAgIEhUVFBTX1BST1hZIFtwcm90b2NvbDovL108aG9zdD5bOnBvcnRdXG4iCiIgICAgICAgICAgU2V0cyBwcm94eSBzZXJ2ZXIgdG8gdXNlIGZvciBIVFRQUy5cbiIKIlxuIgoiICAgICBGVFBfUFJPWFkgW3Byb3RvY29sOi8vXTxob3N0Pls6cG9ydF1cbiIKIiAgICAgICAgICBTZXRzIHByb3h5IHNlcnZlciB0byB1c2UgZm9yIEZUUC5cbiIKIlxuIgoiICAgICBHT1BIRVJfUFJPWFkgW3Byb3RvY29sOi8vXTxob3N0Pls6cG9ydF1cbiIKIiAgICAgICAgICBTZXRzIHByb3h5IHNlcnZlciB0byB1c2UgZm9yIEdPUEhFUi5cbiIKIlxuIgoiICAgICBBTExfUFJPWFkgW3Byb3RvY29sOi8vXTxob3N0Pls6cG9ydF1cbiIKIiAgICAgICAgICBTZXRzIHByb3h5IHNlcnZlciB0byB1c2UgaWYgbm8gcHJvdG9jb2wtc3BlY2lmaWMgIHByb3h5XG4iCiIgICAgICAgICAgaXMgc2V0LlxuIgoiXG4iCiIgICAgIE5PX1BST1hZIDxjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBob3N0cz5cbiIKIiAgICAgICAgICBsaXN0IG9mIGhvc3QgbmFtZXMgdGhhdCBzaG91bGRuJ3QgZ28gdGhyb3VnaCBhbnkgcHJveHkuXG4iCiIgICAgICAgICAgSWYgc2V0IHRvIGEgYXN0ZXJpc2sgJyonIG9ubHksIGl0IG1hdGNoZXMgYWxsIGhvc3RzLlxuIgoiICAgICBDT0xVTU5TIDxpbnRlZ2VyPlxuIgoiICAgICAgICAgIFRoZSB3aWR0aCBvZiB0aGUgdGVybWluYWwuICBUaGlzIHZhcmlhYmxlIG9ubHkgIGFmZmVjdHNcbiIKIiAgICAgICAgICBjdXJsIHdoZW4gdGhlIC0tcHJvZ3Jlc3MtYmFyIG9wdGlvbiBpcyB1c2VkLlxuIgoiXG4iCiJFWElUIENPREVTXG4iCiIgICAgIFRoZXJlIGV4aXN0cyBhIGJ1bmNoIG9mIGRpZmZlcmVudCBlcnJvciBjb2RlcyBhbmQgdGhlaXIgY29yrVxuIgoiICAgICByZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzIHRoYXQgbWF5IGFwcGVhciBkdXJpbmcgYmFkICBjb25kaa1cbiIKIiAgICAgdGlvbnMuIEF0IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGluZywgdGhlIGV4aXQgY29kZXMgYXJlOlxuIgoiXG4iCiIgICAgIDEgICAgVW5zdXBwb3J0ZWQgcHJvdG9jb2wuIFRoaXMgYnVpbGQgb2YgY3VybCBoYXMgbm8gc3VwcG9ydFxuIgoiICAgICAgICAgIGZvciB0aGlzIHByb3RvY29sLlxuIgoiXG4iCiIgICAgIDIgICAgRmFpbGVkIHRvIGluaXRpYWxpemUuXG4iCiJcbiIKIiAgICAgMyAgICBVUkwgbWFsZm9ybWF0LiBUaGUgc3ludGF4IHdhcyBub3QgY29ycmVjdC5cbiIKIlxuIgoiICAgICA0ICAgIFVSTCB1c2VyIG1hbGZvcm1hdHRlZC4gVGhlIHVzZXItcGFydCBvZiB0aGUgVVJMICBzeW50YXhcbiIKIiAgICAgICAgICB3YXMgbm90IGNvcnJlY3QuXG4iCiJcbiIKIiAgICAgNSAgICBDb3VsZG4ndCAgcmVzb2x2ZSBwcm94eS4gVGhlIGdpdmVuIHByb3h5IGhvc3QgY291bGQgbm90XG4iCiIgICAgICAgICAgYmUgcmVzb2x2ZWQuXG4iCiJcbiIKIiAgICAgNiAgICBDb3VsZG4ndCByZXNvbHZlIGhvc3QuIFRoZSBnaXZlbiByZW1vdGUgIGhvc3QgIHdhcyAgbm90XG4iCiIgICAgICAgICAgcmVzb2x2ZWQuXG4iCiJcbiIKIiAgICAgNyAgICBGYWlsZWQgdG8gY29ubmVjdCB0byBob3N0LlxuIgoiXG4iCiIgICAgIDggICAgRlRQICB3ZWlyZCAgc2VydmVyICByZXBseS4gIFRoZSAgc2VydmVyICBzZW50IGRhdGEgY3VybFxuIgoiICAgICAgICAgIGNvdWxkbid0IHBhcnNlLlxuIgoiXG4iCiIgICAgIDkgICAgRlRQIGFjY2VzcyBkZW5pZWQuIFRoZSBzZXJ2ZXIgZGVuaWVkIGxvZ2luLlxuIgoiXG4iCiIgICAgIDEwICAgRlRQIHVzZXIvcGFzc3dvcmQgaW5jb3JyZWN0LiBFaXRoZXIgb25lICBvciAgYm90aCAgd2VyZVxuIgoiICAgICAgICAgIG5vdCBhY2NlcHRlZCBieSB0aGUgc2VydmVyLlxuIgoiXG4iCiIgICAgIDExICAgRlRQICB3ZWlyZCAgUEFTUyAgcmVwbHkuICBDdXJsIGNvdWxkbid0IHBhcnNlIHRoZSByZXBseVxuIgoiICAgICAgICAgIHNlbnQgdG8gdGhlIFBBU1MgcmVxdWVzdC5cbiIKIlxuIgoiICAgICAxMiAgIEZUUCB3ZWlyZCBVU0VSIHJlcGx5LiBDdXJsICBjb3VsZG4ndCAgcGFyc2UgIHRoZSAgcmVwbHlcbiIKIiAgICAgICAgICBzZW50IHRvIHRoZSBVU0VSIHJlcXVlc3QuXG4iCiJcbiIKIiAgICAgMTMgICBGVFAgIHdlaXJkICBQQVNWICByZXBseSwgIEN1cmwgY291bGRuJ3QgcGFyc2UgdGhlIHJlcGx5XG4iCiIgICAgICAgICAgc2VudCB0byB0aGUgUEFTViByZXF1ZXN0LlxuIgoiXG4iCiIgICAgIDE0ICAgRlRQIHdlaXJkIDIyNyBmb3JtYXkuIEN1cmwgY291bGRuJ3QgcGFyc2UgdGhlICAyMjctbGluZVxuIgoiICAgICAgICAgIHRoZSBzZXJ2ZXIgc2VudC5cbiIKIlxuIgoiICAgICAxNSAgIEZUUCBjYW4ndCBnZXQgaG9zdC4gQ291bGRuJ3QgcmVzb2x2ZSB0aGUgaG9zdCBJUCB3ZSBnb3RcbiIKIiAgICAgICAgICBpbiB0aGUgMjI3LWxpbmUuXG4iCiJcbiIKIiAgICAgMTYgICBGVFAgY2FuJ3QgcmVjb25uZWN0LiBDb3VsZG4ndCBjb25uZWN0IHRvICB0aGUgIGhvc3QgIHdlXG4iCiIgICAgICAgICAgZ290IGluIHRoZSAyMjctbGluZS5cbiIKIiAgICAgMTcgICBGVFAgIGNvdWxkbid0ICBzZXQgIGJpbmFyeS4gIENvdWxkbid0ICBjaGFuZ2UgIHRyYW5zZmVyXG4iCiIgICAgICAgICAgbWV0aG9kIHRvIGJpbmFyeS5cbiIKIlxuIgoiICAgICAxOCAgIFBhcnRpYWwgZmlsZS4gT25seSBhIHBhcnQgb2YgdGhlIGZpbGUgd2FzIHRyYW5zZmVyZWQuXG4iCiJcbiIKIiAgICAgMTkgICBGVFAgY291bGRuJ3QgUkVUUiBmaWxlLiBUaGUgUkVUUiBjb21tYW5kIGZhaWxlZC5cbiIKIlxuIgoiICAgICAyMCAgIEZUUCB3cml0ZSBlcnJvci4gVGhlIHRyYW5zZmVyIHdhcyByZXBvcnRlZCBiYWQgIGJ5ICB0aGVcbiIKIiAgICAgICAgICBzZXJ2ZXIuXG4iCiJcbiIKIiAgICAgMjEgICBGVFAgIHF1b3RlICBlcnJvci4gIEEgcXVvdGUgY29tbWFuZCByZXR1cm5lZCBlcnJvciBmcm9tXG4iCiIgICAgICAgICAgdGhlIHNlcnZlci5cbiIKIlxuIgoiICAgICAyMiAgIEhUVFAgbm90IGZvdW5kLiBUaGUgcmVxdWVzdGVkIHBhZ2Ugd2FzIG5vdCBmb3VuZC4gIFRoaXNcbiIKIiAgICAgICAgICByZXR1cm4gY29kZSBvbmx5IGFwcGVhcnMgaWYgLS1mYWlsIGlzIHVzZWQuXG4iCiJcbiIKIiAgICAgMjMgICBXcml0ZSAgZXJyb3IuICBDdXJsICBjb3VsZG4ndCAgd3JpdGUgIGRhdGEgIHRvICBhIGxvY2FsXG4iCiIgICAgICAgICAgZmlsZXN5c3RlbSBvciBzaW1pbGFyLlxuIgoiXG4iCiIgICAgIDI0ICAgTWFsZm9ybWF0IHVzZXIuIFVzZXIgbmFtZSBiYWRseSBzcGVjaWZpZWQuXG4iCiJcbiIKIiAgICAgMjUgICBGVFAgY291bGRuJ3QgU1RPUiBmaWxlLiAgVGhlICBzZXJ2ZXIgIGRlbmllZCAgdGhlICBTVE9SXG4iCiIgICAgICAgICAgb3BlcmF0aW9uLlxuIgoiXG4iCiIgICAgIDI2ICAgUmVhZCBlcnJvci4gVmFyaW91cyByZWFkaW5nIHByb2JsZW1zLlxuIgoiXG4iCiIgICAgIDI3ICAgT3V0IG9mIG1lbW9yeS4gQSBtZW1vcnkgYWxsb2NhdGlvbiByZXF1ZXN0IGZhaWxlZC5cbiIKIlxuIgoiICAgICAyOCAgIE9wZXJhdGlvbiAgdGltZW91dC4gIFRoZSAgc3BlY2lmaWVkIHRpbWUtb3V0IHBlcmlvZCB3YXNcbiIKIiAgICAgICAgICByZWFjaGVkIGFjY29yZGluZyB0byB0aGUgY29uZGl0aW9ucy5cbiIKIlxuIgoiICAgICAyOSAgIEZUUCBjb3VsZG4ndCBzZXQgQVNDSUkuIFRoZSBzZXJ2ZXIgcmV0dXJuZWQgYW4gIHVua25vd25cbiIKIiAgICAgICAgICByZXBseS5cbiIKIlxuIgoiICAgICAzMCAgIEZUUCBQT1JUIGZhaWxlZC4gVGhlIFBPUlQgY29tbWFuZCBmYWlsZWQuXG4iCiJcbiIKIiAgICAgMzEgICBGVFAgY291bGRuJ3QgdXNlIFJFU1QuIFRoZSBSRVNUIGNvbW1hbmQgZmFpbGVkLlxuIgoiXG4iCiIgICAgIDMyICAgRlRQICBjb3VsZG4ndCAgdXNlICBTSVpFLiAgVGhlIFNJWkUgY29tbWFuZCBmYWlsZWQuIFRoZVxuIgoiICAgICAgICAgIGNvbW1hbmQgaXMgYW4gZXh0ZW5zaW9uIHRvIHRoZSBvcmlnaW5hbCAgRlRQICBzcGVjICBSRkNcbiIKIiAgICAgICAgICA5NTkuXG4iCiJcbiIKIiAgICAgMzMgICBIVFRQIHJhbmdlIGVycm9yLiBUaGUgcmFuZ2UgXCJjb21tYW5kXCIgZGlkbid0IHdvcmsuXG4iCiJcbiIKIiAgICAgMzQgICBIVFRQICAgcG9zdCAgZXJyb3IuICBJbnRlcm5hbCAgcG9zdC1yZXF1ZXN0ICBnZW5lcmF0aW9uXG4iCiIgICAgICAgICAgZXJyb3IuXG4iCiJcbiIKIiAgICAgMzUgICBTU0wgY29ubmVjdCBlcnJvci4gVGhlIFNTTCBoYW5kc2hha2luZyBmYWlsZWQuXG4iCiJcbiIKIiAgICAgMzYgICBGVFAgYmFkIGRvd25sb2FkIHJlc3VtZS4gQ291bGRuJ3QgY29udGludWUgIGFuICBlYXJsaWVyXG4iCiIgICAgICAgICAgYWJvcnRlZCBkb3dubG9hZC5cbiIKIiAgICAgMzcgICBGSUxFICBjb3VsZG4ndCByZWFkIGZpbGUuIEZhaWxlZCB0byBvcGVuIHRoZSBmaWxlLiBQZXKtXG4iCiIgICAgICAgICAgbWlzc2lvbnM/XG4iCiJcbiIKIiAgICAgMzggICBMREFQIGNhbm5vdCBiaW5kLiBMREFQIGJpbmQgb3BlcmF0aW9uIGZhaWxlZC5cbiIKIlxuIgoiICAgICAzOSAgIExEQVAgc2VhcmNoIGZhaWxlZC5cbiIKIlxuIgoiICAgICA0MCAgIExpYnJhcnkgbm90IGZvdW5kLiBUaGUgTERBUCBsaWJyYXJ5IHdhcyBub3QgZm91bmQuXG4iCiJcbiIKIiAgICAgNDEgICBGdW5jdGlvbiBub3QgZm91bmQuIEEgcmVxdWlyZWQgTERBUCAgZnVuY3Rpb24gIHdhcyAgbm90XG4iCiIgICAgICAgICAgZm91bmQuXG4iCiJcbiIKIiAgICAgWFggICBUaGVyZSAgd2lsbCAgYXBwZWFyICBtb3JlICBlcnJvciAgY29kZXMgIGhlcmUgaW4gZnV0dXJlXG4iCiIgICAgICAgICAgcmVsZWFzZXMuIFRoZSBleGlzdGluZyBvbmVzIGFyZSBtZWFudCB0byBuZXZlciAgY2hhbmdlLlxuIgoiXG4iCiJCVUdTXG4iCiIgICAgIElmICB5b3UgZG8gZmluZCBhbnkgKG9yIGhhdmUgb3RoZXIgc3VnZ2VzdGlvbnMpLCBtYWlsIERhbmllbFxuIgoiICAgICBTdGVuYmVyZyA8RGFuaWVsLlN0ZW5iZXJnQGhheHgubnU+LlxuIgoiXG4iCiJBVVRIT1JTIC8gQ09OVFJJQlVUT1JTXG4iCiIgICAgICAtIERhbmllbCBTdGVuYmVyZyA8RGFuaWVsLlN0ZW5iZXJnQGhheHgubnU+XG4iCiIgICAgICAtIFJhZmFlbCBTYWd1bGEgPHNhZ3VsYUBpbmYudWZyZ3MuYnI+XG4iCiIgICAgICAtIFNhbXBvIEtlbGxvbWFraSA8c2FtcG9AaWtpLmZpPlxuIgoiICAgICAgLSBMaW5hcyBWZXBzdGFzIDxsaW5hc0BsaW5hcy5vcmc+XG4iCiIgICAgICAtIEJqb3JuIFJlZXNlIDxicmVlc2VAbWFpbDEuc3RvZmFuZXQuZGs+XG4iCiIgICAgICAtIEpvaGFuIEFuZGVyc29uIDxqb2hhbkBob21lbWFpbC5jb20+XG4iCiIgICAgICAtIEtqZWxsIEVyaWNzb24gPEtqZWxsLkVyaWNzb25AaGF4eCxudT5cbiIKIiAgICAgIC0gVHJveSBFbmdlbCA8dGVuZ2VsQHNvbmljLm5ldD5cbiIKIiAgICAgIC0gUnlhbiBOZWxzb24gPHJ5YW5AaW5jaC5jb20+XG4iCiIgICAgICAtIEJqb3JuIFN0ZW5iZXJnIDxCam9ybi5TdGVuYmVyZ0BoYXh4Lm51PlxuIgoiICAgICAgLSBBbmd1cyBNYWNrYXkgPGFtYWNrYXlAZ3VzLm1sLm9yZz5cbiIKIiAgICAgIC0gRXJpYyBZb3VuZyA8ZWF5QGNyeXB0c29mdC5jb20+XG4iCiIgICAgICAtIFNpbW9uIERpY2sgPHNpbW9uZEB0b3RhbGx5LmlycmVsZXZhbnQub3JnPlxuIgoiICAgICAgLSBPcmVuIFRpcm9zaCA8b3JlbkBtb250eS5oaXNob21lLm5ldD5cbiIKIiAgICAgIC0gU3RldmVuIEcuIEpvaG5zb24gPHN0ZXZlbmpAYWx1bS5taXQuZWR1PlxuIgoiICAgICAgLSBHaWxiZXJ0IFJhbWlyZXogSnIuIDxncmFtQHZlcmRpY3QudXRoc2NzYS5lZHU+XG4iCiIgICAgICAtIEFuZHLpcyBHYXJj7WEgPG9ybmFsdXhAcmVkZXN0Yi5lcz5cbiIKIiAgICAgIC0gRG91Z2xhcyBFLiBXZWdzY2hlaWQgPHdlZ3NjZEB3aGlybHBvb2wuY29tPlxuIgoiICAgICAgLSBNYXJrIEJ1dGxlciA8YnV0bGVybUB4bWlzc2lvbi5jb20+XG4iCiIgICAgICAtIEVyaWMgVGhlbGluIDxlcmljQGdlbmVyYXRpb24taS5jb20+XG4iCiIgICAgICAtIE1hcmMgQm91Y2hlciA8bWFyY0BtYnNpLmNhPlxuIgoiICAgICAgLSBHcmVnIE9udWZlciA8R3JlZy5PbnVmZXJARW5nLlN1bi5DT00+XG4iCiIgICAgICAtIERvdWcgS2F1Zm1hbiA8ZGthdWZtYW5AcmFodWwubmV0PlxuIgoiICAgICAgLSBEYXZpZCBFcmlrc3NvbiA8ZGF2aWRAMmdvb2QuY29tPlxuIgoiICAgICAgLSBSYWxwaCBCZWNrbWFubiA8cmFiZUB1bmktcGFkZXJib3JuLmRlPlxuIgoiICAgICAgLSBULiBZYW1hZGEgPHRhaUBpbWFzeS5vci5qcD5cbiIKIiAgICAgIC0gTGFycyBKLiBBYXMgPGxhcnNhQHNpbS5ubz5cbiIKIiAgICAgIC0gSvZybiBIYXJ0cm90aCA8Sm9lcm4uSGFydHJvdGhAdGVsZWtvbS5kZT5cbiIKIiAgICAgIC0gTWF0dGhldyBDbGFya2UgPGNsYW1hdEB2YW4ubWF2ZXMuY2E+XG4iCiIgICAgICAtIExpbnVzIE5pZWxzZW4gPExpbnVzLk5pZWxzZW5AaGF4eC5udT5cbiIKIiAgICAgIC0gRmVsaXggdm9uIExlaXRuZXIgPGZlbGl4QGNvbnZlcmdlbmNlLmRlPlxuIgoiICAgICAgLSBEYW4gWml0dGVyIDxkeml0dGVyQHppdHRlci5uZXQ+XG4iCiIgICAgICAtIEpvbmdraSBTdXdhbmRpIDxKb25na2kuU3V3YW5kaUBlbmcuc3VuLmNvbT5cbiIKIiAgICAgIC0gQ2hyaXMgTWFsdGJ5IDxjaHJpc0BhdXJlbWEuY29tPlxuIgoiICAgICAgLSBSb24gWmFwcCA8cnphcHBlckB5YWhvby5jb20+XG4iCiIgICAgICAtIFBhdWwgTWFycXVpcyA8cG1hcnF1aXNAaW5hbWUuY29tPlxuIgoiICAgICAgLSBFbGxpcyBQcml0Y2hhcmQgPGVsbGlzQGNpdHJpYS5jb20+XG4iCiIgICAgICAtIERhbWllbiBBZGFudCA8ZGFtc0B1c2EubmV0PlxuIgoiICAgICAgLSBDaHJpcyA8Y2JheWxpc3NAY3NjLmNvbWU+XG4iCiIgICAgICAtIE1hcmNvIEcuIFNhbHZhZ25vIDxtZ3NAd2hpei5jamIubmV0PlxuIgoiXG4iCiJXV1dcbiIKIiAgICAgaHR0cDovL2N1cmwuaGF4eC5udVxuIgoiXG4iCiJGVFBcbiIKIiAgICAgZnRwOi8vZnRwLnN1bmV0LnNlL3B1Yi93d3cvdXRpbGl0aWVzL2N1cmwvXG4iCiJcbiIKIlNFRSBBTFNPXG4iCiIgICAgIGZ0cCgxKSwgd2dldCgxKSwgc25hcmYoMSlcbiIKIlxuIgoiTEFURVNUIFZFUlNJT05cbiIKIlxuIgoiICBZb3UgYWx3YXlzIGZpbmQgbmV3cyBhYm91dCB3aGF0J3MgZ29pbmcgb24gYXMgd2VsbCBhcyB0aGUgbGF0ZXN0IHZlcnNpb25zXG4iCiIgIGZyb20gdGhlIGN1cmwgd2ViIHBhZ2VzLCBsb2NhdGVkIGF0OlxuIgoiXG4iCiIgICAgICAgIGh0dHA6Ly9jdXJsLmhheHgubnVcbiIKIlxuIgoiU0lNUExFIFVTQUdFXG4iCiJcbiIKIiAgR2V0IHRoZSBtYWluIHBhZ2UgZnJvbSBuZXRzY2FwZSdzIHdlYi1zZXJ2ZXI6XG4iCiJcbiIKIiAgICAgICAgY3VybCBodHRwOi8vd3d3Lm5ldHNjYXBlLmNvbS9cbiIKIlxuIgoiICBHZXQgdGhlIHJvb3QgUkVBRE1FIGZpbGUgZnJvbSBmdW5ldCdzIGZ0cC1zZXJ2ZXI6XG4iCiJcbiIKIiAgICAgICAgY3VybCBmdHA6Ly9mdHAuZnVuZXQuZmkvUkVBRE1FXG4iCiJcbiIKIiAgR2V0IGEgZ29waGVyIGRvY3VtZW50IGZyb20gZnVuZXQncyBnb3BoZXIgc2VydmVyOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgZ29waGVyOi8vZ29waGVyLmZ1bmV0LmZpXG4iCiJcbiIKIiAgR2V0IGEgd2ViIHBhZ2UgZnJvbSBhIHNlcnZlciB1c2luZyBwb3J0IDgwMDA6XG4iCiJcbiIKIiAgICAgICAgY3VybCBodHRwOi8vd3d3LndlaXJkc2VydmVyLmNvbTo4MDAwL1xuIgoiXG4iCiIgIEdldCBhIGxpc3Qgb2YgdGhlIHJvb3QgZGlyZWN0b3J5IG9mIGFuIEZUUCBzaXRlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgZnRwOi8vZnRwLmZ0cy5mcm9udGVjLnNlL1xuIgoiXG4iCiIgIEdldCB0aGUgZGVmaW5pdGlvbiBvZiBjdXJsIGZyb20gYSBkaWN0aW9uYXJ5OlxuIgoiXG4iCiIgICAgICAgIGN1cmwgZGljdDovL2RpY3Qub3JnL206Y3VybFxuIgoiXG4iCiJET1dOTE9BRCBUTyBBIEZJTEVcbiIKIlxuIgoiICBHZXQgYSB3ZWIgcGFnZSBhbmQgc3RvcmUgaW4gYSBsb2NhbCBmaWxlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLW8gdGhhdHBhZ2UuaHRtbCBodHRwOi8vd3d3Lm5ldHNjYXBlLmNvbS9cbiIKIlxuIgoiICBHZXQgYSB3ZWIgcGFnZSBhbmQgc3RvcmUgaW4gYSBsb2NhbCBmaWxlLCBtYWtlIHRoZSBsb2NhbCBmaWxlIGdldCB0aGUgbmFtZVxuIgoiICBvZiB0aGUgcmVtb3RlIGRvY3VtZW50IChpZiBubyBmaWxlIG5hbWUgcGFydCBpcyBzcGVjaWZpZWQgaW4gdGhlIFVSTCwgdGhpc1xuIgoiICB3aWxsIGZhaWwpOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLU8gaHR0cDovL3d3dy5uZXRzY2FwZS5jb20vaW5kZXguaHRtbFxuIgoiXG4iCiJVU0lORyBQQVNTV09SRFNcbiIKIlxuIgoiIEZUUFxuIgoiXG4iCiIgICBUbyBmdHAgZmlsZXMgdXNpbmcgbmFtZStwYXNzd2QsIGluY2x1ZGUgdGhlbSBpbiB0aGUgVVJMIGxpa2U6XG4iCiJcbiIKIiAgICAgICAgY3VybCBmdHA6Ly9uYW1lOnBhc3N3ZEBtYWNoaW5lLmRvbWFpbjpwb3J0L2Z1bGwvcGF0aC90by9maWxlXG4iCiJcbiIKIiAgIG9yIHNwZWNpZnkgdGhlbSB3aXRoIHRoZSAtdSBmbGFnIGxpa2VcbiIKIlxuIgoiICAgICAgICBjdXJsIC11IG5hbWU6cGFzc3dkIGZ0cDovL21hY2hpbmUuZG9tYWluOnBvcnQvZnVsbC9wYXRoL3RvL2ZpbGVcbiIKIlxuIgoiIEhUVFBcbiIKIlxuIgoiICAgVGhlIEhUVFAgVVJMIGRvZXNuJ3Qgc3VwcG9ydCB1c2VyIGFuZCBwYXNzd29yZCBpbiB0aGUgVVJMIHN0cmluZy4gQ3VybFxuIgoiICAgZG9lcyBzdXBwb3J0IHRoYXQgYW55d2F5IHRvIHByb3ZpZGUgYSBmdHAtc3R5bGUgaW50ZXJmYWNlIGFuZCB0aHVzIHlvdSBjYW5cbiIKIiAgIHBpY2sgYSBmaWxlIGxpa2U6XG4iCiJcbiIKIiAgICAgICAgY3VybCBodHRwOi8vbmFtZTpwYXNzd2RAbWFjaGluZS5kb21haW4vZnVsbC9wYXRoL3RvL2ZpbGVcbiIKIlxuIgoiICAgb3Igc3BlY2lmeSB1c2VyIGFuZCBwYXNzd29yZCBzZXBhcmF0ZWx5IGxpa2UgaW5cbiIKIlxuIgoiICAgICAgICBjdXJsIC11IG5hbWU6cGFzc3dkIGh0dHA6Ly9tYWNoaW5lLmRvbWFpbi9mdWxsL3BhdGgvdG8vZmlsZVxuIgoiXG4iCiIgICBOT1RFISBTaW5jZSBIVFRQIFVSTHMgZG9uJ3Qgc3VwcG9ydCB1c2VyIGFuZCBwYXNzd29yZCwgeW91IGNhbid0IHVzZSB0aGF0XG4iCiIgICBzdHlsZSB3aGVuIHVzaW5nIEN1cmwgdmlhIGEgcHJveHkuIFlvdSBfbXVzdF8gdXNlIHRoZSAtdSBzdHlsZSBmZXRjaFxuIgoiICAgZHVyaW5nIHN1Y2ggY2lyY3Vtc3RhbmNlcy5cbiIKIlxuIgoiIEhUVFBTXG4iCiJcbiIKIiAgIFByb2JhYmx5IG1vc3QgY29tbW9ubHkgdXNlZCB3aXRoIHByaXZhdGUgY2VydGlmaWNhdGVzLCBhcyBleHBsYWluZWQgYmVsb3cuXG4iCiJcbiIKIiBHT1BIRVJcbiIKIlxuIgoiICAgQ3VybCBmZWF0dXJlcyBubyBwYXNzd29yZCBzdXBwb3J0IGZvciBnb3BoZXIuXG4iCiJcbiIKIlBST1hZXG4iCiJcbiIKIiBHZXQgYW4gZnRwIGZpbGUgdXNpbmcgYSBwcm94eSBuYW1lZCBteS1wcm94eSB0aGF0IHVzZXMgcG9ydCA4ODg6XG4iCiJcbiIKIiAgICAgICAgY3VybCAteCBteS1wcm94eTo4ODggZnRwOi8vZnRwLmxlYWNoc2l0ZS5jb20vUkVBRE1FXG4iCiJcbiIKIiBHZXQgYSBmaWxlIGZyb20gYSBIVFRQIHNlcnZlciB0aGF0IHJlcXVpcmVzIHVzZXIgYW5kIHBhc3N3b3JkLCB1c2luZyB0aGVcbiIKIiBzYW1lIHByb3h5IGFzIGFib3ZlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXUgdXNlcjpwYXNzd2QgLXggbXktcHJveHk6ODg4IGh0dHA6Ly93d3cuZ2V0LnRoaXMvXG4iCiJcbiIKIiBTb21lIHByb3hpZXMgcmVxdWlyZSBzcGVjaWFsIGF1dGhlbnRpY2F0aW9uLiBTcGVjaWZ5IGJ5IHVzaW5nIC1VIGFzIGFib3ZlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLVUgdXNlcjpwYXNzd2QgLXggbXktcHJveHk6ODg4IGh0dHA6Ly93d3cuZ2V0LnRoaXMvXG4iCiJcbiIKIiBTZWUgYWxzbyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIEN1cmwgc3VwcG9ydCB0aGF0IG9mZmVyIGZ1cnRoZXIgcHJveHlcbiIKIiBjb250cm9sLlxuIgoiXG4iCiJSQU5HRVNcbiIKIlxuIgoiICBXaXRoIEhUVFAgMS4xIGJ5dGUtcmFuZ2VzIHdlcmUgaW50cm9kdWNlZC4gVXNpbmcgdGhpcywgYSBjbGllbnQgY2FuIHJlcXVlc3RcbiIKIiAgdG8gZ2V0IG9ubHkgb25lIG9yIG1vcmUgc3VicGFydHMgb2YgYSBzcGVjaWZpZWQgZG9jdW1lbnQuIEN1cmwgc3VwcG9ydHNcbiIKIiAgdGhpcyB3aXRoIHRoZSAtciBmbGFnLlxuIgoiXG4iCiIgIEdldCB0aGUgZmlyc3QgMTAwIGJ5dGVzIG9mIGEgZG9jdW1lbnQ6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtciAwLTk5IGh0dHA6Ly93d3cuZ2V0LnRoaXMvXG4iCiJcbiIKIiAgR2V0IHRoZSBsYXN0IDUwMCBieXRlcyBvZiBhIGRvY3VtZW50OlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXIgLTUwMCBodHRwOi8vd3d3LmdldC50aGlzL1xuIgoiXG4iCiIgIEN1cmwgYWxzbyBzdXBwb3J0cyBzaW1wbGUgcmFuZ2VzIGZvciBGVFAgZmlsZXMgYXMgd2VsbC4gVGhlbiB5b3UgY2FuIG9ubHlcbiIKIiAgc3BlY2lmeSBzdGFydCBhbmQgc3RvcCBwb3NpdGlvbi5cbiIKIlxuIgoiICBHZXQgdGhlIGZpcnN0IDEwMCBieXRlcyBvZiBhIGRvY3VtZW50IHVzaW5nIEZUUDpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1yIDAtOTkgZnRwOi8vd3d3LmdldC50aGlzL1JFQURNRSAgXG4iCiJcbiIKIlVQTE9BRElOR1xuIgoiXG4iCiIgRlRQXG4iCiJcbiIKIiAgVXBsb2FkIGFsbCBkYXRhIG9uIHN0ZGluIHRvIGEgc3BlY2lmaWVkIGZ0cCBzaXRlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXQgZnRwOi8vZnRwLnVwbG9hZC5jb20vbXlmaWxlXG4iCiJcbiIKIiAgVXBsb2FkIGRhdGEgZnJvbSBhIHNwZWNpZmllZCBmaWxlLCBsb2dpbiB3aXRoIHVzZXIgYW5kIHBhc3N3b3JkOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLVQgdXBsb2FkZmlsZSAtdSB1c2VyOnBhc3N3ZCBmdHA6Ly9mdHAudXBsb2FkLmNvbS9teWZpbGVcbiIKIlxuIgoiICBVcGxvYWQgYSBsb2NhbCBmaWxlIHRvIHRoZSByZW1vdGUgc2l0ZSwgYW5kIHVzZSB0aGUgbG9jYWwgZmlsZSBuYW1lIHJlbW90ZVxuIgoiICB0b286XG4iCiIgXG4iCiIgICAgICAgIGN1cmwgLVQgdXBsb2FkZmlsZSAtdSB1c2VyOnBhc3N3ZCBmdHA6Ly9mdHAudXBsb2FkLmNvbS9cbiIKIlxuIgoiICBVcGxvYWQgYSBsb2NhbCBmaWxlIHRvIGdldCBhcHBlbmRlZCB0byB0aGUgcmVtb3RlIGZpbGUgdXNpbmcgZnRwOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLVQgbG9jYWxmaWxlIC1hIGZ0cDovL2Z0cC51cGxvYWQuY29tL3JlbW90ZWZpbGVcbiIKIlxuIgoiICBOT1RFOiBDdXJsIGRvZXMgbm90IHN1cHBvcnQgZnRwIHVwbG9hZCB0aHJvdWdoIGEgcHJveHkhIFRoZSByZWFzb24gZm9yIHRoaXNcbiIKIiAgaXMgc2ltcGx5IHRoYXQgcHJveGllcyBhcmUgc2VsZG9tbHkgY29uZmlndXJlZCB0byBhbGxvdyB0aGlzIGFuZCB0aGF0IG5vXG4iCiIgIGF1dGhvciBoYXMgc3VwcGxpZWQgY29kZSB0aGF0IG1ha2VzIGl0IHBvc3NpYmxlIVxuIgoiXG4iCiIgSFRUUFxuIgoiXG4iCiIgIFVwbG9hZCBhbGwgZGF0YSBvbiBzdGRpbiB0byBhIHNwZWNpZmllZCBodHRwIHNpdGU6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtdCBodHRwOi8vd3d3LnVwbG9hZC5jb20vbXlmaWxlXG4iCiJcbiIKIiAgTm90ZSB0aGF0IHRoZSBodHRwIHNlcnZlciBtdXN0J3ZlIGJlZW4gY29uZmlndXJlZCB0byBhY2NlcHQgUFVUIGJlZm9yZSB0aGlzXG4iCiIgIGNhbiBiZSBkb25lIHN1Y2Nlc3NmdWxseS5cbiIKIlxuIgoiICBGb3Igb3RoZXIgd2F5cyB0byBkbyBodHRwIGRhdGEgdXBsb2FkLCBzZWUgdGhlIFBPU1Qgc2VjdGlvbiBiZWxvdy5cbiIKIlxuIgoiVkVSQk9TRSAvIERFQlVHXG4iCiJcbiIKIiAgSWYgY3VybCBmYWlscyB3aGVyZSBpdCBpc24ndCBzdXBwb3NlZCB0bywgaWYgdGhlIHNlcnZlcnMgZG9uJ3QgbGV0IHlvdVxuIgoiICBpbiwgaWYgeW91IGNhbid0IHVuZGVyc3RhbmQgdGhlIHJlc3BvbnNlczogdXNlIHRoZSAtdiBmbGFnIHRvIGdldCBWRVJCT1NFXG4iCiIgIGZldGNoaW5nLiBDdXJsIHdpbGwgb3V0cHV0IGxvdHMgb2YgaW5mbyBhbmQgYWxsIGRhdGEgaXQgc2VuZHMgYW5kXG4iCiIgIHJlY2VpdmVzIGluIG9yZGVyIHRvIGxldCB0aGUgdXNlciBzZWUgYWxsIGNsaWVudC1zZXJ2ZXIgaW50ZXJhY3Rpb24uXG4iCiJcbiIKIiAgICAgICAgY3VybCAtdiBmdHA6Ly9mdHAudXBsb2FkLmNvbS9cbiIKIlxuIgoiREVUQUlMRUQgSU5GT1JNQVRJT05cbiIKIlxuIgoiICBEaWZmZXJlbnQgcHJvdG9jb2xzIHByb3ZpZGUgZGlmZmVyZW50IHdheXMgb2YgZ2V0dGluZyBkZXRhaWxlZCBpbmZvcm1hdGlvblxuIgoiICBhYm91dCBzcGVjaWZpYyBmaWxlcy9kb2N1bWVudHMuIFRvIGdldCBjdXJsIHRvIHNob3cgZGV0YWlsZWQgaW5mb3JtYXRpb25cbiIKIiAgYWJvdXQgYSBzaW5nbGUgZmlsZSwgeW91IHNob3VsZCB1c2UgLUkvLS1oZWFkIG9wdGlvbi4gSXQgZGlzcGxheXMgYWxsXG4iCiIgIGF2YWlsYWJsZSBpbmZvIG9uIGEgc2luZ2xlIGZpbGUgZm9yIEhUVFAgYW5kIEZUUC4gVGhlIEhUVFAgaW5mb3JtYXRpb24gaXMgYVxuIgoiICBsb3QgbW9yZSBleHRlbnNpdmUuXG4iCiJcbiIKIiAgRm9yIEhUVFAsIHlvdSBjYW4gZ2V0IHRoZSBoZWFkZXIgaW5mb3JtYXRpb24gKHRoZSBzYW1lIGFzIC1JIHdvdWxkIHNob3cpXG4iCiIgIHNob3duIGJlZm9yZSB0aGUgZGF0YSBieSB1c2luZyAtaS8tLWluY2x1ZGUuIEN1cmwgdW5kZXJzdGFuZHMgdGhlXG4iCiIgIC1ELy0tZHVtcC1oZWFkZXIgb3B0aW9uIHdoZW4gZ2V0dGluZyBmaWxlcyBmcm9tIGJvdGggRlRQIGFuZCBIVFRQLCBhbmQgaXRcbiIKIiAgd2lsbCB0aGVuIHN0b3JlIHRoZSBoZWFkZXJzIGluIHRoZSBzcGVjaWZpZWQgZmlsZS5cbiIKIlxuIgoiICBTdG9yZSB0aGUgSFRUUCBoZWFkZXJzIGluIGEgc2VwYXJhdGUgZmlsZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC0tZHVtcC1oZWFkZXIgaGVhZGVycy50eHQgY3VybC5oYXh4Lm51XG4iCiJcbiIKIiAgTm90ZSB0aGF0IGhlYWRlcnMgc3RvcmVkIGluIGEgc2VwYXJhdGUgZmlsZSBjYW4gYmUgdmVyeSB1c2VmdWwgYXQgYSBsYXRlclxuIgoiICB0aW1lIGlmIHlvdSB3YW50IGN1cmwgdG8gdXNlIGNvb2tpZXMgc2VudCBieSB0aGUgc2VydmVyLiBNb3JlIGFib3V0IHRoYXQgaW5cbiIKIiAgdGhlIGNvb2tpZXMgc2VjdGlvbi5cbiIKIlxuIgoiUE9TVCAoSFRUUClcbiIKIlxuIgoiICBJdCdzIGVhc3kgdG8gcG9zdCBkYXRhIHVzaW5nIGN1cmwuIFRoaXMgaXMgZG9uZSB1c2luZyB0aGUgLWQgPGRhdGE+XG4iCiIgIG9wdGlvbi4gIFRoZSBwb3N0IGRhdGEgbXVzdCBiZSB1cmxlbmNvZGVkLlxuIgoiXG4iCiIgIFBvc3QgYSBzaW1wbGUgXCJuYW1lXCIgYW5kIFwicGhvbmVcIiBndWVzdGJvb2suXG4iCiJcbiIKIiAgICAgICAgY3VybCAtZCBcIm5hbWU9UmFmYWVsJTIwU2FndWxhJnBob25lPTMzMjA3ODBcIiBcXFxuIgoiICAgICAgICAgICAgICAgIGh0dHA6Ly93d3cud2hlcmUuY29tL2d1ZXN0LmNnaVxuIgoiXG4iCiIgIEhvdyB0byBwb3N0IGEgZm9ybSB3aXRoIGN1cmwsIGxlc3NvbiAjMTpcbiIKIlxuIgoiICBEaWcgb3V0IGFsbCB0aGUgPGlucHV0PiB0YWdzIGluIHRoZSBmb3JtIHRoYXQgeW91IHdhbnQgdG8gZmlsbCBpbi4gKFRoZXJlJ3NcbiIKIiAgYSBwZXJsIHByb2dyYW0gY2FsbGVkIGZvcm1maW5kLnBsIG9uIHRoZSBjdXJsIHNpdGUgdGhhdCBoZWxwcyB3aXRoIHRoaXMpLlxuIgoiXG4iCiIgIElmIHRoZXJlJ3MgYSBcIm5vcm1hbFwiIHBvc3QsIHlvdSB1c2UgLWQgdG8gcG9zdC4gLWQgdGFrZXMgYSBmdWxsIFwicG9zdFxuIgoiICBzdHJpbmdcIiwgd2hpY2ggaXMgaW4gdGhlIGZvcm1hdFxuIgoiXG4iCiIgICAgICAgIDx2YXJpYWJsZTE+PTxkYXRhMT4mPHZhcmlhYmxlMj49PGRhdGEyPiYuLi5cbiIKIlxuIgoiICBUaGUgJ3ZhcmlhYmxlJyBuYW1lcyBhcmUgdGhlIG5hbWVzIHNldCB3aXRoIFwibmFtZT1cIiBpbiB0aGUgPGlucHV0PiB0YWdzLCBhbmRcbiIKIiAgdGhlIGRhdGEgaXMgdGhlIGNvbnRlbnRzIHlvdSB3YW50IHRvIGZpbGwgaW4gZm9yIHRoZSBpbnB1dHMuIFRoZSBkYXRhICptdXN0KlxuIgoiICBiZSBwcm9wZXJseSBVUkwgZW5jb2RlZC4gVGhhdCBtZWFucyB5b3UgcmVwbGFjZSBzcGFjZSB3aXRoICsgYW5kIHRoYXQgeW91XG4iCiIgIHdyaXRlIHdlaXJkIGxldHRlcnMgd2l0aCAlWFggd2hlcmUgWFggaXMgdGhlIGhleGFkZWNpbWFsIHJlcHJlc2VudGF0aW9uIG9mXG4iCiIgIHRoZSBsZXR0ZXIncyBBU0NJSSBjb2RlLlxuIgoiXG4iCiIgIEV4YW1wbGU6XG4iCiJcbiIKIiAgKHBhZ2UgbG9jYXRlZCBhdCBodHRwOi8vd3d3LmZvcm1wb3N0LmNvbS9nZXR0aGlzL1xuIgoiXG4iCiIgICAgICAgIDxmb3JtIGFjdGlvbj1cInBvc3QuY2dpXCIgbWV0aG9kPVwicG9zdFwiPlxuIgoiICAgICAgICA8aW5wdXQgbmFtZT11c2VyIHNpemU9MTA+XG4iCiIgICAgICAgIDxpbnB1dCBuYW1lPXBhc3MgdHlwZT1wYXNzd29yZCBzaXplPTEwPlxuIgoiICAgICAgICA8aW5wdXQgbmFtZT1pZCB0eXBlPWhpZGRlbiB2YWx1ZT1cImJsYWJsYWJsYVwiPlxuIgoiICAgICAgICA8aW5wdXQgbmFtZT1kaW5nIHZhbHVlPVwic3VibWl0XCI+XG4iCiIgICAgICAgIDwvZm9ybT5cbiIKIlxuIgoiICBXZSB3YW50IHRvIGVudGVyIHVzZXIgJ2Zvb2Jhcicgd2l0aCBwYXNzd29yZCAnMTIzNDUnLlxuIgoiXG4iCiIgIFRvIHBvc3QgdG8gdGhpcywgeW91IGVudGVyIGEgY3VybCBjb21tYW5kIGxpbmUgbGlrZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1kIFwidXNlcj1mb29iYXImcGFzcz0xMjM0NSZpZD1ibGFibGFibGEmZGlnPXN1Ym1pdFwiICAoY29udGludWVzKVxuIgoiICAgICAgICAgIGh0dHA6Ly93d3cuZm9ybXBvc3QuY29tL2dldHRoaXMvcG9zdC5jZ2lcbiIKIlxuIgoiXG4iCiIgIFdoaWxlIC1kIHVzZXMgdGhlIGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCBtaW1lLXR5cGUsIGdlbmVyYWxseVxuIgoiICB1bmRlcnN0b29kIGJ5IENHSSdzIGFuZCBzaW1pbGFyLCBjdXJsIGFsc28gc3VwcG9ydHMgdGhlIG1vcmUgY2FwYWJsZVxuIgoiICBtdWx0aXBhcnQvZm9ybS1kYXRhIHR5cGUuIFRoaXMgbGF0dGVyIHR5cGUgc3VwcG9ydHMgdGhpbmdzIGxpa2UgZmlsZSB1cGxvYWQuXG4iCiJcbiIKIiAgLUYgYWNjZXB0cyBwYXJhbWV0ZXJzIGxpa2UgLUYgXCJuYW1lPWNvbnRlbnRzXCIuIElmIHlvdSB3YW50IHRoZSBjb250ZW50cyB0b1xuIgoiICBiZSByZWFkIGZyb20gYSBmaWxlLCB1c2UgPEBmaWxlbmFtZT4gYXMgY29udGVudHMuIFdoZW4gc3BlY2lmeWluZyBhIGZpbGUsXG4iCiIgIHlvdSBjYW4gYWxzbyBzcGVjaWZ5IHdoaWNoIGNvbnRlbnQgdHlwZSB0aGUgZmlsZSBpcywgYnkgYXBwZW5kaW5nXG4iCiIgICc7dHlwZT08bWltZSB0eXBlPicgdG8gdGhlIGZpbGUgbmFtZS4gWW91IGNhbiBhbHNvIHBvc3QgY29udGVudHMgb2Ygc2V2ZXJhbFxuIgoiICBmaWxlcyBpbiBvbmUgZmllbGQuIFNvIHRoYXQgdGhlIGZpZWxkIG5hbWUgJ2Nvb2xmaWxlcycgY2FuIGJlIHNlbnQgdGhyZWVcbiIKIiAgZmlsZXMgd2l0aCBkaWZmZXJlbnQgY29udGVudCB0eXBlcyBpbiBhIG1hbm5lciBzaW1pbGFyIHRvOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLUYgXCJjb29sZmlsZXM9QGZpbDEuZ2lmO3R5cGU9aW1hZ2UvZ2lmLGZpbDIudHh0LGZpbDMuaHRtbFwiIFxcXG4iCiIgICAgICAgIGh0dHA6Ly93d3cucG9zdC5jb20vcG9zdGl0LmNnaVxuIgoiXG4iCiIgIElmIGNvbnRlbnQtdHlwZSBpcyBub3Qgc3BlY2lmaWVkLCBjdXJsIHdpbGwgdHJ5IHRvIGd1ZXNzIGZyb20gdGhlIGV4dGVuc2lvblxuIgoiICAoaXQgb25seSBrbm93cyBhIGZldyksIG9yIHVzZSB0aGUgcHJldmlvdXNseSBzcGVjaWZpZWQgdHlwZSAoZnJvbSBhbiBlYXJsaWVyXG4iCiIgIGZpbGUgaWYgc2V2ZXJhbCBmaWxlcyBhcmUgc3BlY2lmaWVkIGluIGEgbGlzdCkgb3IgZmluYWxseSB1c2luZyB0aGUgZGVmYXVsdFxuIgoiICB0eXBlICd0ZXh0L3BsYWluJy5cbiIKIlxuIgoiICBFbXVsYXRlIGEgZmlsbC1pbiBmb3JtIHdpdGggLUYuIExldCdzIHNheSB5b3UgZmlsbCBpbiB0aHJlZSBmaWVsZHMgaW4gYVxuIgoiICBmb3JtLiBPbmUgZmllbGQgaXMgYSBmaWxlIG5hbWUgd2hpY2ggdG8gcG9zdCwgb25lIGZpZWxkIGlzIHlvdXIgbmFtZSBhbmQgb25lXG4iCiIgIGZpZWxkIGlzIGEgZmlsZSBkZXNjcmlwdGlvbi4gV2Ugd2FudCB0byBwb3N0IHRoZSBmaWxlIHdlIGhhdmUgd3JpdHRlbiBuYW1lZFxuIgoiICBcImNvb2x0ZXh0LnR4dFwiLiBUbyBsZXQgY3VybCBkbyB0aGUgcG9zdGluZyBvZiB0aGlzIGRhdGEgaW5zdGVhZCBvZiB5b3VyXG4iCiIgIGZhdm91cml0ZSBicm93c2VyLCB5b3UgaGF2ZSB0byBjaGVjayBvdXQgdGhlIEhUTUwgb2YgdGhlIGZvcm0gcGFnZSB0byBnZXQgdG9cbiIKIiAga25vdyB0aGUgbmFtZXMgb2YgdGhlIGlucHV0IGZpZWxkcy4gSW4gb3VyIGV4YW1wbGUsIHRoZSBpbnB1dCBmaWVsZCBuYW1lcyBhcmVcbiIKIiAgJ2ZpbGUnLCAneW91cm5hbWUnIGFuZCAnZmlsZWRlc2NyaXB0aW9uJy5cbiIKIlxuIgoiICAgICAgICBjdXJsIC1GIFwiZmlsZT1AY29vbHRleHQudHh0XCIgLUYgXCJ5b3VybmFtZT1EYW5pZWxcIiBcXFxuIgoiICAgICAgICAgICAgIC1GIFwiZmlsZWRlc2NyaXB0aW9uPUNvb2wgdGV4dCBmaWxlIHdpdGggY29vbCB0ZXh0IGluc2lkZVwiIFxcXG4iCiIgICAgICAgICAgICAgaHR0cDovL3d3dy5wb3N0LmNvbS9wb3N0aXQuY2dpXG4iCiJcbiIKIiAgU28sIHRvIHNlbmQgdHdvIGZpbGVzIGluIG9uZSBwb3N0IHlvdSBjYW4gZG8gaXQgaW4gdHdvIHdheXM6XG4iCiJcbiIKIiAgMS4gU2VuZCBtdWx0aXBsZSBmaWxlcyBpbiBhIHNpbmdsZSBcImZpZWxkXCIgd2l0aCBhIHNpbmdsZSBmaWVsZCBuYW1lOlxuIgoiIFxuIgoiICAgICAgICBjdXJsIC1GIFwicGljdHVyZXM9QGRvZy5naWYsY2F0LmdpZlwiIFxuIgoiIFxuIgoiICAyLiBTZW5kIHR3byBmaWVsZHMgd2l0aCB0d28gZmllbGQgbmFtZXM6IFxuIgoiXG4iCiIgICAgICAgIGN1cmwgLUYgXCJkb2NwaWN0dXJlPUBkb2cuZ2lmXCIgLUYgXCJjYXRwaWN0dXJlPUBjYXQuZ2lmXCIgXG4iCiJcbiIKIlJFRkVSRVJcbiIKIlxuIgoiICBBIEhUVFAgcmVxdWVzdCBoYXMgdGhlIG9wdGlvbiB0byBpbmNsdWRlIGluZm9ybWF0aW9uIGFib3V0IHdoaWNoIGFkZHJlc3NcbiIKIiAgdGhhdCByZWZlcnJlZCB0byBhY3R1YWwgcGFnZSwgYW5kIGN1cmwgYWxsb3dzIHRoZSB1c2VyIHRvIHNwZWNpZnkgdGhhdFxuIgoiICByZWZlcnJlciB0byBnZXQgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxpbmUuIEl0IGlzIGVzcGVjaWFsbHkgdXNlZnVsIHRvXG4iCiIgIGZvb2wgb3IgdHJpY2sgc3R1cGlkIHNlcnZlcnMgb3IgQ0dJIHNjcmlwdHMgdGhhdCByZWx5IG9uIHRoYXQgaW5mb3JtYXRpb25cbiIKIiAgYmVpbmcgYXZhaWxhYmxlIG9yIGNvbnRhaW4gY2VydGFpbiBkYXRhLlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLWUgd3d3LmNvb2xzaXRlLmNvbSBodHRwOi8vd3d3LnNob3dtZS5jb20vXG4iCiJcbiIKIlVTRVIgQUdFTlRcbiIKIlxuIgoiICBBIEhUVFAgcmVxdWVzdCBoYXMgdGhlIG9wdGlvbiB0byBpbmNsdWRlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBicm93c2VyXG4iCiIgIHRoYXQgZ2VuZXJhdGVkIHRoZSByZXF1ZXN0LiBDdXJsIGFsbG93cyBpdCB0byBiZSBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmRcbiIKIiAgbGluZS4gSXQgaXMgZXNwZWNpYWxseSB1c2VmdWwgdG8gZm9vbCBvciB0cmljayBzdHVwaWQgc2VydmVycyBvciBDR0lcbiIKIiAgc2NyaXB0cyB0aGF0IG9ubHkgYWNjZXB0IGNlcnRhaW4gYnJvd3NlcnMuXG4iCiJcbiIKIiAgRXhhbXBsZTpcbiIKIlxuIgoiICBjdXJsIC1BICdNb3ppbGxhLzMuMCAoV2luOTU7IEkpJyBodHRwOi8vd3d3Lm5hdGlvbnNiYW5rLmNvbS9cbiIKIlxuIgoiICBPdGhlciBjb21tb24gc3RyaW5nczpcbiIKIiAgICAnTW96aWxsYS8zLjAgKFdpbjk1OyBJKScgICAgIE5ldHNjYXBlIFZlcnNpb24gMyBmb3IgV2luZG93cyA5NVxuIgoiICAgICdNb3ppbGxhLzMuMDQgKFdpbjk1OyBVKScgICAgTmV0c2NhcGUgVmVyc2lvbiAzIGZvciBXaW5kb3dzIDk1XG4iCiIgICAgJ01vemlsbGEvMi4wMiAoT1MvMjsgVSknICAgICBOZXRzY2FwZSBWZXJzaW9uIDIgZm9yIE9TLzJcbiIKIiAgICAnTW96aWxsYS80LjA0IFtlbl0gKFgxMTsgVTsgQUlYIDQuMjsgTmF2KScgICAgICAgICAgIE5TIGZvciBBSVhcbiIKIiAgICAnTW96aWxsYS80LjA1IFtlbl0gKFgxMTsgVTsgTGludXggMi4wLjMyIGk1ODYpJyAgICAgIE5TIGZvciBMaW51eFxuIgoiXG4iCiIgIE5vdGUgdGhhdCBJbnRlcm5ldCBFeHBsb3JlciB0cmllcyBoYXJkIHRvIGJlIGNvbXBhdGlibGUgaW4gZXZlcnkgd2F5OlxuIgoiICAgICdNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA0LjAxOyBXaW5kb3dzIDk1KScgICAgTVNJRSBmb3IgVzk1XG4iCiJcbiIKIiAgTW96aWxsYSBpcyBub3QgdGhlIG9ubHkgcG9zc2libGUgVXNlci1BZ2VudCBuYW1lOlxuIgoiICAgICdLb25xdWVyb3IvMS4wJyAgICAgICAgICAgICBLREUgRmlsZSBNYW5hZ2VyIGRlc2t0b3AgY2xpZW50XG4iCiIgICAgJ0x5bngvMi43LjEgbGlid3d3LUZNLzIuMTQnIEx5bnggY29tbWFuZCBsaW5lIGJyb3dzZXJcbiIKIlxuIgoiQ09PS0lFU1xuIgoiXG4iCiIgIENvb2tpZXMgYXJlIGdlbmVyYWxseSB1c2VkIGJ5IHdlYiBzZXJ2ZXJzIHRvIGtlZXAgc3RhdGUgaW5mb3JtYXRpb24gYXQgdGhlXG4iCiIgIGNsaWVudCdzIHNpZGUuIFRoZSBzZXJ2ZXIgc2V0cyBjb29raWVzIGJ5IHNlbmRpbmcgYSByZXNwb25zZSBsaW5lIGluIHRoZVxuIgoiICBoZWFkZXJzIHRoYXQgbG9va3MgbGlrZSAnU2V0LUNvb2tpZTogPGRhdGE+JyB3aGVyZSB0aGUgZGF0YSBwYXJ0IHRoZW5cbiIKIiAgdHlwaWNhbGx5IGNvbnRhaW5zIGEgc2V0IG9mIE5BTUU9VkFMVUUgcGFpcnMgKHNlcGFyYXRlZCBieSBzZW1pY29sb25zICc7J1xuIgoiICBsaWtlIFwiTkFNRTE9VkFMVUUxOyBOQU1FMj1WQUxVRTI7XCIpLiBUaGUgc2VydmVyIGNhbiBhbHNvIHNwZWNpZnkgZm9yIHdoYXRcbiIKIiAgcGF0aCB0aGUgXCJjb29raWVcIiBzaG91bGQgYmUgdXNlZCBmb3IgKGJ5IHNwZWNpZnlpbmcgXCJwYXRoPXZhbHVlXCIpLCB3aGVuIHRoZVxuIgoiICBjb29raWUgc2hvdWxkIGV4cGlyZSAoXCJleHBpcmU9REFURVwiKSwgZm9yIHdoYXQgZG9tYWluIHRvIHVzZSBpdFxuIgoiICAoXCJkb21haW49TkFNRVwiKSBhbmQgaWYgaXQgc2hvdWxkIGJlIHVzZWQgb24gc2VjdXJlIGNvbm5lY3Rpb25zIG9ubHlcbiIKIiAgKFwic2VjdXJlXCIpLlxuIgoiXG4iCiIgIElmIHlvdSd2ZSByZWNlaXZlZCBhIHBhZ2UgZnJvbSBhIHNlcnZlciB0aGF0IGNvbnRhaW5zIGEgaGVhZGVyIGxpa2U6XG4iCiIgICAgICAgIFNldC1Db29raWU6IHNlc3Npb25pZD1ib28xMjM7IHBhdGg9XCIvZm9vXCI7XG4iCiJcbiIKIiAgaXQgbWVhbnMgdGhlIHNlcnZlciB3YW50cyB0aGF0IGZpcnN0IHBhaXIgcGFzc2VkIG9uIHdoZW4gd2UgZ2V0IGFueXRoaW5nIGluXG4iCiIgIGEgcGF0aCBiZWdpbm5pbmcgd2l0aCBcIi9mb29cIi5cbiIKIlxuIgoiICBFeGFtcGxlLCBnZXQgYSBwYWdlIHRoYXQgd2FudHMgbXkgbmFtZSBwYXNzZWQgaW4gYSBjb29raWU6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtYiBcIm5hbWU9RGFuaWVsXCIgd3d3LnNpbGx5cGFnZS5jb21cbiIKIlxuIgoiICBDdXJsIGFsc28gaGFzIHRoZSBhYmlsaXR5IHRvIHVzZSBwcmV2aW91c2x5IHJlY2VpdmVkIGNvb2tpZXMgaW4gZm9sbG93aW5nXG4iCiIgIHNlc3Npb25zLiBJZiB5b3UgZ2V0IGNvb2tpZXMgZnJvbSBhIHNlcnZlciBhbmQgc3RvcmUgdGhlbSBpbiBhIGZpbGUgaW4gYVxuIgoiICBtYW5uZXIgc2ltaWxhciB0bzpcbiIKIlxuIgoiICAgICAgICBjdXJsIC0tZHVtcC1oZWFkZXIgaGVhZGVycyB3d3cuZXhhbXBsZS5jb21cbiIKIlxuIgoiICAuLi4geW91IGNhbiB0aGVuIGluIGEgc2Vjb25kIGNvbm5lY3QgdG8gdGhhdCAob3IgYW5vdGhlcikgc2l0ZSwgdXNlIHRoZVxuIgoiICBjb29raWVzIGZyb20gdGhlICdoZWFkZXJzJyBmaWxlIGxpa2U6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtYiBoZWFkZXJzIHd3dy5leGFtcGxlLmNvbVxuIgoiXG4iCiIgIE5vdGUgdGhhdCBieSBzcGVjaWZ5aW5nIC1iIHlvdSBlbmFibGUgdGhlIFwiY29va2llIGF3YXJlbmVzc1wiIGFuZCB3aXRoIC1MXG4iCiIgIHlvdSBjYW4gbWFrZSBjdXJsIGZvbGxvdyBhIGxvY2F0aW9uOiAod2hpY2ggb2Z0ZW4gaXMgdXNlZCBpbiBjb21iaW5hdGlvblxuIgoiICB3aXRoIGNvb2tpZXMpLiBTbyB0aGF0IGlmIGEgc2l0ZSBzZW5kcyBjb29raWVzIGFuZCBhIGxvY2F0aW9uLCB5b3UgY2FuXG4iCiIgIHVzZSBhIG5vbi1leGlzdGluZyBmaWxlIHRvIHRyaWcgdGhlIGNvb2tpZSBhd2FyZW5lc3MgbGlrZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1MIC1iIGVtcHR5LWZpbGUgd3d3LmV4YW1wbGUuY29tXG4iCiJcbiIKIiAgVGhlIGZpbGUgdG8gcmVhZCBjb29raWVzIGZyb20gbXVzdCBiZSBmb3JtYXR0ZWQgdXNpbmcgcGxhaW4gSFRUUCBoZWFkZXJzIE9SXG4iCiIgIGFzIG5ldHNjYXBlJ3MgY29va2llIGZpbGUuIEN1cmwgd2lsbCBkZXRlcm1pbmUgd2hhdCBraW5kIGl0IGlzIGJhc2VkIG9uIHRoZVxuIgoiICBmaWxlIGNvbnRlbnRzLlxuIgoiXG4iCiJQUk9HUkVTUyBNRVRFUlxuIgoiXG4iCiIgIFRoZSBwcm9ncmVzcyBtZXRlciBleGlzdHMgdG8gc2hvdyBhIHVzZXIgdGhhdCBzb21ldGhpbmcgYWN0dWFsbHkgaXNcbiIKIiAgaGFwcGVuaW5nLiBUaGUgZGlmZmVyZW50IGZpZWxkcyBpbiB0aGUgb3V0cHV0IGhhdmUgdGhlIGZvbGxvd2luZyBtZWFuaW5nOlxuIgoiXG4iCiIgICUgVG90YWwgICAgJSBSZWNlaXZlZCAlIFhmZXJkICBBdmVyYWdlIFNwZWVkICAgICAgICAgIFRpbWUgICAgICAgICAgICAgQ3Vyci5cbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERsb2FkICBVcGxvYWQgVG90YWwgICAgQ3VycmVudCAgTGVmdCAgICBTcGVlZFxuIgoiICAwICAxNTFNICAgIDAgMzg2MDggICAgMCAgICAgMCAgIDk0MDYgICAgICAwICA0OjQxOjQzICAwOjAwOjA0ICA0OjQxOjM5ICA5Mjg3XG4iCiJcbiIKIiAgRnJvbSBsZWZ0LXRvLXJpZ2h0OlxuIgoiICAgJSAgICAgICAgICAgICAtIHBlcmNlbnRhZ2UgY29tcGxldGVkIG9mIHRoZSB3aG9sZSB0cmFuc2ZlclxuIgoiICAgVG90YWwgICAgICAgICAtIHRvdGFsIHNpemUgb2YgdGhlIHdob2xlIGV4cGVjdGVkIHRyYW5zZmVyXG4iCiIgICAlICAgICAgICAgICAgIC0gcGVyY2VudGFnZSBjb21wbGV0ZWQgb2YgdGhlIGRvd25sb2FkXG4iCiIgICBSZWNlaXZlZCAgICAgIC0gY3VycmVudGx5IGRvd25sb2FkZWQgYW1vdW50IG9mIGJ5dGVzXG4iCiIgICAlICAgICAgICAgICAgIC0gcGVyY2VudGFnZSBjb21wbGV0ZWQgb2YgdGhlIHVwbG9hZFxuIgoiICAgWGZlcmQgICAgICAgICAtIGN1cnJlbnRseSB1cGxvYWRlZCBhbW91bnQgb2YgYnl0ZXNcbiIKIiAgIEF2ZXJhZ2UgU3BlZWRcbiIKIiAgIERsb2FkICAgICAgICAgLSB0aGUgYXZlcmFnZSB0cmFuc2ZlciBzcGVlZCBvZiB0aGUgZG93bmxvYWRcbiIKIiAgIEF2ZXJhZ2UgU3BlZWRcbiIKIiAgIFVwbG9hZCAgICAgICAgLSB0aGUgYXZlcmFnZSB0cmFuc2ZlciBzcGVlZCBvZiB0aGUgdXBsb2FkXG4iCiIgICBUaW1lIFRvdGFsICAgIC0gZXhwZWN0ZWQgdGltZSB0byBjb21wbGV0ZSB0aGUgb3BlcmF0aW9uXG4iCiIgICBUaW1lIEN1cnJlbnQgIC0gdGltZSBwYXNzZWQgc2luY2UgdGhlIGludm9rZVxuIgoiICAgVGltZSBMZWZ0ICAgICAtIGV4cGVjdGVkIHRpbWUgbGVmdCB0byBjb21wbGV0ZXRpb25cbiIKIiAgIEN1cnIuU3BlZWQgICAgLSB0aGUgYXZlcmFnZSB0cmFuc2ZlciBzcGVlZCB0aGUgbGFzdCA1IHNlY29uZHMgKHRoZSBmaXJzdFxuIgoiICAgICAgICAgICAgICAgICAgIDUgc2Vjb25kcyBvZiBhIHRyYW5zZmVyIGlzIGJhc2VkIG9uIGxlc3MgdGltZSBvZiBjb3Vyc2UuKVxuIgoiXG4iCiIgIFRoZSAtIyBvcHRpb24gd2lsbCBkaXNwbGF5IGEgdG90YWxseSBkaWZmZXJlbnQgcHJvZ3Jlc3MgYmFyIHRoYXQgZG9lc24ndFxuIgoiICBuZWVkIG11Y2ggZXhwbGFuYXRpb24hXG4iCiJcbiIKIlNQRUVEIExJTUlUXG4iCiJcbiIKIiAgQ3VybCBvZmZlcnMgdGhlIHVzZXIgdG8gc2V0IGNvbmRpdGlvbnMgcmVnYXJkaW5nIHRyYW5zZmVyIHNwZWVkIHRoYXQgbXVzdFxuIgoiICBiZSBtZXQgdG8gbGV0IHRoZSB0cmFuc2ZlciBrZWVwIGdvaW5nLiBCeSB1c2luZyB0aGUgc3dpdGNoIC15IGFuZCAtWSB5b3VcbiIKIiAgY2FuIG1ha2UgY3VybCBhYm9ydCB0cmFuc2ZlcnMgaWYgdGhlIHRyYW5zZmVyIHNwZWVkIGRvZXNuJ3QgZXhjZWVkIHlvdXJcbiIKIiAgZ2l2ZW4gbG93ZXN0IGxpbWl0IGZvciBhIHNwZWNpZmllZCB0aW1lLlxuIgoiXG4iCiIgIFRvIGxldCBjdXJsIGFiYW5kb24gZG93bmxvYWRpbmcgdGhpcyBwYWdlIGlmIGl0cyBzbG93ZXIgdGhhbiAzMDAwIGJ5dGVzIHBlclxuIgoiICBzZWNvbmQgZm9yIDEgbWludXRlLCBydW46XG4iCiJcbiIKIiAgICAgICAgY3VybCAteSAzMDAwIC1ZIDYwIHd3dy5mYXItYXdheS1zaXRlLmNvbVxuIgoiXG4iCiIgIFRoaXMgY2FuIHZlcnkgd2VsbCBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIG92ZXJhbGwgdGltZSBsaW1pdCwgc29cbiIKIiAgdGhhdCB0aGUgYWJvdmUgb3BlcmF0aW9pbiBtdXN0IGJlIGNvbXBsZXRlZCBpbiB3aG9sZSB3aXRoaW4gMzAgbWludXRlczpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1tIDE4MDAgLXkgMzAwMCAtWSA2MCB3d3cuZmFyLWF3YXktc2l0ZS5jb21cbiIKIlxuIgoiQ09ORklHIEZJTEVcbiIKIlxuIgoiICBDdXJsIGF1dG9tYXRpY2FsbHkgdHJpZXMgdG8gcmVhZCB0aGUgLmN1cmxyYyBmaWxlIChvciBfY3VybHJjIGZpbGUgb24gd2luMzJcbiIKIiAgc3lzdGVtcykgZnJvbSB0aGUgdXNlcidzIGhvbWUgZGlyIG9uIHN0YXJ0dXAuIFRoZSBjb25maWcgZmlsZSBzaG91bGQgYmVcbiIKIiAgbWFkZSB1cCB3aXRoIG5vcm1hbCBjb21tYW5kIGxpbmUgc3dpdGNoZXMuIENvbW1lbnRzIGNhbiBiZSB1c2VkIHdpdGhpbiB0aGVcbiIKIiAgZmlsZS4gSWYgdGhlIGZpcnN0IGxldHRlciBvbiBhIGxpbmUgaXMgYSAnIyctbGV0dGVyIHRoZSByZXN0IG9mIHRoZSBsaW5lXG4iCiIgIGlzIHRyZWF0ZWQgYXMgYSBjb21tZW50LlxuIgoiXG4iCiIgIEV4YW1wbGUsIHNldCBkZWZhdWx0IHRpbWUgb3V0IGFuZCBwcm94eSBpbiBhIGNvbmZpZyBmaWxlOlxuIgoiXG4iCiIgICAgICAgICMgV2Ugd2FudCBhIDMwIG1pbnV0ZSB0aW1lb3V0OlxuIgoiICAgICAgICAtbSAxODAwXG4iCiIgICAgICAgICMgLi4uIGFuZCB3ZSB1c2UgYSBwcm94eSBmb3IgYWxsIGFjY2Vzc2VzOlxuIgoiICAgICAgICAteCBwcm94eS5vdXIuZG9tYWluLmNvbTo4MDgwXG4iCiJcbiIKIiAgV2hpdGUgc3BhY2VzIEFSRSBzaWduaWZpY2FudCBhdCB0aGUgZW5kIG9mIGxpbmVzLCBidXQgYWxsIHdoaXRlIHNwYWNlc1xuIgoiICBsZWFkaW5nIHVwIHRvIHRoZSBmaXJzdCBjaGFyYWN0ZXJzIG9mIGVhY2ggbGluZSBhcmUgaWdub3JlZC5cbiIKIlxuIgoiICBQcmV2ZW50IGN1cmwgZnJvbSByZWFkaW5nIHRoZSBkZWZhdWx0IGZpbGUgYnkgdXNpbmcgLXEgYXMgdGhlIGZpcnN0IGNvbW1hbmRcbiIKIiAgbGluZSBwYXJhbWV0ZXIsIGxpa2U6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtcSB3d3cudGhhdHNpdGUuY29tXG4iCiJcbiIKIiAgRm9yY2UgY3VybCB0byBnZXQgYW5kIGRpc3BsYXkgYSBsb2NhbCBoZWxwIHBhZ2UgaW4gY2FzZSBpdCBpcyBpbnZva2VkXG4iCiIgIHdpdGhvdXQgVVJMIGJ5IG1ha2luZyBhIGNvbmZpZyBmaWxlIHNpbWlsYXIgdG86XG4iCiJcbiIKIiAgICAgICAgIyBkZWZhdWx0IHVybCB0byBnZXRcbiIKIiAgICAgICAgaHR0cDovL2hlbHAud2l0aC5jdXJsLmNvbS9jdXJsaGVscC5odG1sXG4iCiJcbiIKIiAgWW91IGNhbiBzcGVjaWZ5IGFub3RoZXIgY29uZmlnIGZpbGUgdG8gYmUgcmVhZCBieSB1c2luZyB0aGUgLUsvLS1jb25maWdcbiIKIiAgZmxhZy4gSWYgeW91IHNldCBjb25maWcgZmlsZSBuYW1lIHRvIFwiLVwiIGl0J2xsIHJlYWQgdGhlIGNvbmZpZyBmcm9tIHN0ZGluLFxuIgoiICB3aGljaCBjYW4gYmUgaGFuZHkgaWYgeW91IHdhbnQgdG8gaGlkZSBvcHRpb25zIGZyb20gYmVpbmcgdmlzaWJsZSBpbiBwcm9jZXNzXG4iCiIgIHRhYmxlcyBldGM6XG4iCiJcbiIKIiAgICAgICAgZWNobyBcIi11IHVzZXI6cGFzc3dkXCIgfCBjdXJsIC1LIC0gaHR0cDovL3RoYXQuc2VjcmV0LnNpdGUuY29tXG4iCiJcbiIKIkVYVFJBIEhFQURFUlNcbiIKIlxuIgoiICBXaGVuIHVzaW5nIGN1cmwgaW4geW91ciBvd24gdmVyeSBzcGVjaWFsIHByb2dyYW1zLCB5b3UgbWF5IGVuZCB1cCBuZWVkaW5nXG4iCiIgIHRvIHBhc3Mgb24geW91ciBvd24gY3VzdG9tIGhlYWRlcnMgd2hlbiBnZXR0aW5nIGEgd2ViIHBhZ2UuIFlvdSBjYW4gZG9cbiIKIiAgdGhpcyBieSB1c2luZyB0aGUgLUggZmxhZy5cbiIKIlxuIgoiICBFeGFtcGxlLCBzZW5kIHRoZSBoZWFkZXIgXCJYLXlvdS1hbmQtbWU6IHllc1wiIHRvIHRoZSBzZXJ2ZXIgd2hlbiBnZXR0aW5nIGFcbiIKIiAgcGFnZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1IIFwiWC15b3UtYW5kLW1lOiB5ZXNcIiB3d3cubG92ZS5jb21cbiIKIlxuIgoiICBUaGlzIGNhbiBhbHNvIGJlIHVzZWZ1bCBpbiBjYXNlIHlvdSB3YW50IGN1cmwgdG8gc2VuZCBhIGRpZmZlcmVudCB0ZXh0IGluXG4iCiIgIGEgaGVhZGVyIHRoYW4gaXQgbm9ybWFsbHkgZG9lcy4gVGhlIC1IIGhlYWRlciB5b3Ugc3BlY2lmeSB0aGVuIHJlcGxhY2VzIHRoZVxuIgoiICBoZWFkZXIgY3VybCB3b3VsZCBub3JtYWxseSBzZW5kLlxuIgoiXG4iCiJGVFAgYW5kIFBBVEggTkFNRVNcbiIKIlxuIgoiICBEbyBub3RlIHRoYXQgd2hlbiBnZXR0aW5nIGZpbGVzIHdpdGggdGhlIGZ0cDovLyBVUkwsIHRoZSBnaXZlbiBwYXRoIGlzXG4iCiIgIHJlbGF0aXZlIHRoZSBkaXJlY3RvcnkgeW91IGVudGVyLiBUbyBnZXQgdGhlIGZpbGUgJ1JFQURNRScgZnJvbSB5b3VyIGhvbWVcbiIKIiAgZGlyZWN0b3J5IGF0IHlvdXIgZnRwIHNpdGUsIGRvOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgZnRwOi8vdXNlcjpwYXNzd2RAbXkuc2l0ZS5jb20vUkVBRE1FXG4iCiJcbiIKIiAgQnV0IGlmIHlvdSB3YW50IHRoZSBSRUFETUUgZmlsZSBmcm9tIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGF0IHZlcnkgc2FtZVxuIgoiICBzaXRlLCB5b3UgbmVlZCB0byBzcGVjaWZ5IHRoZSBhYnNvbHV0ZSBmaWxlIG5hbWU6XG4iCiJcbiIKIiAgICAgICAgY3VybCBmdHA6Ly91c2VyOnBhc3N3ZEBteS5zaXRlLmNvbS8vUkVBRE1FXG4iCiJcbiIKIiAgKEkuZSB3aXRoIGFuIGV4dHJhIHNsYXNoIGluIGZyb250IG9mIHRoZSBmaWxlIG5hbWUuKVxuIgoiXG4iCiJGVFAgYW5kIGZpcmV3YWxsc1xuIgoiXG4iCiIgIFRoZSBGVFAgcHJvdG9jb2wgcmVxdWlyZXMgb25lIG9mIHRoZSBpbnZvbHZlZCBwYXJ0aWVzIHRvIG9wZW4gYSBzZWNvbmRcbiIKIiAgY29ubmN0aW9uIGFzIHNvb24gYXMgZGF0YSBpcyBhYm91dCB0byBnZXQgdHJhbnNmZXJlZC4gVGhlcmUgYXJlIHR3byB3YXlzIHRvXG4iCiIgIGRvIHRoaXMuXG4iCiJcbiIKIiAgVGhlIGRlZmF1bHQgd2F5IGZvciBjdXJsIGlzIHRvIGlzc3VlIHRoZSBQQVNWIGNvbW1hbmQgd2hpY2ggY2F1c2VzIHRoZVxuIgoiICBzZXJ2ZXIgdG8gb3BlbiBhbm90aGVyIHBvcnQgYW5kIGF3YWl0IGFub3RoZXIgY29ubmVjdGlvbiBwZXJmb3JtZWQgYnkgdGhlXG4iCiIgIGNsaWVudC4gVGhpcyBpcyBnb29kIGlmIHRoZSBjbGllbnQgaXMgYmVoaW5kIGEgZmlyZXdhbGwgdGhhdCBkb24ndCBhbGxvd1xuIgoiICBpbmNvbWluZyBjb25uZWN0aW9ucy5cbiIKIlxuIgoiICAgICAgICBjdXJsIGZ0cC5kb3dubG9hZC5jb21cbiIKIlxuIgoiICBJZiB0aGUgc2VydmVyIGZvciBleGFtcGxlLCBpcyBiZWhpbmQgYSBmaXJld2FsbCB0aGF0IGRvbid0IGFsbG93IGNvbm5lY3Rpb25zXG4iCiIgIG9uIG90aGVyIHBvcnRzIHRoYW4gMjEgKG9yIGlmIGl0IGp1c3QgZG9lc24ndCBzdXBwb3J0IHRoZSBQQVNWIGNvbW1hbmQpLCB0aGVcbiIKIiAgb3RoZXIgd2F5IHRvIGRvIGl0IGlzIHRvIHVzZSB0aGUgUE9SVCBjb21tYW5kIGFuZCBpbnN0cnVjdCB0aGUgc2VydmVyIHRvXG4iCiIgIGNvbm5lY3QgdG8gdGhlIGNsaWVudCBvbiB0aGUgZ2l2ZW4gKGFzIHBhcmFtZXRlcnMgdG8gdGhlIFBPUlQgY29tbWFuZCkgSVBcbiIKIiAgbnVtYmVyIGFuZCBwb3J0LlxuIgoiXG4iCiIgIFRoZSAtUCBmbGFnIHRvIGN1cmwgYWxsb3dzIGZvciBkaWZmZXJlbnQgb3B0aW9ucy4gWW91ciBtYWNoaW5lIG1heSBoYXZlXG4iCiIgIHNldmVyYWwgSVAtYWRkcmVzc2VzIGFuZC9vciBuZXR3b3JrIGludGVyZmFjZXMgYW5kIGN1cmwgYWxsb3dzIHlvdSB0byBzZWxlY3RcbiIKIiAgd2hpY2ggb2YgdGhlbSB0byB1c2UuIERlZmF1bHQgYWRkcmVzcyBjYW4gYWxzbyBiZSB1c2VkOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLVAgLSBmdHAuZG93bmxvYWQuY29tXG4iCiJcbiIKIiAgRG93bmxvYWQgd2l0aCBQT1JUIGJ1dCB1c2UgdGhlIElQIGFkZHJlc3Mgb2Ygb3VyICdsZTAnIGludGVyZmFjZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1QIGxlMCBmdHAuZG93bmxvYWQuY29tXG4iCiJcbiIKIiAgRG93bmxvYWQgd2l0aCBQT1JUIGJ1dCB1c2UgMTkyLjE2OC4wLjEwIGFzIG91ciBJUCBhZGRyZXNzIHRvIHVzZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1QIDE5Mi4xNjguMC4xMCBmdHAuZG93bmxvYWQuY29tXG4iCiJcbiIKIkhUVFBTXG4iCiJcbiIKIiAgU2VjdXJlIEhUVFAgcmVxdWlyZXMgU1NMIGxpYnJhcmllcyB0byBiZSBpbnN0YWxsZWQgYW5kIHVzZWQgd2hlbiBjdXJsIGlzXG4iCiIgIGJ1aWx0LiBJZiB0aGF0IGlzIGRvbmUsIGN1cmwgaXMgY2FwYWJsZSBvZiByZXRyaWV2aW5nIGFuZCBwb3N0aW5nIGRvY3VtZW50c1xuIgoiICB1c2luZyB0aGUgSFRUUFMgcHJvY290b2wuXG4iCiJcbiIKIiAgRXhhbXBsZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIGh0dHBzOi8vd3d3LnNlY3VyZS1zaXRlLmNvbVxuIgoiXG4iCiIgIEN1cmwgaXMgYWxzbyBjYXBhYmxlIG9mIHVzaW5nIHlvdXIgcGVyc29uYWwgY2VydGlmaWNhdGVzIHRvIGdldC9wb3N0IGZpbGVzXG4iCiIgIGZyb20gc2l0ZXMgdGhhdCByZXF1aXJlIHZhbGlkIGNlcnRpZmljYXRlcy4gVGhlIG9ubHkgZHJhd2JhY2sgaXMgdGhhdCB0aGVcbiIKIiAgY2VydGlmaWNhdGUgbmVlZHMgdG8gYmUgaW4gUEVNLWZvcm1hdC4gUEVNIGlzIGEgc3RhbmRhcmQgYW5kIG9wZW4gZm9ybWF0IHRvXG4iCiIgIHN0b3JlIGNlcnRpZmljYXRlcyB3aXRoLCBidXQgaXQgaXMgbm90IHVzZWQgYnkgdGhlIG1vc3QgY29tbW9ubHkgdXNlZFxuIgoiICBicm93c2VycyAoTmV0c2NhcGUgYW5kIE1TRUkgYm90aCB1c2UgdGhlIHNvIGNhbGxlZCBQS0NTIzEyIGZvcm1hdCkuIElmIHlvdVxuIgoiICB3YW50IGN1cmwgdG8gdXNlIHRoZSBjZXJ0aWZpY2F0ZXMgeW91IHVzZSB3aXRoIHlvdXIgKGZhdm91cml0ZSkgYnJvd3NlciwgeW91XG4iCiIgIG1heSBuZWVkIHRvIGRvd25sb2FkL2NvbXBpbGUgYSBjb252ZXJ0ZXIgdGhhdCBjYW4gY29udmVydCB5b3VyIGJyb3dzZXInc1xuIgoiICBmb3JtYXR0ZWQgY2VydGlmaWNhdGVzIHRvIFBFTSBmb3JtYXR0ZWQgb25lcy4gVGhpcyBraW5kIG9mIGNvbnZlcnRlciBpc1xuIgoiICBpbmNsdWRlZCBpbiByZWNlbnQgdmVyc2lvbnMgb2YgT3BlblNTTCwgYW5kIGZvciBvbGRlciB2ZXJzaW9ucyBEciBTdGVwaGVuXG4iCiIgIE4uIEhlbnNvbiBoYXMgd3JpdHRlbiBhIHBhdGNoIGZvciBTU0xlYXkgdGhhdCBhZGRzIHRoaXMgZnVuY3Rpb25hbGl0eS4gWW91XG4iCiIgIGNhbiBnZXQgaGlzIHBhdGNoICh0aGF0IHJlcXVpcmVzIGFuIFNTTGVheSBpbnN0YWxsYXRpb24pIGZyb20gaGlzIHNpdGUgYXQ6XG4iCiIgIGh0dHA6Ly93d3cuZHJoLWNvbnN1bHRhbmN5LmRlbW9uLmNvLnVrL1xuIgoiXG4iCiIgIEV4YW1wbGUgb24gaG93IHRvIGF1dG9tYXRpY2FsbHkgcmV0cmlldmUgYSBkb2N1bWVudCB1c2luZyBhIGNlcnRpZmljYXRlIHdpdGhcbiIKIiAgYSBwZXJzb25hbCBwYXNzd29yZDpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1FIC9wYXRoL3RvL2NlcnQucGVtOnBhc3N3b3JkIGh0dHBzOi8vc2VjdXJlLnNpdGUuY29tL1xuIgoiXG4iCiIgIElmIHlvdSBuZWdsZWN0IHRvIHNwZWNpZnkgdGhlIHBhc3N3b3JkIG9uIHRoZSBjb21tYW5kIGxpbmUsIHlvdSB3aWxsIGJlXG4iCiIgIHByb21wdGVkIGZvciB0aGUgY29ycmVjdCBwYXNzd29yZCBiZWZvcmUgYW55IGRhdGEgY2FuIGJlIHJlY2VpdmVkLlxuIgoiXG4iCiIgIE1hbnkgb2xkZXIgU1NMLXNlcnZlcnMgaGF2ZSBwcm9ibGVtcyB3aXRoIFNTTHYzIG9yIFRMUywgdGhhdCBuZXdlciB2ZXJzaW9uc1xuIgoiICBvZiBPcGVuU1NMIGV0YyBpcyB1c2luZywgdGhlcmVmb3JlIGl0IGlzIHNvbWV0aW1lcyB1c2VmdWwgdG8gc3BlY2lmeSB3aGF0XG4iCiIgIFNTTC12ZXJzaW9uIGN1cmwgc2hvdWxkIHVzZS4gVXNlIC0zIG9yIC0yIHRvIHNwZWNpZnkgdGhhdCBleGFjdCBTU0wgdmVyc2lvblxuIgoiICB0byB1c2U6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtMiBodHRwczovL3NlY3VyZS5zaXRlLmNvbS9cbiIKIlxuIgoiICBPdGhlcndpc2UsIGN1cmwgd2lsbCBmaXJzdCBhdHRlbXB0IHRvIHVzZSB2MyBhbmQgdGhlbiB2Mi5cbiIKIlxuIgoiUkVTVU1JTkcgRklMRSBUUkFOU0ZFUlNcbiIKIlxuIgoiIFRvIGNvbnRpbnVlIGEgZmlsZSB0cmFuc2ZlciB3aGVyZSBpdCB3YXMgcHJldmlvdXNseSBhYm9ydGVkLCBjdXJsIHN1cHBvcnRzXG4iCiIgcmVzdW1lIG9uIGh0dHAocykgZG93bmxvYWRzIGFzIHdlbGwgYXMgZnRwIHVwbG9hZHMgYW5kIGRvd25sb2Fkcy5cbiIKIlxuIgoiIENvbnRpbnVlIGRvd25sb2FkaW5nIGEgZG9jdW1lbnQ6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtYyAtbyBmaWxlIGZ0cDovL2Z0cC5zZXJ2ZXIuY29tL3BhdGgvZmlsZVxuIgoiXG4iCiIgQ29udGludWUgdXBsb2FkaW5nIGEgZG9jdW1lbnQoKjEpOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLWMgLVQgZmlsZSBmdHA6Ly9mdHAuc2VydmVyLmNvbS9wYXRoL2ZpbGVcbiIKIlxuIgoiIENvbnRpbnVlIGRvd25sb2FkaW5nIGEgZG9jdW1lbnQgZnJvbSBhIHdlYiBzZXJ2ZXIoKjIpOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLWMgLW8gZmlsZSBodHRwOi8vd3d3LnNlcnZlci5jb20vXG4iCiJcbiIKIiAoKjEpID0gVGhpcyByZXF1aXJlcyB0aGF0IHRoZSBmdHAgc2VydmVyIHN1cHBvcnRzIHRoZSBub24tc3RhbmRhcmQgY29tbWFuZFxuIgoiICAgICAgICBTSVpFLiBJZiBpdCBkb2Vzbid0LCBjdXJsIHdpbGwgc2F5IHNvLlxuIgoiXG4iCiIgKCoyKSA9IFRoaXMgcmVxdWlyZXMgdGhhdCB0aGUgd2Igc2VydmVyIHN1cHBvcnRzIGF0IGxlYXN0IEhUVFAvMS4xLiBJZiBpdFxuIgoiICAgICAgICBkb2Vzbid0LCBjdXJsIHdpbGwgc2F5IHNvLlxuIgoiXG4iCiJUSU1FIENPTkRJVElPTlNcbiIKIlxuIgoiIEhUVFAgYWxsb3dzIGEgY2xpZW50IHRvIHNwZWNpZnkgYSB0aW1lIGNvbmRpdGlvbiBmb3IgdGhlIGRvY3VtZW50IGl0XG4iCiIgcmVxdWVzdHMuIEl0IGlzIElmLU1vZGlmaWVkLVNpbmNlIG9yIElmLVVubW9kaWZpZWQtU2luY2UuIEN1cmwgYWxsb3cgeW91IHRvXG4iCiIgc3BlY2lmeSB0aGVtIHdpdGggdGhlIC16Ly0tdGltZS1jb25kIGZsYWcuXG4iCiJcbiIKIiBGb3IgZXhhbXBsZSwgeW91IGNhbiBlYXNpbHkgbWFrZSBhIGRvd25sb2FkIHRoYXQgb25seSBnZXRzIHBlcmZvcm1lZCBpZiB0aGVcbiIKIiByZW1vdGUgZmlsZSBpcyBuZXdlciB0aGFuIGEgbG9jYWwgY29weS4gSXQgd291bGQgYmUgbWFkZSBsaWtlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXogbG9jYWwuaHRtbCBodHRwOi8vcmVtb3RlLnNlcnZlci5jb20vcmVtb3RlLmh0bWxcbiIKIlxuIgoiIE9yIHlvdSBjYW4gZG93bmxvYWQgYSBmaWxlIG9ubHkgaWYgdGhlIGxvY2FsIGZpbGUgaXMgbmV3ZXIgdGhhbiB0aGUgcmVtb3RlXG4iCiIgb25lLiBEbyB0aGlzIGJ5IHByZXBlbmRpbmcgdGhlIGRhdGUgc3RyaW5nIHdpdGggYSAnLScsIGFzIGluOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXogLWxvY2FsLmh0bWwgaHR0cDovL3JlbW90ZS5zZXJ2ZXIuY29tL3JlbW90ZS5odG1sXG4iCiJcbiIKIiBZb3UgY2FuIHNwZWNpZnkgYSBcImZyZWUgdGV4dFwiIGRhdGUgYXMgY29uZGl0aW9uLiBUZWxsIGN1cmwgdG8gb25seSBkb3dubG9hZFxuIgoiIHRoZSBmaWxlIGlmIGl0IHdhcyB1cGRhdGVkIHNpbmNlIHllc3RlcmRheTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC16IHllc3RlcmRheSBodHRwOi8vcmVtb3RlLnNlcnZlci5jb20vcmVtb3RlLmh0bWxcbiIKIlxuIgoiIEN1cmwgd2lsbCB0aGVuIGFjY2VwdCBhIHdpZGUgcmFuZ2Ugb2YgZGF0ZSBmb3JtYXRzLiBZb3UgYWx3YXlzIG1ha2UgdGhlIGRhdGVcbiIKIiBjaGVjayB0aGUgb3RoZXIgd2F5IGFyb3VuZCBieSBwcmVwZW5kaW5nIGl0IHdpdGggYSBkYXNoICctJy5cbiIKIlxuIgoiRElDVFxuIgoiXG4iCiIgIEZvciBmdW4gdHJ5XG4iCiJcbiIKIiAgICAgICAgY3VybCBkaWN0Oi8vZGljdC5vcmcvbTpjdXJsXG4iCiIgICAgICAgIGN1cmwgZGljdDovL2RpY3Qub3JnL2Q6aGVpc2VuYnVnOmphcmdvblxuIgoiICAgICAgICBjdXJsIGRpY3Q6Ly9kaWN0Lm9yZy9kOmRhbmllbDp3ZWIxOTEzXG4iCiJcbiIKIiAgQWxpYXNlcyBmb3IgJ20nIGFyZSAnbWF0Y2gnIGFuZCAnZmluZCcsIGFuZCBhbGlhc2VzIGZvciAnZCcgYXJlICdkZWZpbmUnXG4iCiIgIGFuZCAnbG9va3VwJy4gRm9yIGV4YW1wbGUsXG4iCiJcbiIKIiAgICAgICAgY3VybCBkaWN0Oi8vZGljdC5vcmcvZmluZDpjdXJsXG4iCiJcbiIKIiAgQ29tbWFuZHMgdGhhdCBicmVhayB0aGUgVVJMIGRlc2NyaXB0aW9uIG9mIHRoZSBSRkMgKGJ1dCBub3QgdGhlIERJQ1RcbiIKIiAgcHJvdG9jb2wpIGFyZVxuIgoiXG4iCiIgICAgICAgIGN1cmwgZGljdDovL2RpY3Qub3JnL3Nob3c6ZGJcbiIKIiAgICAgICAgY3VybCBkaWN0Oi8vZGljdC5vcmcvc2hvdzpzdHJhdFxuIgoiXG4iCiIgIEF1dGhlbnRpY2F0aW9uIGlzIHN0aWxsIG1pc3NpbmcgKGJ1dCB0aGlzIGlzIG5vdCByZXF1aXJlZCBieSB0aGUgUkZDKVxuIgoiXG4iCiJMREFQXG4iCiJcbiIKIiAgSWYgeW91IGhhdmUgaW5zdGFsbGVkIHRoZSBPcGVuTERBUCBsaWJyYXJ5LCBjdXJsIGNhbiB0YWtlIGFkdmFudGFnZSBvZiBpdFxuIgoiICBhbmQgb2ZmZXIgbGRhcDovLyBzdXBwb3J0LlxuIgoiXG4iCiIgIExEQVAgaXMgYSBjb21wbGV4IHRoaW5nIGFuZCB3cml0aW5nIGFuIExEQVAgcXVlcnkgaXMgbm90IGFuIGVhc3kgdGFzay4gSSBkb1xuIgoiICBhZHZpY2UgeW91IHRvIGRpZyB1cCB0aGUgc3ludGF4IGRlc2NyaXB0aW9uIGZvciB0aGF0IGVsc2V3aGVyZSwgUkZDIDE5NTkgaWZcbiIKIiAgbm8gb3RoZXIgcGxhY2UgaXMgYmV0dGVyLlxuIgoiXG4iCiIgIFRvIHNob3cgeW91IGFuIGV4YW1wbGUsIHRoaXMgaXMgbm93IEkgY2FuIGdldCBhbGwgcGVvcGxlIGZyb20gbXkgbG9jYWwgTERBUFxuIgoiICBzZXJ2ZXIgdGhhdCBoYXMgYSBjZXJ0YWluIHN1Yi1kb21haW4gaW4gdGhlaXIgZW1haWwgYWRkcmVzczpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1CIFwibGRhcDovL2xkYXAuZnJvbnRlYy5zZS9vPWZyb250ZWM/P3N1Yj9tYWlsPSpzdGguZnJvbnRlYy5zZVwiXG4iCiJcbiIKIiAgSWYgSSB3YW50IHRoZSBzYW1lIGluZm8gaW4gSFRNTCBmb3JtYXQsIEkgY2FuIGdldCBpdCBieSBub3QgdXNpbmcgdGhlIC1CXG4iCiIgIChlbmZvcmNlIEFTQ0lJKSBmbGFnLlxuIgoiXG4iCiJFTlZJUk9OTUVOVCBWQVJJQUJMRVNcbiIKIlxuIgoiICBDdXJsIHJlYWRzIGFuZCB1bmRlcnN0YW5kcyB0aGUgZm9sbG93aW5nIGVudmlyb25tZW50IHZhcmlhYmxlczpcbiIKIlxuIgoiICAgICAgICBIVFRQX1BST1hZLCBIVFRQU19QUk9YWSwgRlRQX1BST1hZLCBHT1BIRVJfUFJPWFlcbiIKIlxuIgoiICBUaGV5IHNob3VsZCBiZSBzZXQgZm9yIHByb3RvY29sLXNwZWNpZmljIHByb3hpZXMuIEdlbmVyYWwgcHJveHkgc2hvdWxkIGJlXG4iCiIgIHNldCB3aXRoXG4iCiIgICAgICAgIFxuIgoiICAgICAgICBBTExfUFJPWFlcbiIKIlxuIgoiICBBIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGhvc3QgbmFtZXMgdGhhdCBzaG91bGRuJ3QgZ28gdGhyb3VnaCBhbnkgcHJveHkgaXNcbiIKIiAgc2V0IGluIChvbmx5IGFuIGFzdGVyaXNrLCAnKicgbWF0Y2hlcyBhbGwgaG9zdHMpXG4iCiJcbiIKIiAgICAgICAgTk9fUFJPWFlcbiIKIlxuIgoiICBJZiBhIHRhaWwgc3Vic3RyaW5nIG9mIHRoZSBkb21haW4tcGF0aCBmb3IgYSBob3N0IG1hdGNoZXMgb25lIG9mIHRoZXNlXG4iCiIgIHN0cmluZ3MsIHRyYW5zYWN0aW9ucyB3aXRoIHRoYXQgbm9kZSB3aWxsIG5vdCBiZSBwcm94aWVkLlxuIgoiXG4iCiJcbiIKIiAgVGhlIHVzYWdlIG9mIHRoZSAteC8tLXByb3h5IGZsYWcgb3ZlcnJpZGVzIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4iCiJcbiIKIk5FVFJDXG4iCiJcbiIKIiAgVW5peCBpbnRyb2R1Y2VkIHRoZSAubmV0cmMgY29uY2VwdCBhIGxvbmcgdGltZSBhZ28uIEl0IGlzIGEgd2F5IGZvciBhIHVzZXJcbiIKIiAgdG8gc3BlY2lmeSBuYW1lIGFuZCBwYXNzd29yZCBmb3IgY29tbW9ubHkgdmlzaXRlZCBmdHAgc2l0ZXMgaW4gYSBmaWxlIHNvXG4iCiIgIHRoYXQgeW91IGRvbid0IGhhdmUgdG8gdHlwZSB0aGVtIGluIGVhY2ggdGltZSB5b3UgdmlzaXQgdGhvc2Ugc2l0ZXMuIFlvdVxuIgoiICByZWFsaXplIHRoaXMgaXMgYSBiaWcgc2VjdXJpdHkgcmlzayBpZiBzb21lb25lIGVsc2UgZ2V0cyBob2xkIG9mIHlvdXJcbiIKIiAgcGFzc3dvcmRzLCBzbyB0aGVyZWZvciBtb3N0IHVuaXggcHJvZ3JhbXMgd29uJ3QgcmVhZCB0aGlzIGZpbGUgdW5sZXNzIGl0IGlzXG4iCiIgIG9ubHkgcmVhZGFibGUgYnkgeW91cnNlbGYgKGN1cmwgZG9lc24ndCBjYXJlIHRob3VnaCkuXG4iCiJcbiIKIiAgQ3VybCBzdXBwb3J0cyAubmV0cmMgZmlsZXMgaWYgdG9sZCBzbyAodXNpbmcgdGhlIC1uLy0tbmV0cmMgb3B0aW9uKS4gVGhpcyBpc1xuIgoiICBub3QgcmVzdHJpY3RlZCB0byBvbmx5IGZ0cCwgYnV0IGN1cmwgY2FuIHVzZSBpdCBmb3IgYWxsIHByb3RvY29scyB3aGVyZVxuIgoiICBhdXRoZW50aWNhdGlvbiBpcyB1c2VkLlxuIgoiXG4iCiIgIEEgdmVyeSBzaW1wbGUgLm5ldHJjIGZpbGUgY291bGQgbG9vayBzb21ldGhpbmcgbGlrZTpcbiIKIlxuIgoiICAgICAgICBtYWNoaW5lIGN1cmwuaGF4eC5udSBsb2dpbiBpYW1kYW5pZWwgcGFzc3dvcmQgbXlzZWNyZXRcbiIKIlxuIgoiQ1VTVE9NIE9VVFBVVFxuIgoiXG4iCiIgIFRvIGJldHRlciBhbGxvdyBzY3JpcHQgcHJvZ3JhbW1lcnMgdG8gZ2V0IHRvIGtub3cgYWJvdXQgdGhlIHByb2dyZXNzIG9mXG4iCiIgIGN1cmwsIHRoZSAtdy8tLXdyaXRlLW91dCBvcHRpb24gd2FzIGludHJvZHVjZWQuIFVzaW5nIHRoaXMsIHlvdSBjYW4gc3BlY2lmeVxuIgoiICB3aGF0IGluZm9ybWF0aW9uIGZyb20gdGhlIHByZXZpb3VzIHRyYW5zZmVyIHlvdSB3YW50IHRvIGV4dHJhY3QuXG4iCiJcbiIKIiAgVG8gZGlzcGxheSB0aGUgYW1vdW50IG9mIGJ5dGVzIGRvd25sb2FkZWQgdG9nZXRoZXIgd2l0aCBzb21lIHRleHQgYW5kIGFuXG4iCiIgIGVuZGluZyBuZXdsaW5lOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXcgJ1dlIGRvd25sb2FkZWQgJXtzaXplX2Rvd25sb2FkfSBieXRlc1xcbicgd3d3LmRvd25sb2FkLmNvbVxuIgoiXG4iCiJNQUlMSU5HIExJU1RcbiIKIlxuIgoiICBXZSBoYXZlIGFuIG9wZW4gbWFpbGluZyBsaXN0IHRvIGRpc2N1c3MgY3VybCwgaXRzIGRldmVsb3BtZW50IGFuZCB0aGluZ3NcbiIKIiAgcmVsZXZhbnQgdG8gdGhpcy5cbiIKIlxuIgoiICBUbyBzdWJzY3JpYmUsIG1haWwgY3VybC1yZXF1ZXN0QGNvbnRhY3Rvci5zZSB3aXRoIFwic3Vic2NyaWJlIDx5b3VyIGVtYWlsXG4iCiIgIGFkZHJlc3M+XCIgaW4gdGhlIGJvZHkuXG4iCiJcbiIKIiAgVG8gcG9zdCB0byB0aGUgbGlzdCwgbWFpbCBjdXJsQGNvbnRhY3Rvci5zZS5cbiIKIlxuIgoiICBUbyB1bnN1YmNyaWJlLCBtYWlsIGN1cmwtcmVxdWVzdEBjb250YWN0b3Iuc2Ugd2l0aCBcInVuc3Vic2NyaWJlIDx5b3VyXG4iCiIgIHN1YnNjcmliZWQgZW1haWwgYWRkcmVzcz5cIiBpbiB0aGUgYm9keS5cbiIKIlxuIgogKSA7Cn0K