LyogTkVWRVIgRVZFUiBlZGl0IHRoaXMgbWFudWFsbHksIGZpeCB0aGUgbWtoZWxwIHNjcmlwdCBpbnN0ZWFkISAqLwojaW5jbHVkZSA8c3RkaW8uaD4Kdm9pZCBodWdlaGVscCh2b2lkKQp7CnB1dHMgKAoiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8gICAgIFxuIgoiICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcXHwgfCAgICBcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfCAgICBcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXyBcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxfX198XFxfX18vfF98IFxcX1xcX19fX198XG4iCiJOQU1FXG4iCiIgICAgIGN1cmwgLSBnZXQgYSBVUkwgd2l0aCBGVFAsIFRFTE5FVCwgTERBUCwgR09QSEVSLCBESUNULCBGSUxFLFxuIgoiICAgICBIVFRQIG9yIEhUVFBTIHN5bnRheC5cbiIKIlxuIgoiU1lOT1BTSVNcbiIKIiAgICAgY3VybCBbb3B0aW9uc10gdXJsXG4iCiJcbiIKIkRFU0NSSVBUSU9OXG4iCiIgICAgIGN1cmwgaXMgYSBjbGllbnQgdG8gZ2V0IGRvY3VtZW50cy9maWxlcyBmcm9tIHNlcnZlcnMsICB1c2luZ1xuIgoiICAgICBhbnkgIG9mICB0aGUgc3VwcG9ydGVkIHByb3RvY29scy4gVGhlIGNvbW1hbmQgaXMgZGVzaWduZWQgdG9cbiIKIiAgICAgd29yayB3aXRob3V0IHVzZXIgaW50ZXJhY3Rpb24gb3IgYW55IGtpbmQgb2YgIGludGVyYWN0aXZpdHkuXG4iCiJcbiIKIiAgICAgY3VybCAgb2ZmZXJzICBhIGJ1c2xvYWQgb2YgdXNlZnVsIHRyaWNrcyBsaWtlIHByb3h5IHN1cHBvcnQsXG4iCiIgICAgIHVzZXIgYXV0aGVudGljYXRpb24sIGZ0cCB1cGxvYWQsICBIVFRQICBwb3N0LCAgU1NMICAoaHR0cHM6KVxuIgoiICAgICBjb25uZWN0aW9ucywgY29va2llcywgZmlsZSB0cmFuc2ZlciByZXN1bWUgYW5kIG1vcmUuXG4iCiJcbiIKIlVSTFxuIgoiICAgICBUaGUgVVJMIHN5bnRheCBpcyBwcm90b2NvbCBkZXBlbmRlbnQuIFlvdSdsbCBmaW5kIGEgZGV0YWlsZWRcbiIKIiAgICAgZGVzY3JpcHRpb24gaW4gUkZDIDIzOTYuXG4iCiJcbiIKIiAgICAgWW91IGNhbiBzcGVjaWZ5IG11bHRpcGxlIFVSTHMgb3IgcGFydHMgb2YgIFVSTHMgIGJ5ICB3cml0aW5nXG4iCiIgICAgIHBhcnQgc2V0cyB3aXRoaW4gYnJhY2VzIGFzIGluOlxuIgoiXG4iCiIgICAgICBodHRwOi8vc2l0ZS57b25lLHR3byx0aHJlZX0uY29tXG4iCiJcbiIKIiAgICAgb3IgIHlvdSBjYW4gZ2V0IHNlcXVlbmNlcyBvZiBhbHBoYW51bWVyaWMgc2VyaWVzIGJ5IHVzaW5nIFtdXG4iCiIgICAgIGFzIGluOlxuIgoiXG4iCiIgICAgICBmdHA6Ly9mdHAubnVtZXJpY2Fscy5jb20vZmlsZVsxLTEwMF0udHh0XG4iCiIgICAgICBmdHA6Ly9mdHAubnVtZXJpY2Fscy5jb20vZmlsZVswMDEtMTAwXS50eHQgICAgKHdpdGggbGVhZGluZ1xuIgoiICAgICB6ZXJvcylcbiIKIiAgICAgIGZ0cDovL2Z0cC5sZXR0ZXJzLmNvbS9maWxlW2Etel0udHh0XG4iCiJcbiIKIiAgICAgSXQgIGlzIHBvc3NpYmxlIHRvIHNwZWNpZnkgdXAgdG8gOSBzZXRzIG9yIHNlcmllcyBmb3IgYSBVUkwsXG4iCiIgICAgIGJ1dCBubyBuZXN0aW5nIGlzIHN1cHBvcnRlZCBhdCB0aGUgbW9tZW50OlxuIgoiXG4iCiIgICAgICBodHRwOi8vd3d3LmFueS5vcmcvYXJjaGl2ZVsxOTk2LTE5OTldL3ZvbK1cbiIKIiAgICAgdW1lWzEtNF1wYXJ0e2EsYixjLGluZGV4fS5odG1sXG4iCiJcbiIKIk9QVElPTlNcbiIKIiAgICAgLWEvLS1hcHBlbmRcbiIKIiAgICAgICAgICAoRlRQKSBXaGVuIHVzZWQgaW4gYSBmdHAgdXBsb2FkLCB0aGlzIHdpbGwgdGVsbCBjdXJsIHRvXG4iCiIgICAgICAgICAgYXBwZW5kIHRvIHRoZSB0YXJnZXQgZmlsZSBpbnN0ZWFkIG9mIG92ZXJ3cml0aW5nIGl0LiBJZlxuIgoiICAgICAgICAgIHRoZSBmaWxlIGRvZXNuJ3QgZXhpc3QsIGl0IHdpbGwgYmUgY3JlYXRlZC5cbiIKIlxuIgoiICAgICAtQS8tLXVzZXItYWdlbnQgPGFnZW50IHN0cmluZz5cbiIKIiAgICAgICAgICAoSFRUUCkgIFNwZWNpZnkgIHRoZSAgVXNlci1BZ2VudCAgc3RyaW5nIHRvIHNlbmQgdG8gdGhlXG4iCiIgICAgICAgICAgSFRUUCBzZXJ2ZXIuIFNvbWUgYmFkbHkgZG9uZSBDR0lzIGZhaWwgaWYgaXRzICBub3QgIHNldFxuIgoiICAgICAgICAgIHRvIFwiTW96aWxsYS80LjBcIi4gIFRvIGVuY29kZSBibGFua3MgaW4gdGhlIHN0cmluZywgc3VyrVxuIgoiICAgICAgICAgIHJvdW5kIHRoZSBzdHJpbmcgd2l0aCBzaW5nbGUgIHF1b3RlICBtYXJrcy4gICBUaGlzICBjYW5cbiIKIiAgICAgICAgICBhbHNvIGJlIHNldCB3aXRoIHRoZSAtSC8tLWhlYWRlciBmbGFnIG9mIGNvdXJzZS5cbiIKIiAgICAgLWIvLS1jb29raWUgPG5hbWU9ZGF0YT5cbiIKIiAgICAgICAgICAoSFRUUCkgUGFzcyB0aGUgZGF0YSB0byB0aGUgSFRUUCBzZXJ2ZXIgYXMgYSBjb29raWUuIEl0XG4iCiIgICAgICAgICAgaXMgc3VwcG9zZWRseSB0aGUgZGF0YSAgcHJldmlvdXNseSAgcmVjZWl2ZWQgIGZyb20gIHRoZVxuIgoiICAgICAgICAgIHNlcnZlciAgaW4gYSBcIlNldC1Db29raWU6XCIgbGluZS4gIFRoZSBkYXRhIHNob3VsZCBiZSBpblxuIgoiICAgICAgICAgIHRoZSBmb3JtYXQgXCJOQU1FMT1WQUxVRTE7IE5BTUUyPVZBTFVFMlwiLlxuIgoiXG4iCiIgICAgICAgICAgSWYgbm8gJz0nIGxldHRlciBpcyB1c2VkIGluIHRoZSBsaW5lLCBpdCBpcyB0cmVhdGVkICBhc1xuIgoiICAgICAgICAgIGEgIGZpbGVuYW1lICB0byAgdXNlICB0byAgcmVhZCBwcmV2aW91c2x5IHN0b3JlZCBjb29raWVcbiIKIiAgICAgICAgICBsaW5lcyBmcm9tLCB3aGljaCBzaG91bGQgYmUgdXNlZCAgaW4gIHRoaXMgIHNlc3Npb24gIGlmXG4iCiIgICAgICAgICAgdGhleSAgbWF0Y2guICBVc2luZyAgdGhpcyAgbWV0aG9kICBhbHNvICBhY3RpdmF0ZXMgIHRoZVxuIgoiICAgICAgICAgIFwiY29va2llIHBhcnNlclwiIHdoaWNoIHdpbGwgbWFrZSAgY3VybCAgcmVjb3JkICBpbmNvbWluZ1xuIgoiICAgICAgICAgIGNvb2tpZXMgdG9vLCB3aGljaCBtYXkgYmUgaGFuZHkgaWYgeW91J3JlIHVzaW5nIHRoaXMgaW5cbiIKIiAgICAgICAgICBjb21iaW5hdGlvbiB3aXRoIHRoZSAgLUwvLS1sb2NhdGlvbiAgb3B0aW9uLiAgVGhlICBmaWxlXG4iCiIgICAgICAgICAgZm9ybWF0IG9mIHRoZSBmaWxlIHRvIHJlYWQgY29va2llcyBmcm9tIHNob3VsZCBiZSBwbGFpblxuIgoiICAgICAgICAgIEhUVFAgaGVhZGVycyBvciB0aGUgbmV0c2NhcGUgY29va2llIGZpbGUgZm9ybWF0LlxuIgoiXG4iCiIgICAgICAgICAgTk9URSB0aGF0IHRoZSBmaWxlIHNwZWNpZmllZCB3aXRoIC1iLy0tY29va2llICBpcyAgb25seVxuIgoiICAgICAgICAgIHVzZWQgIGFzICBpbnB1dC4gTm8gY29va2llcyB3aWxsIGJlIHN0b3JlZCBpbiB0aGUgZmlsZS5cbiIKIiAgICAgICAgICBUbyBzdG9yZSBjb29raWVzLCBzYXZlIHRoZSBIVFRQIGhlYWRlcnMgdG8gYSBmaWxlIHVzaW5nXG4iCiIgICAgICAgICAgLUQvLS1kdW1wLWhlYWRlciFcbiIKIlxuIgoiICAgICAtQi8tLWZ0cC1hc2NpaVxuIgoiICAgICAgICAgIChGVFAvTERBUCkgIFVzZSBBU0NJSSB0cmFuc2ZlciB3aGVuIGdldHRpbmcgYW4gRlRQIGZpbGVcbiIKIiAgICAgICAgICBvciBMREFQIGluZm8uIEZvciBGVFAsIHRoaXMgY2FuICBhbHNvICBiZSAgZW5mb3JjZWQgIGJ5XG4iCiIgICAgICAgICAgdXNpbmcgYW4gVVJMIHRoYXQgZW5kcyB3aXRoIFwiO3R5cGU9QVwiLlxuIgoiXG4iCiIgICAgIC1jLy0tY29udGludWVcbiIKIiAgICAgICAgICBDb250aW51ZS9SZXN1bWUgICBhICAgcHJldmlvdXMgICBmaWxlICAgdHJhbnNmZXIuICBUaGlzXG4iCiIgICAgICAgICAgaW5zdHJ1Y3RzIGN1cmwgdG8gY29udGludWUgYXBwZW5kaW5nIGRhdGEgb24gIHRoZSAgZmlsZVxuIgoiICAgICAgICAgIHdoZXJlICBpdCAgd2FzICBwcmV2aW91c2x5ICBsZWZ0LCBwb3NzaWJseSBiZWNhdXNlIG9mIGFcbiIKIiAgICAgICAgICBicm9rZW4gY29ubmVjdGlvbiB0byB0aGUgc2VydmVyLiBUaGVyZSBtdXN0IGJlIGEgIG5hbWVkXG4iCiIgICAgICAgICAgcGh5c2ljYWwgIGZpbGUgIHRvICBhcHBlbmQgIHRvIGZvciB0aGlzIHRvIHdvcmsuICBOb3RlOlxuIgoiICAgICAgICAgIFVwbG9hZCByZXN1bWUgaXMgZGVwZW5pbmcgb24gYSBjb21tYW5kIG5hbWVkICBTSVpFICBub3RcbiIKIiAgICAgICAgICBhbHdheXMgcHJlc2VudCBpbiBhbGwgZnRwIHNlcnZlcnMhIFVwbG9hZCByZXN1bWUgaXMgZm9yXG4iCiIgICAgICAgICAgRlRQIG9ubHkuICBIVFRQIHJlc3VtZSBpcyBvbmx5IHBvc3NpYmxlICB3aXRoICBIVFRQLzEuMVxuIgoiICAgICAgICAgIG9yIGxhdGVyIHNlcnZlcnMuXG4iCiJcbiIKIiAgICAgLUMvLS1jb250aW51ZS1hdCA8b2Zmc2V0PlxuIgoiICAgICAgICAgIENvbnRpbnVlL1Jlc3VtZSAgYSAgcHJldmlvdXMgZmlsZSB0cmFuc2ZlciBhdCB0aGUgZ2l2ZW5cbiIKIiAgICAgICAgICBvZmZzZXQuIFRoZSBnaXZlbiBvZmZzZXQgaXMgdGhlIGV4YWN0IG51bWJlciAgb2YgIGJ5dGVzXG4iCiIgICAgICAgICAgdGhhdCAgd2lsbCBiZSBza2lwcGVkIGNvdW50ZWQgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZVxuIgoiICAgICAgICAgIHNvdXJjZSBmaWxlIGJlZm9yZSBpdCBpcyB0cmFuc2ZlcmVkIHRvIHRoZSBkZXN0aW5hdGlvbi5cbiIKIiAgICAgICAgICBJZiAgdXNlZCB3aXRoIHVwbG9hZHMsIHRoZSBmdHAgc2VydmVyIGNvbW1hbmQgU0laRSB3aWxsXG4iCiIgICAgICAgICAgbm90IGJlIHVzZWQgYnkgY3VybC4gVXBsb2FkIHJlc3VtZSAgaXMgIGZvciAgRlRQICBvbmx5LlxuIgoiICAgICAgICAgIEhUVFAgIHJlc3VtZSAgaXMgIG9ubHkgIHBvc3NpYmxlIHdpdGggSFRUUC8xLjEgb3IgbGF0ZXJcbiIKIiAgICAgICAgICBzZXJ2ZXJzLlxuIgoiXG4iCiIgICAgIC1kLy0tZGF0YSA8ZGF0YT5cbiIKIiAgICAgICAgICAoSFRUUCkgU2VuZHMgdGhlIHNwZWNpZmllZCBkYXRhIGluIGEgIFBPU1QgIHJlcXVlc3QgIHRvXG4iCiIgICAgICAgICAgdGhlICBIVFRQIHNlcnZlci4gTm90ZSB0aGF0IHRoZSBkYXRhIGlzIHNlbnQgZXhhY3RseSBhc1xuIgoiICAgICAgICAgIHNwZWNpZmllZCAgd2l0aCAgbm8gIGV4dHJhICBwcm9jZXNzaW5nLiAgIFRoZSAgZGF0YSAgaXNcbiIKIiAgICAgICAgICBleHBlY3RlZCAgdG8gIGJlIFwidXJsLWVuY29kZWRcIi4gVGhpcyB3aWxsIGNhdXNlIGN1cmwgdG9cbiIKIiAgICAgICAgICBwYXNzIHRoZSBkYXRhIHRvICB0aGUgIHNlcnZlciAgdXNpbmcgIHRoZSAgY29udGVudC10eXBlXG4iCiIgICAgICAgICAgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkLiBDb21wYXJlIHRvIC1GLlxuIgoiXG4iCiIgICAgICAgICAgSWYgIHlvdSAgc3RhcnQgIHRoZSAgZGF0YSAgd2l0aCAgdGhlIGxldHRlciBALCB0aGUgcmVzdFxuIgoiICAgICAgICAgIHNob3VsZCBiZSBhIGZpbGUgbmFtZSB0byByZWFkIHRoZSBkYXRhIGZyb20sICBvciAgLSAgaWZcbiIKIiAgICAgICAgICB5b3UgIHdhbnQgIGN1cmwgIHRvIHJlYWQgdGhlIGRhdGEgZnJvbSBzdGRpbi4gIFRoZSBjb26tXG4iCiIgICAgICAgICAgdGVudHMgb2YgdGhlIGZpbGUgbXVzdCBhbHJlYWR5IGJlIHVybC1lbmNvZGVkLlxuIgoiXG4iCiIgICAgIC1ELy0tZHVtcC1oZWFkZXIgPGZpbGU+XG4iCiIgICAgICAgICAgKEhUVFAvRlRQKSBXcml0ZSB0aGUgSFRUUCBoZWFkZXJzIHRvIHRoaXMgIGZpbGUuICBXcml0ZVxuIgoiICAgICAgICAgIHRoZSBGVFAgZmlsZSBpbmZvIHRvIHRoaXMgZmlsZSBpZiAtSS8tLWhlYWQgaXMgdXNlZC5cbiIKIlxuIgoiICAgICAgICAgIFRoaXMgIG9wdGlvbiBpcyBoYW5keSB0byB1c2Ugd2hlbiB5b3Ugd2FudCB0byBzdG9yZSB0aGVcbiIKIiAgICAgICAgICBjb29raWVzIHRoYXQgYSBIVFRQIHNpdGUgIHNlbmRzICB0byAgeW91LiAgVGhlICBjb29raWVzXG4iCiIgICAgICAgICAgY291bGQgdGhlbiBiZSByZWFkIGluIGEgc2Vjb25kIGN1cmwgaW52b2tlIGJ5IHVzaW5nIHRoZVxuIgoiICAgICAgICAgIC1iLy0tY29va2llIG9wdGlvbiFcbiIKIlxuIgoiICAgICAtZS8tLXJlZmVyZXIgPFVSTD5cbiIKIiAgICAgICAgICAoSFRUUCkgU2VuZHMgdGhlIFwiUmVmZXJlciBQYWdlXCIgaW5mb3JtYXRpb24gdG8gdGhlIEhUVFBcbiIKIiAgICAgICAgICBzZXJ2ZXIuIFNvbWUgYmFkbHkgZG9uZSBDR0lzIGZhaWwgaWYgaXQncyBub3Qgc2V0LiBUaGlzXG4iCiIgICAgICAgICAgY2FuIGFsc28gYmUgc2V0IHdpdGggdGhlIC1ILy0taGVhZGVyIGZsYWcgb2YgY291cnNlLlxuIgoiXG4iCiIgICAgIC1FLy0tY2VydCA8Y2VydGlmaWNhdGVbOnBhc3N3b3JkXT5cbiIKIiAgICAgICAgICAoSFRUUFMpIFRlbGxzIGN1cmwgdG8gIHVzZSAgdGhlICBzcGVjaWZpZWQgIGNlcnRpZmljYXRlXG4iCiIgICAgICAgICAgZmlsZSAgd2hlbiAgZ2V0dGluZyAgYSBmaWxlIHdpdGggSFRUUFMuIFRoZSBjZXJ0aWZpY2F0ZVxuIgoiICAgICAgICAgIG11c3QgYmUgaW4gUEVNIGZvcm1hdC4gIElmIHRoZSBvcHRpb25hbCBwYXNzd29yZCAgaXNuJ3RcbiIKIiAgICAgICAgICBzcGVjaWZpZWQsIGl0IHdpbGwgYmUgcXVlcmllZCBmb3Igb24gdGhlIHRlcm1pbmFsLiBOb3RlXG4iCiIgICAgICAgICAgdGhhdCB0aGlzIGNlcnRpZmljYXRlIGlzIHRoZSBwcml2YXRlIGtleSBhbmQgIHRoZSAgcHJprVxuIgoiICAgICAgICAgIHZhdGUgY2VydGlmaWNhdGUgY29uY2F0ZW5hdGVkIVxuIgoiXG4iCiIgICAgIC1mLy0tZmFpbFxuIgoiICAgICAgICAgIChIVFRQKSAgRmFpbCAgc2lsZW50bHkgIChubyAgb3V0cHV0ICBhdCAgYWxsKSBvbiBzZXJ2ZXJcbiIKIiAgICAgICAgICBlcnJvcnMuIFRoaXMgaXMgbW9zdGx5IGRvbmUgbGlrZSB0aGlzIHRvIGJldHRlciAgZW5hYmxlXG4iCiIgICAgICAgICAgc2NyaXB0cyAgZXRjICB0byAgYmV0dGVyICBkZWFsIHdpdGggZmFpbGVkIGF0dGVtcHRzLiBJblxuIgoiICAgICAgICAgIG5vcm1hbCBjYXNlcyB3aGVuIGEgSFRUUCBzZXJ2ZXIgZmFpbHMgdG8gZGVsaXZlciBhIGRvY61cbiIKIiAgICAgICAgICB1bWVudCwgIGl0ICByZXR1cm5zICBhICBIVE1MIGRvY3VtZW50IHN0YXRpbmcgc28gKHdoaWNoXG4iCiIgICAgICAgICAgb2Z0ZW4gYWxzbyBkZXNjcmliZXMgd2h5IGFuZCBtb3JlKS4gVGhpcyBmbGFnIHdpbGwgcHJlrVxuIgoiICAgICAgICAgIHZlbnQgIGN1cmwgIGZyb20gIG91dHB1dHRpbmcgIHRoYXQgIGFuZCAgZmFpbCAgc2lsZW50bHlcbiIKIiAgICAgICAgICBpbnN0ZWFkLlxuIgoiXG4iCiIgICAgIC1GLy0tZm9ybSA8bmFtZT1jb250ZW50PlxuIgoiICAgICAgICAgIChIVFRQKSBUaGlzIGxldHMgY3VybCBlbXVsYXRlIGEgZmlsbGVkIGluIGZvcm0gaW4gd2hpY2hcbiIKIiAgICAgICAgICBhICB1c2VyIGhhcyBwcmVzc2VkIHRoZSBzdWJtaXQgYnV0dG9uLiBUaGlzIGNhdXNlcyBjdXJsXG4iCiIgICAgICAgICAgdG8gUE9TVCBkYXRhIHVzaW5nIHRoZSBjb250ZW50LXR5cGUgbXVsdGlwYXJ0L2Zvcm0tZGF0YVxuIgoiICAgICAgICAgIGFjY29yZGluZyAgdG8gUkZDMTg2Ny4gVGhpcyBlbmFibGVzIHVwbG9hZGluZyBvZiBiaW5hcnlcbiIKIiAgICAgICAgICBmaWxlcyBldGMuIFRvIGZvcmNlIHRoZSAnY29udGVudCcgcGFydCB0byBiZSByZWFkICBmcm9tXG4iCiIgICAgICAgICAgYSAgZmlsZSwgIHByZWZpeCB0aGUgZmlsZSBuYW1lIHdpdGggYW4gQCBzaWduLiBFeGFtcGxlLFxuIgoiICAgICAgICAgIHRvIHNlbmQgeW91ciBwYXNzd29yZCBmaWxlIHRvIHRoZSBzZXJ2ZXIsIHdoZXJlICAncGFzc61cbiIKIiAgICAgICAgICB3b3JkJyAgIGlzICAgdGhlICAgbmFtZSAgb2YgIHRoZSAgZm9ybS1maWVsZCAgdG8gIHdoaWNoXG4iCiIgICAgICAgICAgL2V0Yy9wYXNzd2Qgd2lsbCBiZSB0aGUgaW5wdXQ6XG4iCiJcbiIKIiAgICAgICAgICBjdXJsIC1GIHBhc3N3b3JkPUAvZXRjL3Bhc3N3ZCB3d3cubXlwYXNzd29yZHMuY29tXG4iCiIgICAgICAgICAgVG8gcmVhZCB0aGUgZmlsZSdzIGNvbnRlbnQgZnJvbSBzdGRpbiBpbnN0ZWQgb2YgYSBmaWxlLFxuIgoiICAgICAgICAgIHVzZSAtIHdoZXJlIHRoZSBmaWxlIG5hbWUgc2hvdWxkJ3ZlIGJlZW4uXG4iCiJcbiIKIiAgICAgLWgvLS1oZWxwXG4iCiIgICAgICAgICAgVXNhZ2UgaGVscC5cbiIKIlxuIgoiICAgICAtSC8tLWhlYWRlciA8aGVhZGVyPlxuIgoiICAgICAgICAgIChIVFRQKSBFeHRyYSBoZWFkZXIgdG8gdXNlIHdoZW4gZ2V0dGluZyBhIHdlYiBwYWdlLiBZb3VcbiIKIiAgICAgICAgICBtYXkgc3BlY2lmeSBhbnkgbnVtYmVyIG9mIGV4dHJhIGhlYWRlcnMuIE5vdGUgIHRoYXQgIGlmXG4iCiIgICAgICAgICAgeW91ICBzaG91bGQgIGFkZCBhIGN1c3RvbSBoZWFkZXIgdGhhdCBoYXMgdGhlIHNhbWUgbmFtZVxuIgoiICAgICAgICAgIGFzIG9uZSBvZiB0aGUgaW50ZXJuYWwgb25lcyBjdXJsIHdvdWxkIHVzZSwgeW91ciBleHRlcq1cbiIKIiAgICAgICAgICBuYWxseSAgc2V0ICBoZWFkZXIgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIGludGVybmFsXG4iCiIgICAgICAgICAgb25lLiBUaGlzIGFsbG93cyB5b3UgdG8gbWFrZSBldmVuIHRyaWNraWVyICBzdHVmZiAgdGhhblxuIgoiICAgICAgICAgIGN1cmwgIHdvdWxkICBub3JtYWxseSBkby4gWW91IHNob3VsZCBub3QgcmVwbGFjZSBpbnRlcq1cbiIKIiAgICAgICAgICBuYWxseSBzZXQgaGVhZGVycyB3aXRob3V0IGtub3dpbmcgcGVyZmVjdGx5ICB3ZWxsICB3aGF0XG4iCiIgICAgICAgICAgeW91J3JlIGRvaW5nLlxuIgoiXG4iCiIgICAgIC1pLy0taW5jbHVkZVxuIgoiICAgICAgICAgIChIVFRQKSBJbmNsdWRlIHRoZSBIVFRQLWhlYWRlciBpbiB0aGUgb3V0cHV0LiBUaGUgSFRUUC1cbiIKIiAgICAgICAgICBoZWFkZXIgaW5jbHVkZXMgdGhpbmdzIGxpa2Ugc2VydmVyLW5hbWUsICBkYXRlICBvZiAgdGhlXG4iCiIgICAgICAgICAgZG9jdW1lbnQsIEhUVFAtdmVyc2lvbiBhbmQgbW9yZS4uLlxuIgoiXG4iCiIgICAgIC1JLy0taGVhZFxuIgoiICAgICAgICAgIChIVFRQL0ZUUCkgIEZldGNoICB0aGUgIEhUVFAtaGVhZGVyICBvbmx5ISBIVFRQLXNlcnZlcnNcbiIKIiAgICAgICAgICBmZWF0dXJlIHRoZSBjb21tYW5kIEhFQUQgd2hpY2ggdGhpcyB1c2VzIHRvIGdldCBub3RoaW5nXG4iCiIgICAgICAgICAgYnV0ICB0aGUgaGVhZGVyIG9mIGEgZG9jdW1lbnQuIFdoZW4gdXNlZCBvbiBhIEZUUCBmaWxlLFxuIgoiICAgICAgICAgIGN1cmwgZGlzcGxheXMgdGhlIGZpbGUgc2l6ZSBvbmx5LlxuIgoiXG4iCiIgICAgIC1LLy0tY29uZmlnIDxjb25maWcgZmlsZT5cbiIKIiAgICAgICAgICBTcGVjaWZ5IHdoaWNoIGNvbmZpZyBmaWxlIHRvIHJlYWQgY3VybCBhcmd1bWVudHMgIGZyb20uXG4iCiIgICAgICAgICAgVGhlICBjb25maWcgIGZpbGUgIGlzIGEgdGV4dCBmaWxlIGluIHdoaWNoIGNvbW1hbmQgbGluZVxuIgoiICAgICAgICAgIGFyZ3VtZW50cyBjYW4gYmUgd3JpdHRlbiB3aGljaCB0aGVuIHdpbGwgYmUgdXNlZCBhcyAgaWZcbiIKIiAgICAgICAgICB0aGV5ICB3ZXJlICB3cml0dGVuICBvbiB0aGUgYWN0dWFsIGNvbW1hbmQgbGluZS4gSWYgdGhlXG4iCiIgICAgICAgICAgZmlyc3QgY29sdW1uIG9mIGEgY29uZmlnIGxpbmUgaXMgYSAnIycgIGNoYXJhY3RlciwgIHRoZVxuIgoiICAgICAgICAgIHJlc3Qgb2YgdGhlIGxpbmUgd2lsbCBiZSB0cmVhdGVkIGFzIGEgY29tbWVudC5cbiIKIlxuIgoiICAgICAgICAgIFNwZWNpZnkgIHRoZSBmaWxlbmFtZSBhcyAnLScgdG8gbWFrZSBjdXJsIHJlYWQgdGhlIGZpbGVcbiIKIiAgICAgICAgICBmcm9tIHN0ZGluLlxuIgoiXG4iCiIgICAgIC1sLy0tbGlzdC1vbmx5XG4iCiIgICAgICAgICAgKEZUUCkgV2hlbiBsaXN0aW5nIGFuIEZUUCBkaXJlY3RvcnksIHRoaXMgc3dpdGNoIGZvcmNlc1xuIgoiICAgICAgICAgIGEgIG5hbWUtb25seSAgdmlldy4gICBFc3BlY2lhbGx5ICB1c2VmdWwgaWYgeW91IHdhbnQgdG9cbiIKIiAgICAgICAgICBtYWNoaW5lLXBhcnNlIHRoZSBjb250ZW50cyBvZiBhbiAgRlRQICBkaXJlY3RvcnkgIHNpbmNlXG4iCiIgICAgICAgICAgdGhlICBub3JtYWwgIGRpcmVjdG9yeSB2aWV3IGRvZXNuJ3QgdXNlIGEgc3RhbmRhcmQgbG9va1xuIgoiICAgICAgICAgIG9yIGZvcm1hdC5cbiIKIlxuIgoiICAgICAtTC8tLWxvY2F0aW9uXG4iCiIgICAgICAgICAgKEhUVFAvSFRUUFMpIElmIHRoZSBzZXJ2ZXIgcmVwb3J0cyB0aGF0ICB0aGUgIHJlcXVlc3RlZFxuIgoiICAgICAgICAgIHBhZ2UgIGhhcyAgYSAgZGlmZmVyZW50ICBsb2NhdGlvbiAgKGluZGljYXRlZCAgd2l0aCB0aGVcbiIKIiAgICAgICAgICBoZWFkZXIgbGluZSBMb2NhdGlvbjopIHRoaXMgZmxhZyB3aWxsIGxldCBjdXJsICBhdHRlbXB0XG4iCiIgICAgICAgICAgdG8gcmVhdHRlbXB0IHRoZSBnZXQgb24gdGhlIG5ldyBwbGFjZS4gSWYgdXNlZCB0b2dldGhlclxuIgoiICAgICAgICAgIHdpdGggLWkgb3IgLUksIGhlYWRlcnMgZnJvbSBhbGwgcmVxdWVzdGVkIHBhZ2VzIHdpbGwgYmVcbiIKIiAgICAgICAgICBzaG93bi5cbiIKIlxuIgoiICAgICAtbS8tLW1heC10aW1lIDxzZWNvbmRzPlxuIgoiICAgICAgICAgIE1heGltdW0gdGltZSBpbiBzZWNvbmRzIHRoYXQgeW91IGFsbG93IHRoZSB3aG9sZSBvcGVyYa1cbiIKIiAgICAgICAgICB0aW9uIHRvIHRha2UuICBUaGlzIGlzIHVzZWZ1bCBmb3IgcHJldmVudGluZyB5b3VyIGJhdGNoXG4iCiIgICAgICAgICAgam9icyAgZnJvbSAgaGFuZ2luZyAgZm9yICBob3VycyBkdWUgdG8gc2xvdyBuZXR3b3JrcyBvclxuIgoiICAgICAgICAgIGxpbmtzIGdvaW5nIGRvd24uICBUaGlzIGRvZXNuJ3Qgd29yayBwcm9wZXJseSBpbiAgd2luMzJcbiIKIiAgICAgICAgICBzeXN0ZW1zLlxuIgoiXG4iCiIgICAgIC1NLy0tbWFudWFsXG4iCiIgICAgICAgICAgTWFudWFsLiBEaXNwbGF5IHRoZSBodWdlIGhlbHAgdGV4dC5cbiIKIlxuIgoiICAgICAtbi8tLW5ldHJjXG4iCiIgICAgICAgICAgTWFrZXMgIGN1cmwgIHNjYW4gIHRoZSAgLm5ldHJjICBmaWxlIGluIHRoZSB1c2VyJ3MgaG9tZVxuIgoiICAgICAgICAgIGRpcmVjdG9yeSBmb3IgbG9naW4gbmFtZSBhbmQgcGFzc3dvcmQuICBUaGlzICBpcyAgdHlwaa1cbiIKIiAgICAgICAgICBjYWxseSAgdXNlZCAgZm9yICBmdHAgIG9uIHVuaXguIElmIHVzZWQgd2l0aCBodHRwLCBjdXJsXG4iCiIgICAgICAgICAgd2lsbCAgZW5hYmxlICB1c2VyICBhdXRoZW50aWNhdGlvbi4gIFNlZSAgbmV0cmMoNCkgIGZvclxuIgoiICAgICAgICAgIGRldGFpbHMgIG9uICB0aGUgZmlsZSBmb3JtYXQuIEN1cmwgd2lsbCBub3QgY29tcGxhaW4gaWZcbiIKIiAgICAgICAgICB0aGF0IGZpbGUgaGFzbid0IHRoZSByaWdodCBwZXJtaXNzaW9ucyAoaXQgIHNob3VsZCAgbm90XG4iCiIgICAgICAgICAgYmUgIHdvcmxkIG5vciBncm91cCByZWFkYWJsZSkuIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZVxuIgoiICAgICAgICAgIFwiSE9NRVwiIGlzIHVzZWQgdG8gZmluZCB0aGUgaG9tZSBkaXJlY3RvcnkuXG4iCiJcbiIKIiAgICAgICAgICBBIHF1aWNrIGFuZCB2ZXJ5IHNpbXBsZSAgZXhhbXBsZSAgb2YgIGhvdyAgdG8gIHNldHVwICBhXG4iCiIgICAgICAgICAgLm5ldHJjICAgdG8gICBhbGxvdyAgIGN1cmwgICB0byAgIGZ0cCAgdG8gIHRoZSAgbWFjaGluZVxuIgoiICAgICAgICAgIGhvc3QuZG9tYWluLmNvbSB3aXRoIHVzZXIgbmFtZVxuIgoiXG4iCiIgICAgICAgICAgbWFjaGluZSBob3N0LmRvbWFpbi5jb20gdXNlciBteXNlbGYgcGFzc3dvcmQgc2VjcmV0XG4iCiJcbiIKIiAgICAgLU4vLS1uby1idWZmZXJcbiIKIiAgICAgICAgICBEaXNhYmxlcyB0aGUgYnVmZmVyaW5nIG9mIHRoZSBvdXRwdXQgc3RyZWFtLiBJbiAgbm9ybWFsXG4iCiIgICAgICAgICAgd29yayBzaXR1YXRpb25zLCBjdXJsIHdpbGwgdXNlIGEgc3RhbmRhcmQgYnVmZmVyZWQgb3V0rVxuIgoiICAgICAgICAgIHB1dCBzdHJlYW0gdGhhdCB3aWxsIGhhdmUgdGhlIGVmZmVjdCB0aGF0IGl0IHdpbGwgIG91dK1cbiIKIiAgICAgICAgICBwdXQgIHRoZSAgZGF0YSAgaW4gY2h1bmtzLCBub3QgbmVjZXNzYXJpbHkgZXhhY3RseSB3aGVuXG4iCiIgICAgICAgICAgdGhlIGRhdGEgYXJyaXZlcy4gIFVzaW5nIHRoaXMgb3B0aW9uIHdpbGwgZGlzYWJsZSAgdGhhdFxuIgoiICAgICAgICAgIGJ1ZmZlcmluZy5cbiIKIlxuIgoiICAgICAtby8tLW91dHB1dCA8ZmlsZT5cbiIKIiAgICAgICAgICBXcml0ZSAgb3V0cHV0ICB0byAgPGZpbGU+IGluc3RlYWQgb2Ygc3Rkb3V0LiBJZiB5b3UgYXJlXG4iCiIgICAgICAgICAgdXNpbmcge30gb3IgW10gdG8gZmV0Y2ggbXVsdGlwbGUgZG9jdW1lbnRzLCB5b3UgY2FuIHVzZVxuIgoiICAgICAgICAgICNbbnVtXSAgaW4gIHRoZSA8ZmlsZT4gc3BlY2lmaWVyLiBUaGF0IHZhcmlhYmxlIHdpbGwgYmVcbiIKIiAgICAgICAgICByZXBsYWNlZCB3aXRoIHRoZSBjdXJyZW50ICBzdHJpbmcgIGZvciAgdGhlICBVUkwgIGJlaW5nXG4iCiIgICAgICAgICAgZmV0Y2hlZC4gTGlrZSBpbjpcbiIKIlxuIgoiICAgICAgICAgICAgY3VybCBodHRwOi8ve29uZSx0d299LnNpdGUuY29tIC1vIFwiZmlsZV8jMS50eHRcIlxuIgoiXG4iCiIgICAgICAgICAgb3IgdXNlIHNldmVyYWwgdmFyaWFibGVzIGxpa2U6XG4iCiJcbiIKIiAgICAgICAgICAgIGN1cmwgaHR0cDovL3tzaXRlLGhvc3R9Lmhvc3RbMS01XS5jb20gLW8gXCIjMV8jMlwiXG4iCiJcbiIKIiAgICAgLU8vLS1yZW1vdGUtbmFtZVxuIgoiICAgICAgICAgIFdyaXRlIG91dHB1dCB0byBhIGxvY2FsIGZpbGUgbmFtZWQgbGlrZSB0aGUgcmVtb3RlIGZpbGVcbiIKIiAgICAgICAgICB3ZSBnZXQuIChPbmx5IHRoZSBmaWxlIHBhcnQgb2YgdGhlIHJlbW90ZSBmaWxlIGlzIHVzZWQsXG4iCiIgICAgICAgICAgdGhlIHBhdGggaXMgY3V0IG9mZi4pXG4iCiJcbiIKIiAgICAgLVAvLS1mdHBwb3J0IDxhZGRyZXNzPlxuIgoiICAgICAgICAgIChGVFApICBSZXZlcnNlcyAgdGhlIGluaXRpYXRvci9saXN0ZW5lciByb2xlcyB3aGVuIGNvbq1cbiIKIiAgICAgICAgICBuZWN0aW5nIHdpdGggZnRwLiBUaGlzIHN3aXRjaCBtYWtlcyBDdXJsIHVzZSAgdGhlICBQT1JUXG4iCiIgICAgICAgICAgY29tbWFuZCAgaW5zdGVhZCAgb2YgIFBBU1YuIEluIHByYWN0aWNlLCBQT1JUIHRlbGxzIHRoZVxuIgoiICAgICAgICAgIHNlcnZlciB0byBjb25uZWN0IHRvIHRoZSBjbGllbnQncyBzcGVjaWZpZWQgYWRkcmVzcyBhbmRcbiIKIiAgICAgICAgICBwb3J0LCAgd2hpbGUgUEFTViBhc2tzIHRoZSBzZXJ2ZXIgZm9yIGFuIGlwIGFkZHJlc3MgYW5kXG4iCiIgICAgICAgICAgcG9ydCB0byBjb25uZWN0IHRvLiA8YWRkcmVzcz4gc2hvdWxkIGJlIG9uZSBvZjpcbiIKIlxuIgoiICAgICAgICAgIGludGVyZmFjZSAgIGkuZSBcImV0aDBcIiB0byBzcGVjaWZ5IHdoaWNoIGludGVyZmFjZSdzICBJUFxuIgoiICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MgeW91IHdhbnQgdG8gdXNlICAoVW5peCBvbmx5KVxuIgoiXG4iCiIgICAgICAgICAgSVAgYWRkcmVzcyAgaS5lIFwiMTkyLjE2OC4xMC4xXCIgdG8gc3BlY2lmeSBleGFjdCBJUCBudW2tXG4iCiIgICAgICAgICAgICAgICAgICAgICAgYmVyXG4iCiJcbiIKIiAgICAgICAgICBob3N0IG5hbWUgICBpLmUgXCJteS5ob3N0LmRvbWFpblwiIHRvIHNwZWNpZnkgbWFjaGluZVxuIgoiXG4iCiIgICAgICAgICAgLSAgICAgICAgICAgKGFueSBzaW5nbGUtbGV0dGVyIHN0cmluZykgdG8gbWFrZSBpdCAgcGlja1xuIgoiICAgICAgICAgICAgICAgICAgICAgIHRoZSBtYWNoaW5lJ3MgZGVmYXVsdFxuIgoiXG4iCiIgICAgIC1xICAgSWYgdXNlZCBhcyB0aGUgZmlyc3QgcGFyYW1ldGVyIG9uIHRoZSBjb21tYW5kIGxpbmUsIHRoZVxuIgoiICAgICAgICAgICRIT01FLy5jdXJscmMgZmlsZSB3aWxsIG5vdCBiZSByZWFkIGFuZCB1c2VkIGFzIGEgIGNvbq1cbiIKIiAgICAgICAgICBmaWcgZmlsZS5cbiIKIlxuIgoiICAgICAtUS8tLXF1b3RlIDxjb21hbmQ+XG4iCiIgICAgICAgICAgKEZUUCkgIFNlbmQgIGFuICBhcmJpdHJhcnkgIGNvbW1hbmQgIHRvICB0aGUgcmVtb3RlIEZUUFxuIgoiICAgICAgICAgIHNlcnZlciwgYnkgdXNpbmcgdGhlIFFVT1RFIGNvbW1hbmQgb2YgdGhlICBzZXJ2ZXIuICBOb3RcbiIKIiAgICAgICAgICBhbGwgIHNlcnZlcnMgc3VwcG9ydCB0aGlzIGNvbW1hbmQsIGFuZCB0aGUgc2V0IG9mIFFVT1RFXG4iCiIgICAgICAgICAgY29tbWFuZHMgYXJlIHNlcnZlciBzcGVjaWZpYyEgUXVvdGUgY29tbWFuZHMgIGFyZSAgc2VudFxuIgoiICAgICAgICAgIEJFRk9SRSAgdGhlICB0cmFuc2ZlciBpcyB0YWtpbmcgcGxhY2UuIFRvIG1ha2UgY29tbWFuZHNcbiIKIiAgICAgICAgICB0YWtlIHBsYWNlIGFmdGVyIGEgIHN1Y2Nlc3NmdWwgIHRyYW5zZmVyLCAgcHJlZml4ICB0aGVtXG4iCiIgICAgICAgICAgd2l0aCBhIGRhc2ggJy0nLiBZb3UgbWF5IHNwZWNpZnkgYW55IGFtb3VudCBvZiBjb21tYW5kc1xuIgoiICAgICAgICAgIHRvIGJlIHJ1biBiZWZvcmUgYW5kIGFmdGVyIHRoZSB0cmFuc2Zlci4gSWYgdGhlICBzZXJ2ZXJcbiIKIiAgICAgICAgICByZXR1cm5zICBmYWlsdXJlICBmb3IgIG9uZSAgb2YgdGhlIGNvbW1hbmRzLCB0aGUgZW50aXJlXG4iCiIgICAgICAgICAgb3BlcmF0aW9uIHdpbGwgYmUgYWJvcnRlZC5cbiIKIlxuIgoiICAgICAtci8tLXJhbmdlIDxyYW5nZT5cbiIKIiAgICAgICAgICAoSFRUUC9GVFApIFJldHJpZXZlIGEgYnl0ZSByYW5nZSAoaS5lIGEgIHBhcnRpYWwgIGRvY3WtXG4iCiIgICAgICAgICAgbWVudCkgIGZyb20gIGEgIEhUVFAvMS4xICBvciAgRlRQIHNlcnZlci4gUmFuZ2VzIGNhbiBiZVxuIgoiICAgICAgICAgIHNwZWNpZmllZCBpbiBhIG51bWJlciBvZiB3YXlzLlxuIgoiXG4iCiIgICAgICAgICAgMC00OTkgICAgIHNwZWNpZmllcyB0aGUgZmlyc3QgNTAwIGJ5dGVzXG4iCiJcbiIKIiAgICAgICAgICA1MDAtOTk5ICAgc3BlY2lmaWVzIHRoZSBzZWNvbmQgNTAwIGJ5dGVzXG4iCiJcbiIKIiAgICAgICAgICAtNTAwICAgICAgc3BlY2lmaWVzIHRoZSBsYXN0IDUwMCBieXRlc1xuIgoiXG4iCiIgICAgICAgICAgOTUwMCAgICAgIHNwZWNpZmllcyB0aGUgYnl0ZXMgZnJvbSBvZmZzZXQgOTUwMCBhbmQgZm9yrVxuIgoiICAgICAgICAgICAgICAgICAgICB3YXJkXG4iCiJcbiIKIiAgICAgICAgICAwLTAsLTEgICAgc3BlY2lmaWVzIHRoZSBmaXJzdCBhbmQgbGFzdCBieXRlIG9ubHkoKikoSClcbiIKIiAgICAgICAgICA1MDAtNzAwLDYwMC03OTlcbiIKIiAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVzIDMwMCBieXRlcyBmcm9tIG9mZnNldCA1MDAoSClcbiIKIlxuIgoiICAgICAgICAgIDEwMC0xOTksNTAwLTU5OVxuIgoiICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZXMgdHdvIHNlcGFyYXRlIDEwMCBieXRlcyByYW5nZXMoKikoSClcbiIKIlxuIgoiICAgICAoKikgPSBOT1RFIHRoYXQgdGhpcyB3aWxsIGNhdXNlIHRoZSBzZXJ2ZXIgdG8gcmVwbHkgIHdpdGggIGFcbiIKIiAgICAgbXVsdGlwYXJ0IHJlc3BvbnNlIVxuIgoiXG4iCiIgICAgIFlvdSAgc2hvdWxkICBhbHNvIGJlIGF3YXJlIHRoYXQgbWFueSBIVFRQLzEuMSBzZXJ2ZXJzIGRvIG5vdFxuIgoiICAgICBoYXZlIHRoaXMgZmVhdHVyZSBlbmFibGVkLCBzbyB0aGF0IHdoZW4geW91IGF0dGVtcHQgdG8gZ2V0IGFcbiIKIiAgICAgcmFuZ2UsIHlvdSdsbCBpbnN0ZWFkIGdldCB0aGUgd2hvbGUgZG9jdW1lbnQuXG4iCiJcbiIKIiAgICAgRlRQICByYW5nZSAgZG93bmxvYWRzIG9ubHkgc3VwcG9ydCB0aGUgc2ltcGxlIHN5bnRheCAnc3RhcnQtXG4iCiIgICAgIHN0b3AnIChvcHRpb25hbGx5IHdpdGggIG9uZSAgb2YgIHRoZSAgbnVtYmVycyAgb21pdHRlZCkuICBJdFxuIgoiICAgICBkZXBlbmRzIG9uIHRoZSBub24tUkZDIGNvbW1hbmQgU0laRS5cbiIKIlxuIgoiICAgICAtcy8tLXNpbGVudFxuIgoiICAgICAgICAgIFNpbGVudCAgbW9kZS4gIERvbid0ICBzaG93IHByb2dyZXNzIG1ldGVyIG9yIGVycm9yIG1lc61cbiIKIiAgICAgICAgICBzYWdlcy4gIE1ha2VzIEN1cmwgbXV0ZS5cbiIKIlxuIgoiICAgICAtUy8tLXNob3ctZXJyb3JcbiIKIiAgICAgICAgICBXaGVuIHVzZWQgd2l0aCAtcyBpdCBtYWtlcyBjdXJsIHNob3cgZXJyb3IgIG1lc3NhZ2UgIGlmXG4iCiIgICAgICAgICAgaXQgZmFpbHMuXG4iCiJcbiIKIiAgICAgLXQvLS11cGxvYWRcbiIKIiAgICAgICAgICBUcmFuc2ZlciAgdGhlICBzdGRpbiAgZGF0YSAgdG8gdGhlIHNwZWNpZmllZCBmaWxlLiBDdXJsXG4iCiIgICAgICAgICAgd2lsbCByZWFkIGV2ZXJ5dGhpbmcgZnJvbSBzdGRpbiAgdW50aWwgIEVPRiAgYW5kICBzdG9yZVxuIgoiICAgICAgICAgIHdpdGggIHRoZSAgc3VwcGxpZWQgIG5hbWUuIElmIHRoaXMgaXMgdXNlZCBvbiBhIGh0dHAocylcbiIKIiAgICAgICAgICBzZXJ2ZXIsIHRoZSBQVVQgY29tbWFuZCB3aWxsIGJlIHVzZWQuXG4iCiJcbiIKIiAgICAgLVQvLS11cGxvYWQtZmlsZSA8ZmlsZT5cbiIKIiAgICAgICAgICBMaWtlIC10LCBidXQgdGhpcyB0cmFuc2ZlcnMgdGhlIHNwZWNpZmllZCAgbG9jYWwgIGZpbGUuXG4iCiIgICAgICAgICAgSWYgIHRoZXJlICBpcyAgbm8gIGZpbGUgcGFydCBpbiB0aGUgc3BlY2lmaWVkIFVSTCwgQ3VybFxuIgoiICAgICAgICAgIHdpbGwgYXBwZW5kIHRoZSBsb2NhbCBmaWxlIG5hbWUuIE5PVEUgdGhhdCB5b3UgbXVzdCB1c2VcbiIKIiAgICAgICAgICBhICB0cmFpbGluZyAgLyBvbiB0aGUgbGFzdCBkaXJlY3RvcnkgdG8gcmVhbGx5IHByb3ZlIHRvXG4iCiIgICAgICAgICAgQ3VybCB0aGF0IHRoZXJlIGlzIG5vIGZpbGUgbmFtZSBvciBjdXJsIHdpbGwgdGhpbmsgdGhhdFxuIgoiICAgICAgICAgIHlvdXIgIGxhc3QgIGRpcmVjdG9yeSAgbmFtZSAgaXMgdGhlIHJlbW90ZSBmaWxlIG5hbWUgdG9cbiIKIiAgICAgICAgICB1c2UuIFRoYXQgd2lsbCBtb3N0IGxpa2VseSBjYXVzZSB0aGUgIHVwbG9hZCAgb3BlcmF0aW9uXG4iCiIgICAgICAgICAgdG8gIGZhaWwuICBJZiB0aGlzIGlzIHVzZWQgb24gYSBodHRwKHMpIHNlcnZlciwgdGhlIFBVVFxuIgoiICAgICAgICAgIGNvbW1hbmQgd2lsbCBiZSB1c2VkLlxuIgoiXG4iCiIgICAgIC11Ly0tdXNlciA8dXNlcjpwYXNzd29yZD5cbiIKIiAgICAgICAgICBTcGVjaWZ5IHVzZXIgYW5kIHBhc3N3b3JkIHRvICB1c2UgIHdoZW4gIGZldGNoaW5nLiAgU2VlXG4iCiIgICAgICAgICAgUkVBRE1FLmN1cmwgIGZvciAgZGV0YWlsZWQgZXhhbXBsZXMgb2YgaG93IHRvIHVzZSB0aGlzLlxuIgoiICAgICAgICAgIElmIG5vIHBhc3N3b3JkIGlzICBzcGVjaWZpZWQsICBjdXJsICB3aWxsICBhc2sgIGZvciAgaXRcbiIKIiAgICAgICAgICBpbnRlcmFjdGl2ZWx5LlxuIgoiXG4iCiIgICAgIC1VLy0tcHJveHktdXNlciA8dXNlcjpwYXNzd29yZD5cbiIKIiAgICAgICAgICBTcGVjaWZ5ICB1c2VyIGFuZCBwYXNzd29yZCB0byB1c2UgZm9yIFByb3h5IGF1dGhlbnRpY2GtXG4iCiIgICAgICAgICAgdGlvbi4gSWYgbm8gcGFzc3dvcmQgaXMgc3BlY2lmaWVkLCBjdXJsIHdpbGwgYXNrIGZvciBpdFxuIgoiICAgICAgICAgIGludGVyYWN0aXZlbHkuXG4iCiIgICAgIC12Ly0tdmVyYm9zZVxuIgoiICAgICAgICAgIE1ha2VzICAgdGhlICBmZXRjaGluZyAgbW9yZSAgdmVyYm9zZS90YWxrYXRpdmUuICBNb3N0bHlcbiIKIiAgICAgICAgICB1c2FibGUgZm9yIGRlYnVnZ2luZy4gTGluZXMgIHN0YXJ0aW5nICB3aXRoICAnPicgIG1lYW5zXG4iCiIgICAgICAgICAgZGF0YSBzZW50IGJ5IGN1cmwsICc8JyBtZWFucyBkYXRhIHJlY2VpdmVkIGJ5IGN1cmwgdGhhdFxuIgoiICAgICAgICAgIGlzIGhpZGRlbiBpbiBub3JtYWwgY2FzZXMgYW5kIGxpbmVzIHN0YXJ0aW5nICB3aXRoICAnKidcbiIKIiAgICAgICAgICBtZWFucyBhZGRpdGlvbmFsIGluZm8gcHJvdmlkZWQgYnkgY3VybC5cbiIKIlxuIgoiICAgICAtVi8tLXZlcnNpb25cbiIKIiAgICAgICAgICBEaXNwbGF5cyAgdGhlICBmdWxsICB2ZXJzaW9uIG9mIGN1cmwsIGxpYmN1cmwgYW5kIG90aGVyXG4iCiIgICAgICAgICAgM3JkIHBhcnR5IGxpYnJhcmllcyBsaW5rZWQgd2l0aCB0aGUgZXhlY3V0YWJsZS5cbiIKIlxuIgoiICAgICAtdy8tLXdyaXRlLW91dCA8Zm9ybWF0PlxuIgoiICAgICAgICAgIERlZmluZXMgd2hhdCB0byBkaXNwbGF5IGFmdGVyIGEgY29tcGxldGVkIGFuZCAgc3VjY2Vzc61cbiIKIiAgICAgICAgICBmdWwgIG9wZXJhdGlvbi4gVGhlIGZvcm1hdCBpcyBhIHN0cmluZyB0aGF0IG1heSBjb250YWluXG4iCiIgICAgICAgICAgcGxhaW4gdGV4dCBtaXhlZCB3aXRoICBhbnkgIG51bWJlciAgb2YgIHZhcmlhYmxlcy4gIFRoZVxuIgoiICAgICAgICAgIHN0cmluZyBjYW4gYmUgc3BlY2lmaWVkIGFzIFwic3RyaW5nXCIsIHRvIGdldCByZWFkIGZyb20gYVxuIgoiICAgICAgICAgIHBhcnRpY3VsYXIgZmlsZSB5b3Ugc3BlY2lmeSBpdCBcIkBmaWxlbmFtZVwiIGFuZCB0byAgdGVsbFxuIgoiICAgICAgICAgIGN1cmwgdG8gcmVhZCB0aGUgZm9ybWF0IGZyb20gc3RkaW4geW91IHdyaXRlIFwiQC1cIi5cbiIKIlxuIgoiICAgICAgICAgIFRoZSB2YXJpYWJsZXMgcHJlc2VudCBpbiB0aGUgb3V0cHV0IGZvcm1hdCB3aWxsIGJlIHN1Yq1cbiIKIiAgICAgICAgICBzdGl0dXRlZCBieSB0aGUgdmFsdWUgb3IgdGV4dCB0aGF0IGN1cmwgdGhpbmtzIGZpdCwgIGFzXG4iCiIgICAgICAgICAgZGVzY3JpYmVkICBiZWxvdy4gIEFsbCAgdmFyaWFibGVzICBhcmUgIHNwZWNpZmllZCAgbGlrZVxuIgoiICAgICAgICAgICV7dmFyaWFibGVfbmFtZX0gYW5kIHRvIG91dHB1dCAgYSAgbm9ybWFsICAlICB5b3UgIGp1c3RcbiIKIiAgICAgICAgICB3cml0ZSAgdGhlbSAgbGlrZSAlJS4gWW91IGNhbiBvdXRwdXQgYSBuZXdsaW5lIGJ5IHVzaW5nXG4iCiIgICAgICAgICAgXFxuLCBhIGNhcnJpZ2UgcmV0dXJuIHdpdGggXFxyIGFuZCBhIHRhYiBzcGFjZSB3aXRoIFxcdC5cbiIKIlxuIgoiICAgICAgICAgIE5PVEU6ICBUaGUgICUtbGV0dGVyICBpcyAgYSAgc3BlY2lhbCAgbGV0dGVyICAgaW4gICB0aGVcbiIKIiAgICAgICAgICB3aW4zMi1lbnZpcm9ubWVudCwgIHdoZXJlICBhbGwgb2NjdXJyZW5jZXMgb2YgJSBtdXN0IGJlXG4iCiIgICAgICAgICAgZG91YmxlZCB3aGVuIHVzaW5nIHRoaXMgb3B0aW9uLlxuIgoiXG4iCiIgICAgICAgICAgQXZhaWxhYmxlIHZhcmlhYmxlcyBhcmUgYXQgdGhpcyBwb2ludDpcbiIKIlxuIgoiICAgICAgICAgIHVybF9lZmZlY3RpdmUgIFRoZSBVUkwgdGhhdCB3YXMgZmV0Y2hlZCBsYXN0LiAgVGhpcyAgaXNcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBtb3N0bHkgbWVhbmluZ2Z1bCBpZiB5b3UndmUgdG9sZCBjdXJsIHRvXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93IGxvY2F0aW9uOiBoZWFkZXJzLlxuIgoiXG4iCiIgICAgICAgICAgaHR0cF9jb2RlICAgICAgVGhlIG51bWVyaWNhbCBjb2RlIHRoYXQgd2FzIGZvdW5kIGluIHRoZVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgcmV0cmlldmVkIEhUVFAoUykgcGFnZS5cbiIKIlxuIgoiICAgICAgICAgIHRpbWVfdG90YWwgICAgIFRoZSAgdG90YWwgIHRpbWUsICBpbiAgc2Vjb25kcywgdGhhdCB0aGVcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsIG9wZXJhdGlvbiBsYXN0ZWQuIFRoZSB0aW1lIHdpbGwgIGJlXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheWVkIHdpdGggbWlsbGlzZWNvbmQgcmVzb2x1dGlvbi5cbiIKIlxuIgoiICAgICAgICAgIHRpbWVfbmFtZWxvb2t1cFxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSAgdGltZSwgIGluIHNlY29uZHMsIGl0IHRvb2sgZnJvbSB0aGVcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCB1bnRpbCB0aGUgbmFtZSByZXNvbHZpbmcgd2FzICBjb22tXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgcGxldGVkLlxuIgoiXG4iCiIgICAgICAgICAgdGltZV9jb25uZWN0ICAgVGhlICB0aW1lLCAgaW4gc2Vjb25kcywgaXQgdG9vayBmcm9tIHRoZVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0IHVudGlsIHRoZSBjb25uZWN0ICB0byAgdGhlICByZW1vdGVcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBob3N0IChvciBwcm94eSkgd2FzIGNvbXBsZXRlZC5cbiIKIiAgICAgICAgICB0aW1lX3ByZXRyYW5zZmVyXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgVGhlICB0aW1lLCAgaW4gc2Vjb25kcywgaXQgdG9vayBmcm9tIHRoZVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0IHVudGlsIHRoZSBmaWxlICB0cmFuc2ZlciAgaXMgIGp1c3RcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBhYm91dCAgdG8gIGJlZ2luLiBUaGlzIGluY2x1ZGVzIGFsbCBwcmUtXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmZXIgY29tbWFuZHMgYW5kIG5lZ290aWF0aW9ucyAgdGhhdFxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSAgc3BlY2lmaWMgIHRvICB0aGUgcGFydGljdWxhciBwcm90b61cbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBjb2wocykgaW52b2x2ZWQuXG4iCiJcbiIKIiAgICAgICAgICBzaXplX2Rvd25sb2FkICBUaGUgdG90YWwgIGFtb3VudCAgb2YgIGJ5dGVzICB0aGF0ICB3ZXJlXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgZG93bmxvYWRlZC5cbiIKIlxuIgoiICAgICAgICAgIHNpemVfdXBsb2FkICAgIFRoZSAgdG90YWwgIGFtb3VudCAgb2YgIGJ5dGVzICB0aGF0IHdlcmVcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICB1cGxvYWRlZC5cbiIKIlxuIgoiICAgICAgICAgIHNwZWVkX2Rvd25sb2FkIFRoZSBhdmVyYWdlICBkb3dubG9hZCAgc3BlZWQgIHRoYXQgIGN1cmxcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBtZWFzdXJlZCBmb3IgdGhlIGNvbXBsZXRlIGRvd25sb2FkLlxuIgoiXG4iCiIgICAgICAgICAgc3BlZWRfdXBsb2FkICAgVGhlICBhdmVyYWdlIHVwbG9hZCBzcGVlZCB0aGF0IGN1cmwgbWVhrVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIHN1cmVkIGZvciB0aGUgY29tcGxldGUgZG93bmxvYWQuXG4iCiJcbiIKIiAgICAgLXgvLS1wcm94eSA8cHJveHlob3N0Wzpwb3J0XT5cbiIKIiAgICAgICAgICBVc2Ugc3BlY2lmaWVkIHByb3h5LiBJZiB0aGUgcG9ydCBudW1iZXIgaXMgIG5vdCAgc3BlY2mtXG4iCiIgICAgICAgICAgZmllZCwgaXQgaXMgYXNzdW1lZCBhdCBwb3J0IDEwODAuXG4iCiJcbiIKIiAgICAgLVgvLS1yZXF1ZXN0IDxjb21tYW5kPlxuIgoiICAgICAgICAgIChIVFRQKSAgU3BlY2lmaWVzIGEgY3VzdG9tIHJlcXVlc3QgdG8gdXNlIHdoZW4gY29tbXVuaa1cbiIKIiAgICAgICAgICBjYXRpbmcgd2l0aCB0aGUgSFRUUCAgc2VydmVyLiAgIFRoZSAgc3BlY2lmaWVkICByZXF1ZXN0XG4iCiIgICAgICAgICAgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIHN0YW5kYXJkIEdFVC4gUmVhZCB0aGUgSFRUUFxuIgoiICAgICAgICAgIDEuMSBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWxzIGFuZCBleHBsYW5hdGlvbnMuXG4iCiJcbiIKIiAgICAgICAgICAoRlRQKSBTcGVjaWZpZXMgYSBjdXN0b20gRlRQIGNvbW1hbmQgdG8gdXNlIGluc3RlYWQgIG9mXG4iCiIgICAgICAgICAgTElTVCB3aGVuIGRvaW5nIGZpbGUgbGlzdHMgd2l0aCBmdHAuXG4iCiJcbiIKIiAgICAgLXkvLS1zcGVlZC10aW1lIDx0aW1lPlxuIgoiICAgICAgICAgIElmIGEgZG93bmxvYWQgaXMgc2xvd2VyIHRoYW4gc3BlZWQtbGltaXQgYnl0ZXMgcGVyIHNlY61cbiIKIiAgICAgICAgICBvbmQgZHVyaW5nICBhICBzcGVlZC10aW1lICBwZXJpb2QsICB0aGUgIGRvd25sb2FkICBnZXRzXG4iCiIgICAgICAgICAgYWJvcnRlZC4gSWYgc3BlZWQtdGltZSBpcyB1c2VkLCB0aGUgZGVmYXVsdCBzcGVlZC1saW1pdFxuIgoiICAgICAgICAgIHdpbGwgYmUgMSB1bmxlc3Mgc2V0IHdpdGggLXkuXG4iCiJcbiIKIiAgICAgLVkvLS1zcGVlZC1saW1pdCA8c3BlZWQ+XG4iCiIgICAgICAgICAgSWYgYSBkb3dubG9hZCBpcyBzbG93ZXIgdGhhbiB0aGlzIGdpdmVuIHNwZWVkLCBpbiBieXRlc1xuIgoiICAgICAgICAgIHBlciAgc2Vjb25kLCAgZm9yICBzcGVlZC10aW1lICBzZWNvbmRzIGl0IGdldHMgYWJvcnRlZC5cbiIKIiAgICAgICAgICBzcGVlZC10aW1lIGlzIHNldCB3aXRoIC1ZIGFuZCBpcyAzMCBpZiBub3Qgc2V0LlxuIgoiXG4iCiIgICAgIC16Ly0tdGltZS1jb25kIDxkYXRlIGV4cHJlc3Npb24+XG4iCiIgICAgICAgICAgKEhUVFApIFJlcXVlc3QgdG8gZ2V0IGEgZmlsZSAgdGhhdCAgaGFzICBiZWVuICBtb2RpZmllZFxuIgoiICAgICAgICAgIGxhdGVyICB0aGFuICB0aGUgIGdpdmVuICB0aW1lIGFuZCBkYXRlLCBvciBvbmUgdGhhdCBoYXNcbiIKIiAgICAgICAgICBiZWVuIG1vZGlmaWVkIGJlZm9yZSB0aGF0IHRpbWUuIFRoZSBkYXRlIGV4cHJlc3Npb24gY2FuXG4iCiIgICAgICAgICAgYmUgYWxsIHNvcnRzIG9mIGRhdGUgc3RyaW5ncyBvciBpZiBpdCBkb2Vzbid0IG1hdGNoIGFueVxuIgoiICAgICAgICAgIGludGVybmFsIG9uZXMsIGl0IHRyaWVzIHRvIGdldCB0aGUgdGltZSAgZnJvbSAgYSAgZ2l2ZW5cbiIKIiAgICAgICAgICBmaWxlICBuYW1lICBpbnN0ZWFkISAgU2VlICB0aGUgR05VIGRhdGUoMSkgbWFuIHBhZ2UgZm9yXG4iCiIgICAgICAgICAgZGF0ZSBleHByZXNzaW9uIGRldGFpbHMuXG4iCiIgICAgICAgICAgU3RhcnQgdGhlIGRhdGUgZXhwcmVzc2lvbiB3aXRoIGEgZGFzaCAoLSkgIHRvICBtYWtlICBpdFxuIgoiICAgICAgICAgIHJlcXVlc3QgIGZvciAgYSAgZG9jdW1lbnQgIHRoYXQgaXMgb2xkZXIgdGhhbiB0aGUgZ2l2ZW5cbiIKIiAgICAgICAgICBkYXRlL3RpbWUsIGRlZmF1bHQgaXMgYSBkb2N1bWVudCB0aGF0IGlzIG5ld2VyIHRoYW4gdGhlXG4iCiIgICAgICAgICAgc3BlY2lmaWVkIGRhdGUvdGltZS5cbiIKIlxuIgoiICAgICAtMy8tLXNzbHYzXG4iCiIgICAgICAgICAgKEhUVFBTKSBGb3JjZXMgY3VybCB0byB1c2UgU1NMIHZlcnNpb24gMyB3aGVuIG5lZ290aWF0rVxuIgoiICAgICAgICAgIGluZyB3aXRoIGEgcmVtb3RlIFNTTCBzZXJ2ZXIuXG4iCiJcbiIKIiAgICAgLTIvLS1zc2x2MlxuIgoiICAgICAgICAgIChIVFRQUykgRm9yY2VzIGN1cmwgdG8gdXNlIFNTTCB2ZXJzaW9uIDIgd2hlbiBuZWdvdGlhdK1cbiIKIiAgICAgICAgICBpbmcgd2l0aCBhIHJlbW90ZSBTU0wgc2VydmVyLlxuIgoiXG4iCiIgICAgIC0jLy0tcHJvZ3Jlc3MtYmFyXG4iCiIgICAgICAgICAgTWFrZSAgY3VybCAgZGlzcGxheSAgcHJvZ3Jlc3MgaW5mb3JtYXRpb24gYXMgYSBwcm9ncmVzc1xuIgoiICAgICAgICAgIGJhciBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IHN0YXRpc3RpY3MuXG4iCiJcbiIKIiAgICAgLS1jcmxmXG4iCiIgICAgICAgICAgKEZUUCkgQ29udmVydCBMRiB0byBDUkxGICBpbiAgdXBsb2FkLiAgVXNlZnVsICBmb3IgIE1WU1xuIgoiICAgICAgICAgIChPUy8zOTApLlxuIgoiXG4iCiIgICAgIC0tc3RkZXJyIDxmaWxlPlxuIgoiICAgICAgICAgIFJlZGlyZWN0ICBhbGwgIHdyaXRlcyAgdG8gIHN0ZGVyciB0byB0aGUgc3BlY2lmaWVkIGZpbGVcbiIKIiAgICAgICAgICBpbnN0ZWFkLiBJZiB0aGUgZmlsZSBuYW1lIGlzIGEgcGxhaW4gJy0nLCBpdCBpcyBpbnN0ZWFkXG4iCiIgICAgICAgICAgd3JpdHRlbiB0byBzdGRvdXQuIFRoaXMgb3B0aW9uIGhhcyBubyBwb2ludCB3aGVuIHlvdSdyZVxuIgoiICAgICAgICAgIHVzaW5nIGEgc2hlbGwgd2l0aCBkZWNlbnQgcmVkaXJlY3RpbmcgY2FwYWJpbGl0aWVzLlxuIgoiXG4iCiJGSUxFU1xuIgoiICAgICB+Ly5jdXJscmNcbiIKIiAgICAgICAgICBEZWZhdWx0IGNvbmZpZyBmaWxlLlxuIgoiXG4iCiJFTlZJUk9OTUVOVFxuIgoiICAgICBIVFRQX1BST1hZIFtwcm90b2NvbDovL108aG9zdD5bOnBvcnRdXG4iCiIgICAgICAgICAgU2V0cyBwcm94eSBzZXJ2ZXIgdG8gdXNlIGZvciBIVFRQLlxuIgoiXG4iCiIgICAgIEhUVFBTX1BST1hZIFtwcm90b2NvbDovL108aG9zdD5bOnBvcnRdXG4iCiIgICAgICAgICAgU2V0cyBwcm94eSBzZXJ2ZXIgdG8gdXNlIGZvciBIVFRQUy5cbiIKIlxuIgoiICAgICBGVFBfUFJPWFkgW3Byb3RvY29sOi8vXTxob3N0Pls6cG9ydF1cbiIKIiAgICAgICAgICBTZXRzIHByb3h5IHNlcnZlciB0byB1c2UgZm9yIEZUUC5cbiIKIlxuIgoiICAgICBHT1BIRVJfUFJPWFkgW3Byb3RvY29sOi8vXTxob3N0Pls6cG9ydF1cbiIKIiAgICAgICAgICBTZXRzIHByb3h5IHNlcnZlciB0byB1c2UgZm9yIEdPUEhFUi5cbiIKIlxuIgoiICAgICBBTExfUFJPWFkgW3Byb3RvY29sOi8vXTxob3N0Pls6cG9ydF1cbiIKIiAgICAgICAgICBTZXRzIHByb3h5IHNlcnZlciB0byB1c2UgaWYgbm8gcHJvdG9jb2wtc3BlY2lmaWMgIHByb3h5XG4iCiIgICAgICAgICAgaXMgc2V0LlxuIgoiXG4iCiIgICAgIE5PX1BST1hZIDxjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBob3N0cz5cbiIKIiAgICAgICAgICBsaXN0IG9mIGhvc3QgbmFtZXMgdGhhdCBzaG91bGRuJ3QgZ28gdGhyb3VnaCBhbnkgcHJveHkuXG4iCiIgICAgICAgICAgSWYgc2V0IHRvIGEgYXN0ZXJpc2sgJyonIG9ubHksIGl0IG1hdGNoZXMgYWxsIGhvc3RzLlxuIgoiICAgICBDT0xVTU5TIDxpbnRlZ2VyPlxuIgoiICAgICAgICAgIFRoZSB3aWR0aCBvZiB0aGUgdGVybWluYWwuICBUaGlzIHZhcmlhYmxlIG9ubHkgIGFmZmVjdHNcbiIKIiAgICAgICAgICBjdXJsIHdoZW4gdGhlIC0tcHJvZ3Jlc3MtYmFyIG9wdGlvbiBpcyB1c2VkLlxuIgoiXG4iCiJFWElUIENPREVTXG4iCiIgICAgIFRoZXJlIGV4aXN0cyBhIGJ1bmNoIG9mIGRpZmZlcmVudCBlcnJvciBjb2RlcyBhbmQgdGhlaXIgY29yrVxuIgoiICAgICByZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzIHRoYXQgbWF5IGFwcGVhciBkdXJpbmcgYmFkICBjb25kaa1cbiIKIiAgICAgdGlvbnMuIEF0IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGluZywgdGhlIGV4aXQgY29kZXMgYXJlOlxuIgoiXG4iCiIgICAgIDEgICAgVW5zdXBwb3J0ZWQgcHJvdG9jb2wuIFRoaXMgYnVpbGQgb2YgY3VybCBoYXMgbm8gc3VwcG9ydFxuIgoiICAgICAgICAgIGZvciB0aGlzIHByb3RvY29sLlxuIgoiXG4iCiIgICAgIDIgICAgRmFpbGVkIHRvIGluaXRpYWxpemUuXG4iCiJcbiIKIiAgICAgMyAgICBVUkwgbWFsZm9ybWF0LiBUaGUgc3ludGF4IHdhcyBub3QgY29ycmVjdC5cbiIKIlxuIgoiICAgICA0ICAgIFVSTCB1c2VyIG1hbGZvcm1hdHRlZC4gVGhlIHVzZXItcGFydCBvZiB0aGUgVVJMICBzeW50YXhcbiIKIiAgICAgICAgICB3YXMgbm90IGNvcnJlY3QuXG4iCiJcbiIKIiAgICAgNSAgICBDb3VsZG4ndCAgcmVzb2x2ZSBwcm94eS4gVGhlIGdpdmVuIHByb3h5IGhvc3QgY291bGQgbm90XG4iCiIgICAgICAgICAgYmUgcmVzb2x2ZWQuXG4iCiJcbiIKIiAgICAgNiAgICBDb3VsZG4ndCByZXNvbHZlIGhvc3QuIFRoZSBnaXZlbiByZW1vdGUgIGhvc3QgIHdhcyAgbm90XG4iCiIgICAgICAgICAgcmVzb2x2ZWQuXG4iCiJcbiIKIiAgICAgNyAgICBGYWlsZWQgdG8gY29ubmVjdCB0byBob3N0LlxuIgoiXG4iCiIgICAgIDggICAgRlRQICB3ZWlyZCAgc2VydmVyICByZXBseS4gIFRoZSAgc2VydmVyICBzZW50IGRhdGEgY3VybFxuIgoiICAgICAgICAgIGNvdWxkbid0IHBhcnNlLlxuIgoiXG4iCiIgICAgIDkgICAgRlRQIGFjY2VzcyBkZW5pZWQuIFRoZSBzZXJ2ZXIgZGVuaWVkIGxvZ2luLlxuIgoiXG4iCiIgICAgIDEwICAgRlRQIHVzZXIvcGFzc3dvcmQgaW5jb3JyZWN0LiBFaXRoZXIgb25lICBvciAgYm90aCAgd2VyZVxuIgoiICAgICAgICAgIG5vdCBhY2NlcHRlZCBieSB0aGUgc2VydmVyLlxuIgoiXG4iCiIgICAgIDExICAgRlRQICB3ZWlyZCAgUEFTUyAgcmVwbHkuICBDdXJsIGNvdWxkbid0IHBhcnNlIHRoZSByZXBseVxuIgoiICAgICAgICAgIHNlbnQgdG8gdGhlIFBBU1MgcmVxdWVzdC5cbiIKIlxuIgoiICAgICAxMiAgIEZUUCB3ZWlyZCBVU0VSIHJlcGx5LiBDdXJsICBjb3VsZG4ndCAgcGFyc2UgIHRoZSAgcmVwbHlcbiIKIiAgICAgICAgICBzZW50IHRvIHRoZSBVU0VSIHJlcXVlc3QuXG4iCiJcbiIKIiAgICAgMTMgICBGVFAgIHdlaXJkICBQQVNWICByZXBseSwgIEN1cmwgY291bGRuJ3QgcGFyc2UgdGhlIHJlcGx5XG4iCiIgICAgICAgICAgc2VudCB0byB0aGUgUEFTViByZXF1ZXN0LlxuIgoiXG4iCiIgICAgIDE0ICAgRlRQIHdlaXJkIDIyNyBmb3JtYXkuIEN1cmwgY291bGRuJ3QgcGFyc2UgdGhlICAyMjctbGluZVxuIgoiICAgICAgICAgIHRoZSBzZXJ2ZXIgc2VudC5cbiIKIlxuIgoiICAgICAxNSAgIEZUUCBjYW4ndCBnZXQgaG9zdC4gQ291bGRuJ3QgcmVzb2x2ZSB0aGUgaG9zdCBJUCB3ZSBnb3RcbiIKIiAgICAgICAgICBpbiB0aGUgMjI3LWxpbmUuXG4iCiJcbiIKIiAgICAgMTYgICBGVFAgY2FuJ3QgcmVjb25uZWN0LiBDb3VsZG4ndCBjb25uZWN0IHRvICB0aGUgIGhvc3QgIHdlXG4iCiIgICAgICAgICAgZ290IGluIHRoZSAyMjctbGluZS5cbiIKIiAgICAgMTcgICBGVFAgIGNvdWxkbid0ICBzZXQgIGJpbmFyeS4gIENvdWxkbid0ICBjaGFuZ2UgIHRyYW5zZmVyXG4iCiIgICAgICAgICAgbWV0aG9kIHRvIGJpbmFyeS5cbiIKIlxuIgoiICAgICAxOCAgIFBhcnRpYWwgZmlsZS4gT25seSBhIHBhcnQgb2YgdGhlIGZpbGUgd2FzIHRyYW5zZmVyZWQuXG4iCiJcbiIKIiAgICAgMTkgICBGVFAgY291bGRuJ3QgUkVUUiBmaWxlLiBUaGUgUkVUUiBjb21tYW5kIGZhaWxlZC5cbiIKIlxuIgoiICAgICAyMCAgIEZUUCB3cml0ZSBlcnJvci4gVGhlIHRyYW5zZmVyIHdhcyByZXBvcnRlZCBiYWQgIGJ5ICB0aGVcbiIKIiAgICAgICAgICBzZXJ2ZXIuXG4iCiJcbiIKIiAgICAgMjEgICBGVFAgIHF1b3RlICBlcnJvci4gIEEgcXVvdGUgY29tbWFuZCByZXR1cm5lZCBlcnJvciBmcm9tXG4iCiIgICAgICAgICAgdGhlIHNlcnZlci5cbiIKIlxuIgoiICAgICAyMiAgIEhUVFAgbm90IGZvdW5kLiBUaGUgcmVxdWVzdGVkIHBhZ2Ugd2FzIG5vdCBmb3VuZC4gIFRoaXNcbiIKIiAgICAgICAgICByZXR1cm4gY29kZSBvbmx5IGFwcGVhcnMgaWYgLS1mYWlsIGlzIHVzZWQuXG4iCiJcbiIKIiAgICAgMjMgICBXcml0ZSAgZXJyb3IuICBDdXJsICBjb3VsZG4ndCAgd3JpdGUgIGRhdGEgIHRvICBhIGxvY2FsXG4iCiIgICAgICAgICAgZmlsZXN5c3RlbSBvciBzaW1pbGFyLlxuIgoiXG4iCiIgICAgIDI0ICAgTWFsZm9ybWF0IHVzZXIuIFVzZXIgbmFtZSBiYWRseSBzcGVjaWZpZWQuXG4iCiJcbiIKIiAgICAgMjUgICBGVFAgY291bGRuJ3QgU1RPUiBmaWxlLiAgVGhlICBzZXJ2ZXIgIGRlbmllZCAgdGhlICBTVE9SXG4iCiIgICAgICAgICAgb3BlcmF0aW9uLlxuIgoiXG4iCiIgICAgIDI2ICAgUmVhZCBlcnJvci4gVmFyaW91cyByZWFkaW5nIHByb2JsZW1zLlxuIgoiXG4iCiIgICAgIDI3ICAgT3V0IG9mIG1lbW9yeS4gQSBtZW1vcnkgYWxsb2NhdGlvbiByZXF1ZXN0IGZhaWxlZC5cbiIKIlxuIgoiICAgICAyOCAgIE9wZXJhdGlvbiAgdGltZW91dC4gIFRoZSAgc3BlY2lmaWVkIHRpbWUtb3V0IHBlcmlvZCB3YXNcbiIKIiAgICAgICAgICByZWFjaGVkIGFjY29yZGluZyB0byB0aGUgY29uZGl0aW9ucy5cbiIKIlxuIgoiICAgICAyOSAgIEZUUCBjb3VsZG4ndCBzZXQgQVNDSUkuIFRoZSBzZXJ2ZXIgcmV0dXJuZWQgYW4gIHVua25vd25cbiIKIiAgICAgICAgICByZXBseS5cbiIKIlxuIgoiICAgICAzMCAgIEZUUCBQT1JUIGZhaWxlZC4gVGhlIFBPUlQgY29tbWFuZCBmYWlsZWQuXG4iCiJcbiIKIiAgICAgMzEgICBGVFAgY291bGRuJ3QgdXNlIFJFU1QuIFRoZSBSRVNUIGNvbW1hbmQgZmFpbGVkLlxuIgoiXG4iCiIgICAgIDMyICAgRlRQICBjb3VsZG4ndCAgdXNlICBTSVpFLiAgVGhlIFNJWkUgY29tbWFuZCBmYWlsZWQuIFRoZVxuIgoiICAgICAgICAgIGNvbW1hbmQgaXMgYW4gZXh0ZW5zaW9uIHRvIHRoZSBvcmlnaW5hbCAgRlRQICBzcGVjICBSRkNcbiIKIiAgICAgICAgICA5NTkuXG4iCiJcbiIKIiAgICAgMzMgICBIVFRQIHJhbmdlIGVycm9yLiBUaGUgcmFuZ2UgXCJjb21tYW5kXCIgZGlkbid0IHdvcmsuXG4iCiJcbiIKIiAgICAgMzQgICBIVFRQICAgcG9zdCAgZXJyb3IuICBJbnRlcm5hbCAgcG9zdC1yZXF1ZXN0ICBnZW5lcmF0aW9uXG4iCiIgICAgICAgICAgZXJyb3IuXG4iCiJcbiIKIiAgICAgMzUgICBTU0wgY29ubmVjdCBlcnJvci4gVGhlIFNTTCBoYW5kc2hha2luZyBmYWlsZWQuXG4iCiJcbiIKIiAgICAgMzYgICBGVFAgYmFkIGRvd25sb2FkIHJlc3VtZS4gQ291bGRuJ3QgY29udGludWUgIGFuICBlYXJsaWVyXG4iCiIgICAgICAgICAgYWJvcnRlZCBkb3dubG9hZC5cbiIKIiAgICAgMzcgICBGSUxFICBjb3VsZG4ndCByZWFkIGZpbGUuIEZhaWxlZCB0byBvcGVuIHRoZSBmaWxlLiBQZXKtXG4iCiIgICAgICAgICAgbWlzc2lvbnM/XG4iCiJcbiIKIiAgICAgMzggICBMREFQIGNhbm5vdCBiaW5kLiBMREFQIGJpbmQgb3BlcmF0aW9uIGZhaWxlZC5cbiIKIlxuIgoiICAgICAzOSAgIExEQVAgc2VhcmNoIGZhaWxlZC5cbiIKIlxuIgoiICAgICA0MCAgIExpYnJhcnkgbm90IGZvdW5kLiBUaGUgTERBUCBsaWJyYXJ5IHdhcyBub3QgZm91bmQuXG4iCiJcbiIKIiAgICAgNDEgICBGdW5jdGlvbiBub3QgZm91bmQuIEEgcmVxdWlyZWQgTERBUCAgZnVuY3Rpb24gIHdhcyAgbm90XG4iCiIgICAgICAgICAgZm91bmQuXG4iCiJcbiIKIiAgICAgWFggICBUaGVyZSAgd2lsbCAgYXBwZWFyICBtb3JlICBlcnJvciAgY29kZXMgIGhlcmUgaW4gZnV0dXJlXG4iCiIgICAgICAgICAgcmVsZWFzZXMuIFRoZSBleGlzdGluZyBvbmVzIGFyZSBtZWFudCB0byBuZXZlciAgY2hhbmdlLlxuIgoiXG4iCiJCVUdTXG4iCiIgICAgIElmICB5b3UgZG8gZmluZCBhbnkgKG9yIGhhdmUgb3RoZXIgc3VnZ2VzdGlvbnMpLCBtYWlsIERhbmllbFxuIgoiICAgICBTdGVuYmVyZyA8RGFuaWVsLlN0ZW5iZXJnQGhheHgubnU+LlxuIgoiXG4iCiJBVVRIT1JTIC8gQ09OVFJJQlVUT1JTXG4iCiIgICAgICAtIERhbmllbCBTdGVuYmVyZyA8RGFuaWVsLlN0ZW5iZXJnQGhheHgubnU+XG4iCiIgICAgICAtIFJhZmFlbCBTYWd1bGEgPHNhZ3VsYUBpbmYudWZyZ3MuYnI+XG4iCiIgICAgICAtIFNhbXBvIEtlbGxvbWFraSA8c2FtcG9AaWtpLmZpPlxuIgoiICAgICAgLSBMaW5hcyBWZXBzdGFzIDxsaW5hc0BsaW5hcy5vcmc+XG4iCiIgICAgICAtIEJqb3JuIFJlZXNlIDxicmVlc2VAbWFpbDEuc3RvZmFuZXQuZGs+XG4iCiIgICAgICAtIEpvaGFuIEFuZGVyc29uIDxqb2hhbkBob21lbWFpbC5jb20+XG4iCiIgICAgICAtIEtqZWxsIEVyaWNzb24gPEtqZWxsLkVyaWNzb25Ac3RoLmZyb250ZWMuc2U+XG4iCiIgICAgICAtIFRyb3kgRW5nZWwgPHRlbmdlbEBzb25pYy5uZXQ+XG4iCiIgICAgICAtIFJ5YW4gTmVsc29uIDxyeWFuQGluY2guY29tPlxuIgoiICAgICAgLSBCam9ybiBTdGVuYmVyZyA8Qmpvcm4uU3RlbmJlcmdAc3RoLmZyb250ZWMuc2U+XG4iCiIgICAgICAtIEFuZ3VzIE1hY2theSA8YW1hY2theUBndXMubWwub3JnPlxuIgoiICAgICAgLSBFcmljIFlvdW5nIDxlYXlAY3J5cHRzb2Z0LmNvbT5cbiIKIiAgICAgIC0gU2ltb24gRGljayA8c2ltb25kQHRvdGFsbHkuaXJyZWxldmFudC5vcmc+XG4iCiIgICAgICAtIE9yZW4gVGlyb3NoIDxvcmVuQG1vbnR5Lmhpc2hvbWUubmV0PlxuIgoiICAgICAgLSBTdGV2ZW4gRy4gSm9obnNvbiA8c3RldmVuakBhbHVtLm1pdC5lZHU+XG4iCiIgICAgICAtIEdpbGJlcnQgUmFtaXJleiBKci4gPGdyYW1AdmVyZGljdC51dGhzY3NhLmVkdT5cbiIKIiAgICAgIC0gQW5kculzIEdhcmPtYSA8b3JuYWx1eEByZWRlc3RiLmVzPlxuIgoiICAgICAgLSBEb3VnbGFzIEUuIFdlZ3NjaGVpZCA8d2Vnc2NkQHdoaXJscG9vbC5jb20+XG4iCiIgICAgICAtIE1hcmsgQnV0bGVyIDxidXRsZXJtQHhtaXNzaW9uLmNvbT5cbiIKIiAgICAgIC0gRXJpYyBUaGVsaW4gPGVyaWNAZ2VuZXJhdGlvbi1pLmNvbT5cbiIKIiAgICAgIC0gTWFyYyBCb3VjaGVyIDxtYXJjQG1ic2kuY2E+XG4iCiIgICAgICAtIEdyZWcgT251ZmVyIDxHcmVnLk9udWZlckBFbmcuU3VuLkNPTT5cbiIKIiAgICAgIC0gRG91ZyBLYXVmbWFuIDxka2F1Zm1hbkByYWh1bC5uZXQ+XG4iCiIgICAgICAtIERhdmlkIEVyaWtzc29uIDxkYXZpZEAyZ29vZC5jb20+XG4iCiIgICAgICAtIFJhbHBoIEJlY2ttYW5uIDxyYWJlQHVuaS1wYWRlcmJvcm4uZGU+XG4iCiIgICAgICAtIFQuIFlhbWFkYSA8dGFpQGltYXN5Lm9yLmpwPlxuIgoiICAgICAgLSBMYXJzIEouIEFhcyA8bGFyc2FAc2ltLm5vPlxuIgoiICAgICAgLSBK9nJuIEhhcnRyb3RoIDxKb2Vybi5IYXJ0cm90aEB0ZWxla29tLmRlPlxuIgoiICAgICAgLSBNYXR0aGV3IENsYXJrZSA8Y2xhbWF0QHZhbi5tYXZlcy5jYT5cbiIKIiAgICAgIC0gTGludXMgTmllbHNlbiA8TGludXMuTmllbHNlbkBoYXh4Lm51PlxuIgoiICAgICAgLSBGZWxpeCB2b24gTGVpdG5lciA8ZmVsaXhAY29udmVyZ2VuY2UuZGU+XG4iCiIgICAgICAtIERhbiBaaXR0ZXIgPGR6aXR0ZXJAeml0dGVyLm5ldD5cbiIKIiAgICAgIC0gSm9uZ2tpIFN1d2FuZGkgPEpvbmdraS5TdXdhbmRpQGVuZy5zdW4uY29tPlxuIgoiICAgICAgLSBDaHJpcyBNYWx0YnkgPGNocmlzQGF1cmVtYS5jb20+XG4iCiIgICAgICAtIFJvbiBaYXBwIDxyemFwcGVyQHlhaG9vLmNvbT5cbiIKIiAgICAgIC0gUGF1bCBNYXJxdWlzIDxwbWFycXVpc0BpbmFtZS5jb20+XG4iCiIgICAgICAtIEVsbGlzIFByaXRjaGFyZCA8ZWxsaXNAY2l0cmlhLmNvbT5cbiIKIiAgICAgIC0gRGFtaWVuIEFkYW50IDxkYW1zQHVzYS5uZXQ+XG4iCiIgICAgICAtIENocmlzIDxjYmF5bGlzc0Bjc2MuY29tZT5cbiIKIlxuIgoiV1dXXG4iCiIgICAgIGh0dHA6Ly9jdXJsLmhheHgubnVcbiIKIlxuIgoiRlRQXG4iCiIgICAgIGZ0cDovL2Z0cC5zdW5ldC5zZS9wdWIvd3d3L3V0aWxpdGllcy9jdXJsL1xuIgoiXG4iCiJTRUUgQUxTT1xuIgoiICAgICBmdHAoMSksIHdnZXQoMSksIHNuYXJmKDEpXG4iCiJcbiIKIkxBVEVTVCBWRVJTSU9OXG4iCiJcbiIKIiAgWW91IGFsd2F5cyBmaW5kIG5ld3MgYWJvdXQgd2hhdCdzIGdvaW5nIG9uIGFzIHdlbGwgYXMgdGhlIGxhdGVzdCB2ZXJzaW9uc1xuIgoiICBmcm9tIHRoZSBjdXJsIHdlYiBwYWdlcywgbG9jYXRlZCBhdDpcbiIKIlxuIgoiICAgICAgICBodHRwOi8vY3VybC5oYXh4Lm51XG4iCiJcbiIKIlNJTVBMRSBVU0FHRVxuIgoiXG4iCiIgIEdldCB0aGUgbWFpbiBwYWdlIGZyb20gbmV0c2NhcGUncyB3ZWItc2VydmVyOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgaHR0cDovL3d3dy5uZXRzY2FwZS5jb20vXG4iCiJcbiIKIiAgR2V0IHRoZSByb290IFJFQURNRSBmaWxlIGZyb20gZnVuZXQncyBmdHAtc2VydmVyOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgZnRwOi8vZnRwLmZ1bmV0LmZpL1JFQURNRVxuIgoiXG4iCiIgIEdldCBhIGdvcGhlciBkb2N1bWVudCBmcm9tIGZ1bmV0J3MgZ29waGVyIHNlcnZlcjpcbiIKIlxuIgoiICAgICAgICBjdXJsIGdvcGhlcjovL2dvcGhlci5mdW5ldC5maVxuIgoiXG4iCiIgIEdldCBhIHdlYiBwYWdlIGZyb20gYSBzZXJ2ZXIgdXNpbmcgcG9ydCA4MDAwOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgaHR0cDovL3d3dy53ZWlyZHNlcnZlci5jb206ODAwMC9cbiIKIlxuIgoiICBHZXQgYSBsaXN0IG9mIHRoZSByb290IGRpcmVjdG9yeSBvZiBhbiBGVFAgc2l0ZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIGZ0cDovL2Z0cC5mdHMuZnJvbnRlYy5zZS9cbiIKIlxuIgoiICBHZXQgdGhlIGRlZmluaXRpb24gb2YgY3VybCBmcm9tIGEgZGljdGlvbmFyeTpcbiIKIlxuIgoiICAgICAgICBjdXJsIGRpY3Q6Ly9kaWN0Lm9yZy9tOmN1cmxcbiIKIlxuIgoiRE9XTkxPQUQgVE8gQSBGSUxFXG4iCiJcbiIKIiAgR2V0IGEgd2ViIHBhZ2UgYW5kIHN0b3JlIGluIGEgbG9jYWwgZmlsZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1vIHRoYXRwYWdlLmh0bWwgaHR0cDovL3d3dy5uZXRzY2FwZS5jb20vXG4iCiJcbiIKIiAgR2V0IGEgd2ViIHBhZ2UgYW5kIHN0b3JlIGluIGEgbG9jYWwgZmlsZSwgbWFrZSB0aGUgbG9jYWwgZmlsZSBnZXQgdGhlIG5hbWVcbiIKIiAgb2YgdGhlIHJlbW90ZSBkb2N1bWVudCAoaWYgbm8gZmlsZSBuYW1lIHBhcnQgaXMgc3BlY2lmaWVkIGluIHRoZSBVUkwsIHRoaXNcbiIKIiAgd2lsbCBmYWlsKTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1PIGh0dHA6Ly93d3cubmV0c2NhcGUuY29tL2luZGV4Lmh0bWxcbiIKIlxuIgoiVVNJTkcgUEFTU1dPUkRTXG4iCiJcbiIKIiBGVFBcbiIKIlxuIgoiICAgVG8gZnRwIGZpbGVzIHVzaW5nIG5hbWUrcGFzc3dkLCBpbmNsdWRlIHRoZW0gaW4gdGhlIFVSTCBsaWtlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgZnRwOi8vbmFtZTpwYXNzd2RAbWFjaGluZS5kb21haW46cG9ydC9mdWxsL3BhdGgvdG8vZmlsZVxuIgoiXG4iCiIgICBvciBzcGVjaWZ5IHRoZW0gd2l0aCB0aGUgLXUgZmxhZyBsaWtlXG4iCiJcbiIKIiAgICAgICAgY3VybCAtdSBuYW1lOnBhc3N3ZCBmdHA6Ly9tYWNoaW5lLmRvbWFpbjpwb3J0L2Z1bGwvcGF0aC90by9maWxlXG4iCiJcbiIKIiBIVFRQXG4iCiJcbiIKIiAgIFRoZSBIVFRQIFVSTCBkb2Vzbid0IHN1cHBvcnQgdXNlciBhbmQgcGFzc3dvcmQgaW4gdGhlIFVSTCBzdHJpbmcuIEN1cmxcbiIKIiAgIGRvZXMgc3VwcG9ydCB0aGF0IGFueXdheSB0byBwcm92aWRlIGEgZnRwLXN0eWxlIGludGVyZmFjZSBhbmQgdGh1cyB5b3UgY2FuXG4iCiIgICBwaWNrIGEgZmlsZSBsaWtlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgaHR0cDovL25hbWU6cGFzc3dkQG1hY2hpbmUuZG9tYWluL2Z1bGwvcGF0aC90by9maWxlXG4iCiJcbiIKIiAgIG9yIHNwZWNpZnkgdXNlciBhbmQgcGFzc3dvcmQgc2VwYXJhdGVseSBsaWtlIGluXG4iCiJcbiIKIiAgICAgICAgY3VybCAtdSBuYW1lOnBhc3N3ZCBodHRwOi8vbWFjaGluZS5kb21haW4vZnVsbC9wYXRoL3RvL2ZpbGVcbiIKIlxuIgoiICAgTk9URSEgU2luY2UgSFRUUCBVUkxzIGRvbid0IHN1cHBvcnQgdXNlciBhbmQgcGFzc3dvcmQsIHlvdSBjYW4ndCB1c2UgdGhhdFxuIgoiICAgc3R5bGUgd2hlbiB1c2luZyBDdXJsIHZpYSBhIHByb3h5LiBZb3UgX211c3RfIHVzZSB0aGUgLXUgc3R5bGUgZmV0Y2hcbiIKIiAgIGR1cmluZyBzdWNoIGNpcmN1bXN0YW5jZXMuXG4iCiJcbiIKIiBIVFRQU1xuIgoiXG4iCiIgICBQcm9iYWJseSBtb3N0IGNvbW1vbmx5IHVzZWQgd2l0aCBwcml2YXRlIGNlcnRpZmljYXRlcywgYXMgZXhwbGFpbmVkIGJlbG93LlxuIgoiXG4iCiIgR09QSEVSXG4iCiJcbiIKIiAgIEN1cmwgZmVhdHVyZXMgbm8gcGFzc3dvcmQgc3VwcG9ydCBmb3IgZ29waGVyLlxuIgoiXG4iCiJQUk9YWVxuIgoiXG4iCiIgR2V0IGFuIGZ0cCBmaWxlIHVzaW5nIGEgcHJveHkgbmFtZWQgbXktcHJveHkgdGhhdCB1c2VzIHBvcnQgODg4OlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXggbXktcHJveHk6ODg4IGZ0cDovL2Z0cC5sZWFjaHNpdGUuY29tL1JFQURNRVxuIgoiXG4iCiIgR2V0IGEgZmlsZSBmcm9tIGEgSFRUUCBzZXJ2ZXIgdGhhdCByZXF1aXJlcyB1c2VyIGFuZCBwYXNzd29yZCwgdXNpbmcgdGhlXG4iCiIgc2FtZSBwcm94eSBhcyBhYm92ZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC11IHVzZXI6cGFzc3dkIC14IG15LXByb3h5Ojg4OCBodHRwOi8vd3d3LmdldC50aGlzL1xuIgoiXG4iCiIgU29tZSBwcm94aWVzIHJlcXVpcmUgc3BlY2lhbCBhdXRoZW50aWNhdGlvbi4gU3BlY2lmeSBieSB1c2luZyAtVSBhcyBhYm92ZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1VIHVzZXI6cGFzc3dkIC14IG15LXByb3h5Ojg4OCBodHRwOi8vd3d3LmdldC50aGlzL1xuIgoiXG4iCiIgU2VlIGFsc28gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBDdXJsIHN1cHBvcnQgdGhhdCBvZmZlciBmdXJ0aGVyIHByb3h5XG4iCiIgY29udHJvbC5cbiIKIlxuIgoiUkFOR0VTXG4iCiJcbiIKIiAgV2l0aCBIVFRQIDEuMSBieXRlLXJhbmdlcyB3ZXJlIGludHJvZHVjZWQuIFVzaW5nIHRoaXMsIGEgY2xpZW50IGNhbiByZXF1ZXN0XG4iCiIgIHRvIGdldCBvbmx5IG9uZSBvciBtb3JlIHN1YnBhcnRzIG9mIGEgc3BlY2lmaWVkIGRvY3VtZW50LiBDdXJsIHN1cHBvcnRzXG4iCiIgIHRoaXMgd2l0aCB0aGUgLXIgZmxhZy5cbiIKIlxuIgoiICBHZXQgdGhlIGZpcnN0IDEwMCBieXRlcyBvZiBhIGRvY3VtZW50OlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXIgMC05OSBodHRwOi8vd3d3LmdldC50aGlzL1xuIgoiXG4iCiIgIEdldCB0aGUgbGFzdCA1MDAgYnl0ZXMgb2YgYSBkb2N1bWVudDpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1yIC01MDAgaHR0cDovL3d3dy5nZXQudGhpcy9cbiIKIlxuIgoiICBDdXJsIGFsc28gc3VwcG9ydHMgc2ltcGxlIHJhbmdlcyBmb3IgRlRQIGZpbGVzIGFzIHdlbGwuIFRoZW4geW91IGNhbiBvbmx5XG4iCiIgIHNwZWNpZnkgc3RhcnQgYW5kIHN0b3AgcG9zaXRpb24uXG4iCiJcbiIKIiAgR2V0IHRoZSBmaXJzdCAxMDAgYnl0ZXMgb2YgYSBkb2N1bWVudCB1c2luZyBGVFA6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtciAwLTk5IGZ0cDovL3d3dy5nZXQudGhpcy9SRUFETUUgIFxuIgoiXG4iCiJVUExPQURJTkdcbiIKIlxuIgoiIEZUUFxuIgoiXG4iCiIgICBVcGxvYWQgYWxsIGRhdGEgb24gc3RkaW4gdG8gYSBzcGVjaWZpZWQgZnRwIHNpdGU6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtdCBmdHA6Ly9mdHAudXBsb2FkLmNvbS9teWZpbGVcbiIKIlxuIgoiICAgVXBsb2FkIGRhdGEgZnJvbSBhIHNwZWNpZmllZCBmaWxlLCBsb2dpbiB3aXRoIHVzZXIgYW5kIHBhc3N3b3JkOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLVQgdXBsb2FkZmlsZSAtdSB1c2VyOnBhc3N3ZCBmdHA6Ly9mdHAudXBsb2FkLmNvbS9teWZpbGVcbiIKIlxuIgoiICAgVXBsb2FkIGEgbG9jYWwgZmlsZSB0byB0aGUgcmVtb3RlIHNpdGUsIGFuZCB1c2UgdGhlIGxvY2FsIGZpbGUgbmFtZSByZW1vdGVcbiIKIiAgIHRvbzpcbiIKIiBcbiIKIiAgICAgICAgY3VybCAtVCB1cGxvYWRmaWxlIC11IHVzZXI6cGFzc3dkIGZ0cDovL2Z0cC51cGxvYWQuY29tL1xuIgoiXG4iCiIgICBOT1RFOiBDdXJsIGlzIG5vdCBjdXJyZW50bHkgc3VwcG9yaW5nIGZ0cCB1cGxvYWQgdGhyb3VnaCBhIHByb3h5ISBUaGUgcmVhc29uXG4iCiIgICBmb3IgdGhpcyBpcyBzaW1wbHkgdGhhdCBwcm94aWVzIGFyZSBzZWxkb21seSBjb25maWd1cmVkIHRvIGFsbG93IHRoaXMgYW5kXG4iCiIgICB0aGF0IG5vIGF1dGhvciBoYXMgc3VwcGxpZWQgY29kZSB0aGF0IG1ha2VzIGl0IHBvc3NpYmxlIVxuIgoiXG4iCiIgSFRUUFxuIgoiXG4iCiIgICBVcGxvYWQgYWxsIGRhdGEgb24gc3RkaW4gdG8gYSBzcGVjaWZpZWQgaHR0cCBzaXRlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXQgaHR0cDovL3d3dy51cGxvYWQuY29tL215ZmlsZVxuIgoiXG4iCiIgICBOb3RlIHRoYXQgdGhlIGh0dHAgc2VydmVyIG11c3QndmUgYmVlbiBjb25maWd1cmVkIHRvIGFjY2VwdCBQVVQgYmVmb3JlIHRoaXNcbiIKIiAgIGNhbiBiZSBkb25lIHN1Y2Nlc3NmdWxseS5cbiIKIlxuIgoiICAgRm9yIG90aGVyIHdheXMgdG8gZG8gaHR0cCBkYXRhIHVwbG9hZCwgc2VlIHRoZSBQT1NUIHNlY3Rpb24gYmVsb3cuXG4iCiJcbiIKIlZFUkJPU0UgLyBERUJVR1xuIgoiXG4iCiIgIElmIGN1cmwgZmFpbHMgd2hlcmUgaXQgaXNuJ3Qgc3VwcG9zZWQgdG8sIGlmIHRoZSBzZXJ2ZXJzIGRvbid0IGxldCB5b3VcbiIKIiAgaW4sIGlmIHlvdSBjYW4ndCB1bmRlcnN0YW5kIHRoZSByZXNwb25zZXM6IHVzZSB0aGUgLXYgZmxhZyB0byBnZXQgVkVSQk9TRVxuIgoiICBmZXRjaGluZy4gQ3VybCB3aWxsIG91dHB1dCBsb3RzIG9mIGluZm8gYW5kIGFsbCBkYXRhIGl0IHNlbmRzIGFuZFxuIgoiICByZWNlaXZlcyBpbiBvcmRlciB0byBsZXQgdGhlIHVzZXIgc2VlIGFsbCBjbGllbnQtc2VydmVyIGludGVyYWN0aW9uLlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXYgZnRwOi8vZnRwLnVwbG9hZC5jb20vXG4iCiJcbiIKIkRFVEFJTEVEIElORk9STUFUSU9OXG4iCiJcbiIKIiAgRGlmZmVyZW50IHByb3RvY29scyBwcm92aWRlIGRpZmZlcmVudCB3YXlzIG9mIGdldHRpbmcgZGV0YWlsZWQgaW5mb3JtYXRpb25cbiIKIiAgYWJvdXQgc3BlY2lmaWMgZmlsZXMvZG9jdW1lbnRzLiBUbyBnZXQgY3VybCB0byBzaG93IGRldGFpbGVkIGluZm9ybWF0aW9uXG4iCiIgIGFib3V0IGEgc2luZ2xlIGZpbGUsIHlvdSBzaG91bGQgdXNlIC1JLy0taGVhZCBvcHRpb24uIEl0IGRpc3BsYXlzIGFsbFxuIgoiICBhdmFpbGFibGUgaW5mbyBvbiBhIHNpbmdsZSBmaWxlIGZvciBIVFRQIGFuZCBGVFAuIFRoZSBIVFRQIGluZm9ybWF0aW9uIGlzIGFcbiIKIiAgbG90IG1vcmUgZXh0ZW5zaXZlLlxuIgoiXG4iCiIgIEZvciBIVFRQLCB5b3UgY2FuIGdldCB0aGUgaGVhZGVyIGluZm9ybWF0aW9uICh0aGUgc2FtZSBhcyAtSSB3b3VsZCBzaG93KVxuIgoiICBzaG93biBiZWZvcmUgdGhlIGRhdGEgYnkgdXNpbmcgLWkvLS1pbmNsdWRlLiBDdXJsIHVuZGVyc3RhbmRzIHRoZVxuIgoiICAtRC8tLWR1bXAtaGVhZGVyIG9wdGlvbiB3aGVuIGdldHRpbmcgZmlsZXMgZnJvbSBib3RoIEZUUCBhbmQgSFRUUCwgYW5kIGl0XG4iCiIgIHdpbGwgdGhlbiBzdG9yZSB0aGUgaGVhZGVycyBpbiB0aGUgc3BlY2lmaWVkIGZpbGUuXG4iCiJcbiIKIiAgU3RvcmUgdGhlIEhUVFAgaGVhZGVycyBpbiBhIHNlcGFyYXRlIGZpbGU6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtLWR1bXAtaGVhZGVyIGhlYWRlcnMudHh0IGN1cmwuaGF4eC5udVxuIgoiXG4iCiIgIE5vdGUgdGhhdCBoZWFkZXJzIHN0b3JlZCBpbiBhIHNlcGFyYXRlIGZpbGUgY2FuIGJlIHZlcnkgdXNlZnVsIGF0IGEgbGF0ZXJcbiIKIiAgdGltZSBpZiB5b3Ugd2FudCBjdXJsIHRvIHVzZSBjb29raWVzIHNlbnQgYnkgdGhlIHNlcnZlci4gTW9yZSBhYm91dCB0aGF0IGluXG4iCiIgIHRoZSBjb29raWVzIHNlY3Rpb24uXG4iCiJcbiIKIlBPU1QgKEhUVFApXG4iCiJcbiIKIiAgSXQncyBlYXN5IHRvIHBvc3QgZGF0YSB1c2luZyBjdXJsLiBUaGlzIGlzIGRvbmUgdXNpbmcgdGhlIC1kIDxkYXRhPlxuIgoiICBvcHRpb24uICBUaGUgcG9zdCBkYXRhIG11c3QgYmUgdXJsZW5jb2RlZC5cbiIKIlxuIgoiICBQb3N0IGEgc2ltcGxlIFwibmFtZVwiIGFuZCBcInBob25lXCIgZ3Vlc3Rib29rLlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLWQgXCJuYW1lPVJhZmFlbCUyMFNhZ3VsYSZwaG9uZT0zMzIwNzgwXCIgXFxcbiIKIiAgICAgICAgICAgICAgICBodHRwOi8vd3d3LndoZXJlLmNvbS9ndWVzdC5jZ2lcbiIKIlxuIgoiICBXaGlsZSAtZCB1c2VzIHRoZSBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQgbWltZS10eXBlLCBnZW5lcmFsbHlcbiIKIiAgdW5kZXJzdG9vZCBieSBDR0kncyBhbmQgc2ltaWxhciwgY3VybCBhbHNvIHN1cHBvcnRzIHRoZSBtb3JlIGNhcGFibGVcbiIKIiAgbXVsdGlwYXJ0L2Zvcm0tZGF0YSB0eXBlLiBUaGlzIGxhdHRlciB0eXBlIHN1cHBvcnRzIHRoaW5ncyBsaWtlIGZpbGUgdXBsb2FkLlxuIgoiXG4iCiIgIC1GIGFjY2VwdHMgcGFyYW1ldGVycyBsaWtlIC1GIFwibmFtZT1jb250ZW50c1wiLiBJZiB5b3Ugd2FudCB0aGUgY29udGVudHMgdG9cbiIKIiAgYmUgcmVhZCBmcm9tIGEgZmlsZSwgdXNlIDxAZmlsZW5hbWU+IGFzIGNvbnRlbnRzLiBXaGVuIHNwZWNpZnlpbmcgYSBmaWxlLFxuIgoiICB5b3UgY2FuIGFsc28gc3BlY2lmeSB3aGljaCBjb250ZW50IHR5cGUgdGhlIGZpbGUgaXMsIGJ5IGFwcGVuZGluZ1xuIgoiICAnO3R5cGU9PG1pbWUgdHlwZT4nIHRvIHRoZSBmaWxlIG5hbWUuIFlvdSBjYW4gYWxzbyBwb3N0IGNvbnRlbnRzIG9mIHNldmVyYWxcbiIKIiAgZmlsZXMgaW4gb25lIGZpZWxkLiBTbyB0aGF0IHRoZSBmaWVsZCBuYW1lICdjb29sZmlsZXMnIGNhbiBiZSBzZW50IHRocmVlXG4iCiIgIGZpbGVzIHdpdGggZGlmZmVyZW50IGNvbnRlbnQgdHlwZXMgaW4gYSBtYW5uZXIgc2ltaWxhciB0bzpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1GIFwiY29vbGZpbGVzPUBmaWwxLmdpZjt0eXBlPWltYWdlL2dpZixmaWwyLnR4dCxmaWwzLmh0bWxcIiBcXFxuIgoiICAgICAgICBodHRwOi8vd3d3LnBvc3QuY29tL3Bvc3RpdC5jZ2lcbiIKIlxuIgoiICBJZiBjb250ZW50LXR5cGUgaXMgbm90IHNwZWNpZmllZCwgY3VybCB3aWxsIHRyeSB0byBndWVzcyBmcm9tIHRoZSBleHRlbnNpb25cbiIKIiAgKGl0IG9ubHkga25vd3MgYSBmZXcpLCBvciB1c2UgdGhlIHByZXZpb3VzbHkgc3BlY2lmaWVkIHR5cGUgKGZyb20gYW4gZWFybGllclxuIgoiICBmaWxlIGlmIHNldmVyYWwgZmlsZXMgYXJlIHNwZWNpZmllZCBpbiBhIGxpc3QpIG9yIGZpbmFsbHkgdXNpbmcgdGhlIGRlZmF1bHRcbiIKIiAgdHlwZSAndGV4dC9wbGFpbicuXG4iCiJcbiIKIiAgRW11bGF0ZSBhIGZpbGwtaW4gZm9ybSB3aXRoIC1GLiBMZXQncyBzYXkgeW91IGZpbGwgaW4gdGhyZWUgZmllbGRzIGluIGFcbiIKIiAgZm9ybS4gT25lIGZpZWxkIGlzIGEgZmlsZSBuYW1lIHdoaWNoIHRvIHBvc3QsIG9uZSBmaWVsZCBpcyB5b3VyIG5hbWUgYW5kIG9uZVxuIgoiICBmaWVsZCBpcyBhIGZpbGUgZGVzY3JpcHRpb24uIFdlIHdhbnQgdG8gcG9zdCB0aGUgZmlsZSB3ZSBoYXZlIHdyaXR0ZW4gbmFtZWRcbiIKIiAgXCJjb29sdGV4dC50eHRcIi4gVG8gbGV0IGN1cmwgZG8gdGhlIHBvc3Rpbmcgb2YgdGhpcyBkYXRhIGluc3RlYWQgb2YgeW91clxuIgoiICBmYXZvdXJpdGUgYnJvd3NlciwgeW91IGhhdmUgdG8gY2hlY2sgb3V0IHRoZSBIVE1MIG9mIHRoZSBmb3JtIHBhZ2UgdG8gZ2V0IHRvXG4iCiIgIGtub3cgdGhlIG5hbWVzIG9mIHRoZSBpbnB1dCBmaWVsZHMuIEluIG91ciBleGFtcGxlLCB0aGUgaW5wdXQgZmllbGQgbmFtZXMgYXJlXG4iCiIgICdmaWxlJywgJ3lvdXJuYW1lJyBhbmQgJ2ZpbGVkZXNjcmlwdGlvbicuXG4iCiJcbiIKIiAgICAgICAgY3VybCAtRiBcImZpbGU9QGNvb2x0ZXh0LnR4dFwiIC1GIFwieW91cm5hbWU9RGFuaWVsXCIgXFxcbiIKIiAgICAgICAgICAgICAtRiBcImZpbGVkZXNjcmlwdGlvbj1Db29sIHRleHQgZmlsZSB3aXRoIGNvb2wgdGV4dCBpbnNpZGVcIiBcXFxuIgoiICAgICAgICAgICAgIGh0dHA6Ly93d3cucG9zdC5jb20vcG9zdGl0LmNnaVxuIgoiXG4iCiIgIFNvLCB0byBzZW5kIHR3byBmaWxlcyBpbiBvbmUgcG9zdCB5b3UgY2FuIGRvIGl0IGluIHR3byB3YXlzOlxuIgoiXG4iCiIgIDEuIFNlbmQgbXVsdGlwbGUgZmlsZXMgaW4gYSBzaW5nbGUgXCJmaWVsZFwiIHdpdGggYSBzaW5nbGUgZmllbGQgbmFtZTpcbiIKIiBcbiIKIiAgICAgICAgY3VybCAtRiBcInBpY3R1cmVzPUBkb2cuZ2lmLGNhdC5naWZcIiBcbiIKIiBcbiIKIiAgMi4gU2VuZCB0d28gZmllbGRzIHdpdGggdHdvIGZpZWxkIG5hbWVzOiBcbiIKIlxuIgoiICAgICAgICBjdXJsIC1GIFwiZG9jcGljdHVyZT1AZG9nLmdpZlwiIC1GIFwiY2F0cGljdHVyZT1AY2F0LmdpZlwiIFxuIgoiXG4iCiJSRUZFUkVSXG4iCiJcbiIKIiAgQSBIVFRQIHJlcXVlc3QgaGFzIHRoZSBvcHRpb24gdG8gaW5jbHVkZSBpbmZvcm1hdGlvbiBhYm91dCB3aGljaCBhZGRyZXNzXG4iCiIgIHRoYXQgcmVmZXJyZWQgdG8gYWN0dWFsIHBhZ2UsIGFuZCBjdXJsIGFsbG93cyB0aGUgdXNlciB0byBzcGVjaWZ5IHRoYXRcbiIKIiAgcmVmZXJyZXIgdG8gZ2V0IHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lLiBJdCBpcyBlc3BlY2lhbGx5IHVzZWZ1bCB0b1xuIgoiICBmb29sIG9yIHRyaWNrIHN0dXBpZCBzZXJ2ZXJzIG9yIENHSSBzY3JpcHRzIHRoYXQgcmVseSBvbiB0aGF0IGluZm9ybWF0aW9uXG4iCiIgIGJlaW5nIGF2YWlsYWJsZSBvciBjb250YWluIGNlcnRhaW4gZGF0YS5cbiIKIlxuIgoiICAgICAgICBjdXJsIC1lIHd3dy5jb29sc2l0ZS5jb20gaHR0cDovL3d3dy5zaG93bWUuY29tL1xuIgoiXG4iCiJVU0VSIEFHRU5UXG4iCiJcbiIKIiAgQSBIVFRQIHJlcXVlc3QgaGFzIHRoZSBvcHRpb24gdG8gaW5jbHVkZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYnJvd3NlclxuIgoiICB0aGF0IGdlbmVyYXRlZCB0aGUgcmVxdWVzdC4gQ3VybCBhbGxvd3MgaXQgdG8gYmUgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kXG4iCiIgIGxpbmUuIEl0IGlzIGVzcGVjaWFsbHkgdXNlZnVsIHRvIGZvb2wgb3IgdHJpY2sgc3R1cGlkIHNlcnZlcnMgb3IgQ0dJXG4iCiIgIHNjcmlwdHMgdGhhdCBvbmx5IGFjY2VwdCBjZXJ0YWluIGJyb3dzZXJzLlxuIgoiXG4iCiIgIEV4YW1wbGU6XG4iCiJcbiIKIiAgY3VybCAtQSAnTW96aWxsYS8zLjAgKFdpbjk1OyBJKScgaHR0cDovL3d3dy5uYXRpb25zYmFuay5jb20vXG4iCiJcbiIKIiAgT3RoZXIgY29tbW9uIHN0cmluZ3M6XG4iCiIgICAgJ01vemlsbGEvMy4wIChXaW45NTsgSSknICAgICBOZXRzY2FwZSBWZXJzaW9uIDMgZm9yIFdpbmRvd3MgOTVcbiIKIiAgICAnTW96aWxsYS8zLjA0IChXaW45NTsgVSknICAgIE5ldHNjYXBlIFZlcnNpb24gMyBmb3IgV2luZG93cyA5NVxuIgoiICAgICdNb3ppbGxhLzIuMDIgKE9TLzI7IFUpJyAgICAgTmV0c2NhcGUgVmVyc2lvbiAyIGZvciBPUy8yXG4iCiIgICAgJ01vemlsbGEvNC4wNCBbZW5dIChYMTE7IFU7IEFJWCA0LjI7IE5hdiknICAgICAgICAgICBOUyBmb3IgQUlYXG4iCiIgICAgJ01vemlsbGEvNC4wNSBbZW5dIChYMTE7IFU7IExpbnV4IDIuMC4zMiBpNTg2KScgICAgICBOUyBmb3IgTGludXhcbiIKIlxuIgoiICBOb3RlIHRoYXQgSW50ZXJuZXQgRXhwbG9yZXIgdHJpZXMgaGFyZCB0byBiZSBjb21wYXRpYmxlIGluIGV2ZXJ5IHdheTpcbiIKIiAgICAnTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNC4wMTsgV2luZG93cyA5NSknICAgIE1TSUUgZm9yIFc5NVxuIgoiXG4iCiIgIE1vemlsbGEgaXMgbm90IHRoZSBvbmx5IHBvc3NpYmxlIFVzZXItQWdlbnQgbmFtZTpcbiIKIiAgICAnS29ucXVlcm9yLzEuMCcgICAgICAgICAgICAgS0RFIEZpbGUgTWFuYWdlciBkZXNrdG9wIGNsaWVudFxuIgoiICAgICdMeW54LzIuNy4xIGxpYnd3dy1GTS8yLjE0JyBMeW54IGNvbW1hbmQgbGluZSBicm93c2VyXG4iCiJcbiIKIkNPT0tJRVNcbiIKIlxuIgoiICBDb29raWVzIGFyZSBnZW5lcmFsbHkgdXNlZCBieSB3ZWIgc2VydmVycyB0byBrZWVwIHN0YXRlIGluZm9ybWF0aW9uIGF0IHRoZVxuIgoiICBjbGllbnQncyBzaWRlLiBUaGUgc2VydmVyIHNldHMgY29va2llcyBieSBzZW5kaW5nIGEgcmVzcG9uc2UgbGluZSBpbiB0aGVcbiIKIiAgaGVhZGVycyB0aGF0IGxvb2tzIGxpa2UgJ1NldC1Db29raWU6IDxkYXRhPicgd2hlcmUgdGhlIGRhdGEgcGFydCB0aGVuXG4iCiIgIHR5cGljYWxseSBjb250YWlucyBhIHNldCBvZiBOQU1FPVZBTFVFIHBhaXJzIChzZXBhcmF0ZWQgYnkgc2VtaWNvbG9ucyAnOydcbiIKIiAgbGlrZSBcIk5BTUUxPVZBTFVFMTsgTkFNRTI9VkFMVUUyO1wiKS4gVGhlIHNlcnZlciBjYW4gYWxzbyBzcGVjaWZ5IGZvciB3aGF0XG4iCiIgIHBhdGggdGhlIFwiY29va2llXCIgc2hvdWxkIGJlIHVzZWQgZm9yIChieSBzcGVjaWZ5aW5nIFwicGF0aD12YWx1ZVwiKSwgd2hlbiB0aGVcbiIKIiAgY29va2llIHNob3VsZCBleHBpcmUgKFwiZXhwaXJlPURBVEVcIiksIGZvciB3aGF0IGRvbWFpbiB0byB1c2UgaXRcbiIKIiAgKFwiZG9tYWluPU5BTUVcIikgYW5kIGlmIGl0IHNob3VsZCBiZSB1c2VkIG9uIHNlY3VyZSBjb25uZWN0aW9ucyBvbmx5XG4iCiIgIChcInNlY3VyZVwiKS5cbiIKIlxuIgoiICBJZiB5b3UndmUgcmVjZWl2ZWQgYSBwYWdlIGZyb20gYSBzZXJ2ZXIgdGhhdCBjb250YWlucyBhIGhlYWRlciBsaWtlOlxuIgoiICAgICAgICBTZXQtQ29va2llOiBzZXNzaW9uaWQ9Ym9vMTIzOyBwYXRoPVwiL2Zvb1wiO1xuIgoiXG4iCiIgIGl0IG1lYW5zIHRoZSBzZXJ2ZXIgd2FudHMgdGhhdCBmaXJzdCBwYWlyIHBhc3NlZCBvbiB3aGVuIHdlIGdldCBhbnl0aGluZyBpblxuIgoiICBhIHBhdGggYmVnaW5uaW5nIHdpdGggXCIvZm9vXCIuXG4iCiJcbiIKIiAgRXhhbXBsZSwgZ2V0IGEgcGFnZSB0aGF0IHdhbnRzIG15IG5hbWUgcGFzc2VkIGluIGEgY29va2llOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLWIgXCJuYW1lPURhbmllbFwiIHd3dy5zaWxseXBhZ2UuY29tXG4iCiJcbiIKIiAgQ3VybCBhbHNvIGhhcyB0aGUgYWJpbGl0eSB0byB1c2UgcHJldmlvdXNseSByZWNlaXZlZCBjb29raWVzIGluIGZvbGxvd2luZ1xuIgoiICBzZXNzaW9ucy4gSWYgeW91IGdldCBjb29raWVzIGZyb20gYSBzZXJ2ZXIgYW5kIHN0b3JlIHRoZW0gaW4gYSBmaWxlIGluIGFcbiIKIiAgbWFubmVyIHNpbWlsYXIgdG86XG4iCiJcbiIKIiAgICAgICAgY3VybCAtLWR1bXAtaGVhZGVyIGhlYWRlcnMgd3d3LmV4YW1wbGUuY29tXG4iCiJcbiIKIiAgLi4uIHlvdSBjYW4gdGhlbiBpbiBhIHNlY29uZCBjb25uZWN0IHRvIHRoYXQgKG9yIGFub3RoZXIpIHNpdGUsIHVzZSB0aGVcbiIKIiAgY29va2llcyBmcm9tIHRoZSAnaGVhZGVycycgZmlsZSBsaWtlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLWIgaGVhZGVycyB3d3cuZXhhbXBsZS5jb21cbiIKIlxuIgoiICBOb3RlIHRoYXQgYnkgc3BlY2lmeWluZyAtYiB5b3UgZW5hYmxlIHRoZSBcImNvb2tpZSBhd2FyZW5lc3NcIiBhbmQgd2l0aCAtTFxuIgoiICB5b3UgY2FuIG1ha2UgY3VybCBmb2xsb3cgYSBsb2NhdGlvbjogKHdoaWNoIG9mdGVuIGlzIHVzZWQgaW4gY29tYmluYXRpb25cbiIKIiAgd2l0aCBjb29raWVzKS4gU28gdGhhdCBpZiBhIHNpdGUgc2VuZHMgY29va2llcyBhbmQgYSBsb2NhdGlvbiwgeW91IGNhblxuIgoiICB1c2UgYSBub24tZXhpc3RpbmcgZmlsZSB0byB0cmlnIHRoZSBjb29raWUgYXdhcmVuZXNzIGxpa2U6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtTCAtYiBlbXB0eS1maWxlIHd3dy5leGFtcGxlLmNvbVxuIgoiXG4iCiIgIFRoZSBmaWxlIHRvIHJlYWQgY29va2llcyBmcm9tIG11c3QgYmUgZm9ybWF0dGVkIHVzaW5nIHBsYWluIEhUVFAgaGVhZGVycyBPUlxuIgoiICBhcyBuZXRzY2FwZSdzIGNvb2tpZSBmaWxlLiBDdXJsIHdpbGwgZGV0ZXJtaW5lIHdoYXQga2luZCBpdCBpcyBiYXNlZCBvbiB0aGVcbiIKIiAgZmlsZSBjb250ZW50cy5cbiIKIlxuIgoiUFJPR1JFU1MgTUVURVJcbiIKIlxuIgoiICBUaGUgcHJvZ3Jlc3MgbWV0ZXIgZXhpc3RzIHRvIHNob3cgYSB1c2VyIHRoYXQgc29tZXRoaW5nIGFjdHVhbGx5IGlzXG4iCiIgIGhhcHBlbmluZy4gVGhlIGRpZmZlcmVudCBmaWVsZHMgaW4gdGhlIG91dHB1dCBoYXZlIHRoZSBmb2xsb3dpbmcgbWVhbmluZzpcbiIKIlxuIgoiICAlIFRvdGFsICAgICUgUmVjZWl2ZWQgJSBYZmVyZCAgQXZlcmFnZSBTcGVlZCAgICAgICAgICBUaW1lICAgICAgICAgICAgIEN1cnIuXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEbG9hZCAgVXBsb2FkIFRvdGFsICAgIEN1cnJlbnQgIExlZnQgICAgU3BlZWRcbiIKIiAgMCAgMTUxTSAgICAwIDM4NjA4ICAgIDAgICAgIDAgICA5NDA2ICAgICAgMCAgNDo0MTo0MyAgMDowMDowNCAgNDo0MTozOSAgOTI4N1xuIgoiXG4iCiIgIEZyb20gbGVmdC10by1yaWdodDpcbiIKIiAgICUgICAgICAgICAgICAgLSBwZXJjZW50YWdlIGNvbXBsZXRlZCBvZiB0aGUgd2hvbGUgdHJhbnNmZXJcbiIKIiAgIFRvdGFsICAgICAgICAgLSB0b3RhbCBzaXplIG9mIHRoZSB3aG9sZSBleHBlY3RlZCB0cmFuc2ZlclxuIgoiICAgJSAgICAgICAgICAgICAtIHBlcmNlbnRhZ2UgY29tcGxldGVkIG9mIHRoZSBkb3dubG9hZFxuIgoiICAgUmVjZWl2ZWQgICAgICAtIGN1cnJlbnRseSBkb3dubG9hZGVkIGFtb3VudCBvZiBieXRlc1xuIgoiICAgJSAgICAgICAgICAgICAtIHBlcmNlbnRhZ2UgY29tcGxldGVkIG9mIHRoZSB1cGxvYWRcbiIKIiAgIFhmZXJkICAgICAgICAgLSBjdXJyZW50bHkgdXBsb2FkZWQgYW1vdW50IG9mIGJ5dGVzXG4iCiIgICBBdmVyYWdlIFNwZWVkXG4iCiIgICBEbG9hZCAgICAgICAgIC0gdGhlIGF2ZXJhZ2UgdHJhbnNmZXIgc3BlZWQgb2YgdGhlIGRvd25sb2FkXG4iCiIgICBBdmVyYWdlIFNwZWVkXG4iCiIgICBVcGxvYWQgICAgICAgIC0gdGhlIGF2ZXJhZ2UgdHJhbnNmZXIgc3BlZWQgb2YgdGhlIHVwbG9hZFxuIgoiICAgVGltZSBUb3RhbCAgICAtIGV4cGVjdGVkIHRpbWUgdG8gY29tcGxldGUgdGhlIG9wZXJhdGlvblxuIgoiICAgVGltZSBDdXJyZW50ICAtIHRpbWUgcGFzc2VkIHNpbmNlIHRoZSBpbnZva2VcbiIKIiAgIFRpbWUgTGVmdCAgICAgLSBleHBlY3RlZCB0aW1lIGxlZnQgdG8gY29tcGxldGV0aW9uXG4iCiIgICBDdXJyLlNwZWVkICAgIC0gdGhlIGF2ZXJhZ2UgdHJhbnNmZXIgc3BlZWQgdGhlIGxhc3QgNSBzZWNvbmRzICh0aGUgZmlyc3RcbiIKIiAgICAgICAgICAgICAgICAgICA1IHNlY29uZHMgb2YgYSB0cmFuc2ZlciBpcyBiYXNlZCBvbiBsZXNzIHRpbWUgb2YgY291cnNlLilcbiIKIlxuIgoiICBUaGUgLSMgb3B0aW9uIHdpbGwgZGlzcGxheSBhIHRvdGFsbHkgZGlmZmVyZW50IHByb2dyZXNzIGJhciB0aGF0IGRvZXNuJ3RcbiIKIiAgbmVlZCBtdWNoIGV4cGxhbmF0aW9uIVxuIgoiXG4iCiJTUEVFRCBMSU1JVFxuIgoiXG4iCiIgIEN1cmwgb2ZmZXJzIHRoZSB1c2VyIHRvIHNldCBjb25kaXRpb25zIHJlZ2FyZGluZyB0cmFuc2ZlciBzcGVlZCB0aGF0IG11c3RcbiIKIiAgYmUgbWV0IHRvIGxldCB0aGUgdHJhbnNmZXIga2VlcCBnb2luZy4gQnkgdXNpbmcgdGhlIHN3aXRjaCAteSBhbmQgLVkgeW91XG4iCiIgIGNhbiBtYWtlIGN1cmwgYWJvcnQgdHJhbnNmZXJzIGlmIHRoZSB0cmFuc2ZlciBzcGVlZCBkb2Vzbid0IGV4Y2VlZCB5b3VyXG4iCiIgIGdpdmVuIGxvd2VzdCBsaW1pdCBmb3IgYSBzcGVjaWZpZWQgdGltZS5cbiIKIlxuIgoiICBUbyBsZXQgY3VybCBhYmFuZG9uIGRvd25sb2FkaW5nIHRoaXMgcGFnZSBpZiBpdHMgc2xvd2VyIHRoYW4gMzAwMCBieXRlcyBwZXJcbiIKIiAgc2Vjb25kIGZvciAxIG1pbnV0ZSwgcnVuOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXkgMzAwMCAtWSA2MCB3d3cuZmFyLWF3YXktc2l0ZS5jb21cbiIKIlxuIgoiICBUaGlzIGNhbiB2ZXJ5IHdlbGwgYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZSBvdmVyYWxsIHRpbWUgbGltaXQsIHNvXG4iCiIgIHRoYXQgdGhlIGFib3ZlIG9wZXJhdGlvaW4gbXVzdCBiZSBjb21wbGV0ZWQgaW4gd2hvbGUgd2l0aGluIDMwIG1pbnV0ZXM6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtbSAxODAwIC15IDMwMDAgLVkgNjAgd3d3LmZhci1hd2F5LXNpdGUuY29tXG4iCiJcbiIKIkNPTkZJRyBGSUxFXG4iCiJcbiIKIiAgQ3VybCBhdXRvbWF0aWNhbGx5IHRyaWVzIHRvIHJlYWQgdGhlIC5jdXJscmMgZmlsZSAob3IgX2N1cmxyYyBmaWxlIG9uIHdpbjMyXG4iCiIgIHN5c3RlbXMpIGZyb20gdGhlIHVzZXIncyBob21lIGRpciBvbiBzdGFydHVwLiBUaGUgY29uZmlnIGZpbGUgc2hvdWxkIGJlXG4iCiIgIG1hZGUgdXAgd2l0aCBub3JtYWwgY29tbWFuZCBsaW5lIHN3aXRjaGVzLiBDb21tZW50cyBjYW4gYmUgdXNlZCB3aXRoaW4gdGhlXG4iCiIgIGZpbGUuIElmIHRoZSBmaXJzdCBsZXR0ZXIgb24gYSBsaW5lIGlzIGEgJyMnLWxldHRlciB0aGUgcmVzdCBvZiB0aGUgbGluZVxuIgoiICBpcyB0cmVhdGVkIGFzIGEgY29tbWVudC5cbiIKIlxuIgoiICBFeGFtcGxlLCBzZXQgZGVmYXVsdCB0aW1lIG91dCBhbmQgcHJveHkgaW4gYSBjb25maWcgZmlsZTpcbiIKIlxuIgoiICAgICAgICAjIFdlIHdhbnQgYSAzMCBtaW51dGUgdGltZW91dDpcbiIKIiAgICAgICAgLW0gMTgwMFxuIgoiICAgICAgICAjIC4uLiBhbmQgd2UgdXNlIGEgcHJveHkgZm9yIGFsbCBhY2Nlc3NlczpcbiIKIiAgICAgICAgLXggcHJveHkub3VyLmRvbWFpbi5jb206ODA4MFxuIgoiXG4iCiIgIFdoaXRlIHNwYWNlcyBBUkUgc2lnbmlmaWNhbnQgYXQgdGhlIGVuZCBvZiBsaW5lcywgYnV0IGFsbCB3aGl0ZSBzcGFjZXNcbiIKIiAgbGVhZGluZyB1cCB0byB0aGUgZmlyc3QgY2hhcmFjdGVycyBvZiBlYWNoIGxpbmUgYXJlIGlnbm9yZWQuXG4iCiJcbiIKIiAgUHJldmVudCBjdXJsIGZyb20gcmVhZGluZyB0aGUgZGVmYXVsdCBmaWxlIGJ5IHVzaW5nIC1xIGFzIHRoZSBmaXJzdCBjb21tYW5kXG4iCiIgIGxpbmUgcGFyYW1ldGVyLCBsaWtlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXEgd3d3LnRoYXRzaXRlLmNvbVxuIgoiXG4iCiIgIEZvcmNlIGN1cmwgdG8gZ2V0IGFuZCBkaXNwbGF5IGEgbG9jYWwgaGVscCBwYWdlIGluIGNhc2UgaXQgaXMgaW52b2tlZFxuIgoiICB3aXRob3V0IFVSTCBieSBtYWtpbmcgYSBjb25maWcgZmlsZSBzaW1pbGFyIHRvOlxuIgoiXG4iCiIgICAgICAgICMgZGVmYXVsdCB1cmwgdG8gZ2V0XG4iCiIgICAgICAgIGh0dHA6Ly9oZWxwLndpdGguY3VybC5jb20vY3VybGhlbHAuaHRtbFxuIgoiXG4iCiIgIFlvdSBjYW4gc3BlY2lmeSBhbm90aGVyIGNvbmZpZyBmaWxlIHRvIGJlIHJlYWQgYnkgdXNpbmcgdGhlIC1LLy0tY29uZmlnXG4iCiIgIGZsYWcuIElmIHlvdSBzZXQgY29uZmlnIGZpbGUgbmFtZSB0byBcIi1cIiBpdCdsbCByZWFkIHRoZSBjb25maWcgZnJvbSBzdGRpbixcbiIKIiAgd2hpY2ggY2FuIGJlIGhhbmR5IGlmIHlvdSB3YW50IHRvIGhpZGUgb3B0aW9ucyBmcm9tIGJlaW5nIHZpc2libGUgaW4gcHJvY2Vzc1xuIgoiICB0YWJsZXMgZXRjOlxuIgoiXG4iCiIgICAgICAgIGVjaG8gXCItdSB1c2VyOnBhc3N3ZFwiIHwgY3VybCAtSyAtIGh0dHA6Ly90aGF0LnNlY3JldC5zaXRlLmNvbVxuIgoiXG4iCiJFWFRSQSBIRUFERVJTXG4iCiJcbiIKIiAgV2hlbiB1c2luZyBjdXJsIGluIHlvdXIgb3duIHZlcnkgc3BlY2lhbCBwcm9ncmFtcywgeW91IG1heSBlbmQgdXAgbmVlZGluZ1xuIgoiICB0byBwYXNzIG9uIHlvdXIgb3duIGN1c3RvbSBoZWFkZXJzIHdoZW4gZ2V0dGluZyBhIHdlYiBwYWdlLiBZb3UgY2FuIGRvXG4iCiIgIHRoaXMgYnkgdXNpbmcgdGhlIC1IIGZsYWcuXG4iCiJcbiIKIiAgRXhhbXBsZSwgc2VuZCB0aGUgaGVhZGVyIFwiWC15b3UtYW5kLW1lOiB5ZXNcIiB0byB0aGUgc2VydmVyIHdoZW4gZ2V0dGluZyBhXG4iCiIgIHBhZ2U6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtSCBcIlgteW91LWFuZC1tZTogeWVzXCIgd3d3LmxvdmUuY29tXG4iCiJcbiIKIiAgVGhpcyBjYW4gYWxzbyBiZSB1c2VmdWwgaW4gY2FzZSB5b3Ugd2FudCBjdXJsIHRvIHNlbmQgYSBkaWZmZXJlbnQgdGV4dCBpblxuIgoiICBhIGhlYWRlciB0aGFuIGl0IG5vcm1hbGx5IGRvZXMuIFRoZSAtSCBoZWFkZXIgeW91IHNwZWNpZnkgdGhlbiByZXBsYWNlcyB0aGVcbiIKIiAgaGVhZGVyIGN1cmwgd291bGQgbm9ybWFsbHkgc2VuZC5cbiIKIlxuIgoiRlRQIGFuZCBQQVRIIE5BTUVTXG4iCiJcbiIKIiAgRG8gbm90ZSB0aGF0IHdoZW4gZ2V0dGluZyBmaWxlcyB3aXRoIHRoZSBmdHA6Ly8gVVJMLCB0aGUgZ2l2ZW4gcGF0aCBpc1xuIgoiICByZWxhdGl2ZSB0aGUgZGlyZWN0b3J5IHlvdSBlbnRlci4gVG8gZ2V0IHRoZSBmaWxlICdSRUFETUUnIGZyb20geW91ciBob21lXG4iCiIgIGRpcmVjdG9yeSBhdCB5b3VyIGZ0cCBzaXRlLCBkbzpcbiIKIlxuIgoiICAgICAgICBjdXJsIGZ0cDovL3VzZXI6cGFzc3dkQG15LnNpdGUuY29tL1JFQURNRVxuIgoiXG4iCiIgIEJ1dCBpZiB5b3Ugd2FudCB0aGUgUkVBRE1FIGZpbGUgZnJvbSB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhhdCB2ZXJ5IHNhbWVcbiIKIiAgc2l0ZSwgeW91IG5lZWQgdG8gc3BlY2lmeSB0aGUgYWJzb2x1dGUgZmlsZSBuYW1lOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgZnRwOi8vdXNlcjpwYXNzd2RAbXkuc2l0ZS5jb20vL1JFQURNRVxuIgoiXG4iCiIgIChJLmUgd2l0aCBhbiBleHRyYSBzbGFzaCBpbiBmcm9udCBvZiB0aGUgZmlsZSBuYW1lLilcbiIKIlxuIgoiRlRQIGFuZCBmaXJld2FsbHNcbiIKIlxuIgoiICBUaGUgRlRQIHByb3RvY29sIHJlcXVpcmVzIG9uZSBvZiB0aGUgaW52b2x2ZWQgcGFydGllcyB0byBvcGVuIGEgc2Vjb25kXG4iCiIgIGNvbm5jdGlvbiBhcyBzb29uIGFzIGRhdGEgaXMgYWJvdXQgdG8gZ2V0IHRyYW5zZmVyZWQuIFRoZXJlIGFyZSB0d28gd2F5cyB0b1xuIgoiICBkbyB0aGlzLlxuIgoiXG4iCiIgIFRoZSBkZWZhdWx0IHdheSBmb3IgY3VybCBpcyB0byBpc3N1ZSB0aGUgUEFTViBjb21tYW5kIHdoaWNoIGNhdXNlcyB0aGVcbiIKIiAgc2VydmVyIHRvIG9wZW4gYW5vdGhlciBwb3J0IGFuZCBhd2FpdCBhbm90aGVyIGNvbm5lY3Rpb24gcGVyZm9ybWVkIGJ5IHRoZVxuIgoiICBjbGllbnQuIFRoaXMgaXMgZ29vZCBpZiB0aGUgY2xpZW50IGlzIGJlaGluZCBhIGZpcmV3YWxsIHRoYXQgZG9uJ3QgYWxsb3dcbiIKIiAgaW5jb21pbmcgY29ubmVjdGlvbnMuXG4iCiJcbiIKIiAgICAgICAgY3VybCBmdHAuZG93bmxvYWQuY29tXG4iCiJcbiIKIiAgSWYgdGhlIHNlcnZlciBmb3IgZXhhbXBsZSwgaXMgYmVoaW5kIGEgZmlyZXdhbGwgdGhhdCBkb24ndCBhbGxvdyBjb25uZWN0aW9uc1xuIgoiICBvbiBvdGhlciBwb3J0cyB0aGFuIDIxIChvciBpZiBpdCBqdXN0IGRvZXNuJ3Qgc3VwcG9ydCB0aGUgUEFTViBjb21tYW5kKSwgdGhlXG4iCiIgIG90aGVyIHdheSB0byBkbyBpdCBpcyB0byB1c2UgdGhlIFBPUlQgY29tbWFuZCBhbmQgaW5zdHJ1Y3QgdGhlIHNlcnZlciB0b1xuIgoiICBjb25uZWN0IHRvIHRoZSBjbGllbnQgb24gdGhlIGdpdmVuIChhcyBwYXJhbWV0ZXJzIHRvIHRoZSBQT1JUIGNvbW1hbmQpIElQXG4iCiIgIG51bWJlciBhbmQgcG9ydC5cbiIKIlxuIgoiICBUaGUgLVAgZmxhZyB0byBjdXJsIGFsbG93cyBmb3IgZGlmZmVyZW50IG9wdGlvbnMuIFlvdXIgbWFjaGluZSBtYXkgaGF2ZVxuIgoiICBzZXZlcmFsIElQLWFkZHJlc3NlcyBhbmQvb3IgbmV0d29yayBpbnRlcmZhY2VzIGFuZCBjdXJsIGFsbG93cyB5b3UgdG8gc2VsZWN0XG4iCiIgIHdoaWNoIG9mIHRoZW0gdG8gdXNlLiBEZWZhdWx0IGFkZHJlc3MgY2FuIGFsc28gYmUgdXNlZDpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1QIC0gZnRwLmRvd25sb2FkLmNvbVxuIgoiXG4iCiIgIERvd25sb2FkIHdpdGggUE9SVCBidXQgdXNlIHRoZSBJUCBhZGRyZXNzIG9mIG91ciAnbGUwJyBpbnRlcmZhY2U6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtUCBsZTAgZnRwLmRvd25sb2FkLmNvbVxuIgoiXG4iCiIgIERvd25sb2FkIHdpdGggUE9SVCBidXQgdXNlIDE5Mi4xNjguMC4xMCBhcyBvdXIgSVAgYWRkcmVzcyB0byB1c2U6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtUCAxOTIuMTY4LjAuMTAgZnRwLmRvd25sb2FkLmNvbVxuIgoiXG4iCiJIVFRQU1xuIgoiXG4iCiIgIFNlY3VyZSBIVFRQIHJlcXVpcmVzIFNTTGVheSB0byBiZSBpbnN0YWxsZWQgYW5kIHVzZWQgd2hlbiBjdXJsIGlzIGJ1aWx0LiBJZlxuIgoiICB0aGF0IGlzIGRvbmUsIGN1cmwgaXMgY2FwYWJsZSBvZiByZXRyaWV2aW5nIGFuZCBwb3N0aW5nIGRvY3VtZW50cyB1c2luZyB0aGVcbiIKIiAgSFRUUFMgcHJvY290b2wuXG4iCiJcbiIKIiAgRXhhbXBsZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIGh0dHBzOi8vd3d3LnNlY3VyZS1zaXRlLmNvbVxuIgoiXG4iCiIgIEN1cmwgaXMgYWxzbyBjYXBhYmxlIG9mIHVzaW5nIHlvdXIgcGVyc29uYWwgY2VydGlmaWNhdGVzIHRvIGdldC9wb3N0IGZpbGVzXG4iCiIgIGZyb20gc2l0ZXMgdGhhdCByZXF1aXJlIHZhbGlkIGNlcnRpZmljYXRlcy4gVGhlIG9ubHkgZHJhd2JhY2sgaXMgdGhhdCB0aGVcbiIKIiAgY2VydGlmaWNhdGUgbmVlZHMgdG8gYmUgaW4gUEVNLWZvcm1hdC4gUEVNIGlzIGEgc3RhbmRhcmQgYW5kIG9wZW4gZm9ybWF0IHRvXG4iCiIgIHN0b3JlIGNlcnRpZmljYXRlcyB3aXRoLCBidXQgaXQgaXMgbm90IHVzZWQgYnkgdGhlIG1vc3QgY29tbW9ubHkgdXNlZFxuIgoiICBicm93c2VycyAoTmV0c2NhcGUgYW5kIE1TRUkgYm90aCB1c2UgdGhlIHNvIGNhbGxlZCBQS0NTIzEyIGZvcm1hdCkuIElmIHlvdVxuIgoiICB3YW50IGN1cmwgdG8gdXNlIHRoZSBjZXJ0aWZpY2F0ZXMgeW91IHVzZSB3aXRoIHlvdXIgKGZhdm91cml0ZSkgYnJvd3NlciwgeW91XG4iCiIgIG1heSBuZWVkIHRvIGRvd25sb2FkL2NvbXBpbGUgYSBjb252ZXJ0ZXIgdGhhdCBjYW4gY29udmVydCB5b3VyIGJyb3dzZXInc1xuIgoiICBmb3JtYXR0ZWQgY2VydGlmaWNhdGVzIHRvIFBFTSBmb3JtYXR0ZWQgb25lcy4gRHIgU3RlcGhlbiBOLiBIZW5zb24gaGFzXG4iCiIgIHdyaXR0ZW4gYSBwYXRjaCBmb3IgU1NMZWF5IHRoYXQgYWRkcyB0aGlzIGZ1bmN0aW9uYWxpdHkuIFlvdSBjYW4gZ2V0IGhpc1xuIgoiICBwYXRjaCAodGhhdCByZXF1aXJlcyBhbiBTU0xlYXkgaW5zdGFsbGF0aW9uKSBmcm9tIGhpcyBzaXRlIGF0OlxuIgoiICBodHRwOi8vd3d3LmRyaC1jb25zdWx0YW5jeS5kZW1vbi5jby51ay9cbiIKIlxuIgoiICBFeGFtcGxlIG9uIGhvdyB0byBhdXRvbWF0aWNhbGx5IHJldHJpZXZlIGEgZG9jdW1lbnQgdXNpbmcgYSBjZXJ0aWZpY2F0ZSB3aXRoXG4iCiIgIGEgcGVyc29uYWwgcGFzc3dvcmQ6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtRSAvcGF0aC90by9jZXJ0LnBlbTpwYXNzd29yZCBodHRwczovL3NlY3VyZS5zaXRlLmNvbS9cbiIKIlxuIgoiICBJZiB5b3UgbmVnbGVjdCB0byBzcGVjaWZ5IHRoZSBwYXNzd29yZCBvbiB0aGUgY29tbWFuZCBsaW5lLCB5b3Ugd2lsbCBiZVxuIgoiICBwcm9tcHRlZCBmb3IgdGhlIGNvcnJlY3QgcGFzc3dvcmQgYmVmb3JlIGFueSBkYXRhIGNhbiBiZSByZWNlaXZlZC5cbiIKIlxuIgoiICBNYW55IG9sZGVyIFNTTC1zZXJ2ZXJzIGhhdmUgcHJvYmxlbXMgd2l0aCBTU0x2MyBvciBUTFMsIHRoYXQgbmV3ZXIgdmVyc2lvbnNcbiIKIiAgb2YgT3BlblNTTCBldGMgaXMgdXNpbmcsIHRoZXJlZm9yZSBpdCBpcyBzb21ldGltZXMgdXNlZnVsIHRvIHNwZWNpZnkgd2hhdFxuIgoiICBTU0wtdmVyc2lvbiBjdXJsIHNob3VsZCB1c2UuIFVzZSAtMyBvciAtMiB0byBzcGVjaWZ5IHRoYXQgZXhhY3QgU1NMIHZlcnNpb25cbiIKIiAgdG8gdXNlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLTIgaHR0cHM6Ly9zZWN1cmUuc2l0ZS5jb20vXG4iCiJcbiIKIiAgT3RoZXJ3aXNlLCBjdXJsIHdpbGwgZmlyc3QgYXR0ZW1wdCB0byB1c2UgdjMgYW5kIHRoZW4gdjIuXG4iCiJcbiIKIlJFU1VNSU5HIEZJTEUgVFJBTlNGRVJTXG4iCiJcbiIKIiBUbyBjb250aW51ZSBhIGZpbGUgdHJhbnNmZXIgd2hlcmUgaXQgd2FzIHByZXZpb3VzbHkgYWJvcnRlZCwgY3VybCBzdXBwb3J0c1xuIgoiIHJlc3VtZSBvbiBodHRwKHMpIGRvd25sb2FkcyBhcyB3ZWxsIGFzIGZ0cCB1cGxvYWRzIGFuZCBkb3dubG9hZHMuXG4iCiJcbiIKIiBDb250aW51ZSBkb3dubG9hZGluZyBhIGRvY3VtZW50OlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLWMgLW8gZmlsZSBmdHA6Ly9mdHAuc2VydmVyLmNvbS9wYXRoL2ZpbGVcbiIKIlxuIgoiIENvbnRpbnVlIHVwbG9hZGluZyBhIGRvY3VtZW50KCoxKTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1jIC1UIGZpbGUgZnRwOi8vZnRwLnNlcnZlci5jb20vcGF0aC9maWxlXG4iCiJcbiIKIiBDb250aW51ZSBkb3dubG9hZGluZyBhIGRvY3VtZW50IGZyb20gYSB3ZWIgc2VydmVyKCoyKTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1jIC1vIGZpbGUgaHR0cDovL3d3dy5zZXJ2ZXIuY29tL1xuIgoiXG4iCiIgKCoxKSA9IFRoaXMgcmVxdWlyZXMgdGhhdCB0aGUgZnRwIHNlcnZlciBzdXBwb3J0cyB0aGUgbm9uLXN0YW5kYXJkIGNvbW1hbmRcbiIKIiAgICAgICAgU0laRS4gSWYgaXQgZG9lc24ndCwgY3VybCB3aWxsIHNheSBzby5cbiIKIlxuIgoiICgqMikgPSBUaGlzIHJlcXVpcmVzIHRoYXQgdGhlIHdiIHNlcnZlciBzdXBwb3J0cyBhdCBsZWFzdCBIVFRQLzEuMS4gSWYgaXRcbiIKIiAgICAgICAgZG9lc24ndCwgY3VybCB3aWxsIHNheSBzby5cbiIKIlxuIgoiVElNRSBDT05ESVRJT05TXG4iCiJcbiIKIiBIVFRQIGFsbG93cyBhIGNsaWVudCB0byBzcGVjaWZ5IGEgdGltZSBjb25kaXRpb24gZm9yIHRoZSBkb2N1bWVudCBpdFxuIgoiIHJlcXVlc3RzLiBJdCBpcyBJZi1Nb2RpZmllZC1TaW5jZSBvciBJZi1Vbm1vZGlmaWVkLVNpbmNlLiBDdXJsIGFsbG93IHlvdSB0b1xuIgoiIHNwZWNpZnkgdGhlbSB3aXRoIHRoZSAtei8tLXRpbWUtY29uZCBmbGFnLlxuIgoiXG4iCiIgRm9yIGV4YW1wbGUsIHlvdSBjYW4gZWFzaWx5IG1ha2UgYSBkb3dubG9hZCB0aGF0IG9ubHkgZ2V0cyBwZXJmb3JtZWQgaWYgdGhlXG4iCiIgcmVtb3RlIGZpbGUgaXMgbmV3ZXIgdGhhbiBhIGxvY2FsIGNvcHkuIEl0IHdvdWxkIGJlIG1hZGUgbGlrZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC16IGxvY2FsLmh0bWwgaHR0cDovL3JlbW90ZS5zZXJ2ZXIuY29tL3JlbW90ZS5odG1sXG4iCiJcbiIKIiBPciB5b3UgY2FuIGRvd25sb2FkIGEgZmlsZSBvbmx5IGlmIHRoZSBsb2NhbCBmaWxlIGlzIG5ld2VyIHRoYW4gdGhlIHJlbW90ZVxuIgoiIG9uZS4gRG8gdGhpcyBieSBwcmVwZW5kaW5nIHRoZSBkYXRlIHN0cmluZyB3aXRoIGEgJy0nLCBhcyBpbjpcbiIKIlxuIgoiICAgICAgICBjdXJsIC16IC1sb2NhbC5odG1sIGh0dHA6Ly9yZW1vdGUuc2VydmVyLmNvbS9yZW1vdGUuaHRtbFxuIgoiXG4iCiIgWW91IGNhbiBzcGVjaWZ5IGEgXCJmcmVlIHRleHRcIiBkYXRlIGFzIGNvbmRpdGlvbi4gVGVsbCBjdXJsIHRvIG9ubHkgZG93bmxvYWRcbiIKIiB0aGUgZmlsZSBpZiBpdCB3YXMgdXBkYXRlZCBzaW5jZSB5ZXN0ZXJkYXk6XG4iCiJcbiIKIiAgICAgICAgY3VybCAteiB5ZXN0ZXJkYXkgaHR0cDovL3JlbW90ZS5zZXJ2ZXIuY29tL3JlbW90ZS5odG1sXG4iCiJcbiIKIiBDdXJsIHdpbGwgdGhlbiBhY2NlcHQgYSB3aWRlIHJhbmdlIG9mIGRhdGUgZm9ybWF0cy4gWW91IGFsd2F5cyBtYWtlIHRoZSBkYXRlXG4iCiIgY2hlY2sgdGhlIG90aGVyIHdheSBhcm91bmQgYnkgcHJlcGVuZGluZyBpdCB3aXRoIGEgZGFzaCAnLScuXG4iCiJcbiIKIkRJQ1RcbiIKIlxuIgoiICBGb3IgZnVuIHRyeVxuIgoiXG4iCiIgICAgICAgIGN1cmwgZGljdDovL2RpY3Qub3JnL206Y3VybFxuIgoiICAgICAgICBjdXJsIGRpY3Q6Ly9kaWN0Lm9yZy9kOmhlaXNlbmJ1ZzpqYXJnb25cbiIKIiAgICAgICAgY3VybCBkaWN0Oi8vZGljdC5vcmcvZDpkYW5pZWw6d2ViMTkxM1xuIgoiXG4iCiIgIEFsaWFzZXMgZm9yICdtJyBhcmUgJ21hdGNoJyBhbmQgJ2ZpbmQnLCBhbmQgYWxpYXNlcyBmb3IgJ2QnIGFyZSAnZGVmaW5lJ1xuIgoiICBhbmQgJ2xvb2t1cCcuIEZvciBleGFtcGxlLFxuIgoiXG4iCiIgICAgICAgIGN1cmwgZGljdDovL2RpY3Qub3JnL2ZpbmQ6Y3VybFxuIgoiXG4iCiIgIENvbW1hbmRzIHRoYXQgYnJlYWsgdGhlIFVSTCBkZXNjcmlwdGlvbiBvZiB0aGUgUkZDIChidXQgbm90IHRoZSBESUNUXG4iCiIgIHByb3RvY29sKSBhcmVcbiIKIlxuIgoiICAgICAgICBjdXJsIGRpY3Q6Ly9kaWN0Lm9yZy9zaG93OmRiXG4iCiIgICAgICAgIGN1cmwgZGljdDovL2RpY3Qub3JnL3Nob3c6c3RyYXRcbiIKIlxuIgoiICBBdXRoZW50aWNhdGlvbiBpcyBzdGlsbCBtaXNzaW5nIChidXQgdGhpcyBpcyBub3QgcmVxdWlyZWQgYnkgdGhlIFJGQylcbiIKIlxuIgoiTERBUFxuIgoiXG4iCiIgIElmIHlvdSBoYXZlIGluc3RhbGxlZCB0aGUgT3BlbkxEQVAgbGlicmFyeSwgY3VybCBjYW4gdGFrZSBhZHZhbnRhZ2Ugb2YgaXRcbiIKIiAgYW5kIG9mZmVyIGxkYXA6Ly8gc3VwcG9ydC5cbiIKIlxuIgoiICBMREFQIGlzIGEgY29tcGxleCB0aGluZyBhbmQgd3JpdGluZyBhbiBMREFQIHF1ZXJ5IGlzIG5vdCBhbiBlYXN5IHRhc2suIEkgZG9cbiIKIiAgYWR2aWNlIHlvdSB0byBkaWcgdXAgdGhlIHN5bnRheCBkZXNjcmlwdGlvbiBmb3IgdGhhdCBlbHNld2hlcmUsIFJGQyAxOTU5IGlmXG4iCiIgIG5vIG90aGVyIHBsYWNlIGlzIGJldHRlci5cbiIKIlxuIgoiICBUbyBzaG93IHlvdSBhbiBleGFtcGxlLCB0aGlzIGlzIG5vdyBJIGNhbiBnZXQgYWxsIHBlb3BsZSBmcm9tIG15IGxvY2FsIExEQVBcbiIKIiAgc2VydmVyIHRoYXQgaGFzIGEgY2VydGFpbiBzdWItZG9tYWluIGluIHRoZWlyIGVtYWlsIGFkZHJlc3M6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtQiBcImxkYXA6Ly9sZGFwLmZyb250ZWMuc2Uvbz1mcm9udGVjPz9zdWI/bWFpbD0qc3RoLmZyb250ZWMuc2VcIlxuIgoiXG4iCiIgIElmIEkgd2FudCB0aGUgc2FtZSBpbmZvIGluIEhUTUwgZm9ybWF0LCBJIGNhbiBnZXQgaXQgYnkgbm90IHVzaW5nIHRoZSAtQlxuIgoiICAoZW5mb3JjZSBBU0NJSSkgZmxhZy5cbiIKIlxuIgoiRU5WSVJPTk1FTlQgVkFSSUFCTEVTXG4iCiJcbiIKIiAgQ3VybCByZWFkcyBhbmQgdW5kZXJzdGFuZHMgdGhlIGZvbGxvd2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXM6XG4iCiJcbiIKIiAgICAgICAgSFRUUF9QUk9YWSwgSFRUUFNfUFJPWFksIEZUUF9QUk9YWSwgR09QSEVSX1BST1hZXG4iCiJcbiIKIiAgVGhleSBzaG91bGQgYmUgc2V0IGZvciBwcm90b2NvbC1zcGVjaWZpYyBwcm94aWVzLiBHZW5lcmFsIHByb3h5IHNob3VsZCBiZVxuIgoiICBzZXQgd2l0aFxuIgoiICAgICAgICBcbiIKIiAgICAgICAgQUxMX1BST1hZXG4iCiJcbiIKIiAgQSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBob3N0IG5hbWVzIHRoYXQgc2hvdWxkbid0IGdvIHRocm91Z2ggYW55IHByb3h5IGlzXG4iCiIgIHNldCBpbiAob25seSBhbiBhc3RlcmlzaywgJyonIG1hdGNoZXMgYWxsIGhvc3RzKVxuIgoiXG4iCiIgICAgICAgIE5PX1BST1hZXG4iCiJcbiIKIiAgSWYgYSB0YWlsIHN1YnN0cmluZyBvZiB0aGUgZG9tYWluLXBhdGggZm9yIGEgaG9zdCBtYXRjaGVzIG9uZSBvZiB0aGVzZVxuIgoiICBzdHJpbmdzLCB0cmFuc2FjdGlvbnMgd2l0aCB0aGF0IG5vZGUgd2lsbCBub3QgYmUgcHJveGllZC5cbiIKIlxuIgoiXG4iCiIgIFRoZSB1c2FnZSBvZiB0aGUgLXgvLS1wcm94eSBmbGFnIG92ZXJyaWRlcyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuIgoiXG4iCiJNQUlMSU5HIExJU1RcbiIKIlxuIgoiICBXZSBoYXZlIGFuIG9wZW4gbWFpbGluZyBsaXN0IHRvIGRpc2N1c3MgY3VybCwgaXRzIGRldmVsb3BtZW50IGFuZCB0aGluZ3NcbiIKIiAgcmVsZXZhbnQgdG8gdGhpcy5cbiIKIlxuIgoiICBUbyBzdWJzY3JpYmUsIG1haWwgY3VybC1yZXF1ZXN0QGNvbnRhY3Rvci5zZSB3aXRoIFwic3Vic2NyaWJlIDx5b3VyIGVtYWlsXG4iCiIgIGFkZHJlc3M+XCIgaW4gdGhlIGJvZHkuXG4iCiJcbiIKIiAgVG8gcG9zdCB0byB0aGUgbGlzdCwgbWFpbCBjdXJsQGNvbnRhY3Rvci5zZS5cbiIKIlxuIgoiICBUbyB1bnN1YmNyaWJlLCBtYWlsIGN1cmwtcmVxdWVzdEBjb250YWN0b3Iuc2Ugd2l0aCBcInVuc3Vic2NyaWJlIDx5b3VyXG4iCiIgIHN1YnNjcmliZWQgZW1haWwgYWRkcmVzcz5cIiBpbiB0aGUgYm9keS5cbiIKIlxuIgogKSA7Cn0K