LyogTkVWRVIgRVZFUiBlZGl0IHRoaXMgbWFudWFsbHksIGZpeCB0aGUgbWtoZWxwIHNjcmlwdCBpbnN0ZWFkISAqLwojaW5jbHVkZSA8c3RkaW8uaD4Kdm9pZCBodWdlaGVscCh2b2lkKQp7CnB1dHMgKAoiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8gICAgIFxuIgoiICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcXHwgfCAgICBcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfCAgICBcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXyBcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxfX198XFxfX18vfF98IFxcX1xcX19fX198XG4iCiJOQU1FXG4iCiIgICAgIGN1cmwgLSBnZXQgYSBVUkwgd2l0aCBGVFAsIFRFTE5FVCwgTERBUCwgR09QSEVSLCBESUNULCBGSUxFLFxuIgoiICAgICBIVFRQIG9yIEhUVFBTIHN5bnRheC5cbiIKIlxuIgoiU1lOT1BTSVNcbiIKIiAgICAgY3VybCBbb3B0aW9uc10gdXJsXG4iCiJcbiIKIkRFU0NSSVBUSU9OXG4iCiIgICAgIGN1cmwgaXMgYSBjbGllbnQgdG8gZ2V0IGRvY3VtZW50cy9maWxlcyBmcm9tIHNlcnZlcnMsICB1c2luZ1xuIgoiICAgICBhbnkgIG9mICB0aGUgc3VwcG9ydGVkIHByb3RvY29scy4gVGhlIGNvbW1hbmQgaXMgZGVzaWduZWQgdG9cbiIKIiAgICAgd29yayB3aXRob3V0IHVzZXIgaW50ZXJhY3Rpb24gb3IgYW55IGtpbmQgb2YgIGludGVyYWN0aXZpdHkuXG4iCiJcbiIKIiAgICAgY3VybCAgb2ZmZXJzICBhIGJ1c2xvYWQgb2YgdXNlZnVsIHRyaWNrcyBsaWtlIHByb3h5IHN1cHBvcnQsXG4iCiIgICAgIHVzZXIgYXV0aGVudGljYXRpb24sIGZ0cCB1cGxvYWQsICBIVFRQICBwb3N0LCAgU1NMICAoaHR0cHM6KVxuIgoiICAgICBjb25uZWN0aW9ucywgY29va2llcywgZmlsZSB0cmFuc2ZlciByZXN1bWUgYW5kIG1vcmUuXG4iCiJcbiIKIlVSTFxuIgoiICAgICBUaGUgVVJMIHN5bnRheCBpcyBwcm90b2NvbCBkZXBlbmRlbnQuIFlvdSdsbCBmaW5kIGEgZGV0YWlsZWRcbiIKIiAgICAgZGVzY3JpcHRpb24gaW4gUkZDIDIzOTYuXG4iCiJcbiIKIiAgICAgWW91IGNhbiBzcGVjaWZ5IG11bHRpcGxlIFVSTHMgb3IgcGFydHMgb2YgIFVSTHMgIGJ5ICB3cml0aW5nXG4iCiIgICAgIHBhcnQgc2V0cyB3aXRoaW4gYnJhY2VzIGFzIGluOlxuIgoiXG4iCiIgICAgICBodHRwOi8vc2l0ZS57b25lLHR3byx0aHJlZX0uY29tXG4iCiJcbiIKIiAgICAgb3IgIHlvdSBjYW4gZ2V0IHNlcXVlbmNlcyBvZiBhbHBoYW51bWVyaWMgc2VyaWVzIGJ5IHVzaW5nIFtdXG4iCiIgICAgIGFzIGluOlxuIgoiXG4iCiIgICAgICBmdHA6Ly9mdHAubnVtZXJpY2Fscy5jb20vZmlsZVsxLTEwMF0udHh0XG4iCiIgICAgICBmdHA6Ly9mdHAubnVtZXJpY2Fscy5jb20vZmlsZVswMDEtMTAwXS50eHQgICAgKHdpdGggbGVhZGluZ1xuIgoiICAgICB6ZXJvcylcbiIKIiAgICAgIGZ0cDovL2Z0cC5sZXR0ZXJzLmNvbS9maWxlW2Etel0udHh0XG4iCiJcbiIKIiAgICAgSXQgIGlzIHBvc3NpYmxlIHRvIHNwZWNpZnkgdXAgdG8gOSBzZXRzIG9yIHNlcmllcyBmb3IgYSBVUkwsXG4iCiIgICAgIGJ1dCBubyBuZXN0aW5nIGlzIHN1cHBvcnRlZCBhdCB0aGUgbW9tZW50OlxuIgoiXG4iCiIgICAgICBodHRwOi8vd3d3LmFueS5vcmcvYXJjaGl2ZVsxOTk2LTE5OTldL3ZvbK1cbiIKIiAgICAgdW1lWzEtNF1wYXJ0e2EsYixjLGluZGV4fS5odG1sXG4iCiJcbiIKIk9QVElPTlNcbiIKIiAgICAgLWEvLS1hcHBlbmRcbiIKIiAgICAgICAgICAoRlRQKSBXaGVuIHVzZWQgaW4gYSBmdHAgdXBsb2FkLCB0aGlzIHdpbGwgdGVsbCBjdXJsIHRvXG4iCiIgICAgICAgICAgYXBwZW5kIHRvIHRoZSB0YXJnZXQgZmlsZSBpbnN0ZWFkIG9mIG92ZXJ3cml0aW5nIGl0LiBJZlxuIgoiICAgICAgICAgIHRoZSBmaWxlIGRvZXNuJ3QgZXhpc3QsIGl0IHdpbGwgYmUgY3JlYXRlZC5cbiIKIlxuIgoiICAgICAtQS8tLXVzZXItYWdlbnQgPGFnZW50IHN0cmluZz5cbiIKIiAgICAgICAgICAoSFRUUCkgIFNwZWNpZnkgIHRoZSAgVXNlci1BZ2VudCAgc3RyaW5nIHRvIHNlbmQgdG8gdGhlXG4iCiIgICAgICAgICAgSFRUUCBzZXJ2ZXIuIFNvbWUgYmFkbHkgZG9uZSBDR0lzIGZhaWwgaWYgaXRzICBub3QgIHNldFxuIgoiICAgICAgICAgIHRvIFwiTW96aWxsYS80LjBcIi4gIFRvIGVuY29kZSBibGFua3MgaW4gdGhlIHN0cmluZywgc3VyrVxuIgoiICAgICAgICAgIHJvdW5kIHRoZSBzdHJpbmcgd2l0aCBzaW5nbGUgIHF1b3RlICBtYXJrcy4gICBUaGlzICBjYW5cbiIKIiAgICAgICAgICBhbHNvIGJlIHNldCB3aXRoIHRoZSAtSC8tLWhlYWRlciBmbGFnIG9mIGNvdXJzZS5cbiIKIiAgICAgLWIvLS1jb29raWUgPG5hbWU9ZGF0YT5cbiIKIiAgICAgICAgICAoSFRUUCkgUGFzcyB0aGUgZGF0YSB0byB0aGUgSFRUUCBzZXJ2ZXIgYXMgYSBjb29raWUuIEl0XG4iCiIgICAgICAgICAgaXMgc3VwcG9zZWRseSB0aGUgZGF0YSAgcHJldmlvdXNseSAgcmVjZWl2ZWQgIGZyb20gIHRoZVxuIgoiICAgICAgICAgIHNlcnZlciAgaW4gYSBcIlNldC1Db29raWU6XCIgbGluZS4gIFRoZSBkYXRhIHNob3VsZCBiZSBpblxuIgoiICAgICAgICAgIHRoZSBmb3JtYXQgXCJOQU1FMT1WQUxVRTE7IE5BTUUyPVZBTFVFMlwiLlxuIgoiXG4iCiIgICAgICAgICAgSWYgbm8gJz0nIGxldHRlciBpcyB1c2VkIGluIHRoZSBsaW5lLCBpdCBpcyB0cmVhdGVkICBhc1xuIgoiICAgICAgICAgIGEgIGZpbGVuYW1lICB0byAgdXNlICB0byAgcmVhZCBwcmV2aW91c2x5IHN0b3JlZCBjb29raWVcbiIKIiAgICAgICAgICBsaW5lcyBmcm9tLCB3aGljaCBzaG91bGQgYmUgdXNlZCAgaW4gIHRoaXMgIHNlc3Npb24gIGlmXG4iCiIgICAgICAgICAgdGhleSAgbWF0Y2guICBVc2luZyAgdGhpcyAgbWV0aG9kICBhbHNvICBhY3RpdmF0ZXMgIHRoZVxuIgoiICAgICAgICAgIFwiY29va2llIHBhcnNlclwiIHdoaWNoIHdpbGwgbWFrZSAgY3VybCAgcmVjb3JkICBpbmNvbWluZ1xuIgoiICAgICAgICAgIGNvb2tpZXMgdG9vLCB3aGljaCBtYXkgYmUgaGFuZHkgaWYgeW91J3JlIHVzaW5nIHRoaXMgaW5cbiIKIiAgICAgICAgICBjb21iaW5hdGlvbiB3aXRoIHRoZSAgLUwvLS1sb2NhdGlvbiAgb3B0aW9uLiAgVGhlICBmaWxlXG4iCiIgICAgICAgICAgZm9ybWF0IG9mIHRoZSBmaWxlIHRvIHJlYWQgY29va2llcyBmcm9tIHNob3VsZCBiZSBwbGFpblxuIgoiICAgICAgICAgIEhUVFAgaGVhZGVycyBvciB0aGUgbmV0c2NhcGUgY29va2llIGZpbGUgZm9ybWF0LlxuIgoiXG4iCiIgICAgICAgICAgTk9URSB0aGF0IHRoZSBmaWxlIHNwZWNpZmllZCB3aXRoIC1iLy0tY29va2llICBpcyAgb25seVxuIgoiICAgICAgICAgIHVzZWQgIGFzICBpbnB1dC4gTm8gY29va2llcyB3aWxsIGJlIHN0b3JlZCBpbiB0aGUgZmlsZS5cbiIKIiAgICAgICAgICBUbyBzdG9yZSBjb29raWVzLCBzYXZlIHRoZSBIVFRQIGhlYWRlcnMgdG8gYSBmaWxlIHVzaW5nXG4iCiIgICAgICAgICAgLUQvLS1kdW1wLWhlYWRlciFcbiIKIlxuIgoiICAgICAtQi8tLXVzZS1hc2NpaVxuIgoiICAgICAgICAgIFVzZSAgQVNDSUkgIHRyYW5zZmVyICB3aGVuICBnZXR0aW5nIGFuIEZUUCBmaWxlIG9yIExEQVBcbiIKIiAgICAgICAgICBpbmZvLiBGb3IgRlRQLCB0aGlzIGNhbiBhbHNvIGJlIGVuZm9yY2VkICBieSAgdXNpbmcgIGFuXG4iCiIgICAgICAgICAgVVJMICB0aGF0ICBlbmRzIHdpdGggXCI7dHlwZT1BXCIuIFRoaXMgb3B0aW9uIGNhdXNlcyBkYXRhXG4iCiIgICAgICAgICAgc2VudCB0byBzdGRvdXQgdG8gYmUgaW4gdGV4dCBtb2RlIGZvciB3aW4zMiBzeXN0ZW1zLlxuIgoiXG4iCiIgICAgIC1jLy0tY29udGludWVcbiIKIiAgICAgICAgICBEZXByZWNhdGVkLiBVc2UgJy1DIC0nIGluc3RlYWQuICBDb250aW51ZS9SZXN1bWUgYSBwcmWtXG4iCiIgICAgICAgICAgdmlvdXMgIGZpbGUgIHRyYW5zZmVyLiAgVGhpcyBpbnN0cnVjdHMgY3VybCB0byBjb250aW51ZVxuIgoiICAgICAgICAgIGFwcGVuZGluZyBkYXRhIG9uIHRoZSAgZmlsZSAgd2hlcmUgIGl0ICB3YXMgIHByZXZpb3VzbHlcbiIKIiAgICAgICAgICBsZWZ0LCAgcG9zc2libHkgIGJlY2F1c2UgIG9mIGEgYnJva2VuIGNvbm5lY3Rpb24gdG8gdGhlXG4iCiIgICAgICAgICAgc2VydmVyLiBUaGVyZSBtdXN0IGJlIGEgbmFtZWQgcGh5c2ljYWwgZmlsZSAgdG8gIGFwcGVuZFxuIgoiICAgICAgICAgIHRvICBmb3IgIHRoaXMgdG8gd29yay4gIE5vdGU6IFVwbG9hZCByZXN1bWUgaXMgZGVwZW5pbmdcbiIKIiAgICAgICAgICBvbiBhIGNvbW1hbmQgbmFtZWQgU0laRSBub3QgYWx3YXlzIHByZXNlbnQgaW4gIGFsbCAgZnRwXG4iCiIgICAgICAgICAgc2VydmVycyEgVXBsb2FkIHJlc3VtZSBpcyBmb3IgRlRQIG9ubHkuICBIVFRQIHJlc3VtZSBpc1xuIgoiICAgICAgICAgIG9ubHkgcG9zc2libGUgd2l0aCBIVFRQLzEuMSBvciBsYXRlciBzZXJ2ZXJzLlxuIgoiXG4iCiIgICAgIC1DLy0tY29udGludWUtYXQgPG9mZnNldD5cbiIKIiAgICAgICAgICBDb250aW51ZS9SZXN1bWUgYSBwcmV2aW91cyBmaWxlIHRyYW5zZmVyIGF0ICB0aGUgIGdpdmVuXG4iCiIgICAgICAgICAgb2Zmc2V0LiAgVGhlICBnaXZlbiBvZmZzZXQgaXMgdGhlIGV4YWN0IG51bWJlciBvZiBieXRlc1xuIgoiICAgICAgICAgIHRoYXQgd2lsbCBiZSBza2lwcGVkIGNvdW50ZWQgZnJvbSB0aGUgYmVnaW5uaW5nIG9mICB0aGVcbiIKIiAgICAgICAgICBzb3VyY2UgZmlsZSBiZWZvcmUgaXQgaXMgdHJhbnNmZXJlZCB0byB0aGUgZGVzdGluYXRpb24uXG4iCiIgICAgICAgICAgSWYgdXNlZCB3aXRoIHVwbG9hZHMsIHRoZSBmdHAgc2VydmVyIGNvbW1hbmQgU0laRSAgd2lsbFxuIgoiICAgICAgICAgIG5vdCAgYmUgIHVzZWQgIGJ5ICBjdXJsLiBVcGxvYWQgcmVzdW1lIGlzIGZvciBGVFAgb25seS5cbiIKIiAgICAgICAgICBIVFRQIHJlc3VtZSBpcyBvbmx5IHBvc3NpYmxlICB3aXRoICBIVFRQLzEuMSAgb3IgIGxhdGVyXG4iCiIgICAgICAgICAgc2VydmVycy5cbiIKIlxuIgoiICAgICAtZC8tLWRhdGEgPGRhdGE+XG4iCiIgICAgICAgICAgKEhUVFApICBTZW5kcyAgdGhlICBzcGVjaWZpZWQgZGF0YSBpbiBhIFBPU1QgcmVxdWVzdCB0b1xuIgoiICAgICAgICAgIHRoZSBIVFRQIHNlcnZlci4gTm90ZSB0aGF0IHRoZSBkYXRhIGlzIHNlbnQgZXhhY3RseSAgYXNcbiIKIiAgICAgICAgICBzcGVjaWZpZWQgIHdpdGggIG5vIGV4dHJhIHByb2Nlc3NpbmcgKHdpdGggYWxsIG5ld2xpbmVzXG4iCiIgICAgICAgICAgY3V0IG9mZikuICBUaGUgZGF0YSBpcyBleHBlY3RlZCAgdG8gIGJlICBcInVybC1lbmNvZGVkXCIuXG4iCiIgICAgICAgICAgVGhpcyAgd2lsbCAgY2F1c2UgIGN1cmwgIHRvIHBhc3MgdGhlIGRhdGEgdG8gdGhlIHNlcnZlclxuIgoiICAgICAgICAgIHVzaW5nICB0aGUgIGNvbnRlbnQtdHlwZSAgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbq1cbiIKIiAgICAgICAgICBjb2RlZC4gQ29tcGFyZSB0byAtRi4gSWYgbW9yZSB0aGFuIG9uZSAtZC8tLWRhdGEgb3B0aW9uXG4iCiIgICAgICAgICAgaXMgdXNlZCBvbiB0aGUgc2FtZSBjb21tYW5kIGxpbmUsIHRoZSBkYXRhIHBpZWNlcyBzcGVjrVxuIgoiICAgICAgICAgIGlmaWVkICB3aWxsIGJlIG1lcmdlZCB0b2dldGhlciB3aXRoIGEgc2VwYXJhdGluZyAmLWxldK1cbiIKIiAgICAgICAgICB0ZXIuIFRodXMsIHVzaW5nICctZCBuYW1lPWRhbmllbCAtZCBza2lsbD1sb3VzeScgIHdvdWxkXG4iCiIgICAgICAgICAgZ2VuZXJhdGUgYSBwb3N0IGNodW5rIHRoYXQgbG9va3MgbGlrZVxuIgoiXG4iCiIgICAgICAgICAgSWYgeW91IHN0YXJ0IHRoZSBkYXRhIHdpdGggdGhlIGxldHRlciBALCB0aGUgcmVzdFxuIgoiICAgICAgICAgIHNob3VsZCBiZSBhIGZpbGUgbmFtZSB0byByZWFkIHRoZSBkYXRhIGZyb20sIG9yIC0gaWZcbiIKIiAgICAgICAgICB5b3Ugd2FudCBjdXJsIHRvIHJlYWQgdGhlIGRhdGEgZnJvbSBzdGRpbi4gIFRoZSBjb26tXG4iCiIgICAgICAgICAgdGVudHMgb2YgdGhlIGZpbGUgbXVzdCBhbHJlYWR5IGJlIHVybC1lbmNvZGVkLiBNdWx0aXBsZVxuIgoiICAgICAgICAgIGZpbGVzIGNhbiBhbHNvIGJlIHNwZWNpZmllZC5cbiIKIlxuIgoiICAgICAgICAgIFRvIHBvc3QgZGF0YSBwdXJlbHkgYmluYXJ5LCB5b3Ugc2hvdWxkIGluc3RlYWQgdXNlIHRoZVxuIgoiICAgICAgICAgIC0tZGF0YS1iaW5hcnkgb3B0aW9uLlxuIgoiXG4iCiIgICAgICAgICAgLWQvLS1kYXRhIGlzIHRoZSBzYW1lIGFzIC0tZGF0YS1hc2NpaS5cbiIKIlxuIgoiICAgICAtLWRhdGEtYXNjaWkgPGRhdGE+XG4iCiIgICAgICAgICAgKEhUVFApIFRoaXMgaXMgYW4gYWxpYXMgZm9yIHRoZSAtZC8tLWRhdGEgb3B0aW9uLlxuIgoiXG4iCiIgICAgIC0tZGF0YS1iaW5hcnkgPGRhdGE+XG4iCiIgICAgICAgICAgKEhUVFApIFRoaXMgcG9zdHMgZGF0YSBpbiBhIHNpbWlsYXIgbWFubmVyIGFzIC0tZGF0YS1cbiIKIiAgICAgICAgICBhc2NpaSBkb2VzLCBhbHRob3VnaCB3aGVuIHVzaW5nIHRoaXMgb3B0aW9uIHRoZSBlbnRpcmVcbiIKIiAgICAgICAgICBjb250ZXh0IG9mIHRoZSBwb3N0ZWQgZGF0YSBpcyBrZXB0IGFzLWlzLiBJZiB5b3Ugd2FudFxuIgoiICAgICAgICAgIHRvIHBvc3QgYSBiaW5hcnkgZmlsZSB3aXRob3V0IHRoZSBzdHJpcC1uZXdsaW5lcyBmZWGtXG4iCiIgICAgICAgICAgdHVyZSBvZiB0aGUgLS1kYXRhLWFzY2lpIG9wdGlvbiwgdGhpcyBpcyBmb3IgeW91LlxuIgoiXG4iCiIgICAgIC1ELy0tZHVtcC1oZWFkZXIgPGZpbGU+XG4iCiIgICAgICAgICAgKEhUVFAvRlRQKSBXcml0ZSB0aGUgSFRUUCBoZWFkZXJzIHRvIHRoaXMgZmlsZS4gV3JpdGVcbiIKIiAgICAgICAgICB0aGUgRlRQIGZpbGUgaW5mbyB0byB0aGlzIGZpbGUgaWYgLUkvLS1oZWFkIGlzIHVzZWQuXG4iCiJcbiIKIiAgICAgICAgICBUaGlzIG9wdGlvbiBpcyBoYW5keSB0byB1c2Ugd2hlbiB5b3Ugd2FudCB0byBzdG9yZSB0aGVcbiIKIiAgICAgICAgICBjb29raWVzIHRoYXQgYSBIVFRQIHNpdGUgc2VuZHMgdG8geW91LiBUaGUgY29va2llc1xuIgoiICAgICAgICAgIGNvdWxkIHRoZW4gYmUgcmVhZCBpbiBhIHNlY29uZCBjdXJsIGludm9rZSBieSB1c2luZyB0aGVcbiIKIiAgICAgICAgICAtYi8tLWNvb2tpZSBvcHRpb24hXG4iCiJcbiIKIiAgICAgLWUvLS1yZWZlcmVyIDxVUkw+XG4iCiIgICAgICAgICAgKEhUVFApIFNlbmRzIHRoZSBcIlJlZmVyZXIgUGFnZVwiIGluZm9ybWF0aW9uIHRvIHRoZSBIVFRQXG4iCiIgICAgICAgICAgc2VydmVyLiBUaGlzIGNhbiBhbHNvIGJlIHNldCB3aXRoIHRoZSAtSC8tLWhlYWRlciBmbGFnXG4iCiIgICAgICAgICAgb2YgY291cnNlLiAgV2hlbiB1c2VkIHdpdGggLUwvLS1sb2NhdGlvbiB5b3UgY2FuIGFwcGVuZFxuIgoiICAgICAgICAgIFwiO2F1dG9cIiB0byB0aGUgcmVmZXJlciBVUkwgdG8gbWFrZSBjdXJsIGF1dG9tYXRpY2FsbHlcbiIKIiAgICAgICAgICBzZXQgdGhlIHByZXZpb3VzIFVSTCB3aGVuIGl0IGZvbGxvd3MgYSBMb2NhdGlvbjpcbiIKIiAgICAgICAgICBoZWFkZXIuIFRoZSBcIjthdXRvXCIgc3RyaW5nIGNhbiBiZSB1c2VkIGFsb25lLCBldmVuIGlmXG4iCiIgICAgICAgICAgeW91IGRvbid0IHNldCBhbiBpbml0aWFsIHJlZmVyZXIuXG4iCiJcbiIKIiAgICAgLUUvLS1jZXJ0IDxjZXJ0aWZpY2F0ZVs6cGFzc3dvcmRdPlxuIgoiICAgICAgICAgIChIVFRQUykgVGVsbHMgY3VybCB0byB1c2UgdGhlIHNwZWNpZmllZCBjZXJ0aWZpY2F0ZVxuIgoiICAgICAgICAgIGZpbGUgd2hlbiBnZXR0aW5nIGEgZmlsZSB3aXRoIEhUVFBTLiBUaGUgY2VydGlmaWNhdGVcbiIKIiAgICAgICAgICBtdXN0IGJlIGluIFBFTSBmb3JtYXQuICBJZiB0aGUgb3B0aW9uYWwgcGFzc3dvcmQgaXNuJ3RcbiIKIiAgICAgICAgICBzcGVjaWZpZWQsIGl0IHdpbGwgYmUgcXVlcmllZCBmb3Igb24gdGhlIHRlcm1pbmFsLiBOb3RlXG4iCiIgICAgICAgICAgdGhhdCB0aGlzIGNlcnRpZmljYXRlIGlzIHRoZSBwcml2YXRlIGtleSBhbmQgdGhlIHByaa1cbiIKIiAgICAgICAgICB2YXRlIGNlcnRpZmljYXRlIGNvbmNhdGVuYXRlZCFcbiIKIlxuIgoiICAgICAtLWNhY2VydCA8Q0EgY2VydGlmaWNhdGU+XG4iCiIgICAgICAgICAgKEhUVFBTKSBUZWxscyBjdXJsIHRvIHVzZSB0aGUgc3BlY2lmaWVkIGNlcnRpZmljYXRlXG4iCiIgICAgICAgICAgZmlsZSB0byB2ZXJpZnkgdGhlIHBlZXIuIFRoZSBjZXJ0aWZpY2F0ZSBtdXN0IGJlIGluIFBFTVxuIgoiICAgICAgICAgIGZvcm1hdC5cbiIKIlxuIgoiICAgICAtZi8tLWZhaWxcbiIKIiAgICAgICAgICAoSFRUUCkgRmFpbCBzaWxlbnRseSAobm8gb3V0cHV0IGF0IGFsbCkgb24gc2VydmVyXG4iCiIgICAgICAgICAgZXJyb3JzLiBUaGlzIGlzIG1vc3RseSBkb25lIGxpa2UgdGhpcyB0byBiZXR0ZXIgZW5hYmxlXG4iCiIgICAgICAgICAgc2NyaXB0cyBldGMgdG8gYmV0dGVyIGRlYWwgd2l0aCBmYWlsZWQgYXR0ZW1wdHMuIEluXG4iCiIgICAgICAgICAgbm9ybWFsIGNhc2VzIHdoZW4gYSBIVFRQIHNlcnZlciBmYWlscyB0byBkZWxpdmVyIGEgZG9jrVxuIgoiICAgICAgICAgIHVtZW50LCBpdCByZXR1cm5zIGEgSFRNTCBkb2N1bWVudCBzdGF0aW5nIHNvICh3aGljaFxuIgoiICAgICAgICAgIG9mdGVuIGFsc28gZGVzY3JpYmVzIHdoeSBhbmQgbW9yZSkuIFRoaXMgZmxhZyB3aWxsIHByZa1cbiIKIiAgICAgICAgICB2ZW50IGN1cmwgZnJvbSBvdXRwdXR0aW5nIHRoYXQgYW5kIGZhaWwgc2lsZW50bHlcbiIKIiAgICAgICAgICBpbnN0ZWFkLlxuIgoiXG4iCiIgICAgIC1GLy0tZm9ybSA8bmFtZT1jb250ZW50PlxuIgoiICAgICAgICAgIChIVFRQKSBUaGlzIGxldHMgY3VybCBlbXVsYXRlIGEgZmlsbGVkIGluIGZvcm0gaW4gd2hpY2hcbiIKIiAgICAgICAgICBhIHVzZXIgaGFzIHByZXNzZWQgdGhlIHN1Ym1pdCBidXR0b24uIFRoaXMgY2F1c2VzIGN1cmxcbiIKIiAgICAgICAgICB0byBQT1NUIGRhdGEgdXNpbmcgdGhlIGNvbnRlbnQtdHlwZSBtdWx0aXBhcnQvZm9ybS1kYXRhXG4iCiIgICAgICAgICAgYWNjb3JkaW5nIHRvIFJGQzE4NjcuIFRoaXMgZW5hYmxlcyB1cGxvYWRpbmcgb2YgYmluYXJ5XG4iCiIgICAgICAgICAgZmlsZXMgZXRjLiBUbyBmb3JjZSB0aGUgJ2NvbnRlbnQnIHBhcnQgdG8gYmUgYmUgYSBmaWxlLFxuIgoiICAgICAgICAgIHByZWZpeCB0aGUgZmlsZSBuYW1lIHdpdGggYW4gQCBzaWduLiBUbyBqdXN0IGdldCB0aGVcbiIKIiAgICAgICAgICBjb250ZW50IHBhcnQgZnJvbSBhIGZpbGUsIHByZWZpeCB0aGUgZmlsZSBuYW1lIHdpdGggdGhlXG4iCiIgICAgICAgICAgbGV0dGVyIDwuIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gQCBhbmQgPCBpcyB0aGVuIHRoYXQgQFxuIgoiICAgICAgICAgIG1ha2VzIGEgZmlsZSBnZXQgYXR0YWNoZWQgaW4gdGhlIHBvc3QgYXMgYSBmaWxlIHVwbG9hZCxcbiIKIiAgICAgICAgICB3aGlsZSB0aGUgPCBtYWtlcyBhIHRleHQgZmllbGQgYW5kIGp1c3QgZ2V0IHRoZSBjb26tXG4iCiIgICAgICAgICAgdGVudHMgZm9yIHRoYXQgdGV4dCBmaWVsZCBmcm9tIGEgZmlsZS5cbiIKIlxuIgoiICAgICAgICAgIEV4YW1wbGUsIHRvIHNlbmQgeW91ciBwYXNzd29yZCBmaWxlIHRvIHRoZSBzZXJ2ZXIsXG4iCiIgICAgICAgICAgd2hlcmUgaW5wdXQ6XG4iCiJcbiIKIiAgICAgICAgICBjdXJsIC1GIHBhc3N3b3JkPUAvZXRjL3Bhc3N3ZCB3d3cubXlwYXNzd29yZHMuY29tXG4iCiJcbiIKIiAgICAgICAgICBUbyByZWFkIHRoZSBmaWxlJ3MgY29udGVudCBmcm9tIHN0ZGluIGluc3RlZCBvZiBhIGZpbGUsXG4iCiIgICAgICAgICAgdXNlIC0gd2hlcmUgdGhlIGZpbGUgbmFtZSBzaG91bGQndmUgYmVlbi4gVGhpcyBnb2VzIGZvclxuIgoiICAgICAgICAgIGJvdGggQCBhbmQgPCBjb25zdHJ1Y3RzLlxuIgoiXG4iCiIgICAgIC1oLy0taGVscFxuIgoiICAgICAgICAgIFVzYWdlIGhlbHAuXG4iCiJcbiIKIiAgICAgLUgvLS1oZWFkZXIgPGhlYWRlcj5cbiIKIiAgICAgICAgICAoSFRUUCkgRXh0cmEgaGVhZGVyIHRvIHVzZSB3aGVuIGdldHRpbmcgYSB3ZWIgcGFnZS4gWW91XG4iCiIgICAgICAgICAgbWF5IHNwZWNpZnkgYW55IG51bWJlciBvZiBleHRyYSBoZWFkZXJzLiBOb3RlIHRoYXQgaWZcbiIKIiAgICAgICAgICB5b3Ugc2hvdWxkIGFkZCBhIGN1c3RvbSBoZWFkZXIgdGhhdCBoYXMgdGhlIHNhbWUgbmFtZVxuIgoiICAgICAgICAgIGFzIG9uZSBvZiB0aGUgaW50ZXJuYWwgb25lcyBjdXJsIHdvdWxkIHVzZSwgeW91ciBleHRlcq1cbiIKIiAgICAgICAgICBuYWxseSBzZXQgaGVhZGVyIHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSBpbnRlcm5hbFxuIgoiICAgICAgICAgIG9uZS4gVGhpcyBhbGxvd3MgeW91IHRvIG1ha2UgZXZlbiB0cmlja2llciBzdHVmZiB0aGFuXG4iCiIgICAgICAgICAgY3VybCB3b3VsZCBub3JtYWxseSBkby4gWW91IHNob3VsZCBub3QgcmVwbGFjZVxuIgoiICAgICAgICAgIGludGVybmFsbHkgc2V0IGhlYWRlcnMgd2l0aG91dCBrbm93aW5nIHBlcmZlY3RseSB3ZWxsXG4iCiIgICAgICAgICAgd2hhdCB5b3UncmUgZG9pbmcuIFJlcGxhY2luZyBhbiBpbnRlcm5hbCBoZWFkZXIgd2l0aFxuIgoiICAgICAgICAgIG9uZSB3aXRob3V0IGNvbnRlbnQgb24gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGNvbG9uIHdpbGxcbiIKIiAgICAgICAgICBwcmV2ZW50IHRoYXQgaGVhZGVyIGZyb20gYXBwZWFyaW5nLlxuIgoiXG4iCiIgICAgIC1pLy0taW5jbHVkZVxuIgoiICAgICAgICAgIChIVFRQKSBJbmNsdWRlIHRoZSBIVFRQLWhlYWRlciBpbiB0aGUgb3V0cHV0LiBUaGUgSFRUUC1cbiIKIiAgICAgICAgICBoZWFkZXIgaW5jbHVkZXMgdGhpbmdzIGxpa2Ugc2VydmVyLW5hbWUsIGRhdGUgb2YgdGhlXG4iCiIgICAgICAgICAgZG9jdW1lbnQsIEhUVFAtdmVyc2lvbiBhbmQgbW9yZS4uLlxuIgoiXG4iCiIgICAgIC0taW50ZXJmYWNlIDxuYW1lPlxuIgoiICAgICAgICAgIFBlcmZvcm0gYW4gb3BlcmF0aW9uIHVzaW5nIGEgc3BlY2lmaWVkIGludGVyZmFjZS4gWW91XG4iCiIgICAgICAgICAgY2FuIGVudGVyIGludGVyZmFjZSBuYW1lLCBJUCBhZGRyZXNzIG9yIGhvc3QgbmFtZS4gQW5cbiIKIiAgICAgICAgICBleGFtcGxlIGNvdWxkIGxvb2sgbGlrZTpcbiIKIlxuIgoiICAgICAgICAgIGN1cmwgLS1pbnRlcmZhY2UgZXRoMDoxIGh0dHA6Ly93d3cubmV0c2NhcGUuY29tL1xuIgopOwogcHV0cygKIlxuIgoiICAgICAtSS8tLWhlYWRcbiIKIiAgICAgICAgICAoSFRUUC9GVFApIEZldGNoIHRoZSBIVFRQLWhlYWRlciBvbmx5ISBIVFRQLXNlcnZlcnNcbiIKIiAgICAgICAgICBmZWF0dXJlIHRoZSBjb21tYW5kIEhFQUQgd2hpY2ggdGhpcyB1c2VzIHRvIGdldCBub3RoaW5nXG4iCiIgICAgICAgICAgYnV0IHRoZSBoZWFkZXIgb2YgYSBkb2N1bWVudC4gV2hlbiB1c2VkIG9uIGEgRlRQIGZpbGUsXG4iCiIgICAgICAgICAgY3VybCBkaXNwbGF5cyB0aGUgZmlsZSBzaXplIG9ubHkuXG4iCiJcbiIKIiAgICAgLS1rcmI0IDxsZXZlbD5cbiIKIiAgICAgICAgICAoRlRQKSBFbmFibGUga2VyYmVyb3M0IGF1dGhlbnRpY2F0aW9uIGFuZCB1c2UuIFRoZVxuIgoiICAgICAgICAgIGxldmVsIG11c3QgYmUgZW50ZXJlZCBhbmQgc2hvdWxkIGJlIG9uZSBvZiAnY2xlYXInLFxuIgoiICAgICAgICAgICdzYWZlJywgJ2NvbmZpZGVudGlhbCcgb3IgJ3ByaXZhdGUnLiBTaG91bGQgeW91IHVzZSBhXG4iCiIgICAgICAgICAgbGV2ZWwgdGhhdCBpcyBub3Qgb25lIG9mIHRoZXNlLCAncHJpdmF0ZScgd2lsbCBpbnN0ZWFkXG4iCiIgICAgICAgICAgYmUgdXNlZC5cbiIKIlxuIgoiICAgICAtSy8tLWNvbmZpZyA8Y29uZmlnIGZpbGU+XG4iCiIgICAgICAgICAgU3BlY2lmeSB3aGljaCBjb25maWcgZmlsZSB0byByZWFkIGN1cmwgYXJndW1lbnRzIGZyb20uXG4iCiIgICAgICAgICAgVGhlIGNvbmZpZyBmaWxlIGlzIGEgdGV4dCBmaWxlIGluIHdoaWNoIGNvbW1hbmQgbGluZVxuIgoiICAgICAgICAgIGFyZ3VtZW50cyBjYW4gYmUgd3JpdHRlbiB3aGljaCB0aGVuIHdpbGwgYmUgdXNlZCBhcyBpZlxuIgoiICAgICAgICAgIHRoZXkgd2VyZSB3cml0dGVuIG9uIHRoZSBhY3R1YWwgY29tbWFuZCBsaW5lLiBJZiB0aGVcbiIKIiAgICAgICAgICBmaXJzdCBjb2x1bW4gb2YgYSBjb25maWcgbGluZSBpcyBhICcjJyBjaGFyYWN0ZXIsIHRoZVxuIgoiICAgICAgICAgIHJlc3Qgb2YgdGhlIGxpbmUgd2lsbCBiZSB0cmVhdGVkIGFzIGEgY29tbWVudC5cbiIKIlxuIgoiICAgICAgICAgIFNwZWNpZnkgdGhlIGZpbGVuYW1lIGFzICctJyB0byBtYWtlIGN1cmwgcmVhZCB0aGUgZmlsZVxuIgoiICAgICAgICAgIGZyb20gc3RkaW4uXG4iCiJcbiIKIiAgICAgLWwvLS1saXN0LW9ubHlcbiIKIiAgICAgICAgICAoRlRQKSBXaGVuIGxpc3RpbmcgYW4gRlRQIGRpcmVjdG9yeSwgdGhpcyBzd2l0Y2ggZm9yY2VzXG4iCiIgICAgICAgICAgYSBuYW1lLW9ubHkgdmlldy4gIEVzcGVjaWFsbHkgdXNlZnVsIGlmIHlvdSB3YW50IHRvXG4iCiIgICAgICAgICAgbWFjaGluZS1wYXJzZSB0aGUgY29udGVudHMgb2YgYW4gRlRQIGRpcmVjdG9yeSBzaW5jZVxuIgoiICAgICAgICAgIHRoZSBub3JtYWwgZGlyZWN0b3J5IHZpZXcgZG9lc24ndCB1c2UgYSBzdGFuZGFyZCBsb29rXG4iCiIgICAgICAgICAgb3IgZm9ybWF0LlxuIgoiXG4iCiIgICAgIC1MLy0tbG9jYXRpb25cbiIKIiAgICAgICAgICAoSFRUUC9IVFRQUykgSWYgdGhlIHNlcnZlciByZXBvcnRzIHRoYXQgdGhlIHJlcXVlc3RlZFxuIgoiICAgICAgICAgIHBhZ2UgaGFzIGEgZGlmZmVyZW50IGxvY2F0aW9uIChpbmRpY2F0ZWQgd2l0aCB0aGVcbiIKIiAgICAgICAgICBoZWFkZXIgbGluZSBMb2NhdGlvbjopIHRoaXMgZmxhZyB3aWxsIGxldCBjdXJsIGF0dGVtcHRcbiIKIiAgICAgICAgICB0byByZWF0dGVtcHQgdGhlIGdldCBvbiB0aGUgbmV3IHBsYWNlLiBJZiB1c2VkIHRvZ2V0aGVyXG4iCiIgICAgICAgICAgd2l0aCAtaSBvciAtSSwgaGVhZGVycyBmcm9tIGFsbCByZXF1ZXN0ZWQgcGFnZXMgd2lsbCBiZVxuIgoiICAgICAgICAgIHNob3duLiBJZiB0aGlzIGZsYWcgaXMgdXNlZCB3aGVuIG1ha2luZyBhIEhUVFAgUE9TVCxcbiIKIiAgICAgICAgICBjdXJsIHdpbGwgYXV0b21hdGljYWxseSBzd2l0Y2ggdG8gR0VUIGFmdGVyIHRoZSBpbml0aWFsXG4iCiIgICAgICAgICAgUE9TVCBoYXMgYmVlbiBkb25lLlxuIgoiXG4iCiIgICAgIC1tLy0tbWF4LXRpbWUgPHNlY29uZHM+XG4iCiIgICAgICAgICAgTWF4aW11bSB0aW1lIGluIHNlY29uZHMgdGhhdCB5b3UgYWxsb3cgdGhlIHdob2xlIG9wZXJhrVxuIgoiICAgICAgICAgIHRpb24gdG8gdGFrZS4gIFRoaXMgaXMgdXNlZnVsIGZvciBwcmV2ZW50aW5nIHlvdXIgYmF0Y2hcbiIKIiAgICAgICAgICBqb2JzIGZyb20gaGFuZ2luZyBmb3IgaG91cnMgZHVlIHRvIHNsb3cgbmV0d29ya3Mgb3JcbiIKIiAgICAgICAgICBsaW5rcyBnb2luZyBkb3duLiAgVGhpcyBkb2Vzbid0IHdvcmsgZnVsbHkgaW4gd2luMzJcbiIKIiAgICAgICAgICBzeXN0ZW1zLlxuIgoiXG4iCiIgICAgIC1NLy0tbWFudWFsXG4iCiIgICAgICAgICAgTWFudWFsLiBEaXNwbGF5IHRoZSBodWdlIGhlbHAgdGV4dC5cbiIKIlxuIgoiICAgICAtbi8tLW5ldHJjXG4iCiIgICAgICAgICAgTWFrZXMgY3VybCBzY2FuIHRoZSAubmV0cmMgZmlsZSBpbiB0aGUgdXNlcidzIGhvbWVcbiIKIiAgICAgICAgICBkaXJlY3RvcnkgZm9yIGxvZ2luIG5hbWUgYW5kIHBhc3N3b3JkLiBUaGlzIGlzIHR5cGmtXG4iCiIgICAgICAgICAgY2FsbHkgdXNlZCBmb3IgZnRwIG9uIHVuaXguIElmIHVzZWQgd2l0aCBodHRwLCBjdXJsXG4iCiIgICAgICAgICAgd2lsbCBlbmFibGUgdXNlciBhdXRoZW50aWNhdGlvbi4gU2VlIG5ldHJjKDQpIGZvclxuIgoiICAgICAgICAgIGRldGFpbHMgb24gdGhlIGZpbGUgZm9ybWF0LiBDdXJsIHdpbGwgbm90IGNvbXBsYWluIGlmXG4iCiIgICAgICAgICAgdGhhdCBmaWxlIGhhc24ndCB0aGUgcmlnaHQgcGVybWlzc2lvbnMgKGl0IHNob3VsZCBub3RcbiIKIiAgICAgICAgICBiZSB3b3JsZCBub3IgZ3JvdXAgcmVhZGFibGUpLiBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGVcbiIKIiAgICAgICAgICBcIkhPTUVcIiBpcyB1c2VkIHRvIGZpbmQgdGhlIGhvbWUgZGlyZWN0b3J5LlxuIgoiXG4iCiIgICAgICAgICAgQSBxdWljayBhbmQgdmVyeSBzaW1wbGUgZXhhbXBsZSBvZiBob3cgdG8gc2V0dXAgYVxuIgoiICAgICAgICAgIC5uZXRyYyB0byBhbGxvdyBjdXJsIHRvIGZ0cCB0byB0aGUgbWFjaGluZVxuIgoiICAgICAgICAgIGhvc3QuZG9tYWluLmNvbSB3aXRoIHVzZXIgbmFtZVxuIgoiXG4iCiIgICAgICAgICAgbWFjaGluZSBob3N0LmRvbWFpbi5jb20gbG9naW4gbXlzZWxmIHBhc3N3b3JkIHNlY3JldFxuIgoiXG4iCiIgICAgIC1OLy0tbm8tYnVmZmVyXG4iCiIgICAgICAgICAgRGlzYWJsZXMgdGhlIGJ1ZmZlcmluZyBvZiB0aGUgb3V0cHV0IHN0cmVhbS4gSW4gbm9ybWFsXG4iCiIgICAgICAgICAgd29yayBzaXR1YXRpb25zLCBjdXJsIHdpbGwgdXNlIGEgc3RhbmRhcmQgYnVmZmVyZWQgb3V0rVxuIgoiICAgICAgICAgIHB1dCBzdHJlYW0gdGhhdCB3aWxsIGhhdmUgdGhlIGVmZmVjdCB0aGF0IGl0IHdpbGwgb3V0rVxuIgoiICAgICAgICAgIHB1dCB0aGUgZGF0YSBpbiBjaHVua3MsIG5vdCBuZWNlc3NhcmlseSBleGFjdGx5IHdoZW5cbiIKIiAgICAgICAgICB0aGUgZGF0YSBhcnJpdmVzLiAgVXNpbmcgdGhpcyBvcHRpb24gd2lsbCBkaXNhYmxlIHRoYXRcbiIKIiAgICAgICAgICBidWZmZXJpbmcuXG4iCiJcbiIKIiAgICAgLW8vLS1vdXRwdXQgPGZpbGU+XG4iCiIgICAgICAgICAgV3JpdGUgb3V0cHV0IHRvIDxmaWxlPiBpbnN0ZWFkIG9mIHN0ZG91dC4gSWYgeW91IGFyZVxuIgoiICAgICAgICAgIHVzaW5nIHt9IG9yIFtdIHRvIGZldGNoIG11bHRpcGxlIGRvY3VtZW50cywgeW91IGNhbiB1c2VcbiIKIiAgICAgICAgICAnIycgZm9sbG93ZWQgYnkgYSBudW1iZXIgaW4gdGhlIDxmaWxlPiBzcGVjaWZpZXIuIFRoYXRcbiIKIiAgICAgICAgICB2YXJpYWJsZSB3aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhlIGN1cnJlbnQgc3RyaW5nIGZvclxuIgoiICAgICAgICAgIHRoZSBVUkwgYmVpbmcgZmV0Y2hlZC4gTGlrZSBpbjpcbiIKIlxuIgoiICAgICAgICAgICAgY3VybCBodHRwOi8ve29uZSx0d299LnNpdGUuY29tIC1vIFwiZmlsZV8jMS50eHRcIlxuIgoiXG4iCiIgICAgICAgICAgb3IgdXNlIHNldmVyYWwgdmFyaWFibGVzIGxpa2U6XG4iCiJcbiIKIiAgICAgICAgICAgIGN1cmwgaHR0cDovL3tzaXRlLGhvc3R9Lmhvc3RbMS01XS5jb20gLW8gXCIjMV8jMlwiXG4iCiIgICAgIC1PLy0tcmVtb3RlLW5hbWVcbiIKIiAgICAgICAgICBXcml0ZSBvdXRwdXQgdG8gYSBsb2NhbCBmaWxlIG5hbWVkIGxpa2UgdGhlIHJlbW90ZSBmaWxlXG4iCiIgICAgICAgICAgd2UgZ2V0LiAoT25seSB0aGUgZmlsZSBwYXJ0IG9mIHRoZSByZW1vdGUgZmlsZSBpcyB1c2VkLFxuIgoiICAgICAgICAgIHRoZSBwYXRoIGlzIGN1dCBvZmYuKVxuIgoiXG4iCiIgICAgIC1wLy0tcHJveHl0dW5uZWxcbiIKIiAgICAgICAgICBXaGVuIGFuIEhUVFAgcHJveHkgaXMgdXNlZCwgdGhpcyBvcHRpb24gd2lsbCBjYXVzZSBub24tXG4iCiIgICAgICAgICAgSFRUUCBwcm90b2NvbHMgdG8gYXR0ZW1wdCB0byB0dW5uZWwgdGhyb3VnaCB0aGUgcHJveHlcbiIKIiAgICAgICAgICBpbnN0ZWFkIG9mIG1lcmVseSB1c2luZyBpdCB0byBkbyBIVFRQLWxpa2Ugb3BlcmF0aW9ucy5cbiIKIiAgICAgICAgICBUaGUgdHVubmVsIGFwcHJvYWNoIGlzIG1hZGUgd2l0aCB0aGUgSFRUUCBwcm94eSBDT05ORUNUXG4iCiIgICAgICAgICAgcmVxdWVzdCBhbmQgcmVxdWlyZXMgdGhhdCB0aGUgcHJveHkgYWxsb3dzIGRpcmVjdCBjb26tXG4iCiIgICAgICAgICAgbmVjdCB0byB0aGUgcmVtb3RlIHBvcnQgbnVtYmVyIGN1cmwgd2FudHMgdG8gdHVubmVsXG4iCiIgICAgICAgICAgdGhyb3VnaCB0by5cbiIKIlxuIgoiICAgICAtUC8tLWZ0cHBvcnQgPGFkZHJlc3M+XG4iCiIgICAgICAgICAgKEZUUCkgUmV2ZXJzZXMgdGhlIGluaXRpYXRvci9saXN0ZW5lciByb2xlcyB3aGVuIGNvbq1cbiIKIiAgICAgICAgICBuZWN0aW5nIHdpdGggZnRwLiBUaGlzIHN3aXRjaCBtYWtlcyBDdXJsIHVzZSB0aGUgUE9SVFxuIgoiICAgICAgICAgIGNvbW1hbmQgaW5zdGVhZCBvZiBQQVNWLiBJbiBwcmFjdGljZSwgUE9SVCB0ZWxscyB0aGVcbiIKIiAgICAgICAgICBzZXJ2ZXIgdG8gY29ubmVjdCB0byB0aGUgY2xpZW50J3Mgc3BlY2lmaWVkIGFkZHJlc3MgYW5kXG4iCiIgICAgICAgICAgcG9ydCwgd2hpbGUgUEFTViBhc2tzIHRoZSBzZXJ2ZXIgZm9yIGFuIGlwIGFkZHJlc3MgYW5kXG4iCiIgICAgICAgICAgcG9ydCB0byBjb25uZWN0IHRvLiA8YWRkcmVzcz4gc2hvdWxkIGJlIG9uZSBvZjpcbiIKIlxuIgoiICAgICAgICAgIGludGVyZmFjZSAgIGkuZSBcImV0aDBcIiB0byBzcGVjaWZ5IHdoaWNoIGludGVyZmFjZSdzIElQXG4iCiIgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzcyB5b3Ugd2FudCB0byB1c2UgIChVbml4IG9ubHkpXG4iCiJcbiIKIiAgICAgICAgICBJUCBhZGRyZXNzICBpLmUgXCIxOTIuMTY4LjEwLjFcIiB0byBzcGVjaWZ5IGV4YWN0IElQIG51ba1cbiIKIiAgICAgICAgICAgICAgICAgICAgICBiZXJcbiIKIlxuIgoiICAgICAgICAgIGhvc3QgbmFtZSAgIGkuZSBcIm15Lmhvc3QuZG9tYWluXCIgdG8gc3BlY2lmeSBtYWNoaW5lXG4iCiJcbiIKIiAgICAgICAgICAtICAgICAgICAgICAoYW55IHNpbmdsZS1sZXR0ZXIgc3RyaW5nKSB0byBtYWtlIGl0IHBpY2tcbiIKIiAgICAgICAgICAgICAgICAgICAgICB0aGUgbWFjaGluZSdzIGRlZmF1bHRcbiIKIlxuIgoiICAgICAtcSAgIElmIHVzZWQgYXMgdGhlIGZpcnN0IHBhcmFtZXRlciBvbiB0aGUgY29tbWFuZCBsaW5lLCB0aGVcbiIKIiAgICAgICAgICAkSE9NRS8uY3VybHJjIGZpbGUgd2lsbCBub3QgYmUgcmVhZCBhbmQgdXNlZCBhcyBhIGNvbq1cbiIKIiAgICAgICAgICBmaWcgZmlsZS5cbiIKIlxuIgoiICAgICAtUS8tLXF1b3RlIDxjb21hbmQ+XG4iCiIgICAgICAgICAgKEZUUCkgU2VuZCBhbiBhcmJpdHJhcnkgY29tbWFuZCB0byB0aGUgcmVtb3RlIEZUUFxuIgoiICAgICAgICAgIHNlcnZlciwgYnkgdXNpbmcgdGhlIFFVT1RFIGNvbW1hbmQgb2YgdGhlIHNlcnZlci4gTm90XG4iCiIgICAgICAgICAgYWxsIHNlcnZlcnMgc3VwcG9ydCB0aGlzIGNvbW1hbmQsIGFuZCB0aGUgc2V0IG9mIFFVT1RFXG4iCiIgICAgICAgICAgY29tbWFuZHMgYXJlIHNlcnZlciBzcGVjaWZpYyEgUXVvdGUgY29tbWFuZHMgYXJlIHNlbnRcbiIKIiAgICAgICAgICBCRUZPUkUgdGhlIHRyYW5zZmVyIGlzIHRha2luZyBwbGFjZS4gVG8gbWFrZSBjb21tYW5kc1xuIgoiICAgICAgICAgIHRha2UgcGxhY2UgYWZ0ZXIgYSBzdWNjZXNzZnVsIHRyYW5zZmVyLCBwcmVmaXggdGhlbVxuIgoiICAgICAgICAgIHdpdGggYSBkYXNoICctJy4gWW91IG1heSBzcGVjaWZ5IGFueSBhbW91bnQgb2YgY29tbWFuZHNcbiIKIiAgICAgICAgICB0byBiZSBydW4gYmVmb3JlIGFuZCBhZnRlciB0aGUgdHJhbnNmZXIuIElmIHRoZSBzZXJ2ZXJcbiIKIiAgICAgICAgICByZXR1cm5zIGZhaWx1cmUgZm9yIG9uZSBvZiB0aGUgY29tbWFuZHMsIHRoZSBlbnRpcmVcbiIKIiAgICAgICAgICBvcGVyYXRpb24gd2lsbCBiZSBhYm9ydGVkLlxuIgoiXG4iCiIgICAgIC1yLy0tcmFuZ2UgPHJhbmdlPlxuIgoiICAgICAgICAgIChIVFRQL0ZUUCkgUmV0cmlldmUgYSBieXRlIHJhbmdlIChpLmUgYSBwYXJ0aWFsIGRvY3WtXG4iCiIgICAgICAgICAgbWVudCkgZnJvbSBhIEhUVFAvMS4xIG9yIEZUUCBzZXJ2ZXIuIFJhbmdlcyBjYW4gYmVcbiIKIiAgICAgICAgICBzcGVjaWZpZWQgaW4gYSBudW1iZXIgb2Ygd2F5cy5cbiIKIlxuIgoiICAgICAgICAgIDAtNDk5ICAgICBzcGVjaWZpZXMgdGhlIGZpcnN0IDUwMCBieXRlc1xuIgoiXG4iCiIgICAgICAgICAgNTAwLTk5OSAgIHNwZWNpZmllcyB0aGUgc2Vjb25kIDUwMCBieXRlc1xuIgoiXG4iCiIgICAgICAgICAgLTUwMCAgICAgIHNwZWNpZmllcyB0aGUgbGFzdCA1MDAgYnl0ZXNcbiIKIlxuIgoiICAgICAgICAgIDk1MDAgICAgICBzcGVjaWZpZXMgdGhlIGJ5dGVzIGZyb20gb2Zmc2V0IDk1MDAgYW5kIGZvcq1cbiIKIiAgICAgICAgICAgICAgICAgICAgd2FyZFxuIgoiXG4iCiIgICAgICAgICAgMC0wLC0xICAgIHNwZWNpZmllcyB0aGUgZmlyc3QgYW5kIGxhc3QgYnl0ZSBvbmx5KCopKEgpXG4iCiJcbiIKIiAgICAgICAgICA1MDAtNzAwLDYwMC03OTlcbiIKIiAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVzIDMwMCBieXRlcyBmcm9tIG9mZnNldCA1MDAoSClcbiIKIlxuIgoiICAgICAgICAgIDEwMC0xOTksNTAwLTU5OVxuIgoiICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZXMgdHdvIHNlcGFyYXRlIDEwMCBieXRlcyByYW5nZXMoKikoSClcbiIKIlxuIgoiICAgICAoKikgPSBOT1RFIHRoYXQgdGhpcyB3aWxsIGNhdXNlIHRoZSBzZXJ2ZXIgdG8gcmVwbHkgd2l0aCBhXG4iCiIgICAgIG11bHRpcGFydCByZXNwb25zZSFcbiIKIlxuIgoiICAgICBZb3Ugc2hvdWxkIGFsc28gYmUgYXdhcmUgdGhhdCBtYW55IEhUVFAvMS4xIHNlcnZlcnMgZG8gbm90XG4iCiIgICAgIGhhdmUgdGhpcyBmZWF0dXJlIGVuYWJsZWQsIHNvIHRoYXQgd2hlbiB5b3UgYXR0ZW1wdCB0byBnZXQgYVxuIgoiICAgICByYW5nZSwgeW91J2xsIGluc3RlYWQgZ2V0IHRoZSB3aG9sZSBkb2N1bWVudC5cbiIKIlxuIgoiICAgICBGVFAgcmFuZ2UgZG93bmxvYWRzIG9ubHkgc3VwcG9ydCB0aGUgc2ltcGxlIHN5bnRheCAnc3RhcnQtXG4iCiIgICAgIHN0b3AnIChvcHRpb25hbGx5IHdpdGggb25lIG9mIHRoZSBudW1iZXJzIG9taXR0ZWQpLiBJdFxuIgoiICAgICBkZXBlbmRzIG9uIHRoZSBub24tUkZDIGNvbW1hbmQgU0laRS5cbiIKIlxuIgoiICAgICAtcy8tLXNpbGVudFxuIgoiICAgICAgICAgIFNpbGVudCBtb2RlLiBEb24ndCBzaG93IHByb2dyZXNzIG1ldGVyIG9yIGVycm9yIG1lc61cbiIKIiAgICAgICAgICBzYWdlcy4gIE1ha2VzIEN1cmwgbXV0ZS5cbiIKIlxuIgoiICAgICAtUy8tLXNob3ctZXJyb3JcbiIKIiAgICAgICAgICBXaGVuIHVzZWQgd2l0aCAtcyBpdCBtYWtlcyBjdXJsIHNob3cgZXJyb3IgbWVzc2FnZSBpZlxuIgoiICAgICAgICAgIGl0IGZhaWxzLlxuIgoiXG4iCiIgICAgIC10Ly0tdXBsb2FkXG4iCiIgICAgICAgICAgRGVwcmVjYXRlZC4gVXNlICctVCAtJyBpbnN0ZWFkLiAgVHJhbnNmZXIgdGhlIHN0ZGluXG4iCiIgICAgICAgICAgZGF0YSB0byB0aGUgc3BlY2lmaWVkIGZpbGUuIEN1cmwgd2lsbCByZWFkIGV2ZXJ5dGhpbmdcbiIKIiAgICAgICAgICBmcm9tIHN0ZGluIHVudGlsIEVPRiBhbmQgc3RvcmUgd2l0aCB0aGUgc3VwcGxpZWQgbmFtZS5cbiIKIiAgICAgICAgICBJZiB0aGlzIGlzIHVzZWQgb24gYSBodHRwKHMpIHNlcnZlciwgdGhlIFBVVCBjb21tYW5kXG4iCiIgICAgICAgICAgd2lsbCBiZSB1c2VkLlxuIgoiXG4iCiIgICAgIC1ULy0tdXBsb2FkLWZpbGUgPGZpbGU+XG4iCiIgICAgICAgICAgTGlrZSAtdCwgYnV0IHRoaXMgdHJhbnNmZXJzIHRoZSBzcGVjaWZpZWQgbG9jYWwgZmlsZS5cbiIKIiAgICAgICAgICBJZiB0aGVyZSBpcyBubyBmaWxlIHBhcnQgaW4gdGhlIHNwZWNpZmllZCBVUkwsIEN1cmxcbiIKIiAgICAgICAgICB3aWxsIGFwcGVuZCB0aGUgbG9jYWwgZmlsZSBuYW1lLiBOT1RFIHRoYXQgeW91IG11c3QgdXNlXG4iCiIgICAgICAgICAgYSB0cmFpbGluZyAvIG9uIHRoZSBsYXN0IGRpcmVjdG9yeSB0byByZWFsbHkgcHJvdmUgdG9cbiIKIiAgICAgICAgICBDdXJsIHRoYXQgdGhlcmUgaXMgbm8gZmlsZSBuYW1lIG9yIGN1cmwgd2lsbCB0aGluayB0aGF0XG4iCiIgICAgICAgICAgeW91ciBsYXN0IGRpcmVjdG9yeSBuYW1lIGlzIHRoZSByZW1vdGUgZmlsZSBuYW1lIHRvXG4iCiIgICAgICAgICAgdXNlLiBUaGF0IHdpbGwgbW9zdCBsaWtlbHkgY2F1c2UgdGhlIHVwbG9hZCBvcGVyYXRpb25cbiIKIiAgICAgICAgICB0byBmYWlsLiBJZiB0aGlzIGlzIHVzZWQgb24gYSBodHRwKHMpIHNlcnZlciwgdGhlIFBVVFxuIgoiICAgICAgICAgIGNvbW1hbmQgd2lsbCBiZSB1c2VkLlxuIgoiXG4iCiIgICAgIC11Ly0tdXNlciA8dXNlcjpwYXNzd29yZD5cbiIKIiAgICAgICAgICBTcGVjaWZ5IHVzZXIgYW5kIHBhc3N3b3JkIHRvIHVzZSB3aGVuIGZldGNoaW5nLiBTZWVcbiIKIiAgICAgICAgICBSRUFETUUuY3VybCBmb3IgZGV0YWlsZWQgZXhhbXBsZXMgb2YgaG93IHRvIHVzZSB0aGlzLlxuIgoiICAgICAgICAgIElmIG5vIHBhc3N3b3JkIGlzIHNwZWNpZmllZCwgY3VybCB3aWxsIGFzayBmb3IgaXRcbiIKIiAgICAgICAgICBpbnRlcmFjdGl2ZWx5LlxuIgoiXG4iCiIgICAgIC1VLy0tcHJveHktdXNlciA8dXNlcjpwYXNzd29yZD5cbiIKIiAgICAgICAgICBTcGVjaWZ5IHVzZXIgYW5kIHBhc3N3b3JkIHRvIHVzZSBmb3IgUHJveHkgYXV0aGVudGljYa1cbiIKIiAgICAgICAgICB0aW9uLiBJZiBubyBwYXNzd29yZCBpcyBzcGVjaWZpZWQsIGN1cmwgd2lsbCBhc2sgZm9yIGl0XG4iCiIgICAgICAgICAgaW50ZXJhY3RpdmVseS5cbiIKIlxuIgoiICAgICAtLXVybCA8VVJMPlxuIgoiICAgICAgICAgIFNldCB0aGUgVVJMIHRvIGZldGNoLiBUaGlzIG9wdGlvbiBpcyBtb3N0bHkgaGFuZHkgd2hlblxuIgoiICAgICAgICAgIHlvdSB3YW5uYSBzcGVjaWZ5IFVSTCBpbiBhIGNvbmZpZyBmaWxlLlxuIgoiXG4iCiIgICAgIC12Ly0tdmVyYm9zZVxuIgoiICAgICAgICAgIE1ha2VzIHRoZSBmZXRjaGluZyBtb3JlIHZlcmJvc2UvdGFsa2F0aXZlLiBNb3N0bHlcbiIKIiAgICAgICAgICB1c2FibGUgZm9yIGRlYnVnZ2luZy4gTGluZXMgc3RhcnRpbmcgd2l0aCAnPicgbWVhbnNcbiIKIiAgICAgICAgICBkYXRhIHNlbnQgYnkgY3VybCwgJzwnIG1lYW5zIGRhdGEgcmVjZWl2ZWQgYnkgY3VybCB0aGF0XG4iCiIgICAgICAgICAgaXMgaGlkZGVuIGluIG5vcm1hbCBjYXNlcyBhbmQgbGluZXMgc3RhcnRpbmcgd2l0aCAnKidcbiIKIiAgICAgICAgICBtZWFucyBhZGRpdGlvbmFsIGluZm8gcHJvdmlkZWQgYnkgY3VybC5cbiIKIlxuIgoiICAgICAtVi8tLXZlcnNpb25cbiIKIiAgICAgICAgICBEaXNwbGF5cyB0aGUgZnVsbCB2ZXJzaW9uIG9mIGN1cmwsIGxpYmN1cmwgYW5kIG90aGVyXG4iCiIgICAgICAgICAgM3JkIHBhcnR5IGxpYnJhcmllcyBsaW5rZWQgd2l0aCB0aGUgZXhlY3V0YWJsZS5cbiIKIlxuIgoiICAgICAtdy8tLXdyaXRlLW91dCA8Zm9ybWF0PlxuIgoiICAgICAgICAgIERlZmluZXMgd2hhdCB0byBkaXNwbGF5IGFmdGVyIGEgY29tcGxldGVkIGFuZCBzdWNjZXNzrVxuIgoiICAgICAgICAgIGZ1bCBvcGVyYXRpb24uIFRoZSBmb3JtYXQgaXMgYSBzdHJpbmcgdGhhdCBtYXkgY29udGFpblxuIgoiICAgICAgICAgIHBsYWluIHRleHQgbWl4ZWQgd2l0aCBhbnkgbnVtYmVyIG9mIHZhcmlhYmxlcy4gVGhlXG4iCiIgICAgICAgICAgc3RyaW5nIGNhbiBiZSBzcGVjaWZpZWQgYXMgXCJzdHJpbmdcIiwgdG8gZ2V0IHJlYWQgZnJvbSBhXG4iCiIgICAgICAgICAgcGFydGljdWxhciBmaWxlIHlvdSBzcGVjaWZ5IGl0IFwiQGZpbGVuYW1lXCIgYW5kIHRvIHRlbGxcbiIKIiAgICAgICAgICBjdXJsIHRvIHJlYWQgdGhlIGZvcm1hdCBmcm9tIHN0ZGluIHlvdSB3cml0ZSBcIkAtXCIuXG4iCiJcbiIKIiAgICAgICAgICBUaGUgdmFyaWFibGVzIHByZXNlbnQgaW4gdGhlIG91dHB1dCBmb3JtYXQgd2lsbCBiZSBzdWKtXG4iCiIgICAgICAgICAgc3RpdHV0ZWQgYnkgdGhlIHZhbHVlIG9yIHRleHQgdGhhdCBjdXJsIHRoaW5rcyBmaXQsIGFzXG4iCiIgICAgICAgICAgZGVzY3JpYmVkIGJlbG93LiBBbGwgdmFyaWFibGVzIGFyZSBzcGVjaWZpZWQgbGlrZVxuIgoiICAgICAgICAgICV7dmFyaWFibGVfbmFtZX0gYW5kIHRvIG91dHB1dCBhIG5vcm1hbCAlIHlvdSBqdXN0XG4iCiIgICAgICAgICAgd3JpdGUgdGhlbSBsaWtlICUlLiBZb3UgY2FuIG91dHB1dCBhIG5ld2xpbmUgYnkgdXNpbmdcbiIKIiAgICAgICAgICBcXG4sIGEgY2FycmlnZSByZXR1cm4gd2l0aCBcXHIgYW5kIGEgdGFiIHNwYWNlIHdpdGggXFx0LlxuIgoiXG4iCiIgICAgICAgICAgTk9URTogVGhlICUtbGV0dGVyIGlzIGEgc3BlY2lhbCBsZXR0ZXIgaW4gdGhlXG4iCiIgICAgICAgICAgd2luMzItZW52aXJvbm1lbnQsIHdoZXJlIGFsbCBvY2N1cnJlbmNlcyBvZiAlIG11c3QgYmVcbiIKIiAgICAgICAgICBkb3VibGVkIHdoZW4gdXNpbmcgdGhpcyBvcHRpb24uXG4iCiJcbiIKIiAgICAgICAgICBBdmFpbGFibGUgdmFyaWFibGVzIGFyZSBhdCB0aGlzIHBvaW50OlxuIgopOwogcHV0cygKIlxuIgoiICAgICAgICAgIHVybF9lZmZlY3RpdmUgIFRoZSBVUkwgdGhhdCB3YXMgZmV0Y2hlZCBsYXN0LiBUaGlzIGlzXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgbW9zdGx5IG1lYW5pbmdmdWwgaWYgeW91J3ZlIHRvbGQgY3VybCB0b1xuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvdyBsb2NhdGlvbjogaGVhZGVycy5cbiIKIlxuIgoiICAgICAgICAgIGh0dHBfY29kZSAgICAgIFRoZSBudW1lcmljYWwgY29kZSB0aGF0IHdhcyBmb3VuZCBpbiB0aGVcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IHJldHJpZXZlZCBIVFRQKFMpIHBhZ2UuXG4iCiJcbiIKIiAgICAgICAgICB0aW1lX3RvdGFsICAgICBUaGUgdG90YWwgdGltZSwgaW4gc2Vjb25kcywgdGhhdCB0aGVcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsIG9wZXJhdGlvbiBsYXN0ZWQuIFRoZSB0aW1lIHdpbGwgYmVcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5ZWQgd2l0aCBtaWxsaXNlY29uZCByZXNvbHV0aW9uLlxuIgoiXG4iCiIgICAgICAgICAgdGltZV9uYW1lbG9va3VwXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHRpbWUsIGluIHNlY29uZHMsIGl0IHRvb2sgZnJvbSB0aGVcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCB1bnRpbCB0aGUgbmFtZSByZXNvbHZpbmcgd2FzIGNvba1cbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBwbGV0ZWQuXG4iCiJcbiIKIiAgICAgICAgICB0aW1lX2Nvbm5lY3QgICBUaGUgdGltZSwgaW4gc2Vjb25kcywgaXQgdG9vayBmcm9tIHRoZVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0IHVudGlsIHRoZSBjb25uZWN0IHRvIHRoZSByZW1vdGVcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBob3N0IChvciBwcm94eSkgd2FzIGNvbXBsZXRlZC5cbiIKIlxuIgoiICAgICAgICAgIHRpbWVfcHJldHJhbnNmZXJcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgdGltZSwgaW4gc2Vjb25kcywgaXQgdG9vayBmcm9tIHRoZVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0IHVudGlsIHRoZSBmaWxlIHRyYW5zZmVyIGlzIGp1c3RcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBhYm91dCB0byBiZWdpbi4gVGhpcyBpbmNsdWRlcyBhbGwgcHJlLVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZmVyIGNvbW1hbmRzIGFuZCBuZWdvdGlhdGlvbnMgdGhhdFxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBzcGVjaWZpYyB0byB0aGUgcGFydGljdWxhciBwcm90b61cbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBjb2wocykgaW52b2x2ZWQuXG4iCiJcbiIKIiAgICAgICAgICBzaXplX2Rvd25sb2FkICBUaGUgdG90YWwgYW1vdW50IG9mIGJ5dGVzIHRoYXQgd2VyZVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkZWQuXG4iCiJcbiIKIiAgICAgICAgICBzaXplX3VwbG9hZCAgICBUaGUgdG90YWwgYW1vdW50IG9mIGJ5dGVzIHRoYXQgd2VyZVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIHVwbG9hZGVkLlxuIgoiXG4iCiIgICAgICAgICAgc2l6ZV9oZWFkZXIgICAgVGhlIHRvdGFsIGFtb3VudCBvZiBieXRlcyBvZiB0aGUgZG93bq1cbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkZWQgaGVhZGVycy5cbiIKIlxuIgoiICAgICAgICAgIHNpemVfcmVxdWVzdCAgIFRoZSB0b3RhbCBhbW91bnQgb2YgYnl0ZXMgdGhhdCB3ZXJlIHNlbnRcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgSFRUUCByZXF1ZXN0LlxuIgoiXG4iCiIgICAgICAgICAgc3BlZWRfZG93bmxvYWQgVGhlIGF2ZXJhZ2UgZG93bmxvYWQgc3BlZWQgdGhhdCBjdXJsXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgbWVhc3VyZWQgZm9yIHRoZSBjb21wbGV0ZSBkb3dubG9hZC5cbiIKIlxuIgoiICAgICAgICAgIHNwZWVkX3VwbG9hZCAgIFRoZSBhdmVyYWdlIHVwbG9hZCBzcGVlZCB0aGF0IGN1cmwgbWVhrVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIHN1cmVkIGZvciB0aGUgY29tcGxldGUgdXBsb2FkLlxuIgoiXG4iCiIgICAgIC14Ly0tcHJveHkgPHByb3h5aG9zdFs6cG9ydF0+XG4iCiIgICAgICAgICAgVXNlIHNwZWNpZmllZCBwcm94eS4gSWYgdGhlIHBvcnQgbnVtYmVyIGlzIG5vdCBzcGVjaa1cbiIKIiAgICAgICAgICBmaWVkLCBpdCBpcyBhc3N1bWVkIGF0IHBvcnQgMTA4MC5cbiIKIlxuIgoiICAgICAtWC8tLXJlcXVlc3QgPGNvbW1hbmQ+XG4iCiIgICAgICAgICAgKEhUVFApIFNwZWNpZmllcyBhIGN1c3RvbSByZXF1ZXN0IHRvIHVzZSB3aGVuIGNvbW11bmmtXG4iCiIgICAgICAgICAgY2F0aW5nIHdpdGggdGhlIEhUVFAgc2VydmVyLiAgVGhlIHNwZWNpZmllZCByZXF1ZXN0XG4iCiIgICAgICAgICAgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIHN0YW5kYXJkIEdFVC4gUmVhZCB0aGUgSFRUUFxuIgoiICAgICAgICAgIDEuMSBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWxzIGFuZCBleHBsYW5hdGlvbnMuXG4iCiJcbiIKIiAgICAgICAgICAoRlRQKSBTcGVjaWZpZXMgYSBjdXN0b20gRlRQIGNvbW1hbmQgdG8gdXNlIGluc3RlYWQgb2ZcbiIKIiAgICAgICAgICBMSVNUIHdoZW4gZG9pbmcgZmlsZSBsaXN0cyB3aXRoIGZ0cC5cbiIKIlxuIgoiICAgICAteS8tLXNwZWVkLXRpbWUgPHRpbWU+XG4iCiIgICAgICAgICAgSWYgYSBkb3dubG9hZCBpcyBzbG93ZXIgdGhhbiBzcGVlZC1saW1pdCBieXRlcyBwZXIgc2VjrVxuIgoiICAgICAgICAgIG9uZCBkdXJpbmcgYSBzcGVlZC10aW1lIHBlcmlvZCwgdGhlIGRvd25sb2FkIGdldHNcbiIKIiAgICAgICAgICBhYm9ydGVkLiBJZiBzcGVlZC10aW1lIGlzIHVzZWQsIHRoZSBkZWZhdWx0IHNwZWVkLWxpbWl0XG4iCiIgICAgICAgICAgd2lsbCBiZSAxIHVubGVzcyBzZXQgd2l0aCAteS5cbiIKIlxuIgoiICAgICAtWS8tLXNwZWVkLWxpbWl0IDxzcGVlZD5cbiIKIiAgICAgICAgICBJZiBhIGRvd25sb2FkIGlzIHNsb3dlciB0aGFuIHRoaXMgZ2l2ZW4gc3BlZWQsIGluIGJ5dGVzXG4iCiIgICAgICAgICAgcGVyIHNlY29uZCwgZm9yIHNwZWVkLXRpbWUgc2Vjb25kcyBpdCBnZXRzIGFib3J0ZWQuXG4iCiIgICAgICAgICAgc3BlZWQtdGltZSBpcyBzZXQgd2l0aCAtWSBhbmQgaXMgMzAgaWYgbm90IHNldC5cbiIKIlxuIgoiICAgICAtei8tLXRpbWUtY29uZCA8ZGF0ZSBleHByZXNzaW9uPlxuIgoiICAgICAgICAgIChIVFRQKSBSZXF1ZXN0IHRvIGdldCBhIGZpbGUgdGhhdCBoYXMgYmVlbiBtb2RpZmllZFxuIgoiICAgICAgICAgIGxhdGVyIHRoYW4gdGhlIGdpdmVuIHRpbWUgYW5kIGRhdGUsIG9yIG9uZSB0aGF0IGhhc1xuIgoiICAgICAgICAgIGJlZW4gbW9kaWZpZWQgYmVmb3JlIHRoYXQgdGltZS4gVGhlIGRhdGUgZXhwcmVzc2lvbiBjYW5cbiIKIiAgICAgICAgICBiZSBhbGwgc29ydHMgb2YgZGF0ZSBzdHJpbmdzIG9yIGlmIGl0IGRvZXNuJ3QgbWF0Y2ggYW55XG4iCiIgICAgICAgICAgaW50ZXJuYWwgb25lcywgaXQgdHJpZXMgdG8gZ2V0IHRoZSB0aW1lIGZyb20gYSBnaXZlblxuIgoiICAgICAgICAgIGZpbGUgbmFtZSBpbnN0ZWFkISBTZWUgdGhlIEdOVSBkYXRlKDEpIG9yIGN1cmxfZ2V0rVxuIgoiICAgICAgICAgIGRhdGUoMykgbWFuIHBhZ2VzIGZvciBkYXRlIGV4cHJlc3Npb24gZGV0YWlscy5cbiIKIlxuIgoiICAgICAgICAgIFN0YXJ0IHRoZSBkYXRlIGV4cHJlc3Npb24gd2l0aCBhIGRhc2ggKC0pIHRvIG1ha2UgaXRcbiIKIiAgICAgICAgICByZXF1ZXN0IGZvciBhIGRvY3VtZW50IHRoYXQgaXMgb2xkZXIgdGhhbiB0aGUgZ2l2ZW5cbiIKIiAgICAgICAgICBkYXRlL3RpbWUsIGRlZmF1bHQgaXMgYSBkb2N1bWVudCB0aGF0IGlzIG5ld2VyIHRoYW4gdGhlXG4iCiIgICAgICAgICAgc3BlY2lmaWVkIGRhdGUvdGltZS5cbiIKIlxuIgoiICAgICAtMy8tLXNzbHYzXG4iCiIgICAgICAgICAgKEhUVFBTKSBGb3JjZXMgY3VybCB0byB1c2UgU1NMIHZlcnNpb24gMyB3aGVuIG5lZ290aWF0rVxuIgoiICAgICAgICAgIGluZyB3aXRoIGEgcmVtb3RlIFNTTCBzZXJ2ZXIuXG4iCiJcbiIKIiAgICAgLTIvLS1zc2x2MlxuIgoiICAgICAgICAgIChIVFRQUykgRm9yY2VzIGN1cmwgdG8gdXNlIFNTTCB2ZXJzaW9uIDIgd2hlbiBuZWdvdGlhdK1cbiIKIiAgICAgICAgICBpbmcgd2l0aCBhIHJlbW90ZSBTU0wgc2VydmVyLlxuIgoiXG4iCiIgICAgIC0jLy0tcHJvZ3Jlc3MtYmFyXG4iCiIgICAgICAgICAgTWFrZSBjdXJsIGRpc3BsYXkgcHJvZ3Jlc3MgaW5mb3JtYXRpb24gYXMgYSBwcm9ncmVzc1xuIgoiICAgICAgICAgIGJhciBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IHN0YXRpc3RpY3MuXG4iCiJcbiIKIiAgICAgLS1jcmxmXG4iCiIgICAgICAgICAgKEZUUCkgQ29udmVydCBMRiB0byBDUkxGIGluIHVwbG9hZC4gVXNlZnVsIGZvciBNVlNcbiIKIiAgICAgICAgICAoT1MvMzkwKS5cbiIKIlxuIgoiICAgICAtLXN0ZGVyciA8ZmlsZT5cbiIKIiAgICAgICAgICBSZWRpcmVjdCBhbGwgd3JpdGVzIHRvIHN0ZGVyciB0byB0aGUgc3BlY2lmaWVkIGZpbGVcbiIKIiAgICAgICAgICBpbnN0ZWFkLiBJZiB0aGUgZmlsZSBuYW1lIGlzIGEgcGxhaW4gJy0nLCBpdCBpcyBpbnN0ZWFkXG4iCiIgICAgICAgICAgd3JpdHRlbiB0byBzdGRvdXQuIFRoaXMgb3B0aW9uIGhhcyBubyBwb2ludCB3aGVuIHlvdSdyZVxuIgoiICAgICAgICAgIHVzaW5nIGEgc2hlbGwgd2l0aCBkZWNlbnQgcmVkaXJlY3RpbmcgY2FwYWJpbGl0aWVzLlxuIgoiRklMRVNcbiIKIiAgICAgfi8uY3VybHJjXG4iCiIgICAgICAgICAgRGVmYXVsdCBjb25maWcgZmlsZS5cbiIKIlxuIgoiRU5WSVJPTk1FTlRcbiIKIiAgICAgSFRUUF9QUk9YWSBbcHJvdG9jb2w6Ly9dPGhvc3Q+Wzpwb3J0XVxuIgoiICAgICAgICAgIFNldHMgcHJveHkgc2VydmVyIHRvIHVzZSBmb3IgSFRUUC5cbiIKIlxuIgoiICAgICBIVFRQU19QUk9YWSBbcHJvdG9jb2w6Ly9dPGhvc3Q+Wzpwb3J0XVxuIgoiICAgICAgICAgIFNldHMgcHJveHkgc2VydmVyIHRvIHVzZSBmb3IgSFRUUFMuXG4iCiJcbiIKIiAgICAgRlRQX1BST1hZIFtwcm90b2NvbDovL108aG9zdD5bOnBvcnRdXG4iCiIgICAgICAgICAgU2V0cyBwcm94eSBzZXJ2ZXIgdG8gdXNlIGZvciBGVFAuXG4iCiJcbiIKIiAgICAgR09QSEVSX1BST1hZIFtwcm90b2NvbDovL108aG9zdD5bOnBvcnRdXG4iCiIgICAgICAgICAgU2V0cyBwcm94eSBzZXJ2ZXIgdG8gdXNlIGZvciBHT1BIRVIuXG4iCiJcbiIKIiAgICAgQUxMX1BST1hZIFtwcm90b2NvbDovL108aG9zdD5bOnBvcnRdXG4iCiIgICAgICAgICAgU2V0cyBwcm94eSBzZXJ2ZXIgdG8gdXNlIGlmIG5vIHByb3RvY29sLXNwZWNpZmljIHByb3h5XG4iCiIgICAgICAgICAgaXMgc2V0LlxuIgoiXG4iCiIgICAgIE5PX1BST1hZIDxjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBob3N0cz5cbiIKIiAgICAgICAgICBsaXN0IG9mIGhvc3QgbmFtZXMgdGhhdCBzaG91bGRuJ3QgZ28gdGhyb3VnaCBhbnkgcHJveHkuXG4iCiIgICAgICAgICAgSWYgc2V0IHRvIGEgYXN0ZXJpc2sgJyonIG9ubHksIGl0IG1hdGNoZXMgYWxsIGhvc3RzLlxuIgoiXG4iCiIgICAgIENPTFVNTlMgPGludGVnZXI+XG4iCiIgICAgICAgICAgVGhlIHdpZHRoIG9mIHRoZSB0ZXJtaW5hbC4gIFRoaXMgdmFyaWFibGUgb25seSBhZmZlY3RzXG4iCiIgICAgICAgICAgY3VybCB3aGVuIHRoZSAtLXByb2dyZXNzLWJhciBvcHRpb24gaXMgdXNlZC5cbiIKIlxuIgoiRVhJVCBDT0RFU1xuIgoiICAgICBUaGVyZSBleGlzdHMgYSBidW5jaCBvZiBkaWZmZXJlbnQgZXJyb3IgY29kZXMgYW5kIHRoZWlyIGNvcq1cbiIKIiAgICAgcmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcyB0aGF0IG1heSBhcHBlYXIgZHVyaW5nIGJhZCBjb25kaa1cbiIKIiAgICAgdGlvbnMuIEF0IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGluZywgdGhlIGV4aXQgY29kZXMgYXJlOlxuIgoiXG4iCiIgICAgIDEgICAgVW5zdXBwb3J0ZWQgcHJvdG9jb2wuIFRoaXMgYnVpbGQgb2YgY3VybCBoYXMgbm8gc3VwcG9ydFxuIgoiICAgICAgICAgIGZvciB0aGlzIHByb3RvY29sLlxuIgoiXG4iCiIgICAgIDIgICAgRmFpbGVkIHRvIGluaXRpYWxpemUuXG4iCiJcbiIKIiAgICAgMyAgICBVUkwgbWFsZm9ybWF0LiBUaGUgc3ludGF4IHdhcyBub3QgY29ycmVjdC5cbiIKIlxuIgoiICAgICA0ICAgIFVSTCB1c2VyIG1hbGZvcm1hdHRlZC4gVGhlIHVzZXItcGFydCBvZiB0aGUgVVJMIHN5bnRheFxuIgoiICAgICAgICAgIHdhcyBub3QgY29ycmVjdC5cbiIKIlxuIgoiICAgICA1ICAgIENvdWxkbid0IHJlc29sdmUgcHJveHkuIFRoZSBnaXZlbiBwcm94eSBob3N0IGNvdWxkIG5vdFxuIgoiICAgICAgICAgIGJlIHJlc29sdmVkLlxuIgoiXG4iCiIgICAgIDYgICAgQ291bGRuJ3QgcmVzb2x2ZSBob3N0LiBUaGUgZ2l2ZW4gcmVtb3RlIGhvc3Qgd2FzIG5vdFxuIgoiICAgICAgICAgIHJlc29sdmVkLlxuIgoiXG4iCiIgICAgIDcgICAgRmFpbGVkIHRvIGNvbm5lY3QgdG8gaG9zdC5cbiIKIiAgICAgOCAgICBGVFAgd2VpcmQgc2VydmVyIHJlcGx5LiBUaGUgc2VydmVyIHNlbnQgZGF0YSBjdXJsXG4iCiIgICAgICAgICAgY291bGRuJ3QgcGFyc2UuXG4iCiJcbiIKIiAgICAgOSAgICBGVFAgYWNjZXNzIGRlbmllZC4gVGhlIHNlcnZlciBkZW5pZWQgbG9naW4uXG4iCiJcbiIKIiAgICAgMTAgICBGVFAgdXNlci9wYXNzd29yZCBpbmNvcnJlY3QuIEVpdGhlciBvbmUgb3IgYm90aCB3ZXJlXG4iCiIgICAgICAgICAgbm90IGFjY2VwdGVkIGJ5IHRoZSBzZXJ2ZXIuXG4iCiJcbiIKIiAgICAgMTEgICBGVFAgd2VpcmQgUEFTUyByZXBseS4gQ3VybCBjb3VsZG4ndCBwYXJzZSB0aGUgcmVwbHlcbiIKIiAgICAgICAgICBzZW50IHRvIHRoZSBQQVNTIHJlcXVlc3QuXG4iCiJcbiIKIiAgICAgMTIgICBGVFAgd2VpcmQgVVNFUiByZXBseS4gQ3VybCBjb3VsZG4ndCBwYXJzZSB0aGUgcmVwbHlcbiIKIiAgICAgICAgICBzZW50IHRvIHRoZSBVU0VSIHJlcXVlc3QuXG4iCiJcbiIKIiAgICAgMTMgICBGVFAgd2VpcmQgUEFTViByZXBseSwgQ3VybCBjb3VsZG4ndCBwYXJzZSB0aGUgcmVwbHlcbiIKIiAgICAgICAgICBzZW50IHRvIHRoZSBQQVNWIHJlcXVlc3QuXG4iCiJcbiIKIiAgICAgMTQgICBGVFAgd2VpcmQgMjI3IGZvcm1heS4gQ3VybCBjb3VsZG4ndCBwYXJzZSB0aGUgMjI3LWxpbmVcbiIKIiAgICAgICAgICB0aGUgc2VydmVyIHNlbnQuXG4iCiJcbiIKIiAgICAgMTUgICBGVFAgY2FuJ3QgZ2V0IGhvc3QuIENvdWxkbid0IHJlc29sdmUgdGhlIGhvc3QgSVAgd2UgZ290XG4iCiIgICAgICAgICAgaW4gdGhlIDIyNy1saW5lLlxuIgoiXG4iCiIgICAgIDE2ICAgRlRQIGNhbid0IHJlY29ubmVjdC4gQ291bGRuJ3QgY29ubmVjdCB0byB0aGUgaG9zdCB3ZVxuIgoiICAgICAgICAgIGdvdCBpbiB0aGUgMjI3LWxpbmUuXG4iCiJcbiIKIiAgICAgMTcgICBGVFAgY291bGRuJ3Qgc2V0IGJpbmFyeS4gQ291bGRuJ3QgY2hhbmdlIHRyYW5zZmVyXG4iCiIgICAgICAgICAgbWV0aG9kIHRvIGJpbmFyeS5cbiIKIlxuIgoiICAgICAxOCAgIFBhcnRpYWwgZmlsZS4gT25seSBhIHBhcnQgb2YgdGhlIGZpbGUgd2FzIHRyYW5zZmVyZWQuXG4iCiJcbiIKIiAgICAgMTkgICBGVFAgY291bGRuJ3QgUkVUUiBmaWxlLiBUaGUgUkVUUiBjb21tYW5kIGZhaWxlZC5cbiIKIlxuIgoiICAgICAyMCAgIEZUUCB3cml0ZSBlcnJvci4gVGhlIHRyYW5zZmVyIHdhcyByZXBvcnRlZCBiYWQgYnkgdGhlXG4iCiIgICAgICAgICAgc2VydmVyLlxuIgoiXG4iCiIgICAgIDIxICAgRlRQIHF1b3RlIGVycm9yLiBBIHF1b3RlIGNvbW1hbmQgcmV0dXJuZWQgZXJyb3IgZnJvbVxuIgoiICAgICAgICAgIHRoZSBzZXJ2ZXIuXG4iCiJcbiIKIiAgICAgMjIgICBIVFRQIG5vdCBmb3VuZC4gVGhlIHJlcXVlc3RlZCBwYWdlIHdhcyBub3QgZm91bmQuIFRoaXNcbiIKIiAgICAgICAgICByZXR1cm4gY29kZSBvbmx5IGFwcGVhcnMgaWYgLS1mYWlsIGlzIHVzZWQuXG4iCiJcbiIKIiAgICAgMjMgICBXcml0ZSBlcnJvci4gQ3VybCBjb3VsZG4ndCB3cml0ZSBkYXRhIHRvIGEgbG9jYWxcbiIKIiAgICAgICAgICBmaWxlc3lzdGVtIG9yIHNpbWlsYXIuXG4iCiJcbiIKIiAgICAgMjQgICBNYWxmb3JtYXQgdXNlci4gVXNlciBuYW1lIGJhZGx5IHNwZWNpZmllZC5cbiIKIlxuIgoiICAgICAyNSAgIEZUUCBjb3VsZG4ndCBTVE9SIGZpbGUuIFRoZSBzZXJ2ZXIgZGVuaWVkIHRoZSBTVE9SXG4iCiIgICAgICAgICAgb3BlcmF0aW9uLlxuIgoiXG4iCiIgICAgIDI2ICAgUmVhZCBlcnJvci4gVmFyaW91cyByZWFkaW5nIHByb2JsZW1zLlxuIgoiICAgICAyNyAgIE91dCBvZiBtZW1vcnkuIEEgbWVtb3J5IGFsbG9jYXRpb24gcmVxdWVzdCBmYWlsZWQuXG4iCiJcbiIKIiAgICAgMjggICBPcGVyYXRpb24gdGltZW91dC4gVGhlIHNwZWNpZmllZCB0aW1lLW91dCBwZXJpb2Qgd2FzXG4iCiIgICAgICAgICAgcmVhY2hlZCBhY2NvcmRpbmcgdG8gdGhlIGNvbmRpdGlvbnMuXG4iCiJcbiIKIiAgICAgMjkgICBGVFAgY291bGRuJ3Qgc2V0IEFTQ0lJLiBUaGUgc2VydmVyIHJldHVybmVkIGFuIHVua25vd25cbiIKIiAgICAgICAgICByZXBseS5cbiIKIlxuIgoiICAgICAzMCAgIEZUUCBQT1JUIGZhaWxlZC4gVGhlIFBPUlQgY29tbWFuZCBmYWlsZWQuXG4iCiJcbiIKIiAgICAgMzEgICBGVFAgY291bGRuJ3QgdXNlIFJFU1QuIFRoZSBSRVNUIGNvbW1hbmQgZmFpbGVkLlxuIgoiXG4iCiIgICAgIDMyICAgRlRQIGNvdWxkbid0IHVzZSBTSVpFLiBUaGUgU0laRSBjb21tYW5kIGZhaWxlZC4gVGhlXG4iCiIgICAgICAgICAgY29tbWFuZCBpcyBhbiBleHRlbnNpb24gdG8gdGhlIG9yaWdpbmFsIEZUUCBzcGVjIFJGQ1xuIgoiICAgICAgICAgIDk1OS5cbiIKIlxuIgoiICAgICAzMyAgIEhUVFAgcmFuZ2UgZXJyb3IuIFRoZSByYW5nZSBcImNvbW1hbmRcIiBkaWRuJ3Qgd29yay5cbiIKIlxuIgoiICAgICAzNCAgIEhUVFAgcG9zdCBlcnJvci4gSW50ZXJuYWwgcG9zdC1yZXF1ZXN0IGdlbmVyYXRpb25cbiIKIiAgICAgICAgICBlcnJvci5cbiIKIlxuIgoiICAgICAzNSAgIFNTTCBjb25uZWN0IGVycm9yLiBUaGUgU1NMIGhhbmRzaGFraW5nIGZhaWxlZC5cbiIKIlxuIgoiICAgICAzNiAgIEZUUCBiYWQgZG93bmxvYWQgcmVzdW1lLiBDb3VsZG4ndCBjb250aW51ZSBhbiBlYXJsaWVyXG4iCiIgICAgICAgICAgYWJvcnRlZCBkb3dubG9hZC5cbiIKIlxuIgoiICAgICAzNyAgIEZJTEUgY291bGRuJ3QgcmVhZCBmaWxlLiBGYWlsZWQgdG8gb3BlbiB0aGUgZmlsZS4gUGVyrVxuIgoiICAgICAgICAgIG1pc3Npb25zP1xuIgoiXG4iCiIgICAgIDM4ICAgTERBUCBjYW5ub3QgYmluZC4gTERBUCBiaW5kIG9wZXJhdGlvbiBmYWlsZWQuXG4iCiJcbiIKIiAgICAgMzkgICBMREFQIHNlYXJjaCBmYWlsZWQuXG4iCiJcbiIKIiAgICAgNDAgICBMaWJyYXJ5IG5vdCBmb3VuZC4gVGhlIExEQVAgbGlicmFyeSB3YXMgbm90IGZvdW5kLlxuIgoiXG4iCiIgICAgIDQxICAgRnVuY3Rpb24gbm90IGZvdW5kLiBBIHJlcXVpcmVkIExEQVAgZnVuY3Rpb24gd2FzIG5vdFxuIgoiICAgICAgICAgIGZvdW5kLlxuIgoiXG4iCiIgICAgIFhYICAgVGhlcmUgd2lsbCBhcHBlYXIgbW9yZSBlcnJvciBjb2RlcyBoZXJlIGluIGZ1dHVyZVxuIgoiICAgICAgICAgIHJlbGVhc2VzLiBUaGUgZXhpc3Rpbmcgb25lcyBhcmUgbWVhbnQgdG8gbmV2ZXIgY2hhbmdlLlxuIgoiXG4iCiJCVUdTXG4iCiIgICAgIElmIHlvdSBkbyBmaW5kIGJ1Z3MsIG1haWwgdGhlbSB0byBjdXJsLWJ1Z0BoYXh4LnNlLlxuIgoiXG4iCiJBVVRIT1JTIC8gQ09OVFJJQlVUT1JTXG4iCiIgICAgICAtIERhbmllbCBTdGVuYmVyZyA8RGFuaWVsLlN0ZW5iZXJnQGhheHguc2U+XG4iCiIgICAgICAtIFJhZmFlbCBTYWd1bGEgPHNhZ3VsYUBpbmYudWZyZ3MuYnI+XG4iCiIgICAgICAtIFNhbXBvIEtlbGxvbWFraSA8c2FtcG9AaWtpLmZpPlxuIgoiICAgICAgLSBMaW5hcyBWZXBzdGFzIDxsaW5hc0BsaW5hcy5vcmc+XG4iCiIgICAgICAtIEJqb3JuIFJlZXNlIDxicmVlc2VAbWFpbDEuc3RvZmFuZXQuZGs+XG4iCiIgICAgICAtIEpvaGFuIEFuZGVyc29uIDxqb2hhbkBob21lbWFpbC5jb20+XG4iCiIgICAgICAtIEtqZWxsIEVyaWNzb24gPEtqZWxsLkVyaWNzb25AaGF4eC5zZT5cbiIKIiAgICAgIC0gVHJveSBFbmdlbCA8dGVuZ2VsQHNvbmljLm5ldD5cbiIKIiAgICAgIC0gUnlhbiBOZWxzb24gPHJ5YW5AaW5jaC5jb20+XG4iCiIgICAgICAtIEJq9nJuIFN0ZW5iZXJnIDxCam9ybi5TdGVuYmVyZ0BoYXh4LnNlPlxuIgoiICAgICAgLSBBbmd1cyBNYWNrYXkgPGFtYWNrYXlAZ3VzLm1sLm9yZz5cbiIKIiAgICAgIC0gRXJpYyBZb3VuZyA8ZWF5QGNyeXB0c29mdC5jb20+XG4iCiIgICAgICAtIFNpbW9uIERpY2sgPHNpbW9uZEB0b3RhbGx5LmlycmVsZXZhbnQub3JnPlxuIgoiICAgICAgLSBPcmVuIFRpcm9zaCA8b3JlbkBtb250eS5oaXNob21lLm5ldD5cbiIKIiAgICAgIC0gU3RldmVuIEcuIEpvaG5zb24gPHN0ZXZlbmpAYWx1bS5taXQuZWR1PlxuIgoiICAgICAgLSBHaWxiZXJ0IFJhbWlyZXogSnIuIDxncmFtQHZlcmRpY3QudXRoc2NzYS5lZHU+XG4iCiIgICAgICAtIEFuZHLpcyBHYXJj7WEgPG9ybmFsdXhAcmVkZXN0Yi5lcz5cbiIKIiAgICAgIC0gRG91Z2xhcyBFLiBXZWdzY2hlaWQgPHdlZ3NjZEB3aGlybHBvb2wuY29tPlxuIgoiICAgICAgLSBNYXJrIEJ1dGxlciA8YnV0bGVybUB4bWlzc2lvbi5jb20+XG4iCiIgICAgICAtIEVyaWMgVGhlbGluIDxlcmljQGdlbmVyYXRpb24taS5jb20+XG4iCiIgICAgICAtIE1hcmMgQm91Y2hlciA8bWFyY0BtYnNpLmNhPlxuIgoiICAgICAgLSBHcmVnIE9udWZlciA8R3JlZy5PbnVmZXJARW5nLlN1bi5DT00+XG4iCiIgICAgICAtIERvdWcgS2F1Zm1hbiA8ZGthdWZtYW5AcmFodWwubmV0PlxuIgoiICAgICAgLSBEYXZpZCBFcmlrc3NvbiA8ZGF2aWRAMmdvb2QuY29tPlxuIgoiICAgICAgLSBSYWxwaCBCZWNrbWFubiA8cmFiZUB1bmktcGFkZXJib3JuLmRlPlxuIgoiICAgICAgLSBULiBZYW1hZGEgPHRhaUBpbWFzeS5vci5qcD5cbiIKIiAgICAgIC0gTGFycyBKLiBBYXMgPGxhcnNhQHNpbS5ubz5cbiIKIiAgICAgIC0gSvZybiBIYXJ0cm90aCA8Sm9lcm4uSGFydHJvdGhAY29tcHV0ZXIub3JnPlxuIgoiICAgICAgLSBNYXR0aGV3IENsYXJrZSA8Y2xhbWF0QHZhbi5tYXZlcy5jYT5cbiIKIiAgICAgIC0gTGludXMgTmllbHNlbiA8TGludXMuTmllbHNlbkBoYXh4LnNlPlxuIgoiICAgICAgLSBGZWxpeCB2b24gTGVpdG5lciA8ZmVsaXhAY29udmVyZ2VuY2UuZGU+XG4iCiIgICAgICAtIERhbiBaaXR0ZXIgPGR6aXR0ZXJAeml0dGVyLm5ldD5cbiIKKTsKIHB1dHMoCiIgICAgICAtIEpvbmdraSBTdXdhbmRpIDxKb25na2kuU3V3YW5kaUBlbmcuc3VuLmNvbT5cbiIKIiAgICAgIC0gQ2hyaXMgTWFsdGJ5IDxjaHJpc0BhdXJlbWEuY29tPlxuIgoiICAgICAgLSBSb24gWmFwcCA8cnphcHBlckB5YWhvby5jb20+XG4iCiIgICAgICAtIFBhdWwgTWFycXVpcyA8cG1hcnF1aXNAaW5hbWUuY29tPlxuIgoiICAgICAgLSBFbGxpcyBQcml0Y2hhcmQgPGVsbGlzQGNpdHJpYS5jb20+XG4iCiIgICAgICAtIERhbWllbiBBZGFudCA8ZGFtc0B1c2EubmV0PlxuIgoiICAgICAgLSBDaHJpcyA8Y2JheWxpc3NAY3NjLmNvbWU+XG4iCiIgICAgICAtIE1hcmNvIEcuIFNhbHZhZ25vIDxtZ3NAd2hpei5jamIubmV0PlxuIgoiICAgICAgLSBQYXVsIE1hcnF1aXMgPHBtYXJxdWlzQGluYW1lLmNvbT5cbiIKIiAgICAgIC0gRGF2aWQgTGVCbGFuYyA8ZGxlYmxhbmNAcW54LmNvbT5cbiIKIiAgICAgIC0gUmljaCBHcmF5IGF0IFBsdXMgVGVjaG5vbG9naWVzXG4iCiIgICAgICAtIEx1b25nIERpbmggRHVuZyA8dThsdW9uZ0BsaHN5c3RlbXMuaHU+XG4iCiIgICAgICAtIFRvcnN0ZW4gRm9lcnRzY2ggPHRvcnN0ZW4uZm9lcnRzY2hAZ214Lm5ldD5cbiIKIiAgICAgIC0gS3Jpc3RpYW4gS/ZobnRvcHAgPGtyaXNAa29laG50b3BwLmRlPlxuIgoiICAgICAgLSBGcmVkIE5veiA8Rk5vekBzaWFjLmNvbT5cbiIKIiAgICAgIC0gQ2FvbGFuIE1jTmFtYXJhIDxjYW9sYW5AY3NuLnVsLmllPlxuIgoiICAgICAgLSBBbGJlcnQgQ2hpbi1BLVlvdW5nIDxjaGluYUB0aGV3cml0dGVud29yZC5jb20+XG4iCiIgICAgICAtIFN0ZXBoZW4gS2ljayA8c2tpY2tAZXBpY3JlYWxtLmNvbT5cbiIKIiAgICAgIC0gTWFydGluIEhlZGVuZmFsayA8bWhlQHN0YWNrZW4ua3RoLnNlPlxuIgoiICAgICAgLSBSaWNoYXJkIFByZXNjb3R0XG4iCiIgICAgICAtIEphc29uIFMuIFByaWViZSA8cHJpZWJlQHdyYWwtdHYuY29tPlxuIgoiICAgICAgLSBULiBCaGFyYXRoIDxUQmhhcmF0aEByZXNwb25zZW5ldHdvcmtzLmNvbT5cbiIKIlxuIgoiV1dXXG4iCiIgICAgIGh0dHA6Ly9jdXJsLmhheHguc2VcbiIKIkZUUFxuIgoiICAgICBmdHA6Ly9mdHAuc3VuZXQuc2UvcHViL3d3dy91dGlsaXRpZXMvY3VybC9cbiIKIlxuIgoiU0VFIEFMU09cbiIKIiAgICAgZnRwKDEpLCB3Z2V0KDEpLCBzbmFyZigxKVxuIgoiXG4iCiJMQVRFU1QgVkVSU0lPTlxuIgoiXG4iCiIgIFlvdSBhbHdheXMgZmluZCBuZXdzIGFib3V0IHdoYXQncyBnb2luZyBvbiBhcyB3ZWxsIGFzIHRoZSBsYXRlc3QgdmVyc2lvbnNcbiIKIiAgZnJvbSB0aGUgY3VybCB3ZWIgcGFnZXMsIGxvY2F0ZWQgYXQ6XG4iCiJcbiIKIiAgICAgICAgaHR0cDovL2N1cmwuaGF4eC5zZVxuIgoiXG4iCiJTSU1QTEUgVVNBR0VcbiIKIlxuIgoiICBHZXQgdGhlIG1haW4gcGFnZSBmcm9tIG5ldHNjYXBlJ3Mgd2ViLXNlcnZlcjpcbiIKIlxuIgoiICAgICAgICBjdXJsIGh0dHA6Ly93d3cubmV0c2NhcGUuY29tL1xuIgoiXG4iCiIgIEdldCB0aGUgcm9vdCBSRUFETUUgZmlsZSBmcm9tIGZ1bmV0J3MgZnRwLXNlcnZlcjpcbiIKIlxuIgoiICAgICAgICBjdXJsIGZ0cDovL2Z0cC5mdW5ldC5maS9SRUFETUVcbiIKIlxuIgoiICBHZXQgYSBnb3BoZXIgZG9jdW1lbnQgZnJvbSBmdW5ldCdzIGdvcGhlciBzZXJ2ZXI6XG4iCiJcbiIKIiAgICAgICAgY3VybCBnb3BoZXI6Ly9nb3BoZXIuZnVuZXQuZmlcbiIKIlxuIgoiICBHZXQgYSB3ZWIgcGFnZSBmcm9tIGEgc2VydmVyIHVzaW5nIHBvcnQgODAwMDpcbiIKIlxuIgoiICAgICAgICBjdXJsIGh0dHA6Ly93d3cud2VpcmRzZXJ2ZXIuY29tOjgwMDAvXG4iCiJcbiIKIiAgR2V0IGEgbGlzdCBvZiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgYW4gRlRQIHNpdGU6XG4iCiJcbiIKIiAgICAgICAgY3VybCBmdHA6Ly9mdHAuZnRzLmZyb250ZWMuc2UvXG4iCiJcbiIKIiAgR2V0IHRoZSBkZWZpbml0aW9uIG9mIGN1cmwgZnJvbSBhIGRpY3Rpb25hcnk6XG4iCiJcbiIKIiAgICAgICAgY3VybCBkaWN0Oi8vZGljdC5vcmcvbTpjdXJsXG4iCiJcbiIKIkRPV05MT0FEIFRPIEEgRklMRVxuIgoiXG4iCiIgIEdldCBhIHdlYiBwYWdlIGFuZCBzdG9yZSBpbiBhIGxvY2FsIGZpbGU6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtbyB0aGF0cGFnZS5odG1sIGh0dHA6Ly93d3cubmV0c2NhcGUuY29tL1xuIgoiXG4iCiIgIEdldCBhIHdlYiBwYWdlIGFuZCBzdG9yZSBpbiBhIGxvY2FsIGZpbGUsIG1ha2UgdGhlIGxvY2FsIGZpbGUgZ2V0IHRoZSBuYW1lXG4iCiIgIG9mIHRoZSByZW1vdGUgZG9jdW1lbnQgKGlmIG5vIGZpbGUgbmFtZSBwYXJ0IGlzIHNwZWNpZmllZCBpbiB0aGUgVVJMLCB0aGlzXG4iCiIgIHdpbGwgZmFpbCk6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtTyBodHRwOi8vd3d3Lm5ldHNjYXBlLmNvbS9pbmRleC5odG1sXG4iCiJcbiIKIlVTSU5HIFBBU1NXT1JEU1xuIgoiXG4iCiIgRlRQXG4iCiJcbiIKIiAgIFRvIGZ0cCBmaWxlcyB1c2luZyBuYW1lK3Bhc3N3ZCwgaW5jbHVkZSB0aGVtIGluIHRoZSBVUkwgbGlrZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIGZ0cDovL25hbWU6cGFzc3dkQG1hY2hpbmUuZG9tYWluOnBvcnQvZnVsbC9wYXRoL3RvL2ZpbGVcbiIKIlxuIgoiICAgb3Igc3BlY2lmeSB0aGVtIHdpdGggdGhlIC11IGZsYWcgbGlrZVxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXUgbmFtZTpwYXNzd2QgZnRwOi8vbWFjaGluZS5kb21haW46cG9ydC9mdWxsL3BhdGgvdG8vZmlsZVxuIgoiXG4iCiIgSFRUUFxuIgoiXG4iCiIgICBUaGUgSFRUUCBVUkwgZG9lc24ndCBzdXBwb3J0IHVzZXIgYW5kIHBhc3N3b3JkIGluIHRoZSBVUkwgc3RyaW5nLiBDdXJsXG4iCiIgICBkb2VzIHN1cHBvcnQgdGhhdCBhbnl3YXkgdG8gcHJvdmlkZSBhIGZ0cC1zdHlsZSBpbnRlcmZhY2UgYW5kIHRodXMgeW91IGNhblxuIgoiICAgcGljayBhIGZpbGUgbGlrZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIGh0dHA6Ly9uYW1lOnBhc3N3ZEBtYWNoaW5lLmRvbWFpbi9mdWxsL3BhdGgvdG8vZmlsZVxuIgoiXG4iCiIgICBvciBzcGVjaWZ5IHVzZXIgYW5kIHBhc3N3b3JkIHNlcGFyYXRlbHkgbGlrZSBpblxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXUgbmFtZTpwYXNzd2QgaHR0cDovL21hY2hpbmUuZG9tYWluL2Z1bGwvcGF0aC90by9maWxlXG4iCiJcbiIKIiAgIE5PVEUhIFNpbmNlIEhUVFAgVVJMcyBkb24ndCBzdXBwb3J0IHVzZXIgYW5kIHBhc3N3b3JkLCB5b3UgY2FuJ3QgdXNlIHRoYXRcbiIKIiAgIHN0eWxlIHdoZW4gdXNpbmcgQ3VybCB2aWEgYSBwcm94eS4gWW91IF9tdXN0XyB1c2UgdGhlIC11IHN0eWxlIGZldGNoXG4iCiIgICBkdXJpbmcgc3VjaCBjaXJjdW1zdGFuY2VzLlxuIgoiXG4iCiIgSFRUUFNcbiIKIlxuIgoiICAgUHJvYmFibHkgbW9zdCBjb21tb25seSB1c2VkIHdpdGggcHJpdmF0ZSBjZXJ0aWZpY2F0ZXMsIGFzIGV4cGxhaW5lZCBiZWxvdy5cbiIKIlxuIgoiIEdPUEhFUlxuIgoiXG4iCiIgICBDdXJsIGZlYXR1cmVzIG5vIHBhc3N3b3JkIHN1cHBvcnQgZm9yIGdvcGhlci5cbiIKIlxuIgoiUFJPWFlcbiIKIlxuIgoiIEdldCBhbiBmdHAgZmlsZSB1c2luZyBhIHByb3h5IG5hbWVkIG15LXByb3h5IHRoYXQgdXNlcyBwb3J0IDg4ODpcbiIKIlxuIgoiICAgICAgICBjdXJsIC14IG15LXByb3h5Ojg4OCBmdHA6Ly9mdHAubGVhY2hzaXRlLmNvbS9SRUFETUVcbiIKIlxuIgoiIEdldCBhIGZpbGUgZnJvbSBhIEhUVFAgc2VydmVyIHRoYXQgcmVxdWlyZXMgdXNlciBhbmQgcGFzc3dvcmQsIHVzaW5nIHRoZVxuIgoiIHNhbWUgcHJveHkgYXMgYWJvdmU6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtdSB1c2VyOnBhc3N3ZCAteCBteS1wcm94eTo4ODggaHR0cDovL3d3dy5nZXQudGhpcy9cbiIKIlxuIgoiIFNvbWUgcHJveGllcyByZXF1aXJlIHNwZWNpYWwgYXV0aGVudGljYXRpb24uIFNwZWNpZnkgYnkgdXNpbmcgLVUgYXMgYWJvdmU6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtVSB1c2VyOnBhc3N3ZCAteCBteS1wcm94eTo4ODggaHR0cDovL3d3dy5nZXQudGhpcy9cbiIKIlxuIgoiIFNlZSBhbHNvIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgQ3VybCBzdXBwb3J0IHRoYXQgb2ZmZXIgZnVydGhlciBwcm94eVxuIgoiIGNvbnRyb2wuXG4iCiJcbiIKIlJBTkdFU1xuIgoiXG4iCiIgIFdpdGggSFRUUCAxLjEgYnl0ZS1yYW5nZXMgd2VyZSBpbnRyb2R1Y2VkLiBVc2luZyB0aGlzLCBhIGNsaWVudCBjYW4gcmVxdWVzdFxuIgoiICB0byBnZXQgb25seSBvbmUgb3IgbW9yZSBzdWJwYXJ0cyBvZiBhIHNwZWNpZmllZCBkb2N1bWVudC4gQ3VybCBzdXBwb3J0c1xuIgoiICB0aGlzIHdpdGggdGhlIC1yIGZsYWcuXG4iCiJcbiIKIiAgR2V0IHRoZSBmaXJzdCAxMDAgYnl0ZXMgb2YgYSBkb2N1bWVudDpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1yIDAtOTkgaHR0cDovL3d3dy5nZXQudGhpcy9cbiIKIlxuIgoiICBHZXQgdGhlIGxhc3QgNTAwIGJ5dGVzIG9mIGEgZG9jdW1lbnQ6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtciAtNTAwIGh0dHA6Ly93d3cuZ2V0LnRoaXMvXG4iCiJcbiIKIiAgQ3VybCBhbHNvIHN1cHBvcnRzIHNpbXBsZSByYW5nZXMgZm9yIEZUUCBmaWxlcyBhcyB3ZWxsLiBUaGVuIHlvdSBjYW4gb25seVxuIgoiICBzcGVjaWZ5IHN0YXJ0IGFuZCBzdG9wIHBvc2l0aW9uLlxuIgoiXG4iCiIgIEdldCB0aGUgZmlyc3QgMTAwIGJ5dGVzIG9mIGEgZG9jdW1lbnQgdXNpbmcgRlRQOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXIgMC05OSBmdHA6Ly93d3cuZ2V0LnRoaXMvUkVBRE1FICBcbiIKIlxuIgoiVVBMT0FESU5HXG4iCiJcbiIKIiBGVFBcbiIKIlxuIgoiICBVcGxvYWQgYWxsIGRhdGEgb24gc3RkaW4gdG8gYSBzcGVjaWZpZWQgZnRwIHNpdGU6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtdCBmdHA6Ly9mdHAudXBsb2FkLmNvbS9teWZpbGVcbiIKIlxuIgoiICBVcGxvYWQgZGF0YSBmcm9tIGEgc3BlY2lmaWVkIGZpbGUsIGxvZ2luIHdpdGggdXNlciBhbmQgcGFzc3dvcmQ6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtVCB1cGxvYWRmaWxlIC11IHVzZXI6cGFzc3dkIGZ0cDovL2Z0cC51cGxvYWQuY29tL215ZmlsZVxuIgoiXG4iCiIgIFVwbG9hZCBhIGxvY2FsIGZpbGUgdG8gdGhlIHJlbW90ZSBzaXRlLCBhbmQgdXNlIHRoZSBsb2NhbCBmaWxlIG5hbWUgcmVtb3RlXG4iCiIgIHRvbzpcbiIKIiBcbiIKIiAgICAgICAgY3VybCAtVCB1cGxvYWRmaWxlIC11IHVzZXI6cGFzc3dkIGZ0cDovL2Z0cC51cGxvYWQuY29tL1xuIgoiXG4iCiIgIFVwbG9hZCBhIGxvY2FsIGZpbGUgdG8gZ2V0IGFwcGVuZGVkIHRvIHRoZSByZW1vdGUgZmlsZSB1c2luZyBmdHA6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtVCBsb2NhbGZpbGUgLWEgZnRwOi8vZnRwLnVwbG9hZC5jb20vcmVtb3RlZmlsZVxuIgoiXG4iCiIgIEN1cmwgYWxzbyBzdXBwb3J0cyBmdHAgdXBsb2FkIHRocm91Z2ggYSBwcm94eSwgYnV0IG9ubHkgaWYgdGhlIHByb3h5IGlzXG4iCiIgIGNvbmZpZ3VyZWQgdG8gYWxsb3cgdGhhdCBraW5kIG9mIHR1bm5lbGluZy4gSWYgaXQgZG9lcywgeW91IGNhbiBydW4gY3VybCBpblxuIgoiICBhIGZhc2hpb24gc2ltaWxhciB0bzpcbiIKIlxuIgoiICAgICAgICBjdXJsIC0tcHJveHl0dW5uZWwgLXggcHJveHk6cG9ydCAtVCBsb2NhbGZpbGUgZnRwLnVwbG9hZC5jb21cbiIKIlxuIgoiIEhUVFBcbiIKIlxuIgoiICBVcGxvYWQgYWxsIGRhdGEgb24gc3RkaW4gdG8gYSBzcGVjaWZpZWQgaHR0cCBzaXRlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXQgaHR0cDovL3d3dy51cGxvYWQuY29tL215ZmlsZVxuIgoiXG4iCiIgIE5vdGUgdGhhdCB0aGUgaHR0cCBzZXJ2ZXIgbXVzdCd2ZSBiZWVuIGNvbmZpZ3VyZWQgdG8gYWNjZXB0IFBVVCBiZWZvcmUgdGhpc1xuIgoiICBjYW4gYmUgZG9uZSBzdWNjZXNzZnVsbHkuXG4iCiJcbiIKIiAgRm9yIG90aGVyIHdheXMgdG8gZG8gaHR0cCBkYXRhIHVwbG9hZCwgc2VlIHRoZSBQT1NUIHNlY3Rpb24gYmVsb3cuXG4iCiJcbiIKIlZFUkJPU0UgLyBERUJVR1xuIgoiXG4iCiIgIElmIGN1cmwgZmFpbHMgd2hlcmUgaXQgaXNuJ3Qgc3VwcG9zZWQgdG8sIGlmIHRoZSBzZXJ2ZXJzIGRvbid0IGxldCB5b3VcbiIKIiAgaW4sIGlmIHlvdSBjYW4ndCB1bmRlcnN0YW5kIHRoZSByZXNwb25zZXM6IHVzZSB0aGUgLXYgZmxhZyB0byBnZXQgVkVSQk9TRVxuIgoiICBmZXRjaGluZy4gQ3VybCB3aWxsIG91dHB1dCBsb3RzIG9mIGluZm8gYW5kIGFsbCBkYXRhIGl0IHNlbmRzIGFuZFxuIgoiICByZWNlaXZlcyBpbiBvcmRlciB0byBsZXQgdGhlIHVzZXIgc2VlIGFsbCBjbGllbnQtc2VydmVyIGludGVyYWN0aW9uLlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXYgZnRwOi8vZnRwLnVwbG9hZC5jb20vXG4iCiJcbiIKIkRFVEFJTEVEIElORk9STUFUSU9OXG4iCiJcbiIKIiAgRGlmZmVyZW50IHByb3RvY29scyBwcm92aWRlIGRpZmZlcmVudCB3YXlzIG9mIGdldHRpbmcgZGV0YWlsZWQgaW5mb3JtYXRpb25cbiIKIiAgYWJvdXQgc3BlY2lmaWMgZmlsZXMvZG9jdW1lbnRzLiBUbyBnZXQgY3VybCB0byBzaG93IGRldGFpbGVkIGluZm9ybWF0aW9uXG4iCiIgIGFib3V0IGEgc2luZ2xlIGZpbGUsIHlvdSBzaG91bGQgdXNlIC1JLy0taGVhZCBvcHRpb24uIEl0IGRpc3BsYXlzIGFsbFxuIgoiICBhdmFpbGFibGUgaW5mbyBvbiBhIHNpbmdsZSBmaWxlIGZvciBIVFRQIGFuZCBGVFAuIFRoZSBIVFRQIGluZm9ybWF0aW9uIGlzIGFcbiIKIiAgbG90IG1vcmUgZXh0ZW5zaXZlLlxuIgoiXG4iCiIgIEZvciBIVFRQLCB5b3UgY2FuIGdldCB0aGUgaGVhZGVyIGluZm9ybWF0aW9uICh0aGUgc2FtZSBhcyAtSSB3b3VsZCBzaG93KVxuIgoiICBzaG93biBiZWZvcmUgdGhlIGRhdGEgYnkgdXNpbmcgLWkvLS1pbmNsdWRlLiBDdXJsIHVuZGVyc3RhbmRzIHRoZVxuIgoiICAtRC8tLWR1bXAtaGVhZGVyIG9wdGlvbiB3aGVuIGdldHRpbmcgZmlsZXMgZnJvbSBib3RoIEZUUCBhbmQgSFRUUCwgYW5kIGl0XG4iCiIgIHdpbGwgdGhlbiBzdG9yZSB0aGUgaGVhZGVycyBpbiB0aGUgc3BlY2lmaWVkIGZpbGUuXG4iCiJcbiIKIiAgU3RvcmUgdGhlIEhUVFAgaGVhZGVycyBpbiBhIHNlcGFyYXRlIGZpbGU6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtLWR1bXAtaGVhZGVyIGhlYWRlcnMudHh0IGN1cmwuaGF4eC5zZVxuIgoiXG4iCiIgIE5vdGUgdGhhdCBoZWFkZXJzIHN0b3JlZCBpbiBhIHNlcGFyYXRlIGZpbGUgY2FuIGJlIHZlcnkgdXNlZnVsIGF0IGEgbGF0ZXJcbiIKIiAgdGltZSBpZiB5b3Ugd2FudCBjdXJsIHRvIHVzZSBjb29raWVzIHNlbnQgYnkgdGhlIHNlcnZlci4gTW9yZSBhYm91dCB0aGF0IGluXG4iCiIgIHRoZSBjb29raWVzIHNlY3Rpb24uXG4iCiJcbiIKIlBPU1QgKEhUVFApXG4iCiJcbiIKIiAgSXQncyBlYXN5IHRvIHBvc3QgZGF0YSB1c2luZyBjdXJsLiBUaGlzIGlzIGRvbmUgdXNpbmcgdGhlIC1kIDxkYXRhPlxuIgoiICBvcHRpb24uICBUaGUgcG9zdCBkYXRhIG11c3QgYmUgdXJsZW5jb2RlZC5cbiIKIlxuIgoiICBQb3N0IGEgc2ltcGxlIFwibmFtZVwiIGFuZCBcInBob25lXCIgZ3Vlc3Rib29rLlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLWQgXCJuYW1lPVJhZmFlbCUyMFNhZ3VsYSZwaG9uZT0zMzIwNzgwXCIgXFxcbiIKIiAgICAgICAgICAgICAgICBodHRwOi8vd3d3LndoZXJlLmNvbS9ndWVzdC5jZ2lcbiIKIlxuIgoiICBIb3cgdG8gcG9zdCBhIGZvcm0gd2l0aCBjdXJsLCBsZXNzb24gIzE6XG4iCiJcbiIKIiAgRGlnIG91dCBhbGwgdGhlIDxpbnB1dD4gdGFncyBpbiB0aGUgZm9ybSB0aGF0IHlvdSB3YW50IHRvIGZpbGwgaW4uIChUaGVyZSdzXG4iCiIgIGEgcGVybCBwcm9ncmFtIGNhbGxlZCBmb3JtZmluZC5wbCBvbiB0aGUgY3VybCBzaXRlIHRoYXQgaGVscHMgd2l0aCB0aGlzKS5cbiIKIlxuIgoiICBJZiB0aGVyZSdzIGEgXCJub3JtYWxcIiBwb3N0LCB5b3UgdXNlIC1kIHRvIHBvc3QuIC1kIHRha2VzIGEgZnVsbCBcInBvc3RcbiIKIiAgc3RyaW5nXCIsIHdoaWNoIGlzIGluIHRoZSBmb3JtYXRcbiIKIlxuIgoiICAgICAgICA8dmFyaWFibGUxPj08ZGF0YTE+Jjx2YXJpYWJsZTI+PTxkYXRhMj4mLi4uXG4iCiJcbiIKIiAgVGhlICd2YXJpYWJsZScgbmFtZXMgYXJlIHRoZSBuYW1lcyBzZXQgd2l0aCBcIm5hbWU9XCIgaW4gdGhlIDxpbnB1dD4gdGFncywgYW5kXG4iCiIgIHRoZSBkYXRhIGlzIHRoZSBjb250ZW50cyB5b3Ugd2FudCB0byBmaWxsIGluIGZvciB0aGUgaW5wdXRzLiBUaGUgZGF0YSAqbXVzdCpcbiIKIiAgYmUgcHJvcGVybHkgVVJMIGVuY29kZWQuIFRoYXQgbWVhbnMgeW91IHJlcGxhY2Ugc3BhY2Ugd2l0aCArIGFuZCB0aGF0IHlvdVxuIgoiICB3cml0ZSB3ZWlyZCBsZXR0ZXJzIHdpdGggJVhYIHdoZXJlIFhYIGlzIHRoZSBoZXhhZGVjaW1hbCByZXByZXNlbnRhdGlvbiBvZlxuIgoiICB0aGUgbGV0dGVyJ3MgQVNDSUkgY29kZS5cbiIKIlxuIgoiICBFeGFtcGxlOlxuIgoiXG4iCiIgIChwYWdlIGxvY2F0ZWQgYXQgaHR0cDovL3d3dy5mb3JtcG9zdC5jb20vZ2V0dGhpcy9cbiIKIlxuIgoiICAgICAgICA8Zm9ybSBhY3Rpb249XCJwb3N0LmNnaVwiIG1ldGhvZD1cInBvc3RcIj5cbiIKIiAgICAgICAgPGlucHV0IG5hbWU9dXNlciBzaXplPTEwPlxuIgoiICAgICAgICA8aW5wdXQgbmFtZT1wYXNzIHR5cGU9cGFzc3dvcmQgc2l6ZT0xMD5cbiIKIiAgICAgICAgPGlucHV0IG5hbWU9aWQgdHlwZT1oaWRkZW4gdmFsdWU9XCJibGFibGFibGFcIj5cbiIKIiAgICAgICAgPGlucHV0IG5hbWU9ZGluZyB2YWx1ZT1cInN1Ym1pdFwiPlxuIgoiICAgICAgICA8L2Zvcm0+XG4iCiJcbiIKIiAgV2Ugd2FudCB0byBlbnRlciB1c2VyICdmb29iYXInIHdpdGggcGFzc3dvcmQgJzEyMzQ1Jy5cbiIKIlxuIgoiICBUbyBwb3N0IHRvIHRoaXMsIHlvdSBlbnRlciBhIGN1cmwgY29tbWFuZCBsaW5lIGxpa2U6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtZCBcInVzZXI9Zm9vYmFyJnBhc3M9MTIzNDUmaWQ9YmxhYmxhYmxhJmRpZz1zdWJtaXRcIiAgKGNvbnRpbnVlcylcbiIKIiAgICAgICAgICBodHRwOi8vd3d3LmZvcm1wb3N0LmNvbS9nZXR0aGlzL3Bvc3QuY2dpXG4iCiJcbiIKIlxuIgoiICBXaGlsZSAtZCB1c2VzIHRoZSBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQgbWltZS10eXBlLCBnZW5lcmFsbHlcbiIKIiAgdW5kZXJzdG9vZCBieSBDR0kncyBhbmQgc2ltaWxhciwgY3VybCBhbHNvIHN1cHBvcnRzIHRoZSBtb3JlIGNhcGFibGVcbiIKIiAgbXVsdGlwYXJ0L2Zvcm0tZGF0YSB0eXBlLiBUaGlzIGxhdHRlciB0eXBlIHN1cHBvcnRzIHRoaW5ncyBsaWtlIGZpbGUgdXBsb2FkLlxuIgoiXG4iCiIgIC1GIGFjY2VwdHMgcGFyYW1ldGVycyBsaWtlIC1GIFwibmFtZT1jb250ZW50c1wiLiBJZiB5b3Ugd2FudCB0aGUgY29udGVudHMgdG9cbiIKIiAgYmUgcmVhZCBmcm9tIGEgZmlsZSwgdXNlIDxAZmlsZW5hbWU+IGFzIGNvbnRlbnRzLiBXaGVuIHNwZWNpZnlpbmcgYSBmaWxlLFxuIgoiICB5b3UgY2FuIGFsc28gc3BlY2lmeSB3aGljaCBjb250ZW50IHR5cGUgdGhlIGZpbGUgaXMsIGJ5IGFwcGVuZGluZ1xuIgoiICAnO3R5cGU9PG1pbWUgdHlwZT4nIHRvIHRoZSBmaWxlIG5hbWUuIFlvdSBjYW4gYWxzbyBwb3N0IGNvbnRlbnRzIG9mIHNldmVyYWxcbiIKIiAgZmlsZXMgaW4gb25lIGZpZWxkLiBTbyB0aGF0IHRoZSBmaWVsZCBuYW1lICdjb29sZmlsZXMnIGNhbiBiZSBzZW50IHRocmVlXG4iCiIgIGZpbGVzIHdpdGggZGlmZmVyZW50IGNvbnRlbnQgdHlwZXMgaW4gYSBtYW5uZXIgc2ltaWxhciB0bzpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1GIFwiY29vbGZpbGVzPUBmaWwxLmdpZjt0eXBlPWltYWdlL2dpZixmaWwyLnR4dCxmaWwzLmh0bWxcIiBcXFxuIgoiICAgICAgICBodHRwOi8vd3d3LnBvc3QuY29tL3Bvc3RpdC5jZ2lcbiIKIlxuIgoiICBJZiBjb250ZW50LXR5cGUgaXMgbm90IHNwZWNpZmllZCwgY3VybCB3aWxsIHRyeSB0byBndWVzcyBmcm9tIHRoZSBleHRlbnNpb25cbiIKIiAgKGl0IG9ubHkga25vd3MgYSBmZXcpLCBvciB1c2UgdGhlIHByZXZpb3VzbHkgc3BlY2lmaWVkIHR5cGUgKGZyb20gYW4gZWFybGllclxuIgoiICBmaWxlIGlmIHNldmVyYWwgZmlsZXMgYXJlIHNwZWNpZmllZCBpbiBhIGxpc3QpIG9yIGZpbmFsbHkgdXNpbmcgdGhlIGRlZmF1bHRcbiIKIiAgdHlwZSAndGV4dC9wbGFpbicuXG4iCiJcbiIKIiAgRW11bGF0ZSBhIGZpbGwtaW4gZm9ybSB3aXRoIC1GLiBMZXQncyBzYXkgeW91IGZpbGwgaW4gdGhyZWUgZmllbGRzIGluIGFcbiIKIiAgZm9ybS4gT25lIGZpZWxkIGlzIGEgZmlsZSBuYW1lIHdoaWNoIHRvIHBvc3QsIG9uZSBmaWVsZCBpcyB5b3VyIG5hbWUgYW5kIG9uZVxuIgoiICBmaWVsZCBpcyBhIGZpbGUgZGVzY3JpcHRpb24uIFdlIHdhbnQgdG8gcG9zdCB0aGUgZmlsZSB3ZSBoYXZlIHdyaXR0ZW4gbmFtZWRcbiIKIiAgXCJjb29sdGV4dC50eHRcIi4gVG8gbGV0IGN1cmwgZG8gdGhlIHBvc3Rpbmcgb2YgdGhpcyBkYXRhIGluc3RlYWQgb2YgeW91clxuIgoiICBmYXZvdXJpdGUgYnJvd3NlciwgeW91IGhhdmUgdG8gY2hlY2sgb3V0IHRoZSBIVE1MIG9mIHRoZSBmb3JtIHBhZ2UgdG8gZ2V0IHRvXG4iCiIgIGtub3cgdGhlIG5hbWVzIG9mIHRoZSBpbnB1dCBmaWVsZHMuIEluIG91ciBleGFtcGxlLCB0aGUgaW5wdXQgZmllbGQgbmFtZXMgYXJlXG4iCiIgICdmaWxlJywgJ3lvdXJuYW1lJyBhbmQgJ2ZpbGVkZXNjcmlwdGlvbicuXG4iCiJcbiIKIiAgICAgICAgY3VybCAtRiBcImZpbGU9QGNvb2x0ZXh0LnR4dFwiIC1GIFwieW91cm5hbWU9RGFuaWVsXCIgXFxcbiIKIiAgICAgICAgICAgICAtRiBcImZpbGVkZXNjcmlwdGlvbj1Db29sIHRleHQgZmlsZSB3aXRoIGNvb2wgdGV4dCBpbnNpZGVcIiBcXFxuIgoiICAgICAgICAgICAgIGh0dHA6Ly93d3cucG9zdC5jb20vcG9zdGl0LmNnaVxuIgoiXG4iCiIgIFNvLCB0byBzZW5kIHR3byBmaWxlcyBpbiBvbmUgcG9zdCB5b3UgY2FuIGRvIGl0IGluIHR3byB3YXlzOlxuIgoiXG4iCiIgIDEuIFNlbmQgbXVsdGlwbGUgZmlsZXMgaW4gYSBzaW5nbGUgXCJmaWVsZFwiIHdpdGggYSBzaW5nbGUgZmllbGQgbmFtZTpcbiIKIiBcbiIKIiAgICAgICAgY3VybCAtRiBcInBpY3R1cmVzPUBkb2cuZ2lmLGNhdC5naWZcIiBcbiIKIiBcbiIKIiAgMi4gU2VuZCB0d28gZmllbGRzIHdpdGggdHdvIGZpZWxkIG5hbWVzOiBcbiIKIlxuIgoiICAgICAgICBjdXJsIC1GIFwiZG9jcGljdHVyZT1AZG9nLmdpZlwiIC1GIFwiY2F0cGljdHVyZT1AY2F0LmdpZlwiIFxuIgoiXG4iCiJSRUZFUkVSXG4iCiJcbiIKIiAgQSBIVFRQIHJlcXVlc3QgaGFzIHRoZSBvcHRpb24gdG8gaW5jbHVkZSBpbmZvcm1hdGlvbiBhYm91dCB3aGljaCBhZGRyZXNzXG4iCiIgIHRoYXQgcmVmZXJyZWQgdG8gYWN0dWFsIHBhZ2UsIGFuZCBjdXJsIGFsbG93cyB0aGUgdXNlciB0byBzcGVjaWZ5IHRoYXRcbiIKIiAgcmVmZXJyZXIgdG8gZ2V0IHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lLiBJdCBpcyBlc3BlY2lhbGx5IHVzZWZ1bCB0b1xuIgoiICBmb29sIG9yIHRyaWNrIHN0dXBpZCBzZXJ2ZXJzIG9yIENHSSBzY3JpcHRzIHRoYXQgcmVseSBvbiB0aGF0IGluZm9ybWF0aW9uXG4iCik7CiBwdXRzKAoiICBiZWluZyBhdmFpbGFibGUgb3IgY29udGFpbiBjZXJ0YWluIGRhdGEuXG4iCiJcbiIKIiAgICAgICAgY3VybCAtZSB3d3cuY29vbHNpdGUuY29tIGh0dHA6Ly93d3cuc2hvd21lLmNvbS9cbiIKIlxuIgoiVVNFUiBBR0VOVFxuIgoiXG4iCiIgIEEgSFRUUCByZXF1ZXN0IGhhcyB0aGUgb3B0aW9uIHRvIGluY2x1ZGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGJyb3dzZXJcbiIKIiAgdGhhdCBnZW5lcmF0ZWQgdGhlIHJlcXVlc3QuIEN1cmwgYWxsb3dzIGl0IHRvIGJlIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZFxuIgoiICBsaW5lLiBJdCBpcyBlc3BlY2lhbGx5IHVzZWZ1bCB0byBmb29sIG9yIHRyaWNrIHN0dXBpZCBzZXJ2ZXJzIG9yIENHSVxuIgoiICBzY3JpcHRzIHRoYXQgb25seSBhY2NlcHQgY2VydGFpbiBicm93c2Vycy5cbiIKIlxuIgoiICBFeGFtcGxlOlxuIgoiXG4iCiIgIGN1cmwgLUEgJ01vemlsbGEvMy4wIChXaW45NTsgSSknIGh0dHA6Ly93d3cubmF0aW9uc2JhbmsuY29tL1xuIgoiXG4iCiIgIE90aGVyIGNvbW1vbiBzdHJpbmdzOlxuIgoiICAgICdNb3ppbGxhLzMuMCAoV2luOTU7IEkpJyAgICAgTmV0c2NhcGUgVmVyc2lvbiAzIGZvciBXaW5kb3dzIDk1XG4iCiIgICAgJ01vemlsbGEvMy4wNCAoV2luOTU7IFUpJyAgICBOZXRzY2FwZSBWZXJzaW9uIDMgZm9yIFdpbmRvd3MgOTVcbiIKIiAgICAnTW96aWxsYS8yLjAyIChPUy8yOyBVKScgICAgIE5ldHNjYXBlIFZlcnNpb24gMiBmb3IgT1MvMlxuIgoiICAgICdNb3ppbGxhLzQuMDQgW2VuXSAoWDExOyBVOyBBSVggNC4yOyBOYXYpJyAgICAgICAgICAgTlMgZm9yIEFJWFxuIgoiICAgICdNb3ppbGxhLzQuMDUgW2VuXSAoWDExOyBVOyBMaW51eCAyLjAuMzIgaTU4NiknICAgICAgTlMgZm9yIExpbnV4XG4iCiJcbiIKIiAgTm90ZSB0aGF0IEludGVybmV0IEV4cGxvcmVyIHRyaWVzIGhhcmQgdG8gYmUgY29tcGF0aWJsZSBpbiBldmVyeSB3YXk6XG4iCiIgICAgJ01vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDQuMDE7IFdpbmRvd3MgOTUpJyAgICBNU0lFIGZvciBXOTVcbiIKIlxuIgoiICBNb3ppbGxhIGlzIG5vdCB0aGUgb25seSBwb3NzaWJsZSBVc2VyLUFnZW50IG5hbWU6XG4iCiIgICAgJ0tvbnF1ZXJvci8xLjAnICAgICAgICAgICAgIEtERSBGaWxlIE1hbmFnZXIgZGVza3RvcCBjbGllbnRcbiIKIiAgICAnTHlueC8yLjcuMSBsaWJ3d3ctRk0vMi4xNCcgTHlueCBjb21tYW5kIGxpbmUgYnJvd3NlclxuIgoiXG4iCiJDT09LSUVTXG4iCiJcbiIKIiAgQ29va2llcyBhcmUgZ2VuZXJhbGx5IHVzZWQgYnkgd2ViIHNlcnZlcnMgdG8ga2VlcCBzdGF0ZSBpbmZvcm1hdGlvbiBhdCB0aGVcbiIKIiAgY2xpZW50J3Mgc2lkZS4gVGhlIHNlcnZlciBzZXRzIGNvb2tpZXMgYnkgc2VuZGluZyBhIHJlc3BvbnNlIGxpbmUgaW4gdGhlXG4iCiIgIGhlYWRlcnMgdGhhdCBsb29rcyBsaWtlICdTZXQtQ29va2llOiA8ZGF0YT4nIHdoZXJlIHRoZSBkYXRhIHBhcnQgdGhlblxuIgoiICB0eXBpY2FsbHkgY29udGFpbnMgYSBzZXQgb2YgTkFNRT1WQUxVRSBwYWlycyAoc2VwYXJhdGVkIGJ5IHNlbWljb2xvbnMgJzsnXG4iCiIgIGxpa2UgXCJOQU1FMT1WQUxVRTE7IE5BTUUyPVZBTFVFMjtcIikuIFRoZSBzZXJ2ZXIgY2FuIGFsc28gc3BlY2lmeSBmb3Igd2hhdFxuIgoiICBwYXRoIHRoZSBcImNvb2tpZVwiIHNob3VsZCBiZSB1c2VkIGZvciAoYnkgc3BlY2lmeWluZyBcInBhdGg9dmFsdWVcIiksIHdoZW4gdGhlXG4iCiIgIGNvb2tpZSBzaG91bGQgZXhwaXJlIChcImV4cGlyZT1EQVRFXCIpLCBmb3Igd2hhdCBkb21haW4gdG8gdXNlIGl0XG4iCiIgIChcImRvbWFpbj1OQU1FXCIpIGFuZCBpZiBpdCBzaG91bGQgYmUgdXNlZCBvbiBzZWN1cmUgY29ubmVjdGlvbnMgb25seVxuIgoiICAoXCJzZWN1cmVcIikuXG4iCiJcbiIKIiAgSWYgeW91J3ZlIHJlY2VpdmVkIGEgcGFnZSBmcm9tIGEgc2VydmVyIHRoYXQgY29udGFpbnMgYSBoZWFkZXIgbGlrZTpcbiIKIiAgICAgICAgU2V0LUNvb2tpZTogc2Vzc2lvbmlkPWJvbzEyMzsgcGF0aD1cIi9mb29cIjtcbiIKIlxuIgoiICBpdCBtZWFucyB0aGUgc2VydmVyIHdhbnRzIHRoYXQgZmlyc3QgcGFpciBwYXNzZWQgb24gd2hlbiB3ZSBnZXQgYW55dGhpbmcgaW5cbiIKIiAgYSBwYXRoIGJlZ2lubmluZyB3aXRoIFwiL2Zvb1wiLlxuIgoiXG4iCiIgIEV4YW1wbGUsIGdldCBhIHBhZ2UgdGhhdCB3YW50cyBteSBuYW1lIHBhc3NlZCBpbiBhIGNvb2tpZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1iIFwibmFtZT1EYW5pZWxcIiB3d3cuc2lsbHlwYWdlLmNvbVxuIgoiXG4iCiIgIEN1cmwgYWxzbyBoYXMgdGhlIGFiaWxpdHkgdG8gdXNlIHByZXZpb3VzbHkgcmVjZWl2ZWQgY29va2llcyBpbiBmb2xsb3dpbmdcbiIKIiAgc2Vzc2lvbnMuIElmIHlvdSBnZXQgY29va2llcyBmcm9tIGEgc2VydmVyIGFuZCBzdG9yZSB0aGVtIGluIGEgZmlsZSBpbiBhXG4iCiIgIG1hbm5lciBzaW1pbGFyIHRvOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLS1kdW1wLWhlYWRlciBoZWFkZXJzIHd3dy5leGFtcGxlLmNvbVxuIgoiXG4iCiIgIC4uLiB5b3UgY2FuIHRoZW4gaW4gYSBzZWNvbmQgY29ubmVjdCB0byB0aGF0IChvciBhbm90aGVyKSBzaXRlLCB1c2UgdGhlXG4iCiIgIGNvb2tpZXMgZnJvbSB0aGUgJ2hlYWRlcnMnIGZpbGUgbGlrZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1iIGhlYWRlcnMgd3d3LmV4YW1wbGUuY29tXG4iCiJcbiIKIiAgTm90ZSB0aGF0IGJ5IHNwZWNpZnlpbmcgLWIgeW91IGVuYWJsZSB0aGUgXCJjb29raWUgYXdhcmVuZXNzXCIgYW5kIHdpdGggLUxcbiIKIiAgeW91IGNhbiBtYWtlIGN1cmwgZm9sbG93IGEgbG9jYXRpb246ICh3aGljaCBvZnRlbiBpcyB1c2VkIGluIGNvbWJpbmF0aW9uXG4iCiIgIHdpdGggY29va2llcykuIFNvIHRoYXQgaWYgYSBzaXRlIHNlbmRzIGNvb2tpZXMgYW5kIGEgbG9jYXRpb24sIHlvdSBjYW5cbiIKIiAgdXNlIGEgbm9uLWV4aXN0aW5nIGZpbGUgdG8gdHJpZyB0aGUgY29va2llIGF3YXJlbmVzcyBsaWtlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLUwgLWIgZW1wdHktZmlsZSB3d3cuZXhhbXBsZS5jb21cbiIKIlxuIgoiICBUaGUgZmlsZSB0byByZWFkIGNvb2tpZXMgZnJvbSBtdXN0IGJlIGZvcm1hdHRlZCB1c2luZyBwbGFpbiBIVFRQIGhlYWRlcnMgT1JcbiIKIiAgYXMgbmV0c2NhcGUncyBjb29raWUgZmlsZS4gQ3VybCB3aWxsIGRldGVybWluZSB3aGF0IGtpbmQgaXQgaXMgYmFzZWQgb24gdGhlXG4iCiIgIGZpbGUgY29udGVudHMuXG4iCiJcbiIKIlBST0dSRVNTIE1FVEVSXG4iCiJcbiIKIiAgVGhlIHByb2dyZXNzIG1ldGVyIGV4aXN0cyB0byBzaG93IGEgdXNlciB0aGF0IHNvbWV0aGluZyBhY3R1YWxseSBpc1xuIgoiICBoYXBwZW5pbmcuIFRoZSBkaWZmZXJlbnQgZmllbGRzIGluIHRoZSBvdXRwdXQgaGF2ZSB0aGUgZm9sbG93aW5nIG1lYW5pbmc6XG4iCiJcbiIKIiAgJSBUb3RhbCAgICAlIFJlY2VpdmVkICUgWGZlcmQgIEF2ZXJhZ2UgU3BlZWQgICAgICAgICAgVGltZSAgICAgICAgICAgICBDdXJyLlxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGxvYWQgIFVwbG9hZCBUb3RhbCAgICBDdXJyZW50ICBMZWZ0ICAgIFNwZWVkXG4iCiIgIDAgIDE1MU0gICAgMCAzODYwOCAgICAwICAgICAwICAgOTQwNiAgICAgIDAgIDQ6NDE6NDMgIDA6MDA6MDQgIDQ6NDE6MzkgIDkyODdcbiIKIlxuIgoiICBGcm9tIGxlZnQtdG8tcmlnaHQ6XG4iCiIgICAlICAgICAgICAgICAgIC0gcGVyY2VudGFnZSBjb21wbGV0ZWQgb2YgdGhlIHdob2xlIHRyYW5zZmVyXG4iCiIgICBUb3RhbCAgICAgICAgIC0gdG90YWwgc2l6ZSBvZiB0aGUgd2hvbGUgZXhwZWN0ZWQgdHJhbnNmZXJcbiIKIiAgICUgICAgICAgICAgICAgLSBwZXJjZW50YWdlIGNvbXBsZXRlZCBvZiB0aGUgZG93bmxvYWRcbiIKIiAgIFJlY2VpdmVkICAgICAgLSBjdXJyZW50bHkgZG93bmxvYWRlZCBhbW91bnQgb2YgYnl0ZXNcbiIKIiAgICUgICAgICAgICAgICAgLSBwZXJjZW50YWdlIGNvbXBsZXRlZCBvZiB0aGUgdXBsb2FkXG4iCiIgICBYZmVyZCAgICAgICAgIC0gY3VycmVudGx5IHVwbG9hZGVkIGFtb3VudCBvZiBieXRlc1xuIgoiICAgQXZlcmFnZSBTcGVlZFxuIgoiICAgRGxvYWQgICAgICAgICAtIHRoZSBhdmVyYWdlIHRyYW5zZmVyIHNwZWVkIG9mIHRoZSBkb3dubG9hZFxuIgoiICAgQXZlcmFnZSBTcGVlZFxuIgoiICAgVXBsb2FkICAgICAgICAtIHRoZSBhdmVyYWdlIHRyYW5zZmVyIHNwZWVkIG9mIHRoZSB1cGxvYWRcbiIKIiAgIFRpbWUgVG90YWwgICAgLSBleHBlY3RlZCB0aW1lIHRvIGNvbXBsZXRlIHRoZSBvcGVyYXRpb25cbiIKIiAgIFRpbWUgQ3VycmVudCAgLSB0aW1lIHBhc3NlZCBzaW5jZSB0aGUgaW52b2tlXG4iCiIgICBUaW1lIExlZnQgICAgIC0gZXhwZWN0ZWQgdGltZSBsZWZ0IHRvIGNvbXBsZXRldGlvblxuIgoiICAgQ3Vyci5TcGVlZCAgICAtIHRoZSBhdmVyYWdlIHRyYW5zZmVyIHNwZWVkIHRoZSBsYXN0IDUgc2Vjb25kcyAodGhlIGZpcnN0XG4iCiIgICAgICAgICAgICAgICAgICAgNSBzZWNvbmRzIG9mIGEgdHJhbnNmZXIgaXMgYmFzZWQgb24gbGVzcyB0aW1lIG9mIGNvdXJzZS4pXG4iCiJcbiIKIiAgVGhlIC0jIG9wdGlvbiB3aWxsIGRpc3BsYXkgYSB0b3RhbGx5IGRpZmZlcmVudCBwcm9ncmVzcyBiYXIgdGhhdCBkb2Vzbid0XG4iCiIgIG5lZWQgbXVjaCBleHBsYW5hdGlvbiFcbiIKIlxuIgoiU1BFRUQgTElNSVRcbiIKIlxuIgoiICBDdXJsIG9mZmVycyB0aGUgdXNlciB0byBzZXQgY29uZGl0aW9ucyByZWdhcmRpbmcgdHJhbnNmZXIgc3BlZWQgdGhhdCBtdXN0XG4iCiIgIGJlIG1ldCB0byBsZXQgdGhlIHRyYW5zZmVyIGtlZXAgZ29pbmcuIEJ5IHVzaW5nIHRoZSBzd2l0Y2ggLXkgYW5kIC1ZIHlvdVxuIgoiICBjYW4gbWFrZSBjdXJsIGFib3J0IHRyYW5zZmVycyBpZiB0aGUgdHJhbnNmZXIgc3BlZWQgZG9lc24ndCBleGNlZWQgeW91clxuIgoiICBnaXZlbiBsb3dlc3QgbGltaXQgZm9yIGEgc3BlY2lmaWVkIHRpbWUuXG4iCiJcbiIKIiAgVG8gbGV0IGN1cmwgYWJhbmRvbiBkb3dubG9hZGluZyB0aGlzIHBhZ2UgaWYgaXRzIHNsb3dlciB0aGFuIDMwMDAgYnl0ZXMgcGVyXG4iCiIgIHNlY29uZCBmb3IgMSBtaW51dGUsIHJ1bjpcbiIKIlxuIgoiICAgICAgICBjdXJsIC15IDMwMDAgLVkgNjAgd3d3LmZhci1hd2F5LXNpdGUuY29tXG4iCiJcbiIKIiAgVGhpcyBjYW4gdmVyeSB3ZWxsIGJlIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgb3ZlcmFsbCB0aW1lIGxpbWl0LCBzb1xuIgoiICB0aGF0IHRoZSBhYm92ZSBvcGVyYXRpb2luIG11c3QgYmUgY29tcGxldGVkIGluIHdob2xlIHdpdGhpbiAzMCBtaW51dGVzOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLW0gMTgwMCAteSAzMDAwIC1ZIDYwIHd3dy5mYXItYXdheS1zaXRlLmNvbVxuIgoiXG4iCiJDT05GSUcgRklMRVxuIgoiXG4iCiIgIEN1cmwgYXV0b21hdGljYWxseSB0cmllcyB0byByZWFkIHRoZSAuY3VybHJjIGZpbGUgKG9yIF9jdXJscmMgZmlsZSBvbiB3aW4zMlxuIgoiICBzeXN0ZW1zKSBmcm9tIHRoZSB1c2VyJ3MgaG9tZSBkaXIgb24gc3RhcnR1cC5cbiIKIlxuIgoiICBUaGUgY29uZmlnIGZpbGUgY291bGQgYmUgbWFkZSB1cCB3aXRoIG5vcm1hbCBjb21tYW5kIGxpbmUgc3dpdGNoZXMsIGJ1dCB5b3VcbiIKIiAgY2FuIGFsc28gc3BlY2lmeSB0aGUgbG9uZyBvcHRpb25zIHdpdGhvdXQgdGhlIGRhc2hlcyB0byBtYWtlIGl0IG1vcmVcbiIKIiAgcmVhZGFibGUuIFlvdSBjYW4gc2VwYXJhdGUgdGhlIG9wdGlvbnMgYW5kIHRoZSBwYXJhbWV0ZXIgd2l0aCBzcGFjZXMsIG9yXG4iCiIgIHdpdGggPSBvciA6LiBDb21tZW50cyBjYW4gYmUgdXNlZCB3aXRoaW4gdGhlIGZpbGUuIElmIHRoZSBmaXJzdCBsZXR0ZXIgb24gYVxuIgoiICBsaW5lIGlzIGEgJyMnLWxldHRlciB0aGUgcmVzdCBvZiB0aGUgbGluZSBpcyB0cmVhdGVkIGFzIGEgY29tbWVudC5cbiIKIlxuIgoiICBJZiB5b3Ugd2FudCB0aGUgcGFyYW1ldGVyIHRvIGNvbnRhaW4gc3BhY2VzLCB5b3UgbXVzdCBpbmNsb3NlIHRoZSBlbnRpcmVcbiIKIiAgcGFyYW1ldGVyIHdpdGhpbiBkb3VibGUgcXVvdGVzIChcIikuIFdpdGhpbiB0aG9zZSBxdW90ZXMsIHlvdSBzcGVjaWZ5IGFcbiIKIiAgcXVvdGUgYXMgXFxcIi5cbiIKIlxuIgoiICBOT1RFOiBZb3UgbXVzdCBzcGVjaWZ5IG9wdGlvbnMgYW5kIHRoZWlyIGFyZ3VtZW50cyBvbiB0aGUgc2FtZSBsaW5lLlxuIgoiXG4iCiIgIEV4YW1wbGUsIHNldCBkZWZhdWx0IHRpbWUgb3V0IGFuZCBwcm94eSBpbiBhIGNvbmZpZyBmaWxlOlxuIgoiXG4iCiIgICAgICAgICMgV2Ugd2FudCBhIDMwIG1pbnV0ZSB0aW1lb3V0OlxuIgoiICAgICAgICAtbSAxODAwXG4iCiIgICAgICAgICMgLi4uIGFuZCB3ZSB1c2UgYSBwcm94eSBmb3IgYWxsIGFjY2Vzc2VzOlxuIgoiICAgICAgICBwcm94eSA9IHByb3h5Lm91ci5kb21haW4uY29tOjgwODBcbiIKIlxuIgoiICBXaGl0ZSBzcGFjZXMgQVJFIHNpZ25pZmljYW50IGF0IHRoZSBlbmQgb2YgbGluZXMsIGJ1dCBhbGwgd2hpdGUgc3BhY2VzXG4iCiIgIGxlYWRpbmcgdXAgdG8gdGhlIGZpcnN0IGNoYXJhY3RlcnMgb2YgZWFjaCBsaW5lIGFyZSBpZ25vcmVkLlxuIgoiXG4iCiIgIFByZXZlbnQgY3VybCBmcm9tIHJlYWRpbmcgdGhlIGRlZmF1bHQgZmlsZSBieSB1c2luZyAtcSBhcyB0aGUgZmlyc3QgY29tbWFuZFxuIgoiICBsaW5lIHBhcmFtZXRlciwgbGlrZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1xIHd3dy50aGF0c2l0ZS5jb21cbiIKIlxuIgoiICBGb3JjZSBjdXJsIHRvIGdldCBhbmQgZGlzcGxheSBhIGxvY2FsIGhlbHAgcGFnZSBpbiBjYXNlIGl0IGlzIGludm9rZWRcbiIKIiAgd2l0aG91dCBVUkwgYnkgbWFraW5nIGEgY29uZmlnIGZpbGUgc2ltaWxhciB0bzpcbiIKIlxuIgoiICAgICAgICAjIGRlZmF1bHQgdXJsIHRvIGdldFxuIgoiICAgICAgICB1cmwgPSBcImh0dHA6Ly9oZWxwLndpdGguY3VybC5jb20vY3VybGhlbHAuaHRtbFwiXG4iCiJcbiIKIiAgWW91IGNhbiBzcGVjaWZ5IGFub3RoZXIgY29uZmlnIGZpbGUgdG8gYmUgcmVhZCBieSB1c2luZyB0aGUgLUsvLS1jb25maWdcbiIKIiAgZmxhZy4gSWYgeW91IHNldCBjb25maWcgZmlsZSBuYW1lIHRvIFwiLVwiIGl0J2xsIHJlYWQgdGhlIGNvbmZpZyBmcm9tIHN0ZGluLFxuIgoiICB3aGljaCBjYW4gYmUgaGFuZHkgaWYgeW91IHdhbnQgdG8gaGlkZSBvcHRpb25zIGZyb20gYmVpbmcgdmlzaWJsZSBpbiBwcm9jZXNzXG4iCiIgIHRhYmxlcyBldGM6XG4iCiJcbiIKIiAgICAgICAgZWNobyBcInVzZXIgPSB1c2VyOnBhc3N3ZFwiIHwgY3VybCAtSyAtIGh0dHA6Ly90aGF0LnNlY3JldC5zaXRlLmNvbVxuIgoiXG4iCiJFWFRSQSBIRUFERVJTXG4iCiJcbiIKIiAgV2hlbiB1c2luZyBjdXJsIGluIHlvdXIgb3duIHZlcnkgc3BlY2lhbCBwcm9ncmFtcywgeW91IG1heSBlbmQgdXAgbmVlZGluZ1xuIgoiICB0byBwYXNzIG9uIHlvdXIgb3duIGN1c3RvbSBoZWFkZXJzIHdoZW4gZ2V0dGluZyBhIHdlYiBwYWdlLiBZb3UgY2FuIGRvXG4iCiIgIHRoaXMgYnkgdXNpbmcgdGhlIC1IIGZsYWcuXG4iCiJcbiIKIiAgRXhhbXBsZSwgc2VuZCB0aGUgaGVhZGVyIFwiWC15b3UtYW5kLW1lOiB5ZXNcIiB0byB0aGUgc2VydmVyIHdoZW4gZ2V0dGluZyBhXG4iCiIgIHBhZ2U6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtSCBcIlgteW91LWFuZC1tZTogeWVzXCIgd3d3LmxvdmUuY29tXG4iCiJcbiIKIiAgVGhpcyBjYW4gYWxzbyBiZSB1c2VmdWwgaW4gY2FzZSB5b3Ugd2FudCBjdXJsIHRvIHNlbmQgYSBkaWZmZXJlbnQgdGV4dCBpblxuIgoiICBhIGhlYWRlciB0aGFuIGl0IG5vcm1hbGx5IGRvZXMuIFRoZSAtSCBoZWFkZXIgeW91IHNwZWNpZnkgdGhlbiByZXBsYWNlcyB0aGVcbiIKIiAgaGVhZGVyIGN1cmwgd291bGQgbm9ybWFsbHkgc2VuZC5cbiIKIlxuIgoiRlRQIGFuZCBQQVRIIE5BTUVTXG4iCiJcbiIKIiAgRG8gbm90ZSB0aGF0IHdoZW4gZ2V0dGluZyBmaWxlcyB3aXRoIHRoZSBmdHA6Ly8gVVJMLCB0aGUgZ2l2ZW4gcGF0aCBpc1xuIgoiICByZWxhdGl2ZSB0aGUgZGlyZWN0b3J5IHlvdSBlbnRlci4gVG8gZ2V0IHRoZSBmaWxlICdSRUFETUUnIGZyb20geW91ciBob21lXG4iCiIgIGRpcmVjdG9yeSBhdCB5b3VyIGZ0cCBzaXRlLCBkbzpcbiIKIlxuIgoiICAgICAgICBjdXJsIGZ0cDovL3VzZXI6cGFzc3dkQG15LnNpdGUuY29tL1JFQURNRVxuIgoiXG4iCiIgIEJ1dCBpZiB5b3Ugd2FudCB0aGUgUkVBRE1FIGZpbGUgZnJvbSB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhhdCB2ZXJ5IHNhbWVcbiIKIiAgc2l0ZSwgeW91IG5lZWQgdG8gc3BlY2lmeSB0aGUgYWJzb2x1dGUgZmlsZSBuYW1lOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgZnRwOi8vdXNlcjpwYXNzd2RAbXkuc2l0ZS5jb20vL1JFQURNRVxuIgoiXG4iCiIgIChJLmUgd2l0aCBhbiBleHRyYSBzbGFzaCBpbiBmcm9udCBvZiB0aGUgZmlsZSBuYW1lLilcbiIKIlxuIgoiRlRQIGFuZCBmaXJld2FsbHNcbiIKIlxuIgoiICBUaGUgRlRQIHByb3RvY29sIHJlcXVpcmVzIG9uZSBvZiB0aGUgaW52b2x2ZWQgcGFydGllcyB0byBvcGVuIGEgc2Vjb25kXG4iCiIgIGNvbm5jdGlvbiBhcyBzb29uIGFzIGRhdGEgaXMgYWJvdXQgdG8gZ2V0IHRyYW5zZmVyZWQuIFRoZXJlIGFyZSB0d28gd2F5cyB0b1xuIgoiICBkbyB0aGlzLlxuIgoiXG4iCiIgIFRoZSBkZWZhdWx0IHdheSBmb3IgY3VybCBpcyB0byBpc3N1ZSB0aGUgUEFTViBjb21tYW5kIHdoaWNoIGNhdXNlcyB0aGVcbiIKIiAgc2VydmVyIHRvIG9wZW4gYW5vdGhlciBwb3J0IGFuZCBhd2FpdCBhbm90aGVyIGNvbm5lY3Rpb24gcGVyZm9ybWVkIGJ5IHRoZVxuIgoiICBjbGllbnQuIFRoaXMgaXMgZ29vZCBpZiB0aGUgY2xpZW50IGlzIGJlaGluZCBhIGZpcmV3YWxsIHRoYXQgZG9uJ3QgYWxsb3dcbiIKIiAgaW5jb21pbmcgY29ubmVjdGlvbnMuXG4iCiJcbiIKIiAgICAgICAgY3VybCBmdHAuZG93bmxvYWQuY29tXG4iCiJcbiIKIiAgSWYgdGhlIHNlcnZlciBmb3IgZXhhbXBsZSwgaXMgYmVoaW5kIGEgZmlyZXdhbGwgdGhhdCBkb24ndCBhbGxvdyBjb25uZWN0aW9uc1xuIgoiICBvbiBvdGhlciBwb3J0cyB0aGFuIDIxIChvciBpZiBpdCBqdXN0IGRvZXNuJ3Qgc3VwcG9ydCB0aGUgUEFTViBjb21tYW5kKSwgdGhlXG4iCiIgIG90aGVyIHdheSB0byBkbyBpdCBpcyB0byB1c2UgdGhlIFBPUlQgY29tbWFuZCBhbmQgaW5zdHJ1Y3QgdGhlIHNlcnZlciB0b1xuIgoiICBjb25uZWN0IHRvIHRoZSBjbGllbnQgb24gdGhlIGdpdmVuIChhcyBwYXJhbWV0ZXJzIHRvIHRoZSBQT1JUIGNvbW1hbmQpIElQXG4iCiIgIG51bWJlciBhbmQgcG9ydC5cbiIKIlxuIgoiICBUaGUgLVAgZmxhZyB0byBjdXJsIHN1cHBvcnRzIGEgZmV3IGRpZmZlcmVudCBvcHRpb25zLiBZb3VyIG1hY2hpbmUgbWF5IGhhdmVcbiIKIiAgc2V2ZXJhbCBJUC1hZGRyZXNzZXMgYW5kL29yIG5ldHdvcmsgaW50ZXJmYWNlcyBhbmQgY3VybCBhbGxvd3MgeW91IHRvIHNlbGVjdFxuIgoiICB3aGljaCBvZiB0aGVtIHRvIHVzZS4gRGVmYXVsdCBhZGRyZXNzIGNhbiBhbHNvIGJlIHVzZWQ6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtUCAtIGZ0cC5kb3dubG9hZC5jb21cbiIKIlxuIgoiICBEb3dubG9hZCB3aXRoIFBPUlQgYnV0IHVzZSB0aGUgSVAgYWRkcmVzcyBvZiBvdXIgJ2xlMCcgaW50ZXJmYWNlICh0aGlzIGRvZXNcbiIKIiAgbm90IHdvcmsgb24gd2luZG93cyk6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtUCBsZTAgZnRwLmRvd25sb2FkLmNvbVxuIgoiXG4iCiIgIERvd25sb2FkIHdpdGggUE9SVCBidXQgdXNlIDE5Mi4xNjguMC4xMCBhcyBvdXIgSVAgYWRkcmVzcyB0byB1c2U6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtUCAxOTIuMTY4LjAuMTAgZnRwLmRvd25sb2FkLmNvbVxuIgoiXG4iCiJORVRXT1JLIElOVEVSRkFDRVxuIgoiXG4iCiIgIEdldCBhIHdlYiBwYWdlIGZyb20gYSBzZXJ2ZXIgdXNpbmcgYSBzcGVjaWZpZWQgcG9ydCBmb3IgdGhlIGludGVyZmFjZTpcbiIKIlxuIgoiCWN1cmwgLS1pbnRlcmZhY2UgZXRoMDoxIGh0dHA6Ly93d3cubmV0c2NhcGUuY29tL1xuIgoiXG4iCiIgIG9yXG4iCiJcbiIKIgljdXJsIC0taW50ZXJmYWNlIDE5Mi4xNjguMS4xMCBodHRwOi8vd3d3Lm5ldHNjYXBlLmNvbS9cbiIKIlxuIgoiSFRUUFNcbiIKIlxuIgoiICBTZWN1cmUgSFRUUCByZXF1aXJlcyBTU0wgbGlicmFyaWVzIHRvIGJlIGluc3RhbGxlZCBhbmQgdXNlZCB3aGVuIGN1cmwgaXNcbiIKIiAgYnVpbHQuIElmIHRoYXQgaXMgZG9uZSwgY3VybCBpcyBjYXBhYmxlIG9mIHJldHJpZXZpbmcgYW5kIHBvc3RpbmcgZG9jdW1lbnRzXG4iCiIgIHVzaW5nIHRoZSBIVFRQUyBwcm9jb3RvbC5cbiIKIlxuIgoiICBFeGFtcGxlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgaHR0cHM6Ly93d3cuc2VjdXJlLXNpdGUuY29tXG4iCiJcbiIKIiAgQ3VybCBpcyBhbHNvIGNhcGFibGUgb2YgdXNpbmcgeW91ciBwZXJzb25hbCBjZXJ0aWZpY2F0ZXMgdG8gZ2V0L3Bvc3QgZmlsZXNcbiIKIiAgZnJvbSBzaXRlcyB0aGF0IHJlcXVpcmUgdmFsaWQgY2VydGlmaWNhdGVzLiBUaGUgb25seSBkcmF3YmFjayBpcyB0aGF0IHRoZVxuIgoiICBjZXJ0aWZpY2F0ZSBuZWVkcyB0byBiZSBpbiBQRU0tZm9ybWF0LiBQRU0gaXMgYSBzdGFuZGFyZCBhbmQgb3BlbiBmb3JtYXQgdG9cbiIKIiAgc3RvcmUgY2VydGlmaWNhdGVzIHdpdGgsIGJ1dCBpdCBpcyBub3QgdXNlZCBieSB0aGUgbW9zdCBjb21tb25seSB1c2VkXG4iCiIgIGJyb3dzZXJzIChOZXRzY2FwZSBhbmQgTVNFSSBib3RoIHVzZSB0aGUgc28gY2FsbGVkIFBLQ1MjMTIgZm9ybWF0KS4gSWYgeW91XG4iCiIgIHdhbnQgY3VybCB0byB1c2UgdGhlIGNlcnRpZmljYXRlcyB5b3UgdXNlIHdpdGggeW91ciAoZmF2b3VyaXRlKSBicm93c2VyLCB5b3VcbiIKIiAgbWF5IG5lZWQgdG8gZG93bmxvYWQvY29tcGlsZSBhIGNvbnZlcnRlciB0aGF0IGNhbiBjb252ZXJ0IHlvdXIgYnJvd3NlcidzXG4iCiIgIGZvcm1hdHRlZCBjZXJ0aWZpY2F0ZXMgdG8gUEVNIGZvcm1hdHRlZCBvbmVzLiBUaGlzIGtpbmQgb2YgY29udmVydGVyIGlzXG4iCiIgIGluY2x1ZGVkIGluIHJlY2VudCB2ZXJzaW9ucyBvZiBPcGVuU1NMLCBhbmQgZm9yIG9sZGVyIHZlcnNpb25zIERyIFN0ZXBoZW5cbiIKIiAgTi4gSGVuc29uIGhhcyB3cml0dGVuIGEgcGF0Y2ggZm9yIFNTTGVheSB0aGF0IGFkZHMgdGhpcyBmdW5jdGlvbmFsaXR5LiBZb3VcbiIKIiAgY2FuIGdldCBoaXMgcGF0Y2ggKHRoYXQgcmVxdWlyZXMgYW4gU1NMZWF5IGluc3RhbGxhdGlvbikgZnJvbSBoaXMgc2l0ZSBhdDpcbiIKKTsKIHB1dHMoCiIgIGh0dHA6Ly93d3cuZHJoLWNvbnN1bHRhbmN5LmRlbW9uLmNvLnVrL1xuIgoiXG4iCiIgIEV4YW1wbGUgb24gaG93IHRvIGF1dG9tYXRpY2FsbHkgcmV0cmlldmUgYSBkb2N1bWVudCB1c2luZyBhIGNlcnRpZmljYXRlIHdpdGhcbiIKIiAgYSBwZXJzb25hbCBwYXNzd29yZDpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1FIC9wYXRoL3RvL2NlcnQucGVtOnBhc3N3b3JkIGh0dHBzOi8vc2VjdXJlLnNpdGUuY29tL1xuIgoiXG4iCiIgIElmIHlvdSBuZWdsZWN0IHRvIHNwZWNpZnkgdGhlIHBhc3N3b3JkIG9uIHRoZSBjb21tYW5kIGxpbmUsIHlvdSB3aWxsIGJlXG4iCiIgIHByb21wdGVkIGZvciB0aGUgY29ycmVjdCBwYXNzd29yZCBiZWZvcmUgYW55IGRhdGEgY2FuIGJlIHJlY2VpdmVkLlxuIgoiXG4iCiIgIE1hbnkgb2xkZXIgU1NMLXNlcnZlcnMgaGF2ZSBwcm9ibGVtcyB3aXRoIFNTTHYzIG9yIFRMUywgdGhhdCBuZXdlciB2ZXJzaW9uc1xuIgoiICBvZiBPcGVuU1NMIGV0YyBpcyB1c2luZywgdGhlcmVmb3JlIGl0IGlzIHNvbWV0aW1lcyB1c2VmdWwgdG8gc3BlY2lmeSB3aGF0XG4iCiIgIFNTTC12ZXJzaW9uIGN1cmwgc2hvdWxkIHVzZS4gVXNlIC0zIG9yIC0yIHRvIHNwZWNpZnkgdGhhdCBleGFjdCBTU0wgdmVyc2lvblxuIgoiICB0byB1c2U6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtMiBodHRwczovL3NlY3VyZS5zaXRlLmNvbS9cbiIKIlxuIgoiICBPdGhlcndpc2UsIGN1cmwgd2lsbCBmaXJzdCBhdHRlbXB0IHRvIHVzZSB2MyBhbmQgdGhlbiB2Mi5cbiIKIlxuIgoiICBUbyB1c2UgT3BlblNTTCB0byBjb252ZXJ0IHlvdXIgZmF2b3VyaXRlIGJyb3dzZXIncyBjZXJ0aWZpY2F0ZSBpbnRvIGEgUEVNXG4iCiIgIGZvcm1hdHRlZCBvbmUgdGhhdCBjdXJsIGNhbiB1c2UsIGRvIHNvbWV0aGluZyBsaWtlIHRoaXMgKGFzc3VtaW5nIG5ldHNjYXBlLFxuIgoiICBidXQgSUUgaXMgbGlrZWx5IHRvIHdvcmsgc2ltaWxhcmx5KTpcbiIKIlxuIgoiICAgIFlvdSBzdGFydCB3aXRoIGhpdHRpbmcgdGhlICdzZWN1cml0eScgbWVudSBidXR0b24gaW4gbmV0c2NhcGUuIFxuIgoiXG4iCiIgICAgU2VsZWN0ICdjZXJ0aWZpY2F0ZXMtPnlvdXJzJyBhbmQgdGhlbiBwaWNrIGEgY2VydGlmaWNhdGUgaW4gdGhlIGxpc3QgXG4iCiJcbiIKIiAgICBQcmVzcyB0aGUgJ2V4cG9ydCcgYnV0dG9uIFxuIgoiXG4iCiIgICAgZW50ZXIgeW91ciBQSU4gY29kZSBmb3IgdGhlIGNlcnRzIFxuIgoiXG4iCiIgICAgc2VsZWN0IGEgcHJvcGVyIHBsYWNlIHRvIHNhdmUgaXQgXG4iCiJcbiIKIiAgICBSdW4gdGhlICdvcGVuc3NsJyBhcHBsaWNhdGlvbiB0byBjb252ZXJ0IHRoZSBjZXJ0aWZpY2F0ZS4gSWYgeW91IGNkIHRvIHRoZVxuIgoiICAgIG9wZW5zc2wgaW5zdGFsbGF0aW9uLCB5b3UgY2FuIGRvIGl0IGxpa2U6XG4iCiJcbiIKIiAgICAgIyAuL2FwcHMvb3BlbnNzbCBwa2NzMTIgLWNlcnRmaWxlIFtmaWxlIHlvdSBzYXZlZF0gLW91dCBbUEVNZmlsZV1cbiIKIlxuIgoiXG4iCiJSRVNVTUlORyBGSUxFIFRSQU5TRkVSU1xuIgoiXG4iCiIgVG8gY29udGludWUgYSBmaWxlIHRyYW5zZmVyIHdoZXJlIGl0IHdhcyBwcmV2aW91c2x5IGFib3J0ZWQsIGN1cmwgc3VwcG9ydHNcbiIKIiByZXN1bWUgb24gaHR0cChzKSBkb3dubG9hZHMgYXMgd2VsbCBhcyBmdHAgdXBsb2FkcyBhbmQgZG93bmxvYWRzLlxuIgoiXG4iCiIgQ29udGludWUgZG93bmxvYWRpbmcgYSBkb2N1bWVudDpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1jIC1vIGZpbGUgZnRwOi8vZnRwLnNlcnZlci5jb20vcGF0aC9maWxlXG4iCiJcbiIKIiBDb250aW51ZSB1cGxvYWRpbmcgYSBkb2N1bWVudCgqMSk6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtYyAtVCBmaWxlIGZ0cDovL2Z0cC5zZXJ2ZXIuY29tL3BhdGgvZmlsZVxuIgoiXG4iCiIgQ29udGludWUgZG93bmxvYWRpbmcgYSBkb2N1bWVudCBmcm9tIGEgd2ViIHNlcnZlcigqMik6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtYyAtbyBmaWxlIGh0dHA6Ly93d3cuc2VydmVyLmNvbS9cbiIKIlxuIgoiICgqMSkgPSBUaGlzIHJlcXVpcmVzIHRoYXQgdGhlIGZ0cCBzZXJ2ZXIgc3VwcG9ydHMgdGhlIG5vbi1zdGFuZGFyZCBjb21tYW5kXG4iCiIgICAgICAgIFNJWkUuIElmIGl0IGRvZXNuJ3QsIGN1cmwgd2lsbCBzYXkgc28uXG4iCiJcbiIKIiAoKjIpID0gVGhpcyByZXF1aXJlcyB0aGF0IHRoZSB3YiBzZXJ2ZXIgc3VwcG9ydHMgYXQgbGVhc3QgSFRUUC8xLjEuIElmIGl0XG4iCiIgICAgICAgIGRvZXNuJ3QsIGN1cmwgd2lsbCBzYXkgc28uXG4iCiJcbiIKIlRJTUUgQ09ORElUSU9OU1xuIgoiXG4iCiIgSFRUUCBhbGxvd3MgYSBjbGllbnQgdG8gc3BlY2lmeSBhIHRpbWUgY29uZGl0aW9uIGZvciB0aGUgZG9jdW1lbnQgaXRcbiIKIiByZXF1ZXN0cy4gSXQgaXMgSWYtTW9kaWZpZWQtU2luY2Ugb3IgSWYtVW5tb2RpZmllZC1TaW5jZS4gQ3VybCBhbGxvdyB5b3UgdG9cbiIKIiBzcGVjaWZ5IHRoZW0gd2l0aCB0aGUgLXovLS10aW1lLWNvbmQgZmxhZy5cbiIKIlxuIgoiIEZvciBleGFtcGxlLCB5b3UgY2FuIGVhc2lseSBtYWtlIGEgZG93bmxvYWQgdGhhdCBvbmx5IGdldHMgcGVyZm9ybWVkIGlmIHRoZVxuIgoiIHJlbW90ZSBmaWxlIGlzIG5ld2VyIHRoYW4gYSBsb2NhbCBjb3B5LiBJdCB3b3VsZCBiZSBtYWRlIGxpa2U6XG4iCiJcbiIKIiAgICAgICAgY3VybCAteiBsb2NhbC5odG1sIGh0dHA6Ly9yZW1vdGUuc2VydmVyLmNvbS9yZW1vdGUuaHRtbFxuIgoiXG4iCiIgT3IgeW91IGNhbiBkb3dubG9hZCBhIGZpbGUgb25seSBpZiB0aGUgbG9jYWwgZmlsZSBpcyBuZXdlciB0aGFuIHRoZSByZW1vdGVcbiIKIiBvbmUuIERvIHRoaXMgYnkgcHJlcGVuZGluZyB0aGUgZGF0ZSBzdHJpbmcgd2l0aCBhICctJywgYXMgaW46XG4iCiJcbiIKIiAgICAgICAgY3VybCAteiAtbG9jYWwuaHRtbCBodHRwOi8vcmVtb3RlLnNlcnZlci5jb20vcmVtb3RlLmh0bWxcbiIKIlxuIgoiIFlvdSBjYW4gc3BlY2lmeSBhIFwiZnJlZSB0ZXh0XCIgZGF0ZSBhcyBjb25kaXRpb24uIFRlbGwgY3VybCB0byBvbmx5IGRvd25sb2FkXG4iCiIgdGhlIGZpbGUgaWYgaXQgd2FzIHVwZGF0ZWQgc2luY2UgeWVzdGVyZGF5OlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXogeWVzdGVyZGF5IGh0dHA6Ly9yZW1vdGUuc2VydmVyLmNvbS9yZW1vdGUuaHRtbFxuIgoiXG4iCiIgQ3VybCB3aWxsIHRoZW4gYWNjZXB0IGEgd2lkZSByYW5nZSBvZiBkYXRlIGZvcm1hdHMuIFlvdSBhbHdheXMgbWFrZSB0aGUgZGF0ZVxuIgoiIGNoZWNrIHRoZSBvdGhlciB3YXkgYXJvdW5kIGJ5IHByZXBlbmRpbmcgaXQgd2l0aCBhIGRhc2ggJy0nLlxuIgoiXG4iCiJESUNUXG4iCiJcbiIKIiAgRm9yIGZ1biB0cnlcbiIKIlxuIgoiICAgICAgICBjdXJsIGRpY3Q6Ly9kaWN0Lm9yZy9tOmN1cmxcbiIKIiAgICAgICAgY3VybCBkaWN0Oi8vZGljdC5vcmcvZDpoZWlzZW5idWc6amFyZ29uXG4iCiIgICAgICAgIGN1cmwgZGljdDovL2RpY3Qub3JnL2Q6ZGFuaWVsOndlYjE5MTNcbiIKIlxuIgoiICBBbGlhc2VzIGZvciAnbScgYXJlICdtYXRjaCcgYW5kICdmaW5kJywgYW5kIGFsaWFzZXMgZm9yICdkJyBhcmUgJ2RlZmluZSdcbiIKIiAgYW5kICdsb29rdXAnLiBGb3IgZXhhbXBsZSxcbiIKIlxuIgoiICAgICAgICBjdXJsIGRpY3Q6Ly9kaWN0Lm9yZy9maW5kOmN1cmxcbiIKIlxuIgoiICBDb21tYW5kcyB0aGF0IGJyZWFrIHRoZSBVUkwgZGVzY3JpcHRpb24gb2YgdGhlIFJGQyAoYnV0IG5vdCB0aGUgRElDVFxuIgoiICBwcm90b2NvbCkgYXJlXG4iCiJcbiIKIiAgICAgICAgY3VybCBkaWN0Oi8vZGljdC5vcmcvc2hvdzpkYlxuIgoiICAgICAgICBjdXJsIGRpY3Q6Ly9kaWN0Lm9yZy9zaG93OnN0cmF0XG4iCiJcbiIKIiAgQXV0aGVudGljYXRpb24gaXMgc3RpbGwgbWlzc2luZyAoYnV0IHRoaXMgaXMgbm90IHJlcXVpcmVkIGJ5IHRoZSBSRkMpXG4iCiJcbiIKIkxEQVBcbiIKIlxuIgoiICBJZiB5b3UgaGF2ZSBpbnN0YWxsZWQgdGhlIE9wZW5MREFQIGxpYnJhcnksIGN1cmwgY2FuIHRha2UgYWR2YW50YWdlIG9mIGl0XG4iCiIgIGFuZCBvZmZlciBsZGFwOi8vIHN1cHBvcnQuXG4iCiJcbiIKIiAgTERBUCBpcyBhIGNvbXBsZXggdGhpbmcgYW5kIHdyaXRpbmcgYW4gTERBUCBxdWVyeSBpcyBub3QgYW4gZWFzeSB0YXNrLiBJIGRvXG4iCiIgIGFkdmljZSB5b3UgdG8gZGlnIHVwIHRoZSBzeW50YXggZGVzY3JpcHRpb24gZm9yIHRoYXQgZWxzZXdoZXJlLCBSRkMgMTk1OSBpZlxuIgoiICBubyBvdGhlciBwbGFjZSBpcyBiZXR0ZXIuXG4iCiJcbiIKIiAgVG8gc2hvdyB5b3UgYW4gZXhhbXBsZSwgdGhpcyBpcyBub3cgSSBjYW4gZ2V0IGFsbCBwZW9wbGUgZnJvbSBteSBsb2NhbCBMREFQXG4iCiIgIHNlcnZlciB0aGF0IGhhcyBhIGNlcnRhaW4gc3ViLWRvbWFpbiBpbiB0aGVpciBlbWFpbCBhZGRyZXNzOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLUIgXCJsZGFwOi8vbGRhcC5mcm9udGVjLnNlL289ZnJvbnRlYz8/c3ViP21haWw9KnN0aC5mcm9udGVjLnNlXCJcbiIKIlxuIgoiICBJZiBJIHdhbnQgdGhlIHNhbWUgaW5mbyBpbiBIVE1MIGZvcm1hdCwgSSBjYW4gZ2V0IGl0IGJ5IG5vdCB1c2luZyB0aGUgLUJcbiIKIiAgKGVuZm9yY2UgQVNDSUkpIGZsYWcuXG4iCiJcbiIKIkVOVklST05NRU5UIFZBUklBQkxFU1xuIgoiXG4iCiIgIEN1cmwgcmVhZHMgYW5kIHVuZGVyc3RhbmRzIHRoZSBmb2xsb3dpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzOlxuIgoiXG4iCiIgICAgICAgIEhUVFBfUFJPWFksIEhUVFBTX1BST1hZLCBGVFBfUFJPWFksIEdPUEhFUl9QUk9YWVxuIgoiXG4iCiIgIFRoZXkgc2hvdWxkIGJlIHNldCBmb3IgcHJvdG9jb2wtc3BlY2lmaWMgcHJveGllcy4gR2VuZXJhbCBwcm94eSBzaG91bGQgYmVcbiIKIiAgc2V0IHdpdGhcbiIKIiAgICAgICAgXG4iCiIgICAgICAgIEFMTF9QUk9YWVxuIgoiXG4iCiIgIEEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgaG9zdCBuYW1lcyB0aGF0IHNob3VsZG4ndCBnbyB0aHJvdWdoIGFueSBwcm94eSBpc1xuIgoiICBzZXQgaW4gKG9ubHkgYW4gYXN0ZXJpc2ssICcqJyBtYXRjaGVzIGFsbCBob3N0cylcbiIKIlxuIgoiICAgICAgICBOT19QUk9YWVxuIgoiXG4iCiIgIElmIGEgdGFpbCBzdWJzdHJpbmcgb2YgdGhlIGRvbWFpbi1wYXRoIGZvciBhIGhvc3QgbWF0Y2hlcyBvbmUgb2YgdGhlc2VcbiIKIiAgc3RyaW5ncywgdHJhbnNhY3Rpb25zIHdpdGggdGhhdCBub2RlIHdpbGwgbm90IGJlIHByb3hpZWQuXG4iCiJcbiIKIlxuIgoiICBUaGUgdXNhZ2Ugb2YgdGhlIC14Ly0tcHJveHkgZmxhZyBvdmVycmlkZXMgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiIKIlxuIgoiTkVUUkNcbiIKIlxuIgoiICBVbml4IGludHJvZHVjZWQgdGhlIC5uZXRyYyBjb25jZXB0IGEgbG9uZyB0aW1lIGFnby4gSXQgaXMgYSB3YXkgZm9yIGEgdXNlclxuIgoiICB0byBzcGVjaWZ5IG5hbWUgYW5kIHBhc3N3b3JkIGZvciBjb21tb25seSB2aXNpdGVkIGZ0cCBzaXRlcyBpbiBhIGZpbGUgc29cbiIKIiAgdGhhdCB5b3UgZG9uJ3QgaGF2ZSB0byB0eXBlIHRoZW0gaW4gZWFjaCB0aW1lIHlvdSB2aXNpdCB0aG9zZSBzaXRlcy4gWW91XG4iCiIgIHJlYWxpemUgdGhpcyBpcyBhIGJpZyBzZWN1cml0eSByaXNrIGlmIHNvbWVvbmUgZWxzZSBnZXRzIGhvbGQgb2YgeW91clxuIgoiICBwYXNzd29yZHMsIHNvIHRoZXJlZm9yIG1vc3QgdW5peCBwcm9ncmFtcyB3b24ndCByZWFkIHRoaXMgZmlsZSB1bmxlc3MgaXQgaXNcbiIKIiAgb25seSByZWFkYWJsZSBieSB5b3Vyc2VsZiAoY3VybCBkb2Vzbid0IGNhcmUgdGhvdWdoKS5cbiIKIlxuIgoiICBDdXJsIHN1cHBvcnRzIC5uZXRyYyBmaWxlcyBpZiB0b2xkIHNvICh1c2luZyB0aGUgLW4vLS1uZXRyYyBvcHRpb24pLiBUaGlzIGlzXG4iCiIgIG5vdCByZXN0cmljdGVkIHRvIG9ubHkgZnRwLCBidXQgY3VybCBjYW4gdXNlIGl0IGZvciBhbGwgcHJvdG9jb2xzIHdoZXJlXG4iCiIgIGF1dGhlbnRpY2F0aW9uIGlzIHVzZWQuXG4iCiJcbiIKIiAgQSB2ZXJ5IHNpbXBsZSAubmV0cmMgZmlsZSBjb3VsZCBsb29rIHNvbWV0aGluZyBsaWtlOlxuIgoiXG4iCiIgICAgICAgIG1hY2hpbmUgY3VybC5oYXh4LnNlIGxvZ2luIGlhbWRhbmllbCBwYXNzd29yZCBteXNlY3JldFxuIgoiXG4iCiJDVVNUT00gT1VUUFVUXG4iCiJcbiIKIiAgVG8gYmV0dGVyIGFsbG93IHNjcmlwdCBwcm9ncmFtbWVycyB0byBnZXQgdG8ga25vdyBhYm91dCB0aGUgcHJvZ3Jlc3Mgb2ZcbiIKIiAgY3VybCwgdGhlIC13Ly0td3JpdGUtb3V0IG9wdGlvbiB3YXMgaW50cm9kdWNlZC4gVXNpbmcgdGhpcywgeW91IGNhbiBzcGVjaWZ5XG4iCiIgIHdoYXQgaW5mb3JtYXRpb24gZnJvbSB0aGUgcHJldmlvdXMgdHJhbnNmZXIgeW91IHdhbnQgdG8gZXh0cmFjdC5cbiIKIlxuIgoiICBUbyBkaXNwbGF5IHRoZSBhbW91bnQgb2YgYnl0ZXMgZG93bmxvYWRlZCB0b2dldGhlciB3aXRoIHNvbWUgdGV4dCBhbmQgYW5cbiIKIiAgZW5kaW5nIG5ld2xpbmU6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtdyAnV2UgZG93bmxvYWRlZCAle3NpemVfZG93bmxvYWR9IGJ5dGVzXFxuJyB3d3cuZG93bmxvYWQuY29tXG4iCiJcbiIKIktFUkJFUk9TNCBGVFAgVFJBTlNGRVJcbiIKIlxuIgoiICBDdXJsIHN1cHBvcnRzIGtlcmJlcm9zNCBmb3IgRlRQIHRyYW5zZmVycy4gWW91IG5lZWQgdGhlIGtlcmJlcm9zIHBhY2thZ2VcbiIKIiAgaW5zdGFsbGVkIGFuZCB1c2VkIGF0IGN1cmwgYnVpbGQgdGltZSBmb3IgaXQgdG8gYmUgdXNlZC5cbiIKIlxuIgoiICBGaXJzdCwgZ2V0IHRoZSBrcmItdGlja2V0IHRoZSBub3JtYWwgd2F5LCBsaWtlIHdpdGggdGhlIGthdXRoIHRvb2wuIFRoZW4gdXNlXG4iCiIgIGN1cmwgaW4gd2F5IHNpbWlsYXIgdG86XG4iCiJcbiIKIiAgICAgICAgY3VybCAtLWtyYjQgcHJpdmF0ZSBmdHA6Ly9rcmI0c2l0ZS5jb20gLXUgdXNlcm5hbWU6ZmFrZXB3ZFxuIgoiXG4iCiIgIFRoZXJlJ3Mgbm8gdXNlIGZvciBhIHBhc3N3b3JkIG9uIHRoZSAtdSBzd2l0Y2gsIGJ1dCBhIGJsYW5rIG9uZSB3aWxsIG1ha2VcbiIKIiAgY3VybCBhc2sgZm9yIG9uZSBhbmQgeW91IGFscmVhZHkgZW50ZXJlZCB0aGUgcmVhbCBwYXNzd29yZCB0byBrYXV0aC5cbiIKIlxuIgoiTUFJTElORyBMSVNUXG4iCiJcbiIKIiAgV2UgaGF2ZSBhbiBvcGVuIG1haWxpbmcgbGlzdCB0byBkaXNjdXNzIGN1cmwsIGl0cyBkZXZlbG9wbWVudCBhbmQgdGhpbmdzXG4iCiIgIHJlbGV2YW50IHRvIHRoaXMuXG4iCiJcbiIKIiAgVG8gc3Vic2NyaWJlLCBtYWlsIGN1cmwtcmVxdWVzdEBjb250YWN0b3Iuc2Ugd2l0aCBcInN1YnNjcmliZSA8ZmlsbCBpbiB5b3VyXG4iCiIgIGVtYWlsIGFkZHJlc3M+XCIgaW4gdGhlIGJvZHkuXG4iCiJcbiIKIiAgVG8gcG9zdCB0byB0aGUgbGlzdCwgbWFpbCBjdXJsQGNvbnRhY3Rvci5zZS5cbiIKIlxuIgoiICBUbyB1bnN1YmNyaWJlLCBtYWlsIGN1cmwtcmVxdWVzdEBjb250YWN0b3Iuc2Ugd2l0aCBcInVuc3Vic2NyaWJlIDx5b3VyXG4iCiIgIHN1YnNjcmliZWQgZW1haWwgYWRkcmVzcz5cIiBpbiB0aGUgYm9keS5cbiIKIlxuIgogKSA7Cn0K