(code->html code)
Returns the code in the given string with html added.
Example
(
code->html
"(+ 1 2)"
)
Source
(
defn
code->html
"Returns the code in the given string with html added."
[
code
]
(
->>
(
ps/parse
code
)
(
ps/flatten
node->html
)
str/join
)
)
ezpkeW5hZG9jLmNvbW1vbi9oaWRlLXNpZGViYXI/IHRydWUsIDpkeW5hZG9jLmNvbW1vbi9zdGF0aWM/IHRydWUsIDpkeW5hZG9jLmNvbW1vbi90eXBlIDpjbGpzLCA6ZHluYWRvYy5jb21tb24vbnNlcyBbezp2YXItc3ltcyBbcHJvY2Vzcy1hcmdzIGtleXRvb2wta2V5cyBrZXl0b29sLWNtZCBrZXl0b29sXSwgOnR5cGUgOmNsaiwgOnN5bSBjZXJ0aWZpYWJsZS5rZXl0b29sfSB7OnZhci1zeW1zIFsqb3V0cHV0LWZuKiBsb2ctbGV2ZWxzICpsb2ctbGV2ZWwqIGxldmVsLXRhZyB3YXJuIGRlYnVnIGxvZyogZmF0YWwgKmxvZy1mbiogaW5mbyBlcnJvcl0sIDp0eXBlIDpjbGosIDpzeW0gY2VydGlmaWFibGUubG9nfSB7OnZhci1zeW1zIFtzZWN1cml0eS1jb21tYW5kPyBoYXMtY2VydD8gc2VjdXJpdHktY29tbWFuZCBhZGQtdHJ1c3RlZC1jZXJ0ISByZW1vdmUtY2VydCBtYWNvcy1sb2dpbi1rZXljaGFpbi1kaXIgaW5zdGFsbC10cnVzdCEgYWRkLWNlcnRdLCA6dHlwZSA6Y2xqLCA6c3ltIGNlcnRpZmlhYmxlLm1hY29zLXRydXN0fSB7OnZhci1zeW1zIFtwYXJzZS1kb21haW4taXAtYXJndW1lbnRzIGNyZWF0ZS1kZXYtY2VydGlmaWNhdGUtamtzICpzZXJ2ZXIta2V5c3RvcmUtbmFtZSogKnBhc3N3b3JkKiBpcC1hZGRyZXNzPyBmaW5kLWNlcnQtaW5mbyBlbWl0LW1ldGEtZGF0YSAqc2VydmVyLXBlbS1uYW1lKiAqcm9vdC1wZW0tbmFtZSogZ2VuZXJhdGUtamtzLWZvci1kb21haW4ga2V5c3RvcmUtaW5mbyBkb21haW5zLWFuZC1pcHMtPnNhbiBjbGVhbiEgbGlzdC1jb21tYW5kIHJlbW92ZS1jZXJ0IC1tYWluIGRuYW1lICpjYS1wZW0tbmFtZSogaW5zdGFsbC10by10cnVzdC1zdG9yZXMhIGZpbGUtcGF0aHMgY2xpLW9wdGlvbnMgbGlzdC1rZXlzdG9yZXMgaG9zdG5hbWU/IG1ldGEtZGF0YSAqaW5mby1uYW1lKiBnZW4tdGhpcmQtcGFydHktY2EgcmVtb3ZlLXRydXN0ICpjYS1rZXlzdG9yZS1uYW1lKiBsaXN0LWRpcnMgKmNhLWRpciogc3RhYmxlLW5hbWUgZW1pdC1rZXlzdG9yZSB1c2FnZSBkZWxldGUtZGlyZWN0b3J5IGdlbi1rZXktcGFpciBpbmZvLWZpbGUgZmluYWwtaW5zdHJ1Y3Rpb25zIGRldi1jZXJ0LWV4aXN0cz8gKnJvb3Qta2V5c3RvcmUtbmFtZSogcmVtb3ZlLWFsbF0sIDp0eXBlIDpjbGosIDpzeW0gY2VydGlmaWFibGUubWFpbn0gezp2YXItc3ltcyBbcHJlZml4LXByb2ZpbGUtcGF0aCBoYXMtY2VydD8gcmVtb3ZlLWNlcnQgZmlyZWZveC1wcm9maWxlLWRpciBjZXJ0LXZhbGlkLWNtZCBjZXJ0LWRlbGV0ZS1jbWQgY2EtdW5pcS1uYW1lIGNlcnR1dGlsLWNtZCBjZXJ0LWFkZC1jbWQgaW5zdGFsbC10cnVzdCEgY2VydHV0aWwtaW5zdGFsbGVkPyBhZGQtY2VydCBmaXJlZm94LXByb2ZpbGVzIGNlcnR1dGlsLXBhdGhdLCA6dHlwZSA6Y2xqLCA6c3ltIGNlcnRpZmlhYmxlLm5zcy10cnVzdH0gezp2YXItc3ltcyBbc2hhLXNpZ25hdHVyZSBzaGEtc2lnbmF0dXJlLXNob3J0XSwgOnR5cGUgOmNsaiwgOnN5bSBjZXJ0aWZpYWJsZS5zaGF9IHs6dmFyLXN5bXMgW2NvbW1hbmQtZXhpc3RzPyBieXRlcy0+aGV4LXN0ciBvcz8gY2VydGlmaWNhdGUgY2VydC1zaGEtMS1maW5nZXJwcmludF0sIDp0eXBlIDpjbGosIDpzeW0gY2VydGlmaWFibGUudXRpbH0gezp2YXItc3ltcyBbY2xvanVyZS1mbi1zdWJzIHBhcnNlLXRyYWNlLWVsZW1zIHBhcnNlLXRyYWNlLWVsZW0gcGFyc2UtZXhjZXB0aW9uXSwgOnR5cGUgOmNsaiwgOnN5bSBjbGotc3RhY2t0cmFjZS5jb3JlfSB7OnZhci1zeW1zIFtwc3QtZWxlbXMtb24gcHN0LXN0ciBlbGVtLWNvbG9yIHBzdC1vbiBwc3QrIHBzdC1jYXVzZWQtYnktb24gcHN0IHNvdXJjZS1zdHIgZmluZC1zb3VyY2Utd2lkdGggamF2YS1tZXRob2Qtc3RyIG1ldGhvZC1zdHIgY2xvanVyZS1tZXRob2Qtc3RyIHBzdC1lbGVtLXN0ciBjb2xvci1jb2RlcyBwc3QtbWVzc2FnZS1vbiBwc3QtY2xhc3Mtb25dLCA6dHlwZSA6Y2xqLCA6c3ltIGNsai1zdGFja3RyYWNlLnJlcGx9IHs6dmFyLXN5bXMgW3F1YXJ0aWxlMyBxdWFydGlsZTEgcmp1c3QgZmVuY2VdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsai1zdGFja3RyYWNlLnV0aWxzfSB7OnZhci1zeW1zIFt0eXBlPyBnZXQtbmFtZXNwYWNlIGVycm9yLW1lc3NhZ2UgZWxpZGUtcmVhZGVyLW1ldGEgbWlzc2luZy1yZW5hbWU/IHJlc29sdmUtaW52b2tlYWJsZS1ucyBhbmFseXplLWxldCB3aXRoLWNvcmUtbWFjcm9zIHZhci1tZXRhIGRlc3VnYXItbnMtc3BlY3MganMtdGFnPyBlbnN1cmUtZGVmcyBhbmFseXplLW1hcCBOVU1FUklDX1NFVCBhbmFseXplLXJlY29yZCBhbmFseXplLXNlcSogY29uc3RhbnRzLW5zLXN5bSByZXNvbHZlLWFsaWFzICpjbGpzLWRlcC1zZXQqIHJlc29sdmUtdmFyIHdyaXRlLWFuYWx5c2lzLWNhY2hlIGRpc2FsbG93aW5nLW5zKiBwcm9jZXNzLXJld3JpdGUtZm9ybSBqcy1zdGFyLXNlZyBkZXAtaGFzLWdsb2JhbC1leHBvcnRzPyByZWdpc3Rlci1zcGVjcyBnZXQtZXh0ZXJucyBnZW4tdXNlci1ucyAqcGFzc2VzKiBoYXMtZXh0ZXJuPyogaGFuZGxlLXN5bWJvbC1sb2NhbCBnZXQtZXhwYW5kZXItbnMgbWVzc2FnZSBwYXJzZS1pbnZva2UgKmNsanMtd2FybmluZy1oYW5kbGVycyogZGlzYWxsb3dpbmctcmVjdXIgYW5hbHl6ZS1zZXEqLXdyYXAgY29uZmlybS1iaW5kaW5ncyBoYXMtZXh0ZXJuPyBmb3JlaWduLWRlcD8gbWlzc2luZy1yZW5hbWUtbWFjcm8/IG1pc3NpbmctdXNlcyBtaXNzaW5nLXVzZT8gd2l0aC13YXJuaW5nLWhhbmRsZXJzIGVzNS1hbGxvd2VkIGFuYWx5emUgdXNlZD8gbm9kZS1tb2R1bGUtZGVwPyBwYXJzZS10eXBlIGdldHMgY2hlY2stcmVuYW1lLW1hY3Jvcy1pbmZlcnJpbmctbWlzc2luZyAqYWxsb3ctbnMqIGFuYWx5emUtY29uc3QgdHJhbnNpdC13cml0ZS1vcHRzIGZvcm1zLXNlcSogaW5mZXItaW52b2tlICpjbGpzLXN0YXRpYy1mbnMqIGFycmF5LXR5cGVzICpjaGVjay1hbGlhcy1kdXBlcyogbWFjcm8tbnMtbmFtZSAqcmVsb2FkLW1hY3JvcyogY29tcGlsZXItb3B0aW9ucyByZXNvbHZlLWV4aXN0aW5nLXZhciByZXF1aXJlZD8gbm9kZS1saWtlPyBOT1RfTkFUSVZFICp1bmNoZWNrZWQtYXJyYXlzKiBJR05PUkVfU1lNIHBhcnNlLWludm9rZSogKmNoZWNrZWQtYXJyYXlzKiBhbGlhc2FibGUtY2xqLW5zPyBhc3QtY2hpbGRyZW4gbG9hZGVkLWpzLW5zPyBhbmFseXplLXZlY3RvciB0cmFuc2l0LXJlYWQtb3B0cyB1bndyYXAtcXVvdGUgbmFtZXNwYWNlcyBlbGlkZS1hbmFseXplci1tZXRhIGFuYWx5emUtbGV0LWJvZHkgZXh0ZXJuLXByZSBnZXQtY29sIGJhc2ljLXZhbGlkYXRlLW5zLXNwZWMgKmNsanMtd2FybmluZ3MqIGFsaWFzLT50eXBlIGFuYWx5emVkPyBhbmFseXplLWRlcHMgYXJyYXktdHlwZT8gZG90dGVkLXN5bWJvbD8gKmNsanMtbWFjcm9zLWlzLWNsYXNzcGF0aCogbG9jYXRlLXNyYyBucy1zaWRlLWVmZmVjdHMgKmFsbG93LXJlZGVmKiBhbmFseXplLWZuLW1ldGhvZC1ib2R5IGluZmVyLXR5cGUgcGFyc2UtaW1wb3J0LXNwZWMgY2xqLW5zLT5jbGpzLW5zIGNvbnN0YW50LXZhbHVlPyBkdW1wLXNwZWNzICpmbi1pbnZva2UtZGlyZWN0KiB1c2UtPnJlcXVpcmUgaW5mZXJyZWQtdXNlLW1hY3JvcyByZWFkLWFuYWx5c2lzLWNhY2hlIGFuYWx5emUtc3ltYm9sIGNvbmZpcm0tdmFyLWV4aXN0cyBhbmFseXplLWtleXdvcmQgU0VOVElORUwgYW5hbHl6ZS1sZXQtYmluZGluZ3MgbXVuZ2UtZ2xvYmFsLWV4cG9ydCAqbG9vcC1sZXRzKiAtPnR5cGUtc2V0IGpzLXRhZyBqcy1yZXNlcnZlZCAqbG9hZC10ZXN0cyogcmVxdWlyZXMtYW5hbHlzaXM/IGNoZWNrLXVzZS1tYWNyb3MtaW5mZXJyaW5nLW1pc3NpbmcgY2Fub25pY2FsaXplLXR5cGUgbG9hZC1jb3JlIG1hY3JvZXhwYW5kLTEqIGNoZWNrLXVzZS1tYWNyb3MgZ2V0LWV4cGFuZGVyIGFuYWx5emUtanMtc3RhciBidWlsZC1hZmZlY3Rpbmctb3B0aW9ucy1zaGEgYnVpbGQtZG90LWZvcm0ganMtc3Rhci1pbnRlcnAgKnJlY3VyLWZyYW1lcyogY2FjaGVhYmxlLWZpbGVzIGFuYWx5emUtZm4tbWV0aG9kcy1wYXNzMiogbWFjcm9leHBhbmQtMSBhbmFseXplLWZpbGUgcmVzb2x2ZS1tYWNyby12YXIgYW5hbHl6ZS1sZXQtYmluZGluZy1pbml0IGluZmVyLXRhZyBjYW5vbmljYWxpemUtaW1wb3J0LXNwZWNzIGFuYWx5emUtZm9ybS1zZXEgYW5hbHl6ZS1sZXQtYm9keSogYW5hbHl6ZS1qcy1zdGFyKiBpbmZlcnJlZC1yZW5hbWUtbWFjcm9zIHBhcnNlLW5zLWVycm9yLW1zZyBtaXNzaW5nLXVzZS1tYWNybz8gcmVjb3JkLW5zK25hbWUgYW5hbHl6ZWQgcmVzb2x2ZS1zeW1ib2wgYWxsLXdhcm4gbWlzc2luZy1yZW5hbWVzIHJlc29sdmUqIGRlZmF1bHQtcGFzc2VzICpjbGpzLW1hY3Jvcy1wYXRoKiBsb2FkLW11dGV4IGNvbmZpcm0tdmFyLWV4aXN0LXdhcm5pbmcgdW5jaGVja2VkLWFycmF5cz8gYW5hbHl6ZS1kb3QgYW5hbHl6ZS1kby1zdGF0ZW1lbnRzIGdldC1saW5lIGFuYWx5emUtZG8tc3RhdGVtZW50cyogYW5hbHl6ZS1zZXEgY2FjaGUtYmFzZS1wYXRoIGRlc3VnYXItZG90dGVkLWV4cHIgZmluZC1kZWYtY2xhc2ggaGFzLWVycm9yLWRhdGE/IGdldC1leHBhbmRlciogbm8td2FybiBhbGxvd2luZy1yZWRlZiBmbi1uYW1lLXZhciBtdW5nZS1ub2RlLWxpYiAqbG9hZC1tYWNyb3MqIGFkZC10eXBlcyBleGNsdWRlZD8gZW1wdHktZW52IHB1YmxpYy1uYW1lPyBkZWZhdWx0LXdhcm5pbmctaGFuZGxlciByZXNvbHZlLW5zLWFsaWFzIGludGVybi1tYWNyb3MgY29uc3QtZXhwci0+Y29uc3RhbnQtdmFsdWUgQk9PTEVBTl9PUl9TRVEgKm1hY3JvLWluZmVyKiBnZW4tY29uc3RhbnQtaWQgQk9PTEVBTl9TWU0gY2FjaGUtZmlsZSBtYWNyby1hdXRvbG9hZC1ucz8gZ2V0LXRhZyBpbXBsaWNpdC1uc2VzIHZhbGlkLXByb3RvIHBhcnNlLW5zIG5vcm1hbGl6ZS1qcy10YWcgYW5hbHl6ZS1saXN0IHdhcm5pbmcgaW1wbGljaXQtaW1wb3J0PyBtaXNzaW5nLXVzZS1tYWNyb3MgcmV3cml0ZS1jbGpzLWFsaWFzZXMgYW5hbHl6ZSogLWNsanMtbWFjcm9zLWxvYWRlZCBjaGVjay11c2VzIGZpbmQtbWF0Y2hpbmctbWV0aG9kICpwcml2YXRlLXZhci1hY2Nlc3Mtbm93YXJuKiBpbnZva2UtYXJnLXR5cGUtdmFsaWRhdG9ycyAqY2xqcy1maWxlKiAqZmlsZS1kZWZzKiBidWlsZC1hZmZlY3Rpbmctb3B0aW9ucyBpbmZlci1pZiAqdmVyYm9zZSogYW5hbHl6ZS1qcy12YWx1ZSBucy0+bW9kdWxlLXR5cGUgc291cmNlLWluZm8gd3JhcHBpbmctZXJyb3JzIHRyYW5zaXQgYW5hbHl6ZS1mbi1tZXRob2QtcGFyYW0gYW5hbHl6ZS1zZXQgbnVtZXJpYy10eXBlPyBhc3Q/IGNoZWNrZWQtYXJyYXlzIGVsaWRlLWVudiBqcy1tb2R1bGUtZXhpc3RzPyogcGFyc2UtcmVxdWlyZS1zcGVjIGFuYWx5emUtd3JhcC1tZXRhIEFOWV9TWU0gZ2V0LWpzLXRhZyBwYXJzZSBmb3Jtcy1zZXEgKmFuYWx5emUtZGVwcyogYW5hbHl6ZS1sZXQtYmluZGluZ3MqIGFuYWx5c2lzLWVycm9yPyByZXBsYWNlLWVudi1wYXNzIHBhcnNlLW5zLWV4Y2x1ZGVzIGFuYWx5emUtZm4tbWV0aG9kcy1wYXNzMiBjb3JlLW5hbWU/IGdldC1sZXQtdGFnIHNwZWNpYWxzIGVsaWRlLWlycmVsZXZhbnQtbWV0YSByZXNvbHZlLW1hY3JvLW5zLWFsaWFzIGNoZWNrLWludm9rZS1hcmctdHlwZXMgY29uZmlybS1ucyBkZWZhdWx0LW5hbWVzcGFjZXMgKnVuY2hlY2tlZC1pZiogY2Fub25pY2FsaXplLXNwZWNzIGNvbmZpcm0tdmFyLWV4aXN0cy10aHJvdyBqcy1tb2R1bGUtZXhpc3RzPyBhbmFseXplLWZvcm0gd2l0aC1jb3JlLW1hY3Jvcy1maWxlIHZhci1hc3QgYWRkLWNvbnN0cyBlcnJvciBpbnZva2VhYmxlLW5zPyAqY2xqcy1ucypdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsanMuYW5hbHl6ZXJ9IHs6dmFyLXN5bXMgW3R5cGU/IGdldC1uYW1lc3BhY2UgZWxpZGUtcmVhZGVyLW1ldGEgbWlzc2luZy1yZW5hbWU/IHJlc29sdmUtaW52b2tlYWJsZS1ucyBhbmFseXplLWxldCB2YXItbWV0YSBkZXN1Z2FyLW5zLXNwZWNzIGpzLXRhZz8gZW5zdXJlLWRlZnMgYW5hbHl6ZS1tYXAgTlVNRVJJQ19TRVQgYW5hbHl6ZS1yZWNvcmQgYW5hbHl6ZS1zZXEqIGNvbnN0YW50cy1ucy1zeW0gcmVzb2x2ZS1hbGlhcyAqY2xqcy1kZXAtc2V0KiByZXNvbHZlLXZhciBqcy1zdGFyLXNlZyBkZXAtaGFzLWdsb2JhbC1leHBvcnRzPyByZWdpc3Rlci1zcGVjcyBnZXQtZXh0ZXJucyAqcGFzc2VzKiBoYXMtZXh0ZXJuPyogaGFuZGxlLXN5bWJvbC1sb2NhbCBnZXQtZXhwYW5kZXItbnMgbWVzc2FnZSBwYXJzZS1pbnZva2UgKmNsanMtd2FybmluZy1oYW5kbGVycyogYW5hbHl6ZS1zZXEqLXdyYXAgY29uZmlybS1iaW5kaW5ncyBoYXMtZXh0ZXJuPyBmb3JlaWduLWRlcD8gbWlzc2luZy1yZW5hbWUtbWFjcm8/IG1pc3NpbmctdXNlcyBtaXNzaW5nLXVzZT8gZXM1LWFsbG93ZWQgYW5hbHl6ZSB1c2VkPyBub2RlLW1vZHVsZS1kZXA/IHBhcnNlLXR5cGUgZ2V0cyBjaGVjay1yZW5hbWUtbWFjcm9zLWluZmVycmluZy1taXNzaW5nICphbGxvdy1ucyogYW5hbHl6ZS1jb25zdCBpbmZlci1pbnZva2UgKmNsanMtc3RhdGljLWZucyogYXJyYXktdHlwZXMgKmNoZWNrLWFsaWFzLWR1cGVzKiBtYWNyby1ucy1uYW1lICpyZWxvYWQtbWFjcm9zKiBjb21waWxlci1vcHRpb25zIHJlc29sdmUtZXhpc3RpbmctdmFyIHJlcXVpcmVkPyBub2RlLWxpa2U/IE5PVF9OQVRJVkUgSUdOT1JFX1NZTSBwYXJzZS1pbnZva2UqICpjaGVja2VkLWFycmF5cyogYXN0LWNoaWxkcmVuIGxvYWRlZC1qcy1ucz8gYW5hbHl6ZS12ZWN0b3IgdW53cmFwLXF1b3RlIG5hbWVzcGFjZXMgZWxpZGUtYW5hbHl6ZXItbWV0YSBhbmFseXplLWxldC1ib2R5IGV4dGVybi1wcmUgZ2V0LWNvbCBiYXNpYy12YWxpZGF0ZS1ucy1zcGVjICpjbGpzLXdhcm5pbmdzKiBhbGlhcy0+dHlwZSBhbmFseXplZD8gYW5hbHl6ZS1kZXBzIGFycmF5LXR5cGU/IGRvdHRlZC1zeW1ib2w/ICpjbGpzLW1hY3Jvcy1pcy1jbGFzc3BhdGgqICphbGxvdy1yZWRlZiogYW5hbHl6ZS1mbi1tZXRob2QtYm9keSBpbmZlci10eXBlIHBhcnNlLWltcG9ydC1zcGVjIGNsai1ucy0+Y2xqcy1ucyBjb25zdGFudC12YWx1ZT8gZHVtcC1zcGVjcyAqZm4taW52b2tlLWRpcmVjdCogdXNlLT5yZXF1aXJlIGluZmVycmVkLXVzZS1tYWNyb3MgYW5hbHl6ZS1zeW1ib2wgY29uZmlybS12YXItZXhpc3RzIGFuYWx5emUta2V5d29yZCBhbmFseXplLWxldC1iaW5kaW5ncyBtdW5nZS1nbG9iYWwtZXhwb3J0ICpsb29wLWxldHMqIC0+dHlwZS1zZXQganMtdGFnIGpzLXJlc2VydmVkICpsb2FkLXRlc3RzKiBjaGVjay11c2UtbWFjcm9zLWluZmVycmluZy1taXNzaW5nIGNhbm9uaWNhbGl6ZS10eXBlIG1hY3JvZXhwYW5kLTEqIGNoZWNrLXVzZS1tYWNyb3MgZ2V0LWV4cGFuZGVyIGFuYWx5emUtanMtc3RhciBqcy1zdGFyLWludGVycCAqcmVjdXItZnJhbWVzKiBhbmFseXplLWZuLW1ldGhvZHMtcGFzczIqIG1hY3JvZXhwYW5kLTEgcmVzb2x2ZS1tYWNyby12YXIgYW5hbHl6ZS1sZXQtYmluZGluZy1pbml0IGluZmVyLXRhZyBjYW5vbmljYWxpemUtaW1wb3J0LXNwZWNzIGFuYWx5emUtZm9ybS1zZXEgYW5hbHl6ZS1sZXQtYm9keSogYW5hbHl6ZS1qcy1zdGFyKiBpbmZlcnJlZC1yZW5hbWUtbWFjcm9zIHBhcnNlLW5zLWVycm9yLW1zZyBtaXNzaW5nLXVzZS1tYWNybz8gcmVjb3JkLW5zK25hbWUgYW5hbHl6ZWQgcmVzb2x2ZS1zeW1ib2wgbWlzc2luZy1yZW5hbWVzIGRlZmF1bHQtcGFzc2VzICpjbGpzLW1hY3Jvcy1wYXRoKiBjb25maXJtLXZhci1leGlzdC13YXJuaW5nIHVuY2hlY2tlZC1hcnJheXM/IGFuYWx5emUtZG90IGFuYWx5emUtZG8tc3RhdGVtZW50cyBnZXQtbGluZSBhbmFseXplLWRvLXN0YXRlbWVudHMqIGFuYWx5emUtc2VxIGRlc3VnYXItZG90dGVkLWV4cHIgZmluZC1kZWYtY2xhc2ggaGFzLWVycm9yLWRhdGE/IGZuLW5hbWUtdmFyIG11bmdlLW5vZGUtbGliICpsb2FkLW1hY3JvcyogYWRkLXR5cGVzIGV4Y2x1ZGVkPyBlbXB0eS1lbnYgcHVibGljLW5hbWU/IGRlZmF1bHQtd2FybmluZy1oYW5kbGVyIHJlc29sdmUtbnMtYWxpYXMgaW50ZXJuLW1hY3JvcyBjb25zdC1leHByLT5jb25zdGFudC12YWx1ZSBCT09MRUFOX09SX1NFUSAqbWFjcm8taW5mZXIqIGdlbi1jb25zdGFudC1pZCBCT09MRUFOX1NZTSBtYWNyby1hdXRvbG9hZC1ucz8gZ2V0LXRhZyBpbXBsaWNpdC1uc2VzIHZhbGlkLXByb3RvIG5vcm1hbGl6ZS1qcy10YWcgYW5hbHl6ZS1saXN0IHdhcm5pbmcgaW1wbGljaXQtaW1wb3J0PyBtaXNzaW5nLXVzZS1tYWNyb3MgYW5hbHl6ZSogLWNsanMtbWFjcm9zLWxvYWRlZCBjaGVjay11c2VzIGZpbmQtbWF0Y2hpbmctbWV0aG9kICpwcml2YXRlLXZhci1hY2Nlc3Mtbm93YXJuKiBpbnZva2UtYXJnLXR5cGUtdmFsaWRhdG9ycyAqY2xqcy1maWxlKiAqZmlsZS1kZWZzKiBpbmZlci1pZiAqdmVyYm9zZSogYW5hbHl6ZS1qcy12YWx1ZSBucy0+bW9kdWxlLXR5cGUgc291cmNlLWluZm8gYW5hbHl6ZS1mbi1tZXRob2QtcGFyYW0gYW5hbHl6ZS1zZXQgbnVtZXJpYy10eXBlPyBhc3Q/IGNoZWNrZWQtYXJyYXlzIGVsaWRlLWVudiBqcy1tb2R1bGUtZXhpc3RzPyogcGFyc2UtcmVxdWlyZS1zcGVjIGFuYWx5emUtd3JhcC1tZXRhIEFOWV9TWU0gZ2V0LWpzLXRhZyAqYW5hbHl6ZS1kZXBzKiBhbmFseXplLWxldC1iaW5kaW5ncyogYW5hbHlzaXMtZXJyb3I/IHJlcGxhY2UtZW52LXBhc3MgcGFyc2UtbnMtZXhjbHVkZXMgYW5hbHl6ZS1mbi1tZXRob2RzLXBhc3MyIGNvcmUtbmFtZT8gZ2V0LWxldC10YWcgc3BlY2lhbHMgZWxpZGUtaXJyZWxldmFudC1tZXRhIHJlc29sdmUtbWFjcm8tbnMtYWxpYXMgY2hlY2staW52b2tlLWFyZy10eXBlcyBjb25maXJtLW5zIGRlZmF1bHQtbmFtZXNwYWNlcyBjYW5vbmljYWxpemUtc3BlY3MgY29uZmlybS12YXItZXhpc3RzLXRocm93IGpzLW1vZHVsZS1leGlzdHM/IHZhci1hc3QgYWRkLWNvbnN0cyBlcnJvciBpbnZva2VhYmxlLW5zPyAqY2xqcy1ucypdLCA6dHlwZSA6Y2xqcywgOnN5bSBjbGpzLmFuYWx5emVyfSB7OnZhci1zeW1zIFt3aXRoLXN0YXRlIGZpbmQtbnMgcmVtb3ZlLW5zIG5zLXB1YmxpY3MgZ2V0LW9wdGlvbnMgaW4tY2xqcy11c2VyIHdhcm5pbmctbWVzc2FnZSB3aXRoLXdhcm5pbmctaGFuZGxlcnMgYW5hbHl6ZSB3YXJuaW5nLWVuYWJsZWQ/IGN1cnJlbnQtc3RhdGUgbnMtcmVzb2x2ZSByZWFkLWFuYWx5c2lzLWNhY2hlIGVuYWJsZWQtd2FybmluZ3MgZW1wdHktc3RhdGUgYW5hbHl6ZS1maWxlIGRlZmF1bHQtcGFzc2VzIG5vLXdhcm4gZW1wdHktZW52IGRlZmF1bHQtd2FybmluZy1oYW5kbGVyIHdpdGgtcGFzc2VzIHBhcnNlLW5zIG5zLWludGVybnMgYWxsLW5zIGN1cnJlbnQtZmlsZSBjdXJyZW50LW5zIGZvcm1zLXNlcSByZXNvbHZlIGdldC1qcy1pbmRleF0sIDp0eXBlIDpjbGosIDpzeW0gY2xqcy5hbmFseXplci5hcGl9IHs6dmFyLXN5bXMgW3dpdGgtY29yZS1tYWNyb3MgZGlzYWxsb3dpbmctbnMqIGRpc2FsbG93aW5nLXJlY3VyIHdpdGgtd2FybmluZy1oYW5kbGVycyBuby13YXJuIGFsbG93aW5nLXJlZGVmIHdyYXBwaW5nLWVycm9ycyB3aXRoLWNvcmUtbWFjcm9zLWZpbGVdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsanMuYW5hbHl6ZXIubWFjcm9zfSB7OnZhci1zeW1zIFtnZXQtbm9kZS1kZXBzIGNvbXBpbGUgaW5zdGFsbC1ub2RlLWRlcHMhIGFkZC1kZXBlbmRlbmN5LXNvdXJjZXMgYWRkLWltcGxpY2l0LW9wdGlvbnMgYWRkLWRlcGVuZGVuY2llcyBucy0+bG9jYXRpb24gdGFyZ2V0LWZpbGUtZm9yLWNsanMtbnMgbm9kZS1tb2R1bGVzIGNvbXBpbGVyLW9wdHM/IG1hcmstY2xqcy1ucy1mb3ItcmVjb21waWxlISBub2RlLWlucHV0cyBzcmMtZmlsZS0+dGFyZ2V0LWZpbGUgc291cmNlLW9uLWRpc2sgbnMtPnNvdXJjZSBzcmMtZmlsZS0+Z29vZy1yZXF1aXJlIGlucHV0cyBidWlsZCBoYW5kbGUtanMtbW9kdWxlcyBjbGpzLWRlcGVuZGVudHMtZm9yLW1hY3JvLW5hbWVzcGFjZXMgY29tcGlsYWJsZS0+aWpzIGdvb2ctZGVwLXN0cmluZyB3YXRjaCBwYXJzZS1qcy1ucyBvdXRwdXQtdW5vcHRpbWl6ZWQgaW5kZXgtaWpzIGRlcGVuZGVuY3ktb3JkZXJdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsanMuYnVpbGQuYXBpfSB7OnZhci1zeW1zIFtkZWZhdWx0LWNvbXBpbGUgbWFpbiByZWFkLWVkbi1vcHRzIGdldC1vcHRpb25zIGFkZC1jb21tYW5kcyBub3JtYWxpemUgZ2V0LWRpc3BhdGNoIGRpc3BhdGNoPyBkZWZhdWx0LWNvbW1hbmRzIGhlbHAtc3RyIGxvYWQtZWRuLW9wdHMgZ2V0LW1haW4tbnMgd2F0Y2gtcHJvYyBkZWZhdWx0LW1haW4gaW5pdGlhbGl6ZSBib29sLWluaXQtb3B0aW9ucyBtZXJnZWQtY29tbWFuZHMgdGVtcC1vdXQtZGlyIG1pc3NpbmctcmVzb3VyY2UgdGFyZ2V0LT5yZXBsLWVudiBtaXNzaW5nLWZpbGVdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsanMuY2xpfSB7OnZhci1zeW1zIFtvdXRwdXQtZGlyZWN0b3J5IC1jb21waWxlIHJ1bi1idW5kbGUtY21kIGFkZC1nb29nLWJhc2UgY2xqcy1kZXBlbmRlbmNpZXMgbWFwLT5qYXZhc2NyaXB0LWZpbGUgZW5zdXJlLWNsanMtYmFzZS1tb2R1bGUgb3B0aW1pemUtbW9kdWxlcyBjb252ZXJ0LWpzLW1vZHVsZXMgcGF0aC1mcm9tLWphcmZpbGUgY29tcHV0ZS11cHN0cmVhbS1ucG0tZGVwcyBhb3QtY2FjaGUtY29yZSBnZXQtZGF0YS1yZWFkZXJzIGNvbXBpbGFibGUtaW5wdXQtcGF0aHMgSVNvdXJjZU1hcCBzaGltLXByb2Nlc3M/IGNvbXBpbGUgZXhwb3J0LWRlcCBjaGVjay1vdXRwdXQtdG8gdmFsaWRhdGUtb3B0cyBjaGVjay1vdXRwdXQtd3JhcHBlciBhZGQtZGVwZW5kZW5jeS1zb3VyY2VzIGdldC1jb21waWxlZC1jbGpzIGFic29sdXRlLXBhcmVudCBleHBhbmQtbGlicyBsYW5nLWxldmVsIGtub3duLW9wdHMgYWRkLWdvb2ctbG9hZCBjb21waWxlLWRpciBhZGQtaW1wbGljaXQtb3B0aW9ucyBwcmVwcm9jZXNzLWpzIGFkZC1kZXBlbmRlbmNpZXMgLXBhdGhzIGdldC1kYXRhLXJlYWRlcnMqIHdhcm5pbmctdHlwZXMgcGF0aC1yZWxhdGl2ZS10byBjaGVjay1wcmVsb2FkcyBlbnN1cmUtbW9kdWxlLW9wdHMgY2hlY2stdW5wcm92aWRlZCB0YXJnZXQtZmlsZS1mb3ItY2xqcy1ucyBtYXliZS1pbnN0YWxsLW5vZGUtZGVwcyEgZmluZ2VycHJpbnRlZC1tb2R1bGVzIC1zb3VyY2UtdXJsIElucHV0cyBhZGQtaGVhZGVyIHJlbC1vdXRwdXQtcGF0aCBtYXJrLWNsanMtbnMtZm9yLXJlY29tcGlsZSEgbmFtZS1jaGFycyBjb21waWxlLXNvdXJjZXMgb3V0cHV0LW9uZS1maWxlIGxvYWQtZXh0ZXJucyBmaW5kLWNsanMtZGVwZW5kZW5jaWVzIENvbXBpbGFibGUgamF2YXNjcmlwdC1uYW1lIHJhbmRvbS1jaGFyIHRvLWNoYXJzZXQgY29tcGlsZS1pbnB1dHMgYWRkLXByZWxvYWRzIHBhcmFsbGVsLWNvbXBpbGUtc291cmNlcyBhZGQtZXh0ZXJucy1zb3VyY2VzIHByZWFtYmxlLWZyb20tcGF0aHMgamF2YXNjcmlwdC1maWxlIGphci1maWxlLXRvLWRpc2sgcHJvY2Vzcy1qcy1tb2R1bGVzIG5vZGUtbW9kdWxlLWRlcHMgLT5qcy1zb3VyY2UtZmlsZXMgcmVtb3ZlLWdvb2ctYmFzZSAtPkphdmFTY3JpcHRGaWxlIG1ha2UtY29udmVydC1qcy1tb2R1bGUtb3B0aW9ucyBjaGVjay1ucG0tZGVwcyBjb21waWxlZC1maWxlIG5vZGUtaW5wdXRzIGFkZC1jb252ZXJ0ZWQtc291cmNlIG91dHB1dC1kZXBzLWZpbGUgbWFrZS1wcmVhbWJsZSBjaGVjay1zb3VyY2UtbWFwIGRlcHMtZmlsZSBjb21waWxlLW5zIGluZGV4LW5vZGUtbW9kdWxlcy1kaXIganMtZGVwZW5kZW5jaWVzIHNyYy1maWxlLT50YXJnZXQtZmlsZSBjaGVjay1vdXRwdXQtZGlyIGNvbXBpbGUtZmlsZSBsYW5nLWtleS0+bGFuZy1tb2RlIGNvbXBpbGUtY2xpZW50LWpzIGpzLXRyYW5zZm9ybXMgbG9hZC1kYXRhLXJlYWRlcnMhIHRyYW5zcGlsZSBjbGpzLXNvdXJjZS1mb3ItbmFtZXNwYWNlIHdyaXRlLWpzPyBzb3VyY2Utb24tZGlzayB3cml0ZS1qYXZhc2NyaXB0IHByZWxvYWRzIHJhbmRvbS1zdHJpbmcgZm9yZWlnbi1zb3VyY2U/IHN0cmluZy0+Y2hhcnNldCBjb21waWxlLWZyb20tamFyIGFkZC1qcy1zb3VyY2VzIGNyZWF0ZS1jbGllbnQtanMtZmlsZSAtZmluZC1zb3VyY2VzIGNvbXBpbGUtbG9hZGVyIG91dHB1dC1ib290c3RyYXAgYnVuZGxlPyBhZGQtZGVwLXN0cmluZyByZXF1aXJlcy10cmFuc3BpbGU/IGFkZC1jb3JlLW1hY3Jvcy1pZi1jbGpzLWpzIGpzLXNvdXJjZS1maWxlIGluLXNhbWUtZGlyPyBzb3VyY2UtZm9yLW5hbWVzcGFjZSBub2RlLWZpbGUtc2VxLT5saWJzLXNwZWMgY2hlY2stY2FjaGUtYW5hbHlzaXMtZm9ybWF0IHNyYy1maWxlLT5nb29nLXJlcXVpcmUgLXNvdXJjZS1tYXAgY2hlY2stbm9kZS10YXJnZXQgZ2V0LXVwc3RyZWFtLWRlcHMqIGJ1aWxkIGhhbmRsZS1qcy1tb2R1bGVzIHdyaXRlLXZhcmlhYmxlLW1hcHMgY2xqcy1kZXBlbmRlbnRzLWZvci1tYWNyby1uYW1lc3BhY2VzIG5wbS1kZXBzLWpzIHRyYW5zcGlsZT8gZmluZ2VycHJpbnQtb3V0LWZpbGUgY2hlY2stc291cmNlLW1hcC1wYXRoIGdldC1zb3VyY2UtZmlsZXMgbGliLXJlbC1wYXRoIG1hcC0+SmF2YVNjcmlwdEZpbGUgbm9ybWFsaXplLWNsb3N1cmUtZGVmaW5lcyBpbmRleC1ub2RlLW1vZHVsZXMgYnVpbGQtcHJvdmlkZXMgYnVpbGQtbW9kdWxlcyBmaW5kLWphci1zb3VyY2VzIHdhdGNoIG91dHB1dC1tYWluLWZpbGUgZmluZC1zb3VyY2VzIG91dHB1dC1tb2R1bGVzIHNhbWUtb3Itc3ViZGlyZWN0b3J5LW9mPyByZXBvcnQtZmFpbHVyZSBtYWtlLWNsb3N1cmUtY29tcGlsZXIgZXhwYW5kLWxhbmcta2V5IGFkZC1zb3VyY2UtbWFwLWxpbmsgZWxpZGUtc3RyaWN0IHBhcnNlLWpzLW5zIGNoZWNrLWxldmVsIG1vZHVsZS10eXBlLT5rZXl3b3JkIGNvbXBpbGUtZm9ybS1zZXEgY29tcGlsZS10YXNrIG91dHB1dC11bm9wdGltaXplZCBhYnNvbHV0ZS1wYXRoPyBlbWl0LW9wdGltaXplZC1zb3VyY2UtbWFwIGNoZWNrLW1haW4gdXJsLT5uaW8tcGF0aCByZWFkLWpzIGFkZC13cmFwcGVyIG1ha2Utb3B0aW9ucyBzZXQtb3B0aW9ucyBnZXQtdXBzdHJlYW0tZGVwcyBmb3JlaWduLWRlcHMtc3RyIG9wdGltaXplXSwgOnR5cGUgOmNsaiwgOnN5bSBjbGpzLmNsb3N1cmV9IHs6dmFyLXN5bXMgW2VtaXQtY29uc3RhbnRzLXRhYmxlLXRvLWZpbGUgcHJvdG9jb2wtcHJlZml4IGVtaXQtYXJndW1lbnRzLXRvLWFycmF5IGVtaXQtanMtb2JqZWN0IGNvbXBpbGUtZmlsZSogZGlzdGluY3Qta2V5cz8gbXVuZ2UgY29tcGlsZS1yb290IGdldC1kZWZpbmUgdmFsaWQtZGVmaW5lLXZhbHVlPyBmaW5kLXNvdXJjZSBlbWl0LXNldCBlbWl0LWNhY2hlZC1jb3JlIGVtaXRzLWtleXdvcmQgZW1pdC1pbmZlcnJlZC1leHRlcm5zLXRvLWZpbGUgKmxleGljYWwtcmVuYW1lcyogZW1pdC1sZXQgd2l0aC1jb3JlLWNsanMgZmluZC1yb290LXNvdXJjZXMgYWxsLWRpc3RpbmN0PyBjbGpzLXJlc2VydmVkLWZpbGUtbmFtZXMgYmFzZS10eXBlcyByZXNvbHZlLXR5cGUgKnNvdXJjZS1tYXAtZGF0YS1nZW4tY29sKiBlbWl0LXdpdGgtbWV0YSBlbWl0LXZhcmlhZGljLWZuLW1ldGhvZCBqcy1yZXNlcnZlZCAqcmVjb21waWxlZCogcmVuYW1lLXRvLWpzIHJlcXVpcmVzLWNvbXBpbGF0aW9uPyBlbWl0cyBlbWl0LWNvbnN0YW50IGVtaXQtZG90IGVtaXQtY29uc3RhbnRzLXRhYmxlIGVtaXQtbGlzdCBnZXQtZmlyc3QtbnMtc2VnbWVudCBlbWl0LWZuLXBhcmFtcyBtdW5nZS1yZXNlcnZlZCBlbWl0LXNvdXJjZSBmbi1zZWxmLW5hbWUgbG9hZC1saWJzIGNvbXBpbGUtZmlsZSBtYWNyby1ucz8gZW1pdC1jb25zdGFudC1uby1tZXRhIG11bmdlLXBhcmFtLXJldHVybiBlbWl0LWpzLWFycmF5IGZpbmQtbnMtc3RhcnRzLXdpdGggZW1pdCogZW1pdC1jb25zdGFudCogY2hlY2tpbmctdHlwZXM/IGNsanMtZmlsZXMtaW4gZW1pdC1mbi1tZXRob2QgZW1pdC1jb21tZW50IGhhc2gtc2NvcGUgZW1pdC1hcHBseS10byBlbWl0cy1zeW1ib2wgZmFsc2V5LWNvbnN0YW50PyBlbWl0LWNvbnN0YW50cy1jb21tYS1zZXAgKnNvdXJjZS1tYXAtZGF0YSogZW1pdC1yZWNvcmQtdmFsdWUgZW1pdC12YXIgbWFwcGVkLXR5cGVzIHJlc29sdmUtdHlwZXMgY2FjaGVkLWNvcmUgKmlucHV0cyogZW1pdC1zdHIgY29tcGlsZWQtYnktc3RyaW5nIGVtaXQtbWFwIGVtaXQtdmVjdG9yIHRydXRoeS1jb25zdGFudD8gZW1pdGxuIHVybC1wYXRoIGVtaXQgc2FmZS10ZXN0PyBlbWl0LWV4dGVybnMgZW1pdC1nbG9iYWwtZXhwb3J0IGVtaXQtc291cmNlLW1hcCBkaXN0aW5jdC1jb25zdGFudHM/IGVtaXQtd3JhcCBzaGFkb3ctZGVwdGhdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsanMuY29tcGlsZXJ9IHs6dmFyLXN5bXMgW3Byb3RvY29sLXByZWZpeCBlbWl0LWFyZ3VtZW50cy10by1hcnJheSBlbWl0LWpzLW9iamVjdCBkaXN0aW5jdC1rZXlzPyBtdW5nZSBnZXQtZGVmaW5lIHZhbGlkLWRlZmluZS12YWx1ZT8gZW1pdC1zZXQgZW1pdHMta2V5d29yZCAqbGV4aWNhbC1yZW5hbWVzKiBlbWl0LWxldCBhbGwtZGlzdGluY3Q/IGNsanMtcmVzZXJ2ZWQtZmlsZS1uYW1lcyBiYXNlLXR5cGVzIHJlc29sdmUtdHlwZSAqc291cmNlLW1hcC1kYXRhLWdlbi1jb2wqIGVtaXQtd2l0aC1tZXRhIGVtaXQtdmFyaWFkaWMtZm4tbWV0aG9kIGpzLXJlc2VydmVkICpyZWNvbXBpbGVkKiBlbWl0cyBlbWl0LWNvbnN0YW50IGVtaXQtZG90IGVtaXQtY29uc3RhbnRzLXRhYmxlIGVtaXQtbGlzdCBnZXQtZmlyc3QtbnMtc2VnbWVudCBlbWl0LWZuLXBhcmFtcyBtdW5nZS1yZXNlcnZlZCBmbi1zZWxmLW5hbWUgbG9hZC1saWJzIG11bmdlLXBhcmFtLXJldHVybiBlbWl0LWpzLWFycmF5IGZpbmQtbnMtc3RhcnRzLXdpdGggY2hlY2tpbmctdHlwZXM/IGVtaXQtZm4tbWV0aG9kIGVtaXQtY29tbWVudCBoYXNoLXNjb3BlIGVtaXQtYXBwbHktdG8gZW1pdHMtc3ltYm9sIGZhbHNleS1jb25zdGFudD8gZW1pdC1jb25zdGFudHMtY29tbWEtc2VwICpzb3VyY2UtbWFwLWRhdGEqIGVtaXQtcmVjb3JkLXZhbHVlIGVtaXQtdmFyIG1hcHBlZC10eXBlcyByZXNvbHZlLXR5cGVzICppbnB1dHMqIGVtaXQtc3RyIGVtaXQtbWFwIGVtaXQtdmVjdG9yIHRydXRoeS1jb25zdGFudD8gZW1pdGxuIGVtaXQgc2FmZS10ZXN0PyBlbWl0LWV4dGVybnMgZW1pdC1nbG9iYWwtZXhwb3J0IGRpc3RpbmN0LWNvbnN0YW50cz8gc2hhZG93LWRlcHRoXSwgOnR5cGUgOmNsanMsIDpzeW0gY2xqcy5jb21waWxlcn0gezp2YXItc3ltcyBbbXVuZ2UgY29tcGlsZS1yb290IHdpdGgtY29yZS1jbGpzIHJlcXVpcmVzLWNvbXBpbGF0aW9uPyBjb21waWxlLWZpbGUgY2xqcy1maWxlcy1pbiBlbWl0XSwgOnR5cGUgOmNsaiwgOnN5bSBjbGpzLmNvbXBpbGVyLmFwaX0gezp2YXItc3ltcyBbZW1pdC13cmFwXSwgOnR5cGUgOmNsaiwgOnN5bSBjbGpzLmNvbXBpbGVyLm1hY3Jvc30gezp2YXItc3ltcyBbdW5zYWZlLWJpdC1hbmQgbWFjcm9leHBhbmQgdW5jaGVja2VkLXJlbWFpbmRlci1pbnQgd2hlbi1maXJzdCBjb25kLT4+IGJpdC1zZXQgaW1wb3J0LW1hY3JvcyB3aGlsZSBzYXRpc2ZpZXM/IHVuY2hlY2tlZC1zdWJ0cmFjdC1pbnQgbnMtdW5tYXAgaW1wb3J0IGJpdC1zaGlmdC1yaWdodCBhZ2V0IHNwZWNpZnkgdnN3YXAhIGNhY2hpbmctaGFzaCBiaXQtc2hpZnQtbGVmdCBjb2VyY2l2ZS1ub3QgZGVjIHVuY2hlY2tlZC1nZXQgbnMtcHVibGljcyA8IHRoaXMtYXMgLi4gZGVsYXkgc29tZT8gdW5jaGVja2VkLW5lZ2F0ZSBzaW1wbGUtYmVuY2htYXJrIHVuY2hlY2tlZC1pbmMtaW50IHVuY2hlY2tlZC1zZXQganMtc3RyIGJpdC1zaGlmdC1yaWdodC16ZXJvLWZpbGwgaW1wbGVtZW50cz8gZ29vZy1kZWZpbmUgcG9zPyBzcGVjaWZ5ISBpZi1ub3QgYWxlbmd0aCBiaXQteG9yIGRvc2VxIHVuc2lnbmVkLWJpdC1zaGlmdC1yaWdodCBuZWc/IHVuY2hlY2tlZC1mbG9hdCB1bmRlZmluZWQ/IGRlZnR5cGUgbWFzayB3aGVuLWxldCBkaXZpZGUgY29lcmNpdmUtYm9vbGVhbiA8PSBpZi1zb21lICogbWluIGxhenktc2VxIGpzLWRlbGV0ZSB0cnV0aF8ganMtZGVidWdnZXIgbGV0IC0+IGNvZXJjaXZlLW5vdD0gZG90byBhcmVkdWNlIGRvdWJsZSBiaXQtYW5kLW5vdCB1bmNoZWNrZWQtYWRkLWludCBmbiBzaG9ydCB1bmNoZWNrZWQtZG91YmxlIGZhc3QtcGF0aC1wcm90b2NvbHMgc3RyaW5nPyBqcy1hcmd1bWVudHMgdW5jaGVja2VkLW11bHRpcGx5LWludCBhcy0+IHdoZW4tbm90IHdoZW4gaW50ID4ga2V5d29yZD8gdXNlLW1hY3JvcyB1bmNoZWNrZWQtbXVsdGlwbHkgZ2VuLWFwcGx5LXRvIHNvbWUtPj4gdW5jaGVja2VkLWRlYyBkZWZuIGZsb2F0IGpzLWluIGVzNi1pdGVyYWJsZSBhbWFwIHVzZSBkZWNsYXJlIGZhc3QtcGF0aC1wcm90b2NvbC1wYXJ0aXRpb25zLWNvdW50IC0gaGFzaC1zZXQgb3IgZXh0ZW5kLXR5cGUgbWFjcm9leHBhbmQtMSBiaXQtdGVzdCBkZWZtZXRob2QgdGltZSB6ZXJvPyByZXF1aXJlIHVuY2hlY2tlZC1kZWMtaW50IG1lbWZuIGpzLW9iaiBuaWw/IGV4dGVuZC1wcm90b2NvbCBjb25kLT4gZG90aW1lcyBiaXQtYW5kIHJlaWZ5IGluc3RhbmNlPyBsb2FkLWZpbGUqIGRlZm9uY2UgdW5jaGVja2VkLWFkZCBpZGVudGljYWw/IHVuY2hlY2tlZC1kaXZpZGUtaW50IGRlZm4tIGRlZnByb3RvY29sIHVuY2hlY2tlZC1zdWJ0cmFjdCBhc3NlcnQgdHJ1ZT8gYXJyYXkgbGV0Zm4gLyBiaXRwb3MgYml0LW9yIHZlY3RvciA+PSBsb29wIGJpdC1mbGlwIGpzLW1vZCB3aXRoLW91dC1zdHIgY29uZHAgY29uZCBzb21lLT4gbnMtaW50ZXJucyBmb3IgYmluZGluZyBhcnJheS1tYXAgdW5jaGVja2VkLWJ5dGUgbnMtaW1wb3J0cyBkZWZtYWNybyB1bmNoZWNrZWQtc2hvcnQgaW5jIHdpdGgtcmVkZWZzIGJpdC1jbGVhciBsb2NraW5nIGxpc3QgKyBhc2V0IGRlc3RydWN0dXJlIGRlZm11bHRpIHN0ciBjb2VyY2l2ZS09IGhhc2gtbWFwIGdlbi1hcHBseS10by1zaW1wbGUgaWYtbGV0IGZhbHNlPyBjYXNlIGV4aXN0cz8gYml0LW5vdCBieXRlIG1heCA9PSBsYXp5LWNhdCBjb21tZW50IGNvcHktYXJndW1lbnRzIHVuc2FmZS1jYXN0IHJlc29sdmUgZGVmcmVjb3JkIG1ha2UtYXJyYXkgdW5jaGVja2VkLW5lZ2F0ZS1pbnQgdW5jaGVja2VkLWluYyBhbmQgbnVtYmVyPyBqcy1jb21tZW50IHN5bWJvbD8gd2hlbi1zb21lIHVuY2hlY2tlZC1jaGFyIHJlcXVpcmUtbWFjcm9zIC0+PiBqcy1pbmxpbmUtY29tbWVudCBkdC0+ZXQgcmVmZXItY2xvanVyZV0sIDp0eXBlIDpjbGosIDpzeW0gY2xqcy5jb3JlfSB7OnZhci1zeW1zIFtqcy0+Y2xqIHNvcnQtYnkgSVRyYW5zaWVudEFzc29jaWF0aXZlIGNodW5rLWZpcnN0IHByaW50LW1ldGE/IG0zLWhhc2gtaW50IHByLXN0ciogZWR1Y3Rpb24gdHJlZS1zZXEgdW5jaGVja2VkLXJlbWFpbmRlci1pbnQgdXVpZCBzZXEgcmVkdWNlIElVVUlEIElOSVQgZmluZC1ucyBjb250YWlucz8gZXZlcnk/IGtlZXAtaW5kZXhlZCBzdWJzIGpzLXN5bWJvbD8gSUZpbmQgc2V0IE1PRFVMRV9VUklTIHRha2UtbGFzdCBiaXQtc2V0IHN0cmluZy1oYXNoLWNhY2hlLWNvdW50IHF1YWxpZmllZC1rZXl3b3JkPyAtd2l0aC1tZXRhIGJ1dGxhc3QgdW5jaGVja2VkLXN1YnRyYWN0LWludCAtaXRlcmF0b3IgKnByaW50LW5hbWVzcGFjZS1tYXBzKiB0YWtlLW50aCBmaXJzdCBuYXRpdmUtc2F0aXNmaWVzPyBzZXE/IC1zb3J0ZWQtc2VxLWZyb20gcHJpbnRsbi1zdHIgaW5zdC1tcyBpdGVyYXRlIC1lbXB0eSBuZXdsaW5lIElMb29rdXAgLWNodW5rZWQtcmVzdCB3cml0ZS1hbGwgZm4/IC1wcmVmZXItbWV0aG9kIC1hc3NvYyBkb2FsbCBrZXl3b3JkLWlkZW50aWNhbD8gKnByaW50LWVyci1mbiogcHJlZmVycyAtanMtPmNsaiBkZWR1cGUgZGlzc29jIGF0b20gYml0LXNoaWZ0LXJpZ2h0ICpjbG9qdXJlc2NyaXB0LXZlcnNpb24qIC1maXJzdCBwZWVrIElLVlJlZHVjZSBhZ2V0IC13cml0ZSBpdGVyIG1rLWJvdW5kLWZuIGxhc3QgLWRlZmF1bHQtZGlzcGF0Y2gtdmFsIHByIG5hbWVzcGFjZSBvYmotbWFwIC1jb25qID0gSVRyYW5zaWVudE1hcCB0YWtlIHZlY3Rvcj8gYm9vbGVhbiBJQ2h1bmsgYml0LXNoaWZ0LWxlZnQgcmFuZG9tLXV1aWQgYW55PyByYW5kLWludCBhY2xvbmUgdnJlc2V0ISBjaHVuayBkZWMgQVBlcnNpc3RlbnRWZWN0b3IgbWFwIGp1eHQgPCAqZXZhbCogdGVzdCByZXN0IGV4LWRhdGEgLWRyb3AtZmlyc3QgaXNhPyBib29sZWFuPyAtY2xvbmUgbXVuZ2UgREVNVU5HRV9NQVAgcmUtc2VxIGNoYXI/IG1ha2UtaGllcmFyY2h5IFBST1RPQ09MX1NFTlRJTkVMIC1yZWR1Y2UgLWNvdW50IHN3YXAtdmFscyEga2VlcCBjaGFyIG1hcGNhdCB1bmNoZWNrZWQtbG9uZyBtMy1zZWVkIHNvbWU/IHVuY2hlY2tlZC1uZWdhdGUgcmVtb3ZlLXRhcCBzeW1ib2wtaWRlbnRpY2FsPyAqY29tbWFuZC1saW5lLWFyZ3MqIHJldmVyc2UgaW5zdD8gcmFuZ2UgYml0LWNvdW50IHNvcnQgdW5jaGVja2VkLWluYy1pbnQgLWNvbXBhcmUgbWFwLWluZGV4ZWQgYXJyYXktbGlzdCByYW5kLW50aCBjb21wIGFycmF5LWNodW5rIGRpc3BhdGNoLWZuIGJpdC1zaGlmdC1yaWdodC16ZXJvLWZpbGwgLWFzLXRyYW5zaWVudCBkb3J1biBwci1zZXF1ZW50aWFsLXdyaXRlciBzaW1wbGUtc3ltYm9sPyBJSW5kZXhlZCBkaXNqIElQcmludFdpdGhXcml0ZXIgSVZlY3RvciBJSXRlcmFibGUgZXZhbCBjb25zIGZsb2F0cyBwb3M/IGZuaWwgbWVyZ2Utd2l0aCBudGhyZXN0ICp3YXJuLW9uLWluZmVyKiAtZmluZCBzZXF1ZW50aWFsPyBtMy1taXgtSDEgcHJpbS1zZXEgKnByaW50LWxldmVsKiBzaHVmZmxlIGhhc2gta2V5d29yZCBmaW5kIGFsZW5ndGggYml0LXhvciB1bnNpZ25lZC1iaXQtc2hpZnQtcmlnaHQgbmVnPyAtcmVtb3ZlLW1ldGhvZCBqcy1pbnZva2UgbTMtbWl4LUsxIHVuY2hlY2tlZC1mbG9hdCB1bmRlZmluZWQ/IElNZXRhIHJlZHVjZWQ/IGRpc2ohIC1sb29rdXAgZmxvYXQ/IElDbG9uZWFibGUgSUVuY29kZUNsb2p1cmUgYm9vbGVhbnMgaW50LWFycmF5IHNldD8gaXRlcmFibGU/IGNhdCAtcHItd3JpdGVyIGZsdXNoIHNldC1mcm9tLWluZGV4ZWQtc2VxIHRha2Utd2hpbGUgdmFyeS1tZXRhIElOZXh0IGlzX3Byb3RvXyBTVEFSVCBJQ291bnRlZCBJTWFwRW50cnkgPD0gTU9EVUxFX0lORk9TIGNvbmohIC1wb3AgcmVwZWF0ZWRseSB6aXBtYXAgcmVzZXQtdmFscyEgSVN0YWNrIC1yZW1vdmUtd2F0Y2ggSVZvbGF0aWxlIHJlbW92ZSAqIHJlLXBhdHRlcm4gbWluIC1wZXJzaXN0ZW50ISAtbnRoIHBvcCEgY2h1bmstYXBwZW5kICp1bmNoZWNrZWQtYXJyYXlzKiBwcm4tc3RyIElSZXZlcnNpYmxlIHJldmVyc2libGU/IC1yZWFsaXplZD8gLWFkZC13YXRjaCAtZGVyZWYtd2l0aC10aW1lb3V0IGNvbmogLXNvcnRlZC1zZXEgdHJhbnNkdWNlIC1zd2FwISAqcHJpbnQtbGVuZ3RoKiBqcy1kZWxldGUgdHJ1dGhfIGFycmF5LWluZGV4LW9mIGtleS0+anMgSUVuY29kZUpTIGNvbXBhcmUtYW5kLXNldCEgYXJyYXktc2VxIGludGVybGVhdmUgcHJpbnQtbWFwIG1hcD8gbTMtQzEgZ2V0IGlkZW50aXR5IGludG8gbG9uZyBkb3VibGUgdm9sYXRpbGU/IC1rZXkgbmZpcnN0IG1ldGEgLWt2LXJlZHVjZSBJSGFzaCBiaXQtYW5kLW5vdCB2YXI/IC1jb21wYXJhdG9yIHVuY2hlY2tlZC1hZGQtaW50IGhhc2gtb3JkZXJlZC1jb2xsIHJlc2V0LW1ldGEhIElFcXVpdiBjeWNsZSAtZGVyZWYgZW1wdHk/IHNob3J0IC1jbGotPmpzIC1jaHVua2VkLWZpcnN0IGFkZC10YXAgZmlsdGVydiBoYXNoIHF1b3QgbnMtaW50ZXJucyogdW5jaGVja2VkLWRvdWJsZSByYW5nZWQtaXRlcmF0b3IgSVRyYW5zaWVudFZlY3RvciBrZXkgbG9uZ3Mgbm90PSBzZXQtcHJpbnQtZXJyLWZuISBmYXN0LXBhdGgtcHJvdG9jb2xzIHN0cmluZz8gdXJpPyBlczYtaXRlcmF0b3IgcHItc3RyLXdpdGgtb3B0cyBtMy1DMiAqcHJpbnQtbmV3bGluZSogdW5jaGVja2VkLW11bHRpcGx5LWludCBjaHVuay1yZXN0IHJlbW92ZS1hbGwtbWV0aG9kcyB0cmFtcG9saW5lIGRvdWJsZT8gdmVjICpwcmludC1tZXRhKiAtbm90aWZ5LXdhdGNoZXMgaW50IG1hcC1lbnRyeT8gcmFuZCBzZWNvbmQgZmluZC1ucy1vYmogSUVkaXRhYmxlQ29sbGVjdGlvbiBoYXNoLWNvbWJpbmUgPiAtbmFtZSByZXBsYWNlIGludD8gYXNzb2NpYXRpdmU/IHVuY2hlY2tlZC1pbnQganMta2V5cyBpbnN0LW1zKiBrZXl3b3JkPyBhcnJheS1pdGVyIGZvcmNlIGdyb3VwLWJ5IC1yc2VxIHBybiBkZWZhdWx0LWRpc3BhdGNoLXZhbCBqcy1pdGVyYWJsZT8gdW5jaGVja2VkLW11bHRpcGx5IGV2ZW4/IGVzNi1pdGVyYXRvci1zZXEgdW5jaGVja2VkLWRlYyBJbnN0IHBlcnNpc3RlbnQtYXJyYXktbWFwLXNlcSB0YWdnZWQtbGl0ZXJhbD8gZG91YmxlLWFycmF5IGNyZWF0ZS1ucyBkZWZuIHNwcmVhZCByc2VxIGV4LWNhdXNlIElSZXNldCBJRW1wdHlhYmxlQ29sbGVjdGlvbiBleC1tZXNzYWdlICpwcmludC1mbi1ib2RpZXMqIHN0cmluZy1wcmludCBmbG9hdCBJUmVjb3JkIHByLXN0ciBlczYtc2V0LWVudHJpZXMtaXRlcmF0b3IgY29uY2F0IC1tZXRob2RzIGpzLXJlc2VydmVkIElEZXJlZldpdGhUaW1lb3V0IHN5bWJvbCB0by1hcnJheS0yZCBFeGNlcHRpb25JbmZvIG1vZCBJU2V0IHBvcCBJUGVuZGluZyAtZW50cnkta2V5IENIQVJfTUFQIGRpc3NvYyEgcmVkdWN0aW9ucyBmYXN0LXBhdGgtcHJvdG9jb2wtcGFydGl0aW9ucy1jb3VudCBpbmRleGVkPyAtIC1lcXVpdiBhc3NvYyEgaGFzaC1zZXQgcmVkdWNlLWt2IHJlc2V0ISBuYW1lIEZuIGZmaXJzdCBzb3J0ZWQtc2V0IGNvdW50ZWQ/IHRhZ2dlZC1saXRlcmFsIHByaW50bG4gYXNzb2MtaW4gYml0LXRlc3QgSVN3YXAgbWVtb2l6ZSBhbHRlci1tZXRhISB6ZXJvPyBzaW1wbGUta2V5d29yZD8gKm1haW4tY2xpLWZuKiAtYXNzb2MtbiB1bmNoZWNrZWQtZGVjLWludCBwZXJzaXN0ZW50ISBzZXQtcHJpbnQtZm4hIG5uZXh0IGFkZC13YXRjaCBub3QtZXZlcnk/IHJlbSBpZmluZD8gc29tZSBJTmFtZWQgSVJlZHVjZSBuZWctaW50PyBkcm9wIGpzLW9iaiBJVHJhbnNpZW50Q29sbGVjdGlvbiBudGggc29ydGVkPyBuaWw/IHNwbGl0LWF0IHBybi1zdHItd2l0aC1vcHRzIG5vdC1uYXRpdmUgcmFuZG9tLXNhbXBsZSBzZWxlY3Qta2V5cyBiaXQtYW5kIGJvdW5kZWQtY291bnQgdXBkYXRlIGdlbnN5bV9jb3VudGVyIGZpbmQtbWFjcm9zLW5zIGxpc3QqIHVwZGF0ZS1pbiBwcmVmZXItbWV0aG9kIGVuc3VyZS1yZWR1Y2VkIGluc3RhbmNlPyBtaXgtY29sbGVjdGlvbi1oYXNoIHJlLWZpbmQgcnVuISB2YWwgdW5jaGVja2VkLWFkZCB0cmFuc2Zvcm1lci1pdGVyYXRvciBub3QgLXZyZXNldCEgd2l0aC1tZXRhIHVucmVkdWNlZCByZWNvcmQ/IHR5cGUgaWRlbnRpY2FsPyAtbmFtZXNwYWNlIHVuY2hlY2tlZC1kaXZpZGUtaW50IG5zLW5hbWUgbWF4LWtleSAqb3V0KiBoYXNoLXN0cmluZyAtcHJlZmVycyBzZXQtdmFsaWRhdG9yISBpZGVudD8gLW1ldGEgLWRpc3BhdGNoLWZuIC1hZGQtbWV0aG9kIHN3YXAhIHZhbHMgLWNodW5rZWQtbmV4dCB1bmNoZWNrZWQtc3VidHJhY3QgdGFwPiBJTWFwIHNvcnRlZC1zZXQtYnkgY2xvbmVhYmxlPyBxdWFsaWZpZWQtaWRlbnQ/IGhhc2gtc3RyaW5nKiBrZXktdGVzdCAtcmVzZXQgdHJ1ZT8gYXJyYXkgcHJpbnQgLXBlZWsgSVNlcSBlbXB0eSByZW1vdmUtbWV0aG9kIHZvbGF0aWxlISAvIGJpdC1vciBtMy1mbWl4IHZlY3RvciA+PSBkcm9wLWxhc3Qgb2JqZWN0PyBub3QtZW1wdHkgZGlzdGluY3QgcGFydGl0aW9uIElNdWx0aUZuIERFTVVOR0VfUEFUVEVSTiBJQXNzb2NpYXRpdmUgYml0LWZsaXAgbG9uZy1hcnJheSBkZXNjZW5kYW50cyBtZXJnZSBJU2VxYWJsZSBqcy1tb2QgaW50ZWdlcj8gTlNfQ0FDSEUgbWFwdiBpbmZpbml0ZT8gcGFydGl0aW9uLWFsbCBwYXJ0aXRpb24tYnkgSVNlcXVlbnRpYWwgZXF1aXYtbWFwIG9iamVjdC1hcnJheSBkZXJpdmUgc2VxLWl0ZXIgSUNodW5rZWRTZXEgc3BlY2lhbC1zeW1ib2w/IGFuY2VzdG9ycyBzdWJzZXEgZ2Vuc3ltIC1uZXh0IGRlbGF5PyBmbGF0dGVuIC1kaXNzb2MgZG91YmxlcyBoYWx0LXdoZW4gLWNvbnRhaW5zLWtleT8gcmVtb3ZlLXdhdGNoIGV4LWluZm8gaWZuPyBJQXRvbSBuYXQtaW50PyBJV2F0Y2hhYmxlIHN1YnZlYyAtcG9wISBwYXJ0aWFsIGNodW5rZWQtc2VxPyByZXBsaWNhdGUgbWluLWtleSByZWR1Y2VkIHJlLW1hdGNoZXMgYXJyYXktbWFwIElUcmFuc2llbnRTZXQgdW5jaGVja2VkLWJ5dGUgZXZlcnktcHJlZCBrZXlzIG1pc3NpbmctcHJvdG9jb2wgbG9hZC1maWxlIGRpc3RpbmN0PyBwb3MtaW50PyB1bmNoZWNrZWQtc2hvcnQgbWV0aG9kcyBvZGQ/IC1nZXQtbWV0aG9kIGZyZXF1ZW5jaWVzIHJlZHVjZWFibGU/IHN0cmluZy1oYXNoLWNhY2hlIHJzdWJzZXEgaW5jIHR5cGUtPnN0ciBnZXQtbWV0aG9kIHV1aWQ/IGVzNi1lbnRyaWVzLWl0ZXJhdG9yIGJpdC1jbGVhciBmaWx0ZXIgLWFzc29jLW4hIElXaXRoTWV0YSBsaXN0ICsgc3BsaXQtd2l0aCBhc2V0IGludC1yb3RhdGUtbGVmdCBrZXl3b3JkICpucyogKmFzc2VydCogSUNvbGxlY3Rpb24gY2hhcnMgc3RyIG5leHQgQVNlcSBwci1zZXEtd3JpdGVyIElGbiByZWdleHA/IGhhc2gtbWFwICpleGVjLXRhcC1mbiogdW5kZXJpdmUgLXJlc2V0ISAtcmVzdCBuaWwtaXRlciBmYWxzZT8gKnByaW50LXJlYWRhYmx5KiBpbnRzIHNvbWUtZm4gKmZsdXNoLW9uLW5ld2xpbmUqIHRvLWFycmF5IGxpc3Q/IGFycmF5PyBzaW1wbGUtaWRlbnQ/IGNsb25lIGRlbXVuZ2UgYml0LW5vdCBieXRlIG1heCBJQ29tcGFyYWJsZSA9PSBwYXJlbnRzIGNvdW50IC1kaXNqb2luISAqbG9hZGVkLWxpYnMqIHNvcnRlZC1tYXAtYnkgYXBwbHkgYWRkLXRvLXN0cmluZy1oYXNoLWNhY2hlIGNsai0+anMgSUNodW5rZWROZXh0IGludGVycG9zZSBkZXJlZiBhc3NvYyB0cmFuc2llbnQgLWRpc2pvaW4gY2h1bmstY29ucyBjb21wYXJhdG9yIHByaW50LXByZWZpeC1tYXAgc29ydGVkLW1hcCBkcm9wLXdoaWxlIElXcml0ZXIgcmVhbGl6ZWQ/ICpwcmludC1mbiogY29tcGFyZSBjb21wbGVtZW50IC1hc3NvYyEgKnByaW50LWR1cCogc3RyaW5nLWl0ZXIgLWtleS0+anMgSURlcmVmIHNlcXVlbmNlIGNvbnN0YW50bHkgY2h1bmtlZC1zZXEgSVNvcnRlZCBtYWtlLWFycmF5IHNob3J0cyAqdW5jaGVja2VkLWlmKiBlbmFibGUtY29uc29sZS1wcmludCEgLWZsdXNoIGNvbXBsZXRpbmcgdW5jaGVja2VkLW5lZ2F0ZS1pbnQgaGFzaC11bm9yZGVyZWQtY29sbCByZXBlYXQgdW5jaGVja2VkLWluYyBudGhuZXh0IGdldC12YWxpZGF0b3IgbnVtYmVyPyAtY29uaiEgY2h1bmstbmV4dCBwcmludC1zdHIgbm90LWFueT8gaW50by1hcnJheSAtaGFzaCBxdWFsaWZpZWQtc3ltYm9sPyAtZGlzc29jISBjaHVuay1idWZmZXIgc2VxYWJsZT8gc3ltYm9sPyBtMy1oYXNoLXVuZW5jb2RlZC1jaGFycyB1bmNoZWNrZWQtY2hhciBzeXN0ZW0tdGltZSAtaW52b2tlIGNvbGw/IGdldC1pbiBmbmV4dCBJTGlzdCAtdmFsIGJ5dGVzIC1zZXFdLCA6dHlwZSA6Y2xqcywgOnN5bSBjbGpzLmNvcmV9IHs6dmFyLXN5bXMgW2dvIGFsdCEgZ28tbG9vcCBkby1hbHRdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsanMuY29yZS5hc3luY30gezp2YXItc3ltcyBbUHViIHJlZHVjZSByZW1vdmU+IHRpbWVvdXQgdW5zdWIqIGFkbWl4KiB1bm1peCogbWl4IHB1YiB0YWtlIHVuc3ViLWFsbCogPCEgbWFwIE11eCBtYXBjYXQ+IGJ1ZmZlciBjbG9zZSEgb2ZmZXIhIGNoYW4gc29sby1tb2RlKiB0YXAgYWRtaXggcHJvbWlzZS1jaGFuIHVuaXF1ZSBtdXhjaCogc29sby1tb2RlIHRyYW5zZHVjZSBvbnRvLWNoYW4gdG8tY2hhbiBkcm9wcGluZy1idWZmZXIgdW50YXAtYWxsIGludG8gcGlwZWxpbmUgc3ViIG1hcD4gcGlwZSB1bm1peCBmaWx0ZXI8IHN1YiogcmVtb3ZlPCB1bnRhcCogdG9nZ2xlIHVudGFwLWFsbCogc2xpZGluZy1idWZmZXIgcGFydGl0aW9uIE11bHQgbWVyZ2UgcGFydGl0aW9uLWJ5IHVuc3ViLWFsbCA+ISB1bm1peC1hbGwqIHNwbGl0IHVubWl4LWFsbCBmaWx0ZXI+IHRhcCogdW50YXAgYWx0cyEgdW5zdWIgcG9sbCEgbWFwPCBkby1hbHRzIHBpcGVsaW5lLWFzeW5jIE1peCB0b2dnbGUqIG11bHQgbWFwY2F0PCBpb2MtYWx0cyEgdW5ibG9ja2luZy1idWZmZXI/IHB1dCEgdGFrZSFdLCA6dHlwZSA6Y2xqcywgOnN5bSBjbGpzLmNvcmUuYXN5bmN9IHs6dmFyLXN5bXMgW2Fjb3B5IHJpbmctYnVmZmVyIGZpeGVkLWJ1ZmZlciBkcm9wcGluZy1idWZmZXIgc2xpZGluZy1idWZmZXIgcHJvbWlzZS1idWZmZXJdLCA6dHlwZSA6Y2xqcywgOnN5bSBjbGpzLmNvcmUuYXN5bmMuaW1wbC5idWZmZXJzfSB7OnZhci1zeW1zIFtib3ggcHV0LWFjdGl2ZT8gTUFYX0RJUlRZIGFib3J0IE1NQyBjaGFuXSwgOnR5cGUgOmNsanMsIDpzeW0gY2xqcy5jb3JlLmFzeW5jLmltcGwuY2hhbm5lbHN9IHs6dmFyLXN5bXMgW3Rhc2tzIHJ1bm5pbmc/IHF1ZXVlZD8gVEFTS19CQVRDSF9TSVpFIHByb2Nlc3MtbWVzc2FnZXMgcXVldWUtZGlzcGF0Y2hlciBydW4gcXVldWUtZGVsYXldLCA6dHlwZSA6Y2xqcywgOnN5bSBjbGpzLmNvcmUuYXN5bmMuaW1wbC5kaXNwYXRjaH0gezp2YXItc3ltcyBbRVhDRVBUSU9OLUZSQU1FUyBwcm9jZXNzLWV4Y2VwdGlvbiBTVEFURS1JRFggYXNldC1vYmplY3QgYWRkLWV4Y2VwdGlvbi1mcmFtZSBydW4tc3RhdGUtbWFjaGluZS13cmFwcGVkIEZOLUlEWCBhZ2V0LW9iamVjdCByZXR1cm4tY2hhbiBCSU5ESU5HUy1JRFggQ1VSUkVOVC1FWENFUFRJT04gcnVuLXN0YXRlLW1hY2hpbmUgZmluaXNoZWQ/IFVTRVItU1RBUlQtSURYIHB1dCEgdGFrZSEgVkFMVUUtSURYXSwgOnR5cGUgOmNsanMsIDpzeW0gY2xqcy5jb3JlLmFzeW5jLmltcGwuaW9jLWhlbHBlcnN9IHs6dmFyLXN5bXMgW2luZGV4LXN0YXRlLW1hY2hpbmUgZml4dXAtYWxpYXNlcyBFWENFUFRJT04tRlJBTUVTIGJsb2NrLXJlZmVyZW5jZXMgcmVhZHMtZnJvbSBpbmRleC1ibG9jayAtPlRyeSAtPlByb2Nlc3NFeGNlcHRpb25XaXRoVmFsdWUgbWFwLT5DYXNlIGFkZC1ibG9jayBpbnN0cnVjdGlvbj8gZXhwYW5kIGxldC1iaW5kaW5nLXRvLXNzYSBtYXAtPkNvbmRCciBtYXAtPkNvbnN0IC0+Q2FsbCAtPkptcCAtPkNvbmRCciAtPkVuZENhdGNoRmluYWxseSBjb3VudC1wZXJzaXN0ZW50LXZhbHVlcyBnZXQtYmluZGluZyBnZW4tcGxhbiAtaXRlbS10by1zc2EgLT5DYXNlIGdldC1ibG9jayBpZC1mb3ItaW5zdCBpbmRleC1pbnN0cnVjdGlvbiB3cml0ZXMtdG8gLT5Eb3QgbWFwLT5FbmRDYXRjaEZpbmFsbHkgbWFwLT5DdXN0b21UZXJtaW5hdG9yIHRlcm1pbmF0b3ItY29kZSBzZXQtYmxvY2sgU1RBVEUtSURYIHNleHByLXRvLXNzYSAtPkZuIC0+UmV0dXJuIElFbWl0dGFibGVJbnN0cnVjdGlvbiBtYXAtPkNhbGwgSVRlcm1pbmF0b3IgbWFwLT5GbiBzcGVjaWFsLW92ZXJyaWRlPyBkZWZhdWx0LXNleHByIG1hcC0+UHJvY2Vzc0V4Y2VwdGlvbldpdGhWYWx1ZSBlbWl0LWluc3RydWN0aW9uIElJbnN0cnVjdGlvbiBtYXAtPkRvdCB0ZXJtaW5hdGUtYmxvY2sgcGVyc2lzdGVudC12YWx1ZT8gLT5TZXQhIGFzc29jLWluLXBsYW4gcHVzaC1hbHRlci1iaW5kaW5nIGFzZXQtYWxsISBkZWJ1ZyBwYXJzZS10by1zdGF0ZS1tYWNoaW5lIGdldC1wbGFuIEZOLUlEWCBhbGwgcG9wLWJpbmRpbmcgLT5SZWN1ciBhZGQtaW5zdHJ1Y3Rpb24gbm8tb3AgcHVzaC1iaW5kaW5nIC0+Q3VzdG9tVGVybWluYXRvciBCSU5ESU5HUy1JRFggbWFwLT5SZXR1cm4gaXRlbS10by1zc2EgdGVybWluYXRlLWN1c3RvbSBtYXAtPlRyeSBhc3luYy1jdXN0b20tdGVybWluYXRvcnMgaXMtc3BlY2lhbD8gQ1VSUkVOVC1FWENFUFRJT04gLT5Db25zdCBwcmludC1wbGFuIG1hcC0+U2V0ISBnZXQtaW4tcGxhbiB1cGRhdGUtaW4tcGxhbiBtYXAtPlJlY3VyIG1hcC0+Sm1wIFVTRVItU1RBUlQtSURYIHN0YXRlLW1hY2hpbmUgVkFMVUUtSURYXSwgOnR5cGUgOmNsaiwgOnN5bSBjbGpzLmNvcmUuYXN5bmMuaW1wbC5pb2MtbWFjcm9zfSB7OnZhci1zeW1zIFtyZW1vdmUhIGNsb3NlLWJ1ZiEgY2xvc2UhIEhhbmRsZXIgYmxvY2thYmxlPyBhY3RpdmU/IEJ1ZmZlciBmdWxsPyBhZGQhIGFkZCEqIFJlYWRQb3J0IENoYW5uZWwgY2xvc2VkPyBVbmJsb2NraW5nQnVmZmVyIE1BWC1RVUVVRS1TSVpFIGNvbW1pdCBwdXQhIHRha2UhIFdyaXRlUG9ydF0sIDp0eXBlIDpjbGpzLCA6c3ltIGNsanMuY29yZS5hc3luYy5pbXBsLnByb3RvY29sc30gezp2YXItc3ltcyBbdGltZW91dCByYW5kb20tbGV2ZWwgc2tpcC1saXN0IE1BWF9MRVZFTCBQIHRpbWVvdXRzLW1hcCBza2lwLWxpc3Qtbm9kZSBsZWFzdC1ncmVhdGVyLW5vZGUgVElNRU9VVF9SRVNPTFVUSU9OX01TXSwgOnR5cGUgOmNsanMsIDpzeW0gY2xqcy5jb3JlLmFzeW5jLmltcGwudGltZXJzfSB7OnZhci1zeW1zIFtnbyBhbHQhIGdvLWxvb3BdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsanMuY29yZS5hc3luYy5tYWNyb3N9IHs6dmFyLXN5bXMgW2Vuc3VyZSB3aXRoLWNvbXBpbGVyLWVudiBkZWZhdWx0LWNvbXBpbGVyLWVudiogZGVmYXVsdC1jb21waWxlci1lbnYgKmNvbXBpbGVyKl0sIDp0eXBlIDpjbGosIDpzeW0gY2xqcy5lbnZ9IHs6dmFyLXN5bXMgWypjb21waWxlciogZGVmYXVsdC1jb21waWxlci1lbnYqIGRlZmF1bHQtY29tcGlsZXItZW52XSwgOnR5cGUgOmNsanMsIDpzeW0gY2xqcy5lbnZ9IHs6dmFyLXN5bXMgW2Vuc3VyZSB3aXRoLWNvbXBpbGVyLWVudl0sIDp0eXBlIDpjbGosIDpzeW0gY2xqcy5lbnYubWFjcm9zfSB7OnZhci1zeW1zIFtwYXJhbXMtPm1ldGhvZC1wYXJhbXMgcGFyc2UtZXh0ZXJuLW5vZGUgKmlnbm9yZS12YXIqIGd0eXBlLT5jbGpzLXR5cGUgZ2VuZXJpYz8gKmdvb2ctbnMqIHBhcnNlLWV4dGVybnMgZXh0ZXJucy1tYXAgZXh0ZXJucy1tYXAqIGFubm90YXRlIGluZGV4LWV4dGVybnMgcGFyc2VkLT5kZWZzICpzb3VyY2UtZmlsZSogZ2V0LXRhZyBucy1tYXRjaD8gYW5hbHl6ZS1nb29nLWZpbGUgZ2V0LXZhci1pbmZvXSwgOnR5cGUgOmNsaiwgOnN5bSBjbGpzLmV4dGVybnN9IHs6dmFyLXN5bXMgW3dpdGgtc3RhdGUgZHVtcC1jb3JlXSwgOnR5cGUgOmNsaiwgOnN5bSBjbGpzLmpzfSB7OnZhci1zeW1zIFsqbG9hZC1mbiogZXZhbCBjb21waWxlLXN0ciBucy0+cmVscGF0aCBlbXB0eS1zdGF0ZSAqbG9hZGVkKiByZXF1aXJlIGZpbGUtPm5zIGV2YWwtc3RyIGpzLWV2YWwgbG9hZC1zb3VyY2UtbWFwISBsb2FkLWFuYWx5c2lzLWNhY2hlISBhbmFseXplLXN0ciAqZXZhbC1mbipdLCA6dHlwZSA6Y2xqcywgOnN5bSBjbGpzLmpzfSB7OnZhci1zeW1zIFt6aXAtZmlsZSBnb29nLWRlcGVuZGVuY2llcyBsb2FkLWZvcmVpZ24tbGlicmFyeSBmaW5kLWpzLWphciBmaW5kLWpzLWZzIGZpbmQtanMtcmVzb3VyY2VzIHRvLXVybCAtcmVxdWlyZXMgYnVpbGQtaW5kZXggamFyLWVudHJ5LW5hbWVzIGZpbmQtanMtY2xhc3NwYXRoIGdvb2ctZGVwZW5kZW5jaWVzKiAtcHJvdmlkZXMgbmF0aXZlLW5vZGUtbW9kdWxlcyBJSmF2YVNjcmlwdCAtc291cmNlIGxpYi1zcGVjLW1lcmdlIGRlcGVuZGVuY3ktb3JkZXItdmlzaXQganMtZGVwZW5kZW5jeS1pbmRleCAtcmVsYXRpdmUtcGF0aCBsb2FkLWZvcmVpZ24tbGlicmFyeSogbG9hZC1saWJyYXJ5IC11cmwgZmluZC11cmwgLWZvcmVpZ24/IGdldC1maWxlIGxvYWQtbGlicmFyeSogamFyLWVudHJ5LW5hbWVzKiAtY2xvc3VyZS1saWI/IGxpYnJhcnktZGVwZW5kZW5jaWVzIGZpbmQtY2xhc3NwYXRoLWxpYiBwYXJzZS1qcy1ucyBkZXBlbmRlbmN5LW9yZGVyXSwgOnR5cGUgOmNsaiwgOnN5bSBjbGpzLmpzLWRlcHN9IHs6dmFyLXN5bXMgW25vcm1hbGl6ZSBzaW5nbGUtc2VnbWVudD8gLW1haW5dLCA6dHlwZSA6Y2xqLCA6c3ltIGNsanMubWFpbn0gezp2YXItc3ltcyBbYWRkLWNsanMtYmFzZS1kZXAgZGVwcy1mb3ItbW9kdWxlIG5vcm1hbGl6ZSBpbmRleC1pbnB1dHMgdmFsaWRhdGUtaW5wdXRzIHNvcnQtbW9kdWxlcyBpbnB1dHMtPmFzc2lnbmVkLW1vZHVsZXMgYWRkLWNsanMtYmFzZSBwYXJlbnQ/IGRlcHMtZm9yIGFubm90YXRlLWRlcHRocyBkZXB0aC1vZiBtb2R1bGUtZm9yIG1vZHVsZXMtPm1vZHVsZS11cmlzIHZhbGlkYXRlLW1vZHVsZXMgZGVwcy1mb3ItZW50cnkgY2Fub25pY2FsLW5hbWUgZGVlcGVzdC1jb21tb24tcGFyZW50IHZhbGlkYXRlLWlucHV0cyogZXhwYW5kLW1vZHVsZXMgbWF5YmUtYWRkLW91dC1maWxlIHRvcG8tc29ydCBub3JtYWxpemUtaW5wdXQgbW9kdWxlcy0+bW9kdWxlLWluZm9zIGZpbmQtc291cmNlcy1mb3ItbW9kdWxlLWVudHJ5XSwgOnR5cGUgOmNsaiwgOnN5bSBjbGpzLm1vZHVsZS1ncmFwaH0gezp2YXItc3ltcyBbZGVmdHlwZSBwcmludC1sZW5ndGgtbG9vcCBnZXRmIHBwcmludC1sb2dpY2FsLWJsb2NrIHBwIGZvcm1hdHRlci1vdXQgZm9ybWF0dGVyIHdpdGgtcHJldHR5LXdyaXRlciBzZXRmIHdpdGgtcHByaW50LWRpc3BhdGNoXSwgOnR5cGUgOmNsaiwgOnN5bSBjbGpzLnBwcmludH0gezp2YXItc3ltcyBbcHByaW50IGdldC1wcmV0dHktd3JpdGVyICpwcmludC1zdXBwcmVzcy1uYW1lc3BhY2VzKiBjaGFyLWNvZGUgKnByaW50LXByZXR0eSogKnByaW50LXBwcmludC1kaXNwYXRjaCogcHByaW50LW5ld2xpbmUgZmxvYXQ/IHBwcmludC10YWIgcHByaW50LXNldCBwcmludC10YWJsZSBzZXQtcHByaW50LWRpc3BhdGNoIGZyZXNoLWxpbmUgcHByaW50LWluZGVudCAqcHJpbnQtcmFkaXgqIElQcmV0dHlGbHVzaCBjbC1mb3JtYXQgKnByaW50LW1pc2VyLXdpZHRoKiB3cml0ZSAtcHBmbHVzaCAqcHJpbnQtcmlnaHQtbWFyZ2luKiB3cml0ZS1vdXQgKnByaW50LWJhc2UqXSwgOnR5cGUgOmNsanMsIDpzeW0gY2xqcy5wcHJpbnR9IHs6dmFyLXN5bXMgW2FkZC1kYXRhLXJlYWRlcnNdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsanMucmVhZGVyfSB7OnZhci1zeW1zIFsqZGVmYXVsdC1kYXRhLXJlYWRlci1mbiogcmVhZCAqdGFnLXRhYmxlKiBwYXJzZS1hbmQtdmFsaWRhdGUtdGltZXN0YW1wIHJlZ2lzdGVyLXRhZy1wYXJzZXIhIHJlZ2lzdGVyLWRlZmF1bHQtdGFnLXBhcnNlciEgZGVyZWdpc3Rlci1kZWZhdWx0LXRhZy1wYXJzZXIhIHJlYWQtc3RyaW5nIGRlcmVnaXN0ZXItdGFnLXBhcnNlciEgcGFyc2UtdGltZXN0YW1wXSwgOnR5cGUgOmNsanMsIDpzeW0gY2xqcy5yZWFkZXJ9IHs6dmFyLXN5bXMgW3NvdXJjZS1mbiBJR2V0RXJyb3IgSUphdmFTY3JpcHRFbnYgLXNldHVwIG1heWJlLWluc3RhbGwtbnBtLWRlcHMgZG9jICpjbGpzLXZlcmJvc2UqIG5zLT5pbnB1dCByZXBsLW9wdGlvbnMgaW5pdGlhbC1wcm9tcHQgbG9hZCBJUmVwbEVudk9wdGlvbnMgc3BlY2lhbC1kb2MtbWFwICpyZXBsLW9wdHMqIElQcmludFN0YWNrdHJhY2UgbG9hZC1zdHJlYW0gY29tcGlsYWJsZT8gSVBhcnNlU3RhY2t0cmFjZSBmaW5kLWRvYyByZXBsLWNhdWdodCAtcGFyc2UtZXJyb3Iga25vd24tcmVwbC1vcHRzIGV2YWx1YXRlIGRpciByZXBsLXRpdGxlIC1wYXJzZS1zdGFja3RyYWNlIHBzdCBucy1pbmZvIGZpbGUtZGlzcGxheSAtbG9hZCAtcHJpbnQtc3RhY2t0cmFjZSByZXBsLXF1aXQtcHJvbXB0IHJlYWQtc291cmNlLW1hcCByZXBsKiBqcy1zcmMtPmNsanMtc3JjIHJlcGwtcmVhZCB0ZWFyLWRvd24gZGVjb3JhdGUtc3BlY3Mgc2tpcC1pZi1lb2wgcmVwbC1uaWw/IC1ldmFsdWF0ZSAtcmVwbC1vcHRpb25zIGFuYWx5emUtc291cmNlICpyZXBsLWVudiogc291cmNlIHJlcGwtc3BlY2lhbC1kb2MtbWFwIC10ZWFyLWRvd24gLWdldC1lcnJvciBhZGQtdXJsIHNraXAtd2hpdGVzcGFjZSBzZXR1cCBwcmludC1tYXBwZWQtc3RhY2t0cmFjZSBydW4taW5pdHMgbG9hZC1uYW1lc3BhY2UgbG9hZC1maWxlIG1hcHBlZC1zdGFja3RyYWNlIGV2YWx1YXRlLWZvcm0gZGVtdW5nZSBleC1zdHIgZXZhbC1jbGpzIHJlcGwgZGVmYXVsdC1zcGVjaWFsLWZucyByZXBsLXByb21wdCBJUGFyc2VFcnJvciBleC10cmlhZ2UgYXByb3Bvc10sIDp0eXBlIDpjbGosIDpzeW0gY2xqcy5yZXBsfSB7OnZhci1zeW1zIFtjb25zdHJhaW4tb3JkZXIgc2VuZC1mb3ItZXZhbCBicm93c2VyLWV2YWwgcmVwbC1lbnYqIG91dHMgbG9jayBzZXJ2ZSBkZWZhdWx0LWluZGV4IGFkZC1pbi1vcmRlciBzZW5kLXN0YXRpYyBsb2FkLWphdmFzY3JpcHQgZXMgYnJvd3Nlci1zdGF0ZSAtbWFpbiByZXBsLWVudiBzZW5kLXJlcGwtY2xpZW50LXBhZ2UgcnVuLWluLW9yZGVyIGhhbmRsZS1wb3N0IHNldHVwIG9yZGVyaW5nIHJlcGwtY2xpZW50LWpzIG1hcC0+QnJvd3NlckVudiBtaW1lLXR5cGUtPmVuY29kaW5nIGV4dC0+bWltZS10eXBlIC0+QnJvd3NlckVudiB0aHJlYWQtbmFtZV0sIDp0eXBlIDpjbGosIDpzeW0gY2xqcy5yZXBsLmJyb3dzZXJ9IHs6dmFyLXN5bXMgW3JlcGwtZW52XSwgOnR5cGUgOmNsaiwgOnN5bSBjbGpzLnJlcGwuZmlnd2hlZWx9IHs6dmFyLXN5bXMgW2Rpc3BhdGNoLW9uIGNvbm5lY3Rpb24gbG9jayByZWFkLWdldCByZWFkLWhlYWRlcnMgcmVhZC1yZXF1ZXN0IHNlbmQtNDA0IHJlYWQtcG9zdCBwYXJzZS1oZWFkZXJzIHNldC1jb25uZWN0aW9uIHByb21pc2VxIGNvbm5xIHN0YXJ0IHNlbmQtYW5kLWNsb3NlIGhhbmRsZXJzIHN0YXRlIGd6aXAgc3RvcCBwYXJzZS1maWxlLXBhcnRzXSwgOnR5cGUgOmNsaiwgOnN5bSBjbGpzLnJlcGwuc2VydmVyfSB7OnZhci1zeW1zIFt1cGRhdGUtcmVzdWx0IGVuY29kZSBpbnZlcnQtcmV2ZXJzZS1tYXAgcmVsYXRpdml6ZS1wYXRoIGRlY29kZSBzZWctPm1hcCBzb3VyY2UtY29tcGFyZSBkZWNvZGUtcmV2ZXJzZSBsaW5lcy0+c2VncyBtZXJnZS1zb3VyY2UtbWFwcyB1cGRhdGUtcmV2ZXJzZS1yZXN1bHQgaW5kZXhlZC1zb3VyY2VzIGVuY29kZSogc2VnLWNvbWJpbmVdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsanMuc291cmNlLW1hcH0gezp2YXItc3ltcyBbdXBkYXRlLXJlc3VsdCBlbmNvZGUgaW52ZXJ0LXJldmVyc2UtbWFwIGRlY29kZSBzZWctPm1hcCBzb3VyY2UtY29tcGFyZSBkZWNvZGUtcmV2ZXJzZSBsaW5lcy0+c2VncyBtZXJnZS1zb3VyY2UtbWFwcyB1cGRhdGUtcmV2ZXJzZS1yZXN1bHQgaW5kZXhlZC1zb3VyY2VzIHNlZy1jb21iaW5lXSwgOnR5cGUgOmNsanMsIDpzeW0gY2xqcy5zb3VyY2UtbWFwfSB7OnZhci1zeW1zIFtjaGFyczY0IGVuY29kZSBpbnQtPmNoYXIgZGVjb2RlIGNoYXItPmludF0sIDp0eXBlIDpjbGosIDpzeW0gY2xqcy5zb3VyY2UtbWFwLmJhc2U2NH0gezp2YXItc3ltcyBbY2hhcnM2NCBjaGFyLT5pbnQgaW50LT5jaGFyIGVuY29kZSBkZWNvZGVdLCA6dHlwZSA6Y2xqcywgOnN5bSBjbGpzLnNvdXJjZS1tYXAuYmFzZTY0fSB7OnZhci1zeW1zIFtlbmNvZGUtdmFsIGVuY29kZSB2bHEtY29udGludWF0aW9uLWJpdCB2bHEtYmFzZS1tYXNrIGJpdC1zaGlmdC1yaWdodC16ZXJvLWZpbGwgZGVjb2RlIHZscS1iYXNlLXNoaWZ0IGZyb20tdmxxLXNpZ25lZCB0by12bHEtc2lnbmVkIHZscS1iYXNlXSwgOnR5cGUgOmNsaiwgOnN5bSBjbGpzLnNvdXJjZS1tYXAuYmFzZTY0LXZscX0gezp2YXItc3ltcyBbZW5jb2RlLXZhbCBlbmNvZGUgdmxxLWNvbnRpbnVhdGlvbi1iaXQgdmxxLWJhc2UtbWFzayBkZWNvZGUgdmxxLWJhc2Utc2hpZnQgZnJvbS12bHEtc2lnbmVkIHRvLXZscS1zaWduZWQgdmxxLWJhc2VdLCA6dHlwZSA6Y2xqcywgOnN5bSBjbGpzLnNvdXJjZS1tYXAuYmFzZTY0LXZscX0gezp2YXItc3ltcyBbJiBmc3BlYyBldmVyeSBrZXlzKiBzcGVjZWQtdmFycyByZWdpc3RyeS1yZWYgbmlsYWJsZSBjb2xsLW9mIGNhdCAqIGV2ZXJ5LWt2IGludC1pbiBhbHQgb3IgZXhlcmNpc2UtZm4gbXVsdGktc3BlYyB0dXBsZSBhc3NlcnQgPyBtZXJnZSBjb25mb3JtZXIgc3BlYyBrZXlzICsgbWFwLW9mIGRvdWJsZS1pbiBpbnN0LWluIGFuZCBkZWYgZmRlZl0sIDp0eXBlIDpjbGosIDpzeW0gY2xqcy5zcGVjLmFscGhhfSB7OnZhci1zeW1zIFtmb3JtIG5pbGFibGUtaW1wbCAqcmVjdXJzaW9uLWxpbWl0KiAqY29sbC1lcnJvci1saW1pdCogZXhwbGFpbi1wcmludGVyIFNwZWNpemUgYWx0LWltcGwgZGVmLWltcGwgKmV4cGxhaW4tb3V0KiByZWdleC1zcGVjLWltcGwgbWVyZ2Utc3BlYy1pbXBsIGV4cGxhaW4tZGF0YSogTUFYX0lOVCBjaGVjay1hc3NlcnRzIGFzc2VydCogaW5zdC1pbi1yYW5nZT8gYW5kLXNwZWMtaW1wbCBkZXNjcmliZSogbWFwLXNwZWMtaW1wbCBleHBsYWluIHdpdGgtZ2VuKiBvci1zcGVjLWltcGwgKmZzcGVjLWl0ZXJhdGlvbnMqIFNwZWMgdW5mb3JtIHZhbGlkPyBnZW4gbm9uY29uZm9ybWluZyB1bmZvcm0qIGFiYnJldiByZWdleD8gaW50LWluLXJhbmdlPyBzcGVjPyByZWdpc3RyeSByZXAraW1wbCBleGVyY2lzZSBleHBsYWluLWRhdGEgdHVwbGUtaW1wbCBtdWx0aS1zcGVjLWltcGwgY29uZm9ybSBnZW4qIGZzcGVjLWltcGwgKmNvbGwtY2hlY2stbGltaXQqIGdldC1zcGVjIGV2ZXJ5LWltcGwgc3BlYy1pbXBsIGludmFsaWQ/IGFtcC1pbXBsIGNhdC1pbXBsIGV4cGxhaW4tc3RyICpjb21waWxlLWFzc2VydHMqIHdpdGgtZ2VuIGNvbmZvcm0qIGNoZWNrLWFzc2VydHM/IHJlcC1pbXBsIGRlc2NyaWJlIGV4cGxhaW4tb3V0IHNwZWNpemUqIG1heWJlLWltcGwgZXhwbGFpbipdLCA6dHlwZSA6Y2xqcywgOnN5bSBjbGpzLnNwZWMuYWxwaGF9IHs6dmFyLXN5bXMgW2xhenktcHJpbSBkZWxheSBsYXp5LXByaW1zIGR5bmFsb2FkIGxhenktY29tYmluYXRvcnMgbGF6eS1jb21iaW5hdG9yXSwgOnR5cGUgOmNsaiwgOnN5bSBjbGpzLnNwZWMuZ2VuLmFscGhhfSB7OnZhci1zeW1zIFtxdWljay1jaGVjayBmb3ItYWxsKiBkZWxheS1pbXBsIGNhdCBnZW4tZm9yLXByZWRdLCA6dHlwZSA6Y2xqcywgOnN5bSBjbGpzLnNwZWMuZ2VuLmFscGhhfSB7OnZhci1zeW1zIFtvdXRwdXQtZGlyZWN0b3J5IGVuZHMtd2l0aD8gc3RhcnRzLXdpdGg/IHJlbW92ZS1leHQgc3RyaW5nLT5yZWdleCBzYWZhcmktc3QtZWwtPmZyYW1lIG1hcHBlZC1mcmFtZSBmaXJlZm94LXN0LWVsLT5mcmFtZSBmaXJlZm94LWNsZWFuLWZ1bmN0aW9uIGNocm9tZS1zdC1lbC0+ZnJhbWUgbWFwcGVkLWxpbmUtY29sdW1uLWNhbGwgbWFwcGVkLXN0YWNrdHJhY2Utc3RyIG1hcHBlZC1zdGFja3RyYWNlIHBhcnNlLXN0YWNrdHJhY2UgcGFyc2UtaW50IHBhcnNlLWZpbGUgcGFyc2UtZmlsZS1saW5lLWNvbHVtbl0sIDp0eXBlIDpjbGosIDpzeW0gY2xqcy5zdGFja3RyYWNlfSB7OnZhci1zeW1zIFthc3NlcnQtYXJnc10sIDp0eXBlIDpjbGosIDpzeW0gY2xqcy5zdXBwb3J0fSB7OnZhci1zeW1zIFtyZWFkLXV1aWQgdmFsaWQtanMtbGl0ZXJhbC1rZXk/IHJlYWQtaW5zdCByZWFkLXF1ZXVlICpjbGpzLWRhdGEtcmVhZGVycyogLT5KU1ZhbHVlIHJlYWQtanNdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsanMudGFnZ2VkLWxpdGVyYWxzfSB7OnZhci1zeW1zIFtyZWFkLXF1ZXVlIHZhbGlkLWpzLWxpdGVyYWwta2V5PyByZWFkLWpzICpjbGpzLWRhdGEtcmVhZGVycypdLCA6dHlwZSA6Y2xqcywgOnN5bSBjbGpzLnRhZ2dlZC1saXRlcmFsc30gezp2YXItc3ltcyBbcmVhZCtzdHJpbmcgYm9vbD8gKnN1cHByZXNzLXJlYWQqICpkZWZhdWx0LWRhdGEtcmVhZGVyLWZuKiByZWFkIGRlZmF1bHQtZGF0YS1yZWFkZXJzICpkYXRhLXJlYWRlcnMqICpyZWFkLWRlbGltKiByZXNvbHZlLXN5bWJvbCAqYWxpYXMtbWFwKiByZWFkLXJlZ2V4IHNiIHJlYWQtc3RyaW5nIG1hcC1mdW5jXSwgOnR5cGUgOmNsanMsIDpzeW0gY2xqcy50b29scy5yZWFkZXJ9IHs6dmFyLXN5bXMgW3JlYWQgcmVhZC1zdHJpbmddLCA6dHlwZSA6Y2xqcywgOnN5bSBjbGpzLnRvb2xzLnJlYWRlci5lZG59IHs6dmFyLXN5bXMgW21hdGNoLW51bWJlciBza2lwLWxpbmUgaW50LXBhdHRlcm4gcmVhZC1jb21tZW50IHBhcnNlLXN5bWJvbCBudW1iZXItbGl0ZXJhbD8gcmVhZC1wYXN0IGZsb2F0LXBhdHRlcm4gbWF0Y2hlcz8gdGhyb3dpbmctcmVhZGVyIHJhdGlvLXBhdHRlcm5dLCA6dHlwZSA6Y2xqcywgOnN5bSBjbGpzLnRvb2xzLnJlYWRlci5pbXBsLmNvbW1vbnN9IHs6dmFyLXN5bXMgW3Rocm93LWJhZC1kaXNwYXRjaCB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtZXNjYXBlIHRocm93LWR1cC1rZXlzIHRocm93LWJhZC1ucyB0aHJvdy11bmtub3duLXJlYWRlci10YWcgdGhyb3ctZW9mLWF0LWRpc3BhdGNoIHRocm93LWJhZC1tZXRhZGF0YS10YXJnZXQgdGhyb3ctaW52YWxpZC1udW1iZXIgcmVhZGVyLWVycm9yIHRocm93LWludmFsaWQtdW5pY29kZS1saXRlcmFsIHRocm93LW5zLW1hcC1uby1tYXAgdGhyb3ctdW5zdXBwb3J0ZWQtY2hhcmFjdGVyIHRocm93LWZlYXR1cmUtbm90LWtleXdvcmQgdGhyb3ctZW9mLWRlbGltaXRlZCB0aHJvdy1lb2YtaW4tY2hhcmFjdGVyIHRocm93LWJhZC1jaGFyIGVvZi1lcnJvciB0aHJvdy1iYWQtbWV0YWRhdGEgdGhyb3ctZW9mLXJlYWRpbmcgdGhyb3ctZW9mLWVycm9yIGlsbGVnYWwtYXJnLWVycm9yIHRocm93LWludmFsaWQtb2N0YWwtbGVuIHRocm93LWludmFsaWQtdW5pY29kZS1kaWdpdCB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtZGlnaXQtaW4tdG9rZW4gdGhyb3ctaW52YWxpZC11bmljb2RlLWxlbiB0aHJvdy1zaW5nbGUtY29sb24gdGhyb3ctb2RkLW1hcCB0aHJvdy1iYWQtb2N0YWwtbnVtYmVyIHRocm93LWJhZC1yZWFkZXItdGFnIHRocm93LXVubWF0Y2gtZGVsaW1pdGVyIHRocm93LWludmFsaWQtY2hhcmFjdGVyLWxpdGVyYWwgdGhyb3ctaW52YWxpZC11bmljb2RlLWNoYXIgdGhyb3ctYmFkLWVzY2FwZS1jaGFyIHRocm93LW5vLWRpc3BhdGNoIHRocm93LWVvZi1hdC1zdGFydCB0aHJvdy1pbnZhbGlkXSwgOnR5cGUgOmNsanMsIDpzeW0gY2xqcy50b29scy5yZWFkZXIuaW1wbC5lcnJvcnN9IHs6dmFyLXN5bXMgW2luc3BlY3RdLCA6dHlwZSA6Y2xqcywgOnN5bSBjbGpzLnRvb2xzLnJlYWRlci5pbXBsLmluc3BlY3R9IHs6dmFyLXN5bXMgW3JlYWRlci1jb25kaXRpb25hbCB3aGl0ZXNwYWNlPyBjaGFyLWNvZGUgbGFzdC1pZCBjaGFyIG51bWVyaWM/IHNlY29uZCcgZGVzdWdhci1tZXRhIG5leHQtaWQgZXgtaW5mbz8gcmVhZGVyLWNvbmRpdGlvbmFsPyBuZXdsaW5lPyBuYW1lc3BhY2Uta2V5cyB3cy1yeF0sIDp0eXBlIDpjbGpzLCA6c3ltIGNsanMudG9vbHMucmVhZGVyLmltcGwudXRpbHN9IHs6dmFyLXN5bXMgW2xvZy1zb3VyY2VdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsanMudG9vbHMucmVhZGVyLnJlYWRlci10eXBlc30gezp2YXItc3ltcyBbaW5kZXhpbmctcHVzaC1iYWNrLXJlYWRlciBsb2ctc291cmNlKiBtZXJnZS1tZXRhIFJlYWRlciBzb3VyY2UtbG9nZ2luZy1wdXNoLWJhY2stcmVhZGVyIHVucmVhZCBwZWVrLWNoYXIgSVB1c2hiYWNrUmVhZGVyIGluZGV4aW5nLXJlYWRlcj8gc3RyaW5nLXJlYWRlciByZWFkLWNoYXIgZ2V0LWNvbHVtbi1udW1iZXIgZ2V0LWZpbGUtbmFtZSByZWFkLWxpbmUgc3RyaW5nLXB1c2gtYmFjay1yZWFkZXIgbGluZS1zdGFydD8gc291cmNlLWxvZ2dpbmctcmVhZGVyPyBJbmRleGluZ1JlYWRlciBub2RlLXJlYWRhYmxlLXB1c2gtYmFjay1yZWFkZXIgZ2V0LWxpbmUtbnVtYmVyXSwgOnR5cGUgOmNsanMsIDpzeW0gY2xqcy50b29scy5yZWFkZXIucmVhZGVyLXR5cGVzfSB7OnZhci1zeW1zIFtvdXRwdXQtZGlyZWN0b3J5IHdpbmRvd3M/ICpjbG9qdXJlc2NyaXB0LXZlcnNpb24qIHNwbGl0LXBhdGhzIGJvb2xlYW4/IGZpbGUtb3ItcmVzb3VyY2UgZGlzdGluY3QtYnkgcGF0aCBub3JtYWxpemUtcGF0aCBjbGpzLWJ1aWx0LWRlcD8gY2xvanVyZXNjcmlwdC12ZXJzaW9uIGNvbXBpbGF0aW9uLWVycm9yIGV4dCBjb250ZW50LXNoYSB2YWxpZC1qcy1pZC1zdGFydD8gbnMtPnJlbHBhdGggZ2V0LW5hbWUgZGVidWctcHJuLW11dGV4IG1hcC1tZXJnZSB0by10YXJnZXQtZmlsZSBta2RpcnMgY29tcGlsZS1pZiBzeW50aGV0aWMtdmVyc2lvbj8gdXJsPyBtb2R1bGUtZmlsZS1zZXEgY29uanVuY3Rpb24tc3RyIHN1Z2dlc3Rpb24gcGF0aC1zZXEgY29tcGlsZWQtYnktdmVyc2lvbiBtZWFzdXJlIG5zLT5zb3VyY2UgbGFzdC1tb2RpZmllZCBkZWJ1Zy1wcm4gZmlsZT8gdW5rbm93bi1vcHRzIGxldmVuc2h0ZWluLWRpc3RhbmNlIGZpbGVuYW1lIHRvLXBhdGggdG9wby1zb3J0IG11bmdlLXBhdGggYnVpbGQtb3B0aW9ucyBjb21waWxlLXdoZW4gY2hhbmdlZD8gcmVsYXRpdmUtbmFtZV0sIDp0eXBlIDpjbGosIDpzeW0gY2xqcy51dGlsfSB7OnZhci1zeW1zIFtwcmltaXRpdmVzLWNsYXNzbmFtZXMgKycgZGVjaW1hbD8gcmVzdGFydC1hZ2VudCBzb3J0LWJ5IG1hY3JvZXhwYW5kIGVuc3VyZSBjaHVuay1maXJzdCBlZHVjdGlvbiB0cmVlLXNlcSB1bmNoZWNrZWQtcmVtYWluZGVyLWludCBzZXEgcmVkdWNlIHdoZW4tZmlyc3QgZmluZC1ucyBnZXQtdGhyZWFkLWJpbmRpbmdzIGNvbnRhaW5zPyBldmVyeT8gcHJveHktbWFwcGluZ3Mga2VlcC1pbmRleGVkIGNvbmQtPj4gc3VicyByZWYtbWluLWhpc3Rvcnkgc2V0IHRha2UtbGFzdCBiaXQtc2V0IHJlYWRlci1jb25kaXRpb25hbCBnZW4tY2xhc3MgcXVhbGlmaWVkLWtleXdvcmQ/IHdoaWxlIC0+RWR1Y3Rpb24gYnV0bGFzdCBzYXRpc2ZpZXM/IGxpbmUtc2VxIHVuY2hlY2tlZC1zdWJ0cmFjdC1pbnQgKnByaW50LW5hbWVzcGFjZS1tYXBzKiB0YWtlLW50aCBmaXJzdCByZS1ncm91cHMgc2VxPyBkZWMnIG5zLXVubWFwIHByaW50bG4tc3RyIHdpdGgtYmluZGluZ3MqIGluc3QtbXMgaXRlcmF0b3Itc2VxIGl0ZXJhdGUgc2x1cnAgbmV3bGluZSBzaG9ydC1hcnJheSBmbj8gZG9hbGwgcHJlZmVycyBlbnVtZXJhdGlvbi1zZXEgZGVkdXBlIGRpc3NvYyBhdG9tIGltcG9ydCBiaXQtc2hpZnQtcmlnaHQgcHJpbnQtbWV0aG9kIHBlZWsgYWdldCBwdmFsdWVzIGJvdW5kLWZuIHZzd2FwISBsYXN0IHByIG5hbWVzcGFjZSBwdXNoLXRocmVhZC1iaW5kaW5ncyBiYXNlcyA9IHJlYWQrc3RyaW5nIGRvc3luYyByZW1vdmUtbnMgdGFrZSB2ZWN0b3I/IHRocmVhZC1ib3VuZD8gc2VuZC12aWEgYm9vbGVhbiBiaXQtc2hpZnQtbGVmdCBhbnk/IGZpbmQtdmFyIHJhbmQtaW50IGFjbG9uZSBQcmludFdyaXRlci1vbiB2cmVzZXQhIGNodW5rIGRlYyBmdXR1cmUtY2FsbCByZXN1bHRzZXQtc2VxIHN0cnVjdCBtYXAganV4dCBucy1wdWJsaWNzIDwgKnNvdXJjZS1wYXRoKiB3aXRoLWxvYWRpbmctY29udGV4dCB0ZXN0IHJlc3QgZXgtZGF0YSBjb21waWxlIGlzYT8gYm9vbGVhbj8gLi4gbXVuZ2UgZGVsYXkgc2V0LWVycm9yLW1vZGUhIHJlLXNlcSBjaGFyPyBtYWtlLWhpZXJhcmNoeSBzZXQtYWdlbnQtc2VuZC1leGVjdXRvciEgc3dhcC12YWxzISBrZWVwIGNoYXIgbWFwY2F0IHVuY2hlY2tlZC1sb25nIGFzZXQtbG9uZyBzb21lPyB1bmNoZWNrZWQtbmVnYXRlIHJlbW92ZS10YXAgZ2VuLWludGVyZmFjZSAqY29tbWFuZC1saW5lLWFyZ3MqIHJldmVyc2UgaW5zdD8gcmFuZ2Ugc29ydCAtY2FjaGUtcHJvdG9jb2wtZm4gdW5jaGVja2VkLWluYy1pbnQgbWFwLWluZGV4ZWQgd2l0aC1iaW5kaW5ncyByYW5kLW50aCBjb21wIGF3YWl0IHNwaXQgZnV0dXJlLWRvbmU/ICpyZWFkLWV2YWwqIGRvcnVuIHNpbXBsZS1zeW1ib2w/IGRpc2ogKjIgZXZhbCBjb25zIHJlZmVyIHByaW50LWR1cCAtcmVzZXQtbWV0aG9kcyBmbG9hdHMgcG9zPyBmbmlsIG1lcmdlLXdpdGggbnRocmVzdCBsb2FkIGlmLW5vdCAqdmVyYm9zZS1kZWZyZWNvcmRzKiBzZXF1ZW50aWFsPyAqcHJpbnQtbGV2ZWwqIHNodWZmbGUgYm9vbGVhbi1hcnJheSBmaW5kIGFsZW5ndGggYml0LXhvciBkZWxpdmVyIGRvc2VxIHVuc2lnbmVkLWJpdC1zaGlmdC1yaWdodCBuZWc/IHZhci1zZXQgdW5jaGVja2VkLWZsb2F0IHBtYXAgZXJyb3ItbW9kZSBudW0gcmVkdWNlZD8gZGlzaiEgZmxvYXQ/IGFzZXQtZmxvYXQgZGVmdHlwZSBiZWFuIGJvb2xlYW5zIG5zLXVuYWxpYXMgd2hlbi1sZXQgaW50LWFycmF5IHNldD8gaW5jJyBjYXQgU3RhY2tUcmFjZUVsZW1lbnQtPnZlYyAqc3VwcHJlc3MtcmVhZCogZmx1c2ggdGFrZS13aGlsZSB2YXJ5LW1ldGEgPD0gYWx0ZXIgLScgaWYtc29tZSBjb25qISByZXBlYXRlZGx5IHppcG1hcCByZXNldC12YWxzISBhbHRlci12YXItcm9vdCBiaWdpbnRlZ2VyIHJlbW92ZSAqIHJlLXBhdHRlcm4gbWluIHBvcCEgY2h1bmstYXBwZW5kIHBybi1zdHIgd2l0aC1wcmVjaXNpb24gZm9ybWF0IHJldmVyc2libGU/IHNodXRkb3duLWFnZW50cyBjb25qIGJvdW5kPyB0cmFuc2R1Y2UgbGF6eS1zZXEgKnByaW50LWxlbmd0aCogKmZpbGUqIGNvbXBhcmUtYW5kLXNldCEgKnVzZS1jb250ZXh0LWNsYXNzbG9hZGVyKiBhd2FpdDEgbGV0IHJlZi1zZXQgcG9wLXRocmVhZC1iaW5kaW5ncyBpbnRlcmxlYXZlIHByaW50ZiBtYXA/IC0+IGRlZnN0cnVjdCAqZXJyKiBnZXQgZG90byBpZGVudGl0eSBpbnRvIGFyZWR1Y2UgbG9uZyBkb3VibGUgdm9sYXRpbGU/IGRlZmlubGluZSBuZmlyc3QgbWV0YSBmaW5kLXByb3RvY29sLWltcGwgYml0LWFuZC1ub3QgKmRlZmF1bHQtZGF0YS1yZWFkZXItZm4qIHZhcj8gbWV0aG9kLXNpZyB1bmNoZWNrZWQtYWRkLWludCB1bnF1b3RlLXNwbGljaW5nIGhhc2gtb3JkZXJlZC1jb2xsIGZ1dHVyZSByZXNldC1tZXRhISBjeWNsZSBmbiBzZXF1ZSBlbXB0eT8gc2hvcnQgZGVmaW50ZXJmYWNlIGFkZC10YXAgZmlsdGVydiBoYXNoIHF1b3QgbnMtYWxpYXNlcyByZWFkIHVuY2hlY2tlZC1kb3VibGUga2V5IGxvbmdzIG5vdD0gc3RyaW5nPyB1cmk/IGFzZXQtZG91YmxlIHVuY2hlY2tlZC1tdWx0aXBseS1pbnQgY2h1bmstcmVzdCBwY2FsbHMgKmFsbG93LXVucmVzb2x2ZWQtdmFycyogcmVtb3ZlLWFsbC1tZXRob2RzIG5zLXJlc29sdmUgYXMtPiBhc2V0LWJvb2xlYW4gdHJhbXBvbGluZSBkb3VibGU/IHdoZW4tbm90ICoxIHZlYyAqcHJpbnQtbWV0YSogd2hlbiBpbnQgbWFwLWVudHJ5PyBucy1yZWZlcnMgcmFuZCBzZWNvbmQgdmVjdG9yLW9mIGhhc2gtY29tYmluZSA+IHJlcGxhY2UgaW50PyBhc3NvY2lhdGl2ZT8gdW5jaGVja2VkLWludCBzZXQtZXJyb3ItaGFuZGxlciEgaW5zdC1tcyoga2V5d29yZD8gZm9yY2UgYm91bmQtZm4qIG5hbWVzcGFjZS1tdW5nZSBncm91cC1ieSBwcm4gZXh0ZW5kIHVuY2hlY2tlZC1tdWx0aXBseSBzb21lLT4+IGRlZmF1bHQtZGF0YS1yZWFkZXJzIC0+VmVjU2VxIGV2ZW4/IHVuY2hlY2tlZC1kZWMgSW5zdCB0YWdnZWQtbGl0ZXJhbD8gZG91YmxlLWFycmF5IGluLW5zIGNyZWF0ZS1ucyByZS1tYXRjaGVyIGRlZm4gcmVmIGJpZ2ludCBleHRlbmRzPyBwcm9taXNlIGFzZXQtY2hhciByc2VxIGV4LWNhdXNlIGNvbnN0cnVjdC1wcm94eSBhZ2VudC1lcnJvcnMgKmNvbXBpbGUtZmlsZXMqIGV4LW1lc3NhZ2UgKm1hdGgtY29udGV4dCogZmxvYXQgcHItc3RyIGNvbmNhdCBhc2V0LXNob3J0IHNldC1hZ2VudC1zZW5kLW9mZi1leGVjdXRvciEgbnMgc3ltYm9sIHRvLWFycmF5LTJkIG1vZCBhbWFwIHBvcCB1c2UgdW5xdW90ZSBkZWNsYXJlIGRpc3NvYyEgcmVkdWN0aW9ucyBhc2V0LWJ5dGUgaW5kZXhlZD8gcmVmLWhpc3RvcnktY291bnQgLSBhc3NvYyEgaGFzaC1zZXQgcmVkdWNlLWt2IG9yIGNhc3QgcmVzZXQhIG5hbWUgZmZpcnN0IHNvcnRlZC1zZXQgY291bnRlZD8gYnl0ZS1hcnJheSB0YWdnZWQtbGl0ZXJhbCBwcmludGxuIGV4dGVuZC10eXBlIG1hY3JvZXhwYW5kLTEgYXNzb2MtaW4gY2hhci1uYW1lLXN0cmluZyBiaXQtdGVzdCBkZWZtZXRob2QgcmVxdWlyaW5nLXJlc29sdmUgRU1QVFktTk9ERSB0aW1lIG1lbW9pemUgYWx0ZXItbWV0YSEgZnV0dXJlPyB6ZXJvPyBzaW1wbGUta2V5d29yZD8gcmVxdWlyZSB1bmNoZWNrZWQtZGVjLWludCBwZXJzaXN0ZW50ISBubmV4dCBhZGQtd2F0Y2ggbm90LWV2ZXJ5PyBjbGFzcz8gcmVtIGFnZW50LWVycm9yIHNvbWUgZnV0dXJlLWNhbmNlbGxlZD8gbWVtZm4gbmVnLWludD8gc3RydWN0LW1hcCBkcm9wICpkYXRhLXJlYWRlcnMqIG50aCBzb3J0ZWQ/IG5pbD8gZXh0ZW5kLXByb3RvY29sIHNwbGl0LWF0ICplIGxvYWQtcmVhZGVyIHJhbmRvbS1zYW1wbGUgY29uZC0+IGRvdGltZXMgc2VsZWN0LWtleXMgYml0LWFuZCBib3VuZGVkLWNvdW50IHVwZGF0ZSBsaXN0KiByZWlmeSB1cGRhdGUtaW4gcHJlZmVyLW1ldGhvZCBhc2V0LWludCAqY2xvanVyZS12ZXJzaW9uKiBlbnN1cmUtcmVkdWNlZCAqJyBpbnN0YW5jZT8gd2l0aC1vcGVuIG1peC1jb2xsZWN0aW9uLWhhc2ggcmUtZmluZCBydW4hIHZhbCBkZWZvbmNlIHVuY2hlY2tlZC1hZGQgbG9hZGVkLWxpYnMgLT5WZWMgYnl0ZXM/IG5vdCB3aXRoLW1ldGEgdW5yZWR1Y2VkIHRoZS1ucyByZWNvcmQ/IHR5cGUgaWRlbnRpY2FsPyB1bmNoZWNrZWQtZGl2aWRlLWludCBucy1uYW1lIG1heC1rZXkgKnVuY2hlY2tlZC1tYXRoKiBkZWZuLSAqb3V0KiBmaWxlLXNlcSBhZ2VudCBucy1tYXAgc2V0LXZhbGlkYXRvciEgaWRlbnQ/IGRlZnByb3RvY29sIHN3YXAhIHZhbHMgdW5jaGVja2VkLXN1YnRyYWN0IHRhcD4gKndhcm4tb24tcmVmbGVjdGlvbiogc29ydGVkLXNldC1ieSBzeW5jIHF1YWxpZmllZC1pZGVudD8gYXNzZXJ0ICpjb21waWxlLXBhdGgqIHRydWU/IHJlbGVhc2UtcGVuZGluZy1zZW5kcyBwcmludCBlbXB0eSByZW1vdmUtbWV0aG9kICppbiogcHJpbnQtY3RvciBsZXRmbiB2b2xhdGlsZSEgLyByZWFkLWxpbmUgcmVhZGVyLWNvbmRpdGlvbmFsPyBiaXQtb3IgY2xlYXItYWdlbnQtZXJyb3JzIHZlY3RvciBwcm94eS1zdXBlciA+PSBkcm9wLWxhc3Qgbm90LWVtcHR5IGRpc3RpbmN0IHBhcnRpdGlvbiBsb29wIGFkZC1jbGFzc3BhdGggYml0LWZsaXAgbG9uZy1hcnJheSBkZXNjZW5kYW50cyBtZXJnZSBhY2Nlc3NvciBpbnRlZ2VyPyBtYXB2IHBhcnRpdGlvbi1hbGwgcGFydGl0aW9uLWJ5IG51bWVyYXRvciBvYmplY3QtYXJyYXkgd2l0aC1vdXQtc3RyIGNvbmRwIGRlcml2ZSBsb2FkLXN0cmluZyBzcGVjaWFsLXN5bWJvbD8gYW5jZXN0b3JzIHN1YnNlcSBlcnJvci1oYW5kbGVyIGdlbnN5bSBjb25kIHJhdGlvPyBkZWxheT8gaW50ZXJuIHByaW50LXNpbXBsZSBmbGF0dGVuIGRvdWJsZXMgaGFsdC13aGVuIHdpdGgtaW4tc3RyIHJlbW92ZS13YXRjaCBleC1pbmZvIGlmbj8gc29tZS0+IG5hdC1pbnQ/IHByb3h5LW5hbWUgbnMtaW50ZXJucyBhbGwtbnMgZmluZC1wcm90b2NvbC1tZXRob2Qgc3VidmVjIGZvciBiaW5kaW5nIHBhcnRpYWwgY2h1bmtlZC1zZXE/IGZpbmQta2V5d29yZCByZXBsaWNhdGUgbWluLWtleSByZWR1Y2VkIGNoYXItZXNjYXBlLXN0cmluZyByZS1tYXRjaGVzIGFycmF5LW1hcCB1bmNoZWNrZWQtYnl0ZSB3aXRoLWxvY2FsLXZhcnMgbnMtaW1wb3J0cyBzZW5kLW9mZiBkZWZtYWNybyBldmVyeS1wcmVkIGtleXMgcmF0aW9uYWxpemUgbG9hZC1maWxlIGRpc3RpbmN0PyBwb3MtaW50PyBleHRlbmRlcnMgdW5jaGVja2VkLXNob3J0IG1ldGhvZHMgb2RkPyAtPkFycmF5Q2h1bmsgZmxvYXQtYXJyYXkgKjMgYWxpYXMgZnJlcXVlbmNpZXMgcmVhZC1zdHJpbmcgcHJveHkgcnN1YnNlcSBpbmMgZ2V0LW1ldGhvZCB3aXRoLXJlZGVmcyB1dWlkPyBiaXQtY2xlYXIgZmlsdGVyIGxvY2tpbmcgbGlzdCArIHNwbGl0LXdpdGggYXNldCAtPlZlY05vZGUga2V5d29yZCAqbnMqIGRlc3RydWN0dXJlICphc3NlcnQqIGRlZm11bHRpIGNoYXJzIHN0ciBuZXh0IGhhc2gtbWFwIGlmLWxldCB1bmRlcml2ZSByZWYtbWF4LWhpc3RvcnkgVGhyb3dhYmxlLT5tYXAgZmFsc2U/ICpwcmludC1yZWFkYWJseSogaW50cyBjbGFzcyBzb21lLWZuIGNhc2UgKmZsdXNoLW9uLW5ld2xpbmUqIHRvLWFycmF5IGJpZ2RlYyBsaXN0PyBzaW1wbGUtaWRlbnQ/IGJpdC1ub3QgaW8hIHhtbC1zZXEgYnl0ZSBtYXggPT0gKmFnZW50KiBsYXp5LWNhdCBjb21tZW50IHBhcmVudHMgY291bnQgc3VwZXJzICpmbi1sb2FkZXIqIHNvcnRlZC1tYXAtYnkgYXBwbHkgaW50ZXJwb3NlIGRlcmVmIGFzc29jIHJhdGlvbmFsPyB0cmFuc2llbnQgY2xvanVyZS12ZXJzaW9uIGNodW5rLWNvbnMgY29tcGFyYXRvciBzb3J0ZWQtbWFwIHNlbmQgZHJvcC13aGlsZSBwcm94eS1jYWxsLXdpdGgtc3VwZXIgcmVhbGl6ZWQ/IGNoYXItYXJyYXkgcmVzb2x2ZSBjb21wYXJlIGNvbXBsZW1lbnQgKmNvbXBpbGVyLW9wdGlvbnMqICpwcmludC1kdXAqIGRlZnJlY29yZCB3aXRoLXJlZGVmcy1mbiBzZXF1ZW5jZSBjb25zdGFudGx5IGdldC1wcm94eS1jbGFzcyBtYWtlLWFycmF5IHNob3J0cyBjb21wbGV0aW5nIHVwZGF0ZS1wcm94eSB1bmNoZWNrZWQtbmVnYXRlLWludCBoYXNoLXVub3JkZXJlZC1jb2xsIHJlcGVhdCB1bmNoZWNrZWQtaW5jICpyZWFkZXItcmVzb2x2ZXIqIG50aG5leHQgYW5kIGNyZWF0ZS1zdHJ1Y3QgZ2V0LXZhbGlkYXRvciBudW1iZXI/IGF3YWl0LWZvciBjaHVuay1uZXh0IHByaW50LXN0ciBub3QtYW55PyBpbnRvLWFycmF5IHF1YWxpZmllZC1zeW1ib2w/IGluaXQtcHJveHkgY2h1bmstYnVmZmVyIHNlcWFibGU/IHN5bWJvbD8gd2hlbi1zb21lIHVuY2hlY2tlZC1jaGFyIC0+PiBmdXR1cmUtY2FuY2VsIHZhci1nZXQgY29tbXV0ZSBjb2xsPyBnZXQtaW4gZm5leHQgZGVub21pbmF0b3IgYnl0ZXMgcmVmZXItY2xvanVyZV0sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS5jb3JlfSB7OnZhci1zeW1zIFtQdWIgcmVkdWNlIHJlbW92ZT4gdGltZW91dCB1bnN1YiogYWRtaXgqIHVubWl4KiBtaXggcHViIHRha2UgdW5zdWItYWxsKiA8ISBtYXAgTXV4IG1hcGNhdD4gYnVmZmVyIGNsb3NlISBvZmZlciEgY2hhbiBzb2xvLW1vZGUqIHRhcCBnbyBhZG1peCBwcm9taXNlLWNoYW4gdW5pcXVlIG11eGNoKiBzb2xvLW1vZGUgdHJhbnNkdWNlIG9udG8tY2hhbiB0by1jaGFuIGRyb3BwaW5nLWJ1ZmZlciB1bnRhcC1hbGwgaW50byA+ISEgYWx0ISBwaXBlbGluZSBzdWIgZ28tbG9vcCBtYXA+IHBpcGUgdW5taXggZmlsdGVyPCBzdWIqIHJlbW92ZTwgYWx0ISEgdW50YXAqIDwhISB0b2dnbGUgdW50YXAtYWxsKiBzbGlkaW5nLWJ1ZmZlciBwYXJ0aXRpb24gTXVsdCBtZXJnZSBwYXJ0aXRpb24tYnkgdW5zdWItYWxsID4hIHVubWl4LWFsbCogc3BsaXQgdW5taXgtYWxsIGZpbHRlcj4gdGFwKiB1bnRhcCBhbHRzISB1bnN1YiBwb2xsISB0aHJlYWQgbWFwPCBmbi1oYW5kbGVyIGRvLWFsdHMgcGlwZWxpbmUtYmxvY2tpbmcgcGlwZWxpbmUtYXN5bmMgTWl4IHRvZ2dsZSogbXVsdCB0aHJlYWQtY2FsbCBhbHRzISEgbWFwY2F0PCBpb2MtYWx0cyEgdW5ibG9ja2luZy1idWZmZXI/IGRvLWFsdCBwdXQhIHRha2UhXSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLmNvcmUuYXN5bmN9IHs6dmFyLXN5bXMgWy0+UHJvbWlzZUJ1ZmZlciAtPkRyb3BwaW5nQnVmZmVyIGRyb3BwaW5nLWJ1ZmZlciBmaXhlZC1idWZmZXIgLT5GaXhlZEJ1ZmZlciBzbGlkaW5nLWJ1ZmZlciAtPlNsaWRpbmdCdWZmZXIgcHJvbWlzZS1idWZmZXJdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUuY29yZS5hc3luYy5pbXBsLmJ1ZmZlcnN9IHs6dmFyLXN5bXMgW2NsZWFudXAgY2hhbiBib3ggTU1DIGFib3J0IGFzc2VydC11bmxvY2sgLT5NYW55VG9NYW55Q2hhbm5lbF0sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS5jb3JlLmFzeW5jLmltcGwuY2hhbm5lbHN9IHs6dmFyLXN5bXMgW2NvdW50ZWQtdGhyZWFkLWZhY3RvcnkgcHJvY2Vzc29yc10sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS5jb3JlLmFzeW5jLmltcGwuY29uY3VycmVudH0gezp2YXItc3ltcyBbZXhlY3V0b3IgcnVuXSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLmNvcmUuYXN5bmMuaW1wbC5kaXNwYXRjaH0gezp2YXItc3ltcyBbdGhyZWFkLXBvb2wtZXhlY3V0b3JdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUuY29yZS5hc3luYy5pbXBsLmV4ZWMudGhyZWFkcG9vbH0gezp2YXItc3ltcyBbaW5kZXgtc3RhdGUtbWFjaGluZSAtPlBvcFRyeSBFWENFUFRJT04tRlJBTUVTIGJsb2NrLXJlZmVyZW5jZXMgcmVhZHMtZnJvbSBpbmRleC1ibG9jayBtYXAtPkNhc2UgbWFwLT5JbnN0YW5jZUludGVyb3AgYWRkLWJsb2NrIGluc3RydWN0aW9uPyAtPlJhd0NvZGUgbGV0LWJpbmRpbmctdG8tc3NhIG1hcC0+Q29uZEJyIG1hcC0+Q29uc3QgLT5DYWxsIC0+Sm1wIC0+Q29uZEJyIG1hcC0+UHVzaFRyeSBjb3VudC1wZXJzaXN0ZW50LXZhbHVlcyBnZXQtYmluZGluZyBnZW4tcGxhbiAtaXRlbS10by1zc2EgLT5DYXNlIGdldC1ibG9jayBpZC1mb3ItaW5zdCBpbmRleC1pbnN0cnVjdGlvbiBwZGVidWcgd3JpdGVzLXRvIC0+RG90IG1hcC0+Q3VzdG9tVGVybWluYXRvciB0ZXJtaW5hdG9yLWNvZGUgc2V0LWJsb2NrIC0+Q2F0Y2hIYW5kbGVyIFNUQVRFLUlEWCAtPlB1c2hUcnkgbWFyay10cmFuc2l0aW9ucyAtPkZuIG1hcC0+Q2F0Y2hIYW5kbGVyIC0+UmV0dXJuIGFzZXQtb2JqZWN0IHJ1bi1wYXNzZXMgSUVtaXR0YWJsZUluc3RydWN0aW9uIG1hcC0+Q2FsbCBJVGVybWluYXRvciBtYXAtPkZuIGVtaXQtaW5zdHJ1Y3Rpb24gSUluc3RydWN0aW9uIG1hcC0+RG90IG1ha2UtZW52IHByb3BhZ2F0ZS1yZWN1ciB0ZXJtaW5hdGUtYmxvY2sgLT5JbnN0YW5jZUludGVyb3AgbWFwLT5Qb3BUcnkgcGVyc2lzdGVudC12YWx1ZT8gcHJvcGFnYXRlLXRyYW5zaXRpb25zIGFzc29jLWluLXBsYW4gcnVuLXN0YXRlLW1hY2hpbmUtd3JhcHBlZCBwdXNoLWFsdGVyLWJpbmRpbmcgYXNldC1hbGwhIGRlYnVnIHBhcnNlLXRvLXN0YXRlLW1hY2hpbmUgZ2V0LXBsYW4gRk4tSURYIGFnZXQtb2JqZWN0IHJldHVybi1jaGFuIGFsbCBwb3AtYmluZGluZyAtPkVuZEZpbmFsbHkgbmVzdGVkLWdvPyAtPlJlY3VyIGFkZC1pbnN0cnVjdGlvbiBuby1vcCBwYXNzZXMgcHVzaC1iaW5kaW5nIC0+Q3VzdG9tVGVybWluYXRvciBCSU5ESU5HUy1JRFggbWFwLT5SZXR1cm4gaXRlbS10by1zc2EgbWFwLT5FbmRGaW5hbGx5IGFzeW5jLWN1c3RvbS10ZXJtaW5hdG9ycyAtPlN0YXRpY0NhbGwgbWFwLT5SYXdDb2RlIENVUlJFTlQtRVhDRVBUSU9OIGVtaXQtaGludGVkIC0+Q29uc3QgbWFwLT5TdGF0aWNDYWxsIHByaW50LXBsYW4gcnVuLXN0YXRlLW1hY2hpbmUgZ2V0LWluLXBsYW4gdXBkYXRlLWluLXBsYW4gbWFwLT5SZWN1ciBtYXAtPkptcCBmaW5pc2hlZD8gVVNFUi1TVEFSVC1JRFggcHV0ISB0YWtlISB2YXItbmFtZSBzdGF0ZS1tYWNoaW5lIFZBTFVFLUlEWF0sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS5jb3JlLmFzeW5jLmltcGwuaW9jLW1hY3Jvc30gezp2YXItc3ltcyBbbXV0ZXhdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUuY29yZS5hc3luYy5pbXBsLm11dGV4fSB7OnZhci1zeW1zIFtyZW1vdmUhIGNsb3NlLWJ1ZiEgY2xvc2UhIEhhbmRsZXIgYmxvY2thYmxlPyBhY3RpdmU/IEJ1ZmZlciBmdWxsPyBhZGQhIGxvY2staWQgZXhlYyBFeGVjdXRvciBhZGQhKiBSZWFkUG9ydCBDaGFubmVsIGNsb3NlZD8gVW5ibG9ja2luZ0J1ZmZlciBNQVgtUVVFVUUtU0laRSBjb21taXQgcHV0ISB0YWtlISBXcml0ZVBvcnRdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUuY29yZS5hc3luYy5pbXBsLnByb3RvY29sc30gezp2YXItc3ltcyBbLT5UaW1lb3V0UXVldWVFbnRyeSB0aW1lb3V0IHRpbWVvdXQtZGFlbW9uIFRJTUVPVVRfUkVTT0xVVElPTl9NU10sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS5jb3JlLmFzeW5jLmltcGwudGltZXJzfSB7OnZhci1zeW1zIFtkZWZjYWNoZSBjbGVhci1zb2Z0LWNhY2hlISBtYWtlLXJlZmVyZW5jZSAtPkZuQ2FjaGUgLT5Tb2Z0Q2FjaGUgc29mdC1jYWNoZS1mYWN0b3J5IC0+VFRMQ2FjaGUgaGFzPyBldmljdCBtaXNzIGxvb2t1cCBoaXQgdGhyb3VnaCB0dGwtY2FjaGUtZmFjdG9yeSBsdS1jYWNoZS1mYWN0b3J5IC0+TElSU0NhY2hlIC0+TFJVQ2FjaGUgLT5CYXNpY0NhY2hlIGxpcnMtY2FjaGUtZmFjdG9yeSBiYXNpYy1jYWNoZS1mYWN0b3J5IENhY2hlUHJvdG9jb2wgc2VlZCBmaWZvLWNhY2hlLWZhY3RvcnkgLT5GSUZPQ2FjaGUgLT5MVUNhY2hlIGxydS1jYWNoZS1mYWN0b3J5XSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLmNvcmUuY2FjaGV9IHs6dmFyLXN5bXMgW21lbW8tdHRsIC0+UGx1Z2dhYmxlTWVtb2l6YXRpb24gbWVtbyBtZW1vaXplZD8gbHUgZmlmbyBtZW1vLXVud3JhcCB0aHJvdWdoKiBtZW1vLWZpZm8gbWVtby1zd2FwISAtPlJldHJ5aW5nRGVsYXkgbHJ1IGJ1aWxkLW1lbW9pemVyIHNuYXBzaG90IHR0bCBtZW1vLWx1IG1lbW8tY2xlYXIhIG1lbW8tbHJ1XSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLmNvcmUubWVtb2l6ZX0gezp2YXItc3ltcyBbSUtWUmVkdWNlIE5hdmlnYWJsZSBuYXYgRGF0YWZpYWJsZSBDb2xsUmVkdWNlIGRhdGFmeSBjb2xsLXJlZHVjZSBpbnRlcm5hbC1yZWR1Y2UgSW50ZXJuYWxSZWR1Y2Uga3YtcmVkdWNlXSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLmNvcmUucHJvdG9jb2xzfSB7OnZhci1zeW1zIFtyZWR1Y2UgdGFrZSBtYXAgZm9sZGNhdCByZWR1Y2VyIG1hcGNhdCBjYXQgdGFrZS13aGlsZSByZW1vdmUgcG9vbCBDb2xsRm9sZCBmb2xkZXIgYXBwZW5kISAtPkNhdCBkcm9wIGZvbGQgZmxhdHRlbiBmaWx0ZXIgZmp0YXNrIG1vbm9pZCBjb2xsLWZvbGRdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUuY29yZS5yZWR1Y2Vyc30gezp2YXItc3ltcyBbc3RvcC1zZXJ2ZXIgcmVwbC1pbml0IHN0YXJ0LXNlcnZlciBzdGFydC1zZXJ2ZXJzIHN0b3Atc2VydmVycyByZXBsLXJlYWQgKnNlc3Npb24qIGlvLXByZXBsIHByZXBsIHJlcGwgcmVtb3RlLXByZXBsXSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLmNvcmUuc2VydmVyfSB7OnZhci1zeW1zIFtldmVuLW51bWJlci1vZi1mb3Jtcz9dLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUuY29yZS5zcGVjcy5hbHBoYX0gezp2YXItc3ltcyBbcGFkLWxlbmd0aCBlbmNvZGUgZGVjb2RlISBkZWMtbGVuZ3RoIGRlY29kZSBlbmMtbGVuZ3RoIGVuY29kZSEgZW5jb2RpbmctdHJhbnNmZXIgZGVjb2RpbmctdHJhbnNmZXJdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUuZGF0YS5jb2RlYy5iYXNlNjR9IHs6dmFyLXN5bXMgW3BwcmludCAtd3JpdGUgcmVhZC1qc29uIHJlYWQtc3RyIHJlYWQganNvbi1zdHIgd3JpdGUtc3RyIHBwcmludC1qc29uIEpTT05Xcml0ZXIgd3JpdGUgd3JpdGUtanNvbiBwcmludC1qc29uXSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLmRhdGEuanNvbn0gezp2YXItc3ltcyBbLT5QZXJzaXN0ZW50UHJpb3JpdHlNYXAgcHJpb3JpdHktbWFwLWJ5IGFwcGx5LWtleWZuIHByaW9yaXR5LW1hcC1rZXlmbiBwcmlvcml0eS1tYXAta2V5Zm4tYnkgcHJpb3JpdHktbWFwXSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLmRhdGEucHJpb3JpdHktbWFwfSB7OnZhci1zeW1zIFtuYXYgZGF0YWZ5XSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLmRhdGFmeX0gezp2YXItc3ltcyBbcmVhZCByZWFkLXN0cmluZ10sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS5lZG59IHs6dmFyLXN5bXMgW3ZhbGlkYXRlZCByZWFkLWluc3RhbnQtdGltZXN0YW1wIHJlYWQtaW5zdGFudC1jYWxlbmRhciByZWFkLWluc3RhbnQtZGF0ZSBwYXJzZS10aW1lc3RhbXBdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUuaW5zdGFudH0gezp2YXItc3ltcyBbYnJvd3NlLXVybCAqb3Blbi11cmwtc2NyaXB0Kl0sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS5qYXZhLmJyb3dzZX0gezp2YXItc3ltcyBbZGVmYXVsdC1zdHJlYW1zLWltcGwgbWFrZS1vdXRwdXQtc3RyZWFtIG1ha2UtcGFyZW50cyBkZWxldGUtZmlsZSBpbnB1dC1zdHJlYW0gbWFrZS13cml0ZXIgYXMtcmVsYXRpdmUtcGF0aCBjb3B5IGFzLWZpbGUgb3V0cHV0LXN0cmVhbSBtYWtlLXJlYWRlciBDb2VyY2lvbnMgZmlsZSBtYWtlLWlucHV0LXN0cmVhbSBJT0ZhY3RvcnkgcmVzb3VyY2Ugd3JpdGVyIGFzLXVybCByZWFkZXJdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUuamF2YS5pb30gezp2YXItc3ltcyBbc2ggKnNoLWRpciogd2l0aC1zaC1kaXIgKnNoLWVudiogd2l0aC1zaC1lbnZdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUuamF2YS5zaGVsbH0gezp2YXItc3ltcyBbbWFpbiB3aXRoLWJpbmRpbmdzIHN0YWNrLWVsZW1lbnQtc3RyIHJlcGwtY2F1Z2h0IHJlcGwtZXhjZXB0aW9uIGVyci0+bXNnIHJlcGwtcmVhZCBsb2FkLXNjcmlwdCBza2lwLWlmLWVvbCBza2lwLXdoaXRlc3BhY2UgcmVwb3J0LWVycm9yIHJvb3QtY2F1c2UgcmVwbC1yZXF1aXJlcyBkZW11bmdlIHdpdGgtcmVhZC1rbm93biBleC1zdHIgcmVudW1iZXJpbmctcmVhZCByZXBsIHJlcGwtcHJvbXB0IGV4LXRyaWFnZV0sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS5tYWlufSB7OnZhci1zeW1zIFtwcHJpbnQgc2ltcGxlLWRpc3BhdGNoIGdldC1wcmV0dHktd3JpdGVyICpwcmludC1zdXBwcmVzcy1uYW1lc3BhY2VzKiAqcHJpbnQtcHJldHR5KiAqcHJpbnQtcHByaW50LWRpc3BhdGNoKiBwcHJpbnQtbmV3bGluZSBjb2RlLWRpc3BhdGNoIHByaW50LWxlbmd0aC1sb29wIHBwcmludC10YWIgcHByaW50LWxvZ2ljYWwtYmxvY2sgcHJpbnQtdGFibGUgcHAgc2V0LXBwcmludC1kaXNwYXRjaCBmcmVzaC1saW5lIGZvcm1hdHRlci1vdXQgZm9ybWF0dGVyIHBwcmludC1pbmRlbnQgKnByaW50LXJhZGl4KiBjbC1mb3JtYXQgKnByaW50LW1pc2VyLXdpZHRoKiB3cml0ZSAqcHJpbnQtcmlnaHQtbWFyZ2luKiB3cml0ZS1vdXQgd2l0aC1wcHJpbnQtZGlzcGF0Y2ggKnByaW50LWJhc2UqXSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLnBwcmludH0gezp2YXItc3ltcyBbLT5GaWVsZCAtPk1ldGhvZCBUeXBlUmVmZXJlbmNlIHJlZmxlY3QgbWFwLT5GaWVsZCBtYXAtPk1ldGhvZCB0eXBlbmFtZSAtPkphdmFSZWZsZWN0b3IgLT5Bc21SZWZsZWN0b3IgcmVzb2x2ZS1jbGFzcyBmbGFnLWRlc2NyaXB0b3JzIGRvLXJlZmxlY3QgQ2xhc3NSZXNvbHZlciBSZWZsZWN0b3IgLT5Db25zdHJ1Y3RvciBtYXAtPkNvbnN0cnVjdG9yIHR5cGUtcmVmbGVjdF0sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS5yZWZsZWN0fSB7OnZhci1zeW1zIFtzb3VyY2UtZm4gZG9jIHN0YWNrLWVsZW1lbnQtc3RyIGZpbmQtZG9jIGRpciBwc3QgZGlyLWZuIHNvdXJjZSBzZXQtYnJlYWstaGFuZGxlciEgcm9vdC1jYXVzZSBkZW11bmdlIHRocmVhZC1zdG9wcGVyIGFwcm9wb3NdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUucmVwbH0gezp2YXItc3ltcyBbdW5pb24gbWFwLWludmVydCBqb2luIHNlbGVjdCBpbnRlcnNlY3Rpb24gc3VwZXJzZXQ/IGluZGV4IHN1YnNldD8gcmVuYW1lIHJlbmFtZS1rZXlzIHByb2plY3QgZGlmZmVyZW5jZV0sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS5zZXR9IHs6dmFyLXN5bXMgW3VuaW9uIG1hcC1pbnZlcnQgam9pbiBzZWxlY3QgaW50ZXJzZWN0aW9uIHN1cGVyc2V0PyBpbmRleCBzdWJzZXQ/IHJlbmFtZSByZW5hbWUta2V5cyBwcm9qZWN0IGRpZmZlcmVuY2VdLCA6dHlwZSA6Y2xqcywgOnN5bSBjbG9qdXJlLnNldH0gezp2YXItc3ltcyBbZm9ybSAmIG5pbGFibGUtaW1wbCAqcmVjdXJzaW9uLWxpbWl0KiAqY29sbC1lcnJvci1saW1pdCogZnNwZWMgZXhwbGFpbi1wcmludGVyIFNwZWNpemUgZXZlcnkga2V5cyogYWx0LWltcGwgZGVmLWltcGwgKmV4cGxhaW4tb3V0KiByZWdleC1zcGVjLWltcGwgbWVyZ2Utc3BlYy1pbXBsIGV4cGxhaW4tZGF0YSogY2hlY2stYXNzZXJ0cyBhc3NlcnQqIGluc3QtaW4tcmFuZ2U/IG5pbGFibGUgYW5kLXNwZWMtaW1wbCBkZXNjcmliZSogbWFwLXNwZWMtaW1wbCBjb2xsLW9mIGNhdCAqIGV4cGxhaW4gd2l0aC1nZW4qIG9yLXNwZWMtaW1wbCAqZnNwZWMtaXRlcmF0aW9ucyogU3BlYyB1bmZvcm0gdmFsaWQ/IGdlbiBldmVyeS1rdiBpbnQtaW4gYWx0IG5vbmNvbmZvcm1pbmcgdW5mb3JtKiBhYmJyZXYgcmVnZXg/IGludC1pbi1yYW5nZT8gb3Igc3BlYz8gcmVnaXN0cnkgcmVwK2ltcGwgZXhlcmNpc2UtZm4gZXhlcmNpc2UgbXVsdGktc3BlYyBleHBsYWluLWRhdGEgdHVwbGUtaW1wbCBtdWx0aS1zcGVjLWltcGwgdHVwbGUgY29uZm9ybSBnZW4qIGZzcGVjLWltcGwgYXNzZXJ0ID8gKmNvbGwtY2hlY2stbGltaXQqIG1lcmdlIGdldC1zcGVjIGNvbmZvcm1lciBldmVyeS1pbXBsIHNwZWMga2V5cyBzcGVjLWltcGwgKyBpbnZhbGlkPyBhbXAtaW1wbCBtYXAtb2YgY2F0LWltcGwgZXhwbGFpbi1zdHIgKmNvbXBpbGUtYXNzZXJ0cyogd2l0aC1nZW4gY29uZm9ybSogY2hlY2stYXNzZXJ0cz8gcmVwLWltcGwgZG91YmxlLWluIGluc3QtaW4gZGVzY3JpYmUgZXhwbGFpbi1vdXQgYW5kIHNwZWNpemUqIGRlZiBtYXliZS1pbXBsIGV4cGxhaW4qIGZkZWZdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUuc3BlYy5hbHBoYX0gezp2YXItc3ltcyBbdXVpZCBnZW4tZm9yLXByZWQgbGF6eS1wcmltIHNldCBvbmUtb2YgYW55LXByaW50YWJsZSB2ZWN0b3ItZGlzdGluY3QgYm9vbGVhbiBzdHJpbmctYWxwaGFudW1lcmljIG1hcCBkZWxheSBzaW1wbGUtdHlwZSBjaGFyIGJpbmQgc3ltYm9sLW5zIGFueSBzaHVmZmxlIGxhenktcHJpbXMgY2F0IGRvdWJsZSBjaGFyLWFscGhhIGludCByZXR1cm4gZ2VuLWZvci1uYW1lIHN5bWJvbCBxdWljay1jaGVjayBjaGFyLWFscGhhbnVtZXJpYyBjaG9vc2UgZm9yLWFsbCogc3RyaW5nLWFzY2lpIGZyZXF1ZW5jeSBkb3VibGUqIGdlbmVyYXRlIGRlbGF5LWltcGwgbGF6eS1jb21iaW5hdG9ycyB0dXBsZSBzdHJpbmcgdmVjdG9yIGxhcmdlLWludGVnZXIga2V5d29yZC1ucyBub3QtZW1wdHkgZWxlbWVudHMgc2FtcGxlIGxpc3QgbGFyZ2UtaW50ZWdlcioga2V5d29yZCBoYXNoLW1hcCByYXRpbyBzdWNoLXRoYXQgZm1hcCBjaGFyLWFzY2lpIHNpbXBsZS10eXBlLXByaW50YWJsZSBsYXp5LWNvbWJpbmF0b3IgYnl0ZXNdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUuc3BlYy5nZW4uYWxwaGF9IHs6dmFyLXN5bXMgW2VuZHMtd2l0aD8gY2FwaXRhbGl6ZSByZXZlcnNlIGpvaW4gcmVwbGFjZS1maXJzdCBzdGFydHMtd2l0aD8gZXNjYXBlIGxhc3QtaW5kZXgtb2YgcmUtcXVvdGUtcmVwbGFjZW1lbnQgaW5jbHVkZXM/IHJlcGxhY2Ugc3BsaXQtbGluZXMgbG93ZXItY2FzZSB0cmltLW5ld2xpbmUgdXBwZXItY2FzZSBzcGxpdCB0cmltciBpbmRleC1vZiB0cmltIHRyaW1sIGJsYW5rP10sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS5zdHJpbmd9IHs6dmFyLXN5bXMgW2VuZHMtd2l0aD8gY2FwaXRhbGl6ZSByZXZlcnNlIGpvaW4gcmVwbGFjZS1maXJzdCBzdGFydHMtd2l0aD8gZXNjYXBlIGxhc3QtaW5kZXgtb2YgaW5jbHVkZXM/IHJlcGxhY2Ugc3BsaXQtbGluZXMgbG93ZXItY2FzZSB0cmltLW5ld2xpbmUgdXBwZXItY2FzZSBzcGxpdCB0cmltciBpbmRleC1vZiB0cmltIHRyaW1sIGJsYW5rP10sIDp0eXBlIDpjbGpzLCA6c3ltIGNsb2p1cmUuc3RyaW5nfSB7OnZhci1zeW1zIFttYWNyb2V4cGFuZCB2YWxpZC1iaW5kaW5nLXN5bWJvbD8gYW5hbHl6ZS1sZXQgYW5hbHl6ZS1tYXAgcGFyc2UtZGVmIHBhcnNlLXF1b3RlIHBhcnNlLW5ldyBhbmFseXplLWZuLW1ldGhvZCBwYXJzZS1pbnZva2UgYW5hbHl6ZSBwYXJzZS1kb3QgcGFyc2UtZG8gYW5hbHl6ZS1jb25zdCBwYXJzZS1sb29wKiBhbmFseXplLXZlY3RvciB2YXI/IHBhcnNlLWlmIC1hbmFseXplLWZvcm0gY3JlYXRlLXZhciBwYXJzZS10cnkgYW5hbHl6ZS1zeW1ib2wgbWFjcm9leHBhbmQtMSBhbmFseXplLWJvZHkgcGFyc2UtbGV0Zm4qIHBhcnNlLWNhdGNoIGFuYWx5emUtc2VxIHBhcnNlLXJlY3VyIGVtcHR5LWVudiBhbmFseXplLWluLWVudiBwYXJzZS1mbiogdmFsaWRhdGUtYmluZGluZ3MgcGFyc2UtbGV0KiBwYXJzZS10aHJvdyBhbmFseXplLXNldCAtcGFyc2UgcGFyc2Ugd3JhcHBpbmctbWV0YSBwYXJzZS1zZXQhIHNwZWNpYWxzIGFuYWx5emUtZm9ybSBwYXJzZS12YXJdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUudG9vbHMuYW5hbHl6ZXJ9IHs6dmFyLXN5bXMgW3VwZGF0ZS1jaGlsZHJlbiBwb3N0d2FsayBjaGlsZHJlbiB3YWxrIHByZXdhbGsgY2hpbGRyZW4qIGN5Y2xpbmcgYXN0LT5lYXYgdXBkYXRlLWNoaWxkcmVuLXJlZHVjZWQgbm9kZXNdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUudG9vbHMuYW5hbHl6ZXIuYXN0fSB7OnZhci1zeW1zIFtlbnN1cmUgZGVyZWYtZW52ICplbnYqIHdpdGgtZW52XSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLnRvb2xzLmFuYWx5emVyLmVudn0gezp2YXItc3ltcyBbYW5hbHl6ZS1ucyBwYXJzZS1jYXNlKiBnbG9iYWwtZW52IGFuYWx5emUgcXVhbGlmeS1hcmdsaXN0cyBwYXJzZS1yZWlmeSogYW5hbHl6ZStldmFsIGFuYWx5emUtbWV0aG9kLWltcGxzIGRlc3VnYXItc3ltYm9sIGNyZWF0ZS12YXIgcnVuLXBhc3NlcyBwYXJzZS1tb25pdG9yLWVudGVyIHBhcnNlLWltcG9ydCogYnVpbGQtbnMtbWFwIG1hY3JvZXhwYW5kLTEgZGVzdWdhci1ob3N0LWV4cHIgcGFyc2UtZGVmdHlwZSogcGFyc2Utb3B0cyttZXRob2RzIC1kZWZ0eXBlIGRlZmF1bHQtcGFzc2VzIGVtcHR5LWVudiB1cGRhdGUtbnMtbWFwISBtYWNyb2V4cGFuZC1hbGwgc2NoZWR1bGVkLWRlZmF1bHQtcGFzc2VzIHBhcnNlIGRlZmF1bHQtcGFzc2VzLW9wdHMgcGFyc2UtbW9uaXRvci1leGl0IHNwZWNpYWxzIC0+RXhjZXB0aW9uVGhyb3duXSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLnRvb2xzLmFuYWx5emVyLmp2bX0gezp2YXItc3ltcyBbdW5ib3ggc3RhdGljLW1ldGhvZHMgbWVtYmVycyBzcGVjaWFsLWFycmF5cyBzdGF0aWMtZmllbGQgcHJpbWl0aXZlPyBpbnN0YW5jZS1tZXRob2RzIG51bWVyaWM/IGluc3RhbmNlLW1ldGhvZCBzdGF0aWMtbWVtYmVycyB3aWRlci10YWcgc3RhdGljLW1ldGhvZCB3aWRlci1wcmltaXRpdmUgcHJpbS1vci1vYmogbnMtPnJlbHBhdGggdHJ5LWJlc3QtbWF0Y2ggbWF5YmUtY2xhc3MgaW5zdGFuY2UtbWVtYmVycyBtYXliZS1jbGFzcy1mcm9tLXN0cmluZyBib3ggYXJyYXktY2xhc3MgbnMtdXJsIG1lbWJlcnMqIHN1YnN1bWVzPyB3aWRlci10YWcqIG5hbWUtbWF0Y2hlcz8gY29udmVydGlibGU/IGluc3RhbmNlLWZpZWxkIHByaW0taW50ZXJmYWNlIGlubGluZT8gdGFnLW1hdGNoPyBtYXliZS1jbGFzcy1saXRlcmFsIHNwZWNpYWxzIG1hY3JvPyB3aWRlci10aGFuIG9iamVjdC1tZW1iZXJzXSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLnRvb2xzLmFuYWx5emVyLmp2bS51dGlsc30gezp2YXItc3ltcyBbc2NoZWR1bGUtcGFzc2VzIHNhdGlzZmllcy1hZmZlY3RlZD8gc2NoZWR1bGUgZ3JvdXAgY29tcGlsZS1wYXNzZXMgc2NoZWR1bGUqIGNhbGN1bGF0ZS1kZXBzIGRlc3VnYXItZGVwcyBtYXliZS1sb29waW5nLXBhc3MgY29sbGFwc2VdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUudG9vbHMuYW5hbHl6ZXIucGFzc2VzfSB7OnZhci1zeW1zIFthZGQtYmluZGluZy1hdG9tXSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLnRvb2xzLmFuYWx5emVyLnBhc3Nlcy5hZGQtYmluZGluZy1hdG9tfSB7OnZhci1zeW1zIFtjbGVhbnVwXSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLnRvb2xzLmFuYWx5emVyLnBhc3Nlcy5jbGVhbnVwfSB7OnZhci1zeW1zIFtjb25zdGFudC1saWZ0XSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLnRvb2xzLmFuYWx5emVyLnBhc3Nlcy5jb25zdGFudC1saWZ0ZXJ9IHs6dmFyLXN5bXMgW2VsaWRlcyBlbGlkZS1tZXRhIHJlcGxhY2UtbWV0YSBnZXQtZWxpZGVzIC1lbGlkZS1tZXRhXSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLnRvb2xzLmFuYWx5emVyLnBhc3Nlcy5lbGlkZS1tZXRhfSB7OnZhci1zeW1zIFtlbWl0LWJpbmRpbmdzIC1lbWl0LWZvcm0gZW1pdC1mb3JtIC1lbWl0LWZvcm0qIGVtaXQtaHlnaWVuaWMtZm9ybV0sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS50b29scy5hbmFseXplci5wYXNzZXMuZW1pdC1mb3JtfSB7OnZhci1zeW1zIFstYW5hbHl6ZS1ob3N0LWV4cHIgYW5hbHl6ZS1ob3N0LWV4cHIgbWF5YmUtc3RhdGljLWZpZWxkIG1heWJlLWluc3RhbmNlLW1ldGhvZCBhbmFseXplLWhvc3QtY2FsbCBtYXliZS1pbnN0YW5jZS1maWVsZCBhbmFseXplLWhvc3QtZmllbGQgbWF5YmUtc3RhdGljLW1ldGhvZF0sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS50b29scy5hbmFseXplci5wYXNzZXMuanZtLmFuYWx5emUtaG9zdC1leHByfSB7OnZhci1zeW1zIFthbm5vdGF0ZS1ob3N0LWluZm9dLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUudG9vbHMuYW5hbHl6ZXIucGFzc2VzLmp2bS5hbm5vdGF0ZS1ob3N0LWluZm99IHs6dmFyLXN5bXMgW2Fubm90YXRlLWxvb3BzIGNoZWNrLXJlY3VyIC1jaGVjay1yZWN1ciAtbG9vcHNdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUudG9vbHMuYW5hbHl6ZXIucGFzc2VzLmp2bS5hbm5vdGF0ZS1sb29wc30gezp2YXItc3ltcyBbLWFubm90YXRlLXRhZyBhbm5vdGF0ZS10YWddLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUudG9vbHMuYW5hbHl6ZXIucGFzc2VzLmp2bS5hbm5vdGF0ZS10YWd9IHs6dmFyLXN5bXMgW2lmLWxldC1ib3ggYm94ZWQ/IC1ib3ggYm94XSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLnRvb2xzLmFuYWx5emVyLnBhc3Nlcy5qdm0uYm94fSB7OnZhci1zeW1zIFtjbGFzc2lmeS1pbnZva2VdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUudG9vbHMuYW5hbHl6ZXIucGFzc2VzLmp2bS5jbGFzc2lmeS1pbnZva2V9IHs6dmFyLXN5bXMgW2NvbnN0YW50LWxpZnQgY29uc3RhbnQtbGlmdCpdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUudG9vbHMuYW5hbHl6ZXIucGFzc2VzLmp2bS5jb25zdGFudC1saWZ0ZXJ9IHs6dmFyLXN5bXMgWy1lbWl0LWZvcm0gZW1pdC1mb3JtIC1lbWl0LWZvcm0qIGNsYXNzLT5zdHIgZW1pdC1oeWdpZW5pYy1mb3JtIGNsYXNzLT5zeW1dLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUudG9vbHMuYW5hbHl6ZXIucGFzc2VzLmp2bS5lbWl0LWZvcm19IHs6dmFyLXN5bXMgW2ZpeC1jYXNlLXRlc3RdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUudG9vbHMuYW5hbHl6ZXIucGFzc2VzLmp2bS5maXgtY2FzZS10ZXN0fSB7OnZhci1zeW1zIFstaW5mZXItdGFnIGluZmVyLXRhZyA9LWFyZ2xpc3RzP10sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS50b29scy5hbmFseXplci5wYXNzZXMuanZtLmluZmVyLXRhZ30gezp2YXItc3ltcyBbdmFsaWRhdGUtdGFnIHZhbGlkYXRlLWNhbGwgdmFsaWRhdGUgdmFsaWRhdGUtaW50ZXJmYWNlcyAtdmFsaWRhdGVdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUudG9vbHMuYW5hbHl6ZXIucGFzc2VzLmp2bS52YWxpZGF0ZX0gezp2YXItc3ltcyBbZmluZC1taXNtYXRjaGVzIGRpcnR5IC12YWxpZGF0ZS1sb29wLWxvY2FscyB2YWxpZGF0ZS1sb29wLWxvY2FscyAtdmFsaWRhdGUtbG9vcC1sb2NhbHMqIC1jbGVhbnVwLWRpcnR5LW5vZGVzXSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLnRvb2xzLmFuYWx5emVyLnBhc3Nlcy5qdm0udmFsaWRhdGUtbG9vcC1sb2NhbHN9IHs6dmFyLXN5bXMgW3ZhbGlkYXRlLXJlY3VyXSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLnRvb2xzLmFuYWx5emVyLnBhc3Nlcy5qdm0udmFsaWRhdGUtcmVjdXJ9IHs6dmFyLXN5bXMgW3dhcm4tb24tcmVmbGVjdGlvbiB3YXJuXSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLnRvb2xzLmFuYWx5emVyLnBhc3Nlcy5qdm0ud2Fybi1vbi1yZWZsZWN0aW9ufSB7OnZhci1zeW1zIFstbWVyZ2Utc291cmNlLWluZm8gc291cmNlLWluZm9dLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUudG9vbHMuYW5hbHl6ZXIucGFzc2VzLnNvdXJjZS1pbmZvfSB7OnZhci1zeW1zIFtwcmVzZXJ2aW5nLXJhdy1mb3JtcyB0cmltIC10cmltXSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLnRvb2xzLmFuYWx5emVyLnBhc3Nlcy50cmltfSB7OnZhci1zeW1zIFtub3JtYWxpemUgdW5pcXVpZnktbG9jYWxzKiAtdW5pcXVpZnktbG9jYWxzICpsb2NhbHMtZnJhbWUqIHVuaXF1aWZ5LWJpbmRpbmcgKmxvY2Fscy1jb3VudGVyKiB1bmlxdWlmeS1sb2NhbHMtYXJvdW5kIHVuaXF1aWZ5LWxvY2FscyB1bmlxdWlmeV0sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS50b29scy5hbmFseXplci5wYXNzZXMudW5pcXVpZnl9IHs6dmFyLXN5bXMgW3dhcm4tZWFybXVmZl0sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS50b29scy5hbmFseXplci5wYXNzZXMud2Fybi1lYXJtdWZmfSB7OnZhci1zeW1zIFt0eXBlPyBjdHggYm9vbGVhbj8gbWFwdicgcnNlcXYgcHJvdG9jb2wtbm9kZT8gc2VsZWN0LWtleXMnIC1zb3VyY2UtaW5mbyBjbGFzc2lmeSByZWZlcmVuY2U/IHVwZGF0ZS12YWxzIHJlc29sdmUtc3ltIHByaXZhdGU/IGNvbnN0YW50PyByZWdleD8gZHluYW1pYz8gY29tcGlsZS1pZiBpbnRvISBjb25zdC12YWwgZGlzc29jLWVudiB1cGRhdGUta3YgcmVjb3JkPyBidXRsYXN0K2xhc3Qgb2JqPyBzb3VyY2UtaW5mbyBtbWVyZ2UgcmVzb2x2ZS1ucyB1cGRhdGUta2V5cyBhcmdsaXN0LWZvci1hcml0eSBtYWNybz8gbWVyZ2UnXSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLnRvb2xzLmFuYWx5emVyLnV0aWxzfSB7OnZhci1zeW1zIFtjbGkgcGFyc2Utb3B0cyBzdW1tYXJpemUgZ2V0LWRlZmF1bHQtb3B0aW9ucyBmb3JtYXQtbGluZXMgbWFrZS1zdW1tYXJ5LXBhcnRdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUudG9vbHMuY2xpfSB7OnZhci1zeW1zIFtyZWFkK3N0cmluZyAqcmVhZC1ldmFsKiAqc3VwcHJlc3MtcmVhZCogKmRlZmF1bHQtZGF0YS1yZWFkZXItZm4qIHJlYWQgcmVhZC1zeW1ib2wgZGVmYXVsdC1kYXRhLXJlYWRlcnMgKmRhdGEtcmVhZGVycyogKnJlYWQtZGVsaW0qIHJlc29sdmUtc3ltYm9sICphbGlhcy1tYXAqIHJlYWQtcmVnZXggc3ludGF4LXF1b3RlIHJlYWQtc3RyaW5nIG1hcC1mdW5jXSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLnRvb2xzLnJlYWRlcn0gezp2YXItc3ltcyBbZGVmYXVsdC11dWlkLXJlYWRlciB2YWxpZGF0ZWQgcmVhZC1pbnN0YW50LXRpbWVzdGFtcCByZWFkLWluc3RhbnQtY2FsZW5kYXIgcmVhZC1pbnN0YW50LWRhdGUgcGFyc2UtdGltZXN0YW1wXSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLnRvb2xzLnJlYWRlci5kZWZhdWx0LWRhdGEtcmVhZGVyc30gezp2YXItc3ltcyBbcmVhZCByZWFkLXN0cmluZ10sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS50b29scy5yZWFkZXIuZWRufSB7OnZhci1zeW1zIFttYXRjaC1udW1iZXIgc2tpcC1saW5lIGludC1wYXR0ZXJuIHJlYWQtY29tbWVudCBwYXJzZS1zeW1ib2wgbnVtYmVyLWxpdGVyYWw/IHJlYWQtcGFzdCBmbG9hdC1wYXR0ZXJuIHRocm93aW5nLXJlYWRlciByYXRpby1wYXR0ZXJuXSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLnRvb2xzLnJlYWRlci5pbXBsLmNvbW1vbnN9IHs6dmFyLXN5bXMgW3Rocm93LWJhZC1kaXNwYXRjaCB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtZXNjYXBlIHRocm93LWJhZC1ucyB0aHJvdy11bmtub3duLXJlYWRlci10YWcgdGhyb3ctZW9mLWF0LWRpc3BhdGNoIHRocm93LWJhZC1tZXRhZGF0YS10YXJnZXQgdGhyb3ctaW52YWxpZC1udW1iZXIgcmVhZGVyLWVycm9yIHRocm93LWludmFsaWQtdW5pY29kZS1saXRlcmFsIHRocm93LW5zLW1hcC1uby1tYXAgdGhyb3ctdW5zdXBwb3J0ZWQtY2hhcmFjdGVyIHRocm93LWZlYXR1cmUtbm90LWtleXdvcmQgdGhyb3ctZW9mLWRlbGltaXRlZCB0aHJvdy1lb2YtaW4tY2hhcmFjdGVyIHRocm93LWJhZC1jaGFyIGVvZi1lcnJvciB0aHJvdy1iYWQtbWV0YWRhdGEgdGhyb3ctZW9mLXJlYWRpbmcgdGhyb3ctZW9mLWVycm9yIGlsbGVnYWwtYXJnLWVycm9yIHRocm93LWludmFsaWQtb2N0YWwtbGVuIHRocm93LWludmFsaWQtdW5pY29kZS1kaWdpdCB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtZGlnaXQtaW4tdG9rZW4gdGhyb3ctaW52YWxpZC11bmljb2RlLWxlbiB0aHJvdy1zaW5nbGUtY29sb24gdGhyb3ctb2RkLW1hcCB0aHJvdy1iYWQtb2N0YWwtbnVtYmVyIHRocm93LWJhZC1yZWFkZXItdGFnIHRocm93LXVubWF0Y2gtZGVsaW1pdGVyIHRocm93LWludmFsaWQtY2hhcmFjdGVyLWxpdGVyYWwgdGhyb3ctaW52YWxpZC11bmljb2RlLWNoYXIgdGhyb3ctYmFkLWVzY2FwZS1jaGFyIHRocm93LW5vLWRpc3BhdGNoIHRocm93LWVvZi1hdC1zdGFydCB0aHJvdy1pbnZhbGlkXSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLnRvb2xzLnJlYWRlci5pbXBsLmVycm9yc30gezp2YXItc3ltcyBbaW5zcGVjdCBpbnNwZWN0Kl0sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS50b29scy5yZWFkZXIuaW1wbC5pbnNwZWN0fSB7OnZhci1zeW1zIFt3aGl0ZXNwYWNlPyBjaGFyIG51bWVyaWM/IG1ha2UtdmFyIHNlY29uZCcgZGVzdWdhci1tZXRhIDw9Y2xvanVyZS0xLTctYWxwaGE1IGV4LWluZm8/IG5ld2xpbmU/IG5hbWVzcGFjZS1rZXlzIGNvbXBpbGUtd2hlbl0sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS50b29scy5yZWFkZXIuaW1wbC51dGlsc30gezp2YXItc3ltcyBbUmVhZGVyQ29lcmNlciBpbmRleGluZy1wdXNoLWJhY2stcmVhZGVyIGxvZy1zb3VyY2UqIG1lcmdlLW1ldGEgLT5TdHJpbmdSZWFkZXIgdG8tcGJyIHRvLXJkciBSZWFkZXIgc291cmNlLWxvZ2dpbmctcHVzaC1iYWNrLXJlYWRlciB1bnJlYWQgcGVlay1jaGFyIHB1c2gtYmFjay1yZWFkZXIgSVB1c2hiYWNrUmVhZGVyIGluZGV4aW5nLXJlYWRlcj8gc3RyaW5nLXJlYWRlciByZWFkLWNoYXIgZ2V0LWNvbHVtbi1udW1iZXIgZ2V0LWZpbGUtbmFtZSByZWFkLWxpbmUgLT5QdXNoYmFja1JlYWRlciBQdXNoYmFja1JlYWRlckNvZXJjZXIgc3RyaW5nLXB1c2gtYmFjay1yZWFkZXIgbG9nLXNvdXJjZSAtPlNvdXJjZUxvZ2dpbmdQdXNoYmFja1JlYWRlciAtPklucHV0U3RyZWFtUmVhZGVyIGxpbmUtc3RhcnQ/IGlucHV0LXN0cmVhbS1wdXNoLWJhY2stcmVhZGVyIHNvdXJjZS1sb2dnaW5nLXJlYWRlcj8gSW5kZXhpbmdSZWFkZXIgZ2V0LWxpbmUtbnVtYmVyIGlucHV0LXN0cmVhbS1yZWFkZXIgLT5JbmRleGluZ1B1c2hiYWNrUmVhZGVyXSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLnRvb2xzLnJlYWRlci5yZWFkZXItdHlwZXN9IHs6dmFyLXN5bXMgW3Bvc3R3YWxrIGtleXdvcmRpemUta2V5cyB3YWxrIHByZXdhbGstcmVwbGFjZSBzdHJpbmdpZnkta2V5cyBwcmV3YWxrIHBvc3R3YWxrLWRlbW8gcHJld2Fsay1kZW1vIG1hY3JvZXhwYW5kLWFsbCBwb3N0d2Fsay1yZXBsYWNlXSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLndhbGt9IHs6dmFyLXN5bXMgW3dhbGsgcG9zdHdhbGsgcHJld2FsayBrZXl3b3JkaXplLWtleXMgc3RyaW5naWZ5LWtleXMgcHJld2Fsay1yZXBsYWNlIHBvc3R3YWxrLXJlcGxhY2VdLCA6dHlwZSA6Y2xqcywgOnN5bSBjbG9qdXJlLndhbGt9IHs6dmFyLXN5bXMgW3N1cHBvcnRzLWV4dGVuZGVkLWF0dHJpYnV0ZXM/IGNoZWNrc3VtLWZpbGUgYWRkLWZpbGUtZXRhZyBjaGVja3N1bS1hdHRyaWJ1dGUtbmFtZSB3cmFwLWZpbGUtZXRhZyBzZXQtYXR0cmlidXRlIGdldC11c2VyLWRlZmluZWQtYXR0cmlidXRlLXZpZXcgZ2V0LWF0dHJpYnV0ZV0sIDp0eXBlIDpjbGosIDpzeW0gY28uZGVwcy5yaW5nLWV0YWctbWlkZGxld2FyZX0gezp2YXItc3ltcyBbLT5IYW5kbGVyTWFwQ29udGFpbmVyIHdyaXRlLW1ldGEgcmVhZC1hcnJheS1oYW5kbGVyIHdyaXRlLWhhbmRsZXIgcmVhZCBoYW5kbGVyLW1hcCBsaXN0LWJ1aWxkZXIgbWFwLWJ1aWxkZXIgLT5Xcml0ZXIgdGFnZ2VkLXZhbHVlIHJlY29yZC13cml0ZS1oYW5kbGVycyByZWNvcmQtd3JpdGUtaGFuZGxlciB3cml0ZS1oYW5kbGVyLW1hcCAtPlJlYWRlciAtPldpdGhNZXRhIHJlYWQtaGFuZGxlciB3cml0ZSBkZWZhdWx0LXdyaXRlLWhhbmRsZXJzIHJlYWQtaGFuZGxlci1tYXAgbnNlZC1uYW1lIHJlY29yZC1yZWFkLWhhbmRsZXIgSGFuZGxlck1hcFByb3ZpZGVyIHdyaXRlciBkZWZhdWx0LXJlYWQtaGFuZGxlcnMgcmVhZGVyIHJlY29yZC1yZWFkLWhhbmRsZXJzIHJlYWQtbWFwLWhhbmRsZXJdLCA6dHlwZSA6Y2xqLCA6c3ltIGNvZ25pdGVjdC50cmFuc2l0fSB7OnZhci1zeW1zIFtwYXJlbi1tb2RlIGFkZC1pbmRlbnQgaW5kZW50LWNvdW50IHJvdy1jb2wtPnBvc2l0aW9uIHBvc2l0aW9uLT5yb3ctY29sIHNwbGl0LWxpbmVzIHVwZGF0ZS1pbmRlbnQgbW9kZSBpbmRlbnQtbW9kZSBhZGQtcGFyaW5mZXJdLCA6dHlwZSA6Y2xqcywgOnN5bSBjcm9zcy1wYXJpbmZlci5jb3JlfSB7OnZhci1zeW1zIFtlcT9dLCA6dHlwZSA6Y2xqLCA6c3ltIGNyeXB0by5lcXVhbGl0eX0gezp2YXItc3ltcyBbdXJsLXBhcnQgYmFzZTMyIGJhc2U2NCBoZXggYnl0ZXNdLCA6dHlwZSA6Y2xqLCA6c3ltIGNyeXB0by5yYW5kb219IHs6dmFyLXN5bXMgW2NoYW4gPCEhIHB1dCFdLCA6dHlwZSA6Y2xqLCA6c3ltIGR5bmFkb2MuYWxpYXNlc30gezp2YXItc3ltcyBbY2hhbiBwdXQhIDwhIV0sIDp0eXBlIDpjbGpzLCA6c3ltIGR5bmFkb2MuYWxpYXNlc30gezp2YXItc3ltcyBbdmFyLXN5bS0+dXJsIHNvdXJjZS0+aHRtbCogc3BlYy0+aHRtbCBleGFtcGxlLT5odG1sIGV4YW1wbGUtPmh0bWwqIGluaXQtZWRpdG9yIGV4cGFuZGFibGUtc2VjdGlvbiBhcHAtcm9vdCBucy1zeW0tPnVybCAqc2Vzc2lvbiBnZXQtc3RhdGUgc2lkZWJhciB2YXItPmh0bWwgdXBkYXRlLXNlc3Npb24gZXhwb3J0LWZvcm0gZXhwb3J0IHJ1bGVzIHNwZWMtPmh0bWwqIGNvbXBvbmVudHMgc291cmNlLT5odG1sIGluaXQtZXhhbXBsZS1lZGl0b3JdLCA6dHlwZSA6Y2xqLCA6c3ltIGR5bmFkb2MuY29tbW9ufSB7OnZhci1zeW1zIFt2YXItc3ltLT51cmwgaW5pdC1lZGl0b3IgbnMtc3ltLT51cmwgKnNlc3Npb24gZ2V0LXN0YXRlIHVwZGF0ZS1zZXNzaW9uIHJ1bGVzIGNvbXBvbmVudHMgaW5pdC1leGFtcGxlLWVkaXRvcl0sIDp0eXBlIDpjbGpzLCA6c3ltIGR5bmFkb2MuY29tbW9ufSB7OnZhci1zeW1zIFtwcmludC1zZXJ2ZXIgaGFuZGxlciBwYWdlLXN0YXRlIGRlZHVwZS1uc2VzIGdldC1jbGotdmFycyBkZXYtc3RhcnQgZ2V0LWNsanMtbnNlcy1hbmQtdmFycy1keW5hbWljYWxseSAtbWFpbiBnZXQtY2xqLW5zZXMgZ2V0LWV4YW1wbGVzIGV4Y2x1ZGUtdmFyPyB2YXItbWFwLT52YXJzIGdldC1jbGpzLW5zZXMtYW5kLXZhcnMgc3RhcnQgKm9wdGlvbnMgcHVibGljLWZpbGVzIGdldC1jbGpzLXZhcnMgcGFnZSBleHBvcnQgKndlYi1zZXJ2ZXIgZ2V0LWNsanMtbnNlcyBnZXQtY2xqLXZhci1pbmZvXSwgOnR5cGUgOmNsaiwgOnN5bSBkeW5hZG9jLmNvcmV9IHs6dmFyLXN5bXMgW2Nsai1jb21waWxlci1mbiBmb3JtLT5zZXJpYWxpemFibGUgaW5pdC1lZGl0b3IgY2xqcy1jb21waWxlci1mbiB0cmFuc2Zvcm0gaW5pdCByZWFkLXN0cmluZyBpbml0LWV4YW1wbGUtZWRpdG9yIGluaXQtd2F0Y2hlciFdLCA6dHlwZSA6Y2xqcywgOnN5bSBkeW5hZG9jLmNvcmV9IHs6dmFyLXN5bXMgW2RlZmV4YW1wbGUgcmVnaXN0cnktcmVmIHBhcnNlLWV4YW1wbGUgZGVmZXhhbXBsZXMgcGFyc2UtdmFsIHBhcnNlLW5zIGRlZmV4YW1wbGUqIHBhcnNlLWtleXMgZGVmZXhhbXBsZXMqXSwgOnR5cGUgOmNsaiwgOnN5bSBkeW5hZG9jLmV4YW1wbGV9IHs6dmFyLXN5bXMgW3JlYWQtY2xqcy1maWxlIHZpc2libGU/IGdldC1jbGpzLWFyZ2xpc3RzIGdldC1jbGpzLW5zZXMtYW5kLXZhcnNdLCA6dHlwZSA6Y2xqLCA6c3ltIGR5bmFkb2Muc3RhdGljfSB7OnZhci1zeW1zIFt3aXRoLWZvY3VzLT5iaW5kaW5nIGFkZC1mb2N1cyBhZGQtY2FyZCBhZGQtY2FsbGJhY2sgdHJhbnNmb3JtXSwgOnR5cGUgOmNsanMsIDpzeW0gZHluYWRvYy50cmFuc2Zvcm19IHs6dmFyLXN5bXMgW2Zvcm0tPnNlcmlhbGl6YWJsZSBwYXJzZS11cmkgZmxhdHRlbi12YWxzIGNsaS1vcHRpb25zIHByb2Nlc3MtZXhhbXBsZV0sIDp0eXBlIDpjbGosIDpzeW0gZHluYWRvYy51dGlsc30gezp2YXItc3ltcyBbKmNsanMtaW5mbyB3YXRjaGVyIHdhdGNoLXJlcXVlc3QgKmNoYW5uZWwtPnVyaSBpbml0LXdhdGNoZXIhXSwgOnR5cGUgOmNsaiwgOnN5bSBkeW5hZG9jLndhdGNofSB7OnZhci1zeW1zIFt0aHVuay10aW1lb3V0IHVnbGlmeS10aW1lLXVuaXRdLCA6dHlwZSA6Y2xqLCA6c3ltIGV2YWwtc291cC5jbG9qYWlsfSB7OnZhci1zeW1zIFt3cmFwLXNlY3VyaXR5IGNvZGUtPnJlc3VsdHMgd3JhcC10aW1lb3V0IGV2YWxfc291cC5jb3JlLnByb3h5JGphdmEubGFuZy5TZWN1cml0eU1hbmFnZXIkZmYxOTI3NGEgd2l0aC1zZWN1cml0eV0sIDp0eXBlIDpjbGosIDpzeW0gZXZhbC1zb3VwLmNvcmV9IHs6dmFyLXN5bXMgW2NvZGUtPnJlc3VsdHNdLCA6dHlwZSA6Y2xqcywgOnN5bSBldmFsLXNvdXAuY29yZX0gezp2YXItc3ltcyBbZXJyb3ItbWVzc2FnZSBleHBsYWluLXJlc3VsdCBjdXN0b20tcHJpbnRlciB2YWx1ZS1zdHIgY29uZm9ybWVkLXZhbHVlIHByaW50ZXIgZXhwbGFpbi1yZXN1bHQtc3RyIGV4cGxhaW4tcmVzdWx0cyBleHBlY3RlZC1zdHIgZXhwb3VuZC1zdHIgcHJvYmxlbS1ncm91cC1zdHIgZXhwbGFpbi1yZXN1bHRzLXN0ciBleHBvdW5kIGRlZm1zZyBkZWZdLCA6dHlwZSA6Y2xqLCA6c3ltIGV4cG91bmQuYWxwaGF9IHs6dmFyLXN5bXMgW2Vycm9yLW1lc3NhZ2UgZXhwbGFpbi1yZXN1bHQgY3VzdG9tLXByaW50ZXIgY29uZm9ybWVkLXZhbHVlIHByaW50ZXIgZXhwbGFpbi1yZXN1bHQtc3RyIGV4cGxhaW4tcmVzdWx0cyBleHBvdW5kLXN0ciBleHBsYWluLXJlc3VsdHMtc3RyIGV4cG91bmQgZGVmbXNnXSwgOnR5cGUgOmNsanMsIDpzeW0gZXhwb3VuZC5hbHBoYX0gezp2YXItc3ltcyBbKnByaW50LXN0eWxlcyogd2l0aC1jb2xvci13aGVuICplbmFibGUtY29sb3IqIHNnci1jb2RlIGVzY2FwZSBwcmludC1jb2xvci10ZXh0IGNvbG9yIGVzYyB3aXRoLWNvbG9yIGJsYWNrLWFuZC13aGl0ZSBzZ3IgYW5zaS1jb2RlPyBzdHJpcCByZXNvbHZlLXN0eWxlc10sIDp0eXBlIDpjbGosIDpzeW0gZXhwb3VuZC5hbnNpfSB7OnZhci1zeW1zIFsqcHJpbnQtc3R5bGVzKiAqZW5hYmxlLWNvbG9yKiBzZ3ItY29kZSBlc2NhcGUgY29sb3IgZXNjIHNnciBhbnNpLWNvZGU/IHN0cmlwIHJlc29sdmUtc3R5bGVzXSwgOnR5cGUgOmNsanMsIDpzeW0gZXhwb3VuZC5hbnNpfSB7OnZhci1zeW1zIFttYXAtPktleVBhdGhTZWdtZW50IHBhdGhzLXRvLXZhbHVlIGVxdWFsaXNoPyBpbi13aXRoLWtwcyAtPktleVZhbHVlUGF0aFNlZ21lbnQgdmFsdWUtaW4ga3Zwcz8gLT5LZXlQYXRoU2VnbWVudCBpbi13aXRoLWtwcy1pbnRzLWFyZS1rZXlzIGNvbXBhcmUtcGF0aC1zZWdtZW50IGt2cHMtcGF0aD8gY29tcGFyZS1wYXRocyBpbi13aXRoLWtwcy1mdXp6eS1tYXRjaC1mb3ItcmVnZXgtZmFpbHVyZXMgbWFwLT5LZXlWYWx1ZVBhdGhTZWdtZW50IGluLXdpdGgta3BzKiBrcHMtcGF0aD8gaW4td2l0aC1rcHMtbWFwcy1hcy1zZXFzIHByZWZpeC1wYXRoPyBpbi13aXRoLWtwcy1pbnRzLWFyZS1rZXktdmFsdWUtaW5kaWNhdG9ycyBmbi1lcXVhbCBrcHM/IGJvdGgtbmFuP10sIDp0eXBlIDpjbGosIDpzeW0gZXhwb3VuZC5wYXRoc30gezp2YXItc3ltcyBbcGF0aHMtdG8tdmFsdWUgZXF1YWxpc2g/IGluLXdpdGgta3BzIHZhbHVlLWluIGt2cHM/IGluLXdpdGgta3BzLWludHMtYXJlLWtleXMgY29tcGFyZS1wYXRoLXNlZ21lbnQga3Zwcy1wYXRoPyBjb21wYXJlLXBhdGhzIGluLXdpdGgta3BzLWZ1enp5LW1hdGNoLWZvci1yZWdleC1mYWlsdXJlcyBpbi13aXRoLWtwcyoga3BzLXBhdGg/IGluLXdpdGgta3BzLW1hcHMtYXMtc2VxcyBwcmVmaXgtcGF0aD8gaW4td2l0aC1rcHMtaW50cy1hcmUta2V5LXZhbHVlLWluZGljYXRvcnMgZm4tZXF1YWwga3BzPyBib3RoLW5hbj9dLCA6dHlwZSA6Y2xqcywgOnN5bSBleHBvdW5kLnBhdGhzfSB7OnZhci1zeW1zIFttaXNzaW5nLWtleSBpbmRlbnQtbGV2ZWwgbWF4LXNwZWMtc3RyLXdpZHRoIGFub24tZm4tc3RyIHByaW50LXNwZWMta2V5cyBmb3JtYXQgc2luZ2xldG9uPyBpbmRlbnQgc2ltcGxlLXNwZWMtb3ItbmFtZSBzcGVjcy1mcm9tLWZvcm0gZWxpZGUtc3BlYy1ucyBrZXktPnNwZWMgZWxpZGUtY29yZS1ucyBwcmludC1taXNzaW5nLWtleXMgZXhwYW5kLXNwZWMga2V5d29yZHMgbm8tdHJhaWxpbmctd2hpdGVzcGFjZSBwcHJpbnQtc3RyIHN1bW1hcml6ZS1rZXktY2xhdXNlIHBwcmludC1mbl0sIDp0eXBlIDpjbGosIDpzeW0gZXhwb3VuZC5wcmludGVyfSB7OnZhci1zeW1zIFttaXNzaW5nLWtleSBpbmRlbnQtbGV2ZWwgbWF4LXNwZWMtc3RyLXdpZHRoIGFub24tZm4tc3RyIHByaW50LXNwZWMta2V5cyBzaW5nbGV0b24/IGluZGVudCBzaW1wbGUtc3BlYy1vci1uYW1lIHNwZWNzLWZyb20tZm9ybSBlbGlkZS1zcGVjLW5zIGtleS0+c3BlYyBlbGlkZS1jb3JlLW5zIHByaW50LW1pc3Npbmcta2V5cyBleHBhbmQtc3BlYyBrZXl3b3JkcyBuby10cmFpbGluZy13aGl0ZXNwYWNlIHBwcmludC1zdHIgc3VtbWFyaXplLWtleS1jbGF1c2UgcHByaW50LWZuXSwgOnR5cGUgOmNsanMsIDpzeW0gZXhwb3VuZC5wcmludGVyfSB7OnZhci1zeW1zIFtoaWdobGlnaHQtbGluZSB2YWx1ZS1pbiBmaXgtdmlhIGFubm90YXRlIGVzY2FwZS1yZXBsYWNlbWVudCBoaWdobGlnaHRlZC12YWx1ZSB0eXBlIHN1bW1hcnktZm9ybSBibGFuay1mb3JtXSwgOnR5cGUgOmNsaiwgOnN5bSBleHBvdW5kLnByb2JsZW1zfSB7OnZhci1zeW1zIFtoaWdobGlnaHQtbGluZSB2YWx1ZS1pbiBmaXgtdmlhIGFubm90YXRlIGVzY2FwZS1yZXBsYWNlbWVudCBoaWdobGlnaHRlZC12YWx1ZSB0eXBlIHN1bW1hcnktZm9ybSBibGFuay1mb3JtXSwgOnR5cGUgOmNsanMsIDpzeW0gZXhwb3VuZC5wcm9ibGVtc30gezp2YXItc3ltcyBbbmFuPyBhc3NlcnQtbWVzc2FnZV0sIDp0eXBlIDpjbGosIDpzeW0gZXhwb3VuZC51dGlsfSB7OnZhci1zeW1zIFthc3NlcnQtbWVzc2FnZSBuYW4/XSwgOnR5cGUgOmNsanMsIDpzeW0gZXhwb3VuZC51dGlsfSB7OnZhci1zeW1zIFtzb3VyY2VzLT5tb2RpZmllZC1tYXAgbm90aWZ5LW9uLWV4Y2VwdGlvbiBmaW5kLWZpZ3doZWVsLW1ldGEgcmVsb2FkLWNsai1maWxlcyBzdHItZXhjZXJwdCBqc29uLXdyaXRlLXN0ciBpbnZlcnQtZGVwcyBidWlsZC10b3BvLXNvcnQgcGFyc2UtY2xqLW5zIGNoYW5nZWQtZGVwZW5kZW5jeS10cmVlPyByZWxvYWQtY2xqLW5hbWVzcGFjZXMgc291cmNlcy1tb2RpZmllZCBhbGwtZGVwZW5kZW5jeS1jb2RlIGFsbC1zb3VyY2VzIGpzLWRlcGVuZGVuY2llcy13aXRoLWZpbGUtdXJscyAqY29uZmlnKiByb290LW5hbWVzcGFjZXMgZGlzdGluY3QtYnkgc291cmNlcy0+bmFtZXNwYWNlcy10by1yZWxvYWQgcmVsb2FkLW5hbWVzcGFjZS1jb2RlIGhhbmRsZS13YXJuaW5ncyBleGNlcHRpb24tY29kZSB3YXJuaW5ncy0+d2FybmluZy1pbmZvcyBvdXRwdXQtZGlyIGhhbmRsZS1leGNlcHRpb24gaG9va3MtZm9yLW5hbWVzcGFjZSByZXF1aXJlLW1hcCBhbGwtYWRkLWRlcGVuZGVuY2llcyBhZGQtZGVwZW5kZW5jaWVzLWpzIGNvbXBpbGVyLXdhcm5pbmdzLWNvZGUgbGFzdC1jb21waWxlci1lbnYgc291cmNlcy13aXRoLXBhdGhzIHNvdXJjZXMtbW9kaWZpZWQhIHN0YXJ0KiBpbmxpbmUtbWVzc2FnZS1kaXNwbGF5LWRhdGEgZmlsZS1leGNlcnB0IGhvb2stY2xqcy1jbG9zdXJlLWJ1aWxkIGV4cGFuZC10by1kZXBlbmRlbnRzIHNjcmF0Y2ggbWFwLWtleXMgc3RhcnQtZnJvbS1yZXBsIGpzLWRlcGVuZGVuY2llcy13aXRoLXBhdGhzIGdldC1zb3VyY2VzIGZpbGUtbGluZS1jb2x1bW4gcGF0aHMtPm5hbWVzcGFjZXMtdG8tcmVsb2FkIGluLXVwcGVyLWxldmVsPyBkZWJ1Zy1wcm4gcmVhZC1jbGotZm9ybXMgY3Jvc3MtZm9ybWF0IGNsaWVudC1ldmFsIGNsai1wYXRocy0+bmFtZXNwYWNlcyB3YXJuaW5nLWluZm8gc3RvcCBidWlsZCBzb3VyY2UtZmlsZSAqaW5saW5lLWNvZGUtbWVzc2FnZS1tYXgtY29sdW1uKiByZWxvYWQtbmFtZXNwYWNlcyBmaWd3aGVlbC1hbHdheXMtbmFtZXNwYWNlcyB3cmFwLWxpbmUgaG9vay1jbGpzLWJ1aWxkXSwgOnR5cGUgOmNsaiwgOnN5bSBmaWd3aGVlbC5jb3JlfSB7OnZhci1zeW1zIFtzdGF0dXMqIGZpeC1zaW1wbGUtYm9vbC1hcmdzIGRlZmF1bHQtdGFyZ2V0LWRpciBzdGFydC1iYWNrZ3JvdW5kLWJ1aWxkcyBydW4tYnVuZGxlLWNtZCogY29uZmlnLT5yZWxvYWQtY29uZmlnIHJ1bi1idW5kbGUtY21kIGRlZmF1bHQtY29tcGlsZSBjbGVhbiogcmVhZC1lZG4tZmlsZSB2YWxpZGF0ZS1jb25maWchIGNvbmZpZy1zZXQtbG9nLWxldmVsISBjdXJyZW50bHktYXZhaWxhYmxlLWlkcyBjb25maWctY2xlYW4gYnVpbGQtb3B0aW9uLWFyZz8gY29uZmlnLWxvZy1zeW50YXgtZXJyb3Itc3R5bGUhIG1lcmdlLW1ldGEgZXhwYW5kLWJ1aWxkLWlucHV0cyBwcm9jZXNzLW1haW4tY29uZmlnIGNsb3N1cmUtZGVmaW5lcy1oYXMta2V5LXZhbHVlPyBidWlsZC1vbmNlLW9wdCB2YWxpZGF0ZS1jbGkhIE5QTS1ERVBTLUZJTEUgcmVhZC1lZG4tb3B0cyBjb25maWctd2F0Y2gtY3NzIGdldC1idWlsZCBidW5kbGUtc21hcnQ/IGNvbmZpZy11c2Utc3NsIGdldC1yZXBsLWVudi1vcHRpb25zIGZhbGxiYWNrLWlkIHJlbG9hZC1jb25maWcqICpjb25maWcqIGJ1bmRsZS1vbmNlLW9wdHMgY29uZmlnLT5pbnB1dHMgY2xlYW4gbnJlcGwtcmVwbCBidWlsZC1tYWluLW9wdCBzZXJ2ZSByZXBsLWFjdGlvbiBidW5kbGUtYWx3YXlzPyBhZGQtdG8tcXVlcnkgd2Fybi1vbi1iYWQtaWQgZGVmYXVsdC1idW5kbGUtb3V0cHV0LXRvKiBoZWxwLW9wdCBjbGVhbi1idWlsZC1vdXRwdXRzISBicm93c2VyLXRhcmdldD8gbWFrZS10ZW1wLWRpciBidWlsZC1vbmNlKiBoZWxwLXRlbXBsYXRlIGV4dHJhLW1haW4tZm4gZmlnd2hlZWwtb3B0IHdhdGNoLWJ1aWxkIGNvbmZpZy1jb21waWxlLWlzLWJ1aWxkLW9uY2UgY29uZmlnLWV4dHJhLW1haW5zIHByb2Nlc3MtdW5pcXVlIGhlbHBlci1yaW5nLWFwcCBkZWZhdWx0LW91dHB1dC10byogcmVwbC1jYXVnaHQgZGVmYXVsdC1vdXRwdXQtdG8gKmJhc2UtY29uZmlnKiBzdG9wLWJ1aWxkcyogc3RvcC1idWlsZHMgLW1haW4gbWVyZ2UtZXh0cmEtY2xqcy1vcHRpb25zIHJlc2V0IGJvdW5kLXZhcj8gc3RhcnQqIGhlbHAtc3RyIG91dHB1dC10by1mb3ItZXh0cmEtbWFpbiBzdGFydC1idWlsZHMqIGV4dHJhLW1haW4tb3B0aW9ucyBhdmFpbGFibGUtYnVpbGQtaWRzIGdldC1yZXBsLW9wdGlvbnMgc3RhcnQtam9pbiBidWlsZC1vbmNlIGNvbXBpbGUtb3B0cy1vcHQgYnVpbGQtY2xlYW5pbmchIGRlZmF1bHQtb3V0cHV0LWRpciogYnVuZGxlLXNtYXJ0LW9wdHMgcmVnaXN0ZXItYnVpbGQhIHdyYXAtd2l0aC1jb21waWxlci1wYXNzZXMgZ2V0LWVkbi1maWxlLWtleSBjb25maWctc3lzdGVtLWV4aXQgZmlnd2hlZWwtY29tbWFuZHMgdmFsaWRhdGUtY29uZmlnISogYmFja2dyb3VuZC1idWlsZC1vcHQgaW4tbnJlcGw/IGxvYWQtZWRuLW9wdHMgZXh0cmEtY29uZmlnLW1lcmdlIGZldGNoLWZpZ3doZWVsLW1haW4tZWRuIHVwZGF0ZS1jb25maWcgc3RhcnQtYnVpbGRzIGNvbmZpZy1vcGVuLWZpbGUtY29tbWFuZCBzdGFydCByZXNvbHZlLWZuLXZhciBjb25maWctZmluYWxpemUtcmVwbC1vcHRpb25zIHJlcGwtZW52LW9wdHMtb3B0IGZpZ3doZWVsLW1vZGU/IHJlYWQtZWRuLXN0cmluZyBydW4taG9va3Mgd2Fybi10aGF0LWRpci1ub3Qtb24tY2xhc3NwYXRoIGJ1aWxkLW9wdCBwcmVwLWNsaWVudC1jb25maWcgcHJpbnQtY29uZiBidWlsZC1vbmNlLW1haW4tb3B0IGNvbmZpZy1yZXBsLWNvbm5lY3QgY29uZmlnLWNsanNjLW9wdHMtanNvbiBjb25maWctY2xqcy1kZXZ0b29scyBidWlsZC1jbGpzIGZpZ3VyZS1kZWZhdWx0LWFzc2V0LXBhdGggY29uZmlnLWFuc2ktY29sb3Itb3V0cHV0ISBhZGp1c3Qtb3B0aW9uLWRvY3MgZGVmYXVsdC1tYWluIGNvbmZpZy1ydW4tcHJlLXN0YXJ0LWhvb2tzIGFkZC10ZW1wLWRpciB3YXRjaC1jc3MgcHJvY2Vzcy1maWd3aGVlbC1tYWluLWVkbiBidWlsZC1yZWdpc3RyeSBjb25maWctY2xlYW4tb3V0cHV0cyEgYWRkLWRlZmF1bHQtc3lzdGVtLWFwcC1oYW5kbGVyIHJlc29sdmUtcmluZy1oYW5kbGVyIGJhY2tncm91bmQtYnVpbGQgY29uZmlnLWF1dG8tYnVuZGxlIGdldC1idWlsZC13aXRoLWVycm9yIHZhbGlkYXRlLWJ1bmRsZS1hZHZhbmNlZCEgaG9zdC1wb3J0LWFyZz8gcmVwbC1hcGktZG9jcyBidWlsZCB2YWxpZGF0ZS1vdXRwdXQtcGF0aHMtcmVsYXRpb25zaGlwISBmaXgtc2ltcGxlLWJvb2wtYXJnKiBwcmludC1jb25maWctb3B0IHZhbGlkYXRlLWZpeC10YXJnZXQtY2xhc3NwYXRoISBzdGF0dXMgc2VydmUtYWN0aW9uIHZhbGlkYXRlLWJhc2ljLWFzc3VtcHRpb25zISBtZXJnZS1leHRyYS1rZXktd2l0aCBjbGVhbi1vdXRwdXRzLW9wdCByZXBsLW1haW4tb3B0IG91dHB1dC10by1pbnNpZGUtb3V0cHV0LWRpcj8gZGVmYXVsdC1tYWluLXJlcGwtaW5kZXgtYm9keSBidW5kbGUtb25jZT8gcmVwbC1oZWFkZXIgZmlnd2hlZWwtb3B0cy1vcHQgc2hvdWxkLWFkZC10ZW1wLWRpcj8gcmVwbCBjb25maWctZXZhbC1iYWNrIHB3ZC1saWtlbHktcHJvamVjdC1yb290LWRpcj8gbG9nLXNlcnZlci1zdGFydCB3YXRjaC1kaXItZnJvbS1ucyBkZWZhdWx0LW91dHB1dC1kaXIgc3RhcnQtZmlsZS1sb2dnZXIgc3RhcnQtYnVpbGQqIGNsZWFuLW91dHB1dHMqIGNvbmZpZy1idWlsZC1pbnB1dHMgcmVwbC1jb25uZWN0aW9uPyBhdXRvYnVpbGRpbmctaWRzIGZpZy1jb3JlLWJ1aWxkIHJlc2V0KiBjbGVhbi1hbGwtYnVpbGRzISB2YWxpZGF0ZS1jbGkhKiBjbGVhbi1idWlsZCBleHRyYS1tYWluLWFsdGVyZWQtb3V0cHV0LWZpbGVuYW1lcyBjb25maWctcHJlLXBvc3QtaG9va3MgY29uZmlnLWZvci1pZCBzZXJ2ZS1tYWluLW9wdCB1cGRhdGUtc2VydmVyLWhvc3QtcG9ydF0sIDp0eXBlIDpjbGosIDpzeW0gZmlnd2hlZWwubWFpbn0gezp2YXItc3ltcyBbQU5TSS1DT0RFUyBhbnNpLWNvZGUgKnVzZS1jb2xvciogKmZvcm1hdHRlcnMqIHN0eWxlKiBhbnNpLWZuIHdpdGgtYWRkZWQtZm9ybWF0dGVycyBhbnNpLWZuKiBmb3JtYXQtc3RyIHN0eWxlXSwgOnR5cGUgOmNsaiwgOnN5bSBmaWd3aGVlbC5tYWluLmFuc2ktcGFydHl9IHs6dmFyLXN5bXMgW2xpc3Rlbl0sIDp0eXBlIDpjbGosIDpzeW0gZmlnd2hlZWwubWFpbi5hc3luYy1yZXN1bHR9IHs6dmFyLXN5bXMgW2N1cnJlbnQtc3RhdGUgcmVhZC1hbmFseXNpcy1jYWNoZSBkZWZhdWx0LXBhc3NlcyBjdXJyZW50LWZpbGUgY3VycmVudC1uc10sIDp0eXBlIDpjbGosIDpzeW0gZmlnd2hlZWwubWFpbi5jb21wYXQuYW5hLWFwaX0gezp2YXItc3ltcyBbZGVmYXVsdC1pbmRleC1jb2RlIG1haW4tYWN0aW9uIHNlcnZlLW9ubHktbWlkZGxld2FyZSBleHRyYS1tYWluLWJvZHkgbWlzc2luZy1pbmRleCBleHRyYS1tYWluLWhvc3RpbmcgbWlkZGxld2FyZSBkZXYtZW5kcG9pbnQgbWlzc2luZy1pbmRleC1taWRkbGV3YXJlIG1haW4td3JhcHBlcl0sIDp0eXBlIDpjbGosIDpzeW0gZmlnd2hlZWwubWFpbi5oZWxwZXJ9IHs6dmFyLXN5bXMgW2V4Y2VwdGlvbi10aXRsZSBmb3JtYXQtc3RhY2t0cmFjZS1leCBzaW1wbGUtZXJyb3IgZXhjZXB0aW9uLW1lc3NhZ2UgZmlsZS1saW5lLWNvbCBzd2l0Y2gtdG8tZmlsZS1oYW5kbGVyISBsZXZlbHMtbWFwICpzeW50YXgtZXJyb3Itc3R5bGUqIGZvcm1hdC1leCBkZWZhdWx0LWxvZ2dlciBmaWd3aGVlbC5tYWluLmxvZ2dpbmcucHJveHkkamF2YS51dGlsLmxvZ2dpbmcuRm9ybWF0dGVyJGZmMTkyNzRhIGV4Y2VwdC1kYXRhLT5mb3JtYXQtZGF0YSBleGNlcHQtZGF0YS0+Zm9ybWF0LWxpbmVzLWRhdGEgZmlnd2hlZWwubWFpbi5sb2dnaW5nLnByb3h5JGphdmEudXRpbC5sb2dnaW5nLkhhbmRsZXIkZmYxOTI3NGEgY2xqcy1zeW50YXgtd2FybmluZyBzeW50YXgtZXhjZXB0aW9uIGZ3c2V0bGV2ZWwhIGZvcm1hdC10cmFjZS1saW5lIGZhaWx1cmUgd2FybiB0cmFjZSBMb2cgZGVidWcgZm9ybWF0LWV4Y2VwdGlvbi13YXJuaW5nIGV4Y2VwdGlvbi13aXRoLWV4Y2VycHQgcmVtb3ZlLWhhbmRsZXJzIHdyaXRlci1oYW5kbGVyIGZ3bG9nISBzZXQtbGV2ZWwgKmxvZ2dlciogaW5mbyBmb3JtYXQtbG9nLXJlY29yZCBmb3JtYXQtZXhjZXB0aW9uLXdhcm5pbmctY29uY2lzZSBlcnJvciBmaWctZm9ybWF0dGVyIHN1Y2NlZWRdLCA6dHlwZSA6Y2xqLCA6c3ltIGZpZ3doZWVsLm1haW4ubG9nZ2luZ30gezp2YXItc3ltcyBbaW5kZXgtanMtZnJvbS1kYXRhIGtlYmFiLWNhc2UgYnVuZGxlLT5mb3JlaWduLWxpYiBidW5kbGVzLT5mb3JlaWduLWxpYnMgaGFuZGxlLWpzLWV4cG9ydHMgaW1wb3J0LWZpbGUtPmZvcmVpZ24tbGliIGNvbmZpZyB3aW5kb3ctc3RhdGVtZW50cyBleHBvcnRzLT5mb3JlaWduLWxpYnMgZW1pdC1qcy1leHBvcnQgY29udGVudC0+d2luZG93LWV4cG9ydHMgY2FtZWwtY2FzZSBpbXBvcnQtc3RhdGVtZW50IGNoZWNrLXRoYXQtZmlsZXMtZXhpc3RdLCA6dHlwZSA6Y2xqLCA6c3ltIGZpZ3doZWVsLm1haW4ubnBtfSB7OnZhci1zeW1zIFtmaWdicmlkZ2Utc2V0dXAtY29kZSBwcm9kLW1vZHVsZS1qcyBwbHVnaW4gc2V0dXAtcmVhY3QtbmF0aXZlIHJlYWN0LW5hdGl2ZS1zb3VyY2UtZGlyIGluZGV4anMgdG9vbC1uYW1lXSwgOnR5cGUgOmNsaiwgOnN5bSBmaWd3aGVlbC5tYWluLnJlYWN0LW5hdGl2ZX0gezp2YXItc3ltcyBbcmVsYXRpdml6ZSBhc3NldC1yZXF1aXJlIHJld3JpdGUtYXNzZXQtcmVxdWlyZXMgd3JpdGUtaWYtZGlmZmVyZW50IG5vcm1hbGl6ZSBleHBvcnQtZGVwIGN1c3RvbS1wYXNzZXMganMtcmVxdWlyZS1hc3NldD8ganM/IGNvbGxlY3QtbGliLXJlcXVpcmVzIGFsbC1maWctYXNzZXRzIGpzLXJlcXVpcmUtbGliPyBjb250ZW50cy1lcXVhbD8gbWtkaXJzIGxvYWQtYW5hbHlzaXMga3JlbGwtbnBtLWRlcHMtanMgY29sbGVjdC1ucyEganMtcmVxdWlyZT8gcG9zdC1idWlsZC1ob29rIHdyaXRlLWFzc2V0cy1qcyBjYWNoZS1rcmVsbC1yZXF1aXJlcyBhbGwtYXNzZXRzIG5zLT5jYWNoZS1maWxlIGFzc2V0cy1qcyBhbGwtcmVxdWlyZXMgYXNzZXQ/IHdyaXRlLWtyZWxsLW5wbS1kZXBzLWpzIGZpbGUtZXh0IHVwZGF0ZS1yZXF1aXJlLXBhdGggbGliP10sIDp0eXBlIDpjbGosIDpzeW0gZmlnd2hlZWwubWFpbi5yZWFjdC1uYXRpdmUua3JlbGwtcGFzc2VzfSB7OnZhci1zeW1zIFt1bmtub3duLWZsYWc/IHNpbWlsYXItZmxhZ3MgbWlzc2luZy1idWlsZC1maWxlPyBnZXQtZXhwbGFpbi1kYXRhIGV4cGVjdGVkLXN0ci13aXRoLWRvYyBlcnJvci1iZWZvcmUtbWFpbi1mbGFnPyB2YWxpZGF0ZS1jbGkhIGVycm9yLWFmdGVyLW1haW4tZmxhZz8gYnVpbGQtZXhpc3RzPyBhZGQtcHJvYmxlbS10eXBlcyB1cGRhdGUtcHJvYmxlbXMgaWdub3JlZC1hcmdzPyBkb2MtZm9yLWZsYWcgYWxsLWZpbGVzLWFuZC1yZXNvdXJjZXMtc2hvdWxkLWV4aXN0IHZhbGlkYXRlLWNsaS1leHRyYSBjbGpzLW5hbWVzcGFjZS1hdmFpbGFibGU/IGNhbi1yZXF1aXJlLWFuZC1yZXNvbHZlLXZhcj8gcmVzb3VyY2UtZXhpc3RzPyBnZXQtZmlyc3QtbWFpbi1hcmcgZXh0cmEtaW5wdXQ/IGlubGluZS1lZG4tc3RyaW5nPyB1bmtub3duLXNjcmlwdC1pbnB1dD8gbm90LXJlcGwtZW52LW9wdCBwcm9ibGVtLXR5cGUgZXJyb3ItcG9zIHJlYWRhYmxlPyBhZGQtcHJvYmxlbS10eXBlIGZpbGUtb3ItcmVzb3VyY2Utc2hvdWxkLWV4aXN0IG5vdC1jb21waWxlLW9wdCB1cGRhdGUtcHJvYmxlbSBwb3NpdGlvbi1vZi1maXJzdC1tYWluLWFyZyByZXNvdXJjZS1wYXRoPyBob3N0LXBvcnQ/XSwgOnR5cGUgOmNsaiwgOnN5bSBmaWd3aGVlbC5tYWluLnNjaGVtYS5jbGl9IHs6dmFyLXN5bXMgW25vbi1ibGFuay1zdHJpbmc/IHZhbGlkYXRlLWNvbmZpZyEgZmlsZS1leGlzdHM/IGV4cGVjdGVkLXN0ci13aXRoLWRvYyBleHBvdW5kLXN0cmluZyBtYXJrZG93bi1kb2NzIHNwZWMtZG9jIG1hcmtkb3duLW9wdGlvbi1kb2NzIGRpcmVjdG9yeS1leGlzdHM/IGRlZi1zcGVjLW1ldGEgaGFzLWNsanMtc291cmNlLWZpbGVzPyAqc3BlYy1tZXRhKiB1bnF1b3RlZC1zeW1ib2w/IG5vdC1mbGFnPyBvdXRwdXQtZG9jcyBlbnN1cmUtYWxsLXJlZ2lzdGVyZWQta2V5cy1pbmNsdWRlZCBpbnRlZ2VyLWxpa2U/IGZsYWctYXJnPyBrZXktbWV0YS1mb3ItcHJvYmxlbV0sIDp0eXBlIDpjbGosIDpzeW0gZmlnd2hlZWwubWFpbi5zY2hlbWEuY29yZX0gezp2YXItc3ltcyBbbnM/IGFkZC1leHRyYS1tYWluIGdldC10ZXN0LW5hbWVzcGFjZXMgdGVzdGluZy1maWxlLWNvbnRlbnQgcGx1Z2luIG5vLW5hbWVzcGFjZXMtY29udGVudCBmaW5kLXRlc3QtbmFtZXNwYWNlcyBhZGQtZmlsZS1nZW4gZ2VubmVkLXRlc3QtbnMgZ2V0LXF1b3RlZC10ZXN0LW5zZXMgYWRkLWF1dG8tdGVzdGluZz8gcnVuLXRlc3RzLWFzeW5jIHByZS1ob29rIHJ1bi10ZXN0cyBuYW1lc3BhY2UtaGFzLXRlc3Q/IGNsanMtdGVzdC1kaXNwbGF5PyB0ZXN0LWZpbGUtb3V0cHV0LXRvXSwgOnR5cGUgOmNsaiwgOnN5bSBmaWd3aGVlbC5tYWluLnRlc3Rpbmd9IHs6dmFyLXN5bXMgW2R5bmFtaWMtY2xhc3NwYXRoIHJlcXVpcmUtcmVzb2x2ZS12YXItb3ItZXJyb3Igc3lzdGVtLW9zIGZpbGUtaGFzLWNoYW5nZWQ/IGNvbW1hbmQtZXhpc3RzPyByZXF1aXJlLXJlc29sdmUtaGFuZGxlci1vci1lcnJvciBucy0+bG9jYXRpb24gZGlyLW9uLWNsYXNzcGF0aD8gLT5wYXRoIGZpbmQtc291cmNlLWRpci1mb3ItY2xqcy1ucyByZXF1aXJlLXJlc29sdmUtdmFyIGRpci1vbi1jdXJyZW50LWNsYXNzcGF0aD8gcmVxdWlyZS1yZXNvbHZlLWhhbmRsZXIgb3M/IG5zLWF2YWlsYWJsZT8gbnB4LWV4ZWN1dGFibGUgZGVsZXRlLWZpbGUtb3ItZGlyZWN0b3J5IHN0YXRpYy1jbGFzc3BhdGggZmlsbC1jb25uZWN0LXVybC10ZW1wbGF0ZSB2YWxpZC1zb3VyY2UtcGF0aD8gcmViZWwtcmVhZGxpbmU/IGVuc3VyZS1keW5jbGFzcy1sb2FkZXIhICpjb21waWxlLWNvbGxlY3RvciogcGF0aC1wYXJ0cyByb290LWR5bmNsYXNzLWxvYWRlciBmaW5kLW5zLXNvdXJjZS1pbi1sb2NhbC1kaXIgcmVxdWlyZT8gc2V0dXAtY29ubmVjdC11cmwgc291cmNlLWZpbGUtdHlwZXMtaW4tZGlyIHNhZmUtbnMtPmxvY2F0aW9uIHJlbGF0aXZpemVkLXBhdGgtcGFydHMgYWRkLWNsYXNzcGF0aCFdLCA6dHlwZSA6Y2xqLCA6c3ltIGZpZ3doZWVsLm1haW4udXRpbH0gezp2YXItc3ltcyBbcmVzZXQtd2F0Y2ghIGpvaW4gcmVhbC1maWxlPyBydW5uaW5nPyBzdWZmaXgtZmlsdGVyICpoYXdrLW9wdGlvbnMqIHJlbW92ZS13YXRjaCEgc3RvcCEgKndhdGNoZXIqIGZpbGUtc3VmZml4IGFsdGVyLXdhdGNoZXMgYWRkLXdhdGNoISB0aHJvdHRsZV0sIDp0eXBlIDpjbGosIDpzeW0gZmlnd2hlZWwubWFpbi53YXRjaGluZ30gezp2YXItc3ltcyBbYWJzdHJhY3Qtd2Vic29ja2V0LWNvbm5lY3Rpb24gYnJvYWRjYXN0LWZvci1yZXNwb25zZSBhc3ljLWh0dHAtcG9sbGluZy1taWRkbGV3YXJlIGxvbmctcG9sbC1jYXB0dXJlLXJlc3BvbmQgaHR0cC1wb2xsaW5nLWNvbm5lY3Qgc2VuZC1mb3ItZXZhbCAtPkZpZ3doZWVsUmVwbEVudiBuZWdvdGlhdGUtaWQgcnVuLWRlZmF1bHQtc2VydmVyIGh0dHAtbG9uZy1wb2xsaW5nLWNvbm5lY3QgKmNvbm5lY3Rpb25zKiByZXBsLWVudiogbG9nIG5vLWNvbm5lY3Rpb24tcmVzdWx0IHJ1bi1kZWZhdWx0LXNlcnZlciogd2FpdC1mb3ItY29ubmVjdGlvbiBzZW5kLWZvci1yZXNwb25zZSBwcmludC10by1zdHJlYW0ganNvbi1yZXNwb25zZSByZXBsLWVudi1wcmludCBmaWxsLXNlcnZlci11cmwtdGVtcGxhdGUgZGVmYXVsdC1zc2wtcG9ydCBjb25ucyBwaW5nIHRyaW0tbGFzdC1uZXdsaW5lIGFkZC1saXN0ZW5lciB0YWtlbi1uYW1lcyBjb25uZWN0aW9uLXNlbmQgcGluZy10aHJlYWQgaHR0cC1sb25nLXBvbGxpbmctZW5kcG9pbnQgZXZhbHVhdGUgbmFtZS1saXN0IGRlZmF1bHQtcG9ydCBmb2N1cyogcmVtb3ZlLWxpc3RlbmVyIHdpbGwtZXZhbC1vbiBsYXVuY2gtYnJvd3NlciBzZW5kLWZvci1yZXNwb25zZSogcmVwbC1lbnYgY2xlYXItbGlzdGVuZXJzIHNjcmF0Y2ggaHR0cC1wb2xsaW5nLW1pZGRsZXdhcmUgbG9uZy1wb2xsLXNlbmQgdHJ5LXBvcnQgY3JlYXRlLWNvbm5lY3Rpb24hIGh0dHAtcG9sbGluZy1zZW5kIGR5bmxvYWQgbGF1bmNoLWpzIGxhdW5jaC1ub2RlIHBhcnNlLXF1ZXJ5LXN0cmluZyBhdmFpbGFibGUtbmFtZXMgc2V0dXAgdGVhci1kb3duLWV2ZXJ5dGhpbmctYnV0LXNlcnZlciBsYXVuY2gtanMtaGVscGVyIHRlYXItZG93bi1zZXJ2ZXIgb3Blbi1jb25uZWN0aW9ucyByZW1vdmUtY29ubmVjdGlvbiEgbGlzdC1jb25uZWN0aW9ucyBjb25ucyogaHR0cC1wb2xsaW5nLWVuZHBvaW50IGV2YWwtY29ubmVjdGlvbnMgbmFtaW5nLXJlc3BvbnNlIGZvY3VzIHJlY2VpdmUtbWVzc2FnZSEgbWFwLT5GaWd3aGVlbFJlcGxFbnYgY29ubmVjdGlvbnMtYXZhaWxhYmxlICpzZXJ2ZXIqXSwgOnR5cGUgOmNsaiwgOnN5bSBmaWd3aGVlbC5yZXBsfSB7OnZhci1zeW1zIFtydW4tamV0dHkgcnVuLXNlcnZlciBkZWZhdWx0LW9wdGlvbnMgYXN5bmMtd2Vic29ja2V0LWNvbmZpZ3VyYXRvciB3ZWJzb2NrZXQtY29ubmVjdGlvbi1kYXRhIGZpZ3doZWVsLnNlcnZlci5qZXR0eV93ZWJzb2NrZXQucHJveHkkb3JnLmVjbGlwc2UuamV0dHkud2Vic29ja2V0LmFwaS5XZWJTb2NrZXRBZGFwdGVyJGZmMTkyNzRhIGFkYXB0LWZpZ3doZWVsLXdzIHByb3h5LXdzLWhhbmRsZXIgZmlnd2hlZWwuc2VydmVyLmpldHR5X3dlYnNvY2tldC5wcm94eSRvcmcuZWNsaXBzZS5qZXR0eS53ZWJzb2NrZXQuc2VydmVyLldlYlNvY2tldEhhbmRsZXIkZmYxOTI3NGEgYnVpbGQtcmVxdWVzdC1tYXAgc2V0LWxvZy1sZXZlbCFdLCA6dHlwZSA6Y2xqLCA6c3ltIGZpZ3doZWVsLnNlcnZlci5qZXR0eS13ZWJzb2NrZXR9IHs6dmFyLXN5bXMgW3dyYXAtYXN5bmMtY29ycyBmaXgtaW5kZXgtbWltZS10eXBlIHdyYXAtZmlnd2hlZWwtZGVmYXVsdHMgaGFuZGxlLWZpcnN0IGRlZmF1bHQtc3RhY2sgZGVmYXVsdC1vcHRpb25zIHJlc291cmNlLXJvb3QtaW5kZXggZGVmYXVsdC1pbmRleC1odG1sIGJlc3QtZ3Vlc3Mtc2NyaXB0LXBhdGggd3JhcC1uby1jYWNoZSBpbmRleC1odG1sIG5vdC1mb3VuZCBzdGFjayBoYW5kbGUtYXN5bmMtY29yc10sIDp0eXBlIDpjbGosIDpzeW0gZmlnd2hlZWwuc2VydmVyLnJpbmd9IHs6dmFyLXN5bXMgW3VuLWNsb2p1cmUtZXJyb3Ita2V5d29yZHMgc3RyLWV4Y2VycHQgY2xqcy1taXNzaW5nLXJlcXVpcmVkLW5zPyBlb2YtcmVhZGVyLWV4PyBjbGpzLWFuYWx5c2lzLWV4PyBhZGQtZXhjZXJwdCBtZXNzYWdlIGRhdGEgZmlyc3QtZmlsZS1zb3VyY2UgY29ycmVjdC1maWxlLXBhdGggZmlsZS1leGNlcnB0IGJsYW1lLXBvcyBtYXAta2V5cyBleC10eXBlIHJlbGF0aXZpemUtbG9jYWwgcm9vdC1zb3VyY2UtPmZpbGUtZXhjZXJwdCBjbGpzLWZhaWxlZC1jb21waWxpbmc/IGNsai1jb21waWxlci1leD8gcGFyc2UtZXhjZXB0aW9uIGNsanMtbm8tZmlsZS1mb3ItbmFtZXNwYWNlPyByZWFkZXItZXg/IHNvdXJjZS1maWxlIGNsai1zcGVjLWVycm9yPyBleGNlcHRpb24tdHlwZT9dLCA6dHlwZSA6Y2xqLCA6c3ltIGZpZ3doZWVsLnRvb2xzLmV4Y2VwdGlvbnN9IHs6dmFyLXN5bXMgW3Byb2Nlc3MtaGFuZGxlciBwcm9jZXNzLXBhdGhzIGV4dHJhY3QtcGF0aHMtYnktdHlwZSBjcmVhdGVkPyB3YXRjaCEgc3RvcCEgZGVsZXRlZD8gcmVtb3ZlLWR1cGxpY2F0ZS1wYXRocyBmaWxlPyByZW1vdmUtY2hpbGRyZW4tcGF0aHMgcHJvY2Vzcy1jb250ZXh0IGRpcmVjdG9yeT8gbW9kaWZpZWQ/IGNhdGNoLWVycm9yc10sIDp0eXBlIDpjbGosIDpzeW0gaGF3ay5jb3JlfSB7OnZhci1zeW1zIFtzdGFuZGFyZC13YXRjaC1ldmVudC1raW5kcyBwb2xsaW5nLXdhdGNoZXItaW1wbCBiYXJiYXJ5LXdhdGNoLWV2ZW50LWtpbmRzIHN0b3AhIG5ldy13YXRjaGVyIGJhcmJhcnktd2F0Y2hlci1pbXBsIHNlbnNpdGl2aXR5LXdhdGNoLWV2ZW50LW1vZGlmaWVycyBXYXRjaGVyIGphdmEtd2F0Y2hlci1pbXBsIHRha2UhIHJlZ2lzdGVyIV0sIDp0eXBlIDpjbGosIDpzeW0gaGF3ay53YXRjaGVyfSB7OnZhci1zeW1zIFtub3JtYWxpemUtZWxlbWVudCBjb21waWxlLWF0dHItbWFwIHJlbmRlci1odG1sIEh0bWxSZW5kZXJlciBjb21waWxlLWh0bWxdLCA6dHlwZSA6Y2xqLCA6c3ltIGhpY2N1cC5jb21waWxlcn0gezp2YXItc3ltcyBbaHRtbCBoXSwgOnR5cGUgOmNsaiwgOnN5bSBoaWNjdXAuY29yZX0gezp2YXItc3ltcyBbd3JhcC1hdHRycyBkZWZlbGVtIGRlZmh0bWxdLCA6dHlwZSA6Y2xqLCA6c3ltIGhpY2N1cC5kZWZ9IHs6dmFyLXN5bXMgW3hodG1sIGRvY3R5cGUgeG1sLWRlY2xhcmF0aW9uIGh0bWw0IGluY2x1ZGUtanMgaW5jbHVkZS1jc3MgaHRtbDUgeGh0bWwtdGFnXSwgOnR5cGUgOmNsaiwgOnN5bSBoaWNjdXAucGFnZX0gezp2YXItc3ltcyBbVVJMRW5jb2RlICplbmNvZGluZyogd2l0aC1iYXNlLXVybCB0by1zdHIgd2l0aC1lbmNvZGluZyAqYmFzZS11cmwqIGFzLXN0ciB1cmwtZW5jb2RlIFRvU3RyaW5nIFRvVVJJICpodG1sLW1vZGUqIGVzY2FwZS1odG1sIHRvLXVyaSB1cmxdLCA6dHlwZSA6Y2xqLCA6c3ltIGhpY2N1cC51dGlsfSB7OnZhci1zeW1zIFtub2RlLT5odG1sIGNvZGUtPmhpY2N1cCBjb2RlLT5odG1sIG5vZGUtPmhpY2N1cCBlc2NhcGUtaHRtbC1zdHJdLCA6dHlwZSA6Y2xqLCA6c3ltIGh0bWwtc291cC5jb3JlfSB7OnZhci1zeW1zIFtlc2NhcGUtaHRtbC1zdHIgbm9kZS0+aHRtbCBjb2RlLT5odG1sIG5vZGUtPmhpY2N1cCBjb2RlLT5oaWNjdXBdLCA6dHlwZSA6Y2xqcywgOnN5bSBodG1sLXNvdXAuY29yZX0gezp2YXItc3ltcyBbY2FuLXJlZG8/IGF0b20/IGdldC1jdXJyZW50LXN0YXRlIHVuZG8hIHJlZG8hIGNhbi11bmRvPyBnZXQtbmV4dC1zdGF0ZSB1cGRhdGUtY3Vyc29yLXBvc2l0aW9uISB1cGRhdGUtZWRpdC1oaXN0b3J5ISBjcmVhdGUtZWRpdC1oaXN0b3J5IGdldC1wcmV2aW91cy1zdGF0ZV0sIDp0eXBlIDpjbGpzLCA6c3ltIG1pc3Rha2VzLXdlcmUtbWFkZS5jb3JlfSB7OnZhci1zeW1zIFtyZWFkK3N0cmluZyBib29sPyAqc3VwcHJlc3MtcmVhZCogKmRlZmF1bHQtZGF0YS1yZWFkZXItZm4qIHJlYWQgZGVmYXVsdC1kYXRhLXJlYWRlcnMgKmRhdGEtcmVhZGVycyogKnJlYWQtZGVsaW0qIHJlc29sdmUtc3ltYm9sICphbGlhcy1tYXAqICp3cmFwLXZhbHVlLWFuZC1hZGQtbWV0YWRhdGE/KiByZWFkLXJlZ2V4IHNiIHJlYWQtc3RyaW5nIG1hcC1mdW5jXSwgOnR5cGUgOmNsanMsIDpzeW0gb2FrY2xqcy50b29scy5yZWFkZXJ9IHs6dmFyLXN5bXMgW21hdGNoLW51bWJlciBza2lwLWxpbmUgaW50LXBhdHRlcm4gcmVhZC1jb21tZW50IHBhcnNlLXN5bWJvbCBudW1iZXItbGl0ZXJhbD8gcmVhZC1wYXN0IGZsb2F0LXBhdHRlcm4gbWF0Y2hlcz8gdGhyb3dpbmctcmVhZGVyIHJhdGlvLXBhdHRlcm5dLCA6dHlwZSA6Y2xqcywgOnN5bSBvYWtjbGpzLnRvb2xzLnJlYWRlci5pbXBsLmNvbW1vbnN9IHs6dmFyLXN5bXMgW3Rocm93LWJhZC1kaXNwYXRjaCB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtZXNjYXBlIHRocm93LWR1cC1rZXlzIHRocm93LWJhZC1ucyB0aHJvdy11bmtub3duLXJlYWRlci10YWcgdGhyb3ctZW9mLWF0LWRpc3BhdGNoIHRocm93LWJhZC1tZXRhZGF0YS10YXJnZXQgdGhyb3ctaW52YWxpZC1udW1iZXIgcmVhZGVyLWVycm9yIHRocm93LWludmFsaWQtdW5pY29kZS1saXRlcmFsIHRocm93LW5zLW1hcC1uby1tYXAgdGhyb3ctdW5zdXBwb3J0ZWQtY2hhcmFjdGVyIHRocm93LWZlYXR1cmUtbm90LWtleXdvcmQgdGhyb3ctZW9mLWRlbGltaXRlZCB0aHJvdy1lb2YtaW4tY2hhcmFjdGVyIHRocm93LWJhZC1jaGFyIGVvZi1lcnJvciB0aHJvdy1iYWQtbWV0YWRhdGEgdGhyb3ctZW9mLXJlYWRpbmcgdGhyb3ctZW9mLWVycm9yIGlsbGVnYWwtYXJnLWVycm9yIHRocm93LWludmFsaWQtb2N0YWwtbGVuIHRocm93LWludmFsaWQtdW5pY29kZS1kaWdpdCB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtZGlnaXQtaW4tdG9rZW4gdGhyb3ctaW52YWxpZC11bmljb2RlLWxlbiB0aHJvdy1zaW5nbGUtY29sb24gdGhyb3ctb2RkLW1hcCB0aHJvdy1iYWQtb2N0YWwtbnVtYmVyIHRocm93LWJhZC1yZWFkZXItdGFnIHRocm93LXVubWF0Y2gtZGVsaW1pdGVyIHRocm93LWludmFsaWQtY2hhcmFjdGVyLWxpdGVyYWwgdGhyb3ctaW52YWxpZC11bmljb2RlLWNoYXIgdGhyb3ctYmFkLWVzY2FwZS1jaGFyIHRocm93LW5vLWRpc3BhdGNoIHRocm93LWVvZi1hdC1zdGFydCB0aHJvdy1pbnZhbGlkXSwgOnR5cGUgOmNsanMsIDpzeW0gb2FrY2xqcy50b29scy5yZWFkZXIuaW1wbC5lcnJvcnN9IHs6dmFyLXN5bXMgW2luc3BlY3RdLCA6dHlwZSA6Y2xqcywgOnN5bSBvYWtjbGpzLnRvb2xzLnJlYWRlci5pbXBsLmluc3BlY3R9IHs6dmFyLXN5bXMgW3JlYWRlci1jb25kaXRpb25hbCB3aGl0ZXNwYWNlPyBjaGFyLWNvZGUgbGFzdC1pZCBjaGFyIG51bWVyaWM/IHNlY29uZCcgZGVzdWdhci1tZXRhIG5leHQtaWQgZXgtaW5mbz8gcmVhZGVyLWNvbmRpdGlvbmFsPyBuZXdsaW5lPyBuYW1lc3BhY2Uta2V5cyB3cy1yeF0sIDp0eXBlIDpjbGpzLCA6c3ltIG9ha2NsanMudG9vbHMucmVhZGVyLmltcGwudXRpbHN9IHs6dmFyLXN5bXMgW2xvZy1zb3VyY2VdLCA6dHlwZSA6Y2xqLCA6c3ltIG9ha2NsanMudG9vbHMucmVhZGVyLnJlYWRlci10eXBlc30gezp2YXItc3ltcyBbaW5kZXhpbmctcHVzaC1iYWNrLXJlYWRlciBsb2ctc291cmNlKiBtZXJnZS1tZXRhIFJlYWRlciBzb3VyY2UtbG9nZ2luZy1wdXNoLWJhY2stcmVhZGVyIHVucmVhZCBwZWVrLWNoYXIgSVB1c2hiYWNrUmVhZGVyIGluZGV4aW5nLXJlYWRlcj8gc3RyaW5nLXJlYWRlciByZWFkLWNoYXIgZ2V0LWNvbHVtbi1udW1iZXIgZ2V0LWZpbGUtbmFtZSByZWFkLWxpbmUgc3RyaW5nLXB1c2gtYmFjay1yZWFkZXIgbGluZS1zdGFydD8gc291cmNlLWxvZ2dpbmctcmVhZGVyPyBJbmRleGluZ1JlYWRlciBub2RlLXJlYWRhYmxlLXB1c2gtYmFjay1yZWFkZXIgZ2V0LWxpbmUtbnVtYmVyXSwgOnR5cGUgOmNsanMsIDpzeW0gb2FrY2xqcy50b29scy5yZWFkZXIucmVhZGVyLXR5cGVzfSB7OnZhci1zeW1zIFtydWxlc2V0IG1hcC0+TWVtb3J5Tm9kZSAtPkpvaW5Ob2RlIC0+cnVsZSBtYXAtPkZhY3QgLT5CaW5kaW5nIG1hcC0+QWxwaGFOb2RlIC0+RmFjdCBmaXJlLXJ1bGVzIGluc2VydCAqbWF0Y2gqIC0+UnVsZSAtPkFscGhhTm9kZSBhZGQtcnVsZSAtPlNlc3Npb24gLT5Db25kaXRpb24gLT5zZXNzaW9uIHJlc2V0ISByZXRyYWN0ISBtYXAtPkNvbmRpdGlvbiAtPk1hdGNoIG1hcC0+UnVsZSBpbnNlcnQhICpzZXNzaW9uKiBtYXAtPk1hdGNoIG1hcC0+U2Vzc2lvbiAtPk1lbW9yeU5vZGUgcmV0cmFjdCBtYXAtPlRva2VuIG1hcC0+Sm9pbk5vZGUgbWFwLT5CaW5kaW5nIHF1ZXJ5LWFsbCBwYXJzZSAtPlRva2VuXSwgOnR5cGUgOmNsaiwgOnN5bSBvZG95bGUucnVsZXN9IHs6dmFyLXN5bXMgWy0+cnVsZSBmaXJlLXJ1bGVzIGluc2VydCAqbWF0Y2gqIGFkZC1ydWxlIC0+c2Vzc2lvbiByZXNldCEgcmV0cmFjdCEgaW5zZXJ0ISAqc2Vzc2lvbiogcmV0cmFjdCBxdWVyeS1hbGwgcGFyc2VdLCA6dHlwZSA6Y2xqcywgOnN5bSBvZG95bGUucnVsZXN9IHs6dmFyLXN5bXMgW2F0b20gcnVsZXNldCByZWFjdGl2ZSBwcm9wICptYXRjaGVzKl0sIDp0eXBlIDpjbGosIDpzeW0gb2RveWxlLnJ1bX0gezp2YXItc3ltcyBbKm1hdGNoZXMqIGF0b20gcHJvcCByZWFjdGl2ZV0sIDp0eXBlIDpjbGpzLCA6c3ltIG9kb3lsZS5ydW19IHs6dmFyLXN5bXMgW2Fzc2lnbi1yZWFjdC1jaGVja3N1bSBNT0QgYWRsZXIzMl0sIDp0eXBlIDpjbGosIDpzeW0gb20uY2hlY2tzdW1zfSB7OnZhci1zeW1zIFtmb3JtIGF1ZGlvIGxvd2VyLWNhc2UtYXR0cnMgaW5wdXQgbWVudWl0ZW0gcmFkaWFsR3JhZGllbnQgYmFzZSBoMSBlbWJlZCBoMyBib2R5IG5vcm1hbGl6ZS1zdHlsZXMhIGtleWdlbiBnZW4tdGFnLWZuIHByb2dyZXNzIG1haW4gY2l0ZSByZWN0IHBvbHlsaW5lIG1hcCBvYmplY3QgaSBwIG5hdiBydWJ5IGEgbWVudSBibG9ja3F1b3RlIGltZyB0ZXh0IHNwYW4gdHJhY2sgZGF0YSB1IGRsIHNlbGVjdCBwb2x5Z29uIHBhdHRlcm4gaHRtbCB0aGVhZCBwYXRoIGRlbCBmaWVsZHNldCBhc2lkZSBmaWd1cmUgbWFwLT5UZXh0IGZpZ2NhcHRpb24gbWFzayBxIHRhZ3MgYmRpIHZpZGVvIGFkZHJlc3MgY2FwdGlvbiBjb250YWluZXItdGFnPyBkZCBjYW1lbC0+a2ViYWItY2FzZSBycCBociBtZXRhIHRib2R5IHRhYmxlIHByZSBlbGVtZW50IC0+UmVhY3RFbXB0eSB1bCBzdXAgZGZuIHN1YiBjb2VyY2UtYXR0ci1rZXkgbWFyayBzY3JpcHQgYmlnIGJ1dHRvbiB3YnIgc3Ryb25nIC0+RWxlbWVudCBsaSBkdCB0ZCB0ciBtYXAtPkVsZW1lbnQgY2lyY2xlIGNhbWVsLT5jb2xvbi1iZXR3ZWVuIHNlY3Rpb24gdGggdGltZSBvcHRncm91cCBhcHBlbmQhIGlmcmFtZSBsZWdlbmQgZW0ga2JkIGFydGljbGUgY2xpcFBhdGggY29sb24tYmV0d2Vlbi1hdHRycyBhYmJyIHRleHQtbm9kZSByZWFjdC10ZXh0LW5vZGUgLT5UZXh0IHNvdXJjZSBvdXRwdXQgcmVuZGVyLWF0dHJpYnV0ZSEgaGVhZGVyIGRhdGFsaXN0IHRmb290IHMgaW5zIG5vZGUgZm9vdGVyIHRpdGxlIGtlYmFiLWNhc2UtYXR0cnMgaDUgY2FudmFzIHBhcmFtIHJlbmRlci10by1zdHIgZGl2IG9wdGlvbiBzdW1tYXJ5IHNhbXAgc21hbGwgc3R5bGUgdGV4dGFyZWEgaDQgaGVhZCBnIG1hcC0+UmVhY3RFbXB0eSBnZW4tYWxsLXRhZ3Mgc3RvcCB2YXIgdHNwYW4gb2wgZGV0YWlscyByZW5kZXItdW5lc2NhcGVkLWh0bWwhIHJlbmRlci1zdHlsZXMhIGxpbmUgY29sIGxhYmVsIHBpY3R1cmUgcnQgcmVuZGVyLWVsZW1lbnQhIGg2IGxpbmsga2V5LWVzY2FwZS1sb29rdXAgZGVmcyBlc2NhcGUtaHRtbCBzdXBwb3J0ZWQtYXR0cnMgY2FtZWwtPm90aGVyLWNhc2UgY29sZ3JvdXAgbWV0ZXIgYmRvIGIgc3ZnIGVsbGlwc2UgbWFwLT5SZWFjdFRleHQgcmVuZGVyLXhtbC1hdHRyaWJ1dGUhIHJlbmRlci1hdHRyLW1hcCEgY29kZSBkaWFsb2cgbGluZWFyR3JhZGllbnQgLT5SZWFjdFRleHQgbm9zY3JpcHQgbm8tc3VmZml4IGgyIGFyZWEgYnIgY3JlYXRlLWVsZW1lbnRdLCA6dHlwZSA6Y2xqLCA6c3ltIG9tLmRvbX0gezp2YXItc3ltcyBbaW5kZXhlcyBxdWV1ZSEgaW5pdExvY2FsU3RhdGUgcXVldWUtc2VuZHMhIGNvbXBvbmVudFdpbGxNb3VudCBzZW5kISBjb21wb25lbnREaWRVcGRhdGUgZHJvcC1jb21wb25lbnQhIElSZWFjdExpZmVjeWNsZSAtcmVuZGVyLXRvLXN0cmluZyBJSW5kZXhlciBpbmRleC1jb21wb25lbnQhIHJlY29uY2lsZSEgc2NoZWR1bGUtcmVuZGVyISBJUmVjb25jaWxlciBJUmVhY3RET01FbGVtZW50IHNjaGVkdWxlLXNlbmRzISBiYXNpcy10IGNvbXBvbmVudFdpbGxVbm1vdW50IElSZWFjdENvbXBvbmVudCBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIGtleS0+Y29tcG9uZW50cyBhZGQtcm9vdCEgLXJlbmRlciBpbmRleC1yb290IHNob3VsZENvbXBvbmVudFVwZGF0ZSByZW5kZXIgY29tcG9uZW50V2lsbFVwZGF0ZSByZWYtZm9yIHJlaW5kZXghIHJlbW92ZS1yb290ISBjb21wb25lbnREaWRNb3VudF0sIDp0eXBlIDpjbGosIDpzeW0gb20ubmV4dC5wcm90b2NvbHN9IHs6dmFyLXN5bXMgW2Jhc2U2NC1lbmNvZGVdLCA6dHlwZSA6Y2xqLCA6c3ltIG9yZy5odHRwa2l0LmVuY29kZX0gezp2YXItc3ltcyBbYXMtY2hhbm5lbCBvbi1yZWNlaXZlIHdlYnNvY2tldC1oYW5kc2hha2UtY2hlY2sgYWNjZXB0IHJ1bi1zZXJ2ZXIgc2VuZCEgc2VydmVyLXN0b3AhIHNlbmQtd2Vic29ja2V0LWhhbmRzaGFrZSEgb24tY2xvc2Ugb24tcGluZyBzZW5kLWNoZWNrZWQtd2Vic29ja2V0LWhhbmRzaGFrZSEgd2l0aC1jaGFubmVsIENoYW5uZWwgY2xvc2Ugc2VydmVyLXBvcnQgc2VydmVyLXN0YXR1cyBzZWMtd2Vic29ja2V0LWFjY2VwdCB3ZWJzb2NrZXQ/IElIdHRwU2VydmVyIG9wZW4/XSwgOnR5cGUgOmNsaiwgOnN5bSBvcmcuaHR0cGtpdC5zZXJ2ZXJ9IHs6dmFyLXN5bXMgW2NyZWF0ZS1jb25zb2xlLWhpc3RvcnkgZ2V0LWNvbnNvbGUtc3RhcnQgdXBkYXRlLWNvbnNvbGUtc3RhcnQhIHVwZGF0ZS1jb25zb2xlLWhpc3RvcnkhIGdldC1wcmV2aW91cy1saW5lIGdldC1uZXh0LWxpbmUgdXAhIGRvd24hXSwgOnR5cGUgOmNsanMsIDpzeW0gcGFyZW4tc291cC5jb25zb2xlfSB7OnZhci1zeW1zIFtjYW4tdW5kbyBzaG93LWVycm9yLW1lc3NhZ2UhIGZvY3VzZWQtdGV4dCBzZWxlY3RlZC10ZXh0IGNhbi1yZWRvPyBjYW4tcmVkbyByYWluYm93LWRlbGltaXRlcnMgdXAhIHJlZnJlc2ghIHVuZG8hIHJlZnJlc2gtY3Vyc29yLXBvc2l0aW9uISBrZXktbmFtZT8gZXZhbCBjaGFubmVsPyBjcmVhdGUtZWRpdG9yIGtleS1jb2RlIHJlZG8hIHRhYiEgdHJhbnNpZW50LW1hcD8gcmVmcmVzaC1jb250ZW50LWVsZW1lbnQhIGVsZW0/IGVudGVyISBhcHBlbmQtdGV4dCEgbGluZS1udW1iZXJzIHVwZGF0ZS1oaWdobGlnaHQhIGluaXQgY2FuLXVuZG8/IHJlZnJlc2gtY29udGVudCEgcmVkbyBkZWJvdW5jZS1mdW5jdGlvbiByZWZyZXNoLWluc3RhcmVwbCEgZWRpdC1hbmQtcmVmcmVzaCEgcmFpbmJvdy1jb3VudCB1cGRhdGUtY3Vyc29yLXBvc2l0aW9uISBpbml0LXN0YXRlIGV2YWwhIGFkZC1wYXJpbmZlci1hZnRlci1jb25zb2xlLXN0YXJ0IHJlZnJlc2gtbnVtYmVycyEgcmVmcmVzaC1hZnRlci1jdXQtcGFzdGUhIHJlZnJlc2gtYWZ0ZXIta2V5LWV2ZW50ISBhZGQtbmV3bGluZSB1cGRhdGUtZWRpdC1oaXN0b3J5ISByZWZyZXNoLWNvbnNvbGUtY29udGVudCEgcmVmcmVzaC1lcnJvcnMtYW5kLWRlbGltaXRlcnMhIGFwcGVuZC10ZXh0IHByZXZlbnQtZGVmYXVsdD8gaW5pdGlhbGl6ZSEgaW5pdC1hbGwgYWRkLXBhcmluZmVyIHVuZG8gb2JqPyBkb3duISBhZGQtZXZlbnQtbGlzdGVuZXJzISByZXNldC1lZGl0LWhpc3RvcnkhIGhpZGUtZXJyb3ItbWVzc2FnZXMhIEVkaXRvcl0sIDp0eXBlIDpjbGpzLCA6c3ltIHBhcmVuLXNvdXAuY29yZX0gezp2YXItc3ltcyBbdG9wLWxldmVsPyBnZXQtc2VsZWN0aW9uIGdldC1jdXJzb3ItcG9zaXRpb24gdGV4dC1ub2RlPyBnZXQtZm9jdXNlZC1mb3JtIGdldC1mb2N1c2VkLXRvcC1sZXZlbCBnZXQtcGFyZW50IGNvbGwtbm9kZT8gZ2V0LW5lYXJlc3QtbnMgaW5zZXJ0LXRleHQhIGdldC1jb21wbGV0aW9uLWluZm8gc2V0LWN1cnNvci1wb3NpdGlvbiEgZ2V0LWZvY3VzZWQtZWxlbSBlcnJvci1ub2RlPyBnZXQtY29tcGxldGlvbi1jb250ZXh0IGNvbW1vbi1hbmNlc3RvciBnZXQtcGFyZW50cyBub2RlPyBzY3JvbGwtdG8tbmVhcmVzdC1lbGVtXSwgOnR5cGUgOmNsanMsIDpzeW0gcGFyZW4tc291cC5kb219IHs6dmFyLXN5bXMgWyp3ZWItd29ya2VyLXBhdGgqIGZvcm0tPnNlcmlhbGl6YWJsZSByZXN1bHRzLT5odG1sIHVzZS13ZWItd29ya2VyISBlbGVtPyBjb2xsZWN0aW9uLT5jb250ZW50IHRydW5jYXRlIGNyZWF0ZS1jb21waWxlci1mbiBnZXQtY29sbGVjdGlvbnMgZWxlbXMtPmxvY2F0aW9uc10sIDp0eXBlIDpjbGpzLCA6c3ltIHBhcmVuLXNvdXAuaW5zdGFyZXBsfSB7OnZhci1zeW1zIFtkaWZmIGZsYXR0ZW4gcGFyc2VdLCA6dHlwZSA6Y2xqLCA6c3ltIHBhcmluZmVyaXNoLmNvcmV9IHs6dmFyLXN5bXMgW3BhcnNlIGZsYXR0ZW4gZGlmZl0sIDp0eXBlIDpjbGpzLCA6c3ltIHBhcmluZmVyaXNoLmNvcmV9IHs6dmFyLXN5bXMgW3JpbmcuYWRhcHRlci5qZXR0eS5wcm94eSRvcmcuZWNsaXBzZS5qZXR0eS5zZXJ2ZXIuaGFuZGxlci5BYnN0cmFjdEhhbmRsZXIkZmYxOTI3NGEgcnVuLWpldHR5XSwgOnR5cGUgOmNsaiwgOnN5bSByaW5nLmFkYXB0ZXIuamV0dHl9IHs6dmFyLXN5bXMgW1N0cmVhbWFibGVSZXNwb25zZUJvZHkgd3JpdGUtYm9keS10by1zdHJlYW1dLCA6dHlwZSA6Y2xqLCA6c3ltIHJpbmcuY29yZS5wcm90b2NvbHN9IHs6dmFyLXN5bXMgW2Fic29sdXRlLXJlZGlyZWN0cy1yZXNwb25zZSB3cmFwLWFic29sdXRlLXJlZGlyZWN0c10sIDp0eXBlIDpjbGosIDpzeW0gcmluZy5taWRkbGV3YXJlLmFic29sdXRlLXJlZGlyZWN0c30gezp2YXItc3ltcyBbd3JhcC1hbnRpLWZvcmdlcnkgKmFudGktZm9yZ2VyeS10b2tlbipdLCA6dHlwZSA6Y2xqLCA6c3ltIHJpbmcubWlkZGxld2FyZS5hbnRpLWZvcmdlcnl9IHs6dmFyLXN5bXMgWy0+U2Vzc2lvblN0cmF0ZWd5IHNlc3Npb24tc3RyYXRlZ3ldLCA6dHlwZSA6Y2xqLCA6c3ltIHJpbmcubWlkZGxld2FyZS5hbnRpLWZvcmdlcnkuc2Vzc2lvbn0gezp2YXItc3ltcyBbZ2V0LXRva2VuIFN0cmF0ZWd5IHdyaXRlLXRva2VuIHZhbGlkLXRva2VuP10sIDp0eXBlIDpjbGosIDpzeW0gcmluZy5taWRkbGV3YXJlLmFudGktZm9yZ2VyeS5zdHJhdGVneX0gezp2YXItc3ltcyBbd3JhcC1jb250ZW50LXR5cGUgY29udGVudC10eXBlLXJlc3BvbnNlXSwgOnR5cGUgOmNsaiwgOnN5bSByaW5nLm1pZGRsZXdhcmUuY29udGVudC10eXBlfSB7OnZhci1zeW1zIFtDb29raWVEYXRlVGltZSByZmM4MjItZm9ybWF0IGNvb2tpZXMtcmVzcG9uc2UgLT5zZWNvbmRzIHdyYXAtY29va2llcyBjb29raWVzLXJlcXVlc3QgQ29va2llSW50ZXJ2YWxdLCA6dHlwZSA6Y2xqLCA6c3ltIHJpbmcubWlkZGxld2FyZS5jb29raWVzfSB7OnZhci1zeW1zIFtwcmVmbGlnaHQ/IG5vcm1hbGl6ZS1oZWFkZXJzIGhlYWRlci1uYW1lIGxvd2VyLWNhc2Utc2V0IGFsbG93LW1ldGhvZD8gYWxsb3ctcmVxdWVzdD8gbm9ybWFsaXplLWNvbmZpZyB3cmFwLWNvcnMgYWxsb3ctcHJlZmxpZ2h0LWhlYWRlcnM/IHBhcnNlLWhlYWRlcnMgYWRkLWhlYWRlcnMgYWRkLWFjY2Vzcy1jb250cm9sIGhhbmRsZS1jb3JzIG9yaWdpbiBhZGQtYWxsb3dlZC1oZWFkZXJzXSwgOnR5cGUgOmNsaiwgOnN5bSByaW5nLm1pZGRsZXdhcmUuY29yc30gezp2YXItc3ltcyBbd3JhcC1kZWZhdWx0LWNoYXJzZXQgZGVmYXVsdC1jaGFyc2V0LXJlc3BvbnNlXSwgOnR5cGUgOmNsaiwgOnN5bSByaW5nLm1pZGRsZXdhcmUuZGVmYXVsdC1jaGFyc2V0fSB7OnZhci1zeW1zIFtzZWN1cmUtYXBpLWRlZmF1bHRzIGFwaS1kZWZhdWx0cyB3cmFwLWRlZmF1bHRzIHNlY3VyZS1zaXRlLWRlZmF1bHRzIHNpdGUtZGVmYXVsdHNdLCA6dHlwZSA6Y2xqLCA6c3ltIHJpbmcubWlkZGxld2FyZS5kZWZhdWx0c30gezp2YXItc3ltcyBbZmlsZS1yZXF1ZXN0IHdyYXAtZmlsZV0sIDp0eXBlIDpjbGosIDpzeW0gcmluZy5taWRkbGV3YXJlLmZpbGV9IHs6dmFyLXN5bXMgW2ZsYXNoLXJlc3BvbnNlIHdyYXAtZmxhc2ggZmxhc2gtcmVxdWVzdF0sIDp0eXBlIDpjbGosIDpzeW0gcmluZy5taWRkbGV3YXJlLmZsYXNofSB7OnZhci1zeW1zIFtoZWFkLXJlcXVlc3Qgd3JhcC1oZWFkIGhlYWQtcmVzcG9uc2VdLCA6dHlwZSA6Y2xqLCA6c3ltIHJpbmcubWlkZGxld2FyZS5oZWFkfSB7OnZhci1zeW1zIFtrZXl3b3JkLXBhcmFtcy1yZXF1ZXN0IHdyYXAta2V5d29yZC1wYXJhbXNdLCA6dHlwZSA6Y2xqLCA6c3ltIHJpbmcubWlkZGxld2FyZS5rZXl3b3JkLXBhcmFtc30gezp2YXItc3ltcyBbbXVsdGlwYXJ0LXBhcmFtcy1yZXF1ZXN0IHdyYXAtbXVsdGlwYXJ0LXBhcmFtc10sIDp0eXBlIDpjbGosIDpzeW0gcmluZy5taWRkbGV3YXJlLm11bHRpcGFydC1wYXJhbXN9IHs6dmFyLXN5bXMgW25lc3RlZC1wYXJhbXMtcmVxdWVzdCBwYXJzZS1uZXN0ZWQta2V5cyB3cmFwLW5lc3RlZC1wYXJhbXNdLCA6dHlwZSA6Y2xqLCA6c3ltIHJpbmcubWlkZGxld2FyZS5uZXN0ZWQtcGFyYW1zfSB7OnZhci1zeW1zIFt3cmFwLW5vdC1tb2RpZmllZCBub3QtbW9kaWZpZWQtcmVzcG9uc2VdLCA6dHlwZSA6Y2xqLCA6c3ltIHJpbmcubWlkZGxld2FyZS5ub3QtbW9kaWZpZWR9IHs6dmFyLXN5bXMgW3dyYXAtcGFyYW1zIHBhcmFtcy1yZXF1ZXN0IGFzc29jLWZvcm0tcGFyYW1zIGFzc29jLXF1ZXJ5LXBhcmFtc10sIDp0eXBlIDpjbGosIDpzeW0gcmluZy5taWRkbGV3YXJlLnBhcmFtc30gezp2YXItc3ltcyBbd3JhcC1mb3J3YXJkZWQtcmVtb3RlLWFkZHIgZm9yd2FyZGVkLXJlbW90ZS1hZGRyLXJlcXVlc3RdLCA6dHlwZSA6Y2xqLCA6c3ltIHJpbmcubWlkZGxld2FyZS5wcm94eS1oZWFkZXJzfSB7OnZhci1zeW1zIFt3cmFwLXJlc291cmNlIHJlc291cmNlLXJlcXVlc3RdLCA6dHlwZSA6Y2xqLCA6c3ltIHJpbmcubWlkZGxld2FyZS5yZXNvdXJjZX0gezp2YXItc3ltcyBbc2Vzc2lvbi1yZXF1ZXN0IHNlc3Npb24tcmVzcG9uc2Ugd3JhcC1zZXNzaW9uXSwgOnR5cGUgOmNsaiwgOnN5bSByaW5nLm1pZGRsZXdhcmUuc2Vzc2lvbn0gezp2YXItc3ltcyBbbWVtb3J5LXN0b3JlXSwgOnR5cGUgOmNsaiwgOnN5bSByaW5nLm1pZGRsZXdhcmUuc2Vzc2lvbi5tZW1vcnl9IHs6dmFyLXN5bXMgW2RlbGV0ZS1zZXNzaW9uIHdyaXRlLXNlc3Npb24gcmVhZC1zZXNzaW9uIFNlc3Npb25TdG9yZV0sIDp0eXBlIDpjbGosIDpzeW0gcmluZy5taWRkbGV3YXJlLnNlc3Npb24uc3RvcmV9IHs6dmFyLXN5bXMgW2hzdHMtcmVzcG9uc2Ugd3JhcC1oc3RzIHdyYXAtc3NsLXJlZGlyZWN0IGZvcndhcmRlZC1zY2hlbWUtcmVxdWVzdCBkZWZhdWx0LXNjaGVtZS1oZWFkZXIgd3JhcC1mb3J3YXJkZWQtc2NoZW1lIHNzbC1yZWRpcmVjdC1yZXNwb25zZV0sIDp0eXBlIDpjbGosIDpzeW0gcmluZy5taWRkbGV3YXJlLnNzbH0gezp2YXItc3ltcyBbd3JhcC1zdGFja3RyYWNlLXdlYiB3cmFwLXN0YWNrdHJhY2UtbG9nIHdyYXAtc3RhY2t0cmFjZV0sIDp0eXBlIDpjbGosIDpzeW0gcmluZy5taWRkbGV3YXJlLnN0YWNrdHJhY2V9IHs6dmFyLXN5bXMgW3hzcy1wcm90ZWN0aW9uLXJlc3BvbnNlIHdyYXAtY29udGVudC10eXBlLW9wdGlvbnMgZnJhbWUtb3B0aW9ucy1yZXNwb25zZSBjb250ZW50LXR5cGUtb3B0aW9ucy1yZXNwb25zZSB3cmFwLWZyYW1lLW9wdGlvbnMgd3JhcC14c3MtcHJvdGVjdGlvbl0sIDp0eXBlIDpjbGosIDpzeW0gcmluZy5taWRkbGV3YXJlLngtaGVhZGVyc30gezp2YXItc3ltcyBbcGVyY2VudC1lbmNvZGUgdXJsLWRlY29kZSBmaXgtc3RyaW5nLXJlcGxhY2UtYnVnIGZvcm0tZW5jb2RlIGZvcm0tZGVjb2RlLXN0ciBmb3JtLWRlY29kZSBhc3NvYy1jb25qIHVybC1lbmNvZGUgRm9ybUVuY29kZWFibGUgZm9ybS1lbmNvZGUqIGJhc2U2NC1kZWNvZGUgcGVyY2VudC1kZWNvZGUgYmFzZTY0LWVuY29kZV0sIDp0eXBlIDpjbGosIDpzeW0gcmluZy51dGlsLmNvZGVjfSB7OnZhci1zeW1zIFtsYXN0LW1vZGlmaWVkLWRhdGUgY2xvc2UhIHBpcGVkLWlucHV0LXN0cmVhbSBzdHJpbmctaW5wdXQtc3RyZWFtXSwgOnR5cGUgOmNsaiwgOnN5bSByaW5nLnV0aWwuaW99IHs6dmFyLXN5bXMgW2V4dC1taW1lLXR5cGUgZGVmYXVsdC1taW1lLXR5cGVzXSwgOnR5cGUgOmNsaiwgOnN5bSByaW5nLnV0aWwubWltZS10eXBlfSB7OnZhci1zeW1zIFtyZS10b2tlbiByZS1xdW90ZWQgcmUtY2hhcnNldCByZS12YWx1ZSBmaW5kLWNvbnRlbnQtdHlwZS1jaGFyc2V0XSwgOnR5cGUgOmNsaiwgOnN5bSByaW5nLnV0aWwucGFyc2luZ30gezp2YXItc3ltcyBbcmVxdWVzdC11cmwgYm9keS1zdHJpbmcgY29udGVudC1sZW5ndGggY29udGVudC10eXBlIHBhdGgtaW5mbyBjaGFyYWN0ZXItZW5jb2RpbmcgdXJsZW5jb2RlZC1mb3JtPyBzZXQtY29udGV4dCBpbi1jb250ZXh0P10sIDp0eXBlIDpjbGosIDpzeW0gcmluZy51dGlsLnJlcXVlc3R9IHs6dmFyLXN5bXMgW2dldC1oZWFkZXIgYmFkLXJlcXVlc3QgcmVkaXJlY3QgcmVkaXJlY3Qtc3RhdHVzLWNvZGVzIHNldC1jb29raWUgcmVzcG9uc2UgZmluZC1oZWFkZXIgZmlsZS1yZXNwb25zZSByZXNvdXJjZS1yZXNwb25zZSBnZXQtY2hhcnNldCBjcmVhdGVkIGhlYWRlciBjaGFyc2V0IHVybC1yZXNwb25zZSByZWRpcmVjdC1hZnRlci1wb3N0IHVwZGF0ZS1oZWFkZXIgcmVzb3VyY2UtZGF0YSBzdGF0dXMgbm90LWZvdW5kIGNvbnRlbnQtdHlwZSByZXNwb25zZT9dLCA6dHlwZSA6Y2xqLCA6c3ltIHJpbmcudXRpbC5yZXNwb25zZX0gezp2YXItc3ltcyBbcmluZy51dGlsLnNlcnZsZXQucHJveHkkamF2YS5pby5GaWx0ZXJPdXRwdXRTdHJlYW0kZmYxOTI3NGEgdXBkYXRlLXNlcnZsZXQtcmVzcG9uc2UgbWVyZ2Utc2VydmxldC1rZXlzIG1ha2Utc2VydmljZS1tZXRob2Qgc2VydmxldCBidWlsZC1yZXF1ZXN0LW1hcCBkZWZzZXJ2aWNlIHJpbmcudXRpbC5zZXJ2bGV0LnByb3h5JGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldCRmZjE5Mjc0YV0sIDp0eXBlIDpjbGosIDpzeW0gcmluZy51dGlsLnNlcnZsZXR9IHs6dmFyLXN5bXMgW2h0dHAtZGF0ZS1mb3JtYXRzIGZvcm1hdC1kYXRlIHBhcnNlLWRhdGVdLCA6dHlwZSA6Y2xqLCA6c3ltIHJpbmcudXRpbC50aW1lfSB7OnZhci1zeW1zIFttb3VudCB1bm1vdW50IGxvY2FsIHJlYWN0aXZlIHJlZi1ub2RlIHJlYWN0IHJlbmRlci1zdGF0aWMtbWFya3VwIHJlcXVlc3QtcmVuZGVyIHdpdGgta2V5IGJ1aWxkLWRlZmNzIHJlZiBkZWZjIHN0YXRpYyBkZWZjcyBjdXJzb3Igc3RhdGUgY3Vyc29yLWluIGRvbS1ub2RlIHdpdGgtcmVmIGJ1aWxkLWRlZmMgcmVuZGVyLWh0bWwgYnVpbGQtZGVmY2MgZGVyaXZlZC1hdG9tIGRlZmNjXSwgOnR5cGUgOmNsaiwgOnN5bSBydW0uY29yZX0gezp2YXItc3ltcyBbbW91bnQgdW5tb3VudCBsb2NhbCByZWFjdGl2ZSByZWYtbm9kZSByZWFjdCByZXF1ZXN0LXJlbmRlciBwb3J0YWwgd2l0aC1rZXkgYnVpbGQtZGVmY3MgcmVmIHN0YXRpYyBjdXJzb3Igc3RhdGUgY3Vyc29yLWluIGRvbS1ub2RlIHdpdGgtcmVmIGJ1aWxkLWRlZmMgaHlkcmF0ZSBidWlsZC1kZWZjYyBkZXJpdmVkLWF0b21dLCA6dHlwZSA6Y2xqcywgOnN5bSBydW0uY29yZX0gezp2YXItc3ltcyBbLT5DdXJzb3JdLCA6dHlwZSA6Y2xqLCA6c3ltIHJ1bS5jdXJzb3J9IHs6dmFyLXN5bXMgW2Rlcml2ZWQtYXRvbV0sIDp0eXBlIDpjbGosIDpzeW0gcnVtLmRlcml2ZWQtYXRvbX0gezp2YXItc3ltcyBbZGVyaXZlZC1hdG9tXSwgOnR5cGUgOmNsanMsIDpzeW0gcnVtLmRlcml2ZWQtYXRvbX0gezp2YXItc3ltcyBbbm9ybWFsaXplLWNzcy12YWx1ZSByZW5kZXItY2xhc3MhIHJlbmRlci1pbm5lci1odG1sISAqc2VsZWN0LXZhbHVlKiByZW5kZXItYXR0cnMhIHJlbmRlci1zdHlsZS1rdiEgbm9ybWFsaXplLWNzcy1rZXkgdW5pdGxlc3MtY3NzLXByb3BzIHJlbmRlci1zdGF0aWMtbWFya3VwIHRvLXN0ciBub3JtYWxpemUtYXR0ci1rZXkgcmVuZGVyLXRleHRhcmVhLXZhbHVlISByZW5kZXItY29udGVudCEgbm90aGluZz8gbm9ybWFsaXplLWVsZW1lbnQgcmVuZGVyLWF0dHIhIHJlbmRlci1jbGFzc2VzISBhcHBlbmQhIGdldC12YWx1ZSBUb1N0cmluZyBwYXJzZS1zZWxlY3RvciAtcmVuZGVyLWh0bWwgcmVuZGVyLWh0bWwgSHRtbFJlbmRlcmVyIHJlbmRlci1lbGVtZW50ISBub3JtYWxpemVkLWF0dHJzIGVzY2FwZS1odG1sIHJlbmRlci1zdHlsZSFdLCA6dHlwZSA6Y2xqLCA6c3ltIHJ1bS5zZXJ2ZXItcmVuZGVyfSB7OnZhci1zeW1zIFtjYWxsLWFsbCBjb2xsZWN0IGNvbGxlY3QqXSwgOnR5cGUgOmNsaiwgOnN5bSBydW0udXRpbH0gezp2YXItc3ltcyBbY29sbGVjdCBjb2xsZWN0KiBjYWxsLWFsbF0sIDp0eXBlIDpjbGpzLCA6c3ltIHJ1bS51dGlsfSB7OnZhci1zeW1zIFtjb21waWxlLW1lcmdlLWF0dHJzIGNvbXBpbGUtcmVhY3QgY29tcGlsZS1yZWFjdC1lbGVtZW50IHRvLWpzIGNvbXBpbGUtYXR0ciBJQ29tcGlsZSBjb21waWxlLWF0dHJzIGNvbXBpbGUtaHRtbCBJSlNWYWx1ZV0sIDp0eXBlIDpjbGosIDpzeW0gc2FibG9uby5jb21waWxlcn0gezp2YXItc3ltcyBbaHRtbC1leHBhbmQgd2l0aC1ncm91cCBodG1sIHdpdGgtYmFzZS11cmwgaW5wdXQtZmllbGRzIGdlbi1pbnB1dC1maWVsZHMgZGVmZWxlbSBkZWZodG1sIGh0bWwqIGF0dHJzIGdlbi1pbnB1dC1maWVsZF0sIDp0eXBlIDpjbGosIDpzeW0gc2FibG9uby5jb3JlfSB7OnZhci1zeW1zIFt3cmFwLWF0dHJzIGluY2x1ZGUtY3NzIGluY2x1ZGUtanMgaW5jbHVkZS1yZWFjdCAqZ3JvdXAqIGZpbGUtdXBsb2FkXSwgOnR5cGUgOmNsanMsIDpzeW0gc2FibG9uby5jb3JlfSB7OnZhci1zeW1zIFthdHRyaWJ1dGVzIGludGVycHJldCBjb250cm9sbGVkLWlucHV0PyBlbGVtZW50IElJbnRlcnByZXRlciBjcmVhdGUtZWxlbWVudF0sIDp0eXBlIDpjbGosIDpzeW0gc2FibG9uby5pbnRlcnByZXRlcn0gezp2YXItc3ltcyBbaW50ZXJwcmV0IElJbnRlcnByZXRlciBjb250cm9sbGVkLWlucHV0PyBjcmVhdGUtZWxlbWVudCBhdHRyaWJ1dGVzIGVsZW1lbnRdLCA6dHlwZSA6Y2xqcywgOnN5bSBzYWJsb25vLmludGVycHJldGVyfSB7OnZhci1zeW1zIFttYXAtbG9va3VwPyBhdHRyaWJ1dGVzIGNvbXBhY3QtbWFwIGNoaWxkcmVuIGVsZW1lbnQgbWF0Y2gtdGFnIHN0cmlwLWNzcyBjbGFzcyBjbGFzcy1uYW1lIG1lcmdlLXdpdGgtY2xhc3NdLCA6dHlwZSA6Y2xqLCA6c3ltIHNhYmxvbm8ubm9ybWFsaXplfSB7OnZhci1zeW1zIFttYXAtbG9va3VwPyBhdHRyaWJ1dGVzIGNvbXBhY3QtbWFwIGNoaWxkcmVuIGVsZW1lbnQgbWF0Y2gtdGFnIHN0cmlwLWNzcyBjbGFzcyBjbGFzcy1uYW1lIG1lcmdlLXdpdGgtY2xhc3NdLCA6dHlwZSA6Y2xqcywgOnN5bSBzYWJsb25vLm5vcm1hbGl6ZX0gezp2YXItc3ltcyBbam9pbi1jbGFzc2VzIHRvLXN0ciByZWFjdC1mbiBjYW1lbC1jYXNlLWtleXMgZWxlbWVudD8gKmJhc2UtdXJsKiBhcy1zdHIgaHRtbC10by1kb20tYXR0cnMgVG9TdHJpbmcgVG9VUkkgY2FtZWwtY2FzZSB0by11cmldLCA6dHlwZSA6Y2xqLCA6c3ltIHNhYmxvbm8udXRpbH0gezp2YXItc3ltcyBbam9pbi1jbGFzc2VzIHRvLXN0ciByZWFjdC1mbiBjYW1lbC1jYXNlLWtleXMgZWxlbWVudD8gKmJhc2UtdXJsKiBhcy1zdHIgaHRtbC10by1kb20tYXR0cnMgVG9TdHJpbmcgVG9VUkkgY2FtZWwtY2FzZSB0by11cmldLCA6dHlwZSA6Y2xqcywgOnN5bSBzYWJsb25vLnV0aWx9IHs6dmFyLXN5bXMgWypsZW5ndGgtPnRocmVzaG9sZCogbWFwLWV4cGxhaW4gc3BlYy1ucy12YXIgaW4tY2xqcy1jb21waWxlPyB3YXJuLWtleXMgc3RyaWN0LWtleXMgKndhcm4tb25seSogd2FybmluZy1tZXNzYWdlKiAqdmFsdWUqIHdhcm4tb25seS1pbXBsIG5vdC1taXNzcGVsbGVkLXNwZWMgZW5oYW5jZS1wcm9ibGVtIGtub3duLWtleXMtc3BlYyBsZW5ndGgtPnRocmVzaG9sZCBsaWtlbHktbWlzc3BlbGxlZCB3YXJuaW5nLXNwZWMgZGVmYXVsdC13YXJuaW5nLWhhbmRsZXIgbm90LW1pc3NwZWxsZWQgcHJlLWNoZWNrIGtleXMgKndhcm5pbmctaGFuZGxlciogd2Fybi1zdHJpY3Qta2V5c10sIDp0eXBlIDpjbGosIDpzeW0gc3BlbGwtc3BlYy5hbHBoYX0gezp2YXItc3ltcyBbZXhwLWZvcm1hdGVkIGZvcm1hdC1jb3JyZWN0aW9uLWxpc3RdLCA6dHlwZSA6Y2xqLCA6c3ltIHNwZWxsLXNwZWMuZXhwb3VuZH0gezp2YXItc3ltcyBbc3BlY2lhbC1pbmRlbnQgY29kZS0+dGFncyBpbmRlbnQtZm9yLWxpbmUgYWRqdXN0LWluZGVudCByZWFkLXNhZmUgdW53cmFwLXZhbHVlIGdldC10YWdzLWJlZm9yZS1saW5lIGZvcndhcmQtaW5kZW50LWZvci1saW5lIHRhZy1tYXAgYmFjay1pbmRlbnQtZm9yLWxpbmVdLCA6dHlwZSA6Y2xqcywgOnN5bSB0YWctc291cC5jb3JlfV0sIDpkeW5hZG9jLmNvbW1vbi92YXJzIFt7OnN5bSBjb2RlLT5odG1sLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgY29kZSBpbiB0aGUgZ2l2ZW4gc3RyaW5nIHdpdGggaHRtbCBhZGRlZC4iLCA6YXJnbGlzdHMgKFtjb2RlXSl9LCA6c291cmNlICIoZGVmblxyXG4gY29kZS0+aHRtbFxyXG4gXCJSZXR1cm5zIHRoZSBjb2RlIGluIHRoZSBnaXZlbiBzdHJpbmcgd2l0aCBodG1sIGFkZGVkLlwiXHJcbiBbY29kZV1cclxuICgtPj4gKHBzL3BhcnNlIGNvZGUpIChwcy9mbGF0dGVuIG5vZGUtPmh0bWwpIHN0ci9qb2luKSlcclxuIiwgOmV4YW1wbGVzIFt7OmJvZHkgKGNvZGUtPmh0bWwgIigrIDEgMikiKSwgOmJvZHktc3RyICIoY29kZS0+aHRtbCBcIigrIDEgMilcIilcclxuIiwgOmlkICJodG1sLXNvdXAuY29yZS9jb2RlLT5odG1sLzAifV19XSwgOmR5bmFkb2MuY29tbW9uL25zLW1ldGEgbmlsLCA6ZHluYWRvYy5jb21tb24vbnMtc3ltIGh0bWwtc291cC5jb3JlLCA6ZHluYWRvYy5jb21tb24vcmVsLXBhdGggIi4uLy4uLyIsIDpkeW5hZG9jLmNvbW1vbi9oaWRlLWJhZGdlPyBmYWxzZSwgOmR5bmFkb2MuY29tbW9uL2NsanMtbnNlcy1hbmQtdmFycyB7ZXZhbC1zb3VwLmNvcmUgKHs6c3ltIGNvZGUtPnJlc3VsdHMsIDptZXRhIHs6ZG9jICJFdmFsdWF0ZXMgZWFjaCBmb3JtLCBwcm92aWRpbmcgdGhlIHJlc3VsdHMgaW4gYSBjYWxsYmFjay5cbiAgSWYgYW55IG9mIHRoZSBmb3JtcyBhcmUgc3RyaW5ncywgaXQgd2lsbCByZWFkIHRoZW0gZmlyc3QuIiwgOmFyZ2xpc3RzIFtbZm9ybXMgY2JdIFtmb3JtcyBjYiB7OmtleXMgWypjdXJyZW50LW5zICpzdGF0ZSBjdXN0b20tbG9hZCB0aW1lb3V0IGRpc2FibGUtdGltZW91dD9dLCA6b3IgeypjdXJyZW50LW5zIChhdG9tIChxdW90ZSBjbGpzLnVzZXIpKSwgKnN0YXRlICpjbGpzLXN0YXRlLCBjdXN0b20tbG9hZCBjdXN0b20tbG9hZCEsIHRpbWVvdXQgNDAwMCwgZGlzYWJsZS10aW1lb3V0PyBmYWxzZX0sIDphcyBvcHRzfV1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGNvZGUtPnJlc3VsdHNcclxuIFwiRXZhbHVhdGVzIGVhY2ggZm9ybSwgcHJvdmlkaW5nIHRoZSByZXN1bHRzIGluIGEgY2FsbGJhY2suXFxuICBJZiBhbnkgb2YgdGhlIGZvcm1zIGFyZSBzdHJpbmdzLCBpdCB3aWxsIHJlYWQgdGhlbSBmaXJzdC5cIlxyXG4gKFtmb3JtcyBjYl0gKGNvZGUtPnJlc3VsdHMgZm9ybXMgY2Ige30pKVxyXG4gKFtmb3Jtc1xyXG4gICBjYlxyXG4gICB7OmtleXMgWypjdXJyZW50LW5zICpzdGF0ZSBjdXN0b20tbG9hZCB0aW1lb3V0IGRpc2FibGUtdGltZW91dD9dLFxyXG4gICAgOm9yXHJcbiAgICB7KmN1cnJlbnQtbnMgKGF0b20gJ2NsanMudXNlciksXHJcbiAgICAgKnN0YXRlICpjbGpzLXN0YXRlLFxyXG4gICAgIGN1c3RvbS1sb2FkIGN1c3RvbS1sb2FkISxcclxuICAgICB0aW1lb3V0IDQwMDAsXHJcbiAgICAgZGlzYWJsZS10aW1lb3V0PyBmYWxzZX0sXHJcbiAgICA6YXMgb3B0c31dXHJcbiAgKGxldFxyXG4gICBbZm9ybXNcclxuICAgIChtYXB2XHJcbiAgICAgKGZuKlxyXG4gICAgICBbcDFfXzQxNjEzI11cclxuICAgICAgKGlmXHJcbiAgICAgICAoc3RyaW5nPyBwMV9fNDE2MTMjKVxyXG4gICAgICAgKHN0ci0+Zm9ybSBAKmN1cnJlbnQtbnMgcDFfXzQxNjEzIylcclxuICAgICAgIHAxX180MTYxMyMpKVxyXG4gICAgIGZvcm1zKVxyXG4gICAgaW5pdC1mb3Jtc1xyXG4gICAgKHZlY1xyXG4gICAgIChjb25jYXRcclxuICAgICAgWycobnMgY2xqcy51c2VyKV1cclxuICAgICAgKHdoZW4tbm90XHJcbiAgICAgICBkaXNhYmxlLXRpbWVvdXQ/XHJcbiAgICAgICBbJyhkZWYgcHMtbGFzdC10aW1lIChhdG9tIDApKVxyXG4gICAgICAgICcoZGVmblxyXG4gICAgICAgICAgcHMtcmVzZXQtdGltZW91dCFcclxuICAgICAgICAgIFtdXHJcbiAgICAgICAgICAocmVzZXQhIHBzLWxhc3QtdGltZSAoLmdldFRpbWUgKGpzL0RhdGUuKSkpKVxyXG4gICAgICAgICcoZGVmblxyXG4gICAgICAgICAgcHMtY2hlY2stZm9yLXRpbWVvdXQhXHJcbiAgICAgICAgICBbdGltZW91dF1cclxuICAgICAgICAgICh3aGVuXHJcbiAgICAgICAgICAgKD4gKC0gKC5nZXRUaW1lIChqcy9EYXRlLikpIEBwcy1sYXN0LXRpbWUpIHRpbWVvdXQpXHJcbiAgICAgICAgICAgKHRocm93IChqcy9FcnJvci4gXCJFeGVjdXRpb24gdGltZWQgb3V0LlwiKSkpKV0pXHJcbiAgICAgIFsnKHNldCEgKnByaW50LWVyci1mbiogKGZuIFtfXSkpIChsaXN0ICducyBAKmN1cnJlbnQtbnMpXSkpXHJcbiAgICB0aW1lb3V0LWNiXHJcbiAgICAoZm5cclxuICAgICBbcmVzdWx0c11cclxuICAgICAoZXZhbC1mb3Jtc1xyXG4gICAgICAoYWRkLXRpbWVvdXRzLWlmLW5lY2Vzc2FyeSB0aW1lb3V0IGZvcm1zIHJlc3VsdHMpXHJcbiAgICAgIGNiXHJcbiAgICAgICpzdGF0ZVxyXG4gICAgICAqY3VycmVudC1uc1xyXG4gICAgICBjdXN0b20tbG9hZCkpXHJcbiAgICBpbml0LWNiXHJcbiAgICAoZm5cclxuICAgICBbcmVzdWx0c11cclxuICAgICAoZXZhbC1mb3Jtc1xyXG4gICAgICAoaWYgZGlzYWJsZS10aW1lb3V0PyBmb3JtcyAobWFwIHdyYXAtbWFjcm9leHBhbmQgZm9ybXMpKVxyXG4gICAgICAoaWYgZGlzYWJsZS10aW1lb3V0PyBjYiB0aW1lb3V0LWNiKVxyXG4gICAgICAqc3RhdGVcclxuICAgICAgKmN1cnJlbnQtbnNcclxuICAgICAgY3VzdG9tLWxvYWQpKV1cclxuICAgKGV2YWwtZm9ybXMgaW5pdC1mb3JtcyBpbml0LWNiICpzdGF0ZSAqY3VycmVudC1ucyBjdXN0b20tbG9hZCkpKSlcclxuIn0pLCBjbGpzLmNvbXBpbGVyICh7OnN5bSBwcm90b2NvbC1wcmVmaXgsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcHN5bV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHByb3RvY29sLXByZWZpeFxyXG4gW3BzeW1dXHJcbiAoc3ltYm9sXHJcbiAgKHN0clxyXG4gICAoLT5cclxuICAgIChzdHIgcHN5bSlcclxuICAgICgucmVwbGFjZSAjPyg6Y2xqIFxcLiA6Y2xqcyAoanMvUmVnRXhwLiBcIlxcXFwuXCIgXCJnXCIpKSBcXCQpXHJcbiAgICAoLnJlcGxhY2UgXFwvIFxcJCkpXHJcbiAgIFwiJFwiKSkpXHJcbiJ9IHs6c3ltIGVtaXQtYXJndW1lbnRzLXRvLWFycmF5LCA6bWV0YSB7OmRvYyAiRW1pdCBjb2RlIHRoYXQgY29waWVzIGZ1bmN0aW9uIGFyZ3VtZW50cyBpbnRvIGFuIGFycmF5IHN0YXJ0aW5nIGF0IGFuIGluZGV4LlxuICBSZXR1cm5zIG5hbWUgb2YgdmFyIGhvbGRpbmcgdGhlIGFycmF5LiIsIDphcmdsaXN0cyAoW3N0YXJ0c2xpY2VdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBlbWl0LWFyZ3VtZW50cy10by1hcnJheVxyXG4gXCJFbWl0IGNvZGUgdGhhdCBjb3BpZXMgZnVuY3Rpb24gYXJndW1lbnRzIGludG8gYW4gYXJyYXkgc3RhcnRpbmcgYXQgYW4gaW5kZXguXFxuICBSZXR1cm5zIG5hbWUgb2YgdmFyIGhvbGRpbmcgdGhlIGFycmF5LlwiXHJcbiBbc3RhcnRzbGljZV1cclxuIChhc3NlcnQgKGFuZCAoPj0gc3RhcnRzbGljZSAwKSAoaW50ZWdlcj8gc3RhcnRzbGljZSkpKVxyXG4gKGxldFxyXG4gIFttbmFtZSAobXVuZ2UgKGdlbnN5bSkpIGkgKHN0ciBtbmFtZSBcIl9faVwiKSBhIChzdHIgbW5hbWUgXCJfX2FcIildXHJcbiAgKGVtaXRsblxyXG4gICBcInZhciBcIlxyXG4gICBpXHJcbiAgIFwiID0gMCwgXCJcclxuICAgYVxyXG4gICBcIiA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gIFwiXHJcbiAgIHN0YXJ0c2xpY2VcclxuICAgXCIpO1wiKVxyXG4gIChlbWl0bG5cclxuICAgXCJ3aGlsZSAoXCJcclxuICAgaVxyXG4gICBcIiA8IFwiXHJcbiAgIGFcclxuICAgXCIubGVuZ3RoKSB7XCJcclxuICAgYVxyXG4gICBcIltcIlxyXG4gICBpXHJcbiAgIFwiXSA9IGFyZ3VtZW50c1tcIlxyXG4gICBpXHJcbiAgIFwiICsgXCJcclxuICAgc3RhcnRzbGljZVxyXG4gICBcIl07ICsrXCJcclxuICAgaVxyXG4gICBcIjt9XCIpXHJcbiAgYSkpXHJcbiJ9IHs6c3ltIGVtaXQtanMtb2JqZWN0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2l0ZW1zIGVtaXQtanMtb2JqZWN0LXZhbF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGVtaXQtanMtb2JqZWN0XHJcbiBbaXRlbXMgZW1pdC1qcy1vYmplY3QtdmFsXVxyXG4gKGVtaXRzIFwiKHtcIilcclxuICh3aGVuLWxldFxyXG4gIFtpdGVtcyAoc2VxIGl0ZW1zKV1cclxuICAobGV0XHJcbiAgIFtbW2sgdl0gJiByXSBpdGVtc11cclxuICAgKGVtaXRzIFwiXFxcIlwiIChuYW1lIGspIFwiXFxcIjogXCIgKGVtaXQtanMtb2JqZWN0LXZhbCB2KSlcclxuICAgKGRvc2VxXHJcbiAgICBbW2sgdl0gcl1cclxuICAgIChlbWl0cyBcIiwgXFxcIlwiIChuYW1lIGspIFwiXFxcIjogXCIgKGVtaXQtanMtb2JqZWN0LXZhbCB2KSkpKSlcclxuIChlbWl0cyBcIn0pXCIpKVxyXG4ifSB7OnN5bSBkaXN0aW5jdC1rZXlzPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtrZXlzXSl9LCA6c291cmNlICIoZGVmblxyXG4gZGlzdGluY3Qta2V5cz9cclxuIFtrZXlzXVxyXG4gKGxldFxyXG4gIFtrZXlzIChtYXAgYW5hL3Vud3JhcC1xdW90ZSBrZXlzKV1cclxuICAoYW5kXHJcbiAgIChldmVyeT8gKGZuKiBbcDFfXzQxMjY3I10gKD0gKDpvcCBwMV9fNDEyNjcjKSA6Y29uc3QpKSBrZXlzKVxyXG4gICAoPSAoY291bnQgKGludG8gI3t9IGtleXMpKSAoY291bnQga2V5cykpKSkpXHJcbiJ9IHs6c3ltIG11bmdlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW3NdIFtzIHJlc2VydmVkXV19LCA6c291cmNlICIoZGVmblxyXG4gbXVuZ2VcclxuIChbc10gKG11bmdlIHMganMtcmVzZXJ2ZWQpKVxyXG4gKFtzIHJlc2VydmVkXVxyXG4gIChpZlxyXG4gICAjPyg6Y2xqIChtYXA/IHMpIDpjbGpzIChhbmEvY2xqcy1tYXA/IHMpKVxyXG4gICAobGV0XHJcbiAgICBbbmFtZS12YXJcclxuICAgICBzXHJcbiAgICAgbmFtZVxyXG4gICAgICg6bmFtZSBuYW1lLXZhcilcclxuICAgICBmaWVsZFxyXG4gICAgICg6ZmllbGQgbmFtZS12YXIpXHJcbiAgICAgaW5mb1xyXG4gICAgICg6aW5mbyBuYW1lLXZhcildXHJcbiAgICAoaWYtbm90XHJcbiAgICAgKG5pbD8gKDpmbi1zZWxmLW5hbWUgaW5mbykpXHJcbiAgICAgKGZuLXNlbGYtbmFtZSBzKVxyXG4gICAgIChsZXRcclxuICAgICAgW2RlcHRoXHJcbiAgICAgICAoc2hhZG93LWRlcHRoIHMpXHJcbiAgICAgICBjb2RlXHJcbiAgICAgICAoaGFzaC1zY29wZSBzKVxyXG4gICAgICAgcmVuYW1lZFxyXG4gICAgICAgKGdldCAqbGV4aWNhbC1yZW5hbWVzKiBjb2RlKVxyXG4gICAgICAgbmFtZVxyXG4gICAgICAgKGNvbmRcclxuICAgICAgICAodHJ1ZT8gZmllbGQpXHJcbiAgICAgICAgKHN0ciBcInNlbGZfXy5cIiBuYW1lKVxyXG4gICAgICAgIChub3QgKG5pbD8gcmVuYW1lZCkpXHJcbiAgICAgICAgcmVuYW1lZFxyXG4gICAgICAgIDplbHNlXHJcbiAgICAgICAgbmFtZSlcclxuICAgICAgIG11bmdlZC1uYW1lXHJcbiAgICAgICAobXVuZ2UgbmFtZSByZXNlcnZlZCldXHJcbiAgICAgIChpZlxyXG4gICAgICAgKG9yICh0cnVlPyBmaWVsZCkgKHplcm8/IGRlcHRoKSlcclxuICAgICAgIG11bmdlZC1uYW1lXHJcbiAgICAgICAoc3ltYm9sIChzdHIgbXVuZ2VkLW5hbWUgXCJfXyRcIiBkZXB0aCkpKSkpKVxyXG4gICAobGV0XHJcbiAgICBbc3NcclxuICAgICAoc3RyaW5nL3JlcGxhY2UgKHN0ciBzKSBcIi4uXCIgXCJfRE9UX19ET1RfXCIpXHJcbiAgICAgc3NcclxuICAgICAoc3RyaW5nL3JlcGxhY2VcclxuICAgICAgc3NcclxuICAgICAgIz8oOmNsaiAjXCJcXC8oLilcIiA6Y2xqcyAoanMvUmVnRXhwLiBcIlxcXFwvKC4pXCIpKVxyXG4gICAgICBcIi4kMVwiKVxyXG4gICAgIHJmXHJcbiAgICAgKG11bmdlLXJlc2VydmVkIHJlc2VydmVkKVxyXG4gICAgIHNzXHJcbiAgICAgKG1hcCByZiAoc3RyaW5nL3NwbGl0IHNzICNcIlxcLlwiKSlcclxuICAgICBzc1xyXG4gICAgIChzdHJpbmcvam9pbiBcIi5cIiBzcylcclxuICAgICBtc1xyXG4gICAgICM/KDpjbGogKGNsb2p1cmUubGFuZy5Db21waWxlci9tdW5nZSBzcykgOmNsanMgKCh2YXIgY2xqcy5jb3JlL211bmdlLXN0cikgc3MpKV1cclxuICAgIChpZiAoc3ltYm9sPyBzKSAoc3ltYm9sIG1zKSBtcykpKSkpXHJcbiJ9IHs6c3ltIGdldC1kZWZpbmUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbW5hbWUganNkb2NdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBnZXQtZGVmaW5lXHJcbiBbbW5hbWUganNkb2NdXHJcbiAobGV0XHJcbiAgW29wdHMgKGdldCBAZW52Lypjb21waWxlciogOm9wdGlvbnMpXVxyXG4gIChhbmRcclxuICAgKHNvbWVcclxuICAgICM/KDpjbGogKGZuKiBbcDFfXzQxMjcyI10gKC5zdGFydHNXaXRoIHAxX180MTI3MiMgXCJAZGVmaW5lXCIpKSA6Y2xqcyAoZm4qIFtwMV9fNDEyNzMjXSAoZ3N0cmluZy9zdGFydHNXaXRoIHAxX180MTI3MyMgXCJAZGVmaW5lXCIpKSlcclxuICAgIGpzZG9jKVxyXG4gICBvcHRzXHJcbiAgICg9ICg6b3B0aW1pemF0aW9ucyBvcHRzKSA6bm9uZSlcclxuICAgKGxldFxyXG4gICAgW2RlZmluZSAoZ2V0LWluIG9wdHMgWzpjbG9zdXJlLWRlZmluZXMgKHN0ciBtbmFtZSldKV1cclxuICAgICh3aGVuICh2YWxpZC1kZWZpbmUtdmFsdWU/IGRlZmluZSkgKHByLXN0ciBkZWZpbmUpKSkpKSlcclxuIn0gezpzeW0gdmFsaWQtZGVmaW5lLXZhbHVlPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxyXG4gdmFsaWQtZGVmaW5lLXZhbHVlP1xyXG4gW3hdXHJcbiAob3IgKHN0cmluZz8geCkgKHRydWU/IHgpIChmYWxzZT8geCkgKG51bWJlcj8geCkpKVxyXG4ifSB7OnN5bSBlbWl0LXNldCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtpdGVtcyBjb21tYS1zZXAgZGlzdGluY3QtY29uc3RhbnRzP10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGVtaXQtc2V0XHJcbiBbaXRlbXMgY29tbWEtc2VwIGRpc3RpbmN0LWNvbnN0YW50cz9dXHJcbiAoY29uZFxyXG4gIChlbXB0eT8gaXRlbXMpXHJcbiAgKGVtaXRzIFwiY2xqcy5jb3JlLlBlcnNpc3RlbnRIYXNoU2V0LkVNUFRZXCIpXHJcbiAgKGRpc3RpbmN0LWNvbnN0YW50cz8gaXRlbXMpXHJcbiAgKGVtaXRzXHJcbiAgIFwibmV3IGNsanMuY29yZS5QZXJzaXN0ZW50SGFzaFNldChudWxsLCBuZXcgY2xqcy5jb3JlLlBlcnNpc3RlbnRBcnJheU1hcChudWxsLCBcIlxyXG4gICAoY291bnQgaXRlbXMpXHJcbiAgIFwiLCBbXCJcclxuICAgKGNvbW1hLXNlcCAoaW50ZXJsZWF2ZSBpdGVtcyAocmVwZWF0IFwibnVsbFwiKSkpXHJcbiAgIFwiXSwgbnVsbCksIG51bGwpXCIpXHJcbiAgOmVsc2VcclxuICAoZW1pdHNcclxuICAgXCJjbGpzLmNvcmUuUGVyc2lzdGVudEhhc2hTZXQuY3JlYXRlQXNJZkJ5QXNzb2MoW1wiXHJcbiAgIChjb21tYS1zZXAgaXRlbXMpXHJcbiAgIFwiXSlcIikpKVxyXG4ifSB7OnN5bSBlbWl0cy1rZXl3b3JkLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2t3XSl9LCA6c291cmNlICIoZGVmblxyXG4gZW1pdHMta2V5d29yZFxyXG4gW2t3XVxyXG4gKGxldFxyXG4gIFtucyAobmFtZXNwYWNlIGt3KSBuYW1lIChuYW1lIGt3KV1cclxuICAoZW1pdHMgXCJuZXcgY2xqcy5jb3JlLktleXdvcmQoXCIpXHJcbiAgKGVtaXQtY29uc3RhbnQgbnMpXHJcbiAgKGVtaXRzIFwiLFwiKVxyXG4gIChlbWl0LWNvbnN0YW50IG5hbWUpXHJcbiAgKGVtaXRzIFwiLFwiKVxyXG4gIChlbWl0LWNvbnN0YW50IChpZiBucyAoc3RyIG5zIFwiL1wiIG5hbWUpIG5hbWUpKVxyXG4gIChlbWl0cyBcIixcIilcclxuICAoZW1pdC1jb25zdGFudCAoaGFzaCBrdykpXHJcbiAgKGVtaXRzIFwiKVwiKSkpXHJcbiJ9IHs6c3ltICpsZXhpY2FsLXJlbmFtZXMqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqbGV4aWNhbC1yZW5hbWVzKiB7fSlcclxuIn0gezpzeW0gZW1pdC1sZXQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbe2V4cHIgOmJvZHksIDprZXlzIFtiaW5kaW5ncyBlbnZdfSBpcy1sb29wXSl9LCA6c291cmNlICIoZGVmblxyXG4gZW1pdC1sZXRcclxuIFt7ZXhwciA6Ym9keSwgOmtleXMgW2JpbmRpbmdzIGVudl19IGlzLWxvb3BdXHJcbiAobGV0XHJcbiAgW2NvbnRleHQgKDpjb250ZXh0IGVudildXHJcbiAgKHdoZW4gKD0gOmV4cHIgY29udGV4dCkgKGVtaXRzIFwiKGZ1bmN0aW9uICgpe1wiKSlcclxuICAoYmluZGluZ1xyXG4gICBbKmxleGljYWwtcmVuYW1lcypcclxuICAgIChpbnRvXHJcbiAgICAgKmxleGljYWwtcmVuYW1lcypcclxuICAgICAod2hlblxyXG4gICAgICAoPSA6c3RhdGVtZW50IGNvbnRleHQpXHJcbiAgICAgIChtYXBcclxuICAgICAgIChmblxyXG4gICAgICAgIFtiaW5kaW5nXVxyXG4gICAgICAgIChsZXRcclxuICAgICAgICAgW25hbWUgKDpuYW1lIGJpbmRpbmcpXVxyXG4gICAgICAgICAodmVjdG9yIChoYXNoLXNjb3BlIGJpbmRpbmcpIChnZW5zeW0gKHN0ciBuYW1lIFwiLVwiKSkpKSlcclxuICAgICAgIGJpbmRpbmdzKSkpXVxyXG4gICAoZG9zZXFcclxuICAgIFt7OmtleXMgW2luaXRdLCA6YXMgYmluZGluZ30gYmluZGluZ3NdXHJcbiAgICAoZW1pdHMgXCJ2YXIgXCIpXHJcbiAgICAoZW1pdCBiaW5kaW5nKVxyXG4gICAgKGVtaXRsbiBcIiA9IFwiIGluaXQgXCI7XCIpKVxyXG4gICAod2hlbiBpcy1sb29wIChlbWl0bG4gXCJ3aGlsZSh0cnVlKXtcIikpXHJcbiAgIChlbWl0cyBleHByKVxyXG4gICAod2hlbiBpcy1sb29wIChlbWl0bG4gXCJicmVhaztcIikgKGVtaXRsbiBcIn1cIikpKVxyXG4gICh3aGVuICg9IDpleHByIGNvbnRleHQpIChlbWl0cyBcIn0pKClcIikpKSlcclxuIn0gezpzeW0gYWxsLWRpc3RpbmN0PywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4c10pfSwgOnNvdXJjZSAiKGRlZm4gYWxsLWRpc3RpbmN0PyBbeHNdIChhcHBseSBkaXN0aW5jdD8geHMpKVxyXG4ifSB7OnN5bSBjbGpzLXJlc2VydmVkLWZpbGUtbmFtZXMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIGNsanMtcmVzZXJ2ZWQtZmlsZS1uYW1lcyAje1wiZGVwcy5jbGpzXCJ9KVxyXG4ifSB7OnN5bSBiYXNlLXR5cGVzLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxyXG4gYmFzZS10eXBlc1xyXG4gI3tcImJvb2xlYW5cIiBcIm9iamVjdFwiIFwiKlwiIFwic3RyaW5nXCIgXCJPYmplY3RcIiBcIk51bWJlclwiIFwibnVsbFwiIFwiRGF0ZVwiXHJcbiAgIFwibnVtYmVyXCIgXCJTdHJpbmdcIiBcIlJlZ0V4cFwiIFwiLi4uKlwiIFwiQXJyYXlcIiBcImFycmF5XCIgXCJCb29sZWFuXCJ9KVxyXG4ifSB7OnN5bSByZXNvbHZlLXR5cGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IHRdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiByZXNvbHZlLXR5cGVcclxuIFtlbnYgdF1cclxuIChjb25kXHJcbiAgKGdldCBiYXNlLXR5cGVzIHQpXHJcbiAgdFxyXG4gIChnZXQgbWFwcGVkLXR5cGVzIHQpXHJcbiAgKGdldCBtYXBwZWQtdHlwZXMgdClcclxuICAjPyg6Y2xqICguc3RhcnRzV2l0aCB0IFwiIVwiKSA6Y2xqcyAoZ3N0cmluZy9zdGFydHNXaXRoIHQgXCIhXCIpKVxyXG4gIChzdHIgXCIhXCIgKHJlc29sdmUtdHlwZSBlbnYgKHN1YnMgdCAxKSkpXHJcbiAgIz8oOmNsaiAoLnN0YXJ0c1dpdGggdCBcIntcIikgOmNsanMgKGdzdHJpbmcvc3RhcnRzV2l0aCB0IFwie1wiKSlcclxuICB0XHJcbiAgIz8oOmNsaiAoLnN0YXJ0c1dpdGggdCBcImZ1bmN0aW9uXCIpIDpjbGpzIChnc3RyaW5nL3N0YXJ0c1dpdGggdCBcImZ1bmN0aW9uXCIpKVxyXG4gIChsZXRcclxuICAgW2lkeFxyXG4gICAgKC5sYXN0SW5kZXhPZiB0IFwiOlwiKVxyXG4gICAgW2ZzdHIgcnN0cl1cclxuICAgIChpZi1ub3RcclxuICAgICAoPT0gLTEgaWR4KVxyXG4gICAgIFsoc3VicyB0IDAgaWR4KSAoc3VicyB0IChpbmMgaWR4KSAoY291bnQgdCkpXVxyXG4gICAgIFt0IG5pbF0pXHJcbiAgICByZXQtdFxyXG4gICAgKHdoZW4gcnN0ciAocmVzb2x2ZS10eXBlIGVudiByc3RyKSlcclxuICAgIGF4c3RyXHJcbiAgICAoc3VicyBmc3RyIDkgKGRlYyAoY291bnQgZnN0cikpKVxyXG4gICAgYXJncy10c1xyXG4gICAgKHdoZW4tbm90XHJcbiAgICAgKHN0cmluZy9ibGFuaz8gYXhzdHIpXHJcbiAgICAgKG1hcFxyXG4gICAgICAoY29tcFxyXG4gICAgICAgKGZuKiBbcDFfXzQxMjY5I10gKHJlc29sdmUtdHlwZSBlbnYgcDFfXzQxMjY5IykpXHJcbiAgICAgICBzdHJpbmcvdHJpbSlcclxuICAgICAgKHN0cmluZy9zcGxpdCBheHN0ciAjXCIsXCIpKSldXHJcbiAgIChjb25kLT5cclxuICAgIChzdHIgXCJmdW5jdGlvbihcIiAoc3RyaW5nL2pvaW4gXCIsXCIgYXJncy10cykgXCIpXCIpXHJcbiAgICByZXQtdFxyXG4gICAgKHN0ciBcIjpcIiByZXQtdCkpKVxyXG4gICM/KDpjbGogKC5lbmRzV2l0aCB0IFwiPVwiKSA6Y2xqcyAoZ3N0cmluZy9lbmRzV2l0aCB0IFwiPVwiKSlcclxuICAoc3RyIChyZXNvbHZlLXR5cGUgZW52IChzdWJzIHQgMCAoZGVjIChjb3VudCB0KSkpKSBcIj1cIilcclxuICA6ZWxzZVxyXG4gIChtdW5nZSAoc3RyICg6bmFtZSAoYW5hL3Jlc29sdmUtdmFyIGVudiAoc3ltYm9sIHQpKSkpKSkpXHJcbiJ9IHs6c3ltICpzb3VyY2UtbWFwLWRhdGEtZ2VuLWNvbCosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpzb3VyY2UtbWFwLWRhdGEtZ2VuLWNvbCogbmlsKVxyXG4ifSB7OnN5bSBlbWl0LXdpdGgtbWV0YSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtleHByIG1ldGFdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBlbWl0LXdpdGgtbWV0YVxyXG4gW2V4cHIgbWV0YV1cclxuIChlbWl0cyBcImNsanMuY29yZS53aXRoX21ldGEoXCIgZXhwciBcIixcIiBtZXRhIFwiKVwiKSlcclxuIn0gezpzeW0gZW1pdC12YXJpYWRpYy1mbi1tZXRob2QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbe2V4cHIgOmJvZHksIG1heC1maXhlZC1hcml0eSA6Zml4ZWQtYXJpdHksIHZhcmlhZGljIDp2YXJpYWRpYz8sIDprZXlzIFt0eXBlIG5hbWUgcGFyYW1zIGVudiByZWN1cnNdLCA6YXMgZn1dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBlbWl0LXZhcmlhZGljLWZuLW1ldGhvZFxyXG4gW3tleHByIDpib2R5LFxyXG4gICBtYXgtZml4ZWQtYXJpdHkgOmZpeGVkLWFyaXR5LFxyXG4gICB2YXJpYWRpYyA6dmFyaWFkaWM/LFxyXG4gICA6a2V5cyBbdHlwZSBuYW1lIHBhcmFtcyBlbnYgcmVjdXJzXSxcclxuICAgOmFzIGZ9XVxyXG4gKGVtaXQtd3JhcFxyXG4gIGVudlxyXG4gIChsZXRcclxuICAgW25hbWVcclxuICAgIChvciBuYW1lIChnZW5zeW0pKVxyXG4gICAgbW5hbWVcclxuICAgIChtdW5nZSBuYW1lKVxyXG4gICAgZGVsZWdhdGUtbmFtZVxyXG4gICAgKHN0ciBtbmFtZSBcIl9fZGVsZWdhdGVcIildXHJcbiAgIChlbWl0bG4gXCIoZnVuY3Rpb24oKSB7IFwiKVxyXG4gICAoZW1pdHMgXCJ2YXIgXCIgZGVsZWdhdGUtbmFtZSBcIiA9IGZ1bmN0aW9uIChcIilcclxuICAgKGRvc2VxXHJcbiAgICBbcGFyYW0gcGFyYW1zXVxyXG4gICAgKGVtaXQgcGFyYW0pXHJcbiAgICAod2hlbi1ub3QgKD0gcGFyYW0gKGxhc3QgcGFyYW1zKSkgKGVtaXRzIFwiLFwiKSkpXHJcbiAgIChlbWl0bG4gXCIpe1wiKVxyXG4gICAod2hlbiB0eXBlIChlbWl0bG4gXCJ2YXIgc2VsZl9fID0gdGhpcztcIikpXHJcbiAgICh3aGVuIHJlY3VycyAoZW1pdGxuIFwid2hpbGUodHJ1ZSl7XCIpKVxyXG4gICAoZW1pdHMgZXhwcilcclxuICAgKHdoZW4gcmVjdXJzIChlbWl0bG4gXCJicmVhaztcIikgKGVtaXRsbiBcIn1cIikpXHJcbiAgIChlbWl0bG4gXCJ9O1wiKVxyXG4gICAoZW1pdGxuXHJcbiAgICBcInZhciBcIlxyXG4gICAgbW5hbWVcclxuICAgIFwiID0gZnVuY3Rpb24gKFwiXHJcbiAgICAoY29tbWEtc2VwXHJcbiAgICAgKGlmIHZhcmlhZGljIChjb25jYXQgKGJ1dGxhc3QgcGFyYW1zKSBbJ3Zhcl9hcmdzXSkgcGFyYW1zKSlcclxuICAgIFwiKXtcIilcclxuICAgKHdoZW4gdHlwZSAoZW1pdGxuIFwidmFyIHNlbGZfXyA9IHRoaXM7XCIpKVxyXG4gICAod2hlblxyXG4gICAgdmFyaWFkaWNcclxuICAgIChlbWl0cyBcInZhciBcIilcclxuICAgIChlbWl0IChsYXN0IHBhcmFtcykpXHJcbiAgICAoZW1pdGxuIFwiID0gbnVsbDtcIilcclxuICAgIChlbWl0bG4gXCJpZiAoYXJndW1lbnRzLmxlbmd0aCA+IFwiIChkZWMgKGNvdW50IHBhcmFtcykpIFwiKSB7XCIpXHJcbiAgICAobGV0XHJcbiAgICAgW2EgKGVtaXQtYXJndW1lbnRzLXRvLWFycmF5IChkZWMgKGNvdW50IHBhcmFtcykpKV1cclxuICAgICAoZW1pdGxuXHJcbiAgICAgIFwiICBcIlxyXG4gICAgICAobGFzdCBwYXJhbXMpXHJcbiAgICAgIFwiID0gbmV3IGNsanMuY29yZS5JbmRleGVkU2VxKFwiXHJcbiAgICAgIGFcclxuICAgICAgXCIsMCxudWxsKTtcIikpXHJcbiAgICAoZW1pdGxuIFwifSBcIikpXHJcbiAgIChlbWl0cyBcInJldHVybiBcIiBkZWxlZ2F0ZS1uYW1lIFwiLmNhbGwodGhpcyxcIilcclxuICAgKGRvc2VxXHJcbiAgICBbcGFyYW0gcGFyYW1zXVxyXG4gICAgKGVtaXQgcGFyYW0pXHJcbiAgICAod2hlbi1ub3QgKD0gcGFyYW0gKGxhc3QgcGFyYW1zKSkgKGVtaXRzIFwiLFwiKSkpXHJcbiAgIChlbWl0cyBcIik7XCIpXHJcbiAgIChlbWl0bG4gXCJ9O1wiKVxyXG4gICAoZW1pdGxuIG1uYW1lIFwiLmNsanMkbGFuZyRtYXhGaXhlZEFyaXR5ID0gXCIgbWF4LWZpeGVkLWFyaXR5IFwiO1wiKVxyXG4gICAoZW1pdHMgbW5hbWUgXCIuY2xqcyRsYW5nJGFwcGx5VG8gPSBcIilcclxuICAgKGVtaXQtYXBwbHktdG8gKGFzc29jIGYgOm5hbWUgbmFtZSkpXHJcbiAgIChlbWl0bG4gXCI7XCIpXHJcbiAgIChlbWl0bG5cclxuICAgIG1uYW1lXHJcbiAgICBcIi5jbGpzJGNvcmUkSUZuJF9pbnZva2UkYXJpdHkkdmFyaWFkaWMgPSBcIlxyXG4gICAgZGVsZWdhdGUtbmFtZVxyXG4gICAgXCI7XCIpXHJcbiAgIChlbWl0bG4gXCJyZXR1cm4gXCIgbW5hbWUgXCI7XCIpXHJcbiAgIChlbWl0bG4gXCJ9KSgpXCIpKSkpXHJcbiJ9IHs6c3ltIGpzLXJlc2VydmVkLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBqcy1yZXNlcnZlZCBhbmEvanMtcmVzZXJ2ZWQpXHJcbiJ9IHs6c3ltICpyZWNvbXBpbGVkKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKnJlY29tcGlsZWQqIG5pbClcclxuIn0gezpzeW0gZW1pdHMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbXSBbYV0gW2EgYl0gW2EgYiBjXSBbYSBiIGMgZF0gW2EgYiBjIGQgZV0gW2EgYiBjIGQgZSAmIHhzXV19LCA6c291cmNlICIoZGVmblxyXG4gZW1pdHNcclxuIChbXSlcclxuIChbYV1cclxuICAoY29uZFxyXG4gICAobmlsPyBhKVxyXG4gICBuaWxcclxuICAgIz8oOmNsaiAobWFwPyBhKSA6Y2xqcyAoYW5hL2NsanMtbWFwPyBhKSlcclxuICAgKGVtaXQgYSlcclxuICAgIz8oOmNsaiAoc2VxPyBhKSA6Y2xqcyAoYW5hL2NsanMtc2VxPyBhKSlcclxuICAgKGFwcGx5IGVtaXRzIGEpXHJcbiAgICM/KDpjbGogKGZuPyBhKSA6Y2xqcyAoZ29vZy9pc0Z1bmN0aW9uIGEpKVxyXG4gICAoYSlcclxuICAgOmVsc2VcclxuICAgKGxldFxyXG4gICAgW3MgKGNvbmQtPiBhIChub3QgKHN0cmluZz8gYSkpIC50b1N0cmluZyldXHJcbiAgICAjPyg6Y2xqICh3aGVuLXNvbWUgW2dlbi1jb2wgKnNvdXJjZS1tYXAtZGF0YS1nZW4tY29sKl0gKC5hZGRBbmRHZXQgZ2VuLWNvbCAoLmxlbmd0aCBzKSkpIDpjbGpzICh3aGVuLXNvbWUgW3NtLWRhdGEgKnNvdXJjZS1tYXAtZGF0YSpdIChzd2FwISBzbS1kYXRhIHVwZGF0ZSA6Z2VuLWNvbCAoZm4qIFtwMV9fNDEyNjQjXSAoKyBwMV9fNDEyNjQjICguLWxlbmd0aCBzKSkpKSkpXHJcbiAgICAjPyg6Y2xqICgud3JpdGUgKm91dCogcykgOmNsanMgKHByaW50IHMpKSkpXHJcbiAgbmlsKVxyXG4gKFthIGJdIChlbWl0cyBhKSAoZW1pdHMgYikpXHJcbiAoW2EgYiBjXSAoZW1pdHMgYSkgKGVtaXRzIGIpIChlbWl0cyBjKSlcclxuIChbYSBiIGMgZF0gKGVtaXRzIGEpIChlbWl0cyBiKSAoZW1pdHMgYykgKGVtaXRzIGQpKVxyXG4gKFthIGIgYyBkIGVdIChlbWl0cyBhKSAoZW1pdHMgYikgKGVtaXRzIGMpIChlbWl0cyBkKSAoZW1pdHMgZSkpXHJcbiAoW2EgYiBjIGQgZSAmIHhzXVxyXG4gIChlbWl0cyBhKVxyXG4gIChlbWl0cyBiKVxyXG4gIChlbWl0cyBjKVxyXG4gIChlbWl0cyBkKVxyXG4gIChlbWl0cyBlKVxyXG4gIChkb3NlcSBbeCB4c10gKGVtaXRzIHgpKSkpXHJcbiJ9IHs6c3ltIGVtaXQtY29uc3RhbnQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGVtaXQtY29uc3RhbnRcclxuIFt2XVxyXG4gKGxldFxyXG4gIFttIChhbmEvZWxpZGUtaXJyZWxldmFudC1tZXRhIChtZXRhIHYpKV1cclxuICAoaWZcclxuICAgKHNvbWU/IChzZXEgbSkpXHJcbiAgIChlbWl0LXdpdGgtbWV0YVxyXG4gICAgKGZuKiBbXSAoZW1pdC1jb25zdGFudC1uby1tZXRhIHYpKVxyXG4gICAgKGZuKiBbXSAoZW1pdC1jb25zdGFudC1uby1tZXRhIG0pKSlcclxuICAgKGVtaXQtY29uc3RhbnQtbm8tbWV0YSB2KSkpKVxyXG4ifSB7OnN5bSBlbWl0LWRvdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt7OmtleXMgW3RhcmdldCBmaWVsZCBtZXRob2QgYXJncyBlbnZdfV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGVtaXQtZG90XHJcbiBbezprZXlzIFt0YXJnZXQgZmllbGQgbWV0aG9kIGFyZ3MgZW52XX1dXHJcbiAoZW1pdC13cmFwXHJcbiAgZW52XHJcbiAgKGlmXHJcbiAgIGZpZWxkXHJcbiAgIChlbWl0cyB0YXJnZXQgXCIuXCIgKG11bmdlIGZpZWxkICN7fSkpXHJcbiAgIChlbWl0cyB0YXJnZXQgXCIuXCIgKG11bmdlIG1ldGhvZCAje30pIFwiKFwiIChjb21tYS1zZXAgYXJncykgXCIpXCIpKSkpXHJcbiJ9IHs6c3ltIGVtaXQtY29uc3RhbnRzLXRhYmxlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RhYmxlXSl9LCA6c291cmNlICIoZGVmblxyXG4gZW1pdC1jb25zdGFudHMtdGFibGVcclxuIFt0YWJsZV1cclxuIChlbWl0bG4gXCJnb29nLnByb3ZpZGUoJ1wiIChtdW5nZSBhbmEvY29uc3RhbnRzLW5zLXN5bSkgXCInKTtcIilcclxuIChlbWl0bG4gXCJnb29nLnJlcXVpcmUoJ2NsanMuY29yZScpO1wiKVxyXG4gKGRvc2VxXHJcbiAgW1tzeW0gdmFsdWVdIHRhYmxlXVxyXG4gIChsZXRcclxuICAgW25zIChuYW1lc3BhY2Ugc3ltKSBuYW1lIChuYW1lIHN5bSldXHJcbiAgIChlbWl0cyBcImNsanMuY29yZS5cIiB2YWx1ZSBcIiA9IFwiKVxyXG4gICAoY29uZFxyXG4gICAgKGtleXdvcmQ/IHN5bSlcclxuICAgIChlbWl0cy1rZXl3b3JkIHN5bSlcclxuICAgIChzeW1ib2w/IHN5bSlcclxuICAgIChlbWl0cy1zeW1ib2wgc3ltKVxyXG4gICAgOmVsc2VcclxuICAgICh0aHJvd1xyXG4gICAgIChleC1pbmZvXHJcbiAgICAgIChzdHIgXCJDYW5ub3QgZW1pdCBjb25zdGFudCBmb3IgdHlwZSBcIiAodHlwZSBzeW0pKVxyXG4gICAgICB7OmVycm9yIDppbnZhbGlkLWNvbnN0YW50LXR5cGUsXHJcbiAgICAgICA6Y2xvanVyZS5lcnJvci9waGFzZSA6Y29tcGlsYXRpb259KSkpXHJcbiAgIChlbWl0cyBcIjtcXG5cIikpKSlcclxuIn0gezpzeW0gZW1pdC1saXN0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2l0ZW1zIGNvbW1hLXNlcF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGVtaXQtbGlzdFxyXG4gW2l0ZW1zIGNvbW1hLXNlcF1cclxuIChpZlxyXG4gIChlbXB0eT8gaXRlbXMpXHJcbiAgKGVtaXRzIFwiY2xqcy5jb3JlLkxpc3QuRU1QVFlcIilcclxuICAoZW1pdHMgXCJjbGpzLmNvcmUubGlzdChcIiAoY29tbWEtc2VwIGl0ZW1zKSBcIilcIikpKVxyXG4ifSB7OnN5bSBnZXQtZmlyc3QtbnMtc2VnbWVudCwgOm1ldGEgezpkb2MgIkdldHMgdGhlIHBhcnQgdXAgdG8gdGhlIGZpcnN0IGAuYCBvZiBhIG5hbWVzcGFjZS5cbiAgIFJldHVybnMgdGhlIGVtcHR5IHN0cmluZyBmb3IgbmlsLlxuICAgUmV0dXJucyB0aGUgZW50aXJlIHN0cmluZyBpZiBubyBgLmAgaW4gbmFtZXNwYWNlIiwgOmFyZ2xpc3RzIChbbnNdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBnZXQtZmlyc3QtbnMtc2VnbWVudFxyXG4gXCJHZXRzIHRoZSBwYXJ0IHVwIHRvIHRoZSBmaXJzdCBgLmAgb2YgYSBuYW1lc3BhY2UuXFxuICAgUmV0dXJucyB0aGUgZW1wdHkgc3RyaW5nIGZvciBuaWwuXFxuICAgUmV0dXJucyB0aGUgZW50aXJlIHN0cmluZyBpZiBubyBgLmAgaW4gbmFtZXNwYWNlXCJcclxuIFtuc11cclxuIChsZXRcclxuICBbbnMgKHN0ciBucykgaWR4ICguaW5kZXhPZiBucyBcIi5cIildXHJcbiAgKGlmICg9PSAtMSBpZHgpIG5zIChzdWJzIG5zIDAgaWR4KSkpKVxyXG4ifSB7OnN5bSBlbWl0LWZuLXBhcmFtcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwYXJhbXNdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBlbWl0LWZuLXBhcmFtc1xyXG4gW3BhcmFtc11cclxuIChkb3NlcVxyXG4gIFtwYXJhbSBwYXJhbXNdXHJcbiAgKGVtaXQgcGFyYW0pXHJcbiAgKHdoZW4tbm90ICg9IHBhcmFtIChsYXN0IHBhcmFtcykpIChlbWl0cyBcIixcIikpKSlcclxuIn0gezpzeW0gbXVuZ2UtcmVzZXJ2ZWQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmVzZXJ2ZWRdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBtdW5nZS1yZXNlcnZlZFxyXG4gW3Jlc2VydmVkXVxyXG4gKGZuIFtzXSAoaWYtbm90IChuaWw/IChnZXQgcmVzZXJ2ZWQgcykpIChzdHIgcyBcIiRcIikgcykpKVxyXG4ifSB7OnN5bSBmbi1zZWxmLW5hbWUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbezprZXlzIFtuYW1lIGluZm9dLCA6YXMgbmFtZS12YXJ9XSl9LCA6c291cmNlICIoZGVmblxyXG4gZm4tc2VsZi1uYW1lXHJcbiBbezprZXlzIFtuYW1lIGluZm9dLCA6YXMgbmFtZS12YXJ9XVxyXG4gKGxldFxyXG4gIFtuYW1lXHJcbiAgIChzdHJpbmcvcmVwbGFjZSAoc3RyIG5hbWUpIFwiLi5cIiBcIl9ET1RfX0RPVF9cIilcclxuICAgezprZXlzIFtucyBmbi1zY29wZV19XHJcbiAgIGluZm9cclxuICAgc2NvcGVkLW5hbWVcclxuICAgKGFwcGx5XHJcbiAgICBzdHJcclxuICAgIChpbnRlcnBvc2UgXCJfJF9cIiAoY29uY2F0IChtYXAgKGNvbXAgc3RyIDpuYW1lKSBmbi1zY29wZSkgW25hbWVdKSkpXVxyXG4gIChzeW1ib2xcclxuICAgKG11bmdlIChzdHIgKHN0cmluZy9yZXBsYWNlIChzdHIgbnMpIFwiLlwiIFwiJFwiKSBcIiRcIiBzY29wZWQtbmFtZSkpKSkpXHJcbiJ9IHs6c3ltIGxvYWQtbGlicywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtsaWJzIHNlZW4gcmVsb2FkcyBkZXBzIG5zLW5hbWVdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBsb2FkLWxpYnNcclxuIFtsaWJzIHNlZW4gcmVsb2FkcyBkZXBzIG5zLW5hbWVdXHJcbiAobGV0XHJcbiAgW3s6a2V5cyBbb3B0aW9ucyBqcy1kZXBlbmRlbmN5LWluZGV4XX1cclxuICAgQGVudi8qY29tcGlsZXIqXHJcbiAgIHs6a2V5cyBbdGFyZ2V0IG5vZGVqcy1ydCBvcHRpbWl6YXRpb25zXX1cclxuICAgb3B0aW9uc1xyXG4gICBsb2FkZWQtbGlic1xyXG4gICAobXVuZ2UgJ2NsanMuY29yZS4qbG9hZGVkLWxpYnMqKVxyXG4gICBsb2FkZWQtbGlicy10ZW1wXHJcbiAgIChtdW5nZSAoZ2Vuc3ltICdjbGpzLmNvcmUuKmxvYWRlZC1saWJzKikpXHJcbiAgIFtub2RlLWxpYnMgbGlicy10by1sb2FkXVxyXG4gICAobGV0XHJcbiAgICBbbGlicyAocmVtb3ZlIChzZXQgKHZhbHMgc2VlbikpIChmaWx0ZXIgKHNldCAodmFscyBsaWJzKSkgZGVwcykpXVxyXG4gICAgKGlmXHJcbiAgICAgKD0gOm5vZGVqcyB0YXJnZXQpXHJcbiAgICAgKGxldFxyXG4gICAgICBbe25vZGUtbGlicyB0cnVlLCBsaWJzLXRvLWxvYWQgZmFsc2V9XHJcbiAgICAgICAoZ3JvdXAtYnkgYW5hL25vZGUtbW9kdWxlLWRlcD8gbGlicyldXHJcbiAgICAgIFtub2RlLWxpYnMgbGlicy10by1sb2FkXSlcclxuICAgICBbbmlsIGxpYnNdKSlcclxuICAgZ2xvYmFsLWV4cG9ydHMtbGlic1xyXG4gICAoZmlsdGVyIGFuYS9kZXAtaGFzLWdsb2JhbC1leHBvcnRzPyBsaWJzLXRvLWxvYWQpXVxyXG4gICh3aGVuXHJcbiAgICgtPiBsaWJzIG1ldGEgOnJlbG9hZC1hbGwpXHJcbiAgIChlbWl0bG5cclxuICAgIFwiaWYoIUNPTVBJTEVEKSBcIlxyXG4gICAgbG9hZGVkLWxpYnMtdGVtcFxyXG4gICAgXCIgPSBcIlxyXG4gICAgbG9hZGVkLWxpYnNcclxuICAgIFwiIHx8IGNsanMuY29yZS5zZXQoW1xcXCJjbGpzLmNvcmVcXFwiXSk7XCIpXHJcbiAgIChlbWl0bG5cclxuICAgIFwiaWYoIUNPTVBJTEVEKSBcIlxyXG4gICAgbG9hZGVkLWxpYnNcclxuICAgIFwiID0gY2xqcy5jb3JlLnNldChbXFxcImNsanMuY29yZVxcXCJdKTtcIikpXHJcbiAgKGRvc2VxXHJcbiAgIFtsaWIgbGlicy10by1sb2FkXVxyXG4gICAoY29uZFxyXG4gICAgIz9AKDpjbGogWyhhbmEvZm9yZWlnbi1kZXA/IGxpYikgKHdoZW4gKGFuZCAoPSA6bm9uZSBvcHRpbWl6YXRpb25zKSAobm90IChjb250YWlucz8gb3B0aW9ucyA6bW9kdWxlcykpKSAoaWYgbm9kZWpzLXJ0IChsZXQgW2lqcyAoZ2V0IGpzLWRlcGVuZGVuY3ktaW5kZXggKG5hbWUgbGliKSldIChlbWl0bG4gXCJjbGpzLmNvcmUubG9hZF9maWxlKFwiICgtPiAoaW8vZmlsZSAodXRpbC9vdXRwdXQtZGlyZWN0b3J5IG9wdGlvbnMpIChvciAoZGVwcy8tcmVsYXRpdmUtcGF0aCBpanMpICh1dGlsL3JlbGF0aXZlLW5hbWUgKDp1cmwgaWpzKSkpKSBzdHIgZXNjYXBlLXN0cmluZyB3cmFwLWluLWRvdWJsZS1xdW90ZXMpIFwiKTtcIikpIChlbWl0bG4gXCJnb29nLnJlcXVpcmUoJ1wiIChtdW5nZSBsaWIpIFwiJyk7XCIpKSldIDpjbGpzIFsoYW5kIChhbmEvZm9yZWlnbi1kZXA/IGxpYikgKG5vdCAoa2V5d29yZC1pZGVudGljYWw/IG9wdGltaXphdGlvbnMgOm5vbmUpKSkgbmlsXSlcclxuICAgIChvciAoLT4gbGlicyBtZXRhIDpyZWxvYWQpICg9IChnZXQgcmVsb2FkcyBsaWIpIDpyZWxvYWQpKVxyXG4gICAgKGVtaXRsbiBcImdvb2cucmVxdWlyZSgnXCIgKG11bmdlIGxpYikgXCInLCAncmVsb2FkJyk7XCIpXHJcbiAgICAob3IgKC0+IGxpYnMgbWV0YSA6cmVsb2FkLWFsbCkgKD0gKGdldCByZWxvYWRzIGxpYikgOnJlbG9hZC1hbGwpKVxyXG4gICAgKGVtaXRsbiBcImdvb2cucmVxdWlyZSgnXCIgKG11bmdlIGxpYikgXCInLCAncmVsb2FkLWFsbCcpO1wiKVxyXG4gICAgOmVsc2VcclxuICAgICh3aGVuLW5vdFxyXG4gICAgICg9IGxpYiAnZ29vZylcclxuICAgICAoZW1pdGxuIFwiZ29vZy5yZXF1aXJlKCdcIiAobXVuZ2UgbGliKSBcIicpO1wiKSkpKVxyXG4gIChkb3NlcVxyXG4gICBbbGliIG5vZGUtbGlic11cclxuICAgKGVtaXRsblxyXG4gICAgKG11bmdlIG5zLW5hbWUpXHJcbiAgICBcIi5cIlxyXG4gICAgKGFuYS9tdW5nZS1ub2RlLWxpYiBsaWIpXHJcbiAgICBcIiA9IHJlcXVpcmUoJ1wiXHJcbiAgICBsaWJcclxuICAgIFwiJyk7XCIpKVxyXG4gIChkb3NlcVxyXG4gICBbbGliIGdsb2JhbC1leHBvcnRzLWxpYnNdXHJcbiAgIChsZXRcclxuICAgIFt7OmtleXMgW2dsb2JhbC1leHBvcnRzXX0gKGdldCBqcy1kZXBlbmRlbmN5LWluZGV4IChuYW1lIGxpYikpXVxyXG4gICAgKGVtaXQtZ2xvYmFsLWV4cG9ydCBucy1uYW1lIGdsb2JhbC1leHBvcnRzIGxpYikpKVxyXG4gICh3aGVuXHJcbiAgICgtPiBsaWJzIG1ldGEgOnJlbG9hZC1hbGwpXHJcbiAgIChlbWl0bG5cclxuICAgIFwiaWYoIUNPTVBJTEVEKSBcIlxyXG4gICAgbG9hZGVkLWxpYnNcclxuICAgIFwiID0gY2xqcy5jb3JlLmludG8oXCJcclxuICAgIGxvYWRlZC1saWJzLXRlbXBcclxuICAgIFwiLCBcIlxyXG4gICAgbG9hZGVkLWxpYnNcclxuICAgIFwiKTtcIikpKSlcclxuIn0gezpzeW0gbXVuZ2UtcGFyYW0tcmV0dXJuLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBsaW5lXSl9LCA6c291cmNlICIoZGVmblxyXG4gbXVuZ2UtcGFyYW0tcmV0dXJuXHJcbiBbZW52IGxpbmVdXHJcbiAoY29uZFxyXG4gIChyZS1maW5kICNcIkBwYXJhbVwiIGxpbmUpXHJcbiAgKGxldFxyXG4gICBbW3AgdHMgbiAmIHhzXVxyXG4gICAgKG1hcCBzdHJpbmcvdHJpbSAoc3RyaW5nL3NwbGl0IChzdHJpbmcvdHJpbSBsaW5lKSAjXCIgXCIpKV1cclxuICAgKGlmXHJcbiAgICAoYW5kXHJcbiAgICAgKD0gXCJAcGFyYW1cIiBwKVxyXG4gICAgIHRzXHJcbiAgICAgIz8oOmNsaiAoLnN0YXJ0c1dpdGggdHMgXCJ7XCIpIDpjbGpzIChnc3RyaW5nL3N0YXJ0c1dpdGggdHMgXCJ7XCIpKSlcclxuICAgIChzdHJpbmcvam9pbiBcIiBcIiAoY29uY2F0IFtwIChyZXNvbHZlLXR5cGVzIGVudiB0cykgKG11bmdlIG4pXSB4cykpXHJcbiAgICBsaW5lKSlcclxuICAocmUtZmluZCAjXCJAcmV0dXJuXCIgbGluZSlcclxuICAobGV0XHJcbiAgIFtbcCB0cyAmIHhzXVxyXG4gICAgKG1hcCBzdHJpbmcvdHJpbSAoc3RyaW5nL3NwbGl0IChzdHJpbmcvdHJpbSBsaW5lKSAjXCIgXCIpKV1cclxuICAgKGlmXHJcbiAgICAoYW5kXHJcbiAgICAgKD0gXCJAcmV0dXJuXCIgcClcclxuICAgICB0c1xyXG4gICAgICM/KDpjbGogKC5zdGFydHNXaXRoIHRzIFwie1wiKSA6Y2xqcyAoZ3N0cmluZy9zdGFydHNXaXRoIHRzIFwie1wiKSkpXHJcbiAgICAoc3RyaW5nL2pvaW4gXCIgXCIgKGNvbmNhdCBbcCAocmVzb2x2ZS10eXBlcyBlbnYgdHMpXSB4cykpXHJcbiAgICBsaW5lKSlcclxuICA6ZWxzZVxyXG4gIGxpbmUpKVxyXG4ifSB7OnN5bSBlbWl0LWpzLWFycmF5LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2l0ZW1zIGNvbW1hLXNlcF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGVtaXQtanMtYXJyYXlcclxuIFtpdGVtcyBjb21tYS1zZXBdXHJcbiAoZW1pdHMgXCJbXCIgKGNvbW1hLXNlcCBpdGVtcykgXCJdXCIpKVxyXG4ifSB7OnN5bSBmaW5kLW5zLXN0YXJ0cy13aXRoLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW25lZWRsZV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGZpbmQtbnMtc3RhcnRzLXdpdGhcclxuIFtuZWVkbGVdXHJcbiAocmVkdWNlLWt2XHJcbiAgKGZuXHJcbiAgIFt4cyBucyBfXVxyXG4gICAod2hlbiAoPSBuZWVkbGUgKGdldC1maXJzdC1ucy1zZWdtZW50IG5zKSkgKHJlZHVjZWQgbmVlZGxlKSkpXHJcbiAgbmlsXHJcbiAgKDpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXMgQGVudi8qY29tcGlsZXIqKSkpXHJcbiJ9IHs6c3ltIGNoZWNraW5nLXR5cGVzPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBjaGVja2luZy10eXBlcz9cclxuIFtdXHJcbiAoI3s6d2FybmluZyA6ZXJyb3J9XHJcbiAgKGdldC1pbiBAZW52Lypjb21waWxlciogWzpvcHRpb25zIDpjbG9zdXJlLXdhcm5pbmdzIDpjaGVjay10eXBlc10pKSlcclxuIn0gezpzeW0gZW1pdC1mbi1tZXRob2QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbe2V4cHIgOmJvZHksIDprZXlzIFt0eXBlIG5hbWUgcGFyYW1zIGVudiByZWN1cnNdfV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGVtaXQtZm4tbWV0aG9kXHJcbiBbe2V4cHIgOmJvZHksIDprZXlzIFt0eXBlIG5hbWUgcGFyYW1zIGVudiByZWN1cnNdfV1cclxuIChlbWl0LXdyYXBcclxuICBlbnZcclxuICAoZW1pdHMgXCIoZnVuY3Rpb24gXCIgKG11bmdlIG5hbWUpIFwiKFwiKVxyXG4gIChlbWl0LWZuLXBhcmFtcyBwYXJhbXMpXHJcbiAgKGVtaXRsbiBcIil7XCIpXHJcbiAgKHdoZW4gdHlwZSAoZW1pdGxuIFwidmFyIHNlbGZfXyA9IHRoaXM7XCIpKVxyXG4gICh3aGVuIHJlY3VycyAoZW1pdGxuIFwid2hpbGUodHJ1ZSl7XCIpKVxyXG4gIChlbWl0cyBleHByKVxyXG4gICh3aGVuIHJlY3VycyAoZW1pdGxuIFwiYnJlYWs7XCIpIChlbWl0bG4gXCJ9XCIpKVxyXG4gIChlbWl0cyBcIn0pXCIpKSlcclxuIn0gezpzeW0gZW1pdC1jb21tZW50LCA6bWV0YSB7OmRvYyAiRW1pdCBhIG5pY2VseSBmb3JtYXR0ZWQgY29tbWVudCBzdHJpbmcuIiwgOmFyZ2xpc3RzIFtbZG9jIGpzZG9jXSBbZW52IGRvYyBqc2RvY11dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGVtaXQtY29tbWVudFxyXG4gXCJFbWl0IGEgbmljZWx5IGZvcm1hdHRlZCBjb21tZW50IHN0cmluZy5cIlxyXG4gKFtkb2MganNkb2NdIChlbWl0LWNvbW1lbnQgbmlsIGRvYyBqc2RvYykpXHJcbiAoW2VudiBkb2MganNkb2NdXHJcbiAgKGxldFxyXG4gICBbZG9jc1xyXG4gICAgKHdoZW4gZG9jIFtkb2NdKVxyXG4gICAgZG9jc1xyXG4gICAgKGlmIGpzZG9jIChjb25jYXQgZG9jcyBqc2RvYykgZG9jcylcclxuICAgIGRvY3NcclxuICAgIChyZW1vdmUgbmlsPyBkb2NzKV1cclxuICAgKGxldGZuXHJcbiAgICBbKHByaW50LWNvbW1lbnQtbGluZXNcclxuICAgICAgW2VdXHJcbiAgICAgIChsZXRcclxuICAgICAgIFtbeCAmIHlzXVxyXG4gICAgICAgIChtYXBcclxuICAgICAgICAgKGZuKlxyXG4gICAgICAgICAgW3AxX180MTI3MSNdXHJcbiAgICAgICAgICAoaWZcclxuICAgICAgICAgICAoY2hlY2tpbmctdHlwZXM/KVxyXG4gICAgICAgICAgIChtdW5nZS1wYXJhbS1yZXR1cm4gZW52IHAxX180MTI3MSMpXHJcbiAgICAgICAgICAgcDFfXzQxMjcxIykpXHJcbiAgICAgICAgIChzdHJpbmcvc3BsaXQtbGluZXMgZSkpXVxyXG4gICAgICAgKGVtaXRsbiBcIiAqIFwiIChzdHJpbmcvcmVwbGFjZSB4IFwiKi9cIiBcIiogL1wiKSlcclxuICAgICAgIChkb3NlcVxyXG4gICAgICAgIFtuZXh0LWxpbmUgeXNdXHJcbiAgICAgICAgKGVtaXRsblxyXG4gICAgICAgICBcIiAqIFwiXHJcbiAgICAgICAgICgtPlxyXG4gICAgICAgICAgbmV4dC1saW5lXHJcbiAgICAgICAgICAoc3RyaW5nL3JlcGxhY2UgI1wiXiAgIFwiIFwiXCIpXHJcbiAgICAgICAgICAoc3RyaW5nL3JlcGxhY2UgXCIqL1wiIFwiKiAvXCIpKSkpKSldXHJcbiAgICAod2hlblxyXG4gICAgIChzZXEgZG9jcylcclxuICAgICAoZW1pdGxuIFwiLyoqXCIpXHJcbiAgICAgKGRvc2VxIFtlIGRvY3NdICh3aGVuIGUgKHByaW50LWNvbW1lbnQtbGluZXMgZSkpKVxyXG4gICAgIChlbWl0bG4gXCIgKi9cIikpKSkpKVxyXG4ifSB7OnN5bSBoYXNoLXNjb3BlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBoYXNoLXNjb3BlXHJcbiBbc11cclxuIChoYXNoLWNvbWJpbmVcclxuICAjPyg6Y2xqIChoYXNoICg6bmFtZSBzKSkgOmNsanMgKC1oYXNoICg6bmFtZSBzKSkpXHJcbiAgKHNoYWRvdy1kZXB0aCBzKSkpXHJcbiJ9IHs6c3ltIGVtaXQtYXBwbHktdG8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbezprZXlzIFtuYW1lIHBhcmFtcyBlbnZdfV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGVtaXQtYXBwbHktdG9cclxuIFt7OmtleXMgW25hbWUgcGFyYW1zIGVudl19XVxyXG4gKGxldFxyXG4gIFthcmdsaXN0XHJcbiAgIChnZW5zeW0gXCJhcmdsaXN0X19cIilcclxuICAgZGVsZWdhdGUtbmFtZVxyXG4gICAoc3RyIChtdW5nZSBuYW1lKSBcIl9fZGVsZWdhdGVcIildXHJcbiAgKGVtaXRsbiBcIihmdW5jdGlvbiAoXCIgYXJnbGlzdCBcIil7XCIpXHJcbiAgKGRvc2VxXHJcbiAgIFtbaSBwYXJhbV0gKG1hcC1pbmRleGVkIHZlY3RvciAoZHJvcC1sYXN0IDIgcGFyYW1zKSldXHJcbiAgIChlbWl0cyBcInZhciBcIilcclxuICAgKGVtaXQgcGFyYW0pXHJcbiAgIChlbWl0cyBcIiA9IGNsanMuY29yZS5maXJzdChcIilcclxuICAgKGVtaXRsbiBhcmdsaXN0IFwiKTtcIilcclxuICAgKGVtaXRsbiBhcmdsaXN0IFwiID0gY2xqcy5jb3JlLm5leHQoXCIgYXJnbGlzdCBcIik7XCIpKVxyXG4gIChpZlxyXG4gICAoPCAxIChjb3VudCBwYXJhbXMpKVxyXG4gICAoZG9cclxuICAgIChlbWl0cyBcInZhciBcIilcclxuICAgIChlbWl0IChsYXN0IChidXRsYXN0IHBhcmFtcykpKVxyXG4gICAgKGVtaXRsbiBcIiA9IGNsanMuY29yZS5maXJzdChcIiBhcmdsaXN0IFwiKTtcIilcclxuICAgIChlbWl0cyBcInZhciBcIilcclxuICAgIChlbWl0IChsYXN0IHBhcmFtcykpXHJcbiAgICAoZW1pdGxuIFwiID0gY2xqcy5jb3JlLnJlc3QoXCIgYXJnbGlzdCBcIik7XCIpXHJcbiAgICAoZW1pdHMgXCJyZXR1cm4gXCIgZGVsZWdhdGUtbmFtZSBcIihcIilcclxuICAgIChkb3NlcVxyXG4gICAgIFtwYXJhbSBwYXJhbXNdXHJcbiAgICAgKGVtaXQgcGFyYW0pXHJcbiAgICAgKHdoZW4tbm90ICg9IHBhcmFtIChsYXN0IHBhcmFtcykpIChlbWl0cyBcIixcIikpKVxyXG4gICAgKGVtaXRsbiBcIik7XCIpKVxyXG4gICAoZG9cclxuICAgIChlbWl0cyBcInZhciBcIilcclxuICAgIChlbWl0IChsYXN0IHBhcmFtcykpXHJcbiAgICAoZW1pdGxuIFwiID0gY2xqcy5jb3JlLnNlcShcIiBhcmdsaXN0IFwiKTtcIilcclxuICAgIChlbWl0cyBcInJldHVybiBcIiBkZWxlZ2F0ZS1uYW1lIFwiKFwiKVxyXG4gICAgKGRvc2VxXHJcbiAgICAgW3BhcmFtIHBhcmFtc11cclxuICAgICAoZW1pdCBwYXJhbSlcclxuICAgICAod2hlbi1ub3QgKD0gcGFyYW0gKGxhc3QgcGFyYW1zKSkgKGVtaXRzIFwiLFwiKSkpXHJcbiAgICAoZW1pdGxuIFwiKTtcIikpKVxyXG4gIChlbWl0cyBcIn0pXCIpKSlcclxuIn0gezpzeW0gZW1pdHMtc3ltYm9sLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N5bV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGVtaXRzLXN5bWJvbFxyXG4gW3N5bV1cclxuIChsZXRcclxuICBbbnNcclxuICAgKG5hbWVzcGFjZSBzeW0pXHJcbiAgIG5hbWVcclxuICAgKG5hbWUgc3ltKVxyXG4gICBzeW1zdHJcclxuICAgKGlmLW5vdCAobmlsPyBucykgKHN0ciBucyBcIi9cIiBuYW1lKSBuYW1lKV1cclxuICAoZW1pdHMgXCJuZXcgY2xqcy5jb3JlLlN5bWJvbChcIilcclxuICAoZW1pdC1jb25zdGFudCBucylcclxuICAoZW1pdHMgXCIsXCIpXHJcbiAgKGVtaXQtY29uc3RhbnQgbmFtZSlcclxuICAoZW1pdHMgXCIsXCIpXHJcbiAgKGVtaXQtY29uc3RhbnQgc3ltc3RyKVxyXG4gIChlbWl0cyBcIixcIilcclxuICAoZW1pdC1jb25zdGFudCAoaGFzaCBzeW0pKVxyXG4gIChlbWl0cyBcIixcIilcclxuICAoZW1pdC1jb25zdGFudCBuaWwpXHJcbiAgKGVtaXRzIFwiKVwiKSkpXHJcbiJ9IHs6c3ltIGZhbHNleS1jb25zdGFudD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZXhwcl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGZhbHNleS1jb25zdGFudD9cclxuIFtleHByXVxyXG4gKGxldFxyXG4gIFt7OmtleXMgW29wIGZvcm0gY29uc3QtZXhwcl19IChhbmEvdW53cmFwLXF1b3RlIGV4cHIpXVxyXG4gIChvclxyXG4gICAoYW5kICg9IG9wIDpjb25zdCkgKG9yIChmYWxzZT8gZm9ybSkgKG5pbD8gZm9ybSkpKVxyXG4gICAoYW5kIChzb21lPyBjb25zdC1leHByKSAoZmFsc2V5LWNvbnN0YW50PyBjb25zdC1leHByKSkpKSlcclxuIn0gezpzeW0gZW1pdC1jb25zdGFudHMtY29tbWEtc2VwLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2NzXSl9LCA6c291cmNlICIoZGVmblxyXG4gZW1pdC1jb25zdGFudHMtY29tbWEtc2VwXHJcbiBbY3NdXHJcbiAoZm5cclxuICBbXVxyXG4gIChkb2FsbFxyXG4gICAobWFwLWluZGV4ZWRcclxuICAgIChmbiBbaSBtXSAoaWYgKGV2ZW4/IGkpIChlbWl0LWNvbnN0YW50IG0pIChlbWl0cyBtKSkpXHJcbiAgICAoY29tbWEtc2VwIGNzKSkpKSlcclxuIn0gezpzeW0gKnNvdXJjZS1tYXAtZGF0YSosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpzb3VyY2UtbWFwLWRhdGEqIG5pbClcclxuIn0gezpzeW0gZW1pdC1yZWNvcmQtdmFsdWUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbnMgbmFtZSBpdGVtc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGVtaXQtcmVjb3JkLXZhbHVlXHJcbiBbbnMgbmFtZSBpdGVtc11cclxuIChlbWl0cyBucyBcIi5tYXBfX0dUX1wiIG5hbWUgXCIoXCIgaXRlbXMgXCIpXCIpKVxyXG4ifSB7OnN5bSBlbWl0LXZhciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt7OmtleXMgW2luZm8gZW52IGZvcm1dLCA6YXMgYXN0fV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGVtaXQtdmFyXHJcbiBbezprZXlzIFtpbmZvIGVudiBmb3JtXSwgOmFzIGFzdH1dXHJcbiAoaWYtbGV0XHJcbiAgW2NvbnN0LWV4cHIgKDpjb25zdC1leHByIGFzdCldXHJcbiAgKGVtaXQgKGFzc29jIGNvbnN0LWV4cHIgOmVudiBlbnYpKVxyXG4gIChsZXRcclxuICAgW3s6a2V5cyBbb3B0aW9uc10sIDphcyBjZW52fVxyXG4gICAgQGVudi8qY29tcGlsZXIqXHJcbiAgICB2YXItbmFtZVxyXG4gICAgKDpuYW1lIGluZm8pXHJcbiAgICBpbmZvXHJcbiAgICAoaWZcclxuICAgICAoPSAobmFtZXNwYWNlIHZhci1uYW1lKSBcImpzXCIpXHJcbiAgICAgKGxldFxyXG4gICAgICBbanMtbW9kdWxlLW5hbWVcclxuICAgICAgIChnZXQtaW4gY2VudiBbOmpzLW1vZHVsZS1pbmRleCAobmFtZSB2YXItbmFtZSkgOm5hbWVdKV1cclxuICAgICAgKG9yIGpzLW1vZHVsZS1uYW1lIChuYW1lIHZhci1uYW1lKSkpXHJcbiAgICAgaW5mbyldXHJcbiAgIChpZlxyXG4gICAgKDpiaW5kaW5nLWZvcm0/IGFzdClcclxuICAgIChlbWl0cyAobXVuZ2UgYXN0KSlcclxuICAgICh3aGVuLW5vdFxyXG4gICAgICg9IDpzdGF0ZW1lbnQgKDpjb250ZXh0IGVudikpXHJcbiAgICAgKGxldFxyXG4gICAgICBbcmVzZXJ2ZWRcclxuICAgICAgIChjb25kLT5cclxuICAgICAgICBqcy1yZXNlcnZlZFxyXG4gICAgICAgIChhbmRcclxuICAgICAgICAgKGVzNT49ICg6bGFuZ3VhZ2Utb3V0IG9wdGlvbnMpKVxyXG4gICAgICAgICAoc29tZT8gKG5hbWVzcGFjZSB2YXItbmFtZSkpKVxyXG4gICAgICAgIChzZXQvZGlmZmVyZW5jZSBhbmEvZXM1LWFsbG93ZWQpKVxyXG4gICAgICAganMtbW9kdWxlXHJcbiAgICAgICAoZ2V0LWluXHJcbiAgICAgICAgY2VudlxyXG4gICAgICAgIFs6anMtbmFtZXNwYWNlcyAob3IgKG5hbWVzcGFjZSB2YXItbmFtZSkgKG5hbWUgdmFyLW5hbWUpKV0pXHJcbiAgICAgICBpbmZvXHJcbiAgICAgICAoY29uZC0+IGluZm8gKG5vdD0gZm9ybSAnanMvLUluZmluaXR5KSAobXVuZ2UgcmVzZXJ2ZWQpKV1cclxuICAgICAgKGVtaXQtd3JhcFxyXG4gICAgICAgZW52XHJcbiAgICAgICAoY2FzZVxyXG4gICAgICAgICg6bW9kdWxlLXR5cGUganMtbW9kdWxlKVxyXG4gICAgICAgIDpjb21tb25qc1xyXG4gICAgICAgIChpZlxyXG4gICAgICAgICAobmFtZXNwYWNlIHZhci1uYW1lKVxyXG4gICAgICAgICAoZW1pdHNcclxuICAgICAgICAgIChtdW5nZSAobmFtZXNwYWNlIHZhci1uYW1lKSByZXNlcnZlZClcclxuICAgICAgICAgIFwiW1xcXCJkZWZhdWx0XFxcIl0uXCJcclxuICAgICAgICAgIChtdW5nZSAobmFtZSB2YXItbmFtZSkgcmVzZXJ2ZWQpKVxyXG4gICAgICAgICAoZW1pdHMgKG11bmdlIChuYW1lIHZhci1uYW1lKSByZXNlcnZlZCkgXCJbXFxcImRlZmF1bHRcXFwiXVwiKSlcclxuICAgICAgICA6ZXM2XHJcbiAgICAgICAgKGlmXHJcbiAgICAgICAgIChhbmQgKG5hbWVzcGFjZSB2YXItbmFtZSkgKD0gXCJkZWZhdWx0XCIgKG5hbWUgdmFyLW5hbWUpKSlcclxuICAgICAgICAgKGVtaXRzIChtdW5nZSAobmFtZXNwYWNlIHZhci1uYW1lKSByZXNlcnZlZCkgXCJbXFxcImRlZmF1bHRcXFwiXVwiKVxyXG4gICAgICAgICAoZW1pdHMgaW5mbykpXHJcbiAgICAgICAgKGVtaXRzIGluZm8pKSkpKSkpKSlcclxuIn0gezpzeW0gbWFwcGVkLXR5cGVzLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBtYXBwZWQtdHlwZXMge1wibmlsXCIgXCJudWxsXCJ9KVxyXG4ifSB7OnN5bSByZXNvbHZlLXR5cGVzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiB0c10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlc29sdmUtdHlwZXNcclxuIFtlbnYgdHNdXHJcbiAobGV0XHJcbiAgW3RzXHJcbiAgICgtPiB0cyBzdHJpbmcvdHJpbSAoc3VicyAxIChkZWMgKGNvdW50IHRzKSkpKVxyXG4gICB4c1xyXG4gICAoc3RyaW5nL3NwbGl0IHRzICNcIlxcfFwiKV1cclxuICAoc3RyXHJcbiAgIFwie1wiXHJcbiAgIChzdHJpbmcvam9pblxyXG4gICAgXCJ8XCJcclxuICAgIChtYXAgKGZuKiBbcDFfXzQxMjcwI10gKHJlc29sdmUtdHlwZSBlbnYgcDFfXzQxMjcwIykpIHhzKSlcclxuICAgXCJ9XCIpKSlcclxuIn0gezpzeW0gKmlucHV0cyosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICppbnB1dHMqIG5pbClcclxuIn0gezpzeW0gZW1pdC1zdHIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZXhwcl0pfSwgOnNvdXJjZSAiKGRlZm4gZW1pdC1zdHIgW2V4cHJdICh3aXRoLW91dC1zdHIgKGVtaXQgZXhwcikpKVxyXG4ifSB7OnN5bSBlbWl0LW1hcCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtrZXlzIHZhbHMgY29tbWEtc2VwIGRpc3RpbmN0LWtleXM/XSl9LCA6c291cmNlICIoZGVmblxyXG4gZW1pdC1tYXBcclxuIFtrZXlzIHZhbHMgY29tbWEtc2VwIGRpc3RpbmN0LWtleXM/XVxyXG4gKGNvbmRcclxuICAoemVybz8gKGNvdW50IGtleXMpKVxyXG4gIChlbWl0cyBcImNsanMuY29yZS5QZXJzaXN0ZW50QXJyYXlNYXAuRU1QVFlcIilcclxuICAoPD0gKGNvdW50IGtleXMpIGFycmF5LW1hcC10aHJlc2hvbGQpXHJcbiAgKGlmXHJcbiAgIChkaXN0aW5jdC1rZXlzPyBrZXlzKVxyXG4gICAoZW1pdHNcclxuICAgIFwibmV3IGNsanMuY29yZS5QZXJzaXN0ZW50QXJyYXlNYXAobnVsbCwgXCJcclxuICAgIChjb3VudCBrZXlzKVxyXG4gICAgXCIsIFtcIlxyXG4gICAgKGNvbW1hLXNlcCAoaW50ZXJsZWF2ZSBrZXlzIHZhbHMpKVxyXG4gICAgXCJdLCBudWxsKVwiKVxyXG4gICAoZW1pdHNcclxuICAgIFwiY2xqcy5jb3JlLlBlcnNpc3RlbnRBcnJheU1hcC5jcmVhdGVBc0lmQnlBc3NvYyhbXCJcclxuICAgIChjb21tYS1zZXAgKGludGVybGVhdmUga2V5cyB2YWxzKSlcclxuICAgIFwiXSlcIikpXHJcbiAgOmVsc2VcclxuICAoZW1pdHNcclxuICAgXCJjbGpzLmNvcmUuUGVyc2lzdGVudEhhc2hNYXAuZnJvbUFycmF5cyhbXCJcclxuICAgKGNvbW1hLXNlcCBrZXlzKVxyXG4gICBcIl0sW1wiXHJcbiAgIChjb21tYS1zZXAgdmFscylcclxuICAgXCJdKVwiKSkpXHJcbiJ9IHs6c3ltIGVtaXQtdmVjdG9yLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2l0ZW1zIGNvbW1hLXNlcF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGVtaXQtdmVjdG9yXHJcbiBbaXRlbXMgY29tbWEtc2VwXVxyXG4gKGlmXHJcbiAgKGVtcHR5PyBpdGVtcylcclxuICAoZW1pdHMgXCJjbGpzLmNvcmUuUGVyc2lzdGVudFZlY3Rvci5FTVBUWVwiKVxyXG4gIChsZXRcclxuICAgW2NudCAoY291bnQgaXRlbXMpXVxyXG4gICAoaWZcclxuICAgICg8IGNudCAzMilcclxuICAgIChlbWl0c1xyXG4gICAgIFwibmV3IGNsanMuY29yZS5QZXJzaXN0ZW50VmVjdG9yKG51bGwsIFwiXHJcbiAgICAgY250XHJcbiAgICAgXCIsIDUsIGNsanMuY29yZS5QZXJzaXN0ZW50VmVjdG9yLkVNUFRZX05PREUsIFtcIlxyXG4gICAgIChjb21tYS1zZXAgaXRlbXMpXHJcbiAgICAgXCJdLCBudWxsKVwiKVxyXG4gICAgKGVtaXRzXHJcbiAgICAgXCJjbGpzLmNvcmUuUGVyc2lzdGVudFZlY3Rvci5mcm9tQXJyYXkoW1wiXHJcbiAgICAgKGNvbW1hLXNlcCBpdGVtcylcclxuICAgICBcIl0sIHRydWUpXCIpKSkpKVxyXG4ifSB7OnN5bSB0cnV0aHktY29uc3RhbnQ/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2V4cHJdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB0cnV0aHktY29uc3RhbnQ/XHJcbiBbZXhwcl1cclxuIChsZXRcclxuICBbezprZXlzIFtvcCBmb3JtIGNvbnN0LWV4cHJdfSAoYW5hL3Vud3JhcC1xdW90ZSBleHByKV1cclxuICAob3JcclxuICAgKGFuZFxyXG4gICAgKD0gb3AgOmNvbnN0KVxyXG4gICAgZm9ybVxyXG4gICAgKG5vdFxyXG4gICAgIChvclxyXG4gICAgICAoYW5kIChzdHJpbmc/IGZvcm0pICg9IGZvcm0gXCJcIikpXHJcbiAgICAgIChhbmQgKG51bWJlcj8gZm9ybSkgKHplcm8/IGZvcm0pKSkpKVxyXG4gICAoYW5kIChzb21lPyBjb25zdC1leHByKSAodHJ1dGh5LWNvbnN0YW50PyBjb25zdC1leHByKSkpKSlcclxuIn0gezpzeW0gZW1pdGxuLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW10gW2FdIFthIGJdIFthIGIgY10gW2EgYiBjIGRdIFthIGIgYyBkIGVdIFthIGIgYyBkIGUgJiB4c11dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGVtaXRsblxyXG4gKFtdIChfZW1pdGxuKSlcclxuIChbYV0gKGVtaXRzIGEpIChfZW1pdGxuKSlcclxuIChbYSBiXSAoZW1pdHMgYSkgKGVtaXRzIGIpIChfZW1pdGxuKSlcclxuIChbYSBiIGNdIChlbWl0cyBhKSAoZW1pdHMgYikgKGVtaXRzIGMpIChfZW1pdGxuKSlcclxuIChbYSBiIGMgZF0gKGVtaXRzIGEpIChlbWl0cyBiKSAoZW1pdHMgYykgKGVtaXRzIGQpIChfZW1pdGxuKSlcclxuIChbYSBiIGMgZCBlXVxyXG4gIChlbWl0cyBhKVxyXG4gIChlbWl0cyBiKVxyXG4gIChlbWl0cyBjKVxyXG4gIChlbWl0cyBkKVxyXG4gIChlbWl0cyBlKVxyXG4gIChfZW1pdGxuKSlcclxuIChbYSBiIGMgZCBlICYgeHNdXHJcbiAgKGVtaXRzIGEpXHJcbiAgKGVtaXRzIGIpXHJcbiAgKGVtaXRzIGMpXHJcbiAgKGVtaXRzIGQpXHJcbiAgKGVtaXRzIGUpXHJcbiAgKGRvc2VxIFt4IHhzXSAoZW1pdHMgeCkpXHJcbiAgKF9lbWl0bG4pKSlcclxuIn0gezpzeW0gZW1pdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFthc3RdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBlbWl0XHJcbiBbYXN0XVxyXG4gKHdoZW5cclxuICAqc291cmNlLW1hcC1kYXRhKlxyXG4gIChsZXRcclxuICAgW3s6a2V5cyBbZW52XX0gYXN0XVxyXG4gICAod2hlblxyXG4gICAgKDpsaW5lIGVudilcclxuICAgIChsZXRcclxuICAgICBbezprZXlzIFtsaW5lIGNvbHVtbl19IGVudl1cclxuICAgICAoc3dhcCFcclxuICAgICAgKnNvdXJjZS1tYXAtZGF0YSpcclxuICAgICAgKGZuXHJcbiAgICAgICBbbV1cclxuICAgICAgIChsZXRcclxuICAgICAgICBbbWluZm9cclxuICAgICAgICAgKGNvbmQtPlxyXG4gICAgICAgICAgezpnY29sXHJcbiAgICAgICAgICAgIz8oOmNsaiAoLmdldCAqc291cmNlLW1hcC1kYXRhLWdlbi1jb2wqKSA6Y2xqcyAoOmdlbi1jb2wgbSkpLFxyXG4gICAgICAgICAgIDpnbGluZSAoOmdlbi1saW5lIG0pfVxyXG4gICAgICAgICAgKCN7OmJpbmRpbmcgOnZhciA6anMtdmFyIDpsb2NhbH0gKDpvcCBhc3QpKVxyXG4gICAgICAgICAgKGFzc29jIDpuYW1lIChzdHIgKC0+IGFzdCA6aW5mbyA6bmFtZSkpKSldXHJcbiAgICAgICAgKHVwZGF0ZS1pblxyXG4gICAgICAgICBtXHJcbiAgICAgICAgIFs6c291cmNlLW1hcCAoZGVjIGxpbmUpXVxyXG4gICAgICAgICAoZm5pbFxyXG4gICAgICAgICAgKGZuXHJcbiAgICAgICAgICAgW2xpbmVdXHJcbiAgICAgICAgICAgKHVwZGF0ZS1pblxyXG4gICAgICAgICAgICBsaW5lXHJcbiAgICAgICAgICAgIFsoaWYgY29sdW1uIChkZWMgY29sdW1uKSAwKV1cclxuICAgICAgICAgICAgKGZuaWwgKGZuIFtjb2x1bW5dIChjb25qIGNvbHVtbiBtaW5mbykpIFtdKSkpXHJcbiAgICAgICAgICAoc29ydGVkLW1hcCkpKSkpKSkpKSlcclxuIChlbWl0KiBhc3QpKVxyXG4ifSB7OnN5bSBzYWZlLXRlc3Q/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBlXSl9LCA6c291cmNlICIoZGVmblxyXG4gc2FmZS10ZXN0P1xyXG4gW2VudiBlXVxyXG4gKGxldFxyXG4gIFt0YWcgKGFuYS9pbmZlci10YWcgZW52IGUpXVxyXG4gIChvciAoI3snc2VxICdib29sZWFufSB0YWcpICh0cnV0aHktY29uc3RhbnQ/IGUpKSkpXHJcbiJ9IHs6c3ltIGVtaXQtZXh0ZXJucywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1tleHRlcm5zXSBbcHJlZml4IGV4dGVybnMgdG9wLWxldmVsIGtub3duLWV4dGVybnNdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBlbWl0LWV4dGVybnNcclxuIChbZXh0ZXJuc11cclxuICAoZW1pdC1leHRlcm5zXHJcbiAgIFtdXHJcbiAgIGV4dGVybnNcclxuICAgKGF0b20gI3t9KVxyXG4gICAod2hlbiBlbnYvKmNvbXBpbGVyKiAoYW5hL2dldC1leHRlcm5zKSkpKVxyXG4gKFtwcmVmaXggZXh0ZXJucyB0b3AtbGV2ZWwga25vd24tZXh0ZXJuc11cclxuICAobG9vcFxyXG4gICBba3MgKHNlcSAoa2V5cyBleHRlcm5zKSldXHJcbiAgICh3aGVuXHJcbiAgICBrc1xyXG4gICAgKGxldFxyXG4gICAgIFtrIChmaXJzdCBrcykgW3RvcCA6YXMgcHJlZml4J10gKGNvbmogcHJlZml4IGspXVxyXG4gICAgICh3aGVuXHJcbiAgICAgIChhbmQgKG5vdD0gJ3Byb3RvdHlwZSBrKSAobmlsPyAoZ2V0LWluIGtub3duLWV4dGVybnMgcHJlZml4JykpKVxyXG4gICAgICAoaWYtbm90XHJcbiAgICAgICAob3IgKGNvbnRhaW5zPyBAdG9wLWxldmVsIHRvcCkgKGNvbnRhaW5zPyBrbm93bi1leHRlcm5zIHRvcCkpXHJcbiAgICAgICAoZG9cclxuICAgICAgICAoZW1pdGxuIFwidmFyIFwiIChzdHJpbmcvam9pbiBcIi5cIiAobWFwIG11bmdlIHByZWZpeCcpKSBcIjtcIilcclxuICAgICAgICAoc3dhcCEgdG9wLWxldmVsIGNvbmogdG9wKSlcclxuICAgICAgIChlbWl0bG4gKHN0cmluZy9qb2luIFwiLlwiIChtYXAgbXVuZ2UgcHJlZml4JykpIFwiO1wiKSkpXHJcbiAgICAgKGxldFxyXG4gICAgICBbbSAoZ2V0IGV4dGVybnMgayldXHJcbiAgICAgICh3aGVuLW5vdFxyXG4gICAgICAgKGVtcHR5PyBtKVxyXG4gICAgICAgKGVtaXQtZXh0ZXJucyBwcmVmaXgnIG0gdG9wLWxldmVsIGtub3duLWV4dGVybnMpKSkpXHJcbiAgICAocmVjdXIgKG5leHQga3MpKSkpKSlcclxuIn0gezpzeW0gZW1pdC1nbG9iYWwtZXhwb3J0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW25zLW5hbWUgZ2xvYmFsLWV4cG9ydHMgbGliXSl9LCA6c291cmNlICIoZGVmblxyXG4gZW1pdC1nbG9iYWwtZXhwb3J0XHJcbiBbbnMtbmFtZSBnbG9iYWwtZXhwb3J0cyBsaWJdXHJcbiAoZW1pdGxuXHJcbiAgKG11bmdlIG5zLW5hbWUpXHJcbiAgXCIuXCJcclxuICAoYW5hL211bmdlLWdsb2JhbC1leHBvcnQgbGliKVxyXG4gIFwiID0gZ29vZy5nbG9iYWxcIlxyXG4gICgtPj5cclxuICAgKHN0cmluZy9zcGxpdFxyXG4gICAgKG5hbWVcclxuICAgICAob3JcclxuICAgICAgKGdldCBnbG9iYWwtZXhwb3J0cyAoc3ltYm9sIGxpYikpXHJcbiAgICAgIChnZXQgZ2xvYmFsLWV4cG9ydHMgKG5hbWUgbGliKSkpKVxyXG4gICAgI1wiXFwuXCIpXHJcbiAgIChtYXAgKGZuIFtwcm9wXSAoc3RyIFwiW1xcXCJcIiBwcm9wIFwiXFxcIl1cIikpKVxyXG4gICAoYXBwbHkgc3RyKSlcclxuICBcIjtcIikpXHJcbiJ9IHs6c3ltIGRpc3RpbmN0LWNvbnN0YW50cz8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbaXRlbXNdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBkaXN0aW5jdC1jb25zdGFudHM/XHJcbiBbaXRlbXNdXHJcbiAobGV0XHJcbiAgW2l0ZW1zIChtYXAgYW5hL3Vud3JhcC1xdW90ZSBpdGVtcyldXHJcbiAgKGFuZFxyXG4gICAoZXZlcnk/IChmbiogW3AxX180MTI2OCNdICg9ICg6b3AgcDFfXzQxMjY4IykgOmNvbnN0KSkgaXRlbXMpXHJcbiAgICg9IChjb3VudCAoaW50byAje30gaXRlbXMpKSAoY291bnQgaXRlbXMpKSkpKVxyXG4ifSB7OnN5bSBzaGFkb3ctZGVwdGgsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHNoYWRvdy1kZXB0aFxyXG4gW3NdXHJcbiAobGV0XHJcbiAgW3s6a2V5cyBbbmFtZSBpbmZvXX0gc11cclxuICAobG9vcFxyXG4gICBbZCAwIHs6a2V5cyBbc2hhZG93XX0gaW5mb11cclxuICAgKGNvbmRcclxuICAgIHNoYWRvd1xyXG4gICAgKHJlY3VyIChpbmMgZCkgc2hhZG93KVxyXG4gICAgKGZpbmQtbnMtc3RhcnRzLXdpdGggKHN0ciBuYW1lKSlcclxuICAgIChpbmMgZClcclxuICAgIDplbHNlXHJcbiAgICBkKSkpKVxyXG4ifSksIGNsanMuc291cmNlLW1hcC5iYXNlNjQgKHs6c3ltIGNoYXJzNjQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXHJcbiBjaGFyczY0XHJcbiBcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky9cIilcclxuIn0gezpzeW0gY2hhci0+aW50LCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBjaGFyLT5pbnQgKHppcG1hcCBjaGFyczY0IChyYW5nZSAwIDY0KSkpXHJcbiJ9IHs6c3ltIGludC0+Y2hhciwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgaW50LT5jaGFyICh6aXBtYXAgKHJhbmdlIDAgNjQpIGNoYXJzNjQpKVxyXG4ifSB7OnN5bSBlbmNvZGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGVuY29kZVxyXG4gW25dXHJcbiAobGV0XHJcbiAgW2UgKGZpbmQgaW50LT5jaGFyIG4pXVxyXG4gIChpZlxyXG4gICBlXHJcbiAgIChzZWNvbmQgZSlcclxuICAgKHRocm93IChqcy9FcnJvci4gKHN0ciBcIk11c3QgYmUgYmV0d2VlbiAwIGFuZCA2MzogXCIgbikpKSkpKVxyXG4ifSB7OnN5bSBkZWNvZGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbY10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGRlY29kZVxyXG4gW2NdXHJcbiAobGV0XHJcbiAgW2UgKGZpbmQgY2hhci0+aW50IGMpXVxyXG4gIChpZlxyXG4gICBlXHJcbiAgIChzZWNvbmQgZSlcclxuICAgKHRocm93IChqcy9FcnJvci4gKHN0ciBcIk5vdCBhIHZhbGlkIGJhc2UgNjQgZGlnaXQ6IFwiIGMpKSkpKSlcclxuIn0pLCBvYWtjbGpzLnRvb2xzLnJlYWRlci5pbXBsLnV0aWxzICh7OnN5bSByZWFkZXItY29uZGl0aW9uYWwsIDptZXRhIHs6ZG9jICJDb25zdHJ1Y3QgYSBkYXRhIHJlcHJlc2VudGF0aW9uIG9mIGEgcmVhZGVyIGNvbmRpdGlvbmFsLlxuICBJZiB0cnVlLCBzcGxpY2luZz8gaW5kaWNhdGVzIHJlYWQtY29uZC1zcGxpY2luZy4iLCA6YXJnbGlzdHMgKFtmb3JtIHNwbGljaW5nP10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlYWRlci1jb25kaXRpb25hbFxyXG4gXCJDb25zdHJ1Y3QgYSBkYXRhIHJlcHJlc2VudGF0aW9uIG9mIGEgcmVhZGVyIGNvbmRpdGlvbmFsLlxcbiAgSWYgdHJ1ZSwgc3BsaWNpbmc/IGluZGljYXRlcyByZWFkLWNvbmQtc3BsaWNpbmcuXCJcclxuIFtmb3JtIHNwbGljaW5nP11cclxuIChSZWFkZXJDb25kaXRpb25hbC4gc3BsaWNpbmc/IGZvcm0pKVxyXG4ifSB7OnN5bSB3aGl0ZXNwYWNlPywgOm1ldGEgezpkb2MgIkNoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gY2hhcmFjdGVyIGlzIHdoaXRlc3BhY2UiLCA6YXJnbGlzdHMgKFtjaF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHdoaXRlc3BhY2U/XHJcbiBcIkNoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gY2hhcmFjdGVyIGlzIHdoaXRlc3BhY2VcIlxyXG4gW2NoXVxyXG4gKHdoZW4tbm90IChuaWw/IGNoKSAoaWYgKGlkZW50aWNhbD8gY2ggXFwsKSB0cnVlICgudGVzdCB3cy1yeCBjaCkpKSlcclxuIn0gezpzeW0gY2hhci1jb2RlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2NoIGJhc2VdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBjaGFyLWNvZGVcclxuIFtjaCBiYXNlXVxyXG4gKGxldCBbY29kZSAoanMvcGFyc2VJbnQgY2ggYmFzZSldIChpZiAoanMvaXNOYU4gY29kZSkgLTEgY29kZSkpKVxyXG4ifSB7OnN5bSBsYXN0LWlkLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBsYXN0LWlkIChhdG9tIDApKVxyXG4ifSB7OnN5bSBjaGFyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGNoYXIgW3hdICh3aGVuLW5vdCAobmlsPyB4KSAoY2xqcy5jb3JlL2NoYXIgeCkpKVxyXG4ifSB7OnN5bSBudW1lcmljPywgOm1ldGEgezpkb2MgIkNoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gY2hhcmFjdGVyIGlzIG51bWVyaWMiLCA6YXJnbGlzdHMgKFtjaF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIG51bWVyaWM/XHJcbiBcIkNoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gY2hhcmFjdGVyIGlzIG51bWVyaWNcIlxyXG4gW2NoXVxyXG4gKHdoZW4tbm90IChuaWw/IGNoKSAoZ3N0cmluZy9pc051bWVyaWMgY2gpKSlcclxuIn0gezpzeW0gc2Vjb25kJywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtbYSBiXV0pfSwgOnNvdXJjZSAiKGRlZm4gc2Vjb25kJyBbW2EgYl1dICh3aGVuLW5vdCBhIGIpKVxyXG4ifSB7OnN5bSBkZXN1Z2FyLW1ldGEsIDptZXRhIHs6ZG9jICJSZXNvbHZlcyBzeW50YWN0aWNhbCBzdWdhciBpbiBtZXRhZGF0YSIsIDphcmdsaXN0cyAoW2ZdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBkZXN1Z2FyLW1ldGFcclxuIFwiUmVzb2x2ZXMgc3ludGFjdGljYWwgc3VnYXIgaW4gbWV0YWRhdGFcIlxyXG4gW2ZdXHJcbiAoY29uZFxyXG4gIChrZXl3b3JkPyBmKVxyXG4gIHtmIHRydWV9XHJcbiAgKHN5bWJvbD8gZilcclxuICB7OnRhZyBmfVxyXG4gIChzdHJpbmc/IGYpXHJcbiAgezp0YWcgZn1cclxuICA6ZWxzZVxyXG4gIGYpKVxyXG4ifSB7OnN5bSBuZXh0LWlkLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm4gbmV4dC1pZCBbXSAoc3dhcCEgbGFzdC1pZCBpbmMpKVxyXG4ifSB7OnN5bSBleC1pbmZvPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtleF0pfSwgOnNvdXJjZSAiKGRlZm4gZXgtaW5mbz8gW2V4XSAoaW5zdGFuY2U/IGNsanMuY29yZS5FeGNlcHRpb25JbmZvIGV4KSlcclxuIn0gezpzeW0gcmVhZGVyLWNvbmRpdGlvbmFsPywgOm1ldGEgezpkb2MgIlJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBpcyB0aGUgZGF0YSByZXByZXNlbnRhdGlvbiBvZiBhIHJlYWRlciBjb25kaXRpb25hbCIsIDphcmdsaXN0cyAoW3ZhbHVlXSl9LCA6c291cmNlICIoZGVmblxyXG4gcmVhZGVyLWNvbmRpdGlvbmFsP1xyXG4gXCJSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgaXMgdGhlIGRhdGEgcmVwcmVzZW50YXRpb24gb2YgYSByZWFkZXIgY29uZGl0aW9uYWxcIlxyXG4gW3ZhbHVlXVxyXG4gKGluc3RhbmNlPyBSZWFkZXJDb25kaXRpb25hbCB2YWx1ZSkpXHJcbiJ9IHs6c3ltIG5ld2xpbmU/LCA6bWV0YSB7OmRvYyAiQ2hlY2tzIHdoZXRoZXIgdGhlIGNoYXJhY3RlciBpcyBhIG5ld2xpbmUiLCA6YXJnbGlzdHMgKFtjXSl9LCA6c291cmNlICIoZGVmblxyXG4gbmV3bGluZT9cclxuIFwiQ2hlY2tzIHdoZXRoZXIgdGhlIGNoYXJhY3RlciBpcyBhIG5ld2xpbmVcIlxyXG4gW2NdXHJcbiAob3IgKGlkZW50aWNhbD8gXFxuZXdsaW5lIGMpIChpZGVudGljYWw/IFwiXFxuXCIgYykgKG5pbD8gYykpKVxyXG4ifSB7OnN5bSBuYW1lc3BhY2Uta2V5cywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtucyBrZXlzXSl9LCA6c291cmNlICIoZGVmblxyXG4gbmFtZXNwYWNlLWtleXNcclxuIFtucyBrZXlzXVxyXG4gKGZvclxyXG4gIFtrZXkga2V5c11cclxuICAoaWZcclxuICAgKG9yIChzeW1ib2w/IGtleSkgKGtleXdvcmQ/IGtleSkpXHJcbiAgIChsZXRcclxuICAgIFtba2V5LW5zIGtleS1uYW1lXVxyXG4gICAgICgoanV4dCBuYW1lc3BhY2UgbmFtZSkga2V5KVxyXG4gICAgIC0+a2V5XHJcbiAgICAgKGlmIChzeW1ib2w/IGtleSkgc3ltYm9sIGtleXdvcmQpXVxyXG4gICAgKGNvbmRcclxuICAgICAobmlsPyBrZXktbnMpXHJcbiAgICAgKC0+a2V5IG5zIGtleS1uYW1lKVxyXG4gICAgICg9IFwiX1wiIGtleS1ucylcclxuICAgICAoLT5rZXkga2V5LW5hbWUpXHJcbiAgICAgOmVsc2VcclxuICAgICBrZXkpKVxyXG4gICBrZXkpKSlcclxuIn0gezpzeW0gd3MtcngsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHdzLXJ4ICNcIltcXHNdXCIpXHJcbiJ9KSwgY2xqcy5jb3JlLmFzeW5jLmltcGwuY2hhbm5lbHMgKHs6c3ltIGJveCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt2YWxdKX0sIDpzb3VyY2UgIihkZWZuIGJveCBbdmFsXSAocmVpZnkgY2xqcy5jb3JlL0lEZXJlZiAoLWRlcmVmIFtfXSB2YWwpKSlcclxuIn0gezpzeW0gcHV0LWFjdGl2ZT8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbYm94XSl9LCA6c291cmNlICIoZGVmbiBwdXQtYWN0aXZlPyBbYm94XSAoaW1wbC9hY3RpdmU/ICguLWhhbmRsZXIgYm94KSkpXHJcbiJ9IHs6c3ltIE1BWF9ESVJUWSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgTUFYX0RJUlRZIDY0KVxyXG4ifSB7OnN5bSBhYm9ydCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0aGlzXSl9LCA6cHJvdG9jb2wgTU1DfSB7OnN5bSBNTUMsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzIChhYm9ydCl9IHs6c3ltIGNoYW4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbYnVmXSBbYnVmIHhmb3JtXSBbYnVmIHhmb3JtIGV4aF1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGNoYW5cclxuIChbYnVmXSAoY2hhbiBidWYgbmlsKSlcclxuIChbYnVmIHhmb3JtXSAoY2hhbiBidWYgeGZvcm0gbmlsKSlcclxuIChbYnVmIHhmb3JtIGV4aF1cclxuICAoTWFueVRvTWFueUNoYW5uZWwuXHJcbiAgIChidWZmZXJzL3JpbmctYnVmZmVyIDMyKVxyXG4gICAwXHJcbiAgIChidWZmZXJzL3JpbmctYnVmZmVyIDMyKVxyXG4gICAwXHJcbiAgIGJ1ZlxyXG4gICBmYWxzZVxyXG4gICAobGV0XHJcbiAgICBbYWRkISAoaWYgeGZvcm0gKHhmb3JtIGltcGwvYWRkISkgaW1wbC9hZGQhKV1cclxuICAgIChmblxyXG4gICAgIChbYnVmXSAodHJ5IChhZGQhIGJ1ZikgKGNhdGNoIDpkZWZhdWx0IHQgKGhhbmRsZSBidWYgZXhoIHQpKSkpXHJcbiAgICAgKFtidWYgdmFsXVxyXG4gICAgICAodHJ5IChhZGQhIGJ1ZiB2YWwpIChjYXRjaCA6ZGVmYXVsdCB0IChoYW5kbGUgYnVmIGV4aCB0KSkpKSkpKSkpXHJcbiJ9KSwgY2xqcy5jb3JlLmFzeW5jLmltcGwuZGlzcGF0Y2ggKHs6c3ltIHRhc2tzLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiB0YXNrcyAoYnVmZmVycy9yaW5nLWJ1ZmZlciAzMikpXHJcbiJ9IHs6c3ltIHJ1bm5pbmc/LCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBydW5uaW5nPyBmYWxzZSlcclxuIn0gezpzeW0gcXVldWVkPywgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgcXVldWVkPyBmYWxzZSlcclxuIn0gezpzeW0gVEFTS19CQVRDSF9TSVpFLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBUQVNLX0JBVENIX1NJWkUgMTAyNClcclxuIn0gezpzeW0gcHJvY2Vzcy1tZXNzYWdlcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBwcm9jZXNzLW1lc3NhZ2VzXHJcbiBbXVxyXG4gKHNldCEgcnVubmluZz8gdHJ1ZSlcclxuIChzZXQhIHF1ZXVlZD8gZmFsc2UpXHJcbiAobG9vcFxyXG4gIFtjb3VudCAwXVxyXG4gIChsZXRcclxuICAgW20gKC5wb3AgdGFza3MpXVxyXG4gICAod2hlbi1ub3RcclxuICAgIChuaWw/IG0pXHJcbiAgICAobSlcclxuICAgICh3aGVuICg8IGNvdW50IFRBU0tfQkFUQ0hfU0laRSkgKHJlY3VyIChpbmMgY291bnQpKSkpKSlcclxuIChzZXQhIHJ1bm5pbmc/IGZhbHNlKVxyXG4gKHdoZW4gKD4gKC4tbGVuZ3RoIHRhc2tzKSAwKSAocXVldWUtZGlzcGF0Y2hlcikpKVxyXG4ifSB7OnN5bSBxdWV1ZS1kaXNwYXRjaGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHF1ZXVlLWRpc3BhdGNoZXJcclxuIFtdXHJcbiAod2hlbi1ub3RcclxuICAoYW5kIHF1ZXVlZD8gcnVubmluZz8pXHJcbiAgKHNldCEgcXVldWVkPyB0cnVlKVxyXG4gIChnb29nLmFzeW5jLm5leHRUaWNrIHByb2Nlc3MtbWVzc2FnZXMpKSlcclxuIn0gezpzeW0gcnVuLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2ZdKX0sIDpzb3VyY2UgIihkZWZuIHJ1biBbZl0gKC51bmJvdW5kZWQtdW5zaGlmdCB0YXNrcyBmKSAocXVldWUtZGlzcGF0Y2hlcikpXHJcbiJ9IHs6c3ltIHF1ZXVlLWRlbGF5LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2YgZGVsYXldKX0sIDpzb3VyY2UgIihkZWZuIHF1ZXVlLWRlbGF5IFtmIGRlbGF5XSAoanMvc2V0VGltZW91dCBmIGRlbGF5KSlcclxuIn0pLCBwYXJlbi1zb3VwLmNvcmUgKHs6c3ltIGNhbi11bmRvLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VkaXRvcl0pfSwgOnNvdXJjZSAiKGRlZm4gY2FuLXVuZG8gW2VkaXRvcl0gKGNhbi11bmRvPyBlZGl0b3IpKVxyXG4ifSB7OnN5bSBzaG93LWVycm9yLW1lc3NhZ2UhLCA6bWV0YSB7OmRvYyAiU2hvd3MgYSBwb3B1cCB3aXRoIGFuIGVycm9yIG1lc3NhZ2UuIiwgOmFyZ2xpc3RzIChbcGFyZW50LWVsZW0gZXZlbnRdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBzaG93LWVycm9yLW1lc3NhZ2UhXHJcbiBcIlNob3dzIGEgcG9wdXAgd2l0aCBhbiBlcnJvciBtZXNzYWdlLlwiXHJcbiBbcGFyZW50LWVsZW0gZXZlbnRdXHJcbiAobGV0XHJcbiAgW2VsZW1cclxuICAgKC4tdGFyZ2V0IGV2ZW50KVxyXG4gICB4XHJcbiAgICguLWNsaWVudFggZXZlbnQpXHJcbiAgIHlcclxuICAgKC4tY2xpZW50WSBldmVudClcclxuICAgcG9wdXBcclxuICAgKC5jcmVhdGVFbGVtZW50IGpzL2RvY3VtZW50IFwiZGl2XCIpXVxyXG4gIChzZXQhICguLXRleHRDb250ZW50IHBvcHVwKSAoLT4gZWxlbSAuLWRhdGFzZXQgLi1tZXNzYWdlKSlcclxuICAoc2V0ISAoLi10b3AgKC4tc3R5bGUgcG9wdXApKSAoc3RyIHkgXCJweFwiKSlcclxuICAoc2V0ISAoLi1sZWZ0ICguLXN0eWxlIHBvcHVwKSkgKHN0ciB4IFwicHhcIikpXHJcbiAgKHNldCEgKC4tY2xhc3NOYW1lIHBvcHVwKSBcImVycm9yLXRleHRcIilcclxuICAoLmFwcGVuZENoaWxkIHBhcmVudC1lbGVtIHBvcHVwKSkpXHJcbiJ9IHs6c3ltIGZvY3VzZWQtdGV4dCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuIGZvY3VzZWQtdGV4dCBbXSAoc29tZS0+IChkb20vZ2V0LWZvY3VzZWQtZm9ybSkgLi10ZXh0Q29udGVudCkpXHJcbiJ9IHs6c3ltIHNlbGVjdGVkLXRleHQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxyXG4gc2VsZWN0ZWQtdGV4dFxyXG4gW11cclxuIChsZXRcclxuICBbcyAoLT4ganMvd2luZG93IC5nZXRTZWxlY3Rpb24gLnRvU3RyaW5nKV1cclxuICAod2hlbi1ub3QgKGVtcHR5PyBzKSBzKSkpXHJcbiJ9IHs6c3ltIGNhbi1yZWRvPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0aGlzXSl9LCA6cHJvdG9jb2wgRWRpdG9yfSB7OnN5bSBjYW4tcmVkbywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlZGl0b3JdKX0sIDpzb3VyY2UgIihkZWZuIGNhbi1yZWRvIFtlZGl0b3JdIChjYW4tcmVkbz8gZWRpdG9yKSlcclxuIn0gezpzeW0gcmFpbmJvdy1kZWxpbWl0ZXJzLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG1hcCBvZiBlbGVtZW50cyBhbmQgY2xhc3MgbmFtZXMuIiwgOmFyZ2xpc3RzIFtbcGFyZW50IGxldmVsXSBbcGFyZW50IGxldmVsIG1dXX0sIDpzb3VyY2UgIihkZWZuXHJcbiByYWluYm93LWRlbGltaXRlcnNcclxuIFwiUmV0dXJucyBhIG1hcCBvZiBlbGVtZW50cyBhbmQgY2xhc3MgbmFtZXMuXCJcclxuIChbcGFyZW50IGxldmVsXVxyXG4gIChwZXJzaXN0ZW50ISAocmFpbmJvdy1kZWxpbWl0ZXJzIHBhcmVudCBsZXZlbCAodHJhbnNpZW50IHt9KSkpKVxyXG4gKFtwYXJlbnQgbGV2ZWwgbV1cclxuICAocmVkdWNlXHJcbiAgIChmblxyXG4gICAgW20gZWxlbV1cclxuICAgIChsZXRcclxuICAgICBbY2xhc3NlcyAoLi1jbGFzc0xpc3QgZWxlbSldXHJcbiAgICAgKGNvbmRcclxuICAgICAgKC5jb250YWlucyBjbGFzc2VzIFwiZGVsaW1pdGVyXCIpXHJcbiAgICAgIChhc3NvYyEgbSBlbGVtIChzdHIgXCJyYWluYm93LVwiIChtb2QgbGV2ZWwgcmFpbmJvdy1jb3VudCkpKVxyXG4gICAgICAoLmNvbnRhaW5zIGNsYXNzZXMgXCJjb2xsZWN0aW9uXCIpXHJcbiAgICAgIChyYWluYm93LWRlbGltaXRlcnMgZWxlbSAoaW5jIGxldmVsKSBtKVxyXG4gICAgICA6ZWxzZVxyXG4gICAgICBtKSkpXHJcbiAgIG1cclxuICAgKC0+IHBhcmVudCAuLWNoaWxkcmVuIGFycmF5LXNlcSkpKSlcclxuIn0gezpzeW0gdXAhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RoaXMgYWx0P10pfSwgOnByb3RvY29sIEVkaXRvcn0gezpzeW0gcmVmcmVzaCEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGhpcyBzdGF0ZV0pfSwgOnByb3RvY29sIEVkaXRvcn0gezpzeW0gdW5kbyEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGhpc10pfSwgOnByb3RvY29sIEVkaXRvcn0gezpzeW0gcmVmcmVzaC1jdXJzb3ItcG9zaXRpb24hLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2NvbnRlbnQgezprZXlzIFtjcm9wcGVkLXN0YXRlXSwgOmFzIHN0YXRlfV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlZnJlc2gtY3Vyc29yLXBvc2l0aW9uIVxyXG4gW2NvbnRlbnQgezprZXlzIFtjcm9wcGVkLXN0YXRlXSwgOmFzIHN0YXRlfV1cclxuIChpZlxyXG4gIChzb21lLT4+IGNyb3BwZWQtc3RhdGUgOmVsZW1lbnQgKC5jb250YWlucyBjb250ZW50KSlcclxuICAoc29tZS0+XHJcbiAgIGNyb3BwZWQtc3RhdGVcclxuICAgOmVsZW1lbnRcclxuICAgKGRvbS9zZXQtY3Vyc29yLXBvc2l0aW9uISAoOmN1cnNvci1wb3NpdGlvbiBjcm9wcGVkLXN0YXRlKSkpXHJcbiAgKGlmXHJcbiAgIChhbmQgKDpzZWxlY3Rpb24tY2hhbmdlPyBzdGF0ZSkgKDpvcmlnaW5hbC1jdXJzb3ItcG9zaXRpb24gc3RhdGUpKVxyXG4gICAoZG9tL3NldC1jdXJzb3ItcG9zaXRpb24hIGNvbnRlbnQgKDpvcmlnaW5hbC1jdXJzb3ItcG9zaXRpb24gc3RhdGUpKVxyXG4gICAoZG9tL3NldC1jdXJzb3ItcG9zaXRpb24hIGNvbnRlbnQgKDpjdXJzb3ItcG9zaXRpb24gc3RhdGUpKSkpKVxyXG4ifSB7OnN5bSBrZXktbmFtZT8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgdGhlIHN1cHBsaWVkIGtleSBldmVudCBpbnZvbHZlcyB0aGUga2V5KHMpIGRlc2NyaWJlZCBieSBrZXktbmFtZS4iLCA6YXJnbGlzdHMgKFtldmVudCBrZXktbmFtZV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGtleS1uYW1lP1xyXG4gXCJSZXR1cm5zIHRydWUgaWYgdGhlIHN1cHBsaWVkIGtleSBldmVudCBpbnZvbHZlcyB0aGUga2V5KHMpIGRlc2NyaWJlZCBieSBrZXktbmFtZS5cIlxyXG4gW2V2ZW50IGtleS1uYW1lXVxyXG4gKGxldFxyXG4gIFtjb2RlIChrZXktY29kZSBldmVudCldXHJcbiAgKGNhc2VcclxuICAga2V5LW5hbWVcclxuICAgOnVuZG8tb3ItcmVkb1xyXG4gICAoYW5kIChvciAoLi1tZXRhS2V5IGV2ZW50KSAoLi1jdHJsS2V5IGV2ZW50KSkgKD0gY29kZSA5MCkpXHJcbiAgIDp0YWJcclxuICAgKD0gY29kZSA5KVxyXG4gICA6ZW50ZXJcclxuICAgKD0gY29kZSAxMylcclxuICAgOmFycm93c1xyXG4gICAoY29udGFpbnM/ICN7MzkgNDAgMzggMzd9IGNvZGUpXHJcbiAgIDp1cC1hcnJvd1xyXG4gICAoPSBjb2RlIDM4KVxyXG4gICA6ZG93bi1hcnJvd1xyXG4gICAoPSBjb2RlIDQwKVxyXG4gICA6Z2VuZXJhbFxyXG4gICAobm90XHJcbiAgICAob3JcclxuICAgICAoY29udGFpbnM/ICN7MCA5MSA5MyAxNyAxNiAxOH0gY29kZSlcclxuICAgICAoLi1jdHJsS2V5IGV2ZW50KVxyXG4gICAgICguLW1ldGFLZXkgZXZlbnQpKSlcclxuICAgZmFsc2UpKSlcclxuIn0gezpzeW0gZXZhbCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlZGl0b3IgZm9ybSBjYWxsYmFja10pfSwgOnNvdXJjZSAiKGRlZm4gZXZhbCBbZWRpdG9yIGZvcm0gY2FsbGJhY2tdIChldmFsISBlZGl0b3IgZm9ybSBjYWxsYmFjaykpXHJcbiJ9IHs6c3ltIGNoYW5uZWw/LCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxyXG4gY2hhbm5lbD9cclxuIChmbipcclxuICBbcDFfXzQxNjQyI11cclxuICAoaW5zdGFuY2U/XHJcbiAgIGNsanMuY29yZS5hc3luYy5pbXBsLmNoYW5uZWxzLk1hbnlUb01hbnlDaGFubmVsXHJcbiAgIHAxX180MTY0MiMpKSlcclxuIn0gezpzeW0gY3JlYXRlLWVkaXRvciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwcyBjb250ZW50IGV2ZW50cy1jaGFuIHs6a2V5cyBbaGlzdG9yeS1saW1pdCBhcHBlbmQtbGltaXQgY29tcGlsZXItZm4gY29uc29sZS1jYWxsYmFjayBkaXNhYmxlLWNsaj8gZWRpdC1oaXN0b3J5IGZvY3VzP10sIDpvciB7aGlzdG9yeS1saW1pdCAxMDAsIGFwcGVuZC1saW1pdCA1MDAwLCBmb2N1cz8gZmFsc2V9LCA6YXMgb3B0c31dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBjcmVhdGUtZWRpdG9yXHJcbiBbcHNcclxuICBjb250ZW50XHJcbiAgZXZlbnRzLWNoYW5cclxuICB7OmtleXNcclxuICAgW2hpc3RvcnktbGltaXRcclxuICAgIGFwcGVuZC1saW1pdFxyXG4gICAgY29tcGlsZXItZm5cclxuICAgIGNvbnNvbGUtY2FsbGJhY2tcclxuICAgIGRpc2FibGUtY2xqP1xyXG4gICAgZWRpdC1oaXN0b3J5XHJcbiAgICBmb2N1cz9dLFxyXG4gICA6b3Ige2hpc3RvcnktbGltaXQgMTAwLCBhcHBlbmQtbGltaXQgNTAwMCwgZm9jdXM/IGZhbHNlfSxcclxuICAgOmFzIG9wdHN9XVxyXG4gKGxldFxyXG4gIFtjbGo/XHJcbiAgIChub3QgZGlzYWJsZS1jbGo/KVxyXG4gICBlZGl0b3I/XHJcbiAgIChub3QgY29uc29sZS1jYWxsYmFjaylcclxuICAgY29tcGlsZXItZm5cclxuICAgKG9yIGNvbXBpbGVyLWZuIChpci9jcmVhdGUtY29tcGlsZXItZm4gb3B0cykpXHJcbiAgICplZGl0LWhpc3RvcnlcclxuICAgKGRvdG9cclxuICAgIChvciBlZGl0LWhpc3RvcnkgKG13bS9jcmVhdGUtZWRpdC1oaXN0b3J5KSlcclxuICAgIChzd2FwISBhc3NvYyA6bGltaXQgaGlzdG9yeS1saW1pdCkpXHJcbiAgIHJlZnJlc2gtaW5zdGFyZXBsLXdpdGgtZGVsYXkhXHJcbiAgIChkZWJvdW5jZSByZWZyZXNoLWluc3RhcmVwbCEgMzAwKVxyXG4gICAqY29uc29sZS1oaXN0b3J5XHJcbiAgIChjb25zb2xlL2NyZWF0ZS1jb25zb2xlLWhpc3RvcnkpXHJcbiAgICpsYXN0LWhpZ2hsaWdodC1lbGVtXHJcbiAgIChhdG9tIG5pbClcclxuICAgKmFsbG93LXRhYj9cclxuICAgKGF0b20gZmFsc2UpXHJcbiAgICpmaXJzdC1yZWZyZXNoP1xyXG4gICAoYXRvbSB0cnVlKV1cclxuICAod2hlbi1ub3RcclxuICAgZWRpdG9yP1xyXG4gICAoc2V0LXZhbGlkYXRvciFcclxuICAgICplZGl0LWhpc3RvcnlcclxuICAgIChmblxyXG4gICAgIFt7OmtleXMgW2N1cnJlbnQtc3RhdGUgc3RhdGVzXX1dXHJcbiAgICAgKGlmLWxldFxyXG4gICAgICBbc3RhdGUgKGdldCBzdGF0ZXMgY3VycmVudC1zdGF0ZSldXHJcbiAgICAgICgtPlxyXG4gICAgICAgc3RhdGVcclxuICAgICAgIDpjdXJzb3ItcG9zaXRpb25cclxuICAgICAgIGZpcnN0XHJcbiAgICAgICAoPj0gKGNvbnNvbGUvZ2V0LWNvbnNvbGUtc3RhcnQgKmNvbnNvbGUtaGlzdG9yeSkpKVxyXG4gICAgICB0cnVlKSkpKVxyXG4gIChyZWlmeVxyXG4gICBFZGl0b3JcclxuICAgKHVuZG8hXHJcbiAgICBbdGhpc11cclxuICAgIChzb21lLT4+ICplZGl0LWhpc3RvcnkgbXdtL3VuZG8hIChyZWZyZXNoISB0aGlzKSlcclxuICAgIChkb20vc2Nyb2xsLXRvLW5lYXJlc3QtZWxlbSkpXHJcbiAgIChyZWRvIVxyXG4gICAgW3RoaXNdXHJcbiAgICAoc29tZS0+PiAqZWRpdC1oaXN0b3J5IG13bS9yZWRvISAocmVmcmVzaCEgdGhpcykpXHJcbiAgICAoZG9tL3Njcm9sbC10by1uZWFyZXN0LWVsZW0pKVxyXG4gICAoY2FuLXVuZG8/IFt0aGlzXSAobXdtL2Nhbi11bmRvPyAqZWRpdC1oaXN0b3J5KSlcclxuICAgKGNhbi1yZWRvPyBbdGhpc10gKG13bS9jYW4tcmVkbz8gKmVkaXQtaGlzdG9yeSkpXHJcbiAgICh1cGRhdGUtY3Vyc29yLXBvc2l0aW9uIVxyXG4gICAgW3RoaXMgcG9zaXRpb25dXHJcbiAgICAodHJ5XHJcbiAgICAgKG13bS91cGRhdGUtY3Vyc29yLXBvc2l0aW9uISAqZWRpdC1oaXN0b3J5IHBvc2l0aW9uKVxyXG4gICAgIChjYXRjaFxyXG4gICAgICBqcy9FcnJvclxyXG4gICAgICBfXHJcbiAgICAgICh3aGVuXHJcbiAgICAgICAoYXBwbHkgPSBwb3NpdGlvbilcclxuICAgICAgIChsZXRcclxuICAgICAgICBbc3RhcnQgKGNvbnNvbGUvZ2V0LWNvbnNvbGUtc3RhcnQgKmNvbnNvbGUtaGlzdG9yeSldXHJcbiAgICAgICAgKGRvbS9zZXQtY3Vyc29yLXBvc2l0aW9uISBjb250ZW50IFtzdGFydCBzdGFydF0pXHJcbiAgICAgICAgKG13bS91cGRhdGUtY3Vyc29yLXBvc2l0aW9uISAqZWRpdC1oaXN0b3J5IFtzdGFydCBzdGFydF0pKSkpKVxyXG4gICAgKHVwZGF0ZS1oaWdobGlnaHQhIGNvbnRlbnQgKmxhc3QtaGlnaGxpZ2h0LWVsZW0pKVxyXG4gICAocmVzZXQtZWRpdC1oaXN0b3J5IVxyXG4gICAgW3RoaXMgc3RhcnRdXHJcbiAgICAoY29uc29sZS91cGRhdGUtY29uc29sZS1zdGFydCEgKmNvbnNvbGUtaGlzdG9yeSBzdGFydClcclxuICAgIChkb20vc2V0LWN1cnNvci1wb3NpdGlvbiEgY29udGVudCBbc3RhcnQgc3RhcnRdKVxyXG4gICAgKGxldFxyXG4gICAgIFsqbmV3LWVkaXQtaGlzdG9yeVxyXG4gICAgICAobXdtL2NyZWF0ZS1lZGl0LWhpc3RvcnkpXHJcbiAgICAgIHN0YXRlXHJcbiAgICAgIHs6Y3Vyc29yLXBvc2l0aW9uIFtzdGFydCBzdGFydF0sIDp0ZXh0ICguLXRleHRDb250ZW50IGNvbnRlbnQpfV1cclxuICAgICAodXBkYXRlLWVkaXQtaGlzdG9yeSEgKm5ldy1lZGl0LWhpc3Rvcnkgc3RhdGUpXHJcbiAgICAgKHJlc2V0ISAqZWRpdC1oaXN0b3J5IEAqbmV3LWVkaXQtaGlzdG9yeSkpKVxyXG4gICAoYXBwZW5kLXRleHQhXHJcbiAgICBbdGhpcyB0ZXh0XVxyXG4gICAgKGxldFxyXG4gICAgIFtub2RlXHJcbiAgICAgICguY3JlYXRlVGV4dE5vZGUganMvZG9jdW1lbnQgdGV4dClcclxuICAgICAgX1xyXG4gICAgICAoLmFwcGVuZENoaWxkIGNvbnRlbnQgbm9kZSlcclxuICAgICAgYWxsLXRleHRcclxuICAgICAgKC4tdGV4dENvbnRlbnQgY29udGVudClcclxuICAgICAgY2hhci1jb3VudFxyXG4gICAgICAobWF4IDAgKC0gKGNvdW50IGFsbC10ZXh0KSBhcHBlbmQtbGltaXQpKVxyXG4gICAgICBuZXctYWxsLXRleHRcclxuICAgICAgKHN1YnMgYWxsLXRleHQgY2hhci1jb3VudClcclxuICAgICAgY2hhci1jb3VudFxyXG4gICAgICAoaWZcclxuICAgICAgICguZW5kc1dpdGggbmV3LWFsbC10ZXh0IFwiXFxuXCIpXHJcbiAgICAgICAoZGVjIChjb3VudCBuZXctYWxsLXRleHQpKVxyXG4gICAgICAgKGNvdW50IG5ldy1hbGwtdGV4dCkpXVxyXG4gICAgICh3aGVuXHJcbiAgICAgIChub3Q9IGFsbC10ZXh0IG5ldy1hbGwtdGV4dClcclxuICAgICAgKHNldCEgKC4tdGV4dENvbnRlbnQgY29udGVudCkgbmV3LWFsbC10ZXh0KSlcclxuICAgICAocmVzZXQtZWRpdC1oaXN0b3J5ISB0aGlzIGNoYXItY291bnQpKSlcclxuICAgKGVudGVyIVxyXG4gICAgW3RoaXNdXHJcbiAgICAoaWZcclxuICAgICBlZGl0b3I/XHJcbiAgICAgKC5leGVjQ29tbWFuZCBqcy9kb2N1bWVudCBcImluc2VydEhUTUxcIiBmYWxzZSBcIlxcblwiKVxyXG4gICAgIChsZXRcclxuICAgICAgW3RleHRcclxuICAgICAgICh0cmltciAoLi10ZXh0Q29udGVudCBjb250ZW50KSlcclxuICAgICAgIHBvc3QtdGV4dFxyXG4gICAgICAgKHN1YnMgdGV4dCAoY29uc29sZS9nZXQtY29uc29sZS1zdGFydCAqY29uc29sZS1oaXN0b3J5KSldXHJcbiAgICAgIChyZXNldC1lZGl0LWhpc3RvcnkhIHRoaXMgKGNvdW50IHRleHQpKVxyXG4gICAgICAoY29uc29sZS91cGRhdGUtY29uc29sZS1oaXN0b3J5ISAqY29uc29sZS1oaXN0b3J5IHBvc3QtdGV4dClcclxuICAgICAgKGNvbnNvbGUtY2FsbGJhY2sgcG9zdC10ZXh0KSkpKVxyXG4gICAodXAhXHJcbiAgICBbdGhpcyBhbHQ/XVxyXG4gICAgKGlmXHJcbiAgICAgYWx0P1xyXG4gICAgICh3aGVuLWxldFxyXG4gICAgICBbZWxlbSAoZG9tL2dldC1mb2N1c2VkLWZvcm0pXVxyXG4gICAgICAod2hlbi1sZXRcclxuICAgICAgIFtzdGF0ZSAobXdtL2dldC1jdXJyZW50LXN0YXRlICplZGl0LWhpc3RvcnkpXVxyXG4gICAgICAgKHdoZW4tbGV0XHJcbiAgICAgICAgW2VsZW1cclxuICAgICAgICAgKGlmXHJcbiAgICAgICAgICAoYW5kXHJcbiAgICAgICAgICAgKDpzZWxlY3Rpb24tY2hhbmdlPyBzdGF0ZSlcclxuICAgICAgICAgICAoPSBlbGVtIChzb21lLT4gc3RhdGUgOmNyb3BwZWQtc3RhdGUgOmVsZW1lbnQpKSlcclxuICAgICAgICAgIChkb20vZ2V0LXBhcmVudCBlbGVtIFwiY29sbGVjdGlvblwiKVxyXG4gICAgICAgICAgZWxlbSldXHJcbiAgICAgICAgKGxldFxyXG4gICAgICAgICBbdGV4dCAoLi10ZXh0Q29udGVudCBlbGVtKSBwb3MgWzAgKGNvdW50IHRleHQpXV1cclxuICAgICAgICAgKGRvbS9zZXQtY3Vyc29yLXBvc2l0aW9uISBlbGVtIHBvcylcclxuICAgICAgICAgKHVwZGF0ZS1lZGl0LWhpc3RvcnkhXHJcbiAgICAgICAgICAqZWRpdC1oaXN0b3J5XHJcbiAgICAgICAgICAoYXNzb2NcclxuICAgICAgICAgICBzdGF0ZVxyXG4gICAgICAgICAgIDpzZWxlY3Rpb24tY2hhbmdlP1xyXG4gICAgICAgICAgIHRydWVcclxuICAgICAgICAgICA6Y3JvcHBlZC1zdGF0ZVxyXG4gICAgICAgICAgIHs6Y3Vyc29yLXBvc2l0aW9uIHBvcywgOnRleHQgdGV4dCwgOmVsZW1lbnQgZWxlbX0pKVxyXG4gICAgICAgICAodXBkYXRlLWhpZ2hsaWdodCEgY29udGVudCAqbGFzdC1oaWdobGlnaHQtZWxlbSkpKSkpXHJcbiAgICAgKHdoZW4tbm90XHJcbiAgICAgIGVkaXRvcj9cclxuICAgICAgKGxldFxyXG4gICAgICAgW3RleHRcclxuICAgICAgICAoLi10ZXh0Q29udGVudCBjb250ZW50KVxyXG4gICAgICAgIHN0YXJ0XHJcbiAgICAgICAgKGNvbnNvbGUvZ2V0LWNvbnNvbGUtc3RhcnQgKmNvbnNvbGUtaGlzdG9yeSlcclxuICAgICAgICBwcmUtdGV4dFxyXG4gICAgICAgIChzdWJzIHRleHQgMCAoY29uc29sZS9nZXQtY29uc29sZS1zdGFydCAqY29uc29sZS1oaXN0b3J5KSlcclxuICAgICAgICBsaW5lXHJcbiAgICAgICAgKG9yIChjb25zb2xlL3VwISAqY29uc29sZS1oaXN0b3J5KSBcIlwiKVxyXG4gICAgICAgIHN0YXRlXHJcbiAgICAgICAgezpjdXJzb3ItcG9zaXRpb24gW3N0YXJ0IHN0YXJ0XSxcclxuICAgICAgICAgOnRleHQgKHN0ciBwcmUtdGV4dCBsaW5lIFxcbmV3bGluZSl9XVxyXG4gICAgICAgKC0+PlxyXG4gICAgICAgIHN0YXRlXHJcbiAgICAgICAgKHVwZGF0ZS1lZGl0LWhpc3RvcnkhICplZGl0LWhpc3RvcnkpXHJcbiAgICAgICAgKHJlZnJlc2ghIHRoaXMpKSkpKSlcclxuICAgKGRvd24hXHJcbiAgICBbdGhpcyBhbHQ/XVxyXG4gICAgKGlmXHJcbiAgICAgYWx0P1xyXG4gICAgICh3aGVuXHJcbiAgICAgICg6c2VsZWN0aW9uLWNoYW5nZT8gKG13bS9nZXQtY3VycmVudC1zdGF0ZSAqZWRpdC1oaXN0b3J5KSlcclxuICAgICAgKHVuZG8hIHRoaXMpKVxyXG4gICAgICh3aGVuLW5vdFxyXG4gICAgICBlZGl0b3I/XHJcbiAgICAgIChsZXRcclxuICAgICAgIFt0ZXh0XHJcbiAgICAgICAgKC4tdGV4dENvbnRlbnQgY29udGVudClcclxuICAgICAgICBzdGFydFxyXG4gICAgICAgIChjb25zb2xlL2dldC1jb25zb2xlLXN0YXJ0ICpjb25zb2xlLWhpc3RvcnkpXHJcbiAgICAgICAgcHJlLXRleHRcclxuICAgICAgICAoc3VicyB0ZXh0IDAgc3RhcnQpXHJcbiAgICAgICAgbGluZVxyXG4gICAgICAgIChvciAoY29uc29sZS9kb3duISAqY29uc29sZS1oaXN0b3J5KSBcIlwiKVxyXG4gICAgICAgIHN0YXRlXHJcbiAgICAgICAgezpjdXJzb3ItcG9zaXRpb24gW3N0YXJ0IHN0YXJ0XSxcclxuICAgICAgICAgOnRleHQgKHN0ciBwcmUtdGV4dCBsaW5lIFxcbmV3bGluZSl9XVxyXG4gICAgICAgKC0+PlxyXG4gICAgICAgIHN0YXRlXHJcbiAgICAgICAgKHVwZGF0ZS1lZGl0LWhpc3RvcnkhICplZGl0LWhpc3RvcnkpXHJcbiAgICAgICAgKHJlZnJlc2ghIHRoaXMpKSkpKSlcclxuICAgKHRhYiEgW3RoaXNdICh3aGVuIGVkaXRvcj8gKHJlc2V0ISAqYWxsb3ctdGFiPyB0cnVlKSkpXHJcbiAgIChyZWZyZXNoIVxyXG4gICAgW3RoaXMgc3RhdGVdXHJcbiAgICAobGV0XHJcbiAgICAgW3N0YXRlXHJcbiAgICAgIChjb25kXHJcbiAgICAgICAoOnNlbGVjdGlvbi1jaGFuZ2U/IHN0YXRlKVxyXG4gICAgICAgc3RhdGVcclxuICAgICAgIGVkaXRvcj9cclxuICAgICAgIChyZWZyZXNoLWNvbnRlbnQhIGNvbnRlbnQgc3RhdGUgY2xqPylcclxuICAgICAgIDplbHNlXHJcbiAgICAgICAocmVmcmVzaC1jb25zb2xlLWNvbnRlbnQhXHJcbiAgICAgICAgY29udGVudFxyXG4gICAgICAgIHN0YXRlXHJcbiAgICAgICAgKGNvbnNvbGUvZ2V0LWNvbnNvbGUtc3RhcnQgKmNvbnNvbGUtaGlzdG9yeSlcclxuICAgICAgICBjbGo/KSldXHJcbiAgICAgKHdoZW5cclxuICAgICAgKG9yIGZvY3VzPyAobm90IEAqZmlyc3QtcmVmcmVzaD8pKVxyXG4gICAgICAocmVmcmVzaC1jdXJzb3ItcG9zaXRpb24hIGNvbnRlbnQgc3RhdGUpKVxyXG4gICAgICh3aGVuIGNsaj8gKHJlZnJlc2gtZXJyb3JzLWFuZC1kZWxpbWl0ZXJzISBjb250ZW50IGV2ZW50cy1jaGFuKSlcclxuICAgICAod2hlblxyXG4gICAgICBlZGl0b3I/XHJcbiAgICAgIChzb21lLT5cclxuICAgICAgICgucXVlcnlTZWxlY3RvciBwcyBcIi5udW1iZXJzXCIpXHJcbiAgICAgICAocmVmcmVzaC1udW1iZXJzISAoY291bnQgKHJlLXNlcSAjXCJcXG5cIiAoOnRleHQgc3RhdGUpKSkpKVxyXG4gICAgICAod2hlblxyXG4gICAgICAgY2xqP1xyXG4gICAgICAgKHdoZW4tbGV0XHJcbiAgICAgICAgW2VsZW0gKC5xdWVyeVNlbGVjdG9yIHBzIFwiLmluc3RhcmVwbFwiKV1cclxuICAgICAgICAod2hlbi1ub3RcclxuICAgICAgICAgKC0+IGVsZW0gLi1zdHlsZSAuLWRpc3BsYXkgKD0gXCJub25lXCIpKVxyXG4gICAgICAgICAocmVmcmVzaC1pbnN0YXJlcGwtd2l0aC1kZWxheSFcclxuICAgICAgICAgIGVsZW1cclxuICAgICAgICAgIGNvbnRlbnRcclxuICAgICAgICAgIGNvbXBpbGVyLWZuXHJcbiAgICAgICAgICBhcHBlbmQtbGltaXQpKSkpKVxyXG4gICAgICh1cGRhdGUtaGlnaGxpZ2h0ISBjb250ZW50ICpsYXN0LWhpZ2hsaWdodC1lbGVtKSkpXHJcbiAgIChlZGl0LWFuZC1yZWZyZXNoIVxyXG4gICAgW3RoaXMgc3RhdGVdXHJcbiAgICAoLT4+XHJcbiAgICAgc3RhdGVcclxuICAgICAoYWRkLW5ld2xpbmUpXHJcbiAgICAgKGFkZC1wYXJpbmZlciBjbGo/IChjb25zb2xlL2dldC1jb25zb2xlLXN0YXJ0ICpjb25zb2xlLWhpc3RvcnkpKVxyXG4gICAgICh1cGRhdGUtZWRpdC1oaXN0b3J5ISAqZWRpdC1oaXN0b3J5KVxyXG4gICAgIChyZWZyZXNoISB0aGlzKSkpXHJcbiAgIChpbml0aWFsaXplIVxyXG4gICAgW3RoaXNdXHJcbiAgICAod2hlblxyXG4gICAgIGVkaXRvcj9cclxuICAgICAoLT4+IChpbml0LXN0YXRlIGNvbnRlbnQgZmFsc2UgZmFsc2UpIChlZGl0LWFuZC1yZWZyZXNoISB0aGlzKSkpXHJcbiAgICAocmVzZXQhICpmaXJzdC1yZWZyZXNoPyBmYWxzZSkpXHJcbiAgIChyZWZyZXNoLWFmdGVyLWtleS1ldmVudCFcclxuICAgIFt0aGlzIGV2ZW50XVxyXG4gICAgKGxldFxyXG4gICAgIFt0YWI/XHJcbiAgICAgIChrZXktbmFtZT8gZXZlbnQgOnRhYilcclxuICAgICAgc3RhdGVcclxuICAgICAgKGluaXQtc3RhdGUgY29udGVudCBlZGl0b3I/IHRhYj8pXVxyXG4gICAgICh3aGVuLW5vdFxyXG4gICAgICAoYW5kIHRhYj8gKG5vdCBAKmFsbG93LXRhYj8pKVxyXG4gICAgICAoZWRpdC1hbmQtcmVmcmVzaCFcclxuICAgICAgIHRoaXNcclxuICAgICAgIChjYXNlXHJcbiAgICAgICAgKGtleS1jb2RlIGV2ZW50KVxyXG4gICAgICAgIDEzXHJcbiAgICAgICAgKGFzc29jIHN0YXRlIDppbmRlbnQtdHlwZSA6cmV0dXJuKVxyXG4gICAgICAgIDlcclxuICAgICAgICAoYXNzb2NcclxuICAgICAgICAgc3RhdGVcclxuICAgICAgICAgOmluZGVudC10eXBlXHJcbiAgICAgICAgIChpZiAoLi1zaGlmdEtleSBldmVudCkgOmJhY2sgOmZvcndhcmQpKVxyXG4gICAgICAgIChhc3NvYyBzdGF0ZSA6aW5kZW50LXR5cGUgOm5vcm1hbCkpKSlcclxuICAgICAod2hlbiB0YWI/IChyZXNldCEgKmFsbG93LXRhYj8gZmFsc2UpKSkpXHJcbiAgIChyZWZyZXNoLWFmdGVyLWN1dC1wYXN0ZSFcclxuICAgIFt0aGlzXVxyXG4gICAgKGVkaXQtYW5kLXJlZnJlc2ghXHJcbiAgICAgdGhpc1xyXG4gICAgIChhc3NvYyAoaW5pdC1zdGF0ZSBjb250ZW50IGZhbHNlIGZhbHNlKSA6aW5kZW50LXR5cGUgOm5vcm1hbCkpKVxyXG4gICAoZXZhbCFcclxuICAgIFt0aGlzIGZvcm0gY2FsbGJhY2tdXHJcbiAgICAoY29tcGlsZXItZm5cclxuICAgICBbZm9ybV1cclxuICAgICAoZm4qIFtwMV9fNDE2NTEjXSAoY2FsbGJhY2sgKGZpcnN0IHAxX180MTY1MSMpKSkpKSkpKVxyXG4ifSB7OnN5bSBrZXktY29kZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtldmVudF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGtleS1jb2RlXHJcbiBbZXZlbnRdXHJcbiAobGV0IFtjb2RlICguLWtleUNvZGUgZXZlbnQpXSAoaWYgKHBvcz8gY29kZSkgY29kZSAoLi13aGljaCBldmVudCkpKSlcclxuIn0gezpzeW0gcmVkbyEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGhpc10pfSwgOnByb3RvY29sIEVkaXRvcn0gezpzeW0gdGFiISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0aGlzXSl9LCA6cHJvdG9jb2wgRWRpdG9yfSB7OnN5bSB0cmFuc2llbnQtbWFwPywgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcclxuIHRyYW5zaWVudC1tYXA/XHJcbiAoZm4qXHJcbiAgW3AxX180MTY0MyNdXHJcbiAgKG9yXHJcbiAgIChpbnN0YW5jZT8gY2xqcy5jb3JlL1RyYW5zaWVudEFycmF5TWFwIHAxX180MTY0MyMpXHJcbiAgIChpbnN0YW5jZT8gY2xqcy5jb3JlL1RyYW5zaWVudEhhc2hNYXAgcDFfXzQxNjQzIykpKSlcclxuIn0gezpzeW0gcmVmcmVzaC1jb250ZW50LWVsZW1lbnQhLCA6bWV0YSB7OmRvYyAiUmVwbGFjZXMgYSBzaW5nbGUgbm9kZSBpbiB0aGUgY29udGVudCwgYW5kIHNpYmxpbmdzIGlmIG5lY2Vzc2FyeS4iLCA6YXJnbGlzdHMgKFt7OmtleXMgW2VsZW1lbnQgdGV4dF0sIDphcyBjcm9wcGVkLXN0YXRlfV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlZnJlc2gtY29udGVudC1lbGVtZW50IVxyXG4gXCJSZXBsYWNlcyBhIHNpbmdsZSBub2RlIGluIHRoZSBjb250ZW50LCBhbmQgc2libGluZ3MgaWYgbmVjZXNzYXJ5LlwiXHJcbiBbezprZXlzIFtlbGVtZW50IHRleHRdLCA6YXMgY3JvcHBlZC1zdGF0ZX1dXHJcbiAobGV0XHJcbiAgW3BhcmVudFxyXG4gICAoLi1wYXJlbnRFbGVtZW50IGVsZW1lbnQpXHJcbiAgIGxhc3QtZWxlbVxyXG4gICAoLi1sYXN0Q2hpbGQgcGFyZW50KVxyXG4gICBsYXN0LWVycm9yXHJcbiAgIChsb29wXHJcbiAgICBbY3VycmVudC1lbGVtIGxhc3QtZWxlbV1cclxuICAgIChjb25kXHJcbiAgICAgKGRvbS9lcnJvci1ub2RlPyBjdXJyZW50LWVsZW0pXHJcbiAgICAgY3VycmVudC1lbGVtXHJcbiAgICAgKG9yIChuaWw/IGN1cnJlbnQtZWxlbSkgKD0gZWxlbWVudCBjdXJyZW50LWVsZW0pKVxyXG4gICAgIG5pbFxyXG4gICAgIDplbHNlXHJcbiAgICAgKHJlY3VyICguLXByZXZpb3VzU2libGluZyBjdXJyZW50LWVsZW0pKSkpXHJcbiAgIGxhc3QtZWxlbS10by1yZWZyZXNoXHJcbiAgICh3aGVuXHJcbiAgICBsYXN0LWVycm9yXHJcbiAgICAobG9vcFxyXG4gICAgIFtjdXJyZW50LWVsZW0gbGFzdC1lcnJvcl1cclxuICAgICAoaWYtbGV0XHJcbiAgICAgIFtzaWJsaW5nICguLW5leHRTaWJsaW5nIGN1cnJlbnQtZWxlbSldXHJcbiAgICAgIChpZiAoZG9tL2NvbGwtbm9kZT8gc2libGluZykgY3VycmVudC1lbGVtIChyZWN1ciBzaWJsaW5nKSlcclxuICAgICAgY3VycmVudC1lbGVtKSkpXHJcbiAgIG9sZC1lbGVtc1xyXG4gICAobG9vcFxyXG4gICAgW2VsZW1zIFtlbGVtZW50XSBjdXJyZW50LWVsZW0gZWxlbWVudF1cclxuICAgIChjb25kXHJcbiAgICAgKD0gbGFzdC1lbGVtLXRvLXJlZnJlc2ggY3VycmVudC1lbGVtKVxyXG4gICAgIGVsZW1zXHJcbiAgICAgKG9yIChzb21lPyBsYXN0LWVsZW0tdG8tcmVmcmVzaCkgKGRvbS90ZXh0LW5vZGU/IGN1cnJlbnQtZWxlbSkpXHJcbiAgICAgKGlmLWxldFxyXG4gICAgICBbc2libGluZyAoLi1uZXh0U2libGluZyBjdXJyZW50LWVsZW0pXVxyXG4gICAgICAocmVjdXIgKGNvbmogZWxlbXMgc2libGluZykgc2libGluZylcclxuICAgICAgZWxlbXMpXHJcbiAgICAgOmVsc2VcclxuICAgICBlbGVtcykpXHJcbiAgIF9cclxuICAgKHNldCEgKC4tdGV4dENvbnRlbnQgZWxlbWVudCkgdGV4dClcclxuICAgdGV4dFxyXG4gICAoam9pbiAobWFwIChmbiogW3AxX180MTY0OSNdICguLXRleHRDb250ZW50IHAxX180MTY0OSMpKSBvbGQtZWxlbXMpKVxyXG4gICB0ZW1wLWVsZW1cclxuICAgKC5jcmVhdGVFbGVtZW50IGpzL2RvY3VtZW50IFwic3BhblwiKVxyXG4gICBfXHJcbiAgIChzZXQhICguLWlubmVySFRNTCB0ZW1wLWVsZW0pIChocy9jb2RlLT5odG1sIHRleHQpKVxyXG4gICBuZXctZWxlbXNcclxuICAgKGRvYWxsXHJcbiAgICAoZm9yXHJcbiAgICAgW2kgKHJhbmdlICgtPiB0ZW1wLWVsZW0gLi1jaGlsZE5vZGVzIC4tbGVuZ3RoKSldXHJcbiAgICAgKC0+IHRlbXAtZWxlbSAuLWNoaWxkTm9kZXMgKC5pdGVtIGkpKSkpXVxyXG4gIChkb3NlcSBbbmV3LWVsZW0gbmV3LWVsZW1zXSAoLmluc2VydEJlZm9yZSBwYXJlbnQgbmV3LWVsZW0gZWxlbWVudCkpXHJcbiAgKGRvc2VxIFtvbGQtZWxlbSBvbGQtZWxlbXNdICgucmVtb3ZlQ2hpbGQgcGFyZW50IG9sZC1lbGVtKSlcclxuICAoYXNzb2MgY3JvcHBlZC1zdGF0ZSA6ZWxlbWVudCAoZmlyc3QgbmV3LWVsZW1zKSkpKVxyXG4ifSB7OnN5bSBlbGVtPywgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgZWxlbT8gKGZuKiBbcDFfXzQxNjQ0I10gKGluc3RhbmNlPyBqcy9FbGVtZW50IHAxX180MTY0NCMpKSlcclxuIn0gezpzeW0gZW50ZXIhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RoaXNdKX0sIDpwcm90b2NvbCBFZGl0b3J9IHs6c3ltIGFwcGVuZC10ZXh0ISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0aGlzIHRleHRdKX0sIDpwcm90b2NvbCBFZGl0b3J9IHs6c3ltIGxpbmUtbnVtYmVycywgOm1ldGEgezpkb2MgIkFkZHMgbGluZSBudW1iZXJzIHRvIHRoZSBudW1iZXJzLiIsIDphcmdsaXN0cyAoW2xpbmUtY291bnRdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBsaW5lLW51bWJlcnNcclxuIFwiQWRkcyBsaW5lIG51bWJlcnMgdG8gdGhlIG51bWJlcnMuXCJcclxuIFtsaW5lLWNvdW50XVxyXG4gKGpvaW4gKGZvciBbaSAocmFuZ2UgbGluZS1jb3VudCldIChzdHIgXCI8ZGl2PlwiIChpbmMgaSkgXCI8L2Rpdj5cIikpKSlcclxuIn0gezpzeW0gdXBkYXRlLWhpZ2hsaWdodCEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbY29udGVudCAqbGFzdC1lbGVtXSl9LCA6c291cmNlICIoZGVmblxyXG4gdXBkYXRlLWhpZ2hsaWdodCFcclxuIFtjb250ZW50ICpsYXN0LWVsZW1dXHJcbiAod2hlbi1sZXRcclxuICBbZWxlbSBAKmxhc3QtZWxlbV1cclxuICAoc2V0ISAoLi1iYWNrZ3JvdW5kQ29sb3IgKC4tc3R5bGUgZWxlbSkpIG5pbClcclxuICAocmVzZXQhICpsYXN0LWVsZW0gbmlsKSlcclxuICh3aGVuLWxldFxyXG4gIFtlbGVtIChkb20vZ2V0LWZvY3VzZWQtZm9ybSldXHJcbiAgKHdoZW4tbGV0XHJcbiAgIFtjb2xvclxyXG4gICAgKC5nZXRQcm9wZXJ0eVZhbHVlXHJcbiAgICAgKC5nZXRDb21wdXRlZFN0eWxlIGpzL3dpbmRvdyAoLi1maXJzdENoaWxkIGVsZW0pKVxyXG4gICAgIFwiY29sb3JcIildXHJcbiAgIChsZXRcclxuICAgIFtuZXctY29sb3IgKC0+IGNvbG9yIChyZXBsYWNlICNcInJnYlxcKFwiIFwiXCIpIChyZXBsYWNlICNcIlxcKVwiIFwiXCIpKV1cclxuICAgIChzZXQhXHJcbiAgICAgKC4tYmFja2dyb3VuZENvbG9yICguLXN0eWxlIGVsZW0pKVxyXG4gICAgIChzdHIgXCJyZ2JhKFwiIG5ldy1jb2xvciBcIiwgMC4xKVwiKSlcclxuICAgIChyZXNldCEgKmxhc3QtZWxlbSBlbGVtKSkpKSlcclxuIn0gezpzeW0gaW5pdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwcyBvcHRzXSl9LCA6c291cmNlICIoZGVmblxyXG4gaW5pdFxyXG4gW3BzIG9wdHNdXHJcbiAoLmluaXQganMvcmFuZ3kpXHJcbiAobGV0XHJcbiAgW29wdHNcclxuICAgKGpzLT5jbGogb3B0cyA6a2V5d29yZGl6ZS1rZXlzIHRydWUpXHJcbiAgIGNvbnRlbnRcclxuICAgKC5xdWVyeVNlbGVjdG9yIHBzIFwiLmNvbnRlbnRcIilcclxuICAgZXZlbnRzLWNoYW5cclxuICAgKGNoYW4pXHJcbiAgIGVkaXRvclxyXG4gICAoY3JlYXRlLWVkaXRvciBwcyBjb250ZW50IGV2ZW50cy1jaGFuIG9wdHMpXVxyXG4gIChzZXQhICguLXNwZWxsY2hlY2sgcHMpIGZhbHNlKVxyXG4gICh3aGVuLW5vdFxyXG4gICBjb250ZW50XHJcbiAgICh0aHJvdyAoanMvRXJyb3IuIFwiQ2FuJ3QgZmluZCBhIGRpdiB3aXRoIGNsYXNzICdjb250ZW50J1wiKSkpXHJcbiAgKGluaXRpYWxpemUhIGVkaXRvcilcclxuICAoYWRkLWV2ZW50LWxpc3RlbmVycyEgY29udGVudCBldmVudHMtY2hhbiBvcHRzKVxyXG4gIChnb1xyXG4gICAod2hpbGVcclxuICAgIHRydWVcclxuICAgIChsZXRcclxuICAgICBbZXZlbnQgKDwhIGV2ZW50cy1jaGFuKV1cclxuICAgICAod2hlbi1ub3RcclxuICAgICAgKHNvbWUtPlxyXG4gICAgICAgb3B0c1xyXG4gICAgICAgOmJlZm9yZS1jaGFuZ2UtY2FsbGJhY2tcclxuICAgICAgICgoZm4qIFtwMV9fNDE2NTYjXSAocDFfXzQxNjU2IyBldmVudCkpKSlcclxuICAgICAgKGNhc2VcclxuICAgICAgICguLXR5cGUgZXZlbnQpXHJcbiAgICAgICBcImtleWRvd25cIlxyXG4gICAgICAgKGNvbmRcclxuICAgICAgICAoYW5kXHJcbiAgICAgICAgIChrZXktbmFtZT8gZXZlbnQgOnVuZG8tb3ItcmVkbylcclxuICAgICAgICAgKC0+IG9wdHMgOmRpc2FibGUtdW5kby1yZWRvPyBub3QpKVxyXG4gICAgICAgIChpZiAoLi1zaGlmdEtleSBldmVudCkgKHJlZG8hIGVkaXRvcikgKHVuZG8hIGVkaXRvcikpXHJcbiAgICAgICAgKGtleS1uYW1lPyBldmVudCA6ZW50ZXIpXHJcbiAgICAgICAgKGVudGVyISBlZGl0b3IpXHJcbiAgICAgICAgKGtleS1uYW1lPyBldmVudCA6dXAtYXJyb3cpXHJcbiAgICAgICAgKHVwISBlZGl0b3IgKC4tYWx0S2V5IGV2ZW50KSlcclxuICAgICAgICAoa2V5LW5hbWU/IGV2ZW50IDpkb3duLWFycm93KVxyXG4gICAgICAgIChkb3duISBlZGl0b3IgKC4tYWx0S2V5IGV2ZW50KSlcclxuICAgICAgICAoa2V5LW5hbWU/IGV2ZW50IDp0YWIpXHJcbiAgICAgICAgKHRhYiEgZWRpdG9yKSlcclxuICAgICAgIFwia2V5dXBcIlxyXG4gICAgICAgKGNvbmRcclxuICAgICAgICAoa2V5LW5hbWU/IGV2ZW50IDphcnJvd3MpXHJcbiAgICAgICAgKHVwZGF0ZS1jdXJzb3ItcG9zaXRpb24hXHJcbiAgICAgICAgIGVkaXRvclxyXG4gICAgICAgICAoZG9tL2dldC1jdXJzb3ItcG9zaXRpb24gY29udGVudCBmYWxzZSkpXHJcbiAgICAgICAgKGtleS1uYW1lPyBldmVudCA6Z2VuZXJhbClcclxuICAgICAgICAocmVmcmVzaC1hZnRlci1rZXktZXZlbnQhIGVkaXRvciBldmVudCkpXHJcbiAgICAgICBcImN1dFwiXHJcbiAgICAgICAocmVmcmVzaC1hZnRlci1jdXQtcGFzdGUhIGVkaXRvcilcclxuICAgICAgIFwicGFzdGVcIlxyXG4gICAgICAgKHJlZnJlc2gtYWZ0ZXItY3V0LXBhc3RlISBlZGl0b3IpXHJcbiAgICAgICBcIm1vdXNldXBcIlxyXG4gICAgICAgKHVwZGF0ZS1jdXJzb3ItcG9zaXRpb24hXHJcbiAgICAgICAgZWRpdG9yXHJcbiAgICAgICAgKGRvbS9nZXQtY3Vyc29yLXBvc2l0aW9uXHJcbiAgICAgICAgIGNvbnRlbnRcclxuICAgICAgICAgKHNvbWU/ICg6Y29uc29sZS1jYWxsYmFjayBvcHRzKSkpKVxyXG4gICAgICAgXCJtb3VzZWVudGVyXCJcclxuICAgICAgIChzaG93LWVycm9yLW1lc3NhZ2UhIHBzIGV2ZW50KVxyXG4gICAgICAgXCJtb3VzZWxlYXZlXCJcclxuICAgICAgIChoaWRlLWVycm9yLW1lc3NhZ2VzISBwcylcclxuICAgICAgIG5pbClcclxuICAgICAgKHNvbWUtPlxyXG4gICAgICAgb3B0c1xyXG4gICAgICAgOmNoYW5nZS1jYWxsYmFja1xyXG4gICAgICAgKChmbiogW3AxX180MTY1NyNdIChwMV9fNDE2NTcjIGV2ZW50KSkpKSkpKSlcclxuICBlZGl0b3IpKVxyXG4ifSB7OnN5bSBjYW4tdW5kbz8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGhpc10pfSwgOnByb3RvY29sIEVkaXRvcn0gezpzeW0gcmVmcmVzaC1jb250ZW50ISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjb250ZW50IHN0YXRlIGNsaj9dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiByZWZyZXNoLWNvbnRlbnQhXHJcbiBbY29udGVudCBzdGF0ZSBjbGo/XVxyXG4gKGlmLW5vdFxyXG4gIGNsaj9cclxuICAoZG9cclxuICAgKHNldCEgKC4taW5uZXJIVE1MIGNvbnRlbnQpIChocy9lc2NhcGUtaHRtbC1zdHIgKDp0ZXh0IHN0YXRlKSkpXHJcbiAgIHN0YXRlKVxyXG4gIChpZi1sZXRcclxuICAgW2Nyb3AgKHNvbWUtPiBzdGF0ZSA6Y3JvcHBlZC1zdGF0ZSByZWZyZXNoLWNvbnRlbnQtZWxlbWVudCEpXVxyXG4gICAoaWZcclxuICAgIChub3Q9ICg6dGV4dCBzdGF0ZSkgKC4tdGV4dENvbnRlbnQgY29udGVudCkpXHJcbiAgICAocmVmcmVzaC1jb250ZW50ISBjb250ZW50IChkaXNzb2Mgc3RhdGUgOmNyb3BwZWQtc3RhdGUpIGNsaj8pXHJcbiAgICAoYXNzb2Mgc3RhdGUgOmNyb3BwZWQtc3RhdGUgY3JvcCkpXHJcbiAgIChkb1xyXG4gICAgKHNldCEgKC4taW5uZXJIVE1MIGNvbnRlbnQpIChocy9jb2RlLT5odG1sICg6dGV4dCBzdGF0ZSkpKVxyXG4gICAgKGRpc3NvYyBzdGF0ZSA6Y3JvcHBlZC1zdGF0ZSkpKSkpXHJcbiJ9IHs6c3ltIHJlZG8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZWRpdG9yXSl9LCA6c291cmNlICIoZGVmbiByZWRvIFtlZGl0b3JdIChyZWRvISBlZGl0b3IpKVxyXG4ifSB7OnN5bSBkZWJvdW5jZS1mdW5jdGlvbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmIG1pbGxpc10pfSwgOnNvdXJjZSAiKGRlZm4gZGVib3VuY2UtZnVuY3Rpb24gW2YgbWlsbGlzXSAoZGVib3VuY2UgZiBtaWxsaXMpKVxyXG4ifSB7OnN5bSByZWZyZXNoLWluc3RhcmVwbCEsIDptZXRhIHs6ZG9jICJSZWZyZXNoZXMgdGhlIEluc3RhUkVQTC4iLCA6YXJnbGlzdHMgKFtpbnN0YXJlcGwgY29udGVudCBjb21waWxlci1mbiBsaW1pdF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlZnJlc2gtaW5zdGFyZXBsIVxyXG4gXCJSZWZyZXNoZXMgdGhlIEluc3RhUkVQTC5cIlxyXG4gW2luc3RhcmVwbCBjb250ZW50IGNvbXBpbGVyLWZuIGxpbWl0XVxyXG4gKGxldFxyXG4gIFtlbGVtc1xyXG4gICAoaXIvZ2V0LWNvbGxlY3Rpb25zIGNvbnRlbnQpXHJcbiAgIGxvY2F0aW9uc1xyXG4gICAoaXIvZWxlbXMtPmxvY2F0aW9ucyBlbGVtcyAoLi1vZmZzZXRUb3AgaW5zdGFyZXBsKSlcclxuICAgZm9ybXNcclxuICAgKC0+PlxyXG4gICAgZWxlbXNcclxuICAgIChtYXAgaXIvY29sbGVjdGlvbi0+Y29udGVudClcclxuICAgIChtYXAgKGZuKiBbcDFfXzQxNjQ2I10gKHJlcGxhY2UgcDFfXzQxNjQ2IyBcXMKgIFwiIFwiKSkpKV1cclxuICAoY29tcGlsZXItZm5cclxuICAgZm9ybXNcclxuICAgKGZuXHJcbiAgICBbcmVzdWx0c11cclxuICAgICh3aGVuXHJcbiAgICAgKC4tcGFyZW50RWxlbWVudCBpbnN0YXJlcGwpXHJcbiAgICAgKHNldCFcclxuICAgICAgKC4taW5uZXJIVE1MIGluc3RhcmVwbClcclxuICAgICAgKGlyL3Jlc3VsdHMtPmh0bWwgcmVzdWx0cyBsb2NhdGlvbnMgbGltaXQpKSkpKSkpXHJcbiJ9IHs6c3ltIGVkaXQtYW5kLXJlZnJlc2ghLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RoaXMgc3RhdGVdKX0sIDpwcm90b2NvbCBFZGl0b3J9IHs6c3ltIHJhaW5ib3ctY291bnQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHJhaW5ib3ctY291bnQgNSlcclxuIn0gezpzeW0gdXBkYXRlLWN1cnNvci1wb3NpdGlvbiEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGhpcyBwb3NpdGlvbl0pfSwgOnByb3RvY29sIEVkaXRvcn0gezpzeW0gaW5pdC1zdGF0ZSwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGVkaXRvcidzIHN0YXRlLiBJZiBmdWxsLXNlbGVjdGlvbj8gaXMgdHJ1ZSwgaXQgd2lsbCB0cnkgdG8gc2F2ZVxudGhlIGVudGlyZSBzZWxlY3Rpb24gcmF0aGVyIHRoYW4ganVzdCB0aGUgY3Vyc29yIHBvc2l0aW9uLiIsIDphcmdsaXN0cyAoW2NvbnRlbnQgY3JvcD8gZnVsbC1zZWxlY3Rpb24/XSl9LCA6c291cmNlICIoZGVmblxyXG4gaW5pdC1zdGF0ZVxyXG4gXCJSZXR1cm5zIHRoZSBlZGl0b3IncyBzdGF0ZS4gSWYgZnVsbC1zZWxlY3Rpb24/IGlzIHRydWUsIGl0IHdpbGwgdHJ5IHRvIHNhdmVcXG50aGUgZW50aXJlIHNlbGVjdGlvbiByYXRoZXIgdGhhbiBqdXN0IHRoZSBjdXJzb3IgcG9zaXRpb24uXCJcclxuIFtjb250ZW50IGNyb3A/IGZ1bGwtc2VsZWN0aW9uP11cclxuIChsZXRcclxuICBbc2VsZWN0aW9uXHJcbiAgICguZ2V0U2VsZWN0aW9uIGpzL3Jhbmd5KVxyXG4gICBhbmNob3JcclxuICAgKC4tYW5jaG9yTm9kZSBzZWxlY3Rpb24pXHJcbiAgIGZvY3VzXHJcbiAgICguLWZvY3VzTm9kZSBzZWxlY3Rpb24pXHJcbiAgIHBhcmVudFxyXG4gICAod2hlbiAoYW5kIGFuY2hvciBmb2N1cykgKGRvbS9jb21tb24tYW5jZXN0b3IgYW5jaG9yIGZvY3VzKSlcclxuICAgc3RhdGVcclxuICAgezpjdXJzb3ItcG9zaXRpb25cclxuICAgICgtPiBjb250ZW50IChkb20vZ2V0LXNlbGVjdGlvbiBmdWxsLXNlbGVjdGlvbj8pIDpjdXJzb3ItcG9zaXRpb24pLFxyXG4gICAgOnRleHQgKC4tdGV4dENvbnRlbnQgY29udGVudCl9XVxyXG4gIChpZi1sZXRcclxuICAgW2Nyb3BwZWQtc2VsZWN0aW9uIChzb21lLT4gcGFyZW50IChkb20vZ2V0LXNlbGVjdGlvbiBmYWxzZSkpXVxyXG4gICAoaWZcclxuICAgIGNyb3A/XHJcbiAgICAoYXNzb2NcclxuICAgICBzdGF0ZVxyXG4gICAgIDpjcm9wcGVkLXN0YXRlXHJcbiAgICAgKGFzc29jIGNyb3BwZWQtc2VsZWN0aW9uIDp0ZXh0ICguLXRleHRDb250ZW50IHBhcmVudCkpKVxyXG4gICAgc3RhdGUpXHJcbiAgIHN0YXRlKSkpXHJcbiJ9IHs6c3ltIGV2YWwhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RoaXMgZm9ybSBjYWxsYmFja10pfSwgOnByb3RvY29sIEVkaXRvcn0gezpzeW0gYWRkLXBhcmluZmVyLWFmdGVyLWNvbnNvbGUtc3RhcnQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbY29uc29sZS1zdGFydC1udW0gc3RhdGVdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBhZGQtcGFyaW5mZXItYWZ0ZXItY29uc29sZS1zdGFydFxyXG4gW2NvbnNvbGUtc3RhcnQtbnVtIHN0YXRlXVxyXG4gKGxldFxyXG4gIFtwcmUtdGV4dFxyXG4gICAoc3VicyAoOnRleHQgc3RhdGUpIDAgY29uc29sZS1zdGFydC1udW0pXHJcbiAgIHBvc3QtdGV4dFxyXG4gICAoc3VicyAoOnRleHQgc3RhdGUpIGNvbnNvbGUtc3RhcnQtbnVtKVxyXG4gICBjbGVhcmVkLXRleHRcclxuICAgKHN0ciAocmVwbGFjZSBwcmUtdGV4dCAjXCJbXlxccl5cXG5dXCIgXCIgXCIpIHBvc3QtdGV4dClcclxuICAgdGVtcC1zdGF0ZVxyXG4gICAoYXNzb2Mgc3RhdGUgOnRleHQgY2xlYXJlZC10ZXh0KVxyXG4gICB0ZW1wLXN0YXRlXHJcbiAgIChjcC9hZGQtcGFyaW5mZXIgOmJvdGggdGVtcC1zdGF0ZSlcclxuICAgbmV3LXRleHRcclxuICAgKHN0ciBwcmUtdGV4dCAoc3VicyAoOnRleHQgdGVtcC1zdGF0ZSkgY29uc29sZS1zdGFydC1udW0pKV1cclxuICAoYXNzb2Mgc3RhdGUgOnRleHQgbmV3LXRleHQpKSlcclxuIn0gezpzeW0gcmVmcmVzaC1udW1iZXJzISwgOm1ldGEgezpkb2MgIlJlZnJlc2hlcyB0aGUgbGluZSBudW1iZXJzLiIsIDphcmdsaXN0cyAoW251bWJlcnMgbGluZS1jb3VudF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlZnJlc2gtbnVtYmVycyFcclxuIFwiUmVmcmVzaGVzIHRoZSBsaW5lIG51bWJlcnMuXCJcclxuIFtudW1iZXJzIGxpbmUtY291bnRdXHJcbiAoc2V0ISAoLi1pbm5lckhUTUwgbnVtYmVycykgKGxpbmUtbnVtYmVycyBsaW5lLWNvdW50KSkpXHJcbiJ9IHs6c3ltIHJlZnJlc2gtYWZ0ZXItY3V0LXBhc3RlISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0aGlzXSl9LCA6cHJvdG9jb2wgRWRpdG9yfSB7OnN5bSByZWZyZXNoLWFmdGVyLWtleS1ldmVudCEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGhpcyBldmVudF0pfSwgOnByb3RvY29sIEVkaXRvcn0gezpzeW0gYWRkLW5ld2xpbmUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbezprZXlzIFt0ZXh0XSwgOmFzIHN0YXRlfV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGFkZC1uZXdsaW5lXHJcbiBbezprZXlzIFt0ZXh0XSwgOmFzIHN0YXRlfV1cclxuIChpZi1ub3RcclxuICAoPSBcXG5ld2xpbmUgKGxhc3QgdGV4dCkpXHJcbiAgKGFzc29jIHN0YXRlIDp0ZXh0IChzdHIgdGV4dCBcXG5ld2xpbmUpKVxyXG4gIHN0YXRlKSlcclxuIn0gezpzeW0gdXBkYXRlLWVkaXQtaGlzdG9yeSEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbKmVkaXQtaGlzdG9yeSBzdGF0ZV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHVwZGF0ZS1lZGl0LWhpc3RvcnkhXHJcbiBbKmVkaXQtaGlzdG9yeSBzdGF0ZV1cclxuICh0cnlcclxuICAobXdtL3VwZGF0ZS1lZGl0LWhpc3RvcnkhXHJcbiAgICplZGl0LWhpc3RvcnlcclxuICAgKGlmICg6c2VsZWN0aW9uLWNoYW5nZT8gc3RhdGUpIHN0YXRlIChkaXNzb2Mgc3RhdGUgOmNyb3BwZWQtc3RhdGUpKSlcclxuICBzdGF0ZVxyXG4gIChjYXRjaCBqcy9FcnJvciBfIChtd20vZ2V0LWN1cnJlbnQtc3RhdGUgKmVkaXQtaGlzdG9yeSkpKSlcclxuIn0gezpzeW0gcmVmcmVzaC1jb25zb2xlLWNvbnRlbnQhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2NvbnRlbnQgc3RhdGUgY29uc29sZS1zdGFydC1udW0gY2xqP10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlZnJlc2gtY29uc29sZS1jb250ZW50IVxyXG4gW2NvbnRlbnQgc3RhdGUgY29uc29sZS1zdGFydC1udW0gY2xqP11cclxuIChzZXQhXHJcbiAgKC4taW5uZXJIVE1MIGNvbnRlbnQpXHJcbiAgKGlmXHJcbiAgIGNsaj9cclxuICAgKGxldFxyXG4gICAgW3ByZS10ZXh0XHJcbiAgICAgKHN1YnMgKDp0ZXh0IHN0YXRlKSAwIGNvbnNvbGUtc3RhcnQtbnVtKVxyXG4gICAgIHBvc3QtdGV4dFxyXG4gICAgIChzdWJzICg6dGV4dCBzdGF0ZSkgY29uc29sZS1zdGFydC1udW0pXVxyXG4gICAgKHN0ciAoaHMvZXNjYXBlLWh0bWwtc3RyIHByZS10ZXh0KSAoaHMvY29kZS0+aHRtbCBwb3N0LXRleHQpKSlcclxuICAgKGhzL2VzY2FwZS1odG1sLXN0ciAoOnRleHQgc3RhdGUpKSkpXHJcbiBzdGF0ZSlcclxuIn0gezpzeW0gcmVmcmVzaC1lcnJvcnMtYW5kLWRlbGltaXRlcnMhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2NvbnRlbnQgZXZlbnRzLWNoYW5dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiByZWZyZXNoLWVycm9ycy1hbmQtZGVsaW1pdGVycyFcclxuIFtjb250ZW50IGV2ZW50cy1jaGFuXVxyXG4gKGhpZGUtZXJyb3ItbWVzc2FnZXMhICguLXBhcmVudEVsZW1lbnQgY29udGVudCkpXHJcbiAoZG9zZXFcclxuICBbZWxlbSAoLT4gY29udGVudCAoLnF1ZXJ5U2VsZWN0b3JBbGwgXCIuZXJyb3JcIikgYXJyYXktc2VxKV1cclxuICAobGV0XHJcbiAgIFtzaG93LWVycm9yLWljb24hXHJcbiAgICAoZm4gW2VsZW1dIChzZXQhICguLWRpc3BsYXkgKC4tc3R5bGUgZWxlbSkpIFwiaW5saW5lLWJsb2NrXCIpKVxyXG4gICAgc2hvdy1lcnJvci1pY29uIVxyXG4gICAgKGRlYm91bmNlIHNob3ctZXJyb3ItaWNvbiEgMTAwMCldXHJcbiAgIChzaG93LWVycm9yLWljb24hIGVsZW0pKVxyXG4gIChldmVudHMvbGlzdGVuXHJcbiAgIGVsZW1cclxuICAgXCJtb3VzZWVudGVyXCJcclxuICAgKGZuKiBbcDFfXzQxNjQ3I10gKHB1dCEgZXZlbnRzLWNoYW4gcDFfXzQxNjQ3IykpKVxyXG4gIChldmVudHMvbGlzdGVuXHJcbiAgIGVsZW1cclxuICAgXCJtb3VzZWxlYXZlXCJcclxuICAgKGZuKiBbcDFfXzQxNjQ4I10gKHB1dCEgZXZlbnRzLWNoYW4gcDFfXzQxNjQ4IykpKSlcclxuIChkb3NlcVxyXG4gIFtbZWxlbSBjbGFzcy1uYW1lXSAocmFpbmJvdy1kZWxpbWl0ZXJzIGNvbnRlbnQgLTEpXVxyXG4gICguYWRkICguLWNsYXNzTGlzdCBlbGVtKSBjbGFzcy1uYW1lKSkpXHJcbiJ9IHs6c3ltIGFwcGVuZC10ZXh0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VkaXRvciB0ZXh0XSl9LCA6c291cmNlICIoZGVmbiBhcHBlbmQtdGV4dCBbZWRpdG9yIHRleHRdIChhcHBlbmQtdGV4dCEgZWRpdG9yIHRleHQpKVxyXG4ifSB7OnN5bSBwcmV2ZW50LWRlZmF1bHQ/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2V2ZW50IG9wdHNdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBwcmV2ZW50LWRlZmF1bHQ/XHJcbiBbZXZlbnQgb3B0c11cclxuIChib29sZWFuXHJcbiAgKG9yXHJcbiAgIChrZXktbmFtZT8gZXZlbnQgOnVuZG8tb3ItcmVkbylcclxuICAgKGtleS1uYW1lPyBldmVudCA6dGFiKVxyXG4gICAoa2V5LW5hbWU/IGV2ZW50IDplbnRlcilcclxuICAgKGFuZFxyXG4gICAgKG9yICg6Y29uc29sZS1jYWxsYmFjayBvcHRzKSAoLi1hbHRLZXkgZXZlbnQpKVxyXG4gICAgKG9yIChrZXktbmFtZT8gZXZlbnQgOnVwLWFycm93KSAoa2V5LW5hbWU/IGV2ZW50IDpkb3duLWFycm93KSkpKSkpXHJcbiJ9IHs6c3ltIGluaXRpYWxpemUhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RoaXNdKX0sIDpwcm90b2NvbCBFZGl0b3J9IHs6c3ltIGluaXQtYWxsLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoWyYgW29wdHNdXSl9LCA6c291cmNlICIoZGVmblxyXG4gaW5pdC1hbGxcclxuIFsmIFtvcHRzXV1cclxuIChkb3NlcVxyXG4gIFtwcyAoLT4ganMvZG9jdW1lbnQgKC5xdWVyeVNlbGVjdG9yQWxsIFwiLnBhcmVuLXNvdXBcIikgYXJyYXktc2VxKV1cclxuICAoaW5pdCBwcyAob3Igb3B0cyAjanMge30pKSkpXHJcbiJ9IHs6c3ltIGFkZC1wYXJpbmZlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbmFibGU/IGNvbnNvbGUtc3RhcnQtbnVtIHN0YXRlXSl9LCA6c291cmNlICIoZGVmblxyXG4gYWRkLXBhcmluZmVyXHJcbiBbZW5hYmxlPyBjb25zb2xlLXN0YXJ0LW51bSBzdGF0ZV1cclxuIChpZlxyXG4gIGVuYWJsZT9cclxuICAobGV0XHJcbiAgIFtjcm9wcGVkLXN0YXRlXHJcbiAgICAoOmNyb3BwZWQtc3RhdGUgc3RhdGUpXHJcbiAgICBpbmRlbnQtdHlwZVxyXG4gICAgKDppbmRlbnQtdHlwZSBzdGF0ZSlcclxuICAgIHN0YXRlXHJcbiAgICAoY29uZFxyXG4gICAgIChwb3M/IGNvbnNvbGUtc3RhcnQtbnVtKVxyXG4gICAgIChhZGQtcGFyaW5mZXItYWZ0ZXItY29uc29sZS1zdGFydCBjb25zb2xlLXN0YXJ0LW51bSBzdGF0ZSlcclxuICAgICBpbmRlbnQtdHlwZVxyXG4gICAgIChjcC9hZGQtaW5kZW50IHN0YXRlKVxyXG4gICAgIDplbHNlXHJcbiAgICAgKGNwL2FkZC1wYXJpbmZlciA6cGFyZW4gc3RhdGUpKV1cclxuICAgKGlmXHJcbiAgICAoYW5kIGNyb3BwZWQtc3RhdGUgaW5kZW50LXR5cGUpXHJcbiAgICAoYXNzb2NcclxuICAgICBzdGF0ZVxyXG4gICAgIDpjcm9wcGVkLXN0YXRlXHJcbiAgICAgKG1lcmdlXHJcbiAgICAgIGNyb3BwZWQtc3RhdGVcclxuICAgICAgKGNwL2FkZC1pbmRlbnQgKGFzc29jIGNyb3BwZWQtc3RhdGUgOmluZGVudC10eXBlIGluZGVudC10eXBlKSkpKVxyXG4gICAgc3RhdGUpKVxyXG4gIHN0YXRlKSlcclxuIn0gezpzeW0gdW5kbywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlZGl0b3JdKX0sIDpzb3VyY2UgIihkZWZuIHVuZG8gW2VkaXRvcl0gKHVuZG8hIGVkaXRvcikpXHJcbiJ9IHs6c3ltIG9iaj8sIDptZXRhIHt9LCA6c291cmNlICIoZGVmIG9iaj8gKGZuKiBbcDFfXzQxNjQ1I10gKGluc3RhbmNlPyBqcy9PYmplY3QgcDFfXzQxNjQ1IykpKVxyXG4ifSB7OnN5bSBkb3duISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0aGlzIGFsdD9dKX0sIDpwcm90b2NvbCBFZGl0b3J9IHs6c3ltIGFkZC1ldmVudC1saXN0ZW5lcnMhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2NvbnRlbnQgZXZlbnRzLWNoYW4gb3B0c10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGFkZC1ldmVudC1saXN0ZW5lcnMhXHJcbiBbY29udGVudCBldmVudHMtY2hhbiBvcHRzXVxyXG4gKGRvdG9cclxuICBjb250ZW50XHJcbiAgKGV2ZW50cy9yZW1vdmVBbGwpXHJcbiAgKGV2ZW50cy9saXN0ZW5cclxuICAgXCJrZXlkb3duXCJcclxuICAgKGZuXHJcbiAgICBbZV1cclxuICAgICh3aGVuIChwcmV2ZW50LWRlZmF1bHQ/IGUgb3B0cykgKC5wcmV2ZW50RGVmYXVsdCBlKSlcclxuICAgIChwdXQhIGV2ZW50cy1jaGFuIGUpKSlcclxuICAoZXZlbnRzL2xpc3RlblxyXG4gICBcImtleXVwXCJcclxuICAgKGZuKiBbcDFfXzQxNjUyI10gKHB1dCEgZXZlbnRzLWNoYW4gcDFfXzQxNjUyIykpKVxyXG4gIChldmVudHMvbGlzdGVuXHJcbiAgIFwiY3V0XCJcclxuICAgKGZuKiBbcDFfXzQxNjUzI10gKHB1dCEgZXZlbnRzLWNoYW4gcDFfXzQxNjUzIykpKVxyXG4gIChldmVudHMvbGlzdGVuXHJcbiAgIFwicGFzdGVcIlxyXG4gICAoZm4qIFtwMV9fNDE2NTQjXSAocHV0ISBldmVudHMtY2hhbiBwMV9fNDE2NTQjKSkpXHJcbiAgKGV2ZW50cy9saXN0ZW5cclxuICAgXCJtb3VzZXVwXCJcclxuICAgKGZuKiBbcDFfXzQxNjU1I10gKHB1dCEgZXZlbnRzLWNoYW4gcDFfXzQxNjU1IykpKSkpXHJcbiJ9IHs6c3ltIHJlc2V0LWVkaXQtaGlzdG9yeSEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGhpcyBzdGFydF0pfSwgOnByb3RvY29sIEVkaXRvcn0gezpzeW0gaGlkZS1lcnJvci1tZXNzYWdlcyEsIDptZXRhIHs6ZG9jICJIaWRlcyBhbGwgZXJyb3IgcG9wdXBzLiIsIDphcmdsaXN0cyAoW3BhcmVudC1lbGVtXSl9LCA6c291cmNlICIoZGVmblxyXG4gaGlkZS1lcnJvci1tZXNzYWdlcyFcclxuIFwiSGlkZXMgYWxsIGVycm9yIHBvcHVwcy5cIlxyXG4gW3BhcmVudC1lbGVtXVxyXG4gKGRvc2VxXHJcbiAgW2VsZW0gKC0+IHBhcmVudC1lbGVtICgucXVlcnlTZWxlY3RvckFsbCBcIi5lcnJvci10ZXh0XCIpIGFycmF5LXNlcSldXHJcbiAgKC5yZW1vdmVDaGlsZCBwYXJlbnQtZWxlbSBlbGVtKSkpXHJcbiJ9IHs6c3ltIEVkaXRvciwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKGFwcGVuZC10ZXh0ISBjYW4tcmVkbz8gY2FuLXVuZG8/IGRvd24hIGVkaXQtYW5kLXJlZnJlc2ghIGVudGVyISBldmFsISBpbml0aWFsaXplISByZWRvISByZWZyZXNoISByZWZyZXNoLWFmdGVyLWN1dC1wYXN0ZSEgcmVmcmVzaC1hZnRlci1rZXktZXZlbnQhIHJlc2V0LWVkaXQtaGlzdG9yeSEgdGFiISB1bmRvISB1cCEgdXBkYXRlLWN1cnNvci1wb3NpdGlvbiEpfSksIGNsanMudG9vbHMucmVhZGVyLmltcGwuY29tbW9ucyAoezpzeW0gbWF0Y2gtbnVtYmVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBtYXRjaC1udW1iZXJcclxuIFtzXVxyXG4gKGlmXHJcbiAgKG1hdGNoZXM/IGludC1wYXR0ZXJuIHMpXHJcbiAgKG1hdGNoLWludCBzKVxyXG4gIChpZlxyXG4gICAobWF0Y2hlcz8gZmxvYXQtcGF0dGVybiBzKVxyXG4gICAobWF0Y2gtZmxvYXQgcylcclxuICAgKHdoZW4gKG1hdGNoZXM/IHJhdGlvLXBhdHRlcm4gcykgKG1hdGNoLXJhdGlvIHMpKSkpKVxyXG4ifSB7OnN5bSBza2lwLWxpbmUsIDptZXRhIHs6ZG9jICJBZHZhbmNlcyB0aGUgcmVhZGVyIHRvIHRoZSBlbmQgb2YgYSBsaW5lLiBSZXR1cm5zIHRoZSByZWFkZXIiLCA6YXJnbGlzdHMgKFtyZWFkZXJdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBza2lwLWxpbmVcclxuIFwiQWR2YW5jZXMgdGhlIHJlYWRlciB0byB0aGUgZW5kIG9mIGEgbGluZS4gUmV0dXJucyB0aGUgcmVhZGVyXCJcclxuIFtyZWFkZXJdXHJcbiAobG9vcCBbXSAod2hlbi1ub3QgKG5ld2xpbmU/IChyZWFkLWNoYXIgcmVhZGVyKSkgKHJlY3VyKSkpXHJcbiByZWFkZXIpXHJcbiJ9IHs6c3ltIGludC1wYXR0ZXJuLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxyXG4gaW50LXBhdHRlcm5cclxuICNcIl4oWy0rXT8pKD86KDApfChbMS05XVswLTldKil8MFt4WF0oWzAtOUEtRmEtZl0rKXwwKFswLTddKyl8KFsxLTldWzAtOV0/KVtyUl0oWzAtOUEtWmEtel0rKXwwWzAtOV0rKShOKT8kXCIpXHJcbiJ9IHs6c3ltIHJlYWQtY29tbWVudCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgJiBfXSl9LCA6c291cmNlICIoZGVmbiByZWFkLWNvbW1lbnQgW3JkciAmIF9dIChza2lwLWxpbmUgcmRyKSlcclxuIn0gezpzeW0gcGFyc2Utc3ltYm9sLCA6bWV0YSB7OmRvYyAiUGFyc2VzIGEgc3RyaW5nIGludG8gYSB2ZWN0b3Igb2YgdGhlIG5hbWVzcGFjZSBhbmQgc3ltYm9sIiwgOmFyZ2xpc3RzIChbdG9rZW5dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBwYXJzZS1zeW1ib2xcclxuIFwiUGFyc2VzIGEgc3RyaW5nIGludG8gYSB2ZWN0b3Igb2YgdGhlIG5hbWVzcGFjZSBhbmQgc3ltYm9sXCJcclxuIFt0b2tlbl1cclxuICh3aGVuLW5vdFxyXG4gIChvclxyXG4gICAoaWRlbnRpY2FsPyBcIlwiIHRva2VuKVxyXG4gICAodHJ1ZT8gKC50ZXN0ICNcIjokXCIgdG9rZW4pKVxyXG4gICAodHJ1ZT8gKC50ZXN0ICNcIl46OlwiIHRva2VuKSkpXHJcbiAgKGxldFxyXG4gICBbbnMtaWR4XHJcbiAgICAoLmluZGV4T2YgdG9rZW4gXCIvXCIpXHJcbiAgICBuc1xyXG4gICAgKHdoZW4gKHBvcz8gbnMtaWR4KSAoc3VicyB0b2tlbiAwIG5zLWlkeCkpXVxyXG4gICAoaWYtbm90XHJcbiAgICAobmlsPyBucylcclxuICAgIChsZXRcclxuICAgICBbbnMtaWR4IChpbmMgbnMtaWR4KV1cclxuICAgICAod2hlbi1ub3RcclxuICAgICAgKD09IG5zLWlkeCAoY291bnQgdG9rZW4pKVxyXG4gICAgICAobGV0XHJcbiAgICAgICBbc3ltIChzdWJzIHRva2VuIG5zLWlkeCldXHJcbiAgICAgICAod2hlblxyXG4gICAgICAgIChhbmRcclxuICAgICAgICAgKG5vdCAobnVtZXJpYz8gKG50aCBzeW0gMCkpKVxyXG4gICAgICAgICAobm90IChpZGVudGljYWw/IFwiXCIgc3ltKSlcclxuICAgICAgICAgKGZhbHNlPyAoLnRlc3QgI1wiOiRcIiBucykpXHJcbiAgICAgICAgIChvciAoaWRlbnRpY2FsPyBzeW0gXCIvXCIpICg9PSAtMSAoLmluZGV4T2Ygc3ltIFwiL1wiKSkpKVxyXG4gICAgICAgIFtucyBzeW1dKSkpKVxyXG4gICAgKHdoZW5cclxuICAgICAob3IgKGlkZW50aWNhbD8gdG9rZW4gXCIvXCIpICg9PSAtMSAoLmluZGV4T2YgdG9rZW4gXCIvXCIpKSlcclxuICAgICBbbmlsIHRva2VuXSkpKSkpXHJcbiJ9IHs6c3ltIG51bWJlci1saXRlcmFsPywgOm1ldGEgezpkb2MgIkNoZWNrcyB3aGV0aGVyIHRoZSByZWFkZXIgaXMgYXQgdGhlIHN0YXJ0IG9mIGEgbnVtYmVyIGxpdGVyYWwiLCA6YXJnbGlzdHMgKFtyZWFkZXIgaW5pdGNoXSl9LCA6c291cmNlICIoZGVmblxyXG4gbnVtYmVyLWxpdGVyYWw/XHJcbiBcIkNoZWNrcyB3aGV0aGVyIHRoZSByZWFkZXIgaXMgYXQgdGhlIHN0YXJ0IG9mIGEgbnVtYmVyIGxpdGVyYWxcIlxyXG4gW3JlYWRlciBpbml0Y2hdXHJcbiAob3JcclxuICAobnVtZXJpYz8gaW5pdGNoKVxyXG4gIChhbmRcclxuICAgKG9yIChpZGVudGljYWw/IFxcKyBpbml0Y2gpIChpZGVudGljYWw/IFxcLSBpbml0Y2gpKVxyXG4gICAobnVtZXJpYz8gKHBlZWstY2hhciByZWFkZXIpKSkpKVxyXG4ifSB7OnN5bSByZWFkLXBhc3QsIDptZXRhIHs6ZG9jICJSZWFkIHVudGlsIGZpcnN0IGNoYXJhY3RlciB0aGF0IGRvZXNuJ3QgbWF0Y2ggcHJlZCwgcmV0dXJuaW5nXG4gICBjaGFyLiIsIDphcmdsaXN0cyAoW3ByZWQgcmRyXSl9LCA6c291cmNlICIoZGVmblxyXG4gcmVhZC1wYXN0XHJcbiBcIlJlYWQgdW50aWwgZmlyc3QgY2hhcmFjdGVyIHRoYXQgZG9lc24ndCBtYXRjaCBwcmVkLCByZXR1cm5pbmdcXG4gICBjaGFyLlwiXHJcbiBbcHJlZCByZHJdXHJcbiAobG9vcCBbY2ggKHJlYWQtY2hhciByZHIpXSAoaWYgKHByZWQgY2gpIChyZWN1ciAocmVhZC1jaGFyIHJkcikpIGNoKSkpXHJcbiJ9IHs6c3ltIGZsb2F0LXBhdHRlcm4sIDptZXRhIHt9LCA6c291cmNlICIoZGVmIGZsb2F0LXBhdHRlcm4gI1wiKFstK10/WzAtOV0rKFxcLlswLTldKik/KFtlRV1bLStdP1swLTldKyk/KShNKT9cIilcclxuIn0gezpzeW0gbWF0Y2hlcz8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcGF0dGVybiBzXSl9LCA6c291cmNlICIoZGVmblxyXG4gbWF0Y2hlcz9cclxuIFtwYXR0ZXJuIHNdXHJcbiAobGV0IFtbbWF0Y2hdIChyZS1maW5kIHBhdHRlcm4gcyldIChpZGVudGljYWw/IG1hdGNoIHMpKSlcclxuIn0gezpzeW0gdGhyb3dpbmctcmVhZGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21zZ10pfSwgOnNvdXJjZSAiKGRlZm4gdGhyb3dpbmctcmVhZGVyIFttc2ddIChmbiBbcmRyICYgX10gKHJlYWRlci1lcnJvciByZHIgbXNnKSkpXHJcbiJ9IHs6c3ltIHJhdGlvLXBhdHRlcm4sIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHJhdGlvLXBhdHRlcm4gI1wiKFstK10/WzAtOV0rKS8oWzAtOV0rKVwiKVxyXG4ifSksIGNsanMudG9vbHMucmVhZGVyLmVkbiAoezpzeW0gcmVhZCwgOm1ldGEgezpkb2MgIlJlYWRzIHRoZSBmaXJzdCBvYmplY3QgZnJvbSBhbiBJUHVzaGJhY2tSZWFkZXIuXG4gICBSZXR1cm5zIHRoZSBvYmplY3QgcmVhZC4gSWYgRU9GLCB0aHJvd3MgaWYgZW9mLWVycm9yPyBpcyB0cnVlIG90aGVyd2lzZSByZXR1cm5zIGVvZi5cbiAgIElmIG5vIHJlYWRlciBpcyBwcm92aWRlZCwgKmluKiB3aWxsIGJlIHVzZWQuXG5cbiAgIFJlYWRzIGRhdGEgaW4gdGhlIGVkbiBmb3JtYXQgKHN1YnNldCBvZiBDbG9qdXJlIGRhdGEpOlxuICAgaHR0cDovL2Vkbi1mb3JtYXQub3JnXG5cbiAgIGNsb2p1cmUudG9vbHMucmVhZGVyLmVkbi9yZWFkIGRvZXNuJ3QgZGVwZW5kIG9uIGR5bmFtaWMgVmFycywgYWxsIGNvbmZpZ3VyYXRpb25cbiAgIGlzIGRvbmUgYnkgcGFzc2luZyBhbiBvcHQgbWFwLlxuXG4gICBvcHRzIGlzIGEgbWFwIHRoYXQgY2FuIGluY2x1ZGUgdGhlIGZvbGxvd2luZyBrZXlzOlxuICAgOmVvZiAtIHZhbHVlIHRvIHJldHVybiBvbiBlbmQtb2YtZmlsZS4gV2hlbiBub3Qgc3VwcGxpZWQsIGVvZiB0aHJvd3MgYW4gZXhjZXB0aW9uLlxuICAgOnJlYWRlcnMgIC0gYSBtYXAgb2YgdGFnIHN5bWJvbHMgdG8gZGF0YS1yZWFkZXIgZnVuY3Rpb25zIHRvIGJlIGNvbnNpZGVyZWQgYmVmb3JlIGRlZmF1bHQtZGF0YS1yZWFkZXJzLlxuICAgICAgICAgICAgICBXaGVuIG5vdCBzdXBwbGllZCwgb25seSB0aGUgZGVmYXVsdC1kYXRhLXJlYWRlcnMgd2lsbCBiZSB1c2VkLlxuICAgOmRlZmF1bHQgLSBBIGZ1bmN0aW9uIG9mIHR3byBhcmdzLCB0aGF0IHdpbGwsIGlmIHByZXNlbnQgYW5kIG5vIHJlYWRlciBpcyBmb3VuZCBmb3IgYSB0YWcsXG4gICAgICAgICAgICAgIGJlIGNhbGxlZCB3aXRoIHRoZSB0YWcgYW5kIHRoZSB2YWx1ZS4iLCA6YXJnbGlzdHMgW1tyZWFkZXJdIFt7OmtleXMgW2VvZl0sIDphcyBvcHRzfSByZWFkZXJdIFtyZWFkZXIgZW9mLWVycm9yPyBlb2Ygb3B0c11dfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlYWRcclxuIFwiUmVhZHMgdGhlIGZpcnN0IG9iamVjdCBmcm9tIGFuIElQdXNoYmFja1JlYWRlci5cXG4gICBSZXR1cm5zIHRoZSBvYmplY3QgcmVhZC4gSWYgRU9GLCB0aHJvd3MgaWYgZW9mLWVycm9yPyBpcyB0cnVlIG90aGVyd2lzZSByZXR1cm5zIGVvZi5cXG4gICBJZiBubyByZWFkZXIgaXMgcHJvdmlkZWQsICppbiogd2lsbCBiZSB1c2VkLlxcblxcbiAgIFJlYWRzIGRhdGEgaW4gdGhlIGVkbiBmb3JtYXQgKHN1YnNldCBvZiBDbG9qdXJlIGRhdGEpOlxcbiAgIGh0dHA6Ly9lZG4tZm9ybWF0Lm9yZ1xcblxcbiAgIGNsb2p1cmUudG9vbHMucmVhZGVyLmVkbi9yZWFkIGRvZXNuJ3QgZGVwZW5kIG9uIGR5bmFtaWMgVmFycywgYWxsIGNvbmZpZ3VyYXRpb25cXG4gICBpcyBkb25lIGJ5IHBhc3NpbmcgYW4gb3B0IG1hcC5cXG5cXG4gICBvcHRzIGlzIGEgbWFwIHRoYXQgY2FuIGluY2x1ZGUgdGhlIGZvbGxvd2luZyBrZXlzOlxcbiAgIDplb2YgLSB2YWx1ZSB0byByZXR1cm4gb24gZW5kLW9mLWZpbGUuIFdoZW4gbm90IHN1cHBsaWVkLCBlb2YgdGhyb3dzIGFuIGV4Y2VwdGlvbi5cXG4gICA6cmVhZGVycyAgLSBhIG1hcCBvZiB0YWcgc3ltYm9scyB0byBkYXRhLXJlYWRlciBmdW5jdGlvbnMgdG8gYmUgY29uc2lkZXJlZCBiZWZvcmUgZGVmYXVsdC1kYXRhLXJlYWRlcnMuXFxuICAgICAgICAgICAgICBXaGVuIG5vdCBzdXBwbGllZCwgb25seSB0aGUgZGVmYXVsdC1kYXRhLXJlYWRlcnMgd2lsbCBiZSB1c2VkLlxcbiAgIDpkZWZhdWx0IC0gQSBmdW5jdGlvbiBvZiB0d28gYXJncywgdGhhdCB3aWxsLCBpZiBwcmVzZW50IGFuZCBubyByZWFkZXIgaXMgZm91bmQgZm9yIGEgdGFnLFxcbiAgICAgICAgICAgICAgYmUgY2FsbGVkIHdpdGggdGhlIHRhZyBhbmQgdGhlIHZhbHVlLlwiXHJcbiAoW3JlYWRlcl0gKHJlYWQge30gcmVhZGVyKSlcclxuIChbezprZXlzIFtlb2ZdLCA6YXMgb3B0c30gcmVhZGVyXVxyXG4gIChsZXRcclxuICAgW2VvZi1lcnJvcj8gKG5vdCAoY29udGFpbnM/IG9wdHMgOmVvZikpXVxyXG4gICAocmVhZCByZWFkZXIgZW9mLWVycm9yPyBlb2Ygb3B0cykpKVxyXG4gKFtyZWFkZXIgZW9mLWVycm9yPyBlb2Ygb3B0c11cclxuICAodHJ5XHJcbiAgIChsb29wXHJcbiAgICBbXVxyXG4gICAgKGxldFxyXG4gICAgIFtjaCAocmVhZC1jaGFyIHJlYWRlcildXHJcbiAgICAgKGNvbmRcclxuICAgICAgKHdoaXRlc3BhY2U/IGNoKVxyXG4gICAgICAocmVjdXIpXHJcbiAgICAgIChuaWw/IGNoKVxyXG4gICAgICAoaWYgZW9mLWVycm9yPyAoZXJyL3Rocm93LWVvZi1lcnJvciByZWFkZXIgbmlsKSBlb2YpXHJcbiAgICAgIChudW1iZXItbGl0ZXJhbD8gcmVhZGVyIGNoKVxyXG4gICAgICAocmVhZC1udW1iZXIgcmVhZGVyIGNoIG9wdHMpXHJcbiAgICAgIDplbHNlXHJcbiAgICAgIChsZXRcclxuICAgICAgIFtmIChtYWNyb3MgY2gpXVxyXG4gICAgICAgKGlmXHJcbiAgICAgICAgZlxyXG4gICAgICAgIChsZXRcclxuICAgICAgICAgW3JlcyAoZiByZWFkZXIgY2ggb3B0cyldXHJcbiAgICAgICAgIChpZiAoaWRlbnRpY2FsPyByZXMgcmVhZGVyKSAocmVjdXIpIHJlcykpXHJcbiAgICAgICAgKHJlYWQtc3ltYm9sIHJlYWRlciBjaCkpKSkpKVxyXG4gICAoY2F0Y2hcclxuICAgIGpzL0Vycm9yXHJcbiAgICBlXHJcbiAgICAoaWZcclxuICAgICAoZXgtaW5mbz8gZSlcclxuICAgICAobGV0XHJcbiAgICAgIFtkIChleC1kYXRhIGUpXVxyXG4gICAgICAoaWZcclxuICAgICAgICg9IDpyZWFkZXItZXhjZXB0aW9uICg6dHlwZSBkKSlcclxuICAgICAgICh0aHJvdyBlKVxyXG4gICAgICAgKHRocm93XHJcbiAgICAgICAgKGV4LWluZm9cclxuICAgICAgICAgKC4tbWVzc2FnZSBlKVxyXG4gICAgICAgICAobWVyZ2VcclxuICAgICAgICAgIHs6dHlwZSA6cmVhZGVyLWV4Y2VwdGlvbn1cclxuICAgICAgICAgIGRcclxuICAgICAgICAgIChpZlxyXG4gICAgICAgICAgIChpbmRleGluZy1yZWFkZXI/IHJlYWRlcilcclxuICAgICAgICAgICB7OmxpbmUgKGdldC1saW5lLW51bWJlciByZWFkZXIpLFxyXG4gICAgICAgICAgICA6Y29sdW1uIChnZXQtY29sdW1uLW51bWJlciByZWFkZXIpLFxyXG4gICAgICAgICAgICA6ZmlsZSAoZ2V0LWZpbGUtbmFtZSByZWFkZXIpfSkpXHJcbiAgICAgICAgIGUpKSkpXHJcbiAgICAgKHRocm93XHJcbiAgICAgIChleC1pbmZvXHJcbiAgICAgICAoLi1tZXNzYWdlIGUpXHJcbiAgICAgICAobWVyZ2VcclxuICAgICAgICB7OnR5cGUgOnJlYWRlci1leGNlcHRpb259XHJcbiAgICAgICAgKGlmXHJcbiAgICAgICAgIChpbmRleGluZy1yZWFkZXI/IHJlYWRlcilcclxuICAgICAgICAgezpsaW5lIChnZXQtbGluZS1udW1iZXIgcmVhZGVyKSxcclxuICAgICAgICAgIDpjb2x1bW4gKGdldC1jb2x1bW4tbnVtYmVyIHJlYWRlciksXHJcbiAgICAgICAgICA6ZmlsZSAoZ2V0LWZpbGUtbmFtZSByZWFkZXIpfSkpXHJcbiAgICAgICBlKSkpKSkpKVxyXG4ifSB7OnN5bSByZWFkLXN0cmluZywgOm1ldGEgezpkb2MgIlJlYWRzIG9uZSBvYmplY3QgZnJvbSB0aGUgc3RyaW5nIHMuXG4gICBSZXR1cm5zIG5pbCB3aGVuIHMgaXMgbmlsIG9yIGVtcHR5LlxuXG4gICBSZWFkcyBkYXRhIGluIHRoZSBlZG4gZm9ybWF0IChzdWJzZXQgb2YgQ2xvanVyZSBkYXRhKTpcbiAgIGh0dHA6Ly9lZG4tZm9ybWF0Lm9yZ1xuXG4gICBvcHRzIGlzIGEgbWFwIGFzIHBlciBjbG9qdXJlLnRvb2xzLnJlYWRlci5lZG4vcmVhZCIsIDphcmdsaXN0cyBbW3NdIFtvcHRzIHNdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiByZWFkLXN0cmluZ1xyXG4gXCJSZWFkcyBvbmUgb2JqZWN0IGZyb20gdGhlIHN0cmluZyBzLlxcbiAgIFJldHVybnMgbmlsIHdoZW4gcyBpcyBuaWwgb3IgZW1wdHkuXFxuXFxuICAgUmVhZHMgZGF0YSBpbiB0aGUgZWRuIGZvcm1hdCAoc3Vic2V0IG9mIENsb2p1cmUgZGF0YSk6XFxuICAgaHR0cDovL2Vkbi1mb3JtYXQub3JnXFxuXFxuICAgb3B0cyBpcyBhIG1hcCBhcyBwZXIgY2xvanVyZS50b29scy5yZWFkZXIuZWRuL3JlYWRcIlxyXG4gKFtzXSAocmVhZC1zdHJpbmcgezplb2YgbmlsfSBzKSlcclxuIChbb3B0cyBzXVxyXG4gICh3aGVuIChhbmQgcyAobm90PSBzIFwiXCIpKSAocmVhZCBvcHRzIChzdHJpbmctcHVzaC1iYWNrLXJlYWRlciBzKSkpKSlcclxuIn0pLCBjbGpzLnNvdXJjZS1tYXAuYmFzZTY0LXZscSAoezpzeW0gZW5jb2RlLXZhbCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtuXSl9LCA6c291cmNlICIoZGVmblxyXG4gZW5jb2RlLXZhbFxyXG4gW25dXHJcbiAobGV0XHJcbiAgW3NiIChTdHJpbmdCdWZmZXIuKSB2bHEgKHRvLXZscS1zaWduZWQgbildXHJcbiAgKGxvb3BcclxuICAgW2RpZ2l0XHJcbiAgICAoYml0LWFuZCB2bHEgdmxxLWJhc2UtbWFzaylcclxuICAgIHZscVxyXG4gICAgKGJpdC1zaGlmdC1yaWdodC16ZXJvLWZpbGwgdmxxIHZscS1iYXNlLXNoaWZ0KV1cclxuICAgKGlmXHJcbiAgICAocG9zPyB2bHEpXHJcbiAgICAobGV0XHJcbiAgICAgW2RpZ2l0IChiaXQtb3IgZGlnaXQgdmxxLWNvbnRpbnVhdGlvbi1iaXQpXVxyXG4gICAgICguYXBwZW5kIHNiIChiYXNlNjQvZW5jb2RlIGRpZ2l0KSlcclxuICAgICAocmVjdXJcclxuICAgICAgKGJpdC1hbmQgdmxxIHZscS1iYXNlLW1hc2spXHJcbiAgICAgIChiaXQtc2hpZnQtcmlnaHQtemVyby1maWxsIHZscSB2bHEtYmFzZS1zaGlmdCkpKVxyXG4gICAgKC5hcHBlbmQgc2IgKGJhc2U2NC9lbmNvZGUgZGlnaXQpKSkpXHJcbiAgKHN0ciBzYikpKVxyXG4ifSB7OnN5bSBlbmNvZGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdl0pfSwgOnNvdXJjZSAiKGRlZm4gZW5jb2RlIFt2XSAoYXBwbHkgc3RyIChtYXAgZW5jb2RlLXZhbCB2KSkpXHJcbiJ9IHs6c3ltIHZscS1jb250aW51YXRpb24tYml0LCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiB2bHEtY29udGludWF0aW9uLWJpdCB2bHEtYmFzZSlcclxuIn0gezpzeW0gdmxxLWJhc2UtbWFzaywgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgdmxxLWJhc2UtbWFzayAoZGVjIHZscS1iYXNlKSlcclxuIn0gezpzeW0gZGVjb2RlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBkZWNvZGVcclxuIFtzXVxyXG4gKGxldFxyXG4gIFtsICguLWxlbmd0aCBzKV1cclxuICAobG9vcFxyXG4gICBbaSAwIHJlc3VsdCAwIHNoaWZ0IDBdXHJcbiAgICh3aGVuXHJcbiAgICAoPj0gaSBsKVxyXG4gICAgKHRocm93IChqcy9FcnJvci4gXCJFeHBlY3RlZCBtb3JlIGRpZ2l0cyBpbiBiYXNlIDY0IFZMUSB2YWx1ZS5cIikpKVxyXG4gICAobGV0XHJcbiAgICBbZGlnaXQgKGJhc2U2NC9kZWNvZGUgKC5jaGFyQXQgcyBpKSldXHJcbiAgICAobGV0XHJcbiAgICAgW2lcclxuICAgICAgKGluYyBpKVxyXG4gICAgICBjb250aW51YXRpb24/XHJcbiAgICAgIChwb3M/IChiaXQtYW5kIGRpZ2l0IHZscS1jb250aW51YXRpb24tYml0KSlcclxuICAgICAgZGlnaXRcclxuICAgICAgKGJpdC1hbmQgZGlnaXQgdmxxLWJhc2UtbWFzaylcclxuICAgICAgcmVzdWx0XHJcbiAgICAgICgrIHJlc3VsdCAoYml0LXNoaWZ0LWxlZnQgZGlnaXQgc2hpZnQpKVxyXG4gICAgICBzaGlmdFxyXG4gICAgICAoKyBzaGlmdCB2bHEtYmFzZS1zaGlmdCldXHJcbiAgICAgKGlmXHJcbiAgICAgIGNvbnRpbnVhdGlvbj9cclxuICAgICAgKHJlY3VyIGkgcmVzdWx0IHNoaWZ0KVxyXG4gICAgICAobGF6eS1zZXFcclxuICAgICAgIChjb25zXHJcbiAgICAgICAgKGZyb20tdmxxLXNpZ25lZCByZXN1bHQpXHJcbiAgICAgICAgKGxldFxyXG4gICAgICAgICBbcyAoLnN1YnN0cmluZyBzIGkpXVxyXG4gICAgICAgICAod2hlbi1ub3QgKHN0cmluZy9ibGFuaz8gcykgKGRlY29kZSBzKSkpKSkpKSkpKSlcclxuIn0gezpzeW0gdmxxLWJhc2Utc2hpZnQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHZscS1iYXNlLXNoaWZ0IDUpXHJcbiJ9IHs6c3ltIGZyb20tdmxxLXNpZ25lZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt2XSl9LCA6c291cmNlICIoZGVmblxyXG4gZnJvbS12bHEtc2lnbmVkXHJcbiBbdl1cclxuIChsZXRcclxuICBbbmVnPyAoPSAoYml0LWFuZCB2IDEpIDEpIHNoaWZ0ZWQgKGJpdC1zaGlmdC1yaWdodCB2IDEpXVxyXG4gIChpZiBuZWc/ICgtIHNoaWZ0ZWQpIHNoaWZ0ZWQpKSlcclxuIn0gezpzeW0gdG8tdmxxLXNpZ25lZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt2XSl9LCA6c291cmNlICIoZGVmblxyXG4gdG8tdmxxLXNpZ25lZFxyXG4gW3ZdXHJcbiAoaWZcclxuICAobmVnPyB2KVxyXG4gIChpbmMgKGJpdC1zaGlmdC1sZWZ0ICgtIHYpIDEpKVxyXG4gICgrIChiaXQtc2hpZnQtbGVmdCB2IDEpIDApKSlcclxuIn0gezpzeW0gdmxxLWJhc2UsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHZscS1iYXNlIChiaXQtc2hpZnQtbGVmdCAxIHZscS1iYXNlLXNoaWZ0KSlcclxuIn0pLCBleHBvdW5kLmFuc2kgKHs6c3ltICpwcmludC1zdHlsZXMqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxyXG4gKnByaW50LXN0eWxlcypcclxuIHs6Z29vZC1rZXkgWzpncmVlbl0sXHJcbiAgOndhcm5pbmcta2V5IFs6Ym9sZF0sXHJcbiAgOmNvcnJlY3Qta2V5IFs6Z3JlZW5dLFxyXG4gIDpoaWdobGlnaHQgWzpib2xkXSxcclxuICA6Zm9jdXMtcGF0aCBbOm1hZ2VudGFdLFxyXG4gIDpiYWQtdmFsdWUgWzpyZWRdLFxyXG4gIDpmb290ZXIgWzpjeWFuXSxcclxuICA6aGVhZGVyIFs6Y3lhbl0sXHJcbiAgOmdvb2QtcHJlZCBbOmdyZWVuXSxcclxuICA6Z29vZCBbOmdyZWVuXSxcclxuICA6Zm9jdXMta2V5IFs6Ym9sZF0sXHJcbiAgOnBvaW50ZXIgWzptYWdlbnRhXSxcclxuICA6YmFkIFs6cmVkXSxcclxuICA6ZXJyb3Ita2V5IFs6cmVkXSxcclxuICA6bm9uZSBbOm5vbmVdLFxyXG4gIDptZXNzYWdlIFs6bWFnZW50YV19KVxyXG4ifSB7OnN5bSAqZW5hYmxlLWNvbG9yKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmVuYWJsZS1jb2xvciogZmFsc2UpXHJcbiJ9IHs6c3ltIHNnci1jb2RlLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxyXG4gc2dyLWNvZGVcclxuIFwiTWFwIG9mIHN5bWJvbHMgdG8gbnVtZXJpYyBTR1IgKHNlbGVjdCBncmFwaGljIHJlbmRpdGlvbikgY29kZXMuXCJcclxuIHs6Ym9sZCAxLFxyXG4gIDpibGluayA1LFxyXG4gIDp3aGl0ZSAzNyxcclxuICA6eWVsbG93IDMzLFxyXG4gIDpiZy1yZWQgNDEsXHJcbiAgOmJnLWN5YW4gNDYsXHJcbiAgOmdyZWVuIDMyLFxyXG4gIDpiZy1ncmVlbiA0MixcclxuICA6ZmctcmVzZXQgMzksXHJcbiAgOmN5YW4gMzYsXHJcbiAgOmJnLWJsYWNrIDQwLFxyXG4gIDpmZy0yNTYgMzgsXHJcbiAgOnVuZGVybGluZSAzLFxyXG4gIDpiZy1tYWdlbnRhIDQ1LFxyXG4gIDpzdHJpa2UgOSxcclxuICA6YmcteWVsbG93IDQzLFxyXG4gIDpoaWRkZW4gOCxcclxuICA6cmVkIDMxLFxyXG4gIDpibHVlIDM0LFxyXG4gIDpiZy13aGl0ZSA0NyxcclxuICA6YmctMjU2IDQ4LFxyXG4gIDptYWdlbnRhIDM1LFxyXG4gIDpiZy1ibHVlIDQ0LFxyXG4gIDpiZy1yZXNldCA0OSxcclxuICA6bm9uZSAwLFxyXG4gIDpyZXZlcnNlIDcsXHJcbiAgOmJsYWNrIDMwfSlcclxuIn0gezpzeW0gZXNjYXBlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhbiBBTlNJIGVzY29wZSBzdHJpbmcgd2hpY2ggd2lsbCBlbmFjdCB0aGUgZ2l2ZW4gU0dSIGNvZGVzLiIsIDphcmdsaXN0cyAoWyYgY29kZXNdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBlc2NhcGVcclxuIFwiUmV0dXJucyBhbiBBTlNJIGVzY29wZSBzdHJpbmcgd2hpY2ggd2lsbCBlbmFjdCB0aGUgZ2l2ZW4gU0dSIGNvZGVzLlwiXHJcbiBbJiBjb2Rlc11cclxuIChlc2MgY29kZXMpKVxyXG4ifSB7OnN5bSBjb2xvciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzICYgc3R5bGVzXSl9LCA6c291cmNlICIoZGVmblxyXG4gY29sb3JcclxuIFtzICYgc3R5bGVzXVxyXG4gKGlmICplbmFibGUtY29sb3IqIChhcHBseSBzZ3IgcyAocmVzb2x2ZS1zdHlsZXMgc3R5bGVzKSkgcykpXHJcbiJ9IHs6c3ltIGVzYywgOm1ldGEgezpkb2MgIlJldHVybnMgYW4gQU5TSSBlc2NvcGUgc3RyaW5nIHdoaWNoIHdpbGwgYXBwbHkgdGhlIGdpdmVuIGNvbGxlY3Rpb24gb2YgU0dSXG4gIGNvZGVzLiIsIDphcmdsaXN0cyAoW2NvZGVzXSl9LCA6c291cmNlICIoZGVmblxyXG4gZXNjXHJcbiBcIlJldHVybnMgYW4gQU5TSSBlc2NvcGUgc3RyaW5nIHdoaWNoIHdpbGwgYXBwbHkgdGhlIGdpdmVuIGNvbGxlY3Rpb24gb2YgU0dSXFxuICBjb2Rlcy5cIlxyXG4gW2NvZGVzXVxyXG4gKGxldFxyXG4gIFtjb2RlcyAobWFwIHNnci1jb2RlIGNvZGVzIGNvZGVzKSBjb2RlcyAoc3RyaW5nL2pvaW4gXFw7IGNvZGVzKV1cclxuICAoc3RyIFxcGyBcXFsgY29kZXMgXFxtKSkpXHJcbiJ9IHs6c3ltIHNnciwgOm1ldGEgezpkb2MgIldyYXBzIHRoZSBnaXZlbiBzdHJpbmcgd2l0aCBTR1IgZXNjYXBlcyB0byBhcHBseSB0aGUgZ2l2ZW4gY29kZXMsIHRoZW4gcmVzZXRcbiAgdGhlIGdyYXBoaWNzLiIsIDphcmdsaXN0cyAoW3N0cmluZyAmIGNvZGVzXSl9LCA6c291cmNlICIoZGVmblxyXG4gc2dyXHJcbiBcIldyYXBzIHRoZSBnaXZlbiBzdHJpbmcgd2l0aCBTR1IgZXNjYXBlcyB0byBhcHBseSB0aGUgZ2l2ZW4gY29kZXMsIHRoZW4gcmVzZXRcXG4gIHRoZSBncmFwaGljcy5cIlxyXG4gW3N0cmluZyAmIGNvZGVzXVxyXG4gKHN0ciAoZXNjIGNvZGVzKSBzdHJpbmcgKGVzY2FwZSA6bm9uZSkpKVxyXG4ifSB7OnN5bSBhbnNpLWNvZGU/LCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBhbnNpLWNvZGU/IHNnci1jb2RlKVxyXG4ifSB7OnN5bSBzdHJpcCwgOm1ldGEgezpkb2MgIlJlbW92ZXMgY29sb3IgY29kZXMgZnJvbSB0aGUgZ2l2ZW4gc3RyaW5nLiIsIDphcmdsaXN0cyAoW3N0cmluZ10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHN0cmlwXHJcbiBcIlJlbW92ZXMgY29sb3IgY29kZXMgZnJvbSB0aGUgZ2l2ZW4gc3RyaW5nLlwiXHJcbiBbc3RyaW5nXVxyXG4gKHN0cmluZy9yZXBsYWNlIHN0cmluZyAjXCJcXHUwMDFiXFxbWzAtOTtdKlttS11cIiBcIlwiKSlcclxuIn0gezpzeW0gcmVzb2x2ZS1zdHlsZXMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3R5bGVzXSl9LCA6c291cmNlICIoZGVmblxyXG4gcmVzb2x2ZS1zdHlsZXNcclxuIFtzdHlsZXNdXHJcbiAoaWYtbGV0XHJcbiAgW3Jlc1xyXG4gICAobm90LWVtcHR5XHJcbiAgICAobWFwY2F0XHJcbiAgICAgKGZuKlxyXG4gICAgICBbcDFfXzQxNjI1I11cclxuICAgICAgKG9yXHJcbiAgICAgICAod2hlbi1sZXQgW3JlcyAoKnByaW50LXN0eWxlcyogcDFfXzQxNjI1IyldIHJlcylcclxuICAgICAgIFtwMV9fNDE2MjUjXSkpXHJcbiAgICAgc3R5bGVzKSldXHJcbiAgcmVzXHJcbiAgWzpib2xkXSkpXHJcbiJ9KSwgZXhwb3VuZC5wcmludGVyICh7OnN5bSBtaXNzaW5nLWtleSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmb3JtXSl9LCA6c291cmNlICIoZGVmblxyXG4gbWlzc2luZy1rZXlcclxuIFtmb3JtXVxyXG4gKGxldFxyXG4gIFtbYnJhbmNoIG1hdGNoXVxyXG4gICAocy9jb25mb3JtIDpleHBvdW5kLnNwZWMvY29udGFpbnMta2V5LXByZWQgKG50aCBmb3JtIDIpKV1cclxuICAoY2FzZVxyXG4gICBicmFuY2hcclxuICAgOnNpbXBsZVxyXG4gICAoOmt3IG1hdGNoKVxyXG4gICA6Y29tcG91bmRcclxuICAgKHN1bW1hcml6ZS1rZXktY2xhdXNlIFticmFuY2ggbWF0Y2hdKSkpKVxyXG4ifSB7OnN5bSBpbmRlbnQtbGV2ZWwsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIGluZGVudC1sZXZlbCAyKVxyXG4ifSB7OnN5bSBtYXgtc3BlYy1zdHItd2lkdGgsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIG1heC1zcGVjLXN0ci13aWR0aCAxMDApXHJcbiJ9IHs6c3ltIGFub24tZm4tc3RyLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBhbm9uLWZuLXN0ciBcIjxhbm9ueW1vdXMgZnVuY3Rpb24+XCIpXHJcbiJ9IHs6c3ltIHByaW50LXNwZWMta2V5cywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwcm9ibGVtc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHByaW50LXNwZWMta2V5c1xyXG4gW3Byb2JsZW1zXVxyXG4gKGxldFxyXG4gIFtrZXlzXHJcbiAgIChrZXl3b3Jkc1xyXG4gICAgKG1hcFxyXG4gICAgIChmbiogW3AxX180MTYyNyNdIChtaXNzaW5nLWtleSAoOnByZWQgcDFfXzQxNjI3IykpKVxyXG4gICAgIHByb2JsZW1zKSldXHJcbiAgKGlmXHJcbiAgIChhbmRcclxuICAgIChlbXB0eT8gKDpleHBvdW5kL3ZpYSAoZmlyc3QgcHJvYmxlbXMpKSlcclxuICAgIChzb21lIHNpbXBsZS1rZXl3b3JkPyBrZXlzKSlcclxuICAgbmlsXHJcbiAgICgtPj5cclxuICAgIChrZXktPnNwZWMga2V5cyBwcm9ibGVtcylcclxuICAgIChtYXAgKGZuIFtbayB2XV0ge1wia2V5XCIgaywgXCJzcGVjXCIgKHNpbXBsZS1zcGVjLW9yLW5hbWUgdil9KSlcclxuICAgIChzb3J0LWJ5IChmbiogW3AxX180MTYyOCNdIChnZXQgcDFfXzQxNjI4IyBcImtleVwiKSkpXHJcbiAgICAocHByaW50L3ByaW50LXRhYmxlIFtcImtleVwiIFwic3BlY1wiXSlcclxuICAgIHdpdGgtb3V0LXN0clxyXG4gICAgc3RyaW5nL3RyaW0pKSkpXHJcbiJ9IHs6c3ltIHNpbmdsZXRvbj8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeHNdKX0sIDpzb3VyY2UgIihkZWZuIHNpbmdsZXRvbj8gW3hzXSAoPSAxIChjb3VudCB4cykpKVxyXG4ifSB7OnN5bSBpbmRlbnQsIDptZXRhIHs6ZG9jICJHaXZlbiBhbiBwb3RlbnRpYWxseSBtdWx0aS1saW5lIHN0cmluZywgcmV0dXJucyB0aGF0IHN0cmluZyBpbmRlbnRlZCBieVxuICAgJ2luZGVudC1sZXZlbCcgc3BhY2VzLiBPcHRpb25hbGx5LCBjYW4gaW5kZW50IGZpcnN0IGxpbmUgYW5kIG90aGVyIGxpbmVzXG4gICBkaWZmZXJlbnQgYW1vdW50cy4iLCA6YXJnbGlzdHMgW1tzXSBbaW5kZW50LWxldmVsIHNdIFtmaXJzdC1saW5lLWluZGVudCByZXN0LWxpbmVzLWluZGVudCBzXV19LCA6c291cmNlICIoZGVmblxyXG4gaW5kZW50XHJcbiBcIkdpdmVuIGFuIHBvdGVudGlhbGx5IG11bHRpLWxpbmUgc3RyaW5nLCByZXR1cm5zIHRoYXQgc3RyaW5nIGluZGVudGVkIGJ5XFxuICAgJ2luZGVudC1sZXZlbCcgc3BhY2VzLiBPcHRpb25hbGx5LCBjYW4gaW5kZW50IGZpcnN0IGxpbmUgYW5kIG90aGVyIGxpbmVzXFxuICAgZGlmZmVyZW50IGFtb3VudHMuXCJcclxuIChbc10gKGluZGVudCBpbmRlbnQtbGV2ZWwgcykpXHJcbiAoW2luZGVudC1sZXZlbCBzXSAoaW5kZW50IGluZGVudC1sZXZlbCBpbmRlbnQtbGV2ZWwgcykpXHJcbiAoW2ZpcnN0LWxpbmUtaW5kZW50IHJlc3QtbGluZXMtaW5kZW50IHNdXHJcbiAgKGxldFxyXG4gICBbW2xpbmUgJiBsaW5lc10gKHN0cmluZy9zcGxpdC1saW5lcyAoc3RyIHMpKV1cclxuICAgKC0+PlxyXG4gICAgbGluZXNcclxuICAgIChtYXBcclxuICAgICAoZm4qXHJcbiAgICAgIFtwMV9fNDE2MzAjXVxyXG4gICAgICAoc3RyIChhcHBseSBzdHIgKHJlcGVhdCByZXN0LWxpbmVzLWluZGVudCBcIiBcIikpIHAxX180MTYzMCMpKSlcclxuICAgIChpbnRvIFsoc3RyIChhcHBseSBzdHIgKHJlcGVhdCBmaXJzdC1saW5lLWluZGVudCBcIiBcIikpIGxpbmUpXSlcclxuICAgIChzdHJpbmcvam9pbiBcIlxcblwiKSkpKSlcclxuIn0gezpzeW0gc2ltcGxlLXNwZWMtb3ItbmFtZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzcGVjLW5hbWVdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBzaW1wbGUtc3BlYy1vci1uYW1lXHJcbiBbc3BlYy1uYW1lXVxyXG4gKGxldFxyXG4gIFtzcGVjLXN0clxyXG4gICAoZWxpZGUtc3BlYy1ucyAoZWxpZGUtY29yZS1ucyAocHItc3RyIChleHBhbmQtc3BlYyBzcGVjLW5hbWUpKSkpXVxyXG4gIChpZlxyXG4gICAob3JcclxuICAgICg8IG1heC1zcGVjLXN0ci13aWR0aCAoY291bnQgc3BlYy1zdHIpKVxyXG4gICAgKHN0cmluZy9pbmNsdWRlcz8gc3BlYy1zdHIgXCJcXG5cIikpXHJcbiAgIHNwZWMtbmFtZVxyXG4gICBzcGVjLXN0cikpKVxyXG4ifSB7OnN5bSBzcGVjcy1mcm9tLWZvcm0sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdmlhXSl9LCA6c291cmNlICIoZGVmblxyXG4gc3BlY3MtZnJvbS1mb3JtXHJcbiBbdmlhXVxyXG4gKGxldFxyXG4gIFtmb3JtXHJcbiAgIChzb21lLT4gdmlhIGxhc3Qgcy9mb3JtKVxyXG4gICBjb25mb3JtZWRcclxuICAgKHMvY29uZm9ybSA6ZXhwb3VuZC5zcGVjL2tleS1zcGVjIGZvcm0pXVxyXG4gIChpZlxyXG4gICAoYW5kIGZvcm0gKG5vdD0gOmNsb2p1cmUuc3BlYy5hbHBoYS9pbnZhbGlkIGNvbmZvcm1lZCkpXHJcbiAgICgtPj5cclxuICAgICg6Y2xhdXNlcyBjb25mb3JtZWQpXHJcbiAgICAobWFwIDpzcGVjcylcclxuICAgICh0cmVlLXNlcSBjb2xsPyBzZXEpXHJcbiAgICAoZmlsdGVyIChmbiBbeF0gKGFuZCAodmVjdG9yPyB4KSAoPSA6a3cgKGZpcnN0IHgpKSkpKVxyXG4gICAgKG1hcCBzZWNvbmQpXHJcbiAgICBzZXQpXHJcbiAgICN7fSkpKVxyXG4ifSB7OnN5bSBlbGlkZS1zcGVjLW5zLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBlbGlkZS1zcGVjLW5zXHJcbiBbc11cclxuICM/KDpjbGpzICgtPiBzIChzdHJpbmcvcmVwbGFjZSBcImNsanMuc3BlYy5hbHBoYS9cIiBcIlwiKSAoc3RyaW5nL3JlcGxhY2UgXCJjbGpzL3NwZWMvYWxwaGFcIiBcIlwiKSkgOmNsaiAoc3RyaW5nL3JlcGxhY2UgcyBcImNsb2p1cmUuc3BlYy5hbHBoYS9cIiBcIlwiKSkpXHJcbiJ9IHs6c3ltIGtleS0+c3BlYywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtrZXlzIHByb2JsZW1zXSl9LCA6c291cmNlICIoZGVmblxyXG4ga2V5LT5zcGVjXHJcbiBba2V5cyBwcm9ibGVtc11cclxuIChkb3NlcVxyXG4gIFtwIHByb2JsZW1zXVxyXG4gIChhc3NlcnQgKHNvbWU/ICg6ZXhwb3VuZC92aWEgcCkpIHV0aWwvYXNzZXJ0LW1lc3NhZ2UpKVxyXG4gKGxldFxyXG4gIFt2aWFzXHJcbiAgIChtYXAgOmV4cG91bmQvdmlhIHByb2JsZW1zKVxyXG4gICBzcGVjc1xyXG4gICAoaWZcclxuICAgIChldmVyeT8gcXVhbGlmaWVkLWtleXdvcmQ/IGtleXMpXHJcbiAgICBrZXlzXHJcbiAgICAoaWYtbGV0XHJcbiAgICAgW3NwZWNzIChhcHBseSBzZXQvdW5pb24gKG1hcCBzcGVjcy1mcm9tLWZvcm0gdmlhcykpXVxyXG4gICAgIHNwZWNzXHJcbiAgICAga2V5cykpXVxyXG4gIChyZWR1Y2VcclxuICAgKGZuXHJcbiAgICBbbSBrXVxyXG4gICAgKGFzc29jXHJcbiAgICAgbVxyXG4gICAgIGtcclxuICAgICAoaWZcclxuICAgICAgKHF1YWxpZmllZC1rZXl3b3JkPyBrKVxyXG4gICAgICBrXHJcbiAgICAgICgtPj5cclxuICAgICAgIHNwZWNzXHJcbiAgICAgICAoZmlsdGVyIChmbiogW3AxX180MTYyNiNdICg9IChuYW1lIGspIChuYW1lIHAxX180MTYyNiMpKSkpXHJcbiAgICAgICBmaXJzdCkpKSlcclxuICAge31cclxuICAga2V5cykpKVxyXG4ifSB7OnN5bSBlbGlkZS1jb3JlLW5zLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBlbGlkZS1jb3JlLW5zXHJcbiBbc11cclxuICM/KDpjbGpzICgtPiBzIChzdHJpbmcvcmVwbGFjZSBcImNsanMuY29yZS9cIiBcIlwiKSAoc3RyaW5nL3JlcGxhY2UgXCJjbGpzL2NvcmUvXCIgXCJcIikpIDpjbGogKHN0cmluZy9yZXBsYWNlIHMgXCJjbG9qdXJlLmNvcmUvXCIgXCJcIikpKVxyXG4ifSB7OnN5bSBwcmludC1taXNzaW5nLWtleXMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcHJvYmxlbXNdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBwcmludC1taXNzaW5nLWtleXNcclxuIFtwcm9ibGVtc11cclxuIChsZXRcclxuICBba2V5cy1jbGF1c2VzIChkaXN0aW5jdCAobWFwIChjb21wIG1pc3Npbmcta2V5IDpwcmVkKSBwcm9ibGVtcykpXVxyXG4gIChpZlxyXG4gICAoZXZlcnk/IGtleXdvcmQ/IGtleXMtY2xhdXNlcylcclxuICAgKHN0cmluZy9qb2luXHJcbiAgICBcIiwgXCJcclxuICAgIChtYXBcclxuICAgICAoZm4qIFtwMV9fNDE2MjkjXSAoYW5zaS9jb2xvciBwMV9fNDE2MjkjIDpjb3JyZWN0LWtleSkpXHJcbiAgICAgKHNvcnQga2V5cy1jbGF1c2VzKSkpXHJcbiAgIChzdHJcclxuICAgIFwiXFxuXFxuXCJcclxuICAgIChhbnNpL2NvbG9yXHJcbiAgICAgKHBwcmludC1zdHJcclxuICAgICAgKGlmXHJcbiAgICAgICAoc2luZ2xldG9uPyBrZXlzLWNsYXVzZXMpXHJcbiAgICAgICAoZmlyc3Qga2V5cy1jbGF1c2VzKVxyXG4gICAgICAgKGFwcGx5IGxpc3QgJ2FuZCBrZXlzLWNsYXVzZXMpKSlcclxuICAgICA6Y29ycmVjdC1rZXkpKSkpKVxyXG4ifSB7OnN5bSBleHBhbmQtc3BlYywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzcGVjXSl9LCA6c291cmNlICIoZGVmblxyXG4gZXhwYW5kLXNwZWNcclxuIFtzcGVjXVxyXG4gKGxldFxyXG4gIFshc2Vlbi1zcGVjcyAoYXRvbSAje30pXVxyXG4gICh3YWxrL3ByZXdhbGtcclxuICAgKGZuXHJcbiAgICBbeF1cclxuICAgIChpZi1ub3RcclxuICAgICAocXVhbGlmaWVkLWtleXdvcmQ/IHgpXHJcbiAgICAgeFxyXG4gICAgIChpZi1sZXRcclxuICAgICAgW3NwIChzL2dldC1zcGVjIHgpXVxyXG4gICAgICAoaWYtbm90XHJcbiAgICAgICAoY29udGFpbnM/IEAhc2Vlbi1zcGVjcyB4KVxyXG4gICAgICAgKGRvIChzd2FwISAhc2Vlbi1zcGVjcyBjb25qIHgpIChzL2Zvcm0gc3ApKVxyXG4gICAgICAgeClcclxuICAgICAgeCkpKVxyXG4gICAoaWYgKHMvZ2V0LXNwZWMgc3BlYykgKHMvZm9ybSBzcGVjKSBzcGVjKSkpKVxyXG4ifSB7OnN5bSBrZXl3b3JkcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmb3JtXSl9LCA6c291cmNlICIoZGVmblxyXG4ga2V5d29yZHNcclxuIFtmb3JtXVxyXG4gKC0+PiBmb3JtICh0cmVlLXNlcSBjb2xsPyBzZXEpIChmaWx0ZXIga2V5d29yZD8pKSlcclxuIn0gezpzeW0gbm8tdHJhaWxpbmctd2hpdGVzcGFjZSwgOm1ldGEgezpkb2MgIkdpdmVuIGFuIHBvdGVudGlhbGx5IG11bHRpLWxpbmUgc3RyaW5nLCByZXR1cm5zIHRoYXQgc3RyaW5nIHdpdGggYWxsXG4gIHRyYWlsaW5nIHdoaXRlc3BhY2UgcmVtb3ZlZC4iLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxyXG4gbm8tdHJhaWxpbmctd2hpdGVzcGFjZVxyXG4gXCJHaXZlbiBhbiBwb3RlbnRpYWxseSBtdWx0aS1saW5lIHN0cmluZywgcmV0dXJucyB0aGF0IHN0cmluZyB3aXRoIGFsbFxcbiAgdHJhaWxpbmcgd2hpdGVzcGFjZSByZW1vdmVkLlwiXHJcbiBbc11cclxuIChsZXRcclxuICBbcycgKC0+PiBzIHN0cmluZy9zcGxpdC1saW5lcyAobWFwIHN0cmluZy90cmltcikgKHN0cmluZy9qb2luIFwiXFxuXCIpKV1cclxuICAoaWYgKD0gXFxuZXdsaW5lIChsYXN0IHMpKSAoc3RyIHMnIFwiXFxuXCIpIHMnKSkpXHJcbiJ9IHs6c3ltIHBwcmludC1zdHIsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBwcmV0dHktcHJpbnRlZCBzdHJpbmciLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxyXG4gcHByaW50LXN0clxyXG4gXCJSZXR1cm5zIHRoZSBwcmV0dHktcHJpbnRlZCBzdHJpbmdcIlxyXG4gW3hdXHJcbiAoaWYgKGZuPyB4KSAocHByaW50LWZuIHgpIChwcHJpbnQvd3JpdGUgeCA6c3RyZWFtIG5pbCkpKVxyXG4ifSB7OnN5bSBzdW1tYXJpemUta2V5LWNsYXVzZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtbYnJhbmNoIG1hdGNoXV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHN1bW1hcml6ZS1rZXktY2xhdXNlXHJcbiBbW2JyYW5jaCBtYXRjaF1dXHJcbiAoY2FzZVxyXG4gIGJyYW5jaFxyXG4gIDpzaW1wbGVcclxuICAoOmt3IG1hdGNoKVxyXG4gIDpjb21wb3VuZFxyXG4gIChhcHBseVxyXG4gICBsaXN0XHJcbiAgIChzeW1ib2wgKG5hbWUgKDpvcCBtYXRjaCkpKVxyXG4gICAobWFwIHN1bW1hcml6ZS1rZXktY2xhdXNlICg6Y2xhdXNlcyBtYXRjaCkpKSkpXHJcbiJ9IHs6c3ltIHBwcmludC1mbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmXSl9LCA6c291cmNlICIoZGVmblxyXG4gcHByaW50LWZuXHJcbiBbZl1cclxuICgtPlxyXG4gICM/KDpjbGogKGxldCBbW18gbnMtbiBmLW5dIChyZS1tYXRjaGVzICNcIiguKilcXCQoLio/KShfX1swLTldKyk/XCIgKHN0ciBmKSldIChpZiAocmUtbWF0Y2hlcyAjXCJeZm5fX1xcZCtcXEAuKiRcIiBmLW4pIGFub24tZm4tc3RyIChzdHIgKG1haW4vZGVtdW5nZSBucy1uKSBcIi9cIiAobWFpbi9kZW11bmdlIGYtbikpKSkgOmNsanMgKGxldCBbZm4tcGFydHMgKHN0cmluZy9zcGxpdCAoc2Vjb25kIChyZS1maW5kICNcIm9iamVjdFxcWyhbXlxcKCBcXF1dKykuKihcXG58XFxdKT9cIiAocHItc3RyIGYpKSkgI1wiXFwkXCIpIG5zLW4gKHN0cmluZy9qb2luIFwiLlwiIChidXRsYXN0IGZuLXBhcnRzKSkgZm4tbiAobGFzdCBmbi1wYXJ0cyldIChpZiAoZW1wdHk/IG5zLW4pIGFub24tZm4tc3RyIChzdHIgKGRlbXVuZ2Utc3RyIG5zLW4pIFwiL1wiIChkZW11bmdlLXN0ciBmbi1uKSkpKSlcclxuICAoZWxpZGUtY29yZS1ucylcclxuICAoc3RyaW5nL3JlcGxhY2UgI1wiLS1cXGQrXCIgXCJcIilcclxuICAoc3RyaW5nL3JlcGxhY2UgI1wiQFthLXpBLVowLTldK1wiIFwiXCIpKSlcclxuIn0pLCBodG1sLXNvdXAuY29yZSAoezpzeW0gZXNjYXBlLWh0bWwtc3RyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBlc2NhcGUtaHRtbC1zdHJcclxuIFtzXVxyXG4gKHN0ci9lc2NhcGVcclxuICBzXHJcbiAge1xcPCBcIiZsdDtcIiwgXFw+IFwiJmd0O1wiLCBcXCYgXCImYW1wO1wiLCBcXFwiIFwiJnF1b3Q7XCIsIFxcJyBcIiZhcG9zO1wifSkpXHJcbiJ9IHs6c3ltIG5vZGUtPmh0bWwsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbW3R5cGUgJiB0b2tlbnMgOmFzIG5vZGVdXSl9LCA6c291cmNlICIoZGVmblxyXG4gbm9kZS0+aHRtbFxyXG4gW1t0eXBlICYgdG9rZW5zIDphcyBub2RlXV1cclxuIChsZXRcclxuICBbZXJyb3JcclxuICAgKC0+IG5vZGUgbWV0YSA6ZXJyb3ItbWVzc2FnZSlcclxuICAgaW5uZXItc3RyXHJcbiAgIChzdHJcclxuICAgIChzdHIvam9pbiB0b2tlbnMpXHJcbiAgICAod2hlblxyXG4gICAgIGVycm9yXHJcbiAgICAgKHN0clxyXG4gICAgICBcIjxzcGFuIGNsYXNzPSdlcnJvcicgZGF0YS1tZXNzYWdlPSdcIlxyXG4gICAgICAoZXNjYXBlLWh0bWwtc3RyIGVycm9yKVxyXG4gICAgICBcIic+PC9zcGFuPlwiKSkpXVxyXG4gIChpZlxyXG4gICAoLT4gbm9kZSBtZXRhIDp3aGl0ZXNwYWNlPylcclxuICAgaW5uZXItc3RyXHJcbiAgIChzdHIgXCI8c3BhbiBjbGFzcz0nXCIgKG5hbWUgdHlwZSkgXCInPlwiIGlubmVyLXN0ciBcIjwvc3Bhbj5cIikpKSlcclxuIn0gezpzeW0gY29kZS0+aHRtbCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGNvZGUgaW4gdGhlIGdpdmVuIHN0cmluZyB3aXRoIGh0bWwgYWRkZWQuIiwgOmFyZ2xpc3RzIChbY29kZV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGNvZGUtPmh0bWxcclxuIFwiUmV0dXJucyB0aGUgY29kZSBpbiB0aGUgZ2l2ZW4gc3RyaW5nIHdpdGggaHRtbCBhZGRlZC5cIlxyXG4gW2NvZGVdXHJcbiAoLT4+IChwcy9wYXJzZSBjb2RlKSAocHMvZmxhdHRlbiBub2RlLT5odG1sKSBzdHIvam9pbikpXHJcbiIsIDpleGFtcGxlcyBbezpib2R5IChjb2RlLT5odG1sICIoKyAxIDIpIiksIDpib2R5LXN0ciAiKGNvZGUtPmh0bWwgXCIoKyAxIDIpXCIpXHJcbiIsIDppZCAiaHRtbC1zb3VwLmNvcmUvY29kZS0+aHRtbC8wIn1dfSB7OnN5bSBub2RlLT5oaWNjdXAsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbW3R5cGUgJiB0b2tlbnMgOmFzIG5vZGVdXSl9LCA6c291cmNlICIoZGVmblxyXG4gbm9kZS0+aGljY3VwXHJcbiBbW3R5cGUgJiB0b2tlbnMgOmFzIG5vZGVdXVxyXG4gKGxldFxyXG4gIFtlcnJvciAoLT4gbm9kZSBtZXRhIDplcnJvci1tZXNzYWdlKV1cclxuICAoaWZcclxuICAgKC0+IG5vZGUgbWV0YSA6d2hpdGVzcGFjZT8pXHJcbiAgIChmaXJzdCB0b2tlbnMpXHJcbiAgIChjb25kLT5cclxuICAgIChpbnRvIFs6c3BhbiB7OmNsYXNzIChuYW1lIHR5cGUpfV0gdG9rZW5zKVxyXG4gICAgZXJyb3JcclxuICAgIChjb25qIFs6ZXJyb3IgZXJyb3JdKSkpKSlcclxuIn0gezpzeW0gY29kZS0+aGljY3VwLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgY29kZSBpbiB0aGUgZ2l2ZW4gc3RyaW5nIHdpdGggSGljY3VwLWNvbXBhdGlibGUgZGF0YSBzdHJ1Y3R1cmVzIGFkZGVkLiIsIDphcmdsaXN0cyAoW2NvZGVdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBjb2RlLT5oaWNjdXBcclxuIFwiUmV0dXJucyB0aGUgY29kZSBpbiB0aGUgZ2l2ZW4gc3RyaW5nIHdpdGggSGljY3VwLWNvbXBhdGlibGUgZGF0YSBzdHJ1Y3R1cmVzIGFkZGVkLlwiXHJcbiBbY29kZV1cclxuICgtPj4gKHBzL3BhcnNlIGNvZGUpIChwcy9mbGF0dGVuIG5vZGUtPmhpY2N1cCkgKGludG8gWzpzcGFuIHt9XSkpKVxyXG4iLCA6ZXhhbXBsZXMgW3s6Ym9keSAoY29kZS0+aGljY3VwICIoKyAxIDIpIiksIDpib2R5LXN0ciAiKGNvZGUtPmhpY2N1cCBcIigrIDEgMilcIilcclxuIiwgOmlkICJodG1sLXNvdXAuY29yZS9jb2RlLT5oaWNjdXAvMCJ9XX0pLCBvYWtjbGpzLnRvb2xzLnJlYWRlciAoezpzeW0gcmVhZCtzdHJpbmcsIDptZXRhIHs6ZG9jICJMaWtlIHJlYWQsIGFuZCB0YWtpbmcgdGhlIHNhbWUgYXJncy4gcmVhZGVyIG11c3QgYmUgYSBTb3VyY2VMb2dnaW5nUHVzaGJhY2tSZWFkZXIuXG4gIFJldHVybnMgYSB2ZWN0b3IgY29udGFpbmluZyB0aGUgb2JqZWN0IHJlYWQgYW5kIHRoZSAod2hpdGVzcGFjZS10cmltbWVkKSBzdHJpbmcgcmVhZC4iLCA6YXJnbGlzdHMgW1tzdHJlYW1dIFtzdHJlYW0gZW9mLWVycm9yPyBlb2YtdmFsdWVdIFtvcHRzIHN0cmVhbV1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlYWQrc3RyaW5nXHJcbiBcIkxpa2UgcmVhZCwgYW5kIHRha2luZyB0aGUgc2FtZSBhcmdzLiByZWFkZXIgbXVzdCBiZSBhIFNvdXJjZUxvZ2dpbmdQdXNoYmFja1JlYWRlci5cXG4gIFJldHVybnMgYSB2ZWN0b3IgY29udGFpbmluZyB0aGUgb2JqZWN0IHJlYWQgYW5kIHRoZSAod2hpdGVzcGFjZS10cmltbWVkKSBzdHJpbmcgcmVhZC5cIlxyXG4gKFtzdHJlYW1dIChyZWFkK3N0cmluZyBzdHJlYW0gdHJ1ZSBuaWwpKVxyXG4gKFtzdHJlYW0gZW9mLWVycm9yPyBlb2YtdmFsdWVdXHJcbiAgKGxldFxyXG4gICBbYnVmXHJcbiAgICAoZm4gW3JlYWRlcl0gKHN0ciAoOmJ1ZmZlciBAKC4tZnJhbWVzIHN0cmVhbSkpKSlcclxuICAgIG9mZnNldFxyXG4gICAgKGNvdW50IChidWYgc3RyZWFtKSlcclxuICAgIG9cclxuICAgIChsb2ctc291cmNlIHN0cmVhbSAocmVhZCBzdHJlYW0gZW9mLWVycm9yPyBlb2YtdmFsdWUpKVxyXG4gICAgc1xyXG4gICAgKC50cmltIChzdWJzIChidWYgc3RyZWFtKSBvZmZzZXQpKV1cclxuICAgW28gc10pKVxyXG4gKFtvcHRzIHN0cmVhbV1cclxuICAobGV0XHJcbiAgIFtidWZcclxuICAgIChmbiBbcmVhZGVyXSAoc3RyICg6YnVmZmVyIEAoLi1mcmFtZXMgc3RyZWFtKSkpKVxyXG4gICAgb2Zmc2V0XHJcbiAgICAoY291bnQgKGJ1ZiBzdHJlYW0pKVxyXG4gICAgb1xyXG4gICAgKGxvZy1zb3VyY2Ugc3RyZWFtIChyZWFkIG9wdHMgc3RyZWFtKSlcclxuICAgIHNcclxuICAgICgudHJpbSAoc3VicyAoYnVmIHN0cmVhbSkgb2Zmc2V0KSldXHJcbiAgIFtvIHNdKSkpXHJcbiJ9IHs6c3ltIGJvb2w/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGJvb2w/IFt4XSAob3IgKGluc3RhbmNlPyBqcy9Cb29sZWFuIHgpICh0cnVlPyB4KSAoZmFsc2U/IHgpKSlcclxuIn0gezpzeW0gKnN1cHByZXNzLXJlYWQqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqc3VwcHJlc3MtcmVhZCogZmFsc2UpXHJcbiJ9IHs6c3ltICpkZWZhdWx0LWRhdGEtcmVhZGVyLWZuKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcclxuICpkZWZhdWx0LWRhdGEtcmVhZGVyLWZuKlxyXG4gXCJXaGVuIG5vIGRhdGEgcmVhZGVyIGlzIGZvdW5kIGZvciBhIHRhZyBhbmQgKmRlZmF1bHQtZGF0YS1yZWFkZXItZm4qXFxuICBpcyBub24tbmlsLCBpdCB3aWxsIGJlIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHMsIHRoZSB0YWcgYW5kIHRoZSB2YWx1ZS5cXG4gIElmICpkZWZhdWx0LWRhdGEtcmVhZGVyLWZuKiBpcyBuaWwgKHRoZSBkZWZhdWx0IHZhbHVlKSwgYW4gZXhjZXB0aW9uXFxuICB3aWxsIGJlIHRocm93biBmb3IgdGhlIHVua25vd24gdGFnLlwiXHJcbiAoZm4gW3RhZyB2YWx1ZV0pKVxyXG4ifSB7OnN5bSByZWFkLCA6bWV0YSB7OmRvYyAiUmVhZHMgdGhlIGZpcnN0IG9iamVjdCBmcm9tIGFuIElQdXNoYmFja1JlYWRlci5cbiAgIFJldHVybnMgdGhlIG9iamVjdCByZWFkLiBJZiBFT0YsIHRocm93cyBpZiBlb2YtZXJyb3I/IGlzIHRydWUuXG4gICBPdGhlcndpc2UgcmV0dXJucyBzZW50aW5lbC4gSWYgbm8gc3RyZWFtIGlzIHByb3ZpZGVkLCAqaW4qIHdpbGwgYmUgdXNlZC5cblxuICAgT3B0cyBpcyBhIHBlcnNpc3RlbnQgbWFwIHdpdGggdmFsaWQga2V5czpcbiAgICA6cmVhZC1jb25kIC0gOmFsbG93IHRvIHByb2Nlc3MgcmVhZGVyIGNvbmRpdGlvbmFscywgb3JcbiAgICAgICAgICAgICAgICAgOnByZXNlcnZlIHRvIGtlZXAgYWxsIGJyYW5jaGVzXG4gICAgOmZlYXR1cmVzIC0gcGVyc2lzdGVudCBzZXQgb2YgZmVhdHVyZSBrZXl3b3JkcyBmb3IgcmVhZGVyIGNvbmRpdGlvbmFsc1xuICAgIDplb2YgLSBvbiBlb2YsIHJldHVybiB2YWx1ZSB1bmxlc3MgOmVvZnRocm93LCB0aGVuIHRocm93LlxuICAgICAgICAgICBpZiBub3Qgc3BlY2lmaWVkLCB3aWxsIHRocm93XG5cbiAgIFRvIHJlYWQgZGF0YSBzdHJ1Y3R1cmVzIG9ubHksIHVzZSBjbGpzLnRvb2xzLnJlYWRlci5lZG4vcmVhZFxuXG4gICBOb3RlIHRoYXQgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSBvZiBjbGpzLnRvb2xzLnJlYWRlci9yZWFkIGFuZFxuICAgY2xqcy50b29scy5yZWFkZXIuZWRuL3JlYWQgaXMgbm90IHRoZSBzYW1lIGZvciBlb2YtaGFuZGxpbmciLCA6YXJnbGlzdHMgW1tyZWFkZXJdIFt7ZW9mIDplb2YsIDphcyBvcHRzLCA6b3Ige2VvZiA6ZW9mdGhyb3d9fSByZWFkZXJdIFtyZWFkZXIgZW9mLWVycm9yPyBzZW50aW5lbF1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlYWRcclxuIFwiUmVhZHMgdGhlIGZpcnN0IG9iamVjdCBmcm9tIGFuIElQdXNoYmFja1JlYWRlci5cXG4gICBSZXR1cm5zIHRoZSBvYmplY3QgcmVhZC4gSWYgRU9GLCB0aHJvd3MgaWYgZW9mLWVycm9yPyBpcyB0cnVlLlxcbiAgIE90aGVyd2lzZSByZXR1cm5zIHNlbnRpbmVsLiBJZiBubyBzdHJlYW0gaXMgcHJvdmlkZWQsICppbiogd2lsbCBiZSB1c2VkLlxcblxcbiAgIE9wdHMgaXMgYSBwZXJzaXN0ZW50IG1hcCB3aXRoIHZhbGlkIGtleXM6XFxuICAgIDpyZWFkLWNvbmQgLSA6YWxsb3cgdG8gcHJvY2VzcyByZWFkZXIgY29uZGl0aW9uYWxzLCBvclxcbiAgICAgICAgICAgICAgICAgOnByZXNlcnZlIHRvIGtlZXAgYWxsIGJyYW5jaGVzXFxuICAgIDpmZWF0dXJlcyAtIHBlcnNpc3RlbnQgc2V0IG9mIGZlYXR1cmUga2V5d29yZHMgZm9yIHJlYWRlciBjb25kaXRpb25hbHNcXG4gICAgOmVvZiAtIG9uIGVvZiwgcmV0dXJuIHZhbHVlIHVubGVzcyA6ZW9mdGhyb3csIHRoZW4gdGhyb3cuXFxuICAgICAgICAgICBpZiBub3Qgc3BlY2lmaWVkLCB3aWxsIHRocm93XFxuXFxuICAgVG8gcmVhZCBkYXRhIHN0cnVjdHVyZXMgb25seSwgdXNlIGNsanMudG9vbHMucmVhZGVyLmVkbi9yZWFkXFxuXFxuICAgTm90ZSB0aGF0IHRoZSBmdW5jdGlvbiBzaWduYXR1cmUgb2YgY2xqcy50b29scy5yZWFkZXIvcmVhZCBhbmRcXG4gICBjbGpzLnRvb2xzLnJlYWRlci5lZG4vcmVhZCBpcyBub3QgdGhlIHNhbWUgZm9yIGVvZi1oYW5kbGluZ1wiXHJcbiB7OmFyZ2xpc3RzICcoW3JlYWRlcl0gW29wdHMgcmVhZGVyXSBbcmVhZGVyIGVvZi1lcnJvcj8gZW9mLXZhbHVlXSl9XHJcbiAoW3JlYWRlcl0gKHJlYWQgcmVhZGVyIHRydWUgbmlsKSlcclxuIChbe2VvZiA6ZW9mLCA6YXMgb3B0cywgOm9yIHtlb2YgOmVvZnRocm93fX0gcmVhZGVyXVxyXG4gIChyZWFkKiByZWFkZXIgKD0gZW9mIDplb2Z0aHJvdykgZW9mIG5pbCBvcHRzICh0by1hcnJheSBbXSkpKVxyXG4gKFtyZWFkZXIgZW9mLWVycm9yPyBzZW50aW5lbF1cclxuICAocmVhZCogcmVhZGVyIGVvZi1lcnJvcj8gc2VudGluZWwgbmlsIHt9ICh0by1hcnJheSBbXSkpKSlcclxuIn0gezpzeW0gZGVmYXVsdC1kYXRhLXJlYWRlcnMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXHJcbiBkZWZhdWx0LWRhdGEtcmVhZGVyc1xyXG4gXCJEZWZhdWx0IG1hcCBvZiBkYXRhIHJlYWRlciBmdW5jdGlvbnMgcHJvdmlkZWQgYnkgQ2xvanVyZS5cXG4gIE1heSBiZSBvdmVycmlkZGVuIGJ5IGJpbmRpbmcgKmRhdGEtcmVhZGVycypcIlxyXG4ge30pXHJcbiJ9IHs6c3ltICpkYXRhLXJlYWRlcnMqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxyXG4gKmRhdGEtcmVhZGVycypcclxuIFwiTWFwIGZyb20gcmVhZGVyIHRhZyBzeW1ib2xzIHRvIGRhdGEgcmVhZGVyIFZhcnMuXFxuICBSZWFkZXIgdGFncyB3aXRob3V0IG5hbWVzcGFjZSBxdWFsaWZpZXJzIGFyZSByZXNlcnZlZCBmb3IgQ2xvanVyZS5cXG4gIFRoaXMgbGlnaHQgdmVyc2lvbiBvZiB0b29scy5yZWFkZXIgaGFzIG5vIGltcGxlbWVudGF0aW9uIGZvciBkZWZhdWx0XFxuICByZWFkZXIgdGFncyBzdWNoIGFzICNpbnN0IGFuZCAjdXVpZC5cIlxyXG4ge30pXHJcbiJ9IHs6c3ltICpyZWFkLWRlbGltKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKnJlYWQtZGVsaW0qIGZhbHNlKVxyXG4ifSB7OnN5bSByZXNvbHZlLXN5bWJvbCwgOm1ldGEgezpkb2MgIlJlc29sdmUgYSBzeW1ib2wgcyBpbnRvIGl0cyBmdWxseSBxdWFsaWZpZWQgbmFtZXNwYWNlIHZlcnNpb24iLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxyXG4gcmVzb2x2ZS1zeW1ib2xcclxuIFwiUmVzb2x2ZSBhIHN5bWJvbCBzIGludG8gaXRzIGZ1bGx5IHF1YWxpZmllZCBuYW1lc3BhY2UgdmVyc2lvblwiXHJcbiBbc11cclxuIHMpXHJcbiJ9IHs6c3ltICphbGlhcy1tYXAqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxyXG4gKmFsaWFzLW1hcCpcclxuIFwiTWFwIGZyb20gbnMgYWxpYXMgdG8gbnMsIGlmIG5vbi1uaWwsIGl0IHdpbGwgYmUgdXNlZCB0byByZXNvbHZlIHJlYWQtdGltZVxcbiAgIG5zIGFsaWFzZXMuXFxuXFxuICAgRGVmYXVsdHMgdG8gbmlsXCJcclxuIG5pbClcclxuIn0gezpzeW0gKndyYXAtdmFsdWUtYW5kLWFkZC1tZXRhZGF0YT8qLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqd3JhcC12YWx1ZS1hbmQtYWRkLW1ldGFkYXRhPyogZmFsc2UpXHJcbiJ9IHs6c3ltIHJlYWQtcmVnZXgsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGNoIG9wdHMgcGVuZGluZy1mb3Jtc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlYWQtcmVnZXhcclxuIFtyZHIgY2ggb3B0cyBwZW5kaW5nLWZvcm1zXVxyXG4gKGxldFxyXG4gIFtzYiAoU3RyaW5nQnVmZmVyLildXHJcbiAgKGxvb3BcclxuICAgW2NoIChyZWFkLWNoYXIgcmRyKV1cclxuICAgKGlmXHJcbiAgICAoaWRlbnRpY2FsPyBcXFwiIGNoKVxyXG4gICAgKHN0ciBzYilcclxuICAgIChpZlxyXG4gICAgIChuaWw/IGNoKVxyXG4gICAgIChlcnIvdGhyb3ctZW9mLXJlYWRpbmcgcmRyIDpyZWdleCBzYilcclxuICAgICAoZG9cclxuICAgICAgKC5hcHBlbmQgc2IgY2gpXHJcbiAgICAgICh3aGVuXHJcbiAgICAgICAoaWRlbnRpY2FsPyBcXFxcIGNoKVxyXG4gICAgICAgKGxldFxyXG4gICAgICAgIFtjaCAocmVhZC1jaGFyIHJkcildXHJcbiAgICAgICAgKGlmIChuaWw/IGNoKSAoZXJyL3Rocm93LWVvZi1yZWFkaW5nIHJkciA6cmVnZXggc2IpKVxyXG4gICAgICAgICguYXBwZW5kIHNiIGNoKSkpXHJcbiAgICAgIChyZWN1ciAocmVhZC1jaGFyIHJkcikpKSkpKSkpXHJcbiJ9IHs6c3ltIHNiLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBzYiAoU3RyaW5nQnVmZmVyLikpXHJcbiJ9IHs6c3ltIHJlYWQtc3RyaW5nLCA6bWV0YSB7OmRvYyAiUmVhZHMgb25lIG9iamVjdCBmcm9tIHRoZSBzdHJpbmcgcy5cbiAgIFJldHVybnMgbmlsIHdoZW4gcyBpcyBuaWwgb3IgZW1wdHkuXG5cbiAgIFRvIHJlYWQgZGF0YSBzdHJ1Y3R1cmVzIG9ubHksIHVzZSBjbGpzLnRvb2xzLnJlYWRlci5lZG4vcmVhZC1zdHJpbmdcblxuICAgTm90ZSB0aGF0IHRoZSBmdW5jdGlvbiBzaWduYXR1cmUgb2YgY2xqcy50b29scy5yZWFkZXIvcmVhZC1zdHJpbmcgYW5kXG4gICBjbGpzLnRvb2xzLnJlYWRlci5lZG4vcmVhZC1zdHJpbmcgaXMgbm90IHRoZSBzYW1lIGZvciBlb2YtaGFuZGxpbmciLCA6YXJnbGlzdHMgW1tzXSBbb3B0cyBzXV19LCA6c291cmNlICIoZGVmblxyXG4gcmVhZC1zdHJpbmdcclxuIFwiUmVhZHMgb25lIG9iamVjdCBmcm9tIHRoZSBzdHJpbmcgcy5cXG4gICBSZXR1cm5zIG5pbCB3aGVuIHMgaXMgbmlsIG9yIGVtcHR5LlxcblxcbiAgIFRvIHJlYWQgZGF0YSBzdHJ1Y3R1cmVzIG9ubHksIHVzZSBjbGpzLnRvb2xzLnJlYWRlci5lZG4vcmVhZC1zdHJpbmdcXG5cXG4gICBOb3RlIHRoYXQgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSBvZiBjbGpzLnRvb2xzLnJlYWRlci9yZWFkLXN0cmluZyBhbmRcXG4gICBjbGpzLnRvb2xzLnJlYWRlci5lZG4vcmVhZC1zdHJpbmcgaXMgbm90IHRoZSBzYW1lIGZvciBlb2YtaGFuZGxpbmdcIlxyXG4gKFtzXSAocmVhZC1zdHJpbmcge30gcykpXHJcbiAoW29wdHMgc11cclxuICAod2hlblxyXG4gICAoYW5kIHMgKG5vdCAoaWRlbnRpY2FsPyBzIFwiXCIpKSlcclxuICAgKHJlYWQgb3B0cyAoc3RyaW5nLXB1c2gtYmFjay1yZWFkZXIgcykpKSkpXHJcbiJ9IHs6c3ltIG1hcC1mdW5jLCA6bWV0YSB7OmRvYyAiRGVjaWRlIHdoaWNoIG1hcCB0eXBlIHRvIHVzZSwgYXJyYXktbWFwIGlmIGxlc3MgdGhhbiAxNiBlbGVtZW50cyIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBtYXAtZnVuY1xyXG4gXCJEZWNpZGUgd2hpY2ggbWFwIHR5cGUgdG8gdXNlLCBhcnJheS1tYXAgaWYgbGVzcyB0aGFuIDE2IGVsZW1lbnRzXCJcclxuIFtjb2xsXVxyXG4gKGlmICg+PSAoY291bnQgY29sbCkgMTYpICdjbGpzLmNvcmUvaGFzaC1tYXAgJ2NsanMuY29yZS9hcnJheS1tYXApKVxyXG4ifSksIGNsanMudG9vbHMucmVhZGVyICh7OnN5bSByZWFkK3N0cmluZywgOm1ldGEgezpkb2MgIkxpa2UgcmVhZCwgYW5kIHRha2luZyB0aGUgc2FtZSBhcmdzLiByZWFkZXIgbXVzdCBiZSBhIFNvdXJjZUxvZ2dpbmdQdXNoYmFja1JlYWRlci5cbiAgUmV0dXJucyBhIHZlY3RvciBjb250YWluaW5nIHRoZSBvYmplY3QgcmVhZCBhbmQgdGhlICh3aGl0ZXNwYWNlLXRyaW1tZWQpIHN0cmluZyByZWFkLiIsIDphcmdsaXN0cyBbW3N0cmVhbV0gW3N0cmVhbSBlb2YtZXJyb3I/IGVvZi12YWx1ZV0gW29wdHMgc3RyZWFtXV19LCA6c291cmNlICIoZGVmblxyXG4gcmVhZCtzdHJpbmdcclxuIFwiTGlrZSByZWFkLCBhbmQgdGFraW5nIHRoZSBzYW1lIGFyZ3MuIHJlYWRlciBtdXN0IGJlIGEgU291cmNlTG9nZ2luZ1B1c2hiYWNrUmVhZGVyLlxcbiAgUmV0dXJucyBhIHZlY3RvciBjb250YWluaW5nIHRoZSBvYmplY3QgcmVhZCBhbmQgdGhlICh3aGl0ZXNwYWNlLXRyaW1tZWQpIHN0cmluZyByZWFkLlwiXHJcbiAoW3N0cmVhbV0gKHJlYWQrc3RyaW5nIHN0cmVhbSB0cnVlIG5pbCkpXHJcbiAoW3N0cmVhbSBlb2YtZXJyb3I/IGVvZi12YWx1ZV1cclxuICAobGV0XHJcbiAgIFtidWZcclxuICAgIChmbiBbcmVhZGVyXSAoc3RyICg6YnVmZmVyIEAoLi1mcmFtZXMgc3RyZWFtKSkpKVxyXG4gICAgb2Zmc2V0XHJcbiAgICAoY291bnQgKGJ1ZiBzdHJlYW0pKVxyXG4gICAgb1xyXG4gICAgKGxvZy1zb3VyY2Ugc3RyZWFtIChyZWFkIHN0cmVhbSBlb2YtZXJyb3I/IGVvZi12YWx1ZSkpXHJcbiAgICBzXHJcbiAgICAoLnRyaW0gKHN1YnMgKGJ1ZiBzdHJlYW0pIG9mZnNldCkpXVxyXG4gICBbbyBzXSkpXHJcbiAoW29wdHMgc3RyZWFtXVxyXG4gIChsZXRcclxuICAgW2J1ZlxyXG4gICAgKGZuIFtyZWFkZXJdIChzdHIgKDpidWZmZXIgQCguLWZyYW1lcyBzdHJlYW0pKSkpXHJcbiAgICBvZmZzZXRcclxuICAgIChjb3VudCAoYnVmIHN0cmVhbSkpXHJcbiAgICBvXHJcbiAgICAobG9nLXNvdXJjZSBzdHJlYW0gKHJlYWQgb3B0cyBzdHJlYW0pKVxyXG4gICAgc1xyXG4gICAgKC50cmltIChzdWJzIChidWYgc3RyZWFtKSBvZmZzZXQpKV1cclxuICAgW28gc10pKSlcclxuIn0gezpzeW0gYm9vbD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gYm9vbD8gW3hdIChvciAoaW5zdGFuY2U/IGpzL0Jvb2xlYW4geCkgKHRydWU/IHgpIChmYWxzZT8geCkpKVxyXG4ifSB7OnN5bSAqc3VwcHJlc3MtcmVhZCosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpzdXBwcmVzcy1yZWFkKiBmYWxzZSlcclxuIn0gezpzeW0gKmRlZmF1bHQtZGF0YS1yZWFkZXItZm4qLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxyXG4gKmRlZmF1bHQtZGF0YS1yZWFkZXItZm4qXHJcbiBcIldoZW4gbm8gZGF0YSByZWFkZXIgaXMgZm91bmQgZm9yIGEgdGFnIGFuZCAqZGVmYXVsdC1kYXRhLXJlYWRlci1mbipcXG4gIGlzIG5vbi1uaWwsIGl0IHdpbGwgYmUgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50cywgdGhlIHRhZyBhbmQgdGhlIHZhbHVlLlxcbiAgSWYgKmRlZmF1bHQtZGF0YS1yZWFkZXItZm4qIGlzIG5pbCAodGhlIGRlZmF1bHQgdmFsdWUpLCBhbiBleGNlcHRpb25cXG4gIHdpbGwgYmUgdGhyb3duIGZvciB0aGUgdW5rbm93biB0YWcuXCJcclxuIG5pbClcclxuIn0gezpzeW0gcmVhZCwgOm1ldGEgezpkb2MgIlJlYWRzIHRoZSBmaXJzdCBvYmplY3QgZnJvbSBhbiBJUHVzaGJhY2tSZWFkZXIuXG4gICBSZXR1cm5zIHRoZSBvYmplY3QgcmVhZC4gSWYgRU9GLCB0aHJvd3MgaWYgZW9mLWVycm9yPyBpcyB0cnVlLlxuICAgT3RoZXJ3aXNlIHJldHVybnMgc2VudGluZWwuIElmIG5vIHN0cmVhbSBpcyBwcm92aWRlZCwgKmluKiB3aWxsIGJlIHVzZWQuXG5cbiAgIE9wdHMgaXMgYSBwZXJzaXN0ZW50IG1hcCB3aXRoIHZhbGlkIGtleXM6XG4gICAgOnJlYWQtY29uZCAtIDphbGxvdyB0byBwcm9jZXNzIHJlYWRlciBjb25kaXRpb25hbHMsIG9yXG4gICAgICAgICAgICAgICAgIDpwcmVzZXJ2ZSB0byBrZWVwIGFsbCBicmFuY2hlc1xuICAgIDpmZWF0dXJlcyAtIHBlcnNpc3RlbnQgc2V0IG9mIGZlYXR1cmUga2V5d29yZHMgZm9yIHJlYWRlciBjb25kaXRpb25hbHNcbiAgICA6ZW9mIC0gb24gZW9mLCByZXR1cm4gdmFsdWUgdW5sZXNzIDplb2Z0aHJvdywgdGhlbiB0aHJvdy5cbiAgICAgICAgICAgaWYgbm90IHNwZWNpZmllZCwgd2lsbCB0aHJvd1xuXG4gICBUbyByZWFkIGRhdGEgc3RydWN0dXJlcyBvbmx5LCB1c2UgY2xvanVyZS50b29scy5yZWFkZXIuZWRuL3JlYWRcblxuICAgTm90ZSB0aGF0IHRoZSBmdW5jdGlvbiBzaWduYXR1cmUgb2YgY2xvanVyZS50b29scy5yZWFkZXIvcmVhZCBhbmRcbiAgIGNsb2p1cmUudG9vbHMucmVhZGVyLmVkbi9yZWFkIGlzIG5vdCB0aGUgc2FtZSBmb3IgZW9mLWhhbmRsaW5nIiwgOmFyZ2xpc3RzIFtbcmVhZGVyXSBbe2VvZiA6ZW9mLCA6YXMgb3B0cywgOm9yIHtlb2YgOmVvZnRocm93fX0gcmVhZGVyXSBbcmVhZGVyIGVvZi1lcnJvcj8gc2VudGluZWxdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiByZWFkXHJcbiBcIlJlYWRzIHRoZSBmaXJzdCBvYmplY3QgZnJvbSBhbiBJUHVzaGJhY2tSZWFkZXIuXFxuICAgUmV0dXJucyB0aGUgb2JqZWN0IHJlYWQuIElmIEVPRiwgdGhyb3dzIGlmIGVvZi1lcnJvcj8gaXMgdHJ1ZS5cXG4gICBPdGhlcndpc2UgcmV0dXJucyBzZW50aW5lbC4gSWYgbm8gc3RyZWFtIGlzIHByb3ZpZGVkLCAqaW4qIHdpbGwgYmUgdXNlZC5cXG5cXG4gICBPcHRzIGlzIGEgcGVyc2lzdGVudCBtYXAgd2l0aCB2YWxpZCBrZXlzOlxcbiAgICA6cmVhZC1jb25kIC0gOmFsbG93IHRvIHByb2Nlc3MgcmVhZGVyIGNvbmRpdGlvbmFscywgb3JcXG4gICAgICAgICAgICAgICAgIDpwcmVzZXJ2ZSB0byBrZWVwIGFsbCBicmFuY2hlc1xcbiAgICA6ZmVhdHVyZXMgLSBwZXJzaXN0ZW50IHNldCBvZiBmZWF0dXJlIGtleXdvcmRzIGZvciByZWFkZXIgY29uZGl0aW9uYWxzXFxuICAgIDplb2YgLSBvbiBlb2YsIHJldHVybiB2YWx1ZSB1bmxlc3MgOmVvZnRocm93LCB0aGVuIHRocm93LlxcbiAgICAgICAgICAgaWYgbm90IHNwZWNpZmllZCwgd2lsbCB0aHJvd1xcblxcbiAgIFRvIHJlYWQgZGF0YSBzdHJ1Y3R1cmVzIG9ubHksIHVzZSBjbG9qdXJlLnRvb2xzLnJlYWRlci5lZG4vcmVhZFxcblxcbiAgIE5vdGUgdGhhdCB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlIG9mIGNsb2p1cmUudG9vbHMucmVhZGVyL3JlYWQgYW5kXFxuICAgY2xvanVyZS50b29scy5yZWFkZXIuZWRuL3JlYWQgaXMgbm90IHRoZSBzYW1lIGZvciBlb2YtaGFuZGxpbmdcIlxyXG4gezphcmdsaXN0cyAnKFtyZWFkZXJdIFtvcHRzIHJlYWRlcl0gW3JlYWRlciBlb2YtZXJyb3I/IGVvZi12YWx1ZV0pfVxyXG4gKFtyZWFkZXJdIChyZWFkIHJlYWRlciB0cnVlIG5pbCkpXHJcbiAoW3tlb2YgOmVvZiwgOmFzIG9wdHMsIDpvciB7ZW9mIDplb2Z0aHJvd319IHJlYWRlcl1cclxuICAocmVhZCogcmVhZGVyICg9IGVvZiA6ZW9mdGhyb3cpIGVvZiBuaWwgb3B0cyAodG8tYXJyYXkgW10pKSlcclxuIChbcmVhZGVyIGVvZi1lcnJvcj8gc2VudGluZWxdXHJcbiAgKHJlYWQqIHJlYWRlciBlb2YtZXJyb3I/IHNlbnRpbmVsIG5pbCB7fSAodG8tYXJyYXkgW10pKSkpXHJcbiJ9IHs6c3ltIGRlZmF1bHQtZGF0YS1yZWFkZXJzLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxyXG4gZGVmYXVsdC1kYXRhLXJlYWRlcnNcclxuIFwiRGVmYXVsdCBtYXAgb2YgZGF0YSByZWFkZXIgZnVuY3Rpb25zIHByb3ZpZGVkIGJ5IENsb2p1cmUuXFxuICBNYXkgYmUgb3ZlcnJpZGRlbiBieSBiaW5kaW5nICpkYXRhLXJlYWRlcnMqXCJcclxuIHt9KVxyXG4ifSB7OnN5bSAqZGF0YS1yZWFkZXJzKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcclxuICpkYXRhLXJlYWRlcnMqXHJcbiBcIk1hcCBmcm9tIHJlYWRlciB0YWcgc3ltYm9scyB0byBkYXRhIHJlYWRlciBWYXJzLlxcbiAgUmVhZGVyIHRhZ3Mgd2l0aG91dCBuYW1lc3BhY2UgcXVhbGlmaWVycyBhcmUgcmVzZXJ2ZWQgZm9yIENsb2p1cmUuXFxuICBUaGlzIGxpZ2h0IHZlcnNpb24gb2YgdG9vbHMucmVhZGVyIGhhcyBubyBpbXBsZW1lbnRhdGlvbiBmb3IgZGVmYXVsdFxcbiAgcmVhZGVyIHRhZ3Mgc3VjaCBhcyAjaW5zdCBhbmQgI3V1aWQuXCJcclxuIHt9KVxyXG4ifSB7OnN5bSAqcmVhZC1kZWxpbSosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpyZWFkLWRlbGltKiBmYWxzZSlcclxuIn0gezpzeW0gcmVzb2x2ZS1zeW1ib2wsIDptZXRhIHs6ZG9jICJSZXNvbHZlIGEgc3ltYm9sIHMgaW50byBpdHMgZnVsbHkgcXVhbGlmaWVkIG5hbWVzcGFjZSB2ZXJzaW9uIiwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlc29sdmUtc3ltYm9sXHJcbiBcIlJlc29sdmUgYSBzeW1ib2wgcyBpbnRvIGl0cyBmdWxseSBxdWFsaWZpZWQgbmFtZXNwYWNlIHZlcnNpb25cIlxyXG4gW3NdXHJcbiAodGhyb3cgKGV4LWluZm8gXCJyZXNvbHZlLXN5bWJvbCBpcyBub3QgaW1wbGVtZW50ZWRcIiB7OnN5bSBzfSkpKVxyXG4ifSB7OnN5bSAqYWxpYXMtbWFwKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcclxuICphbGlhcy1tYXAqXHJcbiBcIk1hcCBmcm9tIG5zIGFsaWFzIHRvIG5zLCBpZiBub24tbmlsLCBpdCB3aWxsIGJlIHVzZWQgdG8gcmVzb2x2ZSByZWFkLXRpbWVcXG4gICBucyBhbGlhc2VzLlxcblxcbiAgIERlZmF1bHRzIHRvIG5pbFwiXHJcbiBuaWwpXHJcbiJ9IHs6c3ltIHJlYWQtcmVnZXgsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGNoIG9wdHMgcGVuZGluZy1mb3Jtc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlYWQtcmVnZXhcclxuIFtyZHIgY2ggb3B0cyBwZW5kaW5nLWZvcm1zXVxyXG4gKGxldFxyXG4gIFtzYiAoU3RyaW5nQnVmZmVyLildXHJcbiAgKGxvb3BcclxuICAgW2NoIChyZWFkLWNoYXIgcmRyKV1cclxuICAgKGlmXHJcbiAgICAoaWRlbnRpY2FsPyBcXFwiIGNoKVxyXG4gICAgKHJlLXBhdHRlcm4gKHN0ciBzYikpXHJcbiAgICAoaWZcclxuICAgICAobmlsPyBjaClcclxuICAgICAoZXJyL3Rocm93LWVvZi1yZWFkaW5nIHJkciA6cmVnZXggc2IpXHJcbiAgICAgKGRvXHJcbiAgICAgICguYXBwZW5kIHNiIGNoKVxyXG4gICAgICAod2hlblxyXG4gICAgICAgKGlkZW50aWNhbD8gXFxcXCBjaClcclxuICAgICAgIChsZXRcclxuICAgICAgICBbY2ggKHJlYWQtY2hhciByZHIpXVxyXG4gICAgICAgIChpZiAobmlsPyBjaCkgKGVyci90aHJvdy1lb2YtcmVhZGluZyByZHIgOnJlZ2V4IHNiKSlcclxuICAgICAgICAoLmFwcGVuZCBzYiBjaCkpKVxyXG4gICAgICAocmVjdXIgKHJlYWQtY2hhciByZHIpKSkpKSkpKVxyXG4ifSB7OnN5bSBzYiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgc2IgKFN0cmluZ0J1ZmZlci4pKVxyXG4ifSB7OnN5bSByZWFkLXN0cmluZywgOm1ldGEgezpkb2MgIlJlYWRzIG9uZSBvYmplY3QgZnJvbSB0aGUgc3RyaW5nIHMuXG4gICBSZXR1cm5zIG5pbCB3aGVuIHMgaXMgbmlsIG9yIGVtcHR5LlxuXG4gICBUbyByZWFkIGRhdGEgc3RydWN0dXJlcyBvbmx5LCB1c2UgY2xvanVyZS50b29scy5yZWFkZXIuZWRuL3JlYWQtc3RyaW5nXG5cbiAgIE5vdGUgdGhhdCB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlIG9mIGNsb2p1cmUudG9vbHMucmVhZGVyL3JlYWQtc3RyaW5nIGFuZFxuICAgY2xvanVyZS50b29scy5yZWFkZXIuZWRuL3JlYWQtc3RyaW5nIGlzIG5vdCB0aGUgc2FtZSBmb3IgZW9mLWhhbmRsaW5nIiwgOmFyZ2xpc3RzIFtbc10gW29wdHMgc11dfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlYWQtc3RyaW5nXHJcbiBcIlJlYWRzIG9uZSBvYmplY3QgZnJvbSB0aGUgc3RyaW5nIHMuXFxuICAgUmV0dXJucyBuaWwgd2hlbiBzIGlzIG5pbCBvciBlbXB0eS5cXG5cXG4gICBUbyByZWFkIGRhdGEgc3RydWN0dXJlcyBvbmx5LCB1c2UgY2xvanVyZS50b29scy5yZWFkZXIuZWRuL3JlYWQtc3RyaW5nXFxuXFxuICAgTm90ZSB0aGF0IHRoZSBmdW5jdGlvbiBzaWduYXR1cmUgb2YgY2xvanVyZS50b29scy5yZWFkZXIvcmVhZC1zdHJpbmcgYW5kXFxuICAgY2xvanVyZS50b29scy5yZWFkZXIuZWRuL3JlYWQtc3RyaW5nIGlzIG5vdCB0aGUgc2FtZSBmb3IgZW9mLWhhbmRsaW5nXCJcclxuIChbc10gKHJlYWQtc3RyaW5nIHt9IHMpKVxyXG4gKFtvcHRzIHNdXHJcbiAgKHdoZW5cclxuICAgKGFuZCBzIChub3QgKGlkZW50aWNhbD8gcyBcIlwiKSkpXHJcbiAgIChyZWFkIG9wdHMgKHN0cmluZy1wdXNoLWJhY2stcmVhZGVyIHMpKSkpKVxyXG4ifSB7OnN5bSBtYXAtZnVuYywgOm1ldGEgezpkb2MgIkRlY2lkZSB3aGljaCBtYXAgdHlwZSB0byB1c2UsIGFycmF5LW1hcCBpZiBsZXNzIHRoYW4gMTYgZWxlbWVudHMiLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxyXG4gbWFwLWZ1bmNcclxuIFwiRGVjaWRlIHdoaWNoIG1hcCB0eXBlIHRvIHVzZSwgYXJyYXktbWFwIGlmIGxlc3MgdGhhbiAxNiBlbGVtZW50c1wiXHJcbiBbY29sbF1cclxuIChpZiAoPj0gKGNvdW50IGNvbGwpIDE2KSAnY2xqcy5jb3JlL2hhc2gtbWFwICdjbGpzLmNvcmUvYXJyYXktbWFwKSlcclxuIn0pLCBzYWJsb25vLnV0aWwgKHs6c3ltIGpvaW4tY2xhc3NlcywgOm1ldGEgezpkb2MgIkpvaW4gdGhlIGBjbGFzc2VzYCB3aXRoIGEgd2hpdGVzcGFjZS4iLCA6YXJnbGlzdHMgKFtjbGFzc2VzXSl9LCA6c291cmNlICIoZGVmblxyXG4gam9pbi1jbGFzc2VzXHJcbiBcIkpvaW4gdGhlIGBjbGFzc2VzYCB3aXRoIGEgd2hpdGVzcGFjZS5cIlxyXG4gW2NsYXNzZXNdXHJcbiAoLT4+XHJcbiAgY2xhc3Nlc1xyXG4gIChpbnRvXHJcbiAgIFtdXHJcbiAgIChjb21wIChtYXBjYXQgKGZuIFt4XSAoaWYgKHN0cmluZz8geCkgW3hdIChzZXEgeCkpKSkgKHJlbW92ZSBuaWw/KSkpXHJcbiAgKHN0ci9qb2luIFwiIFwiKSkpXHJcbiJ9IHs6c3ltIHRvLXN0ciwgOm1ldGEgezpkb2MgIkNvbnZlcnQgYSB2YWx1ZSBpbnRvIGEgc3RyaW5nLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpwcm90b2NvbCBUb1N0cmluZ30gezpzeW0gcmVhY3QtZm4sIDptZXRhIHs6ZG9jICJSZXR1cm4gdGhlIHN5bWJvbCBvZiBhIGZuIHRoYXQgYnVpbGQgYSBSZWFjdCBlbGVtZW50LiAiLCA6YXJnbGlzdHMgKFt0eXBlXSl9LCA6c291cmNlICIoZGVmblxyXG4gcmVhY3QtZm5cclxuIFwiUmV0dXJuIHRoZSBzeW1ib2wgb2YgYSBmbiB0aGF0IGJ1aWxkIGEgUmVhY3QgZWxlbWVudC4gXCJcclxuIFt0eXBlXVxyXG4gKGlmXHJcbiAgKGNvbnRhaW5zPyAjezp0ZXh0YXJlYSA6aW5wdXQgOnNlbGVjdH0gKGtleXdvcmQgdHlwZSkpXHJcbiAgJ3NhYmxvbm8uaW50ZXJwcmV0ZXIvY3JlYXRlLWVsZW1lbnRcclxuICAnanMvUmVhY3QuY3JlYXRlRWxlbWVudCkpXHJcbiJ9IHs6c3ltIGNhbWVsLWNhc2Uta2V5cywgOm1ldGEgezpkb2MgIlJlY3Vyc2l2ZWx5IHRyYW5zZm9ybXMgYWxsIG1hcCBrZXlzIGludG8gY2FtZWwgY2FzZS4iLCA6YXJnbGlzdHMgKFttXSl9LCA6c291cmNlICIoZGVmblxyXG4gY2FtZWwtY2FzZS1rZXlzXHJcbiBcIlJlY3Vyc2l2ZWx5IHRyYW5zZm9ybXMgYWxsIG1hcCBrZXlzIGludG8gY2FtZWwgY2FzZS5cIlxyXG4gW21dXHJcbiAoaWZcclxuICAobWFwPyBtKVxyXG4gIChsZXRcclxuICAgW20gKGludG8ge30gKG1hcCAoZm4gW1trIHZdXSBbKGNhbWVsLWNhc2Ugaykgdl0pKSBtKV1cclxuICAgKGNvbmQtPiBtIChtYXA/ICg6c3R5bGUgbSkpICh1cGRhdGUgOnN0eWxlIGNhbWVsLWNhc2Uta2V5cykpKVxyXG4gIG0pKVxyXG4ifSB7OnN5bSBlbGVtZW50PywgOm1ldGEgezpkb2MgIlJldHVybiB0cnVlIGlmIGB4YCBpcyBhbiBIVE1MIGVsZW1lbnQuIFRydWUgd2hlbiBgeGAgaXMgYSB2ZWN0b3JcbiAgYW5kIHRoZSBmaXJzdCBlbGVtZW50IGlzIGEga2V5d29yZCwgZS5nLiBgWzpkaXZdYCBvciBgWzpkaXYgWzpzcGFuIFwieFwiXWAuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGVsZW1lbnQ/XHJcbiBcIlJldHVybiB0cnVlIGlmIGB4YCBpcyBhbiBIVE1MIGVsZW1lbnQuIFRydWUgd2hlbiBgeGAgaXMgYSB2ZWN0b3JcXG4gIGFuZCB0aGUgZmlyc3QgZWxlbWVudCBpcyBhIGtleXdvcmQsIGUuZy4gYFs6ZGl2XWAgb3IgYFs6ZGl2IFs6c3BhbiBcXFwieFxcXCJdYC5cIlxyXG4gW3hdXHJcbiAoYW5kICh2ZWN0b3I/IHgpIChrZXl3b3JkPyAoZmlyc3QgeCkpKSlcclxuIn0gezpzeW0gKmJhc2UtdXJsKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmJhc2UtdXJsKiBuaWwpXHJcbiJ9IHs6c3ltIGFzLXN0ciwgOm1ldGEgezpkb2MgIkNvbnZlcnRzIGl0cyBhcmd1bWVudHMgaW50byBhIHN0cmluZyB1c2luZyB0by1zdHIuIiwgOmFyZ2xpc3RzIChbJiB4c10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGFzLXN0clxyXG4gXCJDb252ZXJ0cyBpdHMgYXJndW1lbnRzIGludG8gYSBzdHJpbmcgdXNpbmcgdG8tc3RyLlwiXHJcbiBbJiB4c11cclxuIChzdHIvam9pbiAobWFwIHRvLXN0ciB4cykpKVxyXG4ifSB7OnN5bSBodG1sLXRvLWRvbS1hdHRycywgOm1ldGEgezpkb2MgIkNvbnZlcnRzIGFsbCBIVE1MIGF0dHJpYnV0ZXMgdG8gdGhlaXIgRE9NIGVxdWl2YWxlbnRzLiIsIDphcmdsaXN0cyAoW2F0dHJzXSl9LCA6c291cmNlICIoZGVmblxyXG4gaHRtbC10by1kb20tYXR0cnNcclxuIFwiQ29udmVydHMgYWxsIEhUTUwgYXR0cmlidXRlcyB0byB0aGVpciBET00gZXF1aXZhbGVudHMuXCJcclxuIFthdHRyc11cclxuIChyZW5hbWUta2V5c1xyXG4gIChjYW1lbC1jYXNlLWtleXMgYXR0cnMpXHJcbiAgezpjbGFzcyA6Y2xhc3NOYW1lLCA6Zm9yIDpodG1sRm9yfSkpXHJcbiJ9IHs6c3ltIFRvU3RyaW5nLCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAodG8tc3RyKX0gezpzeW0gVG9VUkksIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzICh0by11cmkpfSB7OnN5bSBjYW1lbC1jYXNlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBjYW1lbCBjYXNlIHZlcnNpb24gb2YgdGhlIGtleSwgZS5nLiA6aHR0cC1lcXVpdiBiZWNvbWVzIDpodHRwRXF1aXYuIiwgOmFyZ2xpc3RzIChba10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGNhbWVsLWNhc2VcclxuIFwiUmV0dXJucyBjYW1lbCBjYXNlIHZlcnNpb24gb2YgdGhlIGtleSwgZS5nLiA6aHR0cC1lcXVpdiBiZWNvbWVzIDpodHRwRXF1aXYuXCJcclxuIFtrXVxyXG4gKGlmXHJcbiAgKG9yIChrZXl3b3JkPyBrKSAoc3RyaW5nPyBrKSAoc3ltYm9sPyBrKSlcclxuICAobGV0XHJcbiAgIFtbZmlyc3Qtd29yZCAmIHdvcmRzXSAoLnNwbGl0IChuYW1lIGspIFwiLVwiKV1cclxuICAgKGlmXHJcbiAgICAob3IgKGVtcHR5PyB3b3JkcykgKD0gXCJhcmlhXCIgZmlyc3Qtd29yZCkgKD0gXCJkYXRhXCIgZmlyc3Qtd29yZCkpXHJcbiAgICBrXHJcbiAgICAoLT5cclxuICAgICAobWFwIHN0ci9jYXBpdGFsaXplIHdvcmRzKVxyXG4gICAgIChjb25qIGZpcnN0LXdvcmQpXHJcbiAgICAgc3RyL2pvaW5cclxuICAgICBrZXl3b3JkKSkpXHJcbiAgaykpXHJcbiJ9IHs6c3ltIHRvLXVyaSwgOm1ldGEgezpkb2MgIkNvbnZlcnQgYSB2YWx1ZSBpbnRvIGEgVVJJLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpwcm90b2NvbCBUb1VSSX0pLCBkeW5hZG9jLmNvbW1vbiAoezpzeW0gdmFyLXN5bS0+dXJsLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JlbC1wYXRoIHN0YXRpYz8gdHlwZSBucy1zeW0gdmFyLXN5bV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHZhci1zeW0tPnVybFxyXG4gW3JlbC1wYXRoIHN0YXRpYz8gdHlwZSBucy1zeW0gdmFyLXN5bV1cclxuIChzdHJcclxuICByZWwtcGF0aFxyXG4gIChuYW1lIHR5cGUpXHJcbiAgXCIvXCJcclxuICBucy1zeW1cclxuICBcIi9cIlxyXG4gIChpZlxyXG4gICBzdGF0aWM/XHJcbiAgICgtPlxyXG4gICAgKHN0ciB2YXItc3ltKVxyXG4gICAgKHN0ci9yZXBsYWNlIFwiP1wiIFwiJ3EnXCIpXHJcbiAgICAoc3RyL3JlcGxhY2UgXCIhXCIgXCInZSdcIilcclxuICAgIChzdHIvcmVwbGFjZSBcIjxcIiBcIidsJ1wiKVxyXG4gICAgKHN0ci9yZXBsYWNlIFwiPlwiIFwiJ2cnXCIpXHJcbiAgICAoc3RyL3JlcGxhY2UgXCI6XCIgXCInYydcIilcclxuICAgIChzdHIvcmVwbGFjZSBcIipcIiBcIidhJ1wiKVxyXG4gICAgKHN0ci9yZXBsYWNlIFwiJlwiIFwiJ20nXCIpKVxyXG4gICAjPyg6Y2xqcyAoanMvZW5jb2RlVVJJQ29tcG9uZW50IChzdHIgdmFyLXN5bSkpIDpjbGogKGphdmEubmV0LlVSTEVuY29kZXIvZW5jb2RlIChzdHIgdmFyLXN5bSkgXCJVVEYtOFwiKSkpXHJcbiAgKHdoZW4gc3RhdGljPyBcIi5odG1sXCIpKSlcclxuIn0gezpzeW0gaW5pdC1lZGl0b3IsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcnVtLXN0YXRlXSl9LCA6c291cmNlICIoZGVmblxyXG4gaW5pdC1lZGl0b3JcclxuIFtydW0tc3RhdGVdXHJcbiAobGV0XHJcbiAgW1tzdGF0ZV0gKDpydW0vYXJncyBydW0tc3RhdGUpXVxyXG4gICh3aGVuLWxldFxyXG4gICBbaW5pdCAoOmluaXQtZWRpdG9yIHN0YXRlKV1cclxuICAgKGluaXQgKHJ1bS9kb20tbm9kZSBydW0tc3RhdGUpKSkpXHJcbiBydW0tc3RhdGUpXHJcbiJ9IHs6c3ltIG5zLXN5bS0+dXJsLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JlbC1wYXRoIHN0YXRpYz8gdHlwZSBucy1zeW1dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBucy1zeW0tPnVybFxyXG4gW3JlbC1wYXRoIHN0YXRpYz8gdHlwZSBucy1zeW1dXHJcbiAoc3RyIHJlbC1wYXRoIChuYW1lIHR5cGUpIFwiL1wiIG5zLXN5bSAod2hlbiBzdGF0aWM/IFwiLmh0bWxcIikpKVxyXG4ifSB7OnN5bSAqc2Vzc2lvbiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcclxuICpzZXNzaW9uXHJcbiAoLT5cclxuICAocmVkdWNlIG8vYWRkLXJ1bGUgKG8vLT5zZXNzaW9uKSAoY29uY2F0IHJ1bGVzIGNvbXBvbmVudHMpKVxyXG4gIChvL2luc2VydFxyXG4gICA6ZHluYWRvYy5jb21tb24vY2xpZW50XHJcbiAgIHs6ZHluYWRvYy5jb21tb24vcHJvZD8gZmFsc2UsXHJcbiAgICA6ZHluYWRvYy5jb21tb24vZXhwb3J0LWZpbHRlciBcIlwiLFxyXG4gICAgOmR5bmFkb2MuY29tbW9uL2NsanMtc3RhcnRlZD8gZmFsc2UsXHJcbiAgICA6ZHluYWRvYy5jb21tb24vZXhwb3J0YWJsZT8gZmFsc2UsXHJcbiAgICA6ZHluYWRvYy5jb21tb24vaW5pdC1lZGl0b3IgbmlsLFxyXG4gICAgOmR5bmFkb2MuY29tbW9uL2luaXQtZXhhbXBsZS1lZGl0b3IgbmlsLFxyXG4gICAgOmR5bmFkb2MuY29tbW9uL3dhdGNoZXIgbmlsfSlcclxuICAoby9pbnNlcnRcclxuICAgOmR5bmFkb2MuY29tbW9uL3NlcnZlclxyXG4gICB7OmR5bmFkb2MuY29tbW9uL25zLXN5bSBuaWwsXHJcbiAgICA6ZHluYWRvYy5jb21tb24vdmFyLXN5bSBuaWwsXHJcbiAgICA6ZHluYWRvYy5jb21tb24vdHlwZSBuaWwsXHJcbiAgICA6ZHluYWRvYy5jb21tb24vaGlkZS1zaWRlYmFyPyBmYWxzZX0pXHJcbiAgYXRvbSkpXHJcbiJ9IHs6c3ltIGdldC1zdGF0ZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBnZXQtc3RhdGVcclxuIFtdXHJcbiAoLT5cclxuICBAKnNlc3Npb25cclxuICAoby9xdWVyeS1hbGwgOmR5bmFkb2MuY29tbW9uL2dldC1zdGF0ZSlcclxuICBmaXJzdFxyXG4gIChvciAodGhyb3cgKGV4LWluZm8gXCJTdGF0ZSBub3QgZm91bmRcIiB7fSkpKSkpXHJcbiJ9IHs6c3ltIHVwZGF0ZS1zZXNzaW9uLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3Nlc3Npb24gaWQgc3RhdGVdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB1cGRhdGUtc2Vzc2lvblxyXG4gW3Nlc3Npb24gaWQgc3RhdGVdXHJcbiAoby9maXJlLXJ1bGVzIChvL2luc2VydCBzZXNzaW9uIGlkIHN0YXRlKSkpXHJcbiJ9IHs6c3ltIHJ1bGVzLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxyXG4gcnVsZXNcclxuIChvL3J1bGVzZXRcclxuICB7OmR5bmFkb2MuY29tbW9uL2dldC1zdGF0ZVxyXG4gICBbOndoYXRcclxuICAgIFs6ZHluYWRvYy5jb21tb24vc2VydmVyIDpkeW5hZG9jLmNvbW1vbi9ucy1zeW0gbnMtc3ltXVxyXG4gICAgWzpkeW5hZG9jLmNvbW1vbi9zZXJ2ZXIgOmR5bmFkb2MuY29tbW9uL3Zhci1zeW0gdmFyLXN5bV1cclxuICAgIFs6ZHluYWRvYy5jb21tb24vc2VydmVyIDpkeW5hZG9jLmNvbW1vbi90eXBlIHR5cGVdXHJcbiAgICBbOmR5bmFkb2MuY29tbW9uL2NsaWVudCA6ZHluYWRvYy5jb21tb24vd2F0Y2hlciB3YXRjaGVyXV19KSlcclxuIn0gezpzeW0gY29tcG9uZW50cywgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcclxuIGNvbXBvbmVudHNcclxuIChvcnVtL3J1bGVzZXRcclxuICB7YXBwLXJvb3RcclxuICAgWzp3aGF0XHJcbiAgICBbOmR5bmFkb2MuY29tbW9uL3NlcnZlciA6ZHluYWRvYy5jb21tb24vbnMtc3ltIG5zLXN5bV1cclxuICAgIFs6ZHluYWRvYy5jb21tb24vc2VydmVyIDpkeW5hZG9jLmNvbW1vbi9ucy1tZXRhIG5zLW1ldGFdXHJcbiAgICBbOmR5bmFkb2MuY29tbW9uL3NlcnZlciA6ZHluYWRvYy5jb21tb24vdmFyLXN5bSB2YXItc3ltXVxyXG4gICAgWzpkeW5hZG9jLmNvbW1vbi9zZXJ2ZXIgOmR5bmFkb2MuY29tbW9uL3ZhcnMgdmFyc11cclxuICAgIFs6ZHluYWRvYy5jb21tb24vY2xpZW50XHJcbiAgICAgOmR5bmFkb2MuY29tbW9uL2NsanMtc3RhcnRlZD9cclxuICAgICBjbGpzLXN0YXJ0ZWQ/XVxyXG4gICAgWzpkeW5hZG9jLmNvbW1vbi9jbGllbnQgOmR5bmFkb2MuY29tbW9uL3Byb2Q/IHByb2Q/XVxyXG4gICAgWzpkeW5hZG9jLmNvbW1vbi9zZXJ2ZXIgOmR5bmFkb2MuY29tbW9uL3N0YXRpYz8gc3RhdGljP11cclxuICAgIFs6ZHluYWRvYy5jb21tb24vc2VydmVyXHJcbiAgICAgOmR5bmFkb2MuY29tbW9uL2hpZGUtc2lkZWJhcj9cclxuICAgICBoaWRlLXNpZGViYXI/XVxyXG4gICAgOnRoZW5cclxuICAgIChsZXRcclxuICAgICBbKnNlc3Npb24gKG9ydW0vcHJvcCldXHJcbiAgICAgWzpkaXZcclxuICAgICAgKHdoZW4tbm90IGhpZGUtc2lkZWJhcj8gKHNpZGViYXIge30pKVxyXG4gICAgICAoY29ualxyXG4gICAgICAgKGlmXHJcbiAgICAgICAgbnMtc3ltXHJcbiAgICAgICAgKGludG9cclxuICAgICAgICAgWzpkaXZcclxuICAgICAgICAgIHs6Y2xhc3MgXCJ2YXJzXCIsIDpzdHlsZSB7OmxlZnQgKGlmIGhpZGUtc2lkZWJhcj8gMCAzMDApfX1cclxuICAgICAgICAgIChleHBvcnQgKnNlc3Npb24pXHJcbiAgICAgICAgICAod2hlbi1ub3RcclxuICAgICAgICAgICB2YXItc3ltXHJcbiAgICAgICAgICAgWzpkaXZcclxuICAgICAgICAgICAgWzpjZW50ZXIgWzpoMSAoc3RyIG5zLXN5bSldXVxyXG4gICAgICAgICAgICAod2hlbi1sZXRcclxuICAgICAgICAgICAgIFtkb2MgKDpkb2MgbnMtbWV0YSldXHJcbiAgICAgICAgICAgICBbOmRpdiB7OmNsYXNzIFwic2VjdGlvbiBkb2NcIn0gZG9jXSldKV1cclxuICAgICAgICAgKG1hcHYgdmFyLT5odG1sIHZhcnMpKVxyXG4gICAgICAgIFs6ZGl2IHs6Y2xhc3MgXCJ2YXJzXCJ9IChleHBvcnQgKnNlc3Npb24pXSlcclxuICAgICAgIChjb25kXHJcbiAgICAgICAgc3RhdGljP1xyXG4gICAgICAgIFs6ZGl2XHJcbiAgICAgICAgIHs6Y2xhc3MgXCJmb290ZXJcIn1cclxuICAgICAgICAgXCJHZW5lcmF0ZWQgYnkgXCJcclxuICAgICAgICAgWzphXHJcbiAgICAgICAgICB7OmhyZWYgXCJodHRwczovL2dpdGh1Yi5jb20vb2FrZXMvRHluYWRvY1wiLCA6dGFyZ2V0IFwiX2JsYW5rXCJ9XHJcbiAgICAgICAgICBcIkR5bmFkb2NcIl1dXHJcbiAgICAgICAgKGFuZCBjbGpzLXN0YXJ0ZWQ/IChub3QgcHJvZD8pKVxyXG4gICAgICAgIFs6ZGl2XHJcbiAgICAgICAgIHs6Y2xhc3MgXCJmb290ZXJcIn1cclxuICAgICAgICAgXCJUaGlzIGlzIGEgY3VzdG9tIGJ1aWxkIG9mIFwiXHJcbiAgICAgICAgIFs6YVxyXG4gICAgICAgICAgezpocmVmIFwiaHR0cHM6Ly9naXRodWIuY29tL29ha2VzL0R5bmFkb2NcIiwgOnRhcmdldCBcIl9ibGFua1wifVxyXG4gICAgICAgICAgXCJEeW5hZG9jXCJdXSkpXSldLFxyXG4gICB2YXItPmh0bWxcclxuICAgWzp3aGF0XHJcbiAgICBbOmR5bmFkb2MuY29tbW9uL3NlcnZlciA6ZHluYWRvYy5jb21tb24vbnMtc3ltIG5zLXN5bV1cclxuICAgIFs6ZHluYWRvYy5jb21tb24vc2VydmVyIDpkeW5hZG9jLmNvbW1vbi92YXItc3ltIHZhci1zeW1dXHJcbiAgICBbOmR5bmFkb2MuY29tbW9uL3NlcnZlciA6ZHluYWRvYy5jb21tb24vdHlwZSB0eXBlXVxyXG4gICAgWzpkeW5hZG9jLmNvbW1vbi9zZXJ2ZXIgOmR5bmFkb2MuY29tbW9uL3JlbC1wYXRoIHJlbC1wYXRoXVxyXG4gICAgWzpkeW5hZG9jLmNvbW1vbi9zZXJ2ZXIgOmR5bmFkb2MuY29tbW9uL3N0YXRpYz8gc3RhdGljP11cclxuICAgIDp0aGVuXHJcbiAgICAobGV0XHJcbiAgICAgW3s6a2V5cyBbc3ltIG1ldGEgc291cmNlIHNwZWMgZXhhbXBsZXMgbWV0aG9kcyBwcm90b2NvbF19XHJcbiAgICAgIChvcnVtL3Byb3ApXHJcbiAgICAgIHs6a2V5cyBbYXJnbGlzdHMgZG9jXX1cclxuICAgICAgbWV0YVxyXG4gICAgICB1cmxcclxuICAgICAgKHZhci1zeW0tPnVybCByZWwtcGF0aCBzdGF0aWM/IHR5cGUgbnMtc3ltIHN5bSldXHJcbiAgICAgWzpkaXZcclxuICAgICAgezpjbGFzcyBcInZhci1pbmZvXCJ9XHJcbiAgICAgIChpbnRvXHJcbiAgICAgICAoaWYgdmFyLXN5bSBbOmRpdl0gWzphIHs6aHJlZiB1cmx9XSlcclxuICAgICAgIChpZlxyXG4gICAgICAgIGFyZ2xpc3RzXHJcbiAgICAgICAgKG1hcFxyXG4gICAgICAgICAoZm4gW2FyZ2xpc3RdIFs6aDIgKHByLXN0ciAoYXBwbHkgbGlzdCBzeW0gYXJnbGlzdCkpXSlcclxuICAgICAgICAgYXJnbGlzdHMpXHJcbiAgICAgICAgW1s6aDIgKHN0ciBzeW0pXV0pKVxyXG4gICAgICAod2hlblxyXG4gICAgICAgbWV0aG9kc1xyXG4gICAgICAgWzpkaXZcclxuICAgICAgICB7OmNsYXNzIFwic2VjdGlvblwifVxyXG4gICAgICAgIFs6aDMgXCJNZXRob2RzIGluIHRoaXMgcHJvdG9jb2xcIl1cclxuICAgICAgICAoaW50b1xyXG4gICAgICAgICBbOnVsXVxyXG4gICAgICAgICAoZm9yXHJcbiAgICAgICAgICBbbWV0aG9kLXN5bSBtZXRob2RzXVxyXG4gICAgICAgICAgWzpsaVxyXG4gICAgICAgICAgIFs6YVxyXG4gICAgICAgICAgICB7OmhyZWZcclxuICAgICAgICAgICAgICh2YXItc3ltLT51cmwgcmVsLXBhdGggc3RhdGljPyB0eXBlIG5zLXN5bSBtZXRob2Qtc3ltKX1cclxuICAgICAgICAgICAgKHN0ciBtZXRob2Qtc3ltKV1dKSldKVxyXG4gICAgICAod2hlblxyXG4gICAgICAgcHJvdG9jb2xcclxuICAgICAgIFs6ZGl2XHJcbiAgICAgICAgezpjbGFzcyBcInNlY3Rpb25cIn1cclxuICAgICAgICBbOmgzXHJcbiAgICAgICAgIFwiUGFydCBvZiB0aGUgXCJcclxuICAgICAgICAgWzphXHJcbiAgICAgICAgICB7OmhyZWYgKHZhci1zeW0tPnVybCByZWwtcGF0aCBzdGF0aWM/IHR5cGUgbnMtc3ltIHByb3RvY29sKX1cclxuICAgICAgICAgIChzdHIgcHJvdG9jb2wpXVxyXG4gICAgICAgICBcIiBwcm90b2NvbFwiXV0pXHJcbiAgICAgICh3aGVuIGRvYyBbOmRpdiB7OmNsYXNzIFwic2VjdGlvbiBkb2NcIn0gZG9jXSlcclxuICAgICAgKHdoZW5cclxuICAgICAgIChzZXEgZXhhbXBsZXMpXHJcbiAgICAgICAoaW50b1xyXG4gICAgICAgIFs6ZGl2XHJcbiAgICAgICAgIHs6Y2xhc3MgXCJzZWN0aW9uXCJ9XHJcbiAgICAgICAgIFs6aDIgKGlmICg+IChjb3VudCBleGFtcGxlcykgMSkgXCJFeGFtcGxlc1wiIFwiRXhhbXBsZVwiKV1dXHJcbiAgICAgICAgKG1hcHYgZXhhbXBsZS0+aHRtbCBleGFtcGxlcykpKVxyXG4gICAgICAod2hlblxyXG4gICAgICAgc3BlY1xyXG4gICAgICAgKGlmXHJcbiAgICAgICAgdmFyLXN5bVxyXG4gICAgICAgIFs6ZGl2IHs6Y2xhc3MgXCJzZWN0aW9uXCJ9IFs6aDIgXCJTcGVjXCJdIChzcGVjLT5odG1sIHNwZWMpXVxyXG4gICAgICAgIChleHBhbmRhYmxlLXNlY3Rpb25cclxuICAgICAgICAgezpsYWJlbCBcIlNwZWNcIiwgOnVybCB1cmwsIDpjb250ZW50IChzcGVjLT5odG1sIHNwZWMpfSkpKVxyXG4gICAgICAod2hlblxyXG4gICAgICAgc291cmNlXHJcbiAgICAgICAoaWZcclxuICAgICAgICB2YXItc3ltXHJcbiAgICAgICAgWzpkaXYgezpjbGFzcyBcInNlY3Rpb25cIn0gWzpoMiBcIlNvdXJjZVwiXSAoc291cmNlLT5odG1sIHNvdXJjZSldXHJcbiAgICAgICAgKGV4cGFuZGFibGUtc2VjdGlvblxyXG4gICAgICAgICB7OmxhYmVsIFwiU291cmNlXCIsXHJcbiAgICAgICAgICA6dXJsIHVybCxcclxuICAgICAgICAgIDpjb250ZW50IChzb3VyY2UtPmh0bWwgc291cmNlKX0pKSldKV0sXHJcbiAgIGV4YW1wbGUtPmh0bWxcclxuICAgWzp3aGF0XHJcbiAgICBbOmR5bmFkb2MuY29tbW9uL3NlcnZlciA6ZHluYWRvYy5jb21tb24vdHlwZSB0eXBlXVxyXG4gICAgWzpkeW5hZG9jLmNvbW1vbi9jbGllbnQgOmR5bmFkb2MuY29tbW9uL3Byb2Q/IHByb2Q/XVxyXG4gICAgWzpkeW5hZG9jLmNvbW1vbi9zZXJ2ZXIgOmR5bmFkb2MuY29tbW9uL3N0YXRpYz8gc3RhdGljP11cclxuICAgIFs6ZHluYWRvYy5jb21tb24vY2xpZW50XHJcbiAgICAgOmR5bmFkb2MuY29tbW9uL2luaXQtZXhhbXBsZS1lZGl0b3JcclxuICAgICBpbml0LWV4YW1wbGUtZWRpdG9yXVxyXG4gICAgOnRoZW5cclxuICAgIChleGFtcGxlLT5odG1sKiBvLyptYXRjaCogKG9ydW0vcHJvcCkpXSxcclxuICAgc291cmNlLT5odG1sXHJcbiAgIFs6d2hhdFxyXG4gICAgWzpkeW5hZG9jLmNvbW1vbi9jbGllbnQgOmR5bmFkb2MuY29tbW9uL2luaXQtZWRpdG9yIGluaXQtZWRpdG9yXVxyXG4gICAgOnRoZW5cclxuICAgIChzb3VyY2UtPmh0bWwqIG8vKm1hdGNoKiAob3J1bS9wcm9wKSldLFxyXG4gICBzcGVjLT5odG1sXHJcbiAgIFs6d2hhdFxyXG4gICAgWzpkeW5hZG9jLmNvbW1vbi9jbGllbnQgOmR5bmFkb2MuY29tbW9uL2luaXQtZWRpdG9yIGluaXQtZWRpdG9yXVxyXG4gICAgOnRoZW5cclxuICAgIChzcGVjLT5odG1sKiBvLyptYXRjaCogKG9ydW0vcHJvcCkpXSxcclxuICAgZXhwb3J0XHJcbiAgIFs6d2hhdFxyXG4gICAgWzpkeW5hZG9jLmNvbW1vbi9jbGllbnRcclxuICAgICA6ZHluYWRvYy5jb21tb24vY2xqcy1zdGFydGVkP1xyXG4gICAgIGNsanMtc3RhcnRlZD9dXHJcbiAgICBbOmR5bmFkb2MuY29tbW9uL3NlcnZlciA6ZHluYWRvYy5jb21tb24vc3RhdGljPyBzdGF0aWM/XVxyXG4gICAgOnRoZW5cclxuICAgIChsZXRcclxuICAgICBbKnNlc3Npb24gKG9ydW0vcHJvcCldXHJcbiAgICAgKHdoZW4tbm90XHJcbiAgICAgIHN0YXRpYz9cclxuICAgICAgWzpkaXZcclxuICAgICAgIHs6c3R5bGUgezptaW4taGVpZ2h0IDc1fX1cclxuICAgICAgICh3aGVuXHJcbiAgICAgICAgY2xqcy1zdGFydGVkP1xyXG4gICAgICAgIFs6ZGl2XHJcbiAgICAgICAgIHs6Y2xhc3MgXCJleHBvcnRcIn1cclxuICAgICAgICAgKGV4cGFuZGFibGUtc2VjdGlvblxyXG4gICAgICAgICAgezpsYWJlbCBcIkV4cG9ydFwiLFxyXG4gICAgICAgICAgIDp1cmwgXCJcIixcclxuICAgICAgICAgICA6Y29udGVudCAoZXhwb3J0LWZvcm0gKnNlc3Npb24pLFxyXG4gICAgICAgICAgIDpvbi1jbG9zZVxyXG4gICAgICAgICAgIChmbipcclxuICAgICAgICAgICAgW11cclxuICAgICAgICAgICAgKHN3YXAhXHJcbiAgICAgICAgICAgICAqc2Vzc2lvblxyXG4gICAgICAgICAgICAgKGZuXHJcbiAgICAgICAgICAgICAgW3Nlc3Npb25dXHJcbiAgICAgICAgICAgICAgKC0+XHJcbiAgICAgICAgICAgICAgIHNlc3Npb25cclxuICAgICAgICAgICAgICAgKG8vaW5zZXJ0XHJcbiAgICAgICAgICAgICAgICA6ZHluYWRvYy5jb21tb24vY2xpZW50XHJcbiAgICAgICAgICAgICAgICA6ZHluYWRvYy5jb21tb24vZXhwb3J0LWZpbHRlclxyXG4gICAgICAgICAgICAgICAgXCJcIilcclxuICAgICAgICAgICAgICAgby9maXJlLXJ1bGVzKSkpKX0pXSlcclxuICAgICAgIFs6ZGl2IHs6c3R5bGUgezpjbGVhciBcInJpZ2h0XCJ9fV1dKSldLFxyXG4gICBleHBvcnQtZm9ybVxyXG4gICBbOndoYXRcclxuICAgIFs6ZHluYWRvYy5jb21tb24vc2VydmVyIDpkeW5hZG9jLmNvbW1vbi9ucy1zeW0gbnMtc3ltXVxyXG4gICAgWzpkeW5hZG9jLmNvbW1vbi9zZXJ2ZXIgOmR5bmFkb2MuY29tbW9uL25zLW1ldGEgbnMtbWV0YV1cclxuICAgIFs6ZHluYWRvYy5jb21tb24vc2VydmVyIDpkeW5hZG9jLmNvbW1vbi92YXItc3ltIHZhci1zeW1dXHJcbiAgICBbOmR5bmFkb2MuY29tbW9uL3NlcnZlciA6ZHluYWRvYy5jb21tb24vdHlwZSB0eXBlXVxyXG4gICAgWzpkeW5hZG9jLmNvbW1vbi9jbGllbnQgOmR5bmFkb2MuY29tbW9uL2V4cG9ydGFibGU/IGV4cG9ydGFibGU/XVxyXG4gICAgWzpkeW5hZG9jLmNvbW1vbi9jbGllbnRcclxuICAgICA6ZHluYWRvYy5jb21tb24vZXhwb3J0LWZpbHRlclxyXG4gICAgIGV4cG9ydC1maWx0ZXJdXHJcbiAgICA6dGhlblxyXG4gICAgKGxldFxyXG4gICAgIFsqc2Vzc2lvblxyXG4gICAgICAob3J1bS9wcm9wKVxyXG4gICAgICAqb3B0aW9uc1xyXG4gICAgICAob3J1bS9hdG9tIHs6cGFnZXMgKGlmIG5zLXN5bSA6c2luZ2xlIDptdWx0aXBsZSl9KVxyXG4gICAgICB7OmtleXMgW3BhZ2VzXX1cclxuICAgICAgQCpvcHRpb25zXVxyXG4gICAgIFs6Zm9ybVxyXG4gICAgICB7OmFjdGlvbiBcIi9keW5hZG9jLWV4cG9ydC56aXBcIixcclxuICAgICAgIDptZXRob2QgOmdldCxcclxuICAgICAgIDpzdHlsZSB7OnRleHQtYWxpZ24gXCJsZWZ0XCJ9fVxyXG4gICAgICBbOmRpdlxyXG4gICAgICAgWzpsYWJlbFxyXG4gICAgICAgIFs6aW5wdXRcclxuICAgICAgICAgezp0eXBlIFwicmFkaW9cIixcclxuICAgICAgICAgIDpuYW1lIFwicGFnZXNcIixcclxuICAgICAgICAgIDp2YWx1ZSBcInNpbmdsZVwiLFxyXG4gICAgICAgICAgOmNoZWNrZWQgKD0gcGFnZXMgOnNpbmdsZSksXHJcbiAgICAgICAgICA6b24tY2xpY2sgKGZuKiBbXSAoc3dhcCEgKm9wdGlvbnMgYXNzb2MgOnBhZ2VzIDpzaW5nbGUpKSxcclxuICAgICAgICAgIDpkaXNhYmxlZCAobmlsPyBucy1zeW0pfV1cclxuICAgICAgICBcIk9ubHkgdGhpcyBwYWdlXCJdXVxyXG4gICAgICBbOmRpdlxyXG4gICAgICAgWzpsYWJlbFxyXG4gICAgICAgIFs6aW5wdXRcclxuICAgICAgICAgezp0eXBlIFwicmFkaW9cIixcclxuICAgICAgICAgIDpuYW1lIFwicGFnZXNcIixcclxuICAgICAgICAgIDp2YWx1ZSBcIm11bHRpcGxlXCIsXHJcbiAgICAgICAgICA6Y2hlY2tlZCAoPSBwYWdlcyA6bXVsdGlwbGUpLFxyXG4gICAgICAgICAgOm9uLWNsaWNrIChmbiogW10gKHN3YXAhICpvcHRpb25zIGFzc29jIDpwYWdlcyA6bXVsdGlwbGUpKX1dXHJcbiAgICAgICAgXCJNdWx0aXBsZSBwYWdlc1wiXV1cclxuICAgICAgWzpkaXZcclxuICAgICAgIHs6c3R5bGUgezptYXJnaW4gMTAsIDpmb250LXNpemUgMTR9fVxyXG4gICAgICAgKGNhc2VcclxuICAgICAgICBwYWdlc1xyXG4gICAgICAgIDpzaW5nbGVcclxuICAgICAgICBbOmlcclxuICAgICAgICAgXCJPbmx5IHRoZSBjdXJyZW50IHBhZ2Ugd2lsbCBiZSBleHBvcnRlZFwiXHJcbiAgICAgICAgIFs6YnJdXHJcbiAgICAgICAgIFwiYW5kIHRoZSBzaWRlYmFyIHdpbGwgYmUgaGlkZGVuLlwiXVxyXG4gICAgICAgIDptdWx0aXBsZVxyXG4gICAgICAgIFs6aVxyXG4gICAgICAgICBcIkFsbCB0aGUgbmFtZXNwYWNlcyBpbiB0aGUgc2lkZWJhclwiXHJcbiAgICAgICAgIFs6YnJdXHJcbiAgICAgICAgIFwid2lsbCBiZSBleHBvcnRlZC4gWW91IGNhbiBuYXJyb3cgdGhlbVwiXHJcbiAgICAgICAgIFs6YnJdXHJcbiAgICAgICAgIFwiZG93biB3aXRoIHRoZSBmb2xsb3dpbmcgcmVnZXg6XCJcclxuICAgICAgICAgWzpkaXZcclxuICAgICAgICAgIFs6aW5wdXRcclxuICAgICAgICAgICB7OnR5cGUgXCJ0ZXh0XCIsXHJcbiAgICAgICAgICAgIDp2YWx1ZSBcIlwiLFxyXG4gICAgICAgICAgICA6cGxhY2Vob2xkZXIgXCJFeHBvcnQgZmlsdGVyXCIsXHJcbiAgICAgICAgICAgIDpzdHlsZSB7Om1hcmdpbiA1LCA6Zm9udC1zaXplIDE0fSxcclxuICAgICAgICAgICAgOm9uLWNoYW5nZVxyXG4gICAgICAgICAgICAoZm5cclxuICAgICAgICAgICAgIFtlXVxyXG4gICAgICAgICAgICAgKHN3YXAhXHJcbiAgICAgICAgICAgICAgKnNlc3Npb25cclxuICAgICAgICAgICAgICAoZm5cclxuICAgICAgICAgICAgICAgW3Nlc3Npb25dXHJcbiAgICAgICAgICAgICAgICgtPlxyXG4gICAgICAgICAgICAgICAgc2Vzc2lvblxyXG4gICAgICAgICAgICAgICAgKG8vaW5zZXJ0XHJcbiAgICAgICAgICAgICAgICAgOmR5bmFkb2MuY29tbW9uL2NsaWVudFxyXG4gICAgICAgICAgICAgICAgIDpkeW5hZG9jLmNvbW1vbi9leHBvcnQtZmlsdGVyXHJcbiAgICAgICAgICAgICAgICAgKC0+IGUgLi10YXJnZXQgLi12YWx1ZSkpXHJcbiAgICAgICAgICAgICAgICBvL2ZpcmUtcnVsZXMpKSkpfV1dXSldXHJcbiAgICAgIFs6aW5wdXRcclxuICAgICAgIHs6dHlwZSBcImhpZGRlblwiLFxyXG4gICAgICAgIDpuYW1lIFwiZXhwb3J0LWZpbHRlclwiLFxyXG4gICAgICAgIDp2YWx1ZSAob3IgZXhwb3J0LWZpbHRlciBcIlwiKX1dXHJcbiAgICAgICh3aGVuXHJcbiAgICAgICB0eXBlXHJcbiAgICAgICBbOmlucHV0IHs6dHlwZSBcImhpZGRlblwiLCA6bmFtZSBcInR5cGVcIiwgOnZhbHVlIChuYW1lIHR5cGUpfV0pXHJcbiAgICAgICh3aGVuXHJcbiAgICAgICBucy1zeW1cclxuICAgICAgIFs6aW5wdXQgezp0eXBlIFwiaGlkZGVuXCIsIDpuYW1lIFwibnMtc3ltXCIsIDp2YWx1ZSAoc3RyIG5zLXN5bSl9XSlcclxuICAgICAgKHdoZW5cclxuICAgICAgIHZhci1zeW1cclxuICAgICAgIFs6aW5wdXRcclxuICAgICAgICB7OnR5cGUgXCJoaWRkZW5cIiwgOm5hbWUgXCJ2YXItc3ltXCIsIDp2YWx1ZSAoc3RyIHZhci1zeW0pfV0pXHJcbiAgICAgIFs6ZGl2XHJcbiAgICAgICB7OnN0eWxlIHs6dGV4dC1hbGlnbiBcImNlbnRlclwifX1cclxuICAgICAgIFs6YnV0dG9uXHJcbiAgICAgICAgezp0eXBlIFwic3VibWl0XCIsIDpkaXNhYmxlZCAobm90IGV4cG9ydGFibGU/KX1cclxuICAgICAgICBcIkRvd25sb2FkIHppcCBmaWxlXCJdXVxyXG4gICAgICAod2hlbi1ub3RcclxuICAgICAgIGV4cG9ydGFibGU/XHJcbiAgICAgICBbOmRpdlxyXG4gICAgICAgIHs6c3R5bGUgezptYXJnaW4gMTAsIDpmb250LXNpemUgMTR9fVxyXG4gICAgICAgIFs6ZGl2XHJcbiAgICAgICAgIFs6YiBcIllvdSBidWlsdCBEeW5hZG9jIHdpdGggOm9wdGltaXphdGlvbnMgc2V0IHRvIDpub25lXCJdXVxyXG4gICAgICAgIFs6ZGl2XHJcbiAgICAgICAgIFs6YiBcIllvdSBtdXN0IHNldCBpdCB0byA6c2ltcGxlIGluIG9yZGVyIHRvIGV4cG9ydFwiXV1dKV0pXSxcclxuICAgc2lkZWJhclxyXG4gICBbOndoYXRcclxuICAgIFs6ZHluYWRvYy5jb21tb24vc2VydmVyIDpkeW5hZG9jLmNvbW1vbi9uc2VzIG5zZXNdXHJcbiAgICBbOmR5bmFkb2MuY29tbW9uL2NsaWVudFxyXG4gICAgIDpkeW5hZG9jLmNvbW1vbi9jbGpzLXN0YXJ0ZWQ/XHJcbiAgICAgY2xqcy1zdGFydGVkP11cclxuICAgIFs6ZHluYWRvYy5jb21tb24vc2VydmVyIDpkeW5hZG9jLmNvbW1vbi9yZWwtcGF0aCByZWwtcGF0aF1cclxuICAgIFs6ZHluYWRvYy5jb21tb24vc2VydmVyIDpkeW5hZG9jLmNvbW1vbi9zdGF0aWM/IHN0YXRpYz9dXHJcbiAgICBbOmR5bmFkb2MuY29tbW9uL3NlcnZlciA6ZHluYWRvYy5jb21tb24vaGlkZS1iYWRnZT8gaGlkZS1iYWRnZT9dXHJcbiAgICBbOmR5bmFkb2MuY29tbW9uL2NsaWVudFxyXG4gICAgIDpkeW5hZG9jLmNvbW1vbi9leHBvcnQtZmlsdGVyXHJcbiAgICAgZXhwb3J0LWZpbHRlcl1cclxuICAgIDp0aGVuXHJcbiAgICAobGV0XHJcbiAgICAgWypzZWFyY2hcclxuICAgICAgKG9ydW0vYXRvbSBcIlwiKVxyXG4gICAgICBzZWFyY2hcclxuICAgICAgKG9yIChub3QtZW1wdHkgZXhwb3J0LWZpbHRlcikgQCpzZWFyY2gpXHJcbiAgICAgIHNlYXJjaFxyXG4gICAgICAod2hlblxyXG4gICAgICAgKHNlcSBzZWFyY2gpXHJcbiAgICAgICAodHJ5XHJcbiAgICAgICAgKHJlLXBhdHRlcm4gc2VhcmNoKVxyXG4gICAgICAgIChjYXRjaCAjPyg6Y2xqIEV4Y2VwdGlvbiA6Y2xqcyBqcy9FcnJvcikgZSAocHJpbnRsbiBlKSkpKV1cclxuICAgICBbOmRpdlxyXG4gICAgICAod2hlblxyXG4gICAgICAgY2xqcy1zdGFydGVkP1xyXG4gICAgICAgWzppbnB1dFxyXG4gICAgICAgIHs6Y2xhc3MgXCJzZWFyY2hcIixcclxuICAgICAgICAgOm9uLWNoYW5nZVxyXG4gICAgICAgICAoZm4qXHJcbiAgICAgICAgICBbcDFfXzQxNjA4I11cclxuICAgICAgICAgICgtPj4gcDFfXzQxNjA4IyAuLXRhcmdldCAuLXZhbHVlIChyZXNldCEgKnNlYXJjaCkpKSxcclxuICAgICAgICAgOnBsYWNlaG9sZGVyIFwiU2VhcmNoXCJ9XSlcclxuICAgICAgKGludG9cclxuICAgICAgIFs6ZGl2XHJcbiAgICAgICAgezpjbGFzcyBcIm5zZXNcIn1cclxuICAgICAgICAod2hlbiAoc2VxIGV4cG9ydC1maWx0ZXIpIFs6aSBcIlBhZ2VzIHRvIGV4cG9ydDpcIl0pXVxyXG4gICAgICAgKGtlZXBcclxuICAgICAgICAoZm5cclxuICAgICAgICAgW3s6a2V5cyBbc3ltIHR5cGUgdmFyLXN5bXNdfV1cclxuICAgICAgICAgKGxldFxyXG4gICAgICAgICAgW3ZhcnNcclxuICAgICAgICAgICAod2hlblxyXG4gICAgICAgICAgICAoYW5kIHNlYXJjaCAoZW1wdHk/IGV4cG9ydC1maWx0ZXIpKVxyXG4gICAgICAgICAgICAoLT4+XHJcbiAgICAgICAgICAgICB2YXItc3ltc1xyXG4gICAgICAgICAgICAgKGZpbHRlclxyXG4gICAgICAgICAgICAgIChmbiogW3AxX180MTYwOSNdIChyZS1maW5kIHNlYXJjaCAoc3RyIHAxX180MTYwOSMpKSkpXHJcbiAgICAgICAgICAgICAobWFwdlxyXG4gICAgICAgICAgICAgIChmblxyXG4gICAgICAgICAgICAgICBbdmFyLXN5bV1cclxuICAgICAgICAgICAgICAgWzpkaXZcclxuICAgICAgICAgICAgICAgIHs6Y2xhc3MgXCJ2YXJcIn1cclxuICAgICAgICAgICAgICAgIFs6YVxyXG4gICAgICAgICAgICAgICAgIHs6aHJlZlxyXG4gICAgICAgICAgICAgICAgICAodmFyLXN5bS0+dXJsIHJlbC1wYXRoIHN0YXRpYz8gdHlwZSBzeW0gdmFyLXN5bSl9XHJcbiAgICAgICAgICAgICAgICAgKHN0ciB2YXItc3ltKV1dKSkpKV1cclxuICAgICAgICAgICh3aGVuXHJcbiAgICAgICAgICAgKG9yIChuaWw/IHNlYXJjaCkgKHJlLWZpbmQgc2VhcmNoIChzdHIgc3ltKSkgKHNlcSB2YXJzKSlcclxuICAgICAgICAgICBbOmRpdlxyXG4gICAgICAgICAgICAod2hlblxyXG4gICAgICAgICAgICAgKGFuZCAoPSB0eXBlIDpjbGpzKSAobm90IGhpZGUtYmFkZ2U/KSlcclxuICAgICAgICAgICAgIFs6ZGl2IHs6Y2xhc3MgXCJ0YWdcIn0gXCJDTEpTXCJdKVxyXG4gICAgICAgICAgICBbOmFcclxuICAgICAgICAgICAgIHs6aHJlZiAobnMtc3ltLT51cmwgcmVsLXBhdGggc3RhdGljPyB0eXBlIHN5bSl9XHJcbiAgICAgICAgICAgICAoc3RyIHN5bSldXHJcbiAgICAgICAgICAgICh3aGVuIChzZXEgdmFycykgKGludG8gWzpkaXZdIHZhcnMpKV0pKSlcclxuICAgICAgICBuc2VzKSldKV19KSlcclxuIn0gezpzeW0gaW5pdC1leGFtcGxlLWVkaXRvciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtydW0tc3RhdGVdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBpbml0LWV4YW1wbGUtZWRpdG9yXHJcbiBbcnVtLXN0YXRlXVxyXG4gKGxldFxyXG4gIFtbc3RhdGUgZXhhbXBsZV0gKDpydW0vYXJncyBydW0tc3RhdGUpXVxyXG4gICh3aGVuLWxldFxyXG4gICBbaW5pdCAoOmluaXQtZXhhbXBsZS1lZGl0b3Igc3RhdGUpXVxyXG4gICAoaW5pdCAocnVtL2RvbS1ub2RlIHJ1bS1zdGF0ZSkgZXhhbXBsZSkpKVxyXG4gcnVtLXN0YXRlKVxyXG4ifSksIHBhcmVuLXNvdXAuZG9tICh7OnN5bSB0b3AtbGV2ZWw/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW25vZGVdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB0b3AtbGV2ZWw/XHJcbiBbbm9kZV1cclxuIChib29sZWFuXHJcbiAgKHNvbWUtPiBub2RlIC4tcGFyZW50RWxlbWVudCAuLWNsYXNzTGlzdCAoLmNvbnRhaW5zIFwiY29udGVudFwiKSkpKVxyXG4ifSB7OnN5bSBnZXQtc2VsZWN0aW9uLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgb2JqZWN0cyByZWxhdGVkIHRvIHNlbGVjdGlvbiBmb3IgdGhlIGdpdmVuIGVsZW1lbnQuIElmIGZ1bGwtc2VsZWN0aW9uPyBpcyB0cnVlLFxuaXQgd2lsbCB1c2UgcmFuZ3kgaW5zdGVhZCBvZiB0aGUgbmF0aXZlIHNlbGVjdGlvbiBBUEkgaW4gb3JkZXIgdG8gZ2V0IHRoZSBiZWdpbm5pbmcgYW5kIGVuZGluZ1xub2YgdGhlIHNlbGVjdGlvbiAoaXQgaXMsIGhvd2V2ZXIsIG11Y2ggc2xvd2VyKS4iLCA6YXJnbGlzdHMgKFtlbGVtZW50IGZ1bGwtc2VsZWN0aW9uP10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGdldC1zZWxlY3Rpb25cclxuIFwiUmV0dXJucyB0aGUgb2JqZWN0cyByZWxhdGVkIHRvIHNlbGVjdGlvbiBmb3IgdGhlIGdpdmVuIGVsZW1lbnQuIElmIGZ1bGwtc2VsZWN0aW9uPyBpcyB0cnVlLFxcbml0IHdpbGwgdXNlIHJhbmd5IGluc3RlYWQgb2YgdGhlIG5hdGl2ZSBzZWxlY3Rpb24gQVBJIGluIG9yZGVyIHRvIGdldCB0aGUgYmVnaW5uaW5nIGFuZCBlbmRpbmdcXG5vZiB0aGUgc2VsZWN0aW9uIChpdCBpcywgaG93ZXZlciwgbXVjaCBzbG93ZXIpLlwiXHJcbiBbZWxlbWVudCBmdWxsLXNlbGVjdGlvbj9dXHJcbiB7OmVsZW1lbnQgZWxlbWVudCxcclxuICA6Y3Vyc29yLXBvc2l0aW9uXHJcbiAgKGNvbmRcclxuICAgZnVsbC1zZWxlY3Rpb24/XHJcbiAgIChsZXRcclxuICAgIFtzZWxlY3Rpb25cclxuICAgICAoLmdldFNlbGVjdGlvbiBqcy9yYW5neSlcclxuICAgICByYW5nZXNcclxuICAgICAoLnNhdmVDaGFyYWN0ZXJSYW5nZXMgc2VsZWN0aW9uIGVsZW1lbnQpXVxyXG4gICAgKGlmLWxldFxyXG4gICAgIFtjaGFyLXJhbmdlIChzb21lLT4gcmFuZ2VzIChhZ2V0IDApIChnb2JqL2dldCBcImNoYXJhY3RlclJhbmdlXCIpKV1cclxuICAgICBbKGdvYmovZ2V0IGNoYXItcmFuZ2UgXCJzdGFydFwiKSAoZ29iai9nZXQgY2hhci1yYW5nZSBcImVuZFwiKV1cclxuICAgICBbMCAwXSkpXHJcbiAgICg9IDAgKC4tcmFuZ2VDb3VudCAoLmdldFNlbGVjdGlvbiBqcy93aW5kb3cpKSlcclxuICAgWzAgMF1cclxuICAgOmVsc2VcclxuICAgKGxldFxyXG4gICAgW3NlbGVjdGlvblxyXG4gICAgICguZ2V0U2VsZWN0aW9uIGpzL3dpbmRvdylcclxuICAgICByYW5nZVxyXG4gICAgICguZ2V0UmFuZ2VBdCBzZWxlY3Rpb24gMClcclxuICAgICBwcmUtY2FyZXQtcmFuZ2VcclxuICAgICAoZG90b1xyXG4gICAgICAoLmNsb25lUmFuZ2UgcmFuZ2UpXHJcbiAgICAgICguc2VsZWN0Tm9kZUNvbnRlbnRzIGVsZW1lbnQpXHJcbiAgICAgICguc2V0RW5kICguLWVuZENvbnRhaW5lciByYW5nZSkgKC4tZW5kT2Zmc2V0IHJhbmdlKSkpXHJcbiAgICAgcG9zXHJcbiAgICAgKC0+IHByZS1jYXJldC1yYW5nZSAudG9TdHJpbmcgKHN0ci9yZXBsYWNlICNcIlxcclwiIFwiXCIpIC4tbGVuZ3RoKV1cclxuICAgIFtwb3MgcG9zXSkpfSlcclxuIn0gezpzeW0gZ2V0LWN1cnNvci1wb3NpdGlvbiwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGN1cnNvciBwb3NpdGlvbi4iLCA6YXJnbGlzdHMgKFtlbGVtZW50IGZ1bGwtc2VsZWN0aW9uP10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGdldC1jdXJzb3ItcG9zaXRpb25cclxuIFwiUmV0dXJucyB0aGUgY3Vyc29yIHBvc2l0aW9uLlwiXHJcbiBbZWxlbWVudCBmdWxsLXNlbGVjdGlvbj9dXHJcbiAoLT4gZWxlbWVudCAoZ2V0LXNlbGVjdGlvbiBmdWxsLXNlbGVjdGlvbj8pIDpjdXJzb3ItcG9zaXRpb24pKVxyXG4ifSB7OnN5bSB0ZXh0LW5vZGU/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW25vZGVdKX0sIDpzb3VyY2UgIihkZWZuIHRleHQtbm9kZT8gW25vZGVdICg9IDMgKC4tbm9kZVR5cGUgbm9kZSkpKVxyXG4ifSB7OnN5bSBnZXQtZm9jdXNlZC1mb3JtLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBnZXQtZm9jdXNlZC1mb3JtIChmbiogW10gKGdldC1mb2N1c2VkLWVsZW0gXCJjb2xsZWN0aW9uXCIpKSlcclxuIn0gezpzeW0gZ2V0LWZvY3VzZWQtdG9wLWxldmVsLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGdldC1mb2N1c2VkLXRvcC1sZXZlbFxyXG4gW11cclxuICh3aGVuLWxldFxyXG4gIFtub2RlIChzb21lLT4ganMvcmFuZ3kgLmdldFNlbGVjdGlvbiAuLWFuY2hvck5vZGUpXVxyXG4gIChsb29wXHJcbiAgIFtub2RlIG5vZGVdXHJcbiAgIChpZlxyXG4gICAgKHRvcC1sZXZlbD8gbm9kZSlcclxuICAgIG5vZGVcclxuICAgICh3aGVuLWxldCBbcGFyZW50ICguLXBhcmVudEVsZW1lbnQgbm9kZSldIChyZWN1ciBwYXJlbnQpKSkpKSlcclxuIn0gezpzeW0gZ2V0LXBhcmVudCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG5lYXJlc3QgcGFyZW50IHdpdGggdGhlIGdpdmVuIGNsYXNzIG5hbWUuIiwgOmFyZ2xpc3RzIChbbm9kZSBjbGFzcy1uYW1lXSl9LCA6c291cmNlICIoZGVmblxyXG4gZ2V0LXBhcmVudFxyXG4gXCJSZXR1cm5zIHRoZSBuZWFyZXN0IHBhcmVudCB3aXRoIHRoZSBnaXZlbiBjbGFzcyBuYW1lLlwiXHJcbiBbbm9kZSBjbGFzcy1uYW1lXVxyXG4gKGxvb3BcclxuICBbbm9kZSBub2RlXVxyXG4gICh3aGVuLWxldFxyXG4gICBbcGFyZW50ICguLXBhcmVudEVsZW1lbnQgbm9kZSldXHJcbiAgIChpZlxyXG4gICAgKC5jb250YWlucyAoLi1jbGFzc0xpc3QgcGFyZW50KSBjbGFzcy1uYW1lKVxyXG4gICAgcGFyZW50XHJcbiAgICAocmVjdXIgcGFyZW50KSkpKSlcclxuIn0gezpzeW0gY29sbC1ub2RlPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtub2RlXSl9LCA6c291cmNlICIoZGVmblxyXG4gY29sbC1ub2RlP1xyXG4gW25vZGVdXHJcbiAoYm9vbGVhbiAoc29tZS0+IG5vZGUgLi1jbGFzc0xpc3QgKC5jb250YWlucyBcImNvbGxlY3Rpb25cIikpKSlcclxuIn0gezpzeW0gZ2V0LW5lYXJlc3QtbnMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbm9kZV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGdldC1uZWFyZXN0LW5zXHJcbiBbbm9kZV1cclxuIChsb29wXHJcbiAgW25vZGUgbm9kZV1cclxuICAoaWZcclxuICAgKHNvbWUtPiBub2RlIC4tY2hpbGROb2RlcyAoLml0ZW0gMSkgLi10ZXh0Q29udGVudCAoPSBcIm5zXCIpKVxyXG4gICAoc29tZS0+IG5vZGUgLi1jaGlsZE5vZGVzICguaXRlbSAzKSAuLXRleHRDb250ZW50IHN5bWJvbClcclxuICAgKHdoZW4tbGV0IFtzaWJsaW5nICguLXByZXZpb3VzU2libGluZyBub2RlKV0gKHJlY3VyIHNpYmxpbmcpKSkpKVxyXG4ifSB7OnN5bSBpbnNlcnQtdGV4dCEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGV4dF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGluc2VydC10ZXh0IVxyXG4gW3RleHRdXHJcbiAobGV0XHJcbiAgW3NlbGVjdGlvblxyXG4gICAoLmdldFNlbGVjdGlvbiBqcy93aW5kb3cpXHJcbiAgIHJhbmdlXHJcbiAgICguZ2V0UmFuZ2VBdCBzZWxlY3Rpb24gMClcclxuICAgbm9kZVxyXG4gICAoLmNyZWF0ZVRleHROb2RlIGpzL2RvY3VtZW50IHRleHQpXVxyXG4gIChkb3RvXHJcbiAgIHJhbmdlXHJcbiAgIC5kZWxldGVDb250ZW50c1xyXG4gICAoLmluc2VydE5vZGUgbm9kZSlcclxuICAgKC5zZXRTdGFydEFmdGVyIG5vZGUpXHJcbiAgICguc2V0RW5kQWZ0ZXIgbm9kZSlcclxuICAgKC5jb2xsYXBzZSBmYWxzZSkpKSlcclxuIn0gezpzeW0gZ2V0LWNvbXBsZXRpb24taW5mbywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBnZXQtY29tcGxldGlvbi1pbmZvXHJcbiBbXVxyXG4gKHdoZW4tbGV0XHJcbiAgW3ByZWZpeC1lbGVtIChnZXQtZm9jdXNlZC1lbGVtIFwic3ltYm9sXCIpXVxyXG4gIChsZXRcclxuICAgW3Bvc1xyXG4gICAgKC0+IHByZWZpeC1lbGVtIChnZXQtY3Vyc29yLXBvc2l0aW9uIGZhbHNlKSBmaXJzdClcclxuICAgIHRleHRcclxuICAgICguLXRleHRDb250ZW50IHByZWZpeC1lbGVtKVxyXG4gICAgcHJlZml4XHJcbiAgICAoc3VicyB0ZXh0IDAgcG9zKV1cclxuICAgKGFzc29jXHJcbiAgICAoZ2V0LWNvbXBsZXRpb24tY29udGV4dCAoY291bnQgdGV4dCkgKGNvdW50IHByZWZpeCkpXHJcbiAgICA6dGV4dFxyXG4gICAgdGV4dFxyXG4gICAgOnByZWZpeFxyXG4gICAgcHJlZml4KSkpKVxyXG4ifSB7OnN5bSBzZXQtY3Vyc29yLXBvc2l0aW9uISwgOm1ldGEgezpkb2MgIk1vdmVzIHRoZSBjdXJzb3IgdG8gdGhlIHNwZWNpZmllZCBwb3NpdGlvbi4iLCA6YXJnbGlzdHMgKFtlbGVtZW50IHBvc2l0aW9uXSl9LCA6c291cmNlICIoZGVmblxyXG4gc2V0LWN1cnNvci1wb3NpdGlvbiFcclxuIFwiTW92ZXMgdGhlIGN1cnNvciB0byB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLlwiXHJcbiBbZWxlbWVudCBwb3NpdGlvbl1cclxuIChsZXRcclxuICBbW3N0YXJ0LXBvcyBlbmQtcG9zXVxyXG4gICBwb3NpdGlvblxyXG4gICBtYXgtbGVuZ3RoXHJcbiAgICgtPiBlbGVtZW50IC4tdGV4dENvbnRlbnQgY291bnQpXHJcbiAgIHNlbGVjdGlvblxyXG4gICAoLmdldFNlbGVjdGlvbiBqcy9yYW5neSlcclxuICAgY2hhci1yYW5nZVxyXG4gICAjanMgezpzdGFydCBzdGFydC1wb3MsIDplbmQgZW5kLXBvc31cclxuICAgcmFuZ2VcclxuICAgI2pzIHs6Y2hhcmFjdGVyUmFuZ2UgY2hhci1yYW5nZSwgOmJhY2t3YXJkIGZhbHNlLCA6Y2hhcmFjdGVyT3B0aW9ucyBuaWx9XHJcbiAgIHJhbmdlc1xyXG4gICAoYXJyYXkgcmFuZ2UpXVxyXG4gICgucmVzdG9yZUNoYXJhY3RlclJhbmdlcyBzZWxlY3Rpb24gZWxlbWVudCByYW5nZXMpKSlcclxuIn0gezpzeW0gZ2V0LWZvY3VzZWQtZWxlbSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjbGFzcy1uYW1lXSl9LCA6c291cmNlICIoZGVmblxyXG4gZ2V0LWZvY3VzZWQtZWxlbVxyXG4gW2NsYXNzLW5hbWVdXHJcbiAoc29tZS0+IGpzL3Jhbmd5IC5nZXRTZWxlY3Rpb24gLi1hbmNob3JOb2RlIChnZXQtcGFyZW50IGNsYXNzLW5hbWUpKSlcclxuIn0gezpzeW0gZXJyb3Itbm9kZT8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbm9kZV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGVycm9yLW5vZGU/XHJcbiBbbm9kZV1cclxuIChib29sZWFuIChzb21lLT4gbm9kZSAuLWNsYXNzTGlzdCAoLmNvbnRhaW5zIFwiZXJyb3JcIikpKSlcclxuIn0gezpzeW0gZ2V0LWNvbXBsZXRpb24tY29udGV4dCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzeW1ib2wtbGVuZ3RoIGN1cnNvci1vZmZzZXRdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBnZXQtY29tcGxldGlvbi1jb250ZXh0XHJcbiBbc3ltYm9sLWxlbmd0aCBjdXJzb3Itb2Zmc2V0XVxyXG4gKHdoZW4tbGV0XHJcbiAgW3RvcC1sZXZlbC1lbGVtIChnZXQtZm9jdXNlZC10b3AtbGV2ZWwpXVxyXG4gIChsZXRcclxuICAgW3Bvc1xyXG4gICAgKC0+IHRvcC1sZXZlbC1lbGVtIChnZXQtY3Vyc29yLXBvc2l0aW9uIGZhbHNlKSBmaXJzdClcclxuICAgIHByZWZpeC1zdGFydFxyXG4gICAgKC0gcG9zIGN1cnNvci1vZmZzZXQpXHJcbiAgICB0ZXh0XHJcbiAgICAoLi10ZXh0Q29udGVudCB0b3AtbGV2ZWwtZWxlbSldXHJcbiAgIHs6bnMgKGdldC1uZWFyZXN0LW5zIHRvcC1sZXZlbC1lbGVtKSxcclxuICAgIDpjb250ZXh0LWJlZm9yZSAoc3VicyB0ZXh0IDAgcHJlZml4LXN0YXJ0KSxcclxuICAgIDpjb250ZXh0LWFmdGVyIChzdWJzIHRleHQgKCsgcHJlZml4LXN0YXJ0IHN5bWJvbC1sZW5ndGgpKSxcclxuICAgIDpzdGFydC1wb3NpdGlvbiBwcmVmaXgtc3RhcnR9KSkpXHJcbiJ9IHs6c3ltIGNvbW1vbi1hbmNlc3RvciwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGNvbW1vbiBhbmNlc3RvciBvZiB0aGUgZ2l2ZW4gbm9kZXMuIiwgOmFyZ2xpc3RzIChbZmlyc3Qtbm9kZSBzZWNvbmQtbm9kZV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGNvbW1vbi1hbmNlc3RvclxyXG4gXCJSZXR1cm5zIHRoZSBjb21tb24gYW5jZXN0b3Igb2YgdGhlIGdpdmVuIG5vZGVzLlwiXHJcbiBbZmlyc3Qtbm9kZSBzZWNvbmQtbm9kZV1cclxuIChsZXRcclxuICBbZmlyc3QtcGFyZW50XHJcbiAgIChmaXJzdCAoZ2V0LXBhcmVudHMgZmlyc3Qtbm9kZSBcImNvbGxlY3Rpb25cIikpXHJcbiAgIHNlY29uZC1wYXJlbnRcclxuICAgKGZpcnN0IChnZXQtcGFyZW50cyBzZWNvbmQtbm9kZSBcImNvbGxlY3Rpb25cIikpXVxyXG4gIChjb25kXHJcbiAgIChhbmQgZmlyc3QtcGFyZW50IHNlY29uZC1wYXJlbnQgKD0gZmlyc3QtcGFyZW50IHNlY29uZC1wYXJlbnQpKVxyXG4gICBmaXJzdC1wYXJlbnRcclxuICAgKGFuZFxyXG4gICAgKD0gZmlyc3Qtbm9kZSBzZWNvbmQtbm9kZSlcclxuICAgICh0ZXh0LW5vZGU/IGZpcnN0LW5vZGUpXHJcbiAgICAodG9wLWxldmVsPyBmaXJzdC1ub2RlKSlcclxuICAgZmlyc3Qtbm9kZSkpKVxyXG4ifSB7OnN5bSBnZXQtcGFyZW50cywgOm1ldGEgezpkb2MgIlJldHVybnMgYWxsIHRoZSBwYXJlbnRzIHdpdGggdGhlIGdpdmVuIGNsYXNzIG5hbWUuIiwgOmFyZ2xpc3RzIChbbm9kZSBjbGFzcy1uYW1lXSl9LCA6c291cmNlICIoZGVmblxyXG4gZ2V0LXBhcmVudHNcclxuIFwiUmV0dXJucyBhbGwgdGhlIHBhcmVudHMgd2l0aCB0aGUgZ2l2ZW4gY2xhc3MgbmFtZS5cIlxyXG4gW25vZGUgY2xhc3MtbmFtZV1cclxuIChsb29wXHJcbiAgW25vZGUgbm9kZSBlbGVtcyAnKCldXHJcbiAgKGlmLWxldFxyXG4gICBbcGFyZW50IChnZXQtcGFyZW50IG5vZGUgY2xhc3MtbmFtZSldXHJcbiAgIChyZWN1ciBwYXJlbnQgKGNvbmogZWxlbXMgcGFyZW50KSlcclxuICAgZWxlbXMpKSlcclxuIn0gezpzeW0gbm9kZT8sIDptZXRhIHt9LCA6c291cmNlICIoZGVmIG5vZGU/IChmbiogW3AxX180MTY1OCNdIChpbnN0YW5jZT8ganMvTm9kZSBwMV9fNDE2NTgjKSkpXHJcbiJ9IHs6c3ltIHNjcm9sbC10by1uZWFyZXN0LWVsZW0sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxyXG4gc2Nyb2xsLXRvLW5lYXJlc3QtZWxlbVxyXG4gW11cclxuIChzb21lLT5cclxuICBqcy9yYW5neVxyXG4gIC5nZXRTZWxlY3Rpb25cclxuICAuLWFuY2hvck5vZGVcclxuICAuLXBhcmVudEVsZW1lbnRcclxuICAoLnNjcm9sbEludG9WaWV3XHJcbiAgICNqcyB7OmJlaGF2aW9yIFwiYXV0b1wiLCA6YmxvY2sgXCJuZWFyZXN0XCIsIDppbmxpbmUgXCJuZWFyZXN0XCJ9KSkpXHJcbiJ9KSwgb2FrY2xqcy50b29scy5yZWFkZXIuaW1wbC5lcnJvcnMgKHs6c3ltIHRocm93LWJhZC1kaXNwYXRjaCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgY2hdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB0aHJvdy1iYWQtZGlzcGF0Y2hcclxuIFtyZHIgY2hdXHJcbiAocmVhZGVyLWVycm9yIHJkciBcIk5vIGRpc3BhdGNoIG1hY3JvIGZvciBcIiBjaCBcIi5cIikpXHJcbiJ9IHs6c3ltIHRocm93LWludmFsaWQtdW5pY29kZS1lc2NhcGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGNoXSl9LCA6c291cmNlICIoZGVmblxyXG4gdGhyb3ctaW52YWxpZC11bmljb2RlLWVzY2FwZVxyXG4gW3JkciBjaF1cclxuIChyZWFkZXItZXJyb3IgcmRyIFwiSW52YWxpZCB1bmljb2RlIGVzY2FwZTogXFxcXHVcIiBjaCBcIi5cIikpXHJcbiJ9IHs6c3ltIHRocm93LWR1cC1rZXlzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBraW5kIGtzXSl9LCA6c291cmNlICIoZGVmblxyXG4gdGhyb3ctZHVwLWtleXNcclxuIFtyZHIga2luZCBrc11cclxuIChyZWFkZXItZXJyb3JcclxuICByZHJcclxuICAoZHVwbGljYXRlLWtleXMtZXJyb3JcclxuICAgKHN0ciAocy9jYXBpdGFsaXplIChuYW1lIGtpbmQpKSBcIiBsaXRlcmFsIGNvbnRhaW5zIGR1cGxpY2F0ZSBrZXlcIilcclxuICAga3MpKSlcclxuIn0gezpzeW0gdGhyb3ctYmFkLW5zLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBucy1uYW1lXSl9LCA6c291cmNlICIoZGVmblxyXG4gdGhyb3ctYmFkLW5zXHJcbiBbcmRyIG5zLW5hbWVdXHJcbiAocmVhZGVyLWVycm9yXHJcbiAgcmRyXHJcbiAgXCJJbnZhbGlkIHZhbHVlIHVzZWQgYXMgbmFtZXNwYWNlIGluIG5hbWVzcGFjZWQgbWFwOiBcIlxyXG4gIG5zLW5hbWVcclxuICBcIi5cIikpXHJcbiJ9IHs6c3ltIHRocm93LXVua25vd24tcmVhZGVyLXRhZywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgdGFnXSl9LCA6c291cmNlICIoZGVmblxyXG4gdGhyb3ctdW5rbm93bi1yZWFkZXItdGFnXHJcbiBbcmRyIHRhZ11cclxuIChyZWFkZXItZXJyb3IgcmRyIFwiTm8gcmVhZGVyIGZ1bmN0aW9uIGZvciB0YWcgXCIgKGkvaW5zcGVjdCB0YWcpIFwiLlwiKSlcclxuIn0gezpzeW0gdGhyb3ctZW9mLWF0LWRpc3BhdGNoLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3Jkcl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHRocm93LWVvZi1hdC1kaXNwYXRjaFxyXG4gW3Jkcl1cclxuIChlb2YtZXJyb3IgcmRyIFwiVW5leHBlY3RlZCBFT0Ygd2hpbGUgcmVhZGluZyBkaXNwYXRjaCBjaGFyYWN0ZXIuXCIpKVxyXG4ifSB7OnN5bSB0aHJvdy1iYWQtbWV0YWRhdGEtdGFyZ2V0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciB0YXJnZXRdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB0aHJvdy1iYWQtbWV0YWRhdGEtdGFyZ2V0XHJcbiBbcmRyIHRhcmdldF1cclxuIChyZWFkZXItZXJyb3JcclxuICByZHJcclxuICBcIk1ldGFkYXRhIGNhbiBub3QgYmUgYXBwbGllZCB0byBcIlxyXG4gIChpL2luc3BlY3QgdGFyZ2V0KVxyXG4gIFwiLiBcIlxyXG4gIFwiTWV0YWRhdGEgY2FuIG9ubHkgYmUgYXBwbGllZCB0byBJTWV0YXMuXCIpKVxyXG4ifSB7OnN5bSB0aHJvdy1pbnZhbGlkLW51bWJlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgdG9rZW5dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB0aHJvdy1pbnZhbGlkLW51bWJlclxyXG4gW3JkciB0b2tlbl1cclxuIChyZWFkZXItZXJyb3IgcmRyIFwiSW52YWxpZCBudW1iZXI6IFwiIHRva2VuIFwiLlwiKSlcclxuIn0gezpzeW0gcmVhZGVyLWVycm9yLCA6bWV0YSB7OmRvYyAiVGhyb3dzIGFuIEV4Y2VwdGlvbkluZm8gd2l0aCB0aGUgZ2l2ZW4gbWVzc2FnZS5cbiAgIElmIHJkciBpcyBhbiBJbmRleGluZ1JlYWRlciwgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBjb2x1bW4gYW5kIGxpbmUgbnVtYmVyIGlzIHByb3ZpZGVkIiwgOmFyZ2xpc3RzIChbcmRyICYgbXNnc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlYWRlci1lcnJvclxyXG4gXCJUaHJvd3MgYW4gRXhjZXB0aW9uSW5mbyB3aXRoIHRoZSBnaXZlbiBtZXNzYWdlLlxcbiAgIElmIHJkciBpcyBhbiBJbmRleGluZ1JlYWRlciwgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBjb2x1bW4gYW5kIGxpbmUgbnVtYmVyIGlzIHByb3ZpZGVkXCJcclxuIFtyZHIgJiBtc2dzXVxyXG4gKHRocm93LWV4IHJkciA6cmVhZGVyLWVycm9yIChhcHBseSBzdHIgbXNncykpKVxyXG4ifSB7OnN5bSB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtbGl0ZXJhbCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgdG9rZW5dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtbGl0ZXJhbFxyXG4gW3JkciB0b2tlbl1cclxuICh0aHJvd1xyXG4gIChpbGxlZ2FsLWFyZy1lcnJvciByZHIgXCJJbnZhbGlkIHVuaWNvZGUgbGl0ZXJhbDogXFxcXFwiIHRva2VuIFwiLlwiKSkpXHJcbiJ9IHs6c3ltIHRocm93LW5zLW1hcC1uby1tYXAsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIG5zLW5hbWVdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB0aHJvdy1ucy1tYXAtbm8tbWFwXHJcbiBbcmRyIG5zLW5hbWVdXHJcbiAocmVhZGVyLWVycm9yXHJcbiAgcmRyXHJcbiAgXCJOYW1lc3BhY2VkIG1hcCB3aXRoIG5hbWVzcGFjZSBcIlxyXG4gIG5zLW5hbWVcclxuICBcIiBkb2VzIG5vdCBzcGVjaWZ5IGEgbWFwLlwiKSlcclxuIn0gezpzeW0gdGhyb3ctdW5zdXBwb3J0ZWQtY2hhcmFjdGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciB0b2tlbl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHRocm93LXVuc3VwcG9ydGVkLWNoYXJhY3RlclxyXG4gW3JkciB0b2tlbl1cclxuIChyZWFkZXItZXJyb3IgcmRyIFwiVW5zdXBwb3J0ZWQgY2hhcmFjdGVyOiBcIiB0b2tlbiBcIi5cIikpXHJcbiJ9IHs6c3ltIHRocm93LWZlYXR1cmUtbm90LWtleXdvcmQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGZlYXR1cmVdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB0aHJvdy1mZWF0dXJlLW5vdC1rZXl3b3JkXHJcbiBbcmRyIGZlYXR1cmVdXHJcbiAocmVhZGVyLWVycm9yXHJcbiAgcmRyXHJcbiAgXCJGZWF0dXJlIGNhbm5vdCBiZSBcIlxyXG4gIChpL2luc3BlY3QgZmVhdHVyZSlcclxuICBcIiBGZWF0dXJlcyBtdXN0IGJlIGtleXdvcmRzLlwiKSlcclxuIn0gezpzeW0gdGhyb3ctZW9mLWRlbGltaXRlZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1tyZHIga2luZCBjb2x1bW4gbGluZV0gW3JkciBraW5kIGxpbmUgY29sdW1uIG5dXX0sIDpzb3VyY2UgIihkZWZuXHJcbiB0aHJvdy1lb2YtZGVsaW1pdGVkXHJcbiAoW3JkciBraW5kIGNvbHVtbiBsaW5lXVxyXG4gICh0aHJvdy1lb2YtZGVsaW1pdGVkIHJkciBraW5kIGxpbmUgY29sdW1uIG5pbCkpXHJcbiAoW3JkciBraW5kIGxpbmUgY29sdW1uIG5dXHJcbiAgKGVvZi1lcnJvclxyXG4gICByZHJcclxuICAgXCJVbmV4cGVjdGVkIEVPRiB3aGlsZSByZWFkaW5nIFwiXHJcbiAgIChpZiBuIChzdHIgXCJpdGVtIFwiIG4gXCIgb2YgXCIpKVxyXG4gICAobmFtZSBraW5kKVxyXG4gICAoaWYgbGluZSAoc3RyIFwiLCBzdGFydGluZyBhdCBsaW5lIFwiIGxpbmUgXCIgYW5kIGNvbHVtbiBcIiBjb2x1bW4pKVxyXG4gICBcIi5cIikpKVxyXG4ifSB7OnN5bSB0aHJvdy1lb2YtaW4tY2hhcmFjdGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3Jkcl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHRocm93LWVvZi1pbi1jaGFyYWN0ZXJcclxuIFtyZHJdXHJcbiAoZW9mLWVycm9yIHJkciBcIlVuZXhwZWN0ZWQgRU9GIHdoaWxlIHJlYWRpbmcgY2hhcmFjdGVyLlwiKSlcclxuIn0gezpzeW0gdGhyb3ctYmFkLWNoYXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGtpbmQgY2hdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB0aHJvdy1iYWQtY2hhclxyXG4gW3JkciBraW5kIGNoXVxyXG4gKHJlYWRlci1lcnJvclxyXG4gIHJkclxyXG4gIFwiSW52YWxpZCBjaGFyYWN0ZXI6IFwiXHJcbiAgY2hcclxuICBcIiBmb3VuZCB3aGlsZSByZWFkaW5nIFwiXHJcbiAgKG5hbWUga2luZClcclxuICBcIi5cIikpXHJcbiJ9IHs6c3ltIGVvZi1lcnJvciwgOm1ldGEgezpkb2MgIlRocm93cyBhbiBFeGNlcHRpb25JbmZvIHdpdGggdGhlIGdpdmVuIG1lc3NhZ2UuXG4gICBJZiByZHIgaXMgYW4gSW5kZXhpbmdSZWFkZXIsIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgY29sdW1uIGFuZCBsaW5lIG51bWJlciBpcyBwcm92aWRlZCIsIDphcmdsaXN0cyAoW3JkciAmIG1zZ3NdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBlb2YtZXJyb3JcclxuIFwiVGhyb3dzIGFuIEV4Y2VwdGlvbkluZm8gd2l0aCB0aGUgZ2l2ZW4gbWVzc2FnZS5cXG4gICBJZiByZHIgaXMgYW4gSW5kZXhpbmdSZWFkZXIsIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgY29sdW1uIGFuZCBsaW5lIG51bWJlciBpcyBwcm92aWRlZFwiXHJcbiBbcmRyICYgbXNnc11cclxuICh0aHJvdy1leCByZHIgOmVvZiAoYXBwbHkgc3RyIG1zZ3MpKSlcclxuIn0gezpzeW0gdGhyb3ctYmFkLW1ldGFkYXRhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciB4XSl9LCA6c291cmNlICIoZGVmblxyXG4gdGhyb3ctYmFkLW1ldGFkYXRhXHJcbiBbcmRyIHhdXHJcbiAocmVhZGVyLWVycm9yXHJcbiAgcmRyXHJcbiAgXCJNZXRhZGF0YSBjYW5ub3QgYmUgXCJcclxuICAoaS9pbnNwZWN0IHgpXHJcbiAgXCIuIE1ldGFkYXRhIG11c3QgYmUgYSBTeW1ib2wsIEtleXdvcmQsIFN0cmluZyBvciBNYXAuXCIpKVxyXG4ifSB7OnN5bSB0aHJvdy1lb2YtcmVhZGluZywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIga2luZCAmIHN0YXJ0XSl9LCA6c291cmNlICIoZGVmblxyXG4gdGhyb3ctZW9mLXJlYWRpbmdcclxuIFtyZHIga2luZCAmIHN0YXJ0XVxyXG4gKGxldFxyXG4gIFtpbml0IChjYXNlIGtpbmQgOnJlZ2V4IFwiI1xcXCJcIiA6c3RyaW5nIFxcXCIpXVxyXG4gIChlb2YtZXJyb3JcclxuICAgcmRyXHJcbiAgIFwiVW5leHBlY3RlZCBFT0YgcmVhZGluZyBcIlxyXG4gICAobmFtZSBraW5kKVxyXG4gICBcIiBzdGFydGluZyBcIlxyXG4gICAoYXBwbHkgc3RyIGluaXQgc3RhcnQpXHJcbiAgIFwiLlwiKSkpXHJcbiJ9IHs6c3ltIHRocm93LWVvZi1lcnJvciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgbGluZV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHRocm93LWVvZi1lcnJvclxyXG4gW3JkciBsaW5lXVxyXG4gKGlmXHJcbiAgbGluZVxyXG4gIChlb2YtZXJyb3IgcmRyIFwiRU9GIHdoaWxlIHJlYWRpbmcsIHN0YXJ0aW5nIGF0IGxpbmUgXCIgbGluZSBcIi5cIilcclxuICAoZW9mLWVycm9yIHJkciBcIkVPRiB3aGlsZSByZWFkaW5nLlwiKSkpXHJcbiJ9IHs6c3ltIGlsbGVnYWwtYXJnLWVycm9yLCA6bWV0YSB7OmRvYyAiVGhyb3dzIGFuIEV4Y2VwdGlvbkluZm8gd2l0aCB0aGUgZ2l2ZW4gbWVzc2FnZS5cbiAgIElmIHJkciBpcyBhbiBJbmRleGluZ1JlYWRlciwgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBjb2x1bW4gYW5kIGxpbmUgbnVtYmVyIGlzIHByb3ZpZGVkIiwgOmFyZ2xpc3RzIChbcmRyICYgbXNnc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGlsbGVnYWwtYXJnLWVycm9yXHJcbiBcIlRocm93cyBhbiBFeGNlcHRpb25JbmZvIHdpdGggdGhlIGdpdmVuIG1lc3NhZ2UuXFxuICAgSWYgcmRyIGlzIGFuIEluZGV4aW5nUmVhZGVyLCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGNvbHVtbiBhbmQgbGluZSBudW1iZXIgaXMgcHJvdmlkZWRcIlxyXG4gW3JkciAmIG1zZ3NdXHJcbiAodGhyb3ctZXggcmRyIDppbGxlZ2FsLWFyZ3VtZW50IChhcHBseSBzdHIgbXNncykpKVxyXG4ifSB7OnN5bSB0aHJvdy1pbnZhbGlkLW9jdGFsLWxlbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgdG9rZW5dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB0aHJvdy1pbnZhbGlkLW9jdGFsLWxlblxyXG4gW3JkciB0b2tlbl1cclxuIChyZWFkZXItZXJyb3JcclxuICByZHJcclxuICBcIkludmFsaWQgb2N0YWwgZXNjYXBlIHNlcXVlbmNlIGluIGEgY2hhcmFjdGVyIGxpdGVyYWw6XCJcclxuICB0b2tlblxyXG4gIFwiLiBPY3RhbCBlc2NhcGUgc2VxdWVuY2VzIG11c3QgYmUgMyBvciBmZXdlciBkaWdpdHMuXCIpKVxyXG4ifSB7OnN5bSB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtZGlnaXQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGNoXSl9LCA6c291cmNlICIoZGVmblxyXG4gdGhyb3ctaW52YWxpZC11bmljb2RlLWRpZ2l0XHJcbiBbcmRyIGNoXVxyXG4gKGlsbGVnYWwtYXJnLWVycm9yIHJkciBcIkludmFsaWQgZGlnaXQgXCIgY2ggXCIgaW4gdW5pY29kZSBjaGFyYWN0ZXIuXCIpKVxyXG4ifSB7OnN5bSB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtZGlnaXQtaW4tdG9rZW4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGNoIHRva2VuXSl9LCA6c291cmNlICIoZGVmblxyXG4gdGhyb3ctaW52YWxpZC11bmljb2RlLWRpZ2l0LWluLXRva2VuXHJcbiBbcmRyIGNoIHRva2VuXVxyXG4gKGlsbGVnYWwtYXJnLWVycm9yXHJcbiAgcmRyXHJcbiAgXCJJbnZhbGlkIGRpZ2l0IFwiXHJcbiAgY2hcclxuICBcIiBpbiB1bmljb2RlIGNoYXJhY3RlciBcXFxcXCJcclxuICB0b2tlblxyXG4gIFwiLlwiKSlcclxuIn0gezpzeW0gdGhyb3ctaW52YWxpZC11bmljb2RlLWxlbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgYWN0dWFsIGV4cGVjdGVkXSl9LCA6c291cmNlICIoZGVmblxyXG4gdGhyb3ctaW52YWxpZC11bmljb2RlLWxlblxyXG4gW3JkciBhY3R1YWwgZXhwZWN0ZWRdXHJcbiAoaWxsZWdhbC1hcmctZXJyb3JcclxuICByZHJcclxuICBcIkludmFsaWQgdW5pY29kZSBsaXRlcmFsLiBVbmljb2RlIGxpdGVyYWxzIHNob3VsZCBiZSBcIlxyXG4gIGV4cGVjdGVkXHJcbiAgXCJjaGFyYWN0ZXJzIGxvbmcuICBcIlxyXG4gIFwidmFsdWUgc3VwcGxlZCBpcyBcIlxyXG4gIGFjdHVhbFxyXG4gIFwiY2hhcmFjdGVycyBsb25nLlwiKSlcclxuIn0gezpzeW0gdGhyb3ctc2luZ2xlLWNvbG9uLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3Jkcl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHRocm93LXNpbmdsZS1jb2xvblxyXG4gW3Jkcl1cclxuIChyZWFkZXItZXJyb3IgcmRyIFwiQSBzaW5nbGUgY29sb24gaXMgbm90IGEgdmFsaWQga2V5d29yZC5cIikpXHJcbiJ9IHs6c3ltIHRocm93LW9kZC1tYXAsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGxpbmUgY29sIGVsZW1lbnRzXSl9LCA6c291cmNlICIoZGVmblxyXG4gdGhyb3ctb2RkLW1hcFxyXG4gW3JkciBsaW5lIGNvbCBlbGVtZW50c11cclxuIChyZWFkZXItZXJyb3JcclxuICByZHJcclxuICBcIlRoZSBtYXAgbGl0ZXJhbCBzdGFydGluZyB3aXRoIFwiXHJcbiAgKGkvaW5zcGVjdCAoZmlyc3QgZWxlbWVudHMpKVxyXG4gIChpZiBsaW5lIChzdHIgXCIgb24gbGluZSBcIiBsaW5lIFwiIGNvbHVtbiBcIiBjb2wpKVxyXG4gIFwiIGNvbnRhaW5zIFwiXHJcbiAgKGNvdW50IGVsZW1lbnRzKVxyXG4gIFwiIGZvcm0ocykuIE1hcCBsaXRlcmFscyBtdXN0IGNvbnRhaW4gYW4gZXZlbiBudW1iZXIgb2YgZm9ybXMuXCIpKVxyXG4ifSB7OnN5bSB0aHJvdy1iYWQtb2N0YWwtbnVtYmVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3Jkcl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHRocm93LWJhZC1vY3RhbC1udW1iZXJcclxuIFtyZHJdXHJcbiAocmVhZGVyLWVycm9yIHJkciBcIk9jdGFsIGVzY2FwZSBzZXF1ZW5jZSBtdXN0IGJlIGluIHJhbmdlIFswLCAzNzddLlwiKSlcclxuIn0gezpzeW0gdGhyb3ctYmFkLXJlYWRlci10YWcsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIHRhZ10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHRocm93LWJhZC1yZWFkZXItdGFnXHJcbiBbcmRyIHRhZ11cclxuIChyZWFkZXItZXJyb3JcclxuICByZHJcclxuICBcIkludmFsaWQgcmVhZGVyIHRhZzogXCJcclxuICAoaS9pbnNwZWN0IHRhZylcclxuICBcIi4gUmVhZGVyIHRhZ3MgbXVzdCBiZSBzeW1ib2xzLlwiKSlcclxuIn0gezpzeW0gdGhyb3ctdW5tYXRjaC1kZWxpbWl0ZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGNoXSl9LCA6c291cmNlICIoZGVmblxyXG4gdGhyb3ctdW5tYXRjaC1kZWxpbWl0ZXJcclxuIFtyZHIgY2hdXHJcbiAocmVhZGVyLWVycm9yIHJkciBcIlVubWF0Y2hlZCBkZWxpbWl0ZXIgXCIgY2ggXCIuXCIpKVxyXG4ifSB7OnN5bSB0aHJvdy1pbnZhbGlkLWNoYXJhY3Rlci1saXRlcmFsLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciB0b2tlbl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHRocm93LWludmFsaWQtY2hhcmFjdGVyLWxpdGVyYWxcclxuIFtyZHIgdG9rZW5dXHJcbiAocmVhZGVyLWVycm9yIHJkciBcIkludmFsaWQgY2hhcmFjdGVyIGxpdGVyYWwgXFxcXHVcIiB0b2tlbiBcIi5cIikpXHJcbiJ9IHs6c3ltIHRocm93LWludmFsaWQtdW5pY29kZS1jaGFyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciB0b2tlbl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHRocm93LWludmFsaWQtdW5pY29kZS1jaGFyXHJcbiBbcmRyIHRva2VuXVxyXG4gKHJlYWRlci1lcnJvciByZHIgXCJJbnZhbGlkIHVuaWNvZGUgY2hhcmFjdGVyIFxcXFxcIiB0b2tlbiBcIi5cIikpXHJcbiJ9IHs6c3ltIHRocm93LWJhZC1lc2NhcGUtY2hhciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgY2hdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB0aHJvdy1iYWQtZXNjYXBlLWNoYXJcclxuIFtyZHIgY2hdXHJcbiAocmVhZGVyLWVycm9yIHJkciBcIlVuc3VwcG9ydGVkIGVzY2FwZSBjaGFyYWN0ZXI6IFxcXFxcIiBjaCBcIi5cIikpXHJcbiJ9IHs6c3ltIHRocm93LW5vLWRpc3BhdGNoLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBjaF0pfSwgOnNvdXJjZSAiKGRlZm4gdGhyb3ctbm8tZGlzcGF0Y2ggW3JkciBjaF0gKHRocm93LWJhZC1kaXNwYXRjaCByZHIgY2gpKVxyXG4ifSB7OnN5bSB0aHJvdy1lb2YtYXQtc3RhcnQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGtpbmRdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB0aHJvdy1lb2YtYXQtc3RhcnRcclxuIFtyZHIga2luZF1cclxuIChlb2YtZXJyb3JcclxuICByZHJcclxuICBcIlVuZXhwZWN0ZWQgRU9GIHdoaWxlIHJlYWRpbmcgc3RhcnQgb2YgXCJcclxuICAobmFtZSBraW5kKVxyXG4gIFwiLlwiKSlcclxuIn0gezpzeW0gdGhyb3ctaW52YWxpZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIga2luZCB0b2tlbl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHRocm93LWludmFsaWRcclxuIFtyZHIga2luZCB0b2tlbl1cclxuIChyZWFkZXItZXJyb3IgcmRyIFwiSW52YWxpZCBcIiAobmFtZSBraW5kKSBcIjogXCIgdG9rZW4gXCIuXCIpKVxyXG4ifSksIGR5bmFkb2MuY29yZSAoezpzeW0gY2xqLWNvbXBpbGVyLWZuLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2V4YW1wbGUgZm9ybXMgY2JdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBjbGotY29tcGlsZXItZm5cclxuIFtleGFtcGxlIGZvcm1zIGNiXVxyXG4gKGxldFxyXG4gIFtucy1zeW0gKDpucy1zeW0gKGNvbW1vbi9nZXQtc3RhdGUpKV1cclxuICAodHJ5XHJcbiAgICguc2VuZFxyXG4gICAgWGhySW9cclxuICAgIFwiL2V2YWxcIlxyXG4gICAgKGZuXHJcbiAgICAgW2VdXHJcbiAgICAgKGlmXHJcbiAgICAgICguaXNTdWNjZXNzICguLXRhcmdldCBlKSlcclxuICAgICAgKC0+PlxyXG4gICAgICAgKC4uIGUgLXRhcmdldCBnZXRSZXNwb25zZVRleHQpXHJcbiAgICAgICByZWFkLXN0cmluZ1xyXG4gICAgICAgcmVzdFxyXG4gICAgICAgKG1hcHZcclxuICAgICAgICAoZm4qXHJcbiAgICAgICAgIFtwMV9fNDE2MTAjXVxyXG4gICAgICAgICAoaWYgKHZlY3Rvcj8gcDFfXzQxNjEwIykgKGludG8tYXJyYXkgcDFfXzQxNjEwIykgcDFfXzQxNjEwIykpKVxyXG4gICAgICAgY2IpXHJcbiAgICAgIChjYiBbXSkpKVxyXG4gICAgXCJQT1NUXCJcclxuICAgIChwci1zdHJcclxuICAgICAoaW50b1xyXG4gICAgICBbKGxpc3QgJ2luLW5zIChsaXN0ICdxdW90ZSBucy1zeW0pKV1cclxuICAgICAgKG1hcHYgKHBhcnRpYWwgdHJhbnNmb3JtIChkaXNzb2MgZXhhbXBsZSA6d2l0aC1jYXJkKSkgZm9ybXMpKSkpXHJcbiAgIChjYXRjaCBqcy9FcnJvciBfIChjYiBbXSkpKSkpXHJcbiJ9IHs6c3ltIGZvcm0tPnNlcmlhbGl6YWJsZSwgOm1ldGEgezpkb2MgIkNvbnZlcnRzIHRoZSBpbnB1dCB0byBlaXRoZXIgYSBzdHJpbmcgb3IgKGlmIGFuIGVycm9yIG9iamVjdCkgYW4gYXJyYXkgb2YgZGF0YSIsIDphcmdsaXN0cyAoW2Zvcm1dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBmb3JtLT5zZXJpYWxpemFibGVcclxuIFwiQ29udmVydHMgdGhlIGlucHV0IHRvIGVpdGhlciBhIHN0cmluZyBvciAoaWYgYW4gZXJyb3Igb2JqZWN0KSBhbiBhcnJheSBvZiBkYXRhXCJcclxuIFtmb3JtXVxyXG4gKGlmXHJcbiAgKGluc3RhbmNlPyBqcy9FcnJvciBmb3JtKVxyXG4gIChhcnJheVxyXG4gICAob3IgKHNvbWUtPiBmb3JtIC4tY2F1c2UgLi1tZXNzYWdlKSAoLi1tZXNzYWdlIGZvcm0pKVxyXG4gICAoLi1maWxlTmFtZSBmb3JtKVxyXG4gICAoLi1saW5lTnVtYmVyIGZvcm0pKVxyXG4gIChwci1zdHIgZm9ybSkpKVxyXG4ifSB7OnN5bSBpbml0LWVkaXRvciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbGVtXSl9LCA6c291cmNlICIoZGVmblxyXG4gaW5pdC1lZGl0b3JcclxuIFtlbGVtXVxyXG4gKHdoZW4tbGV0XHJcbiAgW3BhcmVuLXNvdXAgKG9yICgucXVlcnlTZWxlY3RvciBlbGVtIFwiLnBhcmVuLXNvdXBcIikgZWxlbSldXHJcbiAgKHBzL2luaXQgcGFyZW4tc291cCAoanMtPmNsaiB7OmNvbXBpbGVyLWZuIChmbiBbXSl9KSkpKVxyXG4ifSB7OnN5bSBjbGpzLWNvbXBpbGVyLWZuLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2V4YW1wbGUgZm9ybXMgY2JdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBjbGpzLWNvbXBpbGVyLWZuXHJcbiBbZXhhbXBsZSBmb3JtcyBjYl1cclxuIChsZXRcclxuICBbbnMtc3ltICg6bnMtc3ltIChjb21tb24vZ2V0LXN0YXRlKSldXHJcbiAgKGVzL2NvZGUtPnJlc3VsdHNcclxuICAgKGludG8gWyhsaXN0ICducyBucy1zeW0pXSAobWFwdiAocGFydGlhbCB0cmFuc2Zvcm0gZXhhbXBsZSkgZm9ybXMpKVxyXG4gICAoZm4gW3Jlc3VsdHNdICgtPj4gcmVzdWx0cyByZXN0IChtYXB2IGZvcm0tPnNlcmlhbGl6YWJsZSkgY2IpKVxyXG4gICB7OmN1c3RvbS1sb2FkIChmbiBbb3B0cyBjYl0gKGNiIHs6bGFuZyA6Y2xqLCA6c291cmNlIFwiXCJ9KSksXHJcbiAgICA6ZGlzYWJsZS10aW1lb3V0PyB0cnVlfSkpKVxyXG4ifSB7OnN5bSB0cmFuc2Zvcm0sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbezprZXlzIFt3aXRoLWZvY3VzIHdpdGgtY2FyZCB3aXRoLWNhbGxiYWNrXSwgOmFzIGV4fSBmb3JtLXN0cl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHRyYW5zZm9ybVxyXG4gW3s6a2V5cyBbd2l0aC1mb2N1cyB3aXRoLWNhcmQgd2l0aC1jYWxsYmFja10sIDphcyBleH0gZm9ybS1zdHJdXHJcbiAoaWZcclxuICAob3Igd2l0aC1mb2N1cyB3aXRoLWNhcmQgd2l0aC1jYWxsYmFjaylcclxuICAodHJhbnNmb3JtL3RyYW5zZm9ybSBleCAocmVhZC1zdHJpbmcgZm9ybS1zdHIpKVxyXG4gIGZvcm0tc3RyKSlcclxuIn0gezpzeW0gaW5pdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBpbml0XHJcbiBbXVxyXG4gKC0+PlxyXG4gICgucXVlcnlTZWxlY3RvciBqcy9kb2N1bWVudCBcIiNpbml0aWFsLXN0YXRlXCIpXHJcbiAgLi10ZXh0Q29udGVudFxyXG4gIGpzL2F0b2JcclxuICByZWFkLXN0cmluZ1xyXG4gIChzd2FwISBjb21tb24vKnNlc3Npb24gY29tbW9uL3VwZGF0ZS1zZXNzaW9uIDpkeW5hZG9jLmNvbW1vbi9zZXJ2ZXIpKVxyXG4gKHJ1bS9oeWRyYXRlXHJcbiAgKGNvbW1vbi9hcHAtcm9vdCBjb21tb24vKnNlc3Npb24pXHJcbiAgKC5xdWVyeVNlbGVjdG9yIGpzL2RvY3VtZW50IFwiI2FwcFwiKSlcclxuIChsZXRcclxuICBbezprZXlzIFt2YXItc3ltIHdhdGNoZXJdfSAoY29tbW9uL2dldC1zdGF0ZSldXHJcbiAgKC0+PlxyXG4gICB7OmR5bmFkb2MuY29tbW9uL2NsanMtc3RhcnRlZD8gdHJ1ZSxcclxuICAgIDpkeW5hZG9jLmNvbW1vbi9leHBvcnRhYmxlPyBqcy9DT01QSUxFRCxcclxuICAgIDpkeW5hZG9jLmNvbW1vbi9pbml0LWVkaXRvciAobWVtb2l6ZSBpbml0LWVkaXRvciksXHJcbiAgICA6ZHluYWRvYy5jb21tb24vaW5pdC1leGFtcGxlLWVkaXRvciAobWVtb2l6ZSBpbml0LWV4YW1wbGUtZWRpdG9yKSxcclxuICAgIDpkeW5hZG9jLmNvbW1vbi93YXRjaGVyXHJcbiAgICAod2hlbi1ub3QganMvQ09NUElMRUQgKG9yIHdhdGNoZXIgKGluaXQtd2F0Y2hlciEpKSl9XHJcbiAgIChzd2FwIVxyXG4gICAgY29tbW9uLypzZXNzaW9uXHJcbiAgICBjb21tb24vdXBkYXRlLXNlc3Npb25cclxuICAgIDpkeW5hZG9jLmNvbW1vbi9jbGllbnQpKVxyXG4gICh3aGVuXHJcbiAgIHZhci1zeW1cclxuICAgKGRvc2VxXHJcbiAgICBbYnV0dG9uICgtPiBqcy9kb2N1bWVudCAoLnF1ZXJ5U2VsZWN0b3JBbGwgXCIuYnV0dG9uXCIpIGFycmF5LXNlcSldXHJcbiAgICAoc2V0ISAoLi1kaXNwbGF5ICguLXN0eWxlIGJ1dHRvbikpIFwiaW5saW5lLWJsb2NrXCIpKSkpKVxyXG4ifSB7OnN5bSByZWFkLXN0cmluZywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxyXG4gcmVhZC1zdHJpbmdcclxuIFtzXVxyXG4gKGJpbmRpbmdcclxuICBbci8qc3VwcHJlc3MtcmVhZCogdHJ1ZV1cclxuICAoci9yZWFkLXN0cmluZyB7OnJlYWQtY29uZCA6cHJlc2VydmUsIDplb2YgbmlsfSBzKSkpXHJcbiJ9IHs6c3ltIGluaXQtZXhhbXBsZS1lZGl0b3IsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZWxlbSBleGFtcGxlXSl9LCA6c291cmNlICIoZGVmblxyXG4gaW5pdC1leGFtcGxlLWVkaXRvclxyXG4gW2VsZW0gZXhhbXBsZV1cclxuICh3aGVuLWxldFxyXG4gIFtwYXJlbi1zb3VwIChvciAoLnF1ZXJ5U2VsZWN0b3IgZWxlbSBcIi5wYXJlbi1zb3VwXCIpIGVsZW0pXVxyXG4gICh3aGVuLWxldFxyXG4gICBbY29udGVudCAoLnF1ZXJ5U2VsZWN0b3IgcGFyZW4tc291cCBcIi5jb250ZW50XCIpXVxyXG4gICAoc2V0ISAoLi1jb250ZW50RWRpdGFibGUgY29udGVudCkgdHJ1ZSkpXHJcbiAgKGxldFxyXG4gICBbdHlwZSAoOnR5cGUgKGNvbW1vbi9nZXQtc3RhdGUpKV1cclxuICAgKHBzL2luaXRcclxuICAgIHBhcmVuLXNvdXBcclxuICAgIChqcy0+Y2xqXHJcbiAgICAgezpjb21waWxlci1mblxyXG4gICAgICAoaWZcclxuICAgICAgICg9IDpjbGogdHlwZSlcclxuICAgICAgIChwYXJ0aWFsIGNsai1jb21waWxlci1mbiBleGFtcGxlKVxyXG4gICAgICAgKHBhcnRpYWwgY2xqcy1jb21waWxlci1mbiBleGFtcGxlKSl9KSkpKSlcclxuIn0gezpzeW0gaW5pdC13YXRjaGVyISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBpbml0LXdhdGNoZXIhXHJcbiBbXVxyXG4gKGxldFxyXG4gIFtwcm90b2NvbFxyXG4gICAoaWYgKD0gKC4tcHJvdG9jb2wganMvbG9jYXRpb24pIFwiaHR0cHM6XCIpIFwid3NzOlwiIFwid3M6XCIpXHJcbiAgIGhvc3RcclxuICAgKC0+IGpzL3dpbmRvdyAuLWxvY2F0aW9uIC4taG9zdClcclxuICAgc29ja1xyXG4gICAoanMvV2ViU29ja2V0LiAoc3RyIHByb3RvY29sIFwiLy9cIiBob3N0IFwiL3dhdGNoXCIpKV1cclxuICAoc2V0IVxyXG4gICAoLi1vbm9wZW4gc29jaylcclxuICAgKGZuIFtldmVudF0gKC5zZW5kIHNvY2sganMvd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKSkpXHJcbiAgKHNldCFcclxuICAgKC4tb25tZXNzYWdlIHNvY2spXHJcbiAgIChmblxyXG4gICAgW2V2ZW50XVxyXG4gICAgKC0+PlxyXG4gICAgICguLWRhdGEgZXZlbnQpXHJcbiAgICAgcmVhZC1zdHJpbmdcclxuICAgICAoc3dhcCFcclxuICAgICAgY29tbW9uLypzZXNzaW9uXHJcbiAgICAgIGNvbW1vbi91cGRhdGUtc2Vzc2lvblxyXG4gICAgICA6ZHluYWRvYy5jb21tb24vc2VydmVyKSkpKVxyXG4gIHNvY2spKVxyXG4ifSksIGV4cG91bmQuYWxwaGEgKHs6c3ltIGVycm9yLW1lc3NhZ2UsIDptZXRhIHs6ZG9jICJHaXZlbiBhIHNwZWMgbmFtZWQgYGtgLCByZXR1cm4gaXRzIGh1bWFuLXJlYWRhYmxlIGVycm9yIG1lc3NhZ2UuIiwgOmFyZ2xpc3RzIChba10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGVycm9yLW1lc3NhZ2VcclxuIFwiR2l2ZW4gYSBzcGVjIG5hbWVkIGBrYCwgcmV0dXJuIGl0cyBodW1hbi1yZWFkYWJsZSBlcnJvciBtZXNzYWdlLlwiXHJcbiBba11cclxuIChnZXQgQHJlZ2lzdHJ5LXJlZiBrKSlcclxuIn0gezpzeW0gZXhwbGFpbi1yZXN1bHQsIDptZXRhIHs6ZG9jICJHaXZlbiBhIHJlc3VsdCBmcm9tIGBjbG9qdXJlLnNwZWMudGVzdC5hbHBoYS9jaGVja2AsIHByaW50cyBhIHN1bW1hcnkgb2YgdGhlIHJlc3VsdC4iLCA6YXJnbGlzdHMgKFtjaGVjay1yZXN1bHRdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBleHBsYWluLXJlc3VsdFxyXG4gXCJHaXZlbiBhIHJlc3VsdCBmcm9tIGBjbG9qdXJlLnNwZWMudGVzdC5hbHBoYS9jaGVja2AsIHByaW50cyBhIHN1bW1hcnkgb2YgdGhlIHJlc3VsdC5cIlxyXG4gW2NoZWNrLXJlc3VsdF1cclxuICh3aGVuXHJcbiAgKD0gcy8qZXhwbGFpbi1vdXQqIHMvZXhwbGFpbi1wcmludGVyKVxyXG4gICh0aHJvd1xyXG4gICAoZXgtaW5mb1xyXG4gICAgXCJDYW5ub3QgcHJpbnQgY2hlY2sgcmVzdWx0cyB3aXRoIGRlZmF1bHQgcHJpbnRlci4gVXNlICdzZXQhJyBvciAnYmluZGluZycgdG8gdXNlIEV4cG91bmQgcHJpbnRlci5cIlxyXG4gICAge30pKSlcclxuIChzLypleHBsYWluLW91dCogY2hlY2stcmVzdWx0KSlcclxuIn0gezpzeW0gY3VzdG9tLXByaW50ZXIsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgcHJpbnRlci5cblxuICBPcHRpb25zOlxuICAgLSBgOnNob3ctdmFsaWQtdmFsdWVzP2AgLSBpZiBgZmFsc2VgLCByZXBsYWNlcyB2YWxpZCB2YWx1ZXMgd2l0aCBcIi4uLlwiXG4gICAtIGA6dmFsdWUtc3RyLWZuYCAgICAgICAtIGZ1bmN0aW9uIHRvIHByaW50IGJhZCB2YWx1ZXNcbiAgIC0gYDpwcmludC1zcGVjcz9gICAgICAgIC0gaWYgYHRydWVgLCBkaXNwbGF5IFwiUmVsZXZhbnQgc3BlY3NcIiBzZWN0aW9uLiBPdGhlcndpc2UsIG9taXQgdGhhdCBzZWN0aW9uLlxuICAgLSBgOnRoZW1lYCAgICAgICAgICAgICAgIC0gZW5hYmxlcyBjb2xvciB0aGVtZS4gUG9zc2libGUgdmFsdWVzOiBgOmZpZ3doZWVsLXRoZW1lYCwgYDpub25lYCIsIDphcmdsaXN0cyAoW29wdHNdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBjdXN0b20tcHJpbnRlclxyXG4gXCJSZXR1cm5zIGEgcHJpbnRlci5cXG5cXG4gIE9wdGlvbnM6XFxuICAgLSBgOnNob3ctdmFsaWQtdmFsdWVzP2AgLSBpZiBgZmFsc2VgLCByZXBsYWNlcyB2YWxpZCB2YWx1ZXMgd2l0aCBcXFwiLi4uXFxcIlxcbiAgIC0gYDp2YWx1ZS1zdHItZm5gICAgICAgIC0gZnVuY3Rpb24gdG8gcHJpbnQgYmFkIHZhbHVlc1xcbiAgIC0gYDpwcmludC1zcGVjcz9gICAgICAgIC0gaWYgYHRydWVgLCBkaXNwbGF5IFxcXCJSZWxldmFudCBzcGVjc1xcXCIgc2VjdGlvbi4gT3RoZXJ3aXNlLCBvbWl0IHRoYXQgc2VjdGlvbi5cXG4gICAtIGA6dGhlbWVgICAgICAgICAgICAgICAgLSBlbmFibGVzIGNvbG9yIHRoZW1lLiBQb3NzaWJsZSB2YWx1ZXM6IGA6Zmlnd2hlZWwtdGhlbWVgLCBgOm5vbmVgXCJcclxuIFtvcHRzXVxyXG4gKGZuIFtleHBsYWluLWRhdGFdIChwcmludCAocHJpbnRlci1zdHIgb3B0cyBleHBsYWluLWRhdGEpKSkpXHJcbiJ9IHs6c3ltIGNvbmZvcm1lZC12YWx1ZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwcm9ibGVtcyBpbnZhbGlkLXZhbHVlXSl9LCA6c291cmNlICIoZGVmblxyXG4gY29uZm9ybWVkLXZhbHVlXHJcbiBbcHJvYmxlbXMgaW52YWxpZC12YWx1ZV1cclxuIChsZXRcclxuICBbY29uZm9ybWVkLXZhbCAoLT4gcHJvYmxlbXMgZmlyc3QgOnZhbCldXHJcbiAgKGlmXHJcbiAgICg9IGNvbmZvcm1lZC12YWwgaW52YWxpZC12YWx1ZSlcclxuICAgXCJcIlxyXG4gICAocHJpbnRlci9mb3JtYXRcclxuICAgIFwiXFxuXFxud2hlbiBjb25mb3JtZWQgYXNcXG5cXG4lc1wiXHJcbiAgICAocHJpbnRlci9pbmRlbnQgKGFuc2kvY29sb3IgKHByLXN0ciBjb25mb3JtZWQtdmFsKSA6YmFkLXZhbHVlKSkpKSkpXHJcbiJ9IHs6c3ltIHByaW50ZXIsIDptZXRhIHs6ZG9jICJQcmludHMgYGV4cGxhaW4tZGF0YWAgaW4gYSBodW1hbi1yZWFkYWJsZSBmb3JtYXQuIiwgOmFyZ2xpc3RzIChbZXhwbGFpbi1kYXRhXSl9LCA6c291cmNlICIoZGVmblxyXG4gcHJpbnRlclxyXG4gXCJQcmludHMgYGV4cGxhaW4tZGF0YWAgaW4gYSBodW1hbi1yZWFkYWJsZSBmb3JtYXQuXCJcclxuIFtleHBsYWluLWRhdGFdXHJcbiAoKGN1c3RvbS1wcmludGVyIHt9KSBleHBsYWluLWRhdGEpKVxyXG4ifSB7OnN5bSBleHBsYWluLXJlc3VsdC1zdHIsIDptZXRhIHs6ZG9jICJHaXZlbiBhIHJlc3VsdCBmcm9tIGBjbG9qdXJlLnNwZWMudGVzdC5hbHBoYS9jaGVja2AsIHJldHVybnMgYSBzdHJpbmcgc3VtbWFyaXppbmcgdGhlIHJlc3VsdC4iLCA6YXJnbGlzdHMgKFtjaGVjay1yZXN1bHRdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBleHBsYWluLXJlc3VsdC1zdHJcclxuIFwiR2l2ZW4gYSByZXN1bHQgZnJvbSBgY2xvanVyZS5zcGVjLnRlc3QuYWxwaGEvY2hlY2tgLCByZXR1cm5zIGEgc3RyaW5nIHN1bW1hcml6aW5nIHRoZSByZXN1bHQuXCJcclxuIFtjaGVjay1yZXN1bHRdXHJcbiAod2l0aC1vdXQtc3RyIChleHBsYWluLXJlc3VsdCBjaGVjay1yZXN1bHQpKSlcclxuIn0gezpzeW0gZXhwbGFpbi1yZXN1bHRzLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBzZXF1ZW5jZSBvZiByZXN1bHRzIGZyb20gYGNsb2p1cmUuc3BlYy50ZXN0LmFscGhhL2NoZWNrYCwgcHJpbnRzIGEgc3VtbWFyeSBvZiB0aGUgcmVzdWx0cy4iLCA6YXJnbGlzdHMgKFtjaGVjay1yZXN1bHRzXSl9LCA6c291cmNlICIoZGVmblxyXG4gZXhwbGFpbi1yZXN1bHRzXHJcbiBcIkdpdmVuIGEgc2VxdWVuY2Ugb2YgcmVzdWx0cyBmcm9tIGBjbG9qdXJlLnNwZWMudGVzdC5hbHBoYS9jaGVja2AsIHByaW50cyBhIHN1bW1hcnkgb2YgdGhlIHJlc3VsdHMuXCJcclxuIFtjaGVjay1yZXN1bHRzXVxyXG4gKGRvc2VxXHJcbiAgW2NoZWNrLXJlc3VsdCAoYnV0bGFzdCBjaGVjay1yZXN1bHRzKV1cclxuICAoZXhwbGFpbi1yZXN1bHQgY2hlY2stcmVzdWx0KVxyXG4gIChwcmludCBcIlxcblxcblwiKSlcclxuIChleHBsYWluLXJlc3VsdCAobGFzdCBjaGVjay1yZXN1bHRzKSkpXHJcbiJ9IHs6c3ltIGV4cG91bmQtc3RyLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBgc3BlY2AgYW5kIGEgYGZvcm1gLCBlaXRoZXIgcmV0dXJucyBzdWNjZXNzIG1lc3NhZ2Ugb3IgYSBodW1hbi1yZWFkYWJsZSBlcnJvciBtZXNzYWdlLiIsIDphcmdsaXN0cyAoW3NwZWMgZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGV4cG91bmQtc3RyXHJcbiBcIkdpdmVuIGEgYHNwZWNgIGFuZCBhIGBmb3JtYCwgZWl0aGVyIHJldHVybnMgc3VjY2VzcyBtZXNzYWdlIG9yIGEgaHVtYW4tcmVhZGFibGUgZXJyb3IgbWVzc2FnZS5cIlxyXG4gW3NwZWMgZm9ybV1cclxuIChsZXRcclxuICBbZXhwbGFpbi1kYXRhIChzL2V4cGxhaW4tZGF0YSBzcGVjIGZvcm0pXVxyXG4gIChwcmludGVyLXN0clxyXG4gICB7fVxyXG4gICAoaWZcclxuICAgIGV4cGxhaW4tZGF0YVxyXG4gICAgKGFzc29jIGV4cGxhaW4tZGF0YSA6Y2xvanVyZS5zcGVjLmFscGhhL3ZhbHVlIGZvcm0pXHJcbiAgICBuaWwpKSkpXHJcbiJ9IHs6c3ltIGV4cGxhaW4tcmVzdWx0cy1zdHIsIDptZXRhIHs6ZG9jICJHaXZlbiBhIHNlcXVlbmNlIG9mIHJlc3VsdHMgZnJvbSBgY2xvanVyZS5zcGVjLnRlc3QuYWxwaGEvY2hlY2tgLCByZXR1cm5zIGEgc3RyaW5nIHN1bW1hcml6aW5nIHRoZSByZXN1bHRzLiIsIDphcmdsaXN0cyAoW2NoZWNrLXJlc3VsdHNdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBleHBsYWluLXJlc3VsdHMtc3RyXHJcbiBcIkdpdmVuIGEgc2VxdWVuY2Ugb2YgcmVzdWx0cyBmcm9tIGBjbG9qdXJlLnNwZWMudGVzdC5hbHBoYS9jaGVja2AsIHJldHVybnMgYSBzdHJpbmcgc3VtbWFyaXppbmcgdGhlIHJlc3VsdHMuXCJcclxuIFtjaGVjay1yZXN1bHRzXVxyXG4gKHdpdGgtb3V0LXN0ciAoZXhwbGFpbi1yZXN1bHRzIGNoZWNrLXJlc3VsdHMpKSlcclxuIn0gezpzeW0gZXhwb3VuZCwgOm1ldGEgezpkb2MgIkdpdmVuIGEgYHNwZWNgIGFuZCBhIGBmb3JtYCwgZWl0aGVyIHByaW50cyBhIHN1Y2Nlc3MgbWVzc2FnZSBvciBhIGh1bWFuLXJlYWRhYmxlIGVycm9yIG1lc3NhZ2UuIiwgOmFyZ2xpc3RzIChbc3BlYyBmb3JtXSl9LCA6c291cmNlICIoZGVmblxyXG4gZXhwb3VuZFxyXG4gXCJHaXZlbiBhIGBzcGVjYCBhbmQgYSBgZm9ybWAsIGVpdGhlciBwcmludHMgYSBzdWNjZXNzIG1lc3NhZ2Ugb3IgYSBodW1hbi1yZWFkYWJsZSBlcnJvciBtZXNzYWdlLlwiXHJcbiBbc3BlYyBmb3JtXVxyXG4gKHByaW50IChleHBvdW5kLXN0ciBzcGVjIGZvcm0pKSlcclxuIn0gezpzeW0gZGVmbXNnLCA6bWV0YSB7OmRvYyAiQXNzb2NpYXRlcyB0aGUgc3BlYyBuYW1lZCBga2Agd2l0aCBgZXJyb3ItbWVzc2FnZWAuIiwgOmFyZ2xpc3RzIChbayBlcnJvci1tZXNzYWdlXSl9LCA6c291cmNlICIoZGVmblxyXG4gZGVmbXNnXHJcbiBcIkFzc29jaWF0ZXMgdGhlIHNwZWMgbmFtZWQgYGtgIHdpdGggYGVycm9yLW1lc3NhZ2VgLlwiXHJcbiBbayBlcnJvci1tZXNzYWdlXVxyXG4gKHN3YXAhIHJlZ2lzdHJ5LXJlZiBhc3NvYyBrIGVycm9yLW1lc3NhZ2UpXHJcbiBuaWwpXHJcbiJ9KSwgY2xqcy50b29scy5yZWFkZXIuaW1wbC5lcnJvcnMgKHs6c3ltIHRocm93LWJhZC1kaXNwYXRjaCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgY2hdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB0aHJvdy1iYWQtZGlzcGF0Y2hcclxuIFtyZHIgY2hdXHJcbiAocmVhZGVyLWVycm9yIHJkciBcIk5vIGRpc3BhdGNoIG1hY3JvIGZvciBcIiBjaCBcIi5cIikpXHJcbiJ9IHs6c3ltIHRocm93LWludmFsaWQtdW5pY29kZS1lc2NhcGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGNoXSl9LCA6c291cmNlICIoZGVmblxyXG4gdGhyb3ctaW52YWxpZC11bmljb2RlLWVzY2FwZVxyXG4gW3JkciBjaF1cclxuIChyZWFkZXItZXJyb3IgcmRyIFwiSW52YWxpZCB1bmljb2RlIGVzY2FwZTogXFxcXHVcIiBjaCBcIi5cIikpXHJcbiJ9IHs6c3ltIHRocm93LWR1cC1rZXlzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBraW5kIGtzXSl9LCA6c291cmNlICIoZGVmblxyXG4gdGhyb3ctZHVwLWtleXNcclxuIFtyZHIga2luZCBrc11cclxuIChyZWFkZXItZXJyb3JcclxuICByZHJcclxuICAoZHVwbGljYXRlLWtleXMtZXJyb3JcclxuICAgKHN0ciAocy9jYXBpdGFsaXplIChuYW1lIGtpbmQpKSBcIiBsaXRlcmFsIGNvbnRhaW5zIGR1cGxpY2F0ZSBrZXlcIilcclxuICAga3MpKSlcclxuIn0gezpzeW0gdGhyb3ctYmFkLW5zLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBucy1uYW1lXSl9LCA6c291cmNlICIoZGVmblxyXG4gdGhyb3ctYmFkLW5zXHJcbiBbcmRyIG5zLW5hbWVdXHJcbiAocmVhZGVyLWVycm9yXHJcbiAgcmRyXHJcbiAgXCJJbnZhbGlkIHZhbHVlIHVzZWQgYXMgbmFtZXNwYWNlIGluIG5hbWVzcGFjZWQgbWFwOiBcIlxyXG4gIG5zLW5hbWVcclxuICBcIi5cIikpXHJcbiJ9IHs6c3ltIHRocm93LXVua25vd24tcmVhZGVyLXRhZywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgdGFnXSl9LCA6c291cmNlICIoZGVmblxyXG4gdGhyb3ctdW5rbm93bi1yZWFkZXItdGFnXHJcbiBbcmRyIHRhZ11cclxuIChyZWFkZXItZXJyb3IgcmRyIFwiTm8gcmVhZGVyIGZ1bmN0aW9uIGZvciB0YWcgXCIgKGkvaW5zcGVjdCB0YWcpIFwiLlwiKSlcclxuIn0gezpzeW0gdGhyb3ctZW9mLWF0LWRpc3BhdGNoLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3Jkcl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHRocm93LWVvZi1hdC1kaXNwYXRjaFxyXG4gW3Jkcl1cclxuIChlb2YtZXJyb3IgcmRyIFwiVW5leHBlY3RlZCBFT0Ygd2hpbGUgcmVhZGluZyBkaXNwYXRjaCBjaGFyYWN0ZXIuXCIpKVxyXG4ifSB7OnN5bSB0aHJvdy1iYWQtbWV0YWRhdGEtdGFyZ2V0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciB0YXJnZXRdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB0aHJvdy1iYWQtbWV0YWRhdGEtdGFyZ2V0XHJcbiBbcmRyIHRhcmdldF1cclxuIChyZWFkZXItZXJyb3JcclxuICByZHJcclxuICBcIk1ldGFkYXRhIGNhbiBub3QgYmUgYXBwbGllZCB0byBcIlxyXG4gIChpL2luc3BlY3QgdGFyZ2V0KVxyXG4gIFwiLiBcIlxyXG4gIFwiTWV0YWRhdGEgY2FuIG9ubHkgYmUgYXBwbGllZCB0byBJTWV0YXMuXCIpKVxyXG4ifSB7OnN5bSB0aHJvdy1pbnZhbGlkLW51bWJlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgdG9rZW5dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB0aHJvdy1pbnZhbGlkLW51bWJlclxyXG4gW3JkciB0b2tlbl1cclxuIChyZWFkZXItZXJyb3IgcmRyIFwiSW52YWxpZCBudW1iZXI6IFwiIHRva2VuIFwiLlwiKSlcclxuIn0gezpzeW0gcmVhZGVyLWVycm9yLCA6bWV0YSB7OmRvYyAiVGhyb3dzIGFuIEV4Y2VwdGlvbkluZm8gd2l0aCB0aGUgZ2l2ZW4gbWVzc2FnZS5cbiAgIElmIHJkciBpcyBhbiBJbmRleGluZ1JlYWRlciwgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBjb2x1bW4gYW5kIGxpbmUgbnVtYmVyIGlzIHByb3ZpZGVkIiwgOmFyZ2xpc3RzIChbcmRyICYgbXNnc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlYWRlci1lcnJvclxyXG4gXCJUaHJvd3MgYW4gRXhjZXB0aW9uSW5mbyB3aXRoIHRoZSBnaXZlbiBtZXNzYWdlLlxcbiAgIElmIHJkciBpcyBhbiBJbmRleGluZ1JlYWRlciwgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBjb2x1bW4gYW5kIGxpbmUgbnVtYmVyIGlzIHByb3ZpZGVkXCJcclxuIFtyZHIgJiBtc2dzXVxyXG4gKHRocm93LWV4IHJkciA6cmVhZGVyLWVycm9yIChhcHBseSBzdHIgbXNncykpKVxyXG4ifSB7OnN5bSB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtbGl0ZXJhbCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgdG9rZW5dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtbGl0ZXJhbFxyXG4gW3JkciB0b2tlbl1cclxuICh0aHJvd1xyXG4gIChpbGxlZ2FsLWFyZy1lcnJvciByZHIgXCJJbnZhbGlkIHVuaWNvZGUgbGl0ZXJhbDogXFxcXFwiIHRva2VuIFwiLlwiKSkpXHJcbiJ9IHs6c3ltIHRocm93LW5zLW1hcC1uby1tYXAsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIG5zLW5hbWVdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB0aHJvdy1ucy1tYXAtbm8tbWFwXHJcbiBbcmRyIG5zLW5hbWVdXHJcbiAocmVhZGVyLWVycm9yXHJcbiAgcmRyXHJcbiAgXCJOYW1lc3BhY2VkIG1hcCB3aXRoIG5hbWVzcGFjZSBcIlxyXG4gIG5zLW5hbWVcclxuICBcIiBkb2VzIG5vdCBzcGVjaWZ5IGEgbWFwLlwiKSlcclxuIn0gezpzeW0gdGhyb3ctdW5zdXBwb3J0ZWQtY2hhcmFjdGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciB0b2tlbl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHRocm93LXVuc3VwcG9ydGVkLWNoYXJhY3RlclxyXG4gW3JkciB0b2tlbl1cclxuIChyZWFkZXItZXJyb3IgcmRyIFwiVW5zdXBwb3J0ZWQgY2hhcmFjdGVyOiBcIiB0b2tlbiBcIi5cIikpXHJcbiJ9IHs6c3ltIHRocm93LWZlYXR1cmUtbm90LWtleXdvcmQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGZlYXR1cmVdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB0aHJvdy1mZWF0dXJlLW5vdC1rZXl3b3JkXHJcbiBbcmRyIGZlYXR1cmVdXHJcbiAocmVhZGVyLWVycm9yXHJcbiAgcmRyXHJcbiAgXCJGZWF0dXJlIGNhbm5vdCBiZSBcIlxyXG4gIChpL2luc3BlY3QgZmVhdHVyZSlcclxuICBcIiBGZWF0dXJlcyBtdXN0IGJlIGtleXdvcmRzLlwiKSlcclxuIn0gezpzeW0gdGhyb3ctZW9mLWRlbGltaXRlZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1tyZHIga2luZCBjb2x1bW4gbGluZV0gW3JkciBraW5kIGxpbmUgY29sdW1uIG5dXX0sIDpzb3VyY2UgIihkZWZuXHJcbiB0aHJvdy1lb2YtZGVsaW1pdGVkXHJcbiAoW3JkciBraW5kIGNvbHVtbiBsaW5lXVxyXG4gICh0aHJvdy1lb2YtZGVsaW1pdGVkIHJkciBraW5kIGxpbmUgY29sdW1uIG5pbCkpXHJcbiAoW3JkciBraW5kIGxpbmUgY29sdW1uIG5dXHJcbiAgKGVvZi1lcnJvclxyXG4gICByZHJcclxuICAgXCJVbmV4cGVjdGVkIEVPRiB3aGlsZSByZWFkaW5nIFwiXHJcbiAgIChpZiBuIChzdHIgXCJpdGVtIFwiIG4gXCIgb2YgXCIpKVxyXG4gICAobmFtZSBraW5kKVxyXG4gICAoaWYgbGluZSAoc3RyIFwiLCBzdGFydGluZyBhdCBsaW5lIFwiIGxpbmUgXCIgYW5kIGNvbHVtbiBcIiBjb2x1bW4pKVxyXG4gICBcIi5cIikpKVxyXG4ifSB7OnN5bSB0aHJvdy1lb2YtaW4tY2hhcmFjdGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3Jkcl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHRocm93LWVvZi1pbi1jaGFyYWN0ZXJcclxuIFtyZHJdXHJcbiAoZW9mLWVycm9yIHJkciBcIlVuZXhwZWN0ZWQgRU9GIHdoaWxlIHJlYWRpbmcgY2hhcmFjdGVyLlwiKSlcclxuIn0gezpzeW0gdGhyb3ctYmFkLWNoYXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGtpbmQgY2hdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB0aHJvdy1iYWQtY2hhclxyXG4gW3JkciBraW5kIGNoXVxyXG4gKHJlYWRlci1lcnJvclxyXG4gIHJkclxyXG4gIFwiSW52YWxpZCBjaGFyYWN0ZXI6IFwiXHJcbiAgY2hcclxuICBcIiBmb3VuZCB3aGlsZSByZWFkaW5nIFwiXHJcbiAgKG5hbWUga2luZClcclxuICBcIi5cIikpXHJcbiJ9IHs6c3ltIGVvZi1lcnJvciwgOm1ldGEgezpkb2MgIlRocm93cyBhbiBFeGNlcHRpb25JbmZvIHdpdGggdGhlIGdpdmVuIG1lc3NhZ2UuXG4gICBJZiByZHIgaXMgYW4gSW5kZXhpbmdSZWFkZXIsIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgY29sdW1uIGFuZCBsaW5lIG51bWJlciBpcyBwcm92aWRlZCIsIDphcmdsaXN0cyAoW3JkciAmIG1zZ3NdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBlb2YtZXJyb3JcclxuIFwiVGhyb3dzIGFuIEV4Y2VwdGlvbkluZm8gd2l0aCB0aGUgZ2l2ZW4gbWVzc2FnZS5cXG4gICBJZiByZHIgaXMgYW4gSW5kZXhpbmdSZWFkZXIsIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgY29sdW1uIGFuZCBsaW5lIG51bWJlciBpcyBwcm92aWRlZFwiXHJcbiBbcmRyICYgbXNnc11cclxuICh0aHJvdy1leCByZHIgOmVvZiAoYXBwbHkgc3RyIG1zZ3MpKSlcclxuIn0gezpzeW0gdGhyb3ctYmFkLW1ldGFkYXRhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciB4XSl9LCA6c291cmNlICIoZGVmblxyXG4gdGhyb3ctYmFkLW1ldGFkYXRhXHJcbiBbcmRyIHhdXHJcbiAocmVhZGVyLWVycm9yXHJcbiAgcmRyXHJcbiAgXCJNZXRhZGF0YSBjYW5ub3QgYmUgXCJcclxuICAoaS9pbnNwZWN0IHgpXHJcbiAgXCIuIE1ldGFkYXRhIG11c3QgYmUgYSBTeW1ib2wsIEtleXdvcmQsIFN0cmluZyBvciBNYXAuXCIpKVxyXG4ifSB7OnN5bSB0aHJvdy1lb2YtcmVhZGluZywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIga2luZCAmIHN0YXJ0XSl9LCA6c291cmNlICIoZGVmblxyXG4gdGhyb3ctZW9mLXJlYWRpbmdcclxuIFtyZHIga2luZCAmIHN0YXJ0XVxyXG4gKGxldFxyXG4gIFtpbml0IChjYXNlIGtpbmQgOnJlZ2V4IFwiI1xcXCJcIiA6c3RyaW5nIFxcXCIpXVxyXG4gIChlb2YtZXJyb3JcclxuICAgcmRyXHJcbiAgIFwiVW5leHBlY3RlZCBFT0YgcmVhZGluZyBcIlxyXG4gICAobmFtZSBraW5kKVxyXG4gICBcIiBzdGFydGluZyBcIlxyXG4gICAoYXBwbHkgc3RyIGluaXQgc3RhcnQpXHJcbiAgIFwiLlwiKSkpXHJcbiJ9IHs6c3ltIHRocm93LWVvZi1lcnJvciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgbGluZV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHRocm93LWVvZi1lcnJvclxyXG4gW3JkciBsaW5lXVxyXG4gKGlmXHJcbiAgbGluZVxyXG4gIChlb2YtZXJyb3IgcmRyIFwiRU9GIHdoaWxlIHJlYWRpbmcsIHN0YXJ0aW5nIGF0IGxpbmUgXCIgbGluZSBcIi5cIilcclxuICAoZW9mLWVycm9yIHJkciBcIkVPRiB3aGlsZSByZWFkaW5nLlwiKSkpXHJcbiJ9IHs6c3ltIGlsbGVnYWwtYXJnLWVycm9yLCA6bWV0YSB7OmRvYyAiVGhyb3dzIGFuIEV4Y2VwdGlvbkluZm8gd2l0aCB0aGUgZ2l2ZW4gbWVzc2FnZS5cbiAgIElmIHJkciBpcyBhbiBJbmRleGluZ1JlYWRlciwgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBjb2x1bW4gYW5kIGxpbmUgbnVtYmVyIGlzIHByb3ZpZGVkIiwgOmFyZ2xpc3RzIChbcmRyICYgbXNnc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGlsbGVnYWwtYXJnLWVycm9yXHJcbiBcIlRocm93cyBhbiBFeGNlcHRpb25JbmZvIHdpdGggdGhlIGdpdmVuIG1lc3NhZ2UuXFxuICAgSWYgcmRyIGlzIGFuIEluZGV4aW5nUmVhZGVyLCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGNvbHVtbiBhbmQgbGluZSBudW1iZXIgaXMgcHJvdmlkZWRcIlxyXG4gW3JkciAmIG1zZ3NdXHJcbiAodGhyb3ctZXggcmRyIDppbGxlZ2FsLWFyZ3VtZW50IChhcHBseSBzdHIgbXNncykpKVxyXG4ifSB7OnN5bSB0aHJvdy1pbnZhbGlkLW9jdGFsLWxlbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgdG9rZW5dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB0aHJvdy1pbnZhbGlkLW9jdGFsLWxlblxyXG4gW3JkciB0b2tlbl1cclxuIChyZWFkZXItZXJyb3JcclxuICByZHJcclxuICBcIkludmFsaWQgb2N0YWwgZXNjYXBlIHNlcXVlbmNlIGluIGEgY2hhcmFjdGVyIGxpdGVyYWw6XCJcclxuICB0b2tlblxyXG4gIFwiLiBPY3RhbCBlc2NhcGUgc2VxdWVuY2VzIG11c3QgYmUgMyBvciBmZXdlciBkaWdpdHMuXCIpKVxyXG4ifSB7OnN5bSB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtZGlnaXQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGNoXSl9LCA6c291cmNlICIoZGVmblxyXG4gdGhyb3ctaW52YWxpZC11bmljb2RlLWRpZ2l0XHJcbiBbcmRyIGNoXVxyXG4gKGlsbGVnYWwtYXJnLWVycm9yIHJkciBcIkludmFsaWQgZGlnaXQgXCIgY2ggXCIgaW4gdW5pY29kZSBjaGFyYWN0ZXIuXCIpKVxyXG4ifSB7OnN5bSB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtZGlnaXQtaW4tdG9rZW4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGNoIHRva2VuXSl9LCA6c291cmNlICIoZGVmblxyXG4gdGhyb3ctaW52YWxpZC11bmljb2RlLWRpZ2l0LWluLXRva2VuXHJcbiBbcmRyIGNoIHRva2VuXVxyXG4gKGlsbGVnYWwtYXJnLWVycm9yXHJcbiAgcmRyXHJcbiAgXCJJbnZhbGlkIGRpZ2l0IFwiXHJcbiAgY2hcclxuICBcIiBpbiB1bmljb2RlIGNoYXJhY3RlciBcXFxcXCJcclxuICB0b2tlblxyXG4gIFwiLlwiKSlcclxuIn0gezpzeW0gdGhyb3ctaW52YWxpZC11bmljb2RlLWxlbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgYWN0dWFsIGV4cGVjdGVkXSl9LCA6c291cmNlICIoZGVmblxyXG4gdGhyb3ctaW52YWxpZC11bmljb2RlLWxlblxyXG4gW3JkciBhY3R1YWwgZXhwZWN0ZWRdXHJcbiAoaWxsZWdhbC1hcmctZXJyb3JcclxuICByZHJcclxuICBcIkludmFsaWQgdW5pY29kZSBsaXRlcmFsLiBVbmljb2RlIGxpdGVyYWxzIHNob3VsZCBiZSBcIlxyXG4gIGV4cGVjdGVkXHJcbiAgXCJjaGFyYWN0ZXJzIGxvbmcuICBcIlxyXG4gIFwidmFsdWUgc3VwcGxlZCBpcyBcIlxyXG4gIGFjdHVhbFxyXG4gIFwiY2hhcmFjdGVycyBsb25nLlwiKSlcclxuIn0gezpzeW0gdGhyb3ctc2luZ2xlLWNvbG9uLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3Jkcl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHRocm93LXNpbmdsZS1jb2xvblxyXG4gW3Jkcl1cclxuIChyZWFkZXItZXJyb3IgcmRyIFwiQSBzaW5nbGUgY29sb24gaXMgbm90IGEgdmFsaWQga2V5d29yZC5cIikpXHJcbiJ9IHs6c3ltIHRocm93LW9kZC1tYXAsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGxpbmUgY29sIGVsZW1lbnRzXSl9LCA6c291cmNlICIoZGVmblxyXG4gdGhyb3ctb2RkLW1hcFxyXG4gW3JkciBsaW5lIGNvbCBlbGVtZW50c11cclxuIChyZWFkZXItZXJyb3JcclxuICByZHJcclxuICBcIlRoZSBtYXAgbGl0ZXJhbCBzdGFydGluZyB3aXRoIFwiXHJcbiAgKGkvaW5zcGVjdCAoZmlyc3QgZWxlbWVudHMpKVxyXG4gIChpZiBsaW5lIChzdHIgXCIgb24gbGluZSBcIiBsaW5lIFwiIGNvbHVtbiBcIiBjb2wpKVxyXG4gIFwiIGNvbnRhaW5zIFwiXHJcbiAgKGNvdW50IGVsZW1lbnRzKVxyXG4gIFwiIGZvcm0ocykuIE1hcCBsaXRlcmFscyBtdXN0IGNvbnRhaW4gYW4gZXZlbiBudW1iZXIgb2YgZm9ybXMuXCIpKVxyXG4ifSB7OnN5bSB0aHJvdy1iYWQtb2N0YWwtbnVtYmVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3Jkcl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHRocm93LWJhZC1vY3RhbC1udW1iZXJcclxuIFtyZHJdXHJcbiAocmVhZGVyLWVycm9yIHJkciBcIk9jdGFsIGVzY2FwZSBzZXF1ZW5jZSBtdXN0IGJlIGluIHJhbmdlIFswLCAzNzddLlwiKSlcclxuIn0gezpzeW0gdGhyb3ctYmFkLXJlYWRlci10YWcsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIHRhZ10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHRocm93LWJhZC1yZWFkZXItdGFnXHJcbiBbcmRyIHRhZ11cclxuIChyZWFkZXItZXJyb3JcclxuICByZHJcclxuICBcIkludmFsaWQgcmVhZGVyIHRhZzogXCJcclxuICAoaS9pbnNwZWN0IHRhZylcclxuICBcIi4gUmVhZGVyIHRhZ3MgbXVzdCBiZSBzeW1ib2xzLlwiKSlcclxuIn0gezpzeW0gdGhyb3ctdW5tYXRjaC1kZWxpbWl0ZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGNoXSl9LCA6c291cmNlICIoZGVmblxyXG4gdGhyb3ctdW5tYXRjaC1kZWxpbWl0ZXJcclxuIFtyZHIgY2hdXHJcbiAocmVhZGVyLWVycm9yIHJkciBcIlVubWF0Y2hlZCBkZWxpbWl0ZXIgXCIgY2ggXCIuXCIpKVxyXG4ifSB7OnN5bSB0aHJvdy1pbnZhbGlkLWNoYXJhY3Rlci1saXRlcmFsLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciB0b2tlbl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHRocm93LWludmFsaWQtY2hhcmFjdGVyLWxpdGVyYWxcclxuIFtyZHIgdG9rZW5dXHJcbiAocmVhZGVyLWVycm9yIHJkciBcIkludmFsaWQgY2hhcmFjdGVyIGxpdGVyYWwgXFxcXHVcIiB0b2tlbiBcIi5cIikpXHJcbiJ9IHs6c3ltIHRocm93LWludmFsaWQtdW5pY29kZS1jaGFyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciB0b2tlbl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHRocm93LWludmFsaWQtdW5pY29kZS1jaGFyXHJcbiBbcmRyIHRva2VuXVxyXG4gKHJlYWRlci1lcnJvciByZHIgXCJJbnZhbGlkIHVuaWNvZGUgY2hhcmFjdGVyIFxcXFxcIiB0b2tlbiBcIi5cIikpXHJcbiJ9IHs6c3ltIHRocm93LWJhZC1lc2NhcGUtY2hhciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgY2hdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB0aHJvdy1iYWQtZXNjYXBlLWNoYXJcclxuIFtyZHIgY2hdXHJcbiAocmVhZGVyLWVycm9yIHJkciBcIlVuc3VwcG9ydGVkIGVzY2FwZSBjaGFyYWN0ZXI6IFxcXFxcIiBjaCBcIi5cIikpXHJcbiJ9IHs6c3ltIHRocm93LW5vLWRpc3BhdGNoLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBjaF0pfSwgOnNvdXJjZSAiKGRlZm4gdGhyb3ctbm8tZGlzcGF0Y2ggW3JkciBjaF0gKHRocm93LWJhZC1kaXNwYXRjaCByZHIgY2gpKVxyXG4ifSB7OnN5bSB0aHJvdy1lb2YtYXQtc3RhcnQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGtpbmRdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB0aHJvdy1lb2YtYXQtc3RhcnRcclxuIFtyZHIga2luZF1cclxuIChlb2YtZXJyb3JcclxuICByZHJcclxuICBcIlVuZXhwZWN0ZWQgRU9GIHdoaWxlIHJlYWRpbmcgc3RhcnQgb2YgXCJcclxuICAobmFtZSBraW5kKVxyXG4gIFwiLlwiKSlcclxuIn0gezpzeW0gdGhyb3ctaW52YWxpZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIga2luZCB0b2tlbl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHRocm93LWludmFsaWRcclxuIFtyZHIga2luZCB0b2tlbl1cclxuIChyZWFkZXItZXJyb3IgcmRyIFwiSW52YWxpZCBcIiAobmFtZSBraW5kKSBcIjogXCIgdG9rZW4gXCIuXCIpKVxyXG4ifSksIGNsanMuanMgKHs6c3ltICpsb2FkLWZuKiwgOm1ldGEgezpkb2MgIkVhY2ggcnVudGltZSBlbnZpcm9ubWVudCBwcm92aWRlcyBhIGRpZmZlcmVudCB3YXkgdG8gbG9hZCBhIGxpYnJhcnkuXG4gIFdoYXRldmVyIGZ1bmN0aW9uICpsb2FkLWZuKiBpcyBib3VuZCB0byB3aWxsIGJlIHBhc3NlZCB0d28gYXJndW1lbnRzIC0gYVxuICBtYXAgYW5kIGEgY2FsbGJhY2sgZnVuY3Rpb246IFRoZSBtYXAgd2lsbCBoYXZlIHRoZSBmb2xsb3dpbmcga2V5czpcblxuICA6bmFtZSAgIC0gdGhlIG5hbWUgb2YgdGhlIGxpYnJhcnkgKGEgc3ltYm9sKVxuICA6bWFjcm9zIC0gbW9kaWZpZXIgc2lnbmFsaW5nIGEgbWFjcm9zIG5hbWVzcGFjZSBsb2FkXG4gIDpwYXRoICAgLSBtdW5nZWQgcmVsYXRpdmUgbGlicmFyeSBwYXRoIChhIHN0cmluZylcblxuICBJdCBpcyB1cCB0byB0aGUgaW1wbGVtZW50b3IgdG8gY29ycmVjdGx5IHJlc29sdmUgdGhlIGNvcnJlc3BvbmRpbmcgLmNsanMsXG4gIC5jbGpjLCBvciAuanMgcmVzb3VyY2UgKHRoZSBvcmRlciBtdXN0IGJlIHJlc3BlY3RlZCkuIElmIDptYWNyb3MgaXMgdHJ1ZVxuICByZXNvbHV0aW9uIHNob3VsZCBvbmx5IGNvbnNpZGVyIC5jbGogb3IgLmNsamMgcmVzb3VyY2VzICh0aGUgb3JkZXIgbXVzdCBiZVxuICByZXNwZWN0ZWQpLiBVcG9uIHJlc29sdXRpb24gdGhlIGNhbGxiYWNrIHNob3VsZCBiZSBpbnZva2VkIHdpdGggYSBtYXBcbiAgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIGtleXM6XG5cbiAgOmxhbmcgICAgICAgLSB0aGUgbGFuZ3VhZ2UsIDpjbGogb3IgOmpzXG4gIDpzb3VyY2UgICAgIC0gdGhlIHNvdXJjZSBvZiB0aGUgbGlicmFyeSAoYSBzdHJpbmcpXG4gIDpmaWxlICAgICAgIC0gb3B0aW9uYWwsIHRoZSBmaWxlIHBhdGgsIGl0IHdpbGwgYmUgYWRkZWQgdG8gQVNUJ3MgOmZpbGUga2V5d29yZFxuICAgICAgICAgICAgICAgIChidXQgbm90IGluIDptZXRhKVxuICA6Y2FjaGUgICAgICAtIG9wdGlvbmFsLCBpZiBhIDpjbGogbmFtZXNwYWNlIGhhcyBiZWVuIHByZWNvbXBpbGVkIHRvIDpqcywgY2FuXG4gICAgICAgICAgICAgICAgZ2l2ZSBhbiBhbmFseXNpcyBjYWNoZSBmb3IgZmFzdGVyIGxvYWRzLlxuICA6c291cmNlLW1hcCAtIG9wdGlvbmFsLCBpZiBhIDpjbGogbmFtZXNwYWNlIGhhcyBiZWVuIHByZWNvbXBpbGVkIHRvIDpqcywgY2FuXG4gICAgICAgICAgICAgICAgZ2l2ZSBhIFYzIHNvdXJjZSBtYXAgSlNPTlxuXG4gIElmIHRoZSByZXNvdXJjZSBjb3VsZCBub3QgYmUgcmVzb2x2ZWQsIHRoZSBjYWxsYmFjayBzaG91bGQgYmUgaW52b2tlZCB3aXRoXG4gIG5pbC4ifSwgOnNvdXJjZSAiKGRlZm9uY2UgKmxvYWQtZm4qIChmbiBbbSBjYl0gKHRocm93IChqcy9FcnJvci4gXCJObyAqbG9hZC1mbiogc2V0XCIpKSkpXHJcbiJ9IHs6c3ltIGV2YWwsIDptZXRhIHs6ZG9jICJFdmFsdWF0ZSBhIHNpbmdsZSBDbG9qdXJlU2NyaXB0IGZvcm0uIFRoZSBwYXJhbWV0ZXJzOlxuXG4gICBzdGF0ZSAoYXRvbSlcbiAgICAgdGhlIGNvbXBpbGVyIHN0YXRlXG5cbiAgIGZvcm0gKHMtZXhwcilcbiAgICAgdGhlIENsb2p1cmVTY3JpcHQgc291cmNlXG5cbiAgIG9wdHMgKG1hcClcbiAgICAgY29tcGlsYXRpb24gb3B0aW9ucy5cblxuICAgICAgOmV2YWwgICAgICAgICAgICAgLSBldmFsIGZ1bmN0aW9uIHRvIGludm9rZSwgc2VlICpldmFsLWZuKlxuICAgICAgOmxvYWQgICAgICAgICAgICAgLSBsaWJyYXJ5IHJlc29sdXRpb24gZnVuY3Rpb24sIHNlZSAqbG9hZC1mbipcbiAgICAgIDpzb3VyY2UtbWFwICAgICAgIC0gc2V0IHRvIHRydWUgdG8gZ2VuZXJhdGUgaW5saW5lIHNvdXJjZSBtYXAgaW5mb3JtYXRpb25cbiAgICAgIDpkZWYtZW1pdHMtdmFyICAgIC0gc2V0cyB3aGV0aGVyIGRlZiAoYW5kIGRlcml2ZWQpIGZvcm1zIHJldHVybiBlaXRoZXIgYSBWYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIHNldCB0byB0cnVlKSBvciB0aGUgZGVmIGluaXQgdmFsdWUgKGlmIGZhbHNlKS4gRGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBmYWxzZS5cbiAgICAgIDpjaGVja2VkLWFycmF5cyAgIC0gaWYgOndhcm4gb3IgOmVycm9yLCBjaGVja3MgaW5mZXJyZWQgdHlwZXMgYW5kIHZhbHVlcyBwYXNzZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYWdldC9hc2V0LiBMb2dzIGZvciBpbmNvcnJlY3QgdmFsdWVzIGlmIDp3YXJuLCB0aHJvd3MgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOmVycm9yLiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgIDpzdGF0aWMtZm5zICAgICAgIC0gZW1wbG95IHN0YXRpYyBkaXNwYXRjaCB0byBzcGVjaWZpYyBmdW5jdGlvbiBhcml0aWVzIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXR0ZWQgSmF2YVNjcmlwdCwgYXMgb3Bwb3NlZCB0byBtYWtpbmcgdXNlIG9mIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBgY2FsbGAgY29uc3RydWN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgIDpmbi1pbnZva2UtZGlyZWN0IC0gaWYgYHRydWVgLCBkb2VzIG5vdCBnZW5lcmF0ZSBgLmNhbGwobnVsbC4uLilgIGNhbGxzIGZvclxuICAgICAgICAgICAgICAgICAgICAgICAgICB1bmtub3duIGZ1bmN0aW9ucywgYnV0IGluc3RlYWQgZGlyZWN0IGludm9rZXMgdmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBmKGEwLGExLi4uKWAuIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gICAgICA6dGFyZ2V0ICAgICAgICAgICAtIHVzZSBgOm5vZGVqc2AgaWYgdGFyZ2V0aW5nIE5vZGUuanMuIFRha2VzIG5vIG90aGVyIG9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXQgdGhlIG1vbWVudC5cbiAgICAgIDpucyAgICAgICAgICAgICAgIC0gb3B0aW9uYWwsIHRoZSBuYW1lc3BhY2UgaW4gd2hpY2ggdG8gZXZhbHVhdGUgdGhlIHNvdXJjZS5cbiAgICAgIDp2ZXJib3NlICAgICAgICAgIC0gb3B0aW9uYWwsIGVtaXQgZGV0YWlscyBmcm9tIGNvbXBpbGVyIGFjdGl2aXR5LiBEZWZhdWx0cyB0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZS5cbiAgICAgIDpjb250ZXh0ICAgICAgICAgIC0gb3B0aW9uYWwsIHNldHMgdGhlIGNvbnRleHQgZm9yIHRoZSBzb3VyY2UuIFBvc3NpYmxlIHZhbHVlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgYDpleHByYCwgYDpzdGF0ZW1lbnRgIGFuZCBgOnJldHVybmAuIERlZmF1bHRzIHRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGA6ZXhwcmAuXG5cbiAgIGNiIChmdW5jdGlvbilcbiAgICAgY2FsbGJhY2ssIHdpbGwgYmUgaW52b2tlZCB3aXRoIGEgbWFwLiBJZiBzdWNjZXNzZnVsIHRoZSBtYXAgd2lsbCBjb250YWluXG4gICAgIGEga2V5IDp2YWx1ZSB3aXRoIHRoZSByZXN1bHQgb2YgZXZhbHV0aW9uLiBJZiB1bnN1Y2Nlc3NmdWwgdGhlIG1hcCB3aWxsXG4gICAgIGNvbnRhaW4gYSBrZXkgOmVycm9yIHdpdGggYW4gZXgtaW5mbyBpbnN0YW5jZSBkZXNjcmliaW5nIHRoZSBjYXVzZSBvZlxuICAgICBmYWlsdXJlLiIsIDphcmdsaXN0cyBbW3N0YXRlIGZvcm0gY2JdIFtzdGF0ZSBmb3JtIG9wdHMgY2JdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBldmFsXHJcbiBcIkV2YWx1YXRlIGEgc2luZ2xlIENsb2p1cmVTY3JpcHQgZm9ybS4gVGhlIHBhcmFtZXRlcnM6XFxuXFxuICAgc3RhdGUgKGF0b20pXFxuICAgICB0aGUgY29tcGlsZXIgc3RhdGVcXG5cXG4gICBmb3JtIChzLWV4cHIpXFxuICAgICB0aGUgQ2xvanVyZVNjcmlwdCBzb3VyY2VcXG5cXG4gICBvcHRzIChtYXApXFxuICAgICBjb21waWxhdGlvbiBvcHRpb25zLlxcblxcbiAgICAgIDpldmFsICAgICAgICAgICAgIC0gZXZhbCBmdW5jdGlvbiB0byBpbnZva2UsIHNlZSAqZXZhbC1mbipcXG4gICAgICA6bG9hZCAgICAgICAgICAgICAtIGxpYnJhcnkgcmVzb2x1dGlvbiBmdW5jdGlvbiwgc2VlICpsb2FkLWZuKlxcbiAgICAgIDpzb3VyY2UtbWFwICAgICAgIC0gc2V0IHRvIHRydWUgdG8gZ2VuZXJhdGUgaW5saW5lIHNvdXJjZSBtYXAgaW5mb3JtYXRpb25cXG4gICAgICA6ZGVmLWVtaXRzLXZhciAgICAtIHNldHMgd2hldGhlciBkZWYgKGFuZCBkZXJpdmVkKSBmb3JtcyByZXR1cm4gZWl0aGVyIGEgVmFyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgc2V0IHRvIHRydWUpIG9yIHRoZSBkZWYgaW5pdCB2YWx1ZSAoaWYgZmFsc2UpLiBEZWZhdWx0XFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBmYWxzZS5cXG4gICAgICA6Y2hlY2tlZC1hcnJheXMgICAtIGlmIDp3YXJuIG9yIDplcnJvciwgY2hlY2tzIGluZmVycmVkIHR5cGVzIGFuZCB2YWx1ZXMgcGFzc2VkXFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0byBhZ2V0L2FzZXQuIExvZ3MgZm9yIGluY29ycmVjdCB2YWx1ZXMgaWYgOndhcm4sIHRocm93cyBpZlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOmVycm9yLiBEZWZhdWx0cyB0byBmYWxzZS5cXG4gICAgICA6c3RhdGljLWZucyAgICAgICAtIGVtcGxveSBzdGF0aWMgZGlzcGF0Y2ggdG8gc3BlY2lmaWMgZnVuY3Rpb24gYXJpdGllcyBpblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdHRlZCBKYXZhU2NyaXB0LCBhcyBvcHBvc2VkIHRvIG1ha2luZyB1c2Ugb2YgdGhlXFxuICAgICAgICAgICAgICAgICAgICAgICAgICBgY2FsbGAgY29uc3RydWN0LiBEZWZhdWx0cyB0byBmYWxzZS5cXG4gICAgICA6Zm4taW52b2tlLWRpcmVjdCAtIGlmIGB0cnVlYCwgZG9lcyBub3QgZ2VuZXJhdGUgYC5jYWxsKG51bGwuLi4pYCBjYWxscyBmb3JcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHVua25vd24gZnVuY3Rpb25zLCBidXQgaW5zdGVhZCBkaXJlY3QgaW52b2tlcyB2aWFcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBmKGEwLGExLi4uKWAuIERlZmF1bHRzIHRvIGBmYWxzZWAuXFxuICAgICAgOnRhcmdldCAgICAgICAgICAgLSB1c2UgYDpub2RlanNgIGlmIHRhcmdldGluZyBOb2RlLmpzLiBUYWtlcyBubyBvdGhlciBvcHRpb25zXFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhdCB0aGUgbW9tZW50LlxcbiAgICAgIDpucyAgICAgICAgICAgICAgIC0gb3B0aW9uYWwsIHRoZSBuYW1lc3BhY2UgaW4gd2hpY2ggdG8gZXZhbHVhdGUgdGhlIHNvdXJjZS5cXG4gICAgICA6dmVyYm9zZSAgICAgICAgICAtIG9wdGlvbmFsLCBlbWl0IGRldGFpbHMgZnJvbSBjb21waWxlciBhY3Rpdml0eS4gRGVmYXVsdHMgdG9cXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLlxcbiAgICAgIDpjb250ZXh0ICAgICAgICAgIC0gb3B0aW9uYWwsIHNldHMgdGhlIGNvbnRleHQgZm9yIHRoZSBzb3VyY2UuIFBvc3NpYmxlIHZhbHVlc1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIGA6ZXhwcmAsIGA6c3RhdGVtZW50YCBhbmQgYDpyZXR1cm5gLiBEZWZhdWx0cyB0b1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYDpleHByYC5cXG5cXG4gICBjYiAoZnVuY3Rpb24pXFxuICAgICBjYWxsYmFjaywgd2lsbCBiZSBpbnZva2VkIHdpdGggYSBtYXAuIElmIHN1Y2Nlc3NmdWwgdGhlIG1hcCB3aWxsIGNvbnRhaW5cXG4gICAgIGEga2V5IDp2YWx1ZSB3aXRoIHRoZSByZXN1bHQgb2YgZXZhbHV0aW9uLiBJZiB1bnN1Y2Nlc3NmdWwgdGhlIG1hcCB3aWxsXFxuICAgICBjb250YWluIGEga2V5IDplcnJvciB3aXRoIGFuIGV4LWluZm8gaW5zdGFuY2UgZGVzY3JpYmluZyB0aGUgY2F1c2Ugb2ZcXG4gICAgIGZhaWx1cmUuXCJcclxuIChbc3RhdGUgZm9ybSBjYl0gKGV2YWwgc3RhdGUgZm9ybSBuaWwgY2IpKVxyXG4gKFtzdGF0ZSBmb3JtIG9wdHMgY2JdXHJcbiAgKGV2YWwqXHJcbiAgIHs6KmNvbXBpbGVyKiBzdGF0ZSxcclxuICAgIDoqZGF0YS1yZWFkZXJzKiB0YWdzLypjbGpzLWRhdGEtcmVhZGVycyosXHJcbiAgICA6KmFuYWx5emUtZGVwcyogKDphbmFseXplLWRlcHMgb3B0cyB0cnVlKSxcclxuICAgIDoqY2xqcy1kZXAtc2V0KiBhbmEvKmNsanMtZGVwLXNldCosXHJcbiAgICA6KmxvYWQtbWFjcm9zKiAoOmxvYWQtbWFjcm9zIG9wdHMgdHJ1ZSksXHJcbiAgICA6KmxvYWQtZm4qIChvciAoOmxvYWQgb3B0cykgKmxvYWQtZm4qKSxcclxuICAgIDoqZXZhbC1mbiogKG9yICg6ZXZhbCBvcHRzKSAqZXZhbC1mbiopfVxyXG4gICBmb3JtXHJcbiAgIG9wdHNcclxuICAgY2IpKSlcclxuIn0gezpzeW0gY29tcGlsZS1zdHIsIDptZXRhIHs6ZG9jICJDb21waWxlIENsb2p1cmVTY3JpcHQgc291cmNlIGludG8gSmF2YVNjcmlwdC4gVGhlIHBhcmFtZXRlcnM6XG5cbiAgIHN0YXRlIChhdG9tKVxuICAgICB0aGUgY29tcGlsZXIgc3RhdGVcblxuICAgc291cmNlIChzdHJpbmcpXG4gICAgIHRoZSBDbG9qdXJlU2NyaXB0IHNvdXJjZVxuXG4gICBuYW1lIChzeW1ib2wgb3Igc3RyaW5nKVxuICAgICBvcHRpb25hbCwgdGhlIG5hbWUgb2YgdGhlIHNvdXJjZSAtIHVzZWQgYXMga2V5IGluIDpzb3VyY2UtbWFwc1xuXG4gICBvcHRzIChtYXApXG4gICAgIGNvbXBpbGF0aW9uIG9wdGlvbnMuXG5cbiAgICAgIDpldmFsICAgICAgICAgICAgIC0gZXZhbCBmdW5jdGlvbiB0byBpbnZva2UsIHNlZSAqZXZhbC1mbipcbiAgICAgIDpsb2FkICAgICAgICAgICAgIC0gbGlicmFyeSByZXNvbHV0aW9uIGZ1bmN0aW9uLCBzZWUgKmxvYWQtZm4qXG4gICAgICA6c291cmNlLW1hcCAgICAgICAtIHNldCB0byB0cnVlIHRvIGdlbmVyYXRlIGlubGluZSBzb3VyY2UgbWFwIGluZm9ybWF0aW9uXG4gICAgICA6ZGVmLWVtaXRzLXZhciAgICAtIHNldHMgd2hldGhlciBkZWYgKGFuZCBkZXJpdmVkKSBmb3JtcyByZXR1cm4gZWl0aGVyIGEgVmFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBzZXQgdG8gdHJ1ZSkgb3IgdGhlIGRlZiBpbml0IHZhbHVlIChpZiBmYWxzZSkuIERlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgZmFsc2UuXG4gICAgICA6Y2hlY2tlZC1hcnJheXMgICAtIGlmIDp3YXJuIG9yIDplcnJvciwgY2hlY2tzIGluZmVycmVkIHR5cGVzIGFuZCB2YWx1ZXMgcGFzc2VkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGFnZXQvYXNldC4gTG9ncyBmb3IgaW5jb3JyZWN0IHZhbHVlcyBpZiA6d2FybiwgdGhyb3dzIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDplcnJvci4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICA6c3RhdGljLWZucyAgICAgICAtIGVtcGxveSBzdGF0aWMgZGlzcGF0Y2ggdG8gc3BlY2lmaWMgZnVuY3Rpb24gYXJpdGllcyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0dGVkIEphdmFTY3JpcHQsIGFzIG9wcG9zZWQgdG8gbWFraW5nIHVzZSBvZiB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYGNhbGxgIGNvbnN0cnVjdC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICA6Zm4taW52b2tlLWRpcmVjdCAtIGlmIGB0cnVlYCwgZG9lcyBub3QgZ2VuZXJhdGUgYC5jYWxsKG51bGwuLi4pYCBjYWxscyBmb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5rbm93biBmdW5jdGlvbnMsIGJ1dCBpbnN0ZWFkIGRpcmVjdCBpbnZva2VzIHZpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICBgZihhMCxhMS4uLilgLiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICAgICAgOnRhcmdldCAgICAgICAgICAgLSB1c2UgYDpub2RlanNgIGlmIHRhcmdldGluZyBOb2RlLmpzLiBUYWtlcyBubyBvdGhlciBvcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0IHRoZSBtb21lbnQuXG4gICAgICA6bnMgICAgICAgICAgICAgICAtIG9wdGlvbmFsLCB0aGUgbmFtZXNwYWNlIGluIHdoaWNoIHRvIGV2YWx1YXRlIHRoZSBzb3VyY2UuXG4gICAgICA6dmVyYm9zZSAgICAgICAgICAtIG9wdGlvbmFsLCBlbWl0IGRldGFpbHMgZnJvbSBjb21waWxlciBhY3Rpdml0eS4gRGVmYXVsdHMgdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UuXG4gICAgICA6Y29udGV4dCAgICAgICAgICAtIG9wdGlvbmFsLCBzZXRzIHRoZSBjb250ZXh0IGZvciB0aGUgc291cmNlLiBQb3NzaWJsZSB2YWx1ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIGA6ZXhwcmAsIGA6c3RhdGVtZW50YCBhbmQgYDpyZXR1cm5gLiBEZWZhdWx0cyB0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgOmV4cHJgLlxuXG4gICBjYiAoZnVuY3Rpb24pXG4gICAgIGNhbGxiYWNrLCB3aWxsIGJlIGludm9rZWQgd2l0aCBhIG1hcC4gSWYgc3VjY2Vzc2Z1bCB0aGUgbWFwIHdpbGwgY29udGFpblxuICAgICBhIGtleSA6dmFsdWUgd2l0aCB0aGUgY29tcGlsYXRpb24gcmVzdWx0IChzdHJpbmcpLiBJZiB1bnN1Y2Nlc3NmdWwgdGhlIG1hcFxuICAgICB3aWxsIGNvbnRhaW4gYSBrZXkgOmVycm9yIHdpdGggYW4gZXgtaW5mbyBpbnN0YW5jZSBkZXNjcmliaW5nIHRoZSBjYXVzZVxuICAgICBvZiBmYWlsdXJlLiIsIDphcmdsaXN0cyBbW3N0YXRlIHNvdXJjZSBjYl0gW3N0YXRlIHNvdXJjZSBuYW1lIGNiXSBbc3RhdGUgc291cmNlIG5hbWUgb3B0cyBjYl1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGNvbXBpbGUtc3RyXHJcbiBcIkNvbXBpbGUgQ2xvanVyZVNjcmlwdCBzb3VyY2UgaW50byBKYXZhU2NyaXB0LiBUaGUgcGFyYW1ldGVyczpcXG5cXG4gICBzdGF0ZSAoYXRvbSlcXG4gICAgIHRoZSBjb21waWxlciBzdGF0ZVxcblxcbiAgIHNvdXJjZSAoc3RyaW5nKVxcbiAgICAgdGhlIENsb2p1cmVTY3JpcHQgc291cmNlXFxuXFxuICAgbmFtZSAoc3ltYm9sIG9yIHN0cmluZylcXG4gICAgIG9wdGlvbmFsLCB0aGUgbmFtZSBvZiB0aGUgc291cmNlIC0gdXNlZCBhcyBrZXkgaW4gOnNvdXJjZS1tYXBzXFxuXFxuICAgb3B0cyAobWFwKVxcbiAgICAgY29tcGlsYXRpb24gb3B0aW9ucy5cXG5cXG4gICAgICA6ZXZhbCAgICAgICAgICAgICAtIGV2YWwgZnVuY3Rpb24gdG8gaW52b2tlLCBzZWUgKmV2YWwtZm4qXFxuICAgICAgOmxvYWQgICAgICAgICAgICAgLSBsaWJyYXJ5IHJlc29sdXRpb24gZnVuY3Rpb24sIHNlZSAqbG9hZC1mbipcXG4gICAgICA6c291cmNlLW1hcCAgICAgICAtIHNldCB0byB0cnVlIHRvIGdlbmVyYXRlIGlubGluZSBzb3VyY2UgbWFwIGluZm9ybWF0aW9uXFxuICAgICAgOmRlZi1lbWl0cy12YXIgICAgLSBzZXRzIHdoZXRoZXIgZGVmIChhbmQgZGVyaXZlZCkgZm9ybXMgcmV0dXJuIGVpdGhlciBhIFZhclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIHNldCB0byB0cnVlKSBvciB0aGUgZGVmIGluaXQgdmFsdWUgKGlmIGZhbHNlKS4gRGVmYXVsdFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgZmFsc2UuXFxuICAgICAgOmNoZWNrZWQtYXJyYXlzICAgLSBpZiA6d2FybiBvciA6ZXJyb3IsIGNoZWNrcyBpbmZlcnJlZCB0eXBlcyBhbmQgdmFsdWVzIHBhc3NlZFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYWdldC9hc2V0LiBMb2dzIGZvciBpbmNvcnJlY3QgdmFsdWVzIGlmIDp3YXJuLCB0aHJvd3MgaWZcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDplcnJvci4gRGVmYXVsdHMgdG8gZmFsc2UuXFxuICAgICAgOnN0YXRpYy1mbnMgICAgICAgLSBlbXBsb3kgc3RhdGljIGRpc3BhdGNoIHRvIHNwZWNpZmljIGZ1bmN0aW9uIGFyaXRpZXMgaW5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXR0ZWQgSmF2YVNjcmlwdCwgYXMgb3Bwb3NlZCB0byBtYWtpbmcgdXNlIG9mIHRoZVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYGNhbGxgIGNvbnN0cnVjdC4gRGVmYXVsdHMgdG8gZmFsc2UuXFxuICAgICAgOmZuLWludm9rZS1kaXJlY3QgLSBpZiBgdHJ1ZWAsIGRvZXMgbm90IGdlbmVyYXRlIGAuY2FsbChudWxsLi4uKWAgY2FsbHMgZm9yXFxuICAgICAgICAgICAgICAgICAgICAgICAgICB1bmtub3duIGZ1bmN0aW9ucywgYnV0IGluc3RlYWQgZGlyZWN0IGludm9rZXMgdmlhXFxuICAgICAgICAgICAgICAgICAgICAgICAgICBgZihhMCxhMS4uLilgLiBEZWZhdWx0cyB0byBgZmFsc2VgLlxcbiAgICAgIDp0YXJnZXQgICAgICAgICAgIC0gdXNlIGA6bm9kZWpzYCBpZiB0YXJnZXRpbmcgTm9kZS5qcy4gVGFrZXMgbm8gb3RoZXIgb3B0aW9uc1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXQgdGhlIG1vbWVudC5cXG4gICAgICA6bnMgICAgICAgICAgICAgICAtIG9wdGlvbmFsLCB0aGUgbmFtZXNwYWNlIGluIHdoaWNoIHRvIGV2YWx1YXRlIHRoZSBzb3VyY2UuXFxuICAgICAgOnZlcmJvc2UgICAgICAgICAgLSBvcHRpb25hbCwgZW1pdCBkZXRhaWxzIGZyb20gY29tcGlsZXIgYWN0aXZpdHkuIERlZmF1bHRzIHRvXFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZS5cXG4gICAgICA6Y29udGV4dCAgICAgICAgICAtIG9wdGlvbmFsLCBzZXRzIHRoZSBjb250ZXh0IGZvciB0aGUgc291cmNlLiBQb3NzaWJsZSB2YWx1ZXNcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBgOmV4cHJgLCBgOnN0YXRlbWVudGAgYW5kIGA6cmV0dXJuYC4gRGVmYXVsdHMgdG9cXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGA6ZXhwcmAuXFxuXFxuICAgY2IgKGZ1bmN0aW9uKVxcbiAgICAgY2FsbGJhY2ssIHdpbGwgYmUgaW52b2tlZCB3aXRoIGEgbWFwLiBJZiBzdWNjZXNzZnVsIHRoZSBtYXAgd2lsbCBjb250YWluXFxuICAgICBhIGtleSA6dmFsdWUgd2l0aCB0aGUgY29tcGlsYXRpb24gcmVzdWx0IChzdHJpbmcpLiBJZiB1bnN1Y2Nlc3NmdWwgdGhlIG1hcFxcbiAgICAgd2lsbCBjb250YWluIGEga2V5IDplcnJvciB3aXRoIGFuIGV4LWluZm8gaW5zdGFuY2UgZGVzY3JpYmluZyB0aGUgY2F1c2VcXG4gICAgIG9mIGZhaWx1cmUuXCJcclxuIChbc3RhdGUgc291cmNlIGNiXSAoY29tcGlsZS1zdHIgc3RhdGUgc291cmNlIG5pbCBjYikpXHJcbiAoW3N0YXRlIHNvdXJjZSBuYW1lIGNiXSAoY29tcGlsZS1zdHIgc3RhdGUgc291cmNlIG5hbWUgbmlsIGNiKSlcclxuIChbc3RhdGUgc291cmNlIG5hbWUgb3B0cyBjYl1cclxuICB7OnByZVxyXG4gICBbKGF0b20/IHN0YXRlKVxyXG4gICAgKHN0cmluZz8gc291cmNlKVxyXG4gICAgKHZhbGlkLW5hbWU/IG5hbWUpXHJcbiAgICAodmFsaWQtb3B0cz8gb3B0cylcclxuICAgIChmbj8gY2IpXX1cclxuICAoY29tcGlsZS1zdHIqXHJcbiAgIHs6KmNvbXBpbGVyKiBzdGF0ZSxcclxuICAgIDoqZGF0YS1yZWFkZXJzKiB0YWdzLypjbGpzLWRhdGEtcmVhZGVycyosXHJcbiAgICA6KmNsanMtZGVwLXNldCogYW5hLypjbGpzLWRlcC1zZXQqLFxyXG4gICAgOiphbmFseXplLWRlcHMqICg6YW5hbHl6ZS1kZXBzIG9wdHMgdHJ1ZSksXHJcbiAgICA6KmxvYWQtbWFjcm9zKiAoOmxvYWQtbWFjcm9zIG9wdHMgdHJ1ZSksXHJcbiAgICA6KmxvYWQtZm4qIChvciAoOmxvYWQgb3B0cykgKmxvYWQtZm4qKSxcclxuICAgIDoqZXZhbC1mbiogKG9yICg6ZXZhbCBvcHRzKSAqZXZhbC1mbiopLFxyXG4gICAgOipzbS1kYXRhKiAod2hlbiAoOnNvdXJjZS1tYXAgb3B0cykgKHNtLWRhdGEpKX1cclxuICAgc291cmNlXHJcbiAgIG5hbWVcclxuICAgb3B0c1xyXG4gICBjYikpKVxyXG4ifSB7OnN5bSBucy0+cmVscGF0aCwgOm1ldGEgezpkb2MgIkdpdmVuIGEgbmFtZXNwYWNlIGFzIGEgc3ltYm9sIHJldHVybiB0aGUgcmVsYXRpdmUgcGF0aCBzYW5zIGV4dGVuc2lvbiIsIDphcmdsaXN0cyAoW25zLXN5bV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIG5zLT5yZWxwYXRoXHJcbiBcIkdpdmVuIGEgbmFtZXNwYWNlIGFzIGEgc3ltYm9sIHJldHVybiB0aGUgcmVsYXRpdmUgcGF0aCBzYW5zIGV4dGVuc2lvblwiXHJcbiBbbnMtc3ltXVxyXG4gKHN0cmluZy9yZXBsYWNlIChhbmEvbXVuZ2UtcGF0aCBucy1zeW0pIFxcLiBcXC8pKVxyXG4ifSB7OnN5bSBlbXB0eS1zdGF0ZSwgOm1ldGEgezpkb2MgIkNvbnN0cnVjdCBhbiBlbXB0eSBjb21waWxlciBzdGF0ZS4gUmVxdWlyZWQgdG8gaW52b2tlIGFuYWx5emUsIGNvbXBpbGUsXG4gICBldmFsIGFuZCBldmFsLXN0ci4iLCA6YXJnbGlzdHMgW1tdIFtpbml0XV19LCA6c291cmNlICIoZGVmblxyXG4gZW1wdHktc3RhdGVcclxuIFwiQ29uc3RydWN0IGFuIGVtcHR5IGNvbXBpbGVyIHN0YXRlLiBSZXF1aXJlZCB0byBpbnZva2UgYW5hbHl6ZSwgY29tcGlsZSxcXG4gICBldmFsIGFuZCBldmFsLXN0ci5cIlxyXG4gKFtdXHJcbiAgKGRvdG9cclxuICAgKGVudi9kZWZhdWx0LWNvbXBpbGVyLWVudilcclxuICAgKHN3YXAhXHJcbiAgICAoZm5cclxuICAgICBbc3RhdGVdXHJcbiAgICAgKC0+XHJcbiAgICAgIHN0YXRlXHJcbiAgICAgIChhc3NvYy1pblxyXG4gICAgICAgWzpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXMgJ2NsanMuY29yZV1cclxuICAgICAgIChkdW1wLWNvcmUpKSkpKSkpXHJcbiAoW2luaXRdIChkb3RvIChlbXB0eS1zdGF0ZSkgKHN3YXAhIGluaXQpKSkpXHJcbiJ9IHs6c3ltICpsb2FkZWQqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqbG9hZGVkKiAoYXRvbSAje30pKVxyXG4ifSB7OnN5bSByZXF1aXJlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW25hbWUgY2JdIFtuYW1lIG9wdHMgY2JdIFtib3VuZC12YXJzIG5hbWUgb3B0cyBjYl0gW2JvdW5kLXZhcnMgbmFtZSByZWxvYWQgb3B0cyBjYl1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlcXVpcmVcclxuIChbbmFtZSBjYl0gKHJlcXVpcmUgbmFtZSBuaWwgY2IpKVxyXG4gKFtuYW1lIG9wdHMgY2JdIChyZXF1aXJlIG5pbCBuYW1lIG9wdHMgY2IpKVxyXG4gKFtib3VuZC12YXJzIG5hbWUgb3B0cyBjYl0gKHJlcXVpcmUgYm91bmQtdmFycyBuYW1lIG5pbCBvcHRzIGNiKSlcclxuIChbYm91bmQtdmFycyBuYW1lIHJlbG9hZCBvcHRzIGNiXVxyXG4gIChsZXRcclxuICAgW2JvdW5kLXZhcnNcclxuICAgIChtZXJnZVxyXG4gICAgIHs6KmNvbXBpbGVyKiAoZW52L2RlZmF1bHQtY29tcGlsZXItZW52KSxcclxuICAgICAgOipkYXRhLXJlYWRlcnMqIHRhZ3MvKmNsanMtZGF0YS1yZWFkZXJzKixcclxuICAgICAgOipsb2FkLW1hY3JvcyogKDpsb2FkLW1hY3JvcyBvcHRzIHRydWUpLFxyXG4gICAgICA6KmFuYWx5emUtZGVwcyogKDphbmFseXplLWRlcHMgb3B0cyB0cnVlKSxcclxuICAgICAgOipsb2FkLWZuKiAob3IgKDpsb2FkIG9wdHMpICpsb2FkLWZuKiksXHJcbiAgICAgIDoqZXZhbC1mbiogKG9yICg6ZXZhbCBvcHRzKSAqZXZhbC1mbiopfVxyXG4gICAgIGJvdW5kLXZhcnMpXHJcbiAgICBhbmFtZVxyXG4gICAgKGNvbmQtPiBuYW1lICg6bWFjcm9zLW5zIG9wdHMpIGFuYS9tYWNyby1ucy1uYW1lKV1cclxuICAgKHdoZW4gKD0gOnJlbG9hZCByZWxvYWQpIChzd2FwISAqbG9hZGVkKiBkaXNqIGFuYW1lKSlcclxuICAgKHdoZW4gKD0gOnJlbG9hZC1hbGwgcmVsb2FkKSAocmVzZXQhICpsb2FkZWQqICN7fSkpXHJcbiAgICh3aGVuXHJcbiAgICAoOnZlcmJvc2Ugb3B0cylcclxuICAgIChkZWJ1Zy1wcm5cclxuICAgICAoc3RyXHJcbiAgICAgIFwiTG9hZGluZyBcIlxyXG4gICAgICBuYW1lXHJcbiAgICAgICh3aGVuICg6bWFjcm9zLW5zIG9wdHMpIFwiIG1hY3Jvc1wiKVxyXG4gICAgICBcIiBuYW1lc3BhY2VcIikpKVxyXG4gICAoaWYtbm90XHJcbiAgICAoY29udGFpbnM/IEAqbG9hZGVkKiBhbmFtZSlcclxuICAgIChsZXRcclxuICAgICBbZW52ICg6KmVudiogYm91bmQtdmFycyldXHJcbiAgICAgKHRyeVxyXG4gICAgICAoKDoqbG9hZC1mbiogYm91bmQtdmFycylcclxuICAgICAgIHs6bmFtZSBuYW1lLFxyXG4gICAgICAgIDptYWNyb3MgKDptYWNyb3MtbnMgb3B0cyksXHJcbiAgICAgICAgOnBhdGggKG5zLT5yZWxwYXRoIG5hbWUpfVxyXG4gICAgICAgKGZuXHJcbiAgICAgICAgW3Jlc291cmNlXVxyXG4gICAgICAgIChhc3NlcnRcclxuICAgICAgICAgKG9yIChtYXA/IHJlc291cmNlKSAobmlsPyByZXNvdXJjZSkpXHJcbiAgICAgICAgIFwiKmxvYWQtZm4qIG1heSBvbmx5IHJldHVybiBhIG1hcCBvciBuaWxcIilcclxuICAgICAgICAoaWZcclxuICAgICAgICAgcmVzb3VyY2VcclxuICAgICAgICAgKGxldFxyXG4gICAgICAgICAgW3s6a2V5cyBbbGFuZyBzb3VyY2UgY2FjaGUgc291cmNlLW1hcCBmaWxlXX0gcmVzb3VyY2VdXHJcbiAgICAgICAgICAoY29uZHBcclxuICAgICAgICAgICBrZXl3b3JkLWlkZW50aWNhbD9cclxuICAgICAgICAgICBsYW5nXHJcbiAgICAgICAgICAgOmNsalxyXG4gICAgICAgICAgIChkb1xyXG4gICAgICAgICAgICAocHJlLWZpbGUtc2lkZS1lZmZlY3RzXHJcbiAgICAgICAgICAgICAoOipjb21waWxlciogYm91bmQtdmFycylcclxuICAgICAgICAgICAgIGFuYW1lXHJcbiAgICAgICAgICAgICBmaWxlXHJcbiAgICAgICAgICAgICBvcHRzKVxyXG4gICAgICAgICAgICAoZXZhbC1zdHIqXHJcbiAgICAgICAgICAgICBib3VuZC12YXJzXHJcbiAgICAgICAgICAgICBzb3VyY2VcclxuICAgICAgICAgICAgIG5hbWVcclxuICAgICAgICAgICAgIChhc3NvYyBvcHRzIDpjbGpzLWZpbGUgZmlsZSlcclxuICAgICAgICAgICAgIChmblxyXG4gICAgICAgICAgICAgIFtyZXNdXHJcbiAgICAgICAgICAgICAgKHBvc3QtZmlsZS1zaWRlLWVmZmVjdHMgZmlsZSBvcHRzKVxyXG4gICAgICAgICAgICAgIChpZlxyXG4gICAgICAgICAgICAgICAoOmVycm9yIHJlcylcclxuICAgICAgICAgICAgICAgKGNiIHJlcylcclxuICAgICAgICAgICAgICAgKGRvIChzd2FwISAqbG9hZGVkKiBjb25qIGFuYW1lKSAoY2Igezp2YWx1ZSB0cnVlfSkpKSkpKVxyXG4gICAgICAgICAgIDpqc1xyXG4gICAgICAgICAgIChwcm9jZXNzLW1hY3Jvcy1kZXBzXHJcbiAgICAgICAgICAgIGJvdW5kLXZhcnNcclxuICAgICAgICAgICAgY2FjaGVcclxuICAgICAgICAgICAgb3B0c1xyXG4gICAgICAgICAgICAoZm5cclxuICAgICAgICAgICAgIFtyZXNdXHJcbiAgICAgICAgICAgICAoaWZcclxuICAgICAgICAgICAgICAoOmVycm9yIHJlcylcclxuICAgICAgICAgICAgICAoY2IgcmVzKVxyXG4gICAgICAgICAgICAgIChwcm9jZXNzLWxpYnMtZGVwc1xyXG4gICAgICAgICAgICAgICBib3VuZC12YXJzXHJcbiAgICAgICAgICAgICAgIGNhY2hlXHJcbiAgICAgICAgICAgICAgIG9wdHNcclxuICAgICAgICAgICAgICAgKGZuXHJcbiAgICAgICAgICAgICAgICBbcmVzXVxyXG4gICAgICAgICAgICAgICAgKGlmXHJcbiAgICAgICAgICAgICAgICAgKDplcnJvciByZXMpXHJcbiAgICAgICAgICAgICAgICAgKGNiIHJlcylcclxuICAgICAgICAgICAgICAgICAobGV0XHJcbiAgICAgICAgICAgICAgICAgIFtyZXNcclxuICAgICAgICAgICAgICAgICAgICh0cnlcclxuICAgICAgICAgICAgICAgICAgICAoKDoqZXZhbC1mbiogYm91bmQtdmFycykgcmVzb3VyY2UpXHJcbiAgICAgICAgICAgICAgICAgICAgKHdoZW5cclxuICAgICAgICAgICAgICAgICAgICAgY2FjaGVcclxuICAgICAgICAgICAgICAgICAgICAgKGxvYWQtYW5hbHlzaXMtY2FjaGUhXHJcbiAgICAgICAgICAgICAgICAgICAgICAoOipjb21waWxlciogYm91bmQtdmFycylcclxuICAgICAgICAgICAgICAgICAgICAgIGFuYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICBjYWNoZSlcclxuICAgICAgICAgICAgICAgICAgICAgKGFuYS9yZWdpc3Rlci1zcGVjcyBjYWNoZSkpXHJcbiAgICAgICAgICAgICAgICAgICAgKHdoZW5cclxuICAgICAgICAgICAgICAgICAgICAgc291cmNlLW1hcFxyXG4gICAgICAgICAgICAgICAgICAgICAobG9hZC1zb3VyY2UtbWFwIVxyXG4gICAgICAgICAgICAgICAgICAgICAgKDoqY29tcGlsZXIqIGJvdW5kLXZhcnMpXHJcbiAgICAgICAgICAgICAgICAgICAgICBhbmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgc291cmNlLW1hcCkpXHJcbiAgICAgICAgICAgICAgICAgICAgKGNhdGNoXHJcbiAgICAgICAgICAgICAgICAgICAgIDpkZWZhdWx0XHJcbiAgICAgICAgICAgICAgICAgICAgIGNhdXNlXHJcbiAgICAgICAgICAgICAgICAgICAgICh3cmFwLWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAoYW5hL2Vycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgZW52XHJcbiAgICAgICAgICAgICAgICAgICAgICAgKHN0ciBcIkNvdWxkIG5vdCByZXF1aXJlIFwiIG5hbWUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2F1c2UpKSkpXVxyXG4gICAgICAgICAgICAgICAgICAoaWZcclxuICAgICAgICAgICAgICAgICAgICg6ZXJyb3IgcmVzKVxyXG4gICAgICAgICAgICAgICAgICAgKGNiIHJlcylcclxuICAgICAgICAgICAgICAgICAgIChkb1xyXG4gICAgICAgICAgICAgICAgICAgIChzd2FwISAqbG9hZGVkKiBjb25qIGFuYW1lKVxyXG4gICAgICAgICAgICAgICAgICAgIChjYiB7OnZhbHVlIHRydWV9KSkpKSkpKSkpKVxyXG4gICAgICAgICAgIChjYlxyXG4gICAgICAgICAgICAod3JhcC1lcnJvclxyXG4gICAgICAgICAgICAgKGFuYS9lcnJvclxyXG4gICAgICAgICAgICAgIGVudlxyXG4gICAgICAgICAgICAgIChzdHJcclxuICAgICAgICAgICAgICAgXCJJbnZhbGlkIDpsYW5nIHNwZWNpZmllZCBcIlxyXG4gICAgICAgICAgICAgICBsYW5nXHJcbiAgICAgICAgICAgICAgIFwiLCBvbmx5IDpjbGogb3IgOmpzIGFsbG93ZWRcIikpKSkpKVxyXG4gICAgICAgICAoY2JcclxuICAgICAgICAgICh3cmFwLWVycm9yXHJcbiAgICAgICAgICAgKGFuYS9lcnJvclxyXG4gICAgICAgICAgICBlbnZcclxuICAgICAgICAgICAgKGFuYS9lcnJvci1tZXNzYWdlXHJcbiAgICAgICAgICAgICAoaWZcclxuICAgICAgICAgICAgICAoOm1hY3Jvcy1ucyBvcHRzKVxyXG4gICAgICAgICAgICAgIDp1bmRlY2xhcmVkLW1hY3Jvcy1uc1xyXG4gICAgICAgICAgICAgIDp1bmRlY2xhcmVkLW5zKVxyXG4gICAgICAgICAgICAgezpucy1zeW0gbmFtZSwgOmpzLXByb3ZpZGUgKGNsanMuY29yZS9uYW1lIG5hbWUpfSkpKSkpKSlcclxuICAgICAgKGNhdGNoXHJcbiAgICAgICA6ZGVmYXVsdFxyXG4gICAgICAgY2F1c2VcclxuICAgICAgIChjYlxyXG4gICAgICAgICh3cmFwLWVycm9yXHJcbiAgICAgICAgIChhbmEvZXJyb3IgZW52IChzdHIgXCJDb3VsZCBub3QgcmVxdWlyZSBcIiBuYW1lKSBjYXVzZSkpKSkpKVxyXG4gICAgKGNiIHs6dmFsdWUgdHJ1ZX0pKSkpKVxyXG4ifSB7OnN5bSBmaWxlLT5ucywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmaWxlXSl9LCA6c291cmNlICIoZGVmblxyXG4gZmlsZS0+bnNcclxuIFtmaWxlXVxyXG4gKGxldFxyXG4gIFtsaWItbmFtZSAoc3VicyAoc3RyaW5nL3JlcGxhY2UgZmlsZSBcIi9cIiBcIi5cIikgMCAoLSAoY291bnQgZmlsZSkgNSkpXVxyXG4gIChzeW1ib2wgKGRlbXVuZ2UgbGliLW5hbWUpKSkpXHJcbiJ9IHs6c3ltIGV2YWwtc3RyLCA6bWV0YSB7OmRvYyAiRXZhbHV0ZSBDbG9qdXJlU2NyaXB0IHNvdXJjZSBnaXZlbiBhcyBhIHN0cmluZy4gVGhlIHBhcmFtZXRlcnM6XG5cbiAgc3RhdGUgKGF0b20pXG4gICAgdGhlIGNvbXBpbGVyIHN0YXRlXG5cbiAgc291cmNlIChzdHJpbmcpXG4gICAgdGhlIENsb2p1cmVTY3JpcHQgc291cmNlXG5cbiAgbmFtZSAoc3ltYm9sIG9yIHN0cmluZylcbiAgICBvcHRpb25hbCwgdGhlIG5hbWUgb2YgdGhlIHNvdXJjZSAtIHVzZWQgYXMga2V5IGluIDpzb3VyY2UtbWFwc1xuXG4gIG9wdHMgKG1hcClcbiAgICBjb21waWxhdGlvbiBvcHRpb25zLlxuXG4gICAgOmV2YWwgICAgICAgICAgICAgLSBldmFsIGZ1bmN0aW9uIHRvIGludm9rZSwgc2VlICpldmFsLWZuKlxuICAgIDpsb2FkICAgICAgICAgICAgIC0gbGlicmFyeSByZXNvbHV0aW9uIGZ1bmN0aW9uLCBzZWUgKmxvYWQtZm4qXG4gICAgOnNvdXJjZS1tYXAgICAgICAgLSBzZXQgdG8gdHJ1ZSB0byBnZW5lcmF0ZSBpbmxpbmUgc291cmNlIG1hcCBpbmZvcm1hdGlvblxuICAgIDpjYWNoZS1zb3VyY2UgICAgIC0gb3B0aW9uYWwsIGEgZnVuY3Rpb24gdG8gcnVuIHNpZGUtZWZmZWN0cyB3aXRoIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsYXRpb24gcmVzdWx0IHByaW9yIHRvIGFjdHVhbCBldmFsdXRpb24uIFRoaXMgZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIHRha2VzIHR3byBhcmd1bWVudHMsIHRoZSBmaXJzdCBpcyB0aGUgZXZhbCBtYXAsIHRoZSBzb3VyY2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgYmUgdW5kZXIgOnNvdXJjZS4gVGhlIHNlY29uZCBhcmd1bWVudCBpcyBhIGNhbGxiYWNrIG9mXG4gICAgICAgICAgICAgICAgICAgICAgICBvbmUgYXJndW1lbnQuIElmIGFuIGVycm9yIG9jY3VycyBhbiA6ZXJyb3Iga2V5IHNob3VsZCBiZVxuICAgICAgICAgICAgICAgICAgICAgICAgc3VwcGxpZWQuXG4gICAgOmRlZi1lbWl0cy12YXIgICAgLSBzZXRzIHdoZXRoZXIgZGVmIChhbmQgZGVyaXZlZCkgZm9ybXMgcmV0dXJuIGVpdGhlciBhIFZhclxuICAgICAgICAgICAgICAgICAgICAgICAgKGlmIHNldCB0byB0cnVlKSBvciB0aGUgZGVmIGluaXQgdmFsdWUgKGlmIGZhbHNlKS4gRGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgaXMgZmFsc2UuXG4gICAgOmNoZWNrZWQtYXJyYXlzICAgLSBpZiA6d2FybiBvciA6ZXJyb3IsIGNoZWNrcyBpbmZlcnJlZCB0eXBlcyBhbmQgdmFsdWVzIHBhc3NlZFxuICAgICAgICAgICAgICAgICAgICAgICAgdG8gYWdldC9hc2V0LiBMb2dzIGZvciBpbmNvcnJlY3QgdmFsdWVzIGlmIDp3YXJuLCB0aHJvd3MgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgIDplcnJvci4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgOnN0YXRpYy1mbnMgICAgICAgLSBlbXBsb3kgc3RhdGljIGRpc3BhdGNoIHRvIHNwZWNpZmljIGZ1bmN0aW9uIGFyaXRpZXMgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVtaXR0ZWQgSmF2YVNjcmlwdCwgYXMgb3Bwb3NlZCB0byBtYWtpbmcgdXNlIG9mIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgYGNhbGxgIGNvbnN0cnVjdC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgOmZuLWludm9rZS1kaXJlY3QgLSBpZiBgdHJ1ZWAsIGRvZXMgbm90IGdlbmVyYXRlIGAuY2FsbChudWxsLi4uKWAgY2FsbHMgZm9yXG4gICAgICAgICAgICAgICAgICAgICAgICB1bmtub3duIGZ1bmN0aW9ucywgYnV0IGluc3RlYWQgZGlyZWN0IGludm9rZXMgdmlhXG4gICAgICAgICAgICAgICAgICAgICAgICBgZihhMCxhMS4uLilgLiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICAgIDp0YXJnZXQgICAgICAgICAgIC0gdXNlIGA6bm9kZWpzYCBpZiB0YXJnZXRpbmcgTm9kZS5qcy4gVGFrZXMgbm8gb3RoZXIgb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgYXQgdGhlIG1vbWVudC5cbiAgICA6bnMgICAgICAgICAgICAgICAtIG9wdGlvbmFsLCB0aGUgbmFtZXNwYWNlIGluIHdoaWNoIHRvIGV2YWx1YXRlIHRoZSBzb3VyY2UuXG4gICAgOnZlcmJvc2UgICAgICAgICAgLSBvcHRpb25hbCwgZW1pdCBkZXRhaWxzIGZyb20gY29tcGlsZXIgYWN0aXZpdHkuIERlZmF1bHRzIHRvXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWxzZS5cbiAgICA6Y29udGV4dCAgICAgICAgICAtIG9wdGlvbmFsLCBzZXRzIHRoZSBjb250ZXh0IGZvciB0aGUgc291cmNlLiBQb3NzaWJsZSB2YWx1ZXNcbiAgICAgICAgICAgICAgICAgICAgIGFyZSBgOmV4cHJgLCBgOnN0YXRlbWVudGAgYW5kIGA6cmV0dXJuYC4gRGVmYXVsdHMgdG9cbiAgICAgICAgICAgICAgICAgICAgICBgOmV4cHJgLlxuXG4gIGNiIChmdW5jdGlvbilcbiAgICBjYWxsYmFjaywgd2lsbCBiZSBpbnZva2VkIHdpdGggYSBtYXAuIElmIHN1Y2Nlc2Z1bCB0aGUgbWFwIHdpbGwgY29udGFpblxuICAgIGEgOnZhbHVlIGtleSB3aXRoIHRoZSByZXN1bHQgb2YgZXZhbHVhdGlvbiBhbmQgOm5zIHRoZSBjdXJyZW50IG5hbWVzcGFjZS5cbiAgICBJZiB1bnN1Y2Nlc3NmdWwgd2lsbCBjb250YWluIGEgOmVycm9yIGtleSB3aXRoIGFuIGV4LWluZm8gaW5zdGFuY2UgZGVzY3JpYmluZ1xuICAgIHRoZSBjYXVzZSBvZiBmYWlsdXJlLiIsIDphcmdsaXN0cyBbW3N0YXRlIHNvdXJjZSBjYl0gW3N0YXRlIHNvdXJjZSBuYW1lIGNiXSBbc3RhdGUgc291cmNlIG5hbWUgb3B0cyBjYl1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGV2YWwtc3RyXHJcbiBcIkV2YWx1dGUgQ2xvanVyZVNjcmlwdCBzb3VyY2UgZ2l2ZW4gYXMgYSBzdHJpbmcuIFRoZSBwYXJhbWV0ZXJzOlxcblxcbiAgc3RhdGUgKGF0b20pXFxuICAgIHRoZSBjb21waWxlciBzdGF0ZVxcblxcbiAgc291cmNlIChzdHJpbmcpXFxuICAgIHRoZSBDbG9qdXJlU2NyaXB0IHNvdXJjZVxcblxcbiAgbmFtZSAoc3ltYm9sIG9yIHN0cmluZylcXG4gICAgb3B0aW9uYWwsIHRoZSBuYW1lIG9mIHRoZSBzb3VyY2UgLSB1c2VkIGFzIGtleSBpbiA6c291cmNlLW1hcHNcXG5cXG4gIG9wdHMgKG1hcClcXG4gICAgY29tcGlsYXRpb24gb3B0aW9ucy5cXG5cXG4gICAgOmV2YWwgICAgICAgICAgICAgLSBldmFsIGZ1bmN0aW9uIHRvIGludm9rZSwgc2VlICpldmFsLWZuKlxcbiAgICA6bG9hZCAgICAgICAgICAgICAtIGxpYnJhcnkgcmVzb2x1dGlvbiBmdW5jdGlvbiwgc2VlICpsb2FkLWZuKlxcbiAgICA6c291cmNlLW1hcCAgICAgICAtIHNldCB0byB0cnVlIHRvIGdlbmVyYXRlIGlubGluZSBzb3VyY2UgbWFwIGluZm9ybWF0aW9uXFxuICAgIDpjYWNoZS1zb3VyY2UgICAgIC0gb3B0aW9uYWwsIGEgZnVuY3Rpb24gdG8gcnVuIHNpZGUtZWZmZWN0cyB3aXRoIHRoZVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGF0aW9uIHJlc3VsdCBwcmlvciB0byBhY3R1YWwgZXZhbHV0aW9uLiBUaGlzIGZ1bmN0aW9uXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFrZXMgdHdvIGFyZ3VtZW50cywgdGhlIGZpcnN0IGlzIHRoZSBldmFsIG1hcCwgdGhlIHNvdXJjZVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgYmUgdW5kZXIgOnNvdXJjZS4gVGhlIHNlY29uZCBhcmd1bWVudCBpcyBhIGNhbGxiYWNrIG9mXFxuICAgICAgICAgICAgICAgICAgICAgICAgb25lIGFyZ3VtZW50LiBJZiBhbiBlcnJvciBvY2N1cnMgYW4gOmVycm9yIGtleSBzaG91bGQgYmVcXG4gICAgICAgICAgICAgICAgICAgICAgICBzdXBwbGllZC5cXG4gICAgOmRlZi1lbWl0cy12YXIgICAgLSBzZXRzIHdoZXRoZXIgZGVmIChhbmQgZGVyaXZlZCkgZm9ybXMgcmV0dXJuIGVpdGhlciBhIFZhclxcbiAgICAgICAgICAgICAgICAgICAgICAgIChpZiBzZXQgdG8gdHJ1ZSkgb3IgdGhlIGRlZiBpbml0IHZhbHVlIChpZiBmYWxzZSkuIERlZmF1bHRcXG4gICAgICAgICAgICAgICAgICAgICAgICBpcyBmYWxzZS5cXG4gICAgOmNoZWNrZWQtYXJyYXlzICAgLSBpZiA6d2FybiBvciA6ZXJyb3IsIGNoZWNrcyBpbmZlcnJlZCB0eXBlcyBhbmQgdmFsdWVzIHBhc3NlZFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvIGFnZXQvYXNldC4gTG9ncyBmb3IgaW5jb3JyZWN0IHZhbHVlcyBpZiA6d2FybiwgdGhyb3dzIGlmXFxuICAgICAgICAgICAgICAgICAgICAgICAgOmVycm9yLiBEZWZhdWx0cyB0byBmYWxzZS5cXG4gICAgOnN0YXRpYy1mbnMgICAgICAgLSBlbXBsb3kgc3RhdGljIGRpc3BhdGNoIHRvIHNwZWNpZmljIGZ1bmN0aW9uIGFyaXRpZXMgaW5cXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWl0dGVkIEphdmFTY3JpcHQsIGFzIG9wcG9zZWQgdG8gbWFraW5nIHVzZSBvZiB0aGVcXG4gICAgICAgICAgICAgICAgICAgICAgICBgY2FsbGAgY29uc3RydWN0LiBEZWZhdWx0cyB0byBmYWxzZS5cXG4gICAgOmZuLWludm9rZS1kaXJlY3QgLSBpZiBgdHJ1ZWAsIGRvZXMgbm90IGdlbmVyYXRlIGAuY2FsbChudWxsLi4uKWAgY2FsbHMgZm9yXFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5rbm93biBmdW5jdGlvbnMsIGJ1dCBpbnN0ZWFkIGRpcmVjdCBpbnZva2VzIHZpYVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGBmKGEwLGExLi4uKWAuIERlZmF1bHRzIHRvIGBmYWxzZWAuXFxuICAgIDp0YXJnZXQgICAgICAgICAgIC0gdXNlIGA6bm9kZWpzYCBpZiB0YXJnZXRpbmcgTm9kZS5qcy4gVGFrZXMgbm8gb3RoZXIgb3B0aW9uc1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0IHRoZSBtb21lbnQuXFxuICAgIDpucyAgICAgICAgICAgICAgIC0gb3B0aW9uYWwsIHRoZSBuYW1lc3BhY2UgaW4gd2hpY2ggdG8gZXZhbHVhdGUgdGhlIHNvdXJjZS5cXG4gICAgOnZlcmJvc2UgICAgICAgICAgLSBvcHRpb25hbCwgZW1pdCBkZXRhaWxzIGZyb20gY29tcGlsZXIgYWN0aXZpdHkuIERlZmF1bHRzIHRvXFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UuXFxuICAgIDpjb250ZXh0ICAgICAgICAgIC0gb3B0aW9uYWwsIHNldHMgdGhlIGNvbnRleHQgZm9yIHRoZSBzb3VyY2UuIFBvc3NpYmxlIHZhbHVlc1xcbiAgICAgICAgICAgICAgICAgICAgIGFyZSBgOmV4cHJgLCBgOnN0YXRlbWVudGAgYW5kIGA6cmV0dXJuYC4gRGVmYXVsdHMgdG9cXG4gICAgICAgICAgICAgICAgICAgICAgYDpleHByYC5cXG5cXG4gIGNiIChmdW5jdGlvbilcXG4gICAgY2FsbGJhY2ssIHdpbGwgYmUgaW52b2tlZCB3aXRoIGEgbWFwLiBJZiBzdWNjZXNmdWwgdGhlIG1hcCB3aWxsIGNvbnRhaW5cXG4gICAgYSA6dmFsdWUga2V5IHdpdGggdGhlIHJlc3VsdCBvZiBldmFsdWF0aW9uIGFuZCA6bnMgdGhlIGN1cnJlbnQgbmFtZXNwYWNlLlxcbiAgICBJZiB1bnN1Y2Nlc3NmdWwgd2lsbCBjb250YWluIGEgOmVycm9yIGtleSB3aXRoIGFuIGV4LWluZm8gaW5zdGFuY2UgZGVzY3JpYmluZ1xcbiAgICB0aGUgY2F1c2Ugb2YgZmFpbHVyZS5cIlxyXG4gKFtzdGF0ZSBzb3VyY2UgY2JdIChldmFsLXN0ciBzdGF0ZSBzb3VyY2UgbmlsIGNiKSlcclxuIChbc3RhdGUgc291cmNlIG5hbWUgY2JdIChldmFsLXN0ciBzdGF0ZSBzb3VyY2UgbmFtZSBuaWwgY2IpKVxyXG4gKFtzdGF0ZSBzb3VyY2UgbmFtZSBvcHRzIGNiXVxyXG4gIHs6cHJlXHJcbiAgIFsoYXRvbT8gc3RhdGUpXHJcbiAgICAoc3RyaW5nPyBzb3VyY2UpXHJcbiAgICAodmFsaWQtbmFtZT8gbmFtZSlcclxuICAgICh2YWxpZC1vcHRzPyBvcHRzKVxyXG4gICAgKGZuPyBjYildfVxyXG4gIChldmFsLXN0cipcclxuICAgezoqY29tcGlsZXIqIHN0YXRlLFxyXG4gICAgOipkYXRhLXJlYWRlcnMqIHRhZ3MvKmNsanMtZGF0YS1yZWFkZXJzKixcclxuICAgIDoqYW5hbHl6ZS1kZXBzKiAoOmFuYWx5emUtZGVwcyBvcHRzIHRydWUpLFxyXG4gICAgOipjbGpzLWRlcC1zZXQqIGFuYS8qY2xqcy1kZXAtc2V0KixcclxuICAgIDoqbG9hZC1tYWNyb3MqICg6bG9hZC1tYWNyb3Mgb3B0cyB0cnVlKSxcclxuICAgIDoqbG9hZC1mbiogKG9yICg6bG9hZCBvcHRzKSAqbG9hZC1mbiopLFxyXG4gICAgOipldmFsLWZuKiAob3IgKDpldmFsIG9wdHMpICpldmFsLWZuKil9XHJcbiAgIHNvdXJjZVxyXG4gICBuYW1lXHJcbiAgIG9wdHNcclxuICAgY2IpKSlcclxuIn0gezpzeW0ganMtZXZhbCwgOm1ldGEgezpkb2MgIkEgZGVmYXVsdCBKYXZhU2NyaXB0IGV2YWx1YXRpb24gZnVuY3Rpb24uIiwgOmFyZ2xpc3RzIChbezprZXlzIFtzb3VyY2VdLCA6YXMgcmVzb3VyY2V9XSl9LCA6c291cmNlICIoZGVmblxyXG4ganMtZXZhbFxyXG4gXCJBIGRlZmF1bHQgSmF2YVNjcmlwdCBldmFsdWF0aW9uIGZ1bmN0aW9uLlwiXHJcbiBbezprZXlzIFtzb3VyY2VdLCA6YXMgcmVzb3VyY2V9XVxyXG4gKGpzL2V2YWwgc291cmNlKSlcclxuIn0gezpzeW0gbG9hZC1zb3VyY2UtbWFwISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzdGF0ZSBucyBzbS1qc29uXSl9LCA6c291cmNlICIoZGVmblxyXG4gbG9hZC1zb3VyY2UtbWFwIVxyXG4gW3N0YXRlIG5zIHNtLWpzb25dXHJcbiAobGV0XHJcbiAgW3NtIChzbS9kZWNvZGUgKC5wYXJzZSBqcy9KU09OIHNtLWpzb24pKV1cclxuICAoc3dhcCEgc3RhdGUgYXNzb2MtaW4gWzpzb3VyY2UtbWFwcyBuc10gc20pKSlcclxuIn0gezpzeW0gbG9hZC1hbmFseXNpcy1jYWNoZSEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3RhdGUgbnMgY2FjaGVdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBsb2FkLWFuYWx5c2lzLWNhY2hlIVxyXG4gW3N0YXRlIG5zIGNhY2hlXVxyXG4gKHN3YXAhIHN0YXRlIGFzc29jLWluIFs6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzIG5zXSBjYWNoZSkpXHJcbiJ9IHs6c3ltIGFuYWx5emUtc3RyLCA6bWV0YSB7OmRvYyAiQW5hbHl6ZSBDbG9qdXJlU2NyaXB0IHNvdXJjZS4gVGhlIGNvbXBpbGVyIHN0YXRlIHdpbGwgYmUgcG9wdWxhdGVkIHdpdGhcbiAgIHRoZSByZXN1bHRzIG9mIGFuYWx5emVzLiBUaGUgcGFyYW1ldGVyczpcblxuICAgc3RhdGUgKGF0b20pXG4gICAgIHRoZSBjb21waWxlciBzdGF0ZVxuXG4gICBzb3VyY2UgKHN0cmluZylcbiAgICAgdGhlIENsb2p1cmVTY3JpcHQgc291cmNlXG5cbiAgIG5hbWUgKHN5bWJvbCBvciBzdHJpbmcpXG4gICAgIG9wdGlvbmFsLCB0aGUgbmFtZSBvZiB0aGUgc291cmNlXG5cbiAgIG9wdHMgKG1hcClcbiAgICAgY29tcGlsYXRpb24gb3B0aW9ucy5cblxuICAgICAgOmV2YWwgICAgICAgICAgICAgLSBldmFsIGZ1bmN0aW9uIHRvIGludm9rZSwgc2VlICpldmFsLWZuKlxuICAgICAgOmxvYWQgICAgICAgICAgICAgLSBsaWJyYXJ5IHJlc29sdXRpb24gZnVuY3Rpb24sIHNlZSAqbG9hZC1mbipcbiAgICAgIDpzb3VyY2UtbWFwICAgICAgIC0gc2V0IHRvIHRydWUgdG8gZ2VuZXJhdGUgaW5saW5lIHNvdXJjZSBtYXAgaW5mb3JtYXRpb25cbiAgICAgIDpkZWYtZW1pdHMtdmFyICAgIC0gc2V0cyB3aGV0aGVyIGRlZiAoYW5kIGRlcml2ZWQpIGZvcm1zIHJldHVybiBlaXRoZXIgYSBWYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIHNldCB0byB0cnVlKSBvciB0aGUgZGVmIGluaXQgdmFsdWUgKGlmIGZhbHNlKS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICA6Y2hlY2tlZC1hcnJheXMgICAtIGlmIDp3YXJuIG9yIDplcnJvciwgY2hlY2tzIGluZmVycmVkIHR5cGVzIGFuZCB2YWx1ZXMgcGFzc2VkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGFnZXQvYXNldC4gTG9ncyBmb3IgaW5jb3JyZWN0IHZhbHVlcyBpZiA6d2FybiwgdGhyb3dzIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDplcnJvci4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICA6c3RhdGljLWZucyAgICAgICAtIGVtcGxveSBzdGF0aWMgZGlzcGF0Y2ggdG8gc3BlY2lmaWMgZnVuY3Rpb24gYXJpdGllcyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0dGVkIEphdmFTY3JpcHQsIGFzIG9wcG9zZWQgdG8gbWFraW5nIHVzZSBvZiB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYGNhbGxgIGNvbnN0cnVjdC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICA6Zm4taW52b2tlLWRpcmVjdCAtIGlmIGB0cnVlYCwgZG9lcyBub3QgZ2VuZXJhdGUgYC5jYWxsKG51bGwuLi4pYCBjYWxscyBmb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5rbm93biBmdW5jdGlvbnMsIGJ1dCBpbnN0ZWFkIGRpcmVjdCBpbnZva2VzIHZpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICBgZihhMCxhMS4uLilgLiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICAgICAgOnRhcmdldCAgICAgICAgICAgLSB1c2UgYDpub2RlanNgIGlmIHRhcmdldGluZyBOb2RlLmpzLiBUYWtlcyBubyBvdGhlciBvcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0IHRoZSBtb21lbnQuXG4gICAgICA6bnMgICAgICAgICAgICAgICAtIG9wdGlvbmFsLCB0aGUgbmFtZXNwYWNlIGluIHdoaWNoIHRvIGV2YWx1YXRlIHRoZSBzb3VyY2UuXG4gICAgICA6dmVyYm9zZSAgICAgICAgICAtIG9wdGlvbmFsLCBlbWl0IGRldGFpbHMgZnJvbSBjb21waWxlciBhY3Rpdml0eS4gRGVmYXVsdHMgdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UuXG4gICAgICA6Y29udGV4dCAgICAgICAgICAtIG9wdGlvbmFsLCBzZXRzIHRoZSBjb250ZXh0IGZvciB0aGUgc291cmNlLiBQb3NzaWJsZSB2YWx1ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIGA6ZXhwcmAsIGA6c3RhdGVtZW50YCBhbmQgYDpyZXR1cm5gLiBEZWZhdWx0cyB0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgOmV4cHJgLlxuXG4gICBjYiAoZnVuY3Rpb24pXG4gICAgIGNhbGxiYWNrLCB3aWxsIGJlIGludm9rZWQgd2l0aCBhIG1hcC4gSWYgc3VjY2Vzc2Z1bCB0aGUgbWFwIHdpbGwgY29udGFpblxuICAgICBhIGtleSA6dmFsdWUsIHRoZSBhY3R1YWwgdmFsdWUgaXMgbm90IG1lYW5pbmdmdWwuIElmIHVuc3VjY2Vzc2Z1bCB0aGVcbiAgICAgbWFwIHdpbGwgY29udGFpbiBhIGtleSA6ZXJyb3Igd2l0aCBhbiBleC1pbmZvIGluc3RhbmNlIGRlc2NyaWJpbmcgdGhlIGNhdXNlXG4gICAgIG9mIGZhaWx1cmUuIiwgOmFyZ2xpc3RzIFtbc3RhdGUgc291cmNlIGNiXSBbc3RhdGUgc291cmNlIG5hbWUgY2JdIFtzdGF0ZSBzb3VyY2UgbmFtZSBvcHRzIGNiXV19LCA6c291cmNlICIoZGVmblxyXG4gYW5hbHl6ZS1zdHJcclxuIFwiQW5hbHl6ZSBDbG9qdXJlU2NyaXB0IHNvdXJjZS4gVGhlIGNvbXBpbGVyIHN0YXRlIHdpbGwgYmUgcG9wdWxhdGVkIHdpdGhcXG4gICB0aGUgcmVzdWx0cyBvZiBhbmFseXplcy4gVGhlIHBhcmFtZXRlcnM6XFxuXFxuICAgc3RhdGUgKGF0b20pXFxuICAgICB0aGUgY29tcGlsZXIgc3RhdGVcXG5cXG4gICBzb3VyY2UgKHN0cmluZylcXG4gICAgIHRoZSBDbG9qdXJlU2NyaXB0IHNvdXJjZVxcblxcbiAgIG5hbWUgKHN5bWJvbCBvciBzdHJpbmcpXFxuICAgICBvcHRpb25hbCwgdGhlIG5hbWUgb2YgdGhlIHNvdXJjZVxcblxcbiAgIG9wdHMgKG1hcClcXG4gICAgIGNvbXBpbGF0aW9uIG9wdGlvbnMuXFxuXFxuICAgICAgOmV2YWwgICAgICAgICAgICAgLSBldmFsIGZ1bmN0aW9uIHRvIGludm9rZSwgc2VlICpldmFsLWZuKlxcbiAgICAgIDpsb2FkICAgICAgICAgICAgIC0gbGlicmFyeSByZXNvbHV0aW9uIGZ1bmN0aW9uLCBzZWUgKmxvYWQtZm4qXFxuICAgICAgOnNvdXJjZS1tYXAgICAgICAgLSBzZXQgdG8gdHJ1ZSB0byBnZW5lcmF0ZSBpbmxpbmUgc291cmNlIG1hcCBpbmZvcm1hdGlvblxcbiAgICAgIDpkZWYtZW1pdHMtdmFyICAgIC0gc2V0cyB3aGV0aGVyIGRlZiAoYW5kIGRlcml2ZWQpIGZvcm1zIHJldHVybiBlaXRoZXIgYSBWYXJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBzZXQgdG8gdHJ1ZSkgb3IgdGhlIGRlZiBpbml0IHZhbHVlIChpZiBmYWxzZSkuXFxuICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0cyB0byBmYWxzZS5cXG4gICAgICA6Y2hlY2tlZC1hcnJheXMgICAtIGlmIDp3YXJuIG9yIDplcnJvciwgY2hlY2tzIGluZmVycmVkIHR5cGVzIGFuZCB2YWx1ZXMgcGFzc2VkXFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0byBhZ2V0L2FzZXQuIExvZ3MgZm9yIGluY29ycmVjdCB2YWx1ZXMgaWYgOndhcm4sIHRocm93cyBpZlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOmVycm9yLiBEZWZhdWx0cyB0byBmYWxzZS5cXG4gICAgICA6c3RhdGljLWZucyAgICAgICAtIGVtcGxveSBzdGF0aWMgZGlzcGF0Y2ggdG8gc3BlY2lmaWMgZnVuY3Rpb24gYXJpdGllcyBpblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdHRlZCBKYXZhU2NyaXB0LCBhcyBvcHBvc2VkIHRvIG1ha2luZyB1c2Ugb2YgdGhlXFxuICAgICAgICAgICAgICAgICAgICAgICAgICBgY2FsbGAgY29uc3RydWN0LiBEZWZhdWx0cyB0byBmYWxzZS5cXG4gICAgICA6Zm4taW52b2tlLWRpcmVjdCAtIGlmIGB0cnVlYCwgZG9lcyBub3QgZ2VuZXJhdGUgYC5jYWxsKG51bGwuLi4pYCBjYWxscyBmb3JcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHVua25vd24gZnVuY3Rpb25zLCBidXQgaW5zdGVhZCBkaXJlY3QgaW52b2tlcyB2aWFcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBmKGEwLGExLi4uKWAuIERlZmF1bHRzIHRvIGBmYWxzZWAuXFxuICAgICAgOnRhcmdldCAgICAgICAgICAgLSB1c2UgYDpub2RlanNgIGlmIHRhcmdldGluZyBOb2RlLmpzLiBUYWtlcyBubyBvdGhlciBvcHRpb25zXFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhdCB0aGUgbW9tZW50LlxcbiAgICAgIDpucyAgICAgICAgICAgICAgIC0gb3B0aW9uYWwsIHRoZSBuYW1lc3BhY2UgaW4gd2hpY2ggdG8gZXZhbHVhdGUgdGhlIHNvdXJjZS5cXG4gICAgICA6dmVyYm9zZSAgICAgICAgICAtIG9wdGlvbmFsLCBlbWl0IGRldGFpbHMgZnJvbSBjb21waWxlciBhY3Rpdml0eS4gRGVmYXVsdHMgdG9cXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLlxcbiAgICAgIDpjb250ZXh0ICAgICAgICAgIC0gb3B0aW9uYWwsIHNldHMgdGhlIGNvbnRleHQgZm9yIHRoZSBzb3VyY2UuIFBvc3NpYmxlIHZhbHVlc1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIGA6ZXhwcmAsIGA6c3RhdGVtZW50YCBhbmQgYDpyZXR1cm5gLiBEZWZhdWx0cyB0b1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYDpleHByYC5cXG5cXG4gICBjYiAoZnVuY3Rpb24pXFxuICAgICBjYWxsYmFjaywgd2lsbCBiZSBpbnZva2VkIHdpdGggYSBtYXAuIElmIHN1Y2Nlc3NmdWwgdGhlIG1hcCB3aWxsIGNvbnRhaW5cXG4gICAgIGEga2V5IDp2YWx1ZSwgdGhlIGFjdHVhbCB2YWx1ZSBpcyBub3QgbWVhbmluZ2Z1bC4gSWYgdW5zdWNjZXNzZnVsIHRoZVxcbiAgICAgbWFwIHdpbGwgY29udGFpbiBhIGtleSA6ZXJyb3Igd2l0aCBhbiBleC1pbmZvIGluc3RhbmNlIGRlc2NyaWJpbmcgdGhlIGNhdXNlXFxuICAgICBvZiBmYWlsdXJlLlwiXHJcbiAoW3N0YXRlIHNvdXJjZSBjYl0gKGFuYWx5emUtc3RyIHN0YXRlIHNvdXJjZSBuaWwgY2IpKVxyXG4gKFtzdGF0ZSBzb3VyY2UgbmFtZSBjYl0gKGFuYWx5emUtc3RyIHN0YXRlIHNvdXJjZSBuYW1lIG5pbCBjYikpXHJcbiAoW3N0YXRlIHNvdXJjZSBuYW1lIG9wdHMgY2JdXHJcbiAgezpwcmVcclxuICAgWyhhdG9tPyBzdGF0ZSlcclxuICAgIChzdHJpbmc/IHNvdXJjZSlcclxuICAgICh2YWxpZC1uYW1lPyBuYW1lKVxyXG4gICAgKHZhbGlkLW9wdHM/IG9wdHMpXHJcbiAgICAoZm4/IGNiKV19XHJcbiAgKGFuYWx5emUtc3RyKlxyXG4gICB7Oipjb21waWxlciogc3RhdGUsXHJcbiAgICA6KmRhdGEtcmVhZGVycyogdGFncy8qY2xqcy1kYXRhLXJlYWRlcnMqLFxyXG4gICAgOipwYXNzZXMqIChvciAoOnBhc3NlcyBvcHRzKSBhbmEvKnBhc3NlcyopLFxyXG4gICAgOiphbmFseXplLWRlcHMqICg6YW5hbHl6ZS1kZXBzIG9wdHMgdHJ1ZSksXHJcbiAgICA6KmNsanMtZGVwLXNldCogYW5hLypjbGpzLWRlcC1zZXQqLFxyXG4gICAgOipsb2FkLW1hY3JvcyogKDpsb2FkLW1hY3JvcyBvcHRzIHRydWUpLFxyXG4gICAgOipsb2FkLWZuKiAob3IgKDpsb2FkIG9wdHMpICpsb2FkLWZuKiksXHJcbiAgICA6KmV2YWwtZm4qIChvciAoOmV2YWwgb3B0cykgKmV2YWwtZm4qKX1cclxuICAgc291cmNlXHJcbiAgIG5hbWVcclxuICAgb3B0c1xyXG4gICBjYikpKVxyXG4ifSB7OnN5bSAqZXZhbC1mbiosIDptZXRhIHs6ZG9jICJFYWNoIHJ1bnRpbWUgZW52aXJvbm1lbnQgcHJvdmlkZXMgdmFyaW91cyB3YXlzIHRvIGV2YWwgSmF2YVNjcmlwdFxuICBzb3VyY2UuIFdoYXRldmVyIGZ1bmN0aW9uICpldmFsLWZuKiBpcyBib3VuZCB0byB3aWxsIGJlIHBhc3NlZCBhIG1hcFxuICBjb250YWluaW5nIHRoZSBmb2xsb3dpbmcga2V5czpcblxuICA6c291cmNlIC0gdGhlIHNvdXJjZSBvZiB0aGUgbGlicmFyeSAoc3RyaW5nKVxuICA6bmFtZSAgIC0gdXNlZCB0byB1bmlxdWUgaWRlbnRpZnkgdGhlIHNjcmlwdCAoc3ltYm9sKVxuICA6Y2FjaGUgIC0gaWYgdGhlIHNvdXJjZSB3YXMgb3JpZ2luYWxseSBDbG9qdXJlU2NyaXB0LCB3aWxsIGJlIGdpdmVuIHRoZVxuICAgICAgICAgICAgYW5hbHlzaXMgY2FjaGUuXG5cbiAgVGhlIHJlc3VsdCBvZiBldmFsdWF0aW9uIHNob3VsZCBiZSB0aGUgcmV0dXJuIHZhbHVlLiJ9LCA6c291cmNlICIoZGVmb25jZSAqZXZhbC1mbiogKGZuIFttXSAodGhyb3cgKGpzL0Vycm9yLiBcIk5vICpldmFsLWZuKiBzZXRcIikpKSlcclxuIn0pLCBydW0uY29yZSAoezpzeW0gbW91bnQsIDptZXRhIHs6ZG9jICJBZGQgZWxlbWVudCB0byB0aGUgRE9NIHRyZWUuIElkZW1wb3RlbnQuIFN1YnNlcXVlbnQgbW91bnRzIHdpbGwganVzdCB1cGRhdGUgZWxlbWVudC4iLCA6YXJnbGlzdHMgKFtlbGVtZW50IG5vZGVdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBtb3VudFxyXG4gXCJBZGQgZWxlbWVudCB0byB0aGUgRE9NIHRyZWUuIElkZW1wb3RlbnQuIFN1YnNlcXVlbnQgbW91bnRzIHdpbGwganVzdCB1cGRhdGUgZWxlbWVudC5cIlxyXG4gW2VsZW1lbnQgbm9kZV1cclxuIChqcy9SZWFjdERPTS5yZW5kZXIgZWxlbWVudCBub2RlKVxyXG4gbmlsKVxyXG4ifSB7OnN5bSB1bm1vdW50LCA6bWV0YSB7OmRvYyAiUmVtb3ZlcyBjb21wb25lbnQgZnJvbSB0aGUgRE9NIHRyZWUuIiwgOmFyZ2xpc3RzIChbbm9kZV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHVubW91bnRcclxuIFwiUmVtb3ZlcyBjb21wb25lbnQgZnJvbSB0aGUgRE9NIHRyZWUuXCJcclxuIFtub2RlXVxyXG4gKGpzL1JlYWN0RE9NLnVubW91bnRDb21wb25lbnRBdE5vZGUgbm9kZSkpXHJcbiJ9IHs6c3ltIGxvY2FsLCA6bWV0YSB7OmRvYyAiTWl4aW4gY29uc3RydWN0b3IuIEFkZHMgYW4gYXRvbSB0byBjb21wb25lbnTigJlzIHN0YXRlIHRoYXQgY2FuIGJlIHVzZWQgdG8ga2VlcCBzdHVmZiBkdXJpbmcgY29tcG9uZW504oCZcyBsaWZlY3ljbGUuIENvbXBvbmVudCB3aWxsIGJlIHJlLXJlbmRlcmVkIGlmIGF0b23igJlzIHZhbHVlIGNoYW5nZXMuIEF0b20gaXMgc3RvcmVkIHVuZGVyIHVzZXItcHJvdmlkZWQga2V5IG9yIHVuZGVyIGA6cnVtL2xvY2FsYCBieSBkZWZhdWx0LlxuICBcbiAgIGBgYFxuICAgKHJ1bS9kZWZjcyBjb3VudGVyIDwgKHJ1bS9sb2NhbCAwIDpjbnQpXG4gICAgIFtzdGF0ZSBsYWJlbF1cbiAgICAgKGxldCBbKmNudCAoOmNudCBzdGF0ZSldXG4gICAgICAgWzpkaXYgezpvbi1jbGljayAoZm4gW19dIChzd2FwISAqY250IGluYykpfVxuICAgICAgICAgbGFiZWwgQCpjbnRdKSlcbiAgIFxuICAgKHJ1bS9tb3VudCAoY291bnRlciBcIkNsaWNrIGNvdW50OiBcIikpXG4gICBgYGAiLCA6YXJnbGlzdHMgW1tpbml0aWFsXSBbaW5pdGlhbCBrZXldXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBsb2NhbFxyXG4gXCJNaXhpbiBjb25zdHJ1Y3Rvci4gQWRkcyBhbiBhdG9tIHRvIGNvbXBvbmVudOKAmXMgc3RhdGUgdGhhdCBjYW4gYmUgdXNlZCB0byBrZWVwIHN0dWZmIGR1cmluZyBjb21wb25lbnTigJlzIGxpZmVjeWNsZS4gQ29tcG9uZW50IHdpbGwgYmUgcmUtcmVuZGVyZWQgaWYgYXRvbeKAmXMgdmFsdWUgY2hhbmdlcy4gQXRvbSBpcyBzdG9yZWQgdW5kZXIgdXNlci1wcm92aWRlZCBrZXkgb3IgdW5kZXIgYDpydW0vbG9jYWxgIGJ5IGRlZmF1bHQuXFxuICBcXG4gICBgYGBcXG4gICAocnVtL2RlZmNzIGNvdW50ZXIgPCAocnVtL2xvY2FsIDAgOmNudClcXG4gICAgIFtzdGF0ZSBsYWJlbF1cXG4gICAgIChsZXQgWypjbnQgKDpjbnQgc3RhdGUpXVxcbiAgICAgICBbOmRpdiB7Om9uLWNsaWNrIChmbiBbX10gKHN3YXAhICpjbnQgaW5jKSl9XFxuICAgICAgICAgbGFiZWwgQCpjbnRdKSlcXG4gICBcXG4gICAocnVtL21vdW50IChjb3VudGVyIFxcXCJDbGljayBjb3VudDogXFxcIikpXFxuICAgYGBgXCJcclxuIChbaW5pdGlhbF0gKGxvY2FsIGluaXRpYWwgOnJ1bS9sb2NhbCkpXHJcbiAoW2luaXRpYWwga2V5XVxyXG4gIHs6d2lsbC1tb3VudFxyXG4gICAoZm5cclxuICAgIFtzdGF0ZV1cclxuICAgIChsZXRcclxuICAgICBbbG9jYWwtc3RhdGVcclxuICAgICAgKGF0b20gaW5pdGlhbClcclxuICAgICAgY29tcG9uZW50XHJcbiAgICAgICg6cnVtL3JlYWN0LWNvbXBvbmVudCBzdGF0ZSldXHJcbiAgICAgKGFkZC13YXRjaFxyXG4gICAgICBsb2NhbC1zdGF0ZVxyXG4gICAgICBrZXlcclxuICAgICAgKGZuIFtfIF8gXyBfXSAocmVxdWVzdC1yZW5kZXIgY29tcG9uZW50KSkpXHJcbiAgICAgKGFzc29jIHN0YXRlIGtleSBsb2NhbC1zdGF0ZSkpKX0pKVxyXG4ifSB7OnN5bSByZWFjdGl2ZSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcclxuIHJlYWN0aXZlXHJcbiBcIk1peGluLiBXb3JrcyBpbiBjb25qdW5jdGlvbiB3aXRoIFtbcmVhY3RdXS5cXG4gIFxcbiAgIGBgYFxcbiAgIChydW0vZGVmYyBjb21wIDwgcnVtL3JlYWN0aXZlXFxuICAgICBbKmNvdW50ZXJdXFxuICAgICBbOmRpdiAocnVtL3JlYWN0IGNvdW50ZXIpXSlcXG5cXG4gICAoZGVmICpjb3VudGVyIChhdG9tIDApKVxcbiAgIChydW0vbW91bnQgKGNvbXAgKmNvdW50ZXIpIGpzL2RvY3VtZW50LmJvZHkpXFxuICAgKHN3YXAhICpjb3VudGVyIGluYykgOzsgd2lsbCBmb3JjZSBjb21wIHRvIHJlLXJlbmRlclxcbiAgIGBgYFwiXHJcbiB7OmluaXRcclxuICAoZm4gW3N0YXRlIHByb3BzXSAoYXNzb2Mgc3RhdGUgOnJ1bS5yZWFjdGl2ZS9rZXkgKHJhbmRvbS11dWlkKSkpLFxyXG4gIDp3cmFwLXJlbmRlclxyXG4gIChmblxyXG4gICBbcmVuZGVyLWZuXVxyXG4gICAoZm5cclxuICAgIFtzdGF0ZV1cclxuICAgIChiaW5kaW5nXHJcbiAgICAgWypyZWFjdGlvbnMqICh2b2xhdGlsZSEgI3t9KV1cclxuICAgICAobGV0XHJcbiAgICAgIFtjb21wXHJcbiAgICAgICAoOnJ1bS9yZWFjdC1jb21wb25lbnQgc3RhdGUpXHJcbiAgICAgICBvbGQtcmVhY3Rpb25zXHJcbiAgICAgICAoOnJ1bS5yZWFjdGl2ZS9yZWZzIHN0YXRlICN7fSlcclxuICAgICAgIFtkb20gbmV4dC1zdGF0ZV1cclxuICAgICAgIChyZW5kZXItZm4gc3RhdGUpXHJcbiAgICAgICBuZXctcmVhY3Rpb25zXHJcbiAgICAgICBAKnJlYWN0aW9ucypcclxuICAgICAgIGtleVxyXG4gICAgICAgKDpydW0ucmVhY3RpdmUva2V5IHN0YXRlKV1cclxuICAgICAgKGRvc2VxXHJcbiAgICAgICBbcmVmIG9sZC1yZWFjdGlvbnNdXHJcbiAgICAgICAod2hlbi1ub3QgKGNvbnRhaW5zPyBuZXctcmVhY3Rpb25zIHJlZikgKHJlbW92ZS13YXRjaCByZWYga2V5KSkpXHJcbiAgICAgIChkb3NlcVxyXG4gICAgICAgW3JlZiBuZXctcmVhY3Rpb25zXVxyXG4gICAgICAgKHdoZW4tbm90XHJcbiAgICAgICAgKGNvbnRhaW5zPyBvbGQtcmVhY3Rpb25zIHJlZilcclxuICAgICAgICAoYWRkLXdhdGNoIHJlZiBrZXkgKGZuIFtfIF8gXyBfXSAocmVxdWVzdC1yZW5kZXIgY29tcCkpKSkpXHJcbiAgICAgIFtkb20gKGFzc29jIG5leHQtc3RhdGUgOnJ1bS5yZWFjdGl2ZS9yZWZzIG5ldy1yZWFjdGlvbnMpXSkpKSksXHJcbiAgOndpbGwtdW5tb3VudFxyXG4gIChmblxyXG4gICBbc3RhdGVdXHJcbiAgIChsZXRcclxuICAgIFtrZXkgKDpydW0ucmVhY3RpdmUva2V5IHN0YXRlKV1cclxuICAgIChkb3NlcSBbcmVmICg6cnVtLnJlYWN0aXZlL3JlZnMgc3RhdGUpXSAocmVtb3ZlLXdhdGNoIHJlZiBrZXkpKSlcclxuICAgKGRpc3NvYyBzdGF0ZSA6cnVtLnJlYWN0aXZlL3JlZnMgOnJ1bS5yZWFjdGl2ZS9rZXkpKX0pXHJcbiJ9IHs6c3ltIHJlZi1ub2RlLCA6bWV0YSB7OmRvYyAiR2l2ZW4gc3RhdGUgYW5kIHJlZiBoYW5kbGUsIHJldHVybnMgRE9NIG5vZGUgYXNzb2NpYXRlZCB3aXRoIHJlZi4iLCA6YXJnbGlzdHMgKFtzdGF0ZSBrZXldKX0sIDpzb3VyY2UgIihkZWZuXHJcbiByZWYtbm9kZVxyXG4gXCJHaXZlbiBzdGF0ZSBhbmQgcmVmIGhhbmRsZSwgcmV0dXJucyBET00gbm9kZSBhc3NvY2lhdGVkIHdpdGggcmVmLlwiXHJcbiBbc3RhdGUga2V5XVxyXG4gKGpzL1JlYWN0RE9NLmZpbmRET01Ob2RlIChyZWYgc3RhdGUgKG5hbWUga2V5KSkpKVxyXG4ifSB7OnN5bSByZWFjdCwgOm1ldGEgezpkb2MgIldvcmtzIGluIGNvbmp1bmN0aW9uIHdpdGggW1tyZWFjdGl2ZV1dIG1peGluLiBVc2UgdGhpcyBmdW5jdGlvbiBpbnN0ZWFkIG9mIGBkZXJlZmAgaW5zaWRlIHJlbmRlciwgYW5kIHlvdXIgY29tcG9uZW50IHdpbGwgc3Vic2NyaWJlIHRvIGNoYW5nZXMgaGFwcGVuaW5nIHRvIHRoZSBkZXJlZmVkIGF0b20uIiwgOmFyZ2xpc3RzIChbcmVmXSl9LCA6c291cmNlICIoZGVmblxyXG4gcmVhY3RcclxuIFwiV29ya3MgaW4gY29uanVuY3Rpb24gd2l0aCBbW3JlYWN0aXZlXV0gbWl4aW4uIFVzZSB0aGlzIGZ1bmN0aW9uIGluc3RlYWQgb2YgYGRlcmVmYCBpbnNpZGUgcmVuZGVyLCBhbmQgeW91ciBjb21wb25lbnQgd2lsbCBzdWJzY3JpYmUgdG8gY2hhbmdlcyBoYXBwZW5pbmcgdG8gdGhlIGRlcmVmZWQgYXRvbS5cIlxyXG4gW3JlZl1cclxuIChhc3NlcnRcclxuICAqcmVhY3Rpb25zKlxyXG4gIFwicnVtLmNvcmUvcmVhY3QgaXMgb25seSBzdXBwb3J0ZWQgaW4gY29uanVuY3Rpb24gd2l0aCBydW0uY29yZS9yZWFjdGl2ZVwiKVxyXG4gKHZzd2FwISAqcmVhY3Rpb25zKiBjb25qIHJlZilcclxuIEByZWYpXHJcbiJ9IHs6c3ltIHJlcXVlc3QtcmVuZGVyLCA6bWV0YSB7OmRvYyAiU2NoZWR1bGVzIHJlYWN0IGNvbXBvbmVudCB0byBiZSByZW5kZXJlZCBvbiBuZXh0IGFuaW1hdGlvbiBmcmFtZS4iLCA6YXJnbGlzdHMgKFtjb21wb25lbnRdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiByZXF1ZXN0LXJlbmRlclxyXG4gXCJTY2hlZHVsZXMgcmVhY3QgY29tcG9uZW50IHRvIGJlIHJlbmRlcmVkIG9uIG5leHQgYW5pbWF0aW9uIGZyYW1lLlwiXHJcbiBbY29tcG9uZW50XVxyXG4gKHdoZW4gKGVtcHR5PyBAcmVuZGVyLXF1ZXVlKSAoc2NoZWR1bGUgcmVuZGVyKSlcclxuICh2c3dhcCEgcmVuZGVyLXF1ZXVlIGNvbmogY29tcG9uZW50KSlcclxuIn0gezpzeW0gcG9ydGFsLCA6bWV0YSB7OmRvYyAiUmVuZGVyIGBlbGVtZW50YCBpbiBhIERPTSBgbm9kZWAgdGhhdCBpcyBvdXNpZGUgb2YgY3VycmVudCBET00gaGllcmFyY2h5LiIsIDphcmdsaXN0cyAoW2VsZW1lbnQgbm9kZV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHBvcnRhbFxyXG4gXCJSZW5kZXIgYGVsZW1lbnRgIGluIGEgRE9NIGBub2RlYCB0aGF0IGlzIG91c2lkZSBvZiBjdXJyZW50IERPTSBoaWVyYXJjaHkuXCJcclxuIFtlbGVtZW50IG5vZGVdXHJcbiAoanMvUmVhY3RET00uY3JlYXRlUG9ydGFsIGVsZW1lbnQgbm9kZSkpXHJcbiJ9IHs6c3ltIHdpdGgta2V5LCA6bWV0YSB7OmRvYyAiQWRkcyBSZWFjdCBrZXkgdG8gZWxlbWVudC5cbiAgIFxuICAgYGBgXG4gICAocnVtL2RlZmMgbGFiZWwgW3RleHRdIFs6ZGl2IHRleHRdKVxuXG4gICAoLT4gKGxhYmVsKVxuICAgICAgIChydW0vd2l0aC1rZXkgXCJhYmNcIilcbiAgICAgICAocnVtL21vdW50IGpzL2RvY3VtZW50LmJvZHkpKVxuICAgYGBgIiwgOmFyZ2xpc3RzIChbZWxlbWVudCBrZXldKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB3aXRoLWtleVxyXG4gXCJBZGRzIFJlYWN0IGtleSB0byBlbGVtZW50LlxcbiAgIFxcbiAgIGBgYFxcbiAgIChydW0vZGVmYyBsYWJlbCBbdGV4dF0gWzpkaXYgdGV4dF0pXFxuXFxuICAgKC0+IChsYWJlbClcXG4gICAgICAgKHJ1bS93aXRoLWtleSBcXFwiYWJjXFxcIilcXG4gICAgICAgKHJ1bS9tb3VudCBqcy9kb2N1bWVudC5ib2R5KSlcXG4gICBgYGBcIlxyXG4gW2VsZW1lbnQga2V5XVxyXG4gKGpzL1JlYWN0LmNsb25lRWxlbWVudCBlbGVtZW50ICNqcyB7XCJrZXlcIiBrZXl9IG5pbCkpXHJcbiJ9IHs6c3ltIGJ1aWxkLWRlZmNzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JlbmRlci1ib2R5IG1peGlucyBkaXNwbGF5LW5hbWVdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBidWlsZC1kZWZjc1xyXG4gW3JlbmRlci1ib2R5IG1peGlucyBkaXNwbGF5LW5hbWVdXHJcbiAobGV0XHJcbiAgW3JlbmRlclxyXG4gICAoZm4gW3N0YXRlXSBbKGFwcGx5IHJlbmRlci1ib2R5IHN0YXRlICg6cnVtL2FyZ3Mgc3RhdGUpKSBzdGF0ZV0pXVxyXG4gIChidWlsZC1jdG9yIHJlbmRlciBtaXhpbnMgZGlzcGxheS1uYW1lKSkpXHJcbiJ9IHs6c3ltIHJlZiwgOm1ldGEgezpkb2MgIkdpdmVuIHN0YXRlIGFuZCByZWYgaGFuZGxlLCByZXR1cm5zIFJlYWN0IGNvbXBvbmVudC4iLCA6YXJnbGlzdHMgKFtzdGF0ZSBrZXldKX0sIDpzb3VyY2UgIihkZWZuXHJcbiByZWZcclxuIFwiR2l2ZW4gc3RhdGUgYW5kIHJlZiBoYW5kbGUsIHJldHVybnMgUmVhY3QgY29tcG9uZW50LlwiXHJcbiBbc3RhdGUga2V5XVxyXG4gKC0+IHN0YXRlIDpydW0vcmVhY3QtY29tcG9uZW50IChhZ2V0IFwicmVmc1wiKSAoYWdldCAobmFtZSBrZXkpKSkpXHJcbiJ9IHs6c3ltIHN0YXRpYywgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcclxuIHN0YXRpY1xyXG4gXCJNaXhpbi4gV2lsbCBhdm9pZCByZS1yZW5kZXIgaWYgbm9uZSBvZiBjb21wb25lbnTigJlzIGFyZ3VtZW50cyBoYXZlIGNoYW5nZWQuIERvZXMgZXF1YWxpdHkgY2hlY2sgKGA9YCkgb24gYWxsIGFyZ3VtZW50cy5cXG4gIFxcbiAgIGBgYFxcbiAgIChydW0vZGVmYyBsYWJlbCA8IHJ1bS9zdGF0aWNcXG4gICAgIFt0ZXh0XVxcbiAgICAgWzpkaXYgdGV4dF0pXFxuICAgICBcXG4gICAocnVtL21vdW50IChsYWJlbCBcXFwiYWJjXFxcIikganMvZG9jdW1lbnQuYm9keSlcXG5cXG4gICA7OyBkZWYgIT0gYWJjLCB3aWxsIHJlLXJlbmRlclxcbiAgIChydW0vbW91bnQgKGxhYmVsIFxcXCJkZWZcXFwiKSBqcy9kb2N1bWVudC5ib2R5KVxcblxcbiAgIDs7IGRlZiA9PSBkZWYsIHdvbuKAmXQgcmUtcmVuZGVyXFxuICAgKHJ1bS9tb3VudCAobGFiZWwgXFxcImRlZlxcXCIpIGpzL2RvY3VtZW50LmJvZHkpXFxuICAgYGBgXCJcclxuIHs6c2hvdWxkLXVwZGF0ZVxyXG4gIChmblxyXG4gICBbb2xkLXN0YXRlIG5ldy1zdGF0ZV1cclxuICAgKG5vdD0gKDpydW0vYXJncyBvbGQtc3RhdGUpICg6cnVtL2FyZ3MgbmV3LXN0YXRlKSkpfSlcclxuIn0gezpzeW0gY3Vyc29yLCA6bWV0YSB7OmRvYyAiU2FtZSBhcyBbW2N1cnNvci1pbl1dIGJ1dCBhY2NlcHRzIHNpbmdsZSBrZXkgaW5zdGVhZCBvZiBwYXRoIHZlY3Rvci4iLCA6YXJnbGlzdHMgKFtyZWYga2V5ICYgb3B0aW9uc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGN1cnNvclxyXG4gXCJTYW1lIGFzIFtbY3Vyc29yLWluXV0gYnV0IGFjY2VwdHMgc2luZ2xlIGtleSBpbnN0ZWFkIG9mIHBhdGggdmVjdG9yLlwiXHJcbiBbcmVmIGtleSAmIG9wdGlvbnNdXHJcbiAoYXBwbHkgY3Vyc29yLWluIHJlZiBba2V5XSBvcHRpb25zKSlcclxuIn0gezpzeW0gc3RhdGUsIDptZXRhIHs6ZG9jICJHaXZlbiBSZWFjdCBjb21wb25lbnQsIHJldHVybnMgUnVtIHN0YXRlIGFzc29jaWF0ZWQgd2l0aCBpdC4iLCA6YXJnbGlzdHMgKFtjb21wXSl9LCA6c291cmNlICIoZGVmblxyXG4gc3RhdGVcclxuIFwiR2l2ZW4gUmVhY3QgY29tcG9uZW50LCByZXR1cm5zIFJ1bSBzdGF0ZSBhc3NvY2lhdGVkIHdpdGggaXQuXCJcclxuIFtjb21wXVxyXG4gKGdvYmovZ2V0ICguLXN0YXRlIGNvbXApIFwiOnJ1bS9zdGF0ZVwiKSlcclxuIn0gezpzeW0gY3Vyc29yLWluLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYXRvbSB3aXRoIGRlZXAgbmVzdGVkIHZhbHVlIGFuZCBwYXRoIGluc2lkZSBpdCwgY3JlYXRlcyBhbiBhdG9tLWxpa2Ugc3RydWN0dXJlXG4gICB0aGF0IGNhbiBiZSB1c2VkIHNlcGFyYXRlbHkgZnJvbSBtYWluIGF0b20sIGJ1dCB3aWxsIHN5bmMgY2hhbmdlcyBib3RoIHdheXM6XG4gIFxuICAgYGBgXG4gICAoZGVmIGRiIChhdG9tIHsgOnVzZXJzIHsgXCJJdmFuXCIgeyA6YWdlIDMwIH19fSkpXG4gICBcbiAgIChkZWYgaXZhbiAocnVtL2N1cnNvciBkYiBbOnVzZXJzIFwiSXZhblwiXSkpXG4gICAoZGVyZWYgaXZhbikgOzsgPT4geyA6YWdlIDMwIH1cbiAgIFxuICAgKHN3YXAhIGl2YW4gdXBkYXRlIDphZ2UgaW5jKSA7OyA9PiB7IDphZ2UgMzEgfVxuICAgKGRlcmVmIGRiKSA7OyA9PiB7IDp1c2VycyB7IFwiSXZhblwiIHsgOmFnZSAzMSB9fX1cbiAgIFxuICAgKHN3YXAhIGRiIHVwZGF0ZS1pbiBbOnVzZXJzIFwiSXZhblwiIDphZ2VdIGluYylcbiAgIDs7ID0+IHsgOnVzZXJzIHsgXCJJdmFuXCIgeyA6YWdlIDMyIH19fVxuICAgXG4gICAoZGVyZWYgaXZhbikgOzsgPT4geyA6YWdlIDMyIH1cbiAgIGBgYFxuICBcbiAgIFJldHVybmVkIHZhbHVlIHN1cHBvcnRzIGBkZXJlZmAsIGBzd2FwIWAsIGByZXNldCFgLCB3YXRjaGVzIGFuZCBtZXRhZGF0YS5cbiAgXG4gICBUaGUgb25seSBzdXBwb3J0ZWQgb3B0aW9uIGlzIGA6bWV0YWAiLCA6YXJnbGlzdHMgKFtyZWYgcGF0aCAmIHs6YXMgb3B0aW9uc31dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBjdXJzb3ItaW5cclxuIFwiR2l2ZW4gYXRvbSB3aXRoIGRlZXAgbmVzdGVkIHZhbHVlIGFuZCBwYXRoIGluc2lkZSBpdCwgY3JlYXRlcyBhbiBhdG9tLWxpa2Ugc3RydWN0dXJlXFxuICAgdGhhdCBjYW4gYmUgdXNlZCBzZXBhcmF0ZWx5IGZyb20gbWFpbiBhdG9tLCBidXQgd2lsbCBzeW5jIGNoYW5nZXMgYm90aCB3YXlzOlxcbiAgXFxuICAgYGBgXFxuICAgKGRlZiBkYiAoYXRvbSB7IDp1c2VycyB7IFxcXCJJdmFuXFxcIiB7IDphZ2UgMzAgfX19KSlcXG4gICBcXG4gICAoZGVmIGl2YW4gKHJ1bS9jdXJzb3IgZGIgWzp1c2VycyBcXFwiSXZhblxcXCJdKSlcXG4gICAoZGVyZWYgaXZhbikgOzsgPT4geyA6YWdlIDMwIH1cXG4gICBcXG4gICAoc3dhcCEgaXZhbiB1cGRhdGUgOmFnZSBpbmMpIDs7ID0+IHsgOmFnZSAzMSB9XFxuICAgKGRlcmVmIGRiKSA7OyA9PiB7IDp1c2VycyB7IFxcXCJJdmFuXFxcIiB7IDphZ2UgMzEgfX19XFxuICAgXFxuICAgKHN3YXAhIGRiIHVwZGF0ZS1pbiBbOnVzZXJzIFxcXCJJdmFuXFxcIiA6YWdlXSBpbmMpXFxuICAgOzsgPT4geyA6dXNlcnMgeyBcXFwiSXZhblxcXCIgeyA6YWdlIDMyIH19fVxcbiAgIFxcbiAgIChkZXJlZiBpdmFuKSA7OyA9PiB7IDphZ2UgMzIgfVxcbiAgIGBgYFxcbiAgXFxuICAgUmV0dXJuZWQgdmFsdWUgc3VwcG9ydHMgYGRlcmVmYCwgYHN3YXAhYCwgYHJlc2V0IWAsIHdhdGNoZXMgYW5kIG1ldGFkYXRhLlxcbiAgXFxuICAgVGhlIG9ubHkgc3VwcG9ydGVkIG9wdGlvbiBpcyBgOm1ldGFgXCJcclxuIFtyZWYgcGF0aCAmIHs6YXMgb3B0aW9uc31dXHJcbiAoaWZcclxuICAoaW5zdGFuY2U/IGN1cnNvci9DdXJzb3IgcmVmKVxyXG4gIChjdXJzb3IvQ3Vyc29yLiAoLi1yZWYgcmVmKSAoaW50byAoLi1wYXRoIHJlZikgcGF0aCkgKDptZXRhIG9wdGlvbnMpKVxyXG4gIChjdXJzb3IvQ3Vyc29yLiByZWYgcGF0aCAoOm1ldGEgb3B0aW9ucykpKSlcclxuIn0gezpzeW0gZG9tLW5vZGUsIDptZXRhIHs6ZG9jICJHaXZlbiBzdGF0ZSwgcmV0dXJucyB0b3AtbGV2ZWwgRE9NIG5vZGUgb2YgY29tcG9uZW50LiBDYWxsIGl0IGR1cmluZyBsaWZlY3ljbGUgY2FsbGJhY2tzLiBDYW7igJl0IGJlIGNhbGxlZCBkdXJpbmcgcmVuZGVyLiIsIDphcmdsaXN0cyAoW3N0YXRlXSl9LCA6c291cmNlICIoZGVmblxyXG4gZG9tLW5vZGVcclxuIFwiR2l2ZW4gc3RhdGUsIHJldHVybnMgdG9wLWxldmVsIERPTSBub2RlIG9mIGNvbXBvbmVudC4gQ2FsbCBpdCBkdXJpbmcgbGlmZWN5Y2xlIGNhbGxiYWNrcy4gQ2Fu4oCZdCBiZSBjYWxsZWQgZHVyaW5nIHJlbmRlci5cIlxyXG4gW3N0YXRlXVxyXG4gKGpzL1JlYWN0RE9NLmZpbmRET01Ob2RlICg6cnVtL3JlYWN0LWNvbXBvbmVudCBzdGF0ZSkpKVxyXG4ifSB7OnN5bSB3aXRoLXJlZiwgOm1ldGEgezpkb2MgIkFkZHMgUmVhY3QgcmVmIChzdHJpbmcgb3IgY2FsbGJhY2spIHRvIGVsZW1lbnQuXG4gICBcbiAgIGBgYFxuICAgKHJ1bS9kZWZjIGxhYmVsIFt0ZXh0XSBbOmRpdiB0ZXh0XSlcblxuICAgKC0+IChsYWJlbClcbiAgICAgICAocnVtL3dpdGgtcmVmIFwiYWJjXCIpXG4gICAgICAgKHJ1bS9tb3VudCBqcy9kb2N1bWVudC5ib2R5KSlcbiAgIGBgYCIsIDphcmdsaXN0cyAoW2VsZW1lbnQgcmVmXSl9LCA6c291cmNlICIoZGVmblxyXG4gd2l0aC1yZWZcclxuIFwiQWRkcyBSZWFjdCByZWYgKHN0cmluZyBvciBjYWxsYmFjaykgdG8gZWxlbWVudC5cXG4gICBcXG4gICBgYGBcXG4gICAocnVtL2RlZmMgbGFiZWwgW3RleHRdIFs6ZGl2IHRleHRdKVxcblxcbiAgICgtPiAobGFiZWwpXFxuICAgICAgIChydW0vd2l0aC1yZWYgXFxcImFiY1xcXCIpXFxuICAgICAgIChydW0vbW91bnQganMvZG9jdW1lbnQuYm9keSkpXFxuICAgYGBgXCJcclxuIFtlbGVtZW50IHJlZl1cclxuIChqcy9SZWFjdC5jbG9uZUVsZW1lbnQgZWxlbWVudCAjanMge1wicmVmXCIgcmVmfSBuaWwpKVxyXG4ifSB7OnN5bSBidWlsZC1kZWZjLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JlbmRlci1ib2R5IG1peGlucyBkaXNwbGF5LW5hbWVdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBidWlsZC1kZWZjXHJcbiBbcmVuZGVyLWJvZHkgbWl4aW5zIGRpc3BsYXktbmFtZV1cclxuIChpZlxyXG4gIChlbXB0eT8gbWl4aW5zKVxyXG4gIChsZXRcclxuICAgW2NsYXNzXHJcbiAgICAoZm4gW3Byb3BzXSAoYXBwbHkgcmVuZGVyLWJvZHkgKGFnZXQgcHJvcHMgXCI6cnVtL2FyZ3NcIikpKVxyXG4gICAgX1xyXG4gICAgKGFzZXQgY2xhc3MgXCJkaXNwbGF5TmFtZVwiIGRpc3BsYXktbmFtZSlcclxuICAgIGN0b3JcclxuICAgIChmblxyXG4gICAgIFsmIGFyZ3NdXHJcbiAgICAgKGpzL1JlYWN0LmNyZWF0ZUVsZW1lbnQgY2xhc3MgI2pzIHtcIjpydW0vYXJnc1wiIGFyZ3N9KSldXHJcbiAgICh3aXRoLW1ldGEgY3RvciB7OnJ1bS9jbGFzcyBjbGFzc30pKVxyXG4gIChsZXRcclxuICAgW3JlbmRlciAoZm4gW3N0YXRlXSBbKGFwcGx5IHJlbmRlci1ib2R5ICg6cnVtL2FyZ3Mgc3RhdGUpKSBzdGF0ZV0pXVxyXG4gICAoYnVpbGQtY3RvciByZW5kZXIgbWl4aW5zIGRpc3BsYXktbmFtZSkpKSlcclxuIn0gezpzeW0gaHlkcmF0ZSwgOm1ldGEgezpkb2MgIlNhbWUgYXMgW1ttb3VudF1dIGJ1dCBtdXN0IGJlIGNhbGxlZCBvbiBET00gdHJlZSBhbHJlYWR5IHJlbmRlcmVkIGJ5IGEgc2VydmVyIHZpYSBbW3JlbmRlci1odG1sXV0uIiwgOmFyZ2xpc3RzIChbZWxlbWVudCBub2RlXSl9LCA6c291cmNlICIoZGVmblxyXG4gaHlkcmF0ZVxyXG4gXCJTYW1lIGFzIFtbbW91bnRdXSBidXQgbXVzdCBiZSBjYWxsZWQgb24gRE9NIHRyZWUgYWxyZWFkeSByZW5kZXJlZCBieSBhIHNlcnZlciB2aWEgW1tyZW5kZXItaHRtbF1dLlwiXHJcbiBbZWxlbWVudCBub2RlXVxyXG4gKGpzL1JlYWN0RE9NLmh5ZHJhdGUgZWxlbWVudCBub2RlKSlcclxuIn0gezpzeW0gYnVpbGQtZGVmY2MsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmVuZGVyLWJvZHkgbWl4aW5zIGRpc3BsYXktbmFtZV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGJ1aWxkLWRlZmNjXHJcbiBbcmVuZGVyLWJvZHkgbWl4aW5zIGRpc3BsYXktbmFtZV1cclxuIChsZXRcclxuICBbcmVuZGVyXHJcbiAgIChmblxyXG4gICAgW3N0YXRlXVxyXG4gICAgWyhhcHBseSByZW5kZXItYm9keSAoOnJ1bS9yZWFjdC1jb21wb25lbnQgc3RhdGUpICg6cnVtL2FyZ3Mgc3RhdGUpKVxyXG4gICAgIHN0YXRlXSldXHJcbiAgKGJ1aWxkLWN0b3IgcmVuZGVyIG1peGlucyBkaXNwbGF5LW5hbWUpKSlcclxuIn0gezpzeW0gZGVyaXZlZC1hdG9tLCA6bWV0YSB7OmFyZ2xpc3RzIChxdW90ZSAoW3JlZnMga2V5IGZdIFtyZWZzIGtleSBmIG9wdHNdKSksIDpkb2MgIlVzZSB0aGlzIHRvIGNyZWF0ZSDigJxjaGFpbnPigJ0gYW5kIGFjeWNsaWMgZ3JhcGhzIG9mIGRlcGVuZGVudCBhdG9tcy5cbiAgIFxuICAgICAgICAgICAgIFtbZGVyaXZlZC1hdG9tXV0gd2lsbDpcbiAgICAgICAgICBcbiAgICAgICAgICAgICAtIFRha2UgTiDigJxzb3VyY2XigJ0gcmVmcy5cbiAgICAgICAgICAgICAtIFNldCB1cCBhIHdhdGNoIG9uIGVhY2ggb2YgdGhlbS5cbiAgICAgICAgICAgICAtIENyZWF0ZSDigJxzaW5r4oCdIGF0b20uXG4gICAgICAgICAgICAgLSBXaGVuIGFueSBvZiBzb3VyY2UgcmVmcyBjaGFuZ2VzOlxuICAgICAgICAgICAgICAgIC0gcmUtcnVuIGZ1bmN0aW9uIGBmYCwgcGFzc2luZyBOIGRlcmVmZXJlbmNlZCB2YWx1ZXMgb2Ygc291cmNlIHJlZnMuXG4gICAgICAgICAgICAgICAgLSBgcmVzZXQhYCByZXN1bHQgb2YgYGZgIHRvIHRoZSBzaW5rIGF0b20uXG4gICAgICAgICAgICAgLSBSZXR1cm4gc2luayBhdG9tLlxuXG4gICAgICAgICAgICAgRXhhbXBsZTpcblxuICAgICAgICAgICAgIGBgYFxuICAgICAgICAgICAgIChkZWYgKmEgKGF0b20gMCkpXG4gICAgICAgICAgICAgKGRlZiAqYiAoYXRvbSAxKSlcbiAgICAgICAgICAgICAoZGVmICp4IChkZXJpdmVkLWF0b20gWyphICpiXSA6OmtleVxuICAgICAgICAgICAgICAgICAgICAgICAoZm4gW2EgYl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyIGEgXCI6XCIgYikpKSlcbiAgICAgICAgICAgICBcbiAgICAgICAgICAgICAodHlwZSAqeCkgIDs7ID0+IGNsb2p1cmUubGFuZy5BdG9tXG4gICAgICAgICAgICAgKGRlcmVmICp4KSA7OyA9PiBcIjA6MVwiXG4gICAgICAgICAgICAgXG4gICAgICAgICAgICAgKHN3YXAhICphIGluYylcbiAgICAgICAgICAgICAoZGVyZWYgKngpIDs7ID0+IFwiMToxXCJcbiAgICAgICAgICAgICBcbiAgICAgICAgICAgICAocmVzZXQhICpiIDcpXG4gICAgICAgICAgICAgKGRlcmVmICp4KSA7OyA9PiBcIjE6N1wiXG4gICAgICAgICAgICAgYGBgXG5cbiAgICAgICAgICAgICBBcmd1bWVudHM6XG4gICAgICAgICAgXG4gICAgICAgICAgICAgLSBgcmVmc2AgLSBzZXF1ZW5jZSBvZiBzb3VyY2UgcmVmcyxcbiAgICAgICAgICAgICAtIGBrZXlgICAtIHVuaXF1ZSBrZXkgdG8gcmVnaXN0ZXIgd2F0Y2hlciwgc2FtZSBhcyBpbiBgY2xvanVyZS5jb3JlL2FkZC13YXRjaGAsXG4gICAgICAgICAgICAgLSBgZmAgICAgLSBmdW5jdGlvbiB0aGF0IG11c3QgYWNjZXB0IE4gYXJndW1lbnRzIChzYW1lIGFzIG51bWJlciBvZiBzb3VyY2UgcmVmcykgYW5kIHJldHVybiBhIHZhbHVlIHRvIGJlIHdyaXR0ZW4gdG8gdGhlIHNpbmsgcmVmLiBOb3RlOiBgZmAgd2lsbCBiZSBjYWxsZWQgd2l0aCBhbHJlYWR5IGRlcmVmZXJlbmNlZCB2YWx1ZXMsXG4gICAgICAgICAgICAgLSBgb3B0c2AgLSBvcHRpb25hbC4gTWFwIG9mOlxuICAgICAgICAgICAgICAgLSBgOnJlZmAgLSB1c2UgdGhpcyBhcyBzaW5rIHJlZi4gQnkgZGVmYXVsdCBjcmVhdGVzIG5ldyBhdG9tLFxuICAgICAgICAgICAgICAgLSBgOmNoZWNrLWVxdWFscz9gIC0gRGVmYXVsdHMgdG8gYHRydWVgLiBJZiBlcXVhbGl0eSBjaGVjayBzaG91bGQgYmUgcnVuIG9uIGVhY2ggc291cmNlIHVwZGF0ZTogYCg9IEBzaW5rIChmIG5ldy12YWxzKSlgLiBXaGVuIHJlc3VsdCBvZiByZWNhbGN1bGF0aW5nIGBmYCBlcXVhbHMgdG8gdGhlIG9sZCB2YWx1ZSwgYHJlc2V0IWAgd29u4oCZdCBiZSBjYWxsZWQuIFNldCB0byBgZmFsc2VgIGlmIGNoZWNraW5nIGZvciBlcXVhbGl0eSBjYW4gYmUgZXhwZW5zaXZlLiJ9LCA6c291cmNlICIoZGVmIGRlcml2ZWQtYXRvbSBkZXJpdmVkLWF0b20vZGVyaXZlZC1hdG9tKVxyXG4ifSksIGNsanMuY29yZSAoezpzeW0ganMtPmNsaiwgOm1ldGEgezpkb2MgIlJlY3Vyc2l2ZWx5IHRyYW5zZm9ybXMgSmF2YVNjcmlwdCBhcnJheXMgaW50byBDbG9qdXJlU2NyaXB0XG4gIHZlY3RvcnMsIGFuZCBKYXZhU2NyaXB0IG9iamVjdHMgaW50byBDbG9qdXJlU2NyaXB0IG1hcHMuICBXaXRoXG4gIG9wdGlvbiAnOmtleXdvcmRpemUta2V5cyB0cnVlJyB3aWxsIGNvbnZlcnQgb2JqZWN0IGZpZWxkcyBmcm9tXG4gIHN0cmluZ3MgdG8ga2V5d29yZHMuIiwgOmFyZ2xpc3RzIFtbeF0gW3ggJiBvcHRzXV19LCA6c291cmNlICIoZGVmblxyXG4ganMtPmNsalxyXG4gXCJSZWN1cnNpdmVseSB0cmFuc2Zvcm1zIEphdmFTY3JpcHQgYXJyYXlzIGludG8gQ2xvanVyZVNjcmlwdFxcbiAgdmVjdG9ycywgYW5kIEphdmFTY3JpcHQgb2JqZWN0cyBpbnRvIENsb2p1cmVTY3JpcHQgbWFwcy4gIFdpdGhcXG4gIG9wdGlvbiAnOmtleXdvcmRpemUta2V5cyB0cnVlJyB3aWxsIGNvbnZlcnQgb2JqZWN0IGZpZWxkcyBmcm9tXFxuICBzdHJpbmdzIHRvIGtleXdvcmRzLlwiXHJcbiAoW3hdIChqcy0+Y2xqIHggOmtleXdvcmRpemUta2V5cyBmYWxzZSkpXHJcbiAoW3ggJiBvcHRzXVxyXG4gIChsZXRcclxuICAgW3s6a2V5cyBba2V5d29yZGl6ZS1rZXlzXX1cclxuICAgIG9wdHNcclxuICAgIGtleWZuXHJcbiAgICAoaWYga2V5d29yZGl6ZS1rZXlzIGtleXdvcmQgc3RyKVxyXG4gICAgZlxyXG4gICAgKGZuXHJcbiAgICAgdGhpc2ZuXHJcbiAgICAgW3hdXHJcbiAgICAgKGNvbmRcclxuICAgICAgKHNhdGlzZmllcz8gSUVuY29kZUNsb2p1cmUgeClcclxuICAgICAgKC1qcy0+Y2xqIHggKGFwcGx5IGFycmF5LW1hcCBvcHRzKSlcclxuICAgICAgKHNlcT8geClcclxuICAgICAgKGRvYWxsIChtYXAgdGhpc2ZuIHgpKVxyXG4gICAgICAobWFwLWVudHJ5PyB4KVxyXG4gICAgICAoTWFwRW50cnkuICh0aGlzZm4gKGtleSB4KSkgKHRoaXNmbiAodmFsIHgpKSBuaWwpXHJcbiAgICAgIChjb2xsPyB4KVxyXG4gICAgICAoaW50byAoZW1wdHkgeCkgKG1hcCB0aGlzZm4pIHgpXHJcbiAgICAgIChhcnJheT8geClcclxuICAgICAgKHBlcnNpc3RlbnQhXHJcbiAgICAgICAocmVkdWNlXHJcbiAgICAgICAgKGZuKlxyXG4gICAgICAgICBbcDFfXzQxNDcwIyBwMl9fNDE0NzEjXVxyXG4gICAgICAgICAoY29uaiEgcDFfXzQxNDcwIyAodGhpc2ZuIHAyX180MTQ3MSMpKSlcclxuICAgICAgICAodHJhbnNpZW50IFtdKVxyXG4gICAgICAgIHgpKVxyXG4gICAgICAoaWRlbnRpY2FsPyAodHlwZSB4KSBqcy9PYmplY3QpXHJcbiAgICAgIChwZXJzaXN0ZW50IVxyXG4gICAgICAgKHJlZHVjZVxyXG4gICAgICAgIChmbiBbciBrXSAoYXNzb2MhIHIgKGtleWZuIGspICh0aGlzZm4gKGdvYmplY3QvZ2V0IHggaykpKSlcclxuICAgICAgICAodHJhbnNpZW50IHt9KVxyXG4gICAgICAgIChqcy1rZXlzIHgpKSlcclxuICAgICAgOmVsc2VcclxuICAgICAgeCkpXVxyXG4gICAoZiB4KSkpKVxyXG4ifSB7OnN5bSBzb3J0LWJ5LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHNvcnRlZCBzZXF1ZW5jZSBvZiB0aGUgaXRlbXMgaW4gY29sbCwgd2hlcmUgdGhlIHNvcnRcbiAgIG9yZGVyIGlzIGRldGVybWluZWQgYnkgY29tcGFyaW5nIChrZXlmbiBpdGVtKS4gIENvbXAgY2FuIGJlXG4gICBib29sZWFuLXZhbHVlZCBjb21wYXJpc29uIGZ1bmN0aW9uLCBvciBhIC0vMC8rIHZhbHVlZCBjb21wYXJhdG9yLlxuICAgQ29tcCBkZWZhdWx0cyB0byBjb21wYXJlLiIsIDphcmdsaXN0cyBbW2tleWZuIGNvbGxdIFtrZXlmbiBjb21wIGNvbGxdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBzb3J0LWJ5XHJcbiBcIlJldHVybnMgYSBzb3J0ZWQgc2VxdWVuY2Ugb2YgdGhlIGl0ZW1zIGluIGNvbGwsIHdoZXJlIHRoZSBzb3J0XFxuICAgb3JkZXIgaXMgZGV0ZXJtaW5lZCBieSBjb21wYXJpbmcgKGtleWZuIGl0ZW0pLiAgQ29tcCBjYW4gYmVcXG4gICBib29sZWFuLXZhbHVlZCBjb21wYXJpc29uIGZ1bmN0aW9uLCBvciBhIC0vMC8rIHZhbHVlZCBjb21wYXJhdG9yLlxcbiAgIENvbXAgZGVmYXVsdHMgdG8gY29tcGFyZS5cIlxyXG4gKFtrZXlmbiBjb2xsXSAoc29ydC1ieSBrZXlmbiBjb21wYXJlIGNvbGwpKVxyXG4gKFtrZXlmbiBjb21wIGNvbGxdXHJcbiAgKHNvcnQgKGZuIFt4IHldICgoZm4tPmNvbXBhcmF0b3IgY29tcCkgKGtleWZuIHgpIChrZXlmbiB5KSkpIGNvbGwpKSlcclxuIn0gezpzeW0gSVRyYW5zaWVudEFzc29jaWF0aXZlLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFkZGluZyBhc3NvY2lhdGl2aXR5IHRvIHRyYW5zaWVudCBjb2xsZWN0aW9ucy4ifSwgOm1ldGhvZHMgKC1hc3NvYyEpfSB7OnN5bSBjaHVuay1maXJzdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmbiBjaHVuay1maXJzdCBbc10gKC1jaHVua2VkLWZpcnN0IHMpKVxyXG4ifSB7OnN5bSBwcmludC1tZXRhPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtvcHRzIG9ial0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHByaW50LW1ldGE/XHJcbiBbb3B0cyBvYmpdXHJcbiAoYW5kXHJcbiAgKGJvb2xlYW4gKGdldCBvcHRzIDptZXRhKSlcclxuICAoaW1wbGVtZW50cz8gSU1ldGEgb2JqKVxyXG4gIChub3QgKG5pbD8gKG1ldGEgb2JqKSkpKSlcclxuIn0gezpzeW0gbTMtaGFzaC1pbnQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbaW5dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBtMy1oYXNoLWludFxyXG4gW2luXVxyXG4gKGlmXHJcbiAgKHplcm8/IGluKVxyXG4gIGluXHJcbiAgKGxldCBbazEgKG0zLW1peC1LMSBpbikgaDEgKG0zLW1peC1IMSBtMy1zZWVkIGsxKV0gKG0zLWZtaXggaDEgNCkpKSlcclxuIn0gezpzeW0gcHItc3RyKiwgOm1ldGEgezpkb2MgIlN1cHBvcnQgc28gdGhhdCBjb2xsZWN0aW9ucyBjYW4gaW1wbGVtZW50IHRvU3RyaW5nIHdpdGhvdXRcbiAgIGxvYWRpbmcgYWxsIHRoZSBwcmludGluZyBtYWNoaW5lcnkuIiwgOmFyZ2xpc3RzIChbb2JqXSl9LCA6c291cmNlICIoZGVmblxyXG4gcHItc3RyKlxyXG4gXCJTdXBwb3J0IHNvIHRoYXQgY29sbGVjdGlvbnMgY2FuIGltcGxlbWVudCB0b1N0cmluZyB3aXRob3V0XFxuICAgbG9hZGluZyBhbGwgdGhlIHByaW50aW5nIG1hY2hpbmVyeS5cIlxyXG4gW29ial1cclxuIChsZXRcclxuICBbc2IgKFN0cmluZ0J1ZmZlci4pIHdyaXRlciAoU3RyaW5nQnVmZmVyV3JpdGVyLiBzYildXHJcbiAgKC1wci13cml0ZXIgb2JqIHdyaXRlciAocHItb3B0cykpXHJcbiAgKC1mbHVzaCB3cml0ZXIpXHJcbiAgKHN0ciBzYikpKVxyXG4ifSB7OnN5bSBlZHVjdGlvbiwgOm1ldGEgezpkb2MgIlJldHVybnMgYSByZWR1Y2libGUvaXRlcmFibGUgYXBwbGljYXRpb24gb2YgdGhlIHRyYW5zZHVjZXJzXG4gIHRvIHRoZSBpdGVtcyBpbiBjb2xsLiBUcmFuc2R1Y2VycyBhcmUgYXBwbGllZCBpbiBvcmRlciBhcyBpZlxuICBjb21iaW5lZCB3aXRoIGNvbXAuIE5vdGUgdGhhdCB0aGVzZSBhcHBsaWNhdGlvbnMgd2lsbCBiZVxuICBwZXJmb3JtZWQgZXZlcnkgdGltZSByZWR1Y2UvaXRlcmF0b3IgaXMgY2FsbGVkLiIsIDphcmdsaXN0cyAoWyYgeGZvcm1zXSl9LCA6c291cmNlICIoZGVmblxyXG4gZWR1Y3Rpb25cclxuIFwiUmV0dXJucyBhIHJlZHVjaWJsZS9pdGVyYWJsZSBhcHBsaWNhdGlvbiBvZiB0aGUgdHJhbnNkdWNlcnNcXG4gIHRvIHRoZSBpdGVtcyBpbiBjb2xsLiBUcmFuc2R1Y2VycyBhcmUgYXBwbGllZCBpbiBvcmRlciBhcyBpZlxcbiAgY29tYmluZWQgd2l0aCBjb21wLiBOb3RlIHRoYXQgdGhlc2UgYXBwbGljYXRpb25zIHdpbGwgYmVcXG4gIHBlcmZvcm1lZCBldmVyeSB0aW1lIHJlZHVjZS9pdGVyYXRvciBpcyBjYWxsZWQuXCJcclxuIHs6YXJnbGlzdHMgJyhbeGZvcm0qIGNvbGxdKX1cclxuIFsmIHhmb3Jtc11cclxuIChFZHVjdGlvbi4gKGFwcGx5IGNvbXAgKGJ1dGxhc3QgeGZvcm1zKSkgKGxhc3QgeGZvcm1zKSkpXHJcbiJ9IHs6c3ltIHRyZWUtc2VxLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2YgdGhlIG5vZGVzIGluIGEgdHJlZSwgdmlhIGEgZGVwdGgtZmlyc3Qgd2Fsay5cbiAgYnJhbmNoPyBtdXN0IGJlIGEgZm4gb2Ygb25lIGFyZyB0aGF0IHJldHVybnMgdHJ1ZSBpZiBwYXNzZWQgYSBub2RlXG4gIHRoYXQgY2FuIGhhdmUgY2hpbGRyZW4gKGJ1dCBtYXkgbm90KS4gIGNoaWxkcmVuIG11c3QgYmUgYSBmbiBvZiBvbmVcbiAgYXJnIHRoYXQgcmV0dXJucyBhIHNlcXVlbmNlIG9mIHRoZSBjaGlsZHJlbi4gV2lsbCBvbmx5IGJlIGNhbGxlZCBvblxuICBub2RlcyBmb3Igd2hpY2ggYnJhbmNoPyByZXR1cm5zIHRydWUuIFJvb3QgaXMgdGhlIHJvb3Qgbm9kZSBvZiB0aGVcbiAgdHJlZS4iLCA6YXJnbGlzdHMgKFticmFuY2g/IGNoaWxkcmVuIHJvb3RdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB0cmVlLXNlcVxyXG4gXCJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiB0aGUgbm9kZXMgaW4gYSB0cmVlLCB2aWEgYSBkZXB0aC1maXJzdCB3YWxrLlxcbiAgYnJhbmNoPyBtdXN0IGJlIGEgZm4gb2Ygb25lIGFyZyB0aGF0IHJldHVybnMgdHJ1ZSBpZiBwYXNzZWQgYSBub2RlXFxuICB0aGF0IGNhbiBoYXZlIGNoaWxkcmVuIChidXQgbWF5IG5vdCkuICBjaGlsZHJlbiBtdXN0IGJlIGEgZm4gb2Ygb25lXFxuICBhcmcgdGhhdCByZXR1cm5zIGEgc2VxdWVuY2Ugb2YgdGhlIGNoaWxkcmVuLiBXaWxsIG9ubHkgYmUgY2FsbGVkIG9uXFxuICBub2RlcyBmb3Igd2hpY2ggYnJhbmNoPyByZXR1cm5zIHRydWUuIFJvb3QgaXMgdGhlIHJvb3Qgbm9kZSBvZiB0aGVcXG4gIHRyZWUuXCJcclxuIFticmFuY2g/IGNoaWxkcmVuIHJvb3RdXHJcbiAobGV0XHJcbiAgW3dhbGtcclxuICAgKGZuXHJcbiAgICB3YWxrXHJcbiAgICBbbm9kZV1cclxuICAgIChsYXp5LXNlcVxyXG4gICAgIChjb25zIG5vZGUgKHdoZW4gKGJyYW5jaD8gbm9kZSkgKG1hcGNhdCB3YWxrIChjaGlsZHJlbiBub2RlKSkpKSkpXVxyXG4gICh3YWxrIHJvb3QpKSlcclxuIn0gezpzeW0gdW5jaGVja2VkLXJlbWFpbmRlci1pbnQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeCBuXSl9LCA6c291cmNlICIoZGVmblxyXG4gdW5jaGVja2VkLXJlbWFpbmRlci1pbnRcclxuIFt4IG5dXHJcbiAoY2xqcy5jb3JlL3VuY2hlY2tlZC1yZW1haW5kZXItaW50IHggbikpXHJcbiJ9IHs6c3ltIHV1aWQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm4gdXVpZCBbc10gKGFzc2VydCAoc3RyaW5nPyBzKSkgKFVVSUQuICgudG9Mb3dlckNhc2UgcykgbmlsKSlcclxuIn0gezpzeW0gc2VxLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHNlcSBvbiB0aGUgY29sbGVjdGlvbi4gSWYgdGhlIGNvbGxlY3Rpb24gaXNcbiAgZW1wdHksIHJldHVybnMgbmlsLiAgKHNlcSBuaWwpIHJldHVybnMgbmlsLiBzZXEgYWxzbyB3b3JrcyBvblxuICBTdHJpbmdzLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBzZXFcclxuIFwiUmV0dXJucyBhIHNlcSBvbiB0aGUgY29sbGVjdGlvbi4gSWYgdGhlIGNvbGxlY3Rpb24gaXNcXG4gIGVtcHR5LCByZXR1cm5zIG5pbC4gIChzZXEgbmlsKSByZXR1cm5zIG5pbC4gc2VxIGFsc28gd29ya3Mgb25cXG4gIFN0cmluZ3MuXCJcclxuIFtjb2xsXVxyXG4gKHdoZW4tbm90XHJcbiAgKG5pbD8gY29sbClcclxuICAoY29uZFxyXG4gICAoaW1wbGVtZW50cz8gSVNlcWFibGUgY29sbClcclxuICAgKC1zZXEgY29sbClcclxuICAgKGFycmF5PyBjb2xsKVxyXG4gICAod2hlbi1ub3QgKHplcm8/IChhbGVuZ3RoIGNvbGwpKSAoSW5kZXhlZFNlcS4gY29sbCAwIG5pbCkpXHJcbiAgIChzdHJpbmc/IGNvbGwpXHJcbiAgICh3aGVuLW5vdCAoemVybz8gKC4tbGVuZ3RoIGNvbGwpKSAoSW5kZXhlZFNlcS4gY29sbCAwIG5pbCkpXHJcbiAgIChqcy1pdGVyYWJsZT8gY29sbClcclxuICAgKGVzNi1pdGVyYXRvci1zZXEgKC5jYWxsIChnb2JqZWN0L2dldCBjb2xsIElURVJfU1lNQk9MKSBjb2xsKSlcclxuICAgKG5hdGl2ZS1zYXRpc2ZpZXM/IElTZXFhYmxlIGNvbGwpXHJcbiAgICgtc2VxIGNvbGwpXHJcbiAgIDplbHNlXHJcbiAgICh0aHJvdyAoanMvRXJyb3IuIChzdHIgY29sbCBcIiBpcyBub3QgSVNlcWFibGVcIikpKSkpKVxyXG4ifSB7OnN5bSByZWR1Y2UsIDptZXRhIHs6ZG9jICJmIHNob3VsZCBiZSBhIGZ1bmN0aW9uIG9mIDIgYXJndW1lbnRzLiBJZiB2YWwgaXMgbm90IHN1cHBsaWVkLFxuICByZXR1cm5zIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgZiB0byB0aGUgZmlyc3QgMiBpdGVtcyBpbiBjb2xsLCB0aGVuXG4gIGFwcGx5aW5nIGYgdG8gdGhhdCByZXN1bHQgYW5kIHRoZSAzcmQgaXRlbSwgZXRjLiBJZiBjb2xsIGNvbnRhaW5zIG5vXG4gIGl0ZW1zLCBmIG11c3QgYWNjZXB0IG5vIGFyZ3VtZW50cyBhcyB3ZWxsLCBhbmQgcmVkdWNlIHJldHVybnMgdGhlXG4gIHJlc3VsdCBvZiBjYWxsaW5nIGYgd2l0aCBubyBhcmd1bWVudHMuICBJZiBjb2xsIGhhcyBvbmx5IDEgaXRlbSwgaXRcbiAgaXMgcmV0dXJuZWQgYW5kIGYgaXMgbm90IGNhbGxlZC4gIElmIHZhbCBpcyBzdXBwbGllZCwgcmV0dXJucyB0aGVcbiAgcmVzdWx0IG9mIGFwcGx5aW5nIGYgdG8gdmFsIGFuZCB0aGUgZmlyc3QgaXRlbSBpbiBjb2xsLCB0aGVuXG4gIGFwcGx5aW5nIGYgdG8gdGhhdCByZXN1bHQgYW5kIHRoZSAybmQgaXRlbSwgZXRjLiBJZiBjb2xsIGNvbnRhaW5zIG5vXG4gIGl0ZW1zLCByZXR1cm5zIHZhbCBhbmQgZiBpcyBub3QgY2FsbGVkLiIsIDphcmdsaXN0cyBbW2YgY29sbF0gW2YgdmFsIGNvbGxdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiByZWR1Y2VcclxuIFwiZiBzaG91bGQgYmUgYSBmdW5jdGlvbiBvZiAyIGFyZ3VtZW50cy4gSWYgdmFsIGlzIG5vdCBzdXBwbGllZCxcXG4gIHJldHVybnMgdGhlIHJlc3VsdCBvZiBhcHBseWluZyBmIHRvIHRoZSBmaXJzdCAyIGl0ZW1zIGluIGNvbGwsIHRoZW5cXG4gIGFwcGx5aW5nIGYgdG8gdGhhdCByZXN1bHQgYW5kIHRoZSAzcmQgaXRlbSwgZXRjLiBJZiBjb2xsIGNvbnRhaW5zIG5vXFxuICBpdGVtcywgZiBtdXN0IGFjY2VwdCBubyBhcmd1bWVudHMgYXMgd2VsbCwgYW5kIHJlZHVjZSByZXR1cm5zIHRoZVxcbiAgcmVzdWx0IG9mIGNhbGxpbmcgZiB3aXRoIG5vIGFyZ3VtZW50cy4gIElmIGNvbGwgaGFzIG9ubHkgMSBpdGVtLCBpdFxcbiAgaXMgcmV0dXJuZWQgYW5kIGYgaXMgbm90IGNhbGxlZC4gIElmIHZhbCBpcyBzdXBwbGllZCwgcmV0dXJucyB0aGVcXG4gIHJlc3VsdCBvZiBhcHBseWluZyBmIHRvIHZhbCBhbmQgdGhlIGZpcnN0IGl0ZW0gaW4gY29sbCwgdGhlblxcbiAgYXBwbHlpbmcgZiB0byB0aGF0IHJlc3VsdCBhbmQgdGhlIDJuZCBpdGVtLCBldGMuIElmIGNvbGwgY29udGFpbnMgbm9cXG4gIGl0ZW1zLCByZXR1cm5zIHZhbCBhbmQgZiBpcyBub3QgY2FsbGVkLlwiXHJcbiAoW2YgY29sbF1cclxuICAoY29uZFxyXG4gICAoaW1wbGVtZW50cz8gSVJlZHVjZSBjb2xsKVxyXG4gICAoLXJlZHVjZSBjb2xsIGYpXHJcbiAgIChhcnJheT8gY29sbClcclxuICAgKGFycmF5LXJlZHVjZSBjb2xsIGYpXHJcbiAgIChzdHJpbmc/IGNvbGwpXHJcbiAgIChhcnJheS1yZWR1Y2UgY29sbCBmKVxyXG4gICAobmF0aXZlLXNhdGlzZmllcz8gSVJlZHVjZSBjb2xsKVxyXG4gICAoLXJlZHVjZSBjb2xsIGYpXHJcbiAgIChpdGVyYWJsZT8gY29sbClcclxuICAgKGl0ZXItcmVkdWNlIGNvbGwgZilcclxuICAgOmVsc2VcclxuICAgKHNlcS1yZWR1Y2UgZiBjb2xsKSkpXHJcbiAoW2YgdmFsIGNvbGxdXHJcbiAgKGNvbmRcclxuICAgKGltcGxlbWVudHM/IElSZWR1Y2UgY29sbClcclxuICAgKC1yZWR1Y2UgY29sbCBmIHZhbClcclxuICAgKGFycmF5PyBjb2xsKVxyXG4gICAoYXJyYXktcmVkdWNlIGNvbGwgZiB2YWwpXHJcbiAgIChzdHJpbmc/IGNvbGwpXHJcbiAgIChhcnJheS1yZWR1Y2UgY29sbCBmIHZhbClcclxuICAgKG5hdGl2ZS1zYXRpc2ZpZXM/IElSZWR1Y2UgY29sbClcclxuICAgKC1yZWR1Y2UgY29sbCBmIHZhbClcclxuICAgKGl0ZXJhYmxlPyBjb2xsKVxyXG4gICAoaXRlci1yZWR1Y2UgY29sbCBmIHZhbClcclxuICAgOmVsc2VcclxuICAgKHNlcS1yZWR1Y2UgZiB2YWwgY29sbCkpKSlcclxuIn0gezpzeW0gSVVVSUQsIDptZXRhIHs6ZG9jICJBIG1hcmtlciBwcm90b2NvbCBmb3IgVVVJRHMifSwgOm1ldGhvZHMgKCl9IHs6c3ltIElOSVQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIElOSVQgI2pzIHt9KVxyXG4ifSB7OnN5bSBmaW5kLW5zLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbmFtZXNwYWNlIG5hbWVkIGJ5IHRoZSBzeW1ib2wgb3IgbmlsIGlmIGl0IGRvZXNuJ3QgZXhpc3QuXG4gIEJvb3RzdHJhcCBvbmx5LiIsIDphcmdsaXN0cyAoW25zXSl9LCA6c291cmNlICIoZGVmblxyXG4gZmluZC1uc1xyXG4gXCJSZXR1cm5zIHRoZSBuYW1lc3BhY2UgbmFtZWQgYnkgdGhlIHN5bWJvbCBvciBuaWwgaWYgaXQgZG9lc24ndCBleGlzdC5cXG4gIEJvb3RzdHJhcCBvbmx5LlwiXHJcbiBbbnNdXHJcbiAod2hlbiAobmlsPyBOU19DQUNIRSkgKHNldCEgTlNfQ0FDSEUgKGF0b20ge30pKSlcclxuIChsZXRcclxuICBbdGhlLW5zIChnZXQgQE5TX0NBQ0hFIG5zKV1cclxuICAoaWYtbm90XHJcbiAgIChuaWw/IHRoZS1ucylcclxuICAgdGhlLW5zXHJcbiAgIChsZXRcclxuICAgIFtucy1vYmogKGZpbmQtbnMtb2JqIG5zKV1cclxuICAgICh3aGVuLW5vdFxyXG4gICAgIChuaWw/IG5zLW9iailcclxuICAgICAobGV0XHJcbiAgICAgIFtuZXctbnMgKGNyZWF0ZS1ucyBucyBucy1vYmopXVxyXG4gICAgICAoc3dhcCEgTlNfQ0FDSEUgYXNzb2MgbnMgbmV3LW5zKVxyXG4gICAgICBuZXctbnMpKSkpKSlcclxuIn0gezpzeW0gY29udGFpbnM/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIGtleSBpcyBwcmVzZW50IGluIHRoZSBnaXZlbiBjb2xsZWN0aW9uLCBvdGhlcndpc2VcbiAgcmV0dXJucyBmYWxzZS4gIE5vdGUgdGhhdCBmb3IgbnVtZXJpY2FsbHkgaW5kZXhlZCBjb2xsZWN0aW9ucyBsaWtlXG4gIHZlY3RvcnMgYW5kIGFycmF5cywgdGhpcyB0ZXN0cyBpZiB0aGUgbnVtZXJpYyBrZXkgaXMgd2l0aGluIHRoZVxuICByYW5nZSBvZiBpbmRleGVzLiAnY29udGFpbnM/JyBvcGVyYXRlcyBjb25zdGFudCBvciBsb2dhcml0aG1pYyB0aW1lO1xuICBpdCB3aWxsIG5vdCBwZXJmb3JtIGEgbGluZWFyIHNlYXJjaCBmb3IgYSB2YWx1ZS4gIFNlZSBhbHNvICdzb21lJy4iLCA6YXJnbGlzdHMgKFtjb2xsIHZdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBjb250YWlucz9cclxuIFwiUmV0dXJucyB0cnVlIGlmIGtleSBpcyBwcmVzZW50IGluIHRoZSBnaXZlbiBjb2xsZWN0aW9uLCBvdGhlcndpc2VcXG4gIHJldHVybnMgZmFsc2UuICBOb3RlIHRoYXQgZm9yIG51bWVyaWNhbGx5IGluZGV4ZWQgY29sbGVjdGlvbnMgbGlrZVxcbiAgdmVjdG9ycyBhbmQgYXJyYXlzLCB0aGlzIHRlc3RzIGlmIHRoZSBudW1lcmljIGtleSBpcyB3aXRoaW4gdGhlXFxuICByYW5nZSBvZiBpbmRleGVzLiAnY29udGFpbnM/JyBvcGVyYXRlcyBjb25zdGFudCBvciBsb2dhcml0aG1pYyB0aW1lO1xcbiAgaXQgd2lsbCBub3QgcGVyZm9ybSBhIGxpbmVhciBzZWFyY2ggZm9yIGEgdmFsdWUuICBTZWUgYWxzbyAnc29tZScuXCJcclxuIFtjb2xsIHZdXHJcbiAoaWZcclxuICAoaWRlbnRpY2FsPyAoZ2V0IGNvbGwgdiBsb29rdXAtc2VudGluZWwpIGxvb2t1cC1zZW50aW5lbClcclxuICBmYWxzZVxyXG4gIHRydWUpKVxyXG4ifSB7OnN5bSBldmVyeT8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgKHByZWQgeCkgaXMgbG9naWNhbCB0cnVlIGZvciBldmVyeSB4IGluIGNvbGwsIGVsc2VcbiAgZmFsc2UuIiwgOmFyZ2xpc3RzIChbcHJlZCBjb2xsXSl9LCA6c291cmNlICIoZGVmblxyXG4gZXZlcnk/XHJcbiBcIlJldHVybnMgdHJ1ZSBpZiAocHJlZCB4KSBpcyBsb2dpY2FsIHRydWUgZm9yIGV2ZXJ5IHggaW4gY29sbCwgZWxzZVxcbiAgZmFsc2UuXCJcclxuIFtwcmVkIGNvbGxdXHJcbiAoY29uZFxyXG4gIChuaWw/IChzZXEgY29sbCkpXHJcbiAgdHJ1ZVxyXG4gIChwcmVkIChmaXJzdCBjb2xsKSlcclxuICAocmVjdXIgcHJlZCAobmV4dCBjb2xsKSlcclxuICA6ZWxzZVxyXG4gIGZhbHNlKSlcclxuIn0gezpzeW0ga2VlcC1pbmRleGVkLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2YgdGhlIG5vbi1uaWwgcmVzdWx0cyBvZiAoZiBpbmRleCBpdGVtKS4gTm90ZSxcbiAgdGhpcyBtZWFucyBmYWxzZSByZXR1cm4gdmFsdWVzIHdpbGwgYmUgaW5jbHVkZWQuICBmIG11c3QgYmUgZnJlZSBvZlxuICBzaWRlLWVmZmVjdHMuICBSZXR1cm5zIGEgc3RhdGVmdWwgdHJhbnNkdWNlciB3aGVuIG5vIGNvbGxlY3Rpb24gaXNcbiAgcHJvdmlkZWQuIiwgOmFyZ2xpc3RzIFtbZl0gW2YgY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGtlZXAtaW5kZXhlZFxyXG4gXCJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiB0aGUgbm9uLW5pbCByZXN1bHRzIG9mIChmIGluZGV4IGl0ZW0pLiBOb3RlLFxcbiAgdGhpcyBtZWFucyBmYWxzZSByZXR1cm4gdmFsdWVzIHdpbGwgYmUgaW5jbHVkZWQuICBmIG11c3QgYmUgZnJlZSBvZlxcbiAgc2lkZS1lZmZlY3RzLiAgUmV0dXJucyBhIHN0YXRlZnVsIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzXFxuICBwcm92aWRlZC5cIlxyXG4gKFtmXVxyXG4gIChmblxyXG4gICBbcmZdXHJcbiAgIChsZXRcclxuICAgIFtpYSAodm9sYXRpbGUhIC0xKV1cclxuICAgIChmblxyXG4gICAgIChbXSAocmYpKVxyXG4gICAgIChbcmVzdWx0XSAocmYgcmVzdWx0KSlcclxuICAgICAoW3Jlc3VsdCBpbnB1dF1cclxuICAgICAgKGxldFxyXG4gICAgICAgW2kgKHZzd2FwISBpYSBpbmMpIHYgKGYgaSBpbnB1dCldXHJcbiAgICAgICAoaWYgKG5pbD8gdikgcmVzdWx0IChyZiByZXN1bHQgdikpKSkpKSkpXHJcbiAoW2YgY29sbF1cclxuICAobGV0Zm5cclxuICAgWyhrZWVwaVxyXG4gICAgIFtpZHggY29sbF1cclxuICAgICAobGF6eS1zZXFcclxuICAgICAgKHdoZW4tbGV0XHJcbiAgICAgICBbcyAoc2VxIGNvbGwpXVxyXG4gICAgICAgKGlmXHJcbiAgICAgICAgKGNodW5rZWQtc2VxPyBzKVxyXG4gICAgICAgIChsZXRcclxuICAgICAgICAgW2MgKGNodW5rLWZpcnN0IHMpIHNpemUgKGNvdW50IGMpIGIgKGNodW5rLWJ1ZmZlciBzaXplKV1cclxuICAgICAgICAgKGRvdGltZXNcclxuICAgICAgICAgIFtpIHNpemVdXHJcbiAgICAgICAgICAobGV0XHJcbiAgICAgICAgICAgW3ggKGYgKCsgaWR4IGkpICgtbnRoIGMgaSkpXVxyXG4gICAgICAgICAgICh3aGVuLW5vdCAobmlsPyB4KSAoY2h1bmstYXBwZW5kIGIgeCkpKSlcclxuICAgICAgICAgKGNodW5rLWNvbnMgKGNodW5rIGIpIChrZWVwaSAoKyBpZHggc2l6ZSkgKGNodW5rLXJlc3QgcykpKSlcclxuICAgICAgICAobGV0XHJcbiAgICAgICAgIFt4IChmIGlkeCAoZmlyc3QgcykpXVxyXG4gICAgICAgICAoaWZcclxuICAgICAgICAgIChuaWw/IHgpXHJcbiAgICAgICAgICAoa2VlcGkgKGluYyBpZHgpIChyZXN0IHMpKVxyXG4gICAgICAgICAgKGNvbnMgeCAoa2VlcGkgKGluYyBpZHgpIChyZXN0IHMpKSkpKSkpKSldXHJcbiAgIChrZWVwaSAwIGNvbGwpKSkpXHJcbiJ9IHs6c3ltIHN1YnMsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBzdWJzdHJpbmcgb2YgcyBiZWdpbm5pbmcgYXQgc3RhcnQgaW5jbHVzaXZlLCBhbmQgZW5kaW5nXG4gIGF0IGVuZCAoZGVmYXVsdHMgdG8gbGVuZ3RoIG9mIHN0cmluZyksIGV4Y2x1c2l2ZS4iLCA6YXJnbGlzdHMgW1tzIHN0YXJ0XSBbcyBzdGFydCBlbmRdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBzdWJzXHJcbiBcIlJldHVybnMgdGhlIHN1YnN0cmluZyBvZiBzIGJlZ2lubmluZyBhdCBzdGFydCBpbmNsdXNpdmUsIGFuZCBlbmRpbmdcXG4gIGF0IGVuZCAoZGVmYXVsdHMgdG8gbGVuZ3RoIG9mIHN0cmluZyksIGV4Y2x1c2l2ZS5cIlxyXG4gKFtzIHN0YXJ0XSAoLnN1YnN0cmluZyBzIHN0YXJ0KSlcclxuIChbcyBzdGFydCBlbmRdICguc3Vic3RyaW5nIHMgc3RhcnQgZW5kKSkpXHJcbiJ9IHs6c3ltIGpzLXN5bWJvbD8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgeCBpcyBhbiBpbnN0YW5jZSBvZiBTeW1ib2wiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxyXG4ganMtc3ltYm9sP1xyXG4gXCJSZXR1cm5zIHRydWUgaWYgeCBpcyBhbiBpbnN0YW5jZSBvZiBTeW1ib2xcIlxyXG4gW3hdXHJcbiAob3JcclxuICAoaWRlbnRpY2FsPyAoZ29vZy90eXBlT2YgeCkgXCJzeW1ib2xcIilcclxuICAoYW5kIChleGlzdHM/IGpzL1N5bWJvbCkgKGluc3RhbmNlPyBqcy9TeW1ib2wgeCkpKSlcclxuIn0gezpzeW0gSUZpbmQsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgaW1wbGVtZW50aW5nIGVudHJ5IGZpbmRpbmcgaW4gY29sbGVjdGlvbnMuIn0sIDptZXRob2RzICgtZmluZCl9IHs6c3ltIHNldCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBzZXQgb2YgdGhlIGRpc3RpbmN0IGVsZW1lbnRzIG9mIGNvbGwuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHNldFxyXG4gXCJSZXR1cm5zIGEgc2V0IG9mIHRoZSBkaXN0aW5jdCBlbGVtZW50cyBvZiBjb2xsLlwiXHJcbiBbY29sbF1cclxuIChpZlxyXG4gIChzZXQ/IGNvbGwpXHJcbiAgKHdpdGgtbWV0YSBjb2xsIG5pbClcclxuICAobGV0XHJcbiAgIFtpbiAoc2VxIGNvbGwpXVxyXG4gICAoY29uZFxyXG4gICAgKG5pbD8gaW4pXHJcbiAgICAje31cclxuICAgIChhbmQgKGluc3RhbmNlPyBJbmRleGVkU2VxIGluKSAoemVybz8gKC4taSBpbikpKVxyXG4gICAgKC5jcmVhdGVBc0lmQnlBc3NvYyBQZXJzaXN0ZW50SGFzaFNldCAoLi1hcnIgaW4pKVxyXG4gICAgOmVsc2VcclxuICAgIChsb29wXHJcbiAgICAgW2luIGluIG91dCAoLWFzLXRyYW5zaWVudCAje30pXVxyXG4gICAgIChpZi1ub3RcclxuICAgICAgKG5pbD8gaW4pXHJcbiAgICAgIChyZWN1ciAobmV4dCBpbikgKC1jb25qISBvdXQgKC1maXJzdCBpbikpKVxyXG4gICAgICAocGVyc2lzdGVudCEgb3V0KSkpKSkpKVxyXG4ifSB7OnN5bSBNT0RVTEVfVVJJUywgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgTU9EVUxFX1VSSVMgbmlsKVxyXG4ifSB7OnN5bSB0YWtlLWxhc3QsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgc2VxIG9mIHRoZSBsYXN0IG4gaXRlbXMgaW4gY29sbC4gIERlcGVuZGluZyBvbiB0aGUgdHlwZVxuICBvZiBjb2xsIG1heSBiZSBubyBiZXR0ZXIgdGhhbiBsaW5lYXIgdGltZS4gIEZvciB2ZWN0b3JzLCBzZWUgYWxzbyBzdWJ2ZWMuIiwgOmFyZ2xpc3RzIChbbiBjb2xsXSl9LCA6c291cmNlICIoZGVmblxyXG4gdGFrZS1sYXN0XHJcbiBcIlJldHVybnMgYSBzZXEgb2YgdGhlIGxhc3QgbiBpdGVtcyBpbiBjb2xsLiAgRGVwZW5kaW5nIG9uIHRoZSB0eXBlXFxuICBvZiBjb2xsIG1heSBiZSBubyBiZXR0ZXIgdGhhbiBsaW5lYXIgdGltZS4gIEZvciB2ZWN0b3JzLCBzZWUgYWxzbyBzdWJ2ZWMuXCJcclxuIFtuIGNvbGxdXHJcbiAobG9vcFxyXG4gIFtzIChzZXEgY29sbCkgbGVhZCAoc2VxIChkcm9wIG4gY29sbCkpXVxyXG4gIChpZiBsZWFkIChyZWN1ciAobmV4dCBzKSAobmV4dCBsZWFkKSkgcykpKVxyXG4ifSB7OnN5bSBiaXQtc2V0LCA6bWV0YSB7OmRvYyAiU2V0IGJpdCBhdCBpbmRleCBuIiwgOmFyZ2xpc3RzIChbeCBuXSl9LCA6c291cmNlICIoZGVmbiBiaXQtc2V0IFwiU2V0IGJpdCBhdCBpbmRleCBuXCIgW3ggbl0gKGNsanMuY29yZS9iaXQtc2V0IHggbikpXHJcbiJ9IHs6c3ltIHN0cmluZy1oYXNoLWNhY2hlLWNvdW50LCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBzdHJpbmctaGFzaC1jYWNoZS1jb3VudCAwKVxyXG4ifSB7OnN5bSBxdWFsaWZpZWQta2V5d29yZD8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IGlzIGEga2V5d29yZCB3aXRoIGEgbmFtZXNwYWNlIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHF1YWxpZmllZC1rZXl3b3JkP1xyXG4gXCJSZXR1cm4gdHJ1ZSBpZiB4IGlzIGEga2V5d29yZCB3aXRoIGEgbmFtZXNwYWNlXCJcclxuIFt4XVxyXG4gKGJvb2xlYW4gKGFuZCAoa2V5d29yZD8geCkgKG5hbWVzcGFjZSB4KSB0cnVlKSkpXHJcbiJ9IHs6c3ltIC13aXRoLW1ldGEsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbmV3IG9iamVjdCB3aXRoIHZhbHVlIG9mIG8gYW5kIG1ldGFkYXRhIG1ldGEgYWRkZWQgdG8gaXQuIiwgOmFyZ2xpc3RzIChbbyBtZXRhXSl9LCA6cHJvdG9jb2wgSVdpdGhNZXRhfSB7OnN5bSBidXRsYXN0LCA6bWV0YSB7OmRvYyAiUmV0dXJuIGEgc2VxIG9mIGFsbCBidXQgdGhlIGxhc3QgaXRlbSBpbiBjb2xsLCBpbiBsaW5lYXIgdGltZSIsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBidXRsYXN0XHJcbiBcIlJldHVybiBhIHNlcSBvZiBhbGwgYnV0IHRoZSBsYXN0IGl0ZW0gaW4gY29sbCwgaW4gbGluZWFyIHRpbWVcIlxyXG4gW3NdXHJcbiAobG9vcFxyXG4gIFtyZXQgW10gcyBzXVxyXG4gIChpZiAobmV4dCBzKSAocmVjdXIgKGNvbmogcmV0IChmaXJzdCBzKSkgKG5leHQgcykpIChzZXEgcmV0KSkpKVxyXG4ifSB7OnN5bSB1bmNoZWNrZWQtc3VidHJhY3QtaW50LCA6bWV0YSB7OmRvYyAiSWYgbm8geXMgYXJlIHN1cHBsaWVkLCByZXR1cm5zIHRoZSBuZWdhdGlvbiBvZiB4LCBlbHNlIHN1YnRyYWN0c1xuICB0aGUgeXMgZnJvbSB4IGFuZCByZXR1cm5zIHRoZSByZXN1bHQuIiwgOmFyZ2xpc3RzIFtbeF0gW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiB1bmNoZWNrZWQtc3VidHJhY3QtaW50XHJcbiBcIklmIG5vIHlzIGFyZSBzdXBwbGllZCwgcmV0dXJucyB0aGUgbmVnYXRpb24gb2YgeCwgZWxzZSBzdWJ0cmFjdHNcXG4gIHRoZSB5cyBmcm9tIHggYW5kIHJldHVybnMgdGhlIHJlc3VsdC5cIlxyXG4gKFt4XSAoY2xqcy5jb3JlL3VuY2hlY2tlZC1zdWJ0cmFjdC1pbnQgeCkpXHJcbiAoW3ggeV0gKGNsanMuY29yZS91bmNoZWNrZWQtc3VidHJhY3QtaW50IHggeSkpXHJcbiAoW3ggeSAmIG1vcmVdXHJcbiAgKHJlZHVjZVxyXG4gICB1bmNoZWNrZWQtc3VidHJhY3QtaW50XHJcbiAgIChjbGpzLmNvcmUvdW5jaGVja2VkLXN1YnRyYWN0LWludCB4IHkpXHJcbiAgIG1vcmUpKSlcclxuIn0gezpzeW0gLWl0ZXJhdG9yLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhbiBpdGVyYXRvciBmb3IgY29sbC4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6cHJvdG9jb2wgSUl0ZXJhYmxlfSB7OnN5bSAqcHJpbnQtbmFtZXNwYWNlLW1hcHMqLCA6bWV0YSB7OmRvYyAiKnByaW50LW5hbWVzcGFjZS1tYXBzKiBjb250cm9scyB3aGV0aGVyIHRoZSBwcmludGVyIHdpbGwgcHJpbnRcbiAgbmFtZXNwYWNlIG1hcCBsaXRlcmFsIHN5bnRheC5cblxuICBEZWZhdWx0cyB0byBmYWxzZSwgYnV0IHRoZSBSRVBMIGJpbmRzIGl0IHRvIHRydWUuIn0sIDpzb3VyY2UgIihkZWYgKnByaW50LW5hbWVzcGFjZS1tYXBzKiBmYWxzZSlcclxuIn0gezpzeW0gdGFrZS1udGgsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbGF6eSBzZXEgb2YgZXZlcnkgbnRoIGl0ZW0gaW4gY29sbC4gIFJldHVybnMgYSBzdGF0ZWZ1bFxuICB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC4iLCA6YXJnbGlzdHMgW1tuXSBbbiBjb2xsXV19LCA6c291cmNlICIoZGVmblxyXG4gdGFrZS1udGhcclxuIFwiUmV0dXJucyBhIGxhenkgc2VxIG9mIGV2ZXJ5IG50aCBpdGVtIGluIGNvbGwuICBSZXR1cm5zIGEgc3RhdGVmdWxcXG4gIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLlwiXHJcbiAoW25dXHJcbiAgezpwcmUgWyhudW1iZXI/IG4pXX1cclxuICAoZm5cclxuICAgW3JmXVxyXG4gICAobGV0XHJcbiAgICBbaWEgKHZvbGF0aWxlISAtMSldXHJcbiAgICAoZm5cclxuICAgICAoW10gKHJmKSlcclxuICAgICAoW3Jlc3VsdF0gKHJmIHJlc3VsdCkpXHJcbiAgICAgKFtyZXN1bHQgaW5wdXRdXHJcbiAgICAgIChsZXRcclxuICAgICAgIFtpICh2c3dhcCEgaWEgaW5jKV1cclxuICAgICAgIChpZiAoemVybz8gKHJlbSBpIG4pKSAocmYgcmVzdWx0IGlucHV0KSByZXN1bHQpKSkpKSkpXHJcbiAoW24gY29sbF1cclxuICB7OnByZSBbKG51bWJlcj8gbildfVxyXG4gIChsYXp5LXNlcVxyXG4gICAod2hlbi1sZXRcclxuICAgIFtzIChzZXEgY29sbCldXHJcbiAgICAoY29ucyAoZmlyc3QgcykgKHRha2UtbnRoIG4gKGRyb3AgbiBzKSkpKSkpKVxyXG4ifSB7OnN5bSBmaXJzdCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGNvbGxlY3Rpb24uIENhbGxzIHNlcSBvbiBpdHNcbiAgYXJndW1lbnQuIElmIGNvbGwgaXMgbmlsLCByZXR1cm5zIG5pbC4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxyXG4gZmlyc3RcclxuIFwiUmV0dXJucyB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgY29sbGVjdGlvbi4gQ2FsbHMgc2VxIG9uIGl0c1xcbiAgYXJndW1lbnQuIElmIGNvbGwgaXMgbmlsLCByZXR1cm5zIG5pbC5cIlxyXG4gW2NvbGxdXHJcbiAod2hlbi1ub3RcclxuICAobmlsPyBjb2xsKVxyXG4gIChpZlxyXG4gICAoaW1wbGVtZW50cz8gSVNlcSBjb2xsKVxyXG4gICAoLWZpcnN0IGNvbGwpXHJcbiAgIChsZXQgW3MgKHNlcSBjb2xsKV0gKHdoZW4tbm90IChuaWw/IHMpICgtZmlyc3QgcykpKSkpKVxyXG4ifSB7OnN5bSBuYXRpdmUtc2F0aXNmaWVzPywgOm1ldGEgezpkb2MgIkludGVybmFsIC0gZG8gbm90IHVzZSEiLCA6YXJnbGlzdHMgKFtwIHhdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBuYXRpdmUtc2F0aXNmaWVzP1xyXG4gXCJJbnRlcm5hbCAtIGRvIG5vdCB1c2UhXCJcclxuIFtwIHhdXHJcbiAobGV0XHJcbiAgW3ggKGlmIChuaWw/IHgpIG5pbCB4KV1cclxuICAoY29uZFxyXG4gICAodW5jaGVja2VkLWdldCBwIChnb29nL3R5cGVPZiB4KSlcclxuICAgdHJ1ZVxyXG4gICAodW5jaGVja2VkLWdldCBwIFwiX1wiKVxyXG4gICB0cnVlXHJcbiAgIDplbHNlXHJcbiAgIGZhbHNlKSkpXHJcbiJ9IHs6c3ltIHNlcT8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiBzIHNhdGlzZmllcyBJU2VxIiwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHNlcT9cclxuIFwiUmV0dXJuIHRydWUgaWYgcyBzYXRpc2ZpZXMgSVNlcVwiXHJcbiBbc11cclxuIChpZiAobmlsPyBzKSBmYWxzZSAoc2F0aXNmaWVzPyBJU2VxIHMpKSlcclxuIn0gezpzeW0gLXNvcnRlZC1zZXEtZnJvbSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBzb3J0ZWQgc2VxIGZyb20gY29sbCBpbiBlaXRoZXIgYXNjZW5kaW5nIG9yIGRlc2NlbmRpbmcgb3JkZXIuXG4gICAgIElmIGFzY2VuZGluZyBpcyB0cnVlLCB0aGUgcmVzdWx0IHNob3VsZCBjb250YWluIGFsbCBpdGVtcyB3aGljaCBhcmUgPiBvciA+PVxuICAgICB0aGFuIGsuIElmIGFzY2VuZGluZyBpcyBmYWxzZSwgdGhlIHJlc3VsdCBzaG91bGQgY29udGFpbiBhbGwgaXRlbXMgd2hpY2hcbiAgICAgYXJlIDwgb3IgPD0gdGhhbiBrLCBlLmcuXG4gICAgICgtc29ydGVkLXNlcS1mcm9tIChzb3J0ZWQtc2V0IDEgMiAzIDQgNSkgMyB0cnVlKSA9PiAoMyA0IDUpXG4gICAgICgtc29ydGVkLXNlcS1mcm9tIChzb3J0ZWQtc2V0IDEgMiAzIDQgNSkgMyBmYWxzZSkgPT4gKDMgMiAxKSIsIDphcmdsaXN0cyAoW2NvbGwgayBhc2NlbmRpbmc/XSl9LCA6cHJvdG9jb2wgSVNvcnRlZH0gezpzeW0gcHJpbnRsbi1zdHIsIDptZXRhIHs6ZG9jICJwcmludGxuIHRvIGEgc3RyaW5nLCByZXR1cm5pbmcgaXQiLCA6YXJnbGlzdHMgKFsmIG9ianNdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBwcmludGxuLXN0clxyXG4gXCJwcmludGxuIHRvIGEgc3RyaW5nLCByZXR1cm5pbmcgaXRcIlxyXG4gWyYgb2Jqc11cclxuIChwcm4tc3RyLXdpdGgtb3B0cyBvYmpzIChhc3NvYyAocHItb3B0cykgOnJlYWRhYmx5IGZhbHNlKSkpXHJcbiJ9IHs6c3ltIGluc3QtbXMsIDptZXRhIHs6ZG9jICJSZXR1cm4gdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgSmFudWFyeSAxLCAxOTcwLCAwMDowMDowMCBHTVQiLCA6YXJnbGlzdHMgKFtpbnN0XSl9LCA6c291cmNlICIoZGVmblxyXG4gaW5zdC1tc1xyXG4gXCJSZXR1cm4gdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgSmFudWFyeSAxLCAxOTcwLCAwMDowMDowMCBHTVRcIlxyXG4gW2luc3RdXHJcbiAoaW5zdC1tcyogaW5zdCkpXHJcbiJ9IHs6c3ltIGl0ZXJhdGUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiB4LCAoZiB4KSwgKGYgKGYgeCkpIGV0Yy4gZiBtdXN0IGJlIGZyZWUgb2Ygc2lkZS1lZmZlY3RzIiwgOmFyZ2xpc3RzIChbZiB4XSl9LCA6c291cmNlICIoZGVmblxyXG4gaXRlcmF0ZVxyXG4gXCJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiB4LCAoZiB4KSwgKGYgKGYgeCkpIGV0Yy4gZiBtdXN0IGJlIGZyZWUgb2Ygc2lkZS1lZmZlY3RzXCJcclxuIHs6YWRkZWQgXCIxLjBcIn1cclxuIFtmIHhdXHJcbiAoSXRlcmF0ZS4gbmlsIGYgbmlsIHggbmlsKSlcclxuIn0gezpzeW0gLWVtcHR5LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhbiBlbXB0eSBjb2xsZWN0aW9uIG9mIHRoZSBzYW1lIGNhdGVnb3J5IGFzIGNvbGwuIFVzZWRcbiAgICAgYnkgY2xqcy5jb3JlL2VtcHR5LiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpwcm90b2NvbCBJRW1wdHlhYmxlQ29sbGVjdGlvbn0gezpzeW0gbmV3bGluZSwgOm1ldGEgezpkb2MgIlByaW50cyBhIG5ld2xpbmUgdXNpbmcgKnByaW50LWZuKiIsIDphcmdsaXN0cyBbW10gW29wdHNdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBuZXdsaW5lXHJcbiBcIlByaW50cyBhIG5ld2xpbmUgdXNpbmcgKnByaW50LWZuKlwiXHJcbiAoW10gKG5ld2xpbmUgbmlsKSlcclxuIChbb3B0c11cclxuICAoc3RyaW5nLXByaW50IFwiXFxuXCIpXHJcbiAgKHdoZW4gKGdldCBvcHRzIDpmbHVzaC1vbi1uZXdsaW5lKSAoZmx1c2gpKSkpXHJcbiJ9IHs6c3ltIElMb29rdXAsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgbG9va2luZyB1cCBhIHZhbHVlIGluIGEgZGF0YSBzdHJ1Y3R1cmUuIn0sIDptZXRob2RzICgtbG9va3VwKX0gezpzeW0gLWNodW5rZWQtcmVzdCwgOm1ldGEgezpkb2MgIlJldHVybiBhIG5ldyBjb2xsZWN0aW9uIG9mIGNvbGwgd2l0aCB0aGUgZmlyc3QgY2h1bmsgcmVtb3ZlZC4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6cHJvdG9jb2wgSUNodW5rZWRTZXF9IHs6c3ltIHdyaXRlLWFsbCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt3cml0ZXIgJiBzc10pfSwgOnNvdXJjZSAiKGRlZm4gd3JpdGUtYWxsIFt3cml0ZXIgJiBzc10gKGRvc2VxIFtzIHNzXSAoLXdyaXRlIHdyaXRlciBzKSkpXHJcbiJ9IHs6c3ltIGZuPywgOm1ldGEgezpkb2MgIlJldHVybiB0cnVlIGlmIGYgaXMgYSBKYXZhU2NyaXB0IGZ1bmN0aW9uIG9yIHNhdGlzZmllcyB0aGUgRm4gcHJvdG9jb2wuIiwgOmFyZ2xpc3RzIChbZl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGZuP1xyXG4gXCJSZXR1cm4gdHJ1ZSBpZiBmIGlzIGEgSmF2YVNjcmlwdCBmdW5jdGlvbiBvciBzYXRpc2ZpZXMgdGhlIEZuIHByb3RvY29sLlwiXHJcbiBbZl1cclxuIChvciAoZ29vZy9pc0Z1bmN0aW9uIGYpIChzYXRpc2ZpZXM/IEZuIGYpKSlcclxuIn0gezpzeW0gLXByZWZlci1tZXRob2QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbWYgZGlzcGF0Y2gtdmFsIGRpc3BhdGNoLXZhbC15XSl9LCA6cHJvdG9jb2wgSU11bHRpRm59IHs6c3ltIC1hc3NvYywgOm1ldGEgezpkb2MgIlJldHVybnMgYSBuZXcgY29sbGVjdGlvbiBvZiBjb2xsIHdpdGggYSBtYXBwaW5nIGZyb20ga2V5IGsgdG9cbiAgICAgdmFsdWUgdiBhZGRlZCB0byBpdC4iLCA6YXJnbGlzdHMgKFtjb2xsIGsgdl0pfSwgOnByb3RvY29sIElBc3NvY2lhdGl2ZX0gezpzeW0gZG9hbGwsIDptZXRhIHs6ZG9jICJXaGVuIGxhenkgc2VxdWVuY2VzIGFyZSBwcm9kdWNlZCB2aWEgZnVuY3Rpb25zIHRoYXQgaGF2ZSBzaWRlXG4gIGVmZmVjdHMsIGFueSBlZmZlY3RzIG90aGVyIHRoYW4gdGhvc2UgbmVlZGVkIHRvIHByb2R1Y2UgdGhlIGZpcnN0XG4gIGVsZW1lbnQgaW4gdGhlIHNlcSBkbyBub3Qgb2NjdXIgdW50aWwgdGhlIHNlcSBpcyBjb25zdW1lZC4gZG9hbGwgY2FuXG4gIGJlIHVzZWQgdG8gZm9yY2UgYW55IGVmZmVjdHMuIFdhbGtzIHRocm91Z2ggdGhlIHN1Y2Nlc3NpdmUgbmV4dHMgb2ZcbiAgdGhlIHNlcSwgcmV0YWlucyB0aGUgaGVhZCBhbmQgcmV0dXJucyBpdCwgdGh1cyBjYXVzaW5nIHRoZSBlbnRpcmVcbiAgc2VxIHRvIHJlc2lkZSBpbiBtZW1vcnkgYXQgb25lIHRpbWUuIiwgOmFyZ2xpc3RzIFtbY29sbF0gW24gY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGRvYWxsXHJcbiBcIldoZW4gbGF6eSBzZXF1ZW5jZXMgYXJlIHByb2R1Y2VkIHZpYSBmdW5jdGlvbnMgdGhhdCBoYXZlIHNpZGVcXG4gIGVmZmVjdHMsIGFueSBlZmZlY3RzIG90aGVyIHRoYW4gdGhvc2UgbmVlZGVkIHRvIHByb2R1Y2UgdGhlIGZpcnN0XFxuICBlbGVtZW50IGluIHRoZSBzZXEgZG8gbm90IG9jY3VyIHVudGlsIHRoZSBzZXEgaXMgY29uc3VtZWQuIGRvYWxsIGNhblxcbiAgYmUgdXNlZCB0byBmb3JjZSBhbnkgZWZmZWN0cy4gV2Fsa3MgdGhyb3VnaCB0aGUgc3VjY2Vzc2l2ZSBuZXh0cyBvZlxcbiAgdGhlIHNlcSwgcmV0YWlucyB0aGUgaGVhZCBhbmQgcmV0dXJucyBpdCwgdGh1cyBjYXVzaW5nIHRoZSBlbnRpcmVcXG4gIHNlcSB0byByZXNpZGUgaW4gbWVtb3J5IGF0IG9uZSB0aW1lLlwiXHJcbiAoW2NvbGxdIChkb3J1biBjb2xsKSBjb2xsKVxyXG4gKFtuIGNvbGxdIChkb3J1biBuIGNvbGwpIGNvbGwpKVxyXG4ifSB7OnN5bSBrZXl3b3JkLWlkZW50aWNhbD8sIDptZXRhIHs6ZG9jICJFZmZpY2llbnQgdGVzdCB0byBkZXRlcm1pbmUgdGhhdCB0d28ga2V5d29yZHMgYXJlIGlkZW50aWNhbC4iLCA6YXJnbGlzdHMgKFt4IHldKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBrZXl3b3JkLWlkZW50aWNhbD9cclxuIFwiRWZmaWNpZW50IHRlc3QgdG8gZGV0ZXJtaW5lIHRoYXQgdHdvIGtleXdvcmRzIGFyZSBpZGVudGljYWwuXCJcclxuIFt4IHldXHJcbiAoaWZcclxuICAoaWRlbnRpY2FsPyB4IHkpXHJcbiAgdHJ1ZVxyXG4gIChpZlxyXG4gICAoYW5kIChrZXl3b3JkPyB4KSAoa2V5d29yZD8geSkpXHJcbiAgIChpZGVudGljYWw/ICguLWZxbiB4KSAoLi1mcW4geSkpXHJcbiAgIGZhbHNlKSkpXHJcbiJ9IHs6c3ltICpwcmludC1lcnItZm4qLCA6bWV0YSB7OmRvYyAiRWFjaCBydW50aW1lIGVudmlyb25tZW50IHByb3ZpZGVzIGEgZGlmZmVyZW50IHdheSB0byBwcmludCBlcnJvciBvdXRwdXQuXG4gIFdoYXRldmVyIGZ1bmN0aW9uICpwcmludC1lcnItZm4qIGlzIGJvdW5kIHRvIHdpbGwgYmUgcGFzc2VkIGFueVxuICBTdHJpbmdzIHdoaWNoIHNob3VsZCBiZSBwcmludGVkLiJ9LCA6c291cmNlICIoZGVmb25jZSAqcHJpbnQtZXJyLWZuKiBuaWwpXHJcbiJ9IHs6c3ltIHByZWZlcnMsIDptZXRhIHs6ZG9jICJHaXZlbiBhIG11bHRpbWV0aG9kLCByZXR1cm5zIGEgbWFwIG9mIHByZWZlcnJlZCB2YWx1ZSAtPiBzZXQgb2Ygb3RoZXIgdmFsdWVzIiwgOmFyZ2xpc3RzIChbbXVsdGlmbl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHByZWZlcnNcclxuIFwiR2l2ZW4gYSBtdWx0aW1ldGhvZCwgcmV0dXJucyBhIG1hcCBvZiBwcmVmZXJyZWQgdmFsdWUgLT4gc2V0IG9mIG90aGVyIHZhbHVlc1wiXHJcbiBbbXVsdGlmbl1cclxuICgtcHJlZmVycyBtdWx0aWZuKSlcclxuIn0gezpzeW0gLWpzLT5jbGosIDptZXRhIHs6ZG9jICJUcmFuc2Zvcm1zIEphdmFTY3JpcHQgdmFsdWVzIHRvIENsb2p1cmUiLCA6YXJnbGlzdHMgKFt4IG9wdGlvbnNdKX0sIDpwcm90b2NvbCBJRW5jb2RlQ2xvanVyZX0gezpzeW0gZGVkdXBlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGxhenkgc2VxdWVuY2UgcmVtb3ZpbmcgY29uc2VjdXRpdmUgZHVwbGljYXRlcyBpbiBjb2xsLlxuICBSZXR1cm5zIGEgdHJhbnNkdWNlciB3aGVuIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuIiwgOmFyZ2xpc3RzIFtbXSBbY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGRlZHVwZVxyXG4gXCJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSByZW1vdmluZyBjb25zZWN1dGl2ZSBkdXBsaWNhdGVzIGluIGNvbGwuXFxuICBSZXR1cm5zIGEgdHJhbnNkdWNlciB3aGVuIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuXCJcclxuIChbXVxyXG4gIChmblxyXG4gICBbcmZdXHJcbiAgIChsZXRcclxuICAgIFtwYSAodm9sYXRpbGUhIDpjbGpzLmNvcmUvbm9uZSldXHJcbiAgICAoZm5cclxuICAgICAoW10gKHJmKSlcclxuICAgICAoW3Jlc3VsdF0gKHJmIHJlc3VsdCkpXHJcbiAgICAgKFtyZXN1bHQgaW5wdXRdXHJcbiAgICAgIChsZXRcclxuICAgICAgIFtwcmlvciBAcGFdXHJcbiAgICAgICAodnJlc2V0ISBwYSBpbnB1dClcclxuICAgICAgIChpZiAoPSBwcmlvciBpbnB1dCkgcmVzdWx0IChyZiByZXN1bHQgaW5wdXQpKSkpKSkpKVxyXG4gKFtjb2xsXSAoc2VxdWVuY2UgKGRlZHVwZSkgY29sbCkpKVxyXG4ifSB7OnN5bSBkaXNzb2MsIDptZXRhIHs6ZG9jICJkaXNzb2NbaWF0ZV0uIFJldHVybnMgYSBuZXcgbWFwIG9mIHRoZSBzYW1lIChoYXNoZWQvc29ydGVkKSB0eXBlLFxuICB0aGF0IGRvZXMgbm90IGNvbnRhaW4gYSBtYXBwaW5nIGZvciBrZXkocykuIiwgOmFyZ2xpc3RzIFtbY29sbF0gW2NvbGwga10gW2NvbGwgayAmIGtzXV19LCA6c291cmNlICIoZGVmblxyXG4gZGlzc29jXHJcbiBcImRpc3NvY1tpYXRlXS4gUmV0dXJucyBhIG5ldyBtYXAgb2YgdGhlIHNhbWUgKGhhc2hlZC9zb3J0ZWQpIHR5cGUsXFxuICB0aGF0IGRvZXMgbm90IGNvbnRhaW4gYSBtYXBwaW5nIGZvciBrZXkocykuXCJcclxuIChbY29sbF0gY29sbClcclxuIChbY29sbCBrXSAod2hlbi1ub3QgKG5pbD8gY29sbCkgKC1kaXNzb2MgY29sbCBrKSkpXHJcbiAoW2NvbGwgayAmIGtzXVxyXG4gICh3aGVuLW5vdFxyXG4gICAobmlsPyBjb2xsKVxyXG4gICAobGV0XHJcbiAgICBbcmV0IChkaXNzb2MgY29sbCBrKV1cclxuICAgIChpZiBrcyAocmVjdXIgcmV0IChmaXJzdCBrcykgKG5leHQga3MpKSByZXQpKSkpKVxyXG4ifSB7OnN5bSBhdG9tLCA6bWV0YSB7OmRvYyAiQ3JlYXRlcyBhbmQgcmV0dXJucyBhbiBBdG9tIHdpdGggYW4gaW5pdGlhbCB2YWx1ZSBvZiB4IGFuZCB6ZXJvIG9yXG4gIG1vcmUgb3B0aW9ucyAoaW4gYW55IG9yZGVyKTpcblxuICA6bWV0YSBtZXRhZGF0YS1tYXBcblxuICA6dmFsaWRhdG9yIHZhbGlkYXRlLWZuXG5cbiAgSWYgbWV0YWRhdGEtbWFwIGlzIHN1cHBsaWVkLCBpdCB3aWxsIGJlY29tZSB0aGUgbWV0YWRhdGEgb24gdGhlXG4gIGF0b20uIHZhbGlkYXRlLWZuIG11c3QgYmUgbmlsIG9yIGEgc2lkZS1lZmZlY3QtZnJlZSBmbiBvZiBvbmVcbiAgYXJndW1lbnQsIHdoaWNoIHdpbGwgYmUgcGFzc2VkIHRoZSBpbnRlbmRlZCBuZXcgc3RhdGUgb24gYW55IHN0YXRlXG4gIGNoYW5nZS4gSWYgdGhlIG5ldyBzdGF0ZSBpcyB1bmFjY2VwdGFibGUsIHRoZSB2YWxpZGF0ZS1mbiBzaG91bGRcbiAgcmV0dXJuIGZhbHNlIG9yIHRocm93IGFuIEVycm9yLiAgSWYgZWl0aGVyIG9mIHRoZXNlIGVycm9yIGNvbmRpdGlvbnNcbiAgb2NjdXIsIHRoZW4gdGhlIHZhbHVlIG9mIHRoZSBhdG9tIHdpbGwgbm90IGNoYW5nZS4iLCA6YXJnbGlzdHMgW1t4XSBbeCAmIHs6a2V5cyBbbWV0YSB2YWxpZGF0b3JdfV1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGF0b21cclxuIFwiQ3JlYXRlcyBhbmQgcmV0dXJucyBhbiBBdG9tIHdpdGggYW4gaW5pdGlhbCB2YWx1ZSBvZiB4IGFuZCB6ZXJvIG9yXFxuICBtb3JlIG9wdGlvbnMgKGluIGFueSBvcmRlcik6XFxuXFxuICA6bWV0YSBtZXRhZGF0YS1tYXBcXG5cXG4gIDp2YWxpZGF0b3IgdmFsaWRhdGUtZm5cXG5cXG4gIElmIG1ldGFkYXRhLW1hcCBpcyBzdXBwbGllZCwgaXQgd2lsbCBiZWNvbWUgdGhlIG1ldGFkYXRhIG9uIHRoZVxcbiAgYXRvbS4gdmFsaWRhdGUtZm4gbXVzdCBiZSBuaWwgb3IgYSBzaWRlLWVmZmVjdC1mcmVlIGZuIG9mIG9uZVxcbiAgYXJndW1lbnQsIHdoaWNoIHdpbGwgYmUgcGFzc2VkIHRoZSBpbnRlbmRlZCBuZXcgc3RhdGUgb24gYW55IHN0YXRlXFxuICBjaGFuZ2UuIElmIHRoZSBuZXcgc3RhdGUgaXMgdW5hY2NlcHRhYmxlLCB0aGUgdmFsaWRhdGUtZm4gc2hvdWxkXFxuICByZXR1cm4gZmFsc2Ugb3IgdGhyb3cgYW4gRXJyb3IuICBJZiBlaXRoZXIgb2YgdGhlc2UgZXJyb3IgY29uZGl0aW9uc1xcbiAgb2NjdXIsIHRoZW4gdGhlIHZhbHVlIG9mIHRoZSBhdG9tIHdpbGwgbm90IGNoYW5nZS5cIlxyXG4gKFt4XSAoQXRvbS4geCBuaWwgbmlsIG5pbCkpXHJcbiAoW3ggJiB7OmtleXMgW21ldGEgdmFsaWRhdG9yXX1dIChBdG9tLiB4IG1ldGEgdmFsaWRhdG9yIG5pbCkpKVxyXG4ifSB7OnN5bSBiaXQtc2hpZnQtcmlnaHQsIDptZXRhIHs6ZG9jICJCaXR3aXNlIHNoaWZ0IHJpZ2h0IiwgOmFyZ2xpc3RzIChbeCBuXSl9LCA6c291cmNlICIoZGVmblxyXG4gYml0LXNoaWZ0LXJpZ2h0XHJcbiBcIkJpdHdpc2Ugc2hpZnQgcmlnaHRcIlxyXG4gW3ggbl1cclxuIChjbGpzLmNvcmUvYml0LXNoaWZ0LXJpZ2h0IHggbikpXHJcbiJ9IHs6c3ltICpjbG9qdXJlc2NyaXB0LXZlcnNpb24qLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqY2xvanVyZXNjcmlwdC12ZXJzaW9uKiBcIjEuMTAuNzY0XCIpXHJcbiJ9IHs6c3ltIC1maXJzdCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGNvbGxlY3Rpb24gY29sbC4gVXNlZCBieSBjbGpzLmNvcmUvZmlyc3QuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnByb3RvY29sIElTZXF9IHs6c3ltIHBlZWssIDptZXRhIHs6ZG9jICJGb3IgYSBsaXN0IG9yIHF1ZXVlLCBzYW1lIGFzIGZpcnN0LCBmb3IgYSB2ZWN0b3IsIHNhbWUgYXMsIGJ1dCBtdWNoXG4gIG1vcmUgZWZmaWNpZW50IHRoYW4sIGxhc3QuIElmIHRoZSBjb2xsZWN0aW9uIGlzIGVtcHR5LCByZXR1cm5zIG5pbC4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxyXG4gcGVla1xyXG4gXCJGb3IgYSBsaXN0IG9yIHF1ZXVlLCBzYW1lIGFzIGZpcnN0LCBmb3IgYSB2ZWN0b3IsIHNhbWUgYXMsIGJ1dCBtdWNoXFxuICBtb3JlIGVmZmljaWVudCB0aGFuLCBsYXN0LiBJZiB0aGUgY29sbGVjdGlvbiBpcyBlbXB0eSwgcmV0dXJucyBuaWwuXCJcclxuIFtjb2xsXVxyXG4gKHdoZW4tbm90IChuaWw/IGNvbGwpICgtcGVlayBjb2xsKSkpXHJcbiJ9IHs6c3ltIElLVlJlZHVjZSwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhc3NvY2lhdGl2ZSB0eXBlcyB0aGF0IGNhbiByZWR1Y2UgdGhlbXNlbHZlc1xuICB2aWEgYSBmdW5jdGlvbiBvZiBrZXkgYW5kIHZhbC4gQ2FsbGVkIGJ5IGNsanMuY29yZS9yZWR1Y2Uta3YuIn0sIDptZXRob2RzICgta3YtcmVkdWNlKX0gezpzeW0gYWdldCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHZhbHVlIGF0IHRoZSBpbmRleC9pbmRpY2VzLiBXb3JrcyBvbiBKYXZhU2NyaXB0IGFycmF5cy4iLCA6YXJnbGlzdHMgW1thcnJheSBpZHhdIFthcnJheSBpZHggJiBpZHhzXV19LCA6c291cmNlICIoZGVmblxyXG4gYWdldFxyXG4gXCJSZXR1cm5zIHRoZSB2YWx1ZSBhdCB0aGUgaW5kZXgvaW5kaWNlcy4gV29ya3Mgb24gSmF2YVNjcmlwdCBhcnJheXMuXCJcclxuIChbYXJyYXkgaWR4XSAoY2xqcy5jb3JlL2FnZXQgYXJyYXkgaWR4KSlcclxuIChbYXJyYXkgaWR4ICYgaWR4c10gKGFwcGx5IGFnZXQgKGFnZXQgYXJyYXkgaWR4KSBpZHhzKSkpXHJcbiJ9IHs6c3ltIC13cml0ZSwgOm1ldGEgezpkb2MgIldyaXRlcyBzIHdpdGggd3JpdGVyIGFuZCByZXR1cm5zIHRoZSByZXN1bHQuIiwgOmFyZ2xpc3RzIChbd3JpdGVyIHNdKX0sIDpwcm90b2NvbCBJV3JpdGVyfSB7OnN5bSBpdGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBpdGVyXHJcbiBbY29sbF1cclxuIChjb25kXHJcbiAgKGl0ZXJhYmxlPyBjb2xsKVxyXG4gICgtaXRlcmF0b3IgY29sbClcclxuICAobmlsPyBjb2xsKVxyXG4gIChuaWwtaXRlcilcclxuICAoc3RyaW5nPyBjb2xsKVxyXG4gIChzdHJpbmctaXRlciBjb2xsKVxyXG4gIChhcnJheT8gY29sbClcclxuICAoYXJyYXktaXRlciBjb2xsKVxyXG4gIChzZXFhYmxlPyBjb2xsKVxyXG4gIChzZXEtaXRlciBjb2xsKVxyXG4gIDplbHNlXHJcbiAgKHRocm93IChqcy9FcnJvci4gKHN0ciBcIkNhbm5vdCBjcmVhdGUgaXRlcmF0b3IgZnJvbSBcIiBjb2xsKSkpKSlcclxuIn0gezpzeW0gbWstYm91bmQtZm4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc2MgdGVzdCBrZXldKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBtay1ib3VuZC1mblxyXG4gW3NjIHRlc3Qga2V5XVxyXG4gKGZuXHJcbiAgW2VdXHJcbiAgKGxldCBbY29tcCAoLWNvbXBhcmF0b3Igc2MpXSAodGVzdCAoY29tcCAoLWVudHJ5LWtleSBzYyBlKSBrZXkpIDApKSkpXHJcbiJ9IHs6c3ltIGxhc3QsIDptZXRhIHs6ZG9jICJSZXR1cm4gdGhlIGxhc3QgaXRlbSBpbiBjb2xsLCBpbiBsaW5lYXIgdGltZSIsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBsYXN0XHJcbiBcIlJldHVybiB0aGUgbGFzdCBpdGVtIGluIGNvbGwsIGluIGxpbmVhciB0aW1lXCJcclxuIFtzXVxyXG4gKGxldCBbc24gKG5leHQgcyldIChpZi1ub3QgKG5pbD8gc24pIChyZWN1ciBzbikgKGZpcnN0IHMpKSkpXHJcbiJ9IHs6c3ltIC1kZWZhdWx0LWRpc3BhdGNoLXZhbCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttZl0pfSwgOnByb3RvY29sIElNdWx0aUZufSB7OnN5bSBwciwgOm1ldGEgezpkb2MgIlByaW50cyB0aGUgb2JqZWN0KHMpIHVzaW5nIHN0cmluZy1wcmludC4gIFByaW50cyB0aGVcbiAgb2JqZWN0KHMpLCBzZXBhcmF0ZWQgYnkgc3BhY2VzIGlmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUuXG4gIEJ5IGRlZmF1bHQsIHByIGFuZCBwcm4gcHJpbnQgaW4gYSB3YXkgdGhhdCBvYmplY3RzIGNhbiBiZVxuICByZWFkIGJ5IHRoZSByZWFkZXIiLCA6YXJnbGlzdHMgKFsmIG9ianNdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBwclxyXG4gXCJQcmludHMgdGhlIG9iamVjdChzKSB1c2luZyBzdHJpbmctcHJpbnQuICBQcmludHMgdGhlXFxuICBvYmplY3QocyksIHNlcGFyYXRlZCBieSBzcGFjZXMgaWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZS5cXG4gIEJ5IGRlZmF1bHQsIHByIGFuZCBwcm4gcHJpbnQgaW4gYSB3YXkgdGhhdCBvYmplY3RzIGNhbiBiZVxcbiAgcmVhZCBieSB0aGUgcmVhZGVyXCJcclxuIFsmIG9ianNdXHJcbiAocHItd2l0aC1vcHRzIG9ianMgKHByLW9wdHMpKSlcclxuIn0gezpzeW0gbmFtZXNwYWNlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbmFtZXNwYWNlIFN0cmluZyBvZiBhIHN5bWJvbCBvciBrZXl3b3JkLCBvciBuaWwgaWYgbm90IHByZXNlbnQuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIG5hbWVzcGFjZVxyXG4gXCJSZXR1cm5zIHRoZSBuYW1lc3BhY2UgU3RyaW5nIG9mIGEgc3ltYm9sIG9yIGtleXdvcmQsIG9yIG5pbCBpZiBub3QgcHJlc2VudC5cIlxyXG4gW3hdXHJcbiAoaWZcclxuICAoaW1wbGVtZW50cz8gSU5hbWVkIHgpXHJcbiAgKC1uYW1lc3BhY2UgeClcclxuICAodGhyb3cgKGpzL0Vycm9yLiAoc3RyIFwiRG9lc24ndCBzdXBwb3J0IG5hbWVzcGFjZTogXCIgeCkpKSkpXHJcbiJ9IHs6c3ltIG9iai1tYXAsIDptZXRhIHs6ZG9jICJrZXl2YWwgPT4ga2V5IHZhbFxuICBSZXR1cm5zIGEgbmV3IG9iamVjdCBtYXAgd2l0aCBzdXBwbGllZCBtYXBwaW5ncy4iLCA6YXJnbGlzdHMgKFsmIGtleXZhbHNdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBvYmotbWFwXHJcbiBcImtleXZhbCA9PiBrZXkgdmFsXFxuICBSZXR1cm5zIGEgbmV3IG9iamVjdCBtYXAgd2l0aCBzdXBwbGllZCBtYXBwaW5ncy5cIlxyXG4gWyYga2V5dmFsc11cclxuIChsZXRcclxuICBba3MgKGFycmF5KSBvYmogKGpzLW9iaildXHJcbiAgKGxvb3BcclxuICAgW2t2cyAoc2VxIGtleXZhbHMpXVxyXG4gICAoaWZcclxuICAgIGt2c1xyXG4gICAgKGRvXHJcbiAgICAgKC5wdXNoIGtzIChmaXJzdCBrdnMpKVxyXG4gICAgIChnb2JqZWN0L3NldCBvYmogKGZpcnN0IGt2cykgKHNlY29uZCBrdnMpKVxyXG4gICAgIChyZWN1ciAobm5leHQga3ZzKSkpXHJcbiAgICAoLmZyb21PYmplY3QgT2JqTWFwIGtzIG9iaikpKSkpXHJcbiJ9IHs6c3ltIC1jb25qLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG5ldyBjb2xsZWN0aW9uIG9mIGNvbGwgd2l0aCBvIGFkZGVkIHRvIGl0LiBUaGUgbmV3IGl0ZW1cbiAgICAgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBtb3N0IGVmZmljaWVudCBwbGFjZSwgZS5nLlxuICAgICAoY29uaiBbMSAyIDMgNF0gNSkgPT4gWzEgMiAzIDQgNV1cbiAgICAgKGNvbmogJygyIDMgNCA1KSAxKSA9PiAnKDEgMiAzIDQgNSkiLCA6YXJnbGlzdHMgKFtjb2xsIG9dKX0sIDpwcm90b2NvbCBJQ29sbGVjdGlvbn0gezpzeW0gPSwgOm1ldGEgezpkb2MgIkVxdWFsaXR5LiBSZXR1cm5zIHRydWUgaWYgeCBlcXVhbHMgeSwgZmFsc2UgaWYgbm90LiBDb21wYXJlc1xuICBudW1iZXJzIGFuZCBjb2xsZWN0aW9ucyBpbiBhIHR5cGUtaW5kZXBlbmRlbnQgbWFubmVyLiAgQ2xvanVyZSdzIGltbXV0YWJsZSBkYXRhXG4gIHN0cnVjdHVyZXMgZGVmaW5lIC1lcXVpdiAoYW5kIHRodXMgPSkgYXMgYSB2YWx1ZSwgbm90IGFuIGlkZW50aXR5LFxuICBjb21wYXJpc29uLiIsIDphcmdsaXN0cyBbW3hdIFt4IHldIFt4IHkgJiBtb3JlXV19LCA6c291cmNlICIoZGVmblxyXG4gPVxyXG4gXCJFcXVhbGl0eS4gUmV0dXJucyB0cnVlIGlmIHggZXF1YWxzIHksIGZhbHNlIGlmIG5vdC4gQ29tcGFyZXNcXG4gIG51bWJlcnMgYW5kIGNvbGxlY3Rpb25zIGluIGEgdHlwZS1pbmRlcGVuZGVudCBtYW5uZXIuICBDbG9qdXJlJ3MgaW1tdXRhYmxlIGRhdGFcXG4gIHN0cnVjdHVyZXMgZGVmaW5lIC1lcXVpdiAoYW5kIHRodXMgPSkgYXMgYSB2YWx1ZSwgbm90IGFuIGlkZW50aXR5LFxcbiAgY29tcGFyaXNvbi5cIlxyXG4gKFt4XSB0cnVlKVxyXG4gKFt4IHldIChpZiAobmlsPyB4KSAobmlsPyB5KSAob3IgKGlkZW50aWNhbD8geCB5KSAoLWVxdWl2IHggeSkpKSlcclxuIChbeCB5ICYgbW9yZV1cclxuICAoaWZcclxuICAgKD0geCB5KVxyXG4gICAoaWZcclxuICAgIChuZXh0IG1vcmUpXHJcbiAgICAocmVjdXIgeSAoZmlyc3QgbW9yZSkgKG5leHQgbW9yZSkpXHJcbiAgICAoPSB5IChmaXJzdCBtb3JlKSkpXHJcbiAgIGZhbHNlKSkpXHJcbiJ9IHs6c3ltIElUcmFuc2llbnRNYXAsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgYWRkaW5nIG1hcHBpbmcgZnVuY3Rpb25hbGl0eSB0byB0cmFuc2llbnQgY29sbGVjdGlvbnMuIn0sIDptZXRob2RzICgtZGlzc29jISl9IHs6c3ltIHRha2UsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiB0aGUgZmlyc3QgbiBpdGVtcyBpbiBjb2xsLCBvciBhbGwgaXRlbXMgaWZcbiAgdGhlcmUgYXJlIGZld2VyIHRoYW4gbi4gIFJldHVybnMgYSBzdGF0ZWZ1bCB0cmFuc2R1Y2VyIHdoZW5cbiAgbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC4iLCA6YXJnbGlzdHMgW1tuXSBbbiBjb2xsXV19LCA6c291cmNlICIoZGVmblxyXG4gdGFrZVxyXG4gXCJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiB0aGUgZmlyc3QgbiBpdGVtcyBpbiBjb2xsLCBvciBhbGwgaXRlbXMgaWZcXG4gIHRoZXJlIGFyZSBmZXdlciB0aGFuIG4uICBSZXR1cm5zIGEgc3RhdGVmdWwgdHJhbnNkdWNlciB3aGVuXFxuICBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLlwiXHJcbiAoW25dXHJcbiAgezpwcmUgWyhudW1iZXI/IG4pXX1cclxuICAoZm5cclxuICAgW3JmXVxyXG4gICAobGV0XHJcbiAgICBbbmEgKHZvbGF0aWxlISBuKV1cclxuICAgIChmblxyXG4gICAgIChbXSAocmYpKVxyXG4gICAgIChbcmVzdWx0XSAocmYgcmVzdWx0KSlcclxuICAgICAoW3Jlc3VsdCBpbnB1dF1cclxuICAgICAgKGxldFxyXG4gICAgICAgW25cclxuICAgICAgICBAbmFcclxuICAgICAgICBublxyXG4gICAgICAgICh2c3dhcCEgbmEgZGVjKVxyXG4gICAgICAgIHJlc3VsdFxyXG4gICAgICAgIChpZiAocG9zPyBuKSAocmYgcmVzdWx0IGlucHV0KSByZXN1bHQpXVxyXG4gICAgICAgKGlmIChub3QgKHBvcz8gbm4pKSAoZW5zdXJlLXJlZHVjZWQgcmVzdWx0KSByZXN1bHQpKSkpKSkpXHJcbiAoW24gY29sbF1cclxuICB7OnByZSBbKG51bWJlcj8gbildfVxyXG4gIChsYXp5LXNlcVxyXG4gICAod2hlblxyXG4gICAgKHBvcz8gbilcclxuICAgICh3aGVuLWxldFxyXG4gICAgIFtzIChzZXEgY29sbCldXHJcbiAgICAgKGNvbnMgKGZpcnN0IHMpICh0YWtlIChkZWMgbikgKHJlc3QgcykpKSkpKSkpXHJcbiJ9IHs6c3ltIHZlY3Rvcj8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IHNhdGlzZmllcyBJVmVjdG9yIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHZlY3Rvcj9cclxuIFwiUmV0dXJuIHRydWUgaWYgeCBzYXRpc2ZpZXMgSVZlY3RvclwiXHJcbiBbeF1cclxuIChzYXRpc2ZpZXM/IElWZWN0b3IgeCkpXHJcbiJ9IHs6c3ltIGJvb2xlYW4sIDptZXRhIHs6ZG9jICJDb2VyY2UgdG8gYm9vbGVhbiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBib29sZWFuXHJcbiBcIkNvZXJjZSB0byBib29sZWFuXCJcclxuIFt4XVxyXG4gKGNvbmQgKG5pbD8geCkgZmFsc2UgKGZhbHNlPyB4KSBmYWxzZSA6ZWxzZSB0cnVlKSlcclxuIn0gezpzeW0gSUNodW5rLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFjY2Vzc2luZyB0aGUgaXRlbXMgb2YgYSBjaHVuay4ifSwgOm1ldGhvZHMgKC1kcm9wLWZpcnN0KX0gezpzeW0gYml0LXNoaWZ0LWxlZnQsIDptZXRhIHs6ZG9jICJCaXR3aXNlIHNoaWZ0IGxlZnQiLCA6YXJnbGlzdHMgKFt4IG5dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBiaXQtc2hpZnQtbGVmdFxyXG4gXCJCaXR3aXNlIHNoaWZ0IGxlZnRcIlxyXG4gW3ggbl1cclxuIChjbGpzLmNvcmUvYml0LXNoaWZ0LWxlZnQgeCBuKSlcclxuIn0gezpzeW0gcmFuZG9tLXV1aWQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxyXG4gcmFuZG9tLXV1aWRcclxuIFtdXHJcbiAobGV0Zm5cclxuICBbKGhleCBbXSAoLnRvU3RyaW5nIChyYW5kLWludCAxNikgMTYpKV1cclxuICAobGV0XHJcbiAgIFtyaGV4ICgudG9TdHJpbmcgKGJpdC1vciA4IChiaXQtYW5kIDMgKHJhbmQtaW50IDE2KSkpIDE2KV1cclxuICAgKHV1aWRcclxuICAgIChzdHJcclxuICAgICAoaGV4KVxyXG4gICAgIChoZXgpXHJcbiAgICAgKGhleClcclxuICAgICAoaGV4KVxyXG4gICAgIChoZXgpXHJcbiAgICAgKGhleClcclxuICAgICAoaGV4KVxyXG4gICAgIChoZXgpXHJcbiAgICAgXCItXCJcclxuICAgICAoaGV4KVxyXG4gICAgIChoZXgpXHJcbiAgICAgKGhleClcclxuICAgICAoaGV4KVxyXG4gICAgIFwiLVwiXHJcbiAgICAgXCI0XCJcclxuICAgICAoaGV4KVxyXG4gICAgIChoZXgpXHJcbiAgICAgKGhleClcclxuICAgICBcIi1cIlxyXG4gICAgIHJoZXhcclxuICAgICAoaGV4KVxyXG4gICAgIChoZXgpXHJcbiAgICAgKGhleClcclxuICAgICBcIi1cIlxyXG4gICAgIChoZXgpXHJcbiAgICAgKGhleClcclxuICAgICAoaGV4KVxyXG4gICAgIChoZXgpXHJcbiAgICAgKGhleClcclxuICAgICAoaGV4KVxyXG4gICAgIChoZXgpXHJcbiAgICAgKGhleClcclxuICAgICAoaGV4KVxyXG4gICAgIChoZXgpXHJcbiAgICAgKGhleClcclxuICAgICAoaGV4KSkpKSkpXHJcbiJ9IHs6c3ltIGFueT8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgZ2l2ZW4gYW55IGFyZ3VtZW50LiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGFueT8gXCJSZXR1cm5zIHRydWUgaWYgZ2l2ZW4gYW55IGFyZ3VtZW50LlwiIFt4XSB0cnVlKVxyXG4ifSB7OnN5bSByYW5kLWludCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSByYW5kb20gaW50ZWdlciBiZXR3ZWVuIDAgKGluY2x1c2l2ZSkgYW5kIG4gKGV4Y2x1c2l2ZSkuIiwgOmFyZ2xpc3RzIChbbl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJhbmQtaW50XHJcbiBcIlJldHVybnMgYSByYW5kb20gaW50ZWdlciBiZXR3ZWVuIDAgKGluY2x1c2l2ZSkgYW5kIG4gKGV4Y2x1c2l2ZSkuXCJcclxuIFtuXVxyXG4gKE1hdGgvZmxvb3IgKCogKE1hdGgvcmFuZG9tKSBuKSkpXHJcbiJ9IHs6c3ltIGFjbG9uZSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBqYXZhc2NyaXB0IGFycmF5LCBjbG9uZWQgZnJvbSB0aGUgcGFzc2VkIGluIGFycmF5IiwgOmFyZ2xpc3RzIChbYXJyXSl9LCA6c291cmNlICIoZGVmblxyXG4gYWNsb25lXHJcbiBcIlJldHVybnMgYSBqYXZhc2NyaXB0IGFycmF5LCBjbG9uZWQgZnJvbSB0aGUgcGFzc2VkIGluIGFycmF5XCJcclxuIFthcnJdXHJcbiAobGV0XHJcbiAgW2xlbiAoYWxlbmd0aCBhcnIpIG5ldy1hcnIgKG1ha2UtYXJyYXkgbGVuKV1cclxuICAoZG90aW1lcyBbaSBsZW5dIChhc2V0IG5ldy1hcnIgaSAoYWdldCBhcnIgaSkpKVxyXG4gIG5ldy1hcnIpKVxyXG4ifSB7OnN5bSB2cmVzZXQhLCA6bWV0YSB7OmRvYyAiU2V0cyB0aGUgdmFsdWUgb2Ygdm9sYXRpbGUgdG8gbmV3dmFsIHdpdGhvdXQgcmVnYXJkIGZvciB0aGVcbiAgIGN1cnJlbnQgdmFsdWUuIFJldHVybnMgbmV3dmFsLiIsIDphcmdsaXN0cyAoW3ZvbCBuZXd2YWxdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB2cmVzZXQhXHJcbiBcIlNldHMgdGhlIHZhbHVlIG9mIHZvbGF0aWxlIHRvIG5ld3ZhbCB3aXRob3V0IHJlZ2FyZCBmb3IgdGhlXFxuICAgY3VycmVudCB2YWx1ZS4gUmV0dXJucyBuZXd2YWwuXCJcclxuIFt2b2wgbmV3dmFsXVxyXG4gKC12cmVzZXQhIHZvbCBuZXd2YWwpKVxyXG4ifSB7OnN5bSBjaHVuaywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtiXSl9LCA6c291cmNlICIoZGVmbiBjaHVuayBbYl0gKC5jaHVuayBiKSlcclxuIn0gezpzeW0gZGVjLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG51bWJlciBvbmUgbGVzcyB0aGFuIG51bS4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiBkZWMgXCJSZXR1cm5zIGEgbnVtYmVyIG9uZSBsZXNzIHRoYW4gbnVtLlwiIFt4XSAoLSB4IDEpKVxyXG4ifSB7OnN5bSBBUGVyc2lzdGVudFZlY3RvciwgOm1ldGEgezpkb2MgIk1hcmtlciBwcm90b2NvbCJ9LCA6bWV0aG9kcyAoKX0gezpzeW0gbWFwLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGxhenkgc2VxdWVuY2UgY29uc2lzdGluZyBvZiB0aGUgcmVzdWx0IG9mIGFwcGx5aW5nIGYgdG9cbiAgdGhlIHNldCBvZiBmaXJzdCBpdGVtcyBvZiBlYWNoIGNvbGwsIGZvbGxvd2VkIGJ5IGFwcGx5aW5nIGYgdG8gdGhlXG4gIHNldCBvZiBzZWNvbmQgaXRlbXMgaW4gZWFjaCBjb2xsLCB1bnRpbCBhbnkgb25lIG9mIHRoZSBjb2xscyBpc1xuICBleGhhdXN0ZWQuICBBbnkgcmVtYWluaW5nIGl0ZW1zIGluIG90aGVyIGNvbGxzIGFyZSBpZ25vcmVkLiBGdW5jdGlvblxuICBmIHNob3VsZCBhY2NlcHQgbnVtYmVyLW9mLWNvbGxzIGFyZ3VtZW50cy4gUmV0dXJucyBhIHRyYW5zZHVjZXIgd2hlblxuICBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLiIsIDphcmdsaXN0cyBbW2ZdIFtmIGNvbGxdIFtmIGMxIGMyXSBbZiBjMSBjMiBjM10gW2YgYzEgYzIgYzMgJiBjb2xsc11dfSwgOnNvdXJjZSAiKGRlZm5cclxuIG1hcFxyXG4gXCJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBjb25zaXN0aW5nIG9mIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgZiB0b1xcbiAgdGhlIHNldCBvZiBmaXJzdCBpdGVtcyBvZiBlYWNoIGNvbGwsIGZvbGxvd2VkIGJ5IGFwcGx5aW5nIGYgdG8gdGhlXFxuICBzZXQgb2Ygc2Vjb25kIGl0ZW1zIGluIGVhY2ggY29sbCwgdW50aWwgYW55IG9uZSBvZiB0aGUgY29sbHMgaXNcXG4gIGV4aGF1c3RlZC4gIEFueSByZW1haW5pbmcgaXRlbXMgaW4gb3RoZXIgY29sbHMgYXJlIGlnbm9yZWQuIEZ1bmN0aW9uXFxuICBmIHNob3VsZCBhY2NlcHQgbnVtYmVyLW9mLWNvbGxzIGFyZ3VtZW50cy4gUmV0dXJucyBhIHRyYW5zZHVjZXIgd2hlblxcbiAgbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC5cIlxyXG4gKFtmXVxyXG4gIChmblxyXG4gICBbcmZdXHJcbiAgIChmblxyXG4gICAgKFtdIChyZikpXHJcbiAgICAoW3Jlc3VsdF0gKHJmIHJlc3VsdCkpXHJcbiAgICAoW3Jlc3VsdCBpbnB1dF0gKHJmIHJlc3VsdCAoZiBpbnB1dCkpKVxyXG4gICAgKFtyZXN1bHQgaW5wdXQgJiBpbnB1dHNdIChyZiByZXN1bHQgKGFwcGx5IGYgaW5wdXQgaW5wdXRzKSkpKSkpXHJcbiAoW2YgY29sbF1cclxuICAobGF6eS1zZXFcclxuICAgKHdoZW4tbGV0XHJcbiAgICBbcyAoc2VxIGNvbGwpXVxyXG4gICAgKGlmXHJcbiAgICAgKGNodW5rZWQtc2VxPyBzKVxyXG4gICAgIChsZXRcclxuICAgICAgW2MgKGNodW5rLWZpcnN0IHMpIHNpemUgKGNvdW50IGMpIGIgKGNodW5rLWJ1ZmZlciBzaXplKV1cclxuICAgICAgKGRvdGltZXMgW2kgc2l6ZV0gKGNodW5rLWFwcGVuZCBiIChmICgtbnRoIGMgaSkpKSlcclxuICAgICAgKGNodW5rLWNvbnMgKGNodW5rIGIpIChtYXAgZiAoY2h1bmstcmVzdCBzKSkpKVxyXG4gICAgIChjb25zIChmIChmaXJzdCBzKSkgKG1hcCBmIChyZXN0IHMpKSkpKSkpXHJcbiAoW2YgYzEgYzJdXHJcbiAgKGxhenktc2VxXHJcbiAgIChsZXRcclxuICAgIFtzMSAoc2VxIGMxKSBzMiAoc2VxIGMyKV1cclxuICAgICh3aGVuXHJcbiAgICAgKGFuZCBzMSBzMilcclxuICAgICAoY29ucyAoZiAoZmlyc3QgczEpIChmaXJzdCBzMikpIChtYXAgZiAocmVzdCBzMSkgKHJlc3QgczIpKSkpKSkpXHJcbiAoW2YgYzEgYzIgYzNdXHJcbiAgKGxhenktc2VxXHJcbiAgIChsZXRcclxuICAgIFtzMSAoc2VxIGMxKSBzMiAoc2VxIGMyKSBzMyAoc2VxIGMzKV1cclxuICAgICh3aGVuXHJcbiAgICAgKGFuZCBzMSBzMiBzMylcclxuICAgICAoY29uc1xyXG4gICAgICAoZiAoZmlyc3QgczEpIChmaXJzdCBzMikgKGZpcnN0IHMzKSlcclxuICAgICAgKG1hcCBmIChyZXN0IHMxKSAocmVzdCBzMikgKHJlc3QgczMpKSkpKSkpXHJcbiAoW2YgYzEgYzIgYzMgJiBjb2xsc11cclxuICAobGV0XHJcbiAgIFtzdGVwXHJcbiAgICAoZm5cclxuICAgICBzdGVwXHJcbiAgICAgW2NzXVxyXG4gICAgIChsYXp5LXNlcVxyXG4gICAgICAobGV0XHJcbiAgICAgICBbc3MgKG1hcCBzZXEgY3MpXVxyXG4gICAgICAgKHdoZW5cclxuICAgICAgICAoZXZlcnk/IGlkZW50aXR5IHNzKVxyXG4gICAgICAgIChjb25zIChtYXAgZmlyc3Qgc3MpIChzdGVwIChtYXAgcmVzdCBzcykpKSkpKSldXHJcbiAgIChtYXBcclxuICAgIChmbiogW3AxX180MTQ0MCNdIChhcHBseSBmIHAxX180MTQ0MCMpKVxyXG4gICAgKHN0ZXAgKGNvbmogY29sbHMgYzMgYzIgYzEpKSkpKSlcclxuIn0gezpzeW0ganV4dCwgOm1ldGEgezpkb2MgIlRha2VzIGEgc2V0IG9mIGZ1bmN0aW9ucyBhbmQgcmV0dXJucyBhIGZuIHRoYXQgaXMgdGhlIGp1eHRhcG9zaXRpb25cbiAgb2YgdGhvc2UgZm5zLiAgVGhlIHJldHVybmVkIGZuIHRha2VzIGEgdmFyaWFibGUgbnVtYmVyIG9mIGFyZ3MsIGFuZFxuICByZXR1cm5zIGEgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHJlc3VsdCBvZiBhcHBseWluZyBlYWNoIGZuIHRvIHRoZVxuICBhcmdzIChsZWZ0LXRvLXJpZ2h0KS5cbiAgKChqdXh0IGEgYiBjKSB4KSA9PiBbKGEgeCkgKGIgeCkgKGMgeCldIiwgOmFyZ2xpc3RzIFtbZl0gW2YgZ10gW2YgZyBoXSBbZiBnIGggJiBmc11dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGp1eHRcclxuIFwiVGFrZXMgYSBzZXQgb2YgZnVuY3Rpb25zIGFuZCByZXR1cm5zIGEgZm4gdGhhdCBpcyB0aGUganV4dGFwb3NpdGlvblxcbiAgb2YgdGhvc2UgZm5zLiAgVGhlIHJldHVybmVkIGZuIHRha2VzIGEgdmFyaWFibGUgbnVtYmVyIG9mIGFyZ3MsIGFuZFxcbiAgcmV0dXJucyBhIHZlY3RvciBjb250YWluaW5nIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgZWFjaCBmbiB0byB0aGVcXG4gIGFyZ3MgKGxlZnQtdG8tcmlnaHQpLlxcbiAgKChqdXh0IGEgYiBjKSB4KSA9PiBbKGEgeCkgKGIgeCkgKGMgeCldXCJcclxuIChbZl1cclxuICAoZm5cclxuICAgKFtdICh2ZWN0b3IgKGYpKSlcclxuICAgKFt4XSAodmVjdG9yIChmIHgpKSlcclxuICAgKFt4IHldICh2ZWN0b3IgKGYgeCB5KSkpXHJcbiAgIChbeCB5IHpdICh2ZWN0b3IgKGYgeCB5IHopKSlcclxuICAgKFt4IHkgeiAmIGFyZ3NdICh2ZWN0b3IgKGFwcGx5IGYgeCB5IHogYXJncykpKSkpXHJcbiAoW2YgZ11cclxuICAoZm5cclxuICAgKFtdICh2ZWN0b3IgKGYpIChnKSkpXHJcbiAgIChbeF0gKHZlY3RvciAoZiB4KSAoZyB4KSkpXHJcbiAgIChbeCB5XSAodmVjdG9yIChmIHggeSkgKGcgeCB5KSkpXHJcbiAgIChbeCB5IHpdICh2ZWN0b3IgKGYgeCB5IHopIChnIHggeSB6KSkpXHJcbiAgIChbeCB5IHogJiBhcmdzXVxyXG4gICAgKHZlY3RvciAoYXBwbHkgZiB4IHkgeiBhcmdzKSAoYXBwbHkgZyB4IHkgeiBhcmdzKSkpKSlcclxuIChbZiBnIGhdXHJcbiAgKGZuXHJcbiAgIChbXSAodmVjdG9yIChmKSAoZykgKGgpKSlcclxuICAgKFt4XSAodmVjdG9yIChmIHgpIChnIHgpIChoIHgpKSlcclxuICAgKFt4IHldICh2ZWN0b3IgKGYgeCB5KSAoZyB4IHkpIChoIHggeSkpKVxyXG4gICAoW3ggeSB6XSAodmVjdG9yIChmIHggeSB6KSAoZyB4IHkgeikgKGggeCB5IHopKSlcclxuICAgKFt4IHkgeiAmIGFyZ3NdXHJcbiAgICAodmVjdG9yXHJcbiAgICAgKGFwcGx5IGYgeCB5IHogYXJncylcclxuICAgICAoYXBwbHkgZyB4IHkgeiBhcmdzKVxyXG4gICAgIChhcHBseSBoIHggeSB6IGFyZ3MpKSkpKVxyXG4gKFtmIGcgaCAmIGZzXVxyXG4gIChsZXRcclxuICAgW2ZzIChsaXN0KiBmIGcgaCBmcyldXHJcbiAgIChmblxyXG4gICAgKFtdXHJcbiAgICAgKHJlZHVjZVxyXG4gICAgICAoZm4qIFtwMV9fNDE0NTYjIHAyX180MTQ1NyNdIChjb25qIHAxX180MTQ1NiMgKHAyX180MTQ1NyMpKSlcclxuICAgICAgW11cclxuICAgICAgZnMpKVxyXG4gICAgKFt4XVxyXG4gICAgIChyZWR1Y2VcclxuICAgICAgKGZuKiBbcDFfXzQxNDU4IyBwMl9fNDE0NTkjXSAoY29uaiBwMV9fNDE0NTgjIChwMl9fNDE0NTkjIHgpKSlcclxuICAgICAgW11cclxuICAgICAgZnMpKVxyXG4gICAgKFt4IHldXHJcbiAgICAgKHJlZHVjZVxyXG4gICAgICAoZm4qIFtwMV9fNDE0NjAjIHAyX180MTQ2MSNdIChjb25qIHAxX180MTQ2MCMgKHAyX180MTQ2MSMgeCB5KSkpXHJcbiAgICAgIFtdXHJcbiAgICAgIGZzKSlcclxuICAgIChbeCB5IHpdXHJcbiAgICAgKHJlZHVjZVxyXG4gICAgICAoZm4qXHJcbiAgICAgICBbcDFfXzQxNDYyIyBwMl9fNDE0NjMjXVxyXG4gICAgICAgKGNvbmogcDFfXzQxNDYyIyAocDJfXzQxNDYzIyB4IHkgeikpKVxyXG4gICAgICBbXVxyXG4gICAgICBmcykpXHJcbiAgICAoW3ggeSB6ICYgYXJnc11cclxuICAgICAocmVkdWNlXHJcbiAgICAgIChmbipcclxuICAgICAgIFtwMV9fNDE0NjQjIHAyX180MTQ2NSNdXHJcbiAgICAgICAoY29uaiBwMV9fNDE0NjQjIChhcHBseSBwMl9fNDE0NjUjIHggeSB6IGFyZ3MpKSlcclxuICAgICAgW11cclxuICAgICAgZnMpKSkpKSlcclxuIn0gezpzeW0gPCwgOm1ldGEgezpkb2MgIlJldHVybnMgbm9uLW5pbCBpZiBudW1zIGFyZSBpbiBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgb3JkZXIsXG4gIG90aGVyd2lzZSBmYWxzZS4iLCA6YXJnbGlzdHMgW1t4XSBbeCB5XSBbeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIDxcclxuIFwiUmV0dXJucyBub24tbmlsIGlmIG51bXMgYXJlIGluIG1vbm90b25pY2FsbHkgaW5jcmVhc2luZyBvcmRlcixcXG4gIG90aGVyd2lzZSBmYWxzZS5cIlxyXG4gKFt4XSB0cnVlKVxyXG4gKFt4IHldIChjbGpzLmNvcmUvPCB4IHkpKVxyXG4gKFt4IHkgJiBtb3JlXVxyXG4gIChpZlxyXG4gICAoY2xqcy5jb3JlLzwgeCB5KVxyXG4gICAoaWZcclxuICAgIChuZXh0IG1vcmUpXHJcbiAgICAocmVjdXIgeSAoZmlyc3QgbW9yZSkgKG5leHQgbW9yZSkpXHJcbiAgICAoY2xqcy5jb3JlLzwgeSAoZmlyc3QgbW9yZSkpKVxyXG4gICBmYWxzZSkpKVxyXG4ifSB7OnN5bSAqZXZhbCosIDptZXRhIHs6ZG9jICJSdW50aW1lIGVudmlyb25tZW50cyBtYXkgcHJvdmlkZSBhIHdheSB0byBldmFsdWF0ZSBDbG9qdXJlU2NyaXB0XG4gIGZvcm1zLiBXaGF0ZXZlciBmdW5jdGlvbiAqZXZhbCogaXMgYm91bmQgdG8gd2lsbCBiZSBwYXNzZWQgYW55IGZvcm1zIHdoaWNoXG4gIHNob3VsZCBiZSBldmFsdWF0ZWQuIn0sIDpzb3VyY2UgIihkZWZvbmNlXHJcbiAqZXZhbCpcclxuIChmbiBbX10gKHRocm93IChqcy9FcnJvci4gXCJjbGpzLmNvcmUvKmV2YWwqIG5vdCBib3VuZFwiKSkpKVxyXG4ifSB7OnN5bSB0ZXN0LCA6bWV0YSB7OmRvYyAidGVzdCBbdl0gZmluZHMgZm4gYXQga2V5IDp0ZXN0IGluIHZhciBtZXRhZGF0YSBhbmQgY2FsbHMgaXQsXG4gIHByZXN1bWluZyBmYWlsdXJlIHdpbGwgdGhyb3cgZXhjZXB0aW9uIiwgOmFyZ2xpc3RzIChbdl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHRlc3RcclxuIFwidGVzdCBbdl0gZmluZHMgZm4gYXQga2V5IDp0ZXN0IGluIHZhciBtZXRhZGF0YSBhbmQgY2FsbHMgaXQsXFxuICBwcmVzdW1pbmcgZmFpbHVyZSB3aWxsIHRocm93IGV4Y2VwdGlvblwiXHJcbiBbdl1cclxuIChsZXQgW2YgKC4tY2xqcyRsYW5nJHRlc3QgdildIChpZiBmIChkbyAoZikgOm9rKSA6bm8tdGVzdCkpKVxyXG4ifSB7OnN5bSByZXN0LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHBvc3NpYmx5IGVtcHR5IHNlcSBvZiB0aGUgaXRlbXMgYWZ0ZXIgdGhlIGZpcnN0LiBDYWxscyBzZXEgb24gaXRzXG4gIGFyZ3VtZW50LiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiByZXN0XHJcbiBcIlJldHVybnMgYSBwb3NzaWJseSBlbXB0eSBzZXEgb2YgdGhlIGl0ZW1zIGFmdGVyIHRoZSBmaXJzdC4gQ2FsbHMgc2VxIG9uIGl0c1xcbiAgYXJndW1lbnQuXCJcclxuIFtjb2xsXVxyXG4gKGlmLW5vdFxyXG4gIChuaWw/IGNvbGwpXHJcbiAgKGlmXHJcbiAgIChpbXBsZW1lbnRzPyBJU2VxIGNvbGwpXHJcbiAgICgtcmVzdCBjb2xsKVxyXG4gICAobGV0IFtzIChzZXEgY29sbCldIChpZiBzICgtcmVzdCBzKSAoKSkpKVxyXG4gICgpKSlcclxuIn0gezpzeW0gZXgtZGF0YSwgOm1ldGEgezpkb2MgIlJldHVybnMgZXhjZXB0aW9uIGRhdGEgKGEgbWFwKSBpZiBleCBpcyBhbiBFeGNlcHRpb25JbmZvLlxuICBPdGhlcndpc2UgcmV0dXJucyBuaWwuIiwgOmFyZ2xpc3RzIChbZXhdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBleC1kYXRhXHJcbiBcIlJldHVybnMgZXhjZXB0aW9uIGRhdGEgKGEgbWFwKSBpZiBleCBpcyBhbiBFeGNlcHRpb25JbmZvLlxcbiAgT3RoZXJ3aXNlIHJldHVybnMgbmlsLlwiXHJcbiBbZXhdXHJcbiAod2hlbiAoaW5zdGFuY2U/IEV4Y2VwdGlvbkluZm8gZXgpICguLWRhdGEgZXgpKSlcclxuIn0gezpzeW0gLWRyb3AtZmlyc3QsIDptZXRhIHs6ZG9jICJSZXR1cm4gYSBuZXcgY2h1bmsgb2YgY29sbCB3aXRoIHRoZSBmaXJzdCBpdGVtIHJlbW92ZWQuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnByb3RvY29sIElDaHVua30gezpzeW0gaXNhPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiAoPSBjaGlsZCBwYXJlbnQpLCBvciBjaGlsZCBpcyBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGRlcml2ZWQgZnJvbVxuICBwYXJlbnQsIGVpdGhlciB2aWEgYSBKYXZhU2NyaXB0IHR5cGUgaW5oZXJpdGFuY2UgcmVsYXRpb25zaGlwIG9yIGFcbiAgcmVsYXRpb25zaGlwIGVzdGFibGlzaGVkIHZpYSBkZXJpdmUuIGggbXVzdCBiZSBhIGhpZXJhcmNoeSBvYnRhaW5lZFxuICBmcm9tIG1ha2UtaGllcmFyY2h5LCBpZiBub3Qgc3VwcGxpZWQgZGVmYXVsdHMgdG8gdGhlIGdsb2JhbFxuICBoaWVyYXJjaHkiLCA6YXJnbGlzdHMgW1tjaGlsZCBwYXJlbnRdIFtoIGNoaWxkIHBhcmVudF1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGlzYT9cclxuIFwiUmV0dXJucyB0cnVlIGlmICg9IGNoaWxkIHBhcmVudCksIG9yIGNoaWxkIGlzIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgZGVyaXZlZCBmcm9tXFxuICBwYXJlbnQsIGVpdGhlciB2aWEgYSBKYXZhU2NyaXB0IHR5cGUgaW5oZXJpdGFuY2UgcmVsYXRpb25zaGlwIG9yIGFcXG4gIHJlbGF0aW9uc2hpcCBlc3RhYmxpc2hlZCB2aWEgZGVyaXZlLiBoIG11c3QgYmUgYSBoaWVyYXJjaHkgb2J0YWluZWRcXG4gIGZyb20gbWFrZS1oaWVyYXJjaHksIGlmIG5vdCBzdXBwbGllZCBkZWZhdWx0cyB0byB0aGUgZ2xvYmFsXFxuICBoaWVyYXJjaHlcIlxyXG4gKFtjaGlsZCBwYXJlbnRdIChpc2E/IEAoZ2V0LWdsb2JhbC1oaWVyYXJjaHkpIGNoaWxkIHBhcmVudCkpXHJcbiAoW2ggY2hpbGQgcGFyZW50XVxyXG4gIChvclxyXG4gICAoPSBjaGlsZCBwYXJlbnQpXHJcbiAgIChjb250YWlucz8gKCg6YW5jZXN0b3JzIGgpIGNoaWxkKSBwYXJlbnQpXHJcbiAgIChhbmRcclxuICAgICh2ZWN0b3I/IHBhcmVudClcclxuICAgICh2ZWN0b3I/IGNoaWxkKVxyXG4gICAgKD09IChjb3VudCBwYXJlbnQpIChjb3VudCBjaGlsZCkpXHJcbiAgICAobG9vcFxyXG4gICAgIFtyZXQgdHJ1ZSBpIDBdXHJcbiAgICAgKGlmXHJcbiAgICAgIChvciAobm90IHJldCkgKD09IGkgKGNvdW50IHBhcmVudCkpKVxyXG4gICAgICByZXRcclxuICAgICAgKHJlY3VyIChpc2E/IGggKGNoaWxkIGkpIChwYXJlbnQgaSkpIChpbmMgaSkpKSkpKSkpXHJcbiJ9IHs6c3ltIGJvb2xlYW4/LCA6bWV0YSB7OmRvYyAiUmV0dXJuIHRydWUgaWYgeCBpcyBhIEJvb2xlYW4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxyXG4gYm9vbGVhbj9cclxuIFwiUmV0dXJuIHRydWUgaWYgeCBpcyBhIEJvb2xlYW5cIlxyXG4gW3hdXHJcbiAob3IgKGNsanMuY29yZS90cnVlPyB4KSAoY2xqcy5jb3JlL2ZhbHNlPyB4KSkpXHJcbiJ9IHs6c3ltIC1jbG9uZSwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYSBjbG9uZSBvZiB2YWx1ZS4iLCA6YXJnbGlzdHMgKFt2YWx1ZV0pfSwgOnByb3RvY29sIElDbG9uZWFibGV9IHs6c3ltIG11bmdlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW25hbWVdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBtdW5nZVxyXG4gW25hbWVdXHJcbiAobGV0XHJcbiAgW25hbWUnXHJcbiAgIChtdW5nZS1zdHIgKHN0ciBuYW1lKSlcclxuICAgbmFtZSdcclxuICAgKGNvbmRcclxuICAgIChpZGVudGljYWw/IG5hbWUnIFwiLi5cIilcclxuICAgIFwiX0RPVF9fRE9UX1wiXHJcbiAgICAoanMtcmVzZXJ2ZWQ/IG5hbWUnKVxyXG4gICAgKHN0ciBuYW1lJyBcIiRcIilcclxuICAgIDplbHNlXHJcbiAgICBuYW1lJyldXHJcbiAgKGlmIChzeW1ib2w/IG5hbWUpIChzeW1ib2wgbmFtZScpIG5hbWUnKSkpXHJcbiJ9IHs6c3ltIERFTVVOR0VfTUFQLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxyXG4gREVNVU5HRV9NQVBcclxuICNqcyB7XCJfUkJSQUNFX1wiIFwifVwiLCBcIl9DT0xPTl9cIiBcIjpcIiwgXCJfQkFOR19cIiBcIiFcIiwgXCJfUU1BUktfXCIgXCI/XCIsIFwiX0JTTEFTSF9cIiBcIlxcXFxcXFxcXCIsIFwiX1NMQVNIX1wiIFwiL1wiLCBcIl9QRVJDRU5UX1wiIFwiJVwiLCBcIl9QTFVTX1wiIFwiK1wiLCBcIl9TSEFSUF9cIiBcIiNcIiwgXCJfTEJSQUNFX1wiIFwie1wiLCBcIl9CQVJfXCIgXCJ8XCIsIFwiX0xCUkFDS19cIiBcIltcIiwgXCJfRVFfXCIgXCI9XCIsIFwiX1wiIFwiLVwiLCBcIl9USUxERV9cIiBcIn5cIiwgXCJfUkJSQUNLX1wiIFwiXVwiLCBcIl9HVF9cIiBcIj5cIiwgXCJfU0lOR0xFUVVPVEVfXCIgXCInXCIsIFwiX0NJUkNBX1wiIFwiQFwiLCBcIl9BTVBFUlNBTkRfXCIgXCImXCIsIFwiX0RPVUJMRVFVT1RFX1wiIFwiXFxcXFxcXCJcIiwgXCJfQ0FSRVRfXCIgXCJeXCIsIFwiX0xUX1wiIFwiPFwiLCBcIl9TVEFSX1wiIFwiKlwifSlcclxuIn0gezpzeW0gcmUtc2VxLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2Ygc3VjY2Vzc2l2ZSBtYXRjaGVzIG9mIHJlIGluIHMuIiwgOmFyZ2xpc3RzIChbcmUgc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlLXNlcVxyXG4gXCJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiBzdWNjZXNzaXZlIG1hdGNoZXMgb2YgcmUgaW4gcy5cIlxyXG4gW3JlIHNdXHJcbiAoaWZcclxuICAoc3RyaW5nPyBzKVxyXG4gIChyZS1zZXEqIHJlIHMpXHJcbiAgKHRocm93IChqcy9UeXBlRXJyb3IuIFwicmUtc2VxIG11c3QgbWF0Y2ggYWdhaW5zdCBhIHN0cmluZy5cIikpKSlcclxuIn0gezpzeW0gY2hhcj8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgeCBpcyBhIEphdmFTY3JpcHQgc3RyaW5nIG9mIGxlbmd0aCBvbmUuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGNoYXI/XHJcbiBcIlJldHVybnMgdHJ1ZSBpZiB4IGlzIGEgSmF2YVNjcmlwdCBzdHJpbmcgb2YgbGVuZ3RoIG9uZS5cIlxyXG4gW3hdXHJcbiAoYW5kIChzdHJpbmc/IHgpICg9PSAxICguLWxlbmd0aCB4KSkpKVxyXG4ifSB7OnN5bSBtYWtlLWhpZXJhcmNoeSwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYSBoaWVyYXJjaHkgb2JqZWN0IGZvciB1c2Ugd2l0aCBkZXJpdmUsIGlzYT8gZXRjLiIsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIG1ha2UtaGllcmFyY2h5XHJcbiBcIkNyZWF0ZXMgYSBoaWVyYXJjaHkgb2JqZWN0IGZvciB1c2Ugd2l0aCBkZXJpdmUsIGlzYT8gZXRjLlwiXHJcbiBbXVxyXG4gezpwYXJlbnRzIHt9LCA6ZGVzY2VuZGFudHMge30sIDphbmNlc3RvcnMge319KVxyXG4ifSB7OnN5bSBQUk9UT0NPTF9TRU5USU5FTCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZvbmNlIFBST1RPQ09MX1NFTlRJTkVMICNqcyB7fSlcclxuIn0gezpzeW0gLXJlZHVjZSwgOm1ldGEgezpkb2MgImYgc2hvdWxkIGJlIGEgZnVuY3Rpb24gb2YgMiBhcmd1bWVudHMuIElmIHN0YXJ0IGlzIG5vdCBzdXBwbGllZCxcbiAgICAgcmV0dXJucyB0aGUgcmVzdWx0IG9mIGFwcGx5aW5nIGYgdG8gdGhlIGZpcnN0IDIgaXRlbXMgaW4gY29sbCwgdGhlblxuICAgICBhcHBseWluZyBmIHRvIHRoYXQgcmVzdWx0IGFuZCB0aGUgM3JkIGl0ZW0sIGV0Yy4iLCA6YXJnbGlzdHMgKFtjb2xsIGZdIFtjb2xsIGYgc3RhcnRdKX0sIDpwcm90b2NvbCBJUmVkdWNlfSB7OnN5bSAtY291bnQsIDptZXRhIHs6ZG9jICJDYWxjdWxhdGVzIHRoZSBjb3VudCBvZiBjb2xsIGluIGNvbnN0YW50IHRpbWUuIFVzZWQgYnkgY2xqcy5jb3JlL2NvdW50LiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpwcm90b2NvbCBJQ291bnRlZH0gezpzeW0gc3dhcC12YWxzISwgOm1ldGEgezpkb2MgIkF0b21pY2FsbHkgc3dhcHMgdGhlIHZhbHVlIG9mIGF0b20gdG8gYmU6XG4gIChhcHBseSBmIGN1cnJlbnQtdmFsdWUtb2YtYXRvbSBhcmdzKS4gTm90ZSB0aGF0IGYgbWF5IGJlIGNhbGxlZFxuICBtdWx0aXBsZSB0aW1lcywgYW5kIHRodXMgc2hvdWxkIGJlIGZyZWUgb2Ygc2lkZSBlZmZlY3RzLlxuICBSZXR1cm5zIFtvbGQgbmV3XSwgdGhlIHZhbHVlIG9mIHRoZSBhdG9tIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIHN3YXAuIiwgOmFyZ2xpc3RzIFtbYSBmXSBbYSBmIHhdIFthIGYgeCB5XSBbYSBmIHggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBzd2FwLXZhbHMhXHJcbiBcIkF0b21pY2FsbHkgc3dhcHMgdGhlIHZhbHVlIG9mIGF0b20gdG8gYmU6XFxuICAoYXBwbHkgZiBjdXJyZW50LXZhbHVlLW9mLWF0b20gYXJncykuIE5vdGUgdGhhdCBmIG1heSBiZSBjYWxsZWRcXG4gIG11bHRpcGxlIHRpbWVzLCBhbmQgdGh1cyBzaG91bGQgYmUgZnJlZSBvZiBzaWRlIGVmZmVjdHMuXFxuICBSZXR1cm5zIFtvbGQgbmV3XSwgdGhlIHZhbHVlIG9mIHRoZSBhdG9tIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIHN3YXAuXCJcclxuIHs6YWRkZWQgXCIxLjlcIn1cclxuIChbYSBmXSAocmVzZXQtdmFscyEgYSAoZiAoLi1zdGF0ZSBhKSkpKVxyXG4gKFthIGYgeF0gKHJlc2V0LXZhbHMhIGEgKGYgKC4tc3RhdGUgYSkgeCkpKVxyXG4gKFthIGYgeCB5XSAocmVzZXQtdmFscyEgYSAoZiAoLi1zdGF0ZSBhKSB4IHkpKSlcclxuIChbYSBmIHggeSAmIG1vcmVdIChyZXNldC12YWxzISBhIChhcHBseSBmICguLXN0YXRlIGEpIHggeSBtb3JlKSkpKVxyXG4ifSB7OnN5bSBrZWVwLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2YgdGhlIG5vbi1uaWwgcmVzdWx0cyBvZiAoZiBpdGVtKS4gTm90ZSxcbiAgdGhpcyBtZWFucyBmYWxzZSByZXR1cm4gdmFsdWVzIHdpbGwgYmUgaW5jbHVkZWQuICBmIG11c3QgYmUgZnJlZSBvZlxuICBzaWRlLWVmZmVjdHMuICBSZXR1cm5zIGEgdHJhbnNkdWNlciB3aGVuIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuIiwgOmFyZ2xpc3RzIFtbZl0gW2YgY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGtlZXBcclxuIFwiUmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2YgdGhlIG5vbi1uaWwgcmVzdWx0cyBvZiAoZiBpdGVtKS4gTm90ZSxcXG4gIHRoaXMgbWVhbnMgZmFsc2UgcmV0dXJuIHZhbHVlcyB3aWxsIGJlIGluY2x1ZGVkLiAgZiBtdXN0IGJlIGZyZWUgb2ZcXG4gIHNpZGUtZWZmZWN0cy4gIFJldHVybnMgYSB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC5cIlxyXG4gKFtmXVxyXG4gIChmblxyXG4gICBbcmZdXHJcbiAgIChmblxyXG4gICAgKFtdIChyZikpXHJcbiAgICAoW3Jlc3VsdF0gKHJmIHJlc3VsdCkpXHJcbiAgICAoW3Jlc3VsdCBpbnB1dF1cclxuICAgICAobGV0IFt2IChmIGlucHV0KV0gKGlmIChuaWw/IHYpIHJlc3VsdCAocmYgcmVzdWx0IHYpKSkpKSkpXHJcbiAoW2YgY29sbF1cclxuICAobGF6eS1zZXFcclxuICAgKHdoZW4tbGV0XHJcbiAgICBbcyAoc2VxIGNvbGwpXVxyXG4gICAgKGlmXHJcbiAgICAgKGNodW5rZWQtc2VxPyBzKVxyXG4gICAgIChsZXRcclxuICAgICAgW2MgKGNodW5rLWZpcnN0IHMpIHNpemUgKGNvdW50IGMpIGIgKGNodW5rLWJ1ZmZlciBzaXplKV1cclxuICAgICAgKGRvdGltZXNcclxuICAgICAgIFtpIHNpemVdXHJcbiAgICAgICAobGV0IFt4IChmICgtbnRoIGMgaSkpXSAod2hlbi1ub3QgKG5pbD8geCkgKGNodW5rLWFwcGVuZCBiIHgpKSkpXHJcbiAgICAgIChjaHVuay1jb25zIChjaHVuayBiKSAoa2VlcCBmIChjaHVuay1yZXN0IHMpKSkpXHJcbiAgICAgKGxldFxyXG4gICAgICBbeCAoZiAoZmlyc3QgcykpXVxyXG4gICAgICAoaWYgKG5pbD8geCkgKGtlZXAgZiAocmVzdCBzKSkgKGNvbnMgeCAoa2VlcCBmIChyZXN0IHMpKSkpKSkpKSkpXHJcbiJ9IHs6c3ltIGNoYXIsIDptZXRhIHs6ZG9jICJDb2VyY2UgdG8gY2hhciIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBjaGFyXHJcbiBcIkNvZXJjZSB0byBjaGFyXCJcclxuIFt4XVxyXG4gKGNvbmRcclxuICAobnVtYmVyPyB4KVxyXG4gICguZnJvbUNoYXJDb2RlIGpzL1N0cmluZyB4KVxyXG4gIChhbmQgKHN0cmluZz8geCkgKD09ICguLWxlbmd0aCB4KSAxKSlcclxuICB4XHJcbiAgOmVsc2VcclxuICAodGhyb3dcclxuICAgKGpzL0Vycm9yLiBcIkFyZ3VtZW50IHRvIGNoYXIgbXVzdCBiZSBhIGNoYXJhY3RlciBvciBudW1iZXJcIikpKSlcclxuIn0gezpzeW0gbWFwY2F0LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgcmVzdWx0IG9mIGFwcGx5aW5nIGNvbmNhdCB0byB0aGUgcmVzdWx0IG9mIGFwcGx5aW5nIG1hcFxuICB0byBmIGFuZCBjb2xscy4gIFRodXMgZnVuY3Rpb24gZiBzaG91bGQgcmV0dXJuIGEgY29sbGVjdGlvbi4gUmV0dXJuc1xuICBhIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9ucyBhcmUgcHJvdmlkZWQiLCA6YXJnbGlzdHMgW1tmXSBbZiAmIGNvbGxzXV19LCA6c291cmNlICIoZGVmblxyXG4gbWFwY2F0XHJcbiBcIlJldHVybnMgdGhlIHJlc3VsdCBvZiBhcHBseWluZyBjb25jYXQgdG8gdGhlIHJlc3VsdCBvZiBhcHBseWluZyBtYXBcXG4gIHRvIGYgYW5kIGNvbGxzLiAgVGh1cyBmdW5jdGlvbiBmIHNob3VsZCByZXR1cm4gYSBjb2xsZWN0aW9uLiBSZXR1cm5zXFxuICBhIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9ucyBhcmUgcHJvdmlkZWRcIlxyXG4gezphZGRlZCBcIjEuMFwiLCA6c3RhdGljIHRydWV9XHJcbiAoW2ZdIChjb21wIChtYXAgZikgY2F0KSlcclxuIChbZiAmIGNvbGxzXSAoYXBwbHkgY29uY2F0IChhcHBseSBtYXAgZiBjb2xscykpKSlcclxuIn0gezpzeW0gdW5jaGVja2VkLWxvbmcsIDptZXRhIHs6ZG9jICJDb2VyY2UgdG8gbG9uZyBieSBzdHJpcHBpbmcgZGVjaW1hbCBwbGFjZXMuIElkZW50aWNhbCB0byBgaW50Jy4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxyXG4gdW5jaGVja2VkLWxvbmdcclxuIFwiQ29lcmNlIHRvIGxvbmcgYnkgc3RyaXBwaW5nIGRlY2ltYWwgcGxhY2VzLiBJZGVudGljYWwgdG8gYGludCcuXCJcclxuIFt4XVxyXG4gKGZpeCB4KSlcclxuIn0gezpzeW0gbTMtc2VlZCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgbTMtc2VlZCAwKVxyXG4ifSB7OnN5bSBzb21lPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB4IGlzIG5vdCBuaWwsIGZhbHNlIG90aGVyd2lzZS4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxyXG4gc29tZT9cclxuIFwiUmV0dXJucyB0cnVlIGlmIHggaXMgbm90IG5pbCwgZmFsc2Ugb3RoZXJ3aXNlLlwiXHJcbiBbeF1cclxuIChub3QgKG5pbD8geCkpKVxyXG4ifSB7OnN5bSB1bmNoZWNrZWQtbmVnYXRlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIHVuY2hlY2tlZC1uZWdhdGUgW3hdIChjbGpzLmNvcmUvdW5jaGVja2VkLW5lZ2F0ZSB4KSlcclxuIn0gezpzeW0gcmVtb3ZlLXRhcCwgOm1ldGEgezpkb2MgIlJlbW92ZSBmIGZyb20gdGhlIHRhcCBzZXQuIiwgOmFyZ2xpc3RzIChbZl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlbW92ZS10YXBcclxuIFwiUmVtb3ZlIGYgZnJvbSB0aGUgdGFwIHNldC5cIlxyXG4gW2ZdXHJcbiAobWF5YmUtaW5pdC10YXBzZXQpXHJcbiAoc3dhcCEgdGFwc2V0IGRpc2ogZilcclxuIG5pbClcclxuIn0gezpzeW0gc3ltYm9sLWlkZW50aWNhbD8sIDptZXRhIHs6ZG9jICJFZmZpY2llbnQgdGVzdCB0byBkZXRlcm1pbmUgdGhhdCB0d28gc3ltYm9scyBhcmUgaWRlbnRpY2FsLiIsIDphcmdsaXN0cyAoW3ggeV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHN5bWJvbC1pZGVudGljYWw/XHJcbiBcIkVmZmljaWVudCB0ZXN0IHRvIGRldGVybWluZSB0aGF0IHR3byBzeW1ib2xzIGFyZSBpZGVudGljYWwuXCJcclxuIFt4IHldXHJcbiAoaWZcclxuICAoaWRlbnRpY2FsPyB4IHkpXHJcbiAgdHJ1ZVxyXG4gIChpZlxyXG4gICAoYW5kIChzeW1ib2w/IHgpIChzeW1ib2w/IHkpKVxyXG4gICAoaWRlbnRpY2FsPyAoLi1zdHIgeCkgKC4tc3RyIHkpKVxyXG4gICBmYWxzZSkpKVxyXG4ifSB7OnN5bSAqY29tbWFuZC1saW5lLWFyZ3MqLCA6bWV0YSB7OmRvYyAiQSBzZXF1ZW5jZSBvZiB0aGUgc3VwcGxpZWQgY29tbWFuZCBsaW5lIGFyZ3VtZW50cywgb3IgbmlsIGlmXG4gIG5vbmUgd2VyZSBzdXBwbGllZCJ9LCA6c291cmNlICIoZGVmICpjb21tYW5kLWxpbmUtYXJncyogbmlsKVxyXG4ifSB7OnN5bSByZXZlcnNlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHNlcSBvZiB0aGUgaXRlbXMgaW4gY29sbCBpbiByZXZlcnNlIG9yZGVyLiBOb3QgbGF6eS4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxyXG4gcmV2ZXJzZVxyXG4gXCJSZXR1cm5zIGEgc2VxIG9mIHRoZSBpdGVtcyBpbiBjb2xsIGluIHJldmVyc2Ugb3JkZXIuIE5vdCBsYXp5LlwiXHJcbiBbY29sbF1cclxuIChpZiAocmV2ZXJzaWJsZT8gY29sbCkgKG9yIChyc2VxIGNvbGwpICgpKSAocmVkdWNlIGNvbmogKCkgY29sbCkpKVxyXG4ifSB7OnN5bSBpbnN0PywgOm1ldGEgezpkb2MgIlJldHVybiB0cnVlIGlmIHggc2F0aXNmaWVzIEluc3QiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiBpbnN0PyBcIlJldHVybiB0cnVlIGlmIHggc2F0aXNmaWVzIEluc3RcIiBbeF0gKHNhdGlzZmllcz8gSW5zdCB4KSlcclxuIn0gezpzeW0gcmFuZ2UsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbGF6eSBzZXEgb2YgbnVtcyBmcm9tIHN0YXJ0IChpbmNsdXNpdmUpIHRvIGVuZFxuICAgKGV4Y2x1c2l2ZSksIGJ5IHN0ZXAsIHdoZXJlIHN0YXJ0IGRlZmF1bHRzIHRvIDAsIHN0ZXAgdG8gMSxcbiAgIGFuZCBlbmQgdG8gaW5maW5pdHkuIiwgOmFyZ2xpc3RzIFtbXSBbZW5kXSBbc3RhcnQgZW5kXSBbc3RhcnQgZW5kIHN0ZXBdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiByYW5nZVxyXG4gXCJSZXR1cm5zIGEgbGF6eSBzZXEgb2YgbnVtcyBmcm9tIHN0YXJ0IChpbmNsdXNpdmUpIHRvIGVuZFxcbiAgIChleGNsdXNpdmUpLCBieSBzdGVwLCB3aGVyZSBzdGFydCBkZWZhdWx0cyB0byAwLCBzdGVwIHRvIDEsXFxuICAgYW5kIGVuZCB0byBpbmZpbml0eS5cIlxyXG4gKFtdIChyYW5nZSAwICguLU1BWF9WQUxVRSBqcy9OdW1iZXIpIDEpKVxyXG4gKFtlbmRdIChyYW5nZSAwIGVuZCAxKSlcclxuIChbc3RhcnQgZW5kXSAocmFuZ2Ugc3RhcnQgZW5kIDEpKVxyXG4gKFtzdGFydCBlbmQgc3RlcF1cclxuICAoY29uZFxyXG4gICAocG9zPyBzdGVwKVxyXG4gICAoaWYgKDw9IGVuZCBzdGFydCkgKCkgKFJhbmdlLiBuaWwgc3RhcnQgZW5kIHN0ZXAgbmlsIG5pbCBuaWwpKVxyXG4gICAobmVnPyBzdGVwKVxyXG4gICAoaWYgKD49IGVuZCBzdGFydCkgKCkgKFJhbmdlLiBuaWwgc3RhcnQgZW5kIHN0ZXAgbmlsIG5pbCBuaWwpKVxyXG4gICA6ZWxzZVxyXG4gICAoaWYgKD09IGVuZCBzdGFydCkgKCkgKHJlcGVhdCBzdGFydCkpKSkpXHJcbiJ9IHs6c3ltIGJpdC1jb3VudCwgOm1ldGEgezpkb2MgIkNvdW50cyB0aGUgbnVtYmVyIG9mIGJpdHMgc2V0IGluIG4iLCA6YXJnbGlzdHMgKFt2XSl9LCA6c291cmNlICIoZGVmblxyXG4gYml0LWNvdW50XHJcbiBcIkNvdW50cyB0aGUgbnVtYmVyIG9mIGJpdHMgc2V0IGluIG5cIlxyXG4gW3ZdXHJcbiAobGV0XHJcbiAgW3ZcclxuICAgKC0gdiAoYml0LWFuZCAoYml0LXNoaWZ0LXJpZ2h0IHYgMSkgMTQzMTY1NTc2NSkpXHJcbiAgIHZcclxuICAgKCsgKGJpdC1hbmQgdiA4NTg5OTM0NTkpIChiaXQtYW5kIChiaXQtc2hpZnQtcmlnaHQgdiAyKSA4NTg5OTM0NTkpKV1cclxuICAoYml0LXNoaWZ0LXJpZ2h0XHJcbiAgICgqIChiaXQtYW5kICgrIHYgKGJpdC1zaGlmdC1yaWdodCB2IDQpKSAyNTI2NDUxMzUpIDE2ODQzMDA5KVxyXG4gICAyNCkpKVxyXG4ifSB7OnN5bSBzb3J0LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHNvcnRlZCBzZXF1ZW5jZSBvZiB0aGUgaXRlbXMgaW4gY29sbC4gQ29tcCBjYW4gYmVcbiAgIGJvb2xlYW4tdmFsdWVkIGNvbXBhcmlzb24gZnVuY3Rpb24sIG9yIGEgLS8wLysgdmFsdWVkIGNvbXBhcmF0b3IuXG4gICBDb21wIGRlZmF1bHRzIHRvIGNvbXBhcmUuIiwgOmFyZ2xpc3RzIFtbY29sbF0gW2NvbXAgY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIHNvcnRcclxuIFwiUmV0dXJucyBhIHNvcnRlZCBzZXF1ZW5jZSBvZiB0aGUgaXRlbXMgaW4gY29sbC4gQ29tcCBjYW4gYmVcXG4gICBib29sZWFuLXZhbHVlZCBjb21wYXJpc29uIGZ1bmN0aW9uLCBvciBhIC0vMC8rIHZhbHVlZCBjb21wYXJhdG9yLlxcbiAgIENvbXAgZGVmYXVsdHMgdG8gY29tcGFyZS5cIlxyXG4gKFtjb2xsXSAoc29ydCBjb21wYXJlIGNvbGwpKVxyXG4gKFtjb21wIGNvbGxdXHJcbiAgKGlmXHJcbiAgIChzZXEgY29sbClcclxuICAgKGxldFxyXG4gICAgW2EgKHRvLWFycmF5IGNvbGwpXVxyXG4gICAgKGdhcnJheS9zdGFibGVTb3J0IGEgKGZuLT5jb21wYXJhdG9yIGNvbXApKVxyXG4gICAgKHNlcSBhKSlcclxuICAgKCkpKSlcclxuIn0gezpzeW0gdW5jaGVja2VkLWluYy1pbnQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gdW5jaGVja2VkLWluYy1pbnQgW3hdIChjbGpzLmNvcmUvdW5jaGVja2VkLWluYy1pbnQgeCkpXHJcbiJ9IHs6c3ltIC1jb21wYXJlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG5lZ2F0aXZlIG51bWJlciwgemVybywgb3IgYSBwb3NpdGl2ZSBudW1iZXIgd2hlbiB4IGlzIGxvZ2ljYWxseVxuICAgICAnbGVzcyB0aGFuJywgJ2VxdWFsIHRvJywgb3IgJ2dyZWF0ZXIgdGhhbicgeS4iLCA6YXJnbGlzdHMgKFt4IHldKX0sIDpwcm90b2NvbCBJQ29tcGFyYWJsZX0gezpzeW0gbWFwLWluZGV4ZWQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBjb25zaXN0aW5nIG9mIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgZiB0byAwXG4gIGFuZCB0aGUgZmlyc3QgaXRlbSBvZiBjb2xsLCBmb2xsb3dlZCBieSBhcHBseWluZyBmIHRvIDEgYW5kIHRoZSBzZWNvbmRcbiAgaXRlbSBpbiBjb2xsLCBldGMsIHVudGlsIGNvbGwgaXMgZXhoYXVzdGVkLiBUaHVzIGZ1bmN0aW9uIGYgc2hvdWxkXG4gIGFjY2VwdCAyIGFyZ3VtZW50cywgaW5kZXggYW5kIGl0ZW0uIFJldHVybnMgYSBzdGF0ZWZ1bCB0cmFuc2R1Y2VyIHdoZW5cbiAgbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC4iLCA6YXJnbGlzdHMgW1tmXSBbZiBjb2xsXV19LCA6c291cmNlICIoZGVmblxyXG4gbWFwLWluZGV4ZWRcclxuIFwiUmV0dXJucyBhIGxhenkgc2VxdWVuY2UgY29uc2lzdGluZyBvZiB0aGUgcmVzdWx0IG9mIGFwcGx5aW5nIGYgdG8gMFxcbiAgYW5kIHRoZSBmaXJzdCBpdGVtIG9mIGNvbGwsIGZvbGxvd2VkIGJ5IGFwcGx5aW5nIGYgdG8gMSBhbmQgdGhlIHNlY29uZFxcbiAgaXRlbSBpbiBjb2xsLCBldGMsIHVudGlsIGNvbGwgaXMgZXhoYXVzdGVkLiBUaHVzIGZ1bmN0aW9uIGYgc2hvdWxkXFxuICBhY2NlcHQgMiBhcmd1bWVudHMsIGluZGV4IGFuZCBpdGVtLiBSZXR1cm5zIGEgc3RhdGVmdWwgdHJhbnNkdWNlciB3aGVuXFxuICBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLlwiXHJcbiAoW2ZdXHJcbiAgKGZuXHJcbiAgIFtyZl1cclxuICAgKGxldFxyXG4gICAgW2kgKHZvbGF0aWxlISAtMSldXHJcbiAgICAoZm5cclxuICAgICAoW10gKHJmKSlcclxuICAgICAoW3Jlc3VsdF0gKHJmIHJlc3VsdCkpXHJcbiAgICAgKFtyZXN1bHQgaW5wdXRdIChyZiByZXN1bHQgKGYgKHZzd2FwISBpIGluYykgaW5wdXQpKSkpKSkpXHJcbiAoW2YgY29sbF1cclxuICAobGV0Zm5cclxuICAgWyhtYXBpXHJcbiAgICAgW2lkeCBjb2xsXVxyXG4gICAgIChsYXp5LXNlcVxyXG4gICAgICAod2hlbi1sZXRcclxuICAgICAgIFtzIChzZXEgY29sbCldXHJcbiAgICAgICAoaWZcclxuICAgICAgICAoY2h1bmtlZC1zZXE/IHMpXHJcbiAgICAgICAgKGxldFxyXG4gICAgICAgICBbYyAoY2h1bmstZmlyc3Qgcykgc2l6ZSAoY291bnQgYykgYiAoY2h1bmstYnVmZmVyIHNpemUpXVxyXG4gICAgICAgICAoZG90aW1lcyBbaSBzaXplXSAoY2h1bmstYXBwZW5kIGIgKGYgKCsgaWR4IGkpICgtbnRoIGMgaSkpKSlcclxuICAgICAgICAgKGNodW5rLWNvbnMgKGNodW5rIGIpIChtYXBpICgrIGlkeCBzaXplKSAoY2h1bmstcmVzdCBzKSkpKVxyXG4gICAgICAgIChjb25zIChmIGlkeCAoZmlyc3QgcykpIChtYXBpIChpbmMgaWR4KSAocmVzdCBzKSkpKSkpKV1cclxuICAgKG1hcGkgMCBjb2xsKSkpKVxyXG4ifSB7OnN5bSBhcnJheS1saXN0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm4gYXJyYXktbGlzdCBbXSAoQXJyYXlMaXN0LiAoYXJyYXkpKSlcclxuIn0gezpzeW0gcmFuZC1udGgsIDptZXRhIHs6ZG9jICJSZXR1cm4gYSByYW5kb20gZWxlbWVudCBvZiB0aGUgKHNlcXVlbnRpYWwpIGNvbGxlY3Rpb24uIFdpbGwgaGF2ZVxuICB0aGUgc2FtZSBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3MgYXMgbnRoIGZvciB0aGUgZ2l2ZW5cbiAgY29sbGVjdGlvbi4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxyXG4gcmFuZC1udGhcclxuIFwiUmV0dXJuIGEgcmFuZG9tIGVsZW1lbnQgb2YgdGhlIChzZXF1ZW50aWFsKSBjb2xsZWN0aW9uLiBXaWxsIGhhdmVcXG4gIHRoZSBzYW1lIHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljcyBhcyBudGggZm9yIHRoZSBnaXZlblxcbiAgY29sbGVjdGlvbi5cIlxyXG4gW2NvbGxdXHJcbiAobnRoIGNvbGwgKHJhbmQtaW50IChjb3VudCBjb2xsKSkpKVxyXG4ifSB7OnN5bSBjb21wLCA6bWV0YSB7OmRvYyAiVGFrZXMgYSBzZXQgb2YgZnVuY3Rpb25zIGFuZCByZXR1cm5zIGEgZm4gdGhhdCBpcyB0aGUgY29tcG9zaXRpb25cbiAgb2YgdGhvc2UgZm5zLiAgVGhlIHJldHVybmVkIGZuIHRha2VzIGEgdmFyaWFibGUgbnVtYmVyIG9mIGFyZ3MsXG4gIGFwcGxpZXMgdGhlIHJpZ2h0bW9zdCBvZiBmbnMgdG8gdGhlIGFyZ3MsIHRoZSBuZXh0XG4gIGZuIChyaWdodC10by1sZWZ0KSB0byB0aGUgcmVzdWx0LCBldGMuIiwgOmFyZ2xpc3RzIFtbXSBbZl0gW2YgZ10gW2YgZyBoXSBbZjEgZjIgZjMgJiBmc11dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGNvbXBcclxuIFwiVGFrZXMgYSBzZXQgb2YgZnVuY3Rpb25zIGFuZCByZXR1cm5zIGEgZm4gdGhhdCBpcyB0aGUgY29tcG9zaXRpb25cXG4gIG9mIHRob3NlIGZucy4gIFRoZSByZXR1cm5lZCBmbiB0YWtlcyBhIHZhcmlhYmxlIG51bWJlciBvZiBhcmdzLFxcbiAgYXBwbGllcyB0aGUgcmlnaHRtb3N0IG9mIGZucyB0byB0aGUgYXJncywgdGhlIG5leHRcXG4gIGZuIChyaWdodC10by1sZWZ0KSB0byB0aGUgcmVzdWx0LCBldGMuXCJcclxuIChbXSBpZGVudGl0eSlcclxuIChbZl0gZilcclxuIChbZiBnXVxyXG4gIChmblxyXG4gICAoW10gKGYgKGcpKSlcclxuICAgKFt4XSAoZiAoZyB4KSkpXHJcbiAgIChbeCB5XSAoZiAoZyB4IHkpKSlcclxuICAgKFt4IHkgel0gKGYgKGcgeCB5IHopKSlcclxuICAgKFt4IHkgeiAmIGFyZ3NdIChmIChhcHBseSBnIHggeSB6IGFyZ3MpKSkpKVxyXG4gKFtmIGcgaF1cclxuICAoZm5cclxuICAgKFtdIChmIChnIChoKSkpKVxyXG4gICAoW3hdIChmIChnIChoIHgpKSkpXHJcbiAgIChbeCB5XSAoZiAoZyAoaCB4IHkpKSkpXHJcbiAgIChbeCB5IHpdIChmIChnIChoIHggeSB6KSkpKVxyXG4gICAoW3ggeSB6ICYgYXJnc10gKGYgKGcgKGFwcGx5IGggeCB5IHogYXJncykpKSkpKVxyXG4gKFtmMSBmMiBmMyAmIGZzXVxyXG4gIChsZXRcclxuICAgW2ZzIChyZXZlcnNlIChsaXN0KiBmMSBmMiBmMyBmcykpXVxyXG4gICAoZm5cclxuICAgIFsmIGFyZ3NdXHJcbiAgICAobG9vcFxyXG4gICAgIFtyZXQgKGFwcGx5IChmaXJzdCBmcykgYXJncykgZnMgKG5leHQgZnMpXVxyXG4gICAgIChpZiBmcyAocmVjdXIgKChmaXJzdCBmcykgcmV0KSAobmV4dCBmcykpIHJldCkpKSkpKVxyXG4ifSB7OnN5bSBhcnJheS1jaHVuaywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1thcnJdIFthcnIgb2ZmXSBbYXJyIG9mZiBlbmRdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBhcnJheS1jaHVua1xyXG4gKFthcnJdIChBcnJheUNodW5rLiBhcnIgMCAoYWxlbmd0aCBhcnIpKSlcclxuIChbYXJyIG9mZl0gKEFycmF5Q2h1bmsuIGFyciBvZmYgKGFsZW5ndGggYXJyKSkpXHJcbiAoW2FyciBvZmYgZW5kXSAoQXJyYXlDaHVuay4gYXJyIG9mZiBlbmQpKSlcclxuIn0gezpzeW0gZGlzcGF0Y2gtZm4sIDptZXRhIHs6ZG9jICJHaXZlbiBhIG11bHRpbWV0aG9kLCByZXR1cm4gaXQncyBkaXNwYXRjaC1mbi4iLCA6YXJnbGlzdHMgKFttdWx0aWZuXSl9LCA6c291cmNlICIoZGVmblxyXG4gZGlzcGF0Y2gtZm5cclxuIFwiR2l2ZW4gYSBtdWx0aW1ldGhvZCwgcmV0dXJuIGl0J3MgZGlzcGF0Y2gtZm4uXCJcclxuIFttdWx0aWZuXVxyXG4gKC1kaXNwYXRjaC1mbiBtdWx0aWZuKSlcclxuIn0gezpzeW0gYml0LXNoaWZ0LXJpZ2h0LXplcm8tZmlsbCwgOm1ldGEgezpkb2MgIkRFUFJFQ0FURUQ6IEJpdHdpc2Ugc2hpZnQgcmlnaHQgd2l0aCB6ZXJvIGZpbGwiLCA6YXJnbGlzdHMgKFt4IG5dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBiaXQtc2hpZnQtcmlnaHQtemVyby1maWxsXHJcbiBcIkRFUFJFQ0FURUQ6IEJpdHdpc2Ugc2hpZnQgcmlnaHQgd2l0aCB6ZXJvIGZpbGxcIlxyXG4gW3ggbl1cclxuIChjbGpzLmNvcmUvYml0LXNoaWZ0LXJpZ2h0LXplcm8tZmlsbCB4IG4pKVxyXG4ifSB7OnN5bSAtYXMtdHJhbnNpZW50LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG5ldywgdHJhbnNpZW50IHZlcnNpb24gb2YgdGhlIGNvbGxlY3Rpb24sIGluIGNvbnN0YW50IHRpbWUuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnByb3RvY29sIElFZGl0YWJsZUNvbGxlY3Rpb259IHs6c3ltIGRvcnVuLCA6bWV0YSB7OmRvYyAiV2hlbiBsYXp5IHNlcXVlbmNlcyBhcmUgcHJvZHVjZWQgdmlhIGZ1bmN0aW9ucyB0aGF0IGhhdmUgc2lkZVxuICBlZmZlY3RzLCBhbnkgZWZmZWN0cyBvdGhlciB0aGFuIHRob3NlIG5lZWRlZCB0byBwcm9kdWNlIHRoZSBmaXJzdFxuICBlbGVtZW50IGluIHRoZSBzZXEgZG8gbm90IG9jY3VyIHVudGlsIHRoZSBzZXEgaXMgY29uc3VtZWQuIGRvcnVuIGNhblxuICBiZSB1c2VkIHRvIGZvcmNlIGFueSBlZmZlY3RzLiBXYWxrcyB0aHJvdWdoIHRoZSBzdWNjZXNzaXZlIG5leHRzIG9mXG4gIHRoZSBzZXEsIGRvZXMgbm90IHJldGFpbiB0aGUgaGVhZCBhbmQgcmV0dXJucyBuaWwuIiwgOmFyZ2xpc3RzIFtbY29sbF0gW24gY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGRvcnVuXHJcbiBcIldoZW4gbGF6eSBzZXF1ZW5jZXMgYXJlIHByb2R1Y2VkIHZpYSBmdW5jdGlvbnMgdGhhdCBoYXZlIHNpZGVcXG4gIGVmZmVjdHMsIGFueSBlZmZlY3RzIG90aGVyIHRoYW4gdGhvc2UgbmVlZGVkIHRvIHByb2R1Y2UgdGhlIGZpcnN0XFxuICBlbGVtZW50IGluIHRoZSBzZXEgZG8gbm90IG9jY3VyIHVudGlsIHRoZSBzZXEgaXMgY29uc3VtZWQuIGRvcnVuIGNhblxcbiAgYmUgdXNlZCB0byBmb3JjZSBhbnkgZWZmZWN0cy4gV2Fsa3MgdGhyb3VnaCB0aGUgc3VjY2Vzc2l2ZSBuZXh0cyBvZlxcbiAgdGhlIHNlcSwgZG9lcyBub3QgcmV0YWluIHRoZSBoZWFkIGFuZCByZXR1cm5zIG5pbC5cIlxyXG4gKFtjb2xsXSAod2hlbi1sZXQgW3MgKHNlcSBjb2xsKV0gKHJlY3VyIChuZXh0IHMpKSkpXHJcbiAoW24gY29sbF1cclxuICAod2hlbiAoYW5kIChzZXEgY29sbCkgKHBvcz8gbikpIChyZWN1ciAoZGVjIG4pIChuZXh0IGNvbGwpKSkpKVxyXG4ifSB7OnN5bSBwci1zZXF1ZW50aWFsLXdyaXRlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt3cml0ZXIgcHJpbnQtb25lIGJlZ2luIHNlcCBlbmQgb3B0cyBjb2xsXSl9LCA6c291cmNlICIoZGVmblxyXG4gcHItc2VxdWVudGlhbC13cml0ZXJcclxuIFt3cml0ZXIgcHJpbnQtb25lIGJlZ2luIHNlcCBlbmQgb3B0cyBjb2xsXVxyXG4gKGJpbmRpbmdcclxuICBbKnByaW50LWxldmVsKiAod2hlbi1ub3QgKG5pbD8gKnByaW50LWxldmVsKikgKGRlYyAqcHJpbnQtbGV2ZWwqKSldXHJcbiAgKGlmXHJcbiAgIChhbmQgKG5vdCAobmlsPyAqcHJpbnQtbGV2ZWwqKSkgKG5lZz8gKnByaW50LWxldmVsKikpXHJcbiAgICgtd3JpdGUgd3JpdGVyIFwiI1wiKVxyXG4gICAoZG9cclxuICAgICgtd3JpdGUgd3JpdGVyIGJlZ2luKVxyXG4gICAgKGlmXHJcbiAgICAgKHplcm8/ICg6cHJpbnQtbGVuZ3RoIG9wdHMpKVxyXG4gICAgICh3aGVuIChzZXEgY29sbCkgKC13cml0ZSB3cml0ZXIgKG9yICg6bW9yZS1tYXJrZXIgb3B0cykgXCIuLi5cIikpKVxyXG4gICAgIChkb1xyXG4gICAgICAod2hlbiAoc2VxIGNvbGwpIChwcmludC1vbmUgKGZpcnN0IGNvbGwpIHdyaXRlciBvcHRzKSlcclxuICAgICAgKGxvb3BcclxuICAgICAgIFtjb2xsIChuZXh0IGNvbGwpIG4gKGRlYyAoOnByaW50LWxlbmd0aCBvcHRzKSldXHJcbiAgICAgICAoaWZcclxuICAgICAgICAoYW5kIGNvbGwgKG9yIChuaWw/IG4pIChub3QgKHplcm8/IG4pKSkpXHJcbiAgICAgICAgKGRvXHJcbiAgICAgICAgICgtd3JpdGUgd3JpdGVyIHNlcClcclxuICAgICAgICAgKHByaW50LW9uZSAoZmlyc3QgY29sbCkgd3JpdGVyIG9wdHMpXHJcbiAgICAgICAgIChyZWN1ciAobmV4dCBjb2xsKSAoZGVjIG4pKSlcclxuICAgICAgICAod2hlblxyXG4gICAgICAgICAoYW5kIChzZXEgY29sbCkgKHplcm8/IG4pKVxyXG4gICAgICAgICAoLXdyaXRlIHdyaXRlciBzZXApXHJcbiAgICAgICAgICgtd3JpdGUgd3JpdGVyIChvciAoOm1vcmUtbWFya2VyIG9wdHMpIFwiLi4uXCIpKSkpKSkpXHJcbiAgICAoLXdyaXRlIHdyaXRlciBlbmQpKSkpKVxyXG4ifSB7OnN5bSBzaW1wbGUtc3ltYm9sPywgOm1ldGEgezpkb2MgIlJldHVybiB0cnVlIGlmIHggaXMgYSBzeW1ib2wgd2l0aG91dCBhIG5hbWVzcGFjZSIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBzaW1wbGUtc3ltYm9sP1xyXG4gXCJSZXR1cm4gdHJ1ZSBpZiB4IGlzIGEgc3ltYm9sIHdpdGhvdXQgYSBuYW1lc3BhY2VcIlxyXG4gW3hdXHJcbiAoYW5kIChzeW1ib2w/IHgpIChuaWw/IChuYW1lc3BhY2UgeCkpKSlcclxuIn0gezpzeW0gSUluZGV4ZWQsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgY29sbGVjdGlvbnMgdG8gcHJvdmlkZSBpbmRleGVkLWJhc2VkIGFjY2VzcyB0byB0aGVpciBpdGVtcy4ifSwgOm1ldGhvZHMgKC1udGgpfSB7OnN5bSBkaXNqLCA6bWV0YSB7OmRvYyAiZGlzaltvaW5dLiBSZXR1cm5zIGEgbmV3IHNldCBvZiB0aGUgc2FtZSAoaGFzaGVkL3NvcnRlZCkgdHlwZSwgdGhhdFxuICBkb2VzIG5vdCBjb250YWluIGtleShzKS4iLCA6YXJnbGlzdHMgW1tjb2xsXSBbY29sbCBrXSBbY29sbCBrICYga3NdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBkaXNqXHJcbiBcImRpc2pbb2luXS4gUmV0dXJucyBhIG5ldyBzZXQgb2YgdGhlIHNhbWUgKGhhc2hlZC9zb3J0ZWQpIHR5cGUsIHRoYXRcXG4gIGRvZXMgbm90IGNvbnRhaW4ga2V5KHMpLlwiXHJcbiAoW2NvbGxdIGNvbGwpXHJcbiAoW2NvbGwga10gKHdoZW4tbm90IChuaWw/IGNvbGwpICgtZGlzam9pbiBjb2xsIGspKSlcclxuIChbY29sbCBrICYga3NdXHJcbiAgKHdoZW4tbm90XHJcbiAgIChuaWw/IGNvbGwpXHJcbiAgIChsZXRcclxuICAgIFtyZXQgKGRpc2ogY29sbCBrKV1cclxuICAgIChpZiBrcyAocmVjdXIgcmV0IChmaXJzdCBrcykgKG5leHQga3MpKSByZXQpKSkpKVxyXG4ifSB7OnN5bSBJUHJpbnRXaXRoV3JpdGVyLCA6bWV0YSB7OmRvYyAiVGhlIG9sZCBJUHJpbnRhYmxlIHByb3RvY29sJ3MgaW1wbGVtZW50YXRpb24gY29uc2lzdGVkIG9mIGJ1aWxkaW5nIGEgZ2lhbnRcbiAgIGxpc3Qgb2Ygc3RyaW5ncyB0byBjb25jYXRlbmF0ZS4gIFRoaXMgaW52b2x2ZWQgbG90cyBvZiBjb25jYXQgY2FsbHMsXG4gICBpbnRlcm1lZGlhdGUgdmVjdG9ycywgYW5kIGxhenktc2VxcywgYW5kIHdhcyB2ZXJ5IHNsb3cgaW4gc29tZSBvbGRlciBKU1xuICAgZW5naW5lcy4gIElQcmludFdpdGhXcml0ZXIgaW1wbGVtZW50cyBwcmludGluZyB2aWEgdGhlIElXcml0ZXIgcHJvdG9jb2wsIHNvIGl0XG4gICBiZSBpbXBsZW1lbnRlZCBlZmZpY2llbnRseSBpbiB0ZXJtcyBvZiBlLmcuIGEgU3RyaW5nQnVmZmVyIGFwcGVuZC4ifSwgOm1ldGhvZHMgKC1wci13cml0ZXIpfSB7OnN5bSBJVmVjdG9yLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFkZGluZyB2ZWN0b3IgZnVuY3Rpb25hbGl0eSB0byBjb2xsZWN0aW9ucy4ifSwgOm1ldGhvZHMgKC1hc3NvYy1uKX0gezpzeW0gSUl0ZXJhYmxlLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGl0ZXJhdGluZyBvdmVyIGEgY29sbGVjdGlvbi4ifSwgOm1ldGhvZHMgKC1pdGVyYXRvcil9IHs6c3ltIGV2YWwsIDptZXRhIHs6ZG9jICJFdmFsdWF0ZXMgdGhlIGZvcm0gZGF0YSBzdHJ1Y3R1cmUgKG5vdCB0ZXh0ISkgYW5kIHJldHVybnMgdGhlIHJlc3VsdC5cbiAgRGVsZWdhdGVzIHRvIGNsanMuY29yZS8qZXZhbCouIEludGVuZGVkIGZvciB1c2UgaW4gc2VsZi1ob3N0ZWQgQ2xvanVyZVNjcmlwdCxcbiAgd2hpY2ggc2V0cyB1cCBhbiBpbXBsZW1lbnRhdGlvbiBvZiBjbGpzLmNvcmUvKmV2YWwqIGZvciB0aGF0IGVudmlyb25tZW50LiIsIDphcmdsaXN0cyAoW2Zvcm1dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBldmFsXHJcbiBcIkV2YWx1YXRlcyB0aGUgZm9ybSBkYXRhIHN0cnVjdHVyZSAobm90IHRleHQhKSBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LlxcbiAgRGVsZWdhdGVzIHRvIGNsanMuY29yZS8qZXZhbCouIEludGVuZGVkIGZvciB1c2UgaW4gc2VsZi1ob3N0ZWQgQ2xvanVyZVNjcmlwdCxcXG4gIHdoaWNoIHNldHMgdXAgYW4gaW1wbGVtZW50YXRpb24gb2YgY2xqcy5jb3JlLypldmFsKiBmb3IgdGhhdCBlbnZpcm9ubWVudC5cIlxyXG4gW2Zvcm1dXHJcbiAoKmV2YWwqIGZvcm0pKVxyXG4ifSB7OnN5bSBjb25zLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG5ldyBzZXEgd2hlcmUgeCBpcyB0aGUgZmlyc3QgZWxlbWVudCBhbmQgY29sbCBpcyB0aGUgcmVzdC4iLCA6YXJnbGlzdHMgKFt4IGNvbGxdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBjb25zXHJcbiBcIlJldHVybnMgYSBuZXcgc2VxIHdoZXJlIHggaXMgdGhlIGZpcnN0IGVsZW1lbnQgYW5kIGNvbGwgaXMgdGhlIHJlc3QuXCJcclxuIFt4IGNvbGxdXHJcbiAoY29uZFxyXG4gIChuaWw/IGNvbGwpXHJcbiAgKExpc3QuIG5pbCB4IG5pbCAxIG5pbClcclxuICAoaW1wbGVtZW50cz8gSVNlcSBjb2xsKVxyXG4gIChDb25zLiBuaWwgeCBjb2xsIG5pbClcclxuICA6ZGVmYXVsdFxyXG4gIChDb25zLiBuaWwgeCAoc2VxIGNvbGwpIG5pbCkpKVxyXG4ifSB7OnN5bSBmbG9hdHMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gZmxvYXRzIFt4XSB4KVxyXG4ifSB7OnN5bSBwb3M/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIG51bSBpcyBncmVhdGVyIHRoYW4gemVybywgZWxzZSBmYWxzZSIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBwb3M/XHJcbiBcIlJldHVybnMgdHJ1ZSBpZiBudW0gaXMgZ3JlYXRlciB0aGFuIHplcm8sIGVsc2UgZmFsc2VcIlxyXG4gW3hdXHJcbiAoY2xqcy5jb3JlL3Bvcz8geCkpXHJcbiJ9IHs6c3ltIGZuaWwsIDptZXRhIHs6ZG9jICJUYWtlcyBhIGZ1bmN0aW9uIGYsIGFuZCByZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBjYWxscyBmLCByZXBsYWNpbmdcbiAgYSBuaWwgZmlyc3QgYXJndW1lbnQgdG8gZiB3aXRoIHRoZSBzdXBwbGllZCB2YWx1ZSB4LiBIaWdoZXIgYXJpdHlcbiAgdmVyc2lvbnMgY2FuIHJlcGxhY2UgYXJndW1lbnRzIGluIHRoZSBzZWNvbmQgYW5kIHRoaXJkXG4gIHBvc2l0aW9ucyAoeSwgeikuIE5vdGUgdGhhdCB0aGUgZnVuY3Rpb24gZiBjYW4gdGFrZSBhbnkgbnVtYmVyIG9mXG4gIGFyZ3VtZW50cywgbm90IGp1c3QgdGhlIG9uZShzKSBiZWluZyBuaWwtcGF0Y2hlZC4iLCA6YXJnbGlzdHMgW1tmIHhdIFtmIHggeV0gW2YgeCB5IHpdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBmbmlsXHJcbiBcIlRha2VzIGEgZnVuY3Rpb24gZiwgYW5kIHJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGNhbGxzIGYsIHJlcGxhY2luZ1xcbiAgYSBuaWwgZmlyc3QgYXJndW1lbnQgdG8gZiB3aXRoIHRoZSBzdXBwbGllZCB2YWx1ZSB4LiBIaWdoZXIgYXJpdHlcXG4gIHZlcnNpb25zIGNhbiByZXBsYWNlIGFyZ3VtZW50cyBpbiB0aGUgc2Vjb25kIGFuZCB0aGlyZFxcbiAgcG9zaXRpb25zICh5LCB6KS4gTm90ZSB0aGF0IHRoZSBmdW5jdGlvbiBmIGNhbiB0YWtlIGFueSBudW1iZXIgb2ZcXG4gIGFyZ3VtZW50cywgbm90IGp1c3QgdGhlIG9uZShzKSBiZWluZyBuaWwtcGF0Y2hlZC5cIlxyXG4gKFtmIHhdXHJcbiAgKGZuXHJcbiAgIChbYV0gKGYgKGlmIChuaWw/IGEpIHggYSkpKVxyXG4gICAoW2EgYl0gKGYgKGlmIChuaWw/IGEpIHggYSkgYikpXHJcbiAgIChbYSBiIGNdIChmIChpZiAobmlsPyBhKSB4IGEpIGIgYykpXHJcbiAgIChbYSBiIGMgJiBkc10gKGFwcGx5IGYgKGlmIChuaWw/IGEpIHggYSkgYiBjIGRzKSkpKVxyXG4gKFtmIHggeV1cclxuICAoZm5cclxuICAgKFthIGJdIChmIChpZiAobmlsPyBhKSB4IGEpIChpZiAobmlsPyBiKSB5IGIpKSlcclxuICAgKFthIGIgY10gKGYgKGlmIChuaWw/IGEpIHggYSkgKGlmIChuaWw/IGIpIHkgYikgYykpXHJcbiAgIChbYSBiIGMgJiBkc10gKGFwcGx5IGYgKGlmIChuaWw/IGEpIHggYSkgKGlmIChuaWw/IGIpIHkgYikgYyBkcykpKSlcclxuIChbZiB4IHkgel1cclxuICAoZm5cclxuICAgKFthIGJdIChmIChpZiAobmlsPyBhKSB4IGEpIChpZiAobmlsPyBiKSB5IGIpKSlcclxuICAgKFthIGIgY10gKGYgKGlmIChuaWw/IGEpIHggYSkgKGlmIChuaWw/IGIpIHkgYikgKGlmIChuaWw/IGMpIHogYykpKVxyXG4gICAoW2EgYiBjICYgZHNdXHJcbiAgICAoYXBwbHlcclxuICAgICBmXHJcbiAgICAgKGlmIChuaWw/IGEpIHggYSlcclxuICAgICAoaWYgKG5pbD8gYikgeSBiKVxyXG4gICAgIChpZiAobmlsPyBjKSB6IGMpXHJcbiAgICAgZHMpKSkpKVxyXG4ifSB7OnN5bSBtZXJnZS13aXRoLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG1hcCB0aGF0IGNvbnNpc3RzIG9mIHRoZSByZXN0IG9mIHRoZSBtYXBzIGNvbmotZWQgb250b1xuICB0aGUgZmlyc3QuICBJZiBhIGtleSBvY2N1cnMgaW4gbW9yZSB0aGFuIG9uZSBtYXAsIHRoZSBtYXBwaW5nKHMpXG4gIGZyb20gdGhlIGxhdHRlciAobGVmdC10by1yaWdodCkgd2lsbCBiZSBjb21iaW5lZCB3aXRoIHRoZSBtYXBwaW5nIGluXG4gIHRoZSByZXN1bHQgYnkgY2FsbGluZyAoZiB2YWwtaW4tcmVzdWx0IHZhbC1pbi1sYXR0ZXIpLiIsIDphcmdsaXN0cyAoW2YgJiBtYXBzXSl9LCA6c291cmNlICIoZGVmblxyXG4gbWVyZ2Utd2l0aFxyXG4gXCJSZXR1cm5zIGEgbWFwIHRoYXQgY29uc2lzdHMgb2YgdGhlIHJlc3Qgb2YgdGhlIG1hcHMgY29uai1lZCBvbnRvXFxuICB0aGUgZmlyc3QuICBJZiBhIGtleSBvY2N1cnMgaW4gbW9yZSB0aGFuIG9uZSBtYXAsIHRoZSBtYXBwaW5nKHMpXFxuICBmcm9tIHRoZSBsYXR0ZXIgKGxlZnQtdG8tcmlnaHQpIHdpbGwgYmUgY29tYmluZWQgd2l0aCB0aGUgbWFwcGluZyBpblxcbiAgdGhlIHJlc3VsdCBieSBjYWxsaW5nIChmIHZhbC1pbi1yZXN1bHQgdmFsLWluLWxhdHRlcikuXCJcclxuIFtmICYgbWFwc11cclxuICh3aGVuXHJcbiAgKHNvbWUgaWRlbnRpdHkgbWFwcylcclxuICAobGV0XHJcbiAgIFttZXJnZS1lbnRyeVxyXG4gICAgKGZuXHJcbiAgICAgW20gZV1cclxuICAgICAobGV0XHJcbiAgICAgIFtrIChrZXkgZSkgdiAodmFsIGUpXVxyXG4gICAgICAoaWYgKGNvbnRhaW5zPyBtIGspIChhc3NvYyBtIGsgKGYgKGdldCBtIGspIHYpKSAoYXNzb2MgbSBrIHYpKSkpXHJcbiAgICBtZXJnZTJcclxuICAgIChmbiBbbTEgbTJdIChyZWR1Y2UgbWVyZ2UtZW50cnkgKG9yIG0xIHt9KSAoc2VxIG0yKSkpXVxyXG4gICAocmVkdWNlIG1lcmdlMiBtYXBzKSkpKVxyXG4ifSB7OnN5bSBudGhyZXN0LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbnRoIHJlc3Qgb2YgY29sbCwgY29sbCB3aGVuIG4gaXMgMC4iLCA6YXJnbGlzdHMgKFtjb2xsIG5dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBudGhyZXN0XHJcbiBcIlJldHVybnMgdGhlIG50aCByZXN0IG9mIGNvbGwsIGNvbGwgd2hlbiBuIGlzIDAuXCJcclxuIFtjb2xsIG5dXHJcbiAobG9vcFxyXG4gIFtuIG4geHMgY29sbF1cclxuICAoaWYtbGV0IFt4cyAoYW5kIChwb3M/IG4pIChzZXEgeHMpKV0gKHJlY3VyIChkZWMgbikgKHJlc3QgeHMpKSB4cykpKVxyXG4ifSB7OnN5bSAqd2Fybi1vbi1pbmZlciosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICp3YXJuLW9uLWluZmVyKiBmYWxzZSlcclxuIn0gezpzeW0gLWZpbmQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBtYXAgZW50cnkgZm9yIGtleSwgb3IgbmlsIGlmIGtleSBub3QgcHJlc2VudC4iLCA6YXJnbGlzdHMgKFtjb2xsIGtdKX0sIDpwcm90b2NvbCBJRmluZH0gezpzeW0gc2VxdWVudGlhbD8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgY29sbCBzYXRpc2ZpZXMgSVNlcXVlbnRpYWwiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxyXG4gc2VxdWVudGlhbD9cclxuIFwiUmV0dXJucyB0cnVlIGlmIGNvbGwgc2F0aXNmaWVzIElTZXF1ZW50aWFsXCJcclxuIFt4XVxyXG4gKHNhdGlzZmllcz8gSVNlcXVlbnRpYWwgeCkpXHJcbiJ9IHs6c3ltIG0zLW1peC1IMSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtoMSBrMV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIG0zLW1peC1IMVxyXG4gW2gxIGsxXVxyXG4gKGludFxyXG4gICgtPlxyXG4gICAoaW50IGgxKVxyXG4gICAoYml0LXhvciAoaW50IGsxKSlcclxuICAgKGludC1yb3RhdGUtbGVmdCAxMylcclxuICAgKGltdWwgNSlcclxuICAgKCsgKGludCAzODY0MjkyMTk2KSkpKSlcclxuIn0gezpzeW0gcHJpbS1zZXEsIDptZXRhIHs6ZG9jICJDcmVhdGUgc2VxIGZyb20gYSBwcmltaXRpdmUgSmF2YVNjcmlwdCBBcnJheS1saWtlLiIsIDphcmdsaXN0cyBbW3ByaW1dIFtwcmltIGldXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBwcmltLXNlcVxyXG4gXCJDcmVhdGUgc2VxIGZyb20gYSBwcmltaXRpdmUgSmF2YVNjcmlwdCBBcnJheS1saWtlLlwiXHJcbiAoW3ByaW1dIChwcmltLXNlcSBwcmltIDApKVxyXG4gKFtwcmltIGldICh3aGVuICg8IGkgKGFsZW5ndGggcHJpbSkpIChJbmRleGVkU2VxLiBwcmltIGkgbmlsKSkpKVxyXG4ifSB7OnN5bSAqcHJpbnQtbGV2ZWwqLCA6bWV0YSB7OmRvYyAiKnByaW50LWxldmVsKiBjb250cm9scyBob3cgbWFueSBsZXZlbHMgZGVlcCB0aGUgcHJpbnRlciB3aWxsXG4gIHByaW50IG5lc3RlZCBvYmplY3RzLiBJZiBpdCBpcyBib3VuZCB0byBsb2dpY2FsIGZhbHNlLCB0aGVyZSBpcyBub1xuICBsaW1pdC4gT3RoZXJ3aXNlLCBpdCBtdXN0IGJlIGJvdW5kIHRvIGFuIGludGVnZXIgaW5kaWNhdGluZyB0aGUgbWF4aW11bVxuICBsZXZlbCB0byBwcmludC4gRWFjaCBhcmd1bWVudCB0byBwcmludCBpcyBhdCBsZXZlbCAwOyBpZiBhbiBhcmd1bWVudCBpcyBhXG4gIGNvbGxlY3Rpb24sIGl0cyBpdGVtcyBhcmUgYXQgbGV2ZWwgMTsgYW5kIHNvIG9uLiBJZiBhbiBvYmplY3QgaXMgYVxuICBjb2xsZWN0aW9uIGFuZCBpcyBhdCBhIGxldmVsIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgdmFsdWUgYm91bmQgdG9cbiAgKnByaW50LWxldmVsKiwgdGhlIHByaW50ZXIgcHJpbnRzICcjJyB0byByZXByZXNlbnQgaXQuIFRoZSByb290IGJpbmRpbmdcbiAgaXMgbmlsIGluZGljYXRpbmcgbm8gbGltaXQuIn0sIDpzb3VyY2UgIihkZWYgKnByaW50LWxldmVsKiBuaWwpXHJcbiJ9IHs6c3ltIHNodWZmbGUsIDptZXRhIHs6ZG9jICJSZXR1cm4gYSByYW5kb20gcGVybXV0YXRpb24gb2YgY29sbCIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBzaHVmZmxlXHJcbiBcIlJldHVybiBhIHJhbmRvbSBwZXJtdXRhdGlvbiBvZiBjb2xsXCJcclxuIFtjb2xsXVxyXG4gKGxldCBbYSAodG8tYXJyYXkgY29sbCldIChnYXJyYXkvc2h1ZmZsZSBhKSAodmVjIGEpKSlcclxuIn0gezpzeW0gaGFzaC1rZXl3b3JkLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2tdKX0sIDpzb3VyY2UgIihkZWZuIGhhc2gta2V5d29yZCBba10gKGludCAoKyAoaGFzaC1zeW1ib2wgaykgMjY1NDQzNTc2OSkpKVxyXG4ifSB7OnN5bSBmaW5kLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbWFwIGVudHJ5IGZvciBrZXksIG9yIG5pbCBpZiBrZXkgbm90IHByZXNlbnQuIiwgOmFyZ2xpc3RzIChbY29sbCBrXSl9LCA6c291cmNlICIoZGVmblxyXG4gZmluZFxyXG4gXCJSZXR1cm5zIHRoZSBtYXAgZW50cnkgZm9yIGtleSwgb3IgbmlsIGlmIGtleSBub3QgcHJlc2VudC5cIlxyXG4gW2NvbGwga11cclxuIChpZlxyXG4gIChpZmluZD8gY29sbClcclxuICAoLWZpbmQgY29sbCBrKVxyXG4gICh3aGVuXHJcbiAgIChhbmQgKG5vdCAobmlsPyBjb2xsKSkgKGFzc29jaWF0aXZlPyBjb2xsKSAoY29udGFpbnM/IGNvbGwgaykpXHJcbiAgIChNYXBFbnRyeS4gayAoZ2V0IGNvbGwgaykgbmlsKSkpKVxyXG4ifSB7OnN5bSBhbGVuZ3RoLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZSBhcnJheS4gV29ya3Mgb24gYXJyYXlzIG9mIGFsbCB0eXBlcy4iLCA6YXJnbGlzdHMgKFthcnJheV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGFsZW5ndGhcclxuIFwiUmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZSBhcnJheS4gV29ya3Mgb24gYXJyYXlzIG9mIGFsbCB0eXBlcy5cIlxyXG4gW2FycmF5XVxyXG4gKGNsanMuY29yZS9hbGVuZ3RoIGFycmF5KSlcclxuIn0gezpzeW0gYml0LXhvciwgOm1ldGEgezpkb2MgIkJpdHdpc2UgZXhjbHVzaXZlIG9yIiwgOmFyZ2xpc3RzIFtbeCB5XSBbeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGJpdC14b3JcclxuIFwiQml0d2lzZSBleGNsdXNpdmUgb3JcIlxyXG4gKFt4IHldIChjbGpzLmNvcmUvYml0LXhvciB4IHkpKVxyXG4gKFt4IHkgJiBtb3JlXSAocmVkdWNlIGJpdC14b3IgKGNsanMuY29yZS9iaXQteG9yIHggeSkgbW9yZSkpKVxyXG4ifSB7OnN5bSB1bnNpZ25lZC1iaXQtc2hpZnQtcmlnaHQsIDptZXRhIHs6ZG9jICJCaXR3aXNlIHNoaWZ0IHJpZ2h0IHdpdGggemVybyBmaWxsIiwgOmFyZ2xpc3RzIChbeCBuXSl9LCA6c291cmNlICIoZGVmblxyXG4gdW5zaWduZWQtYml0LXNoaWZ0LXJpZ2h0XHJcbiBcIkJpdHdpc2Ugc2hpZnQgcmlnaHQgd2l0aCB6ZXJvIGZpbGxcIlxyXG4gW3ggbl1cclxuIChjbGpzLmNvcmUvdW5zaWduZWQtYml0LXNoaWZ0LXJpZ2h0IHggbikpXHJcbiJ9IHs6c3ltIG5lZz8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgbnVtIGlzIGxlc3MgdGhhbiB6ZXJvLCBlbHNlIGZhbHNlIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIG5lZz9cclxuIFwiUmV0dXJucyB0cnVlIGlmIG51bSBpcyBsZXNzIHRoYW4gemVybywgZWxzZSBmYWxzZVwiXHJcbiBbeF1cclxuIChjbGpzLmNvcmUvbmVnPyB4KSlcclxuIn0gezpzeW0gLXJlbW92ZS1tZXRob2QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbWYgZGlzcGF0Y2gtdmFsXSl9LCA6cHJvdG9jb2wgSU11bHRpRm59IHs6c3ltIGpzLWludm9rZSwgOm1ldGEgezpkb2MgIkludm9rZSBKYXZhU2NyaXB0IG9iamVjdCBtZXRob2QgdmlhIHN0cmluZy4gTmVlZGVkIHdoZW4gdGhlXG4gIHN0cmluZyBpcyBub3QgYSB2YWxpZCB1bnF1b3RlZCBwcm9wZXJ0eSBuYW1lLiIsIDphcmdsaXN0cyAoW29iaiBzICYgYXJnc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGpzLWludm9rZVxyXG4gXCJJbnZva2UgSmF2YVNjcmlwdCBvYmplY3QgbWV0aG9kIHZpYSBzdHJpbmcuIE5lZWRlZCB3aGVuIHRoZVxcbiAgc3RyaW5nIGlzIG5vdCBhIHZhbGlkIHVucXVvdGVkIHByb3BlcnR5IG5hbWUuXCJcclxuIFtvYmogcyAmIGFyZ3NdXHJcbiAoLmFwcGx5ICh1bmNoZWNrZWQtZ2V0IG9iaiBzKSBvYmogKGludG8tYXJyYXkgYXJncykpKVxyXG4ifSB7OnN5bSBtMy1taXgtSzEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbazFdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBtMy1taXgtSzFcclxuIFtrMV1cclxuICgtPiAoaW50IGsxKSAoaW11bCBtMy1DMSkgKGludC1yb3RhdGUtbGVmdCAxNSkgKGltdWwgbTMtQzIpKSlcclxuIn0gezpzeW0gdW5jaGVja2VkLWZsb2F0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIHVuY2hlY2tlZC1mbG9hdCBbeF0geClcclxuIn0gezpzeW0gdW5kZWZpbmVkPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB4IGlkZW50aWNhbCB0byB0aGUgSmF2YVNjcmlwdCB1bmRlZmluZWQgdmFsdWUuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHVuZGVmaW5lZD9cclxuIFwiUmV0dXJucyB0cnVlIGlmIHggaWRlbnRpY2FsIHRvIHRoZSBKYXZhU2NyaXB0IHVuZGVmaW5lZCB2YWx1ZS5cIlxyXG4gW3hdXHJcbiAoY2xqcy5jb3JlL3VuZGVmaW5lZD8geCkpXHJcbiJ9IHs6c3ltIElNZXRhLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFjY2Vzc2luZyB0aGUgbWV0YWRhdGEgb2YgYW4gb2JqZWN0LiJ9LCA6bWV0aG9kcyAoLW1ldGEpfSB7OnN5bSByZWR1Y2VkPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB4IGlzIHRoZSByZXN1bHQgb2YgYSBjYWxsIHRvIHJlZHVjZWQiLCA6YXJnbGlzdHMgKFtyXSl9LCA6c291cmNlICIoZGVmblxyXG4gcmVkdWNlZD9cclxuIFwiUmV0dXJucyB0cnVlIGlmIHggaXMgdGhlIHJlc3VsdCBvZiBhIGNhbGwgdG8gcmVkdWNlZFwiXHJcbiBbcl1cclxuIChpbnN0YW5jZT8gUmVkdWNlZCByKSlcclxuIn0gezpzeW0gZGlzaiEsIDptZXRhIHs6ZG9jICJkaXNqW29pbl0uIFJldHVybnMgYSB0cmFuc2llbnQgc2V0IG9mIHRoZSBzYW1lIChoYXNoZWQvc29ydGVkKSB0eXBlLCB0aGF0XG4gIGRvZXMgbm90IGNvbnRhaW4ga2V5KHMpLiIsIDphcmdsaXN0cyBbW3Rjb2xsIHZhbF0gW3Rjb2xsIHZhbCAmIHZhbHNdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBkaXNqIVxyXG4gXCJkaXNqW29pbl0uIFJldHVybnMgYSB0cmFuc2llbnQgc2V0IG9mIHRoZSBzYW1lIChoYXNoZWQvc29ydGVkKSB0eXBlLCB0aGF0XFxuICBkb2VzIG5vdCBjb250YWluIGtleShzKS5cIlxyXG4gKFt0Y29sbCB2YWxdICgtZGlzam9pbiEgdGNvbGwgdmFsKSlcclxuIChbdGNvbGwgdmFsICYgdmFsc11cclxuICAobGV0XHJcbiAgIFtudGNvbGwgKC1kaXNqb2luISB0Y29sbCB2YWwpXVxyXG4gICAoaWYgdmFscyAocmVjdXIgbnRjb2xsIChmaXJzdCB2YWxzKSAobmV4dCB2YWxzKSkgbnRjb2xsKSkpKVxyXG4ifSB7OnN5bSAtbG9va3VwLCA6bWV0YSB7OmRvYyAiVXNlIGsgdG8gbG9vayB1cCBhIHZhbHVlIGluIG8uIElmIG5vdC1mb3VuZCBpcyBzdXBwbGllZCBhbmQgayBpcyBub3RcbiAgICAgYSB2YWxpZCB2YWx1ZSB0aGF0IGNhbiBiZSB1c2VkIGZvciBsb29rIHVwLCBub3QtZm91bmQgaXMgcmV0dXJuZWQuIiwgOmFyZ2xpc3RzIChbbyBrXSBbbyBrIG5vdC1mb3VuZF0pfSwgOnByb3RvY29sIElMb29rdXB9IHs6c3ltIGZsb2F0PywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBmb3IgSmF2YVNjcmlwdCBudW1iZXJzLCBmYWxzZSBvdGhlcndpc2UuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGZsb2F0P1xyXG4gXCJSZXR1cm5zIHRydWUgZm9yIEphdmFTY3JpcHQgbnVtYmVycywgZmFsc2Ugb3RoZXJ3aXNlLlwiXHJcbiBbeF1cclxuIChudW1iZXI/IHgpKVxyXG4ifSB7OnN5bSBJQ2xvbmVhYmxlLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGNsb25pbmcgYSB2YWx1ZS4ifSwgOm1ldGhvZHMgKC1jbG9uZSl9IHs6c3ltIElFbmNvZGVDbG9qdXJlLCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAoLWpzLT5jbGopfSB7OnN5bSBib29sZWFucywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiBib29sZWFucyBbeF0geClcclxuIn0gezpzeW0gaW50LWFycmF5LCA6bWV0YSB7OmRvYyAiQ3JlYXRlcyBhbiBhcnJheSBvZiBpbnRzLiBEb2VzIG5vdCBjb2VyY2UgYXJyYXksIHByb3ZpZGVkIGZvciBjb21wYXRpYmlsaXR5XG4gIHdpdGggQ2xvanVyZS4iLCA6YXJnbGlzdHMgW1tzaXplLW9yLXNlcV0gW3NpemUgaW5pdC12YWwtb3Itc2VxXV19LCA6c291cmNlICIoZGVmblxyXG4gaW50LWFycmF5XHJcbiBcIkNyZWF0ZXMgYW4gYXJyYXkgb2YgaW50cy4gRG9lcyBub3QgY29lcmNlIGFycmF5LCBwcm92aWRlZCBmb3IgY29tcGF0aWJpbGl0eVxcbiAgd2l0aCBDbG9qdXJlLlwiXHJcbiAoW3NpemUtb3Itc2VxXVxyXG4gIChpZlxyXG4gICAobnVtYmVyPyBzaXplLW9yLXNlcSlcclxuICAgKGludC1hcnJheSBzaXplLW9yLXNlcSBuaWwpXHJcbiAgIChpbnRvLWFycmF5IHNpemUtb3Itc2VxKSkpXHJcbiAoW3NpemUgaW5pdC12YWwtb3Itc2VxXVxyXG4gIChsZXRcclxuICAgW2EgKG1ha2UtYXJyYXkgc2l6ZSldXHJcbiAgIChpZlxyXG4gICAgKHNlcT8gaW5pdC12YWwtb3Itc2VxKVxyXG4gICAgKGxldFxyXG4gICAgIFtzIChzZXEgaW5pdC12YWwtb3Itc2VxKV1cclxuICAgICAobG9vcFxyXG4gICAgICBbaSAwIHMgc11cclxuICAgICAgKGlmXHJcbiAgICAgICAoYW5kIHMgKDwgaSBzaXplKSlcclxuICAgICAgIChkbyAoYXNldCBhIGkgKGZpcnN0IHMpKSAocmVjdXIgKGluYyBpKSAobmV4dCBzKSkpXHJcbiAgICAgICBhKSkpXHJcbiAgICAoZG8gKGRvdGltZXMgW2kgc2l6ZV0gKGFzZXQgYSBpIGluaXQtdmFsLW9yLXNlcSkpIGEpKSkpKVxyXG4ifSB7OnN5bSBzZXQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIHggc2F0aXNmaWVzIElTZXQiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxyXG4gc2V0P1xyXG4gXCJSZXR1cm5zIHRydWUgaWYgeCBzYXRpc2ZpZXMgSVNldFwiXHJcbiBbeF1cclxuIChpZiAobmlsPyB4KSBmYWxzZSAoc2F0aXNmaWVzPyBJU2V0IHgpKSlcclxuIn0gezpzeW0gaXRlcmFibGU/LCA6bWV0YSB7OmRvYyAiUmV0dXJuIHRydWUgaWYgeCBpbXBsZW1lbnRzIElJdGVyYWJsZSBwcm90b2NvbC4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxyXG4gaXRlcmFibGU/XHJcbiBcIlJldHVybiB0cnVlIGlmIHggaW1wbGVtZW50cyBJSXRlcmFibGUgcHJvdG9jb2wuXCJcclxuIFt4XVxyXG4gKHNhdGlzZmllcz8gSUl0ZXJhYmxlIHgpKVxyXG4ifSB7OnN5bSBjYXQsIDptZXRhIHs6ZG9jICJBIHRyYW5zZHVjZXIgd2hpY2ggY29uY2F0ZW5hdGVzIHRoZSBjb250ZW50cyBvZiBlYWNoIGlucHV0LCB3aGljaCBtdXN0IGJlIGFcbiAgY29sbGVjdGlvbiwgaW50byB0aGUgcmVkdWN0aW9uLiIsIDphcmdsaXN0cyAoW3JmXSl9LCA6c291cmNlICIoZGVmblxyXG4gY2F0XHJcbiBcIkEgdHJhbnNkdWNlciB3aGljaCBjb25jYXRlbmF0ZXMgdGhlIGNvbnRlbnRzIG9mIGVhY2ggaW5wdXQsIHdoaWNoIG11c3QgYmUgYVxcbiAgY29sbGVjdGlvbiwgaW50byB0aGUgcmVkdWN0aW9uLlwiXHJcbiB7OmFkZGVkIFwiMS43XCJ9XHJcbiBbcmZdXHJcbiAobGV0XHJcbiAgW3JmMSAocHJlc2VydmluZy1yZWR1Y2VkIHJmKV1cclxuICAoZm5cclxuICAgKFtdIChyZikpXHJcbiAgIChbcmVzdWx0XSAocmYgcmVzdWx0KSlcclxuICAgKFtyZXN1bHQgaW5wdXRdIChyZWR1Y2UgcmYxIHJlc3VsdCBpbnB1dCkpKSkpXHJcbiJ9IHs6c3ltIC1wci13cml0ZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbyB3cml0ZXIgb3B0c10pfSwgOnByb3RvY29sIElQcmludFdpdGhXcml0ZXJ9IHs6c3ltIGZsdXNoLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm4gZmx1c2ggW10gbmlsKVxyXG4ifSB7OnN5bSBzZXQtZnJvbS1pbmRleGVkLXNlcSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtpc2VxXSl9LCA6c291cmNlICIoZGVmblxyXG4gc2V0LWZyb20taW5kZXhlZC1zZXFcclxuIFtpc2VxXVxyXG4gKGxldFxyXG4gIFthcnJcclxuICAgKC4tYXJyIGlzZXEpXHJcbiAgIHJldFxyXG4gICAoYXJlZHVjZSBhcnIgaSByZXMgKC1hcy10cmFuc2llbnQgI3t9KSAoLWNvbmohIHJlcyAoYWdldCBhcnIgaSkpKV1cclxuICAoLXBlcnNpc3RlbnQhIHJldCkpKVxyXG4ifSB7OnN5bSB0YWtlLXdoaWxlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2Ygc3VjY2Vzc2l2ZSBpdGVtcyBmcm9tIGNvbGwgd2hpbGVcbiAgKHByZWQgaXRlbSkgcmV0dXJucyBsb2dpY2FsIHRydWUuIHByZWQgbXVzdCBiZSBmcmVlIG9mIHNpZGUtZWZmZWN0cy5cbiAgUmV0dXJucyBhIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLiIsIDphcmdsaXN0cyBbW3ByZWRdIFtwcmVkIGNvbGxdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiB0YWtlLXdoaWxlXHJcbiBcIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIHN1Y2Nlc3NpdmUgaXRlbXMgZnJvbSBjb2xsIHdoaWxlXFxuICAocHJlZCBpdGVtKSByZXR1cm5zIGxvZ2ljYWwgdHJ1ZS4gcHJlZCBtdXN0IGJlIGZyZWUgb2Ygc2lkZS1lZmZlY3RzLlxcbiAgUmV0dXJucyBhIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLlwiXHJcbiAoW3ByZWRdXHJcbiAgKGZuXHJcbiAgIFtyZl1cclxuICAgKGZuXHJcbiAgICAoW10gKHJmKSlcclxuICAgIChbcmVzdWx0XSAocmYgcmVzdWx0KSlcclxuICAgIChbcmVzdWx0IGlucHV0XVxyXG4gICAgIChpZiAocHJlZCBpbnB1dCkgKHJmIHJlc3VsdCBpbnB1dCkgKHJlZHVjZWQgcmVzdWx0KSkpKSkpXHJcbiAoW3ByZWQgY29sbF1cclxuICAobGF6eS1zZXFcclxuICAgKHdoZW4tbGV0XHJcbiAgICBbcyAoc2VxIGNvbGwpXVxyXG4gICAgKHdoZW5cclxuICAgICAocHJlZCAoZmlyc3QgcykpXHJcbiAgICAgKGNvbnMgKGZpcnN0IHMpICh0YWtlLXdoaWxlIHByZWQgKHJlc3QgcykpKSkpKSkpXHJcbiJ9IHs6c3ltIHZhcnktbWV0YSwgOm1ldGEgezpkb2MgIlJldHVybnMgYW4gb2JqZWN0IG9mIHRoZSBzYW1lIHR5cGUgYW5kIHZhbHVlIGFzIG9iaiwgd2l0aFxuICAoYXBwbHkgZiAobWV0YSBvYmopIGFyZ3MpIGFzIGl0cyBtZXRhZGF0YS4iLCA6YXJnbGlzdHMgW1tvYmogZl0gW29iaiBmIGFdIFtvYmogZiBhIGJdIFtvYmogZiBhIGIgY10gW29iaiBmIGEgYiBjIGRdIFtvYmogZiBhIGIgYyBkICYgYXJnc11dfSwgOnNvdXJjZSAiKGRlZm5cclxuIHZhcnktbWV0YVxyXG4gXCJSZXR1cm5zIGFuIG9iamVjdCBvZiB0aGUgc2FtZSB0eXBlIGFuZCB2YWx1ZSBhcyBvYmosIHdpdGhcXG4gIChhcHBseSBmIChtZXRhIG9iaikgYXJncykgYXMgaXRzIG1ldGFkYXRhLlwiXHJcbiAoW29iaiBmXSAod2l0aC1tZXRhIG9iaiAoZiAobWV0YSBvYmopKSkpXHJcbiAoW29iaiBmIGFdICh3aXRoLW1ldGEgb2JqIChmIChtZXRhIG9iaikgYSkpKVxyXG4gKFtvYmogZiBhIGJdICh3aXRoLW1ldGEgb2JqIChmIChtZXRhIG9iaikgYSBiKSkpXHJcbiAoW29iaiBmIGEgYiBjXSAod2l0aC1tZXRhIG9iaiAoZiAobWV0YSBvYmopIGEgYiBjKSkpXHJcbiAoW29iaiBmIGEgYiBjIGRdICh3aXRoLW1ldGEgb2JqIChmIChtZXRhIG9iaikgYSBiIGMgZCkpKVxyXG4gKFtvYmogZiBhIGIgYyBkICYgYXJnc11cclxuICAod2l0aC1tZXRhIG9iaiAoYXBwbHkgZiAobWV0YSBvYmopIGEgYiBjIGQgYXJncykpKSlcclxuIn0gezpzeW0gSU5leHQsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgYWNjZXNzaW5nIHRoZSBuZXh0IGl0ZW1zIG9mIGEgY29sbGVjdGlvbi4ifSwgOm1ldGhvZHMgKC1uZXh0KX0gezpzeW0gaXNfcHJvdG9fLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGlzX3Byb3RvXyBbeF0gKGlkZW50aWNhbD8gKC4tcHJvdG90eXBlICguLWNvbnN0cnVjdG9yIHgpKSB4KSlcclxuIn0gezpzeW0gU1RBUlQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIFNUQVJUICNqcyB7fSlcclxuIn0gezpzeW0gSUNvdW50ZWQsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgYWRkaW5nIHRoZSBhYmlsaXR5IHRvIGNvdW50IGEgY29sbGVjdGlvbiBpbiBjb25zdGFudCB0aW1lLiJ9LCA6bWV0aG9kcyAoLWNvdW50KX0gezpzeW0gSU1hcEVudHJ5LCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGV4YW1pbmluZyBhIG1hcCBlbnRyeS4ifSwgOm1ldGhvZHMgKC1rZXkgLXZhbCl9IHs6c3ltIDw9LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBub24tbmlsIGlmIG51bXMgYXJlIGluIG1vbm90b25pY2FsbHkgbm9uLWRlY3JlYXNpbmcgb3JkZXIsXG4gIG90aGVyd2lzZSBmYWxzZS4iLCA6YXJnbGlzdHMgW1t4XSBbeCB5XSBbeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIDw9XHJcbiBcIlJldHVybnMgbm9uLW5pbCBpZiBudW1zIGFyZSBpbiBtb25vdG9uaWNhbGx5IG5vbi1kZWNyZWFzaW5nIG9yZGVyLFxcbiAgb3RoZXJ3aXNlIGZhbHNlLlwiXHJcbiAoW3hdIHRydWUpXHJcbiAoW3ggeV0gKGNsanMuY29yZS88PSB4IHkpKVxyXG4gKFt4IHkgJiBtb3JlXVxyXG4gIChpZlxyXG4gICAoY2xqcy5jb3JlLzw9IHggeSlcclxuICAgKGlmXHJcbiAgICAobmV4dCBtb3JlKVxyXG4gICAgKHJlY3VyIHkgKGZpcnN0IG1vcmUpIChuZXh0IG1vcmUpKVxyXG4gICAgKGNsanMuY29yZS88PSB5IChmaXJzdCBtb3JlKSkpXHJcbiAgIGZhbHNlKSkpXHJcbiJ9IHs6c3ltIE1PRFVMRV9JTkZPUywgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgTU9EVUxFX0lORk9TIG5pbClcclxuIn0gezpzeW0gY29uaiEsIDptZXRhIHs6ZG9jICJBZGRzIHZhbCB0byB0aGUgdHJhbnNpZW50IGNvbGxlY3Rpb24sIGFuZCByZXR1cm4gdGNvbGwuIFRoZSAnYWRkaXRpb24nXG4gIG1heSBoYXBwZW4gYXQgZGlmZmVyZW50ICdwbGFjZXMnIGRlcGVuZGluZyBvbiB0aGUgY29uY3JldGUgdHlwZS4iLCA6YXJnbGlzdHMgW1tdIFt0Y29sbF0gW3Rjb2xsIHZhbF0gW3Rjb2xsIHZhbCAmIHZhbHNdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBjb25qIVxyXG4gXCJBZGRzIHZhbCB0byB0aGUgdHJhbnNpZW50IGNvbGxlY3Rpb24sIGFuZCByZXR1cm4gdGNvbGwuIFRoZSAnYWRkaXRpb24nXFxuICBtYXkgaGFwcGVuIGF0IGRpZmZlcmVudCAncGxhY2VzJyBkZXBlbmRpbmcgb24gdGhlIGNvbmNyZXRlIHR5cGUuXCJcclxuIChbXSAodHJhbnNpZW50IFtdKSlcclxuIChbdGNvbGxdIHRjb2xsKVxyXG4gKFt0Y29sbCB2YWxdICgtY29uaiEgdGNvbGwgdmFsKSlcclxuIChbdGNvbGwgdmFsICYgdmFsc11cclxuICAobGV0XHJcbiAgIFtudGNvbGwgKC1jb25qISB0Y29sbCB2YWwpXVxyXG4gICAoaWYgdmFscyAocmVjdXIgbnRjb2xsIChmaXJzdCB2YWxzKSAobmV4dCB2YWxzKSkgbnRjb2xsKSkpKVxyXG4ifSB7OnN5bSAtcG9wLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG5ldyBzdGFjayB3aXRob3V0IHRoZSBpdGVtIG9uIHRvcCBvZiB0aGUgc3RhY2suIElzIHVzZWRcbiAgICAgYnkgY2xqcy5jb3JlL3BvcC4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6cHJvdG9jb2wgSVN0YWNrfSB7OnN5bSByZXBlYXRlZGx5LCA6bWV0YSB7OmRvYyAiVGFrZXMgYSBmdW5jdGlvbiBvZiBubyBhcmdzLCBwcmVzdW1hYmx5IHdpdGggc2lkZSBlZmZlY3RzLCBhbmRcbiAgcmV0dXJucyBhbiBpbmZpbml0ZSAob3IgbGVuZ3RoIG4gaWYgc3VwcGxpZWQpIGxhenkgc2VxdWVuY2Ugb2YgY2FsbHNcbiAgdG8gaXQiLCA6YXJnbGlzdHMgW1tmXSBbbiBmXV19LCA6c291cmNlICIoZGVmblxyXG4gcmVwZWF0ZWRseVxyXG4gXCJUYWtlcyBhIGZ1bmN0aW9uIG9mIG5vIGFyZ3MsIHByZXN1bWFibHkgd2l0aCBzaWRlIGVmZmVjdHMsIGFuZFxcbiAgcmV0dXJucyBhbiBpbmZpbml0ZSAob3IgbGVuZ3RoIG4gaWYgc3VwcGxpZWQpIGxhenkgc2VxdWVuY2Ugb2YgY2FsbHNcXG4gIHRvIGl0XCJcclxuIChbZl0gKGxhenktc2VxIChjb25zIChmKSAocmVwZWF0ZWRseSBmKSkpKVxyXG4gKFtuIGZdICh0YWtlIG4gKHJlcGVhdGVkbHkgZikpKSlcclxuIn0gezpzeW0gemlwbWFwLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG1hcCB3aXRoIHRoZSBrZXlzIG1hcHBlZCB0byB0aGUgY29ycmVzcG9uZGluZyB2YWxzLiIsIDphcmdsaXN0cyAoW2tleXMgdmFsc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHppcG1hcFxyXG4gXCJSZXR1cm5zIGEgbWFwIHdpdGggdGhlIGtleXMgbWFwcGVkIHRvIHRoZSBjb3JyZXNwb25kaW5nIHZhbHMuXCJcclxuIFtrZXlzIHZhbHNdXHJcbiAobG9vcFxyXG4gIFttYXAgKHRyYW5zaWVudCB7fSkga3MgKHNlcSBrZXlzKSB2cyAoc2VxIHZhbHMpXVxyXG4gIChpZlxyXG4gICAoYW5kIGtzIHZzKVxyXG4gICAocmVjdXIgKGFzc29jISBtYXAgKGZpcnN0IGtzKSAoZmlyc3QgdnMpKSAobmV4dCBrcykgKG5leHQgdnMpKVxyXG4gICAocGVyc2lzdGVudCEgbWFwKSkpKVxyXG4ifSB7OnN5bSByZXNldC12YWxzISwgOm1ldGEgezpkb2MgIlNldHMgdGhlIHZhbHVlIG9mIGF0b20gdG8gbmV3dmFsLiBSZXR1cm5zIFtvbGQgbmV3XSwgdGhlIHZhbHVlIG9mIHRoZVxuICAgYXRvbSBiZWZvcmUgYW5kIGFmdGVyIHRoZSByZXNldC4iLCA6YXJnbGlzdHMgKFthIG5ldy12YWx1ZV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlc2V0LXZhbHMhXHJcbiBcIlNldHMgdGhlIHZhbHVlIG9mIGF0b20gdG8gbmV3dmFsLiBSZXR1cm5zIFtvbGQgbmV3XSwgdGhlIHZhbHVlIG9mIHRoZVxcbiAgIGF0b20gYmVmb3JlIGFuZCBhZnRlciB0aGUgcmVzZXQuXCJcclxuIHs6YWRkZWQgXCIxLjlcIn1cclxuIFthIG5ldy12YWx1ZV1cclxuIChsZXRcclxuICBbdmFsaWRhdGUgKC4tdmFsaWRhdG9yIGEpXVxyXG4gICh3aGVuLW5vdFxyXG4gICAobmlsPyB2YWxpZGF0ZSlcclxuICAgKHdoZW4tbm90XHJcbiAgICAodmFsaWRhdGUgbmV3LXZhbHVlKVxyXG4gICAgKHRocm93IChqcy9FcnJvci4gXCJWYWxpZGF0b3IgcmVqZWN0ZWQgcmVmZXJlbmNlIHN0YXRlXCIpKSkpXHJcbiAgKGxldFxyXG4gICBbb2xkLXZhbHVlICguLXN0YXRlIGEpXVxyXG4gICAoc2V0ISAoLi1zdGF0ZSBhKSBuZXctdmFsdWUpXHJcbiAgICh3aGVuLW5vdFxyXG4gICAgKG5pbD8gKC4td2F0Y2hlcyBhKSlcclxuICAgICgtbm90aWZ5LXdhdGNoZXMgYSBvbGQtdmFsdWUgbmV3LXZhbHVlKSlcclxuICAgW29sZC12YWx1ZSBuZXctdmFsdWVdKSkpXHJcbiJ9IHs6c3ltIElTdGFjaywgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBjb2xsZWN0aW9ucyB0byBwcm92aWRlIGFjY2VzcyB0byB0aGVpciBpdGVtcyBhcyBzdGFja3MuIFRoZSB0b3BcbiAgb2YgdGhlIHN0YWNrIHNob3VsZCBiZSBhY2Nlc3NlZCBpbiB0aGUgbW9zdCBlZmZpY2llbnQgd2F5IGZvciB0aGUgZGlmZmVyZW50XG4gIGRhdGEgc3RydWN0dXJlcy4ifSwgOm1ldGhvZHMgKC1wZWVrIC1wb3ApfSB7OnN5bSAtcmVtb3ZlLXdhdGNoLCA6bWV0YSB7OmRvYyAiUmVtb3ZlcyB3YXRjaGVyIHRoYXQgY29ycmVzcG9uZHMgdG8ga2V5IGZyb20gdGhpcy4iLCA6YXJnbGlzdHMgKFt0aGlzIGtleV0pfSwgOnByb3RvY29sIElXYXRjaGFibGV9IHs6c3ltIElWb2xhdGlsZSwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhZGRpbmcgdm9sYXRpbGUgZnVuY3Rpb25hbGl0eS4ifSwgOm1ldGhvZHMgKC12cmVzZXQhKX0gezpzeW0gcmVtb3ZlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2YgdGhlIGl0ZW1zIGluIGNvbGwgZm9yIHdoaWNoXG4gIChwcmVkIGl0ZW0pIHJldHVybnMgbG9naWNhbCBmYWxzZS4gcHJlZCBtdXN0IGJlIGZyZWUgb2Ygc2lkZS1lZmZlY3RzLlxuICBSZXR1cm5zIGEgdHJhbnNkdWNlciB3aGVuIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuIiwgOmFyZ2xpc3RzIFtbcHJlZF0gW3ByZWQgY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlbW92ZVxyXG4gXCJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiB0aGUgaXRlbXMgaW4gY29sbCBmb3Igd2hpY2hcXG4gIChwcmVkIGl0ZW0pIHJldHVybnMgbG9naWNhbCBmYWxzZS4gcHJlZCBtdXN0IGJlIGZyZWUgb2Ygc2lkZS1lZmZlY3RzLlxcbiAgUmV0dXJucyBhIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLlwiXHJcbiAoW3ByZWRdIChmaWx0ZXIgKGNvbXBsZW1lbnQgcHJlZCkpKVxyXG4gKFtwcmVkIGNvbGxdIChmaWx0ZXIgKGNvbXBsZW1lbnQgcHJlZCkgY29sbCkpKVxyXG4ifSB7OnN5bSAqLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgcHJvZHVjdCBvZiBudW1zLiAoKikgcmV0dXJucyAxLiIsIDphcmdsaXN0cyBbW10gW3hdIFt4IHldIFt4IHkgJiBtb3JlXV19LCA6c291cmNlICIoZGVmblxyXG4gKlxyXG4gXCJSZXR1cm5zIHRoZSBwcm9kdWN0IG9mIG51bXMuICgqKSByZXR1cm5zIDEuXCJcclxuIChbXSAxKVxyXG4gKFt4XSB4KVxyXG4gKFt4IHldIChjbGpzLmNvcmUvKiB4IHkpKVxyXG4gKFt4IHkgJiBtb3JlXSAocmVkdWNlICogKGNsanMuY29yZS8qIHggeSkgbW9yZSkpKVxyXG4ifSB7OnN5bSByZS1wYXR0ZXJuLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhbiBpbnN0YW5jZSBvZiBSZWdFeHAgd2hpY2ggaGFzIGNvbXBpbGVkIHRoZSBwcm92aWRlZCBzdHJpbmcuIiwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlLXBhdHRlcm5cclxuIFwiUmV0dXJucyBhbiBpbnN0YW5jZSBvZiBSZWdFeHAgd2hpY2ggaGFzIGNvbXBpbGVkIHRoZSBwcm92aWRlZCBzdHJpbmcuXCJcclxuIFtzXVxyXG4gKGlmXHJcbiAgKGluc3RhbmNlPyBqcy9SZWdFeHAgcylcclxuICBzXHJcbiAgKGxldFxyXG4gICBbW3ByZWZpeCBmbGFnc11cclxuICAgIChyZS1maW5kICNcIl5cXChcXD8oW2lkbXN1eF0qKVxcKVwiIHMpXHJcbiAgICBwYXR0ZXJuXHJcbiAgICAoc3VicyBzIChpZiAobmlsPyBwcmVmaXgpIDAgKGNvdW50IHByZWZpeCkpKV1cclxuICAgKGpzL1JlZ0V4cC4gcGF0dGVybiAob3IgZmxhZ3MgXCJcIikpKSkpXHJcbiJ9IHs6c3ltIG1pbiwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGxlYXN0IG9mIHRoZSBudW1zLiIsIDphcmdsaXN0cyBbW3hdIFt4IHldIFt4IHkgJiBtb3JlXV19LCA6c291cmNlICIoZGVmblxyXG4gbWluXHJcbiBcIlJldHVybnMgdGhlIGxlYXN0IG9mIHRoZSBudW1zLlwiXHJcbiAoW3hdIHgpXHJcbiAoW3ggeV0gKGNsanMuY29yZS9taW4geCB5KSlcclxuIChbeCB5ICYgbW9yZV0gKHJlZHVjZSBtaW4gKGNsanMuY29yZS9taW4geCB5KSBtb3JlKSkpXHJcbiJ9IHs6c3ltIC1wZXJzaXN0ZW50ISwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYSBwZXJzaXN0ZW50IGRhdGEgc3RydWN0dXJlIGZyb20gdGNvbGwgYW5kIHJldHVybnMgaXQuIiwgOmFyZ2xpc3RzIChbdGNvbGxdKX0sIDpwcm90b2NvbCBJVHJhbnNpZW50Q29sbGVjdGlvbn0gezpzeW0gLW50aCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHZhbHVlIGF0IHRoZSBpbmRleCBuIGluIHRoZSBjb2xsZWN0aW9uIGNvbGwuXG4gICAgIFJldHVybnMgbm90LWZvdW5kIGlmIGluZGV4IG4gaXMgb3V0IG9mIGJvdW5kcyBhbmQgbm90LWZvdW5kIGlzIHN1cHBsaWVkLiIsIDphcmdsaXN0cyAoW2NvbGwgbl0gW2NvbGwgbiBub3QtZm91bmRdKX0sIDpwcm90b2NvbCBJSW5kZXhlZH0gezpzeW0gcG9wISwgOm1ldGEgezpkb2MgIlJlbW92ZXMgdGhlIGxhc3QgaXRlbSBmcm9tIGEgdHJhbnNpZW50IHZlY3Rvci4gSWZcbiAgdGhlIGNvbGxlY3Rpb24gaXMgZW1wdHksIHRocm93cyBhbiBleGNlcHRpb24uIFJldHVybnMgdGNvbGwiLCA6YXJnbGlzdHMgKFt0Y29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHBvcCFcclxuIFwiUmVtb3ZlcyB0aGUgbGFzdCBpdGVtIGZyb20gYSB0cmFuc2llbnQgdmVjdG9yLiBJZlxcbiAgdGhlIGNvbGxlY3Rpb24gaXMgZW1wdHksIHRocm93cyBhbiBleGNlcHRpb24uIFJldHVybnMgdGNvbGxcIlxyXG4gW3Rjb2xsXVxyXG4gKC1wb3AhIHRjb2xsKSlcclxuIn0gezpzeW0gY2h1bmstYXBwZW5kLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2IgeF0pfSwgOnNvdXJjZSAiKGRlZm4gY2h1bmstYXBwZW5kIFtiIHhdICguYWRkIGIgeCkpXHJcbiJ9IHs6c3ltICp1bmNoZWNrZWQtYXJyYXlzKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKnVuY2hlY2tlZC1hcnJheXMqIGZhbHNlKVxyXG4ifSB7OnN5bSBwcm4tc3RyLCA6bWV0YSB7OmRvYyAiU2FtZSBhcyBwci1zdHIgZm9sbG93ZWQgYnkgKG5ld2xpbmUpIiwgOmFyZ2xpc3RzIChbJiBvYmpzXSl9LCA6c291cmNlICIoZGVmblxyXG4gcHJuLXN0clxyXG4gXCJTYW1lIGFzIHByLXN0ciBmb2xsb3dlZCBieSAobmV3bGluZSlcIlxyXG4gWyYgb2Jqc11cclxuIChwcm4tc3RyLXdpdGgtb3B0cyBvYmpzIChwci1vcHRzKSkpXHJcbiJ9IHs6c3ltIElSZXZlcnNpYmxlLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIHJldmVyc2luZyBhIHNlcS4ifSwgOm1ldGhvZHMgKC1yc2VxKX0gezpzeW0gcmV2ZXJzaWJsZT8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgY29sbCBzYXRpc2ZpZXM/IElSZXZlcnNpYmxlLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiByZXZlcnNpYmxlP1xyXG4gXCJSZXR1cm5zIHRydWUgaWYgY29sbCBzYXRpc2ZpZXM/IElSZXZlcnNpYmxlLlwiXHJcbiBbY29sbF1cclxuIChzYXRpc2ZpZXM/IElSZXZlcnNpYmxlIGNvbGwpKVxyXG4ifSB7OnN5bSAtcmVhbGl6ZWQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIGEgdmFsdWUgZm9yIHggaGFzIGJlZW4gcHJvZHVjZWQsIGZhbHNlIG90aGVyd2lzZS4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6cHJvdG9jb2wgSVBlbmRpbmd9IHs6c3ltIC1hZGQtd2F0Y2gsIDptZXRhIHs6ZG9jICJBZGRzIGEgd2F0Y2hlciBmdW5jdGlvbiBmIHRvIHRoaXMuIEtleXMgbXVzdCBiZSB1bmlxdWUgcGVyIHJlZmVyZW5jZSxcbiAgICAgYW5kIGNhbiBiZSB1c2VkIHRvIHJlbW92ZSB0aGUgd2F0Y2ggd2l0aCAtcmVtb3ZlLXdhdGNoLiIsIDphcmdsaXN0cyAoW3RoaXMga2V5IGZdKX0sIDpwcm90b2NvbCBJV2F0Y2hhYmxlfSB7OnN5bSAtZGVyZWYtd2l0aC10aW1lb3V0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW28gbXNlYyB0aW1lb3V0LXZhbF0pfSwgOnByb3RvY29sIElEZXJlZldpdGhUaW1lb3V0fSB7OnN5bSBjb25qLCA6bWV0YSB7OmRvYyAiY29ualtvaW5dLiBSZXR1cm5zIGEgbmV3IGNvbGxlY3Rpb24gd2l0aCB0aGUgeHNcbiAgJ2FkZGVkJy4gKGNvbmogbmlsIGl0ZW0pIHJldHVybnMgKGl0ZW0pLiAgVGhlICdhZGRpdGlvbicgbWF5XG4gIGhhcHBlbiBhdCBkaWZmZXJlbnQgJ3BsYWNlcycgZGVwZW5kaW5nIG9uIHRoZSBjb25jcmV0ZSB0eXBlLiIsIDphcmdsaXN0cyBbW10gW2NvbGxdIFtjb2xsIHhdIFtjb2xsIHggJiB4c11dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGNvbmpcclxuIFwiY29ualtvaW5dLiBSZXR1cm5zIGEgbmV3IGNvbGxlY3Rpb24gd2l0aCB0aGUgeHNcXG4gICdhZGRlZCcuIChjb25qIG5pbCBpdGVtKSByZXR1cm5zIChpdGVtKS4gIFRoZSAnYWRkaXRpb24nIG1heVxcbiAgaGFwcGVuIGF0IGRpZmZlcmVudCAncGxhY2VzJyBkZXBlbmRpbmcgb24gdGhlIGNvbmNyZXRlIHR5cGUuXCJcclxuIChbXSBbXSlcclxuIChbY29sbF0gY29sbClcclxuIChbY29sbCB4XSAoaWYtbm90IChuaWw/IGNvbGwpICgtY29uaiBjb2xsIHgpIChsaXN0IHgpKSlcclxuIChbY29sbCB4ICYgeHNdXHJcbiAgKGlmIHhzIChyZWN1ciAoY29uaiBjb2xsIHgpIChmaXJzdCB4cykgKG5leHQgeHMpKSAoY29uaiBjb2xsIHgpKSkpXHJcbiJ9IHs6c3ltIC1zb3J0ZWQtc2VxLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHNvcnRlZCBzZXEgZnJvbSBjb2xsIGluIGVpdGhlciBhc2NlbmRpbmcgb3IgZGVzY2VuZGluZyBvcmRlci4iLCA6YXJnbGlzdHMgKFtjb2xsIGFzY2VuZGluZz9dKX0sIDpwcm90b2NvbCBJU29ydGVkfSB7OnN5bSB0cmFuc2R1Y2UsIDptZXRhIHs6ZG9jICJyZWR1Y2Ugd2l0aCBhIHRyYW5zZm9ybWF0aW9uIG9mIGYgKHhmKS4gSWYgaW5pdCBpcyBub3RcbiAgc3VwcGxpZWQsIChmKSB3aWxsIGJlIGNhbGxlZCB0byBwcm9kdWNlIGl0LiBmIHNob3VsZCBiZSBhIHJlZHVjaW5nXG4gIHN0ZXAgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIGJvdGggMSBhbmQgMiBhcmd1bWVudHMsIGlmIGl0IGFjY2VwdHNcbiAgb25seSAyIHlvdSBjYW4gYWRkIHRoZSBhcml0eS0xIHdpdGggJ2NvbXBsZXRpbmcnLiBSZXR1cm5zIHRoZSByZXN1bHRcbiAgb2YgYXBwbHlpbmcgKHRoZSB0cmFuc2Zvcm1lZCkgeGYgdG8gaW5pdCBhbmQgdGhlIGZpcnN0IGl0ZW0gaW4gY29sbCxcbiAgdGhlbiBhcHBseWluZyB4ZiB0byB0aGF0IHJlc3VsdCBhbmQgdGhlIDJuZCBpdGVtLCBldGMuIElmIGNvbGxcbiAgY29udGFpbnMgbm8gaXRlbXMsIHJldHVybnMgaW5pdCBhbmQgZiBpcyBub3QgY2FsbGVkLiBOb3RlIHRoYXRcbiAgY2VydGFpbiB0cmFuc2Zvcm1zIG1heSBpbmplY3Qgb3Igc2tpcCBpdGVtcy4iLCA6YXJnbGlzdHMgW1t4Zm9ybSBmIGNvbGxdIFt4Zm9ybSBmIGluaXQgY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIHRyYW5zZHVjZVxyXG4gXCJyZWR1Y2Ugd2l0aCBhIHRyYW5zZm9ybWF0aW9uIG9mIGYgKHhmKS4gSWYgaW5pdCBpcyBub3RcXG4gIHN1cHBsaWVkLCAoZikgd2lsbCBiZSBjYWxsZWQgdG8gcHJvZHVjZSBpdC4gZiBzaG91bGQgYmUgYSByZWR1Y2luZ1xcbiAgc3RlcCBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgYm90aCAxIGFuZCAyIGFyZ3VtZW50cywgaWYgaXQgYWNjZXB0c1xcbiAgb25seSAyIHlvdSBjYW4gYWRkIHRoZSBhcml0eS0xIHdpdGggJ2NvbXBsZXRpbmcnLiBSZXR1cm5zIHRoZSByZXN1bHRcXG4gIG9mIGFwcGx5aW5nICh0aGUgdHJhbnNmb3JtZWQpIHhmIHRvIGluaXQgYW5kIHRoZSBmaXJzdCBpdGVtIGluIGNvbGwsXFxuICB0aGVuIGFwcGx5aW5nIHhmIHRvIHRoYXQgcmVzdWx0IGFuZCB0aGUgMm5kIGl0ZW0sIGV0Yy4gSWYgY29sbFxcbiAgY29udGFpbnMgbm8gaXRlbXMsIHJldHVybnMgaW5pdCBhbmQgZiBpcyBub3QgY2FsbGVkLiBOb3RlIHRoYXRcXG4gIGNlcnRhaW4gdHJhbnNmb3JtcyBtYXkgaW5qZWN0IG9yIHNraXAgaXRlbXMuXCJcclxuIChbeGZvcm0gZiBjb2xsXSAodHJhbnNkdWNlIHhmb3JtIGYgKGYpIGNvbGwpKVxyXG4gKFt4Zm9ybSBmIGluaXQgY29sbF1cclxuICAobGV0IFtmICh4Zm9ybSBmKSByZXQgKHJlZHVjZSBmIGluaXQgY29sbCldIChmIHJldCkpKSlcclxuIn0gezpzeW0gLXN3YXAhLCA6bWV0YSB7OmRvYyAiU3dhcHMgdGhlIHZhbHVlIG9mIG8gdG8gYmUgKGFwcGx5IGYgY3VycmVudC12YWx1ZS1vZi1hdG9tIGFyZ3MpLiIsIDphcmdsaXN0cyAoW28gZl0gW28gZiBhXSBbbyBmIGEgYl0gW28gZiBhIGIgeHNdKX0sIDpwcm90b2NvbCBJU3dhcH0gezpzeW0gKnByaW50LWxlbmd0aCosIDptZXRhIHs6ZG9jICIqcHJpbnQtbGVuZ3RoKiBjb250cm9scyBob3cgbWFueSBpdGVtcyBvZiBlYWNoIGNvbGxlY3Rpb24gdGhlXG4gIHByaW50ZXIgd2lsbCBwcmludC4gSWYgaXQgaXMgYm91bmQgdG8gbG9naWNhbCBmYWxzZSwgdGhlcmUgaXMgbm9cbiAgbGltaXQuIE90aGVyd2lzZSwgaXQgbXVzdCBiZSBib3VuZCB0byBhbiBpbnRlZ2VyIGluZGljYXRpbmcgdGhlIG1heGltdW1cbiAgbnVtYmVyIG9mIGl0ZW1zIG9mIGVhY2ggY29sbGVjdGlvbiB0byBwcmludC4gSWYgYSBjb2xsZWN0aW9uIGNvbnRhaW5zXG4gIG1vcmUgaXRlbXMsIHRoZSBwcmludGVyIHdpbGwgcHJpbnQgaXRlbXMgdXAgdG8gdGhlIGxpbWl0IGZvbGxvd2VkIGJ5XG4gICcuLi4nIHRvIHJlcHJlc2VudCB0aGUgcmVtYWluaW5nIGl0ZW1zLiBUaGUgcm9vdCBiaW5kaW5nIGlzIG5pbFxuICBpbmRpY2F0aW5nIG5vIGxpbWl0LiJ9LCA6c291cmNlICIoZGVmICpwcmludC1sZW5ndGgqIG5pbClcclxuIn0gezpzeW0ganMtZGVsZXRlLCA6bWV0YSB7OmRvYyAiRGVsZXRlIGEgcHJvcGVydHkgZnJvbSBhIEphdmFTY3JpcHQgb2JqZWN0LlxuICBSZXR1cm5zIHRydWUgdXBvbiBzdWNjZXNzLCBmYWxzZSBvdGhlcndpc2UuIiwgOmFyZ2xpc3RzIChbb2JqIGtleV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGpzLWRlbGV0ZVxyXG4gXCJEZWxldGUgYSBwcm9wZXJ0eSBmcm9tIGEgSmF2YVNjcmlwdCBvYmplY3QuXFxuICBSZXR1cm5zIHRydWUgdXBvbiBzdWNjZXNzLCBmYWxzZSBvdGhlcndpc2UuXCJcclxuIFtvYmoga2V5XVxyXG4gKGNsanMuY29yZS9qcy1kZWxldGUgb2JqIGtleSkpXHJcbiJ9IHs6c3ltIHRydXRoXywgOm1ldGEgezpkb2MgIkludGVybmFsIC0gZG8gbm90IHVzZSEiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiB0cnV0aF8gXCJJbnRlcm5hbCAtIGRvIG5vdCB1c2UhXCIgW3hdIChjbGpzLmNvcmUvdHJ1dGhfIHgpKVxyXG4ifSB7OnN5bSBhcnJheS1pbmRleC1vZiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFthcnIga10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGFycmF5LWluZGV4LW9mXHJcbiBbYXJyIGtdXHJcbiAoY29uZFxyXG4gIChrZXl3b3JkPyBrKVxyXG4gIChhcnJheS1pbmRleC1vZi1rZXl3b3JkPyBhcnIgaylcclxuICAob3IgKGdvb2cvaXNTdHJpbmcgaykgKG51bWJlcj8gaykpXHJcbiAgKGFycmF5LWluZGV4LW9mLWlkZW50aWNhbD8gYXJyIGspXHJcbiAgKHN5bWJvbD8gaylcclxuICAoYXJyYXktaW5kZXgtb2Ytc3ltYm9sPyBhcnIgaylcclxuICAobmlsPyBrKVxyXG4gIChhcnJheS1pbmRleC1vZi1uaWw/IGFycilcclxuICA6ZWxzZVxyXG4gIChhcnJheS1pbmRleC1vZi1lcXVpdj8gYXJyIGspKSlcclxuIn0gezpzeW0ga2V5LT5qcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1trXSBbayBwcmltaXRpdmUtZm5dXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBrZXktPmpzXHJcbiAoW2tdIChrZXktPmpzIGsgY2xqLT5qcykpXHJcbiAoW2sgcHJpbWl0aXZlLWZuXVxyXG4gIChjb25kXHJcbiAgIChzYXRpc2ZpZXM/IElFbmNvZGVKUyBrKVxyXG4gICAoLWNsai0+anMgaylcclxuICAgKG9yIChzdHJpbmc/IGspIChudW1iZXI/IGspIChrZXl3b3JkPyBrKSAoc3ltYm9sPyBrKSlcclxuICAgKHByaW1pdGl2ZS1mbiBrKVxyXG4gICA6ZGVmYXVsdFxyXG4gICAocHItc3RyIGspKSkpXHJcbiJ9IHs6c3ltIElFbmNvZGVKUywgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKC1jbGotPmpzIC1rZXktPmpzKX0gezpzeW0gY29tcGFyZS1hbmQtc2V0ISwgOm1ldGEgezpkb2MgIkF0b21pY2FsbHkgc2V0cyB0aGUgdmFsdWUgb2YgYXRvbSB0byBuZXd2YWwgaWYgYW5kIG9ubHkgaWYgdGhlXG4gIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGF0b20gaXMgZXF1YWwgdG8gb2xkdmFsLiBSZXR1cm5zIHRydWUgaWZcbiAgc2V0IGhhcHBlbmVkLCBlbHNlIGZhbHNlLiIsIDphcmdsaXN0cyAoW2Egb2xkdmFsIG5ld3ZhbF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGNvbXBhcmUtYW5kLXNldCFcclxuIFwiQXRvbWljYWxseSBzZXRzIHRoZSB2YWx1ZSBvZiBhdG9tIHRvIG5ld3ZhbCBpZiBhbmQgb25seSBpZiB0aGVcXG4gIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGF0b20gaXMgZXF1YWwgdG8gb2xkdmFsLiBSZXR1cm5zIHRydWUgaWZcXG4gIHNldCBoYXBwZW5lZCwgZWxzZSBmYWxzZS5cIlxyXG4gW2Egb2xkdmFsIG5ld3ZhbF1cclxuIChpZiAoPSAoLWRlcmVmIGEpIG9sZHZhbCkgKGRvIChyZXNldCEgYSBuZXd2YWwpIHRydWUpIGZhbHNlKSlcclxuIn0gezpzeW0gYXJyYXktc2VxLCA6bWV0YSB7OmRvYyAiQ3JlYXRlIGEgc2VxIGZyb20gYSBKYXZhU2NyaXB0IGFycmF5LiIsIDphcmdsaXN0cyBbW2FycmF5XSBbYXJyYXkgaV1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGFycmF5LXNlcVxyXG4gXCJDcmVhdGUgYSBzZXEgZnJvbSBhIEphdmFTY3JpcHQgYXJyYXkuXCJcclxuIChbYXJyYXldIChwcmltLXNlcSBhcnJheSAwKSlcclxuIChbYXJyYXkgaV0gKHByaW0tc2VxIGFycmF5IGkpKSlcclxuIn0gezpzeW0gaW50ZXJsZWF2ZSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBsYXp5IHNlcSBvZiB0aGUgZmlyc3QgaXRlbSBpbiBlYWNoIGNvbGwsIHRoZW4gdGhlIHNlY29uZCBldGMuIiwgOmFyZ2xpc3RzIFtbXSBbYzFdIFtjMSBjMl0gW2MxIGMyICYgY29sbHNdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBpbnRlcmxlYXZlXHJcbiBcIlJldHVybnMgYSBsYXp5IHNlcSBvZiB0aGUgZmlyc3QgaXRlbSBpbiBlYWNoIGNvbGwsIHRoZW4gdGhlIHNlY29uZCBldGMuXCJcclxuIChbXSAoKSlcclxuIChbYzFdIChsYXp5LXNlcSBjMSkpXHJcbiAoW2MxIGMyXVxyXG4gIChsYXp5LXNlcVxyXG4gICAobGV0XHJcbiAgICBbczEgKHNlcSBjMSkgczIgKHNlcSBjMildXHJcbiAgICAod2hlblxyXG4gICAgIChhbmQgczEgczIpXHJcbiAgICAgKGNvbnNcclxuICAgICAgKGZpcnN0IHMxKVxyXG4gICAgICAoY29ucyAoZmlyc3QgczIpIChpbnRlcmxlYXZlIChyZXN0IHMxKSAocmVzdCBzMikpKSkpKSkpXHJcbiAoW2MxIGMyICYgY29sbHNdXHJcbiAgKGxhenktc2VxXHJcbiAgIChsZXRcclxuICAgIFtzcyAobWFwIHNlcSAoY29uaiBjb2xscyBjMiBjMSkpXVxyXG4gICAgKHdoZW5cclxuICAgICAoZXZlcnk/IGlkZW50aXR5IHNzKVxyXG4gICAgIChjb25jYXQgKG1hcCBmaXJzdCBzcykgKGFwcGx5IGludGVybGVhdmUgKG1hcCByZXN0IHNzKSkpKSkpKSlcclxuIn0gezpzeW0gcHJpbnQtbWFwLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW20gcHJpbnQtb25lIHdyaXRlciBvcHRzXSl9LCA6c291cmNlICIoZGVmblxyXG4gcHJpbnQtbWFwXHJcbiBbbSBwcmludC1vbmUgd3JpdGVyIG9wdHNdXHJcbiAobGV0XHJcbiAgW1tucyBsaWZ0LW1hcF0gKHdoZW4gKG1hcD8gbSkgKGxpZnQtbnMgbSkpXVxyXG4gIChpZlxyXG4gICBuc1xyXG4gICAocHJpbnQtcHJlZml4LW1hcCAoc3RyIFwiIzpcIiBucykgbGlmdC1tYXAgcHJpbnQtb25lIHdyaXRlciBvcHRzKVxyXG4gICAocHJpbnQtcHJlZml4LW1hcCBuaWwgbSBwcmludC1vbmUgd3JpdGVyIG9wdHMpKSkpXHJcbiJ9IHs6c3ltIG1hcD8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IHNhdGlzZmllcyBJTWFwIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIG1hcD9cclxuIFwiUmV0dXJuIHRydWUgaWYgeCBzYXRpc2ZpZXMgSU1hcFwiXHJcbiBbeF1cclxuIChpZiAobmlsPyB4KSBmYWxzZSAoc2F0aXNmaWVzPyBJTWFwIHgpKSlcclxuIn0gezpzeW0gbTMtQzEsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIG0zLUMxIChpbnQgMzQzMjkxODM1MykpXHJcbiJ9IHs6c3ltIGdldCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHZhbHVlIG1hcHBlZCB0byBrZXksIG5vdC1mb3VuZCBvciBuaWwgaWYga2V5IG5vdCBwcmVzZW50LiIsIDphcmdsaXN0cyBbW28ga10gW28gayBub3QtZm91bmRdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBnZXRcclxuIFwiUmV0dXJucyB0aGUgdmFsdWUgbWFwcGVkIHRvIGtleSwgbm90LWZvdW5kIG9yIG5pbCBpZiBrZXkgbm90IHByZXNlbnQuXCJcclxuIChbbyBrXVxyXG4gICh3aGVuLW5vdFxyXG4gICAobmlsPyBvKVxyXG4gICAoY29uZFxyXG4gICAgKGltcGxlbWVudHM/IElMb29rdXAgbylcclxuICAgICgtbG9va3VwIG8gaylcclxuICAgIChhcnJheT8gbylcclxuICAgICh3aGVuIChhbmQgKHNvbWU/IGspICg8IGsgKC4tbGVuZ3RoIG8pKSkgKGFnZXQgbyAoaW50IGspKSlcclxuICAgIChzdHJpbmc/IG8pXHJcbiAgICAod2hlbiAoYW5kIChzb21lPyBrKSAoPCAtMSBrICguLWxlbmd0aCBvKSkpICguY2hhckF0IG8gKGludCBrKSkpXHJcbiAgICAobmF0aXZlLXNhdGlzZmllcz8gSUxvb2t1cCBvKVxyXG4gICAgKC1sb29rdXAgbyBrKVxyXG4gICAgOmVsc2VcclxuICAgIG5pbCkpKVxyXG4gKFtvIGsgbm90LWZvdW5kXVxyXG4gIChpZi1ub3RcclxuICAgKG5pbD8gbylcclxuICAgKGNvbmRcclxuICAgIChpbXBsZW1lbnRzPyBJTG9va3VwIG8pXHJcbiAgICAoLWxvb2t1cCBvIGsgbm90LWZvdW5kKVxyXG4gICAgKGFycmF5PyBvKVxyXG4gICAgKGlmXHJcbiAgICAgKGFuZCAoc29tZT8gaykgKDwgLTEgayAoLi1sZW5ndGggbykpKVxyXG4gICAgIChhZ2V0IG8gKGludCBrKSlcclxuICAgICBub3QtZm91bmQpXHJcbiAgICAoc3RyaW5nPyBvKVxyXG4gICAgKGlmXHJcbiAgICAgKGFuZCAoc29tZT8gaykgKDwgLTEgayAoLi1sZW5ndGggbykpKVxyXG4gICAgICguY2hhckF0IG8gKGludCBrKSlcclxuICAgICBub3QtZm91bmQpXHJcbiAgICAobmF0aXZlLXNhdGlzZmllcz8gSUxvb2t1cCBvKVxyXG4gICAgKC1sb29rdXAgbyBrIG5vdC1mb3VuZClcclxuICAgIDplbHNlXHJcbiAgICBub3QtZm91bmQpXHJcbiAgIG5vdC1mb3VuZCkpKVxyXG4ifSB7OnN5bSBpZGVudGl0eSwgOm1ldGEgezpkb2MgIlJldHVybnMgaXRzIGFyZ3VtZW50LiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGlkZW50aXR5IFwiUmV0dXJucyBpdHMgYXJndW1lbnQuXCIgW3hdIHgpXHJcbiJ9IHs6c3ltIGludG8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbmV3IGNvbGwgY29uc2lzdGluZyBvZiB0by1jb2xsIHdpdGggYWxsIG9mIHRoZSBpdGVtcyBvZlxuICBmcm9tLWNvbGwgY29uam9pbmVkLiBBIHRyYW5zZHVjZXIgbWF5IGJlIHN1cHBsaWVkLiIsIDphcmdsaXN0cyBbW10gW3RvXSBbdG8gZnJvbV0gW3RvIHhmb3JtIGZyb21dXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBpbnRvXHJcbiBcIlJldHVybnMgYSBuZXcgY29sbCBjb25zaXN0aW5nIG9mIHRvLWNvbGwgd2l0aCBhbGwgb2YgdGhlIGl0ZW1zIG9mXFxuICBmcm9tLWNvbGwgY29uam9pbmVkLiBBIHRyYW5zZHVjZXIgbWF5IGJlIHN1cHBsaWVkLlwiXHJcbiAoW10gW10pXHJcbiAoW3RvXSB0bylcclxuIChbdG8gZnJvbV1cclxuICAoaWYtbm90XHJcbiAgIChuaWw/IHRvKVxyXG4gICAoaWZcclxuICAgIChpbXBsZW1lbnRzPyBJRWRpdGFibGVDb2xsZWN0aW9uIHRvKVxyXG4gICAgKC13aXRoLW1ldGFcclxuICAgICAocGVyc2lzdGVudCEgKHJlZHVjZSAtY29uaiEgKHRyYW5zaWVudCB0bykgZnJvbSkpXHJcbiAgICAgKG1ldGEgdG8pKVxyXG4gICAgKHJlZHVjZSAtY29uaiB0byBmcm9tKSlcclxuICAgKHJlZHVjZSBjb25qIHRvIGZyb20pKSlcclxuIChbdG8geGZvcm0gZnJvbV1cclxuICAoaWZcclxuICAgKGltcGxlbWVudHM/IElFZGl0YWJsZUNvbGxlY3Rpb24gdG8pXHJcbiAgICgtd2l0aC1tZXRhXHJcbiAgICAocGVyc2lzdGVudCEgKHRyYW5zZHVjZSB4Zm9ybSBjb25qISAodHJhbnNpZW50IHRvKSBmcm9tKSlcclxuICAgIChtZXRhIHRvKSlcclxuICAgKHRyYW5zZHVjZSB4Zm9ybSBjb25qIHRvIGZyb20pKSkpXHJcbiJ9IHs6c3ltIGxvbmcsIDptZXRhIHs6ZG9jICJDb2VyY2UgdG8gbG9uZyBieSBzdHJpcHBpbmcgZGVjaW1hbCBwbGFjZXMuIElkZW50aWNhbCB0byBgaW50Jy4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxyXG4gbG9uZ1xyXG4gXCJDb2VyY2UgdG8gbG9uZyBieSBzdHJpcHBpbmcgZGVjaW1hbCBwbGFjZXMuIElkZW50aWNhbCB0byBgaW50Jy5cIlxyXG4gW3hdXHJcbiAoZml4IHgpKVxyXG4ifSB7OnN5bSBkb3VibGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gZG91YmxlIFt4XSB4KVxyXG4ifSB7OnN5bSB2b2xhdGlsZT8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgeCBpcyBhIHZvbGF0aWxlLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB2b2xhdGlsZT9cclxuIFwiUmV0dXJucyB0cnVlIGlmIHggaXMgYSB2b2xhdGlsZS5cIlxyXG4gW3hdXHJcbiAoaW5zdGFuY2U/IFZvbGF0aWxlIHgpKVxyXG4ifSB7OnN5bSAta2V5LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUga2V5IG9mIHRoZSBtYXAgZW50cnkuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnByb3RvY29sIElNYXBFbnRyeX0gezpzeW0gbmZpcnN0LCA6bWV0YSB7OmRvYyAiU2FtZSBhcyAobmV4dCAoZmlyc3QgeCkpIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm4gbmZpcnN0IFwiU2FtZSBhcyAobmV4dCAoZmlyc3QgeCkpXCIgW2NvbGxdIChuZXh0IChmaXJzdCBjb2xsKSkpXHJcbiJ9IHs6c3ltIG1ldGEsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBtZXRhZGF0YSBvZiBvYmosIHJldHVybnMgbmlsIGlmIHRoZXJlIGlzIG5vIG1ldGFkYXRhLiIsIDphcmdsaXN0cyAoW29dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBtZXRhXHJcbiBcIlJldHVybnMgdGhlIG1ldGFkYXRhIG9mIG9iaiwgcmV0dXJucyBuaWwgaWYgdGhlcmUgaXMgbm8gbWV0YWRhdGEuXCJcclxuIFtvXVxyXG4gKHdoZW4gKGFuZCAobm90IChuaWw/IG8pKSAoc2F0aXNmaWVzPyBJTWV0YSBvKSkgKC1tZXRhIG8pKSlcclxuIn0gezpzeW0gLWt2LXJlZHVjZSwgOm1ldGEgezpkb2MgIlJlZHVjZXMgYW4gYXNzb2NpYXRpdmUgY29sbGVjdGlvbiBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LiBmIHNob3VsZCBiZVxuICAgICBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgdGhyZWUgYXJndW1lbnRzLiIsIDphcmdsaXN0cyAoW2NvbGwgZiBpbml0XSl9LCA6cHJvdG9jb2wgSUtWUmVkdWNlfSB7OnN5bSBJSGFzaCwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhZGRpbmcgaGFzaGluZyBmdW5jdGlvbmFsaXR5IHRvIGEgdHlwZS4ifSwgOm1ldGhvZHMgKC1oYXNoKX0gezpzeW0gYml0LWFuZC1ub3QsIDptZXRhIHs6ZG9jICJCaXR3aXNlIGFuZCB3aXRoIGNvbXBsZW1lbnQiLCA6YXJnbGlzdHMgW1t4IHldIFt4IHkgJiBtb3JlXV19LCA6c291cmNlICIoZGVmblxyXG4gYml0LWFuZC1ub3RcclxuIFwiQml0d2lzZSBhbmQgd2l0aCBjb21wbGVtZW50XCJcclxuIChbeCB5XSAoY2xqcy5jb3JlL2JpdC1hbmQtbm90IHggeSkpXHJcbiAoW3ggeSAmIG1vcmVdIChyZWR1Y2UgYml0LWFuZC1ub3QgKGNsanMuY29yZS9iaXQtYW5kLW5vdCB4IHkpIG1vcmUpKSlcclxuIn0gezpzeW0gdmFyPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB2IGlzIG9mIHR5cGUgY2xqcy5jb3JlLlZhciIsIDphcmdsaXN0cyAoW3ZdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB2YXI/XHJcbiBcIlJldHVybnMgdHJ1ZSBpZiB2IGlzIG9mIHR5cGUgY2xqcy5jb3JlLlZhclwiXHJcbiBbdl1cclxuIChpbnN0YW5jZT8gY2xqcy5jb3JlLlZhciB2KSlcclxuIn0gezpzeW0gLWNvbXBhcmF0b3IsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBjb21wYXJhdG9yIGZvciBjb2xsLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpwcm90b2NvbCBJU29ydGVkfSB7OnN5bSB1bmNoZWNrZWQtYWRkLWludCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHN1bSBvZiBudW1zLiAoKykgcmV0dXJucyAwLiIsIDphcmdsaXN0cyBbW10gW3hdIFt4IHldIFt4IHkgJiBtb3JlXV19LCA6c291cmNlICIoZGVmblxyXG4gdW5jaGVja2VkLWFkZC1pbnRcclxuIFwiUmV0dXJucyB0aGUgc3VtIG9mIG51bXMuICgrKSByZXR1cm5zIDAuXCJcclxuIChbXSAwKVxyXG4gKFt4XSB4KVxyXG4gKFt4IHldIChjbGpzLmNvcmUvdW5jaGVja2VkLWFkZC1pbnQgeCB5KSlcclxuIChbeCB5ICYgbW9yZV1cclxuICAocmVkdWNlIHVuY2hlY2tlZC1hZGQtaW50IChjbGpzLmNvcmUvdW5jaGVja2VkLWFkZC1pbnQgeCB5KSBtb3JlKSkpXHJcbiJ9IHs6c3ltIGhhc2gtb3JkZXJlZC1jb2xsLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgaGFzaCBjb2RlLCBjb25zaXN0ZW50IHdpdGggPSwgZm9yIGFuIGV4dGVybmFsIG9yZGVyZWRcbiAgIGNvbGxlY3Rpb24gaW1wbGVtZW50aW5nIEl0ZXJhYmxlLlxuICAgU2VlIGh0dHA6Ly9jbG9qdXJlLm9yZy9kYXRhX3N0cnVjdHVyZXMjaGFzaCBmb3IgZnVsbCBhbGdvcml0aG1zLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBoYXNoLW9yZGVyZWQtY29sbFxyXG4gXCJSZXR1cm5zIHRoZSBoYXNoIGNvZGUsIGNvbnNpc3RlbnQgd2l0aCA9LCBmb3IgYW4gZXh0ZXJuYWwgb3JkZXJlZFxcbiAgIGNvbGxlY3Rpb24gaW1wbGVtZW50aW5nIEl0ZXJhYmxlLlxcbiAgIFNlZSBodHRwOi8vY2xvanVyZS5vcmcvZGF0YV9zdHJ1Y3R1cmVzI2hhc2ggZm9yIGZ1bGwgYWxnb3JpdGhtcy5cIlxyXG4gW2NvbGxdXHJcbiAobG9vcFxyXG4gIFtuIDAgaGFzaC1jb2RlIDEgY29sbCAoc2VxIGNvbGwpXVxyXG4gIChpZi1ub3RcclxuICAgKG5pbD8gY29sbClcclxuICAgKHJlY3VyXHJcbiAgICAoaW5jIG4pXHJcbiAgICAoYml0LW9yICgrIChpbXVsIDMxIGhhc2gtY29kZSkgKGhhc2ggKGZpcnN0IGNvbGwpKSkgMClcclxuICAgIChuZXh0IGNvbGwpKVxyXG4gICAobWl4LWNvbGxlY3Rpb24taGFzaCBoYXNoLWNvZGUgbikpKSlcclxuIn0gezpzeW0gcmVzZXQtbWV0YSEsIDptZXRhIHs6ZG9jICJBdG9taWNhbGx5IHJlc2V0cyB0aGUgbWV0YWRhdGEgZm9yIGFuIGF0b20iLCA6YXJnbGlzdHMgKFtpcmVmIG1dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiByZXNldC1tZXRhIVxyXG4gXCJBdG9taWNhbGx5IHJlc2V0cyB0aGUgbWV0YWRhdGEgZm9yIGFuIGF0b21cIlxyXG4gW2lyZWYgbV1cclxuIChzZXQhICguLW1ldGEgaXJlZikgbSkpXHJcbiJ9IHs6c3ltIElFcXVpdiwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhZGRpbmcgdmFsdWUgY29tcGFyaXNvbiBmdW5jdGlvbmFsaXR5IHRvIGEgdHlwZS4ifSwgOm1ldGhvZHMgKC1lcXVpdil9IHs6c3ltIGN5Y2xlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGxhenkgKGluZmluaXRlISkgc2VxdWVuY2Ugb2YgcmVwZXRpdGlvbnMgb2YgdGhlIGl0ZW1zIGluIGNvbGwuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGN5Y2xlXHJcbiBcIlJldHVybnMgYSBsYXp5IChpbmZpbml0ZSEpIHNlcXVlbmNlIG9mIHJlcGV0aXRpb25zIG9mIHRoZSBpdGVtcyBpbiBjb2xsLlwiXHJcbiBbY29sbF1cclxuIChpZi1sZXRcclxuICBbdmFscyAoc2VxIGNvbGwpXVxyXG4gIChDeWNsZS4gbmlsIHZhbHMgbmlsIHZhbHMgbmlsKVxyXG4gICguLUVNUFRZIExpc3QpKSlcclxuIn0gezpzeW0gLWRlcmVmLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIHJlZmVyZW5jZSBvLiIsIDphcmdsaXN0cyAoW29dKX0sIDpwcm90b2NvbCBJRGVyZWZ9IHs6c3ltIGVtcHR5PywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiBjb2xsIGhhcyBubyBpdGVtcyAtIHNhbWUgYXMgKG5vdCAoc2VxIGNvbGwpKS5cbiAgUGxlYXNlIHVzZSB0aGUgaWRpb20gKHNlcSB4KSByYXRoZXIgdGhhbiAobm90IChlbXB0eT8geCkpIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGVtcHR5P1xyXG4gXCJSZXR1cm5zIHRydWUgaWYgY29sbCBoYXMgbm8gaXRlbXMgLSBzYW1lIGFzIChub3QgKHNlcSBjb2xsKSkuXFxuICBQbGVhc2UgdXNlIHRoZSBpZGlvbSAoc2VxIHgpIHJhdGhlciB0aGFuIChub3QgKGVtcHR5PyB4KSlcIlxyXG4gW2NvbGxdXHJcbiAob3IgKG5pbD8gY29sbCkgKG5vdCAoc2VxIGNvbGwpKSkpXHJcbiJ9IHs6c3ltIHNob3J0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIHNob3J0IFt4XSB4KVxyXG4ifSB7OnN5bSAtY2xqLT5qcywgOm1ldGEgezpkb2MgIlJlY3Vyc2l2ZWx5IHRyYW5zZm9ybXMgY2xqIHZhbHVlcyB0byBKYXZhU2NyaXB0IiwgOmFyZ2xpc3RzIChbeF0pfSwgOnByb3RvY29sIElFbmNvZGVKU30gezpzeW0gLWNodW5rZWQtZmlyc3QsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBmaXJzdCBjaHVuayBpbiBjb2xsLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpwcm90b2NvbCBJQ2h1bmtlZFNlcX0gezpzeW0gYWRkLXRhcCwgOm1ldGEgezpkb2MgIkFkZHMgZiwgYSBmbiBvZiBvbmUgYXJndW1lbnQsIHRvIHRoZSB0YXAgc2V0LiBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdpdGhcbiAgYW55dGhpbmcgc2VudCB2aWEgdGFwPi4gUmVtZW1iZXIgZiBpbiBvcmRlciB0byByZW1vdmUtdGFwIiwgOmFyZ2xpc3RzIChbZl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGFkZC10YXBcclxuIFwiQWRkcyBmLCBhIGZuIG9mIG9uZSBhcmd1bWVudCwgdG8gdGhlIHRhcCBzZXQuIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgd2l0aFxcbiAgYW55dGhpbmcgc2VudCB2aWEgdGFwPi4gUmVtZW1iZXIgZiBpbiBvcmRlciB0byByZW1vdmUtdGFwXCJcclxuIFtmXVxyXG4gKG1heWJlLWluaXQtdGFwc2V0KVxyXG4gKHN3YXAhIHRhcHNldCBjb25qIGYpXHJcbiBuaWwpXHJcbiJ9IHs6c3ltIGZpbHRlcnYsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgdmVjdG9yIG9mIHRoZSBpdGVtcyBpbiBjb2xsIGZvciB3aGljaFxuICAocHJlZCBpdGVtKSByZXR1cm5zIGxvZ2ljYWwgdHJ1ZS4gcHJlZCBtdXN0IGJlIGZyZWUgb2Ygc2lkZS1lZmZlY3RzLiIsIDphcmdsaXN0cyAoW3ByZWQgY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGZpbHRlcnZcclxuIFwiUmV0dXJucyBhIHZlY3RvciBvZiB0aGUgaXRlbXMgaW4gY29sbCBmb3Igd2hpY2hcXG4gIChwcmVkIGl0ZW0pIHJldHVybnMgbG9naWNhbCB0cnVlLiBwcmVkIG11c3QgYmUgZnJlZSBvZiBzaWRlLWVmZmVjdHMuXCJcclxuIFtwcmVkIGNvbGxdXHJcbiAoLT5cclxuICAocmVkdWNlIChmbiBbdiBvXSAoaWYgKHByZWQgbykgKGNvbmohIHYgbykgdikpICh0cmFuc2llbnQgW10pIGNvbGwpXHJcbiAgcGVyc2lzdGVudCEpKVxyXG4ifSB7OnN5bSBoYXNoLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgaGFzaCBjb2RlIG9mIGl0cyBhcmd1bWVudC4gTm90ZSB0aGlzIGlzIHRoZSBoYXNoIGNvZGVcbiAgIGNvbnNpc3RlbnQgd2l0aCA9LiIsIDphcmdsaXN0cyAoW29dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBoYXNoXHJcbiBcIlJldHVybnMgdGhlIGhhc2ggY29kZSBvZiBpdHMgYXJndW1lbnQuIE5vdGUgdGhpcyBpcyB0aGUgaGFzaCBjb2RlXFxuICAgY29uc2lzdGVudCB3aXRoID0uXCJcclxuIFtvXVxyXG4gKGNvbmRcclxuICAoaW1wbGVtZW50cz8gSUhhc2ggbylcclxuICAoYml0LXhvciAoLWhhc2ggbykgMClcclxuICAobnVtYmVyPyBvKVxyXG4gIChpZlxyXG4gICAoanMvaXNGaW5pdGUgbylcclxuICAgKGpzLW1vZCAoTWF0aC9mbG9vciBvKSAyMTQ3NDgzNjQ3KVxyXG4gICAoY2FzZSBvICMjSW5mIDIxNDY0MzUwNzIgIyMtSW5mIC0xMDQ4NTc2IDIxNDY5NTkzNjApKVxyXG4gICh0cnVlPyBvKVxyXG4gIDEyMzFcclxuICAoZmFsc2U/IG8pXHJcbiAgMTIzN1xyXG4gIChzdHJpbmc/IG8pXHJcbiAgKG0zLWhhc2gtaW50IChoYXNoLXN0cmluZyBvKSlcclxuICAoaW5zdGFuY2U/IGpzL0RhdGUgbylcclxuICAoYml0LXhvciAoLnZhbHVlT2YgbykgMClcclxuICAobmlsPyBvKVxyXG4gIDBcclxuICA6ZWxzZVxyXG4gIChiaXQteG9yICgtaGFzaCBvKSAwKSkpXHJcbiJ9IHs6c3ltIHF1b3QsIDptZXRhIHs6ZG9jICJxdW90W2llbnRdIG9mIGRpdmlkaW5nIG51bWVyYXRvciBieSBkZW5vbWluYXRvci4iLCA6YXJnbGlzdHMgKFtuIGRdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBxdW90XHJcbiBcInF1b3RbaWVudF0gb2YgZGl2aWRpbmcgbnVtZXJhdG9yIGJ5IGRlbm9taW5hdG9yLlwiXHJcbiBbbiBkXVxyXG4gKGxldCBbcmVtIChqcy1tb2QgbiBkKV0gKGZpeCAoLyAoLSBuIHJlbSkgZCkpKSlcclxuIn0gezpzeW0gbnMtaW50ZXJucyosIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbWFwIG9mIHRoZSBpbnRlcm4gbWFwcGluZ3MgZm9yIHRoZSBuYW1lc3BhY2UuXG4gIEJvb3RzdHJhcCBvbmx5LiIsIDphcmdsaXN0cyAoW3N5bV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIG5zLWludGVybnMqXHJcbiBcIlJldHVybnMgYSBtYXAgb2YgdGhlIGludGVybiBtYXBwaW5ncyBmb3IgdGhlIG5hbWVzcGFjZS5cXG4gIEJvb3RzdHJhcCBvbmx5LlwiXHJcbiBbc3ltXVxyXG4gKGxldFxyXG4gIFtucy1vYmogKGZpbmQtbnMtb2JqIHN5bSkgbnMgKE5hbWVzcGFjZS4gbnMtb2JqIHN5bSldXHJcbiAgKGxldGZuXHJcbiAgIFsoc3RlcFxyXG4gICAgIFtyZXQga11cclxuICAgICAobGV0XHJcbiAgICAgIFt2YXItc3ltIChzeW1ib2wgKGRlbXVuZ2UgaykpXVxyXG4gICAgICAoYXNzb2NcclxuICAgICAgIHJldFxyXG4gICAgICAgdmFyLXN5bVxyXG4gICAgICAgKFZhci5cclxuICAgICAgICAoZm4qIFtdIChnb2JqZWN0L2dldCBucy1vYmogaykpXHJcbiAgICAgICAgKHN5bWJvbCAoc3RyIHN5bSkgKHN0ciB2YXItc3ltKSlcclxuICAgICAgICB7Om5zIG5zfSkpKSldXHJcbiAgIChyZWR1Y2Ugc3RlcCB7fSAoanMta2V5cyBucy1vYmopKSkpKVxyXG4ifSB7OnN5bSB1bmNoZWNrZWQtZG91YmxlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIHVuY2hlY2tlZC1kb3VibGUgW3hdIHgpXHJcbiJ9IHs6c3ltIHJhbmdlZC1pdGVyYXRvciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt2IHN0YXJ0IGVuZF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJhbmdlZC1pdGVyYXRvclxyXG4gW3Ygc3RhcnQgZW5kXVxyXG4gKGxldFxyXG4gIFtpIHN0YXJ0XVxyXG4gIChSYW5nZWRJdGVyYXRvci5cclxuICAgaVxyXG4gICAoLSBpIChqcy1tb2QgaSAzMikpXHJcbiAgICh3aGVuICg8IHN0YXJ0IChjb3VudCB2KSkgKHVuY2hlY2tlZC1hcnJheS1mb3IgdiBpKSlcclxuICAgdlxyXG4gICBzdGFydFxyXG4gICBlbmQpKSlcclxuIn0gezpzeW0gSVRyYW5zaWVudFZlY3RvciwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhZGRpbmcgdmVjdG9yIGZ1bmN0aW9uYWxpdHkgdG8gdHJhbnNpZW50IGNvbGxlY3Rpb25zLiJ9LCA6bWV0aG9kcyAoLWFzc29jLW4hIC1wb3AhKX0gezpzeW0ga2V5LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUga2V5IG9mIHRoZSBtYXAgZW50cnkuIiwgOmFyZ2xpc3RzIChbbWFwLWVudHJ5XSl9LCA6c291cmNlICIoZGVmblxyXG4ga2V5XHJcbiBcIlJldHVybnMgdGhlIGtleSBvZiB0aGUgbWFwIGVudHJ5LlwiXHJcbiBbbWFwLWVudHJ5XVxyXG4gKC1rZXkgbWFwLWVudHJ5KSlcclxuIn0gezpzeW0gbG9uZ3MsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gbG9uZ3MgW3hdIHgpXHJcbiJ9IHs6c3ltIG5vdD0sIDptZXRhIHs6ZG9jICJTYW1lIGFzIChub3QgKD0gb2JqMSBvYmoyKSkiLCA6YXJnbGlzdHMgW1t4XSBbeCB5XSBbeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIG5vdD1cclxuIFwiU2FtZSBhcyAobm90ICg9IG9iajEgb2JqMikpXCJcclxuIChbeF0gZmFsc2UpXHJcbiAoW3ggeV0gKG5vdCAoPSB4IHkpKSlcclxuIChbeCB5ICYgbW9yZV0gKG5vdCAoYXBwbHkgPSB4IHkgbW9yZSkpKSlcclxuIn0gezpzeW0gc2V0LXByaW50LWVyci1mbiEsIDptZXRhIHs6ZG9jICJTZXQgKnByaW50LWVyci1mbiogdG8gZi4iLCA6YXJnbGlzdHMgKFtmXSl9LCA6c291cmNlICIoZGVmblxyXG4gc2V0LXByaW50LWVyci1mbiFcclxuIFwiU2V0ICpwcmludC1lcnItZm4qIHRvIGYuXCJcclxuIFtmXVxyXG4gKHNldCEgKnByaW50LWVyci1mbiogZikpXHJcbiJ9IHs6c3ltIGZhc3QtcGF0aC1wcm90b2NvbHMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXHJcbiBmYXN0LXBhdGgtcHJvdG9jb2xzXHJcbiBcInByb3RvY29sIGZxbiAtPiBbcGFydGl0aW9uIG51bWJlciwgYml0XVwiXHJcbiAoemlwbWFwXHJcbiAgKG1hcFxyXG4gICAoZm4qIFtwMV9fNDEzMDQjXSAoc3ltYm9sIFwiY2xqcy5jb3JlXCIgKGNvcmUvc3RyIHAxX180MTMwNCMpKSlcclxuICAgJ1tJRm5cclxuICAgICBJQ291bnRlZFxyXG4gICAgIElFbXB0eWFibGVDb2xsZWN0aW9uXHJcbiAgICAgSUNvbGxlY3Rpb25cclxuICAgICBJSW5kZXhlZFxyXG4gICAgIEFTZXFcclxuICAgICBJU2VxXHJcbiAgICAgSU5leHRcclxuICAgICBJTG9va3VwXHJcbiAgICAgSUFzc29jaWF0aXZlXHJcbiAgICAgSU1hcFxyXG4gICAgIElNYXBFbnRyeVxyXG4gICAgIElTZXRcclxuICAgICBJU3RhY2tcclxuICAgICBJVmVjdG9yXHJcbiAgICAgSURlcmVmXHJcbiAgICAgSURlcmVmV2l0aFRpbWVvdXRcclxuICAgICBJTWV0YVxyXG4gICAgIElXaXRoTWV0YVxyXG4gICAgIElSZWR1Y2VcclxuICAgICBJS1ZSZWR1Y2VcclxuICAgICBJRXF1aXZcclxuICAgICBJSGFzaFxyXG4gICAgIElTZXFhYmxlXHJcbiAgICAgSVNlcXVlbnRpYWxcclxuICAgICBJTGlzdFxyXG4gICAgIElSZWNvcmRcclxuICAgICBJUmV2ZXJzaWJsZVxyXG4gICAgIElTb3J0ZWRcclxuICAgICBJUHJpbnRXaXRoV3JpdGVyXHJcbiAgICAgSVdyaXRlclxyXG4gICAgIElQcmludFdpdGhXcml0ZXJcclxuICAgICBJUGVuZGluZ1xyXG4gICAgIElXYXRjaGFibGVcclxuICAgICBJRWRpdGFibGVDb2xsZWN0aW9uXHJcbiAgICAgSVRyYW5zaWVudENvbGxlY3Rpb25cclxuICAgICBJVHJhbnNpZW50QXNzb2NpYXRpdmVcclxuICAgICBJVHJhbnNpZW50TWFwXHJcbiAgICAgSVRyYW5zaWVudFZlY3RvclxyXG4gICAgIElUcmFuc2llbnRTZXRcclxuICAgICBJTXVsdGlGblxyXG4gICAgIElDaHVua2VkU2VxXHJcbiAgICAgSUNodW5rZWROZXh0XHJcbiAgICAgSUNvbXBhcmFibGVcclxuICAgICBJTmFtZWRcclxuICAgICBJQ2xvbmVhYmxlXHJcbiAgICAgSUF0b21cclxuICAgICBJUmVzZXRcclxuICAgICBJU3dhcFxyXG4gICAgIElJdGVyYWJsZV0pXHJcbiAgKGl0ZXJhdGVcclxuICAgKGNvcmUvZm5cclxuICAgIFtbcCBiXV1cclxuICAgIChpZlxyXG4gICAgIChjb3JlLz09IDIxNDc0ODM2NDggYilcclxuICAgICBbKGNvcmUvaW5jIHApIDFdXHJcbiAgICAgW3AgIz8oOmNsaiAoY29yZS9iaXQtc2hpZnQtbGVmdCBiIDEpIDpjbGpzIChjb3JlLyogMiBiKSldKSlcclxuICAgWzAgMV0pKSlcclxuIn0gezpzeW0gc3RyaW5nPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB4IGlzIGEgSmF2YVNjcmlwdCBzdHJpbmcuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHN0cmluZz9cclxuIFwiUmV0dXJucyB0cnVlIGlmIHggaXMgYSBKYXZhU2NyaXB0IHN0cmluZy5cIlxyXG4gW3hdXHJcbiAoZ29vZy9pc1N0cmluZyB4KSlcclxuIn0gezpzeW0gdXJpPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSB4IGlzIGEgZ29vZy5VcmkgaW5zdGFuY2UuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHVyaT9cclxuIFwiUmV0dXJucyB0cnVlIHggaXMgYSBnb29nLlVyaSBpbnN0YW5jZS5cIlxyXG4gezphZGRlZCBcIjEuOVwifVxyXG4gW3hdXHJcbiAoaW5zdGFuY2U/IGdvb2cuVXJpIHgpKVxyXG4ifSB7OnN5bSBlczYtaXRlcmF0b3IsIDptZXRhIHs6ZG9jICJFWFBFUklNRU5UQUw6IFJldHVybiBhIEVTMjAxNSBjb21wYXRpYmxlIGl0ZXJhdG9yIGZvciBjb2xsLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBlczYtaXRlcmF0b3JcclxuIFwiRVhQRVJJTUVOVEFMOiBSZXR1cm4gYSBFUzIwMTUgY29tcGF0aWJsZSBpdGVyYXRvciBmb3IgY29sbC5cIlxyXG4gW2NvbGxdXHJcbiAoRVM2SXRlcmF0b3IuIChzZXEgY29sbCkpKVxyXG4ifSB7OnN5bSBwci1zdHItd2l0aC1vcHRzLCA6bWV0YSB7OmRvYyAiUHJpbnRzIGEgc2VxdWVuY2Ugb2Ygb2JqZWN0cyB0byBhIHN0cmluZywgb2JzZXJ2aW5nIGFsbCB0aGVcbiAgb3B0aW9ucyBnaXZlbiBpbiBvcHRzIiwgOmFyZ2xpc3RzIChbb2JqcyBvcHRzXSl9LCA6c291cmNlICIoZGVmblxyXG4gcHItc3RyLXdpdGgtb3B0c1xyXG4gXCJQcmludHMgYSBzZXF1ZW5jZSBvZiBvYmplY3RzIHRvIGEgc3RyaW5nLCBvYnNlcnZpbmcgYWxsIHRoZVxcbiAgb3B0aW9ucyBnaXZlbiBpbiBvcHRzXCJcclxuIFtvYmpzIG9wdHNdXHJcbiAoaWYgKGVtcHR5PyBvYmpzKSBcIlwiIChzdHIgKHByLXNiLXdpdGgtb3B0cyBvYmpzIG9wdHMpKSkpXHJcbiJ9IHs6c3ltIG0zLUMyLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBtMy1DMiAoaW50IDQ2MTg0NTkwNykpXHJcbiJ9IHs6c3ltICpwcmludC1uZXdsaW5lKiwgOm1ldGEgezpkb2MgIldoZW4gc2V0IHRvIGxvZ2ljYWwgZmFsc2Ugd2lsbCBkcm9wIG5ld2xpbmVzIGZyb20gcHJpbnRpbmcgY2FsbHMuXG4gIFRoaXMgaXMgdG8gd29yayBhcm91bmQgdGhlIGltcGxpY2l0IG5ld2xpbmVzIGVtaXR0ZWQgYnkgc3RhbmRhcmQgSmF2YVNjcmlwdFxuICBjb25zb2xlIG9iamVjdHMuIn0sIDpzb3VyY2UgIihkZWYgKnByaW50LW5ld2xpbmUqIHRydWUpXHJcbiJ9IHs6c3ltIHVuY2hlY2tlZC1tdWx0aXBseS1pbnQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBwcm9kdWN0IG9mIG51bXMuICgqKSByZXR1cm5zIDEuIiwgOmFyZ2xpc3RzIFtbXSBbeF0gW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiB1bmNoZWNrZWQtbXVsdGlwbHktaW50XHJcbiBcIlJldHVybnMgdGhlIHByb2R1Y3Qgb2YgbnVtcy4gKCopIHJldHVybnMgMS5cIlxyXG4gKFtdIDEpXHJcbiAoW3hdIHgpXHJcbiAoW3ggeV0gKGNsanMuY29yZS91bmNoZWNrZWQtbXVsdGlwbHktaW50IHggeSkpXHJcbiAoW3ggeSAmIG1vcmVdXHJcbiAgKHJlZHVjZVxyXG4gICB1bmNoZWNrZWQtbXVsdGlwbHktaW50XHJcbiAgIChjbGpzLmNvcmUvdW5jaGVja2VkLW11bHRpcGx5LWludCB4IHkpXHJcbiAgIG1vcmUpKSlcclxuIn0gezpzeW0gY2h1bmstcmVzdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmbiBjaHVuay1yZXN0IFtzXSAoLWNodW5rZWQtcmVzdCBzKSlcclxuIn0gezpzeW0gcmVtb3ZlLWFsbC1tZXRob2RzLCA6bWV0YSB7OmRvYyAiUmVtb3ZlcyBhbGwgb2YgdGhlIG1ldGhvZHMgb2YgbXVsdGltZXRob2QuIiwgOmFyZ2xpc3RzIChbbXVsdGlmbl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlbW92ZS1hbGwtbWV0aG9kc1xyXG4gXCJSZW1vdmVzIGFsbCBvZiB0aGUgbWV0aG9kcyBvZiBtdWx0aW1ldGhvZC5cIlxyXG4gW211bHRpZm5dXHJcbiAoLXJlc2V0IG11bHRpZm4pKVxyXG4ifSB7OnN5bSB0cmFtcG9saW5lLCA6bWV0YSB7OmRvYyAidHJhbXBvbGluZSBjYW4gYmUgdXNlZCB0byBjb252ZXJ0IGFsZ29yaXRobXMgcmVxdWlyaW5nIG11dHVhbFxuICByZWN1cnNpb24gd2l0aG91dCBzdGFjayBjb25zdW1wdGlvbi4gQ2FsbHMgZiB3aXRoIHN1cHBsaWVkIGFyZ3MsIGlmXG4gIGFueS4gSWYgZiByZXR1cm5zIGEgZm4sIGNhbGxzIHRoYXQgZm4gd2l0aCBubyBhcmd1bWVudHMsIGFuZFxuICBjb250aW51ZXMgdG8gcmVwZWF0LCB1bnRpbCB0aGUgcmV0dXJuIHZhbHVlIGlzIG5vdCBhIGZuLCB0aGVuXG4gIHJldHVybnMgdGhhdCBub24tZm4gdmFsdWUuIE5vdGUgdGhhdCBpZiB5b3Ugd2FudCB0byByZXR1cm4gYSBmbiBhcyBhXG4gIGZpbmFsIHZhbHVlLCB5b3UgbXVzdCB3cmFwIGl0IGluIHNvbWUgZGF0YSBzdHJ1Y3R1cmUgYW5kIHVucGFjayBpdFxuICBhZnRlciB0cmFtcG9saW5lIHJldHVybnMuIiwgOmFyZ2xpc3RzIFtbZl0gW2YgJiBhcmdzXV19LCA6c291cmNlICIoZGVmblxyXG4gdHJhbXBvbGluZVxyXG4gXCJ0cmFtcG9saW5lIGNhbiBiZSB1c2VkIHRvIGNvbnZlcnQgYWxnb3JpdGhtcyByZXF1aXJpbmcgbXV0dWFsXFxuICByZWN1cnNpb24gd2l0aG91dCBzdGFjayBjb25zdW1wdGlvbi4gQ2FsbHMgZiB3aXRoIHN1cHBsaWVkIGFyZ3MsIGlmXFxuICBhbnkuIElmIGYgcmV0dXJucyBhIGZuLCBjYWxscyB0aGF0IGZuIHdpdGggbm8gYXJndW1lbnRzLCBhbmRcXG4gIGNvbnRpbnVlcyB0byByZXBlYXQsIHVudGlsIHRoZSByZXR1cm4gdmFsdWUgaXMgbm90IGEgZm4sIHRoZW5cXG4gIHJldHVybnMgdGhhdCBub24tZm4gdmFsdWUuIE5vdGUgdGhhdCBpZiB5b3Ugd2FudCB0byByZXR1cm4gYSBmbiBhcyBhXFxuICBmaW5hbCB2YWx1ZSwgeW91IG11c3Qgd3JhcCBpdCBpbiBzb21lIGRhdGEgc3RydWN0dXJlIGFuZCB1bnBhY2sgaXRcXG4gIGFmdGVyIHRyYW1wb2xpbmUgcmV0dXJucy5cIlxyXG4gKFtmXSAobGV0IFtyZXQgKGYpXSAoaWYgKGZuPyByZXQpIChyZWN1ciByZXQpIHJldCkpKVxyXG4gKFtmICYgYXJnc10gKHRyYW1wb2xpbmUgKGZuKiBbXSAoYXBwbHkgZiBhcmdzKSkpKSlcclxuIn0gezpzeW0gZG91YmxlPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBmb3IgSmF2YVNjcmlwdCBudW1iZXJzLCBmYWxzZSBvdGhlcndpc2UuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGRvdWJsZT9cclxuIFwiUmV0dXJucyB0cnVlIGZvciBKYXZhU2NyaXB0IG51bWJlcnMsIGZhbHNlIG90aGVyd2lzZS5cIlxyXG4gW3hdXHJcbiAobnVtYmVyPyB4KSlcclxuIn0gezpzeW0gdmVjLCA6bWV0YSB7OmRvYyAiQ3JlYXRlcyBhIG5ldyB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29udGVudHMgb2YgY29sbC4gSmF2YVNjcmlwdCBhcnJheXNcbiAgd2lsbCBiZSBhbGlhc2VkIGFuZCBzaG91bGQgbm90IGJlIG1vZGlmaWVkLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB2ZWNcclxuIFwiQ3JlYXRlcyBhIG5ldyB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29udGVudHMgb2YgY29sbC4gSmF2YVNjcmlwdCBhcnJheXNcXG4gIHdpbGwgYmUgYWxpYXNlZCBhbmQgc2hvdWxkIG5vdCBiZSBtb2RpZmllZC5cIlxyXG4gW2NvbGxdXHJcbiAoY29uZFxyXG4gIChtYXAtZW50cnk/IGNvbGwpXHJcbiAgWyhrZXkgY29sbCkgKHZhbCBjb2xsKV1cclxuICAodmVjdG9yPyBjb2xsKVxyXG4gICh3aXRoLW1ldGEgY29sbCBuaWwpXHJcbiAgKGFycmF5PyBjb2xsKVxyXG4gICguZnJvbUFycmF5IFBlcnNpc3RlbnRWZWN0b3IgY29sbCB0cnVlKVxyXG4gIDplbHNlXHJcbiAgKC1wZXJzaXN0ZW50IVxyXG4gICAocmVkdWNlIC1jb25qISAoLWFzLXRyYW5zaWVudCAoLi1FTVBUWSBQZXJzaXN0ZW50VmVjdG9yKSkgY29sbCkpKSlcclxuIn0gezpzeW0gKnByaW50LW1ldGEqLCA6bWV0YSB7OmRvYyAiSWYgc2V0IHRvIGxvZ2ljYWwgdHJ1ZSwgd2hlbiBwcmludGluZyBhbiBvYmplY3QsIGl0cyBtZXRhZGF0YSB3aWxsIGFsc29cbiAgYmUgcHJpbnRlZCBpbiBhIGZvcm0gdGhhdCBjYW4gYmUgcmVhZCBiYWNrIGJ5IHRoZSByZWFkZXIuXG5cbiAgRGVmYXVsdHMgdG8gZmFsc2UuIn0sIDpzb3VyY2UgIihkZWYgKnByaW50LW1ldGEqIGZhbHNlKVxyXG4ifSB7OnN5bSAtbm90aWZ5LXdhdGNoZXMsIDptZXRhIHs6ZG9jICJDYWxscyBhbGwgd2F0Y2hlcnMgd2l0aCB0aGlzLCBvbGR2YWwgYW5kIG5ld3ZhbC4iLCA6YXJnbGlzdHMgKFt0aGlzIG9sZHZhbCBuZXd2YWxdKX0sIDpwcm90b2NvbCBJV2F0Y2hhYmxlfSB7OnN5bSBpbnQsIDptZXRhIHs6ZG9jICJDb2VyY2UgdG8gaW50IGJ5IHN0cmlwcGluZyBkZWNpbWFsIHBsYWNlcy4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxyXG4gaW50XHJcbiBcIkNvZXJjZSB0byBpbnQgYnkgc3RyaXBwaW5nIGRlY2ltYWwgcGxhY2VzLlwiXHJcbiBbeF1cclxuIChiaXQtb3IgeCAwKSlcclxuIn0gezpzeW0gbWFwLWVudHJ5PywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB4IHNhdGlzZmllcyBJTWFwRW50cnkiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxyXG4gbWFwLWVudHJ5P1xyXG4gXCJSZXR1cm5zIHRydWUgaWYgeCBzYXRpc2ZpZXMgSU1hcEVudHJ5XCJcclxuIFt4XVxyXG4gKGltcGxlbWVudHM/IElNYXBFbnRyeSB4KSlcclxuIn0gezpzeW0gcmFuZCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSByYW5kb20gZmxvYXRpbmcgcG9pbnQgbnVtYmVyIGJldHdlZW4gMCAoaW5jbHVzaXZlKSBhbmRcbiAgbiAoZGVmYXVsdCAxKSAoZXhjbHVzaXZlKS4iLCA6YXJnbGlzdHMgW1tdIFtuXV19LCA6c291cmNlICIoZGVmblxyXG4gcmFuZFxyXG4gXCJSZXR1cm5zIGEgcmFuZG9tIGZsb2F0aW5nIHBvaW50IG51bWJlciBiZXR3ZWVuIDAgKGluY2x1c2l2ZSkgYW5kXFxuICBuIChkZWZhdWx0IDEpIChleGNsdXNpdmUpLlwiXHJcbiAoW10gKHJhbmQgMSkpXHJcbiAoW25dICgqIChNYXRoL3JhbmRvbSkgbikpKVxyXG4ifSB7OnN5bSBzZWNvbmQsIDptZXRhIHs6ZG9jICJTYW1lIGFzIChmaXJzdCAobmV4dCB4KSkiLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmbiBzZWNvbmQgXCJTYW1lIGFzIChmaXJzdCAobmV4dCB4KSlcIiBbY29sbF0gKGZpcnN0IChuZXh0IGNvbGwpKSlcclxuIn0gezpzeW0gZmluZC1ucy1vYmosIDptZXRhIHs6ZG9jICJCb290c3RyYXAgb25seS4iLCA6YXJnbGlzdHMgKFtuc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGZpbmQtbnMtb2JqXHJcbiBcIkJvb3RzdHJhcCBvbmx5LlwiXHJcbiBbbnNdXHJcbiAobGV0XHJcbiAgW211bmdlZC1ucyAobXVuZ2UgKHN0ciBucykpIHNlZ3MgKC5zcGxpdCBtdW5nZWQtbnMgXCIuXCIpXVxyXG4gIChjYXNlXHJcbiAgICp0YXJnZXQqXHJcbiAgIFwibm9kZWpzXCJcclxuICAgKGlmXHJcbiAgICBqcy9DT01QSUxFRFxyXG4gICAgKGZpbmQtbnMtb2JqKlxyXG4gICAgICh0cnlcclxuICAgICAgKGxldFxyXG4gICAgICAgW2N0eHQgKGpzL2V2YWwgKGZpcnN0IHNlZ3MpKV1cclxuICAgICAgICh3aGVuIChhbmQgY3R4dCAob2JqZWN0PyBjdHh0KSkgY3R4dCkpXHJcbiAgICAgIChjYXRjaCBqcy9SZWZlcmVuY2VFcnJvciBlIG5pbCkpXHJcbiAgICAgKG5leHQgc2VncykpXHJcbiAgICAoZmluZC1ucy1vYmoqIGdvb2cvZ2xvYmFsIHNlZ3MpKVxyXG4gICAoXCJkZWZhdWx0XCIgXCJ3ZWJ3b3JrZXJcIilcclxuICAgKGZpbmQtbnMtb2JqKiBnb29nL2dsb2JhbCBzZWdzKVxyXG4gICAodGhyb3dcclxuICAgIChqcy9FcnJvci5cclxuICAgICAoc3RyIFwiZmluZC1ucy1vYmogbm90IHN1cHBvcnRlZCBmb3IgdGFyZ2V0IFwiICp0YXJnZXQqKSkpKSkpXHJcbiJ9IHs6c3ltIElFZGl0YWJsZUNvbGxlY3Rpb24sIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgY29sbGVjdGlvbnMgd2hpY2ggY2FuIHRyYW5zZm9ybWVkIHRvIHRyYW5zaWVudHMuIn0sIDptZXRob2RzICgtYXMtdHJhbnNpZW50KX0gezpzeW0gaGFzaC1jb21iaW5lLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NlZWQgaGFzaF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGhhc2gtY29tYmluZVxyXG4gW3NlZWQgaGFzaF1cclxuIChiaXQteG9yXHJcbiAgc2VlZFxyXG4gICgrXHJcbiAgIGhhc2hcclxuICAgMjY1NDQzNTc2OVxyXG4gICAoYml0LXNoaWZ0LWxlZnQgc2VlZCA2KVxyXG4gICAoYml0LXNoaWZ0LXJpZ2h0IHNlZWQgMikpKSlcclxuIn0gezpzeW0gPiwgOm1ldGEgezpkb2MgIlJldHVybnMgbm9uLW5pbCBpZiBudW1zIGFyZSBpbiBtb25vdG9uaWNhbGx5IGRlY3JlYXNpbmcgb3JkZXIsXG4gIG90aGVyd2lzZSBmYWxzZS4iLCA6YXJnbGlzdHMgW1t4XSBbeCB5XSBbeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cclxuID5cclxuIFwiUmV0dXJucyBub24tbmlsIGlmIG51bXMgYXJlIGluIG1vbm90b25pY2FsbHkgZGVjcmVhc2luZyBvcmRlcixcXG4gIG90aGVyd2lzZSBmYWxzZS5cIlxyXG4gKFt4XSB0cnVlKVxyXG4gKFt4IHldIChjbGpzLmNvcmUvPiB4IHkpKVxyXG4gKFt4IHkgJiBtb3JlXVxyXG4gIChpZlxyXG4gICAoY2xqcy5jb3JlLz4geCB5KVxyXG4gICAoaWZcclxuICAgIChuZXh0IG1vcmUpXHJcbiAgICAocmVjdXIgeSAoZmlyc3QgbW9yZSkgKG5leHQgbW9yZSkpXHJcbiAgICAoY2xqcy5jb3JlLz4geSAoZmlyc3QgbW9yZSkpKVxyXG4gICBmYWxzZSkpKVxyXG4ifSB7OnN5bSAtbmFtZSwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG5hbWUgU3RyaW5nIG9mIHguIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnByb3RvY29sIElOYW1lZH0gezpzeW0gcmVwbGFjZSwgOm1ldGEgezpkb2MgIkdpdmVuIGEgbWFwIG9mIHJlcGxhY2VtZW50IHBhaXJzIGFuZCBhIHZlY3Rvci9jb2xsZWN0aW9uLCByZXR1cm5zIGFcbiAgdmVjdG9yL3NlcSB3aXRoIGFueSBlbGVtZW50cyA9IGEga2V5IGluIHNtYXAgcmVwbGFjZWQgd2l0aCB0aGVcbiAgY29ycmVzcG9uZGluZyB2YWwgaW4gc21hcC4gIFJldHVybnMgYSB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvblxuICBpcyBwcm92aWRlZC4iLCA6YXJnbGlzdHMgW1tzbWFwXSBbc21hcCBjb2xsXV19LCA6c291cmNlICIoZGVmblxyXG4gcmVwbGFjZVxyXG4gXCJHaXZlbiBhIG1hcCBvZiByZXBsYWNlbWVudCBwYWlycyBhbmQgYSB2ZWN0b3IvY29sbGVjdGlvbiwgcmV0dXJucyBhXFxuICB2ZWN0b3Ivc2VxIHdpdGggYW55IGVsZW1lbnRzID0gYSBrZXkgaW4gc21hcCByZXBsYWNlZCB3aXRoIHRoZVxcbiAgY29ycmVzcG9uZGluZyB2YWwgaW4gc21hcC4gIFJldHVybnMgYSB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvblxcbiAgaXMgcHJvdmlkZWQuXCJcclxuIChbc21hcF1cclxuICAobWFwXHJcbiAgIChmbipcclxuICAgIFtwMV9fNDE0NDkjXVxyXG4gICAgKGlmLWxldCBbZSAoZmluZCBzbWFwIHAxX180MTQ0OSMpXSAodmFsIGUpIHAxX180MTQ0OSMpKSkpXHJcbiAoW3NtYXAgY29sbF1cclxuICAoaWZcclxuICAgKHZlY3Rvcj8gY29sbClcclxuICAgKGxldFxyXG4gICAgW24gKGNvdW50IGNvbGwpXVxyXG4gICAgKHJlZHVjZVxyXG4gICAgIChmblxyXG4gICAgICBbdiBpXVxyXG4gICAgICAoaWYtbGV0IFtlIChmaW5kIHNtYXAgKG50aCB2IGkpKV0gKGFzc29jIHYgaSAoc2Vjb25kIGUpKSB2KSlcclxuICAgICBjb2xsXHJcbiAgICAgKHRha2UgbiAoaXRlcmF0ZSBpbmMgMCkpKSlcclxuICAgKG1hcFxyXG4gICAgKGZuKlxyXG4gICAgIFtwMV9fNDE0NTAjXVxyXG4gICAgIChpZi1sZXQgW2UgKGZpbmQgc21hcCBwMV9fNDE0NTAjKV0gKHNlY29uZCBlKSBwMV9fNDE0NTAjKSlcclxuICAgIGNvbGwpKSkpXHJcbiJ9IHs6c3ltIGludD8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IHNhdGlzZmllcyBpbnRlZ2VyPyBvciBpcyBhbiBpbnN0YW5jZSBvZiBnb29nLm1hdGguSW50ZWdlclxuICAgb3IgZ29vZy5tYXRoLkxvbmcuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGludD9cclxuIFwiUmV0dXJuIHRydWUgaWYgeCBzYXRpc2ZpZXMgaW50ZWdlcj8gb3IgaXMgYW4gaW5zdGFuY2Ugb2YgZ29vZy5tYXRoLkludGVnZXJcXG4gICBvciBnb29nLm1hdGguTG9uZy5cIlxyXG4gW3hdXHJcbiAob3JcclxuICAoaW50ZWdlcj8geClcclxuICAoaW5zdGFuY2U/IGdvb2cubWF0aC5JbnRlZ2VyIHgpXHJcbiAgKGluc3RhbmNlPyBnb29nLm1hdGguTG9uZyB4KSkpXHJcbiJ9IHs6c3ltIGFzc29jaWF0aXZlPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiBjb2xsIGltcGxlbWVudHMgSUFzc29jaWF0aXZlIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGFzc29jaWF0aXZlP1xyXG4gXCJSZXR1cm5zIHRydWUgaWYgY29sbCBpbXBsZW1lbnRzIElBc3NvY2lhdGl2ZVwiXHJcbiBbeF1cclxuIChzYXRpc2ZpZXM/IElBc3NvY2lhdGl2ZSB4KSlcclxuIn0gezpzeW0gdW5jaGVja2VkLWludCwgOm1ldGEgezpkb2MgIkNvZXJjZSB0byBpbnQgYnkgc3RyaXBwaW5nIGRlY2ltYWwgcGxhY2VzLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB1bmNoZWNrZWQtaW50XHJcbiBcIkNvZXJjZSB0byBpbnQgYnkgc3RyaXBwaW5nIGRlY2ltYWwgcGxhY2VzLlwiXHJcbiBbeF1cclxuIChmaXggeCkpXHJcbiJ9IHs6c3ltIGpzLWtleXMsIDptZXRhIHs6ZG9jICJSZXR1cm4gdGhlIEphdmFTY3JpcHQga2V5cyBmb3IgYW4gb2JqZWN0LiIsIDphcmdsaXN0cyAoW29ial0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGpzLWtleXNcclxuIFwiUmV0dXJuIHRoZSBKYXZhU2NyaXB0IGtleXMgZm9yIGFuIG9iamVjdC5cIlxyXG4gW29ial1cclxuIChnb2JqZWN0L2dldEtleXMgb2JqKSlcclxuIn0gezpzeW0gaW5zdC1tcyosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbaW5zdF0pfSwgOnByb3RvY29sIEluc3R9IHs6c3ltIGtleXdvcmQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJuIHRydWUgaWYgeCBpcyBhIEtleXdvcmQiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxyXG4ga2V5d29yZD9cclxuIFwiUmV0dXJuIHRydWUgaWYgeCBpcyBhIEtleXdvcmRcIlxyXG4gW3hdXHJcbiAoaW5zdGFuY2U/IEtleXdvcmQgeCkpXHJcbiJ9IHs6c3ltIGFycmF5LWl0ZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gYXJyYXktaXRlciBbeF0gKEFycmF5SXRlci4geCAwKSlcclxuIn0gezpzeW0gZm9yY2UsIDptZXRhIHs6ZG9jICJJZiB4IGlzIGEgRGVsYXksIHJldHVybnMgdGhlIChwb3NzaWJseSBjYWNoZWQpIHZhbHVlIG9mIGl0cyBleHByZXNzaW9uLCBlbHNlIHJldHVybnMgeCIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBmb3JjZVxyXG4gXCJJZiB4IGlzIGEgRGVsYXksIHJldHVybnMgdGhlIChwb3NzaWJseSBjYWNoZWQpIHZhbHVlIG9mIGl0cyBleHByZXNzaW9uLCBlbHNlIHJldHVybnMgeFwiXHJcbiBbeF1cclxuIChpZiAoZGVsYXk/IHgpIChkZXJlZiB4KSB4KSlcclxuIn0gezpzeW0gZ3JvdXAtYnksIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbWFwIG9mIHRoZSBlbGVtZW50cyBvZiBjb2xsIGtleWVkIGJ5IHRoZSByZXN1bHQgb2ZcbiAgZiBvbiBlYWNoIGVsZW1lbnQuIFRoZSB2YWx1ZSBhdCBlYWNoIGtleSB3aWxsIGJlIGEgdmVjdG9yIG9mIHRoZVxuICBjb3JyZXNwb25kaW5nIGVsZW1lbnRzLCBpbiB0aGUgb3JkZXIgdGhleSBhcHBlYXJlZCBpbiBjb2xsLiIsIDphcmdsaXN0cyAoW2YgY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGdyb3VwLWJ5XHJcbiBcIlJldHVybnMgYSBtYXAgb2YgdGhlIGVsZW1lbnRzIG9mIGNvbGwga2V5ZWQgYnkgdGhlIHJlc3VsdCBvZlxcbiAgZiBvbiBlYWNoIGVsZW1lbnQuIFRoZSB2YWx1ZSBhdCBlYWNoIGtleSB3aWxsIGJlIGEgdmVjdG9yIG9mIHRoZVxcbiAgY29ycmVzcG9uZGluZyBlbGVtZW50cywgaW4gdGhlIG9yZGVyIHRoZXkgYXBwZWFyZWQgaW4gY29sbC5cIlxyXG4gW2YgY29sbF1cclxuIChwZXJzaXN0ZW50IVxyXG4gIChyZWR1Y2VcclxuICAgKGZuIFtyZXQgeF0gKGxldCBbayAoZiB4KV0gKGFzc29jISByZXQgayAoY29uaiAoZ2V0IHJldCBrIFtdKSB4KSkpKVxyXG4gICAodHJhbnNpZW50IHt9KVxyXG4gICBjb2xsKSkpXHJcbiJ9IHs6c3ltIC1yc2VxLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHNlcSBvZiB0aGUgaXRlbXMgaW4gY29sbCBpbiByZXZlcnNlZCBvcmRlci4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6cHJvdG9jb2wgSVJldmVyc2libGV9IHs6c3ltIHBybiwgOm1ldGEgezpkb2MgIlNhbWUgYXMgcHIgZm9sbG93ZWQgYnkgKG5ld2xpbmUpLiIsIDphcmdsaXN0cyAoWyYgb2Jqc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHByblxyXG4gXCJTYW1lIGFzIHByIGZvbGxvd2VkIGJ5IChuZXdsaW5lKS5cIlxyXG4gWyYgb2Jqc11cclxuIChwci13aXRoLW9wdHMgb2JqcyAocHItb3B0cykpXHJcbiAod2hlbiAqcHJpbnQtbmV3bGluZSogKG5ld2xpbmUgKHByLW9wdHMpKSkpXHJcbiJ9IHs6c3ltIGRlZmF1bHQtZGlzcGF0Y2gtdmFsLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBtdWx0aW1ldGhvZCwgcmV0dXJuIGl0J3MgZGVmYXVsdC1kaXNwYXRjaC12YWwuIiwgOmFyZ2xpc3RzIChbbXVsdGlmbl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGRlZmF1bHQtZGlzcGF0Y2gtdmFsXHJcbiBcIkdpdmVuIGEgbXVsdGltZXRob2QsIHJldHVybiBpdCdzIGRlZmF1bHQtZGlzcGF0Y2gtdmFsLlwiXHJcbiBbbXVsdGlmbl1cclxuICgtZGVmYXVsdC1kaXNwYXRjaC12YWwgbXVsdGlmbikpXHJcbiJ9IHs6c3ltIGpzLWl0ZXJhYmxlPywgOm1ldGEgezpkb2MgIlJldHVybiB0cnVlIGlmIHggaGFzIGEgSmF2YVNjcmlwdCBpdGVyYXRvciBwcm9wZXJ0eSIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBqcy1pdGVyYWJsZT9cclxuIFwiUmV0dXJuIHRydWUgaWYgeCBoYXMgYSBKYXZhU2NyaXB0IGl0ZXJhdG9yIHByb3BlcnR5XCJcclxuIFt4XVxyXG4gKGFuZCAobm90IChuaWw/IHgpKSAobm90IChuaWw/IChqcyogXCJ+e31bfnt9XVwiIHggSVRFUl9TWU1CT0wpKSkpKVxyXG4ifSB7OnN5bSB1bmNoZWNrZWQtbXVsdGlwbHksIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBwcm9kdWN0IG9mIG51bXMuICgqKSByZXR1cm5zIDEuIiwgOmFyZ2xpc3RzIFtbXSBbeF0gW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiB1bmNoZWNrZWQtbXVsdGlwbHlcclxuIFwiUmV0dXJucyB0aGUgcHJvZHVjdCBvZiBudW1zLiAoKikgcmV0dXJucyAxLlwiXHJcbiAoW10gMSlcclxuIChbeF0geClcclxuIChbeCB5XSAoY2xqcy5jb3JlL3VuY2hlY2tlZC1tdWx0aXBseSB4IHkpKVxyXG4gKFt4IHkgJiBtb3JlXVxyXG4gIChyZWR1Y2UgdW5jaGVja2VkLW11bHRpcGx5IChjbGpzLmNvcmUvdW5jaGVja2VkLW11bHRpcGx5IHggeSkgbW9yZSkpKVxyXG4ifSB7OnN5bSBldmVuPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiBuIGlzIGV2ZW4sIHRocm93cyBhbiBleGNlcHRpb24gaWYgbiBpcyBub3QgYW4gaW50ZWdlciIsIDphcmdsaXN0cyAoW25dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBldmVuP1xyXG4gXCJSZXR1cm5zIHRydWUgaWYgbiBpcyBldmVuLCB0aHJvd3MgYW4gZXhjZXB0aW9uIGlmIG4gaXMgbm90IGFuIGludGVnZXJcIlxyXG4gW25dXHJcbiAoaWZcclxuICAoaW50ZWdlcj8gbilcclxuICAoemVybz8gKGJpdC1hbmQgbiAxKSlcclxuICAodGhyb3cgKGpzL0Vycm9yLiAoc3RyIFwiQXJndW1lbnQgbXVzdCBiZSBhbiBpbnRlZ2VyOiBcIiBuKSkpKSlcclxuIn0gezpzeW0gZXM2LWl0ZXJhdG9yLXNlcSwgOm1ldGEgezpkb2MgIkVYUEVSSU1FTlRBTDogR2l2ZW4gYW4gRVMyMDE1IGNvbXBhdGlibGUgaXRlcmF0b3IgcmV0dXJuIGEgc2VxLiIsIDphcmdsaXN0cyAoW2l0ZXJdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBlczYtaXRlcmF0b3Itc2VxXHJcbiBcIkVYUEVSSU1FTlRBTDogR2l2ZW4gYW4gRVMyMDE1IGNvbXBhdGlibGUgaXRlcmF0b3IgcmV0dXJuIGEgc2VxLlwiXHJcbiBbaXRlcl1cclxuIChsZXRcclxuICBbdiAoLm5leHQgaXRlcildXHJcbiAgKGlmICguLWRvbmUgdikgbmlsIChFUzZJdGVyYXRvclNlcS4gKC4tdmFsdWUgdikgaXRlciBuaWwpKSkpXHJcbiJ9IHs6c3ltIHVuY2hlY2tlZC1kZWMsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbnVtYmVyIG9uZSBsZXNzIHRoYW4geCwgYW4gaW50LiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB1bmNoZWNrZWQtZGVjXHJcbiBcIlJldHVybnMgYSBudW1iZXIgb25lIGxlc3MgdGhhbiB4LCBhbiBpbnQuXCJcclxuIFt4XVxyXG4gKGNsanMuY29yZS91bmNoZWNrZWQtZGVjIHgpKVxyXG4ifSB7OnN5bSBJbnN0LCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAoaW5zdC1tcyopfSB7OnN5bSBwZXJzaXN0ZW50LWFycmF5LW1hcC1zZXEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbYXJyIGkgX21ldGFdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBwZXJzaXN0ZW50LWFycmF5LW1hcC1zZXFcclxuIFthcnIgaSBfbWV0YV1cclxuICh3aGVuXHJcbiAgKDw9IGkgKC0gKGFsZW5ndGggYXJyKSAyKSlcclxuICAoUGVyc2lzdGVudEFycmF5TWFwU2VxLiBhcnIgaSBfbWV0YSkpKVxyXG4ifSB7OnN5bSB0YWdnZWQtbGl0ZXJhbD8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgaXMgdGhlIGRhdGEgcmVwcmVzZW50YXRpb24gb2YgYSB0YWdnZWQgbGl0ZXJhbCIsIDphcmdsaXN0cyAoW3ZhbHVlXSl9LCA6c291cmNlICIoZGVmblxyXG4gdGFnZ2VkLWxpdGVyYWw/XHJcbiBcIlJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBpcyB0aGUgZGF0YSByZXByZXNlbnRhdGlvbiBvZiBhIHRhZ2dlZCBsaXRlcmFsXCJcclxuIFt2YWx1ZV1cclxuIChpbnN0YW5jZT8gVGFnZ2VkTGl0ZXJhbCB2YWx1ZSkpXHJcbiJ9IHs6c3ltIGRvdWJsZS1hcnJheSwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYW4gYXJyYXkgb2YgZG91Ymxlcy4gRG9lcyBub3QgY29lcmNlIGFycmF5LCBwcm92aWRlZCBmb3IgY29tcGF0aWJpbGl0eVxuICB3aXRoIENsb2p1cmUuIiwgOmFyZ2xpc3RzIFtbc2l6ZS1vci1zZXFdIFtzaXplIGluaXQtdmFsLW9yLXNlcV1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGRvdWJsZS1hcnJheVxyXG4gXCJDcmVhdGVzIGFuIGFycmF5IG9mIGRvdWJsZXMuIERvZXMgbm90IGNvZXJjZSBhcnJheSwgcHJvdmlkZWQgZm9yIGNvbXBhdGliaWxpdHlcXG4gIHdpdGggQ2xvanVyZS5cIlxyXG4gKFtzaXplLW9yLXNlcV1cclxuICAoaWZcclxuICAgKG51bWJlcj8gc2l6ZS1vci1zZXEpXHJcbiAgIChkb3VibGUtYXJyYXkgc2l6ZS1vci1zZXEgbmlsKVxyXG4gICAoaW50by1hcnJheSBzaXplLW9yLXNlcSkpKVxyXG4gKFtzaXplIGluaXQtdmFsLW9yLXNlcV1cclxuICAobGV0XHJcbiAgIFthIChtYWtlLWFycmF5IHNpemUpXVxyXG4gICAoaWZcclxuICAgIChzZXE/IGluaXQtdmFsLW9yLXNlcSlcclxuICAgIChsZXRcclxuICAgICBbcyAoc2VxIGluaXQtdmFsLW9yLXNlcSldXHJcbiAgICAgKGxvb3BcclxuICAgICAgW2kgMCBzIHNdXHJcbiAgICAgIChpZlxyXG4gICAgICAgKGFuZCBzICg8IGkgc2l6ZSkpXHJcbiAgICAgICAoZG8gKGFzZXQgYSBpIChmaXJzdCBzKSkgKHJlY3VyIChpbmMgaSkgKG5leHQgcykpKVxyXG4gICAgICAgYSkpKVxyXG4gICAgKGRvIChkb3RpbWVzIFtpIHNpemVdIChhc2V0IGEgaSBpbml0LXZhbC1vci1zZXEpKSBhKSkpKSlcclxuIn0gezpzeW0gY3JlYXRlLW5zLCA6bWV0YSB7OmRvYyAiQ3JlYXRlIGEgbmV3IG5hbWVzcGFjZSBuYW1lZCBieSB0aGUgc3ltYm9sLiBCb290c3RyYXAgb25seS4iLCA6YXJnbGlzdHMgW1tzeW1dIFtzeW0gbnMtb2JqXV19LCA6c291cmNlICIoZGVmblxyXG4gY3JlYXRlLW5zXHJcbiBcIkNyZWF0ZSBhIG5ldyBuYW1lc3BhY2UgbmFtZWQgYnkgdGhlIHN5bWJvbC4gQm9vdHN0cmFwIG9ubHkuXCJcclxuIChbc3ltXSAoY3JlYXRlLW5zIHN5bSAoZmluZC1ucy1vYmogc3ltKSkpXHJcbiAoW3N5bSBucy1vYmpdIChOYW1lc3BhY2UuIG5zLW9iaiBzeW0pKSlcclxuIn0gezpzeW0gZGVmbiwgOm1ldGEgezphcmdsaXN0cyAocXVvdGUgKFtuYW1lIGRvYy1zdHJpbmc/IGF0dHItbWFwPyBbcGFyYW1zKl0gcHJlcG9zdC1tYXA/IGJvZHldIFtuYW1lIGRvYy1zdHJpbmc/IGF0dHItbWFwPyAoW3BhcmFtcypdIHByZXBvc3QtbWFwPyBib2R5KSArIGF0dHItbWFwP10pKSwgOmRvYyAiU2FtZSBhcyAoZGVmIG5hbWUgKGNvcmUvZm4gW3BhcmFtcyogXSBleHBycyopKSBvciAoZGVmXG4gICAgbmFtZSAoY29yZS9mbiAoW3BhcmFtcyogXSBleHBycyopKykpIHdpdGggYW55IGRvYy1zdHJpbmcgb3IgYXR0cnMgYWRkZWRcbiAgICB0byB0aGUgdmFyIG1ldGFkYXRhLiBwcmVwb3N0LW1hcCBkZWZpbmVzIGEgbWFwIHdpdGggb3B0aW9uYWwga2V5c1xuICAgIDpwcmUgYW5kIDpwb3N0IHRoYXQgY29udGFpbiBjb2xsZWN0aW9ucyBvZiBwcmUgb3IgcG9zdCBjb25kaXRpb25zLiJ9LCA6c291cmNlICIoZGVmXHJcbiBkZWZuXHJcbiAoY29yZS9mblxyXG4gIGRlZm5cclxuICBbJmZvcm0gJmVudiBuYW1lICYgZmRlY2xdXHJcbiAgKGlmXHJcbiAgIChjb3JlL2luc3RhbmNlPyAjPyg6Y2xqIGNsb2p1cmUubGFuZy5TeW1ib2wgOmNsanMgU3ltYm9sKSBuYW1lKVxyXG4gICBuaWxcclxuICAgKHRocm93XHJcbiAgICAjPyg6Y2xqIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24uIFwiRmlyc3QgYXJndW1lbnQgdG8gZGVmbiBtdXN0IGJlIGEgc3ltYm9sXCIpIDpjbGpzIChqcy9FcnJvci4gXCJGaXJzdCBhcmd1bWVudCB0byBkZWZuIG11c3QgYmUgYSBzeW1ib2xcIikpKSlcclxuICAoY29yZS9sZXRcclxuICAgW21cclxuICAgIChpZiAoY29yZS9zdHJpbmc/IChmaXJzdCBmZGVjbCkpIHs6ZG9jIChmaXJzdCBmZGVjbCl9IHt9KVxyXG4gICAgZmRlY2xcclxuICAgIChpZiAoY29yZS9zdHJpbmc/IChmaXJzdCBmZGVjbCkpIChuZXh0IGZkZWNsKSBmZGVjbClcclxuICAgIG1cclxuICAgIChpZiAobWFwPyAoZmlyc3QgZmRlY2wpKSAoY29uaiBtIChmaXJzdCBmZGVjbCkpIG0pXHJcbiAgICBmZGVjbFxyXG4gICAgKGlmIChtYXA/IChmaXJzdCBmZGVjbCkpIChuZXh0IGZkZWNsKSBmZGVjbClcclxuICAgIGZkZWNsXHJcbiAgICAoaWYgKHZlY3Rvcj8gKGZpcnN0IGZkZWNsKSkgKGNvcmUvbGlzdCBmZGVjbCkgZmRlY2wpXHJcbiAgICBtXHJcbiAgICAoaWYgKG1hcD8gKGxhc3QgZmRlY2wpKSAoY29uaiBtIChsYXN0IGZkZWNsKSkgbSlcclxuICAgIGZkZWNsXHJcbiAgICAoaWYgKG1hcD8gKGxhc3QgZmRlY2wpKSAoYnV0bGFzdCBmZGVjbCkgZmRlY2wpXHJcbiAgICBtXHJcbiAgICAoY29uaiB7OmFyZ2xpc3RzIChjb3JlL2xpc3QgJ3F1b3RlIChzaWdzIGZkZWNsKSl9IG0pXHJcbiAgICBtXHJcbiAgICAoY29uaiAoaWYgKG1ldGEgbmFtZSkgKG1ldGEgbmFtZSkge30pIG0pXVxyXG4gICAoY29yZS9jb25kXHJcbiAgICAobXVsdGktYXJpdHktZm4/IGZkZWNsKVxyXG4gICAgKG11bHRpLWFyaXR5LWZuXHJcbiAgICAgbmFtZVxyXG4gICAgIChpZlxyXG4gICAgICAoY29tcC9jaGVja2luZy10eXBlcz8pXHJcbiAgICAgICh1cGRhdGUtaW4gbSBbOmpzZG9jXSBjb25qIFwiQHBhcmFtIHsuLi4qfSB2YXJfYXJnc1wiKVxyXG4gICAgICBtKVxyXG4gICAgIGZkZWNsXHJcbiAgICAgKDpkZWYtZW1pdHMtdmFyICZlbnYpKVxyXG4gICAgKHZhcmlhZGljLWZuPyBmZGVjbClcclxuICAgICh2YXJpYWRpYy1mblxyXG4gICAgIG5hbWVcclxuICAgICAoaWZcclxuICAgICAgKGNvbXAvY2hlY2tpbmctdHlwZXM/KVxyXG4gICAgICAodXBkYXRlLWluIG0gWzpqc2RvY10gY29uaiBcIkBwYXJhbSB7Li4uKn0gdmFyX2FyZ3NcIilcclxuICAgICAgbSlcclxuICAgICBmZGVjbFxyXG4gICAgICg6ZGVmLWVtaXRzLXZhciAmZW52KSlcclxuICAgIDplbHNlXHJcbiAgICAoY29yZS9saXN0ICdkZWYgKHdpdGgtbWV0YSBuYW1lIG0pIChjb25zICdjbGpzLmNvcmUvZm4gZmRlY2wpKSkpKSlcclxuIn0gezpzeW0gc3ByZWFkLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2FyZ2xpc3RdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBzcHJlYWRcclxuIFthcmdsaXN0XVxyXG4gKHdoZW4tbm90XHJcbiAgKG5pbD8gYXJnbGlzdClcclxuICAobGV0XHJcbiAgIFtuIChuZXh0IGFyZ2xpc3QpXVxyXG4gICAoaWZcclxuICAgIChuaWw/IG4pXHJcbiAgICAoc2VxIChmaXJzdCBhcmdsaXN0KSlcclxuICAgIChjb25zIChmaXJzdCBhcmdsaXN0KSAoc3ByZWFkIG4pKSkpKSlcclxuIn0gezpzeW0gcnNlcSwgOm1ldGEgezpkb2MgIlJldHVybnMsIGluIGNvbnN0YW50IHRpbWUsIGEgc2VxIG9mIHRoZSBpdGVtcyBpbiByZXYgKHdoaWNoXG4gIGNhbiBiZSBhIHZlY3RvciBvciBzb3J0ZWQtbWFwKSwgaW4gcmV2ZXJzZSBvcmRlci4gSWYgcmV2IGlzIGVtcHR5IHJldHVybnMgbmlsIiwgOmFyZ2xpc3RzIChbcmV2XSl9LCA6c291cmNlICIoZGVmblxyXG4gcnNlcVxyXG4gXCJSZXR1cm5zLCBpbiBjb25zdGFudCB0aW1lLCBhIHNlcSBvZiB0aGUgaXRlbXMgaW4gcmV2ICh3aGljaFxcbiAgY2FuIGJlIGEgdmVjdG9yIG9yIHNvcnRlZC1tYXApLCBpbiByZXZlcnNlIG9yZGVyLiBJZiByZXYgaXMgZW1wdHkgcmV0dXJucyBuaWxcIlxyXG4gW3Jldl1cclxuICgtcnNlcSByZXYpKVxyXG4ifSB7OnN5bSBleC1jYXVzZSwgOm1ldGEgezpkb2MgIlJldHVybnMgZXhjZXB0aW9uIGNhdXNlIChhbiBFcnJvciAvIEV4Y2VwdGlvbkluZm8pIGlmIGV4IGlzIGFuXG4gIEV4Y2VwdGlvbkluZm8uXG4gIE90aGVyd2lzZSByZXR1cm5zIG5pbC4iLCA6YXJnbGlzdHMgKFtleF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGV4LWNhdXNlXHJcbiBcIlJldHVybnMgZXhjZXB0aW9uIGNhdXNlIChhbiBFcnJvciAvIEV4Y2VwdGlvbkluZm8pIGlmIGV4IGlzIGFuXFxuICBFeGNlcHRpb25JbmZvLlxcbiAgT3RoZXJ3aXNlIHJldHVybnMgbmlsLlwiXHJcbiBbZXhdXHJcbiAod2hlbiAoaW5zdGFuY2U/IEV4Y2VwdGlvbkluZm8gZXgpICguLWNhdXNlIGV4KSkpXHJcbiJ9IHs6c3ltIElSZXNldCwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhZGRpbmcgcmVzZXR0aW5nIGZ1bmN0aW9uYWxpdHkuIn0sIDptZXRob2RzICgtcmVzZXQhKX0gezpzeW0gSUVtcHR5YWJsZUNvbGxlY3Rpb24sIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgY3JlYXRpbmcgYW4gZW1wdHkgY29sbGVjdGlvbi4ifSwgOm1ldGhvZHMgKC1lbXB0eSl9IHs6c3ltIGV4LW1lc3NhZ2UsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBtZXNzYWdlIGF0dGFjaGVkIHRvIHRoZSBnaXZlbiBFcnJvciAvIEV4Y2VwdGlvbkluZm8gb2JqZWN0LlxuICBGb3Igbm9uLUVycm9ycyByZXR1cm5zIG5pbC4iLCA6YXJnbGlzdHMgKFtleF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGV4LW1lc3NhZ2VcclxuIFwiUmV0dXJucyB0aGUgbWVzc2FnZSBhdHRhY2hlZCB0byB0aGUgZ2l2ZW4gRXJyb3IgLyBFeGNlcHRpb25JbmZvIG9iamVjdC5cXG4gIEZvciBub24tRXJyb3JzIHJldHVybnMgbmlsLlwiXHJcbiBbZXhdXHJcbiAod2hlbiAoaW5zdGFuY2U/IGpzL0Vycm9yIGV4KSAoLi1tZXNzYWdlIGV4KSkpXHJcbiJ9IHs6c3ltICpwcmludC1mbi1ib2RpZXMqLCA6bWV0YSB7OmRvYyAiKnByaW50LWZucy1ib2RpZXMqIGNvbnRyb2xzIHdoZXRoZXIgZnVuY3Rpb25zIHByaW50IHRoZWlyIHNvdXJjZSBvclxuICAgIG9ubHkgdGhlaXIgbmFtZXMuIn0sIDpzb3VyY2UgIihkZWYgKnByaW50LWZuLWJvZGllcyogZmFsc2UpXHJcbiJ9IHs6c3ltIHN0cmluZy1wcmludCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxyXG4gc3RyaW5nLXByaW50XHJcbiBbeF1cclxuICh3aGVuXHJcbiAgKG5pbD8gKnByaW50LWZuKilcclxuICAodGhyb3dcclxuICAgKGpzL0Vycm9yLiBcIk5vICpwcmludC1mbiogZm4gc2V0IGZvciBldmFsdWF0aW9uIGVudmlyb25tZW50XCIpKSlcclxuICgqcHJpbnQtZm4qIHgpXHJcbiBuaWwpXHJcbiJ9IHs6c3ltIGZsb2F0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGZsb2F0IFt4XSB4KVxyXG4ifSB7OnN5bSBJUmVjb3JkLCA6bWV0YSB7OmRvYyAiTWFya2VyIGludGVyZmFjZSBpbmRpY2F0aW5nIGEgcmVjb3JkIG9iamVjdCJ9LCA6bWV0aG9kcyAoKX0gezpzeW0gcHItc3RyLCA6bWV0YSB7OmRvYyAicHIgdG8gYSBzdHJpbmcsIHJldHVybmluZyBpdC4gRnVuZGFtZW50YWwgZW50cnlwb2ludCB0byBJUHJpbnRXaXRoV3JpdGVyLiIsIDphcmdsaXN0cyAoWyYgb2Jqc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHByLXN0clxyXG4gXCJwciB0byBhIHN0cmluZywgcmV0dXJuaW5nIGl0LiBGdW5kYW1lbnRhbCBlbnRyeXBvaW50IHRvIElQcmludFdpdGhXcml0ZXIuXCJcclxuIFsmIG9ianNdXHJcbiAocHItc3RyLXdpdGgtb3B0cyBvYmpzIChwci1vcHRzKSkpXHJcbiJ9IHs6c3ltIGVzNi1zZXQtZW50cmllcy1pdGVyYXRvciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxyXG4gZXM2LXNldC1lbnRyaWVzLWl0ZXJhdG9yXHJcbiBbY29sbF1cclxuIChFUzZTZXRFbnRyaWVzSXRlcmF0b3IuIChzZXEgY29sbCkpKVxyXG4ifSB7OnN5bSBjb25jYXQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbGF6eSBzZXEgcmVwcmVzZW50aW5nIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSBlbGVtZW50cyBpbiB0aGUgc3VwcGxpZWQgY29sbHMuIiwgOmFyZ2xpc3RzIFtbXSBbeF0gW3ggeV0gW3ggeSAmIHpzXV19LCA6c291cmNlICIoZGVmblxyXG4gY29uY2F0XHJcbiBcIlJldHVybnMgYSBsYXp5IHNlcSByZXByZXNlbnRpbmcgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIGVsZW1lbnRzIGluIHRoZSBzdXBwbGllZCBjb2xscy5cIlxyXG4gKFtdIChsYXp5LXNlcSBuaWwpKVxyXG4gKFt4XSAobGF6eS1zZXEgeCkpXHJcbiAoW3ggeV1cclxuICAobGF6eS1zZXFcclxuICAgKGxldFxyXG4gICAgW3MgKHNlcSB4KV1cclxuICAgIChpZlxyXG4gICAgIHNcclxuICAgICAoaWZcclxuICAgICAgKGNodW5rZWQtc2VxPyBzKVxyXG4gICAgICAoY2h1bmstY29ucyAoY2h1bmstZmlyc3QgcykgKGNvbmNhdCAoY2h1bmstcmVzdCBzKSB5KSlcclxuICAgICAgKGNvbnMgKGZpcnN0IHMpIChjb25jYXQgKHJlc3QgcykgeSkpKVxyXG4gICAgIHkpKSkpXHJcbiAoW3ggeSAmIHpzXVxyXG4gIChsZXRcclxuICAgW2NhdFxyXG4gICAgKGZuXHJcbiAgICAgY2F0XHJcbiAgICAgW3h5cyB6c11cclxuICAgICAobGF6eS1zZXFcclxuICAgICAgKGxldFxyXG4gICAgICAgW3h5cyAoc2VxIHh5cyldXHJcbiAgICAgICAoaWZcclxuICAgICAgICB4eXNcclxuICAgICAgICAoaWZcclxuICAgICAgICAgKGNodW5rZWQtc2VxPyB4eXMpXHJcbiAgICAgICAgIChjaHVuay1jb25zIChjaHVuay1maXJzdCB4eXMpIChjYXQgKGNodW5rLXJlc3QgeHlzKSB6cykpXHJcbiAgICAgICAgIChjb25zIChmaXJzdCB4eXMpIChjYXQgKHJlc3QgeHlzKSB6cykpKVxyXG4gICAgICAgICh3aGVuIHpzIChjYXQgKGZpcnN0IHpzKSAobmV4dCB6cykpKSkpKSldXHJcbiAgIChjYXQgKGNvbmNhdCB4IHkpIHpzKSkpKVxyXG4ifSB7OnN5bSAtbWV0aG9kcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttZl0pfSwgOnByb3RvY29sIElNdWx0aUZufSB7OnN5bSBqcy1yZXNlcnZlZCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYganMtcmVzZXJ2ZWQgbmlsKVxyXG4ifSB7OnN5bSBJRGVyZWZXaXRoVGltZW91dCwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKC1kZXJlZi13aXRoLXRpbWVvdXQpfSB7OnN5bSBzeW1ib2wsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgU3ltYm9sIHdpdGggdGhlIGdpdmVuIG5hbWVzcGFjZSBhbmQgbmFtZS4gQXJpdHktMSB3b3Jrc1xuICBvbiBzdHJpbmdzLCBrZXl3b3JkcywgYW5kIHZhcnMuIiwgOmFyZ2xpc3RzIFtbbmFtZV0gW25zIG5hbWVdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBzeW1ib2xcclxuIFwiUmV0dXJucyBhIFN5bWJvbCB3aXRoIHRoZSBnaXZlbiBuYW1lc3BhY2UgYW5kIG5hbWUuIEFyaXR5LTEgd29ya3NcXG4gIG9uIHN0cmluZ3MsIGtleXdvcmRzLCBhbmQgdmFycy5cIlxyXG4gKFtuYW1lXVxyXG4gIChjb25kXHJcbiAgIChzeW1ib2w/IG5hbWUpXHJcbiAgIG5hbWVcclxuICAgKHN0cmluZz8gbmFtZSlcclxuICAgKGxldFxyXG4gICAgW2lkeCAoLmluZGV4T2YgbmFtZSBcIi9cIildXHJcbiAgICAoaWZcclxuICAgICAoPCBpZHggMSlcclxuICAgICAoc3ltYm9sIG5pbCBuYW1lKVxyXG4gICAgIChzeW1ib2xcclxuICAgICAgKC5zdWJzdHJpbmcgbmFtZSAwIGlkeClcclxuICAgICAgKC5zdWJzdHJpbmcgbmFtZSAoaW5jIGlkeCkgKC4gbmFtZSAtbGVuZ3RoKSkpKSlcclxuICAgKHZhcj8gbmFtZSlcclxuICAgKC4tc3ltIG5hbWUpXHJcbiAgIChrZXl3b3JkPyBuYW1lKVxyXG4gICAocmVjdXIgKC4tZnFuIG5hbWUpKVxyXG4gICA6ZWxzZVxyXG4gICAodGhyb3cgKG5ldyBqcy9FcnJvciBcIm5vIGNvbnZlcnNpb24gdG8gc3ltYm9sXCIpKSkpXHJcbiAoW25zIG5hbWVdXHJcbiAgKGxldFxyXG4gICBbc3ltLXN0ciAoaWYtbm90IChuaWw/IG5zKSAoc3RyIG5zIFwiL1wiIG5hbWUpIG5hbWUpXVxyXG4gICAoU3ltYm9sLiBucyBuYW1lIHN5bS1zdHIgbmlsIG5pbCkpKSlcclxuIn0gezpzeW0gdG8tYXJyYXktMmQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgKHBvdGVudGlhbGx5LXJhZ2dlZCkgMi1kaW1lbnNpb25hbCBhcnJheVxuICBjb250YWluaW5nIHRoZSBjb250ZW50cyBvZiBjb2xsLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB0by1hcnJheS0yZFxyXG4gXCJSZXR1cm5zIGEgKHBvdGVudGlhbGx5LXJhZ2dlZCkgMi1kaW1lbnNpb25hbCBhcnJheVxcbiAgY29udGFpbmluZyB0aGUgY29udGVudHMgb2YgY29sbC5cIlxyXG4gW2NvbGxdXHJcbiAobGV0XHJcbiAgW3JldCAobWFrZS1hcnJheSAoY291bnQgY29sbCkpXVxyXG4gIChsb29wXHJcbiAgIFtpIDAgeHMgKHNlcSBjb2xsKV1cclxuICAgKHdoZW4tbm90XHJcbiAgICAobmlsPyB4cylcclxuICAgIChhc2V0IHJldCBpICh0by1hcnJheSAoZmlyc3QgeHMpKSlcclxuICAgIChyZWN1ciAoaW5jIGkpIChuZXh0IHhzKSkpKVxyXG4gIHJldCkpXHJcbiJ9IHs6c3ltIEV4Y2VwdGlvbkluZm8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbWVzc2FnZSBkYXRhIGNhdXNlXSl9LCA6c291cmNlICIoZGVmblxyXG4gRXhjZXB0aW9uSW5mb1xyXG4gW21lc3NhZ2UgZGF0YSBjYXVzZV1cclxuIChsZXRcclxuICBbZSAoanMvRXJyb3IuIG1lc3NhZ2UpXVxyXG4gICh0aGlzLWFzXHJcbiAgIHRoaXNcclxuICAgKHNldCEgKC4tbWVzc2FnZSB0aGlzKSBtZXNzYWdlKVxyXG4gICAoc2V0ISAoLi1kYXRhIHRoaXMpIGRhdGEpXHJcbiAgIChzZXQhICguLWNhdXNlIHRoaXMpIGNhdXNlKVxyXG4gICAoZG9cclxuICAgIChzZXQhICguLW5hbWUgdGhpcykgKC4tbmFtZSBlKSlcclxuICAgIChzZXQhICguLWRlc2NyaXB0aW9uIHRoaXMpICguLWRlc2NyaXB0aW9uIGUpKVxyXG4gICAgKHNldCEgKC4tbnVtYmVyIHRoaXMpICguLW51bWJlciBlKSlcclxuICAgIChzZXQhICguLWZpbGVOYW1lIHRoaXMpICguLWZpbGVOYW1lIGUpKVxyXG4gICAgKHNldCEgKC4tbGluZU51bWJlciB0aGlzKSAoLi1saW5lTnVtYmVyIGUpKVxyXG4gICAgKHNldCEgKC4tY29sdW1uTnVtYmVyIHRoaXMpICguLWNvbHVtbk51bWJlciBlKSlcclxuICAgIChzZXQhICguLXN0YWNrIHRoaXMpICguLXN0YWNrIGUpKSlcclxuICAgdGhpcykpKVxyXG4ifSB7OnN5bSBtb2QsIDptZXRhIHs6ZG9jICJNb2R1bHVzIG9mIG51bSBhbmQgZGl2LiBUcnVuY2F0ZXMgdG93YXJkIG5lZ2F0aXZlIGluZmluaXR5LiIsIDphcmdsaXN0cyAoW24gZF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIG1vZFxyXG4gXCJNb2R1bHVzIG9mIG51bSBhbmQgZGl2LiBUcnVuY2F0ZXMgdG93YXJkIG5lZ2F0aXZlIGluZmluaXR5LlwiXHJcbiBbbiBkXVxyXG4gKGpzLW1vZCAoKyAoanMtbW9kIG4gZCkgZCkgZCkpXHJcbiJ9IHs6c3ltIElTZXQsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgYWRkaW5nIHNldCBmdW5jdGlvbmFsaXR5IHRvIGEgY29sbGVjdGlvbi4ifSwgOm1ldGhvZHMgKC1kaXNqb2luKX0gezpzeW0gcG9wLCA6bWV0YSB7OmRvYyAiRm9yIGEgbGlzdCBvciBxdWV1ZSwgcmV0dXJucyBhIG5ldyBsaXN0L3F1ZXVlIHdpdGhvdXQgdGhlIGZpcnN0XG4gIGl0ZW0sIGZvciBhIHZlY3RvciwgcmV0dXJucyBhIG5ldyB2ZWN0b3Igd2l0aG91dCB0aGUgbGFzdCBpdGVtLlxuICBOb3RlIC0gbm90IHRoZSBzYW1lIGFzIG5leHQvYnV0bGFzdC4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxyXG4gcG9wXHJcbiBcIkZvciBhIGxpc3Qgb3IgcXVldWUsIHJldHVybnMgYSBuZXcgbGlzdC9xdWV1ZSB3aXRob3V0IHRoZSBmaXJzdFxcbiAgaXRlbSwgZm9yIGEgdmVjdG9yLCByZXR1cm5zIGEgbmV3IHZlY3RvciB3aXRob3V0IHRoZSBsYXN0IGl0ZW0uXFxuICBOb3RlIC0gbm90IHRoZSBzYW1lIGFzIG5leHQvYnV0bGFzdC5cIlxyXG4gW2NvbGxdXHJcbiAod2hlbi1ub3QgKG5pbD8gY29sbCkgKC1wb3AgY29sbCkpKVxyXG4ifSB7OnN5bSBJUGVuZGluZywgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciB0eXBlcyB3aGljaCBjYW4gaGF2ZSBhIGRlZmVycmVkIHJlYWxpemF0aW9uLiBDdXJyZW50bHkgb25seVxuICBpbXBsZW1lbnRlZCBieSBEZWxheSBhbmQgTGF6eVNlcS4ifSwgOm1ldGhvZHMgKC1yZWFsaXplZD8pfSB7OnN5bSAtZW50cnkta2V5LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUga2V5IGZvciBlbnRyeS4iLCA6YXJnbGlzdHMgKFtjb2xsIGVudHJ5XSl9LCA6cHJvdG9jb2wgSVNvcnRlZH0gezpzeW0gQ0hBUl9NQVAsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXHJcbiBDSEFSX01BUFxyXG4gI2pzIHtcIl1cIiBcIl9SQlJBQ0tfXCIsIFwiJ1wiIFwiX1NJTkdMRVFVT1RFX1wiLCBcIj1cIiBcIl9FUV9cIiwgXCJcXFxcXFxcIlwiIFwiX0RPVUJMRVFVT1RFX1wiLCBcIiFcIiBcIl9CQU5HX1wiLCBcIipcIiBcIl9TVEFSX1wiLCBcIiVcIiBcIl9QRVJDRU5UX1wiLCBcInxcIiBcIl9CQVJfXCIsIFwiflwiIFwiX1RJTERFX1wiLCBcIi9cIiBcIl9TTEFTSF9cIiwgXCJcXFxcXFxcXFwiIFwiX0JTTEFTSF9cIiwgXCItXCIgXCJfXCIsIFwiP1wiIFwiX1FNQVJLX1wiLCBcIiZcIiBcIl9BTVBFUlNBTkRfXCIsIFwiOlwiIFwiX0NPTE9OX1wiLCBcIjxcIiBcIl9MVF9cIiwgXCJ7XCIgXCJfTEJSQUNFX1wiLCBcIn1cIiBcIl9SQlJBQ0VfXCIsIFwiW1wiIFwiX0xCUkFDS19cIiwgXCIjXCIgXCJfU0hBUlBfXCIsIFwiXlwiIFwiX0NBUkVUX1wiLCBcIitcIiBcIl9QTFVTX1wiLCBcIkBcIiBcIl9DSVJDQV9cIiwgXCI+XCIgXCJfR1RfXCJ9KVxyXG4ifSB7OnN5bSBkaXNzb2MhLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHRyYW5zaWVudCBtYXAgdGhhdCBkb2Vzbid0IGNvbnRhaW4gYSBtYXBwaW5nIGZvciBrZXkocykuIiwgOmFyZ2xpc3RzIFtbdGNvbGwga2V5XSBbdGNvbGwga2V5ICYga3NdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBkaXNzb2MhXHJcbiBcIlJldHVybnMgYSB0cmFuc2llbnQgbWFwIHRoYXQgZG9lc24ndCBjb250YWluIGEgbWFwcGluZyBmb3Iga2V5KHMpLlwiXHJcbiAoW3Rjb2xsIGtleV0gKC1kaXNzb2MhIHRjb2xsIGtleSkpXHJcbiAoW3Rjb2xsIGtleSAmIGtzXVxyXG4gIChsZXRcclxuICAgW250Y29sbCAoLWRpc3NvYyEgdGNvbGwga2V5KV1cclxuICAgKGlmIGtzIChyZWN1ciBudGNvbGwgKGZpcnN0IGtzKSAobmV4dCBrcykpIG50Y29sbCkpKSlcclxuIn0gezpzeW0gcmVkdWN0aW9ucywgOm1ldGEgezpkb2MgIlJldHVybnMgYSBsYXp5IHNlcSBvZiB0aGUgaW50ZXJtZWRpYXRlIHZhbHVlcyBvZiB0aGUgcmVkdWN0aW9uIChhc1xuICBwZXIgcmVkdWNlKSBvZiBjb2xsIGJ5IGYsIHN0YXJ0aW5nIHdpdGggaW5pdC4iLCA6YXJnbGlzdHMgW1tmIGNvbGxdIFtmIGluaXQgY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlZHVjdGlvbnNcclxuIFwiUmV0dXJucyBhIGxhenkgc2VxIG9mIHRoZSBpbnRlcm1lZGlhdGUgdmFsdWVzIG9mIHRoZSByZWR1Y3Rpb24gKGFzXFxuICBwZXIgcmVkdWNlKSBvZiBjb2xsIGJ5IGYsIHN0YXJ0aW5nIHdpdGggaW5pdC5cIlxyXG4gKFtmIGNvbGxdXHJcbiAgKGxhenktc2VxXHJcbiAgIChpZi1sZXRcclxuICAgIFtzIChzZXEgY29sbCldXHJcbiAgICAocmVkdWN0aW9ucyBmIChmaXJzdCBzKSAocmVzdCBzKSlcclxuICAgIChsaXN0IChmKSkpKSlcclxuIChbZiBpbml0IGNvbGxdXHJcbiAgKGlmXHJcbiAgIChyZWR1Y2VkPyBpbml0KVxyXG4gICAobGlzdCBAaW5pdClcclxuICAgKGNvbnNcclxuICAgIGluaXRcclxuICAgIChsYXp5LXNlcVxyXG4gICAgICh3aGVuLWxldFxyXG4gICAgICBbcyAoc2VxIGNvbGwpXVxyXG4gICAgICAocmVkdWN0aW9ucyBmIChmIGluaXQgKGZpcnN0IHMpKSAocmVzdCBzKSkpKSkpKSlcclxuIn0gezpzeW0gZmFzdC1wYXRoLXByb3RvY29sLXBhcnRpdGlvbnMtY291bnQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXHJcbiBmYXN0LXBhdGgtcHJvdG9jb2wtcGFydGl0aW9ucy1jb3VudFxyXG4gXCJ0b3RhbCBudW1iZXIgb2YgcGFydGl0aW9uc1wiXHJcbiAoY29yZS9sZXRcclxuICBbYyAoY291bnQgZmFzdC1wYXRoLXByb3RvY29scykgbSAoY29yZS9tb2QgYyAzMildXHJcbiAgKGlmIChjb3JlL3plcm8/IG0pIChjb3JlL3F1b3QgYyAzMikgKGNvcmUvaW5jIChjb3JlL3F1b3QgYyAzMikpKSkpXHJcbiJ9IHs6c3ltIGluZGV4ZWQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIGNvbGwgaW1wbGVtZW50cyBudGggaW4gY29uc3RhbnQgdGltZSIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBpbmRleGVkP1xyXG4gXCJSZXR1cm5zIHRydWUgaWYgY29sbCBpbXBsZW1lbnRzIG50aCBpbiBjb25zdGFudCB0aW1lXCJcclxuIFt4XVxyXG4gKHNhdGlzZmllcz8gSUluZGV4ZWQgeCkpXHJcbiJ9IHs6c3ltIC0sIDptZXRhIHs6ZG9jICJJZiBubyB5cyBhcmUgc3VwcGxpZWQsIHJldHVybnMgdGhlIG5lZ2F0aW9uIG9mIHgsIGVsc2Ugc3VidHJhY3RzXG4gIHRoZSB5cyBmcm9tIHggYW5kIHJldHVybnMgdGhlIHJlc3VsdC4iLCA6YXJnbGlzdHMgW1t4XSBbeCB5XSBbeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIC1cclxuIFwiSWYgbm8geXMgYXJlIHN1cHBsaWVkLCByZXR1cm5zIHRoZSBuZWdhdGlvbiBvZiB4LCBlbHNlIHN1YnRyYWN0c1xcbiAgdGhlIHlzIGZyb20geCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LlwiXHJcbiAoW3hdIChjbGpzLmNvcmUvLSB4KSlcclxuIChbeCB5XSAoY2xqcy5jb3JlLy0geCB5KSlcclxuIChbeCB5ICYgbW9yZV0gKHJlZHVjZSAtIChjbGpzLmNvcmUvLSB4IHkpIG1vcmUpKSlcclxuIn0gezpzeW0gLWVxdWl2LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIG8gYW5kIG90aGVyIGFyZSBlcXVhbCwgZmFsc2Ugb3RoZXJ3aXNlLiIsIDphcmdsaXN0cyAoW28gb3RoZXJdKX0sIDpwcm90b2NvbCBJRXF1aXZ9IHs6c3ltIGFzc29jISwgOm1ldGEgezpkb2MgIldoZW4gYXBwbGllZCB0byBhIHRyYW5zaWVudCBtYXAsIGFkZHMgbWFwcGluZyBvZiBrZXkocykgdG9cbiAgdmFsKHMpLiBXaGVuIGFwcGxpZWQgdG8gYSB0cmFuc2llbnQgdmVjdG9yLCBzZXRzIHRoZSB2YWwgYXQgaW5kZXguXG4gIE5vdGUgLSBpbmRleCBtdXN0IGJlIDw9IChjb3VudCB2ZWN0b3IpLiBSZXR1cm5zIGNvbGwuIiwgOmFyZ2xpc3RzIFtbdGNvbGwga2V5IHZhbF0gW3Rjb2xsIGtleSB2YWwgJiBrdnNdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBhc3NvYyFcclxuIFwiV2hlbiBhcHBsaWVkIHRvIGEgdHJhbnNpZW50IG1hcCwgYWRkcyBtYXBwaW5nIG9mIGtleShzKSB0b1xcbiAgdmFsKHMpLiBXaGVuIGFwcGxpZWQgdG8gYSB0cmFuc2llbnQgdmVjdG9yLCBzZXRzIHRoZSB2YWwgYXQgaW5kZXguXFxuICBOb3RlIC0gaW5kZXggbXVzdCBiZSA8PSAoY291bnQgdmVjdG9yKS4gUmV0dXJucyBjb2xsLlwiXHJcbiAoW3Rjb2xsIGtleSB2YWxdICgtYXNzb2MhIHRjb2xsIGtleSB2YWwpKVxyXG4gKFt0Y29sbCBrZXkgdmFsICYga3ZzXVxyXG4gIChsZXRcclxuICAgW250Y29sbCAoLWFzc29jISB0Y29sbCBrZXkgdmFsKV1cclxuICAgKGlmXHJcbiAgICBrdnNcclxuICAgIChyZWN1ciBudGNvbGwgKGZpcnN0IGt2cykgKHNlY29uZCBrdnMpIChubmV4dCBrdnMpKVxyXG4gICAgbnRjb2xsKSkpKVxyXG4ifSB7OnN5bSBoYXNoLXNldCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBuZXcgaGFzaCBzZXQgd2l0aCBzdXBwbGllZCBrZXlzLiAgQW55IGVxdWFsIGtleXMgYXJlXG4gIGhhbmRsZWQgYXMgaWYgYnkgcmVwZWF0ZWQgdXNlcyBvZiBjb25qLiIsIDphcmdsaXN0cyBbW10gWyYga2V5c11dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGhhc2gtc2V0XHJcbiBcIlJldHVybnMgYSBuZXcgaGFzaCBzZXQgd2l0aCBzdXBwbGllZCBrZXlzLiAgQW55IGVxdWFsIGtleXMgYXJlXFxuICBoYW5kbGVkIGFzIGlmIGJ5IHJlcGVhdGVkIHVzZXMgb2YgY29uai5cIlxyXG4gKFtdICN7fSlcclxuIChbJiBrZXlzXSAoc2V0IGtleXMpKSlcclxuIn0gezpzeW0gcmVkdWNlLWt2LCA6bWV0YSB7OmRvYyAiUmVkdWNlcyBhbiBhc3NvY2lhdGl2ZSBjb2xsZWN0aW9uLiBmIHNob3VsZCBiZSBhIGZ1bmN0aW9uIG9mIDNcbiAgYXJndW1lbnRzLiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgZiB0byBpbml0LCB0aGUgZmlyc3Qga2V5XG4gIGFuZCB0aGUgZmlyc3QgdmFsdWUgaW4gY29sbCwgdGhlbiBhcHBseWluZyBmIHRvIHRoYXQgcmVzdWx0IGFuZCB0aGVcbiAgMm5kIGtleSBhbmQgdmFsdWUsIGV0Yy4gSWYgY29sbCBjb250YWlucyBubyBlbnRyaWVzLCByZXR1cm5zIGluaXRcbiAgYW5kIGYgaXMgbm90IGNhbGxlZC4gTm90ZSB0aGF0IHJlZHVjZS1rdiBpcyBzdXBwb3J0ZWQgb24gdmVjdG9ycyxcbiAgd2hlcmUgdGhlIGtleXMgd2lsbCBiZSB0aGUgb3JkaW5hbHMuIiwgOmFyZ2xpc3RzIFtbZiBpbml0IGNvbGxdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiByZWR1Y2Uta3ZcclxuIFwiUmVkdWNlcyBhbiBhc3NvY2lhdGl2ZSBjb2xsZWN0aW9uLiBmIHNob3VsZCBiZSBhIGZ1bmN0aW9uIG9mIDNcXG4gIGFyZ3VtZW50cy4gUmV0dXJucyB0aGUgcmVzdWx0IG9mIGFwcGx5aW5nIGYgdG8gaW5pdCwgdGhlIGZpcnN0IGtleVxcbiAgYW5kIHRoZSBmaXJzdCB2YWx1ZSBpbiBjb2xsLCB0aGVuIGFwcGx5aW5nIGYgdG8gdGhhdCByZXN1bHQgYW5kIHRoZVxcbiAgMm5kIGtleSBhbmQgdmFsdWUsIGV0Yy4gSWYgY29sbCBjb250YWlucyBubyBlbnRyaWVzLCByZXR1cm5zIGluaXRcXG4gIGFuZCBmIGlzIG5vdCBjYWxsZWQuIE5vdGUgdGhhdCByZWR1Y2Uta3YgaXMgc3VwcG9ydGVkIG9uIHZlY3RvcnMsXFxuICB3aGVyZSB0aGUga2V5cyB3aWxsIGJlIHRoZSBvcmRpbmFscy5cIlxyXG4gKFtmIGluaXQgY29sbF0gKGlmLW5vdCAobmlsPyBjb2xsKSAoLWt2LXJlZHVjZSBjb2xsIGYgaW5pdCkgaW5pdCkpKVxyXG4ifSB7OnN5bSByZXNldCEsIDptZXRhIHs6ZG9jICJTZXRzIHRoZSB2YWx1ZSBvZiBhdG9tIHRvIG5ld3ZhbCB3aXRob3V0IHJlZ2FyZCBmb3IgdGhlXG4gIGN1cnJlbnQgdmFsdWUuIFJldHVybnMgbmV3LXZhbHVlLiIsIDphcmdsaXN0cyAoW2EgbmV3LXZhbHVlXSl9LCA6c291cmNlICIoZGVmblxyXG4gcmVzZXQhXHJcbiBcIlNldHMgdGhlIHZhbHVlIG9mIGF0b20gdG8gbmV3dmFsIHdpdGhvdXQgcmVnYXJkIGZvciB0aGVcXG4gIGN1cnJlbnQgdmFsdWUuIFJldHVybnMgbmV3LXZhbHVlLlwiXHJcbiBbYSBuZXctdmFsdWVdXHJcbiAoaWZcclxuICAoaW5zdGFuY2U/IEF0b20gYSlcclxuICAobGV0XHJcbiAgIFt2YWxpZGF0ZSAoLi12YWxpZGF0b3IgYSldXHJcbiAgICh3aGVuLW5vdFxyXG4gICAgKG5pbD8gdmFsaWRhdGUpXHJcbiAgICAod2hlbi1ub3RcclxuICAgICAodmFsaWRhdGUgbmV3LXZhbHVlKVxyXG4gICAgICh0aHJvdyAoanMvRXJyb3IuIFwiVmFsaWRhdG9yIHJlamVjdGVkIHJlZmVyZW5jZSBzdGF0ZVwiKSkpKVxyXG4gICAobGV0XHJcbiAgICBbb2xkLXZhbHVlICguLXN0YXRlIGEpXVxyXG4gICAgKHNldCEgKC4tc3RhdGUgYSkgbmV3LXZhbHVlKVxyXG4gICAgKHdoZW4tbm90XHJcbiAgICAgKG5pbD8gKC4td2F0Y2hlcyBhKSlcclxuICAgICAoLW5vdGlmeS13YXRjaGVzIGEgb2xkLXZhbHVlIG5ldy12YWx1ZSkpXHJcbiAgICBuZXctdmFsdWUpKVxyXG4gICgtcmVzZXQhIGEgbmV3LXZhbHVlKSkpXHJcbiJ9IHs6c3ltIG5hbWUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBuYW1lIFN0cmluZyBvZiBhIHN0cmluZywgc3ltYm9sIG9yIGtleXdvcmQuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIG5hbWVcclxuIFwiUmV0dXJucyB0aGUgbmFtZSBTdHJpbmcgb2YgYSBzdHJpbmcsIHN5bWJvbCBvciBrZXl3b3JkLlwiXHJcbiBbeF1cclxuIChpZlxyXG4gIChpbXBsZW1lbnRzPyBJTmFtZWQgeClcclxuICAoLW5hbWUgeClcclxuICAoaWZcclxuICAgKHN0cmluZz8geClcclxuICAgeFxyXG4gICAodGhyb3cgKGpzL0Vycm9yLiAoc3RyIFwiRG9lc24ndCBzdXBwb3J0IG5hbWU6IFwiIHgpKSkpKSlcclxuIn0gezpzeW0gRm4sIDptZXRhIHs6ZG9jICJNYXJrZXIgcHJvdG9jb2wifSwgOm1ldGhvZHMgKCl9IHs6c3ltIGZmaXJzdCwgOm1ldGEgezpkb2MgIlNhbWUgYXMgKGZpcnN0IChmaXJzdCB4KSkiLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmbiBmZmlyc3QgXCJTYW1lIGFzIChmaXJzdCAoZmlyc3QgeCkpXCIgW2NvbGxdIChmaXJzdCAoZmlyc3QgY29sbCkpKVxyXG4ifSB7OnN5bSBzb3J0ZWQtc2V0LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG5ldyBzb3J0ZWQgc2V0IHdpdGggc3VwcGxpZWQga2V5cy4iLCA6YXJnbGlzdHMgW1smIGtleXNdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBzb3J0ZWQtc2V0XHJcbiBcIlJldHVybnMgYSBuZXcgc29ydGVkIHNldCB3aXRoIHN1cHBsaWVkIGtleXMuXCJcclxuIChbJiBrZXlzXSAocmVkdWNlIC1jb25qICguLUVNUFRZIFBlcnNpc3RlbnRUcmVlU2V0KSBrZXlzKSkpXHJcbiJ9IHs6c3ltIGNvdW50ZWQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIGNvbGwgaW1wbGVtZW50cyBjb3VudCBpbiBjb25zdGFudCB0aW1lIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGNvdW50ZWQ/XHJcbiBcIlJldHVybnMgdHJ1ZSBpZiBjb2xsIGltcGxlbWVudHMgY291bnQgaW4gY29uc3RhbnQgdGltZVwiXHJcbiBbeF1cclxuIChzYXRpc2ZpZXM/IElDb3VudGVkIHgpKVxyXG4ifSB7OnN5bSB0YWdnZWQtbGl0ZXJhbCwgOm1ldGEgezpkb2MgIkNvbnN0cnVjdCBhIGRhdGEgcmVwcmVzZW50YXRpb24gb2YgYSB0YWdnZWQgbGl0ZXJhbCBmcm9tIGFcbiAgdGFnIHN5bWJvbCBhbmQgYSBmb3JtLiIsIDphcmdsaXN0cyAoW3RhZyBmb3JtXSl9LCA6c291cmNlICIoZGVmblxyXG4gdGFnZ2VkLWxpdGVyYWxcclxuIFwiQ29uc3RydWN0IGEgZGF0YSByZXByZXNlbnRhdGlvbiBvZiBhIHRhZ2dlZCBsaXRlcmFsIGZyb20gYVxcbiAgdGFnIHN5bWJvbCBhbmQgYSBmb3JtLlwiXHJcbiBbdGFnIGZvcm1dXHJcbiB7OnByZSBbKHN5bWJvbD8gdGFnKV19XHJcbiAoVGFnZ2VkTGl0ZXJhbC4gdGFnIGZvcm0pKVxyXG4ifSB7OnN5bSBwcmludGxuLCA6bWV0YSB7OmRvYyAiU2FtZSBhcyBwcmludCBmb2xsb3dlZCBieSAobmV3bGluZSkiLCA6YXJnbGlzdHMgKFsmIG9ianNdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBwcmludGxuXHJcbiBcIlNhbWUgYXMgcHJpbnQgZm9sbG93ZWQgYnkgKG5ld2xpbmUpXCJcclxuIFsmIG9ianNdXHJcbiAocHItd2l0aC1vcHRzIG9ianMgKGFzc29jIChwci1vcHRzKSA6cmVhZGFibHkgZmFsc2UpKVxyXG4gKHdoZW4gKnByaW50LW5ld2xpbmUqIChuZXdsaW5lIChwci1vcHRzKSkpKVxyXG4ifSB7OnN5bSBhc3NvYy1pbiwgOm1ldGEgezpkb2MgIkFzc29jaWF0ZXMgYSB2YWx1ZSBpbiBhIG5lc3RlZCBhc3NvY2lhdGl2ZSBzdHJ1Y3R1cmUsIHdoZXJlIGtzIGlzIGFcbiAgc2VxdWVuY2Ugb2Yga2V5cyBhbmQgdiBpcyB0aGUgbmV3IHZhbHVlIGFuZCByZXR1cm5zIGEgbmV3IG5lc3RlZCBzdHJ1Y3R1cmUuXG4gIElmIGFueSBsZXZlbHMgZG8gbm90IGV4aXN0LCBoYXNoLW1hcHMgd2lsbCBiZSBjcmVhdGVkLiIsIDphcmdsaXN0cyAoW20gW2sgJiBrc10gdl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGFzc29jLWluXHJcbiBcIkFzc29jaWF0ZXMgYSB2YWx1ZSBpbiBhIG5lc3RlZCBhc3NvY2lhdGl2ZSBzdHJ1Y3R1cmUsIHdoZXJlIGtzIGlzIGFcXG4gIHNlcXVlbmNlIG9mIGtleXMgYW5kIHYgaXMgdGhlIG5ldyB2YWx1ZSBhbmQgcmV0dXJucyBhIG5ldyBuZXN0ZWQgc3RydWN0dXJlLlxcbiAgSWYgYW55IGxldmVscyBkbyBub3QgZXhpc3QsIGhhc2gtbWFwcyB3aWxsIGJlIGNyZWF0ZWQuXCJcclxuIFttIFtrICYga3NdIHZdXHJcbiAoaWYga3MgKGFzc29jIG0gayAoYXNzb2MtaW4gKGdldCBtIGspIGtzIHYpKSAoYXNzb2MgbSBrIHYpKSlcclxuIn0gezpzeW0gYml0LXRlc3QsIDptZXRhIHs6ZG9jICJUZXN0IGJpdCBhdCBpbmRleCBuIiwgOmFyZ2xpc3RzIChbeCBuXSl9LCA6c291cmNlICIoZGVmbiBiaXQtdGVzdCBcIlRlc3QgYml0IGF0IGluZGV4IG5cIiBbeCBuXSAoY2xqcy5jb3JlL2JpdC10ZXN0IHggbikpXHJcbiJ9IHs6c3ltIElTd2FwLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFkZGluZyBzd2FwcGluZyBmdW5jdGlvbmFsaXR5LiJ9LCA6bWV0aG9kcyAoLXN3YXAhKX0gezpzeW0gbWVtb2l6ZSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBtZW1vaXplZCB2ZXJzaW9uIG9mIGEgcmVmZXJlbnRpYWxseSB0cmFuc3BhcmVudCBmdW5jdGlvbi4gVGhlXG4gIG1lbW9pemVkIHZlcnNpb24gb2YgdGhlIGZ1bmN0aW9uIGtlZXBzIGEgY2FjaGUgb2YgdGhlIG1hcHBpbmcgZnJvbSBhcmd1bWVudHNcbiAgdG8gcmVzdWx0cyBhbmQsIHdoZW4gY2FsbHMgd2l0aCB0aGUgc2FtZSBhcmd1bWVudHMgYXJlIHJlcGVhdGVkIG9mdGVuLCBoYXNcbiAgaGlnaGVyIHBlcmZvcm1hbmNlIGF0IHRoZSBleHBlbnNlIG9mIGhpZ2hlciBtZW1vcnkgdXNlLiIsIDphcmdsaXN0cyAoW2ZdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBtZW1vaXplXHJcbiBcIlJldHVybnMgYSBtZW1vaXplZCB2ZXJzaW9uIG9mIGEgcmVmZXJlbnRpYWxseSB0cmFuc3BhcmVudCBmdW5jdGlvbi4gVGhlXFxuICBtZW1vaXplZCB2ZXJzaW9uIG9mIHRoZSBmdW5jdGlvbiBrZWVwcyBhIGNhY2hlIG9mIHRoZSBtYXBwaW5nIGZyb20gYXJndW1lbnRzXFxuICB0byByZXN1bHRzIGFuZCwgd2hlbiBjYWxscyB3aXRoIHRoZSBzYW1lIGFyZ3VtZW50cyBhcmUgcmVwZWF0ZWQgb2Z0ZW4sIGhhc1xcbiAgaGlnaGVyIHBlcmZvcm1hbmNlIGF0IHRoZSBleHBlbnNlIG9mIGhpZ2hlciBtZW1vcnkgdXNlLlwiXHJcbiBbZl1cclxuIChsZXRcclxuICBbbWVtIChhdG9tIHt9KV1cclxuICAoZm5cclxuICAgWyYgYXJnc11cclxuICAgKGxldFxyXG4gICAgW3YgKGdldCBAbWVtIGFyZ3MgbG9va3VwLXNlbnRpbmVsKV1cclxuICAgIChpZlxyXG4gICAgIChpZGVudGljYWw/IHYgbG9va3VwLXNlbnRpbmVsKVxyXG4gICAgIChsZXQgW3JldCAoYXBwbHkgZiBhcmdzKV0gKHN3YXAhIG1lbSBhc3NvYyBhcmdzIHJldCkgcmV0KVxyXG4gICAgIHYpKSkpKVxyXG4ifSB7OnN5bSBhbHRlci1tZXRhISwgOm1ldGEgezpkb2MgIkF0b21pY2FsbHkgc2V0cyB0aGUgbWV0YWRhdGEgZm9yIGEgbmFtZXNwYWNlL3Zhci9yZWYvYWdlbnQvYXRvbSB0byBiZTpcblxuICAoYXBwbHkgZiBpdHMtY3VycmVudC1tZXRhIGFyZ3MpXG5cbiAgZiBtdXN0IGJlIGZyZWUgb2Ygc2lkZS1lZmZlY3RzIiwgOmFyZ2xpc3RzIChbaXJlZiBmICYgYXJnc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGFsdGVyLW1ldGEhXHJcbiBcIkF0b21pY2FsbHkgc2V0cyB0aGUgbWV0YWRhdGEgZm9yIGEgbmFtZXNwYWNlL3Zhci9yZWYvYWdlbnQvYXRvbSB0byBiZTpcXG5cXG4gIChhcHBseSBmIGl0cy1jdXJyZW50LW1ldGEgYXJncylcXG5cXG4gIGYgbXVzdCBiZSBmcmVlIG9mIHNpZGUtZWZmZWN0c1wiXHJcbiBbaXJlZiBmICYgYXJnc11cclxuIChzZXQhICguLW1ldGEgaXJlZikgKGFwcGx5IGYgKC4tbWV0YSBpcmVmKSBhcmdzKSkpXHJcbiJ9IHs6c3ltIHplcm8/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIG51bSBpcyB6ZXJvLCBlbHNlIGZhbHNlIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHplcm8/XHJcbiBcIlJldHVybnMgdHJ1ZSBpZiBudW0gaXMgemVybywgZWxzZSBmYWxzZVwiXHJcbiBbeF1cclxuIChjbGpzLmNvcmUvemVybz8geCkpXHJcbiJ9IHs6c3ltIHNpbXBsZS1rZXl3b3JkPywgOm1ldGEgezpkb2MgIlJldHVybiB0cnVlIGlmIHggaXMgYSBrZXl3b3JkIHdpdGhvdXQgYSBuYW1lc3BhY2UiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxyXG4gc2ltcGxlLWtleXdvcmQ/XHJcbiBcIlJldHVybiB0cnVlIGlmIHggaXMgYSBrZXl3b3JkIHdpdGhvdXQgYSBuYW1lc3BhY2VcIlxyXG4gW3hdXHJcbiAoYW5kIChrZXl3b3JkPyB4KSAobmlsPyAobmFtZXNwYWNlIHgpKSkpXHJcbiJ9IHs6c3ltICptYWluLWNsaS1mbiosIDptZXRhIHs6ZG9jICJXaGVuIGNvbXBpbGVkIGZvciBhIGNvbW1hbmQtbGluZSB0YXJnZXQsIHdoYXRldmVyIGZ1bmN0aW9uXG4gICptYWluLWNsaS1mbiogaXMgc2V0IHRvIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIGNvbW1hbmQtbGluZVxuICBhcmd2IGFzIGFyZ3VtZW50cyJ9LCA6c291cmNlICIoZGVmICptYWluLWNsaS1mbiogbmlsKVxyXG4ifSB7OnN5bSAtYXNzb2MtbiwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBuZXcgdmVjdG9yIHdpdGggdmFsdWUgdmFsIGFkZGVkIGF0IHBvc2l0aW9uIG4uIiwgOmFyZ2xpc3RzIChbY29sbCBuIHZhbF0pfSwgOnByb3RvY29sIElWZWN0b3J9IHs6c3ltIHVuY2hlY2tlZC1kZWMtaW50LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG51bWJlciBvbmUgbGVzcyB0aGFuIHgsIGFuIGludC4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxyXG4gdW5jaGVja2VkLWRlYy1pbnRcclxuIFwiUmV0dXJucyBhIG51bWJlciBvbmUgbGVzcyB0aGFuIHgsIGFuIGludC5cIlxyXG4gW3hdXHJcbiAoY2xqcy5jb3JlL3VuY2hlY2tlZC1kZWMtaW50IHgpKVxyXG4ifSB7OnN5bSBwZXJzaXN0ZW50ISwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBuZXcsIHBlcnNpc3RlbnQgdmVyc2lvbiBvZiB0aGUgdHJhbnNpZW50IGNvbGxlY3Rpb24sIGluXG4gIGNvbnN0YW50IHRpbWUuIFRoZSB0cmFuc2llbnQgY29sbGVjdGlvbiBjYW5ub3QgYmUgdXNlZCBhZnRlciB0aGlzXG4gIGNhbGwsIGFueSBzdWNoIHVzZSB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbi4iLCA6YXJnbGlzdHMgKFt0Y29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHBlcnNpc3RlbnQhXHJcbiBcIlJldHVybnMgYSBuZXcsIHBlcnNpc3RlbnQgdmVyc2lvbiBvZiB0aGUgdHJhbnNpZW50IGNvbGxlY3Rpb24sIGluXFxuICBjb25zdGFudCB0aW1lLiBUaGUgdHJhbnNpZW50IGNvbGxlY3Rpb24gY2Fubm90IGJlIHVzZWQgYWZ0ZXIgdGhpc1xcbiAgY2FsbCwgYW55IHN1Y2ggdXNlIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uLlwiXHJcbiBbdGNvbGxdXHJcbiAoLXBlcnNpc3RlbnQhIHRjb2xsKSlcclxuIn0gezpzeW0gc2V0LXByaW50LWZuISwgOm1ldGEgezpkb2MgIlNldCAqcHJpbnQtZm4qIHRvIGYuIiwgOmFyZ2xpc3RzIChbZl0pfSwgOnNvdXJjZSAiKGRlZm4gc2V0LXByaW50LWZuISBcIlNldCAqcHJpbnQtZm4qIHRvIGYuXCIgW2ZdIChzZXQhICpwcmludC1mbiogZikpXHJcbiJ9IHs6c3ltIG5uZXh0LCA6bWV0YSB7OmRvYyAiU2FtZSBhcyAobmV4dCAobmV4dCB4KSkiLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmbiBubmV4dCBcIlNhbWUgYXMgKG5leHQgKG5leHQgeCkpXCIgW2NvbGxdIChuZXh0IChuZXh0IGNvbGwpKSlcclxuIn0gezpzeW0gYWRkLXdhdGNoLCA6bWV0YSB7OmRvYyAiQWRkcyBhIHdhdGNoIGZ1bmN0aW9uIHRvIGFuIGF0b20gcmVmZXJlbmNlLiBUaGUgd2F0Y2ggZm4gbXVzdCBiZSBhXG4gIGZuIG9mIDQgYXJnczogYSBrZXksIHRoZSByZWZlcmVuY2UsIGl0cyBvbGQtc3RhdGUsIGl0c1xuICBuZXctc3RhdGUuIFdoZW5ldmVyIHRoZSByZWZlcmVuY2UncyBzdGF0ZSBtaWdodCBoYXZlIGJlZW4gY2hhbmdlZCxcbiAgYW55IHJlZ2lzdGVyZWQgd2F0Y2hlcyB3aWxsIGhhdmUgdGhlaXIgZnVuY3Rpb25zIGNhbGxlZC4gVGhlIHdhdGNoXG4gIGZuIHdpbGwgYmUgY2FsbGVkIHN5bmNocm9ub3VzbHkuIE5vdGUgdGhhdCBhbiBhdG9tJ3Mgc3RhdGVcbiAgbWF5IGhhdmUgY2hhbmdlZCBhZ2FpbiBwcmlvciB0byB0aGUgZm4gY2FsbCwgc28gdXNlIG9sZC9uZXctc3RhdGVcbiAgcmF0aGVyIHRoYW4gZGVyZWZpbmcgdGhlIHJlZmVyZW5jZS4gS2V5cyBtdXN0IGJlIHVuaXF1ZSBwZXJcbiAgcmVmZXJlbmNlLCBhbmQgY2FuIGJlIHVzZWQgdG8gcmVtb3ZlIHRoZSB3YXRjaCB3aXRoIHJlbW92ZS13YXRjaCxcbiAgYnV0IGFyZSBvdGhlcndpc2UgY29uc2lkZXJlZCBvcGFxdWUgYnkgdGhlIHdhdGNoIG1lY2hhbmlzbS4gIEJlYXIgaW5cbiAgbWluZCB0aGF0IHJlZ2FyZGxlc3Mgb2YgdGhlIHJlc3VsdCBvciBhY3Rpb24gb2YgdGhlIHdhdGNoIGZucyB0aGVcbiAgYXRvbSdzIHZhbHVlIHdpbGwgY2hhbmdlLiAgRXhhbXBsZTpcblxuICAgICAgKGRlZiBhIChhdG9tIDApKVxuICAgICAgKGFkZC13YXRjaCBhIDppbmMgKGZuIFtrIHIgbyBuXSAoYXNzZXJ0ICg9PSAwIG4pKSkpXG4gICAgICAoc3dhcCEgYSBpbmMpXG4gICAgICA7OyBBc3NlcnRpb24gRXJyb3JcbiAgICAgIChkZXJlZiBhKVxuICAgICAgOz0+IDEiLCA6YXJnbGlzdHMgKFtpcmVmIGtleSBmXSl9LCA6c291cmNlICIoZGVmblxyXG4gYWRkLXdhdGNoXHJcbiBcIkFkZHMgYSB3YXRjaCBmdW5jdGlvbiB0byBhbiBhdG9tIHJlZmVyZW5jZS4gVGhlIHdhdGNoIGZuIG11c3QgYmUgYVxcbiAgZm4gb2YgNCBhcmdzOiBhIGtleSwgdGhlIHJlZmVyZW5jZSwgaXRzIG9sZC1zdGF0ZSwgaXRzXFxuICBuZXctc3RhdGUuIFdoZW5ldmVyIHRoZSByZWZlcmVuY2UncyBzdGF0ZSBtaWdodCBoYXZlIGJlZW4gY2hhbmdlZCxcXG4gIGFueSByZWdpc3RlcmVkIHdhdGNoZXMgd2lsbCBoYXZlIHRoZWlyIGZ1bmN0aW9ucyBjYWxsZWQuIFRoZSB3YXRjaFxcbiAgZm4gd2lsbCBiZSBjYWxsZWQgc3luY2hyb25vdXNseS4gTm90ZSB0aGF0IGFuIGF0b20ncyBzdGF0ZVxcbiAgbWF5IGhhdmUgY2hhbmdlZCBhZ2FpbiBwcmlvciB0byB0aGUgZm4gY2FsbCwgc28gdXNlIG9sZC9uZXctc3RhdGVcXG4gIHJhdGhlciB0aGFuIGRlcmVmaW5nIHRoZSByZWZlcmVuY2UuIEtleXMgbXVzdCBiZSB1bmlxdWUgcGVyXFxuICByZWZlcmVuY2UsIGFuZCBjYW4gYmUgdXNlZCB0byByZW1vdmUgdGhlIHdhdGNoIHdpdGggcmVtb3ZlLXdhdGNoLFxcbiAgYnV0IGFyZSBvdGhlcndpc2UgY29uc2lkZXJlZCBvcGFxdWUgYnkgdGhlIHdhdGNoIG1lY2hhbmlzbS4gIEJlYXIgaW5cXG4gIG1pbmQgdGhhdCByZWdhcmRsZXNzIG9mIHRoZSByZXN1bHQgb3IgYWN0aW9uIG9mIHRoZSB3YXRjaCBmbnMgdGhlXFxuICBhdG9tJ3MgdmFsdWUgd2lsbCBjaGFuZ2UuICBFeGFtcGxlOlxcblxcbiAgICAgIChkZWYgYSAoYXRvbSAwKSlcXG4gICAgICAoYWRkLXdhdGNoIGEgOmluYyAoZm4gW2sgciBvIG5dIChhc3NlcnQgKD09IDAgbikpKSlcXG4gICAgICAoc3dhcCEgYSBpbmMpXFxuICAgICAgOzsgQXNzZXJ0aW9uIEVycm9yXFxuICAgICAgKGRlcmVmIGEpXFxuICAgICAgOz0+IDFcIlxyXG4gW2lyZWYga2V5IGZdXHJcbiAoLWFkZC13YXRjaCBpcmVmIGtleSBmKVxyXG4gaXJlZilcclxuIn0gezpzeW0gbm90LWV2ZXJ5PywgOm1ldGEgezpkb2MgIlJldHVybnMgZmFsc2UgaWYgKHByZWQgeCkgaXMgbG9naWNhbCB0cnVlIGZvciBldmVyeSB4IGluXG4gIGNvbGwsIGVsc2UgdHJ1ZS4iLCA6YXJnbGlzdHMgKFtwcmVkIGNvbGxdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBub3QtZXZlcnk/XHJcbiBcIlJldHVybnMgZmFsc2UgaWYgKHByZWQgeCkgaXMgbG9naWNhbCB0cnVlIGZvciBldmVyeSB4IGluXFxuICBjb2xsLCBlbHNlIHRydWUuXCJcclxuIFtwcmVkIGNvbGxdXHJcbiAobm90IChldmVyeT8gcHJlZCBjb2xsKSkpXHJcbiJ9IHs6c3ltIHJlbSwgOm1ldGEgezpkb2MgInJlbWFpbmRlciBvZiBkaXZpZGluZyBudW1lcmF0b3IgYnkgZGVub21pbmF0b3IuIiwgOmFyZ2xpc3RzIChbbiBkXSl9LCA6c291cmNlICIoZGVmblxyXG4gcmVtXHJcbiBcInJlbWFpbmRlciBvZiBkaXZpZGluZyBudW1lcmF0b3IgYnkgZGVub21pbmF0b3IuXCJcclxuIFtuIGRdXHJcbiAobGV0IFtxIChxdW90IG4gZCldICgtIG4gKCogZCBxKSkpKVxyXG4ifSB7OnN5bSBpZmluZD8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgY29sbCBpbXBsZW1lbnRzIElGaW5kIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGlmaW5kP1xyXG4gXCJSZXR1cm5zIHRydWUgaWYgY29sbCBpbXBsZW1lbnRzIElGaW5kXCJcclxuIFt4XVxyXG4gKHNhdGlzZmllcz8gSUZpbmQgeCkpXHJcbiJ9IHs6c3ltIHNvbWUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBmaXJzdCBsb2dpY2FsIHRydWUgdmFsdWUgb2YgKHByZWQgeCkgZm9yIGFueSB4IGluIGNvbGwsXG4gIGVsc2UgbmlsLiAgT25lIGNvbW1vbiBpZGlvbSBpcyB0byB1c2UgYSBzZXQgYXMgcHJlZCwgZm9yIGV4YW1wbGVcbiAgdGhpcyB3aWxsIHJldHVybiA6ZnJlZCBpZiA6ZnJlZCBpcyBpbiB0aGUgc2VxdWVuY2UsIG90aGVyd2lzZSBuaWw6XG4gIChzb21lICN7OmZyZWR9IGNvbGwpIiwgOmFyZ2xpc3RzIChbcHJlZCBjb2xsXSl9LCA6c291cmNlICIoZGVmblxyXG4gc29tZVxyXG4gXCJSZXR1cm5zIHRoZSBmaXJzdCBsb2dpY2FsIHRydWUgdmFsdWUgb2YgKHByZWQgeCkgZm9yIGFueSB4IGluIGNvbGwsXFxuICBlbHNlIG5pbC4gIE9uZSBjb21tb24gaWRpb20gaXMgdG8gdXNlIGEgc2V0IGFzIHByZWQsIGZvciBleGFtcGxlXFxuICB0aGlzIHdpbGwgcmV0dXJuIDpmcmVkIGlmIDpmcmVkIGlzIGluIHRoZSBzZXF1ZW5jZSwgb3RoZXJ3aXNlIG5pbDpcXG4gIChzb21lICN7OmZyZWR9IGNvbGwpXCJcclxuIFtwcmVkIGNvbGxdXHJcbiAod2hlbi1sZXQgW3MgKHNlcSBjb2xsKV0gKG9yIChwcmVkIChmaXJzdCBzKSkgKHJlY3VyIHByZWQgKG5leHQgcykpKSkpXHJcbiJ9IHs6c3ltIElOYW1lZCwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhZGRpbmcgYSBuYW1lLiJ9LCA6bWV0aG9kcyAoLW5hbWUgLW5hbWVzcGFjZSl9IHs6c3ltIElSZWR1Y2UsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3Igc2VxIHR5cGVzIHRoYXQgY2FuIHJlZHVjZSB0aGVtc2VsdmVzLlxuICBDYWxsZWQgYnkgY2xqcy5jb3JlL3JlZHVjZS4ifSwgOm1ldGhvZHMgKC1yZWR1Y2UpfSB7OnN5bSBuZWctaW50PywgOm1ldGEgezpkb2MgIlJldHVybiB0cnVlIGlmIHggc2F0aXNmaWVzIGludD8gYW5kIGlzIG5lZ2F0aXZlLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBuZWctaW50P1xyXG4gXCJSZXR1cm4gdHJ1ZSBpZiB4IHNhdGlzZmllcyBpbnQ/IGFuZCBpcyBuZWdhdGl2ZS5cIlxyXG4gW3hdXHJcbiAoY29uZFxyXG4gIChpbnRlZ2VyPyB4KVxyXG4gIChuZWc/IHgpXHJcbiAgKGluc3RhbmNlPyBnb29nLm1hdGguSW50ZWdlciB4KVxyXG4gICguaXNOZWdhdGl2ZSB4KVxyXG4gIChpbnN0YW5jZT8gZ29vZy5tYXRoLkxvbmcgeClcclxuICAoLmlzTmVnYXRpdmUgeClcclxuICA6ZWxzZVxyXG4gIGZhbHNlKSlcclxuIn0gezpzeW0gZHJvcCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIGFsbCBidXQgdGhlIGZpcnN0IG4gaXRlbXMgaW4gY29sbC5cbiAgUmV0dXJucyBhIHN0YXRlZnVsIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLiIsIDphcmdsaXN0cyBbW25dIFtuIGNvbGxdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBkcm9wXHJcbiBcIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIGFsbCBidXQgdGhlIGZpcnN0IG4gaXRlbXMgaW4gY29sbC5cXG4gIFJldHVybnMgYSBzdGF0ZWZ1bCB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC5cIlxyXG4gKFtuXVxyXG4gIHs6cHJlIFsobnVtYmVyPyBuKV19XHJcbiAgKGZuXHJcbiAgIFtyZl1cclxuICAgKGxldFxyXG4gICAgW25hICh2b2xhdGlsZSEgbildXHJcbiAgICAoZm5cclxuICAgICAoW10gKHJmKSlcclxuICAgICAoW3Jlc3VsdF0gKHJmIHJlc3VsdCkpXHJcbiAgICAgKFtyZXN1bHQgaW5wdXRdXHJcbiAgICAgIChsZXRcclxuICAgICAgIFtuIEBuYV1cclxuICAgICAgICh2c3dhcCEgbmEgZGVjKVxyXG4gICAgICAgKGlmIChwb3M/IG4pIHJlc3VsdCAocmYgcmVzdWx0IGlucHV0KSkpKSkpKSlcclxuIChbbiBjb2xsXVxyXG4gIHs6cHJlIFsobnVtYmVyPyBuKV19XHJcbiAgKGxldFxyXG4gICBbc3RlcFxyXG4gICAgKGZuXHJcbiAgICAgW24gY29sbF1cclxuICAgICAobGV0XHJcbiAgICAgIFtzIChzZXEgY29sbCldXHJcbiAgICAgIChpZiAoYW5kIChwb3M/IG4pIHMpIChyZWN1ciAoZGVjIG4pIChyZXN0IHMpKSBzKSkpXVxyXG4gICAobGF6eS1zZXEgKHN0ZXAgbiBjb2xsKSkpKSlcclxuIn0gezpzeW0ganMtb2JqLCA6bWV0YSB7OmRvYyAiQ3JlYXRlIEphdmFTcmlwdCBvYmplY3QgZnJvbSBhbiBldmVuIG51bWJlciBhcmd1bWVudHMgcmVwcmVzZW50aW5nXG4gIGludGVybGVhdmVkIGtleXMgYW5kIHZhbHVlcy4iLCA6YXJnbGlzdHMgW1tdIFsmIGtleXZhbHNdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBqcy1vYmpcclxuIFwiQ3JlYXRlIEphdmFTcmlwdCBvYmplY3QgZnJvbSBhbiBldmVuIG51bWJlciBhcmd1bWVudHMgcmVwcmVzZW50aW5nXFxuICBpbnRlcmxlYXZlZCBrZXlzIGFuZCB2YWx1ZXMuXCJcclxuIChbXSAoY2xqcy5jb3JlL2pzLW9iaikpXHJcbiAoWyYga2V5dmFsc10gKGFwcGx5IGdvYmplY3QvY3JlYXRlIGtleXZhbHMpKSlcclxuIn0gezpzeW0gSVRyYW5zaWVudENvbGxlY3Rpb24sIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgYWRkaW5nIGJhc2ljIGZ1bmN0aW9uYWxpdHkgdG8gdHJhbnNpZW50IGNvbGxlY3Rpb25zLiJ9LCA6bWV0aG9kcyAoLWNvbmohIC1wZXJzaXN0ZW50ISl9IHs6c3ltIG50aCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHZhbHVlIGF0IHRoZSBpbmRleC4gZ2V0IHJldHVybnMgbmlsIGlmIGluZGV4IG91dCBvZlxuICBib3VuZHMsIG50aCB0aHJvd3MgYW4gZXhjZXB0aW9uIHVubGVzcyBub3QtZm91bmQgaXMgc3VwcGxpZWQuICBudGhcbiAgYWxzbyB3b3JrcyBmb3Igc3RyaW5ncywgYXJyYXlzLCByZWdleCBNYXRjaGVycyBhbmQgTGlzdHMsIGFuZCxcbiAgaW4gTyhuKSB0aW1lLCBmb3Igc2VxdWVuY2VzLiIsIDphcmdsaXN0cyBbW2NvbGwgbl0gW2NvbGwgbiBub3QtZm91bmRdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBudGhcclxuIFwiUmV0dXJucyB0aGUgdmFsdWUgYXQgdGhlIGluZGV4LiBnZXQgcmV0dXJucyBuaWwgaWYgaW5kZXggb3V0IG9mXFxuICBib3VuZHMsIG50aCB0aHJvd3MgYW4gZXhjZXB0aW9uIHVubGVzcyBub3QtZm91bmQgaXMgc3VwcGxpZWQuICBudGhcXG4gIGFsc28gd29ya3MgZm9yIHN0cmluZ3MsIGFycmF5cywgcmVnZXggTWF0Y2hlcnMgYW5kIExpc3RzLCBhbmQsXFxuICBpbiBPKG4pIHRpbWUsIGZvciBzZXF1ZW5jZXMuXCJcclxuIChbY29sbCBuXVxyXG4gIChjb25kXHJcbiAgIChub3QgKG51bWJlcj8gbikpXHJcbiAgICh0aHJvdyAoanMvRXJyb3IuIFwiSW5kZXggYXJndW1lbnQgdG8gbnRoIG11c3QgYmUgYSBudW1iZXJcIikpXHJcbiAgIChuaWw/IGNvbGwpXHJcbiAgIGNvbGxcclxuICAgKGltcGxlbWVudHM/IElJbmRleGVkIGNvbGwpXHJcbiAgICgtbnRoIGNvbGwgbilcclxuICAgKGFycmF5PyBjb2xsKVxyXG4gICAoaWZcclxuICAgIChhbmQgKDwgLTEgbiAoLi1sZW5ndGggY29sbCkpKVxyXG4gICAgKGFnZXQgY29sbCAoaW50IG4pKVxyXG4gICAgKHRocm93IChqcy9FcnJvci4gXCJJbmRleCBvdXQgb2YgYm91bmRzXCIpKSlcclxuICAgKHN0cmluZz8gY29sbClcclxuICAgKGlmXHJcbiAgICAoYW5kICg8IC0xIG4gKC4tbGVuZ3RoIGNvbGwpKSlcclxuICAgICguY2hhckF0IGNvbGwgKGludCBuKSlcclxuICAgICh0aHJvdyAoanMvRXJyb3IuIFwiSW5kZXggb3V0IG9mIGJvdW5kc1wiKSkpXHJcbiAgIChvciAoaW1wbGVtZW50cz8gSVNlcSBjb2xsKSAoaW1wbGVtZW50cz8gSVNlcXVlbnRpYWwgY29sbCkpXHJcbiAgIChpZlxyXG4gICAgKG5lZz8gbilcclxuICAgICh0aHJvdyAoanMvRXJyb3IuIFwiSW5kZXggb3V0IG9mIGJvdW5kc1wiKSlcclxuICAgIChsaW5lYXItdHJhdmVyc2FsLW50aCBjb2xsIG4pKVxyXG4gICAobmF0aXZlLXNhdGlzZmllcz8gSUluZGV4ZWQgY29sbClcclxuICAgKC1udGggY29sbCBuKVxyXG4gICA6ZWxzZVxyXG4gICAodGhyb3dcclxuICAgIChqcy9FcnJvci5cclxuICAgICAoc3RyXHJcbiAgICAgIFwibnRoIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyB0eXBlIFwiXHJcbiAgICAgICh0eXBlLT5zdHIgKHR5cGUgY29sbCkpKSkpKSlcclxuIChbY29sbCBuIG5vdC1mb3VuZF1cclxuICAoY29uZFxyXG4gICAobm90IChudW1iZXI/IG4pKVxyXG4gICAodGhyb3cgKGpzL0Vycm9yLiBcIkluZGV4IGFyZ3VtZW50IHRvIG50aCBtdXN0IGJlIGEgbnVtYmVyLlwiKSlcclxuICAgKG5pbD8gY29sbClcclxuICAgbm90LWZvdW5kXHJcbiAgIChpbXBsZW1lbnRzPyBJSW5kZXhlZCBjb2xsKVxyXG4gICAoLW50aCBjb2xsIG4gbm90LWZvdW5kKVxyXG4gICAoYXJyYXk/IGNvbGwpXHJcbiAgIChpZiAoYW5kICg8IC0xIG4gKC4tbGVuZ3RoIGNvbGwpKSkgKGFnZXQgY29sbCAoaW50IG4pKSBub3QtZm91bmQpXHJcbiAgIChzdHJpbmc/IGNvbGwpXHJcbiAgIChpZiAoYW5kICg8IC0xIG4gKC4tbGVuZ3RoIGNvbGwpKSkgKC5jaGFyQXQgY29sbCAoaW50IG4pKSBub3QtZm91bmQpXHJcbiAgIChvciAoaW1wbGVtZW50cz8gSVNlcSBjb2xsKSAoaW1wbGVtZW50cz8gSVNlcXVlbnRpYWwgY29sbCkpXHJcbiAgIChpZiAobmVnPyBuKSBub3QtZm91bmQgKGxpbmVhci10cmF2ZXJzYWwtbnRoIGNvbGwgbiBub3QtZm91bmQpKVxyXG4gICAobmF0aXZlLXNhdGlzZmllcz8gSUluZGV4ZWQgY29sbClcclxuICAgKC1udGggY29sbCBuIG5vdC1mb3VuZClcclxuICAgOmVsc2VcclxuICAgKHRocm93XHJcbiAgICAoanMvRXJyb3IuXHJcbiAgICAgKHN0clxyXG4gICAgICBcIm50aCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgdHlwZSBcIlxyXG4gICAgICAodHlwZS0+c3RyICh0eXBlIGNvbGwpKSkpKSkpKVxyXG4ifSB7OnN5bSBzb3J0ZWQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIGNvbGwgc2F0aXNmaWVzIElTb3J0ZWQiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxyXG4gc29ydGVkP1xyXG4gXCJSZXR1cm5zIHRydWUgaWYgY29sbCBzYXRpc2ZpZXMgSVNvcnRlZFwiXHJcbiBbeF1cclxuIChzYXRpc2ZpZXM/IElTb3J0ZWQgeCkpXHJcbiJ9IHs6c3ltIG5pbD8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgeCBpcyBuaWwsIGZhbHNlIG90aGVyd2lzZS4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxyXG4gbmlsP1xyXG4gXCJSZXR1cm5zIHRydWUgaWYgeCBpcyBuaWwsIGZhbHNlIG90aGVyd2lzZS5cIlxyXG4gW3hdXHJcbiAoY29lcmNpdmUtPSB4IG5pbCkpXHJcbiJ9IHs6c3ltIHNwbGl0LWF0LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHZlY3RvciBvZiBbKHRha2UgbiBjb2xsKSAoZHJvcCBuIGNvbGwpXSIsIDphcmdsaXN0cyAoW24gY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHNwbGl0LWF0XHJcbiBcIlJldHVybnMgYSB2ZWN0b3Igb2YgWyh0YWtlIG4gY29sbCkgKGRyb3AgbiBjb2xsKV1cIlxyXG4gW24gY29sbF1cclxuIFsodGFrZSBuIGNvbGwpIChkcm9wIG4gY29sbCldKVxyXG4ifSB7OnN5bSBwcm4tc3RyLXdpdGgtb3B0cywgOm1ldGEgezpkb2MgIlNhbWUgYXMgcHItc3RyLXdpdGgtb3B0cyBmb2xsb3dlZCBieSAobmV3bGluZSkiLCA6YXJnbGlzdHMgKFtvYmpzIG9wdHNdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBwcm4tc3RyLXdpdGgtb3B0c1xyXG4gXCJTYW1lIGFzIHByLXN0ci13aXRoLW9wdHMgZm9sbG93ZWQgYnkgKG5ld2xpbmUpXCJcclxuIFtvYmpzIG9wdHNdXHJcbiAoaWZcclxuICAoZW1wdHk/IG9ianMpXHJcbiAgXCJcXG5cIlxyXG4gIChsZXRcclxuICAgW3NiIChwci1zYi13aXRoLW9wdHMgb2JqcyBvcHRzKV1cclxuICAgKC5hcHBlbmQgc2IgXFxuZXdsaW5lKVxyXG4gICAoc3RyIHNiKSkpKVxyXG4ifSB7OnN5bSBub3QtbmF0aXZlLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBub3QtbmF0aXZlIG5pbClcclxuIn0gezpzeW0gcmFuZG9tLXNhbXBsZSwgOm1ldGEgezpkb2MgIlJldHVybnMgaXRlbXMgZnJvbSBjb2xsIHdpdGggcmFuZG9tIHByb2JhYmlsaXR5IG9mIHByb2IgKDAuMCAtXG4gIDEuMCkuICBSZXR1cm5zIGEgdHJhbnNkdWNlciB3aGVuIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuIiwgOmFyZ2xpc3RzIFtbcHJvYl0gW3Byb2IgY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJhbmRvbS1zYW1wbGVcclxuIFwiUmV0dXJucyBpdGVtcyBmcm9tIGNvbGwgd2l0aCByYW5kb20gcHJvYmFiaWxpdHkgb2YgcHJvYiAoMC4wIC1cXG4gIDEuMCkuICBSZXR1cm5zIGEgdHJhbnNkdWNlciB3aGVuIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuXCJcclxuIChbcHJvYl0gKGZpbHRlciAoZm4gW19dICg8IChyYW5kKSBwcm9iKSkpKVxyXG4gKFtwcm9iIGNvbGxdIChmaWx0ZXIgKGZuIFtfXSAoPCAocmFuZCkgcHJvYikpIGNvbGwpKSlcclxuIn0gezpzeW0gc2VsZWN0LWtleXMsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbWFwIGNvbnRhaW5pbmcgb25seSB0aG9zZSBlbnRyaWVzIGluIG1hcCB3aG9zZSBrZXkgaXMgaW4ga2V5cyIsIDphcmdsaXN0cyAoW21hcCBrZXlzZXFdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBzZWxlY3Qta2V5c1xyXG4gXCJSZXR1cm5zIGEgbWFwIGNvbnRhaW5pbmcgb25seSB0aG9zZSBlbnRyaWVzIGluIG1hcCB3aG9zZSBrZXkgaXMgaW4ga2V5c1wiXHJcbiBbbWFwIGtleXNlcV1cclxuIChsb29wXHJcbiAgW3JldCB7fSBrZXlzIChzZXEga2V5c2VxKV1cclxuICAoaWZcclxuICAga2V5c1xyXG4gICAobGV0XHJcbiAgICBba2V5IChmaXJzdCBrZXlzKSBlbnRyeSAoZ2V0IG1hcCBrZXkgOmNsanMuY29yZS9ub3QtZm91bmQpXVxyXG4gICAgKHJlY3VyXHJcbiAgICAgKGlmIChub3Q9IGVudHJ5IDpjbGpzLmNvcmUvbm90LWZvdW5kKSAoYXNzb2MgcmV0IGtleSBlbnRyeSkgcmV0KVxyXG4gICAgIChuZXh0IGtleXMpKSlcclxuICAgKC13aXRoLW1ldGEgcmV0IChtZXRhIG1hcCkpKSkpXHJcbiJ9IHs6c3ltIGJpdC1hbmQsIDptZXRhIHs6ZG9jICJCaXR3aXNlIGFuZCIsIDphcmdsaXN0cyBbW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBiaXQtYW5kXHJcbiBcIkJpdHdpc2UgYW5kXCJcclxuIChbeCB5XSAoY2xqcy5jb3JlL2JpdC1hbmQgeCB5KSlcclxuIChbeCB5ICYgbW9yZV0gKHJlZHVjZSBiaXQtYW5kIChjbGpzLmNvcmUvYml0LWFuZCB4IHkpIG1vcmUpKSlcclxuIn0gezpzeW0gYm91bmRlZC1jb3VudCwgOm1ldGEgezpkb2MgIklmIGNvbGwgaXMgY291bnRlZD8gcmV0dXJucyBpdHMgY291bnQsIGVsc2Ugd2lsbCBjb3VudCBhdCBtb3N0IHRoZSBmaXJzdCBuXG4gICBlbGVtZW50cyBvZiBjb2xsIHVzaW5nIGl0cyBzZXEiLCA6YXJnbGlzdHMgKFtuIGNvbGxdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBib3VuZGVkLWNvdW50XHJcbiBcIklmIGNvbGwgaXMgY291bnRlZD8gcmV0dXJucyBpdHMgY291bnQsIGVsc2Ugd2lsbCBjb3VudCBhdCBtb3N0IHRoZSBmaXJzdCBuXFxuICAgZWxlbWVudHMgb2YgY29sbCB1c2luZyBpdHMgc2VxXCJcclxuIHs6YWRkZWQgXCIxLjlcIn1cclxuIFtuIGNvbGxdXHJcbiAoaWZcclxuICAoY291bnRlZD8gY29sbClcclxuICAoY291bnQgY29sbClcclxuICAobG9vcFxyXG4gICBbaSAwIHMgKHNlcSBjb2xsKV1cclxuICAgKGlmIChhbmQgKG5vdCAobmlsPyBzKSkgKDwgaSBuKSkgKHJlY3VyIChpbmMgaSkgKG5leHQgcykpIGkpKSkpXHJcbiJ9IHs6c3ltIHVwZGF0ZSwgOm1ldGEgezpkb2MgIidVcGRhdGVzJyBhIHZhbHVlIGluIGFuIGFzc29jaWF0aXZlIHN0cnVjdHVyZSwgd2hlcmUgayBpcyBhXG4gIGtleSBhbmQgZiBpcyBhIGZ1bmN0aW9uIHRoYXQgd2lsbCB0YWtlIHRoZSBvbGQgdmFsdWVcbiAgYW5kIGFueSBzdXBwbGllZCBhcmdzIGFuZCByZXR1cm4gdGhlIG5ldyB2YWx1ZSwgYW5kIHJldHVybnMgYSBuZXdcbiAgc3RydWN0dXJlLiAgSWYgdGhlIGtleSBkb2VzIG5vdCBleGlzdCwgbmlsIGlzIHBhc3NlZCBhcyB0aGUgb2xkIHZhbHVlLiIsIDphcmdsaXN0cyBbW20gayBmXSBbbSBrIGYgeF0gW20gayBmIHggeV0gW20gayBmIHggeSB6XSBbbSBrIGYgeCB5IHogJiBtb3JlXV19LCA6c291cmNlICIoZGVmblxyXG4gdXBkYXRlXHJcbiBcIidVcGRhdGVzJyBhIHZhbHVlIGluIGFuIGFzc29jaWF0aXZlIHN0cnVjdHVyZSwgd2hlcmUgayBpcyBhXFxuICBrZXkgYW5kIGYgaXMgYSBmdW5jdGlvbiB0aGF0IHdpbGwgdGFrZSB0aGUgb2xkIHZhbHVlXFxuICBhbmQgYW55IHN1cHBsaWVkIGFyZ3MgYW5kIHJldHVybiB0aGUgbmV3IHZhbHVlLCBhbmQgcmV0dXJucyBhIG5ld1xcbiAgc3RydWN0dXJlLiAgSWYgdGhlIGtleSBkb2VzIG5vdCBleGlzdCwgbmlsIGlzIHBhc3NlZCBhcyB0aGUgb2xkIHZhbHVlLlwiXHJcbiAoW20gayBmXSAoYXNzb2MgbSBrIChmIChnZXQgbSBrKSkpKVxyXG4gKFttIGsgZiB4XSAoYXNzb2MgbSBrIChmIChnZXQgbSBrKSB4KSkpXHJcbiAoW20gayBmIHggeV0gKGFzc29jIG0gayAoZiAoZ2V0IG0gaykgeCB5KSkpXHJcbiAoW20gayBmIHggeSB6XSAoYXNzb2MgbSBrIChmIChnZXQgbSBrKSB4IHkgeikpKVxyXG4gKFttIGsgZiB4IHkgeiAmIG1vcmVdIChhc3NvYyBtIGsgKGFwcGx5IGYgKGdldCBtIGspIHggeSB6IG1vcmUpKSkpXHJcbiJ9IHs6c3ltIGdlbnN5bV9jb3VudGVyLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBnZW5zeW1fY291bnRlciBuaWwpXHJcbiJ9IHs6c3ltIGZpbmQtbWFjcm9zLW5zLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbWFjcm9zIG5hbWVzcGFjZSBuYW1lZCBieSB0aGUgc3ltYm9sIG9yIG5pbCBpZiBpdCBkb2Vzbid0IGV4aXN0LlxuICBCb290c3RyYXAgb25seS4iLCA6YXJnbGlzdHMgKFtuc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGZpbmQtbWFjcm9zLW5zXHJcbiBcIlJldHVybnMgdGhlIG1hY3JvcyBuYW1lc3BhY2UgbmFtZWQgYnkgdGhlIHN5bWJvbCBvciBuaWwgaWYgaXQgZG9lc24ndCBleGlzdC5cXG4gIEJvb3RzdHJhcCBvbmx5LlwiXHJcbiBbbnNdXHJcbiAod2hlbiAobmlsPyBOU19DQUNIRSkgKHNldCEgTlNfQ0FDSEUgKGF0b20ge30pKSlcclxuIChsZXRcclxuICBbbnMtc3RyXHJcbiAgIChzdHIgbnMpXHJcbiAgIG5zXHJcbiAgIChpZlxyXG4gICAgKG5vdCAoZ3N0cmluZy9jb250YWlucyBucy1zdHIgXCIkbWFjcm9zXCIpKVxyXG4gICAgKHN5bWJvbCAoc3RyIG5zLXN0ciBcIiRtYWNyb3NcIikpXHJcbiAgICBucylcclxuICAgdGhlLW5zXHJcbiAgIChnZXQgQE5TX0NBQ0hFIG5zKV1cclxuICAoaWYtbm90XHJcbiAgIChuaWw/IHRoZS1ucylcclxuICAgdGhlLW5zXHJcbiAgIChsZXRcclxuICAgIFtucy1vYmogKGZpbmQtbnMtb2JqIG5zKV1cclxuICAgICh3aGVuLW5vdFxyXG4gICAgIChuaWw/IG5zLW9iailcclxuICAgICAobGV0XHJcbiAgICAgIFtuZXctbnMgKGNyZWF0ZS1ucyBucyBucy1vYmopXVxyXG4gICAgICAoc3dhcCEgTlNfQ0FDSEUgYXNzb2MgbnMgbmV3LW5zKVxyXG4gICAgICBuZXctbnMpKSkpKSlcclxuIn0gezpzeW0gbGlzdCosIDptZXRhIHs6ZG9jICJDcmVhdGVzIGEgbmV3IGxpc3QgY29udGFpbmluZyB0aGUgaXRlbXMgcHJlcGVuZGVkIHRvIHRoZSByZXN0LCB0aGVcbiAgbGFzdCBvZiB3aGljaCB3aWxsIGJlIHRyZWF0ZWQgYXMgYSBzZXF1ZW5jZS4iLCA6YXJnbGlzdHMgW1thcmdzXSBbYSBhcmdzXSBbYSBiIGFyZ3NdIFthIGIgYyBhcmdzXSBbYSBiIGMgZCAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBsaXN0KlxyXG4gXCJDcmVhdGVzIGEgbmV3IGxpc3QgY29udGFpbmluZyB0aGUgaXRlbXMgcHJlcGVuZGVkIHRvIHRoZSByZXN0LCB0aGVcXG4gIGxhc3Qgb2Ygd2hpY2ggd2lsbCBiZSB0cmVhdGVkIGFzIGEgc2VxdWVuY2UuXCJcclxuIChbYXJnc10gKHNlcSBhcmdzKSlcclxuIChbYSBhcmdzXSAoY29ucyBhIGFyZ3MpKVxyXG4gKFthIGIgYXJnc10gKGNvbnMgYSAoY29ucyBiIGFyZ3MpKSlcclxuIChbYSBiIGMgYXJnc10gKGNvbnMgYSAoY29ucyBiIChjb25zIGMgYXJncykpKSlcclxuIChbYSBiIGMgZCAmIG1vcmVdIChjb25zIGEgKGNvbnMgYiAoY29ucyBjIChjb25zIGQgKHNwcmVhZCBtb3JlKSkpKSkpKVxyXG4ifSB7OnN5bSB1cGRhdGUtaW4sIDptZXRhIHs6ZG9jICInVXBkYXRlcycgYSB2YWx1ZSBpbiBhIG5lc3RlZCBhc3NvY2lhdGl2ZSBzdHJ1Y3R1cmUsIHdoZXJlIGtzIGlzIGFcbiAgc2VxdWVuY2Ugb2Yga2V5cyBhbmQgZiBpcyBhIGZ1bmN0aW9uIHRoYXQgd2lsbCB0YWtlIHRoZSBvbGQgdmFsdWVcbiAgYW5kIGFueSBzdXBwbGllZCBhcmdzIGFuZCByZXR1cm4gdGhlIG5ldyB2YWx1ZSwgYW5kIHJldHVybnMgYSBuZXdcbiAgbmVzdGVkIHN0cnVjdHVyZS4gIElmIGFueSBsZXZlbHMgZG8gbm90IGV4aXN0LCBoYXNoLW1hcHMgd2lsbCBiZVxuICBjcmVhdGVkLiIsIDphcmdsaXN0cyBbW20gW2sgJiBrc10gZl0gW20gW2sgJiBrc10gZiBhXSBbbSBbayAmIGtzXSBmIGEgYl0gW20gW2sgJiBrc10gZiBhIGIgY10gW20gW2sgJiBrc10gZiBhIGIgYyAmIGFyZ3NdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiB1cGRhdGUtaW5cclxuIFwiJ1VwZGF0ZXMnIGEgdmFsdWUgaW4gYSBuZXN0ZWQgYXNzb2NpYXRpdmUgc3RydWN0dXJlLCB3aGVyZSBrcyBpcyBhXFxuICBzZXF1ZW5jZSBvZiBrZXlzIGFuZCBmIGlzIGEgZnVuY3Rpb24gdGhhdCB3aWxsIHRha2UgdGhlIG9sZCB2YWx1ZVxcbiAgYW5kIGFueSBzdXBwbGllZCBhcmdzIGFuZCByZXR1cm4gdGhlIG5ldyB2YWx1ZSwgYW5kIHJldHVybnMgYSBuZXdcXG4gIG5lc3RlZCBzdHJ1Y3R1cmUuICBJZiBhbnkgbGV2ZWxzIGRvIG5vdCBleGlzdCwgaGFzaC1tYXBzIHdpbGwgYmVcXG4gIGNyZWF0ZWQuXCJcclxuIChbbSBbayAmIGtzXSBmXVxyXG4gIChpZlxyXG4gICBrc1xyXG4gICAoYXNzb2MgbSBrICh1cGRhdGUtaW4gKGdldCBtIGspIGtzIGYpKVxyXG4gICAoYXNzb2MgbSBrIChmIChnZXQgbSBrKSkpKSlcclxuIChbbSBbayAmIGtzXSBmIGFdXHJcbiAgKGlmXHJcbiAgIGtzXHJcbiAgIChhc3NvYyBtIGsgKHVwZGF0ZS1pbiAoZ2V0IG0gaykga3MgZiBhKSlcclxuICAgKGFzc29jIG0gayAoZiAoZ2V0IG0gaykgYSkpKSlcclxuIChbbSBbayAmIGtzXSBmIGEgYl1cclxuICAoaWZcclxuICAga3NcclxuICAgKGFzc29jIG0gayAodXBkYXRlLWluIChnZXQgbSBrKSBrcyBmIGEgYikpXHJcbiAgIChhc3NvYyBtIGsgKGYgKGdldCBtIGspIGEgYikpKSlcclxuIChbbSBbayAmIGtzXSBmIGEgYiBjXVxyXG4gIChpZlxyXG4gICBrc1xyXG4gICAoYXNzb2MgbSBrICh1cGRhdGUtaW4gKGdldCBtIGspIGtzIGYgYSBiIGMpKVxyXG4gICAoYXNzb2MgbSBrIChmIChnZXQgbSBrKSBhIGIgYykpKSlcclxuIChbbSBbayAmIGtzXSBmIGEgYiBjICYgYXJnc11cclxuICAoaWZcclxuICAga3NcclxuICAgKGFzc29jIG0gayAoYXBwbHkgdXBkYXRlLWluIChnZXQgbSBrKSBrcyBmIGEgYiBjIGFyZ3MpKVxyXG4gICAoYXNzb2MgbSBrIChhcHBseSBmIChnZXQgbSBrKSBhIGIgYyBhcmdzKSkpKSlcclxuIn0gezpzeW0gcHJlZmVyLW1ldGhvZCwgOm1ldGEgezpkb2MgIkNhdXNlcyB0aGUgbXVsdGltZXRob2QgdG8gcHJlZmVyIG1hdGNoZXMgb2YgZGlzcGF0Y2gtdmFsLXggb3ZlciBkaXNwYXRjaC12YWwteVxuICAgd2hlbiB0aGVyZSBpcyBhIGNvbmZsaWN0IiwgOmFyZ2xpc3RzIChbbXVsdGlmbiBkaXNwYXRjaC12YWwteCBkaXNwYXRjaC12YWwteV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHByZWZlci1tZXRob2RcclxuIFwiQ2F1c2VzIHRoZSBtdWx0aW1ldGhvZCB0byBwcmVmZXIgbWF0Y2hlcyBvZiBkaXNwYXRjaC12YWwteCBvdmVyIGRpc3BhdGNoLXZhbC15XFxuICAgd2hlbiB0aGVyZSBpcyBhIGNvbmZsaWN0XCJcclxuIFttdWx0aWZuIGRpc3BhdGNoLXZhbC14IGRpc3BhdGNoLXZhbC15XVxyXG4gKC1wcmVmZXItbWV0aG9kIG11bHRpZm4gZGlzcGF0Y2gtdmFsLXggZGlzcGF0Y2gtdmFsLXkpKVxyXG4ifSB7OnN5bSBlbnN1cmUtcmVkdWNlZCwgOm1ldGEgezpkb2MgIklmIHggaXMgYWxyZWFkeSByZWR1Y2VkPywgcmV0dXJucyBpdCwgZWxzZSByZXR1cm5zIChyZWR1Y2VkIHgpIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGVuc3VyZS1yZWR1Y2VkXHJcbiBcIklmIHggaXMgYWxyZWFkeSByZWR1Y2VkPywgcmV0dXJucyBpdCwgZWxzZSByZXR1cm5zIChyZWR1Y2VkIHgpXCJcclxuIFt4XVxyXG4gKGlmIChyZWR1Y2VkPyB4KSB4IChyZWR1Y2VkIHgpKSlcclxuIn0gezpzeW0gaW5zdGFuY2U/LCA6bWV0YSB7OmRvYyAiRXZhbHVhdGVzIHggYW5kIHRlc3RzIGlmIGl0IGlzIGFuIGluc3RhbmNlIG9mIHRoZSB0eXBlXG4gIGMuIFJldHVybnMgdHJ1ZSBvciBmYWxzZSIsIDphcmdsaXN0cyAoW2MgeF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGluc3RhbmNlP1xyXG4gXCJFdmFsdWF0ZXMgeCBhbmQgdGVzdHMgaWYgaXQgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIHR5cGVcXG4gIGMuIFJldHVybnMgdHJ1ZSBvciBmYWxzZVwiXHJcbiBbYyB4XVxyXG4gKGNsanMuY29yZS9pbnN0YW5jZT8gYyB4KSlcclxuIn0gezpzeW0gbWl4LWNvbGxlY3Rpb24taGFzaCwgOm1ldGEgezpkb2MgIk1peCBmaW5hbCBjb2xsZWN0aW9uIGhhc2ggZm9yIG9yZGVyZWQgb3IgdW5vcmRlcmVkIGNvbGxlY3Rpb25zLlxuICAgaGFzaC1iYXNpcyBpcyB0aGUgY29tYmluZWQgY29sbGVjdGlvbiBoYXNoLCBjb3VudCBpcyB0aGUgbnVtYmVyXG4gICBvZiBlbGVtZW50cyBpbmNsdWRlZCBpbiB0aGUgYmFzaXMuIE5vdGUgdGhpcyBpcyB0aGUgaGFzaCBjb2RlXG4gICBjb25zaXN0ZW50IHdpdGggPSwgZGlmZmVyZW50IGZyb20gLmhhc2hDb2RlLlxuICAgU2VlIGh0dHA6Ly9jbG9qdXJlLm9yZy9kYXRhX3N0cnVjdHVyZXMjaGFzaCBmb3IgZnVsbCBhbGdvcml0aG1zLiIsIDphcmdsaXN0cyAoW2hhc2gtYmFzaXMgY291bnRdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBtaXgtY29sbGVjdGlvbi1oYXNoXHJcbiBcIk1peCBmaW5hbCBjb2xsZWN0aW9uIGhhc2ggZm9yIG9yZGVyZWQgb3IgdW5vcmRlcmVkIGNvbGxlY3Rpb25zLlxcbiAgIGhhc2gtYmFzaXMgaXMgdGhlIGNvbWJpbmVkIGNvbGxlY3Rpb24gaGFzaCwgY291bnQgaXMgdGhlIG51bWJlclxcbiAgIG9mIGVsZW1lbnRzIGluY2x1ZGVkIGluIHRoZSBiYXNpcy4gTm90ZSB0aGlzIGlzIHRoZSBoYXNoIGNvZGVcXG4gICBjb25zaXN0ZW50IHdpdGggPSwgZGlmZmVyZW50IGZyb20gLmhhc2hDb2RlLlxcbiAgIFNlZSBodHRwOi8vY2xvanVyZS5vcmcvZGF0YV9zdHJ1Y3R1cmVzI2hhc2ggZm9yIGZ1bGwgYWxnb3JpdGhtcy5cIlxyXG4gW2hhc2gtYmFzaXMgY291bnRdXHJcbiAobGV0XHJcbiAgW2gxIG0zLXNlZWQgazEgKG0zLW1peC1LMSBoYXNoLWJhc2lzKSBoMSAobTMtbWl4LUgxIGgxIGsxKV1cclxuICAobTMtZm1peCBoMSBjb3VudCkpKVxyXG4ifSB7OnN5bSByZS1maW5kLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgZmlyc3QgcmVnZXggbWF0Y2gsIGlmIGFueSwgb2YgcyB0byByZSwgdXNpbmdcbiAgcmUuZXhlYyhzKS4gUmV0dXJucyBhIHZlY3RvciwgY29udGFpbmluZyBmaXJzdCB0aGUgbWF0Y2hpbmdcbiAgc3Vic3RyaW5nLCB0aGVuIGFueSBjYXB0dXJpbmcgZ3JvdXBzIGlmIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gY29udGFpbnNcbiAgY2FwdHVyaW5nIGdyb3Vwcy4iLCA6YXJnbGlzdHMgKFtyZSBzXSl9LCA6c291cmNlICIoZGVmblxyXG4gcmUtZmluZFxyXG4gXCJSZXR1cm5zIHRoZSBmaXJzdCByZWdleCBtYXRjaCwgaWYgYW55LCBvZiBzIHRvIHJlLCB1c2luZ1xcbiAgcmUuZXhlYyhzKS4gUmV0dXJucyBhIHZlY3RvciwgY29udGFpbmluZyBmaXJzdCB0aGUgbWF0Y2hpbmdcXG4gIHN1YnN0cmluZywgdGhlbiBhbnkgY2FwdHVyaW5nIGdyb3VwcyBpZiB0aGUgcmVndWxhciBleHByZXNzaW9uIGNvbnRhaW5zXFxuICBjYXB0dXJpbmcgZ3JvdXBzLlwiXHJcbiBbcmUgc11cclxuIChpZlxyXG4gIChzdHJpbmc/IHMpXHJcbiAgKGxldFxyXG4gICBbbWF0Y2hlcyAoLmV4ZWMgcmUgcyldXHJcbiAgICh3aGVuLW5vdFxyXG4gICAgKG5pbD8gbWF0Y2hlcylcclxuICAgIChpZiAoPT0gKGNvdW50IG1hdGNoZXMpIDEpIChhZ2V0IG1hdGNoZXMgMCkgKHZlYyBtYXRjaGVzKSkpKVxyXG4gICh0aHJvdyAoanMvVHlwZUVycm9yLiBcInJlLWZpbmQgbXVzdCBtYXRjaCBhZ2FpbnN0IGEgc3RyaW5nLlwiKSkpKVxyXG4ifSB7OnN5bSBydW4hLCA6bWV0YSB7OmRvYyAiUnVucyB0aGUgc3VwcGxpZWQgcHJvY2VkdXJlICh2aWEgcmVkdWNlKSwgZm9yIHB1cnBvc2VzIG9mIHNpZGVcbiAgZWZmZWN0cywgb24gc3VjY2Vzc2l2ZSBpdGVtcyBpbiB0aGUgY29sbGVjdGlvbi4gUmV0dXJucyBuaWwiLCA6YXJnbGlzdHMgKFtwcm9jIGNvbGxdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBydW4hXHJcbiBcIlJ1bnMgdGhlIHN1cHBsaWVkIHByb2NlZHVyZSAodmlhIHJlZHVjZSksIGZvciBwdXJwb3NlcyBvZiBzaWRlXFxuICBlZmZlY3RzLCBvbiBzdWNjZXNzaXZlIGl0ZW1zIGluIHRoZSBjb2xsZWN0aW9uLiBSZXR1cm5zIG5pbFwiXHJcbiBbcHJvYyBjb2xsXVxyXG4gKHJlZHVjZSAoZm4qIFtwMV9fNDE0NjkjIHAyX180MTQ2OCNdIChwcm9jIHAyX180MTQ2OCMpKSBuaWwgY29sbClcclxuIG5pbClcclxuIn0gezpzeW0gdmFsLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgdmFsdWUgaW4gdGhlIG1hcCBlbnRyeS4iLCA6YXJnbGlzdHMgKFttYXAtZW50cnldKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB2YWxcclxuIFwiUmV0dXJucyB0aGUgdmFsdWUgaW4gdGhlIG1hcCBlbnRyeS5cIlxyXG4gW21hcC1lbnRyeV1cclxuICgtdmFsIG1hcC1lbnRyeSkpXHJcbiJ9IHs6c3ltIHVuY2hlY2tlZC1hZGQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBzdW0gb2YgbnVtcy4gKCspIHJldHVybnMgMC4iLCA6YXJnbGlzdHMgW1tdIFt4XSBbeCB5XSBbeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIHVuY2hlY2tlZC1hZGRcclxuIFwiUmV0dXJucyB0aGUgc3VtIG9mIG51bXMuICgrKSByZXR1cm5zIDAuXCJcclxuIChbXSAwKVxyXG4gKFt4XSB4KVxyXG4gKFt4IHldIChjbGpzLmNvcmUvdW5jaGVja2VkLWFkZCB4IHkpKVxyXG4gKFt4IHkgJiBtb3JlXVxyXG4gIChyZWR1Y2UgdW5jaGVja2VkLWFkZCAoY2xqcy5jb3JlL3VuY2hlY2tlZC1hZGQgeCB5KSBtb3JlKSkpXHJcbiJ9IHs6c3ltIHRyYW5zZm9ybWVyLWl0ZXJhdG9yLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hmb3JtIHNvdXJjZUl0ZXIgbXVsdGldKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB0cmFuc2Zvcm1lci1pdGVyYXRvclxyXG4gW3hmb3JtIHNvdXJjZUl0ZXIgbXVsdGldXHJcbiAobGV0XHJcbiAgW2l0ZXJhdG9yXHJcbiAgIChUcmFuc2Zvcm1lckl0ZXJhdG9yLiBFTVBUWSBOT05FIGZhbHNlIG5pbCBzb3VyY2VJdGVyIG11bHRpKV1cclxuICAoc2V0IVxyXG4gICAoLi14ZiBpdGVyYXRvcilcclxuICAgKHhmb3JtXHJcbiAgICAoZm5cclxuICAgICAoW10gbmlsKVxyXG4gICAgIChbYWNjXSBhY2MpXHJcbiAgICAgKFthY2Mgb11cclxuICAgICAgKHNldCEgKC4tYnVmZmVyIGl0ZXJhdG9yKSAoLmFkZCAoLi1idWZmZXIgaXRlcmF0b3IpIG8pKVxyXG4gICAgICBhY2MpKSkpXHJcbiAgaXRlcmF0b3IpKVxyXG4ifSB7OnN5bSBub3QsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgeCBpcyBsb2dpY2FsIGZhbHNlLCBmYWxzZSBvdGhlcndpc2UuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIG5vdFxyXG4gXCJSZXR1cm5zIHRydWUgaWYgeCBpcyBsb2dpY2FsIGZhbHNlLCBmYWxzZSBvdGhlcndpc2UuXCJcclxuIFt4XVxyXG4gKGNvbmQgKG5pbD8geCkgdHJ1ZSAoZmFsc2U/IHgpIHRydWUgOmVsc2UgZmFsc2UpKVxyXG4ifSB7OnN5bSAtdnJlc2V0ISwgOm1ldGEgezpkb2MgIlNldHMgdGhlIHZhbHVlIG9mIHZvbGF0aWxlIG8gdG8gbmV3LXZhbHVlIHdpdGhvdXQgcmVnYXJkIGZvciB0aGVcbiAgICAgY3VycmVudCB2YWx1ZS4gUmV0dXJucyBuZXctdmFsdWUuIiwgOmFyZ2xpc3RzIChbbyBuZXctdmFsdWVdKX0sIDpwcm90b2NvbCBJVm9sYXRpbGV9IHs6c3ltIHdpdGgtbWV0YSwgOm1ldGEgezpkb2MgIlJldHVybnMgYW4gb2JqZWN0IG9mIHRoZSBzYW1lIHR5cGUgYW5kIHZhbHVlIGFzIG9iaiwgd2l0aFxuICBtYXAgbSBhcyBpdHMgbWV0YWRhdGEuIiwgOmFyZ2xpc3RzIChbbyBtZXRhXSl9LCA6c291cmNlICIoZGVmblxyXG4gd2l0aC1tZXRhXHJcbiBcIlJldHVybnMgYW4gb2JqZWN0IG9mIHRoZSBzYW1lIHR5cGUgYW5kIHZhbHVlIGFzIG9iaiwgd2l0aFxcbiAgbWFwIG0gYXMgaXRzIG1ldGFkYXRhLlwiXHJcbiBbbyBtZXRhXVxyXG4gKGlmXHJcbiAgKGdvb2cvaXNGdW5jdGlvbiBvKVxyXG4gIChNZXRhRm4uIG8gbWV0YSlcclxuICAod2hlbi1ub3QgKG5pbD8gbykgKC13aXRoLW1ldGEgbyBtZXRhKSkpKVxyXG4ifSB7OnN5bSB1bnJlZHVjZWQsIDptZXRhIHs6ZG9jICJJZiB4IGlzIHJlZHVjZWQ/LCByZXR1cm5zIChkZXJlZiB4KSwgZWxzZSByZXR1cm5zIHgiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxyXG4gdW5yZWR1Y2VkXHJcbiBcIklmIHggaXMgcmVkdWNlZD8sIHJldHVybnMgKGRlcmVmIHgpLCBlbHNlIHJldHVybnMgeFwiXHJcbiBbeF1cclxuIChpZiAocmVkdWNlZD8geCkgKGRlcmVmIHgpIHgpKVxyXG4ifSB7OnN5bSByZWNvcmQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJuIHRydWUgaWYgeCBzYXRpc2ZpZXMgSVJlY29yZCIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiByZWNvcmQ/XHJcbiBcIlJldHVybiB0cnVlIGlmIHggc2F0aXNmaWVzIElSZWNvcmRcIlxyXG4gW3hdXHJcbiAoc2F0aXNmaWVzPyBJUmVjb3JkIHgpKVxyXG4ifSB7OnN5bSB0eXBlLCA6bWV0YSB7OmRvYyAiUmV0dXJuIHgncyBjb25zdHJ1Y3Rvci4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxyXG4gdHlwZVxyXG4gXCJSZXR1cm4geCdzIGNvbnN0cnVjdG9yLlwiXHJcbiBbeF1cclxuICh3aGVuLW5vdCAobmlsPyB4KSAoLi1jb25zdHJ1Y3RvciB4KSkpXHJcbiJ9IHs6c3ltIGlkZW50aWNhbD8sIDptZXRhIHs6ZG9jICJUZXN0cyBpZiAyIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgb2JqZWN0IiwgOmFyZ2xpc3RzIChbeCB5XSl9LCA6c291cmNlICIoZGVmblxyXG4gaWRlbnRpY2FsP1xyXG4gXCJUZXN0cyBpZiAyIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgb2JqZWN0XCJcclxuIFt4IHldXHJcbiAoY2xqcy5jb3JlL2lkZW50aWNhbD8geCB5KSlcclxuIn0gezpzeW0gLW5hbWVzcGFjZSwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG5hbWVzcGFjZSBTdHJpbmcgb2YgeC4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6cHJvdG9jb2wgSU5hbWVkfSB7OnN5bSB1bmNoZWNrZWQtZGl2aWRlLWludCwgOm1ldGEgezpkb2MgIklmIG5vIGRlbm9taW5hdG9ycyBhcmUgc3VwcGxpZWQsIHJldHVybnMgMS9udW1lcmF0b3IsXG4gIGVsc2UgcmV0dXJucyBudW1lcmF0b3IgZGl2aWRlZCBieSBhbGwgb2YgdGhlIGRlbm9taW5hdG9ycy4iLCA6YXJnbGlzdHMgW1t4XSBbeCB5XSBbeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIHVuY2hlY2tlZC1kaXZpZGUtaW50XHJcbiBcIklmIG5vIGRlbm9taW5hdG9ycyBhcmUgc3VwcGxpZWQsIHJldHVybnMgMS9udW1lcmF0b3IsXFxuICBlbHNlIHJldHVybnMgbnVtZXJhdG9yIGRpdmlkZWQgYnkgYWxsIG9mIHRoZSBkZW5vbWluYXRvcnMuXCJcclxuIChbeF0gKHVuY2hlY2tlZC1kaXZpZGUtaW50IDEgeCkpXHJcbiAoW3ggeV0gKGNsanMuY29yZS9kaXZpZGUgeCB5KSlcclxuIChbeCB5ICYgbW9yZV1cclxuICAocmVkdWNlIHVuY2hlY2tlZC1kaXZpZGUtaW50ICh1bmNoZWNrZWQtZGl2aWRlLWludCB4IHkpIG1vcmUpKSlcclxuIn0gezpzeW0gbnMtbmFtZSwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG5hbWUgb2YgdGhlIG5hbWVzcGFjZSwgYSBOYW1lc3BhY2Ugb2JqZWN0LlxuICBCb290c3RyYXAgb25seS4iLCA6YXJnbGlzdHMgKFtucy1vYmpdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBucy1uYW1lXHJcbiBcIlJldHVybnMgdGhlIG5hbWUgb2YgdGhlIG5hbWVzcGFjZSwgYSBOYW1lc3BhY2Ugb2JqZWN0LlxcbiAgQm9vdHN0cmFwIG9ubHkuXCJcclxuIFtucy1vYmpdXHJcbiAoLi1uYW1lIG5zLW9iaikpXHJcbiJ9IHs6c3ltIG1heC1rZXksIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSB4IGZvciB3aGljaCAoayB4KSwgYSBudW1iZXIsIGlzIGdyZWF0ZXN0LlxuXG4gIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBzdWNoIHhzLCB0aGUgbGFzdCBvbmUgaXMgcmV0dXJuZWQuIiwgOmFyZ2xpc3RzIFtbayB4XSBbayB4IHldIFtrIHggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBtYXgta2V5XHJcbiBcIlJldHVybnMgdGhlIHggZm9yIHdoaWNoIChrIHgpLCBhIG51bWJlciwgaXMgZ3JlYXRlc3QuXFxuXFxuICBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgc3VjaCB4cywgdGhlIGxhc3Qgb25lIGlzIHJldHVybmVkLlwiXHJcbiAoW2sgeF0geClcclxuIChbayB4IHldIChpZiAoPiAoayB4KSAoayB5KSkgeCB5KSlcclxuIChbayB4IHkgJiBtb3JlXVxyXG4gIChyZWR1Y2VcclxuICAgKGZuKiBbcDFfXzQxNDUxIyBwMl9fNDE0NTIjXSAobWF4LWtleSBrIHAxX180MTQ1MSMgcDJfXzQxNDUyIykpXHJcbiAgIChtYXgta2V5IGsgeCB5KVxyXG4gICBtb3JlKSkpXHJcbiJ9IHs6c3ltICpvdXQqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqb3V0KiBuaWwpXHJcbiJ9IHs6c3ltIGhhc2gtc3RyaW5nLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2tdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBoYXNoLXN0cmluZ1xyXG4gW2tdXHJcbiAod2hlblxyXG4gICg+IHN0cmluZy1oYXNoLWNhY2hlLWNvdW50IDI1NSlcclxuICAoc2V0ISBzdHJpbmctaGFzaC1jYWNoZSAoanMtb2JqKSlcclxuICAoc2V0ISBzdHJpbmctaGFzaC1jYWNoZS1jb3VudCAwKSlcclxuIChpZlxyXG4gIChuaWw/IGspXHJcbiAgMFxyXG4gIChsZXRcclxuICAgW2ggKHVuY2hlY2tlZC1nZXQgc3RyaW5nLWhhc2gtY2FjaGUgayldXHJcbiAgIChpZiAobnVtYmVyPyBoKSBoIChhZGQtdG8tc3RyaW5nLWhhc2gtY2FjaGUgaykpKSkpXHJcbiJ9IHs6c3ltIC1wcmVmZXJzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21mXSl9LCA6cHJvdG9jb2wgSU11bHRpRm59IHs6c3ltIHNldC12YWxpZGF0b3IhLCA6bWV0YSB7OmRvYyAiU2V0cyB0aGUgdmFsaWRhdG9yLWZuIGZvciBhbiBhdG9tLiB2YWxpZGF0b3ItZm4gbXVzdCBiZSBuaWwgb3IgYVxuICBzaWRlLWVmZmVjdC1mcmVlIGZuIG9mIG9uZSBhcmd1bWVudCwgd2hpY2ggd2lsbCBiZSBwYXNzZWQgdGhlIGludGVuZGVkXG4gIG5ldyBzdGF0ZSBvbiBhbnkgc3RhdGUgY2hhbmdlLiBJZiB0aGUgbmV3IHN0YXRlIGlzIHVuYWNjZXB0YWJsZSwgdGhlXG4gIHZhbGlkYXRvci1mbiBzaG91bGQgcmV0dXJuIGZhbHNlIG9yIHRocm93IGFuIEVycm9yLiBJZiB0aGUgY3VycmVudCBzdGF0ZVxuICBpcyBub3QgYWNjZXB0YWJsZSB0byB0aGUgbmV3IHZhbGlkYXRvciwgYW4gRXJyb3Igd2lsbCBiZSB0aHJvd24gYW5kIHRoZVxuICB2YWxpZGF0b3Igd2lsbCBub3QgYmUgY2hhbmdlZC4iLCA6YXJnbGlzdHMgKFtpcmVmIHZhbF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHNldC12YWxpZGF0b3IhXHJcbiBcIlNldHMgdGhlIHZhbGlkYXRvci1mbiBmb3IgYW4gYXRvbS4gdmFsaWRhdG9yLWZuIG11c3QgYmUgbmlsIG9yIGFcXG4gIHNpZGUtZWZmZWN0LWZyZWUgZm4gb2Ygb25lIGFyZ3VtZW50LCB3aGljaCB3aWxsIGJlIHBhc3NlZCB0aGUgaW50ZW5kZWRcXG4gIG5ldyBzdGF0ZSBvbiBhbnkgc3RhdGUgY2hhbmdlLiBJZiB0aGUgbmV3IHN0YXRlIGlzIHVuYWNjZXB0YWJsZSwgdGhlXFxuICB2YWxpZGF0b3ItZm4gc2hvdWxkIHJldHVybiBmYWxzZSBvciB0aHJvdyBhbiBFcnJvci4gSWYgdGhlIGN1cnJlbnQgc3RhdGVcXG4gIGlzIG5vdCBhY2NlcHRhYmxlIHRvIHRoZSBuZXcgdmFsaWRhdG9yLCBhbiBFcnJvciB3aWxsIGJlIHRocm93biBhbmQgdGhlXFxuICB2YWxpZGF0b3Igd2lsbCBub3QgYmUgY2hhbmdlZC5cIlxyXG4gW2lyZWYgdmFsXVxyXG4gKHdoZW5cclxuICAoYW5kIChzb21lPyB2YWwpIChub3QgKHZhbCAoLWRlcmVmIGlyZWYpKSkpXHJcbiAgKHRocm93IChqcy9FcnJvci4gXCJWYWxpZGF0b3IgcmVqZWN0ZWQgcmVmZXJlbmNlIHN0YXRlXCIpKSlcclxuIChzZXQhICguLXZhbGlkYXRvciBpcmVmKSB2YWwpKVxyXG4ifSB7OnN5bSBpZGVudD8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IGlzIGEgc3ltYm9sIG9yIGtleXdvcmQiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxyXG4gaWRlbnQ/XHJcbiBcIlJldHVybiB0cnVlIGlmIHggaXMgYSBzeW1ib2wgb3Iga2V5d29yZFwiXHJcbiBbeF1cclxuIChvciAoa2V5d29yZD8geCkgKHN5bWJvbD8geCkpKVxyXG4ifSB7OnN5bSAtbWV0YSwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG1ldGFkYXRhIG9mIG9iamVjdCBvLiIsIDphcmdsaXN0cyAoW29dKX0sIDpwcm90b2NvbCBJTWV0YX0gezpzeW0gLWRpc3BhdGNoLWZuLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21mXSl9LCA6cHJvdG9jb2wgSU11bHRpRm59IHs6c3ltIC1hZGQtbWV0aG9kLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21mIGRpc3BhdGNoLXZhbCBtZXRob2RdKX0sIDpwcm90b2NvbCBJTXVsdGlGbn0gezpzeW0gc3dhcCEsIDptZXRhIHs6ZG9jICJBdG9taWNhbGx5IHN3YXBzIHRoZSB2YWx1ZSBvZiBhdG9tIHRvIGJlOlxuICAoYXBwbHkgZiBjdXJyZW50LXZhbHVlLW9mLWF0b20gYXJncykuIE5vdGUgdGhhdCBmIG1heSBiZSBjYWxsZWRcbiAgbXVsdGlwbGUgdGltZXMsIGFuZCB0aHVzIHNob3VsZCBiZSBmcmVlIG9mIHNpZGUgZWZmZWN0cy4gIFJldHVybnNcbiAgdGhlIHZhbHVlIHRoYXQgd2FzIHN3YXBwZWQgaW4uIiwgOmFyZ2xpc3RzIFtbYSBmXSBbYSBmIHhdIFthIGYgeCB5XSBbYSBmIHggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBzd2FwIVxyXG4gXCJBdG9taWNhbGx5IHN3YXBzIHRoZSB2YWx1ZSBvZiBhdG9tIHRvIGJlOlxcbiAgKGFwcGx5IGYgY3VycmVudC12YWx1ZS1vZi1hdG9tIGFyZ3MpLiBOb3RlIHRoYXQgZiBtYXkgYmUgY2FsbGVkXFxuICBtdWx0aXBsZSB0aW1lcywgYW5kIHRodXMgc2hvdWxkIGJlIGZyZWUgb2Ygc2lkZSBlZmZlY3RzLiAgUmV0dXJuc1xcbiAgdGhlIHZhbHVlIHRoYXQgd2FzIHN3YXBwZWQgaW4uXCJcclxuIChbYSBmXVxyXG4gIChpZiAoaW5zdGFuY2U/IEF0b20gYSkgKHJlc2V0ISBhIChmICguLXN0YXRlIGEpKSkgKC1zd2FwISBhIGYpKSlcclxuIChbYSBmIHhdXHJcbiAgKGlmIChpbnN0YW5jZT8gQXRvbSBhKSAocmVzZXQhIGEgKGYgKC4tc3RhdGUgYSkgeCkpICgtc3dhcCEgYSBmIHgpKSlcclxuIChbYSBmIHggeV1cclxuICAoaWZcclxuICAgKGluc3RhbmNlPyBBdG9tIGEpXHJcbiAgIChyZXNldCEgYSAoZiAoLi1zdGF0ZSBhKSB4IHkpKVxyXG4gICAoLXN3YXAhIGEgZiB4IHkpKSlcclxuIChbYSBmIHggeSAmIG1vcmVdXHJcbiAgKGlmXHJcbiAgIChpbnN0YW5jZT8gQXRvbSBhKVxyXG4gICAocmVzZXQhIGEgKGFwcGx5IGYgKC4tc3RhdGUgYSkgeCB5IG1vcmUpKVxyXG4gICAoLXN3YXAhIGEgZiB4IHkgbW9yZSkpKSlcclxuIn0gezpzeW0gdmFscywgOm1ldGEgezpkb2MgIlJldHVybnMgYSBzZXF1ZW5jZSBvZiB0aGUgbWFwJ3MgdmFsdWVzLCBpbiB0aGUgc2FtZSBvcmRlciBhcyAoc2VxIG1hcCkuIiwgOmFyZ2xpc3RzIChbbWFwXSl9LCA6c291cmNlICIoZGVmblxyXG4gdmFsc1xyXG4gXCJSZXR1cm5zIGEgc2VxdWVuY2Ugb2YgdGhlIG1hcCdzIHZhbHVlcywgaW4gdGhlIHNhbWUgb3JkZXIgYXMgKHNlcSBtYXApLlwiXHJcbiBbbWFwXVxyXG4gKHdoZW4tbGV0IFttc2VxIChzZXEgbWFwKV0gKFZhbFNlcS4gbXNlcSBuaWwpKSlcclxuIn0gezpzeW0gLWNodW5rZWQtbmV4dCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBuZXcgY29sbGVjdGlvbiBvZiBjb2xsIHdpdGhvdXQgdGhlIGZpcnN0IGNodW5rLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpwcm90b2NvbCBJQ2h1bmtlZE5leHR9IHs6c3ltIHVuY2hlY2tlZC1zdWJ0cmFjdCwgOm1ldGEgezpkb2MgIklmIG5vIHlzIGFyZSBzdXBwbGllZCwgcmV0dXJucyB0aGUgbmVnYXRpb24gb2YgeCwgZWxzZSBzdWJ0cmFjdHNcbiAgdGhlIHlzIGZyb20geCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LiIsIDphcmdsaXN0cyBbW3hdIFt4IHldIFt4IHkgJiBtb3JlXV19LCA6c291cmNlICIoZGVmblxyXG4gdW5jaGVja2VkLXN1YnRyYWN0XHJcbiBcIklmIG5vIHlzIGFyZSBzdXBwbGllZCwgcmV0dXJucyB0aGUgbmVnYXRpb24gb2YgeCwgZWxzZSBzdWJ0cmFjdHNcXG4gIHRoZSB5cyBmcm9tIHggYW5kIHJldHVybnMgdGhlIHJlc3VsdC5cIlxyXG4gKFt4XSAoY2xqcy5jb3JlL3VuY2hlY2tlZC1zdWJ0cmFjdCB4KSlcclxuIChbeCB5XSAoY2xqcy5jb3JlL3VuY2hlY2tlZC1zdWJ0cmFjdCB4IHkpKVxyXG4gKFt4IHkgJiBtb3JlXVxyXG4gIChyZWR1Y2UgdW5jaGVja2VkLXN1YnRyYWN0IChjbGpzLmNvcmUvdW5jaGVja2VkLXN1YnRyYWN0IHggeSkgbW9yZSkpKVxyXG4ifSB7OnN5bSB0YXA+LCA6bWV0YSB7OmRvYyAiU2VuZHMgeCB0byBhbnkgdGFwcy4gUmV0dXJucyB0aGUgcmVzdWx0IG9mICpleGVjLXRhcC1mbiosIGEgQm9vbGVhbiB2YWx1ZS4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxyXG4gdGFwPlxyXG4gXCJTZW5kcyB4IHRvIGFueSB0YXBzLiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgKmV4ZWMtdGFwLWZuKiwgYSBCb29sZWFuIHZhbHVlLlwiXHJcbiBbeF1cclxuIChtYXliZS1pbml0LXRhcHNldClcclxuICgqZXhlYy10YXAtZm4qXHJcbiAgKGZuIFtdIChkb3NlcSBbdGFwIEB0YXBzZXRdICh0cnkgKHRhcCB4KSAoY2F0Y2gganMvRXJyb3IgZXgpKSkpKSlcclxuIn0gezpzeW0gSU1hcCwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhZGRpbmcgbWFwcGluZyBmdW5jdGlvbmFsaXR5IHRvIGNvbGxlY3Rpb25zLiJ9LCA6bWV0aG9kcyAoLWRpc3NvYyl9IHs6c3ltIHNvcnRlZC1zZXQtYnksIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbmV3IHNvcnRlZCBzZXQgd2l0aCBzdXBwbGllZCBrZXlzLCB1c2luZyB0aGUgc3VwcGxpZWQgY29tcGFyYXRvci4iLCA6YXJnbGlzdHMgW1tjb21wYXJhdG9yICYga2V5c11dfSwgOnNvdXJjZSAiKGRlZm5cclxuIHNvcnRlZC1zZXQtYnlcclxuIFwiUmV0dXJucyBhIG5ldyBzb3J0ZWQgc2V0IHdpdGggc3VwcGxpZWQga2V5cywgdXNpbmcgdGhlIHN1cHBsaWVkIGNvbXBhcmF0b3IuXCJcclxuIChbY29tcGFyYXRvciAmIGtleXNdXHJcbiAgKHJlZHVjZVxyXG4gICAtY29ualxyXG4gICAoUGVyc2lzdGVudFRyZWVTZXQuIG5pbCAoc29ydGVkLW1hcC1ieSBjb21wYXJhdG9yKSAwKVxyXG4gICBrZXlzKSkpXHJcbiJ9IHs6c3ltIGNsb25lYWJsZT8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IGltcGxlbWVudHMgSUNsb25lYWJsZSBwcm90b2NvbC4iLCA6YXJnbGlzdHMgKFt2YWx1ZV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGNsb25lYWJsZT9cclxuIFwiUmV0dXJuIHRydWUgaWYgeCBpbXBsZW1lbnRzIElDbG9uZWFibGUgcHJvdG9jb2wuXCJcclxuIFt2YWx1ZV1cclxuIChzYXRpc2ZpZXM/IElDbG9uZWFibGUgdmFsdWUpKVxyXG4ifSB7OnN5bSBxdWFsaWZpZWQtaWRlbnQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJuIHRydWUgaWYgeCBpcyBhIHN5bWJvbCBvciBrZXl3b3JkIHdpdGggYSBuYW1lc3BhY2UiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxyXG4gcXVhbGlmaWVkLWlkZW50P1xyXG4gXCJSZXR1cm4gdHJ1ZSBpZiB4IGlzIGEgc3ltYm9sIG9yIGtleXdvcmQgd2l0aCBhIG5hbWVzcGFjZVwiXHJcbiBbeF1cclxuIChib29sZWFuIChhbmQgKGlkZW50PyB4KSAobmFtZXNwYWNlIHgpIHRydWUpKSlcclxuIn0gezpzeW0gaGFzaC1zdHJpbmcqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBoYXNoLXN0cmluZypcclxuIFtzXVxyXG4gKGlmLW5vdFxyXG4gIChuaWw/IHMpXHJcbiAgKGxldFxyXG4gICBbbGVuICguLWxlbmd0aCBzKV1cclxuICAgKGlmXHJcbiAgICAocG9zPyBsZW4pXHJcbiAgICAobG9vcFxyXG4gICAgIFtpIDAgaGFzaCAwXVxyXG4gICAgIChpZlxyXG4gICAgICAoPCBpIGxlbilcclxuICAgICAgKHJlY3VyIChpbmMgaSkgKCsgKGltdWwgMzEgaGFzaCkgKC5jaGFyQ29kZUF0IHMgaSkpKVxyXG4gICAgICBoYXNoKSlcclxuICAgIDApKVxyXG4gIDApKVxyXG4ifSB7OnN5bSBrZXktdGVzdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtrZXkgb3RoZXJdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBrZXktdGVzdFxyXG4gW2tleSBvdGhlcl1cclxuIChjb25kXHJcbiAgKGlkZW50aWNhbD8ga2V5IG90aGVyKVxyXG4gIHRydWVcclxuICAoa2V5d29yZC1pZGVudGljYWw/IGtleSBvdGhlcilcclxuICB0cnVlXHJcbiAgOmVsc2VcclxuICAoPSBrZXkgb3RoZXIpKSlcclxuIn0gezpzeW0gLXJlc2V0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21mXSl9LCA6cHJvdG9jb2wgSU11bHRpRm59IHs6c3ltIHRydWU/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIHggaXMgdGhlIHZhbHVlIHRydWUsIGZhbHNlIG90aGVyd2lzZS4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxyXG4gdHJ1ZT9cclxuIFwiUmV0dXJucyB0cnVlIGlmIHggaXMgdGhlIHZhbHVlIHRydWUsIGZhbHNlIG90aGVyd2lzZS5cIlxyXG4gW3hdXHJcbiAoY2xqcy5jb3JlL3RydWU/IHgpKVxyXG4ifSB7OnN5bSBhcnJheSwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYSBuZXcgamF2YXNjcmlwdCBhcnJheS5cbkBwYXJhbSB7Li4uKn0gdmFyX2FyZ3MiLCA6YXJnbGlzdHMgKFt2YXItYXJnc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGFycmF5XHJcbiBcIkNyZWF0ZXMgYSBuZXcgamF2YXNjcmlwdCBhcnJheS5cXG5AcGFyYW0gey4uLip9IHZhcl9hcmdzXCJcclxuIFt2YXItYXJnc11cclxuIChsZXRcclxuICBbYSAoanMvQXJyYXkuIChhbGVuZ3RoIChjbGpzLmNvcmUvanMtYXJndW1lbnRzKSkpXVxyXG4gIChsb29wXHJcbiAgIFtpIDBdXHJcbiAgIChpZlxyXG4gICAgKDwgaSAoYWxlbmd0aCBhKSlcclxuICAgIChkbyAoYXNldCBhIGkgKGFnZXQgKGNsanMuY29yZS9qcy1hcmd1bWVudHMpIGkpKSAocmVjdXIgKGluYyBpKSkpXHJcbiAgICBhKSkpKVxyXG4ifSB7OnN5bSBwcmludCwgOm1ldGEgezpkb2MgIlByaW50cyB0aGUgb2JqZWN0KHMpIHVzaW5nIHN0cmluZy1wcmludC5cbiAgcHJpbnQgYW5kIHByaW50bG4gcHJvZHVjZSBvdXRwdXQgZm9yIGh1bWFuIGNvbnN1bXB0aW9uLiJ9LCA6c291cmNlICIoZGVmXHJcbiBwcmludFxyXG4gKGZuXHJcbiAgY2xqcy1jb3JlLXByaW50XHJcbiAgWyYgb2Jqc11cclxuICAocHItd2l0aC1vcHRzIG9ianMgKGFzc29jIChwci1vcHRzKSA6cmVhZGFibHkgZmFsc2UpKSkpXHJcbiJ9IHs6c3ltIC1wZWVrLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgaXRlbSBmcm9tIHRoZSB0b3Agb2YgdGhlIHN0YWNrLiBJcyB1c2VkIGJ5IGNsanMuY29yZS9wZWVrLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpwcm90b2NvbCBJU3RhY2t9IHs6c3ltIElTZXEsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgY29sbGVjdGlvbnMgdG8gcHJvdmlkZSBhY2Nlc3MgdG8gdGhlaXIgaXRlbXMgYXMgc2VxdWVuY2VzLiJ9LCA6bWV0aG9kcyAoLWZpcnN0IC1yZXN0KX0gezpzeW0gZW1wdHksIDptZXRhIHs6ZG9jICJSZXR1cm5zIGFuIGVtcHR5IGNvbGxlY3Rpb24gb2YgdGhlIHNhbWUgY2F0ZWdvcnkgYXMgY29sbCwgb3IgbmlsIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGVtcHR5XHJcbiBcIlJldHVybnMgYW4gZW1wdHkgY29sbGVjdGlvbiBvZiB0aGUgc2FtZSBjYXRlZ29yeSBhcyBjb2xsLCBvciBuaWxcIlxyXG4gW2NvbGxdXHJcbiAod2hlbi1ub3RcclxuICAobmlsPyBjb2xsKVxyXG4gIChjb25kXHJcbiAgIChpbXBsZW1lbnRzPyBJRW1wdHlhYmxlQ29sbGVjdGlvbiBjb2xsKVxyXG4gICAoLWVtcHR5IGNvbGwpXHJcbiAgIChzYXRpc2ZpZXM/IElFbXB0eWFibGVDb2xsZWN0aW9uIGNvbGwpXHJcbiAgICgtZW1wdHkgY29sbClcclxuICAgOmVsc2VcclxuICAgbmlsKSkpXHJcbiJ9IHs6c3ltIHJlbW92ZS1tZXRob2QsIDptZXRhIHs6ZG9jICJSZW1vdmVzIHRoZSBtZXRob2Qgb2YgbXVsdGltZXRob2QgYXNzb2NpYXRlZCB3aXRoIGRpc3BhdGNoLXZhbHVlLiIsIDphcmdsaXN0cyAoW211bHRpZm4gZGlzcGF0Y2gtdmFsXSl9LCA6c291cmNlICIoZGVmblxyXG4gcmVtb3ZlLW1ldGhvZFxyXG4gXCJSZW1vdmVzIHRoZSBtZXRob2Qgb2YgbXVsdGltZXRob2QgYXNzb2NpYXRlZCB3aXRoIGRpc3BhdGNoLXZhbHVlLlwiXHJcbiBbbXVsdGlmbiBkaXNwYXRjaC12YWxdXHJcbiAoLXJlbW92ZS1tZXRob2QgbXVsdGlmbiBkaXNwYXRjaC12YWwpKVxyXG4ifSB7OnN5bSB2b2xhdGlsZSEsIDptZXRhIHs6ZG9jICJDcmVhdGVzIGFuZCByZXR1cm5zIGEgVm9sYXRpbGUgd2l0aCBhbiBpbml0aWFsIHZhbHVlIG9mIHZhbC4iLCA6YXJnbGlzdHMgKFt2YWxdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB2b2xhdGlsZSFcclxuIFwiQ3JlYXRlcyBhbmQgcmV0dXJucyBhIFZvbGF0aWxlIHdpdGggYW4gaW5pdGlhbCB2YWx1ZSBvZiB2YWwuXCJcclxuIFt2YWxdXHJcbiAoVm9sYXRpbGUuIHZhbCkpXHJcbiJ9IHs6c3ltIC8sIDptZXRhIHs6ZG9jICJJZiBubyBkZW5vbWluYXRvcnMgYXJlIHN1cHBsaWVkLCByZXR1cm5zIDEvbnVtZXJhdG9yLFxuICBlbHNlIHJldHVybnMgbnVtZXJhdG9yIGRpdmlkZWQgYnkgYWxsIG9mIHRoZSBkZW5vbWluYXRvcnMuIiwgOmFyZ2xpc3RzIFtbeF0gW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiAvXHJcbiBcIklmIG5vIGRlbm9taW5hdG9ycyBhcmUgc3VwcGxpZWQsIHJldHVybnMgMS9udW1lcmF0b3IsXFxuICBlbHNlIHJldHVybnMgbnVtZXJhdG9yIGRpdmlkZWQgYnkgYWxsIG9mIHRoZSBkZW5vbWluYXRvcnMuXCJcclxuIChbeF0gKC8gMSB4KSlcclxuIChbeCB5XSAoY2xqcy5jb3JlL2RpdmlkZSB4IHkpKVxyXG4gKFt4IHkgJiBtb3JlXSAocmVkdWNlIC8gKC8geCB5KSBtb3JlKSkpXHJcbiJ9IHs6c3ltIGJpdC1vciwgOm1ldGEgezpkb2MgIkJpdHdpc2Ugb3IiLCA6YXJnbGlzdHMgW1t4IHldIFt4IHkgJiBtb3JlXV19LCA6c291cmNlICIoZGVmblxyXG4gYml0LW9yXHJcbiBcIkJpdHdpc2Ugb3JcIlxyXG4gKFt4IHldIChjbGpzLmNvcmUvYml0LW9yIHggeSkpXHJcbiAoW3ggeSAmIG1vcmVdIChyZWR1Y2UgYml0LW9yIChjbGpzLmNvcmUvYml0LW9yIHggeSkgbW9yZSkpKVxyXG4ifSB7OnN5bSBtMy1mbWl4LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2gxIGxlbl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIG0zLWZtaXhcclxuIFtoMSBsZW5dXHJcbiAoYXMtPlxyXG4gIChpbnQgaDEpXHJcbiAgaDFcclxuICAoYml0LXhvciBoMSBsZW4pXHJcbiAgKGJpdC14b3IgaDEgKHVuc2lnbmVkLWJpdC1zaGlmdC1yaWdodCBoMSAxNikpXHJcbiAgKGltdWwgaDEgKGludCAyMjQ2ODIyNTA3KSlcclxuICAoYml0LXhvciBoMSAodW5zaWduZWQtYml0LXNoaWZ0LXJpZ2h0IGgxIDEzKSlcclxuICAoaW11bCBoMSAoaW50IDMyNjY0ODk5MDkpKVxyXG4gIChiaXQteG9yIGgxICh1bnNpZ25lZC1iaXQtc2hpZnQtcmlnaHQgaDEgMTYpKSkpXHJcbiJ9IHs6c3ltIHZlY3RvciwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYSBuZXcgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGFyZ3MuIiwgOmFyZ2xpc3RzIChbJiBhcmdzXSl9LCA6c291cmNlICIoZGVmblxyXG4gdmVjdG9yXHJcbiBcIkNyZWF0ZXMgYSBuZXcgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGFyZ3MuXCJcclxuIFsmIGFyZ3NdXHJcbiAoaWZcclxuICAoYW5kIChpbnN0YW5jZT8gSW5kZXhlZFNlcSBhcmdzKSAoemVybz8gKC4taSBhcmdzKSkpXHJcbiAgKC5mcm9tQXJyYXlcclxuICAgUGVyc2lzdGVudFZlY3RvclxyXG4gICAoLi1hcnIgYXJncylcclxuICAgKG5vdCAoYXJyYXk/ICguLWFyciBhcmdzKSkpKVxyXG4gICh2ZWMgYXJncykpKVxyXG4ifSB7OnN5bSA+PSwgOm1ldGEgezpkb2MgIlJldHVybnMgbm9uLW5pbCBpZiBudW1zIGFyZSBpbiBtb25vdG9uaWNhbGx5IG5vbi1pbmNyZWFzaW5nIG9yZGVyLFxuICBvdGhlcndpc2UgZmFsc2UuIiwgOmFyZ2xpc3RzIFtbeF0gW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiA+PVxyXG4gXCJSZXR1cm5zIG5vbi1uaWwgaWYgbnVtcyBhcmUgaW4gbW9ub3RvbmljYWxseSBub24taW5jcmVhc2luZyBvcmRlcixcXG4gIG90aGVyd2lzZSBmYWxzZS5cIlxyXG4gKFt4XSB0cnVlKVxyXG4gKFt4IHldIChjbGpzLmNvcmUvPj0geCB5KSlcclxuIChbeCB5ICYgbW9yZV1cclxuICAoaWZcclxuICAgKGNsanMuY29yZS8+PSB4IHkpXHJcbiAgIChpZlxyXG4gICAgKG5leHQgbW9yZSlcclxuICAgIChyZWN1ciB5IChmaXJzdCBtb3JlKSAobmV4dCBtb3JlKSlcclxuICAgIChjbGpzLmNvcmUvPj0geSAoZmlyc3QgbW9yZSkpKVxyXG4gICBmYWxzZSkpKVxyXG4ifSB7OnN5bSBkcm9wLWxhc3QsIDptZXRhIHs6ZG9jICJSZXR1cm4gYSBsYXp5IHNlcXVlbmNlIG9mIGFsbCBidXQgdGhlIGxhc3QgbiAoZGVmYXVsdCAxKSBpdGVtcyBpbiBjb2xsIiwgOmFyZ2xpc3RzIFtbc10gW24gc11dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGRyb3AtbGFzdFxyXG4gXCJSZXR1cm4gYSBsYXp5IHNlcXVlbmNlIG9mIGFsbCBidXQgdGhlIGxhc3QgbiAoZGVmYXVsdCAxKSBpdGVtcyBpbiBjb2xsXCJcclxuIChbc10gKGRyb3AtbGFzdCAxIHMpKVxyXG4gKFtuIHNdIChtYXAgKGZuIFt4IF9dIHgpIHMgKGRyb3AgbiBzKSkpKVxyXG4ifSB7OnN5bSBvYmplY3Q/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIHgncyBjb25zdHJ1Y3RvciBpcyBPYmplY3QiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxyXG4gb2JqZWN0P1xyXG4gXCJSZXR1cm5zIHRydWUgaWYgeCdzIGNvbnN0cnVjdG9yIGlzIE9iamVjdFwiXHJcbiBbeF1cclxuIChpZi1ub3QgKG5pbD8geCkgKGlkZW50aWNhbD8gKC4tY29uc3RydWN0b3IgeCkganMvT2JqZWN0KSBmYWxzZSkpXHJcbiJ9IHs6c3ltIG5vdC1lbXB0eSwgOm1ldGEgezpkb2MgIklmIGNvbGwgaXMgZW1wdHksIHJldHVybnMgbmlsLCBlbHNlIGNvbGwiLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxyXG4gbm90LWVtcHR5XHJcbiBcIklmIGNvbGwgaXMgZW1wdHksIHJldHVybnMgbmlsLCBlbHNlIGNvbGxcIlxyXG4gW2NvbGxdXHJcbiAod2hlbiAoc2VxIGNvbGwpIGNvbGwpKVxyXG4ifSB7OnN5bSBkaXN0aW5jdCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIHRoZSBlbGVtZW50cyBvZiBjb2xsIHdpdGggZHVwbGljYXRlcyByZW1vdmVkLlxuICBSZXR1cm5zIGEgc3RhdGVmdWwgdHJhbnNkdWNlciB3aGVuIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuIiwgOmFyZ2xpc3RzIFtbXSBbY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGRpc3RpbmN0XHJcbiBcIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIHRoZSBlbGVtZW50cyBvZiBjb2xsIHdpdGggZHVwbGljYXRlcyByZW1vdmVkLlxcbiAgUmV0dXJucyBhIHN0YXRlZnVsIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLlwiXHJcbiAoW11cclxuICAoZm5cclxuICAgW3JmXVxyXG4gICAobGV0XHJcbiAgICBbc2VlbiAodm9sYXRpbGUhICN7fSldXHJcbiAgICAoZm5cclxuICAgICAoW10gKHJmKSlcclxuICAgICAoW3Jlc3VsdF0gKHJmIHJlc3VsdCkpXHJcbiAgICAgKFtyZXN1bHQgaW5wdXRdXHJcbiAgICAgIChpZlxyXG4gICAgICAgKGNvbnRhaW5zPyBAc2VlbiBpbnB1dClcclxuICAgICAgIHJlc3VsdFxyXG4gICAgICAgKGRvICh2c3dhcCEgc2VlbiBjb25qIGlucHV0KSAocmYgcmVzdWx0IGlucHV0KSkpKSkpKSlcclxuIChbY29sbF1cclxuICAobGV0XHJcbiAgIFtzdGVwXHJcbiAgICAoZm5cclxuICAgICBzdGVwXHJcbiAgICAgW3hzIHNlZW5dXHJcbiAgICAgKGxhenktc2VxXHJcbiAgICAgICgoZm5cclxuICAgICAgICBbW2YgOmFzIHhzXSBzZWVuXVxyXG4gICAgICAgICh3aGVuLWxldFxyXG4gICAgICAgICBbcyAoc2VxIHhzKV1cclxuICAgICAgICAgKGlmXHJcbiAgICAgICAgICAoY29udGFpbnM/IHNlZW4gZilcclxuICAgICAgICAgIChyZWN1ciAocmVzdCBzKSBzZWVuKVxyXG4gICAgICAgICAgKGNvbnMgZiAoc3RlcCAocmVzdCBzKSAoY29uaiBzZWVuIGYpKSkpKSlcclxuICAgICAgIHhzXHJcbiAgICAgICBzZWVuKSkpXVxyXG4gICAoc3RlcCBjb2xsICN7fSkpKSlcclxuIn0gezpzeW0gcGFydGl0aW9uLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2YgbGlzdHMgb2YgbiBpdGVtcyBlYWNoLCBhdCBvZmZzZXRzIHN0ZXBcbiAgYXBhcnQuIElmIHN0ZXAgaXMgbm90IHN1cHBsaWVkLCBkZWZhdWx0cyB0byBuLCBpLmUuIHRoZSBwYXJ0aXRpb25zXG4gIGRvIG5vdCBvdmVybGFwLiBJZiBhIHBhZCBjb2xsZWN0aW9uIGlzIHN1cHBsaWVkLCB1c2UgaXRzIGVsZW1lbnRzIGFzXG4gIG5lY2Vzc2FyeSB0byBjb21wbGV0ZSBsYXN0IHBhcnRpdGlvbiB1cCB0byBuIGl0ZW1zLiBJbiBjYXNlIHRoZXJlIGFyZVxuICBub3QgZW5vdWdoIHBhZGRpbmcgZWxlbWVudHMsIHJldHVybiBhIHBhcnRpdGlvbiB3aXRoIGxlc3MgdGhhbiBuIGl0ZW1zLiIsIDphcmdsaXN0cyBbW24gY29sbF0gW24gc3RlcCBjb2xsXSBbbiBzdGVwIHBhZCBjb2xsXV19LCA6c291cmNlICIoZGVmblxyXG4gcGFydGl0aW9uXHJcbiBcIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIGxpc3RzIG9mIG4gaXRlbXMgZWFjaCwgYXQgb2Zmc2V0cyBzdGVwXFxuICBhcGFydC4gSWYgc3RlcCBpcyBub3Qgc3VwcGxpZWQsIGRlZmF1bHRzIHRvIG4sIGkuZS4gdGhlIHBhcnRpdGlvbnNcXG4gIGRvIG5vdCBvdmVybGFwLiBJZiBhIHBhZCBjb2xsZWN0aW9uIGlzIHN1cHBsaWVkLCB1c2UgaXRzIGVsZW1lbnRzIGFzXFxuICBuZWNlc3NhcnkgdG8gY29tcGxldGUgbGFzdCBwYXJ0aXRpb24gdXAgdG8gbiBpdGVtcy4gSW4gY2FzZSB0aGVyZSBhcmVcXG4gIG5vdCBlbm91Z2ggcGFkZGluZyBlbGVtZW50cywgcmV0dXJuIGEgcGFydGl0aW9uIHdpdGggbGVzcyB0aGFuIG4gaXRlbXMuXCJcclxuIChbbiBjb2xsXSAocGFydGl0aW9uIG4gbiBjb2xsKSlcclxuIChbbiBzdGVwIGNvbGxdXHJcbiAgKGxhenktc2VxXHJcbiAgICh3aGVuLWxldFxyXG4gICAgW3MgKHNlcSBjb2xsKV1cclxuICAgIChsZXRcclxuICAgICBbcCAodGFrZSBuIHMpXVxyXG4gICAgICh3aGVuXHJcbiAgICAgICg9PSBuIChjb3VudCBwKSlcclxuICAgICAgKGNvbnMgcCAocGFydGl0aW9uIG4gc3RlcCAoZHJvcCBzdGVwIHMpKSkpKSkpKVxyXG4gKFtuIHN0ZXAgcGFkIGNvbGxdXHJcbiAgKGxhenktc2VxXHJcbiAgICh3aGVuLWxldFxyXG4gICAgW3MgKHNlcSBjb2xsKV1cclxuICAgIChsZXRcclxuICAgICBbcCAodGFrZSBuIHMpXVxyXG4gICAgIChpZlxyXG4gICAgICAoPT0gbiAoY291bnQgcCkpXHJcbiAgICAgIChjb25zIHAgKHBhcnRpdGlvbiBuIHN0ZXAgcGFkIChkcm9wIHN0ZXAgcykpKVxyXG4gICAgICAobGlzdCAodGFrZSBuIChjb25jYXQgcCBwYWQpKSkpKSkpKSlcclxuIn0gezpzeW0gSU11bHRpRm4sIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzICgtYWRkLW1ldGhvZCAtZGVmYXVsdC1kaXNwYXRjaC12YWwgLWRpc3BhdGNoLWZuIC1nZXQtbWV0aG9kIC1tZXRob2RzIC1wcmVmZXItbWV0aG9kIC1wcmVmZXJzIC1yZW1vdmUtbWV0aG9kIC1yZXNldCl9IHs6c3ltIERFTVVOR0VfUEFUVEVSTiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgREVNVU5HRV9QQVRURVJOIG5pbClcclxuIn0gezpzeW0gSUFzc29jaWF0aXZlLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFkZGluZyBhc3NvY2lhdGl2aXR5IHRvIGNvbGxlY3Rpb25zLiJ9LCA6bWV0aG9kcyAoLWFzc29jIC1jb250YWlucy1rZXk/KX0gezpzeW0gYml0LWZsaXAsIDptZXRhIHs6ZG9jICJGbGlwIGJpdCBhdCBpbmRleCBuIiwgOmFyZ2xpc3RzIChbeCBuXSl9LCA6c291cmNlICIoZGVmbiBiaXQtZmxpcCBcIkZsaXAgYml0IGF0IGluZGV4IG5cIiBbeCBuXSAoY2xqcy5jb3JlL2JpdC1mbGlwIHggbikpXHJcbiJ9IHs6c3ltIGxvbmctYXJyYXksIDptZXRhIHs6ZG9jICJDcmVhdGVzIGFuIGFycmF5IG9mIGxvbmdzLiBEb2VzIG5vdCBjb2VyY2UgYXJyYXksIHByb3ZpZGVkIGZvciBjb21wYXRpYmlsaXR5XG4gIHdpdGggQ2xvanVyZS4iLCA6YXJnbGlzdHMgW1tzaXplLW9yLXNlcV0gW3NpemUgaW5pdC12YWwtb3Itc2VxXV19LCA6c291cmNlICIoZGVmblxyXG4gbG9uZy1hcnJheVxyXG4gXCJDcmVhdGVzIGFuIGFycmF5IG9mIGxvbmdzLiBEb2VzIG5vdCBjb2VyY2UgYXJyYXksIHByb3ZpZGVkIGZvciBjb21wYXRpYmlsaXR5XFxuICB3aXRoIENsb2p1cmUuXCJcclxuIChbc2l6ZS1vci1zZXFdXHJcbiAgKGlmXHJcbiAgIChudW1iZXI/IHNpemUtb3Itc2VxKVxyXG4gICAobG9uZy1hcnJheSBzaXplLW9yLXNlcSBuaWwpXHJcbiAgIChpbnRvLWFycmF5IHNpemUtb3Itc2VxKSkpXHJcbiAoW3NpemUgaW5pdC12YWwtb3Itc2VxXVxyXG4gIChsZXRcclxuICAgW2EgKG1ha2UtYXJyYXkgc2l6ZSldXHJcbiAgIChpZlxyXG4gICAgKHNlcT8gaW5pdC12YWwtb3Itc2VxKVxyXG4gICAgKGxldFxyXG4gICAgIFtzIChzZXEgaW5pdC12YWwtb3Itc2VxKV1cclxuICAgICAobG9vcFxyXG4gICAgICBbaSAwIHMgc11cclxuICAgICAgKGlmXHJcbiAgICAgICAoYW5kIHMgKDwgaSBzaXplKSlcclxuICAgICAgIChkbyAoYXNldCBhIGkgKGZpcnN0IHMpKSAocmVjdXIgKGluYyBpKSAobmV4dCBzKSkpXHJcbiAgICAgICBhKSkpXHJcbiAgICAoZG8gKGRvdGltZXMgW2kgc2l6ZV0gKGFzZXQgYSBpIGluaXQtdmFsLW9yLXNlcSkpIGEpKSkpKVxyXG4ifSB7OnN5bSBkZXNjZW5kYW50cywgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGltbWVkaWF0ZSBhbmQgaW5kaXJlY3QgY2hpbGRyZW4gb2YgdGFnLCB0aHJvdWdoIGFcbiAgcmVsYXRpb25zaGlwIGVzdGFibGlzaGVkIHZpYSBkZXJpdmUuIGggbXVzdCBiZSBhIGhpZXJhcmNoeSBvYnRhaW5lZFxuICBmcm9tIG1ha2UtaGllcmFyY2h5LCBpZiBub3Qgc3VwcGxpZWQgZGVmYXVsdHMgdG8gdGhlIGdsb2JhbFxuICBoaWVyYXJjaHkuIE5vdGU6IGRvZXMgbm90IHdvcmsgb24gSmF2YVNjcmlwdCB0eXBlIGluaGVyaXRhbmNlXG4gIHJlbGF0aW9uc2hpcHMuIiwgOmFyZ2xpc3RzIFtbdGFnXSBbaCB0YWddXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBkZXNjZW5kYW50c1xyXG4gXCJSZXR1cm5zIHRoZSBpbW1lZGlhdGUgYW5kIGluZGlyZWN0IGNoaWxkcmVuIG9mIHRhZywgdGhyb3VnaCBhXFxuICByZWxhdGlvbnNoaXAgZXN0YWJsaXNoZWQgdmlhIGRlcml2ZS4gaCBtdXN0IGJlIGEgaGllcmFyY2h5IG9idGFpbmVkXFxuICBmcm9tIG1ha2UtaGllcmFyY2h5LCBpZiBub3Qgc3VwcGxpZWQgZGVmYXVsdHMgdG8gdGhlIGdsb2JhbFxcbiAgaGllcmFyY2h5LiBOb3RlOiBkb2VzIG5vdCB3b3JrIG9uIEphdmFTY3JpcHQgdHlwZSBpbmhlcml0YW5jZVxcbiAgcmVsYXRpb25zaGlwcy5cIlxyXG4gKFt0YWddIChkZXNjZW5kYW50cyBAKGdldC1nbG9iYWwtaGllcmFyY2h5KSB0YWcpKVxyXG4gKFtoIHRhZ10gKG5vdC1lbXB0eSAoZ2V0ICg6ZGVzY2VuZGFudHMgaCkgdGFnKSkpKVxyXG4ifSB7OnN5bSBtZXJnZSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBtYXAgdGhhdCBjb25zaXN0cyBvZiB0aGUgcmVzdCBvZiB0aGUgbWFwcyBjb25qLWVkIG9udG9cbiAgdGhlIGZpcnN0LiAgSWYgYSBrZXkgb2NjdXJzIGluIG1vcmUgdGhhbiBvbmUgbWFwLCB0aGUgbWFwcGluZyBmcm9tXG4gIHRoZSBsYXR0ZXIgKGxlZnQtdG8tcmlnaHQpIHdpbGwgYmUgdGhlIG1hcHBpbmcgaW4gdGhlIHJlc3VsdC4iLCA6YXJnbGlzdHMgKFsmIG1hcHNdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBtZXJnZVxyXG4gXCJSZXR1cm5zIGEgbWFwIHRoYXQgY29uc2lzdHMgb2YgdGhlIHJlc3Qgb2YgdGhlIG1hcHMgY29uai1lZCBvbnRvXFxuICB0aGUgZmlyc3QuICBJZiBhIGtleSBvY2N1cnMgaW4gbW9yZSB0aGFuIG9uZSBtYXAsIHRoZSBtYXBwaW5nIGZyb21cXG4gIHRoZSBsYXR0ZXIgKGxlZnQtdG8tcmlnaHQpIHdpbGwgYmUgdGhlIG1hcHBpbmcgaW4gdGhlIHJlc3VsdC5cIlxyXG4gWyYgbWFwc11cclxuICh3aGVuXHJcbiAgKHNvbWUgaWRlbnRpdHkgbWFwcylcclxuICAocmVkdWNlXHJcbiAgIChmbiogW3AxX180MTQ0MyMgcDJfXzQxNDQ0I10gKGNvbmogKG9yIHAxX180MTQ0MyMge30pIHAyX180MTQ0NCMpKVxyXG4gICBtYXBzKSkpXHJcbiJ9IHs6c3ltIElTZXFhYmxlLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFkZGluZyB0aGUgYWJpbGl0eSB0byBhIHR5cGUgdG8gYmUgdHJhbnNmb3JtZWQgaW50byBhIHNlcXVlbmNlLiJ9LCA6bWV0aG9kcyAoLXNlcSl9IHs6c3ltIGpzLW1vZCwgOm1ldGEgezpkb2MgIk1vZHVsdXMgb2YgbnVtIGFuZCBkaXYgd2l0aCBvcmlnaW5hbCBqYXZhc2NyaXB0IGJlaGF2aW9yLiBpLmUuIGJ1ZyBmb3IgbmVnYXRpdmUgbnVtYmVycyIsIDphcmdsaXN0cyAoW24gZF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGpzLW1vZFxyXG4gXCJNb2R1bHVzIG9mIG51bSBhbmQgZGl2IHdpdGggb3JpZ2luYWwgamF2YXNjcmlwdCBiZWhhdmlvci4gaS5lLiBidWcgZm9yIG5lZ2F0aXZlIG51bWJlcnNcIlxyXG4gW24gZF1cclxuIChjbGpzLmNvcmUvanMtbW9kIG4gZCkpXHJcbiJ9IHs6c3ltIGludGVnZXI/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIG4gaXMgYSBKYXZhU2NyaXB0IG51bWJlciB3aXRoIG5vIGRlY2ltYWwgcGFydC4iLCA6YXJnbGlzdHMgKFtuXSl9LCA6c291cmNlICIoZGVmblxyXG4gaW50ZWdlcj9cclxuIFwiUmV0dXJucyB0cnVlIGlmIG4gaXMgYSBKYXZhU2NyaXB0IG51bWJlciB3aXRoIG5vIGRlY2ltYWwgcGFydC5cIlxyXG4gW25dXHJcbiAoYW5kXHJcbiAgKG51bWJlcj8gbilcclxuICAobm90IChqcy9pc05hTiBuKSlcclxuICAobm90IChpZGVudGljYWw/IG4ganMvSW5maW5pdHkpKVxyXG4gICg9PSAoanMvcGFyc2VGbG9hdCBuKSAoanMvcGFyc2VJbnQgbiAxMCkpKSlcclxuIn0gezpzeW0gTlNfQ0FDSEUsIDptZXRhIHs6ZG9jICJCb290c3RyYXAgb25seS4ifSwgOnNvdXJjZSAiKGRlZiBOU19DQUNIRSBuaWwpXHJcbiJ9IHs6c3ltIG1hcHYsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgdmVjdG9yIGNvbnNpc3Rpbmcgb2YgdGhlIHJlc3VsdCBvZiBhcHBseWluZyBmIHRvIHRoZVxuICBzZXQgb2YgZmlyc3QgaXRlbXMgb2YgZWFjaCBjb2xsLCBmb2xsb3dlZCBieSBhcHBseWluZyBmIHRvIHRoZSBzZXRcbiAgb2Ygc2Vjb25kIGl0ZW1zIGluIGVhY2ggY29sbCwgdW50aWwgYW55IG9uZSBvZiB0aGUgY29sbHMgaXNcbiAgZXhoYXVzdGVkLiAgQW55IHJlbWFpbmluZyBpdGVtcyBpbiBvdGhlciBjb2xscyBhcmUgaWdub3JlZC4gRnVuY3Rpb25cbiAgZiBzaG91bGQgYWNjZXB0IG51bWJlci1vZi1jb2xscyBhcmd1bWVudHMuIiwgOmFyZ2xpc3RzIFtbZiBjb2xsXSBbZiBjMSBjMl0gW2YgYzEgYzIgYzNdIFtmIGMxIGMyIGMzICYgY29sbHNdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBtYXB2XHJcbiBcIlJldHVybnMgYSB2ZWN0b3IgY29uc2lzdGluZyBvZiB0aGUgcmVzdWx0IG9mIGFwcGx5aW5nIGYgdG8gdGhlXFxuICBzZXQgb2YgZmlyc3QgaXRlbXMgb2YgZWFjaCBjb2xsLCBmb2xsb3dlZCBieSBhcHBseWluZyBmIHRvIHRoZSBzZXRcXG4gIG9mIHNlY29uZCBpdGVtcyBpbiBlYWNoIGNvbGwsIHVudGlsIGFueSBvbmUgb2YgdGhlIGNvbGxzIGlzXFxuICBleGhhdXN0ZWQuICBBbnkgcmVtYWluaW5nIGl0ZW1zIGluIG90aGVyIGNvbGxzIGFyZSBpZ25vcmVkLiBGdW5jdGlvblxcbiAgZiBzaG91bGQgYWNjZXB0IG51bWJlci1vZi1jb2xscyBhcmd1bWVudHMuXCJcclxuIChbZiBjb2xsXVxyXG4gICgtPlxyXG4gICAocmVkdWNlIChmbiBbdiBvXSAoY29uaiEgdiAoZiBvKSkpICh0cmFuc2llbnQgW10pIGNvbGwpXHJcbiAgIHBlcnNpc3RlbnQhKSlcclxuIChbZiBjMSBjMl0gKGludG8gW10gKG1hcCBmIGMxIGMyKSkpXHJcbiAoW2YgYzEgYzIgYzNdIChpbnRvIFtdIChtYXAgZiBjMSBjMiBjMykpKVxyXG4gKFtmIGMxIGMyIGMzICYgY29sbHNdIChpbnRvIFtdIChhcHBseSBtYXAgZiBjMSBjMiBjMyBjb2xscykpKSlcclxuIn0gezpzeW0gaW5maW5pdGU/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGZvciBJbmZpbml0eSBhbmQgLUluZmluaXR5IHZhbHVlcy4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxyXG4gaW5maW5pdGU/XHJcbiBcIlJldHVybnMgdHJ1ZSBmb3IgSW5maW5pdHkgYW5kIC1JbmZpbml0eSB2YWx1ZXMuXCJcclxuIFt4XVxyXG4gKG9yXHJcbiAgKGlkZW50aWNhbD8geCBqcy9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpXHJcbiAgKGlkZW50aWNhbD8geCBqcy9OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkpKSlcclxuIn0gezpzeW0gcGFydGl0aW9uLWFsbCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIGxpc3RzIGxpa2UgcGFydGl0aW9uLCBidXQgbWF5IGluY2x1ZGVcbiAgcGFydGl0aW9ucyB3aXRoIGZld2VyIHRoYW4gbiBpdGVtcyBhdCB0aGUgZW5kLiAgUmV0dXJucyBhIHN0YXRlZnVsXG4gIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLiIsIDphcmdsaXN0cyBbW25dIFtuIGNvbGxdIFtuIHN0ZXAgY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIHBhcnRpdGlvbi1hbGxcclxuIFwiUmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2YgbGlzdHMgbGlrZSBwYXJ0aXRpb24sIGJ1dCBtYXkgaW5jbHVkZVxcbiAgcGFydGl0aW9ucyB3aXRoIGZld2VyIHRoYW4gbiBpdGVtcyBhdCB0aGUgZW5kLiAgUmV0dXJucyBhIHN0YXRlZnVsXFxuICB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC5cIlxyXG4gKFtuXVxyXG4gIChmblxyXG4gICBbcmZdXHJcbiAgIChsZXRcclxuICAgIFthIChhcnJheS1saXN0KV1cclxuICAgIChmblxyXG4gICAgIChbXSAocmYpKVxyXG4gICAgIChbcmVzdWx0XVxyXG4gICAgICAobGV0XHJcbiAgICAgICBbcmVzdWx0XHJcbiAgICAgICAgKGlmXHJcbiAgICAgICAgICguaXNFbXB0eSBhKVxyXG4gICAgICAgICByZXN1bHRcclxuICAgICAgICAgKGxldFxyXG4gICAgICAgICAgW3YgKHZlYyAoLnRvQXJyYXkgYSkpXVxyXG4gICAgICAgICAgKC5jbGVhciBhKVxyXG4gICAgICAgICAgKHVucmVkdWNlZCAocmYgcmVzdWx0IHYpKSkpXVxyXG4gICAgICAgKHJmIHJlc3VsdCkpKVxyXG4gICAgIChbcmVzdWx0IGlucHV0XVxyXG4gICAgICAoLmFkZCBhIGlucHV0KVxyXG4gICAgICAoaWZcclxuICAgICAgICg9PSBuICguc2l6ZSBhKSlcclxuICAgICAgIChsZXQgW3YgKHZlYyAoLnRvQXJyYXkgYSkpXSAoLmNsZWFyIGEpIChyZiByZXN1bHQgdikpXHJcbiAgICAgICByZXN1bHQpKSkpKSlcclxuIChbbiBjb2xsXSAocGFydGl0aW9uLWFsbCBuIG4gY29sbCkpXHJcbiAoW24gc3RlcCBjb2xsXVxyXG4gIChsYXp5LXNlcVxyXG4gICAod2hlbi1sZXRcclxuICAgIFtzIChzZXEgY29sbCldXHJcbiAgICAoY29ucyAodGFrZSBuIHMpIChwYXJ0aXRpb24tYWxsIG4gc3RlcCAoZHJvcCBzdGVwIHMpKSkpKSkpXHJcbiJ9IHs6c3ltIHBhcnRpdGlvbi1ieSwgOm1ldGEgezpkb2MgIkFwcGxpZXMgZiB0byBlYWNoIHZhbHVlIGluIGNvbGwsIHNwbGl0dGluZyBpdCBlYWNoIHRpbWUgZiByZXR1cm5zIGFcbiAgIG5ldyB2YWx1ZS4gIFJldHVybnMgYSBsYXp5IHNlcSBvZiBwYXJ0aXRpb25zLiAgUmV0dXJucyBhIHN0YXRlZnVsXG4gICB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC4iLCA6YXJnbGlzdHMgW1tmXSBbZiBjb2xsXV19LCA6c291cmNlICIoZGVmblxyXG4gcGFydGl0aW9uLWJ5XHJcbiBcIkFwcGxpZXMgZiB0byBlYWNoIHZhbHVlIGluIGNvbGwsIHNwbGl0dGluZyBpdCBlYWNoIHRpbWUgZiByZXR1cm5zIGFcXG4gICBuZXcgdmFsdWUuICBSZXR1cm5zIGEgbGF6eSBzZXEgb2YgcGFydGl0aW9ucy4gIFJldHVybnMgYSBzdGF0ZWZ1bFxcbiAgIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLlwiXHJcbiAoW2ZdXHJcbiAgKGZuXHJcbiAgIFtyZl1cclxuICAgKGxldFxyXG4gICAgW2EgKGFycmF5LWxpc3QpIHBhICh2b2xhdGlsZSEgOmNsanMuY29yZS9ub25lKV1cclxuICAgIChmblxyXG4gICAgIChbXSAocmYpKVxyXG4gICAgIChbcmVzdWx0XVxyXG4gICAgICAobGV0XHJcbiAgICAgICBbcmVzdWx0XHJcbiAgICAgICAgKGlmXHJcbiAgICAgICAgICguaXNFbXB0eSBhKVxyXG4gICAgICAgICByZXN1bHRcclxuICAgICAgICAgKGxldFxyXG4gICAgICAgICAgW3YgKHZlYyAoLnRvQXJyYXkgYSkpXVxyXG4gICAgICAgICAgKC5jbGVhciBhKVxyXG4gICAgICAgICAgKHVucmVkdWNlZCAocmYgcmVzdWx0IHYpKSkpXVxyXG4gICAgICAgKHJmIHJlc3VsdCkpKVxyXG4gICAgIChbcmVzdWx0IGlucHV0XVxyXG4gICAgICAobGV0XHJcbiAgICAgICBbcHZhbCBAcGEgdmFsIChmIGlucHV0KV1cclxuICAgICAgICh2cmVzZXQhIHBhIHZhbClcclxuICAgICAgIChpZlxyXG4gICAgICAgIChvciAoa2V5d29yZC1pZGVudGljYWw/IHB2YWwgOmNsanMuY29yZS9ub25lKSAoPSB2YWwgcHZhbCkpXHJcbiAgICAgICAgKGRvICguYWRkIGEgaW5wdXQpIHJlc3VsdClcclxuICAgICAgICAobGV0XHJcbiAgICAgICAgIFt2ICh2ZWMgKC50b0FycmF5IGEpKV1cclxuICAgICAgICAgKC5jbGVhciBhKVxyXG4gICAgICAgICAobGV0XHJcbiAgICAgICAgICBbcmV0IChyZiByZXN1bHQgdildXHJcbiAgICAgICAgICAod2hlbi1ub3QgKHJlZHVjZWQ/IHJldCkgKC5hZGQgYSBpbnB1dCkpXHJcbiAgICAgICAgICByZXQpKSkpKSkpKSlcclxuIChbZiBjb2xsXVxyXG4gIChsYXp5LXNlcVxyXG4gICAod2hlbi1sZXRcclxuICAgIFtzIChzZXEgY29sbCldXHJcbiAgICAobGV0XHJcbiAgICAgW2ZzdFxyXG4gICAgICAoZmlyc3QgcylcclxuICAgICAgZnZcclxuICAgICAgKGYgZnN0KVxyXG4gICAgICBydW5cclxuICAgICAgKGNvbnNcclxuICAgICAgIGZzdFxyXG4gICAgICAgKHRha2Utd2hpbGUgKGZuKiBbcDFfXzQxNDU1I10gKD0gZnYgKGYgcDFfXzQxNDU1IykpKSAobmV4dCBzKSkpXVxyXG4gICAgIChjb25zIHJ1biAocGFydGl0aW9uLWJ5IGYgKGxhenktc2VxIChkcm9wIChjb3VudCBydW4pIHMpKSkpKSkpKSlcclxuIn0gezpzeW0gSVNlcXVlbnRpYWwsIDptZXRhIHs6ZG9jICJNYXJrZXIgaW50ZXJmYWNlIGluZGljYXRpbmcgYSBwZXJzaXN0ZW50IGNvbGxlY3Rpb24gb2Ygc2VxdWVudGlhbCBpdGVtcyJ9LCA6bWV0aG9kcyAoKX0gezpzeW0gZXF1aXYtbWFwLCA6bWV0YSB7OmRvYyAiVGVzdCBtYXAgZXF1aXZhbGVuY2UuIFJldHVybnMgdHJ1ZSBpZiB4IGVxdWFscyB5LCBvdGhlcndpc2UgcmV0dXJucyBmYWxzZS4iLCA6YXJnbGlzdHMgKFt4IHldKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBlcXVpdi1tYXBcclxuIFwiVGVzdCBtYXAgZXF1aXZhbGVuY2UuIFJldHVybnMgdHJ1ZSBpZiB4IGVxdWFscyB5LCBvdGhlcndpc2UgcmV0dXJucyBmYWxzZS5cIlxyXG4gW3ggeV1cclxuIChib29sZWFuXHJcbiAgKHdoZW5cclxuICAgKGFuZCAobWFwPyB5KSAobm90IChyZWNvcmQ/IHkpKSlcclxuICAgKHdoZW5cclxuICAgICg9PSAoY291bnQgeCkgKGNvdW50IHkpKVxyXG4gICAgKGlmXHJcbiAgICAgKHNhdGlzZmllcz8gSUtWUmVkdWNlIHgpXHJcbiAgICAgKHJlZHVjZS1rdlxyXG4gICAgICAoZm5cclxuICAgICAgIFtfIGsgdl1cclxuICAgICAgIChpZiAoPSAoZ2V0IHkgayBuZXZlci1lcXVpdikgdikgdHJ1ZSAocmVkdWNlZCBmYWxzZSkpKVxyXG4gICAgICB0cnVlXHJcbiAgICAgIHgpXHJcbiAgICAgKGV2ZXJ5P1xyXG4gICAgICAoZm4gW3hrdl0gKD0gKGdldCB5IChmaXJzdCB4a3YpIG5ldmVyLWVxdWl2KSAoc2Vjb25kIHhrdikpKVxyXG4gICAgICB4KSkpKSkpXHJcbiJ9IHs6c3ltIG9iamVjdC1hcnJheSwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYW4gYXJyYXkgb2Ygb2JqZWN0cy4gRG9lcyBub3QgY29lcmNlIGFycmF5LCBwcm92aWRlZCBmb3IgY29tcGF0aWJpbGl0eVxuICB3aXRoIENsb2p1cmUuIiwgOmFyZ2xpc3RzIFtbc2l6ZS1vci1zZXFdIFtzaXplIGluaXQtdmFsLW9yLXNlcV1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIG9iamVjdC1hcnJheVxyXG4gXCJDcmVhdGVzIGFuIGFycmF5IG9mIG9iamVjdHMuIERvZXMgbm90IGNvZXJjZSBhcnJheSwgcHJvdmlkZWQgZm9yIGNvbXBhdGliaWxpdHlcXG4gIHdpdGggQ2xvanVyZS5cIlxyXG4gKFtzaXplLW9yLXNlcV1cclxuICAoaWZcclxuICAgKG51bWJlcj8gc2l6ZS1vci1zZXEpXHJcbiAgIChvYmplY3QtYXJyYXkgc2l6ZS1vci1zZXEgbmlsKVxyXG4gICAoaW50by1hcnJheSBzaXplLW9yLXNlcSkpKVxyXG4gKFtzaXplIGluaXQtdmFsLW9yLXNlcV1cclxuICAobGV0XHJcbiAgIFthIChtYWtlLWFycmF5IHNpemUpXVxyXG4gICAoaWZcclxuICAgIChzZXE/IGluaXQtdmFsLW9yLXNlcSlcclxuICAgIChsZXRcclxuICAgICBbcyAoc2VxIGluaXQtdmFsLW9yLXNlcSldXHJcbiAgICAgKGxvb3BcclxuICAgICAgW2kgMCBzIHNdXHJcbiAgICAgIChpZlxyXG4gICAgICAgKGFuZCBzICg8IGkgc2l6ZSkpXHJcbiAgICAgICAoZG8gKGFzZXQgYSBpIChmaXJzdCBzKSkgKHJlY3VyIChpbmMgaSkgKG5leHQgcykpKVxyXG4gICAgICAgYSkpKVxyXG4gICAgKGRvIChkb3RpbWVzIFtpIHNpemVdIChhc2V0IGEgaSBpbml0LXZhbC1vci1zZXEpKSBhKSkpKSlcclxuIn0gezpzeW0gZGVyaXZlLCA6bWV0YSB7OmRvYyAiRXN0YWJsaXNoZXMgYSBwYXJlbnQvY2hpbGQgcmVsYXRpb25zaGlwIGJldHdlZW4gcGFyZW50IGFuZFxuICB0YWcuIFBhcmVudCBtdXN0IGJlIGEgbmFtZXNwYWNlLXF1YWxpZmllZCBzeW1ib2wgb3Iga2V5d29yZCBhbmRcbiAgY2hpbGQgY2FuIGJlIGVpdGhlciBhIG5hbWVzcGFjZS1xdWFsaWZpZWQgc3ltYm9sIG9yIGtleXdvcmQgb3IgYVxuICBjbGFzcy4gaCBtdXN0IGJlIGEgaGllcmFyY2h5IG9idGFpbmVkIGZyb20gbWFrZS1oaWVyYXJjaHksIGlmIG5vdFxuICBzdXBwbGllZCBkZWZhdWx0cyB0bywgYW5kIG1vZGlmaWVzLCB0aGUgZ2xvYmFsIGhpZXJhcmNoeS4iLCA6YXJnbGlzdHMgW1t0YWcgcGFyZW50XSBbaCB0YWcgcGFyZW50XV19LCA6c291cmNlICIoZGVmblxyXG4gZGVyaXZlXHJcbiBcIkVzdGFibGlzaGVzIGEgcGFyZW50L2NoaWxkIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHBhcmVudCBhbmRcXG4gIHRhZy4gUGFyZW50IG11c3QgYmUgYSBuYW1lc3BhY2UtcXVhbGlmaWVkIHN5bWJvbCBvciBrZXl3b3JkIGFuZFxcbiAgY2hpbGQgY2FuIGJlIGVpdGhlciBhIG5hbWVzcGFjZS1xdWFsaWZpZWQgc3ltYm9sIG9yIGtleXdvcmQgb3IgYVxcbiAgY2xhc3MuIGggbXVzdCBiZSBhIGhpZXJhcmNoeSBvYnRhaW5lZCBmcm9tIG1ha2UtaGllcmFyY2h5LCBpZiBub3RcXG4gIHN1cHBsaWVkIGRlZmF1bHRzIHRvLCBhbmQgbW9kaWZpZXMsIHRoZSBnbG9iYWwgaGllcmFyY2h5LlwiXHJcbiAoW3RhZyBwYXJlbnRdXHJcbiAgKGFzc2VydCAobmFtZXNwYWNlIHBhcmVudCkpXHJcbiAgKHN3YXAtZ2xvYmFsLWhpZXJhcmNoeSEgZGVyaXZlIHRhZyBwYXJlbnQpXHJcbiAgbmlsKVxyXG4gKFtoIHRhZyBwYXJlbnRdXHJcbiAgKGFzc2VydCAobm90PSB0YWcgcGFyZW50KSlcclxuICAobGV0XHJcbiAgIFt0cFxyXG4gICAgKDpwYXJlbnRzIGgpXHJcbiAgICB0ZFxyXG4gICAgKDpkZXNjZW5kYW50cyBoKVxyXG4gICAgdGFcclxuICAgICg6YW5jZXN0b3JzIGgpXHJcbiAgICB0ZlxyXG4gICAgKGZuXHJcbiAgICAgW20gc291cmNlIHNvdXJjZXMgdGFyZ2V0IHRhcmdldHNdXHJcbiAgICAgKHJlZHVjZVxyXG4gICAgICAoZm5cclxuICAgICAgIFtyZXQga11cclxuICAgICAgIChhc3NvY1xyXG4gICAgICAgIHJldFxyXG4gICAgICAgIGtcclxuICAgICAgICAocmVkdWNlXHJcbiAgICAgICAgIGNvbmpcclxuICAgICAgICAgKGdldCB0YXJnZXRzIGsgI3t9KVxyXG4gICAgICAgICAoY29ucyB0YXJnZXQgKHRhcmdldHMgdGFyZ2V0KSkpKSlcclxuICAgICAgbVxyXG4gICAgICAoY29ucyBzb3VyY2UgKHNvdXJjZXMgc291cmNlKSkpKV1cclxuICAgKG9yXHJcbiAgICAod2hlbi1ub3RcclxuICAgICAoY29udGFpbnM/ICh0cCB0YWcpIHBhcmVudClcclxuICAgICAod2hlblxyXG4gICAgICAoY29udGFpbnM/ICh0YSB0YWcpIHBhcmVudClcclxuICAgICAgKHRocm93IChqcy9FcnJvci4gKHN0ciB0YWcgXCJhbHJlYWR5IGhhc1wiIHBhcmVudCBcImFzIGFuY2VzdG9yXCIpKSkpXHJcbiAgICAgKHdoZW5cclxuICAgICAgKGNvbnRhaW5zPyAodGEgcGFyZW50KSB0YWcpXHJcbiAgICAgICh0aHJvd1xyXG4gICAgICAgKGpzL0Vycm9yLlxyXG4gICAgICAgIChzdHIgXCJDeWNsaWMgZGVyaXZhdGlvbjpcIiBwYXJlbnQgXCJoYXNcIiB0YWcgXCJhcyBhbmNlc3RvclwiKSkpKVxyXG4gICAgIHs6cGFyZW50cyAoYXNzb2MgKDpwYXJlbnRzIGgpIHRhZyAoY29uaiAoZ2V0IHRwIHRhZyAje30pIHBhcmVudCkpLFxyXG4gICAgICA6YW5jZXN0b3JzICh0ZiAoOmFuY2VzdG9ycyBoKSB0YWcgdGQgcGFyZW50IHRhKSxcclxuICAgICAgOmRlc2NlbmRhbnRzICh0ZiAoOmRlc2NlbmRhbnRzIGgpIHBhcmVudCB0YSB0YWcgdGQpfSlcclxuICAgIGgpKSkpXHJcbiJ9IHs6c3ltIHNlcS1pdGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuIHNlcS1pdGVyIFtjb2xsXSAoU2VxSXRlci4gSU5JVCBjb2xsKSlcclxuIn0gezpzeW0gSUNodW5rZWRTZXEsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgYWNjZXNzaW5nIGEgY29sbGVjdGlvbiBhcyBzZXF1ZW50aWFsIGNodW5rcy4ifSwgOm1ldGhvZHMgKC1jaHVua2VkLWZpcnN0IC1jaHVua2VkLXJlc3QpfSB7OnN5bSBzcGVjaWFsLXN5bWJvbD8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgeCBuYW1lcyBhIHNwZWNpYWwgZm9ybSIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBzcGVjaWFsLXN5bWJvbD9cclxuIFwiUmV0dXJucyB0cnVlIGlmIHggbmFtZXMgYSBzcGVjaWFsIGZvcm1cIlxyXG4gW3hdXHJcbiAoY29udGFpbnM/XHJcbiAgJyN7JiBjYXNlKiBkZWZyZWNvcmQqIHRyeSBucyogZmluYWxseSBsb29wKiBkbyBsZXRmbiogaWYgbmV3IG5zXHJcbiAgICAgZGVmdHlwZSogbGV0KiBqcyogZm4qIHJlY3VyIHNldCEgLiB2YXIgcXVvdGUgY2F0Y2ggdGhyb3cgZGVmfVxyXG4gIHgpKVxyXG4ifSB7OnN5bSBhbmNlc3RvcnMsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBpbW1lZGlhdGUgYW5kIGluZGlyZWN0IHBhcmVudHMgb2YgdGFnLCBlaXRoZXIgdmlhIGEgSmF2YVNjcmlwdCB0eXBlXG4gIGluaGVyaXRhbmNlIHJlbGF0aW9uc2hpcCBvciBhIHJlbGF0aW9uc2hpcCBlc3RhYmxpc2hlZCB2aWEgZGVyaXZlLiBoXG4gIG11c3QgYmUgYSBoaWVyYXJjaHkgb2J0YWluZWQgZnJvbSBtYWtlLWhpZXJhcmNoeSwgaWYgbm90IHN1cHBsaWVkXG4gIGRlZmF1bHRzIHRvIHRoZSBnbG9iYWwgaGllcmFyY2h5IiwgOmFyZ2xpc3RzIFtbdGFnXSBbaCB0YWddXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBhbmNlc3RvcnNcclxuIFwiUmV0dXJucyB0aGUgaW1tZWRpYXRlIGFuZCBpbmRpcmVjdCBwYXJlbnRzIG9mIHRhZywgZWl0aGVyIHZpYSBhIEphdmFTY3JpcHQgdHlwZVxcbiAgaW5oZXJpdGFuY2UgcmVsYXRpb25zaGlwIG9yIGEgcmVsYXRpb25zaGlwIGVzdGFibGlzaGVkIHZpYSBkZXJpdmUuIGhcXG4gIG11c3QgYmUgYSBoaWVyYXJjaHkgb2J0YWluZWQgZnJvbSBtYWtlLWhpZXJhcmNoeSwgaWYgbm90IHN1cHBsaWVkXFxuICBkZWZhdWx0cyB0byB0aGUgZ2xvYmFsIGhpZXJhcmNoeVwiXHJcbiAoW3RhZ10gKGFuY2VzdG9ycyBAKGdldC1nbG9iYWwtaGllcmFyY2h5KSB0YWcpKVxyXG4gKFtoIHRhZ10gKG5vdC1lbXB0eSAoZ2V0ICg6YW5jZXN0b3JzIGgpIHRhZykpKSlcclxuIn0gezpzeW0gc3Vic2VxLCA6bWV0YSB7OmRvYyAic2MgbXVzdCBiZSBhIHNvcnRlZCBjb2xsZWN0aW9uLCB0ZXN0KHMpIG9uZSBvZiA8LCA8PSwgPiBvclxuICA+PS4gUmV0dXJucyBhIHNlcSBvZiB0aG9zZSBlbnRyaWVzIHdpdGgga2V5cyBlayBmb3JcbiAgd2hpY2ggKHRlc3QgKC4uIHNjIGNvbXBhcmF0b3IgKGNvbXBhcmUgZWsga2V5KSkgMCkgaXMgdHJ1ZSIsIDphcmdsaXN0cyBbW3NjIHRlc3Qga2V5XSBbc2Mgc3RhcnQtdGVzdCBzdGFydC1rZXkgZW5kLXRlc3QgZW5kLWtleV1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIHN1YnNlcVxyXG4gXCJzYyBtdXN0IGJlIGEgc29ydGVkIGNvbGxlY3Rpb24sIHRlc3Qocykgb25lIG9mIDwsIDw9LCA+IG9yXFxuICA+PS4gUmV0dXJucyBhIHNlcSBvZiB0aG9zZSBlbnRyaWVzIHdpdGgga2V5cyBlayBmb3JcXG4gIHdoaWNoICh0ZXN0ICguLiBzYyBjb21wYXJhdG9yIChjb21wYXJlIGVrIGtleSkpIDApIGlzIHRydWVcIlxyXG4gKFtzYyB0ZXN0IGtleV1cclxuICAobGV0XHJcbiAgIFtpbmNsdWRlIChtay1ib3VuZC1mbiBzYyB0ZXN0IGtleSldXHJcbiAgIChpZlxyXG4gICAgKCN7PiA+PX0gdGVzdClcclxuICAgICh3aGVuLWxldFxyXG4gICAgIFtbZSA6YXMgc10gKC1zb3J0ZWQtc2VxLWZyb20gc2Mga2V5IHRydWUpXVxyXG4gICAgIChpZiAoaW5jbHVkZSBlKSBzIChuZXh0IHMpKSlcclxuICAgICh0YWtlLXdoaWxlIGluY2x1ZGUgKC1zb3J0ZWQtc2VxIHNjIHRydWUpKSkpKVxyXG4gKFtzYyBzdGFydC10ZXN0IHN0YXJ0LWtleSBlbmQtdGVzdCBlbmQta2V5XVxyXG4gICh3aGVuLWxldFxyXG4gICBbW2UgOmFzIHNdICgtc29ydGVkLXNlcS1mcm9tIHNjIHN0YXJ0LWtleSB0cnVlKV1cclxuICAgKHRha2Utd2hpbGVcclxuICAgIChtay1ib3VuZC1mbiBzYyBlbmQtdGVzdCBlbmQta2V5KVxyXG4gICAgKGlmICgobWstYm91bmQtZm4gc2Mgc3RhcnQtdGVzdCBzdGFydC1rZXkpIGUpIHMgKG5leHQgcykpKSkpKVxyXG4ifSB7OnN5bSBnZW5zeW0sIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbmV3IHN5bWJvbCB3aXRoIGEgdW5pcXVlIG5hbWUuIElmIGEgcHJlZml4IHN0cmluZyBpc1xuICBzdXBwbGllZCwgdGhlIG5hbWUgaXMgcHJlZml4IyB3aGVyZSAjIGlzIHNvbWUgdW5pcXVlIG51bWJlci4gSWZcbiAgcHJlZml4IGlzIG5vdCBzdXBwbGllZCwgdGhlIHByZWZpeCBpcyAnR19fJy4iLCA6YXJnbGlzdHMgW1tdIFtwcmVmaXgtc3RyaW5nXV19LCA6c291cmNlICIoZGVmblxyXG4gZ2Vuc3ltXHJcbiBcIlJldHVybnMgYSBuZXcgc3ltYm9sIHdpdGggYSB1bmlxdWUgbmFtZS4gSWYgYSBwcmVmaXggc3RyaW5nIGlzXFxuICBzdXBwbGllZCwgdGhlIG5hbWUgaXMgcHJlZml4IyB3aGVyZSAjIGlzIHNvbWUgdW5pcXVlIG51bWJlci4gSWZcXG4gIHByZWZpeCBpcyBub3Qgc3VwcGxpZWQsIHRoZSBwcmVmaXggaXMgJ0dfXycuXCJcclxuIChbXSAoZ2Vuc3ltIFwiR19fXCIpKVxyXG4gKFtwcmVmaXgtc3RyaW5nXVxyXG4gICh3aGVuIChuaWw/IGdlbnN5bV9jb3VudGVyKSAoc2V0ISBnZW5zeW1fY291bnRlciAoYXRvbSAwKSkpXHJcbiAgKHN5bWJvbCAoc3RyIHByZWZpeC1zdHJpbmcgKHN3YXAhIGdlbnN5bV9jb3VudGVyIGluYykpKSkpXHJcbiJ9IHs6c3ltIC1uZXh0LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG5ldyBjb2xsZWN0aW9uIG9mIGNvbGwgd2l0aG91dCB0aGUgZmlyc3QgaXRlbS4gSW4gY29udHJhc3QgdG9cbiAgICAgcmVzdCwgaXQgc2hvdWxkIHJldHVybiBuaWwgaWYgdGhlcmUgYXJlIG5vIG1vcmUgaXRlbXMsIGUuZy5cbiAgICAgKG5leHQgW10pID0+IG5pbFxuICAgICAobmV4dCBuaWwpID0+IG5pbCIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpwcm90b2NvbCBJTmV4dH0gezpzeW0gZGVsYXk/LCA6bWV0YSB7OmRvYyAicmV0dXJucyB0cnVlIGlmIHggaXMgYSBEZWxheSBjcmVhdGVkIHdpdGggZGVsYXkiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxyXG4gZGVsYXk/XHJcbiBcInJldHVybnMgdHJ1ZSBpZiB4IGlzIGEgRGVsYXkgY3JlYXRlZCB3aXRoIGRlbGF5XCJcclxuIFt4XVxyXG4gKGluc3RhbmNlPyBEZWxheSB4KSlcclxuIn0gezpzeW0gZmxhdHRlbiwgOm1ldGEgezpkb2MgIlRha2VzIGFueSBuZXN0ZWQgY29tYmluYXRpb24gb2Ygc2VxdWVudGlhbCB0aGluZ3MgKGxpc3RzLCB2ZWN0b3JzLFxuICBldGMuKSBhbmQgcmV0dXJucyB0aGVpciBjb250ZW50cyBhcyBhIHNpbmdsZSwgZmxhdCBzZXF1ZW5jZS5cbiAgKGZsYXR0ZW4gbmlsKSByZXR1cm5zIG5pbC4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxyXG4gZmxhdHRlblxyXG4gXCJUYWtlcyBhbnkgbmVzdGVkIGNvbWJpbmF0aW9uIG9mIHNlcXVlbnRpYWwgdGhpbmdzIChsaXN0cywgdmVjdG9ycyxcXG4gIGV0Yy4pIGFuZCByZXR1cm5zIHRoZWlyIGNvbnRlbnRzIGFzIGEgc2luZ2xlLCBmbGF0IHNlcXVlbmNlLlxcbiAgKGZsYXR0ZW4gbmlsKSByZXR1cm5zIG5pbC5cIlxyXG4gW3hdXHJcbiAoZmlsdGVyXHJcbiAgKGZuKiBbcDFfXzQxNDQxI10gKG5vdCAoc2VxdWVudGlhbD8gcDFfXzQxNDQxIykpKVxyXG4gIChyZXN0ICh0cmVlLXNlcSBzZXF1ZW50aWFsPyBzZXEgeCkpKSlcclxuIn0gezpzeW0gLWRpc3NvYywgOm1ldGEgezpkb2MgIlJldHVybnMgYSBuZXcgY29sbGVjdGlvbiBvZiBjb2xsIHdpdGhvdXQgdGhlIG1hcHBpbmcgZm9yIGtleSBrLiIsIDphcmdsaXN0cyAoW2NvbGwga10pfSwgOnByb3RvY29sIElNYXB9IHs6c3ltIGRvdWJsZXMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gZG91YmxlcyBbeF0geClcclxuIn0gezpzeW0gaGFsdC13aGVuLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHRyYW5zZHVjZXIgdGhhdCBlbmRzIHRyYW5zZHVjdGlvbiB3aGVuIHByZWQgcmV0dXJucyB0cnVlXG4gIGZvciBhbiBpbnB1dC4gV2hlbiByZXRmIGlzIHN1cHBsaWVkIGl0IG11c3QgYmUgYSBmbiBvZiAyIGFyZ3VtZW50cyAtXG4gIGl0IHdpbGwgYmUgcGFzc2VkIHRoZSAoY29tcGxldGVkKSByZXN1bHQgc28gZmFyIGFuZCB0aGUgaW5wdXQgdGhhdFxuICB0cmlnZ2VyZWQgdGhlIHByZWRpY2F0ZSwgYW5kIGl0cyByZXR1cm4gdmFsdWUgKGlmIGl0IGRvZXMgbm90IHRocm93XG4gIGFuIGV4Y2VwdGlvbikgd2lsbCBiZSB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSB0cmFuc2R1Y2VyLiBJZiByZXRmXG4gIGlzIG5vdCBzdXBwbGllZCwgdGhlIGlucHV0IHRoYXQgdHJpZ2dlcmVkIHRoZSBwcmVkaWNhdGUgd2lsbCBiZVxuICByZXR1cm5lZC4gSWYgdGhlIHByZWRpY2F0ZSBuZXZlciByZXR1cm5zIHRydWUgdGhlIHRyYW5zZHVjdGlvbiBpc1xuICB1bmFmZmVjdGVkLiIsIDphcmdsaXN0cyBbW3ByZWRdIFtwcmVkIHJldGZdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBoYWx0LXdoZW5cclxuIFwiUmV0dXJucyBhIHRyYW5zZHVjZXIgdGhhdCBlbmRzIHRyYW5zZHVjdGlvbiB3aGVuIHByZWQgcmV0dXJucyB0cnVlXFxuICBmb3IgYW4gaW5wdXQuIFdoZW4gcmV0ZiBpcyBzdXBwbGllZCBpdCBtdXN0IGJlIGEgZm4gb2YgMiBhcmd1bWVudHMgLVxcbiAgaXQgd2lsbCBiZSBwYXNzZWQgdGhlIChjb21wbGV0ZWQpIHJlc3VsdCBzbyBmYXIgYW5kIHRoZSBpbnB1dCB0aGF0XFxuICB0cmlnZ2VyZWQgdGhlIHByZWRpY2F0ZSwgYW5kIGl0cyByZXR1cm4gdmFsdWUgKGlmIGl0IGRvZXMgbm90IHRocm93XFxuICBhbiBleGNlcHRpb24pIHdpbGwgYmUgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgdHJhbnNkdWNlci4gSWYgcmV0ZlxcbiAgaXMgbm90IHN1cHBsaWVkLCB0aGUgaW5wdXQgdGhhdCB0cmlnZ2VyZWQgdGhlIHByZWRpY2F0ZSB3aWxsIGJlXFxuICByZXR1cm5lZC4gSWYgdGhlIHByZWRpY2F0ZSBuZXZlciByZXR1cm5zIHRydWUgdGhlIHRyYW5zZHVjdGlvbiBpc1xcbiAgdW5hZmZlY3RlZC5cIlxyXG4gezphZGRlZCBcIjEuOVwifVxyXG4gKFtwcmVkXSAoaGFsdC13aGVuIHByZWQgbmlsKSlcclxuIChbcHJlZCByZXRmXVxyXG4gIChmblxyXG4gICBbcmZdXHJcbiAgIChmblxyXG4gICAgKFtdIChyZikpXHJcbiAgICAoW3Jlc3VsdF1cclxuICAgICAoaWZcclxuICAgICAgKGFuZCAobWFwPyByZXN1bHQpIChjb250YWlucz8gcmVzdWx0IDpjbGpzLmNvcmUvaGFsdCkpXHJcbiAgICAgICg6Y2xqcy5jb3JlL2hhbHQgcmVzdWx0KVxyXG4gICAgICAocmYgcmVzdWx0KSkpXHJcbiAgICAoW3Jlc3VsdCBpbnB1dF1cclxuICAgICAoaWZcclxuICAgICAgKHByZWQgaW5wdXQpXHJcbiAgICAgIChyZWR1Y2VkXHJcbiAgICAgICB7OmNsanMuY29yZS9oYWx0IChpZiByZXRmIChyZXRmIChyZiByZXN1bHQpIGlucHV0KSBpbnB1dCl9KVxyXG4gICAgICAocmYgcmVzdWx0IGlucHV0KSkpKSkpKVxyXG4ifSB7OnN5bSAtY29udGFpbnMta2V5PywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiBrIGlzIGEga2V5IGluIGNvbGwuIiwgOmFyZ2xpc3RzIChbY29sbCBrXSl9LCA6cHJvdG9jb2wgSUFzc29jaWF0aXZlfSB7OnN5bSByZW1vdmUtd2F0Y2gsIDptZXRhIHs6ZG9jICJSZW1vdmVzIGEgd2F0Y2ggKHNldCBieSBhZGQtd2F0Y2gpIGZyb20gYSByZWZlcmVuY2UiLCA6YXJnbGlzdHMgKFtpcmVmIGtleV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlbW92ZS13YXRjaFxyXG4gXCJSZW1vdmVzIGEgd2F0Y2ggKHNldCBieSBhZGQtd2F0Y2gpIGZyb20gYSByZWZlcmVuY2VcIlxyXG4gW2lyZWYga2V5XVxyXG4gKC1yZW1vdmUtd2F0Y2ggaXJlZiBrZXkpXHJcbiBpcmVmKVxyXG4ifSB7OnN5bSBleC1pbmZvLCA6bWV0YSB7OmRvYyAiQ3JlYXRlIGFuIGluc3RhbmNlIG9mIEV4Y2VwdGlvbkluZm8sIGFuIEVycm9yIHR5cGUgdGhhdCBjYXJyaWVzIGFcbiAgbWFwIG9mIGFkZGl0aW9uYWwgZGF0YS4iLCA6YXJnbGlzdHMgW1ttc2cgZGF0YV0gW21zZyBkYXRhIGNhdXNlXV19LCA6c291cmNlICIoZGVmblxyXG4gZXgtaW5mb1xyXG4gXCJDcmVhdGUgYW4gaW5zdGFuY2Ugb2YgRXhjZXB0aW9uSW5mbywgYW4gRXJyb3IgdHlwZSB0aGF0IGNhcnJpZXMgYVxcbiAgbWFwIG9mIGFkZGl0aW9uYWwgZGF0YS5cIlxyXG4gKFttc2cgZGF0YV0gKGV4LWluZm8gbXNnIGRhdGEgbmlsKSlcclxuIChbbXNnIGRhdGEgY2F1c2VdIChFeGNlcHRpb25JbmZvLiBtc2cgZGF0YSBjYXVzZSkpKVxyXG4ifSB7OnN5bSBpZm4/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIGYgcmV0dXJucyB0cnVlIGZvciBmbj8gb3Igc2F0aXNmaWVzIElGbi4iLCA6YXJnbGlzdHMgKFtmXSl9LCA6c291cmNlICIoZGVmblxyXG4gaWZuP1xyXG4gXCJSZXR1cm5zIHRydWUgaWYgZiByZXR1cm5zIHRydWUgZm9yIGZuPyBvciBzYXRpc2ZpZXMgSUZuLlwiXHJcbiBbZl1cclxuIChvciAoZm4/IGYpIChzYXRpc2ZpZXM/IElGbiBmKSkpXHJcbiJ9IHs6c3ltIElBdG9tLCA6bWV0YSB7OmRvYyAiTWFya2VyIHByb3RvY29sIGluZGljYXRpbmcgYW4gYXRvbS4ifSwgOm1ldGhvZHMgKCl9IHs6c3ltIG5hdC1pbnQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJuIHRydWUgaWYgeCBzYXRpc2ZpZXMgaW50PyBhbmQgaXMgYSBuYXR1cmFsIGludGVnZXIgdmFsdWUuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIG5hdC1pbnQ/XHJcbiBcIlJldHVybiB0cnVlIGlmIHggc2F0aXNmaWVzIGludD8gYW5kIGlzIGEgbmF0dXJhbCBpbnRlZ2VyIHZhbHVlLlwiXHJcbiBbeF1cclxuIChjb25kXHJcbiAgKGludGVnZXI/IHgpXHJcbiAgKG5vdCAobmVnPyB4KSlcclxuICAoaW5zdGFuY2U/IGdvb2cubWF0aC5JbnRlZ2VyIHgpXHJcbiAgKG5vdCAoLmlzTmVnYXRpdmUgeCkpXHJcbiAgKGluc3RhbmNlPyBnb29nLm1hdGguTG9uZyB4KVxyXG4gIChub3QgKC5pc05lZ2F0aXZlIHgpKVxyXG4gIDplbHNlXHJcbiAgZmFsc2UpKVxyXG4ifSB7OnN5bSBJV2F0Y2hhYmxlLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIHR5cGVzIHRoYXQgY2FuIGJlIHdhdGNoZWQuIEN1cnJlbnRseSBvbmx5IGltcGxlbWVudGVkIGJ5IEF0b20uIn0sIDptZXRob2RzICgtYWRkLXdhdGNoIC1ub3RpZnktd2F0Y2hlcyAtcmVtb3ZlLXdhdGNoKX0gezpzeW0gc3VidmVjLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHBlcnNpc3RlbnQgdmVjdG9yIG9mIHRoZSBpdGVtcyBpbiB2ZWN0b3IgZnJvbVxuICBzdGFydCAoaW5jbHVzaXZlKSB0byBlbmQgKGV4Y2x1c2l2ZSkuICBJZiBlbmQgaXMgbm90IHN1cHBsaWVkLFxuICBkZWZhdWx0cyB0byAoY291bnQgdmVjdG9yKS4gVGhpcyBvcGVyYXRpb24gaXMgTygxKSBhbmQgdmVyeSBmYXN0LCBhc1xuICB0aGUgcmVzdWx0aW5nIHZlY3RvciBzaGFyZXMgc3RydWN0dXJlIHdpdGggdGhlIG9yaWdpbmFsIGFuZCBub1xuICB0cmltbWluZyBpcyBkb25lLiIsIDphcmdsaXN0cyBbW3Ygc3RhcnRdIFt2IHN0YXJ0IGVuZF1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIHN1YnZlY1xyXG4gXCJSZXR1cm5zIGEgcGVyc2lzdGVudCB2ZWN0b3Igb2YgdGhlIGl0ZW1zIGluIHZlY3RvciBmcm9tXFxuICBzdGFydCAoaW5jbHVzaXZlKSB0byBlbmQgKGV4Y2x1c2l2ZSkuICBJZiBlbmQgaXMgbm90IHN1cHBsaWVkLFxcbiAgZGVmYXVsdHMgdG8gKGNvdW50IHZlY3RvcikuIFRoaXMgb3BlcmF0aW9uIGlzIE8oMSkgYW5kIHZlcnkgZmFzdCwgYXNcXG4gIHRoZSByZXN1bHRpbmcgdmVjdG9yIHNoYXJlcyBzdHJ1Y3R1cmUgd2l0aCB0aGUgb3JpZ2luYWwgYW5kIG5vXFxuICB0cmltbWluZyBpcyBkb25lLlwiXHJcbiAoW3Ygc3RhcnRdIChzdWJ2ZWMgdiBzdGFydCAoY291bnQgdikpKVxyXG4gKFt2IHN0YXJ0IGVuZF1cclxuICAoYXNzZXJ0IChhbmQgKG5vdCAobmlsPyBzdGFydCkpIChub3QgKG5pbD8gZW5kKSkpKVxyXG4gIChidWlsZC1zdWJ2ZWMgbmlsIHYgKGludCBzdGFydCkgKGludCBlbmQpIG5pbCkpKVxyXG4ifSB7OnN5bSAtcG9wISwgOm1ldGEgezpkb2MgIlJldHVybnMgdGNvbGwgd2l0aCB0aGUgbGFzdCBpdGVtIHJlbW92ZWQgZnJvbSBpdC4iLCA6YXJnbGlzdHMgKFt0Y29sbF0pfSwgOnByb3RvY29sIElUcmFuc2llbnRWZWN0b3J9IHs6c3ltIHBhcnRpYWwsIDptZXRhIHs6ZG9jICJUYWtlcyBhIGZ1bmN0aW9uIGYgYW5kIGZld2VyIHRoYW4gdGhlIG5vcm1hbCBhcmd1bWVudHMgdG8gZiwgYW5kXG4gIHJldHVybnMgYSBmbiB0aGF0IHRha2VzIGEgdmFyaWFibGUgbnVtYmVyIG9mIGFkZGl0aW9uYWwgYXJncy4gV2hlblxuICBjYWxsZWQsIHRoZSByZXR1cm5lZCBmdW5jdGlvbiBjYWxscyBmIHdpdGggYXJncyArIGFkZGl0aW9uYWwgYXJncy4iLCA6YXJnbGlzdHMgW1tmXSBbZiBhcmcxXSBbZiBhcmcxIGFyZzJdIFtmIGFyZzEgYXJnMiBhcmczXSBbZiBhcmcxIGFyZzIgYXJnMyAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBwYXJ0aWFsXHJcbiBcIlRha2VzIGEgZnVuY3Rpb24gZiBhbmQgZmV3ZXIgdGhhbiB0aGUgbm9ybWFsIGFyZ3VtZW50cyB0byBmLCBhbmRcXG4gIHJldHVybnMgYSBmbiB0aGF0IHRha2VzIGEgdmFyaWFibGUgbnVtYmVyIG9mIGFkZGl0aW9uYWwgYXJncy4gV2hlblxcbiAgY2FsbGVkLCB0aGUgcmV0dXJuZWQgZnVuY3Rpb24gY2FsbHMgZiB3aXRoIGFyZ3MgKyBhZGRpdGlvbmFsIGFyZ3MuXCJcclxuIChbZl0gZilcclxuIChbZiBhcmcxXVxyXG4gIChmblxyXG4gICAoW10gKGYgYXJnMSkpXHJcbiAgIChbeF0gKGYgYXJnMSB4KSlcclxuICAgKFt4IHldIChmIGFyZzEgeCB5KSlcclxuICAgKFt4IHkgel0gKGYgYXJnMSB4IHkgeikpXHJcbiAgIChbeCB5IHogJiBhcmdzXSAoYXBwbHkgZiBhcmcxIHggeSB6IGFyZ3MpKSkpXHJcbiAoW2YgYXJnMSBhcmcyXVxyXG4gIChmblxyXG4gICAoW10gKGYgYXJnMSBhcmcyKSlcclxuICAgKFt4XSAoZiBhcmcxIGFyZzIgeCkpXHJcbiAgIChbeCB5XSAoZiBhcmcxIGFyZzIgeCB5KSlcclxuICAgKFt4IHkgel0gKGYgYXJnMSBhcmcyIHggeSB6KSlcclxuICAgKFt4IHkgeiAmIGFyZ3NdIChhcHBseSBmIGFyZzEgYXJnMiB4IHkgeiBhcmdzKSkpKVxyXG4gKFtmIGFyZzEgYXJnMiBhcmczXVxyXG4gIChmblxyXG4gICAoW10gKGYgYXJnMSBhcmcyIGFyZzMpKVxyXG4gICAoW3hdIChmIGFyZzEgYXJnMiBhcmczIHgpKVxyXG4gICAoW3ggeV0gKGYgYXJnMSBhcmcyIGFyZzMgeCB5KSlcclxuICAgKFt4IHkgel0gKGYgYXJnMSBhcmcyIGFyZzMgeCB5IHopKVxyXG4gICAoW3ggeSB6ICYgYXJnc10gKGFwcGx5IGYgYXJnMSBhcmcyIGFyZzMgeCB5IHogYXJncykpKSlcclxuIChbZiBhcmcxIGFyZzIgYXJnMyAmIG1vcmVdXHJcbiAgKGZuIFsmIGFyZ3NdIChhcHBseSBmIGFyZzEgYXJnMiBhcmczIChjb25jYXQgbW9yZSBhcmdzKSkpKSlcclxuIn0gezpzeW0gY2h1bmtlZC1zZXE/LCA6bWV0YSB7OmRvYyAiUmV0dXJuIHRydWUgaWYgeCBzYXRpc2ZpZXMgSUNodW5rZWRTZXEuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGNodW5rZWQtc2VxP1xyXG4gXCJSZXR1cm4gdHJ1ZSBpZiB4IHNhdGlzZmllcyBJQ2h1bmtlZFNlcS5cIlxyXG4gW3hdXHJcbiAoaW1wbGVtZW50cz8gSUNodW5rZWRTZXEgeCkpXHJcbiJ9IHs6c3ltIHJlcGxpY2F0ZSwgOm1ldGEgezpkb2MgIkRFUFJFQ0FURUQ6IFVzZSAncmVwZWF0JyBpbnN0ZWFkLlxuICBSZXR1cm5zIGEgbGF6eSBzZXEgb2YgbiB4cy4iLCA6YXJnbGlzdHMgKFtuIHhdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiByZXBsaWNhdGVcclxuIFwiREVQUkVDQVRFRDogVXNlICdyZXBlYXQnIGluc3RlYWQuXFxuICBSZXR1cm5zIGEgbGF6eSBzZXEgb2YgbiB4cy5cIlxyXG4gW24geF1cclxuICh0YWtlIG4gKHJlcGVhdCB4KSkpXHJcbiJ9IHs6c3ltIG1pbi1rZXksIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSB4IGZvciB3aGljaCAoayB4KSwgYSBudW1iZXIsIGlzIGxlYXN0LlxuXG4gIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBzdWNoIHhzLCB0aGUgbGFzdCBvbmUgaXMgcmV0dXJuZWQuIiwgOmFyZ2xpc3RzIFtbayB4XSBbayB4IHldIFtrIHggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBtaW4ta2V5XHJcbiBcIlJldHVybnMgdGhlIHggZm9yIHdoaWNoIChrIHgpLCBhIG51bWJlciwgaXMgbGVhc3QuXFxuXFxuICBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgc3VjaCB4cywgdGhlIGxhc3Qgb25lIGlzIHJldHVybmVkLlwiXHJcbiAoW2sgeF0geClcclxuIChbayB4IHldIChpZiAoPCAoayB4KSAoayB5KSkgeCB5KSlcclxuIChbayB4IHkgJiBtb3JlXVxyXG4gIChyZWR1Y2VcclxuICAgKGZuKiBbcDFfXzQxNDUzIyBwMl9fNDE0NTQjXSAobWluLWtleSBrIHAxX180MTQ1MyMgcDJfXzQxNDU0IykpXHJcbiAgIChtaW4ta2V5IGsgeCB5KVxyXG4gICBtb3JlKSkpXHJcbiJ9IHs6c3ltIHJlZHVjZWQsIDptZXRhIHs6ZG9jICJXcmFwcyB4IGluIGEgd2F5IHN1Y2ggdGhhdCBhIHJlZHVjZSB3aWxsIHRlcm1pbmF0ZSB3aXRoIHRoZSB2YWx1ZSB4IiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlZHVjZWRcclxuIFwiV3JhcHMgeCBpbiBhIHdheSBzdWNoIHRoYXQgYSByZWR1Y2Ugd2lsbCB0ZXJtaW5hdGUgd2l0aCB0aGUgdmFsdWUgeFwiXHJcbiBbeF1cclxuIChSZWR1Y2VkLiB4KSlcclxuIn0gezpzeW0gcmUtbWF0Y2hlcywgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHJlc3VsdCBvZiAocmUtZmluZCByZSBzKSBpZiByZSBmdWxseSBtYXRjaGVzIHMuIiwgOmFyZ2xpc3RzIChbcmUgc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlLW1hdGNoZXNcclxuIFwiUmV0dXJucyB0aGUgcmVzdWx0IG9mIChyZS1maW5kIHJlIHMpIGlmIHJlIGZ1bGx5IG1hdGNoZXMgcy5cIlxyXG4gW3JlIHNdXHJcbiAoaWZcclxuICAoc3RyaW5nPyBzKVxyXG4gIChsZXRcclxuICAgW21hdGNoZXMgKC5leGVjIHJlIHMpXVxyXG4gICAod2hlblxyXG4gICAgKGFuZCAobm90IChuaWw/IG1hdGNoZXMpKSAoPSAoYWdldCBtYXRjaGVzIDApIHMpKVxyXG4gICAgKGlmICg9PSAoY291bnQgbWF0Y2hlcykgMSkgKGFnZXQgbWF0Y2hlcyAwKSAodmVjIG1hdGNoZXMpKSkpXHJcbiAgKHRocm93IChqcy9UeXBlRXJyb3IuIFwicmUtbWF0Y2hlcyBtdXN0IG1hdGNoIGFnYWluc3QgYSBzdHJpbmcuXCIpKSkpXHJcbiJ9IHs6c3ltIGFycmF5LW1hcCwgOm1ldGEgezpkb2MgImtleXZhbCA9PiBrZXkgdmFsXG4gIFJldHVybnMgYSBuZXcgYXJyYXkgbWFwIHdpdGggc3VwcGxpZWQgbWFwcGluZ3MuIiwgOmFyZ2xpc3RzIChbJiBrZXl2YWxzXSl9LCA6c291cmNlICIoZGVmblxyXG4gYXJyYXktbWFwXHJcbiBcImtleXZhbCA9PiBrZXkgdmFsXFxuICBSZXR1cm5zIGEgbmV3IGFycmF5IG1hcCB3aXRoIHN1cHBsaWVkIG1hcHBpbmdzLlwiXHJcbiBbJiBrZXl2YWxzXVxyXG4gKGxldFxyXG4gIFthcnJcclxuICAgKGlmXHJcbiAgICAoYW5kIChpbnN0YW5jZT8gSW5kZXhlZFNlcSBrZXl2YWxzKSAoemVybz8gKC4taSBrZXl2YWxzKSkpXHJcbiAgICAoLi1hcnIga2V5dmFscylcclxuICAgIChpbnRvLWFycmF5IGtleXZhbHMpKV1cclxuICAoLmNyZWF0ZUFzSWZCeUFzc29jIFBlcnNpc3RlbnRBcnJheU1hcCBhcnIpKSlcclxuIn0gezpzeW0gSVRyYW5zaWVudFNldCwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhZGRpbmcgc2V0IGZ1bmN0aW9uYWxpdHkgdG8gYSB0cmFuc2llbnQgY29sbGVjdGlvbi4ifSwgOm1ldGhvZHMgKC1kaXNqb2luISl9IHs6c3ltIHVuY2hlY2tlZC1ieXRlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIHVuY2hlY2tlZC1ieXRlIFt4XSB4KVxyXG4ifSB7OnN5bSBldmVyeS1wcmVkLCA6bWV0YSB7OmRvYyAiVGFrZXMgYSBzZXQgb2YgcHJlZGljYXRlcyBhbmQgcmV0dXJucyBhIGZ1bmN0aW9uIGYgdGhhdCByZXR1cm5zIHRydWUgaWYgYWxsIG9mIGl0c1xuICBjb21wb3NpbmcgcHJlZGljYXRlcyByZXR1cm4gYSBsb2dpY2FsIHRydWUgdmFsdWUgYWdhaW5zdCBhbGwgb2YgaXRzIGFyZ3VtZW50cywgZWxzZSBpdCByZXR1cm5zXG4gIGZhbHNlLiBOb3RlIHRoYXQgZiBpcyBzaG9ydC1jaXJjdWl0aW5nIGluIHRoYXQgaXQgd2lsbCBzdG9wIGV4ZWN1dGlvbiBvbiB0aGUgZmlyc3RcbiAgYXJndW1lbnQgdGhhdCB0cmlnZ2VycyBhIGxvZ2ljYWwgZmFsc2UgcmVzdWx0IGFnYWluc3QgdGhlIG9yaWdpbmFsIHByZWRpY2F0ZXMuIiwgOmFyZ2xpc3RzIFtbcF0gW3AxIHAyXSBbcDEgcDIgcDNdIFtwMSBwMiBwMyAmIHBzXV19LCA6c291cmNlICIoZGVmblxyXG4gZXZlcnktcHJlZFxyXG4gXCJUYWtlcyBhIHNldCBvZiBwcmVkaWNhdGVzIGFuZCByZXR1cm5zIGEgZnVuY3Rpb24gZiB0aGF0IHJldHVybnMgdHJ1ZSBpZiBhbGwgb2YgaXRzXFxuICBjb21wb3NpbmcgcHJlZGljYXRlcyByZXR1cm4gYSBsb2dpY2FsIHRydWUgdmFsdWUgYWdhaW5zdCBhbGwgb2YgaXRzIGFyZ3VtZW50cywgZWxzZSBpdCByZXR1cm5zXFxuICBmYWxzZS4gTm90ZSB0aGF0IGYgaXMgc2hvcnQtY2lyY3VpdGluZyBpbiB0aGF0IGl0IHdpbGwgc3RvcCBleGVjdXRpb24gb24gdGhlIGZpcnN0XFxuICBhcmd1bWVudCB0aGF0IHRyaWdnZXJzIGEgbG9naWNhbCBmYWxzZSByZXN1bHQgYWdhaW5zdCB0aGUgb3JpZ2luYWwgcHJlZGljYXRlcy5cIlxyXG4gKFtwXVxyXG4gIChmblxyXG4gICBlcDFcclxuICAgKFtdIHRydWUpXHJcbiAgIChbeF0gKGJvb2xlYW4gKHAgeCkpKVxyXG4gICAoW3ggeV0gKGJvb2xlYW4gKGFuZCAocCB4KSAocCB5KSkpKVxyXG4gICAoW3ggeSB6XSAoYm9vbGVhbiAoYW5kIChwIHgpIChwIHkpIChwIHopKSkpXHJcbiAgIChbeCB5IHogJiBhcmdzXSAoYm9vbGVhbiAoYW5kIChlcDEgeCB5IHopIChldmVyeT8gcCBhcmdzKSkpKSkpXHJcbiAoW3AxIHAyXVxyXG4gIChmblxyXG4gICBlcDJcclxuICAgKFtdIHRydWUpXHJcbiAgIChbeF0gKGJvb2xlYW4gKGFuZCAocDEgeCkgKHAyIHgpKSkpXHJcbiAgIChbeCB5XSAoYm9vbGVhbiAoYW5kIChwMSB4KSAocDEgeSkgKHAyIHgpIChwMiB5KSkpKVxyXG4gICAoW3ggeSB6XSAoYm9vbGVhbiAoYW5kIChwMSB4KSAocDEgeSkgKHAxIHopIChwMiB4KSAocDIgeSkgKHAyIHopKSkpXHJcbiAgIChbeCB5IHogJiBhcmdzXVxyXG4gICAgKGJvb2xlYW5cclxuICAgICAoYW5kXHJcbiAgICAgIChlcDIgeCB5IHopXHJcbiAgICAgIChldmVyeT9cclxuICAgICAgIChmbiogW3AxX180MTQyOCNdIChhbmQgKHAxIHAxX180MTQyOCMpIChwMiBwMV9fNDE0MjgjKSkpXHJcbiAgICAgICBhcmdzKSkpKSkpXHJcbiAoW3AxIHAyIHAzXVxyXG4gIChmblxyXG4gICBlcDNcclxuICAgKFtdIHRydWUpXHJcbiAgIChbeF0gKGJvb2xlYW4gKGFuZCAocDEgeCkgKHAyIHgpIChwMyB4KSkpKVxyXG4gICAoW3ggeV0gKGJvb2xlYW4gKGFuZCAocDEgeCkgKHAyIHgpIChwMyB4KSAocDEgeSkgKHAyIHkpIChwMyB5KSkpKVxyXG4gICAoW3ggeSB6XVxyXG4gICAgKGJvb2xlYW5cclxuICAgICAoYW5kXHJcbiAgICAgIChwMSB4KVxyXG4gICAgICAocDIgeClcclxuICAgICAgKHAzIHgpXHJcbiAgICAgIChwMSB5KVxyXG4gICAgICAocDIgeSlcclxuICAgICAgKHAzIHkpXHJcbiAgICAgIChwMSB6KVxyXG4gICAgICAocDIgeilcclxuICAgICAgKHAzIHopKSkpXHJcbiAgIChbeCB5IHogJiBhcmdzXVxyXG4gICAgKGJvb2xlYW5cclxuICAgICAoYW5kXHJcbiAgICAgIChlcDMgeCB5IHopXHJcbiAgICAgIChldmVyeT9cclxuICAgICAgIChmbipcclxuICAgICAgICBbcDFfXzQxNDI5I11cclxuICAgICAgICAoYW5kIChwMSBwMV9fNDE0MjkjKSAocDIgcDFfXzQxNDI5IykgKHAzIHAxX180MTQyOSMpKSlcclxuICAgICAgIGFyZ3MpKSkpKSlcclxuIChbcDEgcDIgcDMgJiBwc11cclxuICAobGV0XHJcbiAgIFtwcyAobGlzdCogcDEgcDIgcDMgcHMpXVxyXG4gICAoZm5cclxuICAgIGVwblxyXG4gICAgKFtdIHRydWUpXHJcbiAgICAoW3hdIChldmVyeT8gKGZuKiBbcDFfXzQxNDMwI10gKHAxX180MTQzMCMgeCkpIHBzKSlcclxuICAgIChbeCB5XVxyXG4gICAgIChldmVyeT9cclxuICAgICAgKGZuKiBbcDFfXzQxNDMxI10gKGFuZCAocDFfXzQxNDMxIyB4KSAocDFfXzQxNDMxIyB5KSkpXHJcbiAgICAgIHBzKSlcclxuICAgIChbeCB5IHpdXHJcbiAgICAgKGV2ZXJ5P1xyXG4gICAgICAoZm4qXHJcbiAgICAgICBbcDFfXzQxNDMyI11cclxuICAgICAgIChhbmQgKHAxX180MTQzMiMgeCkgKHAxX180MTQzMiMgeSkgKHAxX180MTQzMiMgeikpKVxyXG4gICAgICBwcykpXHJcbiAgICAoW3ggeSB6ICYgYXJnc11cclxuICAgICAoYm9vbGVhblxyXG4gICAgICAoYW5kXHJcbiAgICAgICAoZXBuIHggeSB6KVxyXG4gICAgICAgKGV2ZXJ5PyAoZm4qIFtwMV9fNDE0MzMjXSAoZXZlcnk/IHAxX180MTQzMyMgYXJncykpIHBzKSkpKSkpKSlcclxuIn0gezpzeW0ga2V5cywgOm1ldGEgezpkb2MgIlJldHVybnMgYSBzZXF1ZW5jZSBvZiB0aGUgbWFwJ3Mga2V5cywgaW4gdGhlIHNhbWUgb3JkZXIgYXMgKHNlcSBtYXApLiIsIDphcmdsaXN0cyAoW21hcF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGtleXNcclxuIFwiUmV0dXJucyBhIHNlcXVlbmNlIG9mIHRoZSBtYXAncyBrZXlzLCBpbiB0aGUgc2FtZSBvcmRlciBhcyAoc2VxIG1hcCkuXCJcclxuIFttYXBdXHJcbiAod2hlbi1sZXQgW21zZXEgKHNlcSBtYXApXSAoS2V5U2VxLiBtc2VxIG5pbCkpKVxyXG4ifSB7OnN5bSBtaXNzaW5nLXByb3RvY29sLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3Byb3RvIG9ial0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIG1pc3NpbmctcHJvdG9jb2xcclxuIFtwcm90byBvYmpdXHJcbiAobGV0XHJcbiAgW3R5XHJcbiAgICh0eXBlIG9iailcclxuICAgdHlcclxuICAgKGlmXHJcbiAgICAoYW5kIHR5ICguLWNsanMkbGFuZyR0eXBlIHR5KSlcclxuICAgICguLWNsanMkbGFuZyRjdG9yU3RyIHR5KVxyXG4gICAgKGdvb2cvdHlwZU9mIG9iaikpXVxyXG4gIChqcy9FcnJvci5cclxuICAgKC5qb2luXHJcbiAgICAoYXJyYXlcclxuICAgICBcIk5vIHByb3RvY29sIG1ldGhvZCBcIlxyXG4gICAgIHByb3RvXHJcbiAgICAgXCIgZGVmaW5lZCBmb3IgdHlwZSBcIlxyXG4gICAgIHR5XHJcbiAgICAgXCI6IFwiXHJcbiAgICAgb2JqKVxyXG4gICAgXCJcIikpKSlcclxuIn0gezpzeW0gbG9hZC1maWxlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2ZpbGVdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBsb2FkLWZpbGVcclxuIFtmaWxlXVxyXG4gKHdoZW4tbm90IGpzL0NPTVBJTEVEIChjbGpzLmNvcmUvbG9hZC1maWxlKiBmaWxlKSkpXHJcbiJ9IHs6c3ltIGRpc3RpbmN0PywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiBubyB0d28gb2YgdGhlIGFyZ3VtZW50cyBhcmUgPSIsIDphcmdsaXN0cyBbW3hdIFt4IHldIFt4IHkgJiBtb3JlXV19LCA6c291cmNlICIoZGVmblxyXG4gZGlzdGluY3Q/XHJcbiBcIlJldHVybnMgdHJ1ZSBpZiBubyB0d28gb2YgdGhlIGFyZ3VtZW50cyBhcmUgPVwiXHJcbiAoW3hdIHRydWUpXHJcbiAoW3ggeV0gKG5vdCAoPSB4IHkpKSlcclxuIChbeCB5ICYgbW9yZV1cclxuICAoaWZcclxuICAgKG5vdCAoPSB4IHkpKVxyXG4gICAobG9vcFxyXG4gICAgW3MgI3t4IHl9IHhzIG1vcmVdXHJcbiAgICAobGV0XHJcbiAgICAgW3ggKGZpcnN0IHhzKSBldGMgKG5leHQgeHMpXVxyXG4gICAgIChpZiB4cyAoaWYgKGNvbnRhaW5zPyBzIHgpIGZhbHNlIChyZWN1ciAoY29uaiBzIHgpIGV0YykpIHRydWUpKSlcclxuICAgZmFsc2UpKSlcclxuIn0gezpzeW0gcG9zLWludD8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IHNhdGlzZmllcyBpbnQ/IGFuZCBpcyBwb3NpdGl2ZS4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxyXG4gcG9zLWludD9cclxuIFwiUmV0dXJuIHRydWUgaWYgeCBzYXRpc2ZpZXMgaW50PyBhbmQgaXMgcG9zaXRpdmUuXCJcclxuIFt4XVxyXG4gKGNvbmRcclxuICAoaW50ZWdlcj8geClcclxuICAocG9zPyB4KVxyXG4gIChpbnN0YW5jZT8gZ29vZy5tYXRoLkludGVnZXIgeClcclxuICAoYW5kIChub3QgKC5pc05lZ2F0aXZlIHgpKSAobm90ICguaXNaZXJvIHgpKSlcclxuICAoaW5zdGFuY2U/IGdvb2cubWF0aC5Mb25nIHgpXHJcbiAgKGFuZCAobm90ICguaXNOZWdhdGl2ZSB4KSkgKG5vdCAoLmlzWmVybyB4KSkpXHJcbiAgOmVsc2VcclxuICBmYWxzZSkpXHJcbiJ9IHs6c3ltIHVuY2hlY2tlZC1zaG9ydCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiB1bmNoZWNrZWQtc2hvcnQgW3hdIHgpXHJcbiJ9IHs6c3ltIG1ldGhvZHMsIDptZXRhIHs6ZG9jICJHaXZlbiBhIG11bHRpbWV0aG9kLCByZXR1cm5zIGEgbWFwIG9mIGRpc3BhdGNoIHZhbHVlcyAtPiBkaXNwYXRjaCBmbnMiLCA6YXJnbGlzdHMgKFttdWx0aWZuXSl9LCA6c291cmNlICIoZGVmblxyXG4gbWV0aG9kc1xyXG4gXCJHaXZlbiBhIG11bHRpbWV0aG9kLCByZXR1cm5zIGEgbWFwIG9mIGRpc3BhdGNoIHZhbHVlcyAtPiBkaXNwYXRjaCBmbnNcIlxyXG4gW211bHRpZm5dXHJcbiAoLW1ldGhvZHMgbXVsdGlmbikpXHJcbiJ9IHs6c3ltIG9kZD8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgbiBpcyBvZGQsIHRocm93cyBhbiBleGNlcHRpb24gaWYgbiBpcyBub3QgYW4gaW50ZWdlciIsIDphcmdsaXN0cyAoW25dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBvZGQ/XHJcbiBcIlJldHVybnMgdHJ1ZSBpZiBuIGlzIG9kZCwgdGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiBuIGlzIG5vdCBhbiBpbnRlZ2VyXCJcclxuIFtuXVxyXG4gKG5vdCAoZXZlbj8gbikpKVxyXG4ifSB7OnN5bSAtZ2V0LW1ldGhvZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttZiBkaXNwYXRjaC12YWxdKX0sIDpwcm90b2NvbCBJTXVsdGlGbn0gezpzeW0gZnJlcXVlbmNpZXMsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbWFwIGZyb20gZGlzdGluY3QgaXRlbXMgaW4gY29sbCB0byB0aGUgbnVtYmVyIG9mIHRpbWVzXG4gIHRoZXkgYXBwZWFyLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBmcmVxdWVuY2llc1xyXG4gXCJSZXR1cm5zIGEgbWFwIGZyb20gZGlzdGluY3QgaXRlbXMgaW4gY29sbCB0byB0aGUgbnVtYmVyIG9mIHRpbWVzXFxuICB0aGV5IGFwcGVhci5cIlxyXG4gW2NvbGxdXHJcbiAocGVyc2lzdGVudCFcclxuICAocmVkdWNlXHJcbiAgIChmbiBbY291bnRzIHhdIChhc3NvYyEgY291bnRzIHggKGluYyAoZ2V0IGNvdW50cyB4IDApKSkpXHJcbiAgICh0cmFuc2llbnQge30pXHJcbiAgIGNvbGwpKSlcclxuIn0gezpzeW0gcmVkdWNlYWJsZT8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgY29sbCBzYXRpc2ZpZXMgSVJlZHVjZSIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiByZWR1Y2VhYmxlP1xyXG4gXCJSZXR1cm5zIHRydWUgaWYgY29sbCBzYXRpc2ZpZXMgSVJlZHVjZVwiXHJcbiBbeF1cclxuIChzYXRpc2ZpZXM/IElSZWR1Y2UgeCkpXHJcbiJ9IHs6c3ltIHN0cmluZy1oYXNoLWNhY2hlLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBzdHJpbmctaGFzaC1jYWNoZSAoanMtb2JqKSlcclxuIn0gezpzeW0gcnN1YnNlcSwgOm1ldGEgezpkb2MgInNjIG11c3QgYmUgYSBzb3J0ZWQgY29sbGVjdGlvbiwgdGVzdChzKSBvbmUgb2YgPCwgPD0sID4gb3JcbiAgPj0uIFJldHVybnMgYSByZXZlcnNlIHNlcSBvZiB0aG9zZSBlbnRyaWVzIHdpdGgga2V5cyBlayBmb3JcbiAgd2hpY2ggKHRlc3QgKC4uIHNjIGNvbXBhcmF0b3IgKGNvbXBhcmUgZWsga2V5KSkgMCkgaXMgdHJ1ZSIsIDphcmdsaXN0cyBbW3NjIHRlc3Qga2V5XSBbc2Mgc3RhcnQtdGVzdCBzdGFydC1rZXkgZW5kLXRlc3QgZW5kLWtleV1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJzdWJzZXFcclxuIFwic2MgbXVzdCBiZSBhIHNvcnRlZCBjb2xsZWN0aW9uLCB0ZXN0KHMpIG9uZSBvZiA8LCA8PSwgPiBvclxcbiAgPj0uIFJldHVybnMgYSByZXZlcnNlIHNlcSBvZiB0aG9zZSBlbnRyaWVzIHdpdGgga2V5cyBlayBmb3JcXG4gIHdoaWNoICh0ZXN0ICguLiBzYyBjb21wYXJhdG9yIChjb21wYXJlIGVrIGtleSkpIDApIGlzIHRydWVcIlxyXG4gKFtzYyB0ZXN0IGtleV1cclxuICAobGV0XHJcbiAgIFtpbmNsdWRlIChtay1ib3VuZC1mbiBzYyB0ZXN0IGtleSldXHJcbiAgIChpZlxyXG4gICAgKCN7PCA8PX0gdGVzdClcclxuICAgICh3aGVuLWxldFxyXG4gICAgIFtbZSA6YXMgc10gKC1zb3J0ZWQtc2VxLWZyb20gc2Mga2V5IGZhbHNlKV1cclxuICAgICAoaWYgKGluY2x1ZGUgZSkgcyAobmV4dCBzKSkpXHJcbiAgICAodGFrZS13aGlsZSBpbmNsdWRlICgtc29ydGVkLXNlcSBzYyBmYWxzZSkpKSkpXHJcbiAoW3NjIHN0YXJ0LXRlc3Qgc3RhcnQta2V5IGVuZC10ZXN0IGVuZC1rZXldXHJcbiAgKHdoZW4tbGV0XHJcbiAgIFtbZSA6YXMgc10gKC1zb3J0ZWQtc2VxLWZyb20gc2MgZW5kLWtleSBmYWxzZSldXHJcbiAgICh0YWtlLXdoaWxlXHJcbiAgICAobWstYm91bmQtZm4gc2Mgc3RhcnQtdGVzdCBzdGFydC1rZXkpXHJcbiAgICAoaWYgKChtay1ib3VuZC1mbiBzYyBlbmQtdGVzdCBlbmQta2V5KSBlKSBzIChuZXh0IHMpKSkpKSlcclxuIn0gezpzeW0gaW5jLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG51bWJlciBvbmUgZ3JlYXRlciB0aGFuIG51bS4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxyXG4gaW5jXHJcbiBcIlJldHVybnMgYSBudW1iZXIgb25lIGdyZWF0ZXIgdGhhbiBudW0uXCJcclxuIFt4XVxyXG4gKGNsanMuY29yZS8rIHggMSkpXHJcbiJ9IHs6c3ltIHR5cGUtPnN0ciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0eV0pfSwgOnNvdXJjZSAiKGRlZm4gdHlwZS0+c3RyIFt0eV0gKGlmLWxldCBbcyAoLi1jbGpzJGxhbmckY3RvclN0ciB0eSldIHMgKHN0ciB0eSkpKVxyXG4ifSB7OnN5bSBnZXQtbWV0aG9kLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBtdWx0aW1ldGhvZCBhbmQgYSBkaXNwYXRjaCB2YWx1ZSwgcmV0dXJucyB0aGUgZGlzcGF0Y2ggZm5cbiAgdGhhdCB3b3VsZCBhcHBseSB0byB0aGF0IHZhbHVlLCBvciBuaWwgaWYgbm9uZSBhcHBseSBhbmQgbm8gZGVmYXVsdCIsIDphcmdsaXN0cyAoW211bHRpZm4gZGlzcGF0Y2gtdmFsXSl9LCA6c291cmNlICIoZGVmblxyXG4gZ2V0LW1ldGhvZFxyXG4gXCJHaXZlbiBhIG11bHRpbWV0aG9kIGFuZCBhIGRpc3BhdGNoIHZhbHVlLCByZXR1cm5zIHRoZSBkaXNwYXRjaCBmblxcbiAgdGhhdCB3b3VsZCBhcHBseSB0byB0aGF0IHZhbHVlLCBvciBuaWwgaWYgbm9uZSBhcHBseSBhbmQgbm8gZGVmYXVsdFwiXHJcbiBbbXVsdGlmbiBkaXNwYXRjaC12YWxdXHJcbiAoLWdldC1tZXRob2QgbXVsdGlmbiBkaXNwYXRjaC12YWwpKVxyXG4ifSB7OnN5bSB1dWlkPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiB1dWlkPyBbeF0gKGltcGxlbWVudHM/IElVVUlEIHgpKVxyXG4ifSB7OnN5bSBlczYtZW50cmllcy1pdGVyYXRvciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmbiBlczYtZW50cmllcy1pdGVyYXRvciBbY29sbF0gKEVTNkVudHJpZXNJdGVyYXRvci4gKHNlcSBjb2xsKSkpXHJcbiJ9IHs6c3ltIGJpdC1jbGVhciwgOm1ldGEgezpkb2MgIkNsZWFyIGJpdCBhdCBpbmRleCBuIiwgOmFyZ2xpc3RzIChbeCBuXSl9LCA6c291cmNlICIoZGVmbiBiaXQtY2xlYXIgXCJDbGVhciBiaXQgYXQgaW5kZXggblwiIFt4IG5dIChjbGpzLmNvcmUvYml0LWNsZWFyIHggbikpXHJcbiJ9IHs6c3ltIGZpbHRlciwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIHRoZSBpdGVtcyBpbiBjb2xsIGZvciB3aGljaFxuICAocHJlZCBpdGVtKSByZXR1cm5zIGxvZ2ljYWwgdHJ1ZS4gcHJlZCBtdXN0IGJlIGZyZWUgb2Ygc2lkZS1lZmZlY3RzLlxuICBSZXR1cm5zIGEgdHJhbnNkdWNlciB3aGVuIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuIiwgOmFyZ2xpc3RzIFtbcHJlZF0gW3ByZWQgY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGZpbHRlclxyXG4gXCJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiB0aGUgaXRlbXMgaW4gY29sbCBmb3Igd2hpY2hcXG4gIChwcmVkIGl0ZW0pIHJldHVybnMgbG9naWNhbCB0cnVlLiBwcmVkIG11c3QgYmUgZnJlZSBvZiBzaWRlLWVmZmVjdHMuXFxuICBSZXR1cm5zIGEgdHJhbnNkdWNlciB3aGVuIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuXCJcclxuIChbcHJlZF1cclxuICAoZm5cclxuICAgW3JmXVxyXG4gICAoZm5cclxuICAgIChbXSAocmYpKVxyXG4gICAgKFtyZXN1bHRdIChyZiByZXN1bHQpKVxyXG4gICAgKFtyZXN1bHQgaW5wdXRdIChpZiAocHJlZCBpbnB1dCkgKHJmIHJlc3VsdCBpbnB1dCkgcmVzdWx0KSkpKSlcclxuIChbcHJlZCBjb2xsXVxyXG4gIChsYXp5LXNlcVxyXG4gICAod2hlbi1sZXRcclxuICAgIFtzIChzZXEgY29sbCldXHJcbiAgICAoaWZcclxuICAgICAoY2h1bmtlZC1zZXE/IHMpXHJcbiAgICAgKGxldFxyXG4gICAgICBbYyAoY2h1bmstZmlyc3Qgcykgc2l6ZSAoY291bnQgYykgYiAoY2h1bmstYnVmZmVyIHNpemUpXVxyXG4gICAgICAoZG90aW1lc1xyXG4gICAgICAgW2kgc2l6ZV1cclxuICAgICAgICh3aGVuIChwcmVkICgtbnRoIGMgaSkpIChjaHVuay1hcHBlbmQgYiAoLW50aCBjIGkpKSkpXHJcbiAgICAgIChjaHVuay1jb25zIChjaHVuayBiKSAoZmlsdGVyIHByZWQgKGNodW5rLXJlc3QgcykpKSlcclxuICAgICAobGV0XHJcbiAgICAgIFtmIChmaXJzdCBzKSByIChyZXN0IHMpXVxyXG4gICAgICAoaWYgKHByZWQgZikgKGNvbnMgZiAoZmlsdGVyIHByZWQgcikpIChmaWx0ZXIgcHJlZCByKSkpKSkpKSlcclxuIn0gezpzeW0gLWFzc29jLW4hLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0Y29sbCB3aXRoIHZhbHVlIHZhbCBhZGRlZCBhdCBwb3NpdGlvbiBuLiIsIDphcmdsaXN0cyAoW3Rjb2xsIG4gdmFsXSl9LCA6cHJvdG9jb2wgSVRyYW5zaWVudFZlY3Rvcn0gezpzeW0gSVdpdGhNZXRhLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFkZGluZyBtZXRhZGF0YSB0byBhbiBvYmplY3QuIn0sIDptZXRob2RzICgtd2l0aC1tZXRhKX0gezpzeW0gbGlzdCwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYSBuZXcgbGlzdCBjb250YWluaW5nIHRoZSBpdGVtcy4iLCA6YXJnbGlzdHMgKFsmIHhzXSl9LCA6c291cmNlICIoZGVmblxyXG4gbGlzdFxyXG4gXCJDcmVhdGVzIGEgbmV3IGxpc3QgY29udGFpbmluZyB0aGUgaXRlbXMuXCJcclxuIFsmIHhzXVxyXG4gKGxldFxyXG4gIFthcnJcclxuICAgKGlmXHJcbiAgICAoYW5kIChpbnN0YW5jZT8gSW5kZXhlZFNlcSB4cykgKHplcm8/ICguLWkgeHMpKSlcclxuICAgICguLWFyciB4cylcclxuICAgIChsZXRcclxuICAgICBbYXJyIChhcnJheSldXHJcbiAgICAgKGxvb3BcclxuICAgICAgW3hzIHhzXVxyXG4gICAgICAoaWYtbm90XHJcbiAgICAgICAobmlsPyB4cylcclxuICAgICAgIChkbyAoLnB1c2ggYXJyICgtZmlyc3QgeHMpKSAocmVjdXIgKC1uZXh0IHhzKSkpXHJcbiAgICAgICBhcnIpKSkpXVxyXG4gIChsb29wXHJcbiAgIFtpIChhbGVuZ3RoIGFycikgciAoKV1cclxuICAgKGlmICg+IGkgMCkgKHJlY3VyIChkZWMgaSkgKC1jb25qIHIgKGFnZXQgYXJyIChkZWMgaSkpKSkgcikpKSlcclxuIn0gezpzeW0gKywgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHN1bSBvZiBudW1zLiAoKykgcmV0dXJucyAwLiIsIDphcmdsaXN0cyBbW10gW3hdIFt4IHldIFt4IHkgJiBtb3JlXV19LCA6c291cmNlICIoZGVmblxyXG4gK1xyXG4gXCJSZXR1cm5zIHRoZSBzdW0gb2YgbnVtcy4gKCspIHJldHVybnMgMC5cIlxyXG4gKFtdIDApXHJcbiAoW3hdIHgpXHJcbiAoW3ggeV0gKGNsanMuY29yZS8rIHggeSkpXHJcbiAoW3ggeSAmIG1vcmVdIChyZWR1Y2UgKyAoY2xqcy5jb3JlLysgeCB5KSBtb3JlKSkpXHJcbiJ9IHs6c3ltIHNwbGl0LXdpdGgsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgdmVjdG9yIG9mIFsodGFrZS13aGlsZSBwcmVkIGNvbGwpIChkcm9wLXdoaWxlIHByZWQgY29sbCldIiwgOmFyZ2xpc3RzIChbcHJlZCBjb2xsXSl9LCA6c291cmNlICIoZGVmblxyXG4gc3BsaXQtd2l0aFxyXG4gXCJSZXR1cm5zIGEgdmVjdG9yIG9mIFsodGFrZS13aGlsZSBwcmVkIGNvbGwpIChkcm9wLXdoaWxlIHByZWQgY29sbCldXCJcclxuIFtwcmVkIGNvbGxdXHJcbiBbKHRha2Utd2hpbGUgcHJlZCBjb2xsKSAoZHJvcC13aGlsZSBwcmVkIGNvbGwpXSlcclxuIn0gezpzeW0gYXNldCwgOm1ldGEgezpkb2MgIlNldHMgdGhlIHZhbHVlIGF0IHRoZSBpbmRleC9pbmRpY2VzLiBXb3JrcyBvbiBKYXZhU2NyaXB0IGFycmF5cy5cbiAgUmV0dXJucyB2YWwuIiwgOmFyZ2xpc3RzIFtbYXJyYXkgaWR4IHZhbF0gW2FycmF5IGlkeCBpZHgyICYgaWR4dl1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGFzZXRcclxuIFwiU2V0cyB0aGUgdmFsdWUgYXQgdGhlIGluZGV4L2luZGljZXMuIFdvcmtzIG9uIEphdmFTY3JpcHQgYXJyYXlzLlxcbiAgUmV0dXJucyB2YWwuXCJcclxuIChbYXJyYXkgaWR4IHZhbF0gKGNsanMuY29yZS9hc2V0IGFycmF5IGlkeCB2YWwpKVxyXG4gKFthcnJheSBpZHggaWR4MiAmIGlkeHZdIChhcHBseSBhc2V0IChhZ2V0IGFycmF5IGlkeCkgaWR4MiBpZHh2KSkpXHJcbiJ9IHs6c3ltIGludC1yb3RhdGUtbGVmdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4IG5dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBpbnQtcm90YXRlLWxlZnRcclxuIFt4IG5dXHJcbiAoYml0LW9yIChiaXQtc2hpZnQtbGVmdCB4IG4pICh1bnNpZ25lZC1iaXQtc2hpZnQtcmlnaHQgeCAoLSBuKSkpKVxyXG4ifSB7OnN5bSBrZXl3b3JkLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIEtleXdvcmQgd2l0aCB0aGUgZ2l2ZW4gbmFtZXNwYWNlIGFuZCBuYW1lLiAgRG8gbm90IHVzZSA6XG4gIGluIHRoZSBrZXl3b3JkIHN0cmluZ3MsIGl0IHdpbGwgYmUgYWRkZWQgYXV0b21hdGljYWxseS4iLCA6YXJnbGlzdHMgW1tuYW1lXSBbbnMgbmFtZV1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGtleXdvcmRcclxuIFwiUmV0dXJucyBhIEtleXdvcmQgd2l0aCB0aGUgZ2l2ZW4gbmFtZXNwYWNlIGFuZCBuYW1lLiAgRG8gbm90IHVzZSA6XFxuICBpbiB0aGUga2V5d29yZCBzdHJpbmdzLCBpdCB3aWxsIGJlIGFkZGVkIGF1dG9tYXRpY2FsbHkuXCJcclxuIChbbmFtZV1cclxuICAoY29uZFxyXG4gICAoa2V5d29yZD8gbmFtZSlcclxuICAgbmFtZVxyXG4gICAoc3ltYm9sPyBuYW1lKVxyXG4gICAoS2V5d29yZC5cclxuICAgIChjbGpzLmNvcmUvbmFtZXNwYWNlIG5hbWUpXHJcbiAgICAoY2xqcy5jb3JlL25hbWUgbmFtZSlcclxuICAgICguLXN0ciBuYW1lKVxyXG4gICAgbmlsKVxyXG4gICAoPSBcIi9cIiBuYW1lKVxyXG4gICAoS2V5d29yZC4gbmlsIG5hbWUgbmFtZSBuaWwpXHJcbiAgIChzdHJpbmc/IG5hbWUpXHJcbiAgIChsZXRcclxuICAgIFtwYXJ0cyAoLnNwbGl0IG5hbWUgXCIvXCIpXVxyXG4gICAgKGlmXHJcbiAgICAgKD09IChhbGVuZ3RoIHBhcnRzKSAyKVxyXG4gICAgIChLZXl3b3JkLiAoYWdldCBwYXJ0cyAwKSAoYWdldCBwYXJ0cyAxKSBuYW1lIG5pbClcclxuICAgICAoS2V5d29yZC4gbmlsIChhZ2V0IHBhcnRzIDApIG5hbWUgbmlsKSkpKSlcclxuIChbbnMgbmFtZV1cclxuICAobGV0XHJcbiAgIFtuc1xyXG4gICAgKGNvbmRcclxuICAgICAoa2V5d29yZD8gbnMpXHJcbiAgICAgKGNsanMuY29yZS9uYW1lIG5zKVxyXG4gICAgIChzeW1ib2w/IG5zKVxyXG4gICAgIChjbGpzLmNvcmUvbmFtZSBucylcclxuICAgICA6ZWxzZVxyXG4gICAgIG5zKVxyXG4gICAgbmFtZVxyXG4gICAgKGNvbmRcclxuICAgICAoa2V5d29yZD8gbmFtZSlcclxuICAgICAoY2xqcy5jb3JlL25hbWUgbmFtZSlcclxuICAgICAoc3ltYm9sPyBuYW1lKVxyXG4gICAgIChjbGpzLmNvcmUvbmFtZSBuYW1lKVxyXG4gICAgIDplbHNlXHJcbiAgICAgbmFtZSldXHJcbiAgIChLZXl3b3JkLiBucyBuYW1lIChzdHIgKHdoZW4gbnMgKHN0ciBucyBcIi9cIikpIG5hbWUpIG5pbCkpKSlcclxuIn0gezpzeW0gKm5zKiwgOm1ldGEgezpkb2MgIlZhciBib3VuZCB0byB0aGUgY3VycmVudCBuYW1lc3BhY2UuIE9ubHkgdXNlZCBmb3IgYm9vdHN0cmFwcGluZy4ifSwgOnNvdXJjZSAiKGRlZiAqbnMqIG5pbClcclxuIn0gezpzeW0gKmFzc2VydCosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICphc3NlcnQqIHRydWUpXHJcbiJ9IHs6c3ltIElDb2xsZWN0aW9uLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFkZGluZyB0byBhIGNvbGxlY3Rpb24uIn0sIDptZXRob2RzICgtY29uail9IHs6c3ltIGNoYXJzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGNoYXJzIFt4XSB4KVxyXG4ifSB7OnN5bSBzdHIsIDptZXRhIHs6ZG9jICJXaXRoIG5vIGFyZ3MsIHJldHVybnMgdGhlIGVtcHR5IHN0cmluZy4gV2l0aCBvbmUgYXJnIHgsIHJldHVybnNcbiAgeC50b1N0cmluZygpLiAgKHN0ciBuaWwpIHJldHVybnMgdGhlIGVtcHR5IHN0cmluZy4gV2l0aCBtb3JlIHRoYW5cbiAgb25lIGFyZywgcmV0dXJucyB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0aGUgc3RyIHZhbHVlcyBvZiB0aGUgYXJncy4iLCA6YXJnbGlzdHMgW1tdIFt4XSBbeCAmIHlzXV19LCA6c291cmNlICIoZGVmblxyXG4gc3RyXHJcbiBcIldpdGggbm8gYXJncywgcmV0dXJucyB0aGUgZW1wdHkgc3RyaW5nLiBXaXRoIG9uZSBhcmcgeCwgcmV0dXJuc1xcbiAgeC50b1N0cmluZygpLiAgKHN0ciBuaWwpIHJldHVybnMgdGhlIGVtcHR5IHN0cmluZy4gV2l0aCBtb3JlIHRoYW5cXG4gIG9uZSBhcmcsIHJldHVybnMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0ciB2YWx1ZXMgb2YgdGhlIGFyZ3MuXCJcclxuIChbXSBcIlwiKVxyXG4gKFt4XSAoaWYgKG5pbD8geCkgXCJcIiAoLmpvaW4gI2pzIFt4XSBcIlwiKSkpXHJcbiAoW3ggJiB5c11cclxuICAobG9vcFxyXG4gICBbc2IgKFN0cmluZ0J1ZmZlci4gKHN0ciB4KSkgbW9yZSB5c11cclxuICAgKGlmXHJcbiAgICBtb3JlXHJcbiAgICAocmVjdXIgKC4gc2IgKGFwcGVuZCAoc3RyIChmaXJzdCBtb3JlKSkpKSAobmV4dCBtb3JlKSlcclxuICAgICgudG9TdHJpbmcgc2IpKSkpKVxyXG4ifSB7OnN5bSBuZXh0LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHNlcSBvZiB0aGUgaXRlbXMgYWZ0ZXIgdGhlIGZpcnN0LiBDYWxscyBzZXEgb24gaXRzXG4gIGFyZ3VtZW50LiAgSWYgdGhlcmUgYXJlIG5vIG1vcmUgaXRlbXMsIHJldHVybnMgbmlsIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIG5leHRcclxuIFwiUmV0dXJucyBhIHNlcSBvZiB0aGUgaXRlbXMgYWZ0ZXIgdGhlIGZpcnN0LiBDYWxscyBzZXEgb24gaXRzXFxuICBhcmd1bWVudC4gIElmIHRoZXJlIGFyZSBubyBtb3JlIGl0ZW1zLCByZXR1cm5zIG5pbFwiXHJcbiBbY29sbF1cclxuICh3aGVuLW5vdFxyXG4gIChuaWw/IGNvbGwpXHJcbiAgKGlmIChpbXBsZW1lbnRzPyBJTmV4dCBjb2xsKSAoLW5leHQgY29sbCkgKHNlcSAocmVzdCBjb2xsKSkpKSlcclxuIn0gezpzeW0gQVNlcSwgOm1ldGEgezpkb2MgIk1hcmtlciBwcm90b2NvbCBpbmRpY2F0aW5nIGFuIGFycmF5IHNlcXVlbmNlLiJ9LCA6bWV0aG9kcyAoKX0gezpzeW0gcHItc2VxLXdyaXRlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtvYmpzIHdyaXRlciBvcHRzXSl9LCA6c291cmNlICIoZGVmblxyXG4gcHItc2VxLXdyaXRlclxyXG4gW29ianMgd3JpdGVyIG9wdHNdXHJcbiAocHItd3JpdGVyIChmaXJzdCBvYmpzKSB3cml0ZXIgb3B0cylcclxuIChkb3NlcVxyXG4gIFtvYmogKG5leHQgb2JqcyldXHJcbiAgKC13cml0ZSB3cml0ZXIgXCIgXCIpXHJcbiAgKHByLXdyaXRlciBvYmogd3JpdGVyIG9wdHMpKSlcclxuIn0gezpzeW0gSUZuLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFkZGluZyB0aGUgYWJpbGl0eSB0byBpbnZva2UgYW4gb2JqZWN0IGFzIGEgZnVuY3Rpb24uXG4gIEZvciBleGFtcGxlLCBhIHZlY3RvciBjYW4gYWxzbyBiZSB1c2VkIHRvIGxvb2sgdXAgYSB2YWx1ZTpcbiAgKFsxIDIgMyA0XSAxKSA9PiAyIn0sIDptZXRob2RzICgtaW52b2tlKX0gezpzeW0gcmVnZXhwPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB4IGlzIGEgSmF2YVNjcmlwdCBSZWdFeHAgaW5zdGFuY2UuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlZ2V4cD9cclxuIFwiUmV0dXJucyB0cnVlIGlmIHggaXMgYSBKYXZhU2NyaXB0IFJlZ0V4cCBpbnN0YW5jZS5cIlxyXG4gW3hdXHJcbiAoaW5zdGFuY2U/IGpzL1JlZ0V4cCB4KSlcclxuIn0gezpzeW0gaGFzaC1tYXAsIDptZXRhIHs6ZG9jICJrZXl2YWwgPT4ga2V5IHZhbFxuICBSZXR1cm5zIGEgbmV3IGhhc2ggbWFwIHdpdGggc3VwcGxpZWQgbWFwcGluZ3MuIiwgOmFyZ2xpc3RzIChbJiBrZXl2YWxzXSl9LCA6c291cmNlICIoZGVmblxyXG4gaGFzaC1tYXBcclxuIFwia2V5dmFsID0+IGtleSB2YWxcXG4gIFJldHVybnMgYSBuZXcgaGFzaCBtYXAgd2l0aCBzdXBwbGllZCBtYXBwaW5ncy5cIlxyXG4gWyYga2V5dmFsc11cclxuIChsb29wXHJcbiAgW2luIChzZXEga2V5dmFscykgb3V0ICh0cmFuc2llbnQgKC4tRU1QVFkgUGVyc2lzdGVudEhhc2hNYXApKV1cclxuICAoaWZcclxuICAgaW5cclxuICAgKHJlY3VyIChubmV4dCBpbikgKGFzc29jISBvdXQgKGZpcnN0IGluKSAoc2Vjb25kIGluKSkpXHJcbiAgIChwZXJzaXN0ZW50ISBvdXQpKSkpXHJcbiJ9IHs6c3ltICpleGVjLXRhcC1mbiosIDptZXRhIHs6ZG9jICJBcnJhbmdlcyB0byBoYXZlIHRhcCBmdW5jdGlvbnMgZXhlY3V0ZWQgdmlhIHRoZSBzdXBwbGllZCBmLCBhXG4gIGZ1bmN0aW9uIG9mIG5vIGFyZ3VtZW50cy4gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwsIGZhbHNlIG90aGVyd2lzZS4iLCA6YXJnbGlzdHMgKFtmXSl9LCA6c291cmNlICIoZGVmblxyXG4gKmV4ZWMtdGFwLWZuKlxyXG4gW2ZdXHJcbiAoYW5kIChleGlzdHM/IGpzL3NldFRpbWVvdXQpIChqcy9zZXRUaW1lb3V0IGYgMCkgdHJ1ZSkpXHJcbiJ9IHs6c3ltIHVuZGVyaXZlLCA6bWV0YSB7OmRvYyAiUmVtb3ZlcyBhIHBhcmVudC9jaGlsZCByZWxhdGlvbnNoaXAgYmV0d2VlbiBwYXJlbnQgYW5kXG4gIHRhZy4gaCBtdXN0IGJlIGEgaGllcmFyY2h5IG9idGFpbmVkIGZyb20gbWFrZS1oaWVyYXJjaHksIGlmIG5vdFxuICBzdXBwbGllZCBkZWZhdWx0cyB0bywgYW5kIG1vZGlmaWVzLCB0aGUgZ2xvYmFsIGhpZXJhcmNoeS4iLCA6YXJnbGlzdHMgW1t0YWcgcGFyZW50XSBbaCB0YWcgcGFyZW50XV19LCA6c291cmNlICIoZGVmblxyXG4gdW5kZXJpdmVcclxuIFwiUmVtb3ZlcyBhIHBhcmVudC9jaGlsZCByZWxhdGlvbnNoaXAgYmV0d2VlbiBwYXJlbnQgYW5kXFxuICB0YWcuIGggbXVzdCBiZSBhIGhpZXJhcmNoeSBvYnRhaW5lZCBmcm9tIG1ha2UtaGllcmFyY2h5LCBpZiBub3RcXG4gIHN1cHBsaWVkIGRlZmF1bHRzIHRvLCBhbmQgbW9kaWZpZXMsIHRoZSBnbG9iYWwgaGllcmFyY2h5LlwiXHJcbiAoW3RhZyBwYXJlbnRdIChzd2FwLWdsb2JhbC1oaWVyYXJjaHkhIHVuZGVyaXZlIHRhZyBwYXJlbnQpIG5pbClcclxuIChbaCB0YWcgcGFyZW50XVxyXG4gIChsZXRcclxuICAgW3BhcmVudE1hcFxyXG4gICAgKDpwYXJlbnRzIGgpXHJcbiAgICBjaGlsZHNQYXJlbnRzXHJcbiAgICAoaWYgKHBhcmVudE1hcCB0YWcpIChkaXNqIChwYXJlbnRNYXAgdGFnKSBwYXJlbnQpICN7fSlcclxuICAgIG5ld1BhcmVudHNcclxuICAgIChpZlxyXG4gICAgIChub3QtZW1wdHkgY2hpbGRzUGFyZW50cylcclxuICAgICAoYXNzb2MgcGFyZW50TWFwIHRhZyBjaGlsZHNQYXJlbnRzKVxyXG4gICAgIChkaXNzb2MgcGFyZW50TWFwIHRhZykpXHJcbiAgICBkZXJpdi1zZXFcclxuICAgIChmbGF0dGVuXHJcbiAgICAgKG1hcFxyXG4gICAgICAoZm4qXHJcbiAgICAgICBbcDFfXzQxNDcyI11cclxuICAgICAgIChjb25zXHJcbiAgICAgICAgKGZpcnN0IHAxX180MTQ3MiMpXHJcbiAgICAgICAgKGludGVycG9zZSAoZmlyc3QgcDFfXzQxNDcyIykgKHNlY29uZCBwMV9fNDE0NzIjKSkpKVxyXG4gICAgICAoc2VxIG5ld1BhcmVudHMpKSldXHJcbiAgIChpZlxyXG4gICAgKGNvbnRhaW5zPyAocGFyZW50TWFwIHRhZykgcGFyZW50KVxyXG4gICAgKHJlZHVjZVxyXG4gICAgIChmbiogW3AxX180MTQ3MyMgcDJfXzQxNDc0I10gKGFwcGx5IGRlcml2ZSBwMV9fNDE0NzMjIHAyX180MTQ3NCMpKVxyXG4gICAgIChtYWtlLWhpZXJhcmNoeSlcclxuICAgICAocGFydGl0aW9uIDIgZGVyaXYtc2VxKSlcclxuICAgIGgpKSkpXHJcbiJ9IHs6c3ltIC1yZXNldCEsIDptZXRhIHs6ZG9jICJTZXRzIHRoZSB2YWx1ZSBvZiBvIHRvIG5ldy12YWx1ZS4iLCA6YXJnbGlzdHMgKFtvIG5ldy12YWx1ZV0pfSwgOnByb3RvY29sIElSZXNldH0gezpzeW0gLXJlc3QsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbmV3IGNvbGxlY3Rpb24gb2YgY29sbCB3aXRob3V0IHRoZSBmaXJzdCBpdGVtLiBJdCBzaG91bGRcbiAgICAgYWx3YXlzIHJldHVybiBhIHNlcSwgZS5nLlxuICAgICAocmVzdCBbXSkgPT4gKClcbiAgICAgKHJlc3QgbmlsKSA9PiAoKSIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpwcm90b2NvbCBJU2VxfSB7OnN5bSBuaWwtaXRlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBuaWwtaXRlclxyXG4gW11cclxuIChyZWlmeVxyXG4gIE9iamVjdFxyXG4gIChoYXNOZXh0IFtfXSBmYWxzZSlcclxuICAobmV4dCBbX10gKGpzL0Vycm9yLiBcIk5vIHN1Y2ggZWxlbWVudFwiKSlcclxuICAocmVtb3ZlIFtfXSAoanMvRXJyb3IuIFwiVW5zdXBwb3J0ZWQgb3BlcmF0aW9uXCIpKSkpXHJcbiJ9IHs6c3ltIGZhbHNlPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB4IGlzIHRoZSB2YWx1ZSBmYWxzZSwgZmFsc2Ugb3RoZXJ3aXNlLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBmYWxzZT9cclxuIFwiUmV0dXJucyB0cnVlIGlmIHggaXMgdGhlIHZhbHVlIGZhbHNlLCBmYWxzZSBvdGhlcndpc2UuXCJcclxuIFt4XVxyXG4gKGNsanMuY29yZS9mYWxzZT8geCkpXHJcbiJ9IHs6c3ltICpwcmludC1yZWFkYWJseSosIDptZXRhIHs6ZG9jICJXaGVuIHNldCB0byBsb2dpY2FsIGZhbHNlLCBzdHJpbmdzIGFuZCBjaGFyYWN0ZXJzIHdpbGwgYmUgcHJpbnRlZCB3aXRoXG4gIG5vbi1hbHBoYW51bWVyaWMgY2hhcmFjdGVycyBjb252ZXJ0ZWQgdG8gdGhlIGFwcHJvcHJpYXRlIGVzY2FwZSBzZXF1ZW5jZXMuXG5cbiAgRGVmYXVsdHMgdG8gdHJ1ZSJ9LCA6c291cmNlICIoZGVmICpwcmludC1yZWFkYWJseSogdHJ1ZSlcclxuIn0gezpzeW0gaW50cywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiBpbnRzIFt4XSB4KVxyXG4ifSB7OnN5bSBzb21lLWZuLCA6bWV0YSB7OmRvYyAiVGFrZXMgYSBzZXQgb2YgcHJlZGljYXRlcyBhbmQgcmV0dXJucyBhIGZ1bmN0aW9uIGYgdGhhdCByZXR1cm5zIHRoZSBmaXJzdCBsb2dpY2FsIHRydWUgdmFsdWVcbiAgcmV0dXJuZWQgYnkgb25lIG9mIGl0cyBjb21wb3NpbmcgcHJlZGljYXRlcyBhZ2FpbnN0IGFueSBvZiBpdHMgYXJndW1lbnRzLCBlbHNlIGl0IHJldHVybnNcbiAgbG9naWNhbCBmYWxzZS4gTm90ZSB0aGF0IGYgaXMgc2hvcnQtY2lyY3VpdGluZyBpbiB0aGF0IGl0IHdpbGwgc3RvcCBleGVjdXRpb24gb24gdGhlIGZpcnN0XG4gIGFyZ3VtZW50IHRoYXQgdHJpZ2dlcnMgYSBsb2dpY2FsIHRydWUgcmVzdWx0IGFnYWluc3QgdGhlIG9yaWdpbmFsIHByZWRpY2F0ZXMuIiwgOmFyZ2xpc3RzIFtbcF0gW3AxIHAyXSBbcDEgcDIgcDNdIFtwMSBwMiBwMyAmIHBzXV19LCA6c291cmNlICIoZGVmblxyXG4gc29tZS1mblxyXG4gXCJUYWtlcyBhIHNldCBvZiBwcmVkaWNhdGVzIGFuZCByZXR1cm5zIGEgZnVuY3Rpb24gZiB0aGF0IHJldHVybnMgdGhlIGZpcnN0IGxvZ2ljYWwgdHJ1ZSB2YWx1ZVxcbiAgcmV0dXJuZWQgYnkgb25lIG9mIGl0cyBjb21wb3NpbmcgcHJlZGljYXRlcyBhZ2FpbnN0IGFueSBvZiBpdHMgYXJndW1lbnRzLCBlbHNlIGl0IHJldHVybnNcXG4gIGxvZ2ljYWwgZmFsc2UuIE5vdGUgdGhhdCBmIGlzIHNob3J0LWNpcmN1aXRpbmcgaW4gdGhhdCBpdCB3aWxsIHN0b3AgZXhlY3V0aW9uIG9uIHRoZSBmaXJzdFxcbiAgYXJndW1lbnQgdGhhdCB0cmlnZ2VycyBhIGxvZ2ljYWwgdHJ1ZSByZXN1bHQgYWdhaW5zdCB0aGUgb3JpZ2luYWwgcHJlZGljYXRlcy5cIlxyXG4gKFtwXVxyXG4gIChmblxyXG4gICBzcDFcclxuICAgKFtdIG5pbClcclxuICAgKFt4XSAocCB4KSlcclxuICAgKFt4IHldIChvciAocCB4KSAocCB5KSkpXHJcbiAgIChbeCB5IHpdIChvciAocCB4KSAocCB5KSAocCB6KSkpXHJcbiAgIChbeCB5IHogJiBhcmdzXSAob3IgKHNwMSB4IHkgeikgKHNvbWUgcCBhcmdzKSkpKSlcclxuIChbcDEgcDJdXHJcbiAgKGZuXHJcbiAgIHNwMlxyXG4gICAoW10gbmlsKVxyXG4gICAoW3hdIChvciAocDEgeCkgKHAyIHgpKSlcclxuICAgKFt4IHldIChvciAocDEgeCkgKHAxIHkpIChwMiB4KSAocDIgeSkpKVxyXG4gICAoW3ggeSB6XSAob3IgKHAxIHgpIChwMSB5KSAocDEgeikgKHAyIHgpIChwMiB5KSAocDIgeikpKVxyXG4gICAoW3ggeSB6ICYgYXJnc11cclxuICAgIChvclxyXG4gICAgIChzcDIgeCB5IHopXHJcbiAgICAgKHNvbWVcclxuICAgICAgKGZuKiBbcDFfXzQxNDM0I10gKG9yIChwMSBwMV9fNDE0MzQjKSAocDIgcDFfXzQxNDM0IykpKVxyXG4gICAgICBhcmdzKSkpKSlcclxuIChbcDEgcDIgcDNdXHJcbiAgKGZuXHJcbiAgIHNwM1xyXG4gICAoW10gbmlsKVxyXG4gICAoW3hdIChvciAocDEgeCkgKHAyIHgpIChwMyB4KSkpXHJcbiAgIChbeCB5XSAob3IgKHAxIHgpIChwMiB4KSAocDMgeCkgKHAxIHkpIChwMiB5KSAocDMgeSkpKVxyXG4gICAoW3ggeSB6XVxyXG4gICAgKG9yXHJcbiAgICAgKHAxIHgpXHJcbiAgICAgKHAyIHgpXHJcbiAgICAgKHAzIHgpXHJcbiAgICAgKHAxIHkpXHJcbiAgICAgKHAyIHkpXHJcbiAgICAgKHAzIHkpXHJcbiAgICAgKHAxIHopXHJcbiAgICAgKHAyIHopXHJcbiAgICAgKHAzIHopKSlcclxuICAgKFt4IHkgeiAmIGFyZ3NdXHJcbiAgICAob3JcclxuICAgICAoc3AzIHggeSB6KVxyXG4gICAgIChzb21lXHJcbiAgICAgIChmbipcclxuICAgICAgIFtwMV9fNDE0MzUjXVxyXG4gICAgICAgKG9yIChwMSBwMV9fNDE0MzUjKSAocDIgcDFfXzQxNDM1IykgKHAzIHAxX180MTQzNSMpKSlcclxuICAgICAgYXJncykpKSkpXHJcbiAoW3AxIHAyIHAzICYgcHNdXHJcbiAgKGxldFxyXG4gICBbcHMgKGxpc3QqIHAxIHAyIHAzIHBzKV1cclxuICAgKGZuXHJcbiAgICBzcG5cclxuICAgIChbXSBuaWwpXHJcbiAgICAoW3hdIChzb21lIChmbiogW3AxX180MTQzNiNdIChwMV9fNDE0MzYjIHgpKSBwcykpXHJcbiAgICAoW3ggeV1cclxuICAgICAoc29tZSAoZm4qIFtwMV9fNDE0MzcjXSAob3IgKHAxX180MTQzNyMgeCkgKHAxX180MTQzNyMgeSkpKSBwcykpXHJcbiAgICAoW3ggeSB6XVxyXG4gICAgIChzb21lXHJcbiAgICAgIChmbipcclxuICAgICAgIFtwMV9fNDE0MzgjXVxyXG4gICAgICAgKG9yIChwMV9fNDE0MzgjIHgpIChwMV9fNDE0MzgjIHkpIChwMV9fNDE0MzgjIHopKSlcclxuICAgICAgcHMpKVxyXG4gICAgKFt4IHkgeiAmIGFyZ3NdXHJcbiAgICAgKG9yXHJcbiAgICAgIChzcG4geCB5IHopXHJcbiAgICAgIChzb21lIChmbiogW3AxX180MTQzOSNdIChzb21lIHAxX180MTQzOSMgYXJncykpIHBzKSkpKSkpKVxyXG4ifSB7OnN5bSAqZmx1c2gtb24tbmV3bGluZSosIDptZXRhIHs6ZG9jICJXaGVuIHNldCB0byB0cnVlLCBvdXRwdXQgd2lsbCBiZSBmbHVzaGVkIHdoZW5ldmVyIGEgbmV3bGluZSBpcyBwcmludGVkLlxuXG4gIERlZmF1bHRzIHRvIHRydWUuIn0sIDpzb3VyY2UgIihkZWYgKmZsdXNoLW9uLW5ld2xpbmUqIHRydWUpXHJcbiJ9IHs6c3ltIHRvLWFycmF5LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhbiBhcnJheSBjb250YWluaW5nIHRoZSBjb250ZW50cyBvZiBjb2xsLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB0by1hcnJheVxyXG4gXCJSZXR1cm5zIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIGNvbnRlbnRzIG9mIGNvbGwuXCJcclxuIFtjb2xsXVxyXG4gKGxldFxyXG4gIFthcnkgKGFycmF5KV1cclxuICAobG9vcFxyXG4gICBbcyAoc2VxIGNvbGwpXVxyXG4gICAoaWYtbm90XHJcbiAgICAobmlsPyBzKVxyXG4gICAgKGRvICguIGFyeSBwdXNoIChmaXJzdCBzKSkgKHJlY3VyIChuZXh0IHMpKSlcclxuICAgIGFyeSkpKSlcclxuIn0gezpzeW0gbGlzdD8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgeCBpbXBsZW1lbnRzIElMaXN0IiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGxpc3Q/XHJcbiBcIlJldHVybnMgdHJ1ZSBpZiB4IGltcGxlbWVudHMgSUxpc3RcIlxyXG4gW3hdXHJcbiAoc2F0aXNmaWVzPyBJTGlzdCB4KSlcclxuIn0gezpzeW0gYXJyYXk/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIHggaXMgYSBKYXZhU2NyaXB0IGFycmF5LiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBhcnJheT9cclxuIFwiUmV0dXJucyB0cnVlIGlmIHggaXMgYSBKYXZhU2NyaXB0IGFycmF5LlwiXHJcbiBbeF1cclxuIChpZlxyXG4gIChpZGVudGljYWw/ICp0YXJnZXQqIFwibm9kZWpzXCIpXHJcbiAgKC5pc0FycmF5IGpzL0FycmF5IHgpXHJcbiAgKGluc3RhbmNlPyBqcy9BcnJheSB4KSkpXHJcbiJ9IHs6c3ltIHNpbXBsZS1pZGVudD8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IGlzIGEgc3ltYm9sIG9yIGtleXdvcmQgd2l0aG91dCBhIG5hbWVzcGFjZSIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBzaW1wbGUtaWRlbnQ/XHJcbiBcIlJldHVybiB0cnVlIGlmIHggaXMgYSBzeW1ib2wgb3Iga2V5d29yZCB3aXRob3V0IGEgbmFtZXNwYWNlXCJcclxuIFt4XVxyXG4gKGFuZCAoaWRlbnQ/IHgpIChuaWw/IChuYW1lc3BhY2UgeCkpKSlcclxuIn0gezpzeW0gY2xvbmUsIDptZXRhIHs6ZG9jICJDbG9uZSB0aGUgc3VwcGxpZWQgdmFsdWUgd2hpY2ggbXVzdCBpbXBsZW1lbnQgSUNsb25lYWJsZS4iLCA6YXJnbGlzdHMgKFt2YWx1ZV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGNsb25lXHJcbiBcIkNsb25lIHRoZSBzdXBwbGllZCB2YWx1ZSB3aGljaCBtdXN0IGltcGxlbWVudCBJQ2xvbmVhYmxlLlwiXHJcbiBbdmFsdWVdXHJcbiAoLWNsb25lIHZhbHVlKSlcclxuIn0gezpzeW0gZGVtdW5nZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtuYW1lXSl9LCA6c291cmNlICIoZGVmblxyXG4gZGVtdW5nZVxyXG4gW25hbWVdXHJcbiAoKGlmIChzeW1ib2w/IG5hbWUpIHN5bWJvbCBzdHIpXHJcbiAgKGxldFxyXG4gICBbbmFtZScgKHN0ciBuYW1lKV1cclxuICAgKGlmIChpZGVudGljYWw/IG5hbWUnIFwiX0RPVF9fRE9UX1wiKSBcIi4uXCIgKGRlbXVuZ2Utc3RyIG5hbWUnKSkpKSlcclxuIn0gezpzeW0gYml0LW5vdCwgOm1ldGEgezpkb2MgIkJpdHdpc2UgY29tcGxlbWVudCIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGJpdC1ub3QgXCJCaXR3aXNlIGNvbXBsZW1lbnRcIiBbeF0gKGNsanMuY29yZS9iaXQtbm90IHgpKVxyXG4ifSB7OnN5bSBieXRlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGJ5dGUgW3hdIHgpXHJcbiJ9IHs6c3ltIG1heCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGdyZWF0ZXN0IG9mIHRoZSBudW1zLiIsIDphcmdsaXN0cyBbW3hdIFt4IHldIFt4IHkgJiBtb3JlXV19LCA6c291cmNlICIoZGVmblxyXG4gbWF4XHJcbiBcIlJldHVybnMgdGhlIGdyZWF0ZXN0IG9mIHRoZSBudW1zLlwiXHJcbiAoW3hdIHgpXHJcbiAoW3ggeV0gKGNsanMuY29yZS9tYXggeCB5KSlcclxuIChbeCB5ICYgbW9yZV0gKHJlZHVjZSBtYXggKGNsanMuY29yZS9tYXggeCB5KSBtb3JlKSkpXHJcbiJ9IHs6c3ltIElDb21wYXJhYmxlLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIHZhbHVlcyB0aGF0IGNhbiBiZSBjb21wYXJlZC4ifSwgOm1ldGhvZHMgKC1jb21wYXJlKX0gezpzeW0gPT0sIDptZXRhIHs6ZG9jICJSZXR1cm5zIG5vbi1uaWwgaWYgbnVtcyBhbGwgaGF2ZSB0aGUgZXF1aXZhbGVudFxuICB2YWx1ZSwgb3RoZXJ3aXNlIGZhbHNlLiBCZWhhdmlvciBvbiBub24gbnVtcyBpc1xuICB1bmRlZmluZWQuIiwgOmFyZ2xpc3RzIFtbeF0gW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiA9PVxyXG4gXCJSZXR1cm5zIG5vbi1uaWwgaWYgbnVtcyBhbGwgaGF2ZSB0aGUgZXF1aXZhbGVudFxcbiAgdmFsdWUsIG90aGVyd2lzZSBmYWxzZS4gQmVoYXZpb3Igb24gbm9uIG51bXMgaXNcXG4gIHVuZGVmaW5lZC5cIlxyXG4gKFt4XSB0cnVlKVxyXG4gKFt4IHldICgtZXF1aXYgeCB5KSlcclxuIChbeCB5ICYgbW9yZV1cclxuICAoaWZcclxuICAgKD09IHggeSlcclxuICAgKGlmXHJcbiAgICAobmV4dCBtb3JlKVxyXG4gICAgKHJlY3VyIHkgKGZpcnN0IG1vcmUpIChuZXh0IG1vcmUpKVxyXG4gICAgKD09IHkgKGZpcnN0IG1vcmUpKSlcclxuICAgZmFsc2UpKSlcclxuIn0gezpzeW0gcGFyZW50cywgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGltbWVkaWF0ZSBwYXJlbnRzIG9mIHRhZywgZWl0aGVyIHZpYSBhIEphdmFTY3JpcHQgdHlwZVxuICBpbmhlcml0YW5jZSByZWxhdGlvbnNoaXAgb3IgYSByZWxhdGlvbnNoaXAgZXN0YWJsaXNoZWQgdmlhIGRlcml2ZS4gaFxuICBtdXN0IGJlIGEgaGllcmFyY2h5IG9idGFpbmVkIGZyb20gbWFrZS1oaWVyYXJjaHksIGlmIG5vdCBzdXBwbGllZFxuICBkZWZhdWx0cyB0byB0aGUgZ2xvYmFsIGhpZXJhcmNoeSIsIDphcmdsaXN0cyBbW3RhZ10gW2ggdGFnXV19LCA6c291cmNlICIoZGVmblxyXG4gcGFyZW50c1xyXG4gXCJSZXR1cm5zIHRoZSBpbW1lZGlhdGUgcGFyZW50cyBvZiB0YWcsIGVpdGhlciB2aWEgYSBKYXZhU2NyaXB0IHR5cGVcXG4gIGluaGVyaXRhbmNlIHJlbGF0aW9uc2hpcCBvciBhIHJlbGF0aW9uc2hpcCBlc3RhYmxpc2hlZCB2aWEgZGVyaXZlLiBoXFxuICBtdXN0IGJlIGEgaGllcmFyY2h5IG9idGFpbmVkIGZyb20gbWFrZS1oaWVyYXJjaHksIGlmIG5vdCBzdXBwbGllZFxcbiAgZGVmYXVsdHMgdG8gdGhlIGdsb2JhbCBoaWVyYXJjaHlcIlxyXG4gKFt0YWddIChwYXJlbnRzIEAoZ2V0LWdsb2JhbC1oaWVyYXJjaHkpIHRhZykpXHJcbiAoW2ggdGFnXSAobm90LWVtcHR5IChnZXQgKDpwYXJlbnRzIGgpIHRhZykpKSlcclxuIn0gezpzeW0gY291bnQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGNvbGxlY3Rpb24uIChjb3VudCBuaWwpIHJldHVybnNcbiAgMC4gIEFsc28gd29ya3Mgb24gc3RyaW5ncywgYXJyYXlzLCBhbmQgTWFwcyIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBjb3VudFxyXG4gXCJSZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGNvbGxlY3Rpb24uIChjb3VudCBuaWwpIHJldHVybnNcXG4gIDAuICBBbHNvIHdvcmtzIG9uIHN0cmluZ3MsIGFycmF5cywgYW5kIE1hcHNcIlxyXG4gW2NvbGxdXHJcbiAoaWYtbm90XHJcbiAgKG5pbD8gY29sbClcclxuICAoY29uZFxyXG4gICAoaW1wbGVtZW50cz8gSUNvdW50ZWQgY29sbClcclxuICAgKC1jb3VudCBjb2xsKVxyXG4gICAoYXJyYXk/IGNvbGwpXHJcbiAgIChhbGVuZ3RoIGNvbGwpXHJcbiAgIChzdHJpbmc/IGNvbGwpXHJcbiAgICguLWxlbmd0aCBjb2xsKVxyXG4gICAoaW1wbGVtZW50cz8gSVNlcWFibGUgY29sbClcclxuICAgKGFjY3VtdWxhdGluZy1zZXEtY291bnQgY29sbClcclxuICAgOmVsc2VcclxuICAgKC1jb3VudCBjb2xsKSlcclxuICAwKSlcclxuIn0gezpzeW0gLWRpc2pvaW4hLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0Y29sbCB3aXRob3V0IHYuIiwgOmFyZ2xpc3RzIChbdGNvbGwgdl0pfSwgOnByb3RvY29sIElUcmFuc2llbnRTZXR9IHs6c3ltICpsb2FkZWQtbGlicyosIDptZXRhIHt9LCA6c291cmNlICIoZGVmb25jZSAqbG9hZGVkLWxpYnMqIG5pbClcclxuIn0gezpzeW0gc29ydGVkLW1hcC1ieSwgOm1ldGEgezpkb2MgImtleXZhbCA9PiBrZXkgdmFsXG4gIFJldHVybnMgYSBuZXcgc29ydGVkIG1hcCB3aXRoIHN1cHBsaWVkIG1hcHBpbmdzLCB1c2luZyB0aGUgc3VwcGxpZWQgY29tcGFyYXRvci4iLCA6YXJnbGlzdHMgW1tjb21wYXJhdG9yICYga2V5dmFsc11dfSwgOnNvdXJjZSAiKGRlZm5cclxuIHNvcnRlZC1tYXAtYnlcclxuIFwia2V5dmFsID0+IGtleSB2YWxcXG4gIFJldHVybnMgYSBuZXcgc29ydGVkIG1hcCB3aXRoIHN1cHBsaWVkIG1hcHBpbmdzLCB1c2luZyB0aGUgc3VwcGxpZWQgY29tcGFyYXRvci5cIlxyXG4gKFtjb21wYXJhdG9yICYga2V5dmFsc11cclxuICAobG9vcFxyXG4gICBbaW5cclxuICAgIChzZXEga2V5dmFscylcclxuICAgIG91dFxyXG4gICAgKFBlcnNpc3RlbnRUcmVlTWFwLiAoZm4tPmNvbXBhcmF0b3IgY29tcGFyYXRvcikgbmlsIDAgbmlsIDApXVxyXG4gICAoaWYgaW4gKHJlY3VyIChubmV4dCBpbikgKGFzc29jIG91dCAoZmlyc3QgaW4pIChzZWNvbmQgaW4pKSkgb3V0KSkpKVxyXG4ifSB7OnN5bSBhcHBseSwgOm1ldGEgezpkb2MgIkFwcGxpZXMgZm4gZiB0byB0aGUgYXJndW1lbnQgbGlzdCBmb3JtZWQgYnkgcHJlcGVuZGluZyBpbnRlcnZlbmluZyBhcmd1bWVudHMgdG8gYXJncy4iLCA6YXJnbGlzdHMgW1tmIGFyZ3NdIFtmIHggYXJnc10gW2YgeCB5IGFyZ3NdIFtmIHggeSB6IGFyZ3NdIFtmIGEgYiBjIGQgJiBhcmdzXV19LCA6c291cmNlICIoZGVmblxyXG4gYXBwbHlcclxuIFwiQXBwbGllcyBmbiBmIHRvIHRoZSBhcmd1bWVudCBsaXN0IGZvcm1lZCBieSBwcmVwZW5kaW5nIGludGVydmVuaW5nIGFyZ3VtZW50cyB0byBhcmdzLlwiXHJcbiAoW2YgYXJnc11cclxuICAoaWZcclxuICAgKC4tY2xqcyRsYW5nJGFwcGx5VG8gZilcclxuICAgKGxldFxyXG4gICAgW2ZpeGVkLWFyaXR5XHJcbiAgICAgKC4tY2xqcyRsYW5nJG1heEZpeGVkQXJpdHkgZilcclxuICAgICBiY1xyXG4gICAgIChib3VuZGVkLWNvdW50IChpbmMgZml4ZWQtYXJpdHkpIGFyZ3MpXVxyXG4gICAgKGlmXHJcbiAgICAgKDw9IGJjIGZpeGVkLWFyaXR5KVxyXG4gICAgIChhcHBseS10byBmIGJjIGFyZ3MpXHJcbiAgICAgKC5jbGpzJGxhbmckYXBwbHlUbyBmIGFyZ3MpKSlcclxuICAgKGFwcGx5LXRvLXNpbXBsZSBmIChzZXEgYXJncykpKSlcclxuIChbZiB4IGFyZ3NdXHJcbiAgKGlmXHJcbiAgICguLWNsanMkbGFuZyRhcHBseVRvIGYpXHJcbiAgIChsZXRcclxuICAgIFthcmdsaXN0XHJcbiAgICAgKGxpc3QqIHggYXJncylcclxuICAgICBmaXhlZC1hcml0eVxyXG4gICAgICguLWNsanMkbGFuZyRtYXhGaXhlZEFyaXR5IGYpXHJcbiAgICAgYmNcclxuICAgICAoaW5jIChib3VuZGVkLWNvdW50IGZpeGVkLWFyaXR5IGFyZ3MpKV1cclxuICAgIChpZlxyXG4gICAgICg8PSBiYyBmaXhlZC1hcml0eSlcclxuICAgICAoYXBwbHktdG8gZiBiYyBhcmdsaXN0KVxyXG4gICAgICguY2xqcyRsYW5nJGFwcGx5VG8gZiBhcmdsaXN0KSkpXHJcbiAgIChhcHBseS10by1zaW1wbGUgZiB4IChzZXEgYXJncykpKSlcclxuIChbZiB4IHkgYXJnc11cclxuICAoaWZcclxuICAgKC4tY2xqcyRsYW5nJGFwcGx5VG8gZilcclxuICAgKGxldFxyXG4gICAgW2FyZ2xpc3RcclxuICAgICAobGlzdCogeCB5IGFyZ3MpXHJcbiAgICAgZml4ZWQtYXJpdHlcclxuICAgICAoLi1jbGpzJGxhbmckbWF4Rml4ZWRBcml0eSBmKVxyXG4gICAgIGJjXHJcbiAgICAgKCsgMiAoYm91bmRlZC1jb3VudCAoZGVjIGZpeGVkLWFyaXR5KSBhcmdzKSldXHJcbiAgICAoaWZcclxuICAgICAoPD0gYmMgZml4ZWQtYXJpdHkpXHJcbiAgICAgKGFwcGx5LXRvIGYgYmMgYXJnbGlzdClcclxuICAgICAoLmNsanMkbGFuZyRhcHBseVRvIGYgYXJnbGlzdCkpKVxyXG4gICAoYXBwbHktdG8tc2ltcGxlIGYgeCB5IChzZXEgYXJncykpKSlcclxuIChbZiB4IHkgeiBhcmdzXVxyXG4gIChpZlxyXG4gICAoLi1jbGpzJGxhbmckYXBwbHlUbyBmKVxyXG4gICAobGV0XHJcbiAgICBbYXJnbGlzdFxyXG4gICAgIChsaXN0KiB4IHkgeiBhcmdzKVxyXG4gICAgIGZpeGVkLWFyaXR5XHJcbiAgICAgKC4tY2xqcyRsYW5nJG1heEZpeGVkQXJpdHkgZilcclxuICAgICBiY1xyXG4gICAgICgrIDMgKGJvdW5kZWQtY291bnQgKC0gZml4ZWQtYXJpdHkgMikgYXJncykpXVxyXG4gICAgKGlmXHJcbiAgICAgKDw9IGJjIGZpeGVkLWFyaXR5KVxyXG4gICAgIChhcHBseS10byBmIGJjIGFyZ2xpc3QpXHJcbiAgICAgKC5jbGpzJGxhbmckYXBwbHlUbyBmIGFyZ2xpc3QpKSlcclxuICAgKGFwcGx5LXRvLXNpbXBsZSBmIHggeSB6IChzZXEgYXJncykpKSlcclxuIChbZiBhIGIgYyBkICYgYXJnc11cclxuICAoaWZcclxuICAgKC4tY2xqcyRsYW5nJGFwcGx5VG8gZilcclxuICAgKGxldFxyXG4gICAgW3NwcmVhZC1hcmdzXHJcbiAgICAgKHNwcmVhZCBhcmdzKVxyXG4gICAgIGFyZ2xpc3RcclxuICAgICAoY29ucyBhIChjb25zIGIgKGNvbnMgYyAoY29ucyBkIHNwcmVhZC1hcmdzKSkpKVxyXG4gICAgIGZpeGVkLWFyaXR5XHJcbiAgICAgKC4tY2xqcyRsYW5nJG1heEZpeGVkQXJpdHkgZilcclxuICAgICBiY1xyXG4gICAgICgrIDQgKGJvdW5kZWQtY291bnQgKC0gZml4ZWQtYXJpdHkgMykgc3ByZWFkLWFyZ3MpKV1cclxuICAgIChpZlxyXG4gICAgICg8PSBiYyBmaXhlZC1hcml0eSlcclxuICAgICAoYXBwbHktdG8gZiBiYyBhcmdsaXN0KVxyXG4gICAgICguY2xqcyRsYW5nJGFwcGx5VG8gZiBhcmdsaXN0KSkpXHJcbiAgIChhcHBseS10by1zaW1wbGUgZiBhIGIgYyBkIChzcHJlYWQgYXJncykpKSkpXHJcbiJ9IHs6c3ltIGFkZC10by1zdHJpbmctaGFzaC1jYWNoZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtrXSl9LCA6c291cmNlICIoZGVmblxyXG4gYWRkLXRvLXN0cmluZy1oYXNoLWNhY2hlXHJcbiBba11cclxuIChsZXRcclxuICBbaCAoaGFzaC1zdHJpbmcqIGspXVxyXG4gIChnb2JqZWN0L3NldCBzdHJpbmctaGFzaC1jYWNoZSBrIGgpXHJcbiAgKHNldCEgc3RyaW5nLWhhc2gtY2FjaGUtY291bnQgKGluYyBzdHJpbmctaGFzaC1jYWNoZS1jb3VudCkpXHJcbiAgaCkpXHJcbiJ9IHs6c3ltIGNsai0+anMsIDptZXRhIHs6ZG9jICJSZWN1cnNpdmVseSB0cmFuc2Zvcm1zIENsb2p1cmVTY3JpcHQgdmFsdWVzIHRvIEphdmFTY3JpcHQuXG4gIHNldHMvdmVjdG9ycy9saXN0cyBiZWNvbWUgQXJyYXlzLCBLZXl3b3JkcyBhbmQgU3ltYm9sIGJlY29tZSBTdHJpbmdzLFxuICBNYXBzIGJlY29tZSBPYmplY3RzLiBBcmJpdHJhcnkga2V5cyBhcmUgZW5jb2RlZCB0byBieSBga2V5LT5qc2AuXG4gIE9wdGlvbnMgaXMgYSBrZXktdmFsdWUgcGFpciwgd2hlcmUgdGhlIG9ubHkgdmFsaWQga2V5IGlzXG4gIDprZXl3b3JkLWZuLCB3aGljaCBzaG91bGQgcG9pbnQgdG8gYSBzaW5nbGUtYXJndW1lbnQgZnVuY3Rpb24gdG8gYmVcbiAgY2FsbGVkIG9uIGtleXdvcmQga2V5cy4gRGVmYXVsdCB0byBgbmFtZWAuIiwgOmFyZ2xpc3RzIChbeCAmIHs6a2V5cyBba2V5d29yZC1mbl0sIDpvciB7a2V5d29yZC1mbiBuYW1lfSwgOmFzIG9wdGlvbnN9XSl9LCA6c291cmNlICIoZGVmblxyXG4gY2xqLT5qc1xyXG4gXCJSZWN1cnNpdmVseSB0cmFuc2Zvcm1zIENsb2p1cmVTY3JpcHQgdmFsdWVzIHRvIEphdmFTY3JpcHQuXFxuICBzZXRzL3ZlY3RvcnMvbGlzdHMgYmVjb21lIEFycmF5cywgS2V5d29yZHMgYW5kIFN5bWJvbCBiZWNvbWUgU3RyaW5ncyxcXG4gIE1hcHMgYmVjb21lIE9iamVjdHMuIEFyYml0cmFyeSBrZXlzIGFyZSBlbmNvZGVkIHRvIGJ5IGBrZXktPmpzYC5cXG4gIE9wdGlvbnMgaXMgYSBrZXktdmFsdWUgcGFpciwgd2hlcmUgdGhlIG9ubHkgdmFsaWQga2V5IGlzXFxuICA6a2V5d29yZC1mbiwgd2hpY2ggc2hvdWxkIHBvaW50IHRvIGEgc2luZ2xlLWFyZ3VtZW50IGZ1bmN0aW9uIHRvIGJlXFxuICBjYWxsZWQgb24ga2V5d29yZCBrZXlzLiBEZWZhdWx0IHRvIGBuYW1lYC5cIlxyXG4gW3ggJiB7OmtleXMgW2tleXdvcmQtZm5dLCA6b3Ige2tleXdvcmQtZm4gbmFtZX0sIDphcyBvcHRpb25zfV1cclxuIChsZXRmblxyXG4gIFsoa2V5Zm4gW2tdIChrZXktPmpzIGsgdGhpc2ZuKSlcclxuICAgKHRoaXNmblxyXG4gICAgW3hdXHJcbiAgICAoY29uZFxyXG4gICAgIChuaWw/IHgpXHJcbiAgICAgbmlsXHJcbiAgICAgKHNhdGlzZmllcz8gSUVuY29kZUpTIHgpXHJcbiAgICAgKC1jbGotPmpzIHgpXHJcbiAgICAgKGtleXdvcmQ/IHgpXHJcbiAgICAgKGtleXdvcmQtZm4geClcclxuICAgICAoc3ltYm9sPyB4KVxyXG4gICAgIChzdHIgeClcclxuICAgICAobWFwPyB4KVxyXG4gICAgIChsZXRcclxuICAgICAgW20gKGpzLW9iaildXHJcbiAgICAgIChkb3NlcSBbW2sgdl0geF0gKGdvYmplY3Qvc2V0IG0gKGtleWZuIGspICh0aGlzZm4gdikpKVxyXG4gICAgICBtKVxyXG4gICAgIChjb2xsPyB4KVxyXG4gICAgIChsZXQgW2FyciAoYXJyYXkpXSAoZG9zZXEgW3ggKG1hcCB0aGlzZm4geCldICgucHVzaCBhcnIgeCkpIGFycilcclxuICAgICA6ZWxzZVxyXG4gICAgIHgpKV1cclxuICAodGhpc2ZuIHgpKSlcclxuIn0gezpzeW0gSUNodW5rZWROZXh0LCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFjY2Vzc2luZyB0aGUgY2h1bmtzIG9mIGEgY29sbGVjdGlvbi4ifSwgOm1ldGhvZHMgKC1jaHVua2VkLW5leHQpfSB7OnN5bSBpbnRlcnBvc2UsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbGF6eSBzZXEgb2YgdGhlIGVsZW1lbnRzIG9mIGNvbGwgc2VwYXJhdGVkIGJ5IHNlcC5cbiAgUmV0dXJucyBhIHN0YXRlZnVsIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLiIsIDphcmdsaXN0cyBbW3NlcF0gW3NlcCBjb2xsXV19LCA6c291cmNlICIoZGVmblxyXG4gaW50ZXJwb3NlXHJcbiBcIlJldHVybnMgYSBsYXp5IHNlcSBvZiB0aGUgZWxlbWVudHMgb2YgY29sbCBzZXBhcmF0ZWQgYnkgc2VwLlxcbiAgUmV0dXJucyBhIHN0YXRlZnVsIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLlwiXHJcbiAoW3NlcF1cclxuICAoZm5cclxuICAgW3JmXVxyXG4gICAobGV0XHJcbiAgICBbc3RhcnRlZCAodm9sYXRpbGUhIGZhbHNlKV1cclxuICAgIChmblxyXG4gICAgIChbXSAocmYpKVxyXG4gICAgIChbcmVzdWx0XSAocmYgcmVzdWx0KSlcclxuICAgICAoW3Jlc3VsdCBpbnB1dF1cclxuICAgICAgKGlmXHJcbiAgICAgICBAc3RhcnRlZFxyXG4gICAgICAgKGxldFxyXG4gICAgICAgIFtzZXByIChyZiByZXN1bHQgc2VwKV1cclxuICAgICAgICAoaWYgKHJlZHVjZWQ/IHNlcHIpIHNlcHIgKHJmIHNlcHIgaW5wdXQpKSlcclxuICAgICAgIChkbyAodnJlc2V0ISBzdGFydGVkIHRydWUpIChyZiByZXN1bHQgaW5wdXQpKSkpKSkpKVxyXG4gKFtzZXAgY29sbF0gKGRyb3AgMSAoaW50ZXJsZWF2ZSAocmVwZWF0IHNlcCkgY29sbCkpKSlcclxuIn0gezpzeW0gZGVyZWYsIDptZXRhIHs6ZG9jICJBbHNvIHJlYWRlciBtYWNybzogQHZhci9AYXRvbS9AZGVsYXkuIFJldHVybnMgdGhlXG4gICBtb3N0LXJlY2VudGx5LWNvbW1pdHRlZCB2YWx1ZSBvZiByZWYuIFdoZW4gYXBwbGllZCB0byBhIHZhclxuICAgb3IgYXRvbSwgcmV0dXJucyBpdHMgY3VycmVudCBzdGF0ZS4gV2hlbiBhcHBsaWVkIHRvIGEgZGVsYXksIGZvcmNlc1xuICAgaXQgaWYgbm90IGFscmVhZHkgZm9yY2VkLiBTZWUgYWxzbyAtIHJlYWxpemVkPy4iLCA6YXJnbGlzdHMgKFtvXSl9LCA6c291cmNlICIoZGVmblxyXG4gZGVyZWZcclxuIFwiQWxzbyByZWFkZXIgbWFjcm86IEB2YXIvQGF0b20vQGRlbGF5LiBSZXR1cm5zIHRoZVxcbiAgIG1vc3QtcmVjZW50bHktY29tbWl0dGVkIHZhbHVlIG9mIHJlZi4gV2hlbiBhcHBsaWVkIHRvIGEgdmFyXFxuICAgb3IgYXRvbSwgcmV0dXJucyBpdHMgY3VycmVudCBzdGF0ZS4gV2hlbiBhcHBsaWVkIHRvIGEgZGVsYXksIGZvcmNlc1xcbiAgIGl0IGlmIG5vdCBhbHJlYWR5IGZvcmNlZC4gU2VlIGFsc28gLSByZWFsaXplZD8uXCJcclxuIFtvXVxyXG4gKC1kZXJlZiBvKSlcclxuIn0gezpzeW0gYXNzb2MsIDptZXRhIHs6ZG9jICJhc3NvY1tpYXRlXS4gV2hlbiBhcHBsaWVkIHRvIGEgbWFwLCByZXR1cm5zIGEgbmV3IG1hcCBvZiB0aGVcbiAgIHNhbWUgKGhhc2hlZC9zb3J0ZWQpIHR5cGUsIHRoYXQgY29udGFpbnMgdGhlIG1hcHBpbmcgb2Yga2V5KHMpIHRvXG4gICB2YWwocykuIFdoZW4gYXBwbGllZCB0byBhIHZlY3RvciwgcmV0dXJucyBhIG5ldyB2ZWN0b3IgdGhhdFxuICAgY29udGFpbnMgdmFsIGF0IGluZGV4LiBOb3RlIC0gaW5kZXggbXVzdCBiZSA8PSAoY291bnQgdmVjdG9yKS4iLCA6YXJnbGlzdHMgW1tjb2xsIGsgdl0gW2NvbGwgayB2ICYga3ZzXV19LCA6c291cmNlICIoZGVmblxyXG4gYXNzb2NcclxuIFwiYXNzb2NbaWF0ZV0uIFdoZW4gYXBwbGllZCB0byBhIG1hcCwgcmV0dXJucyBhIG5ldyBtYXAgb2YgdGhlXFxuICAgc2FtZSAoaGFzaGVkL3NvcnRlZCkgdHlwZSwgdGhhdCBjb250YWlucyB0aGUgbWFwcGluZyBvZiBrZXkocykgdG9cXG4gICB2YWwocykuIFdoZW4gYXBwbGllZCB0byBhIHZlY3RvciwgcmV0dXJucyBhIG5ldyB2ZWN0b3IgdGhhdFxcbiAgIGNvbnRhaW5zIHZhbCBhdCBpbmRleC4gTm90ZSAtIGluZGV4IG11c3QgYmUgPD0gKGNvdW50IHZlY3RvcikuXCJcclxuIChbY29sbCBrIHZdXHJcbiAgKGlmXHJcbiAgIChpbXBsZW1lbnRzPyBJQXNzb2NpYXRpdmUgY29sbClcclxuICAgKC1hc3NvYyBjb2xsIGsgdilcclxuICAgKGlmLW5vdCAobmlsPyBjb2xsKSAoLWFzc29jIGNvbGwgayB2KSAoYXJyYXktbWFwIGsgdikpKSlcclxuIChbY29sbCBrIHYgJiBrdnNdXHJcbiAgKGxldFxyXG4gICBbcmV0IChhc3NvYyBjb2xsIGsgdildXHJcbiAgIChpZiBrdnMgKHJlY3VyIHJldCAoZmlyc3Qga3ZzKSAoc2Vjb25kIGt2cykgKG5uZXh0IGt2cykpIHJldCkpKSlcclxuIn0gezpzeW0gdHJhbnNpZW50LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG5ldywgdHJhbnNpZW50IHZlcnNpb24gb2YgdGhlIGNvbGxlY3Rpb24sIGluIGNvbnN0YW50IHRpbWUuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHRyYW5zaWVudFxyXG4gXCJSZXR1cm5zIGEgbmV3LCB0cmFuc2llbnQgdmVyc2lvbiBvZiB0aGUgY29sbGVjdGlvbiwgaW4gY29uc3RhbnQgdGltZS5cIlxyXG4gW2NvbGxdXHJcbiAoLWFzLXRyYW5zaWVudCBjb2xsKSlcclxuIn0gezpzeW0gLWRpc2pvaW4sIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbmV3IGNvbGxlY3Rpb24gb2YgY29sbCB0aGF0IGRvZXMgbm90IGNvbnRhaW4gdi4iLCA6YXJnbGlzdHMgKFtjb2xsIHZdKX0sIDpwcm90b2NvbCBJU2V0fSB7OnN5bSBjaHVuay1jb25zLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2NodW5rIHJlc3RdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBjaHVuay1jb25zXHJcbiBbY2h1bmsgcmVzdF1cclxuIChpZiAoemVybz8gKC1jb3VudCBjaHVuaykpIHJlc3QgKENodW5rZWRDb25zLiBjaHVuayByZXN0IG5pbCBuaWwpKSlcclxuIn0gezpzeW0gY29tcGFyYXRvciwgOm1ldGEgezpkb2MgIlJldHVybnMgYW4gSmF2YVNjcmlwdCBjb21wYXRpYmxlIGNvbXBhcmF0b3IgYmFzZWQgdXBvbiBwcmVkLiIsIDphcmdsaXN0cyAoW3ByZWRdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBjb21wYXJhdG9yXHJcbiBcIlJldHVybnMgYW4gSmF2YVNjcmlwdCBjb21wYXRpYmxlIGNvbXBhcmF0b3IgYmFzZWQgdXBvbiBwcmVkLlwiXHJcbiBbcHJlZF1cclxuIChmbiBbeCB5XSAoY29uZCAocHJlZCB4IHkpIC0xIChwcmVkIHkgeCkgMSA6ZWxzZSAwKSkpXHJcbiJ9IHs6c3ltIHByaW50LXByZWZpeC1tYXAsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcHJlZml4IG0gcHJpbnQtb25lIHdyaXRlciBvcHRzXSl9LCA6c291cmNlICIoZGVmblxyXG4gcHJpbnQtcHJlZml4LW1hcFxyXG4gW3ByZWZpeCBtIHByaW50LW9uZSB3cml0ZXIgb3B0c11cclxuIChwci1zZXF1ZW50aWFsLXdyaXRlclxyXG4gIHdyaXRlclxyXG4gIChmblxyXG4gICBbZSB3IG9wdHNdXHJcbiAgIChkb1xyXG4gICAgKHByaW50LW9uZSAoa2V5IGUpIHcgb3B0cylcclxuICAgICgtd3JpdGUgdyBcXHNwYWNlKVxyXG4gICAgKHByaW50LW9uZSAodmFsIGUpIHcgb3B0cykpKVxyXG4gIChzdHIgcHJlZml4IFwie1wiKVxyXG4gIFwiLCBcIlxyXG4gIFwifVwiXHJcbiAgb3B0c1xyXG4gIChzZXEgbSkpKVxyXG4ifSB7OnN5bSBzb3J0ZWQtbWFwLCA6bWV0YSB7OmRvYyAia2V5dmFsID0+IGtleSB2YWxcbiAgUmV0dXJucyBhIG5ldyBzb3J0ZWQgbWFwIHdpdGggc3VwcGxpZWQgbWFwcGluZ3MuIiwgOmFyZ2xpc3RzIFtbJiBrZXl2YWxzXV19LCA6c291cmNlICIoZGVmblxyXG4gc29ydGVkLW1hcFxyXG4gXCJrZXl2YWwgPT4ga2V5IHZhbFxcbiAgUmV0dXJucyBhIG5ldyBzb3J0ZWQgbWFwIHdpdGggc3VwcGxpZWQgbWFwcGluZ3MuXCJcclxuIChbJiBrZXl2YWxzXVxyXG4gIChsb29wXHJcbiAgIFtpbiAoc2VxIGtleXZhbHMpIG91dCAoLi1FTVBUWSBQZXJzaXN0ZW50VHJlZU1hcCldXHJcbiAgIChpZiBpbiAocmVjdXIgKG5uZXh0IGluKSAoYXNzb2Mgb3V0IChmaXJzdCBpbikgKHNlY29uZCBpbikpKSBvdXQpKSkpXHJcbiJ9IHs6c3ltIGRyb3Atd2hpbGUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiB0aGUgaXRlbXMgaW4gY29sbCBzdGFydGluZyBmcm9tIHRoZVxuICBmaXJzdCBpdGVtIGZvciB3aGljaCAocHJlZCBpdGVtKSByZXR1cm5zIGxvZ2ljYWwgZmFsc2UuICBSZXR1cm5zIGFcbiAgc3RhdGVmdWwgdHJhbnNkdWNlciB3aGVuIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuIiwgOmFyZ2xpc3RzIFtbcHJlZF0gW3ByZWQgY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGRyb3Atd2hpbGVcclxuIFwiUmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2YgdGhlIGl0ZW1zIGluIGNvbGwgc3RhcnRpbmcgZnJvbSB0aGVcXG4gIGZpcnN0IGl0ZW0gZm9yIHdoaWNoIChwcmVkIGl0ZW0pIHJldHVybnMgbG9naWNhbCBmYWxzZS4gIFJldHVybnMgYVxcbiAgc3RhdGVmdWwgdHJhbnNkdWNlciB3aGVuIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuXCJcclxuIChbcHJlZF1cclxuICAoZm5cclxuICAgW3JmXVxyXG4gICAobGV0XHJcbiAgICBbZGEgKHZvbGF0aWxlISB0cnVlKV1cclxuICAgIChmblxyXG4gICAgIChbXSAocmYpKVxyXG4gICAgIChbcmVzdWx0XSAocmYgcmVzdWx0KSlcclxuICAgICAoW3Jlc3VsdCBpbnB1dF1cclxuICAgICAgKGxldFxyXG4gICAgICAgW2Ryb3A/IEBkYV1cclxuICAgICAgIChpZlxyXG4gICAgICAgIChhbmQgZHJvcD8gKHByZWQgaW5wdXQpKVxyXG4gICAgICAgIHJlc3VsdFxyXG4gICAgICAgIChkbyAodnJlc2V0ISBkYSBuaWwpIChyZiByZXN1bHQgaW5wdXQpKSkpKSkpKSlcclxuIChbcHJlZCBjb2xsXVxyXG4gIChsZXRcclxuICAgW3N0ZXBcclxuICAgIChmblxyXG4gICAgIFtwcmVkIGNvbGxdXHJcbiAgICAgKGxldFxyXG4gICAgICBbcyAoc2VxIGNvbGwpXVxyXG4gICAgICAoaWYgKGFuZCBzIChwcmVkIChmaXJzdCBzKSkpIChyZWN1ciBwcmVkIChyZXN0IHMpKSBzKSkpXVxyXG4gICAobGF6eS1zZXEgKHN0ZXAgcHJlZCBjb2xsKSkpKSlcclxuIn0gezpzeW0gSVdyaXRlciwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciB3cml0aW5nLiBDdXJyZW50bHkgb25seSBpbXBsZW1lbnRlZCBieSBTdHJpbmdCdWZmZXJXcml0ZXIuIn0sIDptZXRob2RzICgtZmx1c2ggLXdyaXRlKX0gezpzeW0gcmVhbGl6ZWQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIGEgdmFsdWUgaGFzIGJlZW4gcHJvZHVjZWQgZm9yIGEgZGVsYXkgb3IgbGF6eSBzZXF1ZW5jZS4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxyXG4gcmVhbGl6ZWQ/XHJcbiBcIlJldHVybnMgdHJ1ZSBpZiBhIHZhbHVlIGhhcyBiZWVuIHByb2R1Y2VkIGZvciBhIGRlbGF5IG9yIGxhenkgc2VxdWVuY2UuXCJcclxuIFt4XVxyXG4gKC1yZWFsaXplZD8geCkpXHJcbiJ9IHs6c3ltICpwcmludC1mbiosIDptZXRhIHs6ZG9jICJFYWNoIHJ1bnRpbWUgZW52aXJvbm1lbnQgcHJvdmlkZXMgYSBkaWZmZXJlbnQgd2F5IHRvIHByaW50IG91dHB1dC5cbiAgV2hhdGV2ZXIgZnVuY3Rpb24gKnByaW50LWZuKiBpcyBib3VuZCB0byB3aWxsIGJlIHBhc3NlZCBhbnlcbiAgU3RyaW5ncyB3aGljaCBzaG91bGQgYmUgcHJpbnRlZC4ifSwgOnNvdXJjZSAiKGRlZm9uY2UgKnByaW50LWZuKiBuaWwpXHJcbiJ9IHs6c3ltIGNvbXBhcmUsIDptZXRhIHs6ZG9jICJDb21wYXJhdG9yLiBSZXR1cm5zIGEgbmVnYXRpdmUgbnVtYmVyLCB6ZXJvLCBvciBhIHBvc2l0aXZlIG51bWJlclxuICB3aGVuIHggaXMgbG9naWNhbGx5ICdsZXNzIHRoYW4nLCAnZXF1YWwgdG8nLCBvciAnZ3JlYXRlciB0aGFuJ1xuICB5LiBVc2VzIElDb21wYXJhYmxlIGlmIGF2YWlsYWJsZSBhbmQgZ29vZ2xlLmFycmF5LmRlZmF1bHRDb21wYXJlIGZvciBvYmplY3RzXG4gb2YgdGhlIHNhbWUgdHlwZSBhbmQgc3BlY2lhbC1jYXNlcyBuaWwgdG8gYmUgbGVzcyB0aGFuIGFueSBvdGhlciBvYmplY3QuIiwgOmFyZ2xpc3RzIChbeCB5XSl9LCA6c291cmNlICIoZGVmblxyXG4gY29tcGFyZVxyXG4gXCJDb21wYXJhdG9yLiBSZXR1cm5zIGEgbmVnYXRpdmUgbnVtYmVyLCB6ZXJvLCBvciBhIHBvc2l0aXZlIG51bWJlclxcbiAgd2hlbiB4IGlzIGxvZ2ljYWxseSAnbGVzcyB0aGFuJywgJ2VxdWFsIHRvJywgb3IgJ2dyZWF0ZXIgdGhhbidcXG4gIHkuIFVzZXMgSUNvbXBhcmFibGUgaWYgYXZhaWxhYmxlIGFuZCBnb29nbGUuYXJyYXkuZGVmYXVsdENvbXBhcmUgZm9yIG9iamVjdHNcXG4gb2YgdGhlIHNhbWUgdHlwZSBhbmQgc3BlY2lhbC1jYXNlcyBuaWwgdG8gYmUgbGVzcyB0aGFuIGFueSBvdGhlciBvYmplY3QuXCJcclxuIFt4IHldXHJcbiAoY29uZFxyXG4gIChpZGVudGljYWw/IHggeSlcclxuICAwXHJcbiAgKG5pbD8geClcclxuICAtMVxyXG4gIChuaWw/IHkpXHJcbiAgMVxyXG4gIChudW1iZXI/IHgpXHJcbiAgKGlmXHJcbiAgIChudW1iZXI/IHkpXHJcbiAgIChnYXJyYXkvZGVmYXVsdENvbXBhcmUgeCB5KVxyXG4gICAodGhyb3cgKGpzL0Vycm9yLiAoc3RyIFwiQ2Fubm90IGNvbXBhcmUgXCIgeCBcIiB0byBcIiB5KSkpKVxyXG4gIChzYXRpc2ZpZXM/IElDb21wYXJhYmxlIHgpXHJcbiAgKC1jb21wYXJlIHggeSlcclxuICA6ZWxzZVxyXG4gIChpZlxyXG4gICAoYW5kXHJcbiAgICAob3IgKHN0cmluZz8geCkgKGFycmF5PyB4KSAodHJ1ZT8geCkgKGZhbHNlPyB4KSlcclxuICAgIChpZGVudGljYWw/ICh0eXBlIHgpICh0eXBlIHkpKSlcclxuICAgKGdhcnJheS9kZWZhdWx0Q29tcGFyZSB4IHkpXHJcbiAgICh0aHJvdyAoanMvRXJyb3IuIChzdHIgXCJDYW5ub3QgY29tcGFyZSBcIiB4IFwiIHRvIFwiIHkpKSkpKSlcclxuIn0gezpzeW0gY29tcGxlbWVudCwgOm1ldGEgezpkb2MgIlRha2VzIGEgZm4gZiBhbmQgcmV0dXJucyBhIGZuIHRoYXQgdGFrZXMgdGhlIHNhbWUgYXJndW1lbnRzIGFzIGYsXG4gIGhhcyB0aGUgc2FtZSBlZmZlY3RzLCBpZiBhbnksIGFuZCByZXR1cm5zIHRoZSBvcHBvc2l0ZSB0cnV0aCB2YWx1ZS4iLCA6YXJnbGlzdHMgKFtmXSl9LCA6c291cmNlICIoZGVmblxyXG4gY29tcGxlbWVudFxyXG4gXCJUYWtlcyBhIGZuIGYgYW5kIHJldHVybnMgYSBmbiB0aGF0IHRha2VzIHRoZSBzYW1lIGFyZ3VtZW50cyBhcyBmLFxcbiAgaGFzIHRoZSBzYW1lIGVmZmVjdHMsIGlmIGFueSwgYW5kIHJldHVybnMgdGhlIG9wcG9zaXRlIHRydXRoIHZhbHVlLlwiXHJcbiBbZl1cclxuIChmblxyXG4gIChbXSAobm90IChmKSkpXHJcbiAgKFt4XSAobm90IChmIHgpKSlcclxuICAoW3ggeV0gKG5vdCAoZiB4IHkpKSlcclxuICAoW3ggeSAmIHpzXSAobm90IChhcHBseSBmIHggeSB6cykpKSkpXHJcbiJ9IHs6c3ltIC1hc3NvYyEsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbmV3IHRyYW5zaWVudCBjb2xsZWN0aW9uIG9mIHRjb2xsIHdpdGggYSBtYXBwaW5nIGZyb20ga2V5IHRvXG4gICAgIHZhbCBhZGRlZCB0byBpdC4iLCA6YXJnbGlzdHMgKFt0Y29sbCBrZXkgdmFsXSl9LCA6cHJvdG9jb2wgSVRyYW5zaWVudEFzc29jaWF0aXZlfSB7OnN5bSAqcHJpbnQtZHVwKiwgOm1ldGEgezpkb2MgIldoZW4gc2V0IHRvIGxvZ2ljYWwgdHJ1ZSwgb2JqZWN0cyB3aWxsIGJlIHByaW50ZWQgaW4gYSB3YXkgdGhhdCBwcmVzZXJ2ZXNcbiAgdGhlaXIgdHlwZSB3aGVuIHJlYWQgaW4gbGF0ZXIuXG5cbiAgRGVmYXVsdHMgdG8gZmFsc2UuIn0sIDpzb3VyY2UgIihkZWYgKnByaW50LWR1cCogZmFsc2UpXHJcbiJ9IHs6c3ltIHN0cmluZy1pdGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIHN0cmluZy1pdGVyIFt4XSAoU3RyaW5nSXRlci4geCAwKSlcclxuIn0gezpzeW0gLWtleS0+anMsIDptZXRhIHs6ZG9jICJUcmFuc2Zvcm1zIG1hcCBrZXlzIHRvIHZhbGlkIEphdmFTY3JpcHQga2V5cy4gQXJiaXRyYXJ5IGtleXMgYXJlXG4gIGVuY29kZWQgdG8gdGhlaXIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIHZpYSAocHItc3RyIHgpIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnByb3RvY29sIElFbmNvZGVKU30gezpzeW0gSURlcmVmLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFkZGluZyBkZXJlZmVyZW5jZSBmdW5jdGlvbmFsaXR5IHRvIGEgcmVmZXJlbmNlLiJ9LCA6bWV0aG9kcyAoLWRlcmVmKX0gezpzeW0gc2VxdWVuY2UsIDptZXRhIHs6ZG9jICJDb2VyY2VzIGNvbGwgdG8gYSAocG9zc2libHkgZW1wdHkpIHNlcXVlbmNlLCBpZiBpdCBpcyBub3QgYWxyZWFkeVxuICBvbmUuIFdpbGwgbm90IGZvcmNlIGEgbGF6eSBzZXEuIChzZXF1ZW5jZSBuaWwpIHlpZWxkcyAoKSwgV2hlbiBhXG4gIHRyYW5zZHVjZXIgaXMgc3VwcGxpZWQsIHJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIGFwcGxpY2F0aW9ucyBvZlxuICB0aGUgdHJhbnNmb3JtIHRvIHRoZSBpdGVtcyBpbiBjb2xsKHMpLCBpLmUuIHRvIHRoZSBzZXQgb2YgZmlyc3RcbiAgaXRlbXMgb2YgZWFjaCBjb2xsLCBmb2xsb3dlZCBieSB0aGUgc2V0IG9mIHNlY29uZFxuICBpdGVtcyBpbiBlYWNoIGNvbGwsIHVudGlsIGFueSBvbmUgb2YgdGhlIGNvbGxzIGlzIGV4aGF1c3RlZC4gIEFueVxuICByZW1haW5pbmcgaXRlbXMgaW4gb3RoZXIgY29sbHMgYXJlIGlnbm9yZWQuIFRoZSB0cmFuc2Zvcm0gc2hvdWxkIGFjY2VwdFxuICBudW1iZXItb2YtY29sbHMgYXJndW1lbnRzIiwgOmFyZ2xpc3RzIFtbY29sbF0gW3hmb3JtIGNvbGxdIFt4Zm9ybSBjb2xsICYgY29sbHNdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBzZXF1ZW5jZVxyXG4gXCJDb2VyY2VzIGNvbGwgdG8gYSAocG9zc2libHkgZW1wdHkpIHNlcXVlbmNlLCBpZiBpdCBpcyBub3QgYWxyZWFkeVxcbiAgb25lLiBXaWxsIG5vdCBmb3JjZSBhIGxhenkgc2VxLiAoc2VxdWVuY2UgbmlsKSB5aWVsZHMgKCksIFdoZW4gYVxcbiAgdHJhbnNkdWNlciBpcyBzdXBwbGllZCwgcmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2YgYXBwbGljYXRpb25zIG9mXFxuICB0aGUgdHJhbnNmb3JtIHRvIHRoZSBpdGVtcyBpbiBjb2xsKHMpLCBpLmUuIHRvIHRoZSBzZXQgb2YgZmlyc3RcXG4gIGl0ZW1zIG9mIGVhY2ggY29sbCwgZm9sbG93ZWQgYnkgdGhlIHNldCBvZiBzZWNvbmRcXG4gIGl0ZW1zIGluIGVhY2ggY29sbCwgdW50aWwgYW55IG9uZSBvZiB0aGUgY29sbHMgaXMgZXhoYXVzdGVkLiAgQW55XFxuICByZW1haW5pbmcgaXRlbXMgaW4gb3RoZXIgY29sbHMgYXJlIGlnbm9yZWQuIFRoZSB0cmFuc2Zvcm0gc2hvdWxkIGFjY2VwdFxcbiAgbnVtYmVyLW9mLWNvbGxzIGFyZ3VtZW50c1wiXHJcbiAoW2NvbGxdIChpZiAoc2VxPyBjb2xsKSBjb2xsIChvciAoc2VxIGNvbGwpICgpKSkpXHJcbiAoW3hmb3JtIGNvbGxdXHJcbiAgKG9yXHJcbiAgIChjaHVua0l0ZXJhdG9yU2VxICguY3JlYXRlIFRyYW5zZm9ybWVySXRlcmF0b3IgeGZvcm0gKGl0ZXIgY29sbCkpKVxyXG4gICAoKSkpXHJcbiAoW3hmb3JtIGNvbGwgJiBjb2xsc11cclxuICAob3JcclxuICAgKGNodW5rSXRlcmF0b3JTZXFcclxuICAgICguY3JlYXRlTXVsdGlcclxuICAgICBUcmFuc2Zvcm1lckl0ZXJhdG9yXHJcbiAgICAgeGZvcm1cclxuICAgICAobWFwIGl0ZXIgKGNvbnMgY29sbCBjb2xscykpKSlcclxuICAgKCkpKSlcclxuIn0gezpzeW0gY29uc3RhbnRseSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGFueSBudW1iZXIgb2YgYXJndW1lbnRzIGFuZCByZXR1cm5zIHguIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGNvbnN0YW50bHlcclxuIFwiUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYW55IG51bWJlciBvZiBhcmd1bWVudHMgYW5kIHJldHVybnMgeC5cIlxyXG4gW3hdXHJcbiAoZm4gWyYgYXJnc10geCkpXHJcbiJ9IHs6c3ltIGNodW5rZWQtc2VxLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW3ZlYyBpIG9mZl0gW3ZlYyBub2RlIGkgb2ZmXSBbdmVjIG5vZGUgaSBvZmYgbWV0YV1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGNodW5rZWQtc2VxXHJcbiAoW3ZlYyBpIG9mZl0gKENodW5rZWRTZXEuIHZlYyAoYXJyYXktZm9yIHZlYyBpKSBpIG9mZiBuaWwgbmlsKSlcclxuIChbdmVjIG5vZGUgaSBvZmZdIChDaHVua2VkU2VxLiB2ZWMgbm9kZSBpIG9mZiBuaWwgbmlsKSlcclxuIChbdmVjIG5vZGUgaSBvZmYgbWV0YV0gKENodW5rZWRTZXEuIHZlYyBub2RlIGkgb2ZmIG1ldGEgbmlsKSkpXHJcbiJ9IHs6c3ltIElTb3J0ZWQsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgYSBjb2xsZWN0aW9uIHdoaWNoIGNhbiByZXByZXNlbnQgdGhlaXIgaXRlbXNcbiAgaW4gYSBzb3J0ZWQgbWFubmVyLiAifSwgOm1ldGhvZHMgKC1jb21wYXJhdG9yIC1lbnRyeS1rZXkgLXNvcnRlZC1zZXEgLXNvcnRlZC1zZXEtZnJvbSl9IHs6c3ltIG1ha2UtYXJyYXksIDptZXRhIHs6ZG9jICJDb25zdHJ1Y3QgYSBKYXZhU2NyaXB0IGFycmF5IG9mIHRoZSBzcGVjaWZpZWQgZGltZW5zaW9ucy4gQWNjZXB0cyBpZ25vcmVkXG4gIHR5cGUgYXJndW1lbnQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBDbG9qdXJlLiBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gZWZmaWNpZW50XG4gIHdheSB0byBhbGxvY2F0ZSBtdWx0aS1kaW1lbnNpb25hbCBhcnJheXMgaW4gSmF2YVNjcmlwdDsgYXMgc3VjaCwgdGhpcyBmdW5jdGlvblxuICB3aWxsIHJ1biBpbiBwb2x5bm9taWFsIHRpbWUgd2hlbiBjYWxsZWQgd2l0aCAzIG9yIG1vcmUgYXJndW1lbnRzLiIsIDphcmdsaXN0cyBbW3NpemVdIFt0eXBlIHNpemVdIFt0eXBlIHNpemUgJiBtb3JlLXNpemVzXV19LCA6c291cmNlICIoZGVmblxyXG4gbWFrZS1hcnJheVxyXG4gXCJDb25zdHJ1Y3QgYSBKYXZhU2NyaXB0IGFycmF5IG9mIHRoZSBzcGVjaWZpZWQgZGltZW5zaW9ucy4gQWNjZXB0cyBpZ25vcmVkXFxuICB0eXBlIGFyZ3VtZW50IGZvciBjb21wYXRpYmlsaXR5IHdpdGggQ2xvanVyZS4gTm90ZSB0aGF0IHRoZXJlIGlzIG5vIGVmZmljaWVudFxcbiAgd2F5IHRvIGFsbG9jYXRlIG11bHRpLWRpbWVuc2lvbmFsIGFycmF5cyBpbiBKYXZhU2NyaXB0OyBhcyBzdWNoLCB0aGlzIGZ1bmN0aW9uXFxuICB3aWxsIHJ1biBpbiBwb2x5bm9taWFsIHRpbWUgd2hlbiBjYWxsZWQgd2l0aCAzIG9yIG1vcmUgYXJndW1lbnRzLlwiXHJcbiAoW3NpemVdIChqcy9BcnJheS4gc2l6ZSkpXHJcbiAoW3R5cGUgc2l6ZV0gKG1ha2UtYXJyYXkgc2l6ZSkpXHJcbiAoW3R5cGUgc2l6ZSAmIG1vcmUtc2l6ZXNdXHJcbiAgKGxldFxyXG4gICBbZGltcyBtb3JlLXNpemVzIGRpbWFycmF5IChtYWtlLWFycmF5IHNpemUpXVxyXG4gICAoZG90aW1lc1xyXG4gICAgW2kgKGFsZW5ndGggZGltYXJyYXkpXVxyXG4gICAgKGFzZXQgZGltYXJyYXkgaSAoYXBwbHkgbWFrZS1hcnJheSBuaWwgZGltcykpKVxyXG4gICBkaW1hcnJheSkpKVxyXG4ifSB7OnN5bSBzaG9ydHMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gc2hvcnRzIFt4XSB4KVxyXG4ifSB7OnN5bSAqdW5jaGVja2VkLWlmKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKnVuY2hlY2tlZC1pZiogZmFsc2UpXHJcbiJ9IHs6c3ltIGVuYWJsZS1jb25zb2xlLXByaW50ISwgOm1ldGEgezpkb2MgIlNldCAqcHJpbnQtZm4qIHRvIGNvbnNvbGUubG9nIiwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxyXG4gZW5hYmxlLWNvbnNvbGUtcHJpbnQhXHJcbiBcIlNldCAqcHJpbnQtZm4qIHRvIGNvbnNvbGUubG9nXCJcclxuIFtdXHJcbiAoc2V0ISAqcHJpbnQtbmV3bGluZSogZmFsc2UpXHJcbiAoc2V0LXByaW50LWZuIVxyXG4gIChmblxyXG4gICBbXVxyXG4gICAobGV0XHJcbiAgICBbeHMgKGpzLWFyZ3VtZW50cyldXHJcbiAgICAoLmFwcGx5ICguLWxvZyBqcy9jb25zb2xlKSBqcy9jb25zb2xlIChnYXJyYXkvY2xvbmUgeHMpKSkpKVxyXG4gKHNldC1wcmludC1lcnItZm4hXHJcbiAgKGZuXHJcbiAgIFtdXHJcbiAgIChsZXRcclxuICAgIFt4cyAoanMtYXJndW1lbnRzKV1cclxuICAgICguYXBwbHkgKC4tZXJyb3IganMvY29uc29sZSkganMvY29uc29sZSAoZ2FycmF5L2Nsb25lIHhzKSkpKSlcclxuIG5pbClcclxuIn0gezpzeW0gLWZsdXNoLCA6bWV0YSB7OmRvYyAiRmx1c2ggd3JpdGVyLiIsIDphcmdsaXN0cyAoW3dyaXRlcl0pfSwgOnByb3RvY29sIElXcml0ZXJ9IHs6c3ltIGNvbXBsZXRpbmcsIDptZXRhIHs6ZG9jICJUYWtlcyBhIHJlZHVjaW5nIGZ1bmN0aW9uIGYgb2YgMiBhcmdzIGFuZCByZXR1cm5zIGEgZm4gc3VpdGFibGUgZm9yXG4gIHRyYW5zZHVjZSBieSBhZGRpbmcgYW4gYXJpdHktMSBzaWduYXR1cmUgdGhhdCBjYWxscyBjZiAoZGVmYXVsdCAtXG4gIGlkZW50aXR5KSBvbiB0aGUgcmVzdWx0IGFyZ3VtZW50LiIsIDphcmdsaXN0cyBbW2ZdIFtmIGNmXV19LCA6c291cmNlICIoZGVmblxyXG4gY29tcGxldGluZ1xyXG4gXCJUYWtlcyBhIHJlZHVjaW5nIGZ1bmN0aW9uIGYgb2YgMiBhcmdzIGFuZCByZXR1cm5zIGEgZm4gc3VpdGFibGUgZm9yXFxuICB0cmFuc2R1Y2UgYnkgYWRkaW5nIGFuIGFyaXR5LTEgc2lnbmF0dXJlIHRoYXQgY2FsbHMgY2YgKGRlZmF1bHQgLVxcbiAgaWRlbnRpdHkpIG9uIHRoZSByZXN1bHQgYXJndW1lbnQuXCJcclxuIChbZl0gKGNvbXBsZXRpbmcgZiBpZGVudGl0eSkpXHJcbiAoW2YgY2ZdIChmbiAoW10gKGYpKSAoW3hdIChjZiB4KSkgKFt4IHldIChmIHggeSkpKSkpXHJcbiJ9IHs6c3ltIHVuY2hlY2tlZC1uZWdhdGUtaW50LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIHVuY2hlY2tlZC1uZWdhdGUtaW50IFt4XSAoY2xqcy5jb3JlL3VuY2hlY2tlZC1uZWdhdGUtaW50IHgpKVxyXG4ifSB7OnN5bSBoYXNoLXVub3JkZXJlZC1jb2xsLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgaGFzaCBjb2RlLCBjb25zaXN0ZW50IHdpdGggPSwgZm9yIGFuIGV4dGVybmFsIHVub3JkZXJlZFxuICAgY29sbGVjdGlvbiBpbXBsZW1lbnRpbmcgSXRlcmFibGUuIEZvciBtYXBzLCB0aGUgaXRlcmF0b3Igc2hvdWxkXG4gICByZXR1cm4gbWFwIGVudHJpZXMgd2hvc2UgaGFzaCBpcyBjb21wdXRlZCBhc1xuICAgICAoaGFzaC1vcmRlcmVkLWNvbGwgW2sgdl0pLlxuICAgU2VlIGh0dHA6Ly9jbG9qdXJlLm9yZy9kYXRhX3N0cnVjdHVyZXMjaGFzaCBmb3IgZnVsbCBhbGdvcml0aG1zLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBoYXNoLXVub3JkZXJlZC1jb2xsXHJcbiBcIlJldHVybnMgdGhlIGhhc2ggY29kZSwgY29uc2lzdGVudCB3aXRoID0sIGZvciBhbiBleHRlcm5hbCB1bm9yZGVyZWRcXG4gICBjb2xsZWN0aW9uIGltcGxlbWVudGluZyBJdGVyYWJsZS4gRm9yIG1hcHMsIHRoZSBpdGVyYXRvciBzaG91bGRcXG4gICByZXR1cm4gbWFwIGVudHJpZXMgd2hvc2UgaGFzaCBpcyBjb21wdXRlZCBhc1xcbiAgICAgKGhhc2gtb3JkZXJlZC1jb2xsIFtrIHZdKS5cXG4gICBTZWUgaHR0cDovL2Nsb2p1cmUub3JnL2RhdGFfc3RydWN0dXJlcyNoYXNoIGZvciBmdWxsIGFsZ29yaXRobXMuXCJcclxuIFtjb2xsXVxyXG4gKGxvb3BcclxuICBbbiAwIGhhc2gtY29kZSAwIGNvbGwgKHNlcSBjb2xsKV1cclxuICAoaWYtbm90XHJcbiAgIChuaWw/IGNvbGwpXHJcbiAgIChyZWN1clxyXG4gICAgKGluYyBuKVxyXG4gICAgKGJpdC1vciAoKyBoYXNoLWNvZGUgKGhhc2ggKGZpcnN0IGNvbGwpKSkgMClcclxuICAgIChuZXh0IGNvbGwpKVxyXG4gICAobWl4LWNvbGxlY3Rpb24taGFzaCBoYXNoLWNvZGUgbikpKSlcclxuIn0gezpzeW0gcmVwZWF0LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGxhenkgKGluZmluaXRlISwgb3IgbGVuZ3RoIG4gaWYgc3VwcGxpZWQpIHNlcXVlbmNlIG9mIHhzLiIsIDphcmdsaXN0cyBbW3hdIFtuIHhdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiByZXBlYXRcclxuIFwiUmV0dXJucyBhIGxhenkgKGluZmluaXRlISwgb3IgbGVuZ3RoIG4gaWYgc3VwcGxpZWQpIHNlcXVlbmNlIG9mIHhzLlwiXHJcbiAoW3hdIChSZXBlYXQuIG5pbCAtMSB4IG5pbCBuaWwpKVxyXG4gKFtuIHhdIChpZiAocG9zPyBuKSAoUmVwZWF0LiBuaWwgbiB4IG5pbCBuaWwpICguLUVNUFRZIExpc3QpKSkpXHJcbiJ9IHs6c3ltIHVuY2hlY2tlZC1pbmMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gdW5jaGVja2VkLWluYyBbeF0gKGNsanMuY29yZS91bmNoZWNrZWQtaW5jIHgpKVxyXG4ifSB7OnN5bSBudGhuZXh0LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbnRoIG5leHQgb2YgY29sbCwgKHNlcSBjb2xsKSB3aGVuIG4gaXMgMC4iLCA6YXJnbGlzdHMgKFtjb2xsIG5dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBudGhuZXh0XHJcbiBcIlJldHVybnMgdGhlIG50aCBuZXh0IG9mIGNvbGwsIChzZXEgY29sbCkgd2hlbiBuIGlzIDAuXCJcclxuIFtjb2xsIG5dXHJcbiAobG9vcFxyXG4gIFtuIG4geHMgKHNlcSBjb2xsKV1cclxuICAoaWYgKGFuZCB4cyAocG9zPyBuKSkgKHJlY3VyIChkZWMgbikgKG5leHQgeHMpKSB4cykpKVxyXG4ifSB7OnN5bSBnZXQtdmFsaWRhdG9yLCA6bWV0YSB7OmRvYyAiR2V0cyB0aGUgdmFsaWRhdG9yLWZuIGZvciBhIHZhci9yZWYvYWdlbnQvYXRvbS4iLCA6YXJnbGlzdHMgKFtpcmVmXSl9LCA6c291cmNlICIoZGVmblxyXG4gZ2V0LXZhbGlkYXRvclxyXG4gXCJHZXRzIHRoZSB2YWxpZGF0b3ItZm4gZm9yIGEgdmFyL3JlZi9hZ2VudC9hdG9tLlwiXHJcbiBbaXJlZl1cclxuICguLXZhbGlkYXRvciBpcmVmKSlcclxuIn0gezpzeW0gbnVtYmVyPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB4IGlzIGEgSmF2YVNjcmlwdCBudW1iZXIuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIG51bWJlcj9cclxuIFwiUmV0dXJucyB0cnVlIGlmIHggaXMgYSBKYXZhU2NyaXB0IG51bWJlci5cIlxyXG4gW3hdXHJcbiAoY2xqcy5jb3JlL251bWJlcj8geCkpXHJcbiJ9IHs6c3ltIC1jb25qISwgOm1ldGEgezpkb2MgIkFkZHMgdmFsdWUgdmFsIHRvIHRjb2xsIGFuZCByZXR1cm5zIHRjb2xsLiIsIDphcmdsaXN0cyAoW3Rjb2xsIHZhbF0pfSwgOnByb3RvY29sIElUcmFuc2llbnRDb2xsZWN0aW9ufSB7OnN5bSBjaHVuay1uZXh0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBjaHVuay1uZXh0XHJcbiBbc11cclxuIChpZlxyXG4gIChpbXBsZW1lbnRzPyBJQ2h1bmtlZE5leHQgcylcclxuICAoLWNodW5rZWQtbmV4dCBzKVxyXG4gIChzZXEgKC1jaHVua2VkLXJlc3QgcykpKSlcclxuIn0gezpzeW0gcHJpbnQtc3RyLCA6bWV0YSB7OmRvYyAicHJpbnQgdG8gYSBzdHJpbmcsIHJldHVybmluZyBpdCIsIDphcmdsaXN0cyAoWyYgb2Jqc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHByaW50LXN0clxyXG4gXCJwcmludCB0byBhIHN0cmluZywgcmV0dXJuaW5nIGl0XCJcclxuIFsmIG9ianNdXHJcbiAocHItc3RyLXdpdGgtb3B0cyBvYmpzIChhc3NvYyAocHItb3B0cykgOnJlYWRhYmx5IGZhbHNlKSkpXHJcbiJ9IHs6c3ltIG5vdC1hbnk/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBmYWxzZSBpZiAocHJlZCB4KSBpcyBsb2dpY2FsIHRydWUgZm9yIGFueSB4IGluIGNvbGwsXG4gIGVsc2UgdHJ1ZS4iLCA6YXJnbGlzdHMgKFtwcmVkIGNvbGxdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBub3QtYW55P1xyXG4gXCJSZXR1cm5zIGZhbHNlIGlmIChwcmVkIHgpIGlzIGxvZ2ljYWwgdHJ1ZSBmb3IgYW55IHggaW4gY29sbCxcXG4gIGVsc2UgdHJ1ZS5cIlxyXG4gW3ByZWQgY29sbF1cclxuIChub3QgKHNvbWUgcHJlZCBjb2xsKSkpXHJcbiJ9IHs6c3ltIGludG8tYXJyYXksIDptZXRhIHs6ZG9jICJSZXR1cm5zIGFuIGFycmF5IHdpdGggY29tcG9uZW50cyBzZXQgdG8gdGhlIHZhbHVlcyBpbiBhc2VxLiBPcHRpb25hbCB0eXBlXG4gIGFyZ3VtZW50IGFjY2VwdGVkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggQ2xvanVyZS4iLCA6YXJnbGlzdHMgW1thc2VxXSBbdHlwZSBhc2VxXV19LCA6c291cmNlICIoZGVmblxyXG4gaW50by1hcnJheVxyXG4gXCJSZXR1cm5zIGFuIGFycmF5IHdpdGggY29tcG9uZW50cyBzZXQgdG8gdGhlIHZhbHVlcyBpbiBhc2VxLiBPcHRpb25hbCB0eXBlXFxuICBhcmd1bWVudCBhY2NlcHRlZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIENsb2p1cmUuXCJcclxuIChbYXNlcV0gKGludG8tYXJyYXkgbmlsIGFzZXEpKVxyXG4gKFt0eXBlIGFzZXFdIChyZWR1Y2UgKGZuIFthIHhdICgucHVzaCBhIHgpIGEpIChhcnJheSkgYXNlcSkpKVxyXG4ifSB7OnN5bSAtaGFzaCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGhhc2ggY29kZSBvZiBvLiIsIDphcmdsaXN0cyAoW29dKX0sIDpwcm90b2NvbCBJSGFzaH0gezpzeW0gcXVhbGlmaWVkLXN5bWJvbD8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IGlzIGEgc3ltYm9sIHdpdGggYSBuYW1lc3BhY2UiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxyXG4gcXVhbGlmaWVkLXN5bWJvbD9cclxuIFwiUmV0dXJuIHRydWUgaWYgeCBpcyBhIHN5bWJvbCB3aXRoIGEgbmFtZXNwYWNlXCJcclxuIFt4XVxyXG4gKGJvb2xlYW4gKGFuZCAoc3ltYm9sPyB4KSAobmFtZXNwYWNlIHgpIHRydWUpKSlcclxuIn0gezpzeW0gLWRpc3NvYyEsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbmV3IHRyYW5zaWVudCBjb2xsZWN0aW9uIG9mIHRjb2xsIHdpdGhvdXQgdGhlIG1hcHBpbmcgZm9yIGtleS4iLCA6YXJnbGlzdHMgKFt0Y29sbCBrZXldKX0sIDpwcm90b2NvbCBJVHJhbnNpZW50TWFwfSB7OnN5bSBjaHVuay1idWZmZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbY2FwYWNpdHldKX0sIDpzb3VyY2UgIihkZWZuIGNodW5rLWJ1ZmZlciBbY2FwYWNpdHldIChDaHVua0J1ZmZlci4gKG1ha2UtYXJyYXkgY2FwYWNpdHkpIDApKVxyXG4ifSB7OnN5bSBzZXFhYmxlPywgOm1ldGEgezpkb2MgIlJldHVybiB0cnVlIGlmIHRoZSBzZXEgZnVuY3Rpb24gaXMgc3VwcG9ydGVkIGZvciBzIiwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHNlcWFibGU/XHJcbiBcIlJldHVybiB0cnVlIGlmIHRoZSBzZXEgZnVuY3Rpb24gaXMgc3VwcG9ydGVkIGZvciBzXCJcclxuIFtzXVxyXG4gKG9yIChuaWw/IHMpIChzYXRpc2ZpZXM/IElTZXFhYmxlIHMpIChhcnJheT8gcykgKHN0cmluZz8gcykpKVxyXG4ifSB7OnN5bSBzeW1ib2w/LCA6bWV0YSB7OmRvYyAiUmV0dXJuIHRydWUgaWYgeCBpcyBhIFN5bWJvbCIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIHN5bWJvbD8gXCJSZXR1cm4gdHJ1ZSBpZiB4IGlzIGEgU3ltYm9sXCIgW3hdIChpbnN0YW5jZT8gU3ltYm9sIHgpKVxyXG4ifSB7OnN5bSBtMy1oYXNoLXVuZW5jb2RlZC1jaGFycywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtpbl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIG0zLWhhc2gtdW5lbmNvZGVkLWNoYXJzXHJcbiBbaW5dXHJcbiAobGV0XHJcbiAgW2gxXHJcbiAgIChsb29wXHJcbiAgICBbaSAxIGgxIG0zLXNlZWRdXHJcbiAgICAoaWZcclxuICAgICAoPCBpICguLWxlbmd0aCBpbikpXHJcbiAgICAgKHJlY3VyXHJcbiAgICAgICgrIGkgMilcclxuICAgICAgKG0zLW1peC1IMVxyXG4gICAgICAgaDFcclxuICAgICAgIChtMy1taXgtSzFcclxuICAgICAgICAoYml0LW9yXHJcbiAgICAgICAgICguY2hhckNvZGVBdCBpbiAoZGVjIGkpKVxyXG4gICAgICAgICAoYml0LXNoaWZ0LWxlZnQgKC5jaGFyQ29kZUF0IGluIGkpIDE2KSkpKSlcclxuICAgICBoMSkpXHJcbiAgIGgxXHJcbiAgIChpZlxyXG4gICAgKD09IChiaXQtYW5kICguLWxlbmd0aCBpbikgMSkgMSlcclxuICAgIChiaXQteG9yIGgxIChtMy1taXgtSzEgKC5jaGFyQ29kZUF0IGluIChkZWMgKC4tbGVuZ3RoIGluKSkpKSlcclxuICAgIGgxKV1cclxuICAobTMtZm1peCBoMSAoaW11bCAyICguLWxlbmd0aCBpbikpKSkpXHJcbiJ9IHs6c3ltIHVuY2hlY2tlZC1jaGFyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIHVuY2hlY2tlZC1jaGFyIFt4XSB4KVxyXG4ifSB7OnN5bSBzeXN0ZW0tdGltZSwgOm1ldGEgezpkb2MgIlJldHVybnMgaGlnaGVzdCByZXNvbHV0aW9uIHRpbWUgb2ZmZXJlZCBieSBob3N0IGluIG1pbGxpc2Vjb25kcy4iLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBzeXN0ZW0tdGltZVxyXG4gXCJSZXR1cm5zIGhpZ2hlc3QgcmVzb2x1dGlvbiB0aW1lIG9mZmVyZWQgYnkgaG9zdCBpbiBtaWxsaXNlY29uZHMuXCJcclxuIFtdXHJcbiAoY29uZFxyXG4gIChhbmQgKGV4aXN0cz8ganMvcGVyZm9ybWFuY2UpIChub3QgKG5pbD8gKC4ganMvcGVyZm9ybWFuY2UgLW5vdykpKSlcclxuICAoLm5vdyBqcy9wZXJmb3JtYW5jZSlcclxuICAoYW5kIChleGlzdHM/IGpzL3Byb2Nlc3MpIChub3QgKG5pbD8gKC4ganMvcHJvY2VzcyAtaHJ0aW1lKSkpKVxyXG4gIChsZXRcclxuICAgW3QgKC5ocnRpbWUganMvcHJvY2VzcyldXHJcbiAgICgvICgrICgqIChhZ2V0IHQgMCkgMS4wRTkpIChhZ2V0IHQgMSkpIDEwMDAwMDAuMCkpXHJcbiAgOmVsc2VcclxuICAoLmdldFRpbWUgKGpzL0RhdGUuKSkpKVxyXG4ifSB7OnN5bSAtaW52b2tlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RoaXNdIFt0aGlzIGFdIFt0aGlzIGEgYl0gW3RoaXMgYSBiIGNdIFt0aGlzIGEgYiBjIGRdIFt0aGlzIGEgYiBjIGQgZV0gW3RoaXMgYSBiIGMgZCBlIGZdIFt0aGlzIGEgYiBjIGQgZSBmIGddIFt0aGlzIGEgYiBjIGQgZSBmIGcgaF0gW3RoaXMgYSBiIGMgZCBlIGYgZyBoIGldIFt0aGlzIGEgYiBjIGQgZSBmIGcgaCBpIGpdIFt0aGlzIGEgYiBjIGQgZSBmIGcgaCBpIGoga10gW3RoaXMgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGxdIFt0aGlzIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG1dIFt0aGlzIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbl0gW3RoaXMgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG9dIFt0aGlzIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHBdIFt0aGlzIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcV0gW3RoaXMgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHJdIFt0aGlzIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHNdIFt0aGlzIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdF0gW3RoaXMgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0IHJlc3RdKX0sIDpwcm90b2NvbCBJRm59IHs6c3ltIGNvbGw/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIHggc2F0aXNmaWVzIElDb2xsZWN0aW9uIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGNvbGw/XHJcbiBcIlJldHVybnMgdHJ1ZSBpZiB4IHNhdGlzZmllcyBJQ29sbGVjdGlvblwiXHJcbiBbeF1cclxuIChpZiAobmlsPyB4KSBmYWxzZSAoc2F0aXNmaWVzPyBJQ29sbGVjdGlvbiB4KSkpXHJcbiJ9IHs6c3ltIGdldC1pbiwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHZhbHVlIGluIGEgbmVzdGVkIGFzc29jaWF0aXZlIHN0cnVjdHVyZSxcbiAgd2hlcmUga3MgaXMgYSBzZXF1ZW5jZSBvZiBrZXlzLiBSZXR1cm5zIG5pbCBpZiB0aGUga2V5IGlzIG5vdCBwcmVzZW50LFxuICBvciB0aGUgbm90LWZvdW5kIHZhbHVlIGlmIHN1cHBsaWVkLiIsIDphcmdsaXN0cyBbW20ga3NdIFttIGtzIG5vdC1mb3VuZF1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGdldC1pblxyXG4gXCJSZXR1cm5zIHRoZSB2YWx1ZSBpbiBhIG5lc3RlZCBhc3NvY2lhdGl2ZSBzdHJ1Y3R1cmUsXFxuICB3aGVyZSBrcyBpcyBhIHNlcXVlbmNlIG9mIGtleXMuIFJldHVybnMgbmlsIGlmIHRoZSBrZXkgaXMgbm90IHByZXNlbnQsXFxuICBvciB0aGUgbm90LWZvdW5kIHZhbHVlIGlmIHN1cHBsaWVkLlwiXHJcbiB7OmFkZGVkIFwiMS4yXCIsIDpzdGF0aWMgdHJ1ZX1cclxuIChbbSBrc10gKHJlZHVjZSBnZXQgbSBrcykpXHJcbiAoW20ga3Mgbm90LWZvdW5kXVxyXG4gIChsb29wXHJcbiAgIFtzZW50aW5lbCBsb29rdXAtc2VudGluZWwgbSBtIGtzIChzZXEga3MpXVxyXG4gICAoaWYtbm90XHJcbiAgICAobmlsPyBrcylcclxuICAgIChsZXRcclxuICAgICBbbSAoZ2V0IG0gKGZpcnN0IGtzKSBzZW50aW5lbCldXHJcbiAgICAgKGlmXHJcbiAgICAgIChpZGVudGljYWw/IHNlbnRpbmVsIG0pXHJcbiAgICAgIG5vdC1mb3VuZFxyXG4gICAgICAocmVjdXIgc2VudGluZWwgbSAobmV4dCBrcykpKSlcclxuICAgIG0pKSkpXHJcbiJ9IHs6c3ltIGZuZXh0LCA6bWV0YSB7OmRvYyAiU2FtZSBhcyAoZmlyc3QgKG5leHQgeCkpIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm4gZm5leHQgXCJTYW1lIGFzIChmaXJzdCAobmV4dCB4KSlcIiBbY29sbF0gKGZpcnN0IChuZXh0IGNvbGwpKSlcclxuIn0gezpzeW0gSUxpc3QsIDptZXRhIHs6ZG9jICJNYXJrZXIgaW50ZXJmYWNlIGluZGljYXRpbmcgYSBwZXJzaXN0ZW50IGxpc3QifSwgOm1ldGhvZHMgKCl9IHs6c3ltIC12YWwsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgbWFwIGVudHJ5LiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpwcm90b2NvbCBJTWFwRW50cnl9IHs6c3ltIGJ5dGVzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGJ5dGVzIFt4XSB4KVxyXG4ifSB7OnN5bSAtc2VxLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHNlcSBvZiBvLCBvciBuaWwgaWYgbyBpcyBlbXB0eS4iLCA6YXJnbGlzdHMgKFtvXSl9LCA6cHJvdG9jb2wgSVNlcWFibGV9KSwgcGFyaW5mZXJpc2guY29yZSAoezpzeW0gcGFyc2UsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgaGllcmFyY2ljaGFsIChJIGNhbiBuZXZlciBzcGVsbCB0aGF0IGdvZGRhbW4gd29yZCkgdmVjdG9yIG9mIHR1cGxlc1xuICByZXByZXNlbnRpbmcgZWFjaCBkaXN0aW5jdCBDbG9qdXJlIHRva2VuIGZyb20gdGhlIGlucHV0IHN0cmluZy4gVGFrZXMgYW4gb3B0aW9uc1xuICBtYXAgdGhhdCBhbGxvd3MgeW91IHRvIGFwcGx5IHBhcmluZmVyaXNoIHZpYSB0aGUgOm1vZGUgb3B0aW9uICg6aW5kZW50LCA6cGFyZW4sIDpzbWFydCkuXG4gIE5vdGUgdGhhdCBpZiB5b3UgdXNlIHBhcmluZmVyLCB0aGUgcmV0dXJuIHZhbHVlIHdpbGwgaW5jbHVkZSBib3RoIHRoZSBpbnNlcnRlZCBhbmQgcmVtb3ZlZFxuICB0b2tlbnMuIFRoZSB0b2tlbnMgcGFyaW5mZXIgd2FudHMgdG8gcmVtb3ZlIHdpbGwgYmUgcmVtb3ZlZCBieSB0aGUgYGZsYXR0ZW5gIGZ1bmN0aW9uLiIsIDphcmdsaXN0cyBbW2lucHV0XSBbaW5wdXQgb3B0c11dfSwgOnNvdXJjZSAiKGRlZm5cclxuIHBhcnNlXHJcbiBcIlJldHVybnMgYSBoaWVyYXJjaWNoYWwgKEkgY2FuIG5ldmVyIHNwZWxsIHRoYXQgZ29kZGFtbiB3b3JkKSB2ZWN0b3Igb2YgdHVwbGVzXFxuICByZXByZXNlbnRpbmcgZWFjaCBkaXN0aW5jdCBDbG9qdXJlIHRva2VuIGZyb20gdGhlIGlucHV0IHN0cmluZy4gVGFrZXMgYW4gb3B0aW9uc1xcbiAgbWFwIHRoYXQgYWxsb3dzIHlvdSB0byBhcHBseSBwYXJpbmZlcmlzaCB2aWEgdGhlIDptb2RlIG9wdGlvbiAoOmluZGVudCwgOnBhcmVuLCA6c21hcnQpLlxcbiAgTm90ZSB0aGF0IGlmIHlvdSB1c2UgcGFyaW5mZXIsIHRoZSByZXR1cm4gdmFsdWUgd2lsbCBpbmNsdWRlIGJvdGggdGhlIGluc2VydGVkIGFuZCByZW1vdmVkXFxuICB0b2tlbnMuIFRoZSB0b2tlbnMgcGFyaW5mZXIgd2FudHMgdG8gcmVtb3ZlIHdpbGwgYmUgcmVtb3ZlZCBieSB0aGUgYGZsYXR0ZW5gIGZ1bmN0aW9uLlwiXHJcbiAoW2lucHV0XSAocGFyc2UgaW5wdXQge30pKVxyXG4gKFtpbnB1dCBvcHRzXVxyXG4gICh3aGVuXHJcbiAgIChhbmRcclxuICAgICg9IDpzbWFydCAoOm1vZGUgb3B0cykpXHJcbiAgICAob3IgKG5pbD8gKDpjdXJzb3ItbGluZSBvcHRzKSkgKG5pbD8gKDpjdXJzb3ItY29sdW1uIG9wdHMpKSkpXHJcbiAgICh0aHJvd1xyXG4gICAgKGV4LWluZm9cclxuICAgICBcIlNtYXJ0IG1vZGUgcmVxdWlyZXMgOmN1cnNvci1saW5lIGFuZCA6Y3Vyc29yLWNvbHVtblwiXHJcbiAgICAge30pKSlcclxuICAobGV0XHJcbiAgIFsqZXJyb3JcclxuICAgICh2b2xhdGlsZSEgbmlsKVxyXG4gICAgKmxpbmVcclxuICAgICh2b2xhdGlsZSEgMClcclxuICAgICpjb2x1bW5cclxuICAgICh2b2xhdGlsZSEgMClcclxuICAgICppbmRlbnRcclxuICAgICh2b2xhdGlsZSEgMClcclxuICAgIHRva2Vuc1xyXG4gICAgKGxvb3BcclxuICAgICBbaW5wdXQtc3RyIGlucHV0IHRva2VucyAodHJhbnNpZW50IFtdKSBsYXN0LXRva2VuIG5pbF1cclxuICAgICAoaWYtbGV0XHJcbiAgICAgIFtbZ3JvdXAtbmFtZSB0b2tlbl1cclxuICAgICAgIChzb21lXHJcbiAgICAgICAgKGZuXHJcbiAgICAgICAgIFtbZ3JvdXAtbmFtZSByZWdleF1dXHJcbiAgICAgICAgICh3aGVuLWxldFxyXG4gICAgICAgICAgW21hdGNoIChyZS1maW5kIHJlZ2V4IGlucHV0LXN0cildXHJcbiAgICAgICAgICBbZ3JvdXAtbmFtZSBtYXRjaF0pKVxyXG4gICAgICAgIHJlZ2V4ZXMpXVxyXG4gICAgICAobGV0XHJcbiAgICAgICBbdG9rZW5cclxuICAgICAgICAoaWZcclxuICAgICAgICAgKD0gZ3JvdXAtbmFtZSA6c3RyaW5nKVxyXG4gICAgICAgICAocGFyc2Utc3RyaW5nIHRva2VuIGlucHV0LXN0cilcclxuICAgICAgICAgdG9rZW4pXHJcbiAgICAgICAgdG9rZW4tZGF0YVxyXG4gICAgICAgIChyZWFkLXRva2VuXHJcbiAgICAgICAgIGdyb3VwLW5hbWVcclxuICAgICAgICAgdG9rZW5cclxuICAgICAgICAgKmVycm9yXHJcbiAgICAgICAgICpsaW5lXHJcbiAgICAgICAgICpjb2x1bW5cclxuICAgICAgICAgKmluZGVudFxyXG4gICAgICAgICBsYXN0LXRva2VuKV1cclxuICAgICAgIChyZWN1clxyXG4gICAgICAgIChzdWJzIGlucHV0LXN0ciAoY291bnQgdG9rZW4pKVxyXG4gICAgICAgIChjb25qISB0b2tlbnMgdG9rZW4tZGF0YSlcclxuICAgICAgICB0b2tlbi1kYXRhKSlcclxuICAgICAgKHBlcnNpc3RlbnQhIHRva2VucykpKVxyXG4gICAgb3B0c1xyXG4gICAgKGFzc29jIG9wdHMgOiplcnJvciAqZXJyb3IgOippbmRleCAodm9sYXRpbGUhIC0xKSlcclxuICAgIG9wdHNcclxuICAgIChjb25kLT4gb3B0cyBAKmVycm9yIChkaXNzb2MgOm1vZGUpKV1cclxuICAgKGxvb3BcclxuICAgIFtzdHJ1Y3R1cmVkLXRva2VucyBbXV1cclxuICAgIChpZi1sZXRcclxuICAgICBbdG9rZW4tZGF0YSAocmVhZC11c2VmdWwtdG9rZW4gdG9rZW5zIG9wdHMpXVxyXG4gICAgIChyZWN1ciAoY29uaiBzdHJ1Y3R1cmVkLXRva2VucyB0b2tlbi1kYXRhKSlcclxuICAgICAobGV0XHJcbiAgICAgIFt7OmtleXMgW21vZGVdfSBvcHRzXVxyXG4gICAgICAodmFyeS1tZXRhXHJcbiAgICAgICBzdHJ1Y3R1cmVkLXRva2Vuc1xyXG4gICAgICAgYXNzb2NcclxuICAgICAgIDptb2RlXHJcbiAgICAgICBtb2RlXHJcbiAgICAgICA6ZXJyb3I/XHJcbiAgICAgICAoc29tZT8gQCplcnJvcikpKSkpKSkpXHJcbiJ9IHs6c3ltIGZsYXR0ZW4sIDptZXRhIHs6ZG9jICJUYWtlcyB0aGUgcmVzdWx0IG9mIGBwYXJzZWAgYW5kIGZsYXR0ZW5zIGl0IGludG8gYSBzdHJpbmcuIE9wdGlvbmFsbHkgdGFrZXMgYVxuICBgbm9kZS1mbmAgd2hpY2ggd2lsbCByZWNlaXZlIGVhY2ggdG9rZW4gYW5kIHJldHVybiB3aGF0ZXZlciBpdCB3YW50cywgc28geW91IGNhblxuICBoYXZlIG1vcmUgY29udHJvbCBvZiB3aGF0IGZvcm1hdCBpdCBvdXRwdXRzIHRvLiIsIDphcmdsaXN0cyBbW3BhcnNlZC1jb2RlXSBbbm9kZS1mbiBwYXJzZWQtY29kZV1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGZsYXR0ZW5cclxuIFwiVGFrZXMgdGhlIHJlc3VsdCBvZiBgcGFyc2VgIGFuZCBmbGF0dGVucyBpdCBpbnRvIGEgc3RyaW5nLiBPcHRpb25hbGx5IHRha2VzIGFcXG4gIGBub2RlLWZuYCB3aGljaCB3aWxsIHJlY2VpdmUgZWFjaCB0b2tlbiBhbmQgcmV0dXJuIHdoYXRldmVyIGl0IHdhbnRzLCBzbyB5b3UgY2FuXFxuICBoYXZlIG1vcmUgY29udHJvbCBvZiB3aGF0IGZvcm1hdCBpdCBvdXRwdXRzIHRvLlwiXHJcbiAoW3BhcnNlZC1jb2RlXVxyXG4gICgtPj5cclxuICAgcGFyc2VkLWNvZGVcclxuICAgKGZsYXR0ZW4gKGZuKiBbcDFfXzQxNjYyI10gKC0+IHAxX180MTY2MiMgcmVzdCBzdHIvam9pbikpKVxyXG4gICBzdHIvam9pbikpXHJcbiAoW25vZGUtZm4gcGFyc2VkLWNvZGVdXHJcbiAgKGxldFxyXG4gICBbbVxyXG4gICAgKG1ldGEgcGFyc2VkLWNvZGUpXHJcbiAgICBkaXNhYmxlLXBhcmluZmVyP1xyXG4gICAgKGFuZCAoPSA6cGFyZW4gKDptb2RlIG0pKSAoOmVycm9yPyBtKSldXHJcbiAgIChyZWR1Y2VcclxuICAgIChmblxyXG4gICAgIFt2IGNvZGVdXHJcbiAgICAgKGludG8gdiAobm9kZS1pdGVyIG5vZGUtZm4gW10gY29kZSBkaXNhYmxlLXBhcmluZmVyPykpKVxyXG4gICAgW11cclxuICAgIHBhcnNlZC1jb2RlKSkpKVxyXG4ifSB7OnN5bSBkaWZmLCA6bWV0YSB7OmRvYyAiVGFrZXMgdGhlIHJlc3VsdCBvZiBgcGFyc2VgIGFuZCByZXR1cm5zIGEgdmVjdG9yIG9mIG1hcHMgZGVzY3JpYmluZ1xuICBlYWNoIGluc2VydGlvbiBvciByZW1vdmFsIG1hZGUgYnkgcGFyaW5mZXJpc2guIiwgOmFyZ2xpc3RzIChbcGFyc2VkLWNvZGVdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBkaWZmXHJcbiBcIlRha2VzIHRoZSByZXN1bHQgb2YgYHBhcnNlYCBhbmQgcmV0dXJucyBhIHZlY3RvciBvZiBtYXBzIGRlc2NyaWJpbmdcXG4gIGVhY2ggaW5zZXJ0aW9uIG9yIHJlbW92YWwgbWFkZSBieSBwYXJpbmZlcmlzaC5cIlxyXG4gW3BhcnNlZC1jb2RlXVxyXG4gKGxldFxyXG4gIFsqbGluZVxyXG4gICAodm9sYXRpbGUhIDApXHJcbiAgICpjb2x1bW5cclxuICAgKHZvbGF0aWxlISAwKVxyXG4gICAqZGlmZlxyXG4gICAodm9sYXRpbGUhIFtdKVxyXG4gICBtXHJcbiAgIChtZXRhIHBhcnNlZC1jb2RlKVxyXG4gICBkaXNhYmxlLXBhcmluZmVyP1xyXG4gICAoYW5kICg9IDpwYXJlbiAoOm1vZGUgbSkpICg6ZXJyb3I/IG0pKV1cclxuICAod2hlbi1ub3RcclxuICAgZGlzYWJsZS1wYXJpbmZlcj9cclxuICAgKHJ1biEgKHBhcnRpYWwgZGlmZi1ub2RlICpsaW5lICpjb2x1bW4gKmRpZmYgbmlsKSBwYXJzZWQtY29kZSkpXHJcbiAgQCpkaWZmKSlcclxuIn0pLCBjbGpzLnRvb2xzLnJlYWRlci5yZWFkZXItdHlwZXMgKHs6c3ltIGluZGV4aW5nLXB1c2gtYmFjay1yZWFkZXIsIDptZXRhIHs6ZG9jICJDcmVhdGVzIGFuIEluZGV4aW5nUHVzaGJhY2tSZWFkZXIgZnJvbSBhIGdpdmVuIHN0cmluZyBvciBQdXNoYmFja1JlYWRlciIsIDphcmdsaXN0cyBbW3Mtb3ItcmRyXSBbcy1vci1yZHIgYnVmLWxlbl0gW3Mtb3ItcmRyIGJ1Zi1sZW4gZmlsZS1uYW1lXV19LCA6c291cmNlICIoZGVmblxyXG4gaW5kZXhpbmctcHVzaC1iYWNrLXJlYWRlclxyXG4gXCJDcmVhdGVzIGFuIEluZGV4aW5nUHVzaGJhY2tSZWFkZXIgZnJvbSBhIGdpdmVuIHN0cmluZyBvciBQdXNoYmFja1JlYWRlclwiXHJcbiAoW3Mtb3ItcmRyXSAoaW5kZXhpbmctcHVzaC1iYWNrLXJlYWRlciBzLW9yLXJkciAxKSlcclxuIChbcy1vci1yZHIgYnVmLWxlbl0gKGluZGV4aW5nLXB1c2gtYmFjay1yZWFkZXIgcy1vci1yZHIgYnVmLWxlbiBuaWwpKVxyXG4gKFtzLW9yLXJkciBidWYtbGVuIGZpbGUtbmFtZV1cclxuICAoSW5kZXhpbmdQdXNoYmFja1JlYWRlci5cclxuICAgKGlmXHJcbiAgICAoc3RyaW5nPyBzLW9yLXJkcilcclxuICAgIChzdHJpbmctcHVzaC1iYWNrLXJlYWRlciBzLW9yLXJkciBidWYtbGVuKVxyXG4gICAgcy1vci1yZHIpXHJcbiAgIDFcclxuICAgMVxyXG4gICB0cnVlXHJcbiAgIG5pbFxyXG4gICAwXHJcbiAgIGZpbGUtbmFtZSkpKVxyXG4ifSB7OnN5bSBsb2ctc291cmNlKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZWFkZXIgZl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGxvZy1zb3VyY2UqXHJcbiBbcmVhZGVyIGZdXHJcbiAobGV0XHJcbiAgW2J1ZmZlciAoOmJ1ZmZlciBAKC4tZnJhbWVzIHJlYWRlcikpXVxyXG4gICh0cnlcclxuICAgKHN3YXAhXHJcbiAgICAoLi1mcmFtZXMgcmVhZGVyKVxyXG4gICAgdXBkYXRlLWluXHJcbiAgICBbOm9mZnNldF1cclxuICAgIGNvbmpcclxuICAgICguZ2V0TGVuZ3RoIGJ1ZmZlcikpXHJcbiAgIChsZXRcclxuICAgIFtyZXQgKGYpXVxyXG4gICAgKGlmXHJcbiAgICAgKGltcGxlbWVudHM/IElNZXRhIHJldClcclxuICAgICAobWVyZ2UtbWV0YSByZXQgezpzb3VyY2UgKHBlZWstc291cmNlLWxvZyBAKC4tZnJhbWVzIHJlYWRlcikpfSlcclxuICAgICByZXQpKVxyXG4gICAoZmluYWxseSAoc3dhcCEgKC4tZnJhbWVzIHJlYWRlcikgdXBkYXRlLWluIFs6b2Zmc2V0XSByZXN0KSkpKSlcclxuIn0gezpzeW0gbWVyZ2UtbWV0YSwgOm1ldGEgezpkb2MgIlJldHVybnMgYW4gb2JqZWN0IG9mIHRoZSBzYW1lIHR5cGUgYW5kIHZhbHVlIGFzIGBvYmpgLCB3aXRoIGl0c1xubWV0YWRhdGEgbWVyZ2VkIG92ZXIgYG1gLiIsIDphcmdsaXN0cyAoW29iaiBtXSl9LCA6c291cmNlICIoZGVmblxyXG4gbWVyZ2UtbWV0YVxyXG4gXCJSZXR1cm5zIGFuIG9iamVjdCBvZiB0aGUgc2FtZSB0eXBlIGFuZCB2YWx1ZSBhcyBgb2JqYCwgd2l0aCBpdHNcXG5tZXRhZGF0YSBtZXJnZWQgb3ZlciBgbWAuXCJcclxuIFtvYmogbV1cclxuIChsZXRcclxuICBbb3JpZy1tZXRhIChtZXRhIG9iaildXHJcbiAgKHdpdGgtbWV0YSBvYmogKG1lcmdlIG0gKGRpc3NvYyBvcmlnLW1ldGEgOnNvdXJjZSkpKSkpXHJcbiJ9IHs6c3ltIFJlYWRlciwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKHBlZWstY2hhciByZWFkLWNoYXIpfSB7OnN5bSBzb3VyY2UtbG9nZ2luZy1wdXNoLWJhY2stcmVhZGVyLCA6bWV0YSB7OmRvYyAiQ3JlYXRlcyBhIFNvdXJjZUxvZ2dpbmdQdXNoYmFja1JlYWRlciBmcm9tIGEgZ2l2ZW4gc3RyaW5nIG9yIFB1c2hiYWNrUmVhZGVyIiwgOmFyZ2xpc3RzIFtbcy1vci1yZHJdIFtzLW9yLXJkciBidWYtbGVuXSBbcy1vci1yZHIgYnVmLWxlbiBmaWxlLW5hbWVdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBzb3VyY2UtbG9nZ2luZy1wdXNoLWJhY2stcmVhZGVyXHJcbiBcIkNyZWF0ZXMgYSBTb3VyY2VMb2dnaW5nUHVzaGJhY2tSZWFkZXIgZnJvbSBhIGdpdmVuIHN0cmluZyBvciBQdXNoYmFja1JlYWRlclwiXHJcbiAoW3Mtb3ItcmRyXSAoc291cmNlLWxvZ2dpbmctcHVzaC1iYWNrLXJlYWRlciBzLW9yLXJkciAxKSlcclxuIChbcy1vci1yZHIgYnVmLWxlbl1cclxuICAoc291cmNlLWxvZ2dpbmctcHVzaC1iYWNrLXJlYWRlciBzLW9yLXJkciBidWYtbGVuIG5pbCkpXHJcbiAoW3Mtb3ItcmRyIGJ1Zi1sZW4gZmlsZS1uYW1lXVxyXG4gIChTb3VyY2VMb2dnaW5nUHVzaGJhY2tSZWFkZXIuXHJcbiAgIChpZlxyXG4gICAgKHN0cmluZz8gcy1vci1yZHIpXHJcbiAgICAoc3RyaW5nLXB1c2gtYmFjay1yZWFkZXIgcy1vci1yZHIgYnVmLWxlbilcclxuICAgIHMtb3ItcmRyKVxyXG4gICAxXHJcbiAgIDFcclxuICAgdHJ1ZVxyXG4gICBuaWxcclxuICAgMFxyXG4gICBmaWxlLW5hbWVcclxuICAgKGF0b20gezpidWZmZXIgKFN0cmluZ0J1ZmZlci4pLCA6b2Zmc2V0ICcoMCl9KSkpKVxyXG4ifSB7OnN5bSB1bnJlYWQsIDptZXRhIHs6ZG9jICJQdXNoZXMgYmFjayBhIHNpbmdsZSBjaGFyYWN0ZXIgb24gdG8gdGhlIHN0cmVhbSIsIDphcmdsaXN0cyAoW3JlYWRlciBjaF0pfSwgOnByb3RvY29sIElQdXNoYmFja1JlYWRlcn0gezpzeW0gcGVlay1jaGFyLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbmV4dCBjaGFyIGZyb20gdGhlIFJlYWRlciB3aXRob3V0IHJlbW92aW5nIGl0IGZyb20gdGhlIHJlYWRlciBzdHJlYW0iLCA6YXJnbGlzdHMgKFtyZWFkZXJdKX0sIDpwcm90b2NvbCBSZWFkZXJ9IHs6c3ltIElQdXNoYmFja1JlYWRlciwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKHVucmVhZCl9IHs6c3ltIGluZGV4aW5nLXJlYWRlcj8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgdGhlIHJlYWRlciBzYXRpc2ZpZXMgSW5kZXhpbmdSZWFkZXIiLCA6YXJnbGlzdHMgKFtyZHJdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBpbmRleGluZy1yZWFkZXI/XHJcbiBcIlJldHVybnMgdHJ1ZSBpZiB0aGUgcmVhZGVyIHNhdGlzZmllcyBJbmRleGluZ1JlYWRlclwiXHJcbiBbcmRyXVxyXG4gKGltcGxlbWVudHM/IEluZGV4aW5nUmVhZGVyIHJkcikpXHJcbiJ9IHs6c3ltIHN0cmluZy1yZWFkZXIsIDptZXRhIHs6ZG9jICJDcmVhdGVzIGEgU3RyaW5nUmVhZGVyIGZyb20gYSBnaXZlbiBzdHJpbmciLCA6YXJnbGlzdHMgW1tzXV19LCA6c291cmNlICIoZGVmblxyXG4gc3RyaW5nLXJlYWRlclxyXG4gXCJDcmVhdGVzIGEgU3RyaW5nUmVhZGVyIGZyb20gYSBnaXZlbiBzdHJpbmdcIlxyXG4gKFtzXSAoU3RyaW5nUmVhZGVyLiBzIChjb3VudCBzKSAwKSkpXHJcbiJ9IHs6c3ltIHJlYWQtY2hhciwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG5leHQgY2hhciBmcm9tIHRoZSBSZWFkZXIsIG5pbCBpZiB0aGUgZW5kIG9mIHN0cmVhbSBoYXMgYmVlbiByZWFjaGVkIiwgOmFyZ2xpc3RzIChbcmVhZGVyXSl9LCA6cHJvdG9jb2wgUmVhZGVyfSB7OnN5bSBnZXQtY29sdW1uLW51bWJlciwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGNvbHVtbiBudW1iZXIgb2YgdGhlIG5leHQgY2hhcmFjdGVyIHRvIGJlIHJlYWQgZnJvbSB0aGUgc3RyZWFtIiwgOmFyZ2xpc3RzIChbcmVhZGVyXSl9LCA6cHJvdG9jb2wgSW5kZXhpbmdSZWFkZXJ9IHs6c3ltIGdldC1maWxlLW5hbWUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBmaWxlIG5hbWUgdGhlIHJlYWRlciBpcyByZWFkaW5nIGZyb20sIG9yIG5pbCIsIDphcmdsaXN0cyAoW3JlYWRlcl0pfSwgOnByb3RvY29sIEluZGV4aW5nUmVhZGVyfSB7OnN5bSByZWFkLWxpbmUsIDptZXRhIHs6ZG9jICJSZWFkcyBhIGxpbmUgZnJvbSB0aGUgcmVhZGVyIG9yIGZyb20gKmluKiBpZiBubyByZWFkZXIgaXMgc3BlY2lmaWVkIiwgOmFyZ2xpc3RzIFtbcmRyXV19LCA6c291cmNlICIoZGVmblxyXG4gcmVhZC1saW5lXHJcbiBcIlJlYWRzIGEgbGluZSBmcm9tIHRoZSByZWFkZXIgb3IgZnJvbSAqaW4qIGlmIG5vIHJlYWRlciBpcyBzcGVjaWZpZWRcIlxyXG4gKFtyZHJdXHJcbiAgKGxvb3BcclxuICAgW2MgKHJlYWQtY2hhciByZHIpIHMgKFN0cmluZ0J1ZmZlci4pXVxyXG4gICAoaWYgKG5ld2xpbmU/IGMpIChzdHIgcykgKHJlY3VyIChyZWFkLWNoYXIgcmRyKSAoLmFwcGVuZCBzIGMpKSkpKSlcclxuIn0gezpzeW0gc3RyaW5nLXB1c2gtYmFjay1yZWFkZXIsIDptZXRhIHs6ZG9jICJDcmVhdGVzIGEgUHVzaGJhY2tSZWFkZXIgZnJvbSBhIGdpdmVuIHN0cmluZyIsIDphcmdsaXN0cyBbW3NdIFtzIGJ1Zi1sZW5dXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBzdHJpbmctcHVzaC1iYWNrLXJlYWRlclxyXG4gXCJDcmVhdGVzIGEgUHVzaGJhY2tSZWFkZXIgZnJvbSBhIGdpdmVuIHN0cmluZ1wiXHJcbiAoW3NdIChzdHJpbmctcHVzaC1iYWNrLXJlYWRlciBzIDEpKVxyXG4gKFtzIGJ1Zi1sZW5dXHJcbiAgKFB1c2hiYWNrUmVhZGVyLlxyXG4gICAoc3RyaW5nLXJlYWRlciBzKVxyXG4gICAob2JqZWN0LWFycmF5IGJ1Zi1sZW4pXHJcbiAgIGJ1Zi1sZW5cclxuICAgYnVmLWxlbikpKVxyXG4ifSB7OnN5bSBsaW5lLXN0YXJ0PywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiByZHIgaXMgYW4gSW5kZXhpbmdSZWFkZXIgYW5kIHRoZSBjdXJyZW50IGNoYXIgc3RhcnRzIGEgbmV3IGxpbmUiLCA6YXJnbGlzdHMgKFtyZHJdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBsaW5lLXN0YXJ0P1xyXG4gXCJSZXR1cm5zIHRydWUgaWYgcmRyIGlzIGFuIEluZGV4aW5nUmVhZGVyIGFuZCB0aGUgY3VycmVudCBjaGFyIHN0YXJ0cyBhIG5ldyBsaW5lXCJcclxuIFtyZHJdXHJcbiAod2hlbiAoaW5kZXhpbmctcmVhZGVyPyByZHIpICg9PSAxIChnZXQtY29sdW1uLW51bWJlciByZHIpKSkpXHJcbiJ9IHs6c3ltIHNvdXJjZS1sb2dnaW5nLXJlYWRlcj8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyXSl9LCA6c291cmNlICIoZGVmblxyXG4gc291cmNlLWxvZ2dpbmctcmVhZGVyP1xyXG4gW3Jkcl1cclxuIChpbnN0YW5jZT8gU291cmNlTG9nZ2luZ1B1c2hiYWNrUmVhZGVyIHJkcikpXHJcbiJ9IHs6c3ltIEluZGV4aW5nUmVhZGVyLCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAoZ2V0LWNvbHVtbi1udW1iZXIgZ2V0LWZpbGUtbmFtZSBnZXQtbGluZS1udW1iZXIpfSB7OnN5bSBub2RlLXJlYWRhYmxlLXB1c2gtYmFjay1yZWFkZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmVhZGFibGVdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBub2RlLXJlYWRhYmxlLXB1c2gtYmFjay1yZWFkZXJcclxuIFtyZWFkYWJsZV1cclxuIChQdXNoYmFja1JlYWRlci5cclxuICAoTm9kZVJlYWRhYmxlUmVhZGVyLiByZWFkYWJsZSBuaWwpXHJcbiAgKG9iamVjdC1hcnJheSAxKVxyXG4gIDFcclxuICAxKSlcclxuIn0gezpzeW0gZ2V0LWxpbmUtbnVtYmVyLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbGluZSBudW1iZXIgb2YgdGhlIG5leHQgY2hhcmFjdGVyIHRvIGJlIHJlYWQgZnJvbSB0aGUgc3RyZWFtIiwgOmFyZ2xpc3RzIChbcmVhZGVyXSl9LCA6cHJvdG9jb2wgSW5kZXhpbmdSZWFkZXJ9KSwgY2xqcy5lbnYgKHs6c3ltICpjb21waWxlciosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpjb21waWxlciogbmlsKVxyXG4ifSB7OnN5bSBkZWZhdWx0LWNvbXBpbGVyLWVudiosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbb3B0aW9uc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGRlZmF1bHQtY29tcGlsZXItZW52KlxyXG4gW29wdGlvbnNdXHJcbiAobWVyZ2VcclxuICB7OmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyB7J2NsanMudXNlciB7Om5hbWUgJ2NsanMudXNlcn19LFxyXG4gICA6Y2xqcy5hbmFseXplci9jb25zdGFudC10YWJsZSB7fSxcclxuICAgOmNsanMuYW5hbHl6ZXIvZGF0YS1yZWFkZXJzIHt9LFxyXG4gICA6Y2xqcy5hbmFseXplci9leHRlcm5zXHJcbiAgICM/KDpjbGogKGV4dGVybnMvZXh0ZXJucy1tYXAgKDpleHRlcm5zLXNvdXJjZXMgb3B0aW9ucykpIDpjbGpzIG5pbCksXHJcbiAgIDpvcHRpb25zIG9wdGlvbnN9XHJcbiAgIz9AKDpjbGogWyh3aGVuIChhbmQgKD0gOm5vZGVqcyAoOnRhcmdldCBvcHRpb25zKSkgKG5vdCAoZmFsc2U/ICg6bm9kZWpzLXJ0IG9wdGlvbnMpKSkpIHs6bm9kZS1tb2R1bGUtaW5kZXggZGVwcy9uYXRpdmUtbm9kZS1tb2R1bGVzfSkgezpqcy1kZXBlbmRlbmN5LWluZGV4IChkZXBzL2pzLWRlcGVuZGVuY3ktaW5kZXggb3B0aW9ucyl9XSkpKVxyXG4ifSB7OnN5bSBkZWZhdWx0LWNvbXBpbGVyLWVudiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1tdIFtvcHRpb25zXV19LCA6c291cmNlICIoZGVmblxyXG4gZGVmYXVsdC1jb21waWxlci1lbnZcclxuIChbXSAoZGVmYXVsdC1jb21waWxlci1lbnYge30pKVxyXG4gKFtvcHRpb25zXSAoYXRvbSAoZGVmYXVsdC1jb21waWxlci1lbnYqIG9wdGlvbnMpKSkpXHJcbiJ9KSwgcGFyZW4tc291cC5jb25zb2xlICh7OnN5bSBjcmVhdGUtY29uc29sZS1oaXN0b3J5LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGNyZWF0ZS1jb25zb2xlLWhpc3RvcnlcclxuIFtdXHJcbiAoYXRvbSB7OmN1cnJlbnQtbGluZSAwLCA6bGluZXMgW10sIDpzdGFydCAwfSkpXHJcbiJ9IHs6c3ltIGdldC1jb25zb2xlLXN0YXJ0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoWypjb25zb2xlLWhpc3RvcnldKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBnZXQtY29uc29sZS1zdGFydFxyXG4gWypjb25zb2xlLWhpc3RvcnldXHJcbiAoLT4gKmNvbnNvbGUtaGlzdG9yeSBkZXJlZiA6c3RhcnQpKVxyXG4ifSB7OnN5bSB1cGRhdGUtY29uc29sZS1zdGFydCEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbKmNvbnNvbGUtaGlzdG9yeSBzdGFydF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHVwZGF0ZS1jb25zb2xlLXN0YXJ0IVxyXG4gWypjb25zb2xlLWhpc3Rvcnkgc3RhcnRdXHJcbiAoc3dhcCEgKmNvbnNvbGUtaGlzdG9yeSBhc3NvYyA6c3RhcnQgc3RhcnQpKVxyXG4ifSB7OnN5bSB1cGRhdGUtY29uc29sZS1oaXN0b3J5ISwgOm1ldGEgezpkb2MgIlVwZGF0ZXMgdGhlIGNvbnNvbGUgaGlzdG9yeSBhdG9tLiIsIDphcmdsaXN0cyAoWypjb25zb2xlLWhpc3RvcnkgbGluZV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHVwZGF0ZS1jb25zb2xlLWhpc3RvcnkhXHJcbiBcIlVwZGF0ZXMgdGhlIGNvbnNvbGUgaGlzdG9yeSBhdG9tLlwiXHJcbiBbKmNvbnNvbGUtaGlzdG9yeSBsaW5lXVxyXG4gKGxldFxyXG4gIFt7OmtleXMgW2N1cnJlbnQtbGluZSBsaW5lc119IEAqY29uc29sZS1oaXN0b3J5XVxyXG4gIChzd2FwIVxyXG4gICAqY29uc29sZS1oaXN0b3J5XHJcbiAgIChmblxyXG4gICAgW2NvbnNvbGUtaGlzdG9yeV1cclxuICAgIChsZXRcclxuICAgICBbbGluZXNcclxuICAgICAgKGlmXHJcbiAgICAgICAoYW5kIChzZXEgbGluZSkgKG5vdD0gbGluZSAobGFzdCBsaW5lcykpKVxyXG4gICAgICAgKGNvbmogbGluZXMgbGluZSlcclxuICAgICAgIGxpbmVzKV1cclxuICAgICAoYXNzb2NcclxuICAgICAgY29uc29sZS1oaXN0b3J5XHJcbiAgICAgIDpjdXJyZW50LWxpbmVcclxuICAgICAgKGNvdW50IGxpbmVzKVxyXG4gICAgICA6bGluZXNcclxuICAgICAgbGluZXMpKSkpKSlcclxuIn0gezpzeW0gZ2V0LXByZXZpb3VzLWxpbmUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBwcmV2aW91cyBsaW5lIGZyb20gY29uc29sZS1oaXN0b3J5LCBvciBuaWwgaWYgdGhlcmUgaXMgbm9uZS4iLCA6YXJnbGlzdHMgKFsqY29uc29sZS1oaXN0b3J5XSl9LCA6c291cmNlICIoZGVmblxyXG4gZ2V0LXByZXZpb3VzLWxpbmVcclxuIFwiUmV0dXJucyB0aGUgcHJldmlvdXMgbGluZSBmcm9tIGNvbnNvbGUtaGlzdG9yeSwgb3IgbmlsIGlmIHRoZXJlIGlzIG5vbmUuXCJcclxuIFsqY29uc29sZS1oaXN0b3J5XVxyXG4gKGxldFxyXG4gIFt7OmtleXMgW2N1cnJlbnQtbGluZSBsaW5lc119IEAqY29uc29sZS1oaXN0b3J5XVxyXG4gIChnZXQgbGluZXMgKGRlYyBjdXJyZW50LWxpbmUpKSkpXHJcbiJ9IHs6c3ltIGdldC1uZXh0LWxpbmUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBuZXh0IGxpbmUgZnJvbSBjb25zb2xlLWhpc3RvcnksIG9yIG5pbCBpZiB0aGVyZSBpcyBub25lLiIsIDphcmdsaXN0cyAoWypjb25zb2xlLWhpc3RvcnldKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBnZXQtbmV4dC1saW5lXHJcbiBcIlJldHVybnMgdGhlIG5leHQgbGluZSBmcm9tIGNvbnNvbGUtaGlzdG9yeSwgb3IgbmlsIGlmIHRoZXJlIGlzIG5vbmUuXCJcclxuIFsqY29uc29sZS1oaXN0b3J5XVxyXG4gKGxldFxyXG4gIFt7OmtleXMgW2N1cnJlbnQtbGluZSBsaW5lc119IEAqY29uc29sZS1oaXN0b3J5XVxyXG4gIChnZXQgbGluZXMgKGluYyBjdXJyZW50LWxpbmUpKSkpXHJcbiJ9IHs6c3ltIHVwISwgOm1ldGEgezpkb2MgIkNoYW5nZXMgdGhlIGN1cnJlbnQgbGluZSBhbmQgcmV0dXJucyB0aGUgcHJldmlvdXMgbGluZSBmcm9tIGNvbnNvbGUtaGlzdG9yeSwgb3IgbmlsIGlmIHRoZXJlIGlzIG5vbmUuIiwgOmFyZ2xpc3RzIChbKmNvbnNvbGUtaGlzdG9yeV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHVwIVxyXG4gXCJDaGFuZ2VzIHRoZSBjdXJyZW50IGxpbmUgYW5kIHJldHVybnMgdGhlIHByZXZpb3VzIGxpbmUgZnJvbSBjb25zb2xlLWhpc3RvcnksIG9yIG5pbCBpZiB0aGVyZSBpcyBub25lLlwiXHJcbiBbKmNvbnNvbGUtaGlzdG9yeV1cclxuIChsZXRcclxuICBbbGluZSAoZ2V0LXByZXZpb3VzLWxpbmUgKmNvbnNvbGUtaGlzdG9yeSldXHJcbiAgKGlmXHJcbiAgIGxpbmVcclxuICAgKHN3YXAhICpjb25zb2xlLWhpc3RvcnkgdXBkYXRlIDpjdXJyZW50LWxpbmUgZGVjKVxyXG4gICAoc3dhcCEgKmNvbnNvbGUtaGlzdG9yeSBhc3NvYyA6Y3VycmVudC1saW5lIC0xKSlcclxuICBsaW5lKSlcclxuIn0gezpzeW0gZG93biEsIDptZXRhIHs6ZG9jICJDaGFuZ2VzIHRoZSBjdXJyZW50IGxpbmUgYW5kIHJldHVybnMgdGhlIG5leHQgbGluZSBmcm9tIGNvbnNvbGUtaGlzdG9yeSwgb3IgbmlsIGlmIHRoZXJlIGlzIG5vbmUuIiwgOmFyZ2xpc3RzIChbKmNvbnNvbGUtaGlzdG9yeV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGRvd24hXHJcbiBcIkNoYW5nZXMgdGhlIGN1cnJlbnQgbGluZSBhbmQgcmV0dXJucyB0aGUgbmV4dCBsaW5lIGZyb20gY29uc29sZS1oaXN0b3J5LCBvciBuaWwgaWYgdGhlcmUgaXMgbm9uZS5cIlxyXG4gWypjb25zb2xlLWhpc3RvcnldXHJcbiAobGV0XHJcbiAgW2xpbmUgKGdldC1uZXh0LWxpbmUgKmNvbnNvbGUtaGlzdG9yeSldXHJcbiAgKGlmXHJcbiAgIGxpbmVcclxuICAgKHN3YXAhICpjb25zb2xlLWhpc3RvcnkgdXBkYXRlIDpjdXJyZW50LWxpbmUgaW5jKVxyXG4gICAoc3dhcCFcclxuICAgICpjb25zb2xlLWhpc3RvcnlcclxuICAgIGFzc29jXHJcbiAgICA6Y3VycmVudC1saW5lXHJcbiAgICAoLT4gQCpjb25zb2xlLWhpc3RvcnkgOmxpbmVzIGNvdW50KSkpXHJcbiAgbGluZSkpXHJcbiJ9KSwgY2xqcy5jb3JlLmFzeW5jICh7OnN5bSBQdWIsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzIChzdWIqIHVuc3ViKiB1bnN1Yi1hbGwqKX0gezpzeW0gcmVkdWNlLCA6bWV0YSB7OmRvYyAiZiBzaG91bGQgYmUgYSBmdW5jdGlvbiBvZiAyIGFyZ3VtZW50cy4gUmV0dXJucyBhIGNoYW5uZWwgY29udGFpbmluZ1xuICB0aGUgc2luZ2xlIHJlc3VsdCBvZiBhcHBseWluZyBmIHRvIGluaXQgYW5kIHRoZSBmaXJzdCBpdGVtIGZyb20gdGhlXG4gIGNoYW5uZWwsIHRoZW4gYXBwbHlpbmcgZiB0byB0aGF0IHJlc3VsdCBhbmQgdGhlIDJuZCBpdGVtLCBldGMuIElmXG4gIHRoZSBjaGFubmVsIGNsb3NlcyB3aXRob3V0IHlpZWxkaW5nIGl0ZW1zLCByZXR1cm5zIGluaXQgYW5kIGYgaXMgbm90XG4gIGNhbGxlZC4gY2ggbXVzdCBjbG9zZSBiZWZvcmUgcmVkdWNlIHByb2R1Y2VzIGEgcmVzdWx0LiIsIDphcmdsaXN0cyAoW2YgaW5pdCBjaF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlZHVjZVxyXG4gXCJmIHNob3VsZCBiZSBhIGZ1bmN0aW9uIG9mIDIgYXJndW1lbnRzLiBSZXR1cm5zIGEgY2hhbm5lbCBjb250YWluaW5nXFxuICB0aGUgc2luZ2xlIHJlc3VsdCBvZiBhcHBseWluZyBmIHRvIGluaXQgYW5kIHRoZSBmaXJzdCBpdGVtIGZyb20gdGhlXFxuICBjaGFubmVsLCB0aGVuIGFwcGx5aW5nIGYgdG8gdGhhdCByZXN1bHQgYW5kIHRoZSAybmQgaXRlbSwgZXRjLiBJZlxcbiAgdGhlIGNoYW5uZWwgY2xvc2VzIHdpdGhvdXQgeWllbGRpbmcgaXRlbXMsIHJldHVybnMgaW5pdCBhbmQgZiBpcyBub3RcXG4gIGNhbGxlZC4gY2ggbXVzdCBjbG9zZSBiZWZvcmUgcmVkdWNlIHByb2R1Y2VzIGEgcmVzdWx0LlwiXHJcbiBbZiBpbml0IGNoXVxyXG4gKGdvLWxvb3BcclxuICBbcmV0IGluaXRdXHJcbiAgKGxldFxyXG4gICBbdiAoPCEgY2gpXVxyXG4gICAoaWZcclxuICAgIChuaWw/IHYpXHJcbiAgICByZXRcclxuICAgIChsZXQgW3JldCcgKGYgcmV0IHYpXSAoaWYgKHJlZHVjZWQ/IHJldCcpIEByZXQnIChyZWN1ciByZXQnKSkpKSkpKVxyXG4ifSB7OnN5bSByZW1vdmU+LCA6bWV0YSB7OmRvYyAiRGVwcmVjYXRlZCAtIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSByZW1vdmVkLiBVc2UgdHJhbnNkdWNlciBpbnN0ZWFkIiwgOmFyZ2xpc3RzIChbcCBjaF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlbW92ZT5cclxuIFwiRGVwcmVjYXRlZCAtIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSByZW1vdmVkLiBVc2UgdHJhbnNkdWNlciBpbnN0ZWFkXCJcclxuIFtwIGNoXVxyXG4gKGZpbHRlcj4gKGNvbXBsZW1lbnQgcCkgY2gpKVxyXG4ifSB7OnN5bSB0aW1lb3V0LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGNoYW5uZWwgdGhhdCB3aWxsIGNsb3NlIGFmdGVyIG1zZWNzIiwgOmFyZ2xpc3RzIChbbXNlY3NdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB0aW1lb3V0XHJcbiBcIlJldHVybnMgYSBjaGFubmVsIHRoYXQgd2lsbCBjbG9zZSBhZnRlciBtc2Vjc1wiXHJcbiBbbXNlY3NdXHJcbiAodGltZXJzL3RpbWVvdXQgbXNlY3MpKVxyXG4ifSB7OnN5bSB1bnN1YiosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcCB2IGNoXSl9LCA6cHJvdG9jb2wgUHVifSB7OnN5bSBhZG1peCosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbSBjaF0pfSwgOnByb3RvY29sIE1peH0gezpzeW0gdW5taXgqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW20gY2hdKX0sIDpwcm90b2NvbCBNaXh9IHs6c3ltIG1peCwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYW5kIHJldHVybnMgYSBtaXggb2Ygb25lIG9yIG1vcmUgaW5wdXQgY2hhbm5lbHMgd2hpY2ggd2lsbFxuICBiZSBwdXQgb24gdGhlIHN1cHBsaWVkIG91dCBjaGFubmVsLiBJbnB1dCBzb3VyY2VzIGNhbiBiZSBhZGRlZCB0b1xuICB0aGUgbWl4IHdpdGggJ2FkbWl4JywgYW5kIHJlbW92ZWQgd2l0aCAndW5taXgnLiBBIG1peCBzdXBwb3J0c1xuICBzb2xvaW5nLCBtdXRpbmcgYW5kIHBhdXNpbmcgbXVsdGlwbGUgaW5wdXRzIGF0b21pY2FsbHkgdXNpbmdcbiAgJ3RvZ2dsZScsIGFuZCBjYW4gc29sbyB1c2luZyBlaXRoZXIgbXV0aW5nIG9yIHBhdXNpbmcgYXMgZGV0ZXJtaW5lZFxuICBieSAnc29sby1tb2RlJy5cblxuICBFYWNoIGNoYW5uZWwgY2FuIGhhdmUgemVybyBvciBtb3JlIGJvb2xlYW4gbW9kZXMgc2V0IHZpYSAndG9nZ2xlJzpcblxuICA6c29sbyAtIHdoZW4gdHJ1ZSwgb25seSB0aGlzIChvbmQgb3RoZXIgc29sb2VkKSBjaGFubmVsKHMpIHdpbGwgYXBwZWFyXG4gICAgICAgICAgaW4gdGhlIG1peCBvdXRwdXQgY2hhbm5lbC4gOm11dGUgYW5kIDpwYXVzZSBzdGF0ZXMgb2Ygc29sb2VkXG4gICAgICAgICAgY2hhbm5lbHMgYXJlIGlnbm9yZWQuIElmIHNvbG8tbW9kZSBpcyA6bXV0ZSwgbm9uLXNvbG9lZFxuICAgICAgICAgIGNoYW5uZWxzIGFyZSBtdXRlZCwgaWYgOnBhdXNlLCBub24tc29sb2VkIGNoYW5uZWxzIGFyZVxuICAgICAgICAgIHBhdXNlZC5cblxuICA6bXV0ZSAtIG11dGVkIGNoYW5uZWxzIHdpbGwgaGF2ZSB0aGVpciBjb250ZW50cyBjb25zdW1lZCBidXQgbm90IGluY2x1ZGVkIGluIHRoZSBtaXhcbiAgOnBhdXNlIC0gcGF1c2VkIGNoYW5uZWxzIHdpbGwgbm90IGhhdmUgdGhlaXIgY29udGVudHMgY29uc3VtZWQgKGFuZCB0aHVzIGFsc28gbm90IGluY2x1ZGVkIGluIHRoZSBtaXgpXG4iLCA6YXJnbGlzdHMgKFtvdXRdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBtaXhcclxuIFwiQ3JlYXRlcyBhbmQgcmV0dXJucyBhIG1peCBvZiBvbmUgb3IgbW9yZSBpbnB1dCBjaGFubmVscyB3aGljaCB3aWxsXFxuICBiZSBwdXQgb24gdGhlIHN1cHBsaWVkIG91dCBjaGFubmVsLiBJbnB1dCBzb3VyY2VzIGNhbiBiZSBhZGRlZCB0b1xcbiAgdGhlIG1peCB3aXRoICdhZG1peCcsIGFuZCByZW1vdmVkIHdpdGggJ3VubWl4Jy4gQSBtaXggc3VwcG9ydHNcXG4gIHNvbG9pbmcsIG11dGluZyBhbmQgcGF1c2luZyBtdWx0aXBsZSBpbnB1dHMgYXRvbWljYWxseSB1c2luZ1xcbiAgJ3RvZ2dsZScsIGFuZCBjYW4gc29sbyB1c2luZyBlaXRoZXIgbXV0aW5nIG9yIHBhdXNpbmcgYXMgZGV0ZXJtaW5lZFxcbiAgYnkgJ3NvbG8tbW9kZScuXFxuXFxuICBFYWNoIGNoYW5uZWwgY2FuIGhhdmUgemVybyBvciBtb3JlIGJvb2xlYW4gbW9kZXMgc2V0IHZpYSAndG9nZ2xlJzpcXG5cXG4gIDpzb2xvIC0gd2hlbiB0cnVlLCBvbmx5IHRoaXMgKG9uZCBvdGhlciBzb2xvZWQpIGNoYW5uZWwocykgd2lsbCBhcHBlYXJcXG4gICAgICAgICAgaW4gdGhlIG1peCBvdXRwdXQgY2hhbm5lbC4gOm11dGUgYW5kIDpwYXVzZSBzdGF0ZXMgb2Ygc29sb2VkXFxuICAgICAgICAgIGNoYW5uZWxzIGFyZSBpZ25vcmVkLiBJZiBzb2xvLW1vZGUgaXMgOm11dGUsIG5vbi1zb2xvZWRcXG4gICAgICAgICAgY2hhbm5lbHMgYXJlIG11dGVkLCBpZiA6cGF1c2UsIG5vbi1zb2xvZWQgY2hhbm5lbHMgYXJlXFxuICAgICAgICAgIHBhdXNlZC5cXG5cXG4gIDptdXRlIC0gbXV0ZWQgY2hhbm5lbHMgd2lsbCBoYXZlIHRoZWlyIGNvbnRlbnRzIGNvbnN1bWVkIGJ1dCBub3QgaW5jbHVkZWQgaW4gdGhlIG1peFxcbiAgOnBhdXNlIC0gcGF1c2VkIGNoYW5uZWxzIHdpbGwgbm90IGhhdmUgdGhlaXIgY29udGVudHMgY29uc3VtZWQgKGFuZCB0aHVzIGFsc28gbm90IGluY2x1ZGVkIGluIHRoZSBtaXgpXFxuXCJcclxuIFtvdXRdXHJcbiAobGV0XHJcbiAgW2NzXHJcbiAgIChhdG9tIHt9KVxyXG4gICBzb2xvLW1vZGVzXHJcbiAgICN7OnBhdXNlIDptdXRlfVxyXG4gICBhdHRyc1xyXG4gICAoY29uaiBzb2xvLW1vZGVzIDpzb2xvKVxyXG4gICBzb2xvLW1vZGVcclxuICAgKGF0b20gOm11dGUpXHJcbiAgIGNoYW5nZVxyXG4gICAoY2hhbilcclxuICAgY2hhbmdlZFxyXG4gICAoZm4qIFtdIChwdXQhIGNoYW5nZSB0cnVlKSlcclxuICAgcGlja1xyXG4gICAoZm5cclxuICAgIFthdHRyIGNoc11cclxuICAgIChyZWR1Y2Uta3YgKGZuIFtyZXQgYyB2XSAoaWYgKGF0dHIgdikgKGNvbmogcmV0IGMpIHJldCkpICN7fSBjaHMpKVxyXG4gICBjYWxjLXN0YXRlXHJcbiAgIChmblxyXG4gICAgW11cclxuICAgIChsZXRcclxuICAgICBbY2hzXHJcbiAgICAgIEBjc1xyXG4gICAgICBtb2RlXHJcbiAgICAgIEBzb2xvLW1vZGVcclxuICAgICAgc29sb3NcclxuICAgICAgKHBpY2sgOnNvbG8gY2hzKVxyXG4gICAgICBwYXVzZXNcclxuICAgICAgKHBpY2sgOnBhdXNlIGNocyldXHJcbiAgICAgezpzb2xvcyBzb2xvcyxcclxuICAgICAgOm11dGVzIChwaWNrIDptdXRlIGNocyksXHJcbiAgICAgIDpyZWFkc1xyXG4gICAgICAoY29ualxyXG4gICAgICAgKGlmXHJcbiAgICAgICAgKGFuZCAoPSBtb2RlIDpwYXVzZSkgKG5vdCAoZW1wdHk/IHNvbG9zKSkpXHJcbiAgICAgICAgKHZlYyBzb2xvcylcclxuICAgICAgICAodmVjIChyZW1vdmUgcGF1c2VzIChrZXlzIGNocykpKSlcclxuICAgICAgIGNoYW5nZSl9KSlcclxuICAgbVxyXG4gICAocmVpZnlcclxuICAgIE11eFxyXG4gICAgKG11eGNoKiBbX10gb3V0KVxyXG4gICAgTWl4XHJcbiAgICAoYWRtaXgqIFtfIGNoXSAoc3dhcCEgY3MgYXNzb2MgY2gge30pIChjaGFuZ2VkKSlcclxuICAgICh1bm1peCogW18gY2hdIChzd2FwISBjcyBkaXNzb2MgY2gpIChjaGFuZ2VkKSlcclxuICAgICh1bm1peC1hbGwqIFtfXSAocmVzZXQhIGNzIHt9KSAoY2hhbmdlZCkpXHJcbiAgICAodG9nZ2xlKlxyXG4gICAgIFtfIHN0YXRlLW1hcF1cclxuICAgICAoc3dhcCEgY3MgKHBhcnRpYWwgbWVyZ2Utd2l0aCBjbGpzLmNvcmUvbWVyZ2UpIHN0YXRlLW1hcClcclxuICAgICAoY2hhbmdlZCkpXHJcbiAgICAoc29sby1tb2RlKlxyXG4gICAgIFtfIG1vZGVdXHJcbiAgICAgKGFzc2VydFxyXG4gICAgICAoc29sby1tb2RlcyBtb2RlKVxyXG4gICAgICAoc3RyIFwibW9kZSBtdXN0IGJlIG9uZSBvZjogXCIgc29sby1tb2RlcykpXHJcbiAgICAgKHJlc2V0ISBzb2xvLW1vZGUgbW9kZSlcclxuICAgICAoY2hhbmdlZCkpKV1cclxuICAoZ28tbG9vcFxyXG4gICBbezprZXlzIFtzb2xvcyBtdXRlcyByZWFkc10sIDphcyBzdGF0ZX0gKGNhbGMtc3RhdGUpXVxyXG4gICAobGV0XHJcbiAgICBbW3YgY10gKGFsdHMhIHJlYWRzKV1cclxuICAgIChpZlxyXG4gICAgIChvciAobmlsPyB2KSAoPSBjIGNoYW5nZSkpXHJcbiAgICAgKGRvICh3aGVuIChuaWw/IHYpIChzd2FwISBjcyBkaXNzb2MgYykpIChyZWN1ciAoY2FsYy1zdGF0ZSkpKVxyXG4gICAgIChpZlxyXG4gICAgICAob3IgKHNvbG9zIGMpIChhbmQgKGVtcHR5PyBzb2xvcykgKG5vdCAobXV0ZXMgYykpKSlcclxuICAgICAgKHdoZW4gKD4hIG91dCB2KSAocmVjdXIgc3RhdGUpKVxyXG4gICAgICAocmVjdXIgc3RhdGUpKSkpKVxyXG4gIG0pKVxyXG4ifSB7OnN5bSBwdWIsIDptZXRhIHs6ZG9jICJDcmVhdGVzIGFuZCByZXR1cm5zIGEgcHViKGxpY2F0aW9uKSBvZiB0aGUgc3VwcGxpZWQgY2hhbm5lbCxcbiAgcGFydGl0aW9uZWQgaW50byB0b3BpY3MgYnkgdGhlIHRvcGljLWZuLiB0b3BpYy1mbiB3aWxsIGJlIGFwcGxpZWQgdG9cbiAgZWFjaCB2YWx1ZSBvbiB0aGUgY2hhbm5lbCBhbmQgdGhlIHJlc3VsdCB3aWxsIGRldGVybWluZSB0aGUgJ3RvcGljJ1xuICBvbiB3aGljaCB0aGF0IHZhbHVlIHdpbGwgYmUgcHV0LiBDaGFubmVscyBjYW4gYmUgc3Vic2NyaWJlZCB0b1xuICByZWNlaXZlIGNvcGllcyBvZiB0b3BpY3MgdXNpbmcgJ3N1YicsIGFuZCB1bnN1YnNjcmliZWQgdXNpbmdcbiAgJ3Vuc3ViJy4gRWFjaCB0b3BpYyB3aWxsIGJlIGhhbmRsZWQgYnkgYW4gaW50ZXJuYWwgbXVsdCBvbiBhXG4gIGRlZGljYXRlZCBjaGFubmVsLiBCeSBkZWZhdWx0IHRoZXNlIGludGVybmFsIGNoYW5uZWxzIGFyZVxuICB1bmJ1ZmZlcmVkLCBidXQgYSBidWYtZm4gY2FuIGJlIHN1cHBsaWVkIHdoaWNoLCBnaXZlbiBhIHRvcGljLFxuICBjcmVhdGVzIGEgYnVmZmVyIHdpdGggZGVzaXJlZCBwcm9wZXJ0aWVzLlxuXG4gIEVhY2ggaXRlbSBpcyBkaXN0cmlidXRlZCB0byBhbGwgc3VicyBpbiBwYXJhbGxlbCBhbmQgc3luY2hyb25vdXNseSxcbiAgaS5lLiBlYWNoIHN1YiBtdXN0IGFjY2VwdCBiZWZvcmUgdGhlIG5leHQgaXRlbSBpcyBkaXN0cmlidXRlZC4gVXNlXG4gIGJ1ZmZlcmluZy93aW5kb3dpbmcgdG8gcHJldmVudCBzbG93IHN1YnMgZnJvbSBob2xkaW5nIHVwIHRoZSBwdWIuXG5cbiAgSXRlbXMgcmVjZWl2ZWQgd2hlbiB0aGVyZSBhcmUgbm8gbWF0Y2hpbmcgc3VicyBnZXQgZHJvcHBlZC5cblxuICBOb3RlIHRoYXQgaWYgYnVmLWZucyBhcmUgdXNlZCB0aGVuIGVhY2ggdG9waWMgaXMgaGFuZGxlZFxuICBhc3luY2hyb25vdXNseSwgaS5lLiBpZiBhIGNoYW5uZWwgaXMgc3Vic2NyaWJlZCB0byBtb3JlIHRoYW4gb25lXG4gIHRvcGljIGl0IHNob3VsZCBub3QgZXhwZWN0IHRoZW0gdG8gYmUgaW50ZXJsZWF2ZWQgaWRlbnRpY2FsbHkgd2l0aFxuICB0aGUgc291cmNlLiIsIDphcmdsaXN0cyBbW2NoIHRvcGljLWZuXSBbY2ggdG9waWMtZm4gYnVmLWZuXV19LCA6c291cmNlICIoZGVmblxyXG4gcHViXHJcbiBcIkNyZWF0ZXMgYW5kIHJldHVybnMgYSBwdWIobGljYXRpb24pIG9mIHRoZSBzdXBwbGllZCBjaGFubmVsLFxcbiAgcGFydGl0aW9uZWQgaW50byB0b3BpY3MgYnkgdGhlIHRvcGljLWZuLiB0b3BpYy1mbiB3aWxsIGJlIGFwcGxpZWQgdG9cXG4gIGVhY2ggdmFsdWUgb24gdGhlIGNoYW5uZWwgYW5kIHRoZSByZXN1bHQgd2lsbCBkZXRlcm1pbmUgdGhlICd0b3BpYydcXG4gIG9uIHdoaWNoIHRoYXQgdmFsdWUgd2lsbCBiZSBwdXQuIENoYW5uZWxzIGNhbiBiZSBzdWJzY3JpYmVkIHRvXFxuICByZWNlaXZlIGNvcGllcyBvZiB0b3BpY3MgdXNpbmcgJ3N1YicsIGFuZCB1bnN1YnNjcmliZWQgdXNpbmdcXG4gICd1bnN1YicuIEVhY2ggdG9waWMgd2lsbCBiZSBoYW5kbGVkIGJ5IGFuIGludGVybmFsIG11bHQgb24gYVxcbiAgZGVkaWNhdGVkIGNoYW5uZWwuIEJ5IGRlZmF1bHQgdGhlc2UgaW50ZXJuYWwgY2hhbm5lbHMgYXJlXFxuICB1bmJ1ZmZlcmVkLCBidXQgYSBidWYtZm4gY2FuIGJlIHN1cHBsaWVkIHdoaWNoLCBnaXZlbiBhIHRvcGljLFxcbiAgY3JlYXRlcyBhIGJ1ZmZlciB3aXRoIGRlc2lyZWQgcHJvcGVydGllcy5cXG5cXG4gIEVhY2ggaXRlbSBpcyBkaXN0cmlidXRlZCB0byBhbGwgc3VicyBpbiBwYXJhbGxlbCBhbmQgc3luY2hyb25vdXNseSxcXG4gIGkuZS4gZWFjaCBzdWIgbXVzdCBhY2NlcHQgYmVmb3JlIHRoZSBuZXh0IGl0ZW0gaXMgZGlzdHJpYnV0ZWQuIFVzZVxcbiAgYnVmZmVyaW5nL3dpbmRvd2luZyB0byBwcmV2ZW50IHNsb3cgc3VicyBmcm9tIGhvbGRpbmcgdXAgdGhlIHB1Yi5cXG5cXG4gIEl0ZW1zIHJlY2VpdmVkIHdoZW4gdGhlcmUgYXJlIG5vIG1hdGNoaW5nIHN1YnMgZ2V0IGRyb3BwZWQuXFxuXFxuICBOb3RlIHRoYXQgaWYgYnVmLWZucyBhcmUgdXNlZCB0aGVuIGVhY2ggdG9waWMgaXMgaGFuZGxlZFxcbiAgYXN5bmNocm9ub3VzbHksIGkuZS4gaWYgYSBjaGFubmVsIGlzIHN1YnNjcmliZWQgdG8gbW9yZSB0aGFuIG9uZVxcbiAgdG9waWMgaXQgc2hvdWxkIG5vdCBleHBlY3QgdGhlbSB0byBiZSBpbnRlcmxlYXZlZCBpZGVudGljYWxseSB3aXRoXFxuICB0aGUgc291cmNlLlwiXHJcbiAoW2NoIHRvcGljLWZuXSAocHViIGNoIHRvcGljLWZuIChjb25zdGFudGx5IG5pbCkpKVxyXG4gKFtjaCB0b3BpYy1mbiBidWYtZm5dXHJcbiAgKGxldFxyXG4gICBbbXVsdHNcclxuICAgIChhdG9tIHt9KVxyXG4gICAgZW5zdXJlLW11bHRcclxuICAgIChmblxyXG4gICAgIFt0b3BpY11cclxuICAgICAob3JcclxuICAgICAgKGdldCBAbXVsdHMgdG9waWMpXHJcbiAgICAgIChnZXRcclxuICAgICAgIChzd2FwIVxyXG4gICAgICAgIG11bHRzXHJcbiAgICAgICAgKGZuKlxyXG4gICAgICAgICBbcDFfXzQxMjg1I11cclxuICAgICAgICAgKGlmXHJcbiAgICAgICAgICAocDFfXzQxMjg1IyB0b3BpYylcclxuICAgICAgICAgIHAxX180MTI4NSNcclxuICAgICAgICAgIChhc3NvYyBwMV9fNDEyODUjIHRvcGljIChtdWx0IChjaGFuIChidWYtZm4gdG9waWMpKSkpKSkpXHJcbiAgICAgICB0b3BpYykpKVxyXG4gICAgcFxyXG4gICAgKHJlaWZ5XHJcbiAgICAgTXV4XHJcbiAgICAgKG11eGNoKiBbX10gY2gpXHJcbiAgICAgUHViXHJcbiAgICAgKHN1YipcclxuICAgICAgW3AgdG9waWMgY2ggY2xvc2U/XVxyXG4gICAgICAobGV0IFttIChlbnN1cmUtbXVsdCB0b3BpYyldICh0YXAgbSBjaCBjbG9zZT8pKSlcclxuICAgICAodW5zdWIqXHJcbiAgICAgIFtwIHRvcGljIGNoXVxyXG4gICAgICAod2hlbi1sZXQgW20gKGdldCBAbXVsdHMgdG9waWMpXSAodW50YXAgbSBjaCkpKVxyXG4gICAgICh1bnN1Yi1hbGwqIFtfXSAocmVzZXQhIG11bHRzIHt9KSlcclxuICAgICAodW5zdWItYWxsKiBbXyB0b3BpY10gKHN3YXAhIG11bHRzIGRpc3NvYyB0b3BpYykpKV1cclxuICAgKGdvLWxvb3BcclxuICAgIFtdXHJcbiAgICAobGV0XHJcbiAgICAgW3ZhbCAoPCEgY2gpXVxyXG4gICAgIChpZlxyXG4gICAgICAobmlsPyB2YWwpXHJcbiAgICAgIChkb3NlcSBbbSAodmFscyBAbXVsdHMpXSAoY2xvc2UhIChtdXhjaCogbSkpKVxyXG4gICAgICAobGV0XHJcbiAgICAgICBbdG9waWMgKHRvcGljLWZuIHZhbCkgbSAoZ2V0IEBtdWx0cyB0b3BpYyldXHJcbiAgICAgICAod2hlblxyXG4gICAgICAgIG1cclxuICAgICAgICAod2hlbi1ub3QgKD4hIChtdXhjaCogbSkgdmFsKSAoc3dhcCEgbXVsdHMgZGlzc29jIHRvcGljKSkpXHJcbiAgICAgICAocmVjdXIpKSkpKVxyXG4gICBwKSkpXHJcbiJ9IHs6c3ltIHRha2UsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgY2hhbm5lbCB0aGF0IHdpbGwgcmV0dXJuLCBhdCBtb3N0LCBuIGl0ZW1zIGZyb20gY2guIEFmdGVyIG4gaXRlbXNcbiAgIGhhdmUgYmVlbiByZXR1cm5lZCwgb3IgY2ggaGFzIGJlZW4gY2xvc2VkLCB0aGUgcmV0dXJuIGNoYW5lbCB3aWxsIGNsb3NlLlxuXG4gIFRoZSBvdXRwdXQgY2hhbm5lbCBpcyB1bmJ1ZmZlcmVkIGJ5IGRlZmF1bHQsIHVubGVzcyBidWYtb3ItbiBpcyBnaXZlbi4iLCA6YXJnbGlzdHMgW1tuIGNoXSBbbiBjaCBidWYtb3Itbl1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIHRha2VcclxuIFwiUmV0dXJucyBhIGNoYW5uZWwgdGhhdCB3aWxsIHJldHVybiwgYXQgbW9zdCwgbiBpdGVtcyBmcm9tIGNoLiBBZnRlciBuIGl0ZW1zXFxuICAgaGF2ZSBiZWVuIHJldHVybmVkLCBvciBjaCBoYXMgYmVlbiBjbG9zZWQsIHRoZSByZXR1cm4gY2hhbmVsIHdpbGwgY2xvc2UuXFxuXFxuICBUaGUgb3V0cHV0IGNoYW5uZWwgaXMgdW5idWZmZXJlZCBieSBkZWZhdWx0LCB1bmxlc3MgYnVmLW9yLW4gaXMgZ2l2ZW4uXCJcclxuIChbbiBjaF0gKHRha2UgbiBjaCBuaWwpKVxyXG4gKFtuIGNoIGJ1Zi1vci1uXVxyXG4gIChsZXRcclxuICAgW291dCAoY2hhbiBidWYtb3ItbildXHJcbiAgIChnb1xyXG4gICAgKGxvb3BcclxuICAgICBbeCAwXVxyXG4gICAgICh3aGVuXHJcbiAgICAgICg8IHggbilcclxuICAgICAgKGxldFxyXG4gICAgICAgW3YgKDwhIGNoKV1cclxuICAgICAgICh3aGVuIChub3QgKG5pbD8gdikpICg+ISBvdXQgdikgKHJlY3VyIChpbmMgeCkpKSkpKVxyXG4gICAgKGNsb3NlISBvdXQpKVxyXG4gICBvdXQpKSlcclxuIn0gezpzeW0gdW5zdWItYWxsKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwXSBbcCB2XSl9LCA6cHJvdG9jb2wgUHVifSB7OnN5bSA8ISwgOm1ldGEgezpkb2MgInRha2VzIGEgdmFsIGZyb20gcG9ydC4gTXVzdCBiZSBjYWxsZWQgaW5zaWRlIGEgKGdvIC4uLikgYmxvY2suIFdpbGxcbiAgcmV0dXJuIG5pbCBpZiBjbG9zZWQuIFdpbGwgcGFyayBpZiBub3RoaW5nIGlzIGF2YWlsYWJsZS5cbiAgUmV0dXJucyB0cnVlIHVubGVzcyBwb3J0IGlzIGFscmVhZHkgY2xvc2VkIiwgOmFyZ2xpc3RzIChbcG9ydF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIDwhXHJcbiBcInRha2VzIGEgdmFsIGZyb20gcG9ydC4gTXVzdCBiZSBjYWxsZWQgaW5zaWRlIGEgKGdvIC4uLikgYmxvY2suIFdpbGxcXG4gIHJldHVybiBuaWwgaWYgY2xvc2VkLiBXaWxsIHBhcmsgaWYgbm90aGluZyBpcyBhdmFpbGFibGUuXFxuICBSZXR1cm5zIHRydWUgdW5sZXNzIHBvcnQgaXMgYWxyZWFkeSBjbG9zZWRcIlxyXG4gW3BvcnRdXHJcbiAodGhyb3cgKGpzL0Vycm9yLiBcIjwhIHVzZWQgbm90IGluIChnbyAuLi4pIGJsb2NrXCIpKSlcclxuIn0gezpzeW0gbWFwLCA6bWV0YSB7OmRvYyAiVGFrZXMgYSBmdW5jdGlvbiBhbmQgYSBjb2xsZWN0aW9uIG9mIHNvdXJjZSBjaGFubmVscywgYW5kIHJldHVybnMgYVxuICBjaGFubmVsIHdoaWNoIGNvbnRhaW5zIHRoZSB2YWx1ZXMgcHJvZHVjZWQgYnkgYXBwbHlpbmcgZiB0byB0aGUgc2V0XG4gIG9mIGZpcnN0IGl0ZW1zIHRha2VuIGZyb20gZWFjaCBzb3VyY2UgY2hhbm5lbCwgZm9sbG93ZWQgYnkgYXBwbHlpbmdcbiAgZiB0byB0aGUgc2V0IG9mIHNlY29uZCBpdGVtcyBmcm9tIGVhY2ggY2hhbm5lbCwgdW50aWwgYW55IG9uZSBvZiB0aGVcbiAgY2hhbm5lbHMgaXMgY2xvc2VkLCBhdCB3aGljaCBwb2ludCB0aGUgb3V0cHV0IGNoYW5uZWwgd2lsbCBiZVxuICBjbG9zZWQuIFRoZSByZXR1cm5lZCBjaGFubmVsIHdpbGwgYmUgdW5idWZmZXJlZCBieSBkZWZhdWx0LCBvciBhXG4gIGJ1Zi1vci1uIGNhbiBiZSBzdXBwbGllZCIsIDphcmdsaXN0cyBbW2YgY2hzXSBbZiBjaHMgYnVmLW9yLW5dXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBtYXBcclxuIFwiVGFrZXMgYSBmdW5jdGlvbiBhbmQgYSBjb2xsZWN0aW9uIG9mIHNvdXJjZSBjaGFubmVscywgYW5kIHJldHVybnMgYVxcbiAgY2hhbm5lbCB3aGljaCBjb250YWlucyB0aGUgdmFsdWVzIHByb2R1Y2VkIGJ5IGFwcGx5aW5nIGYgdG8gdGhlIHNldFxcbiAgb2YgZmlyc3QgaXRlbXMgdGFrZW4gZnJvbSBlYWNoIHNvdXJjZSBjaGFubmVsLCBmb2xsb3dlZCBieSBhcHBseWluZ1xcbiAgZiB0byB0aGUgc2V0IG9mIHNlY29uZCBpdGVtcyBmcm9tIGVhY2ggY2hhbm5lbCwgdW50aWwgYW55IG9uZSBvZiB0aGVcXG4gIGNoYW5uZWxzIGlzIGNsb3NlZCwgYXQgd2hpY2ggcG9pbnQgdGhlIG91dHB1dCBjaGFubmVsIHdpbGwgYmVcXG4gIGNsb3NlZC4gVGhlIHJldHVybmVkIGNoYW5uZWwgd2lsbCBiZSB1bmJ1ZmZlcmVkIGJ5IGRlZmF1bHQsIG9yIGFcXG4gIGJ1Zi1vci1uIGNhbiBiZSBzdXBwbGllZFwiXHJcbiAoW2YgY2hzXSAobWFwIGYgY2hzIG5pbCkpXHJcbiAoW2YgY2hzIGJ1Zi1vci1uXVxyXG4gIChsZXRcclxuICAgW2Noc1xyXG4gICAgKHZlYyBjaHMpXHJcbiAgICBvdXRcclxuICAgIChjaGFuIGJ1Zi1vci1uKVxyXG4gICAgY250XHJcbiAgICAoY291bnQgY2hzKVxyXG4gICAgcmV0c1xyXG4gICAgKG9iamVjdC1hcnJheSBjbnQpXHJcbiAgICBkY2hhblxyXG4gICAgKGNoYW4gMSlcclxuICAgIGRjdHJcclxuICAgIChhdG9tIG5pbClcclxuICAgIGRvbmVcclxuICAgIChtYXB2XHJcbiAgICAgKGZuXHJcbiAgICAgIFtpXVxyXG4gICAgICAoZm5cclxuICAgICAgIFtyZXRdXHJcbiAgICAgICAoYXNldCByZXRzIGkgcmV0KVxyXG4gICAgICAgKHdoZW4gKHplcm8/IChzd2FwISBkY3RyIGRlYykpIChwdXQhIGRjaGFuICguc2xpY2UgcmV0cyAwKSkpKSlcclxuICAgICAocmFuZ2UgY250KSldXHJcbiAgIChnby1sb29wXHJcbiAgICBbXVxyXG4gICAgKHJlc2V0ISBkY3RyIGNudClcclxuICAgIChkb3RpbWVzXHJcbiAgICAgW2kgY250XVxyXG4gICAgICh0cnlcclxuICAgICAgKHRha2UhIChjaHMgaSkgKGRvbmUgaSkpXHJcbiAgICAgIChjYXRjaCBqcy9PYmplY3QgZSAoc3dhcCEgZGN0ciBkZWMpKSkpXHJcbiAgICAobGV0XHJcbiAgICAgW3JldHMgKDwhIGRjaGFuKV1cclxuICAgICAoaWZcclxuICAgICAgKHNvbWUgbmlsPyByZXRzKVxyXG4gICAgICAoY2xvc2UhIG91dClcclxuICAgICAgKGRvICg+ISBvdXQgKGFwcGx5IGYgcmV0cykpIChyZWN1cikpKSkpXHJcbiAgIG91dCkpKVxyXG4ifSB7OnN5bSBNdXgsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzIChtdXhjaCopfSB7OnN5bSBtYXBjYXQ+LCA6bWV0YSB7OmRvYyAiRGVwcmVjYXRlZCAtIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSByZW1vdmVkLiBVc2UgdHJhbnNkdWNlciBpbnN0ZWFkIiwgOmFyZ2xpc3RzIFtbZiBvdXRdIFtmIG91dCBidWYtb3Itbl1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIG1hcGNhdD5cclxuIFwiRGVwcmVjYXRlZCAtIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSByZW1vdmVkLiBVc2UgdHJhbnNkdWNlciBpbnN0ZWFkXCJcclxuIChbZiBvdXRdIChtYXBjYXQ+IGYgb3V0IG5pbCkpXHJcbiAoW2Ygb3V0IGJ1Zi1vci1uXSAobGV0IFtpbiAoY2hhbiBidWYtb3ItbildIChtYXBjYXQqIGYgaW4gb3V0KSBpbikpKVxyXG4ifSB7OnN5bSBidWZmZXIsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgZml4ZWQgYnVmZmVyIG9mIHNpemUgbi4gV2hlbiBmdWxsLCBwdXRzIHdpbGwgYmxvY2svcGFyay4iLCA6YXJnbGlzdHMgKFtuXSl9LCA6c291cmNlICIoZGVmblxyXG4gYnVmZmVyXHJcbiBcIlJldHVybnMgYSBmaXhlZCBidWZmZXIgb2Ygc2l6ZSBuLiBXaGVuIGZ1bGwsIHB1dHMgd2lsbCBibG9jay9wYXJrLlwiXHJcbiBbbl1cclxuIChidWZmZXJzL2ZpeGVkLWJ1ZmZlciBuKSlcclxuIn0gezpzeW0gY2xvc2UhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW3BvcnRdXX0sIDpzb3VyY2UgIihkZWZuIGNsb3NlISAoW3BvcnRdIChpbXBsL2Nsb3NlISBwb3J0KSkpXHJcbiJ9IHs6c3ltIG9mZmVyISwgOm1ldGEgezpkb2MgIlB1dHMgYSB2YWwgaW50byBwb3J0IGlmIGl0J3MgcG9zc2libGUgdG8gZG8gc28gaW1tZWRpYXRlbHkuXG4gIG5pbCB2YWx1ZXMgYXJlIG5vdCBhbGxvd2VkLiBOZXZlciBibG9ja3MuIFJldHVybnMgdHJ1ZSBpZiBvZmZlciBzdWNjZWVkcy4iLCA6YXJnbGlzdHMgKFtwb3J0IHZhbF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIG9mZmVyIVxyXG4gXCJQdXRzIGEgdmFsIGludG8gcG9ydCBpZiBpdCdzIHBvc3NpYmxlIHRvIGRvIHNvIGltbWVkaWF0ZWx5LlxcbiAgbmlsIHZhbHVlcyBhcmUgbm90IGFsbG93ZWQuIE5ldmVyIGJsb2Nrcy4gUmV0dXJucyB0cnVlIGlmIG9mZmVyIHN1Y2NlZWRzLlwiXHJcbiBbcG9ydCB2YWxdXHJcbiAobGV0XHJcbiAgW3JldCAoaW1wbC9wdXQhIHBvcnQgdmFsIChmbi1oYW5kbGVyIG5vcCBmYWxzZSkpXVxyXG4gICh3aGVuIHJldCBAcmV0KSkpXHJcbiJ9IHs6c3ltIGNoYW4sIDptZXRhIHs6ZG9jICJDcmVhdGVzIGEgY2hhbm5lbCB3aXRoIGFuIG9wdGlvbmFsIGJ1ZmZlciwgYW4gb3B0aW9uYWwgdHJhbnNkdWNlciAobGlrZSAobWFwIGYpLFxuICAoZmlsdGVyIHApIGV0YyBvciBhIGNvbXBvc2l0aW9uIHRoZXJlb2YpLCBhbmQgYW4gb3B0aW9uYWwgZXhjZXB0aW9uIGhhbmRsZXIuXG4gIElmIGJ1Zi1vci1uIGlzIGEgbnVtYmVyLCB3aWxsIGNyZWF0ZSBhbmQgdXNlIGEgZml4ZWQgYnVmZmVyIG9mIHRoYXQgc2l6ZS4gSWYgYVxuICB0cmFuc2R1Y2VyIGlzIHN1cHBsaWVkIGEgYnVmZmVyIG11c3QgYmUgc3BlY2lmaWVkLiBleC1oYW5kbGVyIG11c3QgYmUgYVxuICBmbiBvZiBvbmUgYXJndW1lbnQgLSBpZiBhbiBleGNlcHRpb24gb2NjdXJzIGR1cmluZyB0cmFuc2Zvcm1hdGlvbiBpdCB3aWxsIGJlIGNhbGxlZFxuICB3aXRoIHRoZSB0aHJvd24gdmFsdWUgYXMgYW4gYXJndW1lbnQsIGFuZCBhbnkgbm9uLW5pbCByZXR1cm4gdmFsdWUgd2lsbCBiZSBwbGFjZWRcbiAgaW4gdGhlIGNoYW5uZWwuIiwgOmFyZ2xpc3RzIFtbXSBbYnVmLW9yLW5dIFtidWYtb3ItbiB4Zm9ybV0gW2J1Zi1vci1uIHhmb3JtIGV4LWhhbmRsZXJdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBjaGFuXHJcbiBcIkNyZWF0ZXMgYSBjaGFubmVsIHdpdGggYW4gb3B0aW9uYWwgYnVmZmVyLCBhbiBvcHRpb25hbCB0cmFuc2R1Y2VyIChsaWtlIChtYXAgZiksXFxuICAoZmlsdGVyIHApIGV0YyBvciBhIGNvbXBvc2l0aW9uIHRoZXJlb2YpLCBhbmQgYW4gb3B0aW9uYWwgZXhjZXB0aW9uIGhhbmRsZXIuXFxuICBJZiBidWYtb3ItbiBpcyBhIG51bWJlciwgd2lsbCBjcmVhdGUgYW5kIHVzZSBhIGZpeGVkIGJ1ZmZlciBvZiB0aGF0IHNpemUuIElmIGFcXG4gIHRyYW5zZHVjZXIgaXMgc3VwcGxpZWQgYSBidWZmZXIgbXVzdCBiZSBzcGVjaWZpZWQuIGV4LWhhbmRsZXIgbXVzdCBiZSBhXFxuICBmbiBvZiBvbmUgYXJndW1lbnQgLSBpZiBhbiBleGNlcHRpb24gb2NjdXJzIGR1cmluZyB0cmFuc2Zvcm1hdGlvbiBpdCB3aWxsIGJlIGNhbGxlZFxcbiAgd2l0aCB0aGUgdGhyb3duIHZhbHVlIGFzIGFuIGFyZ3VtZW50LCBhbmQgYW55IG5vbi1uaWwgcmV0dXJuIHZhbHVlIHdpbGwgYmUgcGxhY2VkXFxuICBpbiB0aGUgY2hhbm5lbC5cIlxyXG4gKFtdIChjaGFuIG5pbCkpXHJcbiAoW2J1Zi1vci1uXSAoY2hhbiBidWYtb3ItbiBuaWwgbmlsKSlcclxuIChbYnVmLW9yLW4geGZvcm1dIChjaGFuIGJ1Zi1vci1uIHhmb3JtIG5pbCkpXHJcbiAoW2J1Zi1vci1uIHhmb3JtIGV4LWhhbmRsZXJdXHJcbiAgKGxldFxyXG4gICBbYnVmLW9yLW4gKGlmICg9IGJ1Zi1vci1uIDApIG5pbCBidWYtb3ItbildXHJcbiAgICh3aGVuXHJcbiAgICB4Zm9ybVxyXG4gICAgKGFzc2VydCBidWYtb3ItbiBcImJ1ZmZlciBtdXN0IGJlIHN1cHBsaWVkIHdoZW4gdHJhbnNkdWNlciBpc1wiKSlcclxuICAgKGNoYW5uZWxzL2NoYW5cclxuICAgIChpZiAobnVtYmVyPyBidWYtb3ItbikgKGJ1ZmZlciBidWYtb3ItbikgYnVmLW9yLW4pXHJcbiAgICB4Zm9ybVxyXG4gICAgZXgtaGFuZGxlcikpKSlcclxuIn0gezpzeW0gc29sby1tb2RlKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttIG1vZGVdKX0sIDpwcm90b2NvbCBNaXh9IHs6c3ltIHRhcCwgOm1ldGEgezpkb2MgIkNvcGllcyB0aGUgbXVsdCBzb3VyY2Ugb250byB0aGUgc3VwcGxpZWQgY2hhbm5lbC5cblxuICBCeSBkZWZhdWx0IHRoZSBjaGFubmVsIHdpbGwgYmUgY2xvc2VkIHdoZW4gdGhlIHNvdXJjZSBjbG9zZXMsXG4gIGJ1dCBjYW4gYmUgZGV0ZXJtaW5lZCBieSB0aGUgY2xvc2U/IHBhcmFtZXRlci4iLCA6YXJnbGlzdHMgW1ttdWx0IGNoXSBbbXVsdCBjaCBjbG9zZT9dXX0sIDpzb3VyY2UgIihkZWZuXHJcbiB0YXBcclxuIFwiQ29waWVzIHRoZSBtdWx0IHNvdXJjZSBvbnRvIHRoZSBzdXBwbGllZCBjaGFubmVsLlxcblxcbiAgQnkgZGVmYXVsdCB0aGUgY2hhbm5lbCB3aWxsIGJlIGNsb3NlZCB3aGVuIHRoZSBzb3VyY2UgY2xvc2VzLFxcbiAgYnV0IGNhbiBiZSBkZXRlcm1pbmVkIGJ5IHRoZSBjbG9zZT8gcGFyYW1ldGVyLlwiXHJcbiAoW211bHQgY2hdICh0YXAgbXVsdCBjaCB0cnVlKSlcclxuIChbbXVsdCBjaCBjbG9zZT9dICh0YXAqIG11bHQgY2ggY2xvc2U/KSBjaCkpXHJcbiJ9IHs6c3ltIGFkbWl4LCA6bWV0YSB7OmRvYyAiQWRkcyBjaCBhcyBhbiBpbnB1dCB0byB0aGUgbWl4IiwgOmFyZ2xpc3RzIChbbWl4IGNoXSl9LCA6c291cmNlICIoZGVmbiBhZG1peCBcIkFkZHMgY2ggYXMgYW4gaW5wdXQgdG8gdGhlIG1peFwiIFttaXggY2hdIChhZG1peCogbWl4IGNoKSlcclxuIn0gezpzeW0gcHJvbWlzZS1jaGFuLCA6bWV0YSB7OmRvYyAiQ3JlYXRlcyBhIHByb21pc2UgY2hhbm5lbCB3aXRoIGFuIG9wdGlvbmFsIHRyYW5zZHVjZXIsIGFuZCBhbiBvcHRpb25hbFxuICBleGNlcHRpb24taGFuZGxlci4gQSBwcm9taXNlIGNoYW5uZWwgY2FuIHRha2UgZXhhY3RseSBvbmUgdmFsdWUgdGhhdCBjb25zdW1lcnNcbiAgd2lsbCByZWNlaXZlLiBPbmNlIGZ1bGwsIHB1dHMgY29tcGxldGUgYnV0IHZhbCBpcyBkcm9wcGVkIChubyB0cmFuc2ZlcikuXG4gIENvbnN1bWVycyB3aWxsIGJsb2NrIHVudGlsIGVpdGhlciBhIHZhbHVlIGlzIHBsYWNlZCBpbiB0aGUgY2hhbm5lbCBvciB0aGVcbiAgY2hhbm5lbCBpcyBjbG9zZWQuIFNlZSBjaGFuIGZvciB0aGUgc2VtYW50aWNzIG9mIHhmb3JtIGFuZCBleC1oYW5kbGVyLiIsIDphcmdsaXN0cyBbW10gW3hmb3JtXSBbeGZvcm0gZXgtaGFuZGxlcl1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIHByb21pc2UtY2hhblxyXG4gXCJDcmVhdGVzIGEgcHJvbWlzZSBjaGFubmVsIHdpdGggYW4gb3B0aW9uYWwgdHJhbnNkdWNlciwgYW5kIGFuIG9wdGlvbmFsXFxuICBleGNlcHRpb24taGFuZGxlci4gQSBwcm9taXNlIGNoYW5uZWwgY2FuIHRha2UgZXhhY3RseSBvbmUgdmFsdWUgdGhhdCBjb25zdW1lcnNcXG4gIHdpbGwgcmVjZWl2ZS4gT25jZSBmdWxsLCBwdXRzIGNvbXBsZXRlIGJ1dCB2YWwgaXMgZHJvcHBlZCAobm8gdHJhbnNmZXIpLlxcbiAgQ29uc3VtZXJzIHdpbGwgYmxvY2sgdW50aWwgZWl0aGVyIGEgdmFsdWUgaXMgcGxhY2VkIGluIHRoZSBjaGFubmVsIG9yIHRoZVxcbiAgY2hhbm5lbCBpcyBjbG9zZWQuIFNlZSBjaGFuIGZvciB0aGUgc2VtYW50aWNzIG9mIHhmb3JtIGFuZCBleC1oYW5kbGVyLlwiXHJcbiAoW10gKHByb21pc2UtY2hhbiBuaWwpKVxyXG4gKFt4Zm9ybV0gKHByb21pc2UtY2hhbiB4Zm9ybSBuaWwpKVxyXG4gKFt4Zm9ybSBleC1oYW5kbGVyXSAoY2hhbiAoYnVmZmVycy9wcm9taXNlLWJ1ZmZlcikgeGZvcm0gZXgtaGFuZGxlcikpKVxyXG4ifSB7OnN5bSB1bmlxdWUsIDptZXRhIHs6ZG9jICJEZXByZWNhdGVkIC0gdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHJlbW92ZWQuIFVzZSB0cmFuc2R1Y2VyIGluc3RlYWQiLCA6YXJnbGlzdHMgW1tjaF0gW2NoIGJ1Zi1vci1uXV19LCA6c291cmNlICIoZGVmblxyXG4gdW5pcXVlXHJcbiBcIkRlcHJlY2F0ZWQgLSB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVtb3ZlZC4gVXNlIHRyYW5zZHVjZXIgaW5zdGVhZFwiXHJcbiAoW2NoXSAodW5pcXVlIGNoIG5pbCkpXHJcbiAoW2NoIGJ1Zi1vci1uXVxyXG4gIChsZXRcclxuICAgW291dCAoY2hhbiBidWYtb3ItbildXHJcbiAgIChnb1xyXG4gICAgKGxvb3BcclxuICAgICBbbGFzdCBuaWxdXHJcbiAgICAgKGxldFxyXG4gICAgICBbdiAoPCEgY2gpXVxyXG4gICAgICAod2hlblxyXG4gICAgICAgKG5vdCAobmlsPyB2KSlcclxuICAgICAgIChpZiAoPSB2IGxhc3QpIChyZWN1ciBsYXN0KSAoZG8gKD4hIG91dCB2KSAocmVjdXIgdikpKSkpKVxyXG4gICAgKGNsb3NlISBvdXQpKVxyXG4gICBvdXQpKSlcclxuIn0gezpzeW0gbXV4Y2gqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW19dKX0sIDpwcm90b2NvbCBNdXh9IHs6c3ltIHNvbG8tbW9kZSwgOm1ldGEgezpkb2MgIlNldHMgdGhlIHNvbG8gbW9kZSBvZiB0aGUgbWl4LiBtb2RlIG11c3QgYmUgb25lIG9mIDptdXRlIG9yIDpwYXVzZSIsIDphcmdsaXN0cyAoW21peCBtb2RlXSl9LCA6c291cmNlICIoZGVmblxyXG4gc29sby1tb2RlXHJcbiBcIlNldHMgdGhlIHNvbG8gbW9kZSBvZiB0aGUgbWl4LiBtb2RlIG11c3QgYmUgb25lIG9mIDptdXRlIG9yIDpwYXVzZVwiXHJcbiBbbWl4IG1vZGVdXHJcbiAoc29sby1tb2RlKiBtaXggbW9kZSkpXHJcbiJ9IHs6c3ltIHRyYW5zZHVjZSwgOm1ldGEgezpkb2MgImFzeW5jL3JlZHVjZXMgYSBjaGFubmVsIHdpdGggYSB0cmFuc2Zvcm1hdGlvbiAoeGZvcm0gZikuXG4gIFJldHVybnMgYSBjaGFubmVsIGNvbnRhaW5pbmcgdGhlIHJlc3VsdC4gIGNoIG11c3QgY2xvc2UgYmVmb3JlXG4gIHRyYW5zZHVjZSBwcm9kdWNlcyBhIHJlc3VsdC4iLCA6YXJnbGlzdHMgKFt4Zm9ybSBmIGluaXQgY2hdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB0cmFuc2R1Y2VcclxuIFwiYXN5bmMvcmVkdWNlcyBhIGNoYW5uZWwgd2l0aCBhIHRyYW5zZm9ybWF0aW9uICh4Zm9ybSBmKS5cXG4gIFJldHVybnMgYSBjaGFubmVsIGNvbnRhaW5pbmcgdGhlIHJlc3VsdC4gIGNoIG11c3QgY2xvc2UgYmVmb3JlXFxuICB0cmFuc2R1Y2UgcHJvZHVjZXMgYSByZXN1bHQuXCJcclxuIFt4Zm9ybSBmIGluaXQgY2hdXHJcbiAobGV0IFtmICh4Zm9ybSBmKV0gKGdvIChsZXQgW3JldCAoPCEgKHJlZHVjZSBmIGluaXQgY2gpKV0gKGYgcmV0KSkpKSlcclxuIn0gezpzeW0gb250by1jaGFuLCA6bWV0YSB7OmRvYyAiUHV0cyB0aGUgY29udGVudHMgb2YgY29sbCBpbnRvIHRoZSBzdXBwbGllZCBjaGFubmVsLlxuXG4gIEJ5IGRlZmF1bHQgdGhlIGNoYW5uZWwgd2lsbCBiZSBjbG9zZWQgYWZ0ZXIgdGhlIGl0ZW1zIGFyZSBjb3BpZWQsXG4gIGJ1dCBjYW4gYmUgZGV0ZXJtaW5lZCBieSB0aGUgY2xvc2U/IHBhcmFtZXRlci5cblxuICBSZXR1cm5zIGEgY2hhbm5lbCB3aGljaCB3aWxsIGNsb3NlIGFmdGVyIHRoZSBpdGVtcyBhcmUgY29waWVkLiIsIDphcmdsaXN0cyBbW2NoIGNvbGxdIFtjaCBjb2xsIGNsb3NlP11dfSwgOnNvdXJjZSAiKGRlZm5cclxuIG9udG8tY2hhblxyXG4gXCJQdXRzIHRoZSBjb250ZW50cyBvZiBjb2xsIGludG8gdGhlIHN1cHBsaWVkIGNoYW5uZWwuXFxuXFxuICBCeSBkZWZhdWx0IHRoZSBjaGFubmVsIHdpbGwgYmUgY2xvc2VkIGFmdGVyIHRoZSBpdGVtcyBhcmUgY29waWVkLFxcbiAgYnV0IGNhbiBiZSBkZXRlcm1pbmVkIGJ5IHRoZSBjbG9zZT8gcGFyYW1ldGVyLlxcblxcbiAgUmV0dXJucyBhIGNoYW5uZWwgd2hpY2ggd2lsbCBjbG9zZSBhZnRlciB0aGUgaXRlbXMgYXJlIGNvcGllZC5cIlxyXG4gKFtjaCBjb2xsXSAob250by1jaGFuIGNoIGNvbGwgdHJ1ZSkpXHJcbiAoW2NoIGNvbGwgY2xvc2U/XVxyXG4gIChnby1sb29wXHJcbiAgIFt2cyAoc2VxIGNvbGwpXVxyXG4gICAoaWZcclxuICAgIChhbmQgdnMgKD4hIGNoIChmaXJzdCB2cykpKVxyXG4gICAgKHJlY3VyIChuZXh0IHZzKSlcclxuICAgICh3aGVuIGNsb3NlPyAoY2xvc2UhIGNoKSkpKSkpXHJcbiJ9IHs6c3ltIHRvLWNoYW4sIDptZXRhIHs6ZG9jICJDcmVhdGVzIGFuZCByZXR1cm5zIGEgY2hhbm5lbCB3aGljaCBjb250YWlucyB0aGUgY29udGVudHMgb2YgY29sbCxcbiAgY2xvc2luZyB3aGVuIGV4aGF1c3RlZC4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxyXG4gdG8tY2hhblxyXG4gXCJDcmVhdGVzIGFuZCByZXR1cm5zIGEgY2hhbm5lbCB3aGljaCBjb250YWlucyB0aGUgY29udGVudHMgb2YgY29sbCxcXG4gIGNsb3Npbmcgd2hlbiBleGhhdXN0ZWQuXCJcclxuIFtjb2xsXVxyXG4gKGxldCBbY2ggKGNoYW4gKGJvdW5kZWQtY291bnQgMTAwIGNvbGwpKV0gKG9udG8tY2hhbiBjaCBjb2xsKSBjaCkpXHJcbiJ9IHs6c3ltIGRyb3BwaW5nLWJ1ZmZlciwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBidWZmZXIgb2Ygc2l6ZSBuLiBXaGVuIGZ1bGwsIHB1dHMgd2lsbCBjb21wbGV0ZSBidXRcbiAgdmFsIHdpbGwgYmUgZHJvcHBlZCAobm8gdHJhbnNmZXIpLiIsIDphcmdsaXN0cyAoW25dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBkcm9wcGluZy1idWZmZXJcclxuIFwiUmV0dXJucyBhIGJ1ZmZlciBvZiBzaXplIG4uIFdoZW4gZnVsbCwgcHV0cyB3aWxsIGNvbXBsZXRlIGJ1dFxcbiAgdmFsIHdpbGwgYmUgZHJvcHBlZCAobm8gdHJhbnNmZXIpLlwiXHJcbiBbbl1cclxuIChidWZmZXJzL2Ryb3BwaW5nLWJ1ZmZlciBuKSlcclxuIn0gezpzeW0gdW50YXAtYWxsLCA6bWV0YSB7OmRvYyAiRGlzY29ubmVjdHMgYWxsIHRhcmdldCBjaGFubmVscyBmcm9tIGEgbXVsdCIsIDphcmdsaXN0cyAoW211bHRdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB1bnRhcC1hbGxcclxuIFwiRGlzY29ubmVjdHMgYWxsIHRhcmdldCBjaGFubmVscyBmcm9tIGEgbXVsdFwiXHJcbiBbbXVsdF1cclxuICh1bnRhcC1hbGwqIG11bHQpKVxyXG4ifSB7OnN5bSBpbnRvLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGNoYW5uZWwgY29udGFpbmluZyB0aGUgc2luZ2xlIChjb2xsZWN0aW9uKSByZXN1bHQgb2YgdGhlXG4gIGl0ZW1zIHRha2VuIGZyb20gdGhlIGNoYW5uZWwgY29uam9pbmVkIHRvIHRoZSBzdXBwbGllZFxuICBjb2xsZWN0aW9uLiBjaCBtdXN0IGNsb3NlIGJlZm9yZSBpbnRvIHByb2R1Y2VzIGEgcmVzdWx0LiIsIDphcmdsaXN0cyAoW2NvbGwgY2hdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBpbnRvXHJcbiBcIlJldHVybnMgYSBjaGFubmVsIGNvbnRhaW5pbmcgdGhlIHNpbmdsZSAoY29sbGVjdGlvbikgcmVzdWx0IG9mIHRoZVxcbiAgaXRlbXMgdGFrZW4gZnJvbSB0aGUgY2hhbm5lbCBjb25qb2luZWQgdG8gdGhlIHN1cHBsaWVkXFxuICBjb2xsZWN0aW9uLiBjaCBtdXN0IGNsb3NlIGJlZm9yZSBpbnRvIHByb2R1Y2VzIGEgcmVzdWx0LlwiXHJcbiBbY29sbCBjaF1cclxuIChyZWR1Y2UgY29uaiBjb2xsIGNoKSlcclxuIn0gezpzeW0gcGlwZWxpbmUsIDptZXRhIHs6ZG9jICJUYWtlcyBlbGVtZW50cyBmcm9tIHRoZSBmcm9tIGNoYW5uZWwgYW5kIHN1cHBsaWVzIHRoZW0gdG8gdGhlIHRvXG4gIGNoYW5uZWwsIHN1YmplY3QgdG8gdGhlIHRyYW5zZHVjZXIgeGYsIHdpdGggcGFyYWxsZWxpc20gbi4gQmVjYXVzZVxuICBpdCBpcyBwYXJhbGxlbCwgdGhlIHRyYW5zZHVjZXIgd2lsbCBiZSBhcHBsaWVkIGluZGVwZW5kZW50bHkgdG8gZWFjaFxuICBlbGVtZW50LCBub3QgYWNyb3NzIGVsZW1lbnRzLCBhbmQgbWF5IHByb2R1Y2UgemVybyBvciBtb3JlIG91dHB1dHNcbiAgcGVyIGlucHV0LiAgT3V0cHV0cyB3aWxsIGJlIHJldHVybmVkIGluIG9yZGVyIHJlbGF0aXZlIHRvIHRoZVxuICBpbnB1dHMuIEJ5IGRlZmF1bHQsIHRoZSB0byBjaGFubmVsIHdpbGwgYmUgY2xvc2VkIHdoZW4gdGhlIGZyb21cbiAgY2hhbm5lbCBjbG9zZXMsIGJ1dCBjYW4gYmUgZGV0ZXJtaW5lZCBieSB0aGUgY2xvc2U/ICBwYXJhbWV0ZXIuIFdpbGxcbiAgc3RvcCBjb25zdW1pbmcgdGhlIGZyb20gY2hhbm5lbCBpZiB0aGUgdG8gY2hhbm5lbCBjbG9zZXMuXG5cbiAgTm90ZSB0aGlzIGlzIHN1cHBsaWVkIGZvciBBUEkgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBDbG9qdXJlIHZlcnNpb24uXG4gIFZhbHVlcyBvZiBOID4gMSB3aWxsIG5vdCByZXN1bHQgaW4gYWN0dWFsIGNvbmN1cnJlbmN5IGluIGFcbiAgc2luZ2xlLXRocmVhZGVkIHJ1bnRpbWUuIiwgOmFyZ2xpc3RzIFtbbiB0byB4ZiBmcm9tXSBbbiB0byB4ZiBmcm9tIGNsb3NlP10gW24gdG8geGYgZnJvbSBjbG9zZT8gZXgtaGFuZGxlcl1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIHBpcGVsaW5lXHJcbiBcIlRha2VzIGVsZW1lbnRzIGZyb20gdGhlIGZyb20gY2hhbm5lbCBhbmQgc3VwcGxpZXMgdGhlbSB0byB0aGUgdG9cXG4gIGNoYW5uZWwsIHN1YmplY3QgdG8gdGhlIHRyYW5zZHVjZXIgeGYsIHdpdGggcGFyYWxsZWxpc20gbi4gQmVjYXVzZVxcbiAgaXQgaXMgcGFyYWxsZWwsIHRoZSB0cmFuc2R1Y2VyIHdpbGwgYmUgYXBwbGllZCBpbmRlcGVuZGVudGx5IHRvIGVhY2hcXG4gIGVsZW1lbnQsIG5vdCBhY3Jvc3MgZWxlbWVudHMsIGFuZCBtYXkgcHJvZHVjZSB6ZXJvIG9yIG1vcmUgb3V0cHV0c1xcbiAgcGVyIGlucHV0LiAgT3V0cHV0cyB3aWxsIGJlIHJldHVybmVkIGluIG9yZGVyIHJlbGF0aXZlIHRvIHRoZVxcbiAgaW5wdXRzLiBCeSBkZWZhdWx0LCB0aGUgdG8gY2hhbm5lbCB3aWxsIGJlIGNsb3NlZCB3aGVuIHRoZSBmcm9tXFxuICBjaGFubmVsIGNsb3NlcywgYnV0IGNhbiBiZSBkZXRlcm1pbmVkIGJ5IHRoZSBjbG9zZT8gIHBhcmFtZXRlci4gV2lsbFxcbiAgc3RvcCBjb25zdW1pbmcgdGhlIGZyb20gY2hhbm5lbCBpZiB0aGUgdG8gY2hhbm5lbCBjbG9zZXMuXFxuXFxuICBOb3RlIHRoaXMgaXMgc3VwcGxpZWQgZm9yIEFQSSBjb21wYXRpYmlsaXR5IHdpdGggdGhlIENsb2p1cmUgdmVyc2lvbi5cXG4gIFZhbHVlcyBvZiBOID4gMSB3aWxsIG5vdCByZXN1bHQgaW4gYWN0dWFsIGNvbmN1cnJlbmN5IGluIGFcXG4gIHNpbmdsZS10aHJlYWRlZCBydW50aW1lLlwiXHJcbiAoW24gdG8geGYgZnJvbV0gKHBpcGVsaW5lIG4gdG8geGYgZnJvbSB0cnVlKSlcclxuIChbbiB0byB4ZiBmcm9tIGNsb3NlP10gKHBpcGVsaW5lIG4gdG8geGYgZnJvbSBjbG9zZT8gbmlsKSlcclxuIChbbiB0byB4ZiBmcm9tIGNsb3NlPyBleC1oYW5kbGVyXVxyXG4gIChwaXBlbGluZSogbiB0byB4ZiBmcm9tIGNsb3NlPyBleC1oYW5kbGVyIDpjb21wdXRlKSkpXHJcbiJ9IHs6c3ltIHN1YiwgOm1ldGEgezpkb2MgIlN1YnNjcmliZXMgYSBjaGFubmVsIHRvIGEgdG9waWMgb2YgYSBwdWIuXG5cbiAgQnkgZGVmYXVsdCB0aGUgY2hhbm5lbCB3aWxsIGJlIGNsb3NlZCB3aGVuIHRoZSBzb3VyY2UgY2xvc2VzLFxuICBidXQgY2FuIGJlIGRldGVybWluZWQgYnkgdGhlIGNsb3NlPyBwYXJhbWV0ZXIuIiwgOmFyZ2xpc3RzIFtbcCB0b3BpYyBjaF0gW3AgdG9waWMgY2ggY2xvc2U/XV19LCA6c291cmNlICIoZGVmblxyXG4gc3ViXHJcbiBcIlN1YnNjcmliZXMgYSBjaGFubmVsIHRvIGEgdG9waWMgb2YgYSBwdWIuXFxuXFxuICBCeSBkZWZhdWx0IHRoZSBjaGFubmVsIHdpbGwgYmUgY2xvc2VkIHdoZW4gdGhlIHNvdXJjZSBjbG9zZXMsXFxuICBidXQgY2FuIGJlIGRldGVybWluZWQgYnkgdGhlIGNsb3NlPyBwYXJhbWV0ZXIuXCJcclxuIChbcCB0b3BpYyBjaF0gKHN1YiBwIHRvcGljIGNoIHRydWUpKVxyXG4gKFtwIHRvcGljIGNoIGNsb3NlP10gKHN1YiogcCB0b3BpYyBjaCBjbG9zZT8pKSlcclxuIn0gezpzeW0gbWFwPiwgOm1ldGEgezpkb2MgIkRlcHJlY2F0ZWQgLSB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVtb3ZlZC4gVXNlIHRyYW5zZHVjZXIgaW5zdGVhZCIsIDphcmdsaXN0cyAoW2YgY2hdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBtYXA+XHJcbiBcIkRlcHJlY2F0ZWQgLSB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVtb3ZlZC4gVXNlIHRyYW5zZHVjZXIgaW5zdGVhZFwiXHJcbiBbZiBjaF1cclxuIChyZWlmeVxyXG4gIGltcGwvQ2hhbm5lbFxyXG4gIChjbG9zZSEgW19dIChpbXBsL2Nsb3NlISBjaCkpXHJcbiAgaW1wbC9SZWFkUG9ydFxyXG4gICh0YWtlISBbXyBmbjFdIChpbXBsL3Rha2UhIGNoIGZuMSkpXHJcbiAgaW1wbC9Xcml0ZVBvcnRcclxuICAocHV0ISBbXyB2YWwgZm4xXSAoaW1wbC9wdXQhIGNoIChmIHZhbCkgZm4xKSkpKVxyXG4ifSB7OnN5bSBwaXBlLCA6bWV0YSB7OmRvYyAiVGFrZXMgZWxlbWVudHMgZnJvbSB0aGUgZnJvbSBjaGFubmVsIGFuZCBzdXBwbGllcyB0aGVtIHRvIHRoZSB0b1xuICAgY2hhbm5lbC4gQnkgZGVmYXVsdCwgdGhlIHRvIGNoYW5uZWwgd2lsbCBiZSBjbG9zZWQgd2hlbiB0aGUgZnJvbVxuICAgY2hhbm5lbCBjbG9zZXMsIGJ1dCBjYW4gYmUgZGV0ZXJtaW5lZCBieSB0aGUgY2xvc2U/ICBwYXJhbWV0ZXIuIFdpbGxcbiAgIHN0b3AgY29uc3VtaW5nIHRoZSBmcm9tIGNoYW5uZWwgaWYgdGhlIHRvIGNoYW5uZWwgY2xvc2VzIiwgOmFyZ2xpc3RzIFtbZnJvbSB0b10gW2Zyb20gdG8gY2xvc2U/XV19LCA6c291cmNlICIoZGVmblxyXG4gcGlwZVxyXG4gXCJUYWtlcyBlbGVtZW50cyBmcm9tIHRoZSBmcm9tIGNoYW5uZWwgYW5kIHN1cHBsaWVzIHRoZW0gdG8gdGhlIHRvXFxuICAgY2hhbm5lbC4gQnkgZGVmYXVsdCwgdGhlIHRvIGNoYW5uZWwgd2lsbCBiZSBjbG9zZWQgd2hlbiB0aGUgZnJvbVxcbiAgIGNoYW5uZWwgY2xvc2VzLCBidXQgY2FuIGJlIGRldGVybWluZWQgYnkgdGhlIGNsb3NlPyAgcGFyYW1ldGVyLiBXaWxsXFxuICAgc3RvcCBjb25zdW1pbmcgdGhlIGZyb20gY2hhbm5lbCBpZiB0aGUgdG8gY2hhbm5lbCBjbG9zZXNcIlxyXG4gKFtmcm9tIHRvXSAocGlwZSBmcm9tIHRvIHRydWUpKVxyXG4gKFtmcm9tIHRvIGNsb3NlP11cclxuICAoZ28tbG9vcFxyXG4gICBbXVxyXG4gICAobGV0XHJcbiAgICBbdiAoPCEgZnJvbSldXHJcbiAgICAoaWYgKG5pbD8gdikgKHdoZW4gY2xvc2U/IChjbG9zZSEgdG8pKSAod2hlbiAoPiEgdG8gdikgKHJlY3VyKSkpKSlcclxuICB0bykpXHJcbiJ9IHs6c3ltIHVubWl4LCA6bWV0YSB7OmRvYyAiUmVtb3ZlcyBjaCBhcyBhbiBpbnB1dCB0byB0aGUgbWl4IiwgOmFyZ2xpc3RzIChbbWl4IGNoXSl9LCA6c291cmNlICIoZGVmblxyXG4gdW5taXhcclxuIFwiUmVtb3ZlcyBjaCBhcyBhbiBpbnB1dCB0byB0aGUgbWl4XCJcclxuIFttaXggY2hdXHJcbiAodW5taXgqIG1peCBjaCkpXHJcbiJ9IHs6c3ltIGZpbHRlcjwsIDptZXRhIHs6ZG9jICJEZXByZWNhdGVkIC0gdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHJlbW92ZWQuIFVzZSB0cmFuc2R1Y2VyIGluc3RlYWQiLCA6YXJnbGlzdHMgW1twIGNoXSBbcCBjaCBidWYtb3Itbl1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGZpbHRlcjxcclxuIFwiRGVwcmVjYXRlZCAtIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSByZW1vdmVkLiBVc2UgdHJhbnNkdWNlciBpbnN0ZWFkXCJcclxuIChbcCBjaF0gKGZpbHRlcjwgcCBjaCBuaWwpKVxyXG4gKFtwIGNoIGJ1Zi1vci1uXVxyXG4gIChsZXRcclxuICAgW291dCAoY2hhbiBidWYtb3ItbildXHJcbiAgIChnby1sb29wXHJcbiAgICBbXVxyXG4gICAgKGxldFxyXG4gICAgIFt2YWwgKDwhIGNoKV1cclxuICAgICAoaWZcclxuICAgICAgKG5pbD8gdmFsKVxyXG4gICAgICAoY2xvc2UhIG91dClcclxuICAgICAgKGRvICh3aGVuIChwIHZhbCkgKD4hIG91dCB2YWwpKSAocmVjdXIpKSkpKVxyXG4gICBvdXQpKSlcclxuIn0gezpzeW0gc3ViKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwIHYgY2ggY2xvc2U/XSl9LCA6cHJvdG9jb2wgUHVifSB7OnN5bSByZW1vdmU8LCA6bWV0YSB7OmRvYyAiRGVwcmVjYXRlZCAtIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSByZW1vdmVkLiBVc2UgdHJhbnNkdWNlciBpbnN0ZWFkIiwgOmFyZ2xpc3RzIFtbcCBjaF0gW3AgY2ggYnVmLW9yLW5dXX0sIDpzb3VyY2UgIihkZWZuXHJcbiByZW1vdmU8XHJcbiBcIkRlcHJlY2F0ZWQgLSB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVtb3ZlZC4gVXNlIHRyYW5zZHVjZXIgaW5zdGVhZFwiXHJcbiAoW3AgY2hdIChyZW1vdmU8IHAgY2ggbmlsKSlcclxuIChbcCBjaCBidWYtb3Itbl0gKGZpbHRlcjwgKGNvbXBsZW1lbnQgcCkgY2ggYnVmLW9yLW4pKSlcclxuIn0gezpzeW0gdW50YXAqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW20gY2hdKX0sIDpwcm90b2NvbCBNdWx0fSB7OnN5bSB0b2dnbGUsIDptZXRhIHs6ZG9jICJBdG9taWNhbGx5IHNldHMgdGhlIHN0YXRlKHMpIG9mIG9uZSBvciBtb3JlIGNoYW5uZWxzIGluIGEgbWl4LiBUaGVcbiAgc3RhdGUgbWFwIGlzIGEgbWFwIG9mIGNoYW5uZWxzIC0+IGNoYW5uZWwtc3RhdGUtbWFwLiBBXG4gIGNoYW5uZWwtc3RhdGUtbWFwIGlzIGEgbWFwIG9mIGF0dHJzIC0+IGJvb2xlYW4sIHdoZXJlIGF0dHIgaXMgb25lIG9yXG4gIG1vcmUgb2YgOm11dGUsIDpwYXVzZSBvciA6c29sby4gQW55IHN0YXRlcyBzdXBwbGllZCBhcmUgbWVyZ2VkIHdpdGhcbiAgdGhlIGN1cnJlbnQgc3RhdGUuXG5cbiAgTm90ZSB0aGF0IGNoYW5uZWxzIGNhbiBiZSBhZGRlZCB0byBhIG1peCB2aWEgdG9nZ2xlLCB3aGljaCBjYW4gYmVcbiAgdXNlZCB0byBhZGQgY2hhbm5lbHMgaW4gYSBwYXJ0aWN1bGFyIChlLmcuIHBhdXNlZCkgc3RhdGUuIiwgOmFyZ2xpc3RzIChbbWl4IHN0YXRlLW1hcF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHRvZ2dsZVxyXG4gXCJBdG9taWNhbGx5IHNldHMgdGhlIHN0YXRlKHMpIG9mIG9uZSBvciBtb3JlIGNoYW5uZWxzIGluIGEgbWl4LiBUaGVcXG4gIHN0YXRlIG1hcCBpcyBhIG1hcCBvZiBjaGFubmVscyAtPiBjaGFubmVsLXN0YXRlLW1hcC4gQVxcbiAgY2hhbm5lbC1zdGF0ZS1tYXAgaXMgYSBtYXAgb2YgYXR0cnMgLT4gYm9vbGVhbiwgd2hlcmUgYXR0ciBpcyBvbmUgb3JcXG4gIG1vcmUgb2YgOm11dGUsIDpwYXVzZSBvciA6c29sby4gQW55IHN0YXRlcyBzdXBwbGllZCBhcmUgbWVyZ2VkIHdpdGhcXG4gIHRoZSBjdXJyZW50IHN0YXRlLlxcblxcbiAgTm90ZSB0aGF0IGNoYW5uZWxzIGNhbiBiZSBhZGRlZCB0byBhIG1peCB2aWEgdG9nZ2xlLCB3aGljaCBjYW4gYmVcXG4gIHVzZWQgdG8gYWRkIGNoYW5uZWxzIGluIGEgcGFydGljdWxhciAoZS5nLiBwYXVzZWQpIHN0YXRlLlwiXHJcbiBbbWl4IHN0YXRlLW1hcF1cclxuICh0b2dnbGUqIG1peCBzdGF0ZS1tYXApKVxyXG4ifSB7OnN5bSB1bnRhcC1hbGwqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21dKX0sIDpwcm90b2NvbCBNdWx0fSB7OnN5bSBzbGlkaW5nLWJ1ZmZlciwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBidWZmZXIgb2Ygc2l6ZSBuLiBXaGVuIGZ1bGwsIHB1dHMgd2lsbCBjb21wbGV0ZSwgYW5kIGJlXG4gIGJ1ZmZlcmVkLCBidXQgb2xkZXN0IGVsZW1lbnRzIGluIGJ1ZmZlciB3aWxsIGJlIGRyb3BwZWQgKG5vdFxuICB0cmFuc2ZlcnJlZCkuIiwgOmFyZ2xpc3RzIChbbl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHNsaWRpbmctYnVmZmVyXHJcbiBcIlJldHVybnMgYSBidWZmZXIgb2Ygc2l6ZSBuLiBXaGVuIGZ1bGwsIHB1dHMgd2lsbCBjb21wbGV0ZSwgYW5kIGJlXFxuICBidWZmZXJlZCwgYnV0IG9sZGVzdCBlbGVtZW50cyBpbiBidWZmZXIgd2lsbCBiZSBkcm9wcGVkIChub3RcXG4gIHRyYW5zZmVycmVkKS5cIlxyXG4gW25dXHJcbiAoYnVmZmVycy9zbGlkaW5nLWJ1ZmZlciBuKSlcclxuIn0gezpzeW0gcGFydGl0aW9uLCA6bWV0YSB7OmRvYyAiRGVwcmVjYXRlZCAtIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSByZW1vdmVkLiBVc2UgdHJhbnNkdWNlciBpbnN0ZWFkIiwgOmFyZ2xpc3RzIFtbbiBjaF0gW24gY2ggYnVmLW9yLW5dXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBwYXJ0aXRpb25cclxuIFwiRGVwcmVjYXRlZCAtIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSByZW1vdmVkLiBVc2UgdHJhbnNkdWNlciBpbnN0ZWFkXCJcclxuIChbbiBjaF0gKHBhcnRpdGlvbiBuIGNoIG5pbCkpXHJcbiAoW24gY2ggYnVmLW9yLW5dXHJcbiAgKGxldFxyXG4gICBbb3V0IChjaGFuIGJ1Zi1vci1uKV1cclxuICAgKGdvXHJcbiAgICAobG9vcFxyXG4gICAgIFthcnIgKG1ha2UtYXJyYXkgbikgaWR4IDBdXHJcbiAgICAgKGxldFxyXG4gICAgICBbdiAoPCEgY2gpXVxyXG4gICAgICAoaWZcclxuICAgICAgIChub3QgKG5pbD8gdikpXHJcbiAgICAgICAoZG9cclxuICAgICAgICAoYXNldCBhcnIgaWR4IHYpXHJcbiAgICAgICAgKGxldFxyXG4gICAgICAgICBbbmV3LWlkeCAoaW5jIGlkeCldXHJcbiAgICAgICAgIChpZlxyXG4gICAgICAgICAgKDwgbmV3LWlkeCBuKVxyXG4gICAgICAgICAgKHJlY3VyIGFyciBuZXctaWR4KVxyXG4gICAgICAgICAgKGRvICg+ISBvdXQgKHZlYyBhcnIpKSAocmVjdXIgKG1ha2UtYXJyYXkgbikgMCkpKSkpXHJcbiAgICAgICAoZG8gKHdoZW4gKD4gaWR4IDApICg+ISBvdXQgKHZlYyBhcnIpKSkgKGNsb3NlISBvdXQpKSkpKSlcclxuICAgb3V0KSkpXHJcbiJ9IHs6c3ltIE11bHQsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzICh0YXAqIHVudGFwKiB1bnRhcC1hbGwqKX0gezpzeW0gbWVyZ2UsIDptZXRhIHs6ZG9jICJUYWtlcyBhIGNvbGxlY3Rpb24gb2Ygc291cmNlIGNoYW5uZWxzIGFuZCByZXR1cm5zIGEgY2hhbm5lbCB3aGljaFxuICBjb250YWlucyBhbGwgdmFsdWVzIHRha2VuIGZyb20gdGhlbS4gVGhlIHJldHVybmVkIGNoYW5uZWwgd2lsbCBiZVxuICB1bmJ1ZmZlcmVkIGJ5IGRlZmF1bHQsIG9yIGEgYnVmLW9yLW4gY2FuIGJlIHN1cHBsaWVkLiBUaGUgY2hhbm5lbFxuICB3aWxsIGNsb3NlIGFmdGVyIGFsbCB0aGUgc291cmNlIGNoYW5uZWxzIGhhdmUgY2xvc2VkLiIsIDphcmdsaXN0cyBbW2Noc10gW2NocyBidWYtb3Itbl1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIG1lcmdlXHJcbiBcIlRha2VzIGEgY29sbGVjdGlvbiBvZiBzb3VyY2UgY2hhbm5lbHMgYW5kIHJldHVybnMgYSBjaGFubmVsIHdoaWNoXFxuICBjb250YWlucyBhbGwgdmFsdWVzIHRha2VuIGZyb20gdGhlbS4gVGhlIHJldHVybmVkIGNoYW5uZWwgd2lsbCBiZVxcbiAgdW5idWZmZXJlZCBieSBkZWZhdWx0LCBvciBhIGJ1Zi1vci1uIGNhbiBiZSBzdXBwbGllZC4gVGhlIGNoYW5uZWxcXG4gIHdpbGwgY2xvc2UgYWZ0ZXIgYWxsIHRoZSBzb3VyY2UgY2hhbm5lbHMgaGF2ZSBjbG9zZWQuXCJcclxuIChbY2hzXSAobWVyZ2UgY2hzIG5pbCkpXHJcbiAoW2NocyBidWYtb3Itbl1cclxuICAobGV0XHJcbiAgIFtvdXQgKGNoYW4gYnVmLW9yLW4pXVxyXG4gICAoZ28tbG9vcFxyXG4gICAgW2NzICh2ZWMgY2hzKV1cclxuICAgIChpZlxyXG4gICAgIChwb3M/IChjb3VudCBjcykpXHJcbiAgICAgKGxldFxyXG4gICAgICBbW3YgY10gKGFsdHMhIGNzKV1cclxuICAgICAgKGlmXHJcbiAgICAgICAobmlsPyB2KVxyXG4gICAgICAgKHJlY3VyIChmaWx0ZXJ2IChmbiogW3AxX180MTI4NiNdIChub3Q9IGMgcDFfXzQxMjg2IykpIGNzKSlcclxuICAgICAgIChkbyAoPiEgb3V0IHYpIChyZWN1ciBjcykpKSlcclxuICAgICAoY2xvc2UhIG91dCkpKVxyXG4gICBvdXQpKSlcclxuIn0gezpzeW0gcGFydGl0aW9uLWJ5LCA6bWV0YSB7OmRvYyAiRGVwcmVjYXRlZCAtIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSByZW1vdmVkLiBVc2UgdHJhbnNkdWNlciBpbnN0ZWFkIiwgOmFyZ2xpc3RzIFtbZiBjaF0gW2YgY2ggYnVmLW9yLW5dXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBwYXJ0aXRpb24tYnlcclxuIFwiRGVwcmVjYXRlZCAtIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSByZW1vdmVkLiBVc2UgdHJhbnNkdWNlciBpbnN0ZWFkXCJcclxuIChbZiBjaF0gKHBhcnRpdGlvbi1ieSBmIGNoIG5pbCkpXHJcbiAoW2YgY2ggYnVmLW9yLW5dXHJcbiAgKGxldFxyXG4gICBbb3V0IChjaGFuIGJ1Zi1vci1uKV1cclxuICAgKGdvXHJcbiAgICAobG9vcFxyXG4gICAgIFtsc3QgKG1ha2UtYXJyYXkgMCkgbGFzdCA6Y2xqcy5jb3JlLmFzeW5jL25vdGhpbmddXHJcbiAgICAgKGxldFxyXG4gICAgICBbdiAoPCEgY2gpXVxyXG4gICAgICAoaWZcclxuICAgICAgIChub3QgKG5pbD8gdikpXHJcbiAgICAgICAobGV0XHJcbiAgICAgICAgW25ldy1pdG0gKGYgdildXHJcbiAgICAgICAgKGlmXHJcbiAgICAgICAgIChvclxyXG4gICAgICAgICAgKD0gbmV3LWl0bSBsYXN0KVxyXG4gICAgICAgICAgKGtleXdvcmQtaWRlbnRpY2FsPyBsYXN0IDpjbGpzLmNvcmUuYXN5bmMvbm90aGluZykpXHJcbiAgICAgICAgIChkbyAoLnB1c2ggbHN0IHYpIChyZWN1ciBsc3QgbmV3LWl0bSkpXHJcbiAgICAgICAgIChkb1xyXG4gICAgICAgICAgKD4hIG91dCAodmVjIGxzdCkpXHJcbiAgICAgICAgICAobGV0XHJcbiAgICAgICAgICAgW25ldy1sc3QgKG1ha2UtYXJyYXkgMCldXHJcbiAgICAgICAgICAgKC5wdXNoIG5ldy1sc3QgdilcclxuICAgICAgICAgICAocmVjdXIgbmV3LWxzdCBuZXctaXRtKSkpKSlcclxuICAgICAgIChkb1xyXG4gICAgICAgICh3aGVuICg+IChhbGVuZ3RoIGxzdCkgMCkgKD4hIG91dCAodmVjIGxzdCkpKVxyXG4gICAgICAgIChjbG9zZSEgb3V0KSkpKSkpXHJcbiAgIG91dCkpKVxyXG4ifSB7OnN5bSB1bnN1Yi1hbGwsIDptZXRhIHs6ZG9jICJVbnN1YnNjcmliZXMgYWxsIGNoYW5uZWxzIGZyb20gYSBwdWIsIG9yIGEgdG9waWMgb2YgYSBwdWIiLCA6YXJnbGlzdHMgW1twXSBbcCB0b3BpY11dfSwgOnNvdXJjZSAiKGRlZm5cclxuIHVuc3ViLWFsbFxyXG4gXCJVbnN1YnNjcmliZXMgYWxsIGNoYW5uZWxzIGZyb20gYSBwdWIsIG9yIGEgdG9waWMgb2YgYSBwdWJcIlxyXG4gKFtwXSAodW5zdWItYWxsKiBwKSlcclxuIChbcCB0b3BpY10gKHVuc3ViLWFsbCogcCB0b3BpYykpKVxyXG4ifSB7OnN5bSA+ISwgOm1ldGEgezpkb2MgInB1dHMgYSB2YWwgaW50byBwb3J0LiBuaWwgdmFsdWVzIGFyZSBub3QgYWxsb3dlZC4gTXVzdCBiZSBjYWxsZWRcbiAgaW5zaWRlIGEgKGdvIC4uLikgYmxvY2suIFdpbGwgcGFyayBpZiBubyBidWZmZXIgc3BhY2UgaXMgYXZhaWxhYmxlLlxuICBSZXR1cm5zIHRydWUgdW5sZXNzIHBvcnQgaXMgYWxyZWFkeSBjbG9zZWQuIiwgOmFyZ2xpc3RzIChbcG9ydCB2YWxdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiA+IVxyXG4gXCJwdXRzIGEgdmFsIGludG8gcG9ydC4gbmlsIHZhbHVlcyBhcmUgbm90IGFsbG93ZWQuIE11c3QgYmUgY2FsbGVkXFxuICBpbnNpZGUgYSAoZ28gLi4uKSBibG9jay4gV2lsbCBwYXJrIGlmIG5vIGJ1ZmZlciBzcGFjZSBpcyBhdmFpbGFibGUuXFxuICBSZXR1cm5zIHRydWUgdW5sZXNzIHBvcnQgaXMgYWxyZWFkeSBjbG9zZWQuXCJcclxuIFtwb3J0IHZhbF1cclxuICh0aHJvdyAoanMvRXJyb3IuIFwiPiEgdXNlZCBub3QgaW4gKGdvIC4uLikgYmxvY2tcIikpKVxyXG4ifSB7OnN5bSB1bm1peC1hbGwqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21dKX0sIDpwcm90b2NvbCBNaXh9IHs6c3ltIHNwbGl0LCA6bWV0YSB7OmRvYyAiVGFrZXMgYSBwcmVkaWNhdGUgYW5kIGEgc291cmNlIGNoYW5uZWwgYW5kIHJldHVybnMgYSB2ZWN0b3Igb2YgdHdvXG4gIGNoYW5uZWxzLCB0aGUgZmlyc3Qgb2Ygd2hpY2ggd2lsbCBjb250YWluIHRoZSB2YWx1ZXMgZm9yIHdoaWNoIHRoZVxuICBwcmVkaWNhdGUgcmV0dXJuZWQgdHJ1ZSwgdGhlIHNlY29uZCB0aG9zZSBmb3Igd2hpY2ggaXQgcmV0dXJuZWRcbiAgZmFsc2UuXG5cbiAgVGhlIG91dCBjaGFubmVscyB3aWxsIGJlIHVuYnVmZmVyZWQgYnkgZGVmYXVsdCwgb3IgdHdvIGJ1Zi1vci1ucyBjYW5cbiAgYmUgc3VwcGxpZWQuIFRoZSBjaGFubmVscyB3aWxsIGNsb3NlIGFmdGVyIHRoZSBzb3VyY2UgY2hhbm5lbCBoYXNcbiAgY2xvc2VkLiIsIDphcmdsaXN0cyBbW3AgY2hdIFtwIGNoIHQtYnVmLW9yLW4gZi1idWYtb3Itbl1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIHNwbGl0XHJcbiBcIlRha2VzIGEgcHJlZGljYXRlIGFuZCBhIHNvdXJjZSBjaGFubmVsIGFuZCByZXR1cm5zIGEgdmVjdG9yIG9mIHR3b1xcbiAgY2hhbm5lbHMsIHRoZSBmaXJzdCBvZiB3aGljaCB3aWxsIGNvbnRhaW4gdGhlIHZhbHVlcyBmb3Igd2hpY2ggdGhlXFxuICBwcmVkaWNhdGUgcmV0dXJuZWQgdHJ1ZSwgdGhlIHNlY29uZCB0aG9zZSBmb3Igd2hpY2ggaXQgcmV0dXJuZWRcXG4gIGZhbHNlLlxcblxcbiAgVGhlIG91dCBjaGFubmVscyB3aWxsIGJlIHVuYnVmZmVyZWQgYnkgZGVmYXVsdCwgb3IgdHdvIGJ1Zi1vci1ucyBjYW5cXG4gIGJlIHN1cHBsaWVkLiBUaGUgY2hhbm5lbHMgd2lsbCBjbG9zZSBhZnRlciB0aGUgc291cmNlIGNoYW5uZWwgaGFzXFxuICBjbG9zZWQuXCJcclxuIChbcCBjaF0gKHNwbGl0IHAgY2ggbmlsIG5pbCkpXHJcbiAoW3AgY2ggdC1idWYtb3ItbiBmLWJ1Zi1vci1uXVxyXG4gIChsZXRcclxuICAgW3RjIChjaGFuIHQtYnVmLW9yLW4pIGZjIChjaGFuIGYtYnVmLW9yLW4pXVxyXG4gICAoZ28tbG9vcFxyXG4gICAgW11cclxuICAgIChsZXRcclxuICAgICBbdiAoPCEgY2gpXVxyXG4gICAgIChpZlxyXG4gICAgICAobmlsPyB2KVxyXG4gICAgICAoZG8gKGNsb3NlISB0YykgKGNsb3NlISBmYykpXHJcbiAgICAgICh3aGVuICg+ISAoaWYgKHAgdikgdGMgZmMpIHYpIChyZWN1cikpKSkpXHJcbiAgIFt0YyBmY10pKSlcclxuIn0gezpzeW0gdW5taXgtYWxsLCA6bWV0YSB7OmRvYyAicmVtb3ZlcyBhbGwgaW5wdXRzIGZyb20gdGhlIG1peCIsIDphcmdsaXN0cyAoW21peF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHVubWl4LWFsbFxyXG4gXCJyZW1vdmVzIGFsbCBpbnB1dHMgZnJvbSB0aGUgbWl4XCJcclxuIFttaXhdXHJcbiAodW5taXgtYWxsKiBtaXgpKVxyXG4ifSB7OnN5bSBmaWx0ZXI+LCA6bWV0YSB7OmRvYyAiRGVwcmVjYXRlZCAtIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSByZW1vdmVkLiBVc2UgdHJhbnNkdWNlciBpbnN0ZWFkIiwgOmFyZ2xpc3RzIChbcCBjaF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGZpbHRlcj5cclxuIFwiRGVwcmVjYXRlZCAtIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSByZW1vdmVkLiBVc2UgdHJhbnNkdWNlciBpbnN0ZWFkXCJcclxuIFtwIGNoXVxyXG4gKHJlaWZ5XHJcbiAgaW1wbC9DaGFubmVsXHJcbiAgKGNsb3NlISBbX10gKGltcGwvY2xvc2UhIGNoKSlcclxuICAoY2xvc2VkPyBbX10gKGltcGwvY2xvc2VkPyBjaCkpXHJcbiAgaW1wbC9SZWFkUG9ydFxyXG4gICh0YWtlISBbXyBmbjFdIChpbXBsL3Rha2UhIGNoIGZuMSkpXHJcbiAgaW1wbC9Xcml0ZVBvcnRcclxuICAocHV0IVxyXG4gICBbXyB2YWwgZm4xXVxyXG4gICAoaWZcclxuICAgIChwIHZhbClcclxuICAgIChpbXBsL3B1dCEgY2ggdmFsIGZuMSlcclxuICAgIChjaGFubmVscy9ib3ggKG5vdCAoaW1wbC9jbG9zZWQ/IGNoKSkpKSkpKVxyXG4ifSB7OnN5bSB0YXAqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW20gY2ggY2xvc2U/XSl9LCA6cHJvdG9jb2wgTXVsdH0gezpzeW0gdW50YXAsIDptZXRhIHs6ZG9jICJEaXNjb25uZWN0cyBhIHRhcmdldCBjaGFubmVsIGZyb20gYSBtdWx0IiwgOmFyZ2xpc3RzIChbbXVsdCBjaF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHVudGFwXHJcbiBcIkRpc2Nvbm5lY3RzIGEgdGFyZ2V0IGNoYW5uZWwgZnJvbSBhIG11bHRcIlxyXG4gW211bHQgY2hdXHJcbiAodW50YXAqIG11bHQgY2gpKVxyXG4ifSB7OnN5bSBhbHRzISwgOm1ldGEgezpkb2MgIkNvbXBsZXRlcyBhdCBtb3N0IG9uZSBvZiBzZXZlcmFsIGNoYW5uZWwgb3BlcmF0aW9ucy4gTXVzdCBiZSBjYWxsZWRcbiAgIGluc2lkZSBhIChnbyAuLi4pIGJsb2NrLiBwb3J0cyBpcyBhIHZlY3RvciBvZiBjaGFubmVsIGVuZHBvaW50cyxcbiAgIHdoaWNoIGNhbiBiZSBlaXRoZXIgYSBjaGFubmVsIHRvIHRha2UgZnJvbSBvciBhIHZlY3RvciBvZlxuICBbY2hhbm5lbC10by1wdXQtdG8gdmFsLXRvLXB1dF0sIGluIGFueSBjb21iaW5hdGlvbi4gVGFrZXMgd2lsbCBiZVxuICBtYWRlIGFzIGlmIGJ5IDwhLCBhbmQgcHV0cyB3aWxsIGJlIG1hZGUgYXMgaWYgYnkgPiEuIFVubGVzc1xuICB0aGUgOnByaW9yaXR5IG9wdGlvbiBpcyB0cnVlLCBpZiBtb3JlIHRoYW4gb25lIHBvcnQgb3BlcmF0aW9uIGlzXG4gIHJlYWR5IGEgbm9uLWRldGVybWluaXN0aWMgY2hvaWNlIHdpbGwgYmUgbWFkZS4gSWYgbm8gb3BlcmF0aW9uIGlzXG4gIHJlYWR5IGFuZCBhIDpkZWZhdWx0IHZhbHVlIGlzIHN1cHBsaWVkLCBbZGVmYXVsdC12YWwgOmRlZmF1bHRdIHdpbGxcbiAgYmUgcmV0dXJuZWQsIG90aGVyd2lzZSBhbHRzISB3aWxsIHBhcmsgdW50aWwgdGhlIGZpcnN0IG9wZXJhdGlvbiB0b1xuICBiZWNvbWUgcmVhZHkgY29tcGxldGVzLiBSZXR1cm5zIFt2YWwgcG9ydF0gb2YgdGhlIGNvbXBsZXRlZFxuICBvcGVyYXRpb24sIHdoZXJlIHZhbCBpcyB0aGUgdmFsdWUgdGFrZW4gZm9yIHRha2VzLCBhbmQgYVxuICBib29sZWFuICh0cnVlIHVubGVzcyBhbHJlYWR5IGNsb3NlZCwgYXMgcGVyIHB1dCEpIGZvciBwdXRzLlxuXG4gIG9wdHMgYXJlIHBhc3NlZCBhcyA6a2V5IHZhbCAuLi4gU3VwcG9ydGVkIG9wdGlvbnM6XG5cbiAgOmRlZmF1bHQgdmFsIC0gdGhlIHZhbHVlIHRvIHVzZSBpZiBub25lIG9mIHRoZSBvcGVyYXRpb25zIGFyZSBpbW1lZGlhdGVseSByZWFkeVxuICA6cHJpb3JpdHkgdHJ1ZSAtIChkZWZhdWx0IG5pbCkgd2hlbiB0cnVlLCB0aGUgb3BlcmF0aW9ucyB3aWxsIGJlIHRyaWVkIGluIG9yZGVyLlxuXG4gIE5vdGU6IHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSBwb3J0IGV4cHMgb3IgdmFsIGV4cHJzIHdpbGwgYmVcbiAgdXNlZCwgbm9yIGluIHdoYXQgb3JkZXIgc2hvdWxkIHRoZXkgYmUsIHNvIHRoZXkgc2hvdWxkIG5vdCBiZVxuICBkZXBlbmRlZCB1cG9uIGZvciBzaWRlIGVmZmVjdHMuIiwgOmFyZ2xpc3RzIChbcG9ydHMgJiB7OmFzIG9wdHN9XSl9LCA6c291cmNlICIoZGVmblxyXG4gYWx0cyFcclxuIFwiQ29tcGxldGVzIGF0IG1vc3Qgb25lIG9mIHNldmVyYWwgY2hhbm5lbCBvcGVyYXRpb25zLiBNdXN0IGJlIGNhbGxlZFxcbiAgIGluc2lkZSBhIChnbyAuLi4pIGJsb2NrLiBwb3J0cyBpcyBhIHZlY3RvciBvZiBjaGFubmVsIGVuZHBvaW50cyxcXG4gICB3aGljaCBjYW4gYmUgZWl0aGVyIGEgY2hhbm5lbCB0byB0YWtlIGZyb20gb3IgYSB2ZWN0b3Igb2ZcXG4gIFtjaGFubmVsLXRvLXB1dC10byB2YWwtdG8tcHV0XSwgaW4gYW55IGNvbWJpbmF0aW9uLiBUYWtlcyB3aWxsIGJlXFxuICBtYWRlIGFzIGlmIGJ5IDwhLCBhbmQgcHV0cyB3aWxsIGJlIG1hZGUgYXMgaWYgYnkgPiEuIFVubGVzc1xcbiAgdGhlIDpwcmlvcml0eSBvcHRpb24gaXMgdHJ1ZSwgaWYgbW9yZSB0aGFuIG9uZSBwb3J0IG9wZXJhdGlvbiBpc1xcbiAgcmVhZHkgYSBub24tZGV0ZXJtaW5pc3RpYyBjaG9pY2Ugd2lsbCBiZSBtYWRlLiBJZiBubyBvcGVyYXRpb24gaXNcXG4gIHJlYWR5IGFuZCBhIDpkZWZhdWx0IHZhbHVlIGlzIHN1cHBsaWVkLCBbZGVmYXVsdC12YWwgOmRlZmF1bHRdIHdpbGxcXG4gIGJlIHJldHVybmVkLCBvdGhlcndpc2UgYWx0cyEgd2lsbCBwYXJrIHVudGlsIHRoZSBmaXJzdCBvcGVyYXRpb24gdG9cXG4gIGJlY29tZSByZWFkeSBjb21wbGV0ZXMuIFJldHVybnMgW3ZhbCBwb3J0XSBvZiB0aGUgY29tcGxldGVkXFxuICBvcGVyYXRpb24sIHdoZXJlIHZhbCBpcyB0aGUgdmFsdWUgdGFrZW4gZm9yIHRha2VzLCBhbmQgYVxcbiAgYm9vbGVhbiAodHJ1ZSB1bmxlc3MgYWxyZWFkeSBjbG9zZWQsIGFzIHBlciBwdXQhKSBmb3IgcHV0cy5cXG5cXG4gIG9wdHMgYXJlIHBhc3NlZCBhcyA6a2V5IHZhbCAuLi4gU3VwcG9ydGVkIG9wdGlvbnM6XFxuXFxuICA6ZGVmYXVsdCB2YWwgLSB0aGUgdmFsdWUgdG8gdXNlIGlmIG5vbmUgb2YgdGhlIG9wZXJhdGlvbnMgYXJlIGltbWVkaWF0ZWx5IHJlYWR5XFxuICA6cHJpb3JpdHkgdHJ1ZSAtIChkZWZhdWx0IG5pbCkgd2hlbiB0cnVlLCB0aGUgb3BlcmF0aW9ucyB3aWxsIGJlIHRyaWVkIGluIG9yZGVyLlxcblxcbiAgTm90ZTogdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgdGhlIHBvcnQgZXhwcyBvciB2YWwgZXhwcnMgd2lsbCBiZVxcbiAgdXNlZCwgbm9yIGluIHdoYXQgb3JkZXIgc2hvdWxkIHRoZXkgYmUsIHNvIHRoZXkgc2hvdWxkIG5vdCBiZVxcbiAgZGVwZW5kZWQgdXBvbiBmb3Igc2lkZSBlZmZlY3RzLlwiXHJcbiBbcG9ydHMgJiB7OmFzIG9wdHN9XVxyXG4gKHRocm93IChqcy9FcnJvci4gXCJhbHRzISB1c2VkIG5vdCBpbiAoZ28gLi4uKSBibG9ja1wiKSkpXHJcbiJ9IHs6c3ltIHVuc3ViLCA6bWV0YSB7OmRvYyAiVW5zdWJzY3JpYmVzIGEgY2hhbm5lbCBmcm9tIGEgdG9waWMgb2YgYSBwdWIiLCA6YXJnbGlzdHMgKFtwIHRvcGljIGNoXSl9LCA6c291cmNlICIoZGVmblxyXG4gdW5zdWJcclxuIFwiVW5zdWJzY3JpYmVzIGEgY2hhbm5lbCBmcm9tIGEgdG9waWMgb2YgYSBwdWJcIlxyXG4gW3AgdG9waWMgY2hdXHJcbiAodW5zdWIqIHAgdG9waWMgY2gpKVxyXG4ifSB7OnN5bSBwb2xsISwgOm1ldGEgezpkb2MgIlRha2VzIGEgdmFsIGZyb20gcG9ydCBpZiBpdCdzIHBvc3NpYmxlIHRvIGRvIHNvIGltbWVkaWF0ZWx5LlxuICBOZXZlciBibG9ja3MuIFJldHVybnMgdmFsdWUgaWYgc3VjY2Vzc2Z1bCwgbmlsIG90aGVyd2lzZS4iLCA6YXJnbGlzdHMgKFtwb3J0XSl9LCA6c291cmNlICIoZGVmblxyXG4gcG9sbCFcclxuIFwiVGFrZXMgYSB2YWwgZnJvbSBwb3J0IGlmIGl0J3MgcG9zc2libGUgdG8gZG8gc28gaW1tZWRpYXRlbHkuXFxuICBOZXZlciBibG9ja3MuIFJldHVybnMgdmFsdWUgaWYgc3VjY2Vzc2Z1bCwgbmlsIG90aGVyd2lzZS5cIlxyXG4gW3BvcnRdXHJcbiAobGV0IFtyZXQgKGltcGwvdGFrZSEgcG9ydCAoZm4taGFuZGxlciBub3AgZmFsc2UpKV0gKHdoZW4gcmV0IEByZXQpKSlcclxuIn0gezpzeW0gbWFwPCwgOm1ldGEgezpkb2MgIkRlcHJlY2F0ZWQgLSB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVtb3ZlZC4gVXNlIHRyYW5zZHVjZXIgaW5zdGVhZCIsIDphcmdsaXN0cyAoW2YgY2hdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBtYXA8XHJcbiBcIkRlcHJlY2F0ZWQgLSB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVtb3ZlZC4gVXNlIHRyYW5zZHVjZXIgaW5zdGVhZFwiXHJcbiBbZiBjaF1cclxuIChyZWlmeVxyXG4gIGltcGwvQ2hhbm5lbFxyXG4gIChjbG9zZSEgW19dIChpbXBsL2Nsb3NlISBjaCkpXHJcbiAgKGNsb3NlZD8gW19dIChpbXBsL2Nsb3NlZD8gY2gpKVxyXG4gIGltcGwvUmVhZFBvcnRcclxuICAodGFrZSFcclxuICAgW18gZm4xXVxyXG4gICAobGV0XHJcbiAgICBbcmV0XHJcbiAgICAgKGltcGwvdGFrZSFcclxuICAgICAgY2hcclxuICAgICAgKHJlaWZ5XHJcbiAgICAgICBpbXBsL0hhbmRsZXJcclxuICAgICAgIChhY3RpdmU/IFtfXSAoaW1wbC9hY3RpdmU/IGZuMSkpXHJcbiAgICAgICAoYmxvY2thYmxlPyBbX10gdHJ1ZSlcclxuICAgICAgIChjb21taXRcclxuICAgICAgICBbX11cclxuICAgICAgICAobGV0XHJcbiAgICAgICAgIFtmMSAoaW1wbC9jb21taXQgZm4xKV1cclxuICAgICAgICAgKGZuKlxyXG4gICAgICAgICAgW3AxX180MTI4NyNdXHJcbiAgICAgICAgICAoZjEgKGlmIChuaWw/IHAxX180MTI4NyMpIG5pbCAoZiBwMV9fNDEyODcjKSkpKSkpKSldXHJcbiAgICAoaWYgKGFuZCByZXQgKG5vdCAobmlsPyBAcmV0KSkpIChjaGFubmVscy9ib3ggKGYgQHJldCkpIHJldCkpKVxyXG4gIGltcGwvV3JpdGVQb3J0XHJcbiAgKHB1dCEgW18gdmFsIGZuMV0gKGltcGwvcHV0ISBjaCB2YWwgZm4xKSkpKVxyXG4ifSB7OnN5bSBkby1hbHRzLCA6bWV0YSB7OmRvYyAicmV0dXJucyBkZXJlZmFibGUgW3ZhbCBwb3J0XSBpZiBpbW1lZGlhdGUsIG5pbCBpZiBlbnF1ZXVlZCIsIDphcmdsaXN0cyAoW2ZyZXQgcG9ydHMgb3B0c10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGRvLWFsdHNcclxuIFwicmV0dXJucyBkZXJlZmFibGUgW3ZhbCBwb3J0XSBpZiBpbW1lZGlhdGUsIG5pbCBpZiBlbnF1ZXVlZFwiXHJcbiBbZnJldCBwb3J0cyBvcHRzXVxyXG4gKGxldFxyXG4gIFtmbGFnXHJcbiAgIChhbHQtZmxhZylcclxuICAgblxyXG4gICAoY291bnQgcG9ydHMpXHJcbiAgIGlkeHNcclxuICAgKHJhbmRvbS1hcnJheSBuKVxyXG4gICBwcmlvcml0eVxyXG4gICAoOnByaW9yaXR5IG9wdHMpXHJcbiAgIHJldFxyXG4gICAobG9vcFxyXG4gICAgW2kgMF1cclxuICAgICh3aGVuXHJcbiAgICAgKDwgaSBuKVxyXG4gICAgIChsZXRcclxuICAgICAgW2lkeFxyXG4gICAgICAgKGlmIHByaW9yaXR5IGkgKGFnZXQgaWR4cyBpKSlcclxuICAgICAgIHBvcnRcclxuICAgICAgIChudGggcG9ydHMgaWR4KVxyXG4gICAgICAgd3BvcnRcclxuICAgICAgICh3aGVuICh2ZWN0b3I/IHBvcnQpIChwb3J0IDApKVxyXG4gICAgICAgdmJveFxyXG4gICAgICAgKGlmXHJcbiAgICAgICAgd3BvcnRcclxuICAgICAgICAobGV0XHJcbiAgICAgICAgIFt2YWwgKHBvcnQgMSldXHJcbiAgICAgICAgIChpbXBsL3B1dCFcclxuICAgICAgICAgIHdwb3J0XHJcbiAgICAgICAgICB2YWxcclxuICAgICAgICAgIChhbHQtaGFuZGxlclxyXG4gICAgICAgICAgIGZsYWdcclxuICAgICAgICAgICAoZm4qIFtwMV9fNDEyODMjXSAoZnJldCBbcDFfXzQxMjgzIyB3cG9ydF0pKSkpKVxyXG4gICAgICAgIChpbXBsL3Rha2UhXHJcbiAgICAgICAgIHBvcnRcclxuICAgICAgICAgKGFsdC1oYW5kbGVyXHJcbiAgICAgICAgICBmbGFnXHJcbiAgICAgICAgICAoZm4qIFtwMV9fNDEyODQjXSAoZnJldCBbcDFfXzQxMjg0IyBwb3J0XSkpKSkpXVxyXG4gICAgICAoaWZcclxuICAgICAgIHZib3hcclxuICAgICAgIChjaGFubmVscy9ib3ggW0B2Ym94IChvciB3cG9ydCBwb3J0KV0pXHJcbiAgICAgICAocmVjdXIgKGluYyBpKSkpKSkpXVxyXG4gIChvclxyXG4gICByZXRcclxuICAgKHdoZW5cclxuICAgIChjb250YWlucz8gb3B0cyA6ZGVmYXVsdClcclxuICAgICh3aGVuLWxldFxyXG4gICAgIFtnb3QgKGFuZCAoaW1wbC9hY3RpdmU/IGZsYWcpIChpbXBsL2NvbW1pdCBmbGFnKSldXHJcbiAgICAgKGNoYW5uZWxzL2JveCBbKDpkZWZhdWx0IG9wdHMpIDpkZWZhdWx0XSkpKSkpKVxyXG4ifSB7OnN5bSBwaXBlbGluZS1hc3luYywgOm1ldGEgezpkb2MgIlRha2VzIGVsZW1lbnRzIGZyb20gdGhlIGZyb20gY2hhbm5lbCBhbmQgc3VwcGxpZXMgdGhlbSB0byB0aGUgdG9cbiAgY2hhbm5lbCwgc3ViamVjdCB0byB0aGUgYXN5bmMgZnVuY3Rpb24gYWYsIHdpdGggcGFyYWxsZWxpc20gbi4gYWZcbiAgbXVzdCBiZSBhIGZ1bmN0aW9uIG9mIHR3byBhcmd1bWVudHMsIHRoZSBmaXJzdCBhbiBpbnB1dCB2YWx1ZSBhbmRcbiAgdGhlIHNlY29uZCBhIGNoYW5uZWwgb24gd2hpY2ggdG8gcGxhY2UgdGhlIHJlc3VsdChzKS4gYWYgbXVzdCBjbG9zZSFcbiAgdGhlIGNoYW5uZWwgYmVmb3JlIHJldHVybmluZy4gIFRoZSBwcmVzdW1wdGlvbiBpcyB0aGF0IGFmIHdpbGxcbiAgcmV0dXJuIGltbWVkaWF0ZWx5LCBoYXZpbmcgbGF1bmNoZWQgc29tZSBhc3luY2hyb25vdXMgb3BlcmF0aW9uXG4gIHdob3NlIGNvbXBsZXRpb24vY2FsbGJhY2sgd2lsbCBtYW5pcHVsYXRlIHRoZSByZXN1bHQgY2hhbm5lbC4gT3V0cHV0c1xuICB3aWxsIGJlIHJldHVybmVkIGluIG9yZGVyIHJlbGF0aXZlIHRvICB0aGUgaW5wdXRzLiBCeSBkZWZhdWx0LCB0aGUgdG9cbiAgY2hhbm5lbCB3aWxsIGJlIGNsb3NlZCB3aGVuIHRoZSBmcm9tIGNoYW5uZWwgY2xvc2VzLCBidXQgY2FuIGJlXG4gIGRldGVybWluZWQgYnkgdGhlIGNsb3NlPyAgcGFyYW1ldGVyLiBXaWxsIHN0b3AgY29uc3VtaW5nIHRoZSBmcm9tXG4gIGNoYW5uZWwgaWYgdGhlIHRvIGNoYW5uZWwgY2xvc2VzLiIsIDphcmdsaXN0cyBbW24gdG8gYWYgZnJvbV0gW24gdG8gYWYgZnJvbSBjbG9zZT9dXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBwaXBlbGluZS1hc3luY1xyXG4gXCJUYWtlcyBlbGVtZW50cyBmcm9tIHRoZSBmcm9tIGNoYW5uZWwgYW5kIHN1cHBsaWVzIHRoZW0gdG8gdGhlIHRvXFxuICBjaGFubmVsLCBzdWJqZWN0IHRvIHRoZSBhc3luYyBmdW5jdGlvbiBhZiwgd2l0aCBwYXJhbGxlbGlzbSBuLiBhZlxcbiAgbXVzdCBiZSBhIGZ1bmN0aW9uIG9mIHR3byBhcmd1bWVudHMsIHRoZSBmaXJzdCBhbiBpbnB1dCB2YWx1ZSBhbmRcXG4gIHRoZSBzZWNvbmQgYSBjaGFubmVsIG9uIHdoaWNoIHRvIHBsYWNlIHRoZSByZXN1bHQocykuIGFmIG11c3QgY2xvc2UhXFxuICB0aGUgY2hhbm5lbCBiZWZvcmUgcmV0dXJuaW5nLiAgVGhlIHByZXN1bXB0aW9uIGlzIHRoYXQgYWYgd2lsbFxcbiAgcmV0dXJuIGltbWVkaWF0ZWx5LCBoYXZpbmcgbGF1bmNoZWQgc29tZSBhc3luY2hyb25vdXMgb3BlcmF0aW9uXFxuICB3aG9zZSBjb21wbGV0aW9uL2NhbGxiYWNrIHdpbGwgbWFuaXB1bGF0ZSB0aGUgcmVzdWx0IGNoYW5uZWwuIE91dHB1dHNcXG4gIHdpbGwgYmUgcmV0dXJuZWQgaW4gb3JkZXIgcmVsYXRpdmUgdG8gIHRoZSBpbnB1dHMuIEJ5IGRlZmF1bHQsIHRoZSB0b1xcbiAgY2hhbm5lbCB3aWxsIGJlIGNsb3NlZCB3aGVuIHRoZSBmcm9tIGNoYW5uZWwgY2xvc2VzLCBidXQgY2FuIGJlXFxuICBkZXRlcm1pbmVkIGJ5IHRoZSBjbG9zZT8gIHBhcmFtZXRlci4gV2lsbCBzdG9wIGNvbnN1bWluZyB0aGUgZnJvbVxcbiAgY2hhbm5lbCBpZiB0aGUgdG8gY2hhbm5lbCBjbG9zZXMuXCJcclxuIChbbiB0byBhZiBmcm9tXSAocGlwZWxpbmUtYXN5bmMgbiB0byBhZiBmcm9tIHRydWUpKVxyXG4gKFtuIHRvIGFmIGZyb20gY2xvc2U/XSAocGlwZWxpbmUqIG4gdG8gYWYgZnJvbSBjbG9zZT8gbmlsIDphc3luYykpKVxyXG4ifSB7OnN5bSBNaXgsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzIChhZG1peCogc29sby1tb2RlKiB0b2dnbGUqIHVubWl4KiB1bm1peC1hbGwqKX0gezpzeW0gdG9nZ2xlKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttIHN0YXRlLW1hcF0pfSwgOnByb3RvY29sIE1peH0gezpzeW0gbXVsdCwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYW5kIHJldHVybnMgYSBtdWx0KGlwbGUpIG9mIHRoZSBzdXBwbGllZCBjaGFubmVsLiBDaGFubmVsc1xuICBjb250YWluaW5nIGNvcGllcyBvZiB0aGUgY2hhbm5lbCBjYW4gYmUgY3JlYXRlZCB3aXRoICd0YXAnLCBhbmRcbiAgZGV0YWNoZWQgd2l0aCAndW50YXAnLlxuXG4gIEVhY2ggaXRlbSBpcyBkaXN0cmlidXRlZCB0byBhbGwgdGFwcyBpbiBwYXJhbGxlbCBhbmQgc3luY2hyb25vdXNseSxcbiAgaS5lLiBlYWNoIHRhcCBtdXN0IGFjY2VwdCBiZWZvcmUgdGhlIG5leHQgaXRlbSBpcyBkaXN0cmlidXRlZC4gVXNlXG4gIGJ1ZmZlcmluZy93aW5kb3dpbmcgdG8gcHJldmVudCBzbG93IHRhcHMgZnJvbSBob2xkaW5nIHVwIHRoZSBtdWx0LlxuXG4gIEl0ZW1zIHJlY2VpdmVkIHdoZW4gdGhlcmUgYXJlIG5vIHRhcHMgZ2V0IGRyb3BwZWQuXG5cbiAgSWYgYSB0YXAgcHV0cyB0byBhIGNsb3NlZCBjaGFubmVsLCBpdCB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgbXVsdC4iLCA6YXJnbGlzdHMgKFtjaF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIG11bHRcclxuIFwiQ3JlYXRlcyBhbmQgcmV0dXJucyBhIG11bHQoaXBsZSkgb2YgdGhlIHN1cHBsaWVkIGNoYW5uZWwuIENoYW5uZWxzXFxuICBjb250YWluaW5nIGNvcGllcyBvZiB0aGUgY2hhbm5lbCBjYW4gYmUgY3JlYXRlZCB3aXRoICd0YXAnLCBhbmRcXG4gIGRldGFjaGVkIHdpdGggJ3VudGFwJy5cXG5cXG4gIEVhY2ggaXRlbSBpcyBkaXN0cmlidXRlZCB0byBhbGwgdGFwcyBpbiBwYXJhbGxlbCBhbmQgc3luY2hyb25vdXNseSxcXG4gIGkuZS4gZWFjaCB0YXAgbXVzdCBhY2NlcHQgYmVmb3JlIHRoZSBuZXh0IGl0ZW0gaXMgZGlzdHJpYnV0ZWQuIFVzZVxcbiAgYnVmZmVyaW5nL3dpbmRvd2luZyB0byBwcmV2ZW50IHNsb3cgdGFwcyBmcm9tIGhvbGRpbmcgdXAgdGhlIG11bHQuXFxuXFxuICBJdGVtcyByZWNlaXZlZCB3aGVuIHRoZXJlIGFyZSBubyB0YXBzIGdldCBkcm9wcGVkLlxcblxcbiAgSWYgYSB0YXAgcHV0cyB0byBhIGNsb3NlZCBjaGFubmVsLCBpdCB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgbXVsdC5cIlxyXG4gW2NoXVxyXG4gKGxldFxyXG4gIFtjc1xyXG4gICAoYXRvbSB7fSlcclxuICAgbVxyXG4gICAocmVpZnlcclxuICAgIE11eFxyXG4gICAgKG11eGNoKiBbX10gY2gpXHJcbiAgICBNdWx0XHJcbiAgICAodGFwKiBbXyBjaCBjbG9zZT9dIChzd2FwISBjcyBhc3NvYyBjaCBjbG9zZT8pIG5pbClcclxuICAgICh1bnRhcCogW18gY2hdIChzd2FwISBjcyBkaXNzb2MgY2gpIG5pbClcclxuICAgICh1bnRhcC1hbGwqIFtfXSAocmVzZXQhIGNzIHt9KSBuaWwpKVxyXG4gICBkY2hhblxyXG4gICAoY2hhbiAxKVxyXG4gICBkY3RyXHJcbiAgIChhdG9tIG5pbClcclxuICAgZG9uZVxyXG4gICAoZm4gW19dICh3aGVuICh6ZXJvPyAoc3dhcCEgZGN0ciBkZWMpKSAocHV0ISBkY2hhbiB0cnVlKSkpXVxyXG4gIChnby1sb29wXHJcbiAgIFtdXHJcbiAgIChsZXRcclxuICAgIFt2YWwgKDwhIGNoKV1cclxuICAgIChpZlxyXG4gICAgIChuaWw/IHZhbClcclxuICAgICAoZG9zZXEgW1tjIGNsb3NlP10gQGNzXSAod2hlbiBjbG9zZT8gKGNsb3NlISBjKSkpXHJcbiAgICAgKGxldFxyXG4gICAgICBbY2hzIChrZXlzIEBjcyldXHJcbiAgICAgIChyZXNldCEgZGN0ciAoY291bnQgY2hzKSlcclxuICAgICAgKGRvc2VxXHJcbiAgICAgICBbYyBjaHNdXHJcbiAgICAgICAod2hlbi1ub3QgKHB1dCEgYyB2YWwgZG9uZSkgKGRvbmUgbmlsKSAodW50YXAqIG0gYykpKVxyXG4gICAgICAod2hlbiAoc2VxIGNocykgKDwhIGRjaGFuKSlcclxuICAgICAgKHJlY3VyKSkpKSlcclxuICBtKSlcclxuIn0gezpzeW0gbWFwY2F0PCwgOm1ldGEgezpkb2MgIkRlcHJlY2F0ZWQgLSB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVtb3ZlZC4gVXNlIHRyYW5zZHVjZXIgaW5zdGVhZCIsIDphcmdsaXN0cyBbW2YgaW5dIFtmIGluIGJ1Zi1vci1uXV19LCA6c291cmNlICIoZGVmblxyXG4gbWFwY2F0PFxyXG4gXCJEZXByZWNhdGVkIC0gdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHJlbW92ZWQuIFVzZSB0cmFuc2R1Y2VyIGluc3RlYWRcIlxyXG4gKFtmIGluXSAobWFwY2F0PCBmIGluIG5pbCkpXHJcbiAoW2YgaW4gYnVmLW9yLW5dIChsZXQgW291dCAoY2hhbiBidWYtb3ItbildIChtYXBjYXQqIGYgaW4gb3V0KSBvdXQpKSlcclxuIn0gezpzeW0gaW9jLWFsdHMhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N0YXRlIGNvbnQtYmxvY2sgcG9ydHMgJiB7OmFzIG9wdHN9XSl9LCA6c291cmNlICIoZGVmblxyXG4gaW9jLWFsdHMhXHJcbiBbc3RhdGUgY29udC1ibG9jayBwb3J0cyAmIHs6YXMgb3B0c31dXHJcbiAoaW9jL2FzZXQtYWxsISBzdGF0ZSBoZWxwZXJzL1NUQVRFLUlEWCBjb250LWJsb2NrKVxyXG4gKHdoZW4tbGV0XHJcbiAgW2NiXHJcbiAgIChjbGpzLmNvcmUuYXN5bmMvZG8tYWx0c1xyXG4gICAgKGZuXHJcbiAgICAgW3ZhbF1cclxuICAgICAoaW9jL2FzZXQtYWxsISBzdGF0ZSBoZWxwZXJzL1ZBTFVFLUlEWCB2YWwpXHJcbiAgICAgKGhlbHBlcnMvcnVuLXN0YXRlLW1hY2hpbmUtd3JhcHBlZCBzdGF0ZSkpXHJcbiAgICBwb3J0c1xyXG4gICAgb3B0cyldXHJcbiAgKGlvYy9hc2V0LWFsbCEgc3RhdGUgaGVscGVycy9WQUxVRS1JRFggQGNiKVxyXG4gIDpyZWN1cikpXHJcbiJ9IHs6c3ltIHVuYmxvY2tpbmctYnVmZmVyPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiBhIGNoYW5uZWwgY3JlYXRlZCB3aXRoIGJ1ZmYgd2lsbCBuZXZlciBibG9jay4gVGhhdCBpcyB0byBzYXksXG4gICBwdXRzIGludG8gdGhpcyBidWZmZXIgd2lsbCBuZXZlciBjYXVzZSB0aGUgYnVmZmVyIHRvIGJlIGZ1bGwuICIsIDphcmdsaXN0cyAoW2J1ZmZdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB1bmJsb2NraW5nLWJ1ZmZlcj9cclxuIFwiUmV0dXJucyB0cnVlIGlmIGEgY2hhbm5lbCBjcmVhdGVkIHdpdGggYnVmZiB3aWxsIG5ldmVyIGJsb2NrLiBUaGF0IGlzIHRvIHNheSxcXG4gICBwdXRzIGludG8gdGhpcyBidWZmZXIgd2lsbCBuZXZlciBjYXVzZSB0aGUgYnVmZmVyIHRvIGJlIGZ1bGwuIFwiXHJcbiBbYnVmZl1cclxuIChzYXRpc2ZpZXM/IGltcGwvVW5ibG9ja2luZ0J1ZmZlciBidWZmKSlcclxuIn0gezpzeW0gcHV0ISwgOm1ldGEgezpkb2MgIkFzeW5jaHJvbm91c2x5IHB1dHMgYSB2YWwgaW50byBwb3J0LCBjYWxsaW5nIGZuMSAoaWYgc3VwcGxpZWQpIHdoZW5cbiAgIGNvbXBsZXRlLiBuaWwgdmFsdWVzIGFyZSBub3QgYWxsb3dlZC4gV2lsbCB0aHJvdyBpZiBjbG9zZWQuIElmXG4gICBvbi1jYWxsZXI/IChkZWZhdWx0IHRydWUpIGlzIHRydWUsIGFuZCB0aGUgcHV0IGlzIGltbWVkaWF0ZWx5XG4gICBhY2NlcHRlZCwgd2lsbCBjYWxsIGZuMSBvbiBjYWxsaW5nIHRocmVhZC4gIFJldHVybnMgbmlsLiIsIDphcmdsaXN0cyBbW3BvcnQgdmFsXSBbcG9ydCB2YWwgZm4xXSBbcG9ydCB2YWwgZm4xIG9uLWNhbGxlcj9dXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBwdXQhXHJcbiBcIkFzeW5jaHJvbm91c2x5IHB1dHMgYSB2YWwgaW50byBwb3J0LCBjYWxsaW5nIGZuMSAoaWYgc3VwcGxpZWQpIHdoZW5cXG4gICBjb21wbGV0ZS4gbmlsIHZhbHVlcyBhcmUgbm90IGFsbG93ZWQuIFdpbGwgdGhyb3cgaWYgY2xvc2VkLiBJZlxcbiAgIG9uLWNhbGxlcj8gKGRlZmF1bHQgdHJ1ZSkgaXMgdHJ1ZSwgYW5kIHRoZSBwdXQgaXMgaW1tZWRpYXRlbHlcXG4gICBhY2NlcHRlZCwgd2lsbCBjYWxsIGZuMSBvbiBjYWxsaW5nIHRocmVhZC4gIFJldHVybnMgbmlsLlwiXHJcbiAoW3BvcnQgdmFsXSAoaWYtbGV0IFtyZXQgKGltcGwvcHV0ISBwb3J0IHZhbCBmaG5vcCldIEByZXQgdHJ1ZSkpXHJcbiAoW3BvcnQgdmFsIGZuMV0gKHB1dCEgcG9ydCB2YWwgZm4xIHRydWUpKVxyXG4gKFtwb3J0IHZhbCBmbjEgb24tY2FsbGVyP11cclxuICAoaWYtbGV0XHJcbiAgIFtyZXRiIChpbXBsL3B1dCEgcG9ydCB2YWwgKGZuLWhhbmRsZXIgZm4xKSldXHJcbiAgIChsZXRcclxuICAgIFtyZXQgQHJldGJdXHJcbiAgICAoaWYgb24tY2FsbGVyPyAoZm4xIHJldCkgKGRpc3BhdGNoL3J1biAoZm4qIFtdIChmbjEgcmV0KSkpKVxyXG4gICAgcmV0KVxyXG4gICB0cnVlKSkpXHJcbiJ9IHs6c3ltIHRha2UhLCA6bWV0YSB7OmRvYyAiQXN5bmNocm9ub3VzbHkgdGFrZXMgYSB2YWwgZnJvbSBwb3J0LCBwYXNzaW5nIHRvIGZuMS4gV2lsbCBwYXNzIG5pbFxuICAgaWYgY2xvc2VkLiBJZiBvbi1jYWxsZXI/IChkZWZhdWx0IHRydWUpIGlzIHRydWUsIGFuZCB2YWx1ZSBpc1xuICAgaW1tZWRpYXRlbHkgYXZhaWxhYmxlLCB3aWxsIGNhbGwgZm4xIG9uIGNhbGxpbmcgdGhyZWFkLlxuICAgUmV0dXJucyBuaWwuIiwgOmFyZ2xpc3RzIFtbcG9ydCBmbjFdIFtwb3J0IGZuMSBvbi1jYWxsZXI/XV19LCA6c291cmNlICIoZGVmblxyXG4gdGFrZSFcclxuIFwiQXN5bmNocm9ub3VzbHkgdGFrZXMgYSB2YWwgZnJvbSBwb3J0LCBwYXNzaW5nIHRvIGZuMS4gV2lsbCBwYXNzIG5pbFxcbiAgIGlmIGNsb3NlZC4gSWYgb24tY2FsbGVyPyAoZGVmYXVsdCB0cnVlKSBpcyB0cnVlLCBhbmQgdmFsdWUgaXNcXG4gICBpbW1lZGlhdGVseSBhdmFpbGFibGUsIHdpbGwgY2FsbCBmbjEgb24gY2FsbGluZyB0aHJlYWQuXFxuICAgUmV0dXJucyBuaWwuXCJcclxuIChbcG9ydCBmbjFdICh0YWtlISBwb3J0IGZuMSB0cnVlKSlcclxuIChbcG9ydCBmbjEgb24tY2FsbGVyP11cclxuICAobGV0XHJcbiAgIFtyZXQgKGltcGwvdGFrZSEgcG9ydCAoZm4taGFuZGxlciBmbjEpKV1cclxuICAgKHdoZW5cclxuICAgIHJldFxyXG4gICAgKGxldFxyXG4gICAgIFt2YWwgQHJldF1cclxuICAgICAoaWYgb24tY2FsbGVyPyAoZm4xIHZhbCkgKGRpc3BhdGNoL3J1biAoZm4qIFtdIChmbjEgdmFsKSkpKSkpXHJcbiAgIG5pbCkpKVxyXG4ifSksIGNsanMuY29yZS5hc3luYy5pbXBsLmJ1ZmZlcnMgKHs6c3ltIGFjb3B5LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NyYyBzcmMtc3RhcnQgZGVzdCBkZXN0LXN0YXJ0IGxlbl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGFjb3B5XHJcbiBbc3JjIHNyYy1zdGFydCBkZXN0IGRlc3Qtc3RhcnQgbGVuXVxyXG4gKGxvb3BcclxuICBbY250IDBdXHJcbiAgKHdoZW5cclxuICAgKDwgY250IGxlbilcclxuICAgKGFzZXQgZGVzdCAoKyBkZXN0LXN0YXJ0IGNudCkgKGFnZXQgc3JjICgrIHNyYy1zdGFydCBjbnQpKSlcclxuICAgKHJlY3VyIChpbmMgY250KSkpKSlcclxuIn0gezpzeW0gcmluZy1idWZmZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJpbmctYnVmZmVyXHJcbiBbbl1cclxuIChhc3NlcnQgKD4gbiAwKSBcIkNhbid0IGNyZWF0ZSBhIHJpbmcgYnVmZmVyIG9mIHNpemUgMFwiKVxyXG4gKFJpbmdCdWZmZXIuIDAgMCAwIChtYWtlLWFycmF5IG4pKSlcclxuIn0gezpzeW0gZml4ZWQtYnVmZmVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW25dKX0sIDpzb3VyY2UgIihkZWZuIGZpeGVkLWJ1ZmZlciBbbl0gKEZpeGVkQnVmZmVyLiAocmluZy1idWZmZXIgbikgbikpXHJcbiJ9IHs6c3ltIGRyb3BwaW5nLWJ1ZmZlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtuXSl9LCA6c291cmNlICIoZGVmbiBkcm9wcGluZy1idWZmZXIgW25dIChEcm9wcGluZ0J1ZmZlci4gKHJpbmctYnVmZmVyIG4pIG4pKVxyXG4ifSB7OnN5bSBzbGlkaW5nLWJ1ZmZlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtuXSl9LCA6c291cmNlICIoZGVmbiBzbGlkaW5nLWJ1ZmZlciBbbl0gKFNsaWRpbmdCdWZmZXIuIChyaW5nLWJ1ZmZlciBuKSBuKSlcclxuIn0gezpzeW0gcHJvbWlzZS1idWZmZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmbiBwcm9taXNlLWJ1ZmZlciBbXSAoUHJvbWlzZUJ1ZmZlci4gTk8tVkFMKSlcclxuIn0pLCBjbGpzLmNvcmUuYXN5bmMuaW1wbC5wcm90b2NvbHMgKHs6c3ltIHJlbW92ZSEsIDptZXRhIHs6ZG9jICJyZW1vdmUgYW5kIHJldHVybiBuZXh0IGl0ZW0gZnJvbSBidWZmZXIsIGNhbGxlZCB1bmRlciBjaGFuIG11dGV4IiwgOmFyZ2xpc3RzIChbYl0pfSwgOnByb3RvY29sIEJ1ZmZlcn0gezpzeW0gY2xvc2UtYnVmISwgOm1ldGEgezpkb2MgImNhbGxlZCBvbiBjaGFuIGNsb3NlZCB1bmRlciBjaGFuIG11dGV4LCByZXR1cm4gaWdub3JlZCIsIDphcmdsaXN0cyAoW2JdKX0sIDpwcm90b2NvbCBCdWZmZXJ9IHs6c3ltIGNsb3NlISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjaGFuXSl9LCA6cHJvdG9jb2wgQ2hhbm5lbH0gezpzeW0gSGFuZGxlciwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKGFjdGl2ZT8gYmxvY2thYmxlPyBjb21taXQpfSB7OnN5bSBibG9ja2FibGU/LCA6bWV0YSB7OmRvYyAicmV0dXJucyB0cnVlIGlmIHRoaXMgaGFuZGxlciBtYXkgYmUgYmxvY2tlZCwgb3RoZXJ3aXNlIGl0IG11c3Qgbm90IGJsb2NrIiwgOmFyZ2xpc3RzIChbaF0pfSwgOnByb3RvY29sIEhhbmRsZXJ9IHs6c3ltIGFjdGl2ZT8sIDptZXRhIHs6ZG9jICJyZXR1cm5zIHRydWUgaWYgaGFzIGNhbGxiYWNrLiBNdXN0IHdvcmsgdy9vIGxvY2siLCA6YXJnbGlzdHMgKFtoXSl9LCA6cHJvdG9jb2wgSGFuZGxlcn0gezpzeW0gQnVmZmVyLCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAoYWRkISogY2xvc2UtYnVmISBmdWxsPyByZW1vdmUhKX0gezpzeW0gZnVsbD8sIDptZXRhIHs6ZG9jICJyZXR1cm5zIHRydWUgaWYgYnVmZmVyIGNhbm5vdCBhY2NlcHQgcHV0IiwgOmFyZ2xpc3RzIChbYl0pfSwgOnByb3RvY29sIEJ1ZmZlcn0gezpzeW0gYWRkISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1tiXSBbYiBpdG1dXX0sIDpzb3VyY2UgIihkZWZuIGFkZCEgKFtiXSBiKSAoW2IgaXRtXSAoYXNzZXJ0IChub3QgKG5pbD8gaXRtKSkpIChhZGQhKiBiIGl0bSkpKVxyXG4ifSB7OnN5bSBhZGQhKiwgOm1ldGEgezpkb2MgImlmIHJvb20sIGFkZCBpdGVtIHRvIHRoZSBidWZmZXIsIHJldHVybnMgYiwgY2FsbGVkIHVuZGVyIGNoYW4gbXV0ZXgiLCA6YXJnbGlzdHMgKFtiIGl0bV0pfSwgOnByb3RvY29sIEJ1ZmZlcn0gezpzeW0gUmVhZFBvcnQsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzICh0YWtlISl9IHs6c3ltIENoYW5uZWwsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzIChjbG9zZSEgY2xvc2VkPyl9IHs6c3ltIGNsb3NlZD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbY2hhbl0pfSwgOnByb3RvY29sIENoYW5uZWx9IHs6c3ltIFVuYmxvY2tpbmdCdWZmZXIsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzICgpfSB7OnN5bSBNQVgtUVVFVUUtU0laRSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgTUFYLVFVRVVFLVNJWkUgMTAyNClcclxuIn0gezpzeW0gY29tbWl0LCA6bWV0YSB7OmRvYyAiY29tbWl0IHRvIGZ1bGZpbGxpbmcgaXRzIGVuZCBvZiB0aGUgdHJhbnNmZXIsIHJldHVybnMgY2IuIE11c3QgYmUgY2FsbGVkIHdpdGhpbiBsb2NrIiwgOmFyZ2xpc3RzIChbaF0pfSwgOnByb3RvY29sIEhhbmRsZXJ9IHs6c3ltIHB1dCEsIDptZXRhIHs6ZG9jICJkZXJlZmFibGUgYm9vbGVhbiAoZmFsc2UgaWYgYWxyZWFkeSBjbG9zZWQpIGlmIGhhbmRsZWQsIG5pbCBpZiBwdXQgd2FzIGVucXVldWVkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE11c3QgdGhyb3cgb24gbmlsIHZhbC4iLCA6YXJnbGlzdHMgKFtwb3J0IHZhbCBmbjEtaGFuZGxlcl0pfSwgOnByb3RvY29sIFdyaXRlUG9ydH0gezpzeW0gdGFrZSEsIDptZXRhIHs6ZG9jICJkZXJlZmFibGUgdmFsIGlmIHRha2VuLCBuaWwgaWYgdGFrZSB3YXMgZW5xdWV1ZWQiLCA6YXJnbGlzdHMgKFtwb3J0IGZuMS1oYW5kbGVyXSl9LCA6cHJvdG9jb2wgUmVhZFBvcnR9IHs6c3ltIFdyaXRlUG9ydCwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKHB1dCEpfSksIHJ1bS5kZXJpdmVkLWF0b20gKHs6c3ltIGRlcml2ZWQtYXRvbSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1tyZWZzIGtleSBmXSBbcmVmcyBrZXkgZiBvcHRzXV19LCA6c291cmNlICIoZGVmblxyXG4gZGVyaXZlZC1hdG9tXHJcbiAoW3JlZnMga2V5IGZdIChkZXJpdmVkLWF0b20gcmVmcyBrZXkgZiB7fSkpXHJcbiAoW3JlZnMga2V5IGYgb3B0c11cclxuICAobGV0XHJcbiAgIFt7OmtleXMgW3JlZiBjaGVjay1lcXVhbHM/XSwgOm9yIHtjaGVjay1lcXVhbHM/IHRydWV9fVxyXG4gICAgb3B0c1xyXG4gICAgcmVjYWxjXHJcbiAgICAoY2FzZVxyXG4gICAgIChjb3VudCByZWZzKVxyXG4gICAgIDFcclxuICAgICAobGV0IFtbYV0gcmVmc10gKGZuKiBbXSAoZiBAYSkpKVxyXG4gICAgIDJcclxuICAgICAobGV0IFtbYSBiXSByZWZzXSAoZm4qIFtdIChmIEBhIEBiKSkpXHJcbiAgICAgM1xyXG4gICAgIChsZXQgW1thIGIgY10gcmVmc10gKGZuKiBbXSAoZiBAYSBAYiBAYykpKVxyXG4gICAgIChmbiogW10gKGFwcGx5IGYgKG1hcCBkZXJlZiByZWZzKSkpKVxyXG4gICAgc2lua1xyXG4gICAgKGlmIHJlZiAoZG90byByZWYgKHJlc2V0ISAocmVjYWxjKSkpIChhdG9tIChyZWNhbGMpKSlcclxuICAgIHdhdGNoXHJcbiAgICAoaWZcclxuICAgICBjaGVjay1lcXVhbHM/XHJcbiAgICAgKGZuXHJcbiAgICAgIFtfIF8gXyBfXVxyXG4gICAgICAobGV0XHJcbiAgICAgICBbbmV3LXZhbCAocmVjYWxjKV1cclxuICAgICAgICh3aGVuIChub3Q9IEBzaW5rIG5ldy12YWwpIChyZXNldCEgc2luayBuZXctdmFsKSkpKVxyXG4gICAgIChmbiBbXyBfIF8gX10gKHJlc2V0ISBzaW5rIChyZWNhbGMpKSkpXVxyXG4gICAoZG9zZXEgW3JlZiByZWZzXSAoYWRkLXdhdGNoIHJlZiBrZXkgd2F0Y2gpKVxyXG4gICBzaW5rKSkpXHJcbiJ9KSwgbWlzdGFrZXMtd2VyZS1tYWRlLmNvcmUgKHs6c3ltIGNhbi1yZWRvPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB3ZSBjYW4gcmVkby4iLCA6YXJnbGlzdHMgKFsqZWRpdC1oaXN0b3J5XSl9LCA6c291cmNlICIoZGVmblxyXG4gY2FuLXJlZG8/XHJcbiBcIlJldHVybnMgdHJ1ZSBpZiB3ZSBjYW4gcmVkby5cIlxyXG4gWyplZGl0LWhpc3RvcnldXHJcbiAoc29tZT8gKGdldC1uZXh0LXN0YXRlICplZGl0LWhpc3RvcnkpKSlcclxuIn0gezpzeW0gYXRvbT8sIDptZXRhIHt9LCA6c291cmNlICIoZGVmXHJcbiBhdG9tP1xyXG4gKGZuKlxyXG4gIFtwMV9fNDE2MzQjXVxyXG4gIChpbnN0YW5jZT9cclxuICAgIz8oOmNsaiBjbG9qdXJlLmxhbmcuQXRvbSA6Y2xqcyBjbGpzLmNvcmUvQXRvbSlcclxuICAgcDFfXzQxNjM0IykpKVxyXG4ifSB7OnN5bSBnZXQtY3VycmVudC1zdGF0ZSwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGN1cnJlbnQgc3RhdGUgZnJvbSBlZGl0LWhpc3RvcnksIG9yIG5pbCBpZiB0aGVyZSBpcyBub25lLiIsIDphcmdsaXN0cyAoWyplZGl0LWhpc3RvcnldKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBnZXQtY3VycmVudC1zdGF0ZVxyXG4gXCJSZXR1cm5zIHRoZSBjdXJyZW50IHN0YXRlIGZyb20gZWRpdC1oaXN0b3J5LCBvciBuaWwgaWYgdGhlcmUgaXMgbm9uZS5cIlxyXG4gWyplZGl0LWhpc3RvcnldXHJcbiAobGV0XHJcbiAgW3s6a2V5cyBbY3VycmVudC1zdGF0ZSBzdGF0ZXNdfSBAKmVkaXQtaGlzdG9yeV1cclxuICAoZ2V0IHN0YXRlcyBjdXJyZW50LXN0YXRlKSkpXHJcbiJ9IHs6c3ltIHVuZG8hLCA6bWV0YSB7OmRvYyAiQ2hhbmdlcyB0aGUgY3VycmVudCBzdGF0ZSBhbmQgcmV0dXJucyB0aGUgcHJldmlvdXMgc3RhdGUgZnJvbSBlZGl0LWhpc3RvcnksIG9yIG5pbCBpZiB0aGVyZSBpcyBub25lLiIsIDphcmdsaXN0cyAoWyplZGl0LWhpc3RvcnldKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB1bmRvIVxyXG4gXCJDaGFuZ2VzIHRoZSBjdXJyZW50IHN0YXRlIGFuZCByZXR1cm5zIHRoZSBwcmV2aW91cyBzdGF0ZSBmcm9tIGVkaXQtaGlzdG9yeSwgb3IgbmlsIGlmIHRoZXJlIGlzIG5vbmUuXCJcclxuIFsqZWRpdC1oaXN0b3J5XVxyXG4gKHdoZW4tbGV0XHJcbiAgW3N0YXRlIChnZXQtcHJldmlvdXMtc3RhdGUgKmVkaXQtaGlzdG9yeSldXHJcbiAgKHN3YXAhICplZGl0LWhpc3RvcnkgdXBkYXRlIDpjdXJyZW50LXN0YXRlIGRlYylcclxuICBzdGF0ZSkpXHJcbiJ9IHs6c3ltIHJlZG8hLCA6bWV0YSB7OmRvYyAiQ2hhbmdlcyB0aGUgY3VycmVudCBzdGF0ZSBhbmQgcmV0dXJucyB0aGUgbmV4dCBzdGF0ZSBmcm9tIGVkaXQtaGlzdG9yeSwgb3IgbmlsIGlmIHRoZXJlIGlzIG5vbmUuIiwgOmFyZ2xpc3RzIChbKmVkaXQtaGlzdG9yeV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlZG8hXHJcbiBcIkNoYW5nZXMgdGhlIGN1cnJlbnQgc3RhdGUgYW5kIHJldHVybnMgdGhlIG5leHQgc3RhdGUgZnJvbSBlZGl0LWhpc3RvcnksIG9yIG5pbCBpZiB0aGVyZSBpcyBub25lLlwiXHJcbiBbKmVkaXQtaGlzdG9yeV1cclxuICh3aGVuLWxldFxyXG4gIFtzdGF0ZSAoZ2V0LW5leHQtc3RhdGUgKmVkaXQtaGlzdG9yeSldXHJcbiAgKHN3YXAhICplZGl0LWhpc3RvcnkgdXBkYXRlIDpjdXJyZW50LXN0YXRlIGluYylcclxuICBzdGF0ZSkpXHJcbiJ9IHs6c3ltIGNhbi11bmRvPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB3ZSBjYW4gdW5kby4iLCA6YXJnbGlzdHMgKFsqZWRpdC1oaXN0b3J5XSl9LCA6c291cmNlICIoZGVmblxyXG4gY2FuLXVuZG8/XHJcbiBcIlJldHVybnMgdHJ1ZSBpZiB3ZSBjYW4gdW5kby5cIlxyXG4gWyplZGl0LWhpc3RvcnldXHJcbiAoc29tZT8gKGdldC1wcmV2aW91cy1zdGF0ZSAqZWRpdC1oaXN0b3J5KSkpXHJcbiJ9IHs6c3ltIGdldC1uZXh0LXN0YXRlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbmV4dCBzdGF0ZSBmcm9tIGVkaXQtaGlzdG9yeSwgb3IgbmlsIGlmIHRoZXJlIGlzIG5vbmUuIiwgOmFyZ2xpc3RzIChbKmVkaXQtaGlzdG9yeV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGdldC1uZXh0LXN0YXRlXHJcbiBcIlJldHVybnMgdGhlIG5leHQgc3RhdGUgZnJvbSBlZGl0LWhpc3RvcnksIG9yIG5pbCBpZiB0aGVyZSBpcyBub25lLlwiXHJcbiBbKmVkaXQtaGlzdG9yeV1cclxuIChsZXRcclxuICBbezprZXlzIFtjdXJyZW50LXN0YXRlIHN0YXRlc119IEAqZWRpdC1oaXN0b3J5XVxyXG4gIChnZXQgc3RhdGVzIChpbmMgY3VycmVudC1zdGF0ZSkpKSlcclxuIn0gezpzeW0gdXBkYXRlLWN1cnNvci1wb3NpdGlvbiEsIDptZXRhIHs6ZG9jICJVcGRhdGVzIG9ubHkgdGhlIGN1cnNvciBwb3NpdGlvbi4iLCA6YXJnbGlzdHMgKFsqZWRpdC1oaXN0b3J5IGN1cnNvci1wb3NpdGlvbl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHVwZGF0ZS1jdXJzb3ItcG9zaXRpb24hXHJcbiBcIlVwZGF0ZXMgb25seSB0aGUgY3Vyc29yIHBvc2l0aW9uLlwiXHJcbiBbKmVkaXQtaGlzdG9yeSBjdXJzb3ItcG9zaXRpb25dXHJcbiAobGV0XHJcbiAgW3s6a2V5cyBbY3VycmVudC1zdGF0ZV19IEAqZWRpdC1oaXN0b3J5XVxyXG4gICh3aGVuXHJcbiAgICg+PSBjdXJyZW50LXN0YXRlIDApXHJcbiAgIChzd2FwIVxyXG4gICAgKmVkaXQtaGlzdG9yeVxyXG4gICAgYXNzb2MtaW5cclxuICAgIFs6c3RhdGVzIGN1cnJlbnQtc3RhdGUgOmN1cnNvci1wb3NpdGlvbl1cclxuICAgIGN1cnNvci1wb3NpdGlvbikpKSlcclxuIn0gezpzeW0gdXBkYXRlLWVkaXQtaGlzdG9yeSEsIDptZXRhIHs6ZG9jICJVcGRhdGVzIHRoZSBlZGl0IGhpc3RvcnkgYXRvbS4iLCA6YXJnbGlzdHMgKFsqZWRpdC1oaXN0b3J5IHN0YXRlXSl9LCA6c291cmNlICIoZGVmblxyXG4gdXBkYXRlLWVkaXQtaGlzdG9yeSFcclxuIFwiVXBkYXRlcyB0aGUgZWRpdCBoaXN0b3J5IGF0b20uXCJcclxuIFsqZWRpdC1oaXN0b3J5IHN0YXRlXVxyXG4gKGxldFxyXG4gIFt7OmtleXMgW2N1cnJlbnQtc3RhdGUgc3RhdGVzIGxpbWl0XX1cclxuICAgQCplZGl0LWhpc3RvcnlcclxuICAgb2xkLXN0YXRlXHJcbiAgIChnZXQgc3RhdGVzIGN1cnJlbnQtc3RhdGUpXHJcbiAgIG9sZC1jdXJzb3ItcG9zaXRpb25cclxuICAgKG9yIChmaXJzdCAoOm9yaWdpbmFsLWN1cnNvci1wb3NpdGlvbiBvbGQtc3RhdGUpKSAwKVxyXG4gICBuZXctY3Vyc29yLXBvc2l0aW9uXHJcbiAgIChmaXJzdCAoOmN1cnNvci1wb3NpdGlvbiBzdGF0ZSkpXHJcbiAgIG5ldy1jdXJzb3ItY2hhbmdlXHJcbiAgICgtIG5ldy1jdXJzb3ItcG9zaXRpb24gb2xkLWN1cnNvci1wb3NpdGlvbilcclxuICAgc3RhdGVcclxuICAgKGFzc29jIHN0YXRlIDpvcmlnaW5hbC1jdXJzb3ItcG9zaXRpb24gKDpjdXJzb3ItcG9zaXRpb24gc3RhdGUpKV1cclxuICAod2hlblxyXG4gICAob3JcclxuICAgIChub3Q9ICg6dGV4dCBvbGQtc3RhdGUpICg6dGV4dCBzdGF0ZSkpXHJcbiAgICAoOnNlbGVjdGlvbi1jaGFuZ2U/IHN0YXRlKSlcclxuICAgKHN3YXAhXHJcbiAgICAqZWRpdC1oaXN0b3J5XHJcbiAgICAoZm5cclxuICAgICBbZWRpdC1oaXN0b3J5XVxyXG4gICAgIChsZXRcclxuICAgICAgW25ldy1jdXJyZW50LXN0YXRlXHJcbiAgICAgICAoaWZcclxuICAgICAgICAob3IgKDw9IGN1cnJlbnQtc3RhdGUgMSkgKG5vdD0gbmV3LWN1cnNvci1jaGFuZ2UgMSkpXHJcbiAgICAgICAgKGluYyBjdXJyZW50LXN0YXRlKVxyXG4gICAgICAgIGN1cnJlbnQtc3RhdGUpXHJcbiAgICAgICBuZXctc3RhdGVzXHJcbiAgICAgICAoc3VidmVjIHN0YXRlcyAwIG5ldy1jdXJyZW50LXN0YXRlKVxyXG4gICAgICAgbmV3LXN0YXRlc1xyXG4gICAgICAgKGNvbmogbmV3LXN0YXRlcyBzdGF0ZSldXHJcbiAgICAgIChpZlxyXG4gICAgICAgKGFuZCBsaW1pdCAoPiAoY291bnQgbmV3LXN0YXRlcykgbGltaXQpKVxyXG4gICAgICAgKGFzc29jXHJcbiAgICAgICAgZWRpdC1oaXN0b3J5XHJcbiAgICAgICAgOmN1cnJlbnQtc3RhdGVcclxuICAgICAgICAoZGVjIG5ldy1jdXJyZW50LXN0YXRlKVxyXG4gICAgICAgIDpzdGF0ZXNcclxuICAgICAgICAoc3VidmVjIG5ldy1zdGF0ZXMgMSkpXHJcbiAgICAgICAoYXNzb2NcclxuICAgICAgICBlZGl0LWhpc3RvcnlcclxuICAgICAgICA6Y3VycmVudC1zdGF0ZVxyXG4gICAgICAgIG5ldy1jdXJyZW50LXN0YXRlXHJcbiAgICAgICAgOnN0YXRlc1xyXG4gICAgICAgIG5ldy1zdGF0ZXMpKSkpKSkpKVxyXG4ifSB7OnN5bSBjcmVhdGUtZWRpdC1oaXN0b3J5LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm4gY3JlYXRlLWVkaXQtaGlzdG9yeSBbXSAoYXRvbSB7OmN1cnJlbnQtc3RhdGUgLTEsIDpzdGF0ZXMgW119KSlcclxuIn0gezpzeW0gZ2V0LXByZXZpb3VzLXN0YXRlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgcHJldmlvdXMgc3RhdGUgZnJvbSBlZGl0LWhpc3RvcnksIG9yIG5pbCBpZiB0aGVyZSBpcyBub25lLiIsIDphcmdsaXN0cyAoWyplZGl0LWhpc3RvcnldKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBnZXQtcHJldmlvdXMtc3RhdGVcclxuIFwiUmV0dXJucyB0aGUgcHJldmlvdXMgc3RhdGUgZnJvbSBlZGl0LWhpc3RvcnksIG9yIG5pbCBpZiB0aGVyZSBpcyBub25lLlwiXHJcbiBbKmVkaXQtaGlzdG9yeV1cclxuIChsZXRcclxuICBbezprZXlzIFtjdXJyZW50LXN0YXRlIHN0YXRlc119IEAqZWRpdC1oaXN0b3J5XVxyXG4gIChnZXQgc3RhdGVzIChkZWMgY3VycmVudC1zdGF0ZSkpKSlcclxuIn0pLCBjbGpzLnRvb2xzLnJlYWRlci5pbXBsLmluc3BlY3QgKHs6c3ltIGluc3BlY3QsIDptZXRhIHs6ZG9jICJSZXR1cm4gYSBzdHJpbmcgZGVzY3JpcHRpb24gb2YgdGhlIHZhbHVlIHN1cHBsaWVkLlxuICAgTWF5IGJlIHRoZSBhIHN0cmluZyB2ZXJzaW9uIG9mIHRoZSB2YWx1ZSBpdHNlbGYgKGUuZy4gXCJ0cnVlXCIpXG4gICBvciBpdCBtYXkgYmUgYSBkZXNjcmlwdGlvbiAoZS5nLiBcImFuIGluc3RhbmNlIG9mIEZvb1wiKS5cbiAgIElmIHRydW5jYXRlIGlzIHRydWUgdGhlbiByZXR1cm4gYSB2ZXJ5IHRlcnNlIHZlcnNpb24gb2ZcbiAgIHRoZSBpbnNwZWN0aW9uLiIsIDphcmdsaXN0cyBbW3hdIFt0cnVuY2F0ZSB4XV19LCA6c291cmNlICIoZGVmblxyXG4gaW5zcGVjdFxyXG4gXCJSZXR1cm4gYSBzdHJpbmcgZGVzY3JpcHRpb24gb2YgdGhlIHZhbHVlIHN1cHBsaWVkLlxcbiAgIE1heSBiZSB0aGUgYSBzdHJpbmcgdmVyc2lvbiBvZiB0aGUgdmFsdWUgaXRzZWxmIChlLmcuIFxcXCJ0cnVlXFxcIilcXG4gICBvciBpdCBtYXkgYmUgYSBkZXNjcmlwdGlvbiAoZS5nLiBcXFwiYW4gaW5zdGFuY2Ugb2YgRm9vXFxcIikuXFxuICAgSWYgdHJ1bmNhdGUgaXMgdHJ1ZSB0aGVuIHJldHVybiBhIHZlcnkgdGVyc2UgdmVyc2lvbiBvZlxcbiAgIHRoZSBpbnNwZWN0aW9uLlwiXHJcbiAoW3hdIChpbnNwZWN0KiBmYWxzZSB4KSlcclxuIChbdHJ1bmNhdGUgeF0gKGluc3BlY3QqIHRydW5jYXRlIHgpKSlcclxuIn0pLCBzYWJsb25vLmNvcmUgKHs6c3ltIHdyYXAtYXR0cnMsIDptZXRhIHs6ZG9jICJBZGQgYW4gb3B0aW9uYWwgYXR0cmlidXRlIGFyZ3VtZW50IHRvIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgZWxlbWVudCB2ZWN0b3IuIiwgOmFyZ2xpc3RzIChbZnVuY10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHdyYXAtYXR0cnNcclxuIFwiQWRkIGFuIG9wdGlvbmFsIGF0dHJpYnV0ZSBhcmd1bWVudCB0byBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIGVsZW1lbnQgdmVjdG9yLlwiXHJcbiBbZnVuY11cclxuIChmblxyXG4gIFsmIGFyZ3NdXHJcbiAgKGlmXHJcbiAgIChtYXA/IChmaXJzdCBhcmdzKSlcclxuICAgKGxldFxyXG4gICAgW1t0YWcgJiBib2R5XSAoYXBwbHkgZnVuYyAocmVzdCBhcmdzKSldXHJcbiAgICAoaWZcclxuICAgICAobWFwPyAoZmlyc3QgYm9keSkpXHJcbiAgICAgKGludG8gW3RhZyAobWVyZ2UgKGZpcnN0IGJvZHkpIChmaXJzdCBhcmdzKSldIChyZXN0IGJvZHkpKVxyXG4gICAgIChpbnRvIFt0YWcgKGZpcnN0IGFyZ3MpXSBib2R5KSkpXHJcbiAgIChhcHBseSBmdW5jIGFyZ3MpKSkpXHJcbiJ9IHs6c3ltIGluY2x1ZGUtY3NzLCA6bWV0YSB7OmRvYyAiSW5jbHVkZSBhIGxpc3Qgb2YgZXh0ZXJuYWwgc3R5bGVzaGVldCBmaWxlcy4iLCA6YXJnbGlzdHMgKFsmIHN0eWxlc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGluY2x1ZGUtY3NzXHJcbiBcIkluY2x1ZGUgYSBsaXN0IG9mIGV4dGVybmFsIHN0eWxlc2hlZXQgZmlsZXMuXCJcclxuIFsmIHN0eWxlc11cclxuIChmb3JcclxuICBbc3R5bGUgc3R5bGVzXVxyXG4gIFs6bGluayB7OnR5cGUgXCJ0ZXh0L2Nzc1wiLCA6aHJlZiAoYXMtc3RyIHN0eWxlKSwgOnJlbCBcInN0eWxlc2hlZXRcIn1dKSlcclxuIn0gezpzeW0gaW5jbHVkZS1qcywgOm1ldGEgezpkb2MgIkluY2x1ZGUgdGhlIEphdmFTY3JpcHQgbGlicmFyeSBhdCBgc3JjYC4iLCA6YXJnbGlzdHMgKFtzcmNdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBpbmNsdWRlLWpzXHJcbiBcIkluY2x1ZGUgdGhlIEphdmFTY3JpcHQgbGlicmFyeSBhdCBgc3JjYC5cIlxyXG4gW3NyY11cclxuIChkb20vYXBwZW5kQ2hpbGRcclxuICAoLi1ib2R5IChkb20vZ2V0RG9jdW1lbnQpKVxyXG4gIChkb20vY3JlYXRlRG9tIFwic2NyaXB0XCIgI2pzIHs6c3JjIHNyY30pKSlcclxuIn0gezpzeW0gaW5jbHVkZS1yZWFjdCwgOm1ldGEgezpkb2MgIkluY2x1ZGUgRmFjZWJvb2sncyBSZWFjdCBKYXZhU2NyaXB0IGxpYnJhcnkuIiwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxyXG4gaW5jbHVkZS1yZWFjdFxyXG4gXCJJbmNsdWRlIEZhY2Vib29rJ3MgUmVhY3QgSmF2YVNjcmlwdCBsaWJyYXJ5LlwiXHJcbiBbXVxyXG4gKGluY2x1ZGUtanMgXCJodHRwOi8vZmIubWUvcmVhY3QtMC4xMi4yLmpzXCIpKVxyXG4ifSB7OnN5bSAqZ3JvdXAqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqZ3JvdXAqIFtdKVxyXG4ifSB7OnN5bSBmaWxlLXVwbG9hZCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgZmlsZS11cGxvYWQgZmlsZS1maWVsZClcclxuIn0pLCBjbG9qdXJlLnNldCAoezpzeW0gdW5pb24sIDptZXRhIHs6ZG9jICJSZXR1cm4gYSBzZXQgdGhhdCBpcyB0aGUgdW5pb24gb2YgdGhlIGlucHV0IHNldHMiLCA6YXJnbGlzdHMgW1tdIFtzMV0gW3MxIHMyXSBbczEgczIgJiBzZXRzXV19LCA6c291cmNlICIoZGVmblxyXG4gdW5pb25cclxuIFwiUmV0dXJuIGEgc2V0IHRoYXQgaXMgdGhlIHVuaW9uIG9mIHRoZSBpbnB1dCBzZXRzXCJcclxuIChbXSAje30pXHJcbiAoW3MxXSBzMSlcclxuIChbczEgczJdXHJcbiAgKGlmXHJcbiAgICg8IChjb3VudCBzMSkgKGNvdW50IHMyKSlcclxuICAgKHJlZHVjZSBjb25qIHMyIHMxKVxyXG4gICAocmVkdWNlIGNvbmogczEgczIpKSlcclxuIChbczEgczIgJiBzZXRzXVxyXG4gIChsZXRcclxuICAgW2J1YmJsZWQtc2V0cyAoYnViYmxlLW1heC1rZXkgY291bnQgKGNvbmogc2V0cyBzMiBzMSkpXVxyXG4gICAocmVkdWNlIGludG8gKGZpcnN0IGJ1YmJsZWQtc2V0cykgKHJlc3QgYnViYmxlZC1zZXRzKSkpKSlcclxuIn0gezpzeW0gbWFwLWludmVydCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG1hcCB3aXRoIHRoZSB2YWxzIG1hcHBlZCB0byB0aGUga2V5cy4iLCA6YXJnbGlzdHMgKFttXSl9LCA6c291cmNlICIoZGVmblxyXG4gbWFwLWludmVydFxyXG4gXCJSZXR1cm5zIHRoZSBtYXAgd2l0aCB0aGUgdmFscyBtYXBwZWQgdG8gdGhlIGtleXMuXCJcclxuIFttXVxyXG4gKHJlZHVjZSAoZm4gW20gW2sgdl1dIChhc3NvYyBtIHYgaykpIHt9IG0pKVxyXG4ifSB7OnN5bSBqb2luLCA6bWV0YSB7OmRvYyAiV2hlbiBwYXNzZWQgMiByZWxzLCByZXR1cm5zIHRoZSByZWwgY29ycmVzcG9uZGluZyB0byB0aGUgbmF0dXJhbFxuICBqb2luLiBXaGVuIHBhc3NlZCBhbiBhZGRpdGlvbmFsIGtleW1hcCwgam9pbnMgb24gdGhlIGNvcnJlc3BvbmRpbmdcbiAga2V5cy4iLCA6YXJnbGlzdHMgW1t4cmVsIHlyZWxdIFt4cmVsIHlyZWwga21dXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBqb2luXHJcbiBcIldoZW4gcGFzc2VkIDIgcmVscywgcmV0dXJucyB0aGUgcmVsIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG5hdHVyYWxcXG4gIGpvaW4uIFdoZW4gcGFzc2VkIGFuIGFkZGl0aW9uYWwga2V5bWFwLCBqb2lucyBvbiB0aGUgY29ycmVzcG9uZGluZ1xcbiAga2V5cy5cIlxyXG4gKFt4cmVsIHlyZWxdXHJcbiAgKGlmXHJcbiAgIChhbmQgKHNlcSB4cmVsKSAoc2VxIHlyZWwpKVxyXG4gICAobGV0XHJcbiAgICBba3NcclxuICAgICAoaW50ZXJzZWN0aW9uIChzZXQgKGtleXMgKGZpcnN0IHhyZWwpKSkgKHNldCAoa2V5cyAoZmlyc3QgeXJlbCkpKSlcclxuICAgICBbciBzXVxyXG4gICAgIChpZiAoPD0gKGNvdW50IHhyZWwpIChjb3VudCB5cmVsKSkgW3hyZWwgeXJlbF0gW3lyZWwgeHJlbF0pXHJcbiAgICAgaWR4XHJcbiAgICAgKGluZGV4IHIga3MpXVxyXG4gICAgKHJlZHVjZVxyXG4gICAgIChmblxyXG4gICAgICBbcmV0IHhdXHJcbiAgICAgIChsZXRcclxuICAgICAgIFtmb3VuZCAoaWR4IChzZWxlY3Qta2V5cyB4IGtzKSldXHJcbiAgICAgICAoaWZcclxuICAgICAgICBmb3VuZFxyXG4gICAgICAgIChyZWR1Y2VcclxuICAgICAgICAgKGZuKlxyXG4gICAgICAgICAgW3AxX180MTU5OSMgcDJfXzQxNjAwI11cclxuICAgICAgICAgIChjb25qIHAxX180MTU5OSMgKG1lcmdlIHAyX180MTYwMCMgeCkpKVxyXG4gICAgICAgICByZXRcclxuICAgICAgICAgZm91bmQpXHJcbiAgICAgICAgcmV0KSkpXHJcbiAgICAgI3t9XHJcbiAgICAgcykpXHJcbiAgICN7fSkpXHJcbiAoW3hyZWwgeXJlbCBrbV1cclxuICAobGV0XHJcbiAgIFtbciBzIGtdXHJcbiAgICAoaWZcclxuICAgICAoPD0gKGNvdW50IHhyZWwpIChjb3VudCB5cmVsKSlcclxuICAgICBbeHJlbCB5cmVsIChtYXAtaW52ZXJ0IGttKV1cclxuICAgICBbeXJlbCB4cmVsIGttXSlcclxuICAgIGlkeFxyXG4gICAgKGluZGV4IHIgKHZhbHMgaykpXVxyXG4gICAocmVkdWNlXHJcbiAgICAoZm5cclxuICAgICBbcmV0IHhdXHJcbiAgICAgKGxldFxyXG4gICAgICBbZm91bmQgKGlkeCAocmVuYW1lLWtleXMgKHNlbGVjdC1rZXlzIHggKGtleXMgaykpIGspKV1cclxuICAgICAgKGlmXHJcbiAgICAgICBmb3VuZFxyXG4gICAgICAgKHJlZHVjZVxyXG4gICAgICAgIChmbipcclxuICAgICAgICAgW3AxX180MTYwMSMgcDJfXzQxNjAyI11cclxuICAgICAgICAgKGNvbmogcDFfXzQxNjAxIyAobWVyZ2UgcDJfXzQxNjAyIyB4KSkpXHJcbiAgICAgICAgcmV0XHJcbiAgICAgICAgZm91bmQpXHJcbiAgICAgICByZXQpKSlcclxuICAgICN7fVxyXG4gICAgcykpKSlcclxuIn0gezpzeW0gc2VsZWN0LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHNldCBvZiB0aGUgZWxlbWVudHMgZm9yIHdoaWNoIHByZWQgaXMgdHJ1ZSIsIDphcmdsaXN0cyAoW3ByZWQgeHNldF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHNlbGVjdFxyXG4gXCJSZXR1cm5zIGEgc2V0IG9mIHRoZSBlbGVtZW50cyBmb3Igd2hpY2ggcHJlZCBpcyB0cnVlXCJcclxuIFtwcmVkIHhzZXRdXHJcbiAocmVkdWNlIChmbiBbcyBrXSAoaWYgKHByZWQgaykgcyAoZGlzaiBzIGspKSkgeHNldCB4c2V0KSlcclxuIn0gezpzeW0gaW50ZXJzZWN0aW9uLCA6bWV0YSB7OmRvYyAiUmV0dXJuIGEgc2V0IHRoYXQgaXMgdGhlIGludGVyc2VjdGlvbiBvZiB0aGUgaW5wdXQgc2V0cyIsIDphcmdsaXN0cyBbW3MxXSBbczEgczJdIFtzMSBzMiAmIHNldHNdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBpbnRlcnNlY3Rpb25cclxuIFwiUmV0dXJuIGEgc2V0IHRoYXQgaXMgdGhlIGludGVyc2VjdGlvbiBvZiB0aGUgaW5wdXQgc2V0c1wiXHJcbiAoW3MxXSBzMSlcclxuIChbczEgczJdXHJcbiAgKGlmXHJcbiAgICg8IChjb3VudCBzMikgKGNvdW50IHMxKSlcclxuICAgKHJlY3VyIHMyIHMxKVxyXG4gICAocmVkdWNlXHJcbiAgICAoZm5cclxuICAgICBbcmVzdWx0IGl0ZW1dXHJcbiAgICAgKGlmIChjb250YWlucz8gczIgaXRlbSkgcmVzdWx0IChkaXNqIHJlc3VsdCBpdGVtKSkpXHJcbiAgICBzMVxyXG4gICAgczEpKSlcclxuIChbczEgczIgJiBzZXRzXVxyXG4gIChsZXRcclxuICAgW2J1YmJsZWQtc2V0c1xyXG4gICAgKGJ1YmJsZS1tYXgta2V5XHJcbiAgICAgKGZuKiBbcDFfXzQxNTk2I10gKC0gKGNvdW50IHAxX180MTU5NiMpKSlcclxuICAgICAoY29uaiBzZXRzIHMyIHMxKSldXHJcbiAgIChyZWR1Y2UgaW50ZXJzZWN0aW9uIChmaXJzdCBidWJibGVkLXNldHMpIChyZXN0IGJ1YmJsZWQtc2V0cykpKSkpXHJcbiJ9IHs6c3ltIHN1cGVyc2V0PywgOm1ldGEgezpkb2MgIklzIHNldDEgYSBzdXBlcnNldCBvZiBzZXQyPyIsIDphcmdsaXN0cyAoW3NldDEgc2V0Ml0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHN1cGVyc2V0P1xyXG4gXCJJcyBzZXQxIGEgc3VwZXJzZXQgb2Ygc2V0Mj9cIlxyXG4gW3NldDEgc2V0Ml1cclxuIChhbmRcclxuICAoPj0gKGNvdW50IHNldDEpIChjb3VudCBzZXQyKSlcclxuICAoZXZlcnk/IChmbiogW3AxX180MTYwNCNdIChjb250YWlucz8gc2V0MSBwMV9fNDE2MDQjKSkgc2V0MikpKVxyXG4ifSB7OnN5bSBpbmRleCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBtYXAgb2YgdGhlIGRpc3RpbmN0IHZhbHVlcyBvZiBrcyBpbiB0aGUgeHJlbCBtYXBwZWQgdG8gYVxuICBzZXQgb2YgdGhlIG1hcHMgaW4geHJlbCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlcyBvZiBrcy4iLCA6YXJnbGlzdHMgKFt4cmVsIGtzXSl9LCA6c291cmNlICIoZGVmblxyXG4gaW5kZXhcclxuIFwiUmV0dXJucyBhIG1hcCBvZiB0aGUgZGlzdGluY3QgdmFsdWVzIG9mIGtzIGluIHRoZSB4cmVsIG1hcHBlZCB0byBhXFxuICBzZXQgb2YgdGhlIG1hcHMgaW4geHJlbCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlcyBvZiBrcy5cIlxyXG4gW3hyZWwga3NdXHJcbiAocmVkdWNlXHJcbiAgKGZuXHJcbiAgIFttIHhdXHJcbiAgIChsZXQgW2lrIChzZWxlY3Qta2V5cyB4IGtzKV0gKGFzc29jIG0gaWsgKGNvbmogKGdldCBtIGlrICN7fSkgeCkpKSlcclxuICB7fVxyXG4gIHhyZWwpKVxyXG4ifSB7OnN5bSBzdWJzZXQ/LCA6bWV0YSB7OmRvYyAiSXMgc2V0MSBhIHN1YnNldCBvZiBzZXQyPyIsIDphcmdsaXN0cyAoW3NldDEgc2V0Ml0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHN1YnNldD9cclxuIFwiSXMgc2V0MSBhIHN1YnNldCBvZiBzZXQyP1wiXHJcbiBbc2V0MSBzZXQyXVxyXG4gKGFuZFxyXG4gICg8PSAoY291bnQgc2V0MSkgKGNvdW50IHNldDIpKVxyXG4gIChldmVyeT8gKGZuKiBbcDFfXzQxNjAzI10gKGNvbnRhaW5zPyBzZXQyIHAxX180MTYwMyMpKSBzZXQxKSkpXHJcbiJ9IHs6c3ltIHJlbmFtZSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSByZWwgb2YgdGhlIG1hcHMgaW4geHJlbCB3aXRoIHRoZSBrZXlzIGluIGttYXAgcmVuYW1lZCB0byB0aGUgdmFscyBpbiBrbWFwIiwgOmFyZ2xpc3RzIChbeHJlbCBrbWFwXSl9LCA6c291cmNlICIoZGVmblxyXG4gcmVuYW1lXHJcbiBcIlJldHVybnMgYSByZWwgb2YgdGhlIG1hcHMgaW4geHJlbCB3aXRoIHRoZSBrZXlzIGluIGttYXAgcmVuYW1lZCB0byB0aGUgdmFscyBpbiBrbWFwXCJcclxuIFt4cmVsIGttYXBdXHJcbiAoc2V0IChtYXAgKGZuKiBbcDFfXzQxNTk4I10gKHJlbmFtZS1rZXlzIHAxX180MTU5OCMga21hcCkpIHhyZWwpKSlcclxuIn0gezpzeW0gcmVuYW1lLWtleXMsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBtYXAgd2l0aCB0aGUga2V5cyBpbiBrbWFwIHJlbmFtZWQgdG8gdGhlIHZhbHMgaW4ga21hcCIsIDphcmdsaXN0cyAoW21hcCBrbWFwXSl9LCA6c291cmNlICIoZGVmblxyXG4gcmVuYW1lLWtleXNcclxuIFwiUmV0dXJucyB0aGUgbWFwIHdpdGggdGhlIGtleXMgaW4ga21hcCByZW5hbWVkIHRvIHRoZSB2YWxzIGluIGttYXBcIlxyXG4gW21hcCBrbWFwXVxyXG4gKHJlZHVjZVxyXG4gIChmblxyXG4gICBbbSBbb2xkIG5ld11dXHJcbiAgIChpZiAoY29udGFpbnM/IG1hcCBvbGQpIChhc3NvYyBtIG5ldyAoZ2V0IG1hcCBvbGQpKSBtKSlcclxuICAoYXBwbHkgZGlzc29jIG1hcCAoa2V5cyBrbWFwKSlcclxuICBrbWFwKSlcclxuIn0gezpzeW0gcHJvamVjdCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSByZWwgb2YgdGhlIGVsZW1lbnRzIG9mIHhyZWwgd2l0aCBvbmx5IHRoZSBrZXlzIGluIGtzIiwgOmFyZ2xpc3RzIChbeHJlbCBrc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHByb2plY3RcclxuIFwiUmV0dXJucyBhIHJlbCBvZiB0aGUgZWxlbWVudHMgb2YgeHJlbCB3aXRoIG9ubHkgdGhlIGtleXMgaW4ga3NcIlxyXG4gW3hyZWwga3NdXHJcbiAoc2V0IChtYXAgKGZuKiBbcDFfXzQxNTk3I10gKHNlbGVjdC1rZXlzIHAxX180MTU5NyMga3MpKSB4cmVsKSkpXHJcbiJ9IHs6c3ltIGRpZmZlcmVuY2UsIDptZXRhIHs6ZG9jICJSZXR1cm4gYSBzZXQgdGhhdCBpcyB0aGUgZmlyc3Qgc2V0IHdpdGhvdXQgZWxlbWVudHMgb2YgdGhlIHJlbWFpbmluZyBzZXRzIiwgOmFyZ2xpc3RzIFtbczFdIFtzMSBzMl0gW3MxIHMyICYgc2V0c11dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGRpZmZlcmVuY2VcclxuIFwiUmV0dXJuIGEgc2V0IHRoYXQgaXMgdGhlIGZpcnN0IHNldCB3aXRob3V0IGVsZW1lbnRzIG9mIHRoZSByZW1haW5pbmcgc2V0c1wiXHJcbiAoW3MxXSBzMSlcclxuIChbczEgczJdXHJcbiAgKGlmXHJcbiAgICg8IChjb3VudCBzMSkgKGNvdW50IHMyKSlcclxuICAgKHJlZHVjZVxyXG4gICAgKGZuXHJcbiAgICAgW3Jlc3VsdCBpdGVtXVxyXG4gICAgIChpZiAoY29udGFpbnM/IHMyIGl0ZW0pIChkaXNqIHJlc3VsdCBpdGVtKSByZXN1bHQpKVxyXG4gICAgczFcclxuICAgIHMxKVxyXG4gICAocmVkdWNlIGRpc2ogczEgczIpKSlcclxuIChbczEgczIgJiBzZXRzXSAocmVkdWNlIGRpZmZlcmVuY2UgczEgKGNvbmogc2V0cyBzMikpKSlcclxuIn0pLCBvZG95bGUucnVtICh7OnN5bSAqbWF0Y2hlcyosIDptZXRhIHs6ZG9jICJJZiBib3VuZCB0byBhbiB2b2xhdGlsZSBjb250YWluaW5nIGEgaGFzaCBtYXAsXG4gICAgICAgICAgICBtYXRjaGVzIHRyaWdnZXJlZCBieSBgZmlyZS1ydWxlc2Agd2lsbCBiZSBzdG9yZWQgaW4gaXRcbiAgICAgICAgICAgIHJhdGhlciB0aGFuIGluIHRoZSBhdG9tIGNyZWF0ZWQgYnkgYHJ1bGVzZXRgLlxuICAgICAgICAgICAgVGhpcyBpcyBpbXBvcnRhbnQgd2hlbiBtb2RpZnlpbmcgdGhlIHNlc3Npb24gaW4gYSBzZXJ2ZXItc2lkZVxuICAgICAgICAgICAgcm91dGUgYmVjYXVzZSBpdCBlbnN1cmVzIHRoZSBtb2RpZmljYXRpb25zIHdpbGwgYmUgbG9jYWxcbiAgICAgICAgICAgIGFuZCB3aWxsIG5vdCBhZmZlY3Qgb3RoZXIgY29ubmVjdGlvbnMgaGFwcGVuaW5nIHNpbXVsdGFuZW91c2x5LlxuICAgICAgICAgICAgRG8gbm90IHVzZSBpdCBmcm9tIGNsb2p1cmVzY3JpcHQuIn0sIDpzb3VyY2UgIihkZWYgKm1hdGNoZXMqIG5pbClcclxuIn0gezpzeW0gYXRvbSwgOm1ldGEgezpkb2MgIlJldHVybnMgYW4gYXRvbSB0aGF0IGNhbiBob2xkIGxvY2FsIHN0YXRlIGZvciBhIGNvbXBvbmVudC5cbiAgT25seSB3b3JrcyBpbiBhIDp0aGVuIGJsb2NrLiIsIDphcmdsaXN0cyAoW2luaXRpYWwtdmFsdWVdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBhdG9tXHJcbiBcIlJldHVybnMgYW4gYXRvbSB0aGF0IGNhbiBob2xkIGxvY2FsIHN0YXRlIGZvciBhIGNvbXBvbmVudC5cXG4gIE9ubHkgd29ya3MgaW4gYSA6dGhlbiBibG9jay5cIlxyXG4gW2luaXRpYWwtdmFsdWVdXHJcbiAod2hlbi1ub3RcclxuICAqbG9jYWwtcG9pbnRlcipcclxuICAodGhyb3cgKGV4LWluZm8gXCJZb3UgY2Fubm90IGNhbGwgYGF0b21gIGhlcmVcIiB7fSkpKVxyXG4gKHdoZW4tbm90XHJcbiAgQCpjYW4tcmV0dXJuLWF0b20/KlxyXG4gICh0aHJvd1xyXG4gICAoZXgtaW5mbyBcIllvdSBjYW4gb25seSBjYWxsIGBhdG9tYCBvbmNlIGluIGVhY2ggOnRoZW4gYmxvY2tcIiB7fSkpKVxyXG4gKHZyZXNldCEgKmNhbi1yZXR1cm4tYXRvbT8qIGZhbHNlKVxyXG4gKGlmLWxldFxyXG4gIFsqbG9jYWwgQCpsb2NhbC1wb2ludGVyKl1cclxuICAqbG9jYWxcclxuICAobGV0XHJcbiAgIFsqbG9jYWwgKHJlc2V0ISAqbG9jYWwtcG9pbnRlciogKGNsb2p1cmUuY29yZS9hdG9tIGluaXRpYWwtdmFsdWUpKV1cclxuICAgKHdoZW4tbGV0XHJcbiAgICBbY21wICpyZWFjdC1jb21wb25lbnQqXVxyXG4gICAgKGFkZC13YXRjaFxyXG4gICAgICpsb2NhbFxyXG4gICAgIDpvZG95bGUucnVtL2xvY2FsXHJcbiAgICAgKGZuIFtfIF8gcCBuXSAod2hlbiAobm90PSBwIG4pICguZm9yY2VVcGRhdGUgY21wKSkpKSlcclxuICAgKmxvY2FsKSkpXHJcbiJ9IHs6c3ltIHByb3AsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBwcm9wIHNlbnQgdG8gdGhlIGNvbXBvbmVudC4gT25seSB3b3JrcyBpbiBhIDp0aGVuIGJsb2NrLiIsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHByb3BcclxuIFwiUmV0dXJucyB0aGUgcHJvcCBzZW50IHRvIHRoZSBjb21wb25lbnQuIE9ubHkgd29ya3MgaW4gYSA6dGhlbiBibG9jay5cIlxyXG4gW11cclxuICh3aGVuLW5vdFxyXG4gICpsb2NhbC1wb2ludGVyKlxyXG4gICh0aHJvdyAoZXgtaW5mbyBcIllvdSBjYW5ub3QgY2FsbCBgcHJvcGAgaGVyZVwiIHt9KSkpXHJcbiAqcHJvcCopXHJcbiJ9IHs6c3ltIHJlYWN0aXZlLCA6bWV0YSB7OmRvYyAiQSBydW0gbWl4aW4gdGhhdCBtYWtlcyB0aGUgYXNzb2NpYXRlZCBjb21wb25lbnQgcmVhY3QgdG8gY2hhbmdlcyBmcm9tXG4gIHRoZSBzZXNzaW9uIGFuZCB0aGUgbG9jYWwgYXRvbS4iLCA6YXJnbGlzdHMgKFtydWxlLWtleSAqbWF0Y2hdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiByZWFjdGl2ZVxyXG4gXCJBIHJ1bSBtaXhpbiB0aGF0IG1ha2VzIHRoZSBhc3NvY2lhdGVkIGNvbXBvbmVudCByZWFjdCB0byBjaGFuZ2VzIGZyb21cXG4gIHRoZSBzZXNzaW9uIGFuZCB0aGUgbG9jYWwgYXRvbS5cIlxyXG4gW3J1bGUta2V5ICptYXRjaF1cclxuIHs6aW5pdFxyXG4gIChmblxyXG4gICBbc3RhdGUgcHJvcHNdXHJcbiAgICgtPlxyXG4gICAgc3RhdGVcclxuICAgIChhc3NvYyA6b2RveWxlLnJ1bS9sb2NhbC1wb2ludGVyIChjbG9qdXJlLmNvcmUvYXRvbSBuaWwpKVxyXG4gICAgIz8oOmNsanMgKGFzc29jIDpvZG95bGUucnVtL2dsb2JhbC1rZXkgKGxldCBbZ2xvYmFsLWtleSAocmFuZG9tLXV1aWQpIGNtcCAoOnJ1bS9yZWFjdC1jb21wb25lbnQgc3RhdGUpXSAoYWRkLXdhdGNoICptYXRjaCBnbG9iYWwta2V5IChmbiBbXyBfIHAgbl0gKHdoZW4gKG5vdD0gcCBuKSAoLmZvcmNlVXBkYXRlIGNtcCkpKSkgZ2xvYmFsLWtleSkpKSkpLFxyXG4gIDp3cmFwLXJlbmRlclxyXG4gIChmblxyXG4gICBbcmVuZGVyLWZuXVxyXG4gICAoZm5cclxuICAgIFtzdGF0ZV1cclxuICAgIChiaW5kaW5nXHJcbiAgICAgWypsb2NhbC1wb2ludGVyKlxyXG4gICAgICAoOm9kb3lsZS5ydW0vbG9jYWwtcG9pbnRlciBzdGF0ZSlcclxuICAgICAgKnJlYWN0LWNvbXBvbmVudCpcclxuICAgICAgKDpydW0vcmVhY3QtY29tcG9uZW50IHN0YXRlKVxyXG4gICAgICAqY2FuLXJldHVybi1hdG9tPypcclxuICAgICAgKHZvbGF0aWxlISB0cnVlKVxyXG4gICAgICAqcHJvcCpcclxuICAgICAgKGZpcnN0ICg6cnVtL2FyZ3Mgc3RhdGUpKVxyXG4gICAgICBvLyptYXRjaCpcclxuICAgICAgIz8oOmNsanMgKGNsb2p1cmUuY29yZS9kZXJlZiAqbWF0Y2gpIDpjbGogKG9yIChzb21lLT4gKm1hdGNoZXMqIGRlcmVmIHJ1bGUta2V5KSAoY2xvanVyZS5jb3JlL2RlcmVmICptYXRjaCkpKV1cclxuICAgICAocmVuZGVyLWZuIHN0YXRlKSkpKSxcclxuICA6d2lsbC11bm1vdW50XHJcbiAgKGZuXHJcbiAgIFtzdGF0ZV1cclxuICAgIz8oOmNsanMgKHJlbW92ZS13YXRjaCAqbWF0Y2ggKDpvZG95bGUucnVtL2dsb2JhbC1rZXkgc3RhdGUpKSlcclxuICAgKHdoZW4tbGV0XHJcbiAgICBbKmxvY2FsIEAoOm9kb3lsZS5ydW0vbG9jYWwtcG9pbnRlciBzdGF0ZSldXHJcbiAgICAocmVtb3ZlLXdhdGNoICpsb2NhbCA6b2RveWxlLnJ1bS9sb2NhbCkpXHJcbiAgIChkaXNzb2Mgc3RhdGUgOm9kb3lsZS5ydW0vbG9jYWwtcG9pbnRlcikpfSlcclxuIn0pLCBwYXJlbi1zb3VwLmluc3RhcmVwbCAoezpzeW0gKndlYi13b3JrZXItcGF0aCosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICp3ZWItd29ya2VyLXBhdGgqIG5pbClcclxuIn0gezpzeW0gZm9ybS0+c2VyaWFsaXphYmxlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2Zvcm1dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBmb3JtLT5zZXJpYWxpemFibGVcclxuIFtmb3JtXVxyXG4gKGlmXHJcbiAgKGluc3RhbmNlPyBqcy9FcnJvciBmb3JtKVxyXG4gIChhcnJheVxyXG4gICAob3IgKHNvbWUtPiBmb3JtIC4tY2F1c2UgLi1tZXNzYWdlKSAoLi1tZXNzYWdlIGZvcm0pKVxyXG4gICAoLi1maWxlTmFtZSBmb3JtKVxyXG4gICAoLi1saW5lTnVtYmVyIGZvcm0pKVxyXG4gIChwci1zdHIgZm9ybSkpKVxyXG4ifSB7OnN5bSByZXN1bHRzLT5odG1sLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBIVE1MIGZvciB0aGUgZ2l2ZW4gZXZhbCByZXN1bHRzLiIsIDphcmdsaXN0cyAoW3Jlc3VsdHMgbG9jYXRpb25zIGxpbWl0XSl9LCA6c291cmNlICIoZGVmblxyXG4gcmVzdWx0cy0+aHRtbFxyXG4gXCJSZXR1cm5zIEhUTUwgZm9yIHRoZSBnaXZlbiBldmFsIHJlc3VsdHMuXCJcclxuIFtyZXN1bHRzIGxvY2F0aW9ucyBsaW1pdF1cclxuIChsb29wXHJcbiAgW2kgMCBldmFscyAodHJhbnNpZW50IFtdKV1cclxuICAobGV0XHJcbiAgIFtyZXMgKGdldCByZXN1bHRzIGkpIHs6a2V5cyBbdG9wIGhlaWdodF19IChnZXQgbG9jYXRpb25zIGkpXVxyXG4gICAoaWZcclxuICAgIChhbmQgcmVzIHRvcCBoZWlnaHQpXHJcbiAgICAocmVjdXJcclxuICAgICAoaW5jIGkpXHJcbiAgICAgKGNvbmohXHJcbiAgICAgIGV2YWxzXHJcbiAgICAgIChmb3JtYXRcclxuICAgICAgIFwiPGRpdiBjbGFzcz0nJXMnIHN0eWxlPSd0b3A6ICVzcHg7IGhlaWdodDogJXNweDsgbWluLWhlaWdodDogJXNweCc+JXM8L2Rpdj5cIlxyXG4gICAgICAgKGlmIChhcnJheT8gcmVzKSBcInJlc3VsdCBlcnJvclwiIFwicmVzdWx0XCIpXHJcbiAgICAgICB0b3BcclxuICAgICAgIGhlaWdodFxyXG4gICAgICAgaGVpZ2h0XHJcbiAgICAgICAoc29tZS0+XHJcbiAgICAgICAgKGlmIChhcnJheT8gcmVzKSAoZmlyc3QgcmVzKSByZXMpXHJcbiAgICAgICAgKHRydW5jYXRlIGxpbWl0KVxyXG4gICAgICAgIGhzL2VzY2FwZS1odG1sLXN0cikpKSlcclxuICAgIChqb2luIChwZXJzaXN0ZW50ISBldmFscykpKSkpKVxyXG4ifSB7OnN5bSB1c2Utd2ViLXdvcmtlciEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxyXG4gdXNlLXdlYi13b3JrZXIhXHJcbiBbXVxyXG4gKHNldCEgKndlYi13b3JrZXItcGF0aCogXCJwYXJlbi1zb3VwLWNvbXBpbGVyLmpzXCIpKVxyXG4ifSB7OnN5bSBlbGVtPywgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgZWxlbT8gKGZuKiBbcDFfXzQxNjU5I10gKGluc3RhbmNlPyBqcy9FbGVtZW50IHAxX180MTY1OSMpKSlcclxuIn0gezpzeW0gY29sbGVjdGlvbi0+Y29udGVudCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbGVtXSl9LCA6c291cmNlICIoZGVmblxyXG4gY29sbGVjdGlvbi0+Y29udGVudFxyXG4gW2VsZW1dXHJcbiAobG9vcFxyXG4gIFtlIGVsZW0gY29udGVudCAoLi10ZXh0Q29udGVudCBlbGVtKV1cclxuICAoaWYtbGV0XHJcbiAgIFtwcmV2ICguLXByZXZpb3VzU2libGluZyBlKV1cclxuICAgKGlmXHJcbiAgICAodGV4dC1ub2RlPyBwcmV2KVxyXG4gICAgKHJlY3VyIHByZXYgKHN0ciAoLi10ZXh0Q29udGVudCBwcmV2KSBjb250ZW50KSlcclxuICAgIGNvbnRlbnQpXHJcbiAgIGNvbnRlbnQpKSlcclxuIn0gezpzeW0gdHJ1bmNhdGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGV4dCBsaW1pdF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHRydW5jYXRlXHJcbiBbdGV4dCBsaW1pdF1cclxuIChpZiAoPiAoY291bnQgdGV4dCkgbGltaXQpIChzdHIgKHN1YnMgdGV4dCAwIGxpbWl0KSBcIi4uLlwiKSB0ZXh0KSlcclxuIn0gezpzeW0gY3JlYXRlLWNvbXBpbGVyLWZuLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW29wdHNdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBjcmVhdGUtY29tcGlsZXItZm5cclxuIFtvcHRzXVxyXG4gKGlmLWxldFxyXG4gIFt3b3JrZXIgKHNvbWUtPiAqd2ViLXdvcmtlci1wYXRoKiBqcy9Xb3JrZXIuKV1cclxuICAoZm5cclxuICAgW2NvbGwgcmVjZWl2ZS1mbl1cclxuICAgKHNldCFcclxuICAgICguLW9ubWVzc2FnZSB3b3JrZXIpXHJcbiAgICAoZm4qIFtwMV9fNDE2NjAjXSAocmVjZWl2ZS1mbiAodmVjICguLWRhdGEgcDFfXzQxNjYwIykpKSkpXHJcbiAgICgucG9zdE1lc3NhZ2Ugd29ya2VyIChpbnRvLWFycmF5IGNvbGwpKSlcclxuICAoZm5cclxuICAgW2NvbGwgcmVjZWl2ZS1mbl1cclxuICAgKGVzL2NvZGUtPnJlc3VsdHNcclxuICAgIGNvbGxcclxuICAgIChmblxyXG4gICAgIFtyZXN1bHRzXVxyXG4gICAgIChyZWNlaXZlLWZuIChpbnRvLWFycmF5IChtYXB2IGZvcm0tPnNlcmlhbGl6YWJsZSByZXN1bHRzKSkpKVxyXG4gICAgb3B0cykpKSlcclxuIn0gezpzeW0gZ2V0LWNvbGxlY3Rpb25zLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBjb2xsZWN0aW9ucyBmcm9tIHRoZSBnaXZlbiBET00gbm9kZS4iLCA6YXJnbGlzdHMgKFtlbGVtZW50XSl9LCA6c291cmNlICIoZGVmblxyXG4gZ2V0LWNvbGxlY3Rpb25zXHJcbiBcIlJldHVybnMgY29sbGVjdGlvbnMgZnJvbSB0aGUgZ2l2ZW4gRE9NIG5vZGUuXCJcclxuIFtlbGVtZW50XVxyXG4gKHZlY1xyXG4gIChmb3JcclxuICAgW2VsZW1cclxuICAgICgtPiBlbGVtZW50IC4tY2hpbGRyZW4gYXJyYXktc2VxKVxyXG4gICAgOmxldFxyXG4gICAgW2NsYXNzZXMgKC4tY2xhc3NMaXN0IGVsZW0pXVxyXG4gICAgOndoZW5cclxuICAgIChvciAoLmNvbnRhaW5zIGNsYXNzZXMgXCJjb2xsZWN0aW9uXCIpICguY29udGFpbnMgY2xhc3NlcyBcInN5bWJvbFwiKSldXHJcbiAgIGVsZW0pKSlcclxuIn0gezpzeW0gZWxlbXMtPmxvY2F0aW9ucywgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGxvY2F0aW9uIG9mIGVhY2ggZWxlbS4iLCA6YXJnbGlzdHMgKFtlbGVtcyB0b3Atb2Zmc2V0XSl9LCA6c291cmNlICIoZGVmblxyXG4gZWxlbXMtPmxvY2F0aW9uc1xyXG4gXCJSZXR1cm5zIHRoZSBsb2NhdGlvbiBvZiBlYWNoIGVsZW0uXCJcclxuIFtlbGVtcyB0b3Atb2Zmc2V0XVxyXG4gKGxvb3BcclxuICBbaSAwIGxvY2F0aW9ucyAodHJhbnNpZW50IFtdKV1cclxuICAoaWYtbGV0XHJcbiAgIFtlbGVtIChnZXQgZWxlbXMgaSldXHJcbiAgIChsZXRcclxuICAgIFt0b3BcclxuICAgICAoLT4gZWxlbSAuLW9mZnNldFRvcCAoLSB0b3Atb2Zmc2V0KSlcclxuICAgICBoZWlnaHRcclxuICAgICAoLT4gZWxlbSAuLW9mZnNldEhlaWdodCldXHJcbiAgICAocmVjdXIgKGluYyBpKSAoY29uaiEgbG9jYXRpb25zIHs6dG9wIHRvcCwgOmhlaWdodCBoZWlnaHR9KSkpXHJcbiAgIChwZXJzaXN0ZW50ISBsb2NhdGlvbnMpKSkpXHJcbiJ9KSwgY2xqcy5wcHJpbnQgKHs6c3ltIHBwcmludCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1tvYmplY3RdIFtvYmplY3Qgd3JpdGVyXV19LCA6c291cmNlICIoZGVmblxyXG4gcHByaW50XHJcbiAoW29iamVjdF1cclxuICAobGV0XHJcbiAgIFtzYiAoU3RyaW5nQnVmZmVyLildXHJcbiAgIChiaW5kaW5nXHJcbiAgICBbKm91dCogKFN0cmluZ0J1ZmZlcldyaXRlci4gc2IpXVxyXG4gICAgKHBwcmludCBvYmplY3QgKm91dCopXHJcbiAgICAoc3RyaW5nLXByaW50IChzdHIgc2IpKSkpKVxyXG4gKFtvYmplY3Qgd3JpdGVyXVxyXG4gICh3aXRoLXByZXR0eS13cml0ZXJcclxuICAgd3JpdGVyXHJcbiAgIChiaW5kaW5nIFsqcHJpbnQtcHJldHR5KiB0cnVlXSAod3JpdGUtb3V0IG9iamVjdCkpXHJcbiAgIChpZiAobm90ICg9IDAgKGdldC1jb2x1bW4gKm91dCopKSkgKC13cml0ZSAqb3V0KiBcXG5ld2xpbmUpKSkpKVxyXG4ifSB7OnN5bSBnZXQtcHJldHR5LXdyaXRlciwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIElXcml0ZXIgcGFzc2VkIGluIHdyYXBwZWQgaW4gYSBwcmV0dHkgd3JpdGVyIHByb3h5LCB1bmxlc3MgaXQnc1xuYWxyZWFkeSBhIHByZXR0eSB3cml0ZXIuIEdlbmVyYWxseSwgaXQgaXMgdW5uZWNlc3NhcnkgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uLCBzaW5jZSBwcHJpbnQsXG53cml0ZSwgYW5kIGNsLWZvcm1hdCBhbGwgY2FsbCBpdCBpZiB0aGV5IG5lZWQgdG8uIEhvd2V2ZXIgaWYgeW91IHdhbnQgdGhlIHN0YXRlIHRvIGJlXG5wcmVzZXJ2ZWQgYWNyb3NzIGNhbGxzLCB5b3Ugd2lsbCB3YW50IHRvIHdyYXAgdGhlbSB3aXRoIHRoaXMuXG5cbkZvciBleGFtcGxlLCB3aGVuIHlvdSB3YW50IHRvIGdlbmVyYXRlIGNvbHVtbi1hd2FyZSBvdXRwdXQgd2l0aCBtdWx0aXBsZSBjYWxscyB0byBjbC1mb3JtYXQsXG5kbyBpdCBsaWtlIGluIHRoaXMgZXhhbXBsZTpcblxuICAgIChkZWZuIHByaW50LXRhYmxlIFthc2VxIGNvbHVtbi13aWR0aF1cbiAgICAgIChiaW5kaW5nIFsqb3V0KiAoZ2V0LXByZXR0eS13cml0ZXIgKm91dCopXVxuICAgICAgICAoZG9zZXEgW3JvdyBhc2VxXVxuICAgICAgICAgIChkb3NlcSBbY29sIHJvd11cbiAgICAgICAgICAgIChjbC1mb3JtYXQgdHJ1ZSBcIn40RH43LHZUXCIgY29sIGNvbHVtbi13aWR0aCkpXG4gICAgICAgICAgKHBybikpKSlcblxuTm93IHdoZW4geW91IHJ1bjpcblxuICAgIHVzZXI+IChwcmludC10YWJsZSAobWFwICModmVjdG9yICUgKCogJSAlKSAoKiAlICUgJSkpIChyYW5nZSAxIDExKSkgOClcblxuSXQgcHJpbnRzIGEgdGFibGUgb2Ygc3F1YXJlcyBhbmQgY3ViZXMgZm9yIHRoZSBudW1iZXJzIGZyb20gMSB0byAxMDpcblxuICAgICAgIDEgICAgICAxICAgICAgIDFcbiAgICAgICAyICAgICAgNCAgICAgICA4XG4gICAgICAgMyAgICAgIDkgICAgICAyN1xuICAgICAgIDQgICAgIDE2ICAgICAgNjRcbiAgICAgICA1ICAgICAyNSAgICAgMTI1XG4gICAgICAgNiAgICAgMzYgICAgIDIxNlxuICAgICAgIDcgICAgIDQ5ICAgICAzNDNcbiAgICAgICA4ICAgICA2NCAgICAgNTEyXG4gICAgICAgOSAgICAgODEgICAgIDcyOVxuICAgICAgMTAgICAgMTAwICAgIDEwMDAiLCA6YXJnbGlzdHMgKFt3cml0ZXJdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBnZXQtcHJldHR5LXdyaXRlclxyXG4gXCJSZXR1cm5zIHRoZSBJV3JpdGVyIHBhc3NlZCBpbiB3cmFwcGVkIGluIGEgcHJldHR5IHdyaXRlciBwcm94eSwgdW5sZXNzIGl0J3NcXG5hbHJlYWR5IGEgcHJldHR5IHdyaXRlci4gR2VuZXJhbGx5LCBpdCBpcyB1bm5lY2Vzc2FyeSB0byBjYWxsIHRoaXMgZnVuY3Rpb24sIHNpbmNlIHBwcmludCxcXG53cml0ZSwgYW5kIGNsLWZvcm1hdCBhbGwgY2FsbCBpdCBpZiB0aGV5IG5lZWQgdG8uIEhvd2V2ZXIgaWYgeW91IHdhbnQgdGhlIHN0YXRlIHRvIGJlXFxucHJlc2VydmVkIGFjcm9zcyBjYWxscywgeW91IHdpbGwgd2FudCB0byB3cmFwIHRoZW0gd2l0aCB0aGlzLlxcblxcbkZvciBleGFtcGxlLCB3aGVuIHlvdSB3YW50IHRvIGdlbmVyYXRlIGNvbHVtbi1hd2FyZSBvdXRwdXQgd2l0aCBtdWx0aXBsZSBjYWxscyB0byBjbC1mb3JtYXQsXFxuZG8gaXQgbGlrZSBpbiB0aGlzIGV4YW1wbGU6XFxuXFxuICAgIChkZWZuIHByaW50LXRhYmxlIFthc2VxIGNvbHVtbi13aWR0aF1cXG4gICAgICAoYmluZGluZyBbKm91dCogKGdldC1wcmV0dHktd3JpdGVyICpvdXQqKV1cXG4gICAgICAgIChkb3NlcSBbcm93IGFzZXFdXFxuICAgICAgICAgIChkb3NlcSBbY29sIHJvd11cXG4gICAgICAgICAgICAoY2wtZm9ybWF0IHRydWUgXFxcIn40RH43LHZUXFxcIiBjb2wgY29sdW1uLXdpZHRoKSlcXG4gICAgICAgICAgKHBybikpKSlcXG5cXG5Ob3cgd2hlbiB5b3UgcnVuOlxcblxcbiAgICB1c2VyPiAocHJpbnQtdGFibGUgKG1hcCAjKHZlY3RvciAlICgqICUgJSkgKCogJSAlICUpKSAocmFuZ2UgMSAxMSkpIDgpXFxuXFxuSXQgcHJpbnRzIGEgdGFibGUgb2Ygc3F1YXJlcyBhbmQgY3ViZXMgZm9yIHRoZSBudW1iZXJzIGZyb20gMSB0byAxMDpcXG5cXG4gICAgICAgMSAgICAgIDEgICAgICAgMVxcbiAgICAgICAyICAgICAgNCAgICAgICA4XFxuICAgICAgIDMgICAgICA5ICAgICAgMjdcXG4gICAgICAgNCAgICAgMTYgICAgICA2NFxcbiAgICAgICA1ICAgICAyNSAgICAgMTI1XFxuICAgICAgIDYgICAgIDM2ICAgICAyMTZcXG4gICAgICAgNyAgICAgNDkgICAgIDM0M1xcbiAgICAgICA4ICAgICA2NCAgICAgNTEyXFxuICAgICAgIDkgICAgIDgxICAgICA3MjlcXG4gICAgICAxMCAgICAxMDAgICAgMTAwMFwiXHJcbiBbd3JpdGVyXVxyXG4gKGlmXHJcbiAgKHByZXR0eS13cml0ZXI/IHdyaXRlcilcclxuICB3cml0ZXJcclxuICAocHJldHR5LXdyaXRlciB3cml0ZXIgKnByaW50LXJpZ2h0LW1hcmdpbiogKnByaW50LW1pc2VyLXdpZHRoKikpKVxyXG4ifSB7OnN5bSAqcHJpbnQtc3VwcHJlc3MtbmFtZXNwYWNlcyosIDptZXRhIHs6ZG9jICJEb24ndCBwcmludCBuYW1lc3BhY2VzIHdpdGggc3ltYm9scy4gVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIHdoZW5cbnByZXR0eSBwcmludGluZyB0aGUgcmVzdWx0cyBvZiBtYWNybyBleHBhbnNpb25zIn0sIDpzb3VyY2UgIihkZWYgKnByaW50LXN1cHByZXNzLW5hbWVzcGFjZXMqIG5pbClcclxuIn0gezpzeW0gY2hhci1jb2RlLCA6bWV0YSB7OmRvYyAiQ29udmVydCBjaGFyIHRvIGludCIsIDphcmdsaXN0cyAoW2NdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBjaGFyLWNvZGVcclxuIFwiQ29udmVydCBjaGFyIHRvIGludFwiXHJcbiBbY11cclxuIChjb25kXHJcbiAgKG51bWJlcj8gYylcclxuICBjXHJcbiAgKGFuZCAoc3RyaW5nPyBjKSAoPT0gKC4tbGVuZ3RoIGMpIDEpKVxyXG4gICguY2hhckNvZGVBdCBjIDApXHJcbiAgOmVsc2VcclxuICAodGhyb3dcclxuICAgKGpzL0Vycm9yLiBcIkFyZ3VtZW50IHRvIGNoYXIgbXVzdCBiZSBhIGNoYXJhY3RlciBvciBudW1iZXJcIikpKSlcclxuIn0gezpzeW0gKnByaW50LXByZXR0eSosIDptZXRhIHs6ZG9jICJCaW5kIHRvIHRydWUgaWYgeW91IHdhbnQgd3JpdGUgdG8gdXNlIHByZXR0eSBwcmludGluZyJ9LCA6c291cmNlICIoZGVmICpwcmludC1wcmV0dHkqIHRydWUpXHJcbiJ9IHs6c3ltICpwcmludC1wcHJpbnQtZGlzcGF0Y2gqLCA6bWV0YSB7OmRvYyAiVGhlIHByZXR0eSBwcmludCBkaXNwYXRjaCBmdW5jdGlvbi4gVXNlIHdpdGgtcHByaW50LWRpc3BhdGNoIG9yXG5zZXQtcHByaW50LWRpc3BhdGNoIHRvIG1vZGlmeS4ifSwgOnNvdXJjZSAiKGRlZm9uY2UgKnByaW50LXBwcmludC1kaXNwYXRjaCogbmlsKVxyXG4ifSB7OnN5bSBwcHJpbnQtbmV3bGluZSwgOm1ldGEgezpkb2MgIlByaW50IGEgY29uZGl0aW9uYWwgbmV3bGluZSB0byBhIHByZXR0eSBwcmludGluZyBzdHJlYW0uIGtpbmQgc3BlY2lmaWVzIGlmIHRoZVxuICBuZXdsaW5lIGlzIDpsaW5lYXIsIDptaXNlciwgOmZpbGwsIG9yIDptYW5kYXRvcnkuXG5cbiAgVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCBmb3IgdXNlIHdoZW4gd3JpdGluZyBjdXN0b20gZGlzcGF0Y2ggZnVuY3Rpb25zLlxuXG4gIE91dHB1dCBpcyBzZW50IHRvICpvdXQqIHdoaWNoIG11c3QgYmUgYSBwcmV0dHkgcHJpbnRpbmcgd3JpdGVyLiIsIDphcmdsaXN0cyAoW2tpbmRdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBwcHJpbnQtbmV3bGluZVxyXG4gXCJQcmludCBhIGNvbmRpdGlvbmFsIG5ld2xpbmUgdG8gYSBwcmV0dHkgcHJpbnRpbmcgc3RyZWFtLiBraW5kIHNwZWNpZmllcyBpZiB0aGVcXG4gIG5ld2xpbmUgaXMgOmxpbmVhciwgOm1pc2VyLCA6ZmlsbCwgb3IgOm1hbmRhdG9yeS5cXG5cXG4gIFRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgZm9yIHVzZSB3aGVuIHdyaXRpbmcgY3VzdG9tIGRpc3BhdGNoIGZ1bmN0aW9ucy5cXG5cXG4gIE91dHB1dCBpcyBzZW50IHRvICpvdXQqIHdoaWNoIG11c3QgYmUgYSBwcmV0dHkgcHJpbnRpbmcgd3JpdGVyLlwiXHJcbiBba2luZF1cclxuIChjaGVjay1lbnVtZXJhdGVkLWFyZyBraW5kICN7Om1hbmRhdG9yeSA6bWlzZXIgOmZpbGwgOmxpbmVhcn0pXHJcbiAobmwgKm91dCoga2luZCkpXHJcbiJ9IHs6c3ltIGZsb2F0PywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiBuIGlzIGFuIGZsb2F0LiIsIDphcmdsaXN0cyAoW25dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBmbG9hdD9cclxuIFwiUmV0dXJucyB0cnVlIGlmIG4gaXMgYW4gZmxvYXQuXCJcclxuIFtuXVxyXG4gKGFuZFxyXG4gIChudW1iZXI/IG4pXHJcbiAgKG5vdCAoanMvaXNOYU4gbikpXHJcbiAgKG5vdCAoaWRlbnRpY2FsPyBuIGpzL0luZmluaXR5KSlcclxuICAobm90ICg9PSAoanMvcGFyc2VGbG9hdCBuKSAoanMvcGFyc2VJbnQgbiAxMCkpKSkpXHJcbiJ9IHs6c3ltIHBwcmludC10YWIsIDptZXRhIHs6ZG9jICJUYWIgYXQgdGhpcyBwb2ludCBpbiB0aGUgcHJldHR5IHByaW50aW5nIHN0cmVhbS4ga2luZCBzcGVjaWZpZXMgd2hldGhlciB0aGUgdGFiXG5pcyA6bGluZSwgOnNlY3Rpb24sIDpsaW5lLXJlbGF0aXZlLCBvciA6c2VjdGlvbi1yZWxhdGl2ZS5cblxuQ29sbnVtIGFuZCBjb2xpbmMgc3BlY2lmeSB0aGUgdGFyZ2V0IGNvbHVtbiBhbmQgdGhlIGluY3JlbWVudCB0byBtb3ZlIHRoZSB0YXJnZXRcbmZvcndhcmQgaWYgdGhlIG91dHB1dCBpcyBhbHJlYWR5IHBhc3QgdGhlIG9yaWdpbmFsIHRhcmdldC5cblxuVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCBmb3IgdXNlIHdoZW4gd3JpdGluZyBjdXN0b20gZGlzcGF0Y2ggZnVuY3Rpb25zLlxuXG5PdXRwdXQgaXMgc2VudCB0byAqb3V0KiB3aGljaCBtdXN0IGJlIGEgcHJldHR5IHByaW50aW5nIHdyaXRlci5cblxuVEhJUyBGVU5DVElPTiBJUyBOT1QgWUVUIElNUExFTUVOVEVELiIsIDphcmdsaXN0cyAoW2tpbmQgY29sbnVtIGNvbGluY10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHBwcmludC10YWJcclxuIFwiVGFiIGF0IHRoaXMgcG9pbnQgaW4gdGhlIHByZXR0eSBwcmludGluZyBzdHJlYW0uIGtpbmQgc3BlY2lmaWVzIHdoZXRoZXIgdGhlIHRhYlxcbmlzIDpsaW5lLCA6c2VjdGlvbiwgOmxpbmUtcmVsYXRpdmUsIG9yIDpzZWN0aW9uLXJlbGF0aXZlLlxcblxcbkNvbG51bSBhbmQgY29saW5jIHNwZWNpZnkgdGhlIHRhcmdldCBjb2x1bW4gYW5kIHRoZSBpbmNyZW1lbnQgdG8gbW92ZSB0aGUgdGFyZ2V0XFxuZm9yd2FyZCBpZiB0aGUgb3V0cHV0IGlzIGFscmVhZHkgcGFzdCB0aGUgb3JpZ2luYWwgdGFyZ2V0LlxcblxcblRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgZm9yIHVzZSB3aGVuIHdyaXRpbmcgY3VzdG9tIGRpc3BhdGNoIGZ1bmN0aW9ucy5cXG5cXG5PdXRwdXQgaXMgc2VudCB0byAqb3V0KiB3aGljaCBtdXN0IGJlIGEgcHJldHR5IHByaW50aW5nIHdyaXRlci5cXG5cXG5USElTIEZVTkNUSU9OIElTIE5PVCBZRVQgSU1QTEVNRU5URUQuXCJcclxuIHs6YWRkZWQgXCIxLjJcIn1cclxuIFtraW5kIGNvbG51bSBjb2xpbmNdXHJcbiAoY2hlY2stZW51bWVyYXRlZC1hcmdcclxuICBraW5kXHJcbiAgI3s6c2VjdGlvbiA6bGluZSA6bGluZS1yZWxhdGl2ZSA6c2VjdGlvbi1yZWxhdGl2ZX0pXHJcbiAodGhyb3cgKGpzL0Vycm9yLiBcInBwcmludC10YWIgaXMgbm90IHlldCBpbXBsZW1lbnRlZFwiKSkpXHJcbiJ9IHs6c3ltIHBwcmludC1zZXQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHBwcmludC1zZXQgKGZvcm1hdHRlci1vdXQgXCJ+PCN7fjt+QHt+d35eIH46X359fjt9fjo+XCIpKVxyXG4ifSB7OnN5bSBwcmludC10YWJsZSwgOm1ldGEgezpkb2MgIlByaW50cyBhIGNvbGxlY3Rpb24gb2YgbWFwcyBpbiBhIHRleHR1YWwgdGFibGUuIFByaW50cyB0YWJsZSBoZWFkaW5nc1xuICAga3MsIGFuZCB0aGVuIGEgbGluZSBvZiBvdXRwdXQgZm9yIGVhY2ggcm93LCBjb3JyZXNwb25kaW5nIHRvIHRoZSBrZXlzXG4gICBpbiBrcy4gSWYga3MgYXJlIG5vdCBzcGVjaWZpZWQsIHVzZSB0aGUga2V5cyBvZiB0aGUgZmlyc3QgaXRlbSBpbiByb3dzLiIsIDphcmdsaXN0cyBbW2tzIHJvd3NdIFtyb3dzXV19LCA6c291cmNlICIoZGVmblxyXG4gcHJpbnQtdGFibGVcclxuIFwiUHJpbnRzIGEgY29sbGVjdGlvbiBvZiBtYXBzIGluIGEgdGV4dHVhbCB0YWJsZS4gUHJpbnRzIHRhYmxlIGhlYWRpbmdzXFxuICAga3MsIGFuZCB0aGVuIGEgbGluZSBvZiBvdXRwdXQgZm9yIGVhY2ggcm93LCBjb3JyZXNwb25kaW5nIHRvIHRoZSBrZXlzXFxuICAgaW4ga3MuIElmIGtzIGFyZSBub3Qgc3BlY2lmaWVkLCB1c2UgdGhlIGtleXMgb2YgdGhlIGZpcnN0IGl0ZW0gaW4gcm93cy5cIlxyXG4gezphZGRlZCBcIjEuM1wifVxyXG4gKFtrcyByb3dzXVxyXG4gICh3aGVuXHJcbiAgIChzZXEgcm93cylcclxuICAgKGxldFxyXG4gICAgW3dpZHRoc1xyXG4gICAgIChtYXBcclxuICAgICAgKGZuXHJcbiAgICAgICBba11cclxuICAgICAgIChhcHBseVxyXG4gICAgICAgIG1heFxyXG4gICAgICAgIChjb3VudCAoc3RyIGspKVxyXG4gICAgICAgIChtYXBcclxuICAgICAgICAgKGZuKiBbcDFfXzQxNTQ1I10gKGNvdW50IChzdHIgKGdldCBwMV9fNDE1NDUjIGspKSkpXHJcbiAgICAgICAgIHJvd3MpKSlcclxuICAgICAga3MpXHJcbiAgICAgc3BhY2Vyc1xyXG4gICAgIChtYXBcclxuICAgICAgKGZuKiBbcDFfXzQxNTQ2I10gKGFwcGx5IHN0ciAocmVwZWF0IHAxX180MTU0NiMgXCItXCIpKSlcclxuICAgICAgd2lkdGhzKVxyXG4gICAgIGZtdC1yb3dcclxuICAgICAoZm5cclxuICAgICAgW2xlYWRlciBkaXZpZGVyIHRyYWlsZXIgcm93XVxyXG4gICAgICAoc3RyXHJcbiAgICAgICBsZWFkZXJcclxuICAgICAgIChhcHBseVxyXG4gICAgICAgIHN0clxyXG4gICAgICAgIChpbnRlcnBvc2VcclxuICAgICAgICAgZGl2aWRlclxyXG4gICAgICAgICAoZm9yXHJcbiAgICAgICAgICBbW2NvbCB3aWR0aF1cclxuICAgICAgICAgICAobWFwXHJcbiAgICAgICAgICAgIHZlY3RvclxyXG4gICAgICAgICAgICAobWFwIChmbiogW3AxX180MTU0NyNdIChnZXQgcm93IHAxX180MTU0NyMpKSBrcylcclxuICAgICAgICAgICAgd2lkdGhzKV1cclxuICAgICAgICAgIChhZGQtcGFkZGluZyB3aWR0aCAoc3RyIGNvbCkpKSkpXHJcbiAgICAgICB0cmFpbGVyKSldXHJcbiAgICAoY2xqcy5jb3JlL3ByaW50bG4pXHJcbiAgICAoY2xqcy5jb3JlL3ByaW50bG4gKGZtdC1yb3cgXCJ8IFwiIFwiIHwgXCIgXCIgfFwiICh6aXBtYXAga3Mga3MpKSlcclxuICAgIChjbGpzLmNvcmUvcHJpbnRsbiAoZm10LXJvdyBcInwtXCIgXCItKy1cIiBcIi18XCIgKHppcG1hcCBrcyBzcGFjZXJzKSkpXHJcbiAgICAoZG9zZXFcclxuICAgICBbcm93IHJvd3NdXHJcbiAgICAgKGNsanMuY29yZS9wcmludGxuIChmbXQtcm93IFwifCBcIiBcIiB8IFwiIFwiIHxcIiByb3cpKSkpKSlcclxuIChbcm93c10gKHByaW50LXRhYmxlIChrZXlzIChmaXJzdCByb3dzKSkgcm93cykpKVxyXG4ifSB7OnN5bSBzZXQtcHByaW50LWRpc3BhdGNoLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2Z1bmN0aW9uXSl9LCA6c291cmNlICIoZGVmblxyXG4gc2V0LXBwcmludC1kaXNwYXRjaFxyXG4gW2Z1bmN0aW9uXVxyXG4gKHNldCEgKnByaW50LXBwcmludC1kaXNwYXRjaCogZnVuY3Rpb24pXHJcbiBuaWwpXHJcbiJ9IHs6c3ltIGZyZXNoLWxpbmUsIDptZXRhIHs6ZG9jICJNYWtlIGEgbmV3bGluZSBpZiAqb3V0KiBpcyBub3QgYWxyZWFkeSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5lLiBJZiAqb3V0KiBpc1xubm90IGEgcHJldHR5IHdyaXRlciAod2hpY2gga2VlcHMgdHJhY2sgb2YgY29sdW1ucyksIHRoaXMgZnVuY3Rpb24gYWx3YXlzIG91dHB1dHMgYSBuZXdsaW5lLiIsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGZyZXNoLWxpbmVcclxuIFwiTWFrZSBhIG5ld2xpbmUgaWYgKm91dCogaXMgbm90IGFscmVhZHkgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGluZS4gSWYgKm91dCogaXNcXG5ub3QgYSBwcmV0dHkgd3JpdGVyICh3aGljaCBrZWVwcyB0cmFjayBvZiBjb2x1bW5zKSwgdGhpcyBmdW5jdGlvbiBhbHdheXMgb3V0cHV0cyBhIG5ld2xpbmUuXCJcclxuIFtdXHJcbiAoaWZcclxuICAoc2F0aXNmaWVzPyBJRGVyZWYgKm91dCopXHJcbiAgKGlmIChub3QgKD0gMCAoZ2V0LWNvbHVtbiAoOmJhc2UgQEAqb3V0KikpKSkgKHBybikpXHJcbiAgKHBybikpKVxyXG4ifSB7OnN5bSBwcHJpbnQtaW5kZW50LCA6bWV0YSB7OmRvYyAiQ3JlYXRlIGFuIGluZGVudCBhdCB0aGlzIHBvaW50IGluIHRoZSBwcmV0dHkgcHJpbnRpbmcgc3RyZWFtLiBUaGlzIGRlZmluZXMgaG93XG5mb2xsb3dpbmcgbGluZXMgYXJlIGluZGVudGVkLiByZWxhdGl2ZS10byBjYW4gYmUgZWl0aGVyIDpibG9jayBvciA6Y3VycmVudCBkZXBlbmRpbmdcbndoZXRoZXIgdGhlIGluZGVudCBzaG91bGQgYmUgY29tcHV0ZWQgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBsb2dpY2FsIGJsb2NrIG9yXG50aGUgY3VycmVudCBjb2x1bW4gcG9zaXRpb24uIG4gaXMgYW4gb2Zmc2V0LlxuXG5UaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIGZvciB1c2Ugd2hlbiB3cml0aW5nIGN1c3RvbSBkaXNwYXRjaCBmdW5jdGlvbnMuXG5cbk91dHB1dCBpcyBzZW50IHRvICpvdXQqIHdoaWNoIG11c3QgYmUgYSBwcmV0dHkgcHJpbnRpbmcgd3JpdGVyLiIsIDphcmdsaXN0cyAoW3JlbGF0aXZlLXRvIG5dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBwcHJpbnQtaW5kZW50XHJcbiBcIkNyZWF0ZSBhbiBpbmRlbnQgYXQgdGhpcyBwb2ludCBpbiB0aGUgcHJldHR5IHByaW50aW5nIHN0cmVhbS4gVGhpcyBkZWZpbmVzIGhvd1xcbmZvbGxvd2luZyBsaW5lcyBhcmUgaW5kZW50ZWQuIHJlbGF0aXZlLXRvIGNhbiBiZSBlaXRoZXIgOmJsb2NrIG9yIDpjdXJyZW50IGRlcGVuZGluZ1xcbndoZXRoZXIgdGhlIGluZGVudCBzaG91bGQgYmUgY29tcHV0ZWQgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBsb2dpY2FsIGJsb2NrIG9yXFxudGhlIGN1cnJlbnQgY29sdW1uIHBvc2l0aW9uLiBuIGlzIGFuIG9mZnNldC5cXG5cXG5UaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIGZvciB1c2Ugd2hlbiB3cml0aW5nIGN1c3RvbSBkaXNwYXRjaCBmdW5jdGlvbnMuXFxuXFxuT3V0cHV0IGlzIHNlbnQgdG8gKm91dCogd2hpY2ggbXVzdCBiZSBhIHByZXR0eSBwcmludGluZyB3cml0ZXIuXCJcclxuIFtyZWxhdGl2ZS10byBuXVxyXG4gKGNoZWNrLWVudW1lcmF0ZWQtYXJnIHJlbGF0aXZlLXRvICN7OmJsb2NrIDpjdXJyZW50fSlcclxuIChpbmRlbnQgKm91dCogcmVsYXRpdmUtdG8gbikpXHJcbiJ9IHs6c3ltICpwcmludC1yYWRpeCosIDptZXRhIHs6ZG9jICJQcmludCBhIHJhZGl4IHNwZWNpZmllciBpbiBmcm9udCBvZiBpbnRlZ2VycyBhbmQgcmF0aW9uYWxzLiBJZiAqcHJpbnQtYmFzZSogaXMgMiwgOCxcbm9yIDE2LCB0aGVuIHRoZSByYWRpeCBzcGVjaWZpZXIgdXNlZCBpcyAjYiwgI28sIG9yICN4LCByZXNwZWN0aXZlbHkuIE90aGVyd2lzZSB0aGVcbnJhZGl4IHNwZWNpZmllciBpcyBpbiB0aGUgZm9ybSAjWFhyIHdoZXJlIFhYIGlzIHRoZSBkZWNpbWFsIHZhbHVlIG9mICpwcmludC1iYXNlKiAifSwgOnNvdXJjZSAiKGRlZiAqcHJpbnQtcmFkaXgqIG5pbClcclxuIn0gezpzeW0gSVByZXR0eUZsdXNoLCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAoLXBwZmx1c2gpfSB7OnN5bSBjbC1mb3JtYXQsIDptZXRhIHs6ZG9jICJBbiBpbXBsZW1lbnRhdGlvbiBvZiBhIENvbW1vbiBMaXNwIGNvbXBhdGlibGUgZm9ybWF0IGZ1bmN0aW9uLiBjbC1mb3JtYXQgZm9ybWF0cyBpdHNcbmFyZ3VtZW50cyB0byBhbiBvdXRwdXQgc3RyZWFtIG9yIHN0cmluZyBiYXNlZCBvbiB0aGUgZm9ybWF0IGNvbnRyb2wgc3RyaW5nIGdpdmVuLiBJdFxuc3VwcG9ydHMgc29waGlzdGljYXRlZCBmb3JtYXR0aW5nIG9mIHN0cnVjdHVyZWQgZGF0YS5cblxuV3JpdGVyIHNhdGlzZmllcyBJV3JpdGVyLCB0cnVlIHRvIG91dHB1dCB2aWEgKnByaW50LWZuKiBvciBuaWwgdG8gb3V0cHV0XG50byBhIHN0cmluZywgZm9ybWF0LWluIGlzIHRoZSBmb3JtYXQgY29udHJvbCBzdHJpbmcgYW5kIHRoZSByZW1haW5pbmcgYXJndW1lbnRzXG5hcmUgdGhlIGRhdGEgdG8gYmUgZm9ybWF0dGVkLlxuXG5UaGUgZm9ybWF0IGNvbnRyb2wgc3RyaW5nIGlzIGEgc3RyaW5nIHRvIGJlIG91dHB1dCB3aXRoIGVtYmVkZGVkICdmb3JtYXQgZGlyZWN0aXZlcydcbmRlc2NyaWJpbmcgaG93IHRvIGZvcm1hdCB0aGUgdmFyaW91cyBhcmd1bWVudHMgcGFzc2VkIGluLlxuXG5JZiB3cml0ZXIgaXMgbmlsLCBjbC1mb3JtYXQgcmV0dXJucyB0aGUgZm9ybWF0dGVkIHJlc3VsdCBzdHJpbmcuIE90aGVyd2lzZSwgY2wtZm9ybWF0XG5yZXR1cm5zIG5pbC5cblxuRm9yIGV4YW1wbGU6XG4gKGxldCBbcmVzdWx0cyBbNDYgMzggMjJdXVxuICAgICAgICAoY2wtZm9ybWF0IHRydWUgXCJUaGVyZSB+W2FyZX47aXN+OjthcmV+XX46KiB+ZCByZXN1bHR+OnA6IH57fmR+Xiwgfn1+JVwiXG4gICAgICAgICAgICAgICAgICAgKGNvdW50IHJlc3VsdHMpIHJlc3VsdHMpKVxuXG5QcmludHMgdmlhICpwcmludC1mbio6XG4gVGhlcmUgYXJlIDMgcmVzdWx0czogNDYsIDM4LCAyMlxuXG5EZXRhaWxlZCBkb2N1bWVudGF0aW9uIG9uIGZvcm1hdCBjb250cm9sIHN0cmluZ3MgaXMgYXZhaWxhYmxlIGluIHRoZSBcIkNvbW1vbiBMaXNwIHRoZVxuTGFuZ3VhZ2UsIDJuZCBlZGl0aW9uXCIsIENoYXB0ZXIgMjIgKGF2YWlsYWJsZSBvbmxpbmUgYXQ6XG5odHRwOi8vd3d3LmNzLmNtdS5lZHUvYWZzL2NzLmNtdS5lZHUvcHJvamVjdC9haS1yZXBvc2l0b3J5L2FpL2h0bWwvY2x0bC9jbG0vbm9kZTIwMC5odG1sI1NFQ1RJT04wMDI2MzMwMDAwMDAwMDAwMDAwMDApXG5hbmQgaW4gdGhlIENvbW1vbiBMaXNwIEh5cGVyU3BlYyBhdFxuaHR0cDovL3d3dy5saXNwd29ya3MuY29tL2RvY3VtZW50YXRpb24vSHlwZXJTcGVjL0JvZHkvMjJfYy5odG0iLCA6YXJnbGlzdHMgKFt3cml0ZXIgZm9ybWF0LWluICYgYXJnc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGNsLWZvcm1hdFxyXG4gXCJBbiBpbXBsZW1lbnRhdGlvbiBvZiBhIENvbW1vbiBMaXNwIGNvbXBhdGlibGUgZm9ybWF0IGZ1bmN0aW9uLiBjbC1mb3JtYXQgZm9ybWF0cyBpdHNcXG5hcmd1bWVudHMgdG8gYW4gb3V0cHV0IHN0cmVhbSBvciBzdHJpbmcgYmFzZWQgb24gdGhlIGZvcm1hdCBjb250cm9sIHN0cmluZyBnaXZlbi4gSXRcXG5zdXBwb3J0cyBzb3BoaXN0aWNhdGVkIGZvcm1hdHRpbmcgb2Ygc3RydWN0dXJlZCBkYXRhLlxcblxcbldyaXRlciBzYXRpc2ZpZXMgSVdyaXRlciwgdHJ1ZSB0byBvdXRwdXQgdmlhICpwcmludC1mbiogb3IgbmlsIHRvIG91dHB1dFxcbnRvIGEgc3RyaW5nLCBmb3JtYXQtaW4gaXMgdGhlIGZvcm1hdCBjb250cm9sIHN0cmluZyBhbmQgdGhlIHJlbWFpbmluZyBhcmd1bWVudHNcXG5hcmUgdGhlIGRhdGEgdG8gYmUgZm9ybWF0dGVkLlxcblxcblRoZSBmb3JtYXQgY29udHJvbCBzdHJpbmcgaXMgYSBzdHJpbmcgdG8gYmUgb3V0cHV0IHdpdGggZW1iZWRkZWQgJ2Zvcm1hdCBkaXJlY3RpdmVzJ1xcbmRlc2NyaWJpbmcgaG93IHRvIGZvcm1hdCB0aGUgdmFyaW91cyBhcmd1bWVudHMgcGFzc2VkIGluLlxcblxcbklmIHdyaXRlciBpcyBuaWwsIGNsLWZvcm1hdCByZXR1cm5zIHRoZSBmb3JtYXR0ZWQgcmVzdWx0IHN0cmluZy4gT3RoZXJ3aXNlLCBjbC1mb3JtYXRcXG5yZXR1cm5zIG5pbC5cXG5cXG5Gb3IgZXhhbXBsZTpcXG4gKGxldCBbcmVzdWx0cyBbNDYgMzggMjJdXVxcbiAgICAgICAgKGNsLWZvcm1hdCB0cnVlIFxcXCJUaGVyZSB+W2FyZX47aXN+OjthcmV+XX46KiB+ZCByZXN1bHR+OnA6IH57fmR+Xiwgfn1+JVxcXCJcXG4gICAgICAgICAgICAgICAgICAgKGNvdW50IHJlc3VsdHMpIHJlc3VsdHMpKVxcblxcblByaW50cyB2aWEgKnByaW50LWZuKjpcXG4gVGhlcmUgYXJlIDMgcmVzdWx0czogNDYsIDM4LCAyMlxcblxcbkRldGFpbGVkIGRvY3VtZW50YXRpb24gb24gZm9ybWF0IGNvbnRyb2wgc3RyaW5ncyBpcyBhdmFpbGFibGUgaW4gdGhlIFxcXCJDb21tb24gTGlzcCB0aGVcXG5MYW5ndWFnZSwgMm5kIGVkaXRpb25cXFwiLCBDaGFwdGVyIDIyIChhdmFpbGFibGUgb25saW5lIGF0Olxcbmh0dHA6Ly93d3cuY3MuY211LmVkdS9hZnMvY3MuY211LmVkdS9wcm9qZWN0L2FpLXJlcG9zaXRvcnkvYWkvaHRtbC9jbHRsL2NsbS9ub2RlMjAwLmh0bWwjU0VDVElPTjAwMjYzMzAwMDAwMDAwMDAwMDAwMClcXG5hbmQgaW4gdGhlIENvbW1vbiBMaXNwIEh5cGVyU3BlYyBhdFxcbmh0dHA6Ly93d3cubGlzcHdvcmtzLmNvbS9kb2N1bWVudGF0aW9uL0h5cGVyU3BlYy9Cb2R5LzIyX2MuaHRtXCJcclxuIHs6c2VlLWFsc29cclxuICBbW1wiaHR0cDovL3d3dy5jcy5jbXUuZWR1L2Fmcy9jcy5jbXUuZWR1L3Byb2plY3QvYWktcmVwb3NpdG9yeS9haS9odG1sL2NsdGwvY2xtL25vZGUyMDAuaHRtbCNTRUNUSU9OMDAyNjMzMDAwMDAwMDAwMDAwMDAwXCJcclxuICAgIFwiQ29tbW9uIExpc3AgdGhlIExhbmd1YWdlXCJdXHJcbiAgIFtcImh0dHA6Ly93d3cubGlzcHdvcmtzLmNvbS9kb2N1bWVudGF0aW9uL0h5cGVyU3BlYy9Cb2R5LzIyX2MuaHRtXCJcclxuICAgIFwiQ29tbW9uIExpc3AgSHlwZXJTcGVjXCJdXX1cclxuIFt3cml0ZXIgZm9ybWF0LWluICYgYXJnc11cclxuIChsZXRcclxuICBbY29tcGlsZWQtZm9ybWF0XHJcbiAgIChpZiAoc3RyaW5nPyBmb3JtYXQtaW4pIChjb21waWxlLWZvcm1hdCBmb3JtYXQtaW4pIGZvcm1hdC1pbilcclxuICAgbmF2aWdhdG9yXHJcbiAgIChpbml0LW5hdmlnYXRvciBhcmdzKV1cclxuICAoZXhlY3V0ZS1mb3JtYXQgd3JpdGVyIGNvbXBpbGVkLWZvcm1hdCBuYXZpZ2F0b3IpKSlcclxuIn0gezpzeW0gKnByaW50LW1pc2VyLXdpZHRoKiwgOm1ldGEgezpkb2MgIlRoZSBjb2x1bW4gYXQgd2hpY2ggdG8gZW50ZXIgbWlzZXIgc3R5bGUuIERlcGVuZGluZyBvbiB0aGUgZGlzcGF0Y2ggdGFibGUsXG5taXNlciBzdHlsZSBhZGQgbmV3bGluZXMgaW4gbW9yZSBwbGFjZXMgdG8gdHJ5IHRvIGtlZXAgbGluZXMgc2hvcnQgYWxsb3dpbmcgZm9yIGZ1cnRoZXJcbmxldmVscyBvZiBuZXN0aW5nLiJ9LCA6c291cmNlICIoZGVmICpwcmludC1taXNlci13aWR0aCogNDApXHJcbiJ9IHs6c3ltIHdyaXRlLCA6bWV0YSB7OmRvYyAiV3JpdGUgYW4gb2JqZWN0IHN1YmplY3QgdG8gdGhlIGN1cnJlbnQgYmluZGluZ3Mgb2YgdGhlIHByaW50ZXIgY29udHJvbCB2YXJpYWJsZXMuXG5Vc2UgdGhlIGt3LWFyZ3MgYXJndW1lbnQgdG8gb3ZlcnJpZGUgaW5kaXZpZHVhbCB2YXJpYWJsZXMgZm9yIHRoaXMgY2FsbCAoYW5kIGFueVxucmVjdXJzaXZlIGNhbGxzKS4gUmV0dXJucyB0aGUgc3RyaW5nIHJlc3VsdCBpZiA6c3RyZWFtIGlzIG5pbCBvciBuaWwgb3RoZXJ3aXNlLlxuXG5UaGUgZm9sbG93aW5nIGtleXdvcmQgYXJndW1lbnRzIGNhbiBiZSBwYXNzZWQgd2l0aCB2YWx1ZXM6XG4gIEtleXdvcmQgICAgICAgICAgICAgIE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0IHZhbHVlXG4gIDpzdHJlYW0gICAgICAgICAgICAgIFdyaXRlciBmb3Igb3V0cHV0IG9yIG5pbCAgICAgICAgICAgICB0cnVlIChpbmRpY2F0ZXMgKm91dCopXG4gIDpiYXNlICAgICAgICAgICAgICAgIEJhc2UgdG8gdXNlIGZvciB3cml0aW5nIHJhdGlvbmFscyAgICBDdXJyZW50IHZhbHVlIG9mICpwcmludC1iYXNlKlxuICA6Y2lyY2xlKiAgICAgICAgICAgICBJZiB0cnVlLCBtYXJrIGNpcmN1bGFyIHN0cnVjdHVyZXMgICAgQ3VycmVudCB2YWx1ZSBvZiAqcHJpbnQtY2lyY2xlKlxuICA6bGVuZ3RoICAgICAgICAgICAgICBNYXhpbXVtIGVsZW1lbnRzIHRvIHNob3cgaW4gc3VibGlzdHMgQ3VycmVudCB2YWx1ZSBvZiAqcHJpbnQtbGVuZ3RoKlxuICA6bGV2ZWwgICAgICAgICAgICAgICBNYXhpbXVtIGRlcHRoICAgICAgICAgICAgICAgICAgICAgICAgQ3VycmVudCB2YWx1ZSBvZiAqcHJpbnQtbGV2ZWwqXG4gIDpsaW5lcyogICAgICAgICAgICAgIE1heGltdW0gbGluZXMgb2Ygb3V0cHV0ICAgICAgICAgICAgICBDdXJyZW50IHZhbHVlIG9mICpwcmludC1saW5lcypcbiAgOm1pc2VyLXdpZHRoICAgICAgICAgV2lkdGggdG8gZW50ZXIgbWlzZXIgbW9kZSAgICAgICAgICAgIEN1cnJlbnQgdmFsdWUgb2YgKnByaW50LW1pc2VyLXdpZHRoKlxuICA6ZGlzcGF0Y2ggICAgICAgICAgICBUaGUgcHJldHR5IHByaW50IGRpc3BhdGNoIGZ1bmN0aW9uICAgQ3VycmVudCB2YWx1ZSBvZiAqcHJpbnQtcHByaW50LWRpc3BhdGNoKlxuICA6cHJldHR5ICAgICAgICAgICAgICBJZiB0cnVlLCBkbyBwcmV0dHkgcHJpbnRpbmcgICAgICAgICAgQ3VycmVudCB2YWx1ZSBvZiAqcHJpbnQtcHJldHR5KlxuICA6cmFkaXggICAgICAgICAgICAgICBJZiB0cnVlLCBwcmVwZW5kIGEgcmFkaXggc3BlY2lmaWVyICAgQ3VycmVudCB2YWx1ZSBvZiAqcHJpbnQtcmFkaXgqXG4gIDpyZWFkYWJseSogICAgICAgICAgIElmIHRydWUsIHByaW50IHJlYWRhYmx5ICAgICAgICAgICAgICBDdXJyZW50IHZhbHVlIG9mICpwcmludC1yZWFkYWJseSpcbiAgOnJpZ2h0LW1hcmdpbiAgICAgICAgVGhlIGNvbHVtbiBmb3IgdGhlIHJpZ2h0IG1hcmdpbiAgICAgIEN1cnJlbnQgdmFsdWUgb2YgKnByaW50LXJpZ2h0LW1hcmdpbipcbiAgOnN1cHByZXNzLW5hbWVzcGFjZXMgSWYgdHJ1ZSwgbm8gbmFtZXNwYWNlcyBpbiBzeW1ib2xzICAgIEN1cnJlbnQgdmFsdWUgb2YgKnByaW50LXN1cHByZXNzLW5hbWVzcGFjZXMqXG5cbiAgKiA9IG5vdCB5ZXQgc3VwcG9ydGVkXG4iLCA6YXJnbGlzdHMgKFtvYmplY3QgJiBrdy1hcmdzXSl9LCA6c291cmNlICIoZGVmblxyXG4gd3JpdGVcclxuIFwiV3JpdGUgYW4gb2JqZWN0IHN1YmplY3QgdG8gdGhlIGN1cnJlbnQgYmluZGluZ3Mgb2YgdGhlIHByaW50ZXIgY29udHJvbCB2YXJpYWJsZXMuXFxuVXNlIHRoZSBrdy1hcmdzIGFyZ3VtZW50IHRvIG92ZXJyaWRlIGluZGl2aWR1YWwgdmFyaWFibGVzIGZvciB0aGlzIGNhbGwgKGFuZCBhbnlcXG5yZWN1cnNpdmUgY2FsbHMpLiBSZXR1cm5zIHRoZSBzdHJpbmcgcmVzdWx0IGlmIDpzdHJlYW0gaXMgbmlsIG9yIG5pbCBvdGhlcndpc2UuXFxuXFxuVGhlIGZvbGxvd2luZyBrZXl3b3JkIGFyZ3VtZW50cyBjYW4gYmUgcGFzc2VkIHdpdGggdmFsdWVzOlxcbiAgS2V5d29yZCAgICAgICAgICAgICAgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHQgdmFsdWVcXG4gIDpzdHJlYW0gICAgICAgICAgICAgIFdyaXRlciBmb3Igb3V0cHV0IG9yIG5pbCAgICAgICAgICAgICB0cnVlIChpbmRpY2F0ZXMgKm91dCopXFxuICA6YmFzZSAgICAgICAgICAgICAgICBCYXNlIHRvIHVzZSBmb3Igd3JpdGluZyByYXRpb25hbHMgICAgQ3VycmVudCB2YWx1ZSBvZiAqcHJpbnQtYmFzZSpcXG4gIDpjaXJjbGUqICAgICAgICAgICAgIElmIHRydWUsIG1hcmsgY2lyY3VsYXIgc3RydWN0dXJlcyAgICBDdXJyZW50IHZhbHVlIG9mICpwcmludC1jaXJjbGUqXFxuICA6bGVuZ3RoICAgICAgICAgICAgICBNYXhpbXVtIGVsZW1lbnRzIHRvIHNob3cgaW4gc3VibGlzdHMgQ3VycmVudCB2YWx1ZSBvZiAqcHJpbnQtbGVuZ3RoKlxcbiAgOmxldmVsICAgICAgICAgICAgICAgTWF4aW11bSBkZXB0aCAgICAgICAgICAgICAgICAgICAgICAgIEN1cnJlbnQgdmFsdWUgb2YgKnByaW50LWxldmVsKlxcbiAgOmxpbmVzKiAgICAgICAgICAgICAgTWF4aW11bSBsaW5lcyBvZiBvdXRwdXQgICAgICAgICAgICAgIEN1cnJlbnQgdmFsdWUgb2YgKnByaW50LWxpbmVzKlxcbiAgOm1pc2VyLXdpZHRoICAgICAgICAgV2lkdGggdG8gZW50ZXIgbWlzZXIgbW9kZSAgICAgICAgICAgIEN1cnJlbnQgdmFsdWUgb2YgKnByaW50LW1pc2VyLXdpZHRoKlxcbiAgOmRpc3BhdGNoICAgICAgICAgICAgVGhlIHByZXR0eSBwcmludCBkaXNwYXRjaCBmdW5jdGlvbiAgIEN1cnJlbnQgdmFsdWUgb2YgKnByaW50LXBwcmludC1kaXNwYXRjaCpcXG4gIDpwcmV0dHkgICAgICAgICAgICAgIElmIHRydWUsIGRvIHByZXR0eSBwcmludGluZyAgICAgICAgICBDdXJyZW50IHZhbHVlIG9mICpwcmludC1wcmV0dHkqXFxuICA6cmFkaXggICAgICAgICAgICAgICBJZiB0cnVlLCBwcmVwZW5kIGEgcmFkaXggc3BlY2lmaWVyICAgQ3VycmVudCB2YWx1ZSBvZiAqcHJpbnQtcmFkaXgqXFxuICA6cmVhZGFibHkqICAgICAgICAgICBJZiB0cnVlLCBwcmludCByZWFkYWJseSAgICAgICAgICAgICAgQ3VycmVudCB2YWx1ZSBvZiAqcHJpbnQtcmVhZGFibHkqXFxuICA6cmlnaHQtbWFyZ2luICAgICAgICBUaGUgY29sdW1uIGZvciB0aGUgcmlnaHQgbWFyZ2luICAgICAgQ3VycmVudCB2YWx1ZSBvZiAqcHJpbnQtcmlnaHQtbWFyZ2luKlxcbiAgOnN1cHByZXNzLW5hbWVzcGFjZXMgSWYgdHJ1ZSwgbm8gbmFtZXNwYWNlcyBpbiBzeW1ib2xzICAgIEN1cnJlbnQgdmFsdWUgb2YgKnByaW50LXN1cHByZXNzLW5hbWVzcGFjZXMqXFxuXFxuICAqID0gbm90IHlldCBzdXBwb3J0ZWRcXG5cIlxyXG4gW29iamVjdCAmIGt3LWFyZ3NdXHJcbiAobGV0XHJcbiAgW29wdGlvbnMgKG1lcmdlIHs6c3RyZWFtIHRydWV9IChhcHBseSBoYXNoLW1hcCBrdy1hcmdzKSldXHJcbiAgKGJpbmRpbmdcclxuICAgW2NsanMucHByaW50LypwcmludC1iYXNlKlxyXG4gICAgKDpiYXNlIG9wdGlvbnMgY2xqcy5wcHJpbnQvKnByaW50LWJhc2UqKVxyXG4gICAgY2xqcy5wcHJpbnQvKnByaW50LWNpcmNsZSpcclxuICAgICg6Y2lyY2xlIG9wdGlvbnMgY2xqcy5wcHJpbnQvKnByaW50LWNpcmNsZSopXHJcbiAgICBjbGpzLmNvcmUvKnByaW50LWxlbmd0aCpcclxuICAgICg6bGVuZ3RoIG9wdGlvbnMgY2xqcy5jb3JlLypwcmludC1sZW5ndGgqKVxyXG4gICAgY2xqcy5jb3JlLypwcmludC1sZXZlbCpcclxuICAgICg6bGV2ZWwgb3B0aW9ucyBjbGpzLmNvcmUvKnByaW50LWxldmVsKilcclxuICAgIGNsanMucHByaW50LypwcmludC1saW5lcypcclxuICAgICg6bGluZXMgb3B0aW9ucyBjbGpzLnBwcmludC8qcHJpbnQtbGluZXMqKVxyXG4gICAgY2xqcy5wcHJpbnQvKnByaW50LW1pc2VyLXdpZHRoKlxyXG4gICAgKDptaXNlci13aWR0aCBvcHRpb25zIGNsanMucHByaW50LypwcmludC1taXNlci13aWR0aCopXHJcbiAgICBjbGpzLnBwcmludC8qcHJpbnQtcHByaW50LWRpc3BhdGNoKlxyXG4gICAgKDpkaXNwYXRjaCBvcHRpb25zIGNsanMucHByaW50LypwcmludC1wcHJpbnQtZGlzcGF0Y2gqKVxyXG4gICAgY2xqcy5wcHJpbnQvKnByaW50LXByZXR0eSpcclxuICAgICg6cHJldHR5IG9wdGlvbnMgY2xqcy5wcHJpbnQvKnByaW50LXByZXR0eSopXHJcbiAgICBjbGpzLnBwcmludC8qcHJpbnQtcmFkaXgqXHJcbiAgICAoOnJhZGl4IG9wdGlvbnMgY2xqcy5wcHJpbnQvKnByaW50LXJhZGl4KilcclxuICAgIGNsanMuY29yZS8qcHJpbnQtcmVhZGFibHkqXHJcbiAgICAoOnJlYWRhYmx5IG9wdGlvbnMgY2xqcy5jb3JlLypwcmludC1yZWFkYWJseSopXHJcbiAgICBjbGpzLnBwcmludC8qcHJpbnQtcmlnaHQtbWFyZ2luKlxyXG4gICAgKDpyaWdodC1tYXJnaW4gb3B0aW9ucyBjbGpzLnBwcmludC8qcHJpbnQtcmlnaHQtbWFyZ2luKilcclxuICAgIGNsanMucHByaW50LypwcmludC1zdXBwcmVzcy1uYW1lc3BhY2VzKlxyXG4gICAgKDpzdXBwcmVzcy1uYW1lc3BhY2VzXHJcbiAgICAgb3B0aW9uc1xyXG4gICAgIGNsanMucHByaW50LypwcmludC1zdXBwcmVzcy1uYW1lc3BhY2VzKildXHJcbiAgIChiaW5kaW5nXHJcbiAgICBbXVxyXG4gICAgKGxldFxyXG4gICAgIFtzYlxyXG4gICAgICAoU3RyaW5nQnVmZmVyLilcclxuICAgICAgb3B0dmFsXHJcbiAgICAgIChpZiAoY29udGFpbnM/IG9wdGlvbnMgOnN0cmVhbSkgKDpzdHJlYW0gb3B0aW9ucykgdHJ1ZSlcclxuICAgICAgYmFzZS13cml0ZXJcclxuICAgICAgKGlmXHJcbiAgICAgICAob3IgKHRydWU/IG9wdHZhbCkgKG5pbD8gb3B0dmFsKSlcclxuICAgICAgIChTdHJpbmdCdWZmZXJXcml0ZXIuIHNiKVxyXG4gICAgICAgb3B0dmFsKV1cclxuICAgICAoaWZcclxuICAgICAgKnByaW50LXByZXR0eSpcclxuICAgICAgKHdpdGgtcHJldHR5LXdyaXRlciBiYXNlLXdyaXRlciAod3JpdGUtb3V0IG9iamVjdCkpXHJcbiAgICAgIChiaW5kaW5nIFsqb3V0KiBiYXNlLXdyaXRlcl0gKHByIG9iamVjdCkpKVxyXG4gICAgIChpZiAodHJ1ZT8gb3B0dmFsKSAoc3RyaW5nLXByaW50IChzdHIgc2IpKSlcclxuICAgICAoaWYgKG5pbD8gb3B0dmFsKSAoc3RyIHNiKSkpKSkpKVxyXG4ifSB7OnN5bSAtcHBmbHVzaCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwcF0pfSwgOnByb3RvY29sIElQcmV0dHlGbHVzaH0gezpzeW0gKnByaW50LXJpZ2h0LW1hcmdpbiosIDptZXRhIHs6ZG9jICJQcmV0dHkgcHJpbnRpbmcgd2lsbCB0cnkgdG8gYXZvaWQgYW55dGhpbmcgZ29pbmcgYmV5b25kIHRoaXMgY29sdW1uLlxuU2V0IGl0IHRvIG5pbCB0byBoYXZlIHBwcmludCBsZXQgdGhlIGxpbmUgYmUgYXJiaXRyYXJpbHkgbG9uZy4gVGhpcyB3aWxsIGlnbm9yZSBhbGxcbm5vbi1tYW5kYXRvcnkgbmV3bGluZXMuIn0sIDpzb3VyY2UgIihkZWYgKnByaW50LXJpZ2h0LW1hcmdpbiogNzIpXHJcbiJ9IHs6c3ltIHdyaXRlLW91dCwgOm1ldGEgezpkb2MgIldyaXRlIGFuIG9iamVjdCB0byAqb3V0KiBzdWJqZWN0IHRvIHRoZSBjdXJyZW50IGJpbmRpbmdzIG9mIHRoZSBwcmludGVyIGNvbnRyb2xcbnZhcmlhYmxlcy4gVXNlIHRoZSBrdy1hcmdzIGFyZ3VtZW50IHRvIG92ZXJyaWRlIGluZGl2aWR1YWwgdmFyaWFibGVzIGZvciB0aGlzIGNhbGwgKGFuZFxuYW55IHJlY3Vyc2l2ZSBjYWxscykuXG5cbipvdXQqIG11c3QgYmUgYSBQcmV0dHlXcml0ZXIgaWYgcHJldHR5IHByaW50aW5nIGlzIGVuYWJsZWQuIFRoaXMgaXMgdGhlIHJlc3BvbnNpYmlsaXR5XG5vZiB0aGUgY2FsbGVyLlxuXG5UaGlzIG1ldGhvZCBpcyBwcmltYXJpbHkgaW50ZW5kZWQgZm9yIHVzZSBieSBwcmV0dHkgcHJpbnQgZGlzcGF0Y2ggZnVuY3Rpb25zIHRoYXRcbmFscmVhZHkga25vdyB0aGF0IHRoZSBwcmV0dHkgcHJpbnRlciB3aWxsIGhhdmUgc2V0IHVwIHRoZWlyIGVudmlyb25tZW50IGFwcHJvcHJpYXRlbHkuXG5Ob3JtYWwgbGlicmFyeSBjbGllbnRzIHNob3VsZCB1c2UgdGhlIHN0YW5kYXJkIFwid3JpdGVcIiBpbnRlcmZhY2UuICIsIDphcmdsaXN0cyAoW29iamVjdF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHdyaXRlLW91dFxyXG4gXCJXcml0ZSBhbiBvYmplY3QgdG8gKm91dCogc3ViamVjdCB0byB0aGUgY3VycmVudCBiaW5kaW5ncyBvZiB0aGUgcHJpbnRlciBjb250cm9sXFxudmFyaWFibGVzLiBVc2UgdGhlIGt3LWFyZ3MgYXJndW1lbnQgdG8gb3ZlcnJpZGUgaW5kaXZpZHVhbCB2YXJpYWJsZXMgZm9yIHRoaXMgY2FsbCAoYW5kXFxuYW55IHJlY3Vyc2l2ZSBjYWxscykuXFxuXFxuKm91dCogbXVzdCBiZSBhIFByZXR0eVdyaXRlciBpZiBwcmV0dHkgcHJpbnRpbmcgaXMgZW5hYmxlZC4gVGhpcyBpcyB0aGUgcmVzcG9uc2liaWxpdHlcXG5vZiB0aGUgY2FsbGVyLlxcblxcblRoaXMgbWV0aG9kIGlzIHByaW1hcmlseSBpbnRlbmRlZCBmb3IgdXNlIGJ5IHByZXR0eSBwcmludCBkaXNwYXRjaCBmdW5jdGlvbnMgdGhhdFxcbmFscmVhZHkga25vdyB0aGF0IHRoZSBwcmV0dHkgcHJpbnRlciB3aWxsIGhhdmUgc2V0IHVwIHRoZWlyIGVudmlyb25tZW50IGFwcHJvcHJpYXRlbHkuXFxuTm9ybWFsIGxpYnJhcnkgY2xpZW50cyBzaG91bGQgdXNlIHRoZSBzdGFuZGFyZCBcXFwid3JpdGVcXFwiIGludGVyZmFjZS4gXCJcclxuIFtvYmplY3RdXHJcbiAobGV0XHJcbiAgW2xlbmd0aC1yZWFjaGVkXHJcbiAgIChhbmRcclxuICAgICpjdXJyZW50LWxlbmd0aCpcclxuICAgICpwcmludC1sZW5ndGgqXHJcbiAgICAoPj0gKmN1cnJlbnQtbGVuZ3RoKiAqcHJpbnQtbGVuZ3RoKikpXVxyXG4gIChpZi1ub3RcclxuICAgKnByaW50LXByZXR0eSpcclxuICAgKHByIG9iamVjdClcclxuICAgKGlmXHJcbiAgICBsZW5ndGgtcmVhY2hlZFxyXG4gICAgKC13cml0ZSAqb3V0KiBcIi4uLlwiKVxyXG4gICAgKGRvXHJcbiAgICAgKGlmXHJcbiAgICAgICpjdXJyZW50LWxlbmd0aCpcclxuICAgICAgKHNldCEgKmN1cnJlbnQtbGVuZ3RoKiAoaW5jICpjdXJyZW50LWxlbmd0aCopKSlcclxuICAgICAoKnByaW50LXBwcmludC1kaXNwYXRjaCogb2JqZWN0KSkpKVxyXG4gIGxlbmd0aC1yZWFjaGVkKSlcclxuIn0gezpzeW0gKnByaW50LWJhc2UqLCA6bWV0YSB7OmRvYyAiVGhlIGJhc2UgdG8gdXNlIGZvciBwcmludGluZyBpbnRlZ2VycyBhbmQgcmF0aW9uYWxzLiJ9LCA6c291cmNlICIoZGVmICpwcmludC1iYXNlKiAxMClcclxuIn0pLCBydW0udXRpbCAoezpzeW0gY29sbGVjdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtrZXkgbWl4aW5zXSl9LCA6c291cmNlICIoZGVmblxyXG4gY29sbGVjdFxyXG4gW2tleSBtaXhpbnNdXHJcbiAoaW50byBbXSAoa2VlcCAoZm4gW21dIChnZXQgbSBrZXkpKSkgbWl4aW5zKSlcclxuIn0gezpzeW0gY29sbGVjdCosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChba2V5cyBtaXhpbnNdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBjb2xsZWN0KlxyXG4gW2tleXMgbWl4aW5zXVxyXG4gKGludG8gW10gKG1hcGNhdCAoZm4gW21dIChrZWVwIChmbiBba10gKGdldCBtIGspKSBrZXlzKSkpIG1peGlucykpXHJcbiJ9IHs6c3ltIGNhbGwtYWxsLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N0YXRlIGZucyAmIGFyZ3NdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBjYWxsLWFsbFxyXG4gW3N0YXRlIGZucyAmIGFyZ3NdXHJcbiAocmVkdWNlIChmbiBbc3RhdGUgZm5dIChhcHBseSBmbiBzdGF0ZSBhcmdzKSkgc3RhdGUgZm5zKSlcclxuIn0pLCBvYWtjbGpzLnRvb2xzLnJlYWRlci5pbXBsLmluc3BlY3QgKHs6c3ltIGluc3BlY3QsIDptZXRhIHs6ZG9jICJSZXR1cm4gYSBzdHJpbmcgZGVzY3JpcHRpb24gb2YgdGhlIHZhbHVlIHN1cHBsaWVkLlxuICAgTWF5IGJlIHRoZSBhIHN0cmluZyB2ZXJzaW9uIG9mIHRoZSB2YWx1ZSBpdHNlbGYgKGUuZy4gXCJ0cnVlXCIpXG4gICBvciBpdCBtYXkgYmUgYSBkZXNjcmlwdGlvbiAoZS5nLiBcImFuIGluc3RhbmNlIG9mIEZvb1wiKS5cbiAgIElmIHRydW5jYXRlIGlzIHRydWUgdGhlbiByZXR1cm4gYSB2ZXJ5IHRlcnNlIHZlcnNpb24gb2ZcbiAgIHRoZSBpbnNwZWN0aW9uLiIsIDphcmdsaXN0cyBbW3hdIFt0cnVuY2F0ZSB4XV19LCA6c291cmNlICIoZGVmblxyXG4gaW5zcGVjdFxyXG4gXCJSZXR1cm4gYSBzdHJpbmcgZGVzY3JpcHRpb24gb2YgdGhlIHZhbHVlIHN1cHBsaWVkLlxcbiAgIE1heSBiZSB0aGUgYSBzdHJpbmcgdmVyc2lvbiBvZiB0aGUgdmFsdWUgaXRzZWxmIChlLmcuIFxcXCJ0cnVlXFxcIilcXG4gICBvciBpdCBtYXkgYmUgYSBkZXNjcmlwdGlvbiAoZS5nLiBcXFwiYW4gaW5zdGFuY2Ugb2YgRm9vXFxcIikuXFxuICAgSWYgdHJ1bmNhdGUgaXMgdHJ1ZSB0aGVuIHJldHVybiBhIHZlcnkgdGVyc2UgdmVyc2lvbiBvZlxcbiAgIHRoZSBpbnNwZWN0aW9uLlwiXHJcbiAoW3hdIChpbnNwZWN0KiBmYWxzZSB4KSlcclxuIChbdHJ1bmNhdGUgeF0gKGluc3BlY3QqIHRydW5jYXRlIHgpKSlcclxuIn0pLCBzYWJsb25vLmludGVycHJldGVyICh7OnN5bSBpbnRlcnByZXQsIDptZXRhIHs6ZG9jICJJbnRlcnByZXQgYSBDbG9qdXJlIGRhdGEgc3RydWN0dXJlIGFzIGEgUmVhY3QgZm4gY2FsbC4iLCA6YXJnbGlzdHMgKFt0aGlzXSl9LCA6cHJvdG9jb2wgSUludGVycHJldGVyfSB7OnN5bSBJSW50ZXJwcmV0ZXIsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzIChpbnRlcnByZXQpfSB7OnN5bSBjb250cm9sbGVkLWlucHV0PywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiBgdHlwZWAgYW5kIGBwcm9wc2AgYXJlIHVzZWQgYSBjb250cm9sbGVkIGlucHV0LFxuICBvdGhlcndpc2UgZmFsc2UuIiwgOmFyZ2xpc3RzIChbdHlwZSBwcm9wc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGNvbnRyb2xsZWQtaW5wdXQ/XHJcbiBcIlJldHVybnMgdHJ1ZSBpZiBgdHlwZWAgYW5kIGBwcm9wc2AgYXJlIHVzZWQgYSBjb250cm9sbGVkIGlucHV0LFxcbiAgb3RoZXJ3aXNlIGZhbHNlLlwiXHJcbiBbdHlwZSBwcm9wc11cclxuICM/KDpjbGpzIChhbmQgKG9iamVjdD8gcHJvcHMpIChjYXNlIHR5cGUgXCJpbnB1dFwiIChvciAoZXhpc3RzPyAoLi1jaGVja2VkIHByb3BzKSkgKGV4aXN0cz8gKC4tdmFsdWUgcHJvcHMpKSkgXCJzZWxlY3RcIiAoZXhpc3RzPyAoLi12YWx1ZSBwcm9wcykpIFwidGV4dGFyZWFcIiAoZXhpc3RzPyAoLi12YWx1ZSBwcm9wcykpIGZhbHNlKSkpKVxyXG4ifSB7OnN5bSBjcmVhdGUtZWxlbWVudCwgOm1ldGEgezpkb2MgIkNyZWF0ZSBhIFJlYWN0IGVsZW1lbnQuIFJldHVybnMgYSBKYXZhU2NyaXB0IG9iamVjdCB3aGVuIHJ1bm5pbmdcbiAgdW5kZXIgQ2xvanVyZVNjcmlwdCwgYW5kIGEgb20uZG9tLkVsZW1lbnQgcmVjb3JkIGluIENsb2p1cmUuIiwgOmFyZ2xpc3RzIChbdHlwZSBwcm9wcyAmIGNoaWxkcmVuXSl9LCA6c291cmNlICIoZGVmblxyXG4gY3JlYXRlLWVsZW1lbnRcclxuIFwiQ3JlYXRlIGEgUmVhY3QgZWxlbWVudC4gUmV0dXJucyBhIEphdmFTY3JpcHQgb2JqZWN0IHdoZW4gcnVubmluZ1xcbiAgdW5kZXIgQ2xvanVyZVNjcmlwdCwgYW5kIGEgb20uZG9tLkVsZW1lbnQgcmVjb3JkIGluIENsb2p1cmUuXCJcclxuIFt0eXBlIHByb3BzICYgY2hpbGRyZW5dXHJcbiAjPyg6Y2xqIChkb20vZWxlbWVudCB7OmF0dHJzIHByb3BzLCA6Y2hpbGRyZW4gY2hpbGRyZW4sIDpyZWFjdC1rZXkgbmlsLCA6dGFnIHR5cGV9KSA6Y2xqcyAoYXBwbHkganMvUmVhY3QuY3JlYXRlRWxlbWVudCAoZWxlbWVudC1jbGFzcyB0eXBlIHByb3BzKSBwcm9wcyBjaGlsZHJlbikpKVxyXG4ifSB7OnN5bSBhdHRyaWJ1dGVzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2F0dHJzXSl9LCA6c291cmNlICIoZGVmblxyXG4gYXR0cmlidXRlc1xyXG4gW2F0dHJzXVxyXG4gIz8oOmNsaiAoLT4gKHV0aWwvaHRtbC10by1kb20tYXR0cnMgYXR0cnMpICh1cGRhdGUgOmNsYXNzTmFtZSAoZm4qIFtwMV9fNDE2NzQjXSAoc29tZS0+PiBwMV9fNDE2NzQjIChzdHIvam9pbiBcIiBcIikpKSkpIDpjbGpzICh3aGVuLWxldCBbanMtYXR0cnMgKGNsai0+anMgKHV0aWwvaHRtbC10by1kb20tYXR0cnMgYXR0cnMpKV0gKGxldCBbY2xhc3MgKC4tY2xhc3NOYW1lIGpzLWF0dHJzKSBjbGFzcyAoaWYgKGFycmF5PyBjbGFzcykgKGpvaW4gXCIgXCIgY2xhc3MpIGNsYXNzKV0gKGlmIChibGFuaz8gY2xhc3MpIChqcy1kZWxldGUganMtYXR0cnMgXCJjbGFzc05hbWVcIikgKHNldCEgKC4tY2xhc3NOYW1lIGpzLWF0dHJzKSBjbGFzcykpIGpzLWF0dHJzKSkpKVxyXG4ifSB7OnN5bSBlbGVtZW50LCA6bWV0YSB7OmRvYyAiUmVuZGVyIGFuIGVsZW1lbnQgdmVjdG9yIGFzIGEgSFRNTCBlbGVtZW50LiIsIDphcmdsaXN0cyAoW2VsZW1lbnRdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBlbGVtZW50XHJcbiBcIlJlbmRlciBhbiBlbGVtZW50IHZlY3RvciBhcyBhIEhUTUwgZWxlbWVudC5cIlxyXG4gW2VsZW1lbnRdXHJcbiAobGV0XHJcbiAgW1t0eXBlIGF0dHJzIGNvbnRlbnRdIChub3JtYWxpemUvZWxlbWVudCBlbGVtZW50KV1cclxuICAoYXBwbHlcclxuICAgY3JlYXRlLWVsZW1lbnRcclxuICAgdHlwZVxyXG4gICAoYXR0cmlidXRlcyBhdHRycylcclxuICAgKGludGVycHJldC1zZXEgY29udGVudCkpKSlcclxuIn0pLCBjbGpzLnRvb2xzLnJlYWRlci5pbXBsLnV0aWxzICh7OnN5bSByZWFkZXItY29uZGl0aW9uYWwsIDptZXRhIHs6ZG9jICJDb25zdHJ1Y3QgYSBkYXRhIHJlcHJlc2VudGF0aW9uIG9mIGEgcmVhZGVyIGNvbmRpdGlvbmFsLlxuICBJZiB0cnVlLCBzcGxpY2luZz8gaW5kaWNhdGVzIHJlYWQtY29uZC1zcGxpY2luZy4iLCA6YXJnbGlzdHMgKFtmb3JtIHNwbGljaW5nP10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlYWRlci1jb25kaXRpb25hbFxyXG4gXCJDb25zdHJ1Y3QgYSBkYXRhIHJlcHJlc2VudGF0aW9uIG9mIGEgcmVhZGVyIGNvbmRpdGlvbmFsLlxcbiAgSWYgdHJ1ZSwgc3BsaWNpbmc/IGluZGljYXRlcyByZWFkLWNvbmQtc3BsaWNpbmcuXCJcclxuIFtmb3JtIHNwbGljaW5nP11cclxuIChSZWFkZXJDb25kaXRpb25hbC4gc3BsaWNpbmc/IGZvcm0pKVxyXG4ifSB7OnN5bSB3aGl0ZXNwYWNlPywgOm1ldGEgezpkb2MgIkNoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gY2hhcmFjdGVyIGlzIHdoaXRlc3BhY2UiLCA6YXJnbGlzdHMgKFtjaF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHdoaXRlc3BhY2U/XHJcbiBcIkNoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gY2hhcmFjdGVyIGlzIHdoaXRlc3BhY2VcIlxyXG4gW2NoXVxyXG4gKHdoZW4tbm90IChuaWw/IGNoKSAoaWYgKGlkZW50aWNhbD8gY2ggXFwsKSB0cnVlICgudGVzdCB3cy1yeCBjaCkpKSlcclxuIn0gezpzeW0gY2hhci1jb2RlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2NoIGJhc2VdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBjaGFyLWNvZGVcclxuIFtjaCBiYXNlXVxyXG4gKGxldCBbY29kZSAoanMvcGFyc2VJbnQgY2ggYmFzZSldIChpZiAoanMvaXNOYU4gY29kZSkgLTEgY29kZSkpKVxyXG4ifSB7OnN5bSBsYXN0LWlkLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBsYXN0LWlkIChhdG9tIDApKVxyXG4ifSB7OnN5bSBjaGFyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGNoYXIgW3hdICh3aGVuLW5vdCAobmlsPyB4KSAoY2xqcy5jb3JlL2NoYXIgeCkpKVxyXG4ifSB7OnN5bSBudW1lcmljPywgOm1ldGEgezpkb2MgIkNoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gY2hhcmFjdGVyIGlzIG51bWVyaWMiLCA6YXJnbGlzdHMgKFtjaF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIG51bWVyaWM/XHJcbiBcIkNoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gY2hhcmFjdGVyIGlzIG51bWVyaWNcIlxyXG4gW2NoXVxyXG4gKHdoZW4tbm90IChuaWw/IGNoKSAoZ3N0cmluZy9pc051bWVyaWMgY2gpKSlcclxuIn0gezpzeW0gc2Vjb25kJywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtbYSBiXV0pfSwgOnNvdXJjZSAiKGRlZm4gc2Vjb25kJyBbW2EgYl1dICh3aGVuLW5vdCBhIGIpKVxyXG4ifSB7OnN5bSBkZXN1Z2FyLW1ldGEsIDptZXRhIHs6ZG9jICJSZXNvbHZlcyBzeW50YWN0aWNhbCBzdWdhciBpbiBtZXRhZGF0YSIsIDphcmdsaXN0cyAoW2ZdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBkZXN1Z2FyLW1ldGFcclxuIFwiUmVzb2x2ZXMgc3ludGFjdGljYWwgc3VnYXIgaW4gbWV0YWRhdGFcIlxyXG4gW2ZdXHJcbiAoY29uZFxyXG4gIChrZXl3b3JkPyBmKVxyXG4gIHtmIHRydWV9XHJcbiAgKHN5bWJvbD8gZilcclxuICB7OnRhZyBmfVxyXG4gIChzdHJpbmc/IGYpXHJcbiAgezp0YWcgZn1cclxuICA6ZWxzZVxyXG4gIGYpKVxyXG4ifSB7OnN5bSBuZXh0LWlkLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm4gbmV4dC1pZCBbXSAoc3dhcCEgbGFzdC1pZCBpbmMpKVxyXG4ifSB7OnN5bSBleC1pbmZvPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtleF0pfSwgOnNvdXJjZSAiKGRlZm4gZXgtaW5mbz8gW2V4XSAoaW5zdGFuY2U/IGNsanMuY29yZS5FeGNlcHRpb25JbmZvIGV4KSlcclxuIn0gezpzeW0gcmVhZGVyLWNvbmRpdGlvbmFsPywgOm1ldGEgezpkb2MgIlJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBpcyB0aGUgZGF0YSByZXByZXNlbnRhdGlvbiBvZiBhIHJlYWRlciBjb25kaXRpb25hbCIsIDphcmdsaXN0cyAoW3ZhbHVlXSl9LCA6c291cmNlICIoZGVmblxyXG4gcmVhZGVyLWNvbmRpdGlvbmFsP1xyXG4gXCJSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgaXMgdGhlIGRhdGEgcmVwcmVzZW50YXRpb24gb2YgYSByZWFkZXIgY29uZGl0aW9uYWxcIlxyXG4gW3ZhbHVlXVxyXG4gKGluc3RhbmNlPyBSZWFkZXJDb25kaXRpb25hbCB2YWx1ZSkpXHJcbiJ9IHs6c3ltIG5ld2xpbmU/LCA6bWV0YSB7OmRvYyAiQ2hlY2tzIHdoZXRoZXIgdGhlIGNoYXJhY3RlciBpcyBhIG5ld2xpbmUiLCA6YXJnbGlzdHMgKFtjXSl9LCA6c291cmNlICIoZGVmblxyXG4gbmV3bGluZT9cclxuIFwiQ2hlY2tzIHdoZXRoZXIgdGhlIGNoYXJhY3RlciBpcyBhIG5ld2xpbmVcIlxyXG4gW2NdXHJcbiAob3IgKGlkZW50aWNhbD8gXFxuZXdsaW5lIGMpIChpZGVudGljYWw/IFwiXFxuXCIgYykgKG5pbD8gYykpKVxyXG4ifSB7OnN5bSBuYW1lc3BhY2Uta2V5cywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtucyBrZXlzXSl9LCA6c291cmNlICIoZGVmblxyXG4gbmFtZXNwYWNlLWtleXNcclxuIFtucyBrZXlzXVxyXG4gKGZvclxyXG4gIFtrZXkga2V5c11cclxuICAoaWZcclxuICAgKG9yIChzeW1ib2w/IGtleSkgKGtleXdvcmQ/IGtleSkpXHJcbiAgIChsZXRcclxuICAgIFtba2V5LW5zIGtleS1uYW1lXVxyXG4gICAgICgoanV4dCBuYW1lc3BhY2UgbmFtZSkga2V5KVxyXG4gICAgIC0+a2V5XHJcbiAgICAgKGlmIChzeW1ib2w/IGtleSkgc3ltYm9sIGtleXdvcmQpXVxyXG4gICAgKGNvbmRcclxuICAgICAobmlsPyBrZXktbnMpXHJcbiAgICAgKC0+a2V5IG5zIGtleS1uYW1lKVxyXG4gICAgICg9IFwiX1wiIGtleS1ucylcclxuICAgICAoLT5rZXkga2V5LW5hbWUpXHJcbiAgICAgOmVsc2VcclxuICAgICBrZXkpKVxyXG4gICBrZXkpKSlcclxuIn0gezpzeW0gd3MtcngsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHdzLXJ4ICNcIltcXHNdXCIpXHJcbiJ9KSwgY2xqcy50YWdnZWQtbGl0ZXJhbHMgKHs6c3ltIHJlYWQtcXVldWUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlYWQtcXVldWVcclxuIFtmb3JtXVxyXG4gKHdoZW4tbm90XHJcbiAgKHZlY3Rvcj8gZm9ybSlcclxuICAodGhyb3dcclxuICAgIz8oOmNsaiAoUnVudGltZUV4Y2VwdGlvbi4gXCJRdWV1ZSBsaXRlcmFsIGV4cGVjdHMgYSB2ZWN0b3IgZm9yIGl0cyBlbGVtZW50cy5cIikgOmNsanMgKGpzL0Vycm9yLiBcIlF1ZXVlIGxpdGVyYWwgZXhwZWN0cyBhIHZlY3RvciBmb3IgaXRzIGVsZW1lbnRzLlwiKSkpKVxyXG4gKGxpc3QgJ2NsanMuY29yZS9pbnRvICdjbGpzLmNvcmUuUGVyc2lzdGVudFF1ZXVlLkVNUFRZIGZvcm0pKVxyXG4ifSB7OnN5bSB2YWxpZC1qcy1saXRlcmFsLWtleT8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChba10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHZhbGlkLWpzLWxpdGVyYWwta2V5P1xyXG4gW2tdXHJcbiAob3IgKHN0cmluZz8gaykgKGFuZCAoa2V5d29yZD8gaykgKG5pbD8gKG5hbWVzcGFjZSBrKSkpKSlcclxuIn0gezpzeW0gcmVhZC1qcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmb3JtXSl9LCA6c291cmNlICIoZGVmblxyXG4gcmVhZC1qc1xyXG4gW2Zvcm1dXHJcbiAod2hlbi1ub3RcclxuICAob3IgKHZlY3Rvcj8gZm9ybSkgKG1hcD8gZm9ybSkpXHJcbiAgKHRocm93XHJcbiAgICM/KDpjbGogKFJ1bnRpbWVFeGNlcHRpb24uIFwiSmF2YVNjcmlwdCBsaXRlcmFsIG11c3QgdXNlIG1hcCBvciB2ZWN0b3Igbm90YXRpb25cIikgOmNsanMgKGpzL0Vycm9yLiBcIkphdmFTY3JpcHQgbGl0ZXJhbCBtdXN0IHVzZSBtYXAgb3IgdmVjdG9yIG5vdGF0aW9uXCIpKSkpXHJcbiAod2hlbi1ub3RcclxuICAob3IgKG5vdCAobWFwPyBmb3JtKSkgKGV2ZXJ5PyB2YWxpZC1qcy1saXRlcmFsLWtleT8gKGtleXMgZm9ybSkpKVxyXG4gICh0aHJvd1xyXG4gICAjPyg6Y2xqIChSdW50aW1lRXhjZXB0aW9uLiBcIkphdmFTY3JpcHQgbGl0ZXJhbCBrZXlzIG11c3QgYmUgc3RyaW5ncyBvciB1bnF1YWxpZmllZCBrZXl3b3Jkc1wiKSA6Y2xqcyAoanMvRXJyb3IuIFwiSmF2YVNjcmlwdCBsaXRlcmFsIGtleXMgbXVzdCBiZSBzdHJpbmdzIG9yIHVucXVhbGlmaWVkIGtleXdvcmRzXCIpKSkpXHJcbiAoSlNWYWx1ZS4gZm9ybSkpXHJcbiJ9IHs6c3ltICpjbGpzLWRhdGEtcmVhZGVycyosIDptZXRhIHt9LCA6c291cmNlICIoZGVmXHJcbiAqY2xqcy1kYXRhLXJlYWRlcnMqXHJcbiAobWVyZ2VcclxuICAjPyg6Y2xqICpkYXRhLXJlYWRlcnMqKVxyXG4gIHsncXVldWUgcmVhZC1xdWV1ZSwgJ3V1aWQgcmVhZC11dWlkLCAnaW5zdCByZWFkLWluc3QsICdqcyByZWFkLWpzfSkpXHJcbiJ9KSwgY2xqcy5hbmFseXplciAoezpzeW0gdHlwZT8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IHRdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB0eXBlP1xyXG4gIz8oOmNsanMgezp0YWcgYm9vbGVhbn0pXHJcbiBbZW52IHRdXHJcbiAod2hlblxyXG4gIChhbmQgKHNvbWU/IHQpIChzeW1ib2w/IHQpKVxyXG4gIChsZXRcclxuICAgW3ZhciAocmVzb2x2ZS12YXIgZW52IHQpXVxyXG4gICAoaWYtc29tZVxyXG4gICAgW3R5cGUgKDp0eXBlIHZhcildXHJcbiAgICB0eXBlXHJcbiAgICAoaWYtc29tZVxyXG4gICAgIFt0eXBlICgtPiB2YXIgOmluZm8gOnR5cGUpXVxyXG4gICAgIHR5cGVcclxuICAgICAoaWYtc29tZVxyXG4gICAgICBbcHJvdG8gKDpwcm90b2NvbC1zeW1ib2wgdmFyKV1cclxuICAgICAgcHJvdG9cclxuICAgICAgKGdldCAnI3tjbGpzLmNvcmUvUGVyc2lzdGVudEhhc2hNYXAgY2xqcy5jb3JlL0xpc3R9IHQpKSkpKSkpXHJcbiJ9IHs6c3ltIGdldC1uYW1lc3BhY2UsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtba2V5XSBbY2VudiBrZXldXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBnZXQtbmFtZXNwYWNlXHJcbiAoW2tleV0gKGdldC1uYW1lc3BhY2UgZW52Lypjb21waWxlcioga2V5KSlcclxuIChbY2VudiBrZXldXHJcbiAgKGlmLXNvbWVcclxuICAgW25zIChnZXQtaW4gQGNlbnYgWzpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXMga2V5XSldXHJcbiAgIG5zXHJcbiAgICh3aGVuICg9ICdjbGpzLnVzZXIga2V5KSB7Om5hbWUgJ2NsanMudXNlcn0pKSkpXHJcbiJ9IHs6c3ltIGVsaWRlLXJlYWRlci1tZXRhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBlbGlkZS1yZWFkZXItbWV0YVxyXG4gW21dXHJcbiAoZGlzc29jIG0gOmZpbGUgOmxpbmUgOmNvbHVtbiA6ZW5kLWNvbHVtbiA6ZW5kLWxpbmUgOnNvdXJjZSkpXHJcbiJ9IHs6c3ltIG1pc3NpbmctcmVuYW1lPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzeW0gY2Vudl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIG1pc3NpbmctcmVuYW1lP1xyXG4gW3N5bSBjZW52XVxyXG4gKGxldFxyXG4gIFtsaWIgKHN5bWJvbCAobmFtZXNwYWNlIHN5bSkpIHN5bSAoc3ltYm9sIChuYW1lIHN5bSkpXVxyXG4gIChtaXNzaW5nLXVzZT8gbGliIHN5bSBjZW52KSkpXHJcbiJ9IHs6c3ltIHJlc29sdmUtaW52b2tlYWJsZS1ucywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtucyBjdXJyZW50LW5zIGVudl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlc29sdmUtaW52b2tlYWJsZS1uc1xyXG4gW25zIGN1cnJlbnQtbnMgZW52XVxyXG4gKGxldFxyXG4gIFtucyAocmVzb2x2ZS1ucy1hbGlhcyBlbnYgbnMpIG1vZHVsZS10eXBlIChucy0+bW9kdWxlLXR5cGUgbnMpXVxyXG4gIChjYXNlXHJcbiAgIG1vZHVsZS10eXBlXHJcbiAgIDpqc1xyXG4gICB7Om5hbWVcclxuICAgIChzeW1ib2xcclxuICAgICAob3JcclxuICAgICAgKGdldHMgQGVudi8qY29tcGlsZXIqIDpqcy1tb2R1bGUtaW5kZXggbnMgOm5hbWUpXHJcbiAgICAgIChyZXNvbHZlLW5zLWFsaWFzIGVudiBucykpKSxcclxuICAgIDpvcCA6anMtdmFyLFxyXG4gICAgOm5zICdqc31cclxuICAgOm5vZGVcclxuICAgezpuYW1lXHJcbiAgICAoc3ltYm9sXHJcbiAgICAgKHN0ciBjdXJyZW50LW5zKVxyXG4gICAgIChtdW5nZS1ub2RlLWxpYiAocmVzb2x2ZS1ucy1hbGlhcyBlbnYgbnMpKSksXHJcbiAgICA6b3AgOmpzLXZhcixcclxuICAgIDpucyBjdXJyZW50LW5zfVxyXG4gICA6Z2xvYmFsXHJcbiAgIHs6bmFtZVxyXG4gICAgKHN5bWJvbFxyXG4gICAgIChzdHIgY3VycmVudC1ucylcclxuICAgICAobXVuZ2UtZ2xvYmFsLWV4cG9ydCAocmVzb2x2ZS1ucy1hbGlhcyBlbnYgbnMpKSksXHJcbiAgICA6b3AgOmpzLXZhcixcclxuICAgIDpucyBjdXJyZW50LW5zfSkpKVxyXG4ifSB7OnN5bSBhbmFseXplLWxldCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbmNsLWVudiBbXyBiaW5kaW5ncyAmIGV4cHJzIDphcyBmb3JtXSBpcy1sb29wIHdpZGVuZWQtdGFnc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGFuYWx5emUtbGV0XHJcbiBbZW5jbC1lbnYgW18gYmluZGluZ3MgJiBleHBycyA6YXMgZm9ybV0gaXMtbG9vcCB3aWRlbmVkLXRhZ3NdXHJcbiAod2hlbi1ub3RcclxuICAoYW5kICh2ZWN0b3I/IGJpbmRpbmdzKSAoZXZlbj8gKGNvdW50IGJpbmRpbmdzKSkpXHJcbiAgKHRocm93XHJcbiAgIChlcnJvclxyXG4gICAgZW5jbC1lbnZcclxuICAgIFwiYmluZGluZ3MgbXVzdCBiZSB2ZWN0b3Igb2YgZXZlbiBudW1iZXIgb2YgZWxlbWVudHNcIikpKVxyXG4gKGxldFxyXG4gIFtjb250ZXh0XHJcbiAgICg6Y29udGV4dCBlbmNsLWVudilcclxuICAgb3BcclxuICAgKGlmICh0cnVlPyBpcy1sb29wKSA6bG9vcCA6bGV0KVxyXG4gICBiaW5kaW5nc1xyXG4gICAoaWZcclxuICAgIHdpZGVuZWQtdGFnc1xyXG4gICAgKHZlY1xyXG4gICAgIChtYXBjYXRcclxuICAgICAgKGZuXHJcbiAgICAgICBbW25hbWUgaW5pdF0gd2lkZW5lZC10YWddXHJcbiAgICAgICBbKHZhcnktbWV0YSBuYW1lIGFzc29jIDp0YWcgd2lkZW5lZC10YWcpIGluaXRdKVxyXG4gICAgICAocGFydGl0aW9uIDIgYmluZGluZ3MpXHJcbiAgICAgIHdpZGVuZWQtdGFncykpXHJcbiAgICBiaW5kaW5ncylcclxuICAgW2JlcyBlbnZdXHJcbiAgICgtPlxyXG4gICAgZW5jbC1lbnZcclxuICAgIChjb25kLT4gKHRydWU/IGlzLWxvb3ApIChhc3NvYyA6aW4tbG9vcCB0cnVlKSlcclxuICAgIChhbmFseXplLWxldC1iaW5kaW5ncyBiaW5kaW5ncyBvcCkpXHJcbiAgIHJlY3VyLWZyYW1lXHJcbiAgICh3aGVuXHJcbiAgICAodHJ1ZT8gaXMtbG9vcClcclxuICAgIHs6cGFyYW1zIGJlcywgOmZsYWcgKGF0b20gbmlsKSwgOnRhZ3MgKGF0b20gKG1hcHYgOnRhZyBiZXMpKX0pXHJcbiAgIHJlY3VyLWZyYW1lc1xyXG4gICAoaWYgcmVjdXItZnJhbWUgKGNvbnMgcmVjdXItZnJhbWUgKnJlY3VyLWZyYW1lcyopICpyZWN1ci1mcmFtZXMqKVxyXG4gICBsb29wLWxldHNcclxuICAgKGNvbmRcclxuICAgICh0cnVlPyBpcy1sb29wKVxyXG4gICAgKmxvb3AtbGV0cypcclxuICAgIChzb21lPyAqbG9vcC1sZXRzKilcclxuICAgIChjb25zIHs6cGFyYW1zIGJlc30gKmxvb3AtbGV0cyopKVxyXG4gICB3YXJuLWFjY1xyXG4gICAod2hlbiAoYW5kIGlzLWxvb3AgKG5vdCB3aWRlbmVkLXRhZ3MpKSAoYXRvbSBbXSkpXHJcbiAgIGV4cHJcclxuICAgKGlmXHJcbiAgICB3YXJuLWFjY1xyXG4gICAgKHdpdGgtd2FybmluZy1oYW5kbGVyc1xyXG4gICAgIFsoYWNjdW11bGF0aW5nLXdhcm5pbmctaGFuZGxlciB3YXJuLWFjYyldXHJcbiAgICAgKGFuYWx5emUtbGV0LWJvZHkgZW52IGNvbnRleHQgZXhwcnMgcmVjdXItZnJhbWVzIGxvb3AtbGV0cykpXHJcbiAgICAoYW5hbHl6ZS1sZXQtYm9keSBlbnYgY29udGV4dCBleHBycyByZWN1ci1mcmFtZXMgbG9vcC1sZXRzKSlcclxuICAgY2hpbGRyZW5cclxuICAgWzpiaW5kaW5ncyA6Ym9keV1cclxuICAgbmlsLT5hbnlcclxuICAgKGZuaWwgaWRlbnRpdHkgJ2FueSldXHJcbiAgKGlmXHJcbiAgIChhbmRcclxuICAgIGlzLWxvb3BcclxuICAgIChub3Qgd2lkZW5lZC10YWdzKVxyXG4gICAgKG5vdD1cclxuICAgICAobWFwdiBuaWwtPmFueSBAKDp0YWdzIHJlY3VyLWZyYW1lKSlcclxuICAgICAobWFwdiAoY29tcCBuaWwtPmFueSA6dGFnKSBiZXMpKSlcclxuICAgKHJlY3VyIGVuY2wtZW52IGZvcm0gaXMtbG9vcCBAKDp0YWdzIHJlY3VyLWZyYW1lKSlcclxuICAgKGRvXHJcbiAgICAod2hlbiB3YXJuLWFjYyAocmVwbGF5LWFjY3VtdWxhdGVkLXdhcm5pbmdzIHdhcm4tYWNjKSlcclxuICAgIHs6b3Agb3AsXHJcbiAgICAgOmVudiBlbmNsLWVudixcclxuICAgICA6YmluZGluZ3MgYmVzLFxyXG4gICAgIDpib2R5IChhc3NvYyBleHByIDpib2R5PyB0cnVlKSxcclxuICAgICA6Zm9ybSBmb3JtLFxyXG4gICAgIDpjaGlsZHJlbiBjaGlsZHJlbn0pKSkpXHJcbiJ9IHs6c3ltIHZhci1tZXRhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW3Zhcl0gW3ZhciBleHByLWVudl1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIHZhci1tZXRhXHJcbiAoW3Zhcl0gKHZhci1tZXRhIHZhciBuaWwpKVxyXG4gKFt2YXIgZXhwci1lbnZdXHJcbiAgKGxldFxyXG4gICBbc3ltXHJcbiAgICAoOm5hbWUgdmFyKVxyXG4gICAga3NcclxuICAgIFs6bnMgOmRvYyA6ZmlsZSA6bGluZSA6Y29sdW1uXVxyXG4gICAgbVxyXG4gICAgKG1lcmdlXHJcbiAgICAgKGxldFxyXG4gICAgICBbdXNlci1tZXRhICg6bWV0YSB2YXIpIHVrcyAoa2V5cyB1c2VyLW1ldGEpXVxyXG4gICAgICAoemlwbWFwXHJcbiAgICAgICB1a3NcclxuICAgICAgIChtYXBcclxuICAgICAgICAoZm4qIFtwMV9fNDEyMTMjXSAobGlzdCAncXVvdGUgKGdldCB1c2VyLW1ldGEgcDFfXzQxMjEzIykpKVxyXG4gICAgICAgIHVrcykpKVxyXG4gICAgIChhc3NvY1xyXG4gICAgICAoemlwbWFwXHJcbiAgICAgICBrc1xyXG4gICAgICAgKG1hcCAoZm4qIFtwMV9fNDEyMTQjXSAobGlzdCAncXVvdGUgKGdldCB2YXIgcDFfXzQxMjE0IykpKSBrcykpXHJcbiAgICAgIDpuYW1lXHJcbiAgICAgIChjbG9qdXJlLmNvcmUvc2VxdWVuY2VcclxuICAgICAgIChjbG9qdXJlLmNvcmUvc2VxXHJcbiAgICAgICAgKGNsb2p1cmUuY29yZS9jb25jYXRcclxuICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0ICdxdW90ZSlcclxuICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0IChzeW1ib2wgKG5hbWUgKDpuYW1lIHZhcikpKSkpKSlcclxuICAgICAgOnRlc3RcclxuICAgICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxyXG4gICAgICAgKGNsb2p1cmUuY29yZS9zZXFcclxuICAgICAgICAoY2xvanVyZS5jb3JlL2NvbmNhdFxyXG4gICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgJ2Nsb2p1cmUuY29yZS93aGVuKVxyXG4gICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3Qgc3ltKVxyXG4gICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3RcclxuICAgICAgICAgIChjbG9qdXJlLmNvcmUvc2VxdWVuY2VcclxuICAgICAgICAgICAoY2xvanVyZS5jb3JlL3NlcVxyXG4gICAgICAgICAgICAoY2xvanVyZS5jb3JlL2NvbmNhdFxyXG4gICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0ICcuLWNsanMkbGFuZyR0ZXN0KVxyXG4gICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0IHN5bSkpKSkpKSkpXHJcbiAgICAgIDphcmdsaXN0c1xyXG4gICAgICAobGV0XHJcbiAgICAgICBbYXJnbGlzdHNcclxuICAgICAgICAoOmFyZ2xpc3RzIHZhcilcclxuICAgICAgICBhcmdsaXN0cydcclxuICAgICAgICAoaWYgKD0gJ3F1b3RlIChmaXJzdCBhcmdsaXN0cykpIChzZWNvbmQgYXJnbGlzdHMpIGFyZ2xpc3RzKV1cclxuICAgICAgIChsaXN0XHJcbiAgICAgICAgJ3F1b3RlXHJcbiAgICAgICAgKGRvYWxsIChtYXAgd2l0aC1tZXRhIGFyZ2xpc3RzJyAoOmFyZ2xpc3RzLW1ldGEgdmFyKSkpKSkpKV1cclxuICAgKGlmIGV4cHItZW52IChhbmFseXplIGV4cHItZW52IG0pIG0pKSkpXHJcbiJ9IHs6c3ltIGRlc3VnYXItbnMtc3BlY3MsIDptZXRhIHs6ZG9jICJHaXZlbiBhbiBvcmlnaW5hbCBzZXQgb2YgbnMgc3BlY3MgZGVzdWdhciA6aW5jbHVkZS1tYWNyb3MgYW5kIDpyZWZlci1tYWNyb3NcbiAgIHVzYWdlIGludG8gb25seSBwcmltaXRpdmUgc3BlYyBmb3JtcyAtIDp1c2UsIDpyZXF1aXJlLCA6dXNlLW1hY3JvcyxcbiAgIDpyZXF1aXJlLW1hY3Jvcy4gSWYgYSBsaWJyYXJ5IGluY2x1ZGVzIGEgbWFjcm8gZmlsZSBvZiB3aXRoIHRoZSBzYW1lIG5hbWVcbiAgIGFzIHRoZSBuYW1lc3BhY2Ugd2lsbCBhbHNvIGJlIGRlc3VnYXJlZC4iLCA6YXJnbGlzdHMgKFthcmdzXSl9LCA6c291cmNlICIoZGVmblxyXG4gZGVzdWdhci1ucy1zcGVjc1xyXG4gXCJHaXZlbiBhbiBvcmlnaW5hbCBzZXQgb2YgbnMgc3BlY3MgZGVzdWdhciA6aW5jbHVkZS1tYWNyb3MgYW5kIDpyZWZlci1tYWNyb3NcXG4gICB1c2FnZSBpbnRvIG9ubHkgcHJpbWl0aXZlIHNwZWMgZm9ybXMgLSA6dXNlLCA6cmVxdWlyZSwgOnVzZS1tYWNyb3MsXFxuICAgOnJlcXVpcmUtbWFjcm9zLiBJZiBhIGxpYnJhcnkgaW5jbHVkZXMgYSBtYWNybyBmaWxlIG9mIHdpdGggdGhlIHNhbWUgbmFtZVxcbiAgIGFzIHRoZSBuYW1lc3BhY2Ugd2lsbCBhbHNvIGJlIGRlc3VnYXJlZC5cIlxyXG4gW2FyZ3NdXHJcbiAobGV0XHJcbiAgW3s6a2V5cyBbcmVxdWlyZV0sIDphcyBpbmRleGVkfVxyXG4gICAoLT4+IGFyZ3MgKG1hcCAoZm4gW1trICYgc3BlY3NdXSBbayAoaW50byBbXSBzcGVjcyldKSkgKGludG8ge30pKVxyXG4gICBzdWdhci1rZXlzXHJcbiAgICN7OmluY2x1ZGUtbWFjcm9zIDpyZWZlci1tYWNyb3N9XHJcbiAgIHJlbW92ZS1mcm9tLXNwZWNcclxuICAgKGZuXHJcbiAgICBbcHJlZCBzcGVjXVxyXG4gICAgKGlmLW5vdFxyXG4gICAgIChhbmQgKHNlcXVlbnRpYWw/IHNwZWMpIChzb21lIHByZWQgc3BlYykpXHJcbiAgICAgc3BlY1xyXG4gICAgIChsZXRcclxuICAgICAgW1tsIHJdIChzcGxpdC13aXRoIChjb21wbGVtZW50IHByZWQpIHNwZWMpXVxyXG4gICAgICAocmVjdXIgcHJlZCAoY29uY2F0IGwgKGRyb3AgMiByKSkpKSkpXHJcbiAgIHJlcGxhY2UtcmVmZXItbWFjcm9zXHJcbiAgIChmblxyXG4gICAgW3NwZWNdXHJcbiAgICAoaWYtbm90XHJcbiAgICAgKHNlcXVlbnRpYWw/IHNwZWMpXHJcbiAgICAgc3BlY1xyXG4gICAgIChtYXAgKGZuIFt4XSAoaWYgKD0geCA6cmVmZXItbWFjcm9zKSA6cmVmZXIgeCkpIHNwZWMpKSlcclxuICAgcmVsb2FkLXNwZWM/XHJcbiAgIChmbiogW3AxX180MTIzOCNdICgjezpyZWxvYWQgOnJlbG9hZC1hbGx9IHAxX180MTIzOCMpKVxyXG4gICB0by1tYWNyby1zcGVjc1xyXG4gICAoZm5cclxuICAgIFtzcGVjc11cclxuICAgICgtPj5cclxuICAgICBzcGVjc1xyXG4gICAgIChmaWx0ZXJcclxuICAgICAgKGZuXHJcbiAgICAgICBbeF1cclxuICAgICAgIChvclxyXG4gICAgICAgIChhbmQgKHNlcXVlbnRpYWw/IHgpIChzb21lIHN1Z2FyLWtleXMgeCkpXHJcbiAgICAgICAgKHJlbG9hZC1zcGVjPyB4KVxyXG4gICAgICAgIChtYWNyby1hdXRvbG9hZC1ucz8geCkpKSlcclxuICAgICAobWFwXHJcbiAgICAgIChmblxyXG4gICAgICAgW3hdXHJcbiAgICAgICAoaWYtbm90XHJcbiAgICAgICAgKHJlbG9hZC1zcGVjPyB4KVxyXG4gICAgICAgICgtPj5cclxuICAgICAgICAgeFxyXG4gICAgICAgICAocmVtb3ZlLWZyb20tc3BlYyAjezppbmNsdWRlLW1hY3Jvc30pXHJcbiAgICAgICAgIChyZW1vdmUtZnJvbS1zcGVjICN7OnJlZmVyfSlcclxuICAgICAgICAgKHJlbW92ZS1mcm9tLXNwZWMgI3s6cmVuYW1lfSlcclxuICAgICAgICAgKHJlcGxhY2UtcmVmZXItbWFjcm9zKSlcclxuICAgICAgICB4KSkpKSlcclxuICAgcmVtb3ZlLXN1Z2FyXHJcbiAgIChwYXJ0aWFsIHJlbW92ZS1mcm9tLXNwZWMgc3VnYXIta2V5cyldXHJcbiAgKGlmLXNvbWVcclxuICAgW3JlcXVpcmUtc3BlY3MgKHNlcSAodG8tbWFjcm8tc3BlY3MgcmVxdWlyZSkpXVxyXG4gICAobWFwXHJcbiAgICAoZm5cclxuICAgICBbeF1cclxuICAgICAoaWYtbm90XHJcbiAgICAgIChyZWxvYWQtc3BlYz8geClcclxuICAgICAgKGxldCBbW2sgdl0geF0gKGNvbnMgayAobWFwIHJlbW92ZS1zdWdhciB2KSkpXHJcbiAgICAgIHgpKVxyXG4gICAgKHVwZGF0ZS1pbiBpbmRleGVkIFs6cmVxdWlyZS1tYWNyb3NdIChmbmlsIGludG8gW10pIHJlcXVpcmUtc3BlY3MpKVxyXG4gICBhcmdzKSkpXHJcbiJ9IHs6c3ltIGpzLXRhZz8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGpzLXRhZz9cclxuIFt4XVxyXG4gKGFuZCAoc3ltYm9sPyB4KSAob3IgKD0gJ2pzIHgpICg9IFwianNcIiAobmFtZXNwYWNlIHgpKSkpKVxyXG4ifSB7OnN5bSBlbnN1cmUtZGVmcywgOm1ldGEgezpkb2MgIkVuc3VyZXMgdGhhdCBhIG5vbi1uaWwgZGVmcyBtYXAgZXhpc3RzIGluIHRoZSBjb21waWxlciBzdGF0ZSBmb3IgYSBnaXZlblxuICBucy4gKEEgbm9uLW5pbCBkZWZzIG1hcCBzaWduaWZpZXMgdGhhdCB0aGUgbmFtZXNwYWNlIGhhcyBiZWVuIGFuYWx5emVkLikiLCA6YXJnbGlzdHMgKFtuc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGVuc3VyZS1kZWZzXHJcbiBcIkVuc3VyZXMgdGhhdCBhIG5vbi1uaWwgZGVmcyBtYXAgZXhpc3RzIGluIHRoZSBjb21waWxlciBzdGF0ZSBmb3IgYSBnaXZlblxcbiAgbnMuIChBIG5vbi1uaWwgZGVmcyBtYXAgc2lnbmlmaWVzIHRoYXQgdGhlIG5hbWVzcGFjZSBoYXMgYmVlbiBhbmFseXplZC4pXCJcclxuIFtuc11cclxuIChzd2FwIVxyXG4gIGVudi8qY29tcGlsZXIqXHJcbiAgdXBkYXRlLWluXHJcbiAgWzpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXMgbnMgOmRlZnNdXHJcbiAgKGZuKiBbcDFfXzQxMjYzI10gKG9yIHAxX180MTI2MyMge30pKSkpXHJcbiJ9IHs6c3ltIGFuYWx5emUtbWFwLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBmb3JtXSl9LCA6c291cmNlICIoZGVmblxyXG4gYW5hbHl6ZS1tYXBcclxuIFtlbnYgZm9ybV1cclxuIChsZXRcclxuICBbZXhwci1lbnZcclxuICAgKGFzc29jIGVudiA6Y29udGV4dCA6ZXhwcilcclxuICAga3NcclxuICAgKGRpc2FsbG93aW5nLXJlY3VyXHJcbiAgICAobWFwdlxyXG4gICAgIChmbiogW3AxX180MTI1MiNdIChhbmFseXplIGV4cHItZW52IHAxX180MTI1MiMpKVxyXG4gICAgIChrZXlzIGZvcm0pKSlcclxuICAgdnNcclxuICAgKGRpc2FsbG93aW5nLXJlY3VyXHJcbiAgICAobWFwdlxyXG4gICAgIChmbiogW3AxX180MTI1MyNdIChhbmFseXplIGV4cHItZW52IHAxX180MTI1MyMpKVxyXG4gICAgICh2YWxzIGZvcm0pKSldXHJcbiAgKGFuYWx5emUtd3JhcC1tZXRhXHJcbiAgIHs6b3AgOm1hcCxcclxuICAgIDplbnYgZW52LFxyXG4gICAgOmZvcm0gZm9ybSxcclxuICAgIDprZXlzIGtzLFxyXG4gICAgOnZhbHMgdnMsXHJcbiAgICA6Y2hpbGRyZW4gWzprZXlzIDp2YWxzXSxcclxuICAgIDp0YWcgJ2NsanMuY29yZS9JTWFwfSkpKVxyXG4ifSB7OnN5bSBOVU1FUklDX1NFVCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgTlVNRVJJQ19TRVQgJyN7YW55IGxvbmcgZG91YmxlIG51bWJlcn0pXHJcbiJ9IHs6c3ltIGFuYWx5emUtcmVjb3JkLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiB4XSl9LCA6c291cmNlICIoZGVmblxyXG4gYW5hbHl6ZS1yZWNvcmRcclxuIFtlbnYgeF1cclxuIChsZXRcclxuICBbX2l0ZW1zX1xyXG4gICAoZGlzYWxsb3dpbmctcmVjdXIgKGFuYWx5emUgKGFzc29jIGVudiA6Y29udGV4dCA6ZXhwcikgKGludG8ge30geCkpKVxyXG4gICBbbnMgbmFtZV1cclxuICAgKHJlY29yZC1ucytuYW1lIHgpXVxyXG4gIHs6b3AgOmNvbnN0LFxyXG4gICA6dmFsIHgsXHJcbiAgIDplbnYgZW52LFxyXG4gICA6Zm9ybSB4LFxyXG4gICA6dGFnIChzeW1ib2wgKHN0ciBucykgKHN0ciBuYW1lKSl9KSlcclxuIn0gezpzeW0gYW5hbHl6ZS1zZXEqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW29wIGVudiBmb3JtIG5hbWUgb3B0c10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGFuYWx5emUtc2VxKlxyXG4gW29wIGVudiBmb3JtIG5hbWUgb3B0c11cclxuIChpZlxyXG4gIChjb250YWlucz8gc3BlY2lhbHMgb3ApXHJcbiAgKHBhcnNlIG9wIGVudiBmb3JtIG5hbWUgb3B0cylcclxuICAocGFyc2UtaW52b2tlIGVudiBmb3JtKSkpXHJcbiJ9IHs6c3ltIGNvbnN0YW50cy1ucy1zeW0sIDptZXRhIHt9LCA6c291cmNlICIoZGVmXHJcbiBjb25zdGFudHMtbnMtc3ltXHJcbiBcIlRoZSBuYW1lc3BhY2Ugb2YgdGhlIGNvbnN0YW50cyB0YWJsZSBhcyBhIHN5bWJvbC5cIlxyXG4gJ2NsanMuY29yZS5jb25zdGFudHMpXHJcbiJ9IHs6c3ltIHJlc29sdmUtYWxpYXMsIDptZXRhIHs6ZG9jICJUYWtlcyBhIG5hbWVzcGFjZSBhbmQgYW4gdW5xdWFsaWZpZWQgc3ltYm9sIGFuZCBwb3RlbnRpYWxseSByZXR1cm5zIGEgbmV3XG4gIHN5bWJvbCB0byBiZSB1c2VkIGluIGxpZXUgb2YgdGhlIG9yaWdpbmFsLiIsIDphcmdsaXN0cyAoW25zIHN5bV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlc29sdmUtYWxpYXNcclxuIFwiVGFrZXMgYSBuYW1lc3BhY2UgYW5kIGFuIHVucXVhbGlmaWVkIHN5bWJvbCBhbmQgcG90ZW50aWFsbHkgcmV0dXJucyBhIG5ld1xcbiAgc3ltYm9sIHRvIGJlIHVzZWQgaW4gbGlldSBvZiB0aGUgb3JpZ2luYWwuXCJcclxuIFtucyBzeW1dXHJcbiAoaWZcclxuICAoYW5kICg9ICdjbGpzLmNvcmUgbnMpICgnI3thZ2V0IGFzZXR9IHN5bSkgKGNoZWNrZWQtYXJyYXlzKSlcclxuICAoZ2V0LWluXHJcbiAgICd7Ondhcm4ge2FnZXQgY2hlY2tlZC1hZ2V0LCBhc2V0IGNoZWNrZWQtYXNldH0sXHJcbiAgICAgOmVycm9yIHthZ2V0IGNoZWNrZWQtYWdldCcsIGFzZXQgY2hlY2tlZC1hc2V0J319XHJcbiAgIFsoY2hlY2tlZC1hcnJheXMpIHN5bV0pXHJcbiAgc3ltKSlcclxuIn0gezpzeW0gKmNsanMtZGVwLXNldCosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpjbGpzLWRlcC1zZXQqICh3aXRoLW1ldGEgI3t9IHs6ZGVwLXBhdGggW119KSlcclxuIn0gezpzeW0gcmVzb2x2ZS12YXIsIDptZXRhIHs6ZG9jICJSZXNvbHZlIGEgdmFyLiBBY2NlcHRzIGEgc2lkZS1lZmZlY3RpbmcgY29uZmlybSBmbiBmb3IgcHJvZHVjaW5nXG4gICB3YXJuaW5ncyBhYm91dCB1bnJlc29sdmVkIHZhcnMuIiwgOmFyZ2xpc3RzIFtbZW52IHN5bV0gW2VudiBzeW0gY29uZmlybV0gW2VudiBzeW0gY29uZmlybSBkZWZhdWx0P11dfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlc29sdmUtdmFyXHJcbiBcIlJlc29sdmUgYSB2YXIuIEFjY2VwdHMgYSBzaWRlLWVmZmVjdGluZyBjb25maXJtIGZuIGZvciBwcm9kdWNpbmdcXG4gICB3YXJuaW5ncyBhYm91dCB1bnJlc29sdmVkIHZhcnMuXCJcclxuIChbZW52IHN5bV0gKHJlc29sdmUtdmFyIGVudiBzeW0gbmlsKSlcclxuIChbZW52IHN5bSBjb25maXJtXSAocmVzb2x2ZS12YXIgZW52IHN5bSBjb25maXJtIHRydWUpKVxyXG4gKFtlbnYgc3ltIGNvbmZpcm0gZGVmYXVsdD9dXHJcbiAgKGxldFxyXG4gICBbbG9jYWxzICg6bG9jYWxzIGVudildXHJcbiAgIChpZlxyXG4gICAgIz8oOmNsaiAoPSBcImpzXCIgKG5hbWVzcGFjZSBzeW0pKSA6Y2xqcyAoaWRlbnRpY2FsPyBcImpzXCIgKG5hbWVzcGFjZSBzeW0pKSlcclxuICAgIChsZXRcclxuICAgICBbc3ltblxyXG4gICAgICAoLT4gc3ltIG5hbWUgc3ltYm9sKVxyXG4gICAgICBzaGFkb3dlZC1ieS1sb2NhbFxyXG4gICAgICAoaGFuZGxlLXN5bWJvbC1sb2NhbCBzeW1uIChnZXQgbG9jYWxzIHN5bW4pKV1cclxuICAgICAoY29uZFxyXG4gICAgICAoc29tZT8gc2hhZG93ZWQtYnktbG9jYWwpXHJcbiAgICAgIChkb1xyXG4gICAgICAgKHdhcm5pbmcgOmpzLXNoYWRvd2VkLWJ5LWxvY2FsIGVudiB7Om5hbWUgc3ltfSlcclxuICAgICAgIChhc3NvYyBzaGFkb3dlZC1ieS1sb2NhbCA6b3AgOmxvY2FsKSlcclxuICAgICAgOmVsc2VcclxuICAgICAgKGxldFxyXG4gICAgICAgW3ByZSAoLT4+IChzdHJpbmcvc3BsaXQgKG5hbWUgc3ltKSAjXCJcXC5cIikgKG1hcCBzeW1ib2wpIHZlYyldXHJcbiAgICAgICAod2hlblxyXG4gICAgICAgIChhbmRcclxuICAgICAgICAgKG5vdCAoaGFzLWV4dGVybj8gcHJlKSlcclxuICAgICAgICAgKG5vdCAoLT4gc3ltIG1ldGEgOmNsanMuYW5hbHl6ZXIvbm8tcmVzb2x2ZSkpKVxyXG4gICAgICAgIChzd2FwIVxyXG4gICAgICAgICBlbnYvKmNvbXBpbGVyKlxyXG4gICAgICAgICB1cGRhdGUtaW5cclxuICAgICAgICAgKGludG9cclxuICAgICAgICAgIFs6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzICgtPiBlbnYgOm5zIDpuYW1lKSA6ZXh0ZXJuc11cclxuICAgICAgICAgIHByZSlcclxuICAgICAgICAgbWVyZ2VcclxuICAgICAgICAge30pKVxyXG4gICAgICAgKG1lcmdlXHJcbiAgICAgICAgezpuYW1lIHN5bSxcclxuICAgICAgICAgOm9wIDpqcy12YXIsXHJcbiAgICAgICAgIDpucyAnanMsXHJcbiAgICAgICAgIDp0YWdcclxuICAgICAgICAgKHdpdGgtbWV0YVxyXG4gICAgICAgICAgKG9yIChqcy10YWcgcHJlKSAoOnRhZyAobWV0YSBzeW0pKSAnanMpXHJcbiAgICAgICAgICB7OnByZWZpeCBwcmV9KX1cclxuICAgICAgICAod2hlbi1sZXRcclxuICAgICAgICAgW3JldC10YWcgKGpzLXRhZyBwcmUgOnJldC10YWcpXVxyXG4gICAgICAgICB7OmpzLWZuLXZhciB0cnVlLCA6cmV0LXRhZyByZXQtdGFnfSkpKSkpXHJcbiAgICAobGV0XHJcbiAgICAgW3NcclxuICAgICAgKHN0ciBzeW0pXHJcbiAgICAgIGxiXHJcbiAgICAgIChoYW5kbGUtc3ltYm9sLWxvY2FsIHN5bSAoZ2V0IGxvY2FscyBzeW0pKVxyXG4gICAgICBjdXJyZW50LW5zXHJcbiAgICAgICgtPiBlbnYgOm5zIDpuYW1lKV1cclxuICAgICAoY29uZFxyXG4gICAgICAoc29tZT8gbGIpXHJcbiAgICAgIChhc3NvYyBsYiA6b3AgOmxvY2FsKVxyXG4gICAgICAoc29tZT8gKG5hbWVzcGFjZSBzeW0pKVxyXG4gICAgICAobGV0XHJcbiAgICAgICBbbnNcclxuICAgICAgICAobmFtZXNwYWNlIHN5bSlcclxuICAgICAgICBuc1xyXG4gICAgICAgIChpZlxyXG4gICAgICAgICAjPyg6Y2xqICg9IFwiY2xvanVyZS5jb3JlXCIgbnMpIDpjbGpzIChpZGVudGljYWw/IFwiY2xvanVyZS5jb3JlXCIgbnMpKVxyXG4gICAgICAgICBcImNsanMuY29yZVwiXHJcbiAgICAgICAgIG5zKVxyXG4gICAgICAgIGZ1bGwtbnNcclxuICAgICAgICAocmVzb2x2ZS1ucy1hbGlhc1xyXG4gICAgICAgICBlbnZcclxuICAgICAgICAgbnNcclxuICAgICAgICAgKG9yXHJcbiAgICAgICAgICAoYW5kXHJcbiAgICAgICAgICAgKGpzLW1vZHVsZS1leGlzdHM/IG5zKVxyXG4gICAgICAgICAgIChnZXRzIEBlbnYvKmNvbXBpbGVyKiA6anMtbW9kdWxlLWluZGV4IG5zIDpuYW1lKSlcclxuICAgICAgICAgIChzeW1ib2wgbnMpKSldXHJcbiAgICAgICAod2hlblxyXG4gICAgICAgIChzb21lPyBjb25maXJtKVxyXG4gICAgICAgICh3aGVuIChub3Q9IGN1cnJlbnQtbnMgZnVsbC1ucykgKGNvbmZpcm0tbnMgZW52IGZ1bGwtbnMpKVxyXG4gICAgICAgIChjb25maXJtIGVudiBmdWxsLW5zIChzeW1ib2wgKG5hbWUgc3ltKSkpKVxyXG4gICAgICAgKHJlc29sdmUqIGVudiBzeW0gZnVsbC1ucyBjdXJyZW50LW5zKSlcclxuICAgICAgKGRvdHRlZC1zeW1ib2w/IHN5bSlcclxuICAgICAgKGxldFxyXG4gICAgICAgW2lkeFxyXG4gICAgICAgICguaW5kZXhPZiBzIFwiLlwiKVxyXG4gICAgICAgIHByZWZpeFxyXG4gICAgICAgIChzeW1ib2wgKHN1YnMgcyAwIGlkeCkpXHJcbiAgICAgICAgc3VmZml4XHJcbiAgICAgICAgKHN1YnMgcyAoaW5jIGlkeCkpXVxyXG4gICAgICAgKGlmLWxldFxyXG4gICAgICAgIFtyZXNvbHZlZCAocmVzb2x2ZS12YXIgZW52IHByZWZpeCBuaWwgZmFsc2UpXVxyXG4gICAgICAgICh1cGRhdGVcclxuICAgICAgICAgcmVzb2x2ZWRcclxuICAgICAgICAgOm5hbWVcclxuICAgICAgICAgKGZuKiBbcDFfXzQxMjEyI10gKHN5bWJvbCAoc3RyIHAxX180MTIxMiMgXCIuXCIgc3VmZml4KSkpKVxyXG4gICAgICAgIChsZXRcclxuICAgICAgICAgW2lkeFxyXG4gICAgICAgICAgKC5sYXN0SW5kZXhPZiBzIFwiLlwiKVxyXG4gICAgICAgICAgcHJlXHJcbiAgICAgICAgICAoc3VicyBzIDAgaWR4KVxyXG4gICAgICAgICAgc3VmXHJcbiAgICAgICAgICAoc3VicyBzIChpbmMgaWR4KSldXHJcbiAgICAgICAgIHs6b3AgOnZhciwgOm5hbWUgKHN5bWJvbCBwcmUgc3VmKSwgOm5zIChzeW1ib2wgcHJlKX0pKSlcclxuICAgICAgKHNvbWU/XHJcbiAgICAgICAoZ2V0c1xyXG4gICAgICAgIEBlbnYvKmNvbXBpbGVyKlxyXG4gICAgICAgIDpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXNcclxuICAgICAgICBjdXJyZW50LW5zXHJcbiAgICAgICAgOnVzZXNcclxuICAgICAgICBzeW0pKVxyXG4gICAgICAobGV0XHJcbiAgICAgICBbZnVsbC1uc1xyXG4gICAgICAgIChnZXRzXHJcbiAgICAgICAgIEBlbnYvKmNvbXBpbGVyKlxyXG4gICAgICAgICA6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzXHJcbiAgICAgICAgIGN1cnJlbnQtbnNcclxuICAgICAgICAgOnVzZXNcclxuICAgICAgICAgc3ltKV1cclxuICAgICAgIChyZXNvbHZlKiBlbnYgc3ltIGZ1bGwtbnMgY3VycmVudC1ucykpXHJcbiAgICAgIChzb21lP1xyXG4gICAgICAgKGdldHNcclxuICAgICAgICBAZW52Lypjb21waWxlcipcclxuICAgICAgICA6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzXHJcbiAgICAgICAgY3VycmVudC1uc1xyXG4gICAgICAgIDpyZW5hbWVzXHJcbiAgICAgICAgc3ltKSlcclxuICAgICAgKGxldFxyXG4gICAgICAgW3F1YWxpZmllZC1zeW1ib2xcclxuICAgICAgICAoZ2V0c1xyXG4gICAgICAgICBAZW52Lypjb21waWxlcipcclxuICAgICAgICAgOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlc1xyXG4gICAgICAgICBjdXJyZW50LW5zXHJcbiAgICAgICAgIDpyZW5hbWVzXHJcbiAgICAgICAgIHN5bSlcclxuICAgICAgICBmdWxsLW5zXHJcbiAgICAgICAgKHN5bWJvbCAobmFtZXNwYWNlIHF1YWxpZmllZC1zeW1ib2wpKVxyXG4gICAgICAgIHN5bVxyXG4gICAgICAgIChzeW1ib2wgKG5hbWUgcXVhbGlmaWVkLXN5bWJvbCkpXVxyXG4gICAgICAgKHJlc29sdmUqIGVudiBzeW0gZnVsbC1ucyBjdXJyZW50LW5zKSlcclxuICAgICAgKHNvbWU/XHJcbiAgICAgICAoZ2V0c1xyXG4gICAgICAgIEBlbnYvKmNvbXBpbGVyKlxyXG4gICAgICAgIDpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXNcclxuICAgICAgICBjdXJyZW50LW5zXHJcbiAgICAgICAgOmltcG9ydHNcclxuICAgICAgICBzeW0pKVxyXG4gICAgICAocmVjdXJcclxuICAgICAgIGVudlxyXG4gICAgICAgKGdldHNcclxuICAgICAgICBAZW52Lypjb21waWxlcipcclxuICAgICAgICA6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzXHJcbiAgICAgICAgY3VycmVudC1uc1xyXG4gICAgICAgIDppbXBvcnRzXHJcbiAgICAgICAgc3ltKVxyXG4gICAgICAgY29uZmlybVxyXG4gICAgICAgZGVmYXVsdD8pXHJcbiAgICAgIChzb21lP1xyXG4gICAgICAgKGdldHNcclxuICAgICAgICBAZW52Lypjb21waWxlcipcclxuICAgICAgICA6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzXHJcbiAgICAgICAgY3VycmVudC1uc1xyXG4gICAgICAgIDpkZWZzXHJcbiAgICAgICAgc3ltKSlcclxuICAgICAgKGRvXHJcbiAgICAgICAod2hlbiAoc29tZT8gY29uZmlybSkgKGNvbmZpcm0gZW52IGN1cnJlbnQtbnMgc3ltKSlcclxuICAgICAgIChtZXJnZVxyXG4gICAgICAgIChnZXRzXHJcbiAgICAgICAgIEBlbnYvKmNvbXBpbGVyKlxyXG4gICAgICAgICA6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzXHJcbiAgICAgICAgIGN1cnJlbnQtbnNcclxuICAgICAgICAgOmRlZnNcclxuICAgICAgICAgc3ltKVxyXG4gICAgICAgIHs6bmFtZSAoc3ltYm9sIChzdHIgY3VycmVudC1ucykgKHN0ciBzeW0pKSxcclxuICAgICAgICAgOm9wIDp2YXIsXHJcbiAgICAgICAgIDpucyBjdXJyZW50LW5zfSkpXHJcbiAgICAgIChjb3JlLW5hbWU/IGVudiBzeW0pXHJcbiAgICAgIChkb1xyXG4gICAgICAgKHdoZW4gKHNvbWU/IGNvbmZpcm0pIChjb25maXJtIGVudiAnY2xqcy5jb3JlIHN5bSkpXHJcbiAgICAgICAobWVyZ2VcclxuICAgICAgICAoZ2V0c1xyXG4gICAgICAgICBAZW52Lypjb21waWxlcipcclxuICAgICAgICAgOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlc1xyXG4gICAgICAgICAnY2xqcy5jb3JlXHJcbiAgICAgICAgIDpkZWZzXHJcbiAgICAgICAgIHN5bSlcclxuICAgICAgICB7Om5hbWUgKHN5bWJvbCBcImNsanMuY29yZVwiIChzdHIgc3ltKSksXHJcbiAgICAgICAgIDpvcCA6dmFyLFxyXG4gICAgICAgICA6bnMgJ2NsanMuY29yZX0pKVxyXG4gICAgICAoaW52b2tlYWJsZS1ucz8gcyBlbnYpXHJcbiAgICAgIChyZXNvbHZlLWludm9rZWFibGUtbnMgcyBjdXJyZW50LW5zIGVudilcclxuICAgICAgOmVsc2VcclxuICAgICAgKHdoZW5cclxuICAgICAgIGRlZmF1bHQ/XHJcbiAgICAgICAod2hlbiAoc29tZT8gY29uZmlybSkgKGNvbmZpcm0gZW52IGN1cnJlbnQtbnMgc3ltKSlcclxuICAgICAgIChtZXJnZVxyXG4gICAgICAgIChnZXRzXHJcbiAgICAgICAgIEBlbnYvKmNvbXBpbGVyKlxyXG4gICAgICAgICA6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzXHJcbiAgICAgICAgIGN1cnJlbnQtbnNcclxuICAgICAgICAgOmRlZnNcclxuICAgICAgICAgc3ltKVxyXG4gICAgICAgIHs6bmFtZSAoc3ltYm9sIChzdHIgY3VycmVudC1ucykgKHN0ciBzeW0pKSxcclxuICAgICAgICAgOm9wIDp2YXIsXHJcbiAgICAgICAgIDpucyBjdXJyZW50LW5zfSkpKSkpKSkpXHJcbiJ9IHs6c3ltIGpzLXN0YXItc2VnLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBqcy1zdGFyLXNlZ1xyXG4gW3NdXHJcbiAobGV0XHJcbiAgW2lkeCAoLmluZGV4T2YgcyBcIn57XCIpXVxyXG4gIChpZlxyXG4gICAoPT0gLTEgaWR4KVxyXG4gICAobGlzdCBzKVxyXG4gICAobGV0XHJcbiAgICBbZW5kICguaW5kZXhPZiBzIFwifVwiIGlkeCldXHJcbiAgICAobGF6eS1zZXFcclxuICAgICAoY29ucyAoc3VicyBzIDAgaWR4KSAoanMtc3Rhci1zZWcgKHN1YnMgcyAoaW5jIGVuZCkpKSkpKSkpKVxyXG4ifSB7OnN5bSBkZXAtaGFzLWdsb2JhbC1leHBvcnRzPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttb2R1bGVdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBkZXAtaGFzLWdsb2JhbC1leHBvcnRzP1xyXG4gW21vZHVsZV1cclxuIChsZXRcclxuICBbZ2xvYmFsLWV4cG9ydHNcclxuICAgKGdldC1pblxyXG4gICAgQGVudi8qY29tcGlsZXIqXHJcbiAgICBbOmpzLWRlcGVuZGVuY3ktaW5kZXggKHN0ciBtb2R1bGUpIDpnbG9iYWwtZXhwb3J0c10pXVxyXG4gIChvclxyXG4gICAoY29udGFpbnM/IGdsb2JhbC1leHBvcnRzIChzeW1ib2wgbW9kdWxlKSlcclxuICAgKGNvbnRhaW5zPyBnbG9iYWwtZXhwb3J0cyAobmFtZSBtb2R1bGUpKSkpKVxyXG4ifSB7OnN5bSByZWdpc3Rlci1zcGVjcywgOm1ldGEgezpkb2MgIlJlZ2lzdGVycyBzcGVjZWQgdmFycyBmb3VuZCBpbiBhIG5hbWVzcGFjZSBhbmFseXNpcyBjYWNoZS4iLCA6YXJnbGlzdHMgKFtjYWNoZWQtbnNdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiByZWdpc3Rlci1zcGVjc1xyXG4gXCJSZWdpc3RlcnMgc3BlY2VkIHZhcnMgZm91bmQgaW4gYSBuYW1lc3BhY2UgYW5hbHlzaXMgY2FjaGUuXCJcclxuIFtjYWNoZWQtbnNdXHJcbiAjPyg6Y2xqICh0cnkgKGxvY2tpbmcgbG9hZC1tdXRleCAoY2xvanVyZS5jb3JlL3JlcXVpcmUgKHF1b3RlIGNsanMuc3BlYy5hbHBoYSkpKSAoY2F0Y2ggVGhyb3dhYmxlIHQpKSlcclxuIChsZXRcclxuICBbezprZXlzIFtyZWdpc3RyeS1yZWYgc3BlY2VkLXZhcnNdfSAoZ2V0LXNwZWMtdmFycyldXHJcbiAgKHdoZW4tbGV0XHJcbiAgIFtyZWdpc3RyeSAoc2VxICg6Y2xqcy5zcGVjL3JlZ2lzdHJ5LXJlZiBjYWNoZWQtbnMpKV1cclxuICAgKHdoZW4gcmVnaXN0cnktcmVmIChzd2FwISBAcmVnaXN0cnktcmVmIGludG8gcmVnaXN0cnkpKSlcclxuICAod2hlbi1sZXRcclxuICAgW3ZhcnMgKHNlcSAoOmNsanMuc3BlYy9zcGVjZWQtdmFycyBjYWNoZWQtbnMpKV1cclxuICAgKHdoZW4gc3BlY2VkLXZhcnMgKHN3YXAhIEBzcGVjZWQtdmFycyBpbnRvIHZhcnMpKSkpKVxyXG4ifSB7OnN5bSBnZXQtZXh0ZXJucywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuIGdldC1leHRlcm5zIFtdICg6Y2xqcy5hbmFseXplci9leHRlcm5zIEBlbnYvKmNvbXBpbGVyKikpXHJcbiJ9IHs6c3ltICpwYXNzZXMqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqcGFzc2VzKiBuaWwpXHJcbiJ9IHs6c3ltIGhhcy1leHRlcm4/KiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1twcmUgZXh0ZXJuc10gW3ByZSBleHRlcm5zIHRvcF1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGhhcy1leHRlcm4/KlxyXG4gKFtwcmUgZXh0ZXJuc11cclxuICAobGV0XHJcbiAgIFtwcmVcclxuICAgIChpZi1zb21lXHJcbiAgICAgW21lIChmaW5kIChnZXQtaW4gZXh0ZXJucyAnW1dpbmRvdyBwcm90b3R5cGVdKSAoZmlyc3QgcHJlKSldXHJcbiAgICAgKGlmLXNvbWVcclxuICAgICAgW3RhZyAoLT4gbWUgZmlyc3QgbWV0YSA6dGFnKV1cclxuICAgICAgKGludG8gW3RhZyAncHJvdG90eXBlXSAobmV4dCBwcmUpKVxyXG4gICAgICBwcmUpXHJcbiAgICAgcHJlKV1cclxuICAgKGhhcy1leHRlcm4/KiBwcmUgZXh0ZXJucyBleHRlcm5zKSkpXHJcbiAoW3ByZSBleHRlcm5zIHRvcF1cclxuICAoY29uZFxyXG4gICAoZW1wdHk/IHByZSlcclxuICAgdHJ1ZVxyXG4gICA6ZWxzZVxyXG4gICAobGV0XHJcbiAgICBbeCAoZmlyc3QgcHJlKSBtZSAoZmluZCBleHRlcm5zIHgpXVxyXG4gICAgKGNvbmRcclxuICAgICAobm90IG1lKVxyXG4gICAgIGZhbHNlXHJcbiAgICAgOmVsc2VcclxuICAgICAobGV0XHJcbiAgICAgIFtbeCcgZXh0ZXJucyddIG1lIHhtZXRhIChtZXRhIHgnKV1cclxuICAgICAgKGlmXHJcbiAgICAgICAoYW5kICg9ICdGdW5jdGlvbiAoOnRhZyB4bWV0YSkpICg6Y3RvciB4bWV0YSkpXHJcbiAgICAgICAob3JcclxuICAgICAgICAoaGFzLWV4dGVybj8qIChpbnRvICdbcHJvdG90eXBlXSAobmV4dCBwcmUpKSBleHRlcm5zJyB0b3ApXHJcbiAgICAgICAgKGhhcy1leHRlcm4/KiAobmV4dCBwcmUpIGV4dGVybnMnIHRvcCkpXHJcbiAgICAgICAocmVjdXIgKG5leHQgcHJlKSBleHRlcm5zJyB0b3ApKSkpKSkpKVxyXG4ifSB7OnN5bSBoYW5kbGUtc3ltYm9sLWxvY2FsLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N5bSBsYl0pfSwgOnNvdXJjZSAiKGRlZm4gaGFuZGxlLXN5bWJvbC1sb2NhbCBbc3ltIGxiXSAoaWYgKHN5bWJvbD8gbGIpIHs6bmFtZSBzeW19IGxiKSlcclxuIn0gezpzeW0gZ2V0LWV4cGFuZGVyLW5zLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBuc3RyXSl9LCA6c291cmNlICIoZGVmblxyXG4gZ2V0LWV4cGFuZGVyLW5zXHJcbiBbZW52IG5zdHJdXHJcbiAobGV0XHJcbiAgW3Jlc1xyXG4gICAob3JcclxuICAgIChyZXNvbHZlLW1hY3JvLW5zLWFsaWFzIGVudiBuc3RyIG5pbClcclxuICAgIChyZXNvbHZlLW5zLWFsaWFzIGVudiBuc3RyIG5pbCkpXHJcbiAgIG5zdHJcclxuICAgKGlmIChzb21lPyByZXMpIChzdHIgcmVzKSBuc3RyKV1cclxuICAoY29uZFxyXG4gICAjP0AoOmNsaiBbKD0gXCJjbG9qdXJlLmNvcmVcIiBuc3RyKSAoZmluZC1ucyAocXVvdGUgY2xqcy5jb3JlKSldIDpjbGpzIFsoaWRlbnRpY2FsPyBcImNsb2p1cmUuY29yZVwiIG5zdHIpIChmaW5kLW1hY3Jvcy1ucyBDTEpTX0NPUkVfTUFDUk9TX1NZTSldKVxyXG4gICAjP0AoOmNsaiBbKD0gXCJjbG9qdXJlLnJlcGxcIiBuc3RyKSAoZmluZC1ucyAocXVvdGUgY2xqcy5yZXBsKSldIDpjbGpzIFsoaWRlbnRpY2FsPyBcImNsb2p1cmUucmVwbFwiIG5zdHIpIChmaW5kLW1hY3Jvcy1ucyAocXVvdGUgY2xqcy5yZXBsKSldKVxyXG4gICAjP0AoOmNsaiBbKC5jb250YWlucyBuc3RyIFwiLlwiKSAoZmluZC1ucyAoc3ltYm9sIG5zdHIpKV0gOmNsanMgWyhnb29nLnN0cmluZy9jb250YWlucyBuc3RyIFwiLlwiKSAoZmluZC1tYWNyb3MtbnMgKHN5bWJvbCBuc3RyKSldKVxyXG4gICA6ZWxzZVxyXG4gICAoc29tZS0+XHJcbiAgICBlbnZcclxuICAgIDpuc1xyXG4gICAgOnJlcXVpcmUtbWFjcm9zXHJcbiAgICAoZ2V0IChzeW1ib2wgbnN0cikpXHJcbiAgICAjPyg6Y2xqIGZpbmQtbnMgOmNsanMgZmluZC1tYWNyb3MtbnMpKSkpKVxyXG4ifSB7OnN5bSBtZXNzYWdlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBzXSl9LCA6c291cmNlICIoZGVmblxyXG4gbWVzc2FnZVxyXG4gW2VudiBzXVxyXG4gKHN0clxyXG4gIHNcclxuICAoaWZcclxuICAgKDpsaW5lIGVudilcclxuICAgKHN0ciBcIiBhdCBsaW5lIFwiICg6bGluZSBlbnYpIFwiIFwiICpjbGpzLWZpbGUqKVxyXG4gICAod2hlbiAqY2xqcy1maWxlKiAoc3RyIFwiIGluIGZpbGUgXCIgKmNsanMtZmlsZSopKSkpKVxyXG4ifSB7OnN5bSBwYXJzZS1pbnZva2UsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IGZvcm1dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBwYXJzZS1pbnZva2VcclxuIFtlbnYgZm9ybV1cclxuIChkaXNhbGxvd2luZy1yZWN1ciAocGFyc2UtaW52b2tlKiBlbnYgZm9ybSkpKVxyXG4ifSB7OnN5bSAqY2xqcy13YXJuaW5nLWhhbmRsZXJzKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmNsanMtd2FybmluZy1oYW5kbGVycyogW2RlZmF1bHQtd2FybmluZy1oYW5kbGVyXSlcclxuIn0gezpzeW0gYW5hbHl6ZS1zZXEqLXdyYXAsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbb3AgZW52IGZvcm0gbmFtZSBvcHRzXSl9LCA6c291cmNlICIoZGVmblxyXG4gYW5hbHl6ZS1zZXEqLXdyYXBcclxuIFtvcCBlbnYgZm9ybSBuYW1lIG9wdHNdXHJcbiAod3JhcHBpbmctZXJyb3JzIGVudiAoYW5hbHl6ZS1zZXEqIG9wIGVudiBmb3JtIG5hbWUgb3B0cykpKVxyXG4ifSB7OnN5bSBjb25maXJtLWJpbmRpbmdzLCA6bWV0YSB7OmRvYyAiR2l2ZW4gZW52LCBhbiBhbmFseXNpcyBlbnZpcm9ubWVudCBlbnYsIGFuZCBuYW1lcywgYSBsaXN0IG9mIHN5bWJvbHMsIGNvbmZpcm1cbiAgIHRoYXQgYWxsIGNvcnJlc3BvbmQgdG8gZGVjbGFyZWQgZHluYW1pYyB2YXJzLiIsIDphcmdsaXN0cyAoW2VudiBuYW1lc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGNvbmZpcm0tYmluZGluZ3NcclxuIFwiR2l2ZW4gZW52LCBhbiBhbmFseXNpcyBlbnZpcm9ubWVudCBlbnYsIGFuZCBuYW1lcywgYSBsaXN0IG9mIHN5bWJvbHMsIGNvbmZpcm1cXG4gICB0aGF0IGFsbCBjb3JyZXNwb25kIHRvIGRlY2xhcmVkIGR5bmFtaWMgdmFycy5cIlxyXG4gW2VudiBuYW1lc11cclxuIChkb3NlcVxyXG4gIFtuYW1lIG5hbWVzXVxyXG4gIChsZXRcclxuICAgW2VudlxyXG4gICAgKGFzc29jIGVudiA6bnMgKGdldC1uYW1lc3BhY2UgKmNsanMtbnMqKSlcclxuICAgIGV2XHJcbiAgICAocmVzb2x2ZS1leGlzdGluZy12YXIgZW52IG5hbWUpXVxyXG4gICAod2hlblxyXG4gICAgKGFuZCBldiAobm90ICgtPiBldiA6ZHluYW1pYykpKVxyXG4gICAgKHdhcm5pbmcgOmR5bmFtaWMgZW52IHs6ZXYgZXYsIDpuYW1lICg6bmFtZSBldil9KSkpKSlcclxuIn0gezpzeW0gaGFzLWV4dGVybj8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbcHJlXSBbcHJlIGV4dGVybnNdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBoYXMtZXh0ZXJuP1xyXG4gKFtwcmVdIChoYXMtZXh0ZXJuPyBwcmUgKGdldC1leHRlcm5zKSkpXHJcbiAoW3ByZSBleHRlcm5zXVxyXG4gIChvclxyXG4gICAoaGFzLWV4dGVybj8qIHByZSBleHRlcm5zKVxyXG4gICAod2hlblxyXG4gICAgKD0gMSAoY291bnQgcHJlKSlcclxuICAgIChsZXRcclxuICAgICBbeCAoZmlyc3QgcHJlKV1cclxuICAgICAob3JcclxuICAgICAgKGdldC1pbiBleHRlcm5zIChjb25qICdbV2luZG93IHByb3RvdHlwZV0geCkpXHJcbiAgICAgIChnZXQtaW4gZXh0ZXJucyAoY29uaiAnW051bWJlcl0geCkpKSkpXHJcbiAgICgtPiAobGFzdCBwcmUpIHN0ciAoc3RyaW5nL3N0YXJ0cy13aXRoPyBcImNsanMkXCIpKSkpKVxyXG4ifSB7OnN5bSBmb3JlaWduLWRlcD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZGVwXSl9LCA6c291cmNlICIoZGVmblxyXG4gZm9yZWlnbi1kZXA/XHJcbiAjPyg6Y2xqcyB7OnRhZyBib29sZWFufSlcclxuIFtkZXBdXHJcbiAobGV0XHJcbiAgW2pzLWluZGV4ICg6anMtZGVwZW5kZW5jeS1pbmRleCBAZW52Lypjb21waWxlciopXVxyXG4gIChpZi1zb21lXHJcbiAgIFtbXyB7OmtleXMgW2ZvcmVpZ25dfV0gKGZpbmQganMtaW5kZXggKG5hbWUgZGVwKSldXHJcbiAgIGZvcmVpZ25cclxuICAgZmFsc2UpKSlcclxuIn0gezpzeW0gbWlzc2luZy1yZW5hbWUtbWFjcm8/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N5bV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIG1pc3NpbmctcmVuYW1lLW1hY3JvP1xyXG4gW3N5bV1cclxuIChsZXRcclxuICBbbGliXHJcbiAgIChzeW1ib2wgKG5hbWVzcGFjZSBzeW0pKVxyXG4gICBzeW1cclxuICAgKHN5bWJvbCAobmFtZSBzeW0pKVxyXG4gICB0aGUtbnNcclxuICAgIz8oOmNsaiAoZmluZC1ucyBsaWIpIDpjbGpzIChmaW5kLW1hY3Jvcy1ucyBsaWIpKV1cclxuICAob3IgKG5pbD8gdGhlLW5zKSAobmlsPyAoLmZpbmRJbnRlcm5lZFZhciB0aGUtbnMgc3ltKSkpKSlcclxuIn0gezpzeW0gbWlzc2luZy11c2VzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3VzZXMgZW52XSl9LCA6c291cmNlICIoZGVmblxyXG4gbWlzc2luZy11c2VzXHJcbiBbdXNlcyBlbnZdXHJcbiAobGV0XHJcbiAgW2NlbnYgQGVudi8qY29tcGlsZXIqXVxyXG4gIChpbnRvXHJcbiAgIHt9XHJcbiAgIChmaWx0ZXIgKGZuIFtbc3ltIGxpYl1dIChtaXNzaW5nLXVzZT8gbGliIHN5bSBjZW52KSkgdXNlcykpKSlcclxuIn0gezpzeW0gbWlzc2luZy11c2U/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2xpYiBzeW0gY2Vudl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIG1pc3NpbmctdXNlP1xyXG4gW2xpYiBzeW0gY2Vudl1cclxuIChsZXRcclxuICBbanMtbGliIChnZXQtaW4gY2VudiBbOmpzLWRlcGVuZGVuY3ktaW5kZXggKG5hbWUgbGliKV0pXVxyXG4gIChhbmRcclxuICAgKD1cclxuICAgIChnZXQtaW5cclxuICAgICBjZW52XHJcbiAgICAgWzpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXMgbGliIDpkZWZzIHN5bV1cclxuICAgICA6Y2xqcy5hbmFseXplci9ub3QtZm91bmQpXHJcbiAgICA6Y2xqcy5hbmFseXplci9ub3QtZm91bmQpXHJcbiAgIChub3QgKD0gKGdldCBqcy1saWIgOmdyb3VwKSA6Z29vZykpXHJcbiAgIChub3QgKGdldCBqcy1saWIgOmNsb3N1cmUtbGliKSlcclxuICAgKG5vdCAobm9kZS1tb2R1bGUtZGVwPyBsaWIpKVxyXG4gICAobm90IChkZXAtaGFzLWdsb2JhbC1leHBvcnRzPyBsaWIpKSkpKVxyXG4ifSB7OnN5bSBlczUtYWxsb3dlZCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgZXM1LWFsbG93ZWQgI3tcImRlZmF1bHRcIn0pXHJcbiJ9IHs6c3ltIGFuYWx5emUsIDptZXRhIHs6ZG9jICJHaXZlbiBhbiBlbnZpcm9ubWVudCwgYSBtYXAgY29udGFpbmluZyB7OmxvY2FscyAobWFwcGluZyBvZiBuYW1lcyB0byBiaW5kaW5ncyksIDpjb250ZXh0XG4gIChvbmUgb2YgOnN0YXRlbWVudCwgOmV4cHIsIDpyZXR1cm4pLCA6bnMgKGEgc3ltYm9sIG5hbWluZyB0aGVcbiAgY29tcGlsYXRpb24gbnMpfSwgYW5kIGZvcm0sIHJldHVybnMgYW4gZXhwcmVzc2lvbiBvYmplY3QgKGEgbWFwXG4gIGNvbnRhaW5pbmcgYXQgbGVhc3QgOmZvcm0sIDpvcCBhbmQgOmVudiBrZXlzKS4gSWYgZXhwciBoYXMgYW55IChpbW1lZGlhdGVseSlcbiAgbmVzdGVkIGV4cHJzLCBtdXN0IGhhdmUgYSA6Y2hpbGRyZW4gZW50cnkuIFRoaXMgbXVzdCBiZSBhIHZlY3RvciBvZiBrZXl3b3JkcyBuYW1pbmdcbiAgdGhlIGltbWVkaWF0ZWx5IG5lc3RlZCBmaWVsZHMgbWFwcGVkIHRvIGFuIGV4cHIgb3IgdmVjdG9yIG9mIGV4cHJzLiBUaGlzIHdpbGxcbiAgZmFjaWxpdGF0ZSBjb2RlIHdhbGtpbmcgd2l0aG91dCBrbm93aW5nIHRoZSBkZXRhaWxzIG9mIHRoZSBvcCBzZXQuIiwgOmFyZ2xpc3RzIFtbZW52IGZvcm1dIFtlbnYgZm9ybSBuYW1lXSBbZW52IGZvcm0gbmFtZSBvcHRzXV19LCA6c291cmNlICIoZGVmblxyXG4gYW5hbHl6ZVxyXG4gXCJHaXZlbiBhbiBlbnZpcm9ubWVudCwgYSBtYXAgY29udGFpbmluZyB7OmxvY2FscyAobWFwcGluZyBvZiBuYW1lcyB0byBiaW5kaW5ncyksIDpjb250ZXh0XFxuICAob25lIG9mIDpzdGF0ZW1lbnQsIDpleHByLCA6cmV0dXJuKSwgOm5zIChhIHN5bWJvbCBuYW1pbmcgdGhlXFxuICBjb21waWxhdGlvbiBucyl9LCBhbmQgZm9ybSwgcmV0dXJucyBhbiBleHByZXNzaW9uIG9iamVjdCAoYSBtYXBcXG4gIGNvbnRhaW5pbmcgYXQgbGVhc3QgOmZvcm0sIDpvcCBhbmQgOmVudiBrZXlzKS4gSWYgZXhwciBoYXMgYW55IChpbW1lZGlhdGVseSlcXG4gIG5lc3RlZCBleHBycywgbXVzdCBoYXZlIGEgOmNoaWxkcmVuIGVudHJ5LiBUaGlzIG11c3QgYmUgYSB2ZWN0b3Igb2Yga2V5d29yZHMgbmFtaW5nXFxuICB0aGUgaW1tZWRpYXRlbHkgbmVzdGVkIGZpZWxkcyBtYXBwZWQgdG8gYW4gZXhwciBvciB2ZWN0b3Igb2YgZXhwcnMuIFRoaXMgd2lsbFxcbiAgZmFjaWxpdGF0ZSBjb2RlIHdhbGtpbmcgd2l0aG91dCBrbm93aW5nIHRoZSBkZXRhaWxzIG9mIHRoZSBvcCBzZXQuXCJcclxuIChbZW52IGZvcm1dIChhbmFseXplIGVudiBmb3JtIG5pbCkpXHJcbiAoW2VudiBmb3JtIG5hbWVdXHJcbiAgKGFuYWx5emVcclxuICAgZW52XHJcbiAgIGZvcm1cclxuICAgbmFtZVxyXG4gICAod2hlbiBlbnYvKmNvbXBpbGVyKiAoOm9wdGlvbnMgQGVudi8qY29tcGlsZXIqKSkpKVxyXG4gKFtlbnYgZm9ybSBuYW1lIG9wdHNdXHJcbiAgKHdyYXBwaW5nLWVycm9yc1xyXG4gICBlbnZcclxuICAgKGlmXHJcbiAgICAoYW5hbHl6ZWQ/IGZvcm0pXHJcbiAgICAobm8td2FybiAoYW5hbHl6ZSogZW52IGZvcm0gbmFtZSBvcHRzKSlcclxuICAgIChhbmFseXplKiBlbnYgZm9ybSBuYW1lIG9wdHMpKSkpKVxyXG4ifSB7OnN5bSB1c2VkPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgc3ltXSl9LCA6c291cmNlICIoZGVmblxyXG4gdXNlZD9cclxuICM/KDpjbGpzIHs6dGFnIGJvb2xlYW59KVxyXG4gW2VudiBzeW1dXHJcbiAob3JcclxuICAoc29tZT8gKGdldHMgZW52IDpucyA6dXNlLW1hY3JvcyBzeW0pKVxyXG4gIChzb21lP1xyXG4gICAoZ2V0c1xyXG4gICAgQGVudi8qY29tcGlsZXIqXHJcbiAgICA6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzXHJcbiAgICAoZ2V0cyBlbnYgOm5zIDpuYW1lKVxyXG4gICAgOnVzZS1tYWNyb3NcclxuICAgIHN5bSkpKSlcclxuIn0gezpzeW0gbm9kZS1tb2R1bGUtZGVwPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttb2R1bGVdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBub2RlLW1vZHVsZS1kZXA/XHJcbiAjPyg6Y2xqcyB7OnRhZyBib29sZWFufSlcclxuIFttb2R1bGVdXHJcbiAjPyg6Y2xqIChjb250YWlucz8gKGdldC1pbiAoY2xvanVyZS5jb3JlL2RlcmVmIGVudi8qY29tcGlsZXIqKSBbOm5vZGUtbW9kdWxlLWluZGV4XSkgKHN0ciBtb2R1bGUpKSA6Y2xqcyAodHJ5IChhbmQgKD0gKnRhcmdldCogXCJub2RlanNcIikgKGJvb2xlYW4gKGpzL3JlcXVpcmUucmVzb2x2ZSAoc3RyIG1vZHVsZSkpKSkgKGNhdGNoIDpkZWZhdWx0IF8gZmFsc2UpKSkpXHJcbiJ9IHs6c3ltIHBhcnNlLXR5cGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbb3AgZW52IFtfIHRzeW0gZmllbGRzIHBtYXNrcyBib2R5IDphcyBmb3JtXV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHBhcnNlLXR5cGVcclxuIFtvcCBlbnYgW18gdHN5bSBmaWVsZHMgcG1hc2tzIGJvZHkgOmFzIGZvcm1dXVxyXG4gKGxldFxyXG4gIFt0XHJcbiAgICg6bmFtZSAocmVzb2x2ZS12YXIgKGRpc3NvYyBlbnYgOmxvY2FscykgdHN5bSkpXHJcbiAgIGxvY2Fsc1xyXG4gICAocmVkdWNlXHJcbiAgICAoZm5cclxuICAgICBbbSBmbGRdXHJcbiAgICAgKGFzc29jXHJcbiAgICAgIG1cclxuICAgICAgZmxkXHJcbiAgICAgIHs6bmFtZSBmbGQsXHJcbiAgICAgICA6ZmllbGQgdHJ1ZSxcclxuICAgICAgIDpjb2x1bW4gKGdldC1jb2wgZmxkIGVudiksXHJcbiAgICAgICA6dW5zeW5jaHJvbml6ZWQtbXV0YWJsZSAoLT4gZmxkIG1ldGEgOnVuc3luY2hyb25pemVkLW11dGFibGUpLFxyXG4gICAgICAgOmxpbmUgKGdldC1saW5lIGZsZCBlbnYpLFxyXG4gICAgICAgOnRhZyAoLT4gZmxkIG1ldGEgOnRhZyksXHJcbiAgICAgICA6bXV0YWJsZSAoLT4gZmxkIG1ldGEgOm11dGFibGUpLFxyXG4gICAgICAgOnZvbGF0aWxlLW11dGFibGUgKC0+IGZsZCBtZXRhIDp2b2xhdGlsZS1tdXRhYmxlKSxcclxuICAgICAgIDpzaGFkb3cgKG0gZmxkKSxcclxuICAgICAgIDpsb2NhbCA6ZmllbGR9KSlcclxuICAgIHt9XHJcbiAgICAoaWZcclxuICAgICAoPSA6ZGVmcmVjb3JkIG9wKVxyXG4gICAgIChjb25jYXQgZmllbGRzICdbX19tZXRhIF9fZXh0bWFwIF9faGFzaF0pXHJcbiAgICAgZmllbGRzKSlcclxuICAgcHJvdG9jb2xzXHJcbiAgICgtPiB0c3ltIG1ldGEgOnByb3RvY29scyldXHJcbiAgKHN3YXAhXHJcbiAgIGVudi8qY29tcGlsZXIqXHJcbiAgIHVwZGF0ZS1pblxyXG4gICBbOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyAoLT4gZW52IDpucyA6bmFtZSkgOmRlZnMgdHN5bV1cclxuICAgKGZuXHJcbiAgICBbbV1cclxuICAgIChsZXRcclxuICAgICBbbVxyXG4gICAgICAoYXNzb2NcclxuICAgICAgIChvciBtIHt9KVxyXG4gICAgICAgOm5hbWVcclxuICAgICAgIHRcclxuICAgICAgIDp0YWdcclxuICAgICAgICdmdW5jdGlvblxyXG4gICAgICAgOnR5cGVcclxuICAgICAgIHRydWVcclxuICAgICAgIDpudW0tZmllbGRzXHJcbiAgICAgICAoY291bnQgZmllbGRzKVxyXG4gICAgICAgOnJlY29yZFxyXG4gICAgICAgKD0gOmRlZnJlY29yZCBvcCkpXVxyXG4gICAgIChtZXJnZVxyXG4gICAgICBtXHJcbiAgICAgIChkaXNzb2MgKG1ldGEgdHN5bSkgOnByb3RvY29scylcclxuICAgICAgezpwcm90b2NvbHMgcHJvdG9jb2xzfVxyXG4gICAgICAoc291cmNlLWluZm8gdHN5bSBlbnYpKSkpKVxyXG4gIHs6Y2hpbGRyZW4gWzpib2R5XSxcclxuICAgOnBtYXNrcyBwbWFza3MsXHJcbiAgIDpwcm90b2NvbHMgKGRpc2ogcHJvdG9jb2xzICdjbGpzLmNvcmUvT2JqZWN0KSxcclxuICAgOmZpZWxkcyBmaWVsZHMsXHJcbiAgIDpvcCBvcCxcclxuICAgOmVudiBlbnYsXHJcbiAgIDp0IHQsXHJcbiAgIDpmb3JtIGZvcm0sXHJcbiAgIDp0YWcgJ2Z1bmN0aW9uLFxyXG4gICA6Ym9keSAoYW5hbHl6ZSAoYXNzb2MgZW52IDpsb2NhbHMgbG9jYWxzKSBib2R5KX0pKVxyXG4ifSB7OnN5bSBnZXRzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW20gazAgazFdIFttIGswIGsxIGsyXSBbbSBrMCBrMSBrMiBrM11dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGdldHNcclxuIChbbSBrMCBrMV1cclxuICAobGV0XHJcbiAgIFttIChnZXQgbSBrMCBTRU5USU5FTCldXHJcbiAgICh3aGVuLW5vdCAoaWRlbnRpY2FsPyBtIFNFTlRJTkVMKSAoZ2V0IG0gazEpKSkpXHJcbiAoW20gazAgazEgazJdXHJcbiAgKGxldFxyXG4gICBbbSAoZ2V0IG0gazAgU0VOVElORUwpXVxyXG4gICAod2hlbi1ub3RcclxuICAgIChpZGVudGljYWw/IG0gU0VOVElORUwpXHJcbiAgICAobGV0XHJcbiAgICAgW20gKGdldCBtIGsxIFNFTlRJTkVMKV1cclxuICAgICAod2hlbi1ub3QgKGlkZW50aWNhbD8gbSBTRU5USU5FTCkgKGdldCBtIGsyKSkpKSkpXHJcbiAoW20gazAgazEgazIgazNdXHJcbiAgKGxldFxyXG4gICBbbSAoZ2V0IG0gazAgU0VOVElORUwpXVxyXG4gICAod2hlbi1ub3RcclxuICAgIChpZGVudGljYWw/IG0gU0VOVElORUwpXHJcbiAgICAobGV0XHJcbiAgICAgW20gKGdldCBtIGsxIFNFTlRJTkVMKV1cclxuICAgICAod2hlbi1ub3RcclxuICAgICAgKGlkZW50aWNhbD8gbSBTRU5USU5FTClcclxuICAgICAgKGxldFxyXG4gICAgICAgW20gKGdldCBtIGsyIFNFTlRJTkVMKV1cclxuICAgICAgICh3aGVuLW5vdCAoaWRlbnRpY2FsPyBtIFNFTlRJTkVMKSAoZ2V0IG0gazMpKSkpKSkpKSlcclxuIn0gezpzeW0gY2hlY2stcmVuYW1lLW1hY3Jvcy1pbmZlcnJpbmctbWlzc2luZywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt7OmtleXMgW25hbWUgcmVuYW1lc10sIDphcyBhc3R9IGVudl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGNoZWNrLXJlbmFtZS1tYWNyb3MtaW5mZXJyaW5nLW1pc3NpbmdcclxuIFt7OmtleXMgW25hbWUgcmVuYW1lc10sIDphcyBhc3R9IGVudl1cclxuIChsZXRcclxuICBbbWlzc2luZy1yZW5hbWVzXHJcbiAgICh3aGVuXHJcbiAgICAoYW5kICphbmFseXplLWRlcHMqIChzZXEgcmVuYW1lcykpXHJcbiAgICAobWlzc2luZy1yZW5hbWVzIHJlbmFtZXMgZW52KSlcclxuICAgbWF5YmUtbWFjcm9zXHJcbiAgIChhcHBseSBkaXNzb2MgcmVuYW1lcyAoa2V5cyBtaXNzaW5nLXJlbmFtZXMpKVxyXG4gICBtaXNzaW5nLXJlbmFtZS1tYWNyb3NcclxuICAgKGluZmVycmVkLXJlbmFtZS1tYWNyb3MgbWlzc2luZy1yZW5hbWVzIGVudilcclxuICAgcmVtb3ZlLW1pc3NpbmctcmVuYW1lc1xyXG4gICAoZm4qIFtwMV9fNDEyMzIjXSAoYXBwbHkgZGlzc29jIHAxX180MTIzMiMgKGtleXMgbWlzc2luZy1yZW5hbWVzKSkpXHJcbiAgIGFzdCdcclxuICAgKC0+XHJcbiAgICBhc3RcclxuICAgICh1cGRhdGUtaW5cclxuICAgICBbOnJlbmFtZS1tYWNyb3NdXHJcbiAgICAgKGZuKlxyXG4gICAgICBbcDFfXzQxMjMzI11cclxuICAgICAgKC0+XHJcbiAgICAgICBwMV9fNDEyMzMjXHJcbiAgICAgICAobWVyZ2UgbWlzc2luZy1yZW5hbWUtbWFjcm9zKVxyXG4gICAgICAgKG1lcmdlIChpbmZlcnJlZC1yZW5hbWUtbWFjcm9zIG1heWJlLW1hY3JvcyBlbnYpKSkpKVxyXG4gICAgKHVwZGF0ZS1pbiBbOnJlbmFtZXNdIHJlbW92ZS1taXNzaW5nLXJlbmFtZXMpKV1cclxuICAoc3dhcCFcclxuICAgZW52Lypjb21waWxlcipcclxuICAgKGZuKlxyXG4gICAgW3AxX180MTIzNCNdXHJcbiAgICAoLT5cclxuICAgICBwMV9fNDEyMzQjXHJcbiAgICAgKHVwZGF0ZS1pblxyXG4gICAgICBbOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyBuYW1lIDpyZW5hbWUtbWFjcm9zXVxyXG4gICAgICBtZXJnZVxyXG4gICAgICAoOnJlbmFtZS1tYWNyb3MgYXN0JykpXHJcbiAgICAgKHVwZGF0ZS1pblxyXG4gICAgICBbOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyBuYW1lIDpyZW5hbWVzXVxyXG4gICAgICByZW1vdmUtbWlzc2luZy1yZW5hbWVzKSkpKVxyXG4gIGFzdCcpKVxyXG4ifSB7OnN5bSAqYWxsb3ctbnMqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqYWxsb3ctbnMqIHRydWUpXHJcbiJ9IHs6c3ltIGFuYWx5emUtY29uc3QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IGZvcm1dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBhbmFseXplLWNvbnN0XHJcbiBbZW52IGZvcm1dXHJcbiAobGV0XHJcbiAgW3s6a2V5cyBbdGFnXX0gKGFuYWx5emUgKGFzc29jIGVudiA6cXVvdGVkPyB0cnVlKSBmb3JtKV1cclxuICB7Om9wIDpjb25zdCxcclxuICAgOmVudiBlbnYsXHJcbiAgIDpsaXRlcmFsPyB0cnVlLFxyXG4gICA6dmFsIGZvcm0sXHJcbiAgIDp0YWcgdGFnLFxyXG4gICA6Zm9ybSBmb3JtfSkpXHJcbiJ9IHs6c3ltIGluZmVyLWludm9rZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYge2YgOmZuLCA6a2V5cyBbYXJnc10sIDphcyBlfV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGluZmVyLWludm9rZVxyXG4gW2VudiB7ZiA6Zm4sIDprZXlzIFthcmdzXSwgOmFzIGV9XVxyXG4gKGxldFxyXG4gIFttZSAoYXNzb2MgKGZpbmQtbWF0Y2hpbmctbWV0aG9kIGYgYXJncykgOm9wIDpmbi1tZXRob2QpXVxyXG4gIChpZi1zb21lXHJcbiAgIFtyZXQtdGFnIChpbmZlci10YWcgZW52IG1lKV1cclxuICAgcmV0LXRhZ1xyXG4gICAobGV0XHJcbiAgICBbezprZXlzIFtpbmZvXX0gZl1cclxuICAgIChpZi1zb21lXHJcbiAgICAgW3JldC10YWdcclxuICAgICAgKGlmXHJcbiAgICAgICAob3IgKHRydWU/ICg6Zm4tdmFyIGluZm8pKSAodHJ1ZT8gKDpqcy1mbi12YXIgaW5mbykpKVxyXG4gICAgICAgKDpyZXQtdGFnIGluZm8pXHJcbiAgICAgICAod2hlbiAoPSAnanMgKDpucyBpbmZvKSkgJ2pzKSldXHJcbiAgICAgcmV0LXRhZ1xyXG4gICAgIEFOWV9TWU0pKSkpKVxyXG4ifSB7OnN5bSAqY2xqcy1zdGF0aWMtZm5zKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmNsanMtc3RhdGljLWZucyogZmFsc2UpXHJcbiJ9IHs6c3ltIGFycmF5LXR5cGVzLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxyXG4gYXJyYXktdHlwZXNcclxuICcje2Jvb2xlYW4gZmxvYXRzIGxvbmdzIG9iamVjdHMgYXJyYXkgZG91YmxlcyBjaGFycyBpbnRzIHNob3J0c1xyXG4gICAgYnl0ZXN9KVxyXG4ifSB7OnN5bSAqY2hlY2stYWxpYXMtZHVwZXMqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqY2hlY2stYWxpYXMtZHVwZXMqIHRydWUpXHJcbiJ9IHs6c3ltIG1hY3JvLW5zLW5hbWUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbmFtZV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIG1hY3JvLW5zLW5hbWVcclxuIFtuYW1lXVxyXG4gKGxldFxyXG4gIFtuYW1lLXN0ciAoc3RyIG5hbWUpXVxyXG4gIChpZi1ub3RcclxuICAgIz8oOmNsaiAoLmVuZHNXaXRoIG5hbWUtc3RyIFwiJG1hY3Jvc1wiKSA6Y2xqcyAoZ3N0cmluZy9lbmRzV2l0aCBuYW1lLXN0ciBcIiRtYWNyb3NcIikpXHJcbiAgIChzeW1ib2wgKHN0ciBuYW1lLXN0ciBcIiRtYWNyb3NcIikpXHJcbiAgIG5hbWUpKSlcclxuIn0gezpzeW0gKnJlbG9hZC1tYWNyb3MqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqcmVsb2FkLW1hY3JvcyogZmFsc2UpXHJcbiJ9IHs6c3ltIGNvbXBpbGVyLW9wdGlvbnMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmbiBjb21waWxlci1vcHRpb25zIFtdIChnZXQgQGVudi8qY29tcGlsZXIqIDpvcHRpb25zKSlcclxuIn0gezpzeW0gcmVzb2x2ZS1leGlzdGluZy12YXIsIDptZXRhIHs6ZG9jICJHaXZlbiBlbnYsIGFuIGFuYWx5c2lzIGVudmlyb25tZW50LCBhbmQgc3ltLCBhIHN5bWJvbCwgcmVzb2x2ZSBhbiBleGlzdGluZyB2YXIuXG4gICBFbWl0cyBhIHdhcm5pbmcgaWYgbm8gc3VjaCB2YXIgZXhpc3RzLiIsIDphcmdsaXN0cyAoW2VudiBzeW1dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiByZXNvbHZlLWV4aXN0aW5nLXZhclxyXG4gXCJHaXZlbiBlbnYsIGFuIGFuYWx5c2lzIGVudmlyb25tZW50LCBhbmQgc3ltLCBhIHN5bWJvbCwgcmVzb2x2ZSBhbiBleGlzdGluZyB2YXIuXFxuICAgRW1pdHMgYSB3YXJuaW5nIGlmIG5vIHN1Y2ggdmFyIGV4aXN0cy5cIlxyXG4gW2VudiBzeW1dXHJcbiAoaWYtbm90XHJcbiAgKC0+IHN5bSBtZXRhIDpjbGpzLmFuYWx5emVyL25vLXJlc29sdmUpXHJcbiAgKHJlc29sdmUtdmFyIGVudiBzeW0gY29uZmlybS12YXItZXhpc3RzKVxyXG4gIChyZXNvbHZlLXZhciBlbnYgc3ltKSkpXHJcbiJ9IHs6c3ltIHJlcXVpcmVkPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtucyBlbnZdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiByZXF1aXJlZD9cclxuIFtucyBlbnZdXHJcbiAob3JcclxuICAoY29udGFpbnM/IChzZXQgKHZhbHMgKGdldHMgZW52IDpucyA6cmVxdWlyZXMpKSkgbnMpXHJcbiAgKGNvbnRhaW5zPyAoc2V0ICh2YWxzIChnZXRzIGVudiA6bnMgOnVzZXMpKSkgbnMpKSlcclxuIn0gezpzeW0gbm9kZS1saWtlPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1tdIFtvcHRzXV19LCA6c291cmNlICIoZGVmblxyXG4gbm9kZS1saWtlP1xyXG4gKFtdIChub2RlLWxpa2U/IChjb21waWxlci1vcHRpb25zKSkpXHJcbiAoW29wdHNdIChhbmQgKD0gOm5vZGVqcyAoOnRhcmdldCBvcHRzKSkgKGZhbHNlPyAoOm5vZGVqcy1ydCBvcHRzKSkpKSlcclxuIn0gezpzeW0gTk9UX05BVElWRSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgTk9UX05BVElWRSAnI3tjbGogbm90LW5hdGl2ZX0pXHJcbiJ9IHs6c3ltIElHTk9SRV9TWU0sIDptZXRhIHt9LCA6c291cmNlICIoZGVmIElHTk9SRV9TWU0gJ2lnbm9yZSlcclxuIn0gezpzeW0gcGFyc2UtaW52b2tlKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgW2YgJiBhcmdzIDphcyBmb3JtXV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHBhcnNlLWludm9rZSpcclxuIFtlbnYgW2YgJiBhcmdzIDphcyBmb3JtXV1cclxuIChsZXRcclxuICBbZW52ZVxyXG4gICAoYXNzb2MgZW52IDpjb250ZXh0IDpleHByKVxyXG4gICBmZXhwclxyXG4gICAoYW5hbHl6ZSBlbnZlIGYpXHJcbiAgIGFyZ2NcclxuICAgKGNvdW50IGFyZ3MpXHJcbiAgIGZuLXZhcj9cclxuICAgKG9yICgtPiBmZXhwciA6aW5mbyA6Zm4tdmFyKSAoLT4gZmV4cHIgOmluZm8gOmpzLWZuLXZhcikpXHJcbiAgIGt3P1xyXG4gICAoPSAnY2xqcy5jb3JlL0tleXdvcmQgKDp0YWcgZmV4cHIpKVxyXG4gICBjdXItbnNcclxuICAgKC0+IGVudiA6bnMgOm5hbWUpXHJcbiAgIEhPLWludm9rZT9cclxuICAgKGFuZFxyXG4gICAgKGJvb2xlYW4gKmNsanMtc3RhdGljLWZucyopXHJcbiAgICAobm90IGZuLXZhcj8pXHJcbiAgICAobm90IChqcy10YWc/IGYpKVxyXG4gICAgKG5vdCBrdz8pXHJcbiAgICAobm90IChhbmFseXplZD8gZikpKVxyXG4gICBiaW5kLWYtZXhwcj9cclxuICAgKGFuZCBITy1pbnZva2U/IChub3QgKHN5bWJvbD8gZikpKVxyXG4gICBiaW5kLWFyZ3M/XHJcbiAgIChhbmQgSE8taW52b2tlPyAobm90IChhbGwtdmFsdWVzPyBhcmdzKSkpXVxyXG4gICh3aGVuXHJcbiAgIGZuLXZhcj9cclxuICAgKGxldFxyXG4gICAgW3t2YXJpYWRpYyA6dmFyaWFkaWM/LFxyXG4gICAgICA6a2V5cyBbbWF4LWZpeGVkLWFyaXR5IG1ldGhvZC1wYXJhbXMgbmFtZSBucyBtYWNyb119XHJcbiAgICAgKDppbmZvIGZleHByKV1cclxuICAgICh3aGVuXHJcbiAgICAgKGFuZFxyXG4gICAgICAjPyg6Y2xqcyAobm90IChhbmQgKGdzdHJpbmcvZW5kc1dpdGggKHN0ciBjdXItbnMpIFwiJG1hY3Jvc1wiKSAoc3ltYm9sLWlkZW50aWNhbD8gY3VyLW5zIG5zKSAodHJ1ZT8gbWFjcm8pKSkpXHJcbiAgICAgIChpbnZhbGlkLWFyaXR5PyBhcmdjIG1ldGhvZC1wYXJhbXMgdmFyaWFkaWMgbWF4LWZpeGVkLWFyaXR5KSlcclxuICAgICAod2FybmluZyA6Zm4tYXJpdHkgZW52IHs6bmFtZSBuYW1lLCA6YXJnYyBhcmdjfSkpKSlcclxuICAod2hlblxyXG4gICAoYW5kIGt3PyAobm90IChvciAoPT0gMSBhcmdjKSAoPT0gMiBhcmdjKSkpKVxyXG4gICAod2FybmluZyA6Zm4tYXJpdHkgZW52IHs6bmFtZSAoZmlyc3QgZm9ybSksIDphcmdjIGFyZ2N9KSlcclxuICAobGV0XHJcbiAgIFtkZXByZWNhdGVkP1xyXG4gICAgKC0+IGZleHByIDppbmZvIDpkZXByZWNhdGVkKVxyXG4gICAgbm8td2Fybj9cclxuICAgICgtPiBmb3JtIG1ldGEgOmRlcHJlY2F0aW9uLW5vd2FybildXHJcbiAgICh3aGVuXHJcbiAgICAoYW5kIChib29sZWFuIGRlcHJlY2F0ZWQ/KSAobm90IChib29sZWFuIG5vLXdhcm4/KSkpXHJcbiAgICAod2FybmluZyA6Zm4tZGVwcmVjYXRlZCBlbnYgezpmZXhwciBmZXhwcn0pKSlcclxuICAod2hlblxyXG4gICAoc29tZT8gKC0+IGZleHByIDppbmZvIDp0eXBlKSlcclxuICAgKHdhcm5pbmcgOmludm9rZS1jdG9yIGVudiB7OmZleHByIGZleHByfSkpXHJcbiAgKGlmXHJcbiAgIChvciBiaW5kLWFyZ3M/IGJpbmQtZi1leHByPylcclxuICAgKGxldFxyXG4gICAgW2FyZy1zeW1zXHJcbiAgICAgKHdoZW4gYmluZC1hcmdzPyAodGFrZSBhcmdjIChyZXBlYXRlZGx5IGdlbnN5bSkpKVxyXG4gICAgIGYtc3ltXHJcbiAgICAgKHdoZW4gYmluZC1mLWV4cHI/IChnZW5zeW0gXCJmZXhwcl9fXCIpKVxyXG4gICAgIGJpbmRpbmdzXHJcbiAgICAgKGNvbmQtPlxyXG4gICAgICBbXVxyXG4gICAgICBiaW5kLWFyZ3M/XHJcbiAgICAgIChpbnRvIChpbnRlcmxlYXZlIGFyZy1zeW1zIGFyZ3MpKVxyXG4gICAgICBiaW5kLWYtZXhwcj9cclxuICAgICAgKGNvbmogZi1zeW0gKGFuYWx5emVkIGYpKSlcclxuICAgICB0YWdcclxuICAgICAoOnRhZyAobWV0YSBmb3JtKSldXHJcbiAgICAoYW5hbHl6ZVxyXG4gICAgIGVudlxyXG4gICAgIChjbG9qdXJlLmNvcmUvc2VxdWVuY2VcclxuICAgICAgKGNsb2p1cmUuY29yZS9zZXFcclxuICAgICAgIChjbG9qdXJlLmNvcmUvY29uY2F0XHJcbiAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0ICdjbG9qdXJlLmNvcmUvbGV0KVxyXG4gICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdFxyXG4gICAgICAgICAoY2xvanVyZS5jb3JlL3ZlY1xyXG4gICAgICAgICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxyXG4gICAgICAgICAgIChjbG9qdXJlLmNvcmUvc2VxIChjbG9qdXJlLmNvcmUvY29uY2F0IGJpbmRpbmdzKSkpKSlcclxuICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3RcclxuICAgICAgICAgKHdpdGgtbWV0YVxyXG4gICAgICAgICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxyXG4gICAgICAgICAgIChjbG9qdXJlLmNvcmUvc2VxXHJcbiAgICAgICAgICAgIChjbG9qdXJlLmNvcmUvY29uY2F0XHJcbiAgICAgICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgKGFuYWx5emVkIChpZiBiaW5kLWYtZXhwcj8gZi1zeW0gZikpKVxyXG4gICAgICAgICAgICAgKGlmIGJpbmQtYXJncz8gYXJnLXN5bXMgYXJncykpKSlcclxuICAgICAgICAgIHs6dGFnIHRhZ30pKSkpKSkpXHJcbiAgIChsZXRcclxuICAgIFthbmEtZXhwclxyXG4gICAgIChmbiogW3AxX180MTI1MCNdIChhbmFseXplIGVudmUgcDFfXzQxMjUwIykpXHJcbiAgICAgYXJnZXhwcnNcclxuICAgICAobWFwdiBhbmEtZXhwciBhcmdzKV1cclxuICAgIChpZlxyXG4gICAgIChhbmRcclxuICAgICAgKGFuZCAoa2V5d29yZD8gZikgKG5pbD8gKG5hbWVzcGFjZSBmKSkpXHJcbiAgICAgICg9PSAxIChjb3VudCBhcmdzKSlcclxuICAgICAgKHJlY29yZC13aXRoLWZpZWxkPyAoOnRhZyAoZmlyc3QgYXJnZXhwcnMpKSAoc3ltYm9sIChuYW1lIGYpKSkpXHJcbiAgICAgKGxldFxyXG4gICAgICBbZmllbGQtYWNjZXNzLWZvcm0gKGxpc3QqIChzeW1ib2wgKHN0ciBcIi4tXCIgKG5hbWUgZikpKSBhcmdzKV1cclxuICAgICAgKG5vLXdhcm4gKGFuYWx5emUgZW52IGZpZWxkLWFjY2Vzcy1mb3JtKSkpXHJcbiAgICAgezplbnYgZW52LFxyXG4gICAgICA6b3AgOmludm9rZSxcclxuICAgICAgOmZvcm0gZm9ybSxcclxuICAgICAgOmZuIGZleHByLFxyXG4gICAgICA6YXJncyBhcmdleHBycyxcclxuICAgICAgOmNoaWxkcmVuIFs6Zm4gOmFyZ3NdfSkpKSkpXHJcbiJ9IHs6c3ltICpjaGVja2VkLWFycmF5cyosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpjaGVja2VkLWFycmF5cyogZmFsc2UpXHJcbiJ9IHs6c3ltIGFzdC1jaGlsZHJlbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFthc3RdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBhc3QtY2hpbGRyZW5cclxuIFthc3RdXHJcbiAobWFwY2F0XHJcbiAgKGZuIFtjXSAobGV0IFtnIChnZXQgYXN0IGMpXSAoY29uZCAodmVjdG9yPyBnKSBnIGcgW2ddKSkpXHJcbiAgKDpjaGlsZHJlbiBhc3QpKSlcclxuIn0gezpzeW0gbG9hZGVkLWpzLW5zPywgOm1ldGEgezpkb2MgIkNoZWNrIGlmIGEgSmF2YVNjcmlwdCBuYW1lc3BhY2UgaGFzIGJlZW4gbG9hZGVkLiBKYXZhU2NyaXB0IHZhcnMgYXJlXG4gIG5vdCBjdXJyZW50bHkgY2hlY2tlZC4iLCA6YXJnbGlzdHMgKFtlbnYgcHJlZml4XSl9LCA6c291cmNlICIoZGVmblxyXG4gbG9hZGVkLWpzLW5zP1xyXG4gXCJDaGVjayBpZiBhIEphdmFTY3JpcHQgbmFtZXNwYWNlIGhhcyBiZWVuIGxvYWRlZC4gSmF2YVNjcmlwdCB2YXJzIGFyZVxcbiAgbm90IGN1cnJlbnRseSBjaGVja2VkLlwiXHJcbiAjPyg6Y2xqcyB7OnRhZyBib29sZWFufSlcclxuIFtlbnYgcHJlZml4XVxyXG4gKHdoZW4tbm90XHJcbiAgKGdldHMgQGVudi8qY29tcGlsZXIqIDpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXMgcHJlZml4KVxyXG4gIChsZXRcclxuICAgW25zICg6bnMgZW52KV1cclxuICAgKG9yXHJcbiAgICAoc29tZT8gKGdldCAoOnJlcXVpcmVzIG5zKSBwcmVmaXgpKVxyXG4gICAgKHNvbWU/IChnZXQgKDppbXBvcnRzIG5zKSBwcmVmaXgpKSkpKSlcclxuIn0gezpzeW0gYW5hbHl6ZS12ZWN0b3IsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IGZvcm1dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBhbmFseXplLXZlY3RvclxyXG4gW2VudiBmb3JtXVxyXG4gKGxldFxyXG4gIFtleHByLWVudlxyXG4gICAoYXNzb2MgZW52IDpjb250ZXh0IDpleHByKVxyXG4gICBpdGVtc1xyXG4gICAoZGlzYWxsb3dpbmctcmVjdXJcclxuICAgIChtYXB2IChmbiogW3AxX180MTI1NSNdIChhbmFseXplIGV4cHItZW52IHAxX180MTI1NSMpKSBmb3JtKSldXHJcbiAgKGFuYWx5emUtd3JhcC1tZXRhXHJcbiAgIHs6b3AgOnZlY3RvcixcclxuICAgIDplbnYgZW52LFxyXG4gICAgOmZvcm0gZm9ybSxcclxuICAgIDppdGVtcyBpdGVtcyxcclxuICAgIDpjaGlsZHJlbiBbOml0ZW1zXSxcclxuICAgIDp0YWcgJ2NsanMuY29yZS9JVmVjdG9yfSkpKVxyXG4ifSB7OnN5bSB1bndyYXAtcXVvdGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbezprZXlzIFtvcF0sIDphcyBleHByfV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHVud3JhcC1xdW90ZVxyXG4gW3s6a2V5cyBbb3BdLCA6YXMgZXhwcn1dXHJcbiAoaWZcclxuICAjPyg6Y2xqICg9IG9wIDpxdW90ZSkgOmNsanMgKGtleXdvcmQtaWRlbnRpY2FsPyBvcCA6cXVvdGUpKVxyXG4gICg6ZXhwciBleHByKVxyXG4gIGV4cHIpKVxyXG4ifSB7OnN5bSBuYW1lc3BhY2VzLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxyXG4gbmFtZXNwYWNlc1xyXG4gIz8oOmNsaiAocmVpZnkgY2xvanVyZS5sYW5nLklEZXJlZiAoZGVyZWYgW19dIChpZiAoc29tZT8gZW52Lypjb21waWxlciopICg6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzIChjbG9qdXJlLmNvcmUvZGVyZWYgZW52Lypjb21waWxlciopKSBkZWZhdWx0LW5hbWVzcGFjZXMpKSkgOmNsanMgKHJlaWZ5IElEZXJlZiAoLWRlcmVmIFtfXSAoaWYgKHNvbWU/IGVudi8qY29tcGlsZXIqKSAoOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyAoY2xvanVyZS5jb3JlL2RlcmVmIGVudi8qY29tcGlsZXIqKSkgZGVmYXVsdC1uYW1lc3BhY2VzKSkpKSlcclxuIn0gezpzeW0gZWxpZGUtYW5hbHl6ZXItbWV0YSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttXSl9LCA6c291cmNlICIoZGVmbiBlbGlkZS1hbmFseXplci1tZXRhIFttXSAoZGlzc29jIG0gOmNsanMuYW5hbHl6ZXIvYW5hbHl6ZWQpKVxyXG4ifSB7OnN5bSBhbmFseXplLWxldC1ib2R5LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBjb250ZXh0IGV4cHJzIHJlY3VyLWZyYW1lcyBsb29wLWxldHNdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBhbmFseXplLWxldC1ib2R5XHJcbiBbZW52IGNvbnRleHQgZXhwcnMgcmVjdXItZnJhbWVzIGxvb3AtbGV0c11cclxuIChiaW5kaW5nXHJcbiAgWypyZWN1ci1mcmFtZXMqIHJlY3VyLWZyYW1lcyAqbG9vcC1sZXRzKiBsb29wLWxldHNdXHJcbiAgKGFuYWx5emUtbGV0LWJvZHkqIGVudiBjb250ZXh0IGV4cHJzKSkpXHJcbiJ9IHs6c3ltIGV4dGVybi1wcmUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3ltIGN1cnJlbnQtbnNdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBleHRlcm4tcHJlXHJcbiBbc3ltIGN1cnJlbnQtbnNdXHJcbiAobGV0XHJcbiAgW3ByZVxyXG4gICAoaW50b1xyXG4gICAgJ1tPYmplY3RdXHJcbiAgICAoLT4+IChzdHJpbmcvc3BsaXQgKG5hbWUgc3ltKSAjXCJcXC5cIikgKG1hcCBzeW1ib2wpIHZlYykpXVxyXG4gICh3aGVuLW5vdFxyXG4gICAoaGFzLWV4dGVybj8gcHJlKVxyXG4gICAoc3dhcCFcclxuICAgIGVudi8qY29tcGlsZXIqXHJcbiAgICB1cGRhdGUtaW5cclxuICAgIChpbnRvIFs6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzIGN1cnJlbnQtbnMgOmV4dGVybnNdIHByZSlcclxuICAgIG1lcmdlXHJcbiAgICB7fSkpXHJcbiAgcHJlKSlcclxuIn0gezpzeW0gZ2V0LWNvbCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4IGVudl0pfSwgOnNvdXJjZSAiKGRlZm4gZ2V0LWNvbCBbeCBlbnZdIChvciAoLT4geCBtZXRhIDpjb2x1bW4pICg6Y29sdW1uIGVudikpKVxyXG4ifSB7OnN5bSBiYXNpYy12YWxpZGF0ZS1ucy1zcGVjLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBtYWNyb3M/IHNwZWNdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBiYXNpYy12YWxpZGF0ZS1ucy1zcGVjXHJcbiBbZW52IG1hY3Jvcz8gc3BlY11cclxuICh3aGVuLW5vdFxyXG4gIChvciAoc3ltYm9sPyBzcGVjKSAoc3RyaW5nPyBzcGVjKSAoc2VxdWVudGlhbD8gc3BlYykpXHJcbiAgKHRocm93XHJcbiAgIChlcnJvclxyXG4gICAgZW52XHJcbiAgICAocGFyc2UtbnMtZXJyb3ItbXNnXHJcbiAgICAgc3BlY1xyXG4gICAgIFwiT25seSBbbGliLm5zICYgb3B0aW9uc10gYW5kIGxpYi5ucyBzcGVjcyBzdXBwb3J0ZWQgaW4gOnJlcXVpcmUgLyA6cmVxdWlyZS1tYWNyb3NcIikpKSlcclxuICh3aGVuXHJcbiAgKHNlcXVlbnRpYWw/IHNwZWMpXHJcbiAgKHdoZW4tbm90XHJcbiAgIChvciAoc3ltYm9sPyAoZmlyc3Qgc3BlYykpIChzdHJpbmc/IChmaXJzdCBzcGVjKSkpXHJcbiAgICh0aHJvd1xyXG4gICAgKGVycm9yXHJcbiAgICAgZW52XHJcbiAgICAgKHBhcnNlLW5zLWVycm9yLW1zZ1xyXG4gICAgICBzcGVjXHJcbiAgICAgIFwiTGlicmFyeSBuYW1lIG11c3QgYmUgc3BlY2lmaWVkIGFzIGEgc3ltYm9sIGluIDpyZXF1aXJlIC8gOnJlcXVpcmUtbWFjcm9zXCIpKSkpXHJcbiAgKHdoZW4tbm90XHJcbiAgIChvZGQ/IChjb3VudCBzcGVjKSlcclxuICAgKHRocm93XHJcbiAgICAoZXJyb3JcclxuICAgICBlbnZcclxuICAgICAocGFyc2UtbnMtZXJyb3ItbXNnXHJcbiAgICAgIHNwZWNcclxuICAgICAgXCJPbmx5IDphcyBhbGlhcywgOnJlZmVyIChuYW1lcykgYW5kIDpyZW5hbWUge2Zyb20gdG99IG9wdGlvbnMgc3VwcG9ydGVkIGluIDpyZXF1aXJlXCIpKSkpXHJcbiAgKHdoZW4tbm90XHJcbiAgIChldmVyeT8gI3s6YXMgOnJlbmFtZSA6cmVmZXJ9IChtYXAgZmlyc3QgKHBhcnRpdGlvbiAyIChuZXh0IHNwZWMpKSkpXHJcbiAgICh0aHJvd1xyXG4gICAgKGVycm9yXHJcbiAgICAgZW52XHJcbiAgICAgKHBhcnNlLW5zLWVycm9yLW1zZ1xyXG4gICAgICBzcGVjXHJcbiAgICAgIFwiT25seSA6YXMsIDpyZWZlciBhbmQgOnJlbmFtZSBvcHRpb25zIHN1cHBvcnRlZCBpbiA6cmVxdWlyZSAvIDpyZXF1aXJlLW1hY3Jvc1wiKSkpKVxyXG4gICh3aGVuLW5vdFxyXG4gICAobGV0XHJcbiAgICBbZnMgKGZyZXF1ZW5jaWVzIChuZXh0IHNwZWMpKV1cclxuICAgIChhbmQgKDw9IChmcyA6YXMgMCkgMSkgKDw9IChmcyA6cmVmZXIgMCkgMSkpKVxyXG4gICAodGhyb3dcclxuICAgIChlcnJvclxyXG4gICAgIGVudlxyXG4gICAgIChwYXJzZS1ucy1lcnJvci1tc2dcclxuICAgICAgc3BlY1xyXG4gICAgICBcIkVhY2ggb2YgOmFzIGFuZCA6cmVmZXIgb3B0aW9ucyBtYXkgb25seSBiZSBzcGVjaWZpZWQgb25jZSBpbiA6cmVxdWlyZSAvIDpyZXF1aXJlLW1hY3Jvc1wiKSkpKSkpXHJcbiJ9IHs6c3ltICpjbGpzLXdhcm5pbmdzKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcclxuICpjbGpzLXdhcm5pbmdzKlxyXG4gezppbnZva2UtY3RvciB0cnVlLFxyXG4gIDpleHRlbmRpbmctYmFzZS1qcy10eXBlIHRydWUsXHJcbiAgOnVuc3VwcG9ydGVkLXByZXByb2Nlc3MtdmFsdWUgdHJ1ZSxcclxuICA6cmVkZWYgdHJ1ZSxcclxuICA6anMtc2hhZG93ZWQtYnktbG9jYWwgdHJ1ZSxcclxuICA6dW5zdXBwb3J0ZWQtanMtbW9kdWxlLXR5cGUgdHJ1ZSxcclxuICA6aW52YWxpZC1wcm90b2NvbC1zeW1ib2wgdHJ1ZSxcclxuICA6cHJpdmF0ZS12YXItYWNjZXNzIHRydWUsXHJcbiAgOnByb3RvY29sLWR1cGVkLW1ldGhvZCB0cnVlLFxyXG4gIDptdW5nZWQtbmFtZXNwYWNlIHRydWUsXHJcbiAgOnNpbmdsZS1zZWdtZW50LW5hbWVzcGFjZSB0cnVlLFxyXG4gIDpmbi1hcml0eSB0cnVlLFxyXG4gIDppbmZlci13YXJuaW5nIGZhbHNlLFxyXG4gIDp2YXJpYWRpYy1tYXgtYXJpdHkgdHJ1ZSxcclxuICA6cHJvdG9jb2wtd2l0aC12YXJpYWRpYy1tZXRob2QgdHJ1ZSxcclxuICA6Zm4tZGVwcmVjYXRlZCB0cnVlLFxyXG4gIDp1bmRlY2xhcmVkLXZhciB0cnVlLFxyXG4gIDpkZWNsYXJlZC1hcmdsaXN0cy1taXNtYXRjaCB0cnVlLFxyXG4gIDpwcmVhbWJsZS1taXNzaW5nIHRydWUsXHJcbiAgOnVuZGVjbGFyZWQtcHJvdG9jb2wtc3ltYm9sIHRydWUsXHJcbiAgOnByb3RvY29sLXdpdGgtb3ZlcndyaXRpbmctbWV0aG9kIHRydWUsXHJcbiAgOmR5bmFtaWMgdHJ1ZSxcclxuICA6aW52YWxpZC1hcnJheS1hY2Nlc3MgdHJ1ZSxcclxuICA6dW5wcm92aWRlZCB0cnVlLFxyXG4gIDpucy12YXItY2xhc2ggdHJ1ZSxcclxuICA6dW5kZWNsYXJlZC1ucyB0cnVlLFxyXG4gIDpub24tZHluYW1pYy1lYXJtdWZmZWQtdmFyIHRydWUsXHJcbiAgOnVuZGVjbGFyZWQtbnMtZm9ybSB0cnVlLFxyXG4gIDppbnZhbGlkLWFyaXRobWV0aWMgdHJ1ZSxcclxuICA6cHJvdG9jb2wtZGVwcmVjYXRlZCB0cnVlLFxyXG4gIDpmbi12YXIgdHJ1ZSxcclxuICA6cHJvdG9jb2wtaW1wbC1yZWN1ci13aXRoLXRhcmdldCB0cnVlLFxyXG4gIDpvdmVybG9hZC1hcml0eSB0cnVlLFxyXG4gIDpwcm90b2NvbC1tdWx0aXBsZS1pbXBscyB0cnVlLFxyXG4gIDpyZWRlZi1pbi1maWxlIHRydWUsXHJcbiAgOnByb3RvY29sLWludmFsaWQtbWV0aG9kIHRydWUsXHJcbiAgOmV4dGVuZC10eXBlLWludmFsaWQtbWV0aG9kLXNoYXBlIHRydWUsXHJcbiAgOm11bHRpcGxlLXZhcmlhZGljLW92ZXJsb2FkcyB0cnVlLFxyXG4gIDpwcm90b2NvbC1pbXBsLXdpdGgtdmFyaWFkaWMtbWV0aG9kIHRydWV9KVxyXG4ifSB7OnN5bSBhbGlhcy0+dHlwZSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcclxuIGFsaWFzLT50eXBlXHJcbiAne29iamVjdCBPYmplY3QsXHJcbiAgIHN0cmluZyBTdHJpbmcsXHJcbiAgIG51bWJlciBOdW1iZXIsXHJcbiAgIGFycmF5IEFycmF5LFxyXG4gICBmdW5jdGlvbiBGdW5jdGlvbixcclxuICAgYm9vbGVhbiBCb29sZWFuLFxyXG4gICBzeW1ib2wgU3ltYm9sfSlcclxuIn0gezpzeW0gYW5hbHl6ZWQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBib29sZWFuIGlmIHRoZSBmb3JtIGhhcyBhbHJlYWR5IGJlZW4gbWFya2VkIGFzIGFuYWx5emVkLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBhbmFseXplZD9cclxuIFwiUmV0dXJucyBib29sZWFuIGlmIHRoZSBmb3JtIGhhcyBhbHJlYWR5IGJlZW4gbWFya2VkIGFzIGFuYWx5emVkLlwiXHJcbiAjPyg6Y2xqcyB7OnRhZyBib29sZWFufSlcclxuIFt4XVxyXG4gKGJvb2xlYW5cclxuICAoY29uZFxyXG4gICAodW5zb3J0ZWQtbWFwPyB4KVxyXG4gICAoOmNsanMuYW5hbHl6ZXIvYW5hbHl6ZWQgeClcclxuICAgOmVsc2VcclxuICAgKDpjbGpzLmFuYWx5emVyL2FuYWx5emVkIChtZXRhIHgpKSkpKVxyXG4ifSB7OnN5bSBhbmFseXplLWRlcHMsIDptZXRhIHs6ZG9jICJHaXZlbiBhIGxpYiwgYSBuYW1lc3BhY2UsIGRlcHMsIGl0cyBkZXBlbmRlbmNpZXMsIGVudiwgYW4gYW5hbHlzaXMgZW52aXJvbm1lbnRcbiAgIGFuZCBvcHRzLCBjb21waWxlciBvcHRpb25zIC0gYW5hbHl6ZSBhbGwgb2YgdGhlIGRlcGVuZGVuY2llcy4gUmVxdWlyZWQgdG9cbiAgIGNvcnJlY3RseSBhbmFseXplIHVzYWdlIG9mIG90aGVyIG5hbWVzcGFjZXMuIiwgOmFyZ2xpc3RzIFtbbGliIGRlcHMgZW52XSBbbGliIGRlcHMgZW52IG9wdHNdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBhbmFseXplLWRlcHNcclxuIFwiR2l2ZW4gYSBsaWIsIGEgbmFtZXNwYWNlLCBkZXBzLCBpdHMgZGVwZW5kZW5jaWVzLCBlbnYsIGFuIGFuYWx5c2lzIGVudmlyb25tZW50XFxuICAgYW5kIG9wdHMsIGNvbXBpbGVyIG9wdGlvbnMgLSBhbmFseXplIGFsbCBvZiB0aGUgZGVwZW5kZW5jaWVzLiBSZXF1aXJlZCB0b1xcbiAgIGNvcnJlY3RseSBhbmFseXplIHVzYWdlIG9mIG90aGVyIG5hbWVzcGFjZXMuXCJcclxuIChbbGliIGRlcHMgZW52XVxyXG4gIChhbmFseXplLWRlcHNcclxuICAgbGliXHJcbiAgIGRlcHNcclxuICAgZW52XHJcbiAgICh3aGVuIGVudi8qY29tcGlsZXIqICg6b3B0aW9ucyBAZW52Lypjb21waWxlciopKSkpXHJcbiAoW2xpYiBkZXBzIGVudiBvcHRzXVxyXG4gIChsZXRcclxuICAgW2NvbXBpbGVyIEBlbnYvKmNvbXBpbGVyKl1cclxuICAgKGJpbmRpbmdcclxuICAgIFsqY2xqcy1kZXAtc2V0KlxyXG4gICAgICh2YXJ5LW1ldGFcclxuICAgICAgKGNvbmogKmNsanMtZGVwLXNldCogbGliKVxyXG4gICAgICB1cGRhdGUtaW5cclxuICAgICAgWzpkZXAtcGF0aF1cclxuICAgICAgY29ualxyXG4gICAgICBsaWIpXVxyXG4gICAgKGFzc2VydFxyXG4gICAgIChldmVyeT9cclxuICAgICAgKGZuKiBbcDFfXzQxMjI4I10gKG5vdCAoY29udGFpbnM/ICpjbGpzLWRlcC1zZXQqIHAxX180MTIyOCMpKSlcclxuICAgICAgZGVwcylcclxuICAgICAoc3RyXHJcbiAgICAgIFwiQ2lyY3VsYXIgZGVwZW5kZW5jeSBkZXRlY3RlZCwgXCJcclxuICAgICAgKGFwcGx5XHJcbiAgICAgICBzdHJcclxuICAgICAgIChpbnRlcnBvc2VcclxuICAgICAgICBcIiAtPiBcIlxyXG4gICAgICAgIChjb25qXHJcbiAgICAgICAgICgtPiAqY2xqcy1kZXAtc2V0KiBtZXRhIDpkZXAtcGF0aClcclxuICAgICAgICAgKHNvbWUgKmNsanMtZGVwLXNldCogZGVwcykpKSkpKVxyXG4gICAgKGRvc2VxXHJcbiAgICAgW2RlcCBkZXBzXVxyXG4gICAgICh3aGVuLW5vdFxyXG4gICAgICAob3JcclxuICAgICAgIChzb21lPyAoZ2V0LWluIGNvbXBpbGVyIFs6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzIGRlcCA6ZGVmc10pKVxyXG4gICAgICAgKG5vZGUtbW9kdWxlLWRlcD8gZGVwKVxyXG4gICAgICAgKGpzLW1vZHVsZS1leGlzdHM/IChuYW1lIGRlcCkpXHJcbiAgICAgICAjPyg6Y2xqIChkZXBzL2ZpbmQtY2xhc3NwYXRoLWxpYiBkZXApKSlcclxuICAgICAgKGlmXHJcbiAgICAgICAoY29udGFpbnM/ICg6anMtZGVwZW5kZW5jeS1pbmRleCBjb21waWxlcikgKG5hbWUgZGVwKSlcclxuICAgICAgIChsZXRcclxuICAgICAgICBbZGVwLW5hbWUgKG5hbWUgZGVwKV1cclxuICAgICAgICAod2hlblxyXG4gICAgICAgICAoc3RyaW5nL3N0YXJ0cy13aXRoPyBkZXAtbmFtZSBcImdvb2cuXCIpXHJcbiAgICAgICAgICM/KDpjbGogKGxldCBbanMtbGliIChnZXQtaW4gY29tcGlsZXIgWzpqcy1kZXBlbmRlbmN5LWluZGV4IGRlcC1uYW1lXSkgbnMgKGV4dGVybnMvYW5hbHl6ZS1nb29nLWZpbGUgKDpmaWxlIGpzLWxpYikgKHN5bWJvbCBkZXAtbmFtZSkpXSAoc3dhcCEgZW52Lypjb21waWxlciogdXBkYXRlLWluIFs6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzIGRlcF0gbWVyZ2UgbnMpKSkpKVxyXG4gICAgICAgIz8oOmNsaiAoaWYtc29tZSBbc3JjIChsb2NhdGUtc3JjIGRlcCldIChhbmFseXplLWZpbGUgc3JjIG9wdHMpICh0aHJvdyAoZXJyb3IgZW52IChlcnJvci1tZXNzYWdlIDp1bmRlY2xhcmVkLW5zIHs6bnMtc3ltIGRlcCwgOmpzLXByb3ZpZGUgKG5hbWUgZGVwKX0pKSkpIDpjbGpzICh0aHJvdyAoZXJyb3IgZW52IChlcnJvci1tZXNzYWdlIDp1bmRlY2xhcmVkLW5zIHs6bnMtc3ltIGRlcCwgOmpzLXByb3ZpZGUgKG5hbWUgZGVwKX0pKSkpKSkpKSkpKVxyXG4ifSB7OnN5bSBhcnJheS10eXBlPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0XSl9LCA6c291cmNlICIoZGVmblxyXG4gYXJyYXktdHlwZT9cclxuICM/KDpjbGpzIHs6dGFnIGJvb2xlYW59KVxyXG4gW3RdXHJcbiAoY29uZFxyXG4gIChuaWw/IHQpXHJcbiAgdHJ1ZVxyXG4gICg9ICdjbGotbmlsIHQpXHJcbiAgdHJ1ZVxyXG4gIChqcy10YWc/IHQpXHJcbiAgdHJ1ZVxyXG4gICg9ICdhbnkgdClcclxuICB0cnVlXHJcbiAgKGNvbnRhaW5zPyBhcnJheS10eXBlcyB0KVxyXG4gIHRydWVcclxuICA6ZWxzZVxyXG4gIChib29sZWFuXHJcbiAgICh3aGVuXHJcbiAgICAjPyg6Y2xqIChzZXQ/IHQpIDpjbGpzIChjbGpzLXNldD8gdCkpXHJcbiAgICAob3IgKGNvbnRhaW5zPyB0ICdhbnkpIChjb250YWlucz8gdCAnanMpIChzb21lIGFycmF5LXR5cGVzIHQpKSkpKSlcclxuIn0gezpzeW0gZG90dGVkLXN5bWJvbD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3ltXSl9LCA6c291cmNlICIoZGVmblxyXG4gZG90dGVkLXN5bWJvbD9cclxuIFtzeW1dXHJcbiAobGV0XHJcbiAgW3MgKHN0ciBzeW0pXVxyXG4gICM/KDpjbGogKGFuZCAoLmNvbnRhaW5zIHMgXCIuXCIpIChub3QgKC5jb250YWlucyBzIFwiLi5cIikpKSA6Y2xqcyAoYW5kIChnb29nLnN0cmluZy9jb250YWlucyBzIFwiLlwiKSAobm90IChnb29nLnN0cmluZy9jb250YWlucyBzIFwiLi5cIikpKSkpKVxyXG4ifSB7OnN5bSAqY2xqcy1tYWNyb3MtaXMtY2xhc3NwYXRoKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmNsanMtbWFjcm9zLWlzLWNsYXNzcGF0aCogdHJ1ZSlcclxuIn0gezpzeW0gKmFsbG93LXJlZGVmKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmFsbG93LXJlZGVmKiBmYWxzZSlcclxuIn0gezpzeW0gYW5hbHl6ZS1mbi1tZXRob2QtYm9keSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgZm9ybSByZWN1ci1mcmFtZXNdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBhbmFseXplLWZuLW1ldGhvZC1ib2R5XHJcbiBbZW52IGZvcm0gcmVjdXItZnJhbWVzXVxyXG4gKGJpbmRpbmcgWypyZWN1ci1mcmFtZXMqIHJlY3VyLWZyYW1lc10gKGFuYWx5emUgZW52IGZvcm0pKSlcclxuIn0gezpzeW0gaW5mZXItdHlwZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgezprZXlzIFt0YWddLCA6YXMgYXN0fSBfXSl9LCA6c291cmNlICIoZGVmblxyXG4gaW5mZXItdHlwZVxyXG4gW2VudiB7OmtleXMgW3RhZ10sIDphcyBhc3R9IF9dXHJcbiAoaWZcclxuICAob3IgKG5pbD8gdGFnKSAoPSAnZnVuY3Rpb24gdGFnKSlcclxuICAoaWZcclxuICAgKD0gOmZuICg6b3AgYXN0KSlcclxuICAgKHVwZGF0ZVxyXG4gICAgYXN0XHJcbiAgICA6bWV0aG9kc1xyXG4gICAgKGZuXHJcbiAgICAgW21zXVxyXG4gICAgIChpbnRvXHJcbiAgICAgIFtdXHJcbiAgICAgIChtYXAgKGZuKiBbcDFfXzQxMjYwI10gKGluZmVyLXR5cGUgZW52IHAxX180MTI2MCMgXykpKVxyXG4gICAgICBtcykpKVxyXG4gICAoaWYtc29tZSBbdGFnIChpbmZlci10YWcgZW52IGFzdCldIChhc3NvYyBhc3QgOnRhZyB0YWcpIGFzdCkpXHJcbiAgYXN0KSlcclxuIn0gezpzeW0gcGFyc2UtaW1wb3J0LXNwZWMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IGRlcHMgc3BlY10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHBhcnNlLWltcG9ydC1zcGVjXHJcbiBbZW52IGRlcHMgc3BlY11cclxuICh3aGVuLW5vdFxyXG4gIChvclxyXG4gICAoYW5kIChzZXF1ZW50aWFsPyBzcGVjKSAoZXZlcnk/IHN5bWJvbD8gc3BlYykpXHJcbiAgIChhbmQgKHN5bWJvbD8gc3BlYykgKG5pbD8gKG5hbWVzcGFjZSBzcGVjKSkpKVxyXG4gICh0aHJvd1xyXG4gICAoZXJyb3JcclxuICAgIGVudlxyXG4gICAgKHBhcnNlLW5zLWVycm9yLW1zZ1xyXG4gICAgIHNwZWNcclxuICAgICBcIk9ubHkgbGliLm5zLkN0b3Igb3IgW2xpYi5ucyBDdG9yKl0gc3BlYyBzdXBwb3J0ZWQgaW4gOmltcG9ydFwiKSkpKVxyXG4gKGxldFxyXG4gIFtpbXBvcnQtbWFwXHJcbiAgIChjb25kXHJcbiAgICAoc2VxdWVudGlhbD8gc3BlYylcclxuICAgICgtPj5cclxuICAgICAocmVzdCBzcGVjKVxyXG4gICAgIChtYXBcclxuICAgICAgKGZuKlxyXG4gICAgICAgW3AxX180MTIzNyNdXHJcbiAgICAgICAodmVjdG9yIHAxX180MTIzNyMgKHN5bWJvbCAoc3RyIChmaXJzdCBzcGVjKSBcIi5cIiBwMV9fNDEyMzcjKSkpKSlcclxuICAgICAoaW50byB7fSkpXHJcbiAgICAobm90ICg9PSAtMSAoLmluZGV4T2YgKHN0ciBzcGVjKSBcIi5cIikpKVxyXG4gICAgeyhzeW1ib2wgKGxhc3QgKHN0cmluZy9zcGxpdCAoc3RyIHNwZWMpICNcIlxcLlwiKSkpIHNwZWN9XHJcbiAgICA6ZWxzZVxyXG4gICAge30pXVxyXG4gIChkb3NlcSBbW18gc3BlY10gaW1wb3J0LW1hcF0gKHN3YXAhIGRlcHMgY29uaiBzcGVjKSlcclxuICB7OmltcG9ydCBpbXBvcnQtbWFwLCA6cmVxdWlyZSBpbXBvcnQtbWFwfSkpXHJcbiJ9IHs6c3ltIGNsai1ucy0+Y2xqcy1ucywgOm1ldGEgezpkb2MgIkdpdmVuIGEgc3ltYm9sIHRoYXQgc3RhcnRzIHdpdGggY2xvanVyZSBhcyB0aGUgZmlyc3Qgc2VnbWVudCByZXR1cm4gdGhlXG4gICBzYW1lIHN5bWJvbCB3aXRoIHRoZSBmaXJzdCBzZWdtZW50IHJlcGxhY2VkIHdpdGggY2xqcyIsIDphcmdsaXN0cyAoW3N5bV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGNsai1ucy0+Y2xqcy1uc1xyXG4gXCJHaXZlbiBhIHN5bWJvbCB0aGF0IHN0YXJ0cyB3aXRoIGNsb2p1cmUgYXMgdGhlIGZpcnN0IHNlZ21lbnQgcmV0dXJuIHRoZVxcbiAgIHNhbWUgc3ltYm9sIHdpdGggdGhlIGZpcnN0IHNlZ21lbnQgcmVwbGFjZWQgd2l0aCBjbGpzXCJcclxuIFtzeW1dXHJcbiAobGV0XHJcbiAgW3NlZ3MgKHN0cmluZy9zcGxpdCAoY2xvanVyZS5jb3JlL25hbWUgc3ltKSAjXCJcXC5cIildXHJcbiAgKGlmXHJcbiAgICg9IFwiY2xvanVyZVwiIChmaXJzdCBzZWdzKSlcclxuICAgKHN5bWJvbCAoc3RyaW5nL2pvaW4gXCIuXCIgKGNvbnMgXCJjbGpzXCIgKG5leHQgc2VncykpKSlcclxuICAgc3ltKSkpXHJcbiJ9IHs6c3ltIGNvbnN0YW50LXZhbHVlPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt7OmtleXMgW29wXSwgOmFzIGFzdH1dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBjb25zdGFudC12YWx1ZT9cclxuIFt7OmtleXMgW29wXSwgOmFzIGFzdH1dXHJcbiAob3JcclxuICAoI3s6Y29uc3QgOnF1b3RlfSBvcClcclxuICAoYW5kXHJcbiAgICgjezp2ZWN0b3IgOnNldCA6bWFwfSBvcClcclxuICAgKGV2ZXJ5PyBjb25zdGFudC12YWx1ZT8gKGFzdC1jaGlsZHJlbiBhc3QpKSkpKVxyXG4ifSB7OnN5bSBkdW1wLXNwZWNzLCA6bWV0YSB7OmRvYyAiRHVtcHMgcmVnaXN0ZXJlZCBzcGVjZWQgdmFycyBmb3IgYSBnaXZlbiBuYW1lc3BhY2UgaW50byB0aGUgY29tcGlsZXJcbiAgZW52aXJvbm1lbnQuIiwgOmFyZ2xpc3RzIChbbnNdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBkdW1wLXNwZWNzXHJcbiBcIkR1bXBzIHJlZ2lzdGVyZWQgc3BlY2VkIHZhcnMgZm9yIGEgZ2l2ZW4gbmFtZXNwYWNlIGludG8gdGhlIGNvbXBpbGVyXFxuICBlbnZpcm9ubWVudC5cIlxyXG4gW25zXVxyXG4gKGxldFxyXG4gIFtzcGVjLXZhcnMgKGdldC1zcGVjLXZhcnMpIG5zLXN0ciAoc3RyIG5zKV1cclxuICAoc3dhcCFcclxuICAgZW52Lypjb21waWxlcipcclxuICAgdXBkYXRlLWluXHJcbiAgIFs6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzIG5zXVxyXG4gICBtZXJnZVxyXG4gICAod2hlbi1sZXRcclxuICAgIFtyZWdpc3RyeS1yZWYgKDpyZWdpc3RyeS1yZWYgc3BlYy12YXJzKV1cclxuICAgIHs6Y2xqcy5zcGVjL3JlZ2lzdHJ5LXJlZlxyXG4gICAgIChpbnRvXHJcbiAgICAgIFtdXHJcbiAgICAgIChmaWx0ZXIgKGZuIFtbayBfXV0gKD0gbnMtc3RyIChuYW1lc3BhY2UgaykpKSlcclxuICAgICAgQEByZWdpc3RyeS1yZWYpfSlcclxuICAgKHdoZW4tbGV0XHJcbiAgICBbc3BlY2VkLXZhcnMgKDpzcGVjZWQtdmFycyBzcGVjLXZhcnMpXVxyXG4gICAgezpjbGpzLnNwZWMvc3BlY2VkLXZhcnNcclxuICAgICAoaW50b1xyXG4gICAgICBbXVxyXG4gICAgICAoZmlsdGVyXHJcbiAgICAgICAoZm5cclxuICAgICAgICBbdl1cclxuICAgICAgICAob3IgKD0gbnMtc3RyIChuYW1lc3BhY2UgdikpICg9IG5zICgtPiB2IG1ldGEgOmZkZWYtbnMpKSkpKVxyXG4gICAgICBAQHNwZWNlZC12YXJzKX0pKSkpXHJcbiJ9IHs6c3ltICpmbi1pbnZva2UtZGlyZWN0KiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmZuLWludm9rZS1kaXJlY3QqIGZhbHNlKVxyXG4ifSB7OnN5bSB1c2UtPnJlcXVpcmUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IFtsaWIgJiBmaWx0ZXJzIDphcyBzcGVjXV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHVzZS0+cmVxdWlyZVxyXG4gW2VudiBbbGliICYgZmlsdGVycyA6YXMgc3BlY11dXHJcbiAod2hlbi1ub3RcclxuICAoYW5kIChzeW1ib2w/IGxpYikgKG9kZD8gKGNvdW50IHNwZWMpKSlcclxuICAodGhyb3dcclxuICAgKGVycm9yXHJcbiAgICBlbnZcclxuICAgIChwYXJzZS1ucy1lcnJvci1tc2dcclxuICAgICBzcGVjXHJcbiAgICAgXCJPbmx5IFtsaWIubnMgOm9ubHkgKG5hbWVzKV0gYW5kIG9wdGlvbmFsbHkgYDpyZW5hbWUge2Zyb20gdG99YCBzcGVjcyBzdXBwb3J0ZWQgaW4gOnVzZSAvIDp1c2UtbWFjcm9zXCIpKSkpXHJcbiAobG9vcFxyXG4gIFtmcyAoc2VxIGZpbHRlcnMpIHJldCBbbGliXSBlcnIgZmFsc2VdXHJcbiAgKGNvbmRcclxuICAgKHRydWU/IGVycilcclxuICAgKHRocm93XHJcbiAgICAoZXJyb3JcclxuICAgICBlbnZcclxuICAgICAocGFyc2UtbnMtZXJyb3ItbXNnXHJcbiAgICAgIHNwZWNcclxuICAgICAgXCJPbmx5IFtsaWIubnMgOm9ubHkgKG5hbWVzKV0gYW5kIG9wdGlvbmFsbHkgYDpyZW5hbWUge2Zyb20gdG99YCBzcGVjcyBzdXBwb3J0ZWQgaW4gOnVzZSAvIDp1c2UtbWFjcm9zXCIpKSlcclxuICAgKHNvbWU/IGZzKVxyXG4gICAobGV0XHJcbiAgICBba3cgKGZpcnN0IGZzKSBvbmx5PyAoPSBrdyA6b25seSldXHJcbiAgICAoaWZcclxuICAgICAob3Igb25seT8gKD0ga3cgOnJlbmFtZSkpXHJcbiAgICAgKGlmXHJcbiAgICAgIChzb21lPyAoc29tZSAjeyhpZiBvbmx5PyA6cmVmZXIga3cpfSByZXQpKVxyXG4gICAgICAodGhyb3dcclxuICAgICAgIChlcnJvclxyXG4gICAgICAgIGVudlxyXG4gICAgICAgIChwYXJzZS1ucy1lcnJvci1tc2dcclxuICAgICAgICAgc3BlY1xyXG4gICAgICAgICBcIkVhY2ggb2YgOm9ubHkgYW5kIDpyZW5hbWUgb3B0aW9ucyBtYXkgb25seSBiZSBzcGVjaWZpZWQgb25jZSBpbiA6dXNlIC8gOnVzZS1tYWNyb3NcIikpKVxyXG4gICAgICAobGV0XHJcbiAgICAgICBbcmVmcyAoc2Vjb25kIGZzKV1cclxuICAgICAgIChpZi1ub3RcclxuICAgICAgICAob3JcclxuICAgICAgICAgKGFuZCBvbmx5PyAoc2VxdWVudGlhbD8gcmVmcykgKGV2ZXJ5PyBzeW1ib2w/IHJlZnMpKVxyXG4gICAgICAgICAoYW5kXHJcbiAgICAgICAgICAoPSBrdyA6cmVuYW1lKVxyXG4gICAgICAgICAgKG1hcD8gcmVmcylcclxuICAgICAgICAgIChldmVyeT9cclxuICAgICAgICAgICAoZm4qIFtwMV9fNDEyMzYjXSAoZXZlcnk/IHN5bWJvbD8gcDFfXzQxMjM2IykpXHJcbiAgICAgICAgICAgcmVmcykpKVxyXG4gICAgICAgIChyZWN1ciBmcyByZXQgdHJ1ZSlcclxuICAgICAgICAocmVjdXJcclxuICAgICAgICAgKG5uZXh0IGZzKVxyXG4gICAgICAgICAoaW50byByZXQgWyhpZiBvbmx5PyA6cmVmZXIga3cpIHJlZnNdKVxyXG4gICAgICAgICBmYWxzZSkpKSlcclxuICAgICAocmVjdXIgZnMgcmV0IHRydWUpKSlcclxuICAgOmVsc2VcclxuICAgKGlmIChzb21lPyAoc29tZSAjezpyZWZlcn0gcmV0KSkgcmV0IChyZWN1ciBmcyByZXQgdHJ1ZSkpKSkpXHJcbiJ9IHs6c3ltIGluZmVycmVkLXVzZS1tYWNyb3MsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdXNlLW1hY3JvcyBlbnZdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBpbmZlcnJlZC11c2UtbWFjcm9zXHJcbiBbdXNlLW1hY3JvcyBlbnZdXHJcbiAobGV0XHJcbiAgW2NlbnYgQGVudi8qY29tcGlsZXIqXVxyXG4gIChpbnRvXHJcbiAgIHt9XHJcbiAgIChmaWx0ZXJcclxuICAgIChmbiBbW3N5bSBsaWJdXSAobm90IChtaXNzaW5nLXVzZS1tYWNybz8gbGliIHN5bSkpKVxyXG4gICAgdXNlLW1hY3JvcykpKSlcclxuIn0gezpzeW0gYW5hbHl6ZS1zeW1ib2wsIDptZXRhIHs6ZG9jICJGaW5kcyB0aGUgdmFyIGFzc29jaWF0ZWQgd2l0aCBzeW0iLCA6YXJnbGlzdHMgKFtlbnYgc3ltXSl9LCA6c291cmNlICIoZGVmblxyXG4gYW5hbHl6ZS1zeW1ib2xcclxuIFwiRmluZHMgdGhlIHZhciBhc3NvY2lhdGVkIHdpdGggc3ltXCJcclxuIFtlbnYgc3ltXVxyXG4gKGlmXHJcbiAgKDpxdW90ZWQ/IGVudilcclxuICAoZG9cclxuICAgKHJlZ2lzdGVyLWNvbnN0YW50ISBlbnYgc3ltKVxyXG4gICAoYW5hbHl6ZS13cmFwLW1ldGFcclxuICAgIHs6b3AgOmNvbnN0LFxyXG4gICAgIDp2YWwgc3ltLFxyXG4gICAgIDplbnYgZW52LFxyXG4gICAgIDpmb3JtIHN5bSxcclxuICAgICA6dGFnICdjbGpzLmNvcmUvU3ltYm9sfSkpXHJcbiAgKGxldFxyXG4gICBbezprZXlzIFtsaW5lIGNvbHVtbl19XHJcbiAgICAobWV0YSBzeW0pXHJcbiAgICBlbnZcclxuICAgIChpZi1ub3QgKG5pbD8gbGluZSkgKGFzc29jIGVudiA6bGluZSBsaW5lKSBlbnYpXHJcbiAgICBlbnZcclxuICAgIChpZi1ub3QgKG5pbD8gY29sdW1uKSAoYXNzb2MgZW52IDpjb2x1bW4gY29sdW1uKSBlbnYpXHJcbiAgICByZXRcclxuICAgIHs6ZW52IGVudiwgOmZvcm0gc3ltfVxyXG4gICAgbGNsc1xyXG4gICAgKDpsb2NhbHMgZW52KV1cclxuICAgKGlmLXNvbWVcclxuICAgIFtsYiAoaGFuZGxlLXN5bWJvbC1sb2NhbCBzeW0gKGdldCBsY2xzIHN5bSkpXVxyXG4gICAgKG1lcmdlXHJcbiAgICAgKGFzc29jIHJldCA6b3AgOmxvY2FsIDppbmZvIGxiKVxyXG4gICAgICh3aGVuXHJcbiAgICAgIChtYXA/IGxiKVxyXG4gICAgICAoc2VsZWN0LWtleXMgbGIgWzpuYW1lIDpsb2NhbCA6YXJnLWlkIDp2YXJpYWRpYz8gOmluaXRdKSkpXHJcbiAgICAobGV0XHJcbiAgICAgW3N5bS1tZXRhXHJcbiAgICAgIChtZXRhIHN5bSlcclxuICAgICAgc3ltLW5zXHJcbiAgICAgIChuYW1lc3BhY2Ugc3ltKVxyXG4gICAgICBjdXItbnNcclxuICAgICAgKHN0ciAoLT4gZW52IDpucyA6bmFtZSkpXHJcbiAgICAgICM/QCg6Y2xqcyBbc3ltIChpZiAoYW5kIHN5bS1ucyAobm90PSBzeW0tbnMgXCJjbGpzLmNvcmVcIikgKGdzdHJpbmcvZW5kc1dpdGggY3VyLW5zIFwiJG1hY3Jvc1wiKSAobm90IChnc3RyaW5nL2VuZHNXaXRoIHN5bS1ucyBcIiRtYWNyb3NcIikpICg9IHN5bS1ucyAoc3VicyBjdXItbnMgMCAoLSAoY291bnQgY3VyLW5zKSA3KSkpKSAoc3ltYm9sIChzdHIgc3ltLW5zIFwiJG1hY3Jvc1wiKSAobmFtZSBzeW0pKSBzeW0pXSlcclxuICAgICAgaW5mb1xyXG4gICAgICAoaWYtbm90XHJcbiAgICAgICAoY29udGFpbnM/IHN5bS1tZXRhIDpjbGpzLmFuYWx5emVyL2FuYWx5emVkKVxyXG4gICAgICAgKHJlc29sdmUtZXhpc3RpbmctdmFyIGVudiBzeW0pXHJcbiAgICAgICAocmVzb2x2ZS12YXIgZW52IHN5bSkpXVxyXG4gICAgIChhc3NlcnQgKDpvcCBpbmZvKSAoOm9wIGluZm8pKVxyXG4gICAgIChkZXN1Z2FyLWRvdHRlZC1leHByXHJcbiAgICAgIChpZi1ub3RcclxuICAgICAgICh0cnVlPyAoOmRlZi12YXIgZW52KSlcclxuICAgICAgIChtZXJnZVxyXG4gICAgICAgIChhc3NvYyByZXQgOmluZm8gaW5mbylcclxuICAgICAgICAoc2VsZWN0LWtleXMgaW5mbyBbOm9wIDpuYW1lIDpucyA6dGFnXSlcclxuICAgICAgICAod2hlbi1sZXRcclxuICAgICAgICAgW2NvbnN0LWV4cHIgKDpjb25zdC1leHByIGluZm8pXVxyXG4gICAgICAgICB7OmNvbnN0LWV4cHIgY29uc3QtZXhwcn0pKVxyXG4gICAgICAgKGxldFxyXG4gICAgICAgIFtpbmZvIChyZXNvbHZlLXZhciBlbnYgc3ltKV1cclxuICAgICAgICAobWVyZ2VcclxuICAgICAgICAgKGFzc29jIHJldCA6b3AgOnZhciA6aW5mbyBpbmZvKVxyXG4gICAgICAgICAoc2VsZWN0LWtleXMgaW5mbyBbOm9wIDpuYW1lIDpucyA6dGFnXSkpKSkpKSkpKSlcclxuIn0gezpzeW0gY29uZmlybS12YXItZXhpc3RzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW2VudiBwcmVmaXggc3VmZml4XSBbZW52IHByZWZpeCBzdWZmaXggbWlzc2luZy1mbl1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGNvbmZpcm0tdmFyLWV4aXN0c1xyXG4gKFtlbnYgcHJlZml4IHN1ZmZpeF1cclxuICAobGV0XHJcbiAgIFt3YXJuIChjb25maXJtLXZhci1leGlzdC13YXJuaW5nIGVudiBwcmVmaXggc3VmZml4KV1cclxuICAgKGNvbmZpcm0tdmFyLWV4aXN0cyBlbnYgcHJlZml4IHN1ZmZpeCB3YXJuKSkpXHJcbiAoW2VudiBwcmVmaXggc3VmZml4IG1pc3NpbmctZm5dXHJcbiAgKGxldFxyXG4gICBbc3Vmc3RyXHJcbiAgICAoc3RyIHN1ZmZpeClcclxuICAgIHN1ZmZpeC1zdHJcclxuICAgIChpZlxyXG4gICAgIChhbmRcclxuICAgICAgIz8oOmNsaiAobm90PSBcIi4uXCIgc3Vmc3RyKSA6Y2xqcyAobm90IChpZGVudGljYWw/IFwiLi5cIiBzdWZzdHIpKSlcclxuICAgICAgIz8oOmNsaiAocmUtZmluZCAjXCJcXC5cIiBzdWZzdHIpIDpjbGpzICgudGVzdCAjXCJcXC5cIiBzdWZzdHIpKSlcclxuICAgICAoZmlyc3QgKHN0cmluZy9zcGxpdCBzdWZzdHIgI1wiXFwuXCIpKVxyXG4gICAgIHN1ZmZpeClcclxuICAgIHN1ZmZpeFxyXG4gICAgKHN5bWJvbCBzdWZmaXgtc3RyKV1cclxuICAgKHdoZW5cclxuICAgIChhbmRcclxuICAgICAobm90IChpbXBsaWNpdC1pbXBvcnQ/IGVudiBwcmVmaXggc3VmZml4KSlcclxuICAgICAobm90IChsb2FkZWQtanMtbnM/IGVudiBwcmVmaXgpKVxyXG4gICAgIChub3QgKGFuZCAoPSAnY2xqcy5jb3JlIHByZWZpeCkgKD0gJ3VucXVvdGUgc3VmZml4KSkpXHJcbiAgICAgKG5pbD9cclxuICAgICAgKGdldHNcclxuICAgICAgIEBlbnYvKmNvbXBpbGVyKlxyXG4gICAgICAgOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlc1xyXG4gICAgICAgcHJlZml4XHJcbiAgICAgICA6ZGVmc1xyXG4gICAgICAgc3VmZml4KSlcclxuICAgICAobm90IChqcy1tb2R1bGUtZXhpc3RzPyBwcmVmaXgpKSlcclxuICAgIChtaXNzaW5nLWZuIGVudiBwcmVmaXggc3VmZml4KSkpKSlcclxuIn0gezpzeW0gYW5hbHl6ZS1rZXl3b3JkLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBzeW1dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBhbmFseXplLWtleXdvcmRcclxuIFtlbnYgc3ltXVxyXG4gKHJlZ2lzdGVyLWNvbnN0YW50ISBlbnYgc3ltKVxyXG4gezpvcCA6Y29uc3QsIDp2YWwgc3ltLCA6ZW52IGVudiwgOmZvcm0gc3ltLCA6dGFnICdjbGpzLmNvcmUvS2V5d29yZH0pXHJcbiJ9IHs6c3ltIGFuYWx5emUtbGV0LWJpbmRpbmdzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VuY2wtZW52IGJpbmRpbmdzIG9wXSl9LCA6c291cmNlICIoZGVmblxyXG4gYW5hbHl6ZS1sZXQtYmluZGluZ3NcclxuIFtlbmNsLWVudiBiaW5kaW5ncyBvcF1cclxuIChkaXNhbGxvd2luZy1yZWN1ciAoYW5hbHl6ZS1sZXQtYmluZGluZ3MqIGVuY2wtZW52IGJpbmRpbmdzIG9wKSkpXHJcbiJ9IHs6c3ltIG11bmdlLWdsb2JhbC1leHBvcnQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbmFtZV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIG11bmdlLWdsb2JhbC1leHBvcnRcclxuIFtuYW1lXVxyXG4gKHN0clxyXG4gIFwiZ2xvYmFsJG1vZHVsZSRcIlxyXG4gIChtdW5nZVxyXG4gICAoc3RyaW5nL3JlcGxhY2UgKHN0ciBuYW1lKSAjXCJbLlxcL11cIiAjPyg6Y2xqIFwiXFxcXCRcIiA6Y2xqcyBcIiQkXCIpKSkpKVxyXG4ifSB7OnN5bSAqbG9vcC1sZXRzKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmxvb3AtbGV0cyogKCkpXHJcbiJ9IHs6c3ltIC0+dHlwZS1zZXQsIDptZXRhIHs6ZG9jICJFbnN1cmVzIHRoYXQgYSB0eXBlIHRhZyBpcyBhIHNldC4iLCA6YXJnbGlzdHMgKFt0XSl9LCA6c291cmNlICIoZGVmblxyXG4gLT50eXBlLXNldFxyXG4gXCJFbnN1cmVzIHRoYXQgYSB0eXBlIHRhZyBpcyBhIHNldC5cIlxyXG4gW3RdXHJcbiAoaWYgIz8oOmNsaiAoc2V0PyB0KSA6Y2xqcyAoY2xqcy1zZXQ/IHQpKSB0ICN7dH0pKVxyXG4ifSB7OnN5bSBqcy10YWcsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbcHJlXSBbcHJlIHRhZy10eXBlXSBbcHJlIHRhZy10eXBlIGV4dGVybnNdIFtwcmUgdGFnLXR5cGUgZXh0ZXJucyB0b3BdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBqcy10YWdcclxuIChbcHJlXSAoanMtdGFnIHByZSA6dGFnKSlcclxuIChbcHJlIHRhZy10eXBlXSAoanMtdGFnIHByZSB0YWctdHlwZSAoZ2V0LWV4dGVybnMpKSlcclxuIChbcHJlIHRhZy10eXBlIGV4dGVybnNdIChqcy10YWcgcHJlIHRhZy10eXBlIGV4dGVybnMgZXh0ZXJucykpXHJcbiAoW3ByZSB0YWctdHlwZSBleHRlcm5zIHRvcF1cclxuICAod2hlbi1sZXRcclxuICAgW1twIGV4dGVybnMnIDphcyBtZV0gKGZpbmQgZXh0ZXJucyAoZmlyc3QgcHJlKSldXHJcbiAgIChsZXRcclxuICAgIFt0YWcgKC0+IHAgbWV0YSB0YWctdHlwZSldXHJcbiAgICAoaWZcclxuICAgICAoPSAoY291bnQgcHJlKSAxKVxyXG4gICAgICh3aGVuIHRhZyAoc3ltYm9sIFwianNcIiAoc3RyIChhbGlhcy0+dHlwZSB0YWcgdGFnKSkpKVxyXG4gICAgIChvclxyXG4gICAgICAoanMtdGFnIChuZXh0IHByZSkgdGFnLXR5cGUgZXh0ZXJucycgdG9wKVxyXG4gICAgICAoanMtdGFnXHJcbiAgICAgICAoaW50byAnW3Byb3RvdHlwZV0gKG5leHQgcHJlKSlcclxuICAgICAgIHRhZy10eXBlXHJcbiAgICAgICAoZ2V0IHRvcCB0YWcpXHJcbiAgICAgICB0b3ApKSkpKSkpXHJcbiJ9IHs6c3ltIGpzLXJlc2VydmVkLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxyXG4ganMtcmVzZXJ2ZWRcclxuICN7XCJ0eXBlb2ZcIiBcImZsb2F0XCIgXCJpbXBsZW1lbnRzXCIgXCJlbHNlXCIgXCJib29sZWFuXCIgXCJhYnN0cmFjdFwiIFwiaW50XCJcclxuICAgXCJzdGF0aWNcIiBcInBhY2thZ2VcIiBcInRoaXNcIiBcImF3YWl0XCIgXCJ5aWVsZFwiIFwiaW50ZXJmYWNlXCIgXCJ2b2lkXCJcclxuICAgXCJkZWxldGVcIiBcImNsYXNzXCIgXCJleHBvcnRcIiBcInZhclwiIFwidHJ5XCIgXCJsb25nXCIgXCJudWxsXCIgXCJyZXR1cm5cIlxyXG4gICBcIm1ldGhvZHNcIiBcIm5hdGl2ZVwiIFwicHJpdmF0ZVwiIFwibmV3XCIgXCJmb3JcIiBcImNhdGNoXCIgXCJleHRlbmRzXCIgXCJzaG9ydFwiXHJcbiAgIFwicHJvdGVjdGVkXCIgXCJ0aHJvd3NcIiBcInN5bmNocm9uaXplZFwiIFwidHJhbnNpZW50XCIgXCJzdXBlclwiIFwiaWZcIiBcImxldFwiXHJcbiAgIFwiaW1wb3J0XCIgXCJjaGFyXCIgXCJzd2l0Y2hcIiBcImNvbnN0XCIgXCJjYXNlXCIgXCJicmVha1wiIFwidm9sYXRpbGVcIlxyXG4gICBcImZ1bmN0aW9uXCIgXCJjb250aW51ZVwiIFwiZmluYWxcIiBcImRvXCIgXCJkb3VibGVcIiBcIndoaWxlXCIgXCJwdWJsaWNcIlxyXG4gICBcImFyZ3VtZW50c1wiIFwiZGVidWdnZXJcIiBcIndpdGhcIiBcImluc3RhbmNlb2ZcIiBcImRlZmF1bHRcIiBcInRocm93XCIgXCJnb3RvXCJcclxuICAgXCJmaW5hbGx5XCIgXCJieXRlXCIgXCJjb25zdHJ1Y3RvclwiIFwiaW5cIiBcImVudW1cIn0pXHJcbiJ9IHs6c3ltICpsb2FkLXRlc3RzKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmxvYWQtdGVzdHMqIHRydWUpXHJcbiJ9IHs6c3ltIGNoZWNrLXVzZS1tYWNyb3MtaW5mZXJyaW5nLW1pc3NpbmcsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbezprZXlzIFtuYW1lIHVzZXMgdXNlLW1hY3Jvc10sIDphcyBhc3R9IGVudl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGNoZWNrLXVzZS1tYWNyb3MtaW5mZXJyaW5nLW1pc3NpbmdcclxuIFt7OmtleXMgW25hbWUgdXNlcyB1c2UtbWFjcm9zXSwgOmFzIGFzdH0gZW52XVxyXG4gKGxldFxyXG4gIFttaXNzaW5nLXVzZXNcclxuICAgKHdoZW4gKGFuZCAqYW5hbHl6ZS1kZXBzKiAoc2VxIHVzZXMpKSAobWlzc2luZy11c2VzIHVzZXMgZW52KSlcclxuICAgbWF5YmUtbWFjcm9zXHJcbiAgIChhcHBseSBkaXNzb2MgdXNlcyAoa2V5cyBtaXNzaW5nLXVzZXMpKVxyXG4gICByZW1vdmUtbWlzc2luZy11c2VzXHJcbiAgIChmbiogW3AxX180MTIyOSNdIChhcHBseSBkaXNzb2MgcDFfXzQxMjI5IyAoa2V5cyBtaXNzaW5nLXVzZXMpKSlcclxuICAgYXN0J1xyXG4gICAoLT5cclxuICAgIGFzdFxyXG4gICAgKHVwZGF0ZS1pblxyXG4gICAgIFs6dXNlLW1hY3Jvc11cclxuICAgICAoZm4qXHJcbiAgICAgIFtwMV9fNDEyMzAjXVxyXG4gICAgICAoLT5cclxuICAgICAgIHAxX180MTIzMCNcclxuICAgICAgIChtZXJnZSAoY2hlY2stdXNlLW1hY3JvcyB1c2UtbWFjcm9zIG1pc3NpbmctdXNlcyBlbnYpKVxyXG4gICAgICAgKG1lcmdlIChpbmZlcnJlZC11c2UtbWFjcm9zIG1heWJlLW1hY3JvcyBlbnYpKSkpKVxyXG4gICAgKHVwZGF0ZS1pbiBbOnVzZXNdIHJlbW92ZS1taXNzaW5nLXVzZXMpKV1cclxuICAoc3dhcCFcclxuICAgZW52Lypjb21waWxlcipcclxuICAgKGZuKlxyXG4gICAgW3AxX180MTIzMSNdXHJcbiAgICAoLT5cclxuICAgICBwMV9fNDEyMzEjXHJcbiAgICAgKHVwZGF0ZS1pblxyXG4gICAgICBbOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyBuYW1lIDp1c2UtbWFjcm9zXVxyXG4gICAgICBtZXJnZVxyXG4gICAgICAoOnVzZS1tYWNyb3MgYXN0JykpXHJcbiAgICAgKHVwZGF0ZS1pblxyXG4gICAgICBbOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyBuYW1lIDp1c2VzXVxyXG4gICAgICByZW1vdmUtbWlzc2luZy11c2VzKSkpKVxyXG4gIGFzdCcpKVxyXG4ifSB7OnN5bSBjYW5vbmljYWxpemUtdHlwZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0XSl9LCA6c291cmNlICIoZGVmblxyXG4gY2Fub25pY2FsaXplLXR5cGVcclxuIFt0XVxyXG4gXCJFbnN1cmVzIHRoYXQgYSB0eXBlIHRhZyBpcyBlaXRoZXIgbmlsLCBhIHR5cGUgc3ltYm9sLCBvciBhIG5vbi1zaW5nbGV0b25cXG4gIHNldCBvZiB0eXBlIHN5bWJvbHMsIGFic29yYmluZyBjbGotbmlsIGludG8gc2VxIGFuZCBhbGwgdHlwZXMgaW50byBhbnkuXCJcclxuIChjb25kXHJcbiAgKHN5bWJvbD8gdClcclxuICB0XHJcbiAgKGVtcHR5PyB0KVxyXG4gIG5pbFxyXG4gICg9PSAxIChjb3VudCB0KSlcclxuICAoZmlyc3QgdClcclxuICAoY29udGFpbnM/IHQgJ2FueSlcclxuICAnYW55XHJcbiAgKGNvbnRhaW5zPyB0ICdzZXEpXHJcbiAgKGxldCBbcmVzIChkaXNqIHQgJ2Nsai1uaWwpXSAoaWYgKD09IDEgKGNvdW50IHJlcykpICdzZXEgcmVzKSlcclxuICA6ZWxzZVxyXG4gIHQpKVxyXG4ifSB7OnN5bSBtYWNyb2V4cGFuZC0xKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIG1hY3JvZXhwYW5kLTEqXHJcbiBbZW52IGZvcm1dXHJcbiAobGV0XHJcbiAgW29wIChmaXJzdCBmb3JtKV1cclxuICAoaWZcclxuICAgKGNvbnRhaW5zPyBzcGVjaWFscyBvcClcclxuICAgKGRvXHJcbiAgICAod2hlblxyXG4gICAgICg9ICducyBvcClcclxuICAgICAoZG8tbWFjcm9leHBhbmQtY2hlY2tcclxuICAgICAgZW52XHJcbiAgICAgIGZvcm1cclxuICAgICAgKGdldC1leHBhbmRlciAnY2xqcy5jb3JlL25zLXNwZWNpYWwtZm9ybSBlbnYpKSlcclxuICAgIGZvcm0pXHJcbiAgIChpZi1zb21lXHJcbiAgICBbbWFjLXZhciAod2hlbiAoc3ltYm9sPyBvcCkgKGdldC1leHBhbmRlciBvcCBlbnYpKV1cclxuICAgICgjP0AoOmNsaiBbYmluZGluZyBbKm5zKiAoY3JlYXRlLW5zICpjbGpzLW5zKildXSA6Y2xqcyBbZG9dKVxyXG4gICAgIChkby1tYWNyb2V4cGFuZC1jaGVjayBlbnYgZm9ybSBtYWMtdmFyKVxyXG4gICAgIChsZXRcclxuICAgICAgW2Zvcm0nXHJcbiAgICAgICAodHJ5XHJcbiAgICAgICAgIz8oOmNsanMgKGNoZWNrLW1hY3JvLWFyaXR5IG1hYy12YXIgZm9ybSkpXHJcbiAgICAgICAgKGFwcGx5IEBtYWMtdmFyIGZvcm0gZW52IChyZXN0IGZvcm0pKVxyXG4gICAgICAgICM/KDpjbGogKGNhdGNoIEFyaXR5RXhjZXB0aW9uIGUgKHRocm93IChBcml0eUV4Y2VwdGlvbi4gKC0gKC5hY3R1YWwgZSkgMikgKC5uYW1lIGUpKSkpKVxyXG4gICAgICAgIChjYXRjaFxyXG4gICAgICAgICAjPyg6Y2xqIFRocm93YWJsZSA6Y2xqcyA6ZGVmYXVsdClcclxuICAgICAgICAgZVxyXG4gICAgICAgICAodGhyb3dcclxuICAgICAgICAgIChleC1pbmZvXHJcbiAgICAgICAgICAgbmlsXHJcbiAgICAgICAgICAgKGVycm9yLWRhdGEgZW52IDptYWNyb2V4cGFuc2lvbiAodmFyLT5zeW0gbWFjLXZhcikpXHJcbiAgICAgICAgICAgZSkpKSldXHJcbiAgICAgIChpZlxyXG4gICAgICAgIz8oOmNsaiAoc2VxPyBmb3JtJykgOmNsanMgKGNsanMtc2VxPyBmb3JtJykpXHJcbiAgICAgICAobGV0XHJcbiAgICAgICAgW3N5bScgKGZpcnN0IGZvcm0nKSBzeW0gKGZpcnN0IGZvcm0pXVxyXG4gICAgICAgIChpZlxyXG4gICAgICAgICAjPyg6Y2xqICg9IHN5bScgKHF1b3RlIGpzKikpIDpjbGpzIChzeW1ib2wtaWRlbnRpY2FsPyBzeW0nIEpTX1NUQVJfU1lNKSlcclxuICAgICAgICAgKGxldFxyXG4gICAgICAgICAgW3N5bVxyXG4gICAgICAgICAgIChpZlxyXG4gICAgICAgICAgICAoc29tZT8gKG5hbWVzcGFjZSBzeW0pKVxyXG4gICAgICAgICAgICBzeW1cclxuICAgICAgICAgICAgKHN5bWJvbCBcImNsanMuY29yZVwiIChzdHIgc3ltKSkpXHJcbiAgICAgICAgICAganMtb3BcclxuICAgICAgICAgICB7OmpzLW9wIHN5bX1cclxuICAgICAgICAgICBudW1lcmljXHJcbiAgICAgICAgICAgIz8oOmNsaiAoLT4gbWFjLXZhciBtZXRhIDpjbGpzLmFuYWx5emVyL251bWVyaWMpIDpjbGpzIChsZXQgW21hYy12YXItbnMgKHN5bWJvbCAobmFtZXNwYWNlICguLXN5bSBtYWMtdmFyKSkpIG1hYy12YXItbmFtZSAoc3ltYm9sIChuYW1lICguLXN5bSBtYWMtdmFyKSkpXSAoZ2V0LWluIChjbG9qdXJlLmNvcmUvZGVyZWYgZW52Lypjb21waWxlciopIFs6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzIG1hYy12YXItbnMgOmRlZnMgbWFjLXZhci1uYW1lIDptZXRhIDpjbGpzLmFuYWx5emVyL251bWVyaWNdKSkpXHJcbiAgICAgICAgICAganMtb3BcclxuICAgICAgICAgICAoaWYgKHRydWU/IG51bWVyaWMpIChhc3NvYyBqcy1vcCA6bnVtZXJpYyB0cnVlKSBqcy1vcCldXHJcbiAgICAgICAgICAodmFyeS1tZXRhIGZvcm0nIG1lcmdlIGpzLW9wKSlcclxuICAgICAgICAgZm9ybScpKVxyXG4gICAgICAgZm9ybScpKSlcclxuICAgIChpZlxyXG4gICAgIChzeW1ib2w/IG9wKVxyXG4gICAgIChsZXRcclxuICAgICAgW29wbmFtZSAoc3RyIG9wKV1cclxuICAgICAgKGNvbmRcclxuICAgICAgIChpZGVudGljYWw/IFxcLiAjPyg6Y2xqIChmaXJzdCBvcG5hbWUpIDpjbGpzICguY2hhckF0IG9wbmFtZSAwKSkpXHJcbiAgICAgICAobGV0XHJcbiAgICAgICAgW1t0YXJnZXQgJiBhcmdzXSAobmV4dCBmb3JtKV1cclxuICAgICAgICAod2l0aC1tZXRhXHJcbiAgICAgICAgIChsaXN0KlxyXG4gICAgICAgICAgIz8oOmNsaiAocXVvdGUgLikgOmNsanMgRE9UX1NZTSlcclxuICAgICAgICAgIHRhcmdldFxyXG4gICAgICAgICAgKHN5bWJvbCAoc3VicyBvcG5hbWUgMSkpXHJcbiAgICAgICAgICBhcmdzKVxyXG4gICAgICAgICAobWV0YSBmb3JtKSkpXHJcbiAgICAgICAoaWRlbnRpY2FsP1xyXG4gICAgICAgIFxcLlxyXG4gICAgICAgICM/KDpjbGogKGxhc3Qgb3BuYW1lKSA6Y2xqcyAoLmNoYXJBdCBvcG5hbWUgKGRlYyAoLiBvcG5hbWUgLWxlbmd0aCkpKSkpXHJcbiAgICAgICAod2l0aC1tZXRhXHJcbiAgICAgICAgKGxpc3QqXHJcbiAgICAgICAgICM/KDpjbGogKHF1b3RlIG5ldykgOmNsanMgTkVXX1NZTSlcclxuICAgICAgICAgKHN5bWJvbCAoc3VicyBvcG5hbWUgMCAoZGVjIChjb3VudCBvcG5hbWUpKSkpXHJcbiAgICAgICAgIChuZXh0IGZvcm0pKVxyXG4gICAgICAgIChtZXRhIGZvcm0pKVxyXG4gICAgICAgOmVsc2VcclxuICAgICAgIGZvcm0pKVxyXG4gICAgIGZvcm0pKSkpKVxyXG4ifSB7OnN5bSBjaGVjay11c2UtbWFjcm9zLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW3VzZS1tYWNyb3MgZW52XSBbdXNlLW1hY3JvcyBtaXNzaW5nLXVzZXMgZW52XV19LCA6c291cmNlICIoZGVmblxyXG4gY2hlY2stdXNlLW1hY3Jvc1xyXG4gKFt1c2UtbWFjcm9zIGVudl0gKGNoZWNrLXVzZS1tYWNyb3MgdXNlLW1hY3JvcyBuaWwgZW52KSlcclxuIChbdXNlLW1hY3JvcyBtaXNzaW5nLXVzZXMgZW52XVxyXG4gIChsZXRcclxuICAgW2NlbnYgQGVudi8qY29tcGlsZXIqXVxyXG4gICAoZG9zZXFcclxuICAgIFtbc3ltIGxpYl0gdXNlLW1hY3Jvc11cclxuICAgICh3aGVuXHJcbiAgICAgKG1pc3NpbmctdXNlLW1hY3JvPyBsaWIgc3ltKVxyXG4gICAgICh0aHJvd1xyXG4gICAgICAoZXJyb3JcclxuICAgICAgIGVudlxyXG4gICAgICAgKGVycm9yLW1lc3NhZ2VcclxuICAgICAgICA6dW5kZWNsYXJlZC1ucy1mb3JtXHJcbiAgICAgICAgezp0eXBlIFwibWFjcm9cIiwgOmxpYiBsaWIsIDpzeW0gc3ltfSkpKSkpXHJcbiAgIChjaGVjay11c2VzIChtaXNzaW5nLXVzZS1tYWNyb3MgbWlzc2luZy11c2VzIGVudikgZW52KVxyXG4gICAoaW5mZXJyZWQtdXNlLW1hY3JvcyBtaXNzaW5nLXVzZXMgZW52KSkpKVxyXG4ifSB7OnN5bSBnZXQtZXhwYW5kZXIsIDptZXRhIHs6ZG9jICJHaXZlbiBhIHN5bSwgYSBzeW1ib2wgaWRlbnRpZnlpbmcgYSBtYWNybywgYW5kIGVudiwgYW4gYW5hbHlzaXMgZW52aXJvbm1lbnRcbiAgIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyBDbG9qdXJlIG1hY3JvZXhwYW5kZXIuIiwgOmFyZ2xpc3RzIChbc3ltIGVudl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGdldC1leHBhbmRlclxyXG4gXCJHaXZlbiBhIHN5bSwgYSBzeW1ib2wgaWRlbnRpZnlpbmcgYSBtYWNybywgYW5kIGVudiwgYW4gYW5hbHlzaXMgZW52aXJvbm1lbnRcXG4gICByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcgQ2xvanVyZSBtYWNyb2V4cGFuZGVyLlwiXHJcbiBbc3ltIGVudl1cclxuIChsZXRcclxuICBbbXZhciAoZ2V0LWV4cGFuZGVyKiBzeW0gZW52KV1cclxuICAod2hlblxyXG4gICAoYW5kIChzb21lPyBtdmFyKSAjPyg6Y2xqICguaXNNYWNybyBtdmFyKSA6Y2xqcyAoLmlzTWFjcm8gbXZhcikpKVxyXG4gICBtdmFyKSkpXHJcbiJ9IHs6c3ltIGFuYWx5emUtanMtc3RhciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYganNmb3JtIGFyZ3MgZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGFuYWx5emUtanMtc3RhclxyXG4gW2VudiBqc2Zvcm0gYXJncyBmb3JtXVxyXG4gKGRpc2FsbG93aW5nLXJlY3VyIChhbmFseXplLWpzLXN0YXIqIGVudiBqc2Zvcm0gYXJncyBmb3JtKSkpXHJcbiJ9IHs6c3ltIGpzLXN0YXItaW50ZXJwLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBzXSl9LCA6c291cmNlICIoZGVmblxyXG4ganMtc3Rhci1pbnRlcnBcclxuIFtlbnYgc11cclxuIChsZXRcclxuICBbaWR4ICguaW5kZXhPZiBzIFwifntcIildXHJcbiAgKGlmXHJcbiAgICg9PSAtMSBpZHgpXHJcbiAgIChsaXN0IHMpXHJcbiAgIChsZXRcclxuICAgIFtlbmRcclxuICAgICAoLmluZGV4T2YgcyBcIn1cIiBpZHgpXHJcbiAgICAgaW5uZXJcclxuICAgICAoOm5hbWVcclxuICAgICAgKHJlc29sdmUtZXhpc3RpbmctdmFyIGVudiAoc3ltYm9sIChzdWJzIHMgKCsgMiBpZHgpIGVuZCkpKSldXHJcbiAgICAobGF6eS1zZXFcclxuICAgICAoY29uc1xyXG4gICAgICAoc3VicyBzIDAgaWR4KVxyXG4gICAgICAoY29ucyBpbm5lciAoanMtc3Rhci1pbnRlcnAgZW52IChzdWJzIHMgKGluYyBlbmQpKSkpKSkpKSkpXHJcbiJ9IHs6c3ltICpyZWN1ci1mcmFtZXMqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqcmVjdXItZnJhbWVzKiBuaWwpXHJcbiJ9IHs6c3ltIGFuYWx5emUtZm4tbWV0aG9kcy1wYXNzMiosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbWVudiBsb2NhbHMgdHlwZSBtZXRoc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGFuYWx5emUtZm4tbWV0aG9kcy1wYXNzMipcclxuIFttZW52IGxvY2FscyB0eXBlIG1ldGhzXVxyXG4gKG1hcHZcclxuICAoZm4qXHJcbiAgIFtwMV9fNDEyMjIjXVxyXG4gICAoYW5hbHl6ZS1mbi1tZXRob2QgbWVudiBsb2NhbHMgcDFfXzQxMjIyIyB0eXBlIHRydWUpKVxyXG4gIG1ldGhzKSlcclxuIn0gezpzeW0gbWFjcm9leHBhbmQtMSwgOm1ldGEgezpkb2MgIkdpdmVuIGEgZW52LCBhbiBhbmFseXNpcyBlbnZpcm9ubWVudCwgYW5kIGZvcm0sIGEgQ2xvanVyZVNjcmlwdCBmb3JtLFxuICAgbWFjcm9leHBhbmQgdGhlIGZvcm0gb25jZS4iLCA6YXJnbGlzdHMgKFtlbnYgZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIG1hY3JvZXhwYW5kLTFcclxuIFwiR2l2ZW4gYSBlbnYsIGFuIGFuYWx5c2lzIGVudmlyb25tZW50LCBhbmQgZm9ybSwgYSBDbG9qdXJlU2NyaXB0IGZvcm0sXFxuICAgbWFjcm9leHBhbmQgdGhlIGZvcm0gb25jZS5cIlxyXG4gW2VudiBmb3JtXVxyXG4gKHdyYXBwaW5nLWVycm9ycyBlbnYgKG1hY3JvZXhwYW5kLTEqIGVudiBmb3JtKSkpXHJcbiJ9IHs6c3ltIHJlc29sdmUtbWFjcm8tdmFyLCA6bWV0YSB7OmRvYyAiR2l2ZW4gZW52LCBhbiBhbmFseXNpcyBlbnZpcm9ubWVudCwgYW5kIHN5bSwgYSBzeW1ib2wsIHJlc29sdmUgYSBtYWNyby4iLCA6YXJnbGlzdHMgKFtlbnYgc3ltXSl9LCA6c291cmNlICIoZGVmblxyXG4gcmVzb2x2ZS1tYWNyby12YXJcclxuIFwiR2l2ZW4gZW52LCBhbiBhbmFseXNpcyBlbnZpcm9ubWVudCwgYW5kIHN5bSwgYSBzeW1ib2wsIHJlc29sdmUgYSBtYWNyby5cIlxyXG4gW2VudiBzeW1dXHJcbiAobGV0XHJcbiAgW25zXHJcbiAgICgtPiBlbnYgOm5zIDpuYW1lKVxyXG4gICBuYW1lc3BhY2VzXHJcbiAgIChnZXQgQGVudi8qY29tcGlsZXIqIDpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXMpXVxyXG4gIChjb25kXHJcbiAgIChzb21lPyAobmFtZXNwYWNlIHN5bSkpXHJcbiAgIChsZXRcclxuICAgIFtuc1xyXG4gICAgIChuYW1lc3BhY2Ugc3ltKVxyXG4gICAgIG5zXHJcbiAgICAgKGlmICg9IFwiY2xvanVyZS5jb3JlXCIgbnMpIFwiY2xqcy5jb3JlXCIgbnMpXHJcbiAgICAgZnVsbC1uc1xyXG4gICAgIChyZXNvbHZlLW1hY3JvLW5zLWFsaWFzIGVudiBucylcclxuICAgICAjP0AoOmNsanMgW2Z1bGwtbnMgKGlmLW5vdCAoc3RyaW5nL2VuZHMtd2l0aD8gKHN0ciBmdWxsLW5zKSBcIiRtYWNyb3NcIikgKHN5bWJvbCAoc3RyIGZ1bGwtbnMgXCIkbWFjcm9zXCIpKSBmdWxsLW5zKV0pXVxyXG4gICAgIz8oOmNsaiAoZ2V0LWluIG5hbWVzcGFjZXMgW2Z1bGwtbnMgOm1hY3JvcyAoc3ltYm9sIChuYW1lIHN5bSkpXSkgOmNsanMgKGdldC1pbiBuYW1lc3BhY2VzIFtmdWxsLW5zIDpkZWZzIChzeW1ib2wgKG5hbWUgc3ltKSldKSkpXHJcbiAgIChzb21lPyAoZ2V0LWluIG5hbWVzcGFjZXMgW25zIDp1c2UtbWFjcm9zIHN5bV0pKVxyXG4gICAobGV0XHJcbiAgICBbZnVsbC1ucyAoZ2V0LWluIG5hbWVzcGFjZXMgW25zIDp1c2UtbWFjcm9zIHN5bV0pXVxyXG4gICAgKGdldC1pbiBuYW1lc3BhY2VzIFtmdWxsLW5zIDptYWNyb3Mgc3ltXSkpXHJcbiAgIChzb21lPyAoZ2V0LWluIG5hbWVzcGFjZXMgW25zIDpyZW5hbWUtbWFjcm9zIHN5bV0pKVxyXG4gICAobGV0XHJcbiAgICBbcXVhbGlmaWVkLXN5bWJvbFxyXG4gICAgIChnZXQtaW4gbmFtZXNwYWNlcyBbbnMgOnJlbmFtZS1tYWNyb3Mgc3ltXSlcclxuICAgICBmdWxsLW5zXHJcbiAgICAgKHN5bWJvbCAobmFtZXNwYWNlIHF1YWxpZmllZC1zeW1ib2wpKVxyXG4gICAgIHN5bVxyXG4gICAgIChzeW1ib2wgKG5hbWUgcXVhbGlmaWVkLXN5bWJvbCkpXVxyXG4gICAgKGdldC1pbiBuYW1lc3BhY2VzIFtmdWxsLW5zIDptYWNyb3Mgc3ltXSkpXHJcbiAgIDplbHNlXHJcbiAgIChsZXRcclxuICAgIFtuc1xyXG4gICAgIChjb25kXHJcbiAgICAgIChzb21lPyAoZ2V0LWluIG5hbWVzcGFjZXMgW25zIDptYWNyb3Mgc3ltXSkpXHJcbiAgICAgIG5zXHJcbiAgICAgIChjb3JlLW5hbWU/IGVudiBzeW0pXHJcbiAgICAgICM/KDpjbGogKHF1b3RlIGNsanMuY29yZSkgOmNsanMgQ0xKU19DT1JFX01BQ1JPU19TWU0pKV1cclxuICAgICh3aGVuXHJcbiAgICAgKHNvbWU/IG5zKVxyXG4gICAgICM/KDpjbGogKGdldC1pbiBuYW1lc3BhY2VzIFtucyA6bWFjcm9zIHN5bV0pIDpjbGpzIChnZXQtaW4gbmFtZXNwYWNlcyBbbnMgOmRlZnMgc3ltXSkpKSkpKSlcclxuIn0gezpzeW0gYW5hbHl6ZS1sZXQtYmluZGluZy1pbml0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBpbml0IGxvb3AtbGV0c10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGFuYWx5emUtbGV0LWJpbmRpbmctaW5pdFxyXG4gW2VudiBpbml0IGxvb3AtbGV0c11cclxuIChiaW5kaW5nIFsqbG9vcC1sZXRzKiBsb29wLWxldHNdIChhbmFseXplIGVudiBpbml0KSkpXHJcbiJ9IHs6c3ltIGluZmVyLXRhZywgOm1ldGEgezpkb2MgIkdpdmVuIGVudiwgYW4gYW5hbHlzaXMgZW52aXJvbm1lbnQsIGFuZCBlLCBhbiBBU1Qgbm9kZSwgcmV0dXJuIHRoZSBpbmZlcnJlZFxuICAgdHlwZSBvZiB0aGUgbm9kZSIsIDphcmdsaXN0cyAoW2VudiBlXSl9LCA6c291cmNlICIoZGVmblxyXG4gaW5mZXItdGFnXHJcbiBcIkdpdmVuIGVudiwgYW4gYW5hbHlzaXMgZW52aXJvbm1lbnQsIGFuZCBlLCBhbiBBU1Qgbm9kZSwgcmV0dXJuIHRoZSBpbmZlcnJlZFxcbiAgIHR5cGUgb2YgdGhlIG5vZGVcIlxyXG4gW2VudiBlXVxyXG4gKGlmLXNvbWVcclxuICBbdGFnIChnZXQtdGFnIGUpXVxyXG4gIHRhZ1xyXG4gIChjYXNlXHJcbiAgICg6b3AgZSlcclxuICAgOnJlY3VyXHJcbiAgIElHTk9SRV9TWU1cclxuICAgOnRocm93XHJcbiAgIElHTk9SRV9TWU1cclxuICAgOmxldFxyXG4gICAoaW5mZXItdGFnIGVudiAoOmJvZHkgZSkpXHJcbiAgIDpsb29wXHJcbiAgIChpbmZlci10YWcgZW52ICg6Ym9keSBlKSlcclxuICAgOmRvXHJcbiAgIChpbmZlci10YWcgZW52ICg6cmV0IGUpKVxyXG4gICA6Zm4tbWV0aG9kXHJcbiAgIChpbmZlci10YWcgZW52ICg6Ym9keSBlKSlcclxuICAgOmRlZlxyXG4gICAoaW5mZXItdGFnIGVudiAoOmluaXQgZSkpXHJcbiAgIDppbnZva2VcclxuICAgKGluZmVyLWludm9rZSBlbnYgZSlcclxuICAgOmlmXHJcbiAgIChpbmZlci1pZiBlbnYgZSlcclxuICAgOmNvbnN0XHJcbiAgIChjYXNlICg6Zm9ybSBlKSB0cnVlIEJPT0xFQU5fU1lNIGZhbHNlIEJPT0xFQU5fU1lNIEFOWV9TWU0pXHJcbiAgIDpxdW90ZVxyXG4gICAoaW5mZXItdGFnIGVudiAoOmV4cHIgZSkpXHJcbiAgICg6dmFyIDpsb2NhbCA6anMtdmFyIDpiaW5kaW5nKVxyXG4gICAoaWYtc29tZVxyXG4gICAgW2luaXQgKDppbml0IGUpXVxyXG4gICAgKGluZmVyLXRhZyBlbnYgaW5pdClcclxuICAgIChpbmZlci10YWcgZW52ICg6aW5mbyBlKSkpXHJcbiAgICg6aG9zdC1maWVsZCA6aG9zdC1jYWxsKVxyXG4gICBBTllfU1lNXHJcbiAgIDpqc1xyXG4gICBBTllfU1lNXHJcbiAgIG5pbCkpKVxyXG4ifSB7OnN5bSBjYW5vbmljYWxpemUtaW1wb3J0LXNwZWNzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NwZWNzXSl9LCA6c291cmNlICIoZGVmblxyXG4gY2Fub25pY2FsaXplLWltcG9ydC1zcGVjc1xyXG4gW3NwZWNzXVxyXG4gKGxldGZuXHJcbiAgWyhjYW5vbmljYWxpemVcclxuICAgIFtxdW90ZWQtc3BlYy1vci1rd11cclxuICAgIChpZlxyXG4gICAgIChrZXl3b3JkPyBxdW90ZWQtc3BlYy1vci1rdylcclxuICAgICBxdW90ZWQtc3BlYy1vci1rd1xyXG4gICAgIChzZWNvbmQgcXVvdGVkLXNwZWMtb3Ita3cpKSldXHJcbiAgKG1hcCBjYW5vbmljYWxpemUgc3BlY3MpKSlcclxuIn0gezpzeW0gYW5hbHl6ZS1mb3JtLXNlcSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1tmb3Jtc10gW2Zvcm1zIG9wdHNdIFtmb3JtcyBvcHRzIHJldHVybi1sYXN0P11dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGFuYWx5emUtZm9ybS1zZXFcclxuIChbZm9ybXNdXHJcbiAgKGFuYWx5emUtZm9ybS1zZXFcclxuICAgZm9ybXNcclxuICAgKHdoZW4gZW52Lypjb21waWxlciogKDpvcHRpb25zIEBlbnYvKmNvbXBpbGVyKikpKSlcclxuIChbZm9ybXMgb3B0c10gKGFuYWx5emUtZm9ybS1zZXEgZm9ybXMgb3B0cyBmYWxzZSkpXHJcbiAoW2Zvcm1zIG9wdHMgcmV0dXJuLWxhc3Q/XVxyXG4gIChsZXRcclxuICAgW2VudiAoYXNzb2MgKGVtcHR5LWVudikgOmJ1aWxkLW9wdGlvbnMgb3B0cyldXHJcbiAgIChiaW5kaW5nXHJcbiAgICBbKmZpbGUtZGVmcypcclxuICAgICBuaWxcclxuICAgICAjP0AoOmNsaiBbKnVuY2hlY2tlZC1pZiogZmFsc2UgKnVuY2hlY2tlZC1hcnJheXMqIGZhbHNlXSlcclxuICAgICAqY2xqcy1ucypcclxuICAgICAnY2xqcy51c2VyXHJcbiAgICAgKmNsanMtZmlsZSpcclxuICAgICBuaWxcclxuICAgICByZWFkZXIvKmFsaWFzLW1hcCpcclxuICAgICAob3IgcmVhZGVyLyphbGlhcy1tYXAqIHt9KV1cclxuICAgIChsb29wXHJcbiAgICAgW25zIG5pbCBmb3JtcyBmb3JtcyBsYXN0LWFzdCBuaWxdXHJcbiAgICAgKGlmXHJcbiAgICAgIChzb21lPyBmb3JtcylcclxuICAgICAgKGxldFxyXG4gICAgICAgW2Zvcm1cclxuICAgICAgICAoZmlyc3QgZm9ybXMpXHJcbiAgICAgICAgZW52XHJcbiAgICAgICAgKGFzc29jIGVudiA6bnMgKGdldC1uYW1lc3BhY2UgKmNsanMtbnMqKSlcclxuICAgICAgICBhc3RcclxuICAgICAgICAoYW5hbHl6ZSBlbnYgZm9ybSBuaWwgb3B0cyldXHJcbiAgICAgICAoaWZcclxuICAgICAgICAoPSAoOm9wIGFzdCkgOm5zKVxyXG4gICAgICAgIChyZWN1ciAoOm5hbWUgYXN0KSAobmV4dCBmb3JtcykgYXN0KVxyXG4gICAgICAgIChyZWN1ciBucyAobmV4dCBmb3JtcykgYXN0KSkpXHJcbiAgICAgIChpZiByZXR1cm4tbGFzdD8gbGFzdC1hc3QgbnMpKSkpKSkpXHJcbiJ9IHs6c3ltIGFuYWx5emUtbGV0LWJvZHkqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBjb250ZXh0IGV4cHJzXSl9LCA6c291cmNlICIoZGVmblxyXG4gYW5hbHl6ZS1sZXQtYm9keSpcclxuIFtlbnYgY29udGV4dCBleHByc11cclxuIChhbmFseXplXHJcbiAgKGFzc29jIGVudiA6Y29udGV4dCAoaWYgKD0gOmV4cHIgY29udGV4dCkgOnJldHVybiBjb250ZXh0KSlcclxuICAoY2xvanVyZS5jb3JlL3NlcXVlbmNlXHJcbiAgIChjbG9qdXJlLmNvcmUvc2VxXHJcbiAgICAoY2xvanVyZS5jb3JlL2NvbmNhdCAoY2xvanVyZS5jb3JlL2xpc3QgJ2RvKSBleHBycykpKSkpXHJcbiJ9IHs6c3ltIGFuYWx5emUtanMtc3RhciosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IGpzZm9ybSBhcmdzIGZvcm1dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBhbmFseXplLWpzLXN0YXIqXHJcbiBbZW52IGpzZm9ybSBhcmdzIGZvcm1dXHJcbiAobGV0XHJcbiAgW2VudmVcclxuICAgKGFzc29jIGVudiA6Y29udGV4dCA6ZXhwcilcclxuICAgZm9ybS1tZXRhXHJcbiAgIChtZXRhIGZvcm0pXHJcbiAgIHNlZ3NcclxuICAgKGpzLXN0YXItc2VnIGpzZm9ybSlcclxuICAgdGFnXHJcbiAgIChnZXQtanMtdGFnIGZvcm0pXHJcbiAgIGpzLW9wXHJcbiAgICg6anMtb3AgZm9ybS1tZXRhKVxyXG4gICBhcmdleHByc1xyXG4gICAoYW5hbHl6ZS1qcy1zdGFyLWFyZ3MganMtb3AgZW52ZSBhcmdzKVxyXG4gICBudW1lcmljXHJcbiAgICg6bnVtZXJpYyBmb3JtLW1ldGEpXHJcbiAgIHZhbGlkYXRlXHJcbiAgIChmblxyXG4gICAgW3dhcm5pbmctdHlwZSB2YWxpZC10eXBlcz9dXHJcbiAgICAobGV0XHJcbiAgICAgW3R5cGVzXHJcbiAgICAgIChtYXAgKGZuKiBbcDFfXzQxMjQ3I10gKGluZmVyLXRhZyBlbnYgcDFfXzQxMjQ3IykpIGFyZ2V4cHJzKV1cclxuICAgICAod2hlbi1ub3RcclxuICAgICAgKHZhbGlkLXR5cGVzPyB0eXBlcylcclxuICAgICAgKHdhcm5pbmdcclxuICAgICAgIHdhcm5pbmctdHlwZVxyXG4gICAgICAgZW52XHJcbiAgICAgICB7OmpzLW9wIGpzLW9wLCA6dHlwZXMgKGludG8gW10gdHlwZXMpfSkpKSlcclxuICAgb3AtbWF0Y2g/XHJcbiAgIChmblxyXG4gICAgW3N5bV1cclxuICAgICM/KDpjbGogKD0gc3ltICg6anMtb3AgZm9ybS1tZXRhKSkgOmNsanMgKHN5bWJvbC1pZGVudGljYWw/IHN5bSAoOmpzLW9wIGZvcm0tbWV0YSkpKSldXHJcbiAgKHdoZW5cclxuICAgKHRydWU/IG51bWVyaWMpXHJcbiAgICh2YWxpZGF0ZVxyXG4gICAgOmludmFsaWQtYXJpdGhtZXRpY1xyXG4gICAgKGZuKiBbcDFfXzQxMjQ4I10gKGV2ZXJ5PyBudW1lcmljLXR5cGU/IHAxX180MTI0OCMpKSkpXHJcbiAgezphcmdzIGFyZ2V4cHJzLFxyXG4gICA6Y2hpbGRyZW4gWzphcmdzXSxcclxuICAgOm51bWVyaWMgbnVtZXJpYyxcclxuICAgOnNlZ3Mgc2VncyxcclxuICAgOm9wIDpqcyxcclxuICAgOmVudiBlbnYsXHJcbiAgIDpqcy1vcCBqcy1vcCxcclxuICAgOmZvcm0gZm9ybSxcclxuICAgOnRhZyB0YWd9KSlcclxuIn0gezpzeW0gaW5mZXJyZWQtcmVuYW1lLW1hY3JvcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZW5hbWUtbWFjcm9zIGVudl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGluZmVycmVkLXJlbmFtZS1tYWNyb3NcclxuIFtyZW5hbWUtbWFjcm9zIGVudl1cclxuIChpbnRvXHJcbiAge31cclxuICAoZmlsdGVyXHJcbiAgIChmbiBbW18gcXVhbGlmaWVkLXN5bV1dIChub3QgKG1pc3NpbmctcmVuYW1lLW1hY3JvPyBxdWFsaWZpZWQtc3ltKSkpXHJcbiAgIHJlbmFtZS1tYWNyb3MpKSlcclxuIn0gezpzeW0gcGFyc2UtbnMtZXJyb3ItbXNnLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NwZWMgbXNnXSl9LCA6c291cmNlICIoZGVmblxyXG4gcGFyc2UtbnMtZXJyb3ItbXNnXHJcbiBbc3BlYyBtc2ddXHJcbiAoc3RyIG1zZyBcIjsgb2ZmZW5kaW5nIHNwZWM6IFwiIChwci1zdHIgc3BlYykpKVxyXG4ifSB7OnN5bSBtaXNzaW5nLXVzZS1tYWNybz8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbGliIHN5bV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIG1pc3NpbmctdXNlLW1hY3JvP1xyXG4gW2xpYiBzeW1dXHJcbiAod2hlblxyXG4gIChzeW1ib2w/IGxpYilcclxuICAobGV0XHJcbiAgIFt0aGUtbnMgIz8oOmNsaiAoZmluZC1ucyBsaWIpIDpjbGpzIChmaW5kLW1hY3Jvcy1ucyBsaWIpKV1cclxuICAgKG9yIChuaWw/IHRoZS1ucykgKG5pbD8gKC5maW5kSW50ZXJuZWRWYXIgdGhlLW5zIHN5bSkpKSkpKVxyXG4ifSB7OnN5bSByZWNvcmQtbnMrbmFtZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxyXG4gcmVjb3JkLW5zK25hbWVcclxuIFt4XVxyXG4gKG1hcFxyXG4gIHN5bWJvbFxyXG4gICM/KDpjbGogKChqdXh0IChjb21wIChmbiogW3AxX180MTI1OSNdIChzdHJpbmcvam9pbiBcIi5cIiBwMV9fNDEyNTkjKSkgYnV0bGFzdCkgbGFzdCkgKHN0cmluZy9zcGxpdCAoLmdldE5hbWUgKHR5cGUgeCkpICNcIlxcLlwiKSkgOmNsanMgKHN0cmluZy9zcGxpdCAocHItc3RyICh0eXBlIHgpKSAjXCIvXCIpKSkpXHJcbiJ9IHs6c3ltIGFuYWx5emVkLCA6bWV0YSB7OmRvYyAiTWFyayBhIGZvcm0gYXMgYmVpbmcgYW5hbHl6ZWQuIEFzc3VtZXMgeCBzYXRpc2ZpZXMgSU1ldGEuIFVzZWZ1bCB0byBzdXBwcmVzc1xuICB3YXJuaW5ncyB0aGF0IHdpbGwgaGF2ZSBiZWVuIGNhdWdodCBieSBhIGZpcnN0IGNvbXBpbGVyIHBhc3MuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGFuYWx5emVkXHJcbiBcIk1hcmsgYSBmb3JtIGFzIGJlaW5nIGFuYWx5emVkLiBBc3N1bWVzIHggc2F0aXNmaWVzIElNZXRhLiBVc2VmdWwgdG8gc3VwcHJlc3NcXG4gIHdhcm5pbmdzIHRoYXQgd2lsbCBoYXZlIGJlZW4gY2F1Z2h0IGJ5IGEgZmlyc3QgY29tcGlsZXIgcGFzcy5cIlxyXG4gW3hdXHJcbiAoY29uZFxyXG4gICh1bnNvcnRlZC1tYXA/IHgpXHJcbiAgKGFzc29jIHggOmNsanMuYW5hbHl6ZXIvYW5hbHl6ZWQgdHJ1ZSlcclxuICA6ZWxzZVxyXG4gICh2YXJ5LW1ldGEgeCBhc3NvYyA6Y2xqcy5hbmFseXplci9hbmFseXplZCB0cnVlKSkpXHJcbiJ9IHs6c3ltIHJlc29sdmUtc3ltYm9sLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N5bV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlc29sdmUtc3ltYm9sXHJcbiBbc3ltXVxyXG4gKGlmXHJcbiAgKGFuZCAobm90IChuYW1lc3BhY2Ugc3ltKSkgKGRvdHRlZC1zeW1ib2w/IHN5bSkpXHJcbiAgc3ltXHJcbiAgKDpuYW1lXHJcbiAgIChiaW5kaW5nXHJcbiAgICBbKnByaXZhdGUtdmFyLWFjY2Vzcy1ub3dhcm4qIHRydWVdXHJcbiAgICAocmVzb2x2ZS12YXJcclxuICAgICAoYXNzb2MgQGVudi8qY29tcGlsZXIqIDpucyAoZ2V0LW5hbWVzcGFjZSAqY2xqcy1ucyopKVxyXG4gICAgIHN5bSkpKSkpXHJcbiJ9IHs6c3ltIG1pc3NpbmctcmVuYW1lcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZW5hbWVzIGVudl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIG1pc3NpbmctcmVuYW1lc1xyXG4gW3JlbmFtZXMgZW52XVxyXG4gKGxldFxyXG4gIFtjZW52IEBlbnYvKmNvbXBpbGVyKl1cclxuICAoaW50b1xyXG4gICB7fVxyXG4gICAoZmlsdGVyXHJcbiAgICAoZm4gW1tfIHF1YWxpZmllZC1zeW1dXSAobWlzc2luZy1yZW5hbWU/IHF1YWxpZmllZC1zeW0gY2VudikpXHJcbiAgICByZW5hbWVzKSkpKVxyXG4ifSB7OnN5bSBkZWZhdWx0LXBhc3NlcywgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcclxuIGRlZmF1bHQtcGFzc2VzXHJcbiAjPyg6Y2xqIFtpbmZlci10eXBlIGNoZWNrLWludm9rZS1hcmctdHlwZXMgbnMtc2lkZS1lZmZlY3RzXSA6Y2xqcyBbaW5mZXItdHlwZSBjaGVjay1pbnZva2UtYXJnLXR5cGVzXSkpXHJcbiJ9IHs6c3ltICpjbGpzLW1hY3Jvcy1wYXRoKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmNsanMtbWFjcm9zLXBhdGgqIFwiL2NsanMvY29yZVwiKVxyXG4ifSB7OnN5bSBjb25maXJtLXZhci1leGlzdC13YXJuaW5nLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBwcmVmaXggc3VmZml4XSl9LCA6c291cmNlICIoZGVmblxyXG4gY29uZmlybS12YXItZXhpc3Qtd2FybmluZ1xyXG4gW2VudiBwcmVmaXggc3VmZml4XVxyXG4gKGZuXHJcbiAgW2VudiBwcmVmaXggc3VmZml4XVxyXG4gICh3YXJuaW5nXHJcbiAgIDp1bmRlY2xhcmVkLXZhclxyXG4gICBlbnZcclxuICAgezpwcmVmaXggcHJlZml4LFxyXG4gICAgOnN1ZmZpeCBzdWZmaXgsXHJcbiAgICA6bWFjcm8tcHJlc2VudD9cclxuICAgIChub3RcclxuICAgICAobmlsPyAoZ2V0LWV4cGFuZGVyIChzeW1ib2wgKHN0ciBwcmVmaXgpIChzdHIgc3VmZml4KSkgZW52KSkpfSkpKVxyXG4ifSB7OnN5bSB1bmNoZWNrZWQtYXJyYXlzPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuIHVuY2hlY2tlZC1hcnJheXM/IFtdICp1bmNoZWNrZWQtYXJyYXlzKilcclxuIn0gezpzeW0gYW5hbHl6ZS1kb3QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IHRhcmdldCBmaWVsZCBtZW1iZXIrIGZvcm1dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBhbmFseXplLWRvdFxyXG4gW2VudiB0YXJnZXQgZmllbGQgbWVtYmVyKyBmb3JtXVxyXG4gKGxldFxyXG4gIFt2XHJcbiAgIFt0YXJnZXQgZmllbGQgbWVtYmVyK11cclxuICAgezprZXlzIFtkb3QtYWN0aW9uIHRhcmdldCBtZXRob2QgZmllbGQgYXJnc119XHJcbiAgIChidWlsZC1kb3QtZm9ybSB2KVxyXG4gICBlbnZlXHJcbiAgIChhc3NvYyBlbnYgOmNvbnRleHQgOmV4cHIpXHJcbiAgIHRhcmdldGV4cHJcclxuICAgKGFuYWx5emUgZW52ZSB0YXJnZXQpXHJcbiAgIGZvcm0tbWV0YVxyXG4gICAobWV0YSBmb3JtKVxyXG4gICB0YXJnZXQtdGFnXHJcbiAgICg6dGFnIHRhcmdldGV4cHIpXHJcbiAgIHByb3BcclxuICAgKG9yIGZpZWxkIG1ldGhvZClcclxuICAgdGFnXHJcbiAgIChvclxyXG4gICAgKDp0YWcgZm9ybS1tZXRhKVxyXG4gICAgKGFuZFxyXG4gICAgIChqcy10YWc/IHRhcmdldC10YWcpXHJcbiAgICAgKHZhcnktbWV0YVxyXG4gICAgICAobm9ybWFsaXplLWpzLXRhZyB0YXJnZXQtdGFnKVxyXG4gICAgICB1cGRhdGUtaW5cclxuICAgICAgWzpwcmVmaXhdXHJcbiAgICAgIChmbmlsIGNvbmogJ1tPYmplY3RdKVxyXG4gICAgICBwcm9wKSlcclxuICAgIG5pbCldXHJcbiAgKHdoZW5cclxuICAgKGFuZFxyXG4gICAgKG5vdD0gJ2NvbnN0cnVjdG9yIHByb3ApXHJcbiAgICAobm90IChzdHJpbmcvc3RhcnRzLXdpdGg/IChzdHIgcHJvcCkgXCJjbGpzJFwiKSlcclxuICAgIChub3QgKC0+IHByb3AgbWV0YSA6cHJvdG9jb2wtbWV0aG9kKSkpXHJcbiAgICh3aGVuXHJcbiAgICAoPSAnT2JqZWN0IChmaXJzdCAoLT4gdGFnIG1ldGEgOnByZWZpeCkpKVxyXG4gICAgKHdhcm5pbmdcclxuICAgICA6aW5mZXItd2FybmluZ1xyXG4gICAgIGVudlxyXG4gICAgIHs6d2Fybi10eXBlIDpvYmplY3QsIDpmb3JtIGZvcm0sIDpwcm9wZXJ0eSBwcm9wfSkpXHJcbiAgICh3aGVuXHJcbiAgICAobm90PSAnanMgdGFyZ2V0LXRhZylcclxuICAgICh3aGVuXHJcbiAgICAgKG9yIChuaWw/IHRhcmdldC10YWcpICgnI3thbnl9IHRhcmdldC10YWcpKVxyXG4gICAgICh3YXJuaW5nXHJcbiAgICAgIDppbmZlci13YXJuaW5nXHJcbiAgICAgIGVudlxyXG4gICAgICB7Ondhcm4tdHlwZSA6dGFyZ2V0LCA6Zm9ybSBmb3JtLCA6cHJvcGVydHkgcHJvcH0pKVxyXG4gICAgKGxldFxyXG4gICAgIFtbcHJlJyBwcmVdICgoanV4dCBidXRsYXN0IGlkZW50aXR5KSAoLT4gdGFnIG1ldGEgOnByZWZpeCkpXVxyXG4gICAgICh3aGVuXHJcbiAgICAgIChhbmQgKGhhcy1leHRlcm4/IHByZScpIChub3QgKGhhcy1leHRlcm4/IHByZSkpKVxyXG4gICAgICAod2FybmluZ1xyXG4gICAgICAgOmluZmVyLXdhcm5pbmdcclxuICAgICAgIGVudlxyXG4gICAgICAgezp3YXJuLXR5cGUgOnByb3BlcnR5LFxyXG4gICAgICAgIDpmb3JtIGZvcm0sXHJcbiAgICAgICAgOnR5cGVcclxuICAgICAgICAoc3ltYm9sXHJcbiAgICAgICAgIFwianNcIlxyXG4gICAgICAgICAoc3RyaW5nL2pvaW5cclxuICAgICAgICAgIFwiLlwiXHJcbiAgICAgICAgICAoY29uZC0+IHByZScgKD0gJ3Byb3RvdHlwZSAobGFzdCBwcmUnKSkgYnV0bGFzdCkpKSxcclxuICAgICAgICA6cHJvcGVydHkgcHJvcH0pKSkpKVxyXG4gICh3aGVuXHJcbiAgIChqcy10YWc/IHRhZylcclxuICAgKGxldFxyXG4gICAgW3ByZSAoLT4gdGFnIG1ldGEgOnByZWZpeCldXHJcbiAgICAod2hlbi1ub3RcclxuICAgICAoaGFzLWV4dGVybj8gcHJlKVxyXG4gICAgIChzd2FwIVxyXG4gICAgICBlbnYvKmNvbXBpbGVyKlxyXG4gICAgICB1cGRhdGUtaW5cclxuICAgICAgKGludG9cclxuICAgICAgIFs6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzICgtPiBlbnYgOm5zIDpuYW1lKSA6ZXh0ZXJuc11cclxuICAgICAgIHByZSlcclxuICAgICAgbWVyZ2VcclxuICAgICAge30pKSkpXHJcbiAgKGNhc2VcclxuICAgZG90LWFjdGlvblxyXG4gICA6Y2xqcy5hbmFseXplci9hY2Nlc3NcclxuICAgKGxldFxyXG4gICAgW2NoaWxkcmVuIFs6dGFyZ2V0XV1cclxuICAgIHs6b3AgOmhvc3QtZmllbGQsXHJcbiAgICAgOmVudiBlbnYsXHJcbiAgICAgOmZvcm0gZm9ybSxcclxuICAgICA6dGFyZ2V0IHRhcmdldGV4cHIsXHJcbiAgICAgOmZpZWxkIGZpZWxkLFxyXG4gICAgIDpjaGlsZHJlbiBjaGlsZHJlbixcclxuICAgICA6dGFnXHJcbiAgICAgKGlmXHJcbiAgICAgIChqcy10YWc/IHRhZylcclxuICAgICAgKG9yIChqcy10YWcgKC0+IHRhZyBtZXRhIDpwcmVmaXgpIDp0YWcpIHRhZylcclxuICAgICAgdGFnKX0pXHJcbiAgIDpjbGpzLmFuYWx5emVyL2NhbGxcclxuICAgKGxldFxyXG4gICAgW2FyZ2V4cHJzXHJcbiAgICAgKG1hcHYgKGZuKiBbcDFfXzQxMjQ2I10gKGFuYWx5emUgZW52ZSBwMV9fNDEyNDYjKSkgYXJncylcclxuICAgICBjaGlsZHJlblxyXG4gICAgIFs6dGFyZ2V0IDphcmdzXV1cclxuICAgIHs6b3AgOmhvc3QtY2FsbCxcclxuICAgICA6ZW52IGVudixcclxuICAgICA6Zm9ybSBmb3JtLFxyXG4gICAgIDp0YXJnZXQgdGFyZ2V0ZXhwcixcclxuICAgICA6bWV0aG9kIG1ldGhvZCxcclxuICAgICA6YXJncyBhcmdleHBycyxcclxuICAgICA6Y2hpbGRyZW4gY2hpbGRyZW4sXHJcbiAgICAgOnRhZ1xyXG4gICAgIChpZlxyXG4gICAgICAoanMtdGFnPyB0YWcpXHJcbiAgICAgIChvciAoanMtdGFnICgtPiB0YWcgbWV0YSA6cHJlZml4KSA6cmV0LXRhZykgJ2pzKVxyXG4gICAgICB0YWcpfSkpKSlcclxuIn0gezpzeW0gYW5hbHl6ZS1kby1zdGF0ZW1lbnRzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBleHByc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGFuYWx5emUtZG8tc3RhdGVtZW50c1xyXG4gW2VudiBleHByc11cclxuIChkaXNhbGxvd2luZy1yZWN1ciAoYW5hbHl6ZS1kby1zdGF0ZW1lbnRzKiBlbnYgZXhwcnMpKSlcclxuIn0gezpzeW0gZ2V0LWxpbmUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeCBlbnZdKX0sIDpzb3VyY2UgIihkZWZuIGdldC1saW5lIFt4IGVudl0gKG9yICgtPiB4IG1ldGEgOmxpbmUpICg6bGluZSBlbnYpKSlcclxuIn0gezpzeW0gYW5hbHl6ZS1kby1zdGF0ZW1lbnRzKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgZXhwcnNdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBhbmFseXplLWRvLXN0YXRlbWVudHMqXHJcbiBbZW52IGV4cHJzXVxyXG4gKG1hcHZcclxuICAoZm4qXHJcbiAgIFtwMV9fNDEyMjQjXVxyXG4gICAoYW5hbHl6ZSAoYXNzb2MgZW52IDpjb250ZXh0IDpzdGF0ZW1lbnQpIHAxX180MTIyNCMpKVxyXG4gIChidXRsYXN0IGV4cHJzKSkpXHJcbiJ9IHs6c3ltIGFuYWx5emUtc2VxLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW2VudiBmb3JtIG5hbWVdIFtlbnYgZm9ybSBuYW1lIG9wdHNdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBhbmFseXplLXNlcVxyXG4gKFtlbnYgZm9ybSBuYW1lXVxyXG4gIChhbmFseXplLXNlcVxyXG4gICBlbnZcclxuICAgZm9ybVxyXG4gICBuYW1lXHJcbiAgICh3aGVuIGVudi8qY29tcGlsZXIqICg6b3B0aW9ucyBAZW52Lypjb21waWxlciopKSkpXHJcbiAoW2VudiBmb3JtIG5hbWUgb3B0c11cclxuICAoaWZcclxuICAgKDpxdW90ZWQ/IGVudilcclxuICAgKGFuYWx5emUtbGlzdCBlbnYgZm9ybSlcclxuICAgKGxldFxyXG4gICAgW2xpbmVcclxuICAgICAoLT4gZm9ybSBtZXRhIDpsaW5lKVxyXG4gICAgIGxpbmVcclxuICAgICAoaWYgKG5pbD8gbGluZSkgKDpsaW5lIGVudikgbGluZSlcclxuICAgICBjb2xcclxuICAgICAoLT4gZm9ybSBtZXRhIDpjb2x1bW4pXHJcbiAgICAgY29sXHJcbiAgICAgKGlmIChuaWw/IGNvbCkgKDpjb2x1bW4gZW52KSBjb2wpXHJcbiAgICAgZW52XHJcbiAgICAgKGFzc29jIGVudiA6bGluZSBsaW5lIDpjb2x1bW4gY29sKV1cclxuICAgIChsZXRcclxuICAgICBbb3AgKGZpcnN0IGZvcm0pXVxyXG4gICAgICh3aGVuIChuaWw/IG9wKSAodGhyb3cgKGVycm9yIGVudiBcIkNhbid0IGNhbGwgbmlsXCIpKSlcclxuICAgICAobGV0XHJcbiAgICAgIFttZm9ybSAobWFjcm9leHBhbmQtMSBlbnYgZm9ybSldXHJcbiAgICAgIChpZlxyXG4gICAgICAgKGlkZW50aWNhbD8gZm9ybSBtZm9ybSlcclxuICAgICAgIChhbmFseXplLXNlcSotd3JhcCBvcCBlbnYgZm9ybSBuYW1lIG9wdHMpXHJcbiAgICAgICAoYW5hbHl6ZSBlbnYgbWZvcm0gbmFtZSBvcHRzKSkpKSkpKSlcclxuIn0gezpzeW0gZGVzdWdhci1kb3R0ZWQtZXhwciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt7OmtleXMgW29wXSwgOmFzIGV4cHJ9XSl9LCA6c291cmNlICIoZGVmblxyXG4gZGVzdWdhci1kb3R0ZWQtZXhwclxyXG4gW3s6a2V5cyBbb3BdLCA6YXMgZXhwcn1dXHJcbiAoY2FzZVxyXG4gIG9wXHJcbiAgKDp2YXIgOmxvY2FsKVxyXG4gIChpZlxyXG4gICAoZG90dGVkLXN5bWJvbD8gKHN5bWJvbCAobmFtZSAoOm5hbWUgZXhwcikpKSlcclxuICAgKGxldFxyXG4gICAgW3NcclxuICAgICAobmFtZSAoOm5hbWUgZXhwcikpXHJcbiAgICAgaWR4XHJcbiAgICAgKC5sYXN0SW5kZXhPZiBzIFwiLlwiKVxyXG4gICAgIF9cclxuICAgICAoYXNzZXJ0IChub3Q9IChpbmMgaWR4KSAoY291bnQgcykpKVxyXG4gICAgIHByZWZpeFxyXG4gICAgICh3aXRoLW1ldGFcclxuICAgICAgKHN5bWJvbCAobmFtZXNwYWNlICg6bmFtZSBleHByKSkgKHN1YnMgcyAwIGlkeCkpXHJcbiAgICAgIChtZXRhICg6Zm9ybSBleHByKSkpXHJcbiAgICAgZmllbGRcclxuICAgICAoc3ltYm9sIChzdWJzIHMgKGluYyBpZHgpKSldXHJcbiAgICAoYXNzZXJ0IChub3QgKDpjb25zdC1leHByIGV4cHIpKSlcclxuICAgIHs6b3AgOmhvc3QtZmllbGQsXHJcbiAgICAgOmVudiAoOmVudiBleHByKSxcclxuICAgICA6Zm9ybSAobGlzdCAnLiBwcmVmaXggZmllbGQpLFxyXG4gICAgIDp0YXJnZXRcclxuICAgICAoZGVzdWdhci1kb3R0ZWQtZXhwclxyXG4gICAgICAoLT5cclxuICAgICAgIGV4cHJcclxuICAgICAgIChhc3NvYyA6bmFtZSBwcmVmaXggOmZvcm0gcHJlZml4KVxyXG4gICAgICAgKGRpc3NvYyA6dGFnKVxyXG4gICAgICAgKGFzc29jLWluIFs6aW5mbyA6bmFtZV0gcHJlZml4KVxyXG4gICAgICAgKGFzc29jLWluIFs6ZW52IDpjb250ZXh0XSA6ZXhwcikpKSxcclxuICAgICA6ZmllbGQgZmllbGQsXHJcbiAgICAgOnRhZyAoOnRhZyBleHByKSxcclxuICAgICA6Y2hpbGRyZW4gWzp0YXJnZXRdfSlcclxuICAgZXhwcilcclxuICBleHByKSlcclxuIn0gezpzeW0gZmluZC1kZWYtY2xhc2gsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IG5zIHNlZ21lbnRzXSl9LCA6c291cmNlICIoZGVmblxyXG4gZmluZC1kZWYtY2xhc2hcclxuIFtlbnYgbnMgc2VnbWVudHNdXHJcbiAobGV0XHJcbiAgW3RvLWNoZWNrXHJcbiAgIChtYXBcclxuICAgIChmblxyXG4gICAgIFt4c11cclxuICAgICBbKHN5bWJvbCAoc3RyaW5nL2pvaW4gXCIuXCIgKGJ1dGxhc3QgeHMpKSkgKHN5bWJvbCAobGFzdCB4cykpXSlcclxuICAgIChkcm9wIDIgKHJlZHVjdGlvbnMgY29uaiBbXSBzZWdtZW50cykpKV1cclxuICAoZG9zZXFcclxuICAgW1tjbGFzaC1ucyBuYW1lXSB0by1jaGVja11cclxuICAgKHdoZW5cclxuICAgIChnZXQtaW5cclxuICAgICBAZW52Lypjb21waWxlcipcclxuICAgICBbOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyBjbGFzaC1ucyA6ZGVmcyBuYW1lXSlcclxuICAgICh3YXJuaW5nXHJcbiAgICAgOm5zLXZhci1jbGFzaFxyXG4gICAgIGVudlxyXG4gICAgIHs6bnMgbnMsIDp2YXIgKHN5bWJvbCAoc3RyIGNsYXNoLW5zKSAoc3RyIG5hbWUpKX0pKSkpKVxyXG4ifSB7OnN5bSBoYXMtZXJyb3ItZGF0YT8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZXhdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBoYXMtZXJyb3ItZGF0YT9cclxuICM/KDpjbGpzIHs6dGFnIGJvb2xlYW59KVxyXG4gW2V4XVxyXG4gKGNvbnRhaW5zPyAoZXgtZGF0YSBleCkgOmNsb2p1cmUuZXJyb3IvcGhhc2UpKVxyXG4ifSB7OnN5bSBmbi1uYW1lLXZhciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgbG9jYWxzIG5hbWVdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBmbi1uYW1lLXZhclxyXG4gW2VudiBsb2NhbHMgbmFtZV1cclxuICh3aGVuXHJcbiAgKHNvbWU/IG5hbWUpXHJcbiAgKGxldFxyXG4gICBbbnNcclxuICAgICgtPiBlbnYgOm5zIDpuYW1lKVxyXG4gICAgc2hhZG93XHJcbiAgICAoaGFuZGxlLXN5bWJvbC1sb2NhbCBuYW1lIChnZXQgbG9jYWxzIG5hbWUpKVxyXG4gICAgc2hhZG93XHJcbiAgICAod2hlbiAobmlsPyBzaGFkb3cpIChnZXQtaW4gZW52IFs6anMtZ2xvYmFscyBuYW1lXSkpXHJcbiAgICBmbi1zY29wZVxyXG4gICAgKDpmbi1zY29wZSBlbnYpXHJcbiAgICBuYW1lLXZhclxyXG4gICAgezpuYW1lIG5hbWUsXHJcbiAgICAgOm9wIDpiaW5kaW5nLFxyXG4gICAgIDpsb2NhbCA6Zm4sXHJcbiAgICAgOmluZm9cclxuICAgICB7OmZuLXNlbGYtbmFtZSB0cnVlLCA6Zm4tc2NvcGUgZm4tc2NvcGUsIDpucyBucywgOnNoYWRvdyBzaGFkb3d9fVxyXG4gICAgdGFnXHJcbiAgICAoLT4gbmFtZSBtZXRhIDp0YWcpXHJcbiAgICByZXQtdGFnXHJcbiAgICAod2hlbiAoc29tZT8gdGFnKSB7OnJldC10YWcgdGFnfSldXHJcbiAgIChtZXJnZSBuYW1lLXZhciByZXQtdGFnKSkpKVxyXG4ifSB7OnN5bSBtdW5nZS1ub2RlLWxpYiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtuYW1lXSl9LCA6c291cmNlICIoZGVmblxyXG4gbXVuZ2Utbm9kZS1saWJcclxuIFtuYW1lXVxyXG4gKHN0clxyXG4gIFwibm9kZSRtb2R1bGUkXCJcclxuICAobXVuZ2VcclxuICAgKHN0cmluZy9yZXBsYWNlIChzdHIgbmFtZSkgI1wiWy5cXC9dXCIgIz8oOmNsaiBcIlxcXFwkXCIgOmNsanMgXCIkJFwiKSkpKSlcclxuIn0gezpzeW0gKmxvYWQtbWFjcm9zKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmxvYWQtbWFjcm9zKiB0cnVlKVxyXG4ifSB7OnN5bSBhZGQtdHlwZXMsIDptZXRhIHs6ZG9jICJQcm9kdWNlcyBhIHVuaW9uIG9mIHR5cGVzLiIsIDphcmdsaXN0cyBbW10gW3QxXSBbdDEgdDJdIFt0MSB0MiAmIHRzXV19LCA6c291cmNlICIoZGVmblxyXG4gYWRkLXR5cGVzXHJcbiBcIlByb2R1Y2VzIGEgdW5pb24gb2YgdHlwZXMuXCJcclxuIChbXSAnYW55KVxyXG4gKFt0MV0gdDEpXHJcbiAoW3QxIHQyXVxyXG4gIChpZlxyXG4gICAob3IgKG5pbD8gdDEpIChuaWw/IHQyKSlcclxuICAgJ2FueVxyXG4gICAoLT4gKHNldC91bmlvbiAoLT50eXBlLXNldCB0MSkgKC0+dHlwZS1zZXQgdDIpKSBjYW5vbmljYWxpemUtdHlwZSkpKVxyXG4gKFt0MSB0MiAmIHRzXSAoYXBwbHkgYWRkLXR5cGVzIChhZGQtdHlwZXMgdDEgdDIpIHRzKSkpXHJcbiJ9IHs6c3ltIGV4Y2x1ZGVkPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgc3ltXSl9LCA6c291cmNlICIoZGVmblxyXG4gZXhjbHVkZWQ/XHJcbiAjPyg6Y2xqcyB7OnRhZyBib29sZWFufSlcclxuIFtlbnYgc3ltXVxyXG4gKG9yXHJcbiAgKHNvbWU/IChnZXRzIGVudiA6bnMgOmV4Y2x1ZGVzIHN5bSkpXHJcbiAgKHNvbWU/XHJcbiAgIChnZXRzXHJcbiAgICBAZW52Lypjb21waWxlcipcclxuICAgIDpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXNcclxuICAgIChnZXRzIGVudiA6bnMgOm5hbWUpXHJcbiAgICA6ZXhjbHVkZXNcclxuICAgIHN5bSkpKSlcclxuIn0gezpzeW0gZW1wdHktZW52LCA6bWV0YSB7OmRvYyAiQ29uc3RydWN0IGFuIGVtcHR5IGFuYWx5c2lzIGVudmlyb25tZW50LiBSZXF1aXJlZCB0byBhbmFseXplIGZvcm1zLiIsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGVtcHR5LWVudlxyXG4gXCJDb25zdHJ1Y3QgYW4gZW1wdHkgYW5hbHlzaXMgZW52aXJvbm1lbnQuIFJlcXVpcmVkIHRvIGFuYWx5emUgZm9ybXMuXCJcclxuIFtdXHJcbiAoZW5zdXJlXHJcbiAgezpucyAoZ2V0LW5hbWVzcGFjZSAqY2xqcy1ucyopLFxyXG4gICA6Y29udGV4dCA6c3RhdGVtZW50LFxyXG4gICA6bG9jYWxzIHt9LFxyXG4gICA6Zm4tc2NvcGUgW10sXHJcbiAgIDpqcy1nbG9iYWxzXHJcbiAgIChpbnRvXHJcbiAgICB7fVxyXG4gICAgKG1hcFxyXG4gICAgIChmbipcclxuICAgICAgW3AxX180MTIwOSNdXHJcbiAgICAgICh2ZWN0b3IgcDFfXzQxMjA5IyB7Om9wIDpqcy12YXIsIDpuYW1lIHAxX180MTIwOSMsIDpucyAnanN9KSlcclxuICAgICAnKGFsZXJ0XHJcbiAgICAgICB3aW5kb3dcclxuICAgICAgIGRvY3VtZW50XHJcbiAgICAgICBjb25zb2xlXHJcbiAgICAgICBlc2NhcGVcclxuICAgICAgIHVuZXNjYXBlXHJcbiAgICAgICBzY3JlZW5cclxuICAgICAgIGxvY2F0aW9uXHJcbiAgICAgICBuYXZpZ2F0b3JcclxuICAgICAgIGhpc3RvcnlcclxuICAgICAgIGxvY2F0aW9uXHJcbiAgICAgICBnbG9iYWxcclxuICAgICAgIHByb2Nlc3NcclxuICAgICAgIHJlcXVpcmVcclxuICAgICAgIG1vZHVsZVxyXG4gICAgICAgZXhwb3J0cykpKX0pKVxyXG4ifSB7OnN5bSBwdWJsaWMtbmFtZT8sIDptZXRhIHs6ZG9jICJJcyBzeW0gcHVibGljPyIsIDphcmdsaXN0cyAoW25zIHN5bV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHB1YmxpYy1uYW1lP1xyXG4gXCJJcyBzeW0gcHVibGljP1wiXHJcbiAjPyg6Y2xqcyB7OnRhZyBib29sZWFufSlcclxuIFtucyBzeW1dXHJcbiAobGV0XHJcbiAgW3Zhci1hc3RcclxuICAgKG9yXHJcbiAgICAoZ2V0cyBAZW52Lypjb21waWxlciogOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyBucyA6ZGVmcyBzeW0pXHJcbiAgICAjPyg6Y2xqIChnZXRzIChjbG9qdXJlLmNvcmUvZGVyZWYgZW52Lypjb21waWxlciopIDpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXMgbnMgOm1hY3JvcyBzeW0pIDpjbGpzIChnZXRzIChjbG9qdXJlLmNvcmUvZGVyZWYgZW52Lypjb21waWxlciopIDpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXMgKHN5bWJvbCAoc3RyIChuYW1lIG5zKSBcIiRtYWNyb3NcIikpIDpkZWZzIHN5bSkpKV1cclxuICAoYW5kXHJcbiAgIChzb21lPyB2YXItYXN0KVxyXG4gICAobm90IChvciAoOnByaXZhdGUgdmFyLWFzdCkgKDphbm9ueW1vdXMgdmFyLWFzdCkpKSkpKVxyXG4ifSB7OnN5bSBkZWZhdWx0LXdhcm5pbmctaGFuZGxlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt3YXJuaW5nLXR5cGUgZW52IGV4dHJhXSl9LCA6c291cmNlICIoZGVmblxyXG4gZGVmYXVsdC13YXJuaW5nLWhhbmRsZXJcclxuIFt3YXJuaW5nLXR5cGUgZW52IGV4dHJhXVxyXG4gKHdoZW5cclxuICAod2FybmluZy10eXBlICpjbGpzLXdhcm5pbmdzKilcclxuICAod2hlbi1sZXRcclxuICAgW3MgKGVycm9yLW1lc3NhZ2Ugd2FybmluZy10eXBlIGV4dHJhKV1cclxuICAgIz8oOmNsaiAoYmluZGluZyBbKm91dCogKmVycipdIChwcmludGxuIChtZXNzYWdlIGVudiAoc3RyIFwiV0FSTklORzogXCIgcykpKSkgOmNsanMgKGJpbmRpbmcgWypwcmludC1mbiogKnByaW50LWVyci1mbipdIChwcmludGxuIChtZXNzYWdlIGVudiAoc3RyIFwiV0FSTklORzogXCIgcykpKSkpKSkpXHJcbiJ9IHs6c3ltIHJlc29sdmUtbnMtYWxpYXMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbZW52IG5hbWVdIFtlbnYgbmFtZSBub3QtZm91bmRdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiByZXNvbHZlLW5zLWFsaWFzXHJcbiAoW2VudiBuYW1lXSAocmVzb2x2ZS1ucy1hbGlhcyBlbnYgbmFtZSAoc3ltYm9sIG5hbWUpKSlcclxuIChbZW52IG5hbWUgbm90LWZvdW5kXVxyXG4gIChsZXQgW3N5bSAoc3ltYm9sIG5hbWUpXSAoZ2V0ICg6cmVxdWlyZXMgKDpucyBlbnYpKSBzeW0gbm90LWZvdW5kKSkpKVxyXG4ifSB7OnN5bSBpbnRlcm4tbWFjcm9zLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBDbG9qdXJlIG5hbWVzcGFjZSBpbnRlcm4gYWxsIG1hY3JvcyBpbnRvIHRoZSBhbWJpZW50IENsb2p1cmVTY3JpcHRcbiAgIGFuYWx5c2lzIGVudmlyb25tZW50LiIsIDphcmdsaXN0cyBbW25zXSBbbnMgcmVsb2FkXV19LCA6c291cmNlICIoZGVmblxyXG4gaW50ZXJuLW1hY3Jvc1xyXG4gXCJHaXZlbiBhIENsb2p1cmUgbmFtZXNwYWNlIGludGVybiBhbGwgbWFjcm9zIGludG8gdGhlIGFtYmllbnQgQ2xvanVyZVNjcmlwdFxcbiAgIGFuYWx5c2lzIGVudmlyb25tZW50LlwiXHJcbiAoW25zXSAoaW50ZXJuLW1hY3JvcyBucyBmYWxzZSkpXHJcbiAoW25zIHJlbG9hZF1cclxuICAod2hlblxyXG4gICAob3JcclxuICAgIChuaWw/IChnZXRzIEBlbnYvKmNvbXBpbGVyKiA6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzIG5zIDptYWNyb3MpKVxyXG4gICAgcmVsb2FkKVxyXG4gICAoc3dhcCFcclxuICAgIGVudi8qY29tcGlsZXIqXHJcbiAgICBhc3NvYy1pblxyXG4gICAgWzpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXMgbnMgOm1hY3Jvc11cclxuICAgICgtPj5cclxuICAgICAjPyg6Y2xqIChucy1pbnRlcm5zIG5zKSA6Y2xqcyAobnMtaW50ZXJucyogbnMpKVxyXG4gICAgIChmaWx0ZXIgKGZuIFtbXyB2XV0gKC5pc01hY3JvIHYpKSlcclxuICAgICAobWFwXHJcbiAgICAgIChmblxyXG4gICAgICAgW1trIHZdXVxyXG4gICAgICAgW2tcclxuICAgICAgICAoYXMtPlxyXG4gICAgICAgICAobWV0YSB2KVxyXG4gICAgICAgICB2bVxyXG4gICAgICAgICAobGV0XHJcbiAgICAgICAgICBbbnMgKC5nZXROYW1lICg6bnMgdm0pKV1cclxuICAgICAgICAgIChhc3NvY1xyXG4gICAgICAgICAgIHZtXHJcbiAgICAgICAgICAgOm5zXHJcbiAgICAgICAgICAgbnNcclxuICAgICAgICAgICA6bmFtZVxyXG4gICAgICAgICAgIChzeW1ib2wgKHN0ciBucykgKHN0ciBrKSlcclxuICAgICAgICAgICA6bWFjcm9cclxuICAgICAgICAgICB0cnVlKSkpXSkpXHJcbiAgICAgKGludG8ge30pKSkpKSlcclxuIn0gezpzeW0gY29uc3QtZXhwci0+Y29uc3RhbnQtdmFsdWUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbezprZXlzIFtvcF0sIDphcyBlfV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGNvbnN0LWV4cHItPmNvbnN0YW50LXZhbHVlXHJcbiBbezprZXlzIFtvcF0sIDphcyBlfV1cclxuIChjYXNlXHJcbiAgb3BcclxuICA6cXVvdGVcclxuICAoY29uc3QtZXhwci0+Y29uc3RhbnQtdmFsdWUgKDpleHByIGUpKVxyXG4gIDpjb25zdFxyXG4gICg6dmFsIGUpXHJcbiAgOm1hcFxyXG4gICh6aXBtYXBcclxuICAgKG1hcCBjb25zdC1leHByLT5jb25zdGFudC12YWx1ZSAoOmtleXMgZSkpXHJcbiAgIChtYXAgY29uc3QtZXhwci0+Y29uc3RhbnQtdmFsdWUgKDp2YWxzIGUpKSlcclxuICA6c2V0XHJcbiAgKGludG8gI3t9IChtYXAgY29uc3QtZXhwci0+Y29uc3RhbnQtdmFsdWUgKDppdGVtcyBlKSkpXHJcbiAgOnZlY3RvclxyXG4gIChpbnRvIFtdIChtYXAgY29uc3QtZXhwci0+Y29uc3RhbnQtdmFsdWUgKDppdGVtcyBlKSkpKSlcclxuIn0gezpzeW0gQk9PTEVBTl9PUl9TRVEsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIEJPT0xFQU5fT1JfU0VRICcje3NlcSBib29sZWFufSlcclxuIn0gezpzeW0gKm1hY3JvLWluZmVyKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKm1hY3JvLWluZmVyKiB0cnVlKVxyXG4ifSB7OnN5bSBnZW4tY29uc3RhbnQtaWQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdmFsdWVdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBnZW4tY29uc3RhbnQtaWRcclxuIFt2YWx1ZV1cclxuIChsZXRcclxuICBbcHJlZml4XHJcbiAgIChjb25kXHJcbiAgICAoa2V5d29yZD8gdmFsdWUpXHJcbiAgICBcImNzdCRrdyRcIlxyXG4gICAgKHN5bWJvbD8gdmFsdWUpXHJcbiAgICBcImNzdCRzeW0kXCJcclxuICAgIDplbHNlXHJcbiAgICAodGhyb3dcclxuICAgICAjPyg6Y2xqIChFeGNlcHRpb24uIChzdHIgXCJjb25zdGFudCB0eXBlIFwiICh0eXBlIHZhbHVlKSBcIiBub3Qgc3VwcG9ydGVkXCIpKSA6Y2xqcyAoanMvRXJyb3IuIChzdHIgXCJjb25zdGFudCB0eXBlIFwiICh0eXBlIHZhbHVlKSBcIiBub3Qgc3VwcG9ydGVkXCIpKSkpKVxyXG4gICBuYW1lXHJcbiAgIChpZiAoa2V5d29yZD8gdmFsdWUpIChzdWJzIChzdHIgdmFsdWUpIDEpIChzdHIgdmFsdWUpKVxyXG4gICBuYW1lXHJcbiAgIChpZlxyXG4gICAgKD0gXCIuXCIgbmFtZSlcclxuICAgIFwiX0RPVF9cIlxyXG4gICAgKC0+XHJcbiAgICAgbmFtZVxyXG4gICAgIChzdHJpbmcvcmVwbGFjZSBcIi1cIiBcIl9EQVNIX1wiKVxyXG4gICAgIChtdW5nZSlcclxuICAgICAoc3RyaW5nL3JlcGxhY2UgXCIuXCIgXCIkXCIpXHJcbiAgICAgKHN0cmluZy9yZXBsYWNlXHJcbiAgICAgICNcIig/aSlbXmEtejAtOSRfXVwiXHJcbiAgICAgIChmbiogW3AxX180MTIwOCNdIChoZXgtZm9ybWF0IHAxX180MTIwOCMgNCkpKSkpXVxyXG4gIChzeW1ib2wgKHN0ciBwcmVmaXggbmFtZSkpKSlcclxuIn0gezpzeW0gQk9PTEVBTl9TWU0sIDptZXRhIHt9LCA6c291cmNlICIoZGVmIEJPT0xFQU5fU1lNICdib29sZWFuKVxyXG4ifSB7OnN5bSBtYWNyby1hdXRvbG9hZC1ucz8sIDptZXRhIHs6ZG9jICJHaXZlbiBhIHNwZWMgZm9ybSBjaGVjayB3aGV0aGVyIHRoZSBzcGVjIG5hbWVzcGFjZSByZXF1aXJlcyBhIG1hY3JvIGZpbGVcbiAgIG9mIHRoZSBzYW1lIG5hbWUuIElmIHNvIHJldHVybiB0cnVlLiIsIDphcmdsaXN0cyAoW2Zvcm1dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBtYWNyby1hdXRvbG9hZC1ucz9cclxuIFwiR2l2ZW4gYSBzcGVjIGZvcm0gY2hlY2sgd2hldGhlciB0aGUgc3BlYyBuYW1lc3BhY2UgcmVxdWlyZXMgYSBtYWNybyBmaWxlXFxuICAgb2YgdGhlIHNhbWUgbmFtZS4gSWYgc28gcmV0dXJuIHRydWUuXCJcclxuICM/KDpjbGpzIHs6dGFnIGJvb2xlYW59KVxyXG4gW2Zvcm1dXHJcbiAod2hlblxyXG4gICptYWNyby1pbmZlcipcclxuICAobGV0XHJcbiAgIFtuc1xyXG4gICAgKGlmIChzZXF1ZW50aWFsPyBmb3JtKSAoZmlyc3QgZm9ybSkgZm9ybSlcclxuICAgIHs6a2V5cyBbdXNlLW1hY3JvcyByZXF1aXJlLW1hY3Jvc119XHJcbiAgICAob3JcclxuICAgICAoZ2V0LWluIEBlbnYvKmNvbXBpbGVyKiBbOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyBuc10pXHJcbiAgICAgIz8oOmNsaiAod2hlbi1sZXQgW3JlcyAodXRpbC9ucy0+c291cmNlIG5zKV0gKDphc3QgKHBhcnNlLW5zIHJlcykpKSkpXVxyXG4gICAob3JcclxuICAgIChzb21lICN7bnN9ICh2YWxzIHVzZS1tYWNyb3MpKVxyXG4gICAgKHNvbWUgI3tuc30gKHZhbHMgcmVxdWlyZS1tYWNyb3MpKSkpKSlcclxuIn0gezpzeW0gZ2V0LXRhZywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlXSl9LCA6c291cmNlICIoZGVmblxyXG4gZ2V0LXRhZ1xyXG4gW2VdXHJcbiAoaWYtc29tZVxyXG4gIFt0YWcgKC0+IGUgOmZvcm0gbWV0YSA6dGFnKV1cclxuICB0YWdcclxuICAoaWYtc29tZSBbdGFnICgtPiBlIDp0YWcpXSB0YWcgKC0+IGUgOmluZm8gOnRhZykpKSlcclxuIn0gezpzeW0gaW1wbGljaXQtbnNlcywgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcclxuIGltcGxpY2l0LW5zZXNcclxuICcje1N0cmluZyBnb29nLnN0cmluZyBnb29nIGdvb2cub2JqZWN0IE1hdGggZ29vZy5hcnJheX0pXHJcbiJ9IHs6c3ltIHZhbGlkLXByb3RvLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIHZhbGlkLXByb3RvIFt4XSAod2hlbiAoc3ltYm9sPyB4KSB4KSlcclxuIn0gezpzeW0gbm9ybWFsaXplLWpzLXRhZywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxyXG4gbm9ybWFsaXplLWpzLXRhZ1xyXG4gW3hdXHJcbiAoaWYtbm90XHJcbiAgKD0gJ2pzIHgpXHJcbiAgKHdpdGgtbWV0YVxyXG4gICAnanNcclxuICAgezpwcmVmaXhcclxuICAgIChjb25qXHJcbiAgICAgKC0+PiAoc3RyaW5nL3NwbGl0IChuYW1lIHgpICNcIlxcLlwiKSAobWFwIHN5bWJvbCkgdmVjKVxyXG4gICAgICdwcm90b3R5cGUpfSlcclxuICB4KSlcclxuIn0gezpzeW0gYW5hbHl6ZS1saXN0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBmb3JtXSl9LCA6c291cmNlICIoZGVmblxyXG4gYW5hbHl6ZS1saXN0XHJcbiBbZW52IGZvcm1dXHJcbiAobGV0XHJcbiAgW2V4cHItZW52XHJcbiAgIChhc3NvYyBlbnYgOmNvbnRleHQgOmV4cHIpXHJcbiAgIGl0ZW1zXHJcbiAgIChkaXNhbGxvd2luZy1yZWN1clxyXG4gICAgKG1hcHYgKGZuKiBbcDFfXzQxMjU0I10gKGFuYWx5emUgZXhwci1lbnYgcDFfXzQxMjU0IykpIGZvcm0pKV1cclxuICAoYW5hbHl6ZS13cmFwLW1ldGFcclxuICAgezpvcCA6bGlzdCxcclxuICAgIDplbnYgZW52LFxyXG4gICAgOmZvcm0gZm9ybSxcclxuICAgIDppdGVtcyBpdGVtcyxcclxuICAgIDpjaGlsZHJlbiBbOml0ZW1zXSxcclxuICAgIDp0YWcgJ2NsanMuY29yZS9JTGlzdH0pKSlcclxuIn0gezpzeW0gd2FybmluZywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt3YXJuaW5nLXR5cGUgZW52IGV4dHJhXSl9LCA6c291cmNlICIoZGVmblxyXG4gd2FybmluZ1xyXG4gW3dhcm5pbmctdHlwZSBlbnYgZXh0cmFdXHJcbiAoZG9zZXFcclxuICBbaGFuZGxlciAqY2xqcy13YXJuaW5nLWhhbmRsZXJzKl1cclxuICAoaGFuZGxlciB3YXJuaW5nLXR5cGUgZW52IGV4dHJhKSkpXHJcbiJ9IHs6c3ltIGltcGxpY2l0LWltcG9ydD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IHByZWZpeCBzdWZmaXhdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBpbXBsaWNpdC1pbXBvcnQ/XHJcbiAjPyg6Y2xqcyB7OnRhZyBib29sZWFufSlcclxuIFtlbnYgcHJlZml4IHN1ZmZpeF1cclxuIChjb250YWlucz8gaW1wbGljaXQtbnNlcyBwcmVmaXgpKVxyXG4ifSB7OnN5bSBtaXNzaW5nLXVzZS1tYWNyb3MsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdXNlLW1hY3JvcyBlbnZdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBtaXNzaW5nLXVzZS1tYWNyb3NcclxuIFt1c2UtbWFjcm9zIGVudl1cclxuIChsZXRcclxuICBbY2VudiBAZW52Lypjb21waWxlcipdXHJcbiAgKGludG9cclxuICAge31cclxuICAgKGZpbHRlciAoZm4gW1tzeW0gbGliXV0gKG1pc3NpbmctdXNlLW1hY3JvPyBsaWIgc3ltKSkgdXNlLW1hY3JvcykpKSlcclxuIn0gezpzeW0gYW5hbHl6ZSosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IGZvcm0gbmFtZSBvcHRzXSl9LCA6c291cmNlICIoZGVmblxyXG4gYW5hbHl6ZSpcclxuIFtlbnYgZm9ybSBuYW1lIG9wdHNdXHJcbiAobGV0XHJcbiAgW3Bhc3Nlc1xyXG4gICAqcGFzc2VzKlxyXG4gICBwYXNzZXNcclxuICAgKGlmIChuaWw/IHBhc3NlcykgZGVmYXVsdC1wYXNzZXMgcGFzc2VzKVxyXG4gICBmb3JtXHJcbiAgIChpZiAoaW5zdGFuY2U/IExhenlTZXEgZm9ybSkgKGlmIChzZXEgZm9ybSkgZm9ybSAoKSkgZm9ybSlcclxuICAgYXN0XHJcbiAgIChhbmFseXplLWZvcm0gZW52IGZvcm0gbmFtZSBvcHRzKV1cclxuICAocmVkdWNlIChmbiBbYXN0IHBhc3NdIChwYXNzIGVudiBhc3Qgb3B0cykpIGFzdCBwYXNzZXMpKSlcclxuIn0gezpzeW0gLWNsanMtbWFjcm9zLWxvYWRlZCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgLWNsanMtbWFjcm9zLWxvYWRlZCAoYXRvbSBmYWxzZSkpXHJcbiJ9IHs6c3ltIGNoZWNrLXVzZXMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdXNlcyBlbnZdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBjaGVjay11c2VzXHJcbiBbdXNlcyBlbnZdXHJcbiAobGV0XHJcbiAgW2NlbnYgQGVudi8qY29tcGlsZXIqXVxyXG4gIChkb3NlcVxyXG4gICBbW3N5bSBsaWJdIHVzZXNdXHJcbiAgICh3aGVuXHJcbiAgICAobWlzc2luZy11c2U/IGxpYiBzeW0gY2VudilcclxuICAgICh0aHJvd1xyXG4gICAgIChlcnJvclxyXG4gICAgICBlbnZcclxuICAgICAgKGVycm9yLW1lc3NhZ2VcclxuICAgICAgIDp1bmRlY2xhcmVkLW5zLWZvcm1cclxuICAgICAgIHs6dHlwZSBcInZhclwiLCA6bGliIGxpYiwgOnN5bSBzeW19KSkpKSkpKVxyXG4ifSB7OnN5bSBmaW5kLW1hdGNoaW5nLW1ldGhvZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmIHBhcmFtc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGZpbmQtbWF0Y2hpbmctbWV0aG9kXHJcbiBbZiBwYXJhbXNdXHJcbiAobGV0XHJcbiAgW21ldGhvZHMgKG9yICg6bWV0aG9kcyBmKSAoLT4gZiA6aW5mbyA6bWV0aG9kcykpIGMgKGNvdW50IHBhcmFtcyldXHJcbiAgKHNvbWVcclxuICAgKGZuIFttXSAoYW5kIChvciAoPT0gKDpmaXhlZC1hcml0eSBtKSBjKSAoOnZhcmlhZGljPyBtKSkgbSkpXHJcbiAgIG1ldGhvZHMpKSlcclxuIn0gezpzeW0gKnByaXZhdGUtdmFyLWFjY2Vzcy1ub3dhcm4qLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqcHJpdmF0ZS12YXItYWNjZXNzLW5vd2FybiogZmFsc2UpXHJcbiJ9IHs6c3ltIGludm9rZS1hcmctdHlwZS12YWxpZGF0b3JzLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxyXG4gaW52b2tlLWFyZy10eXBlLXZhbGlkYXRvcnNcclxuIChsZXRcclxuICBbYWdldC12YWxpZGF0b3JcclxuICAgezp2YWxpZD9cclxuICAgIChmbipcclxuICAgICBbcDFfXzQxMjYxI11cclxuICAgICAoYW5kXHJcbiAgICAgIChhcnJheS10eXBlPyAoZmlyc3QgcDFfXzQxMjYxIykpXHJcbiAgICAgIChldmVyeT8gbnVtZXJpYy10eXBlPyAocmVzdCBwMV9fNDEyNjEjKSkpKSxcclxuICAgIDp3YXJuaW5nLXR5cGUgOmludmFsaWQtYXJyYXktYWNjZXNzfVxyXG4gICBhc2V0LXZhbGlkYXRvclxyXG4gICB7OnZhbGlkP1xyXG4gICAgKGZuKlxyXG4gICAgIFtwMV9fNDEyNjIjXVxyXG4gICAgIChhbmRcclxuICAgICAgKGFycmF5LXR5cGU/IChmaXJzdCBwMV9fNDEyNjIjKSlcclxuICAgICAgKGV2ZXJ5PyBudW1lcmljLXR5cGU/IChidXRsYXN0IChyZXN0IHAxX180MTI2MiMpKSkpKSxcclxuICAgIDp3YXJuaW5nLXR5cGUgOmludmFsaWQtYXJyYXktYWNjZXNzfV1cclxuICB7J2NsanMuY29yZS9jaGVja2VkLWFnZXQgYWdldC12YWxpZGF0b3IsXHJcbiAgICdjbGpzLmNvcmUvY2hlY2tlZC1hc2V0IGFzZXQtdmFsaWRhdG9yLFxyXG4gICAnY2xqcy5jb3JlL2NoZWNrZWQtYWdldCcgYWdldC12YWxpZGF0b3IsXHJcbiAgICdjbGpzLmNvcmUvY2hlY2tlZC1hc2V0JyBhc2V0LXZhbGlkYXRvcn0pKVxyXG4ifSB7OnN5bSAqY2xqcy1maWxlKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmNsanMtZmlsZSogbmlsKVxyXG4ifSB7OnN5bSAqZmlsZS1kZWZzKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmZpbGUtZGVmcyogbmlsKVxyXG4ifSB7OnN5bSBpbmZlci1pZiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgZV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGluZmVyLWlmXHJcbiBbZW52IGVdXHJcbiAobGV0XHJcbiAgW3s6a2V5cyBbb3AgZm9ybV19XHJcbiAgICh1bndyYXAtcXVvdGUgKDp0ZXN0IGUpKVxyXG4gICB0aGVuLXRhZ1xyXG4gICAoaW5mZXItdGFnIGVudiAoOnRoZW4gZSkpXVxyXG4gIChpZlxyXG4gICAoYW5kXHJcbiAgICAjPyg6Y2xqICg9IG9wIDpjb25zdCkgOmNsanMgKGtleXdvcmQtaWRlbnRpY2FsPyBvcCA6Y29uc3QpKVxyXG4gICAgKG5vdCAobmlsPyBmb3JtKSlcclxuICAgIChub3QgKGZhbHNlPyBmb3JtKSkpXHJcbiAgIHRoZW4tdGFnXHJcbiAgIChsZXRcclxuICAgIFtlbHNlLXRhZyAoaW5mZXItdGFnIGVudiAoOmVsc2UgZSkpXVxyXG4gICAgKGNvbmRcclxuICAgICAob3JcclxuICAgICAgIz8oOmNsaiAoPSB0aGVuLXRhZyBlbHNlLXRhZykgOmNsanMgKHN5bWJvbC1pZGVudGljYWw/IHRoZW4tdGFnIGVsc2UtdGFnKSlcclxuICAgICAgIz8oOmNsaiAoPSBlbHNlLXRhZyBJR05PUkVfU1lNKSA6Y2xqcyAoc3ltYm9sLWlkZW50aWNhbD8gZWxzZS10YWcgSUdOT1JFX1NZTSkpKVxyXG4gICAgIHRoZW4tdGFnXHJcbiAgICAgIz8oOmNsaiAoPSB0aGVuLXRhZyBJR05PUkVfU1lNKSA6Y2xqcyAoc3ltYm9sLWlkZW50aWNhbD8gdGhlbi10YWcgSUdOT1JFX1NZTSkpXHJcbiAgICAgZWxzZS10YWdcclxuICAgICAoYW5kXHJcbiAgICAgIChvciAoc29tZT8gKGdldCBOT1RfTkFUSVZFIHRoZW4tdGFnKSkgKHR5cGU/IGVudiB0aGVuLXRhZykpXHJcbiAgICAgIChvciAoc29tZT8gKGdldCBOT1RfTkFUSVZFIGVsc2UtdGFnKSkgKHR5cGU/IGVudiBlbHNlLXRhZykpKVxyXG4gICAgICdjbGpcclxuICAgICA6ZWxzZVxyXG4gICAgIChpZlxyXG4gICAgICAoYW5kXHJcbiAgICAgICAoc29tZT8gKGdldCBCT09MRUFOX09SX1NFUSB0aGVuLXRhZykpXHJcbiAgICAgICAoc29tZT8gKGdldCBCT09MRUFOX09SX1NFUSBlbHNlLXRhZykpKVxyXG4gICAgICAnc2VxXHJcbiAgICAgIChsZXRcclxuICAgICAgIFt0aGVuLXRhZ1xyXG4gICAgICAgIChpZlxyXG4gICAgICAgICAjPyg6Y2xqIChzZXQ/IHRoZW4tdGFnKSA6Y2xqcyAoY2xqcy1zZXQ/IHRoZW4tdGFnKSlcclxuICAgICAgICAgdGhlbi10YWdcclxuICAgICAgICAgI3t0aGVuLXRhZ30pXHJcbiAgICAgICAgZWxzZS10YWdcclxuICAgICAgICAoaWZcclxuICAgICAgICAgIz8oOmNsaiAoc2V0PyBlbHNlLXRhZykgOmNsanMgKGNsanMtc2V0PyBlbHNlLXRhZykpXHJcbiAgICAgICAgIGVsc2UtdGFnXHJcbiAgICAgICAgICN7ZWxzZS10YWd9KV1cclxuICAgICAgIChpbnRvIHRoZW4tdGFnIGVsc2UtdGFnKSkpKSkpKSlcclxuIn0gezpzeW0gKnZlcmJvc2UqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqdmVyYm9zZSogZmFsc2UpXHJcbiJ9IHs6c3ltIGFuYWx5emUtanMtdmFsdWUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IGZvcm1dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBhbmFseXplLWpzLXZhbHVlXHJcbiBbZW52IGZvcm1dXHJcbiAobGV0XHJcbiAgW3ZhbCAoLi12YWwgZm9ybSkgZXhwci1lbnYgKGFzc29jIGVudiA6Y29udGV4dCA6ZXhwcildXHJcbiAgKGlmXHJcbiAgIChtYXA/IHZhbClcclxuICAgKGxldFxyXG4gICAgW2tleXNcclxuICAgICAodmVjIChrZXlzIHZhbCkpXHJcbiAgICAgdmFsc1xyXG4gICAgIChkaXNhbGxvd2luZy1yZWN1clxyXG4gICAgICAobWFwdlxyXG4gICAgICAgKGZuKiBbcDFfXzQxMjU3I10gKGFuYWx5emUgZXhwci1lbnYgcDFfXzQxMjU3IykpXHJcbiAgICAgICAodmFscyB2YWwpKSldXHJcbiAgICB7Om9wIDpqcy1vYmplY3QsXHJcbiAgICAgOmVudiBlbnYsXHJcbiAgICAgOmZvcm0gZm9ybSxcclxuICAgICA6a2V5cyBrZXlzLFxyXG4gICAgIDp2YWxzIHZhbHMsXHJcbiAgICAgOmNoaWxkcmVuIFs6dmFsc10sXHJcbiAgICAgOnRhZyAnb2JqZWN0fSlcclxuICAgKGxldFxyXG4gICAgW2l0ZW1zXHJcbiAgICAgKGRpc2FsbG93aW5nLXJlY3VyXHJcbiAgICAgIChtYXB2IChmbiogW3AxX180MTI1OCNdIChhbmFseXplIGV4cHItZW52IHAxX180MTI1OCMpKSB2YWwpKV1cclxuICAgIHs6b3AgOmpzLWFycmF5LFxyXG4gICAgIDplbnYgZW52LFxyXG4gICAgIDpmb3JtIGZvcm0sXHJcbiAgICAgOml0ZW1zIGl0ZW1zLFxyXG4gICAgIDpjaGlsZHJlbiBbOml0ZW1zXSxcclxuICAgICA6dGFnICdhcnJheX0pKSkpXHJcbiJ9IHs6c3ltIG5zLT5tb2R1bGUtdHlwZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtuc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIG5zLT5tb2R1bGUtdHlwZVxyXG4gW25zXVxyXG4gKGNvbmRcclxuICAoanMtbW9kdWxlLWV4aXN0cz8gbnMpXHJcbiAgOmpzXHJcbiAgKG5vZGUtbW9kdWxlLWRlcD8gbnMpXHJcbiAgOm5vZGVcclxuICAoZGVwLWhhcy1nbG9iYWwtZXhwb3J0cz8gbnMpXHJcbiAgOmdsb2JhbCkpXHJcbiJ9IHs6c3ltIHNvdXJjZS1pbmZvLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW2Vudl0gW25hbWUgZW52XV19LCA6c291cmNlICIoZGVmblxyXG4gc291cmNlLWluZm9cclxuIChbZW52XSAod2hlbiAoOmxpbmUgZW52KSAoc291cmNlLWluZm8gbmlsIGVudikpKVxyXG4gKFtuYW1lIGVudl1cclxuICAoY29uZC0+XHJcbiAgIHs6ZmlsZVxyXG4gICAgKGlmXHJcbiAgICAgKD0gKC0+IGVudiA6bnMgOm5hbWUpICdjbGpzLmNvcmUpXHJcbiAgICAgXCJjbGpzL2NvcmUuY2xqc1wiXHJcbiAgICAgKmNsanMtZmlsZSopLFxyXG4gICAgOmxpbmUgKGdldC1saW5lIG5hbWUgZW52KSxcclxuICAgIDpjb2x1bW4gKGdldC1jb2wgbmFtZSBlbnYpfVxyXG4gICAoOnJvb3Qtc291cmNlLWluZm8gZW52KVxyXG4gICAobWVyZ2UgKHNlbGVjdC1rZXlzIGVudiBbOnJvb3Qtc291cmNlLWluZm9dKSkpKSlcclxuIn0gezpzeW0gYW5hbHl6ZS1mbi1tZXRob2QtcGFyYW0sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52XSl9LCA6c291cmNlICIoZGVmblxyXG4gYW5hbHl6ZS1mbi1tZXRob2QtcGFyYW1cclxuIFtlbnZdXHJcbiAoZm5cclxuICBbW2xvY2FscyBwYXJhbXNdIFthcmctaWQgbmFtZV1dXHJcbiAgKHdoZW5cclxuICAgKG5hbWVzcGFjZSBuYW1lKVxyXG4gICAodGhyb3dcclxuICAgIChlcnJvciBlbnYgKHN0ciBcIkNhbid0IHVzZSBxdWFsaWZpZWQgbmFtZSBhcyBwYXJhbWV0ZXI6IFwiIG5hbWUpKSkpXHJcbiAgKGxldFxyXG4gICBbbGluZVxyXG4gICAgKGdldC1saW5lIG5hbWUgZW52KVxyXG4gICAgY29sdW1uXHJcbiAgICAoZ2V0LWNvbCBuYW1lIGVudilcclxuICAgIG5tZXRhXHJcbiAgICAobWV0YSBuYW1lKVxyXG4gICAgdGFnXHJcbiAgICAoOnRhZyBubWV0YSlcclxuICAgIHNoYWRvd1xyXG4gICAgKHdoZW4gKHNvbWU/IGxvY2FscykgKGhhbmRsZS1zeW1ib2wtbG9jYWwgbmFtZSAobG9jYWxzIG5hbWUpKSlcclxuICAgIGVudlxyXG4gICAgKG1lcmdlIChzZWxlY3Qta2V5cyBlbnYgWzpjb250ZXh0XSkgezpsaW5lIGxpbmUsIDpjb2x1bW4gY29sdW1ufSlcclxuICAgIHBhcmFtXHJcbiAgICB7Om5hbWUgbmFtZSxcclxuICAgICA6YmluZGluZy1mb3JtPyB0cnVlLFxyXG4gICAgIDpvcCA6YmluZGluZyxcclxuICAgICA6ZW52IGVudixcclxuICAgICA6Y29sdW1uIGNvbHVtbixcclxuICAgICA6bGluZSBsaW5lLFxyXG4gICAgIDphcmctaWQgYXJnLWlkLFxyXG4gICAgIDppbmZvIHs6bmFtZSBuYW1lLCA6c2hhZG93IHNoYWRvd30sXHJcbiAgICAgOnRhZyB0YWcsXHJcbiAgICAgOnNoYWRvdyBzaGFkb3csXHJcbiAgICAgOmxvY2FsIDphcmd9XVxyXG4gICBbKGFzc29jIGxvY2FscyBuYW1lIHBhcmFtKSAoY29uaiBwYXJhbXMgcGFyYW0pXSkpKVxyXG4ifSB7OnN5bSBhbmFseXplLXNldCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGFuYWx5emUtc2V0XHJcbiBbZW52IGZvcm1dXHJcbiAobGV0XHJcbiAgW2V4cHItZW52XHJcbiAgIChhc3NvYyBlbnYgOmNvbnRleHQgOmV4cHIpXHJcbiAgIGl0ZW1zXHJcbiAgIChkaXNhbGxvd2luZy1yZWN1clxyXG4gICAgKG1hcHYgKGZuKiBbcDFfXzQxMjU2I10gKGFuYWx5emUgZXhwci1lbnYgcDFfXzQxMjU2IykpIGZvcm0pKV1cclxuICAoYW5hbHl6ZS13cmFwLW1ldGFcclxuICAgezpvcCA6c2V0LFxyXG4gICAgOmVudiBlbnYsXHJcbiAgICA6Zm9ybSBmb3JtLFxyXG4gICAgOml0ZW1zIGl0ZW1zLFxyXG4gICAgOmNoaWxkcmVuIFs6aXRlbXNdLFxyXG4gICAgOnRhZyAnY2xqcy5jb3JlL0lTZXR9KSkpXHJcbiJ9IHs6c3ltIG51bWVyaWMtdHlwZT8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIG51bWVyaWMtdHlwZT9cclxuICM/KDpjbGpzIHs6dGFnIGJvb2xlYW59KVxyXG4gW3RdXHJcbiAoY29uZFxyXG4gIChuaWw/IHQpXHJcbiAgdHJ1ZVxyXG4gICg9ICdjbGotbmlsIHQpXHJcbiAgdHJ1ZVxyXG4gIChqcy10YWc/IHQpXHJcbiAgdHJ1ZVxyXG4gIDplbHNlXHJcbiAgKGlmXHJcbiAgIChhbmQgKHN5bWJvbD8gdCkgKHNvbWU/IChnZXQgTlVNRVJJQ19TRVQgdCkpKVxyXG4gICB0cnVlXHJcbiAgICh3aGVuXHJcbiAgICAjPyg6Y2xqIChzZXQ/IHQpIDpjbGpzIChjbGpzLXNldD8gdCkpXHJcbiAgICAob3JcclxuICAgICAoY29udGFpbnM/IHQgJ251bWJlcilcclxuICAgICAoY29udGFpbnM/IHQgJ2xvbmcpXHJcbiAgICAgKGNvbnRhaW5zPyB0ICdkb3VibGUpXHJcbiAgICAgKGNvbnRhaW5zPyB0ICdhbnkpXHJcbiAgICAgKGNvbnRhaW5zPyB0ICdqcykpKSkpKVxyXG4ifSB7OnN5bSBhc3Q/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBhc3Q/XHJcbiAjPyg6Y2xqcyB7OnRhZyBib29sZWFufSlcclxuIFt4XVxyXG4gKGFuZCAobWFwPyB4KSAoY29udGFpbnM/IHggOm9wKSkpXHJcbiJ9IHs6c3ltIGNoZWNrZWQtYXJyYXlzLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBmYWxzZS15LCA6d2Fybiwgb3IgOmVycm9yIGJhc2VkIG9uIGNvbmZpZ3VyYXRpb24gYW5kIHRoZVxuICAgY3VycmVudCB2YWx1ZSBvZiAqdW5jaGVja2VkLWFycmF5cyouIiwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxyXG4gY2hlY2tlZC1hcnJheXNcclxuIFwiUmV0dXJucyBmYWxzZS15LCA6d2Fybiwgb3IgOmVycm9yIGJhc2VkIG9uIGNvbmZpZ3VyYXRpb24gYW5kIHRoZVxcbiAgIGN1cnJlbnQgdmFsdWUgb2YgKnVuY2hlY2tlZC1hcnJheXMqLlwiXHJcbiBbXVxyXG4gKHdoZW5cclxuICAoYW5kIChub3QgKDphZHZhbmNlZCAoY29tcGlsZXItb3B0aW9ucykpKSAobm90ICp1bmNoZWNrZWQtYXJyYXlzKikpXHJcbiAgKmNoZWNrZWQtYXJyYXlzKikpXHJcbiJ9IHs6c3ltIGVsaWRlLWVudiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgYXN0IG9wdHNdKX0sIDpzb3VyY2UgIihkZWZuIGVsaWRlLWVudiBbZW52IGFzdCBvcHRzXSAoZGlzc29jIGFzdCA6ZW52KSlcclxuIn0gezpzeW0ganMtbW9kdWxlLWV4aXN0cz8qLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBqcy1tb2R1bGUtZXhpc3RzPyogKG1lbW9pemUgaW50ZXJuYWwtanMtbW9kdWxlLWV4aXN0cz8pKVxyXG4ifSB7OnN5bSBwYXJzZS1yZXF1aXJlLXNwZWMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IG1hY3Jvcz8gZGVwcyBhbGlhc2VzIHNwZWNdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBwYXJzZS1yZXF1aXJlLXNwZWNcclxuIFtlbnYgbWFjcm9zPyBkZXBzIGFsaWFzZXMgc3BlY11cclxuIChpZlxyXG4gIChvciAoc3ltYm9sPyBzcGVjKSAoc3RyaW5nPyBzcGVjKSlcclxuICAocmVjdXIgZW52IG1hY3Jvcz8gZGVwcyBhbGlhc2VzIFtzcGVjXSlcclxuICAoZG9cclxuICAgKGJhc2ljLXZhbGlkYXRlLW5zLXNwZWMgZW52IG1hY3Jvcz8gc3BlYylcclxuICAgKGxldFxyXG4gICAgW1tsaWIgJiBvcHRzXVxyXG4gICAgIHNwZWNcclxuICAgICBbbGliIGpzLW1vZHVsZS1wcm92aWRlc11cclxuICAgICAoaWYtc29tZVxyXG4gICAgICBbanMtbW9kdWxlLW5hbWVcclxuICAgICAgIChnZXRzIEBlbnYvKmNvbXBpbGVyKiA6anMtbW9kdWxlLWluZGV4IChzdHIgbGliKSA6bmFtZSldXHJcbiAgICAgIFsoc3ltYm9sIGpzLW1vZHVsZS1uYW1lKSBsaWJdXHJcbiAgICAgIFtsaWIgbmlsXSlcclxuICAgICB7YWxpYXMgOmFzLFxyXG4gICAgICByZWZlcnJlZCA6cmVmZXIsXHJcbiAgICAgIHJlbmFtZWQgOnJlbmFtZSxcclxuICAgICAgOm9yIHthbGlhcyAoaWYgKHN0cmluZz8gbGliKSAoc3ltYm9sIChtdW5nZSBsaWIpKSBsaWIpfX1cclxuICAgICAoYXBwbHkgaGFzaC1tYXAgb3B0cylcclxuICAgICByZWZlcnJlZC13aXRob3V0LXJlbmFtZWRcclxuICAgICAoc2VxIChyZW1vdmUgKHNldCAoa2V5cyByZW5hbWVkKSkgcmVmZXJyZWQpKVxyXG4gICAgIFtyayB1ayByZW5rXVxyXG4gICAgIChpZlxyXG4gICAgICBtYWNyb3M/XHJcbiAgICAgIFs6cmVxdWlyZS1tYWNyb3MgOnVzZS1tYWNyb3MgOnJlbmFtZS1tYWNyb3NdXHJcbiAgICAgIFs6cmVxdWlyZSA6dXNlIDpyZW5hbWVdKV1cclxuICAgICh3aGVuLW5vdFxyXG4gICAgIChvciAoc3ltYm9sPyBhbGlhcykgKG5pbD8gYWxpYXMpKVxyXG4gICAgICh0aHJvd1xyXG4gICAgICAoZXJyb3JcclxuICAgICAgIGVudlxyXG4gICAgICAgKHBhcnNlLW5zLWVycm9yLW1zZ1xyXG4gICAgICAgIHNwZWNcclxuICAgICAgICBcIjphcyBtdXN0IGJlIGZvbGxvd2VkIGJ5IGEgc3ltYm9sIGluIDpyZXF1aXJlIC8gOnJlcXVpcmUtbWFjcm9zXCIpKSkpXHJcbiAgICAod2hlblxyXG4gICAgIChzb21lPyBhbGlhcylcclxuICAgICAobGV0XHJcbiAgICAgIFthbGlhcy10eXBlXHJcbiAgICAgICAoaWYgbWFjcm9zPyA6bWFjcm9zIDpmbnMpXHJcbiAgICAgICBsaWInXHJcbiAgICAgICAoKGFsaWFzLXR5cGUgQGFsaWFzZXMpIGFsaWFzKV1cclxuICAgICAgKHdoZW5cclxuICAgICAgIChhbmQgKHNvbWU/IGxpYicpIChub3Q9IGxpYiBsaWInKSlcclxuICAgICAgICh0aHJvd1xyXG4gICAgICAgIChlcnJvclxyXG4gICAgICAgICBlbnZcclxuICAgICAgICAgKHBhcnNlLW5zLWVycm9yLW1zZyBzcGVjIFwiOmFzIGFsaWFzIG11c3QgYmUgdW5pcXVlXCIpKSkpXHJcbiAgICAgIChzd2FwIVxyXG4gICAgICAgYWxpYXNlc1xyXG4gICAgICAgdXBkYXRlLWluXHJcbiAgICAgICBbYWxpYXMtdHlwZV1cclxuICAgICAgIGNvbmpcclxuICAgICAgIFthbGlhcyBsaWJdXHJcbiAgICAgICAod2hlbiBqcy1tb2R1bGUtcHJvdmlkZXMgW2pzLW1vZHVsZS1wcm92aWRlcyBsaWJdKSkpKVxyXG4gICAgKHdoZW4tbm90XHJcbiAgICAgKG9yXHJcbiAgICAgIChhbmQgKHNlcXVlbnRpYWw/IHJlZmVycmVkKSAoZXZlcnk/IHN5bWJvbD8gcmVmZXJyZWQpKVxyXG4gICAgICAobmlsPyByZWZlcnJlZCkpXHJcbiAgICAgKHRocm93XHJcbiAgICAgIChlcnJvclxyXG4gICAgICAgZW52XHJcbiAgICAgICAocGFyc2UtbnMtZXJyb3ItbXNnXHJcbiAgICAgICAgc3BlY1xyXG4gICAgICAgIFwiOnJlZmVyIG11c3QgYmUgZm9sbG93ZWQgYnkgYSBzZXF1ZW5jZSBvZiBzeW1ib2xzIGluIDpyZXF1aXJlIC8gOnJlcXVpcmUtbWFjcm9zXCIpKSkpXHJcbiAgICAod2hlbi1ub3QgbWFjcm9zPyAoc3dhcCEgZGVwcyBjb25qIGxpYikpXHJcbiAgICAobWVyZ2VcclxuICAgICAod2hlblxyXG4gICAgICAoc29tZT8gYWxpYXMpXHJcbiAgICAgIHtya1xyXG4gICAgICAgKG1lcmdlXHJcbiAgICAgICAge2FsaWFzIGxpYn1cclxuICAgICAgICB7bGliIGxpYn1cclxuICAgICAgICAod2hlbiBqcy1tb2R1bGUtcHJvdmlkZXMge2pzLW1vZHVsZS1wcm92aWRlcyBsaWJ9KSl9KVxyXG4gICAgICh3aGVuXHJcbiAgICAgIChzb21lPyByZWZlcnJlZC13aXRob3V0LXJlbmFtZWQpXHJcbiAgICAgIHt1a1xyXG4gICAgICAgKGFwcGx5XHJcbiAgICAgICAgaGFzaC1tYXBcclxuICAgICAgICAoaW50ZXJsZWF2ZSByZWZlcnJlZC13aXRob3V0LXJlbmFtZWQgKHJlcGVhdCBsaWIpKSl9KVxyXG4gICAgICh3aGVuXHJcbiAgICAgIChzb21lPyByZW5hbWVkKVxyXG4gICAgICB7cmVua1xyXG4gICAgICAgKHJlZHVjZVxyXG4gICAgICAgIChmblxyXG4gICAgICAgICBbbSBbb3JpZ2luYWwgcmVuYW1lZF1dXHJcbiAgICAgICAgICh3aGVuLW5vdFxyXG4gICAgICAgICAgKHNvbWUgI3tvcmlnaW5hbH0gcmVmZXJyZWQpXHJcbiAgICAgICAgICAodGhyb3dcclxuICAgICAgICAgICAoZXJyb3JcclxuICAgICAgICAgICAgZW52XHJcbiAgICAgICAgICAgIChzdHIgXCJSZW5hbWVkIHN5bWJvbCBcIiBvcmlnaW5hbCBcIiBub3QgcmVmZXJyZWRcIikpKSlcclxuICAgICAgICAgKGFzc29jIG0gcmVuYW1lZCAoc3ltYm9sIChzdHIgbGliKSAoc3RyIG9yaWdpbmFsKSkpKVxyXG4gICAgICAgIHt9XHJcbiAgICAgICAgcmVuYW1lZCl9KSkpKSkpXHJcbiJ9IHs6c3ltIGFuYWx5emUtd3JhcC1tZXRhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2V4cHJdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBhbmFseXplLXdyYXAtbWV0YVxyXG4gW2V4cHJdXHJcbiAobGV0XHJcbiAgW2Zvcm0gKDpmb3JtIGV4cHIpIG0gKGVsaWRlLWlycmVsZXZhbnQtbWV0YSAobWV0YSBmb3JtKSldXHJcbiAgKGlmXHJcbiAgIChzb21lPyAoc2VxIG0pKVxyXG4gICAobGV0XHJcbiAgICBbZW52XHJcbiAgICAgKDplbnYgZXhwcilcclxuICAgICBleHByXHJcbiAgICAgKGFzc29jLWluIGV4cHIgWzplbnYgOmNvbnRleHRdIDpleHByKVxyXG4gICAgIG1ldGEtZXhwclxyXG4gICAgIChhbmFseXplLW1hcCAoOmVudiBleHByKSBtKV1cclxuICAgIHs6b3AgOndpdGgtbWV0YSxcclxuICAgICA6ZW52IGVudixcclxuICAgICA6Zm9ybSBmb3JtLFxyXG4gICAgIDptZXRhIG1ldGEtZXhwcixcclxuICAgICA6ZXhwciBleHByLFxyXG4gICAgIDpjaGlsZHJlbiBbOm1ldGEgOmV4cHJdfSlcclxuICAgZXhwcikpKVxyXG4ifSB7OnN5bSBBTllfU1lNLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBBTllfU1lNICdhbnkpXHJcbiJ9IHs6c3ltIGdldC1qcy10YWcsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGdldC1qcy10YWdcclxuIFtmb3JtXVxyXG4gKGxldFxyXG4gIFtmb3JtLW1ldGEgKG1ldGEgZm9ybSldXHJcbiAgKGlmLXNvbWVcclxuICAgW3RhZyAoOnRhZyBmb3JtLW1ldGEpXVxyXG4gICB0YWdcclxuICAgKHdoZW4gKHRydWU/ICg6bnVtZXJpYyBmb3JtLW1ldGEpKSAnbnVtYmVyKSkpKVxyXG4ifSB7OnN5bSAqYW5hbHl6ZS1kZXBzKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmFuYWx5emUtZGVwcyogdHJ1ZSlcclxuIn0gezpzeW0gYW5hbHl6ZS1sZXQtYmluZGluZ3MqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VuY2wtZW52IGJpbmRpbmdzIG9wXSl9LCA6c291cmNlICIoZGVmblxyXG4gYW5hbHl6ZS1sZXQtYmluZGluZ3MqXHJcbiBbZW5jbC1lbnYgYmluZGluZ3Mgb3BdXHJcbiAobG9vcFxyXG4gIFtiZXNcclxuICAgW11cclxuICAgZW52XHJcbiAgIChhc3NvYyBlbmNsLWVudiA6Y29udGV4dCA6ZXhwcilcclxuICAgYmluZGluZ3NcclxuICAgKHNlcSAocGFydGl0aW9uIDIgYmluZGluZ3MpKV1cclxuICAoaWYtc29tZVxyXG4gICBbW25hbWUgaW5pdF0gKGZpcnN0IGJpbmRpbmdzKV1cclxuICAgKGxldFxyXG4gICAgW11cclxuICAgICh3aGVuXHJcbiAgICAgKG9yXHJcbiAgICAgIChzb21lPyAobmFtZXNwYWNlIG5hbWUpKVxyXG4gICAgICAjPyg6Y2xqICguY29udGFpbnMgKHN0ciBuYW1lKSBcIi5cIikgOmNsanMgKGdvb2cuc3RyaW5nL2NvbnRhaW5zIChzdHIgbmFtZSkgXCIuXCIpKSlcclxuICAgICAodGhyb3cgKGVycm9yIGVuY2wtZW52IChzdHIgXCJJbnZhbGlkIGxvY2FsIG5hbWU6IFwiIG5hbWUpKSkpXHJcbiAgICAobGV0XHJcbiAgICAgW2luaXQtZXhwclxyXG4gICAgICAoYW5hbHl6ZS1sZXQtYmluZGluZy1pbml0XHJcbiAgICAgICBlbnZcclxuICAgICAgIGluaXRcclxuICAgICAgIChjb25zIHs6cGFyYW1zIGJlc30gKmxvb3AtbGV0cyopKVxyXG4gICAgICBsaW5lXHJcbiAgICAgIChnZXQtbGluZSBuYW1lIGVudilcclxuICAgICAgY29sXHJcbiAgICAgIChnZXQtY29sIG5hbWUgZW52KVxyXG4gICAgICBzaGFkb3dcclxuICAgICAgKGhhbmRsZS1zeW1ib2wtbG9jYWwgbmFtZSAoZ2V0LWluIGVudiBbOmxvY2FscyBuYW1lXSkpXHJcbiAgICAgIGJlXHJcbiAgICAgIHs6aW5pdCBpbml0LWV4cHIsXHJcbiAgICAgICA6bmFtZSBuYW1lLFxyXG4gICAgICAgOmJpbmRpbmctZm9ybT8gdHJ1ZSxcclxuICAgICAgIDpvcCA6YmluZGluZyxcclxuICAgICAgIDplbnYgezpsaW5lIGxpbmUsIDpjb2x1bW4gY29sfSxcclxuICAgICAgIDpjb2x1bW4gY29sLFxyXG4gICAgICAgOmxpbmUgbGluZSxcclxuICAgICAgIDppbmZvIHs6bmFtZSBuYW1lLCA6c2hhZG93IHNoYWRvd30sXHJcbiAgICAgICA6dGFnIChnZXQtbGV0LXRhZyBuYW1lIGluaXQtZXhwciksXHJcbiAgICAgICA6c2hhZG93IHNoYWRvdyxcclxuICAgICAgIDpsb2NhbCBvcH1cclxuICAgICAgYmVcclxuICAgICAgKGlmXHJcbiAgICAgICAoPSA6Zm4gKDpvcCBpbml0LWV4cHIpKVxyXG4gICAgICAgKG1lcmdlXHJcbiAgICAgICAgYmVcclxuICAgICAgICB7OmZuLXZhciB0cnVlLFxyXG4gICAgICAgICA6bWV0aG9kc1xyXG4gICAgICAgICAoaW50b1xyXG4gICAgICAgICAgW11cclxuICAgICAgICAgIChtYXBcclxuICAgICAgICAgICAoZm4qXHJcbiAgICAgICAgICAgIFtwMV9fNDEyMjUjXVxyXG4gICAgICAgICAgICAoc2VsZWN0LWtleXMgcDFfXzQxMjI1IyBbOnRhZyA6Zml4ZWQtYXJpdHkgOnZhcmlhZGljP10pKVxyXG4gICAgICAgICAgICg6bWV0aG9kcyBpbml0LWV4cHIpKSksXHJcbiAgICAgICAgIDp2YXJpYWRpYz8gKDp2YXJpYWRpYz8gaW5pdC1leHByKSxcclxuICAgICAgICAgOm1heC1maXhlZC1hcml0eSAoOm1heC1maXhlZC1hcml0eSBpbml0LWV4cHIpLFxyXG4gICAgICAgICA6bWV0aG9kLXBhcmFtcyAobWFwIDpwYXJhbXMgKDptZXRob2RzIGluaXQtZXhwcikpfSlcclxuICAgICAgIGJlKV1cclxuICAgICAocmVjdXJcclxuICAgICAgKGNvbmogYmVzIGJlKVxyXG4gICAgICAoYXNzb2MtaW4gZW52IFs6bG9jYWxzIG5hbWVdIGJlKVxyXG4gICAgICAobmV4dCBiaW5kaW5ncykpKSlcclxuICAgW2JlcyBlbnZdKSkpXHJcbiJ9IHs6c3ltIGFuYWx5c2lzLWVycm9yPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtleF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGFuYWx5c2lzLWVycm9yP1xyXG4gIz8oOmNsanMgezp0YWcgYm9vbGVhbn0pXHJcbiBbZXhdXHJcbiAoPSA6Y2xqcy9hbmFseXNpcy1lcnJvciAoOnRhZyAoZXgtZGF0YSBleCkpKSlcclxuIn0gezpzeW0gcmVwbGFjZS1lbnYtcGFzcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtuZXctZW52XSl9LCA6c291cmNlICIoZGVmblxyXG4gcmVwbGFjZS1lbnYtcGFzc1xyXG4gW25ldy1lbnZdXHJcbiAoZm4gW2VudiBhc3Qgb3B0c10gKGFzc29jIGFzdCA6ZW52IG5ldy1lbnYpKSlcclxuIn0gezpzeW0gcGFyc2UtbnMtZXhjbHVkZXMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IGFyZ3NdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBwYXJzZS1ucy1leGNsdWRlc1xyXG4gW2VudiBhcmdzXVxyXG4gKHJlZHVjZVxyXG4gIChmblxyXG4gICBbcyBbayAmIGZpbHRlcnNdXVxyXG4gICAoaWZcclxuICAgICg9IGsgOnJlZmVyLWNsb2p1cmUpXHJcbiAgICAoZG9cclxuICAgICAod2hlblxyXG4gICAgICAoc2VxICg6ZXhjbHVkZXMgcykpXHJcbiAgICAgICh0aHJvd1xyXG4gICAgICAgKGVycm9yXHJcbiAgICAgICAgZW52XHJcbiAgICAgICAgXCJPbmx5IG9uZSA6cmVmZXItY2xvanVyZSBmb3JtIGlzIGFsbG93ZWQgcGVyIG5hbWVzcGFjZSBkZWZpbml0aW9uXCIpKSlcclxuICAgICAobGV0XHJcbiAgICAgIFt2YWxpZC1rd3NcclxuICAgICAgICN7OmV4Y2x1ZGUgOnJlbmFtZX1cclxuICAgICAgIHhzXHJcbiAgICAgICAobG9vcFxyXG4gICAgICAgIFtmc1xyXG4gICAgICAgICAoc2VxIGZpbHRlcnMpXHJcbiAgICAgICAgIHJldFxyXG4gICAgICAgICB7OmV4Y2x1ZGVzICN7fSwgOnJlbmFtZXMge319XHJcbiAgICAgICAgIGVyclxyXG4gICAgICAgICAobm90IChldmVuPyAoY291bnQgZmlsdGVycykpKV1cclxuICAgICAgICAoY29uZFxyXG4gICAgICAgICAodHJ1ZT8gZXJyKVxyXG4gICAgICAgICAodGhyb3dcclxuICAgICAgICAgIChlcnJvclxyXG4gICAgICAgICAgIGVudlxyXG4gICAgICAgICAgIFwiT25seSBbOnJlZmVyLWNsb2p1cmUgOmV4Y2x1ZGUgKG5hbWVzKV0gYW5kIG9wdGlvbmFsbHkgYDpyZW5hbWUge2Zyb20gdG99YCBzcGVjcyBzdXBwb3J0ZWRcIikpXHJcbiAgICAgICAgIChzb21lPyBmcylcclxuICAgICAgICAgKGxldFxyXG4gICAgICAgICAgW2t3IChmaXJzdCBmcyldXHJcbiAgICAgICAgICAoaWZcclxuICAgICAgICAgICAodmFsaWQta3dzIGt3KVxyXG4gICAgICAgICAgIChsZXRcclxuICAgICAgICAgICAgW3JlZnMgKHNlY29uZCBmcyldXHJcbiAgICAgICAgICAgIChjb25kXHJcbiAgICAgICAgICAgICAobm90XHJcbiAgICAgICAgICAgICAgKG9yXHJcbiAgICAgICAgICAgICAgIChhbmRcclxuICAgICAgICAgICAgICAgICg9IGt3IDpleGNsdWRlKVxyXG4gICAgICAgICAgICAgICAgKHNlcXVlbnRpYWw/IHJlZnMpXHJcbiAgICAgICAgICAgICAgICAoZXZlcnk/IHN5bWJvbD8gcmVmcykpXHJcbiAgICAgICAgICAgICAgIChhbmRcclxuICAgICAgICAgICAgICAgICg9IGt3IDpyZW5hbWUpXHJcbiAgICAgICAgICAgICAgICAobWFwPyByZWZzKVxyXG4gICAgICAgICAgICAgICAgKGV2ZXJ5P1xyXG4gICAgICAgICAgICAgICAgIChmbiogW3AxX180MTIzNSNdIChldmVyeT8gc3ltYm9sPyBwMV9fNDEyMzUjKSlcclxuICAgICAgICAgICAgICAgICByZWZzKSkpKVxyXG4gICAgICAgICAgICAgKHJlY3VyIGZzIHJldCB0cnVlKVxyXG4gICAgICAgICAgICAgKD0ga3cgOmV4Y2x1ZGUpXHJcbiAgICAgICAgICAgICAocmVjdXJcclxuICAgICAgICAgICAgICAobm5leHQgZnMpXHJcbiAgICAgICAgICAgICAgKHVwZGF0ZS1pbiByZXQgWzpleGNsdWRlc10gaW50byByZWZzKVxyXG4gICAgICAgICAgICAgIGZhbHNlKVxyXG4gICAgICAgICAgICAgKD0ga3cgOnJlbmFtZSlcclxuICAgICAgICAgICAgIChyZWN1clxyXG4gICAgICAgICAgICAgIChubmV4dCBmcylcclxuICAgICAgICAgICAgICAodXBkYXRlLWluIHJldCBbOnJlbmFtZXNdIG1lcmdlIHJlZnMpXHJcbiAgICAgICAgICAgICAgZmFsc2UpKSlcclxuICAgICAgICAgICAocmVjdXIgZnMgcmV0IHRydWUpKSlcclxuICAgICAgICAgOmVsc2VcclxuICAgICAgICAgcmV0KSldXHJcbiAgICAgIChtZXJnZS13aXRoIGludG8gcyB4cykpKVxyXG4gICAgcykpXHJcbiAgezpleGNsdWRlcyAje30sIDpyZW5hbWVzIHt9fVxyXG4gIGFyZ3MpKVxyXG4ifSB7OnN5bSBhbmFseXplLWZuLW1ldGhvZHMtcGFzczIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbWVudiBsb2NhbHMgdHlwZSBtZXRoc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGFuYWx5emUtZm4tbWV0aG9kcy1wYXNzMlxyXG4gW21lbnYgbG9jYWxzIHR5cGUgbWV0aHNdXHJcbiAoYW5hbHl6ZS1mbi1tZXRob2RzLXBhc3MyKiBtZW52IGxvY2FscyB0eXBlIG1ldGhzKSlcclxuIn0gezpzeW0gY29yZS1uYW1lPywgOm1ldGEgezpkb2MgIklzIHN5bSB2aXNpYmxlIGZyb20gY29yZSBpbiB0aGUgY3VycmVudCBjb21waWxhdGlvbiBuYW1lc3BhY2U/IiwgOmFyZ2xpc3RzIChbZW52IHN5bV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGNvcmUtbmFtZT9cclxuIFwiSXMgc3ltIHZpc2libGUgZnJvbSBjb3JlIGluIHRoZSBjdXJyZW50IGNvbXBpbGF0aW9uIG5hbWVzcGFjZT9cIlxyXG4gIz8oOmNsanMgezp0YWcgYm9vbGVhbn0pXHJcbiBbZW52IHN5bV1cclxuIChhbmRcclxuICAob3JcclxuICAgKHNvbWU/XHJcbiAgICAoZ2V0c1xyXG4gICAgIEBlbnYvKmNvbXBpbGVyKlxyXG4gICAgIDpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXNcclxuICAgICAnY2xqcy5jb3JlXHJcbiAgICAgOmRlZnNcclxuICAgICBzeW0pKVxyXG4gICAoaWYtc29tZVxyXG4gICAgW21hYyAoZ2V0LWV4cGFuZGVyIHN5bSBlbnYpXVxyXG4gICAgKGxldFxyXG4gICAgIFtucyAoLT4gbWFjIG1ldGEgOm5zKV1cclxuICAgICAoPVxyXG4gICAgICAoLmdldE5hbWUgbnMpXHJcbiAgICAgICM/KDpjbGogKHF1b3RlIGNsanMuY29yZSkgOmNsanMgKHF1b3RlIGNsanMuY29yZSRtYWNyb3MpKSkpXHJcbiAgICBmYWxzZSkpXHJcbiAgKG5vdCAoY29udGFpbnM/ICgtPiBlbnYgOm5zIDpleGNsdWRlcykgc3ltKSkpKVxyXG4ifSB7OnN5bSBnZXQtbGV0LXRhZywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtuYW1lIGluaXQtZXhwcl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGdldC1sZXQtdGFnXHJcbiBbbmFtZSBpbml0LWV4cHJdXHJcbiAoaWYtc29tZVxyXG4gIFt0YWcgKC0+IG5hbWUgbWV0YSA6dGFnKV1cclxuICB0YWdcclxuICAoaWYtc29tZSBbdGFnICgtPiBpbml0LWV4cHIgOnRhZyldIHRhZyAoLT4gaW5pdC1leHByIDppbmZvIDp0YWcpKSkpXHJcbiJ9IHs6c3ltIHNwZWNpYWxzLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxyXG4gc3BlY2lhbHNcclxuICcjeyYgY2FzZSogZGVmcmVjb3JkKiB0cnkgbnMqIGxvb3AqIGRvIGxldGZuKiBpZiBuZXcgbnMgZGVmdHlwZSogbGV0KlxyXG4gICAganMqIGZuKiByZWN1ciBzZXQhIC4gdmFyIHF1b3RlIHRocm93IGRlZn0pXHJcbiJ9IHs6c3ltIGVsaWRlLWlycmVsZXZhbnQtbWV0YSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttXSl9LCA6c291cmNlICIoZGVmblxyXG4gZWxpZGUtaXJyZWxldmFudC1tZXRhXHJcbiBbbV1cclxuICgtPiBtIGVsaWRlLXJlYWRlci1tZXRhIGVsaWRlLWFuYWx5emVyLW1ldGEpKVxyXG4ifSB7OnN5bSByZXNvbHZlLW1hY3JvLW5zLWFsaWFzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW2VudiBuYW1lXSBbZW52IG5hbWUgbm90LWZvdW5kXV19LCA6c291cmNlICIoZGVmblxyXG4gcmVzb2x2ZS1tYWNyby1ucy1hbGlhc1xyXG4gKFtlbnYgbmFtZV0gKHJlc29sdmUtbWFjcm8tbnMtYWxpYXMgZW52IG5hbWUgKHN5bWJvbCBuYW1lKSkpXHJcbiAoW2VudiBuYW1lIG5vdC1mb3VuZF1cclxuICAobGV0XHJcbiAgIFtzeW0gKHN5bWJvbCBuYW1lKV1cclxuICAgKGdldCAoOnJlcXVpcmUtbWFjcm9zICg6bnMgZW52KSkgc3ltIG5vdC1mb3VuZCkpKSlcclxuIn0gezpzeW0gY2hlY2staW52b2tlLWFyZy10eXBlcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgezprZXlzIFtvcF0sIDphcyBhc3R9IG9wdHNdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBjaGVjay1pbnZva2UtYXJnLXR5cGVzXHJcbiBbZW52IHs6a2V5cyBbb3BdLCA6YXMgYXN0fSBvcHRzXVxyXG4gKHdoZW5cclxuICAoYW5kXHJcbiAgIChub3QgKGFuYWx5emVkPyBhc3QpKVxyXG4gICAjPyg6Y2xqICg9IDppbnZva2Ugb3ApIDpjbGpzIChrZXl3b3JkLWlkZW50aWNhbD8gOmludm9rZSBvcCkpKVxyXG4gICh3aGVuLXNvbWVcclxuICAgW1tuYW1lIHs6a2V5cyBbdmFsaWQ/IHdhcm5pbmctdHlwZV19XVxyXG4gICAgKGZpbmQgaW52b2tlLWFyZy10eXBlLXZhbGlkYXRvcnMgKC0+IGFzdCA6Zm4gOmluZm8gOm5hbWUpKV1cclxuICAgKGxldFxyXG4gICAgW3R5cGVzIChtYXB2IDp0YWcgKDphcmdzIGFzdCkpXVxyXG4gICAgKHdoZW4tbm90XHJcbiAgICAgKHZhbGlkPyB0eXBlcylcclxuICAgICAod2FybmluZyB3YXJuaW5nLXR5cGUgZW52IHs6bmFtZSBuYW1lLCA6dHlwZXMgdHlwZXN9KSkpKSlcclxuIChhbmFseXplZCBhc3QpKVxyXG4ifSB7OnN5bSBjb25maXJtLW5zLCA6bWV0YSB7OmRvYyAiR2l2ZW4gZW52LCBhbiBhbmFseXNpcyBlbnZpcm9ubWVudCwgYW5kIG5zLXN5bSwgYSBzeW1ib2wgaWRlbnRpZnlpbmcgYVxuICAgbmFtZXNwYWNlLCBjb25maXJtIHRoYXQgdGhlIG5hbWVzcGFjZSBleGlzdHMuIFdhcm4gaWYgbm90IGZvdW5kLiIsIDphcmdsaXN0cyAoW2VudiBucy1zeW1dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBjb25maXJtLW5zXHJcbiBcIkdpdmVuIGVudiwgYW4gYW5hbHlzaXMgZW52aXJvbm1lbnQsIGFuZCBucy1zeW0sIGEgc3ltYm9sIGlkZW50aWZ5aW5nIGFcXG4gICBuYW1lc3BhY2UsIGNvbmZpcm0gdGhhdCB0aGUgbmFtZXNwYWNlIGV4aXN0cy4gV2FybiBpZiBub3QgZm91bmQuXCJcclxuIFtlbnYgbnMtc3ltXVxyXG4gKHdoZW5cclxuICAoYW5kXHJcbiAgIChub3Q9ICdjbGpzLmNvcmUgbnMtc3ltKVxyXG4gICAobmlsPyAoZ2V0IGltcGxpY2l0LW5zZXMgbnMtc3ltKSlcclxuICAgKG5pbD8gKGdldCAoLT4gZW52IDpucyA6cmVxdWlyZXMpIG5zLXN5bSkpXHJcbiAgIChuaWw/IChnZXRzIEBlbnYvKmNvbXBpbGVyKiA6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzIG5zLXN5bSkpXHJcbiAgICM/KDpjbGogKG5pbD8gKHV0aWwvbnMtPnNvdXJjZSBucy1zeW0pKSlcclxuICAgKG5vdCAoanMtbW9kdWxlLWV4aXN0cz8gbnMtc3ltKSkpXHJcbiAgKHdhcm5pbmcgOnVuZGVjbGFyZWQtbnMgZW52IHs6bnMtc3ltIG5zLXN5bSwgOmpzLXByb3ZpZGUgbnMtc3ltfSkpKVxyXG4ifSB7OnN5bSBkZWZhdWx0LW5hbWVzcGFjZXMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXHJcbiBkZWZhdWx0LW5hbWVzcGFjZXNcclxuICd7Y2xqcy5jb3JlIHs6bmFtZSBjbGpzLmNvcmV9LCBjbGpzLnVzZXIgezpuYW1lIGNsanMudXNlcn19KVxyXG4ifSB7OnN5bSBjYW5vbmljYWxpemUtc3BlY3MsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3BlY3NdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBjYW5vbmljYWxpemUtc3BlY3NcclxuIFtzcGVjc11cclxuIChsZXRmblxyXG4gIFsoY2Fub25pY2FsaXplXHJcbiAgICBbcXVvdGVkLXNwZWMtb3Ita3ddXHJcbiAgICAoaWZcclxuICAgICAoa2V5d29yZD8gcXVvdGVkLXNwZWMtb3Ita3cpXHJcbiAgICAgcXVvdGVkLXNwZWMtb3Ita3dcclxuICAgICAoYXMtPlxyXG4gICAgICAoc2Vjb25kIHF1b3RlZC1zcGVjLW9yLWt3KVxyXG4gICAgICBzcGVjXHJcbiAgICAgIChpZiAob3IgKHZlY3Rvcj8gc3BlYykgKG1hcD8gc3BlYykpIHNwZWMgW3NwZWNdKSkpKV1cclxuICAobWFwIGNhbm9uaWNhbGl6ZSBzcGVjcykpKVxyXG4ifSB7OnN5bSBjb25maXJtLXZhci1leGlzdHMtdGhyb3csIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxyXG4gY29uZmlybS12YXItZXhpc3RzLXRocm93XHJcbiBbXVxyXG4gKGZuXHJcbiAgW2VudiBwcmVmaXggc3VmZml4XVxyXG4gIChjb25maXJtLXZhci1leGlzdHNcclxuICAgZW52XHJcbiAgIHByZWZpeFxyXG4gICBzdWZmaXhcclxuICAgKGZuXHJcbiAgICBbZW52IHByZWZpeCBzdWZmaXhdXHJcbiAgICAodGhyb3dcclxuICAgICAoZXJyb3JcclxuICAgICAgZW52XHJcbiAgICAgIChzdHIgXCJVbmFibGUgdG8gcmVzb2x2ZSB2YXI6IFwiIHN1ZmZpeCBcIiBpbiB0aGlzIGNvbnRleHRcIikpKSkpKSlcclxuIn0gezpzeW0ganMtbW9kdWxlLWV4aXN0cz8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbW9kdWxlXSl9LCA6c291cmNlICIoZGVmblxyXG4ganMtbW9kdWxlLWV4aXN0cz9cclxuIFttb2R1bGVdXHJcbiAoanMtbW9kdWxlLWV4aXN0cz8qXHJcbiAgKGdldC1pbiBAZW52Lypjb21waWxlciogWzpqcy1tb2R1bGUtaW5kZXhdKVxyXG4gIG1vZHVsZSkpXHJcbiJ9IHs6c3ltIHZhci1hc3QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IHN5bV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHZhci1hc3RcclxuIFtlbnYgc3ltXVxyXG4gKGJpbmRpbmdcclxuICBbKnByaXZhdGUtdmFyLWFjY2Vzcy1ub3dhcm4qIHRydWVdXHJcbiAgKGxldFxyXG4gICBbZW52XHJcbiAgICAoZGlzc29jIGVudiA6bG9jYWxzKVxyXG4gICAgdmFyXHJcbiAgICAocmVzb2x2ZS12YXIgZW52IHN5bSAoY29uZmlybS12YXItZXhpc3RzLXRocm93KSlcclxuICAgIGV4cHItZW52XHJcbiAgICAoYXNzb2MgZW52IDpjb250ZXh0IDpleHByKV1cclxuICAgKHdoZW4tc29tZVxyXG4gICAgW3Zhci1ucyAoOm5zIHZhcildXHJcbiAgICB7OnZhciAoYW5hbHl6ZSBleHByLWVudiBzeW0pLFxyXG4gICAgIDpzeW1cclxuICAgICAoYW5hbHl6ZVxyXG4gICAgICBleHByLWVudlxyXG4gICAgICAoY2xvanVyZS5jb3JlL3NlcXVlbmNlXHJcbiAgICAgICAoY2xvanVyZS5jb3JlL3NlcVxyXG4gICAgICAgIChjbG9qdXJlLmNvcmUvY29uY2F0XHJcbiAgICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCAncXVvdGUpXHJcbiAgICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdFxyXG4gICAgICAgICAgKHN5bWJvbCAobmFtZSB2YXItbnMpIChuYW1lICg6bmFtZSB2YXIpKSkpKSkpKSxcclxuICAgICA6bWV0YSAodmFyLW1ldGEgdmFyIGV4cHItZW52KX0pKSkpXHJcbiJ9IHs6c3ltIGFkZC1jb25zdHMsIDptZXRhIHs6ZG9jICJHaXZlbiBhIGNvbXBpbGVyIHN0YXRlIGFuZCBhIG1hcCBmcm9tIGZ1bGx5IHF1YWxpZmllZCBzeW1ib2xzIHRvIGNvbnN0YW50XG4gIEVETiB2YWx1ZXMsIHVwZGF0ZSB0aGUgY29tcGlsZXIgc3RhdGUgbWFya2luZyB0aGVzZSB2YXJzIGFzIGNvbnN0IHRvIHN1cHBvcnRcbiAgZGlyZWN0IHN1YnN0aXR1dGlvbiBvZiB0aGVzZSB2YXJzIGluIHNvdXJjZS4iLCA6YXJnbGlzdHMgKFtjb21waWxlci1zdGF0ZSBjb25zdGFudHMtbWFwXSl9LCA6c291cmNlICIoZGVmblxyXG4gYWRkLWNvbnN0c1xyXG4gXCJHaXZlbiBhIGNvbXBpbGVyIHN0YXRlIGFuZCBhIG1hcCBmcm9tIGZ1bGx5IHF1YWxpZmllZCBzeW1ib2xzIHRvIGNvbnN0YW50XFxuICBFRE4gdmFsdWVzLCB1cGRhdGUgdGhlIGNvbXBpbGVyIHN0YXRlIG1hcmtpbmcgdGhlc2UgdmFycyBhcyBjb25zdCB0byBzdXBwb3J0XFxuICBkaXJlY3Qgc3Vic3RpdHV0aW9uIG9mIHRoZXNlIHZhcnMgaW4gc291cmNlLlwiXHJcbiBbY29tcGlsZXItc3RhdGUgY29uc3RhbnRzLW1hcF1cclxuIChyZWR1Y2Uta3ZcclxuICAoZm5cclxuICAgW2NvbXBpbGVyLXN0YXRlIHN5bSB2YWx1ZV1cclxuICAgKGxldFxyXG4gICAgW25zIChzeW1ib2wgKG5hbWVzcGFjZSBzeW0pKV1cclxuICAgICh1cGRhdGUtaW5cclxuICAgICBjb21waWxlci1zdGF0ZVxyXG4gICAgIFs6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzIG5zIDpkZWZzIChzeW1ib2wgKG5hbWUgc3ltKSldXHJcbiAgICAgbWVyZ2VcclxuICAgICB7OmNvbnN0LWV4cHJcclxuICAgICAgKGJpbmRpbmdcclxuICAgICAgIFsqcGFzc2VzKiAoY29uaiAqcGFzc2VzKiAocmVwbGFjZS1lbnYtcGFzcyB7OmNvbnRleHQgOmV4cHJ9KSldXHJcbiAgICAgICAoYW5hbHl6ZSAoZW1wdHktZW52KSB2YWx1ZSkpfSkpKVxyXG4gIGNvbXBpbGVyLXN0YXRlXHJcbiAgY29uc3RhbnRzLW1hcCkpXHJcbiJ9IHs6c3ltIGVycm9yLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW2VudiBtc2ddIFtlbnYgbXNnIGNhdXNlXV19LCA6c291cmNlICIoZGVmblxyXG4gZXJyb3JcclxuIChbZW52IG1zZ10gKGVycm9yIGVudiBtc2cgbmlsKSlcclxuIChbZW52IG1zZyBjYXVzZV1cclxuICAoZXgtaW5mb1xyXG4gICAobWVzc2FnZSBlbnYgbXNnKVxyXG4gICAoYXNzb2MgKHNvdXJjZS1pbmZvIGVudikgOnRhZyA6Y2xqcy9hbmFseXNpcy1lcnJvcilcclxuICAgY2F1c2UpKSlcclxuIn0gezpzeW0gaW52b2tlYWJsZS1ucz8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgbnMgaXMgYSByZXF1aXJlZCBuYW1lc3BhY2UgYW5kIGEgSmF2YVNjcmlwdCBtb2R1bGUgdGhhdFxuICAgbWlnaHQgYmUgaW52b2tlYWJsZSBhcyBhIGZ1bmN0aW9uLiIsIDphcmdsaXN0cyAoW25zIGVudl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGludm9rZWFibGUtbnM/XHJcbiBcIlJldHVybnMgdHJ1ZSBpZiBucyBpcyBhIHJlcXVpcmVkIG5hbWVzcGFjZSBhbmQgYSBKYXZhU2NyaXB0IG1vZHVsZSB0aGF0XFxuICAgbWlnaHQgYmUgaW52b2tlYWJsZSBhcyBhIGZ1bmN0aW9uLlwiXHJcbiBbbnMgZW52XVxyXG4gKGxldFxyXG4gIFtucyAocmVzb2x2ZS1ucy1hbGlhcyBlbnYgbnMpXVxyXG4gIChhbmRcclxuICAgKHJlcXVpcmVkPyBucyBlbnYpXHJcbiAgIChvclxyXG4gICAgKGpzLW1vZHVsZS1leGlzdHM/IG5zKVxyXG4gICAgKG5vZGUtbW9kdWxlLWRlcD8gbnMpXHJcbiAgICAoZGVwLWhhcy1nbG9iYWwtZXhwb3J0cz8gbnMpKSkpKVxyXG4ifSB7OnN5bSAqY2xqcy1ucyosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpjbGpzLW5zKiAnY2xqcy51c2VyKVxyXG4ifSksIG9ha2NsanMudG9vbHMucmVhZGVyLnJlYWRlci10eXBlcyAoezpzeW0gaW5kZXhpbmctcHVzaC1iYWNrLXJlYWRlciwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYW4gSW5kZXhpbmdQdXNoYmFja1JlYWRlciBmcm9tIGEgZ2l2ZW4gc3RyaW5nIG9yIFB1c2hiYWNrUmVhZGVyIiwgOmFyZ2xpc3RzIFtbcy1vci1yZHJdIFtzLW9yLXJkciBidWYtbGVuXSBbcy1vci1yZHIgYnVmLWxlbiBmaWxlLW5hbWVdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBpbmRleGluZy1wdXNoLWJhY2stcmVhZGVyXHJcbiBcIkNyZWF0ZXMgYW4gSW5kZXhpbmdQdXNoYmFja1JlYWRlciBmcm9tIGEgZ2l2ZW4gc3RyaW5nIG9yIFB1c2hiYWNrUmVhZGVyXCJcclxuIChbcy1vci1yZHJdIChpbmRleGluZy1wdXNoLWJhY2stcmVhZGVyIHMtb3ItcmRyIDEpKVxyXG4gKFtzLW9yLXJkciBidWYtbGVuXSAoaW5kZXhpbmctcHVzaC1iYWNrLXJlYWRlciBzLW9yLXJkciBidWYtbGVuIG5pbCkpXHJcbiAoW3Mtb3ItcmRyIGJ1Zi1sZW4gZmlsZS1uYW1lXVxyXG4gIChJbmRleGluZ1B1c2hiYWNrUmVhZGVyLlxyXG4gICAoaWZcclxuICAgIChzdHJpbmc/IHMtb3ItcmRyKVxyXG4gICAgKHN0cmluZy1wdXNoLWJhY2stcmVhZGVyIHMtb3ItcmRyIGJ1Zi1sZW4pXHJcbiAgICBzLW9yLXJkcilcclxuICAgMVxyXG4gICAxXHJcbiAgIHRydWVcclxuICAgbmlsXHJcbiAgIDBcclxuICAgZmlsZS1uYW1lKSkpXHJcbiJ9IHs6c3ltIGxvZy1zb3VyY2UqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JlYWRlciBmXSl9LCA6c291cmNlICIoZGVmblxyXG4gbG9nLXNvdXJjZSpcclxuIFtyZWFkZXIgZl1cclxuIChsZXRcclxuICBbYnVmZmVyICg6YnVmZmVyIEAoLi1mcmFtZXMgcmVhZGVyKSldXHJcbiAgKHRyeVxyXG4gICAoc3dhcCFcclxuICAgICguLWZyYW1lcyByZWFkZXIpXHJcbiAgICB1cGRhdGUtaW5cclxuICAgIFs6b2Zmc2V0XVxyXG4gICAgY29ualxyXG4gICAgKC5nZXRMZW5ndGggYnVmZmVyKSlcclxuICAgKGxldFxyXG4gICAgW3JldCAoZildXHJcbiAgICAoaWZcclxuICAgICAoaW1wbGVtZW50cz8gSU1ldGEgcmV0KVxyXG4gICAgIChtZXJnZS1tZXRhIHJldCB7OnNvdXJjZSAocGVlay1zb3VyY2UtbG9nIEAoLi1mcmFtZXMgcmVhZGVyKSl9KVxyXG4gICAgIHJldCkpXHJcbiAgIChmaW5hbGx5IChzd2FwISAoLi1mcmFtZXMgcmVhZGVyKSB1cGRhdGUtaW4gWzpvZmZzZXRdIHJlc3QpKSkpKVxyXG4ifSB7OnN5bSBtZXJnZS1tZXRhLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhbiBvYmplY3Qgb2YgdGhlIHNhbWUgdHlwZSBhbmQgdmFsdWUgYXMgYG9iamAsIHdpdGggaXRzXG5tZXRhZGF0YSBtZXJnZWQgb3ZlciBgbWAuIiwgOmFyZ2xpc3RzIChbb2JqIG1dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBtZXJnZS1tZXRhXHJcbiBcIlJldHVybnMgYW4gb2JqZWN0IG9mIHRoZSBzYW1lIHR5cGUgYW5kIHZhbHVlIGFzIGBvYmpgLCB3aXRoIGl0c1xcbm1ldGFkYXRhIG1lcmdlZCBvdmVyIGBtYC5cIlxyXG4gW29iaiBtXVxyXG4gKGxldFxyXG4gIFtvcmlnLW1ldGEgKG1ldGEgb2JqKV1cclxuICAod2l0aC1tZXRhIG9iaiAobWVyZ2UgbSAoZGlzc29jIG9yaWctbWV0YSA6c291cmNlKSkpKSlcclxuIn0gezpzeW0gUmVhZGVyLCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAocGVlay1jaGFyIHJlYWQtY2hhcil9IHs6c3ltIHNvdXJjZS1sb2dnaW5nLXB1c2gtYmFjay1yZWFkZXIsIDptZXRhIHs6ZG9jICJDcmVhdGVzIGEgU291cmNlTG9nZ2luZ1B1c2hiYWNrUmVhZGVyIGZyb20gYSBnaXZlbiBzdHJpbmcgb3IgUHVzaGJhY2tSZWFkZXIiLCA6YXJnbGlzdHMgW1tzLW9yLXJkcl0gW3Mtb3ItcmRyIGJ1Zi1sZW5dIFtzLW9yLXJkciBidWYtbGVuIGZpbGUtbmFtZV1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIHNvdXJjZS1sb2dnaW5nLXB1c2gtYmFjay1yZWFkZXJcclxuIFwiQ3JlYXRlcyBhIFNvdXJjZUxvZ2dpbmdQdXNoYmFja1JlYWRlciBmcm9tIGEgZ2l2ZW4gc3RyaW5nIG9yIFB1c2hiYWNrUmVhZGVyXCJcclxuIChbcy1vci1yZHJdIChzb3VyY2UtbG9nZ2luZy1wdXNoLWJhY2stcmVhZGVyIHMtb3ItcmRyIDEpKVxyXG4gKFtzLW9yLXJkciBidWYtbGVuXVxyXG4gIChzb3VyY2UtbG9nZ2luZy1wdXNoLWJhY2stcmVhZGVyIHMtb3ItcmRyIGJ1Zi1sZW4gbmlsKSlcclxuIChbcy1vci1yZHIgYnVmLWxlbiBmaWxlLW5hbWVdXHJcbiAgKFNvdXJjZUxvZ2dpbmdQdXNoYmFja1JlYWRlci5cclxuICAgKGlmXHJcbiAgICAoc3RyaW5nPyBzLW9yLXJkcilcclxuICAgIChzdHJpbmctcHVzaC1iYWNrLXJlYWRlciBzLW9yLXJkciBidWYtbGVuKVxyXG4gICAgcy1vci1yZHIpXHJcbiAgIDFcclxuICAgMVxyXG4gICB0cnVlXHJcbiAgIG5pbFxyXG4gICAwXHJcbiAgIGZpbGUtbmFtZVxyXG4gICAoYXRvbSB7OmJ1ZmZlciAoU3RyaW5nQnVmZmVyLiksIDpvZmZzZXQgJygwKX0pKSkpXHJcbiJ9IHs6c3ltIHVucmVhZCwgOm1ldGEgezpkb2MgIlB1c2hlcyBiYWNrIGEgc2luZ2xlIGNoYXJhY3RlciBvbiB0byB0aGUgc3RyZWFtIiwgOmFyZ2xpc3RzIChbcmVhZGVyIGNoXSl9LCA6cHJvdG9jb2wgSVB1c2hiYWNrUmVhZGVyfSB7OnN5bSBwZWVrLWNoYXIsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBuZXh0IGNoYXIgZnJvbSB0aGUgUmVhZGVyIHdpdGhvdXQgcmVtb3ZpbmcgaXQgZnJvbSB0aGUgcmVhZGVyIHN0cmVhbSIsIDphcmdsaXN0cyAoW3JlYWRlcl0pfSwgOnByb3RvY29sIFJlYWRlcn0gezpzeW0gSVB1c2hiYWNrUmVhZGVyLCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAodW5yZWFkKX0gezpzeW0gaW5kZXhpbmctcmVhZGVyPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB0aGUgcmVhZGVyIHNhdGlzZmllcyBJbmRleGluZ1JlYWRlciIsIDphcmdsaXN0cyAoW3Jkcl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGluZGV4aW5nLXJlYWRlcj9cclxuIFwiUmV0dXJucyB0cnVlIGlmIHRoZSByZWFkZXIgc2F0aXNmaWVzIEluZGV4aW5nUmVhZGVyXCJcclxuIFtyZHJdXHJcbiAoaW1wbGVtZW50cz8gSW5kZXhpbmdSZWFkZXIgcmRyKSlcclxuIn0gezpzeW0gc3RyaW5nLXJlYWRlciwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYSBTdHJpbmdSZWFkZXIgZnJvbSBhIGdpdmVuIHN0cmluZyIsIDphcmdsaXN0cyBbW3NdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBzdHJpbmctcmVhZGVyXHJcbiBcIkNyZWF0ZXMgYSBTdHJpbmdSZWFkZXIgZnJvbSBhIGdpdmVuIHN0cmluZ1wiXHJcbiAoW3NdIChTdHJpbmdSZWFkZXIuIHMgKGNvdW50IHMpIDApKSlcclxuIn0gezpzeW0gcmVhZC1jaGFyLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbmV4dCBjaGFyIGZyb20gdGhlIFJlYWRlciwgbmlsIGlmIHRoZSBlbmQgb2Ygc3RyZWFtIGhhcyBiZWVuIHJlYWNoZWQiLCA6YXJnbGlzdHMgKFtyZWFkZXJdKX0sIDpwcm90b2NvbCBSZWFkZXJ9IHs6c3ltIGdldC1jb2x1bW4tbnVtYmVyLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgY29sdW1uIG51bWJlciBvZiB0aGUgbmV4dCBjaGFyYWN0ZXIgdG8gYmUgcmVhZCBmcm9tIHRoZSBzdHJlYW0iLCA6YXJnbGlzdHMgKFtyZWFkZXJdKX0sIDpwcm90b2NvbCBJbmRleGluZ1JlYWRlcn0gezpzeW0gZ2V0LWZpbGUtbmFtZSwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGZpbGUgbmFtZSB0aGUgcmVhZGVyIGlzIHJlYWRpbmcgZnJvbSwgb3IgbmlsIiwgOmFyZ2xpc3RzIChbcmVhZGVyXSl9LCA6cHJvdG9jb2wgSW5kZXhpbmdSZWFkZXJ9IHs6c3ltIHJlYWQtbGluZSwgOm1ldGEgezpkb2MgIlJlYWRzIGEgbGluZSBmcm9tIHRoZSByZWFkZXIgb3IgZnJvbSAqaW4qIGlmIG5vIHJlYWRlciBpcyBzcGVjaWZpZWQiLCA6YXJnbGlzdHMgW1tyZHJdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiByZWFkLWxpbmVcclxuIFwiUmVhZHMgYSBsaW5lIGZyb20gdGhlIHJlYWRlciBvciBmcm9tICppbiogaWYgbm8gcmVhZGVyIGlzIHNwZWNpZmllZFwiXHJcbiAoW3Jkcl1cclxuICAobG9vcFxyXG4gICBbYyAocmVhZC1jaGFyIHJkcikgcyAoU3RyaW5nQnVmZmVyLildXHJcbiAgIChpZiAobmV3bGluZT8gYykgKHN0ciBzKSAocmVjdXIgKHJlYWQtY2hhciByZHIpICguYXBwZW5kIHMgYykpKSkpKVxyXG4ifSB7OnN5bSBzdHJpbmctcHVzaC1iYWNrLXJlYWRlciwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYSBQdXNoYmFja1JlYWRlciBmcm9tIGEgZ2l2ZW4gc3RyaW5nIiwgOmFyZ2xpc3RzIFtbc10gW3MgYnVmLWxlbl1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIHN0cmluZy1wdXNoLWJhY2stcmVhZGVyXHJcbiBcIkNyZWF0ZXMgYSBQdXNoYmFja1JlYWRlciBmcm9tIGEgZ2l2ZW4gc3RyaW5nXCJcclxuIChbc10gKHN0cmluZy1wdXNoLWJhY2stcmVhZGVyIHMgMSkpXHJcbiAoW3MgYnVmLWxlbl1cclxuICAoUHVzaGJhY2tSZWFkZXIuXHJcbiAgIChzdHJpbmctcmVhZGVyIHMpXHJcbiAgIChvYmplY3QtYXJyYXkgYnVmLWxlbilcclxuICAgYnVmLWxlblxyXG4gICBidWYtbGVuKSkpXHJcbiJ9IHs6c3ltIGxpbmUtc3RhcnQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIHJkciBpcyBhbiBJbmRleGluZ1JlYWRlciBhbmQgdGhlIGN1cnJlbnQgY2hhciBzdGFydHMgYSBuZXcgbGluZSIsIDphcmdsaXN0cyAoW3Jkcl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGxpbmUtc3RhcnQ/XHJcbiBcIlJldHVybnMgdHJ1ZSBpZiByZHIgaXMgYW4gSW5kZXhpbmdSZWFkZXIgYW5kIHRoZSBjdXJyZW50IGNoYXIgc3RhcnRzIGEgbmV3IGxpbmVcIlxyXG4gW3Jkcl1cclxuICh3aGVuIChpbmRleGluZy1yZWFkZXI/IHJkcikgKD09IDEgKGdldC1jb2x1bW4tbnVtYmVyIHJkcikpKSlcclxuIn0gezpzeW0gc291cmNlLWxvZ2dpbmctcmVhZGVyPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHJdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBzb3VyY2UtbG9nZ2luZy1yZWFkZXI/XHJcbiBbcmRyXVxyXG4gKGluc3RhbmNlPyBTb3VyY2VMb2dnaW5nUHVzaGJhY2tSZWFkZXIgcmRyKSlcclxuIn0gezpzeW0gSW5kZXhpbmdSZWFkZXIsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzIChnZXQtY29sdW1uLW51bWJlciBnZXQtZmlsZS1uYW1lIGdldC1saW5lLW51bWJlcil9IHs6c3ltIG5vZGUtcmVhZGFibGUtcHVzaC1iYWNrLXJlYWRlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZWFkYWJsZV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIG5vZGUtcmVhZGFibGUtcHVzaC1iYWNrLXJlYWRlclxyXG4gW3JlYWRhYmxlXVxyXG4gKFB1c2hiYWNrUmVhZGVyLlxyXG4gIChOb2RlUmVhZGFibGVSZWFkZXIuIHJlYWRhYmxlIG5pbClcclxuICAob2JqZWN0LWFycmF5IDEpXHJcbiAgMVxyXG4gIDEpKVxyXG4ifSB7OnN5bSBnZXQtbGluZS1udW1iZXIsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBsaW5lIG51bWJlciBvZiB0aGUgbmV4dCBjaGFyYWN0ZXIgdG8gYmUgcmVhZCBmcm9tIHRoZSBzdHJlYW0iLCA6YXJnbGlzdHMgKFtyZWFkZXJdKX0sIDpwcm90b2NvbCBJbmRleGluZ1JlYWRlcn0pLCBzYWJsb25vLm5vcm1hbGl6ZSAoezpzeW0gbWFwLWxvb2t1cD8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgYHhgIGlzIGEgbWFwIGxvb2t1cCBmb3JtLCBvdGhlcndpc2UgZmFsc2UuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIG1hcC1sb29rdXA/XHJcbiBcIlJldHVybnMgdHJ1ZSBpZiBgeGAgaXMgYSBtYXAgbG9va3VwIGZvcm0sIG90aGVyd2lzZSBmYWxzZS5cIlxyXG4gW3hdXHJcbiAoYW5kIChsaXN0PyB4KSAoa2V5d29yZD8gKGZpcnN0IHgpKSkpXHJcbiJ9IHs6c3ltIGF0dHJpYnV0ZXMsIDptZXRhIHs6ZG9jICJOb3JtYWxpemUgdGhlIGBhdHRyc2Agb2YgYW4gZWxlbWVudC4iLCA6YXJnbGlzdHMgKFthdHRyc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGF0dHJpYnV0ZXNcclxuIFwiTm9ybWFsaXplIHRoZSBgYXR0cnNgIG9mIGFuIGVsZW1lbnQuXCJcclxuIFthdHRyc11cclxuIChjb25kLT4gYXR0cnMgKDpjbGFzcyBhdHRycykgKHVwZGF0ZS1pbiBbOmNsYXNzXSBjbGFzcykpKVxyXG4ifSB7OnN5bSBjb21wYWN0LW1hcCwgOm1ldGEgezpkb2MgIlJlbW92ZXMgYWxsIG1hcCBlbnRyaWVzIHdoZXJlIHRoZSB2YWx1ZSBvZiB0aGUgZW50cnkgaXMgZW1wdHkuIiwgOmFyZ2xpc3RzIChbbV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGNvbXBhY3QtbWFwXHJcbiBcIlJlbW92ZXMgYWxsIG1hcCBlbnRyaWVzIHdoZXJlIHRoZSB2YWx1ZSBvZiB0aGUgZW50cnkgaXMgZW1wdHkuXCJcclxuIFttXVxyXG4gKHdoZW4gbSAoaW50byB7fSAocmVtb3ZlIChmbiBbW18gdl1dIChlbXB0eT8gdikpKSBtKSkpXHJcbiJ9IHs6c3ltIGNoaWxkcmVuLCA6bWV0YSB7OmRvYyAiTm9ybWFsaXplIHRoZSBjaGlsZHJlbiBvZiBhIEhUTUwgZWxlbWVudC4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxyXG4gY2hpbGRyZW5cclxuIFwiTm9ybWFsaXplIHRoZSBjaGlsZHJlbiBvZiBhIEhUTUwgZWxlbWVudC5cIlxyXG4gW3hdXHJcbiAoLT4+XHJcbiAgKGNvbmRcclxuICAgKG5pbD8geClcclxuICAgJygpXHJcbiAgIChzdHJpbmc/IHgpXHJcbiAgIChsaXN0IHgpXHJcbiAgICh1dGlsL2VsZW1lbnQ/IHgpXHJcbiAgIChsaXN0IHgpXHJcbiAgIChhbmQgKGxpc3Q/IHgpIChzeW1ib2w/IChmaXJzdCB4KSkpXHJcbiAgIChsaXN0IHgpXHJcbiAgIChsaXN0PyB4KVxyXG4gICB4XHJcbiAgIChhbmRcclxuICAgIChzZXF1ZW50aWFsPyB4KVxyXG4gICAgKD0gKGNvdW50IHgpIDEpXHJcbiAgICAoc2VxdWVudGlhbD8gKGZpcnN0IHgpKVxyXG4gICAgKG5vdCAoc3RyaW5nPyAoZmlyc3QgeCkpKVxyXG4gICAgKG5vdCAodXRpbC9lbGVtZW50PyAoZmlyc3QgeCkpKSlcclxuICAgKGNoaWxkcmVuIChmaXJzdCB4KSlcclxuICAgKHNlcXVlbnRpYWw/IHgpXHJcbiAgIHhcclxuICAgOmVsc2VcclxuICAgKGxpc3QgeCkpXHJcbiAgKHJlbW92ZSBuaWw/KSkpXHJcbiJ9IHs6c3ltIGVsZW1lbnQsIDptZXRhIHs6ZG9jICJFbnN1cmUgYW4gZWxlbWVudCB2ZWN0b3IgaXMgb2YgdGhlIGZvcm0gW3RhZy1uYW1lIGF0dHJzIGNvbnRlbnRdLiIsIDphcmdsaXN0cyAoW1t0YWcgJiBjb250ZW50XV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGVsZW1lbnRcclxuIFwiRW5zdXJlIGFuIGVsZW1lbnQgdmVjdG9yIGlzIG9mIHRoZSBmb3JtIFt0YWctbmFtZSBhdHRycyBjb250ZW50XS5cIlxyXG4gW1t0YWcgJiBjb250ZW50XV1cclxuICh3aGVuLW5vdFxyXG4gIChvciAoa2V5d29yZD8gdGFnKSAoc3ltYm9sPyB0YWcpIChzdHJpbmc/IHRhZykpXHJcbiAgKHRocm93XHJcbiAgIChleC1pbmZvXHJcbiAgICAoc3RyIHRhZyBcIiBpcyBub3QgYSB2YWxpZCBlbGVtZW50IG5hbWUuXCIpXHJcbiAgICB7OnRhZyB0YWcsIDpjb250ZW50IGNvbnRlbnR9KSkpXHJcbiAobGV0XHJcbiAgW1t0YWcgaWQgY2xhc3NdXHJcbiAgIChtYXRjaC10YWcgdGFnKVxyXG4gICB0YWctYXR0cnNcclxuICAgKGNvbXBhY3QtbWFwIHs6aWQgaWQsIDpjbGFzcyBjbGFzc30pXHJcbiAgIG1hcC1hdHRyc1xyXG4gICAoZmlyc3QgY29udGVudCldXHJcbiAgKGlmXHJcbiAgIChhdHRycz8gbWFwLWF0dHJzKVxyXG4gICBbdGFnXHJcbiAgICAobWVyZ2Utd2l0aC1jbGFzcyB0YWctYXR0cnMgbWFwLWF0dHJzKVxyXG4gICAgKGNoaWxkcmVuIChuZXh0IGNvbnRlbnQpKV1cclxuICAgW3RhZyAoYXR0cmlidXRlcyB0YWctYXR0cnMpIChjaGlsZHJlbiBjb250ZW50KV0pKSlcclxuIn0gezpzeW0gbWF0Y2gtdGFnLCA6bWV0YSB7OmRvYyAiTWF0Y2ggYHNgIGFzIGEgQ1NTIHRhZyBhbmQgcmV0dXJuIGEgdmVjdG9yIG9mIHRhZyBuYW1lLCBDU1MgaWQgYW5kXG4gIENTUyBjbGFzc2VzLiIsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBtYXRjaC10YWdcclxuIFwiTWF0Y2ggYHNgIGFzIGEgQ1NTIHRhZyBhbmQgcmV0dXJuIGEgdmVjdG9yIG9mIHRhZyBuYW1lLCBDU1MgaWQgYW5kXFxuICBDU1MgY2xhc3Nlcy5cIlxyXG4gW3NdXHJcbiAobGV0XHJcbiAgW21hdGNoZXNcclxuICAgKHJlLXNlcSAjXCJbIy5dP1teIy5dK1wiIChuYW1lIHMpKVxyXG4gICBbdGFnLW5hbWUgbmFtZXNdXHJcbiAgIChjb25kXHJcbiAgICAoZW1wdHk/IG1hdGNoZXMpXHJcbiAgICAodGhyb3cgKGV4LWluZm8gKHN0ciBcIkNhbid0IG1hdGNoIENTUyB0YWc6IFwiIHMpIHs6dGFnIHN9KSlcclxuICAgICgje1xcIyBcXC59IChmZmlyc3QgbWF0Y2hlcykpXHJcbiAgICBbXCJkaXZcIiBtYXRjaGVzXVxyXG4gICAgOmRlZmF1bHRcclxuICAgIFsoZmlyc3QgbWF0Y2hlcykgKHJlc3QgbWF0Y2hlcyldKV1cclxuICBbdGFnLW5hbWVcclxuICAgKHN0cmlwLWNzc1xyXG4gICAgKHNvbWVcclxuICAgICAoZm4qIFtwMV9fNDE2NzYjXSAod2hlbiAoPSBcXCMgKGZpcnN0IHAxX180MTY3NiMpKSBwMV9fNDE2NzYjKSlcclxuICAgICBuYW1lcykpXHJcbiAgIChpbnRvXHJcbiAgICBbXVxyXG4gICAgKGNvbXBcclxuICAgICAoZmlsdGVyIChmbiogW3AxX180MTY3NyNdICg9IFxcLiAoZmlyc3QgcDFfXzQxNjc3IykpKSlcclxuICAgICAobWFwIHN0cmlwLWNzcykpXHJcbiAgICBuYW1lcyldKSlcclxuIn0gezpzeW0gc3RyaXAtY3NzLCA6bWV0YSB7OmRvYyAiU3RyaXAgdGhlICMgYW5kIC4gY2hhcmFjdGVycyBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgYHNgLiIsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBzdHJpcC1jc3NcclxuIFwiU3RyaXAgdGhlICMgYW5kIC4gY2hhcmFjdGVycyBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgYHNgLlwiXHJcbiBbc11cclxuICh3aGVuIHMgKHN0ci9yZXBsYWNlIHMgI1wiXlsuI11cIiBcIlwiKSkpXHJcbiJ9IHs6c3ltIGNsYXNzLCA6bWV0YSB7OmRvYyAiTm9ybWFsaXplIGBjbGFzc2AgaW50byBhIHZlY3RvciBvZiBjbGFzc2VzLiIsIDphcmdsaXN0cyAoW2NsYXNzXSl9LCA6c291cmNlICIoZGVmblxyXG4gY2xhc3NcclxuIFwiTm9ybWFsaXplIGBjbGFzc2AgaW50byBhIHZlY3RvciBvZiBjbGFzc2VzLlwiXHJcbiBbY2xhc3NdXHJcbiAoY29uZFxyXG4gIChuaWw/IGNsYXNzKVxyXG4gIG5pbFxyXG4gIChtYXAtbG9va3VwPyBjbGFzcylcclxuICBbY2xhc3NdXHJcbiAgKGxpc3Q/IGNsYXNzKVxyXG4gIChpZiAoc3ltYm9sPyAoZmlyc3QgY2xhc3MpKSBbY2xhc3NdIChtYXAgY2xhc3MtbmFtZSBjbGFzcykpXHJcbiAgKHN5bWJvbD8gY2xhc3MpXHJcbiAgW2NsYXNzXVxyXG4gIChzdHJpbmc/IGNsYXNzKVxyXG4gIFtjbGFzc11cclxuICAoa2V5d29yZD8gY2xhc3MpXHJcbiAgWyhjbGFzcy1uYW1lIGNsYXNzKV1cclxuICAoYW5kXHJcbiAgIChvciAoc2V0PyBjbGFzcykgKHNlcXVlbnRpYWw/IGNsYXNzKSlcclxuICAgKGV2ZXJ5P1xyXG4gICAgKGZuKiBbcDFfXzQxNjc1I10gKG9yIChrZXl3b3JkPyBwMV9fNDE2NzUjKSAoc3RyaW5nPyBwMV9fNDE2NzUjKSkpXHJcbiAgICBjbGFzcykpXHJcbiAgKG1hcHYgY2xhc3MtbmFtZSBjbGFzcylcclxuICAoYW5kIChvciAoc2V0PyBjbGFzcykgKHNlcXVlbnRpYWw/IGNsYXNzKSkpXHJcbiAgKG1hcHYgY2xhc3MtbmFtZSBjbGFzcylcclxuICA6ZWxzZVxyXG4gIGNsYXNzKSlcclxuIn0gezpzeW0gY2xhc3MtbmFtZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxyXG4gY2xhc3MtbmFtZVxyXG4gW3hdXHJcbiAoY29uZCAoc3RyaW5nPyB4KSB4IChrZXl3b3JkPyB4KSAobmFtZSB4KSA6ZWxzZSB4KSlcclxuIn0gezpzeW0gbWVyZ2Utd2l0aC1jbGFzcywgOm1ldGEgezpkb2MgIkxpa2UgY2xvanVyZS5jb3JlL21lcmdlIGJ1dCBjb25jYXRlbmF0ZSA6Y2xhc3MgZW50cmllcy4iLCA6YXJnbGlzdHMgKFsmIG1hcHNdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBtZXJnZS13aXRoLWNsYXNzXHJcbiBcIkxpa2UgY2xvanVyZS5jb3JlL21lcmdlIGJ1dCBjb25jYXRlbmF0ZSA6Y2xhc3MgZW50cmllcy5cIlxyXG4gWyYgbWFwc11cclxuIChsZXRcclxuICBbbWFwcyAobWFwIGF0dHJpYnV0ZXMgbWFwcykgY2xhc3NlcyAobWFwY2F0IDpjbGFzcyBtYXBzKV1cclxuICAod2hlblxyXG4gICAoc2VxIG1hcHMpXHJcbiAgIChjb25kLT5cclxuICAgIChyZWR1Y2UgaW50byB7fSBtYXBzKVxyXG4gICAgKG5vdCAoZW1wdHk/IGNsYXNzZXMpKVxyXG4gICAgKGFzc29jIDpjbGFzcyAodmVjIGNsYXNzZXMpKSkpKSlcclxuIn0pLCBleHBvdW5kLnV0aWwgKHs6c3ltIGFzc2VydC1tZXNzYWdlLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxyXG4gYXNzZXJ0LW1lc3NhZ2VcclxuIFwiSW50ZXJuYWwgRXhwb3VuZCBhc3NlcnRpb24gZmFpbGVkLiBQbGVhc2UgcmVwb3J0IHRoaXMgYnVnIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9iaGIvZXhwb3VuZC9pc3N1ZXNcIilcclxuIn0gezpzeW0gbmFuPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxyXG4gbmFuP1xyXG4gW3hdXHJcbiAjPyg6Y2xqIChhbmQgKG51bWJlcj8geCkgKERvdWJsZS9pc05hTiB4KSkgOmNsanMgKGFuZCAobnVtYmVyPyB4KSAoanMvaXNOYU4geCkpKSlcclxuIn0pLCBjbGpzLnNvdXJjZS1tYXAgKHs6c3ltIHVwZGF0ZS1yZXN1bHQsIDptZXRhIHs6ZG9jICJIZWxwZXIgZm9yIGRlY29kZS4gVGFrZSBhIHNvdXJjZSBtYXAgYW5kIHVwZGF0ZSBpdCBiYXNlZCBvbiBhXG4gIHNlZ21lbnQgbWFwLiIsIDphcmdsaXN0cyAoW3Jlc3VsdCBzZWdtYXAgZ2xpbmVdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB1cGRhdGUtcmVzdWx0XHJcbiBcIkhlbHBlciBmb3IgZGVjb2RlLiBUYWtlIGEgc291cmNlIG1hcCBhbmQgdXBkYXRlIGl0IGJhc2VkIG9uIGFcXG4gIHNlZ21lbnQgbWFwLlwiXHJcbiBbcmVzdWx0IHNlZ21hcCBnbGluZV1cclxuIChsZXRcclxuICBbezprZXlzIFtnY29sIHNvdXJjZSBsaW5lIGNvbCBuYW1lXX1cclxuICAgc2VnbWFwXHJcbiAgIGRcclxuICAgezpsaW5lIGxpbmUsIDpjb2wgY29sLCA6c291cmNlIHNvdXJjZX1cclxuICAgZFxyXG4gICAoaWYgbmFtZSAoYXNzb2MgZCA6bmFtZSBuYW1lKSBkKV1cclxuICAodXBkYXRlLWluXHJcbiAgIHJlc3VsdFxyXG4gICBbZ2xpbmVdXHJcbiAgIChmbmlsXHJcbiAgICAoZm5cclxuICAgICBbbV1cclxuICAgICAodXBkYXRlLWluXHJcbiAgICAgIG1cclxuICAgICAgW2djb2xdXHJcbiAgICAgIChmbmlsIChmbiogW3AxX180MTU0OCNdIChjb25qIHAxX180MTU0OCMgZCkpIFtdKSkpXHJcbiAgICAoc29ydGVkLW1hcCkpKSkpXHJcbiJ9IHs6c3ltIGVuY29kZSwgOm1ldGEgezpkb2MgIlRha2UgYW4gaW50ZXJuYWwgc291cmNlIG1hcCByZXByZXNlbnRhdGlvbiByZXByZXNlbnRlZCBhcyBuZXN0ZWRcbiAgIHNvcnRlZCBtYXBzIG9mIGZpbGUsIGxpbmUsIGNvbHVtbiBhbmQgcmV0dXJuIGEgc291cmNlIG1hcCB2MyBKU09OXG4gICBzdHJpbmcuIiwgOmFyZ2xpc3RzIChbbSBvcHRzXSl9LCA6c291cmNlICIoZGVmblxyXG4gZW5jb2RlXHJcbiBcIlRha2UgYW4gaW50ZXJuYWwgc291cmNlIG1hcCByZXByZXNlbnRhdGlvbiByZXByZXNlbnRlZCBhcyBuZXN0ZWRcXG4gICBzb3J0ZWQgbWFwcyBvZiBmaWxlLCBsaW5lLCBjb2x1bW4gYW5kIHJldHVybiBhIHNvdXJjZSBtYXAgdjMgSlNPTlxcbiAgIHN0cmluZy5cIlxyXG4gW20gb3B0c11cclxuIChsZXRcclxuICBbbGluZXNcclxuICAgKGF0b20gW1tdXSlcclxuICAgbmFtZXMtPmlkeFxyXG4gICAoYXRvbSB7fSlcclxuICAgbmFtZS1pZHhcclxuICAgKGF0b20gMClcclxuICAgcHJlYW1ibGUtbGluZXNcclxuICAgKHRha2UgKG9yICg6cHJlYW1ibGUtbGluZS1jb3VudCBvcHRzKSAwKSAocmVwZWF0IFtdKSlcclxuICAgaW5mby0+c2VndlxyXG4gICAoZm5cclxuICAgIFtpbmZvIHNvdXJjZS1pZHggbGluZSBjb2xdXHJcbiAgICAobGV0XHJcbiAgICAgW3NlZ3YgWyg6Z2NvbCBpbmZvKSBzb3VyY2UtaWR4IGxpbmUgY29sXV1cclxuICAgICAoaWYtbGV0XHJcbiAgICAgIFtuYW1lICg6bmFtZSBpbmZvKV1cclxuICAgICAgKGxldFxyXG4gICAgICAgW2lkeFxyXG4gICAgICAgIChpZi1sZXRcclxuICAgICAgICAgW2lkeCAoZ2V0IEBuYW1lcy0+aWR4IG5hbWUpXVxyXG4gICAgICAgICBpZHhcclxuICAgICAgICAgKGxldFxyXG4gICAgICAgICAgW2NpZHggQG5hbWUtaWR4XVxyXG4gICAgICAgICAgKHN3YXAhIG5hbWVzLT5pZHggYXNzb2MgbmFtZSBjaWR4KVxyXG4gICAgICAgICAgKHN3YXAhIG5hbWUtaWR4IGluYylcclxuICAgICAgICAgIGNpZHgpKV1cclxuICAgICAgIChjb25qIHNlZ3YgaWR4KSlcclxuICAgICAgc2VndikpKVxyXG4gICBlbmNvZGUtY29sc1xyXG4gICAoZm5cclxuICAgIFtpbmZvcyBzb3VyY2UtaWR4IGxpbmUgY29sXVxyXG4gICAgKGRvc2VxXHJcbiAgICAgW2luZm8gaW5mb3NdXHJcbiAgICAgKGxldFxyXG4gICAgICBbc2VndlxyXG4gICAgICAgKGluZm8tPnNlZ3YgaW5mbyBzb3VyY2UtaWR4IGxpbmUgY29sKVxyXG4gICAgICAgZ2xpbmVcclxuICAgICAgICg6Z2xpbmUgaW5mbylcclxuICAgICAgIGxjXHJcbiAgICAgICAoY291bnQgQGxpbmVzKV1cclxuICAgICAgKGlmXHJcbiAgICAgICAoPiBnbGluZSAoZGVjIGxjKSlcclxuICAgICAgIChzd2FwIVxyXG4gICAgICAgIGxpbmVzXHJcbiAgICAgICAgKGZuXHJcbiAgICAgICAgIFtsaW5lc11cclxuICAgICAgICAgKGNvbmpcclxuICAgICAgICAgIChpbnRvIGxpbmVzIChyZXBlYXQgKGRlYyAoLSBnbGluZSAoZGVjIGxjKSkpIFtdKSlcclxuICAgICAgICAgIFtzZWd2XSkpKVxyXG4gICAgICAgKHN3YXAhXHJcbiAgICAgICAgbGluZXNcclxuICAgICAgICAoZm4gW2xpbmVzXSAodXBkYXRlLWluIGxpbmVzIFtnbGluZV0gY29uaiBzZWd2KSkpKSkpKV1cclxuICAoZG9zZXFcclxuICAgW1tzb3VyY2UtaWR4IFtfIGxpbmVzXV0gKG1hcC1pbmRleGVkIChmbiBbaSB2XSBbaSB2XSkgbSldXHJcbiAgIChkb3NlcVxyXG4gICAgW1tsaW5lIGNvbHNdIGxpbmVzXVxyXG4gICAgKGRvc2VxXHJcbiAgICAgW1tjb2wgaW5mb3NdIGNvbHNdXHJcbiAgICAgKGVuY29kZS1jb2xzIGluZm9zIHNvdXJjZS1pZHggbGluZSBjb2wpKSkpXHJcbiAgKGxldFxyXG4gICBbc291cmNlLW1hcC1maWxlLWNvbnRlbnRzXHJcbiAgICAoY29uZC0+XHJcbiAgICAgI2pzIHtcInZlcnNpb25cIiAzLCBcImZpbGVcIiAoOmZpbGUgb3B0cyksIFwic291cmNlc1wiIChsZXQgW3BhdGhzIChrZXlzIG0pIGYgKGNvbXAgKGlmICh0cnVlPyAoOnNvdXJjZS1tYXAtdGltZXN0YW1wIG9wdHMpKSAoZm4qIFtwMV9fNDE1NDkjXSAoc3RyIHAxX180MTU0OSMgXCI/cmVsPVwiICgudmFsdWVPZiAoanMvRGF0ZS4pKSkpIGlkZW50aXR5KSAoZm4qIFtwMV9fNDE1NTAjXSAobGFzdCAoc3RyaW5nL3NwbGl0IHAxX180MTU1MCMgI1wiL1wiKSkpKV0gKC0+PiBwYXRocyAobWFwIGYpIChpbnRvLWFycmF5KSkpLCBcImxpbmVDb3VudFwiICg6bGluZXMgb3B0cyksIFwibWFwcGluZ3NcIiAoLT4+IChsaW5lcy0+c2VncyAoY29uY2F0IHByZWFtYmxlLWxpbmVzIChjbG9qdXJlLmNvcmUvZGVyZWYgbGluZXMpKSkgKG1hcCAoZm4qIFtwMV9fNDE1NTEjXSAoc3RyaW5nL2pvaW4gXCIsXCIgcDFfXzQxNTUxIykpKSAoc3RyaW5nL2pvaW4gXCI7XCIpKSwgXCJuYW1lc1wiIChpbnRvLWFycmF5IChtYXAgKHNldC9tYXAtaW52ZXJ0IChjbG9qdXJlLmNvcmUvZGVyZWYgbmFtZXMtPmlkeCkpIChyYW5nZSAoY291bnQgKGNsb2p1cmUuY29yZS9kZXJlZiBuYW1lcy0+aWR4KSkpKSl9XHJcbiAgICAgKDpzb3VyY2VzLWNvbnRlbnQgb3B0cylcclxuICAgICAoZG90b1xyXG4gICAgICAoZ29iai9zZXRcclxuICAgICAgIFwic291cmNlc0NvbnRlbnRcIlxyXG4gICAgICAgKGludG8tYXJyYXkgKDpzb3VyY2VzLWNvbnRlbnQgb3B0cykpKSkpXVxyXG4gICAoLnN0cmluZ2lmeSBqcy9KU09OIHNvdXJjZS1tYXAtZmlsZS1jb250ZW50cykpKSlcclxuIn0gezpzeW0gaW52ZXJ0LXJldmVyc2UtbWFwLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBDbG9qdXJlU2NyaXB0IHRvIEphdmFTY3JpcHQgc291cmNlIG1hcCwgaW52ZXJ0IGl0LiBVc2VmdWwgd2hlblxuICAgbWFwcGluZyBKYXZhU2NyaXB0IHN0YWNrIHRyYWNlcyB3aGVuIGVudmlyb25tZW50IHN1cHBvcnQgaXMgdW5hdmFpbGFibGUuIiwgOmFyZ2xpc3RzIChbcmV2ZXJzZS1tYXBdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBpbnZlcnQtcmV2ZXJzZS1tYXBcclxuIFwiR2l2ZW4gYSBDbG9qdXJlU2NyaXB0IHRvIEphdmFTY3JpcHQgc291cmNlIG1hcCwgaW52ZXJ0IGl0LiBVc2VmdWwgd2hlblxcbiAgIG1hcHBpbmcgSmF2YVNjcmlwdCBzdGFjayB0cmFjZXMgd2hlbiBlbnZpcm9ubWVudCBzdXBwb3J0IGlzIHVuYXZhaWxhYmxlLlwiXHJcbiBbcmV2ZXJzZS1tYXBdXHJcbiAobGV0XHJcbiAgW2ludmVydGVkIChhdG9tIChzb3J0ZWQtbWFwKSldXHJcbiAgKGRvc2VxXHJcbiAgIFtbbGluZSBjb2x1bW5zXSByZXZlcnNlLW1hcF1cclxuICAgKGRvc2VxXHJcbiAgICBbW2NvbHVtbiBjb2x1bW4taW5mb10gY29sdW1uc11cclxuICAgIChkb3NlcVxyXG4gICAgIFt7OmtleXMgW2dsaW5lIGdjb2wgbmFtZV19IGNvbHVtbi1pbmZvXVxyXG4gICAgIChzd2FwIVxyXG4gICAgICBpbnZlcnRlZFxyXG4gICAgICB1cGRhdGUtaW5cclxuICAgICAgW2dsaW5lXVxyXG4gICAgICAoZm5pbFxyXG4gICAgICAgKGZuXHJcbiAgICAgICAgW2NvbHVtbnNdXHJcbiAgICAgICAgKHVwZGF0ZS1pblxyXG4gICAgICAgICBjb2x1bW5zXHJcbiAgICAgICAgIFtnY29sXVxyXG4gICAgICAgICAoZm5pbCBjb25qIFtdKVxyXG4gICAgICAgICB7OmxpbmUgbGluZSwgOmNvbCBjb2x1bW4sIDpuYW1lIG5hbWV9KSlcclxuICAgICAgIChzb3J0ZWQtbWFwKSkpKSkpXHJcbiAgQGludmVydGVkKSlcclxuIn0gezpzeW0gZGVjb2RlLCA6bWV0YSB7OmRvYyAiQ29udmVydCBhIHYzIHNvdXJjZSBtYXAgSlNPTiBvYmplY3QgaW50byBhIHNvdXJjZSBtYXAgbWFwcGluZ1xuICBnZW5lcmF0ZWQgSmF2YVNjcmlwdCBzb3VyY2UgbG9jYXRpb25zIHRvIHRoZSBvcmlnaW5hbFxuICBDbG9qdXJlU2NyaXB0LiIsIDphcmdsaXN0cyBbW3NvdXJjZS1tYXBdIFttYXBwaW5ncyBzb3VyY2UtbWFwXV19LCA6c291cmNlICIoZGVmblxyXG4gZGVjb2RlXHJcbiBcIkNvbnZlcnQgYSB2MyBzb3VyY2UgbWFwIEpTT04gb2JqZWN0IGludG8gYSBzb3VyY2UgbWFwIG1hcHBpbmdcXG4gIGdlbmVyYXRlZCBKYXZhU2NyaXB0IHNvdXJjZSBsb2NhdGlvbnMgdG8gdGhlIG9yaWdpbmFsXFxuICBDbG9qdXJlU2NyaXB0LlwiXHJcbiAoW3NvdXJjZS1tYXBdIChkZWNvZGUgKGdvYmovZ2V0IHNvdXJjZS1tYXAgXCJtYXBwaW5nc1wiKSBzb3VyY2UtbWFwKSlcclxuIChbbWFwcGluZ3Mgc291cmNlLW1hcF1cclxuICAobGV0XHJcbiAgIFtzb3VyY2VzXHJcbiAgICAoZ29iai9nZXQgc291cmNlLW1hcCBcInNvdXJjZXNcIilcclxuICAgIHJlbHNlZy1pbml0XHJcbiAgICBbMCAwIDAgMCAwXVxyXG4gICAgbGluZXNcclxuICAgIChzZXEgKHN0cmluZy9zcGxpdCBtYXBwaW5ncyAjXCI7XCIpKV1cclxuICAgKGxvb3BcclxuICAgIFtnbGluZSAwIGxpbmVzIGxpbmVzIHJlbHNlZyByZWxzZWctaW5pdCByZXN1bHQge31dXHJcbiAgICAoaWZcclxuICAgICBsaW5lc1xyXG4gICAgIChsZXRcclxuICAgICAgW2xpbmVcclxuICAgICAgIChmaXJzdCBsaW5lcylcclxuICAgICAgIFtyZXN1bHQgcmVsc2VnXVxyXG4gICAgICAgKGlmXHJcbiAgICAgICAgKHN0cmluZy9ibGFuaz8gbGluZSlcclxuICAgICAgICBbcmVzdWx0IHJlbHNlZ11cclxuICAgICAgICAobGV0XHJcbiAgICAgICAgIFtzZWdzIChzZXEgKHN0cmluZy9zcGxpdCBsaW5lICNcIixcIikpXVxyXG4gICAgICAgICAobG9vcFxyXG4gICAgICAgICAgW3NlZ3Mgc2VncyByZWxzZWcgcmVsc2VnIHJlc3VsdCByZXN1bHRdXHJcbiAgICAgICAgICAoaWZcclxuICAgICAgICAgICBzZWdzXHJcbiAgICAgICAgICAgKGxldFxyXG4gICAgICAgICAgICBbc2VnXHJcbiAgICAgICAgICAgICAoZmlyc3Qgc2VncylcclxuICAgICAgICAgICAgIG5yZWxzZWdcclxuICAgICAgICAgICAgIChzZWctY29tYmluZSAoYmFzZTY0LXZscS9kZWNvZGUgc2VnKSByZWxzZWcpXVxyXG4gICAgICAgICAgICAocmVjdXJcclxuICAgICAgICAgICAgIChuZXh0IHNlZ3MpXHJcbiAgICAgICAgICAgICBucmVsc2VnXHJcbiAgICAgICAgICAgICAodXBkYXRlLXJlc3VsdFxyXG4gICAgICAgICAgICAgIHJlc3VsdFxyXG4gICAgICAgICAgICAgIChzZWctPm1hcCBucmVsc2VnIHNvdXJjZS1tYXApXHJcbiAgICAgICAgICAgICAgZ2xpbmUpKSlcclxuICAgICAgICAgICBbcmVzdWx0IHJlbHNlZ10pKSkpXVxyXG4gICAgICAocmVjdXIgKGluYyBnbGluZSkgKG5leHQgbGluZXMpIChhc3NvYyByZWxzZWcgMCAwKSByZXN1bHQpKVxyXG4gICAgIHJlc3VsdCkpKSkpXHJcbiJ9IHs6c3ltIHNlZy0+bWFwLCA6bWV0YSB7OmRvYyAiVGFrZSBhIHNvdXJjZSBtYXAgc2VnbWVudCByZXByZXNlbnRlZCBhcyBhIHZlY3RvclxuICAgYW5kIHJldHVybiBhIG1hcC4iLCA6YXJnbGlzdHMgKFtzZWcgc291cmNlLW1hcF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHNlZy0+bWFwXHJcbiBcIlRha2UgYSBzb3VyY2UgbWFwIHNlZ21lbnQgcmVwcmVzZW50ZWQgYXMgYSB2ZWN0b3JcXG4gICBhbmQgcmV0dXJuIGEgbWFwLlwiXHJcbiBbc2VnIHNvdXJjZS1tYXBdXHJcbiAobGV0XHJcbiAgW1tnY29sIHNvdXJjZSBsaW5lIGNvbCBuYW1lXSBzZWddXHJcbiAgezpnY29sIGdjb2wsXHJcbiAgIDpzb3VyY2UgKGFnZXQgKGdvYmovZ2V0IHNvdXJjZS1tYXAgXCJzb3VyY2VzXCIpIHNvdXJjZSksXHJcbiAgIDpsaW5lIGxpbmUsXHJcbiAgIDpjb2wgY29sLFxyXG4gICA6bmFtZVxyXG4gICAod2hlbi1sZXRcclxuICAgIFtuYW1lICgtPiBzZWcgbWV0YSA6bmFtZSldXHJcbiAgICAoYWdldCAoZ29iai9nZXQgc291cmNlLW1hcCBcIm5hbWVzXCIpIG5hbWUpKX0pKVxyXG4ifSB7OnN5bSBzb3VyY2UtY29tcGFyZSwgOm1ldGEgezpkb2MgIlRha2UgYSBzZXEgb2Ygc291cmNlIGZpbGUgbmFtZXMgYW5kIHJldHVybiBhIGNvbXBhcmF0b3JcbiAgIHRoYXQgY2FuIGJlIHVzZWQgdG8gY29uc3RydWN0IGEgc29ydGVkIG1hcC4gRm9yIHJldmVyc2VcbiAgIHNvdXJjZSBtYXBzLiIsIDphcmdsaXN0cyAoW3NvdXJjZXNdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBzb3VyY2UtY29tcGFyZVxyXG4gXCJUYWtlIGEgc2VxIG9mIHNvdXJjZSBmaWxlIG5hbWVzIGFuZCByZXR1cm4gYSBjb21wYXJhdG9yXFxuICAgdGhhdCBjYW4gYmUgdXNlZCB0byBjb25zdHJ1Y3QgYSBzb3J0ZWQgbWFwLiBGb3IgcmV2ZXJzZVxcbiAgIHNvdXJjZSBtYXBzLlwiXHJcbiBbc291cmNlc11cclxuIChsZXRcclxuICBbc291cmNlcyAoaW5kZXhlZC1zb3VyY2VzIHNvdXJjZXMpXVxyXG4gIChmbiBbYSBiXSAoY29tcGFyZSAoc291cmNlcyBhKSAoc291cmNlcyBiKSkpKSlcclxuIn0gezpzeW0gZGVjb2RlLXJldmVyc2UsIDptZXRhIHs6ZG9jICJDb252ZXJ0IGEgdjMgc291cmNlIG1hcCBKU09OIG9iamVjdCBpbnRvIGEgcmV2ZXJzZSBzb3VyY2UgbWFwXG4gIG1hcHBpbmcgb3JpZ2luYWwgQ2xvanVyZVNjcmlwdCBzb3VyY2UgbG9jYXRpb25zIHRvIHRoZSBnZW5lcmF0ZWRcbiAgSmF2YVNjcmlwdC4iLCA6YXJnbGlzdHMgW1tzb3VyY2UtbWFwXSBbbWFwcGluZ3Mgc291cmNlLW1hcF1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGRlY29kZS1yZXZlcnNlXHJcbiBcIkNvbnZlcnQgYSB2MyBzb3VyY2UgbWFwIEpTT04gb2JqZWN0IGludG8gYSByZXZlcnNlIHNvdXJjZSBtYXBcXG4gIG1hcHBpbmcgb3JpZ2luYWwgQ2xvanVyZVNjcmlwdCBzb3VyY2UgbG9jYXRpb25zIHRvIHRoZSBnZW5lcmF0ZWRcXG4gIEphdmFTY3JpcHQuXCJcclxuIChbc291cmNlLW1hcF1cclxuICAoZGVjb2RlLXJldmVyc2UgKGdvYmovZ2V0IHNvdXJjZS1tYXAgXCJtYXBwaW5nc1wiKSBzb3VyY2UtbWFwKSlcclxuIChbbWFwcGluZ3Mgc291cmNlLW1hcF1cclxuICAobGV0XHJcbiAgIFtzb3VyY2VzXHJcbiAgICAoZ29iai9nZXQgc291cmNlLW1hcCBcInNvdXJjZXNcIilcclxuICAgIHJlbHNlZy1pbml0XHJcbiAgICBbMCAwIDAgMCAwXVxyXG4gICAgbGluZXNcclxuICAgIChzZXEgKHN0cmluZy9zcGxpdCBtYXBwaW5ncyAjXCI7XCIpKV1cclxuICAgKGxvb3BcclxuICAgIFtnbGluZVxyXG4gICAgIDBcclxuICAgICBsaW5lc1xyXG4gICAgIGxpbmVzXHJcbiAgICAgcmVsc2VnXHJcbiAgICAgcmVsc2VnLWluaXRcclxuICAgICByZXN1bHRcclxuICAgICAoc29ydGVkLW1hcC1ieSAoc291cmNlLWNvbXBhcmUgc291cmNlcykpXVxyXG4gICAgKGlmXHJcbiAgICAgbGluZXNcclxuICAgICAobGV0XHJcbiAgICAgIFtsaW5lXHJcbiAgICAgICAoZmlyc3QgbGluZXMpXHJcbiAgICAgICBbcmVzdWx0IHJlbHNlZ11cclxuICAgICAgIChpZlxyXG4gICAgICAgIChzdHJpbmcvYmxhbms/IGxpbmUpXHJcbiAgICAgICAgW3Jlc3VsdCByZWxzZWddXHJcbiAgICAgICAgKGxldFxyXG4gICAgICAgICBbc2VncyAoc2VxIChzdHJpbmcvc3BsaXQgbGluZSAjXCIsXCIpKV1cclxuICAgICAgICAgKGxvb3BcclxuICAgICAgICAgIFtzZWdzIHNlZ3MgcmVsc2VnIHJlbHNlZyByZXN1bHQgcmVzdWx0XVxyXG4gICAgICAgICAgKGlmXHJcbiAgICAgICAgICAgc2Vnc1xyXG4gICAgICAgICAgIChsZXRcclxuICAgICAgICAgICAgW3NlZ1xyXG4gICAgICAgICAgICAgKGZpcnN0IHNlZ3MpXHJcbiAgICAgICAgICAgICBucmVsc2VnXHJcbiAgICAgICAgICAgICAoc2VnLWNvbWJpbmUgKGJhc2U2NC12bHEvZGVjb2RlIHNlZykgcmVsc2VnKV1cclxuICAgICAgICAgICAgKHJlY3VyXHJcbiAgICAgICAgICAgICAobmV4dCBzZWdzKVxyXG4gICAgICAgICAgICAgbnJlbHNlZ1xyXG4gICAgICAgICAgICAgKHVwZGF0ZS1yZXZlcnNlLXJlc3VsdFxyXG4gICAgICAgICAgICAgIHJlc3VsdFxyXG4gICAgICAgICAgICAgIChzZWctPm1hcCBucmVsc2VnIHNvdXJjZS1tYXApXHJcbiAgICAgICAgICAgICAgZ2xpbmUpKSlcclxuICAgICAgICAgICBbcmVzdWx0IHJlbHNlZ10pKSkpXVxyXG4gICAgICAocmVjdXIgKGluYyBnbGluZSkgKG5leHQgbGluZXMpIChhc3NvYyByZWxzZWcgMCAwKSByZXN1bHQpKVxyXG4gICAgIHJlc3VsdCkpKSkpXHJcbiJ9IHs6c3ltIGxpbmVzLT5zZWdzLCA6bWV0YSB7OmRvYyAiVGFrZSBhIG5lc3RlZCBzb3J0ZWQgbWFwIGVuY29kaW5nIGxpbmUgYW5kIGNvbHVtbiBpbmZvcm1hdGlvblxuICAgZm9yIGEgZmlsZSBhbmQgcmV0dXJuIGEgdmVjdG9yIG9mIHZlY3RvcnMgb2YgZW5jb2RlZCBzZWdtZW50cy5cbiAgIEVhY2ggdmVjdG9yIHJlcHJlc2VudHMgYSBsaW5lLCBhbmQgdGhlIGludGVybmFsIHZlY3RvcnMgYXJlIHNlZ21lbnRzXG4gICByZXByZXNlbnRpbmcgdGhlIGNvbnRlbnRzIG9mIHRoZSBsaW5lLiIsIDphcmdsaXN0cyAoW2xpbmVzXSl9LCA6c291cmNlICIoZGVmblxyXG4gbGluZXMtPnNlZ3NcclxuIFwiVGFrZSBhIG5lc3RlZCBzb3J0ZWQgbWFwIGVuY29kaW5nIGxpbmUgYW5kIGNvbHVtbiBpbmZvcm1hdGlvblxcbiAgIGZvciBhIGZpbGUgYW5kIHJldHVybiBhIHZlY3RvciBvZiB2ZWN0b3JzIG9mIGVuY29kZWQgc2VnbWVudHMuXFxuICAgRWFjaCB2ZWN0b3IgcmVwcmVzZW50cyBhIGxpbmUsIGFuZCB0aGUgaW50ZXJuYWwgdmVjdG9ycyBhcmUgc2VnbWVudHNcXG4gICByZXByZXNlbnRpbmcgdGhlIGNvbnRlbnRzIG9mIHRoZSBsaW5lLlwiXHJcbiBbbGluZXNdXHJcbiAobGV0XHJcbiAgW3JlbHNlZyAoYXRvbSBbMCAwIDAgMCAwXSldXHJcbiAgKHJlZHVjZVxyXG4gICAoZm5cclxuICAgIFtzZWdzIGNvbHNdXHJcbiAgICAoc3dhcCFcclxuICAgICByZWxzZWdcclxuICAgICAoZm4gW1tfIHNvdXJjZSBsaW5lIGNvbCBuYW1lXV0gWzAgc291cmNlIGxpbmUgY29sIG5hbWVdKSlcclxuICAgIChjb25qXHJcbiAgICAgc2Vnc1xyXG4gICAgIChyZWR1Y2VcclxuICAgICAgKGZuXHJcbiAgICAgICBbY29scyBbZ2NvbCBzaWR4IGxpbmUgY29sIG5hbWUgOmFzIHNlZ11dXHJcbiAgICAgICAobGV0XHJcbiAgICAgICAgW29mZnNldCAobWFwIC0gc2VnIEByZWxzZWcpXVxyXG4gICAgICAgIChzd2FwIVxyXG4gICAgICAgICByZWxzZWdcclxuICAgICAgICAgKGZuIFtbXyBfIF8gXyBsbmFtZV1dIFtnY29sIHNpZHggbGluZSBjb2wgKG9yIG5hbWUgbG5hbWUpXSkpXHJcbiAgICAgICAgKGNvbmogY29scyAoYmFzZTY0LXZscS9lbmNvZGUgb2Zmc2V0KSkpKVxyXG4gICAgICBbXVxyXG4gICAgICBjb2xzKSkpXHJcbiAgIFtdXHJcbiAgIGxpbmVzKSkpXHJcbiJ9IHs6c3ltIG1lcmdlLXNvdXJjZS1tYXBzLCA6bWV0YSB7OmRvYyAiTWVyZ2UgYW4gaW50ZXJuYWwgc291cmNlIG1hcCByZXByZXNlbnRhdGlvbiBvZiBhIHNpbmdsZVxuICAgQ2xvanVyZVNjcmlwdCBmaWxlIG1hcHBpbmcgb3JpZ2luYWwgdG8gZ2VuZXJhdGVkIHdpdGggYVxuICAgc2Vjb25kIHNvdXJjZSBtYXAgbWFwcGluZyBvcmlnaW5hbCBKUyB0byBnZW5lcmF0ZWQgSlMuXG4gICBUaGUgaXMgdG8gc3VwcG9ydCBzb3VyY2UgbWFwcyB0aGF0IHdvcmsgdGhyb3VnaCBtdWx0aXBsZVxuICAgY29tcGlsYXRpb24gc3RlcHMgbGlrZSBHb29nbGUgQ2xvc3VyZSBvcHRpbWl6YXRpb24gcGFzc2VzLiIsIDphcmdsaXN0cyAoW2NsanMtbWFwIGpzLW1hcF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIG1lcmdlLXNvdXJjZS1tYXBzXHJcbiBcIk1lcmdlIGFuIGludGVybmFsIHNvdXJjZSBtYXAgcmVwcmVzZW50YXRpb24gb2YgYSBzaW5nbGVcXG4gICBDbG9qdXJlU2NyaXB0IGZpbGUgbWFwcGluZyBvcmlnaW5hbCB0byBnZW5lcmF0ZWQgd2l0aCBhXFxuICAgc2Vjb25kIHNvdXJjZSBtYXAgbWFwcGluZyBvcmlnaW5hbCBKUyB0byBnZW5lcmF0ZWQgSlMuXFxuICAgVGhlIGlzIHRvIHN1cHBvcnQgc291cmNlIG1hcHMgdGhhdCB3b3JrIHRocm91Z2ggbXVsdGlwbGVcXG4gICBjb21waWxhdGlvbiBzdGVwcyBsaWtlIEdvb2dsZSBDbG9zdXJlIG9wdGltaXphdGlvbiBwYXNzZXMuXCJcclxuIFtjbGpzLW1hcCBqcy1tYXBdXHJcbiAobG9vcFxyXG4gIFtsaW5lLW1hcC1zZXEgKHNlcSBjbGpzLW1hcCkgbmV3LWxpbmVzIChzb3J0ZWQtbWFwKV1cclxuICAoaWZcclxuICAgbGluZS1tYXAtc2VxXHJcbiAgIChsZXRcclxuICAgIFtbbGluZSBjb2wtbWFwXVxyXG4gICAgIChmaXJzdCBsaW5lLW1hcC1zZXEpXHJcbiAgICAgbmV3LWNvbHNcclxuICAgICAobG9vcFxyXG4gICAgICBbY29sLW1hcC1zZXEgKHNlcSBjb2wtbWFwKSBuZXctY29scyAoc29ydGVkLW1hcCldXHJcbiAgICAgIChpZlxyXG4gICAgICAgY29sLW1hcC1zZXFcclxuICAgICAgIChsZXRcclxuICAgICAgICBbW2NvbCBpbmZvc10gKGZpcnN0IGNvbC1tYXAtc2VxKV1cclxuICAgICAgICAocmVjdXJcclxuICAgICAgICAgKG5leHQgY29sLW1hcC1zZXEpXHJcbiAgICAgICAgIChhc3NvY1xyXG4gICAgICAgICAgbmV3LWNvbHNcclxuICAgICAgICAgIGNvbFxyXG4gICAgICAgICAgKHJlZHVjZVxyXG4gICAgICAgICAgIChmblxyXG4gICAgICAgICAgICBbdiB7OmtleXMgW2dsaW5lIGdjb2xdfV1cclxuICAgICAgICAgICAgKGludG8gdiAoZ2V0LWluIGpzLW1hcCBbZ2xpbmUgZ2NvbF0pKSlcclxuICAgICAgICAgICBbXVxyXG4gICAgICAgICAgIGluZm9zKSkpKVxyXG4gICAgICAgbmV3LWNvbHMpKV1cclxuICAgIChyZWN1ciAobmV4dCBsaW5lLW1hcC1zZXEpIChhc3NvYyBuZXctbGluZXMgbGluZSBuZXctY29scykpKVxyXG4gICBuZXctbGluZXMpKSlcclxuIn0gezpzeW0gdXBkYXRlLXJldmVyc2UtcmVzdWx0LCA6bWV0YSB7OmRvYyAiSGVscGVyIGZvciBkZWNvZGUtcmV2ZXJzZS4gVGFrZSBhIHJldmVyc2Ugc291cmNlIG1hcCBhbmRcbiAgdXBkYXRlIGl0IHdpdGggYSBzZWdtZW50IG1hcC4iLCA6YXJnbGlzdHMgKFtyZXN1bHQgc2VnbWFwIGdsaW5lXSl9LCA6c291cmNlICIoZGVmblxyXG4gdXBkYXRlLXJldmVyc2UtcmVzdWx0XHJcbiBcIkhlbHBlciBmb3IgZGVjb2RlLXJldmVyc2UuIFRha2UgYSByZXZlcnNlIHNvdXJjZSBtYXAgYW5kXFxuICB1cGRhdGUgaXQgd2l0aCBhIHNlZ21lbnQgbWFwLlwiXHJcbiBbcmVzdWx0IHNlZ21hcCBnbGluZV1cclxuIChsZXRcclxuICBbezprZXlzIFtnY29sIHNvdXJjZSBsaW5lIGNvbCBuYW1lXX1cclxuICAgc2VnbWFwXHJcbiAgIGRcclxuICAgezpnbGluZSBnbGluZSwgOmdjb2wgZ2NvbH1cclxuICAgZFxyXG4gICAoaWYgbmFtZSAoYXNzb2MgZCA6bmFtZSBuYW1lKSBkKV1cclxuICAodXBkYXRlLWluXHJcbiAgIHJlc3VsdFxyXG4gICBbc291cmNlXVxyXG4gICAoZm5pbFxyXG4gICAgKGZuXHJcbiAgICAgW21dXHJcbiAgICAgKHVwZGF0ZS1pblxyXG4gICAgICBtXHJcbiAgICAgIFtsaW5lXVxyXG4gICAgICAoZm5pbFxyXG4gICAgICAgKGZuIFttXSAodXBkYXRlLWluIG0gW2NvbF0gKGZuaWwgKGZuIFt2XSAoY29uaiB2IGQpKSBbXSkpKVxyXG4gICAgICAgKHNvcnRlZC1tYXApKSkpXHJcbiAgICAoc29ydGVkLW1hcCkpKSkpXHJcbiJ9IHs6c3ltIGluZGV4ZWQtc291cmNlcywgOm1ldGEgezpkb2MgIlRha2UgYSBzZXEgb2Ygc291cmNlIGZpbGUgbmFtZXMgYW5kIHJldHVybiBhIG1hcCBmcm9tXG4gICBmaWxlIG51bWJlciB0byBpbnRlZ2VyIGluZGV4LiBGb3IgcmV2ZXJzZSBzb3VyY2UgbWFwcy4iLCA6YXJnbGlzdHMgKFtzb3VyY2VzXSl9LCA6c291cmNlICIoZGVmblxyXG4gaW5kZXhlZC1zb3VyY2VzXHJcbiBcIlRha2UgYSBzZXEgb2Ygc291cmNlIGZpbGUgbmFtZXMgYW5kIHJldHVybiBhIG1hcCBmcm9tXFxuICAgZmlsZSBudW1iZXIgdG8gaW50ZWdlciBpbmRleC4gRm9yIHJldmVyc2Ugc291cmNlIG1hcHMuXCJcclxuIFtzb3VyY2VzXVxyXG4gKC0+PlxyXG4gIHNvdXJjZXNcclxuICAobWFwLWluZGV4ZWQgKGZuIFthIGJdIFthIGJdKSlcclxuICAocmVkdWNlIChmbiBbbSBbaSB2XV0gKGFzc29jIG0gdiBpKSkge30pKSlcclxuIn0gezpzeW0gc2VnLWNvbWJpbmUsIDptZXRhIHs6ZG9jICJDb21iaW5lIGEgc291cmNlIG1hcCBzZWdtZW50IHZlY3RvciBhbmQgYSByZWxhdGl2ZVxuICAgc291cmNlIG1hcCBzZWdtZW50IHZlY3RvciBhbmQgY29tYmluZSB0aGVtIHRvIGdldFxuICAgYW4gYWJzb2x1dGUgc2VnbWVudCBwb3NpdGl0b24gaW5mb3JtYXRpb24gYXMgYSB2ZWN0b3IuIiwgOmFyZ2xpc3RzIChbc2VnIHJlbHNlZ10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHNlZy1jb21iaW5lXHJcbiBcIkNvbWJpbmUgYSBzb3VyY2UgbWFwIHNlZ21lbnQgdmVjdG9yIGFuZCBhIHJlbGF0aXZlXFxuICAgc291cmNlIG1hcCBzZWdtZW50IHZlY3RvciBhbmQgY29tYmluZSB0aGVtIHRvIGdldFxcbiAgIGFuIGFic29sdXRlIHNlZ21lbnQgcG9zaXRpdG9uIGluZm9ybWF0aW9uIGFzIGEgdmVjdG9yLlwiXHJcbiBbc2VnIHJlbHNlZ11cclxuIChsZXRcclxuICBbW2djb2wgc291cmNlIGxpbmUgY29sIG5hbWVdXHJcbiAgIHNlZ1xyXG4gICBbcmdjb2wgcnNvdXJjZSBybGluZSByY29sIHJuYW1lXVxyXG4gICByZWxzZWdcclxuICAgbnNlZ1xyXG4gICBbKCsgZ2NvbCByZ2NvbClcclxuICAgICgrIChvciBzb3VyY2UgMCkgcnNvdXJjZSlcclxuICAgICgrIChvciBsaW5lIDApIHJsaW5lKVxyXG4gICAgKCsgKG9yIGNvbCAwKSByY29sKVxyXG4gICAgKCsgKG9yIG5hbWUgMCkgcm5hbWUpXV1cclxuICAoaWYgbmFtZSAod2l0aC1tZXRhIG5zZWcgezpuYW1lICgrIG5hbWUgcm5hbWUpfSkgbnNlZykpKVxyXG4ifSksIG9ha2NsanMudG9vbHMucmVhZGVyLmltcGwuY29tbW9ucyAoezpzeW0gbWF0Y2gtbnVtYmVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBtYXRjaC1udW1iZXJcclxuIFtzXVxyXG4gKGlmXHJcbiAgKG1hdGNoZXM/IGludC1wYXR0ZXJuIHMpXHJcbiAgKG1hdGNoLWludCBzKVxyXG4gIChpZlxyXG4gICAobWF0Y2hlcz8gZmxvYXQtcGF0dGVybiBzKVxyXG4gICAobWF0Y2gtZmxvYXQgcylcclxuICAgKHdoZW4gKG1hdGNoZXM/IHJhdGlvLXBhdHRlcm4gcykgKG1hdGNoLXJhdGlvIHMpKSkpKVxyXG4ifSB7OnN5bSBza2lwLWxpbmUsIDptZXRhIHs6ZG9jICJBZHZhbmNlcyB0aGUgcmVhZGVyIHRvIHRoZSBlbmQgb2YgYSBsaW5lLiBSZXR1cm5zIHRoZSByZWFkZXIiLCA6YXJnbGlzdHMgKFtyZWFkZXJdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBza2lwLWxpbmVcclxuIFwiQWR2YW5jZXMgdGhlIHJlYWRlciB0byB0aGUgZW5kIG9mIGEgbGluZS4gUmV0dXJucyB0aGUgcmVhZGVyXCJcclxuIFtyZWFkZXJdXHJcbiAobG9vcCBbXSAod2hlbi1ub3QgKG5ld2xpbmU/IChyZWFkLWNoYXIgcmVhZGVyKSkgKHJlY3VyKSkpXHJcbiByZWFkZXIpXHJcbiJ9IHs6c3ltIGludC1wYXR0ZXJuLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxyXG4gaW50LXBhdHRlcm5cclxuICNcIl4oWy0rXT8pKD86KDApfChbMS05XVswLTldKil8MFt4WF0oWzAtOUEtRmEtZl0rKXwwKFswLTddKyl8KFsxLTldWzAtOV0/KVtyUl0oWzAtOUEtWmEtel0rKXwwWzAtOV0rKShOKT8kXCIpXHJcbiJ9IHs6c3ltIHJlYWQtY29tbWVudCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgJiBfXSl9LCA6c291cmNlICIoZGVmbiByZWFkLWNvbW1lbnQgW3JkciAmIF9dIChza2lwLWxpbmUgcmRyKSlcclxuIn0gezpzeW0gcGFyc2Utc3ltYm9sLCA6bWV0YSB7OmRvYyAiUGFyc2VzIGEgc3RyaW5nIGludG8gYSB2ZWN0b3Igb2YgdGhlIG5hbWVzcGFjZSBhbmQgc3ltYm9sIiwgOmFyZ2xpc3RzIChbdG9rZW5dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBwYXJzZS1zeW1ib2xcclxuIFwiUGFyc2VzIGEgc3RyaW5nIGludG8gYSB2ZWN0b3Igb2YgdGhlIG5hbWVzcGFjZSBhbmQgc3ltYm9sXCJcclxuIFt0b2tlbl1cclxuICh3aGVuLW5vdFxyXG4gIChvclxyXG4gICAoaWRlbnRpY2FsPyBcIlwiIHRva2VuKVxyXG4gICAodHJ1ZT8gKC50ZXN0ICNcIjokXCIgdG9rZW4pKVxyXG4gICAodHJ1ZT8gKC50ZXN0ICNcIl46OlwiIHRva2VuKSkpXHJcbiAgKGxldFxyXG4gICBbbnMtaWR4XHJcbiAgICAoLmluZGV4T2YgdG9rZW4gXCIvXCIpXHJcbiAgICBuc1xyXG4gICAgKHdoZW4gKHBvcz8gbnMtaWR4KSAoc3VicyB0b2tlbiAwIG5zLWlkeCkpXVxyXG4gICAoaWYtbm90XHJcbiAgICAobmlsPyBucylcclxuICAgIChsZXRcclxuICAgICBbbnMtaWR4IChpbmMgbnMtaWR4KV1cclxuICAgICAod2hlbi1ub3RcclxuICAgICAgKD09IG5zLWlkeCAoY291bnQgdG9rZW4pKVxyXG4gICAgICAobGV0XHJcbiAgICAgICBbc3ltIChzdWJzIHRva2VuIG5zLWlkeCldXHJcbiAgICAgICAod2hlblxyXG4gICAgICAgIChhbmRcclxuICAgICAgICAgKG5vdCAobnVtZXJpYz8gKG50aCBzeW0gMCkpKVxyXG4gICAgICAgICAobm90IChpZGVudGljYWw/IFwiXCIgc3ltKSlcclxuICAgICAgICAgKGZhbHNlPyAoLnRlc3QgI1wiOiRcIiBucykpXHJcbiAgICAgICAgIChvciAoaWRlbnRpY2FsPyBzeW0gXCIvXCIpICg9PSAtMSAoLmluZGV4T2Ygc3ltIFwiL1wiKSkpKVxyXG4gICAgICAgIFtucyBzeW1dKSkpKVxyXG4gICAgKHdoZW5cclxuICAgICAob3IgKGlkZW50aWNhbD8gdG9rZW4gXCIvXCIpICg9PSAtMSAoLmluZGV4T2YgdG9rZW4gXCIvXCIpKSlcclxuICAgICBbbmlsIHRva2VuXSkpKSkpXHJcbiJ9IHs6c3ltIG51bWJlci1saXRlcmFsPywgOm1ldGEgezpkb2MgIkNoZWNrcyB3aGV0aGVyIHRoZSByZWFkZXIgaXMgYXQgdGhlIHN0YXJ0IG9mIGEgbnVtYmVyIGxpdGVyYWwiLCA6YXJnbGlzdHMgKFtyZWFkZXIgaW5pdGNoXSl9LCA6c291cmNlICIoZGVmblxyXG4gbnVtYmVyLWxpdGVyYWw/XHJcbiBcIkNoZWNrcyB3aGV0aGVyIHRoZSByZWFkZXIgaXMgYXQgdGhlIHN0YXJ0IG9mIGEgbnVtYmVyIGxpdGVyYWxcIlxyXG4gW3JlYWRlciBpbml0Y2hdXHJcbiAob3JcclxuICAobnVtZXJpYz8gaW5pdGNoKVxyXG4gIChhbmRcclxuICAgKG9yIChpZGVudGljYWw/IFxcKyBpbml0Y2gpIChpZGVudGljYWw/IFxcLSBpbml0Y2gpKVxyXG4gICAobnVtZXJpYz8gKHBlZWstY2hhciByZWFkZXIpKSkpKVxyXG4ifSB7OnN5bSByZWFkLXBhc3QsIDptZXRhIHs6ZG9jICJSZWFkIHVudGlsIGZpcnN0IGNoYXJhY3RlciB0aGF0IGRvZXNuJ3QgbWF0Y2ggcHJlZCwgcmV0dXJuaW5nXG4gICBjaGFyLiIsIDphcmdsaXN0cyAoW3ByZWQgcmRyXSl9LCA6c291cmNlICIoZGVmblxyXG4gcmVhZC1wYXN0XHJcbiBcIlJlYWQgdW50aWwgZmlyc3QgY2hhcmFjdGVyIHRoYXQgZG9lc24ndCBtYXRjaCBwcmVkLCByZXR1cm5pbmdcXG4gICBjaGFyLlwiXHJcbiBbcHJlZCByZHJdXHJcbiAobG9vcCBbY2ggKHJlYWQtY2hhciByZHIpXSAoaWYgKHByZWQgY2gpIChyZWN1ciAocmVhZC1jaGFyIHJkcikpIGNoKSkpXHJcbiJ9IHs6c3ltIGZsb2F0LXBhdHRlcm4sIDptZXRhIHt9LCA6c291cmNlICIoZGVmIGZsb2F0LXBhdHRlcm4gI1wiKFstK10/WzAtOV0rKFxcLlswLTldKik/KFtlRV1bLStdP1swLTldKyk/KShNKT9cIilcclxuIn0gezpzeW0gbWF0Y2hlcz8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcGF0dGVybiBzXSl9LCA6c291cmNlICIoZGVmblxyXG4gbWF0Y2hlcz9cclxuIFtwYXR0ZXJuIHNdXHJcbiAobGV0IFtbbWF0Y2hdIChyZS1maW5kIHBhdHRlcm4gcyldIChpZGVudGljYWw/IG1hdGNoIHMpKSlcclxuIn0gezpzeW0gdGhyb3dpbmctcmVhZGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21zZ10pfSwgOnNvdXJjZSAiKGRlZm4gdGhyb3dpbmctcmVhZGVyIFttc2ddIChmbiBbcmRyICYgX10gKHJlYWRlci1lcnJvciByZHIgbXNnKSkpXHJcbiJ9IHs6c3ltIHJhdGlvLXBhdHRlcm4sIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHJhdGlvLXBhdHRlcm4gI1wiKFstK10/WzAtOV0rKS8oWzAtOV0rKVwiKVxyXG4ifSksIGR5bmFkb2MudHJhbnNmb3JtICh7OnN5bSB3aXRoLWZvY3VzLT5iaW5kaW5nLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3dpdGgtZm9jdXNdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB3aXRoLWZvY3VzLT5iaW5kaW5nXHJcbiBbd2l0aC1mb2N1c11cclxuIChsZXRcclxuICBbZm9ybVxyXG4gICAob3IgKDpmb3JtIHdpdGgtZm9jdXMpICg6YmluZGluZyB3aXRoLWZvY3VzKSlcclxuICAgW2JpbmRpbmctdHlwZSBiaW5kaW5nLXZhbF1cclxuICAgZm9ybV1cclxuICAod2hlbiAoI3s6bG9jYWwtc3ltYm9sIDpzeW19IGJpbmRpbmctdHlwZSkgYmluZGluZy12YWwpKSlcclxuIn0gezpzeW0gYWRkLWZvY3VzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2Zvcm0gd2l0aC1mb2N1cyBib2R5XSl9LCA6c291cmNlICIoZGVmblxyXG4gYWRkLWZvY3VzXHJcbiBbZm9ybSB3aXRoLWZvY3VzIGJvZHldXHJcbiAoaWYtbGV0XHJcbiAgW2JpbmQgKHdpdGgtZm9jdXMtPmJpbmRpbmcgd2l0aC1mb2N1cyldXHJcbiAgKHBvc3R3YWxrIChmbiBbeF0gKGlmICg9IHggYmluZCkgZm9ybSB4KSkgYm9keSlcclxuICBmb3JtKSlcclxuIn0gezpzeW0gYWRkLWNhcmQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZm9ybSB3aXRoLWNhcmQgaWRdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBhZGQtY2FyZFxyXG4gW2Zvcm0gd2l0aC1jYXJkIGlkXVxyXG4gKGxpc3RcclxuICAnbGV0XHJcbiAgW3dpdGgtY2FyZFxyXG4gICAjPyg6Y2xqcyAobGlzdCAocXVvdGUgLmdldEVsZW1lbnRCeUlkKSAocXVvdGUganMvZG9jdW1lbnQpIGlkKSA6Y2xqIGlkKV1cclxuICBmb3JtKSlcclxuIn0gezpzeW0gYWRkLWNhbGxiYWNrLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2Zvcm0gd2l0aC1jYWxsYmFja10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGFkZC1jYWxsYmFja1xyXG4gW2Zvcm0gd2l0aC1jYWxsYmFja11cclxuIChsaXN0XHJcbiAgJ2xldFxyXG4gIFsnZXMtY2hhbm5lbFxyXG4gICAnKGR5bmFkb2MuYWxpYXNlcy9jaGFuKVxyXG4gICB3aXRoLWNhbGxiYWNrXHJcbiAgICcoZm4gW2RhdGFdIChkeW5hZG9jLmFsaWFzZXMvcHV0ISBlcy1jaGFubmVsIGRhdGEpKV1cclxuICBmb3JtXHJcbiAgJyhkeW5hZG9jLmFsaWFzZXMvPCEhIGVzLWNoYW5uZWwpKSlcclxuIn0gezpzeW0gdHJhbnNmb3JtLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW2V4YW1wbGVdIFt7OmtleXMgW2JvZHkgaWQgd2l0aC1mb2N1cyB3aXRoLWNhcmQgd2l0aC1jYWxsYmFja119IGZvcm1dXX0sIDpzb3VyY2UgIihkZWZuXHJcbiB0cmFuc2Zvcm1cclxuIChbZXhhbXBsZV1cclxuICAodHJhbnNmb3JtXHJcbiAgIGV4YW1wbGVcclxuICAgKG9yIChzb21lLT4gZXhhbXBsZSA6d2l0aC1mb2N1cyA6aW5pdC1leHByKSAoOmJvZHkgZXhhbXBsZSkpKSlcclxuIChbezprZXlzIFtib2R5IGlkIHdpdGgtZm9jdXMgd2l0aC1jYXJkIHdpdGgtY2FsbGJhY2tdfSBmb3JtXVxyXG4gIChjb25kLT5cclxuICAgZm9ybVxyXG4gICAoc29tZT8gd2l0aC1mb2N1cylcclxuICAgKGFkZC1mb2N1cyB3aXRoLWZvY3VzIGJvZHkpXHJcbiAgIChzb21lPyB3aXRoLWNhcmQpXHJcbiAgIChhZGQtY2FyZCB3aXRoLWNhcmQgaWQpXHJcbiAgIChzb21lPyB3aXRoLWNhbGxiYWNrKVxyXG4gICAoYWRkLWNhbGxiYWNrIHdpdGgtY2FsbGJhY2spKSkpXHJcbiJ9KSwgb2RveWxlLnJ1bGVzICh7OnN5bSAtPnJ1bGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbW3J1bGUtbmFtZSBydWxlXV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIC0+cnVsZVxyXG4gW1tydWxlLW5hbWUgcnVsZV1dXHJcbiAobGV0XHJcbiAgW3s6a2V5cyBbd2hhdC1ibG9jayB3aGVuLWJsb2NrIHRoZW4tYmxvY2tdfVxyXG4gICBydWxlXHJcbiAgIGNvbmRpdGlvbnNcclxuICAgKG1hcHYgLT5jb25kaXRpb24gKDpib2R5IHdoYXQtYmxvY2spKVxyXG4gICB3aGVuLWJvZHlcclxuICAgKDpib2R5IHdoZW4tYmxvY2spXHJcbiAgIHdoZW4tYm9keVxyXG4gICAoaWYgKD4gKGNvdW50IHdoZW4tYm9keSkgMSkgKGNvbnMgJ2FuZCB3aGVuLWJvZHkpIChmaXJzdCB3aGVuLWJvZHkpKVxyXG4gICB0aGVuLWJvZHlcclxuICAgKDpib2R5IHRoZW4tYmxvY2spXHJcbiAgIHN5bXNcclxuICAgKC0+PiBjb25kaXRpb25zIChtYXBjYXQgOmJpbmRpbmdzKSAobWFwIDpzeW0pIHNldCB2ZWMpXVxyXG4gIHs6cnVsZS1uYW1lIHJ1bGUtbmFtZSxcclxuICAgOmZuLW5hbWVcclxuICAgKC0+XHJcbiAgICAoc3RyIChuYW1lc3BhY2UgcnVsZS1uYW1lKSBcIi1cIiAobmFtZSBydWxlLW5hbWUpKVxyXG4gICAgKHN0ci9yZXBsYWNlIFwiLlwiIFwiLVwiKVxyXG4gICAgc3ltYm9sKSxcclxuICAgOmNvbmRpdGlvbnMgY29uZGl0aW9ucyxcclxuICAgOmFyZyB7OmtleXMgc3ltc30sXHJcbiAgIDp3aGVuLWJvZHkgd2hlbi1ib2R5LFxyXG4gICA6dGhlbi1ib2R5IHRoZW4tYm9keX0pKVxyXG4ifSB7OnN5bSBmaXJlLXJ1bGVzLCA6bWV0YSB7OmRvYyAiRmlyZXMgOnRoZW4gYmxvY2tzIGZvciBhbnkgcnVsZXMgd2l0aCBhIGNvbXBsZXRlIHNldCBvZiBtYXRjaGVzLiIsIDphcmdsaXN0cyAoW3Nlc3Npb25dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBmaXJlLXJ1bGVzXHJcbiBcIkZpcmVzIDp0aGVuIGJsb2NrcyBmb3IgYW55IHJ1bGVzIHdpdGggYSBjb21wbGV0ZSBzZXQgb2YgbWF0Y2hlcy5cIlxyXG4gW3Nlc3Npb25dXHJcbiAobGV0XHJcbiAgW3RoZW4tcXVldWUgKDp0aGVuLXF1ZXVlIHNlc3Npb24pXVxyXG4gIChpZlxyXG4gICAoYW5kIChzZXEgdGhlbi1xdWV1ZSkgKG5pbD8gKnNlc3Npb24qKSlcclxuICAgKGxldFxyXG4gICAgWyp0cmlnZ2VyLXF1ZXVlXHJcbiAgICAgKHZvbGF0aWxlISBbXSlcclxuICAgICBzZXNzaW9uXHJcbiAgICAgKHJlZHVjZVxyXG4gICAgICAoZm5cclxuICAgICAgIFtzZXNzaW9uIFtub2RlLWlkIGlkK2F0dHJzXV1cclxuICAgICAgIChsZXRcclxuICAgICAgICBbbm9kZS1wYXRoXHJcbiAgICAgICAgIFs6YmV0YS1ub2RlcyBub2RlLWlkXVxyXG4gICAgICAgICBub2RlXHJcbiAgICAgICAgIChnZXQtaW4gc2Vzc2lvbiBub2RlLXBhdGgpXHJcbiAgICAgICAgIHs6a2V5cyBbbWF0Y2hlcyBydWxlLW5hbWVdfVxyXG4gICAgICAgICBub2RlXHJcbiAgICAgICAgIHJ1bGUtZm5cclxuICAgICAgICAgKG9yXHJcbiAgICAgICAgICAoZ2V0LWluIHNlc3Npb24gWzpydWxlLWZucyBydWxlLW5hbWVdKVxyXG4gICAgICAgICAgKHRocm93IChleC1pbmZvIChzdHIgcnVsZS1uYW1lIFwiIG5vdCBmb3VuZFwiKSB7fSkpKV1cclxuICAgICAgICAod2hlbi1sZXRcclxuICAgICAgICAgW3s6a2V5cyBbdmFycyBlbmFibGVkXX0gKGdldCBtYXRjaGVzIGlkK2F0dHJzKV1cclxuICAgICAgICAgKHdoZW4gZW5hYmxlZCAodnN3YXAhICp0cmlnZ2VyLXF1ZXVlIGNvbmogW3J1bGUtZm4gdmFyc10pKSlcclxuICAgICAgICAodXBkYXRlLWluIHNlc3Npb24gbm9kZS1wYXRoIGFzc29jIDp0cmlnZ2VyIGZhbHNlKSkpXHJcbiAgICAgIHNlc3Npb25cclxuICAgICAgdGhlbi1xdWV1ZSlcclxuICAgICBzZXNzaW9uXHJcbiAgICAgKGFzc29jIHNlc3Npb24gOnRoZW4tcXVldWUgI3t9KV1cclxuICAgICgtPj5cclxuICAgICBAKnRyaWdnZXItcXVldWVcclxuICAgICAocmVkdWNlXHJcbiAgICAgIChmblxyXG4gICAgICAgW3Nlc3Npb24gW3J1bGUtZm4gbWF0Y2hdXVxyXG4gICAgICAgKGJpbmRpbmdcclxuICAgICAgICBbKnNlc3Npb24qXHJcbiAgICAgICAgIHNlc3Npb25cclxuICAgICAgICAgKm11dGFibGUtc2Vzc2lvbipcclxuICAgICAgICAgKHZvbGF0aWxlISBzZXNzaW9uKVxyXG4gICAgICAgICAqbWF0Y2gqXHJcbiAgICAgICAgIG1hdGNoXVxyXG4gICAgICAgIChydWxlLWZuIG1hdGNoKVxyXG4gICAgICAgIEAqbXV0YWJsZS1zZXNzaW9uKikpXHJcbiAgICAgIHNlc3Npb24pXHJcbiAgICAgZmlyZS1ydWxlcykpXHJcbiAgIHNlc3Npb24pKSlcclxuIn0gezpzeW0gaW5zZXJ0LCA6bWV0YSB7OmRvYyAiSW5zZXJ0cyBhIGZhY3QgaW50byB0aGUgc2Vzc2lvbi4gQ2FuIG9wdGlvbmFsbHkgaW5zZXJ0IG11bHRpcGxlIGZhY3RzIHdpdGggdGhlIHNhbWUgaWQuIiwgOmFyZ2xpc3RzIFtbc2Vzc2lvbiBpZCBhdHRyLT52YWx1ZV0gW3Nlc3Npb24gaWQgYXR0ciB2YWx1ZV1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGluc2VydFxyXG4gXCJJbnNlcnRzIGEgZmFjdCBpbnRvIHRoZSBzZXNzaW9uLiBDYW4gb3B0aW9uYWxseSBpbnNlcnQgbXVsdGlwbGUgZmFjdHMgd2l0aCB0aGUgc2FtZSBpZC5cIlxyXG4gKFtzZXNzaW9uIGlkIGF0dHItPnZhbHVlXVxyXG4gIChyZWR1Y2Uta3ZcclxuICAgKGZuIFtzZXNzaW9uIGF0dHIgdmFsdWVdIChpbnNlcnQgc2Vzc2lvbiBpZCBhdHRyIHZhbHVlKSlcclxuICAgc2Vzc2lvblxyXG4gICBhdHRyLT52YWx1ZSkpXHJcbiAoW3Nlc3Npb24gaWQgYXR0ciB2YWx1ZV1cclxuICAoLT4+XHJcbiAgIChnZXQtYWxwaGEtbm9kZXMtZm9yLWZhY3RcclxuICAgIHNlc3Npb25cclxuICAgICg6YWxwaGEtbm9kZSBzZXNzaW9uKVxyXG4gICAgaWRcclxuICAgIGF0dHJcclxuICAgIHZhbHVlXHJcbiAgICB0cnVlKVxyXG4gICAodXBzZXJ0LWZhY3Qgc2Vzc2lvbiBpZCBhdHRyIHZhbHVlKSkpKVxyXG4ifSB7OnN5bSAqbWF0Y2gqLCA6bWV0YSB7OmRvYyAiUHJvdmlkZXMgYSBtYXAgb2YgYWxsIHRoZSBtYXRjaGVkIHZhbHVlcyBmcm9tIGluc2lkZSBhIDp0aGVuIGJsb2NrLiJ9LCA6c291cmNlICIoZGVmICptYXRjaCogbmlsKVxyXG4ifSB7OnN5bSBhZGQtcnVsZSwgOm1ldGEgezpkb2MgIkFkZHMgYSBydWxlIHRvIHRoZSBnaXZlbiBzZXNzaW9uLiIsIDphcmdsaXN0cyAoW3Nlc3Npb24gcnVsZV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGFkZC1ydWxlXHJcbiBcIkFkZHMgYSBydWxlIHRvIHRoZSBnaXZlbiBzZXNzaW9uLlwiXHJcbiBbc2Vzc2lvbiBydWxlXVxyXG4gKHdoZW5cclxuICAoZ2V0LWluIHNlc3Npb24gWzpydWxlLWZucyAoOm5hbWUgcnVsZSldKVxyXG4gICh0aHJvdyAoZXgtaW5mbyAoc3RyICg6bmFtZSBydWxlKSBcIiBhbHJlYWR5IGV4aXN0cyBpbiBzZXNzaW9uXCIpIHt9KSkpXHJcbiAobGV0XHJcbiAgW2NvbmRpdGlvbnNcclxuICAgKDpjb25kaXRpb25zIHJ1bGUpXHJcbiAgIHNlc3Npb25cclxuICAgKHJlZHVjZSBhZGQtY29uZGl0aW9uIHNlc3Npb24gY29uZGl0aW9ucylcclxuICAgbGVhZi1ub2RlLWlkXHJcbiAgICgtPiBzZXNzaW9uIDptZW0tbm9kZS1pZHMgbGFzdClcclxuICAgYmluZGluZ3NcclxuICAgKDpiaW5kaW5ncyBzZXNzaW9uKVxyXG4gICBzZXNzaW9uXHJcbiAgIChyZWR1Y2VcclxuICAgIChmblxyXG4gICAgIFtzZXNzaW9uIG1lbS1ub2RlLWlkXVxyXG4gICAgICh1cGRhdGUtaW5cclxuICAgICAgc2Vzc2lvblxyXG4gICAgICBbOmJldGEtbm9kZXMgbWVtLW5vZGUtaWRdXHJcbiAgICAgIChmblxyXG4gICAgICAgW21lbS1ub2RlXVxyXG4gICAgICAgKGFzc29jXHJcbiAgICAgICAgbWVtLW5vZGVcclxuICAgICAgICA6cnVsZS1uYW1lXHJcbiAgICAgICAgKDpuYW1lIHJ1bGUpXHJcbiAgICAgICAgOmxlYWYtbm9kZS1pZFxyXG4gICAgICAgIGxlYWYtbm9kZS1pZCkpKSlcclxuICAgIHNlc3Npb25cclxuICAgICg6bWVtLW5vZGUtaWRzIHNlc3Npb24pKVxyXG4gICBzZXNzaW9uXHJcbiAgIChyZWR1Y2VcclxuICAgIChmblxyXG4gICAgIFtzZXNzaW9uIGpvaW4tbm9kZS1pZF1cclxuICAgICAodXBkYXRlLWluXHJcbiAgICAgIHNlc3Npb25cclxuICAgICAgWzpiZXRhLW5vZGVzIGpvaW4tbm9kZS1pZF1cclxuICAgICAgKGZuXHJcbiAgICAgICBbam9pbi1ub2RlXVxyXG4gICAgICAgKGFzc29jXHJcbiAgICAgICAgam9pbi1ub2RlXHJcbiAgICAgICAgOmlkLWtleVxyXG4gICAgICAgIChzb21lXHJcbiAgICAgICAgIChmblxyXG4gICAgICAgICAgW3s6a2V5cyBbZmllbGQga2V5XX1dXHJcbiAgICAgICAgICAod2hlblxyXG4gICAgICAgICAgIChhbmQgKD0gOmlkIGZpZWxkKSAoY29udGFpbnM/ICg6am9pbnMgYmluZGluZ3MpIGtleSkpXHJcbiAgICAgICAgICAga2V5KSlcclxuICAgICAgICAgKC0+IGpvaW4tbm9kZSA6Y29uZGl0aW9uIDpiaW5kaW5ncykpXHJcbiAgICAgICAgOmRpc2FibGUtZmFzdC11cGRhdGVzXHJcbiAgICAgICAgKGNvbnRhaW5zP1xyXG4gICAgICAgICAoOmpvaW5zIGJpbmRpbmdzKVxyXG4gICAgICAgICAoc29tZVxyXG4gICAgICAgICAgKGZuIFt7OmtleXMgW2ZpZWxkIGtleV19XSAod2hlbiAoPSA6dmFsdWUgZmllbGQpIGtleSkpXHJcbiAgICAgICAgICAoLT4gam9pbi1ub2RlIDpjb25kaXRpb24gOmJpbmRpbmdzKSkpKSkpKVxyXG4gICAgc2Vzc2lvblxyXG4gICAgKDpqb2luLW5vZGUtaWRzIHNlc3Npb24pKV1cclxuICAoLT5cclxuICAgc2Vzc2lvblxyXG4gICAoYXNzb2MtaW4gWzpiZXRhLW5vZGVzIGxlYWYtbm9kZS1pZCA6ZmlsdGVyLWZuXSAoOmZpbHRlci1mbiBydWxlKSlcclxuICAgKGFzc29jLWluIFs6cnVsZS1pZHMgKDpuYW1lIHJ1bGUpXSBsZWFmLW5vZGUtaWQpXHJcbiAgIChhc3NvYy1pbiBbOnJ1bGUtZm5zICg6bmFtZSBydWxlKV0gKDpydWxlLWZuIHJ1bGUpKVxyXG4gICAoZGlzc29jIDptZW0tbm9kZS1pZHMgOmpvaW4tbm9kZS1pZHMgOmJpbmRpbmdzKSkpKVxyXG4ifSB7OnN5bSAtPnNlc3Npb24sIDptZXRhIHs6ZG9jICJSZXR1cm5zIGFuIGVtcHR5IHNlc3Npb24uIiwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxyXG4gLT5zZXNzaW9uXHJcbiBcIlJldHVybnMgYW4gZW1wdHkgc2Vzc2lvbi5cIlxyXG4gW11cclxuIChtYXAtPlNlc3Npb25cclxuICB7OmFscGhhLW5vZGVcclxuICAgKG1hcC0+QWxwaGFOb2RlXHJcbiAgICB7OnBhdGggbmlsLFxyXG4gICAgIDp0ZXN0LWZpZWxkIG5pbCxcclxuICAgICA6dGVzdC12YWx1ZSBuaWwsXHJcbiAgICAgOmNoaWxkcmVuIFtdLFxyXG4gICAgIDpzdWNjZXNzb3JzIFtdLFxyXG4gICAgIDpmYWN0cyB7fX0pLFxyXG4gICA6YmV0YS1ub2RlcyB7fSxcclxuICAgOmxhc3QtaWQgLTEsXHJcbiAgIDpydWxlLWZucyB7fSxcclxuICAgOnJ1bGUtaWRzIHt9LFxyXG4gICA6aWQtYXR0ci1ub2RlcyB7fSxcclxuICAgOnRoZW4tcXVldWUgI3t9fSkpXHJcbiJ9IHs6c3ltIHJlc2V0ISwgOm1ldGEgezpkb2MgIk11dGF0ZXMgdGhlIHNlc3Npb24gZnJvbSBhIDp0aGVuIGJsb2NrLiIsIDphcmdsaXN0cyAoW25ldy1zZXNzaW9uXSl9LCA6c291cmNlICIoZGVmblxyXG4gcmVzZXQhXHJcbiBcIk11dGF0ZXMgdGhlIHNlc3Npb24gZnJvbSBhIDp0aGVuIGJsb2NrLlwiXHJcbiBbbmV3LXNlc3Npb25dXHJcbiAoaWZcclxuICAqbXV0YWJsZS1zZXNzaW9uKlxyXG4gIChpZlxyXG4gICAoPSAqc2Vzc2lvbiogQCptdXRhYmxlLXNlc3Npb24qKVxyXG4gICAodnJlc2V0ISAqbXV0YWJsZS1zZXNzaW9uKiBuZXctc2Vzc2lvbilcclxuICAgKHRocm93XHJcbiAgICAoZXgtaW5mbyBcIllvdSBtYXkgb25seSBjYWxsIGByZXNldCFgIG9uY2UgaW4gYSA6dGhlbiBibG9ja1wiIHt9KSkpXHJcbiAgKHRocm93IChleC1pbmZvIFwiWW91IG1heSBvbmx5IGNhbGwgYHJlc2V0IWAgaW4gYSA6dGhlbiBibG9ja1wiIHt9KSkpKVxyXG4ifSB7OnN5bSByZXRyYWN0ISwgOm1ldGEgezpkb2MgIlNhbWUgYXMgYHJldHJhY3RgIGJ1dCBjYW4gYmUgdXNlZCBpbnNpZGUgb2YgYSA6dGhlbiBibG9jay5cbiAgXG4gIFRoZSBmdW5jdGlvbiBpcyBERVBSRUNBVEVELiBJdCB3aWxsIG5ldmVyIGJlIHJlbW92ZWQsIGJ1dCBwcmVmZXIgdGhpcyBpbnN0ZWFkOlxuICBcbiAgKG8vcmVzZXQhIChvL3JldHJhY3Qgby8qc2Vzc2lvbiogaWQgYXR0cikpIiwgOmFyZ2xpc3RzIChbaWQgYXR0cl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJldHJhY3QhXHJcbiBcIlNhbWUgYXMgYHJldHJhY3RgIGJ1dCBjYW4gYmUgdXNlZCBpbnNpZGUgb2YgYSA6dGhlbiBibG9jay5cXG4gIFxcbiAgVGhlIGZ1bmN0aW9uIGlzIERFUFJFQ0FURUQuIEl0IHdpbGwgbmV2ZXIgYmUgcmVtb3ZlZCwgYnV0IHByZWZlciB0aGlzIGluc3RlYWQ6XFxuICBcXG4gIChvL3Jlc2V0ISAoby9yZXRyYWN0IG8vKnNlc3Npb24qIGlkIGF0dHIpKVwiXHJcbiBbaWQgYXR0cl1cclxuIChpZlxyXG4gICptdXRhYmxlLXNlc3Npb24qXHJcbiAgKHZzd2FwISAqbXV0YWJsZS1zZXNzaW9uKiByZXRyYWN0IGlkIGF0dHIpXHJcbiAgKHRocm93XHJcbiAgIChleC1pbmZvIFwiVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBpbiBhIDp0aGVuIGJsb2NrXCIge30pKSkpXHJcbiJ9IHs6c3ltIGluc2VydCEsIDptZXRhIHs6ZG9jICJTYW1lIGFzIGBpbnNlcnRgIGJ1dCBjYW4gYmUgdXNlZCBpbnNpZGUgb2YgYSA6dGhlbiBibG9jay5cbiAgXG4gIFRoZSBmdW5jdGlvbiBpcyBERVBSRUNBVEVELiBJdCB3aWxsIG5ldmVyIGJlIHJlbW92ZWQsIGJ1dCBwcmVmZXIgdGhpcyBpbnN0ZWFkOlxuICBcbiAgKG8vcmVzZXQhIChvL2luc2VydCBvLypzZXNzaW9uKiBpZCBhdHRyKSkiLCA6YXJnbGlzdHMgW1tpZCBhdHRyLT52YWx1ZV0gW2lkIGF0dHIgdmFsdWVdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBpbnNlcnQhXHJcbiBcIlNhbWUgYXMgYGluc2VydGAgYnV0IGNhbiBiZSB1c2VkIGluc2lkZSBvZiBhIDp0aGVuIGJsb2NrLlxcbiAgXFxuICBUaGUgZnVuY3Rpb24gaXMgREVQUkVDQVRFRC4gSXQgd2lsbCBuZXZlciBiZSByZW1vdmVkLCBidXQgcHJlZmVyIHRoaXMgaW5zdGVhZDpcXG4gIFxcbiAgKG8vcmVzZXQhIChvL2luc2VydCBvLypzZXNzaW9uKiBpZCBhdHRyKSlcIlxyXG4gKFtpZCBhdHRyLT52YWx1ZV1cclxuICAocnVuISAoZm4gW1thdHRyIHZhbHVlXV0gKGluc2VydCEgaWQgYXR0ciB2YWx1ZSkpIGF0dHItPnZhbHVlKSlcclxuIChbaWQgYXR0ciB2YWx1ZV1cclxuICAoaWZcclxuICAgKm11dGFibGUtc2Vzc2lvbipcclxuICAgKHZzd2FwISAqbXV0YWJsZS1zZXNzaW9uKiBpbnNlcnQgaWQgYXR0ciB2YWx1ZSlcclxuICAgKHRocm93XHJcbiAgICAoZXgtaW5mbyBcIlRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgaW4gYSA6dGhlbiBibG9ja1wiIHt9KSkpKSlcclxuIn0gezpzeW0gKnNlc3Npb24qLCA6bWV0YSB7OmRvYyAiUHJvdmlkZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIHNlc3Npb24gZnJvbSBpbnNpZGUgYSA6dGhlbiBibG9jay5cbiAgTm9ybWFsbHkgdXNlZCB0byBhbGxvdyBxdWVyeWluZyB0aGUgc2Vzc2lvbiBmcm9tIGluc2lkZSBhIHJ1bGUuIn0sIDpzb3VyY2UgIihkZWYgKnNlc3Npb24qIG5pbClcclxuIn0gezpzeW0gcmV0cmFjdCwgOm1ldGEgezpkb2MgIlJldHJhY3RzIHRoZSBmYWN0IHdpdGggdGhlIGdpdmVuIGlkICsgYXR0ciBjb21iby4iLCA6YXJnbGlzdHMgKFtzZXNzaW9uIGlkIGF0dHJdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiByZXRyYWN0XHJcbiBcIlJldHJhY3RzIHRoZSBmYWN0IHdpdGggdGhlIGdpdmVuIGlkICsgYXR0ciBjb21iby5cIlxyXG4gW3Nlc3Npb24gaWQgYXR0cl1cclxuIChsZXRcclxuICBbaWQrYXR0clxyXG4gICBbaWQgYXR0cl1cclxuICAgbm9kZS1wYXRoc1xyXG4gICAoZ2V0LWluIHNlc3Npb24gWzppZC1hdHRyLW5vZGVzIGlkK2F0dHJdKV1cclxuICAod2hlbi1ub3RcclxuICAgbm9kZS1wYXRoc1xyXG4gICAodGhyb3cgKGV4LWluZm8gKHN0ciBpZCthdHRyIFwiIG5vdCBpbiBzZXNzaW9uXCIpIHt9KSkpXHJcbiAgKHJlZHVjZVxyXG4gICAoZm5cclxuICAgIFtzZXNzaW9uIG5vZGUtcGF0aF1cclxuICAgIChsZXRcclxuICAgICBbbm9kZVxyXG4gICAgICAoZ2V0LWluIHNlc3Npb24gbm9kZS1wYXRoKVxyXG4gICAgICBmYWN0XHJcbiAgICAgIChnZXQtaW4gbm9kZSBbOmZhY3RzIGlkIGF0dHJdKV1cclxuICAgICAocmlnaHQtYWN0aXZhdGUtYWxwaGEtbm9kZVxyXG4gICAgICBzZXNzaW9uXHJcbiAgICAgIG5vZGUtcGF0aFxyXG4gICAgICAoLT5Ub2tlbiBmYWN0IDpyZXRyYWN0IG5pbCkpKSlcclxuICAgc2Vzc2lvblxyXG4gICBub2RlLXBhdGhzKSkpXHJcbiJ9IHs6c3ltIHF1ZXJ5LWFsbCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSB2ZWN0b3Igb2YgbWFwcyBjb250YWluaW5nIGFsbCB0aGUgbWF0Y2hlcyBmb3IgdGhlIGdpdmVuIHJ1bGUuIiwgOmFyZ2xpc3RzIChbc2Vzc2lvbiBydWxlLW5hbWVdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBxdWVyeS1hbGxcclxuIFwiUmV0dXJucyBhIHZlY3RvciBvZiBtYXBzIGNvbnRhaW5pbmcgYWxsIHRoZSBtYXRjaGVzIGZvciB0aGUgZ2l2ZW4gcnVsZS5cIlxyXG4gW3Nlc3Npb24gcnVsZS1uYW1lXVxyXG4gKGxldFxyXG4gIFtydWxlLWlkXHJcbiAgIChvclxyXG4gICAgKGdldC1pbiBzZXNzaW9uIFs6cnVsZS1pZHMgcnVsZS1uYW1lXSlcclxuICAgICh0aHJvdyAoZXgtaW5mbyAoc3RyIHJ1bGUtbmFtZSBcIiBub3QgaW4gc2Vzc2lvblwiKSB7fSkpKVxyXG4gICBydWxlXHJcbiAgIChnZXQtaW4gc2Vzc2lvbiBbOmJldGEtbm9kZXMgcnVsZS1pZF0pXVxyXG4gIChyZWR1Y2Uta3ZcclxuICAgKGZuIFt2IF8gezprZXlzIFt2YXJzIGVuYWJsZWRdfV0gKGlmIGVuYWJsZWQgKGNvbmogdiB2YXJzKSB2KSlcclxuICAgW11cclxuICAgKDptYXRjaGVzIHJ1bGUpKSkpXHJcbiJ9IHs6c3ltIHBhcnNlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NwZWMgY29udGVudF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHBhcnNlXHJcbiBbc3BlYyBjb250ZW50XVxyXG4gKGxldFxyXG4gIFtyZXMgKHMvY29uZm9ybSBzcGVjIGNvbnRlbnQpXVxyXG4gIChpZlxyXG4gICAoPSA6Y2xvanVyZS5zcGVjLmFscGhhL2ludmFsaWQgcmVzKVxyXG4gICAodGhyb3cgKGV4LWluZm8gKGV4cG91bmQvZXhwb3VuZC1zdHIgc3BlYyBjb250ZW50KSB7fSkpXHJcbiAgIHJlcykpKVxyXG4ifSksIGNyb3NzLXBhcmluZmVyLmNvcmUgKHs6c3ltIHBhcmVuLW1vZGUsIDptZXRhIHs6ZG9jICJSdW5zIHBhcmVuIG1vZGUgb24gdGhlIGdpdmVuIHRleHQuIiwgOmFyZ2xpc3RzIChbdGV4dCB4IGxpbmVdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBwYXJlbi1tb2RlXHJcbiBcIlJ1bnMgcGFyZW4gbW9kZSBvbiB0aGUgZ2l2ZW4gdGV4dC5cIlxyXG4gW3RleHQgeCBsaW5lXVxyXG4gIz8oOmNsaiAobGV0IFtyZXMgKHRyeSAoUGFyaW5mZXIvcGFyZW5Nb2RlIHRleHQgKGludCB4KSAoaW50IGxpbmUpIG5pbCBmYWxzZSkgKGNhdGNoIEV4Y2VwdGlvbiBfIChQYXJpbmZlci9wYXJlbk1vZGUgdGV4dCAoaW50IDApIChpbnQgMCkgbmlsIGZhbHNlKSkpXSB7OnggKC4tY3Vyc29yWCByZXMpLCA6dGV4dCAoLi10ZXh0IHJlcyl9KSA6Y2xqcyAobGV0IFtyZXMgKC5wYXJlbk1vZGUganMvcGFyaW5mZXIgdGV4dCAjanMgezpjdXJzb3JMaW5lIGxpbmUsIDpjdXJzb3JYIHh9KV0gezp4IChhZ2V0IHJlcyBcImN1cnNvclhcIiksIDp0ZXh0IChhZ2V0IHJlcyBcInRleHRcIil9KSkpXHJcbiJ9IHs6c3ltIGFkZC1pbmRlbnQsIDptZXRhIHs6ZG9jICJBZGRzIGluZGVudCB0byB0aGUgc3RhdGUuIiwgOmFyZ2xpc3RzIChbc3RhdGVdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBhZGQtaW5kZW50XHJcbiBcIkFkZHMgaW5kZW50IHRvIHRoZSBzdGF0ZS5cIlxyXG4gW3N0YXRlXVxyXG4gKGxldFxyXG4gIFt7OmtleXMgW3RleHQgY3Vyc29yLXBvc2l0aW9uIGluZGVudC10eXBlXX1cclxuICAgc3RhdGVcclxuICAgW3N0YXJ0LXBvcyBlbmQtcG9zXVxyXG4gICBjdXJzb3ItcG9zaXRpb25cclxuICAgW3N0YXJ0LWxpbmUgc3RhcnQteF1cclxuICAgKHBvc2l0aW9uLT5yb3ctY29sIHRleHQgc3RhcnQtcG9zKVxyXG4gICBbZW5kLWxpbmUgX11cclxuICAgKHBvc2l0aW9uLT5yb3ctY29sIHRleHQgZW5kLXBvcylcclxuICAgbGluZXNcclxuICAgKHNwbGl0LWxpbmVzIHRleHQpXHJcbiAgIHRhZ3NcclxuICAgKHRzL2NvZGUtPnRhZ3MgdGV4dClcclxuICAgbmV3LWluZGVudC1sZXZlbFxyXG4gICAoY2FzZVxyXG4gICAgaW5kZW50LXR5cGVcclxuICAgIDpyZXR1cm5cclxuICAgICh0cy9pbmRlbnQtZm9yLWxpbmUgdGFncyAoaW5jIHN0YXJ0LWxpbmUpKVxyXG4gICAgOmJhY2tcclxuICAgICh0cy9iYWNrLWluZGVudC1mb3ItbGluZVxyXG4gICAgIHRhZ3NcclxuICAgICAoaW5jIHN0YXJ0LWxpbmUpXHJcbiAgICAgKGluZGVudC1jb3VudCAoZ2V0IGxpbmVzIHN0YXJ0LWxpbmUpKSlcclxuICAgIDpmb3J3YXJkXHJcbiAgICAodHMvZm9yd2FyZC1pbmRlbnQtZm9yLWxpbmVcclxuICAgICB0YWdzXHJcbiAgICAgKGluYyBzdGFydC1saW5lKVxyXG4gICAgIChpbmRlbnQtY291bnQgKGdldCBsaW5lcyBzdGFydC1saW5lKSkpXHJcbiAgICA6bm9ybWFsXHJcbiAgICBzdGFydC14KVxyXG4gICBsaW5lc1xyXG4gICAoaWZcclxuICAgICg9IGluZGVudC10eXBlIDpub3JtYWwpXHJcbiAgICAobG9vcFxyXG4gICAgIFtsaW5lcyBsaW5lcyB0YWdzIHRhZ3MgbGluZS1udW0gKGluYyBzdGFydC1saW5lKV1cclxuICAgICAoaWYtbGV0XHJcbiAgICAgIFtsaW5lIChnZXQgbGluZXMgbGluZS1udW0pXVxyXG4gICAgICAobGV0XHJcbiAgICAgICBbaW5kZW50XHJcbiAgICAgICAgKHRzL2luZGVudC1mb3ItbGluZSB0YWdzIChpbmMgbGluZS1udW0pKVxyXG4gICAgICAgIGN1cnJlbnQtaW5kZW50XHJcbiAgICAgICAgKGluZGVudC1jb3VudCBsaW5lKV1cclxuICAgICAgIChpZlxyXG4gICAgICAgIChhbmQgKD4gaW5kZW50IDApICg+IGluZGVudCBzdGFydC14KSlcclxuICAgICAgICAobGV0XHJcbiAgICAgICAgIFtsaW5lc1xyXG4gICAgICAgICAgKHVwZGF0ZS1pbmRlbnQgKC0gaW5kZW50IGN1cnJlbnQtaW5kZW50KSBsaW5lcyBsaW5lLW51bSlcclxuICAgICAgICAgIHRleHRcclxuICAgICAgICAgIChzdHIvam9pbiBcXG5ld2xpbmUgbGluZXMpXHJcbiAgICAgICAgICB0YWdzXHJcbiAgICAgICAgICAodHMvY29kZS0+dGFncyB0ZXh0KV1cclxuICAgICAgICAgKHJlY3VyIGxpbmVzIHRhZ3MgKGluYyBsaW5lLW51bSkpKVxyXG4gICAgICAgIGxpbmVzKSlcclxuICAgICAgbGluZXMpKVxyXG4gICAgKGxldFxyXG4gICAgIFtvbGQtaW5kZW50LWxldmVsXHJcbiAgICAgIChpbmRlbnQtY291bnQgKGdldCBsaW5lcyBzdGFydC1saW5lKSlcclxuICAgICAgZGlmZlxyXG4gICAgICAoLSBuZXctaW5kZW50LWxldmVsIG9sZC1pbmRlbnQtbGV2ZWwpXHJcbiAgICAgIGRpZmZcclxuICAgICAgKGlmXHJcbiAgICAgICAobmVnPyBkaWZmKVxyXG4gICAgICAgKC0+PlxyXG4gICAgICAgIChzZXEgKGdldCBsaW5lcyBzdGFydC1saW5lKSlcclxuICAgICAgICAoc3BsaXQtd2l0aCAoZm4qIFtwMV9fNDE2MDcjXSAoPSBwMV9fNDE2MDcjIFxcc3BhY2UpKSlcclxuICAgICAgICBmaXJzdFxyXG4gICAgICAgICh0YWtlICgqIC0xIGRpZmYpKVxyXG4gICAgICAgIGNvdW50XHJcbiAgICAgICAgKCogLTEpKVxyXG4gICAgICAgZGlmZildXHJcbiAgICAgKHJlZHVjZVxyXG4gICAgICAocGFydGlhbCB1cGRhdGUtaW5kZW50IGRpZmYpXHJcbiAgICAgIGxpbmVzXHJcbiAgICAgIChyYW5nZSBzdGFydC1saW5lIChpbmMgZW5kLWxpbmUpKSkpKVxyXG4gICB0ZXh0XHJcbiAgIChzdHIvam9pbiBcXG5ld2xpbmUgbGluZXMpXHJcbiAgIHRleHRcclxuICAgKDp0ZXh0IChpbmRlbnQtbW9kZSB0ZXh0IG5ldy1pbmRlbnQtbGV2ZWwgc3RhcnQtbGluZSB0cnVlKSlcclxuICAgbGluZXNcclxuICAgKHNwbGl0LWxpbmVzIHRleHQpXVxyXG4gIHs6Y3Vyc29yLXBvc2l0aW9uXHJcbiAgIChpZlxyXG4gICAgKD0gc3RhcnQtcG9zIGVuZC1wb3MpXHJcbiAgICAobGV0XHJcbiAgICAgW3BvcyAocm93LWNvbC0+cG9zaXRpb24gdGV4dCBzdGFydC1saW5lIG5ldy1pbmRlbnQtbGV2ZWwpXVxyXG4gICAgIFtwb3MgcG9zXSlcclxuICAgIFsocm93LWNvbC0+cG9zaXRpb24gdGV4dCBzdGFydC1saW5lIDApXHJcbiAgICAgKHJvdy1jb2wtPnBvc2l0aW9uIHRleHQgZW5kLWxpbmUgKGNvdW50IChnZXQgbGluZXMgZW5kLWxpbmUpKSldKSxcclxuICAgOnRleHQgdGV4dH0pKVxyXG4ifSB7OnN5bSBpbmRlbnQtY291bnQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbGluZV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGluZGVudC1jb3VudFxyXG4gW2xpbmVdXHJcbiAoLT4+XHJcbiAgbGluZVxyXG4gIHNlcVxyXG4gICh0YWtlLXdoaWxlIChmbiogW3AxX180MTYwNSNdICg9IHAxX180MTYwNSMgXFxzcGFjZSkpKVxyXG4gIGNvdW50KSlcclxuIn0gezpzeW0gcm93LWNvbC0+cG9zaXRpb24sIDptZXRhIHs6ZG9jICJDb252ZXJ0cyBhIHJvdyBhbmQgY29sdW1uIG51bWJlciB0byBhIHBvc2l0aW9uLiIsIDphcmdsaXN0cyAoW3RleHQgcm93IGNvbF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJvdy1jb2wtPnBvc2l0aW9uXHJcbiBcIkNvbnZlcnRzIGEgcm93IGFuZCBjb2x1bW4gbnVtYmVyIHRvIGEgcG9zaXRpb24uXCJcclxuIFt0ZXh0IHJvdyBjb2xdXHJcbiAobGV0XHJcbiAgW2FsbC1saW5lc1xyXG4gICAodmVjIChzcGxpdC1saW5lcyB0ZXh0KSlcclxuICAgbGluZXNcclxuICAgKHZlYyAodGFrZSByb3cgYWxsLWxpbmVzKSlcclxuICAgbGFzdC1saW5lXHJcbiAgIChnZXQgYWxsLWxpbmVzIHJvdylcclxuICAgbGluZXNcclxuICAgKGlmXHJcbiAgICAoYW5kIGxhc3QtbGluZSAoPj0gKGNvdW50IGxhc3QtbGluZSkgY29sKSlcclxuICAgIChjb25qIGxpbmVzIChzdWJzIGxhc3QtbGluZSAwIGNvbCkpXHJcbiAgICBsaW5lcylcclxuICAgdGV4dFxyXG4gICAoc3RyL2pvaW4gXCJcXG5cIiBsaW5lcyldXHJcbiAgKGNvdW50IHRleHQpKSlcclxuIn0gezpzeW0gcG9zaXRpb24tPnJvdy1jb2wsIDptZXRhIHs6ZG9jICJDb252ZXJ0cyBhIHBvc2l0aW9uIHRvIGEgcm93IGFuZCBjb2x1bW4gbnVtYmVyLiIsIDphcmdsaXN0cyAoW3RleHQgcG9zaXRpb25dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBwb3NpdGlvbi0+cm93LWNvbFxyXG4gXCJDb252ZXJ0cyBhIHBvc2l0aW9uIHRvIGEgcm93IGFuZCBjb2x1bW4gbnVtYmVyLlwiXHJcbiBbdGV4dCBwb3NpdGlvbl1cclxuIChsZXRcclxuICBbdGV4dFxyXG4gICAoc3VicyB0ZXh0IDAgcG9zaXRpb24pXHJcbiAgIGxhc3QtbmV3bGluZVxyXG4gICAoLmxhc3RJbmRleE9mIHRleHQgXCJcXG5cIilcclxuICAgcm93XHJcbiAgIChjb3VudCAocmUtc2VxICNcIlxcblwiIHRleHQpKVxyXG4gICBjb2xcclxuICAgKGlmICg+PSBsYXN0LW5ld2xpbmUgMCkgKC0gcG9zaXRpb24gbGFzdC1uZXdsaW5lIDEpIHBvc2l0aW9uKV1cclxuICBbcm93IGNvbF0pKVxyXG4ifSB7OnN5bSBzcGxpdC1saW5lcywgOm1ldGEgezpkb2MgIlNwbGl0cyB0aGUgc3RyaW5nIGludG8gbGluZXMuIiwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHNwbGl0LWxpbmVzXHJcbiBcIlNwbGl0cyB0aGUgc3RyaW5nIGludG8gbGluZXMuXCJcclxuIFtzXVxyXG4gKHZlYyAoLnNwbGl0IHMgXCJcXG5cIiAtMSkpKVxyXG4ifSB7OnN5bSB1cGRhdGUtaW5kZW50LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2RpZmYgbGluZXMgbGluZS1udW1dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB1cGRhdGUtaW5kZW50XHJcbiBbZGlmZiBsaW5lcyBsaW5lLW51bV1cclxuICh1cGRhdGVcclxuICBsaW5lc1xyXG4gIGxpbmUtbnVtXHJcbiAgKGZuXHJcbiAgIFtsaW5lXVxyXG4gICAobGV0XHJcbiAgICBbW3NwYWNlcyBjb2RlXVxyXG4gICAgIChzcGxpdC13aXRoIChmbiogW3AxX180MTYwNiNdICg9IHAxX180MTYwNiMgXFxzcGFjZSkpIChzZXEgbGluZSkpXHJcbiAgICAgc3BhY2VzXHJcbiAgICAgKGlmXHJcbiAgICAgIChwb3M/IGRpZmYpXHJcbiAgICAgIChjb25jYXQgc3BhY2VzIChyZXBlYXQgZGlmZiBcXHNwYWNlKSlcclxuICAgICAgKGRyb3AgKCogLTEgZGlmZikgc3BhY2VzKSldXHJcbiAgICAoc3RyIChzdHIvam9pbiBzcGFjZXMpIChzdHIvam9pbiBjb2RlKSkpKSkpXHJcbiJ9IHs6c3ltIG1vZGUsIDptZXRhIHs6ZG9jICJSdW5zIHRoZSBzcGVjaWZpZWQgbW9kZSwgd2hpY2ggY2FuIGJlIDpwYXJlbiwgOmluZGVudCwgb3IgOmJvdGguIiwgOmFyZ2xpc3RzIChbbW9kZS10eXBlIHRleHQgeCBsaW5lXSl9LCA6c291cmNlICIoZGVmblxyXG4gbW9kZVxyXG4gXCJSdW5zIHRoZSBzcGVjaWZpZWQgbW9kZSwgd2hpY2ggY2FuIGJlIDpwYXJlbiwgOmluZGVudCwgb3IgOmJvdGguXCJcclxuIFttb2RlLXR5cGUgdGV4dCB4IGxpbmVdXHJcbiAoY2FzZVxyXG4gIG1vZGUtdHlwZVxyXG4gIDpwYXJlblxyXG4gIChwYXJlbi1tb2RlIHRleHQgeCBsaW5lKVxyXG4gIDppbmRlbnRcclxuICAoaW5kZW50LW1vZGUgdGV4dCB4IGxpbmUpXHJcbiAgOmJvdGhcclxuICAoLT4gdGV4dCAocGFyZW4tbW9kZSB4IGxpbmUpIDp0ZXh0IChpbmRlbnQtbW9kZSB4IGxpbmUpKSkpXHJcbiJ9IHs6c3ltIGluZGVudC1tb2RlLCA6bWV0YSB7OmRvYyAiUnVucyBpbmRlbnQgbW9kZSBvbiB0aGUgZ2l2ZW4gdGV4dC4iLCA6YXJnbGlzdHMgW1t0ZXh0IHggbGluZV0gW3RleHQgeCBsaW5lIHByZXZpZXctY3Vyc29yLXNjb3BlP11dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGluZGVudC1tb2RlXHJcbiBcIlJ1bnMgaW5kZW50IG1vZGUgb24gdGhlIGdpdmVuIHRleHQuXCJcclxuIChbdGV4dCB4IGxpbmVdIChpbmRlbnQtbW9kZSB0ZXh0IHggbGluZSBmYWxzZSkpXHJcbiAoW3RleHQgeCBsaW5lIHByZXZpZXctY3Vyc29yLXNjb3BlP11cclxuICAjPyg6Y2xqIChsZXQgW3JlcyAodHJ5IChQYXJpbmZlci9pbmRlbnRNb2RlIHRleHQgKGludCB4KSAoaW50IGxpbmUpIG5pbCBwcmV2aWV3LWN1cnNvci1zY29wZT8pIChjYXRjaCBFeGNlcHRpb24gXyAoUGFyaW5mZXIvaW5kZW50TW9kZSB0ZXh0IChpbnQgMCkgKGludCAwKSBuaWwgcHJldmlldy1jdXJzb3Itc2NvcGU/KSkpXSB7OnggKC4tY3Vyc29yWCByZXMpLCA6dGV4dCAoLi10ZXh0IHJlcyl9KSA6Y2xqcyAobGV0IFtyZXMgKC5pbmRlbnRNb2RlIGpzL3BhcmluZmVyIHRleHQgI2pzIHs6Y3Vyc29yTGluZSBsaW5lLCA6Y3Vyc29yWCB4LCA6cHJldmlld0N1cnNvclNjb3BlIHByZXZpZXctY3Vyc29yLXNjb3BlP30pXSB7OnggKGFnZXQgcmVzIFwiY3Vyc29yWFwiKSwgOnRleHQgKGFnZXQgcmVzIFwidGV4dFwiKX0pKSkpXHJcbiJ9IHs6c3ltIGFkZC1wYXJpbmZlciwgOm1ldGEgezpkb2MgIkFkZHMgcGFyaW5mZXIgdG8gdGhlIHN0YXRlLiIsIDphcmdsaXN0cyAoW21vZGUtdHlwZSBzdGF0ZV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGFkZC1wYXJpbmZlclxyXG4gXCJBZGRzIHBhcmluZmVyIHRvIHRoZSBzdGF0ZS5cIlxyXG4gW21vZGUtdHlwZSBzdGF0ZV1cclxuIChsZXRcclxuICBbezprZXlzIFtjdXJzb3ItcG9zaXRpb24gdGV4dF19XHJcbiAgIHN0YXRlXHJcbiAgIFtzdGFydC1wb3MgZW5kLXBvc11cclxuICAgY3Vyc29yLXBvc2l0aW9uXHJcbiAgIFtyb3cgY29sXVxyXG4gICAocG9zaXRpb24tPnJvdy1jb2wgdGV4dCBzdGFydC1wb3MpXHJcbiAgIHJlc3VsdFxyXG4gICAobW9kZSBtb2RlLXR5cGUgdGV4dCBjb2wgcm93KV1cclxuICAoaWZcclxuICAgKG5vdD0gc3RhcnQtcG9zIGVuZC1wb3MpXHJcbiAgIChhc3NvYyBzdGF0ZSA6dGV4dCAoOnRleHQgcmVzdWx0KSlcclxuICAgKGxldFxyXG4gICAgW3BvcyAocm93LWNvbC0+cG9zaXRpb24gKDp0ZXh0IHJlc3VsdCkgcm93ICg6eCByZXN1bHQpKV1cclxuICAgIChhc3NvYyBzdGF0ZSA6dGV4dCAoOnRleHQgcmVzdWx0KSA6Y3Vyc29yLXBvc2l0aW9uIFtwb3MgcG9zXSkpKSkpXHJcbiJ9KSwgY2xqcy5jb3JlLmFzeW5jLmltcGwuaW9jLWhlbHBlcnMgKHs6c3ltIEVYQ0VQVElPTi1GUkFNRVMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIEVYQ0VQVElPTi1GUkFNRVMgNClcclxuIn0gezpzeW0gcHJvY2Vzcy1leGNlcHRpb24sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3RhdGVdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBwcm9jZXNzLWV4Y2VwdGlvblxyXG4gW3N0YXRlXVxyXG4gKGxldFxyXG4gIFtleGNlcHRpb24tZnJhbWVcclxuICAgKGFnZXQtb2JqZWN0IHN0YXRlIEVYQ0VQVElPTi1GUkFNRVMpXHJcbiAgIGNhdGNoLWJsb2NrXHJcbiAgICg6Y2F0Y2gtYmxvY2sgZXhjZXB0aW9uLWZyYW1lKVxyXG4gICBjYXRjaC1leGNlcHRpb25cclxuICAgKDpjYXRjaC1leGNlcHRpb24gZXhjZXB0aW9uLWZyYW1lKVxyXG4gICBleGNlcHRpb25cclxuICAgKGFnZXQtb2JqZWN0IHN0YXRlIENVUlJFTlQtRVhDRVBUSU9OKV1cclxuICAoY29uZFxyXG4gICAoYW5kIGV4Y2VwdGlvbiAobm90IGV4Y2VwdGlvbi1mcmFtZSkpXHJcbiAgICh0aHJvdyBleGNlcHRpb24pXHJcbiAgIChhbmRcclxuICAgIGV4Y2VwdGlvblxyXG4gICAgY2F0Y2gtYmxvY2tcclxuICAgIChvclxyXG4gICAgICg9IDpkZWZhdWx0IGNhdGNoLWV4Y2VwdGlvbilcclxuICAgICAoaW5zdGFuY2U/IGNhdGNoLWV4Y2VwdGlvbiBleGNlcHRpb24pKSlcclxuICAgKGlvYy9hc2V0LWFsbCFcclxuICAgIHN0YXRlXHJcbiAgICBTVEFURS1JRFhcclxuICAgIGNhdGNoLWJsb2NrXHJcbiAgICBWQUxVRS1JRFhcclxuICAgIGV4Y2VwdGlvblxyXG4gICAgQ1VSUkVOVC1FWENFUFRJT05cclxuICAgIG5pbFxyXG4gICAgRVhDRVBUSU9OLUZSQU1FU1xyXG4gICAgKGFzc29jIGV4Y2VwdGlvbi1mcmFtZSA6Y2F0Y2gtYmxvY2sgbmlsIDpjYXRjaC1leGNlcHRpb24gbmlsKSlcclxuICAgKGFuZFxyXG4gICAgZXhjZXB0aW9uXHJcbiAgICAobm90IGNhdGNoLWJsb2NrKVxyXG4gICAgKG5vdCAoOmZpbmFsbHktYmxvY2sgZXhjZXB0aW9uLWZyYW1lKSkpXHJcbiAgIChkb1xyXG4gICAgKGlvYy9hc2V0LWFsbCEgc3RhdGUgRVhDRVBUSU9OLUZSQU1FUyAoOnByZXYgZXhjZXB0aW9uLWZyYW1lKSlcclxuICAgIChyZWN1ciBzdGF0ZSkpXHJcbiAgIChhbmQgZXhjZXB0aW9uIChub3QgY2F0Y2gtYmxvY2spICg6ZmluYWxseS1ibG9jayBleGNlcHRpb24tZnJhbWUpKVxyXG4gICAoaW9jL2FzZXQtYWxsIVxyXG4gICAgc3RhdGVcclxuICAgIFNUQVRFLUlEWFxyXG4gICAgKDpmaW5hbGx5LWJsb2NrIGV4Y2VwdGlvbi1mcmFtZSlcclxuICAgIEVYQ0VQVElPTi1GUkFNRVNcclxuICAgIChhc3NvYyBleGNlcHRpb24tZnJhbWUgOmZpbmFsbHktYmxvY2sgbmlsKSlcclxuICAgKGFuZCAobm90IGV4Y2VwdGlvbikgKDpmaW5hbGx5LWJsb2NrIGV4Y2VwdGlvbi1mcmFtZSkpXHJcbiAgIChkb1xyXG4gICAgKGlvYy9hc2V0LWFsbCFcclxuICAgICBzdGF0ZVxyXG4gICAgIFNUQVRFLUlEWFxyXG4gICAgICg6ZmluYWxseS1ibG9jayBleGNlcHRpb24tZnJhbWUpXHJcbiAgICAgRVhDRVBUSU9OLUZSQU1FU1xyXG4gICAgIChhc3NvYyBleGNlcHRpb24tZnJhbWUgOmZpbmFsbHktYmxvY2sgbmlsKSkpXHJcbiAgIChhbmQgKG5vdCBleGNlcHRpb24pIChub3QgKDpmaW5hbGx5LWJsb2NrIGV4Y2VwdGlvbi1mcmFtZSkpKVxyXG4gICAoZG9cclxuICAgIChpb2MvYXNldC1hbGwhXHJcbiAgICAgc3RhdGVcclxuICAgICBTVEFURS1JRFhcclxuICAgICAoOmNvbnRpbnVlLWJsb2NrIGV4Y2VwdGlvbi1mcmFtZSlcclxuICAgICBFWENFUFRJT04tRlJBTUVTXHJcbiAgICAgKDpwcmV2IGV4Y2VwdGlvbi1mcmFtZSkpKVxyXG4gICA6ZWxzZVxyXG4gICAodGhyb3cgKGpzL0Vycm9yLiBcIk5vIG1hdGNoaW5nIGNsYXVzZVwiKSkpKSlcclxuIn0gezpzeW0gU1RBVEUtSURYLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBTVEFURS1JRFggMSlcclxuIn0gezpzeW0gYXNldC1vYmplY3QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbYXJyIGlkeCBvXSl9LCA6c291cmNlICIoZGVmbiBhc2V0LW9iamVjdCBbYXJyIGlkeCBvXSAoYWdldCBhcnIgaWR4IG8pKVxyXG4ifSB7OnN5bSBhZGQtZXhjZXB0aW9uLWZyYW1lLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N0YXRlIGNhdGNoLWJsb2NrIGNhdGNoLWV4Y2VwdGlvbiBmaW5hbGx5LWJsb2NrIGNvbnRpbnVlLWJsb2NrXSl9LCA6c291cmNlICIoZGVmblxyXG4gYWRkLWV4Y2VwdGlvbi1mcmFtZVxyXG4gW3N0YXRlIGNhdGNoLWJsb2NrIGNhdGNoLWV4Y2VwdGlvbiBmaW5hbGx5LWJsb2NrIGNvbnRpbnVlLWJsb2NrXVxyXG4gKGlvYy9hc2V0LWFsbCFcclxuICBzdGF0ZVxyXG4gIEVYQ0VQVElPTi1GUkFNRVNcclxuICAoLT5FeGNlcHRpb25GcmFtZVxyXG4gICBjYXRjaC1ibG9ja1xyXG4gICBjYXRjaC1leGNlcHRpb25cclxuICAgZmluYWxseS1ibG9ja1xyXG4gICBjb250aW51ZS1ibG9ja1xyXG4gICAoYWdldC1vYmplY3Qgc3RhdGUgRVhDRVBUSU9OLUZSQU1FUykpKSlcclxuIn0gezpzeW0gcnVuLXN0YXRlLW1hY2hpbmUtd3JhcHBlZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzdGF0ZV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJ1bi1zdGF0ZS1tYWNoaW5lLXdyYXBwZWRcclxuIFtzdGF0ZV1cclxuICh0cnlcclxuICAocnVuLXN0YXRlLW1hY2hpbmUgc3RhdGUpXHJcbiAgKGNhdGNoXHJcbiAgIGpzL09iamVjdFxyXG4gICBleFxyXG4gICAoaW1wbC9jbG9zZSEgKGFnZXQtb2JqZWN0IHN0YXRlIFVTRVItU1RBUlQtSURYKSlcclxuICAgKHRocm93IGV4KSkpKVxyXG4ifSB7OnN5bSBGTi1JRFgsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIEZOLUlEWCAwKVxyXG4ifSB7OnN5bSBhZ2V0LW9iamVjdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFthcnIgaWR4XSl9LCA6c291cmNlICIoZGVmbiBhZ2V0LW9iamVjdCBbYXJyIGlkeF0gKGFnZXQgYXJyIGlkeCkpXHJcbiJ9IHs6c3ltIHJldHVybi1jaGFuLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N0YXRlIHZhbHVlXSl9LCA6c291cmNlICIoZGVmblxyXG4gcmV0dXJuLWNoYW5cclxuIFtzdGF0ZSB2YWx1ZV1cclxuIChsZXRcclxuICBbYyAoYWdldCBzdGF0ZSBVU0VSLVNUQVJULUlEWCldXHJcbiAgKHdoZW4tbm90IChuaWw/IHZhbHVlKSAoaW1wbC9wdXQhIGMgdmFsdWUgKGZuLWhhbmRsZXIgKGZuIFtdIG5pbCkpKSlcclxuICAoaW1wbC9jbG9zZSEgYylcclxuICBjKSlcclxuIn0gezpzeW0gQklORElOR1MtSURYLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBCSU5ESU5HUy1JRFggMylcclxuIn0gezpzeW0gQ1VSUkVOVC1FWENFUFRJT04sIDptZXRhIHt9LCA6c291cmNlICIoZGVmIENVUlJFTlQtRVhDRVBUSU9OIDUpXHJcbiJ9IHs6c3ltIHJ1bi1zdGF0ZS1tYWNoaW5lLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N0YXRlXSl9LCA6c291cmNlICIoZGVmbiBydW4tc3RhdGUtbWFjaGluZSBbc3RhdGVdICgoYWdldC1vYmplY3Qgc3RhdGUgRk4tSURYKSBzdGF0ZSkpXHJcbiJ9IHs6c3ltIGZpbmlzaGVkPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB0aGUgbWFjaGluZSBpcyBpbiBhIGZpbmlzaGVkIHN0YXRlIiwgOmFyZ2xpc3RzIChbc3RhdGUtYXJyYXldKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBmaW5pc2hlZD9cclxuIFwiUmV0dXJucyB0cnVlIGlmIHRoZSBtYWNoaW5lIGlzIGluIGEgZmluaXNoZWQgc3RhdGVcIlxyXG4gW3N0YXRlLWFycmF5XVxyXG4gKGtleXdvcmQtaWRlbnRpY2FsPyAoYWdldCBzdGF0ZS1hcnJheSBTVEFURS1JRFgpIDpmaW5pc2hlZCkpXHJcbiJ9IHs6c3ltIFVTRVItU1RBUlQtSURYLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBVU0VSLVNUQVJULUlEWCA2KVxyXG4ifSB7OnN5bSBwdXQhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N0YXRlIGJsayBjIHZhbF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHB1dCFcclxuIFtzdGF0ZSBibGsgYyB2YWxdXHJcbiAoaWYtbGV0XHJcbiAgW2NiXHJcbiAgIChpbXBsL3B1dCFcclxuICAgIGNcclxuICAgIHZhbFxyXG4gICAgKGZuLWhhbmRsZXJcclxuICAgICAoZm5cclxuICAgICAgW3JldC12YWxdXHJcbiAgICAgIChpb2MvYXNldC1hbGwhIHN0YXRlIFZBTFVFLUlEWCByZXQtdmFsIFNUQVRFLUlEWCBibGspXHJcbiAgICAgIChydW4tc3RhdGUtbWFjaGluZS13cmFwcGVkIHN0YXRlKSkpKV1cclxuICAoZG8gKGlvYy9hc2V0LWFsbCEgc3RhdGUgVkFMVUUtSURYIEBjYiBTVEFURS1JRFggYmxrKSA6cmVjdXIpXHJcbiAgbmlsKSlcclxuIn0gezpzeW0gdGFrZSEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3RhdGUgYmxrIGNdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB0YWtlIVxyXG4gW3N0YXRlIGJsayBjXVxyXG4gKGlmLWxldFxyXG4gIFtjYlxyXG4gICAoaW1wbC90YWtlIVxyXG4gICAgY1xyXG4gICAgKGZuLWhhbmRsZXJcclxuICAgICAoZm5cclxuICAgICAgW3hdXHJcbiAgICAgIChpb2MvYXNldC1hbGwhIHN0YXRlIFZBTFVFLUlEWCB4IFNUQVRFLUlEWCBibGspXHJcbiAgICAgIChydW4tc3RhdGUtbWFjaGluZS13cmFwcGVkIHN0YXRlKSkpKV1cclxuICAoZG8gKGlvYy9hc2V0LWFsbCEgc3RhdGUgVkFMVUUtSURYIEBjYiBTVEFURS1JRFggYmxrKSA6cmVjdXIpXHJcbiAgbmlsKSlcclxuIn0gezpzeW0gVkFMVUUtSURYLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBWQUxVRS1JRFggMilcclxuIn0pLCBkeW5hZG9jLmFsaWFzZXMgKHs6c3ltIGNoYW4sIDptZXRhIHt9LCA6c291cmNlICIoZGVmIGNoYW4gYXN5bmMvcHJvbWlzZS1jaGFuKVxyXG4ifSB7OnN5bSBwdXQhLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBwdXQhIGFzeW5jL3B1dCEpXHJcbiJ9IHs6c3ltIDwhISwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgPCEhICM/KDpjbGogYXN5bmMvPCEhIDpjbGpzIGlkZW50aXR5KSlcclxuIn0pLCBjbG9qdXJlLnN0cmluZyAoezpzeW0gZW5kcy13aXRoPywgOm1ldGEgezpkb2MgIlRydWUgaWYgcyBlbmRzIHdpdGggc3Vic3RyLiIsIDphcmdsaXN0cyAoW3Mgc3Vic3RyXSl9LCA6c291cmNlICIoZGVmblxyXG4gZW5kcy13aXRoP1xyXG4gXCJUcnVlIGlmIHMgZW5kcyB3aXRoIHN1YnN0ci5cIlxyXG4gW3Mgc3Vic3RyXVxyXG4gKGdzdHJpbmcvZW5kc1dpdGggcyBzdWJzdHIpKVxyXG4ifSB7OnN5bSBjYXBpdGFsaXplLCA6bWV0YSB7OmRvYyAiQ29udmVydHMgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBzdHJpbmcgdG8gdXBwZXItY2FzZSwgYWxsIG90aGVyXG4gIGNoYXJhY3RlcnMgdG8gbG93ZXItY2FzZS4iLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxyXG4gY2FwaXRhbGl6ZVxyXG4gXCJDb252ZXJ0cyBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIHN0cmluZyB0byB1cHBlci1jYXNlLCBhbGwgb3RoZXJcXG4gIGNoYXJhY3RlcnMgdG8gbG93ZXItY2FzZS5cIlxyXG4gW3NdXHJcbiAoZ3N0cmluZy9jYXBpdGFsaXplIHMpKVxyXG4ifSB7OnN5bSByZXZlcnNlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBzIHdpdGggaXRzIGNoYXJhY3RlcnMgcmV2ZXJzZWQuIiwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJldmVyc2VcclxuIFwiUmV0dXJucyBzIHdpdGggaXRzIGNoYXJhY3RlcnMgcmV2ZXJzZWQuXCJcclxuIFtzXVxyXG4gKC0+XHJcbiAgKC5yZXBsYWNlIHMgcmUtc3Vycm9nYXRlLXBhaXIgXCIkMiQxXCIpXHJcbiAgKC4uIChzcGxpdCBcIlwiKSAocmV2ZXJzZSkgKGpvaW4gXCJcIikpKSlcclxuIn0gezpzeW0gam9pbiwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBzdHJpbmcgb2YgYWxsIGVsZW1lbnRzIGluIGNvbGwsIGFzIHJldHVybmVkIGJ5IChzZXEgY29sbCksXG4gIHNlcGFyYXRlZCBieSBhbiBvcHRpb25hbCBzZXBhcmF0b3IuIiwgOmFyZ2xpc3RzIFtbY29sbF0gW3NlcGFyYXRvciBjb2xsXV19LCA6c291cmNlICIoZGVmblxyXG4gam9pblxyXG4gXCJSZXR1cm5zIGEgc3RyaW5nIG9mIGFsbCBlbGVtZW50cyBpbiBjb2xsLCBhcyByZXR1cm5lZCBieSAoc2VxIGNvbGwpLFxcbiAgc2VwYXJhdGVkIGJ5IGFuIG9wdGlvbmFsIHNlcGFyYXRvci5cIlxyXG4gKFtjb2xsXVxyXG4gIChsb29wXHJcbiAgIFtzYiAoU3RyaW5nQnVmZmVyLikgY29sbCAoc2VxIGNvbGwpXVxyXG4gICAoaWYtbm90XHJcbiAgICAobmlsPyBjb2xsKVxyXG4gICAgKHJlY3VyICguIHNiIChhcHBlbmQgKHN0ciAoZmlyc3QgY29sbCkpKSkgKG5leHQgY29sbCkpXHJcbiAgICAoLnRvU3RyaW5nIHNiKSkpKVxyXG4gKFtzZXBhcmF0b3IgY29sbF1cclxuICAobG9vcFxyXG4gICBbc2IgKFN0cmluZ0J1ZmZlci4pIGNvbGwgKHNlcSBjb2xsKV1cclxuICAgKGlmLW5vdFxyXG4gICAgKG5pbD8gY29sbClcclxuICAgIChkb1xyXG4gICAgICguIHNiIChhcHBlbmQgKHN0ciAoZmlyc3QgY29sbCkpKSlcclxuICAgICAobGV0XHJcbiAgICAgIFtjb2xsIChuZXh0IGNvbGwpXVxyXG4gICAgICAod2hlbi1ub3QgKG5pbD8gY29sbCkgKC4gc2IgKGFwcGVuZCBzZXBhcmF0b3IpKSlcclxuICAgICAgKHJlY3VyIHNiIGNvbGwpKSlcclxuICAgICgudG9TdHJpbmcgc2IpKSkpKVxyXG4ifSB7OnN5bSByZXBsYWNlLWZpcnN0LCA6bWV0YSB7OmRvYyAiUmVwbGFjZXMgdGhlIGZpcnN0IGluc3RhbmNlIG9mIG1hdGNoIHdpdGggcmVwbGFjZW1lbnQgaW4gcy5cblxuICAgbWF0Y2gvcmVwbGFjZW1lbnQgY2FuIGJlOlxuXG4gICBzdHJpbmcgLyBzdHJpbmdcbiAgIHBhdHRlcm4gLyAoc3RyaW5nIG9yIGZ1bmN0aW9uIG9mIG1hdGNoKS5cblxuICAgU2VlIGFsc28gcmVwbGFjZS5cblxuICAgVGhlIHJlcGxhY2VtZW50IGlzIGxpdGVyYWwgKGkuZS4gbm9uZSBvZiBpdHMgY2hhcmFjdGVycyBhcmUgdHJlYXRlZFxuICAgc3BlY2lhbGx5KSBmb3IgYWxsIGNhc2VzIGFib3ZlIGV4Y2VwdCBwYXR0ZXJuIC8gc3RyaW5nLlxuXG4gICBGb3IgcGF0dGVybiAvIHN0cmluZywgJDEsICQyLCBldGMuIGluIHRoZSByZXBsYWNlbWVudCBzdHJpbmcgYXJlXG4gICBzdWJzdGl0dXRlZCB3aXRoIHRoZSBzdHJpbmcgdGhhdCBtYXRjaGVkIHRoZSBjb3JyZXNwb25kaW5nXG4gICBwYXJlbnRoZXNpemVkIGdyb3VwIGluIHRoZSBwYXR0ZXJuLlxuXG4gICBFeGFtcGxlOlxuICAgKGNsb2p1cmUuc3RyaW5nL3JlcGxhY2UtZmlyc3QgXCJzd2FwIGZpcnN0IHR3byB3b3Jkc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjXCIoXFx3KykoXFxzKykoXFx3KylcIiBcIiQzJDIkMVwiKVxuICAgLT4gXCJmaXJzdCBzd2FwIHR3byB3b3Jkc1wiIiwgOmFyZ2xpc3RzIChbcyBtYXRjaCByZXBsYWNlbWVudF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlcGxhY2UtZmlyc3RcclxuIFwiUmVwbGFjZXMgdGhlIGZpcnN0IGluc3RhbmNlIG9mIG1hdGNoIHdpdGggcmVwbGFjZW1lbnQgaW4gcy5cXG5cXG4gICBtYXRjaC9yZXBsYWNlbWVudCBjYW4gYmU6XFxuXFxuICAgc3RyaW5nIC8gc3RyaW5nXFxuICAgcGF0dGVybiAvIChzdHJpbmcgb3IgZnVuY3Rpb24gb2YgbWF0Y2gpLlxcblxcbiAgIFNlZSBhbHNvIHJlcGxhY2UuXFxuXFxuICAgVGhlIHJlcGxhY2VtZW50IGlzIGxpdGVyYWwgKGkuZS4gbm9uZSBvZiBpdHMgY2hhcmFjdGVycyBhcmUgdHJlYXRlZFxcbiAgIHNwZWNpYWxseSkgZm9yIGFsbCBjYXNlcyBhYm92ZSBleGNlcHQgcGF0dGVybiAvIHN0cmluZy5cXG5cXG4gICBGb3IgcGF0dGVybiAvIHN0cmluZywgJDEsICQyLCBldGMuIGluIHRoZSByZXBsYWNlbWVudCBzdHJpbmcgYXJlXFxuICAgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgc3RyaW5nIHRoYXQgbWF0Y2hlZCB0aGUgY29ycmVzcG9uZGluZ1xcbiAgIHBhcmVudGhlc2l6ZWQgZ3JvdXAgaW4gdGhlIHBhdHRlcm4uXFxuXFxuICAgRXhhbXBsZTpcXG4gICAoY2xvanVyZS5zdHJpbmcvcmVwbGFjZS1maXJzdCBcXFwic3dhcCBmaXJzdCB0d28gd29yZHNcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI1xcXCIoXFxcXHcrKShcXFxccyspKFxcXFx3KylcXFwiIFxcXCIkMyQyJDFcXFwiKVxcbiAgIC0+IFxcXCJmaXJzdCBzd2FwIHR3byB3b3Jkc1xcXCJcIlxyXG4gW3MgbWF0Y2ggcmVwbGFjZW1lbnRdXHJcbiAoLnJlcGxhY2UgcyBtYXRjaCByZXBsYWNlbWVudCkpXHJcbiJ9IHs6c3ltIHN0YXJ0cy13aXRoPywgOm1ldGEgezpkb2MgIlRydWUgaWYgcyBzdGFydHMgd2l0aCBzdWJzdHIuIiwgOmFyZ2xpc3RzIChbcyBzdWJzdHJdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBzdGFydHMtd2l0aD9cclxuIFwiVHJ1ZSBpZiBzIHN0YXJ0cyB3aXRoIHN1YnN0ci5cIlxyXG4gW3Mgc3Vic3RyXVxyXG4gKGdzdHJpbmcvc3RhcnRzV2l0aCBzIHN1YnN0cikpXHJcbiJ9IHs6c3ltIGVzY2FwZSwgOm1ldGEgezpkb2MgIlJldHVybiBhIG5ldyBzdHJpbmcsIHVzaW5nIGNtYXAgdG8gZXNjYXBlIGVhY2ggY2hhcmFjdGVyIGNoXG4gICBmcm9tIHMgYXMgZm9sbG93czpcblxuICAgSWYgKGNtYXAgY2gpIGlzIG5pbCwgYXBwZW5kIGNoIHRvIHRoZSBuZXcgc3RyaW5nLlxuICAgSWYgKGNtYXAgY2gpIGlzIG5vbi1uaWwsIGFwcGVuZCAoc3RyIChjbWFwIGNoKSkgaW5zdGVhZC4iLCA6YXJnbGlzdHMgKFtzIGNtYXBdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBlc2NhcGVcclxuIFwiUmV0dXJuIGEgbmV3IHN0cmluZywgdXNpbmcgY21hcCB0byBlc2NhcGUgZWFjaCBjaGFyYWN0ZXIgY2hcXG4gICBmcm9tIHMgYXMgZm9sbG93czpcXG5cXG4gICBJZiAoY21hcCBjaCkgaXMgbmlsLCBhcHBlbmQgY2ggdG8gdGhlIG5ldyBzdHJpbmcuXFxuICAgSWYgKGNtYXAgY2gpIGlzIG5vbi1uaWwsIGFwcGVuZCAoc3RyIChjbWFwIGNoKSkgaW5zdGVhZC5cIlxyXG4gW3MgY21hcF1cclxuIChsZXRcclxuICBbYnVmZmVyIChTdHJpbmdCdWZmZXIuKSBsZW5ndGggKC4tbGVuZ3RoIHMpXVxyXG4gIChsb29wXHJcbiAgIFtpbmRleCAwXVxyXG4gICAoaWZcclxuICAgICg9PSBsZW5ndGggaW5kZXgpXHJcbiAgICAoLiBidWZmZXIgKHRvU3RyaW5nKSlcclxuICAgIChsZXRcclxuICAgICBbY2ggKC5jaGFyQXQgcyBpbmRleCkgcmVwbGFjZW1lbnQgKGdldCBjbWFwIGNoKV1cclxuICAgICAoaWYtbm90XHJcbiAgICAgIChuaWw/IHJlcGxhY2VtZW50KVxyXG4gICAgICAoLmFwcGVuZCBidWZmZXIgKHN0ciByZXBsYWNlbWVudCkpXHJcbiAgICAgICguYXBwZW5kIGJ1ZmZlciBjaCkpXHJcbiAgICAgKHJlY3VyIChpbmMgaW5kZXgpKSkpKSkpXHJcbiJ9IHs6c3ltIGxhc3QtaW5kZXgtb2YsIDptZXRhIHs6ZG9jICJSZXR1cm4gbGFzdCBpbmRleCBvZiB2YWx1ZSAoc3RyaW5nIG9yIGNoYXIpIGluIHMsIG9wdGlvbmFsbHlcbiAgc2VhcmNoaW5nIGJhY2t3YXJkIGZyb20gZnJvbS1pbmRleCBvciBuaWwgaWYgbm90IGZvdW5kLiIsIDphcmdsaXN0cyBbW3MgdmFsdWVdIFtzIHZhbHVlIGZyb20taW5kZXhdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBsYXN0LWluZGV4LW9mXHJcbiBcIlJldHVybiBsYXN0IGluZGV4IG9mIHZhbHVlIChzdHJpbmcgb3IgY2hhcikgaW4gcywgb3B0aW9uYWxseVxcbiAgc2VhcmNoaW5nIGJhY2t3YXJkIGZyb20gZnJvbS1pbmRleCBvciBuaWwgaWYgbm90IGZvdW5kLlwiXHJcbiAoW3MgdmFsdWVdXHJcbiAgKGxldCBbcmVzdWx0ICgubGFzdEluZGV4T2YgcyB2YWx1ZSldIChpZiAobmVnPyByZXN1bHQpIG5pbCByZXN1bHQpKSlcclxuIChbcyB2YWx1ZSBmcm9tLWluZGV4XVxyXG4gIChsZXRcclxuICAgW3Jlc3VsdCAoLmxhc3RJbmRleE9mIHMgdmFsdWUgZnJvbS1pbmRleCldXHJcbiAgIChpZiAobmVnPyByZXN1bHQpIG5pbCByZXN1bHQpKSkpXHJcbiJ9IHs6c3ltIGluY2x1ZGVzPywgOm1ldGEgezpkb2MgIlRydWUgaWYgcyBpbmNsdWRlcyBzdWJzdHIuIiwgOmFyZ2xpc3RzIChbcyBzdWJzdHJdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBpbmNsdWRlcz9cclxuIFwiVHJ1ZSBpZiBzIGluY2x1ZGVzIHN1YnN0ci5cIlxyXG4gW3Mgc3Vic3RyXVxyXG4gKGdzdHJpbmcvY29udGFpbnMgcyBzdWJzdHIpKVxyXG4ifSB7OnN5bSByZXBsYWNlLCA6bWV0YSB7OmRvYyAiUmVwbGFjZXMgYWxsIGluc3RhbmNlIG9mIG1hdGNoIHdpdGggcmVwbGFjZW1lbnQgaW4gcy5cblxuICAgbWF0Y2gvcmVwbGFjZW1lbnQgY2FuIGJlOlxuXG4gICBzdHJpbmcgLyBzdHJpbmdcbiAgIHBhdHRlcm4gLyAoc3RyaW5nIG9yIGZ1bmN0aW9uIG9mIG1hdGNoKS5cblxuICAgU2VlIGFsc28gcmVwbGFjZS1maXJzdC5cblxuICAgVGhlIHJlcGxhY2VtZW50IGlzIGxpdGVyYWwgKGkuZS4gbm9uZSBvZiBpdHMgY2hhcmFjdGVycyBhcmUgdHJlYXRlZFxuICAgc3BlY2lhbGx5KSBmb3IgYWxsIGNhc2VzIGFib3ZlIGV4Y2VwdCBwYXR0ZXJuIC8gc3RyaW5nLlxuXG4gICBGb3IgcGF0dGVybiAvIHN0cmluZywgJDEsICQyLCBldGMuIGluIHRoZSByZXBsYWNlbWVudCBzdHJpbmcgYXJlXG4gICBzdWJzdGl0dXRlZCB3aXRoIHRoZSBzdHJpbmcgdGhhdCBtYXRjaGVkIHRoZSBjb3JyZXNwb25kaW5nXG4gICBwYXJlbnRoZXNpemVkIGdyb3VwIGluIHRoZSBwYXR0ZXJuLlxuXG4gICBFeGFtcGxlOlxuICAgKGNsb2p1cmUuc3RyaW5nL3JlcGxhY2UgXCJBbG1vc3QgUGlnIExhdGluXCIgI1wiXFxiKFxcdykoXFx3KylcXGJcIiBcIiQyJDFheVwiKVxuICAgLT4gXCJsbW9zdEFheSBpZ1BheSBhdGluTGF5XCIiLCA6YXJnbGlzdHMgKFtzIG1hdGNoIHJlcGxhY2VtZW50XSl9LCA6c291cmNlICIoZGVmblxyXG4gcmVwbGFjZVxyXG4gXCJSZXBsYWNlcyBhbGwgaW5zdGFuY2Ugb2YgbWF0Y2ggd2l0aCByZXBsYWNlbWVudCBpbiBzLlxcblxcbiAgIG1hdGNoL3JlcGxhY2VtZW50IGNhbiBiZTpcXG5cXG4gICBzdHJpbmcgLyBzdHJpbmdcXG4gICBwYXR0ZXJuIC8gKHN0cmluZyBvciBmdW5jdGlvbiBvZiBtYXRjaCkuXFxuXFxuICAgU2VlIGFsc28gcmVwbGFjZS1maXJzdC5cXG5cXG4gICBUaGUgcmVwbGFjZW1lbnQgaXMgbGl0ZXJhbCAoaS5lLiBub25lIG9mIGl0cyBjaGFyYWN0ZXJzIGFyZSB0cmVhdGVkXFxuICAgc3BlY2lhbGx5KSBmb3IgYWxsIGNhc2VzIGFib3ZlIGV4Y2VwdCBwYXR0ZXJuIC8gc3RyaW5nLlxcblxcbiAgIEZvciBwYXR0ZXJuIC8gc3RyaW5nLCAkMSwgJDIsIGV0Yy4gaW4gdGhlIHJlcGxhY2VtZW50IHN0cmluZyBhcmVcXG4gICBzdWJzdGl0dXRlZCB3aXRoIHRoZSBzdHJpbmcgdGhhdCBtYXRjaGVkIHRoZSBjb3JyZXNwb25kaW5nXFxuICAgcGFyZW50aGVzaXplZCBncm91cCBpbiB0aGUgcGF0dGVybi5cXG5cXG4gICBFeGFtcGxlOlxcbiAgIChjbG9qdXJlLnN0cmluZy9yZXBsYWNlIFxcXCJBbG1vc3QgUGlnIExhdGluXFxcIiAjXFxcIlxcXFxiKFxcXFx3KShcXFxcdyspXFxcXGJcXFwiIFxcXCIkMiQxYXlcXFwiKVxcbiAgIC0+IFxcXCJsbW9zdEFheSBpZ1BheSBhdGluTGF5XFxcIlwiXHJcbiBbcyBtYXRjaCByZXBsYWNlbWVudF1cclxuIChjb25kXHJcbiAgKHN0cmluZz8gbWF0Y2gpXHJcbiAgKC5yZXBsYWNlXHJcbiAgIHNcclxuICAgKGpzL1JlZ0V4cC4gKGdzdHJpbmcvcmVnRXhwRXNjYXBlIG1hdGNoKSBcImdcIilcclxuICAgcmVwbGFjZW1lbnQpXHJcbiAgKGluc3RhbmNlPyBqcy9SZWdFeHAgbWF0Y2gpXHJcbiAgKGlmXHJcbiAgIChzdHJpbmc/IHJlcGxhY2VtZW50KVxyXG4gICAocmVwbGFjZS1hbGwgcyBtYXRjaCByZXBsYWNlbWVudClcclxuICAgKHJlcGxhY2UtYWxsIHMgbWF0Y2ggKHJlcGxhY2Utd2l0aCByZXBsYWNlbWVudCkpKVxyXG4gIDplbHNlXHJcbiAgKHRocm93IChzdHIgXCJJbnZhbGlkIG1hdGNoIGFyZzogXCIgbWF0Y2gpKSkpXHJcbiJ9IHs6c3ltIHNwbGl0LWxpbmVzLCA6bWV0YSB7OmRvYyAiU3BsaXRzIHMgb24gXFxuIG9yIFxcclxcbi4iLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxyXG4gc3BsaXQtbGluZXNcclxuIFwiU3BsaXRzIHMgb24gXFxcXG4gb3IgXFxcXHJcXFxcbi5cIlxyXG4gW3NdXHJcbiAoc3BsaXQgcyAjXCJcXG58XFxyXFxuXCIpKVxyXG4ifSB7OnN5bSBsb3dlci1jYXNlLCA6bWV0YSB7OmRvYyAiQ29udmVydHMgc3RyaW5nIHRvIGFsbCBsb3dlci1jYXNlLiIsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBsb3dlci1jYXNlXHJcbiBcIkNvbnZlcnRzIHN0cmluZyB0byBhbGwgbG93ZXItY2FzZS5cIlxyXG4gW3NdXHJcbiAoLnRvTG93ZXJDYXNlIHMpKVxyXG4ifSB7OnN5bSB0cmltLW5ld2xpbmUsIDptZXRhIHs6ZG9jICJSZW1vdmVzIGFsbCB0cmFpbGluZyBuZXdsaW5lIFxcbiBvciByZXR1cm4gXFxyIGNoYXJhY3RlcnMgZnJvbVxuICBzdHJpbmcuICBTaW1pbGFyIHRvIFBlcmwncyBjaG9tcC4iLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxyXG4gdHJpbS1uZXdsaW5lXHJcbiBcIlJlbW92ZXMgYWxsIHRyYWlsaW5nIG5ld2xpbmUgXFxcXG4gb3IgcmV0dXJuIFxcXFxyIGNoYXJhY3RlcnMgZnJvbVxcbiAgc3RyaW5nLiAgU2ltaWxhciB0byBQZXJsJ3MgY2hvbXAuXCJcclxuIFtzXVxyXG4gKGxvb3BcclxuICBbaW5kZXggKC4tbGVuZ3RoIHMpXVxyXG4gIChpZlxyXG4gICAoemVybz8gaW5kZXgpXHJcbiAgIFwiXCJcclxuICAgKGxldFxyXG4gICAgW2NoIChnZXQgcyAoZGVjIGluZGV4KSldXHJcbiAgICAoaWZcclxuICAgICAob3IgKGlkZW50aWNhbD8gXFxuZXdsaW5lIGNoKSAoaWRlbnRpY2FsPyBcXHJldHVybiBjaCkpXHJcbiAgICAgKHJlY3VyIChkZWMgaW5kZXgpKVxyXG4gICAgICguc3Vic3RyaW5nIHMgMCBpbmRleCkpKSkpKVxyXG4ifSB7OnN5bSB1cHBlci1jYXNlLCA6bWV0YSB7OmRvYyAiQ29udmVydHMgc3RyaW5nIHRvIGFsbCB1cHBlci1jYXNlLiIsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB1cHBlci1jYXNlXHJcbiBcIkNvbnZlcnRzIHN0cmluZyB0byBhbGwgdXBwZXItY2FzZS5cIlxyXG4gW3NdXHJcbiAoLnRvVXBwZXJDYXNlIHMpKVxyXG4ifSB7OnN5bSBzcGxpdCwgOm1ldGEgezpkb2MgIlNwbGl0cyBzdHJpbmcgb24gYSByZWd1bGFyIGV4cHJlc3Npb24uIE9wdGlvbmFsIGFyZ3VtZW50IGxpbWl0IGlzXG4gIHRoZSBtYXhpbXVtIG51bWJlciBvZiBzcGxpdHMuIE5vdCBsYXp5LiBSZXR1cm5zIHZlY3RvciBvZiB0aGUgc3BsaXRzLiIsIDphcmdsaXN0cyBbW3MgcmVdIFtzIHJlIGxpbWl0XV19LCA6c291cmNlICIoZGVmblxyXG4gc3BsaXRcclxuIFwiU3BsaXRzIHN0cmluZyBvbiBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4gT3B0aW9uYWwgYXJndW1lbnQgbGltaXQgaXNcXG4gIHRoZSBtYXhpbXVtIG51bWJlciBvZiBzcGxpdHMuIE5vdCBsYXp5LiBSZXR1cm5zIHZlY3RvciBvZiB0aGUgc3BsaXRzLlwiXHJcbiAoW3MgcmVdIChzcGxpdCBzIHJlIDApKVxyXG4gKFtzIHJlIGxpbWl0XVxyXG4gIChkaXNjYXJkLXRyYWlsaW5nLWlmLW5lZWRlZFxyXG4gICBsaW1pdFxyXG4gICAoaWZcclxuICAgIChpZGVudGljYWw/IFwiLyg/OikvXCIgKHN0ciByZSkpXHJcbiAgICAoc3BsaXQtd2l0aC1lbXB0eS1yZWdleCBzIGxpbWl0KVxyXG4gICAgKGlmXHJcbiAgICAgKDwgbGltaXQgMSlcclxuICAgICAodmVjICguc3BsaXQgKHN0ciBzKSByZSkpXHJcbiAgICAgKGxvb3BcclxuICAgICAgW3MgcyBsaW1pdCBsaW1pdCBwYXJ0cyBbXV1cclxuICAgICAgKGlmXHJcbiAgICAgICAoPT0gMSBsaW1pdClcclxuICAgICAgIChjb25qIHBhcnRzIHMpXHJcbiAgICAgICAobGV0XHJcbiAgICAgICAgW20gKHJlLWZpbmQgcmUgcyldXHJcbiAgICAgICAgKGlmLW5vdFxyXG4gICAgICAgICAobmlsPyBtKVxyXG4gICAgICAgICAobGV0XHJcbiAgICAgICAgICBbaW5kZXggKC5pbmRleE9mIHMgbSldXHJcbiAgICAgICAgICAocmVjdXJcclxuICAgICAgICAgICAoLnN1YnN0cmluZyBzICgrIGluZGV4IChjb3VudCBtKSkpXHJcbiAgICAgICAgICAgKGRlYyBsaW1pdClcclxuICAgICAgICAgICAoY29uaiBwYXJ0cyAoLnN1YnN0cmluZyBzIDAgaW5kZXgpKSkpXHJcbiAgICAgICAgIChjb25qIHBhcnRzIHMpKSkpKSkpKSkpXHJcbiJ9IHs6c3ltIHRyaW1yLCA6bWV0YSB7OmRvYyAiUmVtb3ZlcyB3aGl0ZXNwYWNlIGZyb20gdGhlIHJpZ2h0IHNpZGUgb2Ygc3RyaW5nLiIsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB0cmltclxyXG4gXCJSZW1vdmVzIHdoaXRlc3BhY2UgZnJvbSB0aGUgcmlnaHQgc2lkZSBvZiBzdHJpbmcuXCJcclxuIFtzXVxyXG4gKGdzdHJpbmcvdHJpbVJpZ2h0IHMpKVxyXG4ifSB7OnN5bSBpbmRleC1vZiwgOm1ldGEgezpkb2MgIlJldHVybiBpbmRleCBvZiB2YWx1ZSAoc3RyaW5nIG9yIGNoYXIpIGluIHMsIG9wdGlvbmFsbHkgc2VhcmNoaW5nXG4gIGZvcndhcmQgZnJvbSBmcm9tLWluZGV4IG9yIG5pbCBpZiBub3QgZm91bmQuIiwgOmFyZ2xpc3RzIFtbcyB2YWx1ZV0gW3MgdmFsdWUgZnJvbS1pbmRleF1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGluZGV4LW9mXHJcbiBcIlJldHVybiBpbmRleCBvZiB2YWx1ZSAoc3RyaW5nIG9yIGNoYXIpIGluIHMsIG9wdGlvbmFsbHkgc2VhcmNoaW5nXFxuICBmb3J3YXJkIGZyb20gZnJvbS1pbmRleCBvciBuaWwgaWYgbm90IGZvdW5kLlwiXHJcbiAoW3MgdmFsdWVdXHJcbiAgKGxldCBbcmVzdWx0ICguaW5kZXhPZiBzIHZhbHVlKV0gKGlmIChuZWc/IHJlc3VsdCkgbmlsIHJlc3VsdCkpKVxyXG4gKFtzIHZhbHVlIGZyb20taW5kZXhdXHJcbiAgKGxldFxyXG4gICBbcmVzdWx0ICguaW5kZXhPZiBzIHZhbHVlIGZyb20taW5kZXgpXVxyXG4gICAoaWYgKG5lZz8gcmVzdWx0KSBuaWwgcmVzdWx0KSkpKVxyXG4ifSB7OnN5bSB0cmltLCA6bWV0YSB7OmRvYyAiUmVtb3ZlcyB3aGl0ZXNwYWNlIGZyb20gYm90aCBlbmRzIG9mIHN0cmluZy4iLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxyXG4gdHJpbVxyXG4gXCJSZW1vdmVzIHdoaXRlc3BhY2UgZnJvbSBib3RoIGVuZHMgb2Ygc3RyaW5nLlwiXHJcbiBbc11cclxuIChnc3RyaW5nL3RyaW0gcykpXHJcbiJ9IHs6c3ltIHRyaW1sLCA6bWV0YSB7OmRvYyAiUmVtb3ZlcyB3aGl0ZXNwYWNlIGZyb20gdGhlIGxlZnQgc2lkZSBvZiBzdHJpbmcuIiwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHRyaW1sXHJcbiBcIlJlbW92ZXMgd2hpdGVzcGFjZSBmcm9tIHRoZSBsZWZ0IHNpZGUgb2Ygc3RyaW5nLlwiXHJcbiBbc11cclxuIChnc3RyaW5nL3RyaW1MZWZ0IHMpKVxyXG4ifSB7OnN5bSBibGFuaz8sIDptZXRhIHs6ZG9jICJUcnVlIGlzIHMgaXMgbmlsLCBlbXB0eSwgb3IgY29udGFpbnMgb25seSB3aGl0ZXNwYWNlLiIsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBibGFuaz9cclxuIFwiVHJ1ZSBpcyBzIGlzIG5pbCwgZW1wdHksIG9yIGNvbnRhaW5zIG9ubHkgd2hpdGVzcGFjZS5cIlxyXG4gW3NdXHJcbiAoZ3N0cmluZy9pc0VtcHR5T3JXaGl0ZXNwYWNlIChnc3RyaW5nL21ha2VTYWZlIHMpKSlcclxuIn0pLCBjbGpzLnNwZWMuYWxwaGEgKHs6c3ltIGZvcm0sIDptZXRhIHs6ZG9jICJyZXR1cm5zIHRoZSBzcGVjIGFzIGRhdGEiLCA6YXJnbGlzdHMgKFtzcGVjXSl9LCA6c291cmNlICIoZGVmblxyXG4gZm9ybVxyXG4gXCJyZXR1cm5zIHRoZSBzcGVjIGFzIGRhdGFcIlxyXG4gW3NwZWNdXHJcbiAoZGVzY3JpYmUqIChzcGVjaXplIHNwZWMpKSlcclxuIn0gezpzeW0gbmlsYWJsZS1pbXBsLCA6bWV0YSB7OmRvYyAiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICduaWxhYmxlJyIsIDphcmdsaXN0cyAoW2Zvcm0gcHJlZCBnZm5dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBuaWxhYmxlLWltcGxcclxuIFwiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICduaWxhYmxlJ1wiXHJcbiBbZm9ybSBwcmVkIGdmbl1cclxuIChsZXRcclxuICBbc3BlYyAoZGVsYXkgKHNwZWNpemUgcHJlZCBmb3JtKSldXHJcbiAgKHJlaWZ5XHJcbiAgIFNwZWNpemVcclxuICAgKHNwZWNpemUqIFtzXSBzKVxyXG4gICAoc3BlY2l6ZSogW3MgX10gcylcclxuICAgU3BlY1xyXG4gICAoY29uZm9ybSogW18geF0gKGlmIChuaWw/IHgpIG5pbCAoY29uZm9ybSogQHNwZWMgeCkpKVxyXG4gICAodW5mb3JtKiBbXyB4XSAoaWYgKG5pbD8geCkgbmlsICh1bmZvcm0qIEBzcGVjIHgpKSlcclxuICAgKGV4cGxhaW4qXHJcbiAgICBbXyBwYXRoIHZpYSBpbiB4XVxyXG4gICAgKHdoZW4tbm90XHJcbiAgICAgKGMvb3IgKHB2YWxpZD8gQHNwZWMgeCkgKG5pbD8geCkpXHJcbiAgICAgKGNvbmpcclxuICAgICAgKGV4cGxhaW4tMSBmb3JtIHByZWQgKGNvbmogcGF0aCA6Y2xqcy5zcGVjLmFscGhhL3ByZWQpIHZpYSBpbiB4KVxyXG4gICAgICB7OnBhdGggKGNvbmogcGF0aCA6Y2xqcy5zcGVjLmFscGhhL25pbCksXHJcbiAgICAgICA6cHJlZCAnbmlsPyxcclxuICAgICAgIDp2YWwgeCxcclxuICAgICAgIDp2aWEgdmlhLFxyXG4gICAgICAgOmluIGlufSkpKVxyXG4gICAoZ2VuKlxyXG4gICAgW18gb3ZlcnJpZGVzIHBhdGggcm1hcF1cclxuICAgIChpZlxyXG4gICAgIGdmblxyXG4gICAgIChnZm4pXHJcbiAgICAgKGdlbi9mcmVxdWVuY3lcclxuICAgICAgW1sxIChnZW4vZGVsYXkgKGdlbi9yZXR1cm4gbmlsKSldXHJcbiAgICAgICBbOVxyXG4gICAgICAgIChnZW4vZGVsYXlcclxuICAgICAgICAgKGdlbnN1YlxyXG4gICAgICAgICAgcHJlZFxyXG4gICAgICAgICAgb3ZlcnJpZGVzXHJcbiAgICAgICAgICAoY29uaiBwYXRoIDpjbGpzLnNwZWMuYWxwaGEvcHJlZClcclxuICAgICAgICAgIHJtYXBcclxuICAgICAgICAgIGZvcm0pKV1dKSkpXHJcbiAgICh3aXRoLWdlbiogW18gZ2ZuXSAobmlsYWJsZS1pbXBsIGZvcm0gcHJlZCBnZm4pKVxyXG4gICAoZGVzY3JpYmUqXHJcbiAgICBbX11cclxuICAgIChjbG9qdXJlLmNvcmUvc2VxdWVuY2VcclxuICAgICAoY2xvanVyZS5jb3JlL3NlcVxyXG4gICAgICAoY2xvanVyZS5jb3JlL2NvbmNhdFxyXG4gICAgICAgKGNsb2p1cmUuY29yZS9saXN0ICdjbGpzLnNwZWMuYWxwaGEvbmlsYWJsZSlcclxuICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCAocy9tcmVzIGZvcm0pKSkpKSkpKSlcclxuIn0gezpzeW0gKnJlY3Vyc2lvbi1saW1pdCosIDptZXRhIHt9LCA6c291cmNlICIoZGVmXHJcbiAqcmVjdXJzaW9uLWxpbWl0KlxyXG4gXCJBIHNvZnQgbGltaXQgb24gaG93IG1hbnkgdGltZXMgYSBicmFuY2hpbmcgc3BlYyAob3IvYWx0Lyovb3B0LWtleXMvbXVsdGktc3BlYylcXG4gIGNhbiBiZSByZWN1cnNlZCB0aHJvdWdoIGR1cmluZyBnZW5lcmF0aW9uLiBBZnRlciB0aGlzIGFcXG4gIG5vbi1yZWN1cnNpdmUgYnJhbmNoIHdpbGwgYmUgY2hvc2VuLlwiXHJcbiA0KVxyXG4ifSB7OnN5bSAqY29sbC1lcnJvci1saW1pdCosIDptZXRhIHt9LCA6c291cmNlICIoZGVmXHJcbiAqY29sbC1lcnJvci1saW1pdCpcclxuIFwiVGhlIG51bWJlciBvZiBlcnJvcnMgcmVwb3J0ZWQgYnkgZXhwbGFpbiBpbiBhIGNvbGxlY3Rpb24gc3BlYydlZCB3aXRoICdldmVyeSdcIlxyXG4gMjApXHJcbiJ9IHs6c3ltIGV4cGxhaW4tcHJpbnRlciwgOm1ldGEgezpkb2MgIkRlZmF1bHQgcHJpbnRlciBmb3IgZXhwbGFpbi1kYXRhLiBuaWwgaW5kaWNhdGVzIGEgc3VjY2Vzc2Z1bCB2YWxpZGF0aW9uLiIsIDphcmdsaXN0cyAoW2VkXSl9LCA6c291cmNlICIoZGVmblxyXG4gZXhwbGFpbi1wcmludGVyXHJcbiBcIkRlZmF1bHQgcHJpbnRlciBmb3IgZXhwbGFpbi1kYXRhLiBuaWwgaW5kaWNhdGVzIGEgc3VjY2Vzc2Z1bCB2YWxpZGF0aW9uLlwiXHJcbiBbZWRdXHJcbiAoaWZcclxuICBlZFxyXG4gIChsZXRcclxuICAgW3Byb2JsZW1zXHJcbiAgICAoLT4+XHJcbiAgICAgKDpjbGpzLnNwZWMuYWxwaGEvcHJvYmxlbXMgZWQpXHJcbiAgICAgKHNvcnQtYnkgKGZuKiBbcDFfXzQxNTUzI10gKC0gKGNvdW50ICg6aW4gcDFfXzQxNTUzIykpKSkpXHJcbiAgICAgKHNvcnQtYnkgKGZuKiBbcDFfXzQxNTU0I10gKC0gKGNvdW50ICg6cGF0aCBwMV9fNDE1NTQjKSkpKSkpXVxyXG4gICAocHJpbnRcclxuICAgICh3aXRoLW91dC1zdHJcclxuICAgICAoZG9zZXFcclxuICAgICAgW3s6a2V5cyBbcGF0aCBwcmVkIHZhbCByZWFzb24gdmlhIGluXSwgOmFzIHByb2J9IHByb2JsZW1zXVxyXG4gICAgICAocHIgdmFsKVxyXG4gICAgICAocHJpbnQgXCIgLSBmYWlsZWQ6IFwiKVxyXG4gICAgICAoaWYgcmVhc29uIChwcmludCByZWFzb24pIChwciAoYWJicmV2IHByZWQpKSlcclxuICAgICAgKHdoZW4tbm90IChlbXB0eT8gaW4pIChwcmludCAoc3RyIFwiIGluOiBcIiAocHItc3RyIGluKSkpKVxyXG4gICAgICAod2hlbi1ub3QgKGVtcHR5PyBwYXRoKSAocHJpbnQgKHN0ciBcIiBhdDogXCIgKHByLXN0ciBwYXRoKSkpKVxyXG4gICAgICAod2hlbi1ub3RcclxuICAgICAgIChlbXB0eT8gdmlhKVxyXG4gICAgICAgKHByaW50IChzdHIgXCIgc3BlYzogXCIgKHByLXN0ciAobGFzdCB2aWEpKSkpKVxyXG4gICAgICAoZG9zZXFcclxuICAgICAgIFtbayB2XSBwcm9iXVxyXG4gICAgICAgKHdoZW4tbm90XHJcbiAgICAgICAgKCN7OnBhdGggOnByZWQgOnZpYSA6dmFsIDpyZWFzb24gOmlufSBrKVxyXG4gICAgICAgIChwcmludCBcIlxcblxcdFwiIChwci1zdHIgaykgXCIgXCIpXHJcbiAgICAgICAgKHByIHYpKSlcclxuICAgICAgKG5ld2xpbmUpKSkpKVxyXG4gIChwcmludGxuIFwiU3VjY2VzcyFcIikpKVxyXG4ifSB7OnN5bSBTcGVjaXplLCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAoc3BlY2l6ZSopfSB7OnN5bSBhbHQtaW1wbCwgOm1ldGEgezpkb2MgIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnYWx0JyIsIDphcmdsaXN0cyAoW2tzIHBzIGZvcm1zXSl9LCA6c291cmNlICIoZGVmblxyXG4gYWx0LWltcGxcclxuIFwiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdhbHQnXCJcclxuIFtrcyBwcyBmb3Jtc11cclxuIChhc3NvYyAoYWx0KiBwcyBrcyBmb3JtcykgOmlkIChyYW5kb20tdXVpZCkpKVxyXG4ifSB7OnN5bSBkZWYtaW1wbCwgOm1ldGEgezpkb2MgIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnZGVmJyIsIDphcmdsaXN0cyAoW2sgZm9ybSBzcGVjXSl9LCA6c291cmNlICIoZGVmblxyXG4gZGVmLWltcGxcclxuIFwiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdkZWYnXCJcclxuIFtrIGZvcm0gc3BlY11cclxuIChhc3NlcnRcclxuICAoYy9hbmQgKGlkZW50PyBrKSAobmFtZXNwYWNlIGspKVxyXG4gIFwiayBtdXN0IGJlIG5hbWVzcGFjZWQga2V5d29yZCBvciByZXNvbHZlYWJsZSBzeW1ib2xcIilcclxuIChpZlxyXG4gIChuaWw/IHNwZWMpXHJcbiAgKHN3YXAhIHJlZ2lzdHJ5LXJlZiBkaXNzb2MgaylcclxuICAobGV0XHJcbiAgIFtzcGVjXHJcbiAgICAoaWZcclxuICAgICAoYy9vciAoc3BlYz8gc3BlYykgKHJlZ2V4PyBzcGVjKSAoZ2V0IEByZWdpc3RyeS1yZWYgc3BlYykpXHJcbiAgICAgc3BlY1xyXG4gICAgIChzcGVjLWltcGwgZm9ybSBzcGVjIG5pbCBuaWwpKV1cclxuICAgKHN3YXAhIHJlZ2lzdHJ5LXJlZiBhc3NvYyBrICh3aXRoLW5hbWUgc3BlYyBrKSkpKVxyXG4gaylcclxuIn0gezpzeW0gKmV4cGxhaW4tb3V0KiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmV4cGxhaW4tb3V0KiBleHBsYWluLXByaW50ZXIpXHJcbiJ9IHs6c3ltIHJlZ2V4LXNwZWMtaW1wbCwgOm1ldGEgezpkb2MgIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnc3BlYycgd2l0aCBhIHJlZ2V4IG9wIGFyZ3VtZW50IiwgOmFyZ2xpc3RzIChbcmUgZ2ZuXSl9LCA6c291cmNlICIoZGVmblxyXG4gcmVnZXgtc3BlYy1pbXBsXHJcbiBcIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnc3BlYycgd2l0aCBhIHJlZ2V4IG9wIGFyZ3VtZW50XCJcclxuIFtyZSBnZm5dXHJcbiAocmVpZnlcclxuICBTcGVjaXplXHJcbiAgKHNwZWNpemUqIFtzXSBzKVxyXG4gIChzcGVjaXplKiBbcyBfXSBzKVxyXG4gIFNwZWNcclxuICAoY29uZm9ybSpcclxuICAgW18geF1cclxuICAgKGlmXHJcbiAgICAoYy9vciAobmlsPyB4KSAoc2VxdWVudGlhbD8geCkpXHJcbiAgICAocmUtY29uZm9ybSByZSAoc2VxIHgpKVxyXG4gICAgOmNsanMuc3BlYy5hbHBoYS9pbnZhbGlkKSlcclxuICAodW5mb3JtKiBbXyB4XSAob3AtdW5mb3JtIHJlIHgpKVxyXG4gIChleHBsYWluKlxyXG4gICBbXyBwYXRoIHZpYSBpbiB4XVxyXG4gICAoaWZcclxuICAgIChjL29yIChuaWw/IHgpIChzZXF1ZW50aWFsPyB4KSlcclxuICAgIChyZS1leHBsYWluIHBhdGggdmlhIGluIHJlIChzZXEgeCkpXHJcbiAgICBbezpwYXRoIHBhdGgsXHJcbiAgICAgIDpwcmVkXHJcbiAgICAgIChjbG9qdXJlLmNvcmUvc2VxdWVuY2VcclxuICAgICAgIChjbG9qdXJlLmNvcmUvc2VxXHJcbiAgICAgICAgKGNsb2p1cmUuY29yZS9jb25jYXRcclxuICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0ICdjbG9qdXJlLmNvcmUvZm4pXHJcbiAgICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdFxyXG4gICAgICAgICAgKGNsb2p1cmUuY29yZS92ZWNcclxuICAgICAgICAgICAoY2xvanVyZS5jb3JlL3NlcXVlbmNlXHJcbiAgICAgICAgICAgIChjbG9qdXJlLmNvcmUvc2VxXHJcbiAgICAgICAgICAgICAoY2xvanVyZS5jb3JlL2NvbmNhdCAoY2xvanVyZS5jb3JlL2xpc3QgJyUpKSkpKSlcclxuICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0XHJcbiAgICAgICAgICAoY2xvanVyZS5jb3JlL3NlcXVlbmNlXHJcbiAgICAgICAgICAgKGNsb2p1cmUuY29yZS9zZXFcclxuICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9jb25jYXRcclxuICAgICAgICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCAnY2xqcy5jb3JlL29yKVxyXG4gICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0XHJcbiAgICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxyXG4gICAgICAgICAgICAgICAoY2xvanVyZS5jb3JlL3NlcVxyXG4gICAgICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9jb25jYXRcclxuICAgICAgICAgICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgJ2Nsb2p1cmUuY29yZS9uaWw/KVxyXG4gICAgICAgICAgICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCAnJSkpKSkpXHJcbiAgICAgICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3RcclxuICAgICAgICAgICAgICAoY2xvanVyZS5jb3JlL3NlcXVlbmNlXHJcbiAgICAgICAgICAgICAgIChjbG9qdXJlLmNvcmUvc2VxXHJcbiAgICAgICAgICAgICAgICAoY2xvanVyZS5jb3JlL2NvbmNhdFxyXG4gICAgICAgICAgICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCAnY2xvanVyZS5jb3JlL3NlcXVlbnRpYWw/KVxyXG4gICAgICAgICAgICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCAnJSkpKSkpKSkpKSkpKSxcclxuICAgICAgOnZhbCB4LFxyXG4gICAgICA6dmlhIHZpYSxcclxuICAgICAgOmluIGlufV0pKVxyXG4gIChnZW4qXHJcbiAgIFtfIG92ZXJyaWRlcyBwYXRoIHJtYXBdXHJcbiAgIChpZiBnZm4gKGdmbikgKHJlLWdlbiByZSBvdmVycmlkZXMgcGF0aCBybWFwIChvcC1kZXNjcmliZSByZSkpKSlcclxuICAod2l0aC1nZW4qIFtfIGdmbl0gKHJlZ2V4LXNwZWMtaW1wbCByZSBnZm4pKVxyXG4gIChkZXNjcmliZSogW19dIChvcC1kZXNjcmliZSByZSkpKSlcclxuIn0gezpzeW0gbWVyZ2Utc3BlYy1pbXBsLCA6bWV0YSB7OmRvYyAiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdtZXJnZSciLCA6YXJnbGlzdHMgKFtmb3JtcyBwcmVkcyBnZm5dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBtZXJnZS1zcGVjLWltcGxcclxuIFwiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdtZXJnZSdcIlxyXG4gW2Zvcm1zIHByZWRzIGdmbl1cclxuIChyZWlmeVxyXG4gIFNwZWNpemVcclxuICAoc3BlY2l6ZSogW3NdIHMpXHJcbiAgKHNwZWNpemUqIFtzIF9dIHMpXHJcbiAgU3BlY1xyXG4gIChjb25mb3JtKlxyXG4gICBbXyB4XVxyXG4gICAobGV0XHJcbiAgICBbbXNcclxuICAgICAobWFwXHJcbiAgICAgIChmbiogW3AxX180MTU2NiMgcDJfXzQxNTY3I10gKGR0IHAxX180MTU2NiMgeCBwMl9fNDE1NjcjKSlcclxuICAgICAgcHJlZHNcclxuICAgICAgZm9ybXMpXVxyXG4gICAgKGlmXHJcbiAgICAgKHNvbWUgaW52YWxpZD8gbXMpXHJcbiAgICAgOmNsanMuc3BlYy5hbHBoYS9pbnZhbGlkXHJcbiAgICAgKGFwcGx5IGMvbWVyZ2UgbXMpKSkpXHJcbiAgKHVuZm9ybSpcclxuICAgW18geF1cclxuICAgKGFwcGx5XHJcbiAgICBjL21lcmdlXHJcbiAgICAobWFwIChmbiogW3AxX180MTU2OCNdICh1bmZvcm0gcDFfXzQxNTY4IyB4KSkgKHJldmVyc2UgcHJlZHMpKSkpXHJcbiAgKGV4cGxhaW4qXHJcbiAgIFtfIHBhdGggdmlhIGluIHhdXHJcbiAgIChhcHBseVxyXG4gICAgY29uY2F0XHJcbiAgICAobWFwXHJcbiAgICAgKGZuKlxyXG4gICAgICBbcDFfXzQxNTY5IyBwMl9fNDE1NzAjXVxyXG4gICAgICAoZXhwbGFpbi0xIHAxX180MTU2OSMgcDJfXzQxNTcwIyBwYXRoIHZpYSBpbiB4KSlcclxuICAgICBmb3Jtc1xyXG4gICAgIHByZWRzKSkpXHJcbiAgKGdlbipcclxuICAgW18gb3ZlcnJpZGVzIHBhdGggcm1hcF1cclxuICAgKGlmXHJcbiAgICBnZm5cclxuICAgIChnZm4pXHJcbiAgICAoZ2VuL2ZtYXBcclxuICAgICAoZm4qIFtwMV9fNDE1NzEjXSAoYXBwbHkgYy9tZXJnZSBwMV9fNDE1NzEjKSlcclxuICAgICAoYXBwbHlcclxuICAgICAgZ2VuL3R1cGxlXHJcbiAgICAgIChtYXBcclxuICAgICAgIChmbipcclxuICAgICAgICBbcDFfXzQxNTcyIyBwMl9fNDE1NzMjXVxyXG4gICAgICAgIChnZW5zdWIgcDFfXzQxNTcyIyBvdmVycmlkZXMgcGF0aCBybWFwIHAyX180MTU3MyMpKVxyXG4gICAgICAgcHJlZHNcclxuICAgICAgIGZvcm1zKSkpKSlcclxuICAod2l0aC1nZW4qIFtfIGdmbl0gKG1lcmdlLXNwZWMtaW1wbCBmb3JtcyBwcmVkcyBnZm4pKVxyXG4gIChkZXNjcmliZSpcclxuICAgW19dXHJcbiAgIChjbG9qdXJlLmNvcmUvc2VxdWVuY2VcclxuICAgIChjbG9qdXJlLmNvcmUvc2VxXHJcbiAgICAgKGNsb2p1cmUuY29yZS9jb25jYXRcclxuICAgICAgKGNsb2p1cmUuY29yZS9saXN0ICdjbGpzLnNwZWMuYWxwaGEvbWVyZ2UpXHJcbiAgICAgIGZvcm1zKSkpKSkpXHJcbiJ9IHs6c3ltIGV4cGxhaW4tZGF0YSosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3BlYyBwYXRoIHZpYSBpbiB4XSl9LCA6c291cmNlICIoZGVmblxyXG4gZXhwbGFpbi1kYXRhKlxyXG4gW3NwZWMgcGF0aCB2aWEgaW4geF1cclxuICh3aGVuLWxldFxyXG4gIFtwcm9icyAoZXhwbGFpbiogKHNwZWNpemUgc3BlYykgcGF0aCB2aWEgaW4geCldXHJcbiAgKHdoZW4tbm90XHJcbiAgIChlbXB0eT8gcHJvYnMpXHJcbiAgIHs6Y2xqcy5zcGVjLmFscGhhL3Byb2JsZW1zIHByb2JzLFxyXG4gICAgOmNsanMuc3BlYy5hbHBoYS9zcGVjIHNwZWMsXHJcbiAgICA6Y2xqcy5zcGVjLmFscGhhL3ZhbHVlIHh9KSkpXHJcbiJ9IHs6c3ltIE1BWF9JTlQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIE1BWF9JTlQgOTAwNzE5OTI1NDc0MDk5MSlcclxuIn0gezpzeW0gY2hlY2stYXNzZXJ0cywgOm1ldGEgezpkb2MgIkVuYWJsZSBvciBkaXNhYmxlIHNwZWMgYXNzZXJ0cyB0aGF0IGhhdmUgYmVlbiBjb21waWxlZFxud2l0aCAnKmNvbXBpbGUtYXNzZXJ0cyonIHRydWUuICBTZWUgJ2Fzc2VydCcuXG5Jbml0aWFsbHkgc2V0IHRvIGJvb2xlYW4gdmFsdWUgb2YgY2xqcy5zcGVjLmFscGhhLypydW50aW1lLWFzc2VydHMqLlxuRGVmYXVsdHMgdG8gZmFsc2UuIiwgOmFyZ2xpc3RzIChbZmxhZ10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGNoZWNrLWFzc2VydHNcclxuIFwiRW5hYmxlIG9yIGRpc2FibGUgc3BlYyBhc3NlcnRzIHRoYXQgaGF2ZSBiZWVuIGNvbXBpbGVkXFxud2l0aCAnKmNvbXBpbGUtYXNzZXJ0cyonIHRydWUuICBTZWUgJ2Fzc2VydCcuXFxuSW5pdGlhbGx5IHNldCB0byBib29sZWFuIHZhbHVlIG9mIGNsanMuc3BlYy5hbHBoYS8qcnVudGltZS1hc3NlcnRzKi5cXG5EZWZhdWx0cyB0byBmYWxzZS5cIlxyXG4gW2ZsYWddXHJcbiAoc2V0ISAqcnVudGltZS1hc3NlcnRzKiBmbGFnKSlcclxuIn0gezpzeW0gYXNzZXJ0KiwgOm1ldGEgezpkb2MgIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnYXNzZXJ0Jy4iLCA6YXJnbGlzdHMgKFtzcGVjIHhdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBhc3NlcnQqXHJcbiBcIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnYXNzZXJ0Jy5cIlxyXG4gW3NwZWMgeF1cclxuIChpZlxyXG4gICh2YWxpZD8gc3BlYyB4KVxyXG4gIHhcclxuICAobGV0XHJcbiAgIFtlZFxyXG4gICAgKGMvbWVyZ2VcclxuICAgICAoYXNzb2NcclxuICAgICAgKGV4cGxhaW4tZGF0YSogc3BlYyBbXSBbXSBbXSB4KVxyXG4gICAgICA6Y2xqcy5zcGVjLmFscGhhL2ZhaWx1cmVcclxuICAgICAgOmFzc2VydGlvbi1mYWlsZWQpKV1cclxuICAgKHRocm93XHJcbiAgICAoanMvRXJyb3IuXHJcbiAgICAgKHN0clxyXG4gICAgICBcIlNwZWMgYXNzZXJ0aW9uIGZhaWxlZFxcblwiXHJcbiAgICAgICh3aXRoLW91dC1zdHIgKGV4cGxhaW4tb3V0IGVkKSkpKSkpKSlcclxuIn0gezpzeW0gaW5zdC1pbi1yYW5nZT8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiBpbnN0IGF0IG9yIGFmdGVyIHN0YXJ0IGFuZCBiZWZvcmUgZW5kIiwgOmFyZ2xpc3RzIChbc3RhcnQgZW5kIGluc3RdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBpbnN0LWluLXJhbmdlP1xyXG4gXCJSZXR1cm4gdHJ1ZSBpZiBpbnN0IGF0IG9yIGFmdGVyIHN0YXJ0IGFuZCBiZWZvcmUgZW5kXCJcclxuIFtzdGFydCBlbmQgaW5zdF1cclxuIChjL2FuZFxyXG4gIChpbnN0PyBpbnN0KVxyXG4gIChsZXRcclxuICAgW3QgKGluc3QtbXMgaW5zdCldXHJcbiAgIChjL2FuZCAoPD0gKGluc3QtbXMgc3RhcnQpIHQpICg8IHQgKGluc3QtbXMgZW5kKSkpKSkpXHJcbiJ9IHs6c3ltIGFuZC1zcGVjLWltcGwsIDptZXRhIHs6ZG9jICJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJ2FuZCciLCA6YXJnbGlzdHMgKFtmb3JtcyBwcmVkcyBnZm5dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBhbmQtc3BlYy1pbXBsXHJcbiBcIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnYW5kJ1wiXHJcbiBbZm9ybXMgcHJlZHMgZ2ZuXVxyXG4gKGxldFxyXG4gIFtzcGVjc1xyXG4gICAoZGVsYXkgKG1hcHYgc3BlY2l6ZSBwcmVkcyBmb3JtcykpXHJcbiAgIGNmb3JtXHJcbiAgIChjYXNlXHJcbiAgICAoY291bnQgcHJlZHMpXHJcbiAgICAyXHJcbiAgICAoZm5cclxuICAgICBbeF1cclxuICAgICAobGV0XHJcbiAgICAgIFtzcGVjcyBAc3BlY3MgcmV0IChjb25mb3JtKiAoc3BlY3MgMCkgeCldXHJcbiAgICAgIChpZlxyXG4gICAgICAgKGludmFsaWQ/IHJldClcclxuICAgICAgIDpjbGpzLnNwZWMuYWxwaGEvaW52YWxpZFxyXG4gICAgICAgKGNvbmZvcm0qIChzcGVjcyAxKSByZXQpKSkpXHJcbiAgICAzXHJcbiAgICAoZm5cclxuICAgICBbeF1cclxuICAgICAobGV0XHJcbiAgICAgIFtzcGVjcyBAc3BlY3MgcmV0IChjb25mb3JtKiAoc3BlY3MgMCkgeCldXHJcbiAgICAgIChpZlxyXG4gICAgICAgKGludmFsaWQ/IHJldClcclxuICAgICAgIDpjbGpzLnNwZWMuYWxwaGEvaW52YWxpZFxyXG4gICAgICAgKGxldFxyXG4gICAgICAgIFtyZXQgKGNvbmZvcm0qIChzcGVjcyAxKSByZXQpXVxyXG4gICAgICAgIChpZlxyXG4gICAgICAgICAoaW52YWxpZD8gcmV0KVxyXG4gICAgICAgICA6Y2xqcy5zcGVjLmFscGhhL2ludmFsaWRcclxuICAgICAgICAgKGNvbmZvcm0qIChzcGVjcyAyKSByZXQpKSkpKSlcclxuICAgIChmblxyXG4gICAgIFt4XVxyXG4gICAgIChsZXRcclxuICAgICAgW3NwZWNzIEBzcGVjc11cclxuICAgICAgKGxvb3BcclxuICAgICAgIFtyZXQgeCBpIDBdXHJcbiAgICAgICAoaWZcclxuICAgICAgICAoPCBpIChjb3VudCBzcGVjcykpXHJcbiAgICAgICAgKGxldFxyXG4gICAgICAgICBbbnJldCAoY29uZm9ybSogKHNwZWNzIGkpIHJldCldXHJcbiAgICAgICAgIChpZlxyXG4gICAgICAgICAgKGludmFsaWQ/IG5yZXQpXHJcbiAgICAgICAgICA6Y2xqcy5zcGVjLmFscGhhL2ludmFsaWRcclxuICAgICAgICAgIChyZWN1ciBucmV0IChpbmMgaSkpKSlcclxuICAgICAgICByZXQpKSkpKV1cclxuICAocmVpZnlcclxuICAgU3BlY2l6ZVxyXG4gICAoc3BlY2l6ZSogW3NdIHMpXHJcbiAgIChzcGVjaXplKiBbcyBfXSBzKVxyXG4gICBTcGVjXHJcbiAgIChjb25mb3JtKiBbXyB4XSAoY2Zvcm0geCkpXHJcbiAgICh1bmZvcm0qXHJcbiAgICBbXyB4XVxyXG4gICAgKHJlZHVjZVxyXG4gICAgIChmbiogW3AxX180MTU2NSMgcDJfXzQxNTY0I10gKHVuZm9ybSBwMl9fNDE1NjQjIHAxX180MTU2NSMpKVxyXG4gICAgIHhcclxuICAgICAocmV2ZXJzZSBwcmVkcykpKVxyXG4gICAoZXhwbGFpbipcclxuICAgIFtfIHBhdGggdmlhIGluIHhdXHJcbiAgICAoZXhwbGFpbi1wcmVkLWxpc3QgZm9ybXMgcHJlZHMgcGF0aCB2aWEgaW4geCkpXHJcbiAgIChnZW4qXHJcbiAgICBbXyBvdmVycmlkZXMgcGF0aCBybWFwXVxyXG4gICAgKGlmXHJcbiAgICAgZ2ZuXHJcbiAgICAgKGdmbilcclxuICAgICAoZ2Vuc3ViIChmaXJzdCBwcmVkcykgb3ZlcnJpZGVzIHBhdGggcm1hcCAoZmlyc3QgZm9ybXMpKSkpXHJcbiAgICh3aXRoLWdlbiogW18gZ2ZuXSAoYW5kLXNwZWMtaW1wbCBmb3JtcyBwcmVkcyBnZm4pKVxyXG4gICAoZGVzY3JpYmUqXHJcbiAgICBbX11cclxuICAgIChjbG9qdXJlLmNvcmUvc2VxdWVuY2VcclxuICAgICAoY2xvanVyZS5jb3JlL3NlcVxyXG4gICAgICAoY2xvanVyZS5jb3JlL2NvbmNhdFxyXG4gICAgICAgKGNsb2p1cmUuY29yZS9saXN0ICdjbGpzLnNwZWMuYWxwaGEvYW5kKVxyXG4gICAgICAgZm9ybXMpKSkpKSkpXHJcbiJ9IHs6c3ltIGRlc2NyaWJlKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzcGVjXSl9LCA6cHJvdG9jb2wgU3BlY30gezpzeW0gbWFwLXNwZWMtaW1wbCwgOm1ldGEgezpkb2MgIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnc3BlYycgd2l0aCBhIG1hcCBhcmd1bWVudCIsIDphcmdsaXN0cyAoW3s6a2V5cyBbcmVxLXVuIG9wdC11biBrZXlzLXByZWQgcHJlZC1leHBycyBvcHQta2V5cyByZXEtc3BlY3MgcmVxIHJlcS1rZXlzIG9wdC1zcGVjcyBwcmVkLWZvcm1zIG9wdCBnZm5dLCA6YXMgYXJnbX1dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBtYXAtc3BlYy1pbXBsXHJcbiBcIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnc3BlYycgd2l0aCBhIG1hcCBhcmd1bWVudFwiXHJcbiBbezprZXlzXHJcbiAgIFtyZXEtdW5cclxuICAgIG9wdC11blxyXG4gICAga2V5cy1wcmVkXHJcbiAgICBwcmVkLWV4cHJzXHJcbiAgICBvcHQta2V5c1xyXG4gICAgcmVxLXNwZWNzXHJcbiAgICByZXFcclxuICAgIHJlcS1rZXlzXHJcbiAgICBvcHQtc3BlY3NcclxuICAgIHByZWQtZm9ybXNcclxuICAgIG9wdFxyXG4gICAgZ2ZuXSxcclxuICAgOmFzIGFyZ219XVxyXG4gKGxldFxyXG4gIFtrLT5zXHJcbiAgICh6aXBtYXAgKGNvbmNhdCByZXEta2V5cyBvcHQta2V5cykgKGNvbmNhdCByZXEtc3BlY3Mgb3B0LXNwZWNzKSlcclxuICAga2V5cy0+c3BlY25hbWVzXHJcbiAgIChmbiogW3AxX180MTU1NiNdIChjL29yIChrLT5zIHAxX180MTU1NiMpIHAxX180MTU1NiMpKVxyXG4gICBpZFxyXG4gICAocmFuZG9tLXV1aWQpXVxyXG4gIChyZWlmeVxyXG4gICBTcGVjaXplXHJcbiAgIChzcGVjaXplKiBbc10gcylcclxuICAgKHNwZWNpemUqIFtzIF9dIHMpXHJcbiAgIFNwZWNcclxuICAgKGNvbmZvcm0qXHJcbiAgICBbXyBtXVxyXG4gICAgKGlmXHJcbiAgICAgKGtleXMtcHJlZCBtKVxyXG4gICAgIChsZXRcclxuICAgICAgW3JlZyAocmVnaXN0cnkpXVxyXG4gICAgICAobG9vcFxyXG4gICAgICAgW3JldCBtIFtbayB2XSAmIGtzIDphcyBrZXlzXSBtXVxyXG4gICAgICAgKGlmXHJcbiAgICAgICAga2V5c1xyXG4gICAgICAgIChsZXRcclxuICAgICAgICAgW3NuYW1lIChrZXlzLT5zcGVjbmFtZXMgayldXHJcbiAgICAgICAgIChpZi1sZXRcclxuICAgICAgICAgIFtzIChnZXQgcmVnIHNuYW1lKV1cclxuICAgICAgICAgIChsZXRcclxuICAgICAgICAgICBbY3YgKGNvbmZvcm0gcyB2KV1cclxuICAgICAgICAgICAoaWZcclxuICAgICAgICAgICAgKGludmFsaWQ/IGN2KVxyXG4gICAgICAgICAgICA6Y2xqcy5zcGVjLmFscGhhL2ludmFsaWRcclxuICAgICAgICAgICAgKHJlY3VyIChpZiAoaWRlbnRpY2FsPyBjdiB2KSByZXQgKGFzc29jIHJldCBrIGN2KSkga3MpKSlcclxuICAgICAgICAgIChyZWN1ciByZXQga3MpKSlcclxuICAgICAgICByZXQpKSlcclxuICAgICA6Y2xqcy5zcGVjLmFscGhhL2ludmFsaWQpKVxyXG4gICAodW5mb3JtKlxyXG4gICAgW18gbV1cclxuICAgIChsZXRcclxuICAgICBbcmVnIChyZWdpc3RyeSldXHJcbiAgICAgKGxvb3BcclxuICAgICAgW3JldCBtIFtrICYga3MgOmFzIGtleXNdIChjL2tleXMgbSldXHJcbiAgICAgIChpZlxyXG4gICAgICAga2V5c1xyXG4gICAgICAgKGlmXHJcbiAgICAgICAgKGNvbnRhaW5zPyByZWcgKGtleXMtPnNwZWNuYW1lcyBrKSlcclxuICAgICAgICAobGV0XHJcbiAgICAgICAgIFtjdiAoZ2V0IG0gaykgdiAodW5mb3JtIChrZXlzLT5zcGVjbmFtZXMgaykgY3YpXVxyXG4gICAgICAgICAocmVjdXIgKGlmIChpZGVudGljYWw/IGN2IHYpIHJldCAoYXNzb2MgcmV0IGsgdikpIGtzKSlcclxuICAgICAgICAocmVjdXIgcmV0IGtzKSlcclxuICAgICAgIHJldCkpKSlcclxuICAgKGV4cGxhaW4qXHJcbiAgICBbXyBwYXRoIHZpYSBpbiB4XVxyXG4gICAgKGlmLW5vdFxyXG4gICAgIChtYXA/IHgpXHJcbiAgICAgW3s6cGF0aCBwYXRoLCA6cHJlZCAnY2xvanVyZS5jb3JlL21hcD8sIDp2YWwgeCwgOnZpYSB2aWEsIDppbiBpbn1dXHJcbiAgICAgKGxldFxyXG4gICAgICBbcmVnIChyZWdpc3RyeSldXHJcbiAgICAgIChhcHBseVxyXG4gICAgICAgY29uY2F0XHJcbiAgICAgICAod2hlbi1sZXRcclxuICAgICAgICBbcHJvYnNcclxuICAgICAgICAgKC0+PlxyXG4gICAgICAgICAgKG1hcFxyXG4gICAgICAgICAgIChmbiBbcHJlZCBmb3JtXSAod2hlbi1ub3QgKHByZWQgeCkgZm9ybSkpXHJcbiAgICAgICAgICAgcHJlZC1leHByc1xyXG4gICAgICAgICAgIHByZWQtZm9ybXMpXHJcbiAgICAgICAgICAoa2VlcCBpZGVudGl0eSlcclxuICAgICAgICAgIHNlcSldXHJcbiAgICAgICAgKG1hcFxyXG4gICAgICAgICAoZm4qXHJcbiAgICAgICAgICBbcDFfXzQxNTU3I11cclxuICAgICAgICAgIChpZGVudGl0eVxyXG4gICAgICAgICAgIHs6cGF0aCBwYXRoLCA6cHJlZCBwMV9fNDE1NTcjLCA6dmFsIHgsIDp2aWEgdmlhLCA6aW4gaW59KSlcclxuICAgICAgICAgcHJvYnMpKVxyXG4gICAgICAgKG1hcFxyXG4gICAgICAgIChmblxyXG4gICAgICAgICBbW2sgdl1dXHJcbiAgICAgICAgICh3aGVuLW5vdFxyXG4gICAgICAgICAgKGMvb3JcclxuICAgICAgICAgICAobm90IChjb250YWlucz8gcmVnIChrZXlzLT5zcGVjbmFtZXMgaykpKVxyXG4gICAgICAgICAgIChwdmFsaWQ/IChrZXlzLT5zcGVjbmFtZXMgaykgdiBrKSlcclxuICAgICAgICAgIChleHBsYWluLTFcclxuICAgICAgICAgICAoa2V5cy0+c3BlY25hbWVzIGspXHJcbiAgICAgICAgICAgKGtleXMtPnNwZWNuYW1lcyBrKVxyXG4gICAgICAgICAgIChjb25qIHBhdGggaylcclxuICAgICAgICAgICB2aWFcclxuICAgICAgICAgICAoY29uaiBpbiBrKVxyXG4gICAgICAgICAgIHYpKSlcclxuICAgICAgICAoc2VxIHgpKSkpKSlcclxuICAgKGdlbipcclxuICAgIFtfIG92ZXJyaWRlcyBwYXRoIHJtYXBdXHJcbiAgICAoaWZcclxuICAgICBnZm5cclxuICAgICAoZ2ZuKVxyXG4gICAgIChsZXRcclxuICAgICAgW3JtYXBcclxuICAgICAgIChpbmNrIHJtYXAgaWQpXHJcbiAgICAgICByZ2VuXHJcbiAgICAgICAoZm4gW2sgc10gW2sgKGdlbnN1YiBzIG92ZXJyaWRlcyAoY29uaiBwYXRoIGspIHJtYXAgayldKVxyXG4gICAgICAgb2dlblxyXG4gICAgICAgKGZuXHJcbiAgICAgICAgW2sgc11cclxuICAgICAgICAod2hlbi1ub3RcclxuICAgICAgICAgKHJlY3VyLWxpbWl0PyBybWFwIGlkIHBhdGggaylcclxuICAgICAgICAgW2sgKGdlbi9kZWxheSAoZ2Vuc3ViIHMgb3ZlcnJpZGVzIChjb25qIHBhdGggaykgcm1hcCBrKSldKSlcclxuICAgICAgIHJlcXNcclxuICAgICAgIChtYXAgcmdlbiByZXEta2V5cyByZXEtc3BlY3MpXHJcbiAgICAgICBvcHRzXHJcbiAgICAgICAocmVtb3ZlIG5pbD8gKG1hcCBvZ2VuIG9wdC1rZXlzIG9wdC1zcGVjcykpXVxyXG4gICAgICAod2hlblxyXG4gICAgICAgKGV2ZXJ5PyBpZGVudGl0eSAoY29uY2F0IChtYXAgc2Vjb25kIHJlcXMpIChtYXAgc2Vjb25kIG9wdHMpKSlcclxuICAgICAgIChnZW4vYmluZFxyXG4gICAgICAgIChnZW4vdHVwbGVcclxuICAgICAgICAgKGFuZC1rLWdlbiByZXEpXHJcbiAgICAgICAgIChvci1rLWdlbiBvcHQpXHJcbiAgICAgICAgIChhbmQtay1nZW4gcmVxLXVuKVxyXG4gICAgICAgICAob3Itay1nZW4gb3B0LXVuKSlcclxuICAgICAgICAoZm5cclxuICAgICAgICAgW1tyZXEta3Mgb3B0LWtzIHJlcS11bi1rcyBvcHQtdW4ta3NdXVxyXG4gICAgICAgICAobGV0XHJcbiAgICAgICAgICBbcWtzXHJcbiAgICAgICAgICAgKGZsYXR0ZW4gKGNvbmNhdCByZXEta3Mgb3B0LWtzKSlcclxuICAgICAgICAgICB1bnFrc1xyXG4gICAgICAgICAgIChtYXBcclxuICAgICAgICAgICAgKGNvbXAga2V5d29yZCBuYW1lKVxyXG4gICAgICAgICAgICAoZmxhdHRlbiAoY29uY2F0IHJlcS11bi1rcyBvcHQtdW4ta3MpKSldXHJcbiAgICAgICAgICAoLT4+XHJcbiAgICAgICAgICAgKGludG8gcmVxcyBvcHRzKVxyXG4gICAgICAgICAgIChmaWx0ZXJcclxuICAgICAgICAgICAgKGZuKlxyXG4gICAgICAgICAgICAgW3AxX180MTU1OCNdXHJcbiAgICAgICAgICAgICAoKHNldCAoY29uY2F0IHFrcyB1bnFrcykpIChmaXJzdCBwMV9fNDE1NTgjKSkpKVxyXG4gICAgICAgICAgIChhcHBseSBjb25jYXQpXHJcbiAgICAgICAgICAgKGFwcGx5IGdlbi9oYXNoLW1hcCkpKSkpKSkpKVxyXG4gICAod2l0aC1nZW4qIFtfIGdmbl0gKG1hcC1zcGVjLWltcGwgKGFzc29jIGFyZ20gOmdmbiBnZm4pKSlcclxuICAgKGRlc2NyaWJlKlxyXG4gICAgW19dXHJcbiAgICAoY29uc1xyXG4gICAgICdjbGpzLnNwZWMuYWxwaGEva2V5c1xyXG4gICAgIChjb25kLT5cclxuICAgICAgW11cclxuICAgICAgcmVxXHJcbiAgICAgIChjb25qIDpyZXEgcmVxKVxyXG4gICAgICBvcHRcclxuICAgICAgKGNvbmogOm9wdCBvcHQpXHJcbiAgICAgIHJlcS11blxyXG4gICAgICAoY29uaiA6cmVxLXVuIHJlcS11bilcclxuICAgICAgb3B0LXVuXHJcbiAgICAgIChjb25qIDpvcHQtdW4gb3B0LXVuKSkpKSkpKVxyXG4ifSB7OnN5bSBleHBsYWluLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBzcGVjIGFuZCBhIHZhbHVlIHRoYXQgZmFpbHMgdG8gY29uZm9ybSwgcHJpbnRzIGFuIGV4cGxhbmF0aW9uIHRvICpvdXQqLiIsIDphcmdsaXN0cyAoW3NwZWMgeF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGV4cGxhaW5cclxuIFwiR2l2ZW4gYSBzcGVjIGFuZCBhIHZhbHVlIHRoYXQgZmFpbHMgdG8gY29uZm9ybSwgcHJpbnRzIGFuIGV4cGxhbmF0aW9uIHRvICpvdXQqLlwiXHJcbiBbc3BlYyB4XVxyXG4gKGV4cGxhaW4tb3V0IChleHBsYWluLWRhdGEgc3BlYyB4KSkpXHJcbiJ9IHs6c3ltIHdpdGgtZ2VuKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzcGVjIGdmbl0pfSwgOnByb3RvY29sIFNwZWN9IHs6c3ltIG9yLXNwZWMtaW1wbCwgOm1ldGEgezpkb2MgIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnb3InIiwgOmFyZ2xpc3RzIChba2V5cyBmb3JtcyBwcmVkcyBnZm5dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBvci1zcGVjLWltcGxcclxuIFwiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdvcidcIlxyXG4gW2tleXMgZm9ybXMgcHJlZHMgZ2ZuXVxyXG4gKGxldFxyXG4gIFtpZFxyXG4gICAocmFuZG9tLXV1aWQpXHJcbiAgIGtwc1xyXG4gICAoemlwbWFwIGtleXMgcHJlZHMpXHJcbiAgIHNwZWNzXHJcbiAgIChkZWxheSAobWFwdiBzcGVjaXplIHByZWRzIGZvcm1zKSlcclxuICAgY2Zvcm1cclxuICAgKGNhc2VcclxuICAgIChjb3VudCBwcmVkcylcclxuICAgIDJcclxuICAgIChmblxyXG4gICAgIFt4XVxyXG4gICAgIChsZXRcclxuICAgICAgW3NwZWNzIEBzcGVjcyByZXQgKGNvbmZvcm0qIChzcGVjcyAwKSB4KV1cclxuICAgICAgKGlmXHJcbiAgICAgICAoaW52YWxpZD8gcmV0KVxyXG4gICAgICAgKGxldFxyXG4gICAgICAgIFtyZXQgKGNvbmZvcm0qIChzcGVjcyAxKSB4KV1cclxuICAgICAgICAoaWZcclxuICAgICAgICAgKGludmFsaWQ/IHJldClcclxuICAgICAgICAgOmNsanMuc3BlYy5hbHBoYS9pbnZhbGlkXHJcbiAgICAgICAgICh0YWdnZWQtcmV0IChrZXlzIDEpIHJldCkpKVxyXG4gICAgICAgKHRhZ2dlZC1yZXQgKGtleXMgMCkgcmV0KSkpKVxyXG4gICAgM1xyXG4gICAgKGZuXHJcbiAgICAgW3hdXHJcbiAgICAgKGxldFxyXG4gICAgICBbc3BlY3MgQHNwZWNzIHJldCAoY29uZm9ybSogKHNwZWNzIDApIHgpXVxyXG4gICAgICAoaWZcclxuICAgICAgIChpbnZhbGlkPyByZXQpXHJcbiAgICAgICAobGV0XHJcbiAgICAgICAgW3JldCAoY29uZm9ybSogKHNwZWNzIDEpIHgpXVxyXG4gICAgICAgIChpZlxyXG4gICAgICAgICAoaW52YWxpZD8gcmV0KVxyXG4gICAgICAgICAobGV0XHJcbiAgICAgICAgICBbcmV0IChjb25mb3JtKiAoc3BlY3MgMikgeCldXHJcbiAgICAgICAgICAoaWZcclxuICAgICAgICAgICAoaW52YWxpZD8gcmV0KVxyXG4gICAgICAgICAgIDpjbGpzLnNwZWMuYWxwaGEvaW52YWxpZFxyXG4gICAgICAgICAgICh0YWdnZWQtcmV0IChrZXlzIDIpIHJldCkpKVxyXG4gICAgICAgICAodGFnZ2VkLXJldCAoa2V5cyAxKSByZXQpKSlcclxuICAgICAgICh0YWdnZWQtcmV0IChrZXlzIDApIHJldCkpKSlcclxuICAgIChmblxyXG4gICAgIFt4XVxyXG4gICAgIChsZXRcclxuICAgICAgW3NwZWNzIEBzcGVjc11cclxuICAgICAgKGxvb3BcclxuICAgICAgIFtpIDBdXHJcbiAgICAgICAoaWZcclxuICAgICAgICAoPCBpIChjb3VudCBzcGVjcykpXHJcbiAgICAgICAgKGxldFxyXG4gICAgICAgICBbc3BlYyAoc3BlY3MgaSldXHJcbiAgICAgICAgIChsZXRcclxuICAgICAgICAgIFtyZXQgKGNvbmZvcm0qIHNwZWMgeCldXHJcbiAgICAgICAgICAoaWZcclxuICAgICAgICAgICAoaW52YWxpZD8gcmV0KVxyXG4gICAgICAgICAgIChyZWN1ciAoaW5jIGkpKVxyXG4gICAgICAgICAgICh0YWdnZWQtcmV0IChrZXlzIGkpIHJldCkpKSlcclxuICAgICAgICA6Y2xqcy5zcGVjLmFscGhhL2ludmFsaWQpKSkpKV1cclxuICAocmVpZnlcclxuICAgU3BlY2l6ZVxyXG4gICAoc3BlY2l6ZSogW3NdIHMpXHJcbiAgIChzcGVjaXplKiBbcyBfXSBzKVxyXG4gICBTcGVjXHJcbiAgIChjb25mb3JtKiBbXyB4XSAoY2Zvcm0geCkpXHJcbiAgICh1bmZvcm0qIFtfIFtrIHhdXSAodW5mb3JtIChrcHMgaykgeCkpXHJcbiAgIChleHBsYWluKlxyXG4gICAgW3RoaXMgcGF0aCB2aWEgaW4geF1cclxuICAgICh3aGVuLW5vdFxyXG4gICAgIChwdmFsaWQ/IHRoaXMgeClcclxuICAgICAoYXBwbHlcclxuICAgICAgY29uY2F0XHJcbiAgICAgIChtYXBcclxuICAgICAgIChmblxyXG4gICAgICAgIFtrIGZvcm0gcHJlZF1cclxuICAgICAgICAod2hlbi1ub3RcclxuICAgICAgICAgKHB2YWxpZD8gcHJlZCB4KVxyXG4gICAgICAgICAoZXhwbGFpbi0xIGZvcm0gcHJlZCAoY29uaiBwYXRoIGspIHZpYSBpbiB4KSkpXHJcbiAgICAgICBrZXlzXHJcbiAgICAgICBmb3Jtc1xyXG4gICAgICAgcHJlZHMpKSkpXHJcbiAgIChnZW4qXHJcbiAgICBbXyBvdmVycmlkZXMgcGF0aCBybWFwXVxyXG4gICAgKGlmXHJcbiAgICAgZ2ZuXHJcbiAgICAgKGdmbilcclxuICAgICAobGV0XHJcbiAgICAgIFtnZW5cclxuICAgICAgIChmblxyXG4gICAgICAgIFtrIHAgZl1cclxuICAgICAgICAobGV0XHJcbiAgICAgICAgIFtybWFwIChpbmNrIHJtYXAgaWQpXVxyXG4gICAgICAgICAod2hlbi1ub3RcclxuICAgICAgICAgIChyZWN1ci1saW1pdD8gcm1hcCBpZCBwYXRoIGspXHJcbiAgICAgICAgICAoZ2VuL2RlbGF5IChnZW5zdWIgcCBvdmVycmlkZXMgKGNvbmogcGF0aCBrKSBybWFwIGYpKSkpKVxyXG4gICAgICAgZ3NcclxuICAgICAgIChyZW1vdmUgbmlsPyAobWFwIGdlbiBrZXlzIHByZWRzIGZvcm1zKSldXHJcbiAgICAgICh3aGVuLW5vdCAoZW1wdHk/IGdzKSAoZ2VuL29uZS1vZiBncykpKSkpXHJcbiAgICh3aXRoLWdlbiogW18gZ2ZuXSAob3Itc3BlYy1pbXBsIGtleXMgZm9ybXMgcHJlZHMgZ2ZuKSlcclxuICAgKGRlc2NyaWJlKlxyXG4gICAgW19dXHJcbiAgICAoY2xvanVyZS5jb3JlL3NlcXVlbmNlXHJcbiAgICAgKGNsb2p1cmUuY29yZS9zZXFcclxuICAgICAgKGNsb2p1cmUuY29yZS9jb25jYXRcclxuICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCAnY2xqcy5zcGVjLmFscGhhL29yKVxyXG4gICAgICAgKG1hcGNhdCB2ZWN0b3Iga2V5cyBmb3JtcykpKSkpKSkpXHJcbiJ9IHs6c3ltICpmc3BlYy1pdGVyYXRpb25zKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcclxuICpmc3BlYy1pdGVyYXRpb25zKlxyXG4gXCJUaGUgbnVtYmVyIG9mIHRpbWVzIGFuIGFub255bW91cyBmbiBzcGVjaWZpZWQgYnkgZnNwZWMgd2lsbCBiZSAoZ2VuZXJhdGl2ZWx5KSB0ZXN0ZWQgZHVyaW5nIGNvbmZvcm1cIlxyXG4gMjEpXHJcbiJ9IHs6c3ltIFNwZWMsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzIChjb25mb3JtKiBkZXNjcmliZSogZXhwbGFpbiogZ2VuKiB1bmZvcm0qIHdpdGgtZ2VuKil9IHs6c3ltIHVuZm9ybSwgOm1ldGEgezpkb2MgIkdpdmVuIGEgc3BlYyBhbmQgYSB2YWx1ZSBjcmVhdGVkIGJ5IG9yIGNvbXBsaWFudCB3aXRoIGEgY2FsbCB0b1xuICAnY29uZm9ybScgd2l0aCB0aGUgc2FtZSBzcGVjLCByZXR1cm5zIGEgdmFsdWUgd2l0aCBhbGwgY29uZm9ybVxuICAgZGVzdHJ1Y3R1cmluZyB1bmRvbmUuIiwgOmFyZ2xpc3RzIChbc3BlYyB4XSl9LCA6c291cmNlICIoZGVmblxyXG4gdW5mb3JtXHJcbiBcIkdpdmVuIGEgc3BlYyBhbmQgYSB2YWx1ZSBjcmVhdGVkIGJ5IG9yIGNvbXBsaWFudCB3aXRoIGEgY2FsbCB0b1xcbiAgJ2NvbmZvcm0nIHdpdGggdGhlIHNhbWUgc3BlYywgcmV0dXJucyBhIHZhbHVlIHdpdGggYWxsIGNvbmZvcm1cXG4gICBkZXN0cnVjdHVyaW5nIHVuZG9uZS5cIlxyXG4gW3NwZWMgeF1cclxuICh1bmZvcm0qIChzcGVjaXplIHNwZWMpIHgpKVxyXG4ifSB7OnN5bSB2YWxpZD8sIDptZXRhIHs6ZG9jICJIZWxwZXIgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRydWUgd2hlbiB4IGlzIHZhbGlkIGZvciBzcGVjLiIsIDphcmdsaXN0cyBbW3NwZWMgeF0gW3NwZWMgeCBmb3JtXV19LCA6c291cmNlICIoZGVmblxyXG4gdmFsaWQ/XHJcbiBcIkhlbHBlciBmdW5jdGlvbiB0aGF0IHJldHVybnMgdHJ1ZSB3aGVuIHggaXMgdmFsaWQgZm9yIHNwZWMuXCJcclxuIChbc3BlYyB4XVxyXG4gIChsZXQgW3NwZWMgKHNwZWNpemUgc3BlYyldIChub3QgKGludmFsaWQ/IChjb25mb3JtKiBzcGVjIHgpKSkpKVxyXG4gKFtzcGVjIHggZm9ybV1cclxuICAobGV0IFtzcGVjIChzcGVjaXplIHNwZWMgZm9ybSldIChub3QgKGludmFsaWQ/IChjb25mb3JtKiBzcGVjIHgpKSkpKSlcclxuIn0gezpzeW0gZ2VuLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBzcGVjLCByZXR1cm5zIHRoZSBnZW5lcmF0b3IgZm9yIGl0LCBvciB0aHJvd3MgaWYgbm9uZSBjYW5cbiAgYmUgY29uc3RydWN0ZWQuIE9wdGlvbmFsbHkgYW4gb3ZlcnJpZGVzIG1hcCBjYW4gYmUgcHJvdmlkZWQgd2hpY2hcbiAgc2hvdWxkIG1hcCBzcGVjIG5hbWVzIG9yIHBhdGhzICh2ZWN0b3JzIG9mIGtleXdvcmRzKSB0byBuby1hcmdcbiAgZ2VuZXJhdG9yLWNyZWF0aW5nIGZucy4gVGhlc2Ugd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIGdlbmVyYXRvcnMgYXQgdGhvc2VcbiAgbmFtZXMvcGF0aHMuIE5vdGUgdGhhdCBwYXJlbnQgZ2VuZXJhdG9yIChpbiB0aGUgc3BlYyBvciBvdmVycmlkZXNcbiAgbWFwKSB3aWxsIHN1cGVyc2VkZSB0aG9zZSBvZiBhbnkgc3VidHJlZXMuIEEgZ2VuZXJhdG9yIGZvciBhIHJlZ2V4XG4gIG9wIG11c3QgYWx3YXlzIHJldHVybiBhIHNlcXVlbnRpYWwgY29sbGVjdGlvbiAoaS5lLiBhIGdlbmVyYXRvciBmb3JcbiAgcy8/IHNob3VsZCByZXR1cm4gZWl0aGVyIGFuIGVtcHR5IHNlcXVlbmNlL3ZlY3RvciBvciBhXG4gIHNlcXVlbmNlL3ZlY3RvciB3aXRoIG9uZSBpdGVtIGluIGl0KSIsIDphcmdsaXN0cyBbW3NwZWNdIFtzcGVjIG92ZXJyaWRlc11dfSwgOnNvdXJjZSAiKGRlZm5cclxuIGdlblxyXG4gXCJHaXZlbiBhIHNwZWMsIHJldHVybnMgdGhlIGdlbmVyYXRvciBmb3IgaXQsIG9yIHRocm93cyBpZiBub25lIGNhblxcbiAgYmUgY29uc3RydWN0ZWQuIE9wdGlvbmFsbHkgYW4gb3ZlcnJpZGVzIG1hcCBjYW4gYmUgcHJvdmlkZWQgd2hpY2hcXG4gIHNob3VsZCBtYXAgc3BlYyBuYW1lcyBvciBwYXRocyAodmVjdG9ycyBvZiBrZXl3b3JkcykgdG8gbm8tYXJnXFxuICBnZW5lcmF0b3ItY3JlYXRpbmcgZm5zLiBUaGVzZSB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiB0aGUgZ2VuZXJhdG9ycyBhdCB0aG9zZVxcbiAgbmFtZXMvcGF0aHMuIE5vdGUgdGhhdCBwYXJlbnQgZ2VuZXJhdG9yIChpbiB0aGUgc3BlYyBvciBvdmVycmlkZXNcXG4gIG1hcCkgd2lsbCBzdXBlcnNlZGUgdGhvc2Ugb2YgYW55IHN1YnRyZWVzLiBBIGdlbmVyYXRvciBmb3IgYSByZWdleFxcbiAgb3AgbXVzdCBhbHdheXMgcmV0dXJuIGEgc2VxdWVudGlhbCBjb2xsZWN0aW9uIChpLmUuIGEgZ2VuZXJhdG9yIGZvclxcbiAgcy8/IHNob3VsZCByZXR1cm4gZWl0aGVyIGFuIGVtcHR5IHNlcXVlbmNlL3ZlY3RvciBvciBhXFxuICBzZXF1ZW5jZS92ZWN0b3Igd2l0aCBvbmUgaXRlbSBpbiBpdClcIlxyXG4gKFtzcGVjXSAoZ2VuIHNwZWMgbmlsKSlcclxuIChbc3BlYyBvdmVycmlkZXNdXHJcbiAgKGdlbnN1YlxyXG4gICBzcGVjXHJcbiAgIG92ZXJyaWRlc1xyXG4gICBbXVxyXG4gICB7OmNsanMuc3BlYy5hbHBoYS9yZWN1cnNpb24tbGltaXQgKnJlY3Vyc2lvbi1saW1pdCp9XHJcbiAgIHNwZWMpKSlcclxuIn0gezpzeW0gbm9uY29uZm9ybWluZywgOm1ldGEgezpkb2MgInRha2VzIGEgc3BlYyBhbmQgcmV0dXJucyBhIHNwZWMgdGhhdCBoYXMgdGhlIHNhbWUgcHJvcGVydGllcyBleGNlcHRcbiAgJ2NvbmZvcm0nIHJldHVybnMgdGhlIG9yaWdpbmFsIChub3QgdGhlIGNvbmZvcm1lZCkgdmFsdWUuIE5vdGUsIHdpbGwgc3BlY2l6ZSByZWdleCBvcHMuIiwgOmFyZ2xpc3RzIChbc3BlY10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIG5vbmNvbmZvcm1pbmdcclxuIFwidGFrZXMgYSBzcGVjIGFuZCByZXR1cm5zIGEgc3BlYyB0aGF0IGhhcyB0aGUgc2FtZSBwcm9wZXJ0aWVzIGV4Y2VwdFxcbiAgJ2NvbmZvcm0nIHJldHVybnMgdGhlIG9yaWdpbmFsIChub3QgdGhlIGNvbmZvcm1lZCkgdmFsdWUuIE5vdGUsIHdpbGwgc3BlY2l6ZSByZWdleCBvcHMuXCJcclxuIFtzcGVjXVxyXG4gKGxldFxyXG4gIFtzcGVjIChkZWxheSAoc3BlY2l6ZSBzcGVjKSldXHJcbiAgKHJlaWZ5XHJcbiAgIFNwZWNpemVcclxuICAgKHNwZWNpemUqIFtzXSBzKVxyXG4gICAoc3BlY2l6ZSogW3MgX10gcylcclxuICAgU3BlY1xyXG4gICAoY29uZm9ybSpcclxuICAgIFtfIHhdXHJcbiAgICAobGV0XHJcbiAgICAgW3JldCAoY29uZm9ybSogQHNwZWMgeCldXHJcbiAgICAgKGlmIChpbnZhbGlkPyByZXQpIDpjbGpzLnNwZWMuYWxwaGEvaW52YWxpZCB4KSkpXHJcbiAgICh1bmZvcm0qIFtfIHhdICh1bmZvcm0qIEBzcGVjIHgpKVxyXG4gICAoZXhwbGFpbiogW18gcGF0aCB2aWEgaW4geF0gKGV4cGxhaW4qIEBzcGVjIHBhdGggdmlhIGluIHgpKVxyXG4gICAoZ2VuKiBbXyBvdmVycmlkZXMgcGF0aCBybWFwXSAoZ2VuKiBAc3BlYyBvdmVycmlkZXMgcGF0aCBybWFwKSlcclxuICAgKHdpdGgtZ2VuKiBbXyBnZm5dIChub25jb25mb3JtaW5nICh3aXRoLWdlbiogQHNwZWMgZ2ZuKSkpXHJcbiAgIChkZXNjcmliZSpcclxuICAgIFtfXVxyXG4gICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxyXG4gICAgIChjbG9qdXJlLmNvcmUvc2VxXHJcbiAgICAgIChjbG9qdXJlLmNvcmUvY29uY2F0XHJcbiAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgJ2NsanMuc3BlYy5hbHBoYS9ub25jb25mb3JtaW5nKVxyXG4gICAgICAgKGNsb2p1cmUuY29yZS9saXN0IChkZXNjcmliZSogQHNwZWMpKSkpKSkpKSlcclxuIn0gezpzeW0gdW5mb3JtKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzcGVjIHldKX0sIDpwcm90b2NvbCBTcGVjfSB7OnN5bSBhYmJyZXYsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGFiYnJldlxyXG4gW2Zvcm1dXHJcbiAoY29uZFxyXG4gIChzZXE/IGZvcm0pXHJcbiAgKHdhbGsvcG9zdHdhbGtcclxuICAgKGZuXHJcbiAgICBbZm9ybV1cclxuICAgIChjb25kXHJcbiAgICAgKGMvYW5kIChzeW1ib2w/IGZvcm0pIChuYW1lc3BhY2UgZm9ybSkpXHJcbiAgICAgKC0+IGZvcm0gbmFtZSBzeW1ib2wpXHJcbiAgICAgKGMvYW5kIChzZXE/IGZvcm0pICg9ICdmbiAoZmlyc3QgZm9ybSkpICg9ICdbJV0gKHNlY29uZCBmb3JtKSkpXHJcbiAgICAgKGxhc3QgZm9ybSlcclxuICAgICA6ZWxzZVxyXG4gICAgIGZvcm0pKVxyXG4gICBmb3JtKVxyXG4gIChjL2FuZCAoc3ltYm9sPyBmb3JtKSAobmFtZXNwYWNlIGZvcm0pKVxyXG4gICgtPiBmb3JtIG5hbWUgc3ltYm9sKVxyXG4gIDplbHNlXHJcbiAgZm9ybSkpXHJcbiJ9IHs6c3ltIHJlZ2V4PywgOm1ldGEgezpkb2MgInJldHVybnMgeCBpZiB4IGlzIGEgKGNsanMuc3BlYy5hbHBoYSkgcmVnZXggb3AsIGVsc2UgbG9naWNhbCBmYWxzZSIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiByZWdleD9cclxuIFwicmV0dXJucyB4IGlmIHggaXMgYSAoY2xqcy5zcGVjLmFscGhhKSByZWdleCBvcCwgZWxzZSBsb2dpY2FsIGZhbHNlXCJcclxuIFt4XVxyXG4gKGMvYW5kICg6Y2xqcy5zcGVjLmFscGhhL29wIHgpIHgpKVxyXG4ifSB7OnN5bSBpbnQtaW4tcmFuZ2U/LCA6bWV0YSB7OmRvYyAiUmV0dXJuIHRydWUgaWYgc3RhcnQgPD0gdmFsLCB2YWwgPCBlbmQgYW5kIHZhbCBpcyBhIGZpeGVkXG4gIHByZWNpc2lvbiBpbnRlZ2VyLiIsIDphcmdsaXN0cyAoW3N0YXJ0IGVuZCB2YWxdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBpbnQtaW4tcmFuZ2U/XHJcbiBcIlJldHVybiB0cnVlIGlmIHN0YXJ0IDw9IHZhbCwgdmFsIDwgZW5kIGFuZCB2YWwgaXMgYSBmaXhlZFxcbiAgcHJlY2lzaW9uIGludGVnZXIuXCJcclxuIFtzdGFydCBlbmQgdmFsXVxyXG4gKGNvbmRcclxuICAoaW50ZWdlcj8gdmFsKVxyXG4gIChjL2FuZCAoPD0gc3RhcnQgdmFsKSAoPCB2YWwgZW5kKSlcclxuICAoaW5zdGFuY2U/IGdvb2cubWF0aC5Mb25nIHZhbClcclxuICAoYy9hbmQgKC5sZXNzVGhhbk9yRXF1YWwgc3RhcnQgdmFsKSAoLmxlc3NUaGFuIHZhbCBlbmQpKVxyXG4gIChpbnN0YW5jZT8gZ29vZy5tYXRoLkludGVnZXIgdmFsKVxyXG4gIChjL2FuZCAoLmxlc3NUaGFuT3JFcXVhbCBzdGFydCB2YWwpICgubGVzc1RoYW4gdmFsIGVuZCkpXHJcbiAgOmVsc2VcclxuICBmYWxzZSkpXHJcbiJ9IHs6c3ltIHNwZWM/LCA6bWV0YSB7OmRvYyAicmV0dXJucyB4IGlmIHggaXMgYSBzcGVjIG9iamVjdCwgZWxzZSBsb2dpY2FsIGZhbHNlIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHNwZWM/XHJcbiBcInJldHVybnMgeCBpZiB4IGlzIGEgc3BlYyBvYmplY3QsIGVsc2UgbG9naWNhbCBmYWxzZVwiXHJcbiBbeF1cclxuICh3aGVuIChpbXBsZW1lbnRzPyBTcGVjIHgpIHgpKVxyXG4ifSB7OnN5bSByZWdpc3RyeSwgOm1ldGEgezpkb2MgInJldHVybnMgdGhlIHJlZ2lzdHJ5IG1hcCwgcHJlZmVyICdnZXQtc3BlYycgdG8gbG9va3VwIGEgc3BlYyBieSBuYW1lIiwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxyXG4gcmVnaXN0cnlcclxuIFwicmV0dXJucyB0aGUgcmVnaXN0cnkgbWFwLCBwcmVmZXIgJ2dldC1zcGVjJyB0byBsb29rdXAgYSBzcGVjIGJ5IG5hbWVcIlxyXG4gW11cclxuIEByZWdpc3RyeS1yZWYpXHJcbiJ9IHs6c3ltIHJlcCtpbXBsLCA6bWV0YSB7OmRvYyAiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICcrJyIsIDphcmdsaXN0cyAoW2Zvcm0gcF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlcCtpbXBsXHJcbiBcIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnKydcIlxyXG4gW2Zvcm0gcF1cclxuIChwY2F0KlxyXG4gIHs6cHMgW3AgKHJlcCogcCBwIFtdIHRydWUgZm9ybSldLFxyXG4gICA6Zm9ybXNcclxuICAgKGNsb2p1cmUuY29yZS92ZWNcclxuICAgIChjbG9qdXJlLmNvcmUvc2VxdWVuY2VcclxuICAgICAoY2xvanVyZS5jb3JlL3NlcVxyXG4gICAgICAoY2xvanVyZS5jb3JlL2NvbmNhdFxyXG4gICAgICAgKGNsb2p1cmUuY29yZS9saXN0IGZvcm0pXHJcbiAgICAgICAoY2xvanVyZS5jb3JlL2xpc3RcclxuICAgICAgICAoY2xvanVyZS5jb3JlL3NlcXVlbmNlXHJcbiAgICAgICAgIChjbG9qdXJlLmNvcmUvc2VxXHJcbiAgICAgICAgICAoY2xvanVyZS5jb3JlL2NvbmNhdFxyXG4gICAgICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCAnY2xqcy5zcGVjLmFscGhhLyopXHJcbiAgICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0IGZvcm0pKSkpKSkpKSksXHJcbiAgIDpyZXQgW10sXHJcbiAgIDpyZXArIGZvcm19KSlcclxuIn0gezpzeW0gZXhlcmNpc2UsIDptZXRhIHs6ZG9jICJnZW5lcmF0ZXMgYSBudW1iZXIgKGRlZmF1bHQgMTApIG9mIHZhbHVlcyBjb21wYXRpYmxlIHdpdGggc3BlYyBhbmQgbWFwcyBjb25mb3JtIG92ZXIgdGhlbSxcbiAgcmV0dXJuaW5nIGEgc2VxdWVuY2Ugb2YgW3ZhbCBjb25mb3JtZWQtdmFsXSB0dXBsZXMuIE9wdGlvbmFsbHkgdGFrZXNcbiAgYSBnZW5lcmF0b3Igb3ZlcnJpZGVzIG1hcCBhcyBwZXIgZ2VuIiwgOmFyZ2xpc3RzIFtbc3BlY10gW3NwZWMgbl0gW3NwZWMgbiBvdmVycmlkZXNdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBleGVyY2lzZVxyXG4gXCJnZW5lcmF0ZXMgYSBudW1iZXIgKGRlZmF1bHQgMTApIG9mIHZhbHVlcyBjb21wYXRpYmxlIHdpdGggc3BlYyBhbmQgbWFwcyBjb25mb3JtIG92ZXIgdGhlbSxcXG4gIHJldHVybmluZyBhIHNlcXVlbmNlIG9mIFt2YWwgY29uZm9ybWVkLXZhbF0gdHVwbGVzLiBPcHRpb25hbGx5IHRha2VzXFxuICBhIGdlbmVyYXRvciBvdmVycmlkZXMgbWFwIGFzIHBlciBnZW5cIlxyXG4gKFtzcGVjXSAoZXhlcmNpc2Ugc3BlYyAxMCkpXHJcbiAoW3NwZWMgbl0gKGV4ZXJjaXNlIHNwZWMgbiBuaWwpKVxyXG4gKFtzcGVjIG4gb3ZlcnJpZGVzXVxyXG4gIChtYXBcclxuICAgKGZuKiBbcDFfXzQxNTg5I10gKHZlY3RvciBwMV9fNDE1ODkjIChjb25mb3JtIHNwZWMgcDFfXzQxNTg5IykpKVxyXG4gICAoZ2VuL3NhbXBsZSAoZ2VuIHNwZWMgb3ZlcnJpZGVzKSBuKSkpKVxyXG4ifSB7OnN5bSBleHBsYWluLWRhdGEsIDptZXRhIHs6ZG9jICJHaXZlbiBhIHNwZWMgYW5kIGEgdmFsdWUgeCB3aGljaCBvdWdodCB0byBjb25mb3JtLCByZXR1cm5zIG5pbCBpZiB4XG4gIGNvbmZvcm1zLCBlbHNlIGEgbWFwIHdpdGggYXQgbGVhc3QgdGhlIGtleSA6OnByb2JsZW1zIHdob3NlIHZhbHVlIGlzXG4gIGEgY29sbGVjdGlvbiBvZiBwcm9ibGVtLW1hcHMsIHdoZXJlIHByb2JsZW0tbWFwIGhhcyBhdCBsZWFzdCA6cGF0aCA6cHJlZCBhbmQgOnZhbFxuICBrZXlzIGRlc2NyaWJpbmcgdGhlIHByZWRpY2F0ZSBhbmQgdGhlIHZhbHVlIHRoYXQgZmFpbGVkIGF0IHRoYXRcbiAgcGF0aC4iLCA6YXJnbGlzdHMgKFtzcGVjIHhdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBleHBsYWluLWRhdGFcclxuIFwiR2l2ZW4gYSBzcGVjIGFuZCBhIHZhbHVlIHggd2hpY2ggb3VnaHQgdG8gY29uZm9ybSwgcmV0dXJucyBuaWwgaWYgeFxcbiAgY29uZm9ybXMsIGVsc2UgYSBtYXAgd2l0aCBhdCBsZWFzdCB0aGUga2V5IDo6cHJvYmxlbXMgd2hvc2UgdmFsdWUgaXNcXG4gIGEgY29sbGVjdGlvbiBvZiBwcm9ibGVtLW1hcHMsIHdoZXJlIHByb2JsZW0tbWFwIGhhcyBhdCBsZWFzdCA6cGF0aCA6cHJlZCBhbmQgOnZhbFxcbiAga2V5cyBkZXNjcmliaW5nIHRoZSBwcmVkaWNhdGUgYW5kIHRoZSB2YWx1ZSB0aGF0IGZhaWxlZCBhdCB0aGF0XFxuICBwYXRoLlwiXHJcbiBbc3BlYyB4XVxyXG4gKGV4cGxhaW4tZGF0YSpcclxuICBzcGVjXHJcbiAgW11cclxuICAoaWYtbGV0IFtuYW1lIChzcGVjLW5hbWUgc3BlYyldIFtuYW1lXSBbXSlcclxuICBbXVxyXG4gIHgpKVxyXG4ifSB7OnN5bSB0dXBsZS1pbXBsLCA6bWV0YSB7OmRvYyAiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICd0dXBsZSciLCA6YXJnbGlzdHMgW1tmb3JtcyBwcmVkc10gW2Zvcm1zIHByZWRzIGdmbl1dfSwgOnNvdXJjZSAiKGRlZm5cclxuIHR1cGxlLWltcGxcclxuIFwiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICd0dXBsZSdcIlxyXG4gKFtmb3JtcyBwcmVkc10gKHR1cGxlLWltcGwgZm9ybXMgcHJlZHMgbmlsKSlcclxuIChbZm9ybXMgcHJlZHMgZ2ZuXVxyXG4gIChsZXRcclxuICAgW3NwZWNzIChkZWxheSAobWFwdiBzcGVjaXplIHByZWRzIGZvcm1zKSkgY250IChjb3VudCBwcmVkcyldXHJcbiAgIChyZWlmeVxyXG4gICAgU3BlY2l6ZVxyXG4gICAgKHNwZWNpemUqIFtzXSBzKVxyXG4gICAgKHNwZWNpemUqIFtzIF9dIHMpXHJcbiAgICBTcGVjXHJcbiAgICAoY29uZm9ybSpcclxuICAgICBbXyB4XVxyXG4gICAgIChsZXRcclxuICAgICAgW3NwZWNzIEBzcGVjc11cclxuICAgICAgKGlmLW5vdFxyXG4gICAgICAgKGMvYW5kICh2ZWN0b3I/IHgpICg9IChjb3VudCB4KSBjbnQpKVxyXG4gICAgICAgOmNsanMuc3BlYy5hbHBoYS9pbnZhbGlkXHJcbiAgICAgICAobG9vcFxyXG4gICAgICAgIFtyZXQgeCBpIDBdXHJcbiAgICAgICAgKGlmXHJcbiAgICAgICAgICg9IGkgY250KVxyXG4gICAgICAgICByZXRcclxuICAgICAgICAgKGxldFxyXG4gICAgICAgICAgW3YgKHggaSkgY3YgKGNvbmZvcm0qIChzcGVjcyBpKSB2KV1cclxuICAgICAgICAgIChpZlxyXG4gICAgICAgICAgIChpbnZhbGlkPyBjdilcclxuICAgICAgICAgICA6Y2xqcy5zcGVjLmFscGhhL2ludmFsaWRcclxuICAgICAgICAgICAocmVjdXJcclxuICAgICAgICAgICAgKGlmIChpZGVudGljYWw/IGN2IHYpIHJldCAoYXNzb2MgcmV0IGkgY3YpKVxyXG4gICAgICAgICAgICAoaW5jIGkpKSkpKSkpKSlcclxuICAgICh1bmZvcm0qXHJcbiAgICAgW18geF1cclxuICAgICAoYXNzZXJ0IChjL2FuZCAodmVjdG9yPyB4KSAoPSAoY291bnQgeCkgKGNvdW50IHByZWRzKSkpKVxyXG4gICAgIChsb29wXHJcbiAgICAgIFtyZXQgeCBpIDBdXHJcbiAgICAgIChpZlxyXG4gICAgICAgKD0gaSAoY291bnQgeCkpXHJcbiAgICAgICByZXRcclxuICAgICAgIChsZXRcclxuICAgICAgICBbY3YgKHggaSkgdiAodW5mb3JtIChwcmVkcyBpKSBjdildXHJcbiAgICAgICAgKHJlY3VyIChpZiAoaWRlbnRpY2FsPyBjdiB2KSByZXQgKGFzc29jIHJldCBpIHYpKSAoaW5jIGkpKSkpKSlcclxuICAgIChleHBsYWluKlxyXG4gICAgIFtfIHBhdGggdmlhIGluIHhdXHJcbiAgICAgKGNvbmRcclxuICAgICAgKG5vdCAodmVjdG9yPyB4KSlcclxuICAgICAgW3s6cGF0aCBwYXRoLFxyXG4gICAgICAgIDpwcmVkICdjbG9qdXJlLmNvcmUvdmVjdG9yPyxcclxuICAgICAgICA6dmFsIHgsXHJcbiAgICAgICAgOnZpYSB2aWEsXHJcbiAgICAgICAgOmluIGlufV1cclxuICAgICAgKG5vdD0gKGNvdW50IHgpIChjb3VudCBwcmVkcykpXHJcbiAgICAgIFt7OnBhdGggcGF0aCxcclxuICAgICAgICA6cHJlZFxyXG4gICAgICAgIChjbG9qdXJlLmNvcmUvc2VxdWVuY2VcclxuICAgICAgICAgKGNsb2p1cmUuY29yZS9zZXFcclxuICAgICAgICAgIChjbG9qdXJlLmNvcmUvY29uY2F0XHJcbiAgICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0ICdjbG9qdXJlLmNvcmUvPSlcclxuICAgICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3RcclxuICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxyXG4gICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9zZXFcclxuICAgICAgICAgICAgICAoY2xvanVyZS5jb3JlL2NvbmNhdFxyXG4gICAgICAgICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgJ2Nsb2p1cmUuY29yZS9jb3VudClcclxuICAgICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0ICclKSkpKSlcclxuICAgICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgKGNvdW50IHByZWRzKSkpKSksXHJcbiAgICAgICAgOnZhbCB4LFxyXG4gICAgICAgIDp2aWEgdmlhLFxyXG4gICAgICAgIDppbiBpbn1dXHJcbiAgICAgIDplbHNlXHJcbiAgICAgIChhcHBseVxyXG4gICAgICAgY29uY2F0XHJcbiAgICAgICAobWFwXHJcbiAgICAgICAgKGZuXHJcbiAgICAgICAgIFtpIGZvcm0gcHJlZF1cclxuICAgICAgICAgKGxldFxyXG4gICAgICAgICAgW3YgKHggaSldXHJcbiAgICAgICAgICAod2hlbi1ub3RcclxuICAgICAgICAgICAocHZhbGlkPyBwcmVkIHYpXHJcbiAgICAgICAgICAgKGV4cGxhaW4tMSBmb3JtIHByZWQgKGNvbmogcGF0aCBpKSB2aWEgKGNvbmogaW4gaSkgdikpKSlcclxuICAgICAgICAocmFuZ2UgKGNvdW50IHByZWRzKSlcclxuICAgICAgICBmb3Jtc1xyXG4gICAgICAgIHByZWRzKSkpKVxyXG4gICAgKGdlbipcclxuICAgICBbXyBvdmVycmlkZXMgcGF0aCBybWFwXVxyXG4gICAgIChpZlxyXG4gICAgICBnZm5cclxuICAgICAgKGdmbilcclxuICAgICAgKGxldFxyXG4gICAgICAgW2dlblxyXG4gICAgICAgIChmbiBbaSBwIGZdIChnZW5zdWIgcCBvdmVycmlkZXMgKGNvbmogcGF0aCBpKSBybWFwIGYpKVxyXG4gICAgICAgIGdzXHJcbiAgICAgICAgKG1hcCBnZW4gKHJhbmdlIChjb3VudCBwcmVkcykpIHByZWRzIGZvcm1zKV1cclxuICAgICAgICh3aGVuIChldmVyeT8gaWRlbnRpdHkgZ3MpIChhcHBseSBnZW4vdHVwbGUgZ3MpKSkpKVxyXG4gICAgKHdpdGgtZ2VuKiBbXyBnZm5dICh0dXBsZS1pbXBsIGZvcm1zIHByZWRzIGdmbikpXHJcbiAgICAoZGVzY3JpYmUqXHJcbiAgICAgW19dXHJcbiAgICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxyXG4gICAgICAoY2xvanVyZS5jb3JlL3NlcVxyXG4gICAgICAgKGNsb2p1cmUuY29yZS9jb25jYXRcclxuICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgJ2NsanMuc3BlYy5hbHBoYS90dXBsZSlcclxuICAgICAgICBmb3JtcykpKSkpKSkpXHJcbiJ9IHs6c3ltIG11bHRpLXNwZWMtaW1wbCwgOm1ldGEgezpkb2MgIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnbXVsdGktc3BlYyciLCA6YXJnbGlzdHMgW1tmb3JtIG1tdmFyIHJldGFnXSBbZm9ybSBtbXZhciByZXRhZyBnZm5dXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBtdWx0aS1zcGVjLWltcGxcclxuIFwiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdtdWx0aS1zcGVjJ1wiXHJcbiAoW2Zvcm0gbW12YXIgcmV0YWddIChtdWx0aS1zcGVjLWltcGwgZm9ybSBtbXZhciByZXRhZyBuaWwpKVxyXG4gKFtmb3JtIG1tdmFyIHJldGFnIGdmbl1cclxuICAobGV0XHJcbiAgIFtpZFxyXG4gICAgKHJhbmRvbS11dWlkKVxyXG4gICAgcHJlZHhcclxuICAgIChmbipcclxuICAgICBbcDFfXzQxNTU5I11cclxuICAgICAobGV0XHJcbiAgICAgIFttbSBAbW12YXJdXHJcbiAgICAgIChjL2FuZFxyXG4gICAgICAgKC1nZXQtbWV0aG9kIG1tICgoLWRpc3BhdGNoLWZuIG1tKSBwMV9fNDE1NTkjKSlcclxuICAgICAgIChtbSBwMV9fNDE1NTkjKSkpKVxyXG4gICAgZHZhbFxyXG4gICAgKGZuKiBbcDFfXzQxNTYwI10gKCgtZGlzcGF0Y2gtZm4gQG1tdmFyKSBwMV9fNDE1NjAjKSlcclxuICAgIHRhZ1xyXG4gICAgKGlmXHJcbiAgICAgKGtleXdvcmQ/IHJldGFnKVxyXG4gICAgIChmbiogW3AxX180MTU2MSMgcDJfXzQxNTYyI10gKGFzc29jIHAxX180MTU2MSMgcmV0YWcgcDJfXzQxNTYyIykpXHJcbiAgICAgcmV0YWcpXVxyXG4gICAocmVpZnlcclxuICAgIFNwZWNpemVcclxuICAgIChzcGVjaXplKiBbc10gcylcclxuICAgIChzcGVjaXplKiBbcyBfXSBzKVxyXG4gICAgU3BlY1xyXG4gICAgKGNvbmZvcm0qXHJcbiAgICAgW18geF1cclxuICAgICAoaWYtbGV0XHJcbiAgICAgIFtwcmVkIChwcmVkeCB4KV1cclxuICAgICAgKGR0IHByZWQgeCBmb3JtKVxyXG4gICAgICA6Y2xqcy5zcGVjLmFscGhhL2ludmFsaWQpKVxyXG4gICAgKHVuZm9ybSpcclxuICAgICBbXyB4XVxyXG4gICAgIChpZi1sZXRcclxuICAgICAgW3ByZWQgKHByZWR4IHgpXVxyXG4gICAgICAodW5mb3JtIHByZWQgeClcclxuICAgICAgKHRocm93XHJcbiAgICAgICAoanMvRXJyb3IuXHJcbiAgICAgICAgKHN0clxyXG4gICAgICAgICBcIk5vIG1ldGhvZCBvZjogXCJcclxuICAgICAgICAgZm9ybVxyXG4gICAgICAgICBcIiBmb3IgZGlzcGF0Y2ggdmFsdWU6IFwiXHJcbiAgICAgICAgIChkdmFsIHgpKSkpKSlcclxuICAgIChleHBsYWluKlxyXG4gICAgIFtfIHBhdGggdmlhIGluIHhdXHJcbiAgICAgKGxldFxyXG4gICAgICBbZHYgKGR2YWwgeCkgcGF0aCAoY29uaiBwYXRoIGR2KV1cclxuICAgICAgKGlmLWxldFxyXG4gICAgICAgW3ByZWQgKHByZWR4IHgpXVxyXG4gICAgICAgKGV4cGxhaW4tMSBmb3JtIHByZWQgcGF0aCB2aWEgaW4geClcclxuICAgICAgIFt7OnBhdGggcGF0aCxcclxuICAgICAgICAgOnByZWQgZm9ybSxcclxuICAgICAgICAgOnZhbCB4LFxyXG4gICAgICAgICA6cmVhc29uIFwibm8gbWV0aG9kXCIsXHJcbiAgICAgICAgIDp2aWEgdmlhLFxyXG4gICAgICAgICA6aW4gaW59XSkpKVxyXG4gICAgKGdlbipcclxuICAgICBbXyBvdmVycmlkZXMgcGF0aCBybWFwXVxyXG4gICAgIChpZlxyXG4gICAgICBnZm5cclxuICAgICAgKGdmbilcclxuICAgICAgKGxldFxyXG4gICAgICAgW2dlblxyXG4gICAgICAgIChmblxyXG4gICAgICAgICBbW2sgZl1dXHJcbiAgICAgICAgIChsZXRcclxuICAgICAgICAgIFtwIChmIG5pbCldXHJcbiAgICAgICAgICAobGV0XHJcbiAgICAgICAgICAgW3JtYXAgKGluY2sgcm1hcCBpZCldXHJcbiAgICAgICAgICAgKHdoZW4tbm90XHJcbiAgICAgICAgICAgIChyZWN1ci1saW1pdD8gcm1hcCBpZCBwYXRoIGspXHJcbiAgICAgICAgICAgIChnZW4vZGVsYXlcclxuICAgICAgICAgICAgIChnZW4vZm1hcFxyXG4gICAgICAgICAgICAgIChmbiogW3AxX180MTU2MyNdICh0YWcgcDFfXzQxNTYzIyBrKSlcclxuICAgICAgICAgICAgICAoZ2Vuc3ViXHJcbiAgICAgICAgICAgICAgIHBcclxuICAgICAgICAgICAgICAgb3ZlcnJpZGVzXHJcbiAgICAgICAgICAgICAgIChjb25qIHBhdGggaylcclxuICAgICAgICAgICAgICAgcm1hcFxyXG4gICAgICAgICAgICAgICAobGlzdCAnbWV0aG9kIGZvcm0gaykpKSkpKSkpXHJcbiAgICAgICAgZ3NcclxuICAgICAgICAoLT4+XHJcbiAgICAgICAgIChtZXRob2RzIEBtbXZhcilcclxuICAgICAgICAgKHJlbW92ZSAoZm4gW1trXV0gKGludmFsaWQ/IGspKSlcclxuICAgICAgICAgKG1hcCBnZW4pXHJcbiAgICAgICAgIChyZW1vdmUgbmlsPykpXVxyXG4gICAgICAgKHdoZW4gKGV2ZXJ5PyBpZGVudGl0eSBncykgKGdlbi9vbmUtb2YgZ3MpKSkpKVxyXG4gICAgKHdpdGgtZ2VuKiBbXyBnZm5dIChtdWx0aS1zcGVjLWltcGwgZm9ybSBtbXZhciByZXRhZyBnZm4pKVxyXG4gICAgKGRlc2NyaWJlKlxyXG4gICAgIFtfXVxyXG4gICAgIChjbG9qdXJlLmNvcmUvc2VxdWVuY2VcclxuICAgICAgKGNsb2p1cmUuY29yZS9zZXFcclxuICAgICAgIChjbG9qdXJlLmNvcmUvY29uY2F0XHJcbiAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0ICdjbGpzLnNwZWMuYWxwaGEvbXVsdGktc3BlYylcclxuICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgZm9ybSlcclxuICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgcmV0YWcpKSkpKSkpKSlcclxuIn0gezpzeW0gY29uZm9ybSwgOm1ldGEgezpkb2MgIkdpdmVuIGEgc3BlYyBhbmQgYSB2YWx1ZSwgcmV0dXJucyA6Y2xqcy5zcGVjLmFscGhhL2ludmFsaWQgaWYgdmFsdWUgZG9lc1xuICBub3QgbWF0Y2ggc3BlYywgZWxzZSB0aGUgKHBvc3NpYmx5IGRlc3RydWN0dXJlZCkgdmFsdWUuIiwgOmFyZ2xpc3RzIChbc3BlYyB4XSl9LCA6c291cmNlICIoZGVmblxyXG4gY29uZm9ybVxyXG4gXCJHaXZlbiBhIHNwZWMgYW5kIGEgdmFsdWUsIHJldHVybnMgOmNsanMuc3BlYy5hbHBoYS9pbnZhbGlkIGlmIHZhbHVlIGRvZXNcXG4gIG5vdCBtYXRjaCBzcGVjLCBlbHNlIHRoZSAocG9zc2libHkgZGVzdHJ1Y3R1cmVkKSB2YWx1ZS5cIlxyXG4gW3NwZWMgeF1cclxuIChjb25mb3JtKiAoc3BlY2l6ZSBzcGVjKSB4KSlcclxuIn0gezpzeW0gZ2VuKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzcGVjIG92ZXJyaWRlcyBwYXRoIHJtYXBdKX0sIDpwcm90b2NvbCBTcGVjfSB7OnN5bSBmc3BlYy1pbXBsLCA6bWV0YSB7OmRvYyAiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdmc3BlYyciLCA6YXJnbGlzdHMgKFthcmdzcGVjIGFmb3JtIHJldHNwZWMgcmZvcm0gZm5zcGVjIGZmb3JtIGdmbl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGZzcGVjLWltcGxcclxuIFwiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdmc3BlYydcIlxyXG4gW2FyZ3NwZWMgYWZvcm0gcmV0c3BlYyByZm9ybSBmbnNwZWMgZmZvcm0gZ2ZuXVxyXG4gKGxldFxyXG4gIFtzcGVjcyB7OmFyZ3MgYXJnc3BlYywgOnJldCByZXRzcGVjLCA6Zm4gZm5zcGVjfV1cclxuICAocmVpZnlcclxuICAgSUxvb2t1cFxyXG4gICAoLWxvb2t1cCBbdGhpcyBrXSAoZ2V0IHNwZWNzIGspKVxyXG4gICAoLWxvb2t1cCBbXyBrIG5vdC1mb3VuZF0gKGdldCBzcGVjcyBrIG5vdC1mb3VuZCkpXHJcbiAgIFNwZWNpemVcclxuICAgKHNwZWNpemUqIFtzXSBzKVxyXG4gICAoc3BlY2l6ZSogW3MgX10gcylcclxuICAgU3BlY1xyXG4gICAoY29uZm9ybSpcclxuICAgIFtfIGZdXHJcbiAgICAoaWZcclxuICAgICAoaWZuPyBmKVxyXG4gICAgIChpZlxyXG4gICAgICAoaWRlbnRpY2FsPyBmICh2YWxpZGF0ZS1mbiBmIHNwZWNzICpmc3BlYy1pdGVyYXRpb25zKikpXHJcbiAgICAgIGZcclxuICAgICAgOmNsanMuc3BlYy5hbHBoYS9pbnZhbGlkKVxyXG4gICAgIDpjbGpzLnNwZWMuYWxwaGEvaW52YWxpZCkpXHJcbiAgICh1bmZvcm0qIFtfIGZdIGYpXHJcbiAgIChleHBsYWluKlxyXG4gICAgW18gcGF0aCB2aWEgaW4gZl1cclxuICAgIChpZlxyXG4gICAgIChpZm4/IGYpXHJcbiAgICAgKGxldFxyXG4gICAgICBbYXJncyAodmFsaWRhdGUtZm4gZiBzcGVjcyAxMDApXVxyXG4gICAgICAoaWZcclxuICAgICAgIChpZGVudGljYWw/IGYgYXJncylcclxuICAgICAgIG5pbFxyXG4gICAgICAgKGxldFxyXG4gICAgICAgIFtyZXQgKHRyeSAoYXBwbHkgZiBhcmdzKSAoY2F0Y2gganMvRXJyb3IgdCB0KSldXHJcbiAgICAgICAgKGlmXHJcbiAgICAgICAgIChpbnN0YW5jZT8ganMvRXJyb3IgcmV0KVxyXG4gICAgICAgICBbezpwYXRoIHBhdGgsXHJcbiAgICAgICAgICAgOnByZWQgJyhhcHBseSBmbiksXHJcbiAgICAgICAgICAgOnZhbCBhcmdzLFxyXG4gICAgICAgICAgIDpyZWFzb24gKC4tbWVzc2FnZSByZXQpLFxyXG4gICAgICAgICAgIDp2aWEgdmlhLFxyXG4gICAgICAgICAgIDppbiBpbn1dXHJcbiAgICAgICAgIChsZXRcclxuICAgICAgICAgIFtjcmV0IChkdCByZXRzcGVjIHJldCByZm9ybSldXHJcbiAgICAgICAgICAoaWZcclxuICAgICAgICAgICAoaW52YWxpZD8gY3JldClcclxuICAgICAgICAgICAoZXhwbGFpbi0xIHJmb3JtIHJldHNwZWMgKGNvbmogcGF0aCA6cmV0KSB2aWEgaW4gcmV0KVxyXG4gICAgICAgICAgICh3aGVuXHJcbiAgICAgICAgICAgIGZuc3BlY1xyXG4gICAgICAgICAgICAobGV0XHJcbiAgICAgICAgICAgICBbY2FyZ3MgKGNvbmZvcm0gYXJnc3BlYyBhcmdzKV1cclxuICAgICAgICAgICAgIChleHBsYWluLTFcclxuICAgICAgICAgICAgICBmZm9ybVxyXG4gICAgICAgICAgICAgIGZuc3BlY1xyXG4gICAgICAgICAgICAgIChjb25qIHBhdGggOmZuKVxyXG4gICAgICAgICAgICAgIHZpYVxyXG4gICAgICAgICAgICAgIGluXHJcbiAgICAgICAgICAgICAgezphcmdzIGNhcmdzLCA6cmV0IGNyZXR9KSkpKSkpKSkpXHJcbiAgICAgW3s6cGF0aCBwYXRoLCA6cHJlZCAnaWZuPywgOnZhbCBmLCA6dmlhIHZpYSwgOmluIGlufV0pKVxyXG4gICAoZ2VuKlxyXG4gICAgW18gb3ZlcnJpZGVzIF8gX11cclxuICAgIChpZlxyXG4gICAgIGdmblxyXG4gICAgIChnZm4pXHJcbiAgICAgKGdlbi9yZXR1cm5cclxuICAgICAgKGZuXHJcbiAgICAgICBbJiBhcmdzXVxyXG4gICAgICAgKGFzc2VydFxyXG4gICAgICAgIChwdmFsaWQ/IGFyZ3NwZWMgYXJncylcclxuICAgICAgICAod2l0aC1vdXQtc3RyIChleHBsYWluIGFyZ3NwZWMgYXJncykpKVxyXG4gICAgICAgKGdlbi9nZW5lcmF0ZSAoZ2VuIHJldHNwZWMgb3ZlcnJpZGVzKSkpKSkpXHJcbiAgICh3aXRoLWdlbipcclxuICAgIFtfIGdmbl1cclxuICAgIChmc3BlYy1pbXBsIGFyZ3NwZWMgYWZvcm0gcmV0c3BlYyByZm9ybSBmbnNwZWMgZmZvcm0gZ2ZuKSlcclxuICAgKGRlc2NyaWJlKlxyXG4gICAgW19dXHJcbiAgICAoY2xvanVyZS5jb3JlL3NlcXVlbmNlXHJcbiAgICAgKGNsb2p1cmUuY29yZS9zZXFcclxuICAgICAgKGNsb2p1cmUuY29yZS9jb25jYXRcclxuICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCAnY2xqcy5zcGVjLmFscGhhL2ZzcGVjKVxyXG4gICAgICAgKGNsb2p1cmUuY29yZS9saXN0IDphcmdzKVxyXG4gICAgICAgKGNsb2p1cmUuY29yZS9saXN0IGFmb3JtKVxyXG4gICAgICAgKGNsb2p1cmUuY29yZS9saXN0IDpyZXQpXHJcbiAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgcmZvcm0pXHJcbiAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgOmZuKVxyXG4gICAgICAgKGNsb2p1cmUuY29yZS9saXN0IGZmb3JtKSkpKSkpKSlcclxuIn0gezpzeW0gKmNvbGwtY2hlY2stbGltaXQqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxyXG4gKmNvbGwtY2hlY2stbGltaXQqXHJcbiBcIlRoZSBudW1iZXIgb2YgaXRlbXMgdmFsaWRhdGVkIGluIGEgY29sbGVjdGlvbiBzcGVjJ2VkIHdpdGggJ2V2ZXJ5J1wiXHJcbiAxMDEpXHJcbiJ9IHs6c3ltIGdldC1zcGVjLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBzcGVjIHJlZ2lzdGVyZWQgZm9yIGtleXdvcmQvc3ltYm9sL3ZhciBrLCBvciBuaWwuIiwgOmFyZ2xpc3RzIChba10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGdldC1zcGVjXHJcbiBcIlJldHVybnMgc3BlYyByZWdpc3RlcmVkIGZvciBrZXl3b3JkL3N5bWJvbC92YXIgaywgb3IgbmlsLlwiXHJcbiBba11cclxuIChnZXQgKHJlZ2lzdHJ5KSAoaWYgKGtleXdvcmQ/IGspIGsgKC0+c3ltIGspKSkpXHJcbiJ9IHs6c3ltIGV2ZXJ5LWltcGwsIDptZXRhIHs6ZG9jICJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJ2V2ZXJ5JywgJ2V2ZXJ5LWt2JywgJ2NvbGwtb2YnIG9yICdtYXAtb2YnIiwgOmFyZ2xpc3RzIFtbZm9ybSBwcmVkIG9wdHNdIFtmb3JtIHByZWQge2NvbmZvcm0taW50byA6aW50bywgZGVzY3JpYmUtZm9ybSA6Y2xqcy5zcGVjLmFscGhhL2Rlc2NyaWJlLCA6a2V5cyBba2luZCA6Y2xqcy5zcGVjLmFscGhhL2tpbmQtZm9ybSBjb3VudCBtYXgtY291bnQgbWluLWNvdW50IGRpc3RpbmN0IGdlbi1tYXggOmNsanMuc3BlYy5hbHBoYS9rZm4gOmNsanMuc3BlYy5hbHBoYS9jcHJlZCBjb25mb3JtLWtleXMgOmNsanMuc3BlYy5hbHBoYS9jb25mb3JtLWFsbF0sIDpvciB7Z2VuLW1heCAyMH0sIDphcyBvcHRzfSBnZm5dXX0sIDpzb3VyY2UgIihkZWZuXHJcbiBldmVyeS1pbXBsXHJcbiBcIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnZXZlcnknLCAnZXZlcnkta3YnLCAnY29sbC1vZicgb3IgJ21hcC1vZidcIlxyXG4gKFtmb3JtIHByZWQgb3B0c10gKGV2ZXJ5LWltcGwgZm9ybSBwcmVkIG9wdHMgbmlsKSlcclxuIChbZm9ybVxyXG4gICBwcmVkXHJcbiAgIHtjb25mb3JtLWludG8gOmludG8sXHJcbiAgICBkZXNjcmliZS1mb3JtIDpjbGpzLnNwZWMuYWxwaGEvZGVzY3JpYmUsXHJcbiAgICA6a2V5c1xyXG4gICAgW2tpbmRcclxuICAgICA6Y2xqcy5zcGVjLmFscGhhL2tpbmQtZm9ybVxyXG4gICAgIGNvdW50XHJcbiAgICAgbWF4LWNvdW50XHJcbiAgICAgbWluLWNvdW50XHJcbiAgICAgZGlzdGluY3RcclxuICAgICBnZW4tbWF4XHJcbiAgICAgOmNsanMuc3BlYy5hbHBoYS9rZm5cclxuICAgICA6Y2xqcy5zcGVjLmFscGhhL2NwcmVkXHJcbiAgICAgY29uZm9ybS1rZXlzXHJcbiAgICAgOmNsanMuc3BlYy5hbHBoYS9jb25mb3JtLWFsbF0sXHJcbiAgICA6b3Ige2dlbi1tYXggMjB9LFxyXG4gICAgOmFzIG9wdHN9XHJcbiAgIGdmbl1cclxuICAobGV0XHJcbiAgIFtnZW4taW50b1xyXG4gICAgKGlmIGNvbmZvcm0taW50byAoZW1wdHkgY29uZm9ybS1pbnRvKSAoZ2V0IGVtcHR5LWNvbGwga2luZC1mb3JtKSlcclxuICAgIHNwZWNcclxuICAgIChkZWxheSAoc3BlY2l6ZSBwcmVkKSlcclxuICAgIGNoZWNrP1xyXG4gICAgKGZuKiBbcDFfXzQxNTc0I10gKHZhbGlkPyBAc3BlYyBwMV9fNDE1NzQjKSlcclxuICAgIGtmblxyXG4gICAgKGMvb3Iga2ZuIChmbiBbaSB2XSBpKSlcclxuICAgIGFkZGN2XHJcbiAgICAoZm4gW3JldCBpIHYgY3ZdIChjb25qIHJldCBjdikpXHJcbiAgICBjZm5zXHJcbiAgICAoZm5cclxuICAgICBbeF1cclxuICAgICAoY29uZFxyXG4gICAgICAoYy9hbmRcclxuICAgICAgICh2ZWN0b3I/IHgpXHJcbiAgICAgICAoYy9vciAobm90IGNvbmZvcm0taW50bykgKHZlY3Rvcj8gY29uZm9ybS1pbnRvKSkpXHJcbiAgICAgIFtpZGVudGl0eVxyXG4gICAgICAgKGZuIFtyZXQgaSB2IGN2XSAoaWYgKGlkZW50aWNhbD8gdiBjdikgcmV0IChhc3NvYyByZXQgaSBjdikpKVxyXG4gICAgICAgaWRlbnRpdHldXHJcbiAgICAgIChjL2FuZFxyXG4gICAgICAgKG1hcD8geClcclxuICAgICAgIChjL29yIChjL2FuZCBraW5kIChub3QgY29uZm9ybS1pbnRvKSkgKG1hcD8gY29uZm9ybS1pbnRvKSkpXHJcbiAgICAgIFsoaWYgY29uZm9ybS1rZXlzIGVtcHR5IGlkZW50aXR5KVxyXG4gICAgICAgKGZuXHJcbiAgICAgICAgW3JldCBpIHYgY3ZdXHJcbiAgICAgICAgKGlmXHJcbiAgICAgICAgIChjL2FuZCAoaWRlbnRpY2FsPyB2IGN2KSAobm90IGNvbmZvcm0ta2V5cykpXHJcbiAgICAgICAgIHJldFxyXG4gICAgICAgICAoYXNzb2MgcmV0IChudGggKGlmIGNvbmZvcm0ta2V5cyBjdiB2KSAwKSAobnRoIGN2IDEpKSkpXHJcbiAgICAgICBpZGVudGl0eV1cclxuICAgICAgKGMvb3JcclxuICAgICAgIChsaXN0PyBjb25mb3JtLWludG8pXHJcbiAgICAgICAoc2VxPyBjb25mb3JtLWludG8pXHJcbiAgICAgICAoYy9hbmQgKG5vdCBjb25mb3JtLWludG8pIChjL29yIChsaXN0PyB4KSAoc2VxPyB4KSkpKVxyXG4gICAgICBbZW1wdHkgYWRkY3YgcmV2ZXJzZV1cclxuICAgICAgOmVsc2VcclxuICAgICAgWyhmbiogW3AxX180MTU3NSNdIChlbXB0eSAoYy9vciBjb25mb3JtLWludG8gcDFfXzQxNTc1IykpKVxyXG4gICAgICAgYWRkY3ZcclxuICAgICAgIGlkZW50aXR5XSkpXVxyXG4gICAocmVpZnlcclxuICAgIFNwZWNpemVcclxuICAgIChzcGVjaXplKiBbc10gcylcclxuICAgIChzcGVjaXplKiBbcyBfXSBzKVxyXG4gICAgU3BlY1xyXG4gICAgKGNvbmZvcm0qXHJcbiAgICAgW18geF1cclxuICAgICAobGV0XHJcbiAgICAgIFtzcGVjIEBzcGVjXVxyXG4gICAgICAoY29uZFxyXG4gICAgICAgKG5vdCAoY3ByZWQgeCkpXHJcbiAgICAgICA6Y2xqcy5zcGVjLmFscGhhL2ludmFsaWRcclxuICAgICAgIGNvbmZvcm0tYWxsXHJcbiAgICAgICAobGV0XHJcbiAgICAgICAgW1tpbml0IGFkZCBjb21wbGV0ZV0gKGNmbnMgeCldXHJcbiAgICAgICAgKGxvb3BcclxuICAgICAgICAgW3JldCAoaW5pdCB4KSBpIDAgW3YgJiB2cyA6YXMgdnNlcV0gKHNlcSB4KV1cclxuICAgICAgICAgKGlmXHJcbiAgICAgICAgICB2c2VxXHJcbiAgICAgICAgICAobGV0XHJcbiAgICAgICAgICAgW2N2IChjb25mb3JtKiBzcGVjIHYpXVxyXG4gICAgICAgICAgIChpZlxyXG4gICAgICAgICAgICAoaW52YWxpZD8gY3YpXHJcbiAgICAgICAgICAgIDpjbGpzLnNwZWMuYWxwaGEvaW52YWxpZFxyXG4gICAgICAgICAgICAocmVjdXIgKGFkZCByZXQgaSB2IGN2KSAoaW5jIGkpIHZzKSkpXHJcbiAgICAgICAgICAoY29tcGxldGUgcmV0KSkpKVxyXG4gICAgICAgOmVsc2VcclxuICAgICAgIChpZlxyXG4gICAgICAgIChpbmRleGVkPyB4KVxyXG4gICAgICAgIChsZXRcclxuICAgICAgICAgW3N0ZXAgKG1heCAxIChsb25nICgvIChjL2NvdW50IHgpICpjb2xsLWNoZWNrLWxpbWl0KikpKV1cclxuICAgICAgICAgKGxvb3BcclxuICAgICAgICAgIFtpIDBdXHJcbiAgICAgICAgICAoaWZcclxuICAgICAgICAgICAoPj0gaSAoYy9jb3VudCB4KSlcclxuICAgICAgICAgICB4XHJcbiAgICAgICAgICAgKGlmXHJcbiAgICAgICAgICAgICh2YWxpZD8gc3BlYyAobnRoIHggaSkpXHJcbiAgICAgICAgICAgIChyZWN1ciAoYy8rIGkgc3RlcCkpXHJcbiAgICAgICAgICAgIDpjbGpzLnNwZWMuYWxwaGEvaW52YWxpZCkpKSlcclxuICAgICAgICAobGV0XHJcbiAgICAgICAgIFtsaW1pdCAqY29sbC1jaGVjay1saW1pdCpdXHJcbiAgICAgICAgIChsb29wXHJcbiAgICAgICAgICBbaSAwIFt2ICYgdnMgOmFzIHZzZXFdIChzZXEgeCldXHJcbiAgICAgICAgICAoY29uZFxyXG4gICAgICAgICAgIChjL29yIChuaWw/IHZzZXEpICg9IGkgbGltaXQpKVxyXG4gICAgICAgICAgIHhcclxuICAgICAgICAgICAodmFsaWQ/IHNwZWMgdilcclxuICAgICAgICAgICAocmVjdXIgKGluYyBpKSB2cylcclxuICAgICAgICAgICA6ZWxzZVxyXG4gICAgICAgICAgIDpjbGpzLnNwZWMuYWxwaGEvaW52YWxpZCkpKSkpKSlcclxuICAgICh1bmZvcm0qXHJcbiAgICAgW18geF1cclxuICAgICAoaWZcclxuICAgICAgY29uZm9ybS1hbGxcclxuICAgICAgKGxldFxyXG4gICAgICAgW3NwZWMgQHNwZWMgW2luaXQgYWRkIGNvbXBsZXRlXSAoY2ZucyB4KV1cclxuICAgICAgIChsb29wXHJcbiAgICAgICAgW3JldCAoaW5pdCB4KSBpIDAgW3YgJiB2cyA6YXMgdnNlcV0gKHNlcSB4KV1cclxuICAgICAgICAoaWZcclxuICAgICAgICAgKD49IGkgKGMvY291bnQgeCkpXHJcbiAgICAgICAgIChjb21wbGV0ZSByZXQpXHJcbiAgICAgICAgIChyZWN1ciAoYWRkIHJldCBpIHYgKHVuZm9ybSogc3BlYyB2KSkgKGluYyBpKSB2cykpKSlcclxuICAgICAgeCkpXHJcbiAgICAoZXhwbGFpbipcclxuICAgICBbXyBwYXRoIHZpYSBpbiB4XVxyXG4gICAgIChjL29yXHJcbiAgICAgIChjb2xsLXByb2JcclxuICAgICAgIHhcclxuICAgICAgIGtpbmRcclxuICAgICAgIGtpbmQtZm9ybVxyXG4gICAgICAgZGlzdGluY3RcclxuICAgICAgIGNvdW50XHJcbiAgICAgICBtaW4tY291bnRcclxuICAgICAgIG1heC1jb3VudFxyXG4gICAgICAgcGF0aFxyXG4gICAgICAgdmlhXHJcbiAgICAgICBpbilcclxuICAgICAgKGFwcGx5XHJcbiAgICAgICBjb25jYXRcclxuICAgICAgICgoaWYgY29uZm9ybS1hbGwgaWRlbnRpdHkgKHBhcnRpYWwgdGFrZSAqY29sbC1lcnJvci1saW1pdCopKVxyXG4gICAgICAgIChrZWVwXHJcbiAgICAgICAgIGlkZW50aXR5XHJcbiAgICAgICAgIChtYXBcclxuICAgICAgICAgIChmblxyXG4gICAgICAgICAgIFtpIHZdXHJcbiAgICAgICAgICAgKGxldFxyXG4gICAgICAgICAgICBbayAoa2ZuIGkgdildXHJcbiAgICAgICAgICAgICh3aGVuLW5vdFxyXG4gICAgICAgICAgICAgKGNoZWNrPyB2KVxyXG4gICAgICAgICAgICAgKGxldFxyXG4gICAgICAgICAgICAgIFtwcm9iIChleHBsYWluLTEgZm9ybSBwcmVkIHBhdGggdmlhIChjb25qIGluIGspIHYpXVxyXG4gICAgICAgICAgICAgIHByb2IpKSkpXHJcbiAgICAgICAgICAocmFuZ2UpXHJcbiAgICAgICAgICB4KSkpKSkpXHJcbiAgICAoZ2VuKlxyXG4gICAgIFtfIG92ZXJyaWRlcyBwYXRoIHJtYXBdXHJcbiAgICAgKGlmXHJcbiAgICAgIGdmblxyXG4gICAgICAoZ2ZuKVxyXG4gICAgICAobGV0XHJcbiAgICAgICBbcGdlbiAoZ2Vuc3ViIHByZWQgb3ZlcnJpZGVzIHBhdGggcm1hcCBmb3JtKV1cclxuICAgICAgIChnZW4vYmluZFxyXG4gICAgICAgIChjb25kXHJcbiAgICAgICAgIGdlbi1pbnRvXHJcbiAgICAgICAgIChnZW4vcmV0dXJuIGdlbi1pbnRvKVxyXG4gICAgICAgICBraW5kXHJcbiAgICAgICAgIChnZW4vZm1hcFxyXG4gICAgICAgICAgKGZuKlxyXG4gICAgICAgICAgIFtwMV9fNDE1NzYjXVxyXG4gICAgICAgICAgIChpZiAoZW1wdHk/IHAxX180MTU3NiMpIHAxX180MTU3NiMgKGVtcHR5IHAxX180MTU3NiMpKSlcclxuICAgICAgICAgIChnZW5zdWIga2luZCBvdmVycmlkZXMgcGF0aCBybWFwIGZvcm0pKVxyXG4gICAgICAgICA6ZWxzZVxyXG4gICAgICAgICAoZ2VuL3JldHVybiBbXSkpXHJcbiAgICAgICAgKGZuXHJcbiAgICAgICAgIFtpbml0XVxyXG4gICAgICAgICAoZ2VuL2ZtYXBcclxuICAgICAgICAgIChmbipcclxuICAgICAgICAgICBbcDFfXzQxNTc3I11cclxuICAgICAgICAgICAoaWYgKHZlY3Rvcj8gaW5pdCkgcDFfXzQxNTc3IyAoaW50byBpbml0IHAxX180MTU3NyMpKSlcclxuICAgICAgICAgIChjb25kXHJcbiAgICAgICAgICAgZGlzdGluY3RcclxuICAgICAgICAgICAoaWZcclxuICAgICAgICAgICAgY291bnRcclxuICAgICAgICAgICAgKGdlbi92ZWN0b3ItZGlzdGluY3RcclxuICAgICAgICAgICAgIHBnZW5cclxuICAgICAgICAgICAgIHs6bnVtLWVsZW1lbnRzIGNvdW50LCA6bWF4LXRyaWVzIDEwMH0pXHJcbiAgICAgICAgICAgIChnZW4vdmVjdG9yLWRpc3RpbmN0XHJcbiAgICAgICAgICAgICBwZ2VuXHJcbiAgICAgICAgICAgICB7Om1pbi1lbGVtZW50cyAoYy9vciBtaW4tY291bnQgMCksXHJcbiAgICAgICAgICAgICAgOm1heC1lbGVtZW50c1xyXG4gICAgICAgICAgICAgIChjL29yXHJcbiAgICAgICAgICAgICAgIG1heC1jb3VudFxyXG4gICAgICAgICAgICAgICAobWF4IGdlbi1tYXggKGMvKiAyIChjL29yIG1pbi1jb3VudCAwKSkpKSxcclxuICAgICAgICAgICAgICA6bWF4LXRyaWVzIDEwMH0pKVxyXG4gICAgICAgICAgIGNvdW50XHJcbiAgICAgICAgICAgKGdlbi92ZWN0b3IgcGdlbiBjb3VudClcclxuICAgICAgICAgICAoYy9vciBtaW4tY291bnQgbWF4LWNvdW50KVxyXG4gICAgICAgICAgIChnZW4vdmVjdG9yXHJcbiAgICAgICAgICAgIHBnZW5cclxuICAgICAgICAgICAgKGMvb3IgbWluLWNvdW50IDApXHJcbiAgICAgICAgICAgIChjL29yIG1heC1jb3VudCAobWF4IGdlbi1tYXggKGMvKiAyIChjL29yIG1pbi1jb3VudCAwKSkpKSlcclxuICAgICAgICAgICA6ZWxzZVxyXG4gICAgICAgICAgIChnZW4vdmVjdG9yIHBnZW4gMCBnZW4tbWF4KSkpKSkpKSlcclxuICAgICh3aXRoLWdlbiogW18gZ2ZuXSAoZXZlcnktaW1wbCBmb3JtIHByZWQgb3B0cyBnZm4pKVxyXG4gICAgKGRlc2NyaWJlKlxyXG4gICAgIFtfXVxyXG4gICAgIChjL29yXHJcbiAgICAgIGRlc2NyaWJlLWZvcm1cclxuICAgICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxyXG4gICAgICAgKGNsb2p1cmUuY29yZS9zZXFcclxuICAgICAgICAoY2xvanVyZS5jb3JlL2NvbmNhdFxyXG4gICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgJ2NsanMuc3BlYy5hbHBoYS9ldmVyeSlcclxuICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0IChzL21yZXMgZm9ybSkpXHJcbiAgICAgICAgIChtYXBjYXQgaWRlbnRpdHkgb3B0cykpKSkpKSkpKSlcclxuIn0gezpzeW0gc3BlYy1pbXBsLCA6bWV0YSB7OmRvYyAiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdzcGVjJyIsIDphcmdsaXN0cyBbW2Zvcm0gcHJlZCBnZm4gY3ByZWQ/XSBbZm9ybSBwcmVkIGdmbiBjcHJlZD8gdW5jXV19LCA6c291cmNlICIoZGVmblxyXG4gc3BlYy1pbXBsXHJcbiBcIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnc3BlYydcIlxyXG4gKFtmb3JtIHByZWQgZ2ZuIGNwcmVkP10gKHNwZWMtaW1wbCBmb3JtIHByZWQgZ2ZuIGNwcmVkPyBuaWwpKVxyXG4gKFtmb3JtIHByZWQgZ2ZuIGNwcmVkPyB1bmNdXHJcbiAgKGNvbmRcclxuICAgKHNwZWM/IHByZWQpXHJcbiAgIChjb25kLT4gcHJlZCBnZm4gKHdpdGgtZ2VuIGdmbikpXHJcbiAgIChyZWdleD8gcHJlZClcclxuICAgKHJlZ2V4LXNwZWMtaW1wbCBwcmVkIGdmbilcclxuICAgKGlkZW50PyBwcmVkKVxyXG4gICAoY29uZC0+ICh0aGUtc3BlYyBwcmVkKSBnZm4gKHdpdGgtZ2VuIGdmbikpXHJcbiAgIDplbHNlXHJcbiAgIChyZWlmeVxyXG4gICAgU3BlY2l6ZVxyXG4gICAgKHNwZWNpemUqIFtzXSBzKVxyXG4gICAgKHNwZWNpemUqIFtzIF9dIHMpXHJcbiAgICBTcGVjXHJcbiAgICAoY29uZm9ybSpcclxuICAgICBbXyB4XVxyXG4gICAgIChsZXRcclxuICAgICAgW3JldCAocHJlZCB4KV1cclxuICAgICAgKGlmIGNwcmVkPyByZXQgKGlmIHJldCB4IDpjbGpzLnNwZWMuYWxwaGEvaW52YWxpZCkpKSlcclxuICAgICh1bmZvcm0qXHJcbiAgICAgW18geF1cclxuICAgICAoaWZcclxuICAgICAgY3ByZWQ/XHJcbiAgICAgIChpZiB1bmMgKHVuYyB4KSAodGhyb3cgKGpzL0Vycm9yLiBcIm5vIHVuZm9ybSBmbiBmb3IgY29uZm9ybWVyXCIpKSlcclxuICAgICAgeCkpXHJcbiAgICAoZXhwbGFpbipcclxuICAgICBbXyBwYXRoIHZpYSBpbiB4XVxyXG4gICAgICh3aGVuXHJcbiAgICAgIChpbnZhbGlkPyAoZHQgcHJlZCB4IGZvcm0gY3ByZWQ/KSlcclxuICAgICAgW3s6cGF0aCBwYXRoLCA6cHJlZCBmb3JtLCA6dmFsIHgsIDp2aWEgdmlhLCA6aW4gaW59XSkpXHJcbiAgICAoZ2VuKiBbXyBfIF8gX10gKGlmIGdmbiAoZ2ZuKSAoZ2VuL2dlbi1mb3ItcHJlZCBwcmVkKSkpXHJcbiAgICAod2l0aC1nZW4qIFtfIGdmbl0gKHNwZWMtaW1wbCBmb3JtIHByZWQgZ2ZuIGNwcmVkPyB1bmMpKVxyXG4gICAgKGRlc2NyaWJlKiBbX10gZm9ybSkpKSkpXHJcbiJ9IHs6c3ltIGludmFsaWQ/LCA6bWV0YSB7OmRvYyAidGVzdHMgdGhlIHZhbGlkaXR5IG9mIGEgY29uZm9ybSByZXR1cm4gdmFsdWUiLCA6YXJnbGlzdHMgKFtyZXRdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBpbnZhbGlkP1xyXG4gXCJ0ZXN0cyB0aGUgdmFsaWRpdHkgb2YgYSBjb25mb3JtIHJldHVybiB2YWx1ZVwiXHJcbiBbcmV0XVxyXG4gKGtleXdvcmQtaWRlbnRpY2FsPyA6Y2xqcy5zcGVjLmFscGhhL2ludmFsaWQgcmV0KSlcclxuIn0gezpzeW0gYW1wLWltcGwsIDptZXRhIHs6ZG9jICJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJyYnIiwgOmFyZ2xpc3RzIChbcmUgcmUtZm9ybSBwcmVkcyBwcmVkLWZvcm1zXSl9LCA6c291cmNlICIoZGVmblxyXG4gYW1wLWltcGxcclxuIFwiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICcmJ1wiXHJcbiBbcmUgcmUtZm9ybSBwcmVkcyBwcmVkLWZvcm1zXVxyXG4gezpjbGpzLnNwZWMuYWxwaGEvb3AgOmNsanMuc3BlYy5hbHBoYS9hbXAsXHJcbiAgOnAxIHJlLFxyXG4gIDphbXAgcmUtZm9ybSxcclxuICA6cHMgcHJlZHMsXHJcbiAgOmZvcm1zIHByZWQtZm9ybXN9KVxyXG4ifSB7OnN5bSBjYXQtaW1wbCwgOm1ldGEgezpkb2MgIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnY2F0JyIsIDphcmdsaXN0cyAoW2tzIHBzIGZvcm1zXSl9LCA6c291cmNlICIoZGVmblxyXG4gY2F0LWltcGxcclxuIFwiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdjYXQnXCJcclxuIFtrcyBwcyBmb3Jtc11cclxuIChwY2F0KiB7OmtzIGtzLCA6cHMgcHMsIDpmb3JtcyBmb3JtcywgOnJldCB7fX0pKVxyXG4ifSB7OnN5bSBleHBsYWluLXN0ciwgOm1ldGEgezpkb2MgIkdpdmVuIGEgc3BlYyBhbmQgYSB2YWx1ZSB0aGF0IGZhaWxzIHRvIGNvbmZvcm0sIHJldHVybnMgYW4gZXhwbGFuYXRpb24gYXMgYSBzdHJpbmcuIiwgOmFyZ2xpc3RzIChbc3BlYyB4XSl9LCA6c291cmNlICIoZGVmblxyXG4gZXhwbGFpbi1zdHJcclxuIFwiR2l2ZW4gYSBzcGVjIGFuZCBhIHZhbHVlIHRoYXQgZmFpbHMgdG8gY29uZm9ybSwgcmV0dXJucyBhbiBleHBsYW5hdGlvbiBhcyBhIHN0cmluZy5cIlxyXG4gW3NwZWMgeF1cclxuICh3aXRoLW91dC1zdHIgKGV4cGxhaW4gc3BlYyB4KSkpXHJcbiJ9IHs6c3ltICpjb21waWxlLWFzc2VydHMqLCA6bWV0YSB7OmRvYyAiSWYgdHJ1ZSwgY29tcGlsZXIgd2lsbCBlbmFibGUgc3BlYyBhc3NlcnRzLCB3aGljaCBhcmUgdGhlblxuc3ViamVjdCB0byBydW50aW1lIGNvbnRyb2wgdmlhIGNoZWNrLWFzc2VydHM/IElmIGZhbHNlLCBjb21waWxlclxud2lsbCBlbGltaW5hdGUgYWxsIHNwZWMgYXNzZXJ0IG92ZXJoZWFkLiBTZWUgJ2Fzc2VydCcuXG5Jbml0aWFsbHkgc2V0IHRvIHRoZSBuZWdhdGlvbiBvZiB0aGUgJzplbGlkZS1hc3NlcnRzJyBjb21waWxlciBvcHRpb24uXG5EZWZhdWx0cyB0byB0cnVlLiJ9LCA6c291cmNlICIoZGVmb25jZSAqY29tcGlsZS1hc3NlcnRzKiAocy9pbml0LWNvbXBpbGUtYXNzZXJ0cykpXHJcbiJ9IHs6c3ltIHdpdGgtZ2VuLCA6bWV0YSB7OmRvYyAiVGFrZXMgYSBzcGVjIGFuZCBhIG5vLWFyZywgZ2VuZXJhdG9yLXJldHVybmluZyBmbiBhbmQgcmV0dXJucyBhIHZlcnNpb24gb2YgdGhhdCBzcGVjIHRoYXQgdXNlcyB0aGF0IGdlbmVyYXRvciIsIDphcmdsaXN0cyAoW3NwZWMgZ2VuLWZuXSl9LCA6c291cmNlICIoZGVmblxyXG4gd2l0aC1nZW5cclxuIFwiVGFrZXMgYSBzcGVjIGFuZCBhIG5vLWFyZywgZ2VuZXJhdG9yLXJldHVybmluZyBmbiBhbmQgcmV0dXJucyBhIHZlcnNpb24gb2YgdGhhdCBzcGVjIHRoYXQgdXNlcyB0aGF0IGdlbmVyYXRvclwiXHJcbiBbc3BlYyBnZW4tZm5dXHJcbiAobGV0XHJcbiAgW3NwZWMgKHJlZy1yZXNvbHZlIHNwZWMpXVxyXG4gIChpZlxyXG4gICAocmVnZXg/IHNwZWMpXHJcbiAgIChhc3NvYyBzcGVjIDpjbGpzLnNwZWMuYWxwaGEvZ2ZuIGdlbi1mbilcclxuICAgKHdpdGgtZ2VuKiAoc3BlY2l6ZSBzcGVjKSBnZW4tZm4pKSkpXHJcbiJ9IHs6c3ltIGNvbmZvcm0qLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NwZWMgeF0pfSwgOnByb3RvY29sIFNwZWN9IHs6c3ltIGNoZWNrLWFzc2VydHM/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgdmFsdWUgc2V0IGJ5IGNoZWNrLWFzc2VydHMuIiwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxyXG4gY2hlY2stYXNzZXJ0cz9cclxuIFwiUmV0dXJucyB0aGUgdmFsdWUgc2V0IGJ5IGNoZWNrLWFzc2VydHMuXCJcclxuIFtdXHJcbiAqcnVudGltZS1hc3NlcnRzKilcclxuIn0gezpzeW0gcmVwLWltcGwsIDptZXRhIHs6ZG9jICJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJyonIiwgOmFyZ2xpc3RzIChbZm9ybSBwXSl9LCA6c291cmNlICIoZGVmblxyXG4gcmVwLWltcGxcclxuIFwiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICcqJ1wiXHJcbiBbZm9ybSBwXVxyXG4gKHJlcCogcCBwIFtdIGZhbHNlIGZvcm0pKVxyXG4ifSB7OnN5bSBkZXNjcmliZSwgOm1ldGEgezpkb2MgInJldHVybnMgYW4gYWJicmV2aWF0ZWQgZGVzY3JpcHRpb24gb2YgdGhlIHNwZWMgYXMgZGF0YSIsIDphcmdsaXN0cyAoW3NwZWNdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBkZXNjcmliZVxyXG4gXCJyZXR1cm5zIGFuIGFiYnJldmlhdGVkIGRlc2NyaXB0aW9uIG9mIHRoZSBzcGVjIGFzIGRhdGFcIlxyXG4gW3NwZWNdXHJcbiAoYWJicmV2IChmb3JtIHNwZWMpKSlcclxuIn0gezpzeW0gZXhwbGFpbi1vdXQsIDptZXRhIHs6ZG9jICJQcmludHMgZXhwbGFuYXRpb24gZGF0YSAocGVyICdleHBsYWluLWRhdGEnKSB0byAqb3V0KiB1c2luZyB0aGUgcHJpbnRlciBpbiAqZXhwbGFpbi1vdXQqLFxuICAgIGJ5IGRlZmF1bHQgZXhwbGFpbi1wcmludGVyLiIsIDphcmdsaXN0cyAoW2VkXSl9LCA6c291cmNlICIoZGVmblxyXG4gZXhwbGFpbi1vdXRcclxuIFwiUHJpbnRzIGV4cGxhbmF0aW9uIGRhdGEgKHBlciAnZXhwbGFpbi1kYXRhJykgdG8gKm91dCogdXNpbmcgdGhlIHByaW50ZXIgaW4gKmV4cGxhaW4tb3V0KixcXG4gICAgYnkgZGVmYXVsdCBleHBsYWluLXByaW50ZXIuXCJcclxuIFtlZF1cclxuICgqZXhwbGFpbi1vdXQqIGVkKSlcclxuIn0gezpzeW0gc3BlY2l6ZSosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbX10gW18gZm9ybV0pfSwgOnByb3RvY29sIFNwZWNpemV9IHs6c3ltIG1heWJlLWltcGwsIDptZXRhIHs6ZG9jICJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJz8nIiwgOmFyZ2xpc3RzIChbcCBmb3JtXSl9LCA6c291cmNlICIoZGVmblxyXG4gbWF5YmUtaW1wbFxyXG4gXCJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJz8nXCJcclxuIFtwIGZvcm1dXHJcbiAoYXNzb2NcclxuICAoYWx0KlxyXG4gICBbcCAoYWNjZXB0IDpjbGpzLnNwZWMuYWxwaGEvbmlsKV1cclxuICAgbmlsXHJcbiAgIFtmb3JtIDpjbGpzLnNwZWMuYWxwaGEvbmlsXSlcclxuICA6bWF5YmVcclxuICBmb3JtKSlcclxuIn0gezpzeW0gZXhwbGFpbiosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3BlYyBwYXRoIHZpYSBpbiB4XSl9LCA6cHJvdG9jb2wgU3BlY30pLCBjbGpzLnJlYWRlciAoezpzeW0gKmRlZmF1bHQtZGF0YS1yZWFkZXItZm4qLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqZGVmYXVsdC1kYXRhLXJlYWRlci1mbiogKGF0b20gbmlsKSlcclxuIn0gezpzeW0gcmVhZCwgOm1ldGEgezpkb2MgIlJlYWRzIHRoZSBmaXJzdCBvYmplY3QgZnJvbSBhbiBjbGpzLnRvb2xzLnJlYWRlci5yZWFkZXItdHlwZXMvSVB1c2hiYWNrUmVhZGVyLlxuICAgUmV0dXJucyB0aGUgb2JqZWN0IHJlYWQuIElmIEVPRiwgdGhyb3dzIGlmIGVvZi1lcnJvcj8gaXMgdHJ1ZSBvdGhlcndpc2UgcmV0dXJucyBlb2YuXG4gICBJZiBubyByZWFkZXIgaXMgcHJvdmlkZWQsICppbiogd2lsbCBiZSB1c2VkLlxuXG4gICBSZWFkcyBkYXRhIGluIHRoZSBlZG4gZm9ybWF0IChzdWJzZXQgb2YgQ2xvanVyZSBkYXRhKTpcbiAgIGh0dHA6Ly9lZG4tZm9ybWF0Lm9yZ1xuXG4gICBjbGpzLnRvb2xzLnJlYWRlci5lZG4vcmVhZCBkb2Vzbid0IGRlcGVuZCBvbiBkeW5hbWljIFZhcnMsIGFsbCBjb25maWd1cmF0aW9uXG4gICBpcyBkb25lIGJ5IHBhc3NpbmcgYW4gb3B0IG1hcC5cblxuICAgb3B0cyBpcyBhIG1hcCB0aGF0IGNhbiBpbmNsdWRlIHRoZSBmb2xsb3dpbmcga2V5czpcbiAgIDplb2YgLSB2YWx1ZSB0byByZXR1cm4gb24gZW5kLW9mLWZpbGUuIFdoZW4gbm90IHN1cHBsaWVkLCBlb2YgdGhyb3dzIGFuIGV4Y2VwdGlvbi5cbiAgIDpyZWFkZXJzICAtIGEgbWFwIG9mIHRhZyBzeW1ib2xzIHRvIGRhdGEtcmVhZGVyIGZ1bmN0aW9ucyB0byBiZSBjb25zaWRlcmVkIGJlZm9yZSBkZWZhdWx0LWRhdGEtcmVhZGVycy5cbiAgICAgICAgICAgICAgV2hlbiBub3Qgc3VwcGxpZWQsIG9ubHkgdGhlIGRlZmF1bHQtZGF0YS1yZWFkZXJzIHdpbGwgYmUgdXNlZC5cbiAgIDpkZWZhdWx0IC0gQSBmdW5jdGlvbiBvZiB0d28gYXJncywgdGhhdCB3aWxsLCBpZiBwcmVzZW50IGFuZCBubyByZWFkZXIgaXMgZm91bmQgZm9yIGEgdGFnLFxuICAgICAgICAgICAgICBiZSBjYWxsZWQgd2l0aCB0aGUgdGFnIGFuZCB0aGUgdmFsdWUuIiwgOmFyZ2xpc3RzIFtbcmVhZGVyXSBbezprZXlzIFtlb2ZdLCA6YXMgb3B0c30gcmVhZGVyXSBbcmVhZGVyIGVvZi1lcnJvcj8gZW9mIG9wdHNdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiByZWFkXHJcbiBcIlJlYWRzIHRoZSBmaXJzdCBvYmplY3QgZnJvbSBhbiBjbGpzLnRvb2xzLnJlYWRlci5yZWFkZXItdHlwZXMvSVB1c2hiYWNrUmVhZGVyLlxcbiAgIFJldHVybnMgdGhlIG9iamVjdCByZWFkLiBJZiBFT0YsIHRocm93cyBpZiBlb2YtZXJyb3I/IGlzIHRydWUgb3RoZXJ3aXNlIHJldHVybnMgZW9mLlxcbiAgIElmIG5vIHJlYWRlciBpcyBwcm92aWRlZCwgKmluKiB3aWxsIGJlIHVzZWQuXFxuXFxuICAgUmVhZHMgZGF0YSBpbiB0aGUgZWRuIGZvcm1hdCAoc3Vic2V0IG9mIENsb2p1cmUgZGF0YSk6XFxuICAgaHR0cDovL2Vkbi1mb3JtYXQub3JnXFxuXFxuICAgY2xqcy50b29scy5yZWFkZXIuZWRuL3JlYWQgZG9lc24ndCBkZXBlbmQgb24gZHluYW1pYyBWYXJzLCBhbGwgY29uZmlndXJhdGlvblxcbiAgIGlzIGRvbmUgYnkgcGFzc2luZyBhbiBvcHQgbWFwLlxcblxcbiAgIG9wdHMgaXMgYSBtYXAgdGhhdCBjYW4gaW5jbHVkZSB0aGUgZm9sbG93aW5nIGtleXM6XFxuICAgOmVvZiAtIHZhbHVlIHRvIHJldHVybiBvbiBlbmQtb2YtZmlsZS4gV2hlbiBub3Qgc3VwcGxpZWQsIGVvZiB0aHJvd3MgYW4gZXhjZXB0aW9uLlxcbiAgIDpyZWFkZXJzICAtIGEgbWFwIG9mIHRhZyBzeW1ib2xzIHRvIGRhdGEtcmVhZGVyIGZ1bmN0aW9ucyB0byBiZSBjb25zaWRlcmVkIGJlZm9yZSBkZWZhdWx0LWRhdGEtcmVhZGVycy5cXG4gICAgICAgICAgICAgIFdoZW4gbm90IHN1cHBsaWVkLCBvbmx5IHRoZSBkZWZhdWx0LWRhdGEtcmVhZGVycyB3aWxsIGJlIHVzZWQuXFxuICAgOmRlZmF1bHQgLSBBIGZ1bmN0aW9uIG9mIHR3byBhcmdzLCB0aGF0IHdpbGwsIGlmIHByZXNlbnQgYW5kIG5vIHJlYWRlciBpcyBmb3VuZCBmb3IgYSB0YWcsXFxuICAgICAgICAgICAgICBiZSBjYWxsZWQgd2l0aCB0aGUgdGFnIGFuZCB0aGUgdmFsdWUuXCJcclxuIChbcmVhZGVyXVxyXG4gIChlZG4vcmVhZFxyXG4gICB7OnJlYWRlcnMgQCp0YWctdGFibGUqLFxyXG4gICAgOmRlZmF1bHQgQCpkZWZhdWx0LWRhdGEtcmVhZGVyLWZuKixcclxuICAgIDplb2YgbmlsfVxyXG4gICByZWFkZXIpKVxyXG4gKFt7OmtleXMgW2VvZl0sIDphcyBvcHRzfSByZWFkZXJdXHJcbiAgKGVkbi9yZWFkXHJcbiAgICh1cGRhdGVcclxuICAgIChtZXJnZSBvcHRzIHs6ZGVmYXVsdCBAKmRlZmF1bHQtZGF0YS1yZWFkZXItZm4qfSlcclxuICAgIDpyZWFkZXJzXHJcbiAgICAoZm4gW21dIChtZXJnZSBAKnRhZy10YWJsZSogbSkpKVxyXG4gICByZWFkZXIpKVxyXG4gKFtyZWFkZXIgZW9mLWVycm9yPyBlb2Ygb3B0c11cclxuICAoZWRuL3JlYWRcclxuICAgcmVhZGVyXHJcbiAgIGVvZi1lcnJvcj9cclxuICAgZW9mXHJcbiAgICh1cGRhdGVcclxuICAgIChtZXJnZSBvcHRzIHs6ZGVmYXVsdCBAKmRlZmF1bHQtZGF0YS1yZWFkZXItZm4qfSlcclxuICAgIDpyZWFkZXJzXHJcbiAgICAoZm4gW21dIChtZXJnZSBAKnRhZy10YWJsZSogbSkpKSkpKVxyXG4ifSB7OnN5bSAqdGFnLXRhYmxlKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcclxuICp0YWctdGFibGUqXHJcbiAoYXRvbVxyXG4gIChhZGQtZGF0YS1yZWFkZXJzXHJcbiAgIHsnaW5zdCByZWFkLWRhdGUsXHJcbiAgICAndXVpZCByZWFkLXV1aWQsXHJcbiAgICAncXVldWUgcmVhZC1xdWV1ZSxcclxuICAgICdqcyByZWFkLWpzfSkpKVxyXG4ifSB7OnN5bSBwYXJzZS1hbmQtdmFsaWRhdGUtdGltZXN0YW1wLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBwYXJzZS1hbmQtdmFsaWRhdGUtdGltZXN0YW1wXHJcbiBbc11cclxuIChsZXRcclxuICBbW19cclxuICAgIHllYXJzXHJcbiAgICBtb250aHNcclxuICAgIGRheXNcclxuICAgIGhvdXJzXHJcbiAgICBtaW51dGVzXHJcbiAgICBzZWNvbmRzXHJcbiAgICBmcmFjdGlvblxyXG4gICAgb2Zmc2V0LXNpZ25cclxuICAgIG9mZnNldC1ob3Vyc1xyXG4gICAgb2Zmc2V0LW1pbnV0ZXNcclxuICAgIDphc1xyXG4gICAgdl1cclxuICAgKHJlLW1hdGNoZXMgdGltZXN0YW1wLXJlZ2V4IHMpXVxyXG4gIChpZi1ub3RcclxuICAgdlxyXG4gICAodGhyb3cgKGpzL0Vycm9yLiAoc3RyIFwiVW5yZWNvZ25pemVkIGRhdGUvdGltZSBzeW50YXg6IFwiIHMpKSlcclxuICAgKGxldFxyXG4gICAgW3llYXJzXHJcbiAgICAgKHBhcnNlLWludCB5ZWFycylcclxuICAgICBtb250aHNcclxuICAgICAob3IgKHBhcnNlLWludCBtb250aHMpIDEpXHJcbiAgICAgZGF5c1xyXG4gICAgIChvciAocGFyc2UtaW50IGRheXMpIDEpXHJcbiAgICAgaG91cnNcclxuICAgICAob3IgKHBhcnNlLWludCBob3VycykgMClcclxuICAgICBtaW51dGVzXHJcbiAgICAgKG9yIChwYXJzZS1pbnQgbWludXRlcykgMClcclxuICAgICBzZWNvbmRzXHJcbiAgICAgKG9yIChwYXJzZS1pbnQgc2Vjb25kcykgMClcclxuICAgICBmcmFjdGlvblxyXG4gICAgIChvciAocGFyc2UtaW50ICh6ZXJvLWZpbGwtcmlnaHQtYW5kLXRydW5jYXRlIGZyYWN0aW9uIDMpKSAwKVxyXG4gICAgIG9mZnNldC1zaWduXHJcbiAgICAgKGlmICg9IG9mZnNldC1zaWduIFwiLVwiKSAtMSAxKVxyXG4gICAgIG9mZnNldC1ob3Vyc1xyXG4gICAgIChvciAocGFyc2UtaW50IG9mZnNldC1ob3VycykgMClcclxuICAgICBvZmZzZXQtbWludXRlc1xyXG4gICAgIChvciAocGFyc2UtaW50IG9mZnNldC1taW51dGVzKSAwKVxyXG4gICAgIG9mZnNldFxyXG4gICAgICgqIG9mZnNldC1zaWduICgrICgqIG9mZnNldC1ob3VycyA2MCkgb2Zmc2V0LW1pbnV0ZXMpKV1cclxuICAgIFt5ZWFyc1xyXG4gICAgIChjaGVjayAxIG1vbnRocyAxMiBcInRpbWVzdGFtcCBtb250aCBmaWVsZCBtdXN0IGJlIGluIHJhbmdlIDEuLjEyXCIpXHJcbiAgICAgKGNoZWNrXHJcbiAgICAgIDFcclxuICAgICAgZGF5c1xyXG4gICAgICAoZGF5cy1pbi1tb250aCBtb250aHMgKGxlYXAteWVhcj8geWVhcnMpKVxyXG4gICAgICBcInRpbWVzdGFtcCBkYXkgZmllbGQgbXVzdCBiZSBpbiByYW5nZSAxLi5sYXN0IGRheSBpbiBtb250aFwiKVxyXG4gICAgIChjaGVjayAwIGhvdXJzIDIzIFwidGltZXN0YW1wIGhvdXIgZmllbGQgbXVzdCBiZSBpbiByYW5nZSAwLi4yM1wiKVxyXG4gICAgIChjaGVja1xyXG4gICAgICAwXHJcbiAgICAgIG1pbnV0ZXNcclxuICAgICAgNTlcclxuICAgICAgXCJ0aW1lc3RhbXAgbWludXRlIGZpZWxkIG11c3QgYmUgaW4gcmFuZ2UgMC4uNTlcIilcclxuICAgICAoY2hlY2tcclxuICAgICAgMFxyXG4gICAgICBzZWNvbmRzXHJcbiAgICAgIChpZiAoPSBtaW51dGVzIDU5KSA2MCA1OSlcclxuICAgICAgXCJ0aW1lc3RhbXAgc2Vjb25kIGZpZWxkIG11c3QgYmUgaW4gcmFuZ2UgMC4uNjBcIilcclxuICAgICAoY2hlY2tcclxuICAgICAgMFxyXG4gICAgICBmcmFjdGlvblxyXG4gICAgICA5OTlcclxuICAgICAgXCJ0aW1lc3RhbXAgbWlsbGlzZWNvbmQgZmllbGQgbXVzdCBiZSBpbiByYW5nZSAwLi45OTlcIilcclxuICAgICBvZmZzZXRdKSkpKVxyXG4ifSB7OnN5bSByZWdpc3Rlci10YWctcGFyc2VyISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0YWcgZl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlZ2lzdGVyLXRhZy1wYXJzZXIhXHJcbiBbdGFnIGZdXHJcbiAobGV0XHJcbiAgW29sZC1wYXJzZXIgKGdldCBAKnRhZy10YWJsZSogdGFnKV1cclxuICAoc3dhcCEgKnRhZy10YWJsZSogYXNzb2MgdGFnIGYpXHJcbiAgb2xkLXBhcnNlcikpXHJcbiJ9IHs6c3ltIHJlZ2lzdGVyLWRlZmF1bHQtdGFnLXBhcnNlciEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlZ2lzdGVyLWRlZmF1bHQtdGFnLXBhcnNlciFcclxuIFtmXVxyXG4gKGxldFxyXG4gIFtvbGQtcGFyc2VyIEAqZGVmYXVsdC1kYXRhLXJlYWRlci1mbipdXHJcbiAgKHN3YXAhICpkZWZhdWx0LWRhdGEtcmVhZGVyLWZuKiAoZm4gW19dIGYpKVxyXG4gIG9sZC1wYXJzZXIpKVxyXG4ifSB7OnN5bSBkZXJlZ2lzdGVyLWRlZmF1bHQtdGFnLXBhcnNlciEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxyXG4gZGVyZWdpc3Rlci1kZWZhdWx0LXRhZy1wYXJzZXIhXHJcbiBbXVxyXG4gKGxldFxyXG4gIFtvbGQtcGFyc2VyIEAqZGVmYXVsdC1kYXRhLXJlYWRlci1mbipdXHJcbiAgKHN3YXAhICpkZWZhdWx0LWRhdGEtcmVhZGVyLWZuKiAoZm4gW19dIG5pbCkpXHJcbiAgb2xkLXBhcnNlcikpXHJcbiJ9IHs6c3ltIHJlYWQtc3RyaW5nLCA6bWV0YSB7OmRvYyAiUmVhZHMgb25lIG9iamVjdCBmcm9tIHRoZSBzdHJpbmcgcy5cbiAgIFJldHVybnMgbmlsIHdoZW4gcyBpcyBuaWwgb3IgZW1wdHkuXG5cbiAgIFJlYWRzIGRhdGEgaW4gdGhlIGVkbiBmb3JtYXQgKHN1YnNldCBvZiBDbG9qdXJlIGRhdGEpOlxuICAgaHR0cDovL2Vkbi1mb3JtYXQub3JnXG5cbiAgIG9wdHMgaXMgYSBtYXAgYXMgcGVyIGNsanMudG9vbHMucmVhZGVyLmVkbi9yZWFkIiwgOmFyZ2xpc3RzIFtbc10gW29wdHMgc11dfSwgOnNvdXJjZSAiKGRlZm5cclxuIHJlYWQtc3RyaW5nXHJcbiBcIlJlYWRzIG9uZSBvYmplY3QgZnJvbSB0aGUgc3RyaW5nIHMuXFxuICAgUmV0dXJucyBuaWwgd2hlbiBzIGlzIG5pbCBvciBlbXB0eS5cXG5cXG4gICBSZWFkcyBkYXRhIGluIHRoZSBlZG4gZm9ybWF0IChzdWJzZXQgb2YgQ2xvanVyZSBkYXRhKTpcXG4gICBodHRwOi8vZWRuLWZvcm1hdC5vcmdcXG5cXG4gICBvcHRzIGlzIGEgbWFwIGFzIHBlciBjbGpzLnRvb2xzLnJlYWRlci5lZG4vcmVhZFwiXHJcbiAoW3NdXHJcbiAgKGVkbi9yZWFkLXN0cmluZ1xyXG4gICB7OnJlYWRlcnMgQCp0YWctdGFibGUqLFxyXG4gICAgOmRlZmF1bHQgQCpkZWZhdWx0LWRhdGEtcmVhZGVyLWZuKixcclxuICAgIDplb2YgbmlsfVxyXG4gICBzKSlcclxuIChbb3B0cyBzXVxyXG4gIChlZG4vcmVhZC1zdHJpbmdcclxuICAgKHVwZGF0ZVxyXG4gICAgKG1lcmdlIHs6ZGVmYXVsdCBAKmRlZmF1bHQtZGF0YS1yZWFkZXItZm4qfSBvcHRzKVxyXG4gICAgOnJlYWRlcnNcclxuICAgIChmbiBbbV0gKG1lcmdlIEAqdGFnLXRhYmxlKiBtKSkpXHJcbiAgIHMpKSlcclxuIn0gezpzeW0gZGVyZWdpc3Rlci10YWctcGFyc2VyISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0YWddKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBkZXJlZ2lzdGVyLXRhZy1wYXJzZXIhXHJcbiBbdGFnXVxyXG4gKGxldFxyXG4gIFtvbGQtcGFyc2VyIChnZXQgQCp0YWctdGFibGUqIHRhZyldXHJcbiAgKHN3YXAhICp0YWctdGFibGUqIGRpc3NvYyB0YWcpXHJcbiAgb2xkLXBhcnNlcikpXHJcbiJ9IHs6c3ltIHBhcnNlLXRpbWVzdGFtcCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0c10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHBhcnNlLXRpbWVzdGFtcFxyXG4gW3RzXVxyXG4gKGlmLWxldFxyXG4gIFtbeWVhcnMgbW9udGhzIGRheXMgaG91cnMgbWludXRlcyBzZWNvbmRzIG1zIG9mZnNldF1cclxuICAgKHBhcnNlLWFuZC12YWxpZGF0ZS10aW1lc3RhbXAgdHMpXVxyXG4gIChqcy9EYXRlLlxyXG4gICAoLVxyXG4gICAgKC5VVEMganMvRGF0ZSB5ZWFycyAoZGVjIG1vbnRocykgZGF5cyBob3VycyBtaW51dGVzIHNlY29uZHMgbXMpXHJcbiAgICAoKiBvZmZzZXQgNjAgMTAwMCkpKVxyXG4gICh0aHJvdyAoanMvRXJyb3IuIChzdHIgXCJVbnJlY29nbml6ZWQgZGF0ZS90aW1lIHN5bnRheDogXCIgdHMpKSkpKVxyXG4ifSksIGNsb2p1cmUud2FsayAoezpzeW0gd2FsaywgOm1ldGEgezpkb2MgIlRyYXZlcnNlcyBmb3JtLCBhbiBhcmJpdHJhcnkgZGF0YSBzdHJ1Y3R1cmUuICBpbm5lciBhbmQgb3V0ZXIgYXJlXG4gIGZ1bmN0aW9ucy4gIEFwcGxpZXMgaW5uZXIgdG8gZWFjaCBlbGVtZW50IG9mIGZvcm0sIGJ1aWxkaW5nIHVwIGFcbiAgZGF0YSBzdHJ1Y3R1cmUgb2YgdGhlIHNhbWUgdHlwZSwgdGhlbiBhcHBsaWVzIG91dGVyIHRvIHRoZSByZXN1bHQuXG4gIFJlY29nbml6ZXMgYWxsIENsb2p1cmUgZGF0YSBzdHJ1Y3R1cmVzLiBDb25zdW1lcyBzZXFzIGFzIHdpdGggZG9hbGwuIiwgOmFyZ2xpc3RzIChbaW5uZXIgb3V0ZXIgZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIHdhbGtcclxuIFwiVHJhdmVyc2VzIGZvcm0sIGFuIGFyYml0cmFyeSBkYXRhIHN0cnVjdHVyZS4gIGlubmVyIGFuZCBvdXRlciBhcmVcXG4gIGZ1bmN0aW9ucy4gIEFwcGxpZXMgaW5uZXIgdG8gZWFjaCBlbGVtZW50IG9mIGZvcm0sIGJ1aWxkaW5nIHVwIGFcXG4gIGRhdGEgc3RydWN0dXJlIG9mIHRoZSBzYW1lIHR5cGUsIHRoZW4gYXBwbGllcyBvdXRlciB0byB0aGUgcmVzdWx0LlxcbiAgUmVjb2duaXplcyBhbGwgQ2xvanVyZSBkYXRhIHN0cnVjdHVyZXMuIENvbnN1bWVzIHNlcXMgYXMgd2l0aCBkb2FsbC5cIlxyXG4gezphZGRlZCBcIjEuMVwifVxyXG4gW2lubmVyIG91dGVyIGZvcm1dXHJcbiAoY29uZFxyXG4gIChsaXN0PyBmb3JtKVxyXG4gIChvdXRlciAoYXBwbHkgbGlzdCAobWFwIGlubmVyIGZvcm0pKSlcclxuICAobWFwLWVudHJ5PyBmb3JtKVxyXG4gIChvdXRlciAoTWFwRW50cnkuIChpbm5lciAoa2V5IGZvcm0pKSAoaW5uZXIgKHZhbCBmb3JtKSkgbmlsKSlcclxuICAoc2VxPyBmb3JtKVxyXG4gIChvdXRlciAoZG9hbGwgKG1hcCBpbm5lciBmb3JtKSkpXHJcbiAgKHJlY29yZD8gZm9ybSlcclxuICAob3V0ZXIgKHJlZHVjZSAoZm4gW3IgeF0gKGNvbmogciAoaW5uZXIgeCkpKSBmb3JtIGZvcm0pKVxyXG4gIChjb2xsPyBmb3JtKVxyXG4gIChvdXRlciAoaW50byAoZW1wdHkgZm9ybSkgKG1hcCBpbm5lciBmb3JtKSkpXHJcbiAgOmVsc2VcclxuICAob3V0ZXIgZm9ybSkpKVxyXG4ifSB7OnN5bSBwb3N0d2FsaywgOm1ldGEgezpkb2MgIlBlcmZvcm1zIGEgZGVwdGgtZmlyc3QsIHBvc3Qtb3JkZXIgdHJhdmVyc2FsIG9mIGZvcm0uICBDYWxscyBmIG9uXG4gIGVhY2ggc3ViLWZvcm0sIHVzZXMgZidzIHJldHVybiB2YWx1ZSBpbiBwbGFjZSBvZiB0aGUgb3JpZ2luYWwuXG4gIFJlY29nbml6ZXMgYWxsIENsb2p1cmUgZGF0YSBzdHJ1Y3R1cmVzLiBDb25zdW1lcyBzZXFzIGFzIHdpdGggZG9hbGwuIiwgOmFyZ2xpc3RzIChbZiBmb3JtXSl9LCA6c291cmNlICIoZGVmblxyXG4gcG9zdHdhbGtcclxuIFwiUGVyZm9ybXMgYSBkZXB0aC1maXJzdCwgcG9zdC1vcmRlciB0cmF2ZXJzYWwgb2YgZm9ybS4gIENhbGxzIGYgb25cXG4gIGVhY2ggc3ViLWZvcm0sIHVzZXMgZidzIHJldHVybiB2YWx1ZSBpbiBwbGFjZSBvZiB0aGUgb3JpZ2luYWwuXFxuICBSZWNvZ25pemVzIGFsbCBDbG9qdXJlIGRhdGEgc3RydWN0dXJlcy4gQ29uc3VtZXMgc2VxcyBhcyB3aXRoIGRvYWxsLlwiXHJcbiB7OmFkZGVkIFwiMS4xXCJ9XHJcbiBbZiBmb3JtXVxyXG4gKHdhbGsgKHBhcnRpYWwgcG9zdHdhbGsgZikgZiBmb3JtKSlcclxuIn0gezpzeW0gcHJld2FsaywgOm1ldGEgezpkb2MgIkxpa2UgcG9zdHdhbGssIGJ1dCBkb2VzIHByZS1vcmRlciB0cmF2ZXJzYWwuIiwgOmFyZ2xpc3RzIChbZiBmb3JtXSl9LCA6c291cmNlICIoZGVmblxyXG4gcHJld2Fsa1xyXG4gXCJMaWtlIHBvc3R3YWxrLCBidXQgZG9lcyBwcmUtb3JkZXIgdHJhdmVyc2FsLlwiXHJcbiB7OmFkZGVkIFwiMS4xXCJ9XHJcbiBbZiBmb3JtXVxyXG4gKHdhbGsgKHBhcnRpYWwgcHJld2FsayBmKSBpZGVudGl0eSAoZiBmb3JtKSkpXHJcbiJ9IHs6c3ltIGtleXdvcmRpemUta2V5cywgOm1ldGEgezpkb2MgIlJlY3Vyc2l2ZWx5IHRyYW5zZm9ybXMgYWxsIG1hcCBrZXlzIGZyb20gc3RyaW5ncyB0byBrZXl3b3Jkcy4iLCA6YXJnbGlzdHMgKFttXSl9LCA6c291cmNlICIoZGVmblxyXG4ga2V5d29yZGl6ZS1rZXlzXHJcbiBcIlJlY3Vyc2l2ZWx5IHRyYW5zZm9ybXMgYWxsIG1hcCBrZXlzIGZyb20gc3RyaW5ncyB0byBrZXl3b3Jkcy5cIlxyXG4gezphZGRlZCBcIjEuMVwifVxyXG4gW21dXHJcbiAobGV0XHJcbiAgW2YgKGZuIFtbayB2XV0gKGlmIChzdHJpbmc/IGspIFsoa2V5d29yZCBrKSB2XSBbayB2XSkpXVxyXG4gIChwb3N0d2FsayAoZm4gW3hdIChpZiAobWFwPyB4KSAoaW50byB7fSAobWFwIGYgeCkpIHgpKSBtKSkpXHJcbiJ9IHs6c3ltIHN0cmluZ2lmeS1rZXlzLCA6bWV0YSB7OmRvYyAiUmVjdXJzaXZlbHkgdHJhbnNmb3JtcyBhbGwgbWFwIGtleXMgZnJvbSBrZXl3b3JkcyB0byBzdHJpbmdzLiIsIDphcmdsaXN0cyAoW21dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBzdHJpbmdpZnkta2V5c1xyXG4gXCJSZWN1cnNpdmVseSB0cmFuc2Zvcm1zIGFsbCBtYXAga2V5cyBmcm9tIGtleXdvcmRzIHRvIHN0cmluZ3MuXCJcclxuIHs6YWRkZWQgXCIxLjFcIn1cclxuIFttXVxyXG4gKGxldFxyXG4gIFtmIChmbiBbW2sgdl1dIChpZiAoa2V5d29yZD8gaykgWyhuYW1lIGspIHZdIFtrIHZdKSldXHJcbiAgKHBvc3R3YWxrIChmbiBbeF0gKGlmIChtYXA/IHgpIChpbnRvIHt9IChtYXAgZiB4KSkgeCkpIG0pKSlcclxuIn0gezpzeW0gcHJld2Fsay1yZXBsYWNlLCA6bWV0YSB7OmRvYyAiUmVjdXJzaXZlbHkgdHJhbnNmb3JtcyBmb3JtIGJ5IHJlcGxhY2luZyBrZXlzIGluIHNtYXAgd2l0aCB0aGVpclxuICB2YWx1ZXMuICBMaWtlIGNsb2p1cmUvcmVwbGFjZSBidXQgd29ya3Mgb24gYW55IGRhdGEgc3RydWN0dXJlLiAgRG9lc1xuICByZXBsYWNlbWVudCBhdCB0aGUgcm9vdCBvZiB0aGUgdHJlZSBmaXJzdC4iLCA6YXJnbGlzdHMgKFtzbWFwIGZvcm1dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBwcmV3YWxrLXJlcGxhY2VcclxuIFwiUmVjdXJzaXZlbHkgdHJhbnNmb3JtcyBmb3JtIGJ5IHJlcGxhY2luZyBrZXlzIGluIHNtYXAgd2l0aCB0aGVpclxcbiAgdmFsdWVzLiAgTGlrZSBjbG9qdXJlL3JlcGxhY2UgYnV0IHdvcmtzIG9uIGFueSBkYXRhIHN0cnVjdHVyZS4gIERvZXNcXG4gIHJlcGxhY2VtZW50IGF0IHRoZSByb290IG9mIHRoZSB0cmVlIGZpcnN0LlwiXHJcbiB7OmFkZGVkIFwiMS4xXCJ9XHJcbiBbc21hcCBmb3JtXVxyXG4gKHByZXdhbGsgKGZuIFt4XSAoaWYgKGNvbnRhaW5zPyBzbWFwIHgpIChzbWFwIHgpIHgpKSBmb3JtKSlcclxuIn0gezpzeW0gcG9zdHdhbGstcmVwbGFjZSwgOm1ldGEgezpkb2MgIlJlY3Vyc2l2ZWx5IHRyYW5zZm9ybXMgZm9ybSBieSByZXBsYWNpbmcga2V5cyBpbiBzbWFwIHdpdGggdGhlaXJcbiAgdmFsdWVzLiAgTGlrZSBjbG9qdXJlL3JlcGxhY2UgYnV0IHdvcmtzIG9uIGFueSBkYXRhIHN0cnVjdHVyZS4gIERvZXNcbiAgcmVwbGFjZW1lbnQgYXQgdGhlIGxlYXZlcyBvZiB0aGUgdHJlZSBmaXJzdC4iLCA6YXJnbGlzdHMgKFtzbWFwIGZvcm1dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBwb3N0d2Fsay1yZXBsYWNlXHJcbiBcIlJlY3Vyc2l2ZWx5IHRyYW5zZm9ybXMgZm9ybSBieSByZXBsYWNpbmcga2V5cyBpbiBzbWFwIHdpdGggdGhlaXJcXG4gIHZhbHVlcy4gIExpa2UgY2xvanVyZS9yZXBsYWNlIGJ1dCB3b3JrcyBvbiBhbnkgZGF0YSBzdHJ1Y3R1cmUuICBEb2VzXFxuICByZXBsYWNlbWVudCBhdCB0aGUgbGVhdmVzIG9mIHRoZSB0cmVlIGZpcnN0LlwiXHJcbiB7OmFkZGVkIFwiMS4xXCJ9XHJcbiBbc21hcCBmb3JtXVxyXG4gKHBvc3R3YWxrIChmbiBbeF0gKGlmIChjb250YWlucz8gc21hcCB4KSAoc21hcCB4KSB4KSkgZm9ybSkpXHJcbiJ9KSwgdGFnLXNvdXAuY29yZSAoezpzeW0gc3BlY2lhbC1pbmRlbnQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXHJcbiBzcGVjaWFsLWluZGVudFxyXG4gI3snYW5kICc+PSAnPiAnLyAnLT4+ICc8PSAnPSAnY29uZC0+PiAnKyAnPT0gJyogJ3NvbWUtPj4gJ3NvbWUtPiAnbm90PVxyXG4gICAnY29uZC0+ICc8ICctICctPiAnYXMtPiAnb3J9KVxyXG4ifSB7OnN5bSBjb2RlLT50YWdzLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgdGFncyBmb3IgdGhlIGdpdmVuIHN0cmluZyBjb250YWluaW5nIGNvZGUuIiwgOmFyZ2xpc3RzIChbdGV4dF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGNvZGUtPnRhZ3NcclxuIFwiUmV0dXJucyB0aGUgdGFncyBmb3IgdGhlIGdpdmVuIHN0cmluZyBjb250YWluaW5nIGNvZGUuXCJcclxuIFt0ZXh0XVxyXG4gKGxldFxyXG4gIFtyZWFkZXIgKGluZGV4aW5nLXB1c2gtYmFjay1yZWFkZXIgdGV4dCldXHJcbiAgKGxvb3BcclxuICAgW20gKHRyYW5zaWVudCB7fSldXHJcbiAgIChpZi1sZXRcclxuICAgIFt0b2tlbiAocmVhZC1zYWZlIHJlYWRlcildXHJcbiAgICAocmVjdXIgKHRhZy1tYXAgdG9rZW4gbSAwKSlcclxuICAgIChwZXJzaXN0ZW50ISBtKSkpKSlcclxuIn0gezpzeW0gaW5kZW50LWZvci1saW5lLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbnVtYmVyIG9mIHNwYWNlcyB0aGUgZ2l2ZW4gbGluZSBzaG91bGQgYmUgaW5kZW50ZWQuIiwgOmFyZ2xpc3RzIChbdGFncyBsaW5lXSl9LCA6c291cmNlICIoZGVmblxyXG4gaW5kZW50LWZvci1saW5lXHJcbiBcIlJldHVybnMgdGhlIG51bWJlciBvZiBzcGFjZXMgdGhlIGdpdmVuIGxpbmUgc2hvdWxkIGJlIGluZGVudGVkLlwiXHJcbiBbdGFncyBsaW5lXVxyXG4gKG9yXHJcbiAgKC0+PlxyXG4gICAoZ2V0LXRhZ3MtYmVmb3JlLWxpbmUgdGFncyBsaW5lKVxyXG4gICByZXZlcnNlXHJcbiAgIChzb21lIDpuZXh0LWxpbmUtaW5kZW50KSlcclxuICAwKSlcclxuIn0gezpzeW0gYWRqdXN0LWluZGVudCwgOm1ldGEgezpkb2MgIlJldHVybnMgaG93IG11Y2ggdGhlIGluZGVudCBzaG91bGQgYmUgYWRqdXN0ZWQgZm9yIHRoZSBnaXZlbiB0b2tlbi4iLCA6YXJnbGlzdHMgKFt0b2tlbl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGFkanVzdC1pbmRlbnRcclxuIFwiUmV0dXJucyBob3cgbXVjaCB0aGUgaW5kZW50IHNob3VsZCBiZSBhZGp1c3RlZCBmb3IgdGhlIGdpdmVuIHRva2VuLlwiXHJcbiBbdG9rZW5dXHJcbiAoaWZcclxuICAobGlzdD8gdG9rZW4pXHJcbiAgKGxldFxyXG4gICBbZmlyc3QtdmFsICgtPiB0b2tlbiBmaXJzdCB1bndyYXAtdmFsdWUpXVxyXG4gICAoY29uZFxyXG4gICAgKG9yICh2ZWN0b3I/IGZpcnN0LXZhbCkgKGxpc3Q/IGZpcnN0LXZhbCkpXHJcbiAgICAwXHJcbiAgICAoI3s6dXNlIDpyZXF1aXJlIDppbXBvcnR9IGZpcnN0LXZhbClcclxuICAgIChpbmMgKGNvdW50IChzdHIgZmlyc3QtdmFsKSkpXHJcbiAgICAoI3s6Y2xqciA6Y2xqIDpjbGpzfSBmaXJzdC12YWwpXHJcbiAgICAwXHJcbiAgICAoY29udGFpbnM/IHNwZWNpYWwtaW5kZW50IGZpcnN0LXZhbClcclxuICAgIChpbmMgKGNvdW50IChzdHIgZmlyc3QtdmFsKSkpXHJcbiAgICA6ZWxzZVxyXG4gICAgMSkpXHJcbiAgMCkpXHJcbiJ9IHs6c3ltIHJlYWQtc2FmZSwgOm1ldGEgezpkb2MgIlJldHVybnMgZWl0aGVyIGEgZm9ybSBvciBhbiBleGNlcHRpb24gb2JqZWN0LCBvciBuaWwgaWYgRU9GIGlzIHJlYWNoZWQuIiwgOmFyZ2xpc3RzIChbcmVhZGVyXSl9LCA6c291cmNlICIoZGVmblxyXG4gcmVhZC1zYWZlXHJcbiBcIlJldHVybnMgZWl0aGVyIGEgZm9ybSBvciBhbiBleGNlcHRpb24gb2JqZWN0LCBvciBuaWwgaWYgRU9GIGlzIHJlYWNoZWQuXCJcclxuIFtyZWFkZXJdXHJcbiAodHJ5XHJcbiAgKGJpbmRpbmdcclxuICAgWyp3cmFwLXZhbHVlLWFuZC1hZGQtbWV0YWRhdGE/KiB0cnVlIHIvKnN1cHByZXNzLXJlYWQqIHRydWVdXHJcbiAgIChyL3JlYWQgezpyZWFkLWNvbmQgOnByZXNlcnZlLCA6ZW9mIG5pbH0gcmVhZGVyKSlcclxuICAoY2F0Y2ggRXhjZXB0aW9uSW5mbyBlIGUpKSlcclxuIn0gezpzeW0gdW53cmFwLXZhbHVlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ZhbHVlXSl9LCA6c291cmNlICIoZGVmblxyXG4gdW53cmFwLXZhbHVlXHJcbiBbdmFsdWVdXHJcbiAoaWYgKC0+IHZhbHVlIG1ldGEgOndyYXBwZWQ/KSAoZmlyc3QgdmFsdWUpIHZhbHVlKSlcclxuIn0gezpzeW0gZ2V0LXRhZ3MtYmVmb3JlLWxpbmUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSB0YWdzIGJlZm9yZSB0aGUgZ2l2ZW4gbGluZS4iLCA6YXJnbGlzdHMgKFt0YWdzIGxpbmVdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBnZXQtdGFncy1iZWZvcmUtbGluZVxyXG4gXCJSZXR1cm5zIHRoZSB0YWdzIGJlZm9yZSB0aGUgZ2l2ZW4gbGluZS5cIlxyXG4gW3RhZ3MgbGluZV1cclxuICgtPj5cclxuICB0YWdzXHJcbiAgKGZpbHRlciAoZm4qIFtwMV9fNDE2NzkjXSAoPCAoZmlyc3QgcDFfXzQxNjc5IykgbGluZSkpKVxyXG4gIChzb3J0LWJ5IGZpcnN0KVxyXG4gIChtYXAgc2Vjb25kKVxyXG4gIChtYXAgKGZuKiBbcDFfXzQxNjgwI10gKHNvcnQtYnkgOmNvbHVtbiBwMV9fNDE2ODAjKSkpXHJcbiAgKGFwcGx5IGNvbmNhdCkpKVxyXG4ifSB7OnN5bSBmb3J3YXJkLWluZGVudC1mb3ItbGluZSwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG51bWJlciBvZiBzcGFjZXMgdGhlIGdpdmVuIGxpbmUgc2hvdWxkIGJlIGluZGVudGVkIGZvcndhcmQuIiwgOmFyZ2xpc3RzIChbdGFncyBsaW5lIGN1cnJlbnQtaW5kZW50XSl9LCA6c291cmNlICIoZGVmblxyXG4gZm9yd2FyZC1pbmRlbnQtZm9yLWxpbmVcclxuIFwiUmV0dXJucyB0aGUgbnVtYmVyIG9mIHNwYWNlcyB0aGUgZ2l2ZW4gbGluZSBzaG91bGQgYmUgaW5kZW50ZWQgZm9yd2FyZC5cIlxyXG4gW3RhZ3MgbGluZSBjdXJyZW50LWluZGVudF1cclxuIChsZXRcclxuICBbdGFncy1iZWZvcmUgKGdldC10YWdzLWJlZm9yZS1saW5lIHRhZ3MgbGluZSldXHJcbiAgKGxvb3BcclxuICAgW3RhZ3MgKHJldmVyc2UgdGFncy1iZWZvcmUpIG1heC10YWItc3RvcCAtMSB0YWItc3RvcCAtMV1cclxuICAgKGlmLWxldFxyXG4gICAgW3RhZyAoZmlyc3QgdGFncyldXHJcbiAgICAoaWYtbGV0XHJcbiAgICAgW2luZGVudCAoOmluZGVudCB0YWcpXVxyXG4gICAgIChjb25kXHJcbiAgICAgICg8PSBpbmRlbnQgY3VycmVudC1pbmRlbnQpXHJcbiAgICAgIChyZWN1ciBbXSBtYXgtdGFiLXN0b3AgdGFiLXN0b3ApXHJcbiAgICAgIChvciAobmVnPyBtYXgtdGFiLXN0b3ApICg8IGN1cnJlbnQtaW5kZW50IGluZGVudCBtYXgtdGFiLXN0b3ApKVxyXG4gICAgICAocmVjdXJcclxuICAgICAgIChyZXN0IHRhZ3MpXHJcbiAgICAgICAoaW5jIGluZGVudClcclxuICAgICAgIChpZiAoOnNraXAtaW5kZW50PyB0YWcpIHRhYi1zdG9wIGluZGVudCkpXHJcbiAgICAgIDplbHNlXHJcbiAgICAgIChyZWN1ciAocmVzdCB0YWdzKSBtYXgtdGFiLXN0b3AgdGFiLXN0b3ApKVxyXG4gICAgIChyZWN1ciAocmVzdCB0YWdzKSBtYXgtdGFiLXN0b3AgdGFiLXN0b3ApKVxyXG4gICAgKGlmICg8PSB0YWItc3RvcCBjdXJyZW50LWluZGVudCkgKCsgY3VycmVudC1pbmRlbnQgMikgdGFiLXN0b3ApKSkpKVxyXG4ifSB7OnN5bSB0YWctbWFwLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHRyYW5zaWVudCBtYXAgY29udGFpbmluZyB0aGUgdGFncywgb3JnYW5pemVkIGJ5IGxpbmUgbnVtYmVyLiIsIDphcmdsaXN0cyAoW3Rva2VuIHJlc3VsdHMtbWFwIHBhcmVudC1pbmRlbnRdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB0YWctbWFwXHJcbiBcIlJldHVybnMgYSB0cmFuc2llbnQgbWFwIGNvbnRhaW5pbmcgdGhlIHRhZ3MsIG9yZ2FuaXplZCBieSBsaW5lIG51bWJlci5cIlxyXG4gW3Rva2VuIHJlc3VsdHMtbWFwIHBhcmVudC1pbmRlbnRdXHJcbiAoY29uZFxyXG4gIChpbnN0YW5jZT8gRXhjZXB0aW9uSW5mbyB0b2tlbilcclxuICAobGV0XHJcbiAgIFt7OmtleXMgW2xpbmUgY29sXX0gKGV4LWRhdGEgdG9rZW4pXVxyXG4gICAoYXNzb2MhXHJcbiAgICByZXN1bHRzLW1hcFxyXG4gICAgbGluZVxyXG4gICAgKGNvbmpcclxuICAgICAoZ2V0IHJlc3VsdHMtbWFwIGxpbmUgW10pXHJcbiAgICAgezplcnJvcj8gdHJ1ZSxcclxuICAgICAgOm1lc3NhZ2UgIz8oOmNsaiAoLmdldE1lc3NhZ2UgdG9rZW4pIDpjbGpzICguLW1lc3NhZ2UgdG9rZW4pKSxcclxuICAgICAgOmNvbHVtbiBjb2x9KSkpXHJcbiAgKGFuZCAoY29sbD8gdG9rZW4pIChuaWw/IChtZXRhIHRva2VuKSkpXHJcbiAgKHJlZHVjZVxyXG4gICAoZm4gW3Jlc3VsdHMtbWFwIHRva2VuXSAodGFnLW1hcCB0b2tlbiByZXN1bHRzLW1hcCBwYXJlbnQtaW5kZW50KSlcclxuICAgcmVzdWx0cy1tYXBcclxuICAgdG9rZW4pXHJcbiAgOmVsc2VcclxuICAobGV0XHJcbiAgIFt7OmtleXMgW2xpbmUgY29sdW1uIGVuZC1saW5lIGVuZC1jb2x1bW5dfSAobWV0YSB0b2tlbildXHJcbiAgIChpZi1ub3RcclxuICAgIChhbmQgbGluZSBjb2x1bW4gZW5kLWxpbmUgZW5kLWNvbHVtbilcclxuICAgIHJlc3VsdHMtbWFwXHJcbiAgICAobGV0XHJcbiAgICAgW3ZhbHVlXHJcbiAgICAgICh1bndyYXAtdmFsdWUgdG9rZW4pXHJcbiAgICAgIGluZGVudFxyXG4gICAgICAobWF4IHBhcmVudC1pbmRlbnQgKGRlYyBjb2x1bW4pKVxyXG4gICAgICB0b3AtbGV2ZWw/XHJcbiAgICAgICg9IHBhcmVudC1pbmRlbnQgMCldXHJcbiAgICAgKGlmXHJcbiAgICAgIChjb2xsPyB2YWx1ZSlcclxuICAgICAgKGxldFxyXG4gICAgICAgW2RlbGltaXRlci1zaXplXHJcbiAgICAgICAgKGlmIChzZXQ/IHZhbHVlKSAyIDEpXHJcbiAgICAgICAgbmV3LWVuZC1jb2x1bW5cclxuICAgICAgICAoKyBjb2x1bW4gZGVsaW1pdGVyLXNpemUpXHJcbiAgICAgICAgYWRqdXN0bWVudFxyXG4gICAgICAgIChhZGp1c3QtaW5kZW50IHZhbHVlKVxyXG4gICAgICAgIG5leHQtbGluZS1pbmRlbnRcclxuICAgICAgICAoKyAoZGVjIGNvbHVtbikgZGVsaW1pdGVyLXNpemUgYWRqdXN0bWVudCldXHJcbiAgICAgICAoYXMtPlxyXG4gICAgICAgIHJlc3VsdHMtbWFwXHJcbiAgICAgICAgJFxyXG4gICAgICAgIChhc3NvYyFcclxuICAgICAgICAgJFxyXG4gICAgICAgICBsaW5lXHJcbiAgICAgICAgICgtPlxyXG4gICAgICAgICAgKGdldCAkIGxpbmUgW10pXHJcbiAgICAgICAgICAoY29ualxyXG4gICAgICAgICAgIHs6YmVnaW4/IHRydWUsXHJcbiAgICAgICAgICAgIDpjb2x1bW4gY29sdW1uLFxyXG4gICAgICAgICAgICA6dmFsdWUgdmFsdWUsXHJcbiAgICAgICAgICAgIDppbmRlbnQgaW5kZW50LFxyXG4gICAgICAgICAgICA6dG9wLWxldmVsPyB0b3AtbGV2ZWw/LFxyXG4gICAgICAgICAgICA6c2tpcC1pbmRlbnQ/IHRydWV9KVxyXG4gICAgICAgICAgKGNvbmogezpkZWxpbWl0ZXI/IHRydWUsIDpjb2x1bW4gY29sdW1ufSlcclxuICAgICAgICAgIChjb25qXHJcbiAgICAgICAgICAgezplbmQ/IHRydWUsXHJcbiAgICAgICAgICAgIDpjb2x1bW4gbmV3LWVuZC1jb2x1bW4sXHJcbiAgICAgICAgICAgIDpuZXh0LWxpbmUtaW5kZW50IG5leHQtbGluZS1pbmRlbnQsXHJcbiAgICAgICAgICAgIDppbmRlbnQgbmV4dC1saW5lLWluZGVudH0pKSlcclxuICAgICAgICAocmVkdWNlXHJcbiAgICAgICAgIChmblxyXG4gICAgICAgICAgW3Jlc3VsdHMtbWFwIHRva2VuXVxyXG4gICAgICAgICAgKHRhZy1tYXAgdG9rZW4gcmVzdWx0cy1tYXAgbmV4dC1saW5lLWluZGVudCkpXHJcbiAgICAgICAgICRcclxuICAgICAgICAgdmFsdWUpXHJcbiAgICAgICAgKGFzc29jIVxyXG4gICAgICAgICAkXHJcbiAgICAgICAgIGVuZC1saW5lXHJcbiAgICAgICAgICgtPlxyXG4gICAgICAgICAgKGdldCAkIGVuZC1saW5lIFtdKVxyXG4gICAgICAgICAgKGNvbmogezpkZWxpbWl0ZXI/IHRydWUsIDpjb2x1bW4gKGRlYyBlbmQtY29sdW1uKX0pXHJcbiAgICAgICAgICAoY29ualxyXG4gICAgICAgICAgIHs6ZW5kPyB0cnVlLFxyXG4gICAgICAgICAgICA6Y29sdW1uIGVuZC1jb2x1bW4sXHJcbiAgICAgICAgICAgIDpuZXh0LWxpbmUtaW5kZW50IHBhcmVudC1pbmRlbnR9KVxyXG4gICAgICAgICAgKGNvbmogezplbmQ/IHRydWUsIDpjb2x1bW4gZW5kLWNvbHVtbn0pKSkpKVxyXG4gICAgICAoYXMtPlxyXG4gICAgICAgcmVzdWx0cy1tYXBcclxuICAgICAgICRcclxuICAgICAgIChhc3NvYyFcclxuICAgICAgICAkXHJcbiAgICAgICAgbGluZVxyXG4gICAgICAgIChjb25qXHJcbiAgICAgICAgIChnZXQgJCBsaW5lIFtdKVxyXG4gICAgICAgICB7OmJlZ2luPyB0cnVlLFxyXG4gICAgICAgICAgOmNvbHVtbiBjb2x1bW4sXHJcbiAgICAgICAgICA6dmFsdWUgdmFsdWUsXHJcbiAgICAgICAgICA6aW5kZW50IGluZGVudCxcclxuICAgICAgICAgIDp0b3AtbGV2ZWw/IHRvcC1sZXZlbD99KSlcclxuICAgICAgIChhc3NvYyFcclxuICAgICAgICAkXHJcbiAgICAgICAgZW5kLWxpbmVcclxuICAgICAgICAoY29ualxyXG4gICAgICAgICAoZ2V0ICQgZW5kLWxpbmUgW10pXHJcbiAgICAgICAgIHs6ZW5kPyB0cnVlLCA6Y29sdW1uIGVuZC1jb2x1bW59KSkpKSkpKSkpXHJcbiJ9IHs6c3ltIGJhY2staW5kZW50LWZvci1saW5lLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbnVtYmVyIG9mIHNwYWNlcyB0aGUgZ2l2ZW4gbGluZSBzaG91bGQgYmUgaW5kZW50ZWQgYmFjay4iLCA6YXJnbGlzdHMgKFt0YWdzIGxpbmUgY3VycmVudC1pbmRlbnRdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBiYWNrLWluZGVudC1mb3ItbGluZVxyXG4gXCJSZXR1cm5zIHRoZSBudW1iZXIgb2Ygc3BhY2VzIHRoZSBnaXZlbiBsaW5lIHNob3VsZCBiZSBpbmRlbnRlZCBiYWNrLlwiXHJcbiBbdGFncyBsaW5lIGN1cnJlbnQtaW5kZW50XVxyXG4gKGxldFxyXG4gIFt0YWdzLWJlZm9yZSAoZ2V0LXRhZ3MtYmVmb3JlLWxpbmUgdGFncyBsaW5lKV1cclxuICAobG9vcFxyXG4gICBbdGFncyAocmV2ZXJzZSB0YWdzLWJlZm9yZSkgbWF4LXRhYi1zdG9wIGN1cnJlbnQtaW5kZW50XVxyXG4gICAoaWYtbGV0XHJcbiAgICBbdGFnIChmaXJzdCB0YWdzKV1cclxuICAgIChpZi1sZXRcclxuICAgICBbaW5kZW50ICg6aW5kZW50IHRhZyldXHJcbiAgICAgKGlmXHJcbiAgICAgICg8IGluZGVudCBtYXgtdGFiLXN0b3ApXHJcbiAgICAgIChpZiAoOnNraXAtaW5kZW50PyB0YWcpIChyZWN1ciAocmVzdCB0YWdzKSAoaW5jIGluZGVudCkpIGluZGVudClcclxuICAgICAgKHJlY3VyIChyZXN0IHRhZ3MpIG1heC10YWItc3RvcCkpXHJcbiAgICAgKHJlY3VyIChyZXN0IHRhZ3MpIG1heC10YWItc3RvcCkpXHJcbiAgICAoLSBjdXJyZW50LWluZGVudCAyKSkpKSlcclxuIn0pLCBleHBvdW5kLnBhdGhzICh7OnN5bSBwYXRocy10by12YWx1ZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmb3JtIHZhbCBwYXRoIHBhdGhzXSl9LCA6c291cmNlICIoZGVmblxyXG4gcGF0aHMtdG8tdmFsdWVcclxuIFtmb3JtIHZhbCBwYXRoIHBhdGhzXVxyXG4gKGNvbmRcclxuICAoPSBmb3JtIHZhbClcclxuICAoY29uaiBwYXRocyBwYXRoKVxyXG4gIChvciAoc2VxdWVudGlhbD8gZm9ybSkgKHNldD8gZm9ybSkpXHJcbiAgKHJlZHVjZVxyXG4gICAoZm4gW3BzIFt4IGldXSAocGF0aHMtdG8tdmFsdWUgeCB2YWwgKGNvbmogcGF0aCBpKSBwcykpXHJcbiAgIHBhdGhzXHJcbiAgIChtYXAgdmVjdG9yIGZvcm0gKHJhbmdlKSkpXHJcbiAgKG1hcD8gZm9ybSlcclxuICAocmVkdWNlXHJcbiAgIChmblxyXG4gICAgW3BzIFtrIHZdXVxyXG4gICAgKC0+PlxyXG4gICAgIHBzXHJcbiAgICAgKHBhdGhzLXRvLXZhbHVlIGsgdmFsIChjb25qIHBhdGggKC0+S2V5UGF0aFNlZ21lbnQgaykpKVxyXG4gICAgIChwYXRocy10by12YWx1ZSB2IHZhbCAoY29uaiBwYXRoIGspKSkpXHJcbiAgIHBhdGhzXHJcbiAgIGZvcm0pXHJcbiAgOmVsc2VcclxuICBwYXRocykpXHJcbiJ9IHs6c3ltIGVxdWFsaXNoPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4IHldKX0sIDpzb3VyY2UgIihkZWZuIGVxdWFsaXNoPyBbeCB5XSAob3IgKD0geCB5KSAoZm4tZXF1YWwgeCB5KSAoYm90aC1uYW4/IHggeSkpKVxyXG4ifSB7OnN5bSBpbi13aXRoLWtwcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmb3JtIHZhbCBpbiBpbiddKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBpbi13aXRoLWtwc1xyXG4gW2Zvcm0gdmFsIGluIGluJ11cclxuIChsZXRcclxuICBbcmVzIChpbi13aXRoLWtwcyogZm9ybSB2YWwgaW4gaW4nKV1cclxuICAoaWYgKD0gOmV4cG91bmQucGF0aHMvbm90LWZvdW5kIHJlcykgbmlsIHJlcykpKVxyXG4ifSB7OnN5bSB2YWx1ZS1pbiwgOm1ldGEgezpkb2MgIlNpbWlsYXIgdG8gZ2V0LWluLCBidXQgd29ya3Mgd2l0aCBwYXRocyB0aGF0IHJlZmVyZW5jZSBtYXAga2V5cyIsIDphcmdsaXN0cyAoW2Zvcm0gaW5dKX0sIDpzb3VyY2UgIihkZWZuXHJcbiB2YWx1ZS1pblxyXG4gXCJTaW1pbGFyIHRvIGdldC1pbiwgYnV0IHdvcmtzIHdpdGggcGF0aHMgdGhhdCByZWZlcmVuY2UgbWFwIGtleXNcIlxyXG4gW2Zvcm0gaW5dXHJcbiAoaWZcclxuICAobmlsPyBpbilcclxuICBmb3JtXHJcbiAgKGxldFxyXG4gICBbW2sgJiByc3RdIGluXVxyXG4gICAoY29uZFxyXG4gICAgKGVtcHR5PyBpbilcclxuICAgIGZvcm1cclxuICAgIChhbmQgKG1hcD8gZm9ybSkgKGtwcz8gaykpXHJcbiAgICAocmVjdXIgKDprZXkgaykgcnN0KVxyXG4gICAgKGFuZCAobWFwPyBmb3JtKSAoa3Zwcz8gaykpXHJcbiAgICAocmVjdXIgKG50aCAoc2VxIGZvcm0pICg6aWR4IGspKSByc3QpXHJcbiAgICAoYXNzb2NpYXRpdmU/IGZvcm0pXHJcbiAgICAocmVjdXIgKGdldCBmb3JtIGspIHJzdClcclxuICAgIChhbmQgKGludD8gaykgKHNlcWFibGU/IGZvcm0pKVxyXG4gICAgKHJlY3VyIChudGggKHNlcSBmb3JtKSBrKSByc3QpKSkpKVxyXG4ifSB7OnN5bSBrdnBzPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiBrdnBzPyBbeF0gKGluc3RhbmNlPyBLZXlWYWx1ZVBhdGhTZWdtZW50IHgpKVxyXG4ifSB7OnN5bSBpbi13aXRoLWtwcy1pbnRzLWFyZS1rZXlzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2Zvcm0gdmFsIGluIGluJ10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGluLXdpdGgta3BzLWludHMtYXJlLWtleXNcclxuIFtmb3JtIHZhbCBpbiBpbiddXHJcbiAoaWZcclxuICAoPSBmb3JtIDpleHBvdW5kLnBhdGhzL25vdC1mb3VuZClcclxuICBmb3JtXHJcbiAgKGxldFxyXG4gICBbW2sgJiByc3RdIGluXVxyXG4gICAoY29uZFxyXG4gICAgKGFuZCAoZW1wdHk/IGluKSAoZXF1YWxpc2g/IGZvcm0gdmFsKSlcclxuICAgIGluJ1xyXG4gICAgKGFzc29jaWF0aXZlPyBmb3JtKVxyXG4gICAgKGluLXdpdGgta3BzKlxyXG4gICAgIChnZXQgZm9ybSBrIDpleHBvdW5kLnBhdGhzL25vdC1mb3VuZClcclxuICAgICB2YWxcclxuICAgICByc3RcclxuICAgICAoY29uaiBpbicgaykpXHJcbiAgICAoYW5kIChpbnQ/IGspIChzZXFhYmxlPyBmb3JtKSlcclxuICAgIChpbi13aXRoLWtwcypcclxuICAgICAobnRoIChzZXEgZm9ybSkgayA6ZXhwb3VuZC5wYXRocy9ub3QtZm91bmQpXHJcbiAgICAgdmFsXHJcbiAgICAgcnN0XHJcbiAgICAgKGNvbmogaW4nIGspKVxyXG4gICAgOmVsc2VcclxuICAgIDpleHBvdW5kLnBhdGhzL25vdC1mb3VuZCkpKSlcclxuIn0gezpzeW0gY29tcGFyZS1wYXRoLXNlZ21lbnQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeCB5XSl9LCA6c291cmNlICIoZGVmblxyXG4gY29tcGFyZS1wYXRoLXNlZ21lbnRcclxuIFt4IHldXHJcbiAoY29uZFxyXG4gIChhbmQgKGludD8geCkgKGt2cHM/IHkpKVxyXG4gIChjb21wYXJlIHggKDppZHggeSkpXHJcbiAgKGFuZCAoa3Zwcz8geCkgKGludD8geSkpXHJcbiAgKGNvbXBhcmUgKDppZHggeCkgeSlcclxuICAoYW5kIChrcHM/IHgpIChub3QgKGtwcz8geSkpKVxyXG4gIC0xXHJcbiAgKGFuZCAobm90IChrcHM/IHgpKSAoa3BzPyB5KSlcclxuICAxXHJcbiAgKGFuZCAodmVjdG9yPyB4KSAodmVjdG9yPyB5KSlcclxuICAoY29tcGFyZS1wYXRocyB4IHkpXHJcbiAgOmVsc2VcclxuICAoY29tcGFyZSB4IHkpKSlcclxuIn0gezpzeW0ga3Zwcy1wYXRoPywgOm1ldGEgezpkb2MgIlRydWUgaWYgcGF0aCBwb2ludHMgdG8gYSBrZXkvdmFsdWUgcGFpciIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBrdnBzLXBhdGg/XHJcbiBcIlRydWUgaWYgcGF0aCBwb2ludHMgdG8gYSBrZXkvdmFsdWUgcGFpclwiXHJcbiBbeF1cclxuIChib29sZWFuIChhbmQgKHZlY3Rvcj8geCkgKHNvbWUga3Zwcz8geCkpKSlcclxuIn0gezpzeW0gY29tcGFyZS1wYXRocywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwYXRoMSBwYXRoMl0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGNvbXBhcmUtcGF0aHNcclxuIFtwYXRoMSBwYXRoMl1cclxuICgtPj4gKG1hcCBjb21wYXJlLXBhdGgtc2VnbWVudCBwYXRoMSBwYXRoMikgKHJlbW92ZSAjezB9KSBmaXJzdCkpXHJcbiJ9IHs6c3ltIGluLXdpdGgta3BzLWZ1enp5LW1hdGNoLWZvci1yZWdleC1mYWlsdXJlcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmb3JtIHZhbCBpbiBpbiddKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBpbi13aXRoLWtwcy1mdXp6eS1tYXRjaC1mb3ItcmVnZXgtZmFpbHVyZXNcclxuIFtmb3JtIHZhbCBpbiBpbiddXHJcbiAoaWZcclxuICAoPSBmb3JtIDpleHBvdW5kLnBhdGhzL25vdC1mb3VuZClcclxuICBmb3JtXHJcbiAgKGxldFxyXG4gICBbW2sgJiByc3RdIGluXVxyXG4gICAoY29uZFxyXG4gICAgKGFuZCAoZW1wdHk/IGluKSAoc2VxYWJsZT8gZm9ybSkgKD0gdmFsICcoKSkpXHJcbiAgICBpbidcclxuICAgIChhbmQgKGVtcHR5PyBpbikgKGFuZCAoc2VxPyB2YWwpICg9IGZvcm0gKGZpcnN0IHZhbCkpKSlcclxuICAgIGluJ1xyXG4gICAgKGFuZCAobmF0LWludD8gaykgKHNlcWFibGU/IGZvcm0pKVxyXG4gICAgKGluLXdpdGgta3BzKlxyXG4gICAgIChudGggKHNlcSBmb3JtKSBrIDpleHBvdW5kLnBhdGhzL25vdC1mb3VuZClcclxuICAgICB2YWxcclxuICAgICByc3RcclxuICAgICAoY29uaiBpbicgaykpXHJcbiAgICA6ZWxzZVxyXG4gICAgOmV4cG91bmQucGF0aHMvbm90LWZvdW5kKSkpKVxyXG4ifSB7OnN5bSBpbi13aXRoLWtwcyosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZm9ybSB2YWwgaW4gaW4nXSl9LCA6c291cmNlICIoZGVmblxyXG4gaW4td2l0aC1rcHMqXHJcbiBbZm9ybSB2YWwgaW4gaW4nXVxyXG4gKGlmXHJcbiAgKGZuPyBmb3JtKVxyXG4gIGluJ1xyXG4gIChsZXRcclxuICAgW2JyMSAoaW4td2l0aC1rcHMtaW50cy1hcmUta2V5LXZhbHVlLWluZGljYXRvcnMgZm9ybSB2YWwgaW4gaW4nKV1cclxuICAgKGlmXHJcbiAgICAobm90PSA6ZXhwb3VuZC5wYXRocy9ub3QtZm91bmQgYnIxKVxyXG4gICAgYnIxXHJcbiAgICAobGV0XHJcbiAgICAgW2JyMiAoaW4td2l0aC1rcHMtbWFwcy1hcy1zZXFzIGZvcm0gdmFsIGluIGluJyldXHJcbiAgICAgKGlmXHJcbiAgICAgIChub3Q9IDpleHBvdW5kLnBhdGhzL25vdC1mb3VuZCBicjIpXHJcbiAgICAgIGJyMlxyXG4gICAgICAobGV0XHJcbiAgICAgICBbYnIzIChpbi13aXRoLWtwcy1pbnRzLWFyZS1rZXlzIGZvcm0gdmFsIGluIGluJyldXHJcbiAgICAgICAoaWZcclxuICAgICAgICAobm90PSA6ZXhwb3VuZC5wYXRocy9ub3QtZm91bmQgYnIzKVxyXG4gICAgICAgIGJyM1xyXG4gICAgICAgIChsZXRcclxuICAgICAgICAgW2JyNFxyXG4gICAgICAgICAgKGluLXdpdGgta3BzLWZ1enp5LW1hdGNoLWZvci1yZWdleC1mYWlsdXJlcyBmb3JtIHZhbCBpbiBpbicpXVxyXG4gICAgICAgICAoaWZcclxuICAgICAgICAgIChub3Q9IDpleHBvdW5kLnBhdGhzL25vdC1mb3VuZCBicjQpXHJcbiAgICAgICAgICBicjRcclxuICAgICAgICAgIDpleHBvdW5kLnBhdGhzL25vdC1mb3VuZCkpKSkpKSkpKSlcclxuIn0gezpzeW0ga3BzLXBhdGg/LCA6bWV0YSB7OmRvYyAiVHJ1ZSBpZiBwYXRoIHBvaW50cyB0byBhIGtleSIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBrcHMtcGF0aD9cclxuIFwiVHJ1ZSBpZiBwYXRoIHBvaW50cyB0byBhIGtleVwiXHJcbiBbeF1cclxuIChib29sZWFuIChhbmQgKHZlY3Rvcj8geCkgKGtwcz8gKGxhc3QgeCkpKSkpXHJcbiJ9IHs6c3ltIGluLXdpdGgta3BzLW1hcHMtYXMtc2VxcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmb3JtIHZhbCBpbiBpbiddKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBpbi13aXRoLWtwcy1tYXBzLWFzLXNlcXNcclxuIFtmb3JtIHZhbCBpbiBpbiddXHJcbiAobGV0XHJcbiAgW1trICYgcnN0XSBpbiBbaWR4ICYgcnN0Ml0gcnN0XVxyXG4gIChjb25kXHJcbiAgICg9IDpleHBvdW5kLnBhdGhzL25vdC1mb3VuZCBmb3JtKVxyXG4gICA6ZXhwb3VuZC5wYXRocy9ub3QtZm91bmRcclxuICAgKGFuZCAoZW1wdHk/IGluKSAoZXF1YWxpc2g/IGZvcm0gdmFsKSlcclxuICAgaW4nXHJcbiAgIChhbmQgKG1hcD8gZm9ybSkgKG5hdC1pbnQ/IGspICg8IGsgKGNvdW50IChzZXEgZm9ybSkpKSlcclxuICAgKGluLXdpdGgta3BzKlxyXG4gICAgKG50aCAoc2VxIGZvcm0pIGspXHJcbiAgICB2YWxcclxuICAgIHJzdFxyXG4gICAgKGNvbmogaW4nICgtPktleVZhbHVlUGF0aFNlZ21lbnQgaykpKVxyXG4gICAoYW5kXHJcbiAgICAobWFwPyBmb3JtKVxyXG4gICAgKG5hdC1pbnQ/IGspXHJcbiAgICAoaW50PyBpZHgpXHJcbiAgICAoPCBrIChjb3VudCAoc2VxIGZvcm0pKSlcclxuICAgICg8IGlkeCAoY291bnQgKG50aCAoc2VxIGZvcm0pIGspKSkpXHJcbiAgIChpbi13aXRoLWtwcypcclxuICAgIChudGggKG50aCAoc2VxIGZvcm0pIGspIGlkeClcclxuICAgIHZhbFxyXG4gICAgcnN0MlxyXG4gICAgKGNvbmogaW4nICgtPktleVZhbHVlUGF0aFNlZ21lbnQgaykgaWR4KSlcclxuICAgOmVsc2VcclxuICAgOmV4cG91bmQucGF0aHMvbm90LWZvdW5kKSkpXHJcbiJ9IHs6c3ltIHByZWZpeC1wYXRoPywgOm1ldGEgezpkb2MgIlRydWUgaWYgcGFydGlhbC1wYXRoIGlzIGEgcHJlZml4IG9mIGZ1bGwtcGF0aC4iLCA6YXJnbGlzdHMgKFtwYXJ0aWFsLXBhdGggZnVsbC1wYXRoXSl9LCA6c291cmNlICIoZGVmblxyXG4gcHJlZml4LXBhdGg/XHJcbiBcIlRydWUgaWYgcGFydGlhbC1wYXRoIGlzIGEgcHJlZml4IG9mIGZ1bGwtcGF0aC5cIlxyXG4gW3BhcnRpYWwtcGF0aCBmdWxsLXBhdGhdXHJcbiAoYW5kXHJcbiAgKDwgKGNvdW50IHBhcnRpYWwtcGF0aCkgKGNvdW50IGZ1bGwtcGF0aCkpXHJcbiAgKD0gcGFydGlhbC1wYXRoIChzdWJ2ZWMgZnVsbC1wYXRoIDAgKGNvdW50IHBhcnRpYWwtcGF0aCkpKSkpXHJcbiJ9IHs6c3ltIGluLXdpdGgta3BzLWludHMtYXJlLWtleS12YWx1ZS1pbmRpY2F0b3JzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2Zvcm0gdmFsIGluIGluJ10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGluLXdpdGgta3BzLWludHMtYXJlLWtleS12YWx1ZS1pbmRpY2F0b3JzXHJcbiBbZm9ybSB2YWwgaW4gaW4nXVxyXG4gKGlmXHJcbiAgKD0gZm9ybSA6ZXhwb3VuZC5wYXRocy9ub3QtZm91bmQpXHJcbiAgZm9ybVxyXG4gIChsZXRcclxuICAgW1trICYgcnN0XSBpbiBbaWR4ICYgcnN0Ml0gcnN0XVxyXG4gICAoY29uZFxyXG4gICAgKGFuZCAoZW1wdHk/IGluKSAoZXF1YWxpc2g/IGZvcm0gdmFsKSlcclxuICAgIGluJ1xyXG4gICAgKGFuZCAobWFwPyBmb3JtKSAoPSAwIGlkeCkpXHJcbiAgICAoaW4td2l0aC1rcHMqIGsgdmFsIHJzdDIgKGNvbmogaW4nICgtPktleVBhdGhTZWdtZW50IGspKSlcclxuICAgIChhbmQgKG1hcD8gZm9ybSkgKD0gMSBpZHgpKVxyXG4gICAgKGluLXdpdGgta3BzKlxyXG4gICAgIChnZXQgZm9ybSBrIDpleHBvdW5kLnBhdGhzL25vdC1mb3VuZClcclxuICAgICB2YWxcclxuICAgICByc3QyXHJcbiAgICAgKGNvbmogaW4nIGspKVxyXG4gICAgOmVsc2VcclxuICAgIDpleHBvdW5kLnBhdGhzL25vdC1mb3VuZCkpKSlcclxuIn0gezpzeW0gZm4tZXF1YWwsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeCB5XSl9LCA6c291cmNlICIoZGVmbiBmbi1lcXVhbCBbeCB5XSAoYW5kIChmbj8geCkgKGZuPyB5KSAoPSAocHItc3RyIHgpIChwci1zdHIgeSkpKSlcclxuIn0gezpzeW0ga3BzPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiBrcHM/IFt4XSAoaW5zdGFuY2U/IEtleVBhdGhTZWdtZW50IHgpKVxyXG4ifSB7OnN5bSBib3RoLW5hbj8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeCB5XSl9LCA6c291cmNlICIoZGVmbiBib3RoLW5hbj8gW3ggeV0gKGFuZCAodXRpbC9uYW4/IHgpICh1dGlsL25hbj8geSkpKVxyXG4ifSksIGNsanMuY29yZS5hc3luYy5pbXBsLnRpbWVycyAoezpzeW0gdGltZW91dCwgOm1ldGEgezpkb2MgInJldHVybnMgYSBjaGFubmVsIHRoYXQgd2lsbCBjbG9zZSBhZnRlciBtc2VjcyIsIDphcmdsaXN0cyAoW21zZWNzXSl9LCA6c291cmNlICIoZGVmblxyXG4gdGltZW91dFxyXG4gXCJyZXR1cm5zIGEgY2hhbm5lbCB0aGF0IHdpbGwgY2xvc2UgYWZ0ZXIgbXNlY3NcIlxyXG4gW21zZWNzXVxyXG4gKGxldFxyXG4gIFt0aW1lb3V0XHJcbiAgICgrICgudmFsdWVPZiAoanMvRGF0ZS4pKSBtc2VjcylcclxuICAgbWVcclxuICAgKC5jZWlsaW5nRW50cnkgdGltZW91dHMtbWFwIHRpbWVvdXQpXVxyXG4gIChvclxyXG4gICAod2hlblxyXG4gICAgKGFuZCBtZSAoPCAoLi1rZXkgbWUpICgrIHRpbWVvdXQgVElNRU9VVF9SRVNPTFVUSU9OX01TKSkpXHJcbiAgICAoLi12YWwgbWUpKVxyXG4gICAobGV0XHJcbiAgICBbdGltZW91dC1jaGFubmVsIChjaGFubmVscy9jaGFuIG5pbCldXHJcbiAgICAoLnB1dCB0aW1lb3V0cy1tYXAgdGltZW91dCB0aW1lb3V0LWNoYW5uZWwpXHJcbiAgICAoZGlzcGF0Y2gvcXVldWUtZGVsYXlcclxuICAgICAoZm5cclxuICAgICAgW11cclxuICAgICAgKC5yZW1vdmUgdGltZW91dHMtbWFwIHRpbWVvdXQpXHJcbiAgICAgIChpbXBsL2Nsb3NlISB0aW1lb3V0LWNoYW5uZWwpKVxyXG4gICAgIG1zZWNzKVxyXG4gICAgdGltZW91dC1jaGFubmVsKSkpKVxyXG4ifSB7OnN5bSByYW5kb20tbGV2ZWwsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbXSBbbGV2ZWxdXX0sIDpzb3VyY2UgIihkZWZuXHJcbiByYW5kb20tbGV2ZWxcclxuIChbXSAocmFuZG9tLWxldmVsIDApKVxyXG4gKFtsZXZlbF1cclxuICAoaWZcclxuICAgKGFuZCAoPCAoLnJhbmRvbSBqcy9NYXRoKSBQKSAoPCBsZXZlbCBNQVhfTEVWRUwpKVxyXG4gICAocmVjdXIgKGluYyBsZXZlbCkpXHJcbiAgIGxldmVsKSkpXHJcbiJ9IHs6c3ltIHNraXAtbGlzdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuIHNraXAtbGlzdCBbXSAoU2tpcExpc3QuIChza2lwLWxpc3Qtbm9kZSAwKSAwKSlcclxuIn0gezpzeW0gTUFYX0xFVkVMLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBNQVhfTEVWRUwgMTUpXHJcbiJ9IHs6c3ltIFAsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIFAgKC8gMSAyKSlcclxuIn0gezpzeW0gdGltZW91dHMtbWFwLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiB0aW1lb3V0cy1tYXAgKHNraXAtbGlzdCkpXHJcbiJ9IHs6c3ltIHNraXAtbGlzdC1ub2RlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW2xldmVsXSBbayB2IGxldmVsXV19LCA6c291cmNlICIoZGVmblxyXG4gc2tpcC1saXN0LW5vZGVcclxuIChbbGV2ZWxdIChza2lwLWxpc3Qtbm9kZSBuaWwgbmlsIGxldmVsKSlcclxuIChbayB2IGxldmVsXVxyXG4gIChsZXRcclxuICAgW2FyciAobWFrZS1hcnJheSAoaW5jIGxldmVsKSldXHJcbiAgIChsb29wXHJcbiAgICBbaSAwXVxyXG4gICAgKHdoZW4gKDwgaSAoYWxlbmd0aCBhcnIpKSAoYXNldCBhcnIgaSBuaWwpIChyZWN1ciAoaW5jIGkpKSkpXHJcbiAgIChTa2lwTGlzdE5vZGUuIGsgdiBhcnIpKSkpXHJcbiJ9IHs6c3ltIGxlYXN0LWdyZWF0ZXItbm9kZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1t4IGsgbGV2ZWxdIFt4IGsgbGV2ZWwgdXBkYXRlXV19LCA6c291cmNlICIoZGVmblxyXG4gbGVhc3QtZ3JlYXRlci1ub2RlXHJcbiAoW3ggayBsZXZlbF0gKGxlYXN0LWdyZWF0ZXItbm9kZSB4IGsgbGV2ZWwgbmlsKSlcclxuIChbeCBrIGxldmVsIHVwZGF0ZV1cclxuICAoaWYtbm90XHJcbiAgIChuZWc/IGxldmVsKVxyXG4gICAobGV0XHJcbiAgICBbeFxyXG4gICAgIChsb29wXHJcbiAgICAgIFt4IHhdXHJcbiAgICAgIChpZi1sZXRcclxuICAgICAgIFt4J1xyXG4gICAgICAgICh3aGVuXHJcbiAgICAgICAgICg8IGxldmVsIChhbGVuZ3RoICguLWZvcndhcmQgeCkpKVxyXG4gICAgICAgICAoYWdldCAoLi1mb3J3YXJkIHgpIGxldmVsKSldXHJcbiAgICAgICAoaWYgKDwgKC4ta2V5IHgnKSBrKSAocmVjdXIgeCcpIHgpXHJcbiAgICAgICB4KSldXHJcbiAgICAod2hlbi1ub3QgKG5pbD8gdXBkYXRlKSAoYXNldCB1cGRhdGUgbGV2ZWwgeCkpXHJcbiAgICAocmVjdXIgeCBrIChkZWMgbGV2ZWwpIHVwZGF0ZSkpXHJcbiAgIHgpKSlcclxuIn0gezpzeW0gVElNRU9VVF9SRVNPTFVUSU9OX01TLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBUSU1FT1VUX1JFU09MVVRJT05fTVMgMTApXHJcbiJ9KSwgZXhwb3VuZC5wcm9ibGVtcyAoezpzeW0gaGlnaGxpZ2h0LWxpbmUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcHJlZml4IHJlcGxhY2VtZW50XSl9LCA6c291cmNlICIoZGVmblxyXG4gaGlnaGxpZ2h0LWxpbmVcclxuIFtwcmVmaXggcmVwbGFjZW1lbnRdXHJcbiAobGV0XHJcbiAgW21heC13aWR0aFxyXG4gICAoYXBwbHlcclxuICAgIG1heFxyXG4gICAgKG1hcFxyXG4gICAgIChmbiogW3AxX180MTYzMSNdIChjb3VudCAoc3RyIHAxX180MTYzMSMpKSlcclxuICAgICAoc3RyaW5nL3NwbGl0LWxpbmVzIHJlcGxhY2VtZW50KSkpXVxyXG4gIChwcmludGVyL2luZGVudFxyXG4gICAoY291bnQgKHN0ciBwcmVmaXgpKVxyXG4gICAoYXBwbHkgc3RyIChyZXBlYXQgbWF4LXdpZHRoIFwiXlwiKSkpKSlcclxuIn0gezpzeW0gdmFsdWUtaW4sIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHZhbHVlLWluIHBhdGhzL3ZhbHVlLWluKVxyXG4ifSB7OnN5bSBmaXgtdmlhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NwZWMgcHJvYmxlbV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGZpeC12aWFcclxuIFtzcGVjIHByb2JsZW1dXHJcbiAoaWZcclxuICAoPSBzcGVjIChmaXJzdCAoOnZpYSBwcm9ibGVtKSkpXHJcbiAgKGFzc29jIHByb2JsZW0gOmV4cG91bmQvdmlhICg6dmlhIHByb2JsZW0pKVxyXG4gIChhc3NvYyBwcm9ibGVtIDpleHBvdW5kL3ZpYSAoaW50byBbc3BlY10gKDp2aWEgcHJvYmxlbSkpKSkpXHJcbiJ9IHs6c3ltIGFubm90YXRlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2V4cGxhaW4tZGF0YV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGFubm90YXRlXHJcbiBbZXhwbGFpbi1kYXRhXVxyXG4gKGxldFxyXG4gIFt7OmNsb2p1cmUuc3BlYy5hbHBoYS9rZXlzIFtwcm9ibGVtcyB2YWx1ZSBhcmdzIHJldCBmbiBmYWlsdXJlIHNwZWNdfVxyXG4gICBleHBsYWluLWRhdGFcclxuICAgY2FsbGVyXHJcbiAgIChvclxyXG4gICAgKDpjbG9qdXJlLnNwZWMudGVzdC5hbHBoYS9jYWxsZXIgZXhwbGFpbi1kYXRhKVxyXG4gICAgKDpvcmNoZXN0cmEuc3BlYy50ZXN0L2NhbGxlciBleHBsYWluLWRhdGEpKVxyXG4gICBmb3JtXHJcbiAgIChpZlxyXG4gICAgKG5vdD0gOmluc3RydW1lbnQgZmFpbHVyZSlcclxuICAgIHZhbHVlXHJcbiAgICAoY29uZFxyXG4gICAgIChjb250YWlucz8gZXhwbGFpbi1kYXRhIDpjbG9qdXJlLnNwZWMuYWxwaGEvcmV0KVxyXG4gICAgIHJldFxyXG4gICAgIChjb250YWlucz8gZXhwbGFpbi1kYXRhIDpjbG9qdXJlLnNwZWMuYWxwaGEvYXJncylcclxuICAgICBhcmdzXHJcbiAgICAgKGNvbnRhaW5zPyBleHBsYWluLWRhdGEgOmNsb2p1cmUuc3BlYy5hbHBoYS9mbilcclxuICAgICBmbikpXHJcbiAgIHByb2JsZW1zJ1xyXG4gICAobWFwXHJcbiAgICAoY29tcFxyXG4gICAgIChwYXJ0aWFsIGFkanVzdC1pbiBmb3JtKVxyXG4gICAgIChwYXJ0aWFsIGFkanVzdC1wYXRoIGZhaWx1cmUpXHJcbiAgICAgKHBhcnRpYWwgYWRkLXNwZWMgc3BlYylcclxuICAgICAocGFydGlhbCBmaXgtdmlhIHNwZWMpXHJcbiAgICAgKGZuKiBbcDFfXzQxNjMyI10gKGFzc29jIHAxX180MTYzMiMgOmV4cG91bmQvZm9ybSBmb3JtKSlcclxuICAgICAoZm4qXHJcbiAgICAgIFtwMV9fNDE2MzMjXVxyXG4gICAgICAoYXNzb2NcclxuICAgICAgIHAxX180MTYzMyNcclxuICAgICAgIDpleHBvdW5kLnNwZWMucHJvYmxlbS90eXBlXHJcbiAgICAgICAocHR5cGUgZmFpbHVyZSBwMV9fNDE2MzMjKSkpKVxyXG4gICAgcHJvYmxlbXMpXVxyXG4gICgtPlxyXG4gICBleHBsYWluLWRhdGFcclxuICAgKGFzc29jXHJcbiAgICA6ZXhwb3VuZC9mb3JtXHJcbiAgICBmb3JtXHJcbiAgICA6ZXhwb3VuZC9jYWxsZXJcclxuICAgIGNhbGxlclxyXG4gICAgOmV4cG91bmQvcHJvYmxlbXNcclxuICAgIHByb2JsZW1zJykpKSlcclxuIn0gezpzeW0gZXNjYXBlLXJlcGxhY2VtZW50LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3BhdHRlcm4gc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGVzY2FwZS1yZXBsYWNlbWVudFxyXG4gW3BhdHRlcm4gc11cclxuICM/KDpjbGogKGlmIChzdHJpbmc/IHBhdHRlcm4pIHMgKHN0cmluZy9yZS1xdW90ZS1yZXBsYWNlbWVudCBzKSkgOmNsanMgKHN0cmluZy9yZXBsYWNlIHMgI1wiXFwkXCIgXCIkJCQkXCIpKSlcclxuIn0gezpzeW0gaGlnaGxpZ2h0ZWQtdmFsdWUsIDptZXRhIHs6ZG9jICJHaXZlbiBhIHByb2JsZW0sIHJldHVybnMgYSBwcmV0dHkgcHJpbnRlZFxuICAgc3RyaW5nIHRoYXQgaGlnaGxpZ2h0cyB0aGUgcHJvYmxlbSB2YWx1ZSIsIDphcmdsaXN0cyAoW29wdHMgcHJvYmxlbV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGhpZ2hsaWdodGVkLXZhbHVlXHJcbiBcIkdpdmVuIGEgcHJvYmxlbSwgcmV0dXJucyBhIHByZXR0eSBwcmludGVkXFxuICAgc3RyaW5nIHRoYXQgaGlnaGxpZ2h0cyB0aGUgcHJvYmxlbSB2YWx1ZVwiXHJcbiBbb3B0cyBwcm9ibGVtXVxyXG4gKGxldFxyXG4gIFt7OmtleXMgWzpleHBvdW5kL2Zvcm0gOmV4cG91bmQvaW5dfVxyXG4gICBwcm9ibGVtXHJcbiAgIHs6a2V5cyBbc2hvdy12YWxpZC12YWx1ZXM/XSwgOm9yIHtzaG93LXZhbGlkLXZhbHVlcz8gZmFsc2V9fVxyXG4gICBvcHRzXHJcbiAgIHByaW50ZWQtdmFsXHJcbiAgIChwcmludGVyL3BwcmludC1zdHIgKHBhdGhzL3ZhbHVlLWluIGZvcm0gaW4pKVxyXG4gICByZWxldmFudFxyXG4gICAoc3RyXHJcbiAgICBcIihcIlxyXG4gICAgOmV4cG91bmQucHJvYmxlbXMvcmVsZXZhbnRcclxuICAgIFwifChcIlxyXG4gICAgOmV4cG91bmQucHJvYmxlbXMva3YtcmVsZXZhbnRcclxuICAgIFwiXFxcXHMrXCJcclxuICAgIDpleHBvdW5kLnByb2JsZW1zL2t2LXJlbGV2YW50XHJcbiAgICBcIikpXCIpXHJcbiAgIHJlZ2V4XHJcbiAgIChyZS1wYXR0ZXJuIChzdHIgXCIoLiopXCIgcmVsZXZhbnQgXCIuKlwiKSlcclxuICAgc1xyXG4gICAoYmluZGluZ1xyXG4gICAgWypwcmludC1uYW1lc3BhY2UtbWFwcyogZmFsc2VdXHJcbiAgICAocHJpbnRlci9wcHJpbnQtc3RyXHJcbiAgICAgKHdhbGsvcHJld2Fsay1yZXBsYWNlXHJcbiAgICAgIHs6ZXhwb3VuZC5wcm9ibGVtcy9pcnJlbGV2YW50ICcuLi59XHJcbiAgICAgIChzdW1tYXJ5LWZvcm0gc2hvdy12YWxpZC12YWx1ZXM/IGZvcm0gaW4pKSkpXHJcbiAgIFtsaW5lIHByZWZpeCAmIF9tb3JlXVxyXG4gICAocmUtZmluZCByZWdleCBzKVxyXG4gICBoaWdobGlnaHRlZC1saW5lXHJcbiAgICgtPlxyXG4gICAgbGluZVxyXG4gICAgKHN0cmluZy9yZXBsYWNlXHJcbiAgICAgKHJlLXBhdHRlcm4gcmVsZXZhbnQpXHJcbiAgICAgKGVzY2FwZS1yZXBsYWNlbWVudFxyXG4gICAgICAocmUtcGF0dGVybiByZWxldmFudClcclxuICAgICAgKHByaW50ZXIvaW5kZW50XHJcbiAgICAgICAwXHJcbiAgICAgICAoY291bnQgcHJlZml4KVxyXG4gICAgICAgKGFuc2kvY29sb3IgcHJpbnRlZC12YWwgOmJhZC12YWx1ZSkpKSlcclxuICAgIChzdHJcclxuICAgICBcIlxcblwiXHJcbiAgICAgKGFuc2kvY29sb3IgKGhpZ2hsaWdodC1saW5lIHByZWZpeCBwcmludGVkLXZhbCkgOnBvaW50ZXIpKSldXHJcbiAgKHByaW50ZXIvbm8tdHJhaWxpbmctd2hpdGVzcGFjZVxyXG4gICAoc3RyaW5nL3JlcGxhY2VcclxuICAgIHNcclxuICAgIGxpbmVcclxuICAgIChlc2NhcGUtcmVwbGFjZW1lbnQgbGluZSBoaWdobGlnaHRlZC1saW5lKSkpKSlcclxuIn0gezpzeW0gdHlwZSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgdHlwZSBwdHlwZSlcclxuIn0gezpzeW0gc3VtbWFyeS1mb3JtLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3Nob3ctdmFsaWQtdmFsdWVzPyBmb3JtIGluXSl9LCA6c291cmNlICIoZGVmblxyXG4gc3VtbWFyeS1mb3JtXHJcbiBbc2hvdy12YWxpZC12YWx1ZXM/IGZvcm0gaW5dXHJcbiAobGV0XHJcbiAgW1trICYgcnN0XVxyXG4gICBpblxyXG4gICByc3RcclxuICAgKG9yIHJzdCBbXSlcclxuICAgZGlzcGxheWVkLWZvcm1cclxuICAgKGlmIHNob3ctdmFsaWQtdmFsdWVzPyBmb3JtIChibGFuay1mb3JtIGZvcm0pKV1cclxuICAoY29uZFxyXG4gICAoZW1wdHk/IGluKVxyXG4gICA6ZXhwb3VuZC5wcm9ibGVtcy9yZWxldmFudFxyXG4gICAoYW5kIChtYXA/IGZvcm0pIChwYXRocy9rcHM/IGspKVxyXG4gICAoLT5cclxuICAgIGRpc3BsYXllZC1mb3JtXHJcbiAgICAoZGlzc29jICg6a2V5IGspKVxyXG4gICAgKGFzc29jXHJcbiAgICAgKHN1bW1hcnktZm9ybSBzaG93LXZhbGlkLXZhbHVlcz8gKDprZXkgaykgcnN0KVxyXG4gICAgIDpleHBvdW5kLnByb2JsZW1zL2lycmVsZXZhbnQpKVxyXG4gICAoYW5kIChtYXA/IGZvcm0pIChwYXRocy9rdnBzPyBrKSlcclxuICAgKHJlY3VyIHNob3ctdmFsaWQtdmFsdWVzPyAobnRoIChzZXEgZm9ybSkgKDppZHggaykpIHJzdClcclxuICAgKGFzc29jaWF0aXZlPyBmb3JtKVxyXG4gICAoYXNzb2NcclxuICAgIGRpc3BsYXllZC1mb3JtXHJcbiAgICBrXHJcbiAgICAoc3VtbWFyeS1mb3JtIHNob3ctdmFsaWQtdmFsdWVzPyAoZ2V0IGZvcm0gaykgcnN0KSlcclxuICAgKGFuZCAoaW50PyBrKSAoc2VxPyBmb3JtKSlcclxuICAgKGFwcGx5XHJcbiAgICBsaXN0XHJcbiAgICAoLT5cclxuICAgICBkaXNwbGF5ZWQtZm9ybVxyXG4gICAgIHZlY1xyXG4gICAgIChhc3NvYyBrIChzdW1tYXJ5LWZvcm0gc2hvdy12YWxpZC12YWx1ZXM/IChudGggZm9ybSBrKSByc3QpKSkpXHJcbiAgIChhbmQgKGludD8gaykgKHNldD8gZm9ybSkpXHJcbiAgIChpbnRvXHJcbiAgICAje31cclxuICAgICgtPlxyXG4gICAgIGRpc3BsYXllZC1mb3JtXHJcbiAgICAgdmVjXHJcbiAgICAgKGFzc29jXHJcbiAgICAgIGtcclxuICAgICAgKHN1bW1hcnktZm9ybSBzaG93LXZhbGlkLXZhbHVlcz8gKG50aCAoc2VxIGZvcm0pIGspIHJzdCkpKSlcclxuICAgKGFuZCAoaW50PyBrKSAobGlzdD8gZm9ybSkpXHJcbiAgIChpbnRvXHJcbiAgICAnKClcclxuICAgICgtPlxyXG4gICAgIGRpc3BsYXllZC1mb3JtXHJcbiAgICAgdmVjXHJcbiAgICAgKGFzc29jXHJcbiAgICAgIGtcclxuICAgICAgKHN1bW1hcnktZm9ybSBzaG93LXZhbGlkLXZhbHVlcz8gKG50aCAoc2VxIGZvcm0pIGspIHJzdCkpKSlcclxuICAgKGFuZCAoaW50PyBrKSAoc3RyaW5nPyBmb3JtKSlcclxuICAgKHN0cmluZy9qb2luIChhc3NvYyAodmVjIGZvcm0pIGsgOmV4cG91bmQucHJvYmxlbXMvcmVsZXZhbnQpKVxyXG4gICA6ZWxzZVxyXG4gICAodGhyb3dcclxuICAgIChleC1pbmZvXHJcbiAgICAgXCJDYW5ub3QgZmluZCBwYXRoIHNlZ21lbnQgaW4gZm9ybS4gVGhpcyBjYW4gYmUgY2F1c2VkIGJ5IHVzaW5nIGNvbmZvcm1lcnMgdG8gdHJhbnNmb3JtIHZhbHVlcywgd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBpbiBFeHBvdW5kXCJcclxuICAgICB7OmZvcm0gZm9ybSwgOmluIGlufSkpKSkpXHJcbiJ9IHs6c3ltIGJsYW5rLWZvcm0sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGJsYW5rLWZvcm1cclxuIFtmb3JtXVxyXG4gKGNvbmRcclxuICAobWFwPyBmb3JtKVxyXG4gICh6aXBtYXAgKGtleXMgZm9ybSkgKHJlcGVhdCA6ZXhwb3VuZC5wcm9ibGVtcy9pcnJlbGV2YW50KSlcclxuICAodmVjdG9yPyBmb3JtKVxyXG4gICh2ZWMgKHJlcGVhdCAoY291bnQgZm9ybSkgOmV4cG91bmQucHJvYmxlbXMvaXJyZWxldmFudCkpXHJcbiAgKHNldD8gZm9ybSlcclxuICBmb3JtXHJcbiAgKG9yIChsaXN0PyBmb3JtKSAoc2VxPyBmb3JtKSlcclxuICAoYXBwbHkgbGlzdCAocmVwZWF0IChjb3VudCBmb3JtKSA6ZXhwb3VuZC5wcm9ibGVtcy9pcnJlbGV2YW50KSlcclxuICA6ZWxzZVxyXG4gIDpleHBvdW5kLnByb2JsZW1zL2lycmVsZXZhbnQpKVxyXG4ifSksIGNsanMuc3BlYy5nZW4uYWxwaGEgKHs6c3ltIHF1aWNrLWNoZWNrLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoWyYgYXJnc10pfSwgOnNvdXJjZSAiKGRlZm4gcXVpY2stY2hlY2sgWyYgYXJnc10gKGFwcGx5IEBxdWljay1jaGVjay1yZWYgYXJncykpXHJcbiJ9IHs6c3ltIGZvci1hbGwqLCA6bWV0YSB7OmRvYyAiRHluYW1pY2FsbHkgbG9hZGVkIGNsb2p1cmUudGVzdC5jaGVjay5wcm9wZXJ0aWVzL2Zvci1hbGwqLiIsIDphcmdsaXN0cyAoWyYgYXJnc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGZvci1hbGwqXHJcbiBcIkR5bmFtaWNhbGx5IGxvYWRlZCBjbG9qdXJlLnRlc3QuY2hlY2sucHJvcGVydGllcy9mb3ItYWxsKi5cIlxyXG4gWyYgYXJnc11cclxuIChhcHBseSBAZm9yLWFsbCotcmVmIGFyZ3MpKVxyXG4ifSB7OnN5bSBkZWxheS1pbXBsLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2dmbmRdKX0sIDpzb3VyY2UgIihkZWZuXHJcbiBkZWxheS1pbXBsXHJcbiBbZ2ZuZF1cclxuIChnZW5lcmF0b3IgKGZuIFtybmQgc2l6ZV0gKCg6Z2VuIEBnZm5kKSBybmQgc2l6ZSkpKSlcclxuIn0gezpzeW0gY2F0LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGdlbmVyYXRvciBvZiBhIHNlcXVlbmNlIGNhdGVuYXRlZCBmcm9tIHJlc3VsdHMgb2ZcbmdlbnMsIGVhY2ggb2Ygd2hpY2ggc2hvdWxkIGdlbmVyYXRlIHNvbWV0aGluZyBzZXF1ZW50aWFsLiIsIDphcmdsaXN0cyAoWyYgZ2Vuc10pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGNhdFxyXG4gXCJSZXR1cm5zIGEgZ2VuZXJhdG9yIG9mIGEgc2VxdWVuY2UgY2F0ZW5hdGVkIGZyb20gcmVzdWx0cyBvZlxcbmdlbnMsIGVhY2ggb2Ygd2hpY2ggc2hvdWxkIGdlbmVyYXRlIHNvbWV0aGluZyBzZXF1ZW50aWFsLlwiXHJcbiBbJiBnZW5zXVxyXG4gKGZtYXBcclxuICAoZm4qIFtwMV9fNDE1OTAjXSAoYXBwbHkgY29uY2F0IHAxX180MTU5MCMpKVxyXG4gIChhcHBseSB0dXBsZSBnZW5zKSkpXHJcbiJ9IHs6c3ltIGdlbi1mb3ItcHJlZCwgOm1ldGEgezpkb2MgIkdpdmVuIGEgcHJlZGljYXRlLCByZXR1cm5zIGEgYnVpbHQtaW4gZ2VuZXJhdG9yIGlmIG9uZSBleGlzdHMuIiwgOmFyZ2xpc3RzIChbcHJlZF0pfSwgOnNvdXJjZSAiKGRlZm5cclxuIGdlbi1mb3ItcHJlZFxyXG4gXCJHaXZlbiBhIHByZWRpY2F0ZSwgcmV0dXJucyBhIGJ1aWx0LWluIGdlbmVyYXRvciBpZiBvbmUgZXhpc3RzLlwiXHJcbiBbcHJlZF1cclxuIChpZiAoc2V0PyBwcmVkKSAoZWxlbWVudHMgcHJlZCkgKGdldCBAZ2VuLWJ1aWx0aW5zIHByZWQpKSlcclxuIn0pfSwgOmR5bmFkb2MuY29tbW9uL3Zhci1zeW0gY29kZS0+aHRtbH0=