LyogTkVWRVIgRVZFUiBlZGl0IHRoaXMgbWFudWFsbHksIGZpeCB0aGUgbWtoZWxwIHNjcmlwdCBpbnN0ZWFkISAqLwojaW5jbHVkZSA8c3RkaW8uaD4Kdm9pZCBodWdlaGVscCh2b2lkKQp7CnB1dHMgKAoiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8gICAgIFxuIgoiICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcXHwgfCAgICBcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfCAgICBcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXyBcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxfX198XFxfX18vfF98IFxcX1xcX19fX198XG4iCiJOQU1FXG4iCiIgICAgIGN1cmwgLSBnZXQgYSBVUkwgd2l0aCBGVFAsIFRFTE5FVCwgTERBUCwgR09QSEVSLCBESUNULCBGSUxFLFxuIgoiICAgICBIVFRQIG9yIEhUVFBTIHN5bnRheC5cbiIKIlxuIgoiU1lOT1BTSVNcbiIKIiAgICAgY3VybCBbb3B0aW9uc10gdXJsXG4iCiJcbiIKIkRFU0NSSVBUSU9OXG4iCiIgICAgIGN1cmwgaXMgYSBjbGllbnQgdG8gZ2V0IGRvY3VtZW50cy9maWxlcyBmcm9tIHNlcnZlcnMsICB1c2luZ1xuIgoiICAgICBhbnkgIG9mICB0aGUgc3VwcG9ydGVkIHByb3RvY29scy4gVGhlIGNvbW1hbmQgaXMgZGVzaWduZWQgdG9cbiIKIiAgICAgd29yayB3aXRob3V0IHVzZXIgaW50ZXJhY3Rpb24gb3IgYW55IGtpbmQgb2YgIGludGVyYWN0aXZpdHkuXG4iCiJcbiIKIiAgICAgY3VybCAgb2ZmZXJzICBhIGJ1c2xvYWQgb2YgdXNlZnVsIHRyaWNrcyBsaWtlIHByb3h5IHN1cHBvcnQsXG4iCiIgICAgIHVzZXIgYXV0aGVudGljYXRpb24sIGZ0cCB1cGxvYWQsICBIVFRQICBwb3N0LCAgU1NMICAoaHR0cHM6KVxuIgoiICAgICBjb25uZWN0aW9ucywgY29va2llcywgZmlsZSB0cmFuc2ZlciByZXN1bWUgYW5kIG1vcmUuXG4iCiJcbiIKIlVSTFxuIgoiICAgICBUaGUgVVJMIHN5bnRheCBpcyBwcm90b2NvbCBkZXBlbmRlbnQuIFlvdSdsbCBmaW5kIGEgZGV0YWlsZWRcbiIKIiAgICAgZGVzY3JpcHRpb24gaW4gUkZDIDIzOTYuXG4iCiJcbiIKIiAgICAgWW91IGNhbiBzcGVjaWZ5IG11bHRpcGxlIFVSTHMgb3IgcGFydHMgb2YgIFVSTHMgIGJ5ICB3cml0aW5nXG4iCiIgICAgIHBhcnQgc2V0cyB3aXRoaW4gYnJhY2VzIGFzIGluOlxuIgoiXG4iCiIgICAgICBodHRwOi8vc2l0ZS57b25lLHR3byx0aHJlZX0uY29tXG4iCiJcbiIKIiAgICAgb3IgIHlvdSBjYW4gZ2V0IHNlcXVlbmNlcyBvZiBhbHBoYW51bWVyaWMgc2VyaWVzIGJ5IHVzaW5nIFtdXG4iCiIgICAgIGFzIGluOlxuIgoiXG4iCiIgICAgICBmdHA6Ly9mdHAubnVtZXJpY2Fscy5jb20vZmlsZVsxLTEwMF0udHh0XG4iCiIgICAgICBmdHA6Ly9mdHAubnVtZXJpY2Fscy5jb20vZmlsZVswMDEtMTAwXS50eHQgICAgKHdpdGggbGVhZGluZ1xuIgoiICAgICB6ZXJvcylcbiIKIiAgICAgIGZ0cDovL2Z0cC5sZXR0ZXJzLmNvbS9maWxlW2Etel0udHh0XG4iCiJcbiIKIiAgICAgSXQgIGlzIHBvc3NpYmxlIHRvIHNwZWNpZnkgdXAgdG8gOSBzZXRzIG9yIHNlcmllcyBmb3IgYSBVUkwsXG4iCiIgICAgIGJ1dCBubyBuZXN0aW5nIGlzIHN1cHBvcnRlZCBhdCB0aGUgbW9tZW50OlxuIgoiXG4iCiIgICAgICBodHRwOi8vd3d3LmFueS5vcmcvYXJjaGl2ZVsxOTk2LTE5OTldL3ZvbK1cbiIKIiAgICAgdW1lWzEtNF1wYXJ0e2EsYixjLGluZGV4fS5odG1sXG4iCiJcbiIKIk9QVElPTlNcbiIKIiAgICAgLWEvLS1hcHBlbmRcbiIKIiAgICAgICAgICAoRlRQKSBXaGVuIHVzZWQgaW4gYSBmdHAgdXBsb2FkLCB0aGlzIHdpbGwgdGVsbCBjdXJsIHRvXG4iCiIgICAgICAgICAgYXBwZW5kIHRvIHRoZSB0YXJnZXQgZmlsZSBpbnN0ZWFkIG9mIG92ZXJ3cml0aW5nIGl0LiBJZlxuIgoiICAgICAgICAgIHRoZSBmaWxlIGRvZXNuJ3QgZXhpc3QsIGl0IHdpbGwgYmUgY3JlYXRlZC5cbiIKIlxuIgoiICAgICAtQS8tLXVzZXItYWdlbnQgPGFnZW50IHN0cmluZz5cbiIKIiAgICAgICAgICAoSFRUUCkgIFNwZWNpZnkgIHRoZSAgVXNlci1BZ2VudCAgc3RyaW5nIHRvIHNlbmQgdG8gdGhlXG4iCiIgICAgICAgICAgSFRUUCBzZXJ2ZXIuIFNvbWUgYmFkbHkgZG9uZSBDR0lzIGZhaWwgaWYgaXRzICBub3QgIHNldFxuIgoiICAgICAgICAgIHRvIFwiTW96aWxsYS80LjBcIi4gIFRvIGVuY29kZSBibGFua3MgaW4gdGhlIHN0cmluZywgc3VyrVxuIgoiICAgICAgICAgIHJvdW5kIHRoZSBzdHJpbmcgd2l0aCBzaW5nbGUgIHF1b3RlICBtYXJrcy4gICBUaGlzICBjYW5cbiIKIiAgICAgICAgICBhbHNvIGJlIHNldCB3aXRoIHRoZSAtSC8tLWhlYWRlciBmbGFnIG9mIGNvdXJzZS5cbiIKIiAgICAgLWIvLS1jb29raWUgPG5hbWU9ZGF0YT5cbiIKIiAgICAgICAgICAoSFRUUCkgUGFzcyB0aGUgZGF0YSB0byB0aGUgSFRUUCBzZXJ2ZXIgYXMgYSBjb29raWUuIEl0XG4iCiIgICAgICAgICAgaXMgc3VwcG9zZWRseSB0aGUgZGF0YSAgcHJldmlvdXNseSAgcmVjZWl2ZWQgIGZyb20gIHRoZVxuIgoiICAgICAgICAgIHNlcnZlciAgaW4gYSBcIlNldC1Db29raWU6XCIgbGluZS4gIFRoZSBkYXRhIHNob3VsZCBiZSBpblxuIgoiICAgICAgICAgIHRoZSBmb3JtYXQgXCJOQU1FMT1WQUxVRTE7IE5BTUUyPVZBTFVFMlwiLlxuIgoiXG4iCiIgICAgICAgICAgSWYgbm8gJz0nIGxldHRlciBpcyB1c2VkIGluIHRoZSBsaW5lLCBpdCBpcyB0cmVhdGVkICBhc1xuIgoiICAgICAgICAgIGEgIGZpbGVuYW1lICB0byAgdXNlICB0byAgcmVhZCBwcmV2aW91c2x5IHN0b3JlZCBjb29raWVcbiIKIiAgICAgICAgICBsaW5lcyBmcm9tLCB3aGljaCBzaG91bGQgYmUgdXNlZCAgaW4gIHRoaXMgIHNlc3Npb24gIGlmXG4iCiIgICAgICAgICAgdGhleSAgbWF0Y2guICBVc2luZyAgdGhpcyAgbWV0aG9kICBhbHNvICBhY3RpdmF0ZXMgIHRoZVxuIgoiICAgICAgICAgIFwiY29va2llIHBhcnNlclwiIHdoaWNoIHdpbGwgbWFrZSAgY3VybCAgcmVjb3JkICBpbmNvbWluZ1xuIgoiICAgICAgICAgIGNvb2tpZXMgdG9vLCB3aGljaCBtYXkgYmUgaGFuZHkgaWYgeW91J3JlIHVzaW5nIHRoaXMgaW5cbiIKIiAgICAgICAgICBjb21iaW5hdGlvbiB3aXRoIHRoZSAgLUwvLS1sb2NhdGlvbiAgb3B0aW9uLiAgVGhlICBmaWxlXG4iCiIgICAgICAgICAgZm9ybWF0IG9mIHRoZSBmaWxlIHRvIHJlYWQgY29va2llcyBmcm9tIHNob3VsZCBiZSBwbGFpblxuIgoiICAgICAgICAgIEhUVFAgaGVhZGVycyBvciB0aGUgbmV0c2NhcGUgY29va2llIGZpbGUgZm9ybWF0LlxuIgoiXG4iCiIgICAgICAgICAgTk9URSB0aGF0IHRoZSBmaWxlIHNwZWNpZmllZCB3aXRoIC1iLy0tY29va2llICBpcyAgb25seVxuIgoiICAgICAgICAgIHVzZWQgIGFzICBpbnB1dC4gTm8gY29va2llcyB3aWxsIGJlIHN0b3JlZCBpbiB0aGUgZmlsZS5cbiIKIiAgICAgICAgICBUbyBzdG9yZSBjb29raWVzLCBzYXZlIHRoZSBIVFRQIGhlYWRlcnMgdG8gYSBmaWxlIHVzaW5nXG4iCiIgICAgICAgICAgLUQvLS1kdW1wLWhlYWRlciFcbiIKIlxuIgoiICAgICAtQi8tLWZ0cC1hc2NpaVxuIgoiICAgICAgICAgIChGVFAvTERBUCkgIFVzZSBBU0NJSSB0cmFuc2ZlciB3aGVuIGdldHRpbmcgYW4gRlRQIGZpbGVcbiIKIiAgICAgICAgICBvciBMREFQIGluZm8uIEZvciBGVFAsIHRoaXMgY2FuICBhbHNvICBiZSAgZW5mb3JjZWQgIGJ5XG4iCiIgICAgICAgICAgdXNpbmcgYW4gVVJMIHRoYXQgZW5kcyB3aXRoIFwiO3R5cGU9QVwiLlxuIgoiXG4iCiIgICAgIC1jLy0tY29udGludWVcbiIKIiAgICAgICAgICBDb250aW51ZS9SZXN1bWUgICBhICAgcHJldmlvdXMgICBmaWxlICAgdHJhbnNmZXIuICBUaGlzXG4iCiIgICAgICAgICAgaW5zdHJ1Y3RzIGN1cmwgdG8gY29udGludWUgYXBwZW5kaW5nIGRhdGEgb24gIHRoZSAgZmlsZVxuIgoiICAgICAgICAgIHdoZXJlICBpdCAgd2FzICBwcmV2aW91c2x5ICBsZWZ0LCBwb3NzaWJseSBiZWNhdXNlIG9mIGFcbiIKIiAgICAgICAgICBicm9rZW4gY29ubmVjdGlvbiB0byB0aGUgc2VydmVyLiBUaGVyZSBtdXN0IGJlIGEgIG5hbWVkXG4iCiIgICAgICAgICAgcGh5c2ljYWwgIGZpbGUgIHRvICBhcHBlbmQgIHRvIGZvciB0aGlzIHRvIHdvcmsuICBOb3RlOlxuIgoiICAgICAgICAgIFVwbG9hZCByZXN1bWUgaXMgZGVwZW5pbmcgb24gYSBjb21tYW5kIG5hbWVkICBTSVpFICBub3RcbiIKIiAgICAgICAgICBhbHdheXMgcHJlc2VudCBpbiBhbGwgZnRwIHNlcnZlcnMhIFVwbG9hZCByZXN1bWUgaXMgZm9yXG4iCiIgICAgICAgICAgRlRQIG9ubHkuICBIVFRQIHJlc3VtZSBpcyBvbmx5IHBvc3NpYmxlICB3aXRoICBIVFRQLzEuMVxuIgoiICAgICAgICAgIG9yIGxhdGVyIHNlcnZlcnMuXG4iCiJcbiIKIiAgICAgLUMvLS1jb250aW51ZS1hdCA8b2Zmc2V0PlxuIgoiICAgICAgICAgIENvbnRpbnVlL1Jlc3VtZSAgYSAgcHJldmlvdXMgZmlsZSB0cmFuc2ZlciBhdCB0aGUgZ2l2ZW5cbiIKIiAgICAgICAgICBvZmZzZXQuIFRoZSBnaXZlbiBvZmZzZXQgaXMgdGhlIGV4YWN0IG51bWJlciAgb2YgIGJ5dGVzXG4iCiIgICAgICAgICAgdGhhdCAgd2lsbCBiZSBza2lwcGVkIGNvdW50ZWQgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZVxuIgoiICAgICAgICAgIHNvdXJjZSBmaWxlIGJlZm9yZSBpdCBpcyB0cmFuc2ZlcmVkIHRvIHRoZSBkZXN0aW5hdGlvbi5cbiIKIiAgICAgICAgICBJZiAgdXNlZCB3aXRoIHVwbG9hZHMsIHRoZSBmdHAgc2VydmVyIGNvbW1hbmQgU0laRSB3aWxsXG4iCiIgICAgICAgICAgbm90IGJlIHVzZWQgYnkgY3VybC4gVXBsb2FkIHJlc3VtZSAgaXMgIGZvciAgRlRQICBvbmx5LlxuIgoiICAgICAgICAgIEhUVFAgIHJlc3VtZSAgaXMgIG9ubHkgIHBvc3NpYmxlIHdpdGggSFRUUC8xLjEgb3IgbGF0ZXJcbiIKIiAgICAgICAgICBzZXJ2ZXJzLlxuIgoiXG4iCiIgICAgIC1kLy0tZGF0YSA8ZGF0YT5cbiIKIiAgICAgICAgICAoSFRUUCkgU2VuZHMgdGhlIHNwZWNpZmllZCBkYXRhIGluIGEgIFBPU1QgIHJlcXVlc3QgIHRvXG4iCiIgICAgICAgICAgdGhlICBIVFRQIHNlcnZlci4gTm90ZSB0aGF0IHRoZSBkYXRhIGlzIHNlbnQgZXhhY3RseSBhc1xuIgoiICAgICAgICAgIHNwZWNpZmllZCAgd2l0aCAgbm8gIGV4dHJhICBwcm9jZXNzaW5nLiAgIFRoZSAgZGF0YSAgaXNcbiIKIiAgICAgICAgICBleHBlY3RlZCAgdG8gIGJlIFwidXJsLWVuY29kZWRcIi4gVGhpcyB3aWxsIGNhdXNlIGN1cmwgdG9cbiIKIiAgICAgICAgICBwYXNzIHRoZSBkYXRhIHRvICB0aGUgIHNlcnZlciAgdXNpbmcgIHRoZSAgY29udGVudC10eXBlXG4iCiIgICAgICAgICAgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkLiBDb21wYXJlIHRvIC1GLlxuIgoiXG4iCiIgICAgICAgICAgSWYgIHlvdSAgc3RhcnQgIHRoZSAgZGF0YSAgd2l0aCAgdGhlIGxldHRlciBALCB0aGUgcmVzdFxuIgoiICAgICAgICAgIHNob3VsZCBiZSBhIGZpbGUgbmFtZSB0byByZWFkIHRoZSBkYXRhIGZyb20sICBvciAgLSAgaWZcbiIKIiAgICAgICAgICB5b3UgIHdhbnQgIGN1cmwgIHRvIHJlYWQgdGhlIGRhdGEgZnJvbSBzdGRpbi4gIFRoZSBjb26tXG4iCiIgICAgICAgICAgdGVudHMgb2YgdGhlIGZpbGUgbXVzdCBhbHJlYWR5IGJlIHVybC1lbmNvZGVkLlxuIgoiXG4iCiIgICAgIC1ELy0tZHVtcC1oZWFkZXIgPGZpbGU+XG4iCiIgICAgICAgICAgKEhUVFAvRlRQKSBXcml0ZSB0aGUgSFRUUCBoZWFkZXJzIHRvIHRoaXMgIGZpbGUuICBXcml0ZVxuIgoiICAgICAgICAgIHRoZSBGVFAgZmlsZSBpbmZvIHRvIHRoaXMgZmlsZSBpZiAtSS8tLWhlYWQgaXMgdXNlZC5cbiIKIlxuIgoiICAgICAgICAgIFRoaXMgIG9wdGlvbiBpcyBoYW5keSB0byB1c2Ugd2hlbiB5b3Ugd2FudCB0byBzdG9yZSB0aGVcbiIKIiAgICAgICAgICBjb29raWVzIHRoYXQgYSBIVFRQIHNpdGUgIHNlbmRzICB0byAgeW91LiAgVGhlICBjb29raWVzXG4iCiIgICAgICAgICAgY291bGQgdGhlbiBiZSByZWFkIGluIGEgc2Vjb25kIGN1cmwgaW52b2tlIGJ5IHVzaW5nIHRoZVxuIgoiICAgICAgICAgIC1iLy0tY29va2llIG9wdGlvbiFcbiIKIlxuIgoiICAgICAtZS8tLXJlZmVyZXIgPFVSTD5cbiIKIiAgICAgICAgICAoSFRUUCkgU2VuZHMgdGhlIFwiUmVmZXJlciBQYWdlXCIgaW5mb3JtYXRpb24gdG8gdGhlIEhUVFBcbiIKIiAgICAgICAgICBzZXJ2ZXIuIFNvbWUgYmFkbHkgZG9uZSBDR0lzIGZhaWwgaWYgaXQncyBub3Qgc2V0LiBUaGlzXG4iCiIgICAgICAgICAgY2FuIGFsc28gYmUgc2V0IHdpdGggdGhlIC1ILy0taGVhZGVyIGZsYWcgb2YgY291cnNlLlxuIgoiXG4iCiIgICAgIC1FLy0tY2VydCA8Y2VydGlmaWNhdGVbOnBhc3N3b3JkXT5cbiIKIiAgICAgICAgICAoSFRUUFMpIFRlbGxzIGN1cmwgdG8gIHVzZSAgdGhlICBzcGVjaWZpZWQgIGNlcnRpZmljYXRlXG4iCiIgICAgICAgICAgZmlsZSAgd2hlbiAgZ2V0dGluZyAgYSBmaWxlIHdpdGggSFRUUFMuIFRoZSBjZXJ0aWZpY2F0ZVxuIgoiICAgICAgICAgIG11c3QgYmUgaW4gUEVNIGZvcm1hdC4gIElmIHRoZSBvcHRpb25hbCBwYXNzd29yZCAgaXNuJ3RcbiIKIiAgICAgICAgICBzcGVjaWZpZWQsIGl0IHdpbGwgYmUgcXVlcmllZCBmb3Igb24gdGhlIHRlcm1pbmFsLiBOb3RlXG4iCiIgICAgICAgICAgdGhhdCB0aGlzIGNlcnRpZmljYXRlIGlzIHRoZSBwcml2YXRlIGtleSBhbmQgIHRoZSAgcHJprVxuIgoiICAgICAgICAgIHZhdGUgY2VydGlmaWNhdGUgY29uY2F0ZW5hdGVkIVxuIgoiXG4iCiIgICAgIC1mLy0tZmFpbFxuIgoiICAgICAgICAgIChIVFRQKSAgRmFpbCAgc2lsZW50bHkgIChubyAgb3V0cHV0ICBhdCAgYWxsKSBvbiBzZXJ2ZXJcbiIKIiAgICAgICAgICBlcnJvcnMuIFRoaXMgaXMgbW9zdGx5IGRvbmUgbGlrZSB0aGlzIHRvIGJldHRlciAgZW5hYmxlXG4iCiIgICAgICAgICAgc2NyaXB0cyAgZXRjICB0byAgYmV0dGVyICBkZWFsIHdpdGggZmFpbGVkIGF0dGVtcHRzLiBJblxuIgoiICAgICAgICAgIG5vcm1hbCBjYXNlcyB3aGVuIGEgSFRUUCBzZXJ2ZXIgZmFpbHMgdG8gZGVsaXZlciBhIGRvY61cbiIKIiAgICAgICAgICB1bWVudCwgIGl0ICByZXR1cm5zICBhICBIVE1MIGRvY3VtZW50IHN0YXRpbmcgc28gKHdoaWNoXG4iCiIgICAgICAgICAgb2Z0ZW4gYWxzbyBkZXNjcmliZXMgd2h5IGFuZCBtb3JlKS4gVGhpcyBmbGFnIHdpbGwgcHJlrVxuIgoiICAgICAgICAgIHZlbnQgIGN1cmwgIGZyb20gIG91dHB1dHRpbmcgIHRoYXQgIGFuZCAgZmFpbCAgc2lsZW50bHlcbiIKIiAgICAgICAgICBpbnN0ZWFkLlxuIgoiXG4iCiIgICAgIC1GLy0tZm9ybSA8bmFtZT1jb250ZW50PlxuIgoiICAgICAgICAgIChIVFRQKSBUaGlzIGxldHMgY3VybCBlbXVsYXRlIGEgZmlsbGVkIGluIGZvcm0gaW4gd2hpY2hcbiIKIiAgICAgICAgICBhICB1c2VyIGhhcyBwcmVzc2VkIHRoZSBzdWJtaXQgYnV0dG9uLiBUaGlzIGNhdXNlcyBjdXJsXG4iCiIgICAgICAgICAgdG8gUE9TVCBkYXRhIHVzaW5nIHRoZSBjb250ZW50LXR5cGUgbXVsdGlwYXJ0L2Zvcm0tZGF0YVxuIgoiICAgICAgICAgIGFjY29yZGluZyAgdG8gUkZDMTg2Ny4gVGhpcyBlbmFibGVzIHVwbG9hZGluZyBvZiBiaW5hcnlcbiIKIiAgICAgICAgICBmaWxlcyBldGMuIFRvIGZvcmNlIHRoZSAnY29udGVudCcgcGFydCB0byBiZSByZWFkICBmcm9tXG4iCiIgICAgICAgICAgYSAgZmlsZSwgIHByZWZpeCB0aGUgZmlsZSBuYW1lIHdpdGggYW4gQCBzaWduLiBFeGFtcGxlLFxuIgoiICAgICAgICAgIHRvIHNlbmQgeW91ciBwYXNzd29yZCBmaWxlIHRvIHRoZSBzZXJ2ZXIsIHdoZXJlICAncGFzc61cbiIKIiAgICAgICAgICB3b3JkJyAgIGlzICAgdGhlICAgbmFtZSAgb2YgIHRoZSAgZm9ybS1maWVsZCAgdG8gIHdoaWNoXG4iCiIgICAgICAgICAgL2V0Yy9wYXNzd2Qgd2lsbCBiZSB0aGUgaW5wdXQ6XG4iCiJcbiIKIiAgICAgICAgICBjdXJsIC1GIHBhc3N3b3JkPUAvZXRjL3Bhc3N3ZCB3d3cubXlwYXNzd29yZHMuY29tXG4iCiIgICAgICAgICAgVG8gcmVhZCB0aGUgZmlsZSdzIGNvbnRlbnQgZnJvbSBzdGRpbiBpbnN0ZWQgb2YgYSBmaWxlLFxuIgoiICAgICAgICAgIHVzZSAtIHdoZXJlIHRoZSBmaWxlIG5hbWUgc2hvdWxkJ3ZlIGJlZW4uXG4iCiJcbiIKIiAgICAgLWgvLS1oZWxwXG4iCiIgICAgICAgICAgVXNhZ2UgaGVscC5cbiIKIlxuIgoiICAgICAtSC8tLWhlYWRlciA8aGVhZGVyPlxuIgoiICAgICAgICAgIChIVFRQKSBFeHRyYSBoZWFkZXIgdG8gdXNlIHdoZW4gZ2V0dGluZyBhIHdlYiBwYWdlLiBZb3VcbiIKIiAgICAgICAgICBtYXkgc3BlY2lmeSBhbnkgbnVtYmVyIG9mIGV4dHJhIGhlYWRlcnMuIE5vdGUgIHRoYXQgIGlmXG4iCiIgICAgICAgICAgeW91ICBzaG91bGQgIGFkZCBhIGN1c3RvbSBoZWFkZXIgdGhhdCBoYXMgdGhlIHNhbWUgbmFtZVxuIgoiICAgICAgICAgIGFzIG9uZSBvZiB0aGUgaW50ZXJuYWwgb25lcyBjdXJsIHdvdWxkIHVzZSwgeW91ciBleHRlcq1cbiIKIiAgICAgICAgICBuYWxseSAgc2V0ICBoZWFkZXIgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIGludGVybmFsXG4iCiIgICAgICAgICAgb25lLiBUaGlzIGFsbG93cyB5b3UgdG8gbWFrZSBldmVuIHRyaWNraWVyICBzdHVmZiAgdGhhblxuIgoiICAgICAgICAgIGN1cmwgIHdvdWxkICBub3JtYWxseSBkby4gWW91IHNob3VsZCBub3QgcmVwbGFjZSBpbnRlcq1cbiIKIiAgICAgICAgICBuYWxseSBzZXQgaGVhZGVycyB3aXRob3V0IGtub3dpbmcgcGVyZmVjdGx5ICB3ZWxsICB3aGF0XG4iCiIgICAgICAgICAgeW91J3JlIGRvaW5nLlxuIgoiXG4iCiIgICAgIC1pLy0taW5jbHVkZVxuIgoiICAgICAgICAgIChIVFRQKSBJbmNsdWRlIHRoZSBIVFRQLWhlYWRlciBpbiB0aGUgb3V0cHV0LiBUaGUgSFRUUC1cbiIKIiAgICAgICAgICBoZWFkZXIgaW5jbHVkZXMgdGhpbmdzIGxpa2Ugc2VydmVyLW5hbWUsICBkYXRlICBvZiAgdGhlXG4iCiIgICAgICAgICAgZG9jdW1lbnQsIEhUVFAtdmVyc2lvbiBhbmQgbW9yZS4uLlxuIgoiXG4iCiIgICAgIC1JLy0taGVhZFxuIgoiICAgICAgICAgIChIVFRQL0ZUUCkgIEZldGNoICB0aGUgIEhUVFAtaGVhZGVyICBvbmx5ISBIVFRQLXNlcnZlcnNcbiIKIiAgICAgICAgICBmZWF0dXJlIHRoZSBjb21tYW5kIEhFQUQgd2hpY2ggdGhpcyB1c2VzIHRvIGdldCBub3RoaW5nXG4iCiIgICAgICAgICAgYnV0ICB0aGUgaGVhZGVyIG9mIGEgZG9jdW1lbnQuIFdoZW4gdXNlZCBvbiBhIEZUUCBmaWxlLFxuIgoiICAgICAgICAgIGN1cmwgZGlzcGxheXMgdGhlIGZpbGUgc2l6ZSBvbmx5LlxuIgoiXG4iCiIgICAgIC1LLy0tY29uZmlnIDxjb25maWcgZmlsZT5cbiIKIiAgICAgICAgICBTcGVjaWZ5IHdoaWNoIGNvbmZpZyBmaWxlIHRvIHJlYWQgY3VybCBhcmd1bWVudHMgIGZyb20uXG4iCiIgICAgICAgICAgVGhlICBjb25maWcgIGZpbGUgIGlzIGEgdGV4dCBmaWxlIGluIHdoaWNoIGNvbW1hbmQgbGluZVxuIgoiICAgICAgICAgIGFyZ3VtZW50cyBjYW4gYmUgd3JpdHRlbiB3aGljaCB0aGVuIHdpbGwgYmUgdXNlZCBhcyAgaWZcbiIKIiAgICAgICAgICB0aGV5ICB3ZXJlICB3cml0dGVuICBvbiB0aGUgYWN0dWFsIGNvbW1hbmQgbGluZS4gSWYgdGhlXG4iCiIgICAgICAgICAgZmlyc3QgY29sdW1uIG9mIGEgY29uZmlnIGxpbmUgaXMgYSAnIycgIGNoYXJhY3RlciwgIHRoZVxuIgoiICAgICAgICAgIHJlc3Qgb2YgdGhlIGxpbmUgd2lsbCBiZSB0cmVhdGVkIGFzIGEgY29tbWVudC5cbiIKIlxuIgoiICAgICAgICAgIFNwZWNpZnkgIHRoZSBmaWxlbmFtZSBhcyAnLScgdG8gbWFrZSBjdXJsIHJlYWQgdGhlIGZpbGVcbiIKIiAgICAgICAgICBmcm9tIHN0ZGluLlxuIgoiXG4iCiIgICAgIC1sLy0tbGlzdC1vbmx5XG4iCiIgICAgICAgICAgKEZUUCkgV2hlbiBsaXN0aW5nIGFuIEZUUCBkaXJlY3RvcnksIHRoaXMgc3dpdGNoIGZvcmNlc1xuIgoiICAgICAgICAgIGEgIG5hbWUtb25seSAgdmlldy4gICBFc3BlY2lhbGx5ICB1c2VmdWwgaWYgeW91IHdhbnQgdG9cbiIKIiAgICAgICAgICBtYWNoaW5lLXBhcnNlIHRoZSBjb250ZW50cyBvZiBhbiAgRlRQICBkaXJlY3RvcnkgIHNpbmNlXG4iCiIgICAgICAgICAgdGhlICBub3JtYWwgIGRpcmVjdG9yeSB2aWV3IGRvZXNuJ3QgdXNlIGEgc3RhbmRhcmQgbG9va1xuIgoiICAgICAgICAgIG9yIGZvcm1hdC5cbiIKIlxuIgoiICAgICAtTC8tLWxvY2F0aW9uXG4iCiIgICAgICAgICAgKEhUVFAvSFRUUFMpIElmIHRoZSBzZXJ2ZXIgcmVwb3J0cyB0aGF0ICB0aGUgIHJlcXVlc3RlZFxuIgoiICAgICAgICAgIHBhZ2UgIGhhcyAgYSAgZGlmZmVyZW50ICBsb2NhdGlvbiAgKGluZGljYXRlZCAgd2l0aCB0aGVcbiIKIiAgICAgICAgICBoZWFkZXIgbGluZSBMb2NhdGlvbjopIHRoaXMgZmxhZyB3aWxsIGxldCBjdXJsICBhdHRlbXB0XG4iCiIgICAgICAgICAgdG8gcmVhdHRlbXB0IHRoZSBnZXQgb24gdGhlIG5ldyBwbGFjZS4gSWYgdXNlZCB0b2dldGhlclxuIgoiICAgICAgICAgIHdpdGggLWkgb3IgLUksIGhlYWRlcnMgZnJvbSBhbGwgcmVxdWVzdGVkIHBhZ2VzIHdpbGwgYmVcbiIKIiAgICAgICAgICBzaG93bi5cbiIKIlxuIgoiICAgICAtbS8tLW1heC10aW1lIDxzZWNvbmRzPlxuIgoiICAgICAgICAgIE1heGltdW0gdGltZSBpbiBzZWNvbmRzIHRoYXQgeW91IGFsbG93IHRoZSB3aG9sZSBvcGVyYa1cbiIKIiAgICAgICAgICB0aW9uIHRvIHRha2UuICBUaGlzIGlzIHVzZWZ1bCBmb3IgcHJldmVudGluZyB5b3VyIGJhdGNoXG4iCiIgICAgICAgICAgam9icyAgZnJvbSAgaGFuZ2luZyAgZm9yICBob3VycyBkdWUgdG8gc2xvdyBuZXR3b3JrcyBvclxuIgoiICAgICAgICAgIGxpbmtzIGdvaW5nIGRvd24uICBUaGlzIGRvZXNuJ3Qgd29yayBwcm9wZXJseSBpbiAgd2luMzJcbiIKIiAgICAgICAgICBzeXN0ZW1zLlxuIgoiXG4iCiIgICAgIC1NLy0tbWFudWFsXG4iCiIgICAgICAgICAgTWFudWFsLiBEaXNwbGF5IHRoZSBodWdlIGhlbHAgdGV4dC5cbiIKIlxuIgoiICAgICAtbi8tLW5ldHJjXG4iCiIgICAgICAgICAgTWFrZXMgIGN1cmwgIHNjYW4gIHRoZSAgLm5ldHJjICBmaWxlIGluIHRoZSB1c2VyJ3MgaG9tZVxuIgoiICAgICAgICAgIGRpcmVjdG9yeSBmb3IgbG9naW4gbmFtZSBhbmQgcGFzc3dvcmQuICBUaGlzICBpcyAgdHlwaa1cbiIKIiAgICAgICAgICBjYWxseSAgdXNlZCAgZm9yICBmdHAgIG9uIHVuaXguIElmIHVzZWQgd2l0aCBodHRwLCBjdXJsXG4iCik7CiBwdXRzKAoiICAgICAgICAgIHdpbGwgIGVuYWJsZSAgdXNlciAgYXV0aGVudGljYXRpb24uICBTZWUgIG5ldHJjKDUpICBmb3JcbiIKIiAgICAgICAgICBkZXRhaWxzICBvbiAgdGhlIGZpbGUgZm9ybWF0LiBDdXJsIHdpbGwgbm90IGNvbXBsYWluIGlmXG4iCiIgICAgICAgICAgdGhhdCBmaWxlIGhhc24ndCB0aGUgcmlnaHQgcGVybWlzc2lvbnMgKGl0ICBzaG91bGQgIG5vdFxuIgoiICAgICAgICAgIGJlICB3b3JsZCBub3IgZ3JvdXAgcmVhZGFibGUpLiBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGVcbiIKIiAgICAgICAgICBcIkhPTUVcIiBpcyB1c2VkIHRvIGZpbmQgdGhlIGhvbWUgZGlyZWN0b3J5LlxuIgoiXG4iCiIgICAgICAgICAgQSBxdWljayBhbmQgdmVyeSBzaW1wbGUgIGV4YW1wbGUgIG9mICBob3cgIHRvICBzZXR1cCAgYVxuIgoiICAgICAgICAgIC5uZXRyYyAgIHRvICAgYWxsb3cgICBjdXJsICAgdG8gICBmdHAgIHRvICB0aGUgIG1hY2hpbmVcbiIKIiAgICAgICAgICBob3N0LmRvbWFpbi5jb20gd2l0aCB1c2VyIG5hbWVcbiIKIlxuIgoiICAgICAgICAgIG1hY2hpbmUgaG9zdC5kb21haW4uY29tIGxvZ2luIG15c2VsZiBwYXNzd29yZCBzZWNyZXRcbiIKIlxuIgoiICAgICAtTi8tLW5vLWJ1ZmZlclxuIgoiICAgICAgICAgIERpc2FibGVzIHRoZSBidWZmZXJpbmcgb2YgdGhlIG91dHB1dCBzdHJlYW0uIEluICBub3JtYWxcbiIKIiAgICAgICAgICB3b3JrIHNpdHVhdGlvbnMsIGN1cmwgd2lsbCB1c2UgYSBzdGFuZGFyZCBidWZmZXJlZCBvdXStXG4iCiIgICAgICAgICAgcHV0IHN0cmVhbSB0aGF0IHdpbGwgaGF2ZSB0aGUgZWZmZWN0IHRoYXQgaXQgd2lsbCAgb3V0rVxuIgoiICAgICAgICAgIHB1dCAgdGhlICBkYXRhICBpbiBjaHVua3MsIG5vdCBuZWNlc3NhcmlseSBleGFjdGx5IHdoZW5cbiIKIiAgICAgICAgICB0aGUgZGF0YSBhcnJpdmVzLiAgVXNpbmcgdGhpcyBvcHRpb24gd2lsbCBkaXNhYmxlICB0aGF0XG4iCiIgICAgICAgICAgYnVmZmVyaW5nLlxuIgoiXG4iCiIgICAgIC1vLy0tb3V0cHV0IDxmaWxlPlxuIgoiICAgICAgICAgIFdyaXRlICBvdXRwdXQgIHRvICA8ZmlsZT4gaW5zdGVhZCBvZiBzdGRvdXQuIElmIHlvdSBhcmVcbiIKIiAgICAgICAgICB1c2luZyB7fSBvciBbXSB0byBmZXRjaCBtdWx0aXBsZSBkb2N1bWVudHMsIHlvdSBjYW4gdXNlXG4iCiIgICAgICAgICAgJyMnICBmb2xsb3dlZCBieSBhIG51bWJlciBpbiB0aGUgPGZpbGU+IHNwZWNpZmllci4gVGhhdFxuIgoiICAgICAgICAgIHZhcmlhYmxlIHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgY3VycmVudCAgc3RyaW5nICBmb3JcbiIKIiAgICAgICAgICB0aGUgVVJMIGJlaW5nIGZldGNoZWQuIExpa2UgaW46XG4iCiJcbiIKIiAgICAgICAgICAgIGN1cmwgaHR0cDovL3tvbmUsdHdvfS5zaXRlLmNvbSAtbyBcImZpbGVfIzEudHh0XCJcbiIKIlxuIgoiICAgICAgICAgIG9yIHVzZSBzZXZlcmFsIHZhcmlhYmxlcyBsaWtlOlxuIgoiXG4iCiIgICAgICAgICAgICBjdXJsIGh0dHA6Ly97c2l0ZSxob3N0fS5ob3N0WzEtNV0uY29tIC1vIFwiIzFfIzJcIlxuIgoiXG4iCiIgICAgIC1PLy0tcmVtb3RlLW5hbWVcbiIKIiAgICAgICAgICBXcml0ZSBvdXRwdXQgdG8gYSBsb2NhbCBmaWxlIG5hbWVkIGxpa2UgdGhlIHJlbW90ZSBmaWxlXG4iCiIgICAgICAgICAgd2UgZ2V0LiAoT25seSB0aGUgZmlsZSBwYXJ0IG9mIHRoZSByZW1vdGUgZmlsZSBpcyB1c2VkLFxuIgoiICAgICAgICAgIHRoZSBwYXRoIGlzIGN1dCBvZmYuKVxuIgoiXG4iCiIgICAgIC1QLy0tZnRwcG9ydCA8YWRkcmVzcz5cbiIKIiAgICAgICAgICAoRlRQKSAgUmV2ZXJzZXMgIHRoZSBpbml0aWF0b3IvbGlzdGVuZXIgcm9sZXMgd2hlbiBjb26tXG4iCiIgICAgICAgICAgbmVjdGluZyB3aXRoIGZ0cC4gVGhpcyBzd2l0Y2ggbWFrZXMgQ3VybCB1c2UgIHRoZSAgUE9SVFxuIgoiICAgICAgICAgIGNvbW1hbmQgIGluc3RlYWQgIG9mICBQQVNWLiBJbiBwcmFjdGljZSwgUE9SVCB0ZWxscyB0aGVcbiIKIiAgICAgICAgICBzZXJ2ZXIgdG8gY29ubmVjdCB0byB0aGUgY2xpZW50J3Mgc3BlY2lmaWVkIGFkZHJlc3MgYW5kXG4iCiIgICAgICAgICAgcG9ydCwgIHdoaWxlIFBBU1YgYXNrcyB0aGUgc2VydmVyIGZvciBhbiBpcCBhZGRyZXNzIGFuZFxuIgoiICAgICAgICAgIHBvcnQgdG8gY29ubmVjdCB0by4gPGFkZHJlc3M+IHNob3VsZCBiZSBvbmUgb2Y6XG4iCiJcbiIKIiAgICAgICAgICBpbnRlcmZhY2UgICBpLmUgXCJldGgwXCIgdG8gc3BlY2lmeSB3aGljaCBpbnRlcmZhY2UncyAgSVBcbiIKIiAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzIHlvdSB3YW50IHRvIHVzZSAgKFVuaXggb25seSlcbiIKIlxuIgoiICAgICAgICAgIElQIGFkZHJlc3MgIGkuZSBcIjE5Mi4xNjguMTAuMVwiIHRvIHNwZWNpZnkgZXhhY3QgSVAgbnVtrVxuIgoiICAgICAgICAgICAgICAgICAgICAgIGJlclxuIgoiXG4iCiIgICAgICAgICAgaG9zdCBuYW1lICAgaS5lIFwibXkuaG9zdC5kb21haW5cIiB0byBzcGVjaWZ5IG1hY2hpbmVcbiIKIlxuIgoiICAgICAgICAgIC0gICAgICAgICAgIChhbnkgc2luZ2xlLWxldHRlciBzdHJpbmcpIHRvIG1ha2UgaXQgIHBpY2tcbiIKIiAgICAgICAgICAgICAgICAgICAgICB0aGUgbWFjaGluZSdzIGRlZmF1bHRcbiIKIlxuIgoiICAgICAtcSAgIElmIHVzZWQgYXMgdGhlIGZpcnN0IHBhcmFtZXRlciBvbiB0aGUgY29tbWFuZCBsaW5lLCB0aGVcbiIKIiAgICAgICAgICAkSE9NRS8uY3VybHJjIGZpbGUgd2lsbCBub3QgYmUgcmVhZCBhbmQgdXNlZCBhcyBhICBjb26tXG4iCiIgICAgICAgICAgZmlnIGZpbGUuXG4iCiJcbiIKIiAgICAgLVEvLS1xdW90ZSA8Y29tYW5kPlxuIgoiICAgICAgICAgIChGVFApICBTZW5kICBhbiAgYXJiaXRyYXJ5ICBjb21tYW5kICB0byAgdGhlIHJlbW90ZSBGVFBcbiIKIiAgICAgICAgICBzZXJ2ZXIsIGJ5IHVzaW5nIHRoZSBRVU9URSBjb21tYW5kIG9mIHRoZSAgc2VydmVyLiAgTm90XG4iCiIgICAgICAgICAgYWxsICBzZXJ2ZXJzIHN1cHBvcnQgdGhpcyBjb21tYW5kLCBhbmQgdGhlIHNldCBvZiBRVU9URVxuIgoiICAgICAgICAgIGNvbW1hbmRzIGFyZSBzZXJ2ZXIgc3BlY2lmaWMhIFF1b3RlIGNvbW1hbmRzICBhcmUgIHNlbnRcbiIKIiAgICAgICAgICBCRUZPUkUgIHRoZSAgdHJhbnNmZXIgaXMgdGFraW5nIHBsYWNlLiBUbyBtYWtlIGNvbW1hbmRzXG4iCiIgICAgICAgICAgdGFrZSBwbGFjZSBhZnRlciBhICBzdWNjZXNzZnVsICB0cmFuc2ZlciwgIHByZWZpeCAgdGhlbVxuIgoiICAgICAgICAgIHdpdGggYSBkYXNoICctJy4gWW91IG1heSBzcGVjaWZ5IGFueSBhbW91bnQgb2YgY29tbWFuZHNcbiIKIiAgICAgICAgICB0byBiZSBydW4gYmVmb3JlIGFuZCBhZnRlciB0aGUgdHJhbnNmZXIuIElmIHRoZSAgc2VydmVyXG4iCiIgICAgICAgICAgcmV0dXJucyAgZmFpbHVyZSAgZm9yICBvbmUgIG9mIHRoZSBjb21tYW5kcywgdGhlIGVudGlyZVxuIgoiICAgICAgICAgIG9wZXJhdGlvbiB3aWxsIGJlIGFib3J0ZWQuXG4iCiJcbiIKIiAgICAgLXIvLS1yYW5nZSA8cmFuZ2U+XG4iCiIgICAgICAgICAgKEhUVFAvRlRQKSBSZXRyaWV2ZSBhIGJ5dGUgcmFuZ2UgKGkuZSBhICBwYXJ0aWFsICBkb2N1rVxuIgoiICAgICAgICAgIG1lbnQpICBmcm9tICBhICBIVFRQLzEuMSAgb3IgIEZUUCBzZXJ2ZXIuIFJhbmdlcyBjYW4gYmVcbiIKIiAgICAgICAgICBzcGVjaWZpZWQgaW4gYSBudW1iZXIgb2Ygd2F5cy5cbiIKIlxuIgoiICAgICAgICAgIDAtNDk5ICAgICBzcGVjaWZpZXMgdGhlIGZpcnN0IDUwMCBieXRlc1xuIgoiXG4iCiIgICAgICAgICAgNTAwLTk5OSAgIHNwZWNpZmllcyB0aGUgc2Vjb25kIDUwMCBieXRlc1xuIgoiXG4iCiIgICAgICAgICAgLTUwMCAgICAgIHNwZWNpZmllcyB0aGUgbGFzdCA1MDAgYnl0ZXNcbiIKIlxuIgoiICAgICAgICAgIDk1MDAgICAgICBzcGVjaWZpZXMgdGhlIGJ5dGVzIGZyb20gb2Zmc2V0IDk1MDAgYW5kIGZvcq1cbiIKIiAgICAgICAgICAgICAgICAgICAgd2FyZFxuIgoiXG4iCiIgICAgICAgICAgMC0wLC0xICAgIHNwZWNpZmllcyB0aGUgZmlyc3QgYW5kIGxhc3QgYnl0ZSBvbmx5KCopKEgpXG4iCiIgICAgICAgICAgNTAwLTcwMCw2MDAtNzk5XG4iCiIgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllcyAzMDAgYnl0ZXMgZnJvbSBvZmZzZXQgNTAwKEgpXG4iCiJcbiIKIiAgICAgICAgICAxMDAtMTk5LDUwMC01OTlcbiIKIiAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVzIHR3byBzZXBhcmF0ZSAxMDAgYnl0ZXMgcmFuZ2VzKCopKEgpXG4iCiJcbiIKIiAgICAgKCopID0gTk9URSB0aGF0IHRoaXMgd2lsbCBjYXVzZSB0aGUgc2VydmVyIHRvIHJlcGx5ICB3aXRoICBhXG4iCiIgICAgIG11bHRpcGFydCByZXNwb25zZSFcbiIKIlxuIgoiICAgICBZb3UgIHNob3VsZCAgYWxzbyBiZSBhd2FyZSB0aGF0IG1hbnkgSFRUUC8xLjEgc2VydmVycyBkbyBub3RcbiIKIiAgICAgaGF2ZSB0aGlzIGZlYXR1cmUgZW5hYmxlZCwgc28gdGhhdCB3aGVuIHlvdSBhdHRlbXB0IHRvIGdldCBhXG4iCiIgICAgIHJhbmdlLCB5b3UnbGwgaW5zdGVhZCBnZXQgdGhlIHdob2xlIGRvY3VtZW50LlxuIgoiXG4iCiIgICAgIEZUUCAgcmFuZ2UgIGRvd25sb2FkcyBvbmx5IHN1cHBvcnQgdGhlIHNpbXBsZSBzeW50YXggJ3N0YXJ0LVxuIgoiICAgICBzdG9wJyAob3B0aW9uYWxseSB3aXRoICBvbmUgIG9mICB0aGUgIG51bWJlcnMgIG9taXR0ZWQpLiAgSXRcbiIKIiAgICAgZGVwZW5kcyBvbiB0aGUgbm9uLVJGQyBjb21tYW5kIFNJWkUuXG4iCiJcbiIKIiAgICAgLXMvLS1zaWxlbnRcbiIKIiAgICAgICAgICBTaWxlbnQgIG1vZGUuICBEb24ndCAgc2hvdyBwcm9ncmVzcyBtZXRlciBvciBlcnJvciBtZXOtXG4iCiIgICAgICAgICAgc2FnZXMuICBNYWtlcyBDdXJsIG11dGUuXG4iCiJcbiIKIiAgICAgLVMvLS1zaG93LWVycm9yXG4iCiIgICAgICAgICAgV2hlbiB1c2VkIHdpdGggLXMgaXQgbWFrZXMgY3VybCBzaG93IGVycm9yICBtZXNzYWdlICBpZlxuIgoiICAgICAgICAgIGl0IGZhaWxzLlxuIgoiXG4iCiIgICAgIC10Ly0tdXBsb2FkXG4iCiIgICAgICAgICAgVHJhbnNmZXIgIHRoZSAgc3RkaW4gIGRhdGEgIHRvIHRoZSBzcGVjaWZpZWQgZmlsZS4gQ3VybFxuIgoiICAgICAgICAgIHdpbGwgcmVhZCBldmVyeXRoaW5nIGZyb20gc3RkaW4gIHVudGlsICBFT0YgIGFuZCAgc3RvcmVcbiIKIiAgICAgICAgICB3aXRoICB0aGUgIHN1cHBsaWVkICBuYW1lLiBJZiB0aGlzIGlzIHVzZWQgb24gYSBodHRwKHMpXG4iCiIgICAgICAgICAgc2VydmVyLCB0aGUgUFVUIGNvbW1hbmQgd2lsbCBiZSB1c2VkLlxuIgoiXG4iCiIgICAgIC1ULy0tdXBsb2FkLWZpbGUgPGZpbGU+XG4iCiIgICAgICAgICAgTGlrZSAtdCwgYnV0IHRoaXMgdHJhbnNmZXJzIHRoZSBzcGVjaWZpZWQgIGxvY2FsICBmaWxlLlxuIgoiICAgICAgICAgIElmICB0aGVyZSAgaXMgIG5vICBmaWxlIHBhcnQgaW4gdGhlIHNwZWNpZmllZCBVUkwsIEN1cmxcbiIKIiAgICAgICAgICB3aWxsIGFwcGVuZCB0aGUgbG9jYWwgZmlsZSBuYW1lLiBOT1RFIHRoYXQgeW91IG11c3QgdXNlXG4iCiIgICAgICAgICAgYSAgdHJhaWxpbmcgIC8gb24gdGhlIGxhc3QgZGlyZWN0b3J5IHRvIHJlYWxseSBwcm92ZSB0b1xuIgoiICAgICAgICAgIEN1cmwgdGhhdCB0aGVyZSBpcyBubyBmaWxlIG5hbWUgb3IgY3VybCB3aWxsIHRoaW5rIHRoYXRcbiIKIiAgICAgICAgICB5b3VyICBsYXN0ICBkaXJlY3RvcnkgIG5hbWUgIGlzIHRoZSByZW1vdGUgZmlsZSBuYW1lIHRvXG4iCiIgICAgICAgICAgdXNlLiBUaGF0IHdpbGwgbW9zdCBsaWtlbHkgY2F1c2UgdGhlICB1cGxvYWQgIG9wZXJhdGlvblxuIgoiICAgICAgICAgIHRvICBmYWlsLiAgSWYgdGhpcyBpcyB1c2VkIG9uIGEgaHR0cChzKSBzZXJ2ZXIsIHRoZSBQVVRcbiIKIiAgICAgICAgICBjb21tYW5kIHdpbGwgYmUgdXNlZC5cbiIKIlxuIgoiICAgICAtdS8tLXVzZXIgPHVzZXI6cGFzc3dvcmQ+XG4iCiIgICAgICAgICAgU3BlY2lmeSB1c2VyIGFuZCBwYXNzd29yZCB0byAgdXNlICB3aGVuICBmZXRjaGluZy4gIFNlZVxuIgoiICAgICAgICAgIFJFQURNRS5jdXJsICBmb3IgIGRldGFpbGVkIGV4YW1wbGVzIG9mIGhvdyB0byB1c2UgdGhpcy5cbiIKIiAgICAgICAgICBJZiBubyBwYXNzd29yZCBpcyAgc3BlY2lmaWVkLCAgY3VybCAgd2lsbCAgYXNrICBmb3IgIGl0XG4iCiIgICAgICAgICAgaW50ZXJhY3RpdmVseS5cbiIKIlxuIgoiICAgICAtVS8tLXByb3h5LXVzZXIgPHVzZXI6cGFzc3dvcmQ+XG4iCiIgICAgICAgICAgU3BlY2lmeSAgdXNlciBhbmQgcGFzc3dvcmQgdG8gdXNlIGZvciBQcm94eSBhdXRoZW50aWNhrVxuIgoiICAgICAgICAgIHRpb24uIElmIG5vIHBhc3N3b3JkIGlzIHNwZWNpZmllZCwgY3VybCB3aWxsIGFzayBmb3IgaXRcbiIKIiAgICAgICAgICBpbnRlcmFjdGl2ZWx5LlxuIgoiICAgICAtdi8tLXZlcmJvc2VcbiIKIiAgICAgICAgICBNYWtlcyAgIHRoZSAgZmV0Y2hpbmcgIG1vcmUgIHZlcmJvc2UvdGFsa2F0aXZlLiAgTW9zdGx5XG4iCiIgICAgICAgICAgdXNhYmxlIGZvciBkZWJ1Z2dpbmcuIExpbmVzICBzdGFydGluZyAgd2l0aCAgJz4nICBtZWFuc1xuIgoiICAgICAgICAgIGRhdGEgc2VudCBieSBjdXJsLCAnPCcgbWVhbnMgZGF0YSByZWNlaXZlZCBieSBjdXJsIHRoYXRcbiIKIiAgICAgICAgICBpcyBoaWRkZW4gaW4gbm9ybWFsIGNhc2VzIGFuZCBsaW5lcyBzdGFydGluZyAgd2l0aCAgJyonXG4iCiIgICAgICAgICAgbWVhbnMgYWRkaXRpb25hbCBpbmZvIHByb3ZpZGVkIGJ5IGN1cmwuXG4iCiJcbiIKIiAgICAgLVYvLS12ZXJzaW9uXG4iCiIgICAgICAgICAgRGlzcGxheXMgIHRoZSAgZnVsbCAgdmVyc2lvbiBvZiBjdXJsLCBsaWJjdXJsIGFuZCBvdGhlclxuIgoiICAgICAgICAgIDNyZCBwYXJ0eSBsaWJyYXJpZXMgbGlua2VkIHdpdGggdGhlIGV4ZWN1dGFibGUuXG4iCiJcbiIKIiAgICAgLXcvLS13cml0ZS1vdXQgPGZvcm1hdD5cbiIKIiAgICAgICAgICBEZWZpbmVzIHdoYXQgdG8gZGlzcGxheSBhZnRlciBhIGNvbXBsZXRlZCBhbmQgIHN1Y2Nlc3OtXG4iCiIgICAgICAgICAgZnVsICBvcGVyYXRpb24uIFRoZSBmb3JtYXQgaXMgYSBzdHJpbmcgdGhhdCBtYXkgY29udGFpblxuIgoiICAgICAgICAgIHBsYWluIHRleHQgbWl4ZWQgd2l0aCAgYW55ICBudW1iZXIgIG9mICB2YXJpYWJsZXMuICBUaGVcbiIKIiAgICAgICAgICBzdHJpbmcgY2FuIGJlIHNwZWNpZmllZCBhcyBcInN0cmluZ1wiLCB0byBnZXQgcmVhZCBmcm9tIGFcbiIKIiAgICAgICAgICBwYXJ0aWN1bGFyIGZpbGUgeW91IHNwZWNpZnkgaXQgXCJAZmlsZW5hbWVcIiBhbmQgdG8gIHRlbGxcbiIKIiAgICAgICAgICBjdXJsIHRvIHJlYWQgdGhlIGZvcm1hdCBmcm9tIHN0ZGluIHlvdSB3cml0ZSBcIkAtXCIuXG4iCiJcbiIKIiAgICAgICAgICBUaGUgdmFyaWFibGVzIHByZXNlbnQgaW4gdGhlIG91dHB1dCBmb3JtYXQgd2lsbCBiZSBzdWKtXG4iCiIgICAgICAgICAgc3RpdHV0ZWQgYnkgdGhlIHZhbHVlIG9yIHRleHQgdGhhdCBjdXJsIHRoaW5rcyBmaXQsICBhc1xuIgoiICAgICAgICAgIGRlc2NyaWJlZCAgYmVsb3cuICBBbGwgIHZhcmlhYmxlcyAgYXJlICBzcGVjaWZpZWQgIGxpa2VcbiIKIiAgICAgICAgICAle3ZhcmlhYmxlX25hbWV9IGFuZCB0byBvdXRwdXQgIGEgIG5vcm1hbCAgJSAgeW91ICBqdXN0XG4iCiIgICAgICAgICAgd3JpdGUgIHRoZW0gIGxpa2UgJSUuIFlvdSBjYW4gb3V0cHV0IGEgbmV3bGluZSBieSB1c2luZ1xuIgoiICAgICAgICAgIFxcbiwgYSBjYXJyaWdlIHJldHVybiB3aXRoIFxcciBhbmQgYSB0YWIgc3BhY2Ugd2l0aCBcXHQuXG4iCiJcbiIKIiAgICAgICAgICBOT1RFOiAgVGhlICAlLWxldHRlciAgaXMgIGEgIHNwZWNpYWwgIGxldHRlciAgIGluICAgdGhlXG4iCiIgICAgICAgICAgd2luMzItZW52aXJvbm1lbnQsICB3aGVyZSAgYWxsIG9jY3VycmVuY2VzIG9mICUgbXVzdCBiZVxuIgoiICAgICAgICAgIGRvdWJsZWQgd2hlbiB1c2luZyB0aGlzIG9wdGlvbi5cbiIKIlxuIgoiICAgICAgICAgIEF2YWlsYWJsZSB2YXJpYWJsZXMgYXJlIGF0IHRoaXMgcG9pbnQ6XG4iCiJcbiIKIiAgICAgICAgICB1cmxfZWZmZWN0aXZlICBUaGUgVVJMIHRoYXQgd2FzIGZldGNoZWQgbGFzdC4gIFRoaXMgIGlzXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgbW9zdGx5IG1lYW5pbmdmdWwgaWYgeW91J3ZlIHRvbGQgY3VybCB0b1xuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvdyBsb2NhdGlvbjogaGVhZGVycy5cbiIKIlxuIgoiICAgICAgICAgIGh0dHBfY29kZSAgICAgIFRoZSBudW1lcmljYWwgY29kZSB0aGF0IHdhcyBmb3VuZCBpbiB0aGVcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IHJldHJpZXZlZCBIVFRQKFMpIHBhZ2UuXG4iCiJcbiIKIiAgICAgICAgICB0aW1lX3RvdGFsICAgICBUaGUgIHRvdGFsICB0aW1lLCAgaW4gIHNlY29uZHMsIHRoYXQgdGhlXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbCBvcGVyYXRpb24gbGFzdGVkLiBUaGUgdGltZSB3aWxsICBiZVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXllZCB3aXRoIG1pbGxpc2Vjb25kIHJlc29sdXRpb24uXG4iCiJcbiIKIiAgICAgICAgICB0aW1lX25hbWVsb29rdXBcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgIHRpbWUsICBpbiBzZWNvbmRzLCBpdCB0b29rIGZyb20gdGhlXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgdW50aWwgdGhlIG5hbWUgcmVzb2x2aW5nIHdhcyAgY29trVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIHBsZXRlZC5cbiIKIlxuIgoiICAgICAgICAgIHRpbWVfY29ubmVjdCAgIFRoZSAgdGltZSwgIGluIHNlY29uZHMsIGl0IHRvb2sgZnJvbSB0aGVcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCB1bnRpbCB0aGUgY29ubmVjdCAgdG8gIHRoZSAgcmVtb3RlXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdCAob3IgcHJveHkpIHdhcyBjb21wbGV0ZWQuXG4iCiIgICAgICAgICAgdGltZV9wcmV0cmFuc2ZlclxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSAgdGltZSwgIGluIHNlY29uZHMsIGl0IHRvb2sgZnJvbSB0aGVcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCB1bnRpbCB0aGUgZmlsZSAgdHJhbnNmZXIgIGlzICBqdXN0XG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgYWJvdXQgIHRvICBiZWdpbi4gVGhpcyBpbmNsdWRlcyBhbGwgcHJlLVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZmVyIGNvbW1hbmRzIGFuZCBuZWdvdGlhdGlvbnMgIHRoYXRcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgIHNwZWNpZmljICB0byAgdGhlIHBhcnRpY3VsYXIgcHJvdG+tXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgY29sKHMpIGludm9sdmVkLlxuIgoiXG4iCiIgICAgICAgICAgc2l6ZV9kb3dubG9hZCAgVGhlIHRvdGFsICBhbW91bnQgIG9mICBieXRlcyAgdGhhdCAgd2VyZVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkZWQuXG4iCiJcbiIKIiAgICAgICAgICBzaXplX3VwbG9hZCAgICBUaGUgIHRvdGFsICBhbW91bnQgIG9mICBieXRlcyAgdGhhdCB3ZXJlXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgdXBsb2FkZWQuXG4iCiJcbiIKIiAgICAgICAgICBzcGVlZF9kb3dubG9hZCBUaGUgYXZlcmFnZSAgZG93bmxvYWQgIHNwZWVkICB0aGF0ICBjdXJsXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgbWVhc3VyZWQgZm9yIHRoZSBjb21wbGV0ZSBkb3dubG9hZC5cbiIKIlxuIgoiICAgICAgICAgIHNwZWVkX3VwbG9hZCAgIFRoZSAgYXZlcmFnZSB1cGxvYWQgc3BlZWQgdGhhdCBjdXJsIG1lYa1cbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBzdXJlZCBmb3IgdGhlIGNvbXBsZXRlIGRvd25sb2FkLlxuIgoiXG4iCiIgICAgIC14Ly0tcHJveHkgPHByb3h5aG9zdFs6cG9ydF0+XG4iCiIgICAgICAgICAgVXNlIHNwZWNpZmllZCBwcm94eS4gSWYgdGhlIHBvcnQgbnVtYmVyIGlzICBub3QgIHNwZWNprVxuIgoiICAgICAgICAgIGZpZWQsIGl0IGlzIGFzc3VtZWQgYXQgcG9ydCAxMDgwLlxuIgoiXG4iCiIgICAgIC1YLy0tcmVxdWVzdCA8Y29tbWFuZD5cbiIKIiAgICAgICAgICAoSFRUUCkgIFNwZWNpZmllcyBhIGN1c3RvbSByZXF1ZXN0IHRvIHVzZSB3aGVuIGNvbW11bmmtXG4iCiIgICAgICAgICAgY2F0aW5nIHdpdGggdGhlIEhUVFAgIHNlcnZlci4gICBUaGUgIHNwZWNpZmllZCAgcmVxdWVzdFxuIgoiICAgICAgICAgIHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSBzdGFuZGFyZCBHRVQuIFJlYWQgdGhlIEhUVFBcbiIKIiAgICAgICAgICAxLjEgc3BlY2lmaWNhdGlvbiBmb3IgZGV0YWlscyBhbmQgZXhwbGFuYXRpb25zLlxuIgoiXG4iCiIgICAgICAgICAgKEZUUCkgU3BlY2lmaWVzIGEgY3VzdG9tIEZUUCBjb21tYW5kIHRvIHVzZSBpbnN0ZWFkICBvZlxuIgoiICAgICAgICAgIExJU1Qgd2hlbiBkb2luZyBmaWxlIGxpc3RzIHdpdGggZnRwLlxuIgoiXG4iCiIgICAgIC15Ly0tc3BlZWQtdGltZSA8dGltZT5cbiIKIiAgICAgICAgICBJZiBhIGRvd25sb2FkIGlzIHNsb3dlciB0aGFuIHNwZWVkLWxpbWl0IGJ5dGVzIHBlciBzZWOtXG4iCiIgICAgICAgICAgb25kIGR1cmluZyAgYSAgc3BlZWQtdGltZSAgcGVyaW9kLCAgdGhlICBkb3dubG9hZCAgZ2V0c1xuIgoiICAgICAgICAgIGFib3J0ZWQuIElmIHNwZWVkLXRpbWUgaXMgdXNlZCwgdGhlIGRlZmF1bHQgc3BlZWQtbGltaXRcbiIKIiAgICAgICAgICB3aWxsIGJlIDEgdW5sZXNzIHNldCB3aXRoIC15LlxuIgoiXG4iCiIgICAgIC1ZLy0tc3BlZWQtbGltaXQgPHNwZWVkPlxuIgoiICAgICAgICAgIElmIGEgZG93bmxvYWQgaXMgc2xvd2VyIHRoYW4gdGhpcyBnaXZlbiBzcGVlZCwgaW4gYnl0ZXNcbiIKIiAgICAgICAgICBwZXIgIHNlY29uZCwgIGZvciAgc3BlZWQtdGltZSAgc2Vjb25kcyBpdCBnZXRzIGFib3J0ZWQuXG4iCiIgICAgICAgICAgc3BlZWQtdGltZSBpcyBzZXQgd2l0aCAtWSBhbmQgaXMgMzAgaWYgbm90IHNldC5cbiIKIlxuIgoiICAgICAtei8tLXRpbWUtY29uZCA8ZGF0ZSBleHByZXNzaW9uPlxuIgoiICAgICAgICAgIChIVFRQKSBSZXF1ZXN0IHRvIGdldCBhIGZpbGUgIHRoYXQgIGhhcyAgYmVlbiAgbW9kaWZpZWRcbiIKKTsKIHB1dHMoCiIgICAgICAgICAgbGF0ZXIgIHRoYW4gIHRoZSAgZ2l2ZW4gIHRpbWUgYW5kIGRhdGUsIG9yIG9uZSB0aGF0IGhhc1xuIgoiICAgICAgICAgIGJlZW4gbW9kaWZpZWQgYmVmb3JlIHRoYXQgdGltZS4gVGhlIGRhdGUgZXhwcmVzc2lvbiBjYW5cbiIKIiAgICAgICAgICBiZSBhbGwgc29ydHMgb2YgZGF0ZSBzdHJpbmdzIG9yIGlmIGl0IGRvZXNuJ3QgbWF0Y2ggYW55XG4iCiIgICAgICAgICAgaW50ZXJuYWwgb25lcywgaXQgdHJpZXMgdG8gZ2V0IHRoZSB0aW1lICBmcm9tICBhICBnaXZlblxuIgoiICAgICAgICAgIGZpbGUgIG5hbWUgIGluc3RlYWQhICBTZWUgIHRoZSBHTlUgZGF0ZSgxKSBtYW4gcGFnZSBmb3JcbiIKIiAgICAgICAgICBkYXRlIGV4cHJlc3Npb24gZGV0YWlscy5cbiIKIiAgICAgICAgICBTdGFydCB0aGUgZGF0ZSBleHByZXNzaW9uIHdpdGggYSBkYXNoICgtKSAgdG8gIG1ha2UgIGl0XG4iCiIgICAgICAgICAgcmVxdWVzdCAgZm9yICBhICBkb2N1bWVudCAgdGhhdCBpcyBvbGRlciB0aGFuIHRoZSBnaXZlblxuIgoiICAgICAgICAgIGRhdGUvdGltZSwgZGVmYXVsdCBpcyBhIGRvY3VtZW50IHRoYXQgaXMgbmV3ZXIgdGhhbiB0aGVcbiIKIiAgICAgICAgICBzcGVjaWZpZWQgZGF0ZS90aW1lLlxuIgoiXG4iCiIgICAgIC0zLy0tc3NsdjNcbiIKIiAgICAgICAgICAoSFRUUFMpIEZvcmNlcyBjdXJsIHRvIHVzZSBTU0wgdmVyc2lvbiAzIHdoZW4gbmVnb3RpYXStXG4iCiIgICAgICAgICAgaW5nIHdpdGggYSByZW1vdGUgU1NMIHNlcnZlci5cbiIKIlxuIgoiICAgICAtMi8tLXNzbHYyXG4iCiIgICAgICAgICAgKEhUVFBTKSBGb3JjZXMgY3VybCB0byB1c2UgU1NMIHZlcnNpb24gMiB3aGVuIG5lZ290aWF0rVxuIgoiICAgICAgICAgIGluZyB3aXRoIGEgcmVtb3RlIFNTTCBzZXJ2ZXIuXG4iCiJcbiIKIiAgICAgLSMvLS1wcm9ncmVzcy1iYXJcbiIKIiAgICAgICAgICBNYWtlICBjdXJsICBkaXNwbGF5ICBwcm9ncmVzcyBpbmZvcm1hdGlvbiBhcyBhIHByb2dyZXNzXG4iCiIgICAgICAgICAgYmFyIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgc3RhdGlzdGljcy5cbiIKIlxuIgoiICAgICAtLWNybGZcbiIKIiAgICAgICAgICAoRlRQKSBDb252ZXJ0IExGIHRvIENSTEYgIGluICB1cGxvYWQuICBVc2VmdWwgIGZvciAgTVZTXG4iCiIgICAgICAgICAgKE9TLzM5MCkuXG4iCiJcbiIKIiAgICAgLS1zdGRlcnIgPGZpbGU+XG4iCiIgICAgICAgICAgUmVkaXJlY3QgIGFsbCAgd3JpdGVzICB0byAgc3RkZXJyIHRvIHRoZSBzcGVjaWZpZWQgZmlsZVxuIgoiICAgICAgICAgIGluc3RlYWQuIElmIHRoZSBmaWxlIG5hbWUgaXMgYSBwbGFpbiAnLScsIGl0IGlzIGluc3RlYWRcbiIKIiAgICAgICAgICB3cml0dGVuIHRvIHN0ZG91dC4gVGhpcyBvcHRpb24gaGFzIG5vIHBvaW50IHdoZW4geW91J3JlXG4iCiIgICAgICAgICAgdXNpbmcgYSBzaGVsbCB3aXRoIGRlY2VudCByZWRpcmVjdGluZyBjYXBhYmlsaXRpZXMuXG4iCiJcbiIKIkZJTEVTXG4iCiIgICAgIH4vLmN1cmxyY1xuIgoiICAgICAgICAgIERlZmF1bHQgY29uZmlnIGZpbGUuXG4iCiJcbiIKIkVOVklST05NRU5UXG4iCiIgICAgIEhUVFBfUFJPWFkgW3Byb3RvY29sOi8vXTxob3N0Pls6cG9ydF1cbiIKIiAgICAgICAgICBTZXRzIHByb3h5IHNlcnZlciB0byB1c2UgZm9yIEhUVFAuXG4iCiJcbiIKIiAgICAgSFRUUFNfUFJPWFkgW3Byb3RvY29sOi8vXTxob3N0Pls6cG9ydF1cbiIKIiAgICAgICAgICBTZXRzIHByb3h5IHNlcnZlciB0byB1c2UgZm9yIEhUVFBTLlxuIgoiXG4iCiIgICAgIEZUUF9QUk9YWSBbcHJvdG9jb2w6Ly9dPGhvc3Q+Wzpwb3J0XVxuIgoiICAgICAgICAgIFNldHMgcHJveHkgc2VydmVyIHRvIHVzZSBmb3IgRlRQLlxuIgoiXG4iCiIgICAgIEdPUEhFUl9QUk9YWSBbcHJvdG9jb2w6Ly9dPGhvc3Q+Wzpwb3J0XVxuIgoiICAgICAgICAgIFNldHMgcHJveHkgc2VydmVyIHRvIHVzZSBmb3IgR09QSEVSLlxuIgoiXG4iCiIgICAgIEFMTF9QUk9YWSBbcHJvdG9jb2w6Ly9dPGhvc3Q+Wzpwb3J0XVxuIgoiICAgICAgICAgIFNldHMgcHJveHkgc2VydmVyIHRvIHVzZSBpZiBubyBwcm90b2NvbC1zcGVjaWZpYyAgcHJveHlcbiIKIiAgICAgICAgICBpcyBzZXQuXG4iCiJcbiIKIiAgICAgTk9fUFJPWFkgPGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGhvc3RzPlxuIgoiICAgICAgICAgIGxpc3Qgb2YgaG9zdCBuYW1lcyB0aGF0IHNob3VsZG4ndCBnbyB0aHJvdWdoIGFueSBwcm94eS5cbiIKIiAgICAgICAgICBJZiBzZXQgdG8gYSBhc3RlcmlzayAnKicgb25seSwgaXQgbWF0Y2hlcyBhbGwgaG9zdHMuXG4iCiIgICAgIENPTFVNTlMgPGludGVnZXI+XG4iCiIgICAgICAgICAgVGhlIHdpZHRoIG9mIHRoZSB0ZXJtaW5hbC4gIFRoaXMgdmFyaWFibGUgb25seSAgYWZmZWN0c1xuIgoiICAgICAgICAgIGN1cmwgd2hlbiB0aGUgLS1wcm9ncmVzcy1iYXIgb3B0aW9uIGlzIHVzZWQuXG4iCiJcbiIKIkVYSVQgQ09ERVNcbiIKIiAgICAgVGhlcmUgZXhpc3RzIGEgYnVuY2ggb2YgZGlmZmVyZW50IGVycm9yIGNvZGVzIGFuZCB0aGVpciBjb3KtXG4iCiIgICAgIHJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMgdGhhdCBtYXkgYXBwZWFyIGR1cmluZyBiYWQgIGNvbmRprVxuIgoiICAgICB0aW9ucy4gQXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nLCB0aGUgZXhpdCBjb2RlcyBhcmU6XG4iCiJcbiIKIiAgICAgMSAgICBVbnN1cHBvcnRlZCBwcm90b2NvbC4gVGhpcyBidWlsZCBvZiBjdXJsIGhhcyBubyBzdXBwb3J0XG4iCiIgICAgICAgICAgZm9yIHRoaXMgcHJvdG9jb2wuXG4iCiJcbiIKIiAgICAgMiAgICBGYWlsZWQgdG8gaW5pdGlhbGl6ZS5cbiIKIlxuIgoiICAgICAzICAgIFVSTCBtYWxmb3JtYXQuIFRoZSBzeW50YXggd2FzIG5vdCBjb3JyZWN0LlxuIgoiXG4iCiIgICAgIDQgICAgVVJMIHVzZXIgbWFsZm9ybWF0dGVkLiBUaGUgdXNlci1wYXJ0IG9mIHRoZSBVUkwgIHN5bnRheFxuIgoiICAgICAgICAgIHdhcyBub3QgY29ycmVjdC5cbiIKIlxuIgoiICAgICA1ICAgIENvdWxkbid0ICByZXNvbHZlIHByb3h5LiBUaGUgZ2l2ZW4gcHJveHkgaG9zdCBjb3VsZCBub3RcbiIKIiAgICAgICAgICBiZSByZXNvbHZlZC5cbiIKIlxuIgoiICAgICA2ICAgIENvdWxkbid0IHJlc29sdmUgaG9zdC4gVGhlIGdpdmVuIHJlbW90ZSAgaG9zdCAgd2FzICBub3RcbiIKIiAgICAgICAgICByZXNvbHZlZC5cbiIKIlxuIgoiICAgICA3ICAgIEZhaWxlZCB0byBjb25uZWN0IHRvIGhvc3QuXG4iCiJcbiIKIiAgICAgOCAgICBGVFAgIHdlaXJkICBzZXJ2ZXIgIHJlcGx5LiAgVGhlICBzZXJ2ZXIgIHNlbnQgZGF0YSBjdXJsXG4iCiIgICAgICAgICAgY291bGRuJ3QgcGFyc2UuXG4iCiJcbiIKIiAgICAgOSAgICBGVFAgYWNjZXNzIGRlbmllZC4gVGhlIHNlcnZlciBkZW5pZWQgbG9naW4uXG4iCiJcbiIKIiAgICAgMTAgICBGVFAgdXNlci9wYXNzd29yZCBpbmNvcnJlY3QuIEVpdGhlciBvbmUgIG9yICBib3RoICB3ZXJlXG4iCiIgICAgICAgICAgbm90IGFjY2VwdGVkIGJ5IHRoZSBzZXJ2ZXIuXG4iCiJcbiIKIiAgICAgMTEgICBGVFAgIHdlaXJkICBQQVNTICByZXBseS4gIEN1cmwgY291bGRuJ3QgcGFyc2UgdGhlIHJlcGx5XG4iCiIgICAgICAgICAgc2VudCB0byB0aGUgUEFTUyByZXF1ZXN0LlxuIgoiXG4iCiIgICAgIDEyICAgRlRQIHdlaXJkIFVTRVIgcmVwbHkuIEN1cmwgIGNvdWxkbid0ICBwYXJzZSAgdGhlICByZXBseVxuIgoiICAgICAgICAgIHNlbnQgdG8gdGhlIFVTRVIgcmVxdWVzdC5cbiIKIlxuIgoiICAgICAxMyAgIEZUUCAgd2VpcmQgIFBBU1YgIHJlcGx5LCAgQ3VybCBjb3VsZG4ndCBwYXJzZSB0aGUgcmVwbHlcbiIKIiAgICAgICAgICBzZW50IHRvIHRoZSBQQVNWIHJlcXVlc3QuXG4iCiJcbiIKIiAgICAgMTQgICBGVFAgd2VpcmQgMjI3IGZvcm1heS4gQ3VybCBjb3VsZG4ndCBwYXJzZSB0aGUgIDIyNy1saW5lXG4iCiIgICAgICAgICAgdGhlIHNlcnZlciBzZW50LlxuIgoiXG4iCiIgICAgIDE1ICAgRlRQIGNhbid0IGdldCBob3N0LiBDb3VsZG4ndCByZXNvbHZlIHRoZSBob3N0IElQIHdlIGdvdFxuIgoiICAgICAgICAgIGluIHRoZSAyMjctbGluZS5cbiIKIlxuIgoiICAgICAxNiAgIEZUUCBjYW4ndCByZWNvbm5lY3QuIENvdWxkbid0IGNvbm5lY3QgdG8gIHRoZSAgaG9zdCAgd2VcbiIKIiAgICAgICAgICBnb3QgaW4gdGhlIDIyNy1saW5lLlxuIgoiICAgICAxNyAgIEZUUCAgY291bGRuJ3QgIHNldCAgYmluYXJ5LiAgQ291bGRuJ3QgIGNoYW5nZSAgdHJhbnNmZXJcbiIKIiAgICAgICAgICBtZXRob2QgdG8gYmluYXJ5LlxuIgoiXG4iCiIgICAgIDE4ICAgUGFydGlhbCBmaWxlLiBPbmx5IGEgcGFydCBvZiB0aGUgZmlsZSB3YXMgdHJhbnNmZXJlZC5cbiIKIlxuIgoiICAgICAxOSAgIEZUUCBjb3VsZG4ndCBSRVRSIGZpbGUuIFRoZSBSRVRSIGNvbW1hbmQgZmFpbGVkLlxuIgoiXG4iCiIgICAgIDIwICAgRlRQIHdyaXRlIGVycm9yLiBUaGUgdHJhbnNmZXIgd2FzIHJlcG9ydGVkIGJhZCAgYnkgIHRoZVxuIgoiICAgICAgICAgIHNlcnZlci5cbiIKIlxuIgoiICAgICAyMSAgIEZUUCAgcXVvdGUgIGVycm9yLiAgQSBxdW90ZSBjb21tYW5kIHJldHVybmVkIGVycm9yIGZyb21cbiIKIiAgICAgICAgICB0aGUgc2VydmVyLlxuIgoiXG4iCiIgICAgIDIyICAgSFRUUCBub3QgZm91bmQuIFRoZSByZXF1ZXN0ZWQgcGFnZSB3YXMgbm90IGZvdW5kLiAgVGhpc1xuIgoiICAgICAgICAgIHJldHVybiBjb2RlIG9ubHkgYXBwZWFycyBpZiAtLWZhaWwgaXMgdXNlZC5cbiIKIlxuIgoiICAgICAyMyAgIFdyaXRlICBlcnJvci4gIEN1cmwgIGNvdWxkbid0ICB3cml0ZSAgZGF0YSAgdG8gIGEgbG9jYWxcbiIKIiAgICAgICAgICBmaWxlc3lzdGVtIG9yIHNpbWlsYXIuXG4iCiJcbiIKIiAgICAgMjQgICBNYWxmb3JtYXQgdXNlci4gVXNlciBuYW1lIGJhZGx5IHNwZWNpZmllZC5cbiIKIlxuIgoiICAgICAyNSAgIEZUUCBjb3VsZG4ndCBTVE9SIGZpbGUuICBUaGUgIHNlcnZlciAgZGVuaWVkICB0aGUgIFNUT1JcbiIKIiAgICAgICAgICBvcGVyYXRpb24uXG4iCiJcbiIKIiAgICAgMjYgICBSZWFkIGVycm9yLiBWYXJpb3VzIHJlYWRpbmcgcHJvYmxlbXMuXG4iCiJcbiIKIiAgICAgMjcgICBPdXQgb2YgbWVtb3J5LiBBIG1lbW9yeSBhbGxvY2F0aW9uIHJlcXVlc3QgZmFpbGVkLlxuIgoiXG4iCiIgICAgIDI4ICAgT3BlcmF0aW9uICB0aW1lb3V0LiAgVGhlICBzcGVjaWZpZWQgdGltZS1vdXQgcGVyaW9kIHdhc1xuIgoiICAgICAgICAgIHJlYWNoZWQgYWNjb3JkaW5nIHRvIHRoZSBjb25kaXRpb25zLlxuIgoiXG4iCiIgICAgIDI5ICAgRlRQIGNvdWxkbid0IHNldCBBU0NJSS4gVGhlIHNlcnZlciByZXR1cm5lZCBhbiAgdW5rbm93blxuIgoiICAgICAgICAgIHJlcGx5LlxuIgoiXG4iCiIgICAgIDMwICAgRlRQIFBPUlQgZmFpbGVkLiBUaGUgUE9SVCBjb21tYW5kIGZhaWxlZC5cbiIKIlxuIgoiICAgICAzMSAgIEZUUCBjb3VsZG4ndCB1c2UgUkVTVC4gVGhlIFJFU1QgY29tbWFuZCBmYWlsZWQuXG4iCiJcbiIKIiAgICAgMzIgICBGVFAgIGNvdWxkbid0ICB1c2UgIFNJWkUuICBUaGUgU0laRSBjb21tYW5kIGZhaWxlZC4gVGhlXG4iCiIgICAgICAgICAgY29tbWFuZCBpcyBhbiBleHRlbnNpb24gdG8gdGhlIG9yaWdpbmFsICBGVFAgIHNwZWMgIFJGQ1xuIgoiICAgICAgICAgIDk1OS5cbiIKIlxuIgoiICAgICAzMyAgIEhUVFAgcmFuZ2UgZXJyb3IuIFRoZSByYW5nZSBcImNvbW1hbmRcIiBkaWRuJ3Qgd29yay5cbiIKIlxuIgoiICAgICAzNCAgIEhUVFAgICBwb3N0ICBlcnJvci4gIEludGVybmFsICBwb3N0LXJlcXVlc3QgIGdlbmVyYXRpb25cbiIKIiAgICAgICAgICBlcnJvci5cbiIKIlxuIgoiICAgICAzNSAgIFNTTCBjb25uZWN0IGVycm9yLiBUaGUgU1NMIGhhbmRzaGFraW5nIGZhaWxlZC5cbiIKIlxuIgoiICAgICAzNiAgIEZUUCBiYWQgZG93bmxvYWQgcmVzdW1lLiBDb3VsZG4ndCBjb250aW51ZSAgYW4gIGVhcmxpZXJcbiIKIiAgICAgICAgICBhYm9ydGVkIGRvd25sb2FkLlxuIgoiICAgICAzNyAgIEZJTEUgIGNvdWxkbid0IHJlYWQgZmlsZS4gRmFpbGVkIHRvIG9wZW4gdGhlIGZpbGUuIFBlcq1cbiIKIiAgICAgICAgICBtaXNzaW9ucz9cbiIKIlxuIgoiICAgICAzOCAgIExEQVAgY2Fubm90IGJpbmQuIExEQVAgYmluZCBvcGVyYXRpb24gZmFpbGVkLlxuIgoiXG4iCiIgICAgIDM5ICAgTERBUCBzZWFyY2ggZmFpbGVkLlxuIgoiXG4iCiIgICAgIDQwICAgTGlicmFyeSBub3QgZm91bmQuIFRoZSBMREFQIGxpYnJhcnkgd2FzIG5vdCBmb3VuZC5cbiIKIlxuIgoiICAgICA0MSAgIEZ1bmN0aW9uIG5vdCBmb3VuZC4gQSByZXF1aXJlZCBMREFQICBmdW5jdGlvbiAgd2FzICBub3RcbiIKIiAgICAgICAgICBmb3VuZC5cbiIKIlxuIgoiICAgICBYWCAgIFRoZXJlICB3aWxsICBhcHBlYXIgIG1vcmUgIGVycm9yICBjb2RlcyAgaGVyZSBpbiBmdXR1cmVcbiIKIiAgICAgICAgICByZWxlYXNlcy4gVGhlIGV4aXN0aW5nIG9uZXMgYXJlIG1lYW50IHRvIG5ldmVyICBjaGFuZ2UuXG4iCiJcbiIKIkJVR1NcbiIKIiAgICAgSWYgIHlvdSBkbyBmaW5kIGFueSAob3IgaGF2ZSBvdGhlciBzdWdnZXN0aW9ucyksIG1haWwgRGFuaWVsXG4iCiIgICAgIFN0ZW5iZXJnIDxEYW5pZWwuU3RlbmJlcmdAaGF4eC5udT4uXG4iCiJcbiIKIkFVVEhPUlMgLyBDT05UUklCVVRPUlNcbiIKIiAgICAgIC0gRGFuaWVsIFN0ZW5iZXJnIDxEYW5pZWwuU3RlbmJlcmdAaGF4eC5udT5cbiIKIiAgICAgIC0gUmFmYWVsIFNhZ3VsYSA8c2FndWxhQGluZi51ZnJncy5icj5cbiIKIiAgICAgIC0gU2FtcG8gS2VsbG9tYWtpIDxzYW1wb0Bpa2kuZmk+XG4iCiIgICAgICAtIExpbmFzIFZlcHN0YXMgPGxpbmFzQGxpbmFzLm9yZz5cbiIKIiAgICAgIC0gQmpvcm4gUmVlc2UgPGJyZWVzZUBtYWlsMS5zdG9mYW5ldC5kaz5cbiIKIiAgICAgIC0gSm9oYW4gQW5kZXJzb24gPGpvaGFuQGhvbWVtYWlsLmNvbT5cbiIKIiAgICAgIC0gS2plbGwgRXJpY3NvbiA8S2plbGwuRXJpY3NvbkBoYXh4LG51PlxuIgoiICAgICAgLSBUcm95IEVuZ2VsIDx0ZW5nZWxAc29uaWMubmV0PlxuIgoiICAgICAgLSBSeWFuIE5lbHNvbiA8cnlhbkBpbmNoLmNvbT5cbiIKIiAgICAgIC0gQmpvcm4gU3RlbmJlcmcgPEJqb3JuLlN0ZW5iZXJnQGhheHgubnU+XG4iCiIgICAgICAtIEFuZ3VzIE1hY2theSA8YW1hY2theUBndXMubWwub3JnPlxuIgoiICAgICAgLSBFcmljIFlvdW5nIDxlYXlAY3J5cHRzb2Z0LmNvbT5cbiIKIiAgICAgIC0gU2ltb24gRGljayA8c2ltb25kQHRvdGFsbHkuaXJyZWxldmFudC5vcmc+XG4iCiIgICAgICAtIE9yZW4gVGlyb3NoIDxvcmVuQG1vbnR5Lmhpc2hvbWUubmV0PlxuIgoiICAgICAgLSBTdGV2ZW4gRy4gSm9obnNvbiA8c3RldmVuakBhbHVtLm1pdC5lZHU+XG4iCiIgICAgICAtIEdpbGJlcnQgUmFtaXJleiBKci4gPGdyYW1AdmVyZGljdC51dGhzY3NhLmVkdT5cbiIKIiAgICAgIC0gQW5kculzIEdhcmPtYSA8b3JuYWx1eEByZWRlc3RiLmVzPlxuIgoiICAgICAgLSBEb3VnbGFzIEUuIFdlZ3NjaGVpZCA8d2Vnc2NkQHdoaXJscG9vbC5jb20+XG4iCiIgICAgICAtIE1hcmsgQnV0bGVyIDxidXRsZXJtQHhtaXNzaW9uLmNvbT5cbiIKIiAgICAgIC0gRXJpYyBUaGVsaW4gPGVyaWNAZ2VuZXJhdGlvbi1pLmNvbT5cbiIKIiAgICAgIC0gTWFyYyBCb3VjaGVyIDxtYXJjQG1ic2kuY2E+XG4iCiIgICAgICAtIEdyZWcgT251ZmVyIDxHcmVnLk9udWZlckBFbmcuU3VuLkNPTT5cbiIKIiAgICAgIC0gRG91ZyBLYXVmbWFuIDxka2F1Zm1hbkByYWh1bC5uZXQ+XG4iCiIgICAgICAtIERhdmlkIEVyaWtzc29uIDxkYXZpZEAyZ29vZC5jb20+XG4iCiIgICAgICAtIFJhbHBoIEJlY2ttYW5uIDxyYWJlQHVuaS1wYWRlcmJvcm4uZGU+XG4iCiIgICAgICAtIFQuIFlhbWFkYSA8dGFpQGltYXN5Lm9yLmpwPlxuIgoiICAgICAgLSBMYXJzIEouIEFhcyA8bGFyc2FAc2ltLm5vPlxuIgoiICAgICAgLSBK9nJuIEhhcnRyb3RoIDxKb2Vybi5IYXJ0cm90aEB0ZWxla29tLmRlPlxuIgoiICAgICAgLSBNYXR0aGV3IENsYXJrZSA8Y2xhbWF0QHZhbi5tYXZlcy5jYT5cbiIKIiAgICAgIC0gTGludXMgTmllbHNlbiA8TGludXMuTmllbHNlbkBoYXh4Lm51PlxuIgoiICAgICAgLSBGZWxpeCB2b24gTGVpdG5lciA8ZmVsaXhAY29udmVyZ2VuY2UuZGU+XG4iCiIgICAgICAtIERhbiBaaXR0ZXIgPGR6aXR0ZXJAeml0dGVyLm5ldD5cbiIKIiAgICAgIC0gSm9uZ2tpIFN1d2FuZGkgPEpvbmdraS5TdXdhbmRpQGVuZy5zdW4uY29tPlxuIgoiICAgICAgLSBDaHJpcyBNYWx0YnkgPGNocmlzQGF1cmVtYS5jb20+XG4iCiIgICAgICAtIFJvbiBaYXBwIDxyemFwcGVyQHlhaG9vLmNvbT5cbiIKIiAgICAgIC0gUGF1bCBNYXJxdWlzIDxwbWFycXVpc0BpbmFtZS5jb20+XG4iCiIgICAgICAtIEVsbGlzIFByaXRjaGFyZCA8ZWxsaXNAY2l0cmlhLmNvbT5cbiIKIiAgICAgIC0gRGFtaWVuIEFkYW50IDxkYW1zQHVzYS5uZXQ+XG4iCiIgICAgICAtIENocmlzIDxjYmF5bGlzc0Bjc2MuY29tZT5cbiIKIiAgICAgIC0gTWFyY28gRy4gU2FsdmFnbm8gPG1nc0B3aGl6LmNqYi5uZXQ+XG4iCiIgICAgICAtIFBhdWwgTWFycXVpcyA8cG1hcnF1aXNAaW5hbWUuY29tPlxuIgoiICAgICAgLSBEYXZpZCBMZUJsYW5jIDxkbGVibGFuY0BxbnguY29tPlxuIgoiICAgICAgLSBSaWNoIEdyYXkgYXQgUGx1cyBUZWNobm9sb2dpZXNcbiIKIlxuIgoiV1dXXG4iCiIgICAgIGh0dHA6Ly9jdXJsLmhheHgubnVcbiIKIlxuIgoiRlRQXG4iCiIgICAgIGZ0cDovL2Z0cC5zdW5ldC5zZS9wdWIvd3d3L3V0aWxpdGllcy9jdXJsL1xuIgoiXG4iCiJTRUUgQUxTT1xuIgoiICAgICBmdHAoMSksIHdnZXQoMSksIHNuYXJmKDEpXG4iCiJcbiIKIkxBVEVTVCBWRVJTSU9OXG4iCiJcbiIKIiAgWW91IGFsd2F5cyBmaW5kIG5ld3MgYWJvdXQgd2hhdCdzIGdvaW5nIG9uIGFzIHdlbGwgYXMgdGhlIGxhdGVzdCB2ZXJzaW9uc1xuIgoiICBmcm9tIHRoZSBjdXJsIHdlYiBwYWdlcywgbG9jYXRlZCBhdDpcbiIKIlxuIgoiICAgICAgICBodHRwOi8vY3VybC5oYXh4Lm51XG4iCiJcbiIKIlNJTVBMRSBVU0FHRVxuIgoiXG4iCiIgIEdldCB0aGUgbWFpbiBwYWdlIGZyb20gbmV0c2NhcGUncyB3ZWItc2VydmVyOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgaHR0cDovL3d3dy5uZXRzY2FwZS5jb20vXG4iCiJcbiIKIiAgR2V0IHRoZSByb290IFJFQURNRSBmaWxlIGZyb20gZnVuZXQncyBmdHAtc2VydmVyOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgZnRwOi8vZnRwLmZ1bmV0LmZpL1JFQURNRVxuIgoiXG4iCiIgIEdldCBhIGdvcGhlciBkb2N1bWVudCBmcm9tIGZ1bmV0J3MgZ29waGVyIHNlcnZlcjpcbiIKIlxuIgoiICAgICAgICBjdXJsIGdvcGhlcjovL2dvcGhlci5mdW5ldC5maVxuIgoiXG4iCiIgIEdldCBhIHdlYiBwYWdlIGZyb20gYSBzZXJ2ZXIgdXNpbmcgcG9ydCA4MDAwOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgaHR0cDovL3d3dy53ZWlyZHNlcnZlci5jb206ODAwMC9cbiIKIlxuIgoiICBHZXQgYSBsaXN0IG9mIHRoZSByb290IGRpcmVjdG9yeSBvZiBhbiBGVFAgc2l0ZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIGZ0cDovL2Z0cC5mdHMuZnJvbnRlYy5zZS9cbiIKIlxuIgoiICBHZXQgdGhlIGRlZmluaXRpb24gb2YgY3VybCBmcm9tIGEgZGljdGlvbmFyeTpcbiIKIlxuIgoiICAgICAgICBjdXJsIGRpY3Q6Ly9kaWN0Lm9yZy9tOmN1cmxcbiIKIlxuIgoiRE9XTkxPQUQgVE8gQSBGSUxFXG4iCiJcbiIKIiAgR2V0IGEgd2ViIHBhZ2UgYW5kIHN0b3JlIGluIGEgbG9jYWwgZmlsZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1vIHRoYXRwYWdlLmh0bWwgaHR0cDovL3d3dy5uZXRzY2FwZS5jb20vXG4iCiJcbiIKIiAgR2V0IGEgd2ViIHBhZ2UgYW5kIHN0b3JlIGluIGEgbG9jYWwgZmlsZSwgbWFrZSB0aGUgbG9jYWwgZmlsZSBnZXQgdGhlIG5hbWVcbiIKIiAgb2YgdGhlIHJlbW90ZSBkb2N1bWVudCAoaWYgbm8gZmlsZSBuYW1lIHBhcnQgaXMgc3BlY2lmaWVkIGluIHRoZSBVUkwsIHRoaXNcbiIKIiAgd2lsbCBmYWlsKTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1PIGh0dHA6Ly93d3cubmV0c2NhcGUuY29tL2luZGV4Lmh0bWxcbiIKIlxuIgoiVVNJTkcgUEFTU1dPUkRTXG4iCiJcbiIKIiBGVFBcbiIKIlxuIgoiICAgVG8gZnRwIGZpbGVzIHVzaW5nIG5hbWUrcGFzc3dkLCBpbmNsdWRlIHRoZW0gaW4gdGhlIFVSTCBsaWtlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgZnRwOi8vbmFtZTpwYXNzd2RAbWFjaGluZS5kb21haW46cG9ydC9mdWxsL3BhdGgvdG8vZmlsZVxuIgoiXG4iCiIgICBvciBzcGVjaWZ5IHRoZW0gd2l0aCB0aGUgLXUgZmxhZyBsaWtlXG4iCiJcbiIKIiAgICAgICAgY3VybCAtdSBuYW1lOnBhc3N3ZCBmdHA6Ly9tYWNoaW5lLmRvbWFpbjpwb3J0L2Z1bGwvcGF0aC90by9maWxlXG4iCiJcbiIKIiBIVFRQXG4iCiJcbiIKIiAgIFRoZSBIVFRQIFVSTCBkb2Vzbid0IHN1cHBvcnQgdXNlciBhbmQgcGFzc3dvcmQgaW4gdGhlIFVSTCBzdHJpbmcuIEN1cmxcbiIKIiAgIGRvZXMgc3VwcG9ydCB0aGF0IGFueXdheSB0byBwcm92aWRlIGEgZnRwLXN0eWxlIGludGVyZmFjZSBhbmQgdGh1cyB5b3UgY2FuXG4iCiIgICBwaWNrIGEgZmlsZSBsaWtlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgaHR0cDovL25hbWU6cGFzc3dkQG1hY2hpbmUuZG9tYWluL2Z1bGwvcGF0aC90by9maWxlXG4iCiJcbiIKIiAgIG9yIHNwZWNpZnkgdXNlciBhbmQgcGFzc3dvcmQgc2VwYXJhdGVseSBsaWtlIGluXG4iCiJcbiIKIiAgICAgICAgY3VybCAtdSBuYW1lOnBhc3N3ZCBodHRwOi8vbWFjaGluZS5kb21haW4vZnVsbC9wYXRoL3RvL2ZpbGVcbiIKIlxuIgoiICAgTk9URSEgU2luY2UgSFRUUCBVUkxzIGRvbid0IHN1cHBvcnQgdXNlciBhbmQgcGFzc3dvcmQsIHlvdSBjYW4ndCB1c2UgdGhhdFxuIgoiICAgc3R5bGUgd2hlbiB1c2luZyBDdXJsIHZpYSBhIHByb3h5LiBZb3UgX211c3RfIHVzZSB0aGUgLXUgc3R5bGUgZmV0Y2hcbiIKIiAgIGR1cmluZyBzdWNoIGNpcmN1bXN0YW5jZXMuXG4iCiJcbiIKIiBIVFRQU1xuIgoiXG4iCiIgICBQcm9iYWJseSBtb3N0IGNvbW1vbmx5IHVzZWQgd2l0aCBwcml2YXRlIGNlcnRpZmljYXRlcywgYXMgZXhwbGFpbmVkIGJlbG93LlxuIgoiXG4iCiIgR09QSEVSXG4iCiJcbiIKIiAgIEN1cmwgZmVhdHVyZXMgbm8gcGFzc3dvcmQgc3VwcG9ydCBmb3IgZ29waGVyLlxuIgoiXG4iCiJQUk9YWVxuIgoiXG4iCiIgR2V0IGFuIGZ0cCBmaWxlIHVzaW5nIGEgcHJveHkgbmFtZWQgbXktcHJveHkgdGhhdCB1c2VzIHBvcnQgODg4OlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXggbXktcHJveHk6ODg4IGZ0cDovL2Z0cC5sZWFjaHNpdGUuY29tL1JFQURNRVxuIgoiXG4iCiIgR2V0IGEgZmlsZSBmcm9tIGEgSFRUUCBzZXJ2ZXIgdGhhdCByZXF1aXJlcyB1c2VyIGFuZCBwYXNzd29yZCwgdXNpbmcgdGhlXG4iCiIgc2FtZSBwcm94eSBhcyBhYm92ZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC11IHVzZXI6cGFzc3dkIC14IG15LXByb3h5Ojg4OCBodHRwOi8vd3d3LmdldC50aGlzL1xuIgoiXG4iCiIgU29tZSBwcm94aWVzIHJlcXVpcmUgc3BlY2lhbCBhdXRoZW50aWNhdGlvbi4gU3BlY2lmeSBieSB1c2luZyAtVSBhcyBhYm92ZTpcbiIKKTsKIHB1dHMoCiJcbiIKIiAgICAgICAgY3VybCAtVSB1c2VyOnBhc3N3ZCAteCBteS1wcm94eTo4ODggaHR0cDovL3d3dy5nZXQudGhpcy9cbiIKIlxuIgoiIFNlZSBhbHNvIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgQ3VybCBzdXBwb3J0IHRoYXQgb2ZmZXIgZnVydGhlciBwcm94eVxuIgoiIGNvbnRyb2wuXG4iCiJcbiIKIlJBTkdFU1xuIgoiXG4iCiIgIFdpdGggSFRUUCAxLjEgYnl0ZS1yYW5nZXMgd2VyZSBpbnRyb2R1Y2VkLiBVc2luZyB0aGlzLCBhIGNsaWVudCBjYW4gcmVxdWVzdFxuIgoiICB0byBnZXQgb25seSBvbmUgb3IgbW9yZSBzdWJwYXJ0cyBvZiBhIHNwZWNpZmllZCBkb2N1bWVudC4gQ3VybCBzdXBwb3J0c1xuIgoiICB0aGlzIHdpdGggdGhlIC1yIGZsYWcuXG4iCiJcbiIKIiAgR2V0IHRoZSBmaXJzdCAxMDAgYnl0ZXMgb2YgYSBkb2N1bWVudDpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1yIDAtOTkgaHR0cDovL3d3dy5nZXQudGhpcy9cbiIKIlxuIgoiICBHZXQgdGhlIGxhc3QgNTAwIGJ5dGVzIG9mIGEgZG9jdW1lbnQ6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtciAtNTAwIGh0dHA6Ly93d3cuZ2V0LnRoaXMvXG4iCiJcbiIKIiAgQ3VybCBhbHNvIHN1cHBvcnRzIHNpbXBsZSByYW5nZXMgZm9yIEZUUCBmaWxlcyBhcyB3ZWxsLiBUaGVuIHlvdSBjYW4gb25seVxuIgoiICBzcGVjaWZ5IHN0YXJ0IGFuZCBzdG9wIHBvc2l0aW9uLlxuIgoiXG4iCiIgIEdldCB0aGUgZmlyc3QgMTAwIGJ5dGVzIG9mIGEgZG9jdW1lbnQgdXNpbmcgRlRQOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXIgMC05OSBmdHA6Ly93d3cuZ2V0LnRoaXMvUkVBRE1FICBcbiIKIlxuIgoiVVBMT0FESU5HXG4iCiJcbiIKIiBGVFBcbiIKIlxuIgoiICBVcGxvYWQgYWxsIGRhdGEgb24gc3RkaW4gdG8gYSBzcGVjaWZpZWQgZnRwIHNpdGU6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtdCBmdHA6Ly9mdHAudXBsb2FkLmNvbS9teWZpbGVcbiIKIlxuIgoiICBVcGxvYWQgZGF0YSBmcm9tIGEgc3BlY2lmaWVkIGZpbGUsIGxvZ2luIHdpdGggdXNlciBhbmQgcGFzc3dvcmQ6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtVCB1cGxvYWRmaWxlIC11IHVzZXI6cGFzc3dkIGZ0cDovL2Z0cC51cGxvYWQuY29tL215ZmlsZVxuIgoiXG4iCiIgIFVwbG9hZCBhIGxvY2FsIGZpbGUgdG8gdGhlIHJlbW90ZSBzaXRlLCBhbmQgdXNlIHRoZSBsb2NhbCBmaWxlIG5hbWUgcmVtb3RlXG4iCiIgIHRvbzpcbiIKIiBcbiIKIiAgICAgICAgY3VybCAtVCB1cGxvYWRmaWxlIC11IHVzZXI6cGFzc3dkIGZ0cDovL2Z0cC51cGxvYWQuY29tL1xuIgoiXG4iCiIgIFVwbG9hZCBhIGxvY2FsIGZpbGUgdG8gZ2V0IGFwcGVuZGVkIHRvIHRoZSByZW1vdGUgZmlsZSB1c2luZyBmdHA6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtVCBsb2NhbGZpbGUgLWEgZnRwOi8vZnRwLnVwbG9hZC5jb20vcmVtb3RlZmlsZVxuIgoiXG4iCiIgIE5PVEU6IEN1cmwgZG9lcyBub3Qgc3VwcG9ydCBmdHAgdXBsb2FkIHRocm91Z2ggYSBwcm94eSEgVGhlIHJlYXNvbiBmb3IgdGhpc1xuIgoiICBpcyBzaW1wbHkgdGhhdCBwcm94aWVzIGFyZSBzZWxkb21seSBjb25maWd1cmVkIHRvIGFsbG93IHRoaXMgYW5kIHRoYXQgbm9cbiIKIiAgYXV0aG9yIGhhcyBzdXBwbGllZCBjb2RlIHRoYXQgbWFrZXMgaXQgcG9zc2libGUhXG4iCiJcbiIKIiBIVFRQXG4iCiJcbiIKIiAgVXBsb2FkIGFsbCBkYXRhIG9uIHN0ZGluIHRvIGEgc3BlY2lmaWVkIGh0dHAgc2l0ZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC10IGh0dHA6Ly93d3cudXBsb2FkLmNvbS9teWZpbGVcbiIKIlxuIgoiICBOb3RlIHRoYXQgdGhlIGh0dHAgc2VydmVyIG11c3QndmUgYmVlbiBjb25maWd1cmVkIHRvIGFjY2VwdCBQVVQgYmVmb3JlIHRoaXNcbiIKIiAgY2FuIGJlIGRvbmUgc3VjY2Vzc2Z1bGx5LlxuIgoiXG4iCiIgIEZvciBvdGhlciB3YXlzIHRvIGRvIGh0dHAgZGF0YSB1cGxvYWQsIHNlZSB0aGUgUE9TVCBzZWN0aW9uIGJlbG93LlxuIgoiXG4iCiJWRVJCT1NFIC8gREVCVUdcbiIKIlxuIgoiICBJZiBjdXJsIGZhaWxzIHdoZXJlIGl0IGlzbid0IHN1cHBvc2VkIHRvLCBpZiB0aGUgc2VydmVycyBkb24ndCBsZXQgeW91XG4iCiIgIGluLCBpZiB5b3UgY2FuJ3QgdW5kZXJzdGFuZCB0aGUgcmVzcG9uc2VzOiB1c2UgdGhlIC12IGZsYWcgdG8gZ2V0IFZFUkJPU0VcbiIKIiAgZmV0Y2hpbmcuIEN1cmwgd2lsbCBvdXRwdXQgbG90cyBvZiBpbmZvIGFuZCBhbGwgZGF0YSBpdCBzZW5kcyBhbmRcbiIKIiAgcmVjZWl2ZXMgaW4gb3JkZXIgdG8gbGV0IHRoZSB1c2VyIHNlZSBhbGwgY2xpZW50LXNlcnZlciBpbnRlcmFjdGlvbi5cbiIKIlxuIgoiICAgICAgICBjdXJsIC12IGZ0cDovL2Z0cC51cGxvYWQuY29tL1xuIgoiXG4iCiJERVRBSUxFRCBJTkZPUk1BVElPTlxuIgoiXG4iCiIgIERpZmZlcmVudCBwcm90b2NvbHMgcHJvdmlkZSBkaWZmZXJlbnQgd2F5cyBvZiBnZXR0aW5nIGRldGFpbGVkIGluZm9ybWF0aW9uXG4iCiIgIGFib3V0IHNwZWNpZmljIGZpbGVzL2RvY3VtZW50cy4gVG8gZ2V0IGN1cmwgdG8gc2hvdyBkZXRhaWxlZCBpbmZvcm1hdGlvblxuIgoiICBhYm91dCBhIHNpbmdsZSBmaWxlLCB5b3Ugc2hvdWxkIHVzZSAtSS8tLWhlYWQgb3B0aW9uLiBJdCBkaXNwbGF5cyBhbGxcbiIKIiAgYXZhaWxhYmxlIGluZm8gb24gYSBzaW5nbGUgZmlsZSBmb3IgSFRUUCBhbmQgRlRQLiBUaGUgSFRUUCBpbmZvcm1hdGlvbiBpcyBhXG4iCiIgIGxvdCBtb3JlIGV4dGVuc2l2ZS5cbiIKIlxuIgoiICBGb3IgSFRUUCwgeW91IGNhbiBnZXQgdGhlIGhlYWRlciBpbmZvcm1hdGlvbiAodGhlIHNhbWUgYXMgLUkgd291bGQgc2hvdylcbiIKIiAgc2hvd24gYmVmb3JlIHRoZSBkYXRhIGJ5IHVzaW5nIC1pLy0taW5jbHVkZS4gQ3VybCB1bmRlcnN0YW5kcyB0aGVcbiIKIiAgLUQvLS1kdW1wLWhlYWRlciBvcHRpb24gd2hlbiBnZXR0aW5nIGZpbGVzIGZyb20gYm90aCBGVFAgYW5kIEhUVFAsIGFuZCBpdFxuIgoiICB3aWxsIHRoZW4gc3RvcmUgdGhlIGhlYWRlcnMgaW4gdGhlIHNwZWNpZmllZCBmaWxlLlxuIgoiXG4iCiIgIFN0b3JlIHRoZSBIVFRQIGhlYWRlcnMgaW4gYSBzZXBhcmF0ZSBmaWxlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLS1kdW1wLWhlYWRlciBoZWFkZXJzLnR4dCBjdXJsLmhheHgubnVcbiIKIlxuIgoiICBOb3RlIHRoYXQgaGVhZGVycyBzdG9yZWQgaW4gYSBzZXBhcmF0ZSBmaWxlIGNhbiBiZSB2ZXJ5IHVzZWZ1bCBhdCBhIGxhdGVyXG4iCiIgIHRpbWUgaWYgeW91IHdhbnQgY3VybCB0byB1c2UgY29va2llcyBzZW50IGJ5IHRoZSBzZXJ2ZXIuIE1vcmUgYWJvdXQgdGhhdCBpblxuIgoiICB0aGUgY29va2llcyBzZWN0aW9uLlxuIgoiXG4iCiJQT1NUIChIVFRQKVxuIgoiXG4iCiIgIEl0J3MgZWFzeSB0byBwb3N0IGRhdGEgdXNpbmcgY3VybC4gVGhpcyBpcyBkb25lIHVzaW5nIHRoZSAtZCA8ZGF0YT5cbiIKIiAgb3B0aW9uLiAgVGhlIHBvc3QgZGF0YSBtdXN0IGJlIHVybGVuY29kZWQuXG4iCiJcbiIKIiAgUG9zdCBhIHNpbXBsZSBcIm5hbWVcIiBhbmQgXCJwaG9uZVwiIGd1ZXN0Ym9vay5cbiIKIlxuIgoiICAgICAgICBjdXJsIC1kIFwibmFtZT1SYWZhZWwlMjBTYWd1bGEmcGhvbmU9MzMyMDc4MFwiIFxcXG4iCiIgICAgICAgICAgICAgICAgaHR0cDovL3d3dy53aGVyZS5jb20vZ3Vlc3QuY2dpXG4iCiJcbiIKIiAgSG93IHRvIHBvc3QgYSBmb3JtIHdpdGggY3VybCwgbGVzc29uICMxOlxuIgoiXG4iCiIgIERpZyBvdXQgYWxsIHRoZSA8aW5wdXQ+IHRhZ3MgaW4gdGhlIGZvcm0gdGhhdCB5b3Ugd2FudCB0byBmaWxsIGluLiAoVGhlcmUnc1xuIgoiICBhIHBlcmwgcHJvZ3JhbSBjYWxsZWQgZm9ybWZpbmQucGwgb24gdGhlIGN1cmwgc2l0ZSB0aGF0IGhlbHBzIHdpdGggdGhpcykuXG4iCiJcbiIKIiAgSWYgdGhlcmUncyBhIFwibm9ybWFsXCIgcG9zdCwgeW91IHVzZSAtZCB0byBwb3N0LiAtZCB0YWtlcyBhIGZ1bGwgXCJwb3N0XG4iCiIgIHN0cmluZ1wiLCB3aGljaCBpcyBpbiB0aGUgZm9ybWF0XG4iCiJcbiIKIiAgICAgICAgPHZhcmlhYmxlMT49PGRhdGExPiY8dmFyaWFibGUyPj08ZGF0YTI+Ji4uLlxuIgoiXG4iCiIgIFRoZSAndmFyaWFibGUnIG5hbWVzIGFyZSB0aGUgbmFtZXMgc2V0IHdpdGggXCJuYW1lPVwiIGluIHRoZSA8aW5wdXQ+IHRhZ3MsIGFuZFxuIgoiICB0aGUgZGF0YSBpcyB0aGUgY29udGVudHMgeW91IHdhbnQgdG8gZmlsbCBpbiBmb3IgdGhlIGlucHV0cy4gVGhlIGRhdGEgKm11c3QqXG4iCiIgIGJlIHByb3Blcmx5IFVSTCBlbmNvZGVkLiBUaGF0IG1lYW5zIHlvdSByZXBsYWNlIHNwYWNlIHdpdGggKyBhbmQgdGhhdCB5b3VcbiIKIiAgd3JpdGUgd2VpcmQgbGV0dGVycyB3aXRoICVYWCB3aGVyZSBYWCBpcyB0aGUgaGV4YWRlY2ltYWwgcmVwcmVzZW50YXRpb24gb2ZcbiIKIiAgdGhlIGxldHRlcidzIEFTQ0lJIGNvZGUuXG4iCiJcbiIKIiAgRXhhbXBsZTpcbiIKIlxuIgoiICAocGFnZSBsb2NhdGVkIGF0IGh0dHA6Ly93d3cuZm9ybXBvc3QuY29tL2dldHRoaXMvXG4iCiJcbiIKIiAgICAgICAgPGZvcm0gYWN0aW9uPVwicG9zdC5jZ2lcIiBtZXRob2Q9XCJwb3N0XCI+XG4iCiIgICAgICAgIDxpbnB1dCBuYW1lPXVzZXIgc2l6ZT0xMD5cbiIKIiAgICAgICAgPGlucHV0IG5hbWU9cGFzcyB0eXBlPXBhc3N3b3JkIHNpemU9MTA+XG4iCiIgICAgICAgIDxpbnB1dCBuYW1lPWlkIHR5cGU9aGlkZGVuIHZhbHVlPVwiYmxhYmxhYmxhXCI+XG4iCiIgICAgICAgIDxpbnB1dCBuYW1lPWRpbmcgdmFsdWU9XCJzdWJtaXRcIj5cbiIKIiAgICAgICAgPC9mb3JtPlxuIgoiXG4iCiIgIFdlIHdhbnQgdG8gZW50ZXIgdXNlciAnZm9vYmFyJyB3aXRoIHBhc3N3b3JkICcxMjM0NScuXG4iCiJcbiIKIiAgVG8gcG9zdCB0byB0aGlzLCB5b3UgZW50ZXIgYSBjdXJsIGNvbW1hbmQgbGluZSBsaWtlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLWQgXCJ1c2VyPWZvb2JhciZwYXNzPTEyMzQ1JmlkPWJsYWJsYWJsYSZkaWc9c3VibWl0XCIgIChjb250aW51ZXMpXG4iCiIgICAgICAgICAgaHR0cDovL3d3dy5mb3JtcG9zdC5jb20vZ2V0dGhpcy9wb3N0LmNnaVxuIgoiXG4iCiJcbiIKIiAgV2hpbGUgLWQgdXNlcyB0aGUgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIG1pbWUtdHlwZSwgZ2VuZXJhbGx5XG4iCiIgIHVuZGVyc3Rvb2QgYnkgQ0dJJ3MgYW5kIHNpbWlsYXIsIGN1cmwgYWxzbyBzdXBwb3J0cyB0aGUgbW9yZSBjYXBhYmxlXG4iCiIgIG11bHRpcGFydC9mb3JtLWRhdGEgdHlwZS4gVGhpcyBsYXR0ZXIgdHlwZSBzdXBwb3J0cyB0aGluZ3MgbGlrZSBmaWxlIHVwbG9hZC5cbiIKIlxuIgoiICAtRiBhY2NlcHRzIHBhcmFtZXRlcnMgbGlrZSAtRiBcIm5hbWU9Y29udGVudHNcIi4gSWYgeW91IHdhbnQgdGhlIGNvbnRlbnRzIHRvXG4iCiIgIGJlIHJlYWQgZnJvbSBhIGZpbGUsIHVzZSA8QGZpbGVuYW1lPiBhcyBjb250ZW50cy4gV2hlbiBzcGVjaWZ5aW5nIGEgZmlsZSxcbiIKIiAgeW91IGNhbiBhbHNvIHNwZWNpZnkgd2hpY2ggY29udGVudCB0eXBlIHRoZSBmaWxlIGlzLCBieSBhcHBlbmRpbmdcbiIKIiAgJzt0eXBlPTxtaW1lIHR5cGU+JyB0byB0aGUgZmlsZSBuYW1lLiBZb3UgY2FuIGFsc28gcG9zdCBjb250ZW50cyBvZiBzZXZlcmFsXG4iCiIgIGZpbGVzIGluIG9uZSBmaWVsZC4gU28gdGhhdCB0aGUgZmllbGQgbmFtZSAnY29vbGZpbGVzJyBjYW4gYmUgc2VudCB0aHJlZVxuIgoiICBmaWxlcyB3aXRoIGRpZmZlcmVudCBjb250ZW50IHR5cGVzIGluIGEgbWFubmVyIHNpbWlsYXIgdG86XG4iCiJcbiIKIiAgICAgICAgY3VybCAtRiBcImNvb2xmaWxlcz1AZmlsMS5naWY7dHlwZT1pbWFnZS9naWYsZmlsMi50eHQsZmlsMy5odG1sXCIgXFxcbiIKIiAgICAgICAgaHR0cDovL3d3dy5wb3N0LmNvbS9wb3N0aXQuY2dpXG4iCiJcbiIKIiAgSWYgY29udGVudC10eXBlIGlzIG5vdCBzcGVjaWZpZWQsIGN1cmwgd2lsbCB0cnkgdG8gZ3Vlc3MgZnJvbSB0aGUgZXh0ZW5zaW9uXG4iCiIgIChpdCBvbmx5IGtub3dzIGEgZmV3KSwgb3IgdXNlIHRoZSBwcmV2aW91c2x5IHNwZWNpZmllZCB0eXBlIChmcm9tIGFuIGVhcmxpZXJcbiIKIiAgZmlsZSBpZiBzZXZlcmFsIGZpbGVzIGFyZSBzcGVjaWZpZWQgaW4gYSBsaXN0KSBvciBmaW5hbGx5IHVzaW5nIHRoZSBkZWZhdWx0XG4iCiIgIHR5cGUgJ3RleHQvcGxhaW4nLlxuIgoiXG4iCiIgIEVtdWxhdGUgYSBmaWxsLWluIGZvcm0gd2l0aCAtRi4gTGV0J3Mgc2F5IHlvdSBmaWxsIGluIHRocmVlIGZpZWxkcyBpbiBhXG4iCiIgIGZvcm0uIE9uZSBmaWVsZCBpcyBhIGZpbGUgbmFtZSB3aGljaCB0byBwb3N0LCBvbmUgZmllbGQgaXMgeW91ciBuYW1lIGFuZCBvbmVcbiIKIiAgZmllbGQgaXMgYSBmaWxlIGRlc2NyaXB0aW9uLiBXZSB3YW50IHRvIHBvc3QgdGhlIGZpbGUgd2UgaGF2ZSB3cml0dGVuIG5hbWVkXG4iCiIgIFwiY29vbHRleHQudHh0XCIuIFRvIGxldCBjdXJsIGRvIHRoZSBwb3N0aW5nIG9mIHRoaXMgZGF0YSBpbnN0ZWFkIG9mIHlvdXJcbiIKIiAgZmF2b3VyaXRlIGJyb3dzZXIsIHlvdSBoYXZlIHRvIGNoZWNrIG91dCB0aGUgSFRNTCBvZiB0aGUgZm9ybSBwYWdlIHRvIGdldCB0b1xuIgoiICBrbm93IHRoZSBuYW1lcyBvZiB0aGUgaW5wdXQgZmllbGRzLiBJbiBvdXIgZXhhbXBsZSwgdGhlIGlucHV0IGZpZWxkIG5hbWVzIGFyZVxuIgoiICAnZmlsZScsICd5b3VybmFtZScgYW5kICdmaWxlZGVzY3JpcHRpb24nLlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLUYgXCJmaWxlPUBjb29sdGV4dC50eHRcIiAtRiBcInlvdXJuYW1lPURhbmllbFwiIFxcXG4iCiIgICAgICAgICAgICAgLUYgXCJmaWxlZGVzY3JpcHRpb249Q29vbCB0ZXh0IGZpbGUgd2l0aCBjb29sIHRleHQgaW5zaWRlXCIgXFxcbiIKIiAgICAgICAgICAgICBodHRwOi8vd3d3LnBvc3QuY29tL3Bvc3RpdC5jZ2lcbiIKIlxuIgoiICBTbywgdG8gc2VuZCB0d28gZmlsZXMgaW4gb25lIHBvc3QgeW91IGNhbiBkbyBpdCBpbiB0d28gd2F5czpcbiIKIlxuIgoiICAxLiBTZW5kIG11bHRpcGxlIGZpbGVzIGluIGEgc2luZ2xlIFwiZmllbGRcIiB3aXRoIGEgc2luZ2xlIGZpZWxkIG5hbWU6XG4iCiIgXG4iCiIgICAgICAgIGN1cmwgLUYgXCJwaWN0dXJlcz1AZG9nLmdpZixjYXQuZ2lmXCIgXG4iCiIgXG4iCiIgIDIuIFNlbmQgdHdvIGZpZWxkcyB3aXRoIHR3byBmaWVsZCBuYW1lczogXG4iCiJcbiIKIiAgICAgICAgY3VybCAtRiBcImRvY3BpY3R1cmU9QGRvZy5naWZcIiAtRiBcImNhdHBpY3R1cmU9QGNhdC5naWZcIiBcbiIKIlxuIgoiUkVGRVJFUlxuIgoiXG4iCiIgIEEgSFRUUCByZXF1ZXN0IGhhcyB0aGUgb3B0aW9uIHRvIGluY2x1ZGUgaW5mb3JtYXRpb24gYWJvdXQgd2hpY2ggYWRkcmVzc1xuIgoiICB0aGF0IHJlZmVycmVkIHRvIGFjdHVhbCBwYWdlLCBhbmQgY3VybCBhbGxvd3MgdGhlIHVzZXIgdG8gc3BlY2lmeSB0aGF0XG4iCiIgIHJlZmVycmVyIHRvIGdldCBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZS4gSXQgaXMgZXNwZWNpYWxseSB1c2VmdWwgdG9cbiIKIiAgZm9vbCBvciB0cmljayBzdHVwaWQgc2VydmVycyBvciBDR0kgc2NyaXB0cyB0aGF0IHJlbHkgb24gdGhhdCBpbmZvcm1hdGlvblxuIgoiICBiZWluZyBhdmFpbGFibGUgb3IgY29udGFpbiBjZXJ0YWluIGRhdGEuXG4iCiJcbiIKIiAgICAgICAgY3VybCAtZSB3d3cuY29vbHNpdGUuY29tIGh0dHA6Ly93d3cuc2hvd21lLmNvbS9cbiIKIlxuIgoiVVNFUiBBR0VOVFxuIgoiXG4iCiIgIEEgSFRUUCByZXF1ZXN0IGhhcyB0aGUgb3B0aW9uIHRvIGluY2x1ZGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGJyb3dzZXJcbiIKIiAgdGhhdCBnZW5lcmF0ZWQgdGhlIHJlcXVlc3QuIEN1cmwgYWxsb3dzIGl0IHRvIGJlIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZFxuIgoiICBsaW5lLiBJdCBpcyBlc3BlY2lhbGx5IHVzZWZ1bCB0byBmb29sIG9yIHRyaWNrIHN0dXBpZCBzZXJ2ZXJzIG9yIENHSVxuIgoiICBzY3JpcHRzIHRoYXQgb25seSBhY2NlcHQgY2VydGFpbiBicm93c2Vycy5cbiIKIlxuIgoiICBFeGFtcGxlOlxuIgoiXG4iCiIgIGN1cmwgLUEgJ01vemlsbGEvMy4wIChXaW45NTsgSSknIGh0dHA6Ly93d3cubmF0aW9uc2JhbmsuY29tL1xuIgoiXG4iCiIgIE90aGVyIGNvbW1vbiBzdHJpbmdzOlxuIgoiICAgICdNb3ppbGxhLzMuMCAoV2luOTU7IEkpJyAgICAgTmV0c2NhcGUgVmVyc2lvbiAzIGZvciBXaW5kb3dzIDk1XG4iCiIgICAgJ01vemlsbGEvMy4wNCAoV2luOTU7IFUpJyAgICBOZXRzY2FwZSBWZXJzaW9uIDMgZm9yIFdpbmRvd3MgOTVcbiIKIiAgICAnTW96aWxsYS8yLjAyIChPUy8yOyBVKScgICAgIE5ldHNjYXBlIFZlcnNpb24gMiBmb3IgT1MvMlxuIgoiICAgICdNb3ppbGxhLzQuMDQgW2VuXSAoWDExOyBVOyBBSVggNC4yOyBOYXYpJyAgICAgICAgICAgTlMgZm9yIEFJWFxuIgoiICAgICdNb3ppbGxhLzQuMDUgW2VuXSAoWDExOyBVOyBMaW51eCAyLjAuMzIgaTU4NiknICAgICAgTlMgZm9yIExpbnV4XG4iCiJcbiIKIiAgTm90ZSB0aGF0IEludGVybmV0IEV4cGxvcmVyIHRyaWVzIGhhcmQgdG8gYmUgY29tcGF0aWJsZSBpbiBldmVyeSB3YXk6XG4iCiIgICAgJ01vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDQuMDE7IFdpbmRvd3MgOTUpJyAgICBNU0lFIGZvciBXOTVcbiIKIlxuIgoiICBNb3ppbGxhIGlzIG5vdCB0aGUgb25seSBwb3NzaWJsZSBVc2VyLUFnZW50IG5hbWU6XG4iCiIgICAgJ0tvbnF1ZXJvci8xLjAnICAgICAgICAgICAgIEtERSBGaWxlIE1hbmFnZXIgZGVza3RvcCBjbGllbnRcbiIKIiAgICAnTHlueC8yLjcuMSBsaWJ3d3ctRk0vMi4xNCcgTHlueCBjb21tYW5kIGxpbmUgYnJvd3NlclxuIgoiXG4iCiJDT09LSUVTXG4iCiJcbiIKIiAgQ29va2llcyBhcmUgZ2VuZXJhbGx5IHVzZWQgYnkgd2ViIHNlcnZlcnMgdG8ga2VlcCBzdGF0ZSBpbmZvcm1hdGlvbiBhdCB0aGVcbiIKIiAgY2xpZW50J3Mgc2lkZS4gVGhlIHNlcnZlciBzZXRzIGNvb2tpZXMgYnkgc2VuZGluZyBhIHJlc3BvbnNlIGxpbmUgaW4gdGhlXG4iCiIgIGhlYWRlcnMgdGhhdCBsb29rcyBsaWtlICdTZXQtQ29va2llOiA8ZGF0YT4nIHdoZXJlIHRoZSBkYXRhIHBhcnQgdGhlblxuIgoiICB0eXBpY2FsbHkgY29udGFpbnMgYSBzZXQgb2YgTkFNRT1WQUxVRSBwYWlycyAoc2VwYXJhdGVkIGJ5IHNlbWljb2xvbnMgJzsnXG4iCiIgIGxpa2UgXCJOQU1FMT1WQUxVRTE7IE5BTUUyPVZBTFVFMjtcIikuIFRoZSBzZXJ2ZXIgY2FuIGFsc28gc3BlY2lmeSBmb3Igd2hhdFxuIgoiICBwYXRoIHRoZSBcImNvb2tpZVwiIHNob3VsZCBiZSB1c2VkIGZvciAoYnkgc3BlY2lmeWluZyBcInBhdGg9dmFsdWVcIiksIHdoZW4gdGhlXG4iCiIgIGNvb2tpZSBzaG91bGQgZXhwaXJlIChcImV4cGlyZT1EQVRFXCIpLCBmb3Igd2hhdCBkb21haW4gdG8gdXNlIGl0XG4iCiIgIChcImRvbWFpbj1OQU1FXCIpIGFuZCBpZiBpdCBzaG91bGQgYmUgdXNlZCBvbiBzZWN1cmUgY29ubmVjdGlvbnMgb25seVxuIgoiICAoXCJzZWN1cmVcIikuXG4iCiJcbiIKIiAgSWYgeW91J3ZlIHJlY2VpdmVkIGEgcGFnZSBmcm9tIGEgc2VydmVyIHRoYXQgY29udGFpbnMgYSBoZWFkZXIgbGlrZTpcbiIKIiAgICAgICAgU2V0LUNvb2tpZTogc2Vzc2lvbmlkPWJvbzEyMzsgcGF0aD1cIi9mb29cIjtcbiIKIlxuIgoiICBpdCBtZWFucyB0aGUgc2VydmVyIHdhbnRzIHRoYXQgZmlyc3QgcGFpciBwYXNzZWQgb24gd2hlbiB3ZSBnZXQgYW55dGhpbmcgaW5cbiIKIiAgYSBwYXRoIGJlZ2lubmluZyB3aXRoIFwiL2Zvb1wiLlxuIgoiXG4iCiIgIEV4YW1wbGUsIGdldCBhIHBhZ2UgdGhhdCB3YW50cyBteSBuYW1lIHBhc3NlZCBpbiBhIGNvb2tpZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1iIFwibmFtZT1EYW5pZWxcIiB3d3cuc2lsbHlwYWdlLmNvbVxuIgoiXG4iCiIgIEN1cmwgYWxzbyBoYXMgdGhlIGFiaWxpdHkgdG8gdXNlIHByZXZpb3VzbHkgcmVjZWl2ZWQgY29va2llcyBpbiBmb2xsb3dpbmdcbiIKIiAgc2Vzc2lvbnMuIElmIHlvdSBnZXQgY29va2llcyBmcm9tIGEgc2VydmVyIGFuZCBzdG9yZSB0aGVtIGluIGEgZmlsZSBpbiBhXG4iCiIgIG1hbm5lciBzaW1pbGFyIHRvOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLS1kdW1wLWhlYWRlciBoZWFkZXJzIHd3dy5leGFtcGxlLmNvbVxuIgoiXG4iCiIgIC4uLiB5b3UgY2FuIHRoZW4gaW4gYSBzZWNvbmQgY29ubmVjdCB0byB0aGF0IChvciBhbm90aGVyKSBzaXRlLCB1c2UgdGhlXG4iCiIgIGNvb2tpZXMgZnJvbSB0aGUgJ2hlYWRlcnMnIGZpbGUgbGlrZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1iIGhlYWRlcnMgd3d3LmV4YW1wbGUuY29tXG4iCiJcbiIKIiAgTm90ZSB0aGF0IGJ5IHNwZWNpZnlpbmcgLWIgeW91IGVuYWJsZSB0aGUgXCJjb29raWUgYXdhcmVuZXNzXCIgYW5kIHdpdGggLUxcbiIKIiAgeW91IGNhbiBtYWtlIGN1cmwgZm9sbG93IGEgbG9jYXRpb246ICh3aGljaCBvZnRlbiBpcyB1c2VkIGluIGNvbWJpbmF0aW9uXG4iCiIgIHdpdGggY29va2llcykuIFNvIHRoYXQgaWYgYSBzaXRlIHNlbmRzIGNvb2tpZXMgYW5kIGEgbG9jYXRpb24sIHlvdSBjYW5cbiIKIiAgdXNlIGEgbm9uLWV4aXN0aW5nIGZpbGUgdG8gdHJpZyB0aGUgY29va2llIGF3YXJlbmVzcyBsaWtlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLUwgLWIgZW1wdHktZmlsZSB3d3cuZXhhbXBsZS5jb21cbiIKIlxuIgoiICBUaGUgZmlsZSB0byByZWFkIGNvb2tpZXMgZnJvbSBtdXN0IGJlIGZvcm1hdHRlZCB1c2luZyBwbGFpbiBIVFRQIGhlYWRlcnMgT1JcbiIKIiAgYXMgbmV0c2NhcGUncyBjb29raWUgZmlsZS4gQ3VybCB3aWxsIGRldGVybWluZSB3aGF0IGtpbmQgaXQgaXMgYmFzZWQgb24gdGhlXG4iCiIgIGZpbGUgY29udGVudHMuXG4iCiJcbiIKIlBST0dSRVNTIE1FVEVSXG4iCiJcbiIKIiAgVGhlIHByb2dyZXNzIG1ldGVyIGV4aXN0cyB0byBzaG93IGEgdXNlciB0aGF0IHNvbWV0aGluZyBhY3R1YWxseSBpc1xuIgoiICBoYXBwZW5pbmcuIFRoZSBkaWZmZXJlbnQgZmllbGRzIGluIHRoZSBvdXRwdXQgaGF2ZSB0aGUgZm9sbG93aW5nIG1lYW5pbmc6XG4iCiJcbiIKIiAgJSBUb3RhbCAgICAlIFJlY2VpdmVkICUgWGZlcmQgIEF2ZXJhZ2UgU3BlZWQgICAgICAgICAgVGltZSAgICAgICAgICAgICBDdXJyLlxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGxvYWQgIFVwbG9hZCBUb3RhbCAgICBDdXJyZW50ICBMZWZ0ICAgIFNwZWVkXG4iCiIgIDAgIDE1MU0gICAgMCAzODYwOCAgICAwICAgICAwICAgOTQwNiAgICAgIDAgIDQ6NDE6NDMgIDA6MDA6MDQgIDQ6NDE6MzkgIDkyODdcbiIKIlxuIgoiICBGcm9tIGxlZnQtdG8tcmlnaHQ6XG4iCiIgICAlICAgICAgICAgICAgIC0gcGVyY2VudGFnZSBjb21wbGV0ZWQgb2YgdGhlIHdob2xlIHRyYW5zZmVyXG4iCik7CiBwdXRzKAoiICAgVG90YWwgICAgICAgICAtIHRvdGFsIHNpemUgb2YgdGhlIHdob2xlIGV4cGVjdGVkIHRyYW5zZmVyXG4iCiIgICAlICAgICAgICAgICAgIC0gcGVyY2VudGFnZSBjb21wbGV0ZWQgb2YgdGhlIGRvd25sb2FkXG4iCiIgICBSZWNlaXZlZCAgICAgIC0gY3VycmVudGx5IGRvd25sb2FkZWQgYW1vdW50IG9mIGJ5dGVzXG4iCiIgICAlICAgICAgICAgICAgIC0gcGVyY2VudGFnZSBjb21wbGV0ZWQgb2YgdGhlIHVwbG9hZFxuIgoiICAgWGZlcmQgICAgICAgICAtIGN1cnJlbnRseSB1cGxvYWRlZCBhbW91bnQgb2YgYnl0ZXNcbiIKIiAgIEF2ZXJhZ2UgU3BlZWRcbiIKIiAgIERsb2FkICAgICAgICAgLSB0aGUgYXZlcmFnZSB0cmFuc2ZlciBzcGVlZCBvZiB0aGUgZG93bmxvYWRcbiIKIiAgIEF2ZXJhZ2UgU3BlZWRcbiIKIiAgIFVwbG9hZCAgICAgICAgLSB0aGUgYXZlcmFnZSB0cmFuc2ZlciBzcGVlZCBvZiB0aGUgdXBsb2FkXG4iCiIgICBUaW1lIFRvdGFsICAgIC0gZXhwZWN0ZWQgdGltZSB0byBjb21wbGV0ZSB0aGUgb3BlcmF0aW9uXG4iCiIgICBUaW1lIEN1cnJlbnQgIC0gdGltZSBwYXNzZWQgc2luY2UgdGhlIGludm9rZVxuIgoiICAgVGltZSBMZWZ0ICAgICAtIGV4cGVjdGVkIHRpbWUgbGVmdCB0byBjb21wbGV0ZXRpb25cbiIKIiAgIEN1cnIuU3BlZWQgICAgLSB0aGUgYXZlcmFnZSB0cmFuc2ZlciBzcGVlZCB0aGUgbGFzdCA1IHNlY29uZHMgKHRoZSBmaXJzdFxuIgoiICAgICAgICAgICAgICAgICAgIDUgc2Vjb25kcyBvZiBhIHRyYW5zZmVyIGlzIGJhc2VkIG9uIGxlc3MgdGltZSBvZiBjb3Vyc2UuKVxuIgoiXG4iCiIgIFRoZSAtIyBvcHRpb24gd2lsbCBkaXNwbGF5IGEgdG90YWxseSBkaWZmZXJlbnQgcHJvZ3Jlc3MgYmFyIHRoYXQgZG9lc24ndFxuIgoiICBuZWVkIG11Y2ggZXhwbGFuYXRpb24hXG4iCiJcbiIKIlNQRUVEIExJTUlUXG4iCiJcbiIKIiAgQ3VybCBvZmZlcnMgdGhlIHVzZXIgdG8gc2V0IGNvbmRpdGlvbnMgcmVnYXJkaW5nIHRyYW5zZmVyIHNwZWVkIHRoYXQgbXVzdFxuIgoiICBiZSBtZXQgdG8gbGV0IHRoZSB0cmFuc2ZlciBrZWVwIGdvaW5nLiBCeSB1c2luZyB0aGUgc3dpdGNoIC15IGFuZCAtWSB5b3VcbiIKIiAgY2FuIG1ha2UgY3VybCBhYm9ydCB0cmFuc2ZlcnMgaWYgdGhlIHRyYW5zZmVyIHNwZWVkIGRvZXNuJ3QgZXhjZWVkIHlvdXJcbiIKIiAgZ2l2ZW4gbG93ZXN0IGxpbWl0IGZvciBhIHNwZWNpZmllZCB0aW1lLlxuIgoiXG4iCiIgIFRvIGxldCBjdXJsIGFiYW5kb24gZG93bmxvYWRpbmcgdGhpcyBwYWdlIGlmIGl0cyBzbG93ZXIgdGhhbiAzMDAwIGJ5dGVzIHBlclxuIgoiICBzZWNvbmQgZm9yIDEgbWludXRlLCBydW46XG4iCiJcbiIKIiAgICAgICAgY3VybCAteSAzMDAwIC1ZIDYwIHd3dy5mYXItYXdheS1zaXRlLmNvbVxuIgoiXG4iCiIgIFRoaXMgY2FuIHZlcnkgd2VsbCBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIG92ZXJhbGwgdGltZSBsaW1pdCwgc29cbiIKIiAgdGhhdCB0aGUgYWJvdmUgb3BlcmF0aW9pbiBtdXN0IGJlIGNvbXBsZXRlZCBpbiB3aG9sZSB3aXRoaW4gMzAgbWludXRlczpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1tIDE4MDAgLXkgMzAwMCAtWSA2MCB3d3cuZmFyLWF3YXktc2l0ZS5jb21cbiIKIlxuIgoiQ09ORklHIEZJTEVcbiIKIlxuIgoiICBDdXJsIGF1dG9tYXRpY2FsbHkgdHJpZXMgdG8gcmVhZCB0aGUgLmN1cmxyYyBmaWxlIChvciBfY3VybHJjIGZpbGUgb24gd2luMzJcbiIKIiAgc3lzdGVtcykgZnJvbSB0aGUgdXNlcidzIGhvbWUgZGlyIG9uIHN0YXJ0dXAuIFRoZSBjb25maWcgZmlsZSBzaG91bGQgYmVcbiIKIiAgbWFkZSB1cCB3aXRoIG5vcm1hbCBjb21tYW5kIGxpbmUgc3dpdGNoZXMuIENvbW1lbnRzIGNhbiBiZSB1c2VkIHdpdGhpbiB0aGVcbiIKIiAgZmlsZS4gSWYgdGhlIGZpcnN0IGxldHRlciBvbiBhIGxpbmUgaXMgYSAnIyctbGV0dGVyIHRoZSByZXN0IG9mIHRoZSBsaW5lXG4iCiIgIGlzIHRyZWF0ZWQgYXMgYSBjb21tZW50LlxuIgoiXG4iCiIgIEV4YW1wbGUsIHNldCBkZWZhdWx0IHRpbWUgb3V0IGFuZCBwcm94eSBpbiBhIGNvbmZpZyBmaWxlOlxuIgoiXG4iCiIgICAgICAgICMgV2Ugd2FudCBhIDMwIG1pbnV0ZSB0aW1lb3V0OlxuIgoiICAgICAgICAtbSAxODAwXG4iCiIgICAgICAgICMgLi4uIGFuZCB3ZSB1c2UgYSBwcm94eSBmb3IgYWxsIGFjY2Vzc2VzOlxuIgoiICAgICAgICAteCBwcm94eS5vdXIuZG9tYWluLmNvbTo4MDgwXG4iCiJcbiIKIiAgV2hpdGUgc3BhY2VzIEFSRSBzaWduaWZpY2FudCBhdCB0aGUgZW5kIG9mIGxpbmVzLCBidXQgYWxsIHdoaXRlIHNwYWNlc1xuIgoiICBsZWFkaW5nIHVwIHRvIHRoZSBmaXJzdCBjaGFyYWN0ZXJzIG9mIGVhY2ggbGluZSBhcmUgaWdub3JlZC5cbiIKIlxuIgoiICBQcmV2ZW50IGN1cmwgZnJvbSByZWFkaW5nIHRoZSBkZWZhdWx0IGZpbGUgYnkgdXNpbmcgLXEgYXMgdGhlIGZpcnN0IGNvbW1hbmRcbiIKIiAgbGluZSBwYXJhbWV0ZXIsIGxpa2U6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtcSB3d3cudGhhdHNpdGUuY29tXG4iCiJcbiIKIiAgRm9yY2UgY3VybCB0byBnZXQgYW5kIGRpc3BsYXkgYSBsb2NhbCBoZWxwIHBhZ2UgaW4gY2FzZSBpdCBpcyBpbnZva2VkXG4iCiIgIHdpdGhvdXQgVVJMIGJ5IG1ha2luZyBhIGNvbmZpZyBmaWxlIHNpbWlsYXIgdG86XG4iCiJcbiIKIiAgICAgICAgIyBkZWZhdWx0IHVybCB0byBnZXRcbiIKIiAgICAgICAgaHR0cDovL2hlbHAud2l0aC5jdXJsLmNvbS9jdXJsaGVscC5odG1sXG4iCiJcbiIKIiAgWW91IGNhbiBzcGVjaWZ5IGFub3RoZXIgY29uZmlnIGZpbGUgdG8gYmUgcmVhZCBieSB1c2luZyB0aGUgLUsvLS1jb25maWdcbiIKIiAgZmxhZy4gSWYgeW91IHNldCBjb25maWcgZmlsZSBuYW1lIHRvIFwiLVwiIGl0J2xsIHJlYWQgdGhlIGNvbmZpZyBmcm9tIHN0ZGluLFxuIgoiICB3aGljaCBjYW4gYmUgaGFuZHkgaWYgeW91IHdhbnQgdG8gaGlkZSBvcHRpb25zIGZyb20gYmVpbmcgdmlzaWJsZSBpbiBwcm9jZXNzXG4iCiIgIHRhYmxlcyBldGM6XG4iCiJcbiIKIiAgICAgICAgZWNobyBcIi11IHVzZXI6cGFzc3dkXCIgfCBjdXJsIC1LIC0gaHR0cDovL3RoYXQuc2VjcmV0LnNpdGUuY29tXG4iCiJcbiIKIkVYVFJBIEhFQURFUlNcbiIKIlxuIgoiICBXaGVuIHVzaW5nIGN1cmwgaW4geW91ciBvd24gdmVyeSBzcGVjaWFsIHByb2dyYW1zLCB5b3UgbWF5IGVuZCB1cCBuZWVkaW5nXG4iCiIgIHRvIHBhc3Mgb24geW91ciBvd24gY3VzdG9tIGhlYWRlcnMgd2hlbiBnZXR0aW5nIGEgd2ViIHBhZ2UuIFlvdSBjYW4gZG9cbiIKIiAgdGhpcyBieSB1c2luZyB0aGUgLUggZmxhZy5cbiIKIlxuIgoiICBFeGFtcGxlLCBzZW5kIHRoZSBoZWFkZXIgXCJYLXlvdS1hbmQtbWU6IHllc1wiIHRvIHRoZSBzZXJ2ZXIgd2hlbiBnZXR0aW5nIGFcbiIKIiAgcGFnZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1IIFwiWC15b3UtYW5kLW1lOiB5ZXNcIiB3d3cubG92ZS5jb21cbiIKIlxuIgoiICBUaGlzIGNhbiBhbHNvIGJlIHVzZWZ1bCBpbiBjYXNlIHlvdSB3YW50IGN1cmwgdG8gc2VuZCBhIGRpZmZlcmVudCB0ZXh0IGluXG4iCiIgIGEgaGVhZGVyIHRoYW4gaXQgbm9ybWFsbHkgZG9lcy4gVGhlIC1IIGhlYWRlciB5b3Ugc3BlY2lmeSB0aGVuIHJlcGxhY2VzIHRoZVxuIgoiICBoZWFkZXIgY3VybCB3b3VsZCBub3JtYWxseSBzZW5kLlxuIgoiXG4iCiJGVFAgYW5kIFBBVEggTkFNRVNcbiIKIlxuIgoiICBEbyBub3RlIHRoYXQgd2hlbiBnZXR0aW5nIGZpbGVzIHdpdGggdGhlIGZ0cDovLyBVUkwsIHRoZSBnaXZlbiBwYXRoIGlzXG4iCiIgIHJlbGF0aXZlIHRoZSBkaXJlY3RvcnkgeW91IGVudGVyLiBUbyBnZXQgdGhlIGZpbGUgJ1JFQURNRScgZnJvbSB5b3VyIGhvbWVcbiIKIiAgZGlyZWN0b3J5IGF0IHlvdXIgZnRwIHNpdGUsIGRvOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgZnRwOi8vdXNlcjpwYXNzd2RAbXkuc2l0ZS5jb20vUkVBRE1FXG4iCiJcbiIKIiAgQnV0IGlmIHlvdSB3YW50IHRoZSBSRUFETUUgZmlsZSBmcm9tIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGF0IHZlcnkgc2FtZVxuIgoiICBzaXRlLCB5b3UgbmVlZCB0byBzcGVjaWZ5IHRoZSBhYnNvbHV0ZSBmaWxlIG5hbWU6XG4iCiJcbiIKIiAgICAgICAgY3VybCBmdHA6Ly91c2VyOnBhc3N3ZEBteS5zaXRlLmNvbS8vUkVBRE1FXG4iCiJcbiIKIiAgKEkuZSB3aXRoIGFuIGV4dHJhIHNsYXNoIGluIGZyb250IG9mIHRoZSBmaWxlIG5hbWUuKVxuIgoiXG4iCiJGVFAgYW5kIGZpcmV3YWxsc1xuIgoiXG4iCiIgIFRoZSBGVFAgcHJvdG9jb2wgcmVxdWlyZXMgb25lIG9mIHRoZSBpbnZvbHZlZCBwYXJ0aWVzIHRvIG9wZW4gYSBzZWNvbmRcbiIKIiAgY29ubmN0aW9uIGFzIHNvb24gYXMgZGF0YSBpcyBhYm91dCB0byBnZXQgdHJhbnNmZXJlZC4gVGhlcmUgYXJlIHR3byB3YXlzIHRvXG4iCiIgIGRvIHRoaXMuXG4iCiJcbiIKIiAgVGhlIGRlZmF1bHQgd2F5IGZvciBjdXJsIGlzIHRvIGlzc3VlIHRoZSBQQVNWIGNvbW1hbmQgd2hpY2ggY2F1c2VzIHRoZVxuIgoiICBzZXJ2ZXIgdG8gb3BlbiBhbm90aGVyIHBvcnQgYW5kIGF3YWl0IGFub3RoZXIgY29ubmVjdGlvbiBwZXJmb3JtZWQgYnkgdGhlXG4iCiIgIGNsaWVudC4gVGhpcyBpcyBnb29kIGlmIHRoZSBjbGllbnQgaXMgYmVoaW5kIGEgZmlyZXdhbGwgdGhhdCBkb24ndCBhbGxvd1xuIgoiICBpbmNvbWluZyBjb25uZWN0aW9ucy5cbiIKIlxuIgoiICAgICAgICBjdXJsIGZ0cC5kb3dubG9hZC5jb21cbiIKIlxuIgoiICBJZiB0aGUgc2VydmVyIGZvciBleGFtcGxlLCBpcyBiZWhpbmQgYSBmaXJld2FsbCB0aGF0IGRvbid0IGFsbG93IGNvbm5lY3Rpb25zXG4iCiIgIG9uIG90aGVyIHBvcnRzIHRoYW4gMjEgKG9yIGlmIGl0IGp1c3QgZG9lc24ndCBzdXBwb3J0IHRoZSBQQVNWIGNvbW1hbmQpLCB0aGVcbiIKIiAgb3RoZXIgd2F5IHRvIGRvIGl0IGlzIHRvIHVzZSB0aGUgUE9SVCBjb21tYW5kIGFuZCBpbnN0cnVjdCB0aGUgc2VydmVyIHRvXG4iCiIgIGNvbm5lY3QgdG8gdGhlIGNsaWVudCBvbiB0aGUgZ2l2ZW4gKGFzIHBhcmFtZXRlcnMgdG8gdGhlIFBPUlQgY29tbWFuZCkgSVBcbiIKIiAgbnVtYmVyIGFuZCBwb3J0LlxuIgoiXG4iCiIgIFRoZSAtUCBmbGFnIHRvIGN1cmwgYWxsb3dzIGZvciBkaWZmZXJlbnQgb3B0aW9ucy4gWW91ciBtYWNoaW5lIG1heSBoYXZlXG4iCiIgIHNldmVyYWwgSVAtYWRkcmVzc2VzIGFuZC9vciBuZXR3b3JrIGludGVyZmFjZXMgYW5kIGN1cmwgYWxsb3dzIHlvdSB0byBzZWxlY3RcbiIKIiAgd2hpY2ggb2YgdGhlbSB0byB1c2UuIERlZmF1bHQgYWRkcmVzcyBjYW4gYWxzbyBiZSB1c2VkOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLVAgLSBmdHAuZG93bmxvYWQuY29tXG4iCiJcbiIKIiAgRG93bmxvYWQgd2l0aCBQT1JUIGJ1dCB1c2UgdGhlIElQIGFkZHJlc3Mgb2Ygb3VyICdsZTAnIGludGVyZmFjZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1QIGxlMCBmdHAuZG93bmxvYWQuY29tXG4iCiJcbiIKIiAgRG93bmxvYWQgd2l0aCBQT1JUIGJ1dCB1c2UgMTkyLjE2OC4wLjEwIGFzIG91ciBJUCBhZGRyZXNzIHRvIHVzZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1QIDE5Mi4xNjguMC4xMCBmdHAuZG93bmxvYWQuY29tXG4iCiJcbiIKIkhUVFBTXG4iCiJcbiIKIiAgU2VjdXJlIEhUVFAgcmVxdWlyZXMgU1NMIGxpYnJhcmllcyB0byBiZSBpbnN0YWxsZWQgYW5kIHVzZWQgd2hlbiBjdXJsIGlzXG4iCiIgIGJ1aWx0LiBJZiB0aGF0IGlzIGRvbmUsIGN1cmwgaXMgY2FwYWJsZSBvZiByZXRyaWV2aW5nIGFuZCBwb3N0aW5nIGRvY3VtZW50c1xuIgoiICB1c2luZyB0aGUgSFRUUFMgcHJvY290b2wuXG4iCiJcbiIKIiAgRXhhbXBsZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIGh0dHBzOi8vd3d3LnNlY3VyZS1zaXRlLmNvbVxuIgoiXG4iCiIgIEN1cmwgaXMgYWxzbyBjYXBhYmxlIG9mIHVzaW5nIHlvdXIgcGVyc29uYWwgY2VydGlmaWNhdGVzIHRvIGdldC9wb3N0IGZpbGVzXG4iCiIgIGZyb20gc2l0ZXMgdGhhdCByZXF1aXJlIHZhbGlkIGNlcnRpZmljYXRlcy4gVGhlIG9ubHkgZHJhd2JhY2sgaXMgdGhhdCB0aGVcbiIKIiAgY2VydGlmaWNhdGUgbmVlZHMgdG8gYmUgaW4gUEVNLWZvcm1hdC4gUEVNIGlzIGEgc3RhbmRhcmQgYW5kIG9wZW4gZm9ybWF0IHRvXG4iCiIgIHN0b3JlIGNlcnRpZmljYXRlcyB3aXRoLCBidXQgaXQgaXMgbm90IHVzZWQgYnkgdGhlIG1vc3QgY29tbW9ubHkgdXNlZFxuIgoiICBicm93c2VycyAoTmV0c2NhcGUgYW5kIE1TRUkgYm90aCB1c2UgdGhlIHNvIGNhbGxlZCBQS0NTIzEyIGZvcm1hdCkuIElmIHlvdVxuIgoiICB3YW50IGN1cmwgdG8gdXNlIHRoZSBjZXJ0aWZpY2F0ZXMgeW91IHVzZSB3aXRoIHlvdXIgKGZhdm91cml0ZSkgYnJvd3NlciwgeW91XG4iCiIgIG1heSBuZWVkIHRvIGRvd25sb2FkL2NvbXBpbGUgYSBjb252ZXJ0ZXIgdGhhdCBjYW4gY29udmVydCB5b3VyIGJyb3dzZXInc1xuIgoiICBmb3JtYXR0ZWQgY2VydGlmaWNhdGVzIHRvIFBFTSBmb3JtYXR0ZWQgb25lcy4gVGhpcyBraW5kIG9mIGNvbnZlcnRlciBpc1xuIgoiICBpbmNsdWRlZCBpbiByZWNlbnQgdmVyc2lvbnMgb2YgT3BlblNTTCwgYW5kIGZvciBvbGRlciB2ZXJzaW9ucyBEciBTdGVwaGVuXG4iCiIgIE4uIEhlbnNvbiBoYXMgd3JpdHRlbiBhIHBhdGNoIGZvciBTU0xlYXkgdGhhdCBhZGRzIHRoaXMgZnVuY3Rpb25hbGl0eS4gWW91XG4iCiIgIGNhbiBnZXQgaGlzIHBhdGNoICh0aGF0IHJlcXVpcmVzIGFuIFNTTGVheSBpbnN0YWxsYXRpb24pIGZyb20gaGlzIHNpdGUgYXQ6XG4iCiIgIGh0dHA6Ly93d3cuZHJoLWNvbnN1bHRhbmN5LmRlbW9uLmNvLnVrL1xuIgoiXG4iCiIgIEV4YW1wbGUgb24gaG93IHRvIGF1dG9tYXRpY2FsbHkgcmV0cmlldmUgYSBkb2N1bWVudCB1c2luZyBhIGNlcnRpZmljYXRlIHdpdGhcbiIKIiAgYSBwZXJzb25hbCBwYXNzd29yZDpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1FIC9wYXRoL3RvL2NlcnQucGVtOnBhc3N3b3JkIGh0dHBzOi8vc2VjdXJlLnNpdGUuY29tL1xuIgoiXG4iCiIgIElmIHlvdSBuZWdsZWN0IHRvIHNwZWNpZnkgdGhlIHBhc3N3b3JkIG9uIHRoZSBjb21tYW5kIGxpbmUsIHlvdSB3aWxsIGJlXG4iCiIgIHByb21wdGVkIGZvciB0aGUgY29ycmVjdCBwYXNzd29yZCBiZWZvcmUgYW55IGRhdGEgY2FuIGJlIHJlY2VpdmVkLlxuIgoiXG4iCiIgIE1hbnkgb2xkZXIgU1NMLXNlcnZlcnMgaGF2ZSBwcm9ibGVtcyB3aXRoIFNTTHYzIG9yIFRMUywgdGhhdCBuZXdlciB2ZXJzaW9uc1xuIgoiICBvZiBPcGVuU1NMIGV0YyBpcyB1c2luZywgdGhlcmVmb3JlIGl0IGlzIHNvbWV0aW1lcyB1c2VmdWwgdG8gc3BlY2lmeSB3aGF0XG4iCiIgIFNTTC12ZXJzaW9uIGN1cmwgc2hvdWxkIHVzZS4gVXNlIC0zIG9yIC0yIHRvIHNwZWNpZnkgdGhhdCBleGFjdCBTU0wgdmVyc2lvblxuIgoiICB0byB1c2U6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtMiBodHRwczovL3NlY3VyZS5zaXRlLmNvbS9cbiIKIlxuIgoiICBPdGhlcndpc2UsIGN1cmwgd2lsbCBmaXJzdCBhdHRlbXB0IHRvIHVzZSB2MyBhbmQgdGhlbiB2Mi5cbiIKIlxuIgoiUkVTVU1JTkcgRklMRSBUUkFOU0ZFUlNcbiIKIlxuIgoiIFRvIGNvbnRpbnVlIGEgZmlsZSB0cmFuc2ZlciB3aGVyZSBpdCB3YXMgcHJldmlvdXNseSBhYm9ydGVkLCBjdXJsIHN1cHBvcnRzXG4iCiIgcmVzdW1lIG9uIGh0dHAocykgZG93bmxvYWRzIGFzIHdlbGwgYXMgZnRwIHVwbG9hZHMgYW5kIGRvd25sb2Fkcy5cbiIKIlxuIgoiIENvbnRpbnVlIGRvd25sb2FkaW5nIGEgZG9jdW1lbnQ6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtYyAtbyBmaWxlIGZ0cDovL2Z0cC5zZXJ2ZXIuY29tL3BhdGgvZmlsZVxuIgoiXG4iCiIgQ29udGludWUgdXBsb2FkaW5nIGEgZG9jdW1lbnQoKjEpOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLWMgLVQgZmlsZSBmdHA6Ly9mdHAuc2VydmVyLmNvbS9wYXRoL2ZpbGVcbiIKIlxuIgoiIENvbnRpbnVlIGRvd25sb2FkaW5nIGEgZG9jdW1lbnQgZnJvbSBhIHdlYiBzZXJ2ZXIoKjIpOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLWMgLW8gZmlsZSBodHRwOi8vd3d3LnNlcnZlci5jb20vXG4iCiJcbiIKIiAoKjEpID0gVGhpcyByZXF1aXJlcyB0aGF0IHRoZSBmdHAgc2VydmVyIHN1cHBvcnRzIHRoZSBub24tc3RhbmRhcmQgY29tbWFuZFxuIgoiICAgICAgICBTSVpFLiBJZiBpdCBkb2Vzbid0LCBjdXJsIHdpbGwgc2F5IHNvLlxuIgoiXG4iCiIgKCoyKSA9IFRoaXMgcmVxdWlyZXMgdGhhdCB0aGUgd2Igc2VydmVyIHN1cHBvcnRzIGF0IGxlYXN0IEhUVFAvMS4xLiBJZiBpdFxuIgoiICAgICAgICBkb2Vzbid0LCBjdXJsIHdpbGwgc2F5IHNvLlxuIgoiXG4iCiJUSU1FIENPTkRJVElPTlNcbiIKIlxuIgoiIEhUVFAgYWxsb3dzIGEgY2xpZW50IHRvIHNwZWNpZnkgYSB0aW1lIGNvbmRpdGlvbiBmb3IgdGhlIGRvY3VtZW50IGl0XG4iCiIgcmVxdWVzdHMuIEl0IGlzIElmLU1vZGlmaWVkLVNpbmNlIG9yIElmLVVubW9kaWZpZWQtU2luY2UuIEN1cmwgYWxsb3cgeW91IHRvXG4iCiIgc3BlY2lmeSB0aGVtIHdpdGggdGhlIC16Ly0tdGltZS1jb25kIGZsYWcuXG4iCiJcbiIKIiBGb3IgZXhhbXBsZSwgeW91IGNhbiBlYXNpbHkgbWFrZSBhIGRvd25sb2FkIHRoYXQgb25seSBnZXRzIHBlcmZvcm1lZCBpZiB0aGVcbiIKIiByZW1vdGUgZmlsZSBpcyBuZXdlciB0aGFuIGEgbG9jYWwgY29weS4gSXQgd291bGQgYmUgbWFkZSBsaWtlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXogbG9jYWwuaHRtbCBodHRwOi8vcmVtb3RlLnNlcnZlci5jb20vcmVtb3RlLmh0bWxcbiIKIlxuIgoiIE9yIHlvdSBjYW4gZG93bmxvYWQgYSBmaWxlIG9ubHkgaWYgdGhlIGxvY2FsIGZpbGUgaXMgbmV3ZXIgdGhhbiB0aGUgcmVtb3RlXG4iCiIgb25lLiBEbyB0aGlzIGJ5IHByZXBlbmRpbmcgdGhlIGRhdGUgc3RyaW5nIHdpdGggYSAnLScsIGFzIGluOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXogLWxvY2FsLmh0bWwgaHR0cDovL3JlbW90ZS5zZXJ2ZXIuY29tL3JlbW90ZS5odG1sXG4iCiJcbiIKIiBZb3UgY2FuIHNwZWNpZnkgYSBcImZyZWUgdGV4dFwiIGRhdGUgYXMgY29uZGl0aW9uLiBUZWxsIGN1cmwgdG8gb25seSBkb3dubG9hZFxuIgoiIHRoZSBmaWxlIGlmIGl0IHdhcyB1cGRhdGVkIHNpbmNlIHllc3RlcmRheTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC16IHllc3RlcmRheSBodHRwOi8vcmVtb3RlLnNlcnZlci5jb20vcmVtb3RlLmh0bWxcbiIKIlxuIgoiIEN1cmwgd2lsbCB0aGVuIGFjY2VwdCBhIHdpZGUgcmFuZ2Ugb2YgZGF0ZSBmb3JtYXRzLiBZb3UgYWx3YXlzIG1ha2UgdGhlIGRhdGVcbiIKIiBjaGVjayB0aGUgb3RoZXIgd2F5IGFyb3VuZCBieSBwcmVwZW5kaW5nIGl0IHdpdGggYSBkYXNoICctJy5cbiIKIlxuIgoiRElDVFxuIgoiXG4iCiIgIEZvciBmdW4gdHJ5XG4iCiJcbiIKIiAgICAgICAgY3VybCBkaWN0Oi8vZGljdC5vcmcvbTpjdXJsXG4iCiIgICAgICAgIGN1cmwgZGljdDovL2RpY3Qub3JnL2Q6aGVpc2VuYnVnOmphcmdvblxuIgoiICAgICAgICBjdXJsIGRpY3Q6Ly9kaWN0Lm9yZy9kOmRhbmllbDp3ZWIxOTEzXG4iCiJcbiIKIiAgQWxpYXNlcyBmb3IgJ20nIGFyZSAnbWF0Y2gnIGFuZCAnZmluZCcsIGFuZCBhbGlhc2VzIGZvciAnZCcgYXJlICdkZWZpbmUnXG4iCiIgIGFuZCAnbG9va3VwJy4gRm9yIGV4YW1wbGUsXG4iCiJcbiIKIiAgICAgICAgY3VybCBkaWN0Oi8vZGljdC5vcmcvZmluZDpjdXJsXG4iCiJcbiIKIiAgQ29tbWFuZHMgdGhhdCBicmVhayB0aGUgVVJMIGRlc2NyaXB0aW9uIG9mIHRoZSBSRkMgKGJ1dCBub3QgdGhlIERJQ1RcbiIKIiAgcHJvdG9jb2wpIGFyZVxuIgoiXG4iCiIgICAgICAgIGN1cmwgZGljdDovL2RpY3Qub3JnL3Nob3c6ZGJcbiIKIiAgICAgICAgY3VybCBkaWN0Oi8vZGljdC5vcmcvc2hvdzpzdHJhdFxuIgoiXG4iCiIgIEF1dGhlbnRpY2F0aW9uIGlzIHN0aWxsIG1pc3NpbmcgKGJ1dCB0aGlzIGlzIG5vdCByZXF1aXJlZCBieSB0aGUgUkZDKVxuIgoiXG4iCiJMREFQXG4iCiJcbiIKIiAgSWYgeW91IGhhdmUgaW5zdGFsbGVkIHRoZSBPcGVuTERBUCBsaWJyYXJ5LCBjdXJsIGNhbiB0YWtlIGFkdmFudGFnZSBvZiBpdFxuIgoiICBhbmQgb2ZmZXIgbGRhcDovLyBzdXBwb3J0LlxuIgoiXG4iCiIgIExEQVAgaXMgYSBjb21wbGV4IHRoaW5nIGFuZCB3cml0aW5nIGFuIExEQVAgcXVlcnkgaXMgbm90IGFuIGVhc3kgdGFzay4gSSBkb1xuIgoiICBhZHZpY2UgeW91IHRvIGRpZyB1cCB0aGUgc3ludGF4IGRlc2NyaXB0aW9uIGZvciB0aGF0IGVsc2V3aGVyZSwgUkZDIDE5NTkgaWZcbiIKIiAgbm8gb3RoZXIgcGxhY2UgaXMgYmV0dGVyLlxuIgoiXG4iCiIgIFRvIHNob3cgeW91IGFuIGV4YW1wbGUsIHRoaXMgaXMgbm93IEkgY2FuIGdldCBhbGwgcGVvcGxlIGZyb20gbXkgbG9jYWwgTERBUFxuIgoiICBzZXJ2ZXIgdGhhdCBoYXMgYSBjZXJ0YWluIHN1Yi1kb21haW4gaW4gdGhlaXIgZW1haWwgYWRkcmVzczpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1CIFwibGRhcDovL2xkYXAuZnJvbnRlYy5zZS9vPWZyb250ZWM/P3N1Yj9tYWlsPSpzdGguZnJvbnRlYy5zZVwiXG4iCiJcbiIKIiAgSWYgSSB3YW50IHRoZSBzYW1lIGluZm8gaW4gSFRNTCBmb3JtYXQsIEkgY2FuIGdldCBpdCBieSBub3QgdXNpbmcgdGhlIC1CXG4iCiIgIChlbmZvcmNlIEFTQ0lJKSBmbGFnLlxuIgoiXG4iCiJFTlZJUk9OTUVOVCBWQVJJQUJMRVNcbiIKIlxuIgoiICBDdXJsIHJlYWRzIGFuZCB1bmRlcnN0YW5kcyB0aGUgZm9sbG93aW5nIGVudmlyb25tZW50IHZhcmlhYmxlczpcbiIKIlxuIgoiICAgICAgICBIVFRQX1BST1hZLCBIVFRQU19QUk9YWSwgRlRQX1BST1hZLCBHT1BIRVJfUFJPWFlcbiIKIlxuIgoiICBUaGV5IHNob3VsZCBiZSBzZXQgZm9yIHByb3RvY29sLXNwZWNpZmljIHByb3hpZXMuIEdlbmVyYWwgcHJveHkgc2hvdWxkIGJlXG4iCiIgIHNldCB3aXRoXG4iCiIgICAgICAgIFxuIgoiICAgICAgICBBTExfUFJPWFlcbiIKIlxuIgoiICBBIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGhvc3QgbmFtZXMgdGhhdCBzaG91bGRuJ3QgZ28gdGhyb3VnaCBhbnkgcHJveHkgaXNcbiIKIiAgc2V0IGluIChvbmx5IGFuIGFzdGVyaXNrLCAnKicgbWF0Y2hlcyBhbGwgaG9zdHMpXG4iCiJcbiIKIiAgICAgICAgTk9fUFJPWFlcbiIKIlxuIgoiICBJZiBhIHRhaWwgc3Vic3RyaW5nIG9mIHRoZSBkb21haW4tcGF0aCBmb3IgYSBob3N0IG1hdGNoZXMgb25lIG9mIHRoZXNlXG4iCiIgIHN0cmluZ3MsIHRyYW5zYWN0aW9ucyB3aXRoIHRoYXQgbm9kZSB3aWxsIG5vdCBiZSBwcm94aWVkLlxuIgoiXG4iCiJcbiIKIiAgVGhlIHVzYWdlIG9mIHRoZSAteC8tLXByb3h5IGZsYWcgb3ZlcnJpZGVzIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4iCik7CiBwdXRzKAoiXG4iCiJORVRSQ1xuIgoiXG4iCiIgIFVuaXggaW50cm9kdWNlZCB0aGUgLm5ldHJjIGNvbmNlcHQgYSBsb25nIHRpbWUgYWdvLiBJdCBpcyBhIHdheSBmb3IgYSB1c2VyXG4iCiIgIHRvIHNwZWNpZnkgbmFtZSBhbmQgcGFzc3dvcmQgZm9yIGNvbW1vbmx5IHZpc2l0ZWQgZnRwIHNpdGVzIGluIGEgZmlsZSBzb1xuIgoiICB0aGF0IHlvdSBkb24ndCBoYXZlIHRvIHR5cGUgdGhlbSBpbiBlYWNoIHRpbWUgeW91IHZpc2l0IHRob3NlIHNpdGVzLiBZb3VcbiIKIiAgcmVhbGl6ZSB0aGlzIGlzIGEgYmlnIHNlY3VyaXR5IHJpc2sgaWYgc29tZW9uZSBlbHNlIGdldHMgaG9sZCBvZiB5b3VyXG4iCiIgIHBhc3N3b3Jkcywgc28gdGhlcmVmb3IgbW9zdCB1bml4IHByb2dyYW1zIHdvbid0IHJlYWQgdGhpcyBmaWxlIHVubGVzcyBpdCBpc1xuIgoiICBvbmx5IHJlYWRhYmxlIGJ5IHlvdXJzZWxmIChjdXJsIGRvZXNuJ3QgY2FyZSB0aG91Z2gpLlxuIgoiXG4iCiIgIEN1cmwgc3VwcG9ydHMgLm5ldHJjIGZpbGVzIGlmIHRvbGQgc28gKHVzaW5nIHRoZSAtbi8tLW5ldHJjIG9wdGlvbikuIFRoaXMgaXNcbiIKIiAgbm90IHJlc3RyaWN0ZWQgdG8gb25seSBmdHAsIGJ1dCBjdXJsIGNhbiB1c2UgaXQgZm9yIGFsbCBwcm90b2NvbHMgd2hlcmVcbiIKIiAgYXV0aGVudGljYXRpb24gaXMgdXNlZC5cbiIKIlxuIgoiICBBIHZlcnkgc2ltcGxlIC5uZXRyYyBmaWxlIGNvdWxkIGxvb2sgc29tZXRoaW5nIGxpa2U6XG4iCiJcbiIKIiAgICAgICAgbWFjaGluZSBjdXJsLmhheHgubnUgbG9naW4gaWFtZGFuaWVsIHBhc3N3b3JkIG15c2VjcmV0XG4iCiJcbiIKIkNVU1RPTSBPVVRQVVRcbiIKIlxuIgoiICBUbyBiZXR0ZXIgYWxsb3cgc2NyaXB0IHByb2dyYW1tZXJzIHRvIGdldCB0byBrbm93IGFib3V0IHRoZSBwcm9ncmVzcyBvZlxuIgoiICBjdXJsLCB0aGUgLXcvLS13cml0ZS1vdXQgb3B0aW9uIHdhcyBpbnRyb2R1Y2VkLiBVc2luZyB0aGlzLCB5b3UgY2FuIHNwZWNpZnlcbiIKIiAgd2hhdCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBwcmV2aW91cyB0cmFuc2ZlciB5b3Ugd2FudCB0byBleHRyYWN0LlxuIgoiXG4iCiIgIFRvIGRpc3BsYXkgdGhlIGFtb3VudCBvZiBieXRlcyBkb3dubG9hZGVkIHRvZ2V0aGVyIHdpdGggc29tZSB0ZXh0IGFuZCBhblxuIgoiICBlbmRpbmcgbmV3bGluZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC13ICdXZSBkb3dubG9hZGVkICV7c2l6ZV9kb3dubG9hZH0gYnl0ZXNcXG4nIHd3dy5kb3dubG9hZC5jb21cbiIKIlxuIgoiTUFJTElORyBMSVNUXG4iCiJcbiIKIiAgV2UgaGF2ZSBhbiBvcGVuIG1haWxpbmcgbGlzdCB0byBkaXNjdXNzIGN1cmwsIGl0cyBkZXZlbG9wbWVudCBhbmQgdGhpbmdzXG4iCiIgIHJlbGV2YW50IHRvIHRoaXMuXG4iCiJcbiIKIiAgVG8gc3Vic2NyaWJlLCBtYWlsIGN1cmwtcmVxdWVzdEBjb250YWN0b3Iuc2Ugd2l0aCBcInN1YnNjcmliZSA8eW91ciBlbWFpbFxuIgoiICBhZGRyZXNzPlwiIGluIHRoZSBib2R5LlxuIgoiXG4iCiIgIFRvIHBvc3QgdG8gdGhlIGxpc3QsIG1haWwgY3VybEBjb250YWN0b3Iuc2UuXG4iCiJcbiIKIiAgVG8gdW5zdWJjcmliZSwgbWFpbCBjdXJsLXJlcXVlc3RAY29udGFjdG9yLnNlIHdpdGggXCJ1bnN1YnNjcmliZSA8eW91clxuIgoiICBzdWJzY3JpYmVkIGVtYWlsIGFkZHJlc3M+XCIgaW4gdGhlIGJvZHkuXG4iCiJcbiIKICkgOwp9Cg==