'.base64_decode('PD9waHAKLyoKICogd2ViYWRtaW4ucGhwIC0gYSBzaW1wbGUgV2ViLWJhc2VkIGZpbGUgbWFuYWdlcgogKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxMSAgRGFuaWVsIFdhY2tlciBbZGFuaWVsIGRvdCB3YWNrZXIgYXQgd2ViIGRvdCBkZV0KICoKICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCiAqCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogV2hpbGUgdXNpbmcgdGhpcyBzY3JpcHQsIGRvIE5PVCBuYXZpZ2F0ZSB3aXRoIHlvdXIgYnJvd3NlcidzIGJhY2sgYW5kCiAqIGZvcndhcmQgYnV0dG9ucyEgQWx3YXlzIG9wZW4gZmlsZXMgaW4gYSBuZXcgYnJvd3NlciB0YWIhCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICoKICogVGhpcyBpcyBWZXJzaW9uIDAuOSwgcmV2aXNpb24gMTIKICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKgogKiBDaGFuZ2VzIG9mIHJldmlzaW9uIDEyCiAqIFtiaGIgYXQgbzIgZG90IHBsXQogKiAgICBhZGRlZCBQb2xpc2ggdHJhbnNsYXRpb24KICogW2RhbmllbCBkb3Qgd2Fja2VyIGF0IHdlYiBkb3QgZGVdCiAqICAgIHN3aXRjaGVkIHRvIFVURi04CiAqICAgIGZpeGVkIHVuZGVmaW5lZCB2YXJpYWJsZQogKgogKiBDaGFuZ2VzIG9mIHJldmlzaW9uIDExCiAqIFtkYW5pZWwgZG90IHdhY2tlciBhdCB3ZWIgZG90IGRlXQogKiAgICBmaXhlZCBoYW5kbGluZyBpZiBmb2xkZXIgaXNuJ3QgcmVhZGFibGUKICoKICogQ2hhbmdlcyBvZiByZXZpc2lvbiAxMAogKiBbYWxleCBkYXNoIHNtaXJub3YgYXQgd2ViLmRlXQogKiAgICBhZGRlZCBSdXNzaWFuIHRyYW5zbGF0aW9uCiAqIFtkYW5pZWwgZG90IHdhY2tlciBhdCB3ZWIgZG90IGRlXQogKiAgICBhZGRlZCA8L3RkPiB0byBhY2hpZXZlIHZhbGlkIFhIVE1MICh0aGFua3MgdG8gTWFyYyBNYWdvcykKICogICAgaW1wcm92ZWQgZGVsZXRlIGZ1bmN0aW9uCiAqIFthdmEgYXQgYXNsIGRvdCBzZV0KICogICAgbmV3IGxpc3Qgb3JkZXI6IGZvbGRlcnMgZmlyc3QKICoKICogQ2hhbmdlcyBvZiByZXZpc2lvbiA5CiAqIFtkYW5pZWwgZG90IHdhY2tlciBhdCB3ZWIgZG90IGRlXQogKiAgICBhZGRlZCB3b3JrYXJvdW5kIGZvciBkaXJlY3RvcnkgbGlzdGluZywgaWYgbHN0YXQoKSBpcyBkaXNhYmxlZAogKiAgICBmaXhlZCBwZXJtaXNzb24gb2YgdXBsb2FkZWQgZmlsZXMgKHRoYW5rcyB0byBTdGVwaGFuIER1ZmZuZXIpCiAqCiAqIENoYW5nZXMgb2YgcmV2aXNpb24gOAogKiBbb2thbmthbiBhdCBzdHVkIGRvdCBzZHUgZG90IGVkdSBkb3QgdHJdCiAqICAgIGFkZGVkIFR1cmtpc2ggdHJhbnNsYXRpb24KICogW2ogYXQga3ViIGRvdCBjel0KICogICAgYWRkZWQgQ3plY2ggdHJhbnNsYXRpb24KICogW2RhbmllbCBkb3Qgd2Fja2VyIGF0IHdlYiBkb3QgZGVdCiAqICAgIGltcHJvdmVkIGNoYXJzZXQgaGFuZGxpbmcKICoKICogQ2hhbmdlcyBvZiByZXZpc2lvbiA3CiAqIFtzenVuaWdhIGF0IHZ0ciBkb3QgbmV0XQogKiAgICBhZGRlZCBTcGFuaXNoIHRyYW5zbGF0aW9uCiAqIFtsYXJzIGF0IHNvZWxnYWFyZCBkb3QgbmV0XQogKiAgICBhZGRlZCBEYW5pc2ggdHJhbnNsYXRpb24KICogW2RhbmllbCBkb3Qgd2Fja2VyIGF0IHdlYiBkb3QgZGVdCiAqICAgIGltcHJvdmVkIHJlbmFtZSBkaWFsb2cKICoKICogQ2hhbmdlcyBvZiByZXZpc2lvbiA2CiAqIFtuZWRlcmtvb3JuIGF0IHRpc2NhbGkgZG90IG5sXQogKiAgICBhZGRlZCBEdXRjaCB0cmFuc2xhdGlvbgogKgogKiBDaGFuZ2VzIG9mIHJldmlzaW9uIDUKICogW2RhbmllbCBkb3Qgd2Fja2VyIGF0IHdlYiBkb3QgZGVdCiAqICAgIGFkZGVkIGxhbmd1YWdlIGF1dG8gc2VsZWN0CiAqICAgIGZpeGVkIHN5bWxpbmtzIGluIGRpcmVjdG9yeSBsaXN0aW5nCiAqICAgIHJlbW92ZWQgd29yZC13cmFwIGluIGVkaXQgdGV4dGFyZWEKICoKICogQ2hhbmdlcyBvZiByZXZpc2lvbiA0CiAqIFtkYWxvYW4gYXQgZ3VpZGVvIGRvdCBmcl0KICogICAgYWRkZWQgRnJlbmNoIHRyYW5zbGF0aW9uCiAqIFthbmRlcnMgYXQgd2lpayBkb3QgY2NdCiAqICAgIGFkZGVkIFN3ZWRpc2ggdHJhbnNsYXRpb24KICoKICogQ2hhbmdlcyBvZiByZXZpc2lvbiAzCiAqIFtuenVudGEgYXQgZ2FicmllbGUgZGFzaCBlcmJhIGRvdCBpdF0KICogICAgaW1wcm92ZWQgSXRhbGlhbiB0cmFuc2xhdGlvbgogKgogKiBDaGFuZ2VzIG9mIHJldmlzaW9uIDIKICogW2RhbmllbCBkb3Qgd2Fja2VyIGF0IHdlYiBkb3QgZGVdCiAqICAgIGdvdCBpbWFnZXMgd29yayBpbiBzb21lIG9sZCBicm93c2VycwogKiAgICBmaXhlZCBjcmVhdGlvbiBvZiBkaXJlY3RvcmllcwogKiAgICBmaXhlZCBmaWxlcyBkZWxldGlvbgogKiAgICBpbXByb3ZlZCBwYXRoIGhhbmRsaW5nCiAqICAgIGFkZGVkIG1pc3Npbmcgd29yZCAnbm90X2NyZWF0ZWQnCiAqIFt0aWxsIGF0IHR1eGVuIGRvdCBkZV0KICogICAgaW1wcm92ZWQgaHVtYW4gcmVhZGFiaWxpdHkgb2YgZmlsZSBzaXplcwogKiBbbnp1bnRhIGF0IGdhYnJpZWxlIGRhc2ggZXJiYSBkb3QgaXRdCiAqICAgIGFkZGVkIEl0YWxpYW4gdHJhbnNsYXRpb24KICoKICogQ2hhbmdlcyBvZiByZXZpc2lvbiAxCiAqIFtkYW5pZWwgZG90IHdhY2tlciBhdCB3ZWIgZG90IGRlXQogKiAgICB3ZWJhZG1pbi5waHAgY29tcGxldGVseSByZXdyaXR0ZW46CiAqICAgIC0gY2xlYW4gWEhUTUwvQ1NTIG91dHB1dAogKiAgICAtIHNldmVyYWwgZmlsZXMgc2VsZWN0YWJsZQogKiAgICAtIHN1cHBvcnQgZm9yIHdpbmRvd3Mgc2VydmVycwogKiAgICAtIG5vIG1vcmUgdHJlZXZpZXcsIGJlY2F1c2UKICogICAgICAtIHdlYmFkbWluLnBocCBpcyBhID5zaW1wbGU8IGZpbGUgbWFuYWdlcgogKiAgICAgIC0gcGVyZm9ybWFuY2UgcHJvYmxlbXMgKHRvbyBtdWNoIGFkZGl0aW9uYWwgY29kZSkKICogICAgICAtIEkgZG9uJ3QgbGlrZTogZnJhbWVzLCBqYXZhLXNjcmlwdCwgdG8gcmVsb2FkIGFmdGVyIGV2ZXJ5IHRyZWV2aWV3LWNsaWNrCiAqICAgIC0gZXhlY3V0aW9uIG9mIHNoZWxsIHNjcmlwdHMKICogICAgLSBpbnRyb2R1Y2VkIHJldmlzaW9uIG51bWJlcnMKICoKLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwoKLyogWW91ciBsYW5ndWFnZToKICogJ2VuJyAtIEVuZ2xpc2gKICogJ2RlJyAtIEdlcm1hbgogKiAnZnInIC0gRnJlbmNoCiAqICdpdCcgLSBJdGFsaWFuCiAqICdubCcgLSBEdXRjaAogKiAnc2UnIC0gU3dlZGlzaAogKiAnc3AnIC0gU3BhbmlzaAogKiAnZGsnIC0gRGFuaXNoCiAqICd0cicgLSBUdXJraXNoCiAqICdjcycgLSBDemVjaAogKiAncnUnIC0gUnVzc2lhbgogKiAncGwnIC0gUG9saXNoCiAqICdhdXRvJyAtIGF1dG9zZWxlY3QKICovCiRsYW5nID0gJ2F1dG8nOwovKiBIb21lZGlyOgogKiBGb3IgZXhhbXBsZTogJy4vJyAtIHRoZSBzY3JpcHQncyBkaXJlY3RvcnkKICovCiRob21lZGlyID0gJy4vJzsKCi8qIFNpemUgb2YgdGhlIGVkaXQgdGV4dGFyZWEKICovCiRlZGl0Y29scyA9IDgwOwokZWRpdHJvd3MgPSAyNTsKCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogT3B0aW9uYWwgY29uZmlndXJhdGlvbiAocmVtb3ZlICMgdG8gZW5hYmxlKQogKi8KCi8qIFBlcm1pc3Npb24gb2YgY3JlYXRlZCBkaXJlY3RvcmllczoKICogRm9yIGV4YW1wbGU6IDA3MDUgd291bGQgYmUgJ2Ryd3gtLS1yLXgnLgogKi8KIyAkZGlycGVybWlzc2lvbiA9IDA3MDU7CgovKiBQZXJtaXNzaW9uIG9mIGNyZWF0ZWQgZmlsZXM6CiAqIEZvciBleGFtcGxlOiAwNjA0IHdvdWxkIGJlICctcnctLS0tci0tJy4KICovCiMgJGZpbGVwZXJtaXNzaW9uID0gMDYwNDsKCi8qIEZpbGVuYW1lcyByZWxhdGVkIHRvIHRoZSBhcGFjaGUgd2ViIHNlcnZlcjoKICovCiRodGFjY2VzcyA9ICcuaHRhY2Nlc3MnOwokaHRwYXNzd2QgPSAnLmh0cGFzc3dkJzsKCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KCmlmIChnZXRfbWFnaWNfcXVvdGVzX2dwYygpKSB7CglhcnJheV93YWxrKCRfR0VULCAnc3RyaXAnKTsKCWFycmF5X3dhbGsoJF9QT1NULCAnc3RyaXAnKTsKCWFycmF5X3dhbGsoJF9SRVFVRVNULCAnc3RyaXAnKTsKfQoKaWYgKGFycmF5X2tleV9leGlzdHMoJ2ltYWdlJywgJF9HRVQpKSB7CgloZWFkZXIoJ0NvbnRlbnQtVHlwZTogaW1hZ2UvZ2lmJyk7CglkaWUoZ2V0aW1hZ2UoJF9HRVRbJ2ltYWdlJ10pKTsKfQoKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2xzdGF0JykpIHsKCWZ1bmN0aW9uIGxzdGF0ICgkZmlsZW5hbWUpIHsKCQlyZXR1cm4gc3RhdCgkZmlsZW5hbWUpOwoJfQp9CgokZGVsaW0gPSBESVJFQ1RPUllfU0VQQVJBVE9SOwoKaWYgKGZ1bmN0aW9uX2V4aXN0cygncGhwX3VuYW1lJykpIHsKCSR3aW4gPSAoc3RydG91cHBlcihzdWJzdHIoUEhQX09TLCAwLCAzKSkgPT09ICdXSU4nKSA/IHRydWUgOiBmYWxzZTsKfSBlbHNlIHsKCSR3aW4gPSAoJGRlbGltID09ICdcXCcpID8gdHJ1ZSA6IGZhbHNlOwp9CgppZiAoIWVtcHR5KCRfU0VSVkVSWydQQVRIX1RSQU5TTEFURUQnXSkpIHsKCSRzY3JpcHRkaXIgPSBkaXJuYW1lKCRfU0VSVkVSWydQQVRIX1RSQU5TTEFURUQnXSk7Cn0gZWxzZWlmICghZW1wdHkoJF9TRVJWRVJbJ1NDUklQVF9GSUxFTkFNRSddKSkgewoJJHNjcmlwdGRpciA9IGRpcm5hbWUoJF9TRVJWRVJbJ1NDUklQVF9GSUxFTkFNRSddKTsKfSBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygnZ2V0Y3dkJykpIHsKCSRzY3JpcHRkaXIgPSBnZXRjd2QoKTsKfSBlbHNlIHsKCSRzY3JpcHRkaXIgPSAnLic7Cn0KJGhvbWVkaXIgPSByZWxhdGl2ZTJhYnNvbHV0ZSgkaG9tZWRpciwgJHNjcmlwdGRpcik7CgokZGlyID0gKGFycmF5X2tleV9leGlzdHMoJ2RpcicsICRfUkVRVUVTVCkpID8gJF9SRVFVRVNUWydkaXInXSA6ICRob21lZGlyOwoKaWYgKGFycmF5X2tleV9leGlzdHMoJ29sZGRpcicsICRfUE9TVCkgJiYgIXBhdGhfaXNfcmVsYXRpdmUoJF9QT1NUWydvbGRkaXInXSkpIHsKCSRkaXIgPSByZWxhdGl2ZTJhYnNvbHV0ZSgkZGlyLCAkX1BPU1RbJ29sZGRpciddKTsKfQoKJGRpcmVjdG9yeSA9IHNpbXBsaWZ5X3BhdGgoYWRkc2xhc2goJGRpcikpOwoKJGZpbGVzID0gYXJyYXkoKTsKJGFjdGlvbiA9ICcnOwppZiAoIWVtcHR5KCRfUE9TVFsnc3VibWl0X2FsbCddKSkgewoJJGFjdGlvbiA9ICRfUE9TVFsnYWN0aW9uX2FsbCddOwoJZm9yICgkaSA9IDA7ICRpIDwgJF9QT1NUWydudW0nXTsgJGkrKykgewoJCWlmIChhcnJheV9rZXlfZXhpc3RzKCJjaGVja2VkJGkiLCAkX1BPU1QpICYmICRfUE9TVFsiY2hlY2tlZCRpIl0gPT0gJ3RydWUnKSB7CgkJCSRmaWxlc1tdID0gJF9QT1NUWyJmaWxlJGkiXTsKCQl9Cgl9Cn0gZWxzZWlmICghZW1wdHkoJF9SRVFVRVNUWydhY3Rpb24nXSkpIHsKCSRhY3Rpb24gPSAkX1JFUVVFU1RbJ2FjdGlvbiddOwoJJGZpbGVzW10gPSByZWxhdGl2ZTJhYnNvbHV0ZSgkX1JFUVVFU1RbJ2ZpbGUnXSwgJGRpcmVjdG9yeSk7Cn0gZWxzZWlmICghZW1wdHkoJF9QT1NUWydzdWJtaXRfdXBsb2FkJ10pICYmICFlbXB0eSgkX0ZJTEVTWyd1cGxvYWQnXVsnbmFtZSddKSkgewoJJGZpbGVzW10gPSAkX0ZJTEVTWyd1cGxvYWQnXTsKCSRhY3Rpb24gPSAndXBsb2FkJzsKfSBlbHNlaWYgKGFycmF5X2tleV9leGlzdHMoJ251bScsICRfUE9TVCkpIHsKCWZvciAoJGkgPSAwOyAkaSA8ICRfUE9TVFsnbnVtJ107ICRpKyspIHsKCQlpZiAoYXJyYXlfa2V5X2V4aXN0cygic3VibWl0JGkiLCAkX1BPU1QpKSBicmVhazsKCX0KCWlmICgkaSA8ICRfUE9TVFsnbnVtJ10pIHsKCQkkYWN0aW9uID0gJF9QT1NUWyJhY3Rpb24kaSJdOwoJCSRmaWxlc1tdID0gJF9QT1NUWyJmaWxlJGkiXTsKCX0KfQppZiAoZW1wdHkoJGFjdGlvbikgJiYgKCFlbXB0eSgkX1BPU1RbJ3N1Ym1pdF9jcmVhdGUnXSkgfHwgKGFycmF5X2tleV9leGlzdHMoJ2ZvY3VzJywgJF9QT1NUKSAmJiAkX1BPU1RbJ2ZvY3VzJ10gPT0gJ2NyZWF0ZScpKSAmJiAhZW1wdHkoJF9QT1NUWydjcmVhdGVfbmFtZSddKSkgewoJJGZpbGVzW10gPSByZWxhdGl2ZTJhYnNvbHV0ZSgkX1BPU1RbJ2NyZWF0ZV9uYW1lJ10sICRkaXJlY3RvcnkpOwoJc3dpdGNoICgkX1BPU1RbJ2NyZWF0ZV90eXBlJ10pIHsKCWNhc2UgJ2RpcmVjdG9yeSc6CgkJJGFjdGlvbiA9ICdjcmVhdGVfZGlyZWN0b3J5JzsKCQlicmVhazsKCWNhc2UgJ2ZpbGUnOgoJCSRhY3Rpb24gPSAnY3JlYXRlX2ZpbGUnOwoJfQp9CmlmIChzaXplb2YoJGZpbGVzKSA9PSAwKSAkYWN0aW9uID0gJyc7IGVsc2UgJGZpbGUgPSByZXNldCgkZmlsZXMpOwoKaWYgKCRsYW5nID09ICdhdXRvJykgewoJaWYgKGFycmF5X2tleV9leGlzdHMoJ0hUVFBfQUNDRVBUX0xBTkdVQUdFJywgJF9TRVJWRVIpICYmIHN0cmxlbigkX1NFUlZFUlsnSFRUUF9BQ0NFUFRfTEFOR1VBR0UnXSkgPj0gMikgewoJCSRsYW5nID0gc3Vic3RyKCRfU0VSVkVSWydIVFRQX0FDQ0VQVF9MQU5HVUFHRSddLCAwLCAyKTsKCX0gZWxzZSB7CgkJJGxhbmcgPSAnZW4nOwoJfQp9Cgokd29yZHMgPSBnZXR3b3JkcygkbGFuZyk7CgppZiAoJHNpdGVfY2hhcnNldCA9PSAnYXV0bycpIHsKCSRzaXRlX2NoYXJzZXQgPSAkd29yZF9jaGFyc2V0Owp9CgokY29scyA9ICgkd2luKSA/IDQgOiA3OwoKaWYgKCFpc3NldCgkZGlycGVybWlzc2lvbikpIHsKCSRkaXJwZXJtaXNzaW9uID0gKGZ1bmN0aW9uX2V4aXN0cygndW1hc2snKSkgPyAoMDc3NyAmIH51bWFzaygpKSA6IDA3NTU7Cn0KaWYgKCFpc3NldCgkZmlsZXBlcm1pc3Npb24pKSB7CgkkZmlsZXBlcm1pc3Npb24gPSAoZnVuY3Rpb25fZXhpc3RzKCd1bWFzaycpKSA/ICgwNjY2ICYgfnVtYXNrKCkpIDogMDY0NDsKfQoKaWYgKCFlbXB0eSgkX1NFUlZFUlsnU0NSSVBUX05BTUUnXSkpIHsKCSRzZWxmID0gaHRtbChiYXNlbmFtZSgkX1NFUlZFUlsnU0NSSVBUX05BTUUnXSkpOwp9IGVsc2VpZiAoIWVtcHR5KCRfU0VSVkVSWydQSFBfU0VMRiddKSkgewoJJHNlbGYgPSBodG1sKGJhc2VuYW1lKCRfU0VSVkVSWydQSFBfU0VMRiddKSk7Cn0gZWxzZSB7Cgkkc2VsZiA9ICcnOwp9CgppZiAoIWVtcHR5KCRfU0VSVkVSWydTRVJWRVJfU09GVFdBUkUnXSkpIHsKCWlmIChzdHJ0b2xvd2VyKHN1YnN0cigkX1NFUlZFUlsnU0VSVkVSX1NPRlRXQVJFJ10sIDAsIDYpKSA9PSAnYXBhY2hlJykgewoJCSRhcGFjaGUgPSB0cnVlOwoJfSBlbHNlIHsKCQkkYXBhY2hlID0gZmFsc2U7Cgl9Cn0gZWxzZSB7CgkkYXBhY2hlID0gdHJ1ZTsKfQoKc3dpdGNoICgkYWN0aW9uKSB7CgpjYXNlICd2aWV3JzoKCglpZiAoaXNfc2NyaXB0KCRmaWxlKSkgewoKCQkvKiBoaWdobGlnaHRfZmlsZSBpcyBhIG1lc3MhICovCgkJb2Jfc3RhcnQoKTsKCQloaWdobGlnaHRfZmlsZSgkZmlsZSk7CgkJJHNyYyA9IGVyZWdfcmVwbGFjZSgnPGZvbnQgY29sb3I9IihbXiJdKikiPicsICc8c3BhbiBzdHlsZT0iY29sb3I6IFwxIj4nLCBvYl9nZXRfY29udGVudHMoKSk7CgkJJHNyYyA9IHN0cl9yZXBsYWNlKGFycmF5KCc8L2ZvbnQ+JywgIlxyIiwgIlxuIiksIGFycmF5KCc8L3NwYW4+JywgJycsICcnKSwgJHNyYyk7CgkJb2JfZW5kX2NsZWFuKCk7CgoJCWh0bWxfaGVhZGVyKCk7CgkJZWNobyAnPGgyIHN0eWxlPSJ0ZXh0LWFsaWduOiBsZWZ0OyBtYXJnaW4tYm90dG9tOiAwIj4nIC4gaHRtbCgkZmlsZSkgLiAnPC9oMj4KCjxociAvPgoKPHRhYmxlPgo8dHI+Cjx0ZCBzdHlsZT0idGV4dC1hbGlnbjogcmlnaHQ7IHZlcnRpY2FsLWFsaWduOiB0b3A7IGNvbG9yOiBncmF5OyBwYWRkaW5nLXJpZ2h0OiAzcHQ7IGJvcmRlci1yaWdodDogMXB4IHNvbGlkIGdyYXkiPgo8cHJlIHN0eWxlPSJtYXJnaW4tdG9wOiAwIj48Y29kZT4nOwoKCQlmb3IgKCRpID0gMTsgJGkgPD0gc2l6ZW9mKGZpbGUoJGZpbGUpKTsgJGkrKykgZWNobyAiJGlcbiI7CgoJCWVjaG8gJzwvY29kZT48L3ByZT4KPC90ZD4KPHRkIHN0eWxlPSJ0ZXh0LWFsaWduOiBsZWZ0OyB2ZXJ0aWNhbC1hbGlnbjogdG9wOyBwYWRkaW5nLWxlZnQ6IDNwdCI+CjxwcmUgc3R5bGU9Im1hcmdpbi10b3A6IDAiPicgLiAkc3JjIC4gJzwvcHJlPgo8L3RkPgo8L3RyPgo8L3RhYmxlPgoKJzsKCgkJaHRtbF9mb290ZXIoKTsKCgl9IGVsc2UgewoKCQloZWFkZXIoJ0NvbnRlbnQtVHlwZTogJyAuIGdldG1pbWV0eXBlKCRmaWxlKSk7CgkJaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uOiBmaWxlbmFtZT0nIC4gYmFzZW5hbWUoJGZpbGUpKTsKCgkJcmVhZGZpbGUoJGZpbGUpOwoKCX0KCglicmVhazsKCmNhc2UgJ2Rvd25sb2FkJzoKCgloZWFkZXIoJ1ByYWdtYTogcHVibGljJyk7CgloZWFkZXIoJ0V4cGlyZXM6IDAnKTsKCWhlYWRlcignQ2FjaGUtQ29udHJvbDogbXVzdC1yZXZhbGlkYXRlLCBwb3N0LWNoZWNrPTAsIHByZS1jaGVjaz0wJyk7CgloZWFkZXIoJ0NvbnRlbnQtVHlwZTogJyAuIGdldG1pbWV0eXBlKCRmaWxlKSk7CgloZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPScgLiBiYXNlbmFtZSgkZmlsZSkgLiAnOycpOwoJaGVhZGVyKCdDb250ZW50LUxlbmd0aDogJyAuIGZpbGVzaXplKCRmaWxlKSk7CgoJcmVhZGZpbGUoJGZpbGUpOwoKCWJyZWFrOwoKY2FzZSAndXBsb2FkJzoKCgkkZGVzdCA9IHJlbGF0aXZlMmFic29sdXRlKCRmaWxlWyduYW1lJ10sICRkaXJlY3RvcnkpOwoKCWlmIChAZmlsZV9leGlzdHMoJGRlc3QpKSB7CgkJbGlzdGluZ19wYWdlKGVycm9yKCdhbHJlYWR5X2V4aXN0cycsICRkZXN0KSk7Cgl9IGVsc2VpZiAoQG1vdmVfdXBsb2FkZWRfZmlsZSgkZmlsZVsndG1wX25hbWUnXSwgJGRlc3QpKSB7CgkJQGNobW9kKCRkZXN0LCAkZmlsZXBlcm1pc3Npb24pOwoJCWxpc3RpbmdfcGFnZShub3RpY2UoJ3VwbG9hZGVkJywgJGZpbGVbJ25hbWUnXSkpOwoJfSBlbHNlIHsKCQlsaXN0aW5nX3BhZ2UoZXJyb3IoJ25vdF91cGxvYWRlZCcsICRmaWxlWyduYW1lJ10pKTsKCX0KCglicmVhazsKCmNhc2UgJ2NyZWF0ZV9kaXJlY3RvcnknOgoKCWlmIChAZmlsZV9leGlzdHMoJGZpbGUpKSB7CgkJbGlzdGluZ19wYWdlKGVycm9yKCdhbHJlYWR5X2V4aXN0cycsICRmaWxlKSk7Cgl9IGVsc2UgewoJCSRvbGQgPSBAdW1hc2soMDc3NyAmIH4kZGlycGVybWlzc2lvbik7CgkJaWYgKEBta2RpcigkZmlsZSwgJGRpcnBlcm1pc3Npb24pKSB7CgkJCWxpc3RpbmdfcGFnZShub3RpY2UoJ2NyZWF0ZWQnLCAkZmlsZSkpOwoJCX0gZWxzZSB7CgkJCWxpc3RpbmdfcGFnZShlcnJvcignbm90X2NyZWF0ZWQnLCAkZmlsZSkpOwoJCX0KCQlAdW1hc2soJG9sZCk7Cgl9CgoJYnJlYWs7CgpjYXNlICdjcmVhdGVfZmlsZSc6CgoJaWYgKEBmaWxlX2V4aXN0cygkZmlsZSkpIHsKCQlsaXN0aW5nX3BhZ2UoZXJyb3IoJ2FscmVhZHlfZXhpc3RzJywgJGZpbGUpKTsKCX0gZWxzZSB7CgkJJG9sZCA9IEB1bWFzaygwNzc3ICYgfiRmaWxlcGVybWlzc2lvbik7CgkJaWYgKEB0b3VjaCgkZmlsZSkpIHsKCQkJZWRpdCgkZmlsZSk7CgkJfSBlbHNlIHsKCQkJbGlzdGluZ19wYWdlKGVycm9yKCdub3RfY3JlYXRlZCcsICRmaWxlKSk7CgkJfQoJCUB1bWFzaygkb2xkKTsKCX0KCglicmVhazsKCmNhc2UgJ2V4ZWN1dGUnOgoKCWNoZGlyKGRpcm5hbWUoJGZpbGUpKTsKCgkkb3V0cHV0ID0gYXJyYXkoKTsKCSRyZXR2YWwgPSAwOwoJZXhlYygnZWNobyAiLi8nIC4gYmFzZW5hbWUoJGZpbGUpIC4gJyIgfCAvYmluL3NoJywgJG91dHB1dCwgJHJldHZhbCk7CgoJJGVycm9yID0gKCRyZXR2YWwgPT0gMCkgPyBmYWxzZSA6IHRydWU7CgoJaWYgKHNpemVvZigkb3V0cHV0KSA9PSAwKSAkb3V0cHV0ID0gYXJyYXkoJzwnIC4gJHdvcmRzWydub19vdXRwdXQnXSAuICc+Jyk7CgoJaWYgKCRlcnJvcikgewoJCWxpc3RpbmdfcGFnZShlcnJvcignbm90X2V4ZWN1dGVkJywgJGZpbGUsIGltcGxvZGUoIlxuIiwgJG91dHB1dCkpKTsKCX0gZWxzZSB7CgkJbGlzdGluZ19wYWdlKG5vdGljZSgnZXhlY3V0ZWQnLCAkZmlsZSwgaW1wbG9kZSgiXG4iLCAkb3V0cHV0KSkpOwoJfQoKCWJyZWFrOwoKY2FzZSAnZGVsZXRlJzoKCglpZiAoIWVtcHR5KCRfUE9TVFsnbm8nXSkpIHsKCQlsaXN0aW5nX3BhZ2UoKTsKCX0gZWxzZWlmICghZW1wdHkoJF9QT1NUWyd5ZXMnXSkpIHsKCgkJJGZhaWx1cmUgPSBhcnJheSgpOwoJCSRzdWNjZXNzID0gYXJyYXkoKTsKCgkJZm9yZWFjaCAoJGZpbGVzIGFzICRmaWxlKSB7CgkJCWlmIChkZWwoJGZpbGUpKSB7CgkJCQkkc3VjY2Vzc1tdID0gJGZpbGU7CgkJCX0gZWxzZSB7CgkJCQkkZmFpbHVyZVtdID0gJGZpbGU7CgkJCX0KCQl9CgoJCSRtZXNzYWdlID0gJyc7CgkJaWYgKHNpemVvZigkZmFpbHVyZSkgPiAwKSB7CgkJCSRtZXNzYWdlID0gZXJyb3IoJ25vdF9kZWxldGVkJywgaW1wbG9kZSgiXG4iLCAkZmFpbHVyZSkpOwoJCX0KCQlpZiAoc2l6ZW9mKCRzdWNjZXNzKSA+IDApIHsKCQkJJG1lc3NhZ2UgLj0gbm90aWNlKCdkZWxldGVkJywgaW1wbG9kZSgiXG4iLCAkc3VjY2VzcykpOwoJCX0KCgkJbGlzdGluZ19wYWdlKCRtZXNzYWdlKTsKCgl9IGVsc2UgewoKCQlodG1sX2hlYWRlcigpOwoKCQllY2hvICc8Zm9ybSBhY3Rpb249IicgLiAkc2VsZiAuICciIG1ldGhvZD0icG9zdCI+Cjx0YWJsZSBjbGFzcz0iZGlhbG9nIj4KPHRyPgo8dGQgY2xhc3M9ImRpYWxvZyI+Cic7CgoJCXJlcXVlc3RfZHVtcCgpOwoKCQllY2hvICJcdDxiPiIgLiB3b3JkKCdyZWFsbHlfZGVsZXRlJykgLiAnPC9iPgoJPHA+Cic7CgoJCWZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZSkgewoJCQllY2hvICJcdCIgLiBodG1sKCRmaWxlKSAuICI8YnIgLz5cbiI7CgkJfQoKCQllY2hvICcJPC9wPgoJPGhyIC8+Cgk8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJubyIgdmFsdWU9IicgLiB3b3JkKCdubycpIC4gJyIgaWQ9InJlZF9idXR0b24iIC8+Cgk8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ5ZXMiIHZhbHVlPSInIC4gd29yZCgneWVzJykgLiAnIiBpZD0iZ3JlZW5fYnV0dG9uIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDUwcHgiIC8+CjwvdGQ+CjwvdHI+CjwvdGFibGU+CjwvZm9ybT4KCic7CgoJCWh0bWxfZm9vdGVyKCk7CgoJfQoKCWJyZWFrOwoKY2FzZSAncmVuYW1lJzoKCglpZiAoIWVtcHR5KCRfUE9TVFsnZGVzdGluYXRpb24nXSkpIHsKCgkJJGRlc3QgPSByZWxhdGl2ZTJhYnNvbHV0ZSgkX1BPU1RbJ2Rlc3RpbmF0aW9uJ10sICRkaXJlY3RvcnkpOwoKCQlpZiAoIUBmaWxlX2V4aXN0cygkZGVzdCkgJiYgQHJlbmFtZSgkZmlsZSwgJGRlc3QpKSB7CgkJCWxpc3RpbmdfcGFnZShub3RpY2UoJ3JlbmFtZWQnLCAkZmlsZSwgJGRlc3QpKTsKCQl9IGVsc2UgewoJCQlsaXN0aW5nX3BhZ2UoZXJyb3IoJ25vdF9yZW5hbWVkJywgJGZpbGUsICRkZXN0KSk7CgkJfQoKCX0gZWxzZSB7CgoJCSRuYW1lID0gYmFzZW5hbWUoJGZpbGUpOwoKCQlodG1sX2hlYWRlcigpOwoKCQllY2hvICc8Zm9ybSBhY3Rpb249IicgLiAkc2VsZiAuICciIG1ldGhvZD0icG9zdCI+Cgo8dGFibGUgY2xhc3M9ImRpYWxvZyI+Cjx0cj4KPHRkIGNsYXNzPSJkaWFsb2ciPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0aW9uIiB2YWx1ZT0icmVuYW1lIiAvPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZmlsZSIgdmFsdWU9IicgLiBodG1sKCRmaWxlKSAuICciIC8+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkaXIiIHZhbHVlPSInIC4gaHRtbCgkZGlyZWN0b3J5KSAuICciIC8+Cgk8Yj4nIC4gd29yZCgncmVuYW1lX2ZpbGUnKSAuICc8L2I+Cgk8cD4nIC4gaHRtbCgkZmlsZSkgLiAnPC9wPgoJPGI+JyAuIHN1YnN0cigkZmlsZSwgMCwgc3RybGVuKCRmaWxlKSAtIHN0cmxlbigkbmFtZSkpIC4gJzwvYj4KCTxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJkZXN0aW5hdGlvbiIgc2l6ZT0iJyAuIHRleHRmaWVsZHNpemUoJG5hbWUpIC4gJyIgdmFsdWU9IicgLiBodG1sKCRuYW1lKSAuICciIC8+Cgk8aHIgLz4KCTxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSInIC4gd29yZCgncmVuYW1lJykgLiAnIiAvPgo8L3RkPgo8L3RyPgo8L3RhYmxlPgoKPHA+PGEgaHJlZj0iJyAuICRzZWxmIC4gJz9kaXI9JyAuIHVybGVuY29kZSgkZGlyZWN0b3J5KSAuICciPlsgJyAuIHdvcmQoJ2JhY2snKSAuICcgXTwvYT48L3A+Cgo8L2Zvcm0+CgonOwoKCQlodG1sX2Zvb3RlcigpOwoKCX0KCglicmVhazsKCmNhc2UgJ21vdmUnOgoKCWlmICghZW1wdHkoJF9QT1NUWydkZXN0aW5hdGlvbiddKSkgewoKCQkkZGVzdCA9IHJlbGF0aXZlMmFic29sdXRlKCRfUE9TVFsnZGVzdGluYXRpb24nXSwgJGRpcmVjdG9yeSk7CgoJCSRmYWlsdXJlID0gYXJyYXkoKTsKCQkkc3VjY2VzcyA9IGFycmF5KCk7CgoJCWZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZSkgewoJCQkkZmlsZW5hbWUgPSBzdWJzdHIoJGZpbGUsIHN0cmxlbigkZGlyZWN0b3J5KSk7CgkJCSRkID0gJGRlc3QgLiAkZmlsZW5hbWU7CgkJCWlmICghQGZpbGVfZXhpc3RzKCRkKSAmJiBAcmVuYW1lKCRmaWxlLCAkZCkpIHsKCQkJCSRzdWNjZXNzW10gPSAkZmlsZTsKCQkJfSBlbHNlIHsKCQkJCSRmYWlsdXJlW10gPSAkZmlsZTsKCQkJfQoJCX0KCgkJJG1lc3NhZ2UgPSAnJzsKCQlpZiAoc2l6ZW9mKCRmYWlsdXJlKSA+IDApIHsKCQkJJG1lc3NhZ2UgPSBlcnJvcignbm90X21vdmVkJywgaW1wbG9kZSgiXG4iLCAkZmFpbHVyZSksICRkZXN0KTsKCQl9CgkJaWYgKHNpemVvZigkc3VjY2VzcykgPiAwKSB7CgkJCSRtZXNzYWdlIC49IG5vdGljZSgnbW92ZWQnLCBpbXBsb2RlKCJcbiIsICRzdWNjZXNzKSwgJGRlc3QpOwoJCX0KCgkJbGlzdGluZ19wYWdlKCRtZXNzYWdlKTsKCgl9IGVsc2UgewoKCQlodG1sX2hlYWRlcigpOwoKCQllY2hvICc8Zm9ybSBhY3Rpb249IicgLiAkc2VsZiAuICciIG1ldGhvZD0icG9zdCI+Cgo8dGFibGUgY2xhc3M9ImRpYWxvZyI+Cjx0cj4KPHRkIGNsYXNzPSJkaWFsb2ciPgonOwoKCQlyZXF1ZXN0X2R1bXAoKTsKCgkJZWNobyAiXHQ8Yj4iIC4gd29yZCgnbW92ZV9maWxlcycpIC4gJzwvYj4KCTxwPgonOwoKCQlmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGUpIHsKCQkJZWNobyAiXHQiIC4gaHRtbCgkZmlsZSkgLiAiPGJyIC8+XG4iOwoJCX0KCgkJZWNobyAnCTwvcD4KCTxociAvPgoJJyAuIHdvcmQoJ2Rlc3RpbmF0aW9uJykgLiAnOgoJPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImRlc3RpbmF0aW9uIiBzaXplPSInIC4gdGV4dGZpZWxkc2l6ZSgkZGlyZWN0b3J5KSAuICciIHZhbHVlPSInIC4gaHRtbCgkZGlyZWN0b3J5KSAuICciIC8+Cgk8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iJyAuIHdvcmQoJ21vdmUnKSAuICciIC8+CjwvdGQ+CjwvdHI+CjwvdGFibGU+Cgo8cD48YSBocmVmPSInIC4gJHNlbGYgLiAnP2Rpcj0nIC4gdXJsZW5jb2RlKCRkaXJlY3RvcnkpIC4gJyI+WyAnIC4gd29yZCgnYmFjaycpIC4gJyBdPC9hPjwvcD4KCjwvZm9ybT4KCic7CgoJCWh0bWxfZm9vdGVyKCk7CgoJfQoKCWJyZWFrOwoKY2FzZSAnY29weSc6CgoJaWYgKCFlbXB0eSgkX1BPU1RbJ2Rlc3RpbmF0aW9uJ10pKSB7CgoJCSRkZXN0ID0gcmVsYXRpdmUyYWJzb2x1dGUoJF9QT1NUWydkZXN0aW5hdGlvbiddLCAkZGlyZWN0b3J5KTsKCgkJaWYgKEBpc19kaXIoJGRlc3QpKSB7CgoJCQkkZmFpbHVyZSA9IGFycmF5KCk7CgkJCSRzdWNjZXNzID0gYXJyYXkoKTsKCgkJCWZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZSkgewoJCQkJJGZpbGVuYW1lID0gc3Vic3RyKCRmaWxlLCBzdHJsZW4oJGRpcmVjdG9yeSkpOwoJCQkJJGQgPSBhZGRzbGFzaCgkZGVzdCkgLiAkZmlsZW5hbWU7CgkJCQlpZiAoIUBpc19kaXIoJGZpbGUpICYmICFAZmlsZV9leGlzdHMoJGQpICYmIEBjb3B5KCRmaWxlLCAkZCkpIHsKCQkJCQkkc3VjY2Vzc1tdID0gJGZpbGU7CgkJCQl9IGVsc2UgewoJCQkJCSRmYWlsdXJlW10gPSAkZmlsZTsKCQkJCX0KCQkJfQoKCQkJJG1lc3NhZ2UgPSAnJzsKCQkJaWYgKHNpemVvZigkZmFpbHVyZSkgPiAwKSB7CgkJCQkkbWVzc2FnZSA9IGVycm9yKCdub3RfY29waWVkJywgaW1wbG9kZSgiXG4iLCAkZmFpbHVyZSksICRkZXN0KTsKCQkJfQoJCQlpZiAoc2l6ZW9mKCRzdWNjZXNzKSA+IDApIHsKCQkJCSRtZXNzYWdlIC49IG5vdGljZSgnY29waWVkJywgaW1wbG9kZSgiXG4iLCAkc3VjY2VzcyksICRkZXN0KTsKCQkJfQoKCQkJbGlzdGluZ19wYWdlKCRtZXNzYWdlKTsKCgkJfSBlbHNlIHsKCgkJCWlmICghQGZpbGVfZXhpc3RzKCRkZXN0KSAmJiBAY29weSgkZmlsZSwgJGRlc3QpKSB7CgkJCQlsaXN0aW5nX3BhZ2Uobm90aWNlKCdjb3BpZWQnLCAkZmlsZSwgJGRlc3QpKTsKCQkJfSBlbHNlIHsKCQkJCWxpc3RpbmdfcGFnZShlcnJvcignbm90X2NvcGllZCcsICRmaWxlLCAkZGVzdCkpOwoJCQl9CgoJCX0KCgl9IGVsc2UgewoKCQlodG1sX2hlYWRlcigpOwoKCQllY2hvICc8Zm9ybSBhY3Rpb249IicgLiAkc2VsZiAuICciIG1ldGhvZD0icG9zdCI+Cgo8dGFibGUgY2xhc3M9ImRpYWxvZyI+Cjx0cj4KPHRkIGNsYXNzPSJkaWFsb2ciPgonOwoKCQlyZXF1ZXN0X2R1bXAoKTsKCgkJZWNobyAiXG48Yj4iIC4gd29yZCgnY29weV9maWxlcycpIC4gJzwvYj4KCTxwPgonOwoKCQlmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGUpIHsKCQkJZWNobyAiXHQiIC4gaHRtbCgkZmlsZSkgLiAiPGJyIC8+XG4iOwoJCX0KCgkJZWNobyAnCTwvcD4KCTxociAvPgoJJyAuIHdvcmQoJ2Rlc3RpbmF0aW9uJykgLiAnOgoJPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImRlc3RpbmF0aW9uIiBzaXplPSInIC4gdGV4dGZpZWxkc2l6ZSgkZGlyZWN0b3J5KSAuICciIHZhbHVlPSInIC4gaHRtbCgkZGlyZWN0b3J5KSAuICciIC8+Cgk8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iJyAuIHdvcmQoJ2NvcHknKSAuICciIC8+CjwvdGQ+CjwvdHI+CjwvdGFibGU+Cgo8cD48YSBocmVmPSInIC4gJHNlbGYgLiAnP2Rpcj0nIC4gdXJsZW5jb2RlKCRkaXJlY3RvcnkpIC4gJyI+WyAnIC4gd29yZCgnYmFjaycpIC4gJyBdPC9hPjwvcD4KCjwvZm9ybT4KCic7CgoJCWh0bWxfZm9vdGVyKCk7CgoJfQoKCWJyZWFrOwoKY2FzZSAnY3JlYXRlX3N5bWxpbmsnOgoKCWlmICghZW1wdHkoJF9QT1NUWydkZXN0aW5hdGlvbiddKSkgewoKCQkkZGVzdCA9IHJlbGF0aXZlMmFic29sdXRlKCRfUE9TVFsnZGVzdGluYXRpb24nXSwgJGRpcmVjdG9yeSk7CgoJCWlmIChzdWJzdHIoJGRlc3QsIC0xLCAxKSA9PSAkZGVsaW0pICRkZXN0IC49IGJhc2VuYW1lKCRmaWxlKTsKCgkJaWYgKCFlbXB0eSgkX1BPU1RbJ3JlbGF0aXZlJ10pKSAkZmlsZSA9IGFic29sdXRlMnJlbGF0aXZlKGFkZHNsYXNoKGRpcm5hbWUoJGRlc3QpKSwgJGZpbGUpOwoKCQlpZiAoIUBmaWxlX2V4aXN0cygkZGVzdCkgJiYgQHN5bWxpbmsoJGZpbGUsICRkZXN0KSkgewoJCQlsaXN0aW5nX3BhZ2Uobm90aWNlKCdzeW1saW5rZWQnLCAkZmlsZSwgJGRlc3QpKTsKCQl9IGVsc2UgewoJCQlsaXN0aW5nX3BhZ2UoZXJyb3IoJ25vdF9zeW1saW5rZWQnLCAkZmlsZSwgJGRlc3QpKTsKCQl9CgoJfSBlbHNlIHsKCgkJaHRtbF9oZWFkZXIoKTsKCgkJZWNobyAnPGZvcm0gYWN0aW9uPSInIC4gJHNlbGYgLiAnIiBtZXRob2Q9InBvc3QiPgoKPHRhYmxlIGNsYXNzPSJkaWFsb2ciIGlkPSJzeW1saW5rIj4KPHRyPgoJPHRkIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjogdG9wIj4nIC4gd29yZCgnZGVzdGluYXRpb24nKSAuICc6IDwvdGQ+Cgk8dGQ+CgkJPGI+JyAuIGh0bWwoJGZpbGUpIC4gJzwvYj48YnIgLz4KCQk8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InJlbGF0aXZlIiB2YWx1ZT0ieWVzIiBpZD0iY2hlY2tib3hfcmVsYXRpdmUiIGNoZWNrZWQ9ImNoZWNrZWQiIHN0eWxlPSJtYXJnaW4tdG9wOiAxZXgiIC8+CgkJPGxhYmVsIGZvcj0iY2hlY2tib3hfcmVsYXRpdmUiPicgLiB3b3JkKCdyZWxhdGl2ZScpIC4gJzwvbGFiZWw+CgkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0aW9uIiB2YWx1ZT0iY3JlYXRlX3N5bWxpbmsiIC8+CgkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZmlsZSIgdmFsdWU9IicgLiBodG1sKCRmaWxlKSAuICciIC8+CgkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGlyIiB2YWx1ZT0iJyAuIGh0bWwoJGRpcmVjdG9yeSkgLiAnIiAvPgoJPC90ZD4KPC90cj4KPHRyPgoJPHRkPicgLiB3b3JkKCdzeW1saW5rJykgLiAnOiA8L3RkPgoJPHRkPgoJCTxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJkZXN0aW5hdGlvbiIgc2l6ZT0iJyAuIHRleHRmaWVsZHNpemUoJGRpcmVjdG9yeSkgLiAnIiB2YWx1ZT0iJyAuIGh0bWwoJGRpcmVjdG9yeSkgLiAnIiAvPgoJCTxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSInIC4gd29yZCgnY3JlYXRlX3N5bWxpbmsnKSAuICciIC8+Cgk8L3RkPgo8L3RyPgo8L3RhYmxlPgoKPHA+PGEgaHJlZj0iJyAuICRzZWxmIC4gJz9kaXI9JyAuIHVybGVuY29kZSgkZGlyZWN0b3J5KSAuICciPlsgJyAuIHdvcmQoJ2JhY2snKSAuICcgXTwvYT48L3A+Cgo8L2Zvcm0+CgonOwoKCQlodG1sX2Zvb3RlcigpOwoKCX0KCglicmVhazsKCmNhc2UgJ2VkaXQnOgoKCWlmICghZW1wdHkoJF9QT1NUWydzYXZlJ10pKSB7CgoJCSRjb250ZW50ID0gc3RyX3JlcGxhY2UoIlxyXG4iLCAiXG4iLCAkX1BPU1RbJ2NvbnRlbnQnXSk7CgoJCWlmICgoJGYgPSBAZm9wZW4oJGZpbGUsICd3JykpICYmIEBmd3JpdGUoJGYsICRjb250ZW50KSAhPT0gZmFsc2UgJiYgQGZjbG9zZSgkZikpIHsKCQkJbGlzdGluZ19wYWdlKG5vdGljZSgnc2F2ZWQnLCAkZmlsZSkpOwoJCX0gZWxzZSB7CgkJCWxpc3RpbmdfcGFnZShlcnJvcignbm90X3NhdmVkJywgJGZpbGUpKTsKCQl9CgoJfSBlbHNlIHsKCgkJaWYgKEBpc19yZWFkYWJsZSgkZmlsZSkgJiYgQGlzX3dyaXRhYmxlKCRmaWxlKSkgewoJCQllZGl0KCRmaWxlKTsKCQl9IGVsc2UgewoJCQlsaXN0aW5nX3BhZ2UoZXJyb3IoJ25vdF9lZGl0ZWQnLCAkZmlsZSkpOwoJCX0KCgl9CgoJYnJlYWs7CgpjYXNlICdwZXJtaXNzaW9uJzoKCglpZiAoIWVtcHR5KCRfUE9TVFsnc2V0J10pKSB7CgoJCSRtb2RlID0gMDsKCQlpZiAoIWVtcHR5KCRfUE9TVFsndXInXSkpICRtb2RlIHw9IDA0MDA7IGlmICghZW1wdHkoJF9QT1NUWyd1dyddKSkgJG1vZGUgfD0gMDIwMDsgaWYgKCFlbXB0eSgkX1BPU1RbJ3V4J10pKSAkbW9kZSB8PSAwMTAwOwoJCWlmICghZW1wdHkoJF9QT1NUWydnciddKSkgJG1vZGUgfD0gMDA0MDsgaWYgKCFlbXB0eSgkX1BPU1RbJ2d3J10pKSAkbW9kZSB8PSAwMDIwOyBpZiAoIWVtcHR5KCRfUE9TVFsnZ3gnXSkpICRtb2RlIHw9IDAwMTA7CgkJaWYgKCFlbXB0eSgkX1BPU1RbJ29yJ10pKSAkbW9kZSB8PSAwMDA0OyBpZiAoIWVtcHR5KCRfUE9TVFsnb3cnXSkpICRtb2RlIHw9IDAwMDI7IGlmICghZW1wdHkoJF9QT1NUWydveCddKSkgJG1vZGUgfD0gMDAwMTsKCgkJaWYgKEBjaG1vZCgkZmlsZSwgJG1vZGUpKSB7CgkJCWxpc3RpbmdfcGFnZShub3RpY2UoJ3Blcm1pc3Npb25fc2V0JywgJGZpbGUsIGRlY29jdCgkbW9kZSkpKTsKCQl9IGVsc2UgewoJCQlsaXN0aW5nX3BhZ2UoZXJyb3IoJ3Blcm1pc3Npb25fbm90X3NldCcsICRmaWxlLCBkZWNvY3QoJG1vZGUpKSk7CgkJfQoKCX0gZWxzZSB7CgoJCWh0bWxfaGVhZGVyKCk7CgoJCSRtb2RlID0gZmlsZXBlcm1zKCRmaWxlKTsKCgkJZWNobyAnPGZvcm0gYWN0aW9uPSInIC4gJHNlbGYgLiAnIiBtZXRob2Q9InBvc3QiPgoKPHRhYmxlIGNsYXNzPSJkaWFsb2ciPgo8dHI+Cjx0ZCBjbGFzcz0iZGlhbG9nIj4KCgk8cCBzdHlsZT0ibWFyZ2luOiAwIj4nIC4gcGhyYXNlKCdwZXJtaXNzaW9uX2ZvcicsICRmaWxlKSAuICc8L3A+CgoJPGhyIC8+CgoJPHRhYmxlIGlkPSJwZXJtaXNzaW9uIj4KCTx0cj4KCQk8dGQ+PC90ZD4KCQk8dGQgc3R5bGU9ImJvcmRlci1yaWdodDogMXB4IHNvbGlkIGJsYWNrIj4nIC4gd29yZCgnb3duZXInKSAuICc8L3RkPgoJCTx0ZCBzdHlsZT0iYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgYmxhY2siPicgLiB3b3JkKCdncm91cCcpIC4gJzwvdGQ+CgkJPHRkPicgLiB3b3JkKCdvdGhlcicpIC4gJzwvdGQ+Cgk8L3RyPgoJPHRyPgoJCTx0ZCBzdHlsZT0idGV4dC1hbGlnbjogcmlnaHQiPicgLiB3b3JkKCdyZWFkJykgLiAnOjwvdGQ+CgkJPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0idXIiIHZhbHVlPSIxIic7IGlmICgkbW9kZSAmIDAwNDAwKSBlY2hvICcgY2hlY2tlZD0iY2hlY2tlZCInOyBlY2hvICcgLz48L3RkPgoJCTx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9ImdyIiB2YWx1ZT0iMSInOyBpZiAoJG1vZGUgJiAwMDA0MCkgZWNobyAnIGNoZWNrZWQ9ImNoZWNrZWQiJzsgZWNobyAnIC8+PC90ZD4KCQk8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJvciIgdmFsdWU9IjEiJzsgaWYgKCRtb2RlICYgMDAwMDQpIGVjaG8gJyBjaGVja2VkPSJjaGVja2VkIic7IGVjaG8gJyAvPjwvdGQ+Cgk8L3RyPgoJPHRyPgoJCTx0ZCBzdHlsZT0idGV4dC1hbGlnbjogcmlnaHQiPicgLiB3b3JkKCd3cml0ZScpIC4gJzo8L3RkPgoJCTx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InV3IiB2YWx1ZT0iMSInOyBpZiAoJG1vZGUgJiAwMDIwMCkgZWNobyAnIGNoZWNrZWQ9ImNoZWNrZWQiJzsgZWNobyAnIC8+PC90ZD4KCQk8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJndyIgdmFsdWU9IjEiJzsgaWYgKCRtb2RlICYgMDAwMjApIGVjaG8gJyBjaGVja2VkPSJjaGVja2VkIic7IGVjaG8gJyAvPjwvdGQ+CgkJPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ib3ciIHZhbHVlPSIxIic7IGlmICgkbW9kZSAmIDAwMDAyKSBlY2hvICcgY2hlY2tlZD0iY2hlY2tlZCInOyBlY2hvICcgLz48L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0Ij4nIC4gd29yZCgnZXhlY3V0ZScpIC4gJzo8L3RkPgoJCTx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InV4IiB2YWx1ZT0iMSInOyBpZiAoJG1vZGUgJiAwMDEwMCkgZWNobyAnIGNoZWNrZWQ9ImNoZWNrZWQiJzsgZWNobyAnIC8+PC90ZD4KCQk8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJneCIgdmFsdWU9IjEiJzsgaWYgKCRtb2RlICYgMDAwMTApIGVjaG8gJyBjaGVja2VkPSJjaGVja2VkIic7IGVjaG8gJyAvPjwvdGQ+CgkJPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ib3giIHZhbHVlPSIxIic7IGlmICgkbW9kZSAmIDAwMDAxKSBlY2hvICcgY2hlY2tlZD0iY2hlY2tlZCInOyBlY2hvICcgLz48L3RkPgoJPC90cj4KCTwvdGFibGU+CgoJPGhyIC8+CgoJPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic2V0IiB2YWx1ZT0iJyAuIHdvcmQoJ3NldCcpIC4gJyIgLz4KCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3Rpb24iIHZhbHVlPSJwZXJtaXNzaW9uIiAvPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZmlsZSIgdmFsdWU9IicgLiBodG1sKCRmaWxlKSAuICciIC8+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkaXIiIHZhbHVlPSInIC4gaHRtbCgkZGlyZWN0b3J5KSAuICciIC8+Cgo8L3RkPgo8L3RyPgo8L3RhYmxlPgoKPHA+PGEgaHJlZj0iJyAuICRzZWxmIC4gJz9kaXI9JyAuIHVybGVuY29kZSgkZGlyZWN0b3J5KSAuICciPlsgJyAuIHdvcmQoJ2JhY2snKSAuICcgXTwvYT48L3A+Cgo8L2Zvcm0+CgonOwoKCQlodG1sX2Zvb3RlcigpOwoKCX0KCglicmVhazsKCmRlZmF1bHQ6CgoJbGlzdGluZ19wYWdlKCk7Cgp9CgovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCgpmdW5jdGlvbiBnZXRsaXN0ICgkZGlyZWN0b3J5KSB7CglnbG9iYWwgJGRlbGltLCAkd2luOwoKCWlmICgkZCA9IEBvcGVuZGlyKCRkaXJlY3RvcnkpKSB7CgoJCXdoaWxlICgoJGZpbGVuYW1lID0gQHJlYWRkaXIoJGQpKSAhPT0gZmFsc2UpIHsKCgkJCSRwYXRoID0gJGRpcmVjdG9yeSAuICRmaWxlbmFtZTsKCgkJCWlmICgkc3RhdCA9IEBsc3RhdCgkcGF0aCkpIHsKCgkJCQkkZmlsZSA9IGFycmF5KAoJCQkJCSdmaWxlbmFtZScgICAgPT4gJGZpbGVuYW1lLAoJCQkJCSdwYXRoJyAgICAgICAgPT4gJHBhdGgsCgkJCQkJJ2lzX2ZpbGUnICAgICA9PiBAaXNfZmlsZSgkcGF0aCksCgkJCQkJJ2lzX2RpcicgICAgICA9PiBAaXNfZGlyKCRwYXRoKSwKCQkJCQknaXNfbGluaycgICAgID0+IEBpc19saW5rKCRwYXRoKSwKCQkJCQknaXNfcmVhZGFibGUnID0+IEBpc19yZWFkYWJsZSgkcGF0aCksCgkJCQkJJ2lzX3dyaXRhYmxlJyA9PiBAaXNfd3JpdGFibGUoJHBhdGgpLAoJCQkJCSdzaXplJyAgICAgICAgPT4gJHN0YXRbJ3NpemUnXSwKCQkJCQkncGVybWlzc2lvbicgID0+ICRzdGF0Wydtb2RlJ10sCgkJCQkJJ293bmVyJyAgICAgICA9PiAkc3RhdFsndWlkJ10sCgkJCQkJJ2dyb3VwJyAgICAgICA9PiAkc3RhdFsnZ2lkJ10sCgkJCQkJJ210aW1lJyAgICAgICA9PiBAZmlsZW10aW1lKCRwYXRoKSwKCQkJCQknYXRpbWUnICAgICAgID0+IEBmaWxlYXRpbWUoJHBhdGgpLAoJCQkJCSdjdGltZScgICAgICAgPT4gQGZpbGVjdGltZSgkcGF0aCkKCQkJCSk7CgoJCQkJaWYgKCRmaWxlWydpc19kaXInXSkgewoJCQkJCSRmaWxlWydpc19leGVjdXRhYmxlJ10gPSBAZmlsZV9leGlzdHMoJHBhdGggLiAkZGVsaW0gLiAnLicpOwoJCQkJfSBlbHNlIHsKCQkJCQlpZiAoISR3aW4pIHsKCQkJCQkJJGZpbGVbJ2lzX2V4ZWN1dGFibGUnXSA9IEBpc19leGVjdXRhYmxlKCRwYXRoKTsKCQkJCQl9IGVsc2UgewoJCQkJCQkkZmlsZVsnaXNfZXhlY3V0YWJsZSddID0gdHJ1ZTsKCQkJCQl9CgkJCQl9CgoJCQkJaWYgKCRmaWxlWydpc19saW5rJ10pICRmaWxlWyd0YXJnZXQnXSA9IEByZWFkbGluaygkcGF0aCk7CgoJCQkJaWYgKGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0cHd1aWQnKSkgJGZpbGVbJ293bmVyX25hbWUnXSA9IEByZXNldChwb3NpeF9nZXRwd3VpZCgkZmlsZVsnb3duZXInXSkpOwoJCQkJaWYgKGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0Z3JnaWQnKSkgJGZpbGVbJ2dyb3VwX25hbWUnXSA9IEByZXNldChwb3NpeF9nZXRncmdpZCgkZmlsZVsnZ3JvdXAnXSkpOwoKCQkJCSRmaWxlc1tdID0gJGZpbGU7CgoJCQl9CgoJCX0KCgkJcmV0dXJuICRmaWxlczsKCgl9IGVsc2UgewoJCXJldHVybiBmYWxzZTsKCX0KCn0KCmZ1bmN0aW9uIHNvcnRsaXN0ICgkbGlzdCwgJGtleSwgJHJldmVyc2UpIHsKCgkkZGlycyA9IGFycmF5KCk7CgkkZmlsZXMgPSBhcnJheSgpOwoJCglmb3IgKCRpID0gMDsgJGkgPCBzaXplb2YoJGxpc3QpOyAkaSsrKSB7CgkJaWYgKCRsaXN0WyRpXVsnaXNfZGlyJ10pICRkaXJzW10gPSAkbGlzdFskaV07CgkJZWxzZSAkZmlsZXNbXSA9ICRsaXN0WyRpXTsKCX0KCglxdWlja3NvcnQoJGRpcnMsIDAsIHNpemVvZigkZGlycykgLSAxLCAka2V5KTsKCWlmICgkcmV2ZXJzZSkgJGRpcnMgPSBhcnJheV9yZXZlcnNlKCRkaXJzKTsKCglxdWlja3NvcnQoJGZpbGVzLCAwLCBzaXplb2YoJGZpbGVzKSAtIDEsICRrZXkpOwoJaWYgKCRyZXZlcnNlKSAkZmlsZXMgPSBhcnJheV9yZXZlcnNlKCRmaWxlcyk7CgoJcmV0dXJuIGFycmF5X21lcmdlKCRkaXJzLCAkZmlsZXMpOwoKfQoKZnVuY3Rpb24gcXVpY2tzb3J0ICgmJGFycmF5LCAkZmlyc3QsICRsYXN0LCAka2V5KSB7CgoJaWYgKCRmaXJzdCA8ICRsYXN0KSB7CgoJCSRjbXAgPSAkYXJyYXlbZmxvb3IoKCRmaXJzdCArICRsYXN0KSAvIDIpXVska2V5XTsKCgkJJGwgPSAkZmlyc3Q7CgkJJHIgPSAkbGFzdDsKCgkJd2hpbGUgKCRsIDw9ICRyKSB7CgoJCQl3aGlsZSAoJGFycmF5WyRsXVska2V5XSA8ICRjbXApICRsKys7CgkJCXdoaWxlICgkYXJyYXlbJHJdWyRrZXldID4gJGNtcCkgJHItLTsKCgkJCWlmICgkbCA8PSAkcikgewoKCQkJCSR0bXAgPSAkYXJyYXlbJGxdOwoJCQkJJGFycmF5WyRsXSA9ICRhcnJheVskcl07CgkJCQkkYXJyYXlbJHJdID0gJHRtcDsKCgkJCQkkbCsrOwoJCQkJJHItLTsKCgkJCX0KCgkJfQoKCQlxdWlja3NvcnQoJGFycmF5LCAkZmlyc3QsICRyLCAka2V5KTsKCQlxdWlja3NvcnQoJGFycmF5LCAkbCwgJGxhc3QsICRrZXkpOwoKCX0KCn0KCmZ1bmN0aW9uIHBlcm1pc3Npb25fb2N0YWwyc3RyaW5nICgkbW9kZSkgewoKCWlmICgoJG1vZGUgJiAweEMwMDApID09PSAweEMwMDApIHsKCQkkdHlwZSA9ICdzJzsKCX0gZWxzZWlmICgoJG1vZGUgJiAweEEwMDApID09PSAweEEwMDApIHsKCQkkdHlwZSA9ICdsJzsKCX0gZWxzZWlmICgoJG1vZGUgJiAweDgwMDApID09PSAweDgwMDApIHsKCQkkdHlwZSA9ICctJzsKCX0gZWxzZWlmICgoJG1vZGUgJiAweDYwMDApID09PSAweDYwMDApIHsKCQkkdHlwZSA9ICdiJzsKCX0gZWxzZWlmICgoJG1vZGUgJiAweDQwMDApID09PSAweDQwMDApIHsKCQkkdHlwZSA9ICdkJzsKCX0gZWxzZWlmICgoJG1vZGUgJiAweDIwMDApID09PSAweDIwMDApIHsKCQkkdHlwZSA9ICdjJzsKCX0gZWxzZWlmICgoJG1vZGUgJiAweDEwMDApID09PSAweDEwMDApIHsKCQkkdHlwZSA9ICdwJzsKCX0gZWxzZSB7CgkJJHR5cGUgPSAnPyc7Cgl9CgoJJG93bmVyICA9ICgkbW9kZSAmIDAwNDAwKSA/ICdyJyA6ICctJzsKCSRvd25lciAuPSAoJG1vZGUgJiAwMDIwMCkgPyAndycgOiAnLSc7CglpZiAoJG1vZGUgJiAweDgwMCkgewoJCSRvd25lciAuPSAoJG1vZGUgJiAwMDEwMCkgPyAncycgOiAnUyc7Cgl9IGVsc2UgewoJCSRvd25lciAuPSAoJG1vZGUgJiAwMDEwMCkgPyAneCcgOiAnLSc7Cgl9CgoJJGdyb3VwICA9ICgkbW9kZSAmIDAwMDQwKSA/ICdyJyA6ICctJzsKCSRncm91cCAuPSAoJG1vZGUgJiAwMDAyMCkgPyAndycgOiAnLSc7CglpZiAoJG1vZGUgJiAweDQwMCkgewoJCSRncm91cCAuPSAoJG1vZGUgJiAwMDAxMCkgPyAncycgOiAnUyc7Cgl9IGVsc2UgewoJCSRncm91cCAuPSAoJG1vZGUgJiAwMDAxMCkgPyAneCcgOiAnLSc7Cgl9CgoJJG90aGVyICA9ICgkbW9kZSAmIDAwMDA0KSA/ICdyJyA6ICctJzsKCSRvdGhlciAuPSAoJG1vZGUgJiAwMDAwMikgPyAndycgOiAnLSc7CglpZiAoJG1vZGUgJiAweDIwMCkgewoJCSRvdGhlciAuPSAoJG1vZGUgJiAwMDAwMSkgPyAndCcgOiAnVCc7Cgl9IGVsc2UgewoJCSRvdGhlciAuPSAoJG1vZGUgJiAwMDAwMSkgPyAneCcgOiAnLSc7Cgl9CgoJcmV0dXJuICR0eXBlIC4gJG93bmVyIC4gJGdyb3VwIC4gJG90aGVyOwoKfQoKZnVuY3Rpb24gaXNfc2NyaXB0ICgkZmlsZW5hbWUpIHsKCXJldHVybiBlcmVnKCdcLnBocCR8XC5waHAzJHxcLnBocDQkfFwucGhwNSQnLCAkZmlsZW5hbWUpOwp9CgpmdW5jdGlvbiBnZXRtaW1ldHlwZSAoJGZpbGVuYW1lKSB7CglzdGF0aWMgJG1pbWVzID0gYXJyYXkoCgkJJ1wuanBnJHxcLmpwZWckJyAgPT4gJ2ltYWdlL2pwZWcnLAoJCSdcLmdpZiQnICAgICAgICAgID0+ICdpbWFnZS9naWYnLAoJCSdcLnBuZyQnICAgICAgICAgID0+ICdpbWFnZS9wbmcnLAoJCSdcLmh0bWwkfFwuaHRtbCQnID0+ICd0ZXh0L2h0bWwnLAoJCSdcLnR4dCR8XC5hc2MkJyAgID0+ICd0ZXh0L3BsYWluJywKCQknXC54bWwkfFwueHNsJCcgICA9PiAnYXBwbGljYXRpb24veG1sJywKCQknXC5wZGYkJyAgICAgICAgICA9PiAnYXBwbGljYXRpb24vcGRmJwoJKTsKCglmb3JlYWNoICgkbWltZXMgYXMgJHJlZ2V4ID0+ICRtaW1lKSB7CgkJaWYgKGVyZWdpKCRyZWdleCwgJGZpbGVuYW1lKSkgcmV0dXJuICRtaW1lOwoJfQoKCS8vIHJldHVybiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJzsKCXJldHVybiAndGV4dC9wbGFpbic7Cgp9CgpmdW5jdGlvbiBkZWwgKCRmaWxlKSB7CglnbG9iYWwgJGRlbGltOwoKCWlmICghZmlsZV9leGlzdHMoJGZpbGUpKSByZXR1cm4gZmFsc2U7CgoJaWYgKEBpc19kaXIoJGZpbGUpICYmICFAaXNfbGluaygkZmlsZSkpIHsKCgkJJHN1Y2Nlc3MgPSBmYWxzZTsKCgkJaWYgKEBybWRpcigkZmlsZSkpIHsKCgkJCSRzdWNjZXNzID0gdHJ1ZTsKCgkJfSBlbHNlaWYgKCRkaXIgPSBAb3BlbmRpcigkZmlsZSkpIHsKCgkJCSRzdWNjZXNzID0gdHJ1ZTsKCgkJCXdoaWxlICgoJGYgPSByZWFkZGlyKCRkaXIpKSAhPT0gZmFsc2UpIHsKCQkJCWlmICgkZiAhPSAnLicgJiYgJGYgIT0gJy4uJyAmJiAhZGVsKCRmaWxlIC4gJGRlbGltIC4gJGYpKSB7CgkJCQkJJHN1Y2Nlc3MgPSBmYWxzZTsKCQkJCX0KCQkJfQoJCQljbG9zZWRpcigkZGlyKTsKCgkJCWlmICgkc3VjY2VzcykgJHN1Y2Nlc3MgPSBAcm1kaXIoJGZpbGUpOwoKCQl9CgoJCXJldHVybiAkc3VjY2VzczsKCgl9CgoJcmV0dXJuIEB1bmxpbmsoJGZpbGUpOwoKfQoKZnVuY3Rpb24gYWRkc2xhc2ggKCRkaXJlY3RvcnkpIHsKCWdsb2JhbCAkZGVsaW07CgoJaWYgKHN1YnN0cigkZGlyZWN0b3J5LCAtMSwgMSkgIT0gJGRlbGltKSB7CgkJcmV0dXJuICRkaXJlY3RvcnkgLiAkZGVsaW07Cgl9IGVsc2UgewoJCXJldHVybiAkZGlyZWN0b3J5OwoJfQoKfQoKZnVuY3Rpb24gcmVsYXRpdmUyYWJzb2x1dGUgKCRzdHJpbmcsICRkaXJlY3RvcnkpIHsKCglpZiAocGF0aF9pc19yZWxhdGl2ZSgkc3RyaW5nKSkgewoJCXJldHVybiBzaW1wbGlmeV9wYXRoKGFkZHNsYXNoKCRkaXJlY3RvcnkpIC4gJHN0cmluZyk7Cgl9IGVsc2UgewoJCXJldHVybiBzaW1wbGlmeV9wYXRoKCRzdHJpbmcpOwoJfQoKfQoKZnVuY3Rpb24gcGF0aF9pc19yZWxhdGl2ZSAoJHBhdGgpIHsKCWdsb2JhbCAkd2luOwoKCWlmICgkd2luKSB7CgkJcmV0dXJuIChzdWJzdHIoJHBhdGgsIDEsIDEpICE9ICc6Jyk7Cgl9IGVsc2UgewoJCXJldHVybiAoc3Vic3RyKCRwYXRoLCAwLCAxKSAhPSAnLycpOwoJfQoKfQoKZnVuY3Rpb24gYWJzb2x1dGUycmVsYXRpdmUgKCRkaXJlY3RvcnksICR0YXJnZXQpIHsKCWdsb2JhbCAkZGVsaW07CgoJJHBhdGggPSAnJzsKCXdoaWxlICgkZGlyZWN0b3J5ICE9ICR0YXJnZXQpIHsKCQlpZiAoJGRpcmVjdG9yeSA9PSBzdWJzdHIoJHRhcmdldCwgMCwgc3RybGVuKCRkaXJlY3RvcnkpKSkgewoJCQkkcGF0aCAuPSBzdWJzdHIoJHRhcmdldCwgc3RybGVuKCRkaXJlY3RvcnkpKTsKCQkJYnJlYWs7CgkJfSBlbHNlIHsKCQkJJHBhdGggLj0gJy4uJyAuICRkZWxpbTsKCQkJJGRpcmVjdG9yeSA9IHN1YnN0cigkZGlyZWN0b3J5LCAwLCBzdHJycG9zKHN1YnN0cigkZGlyZWN0b3J5LCAwLCAtMSksICRkZWxpbSkgKyAxKTsKCQl9Cgl9CglpZiAoJHBhdGggPT0gJycpICRwYXRoID0gJy4nOwoKCXJldHVybiAkcGF0aDsKCn0KCmZ1bmN0aW9uIHNpbXBsaWZ5X3BhdGggKCRwYXRoKSB7CglnbG9iYWwgJGRlbGltOwoKCWlmIChAZmlsZV9leGlzdHMoJHBhdGgpICYmIGZ1bmN0aW9uX2V4aXN0cygncmVhbHBhdGgnKSAmJiBAcmVhbHBhdGgoJHBhdGgpICE9ICcnKSB7CgkJJHBhdGggPSByZWFscGF0aCgkcGF0aCk7CgkJaWYgKEBpc19kaXIoJHBhdGgpKSB7CgkJCXJldHVybiBhZGRzbGFzaCgkcGF0aCk7CgkJfSBlbHNlIHsKCQkJcmV0dXJuICRwYXRoOwoJCX0KCX0KCgkkcGF0dGVybiAgPSAkZGVsaW0gLiAnLicgLiAkZGVsaW07CgoJaWYgKEBpc19kaXIoJHBhdGgpKSB7CgkJJHBhdGggPSBhZGRzbGFzaCgkcGF0aCk7Cgl9CgoJd2hpbGUgKHN0cnBvcygkcGF0aCwgJHBhdHRlcm4pICE9PSBmYWxzZSkgewoJCSRwYXRoID0gc3RyX3JlcGxhY2UoJHBhdHRlcm4sICRkZWxpbSwgJHBhdGgpOwoJfQoKCSRlID0gYWRkc2xhc2hlcygkZGVsaW0pOwoJJHJlZ2V4ID0gJGUgLiAnKChcLlteXC4nIC4gJGUgLiAnXVteJyAuICRlIC4gJ10qKXwoXC5cLlteJyAuICRlIC4gJ10rKXwoW15cLl1bXicgLiAkZSAuICddKikpJyAuICRlIC4gJ1wuXC4nIC4gJGU7CgoJd2hpbGUgKGVyZWcoJHJlZ2V4LCAkcGF0aCkpIHsKCQkkcGF0aCA9IGVyZWdfcmVwbGFjZSgkcmVnZXgsICRkZWxpbSwgJHBhdGgpOwoJfQoJCglyZXR1cm4gJHBhdGg7Cgp9CgpmdW5jdGlvbiBodW1hbl9maWxlc2l6ZSAoJGZpbGVzaXplKSB7CgoJJHN1ZmZpY2VzID0gJ2tNR1RQRSc7CgoJJG4gPSAwOwoJd2hpbGUgKCRmaWxlc2l6ZSA+PSAxMDAwKSB7CgkJJGZpbGVzaXplIC89IDEwMjQ7CgkJJG4rKzsKCX0KCgkkZmlsZXNpemUgPSByb3VuZCgkZmlsZXNpemUsIDMgLSBzdHJwb3MoJGZpbGVzaXplLCAnLicpKTsKCglpZiAoc3RycG9zKCRmaWxlc2l6ZSwgJy4nKSAhPT0gZmFsc2UpIHsKCQl3aGlsZSAoaW5fYXJyYXkoc3Vic3RyKCRmaWxlc2l6ZSwgLTEsIDEpLCBhcnJheSgnMCcsICcuJykpKSB7CgkJCSRmaWxlc2l6ZSA9IHN1YnN0cigkZmlsZXNpemUsIDAsIHN0cmxlbigkZmlsZXNpemUpIC0gMSk7CgkJfQoJfQoKCSRzdWZmaXggPSAoKCRuID09IDApID8gJycgOiBzdWJzdHIoJHN1ZmZpY2VzLCAkbiAtIDEsIDEpKTsKCglyZXR1cm4gJGZpbGVzaXplIC4gIiB7JHN1ZmZpeH1CIjsKCn0KCmZ1bmN0aW9uIHN0cmlwICgmJHN0cikgewoJJHN0ciA9IHN0cmlwc2xhc2hlcygkc3RyKTsKfQoKLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwoKZnVuY3Rpb24gbGlzdGluZ19wYWdlICgkbWVzc2FnZSA9IG51bGwpIHsKCWdsb2JhbCAkc2VsZiwgJGRpcmVjdG9yeSwgJHNvcnQsICRyZXZlcnNlOwoKCWh0bWxfaGVhZGVyKCk7CgoJJGxpc3QgPSBnZXRsaXN0KCRkaXJlY3RvcnkpOwoKCWlmIChhcnJheV9rZXlfZXhpc3RzKCdzb3J0JywgJF9HRVQpKSAkc29ydCA9ICRfR0VUWydzb3J0J107IGVsc2UgJHNvcnQgPSAnZmlsZW5hbWUnOwoJaWYgKGFycmF5X2tleV9leGlzdHMoJ3JldmVyc2UnLCAkX0dFVCkgJiYgJF9HRVRbJ3JldmVyc2UnXSA9PSAndHJ1ZScpICRyZXZlcnNlID0gdHJ1ZTsgZWxzZSAkcmV2ZXJzZSA9IGZhbHNlOwoKCWVjaG8gJzxoMSBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMCI+d2ViYWRtaW4ucGhwPC9oMT4KCjxmb3JtIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIGFjdGlvbj0iJyAuICRzZWxmIC4gJyIgbWV0aG9kPSJwb3N0Ij4KCjx0YWJsZSBpZD0ibWFpbiI+Cic7CgoJZGlyZWN0b3J5X2Nob2ljZSgpOwoKCWlmICghZW1wdHkoJG1lc3NhZ2UpKSB7CgkJc3BhY2VyKCk7CgkJZWNobyAkbWVzc2FnZTsKCX0KCglpZiAoQGlzX3dyaXRhYmxlKCRkaXJlY3RvcnkpKSB7CgkJdXBsb2FkX2JveCgpOwoJCWNyZWF0ZV9ib3goKTsKCX0gZWxzZSB7CgkJc3BhY2VyKCk7Cgl9CgoJaWYgKCRsaXN0KSB7CgkJJGxpc3QgPSBzb3J0bGlzdCgkbGlzdCwgJHNvcnQsICRyZXZlcnNlKTsKCQlsaXN0aW5nKCRsaXN0KTsKCX0gZWxzZSB7CgkJZWNobyBlcnJvcignbm90X3JlYWRhYmxlJywgJGRpcmVjdG9yeSk7Cgl9CgoJZWNobyAnPC90YWJsZT4KCjwvZm9ybT4KCic7CgoJaHRtbF9mb290ZXIoKTsKCn0KCmZ1bmN0aW9uIGxpc3RpbmcgKCRsaXN0KSB7CglnbG9iYWwgJGRpcmVjdG9yeSwgJGhvbWVkaXIsICRzb3J0LCAkcmV2ZXJzZSwgJHdpbiwgJGNvbHMsICRkYXRlX2Zvcm1hdCwgJHNlbGY7CgoJZWNobyAnPHRyIGNsYXNzPSJsaXN0aW5nIj4KCTx0aCBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlIj48aW1nIHNyYz0iJyAuICRzZWxmIC4gJz9pbWFnZT1zbWlsZXkiIGFsdD0ic21pbGV5IiAvPjwvdGg+Cic7CgoJY29sdW1uX3RpdGxlKCdmaWxlbmFtZScsICRzb3J0LCAkcmV2ZXJzZSk7Cgljb2x1bW5fdGl0bGUoJ3NpemUnLCAkc29ydCwgJHJldmVyc2UpOwoKCWlmICghJHdpbikgewoJCWNvbHVtbl90aXRsZSgncGVybWlzc2lvbicsICRzb3J0LCAkcmV2ZXJzZSk7CgkJY29sdW1uX3RpdGxlKCdvd25lcicsICRzb3J0LCAkcmV2ZXJzZSk7CgkJY29sdW1uX3RpdGxlKCdncm91cCcsICRzb3J0LCAkcmV2ZXJzZSk7Cgl9CgoJZWNobyAnCTx0aCBjbGFzcz0iZnVuY3Rpb25zIj4nIC4gd29yZCgnZnVuY3Rpb25zJykgLiAnPC90aD4KPC90cj4KJzsKCglmb3IgKCRpID0gMDsgJGkgPCBzaXplb2YoJGxpc3QpOyAkaSsrKSB7CgkJJGZpbGUgPSAkbGlzdFskaV07CgoJCSR0aW1lc3RhbXBzICA9ICdtdGltZTogJyAuIGRhdGUoJGRhdGVfZm9ybWF0LCAkZmlsZVsnbXRpbWUnXSkgLiAnLCAnOwoJCSR0aW1lc3RhbXBzIC49ICdhdGltZTogJyAuIGRhdGUoJGRhdGVfZm9ybWF0LCAkZmlsZVsnYXRpbWUnXSkgLiAnLCAnOwoJCSR0aW1lc3RhbXBzIC49ICdjdGltZTogJyAuIGRhdGUoJGRhdGVfZm9ybWF0LCAkZmlsZVsnY3RpbWUnXSk7CgoJCWVjaG8gJzx0ciBjbGFzcz0ibGlzdGluZyI+Cgk8dGQgY2xhc3M9ImNoZWNrYm94Ij48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9ImNoZWNrZWQnIC4gJGkgLiAnIiB2YWx1ZT0idHJ1ZSIgb25mb2N1cz0iYWN0aXZhdGUoXCdvdGhlclwnKSIgLz48L3RkPgoJPHRkIGNsYXNzPSJmaWxlbmFtZSIgdGl0bGU9IicgLiBodG1sKCR0aW1lc3RhbXBzKSAuICciPic7CgoJCWlmICgkZmlsZVsnaXNfbGluayddKSB7CgoJCQllY2hvICc8aW1nIHNyYz0iJyAuICRzZWxmIC4gJz9pbWFnZT1saW5rIiBhbHQ9ImxpbmsiIC8+ICc7CgkJCWVjaG8gaHRtbCgkZmlsZVsnZmlsZW5hbWUnXSkgLiAnICZyYXJyOyAnOwoKCQkJJHJlYWxfZmlsZSA9IHJlbGF0aXZlMmFic29sdXRlKCRmaWxlWyd0YXJnZXQnXSwgJGRpcmVjdG9yeSk7CgoJCQlpZiAoQGlzX3JlYWRhYmxlKCRyZWFsX2ZpbGUpKSB7CgkJCQlpZiAoQGlzX2RpcigkcmVhbF9maWxlKSkgewoJCQkJCWVjaG8gJ1sgPGEgaHJlZj0iJyAuICRzZWxmIC4gJz9kaXI9JyAuIHVybGVuY29kZSgkcmVhbF9maWxlKSAuICciPicgLiBodG1sKCRmaWxlWyd0YXJnZXQnXSkgLiAnPC9hPiBdJzsKCQkJCX0gZWxzZSB7CgkJCQkJZWNobyAnPGEgaHJlZj0iJyAuICRzZWxmIC4gJz9hY3Rpb249dmlldyZhbXA7ZmlsZT0nIC4gdXJsZW5jb2RlKCRyZWFsX2ZpbGUpIC4gJyI+JyAuIGh0bWwoJGZpbGVbJ3RhcmdldCddKSAuICc8L2E+JzsKCQkJCX0KCQkJfSBlbHNlIHsKCQkJCWVjaG8gaHRtbCgkZmlsZVsndGFyZ2V0J10pOwoJCQl9CgoJCX0gZWxzZWlmICgkZmlsZVsnaXNfZGlyJ10pIHsKCgkJCWVjaG8gJzxpbWcgc3JjPSInIC4gJHNlbGYgLiAnP2ltYWdlPWZvbGRlciIgYWx0PSJmb2xkZXIiIC8+IFsgJzsKCQkJaWYgKCR3aW4gfHwgJGZpbGVbJ2lzX2V4ZWN1dGFibGUnXSkgewoJCQkJZWNobyAnPGEgaHJlZj0iJyAuICRzZWxmIC4gJz9kaXI9JyAuIHVybGVuY29kZSgkZmlsZVsncGF0aCddKSAuICciPicgLiBodG1sKCRmaWxlWydmaWxlbmFtZSddKSAuICc8L2E+JzsKCQkJfSBlbHNlIHsKCQkJCWVjaG8gaHRtbCgkZmlsZVsnZmlsZW5hbWUnXSk7CgkJCX0KCQkJZWNobyAnIF0nOwoKCQl9IGVsc2UgewoKCQkJaWYgKHN1YnN0cigkZmlsZVsnZmlsZW5hbWUnXSwgMCwgMSkgPT0gJy4nKSB7CgkJCQllY2hvICc8aW1nIHNyYz0iJyAuICRzZWxmIC4gJz9pbWFnZT1oaWRkZW5fZmlsZSIgYWx0PSJoaWRkZW4gZmlsZSIgLz4gJzsKCQkJfSBlbHNlIHsKCQkJCWVjaG8gJzxpbWcgc3JjPSInIC4gJHNlbGYgLiAnP2ltYWdlPWZpbGUiIGFsdD0iZmlsZSIgLz4gJzsKCQkJfQoKCQkJaWYgKCRmaWxlWydpc19maWxlJ10gJiYgJGZpbGVbJ2lzX3JlYWRhYmxlJ10pIHsKCQkJICAgZWNobyAnPGEgaHJlZj0iJyAuICRzZWxmIC4gJz9hY3Rpb249dmlldyZhbXA7ZmlsZT0nIC4gdXJsZW5jb2RlKCRmaWxlWydwYXRoJ10pIC4gJyI+JyAuIGh0bWwoJGZpbGVbJ2ZpbGVuYW1lJ10pIC4gJzwvYT4nOwoJCQl9IGVsc2UgewoJCQkJZWNobyBodG1sKCRmaWxlWydmaWxlbmFtZSddKTsKCQkJfQoKCQl9CgoJCWlmICgkZmlsZVsnc2l6ZSddID49IDEwMDApIHsKCQkJJGh1bWFuID0gJyB0aXRsZT0iJyAuIGh1bWFuX2ZpbGVzaXplKCRmaWxlWydzaXplJ10pIC4gJyInOwoJCX0gZWxzZSB7CgkJCSRodW1hbiA9ICcnOwoJCX0KCgkJZWNobyAiPC90ZD5cbiI7CgoJCWVjaG8gIlx0PHRkIGNsYXNzPVwic2l6ZVwiJGh1bWFuPnskZmlsZVsnc2l6ZSddfSBCPC90ZD5cbiI7CgoJCWlmICghJHdpbikgewoKCQkJZWNobyAiXHQ8dGQgY2xhc3M9XCJwZXJtaXNzaW9uXCIgdGl0bGU9XCIiIC4gZGVjb2N0KCRmaWxlWydwZXJtaXNzaW9uJ10pIC4gJyI+JzsKCgkJCSRsID0gISRmaWxlWydpc19saW5rJ10gJiYgKCFmdW5jdGlvbl9leGlzdHMoJ3Bvc2l4X2dldHVpZCcpIHx8ICRmaWxlWydvd25lciddID09IHBvc2l4X2dldHVpZCgpKTsKCQkJaWYgKCRsKSBlY2hvICc8YSBocmVmPSInIC4gJHNlbGYgLiAnP2FjdGlvbj1wZXJtaXNzaW9uJmFtcDtmaWxlPScgLiB1cmxlbmNvZGUoJGZpbGVbJ3BhdGgnXSkgLiAnJmFtcDtkaXI9JyAuIHVybGVuY29kZSgkZGlyZWN0b3J5KSAuICciPic7CgkJCWVjaG8gaHRtbChwZXJtaXNzaW9uX29jdGFsMnN0cmluZygkZmlsZVsncGVybWlzc2lvbiddKSk7CgkJCWlmICgkbCkgZWNobyAnPC9hPic7CgoJCQllY2hvICI8L3RkPlxuIjsKCgkJCWlmIChhcnJheV9rZXlfZXhpc3RzKCdvd25lcl9uYW1lJywgJGZpbGUpKSB7CgkJCQllY2hvICJcdDx0ZCBjbGFzcz1cIm93bmVyXCIgdGl0bGU9XCJ1aWQ6IHskZmlsZVsnb3duZXInXX1cIj57JGZpbGVbJ293bmVyX25hbWUnXX08L3RkPlxuIjsKCQkJfSBlbHNlIHsKCQkJCWVjaG8gIlx0PHRkIGNsYXNzPVwib3duZXJcIj57JGZpbGVbJ293bmVyJ119PC90ZD5cbiI7CgkJCX0KCgkJCWlmIChhcnJheV9rZXlfZXhpc3RzKCdncm91cF9uYW1lJywgJGZpbGUpKSB7CgkJCQllY2hvICJcdDx0ZCBjbGFzcz1cImdyb3VwXCIgdGl0bGU9XCJnaWQ6IHskZmlsZVsnZ3JvdXAnXX1cIj57JGZpbGVbJ2dyb3VwX25hbWUnXX08L3RkPlxuIjsKCQkJfSBlbHNlIHsKCQkJCWVjaG8gIlx0PHRkIGNsYXNzPVwiZ3JvdXBcIj57JGZpbGVbJ2dyb3VwJ119PC90ZD5cbiI7CgkJCX0KCgkJfQoKCQllY2hvICcJPHRkIGNsYXNzPSJmdW5jdGlvbnMiPgoJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZpbGUnIC4gJGkgLiAnIiB2YWx1ZT0iJyAuIGh0bWwoJGZpbGVbJ3BhdGgnXSkgLiAnIiAvPgonOwoKCQkkYWN0aW9ucyA9IGFycmF5KCk7CgkJaWYgKGZ1bmN0aW9uX2V4aXN0cygnc3ltbGluaycpKSB7CgkJCSRhY3Rpb25zW10gPSAnY3JlYXRlX3N5bWxpbmsnOwoJCX0KCQlpZiAoQGlzX3dyaXRhYmxlKGRpcm5hbWUoJGZpbGVbJ3BhdGgnXSkpKSB7CgkJCSRhY3Rpb25zW10gPSAnZGVsZXRlJzsKCQkJJGFjdGlvbnNbXSA9ICdyZW5hbWUnOwoJCQkkYWN0aW9uc1tdID0gJ21vdmUnOwoJCX0KCQlpZiAoJGZpbGVbJ2lzX2ZpbGUnXSAmJiAkZmlsZVsnaXNfcmVhZGFibGUnXSkgewoJCQkkYWN0aW9uc1tdID0gJ2NvcHknOwoJCQkkYWN0aW9uc1tdID0gJ2Rvd25sb2FkJzsKCQkJaWYgKCRmaWxlWydpc193cml0YWJsZSddKSAkYWN0aW9uc1tdID0gJ2VkaXQnOwoJCX0KCQlpZiAoISR3aW4gJiYgZnVuY3Rpb25fZXhpc3RzKCdleGVjJykgJiYgJGZpbGVbJ2lzX2ZpbGUnXSAmJiAkZmlsZVsnaXNfZXhlY3V0YWJsZSddICYmIGZpbGVfZXhpc3RzKCcvYmluL3NoJykpIHsKCQkJJGFjdGlvbnNbXSA9ICdleGVjdXRlJzsKCQl9CgoJCWlmIChzaXplb2YoJGFjdGlvbnMpID4gMCkgewoKCQkJZWNobyAnCQk8c2VsZWN0IGNsYXNzPSJzbWFsbCIgbmFtZT0iYWN0aW9uJyAuICRpIC4gJyIgc2l6ZT0iMSI+CgkJPG9wdGlvbiB2YWx1ZT0iIj4nIC4gc3RyX3JlcGVhdCgnJm5ic3A7JywgMzApIC4gJzwvb3B0aW9uPgonOwoKCQkJZm9yZWFjaCAoJGFjdGlvbnMgYXMgJGFjdGlvbikgewoJCQkJZWNobyAiXHRcdDxvcHRpb24gdmFsdWU9XCIkYWN0aW9uXCI+IiAuIHdvcmQoJGFjdGlvbikgLiAiPC9vcHRpb24+XG4iOwoJCQl9CgoJCQllY2hvICcJCTwvc2VsZWN0PgoJCTxpbnB1dCBjbGFzcz0ic21hbGwiIHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0JyAuICRpIC4gJyIgdmFsdWU9IiAmZ3Q7ICIgb25mb2N1cz0iYWN0aXZhdGUoXCdvdGhlclwnKSIgLz4KJzsKCgkJfQoKCQllY2hvICcJPC90ZD4KPC90cj4KJzsKCgl9CgoJZWNobyAnPHRyIGNsYXNzPSJsaXN0aW5nX2Zvb3RlciI+Cgk8dGQgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0OyB2ZXJ0aWNhbC1hbGlnbjogdG9wIj48aW1nIHNyYz0iJyAuICRzZWxmIC4gJz9pbWFnZT1hcnJvdyIgYWx0PSImZ3Q7IiAvPjwvdGQ+Cgk8dGQgY29sc3Bhbj0iJyAuICgkY29scyAtIDEpIC4gJyI+CgkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibnVtIiB2YWx1ZT0iJyAuIHNpemVvZigkbGlzdCkgLiAnIiAvPgoJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZvY3VzIiB2YWx1ZT0iIiAvPgoJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Im9sZGRpciIgdmFsdWU9IicgLiBodG1sKCRkaXJlY3RvcnkpIC4gJyIgLz4KJzsKCgkkYWN0aW9ucyA9IGFycmF5KCk7CglpZiAoQGlzX3dyaXRhYmxlKGRpcm5hbWUoJGZpbGVbJ3BhdGgnXSkpKSB7CgkJJGFjdGlvbnNbXSA9ICdkZWxldGUnOwoJCSRhY3Rpb25zW10gPSAnbW92ZSc7Cgl9CgkkYWN0aW9uc1tdID0gJ2NvcHknOwoKCWVjaG8gJwkJPHNlbGVjdCBjbGFzcz0ic21hbGwiIG5hbWU9ImFjdGlvbl9hbGwiIHNpemU9IjEiPgoJCTxvcHRpb24gdmFsdWU9IiI+JyAuIHN0cl9yZXBlYXQoJyZuYnNwOycsIDMwKSAuICc8L29wdGlvbj4KJzsKCglmb3JlYWNoICgkYWN0aW9ucyBhcyAkYWN0aW9uKSB7CgkJZWNobyAiXHRcdDxvcHRpb24gdmFsdWU9XCIkYWN0aW9uXCI+IiAuIHdvcmQoJGFjdGlvbikgLiAiPC9vcHRpb24+XG4iOwoJfQoKCWVjaG8gJwkJPC9zZWxlY3Q+CgkJPGlucHV0IGNsYXNzPSJzbWFsbCIgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXRfYWxsIiB2YWx1ZT0iICZndDsgIiBvbmZvY3VzPSJhY3RpdmF0ZShcJ290aGVyXCcpIiAvPgoJPC90ZD4KPC90cj4KJzsKCn0KCmZ1bmN0aW9uIGNvbHVtbl90aXRsZSAoJGNvbHVtbiwgJHNvcnQsICRyZXZlcnNlKSB7CglnbG9iYWwgJHNlbGYsICRkaXJlY3Rvcnk7CgoJJGQgPSAnZGlyPScgLiB1cmxlbmNvZGUoJGRpcmVjdG9yeSkgLiAnJmFtcDsnOwoKCSRhcnIgPSAnJzsKCWlmICgkc29ydCA9PSAkY29sdW1uKSB7CgkJaWYgKCEkcmV2ZXJzZSkgewoJCQkkciA9ICcmYW1wO3JldmVyc2U9dHJ1ZSc7CgkJCSRhcnIgPSAnICZhbmQ7JzsKCQl9IGVsc2UgewoJCQkkYXJyID0gJyAmb3I7JzsKCQl9Cgl9IGVsc2UgewoJCSRyID0gJyc7Cgl9CgllY2hvICJcdDx0aCBjbGFzcz1cIiRjb2x1bW5cIj48YSBocmVmPVwiJHNlbGY/eyRkfXNvcnQ9JGNvbHVtbiRyXCI+IiAuIHdvcmQoJGNvbHVtbikgLiAiPC9hPiRhcnI8L3RoPlxuIjsKCn0KCmZ1bmN0aW9uIGRpcmVjdG9yeV9jaG9pY2UgKCkgewoJZ2xvYmFsICRkaXJlY3RvcnksICRob21lZGlyLCAkY29scywgJHNlbGY7CgoJZWNobyAnPHRyPgoJPHRkIGNvbHNwYW49IicgLiAkY29scyAuICciIGlkPSJkaXJlY3RvcnkiPgoJCTxhIGhyZWY9IicgLiAkc2VsZiAuICc/ZGlyPScgLiB1cmxlbmNvZGUoJGhvbWVkaXIpIC4gJyI+JyAuIHdvcmQoJ2RpcmVjdG9yeScpIC4gJzwvYT46CgkJPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImRpciIgc2l6ZT0iJyAuIHRleHRmaWVsZHNpemUoJGRpcmVjdG9yeSkgLiAnIiB2YWx1ZT0iJyAuIGh0bWwoJGRpcmVjdG9yeSkgLiAnIiBvbmZvY3VzPSJhY3RpdmF0ZShcJ2RpcmVjdG9yeVwnKSIgLz4KCQk8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJjaGFuZ2VkaXIiIHZhbHVlPSInIC4gd29yZCgnY2hhbmdlJykgLiAnIiBvbmZvY3VzPSJhY3RpdmF0ZShcJ2RpcmVjdG9yeVwnKSIgLz4KCTwvdGQ+CjwvdHI+Cic7Cgp9CgpmdW5jdGlvbiB1cGxvYWRfYm94ICgpIHsKCWdsb2JhbCAkY29sczsKCgllY2hvICc8dHI+Cgk8dGQgY29sc3Bhbj0iJyAuICRjb2xzIC4gJyIgaWQ9InVwbG9hZCI+CgkJJyAuIHdvcmQoJ2ZpbGUnKSAuICc6CgkJPGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9InVwbG9hZCIgb25mb2N1cz0iYWN0aXZhdGUoXCdvdGhlclwnKSIgLz4KCQk8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXRfdXBsb2FkIiB2YWx1ZT0iJyAuIHdvcmQoJ3VwbG9hZCcpIC4gJyIgb25mb2N1cz0iYWN0aXZhdGUoXCdvdGhlclwnKSIgLz4KCTwvdGQ+CjwvdHI+Cic7Cgp9CgpmdW5jdGlvbiBjcmVhdGVfYm94ICgpIHsKCWdsb2JhbCAkY29sczsKCgllY2hvICc8dHI+Cgk8dGQgY29sc3Bhbj0iJyAuICRjb2xzIC4gJyIgaWQ9ImNyZWF0ZSI+CgkJPHNlbGVjdCBuYW1lPSJjcmVhdGVfdHlwZSIgc2l6ZT0iMSIgb25mb2N1cz0iYWN0aXZhdGUoXCdjcmVhdGVcJykiPgoJCTxvcHRpb24gdmFsdWU9ImZpbGUiPicgLiB3b3JkKCdmaWxlJykgLiAnPC9vcHRpb24+CgkJPG9wdGlvbiB2YWx1ZT0iZGlyZWN0b3J5Ij4nIC4gd29yZCgnZGlyZWN0b3J5JykgLiAnPC9vcHRpb24+CgkJPC9zZWxlY3Q+CgkJPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImNyZWF0ZV9uYW1lIiBvbmZvY3VzPSJhY3RpdmF0ZShcJ2NyZWF0ZVwnKSIgLz4KCQk8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXRfY3JlYXRlIiB2YWx1ZT0iJyAuIHdvcmQoJ2NyZWF0ZScpIC4gJyIgb25mb2N1cz0iYWN0aXZhdGUoXCdjcmVhdGVcJykiIC8+Cgk8L3RkPgo8L3RyPgonOwoKfQoKZnVuY3Rpb24gZWRpdCAoJGZpbGUpIHsKCWdsb2JhbCAkc2VsZiwgJGRpcmVjdG9yeSwgJGVkaXRjb2xzLCAkZWRpdHJvd3MsICRhcGFjaGUsICRodHBhc3N3ZCwgJGh0YWNjZXNzOwoKCWh0bWxfaGVhZGVyKCk7CgoJZWNobyAnPGgyIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAzcHQiPicgLiBodG1sKCRmaWxlKSAuICc8L2gyPgoKPGZvcm0gYWN0aW9uPSInIC4gJHNlbGYgLiAnIiBtZXRob2Q9InBvc3QiPgoKPHRhYmxlIGNsYXNzPSJkaWFsb2ciPgo8dHI+Cjx0ZCBjbGFzcz0iZGlhbG9nIj4KCgk8dGV4dGFyZWEgbmFtZT0iY29udGVudCIgY29scz0iJyAuICRlZGl0Y29scyAuICciIHJvd3M9IicgLiAkZWRpdHJvd3MgLiAnIiBXUkFQPSJvZmYiPic7CgoJaWYgKGFycmF5X2tleV9leGlzdHMoJ2NvbnRlbnQnLCAkX1BPU1QpKSB7CgkJZWNobyAkX1BPU1RbJ2NvbnRlbnQnXTsKCX0gZWxzZSB7CgkJJGYgPSBmb3BlbigkZmlsZSwgJ3InKTsKCQl3aGlsZSAoIWZlb2YoJGYpKSB7CgkJCWVjaG8gaHRtbChmcmVhZCgkZiwgODE5MikpOwoJCX0KCQlmY2xvc2UoJGYpOwoJfQoKCWlmICghZW1wdHkoJF9QT1NUWyd1c2VyJ10pKSB7CgkJZWNobyAiXG4iIC4gJF9QT1NUWyd1c2VyJ10gLiAnOicgLiBjcnlwdCgkX1BPU1RbJ3Bhc3N3b3JkJ10pOwoJfQoJaWYgKCFlbXB0eSgkX1BPU1RbJ2Jhc2ljX2F1dGgnXSkpIHsKCQlpZiAoJHdpbikgewoJCQkkYXV0aGZpbGUgPSBzdHJfcmVwbGFjZSgnXFwnLCAnLycsICRkaXJlY3RvcnkpIC4gJGh0cGFzc3dkOwoJCX0gZWxzZSB7CgkJCSRhdXRoZmlsZSA9ICRkaXJlY3RvcnkgLiAkaHRwYXNzd2Q7CgkJfQoJCWVjaG8gIlxuQXV0aFR5cGUgQmFzaWNcbkF1dGhOYW1lICZxdW90O1Jlc3RyaWN0ZWQgRGlyZWN0b3J5JnF1b3Q7XG4iOwoJCWVjaG8gJ0F1dGhVc2VyRmlsZSAmcXVvdDsnIC4gaHRtbCgkYXV0aGZpbGUpIC4gIiZxdW90O1xuIjsKCQllY2hvICdSZXF1aXJlIHZhbGlkLXVzZXInOwoJfQoKCWVjaG8gJzwvdGV4dGFyZWE+CgoJPGhyIC8+Cic7CgoJaWYgKCRhcGFjaGUgJiYgYmFzZW5hbWUoJGZpbGUpID09ICRodHBhc3N3ZCkgewoJCWVjaG8gJwoJJyAuIHdvcmQoJ3VzZXInKSAuICc6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ1c2VyIiAvPgoJJyAuIHdvcmQoJ3Bhc3N3b3JkJykgLiAnOiA8aW5wdXQgdHlwZT0icGFzc3dvcmQiIG5hbWU9InBhc3N3b3JkIiAvPgoJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IicgLiB3b3JkKCdhZGQnKSAuICciIC8+CgoJPGhyIC8+Cic7CgoJfQoKCWlmICgkYXBhY2hlICYmIGJhc2VuYW1lKCRmaWxlKSA9PSAkaHRhY2Nlc3MpIHsKCQllY2hvICcKCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9ImJhc2ljX2F1dGgiIHZhbHVlPSInIC4gd29yZCgnYWRkX2Jhc2ljX2F1dGgnKSAuICciIC8+CgoJPGhyIC8+Cic7CgoJfQoKCWVjaG8gJwoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0aW9uIiB2YWx1ZT0iZWRpdCIgLz4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZpbGUiIHZhbHVlPSInIC4gaHRtbCgkZmlsZSkgLiAnIiAvPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGlyIiB2YWx1ZT0iJyAuIGh0bWwoJGRpcmVjdG9yeSkgLiAnIiAvPgoJPGlucHV0IHR5cGU9InJlc2V0IiB2YWx1ZT0iJyAuIHdvcmQoJ3Jlc2V0JykgLiAnIiBpZD0icmVkX2J1dHRvbiIgLz4KCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InNhdmUiIHZhbHVlPSInIC4gd29yZCgnc2F2ZScpIC4gJyIgaWQ9ImdyZWVuX2J1dHRvbiIgc3R5bGU9Im1hcmdpbi1sZWZ0OiA1MHB4IiAvPgoKPC90ZD4KPC90cj4KPC90YWJsZT4KCjxwPjxhIGhyZWY9IicgLiAkc2VsZiAuICc/ZGlyPScgLiB1cmxlbmNvZGUoJGRpcmVjdG9yeSkgLiAnIj5bICcgLiB3b3JkKCdiYWNrJykgLiAnIF08L2E+PC9wPgoKPC9mb3JtPgoKJzsKCglodG1sX2Zvb3RlcigpOwoKfQoKZnVuY3Rpb24gc3BhY2VyICgpIHsKCWdsb2JhbCAkY29sczsKCgllY2hvICc8dHI+Cgk8dGQgY29sc3Bhbj0iJyAuICRjb2xzIC4gJyIgc3R5bGU9ImhlaWdodDogMWVtIj48L3RkPgo8L3RyPgonOwoKfQoKZnVuY3Rpb24gdGV4dGZpZWxkc2l6ZSAoJGNvbnRlbnQpIHsKCgkkc2l6ZSA9IHN0cmxlbigkY29udGVudCkgKyA1OwoJaWYgKCRzaXplIDwgMzApICRzaXplID0gMzA7CgoJcmV0dXJuICRzaXplOwoKfQoKZnVuY3Rpb24gcmVxdWVzdF9kdW1wICgpIHsKCglmb3JlYWNoICgkX1JFUVVFU1QgYXMgJGtleSA9PiAkdmFsdWUpIHsKCQllY2hvICJcdDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cIiIgLiBodG1sKCRrZXkpIC4gJyIgdmFsdWU9IicgLiBodG1sKCR2YWx1ZSkgLiAiXCIgLz5cbiI7Cgl9Cgp9CgovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCgpmdW5jdGlvbiBodG1sICgkc3RyaW5nKSB7CglnbG9iYWwgJHNpdGVfY2hhcnNldDsKCXJldHVybiBodG1sZW50aXRpZXMoJHN0cmluZywgRU5UX0NPTVBBVCwgJHNpdGVfY2hhcnNldCk7Cn0KCmZ1bmN0aW9uIHdvcmQgKCR3b3JkKSB7CglnbG9iYWwgJHdvcmRzLCAkd29yZF9jaGFyc2V0OwoJcmV0dXJuIGh0bWxlbnRpdGllcygkd29yZHNbJHdvcmRdLCBFTlRfQ09NUEFULCAkd29yZF9jaGFyc2V0KTsKfQoKZnVuY3Rpb24gcGhyYXNlICgkcGhyYXNlLCAkYXJndW1lbnRzKSB7CglnbG9iYWwgJHdvcmRzOwoJc3RhdGljICRzZWFyY2g7CgoJaWYgKCFpc19hcnJheSgkc2VhcmNoKSkgZm9yICgkaSA9IDE7ICRpIDw9IDg7ICRpKyspICRzZWFyY2hbXSA9ICIlJGkiOwoKCWZvciAoJGkgPSAwOyAkaSA8IHNpemVvZigkYXJndW1lbnRzKTsgJGkrKykgewoJCSRhcmd1bWVudHNbJGldID0gbmwyYnIoaHRtbCgkYXJndW1lbnRzWyRpXSkpOwoJfQoKCSRyZXBsYWNlID0gYXJyYXkoJ3snID0+ICc8cHJlPicsICd9JyA9Pic8L3ByZT4nLCAnWycgPT4gJzxiPicsICddJyA9PiAnPC9iPicpOwoKCXJldHVybiBzdHJfcmVwbGFjZSgkc2VhcmNoLCAkYXJndW1lbnRzLCBzdHJfcmVwbGFjZShhcnJheV9rZXlzKCRyZXBsYWNlKSwgJHJlcGxhY2UsIG5sMmJyKGh0bWwoJHdvcmRzWyRwaHJhc2VdKSkpKTsKCn0KCmZ1bmN0aW9uIGdldHdvcmRzICgkbGFuZykgewoJZ2xvYmFsICRkYXRlX2Zvcm1hdCwgJHdvcmRfY2hhcnNldDsKCSR3b3JkX2NoYXJzZXQgPSAnVVRGLTgnOwoKCXN3aXRjaCAoJGxhbmcpIHsKCWNhc2UgJ2RlJzoKCgkJJGRhdGVfZm9ybWF0ID0gJ2QubS55IEg6aTpzJzsKCgkJcmV0dXJuIGFycmF5KAonZGlyZWN0b3J5JyA9PiAnVmVyemVpY2huaXMnLAonZmlsZScgPT4gJ0RhdGVpJywKJ2ZpbGVuYW1lJyA9PiAnRGF0ZWluYW1lJywKCidzaXplJyA9PiAnR3LDg8K2w4PFuGUnLAoncGVybWlzc2lvbicgPT4gJ1JlY2h0ZScsCidvd25lcicgPT4gJ0VpZ25lcicsCidncm91cCcgPT4gJ0dydXBwZScsCidvdGhlcicgPT4gJ0FuZGVyZScsCidmdW5jdGlvbnMnID0+ICdGdW5rdGlvbmVuJywKCidyZWFkJyA9PiAnbGVzZW4nLAond3JpdGUnID0+ICdzY2hyZWliZW4nLAonZXhlY3V0ZScgPT4gJ2F1c2bDg8K8aHJlbicsCgonY3JlYXRlX3N5bWxpbmsnID0+ICdTeW1saW5rIGVyc3RlbGxlbicsCidkZWxldGUnID0+ICdsw4PCtnNjaGVuJywKJ3JlbmFtZScgPT4gJ3VtYmVuZW5uZW4nLAonbW92ZScgPT4gJ3ZlcnNjaGllYmVuJywKJ2NvcHknID0+ICdrb3BpZXJlbicsCidlZGl0JyA9PiAnZWRpdGllcmVuJywKJ2Rvd25sb2FkJyA9PiAnaGVydW50ZXJsYWRlbicsCid1cGxvYWQnID0+ICdob2NobGFkZW4nLAonY3JlYXRlJyA9PiAnZXJzdGVsbGVuJywKJ2NoYW5nZScgPT4gJ3dlY2hzZWxuJywKJ3NhdmUnID0+ICdzcGVpY2hlcm4nLAonc2V0JyA9PiAnc2V0emUnLAoncmVzZXQnID0+ICd6dXLDg8K8Y2tzZXR6ZW4nLAoncmVsYXRpdmUnID0+ICdQZmFkIHp1bSBaaWVsIHJlbGF0aXYnLAoKJ3llcycgPT4gJ0phJywKJ25vJyA9PiAnTmVpbicsCidiYWNrJyA9PiAnenVyw4PCvGNrJywKJ2Rlc3RpbmF0aW9uJyA9PiAnWmllbCcsCidzeW1saW5rJyA9PiAnU3ltYm9saXNjaGVyIExpbmsnLAonbm9fb3V0cHV0JyA9PiAna2VpbmUgQXVzZ2FiZScsCgondXNlcicgPT4gJ0JlbnV0emVybmFtZScsCidwYXNzd29yZCcgPT4gJ0tlbm53b3J0JywKJ2FkZCcgPT4gJ2hpbnp1ZsODwrxnZW4nLAonYWRkX2Jhc2ljX2F1dGgnID0+ICdIVFRQLUJhc2ljLUF1dGggaGluenVmw4PCvGdlbicsCgondXBsb2FkZWQnID0+ICciWyUxXSIgd3VyZGUgaG9jaGdlbGFkZW4uJywKJ25vdF91cGxvYWRlZCcgPT4gJyJbJTFdIiBrb25udGUgbmljaHQgaG9jaGdlbGFkZW4gd2VyZGVuLicsCidhbHJlYWR5X2V4aXN0cycgPT4gJyJbJTFdIiBleGlzdGllcnQgYmVyZWl0cy4nLAonY3JlYXRlZCcgPT4gJyJbJTFdIiB3dXJkZSBlcnN0ZWxsdC4nLAonbm90X2NyZWF0ZWQnID0+ICciWyUxXSIga29ubnRlIG5pY2h0IGVyc3RlbGx0IHdlcmRlbi4nLAoncmVhbGx5X2RlbGV0ZScgPT4gJ1NvbGxlbiBmb2xnZW5kZSBEYXRlaWVuIHdpcmtsaWNoIGdlbMODwrZzY2h0IHdlcmRlbj8nLAonZGVsZXRlZCcgPT4gIkZvbGdlbmRlIERhdGVpZW4gd3VyZGVuIGdlbMODwrZzY2h0OlxuWyUxXSIsCidub3RfZGVsZXRlZCcgPT4gIkZvbGdlbmRlIERhdGVpZW4ga29ubnRlbiBuaWNodCBnZWzDg8K2c2NodCB3ZXJkZW46XG5bJTFdIiwKJ3JlbmFtZV9maWxlJyA9PiAnQmVuZW5uZSBEYXRlaSB1bTonLAoncmVuYW1lZCcgPT4gJyJbJTFdIiB3dXJkZSBpbiAiWyUyXSIgdW1iZW5hbm50LicsCidub3RfcmVuYW1lZCcgPT4gJyJbJTFdIGtvbm50ZSBuaWNodCBpbiAiWyUyXSIgdW1iZW5hbm50IHdlcmRlbi4nLAonbW92ZV9maWxlcycgPT4gJ1ZlcnNjaGllYmVuIGZvbGdlbmRlIERhdGVpZW46JywKJ21vdmVkJyA9PiAiRm9sZ2VuZGUgRGF0ZWllbiB3dXJkZW4gbmFjaCBcIlslMl1cIiB2ZXJzY2hvYmVuOlxuWyUxXSIsCidub3RfbW92ZWQnID0+ICJGb2xnZW5kZSBEYXRlaWVuIGtvbm50ZW4gbmljaHQgbmFjaCBcIlslMl1cIiB2ZXJzY2hvYmVuIHdlcmRlbjpcblslMV0iLAonY29weV9maWxlcycgPT4gJ0tvcGllcmUgZm9sZ2VuZGUgRGF0ZWllbjonLAonY29waWVkJyA9PiAiRm9sZ2VuZGUgRGF0ZWllbiB3dXJkZW4gbmFjaCBcIlslMl1cIiBrb3BpZXJ0OlxuWyUxXSIsCidub3RfY29waWVkJyA9PiAiRm9sZ2VuZGUgRGF0ZWllbiBrb25udGVuIG5pY2h0IG5hY2ggXCJbJTJdXCIga29waWVydCB3ZXJkZW46XG5bJTFdIiwKJ25vdF9lZGl0ZWQnID0+ICciWyUxXSIga2FubiBuaWNodCBlZGl0aWVydCB3ZXJkZW4uJywKJ2V4ZWN1dGVkJyA9PiAiXCJbJTFdXCIgd3VyZGUgZXJmb2xncmVpY2ggYXVzZ2Vmw4PCvGhydDpcbnslMn0iLAonbm90X2V4ZWN1dGVkJyA9PiAiXCJbJTFdXCIga29ubnRlIG5pY2h0IGVyZm9sZ3JlaWNoIGF1c2dlZsODwrxocnQgd2VyZGVuOlxueyUyfSIsCidzYXZlZCcgPT4gJyJbJTFdIiB3dXJkZSBnZXNwZWljaGVydC4nLAonbm90X3NhdmVkJyA9PiAnIlslMV0iIGtvbm50ZSBuaWNodCBnZXNwZWljaGVydCB3ZXJkZW4uJywKJ3N5bWxpbmtlZCcgPT4gJ1N5bWJvbGlzY2hlciBMaW5rIHZvbiAiWyUyXSIgbmFjaCAiWyUxXSIgd3VyZGUgZXJzdGVsbHQuJywKJ25vdF9zeW1saW5rZWQnID0+ICdTeW1ib2xpc2NoZXIgTGluayB2b24gIlslMl0iIG5hY2ggIlslMV0iIGtvbm50ZSBuaWNodCBlcnN0ZWxsdCB3ZXJkZW4uJywKJ3Blcm1pc3Npb25fZm9yJyA9PiAnUmVjaHRlIGbDg8K8ciAiWyUxXSI6JywKJ3Blcm1pc3Npb25fc2V0JyA9PiAnRGllIFJlY2h0ZSBmw4PCvHIgIlslMV0iIHd1cmRlbiBhdWYgWyUyXSBnZXNldHp0LicsCidwZXJtaXNzaW9uX25vdF9zZXQnID0+ICdEaWUgUmVjaHRlIGbDg8K8ciAiWyUxXSIga29ubnRlbiBuaWNodCBhdWYgWyUyXSBnZXNldHp0IHdlcmRlbi4nLAonbm90X3JlYWRhYmxlJyA9PiAnIlslMV0iIGthbm4gbmljaHQgZ2VsZXNlbiB3ZXJkZW4uJwoJCSk7CgoJY2FzZSAnZnInOgoKCQkkZGF0ZV9mb3JtYXQgPSAnZC5tLnkgSDppOnMnOwoKCQlyZXR1cm4gYXJyYXkoCidkaXJlY3RvcnknID0+ICdSw4PCqXBlcnRvaXJlJywKJ2ZpbGUnID0+ICdGaWNoaWVyJywKJ2ZpbGVuYW1lJyA9PiAnTm9tIGZpY2hpZXInLAoKJ3NpemUnID0+ICdUYWlsbGUnLAoncGVybWlzc2lvbicgPT4gJ0Ryb2l0cycsCidvd25lcicgPT4gJ1Byb3ByacODwql0YWlyZScsCidncm91cCcgPT4gJ0dyb3VwZScsCidvdGhlcicgPT4gJ0F1dHJlcycsCidmdW5jdGlvbnMnID0+ICdGb25jdGlvbnMnLAoKJ3JlYWQnID0+ICdMaXJlJywKJ3dyaXRlJyA9PiAnRWNyaXJlJywKJ2V4ZWN1dGUnID0+ICdFeMODwqljdXRlcicsCgonY3JlYXRlX3N5bWxpbmsnID0+ICdDcsODwqllciBsaWVuIHN5bWJvbGlxdWUnLAonZGVsZXRlJyA9PiAnRWZmYWNlcicsCidyZW5hbWUnID0+ICdSZW5vbW1lcicsCidtb3ZlJyA9PiAnRMODwqlwbGFjZXInLAonY29weScgPT4gJ0NvcGllcicsCidlZGl0JyA9PiAnT3V2cmlyJywKJ2Rvd25sb2FkJyA9PiAnVMODwqlsw4PCqWNoYXJnZXIgc3VyIFBDJywKJ3VwbG9hZCcgPT4gJ1TDg8KpbMODwqljaGFyZ2VyIHN1ciBzZXJ2ZXVyJywKJ2NyZWF0ZScgPT4gJ0Nyw4PCqWVyJywKJ2NoYW5nZScgPT4gJ0NoYW5nZXInLAonc2F2ZScgPT4gJ1NhdXZlZ2FyZGVyJywKJ3NldCcgPT4gJ0V4w4PCqWN1dGVyJywKJ3Jlc2V0JyA9PiAnUsODwqlpbml0aWFsaXNlcicsCidyZWxhdGl2ZScgPT4gJ1JlbGF0aWYnLAoKJ3llcycgPT4gJ091aScsCidubycgPT4gJ05vbicsCidiYWNrJyA9PiAnUmV0b3VyJywKJ2Rlc3RpbmF0aW9uJyA9PiAnRGVzdGluYXRpb24nLAonc3ltbGluaycgPT4gJ0xpZW4gc3ltYm9sbGlxdWUnLAonbm9fb3V0cHV0JyA9PiAnUGFzIGRlIHNvcnRpZScsCgondXNlcicgPT4gJ1V0aWxpc2F0ZXVyJywKJ3Bhc3N3b3JkJyA9PiAnTW90IGRlIHBhc3NlJywKJ2FkZCcgPT4gJ0Fqb3V0ZXInLAonYWRkX2Jhc2ljX2F1dGgnID0+ICdhZGQgYmFzaWMtYXV0aGVudGlmaWNhdGlvbicsCgondXBsb2FkZWQnID0+ICciWyUxXSIgYSDDg8KpdMODwqkgdMODwqlsw4PCqWNoYXJnw4PCqSBzdXIgbGUgc2VydmV1ci4nLAonbm90X3VwbG9hZGVkJyA9PiAnIlslMV0iIG4gYSBwYXMgw4PCqXTDg8KpIHTDg8KpbMODwqljaGFyZ8ODwqkgc3VyIGxlIHNlcnZldXIuJywKJ2FscmVhZHlfZXhpc3RzJyA9PiAnIlslMV0iIGV4aXN0ZSBkw4PCqWrDgyAuJywKJ2NyZWF0ZWQnID0+ICciWyUxXSIgYSDDg8KpdMODwqkgY3LDg8Kpw4PCqS4nLAonbm90X2NyZWF0ZWQnID0+ICciWyUxXSIgbiBhIHBhcyBwdSDDg8KqdHJlIGNyw4PCqcODwqkuJywKJ3JlYWxseV9kZWxldGUnID0+ICdFZmZhY2VyIGxlIGZpY2hpZXI/JywKJ2RlbGV0ZWQnID0+ICJDZXMgZmljaGllcnMgb250IMODwql0w4PCqSBkw4PCqXR1aXRzOlxuWyUxXSIsCidub3RfZGVsZXRlZCcgPT4gIkNlcyBmaWNoaWVycyBuIG9udCBwdSDDg8KqdHJlIGTDg8KpdHJ1aXRzOlxuWyUxXSIsCidyZW5hbWVfZmlsZScgPT4gJ1Jlbm9tbWUgZmljaGllcjonLAoncmVuYW1lZCcgPT4gJyJbJTFdIiBhIMODwql0w4PCqSByZW5vbW3Dg8KpIGVuICJbJTJdIi4nLAonbm90X3JlbmFtZWQnID0+ICciWyUxXSBuIGEgcGFzIHB1IMODwqp0cmUgcmVub21tw4PCqSBlbiAiWyUyXSIuJywKJ21vdmVfZmlsZXMnID0+ICdEw4PCqXBsYWNlciBjZXMgZmljaGllcnM6JywKJ21vdmVkJyA9PiAiQ2VzIGZpY2hpZXJzIG9udCDDg8KpdMODwqkgZMODwqlwbGFjw4PCqXMgZW4gXCJbJTJdXCI6XG5bJTFdIiwKJ25vdF9tb3ZlZCcgPT4gIkNlcyBmaWNoaWVycyBuIG9udCBwYXMgcHUgw4PCqnRyZSBkw4PCqXBsYWPDg8KpcyBlbiBcIlslMl1cIjpcblslMV0iLAonY29weV9maWxlcycgPT4gJ0NvcGllciBjZXMgZmljaGllcnM6JywKJ2NvcGllZCcgPT4gIkNlcyBmaWNoaWVycyBvbnQgw4PCqXTDg8KpIGNvcGnDg8KpcyBlbiBcIlslMl1cIjpcblslMV0iLAonbm90X2NvcGllZCcgPT4gIkNlcyBmaWNoaWVycyBuIG9udCBwYXMgcHUgw4PCqnRyZSBjb3Bpw4PCqXMgZW4gXCJbJTJdXCI6XG5bJTFdIiwKJ25vdF9lZGl0ZWQnID0+ICciWyUxXSIgbmUgcGV1dCDDg8KqdHJlIG91dmVydC4nLAonZXhlY3V0ZWQnID0+ICJcIlslMV1cIiBhIMODwql0w4PCqSBicmlsbGFtbWVudCBleMODwqljdXTDg8KpIDpcbnslMn0iLAonbm90X2V4ZWN1dGVkJyA9PiAiXCJbJTFdXCIgbiBhIHBhcyBwdSDDg8KqdHJlIGV4w4PCqWN1dMODwqk6XG57JTJ9IiwKJ3NhdmVkJyA9PiAnIlslMV0iIGEgw4PCqXTDg8KpIHNhdXZlZ2FyZMODwqkuJywKJ25vdF9zYXZlZCcgPT4gJyJbJTFdIiBuIGEgcGFzIHB1IMODwqp0cmUgc2F1dmVnYXJkw4PCqS4nLAonc3ltbGlua2VkJyA9PiAnVW4gbGllbiBzeW1ib2xpcXVlIGRlcHVpcyAiWyUyXSIgdmVycyAiWyUxXSIgYSDDg8KpdMODwqkgY3LDg8KpZS4nLAonbm90X3N5bWxpbmtlZCcgPT4gJ1VuIGxpZW4gc3ltYm9saXF1ZSBkZXB1aXMgIlslMl0iIHZlcnMgIlslMV0iIG4gYSBwYXMgcHUgw4PCqnRyZSBjcsODwqnDg8KpLicsCidwZXJtaXNzaW9uX2ZvcicgPT4gJ0Ryb2l0cyBkZSAiWyUxXSI6JywKJ3Blcm1pc3Npb25fc2V0JyA9PiAnRHJvaXRzIGRlICJbJTFdIiBvbnQgw4PCqXTDg8KpIGNoYW5nw4PCqXMgZW4gWyUyXS4nLAoncGVybWlzc2lvbl9ub3Rfc2V0JyA9PiAnRHJvaXRzIGRlICJbJTFdIiBuIG9udCBwYXMgcHUgw4PCqnRyZSBjaGFuZ8ODwqlzIGVuWyUyXS4nLAonbm90X3JlYWRhYmxlJyA9PiAnIlslMV0iIG5lIHBldXQgcGFzIMODwqp0cmUgb3V2ZXJ0LicKCQkpOwoKCWNhc2UgJ2l0JzoKCgkJJGRhdGVfZm9ybWF0ID0gJ2QtbS1ZIEg6aTpzJzsKCgkJcmV0dXJuIGFycmF5KAonZGlyZWN0b3J5JyA9PiAnRGlyZWN0b3J5JywKJ2ZpbGUnID0+ICdGaWxlJywKJ2ZpbGVuYW1lJyA9PiAnTm9tZSBGaWxlJywKCidzaXplJyA9PiAnRGltZW5zaW9uaScsCidwZXJtaXNzaW9uJyA9PiAnUGVybWVzc2knLAonb3duZXInID0+ICdQcm9wcmlldGFyaW8nLAonZ3JvdXAnID0+ICdHcnVwcG8nLAonb3RoZXInID0+ICdBbHRybycsCidmdW5jdGlvbnMnID0+ICdGdW56aW9uaScsCgoncmVhZCcgPT4gJ2xlZ2dpJywKJ3dyaXRlJyA9PiAnc2NyaXZpJywKJ2V4ZWN1dGUnID0+ICdlc2VndWknLAoKJ2NyZWF0ZV9zeW1saW5rJyA9PiAnY3JlYSBsaW5rIHNpbWJvbGljbycsCidkZWxldGUnID0+ICdjYW5jZWxsYScsCidyZW5hbWUnID0+ICdyaW5vbWluYScsCidtb3ZlJyA9PiAnc3Bvc3RhJywKJ2NvcHknID0+ICdjb3BpYScsCidlZGl0JyA9PiAnbW9kaWZpY2EnLAonZG93bmxvYWQnID0+ICdkb3dubG9hZCcsCid1cGxvYWQnID0+ICd1cGxvYWQnLAonY3JlYXRlJyA9PiAnY3JlYScsCidjaGFuZ2UnID0+ICdjYW1iaWEnLAonc2F2ZScgPT4gJ3NhbHZhJywKJ3NldCcgPT4gJ2ltcG9zdGEnLAoncmVzZXQnID0+ICdyZWltcG9zdGEnLAoncmVsYXRpdmUnID0+ICdQZXJjb3JzbyByZWxhdGl2byBwZXIgbGEgZGVzdGluYXppb25lJywKCid5ZXMnID0+ICdTaScsCidubycgPT4gJ05vJywKJ2JhY2snID0+ICdpbmRpZXRybycsCidkZXN0aW5hdGlvbicgPT4gJ0Rlc3RpbmF6aW9uZScsCidzeW1saW5rJyA9PiAnTGluayBzaW1ib2xpY28nLAonbm9fb3V0cHV0JyA9PiAnbm8gb3V0cHV0JywKCid1c2VyJyA9PiAnVXNlcicsCidwYXNzd29yZCcgPT4gJ1Bhc3N3b3JkJywKJ2FkZCcgPT4gJ2FnZ2l1bmdpJywKJ2FkZF9iYXNpY19hdXRoJyA9PiAnYWdnaXVuZ2kgYXV0ZW50aWNhemlvbmUgYmFzZScsCgondXBsb2FkZWQnID0+ICciWyUxXSIgw4PCqCBzdGF0byBjYXJpY2F0by4nLAonbm90X3VwbG9hZGVkJyA9PiAnIlslMV0iIG5vbiDDg8KoIHN0YXRvIGNhcmljYXRvLicsCidhbHJlYWR5X2V4aXN0cycgPT4gJyJbJTFdIiBlc2lzdGUgZ2nDgyAuJywKJ2NyZWF0ZWQnID0+ICciWyUxXSIgw4PCqCBzdGF0byBjcmVhdG8uJywKJ25vdF9jcmVhdGVkJyA9PiAnIlslMV0iIG5vbiDDg8KoIHN0YXRvIGNyZWF0by4nLAoncmVhbGx5X2RlbGV0ZScgPT4gJ0NhbmNlbGxvIHF1ZXN0aSBmaWxlID8nLAonZGVsZXRlZCcgPT4gIlF1ZXN0aSBmaWxlIHNvbm8gc3RhdGkgY2FuY2VsbGF0aTpcblslMV0iLAonbm90X2RlbGV0ZWQnID0+ICJRdWVzdGkgZmlsZSBub24gcG9zc29ubyBlc3NlcmUgY2FuY2VsbGF0aTpcblslMV0iLAoncmVuYW1lX2ZpbGUnID0+ICdGaWxlIHJpbm9taW5hdG86JywKJ3JlbmFtZWQnID0+ICciWyUxXSIgw4PCqCBzdGF0byByaW5vbWluYXRvIGluICJbJTJdIi4nLAonbm90X3JlbmFtZWQnID0+ICciWyUxXSBub24gw4PCqCBzdGF0byByaW5vbWluYXRvIGluICJbJTJdIi4nLAonbW92ZV9maWxlcycgPT4gJ1Nwb3N0byBxdWVzdGkgZmlsZTonLAonbW92ZWQnID0+ICJRdWVzdGkgZmlsZSBzb25vIHN0YXRpIHNwb3N0YXRpIGluIFwiWyUyXVwiOlxuWyUxXSIsCidub3RfbW92ZWQnID0+ICJRdWVzdGkgZmlsZSBub24gcG9zc29ubyBlc3NlcmUgc3Bvc3RhdGkgaW4gXCJbJTJdXCI6XG5bJTFdIiwKJ2NvcHlfZmlsZXMnID0+ICdDb3BpbyBxdWVzdGkgZmlsZScsCidjb3BpZWQnID0+ICJRdWVzdGkgZmlsZSBzb25vIHN0YXRpIGNvcGlhdGkgaW4gXCJbJTJdXCI6XG5bJTFdIiwKJ25vdF9jb3BpZWQnID0+ICJRdWVzdGkgZmlsZSBub24gcG9zc29ubyBlc3NlcmUgY29waWF0aSBpbiBcIlslMl1cIjpcblslMV0iLAonbm90X2VkaXRlZCcgPT4gJyJbJTFdIiBub24gcHXDg8KyIGVzc2VyZSBtb2RpZmljYXRvLicsCidleGVjdXRlZCcgPT4gIlwiWyUxXVwiIMODwqggc3RhdG8gZXNlZ3VpdG8gY29uIHN1Y2Nlc3NvOlxueyUyfSIsCidub3RfZXhlY3V0ZWQnID0+ICJcIlslMV1cIiBub24gw4PCqCBzdGF0byBlc2VndWl0byBjb24gc3VjY2Vzc29cbnslMn0iLAonc2F2ZWQnID0+ICciWyUxXSIgw4PCqCBzdGF0byBzYWx2YXRvLicsCidub3Rfc2F2ZWQnID0+ICciWyUxXSIgbm9uIMODwqggc3RhdG8gc2FsdmF0by4nLAonc3ltbGlua2VkJyA9PiAnSWwgbGluayBzaWFtYm9saWNvIGRhICJbJTJdIiBhICJbJTFdIiDDg8KoIHN0YXRvIGNyZWF0by4nLAonbm90X3N5bWxpbmtlZCcgPT4gJ0lsIGxpbmsgc2lhbWJvbGljbyBkYSAiWyUyXSIgYSAiWyUxXSIgbm9uIMODwqggc3RhdG8gY3JlYXRvLicsCidwZXJtaXNzaW9uX2ZvcicgPT4gJ1Blcm1lc3NpIGRpICJbJTFdIjonLAoncGVybWlzc2lvbl9zZXQnID0+ICdJIHBlcm1lc3NpIGRpICJbJTFdIiBzb25vIHN0YXRpIGltcG9zdGF0aSBbJTJdLicsCidwZXJtaXNzaW9uX25vdF9zZXQnID0+ICdJIHBlcm1lc3NpIGRpICJbJTFdIiBub24gc29ubyBzdGF0aSBpbXBvc3RhdGkgWyUyXS4nLAonbm90X3JlYWRhYmxlJyA9PiAnIlslMV0iIG5vbiBwdcODwrIgZXNzZXJlIGxldHRvLicKCQkpOwoKCWNhc2UgJ25sJzoKCgkJJGRhdGVfZm9ybWF0ID0gJ24vai95IEg6aTpzJzsKCgkJcmV0dXJuIGFycmF5KAonZGlyZWN0b3J5JyA9PiAnRGlyZWN0b3J5JywKJ2ZpbGUnID0+ICdCZXN0YW5kJywKJ2ZpbGVuYW1lJyA9PiAnQmVzdGFuZHNuYWFtJywKCidzaXplJyA9PiAnR3Jvb3R0ZScsCidwZXJtaXNzaW9uJyA9PiAnQmV2b2VnZGhlaWQnLAonb3duZXInID0+ICdFaWdlbmFhcicsCidncm91cCcgPT4gJ0dyb2VwJywKJ290aGVyJyA9PiAnQW5kZXJlbicsCidmdW5jdGlvbnMnID0+ICdGdW5jdGllcycsCgoncmVhZCcgPT4gJ2xlemVuJywKJ3dyaXRlJyA9PiAnc2NocmlqdmVuJywKJ2V4ZWN1dGUnID0+ICd1aXR2b2VyZW4nLAoKJ2NyZWF0ZV9zeW1saW5rJyA9PiAnbWFhayBzeW1saW5rJywKJ2RlbGV0ZScgPT4gJ3ZlcndpamRlcmVuJywKJ3JlbmFtZScgPT4gJ2hlcm5vZW1lbicsCidtb3ZlJyA9PiAndmVycGxhYXRzZW4nLAonY29weScgPT4gJ2tvcGllcmVuJywKJ2VkaXQnID0+ICdiZXdlcmtlbicsCidkb3dubG9hZCcgPT4gJ2Rvd25sb2FkZW4nLAondXBsb2FkJyA9PiAndXBsb2FkZW4nLAonY3JlYXRlJyA9PiAnYWFubWFrZW4nLAonY2hhbmdlJyA9PiAndmVyYW5kZXJlbicsCidzYXZlJyA9PiAnb3BzbGFhbicsCidzZXQnID0+ICdpbnN0ZWxsZW4nLAoncmVzZXQnID0+ICdyZXNldHRlbicsCidyZWxhdGl2ZScgPT4gJ1JlbGF0aWVmIHBhdCBuYWFyIGRvZWwnLAoKJ3llcycgPT4gJ0phJywKJ25vJyA9PiAnTmVlJywKJ2JhY2snID0+ICd0ZXJ1ZycsCidkZXN0aW5hdGlvbicgPT4gJ0Jlc3RlbW1pbmcnLAonc3ltbGluaycgPT4gJ1N5bWxpbmsnLAonbm9fb3V0cHV0JyA9PiAnZ2VlbiBvdXRwdXQnLAoKJ3VzZXInID0+ICdHZWJydWlrZXInLAoncGFzc3dvcmQnID0+ICdXYWNodHdvb3JkJywKJ2FkZCcgPT4gJ3RvZXZvZWdlbicsCidhZGRfYmFzaWNfYXV0aCcgPT4gJ2FkZCBiYXNpYy1hdXRoZW50aWZpY2F0aW9uJywKCid1cGxvYWRlZCcgPT4gJyJbJTFdIiBpcyB2ZXJzdHV1cmQuJywKJ25vdF91cGxvYWRlZCcgPT4gJyJbJTFdIiBrYW4gbmlldCB3b3JkZW4gdmVyc3R1dXJkLicsCidhbHJlYWR5X2V4aXN0cycgPT4gJyJbJTFdIiBiZXN0YWF0IGFsLicsCidjcmVhdGVkJyA9PiAnIlslMV0iIGlzIGFhbmdlbWFha3QuJywKJ25vdF9jcmVhdGVkJyA9PiAnIlslMV0iIGthbiBuaWV0IHdvcmRlbiBhYW5nZW1hYWt0LicsCidyZWFsbHlfZGVsZXRlJyA9PiAnRGV6ZSBiZXN0YW5kZW4gdmVyd2lqZGVyZW4/JywKJ2RlbGV0ZWQnID0+ICJEZXplIGJlc3RhbmRlbiB6aWpuIHZlcndpamRlcmQ6XG5bJTFdIiwKJ25vdF9kZWxldGVkJyA9PiAiRGV6ZSBiZXN0YW5kZW4ga29uZGVuIG5pZXQgd29yZGVuIHZlcndpamRlcmQ6XG5bJTFdIiwKJ3JlbmFtZV9maWxlJyA9PiAnQmVzdGFuZHNuYWFtIHZlcmFuZGVyZW46JywKJ3JlbmFtZWQnID0+ICciWyUxXSIgaGVldCBudSAiWyUyXSIuJywKJ25vdF9yZW5hbWVkJyA9PiAnIlslMV0ga29uIG5pZXQgd29yZGVuIHZlcmFuZGVyZCBpbiAiWyUyXSIuJywKJ21vdmVfZmlsZXMnID0+ICdWZXJwbGFhdHMgZGV6ZSBiZXN0YW5kZW46JywKJ21vdmVkJyA9PiAiRGV6ZSBiZXN0YW5kZW4gemlqbiB2ZXJwbGFhdHN0IG5hYXIgXCJbJTJdXCI6XG5bJTFdIiwKJ25vdF9tb3ZlZCcgPT4gIkthbiBkZXplIGJlc3RhbmRlbiBuaWV0IHZlcnBsYWF0c2VuIG5hYXIgXCJbJTJdXCI6XG5bJTFdIiwKJ2NvcHlfZmlsZXMnID0+ICdLb3BpZWVyIGRlemUgYmVzdGFuZGVuOicsCidjb3BpZWQnID0+ICJEZXplIGJlc3RhbmRlbiB6aWpuIGdla29waWVlcmQgbmFhciBcIlslMl1cIjpcblslMV0iLAonbm90X2NvcGllZCcgPT4gIkRlemUgYmVzdGFuZGVuIGt1bm5lbiBuaWV0IHdvcmRlbiBnZWtvcGllZXJkIG5hYXIgXCJbJTJdXCI6XG5bJTFdIiwKJ25vdF9lZGl0ZWQnID0+ICciWyUxXSIga2FuIG5pZXQgd29yZGVuIGJld2Vya3QuJywKJ2V4ZWN1dGVkJyA9PiAiXCJbJTFdXCIgaXMgbWV0IHN1Y2NlcyB1aXRnZXZvZXJkOlxueyUyfSIsCidub3RfZXhlY3V0ZWQnID0+ICJcIlslMV1cIiBpcyBuaWV0IGdvZWQgdWl0Z2V2b2VyZDpcbnslMn0iLAonc2F2ZWQnID0+ICciWyUxXSIgaXMgb3BnZXNsYWdlbi4nLAonbm90X3NhdmVkJyA9PiAnIlslMV0iIGlzIG5pZXQgb3BnZXNsYWdlbi4nLAonc3ltbGlua2VkJyA9PiAnU3ltbGluayB2YW4gIlslMl0iIG5hYXIgIlslMV0iIGlzIGFhbmdlbWFha3QuJywKJ25vdF9zeW1saW5rZWQnID0+ICdTeW1saW5rIHZhbiAiWyUyXSIgbmFhciAiWyUxXSIgaXMgbmlldCBhYW5nZW1hYWt0LicsCidwZXJtaXNzaW9uX2ZvcicgPT4gJ0Jldm9lZ2RoZWlkIHZvb3IgIlslMV0iOicsCidwZXJtaXNzaW9uX3NldCcgPT4gJ0Jldm9lZ2RoZWlkIHZhbiAiWyUxXSIgaXMgaW5nZXN0ZWxkIG9wIFslMl0uJywKJ3Blcm1pc3Npb25fbm90X3NldCcgPT4gJ0Jldm9lZ2RoZWlkIHZhbiAiWyUxXSIgaXMgbmlldCBpbmdlc3RlbGQgb3AgWyUyXS4nLAonbm90X3JlYWRhYmxlJyA9PiAnIlslMV0iIGthbiBuaWV0IHdvcmRlbiBnZWxlemVuLicKCQkpOwoKCWNhc2UgJ3NlJzoKCgkJJGRhdGVfZm9ybWF0ID0gJ24vai95IEg6aTpzJzsKIAoJCXJldHVybiBhcnJheSgKJ2RpcmVjdG9yeScgPT4gJ01hcHAnLAonZmlsZScgPT4gJ0ZpbCcsCidmaWxlbmFtZScgPT4gJ0ZpbG5hbW4nLAogCidzaXplJyA9PiAnU3RvcmxlaycsCidwZXJtaXNzaW9uJyA9PiAnU8ODwqRrZXJoZXRzbml2w4PCpScsCidvd25lcicgPT4gJ8OD4oCeZ2FyZScsCidncm91cCcgPT4gJ0dydXBwJywKJ290aGVyJyA9PiAnQW5kcmEnLAonZnVuY3Rpb25zJyA9PiAnRnVua3Rpb25lcicsCiAKJ3JlYWQnID0+ICdMw4PCpHMnLAond3JpdGUnID0+ICdTa3JpdicsCidleGVjdXRlJyA9PiAnVXRmw4PCtnInLAogCidjcmVhdGVfc3ltbGluaycgPT4gJ1NrYXBhIHN5bWxpbmsnLAonZGVsZXRlJyA9PiAnUmFkZXJhJywKJ3JlbmFtZScgPT4gJ0J5dCBuYW1uJywKJ21vdmUnID0+ICdGbHl0dGEnLAonY29weScgPT4gJ0tvcGllcmEnLAonZWRpdCcgPT4gJ8OD4oCebmRyYScsCidkb3dubG9hZCcgPT4gJ0xhZGRhIG5lcicsCid1cGxvYWQnID0+ICdMYWRkYSB1cHAnLAonY3JlYXRlJyA9PiAnU2thcGEnLAonY2hhbmdlJyA9PiAnw4PigJ5uZHJhJywKJ3NhdmUnID0+ICdTcGFyYScsCidzZXQnID0+ICdNYXJrZXJhJywKJ3Jlc2V0JyA9PiAnVMODwrZtJywKJ3JlbGF0aXZlJyA9PiAnUmVsYXRpdmUgcGF0aCB0byB0YXJnZXQnLAogCid5ZXMnID0+ICdKYScsCidubycgPT4gJ05laicsCidiYWNrJyA9PiAnVGlsbGJha3MnLAonZGVzdGluYXRpb24nID0+ICdEZXN0aW5hdGlvbicsCidzeW1saW5rJyA9PiAnU3ltbGluaycsCidub19vdXRwdXQnID0+ICdubyBvdXRwdXQnLAogCid1c2VyJyA9PiAnQW52w4PCpG5kYXJlJywKJ3Bhc3N3b3JkJyA9PiAnTMODwrZzZW5vcmQnLAonYWRkJyA9PiAnTMODwqRnZyB0aWxsJywKJ2FkZF9iYXNpY19hdXRoJyA9PiAnYWRkIGJhc2ljLWF1dGhlbnRpZmljYXRpb24nLAogCid1cGxvYWRlZCcgPT4gJyJbJTFdIiBoYXIgbGFkZGF0cyB1cHAuJywKJ25vdF91cGxvYWRlZCcgPT4gJyJbJTFdIiBrdW5kZSBpbnRlIGxhZGRhcyB1cHAuJywKJ2FscmVhZHlfZXhpc3RzJyA9PiAnIlslMV0iIGZpbm5zIHJlZGFuLicsCidjcmVhdGVkJyA9PiAnIlslMV0iIGhhciBza2FwYXRzLicsCidub3RfY3JlYXRlZCcgPT4gJyJbJTFdIiBrdW5kZSBpbnRlIHNrYXBhcy4nLAoncmVhbGx5X2RlbGV0ZScgPT4gJ1JhZGVyYSBkZXNzYSBmaWxlcj8nLAonZGVsZXRlZCcgPT4gIkRlIGjDg8KkciBmaWxlcm5hIGhhciByYWRlcmF0czpcblslMV0iLAonbm90X2RlbGV0ZWQnID0+ICJEZXNzYSBmaWxlciBrdW5kZSBpbnRlIHJhZGVyYXM6XG5bJTFdIiwKJ3JlbmFtZV9maWxlJyA9PiAnQnl0IG5hbW4gcMODwqUgZmlsOicsCidyZW5hbWVkJyA9PiAnIlslMV0iIGhhciBieXR0IG5hbW4gdGlsbCAiWyUyXSIuJywKJ25vdF9yZW5hbWVkJyA9PiAnIlslMV0ga3VuZGUgaW50ZSBkw4PCtnBhcyBvbSB0aWxsICJbJTJdIi4nLAonbW92ZV9maWxlcycgPT4gJ0ZseXR0YSBkZXNzYSBmaWxlcjonLAonbW92ZWQnID0+ICJEZXNzYSBmaWxlciBoYXIgZmx5dHRhdHMgdGlsbCBcIlslMl1cIjpcblslMV0iLAonbm90X21vdmVkJyA9PiAiRGVzc2EgZmlsZXIga3VuZGUgaW50ZSBmbHl0dGFzIHRpbGwgXCJbJTJdXCI6XG5bJTFdIiwKJ2NvcHlfZmlsZXMnID0+ICdLb3BpZXJhIGRlc3NhIGZpbGVyOicsCidjb3BpZWQnID0+ICJEZXNzYSBmaWxlciBoYXIga29waWVyYXRzIHRpbGwgXCJbJTJdXCI6XG5bJTFdIiwKJ25vdF9jb3BpZWQnID0+ICJEZXNzYSBmaWxlciBrdW5kZSBpbnRlIGtvcGllcmFzIHRpbGwgXCJbJTJdXCI6XG5bJTFdIiwKJ25vdF9lZGl0ZWQnID0+ICciWyUxXSIga2FuIGludGUgw4PCpG5kcmFzLicsCidleGVjdXRlZCcgPT4gIlwiWyUxXVwiIGhhciB1dGbDg8K2cnRzOlxueyUyfSIsCidub3RfZXhlY3V0ZWQnID0+ICJcIlslMV1cIiBrdW5kZSBpbnRlIHV0ZsODwrZyYXM6XG57JTJ9IiwKJ3NhdmVkJyA9PiAnIlslMV0iIGhhciBzcGFyYXRzLicsCidub3Rfc2F2ZWQnID0+ICciWyUxXSIga3VuZGUgaW50ZSBzcGFyYXMuJywKJ3N5bWxpbmtlZCcgPT4gJ1N5bWxpbmsgZnLDg8KlbiAiWyUyXSIgdGlsbCAiWyUxXSIgaGFyIHNrYXBhdHMuJywKJ25vdF9zeW1saW5rZWQnID0+ICdTeW1saW5rIGZyw4PCpW4gIlslMl0iIHRpbGwgIlslMV0iIGt1bmRlIGludGUgc2thcGFzLicsCidwZXJtaXNzaW9uX2ZvcicgPT4gJ1LDg8KkdHRpZ2hldGVyIGbDg8K2ciAiWyUxXSI6JywKJ3Blcm1pc3Npb25fc2V0JyA9PiAnUsODwqR0dGlnaGV0ZXIgZsODwrZyICJbJTFdIiDDg8KkbmRyYWRlcyB0aWxsIFslMl0uJywKJ3Blcm1pc3Npb25fbm90X3NldCcgPT4gJ1Blcm1pc3Npb24gb2YgIlslMV0iIGNvdWxkIG5vdCBiZSBzZXQgdG8gWyUyXS4nLAonbm90X3JlYWRhYmxlJyA9PiAnIlslMV0iIGthbiBpbnRlIGzDg8Kkc2FzLicKCQkpOwoKCWNhc2UgJ3NwJzoKCgkJJGRhdGVfZm9ybWF0ID0gJ2ovbi95IEg6aTpzJzsKCgkJcmV0dXJuIGFycmF5KAonZGlyZWN0b3J5JyA9PiAnRGlyZWN0b3JpbycsCidmaWxlJyA9PiAnQXJjaGl2bycsCidmaWxlbmFtZScgPT4gJ05vbWJyZSBBcmNoaXZvJywKCidzaXplJyA9PiAnVGFtYcODwrFvJywKJ3Blcm1pc3Npb24nID0+ICdQZXJtaXNvcycsCidvd25lcicgPT4gJ1Byb3BpZXRhcmlvJywKJ2dyb3VwJyA9PiAnR3J1cG8nLAonb3RoZXInID0+ICdPdHJvcycsCidmdW5jdGlvbnMnID0+ICdGdW5jaW9uZXMnLAoKJ3JlYWQnID0+ICdsZWN0dXJhJywKJ3dyaXRlJyA9PiAnZXNjcml0dXJhJywKJ2V4ZWN1dGUnID0+ICdlamVjdWNpw4PCs24nLAoKJ2NyZWF0ZV9zeW1saW5rJyA9PiAnY3JlYXIgZW5sYWNlJywKJ2RlbGV0ZScgPT4gJ2JvcnJhcicsCidyZW5hbWUnID0+ICdyZW5vbWJyYXInLAonbW92ZScgPT4gJ21vdmVyJywKJ2NvcHknID0+ICdjb3BpYXInLAonZWRpdCcgPT4gJ2VkaXRhcicsCidkb3dubG9hZCcgPT4gJ2JhamFyJywKJ3VwbG9hZCcgPT4gJ3N1YmlyJywKJ2NyZWF0ZScgPT4gJ2NyZWFyJywKJ2NoYW5nZScgPT4gJ2NhbWJpYXInLAonc2F2ZScgPT4gJ3NhbHZhcicsCidzZXQnID0+ICdzZXRlYXInLAoncmVzZXQnID0+ICdyZXNldGVhcicsCidyZWxhdGl2ZScgPT4gJ1BhdGggcmVsYXRpdm8nLAoKJ3llcycgPT4gJ1NpJywKJ25vJyA9PiAnTm8nLAonYmFjaycgPT4gJ2F0csODwqFzJywKJ2Rlc3RpbmF0aW9uJyA9PiAnRGVzdGlubycsCidzeW1saW5rJyA9PiAnRW5sYWNlJywKJ25vX291dHB1dCcgPT4gJ3NpbiBzYWxpZGEnLAoKJ3VzZXInID0+ICdVc3VhcmlvJywKJ3Bhc3N3b3JkJyA9PiAnQ2xhdmUnLAonYWRkJyA9PiAnYWdyZWdhcicsCidhZGRfYmFzaWNfYXV0aCcgPT4gJ2FncmVnYXIgYXV0ZW50aWZpY2FjacODwrNuIGLDg8Khc2ljYScsCgondXBsb2FkZWQnID0+ICciWyUxXSIgaGEgc2lkbyBzdWJpZG8uJywKJ25vdF91cGxvYWRlZCcgPT4gJyJbJTFdIiBubyBwdWRvIHNlciBzdWJpZG8uJywKJ2FscmVhZHlfZXhpc3RzJyA9PiAnIlslMV0iIHlhIGV4aXN0ZS4nLAonY3JlYXRlZCcgPT4gJyJbJTFdIiBoYSBzaWRvIGNyZWFkby4nLAonbm90X2NyZWF0ZWQnID0+ICciWyUxXSIgbm8gcHVkbyBzZXIgY3JlYWRvLicsCidyZWFsbHlfZGVsZXRlJyA9PiAnw4LCv0JvcnJhIGVzdG9zIGFyY2hpdm9zPycsCidkZWxldGVkJyA9PiAiRXN0b3MgYXJjaGl2b3MgaGFuIHNpZG8gYm9ycmFkb3M6XG5bJTFdIiwKJ25vdF9kZWxldGVkJyA9PiAiRXN0b3MgYXJjaGl2b3Mgbm8gcHVkaWVyb24gc2VyIGJvcnJhZG9zOlxuWyUxXSIsCidyZW5hbWVfZmlsZScgPT4gJ1Jlbm9tYnJhIGFyY2hpdm86JywKJ3JlbmFtZWQnID0+ICciWyUxXSIgaGEgc2lkbyByZW5vbWJyYWRvIGEgIlslMl0iLicsCidub3RfcmVuYW1lZCcgPT4gJyJbJTFdIG5vIHB1ZG8gc2VyIHJlbm9tYnJhZG8gYSAiWyUyXSIuJywKJ21vdmVfZmlsZXMnID0+ICdNb3ZlciBlc3RvcyBhcmNoaXZvczonLAonbW92ZWQnID0+ICJFc3RvcyBhcmNoaXZvcyBoYW4gc2lkbyBtb3ZpZG9zIGEgXCJbJTJdXCI6XG5bJTFdIiwKJ25vdF9tb3ZlZCcgPT4gIkVzdG9zIGFyY2hpdm9zIG5vIHB1ZGllcm9uIHNlciBtb3ZpZG9zIGEgXCJbJTJdXCI6XG5bJTFdIiwKJ2NvcHlfZmlsZXMnID0+ICdDb3BpYXIgZXN0b3MgYXJjaGl2b3M6JywKJ2NvcGllZCcgPT4gIkVzdG9zIGFyY2hpdm9zIGhhbiBzaWRvIGNvcGlhZG9zIGEgIFwiWyUyXVwiOlxuWyUxXSIsCidub3RfY29waWVkJyA9PiAiRXN0b3MgYXJjaGl2b3Mgbm8gcHVkaWVyb24gc2VyIGNvcGlhZG9zIFwiWyUyXVwiOlxuWyUxXSIsCidub3RfZWRpdGVkJyA9PiAnIlslMV0iIG5vIHB1ZG8gc2VyIGVkaXRhZG8uJywKJ2V4ZWN1dGVkJyA9PiAiXCJbJTFdXCIgaGEgc2lkbyBlamVjdXRhZG8gY29ycmVjdGFtZW50ZTpcbnslMn0iLAonbm90X2V4ZWN1dGVkJyA9PiAiXCJbJTFdXCIgbm8gcHVkbyBzZXIgZWplY3V0YWRvIGNvcnJlY3RhbWVudGU6XG57JTJ9IiwKJ3NhdmVkJyA9PiAnIlslMV0iIGhhIHNpZG8gc2FsdmFkby4nLAonbm90X3NhdmVkJyA9PiAnIlslMV0iIG5vIHB1ZG8gc2VyIHNhbHZhZG8uJywKJ3N5bWxpbmtlZCcgPT4gJ0VubGFjZSBkZXNkZSAiWyUyXSIgYSAiWyUxXSIgaGEgc2lkbyBjcmVhZG8uJywKJ25vdF9zeW1saW5rZWQnID0+ICdFbmxhY2UgZGVzZGUgIlslMl0iIGEgIlslMV0iIG5vIHB1ZG8gc2VyIGNyZWFkby4nLAoncGVybWlzc2lvbl9mb3InID0+ICdQZXJtaXNvcyBkZSAiWyUxXSI6JywKJ3Blcm1pc3Npb25fc2V0JyA9PiAnUGVybWlzb3MgZGUgIlslMV0iIGZ1ZXJvbiBzZXRlYWRvcyBhIFslMl0uJywKJ3Blcm1pc3Npb25fbm90X3NldCcgPT4gJ1Blcm1pc29zIGRlICJbJTFdIiBubyBwdWRvIHNlciBzZXRlYWRvIGEgWyUyXS4nLAonbm90X3JlYWRhYmxlJyA9PiAnIlslMV0iIG5vIHB1ZG8gc2VyIGxlw4PCrWRvLicKCQkpOwoKCWNhc2UgJ2RrJzoKCgkJJGRhdGVfZm9ybWF0ID0gJ24vai95IEg6aTpzJzsKCgkJcmV0dXJuIGFycmF5KAonZGlyZWN0b3J5JyA9PiAnTWFwcGUnLAonZmlsZScgPT4gJ0ZpbCcsCidmaWxlbmFtZScgPT4gJ0ZpbG5hdm4nLAoKJ3NpemUnID0+ICdTdMODwrhycmVsc2UnLAoncGVybWlzc2lvbicgPT4gJ1JldHRpZ2hlZCcsCidvd25lcicgPT4gJ0VqZXInLAonZ3JvdXAnID0+ICdHcnVwcGUnLAonb3RoZXInID0+ICdBbmRyZScsCidmdW5jdGlvbnMnID0+ICdGdW5rdGlvbmVyJywKCidyZWFkJyA9PiAnbMODwqZzJywKJ3dyaXRlJyA9PiAnc2tyaXYnLAonZXhlY3V0ZScgPT4gJ2vDg8K4cicsCgonY3JlYXRlX3N5bWxpbmsnID0+ICdvcHJldCBzeW1ib2xzayBsaW5rJywKJ2RlbGV0ZScgPT4gJ3NsZXQnLAoncmVuYW1lJyA9PiAnb21kw4PCuGInLAonbW92ZScgPT4gJ2ZseXQnLAonY29weScgPT4gJ2tvcGllcicsCidlZGl0JyA9PiAncmVkaWdlcicsCidkb3dubG9hZCcgPT4gJ2Rvd25sb2FkJywKJ3VwbG9hZCcgPT4gJ3VwbG9hZCcsCidjcmVhdGUnID0+ICdvcHJldCcsCidjaGFuZ2UnID0+ICdza2lmdCcsCidzYXZlJyA9PiAnZ2VtJywKJ3NldCcgPT4gJ3PDg8KmdCcsCidyZXNldCcgPT4gJ251bHN0aWwnLAoncmVsYXRpdmUnID0+ICdSZWxhdGl2IHN0aSB0aWwgdmFsZycsCgoneWVzJyA9PiAnSmEnLAonbm8nID0+ICdOZWonLAonYmFjaycgPT4gJ3RpbGJhZ2UnLAonZGVzdGluYXRpb24nID0+ICdEaXN0aW5hdGlvbicsCidzeW1saW5rJyA9PiAnU3ltYm9sc2sgbGluaycsCidub19vdXRwdXQnID0+ICdpbmdlbiByZXN1bHRhdCcsCgondXNlcicgPT4gJ0JydWdlcicsCidwYXNzd29yZCcgPT4gJ0tvZGVvcmQnLAonYWRkJyA9PiAndGlsZsODwrhqJywKJ2FkZF9iYXNpY19hdXRoJyA9PiAndGlsZsODwrhqIGdydW5kbGlnZ2VuZGUgcmV0dGlnaGVkZXInLAoKJ3VwbG9hZGVkJyA9PiAnIlslMV0iIGVyIGJsZXZldCB1cGxvYWRlZC4nLAonbm90X3VwbG9hZGVkJyA9PiAnIlslMV0iIGt1bm51IGlra2UgdXBsb2FkZXMuJywKJ2FscmVhZHlfZXhpc3RzJyA9PiAnIlslMV0iIGZpbmRlcyBhbGxlcmVkZS4nLAonY3JlYXRlZCcgPT4gJyJbJTFdIiBlciBibGV2ZXQgb3ByZXR0ZXQuJywKJ25vdF9jcmVhdGVkJyA9PiAnIlslMV0iIGt1bm5lIGlra2Ugb3ByZXR0ZXMuJywKJ3JlYWxseV9kZWxldGUnID0+ICdTbGV0IGRpc3NlIGZpbGVyPycsCidkZWxldGVkJyA9PiAiRGlzc2UgZmlsZXIgZXIgYmxldmV0IHNsZXR0ZXQ6XG5bJTFdIiwKJ25vdF9kZWxldGVkJyA9PiAiRGlzc2UgZmlsZXIga3VubmUgaWtrZSBzbGV0dGVzOlxuWyUxXSIsCidyZW5hbWVfZmlsZScgPT4gJ09tZMODwrhkIGZpbDonLAoncmVuYW1lZCcgPT4gJyJbJTFdIiBlciBibGV2ZXQgb21kw4PCuGJ0IHRpbCAiWyUyXSIuJywKJ25vdF9yZW5hbWVkJyA9PiAnIlslMV0ga3VubmUgaWtrZSBvbWTDg8K4YmVzIHRpbCAiWyUyXSIuJywKJ21vdmVfZmlsZXMnID0+ICdGbHl0IGRpc3NlIGZpbGVyOicsCidtb3ZlZCcgPT4gIkRpc3NlIGZpbGVyIGVyIGJsZXZldCBmbHl0dGV0IHRpbCBcIlslMl1cIjpcblslMV0iLAonbm90X21vdmVkJyA9PiAiRGlzc2UgZmlsZXIga3VubmUgaWtrZSBmbHl0dGVzIHRpbCBcIlslMl1cIjpcblslMV0iLAonY29weV9maWxlcycgPT4gJ0tvcGllciBkaXNzZSBmaWxlcjonLAonY29waWVkJyA9PiAiRGlzc2UgZmlsZXIgZXIga29waWVyZXQgdGlsIFwiWyUyXVwiOlxuWyUxXSIsCidub3RfY29waWVkJyA9PiAiRGlzc2UgZmlsZXIga3VubmUgaWtrZSBrb3BpZXJlcyB0aWwgXCJbJTJdXCI6XG5bJTFdIiwKJ25vdF9lZGl0ZWQnID0+ICciWyUxXSIga2FuIGlra2UgcmVkaWdlcmVzLicsCidleGVjdXRlZCcgPT4gIlwiWyUxXVwiIGVyIGJsZXZldCBrw4PCuHJ0IGtvcnJla3Q6XG57JTJ9IiwKJ25vdF9leGVjdXRlZCcgPT4gIlwiWyUxXVwiIGthbiBpa2tlIGvDg8K4cmVzIGtvcnJla3Q6XG57JTJ9IiwKJ3NhdmVkJyA9PiAnIlslMV0iIGVyIGJsZXZldCBnZW10LicsCidub3Rfc2F2ZWQnID0+ICciWyUxXSIga3VubmUgaWtrZSBnZW1tZXMuJywKJ3N5bWxpbmtlZCcgPT4gJ1N5bWJvbHNrIGxpbmsgZnJhICJbJTJdIiB0aWwgIlslMV0iIGVyIGJsZXZldCBvcHJldHRldC4nLAonbm90X3N5bWxpbmtlZCcgPT4gJ1N5bWJvbHNrIGxpbmsgZnJhICJbJTJdIiB0aWwgIlslMV0iIGt1bm5lIGlra2Ugb3ByZXR0ZXMuJywKJ3Blcm1pc3Npb25fZm9yJyA9PiAnUmV0dGlnaGVkZXIgZm9yICJbJTFdIjonLAoncGVybWlzc2lvbl9zZXQnID0+ICdSZXR0aWdoZWRlciBmb3IgIlslMV0iIGJsZXYgc2F0IHRpbCBbJTJdLicsCidwZXJtaXNzaW9uX25vdF9zZXQnID0+ICdSZXR0aWdoZWRlciBmb3IgIlslMV0iIGt1bm5lIGlra2Ugc8ODwqZ0dGVzIHRpbCBbJTJdLicsCidub3RfcmVhZGFibGUnID0+ICciWyUxXSIgS2FuIGlra2UgbMODwqZzZXMuJwoJCSk7CgoJY2FzZSAndHInOgoKCQkkZGF0ZV9mb3JtYXQgPSAnbi9qL3kgSDppOnMnOwoKCQlyZXR1cm4gYXJyYXkoCidkaXJlY3RvcnknID0+ICdLbGFzw4PCtnInLAonZmlsZScgPT4gJ0Rvc3lhJywKJ2ZpbGVuYW1lJyA9PiAnZG9zeWEgYWRpJywKCidzaXplJyA9PiAnYm95dXR1JywKJ3Blcm1pc3Npb24nID0+ICdJemluJywKJ293bmVyJyA9PiAnc2FoaWInLAonZ3JvdXAnID0+ICdHcnVwJywKJ290aGVyJyA9PiAnRGlnZXJsZXJpJywKJ2Z1bmN0aW9ucycgPT4gJ0ZvbmtzaXlvbmxhcicsCgoncmVhZCcgPT4gJ29rdScsCid3cml0ZScgPT4gJ3lheicsCidleGVjdXRlJyA9PiAnw4PCp2FsaXN0aXInLAoKJ2NyZWF0ZV9zeW1saW5rJyA9PiAneWFyYXQgc3ltbGluaycsCidkZWxldGUnID0+ICdzaWwnLAoncmVuYW1lJyA9PiAnYWQgZGVnaXN0aXInLAonbW92ZScgPT4gJ3Rhc2knLAonY29weScgPT4gJ2tvcHlhbGEnLAonZWRpdCcgPT4gJ2TDg8K8emVubGUnLAonZG93bmxvYWQnID0+ICdpbmRpcicsCid1cGxvYWQnID0+ICd5w4PCvGtsZScsCidjcmVhdGUnID0+ICdjcmVhdGUnLAonY2hhbmdlJyA9PiAnZGVnaXN0aXInLAonc2F2ZScgPT4gJ2theWRldCcsCidzZXQnID0+ICdheWFyJywKJ3Jlc2V0JyA9PiAnc2lmaXJsYScsCidyZWxhdGl2ZScgPT4gJ0hlZGVmIHlvbGEgZ8ODwrZyZScsCgoneWVzJyA9PiAnRXZldCcsCidubycgPT4gJ0hheWlyJywKJ2JhY2snID0+ICdHZXJpJywKJ2Rlc3RpbmF0aW9uJyA9PiAnSGVkZWYnLAonc3ltbGluaycgPT4gJ0vDg8K9c2EgeW9sJywKJ25vX291dHB1dCcgPT4gJ8ODwqdpa3RpIHlvaycsCgondXNlcicgPT4gJ0t1bGxhbmljaScsCidwYXNzd29yZCcgPT4gJ1NpZnJlJywKJ2FkZCcgPT4gJ2VrbGUnLAonYWRkX2Jhc2ljX2F1dGgnID0+ICdla2xlIGJhc2l0LWF1dGhlbnRpZmljYXRpb24nLAoKJ3VwbG9hZGVkJyA9PiAnIlslMV0iIHnDg8K8a2xlbmRpLicsCidub3RfdXBsb2FkZWQnID0+ICciWyUxXSIgecODwrxrbGVuZW1lZGkuJywKJ2FscmVhZHlfZXhpc3RzJyA9PiAnIlslMV0iIGt1bGxhbmlsbWFrdGEuJywKJ2NyZWF0ZWQnID0+ICciWyUxXSIgb2x1c3R1cnVsZHUuJywKJ25vdF9jcmVhdGVkJyA9PiAnIlslMV0iIG9sdXN0dXJ1bGFtYWRpLicsCidyZWFsbHlfZGVsZXRlJyA9PiAnQnUgZG9zeWFsYXJpIHNpbG1layBpc3RlZGlnaW5pemRlbiBlbWlubWlzaW5pej8nLAonZGVsZXRlZCcgPT4gIkJ1IGRvc3lhbGFyIHNpbGluZGk6XG5bJTFdIiwKJ25vdF9kZWxldGVkJyA9PiAiQnUgZG9zeWFsYXIgc2lsaW5lbWVkaTpcblslMV0iLAoncmVuYW1lX2ZpbGUnID0+ICdBZGkgZGVnaXNlbiBkb3N5YTonLAoncmVuYW1lZCcgPT4gJyJbJTFdIiBhZGlsaSBkb3N5YW5pbiB5ZW5pIGFkaSAiWyUyXSIuJywKJ25vdF9yZW5hbWVkJyA9PiAnIlslMV0gYWRpIGRlZ2lzdGlyaWxlbWVkaSAiWyUyXSIgaWxlLicsCidtb3ZlX2ZpbGVzJyA9PiAnVGFzaW5hbiBkb3N5YWxhcjonLAonbW92ZWQnID0+ICJCdSBkb3N5YWxhcmkgdGFzaWRpZ2luaXogeWVyIFwiWyUyXVwiOlxuWyUxXSIsCidub3RfbW92ZWQnID0+ICJCdSBkb3N5YWxhcmkgdGFzaXlhbWFkaWdpbml6IHllciBcIlslMl1cIjpcblslMV0iLAonY29weV9maWxlcycgPT4gJ0tvcHlhbGFuYW4gZG9zeWFsYXI6JywKJ2NvcGllZCcgPT4gIkJ1IGRvc3lhbGFyIGtvcHlhbGFuZGkgXCJbJTJdXCI6XG5bJTFdIiwKJ25vdF9jb3BpZWQnID0+ICJCdSBkb3N5YWxhciBrb3B5YWxhbmFtaXlvciBcIlslMl1cIjpcblslMV0iLAonbm90X2VkaXRlZCcgPT4gJyJbJTFdIiBkw4PCvHplbmxlbmVtaXlvci4nLAonZXhlY3V0ZWQnID0+ICJcIlslMV1cIiBiYXNhcml5bGEgw4PCp2FsaXN0aXJpbGRpOlxueyUyfSIsCidub3RfZXhlY3V0ZWQnID0+ICJcIlslMV1cIiDDg8KnYWxpc3RpcmlsYW1hZGk6XG57JTJ9IiwKJ3NhdmVkJyA9PiAnIlslMV0iIGtheWRlZGlsZGkuJywKJ25vdF9zYXZlZCcgPT4gJyJbJTFdIiBrYXlkZWRpbGVtZWRpLicsCidzeW1saW5rZWQnID0+ICciWyUyXSIgZGVuICJbJTFdIiBlIGvDg8K9c2F5b2wgb2x1w4PCvnR1cnVsZHUuJywKJ25vdF9zeW1saW5rZWQnID0+ICciWyUyXSJkZW4gIlslMV0iIGUga8ODwr1zYXlvbCBvbHXDg8K+dHVydWxhbWFkw4PCvS4nLAoncGVybWlzc2lvbl9mb3InID0+ICdJemlubGVyICJbJTFdIjonLAoncGVybWlzc2lvbl9zZXQnID0+ICdJemlubGVyICJbJTFdIiBkZWdpc3RpcmlsZGkgWyUyXS4nLAoncGVybWlzc2lvbl9ub3Rfc2V0JyA9PiAnSXppbmxlciAiWyUxXSIgZGVnaXN0aXJpbGVtZWRpIFslMl0uJywKJ25vdF9yZWFkYWJsZScgPT4gJyJbJTFdIiBva3VuYW1peW9yLicKCQkpOwoKCWNhc2UgJ2NzJzoKCgkJJGRhdGVfZm9ybWF0ID0gJ2QubS55IEg6aTpzJzsKCgkJcmV0dXJuIGFycmF5KAonZGlyZWN0b3J5JyA9PiAnQWRyZXPDg8Khw4XihKInLAonZmlsZScgPT4gJ1NvdWJvcicsCidmaWxlbmFtZScgPT4gJ0ptw4PCqW5vIHNvdWJvcnUnLAoKJ3NpemUnID0+ICdWZWxpa29zdCcsCidwZXJtaXNzaW9uJyA9PiAnUHLDg8KhdmEnLAonb3duZXInID0+ICdWbGFzdG7Dg8KtaycsCidncm91cCcgPT4gJ1NrdXBpbmEnLAonb3RoZXInID0+ICdPc3RhdG7Dg8KtJywKJ2Z1bmN0aW9ucycgPT4gJ0Z1bmtjZScsCgoncmVhZCcgPT4gJ8OExZJ0ZW7Dg8KtJywKJ3dyaXRlJyA9PiAnWsODwqFwaXMnLAonZXhlY3V0ZScgPT4gJ1Nwb3XDhcKhdMOE4oC6bsODwq0nLAoKJ2NyZWF0ZV9zeW1saW5rJyA9PiAnVnl0dm/DheKEoml0IHN5bWJvbGlja8ODwr0gb2RrYXonLAonZGVsZXRlJyA9PiAnU21hemF0JywKJ3JlbmFtZScgPT4gJ1DDheKEomVqbWVub3ZhdCcsCidtb3ZlJyA9PiAnUMOF4oSiZXN1bm91dCcsCidjb3B5JyA9PiAnWmtvcMODwq1yb3ZhdCcsCidlZGl0JyA9PiAnT3RldsOF4oSiw4PCrXQnLAonZG93bmxvYWQnID0+ICdTdMODwqFobm91dCcsCid1cGxvYWQnID0+ICdOYWhyYWogbmEgc2VydmVyJywKJ2NyZWF0ZScgPT4gJ1Z5dHZvw4XihKJpdCcsCidjaGFuZ2UnID0+ICdabcOE4oC6bml0JywKJ3NhdmUnID0+ICdVbG/DhcK+aXQnLAonc2V0JyA9PiAnTmFzdGF2aXQnLAoncmVzZXQnID0+ICd6cMOE4oC6dCcsCidyZWxhdGl2ZScgPT4gJ1JlbGF0aWYnLAoKJ3llcycgPT4gJ0FubycsCidubycgPT4gJ05lJywKJ2JhY2snID0+ICdacMOE4oC6dCcsCidkZXN0aW5hdGlvbicgPT4gJ0Rlc3RpbmF0aW9uJywKJ3N5bWxpbmsnID0+ICdTeW1ib2xpY2vDg8K9IG9ka2F6JywKJ25vX291dHB1dCcgPT4gJ1Byw4PCoXpkbsODwr0gdsODwr1zdHVwJywKCid1c2VyJyA9PiAnVcOFwr5pdmF0ZWwnLAoncGFzc3dvcmQnID0+ICdIZXNsbycsCidhZGQnID0+ICdQw4XihKJpZGF0JywKJ2FkZF9iYXNpY19hdXRoJyA9PiAncMOF4oSiaWRlaiB6w4PCoWtsYWRuw4PCrSBhdXRlbnRpemFjaScsCgondXBsb2FkZWQnID0+ICdTb3Vib3IgIlslMV0iIGJ5bCBuYWhyw4PCoW4gbmEgc2VydmVyLicsCidub3RfdXBsb2FkZWQnID0+ICdTb3Vib3IgIlslMV0iIG5lYnlsIG5haHLDg8KhbiBuYSBzZXJ2ZXIuJywKJ2FscmVhZHlfZXhpc3RzJyA9PiAnU291Ym9yICJbJTFdIiB1w4XCviBleGl0dWplLicsCidjcmVhdGVkJyA9PiAnU291Ym9yICJbJTFdIiBieWwgdnl0dm/DheKEomVuLicsCidub3RfY3JlYXRlZCcgPT4gJ1NvdWJvciAiWyUxXSIgbmVtb2hsIGLDg8K9dCAgdnl0dm/DheKEomVuLicsCidyZWFsbHlfZGVsZXRlJyA9PiAnVnltYXphdCBzb3Vib3I/JywKJ2RlbGV0ZWQnID0+ICJCeWx5IHZ5bWF6w4PCoW55IHR5dG8gc291Ym9yeTpcblslMV0iLAonbm90X2RlbGV0ZWQnID0+ICJUeXRvIHNvdWJvcnkgbmVtb2hseSBiw4PCvXQgdnl0dm/DheKEomVueTpcblslMV0iLAoncmVuYW1lX2ZpbGUnID0+ICdQw4XihKJlam1lbnVqIHNvdWJvcnk6JywKJ3JlbmFtZWQnID0+ICdTb3Vib3IgIlslMV0iIGJ5bCBww4XihKJlam1lbm92w4PCoW4gbmEgIlslMl0iLicsCidub3RfcmVuYW1lZCcgPT4gJ1NvdWJvciAiWyUxXSIgbmVtb2hsIGLDg8K9dCBww4XihKJlam1lbm92w4PCoW4gbmEgIlslMl0iLicsCidtb3ZlX2ZpbGVzJyA9PiAnUMOF4oSiZW3Dg8Ktc3RpdCB0eXRvIHNvdWJvcnk6JywKJ21vdmVkJyA9PiAiVHl0byBzb3Vib3J5IGJ5bHkgcMOF4oSiZW3Dg8Ktc3TDhOKAum55IGRvIFwiWyUyXVwiOlxuWyUxXSIsCidub3RfbW92ZWQnID0+ICJUeXRvIHNvdWJvcnkgbmVtb2hseSBiw4PCvXQgcMOF4oSiZW3Dg8Ktc3TDhOKAum55IGRvIFwiWyUyXVwiOlxuWyUxXSIsCidjb3B5X2ZpbGVzJyA9PiAnWmtvcMODwq1yb3ZhdCB0eXRvIHNvdWJvcnk6JywKJ2NvcGllZCcgPT4gIlR5dG8gc291Ym9yeSBieWx5IHprb3DDg8Ktcm92w4PCoW55IGRvIFwiWyUyXVwiOlxuWyUxXSIsCidub3RfY29waWVkJyA9PiAiVHl0byBzb3Vib3J5IG5lbW9obHkgYsODwr10IHprb3DDg8Ktcm92w4PCoW55IGRvIFwiWyUyXVwiOlxuWyUxXSIsCidub3RfZWRpdGVkJyA9PiAnU291Ym9yICJbJTFdIiBuZW1vaGwgYsODwr10IG90ZXbDheKEomVuLicsCidleGVjdXRlZCcgPT4gIlNPdWJvciBcIlslMV1cIiBieWwgc3B1w4XCoXTDhOKAum4gOlxueyUyfSIsCidub3RfZXhlY3V0ZWQnID0+ICJTb3Vib3IgXCJbJTFdXCIgbmVtb2hsIGLDg8K9dCBzcHXDhcKhdMOE4oC6bjpcbnslMn0iLAonc2F2ZWQnID0+ICdTb3Vib3IgIlslMV0iIGJ5bCB1bG/DhcK+ZW4uJywKJ25vdF9zYXZlZCcgPT4gJ1NvdWJvciAiWyUxXSIgbmVtb2hsIGLDg8K9dCB1bG/DhcK+ZW4uJywKJ3N5bWxpbmtlZCcgPT4gJ0J5bCB2eXZvw4XihKJlbiBzeW1ib2xpY2vDg8K9IG9ka2F6ICJbJTJdIiBuYSBzb3Vib3IgIlslMV0iLicsCidub3Rfc3ltbGlua2VkJyA9PiAnU3ltYm9saWNrw4PCvSBvZGtheiAiWyUyXSIgbmEgc291Ym9yICJbJTFdIiBuZW1vaGwgYsODwr10IHZ5dHZvw4XihKJlbi4nLAoncGVybWlzc2lvbl9mb3InID0+ICdQcsODwqF2YSBrICJbJTFdIjonLAoncGVybWlzc2lvbl9zZXQnID0+ICdQcsODwqF2YSBrICJbJTFdIiBieWxhIHptw4TigLpuw4TigLpuYSBuYSBbJTJdLicsCidwZXJtaXNzaW9uX25vdF9zZXQnID0+ICdQcsODwqF2YSBrICJbJTFdIiBuZW1vaGxhIGLDg8K9dCB6bcOE4oC6bsOE4oC6bmEgbmEgWyUyXS4nLAonbm90X3JlYWRhYmxlJyA9PiAnU291Ym9yICJbJTFdIiBuZW7Dg8KtIG1vw4XCvm5vIHDDheKEomXDhMKNw4PCrXN0LicKCQkpOwoKCWNhc2UgJ3J1JzoKCgkJJGRhdGVfZm9ybWF0ID0gJ2QubS55IEg6aTpzJzsKCgkJcmV0dXJuIGFycmF5KAonZGlyZWN0b3J5JyA9PiAnw5DFocOQwrDDkeKAmsOQwrDDkMK7w5DCvsOQwrMnLAonZmlsZScgPT4gJ8OQwqTDkMKww5DCucOQwrsnLAonZmlsZW5hbWUnID0+ICfDkMucw5DCvMORwo8gw5HigJ7DkMKww5DCucOQwrvDkMKwJywKCidzaXplJyA9PiAnw5Agw5DCsMOQwrfDkMK8w5DCtcOR4oKsJywKJ3Blcm1pc3Npb24nID0+ICfDkMW4w5HigqzDkMKww5DCssOQwrAnLAonb3duZXInID0+ICfDkMKlw5DCvsOQwrfDkcKPw5DCuMOQwr0nLAonZ3JvdXAnID0+ICfDkOKAnMOR4oKsw5HGksOQwr/DkMK/w5DCsCcsCidvdGhlcicgPT4gJ8OQ4oCdw5HigqzDkcaSw5DCs8OQwrjDkMK1JywKJ2Z1bmN0aW9ucycgPT4gJ8OQwqTDkcaSw5DCvcOQwrrDkeKAoMOQwrjDkcKPJywKCidyZWFkJyA9PiAnw5HigKHDkMK4w5HigJrDkMKww5HigJrDkcWSJywKJ3dyaXRlJyA9PiAnw5DCv8OQwrjDkcKBw5DCsMOR4oCaw5HFkicsCidleGVjdXRlJyA9PiAnw5DCssOR4oC5w5DCv8OQwr7DkMK7w5DCvcOQwrjDkeKAmsORxZInLAoKJ2NyZWF0ZV9zeW1saW5rJyA9PiAnw5DCocOQwrTDkMK1w5DCu8OQwrDDkeKAmsORxZIgw5HCgcOQwrjDkMK8w5DCu8OQwrjDkMK9w5DCuicsCidkZWxldGUnID0+ICfDkcaSw5DCtMOQwrDDkMK7w5DCuMOR4oCaw5HFkicsCidyZW5hbWUnID0+ICfDkMK/w5DCtcOR4oKsw5DCtcOQwrjDkMK8w5DCtcOQwr3DkMK+w5DCssOQwrDDkeKAmsORxZInLAonbW92ZScgPT4gJ8OQwr/DkMK1w5HigqzDkMK1w5DCtMOQwrLDkMK4w5DCvcORxpLDkeKAmsORxZInLAonY29weScgPT4gJ8OQwrrDkMK+w5DCv8OQwrjDkeKCrMOQwr7DkMKyw5DCsMOR4oCaw5HFkicsCidlZGl0JyA9PiAnw5HigqzDkMK1w5DCtMOQwrDDkMK6w5HigJrDkMK4w5HigqzDkMK+w5DCssOQwrDDkeKAmsORxZInLAonZG93bmxvYWQnID0+ICfDkcKBw5DCusOQwrDDkeKAocOQwrDDkeKAmsORxZInLAondXBsb2FkJyA9PiAnw5DCt8OQwrDDkMK6w5DCsMOR4oChw5DCsMOR4oCaw5HFkicsCidjcmVhdGUnID0+ICfDkcKBw5DCtMOQwrXDkMK7w5DCsMOR4oCaw5HFkicsCidjaGFuZ2UnID0+ICfDkMK/w5DCvsOQwrzDkMK1w5DCvcORwo/DkeKAmsORxZInLAonc2F2ZScgPT4gJ8ORwoHDkMK+w5HigKbDkeKCrMOQwrDDkMK9w5DCuMOR4oCaw5HFkicsCidzZXQnID0+ICfDkcaSw5HCgcOR4oCaw5DCsMOQwr3DkMK+w5DCssOQwrjDkeKAmsORxZInLAoncmVzZXQnID0+ICfDkcKBw5DCscOR4oKsw5DCvsORwoHDkMK4w5HigJrDkcWSJywKJ3JlbGF0aXZlJyA9PiAnw5DCvsOR4oCaw5DCvcOQwr7DkcKBw5DCuMOR4oCaw5DCtcOQwrvDkcWSw5DCvcOR4oC5w5DCuSDDkMK/w5HGksOR4oCaw5HFkiDDkMK6IMOR4oCgw5DCtcOQwrvDkMK4JywKCid5ZXMnID0+ICfDkMK0w5DCsCcsCidubycgPT4gJ8OQwr3DkMK1w5HigJonLAonYmFjaycgPT4gJ8OQwr3DkMKww5DCt8OQwrDDkMK0JywKJ2Rlc3RpbmF0aW9uJyA9PiAnw5HigKDDkMK1w5DCu8ORxZInLAonc3ltbGluaycgPT4gJ8ORwoHDkMK4w5DCvMOQwrLDkMK+w5DCu8OQwrjDkeKAocOQwrXDkcKBw5DCusOQwrjDkMK5IMOQwrvDkMK4w5DCvcOQwronLAonbm9fb3V0cHV0JyA9PiAnw5DCvcOQwrXDkeKAmiDDkMKyw5HigLnDkMKyw5DCvsOQwrTDkMKwJywKCid1c2VyJyA9PiAnw5DFuMOQwr7DkMK7w5HFksOQwrfDkMK+w5DCssOQwrDDkeKAmsOQwrXDkMK7w5HFkicsCidwYXNzd29yZCcgPT4gJ8OQxbjDkMKww5HigqzDkMK+w5DCu8ORxZInLAonYWRkJyA9PiAnw5DCtMOQwr7DkMKxw5DCsMOQwrLDkMK4w5HigJrDkcWSJywKJ2FkZF9iYXNpY19hdXRoJyA9PiAnw5DigJ3DkMK+w5DCscOQwrDDkMKyw5DCuMOR4oCaw5HFkiBIVFRQLUJhc2ljLUF1dGgnLAoKJ3VwbG9hZGVkJyA9PiAnIlslMV0iIMOQwrHDkeKAucOQwrsgw5DCt8OQwrDDkMK6w5DCsMOR4oChw5DCtcOQwr0uJywKJ25vdF91cGxvYWRlZCcgPT4gJyJbJTFdIiDDkMK9w5DCtcOQwrLDkMK+w5DCt8OQwrzDkMK+w5DCtsOQwr3DkMK+IMOQwrHDkeKAucOQwrvDkMK+IMOQwrfDkMKww5DCusOQwrDDkeKAocORwo/DkeKAmsORxZIuJywKJ2FscmVhZHlfZXhpc3RzJyA9PiAnIlslMV0iIMORxpLDkMK2w5DCtSDDkcKBw5HGksOR4oCww5DCtcORwoHDkeKAmsOQwrLDkcaSw5DCtcOR4oCaLicsCidjcmVhdGVkJyA9PiAnIlslMV0iIMOQwrHDkeKAucOQwrsgw5HCgcOQwrTDkMK1w5DCu8OQwrDDkMK9LicsCidub3RfY3JlYXRlZCcgPT4gJyJbJTFdIiDDkMK9w5DCtSDDkMKyw5DCvsOQwrfDkMK8w5DCvsOQwrbDkMK9w5DCviDDkcKBw5DCtMOQwrXDkMK7w5DCsMOR4oCaw5HFki4nLAoncmVhbGx5X2RlbGV0ZScgPT4gJ8OQ4oCdw5DCtcOQwrnDkcKBw5HigJrDkMKyw5DCuMOR4oCaw5DCtcOQwrvDkcWSw5DCvcOQwr4gw5HCjcOR4oCaw5DCvsOR4oCaIMOR4oCew5DCsMOQwrnDkMK7IMORxpLDkMK0w5DCsMOQwrvDkMK4w5HigJrDkcWSPycsCidkZWxldGVkJyA9PiAiw5DCocOQwrvDkMK1w5DCtMORxpLDkcW9w5HigLDDkMK4w5DCtSDDkeKAnsOQwrDDkMK5w5DCu8OR4oC5IMOQwrHDkeKAucOQwrvDkMK4IMORxpLDkMK0w5DCsMOQwrvDkMK1w5DCvcOR4oC5OlxuWyUxXSIsCidub3RfZGVsZXRlZCcgPT4gIsOQwqHDkMK7w5DCtcOQwrTDkcaSw5HFvcOR4oCww5DCuMOQwrUgw5HigJ7DkMKww5DCucOQwrvDkeKAuSDDkMK9w5DCtSDDkMKyw5DCvsOQwrfDkMK8w5DCvsOQwrbDkMK9w5DCviDDkMKxw5HigLnDkMK7w5DCviDDkcaSw5DCtMOQwrDDkMK7w5DCuMOR4oCaw5HFkjpcblslMV0iLAoncmVuYW1lX2ZpbGUnID0+ICfDkMW4w5DCtcOR4oKsw5DCtcOQwrjDkMK8w5DCtcOQwr3DkMK+w5DCssOR4oC5w5DCssOQwrDDkcW9IMOR4oCew5DCsMOQwrnDkMK7OicsCidyZW5hbWVkJyA9PiAnIlslMV0iIMOQwrHDkeKAucOQwrsgw5DCv8OQwrXDkeKCrMOQwrXDkMK4w5DCvMOQwrXDkMK9w5DCvsOQwrLDkMKww5DCvSDDkMK9w5DCsCAiWyUyXSIuJywKJ25vdF9yZW5hbWVkJyA9PiAnIlslMV0gw5DCvcOQwrXDkMKyw5DCvsOQwrfDkMK8w5DCvsOQwrbDkMK9w5DCviDDkMKxw5HigLnDkMK7w5DCviDDkMK/w5DCtcOR4oKsw5DCtcOQwrjDkMK8w5DCtcOQwr3DkMK+w5DCssOQwrDDkeKAmsORxZIgw5DCvcOQwrAgIlslMl0iLicsCidtb3ZlX2ZpbGVzJyA9PiAnw5DFuMOQwrXDkeKCrMOQwrXDkMK0w5DCssOQwrjDkMKzw5DCsMORxb0gw5HCgcOQwrvDkMK1w5DCtMORxpLDkcW9w5HigLDDkMK4w5DCtSDDkeKAnsOQwrDDkMK5w5DCu8OR4oC5OicsCidtb3ZlZCcgPT4gIsOQwqHDkMK7w5DCtcOQwrTDkcaSw5HFvcOR4oCww5DCuMOQwrUgw5HigJ7DkMKww5DCucOQwrvDkeKAuSDDkMKxw5HigLnDkMK7w5DCuCDDkMK/w5DCtcOR4oKsw5DCtcOQwrTDkMKyw5DCuMOQwr3DkcaSw5HigJrDkeKAuSDDkMKyIMOQwrrDkMKww5HigJrDkMKww5DCu8OQwr7DkMKzIFwiWyUyXVwiOlxuWyUxXSIsCidub3RfbW92ZWQnID0+ICLDkMKhw5DCu8OQwrXDkMK0w5HGksORxb3DkeKAsMOQwrjDkMK1IMOR4oCew5DCsMOQwrnDkMK7w5HigLkgw5DCvcOQwrXDkMKyw5DCvsOQwrfDkMK8w5DCvsOQwrbDkMK9w5DCviDDkMKxw5HigLnDkMK7w5DCviDDkMK/w5DCtcOR4oKsw5DCtcOQwrTDkMKyw5DCuMOQwr3DkcaSw5HigJrDkcWSIMOQwrIgw5DCusOQwrDDkeKAmsOQwrDDkMK7w5DCvsOQwrMgXCJbJTJdXCI6XG5bJTFdIiwKJ2NvcHlfZmlsZXMnID0+ICfDkMWhw5DCvsOQwr/DkMK4w5HigqzDkcaSw5HFvSDDkcKBw5DCu8OQwrXDkMK0w5HGksOR4oCww5DCuMOQwrUgw5HigJ7DkMKww5DCucOQwrvDkeKAuTonLAonY29waWVkJyA9PiAiw5DCocOQwrvDkMK1w5DCtMORxpLDkeKAsMOQwrjDkMK1IMOR4oCew5DCsMOQwrnDkMK7w5HigLkgw5DCscOR4oC5w5DCu8OR4oC5IMORwoHDkMK6w5DCvsOQwr/DkMK4w5HigqzDkMK+w5DCssOQwrDDkMK9w5HigLkgw5DCsiDDkMK6w5DCsMOR4oCaw5DCsMOQwrvDkMK+w5DCsyBcIlslMl1cIiA6XG5bJTFdIiwKJ25vdF9jb3BpZWQnID0+ICLDkMKhw5DCu8OQwrXDkMK0w5HGksORxb3DkeKAsMOQwrjDkMK1IMOR4oCew5DCsMOQwrnDkMK7w5HigLkgw5DCvcOQwrXDkMKyw5DCvsOQwrfDkMK8w5DCvsOQwrbDkMK9w5DCviDDkMKxw5HigLnDkMK7w5DCviDDkcKBw5DCusOQwr7DkMK/w5DCuMOR4oKsw5DCvsOQwrLDkMKww5HigJrDkcWSIMOQwrIgw5DCusOQwrDDkeKAmsOQwrDDkMK7w5DCvsOQwrMgXCJbJTJdXCIgOlxuWyUxXSIsCidub3RfZWRpdGVkJyA9PiAnIlslMV0iIMOQwr3DkMK1IMOQwrzDkMK+w5DCtsOQwrXDkeKAmiDDkMKxw5HigLnDkeKAmsORxZIgw5DCvsOR4oCaw5HigqzDkMK1w5DCtMOQwrDDkMK6w5HigJrDkMK4w5HigqzDkMK+w5DCssOQwrDDkMK9LicsCidleGVjdXRlZCcgPT4gIlwiWyUxXVwiIMOQwrHDkeKAucOQwrsgw5HGksORwoHDkMK/w5DCtcORy4bDkMK9w5DCviDDkMK4w5HCgcOQwr/DkMK+w5DCu8OQwr3DkMK1w5DCvTpcbnslMn0iLAonbm90X2V4ZWN1dGVkJyA9PiAiXCJbJTFdXCIgw5DCvcOQwrXDkMKyw5DCvsOQwrfDkMK8w5DCvsOQwrbDkMK9w5DCviDDkMKxw5HigLnDkMK7w5DCviDDkMK3w5DCsMOQwr/DkcaSw5HCgcOR4oCaw5DCuMOR4oCaw5HFkiDDkMK9w5DCsCDDkMK4w5HCgcOQwr/DkMK+w5DCu8OQwr3DkMK1w5DCvcOQwrjDkMK1OlxueyUyfSIsCidzYXZlZCcgPT4gJyJbJTFdIiDDkMKxw5HigLnDkMK7IMORwoHDkMK+w5HigKbDkeKCrMOQwrDDkMK9w5DCtcOQwr0uJywKJ25vdF9zYXZlZCcgPT4gJyJbJTFdIiDDkMK9w5DCtcOQwrLDkMK+w5DCt8OQwrzDkMK+w5DCtsOQwr3DkMK+IMOQwrHDkeKAucOQwrvDkMK+IMORwoHDkMK+w5HigKbDkeKCrMOQwrDDkMK9w5DCuMOR4oCaw5HFki4nLAonc3ltbGlua2VkJyA9PiAnw5DCocOQwrjDkMK8w5DCu8OQwrjDkMK9w5DCuiDDkcKBICJbJTJdIiDDkMK9w5DCsCAiWyUxXSIgw5DCscOR4oC5w5DCuyDDkcKBw5DCtMOQwrXDkMK7w5DCsMOQwr0uJywKJ25vdF9zeW1saW5rZWQnID0+ICfDkMKdw5DCtcOQwrLDkMK+w5DCt8OQwrzDkMK+w5DCtsOQwr3DkMK+IMOQwrHDkeKAucOQwrvDkMK+IMORwoHDkMK0w5DCtcOQwrvDkMKww5HigJrDkcWSIMORwoHDkMK4w5DCvMOQwrvDkMK4w5DCvcOQwrogw5HCgSAiWyUyXSIgw5DCvcOQwrAgIlslMV0iLicsCidwZXJtaXNzaW9uX2ZvcicgPT4gJ8OQxbjDkeKCrMOQwrDDkMKyw5DCsCDDkMK0w5DCvsORwoHDkeKAmsORxpLDkMK/w5DCsCAiWyUxXSI6JywKJ3Blcm1pc3Npb25fc2V0JyA9PiAnw5DFuMOR4oKsw5DCsMOQwrLDkMKwIMOQwrTDkMK+w5HCgcOR4oCaw5HGksOQwr/DkMKwICJbJTFdIiDDkMKxw5HigLnDkMK7w5DCuCDDkMK4w5DCt8OQwrzDkMK1w5DCvcOQwrXDkMK9w5HigLkgw5DCvcOQwrAgWyUyXS4nLAoncGVybWlzc2lvbl9ub3Rfc2V0JyA9PiAnw5DCncOQwrXDkMKyw5DCvsOQwrfDkMK8w5DCvsOQwrbDkMK9w5DCviDDkMKxw5HigLnDkMK7w5DCviDDkMK4w5DCt8OQwrzDkMK1w5DCvcOQwrjDkeKAmsORxZIgw5DCv8OR4oKsw5DCsMOQwrLDkMKwIMOQwrTDkMK+w5HCgcOR4oCaw5HGksOQwr/DkMKwIMOQwrogIlslMV0iIMOQwr3DkMKwIFslMl0gLicsCidub3RfcmVhZGFibGUnID0+ICciWyUxXSIgw5DCvcOQwrXDkMKyw5DCvsOQwrfDkMK8w5DCvsOQwrbDkMK9w5DCviDDkMK/w5HigqzDkMK+w5HigKHDkMK4w5HigJrDkMKww5HigJrDkcWSLicKCQkpOwoKCWNhc2UgJ3BsJzoKCgkJJGRhdGVfZm9ybWF0ID0gJ2QubS55IEg6aTpzJzsKCgkJcmV0dXJuIGFycmF5KAonZGlyZWN0b3J5JyA9PiAnS2F0YWxvZycsCidmaWxlJyA9PiAnUGxpaycsCidmaWxlbmFtZScgPT4gJ05hendhIHBsaWt1JywKJ3NpemUnID0+ICdSb3ptaWFyJywKJ3Blcm1pc3Npb24nID0+ICdVcHJhd25pZW5pYScsCidvd25lcicgPT4gJ1fDheKAmmHDheKAumNpY2llbCcsCidncm91cCcgPT4gJ0dydXBhJywKJ290aGVyJyA9PiAnSW5uaScsCidmdW5jdGlvbnMnID0+ICdGdW5rY2plJywKCidyZWFkJyA9PiAnb2Rjenl0JywKJ3dyaXRlJyA9PiAnemFwaXMnLAonZXhlY3V0ZScgPT4gJ3d5a29ueXdhbmllJywKCidjcmVhdGVfc3ltbGluaycgPT4gJ3V0d8ODwrNyeiBkb3dpw4TigKZ6YW5pZSBzeW1ib2xpY3puZScsCidkZWxldGUnID0+ICdrYXN1aicsCidyZW5hbWUnID0+ICd6YW1pZcOF4oCeJywKJ21vdmUnID0+ICdwcnplbmllw4XigLonLAonY29weScgPT4gJ2tvcGl1aicsCidlZGl0JyA9PiAnZWR5dHVqJywKJ2Rvd25sb2FkJyA9PiAncG9iaWVyeicsCid1cGxvYWQnID0+ICdQcnplw4XigLpsaWonLAonY3JlYXRlJyA9PiAnVXR3w4PCs3J6JywKJ2NoYW5nZScgPT4gJ1ptaWXDheKAnicsCidzYXZlJyA9PiAnWmFwaXN6JywKJ3NldCcgPT4gJ3d5a29uYWonLAoncmVzZXQnID0+ICd3eWN6ecOF4oC6w4TigKEnLAoncmVsYXRpdmUnID0+ICd3emdsw4TihKJkbmEgw4XigLpjaWXDhcK8a2EgZG8gY2VsdScsCgoneWVzJyA9PiAnVGFrJywKJ25vJyA9PiAnTmllJywKJ2JhY2snID0+ICdjb2ZuaWonLAonZGVzdGluYXRpb24nID0+ICdtaWVqc2NlIHByemV6bmFjemVuaWEnLAonc3ltbGluaycgPT4gJ2Rvd2nDhOKApnphbmllIHN5bWJvbGljem5lJywKJ25vX291dHB1dCcgPT4gJ25pZSBtYSB3eWrDheKAumNpYScsCgondXNlcicgPT4gJ1Vyenl0a293bmlrJywKJ3Bhc3N3b3JkJyA9PiAnSGFzw4XigJpvJywKJ2FkZCcgPT4gJ2RvZGFqJywKJ2FkZF9iYXNpY19hdXRoJyA9PiAnZG9kYWogcG9kc3Rhd293ZSB1d2llcnp5dGVsbmlhbmllJywKCid1cGxvYWRlZCcgPT4gJyJbJTFdIiB6b3N0YcOF4oCaIHByemVzw4XigJphbnkuJywKJ25vdF91cGxvYWRlZCcgPT4gJyJbJTFdIiBuaWUgbW/DhcK8ZSBiecOE4oChIHByemVzw4XigJphbmUuJywKJ2FscmVhZHlfZXhpc3RzJyA9PiAnIlslMV0iIGp1w4XCvCBpc3RuaWVqZS4nLAonY3JlYXRlZCcgPT4gJyJbJTFdIiB6b3N0YcOF4oCaIHV0d29yem9ueS4nLAonbm90X2NyZWF0ZWQnID0+ICciWyUxXSIgbmllIG1vw4XCvG5hIHV0d29yennDhOKAoS4nLAoncmVhbGx5X2RlbGV0ZScgPT4gJ3VzdW7DhOKApsOE4oChIHRlIHBsaWtpPycsCidkZWxldGVkJyA9PiAiUGxpa2kgem9zdGHDheKAmnkgdXN1bmnDhOKEonRlOlxuWyUxXSIsCidub3RfZGVsZXRlZCcgPT4gIlRlIHBsaWtpIG5pZSBtb2fDhOKApiBiecOE4oChIHVzdW5pw4TihKJ0ZTpcblslMV0iLAoncmVuYW1lX2ZpbGUnID0+ICdabWllw4XigJ4gbmF6d8OE4oSiIHBsaWt1OicsCidyZW5hbWVkJyA9PiAnIlslMV0iIHpvc3Rhw4XigJpvIHptaWVuaW9uZSBuYSAiWyUyXSIuJywKJ25vdF9yZW5hbWVkJyA9PiAnIlslMV0gbmllIG1vw4XCvG5hIHptaWVuacOE4oChIG5hICJbJTJdIi4nLAonbW92ZV9maWxlcycgPT4gJ1ByemVuaWXDheKAuiB0ZSBwbGlraTonLAonbW92ZWQnID0+ICJQbGlraSB6b3N0YcOF4oCaeSBwcnplbmllc2lvbmUgZG8gXCJbJTJdXCI6XG5bJTFdIiwKJ25vdF9tb3ZlZCcgPT4gIlBsaWtpIG5pZSBtb2fDhOKApiBiecOE4oChIHByemVuaWVzaW9uZSBkbyBcIlslMl1cIjpcblslMV0iLAonY29weV9maWxlcycgPT4gJ1Nrb3BpdWogdGUgcGxpa2k6JywKJ2NvcGllZCcgPT4gIlBsaWtpIHpvc3Rhw4XigJp5IHNrb3Bpb3dhbmUgXCJbJTJdXCI6XG5bJTFdIiwKJ25vdF9jb3BpZWQnID0+ICJUZSBwbGlraSBuaWUgbW9nw4TigKYgYnnDhOKAoSBrb3Bpb3dhbmUgZG8gXCJbJTJdXCI6XG5bJTFdIiwKJ25vdF9lZGl0ZWQnID0+ICciWyUxXSIgbmllIG1vw4XCvG5hIGVkeXRvd2HDhOKAoS4nLAonZXhlY3V0ZWQnID0+ICJcIlslMV1cIiB6b3N0YcOF4oCabyB3eWtvbmFuZSBwb215w4XigLpsbmllOlxueyUyfSIsCidub3RfZXhlY3V0ZWQnID0+ICJcIlslMV1cIiBuaWUgbW/DhcK8ZSBiecOE4oChIHd5a29uYW5lOlxueyUyfSIsCidzYXZlZCcgPT4gJyJbJTFdIiB6b3N0YcOF4oCaIHphcGlzYW55LicsCidub3Rfc2F2ZWQnID0+ICciWyUxXSIgbmllIG1vw4XCvG5hIHphcGlzYcOE4oChLicsCidzeW1saW5rZWQnID0+ICdEb3dpw4TigKZ6YW5pZSBzeW1ib2xpY3puZSAiWyUyXSIgZG8gIlslMV0iIHpvc3Rhw4XigJpvIHV0d29yem9uZS4nLAonbm90X3N5bWxpbmtlZCcgPT4gJ0Rvd2nDhOKApnphbmllIHN5bWJvbGljem5lICJbJTJdIiBkbyAiWyUxXSIgbmllIG1vemUgYnnDhOKAoSB1dHdvcnpvbmUuJywKJ3Blcm1pc3Npb25fZm9yJyA9PiAnVXByYXduaWVuaWEgIlslMV0iOicsCidwZXJtaXNzaW9uX3NldCcgPT4gJ1VwcmF3bmllbmlhICJbJTFdIiB6b3N0YcOF4oCaeSB1c3RhbG9uZSBuYSBbJTJdLicsCidwZXJtaXNzaW9uX25vdF9zZXQnID0+ICdVcHJhd25pZW5pYSAiWyUxXSIgbmllIG1vZ8OE4oCmIGJ5w4TigKEgdXN0YXdpb25lIG5hIFslMl0uJywKJ25vdF9yZWFkYWJsZScgPT4gJyJbJTFdIiBuaWUgbW/DhcK8bmEgb2Rjenl0YcOE4oChLicKCQkpOwoKCWNhc2UgJ2VuJzoKCWRlZmF1bHQ6CgoJCSRkYXRlX2Zvcm1hdCA9ICduL2oveSBIOmk6cyc7CgoJCXJldHVybiBhcnJheSgKJ2RpcmVjdG9yeScgPT4gJ0RpcmVjdG9yeScsCidmaWxlJyA9PiAnRmlsZScsCidmaWxlbmFtZScgPT4gJ0ZpbGVuYW1lJywKCidzaXplJyA9PiAnU2l6ZScsCidwZXJtaXNzaW9uJyA9PiAnUGVybWlzc2lvbicsCidvd25lcicgPT4gJ093bmVyJywKJ2dyb3VwJyA9PiAnR3JvdXAnLAonb3RoZXInID0+ICdPdGhlcnMnLAonZnVuY3Rpb25zJyA9PiAnRnVuY3Rpb25zJywKCidyZWFkJyA9PiAncmVhZCcsCid3cml0ZScgPT4gJ3dyaXRlJywKJ2V4ZWN1dGUnID0+ICdleGVjdXRlJywKCidjcmVhdGVfc3ltbGluaycgPT4gJ2NyZWF0ZSBzeW1saW5rJywKJ2RlbGV0ZScgPT4gJ2RlbGV0ZScsCidyZW5hbWUnID0+ICdyZW5hbWUnLAonbW92ZScgPT4gJ21vdmUnLAonY29weScgPT4gJ2NvcHknLAonZWRpdCcgPT4gJ2VkaXQnLAonZG93bmxvYWQnID0+ICdkb3dubG9hZCcsCid1cGxvYWQnID0+ICd1cGxvYWQnLAonY3JlYXRlJyA9PiAnY3JlYXRlJywKJ2NoYW5nZScgPT4gJ2NoYW5nZScsCidzYXZlJyA9PiAnc2F2ZScsCidzZXQnID0+ICdzZXQnLAoncmVzZXQnID0+ICdyZXNldCcsCidyZWxhdGl2ZScgPT4gJ1JlbGF0aXZlIHBhdGggdG8gdGFyZ2V0JywKCid5ZXMnID0+ICdZZXMnLAonbm8nID0+ICdObycsCidiYWNrJyA9PiAnYmFjaycsCidkZXN0aW5hdGlvbicgPT4gJ0Rlc3RpbmF0aW9uJywKJ3N5bWxpbmsnID0+ICdTeW1saW5rJywKJ25vX291dHB1dCcgPT4gJ25vIG91dHB1dCcsCgondXNlcicgPT4gJ1VzZXInLAoncGFzc3dvcmQnID0+ICdQYXNzd29yZCcsCidhZGQnID0+ICdhZGQnLAonYWRkX2Jhc2ljX2F1dGgnID0+ICdhZGQgYmFzaWMtYXV0aGVudGlmaWNhdGlvbicsCgondXBsb2FkZWQnID0+ICciWyUxXSIgaGFzIGJlZW4gdXBsb2FkZWQuJywKJ25vdF91cGxvYWRlZCcgPT4gJyJbJTFdIiBjb3VsZCBub3QgYmUgdXBsb2FkZWQuJywKJ2FscmVhZHlfZXhpc3RzJyA9PiAnIlslMV0iIGFscmVhZHkgZXhpc3RzLicsCidjcmVhdGVkJyA9PiAnIlslMV0iIGhhcyBiZWVuIGNyZWF0ZWQuJywKJ25vdF9jcmVhdGVkJyA9PiAnIlslMV0iIGNvdWxkIG5vdCBiZSBjcmVhdGVkLicsCidyZWFsbHlfZGVsZXRlJyA9PiAnRGVsZXRlIHRoZXNlIGZpbGVzPycsCidkZWxldGVkJyA9PiAiVGhlc2UgZmlsZXMgaGF2ZSBiZWVuIGRlbGV0ZWQ6XG5bJTFdIiwKJ25vdF9kZWxldGVkJyA9PiAiVGhlc2UgZmlsZXMgY291bGQgbm90IGJlIGRlbGV0ZWQ6XG5bJTFdIiwKJ3JlbmFtZV9maWxlJyA9PiAnUmVuYW1lIGZpbGU6JywKJ3JlbmFtZWQnID0+ICciWyUxXSIgaGFzIGJlZW4gcmVuYW1lZCB0byAiWyUyXSIuJywKJ25vdF9yZW5hbWVkJyA9PiAnIlslMV0gY291bGQgbm90IGJlIHJlbmFtZWQgdG8gIlslMl0iLicsCidtb3ZlX2ZpbGVzJyA9PiAnTW92ZSB0aGVzZSBmaWxlczonLAonbW92ZWQnID0+ICJUaGVzZSBmaWxlcyBoYXZlIGJlZW4gbW92ZWQgdG8gXCJbJTJdXCI6XG5bJTFdIiwKJ25vdF9tb3ZlZCcgPT4gIlRoZXNlIGZpbGVzIGNvdWxkIG5vdCBiZSBtb3ZlZCB0byBcIlslMl1cIjpcblslMV0iLAonY29weV9maWxlcycgPT4gJ0NvcHkgdGhlc2UgZmlsZXM6JywKJ2NvcGllZCcgPT4gIlRoZXNlIGZpbGVzIGhhdmUgYmVlbiBjb3BpZWQgdG8gXCJbJTJdXCI6XG5bJTFdIiwKJ25vdF9jb3BpZWQnID0+ICJUaGVzZSBmaWxlcyBjb3VsZCBub3QgYmUgY29waWVkIHRvIFwiWyUyXVwiOlxuWyUxXSIsCidub3RfZWRpdGVkJyA9PiAnIlslMV0iIGNhbiBub3QgYmUgZWRpdGVkLicsCidleGVjdXRlZCcgPT4gIlwiWyUxXVwiIGhhcyBiZWVuIGV4ZWN1dGVkIHN1Y2Nlc3NmdWxseTpcbnslMn0iLAonbm90X2V4ZWN1dGVkJyA9PiAiXCJbJTFdXCIgY291bGQgbm90IGJlIGV4ZWN1dGVkIHN1Y2Nlc3NmdWxseTpcbnslMn0iLAonc2F2ZWQnID0+ICciWyUxXSIgaGFzIGJlZW4gc2F2ZWQuJywKJ25vdF9zYXZlZCcgPT4gJyJbJTFdIiBjb3VsZCBub3QgYmUgc2F2ZWQuJywKJ3N5bWxpbmtlZCcgPT4gJ1N5bWxpbmsgZnJvbSAiWyUyXSIgdG8gIlslMV0iIGhhcyBiZWVuIGNyZWF0ZWQuJywKJ25vdF9zeW1saW5rZWQnID0+ICdTeW1saW5rIGZyb20gIlslMl0iIHRvICJbJTFdIiBjb3VsZCBub3QgYmUgY3JlYXRlZC4nLAoncGVybWlzc2lvbl9mb3InID0+ICdQZXJtaXNzaW9uIG9mICJbJTFdIjonLAoncGVybWlzc2lvbl9zZXQnID0+ICdQZXJtaXNzaW9uIG9mICJbJTFdIiB3YXMgc2V0IHRvIFslMl0uJywKJ3Blcm1pc3Npb25fbm90X3NldCcgPT4gJ1Blcm1pc3Npb24gb2YgIlslMV0iIGNvdWxkIG5vdCBiZSBzZXQgdG8gWyUyXS4nLAonbm90X3JlYWRhYmxlJyA9PiAnIlslMV0iIGNhbiBub3QgYmUgcmVhZC4nCgkJKTsKCgl9Cgp9CgpmdW5jdGlvbiBnZXRpbWFnZSAoJGltYWdlKSB7Cglzd2l0Y2ggKCRpbWFnZSkgewoJY2FzZSAnZmlsZSc6CgkJcmV0dXJuIGJhc2U2NF9kZWNvZGUoJ1IwbEdPRGxoRVFBTkFKRURBSm1abWYvLy93QUFBUC8vL3lINUJBSG9Bd01BTEFBQUFBQVJBQTBBQUFJdG5JR0p4ZzBCNDJyc2lTdkNBL1JFbVhRV2htbmloM0xVU0dhcWczNXZGYlNYdWNiU2FidW5qbk1vaHE4Q0FEc0EnKTsKCWNhc2UgJ2ZvbGRlcic6CgkJcmV0dXJuIGJhc2U2NF9kZWNvZGUoJ1IwbEdPRGxoRVFBTkFKRURBSm1abWYvLy84ek16UC8vL3lINUJBSG9Bd01BTEFBQUFBQVJBQTBBQUFJcW5JK1p3S3diWWdUUHRJdWRsYndMT2dDQlFKWW1DWXJuK20zc21ZNXZHYyswYTdkaGpoN1pieWdBQURzQScpOwoJY2FzZSAnaGlkZGVuX2ZpbGUnOgoJCXJldHVybiBiYXNlNjRfZGVjb2RlKCdSMGxHT0RsaEVRQU5BSkVEQU13QUFQLy8vNW1abWYvLy95SDVCQUhvQXdNQUxBQUFBQUFSQUEwQUFBSXRuSUdKeGcwQjQycnNpU3ZDQS9SRW1YUVdobW5paDNMVVNHYXFnMzV2RmJTWHVjYlNhYnVuam5Nb2hxOENBRHNBJyk7CgljYXNlICdsaW5rJzoKCQlyZXR1cm4gYmFzZTY0X2RlY29kZSgnUjBsR09EbGhFUUFOQUtJRUFKbVptZi8vL3dBQUFNd0FBUC8vL3dBQUFBQUFBQUFBQUNINUJBSG9Bd1FBTEFBQUFBQVJBQTBBQUFNNVNBcmNyRENDUU91TGNJb3R3Z1RZVWxsTk9BMER4WGttaFk0c2hNNXpzTVVLVFk4Z05nVXZXNmNuQWFaZ3hNeUlNMnpCTENhSGxKZ0FBRHNBJyk7CgljYXNlICdzbWlsZXknOgoJCXJldHVybiBiYXNlNjRfZGVjb2RlKCdSMGxHT0RsaEVRQU5BSkVDQUFBQUFQLy9BUC8vL3dBQUFDSDVCQUhvQXdJQUxBQUFBQUFSQUEwQUFBSXNsSStwQXUyd0RBaXowaldEM2hxbUJ6WmYxVkNsZUpRY2gwcmtkbnBwQjNkS1p1SXlnck1SRS9vSkR3VUFPd0E9Jyk7CgljYXNlICdhcnJvdyc6CgkJcmV0dXJuIGJhc2U2NF9kZWNvZGUoJ1IwbEdPRGxoRVFBTkFJQUJBQUFBQVAvLy95SDVCQUVLQUFFQUxBQUFBQUFSQUEwQUFBSWRqQTl3eTZnTlE0cHdVbWF2MHl2bitoaEppSTNtQ0o2b3RySWt4eFFBT3c9PScpOwoJfQp9CgpmdW5jdGlvbiBodG1sX2hlYWRlciAoKSB7CglnbG9iYWwgJHNpdGVfY2hhcnNldDsKCgllY2hvIDw8PEVORAo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIgogICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgo8aGVhZD4KCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PSRzaXRlX2NoYXJzZXQiIC8+Cgo8dGl0bGU+d2ViYWRtaW4ucGhwPC90aXRsZT4KCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CmJvZHkgeyBmb250OiBzbWFsbCBzYW5zLXNlcmlmOyB0ZXh0LWFsaWduOiBjZW50ZXIgfQppbWcgeyB3aWR0aDogMTdweDsgaGVpZ2h0OiAxM3B4IH0KYSwgYTp2aXNpdGVkIHsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBjb2xvcjogbmF2eSB9CmhyIHsgYm9yZGVyLXN0eWxlOiBub25lOyBoZWlnaHQ6IDFweDsgYmFja2dyb3VuZC1jb2xvcjogc2lsdmVyOyBjb2xvcjogc2lsdmVyIH0KI21haW4geyBtYXJnaW4tdG9wOiA2cHQ7IG1hcmdpbi1sZWZ0OiBhdXRvOyBtYXJnaW4tcmlnaHQ6IGF1dG87IGJvcmRlci1zcGFjaW5nOiAxcHggfQojbWFpbiB0aCB7IGJhY2tncm91bmQ6ICNlZWU7IHBhZGRpbmc6IDNwdCAzcHQgMHB0IDNwdCB9Ci5saXN0aW5nIHRoLCAubGlzdGluZyB0ZCB7IHBhZGRpbmc6IDFweCAzcHQgMCAzcHQgfQoubGlzdGluZyB0aCB7IGJvcmRlcjogMXB4IHNvbGlkIHNpbHZlciB9Ci5saXN0aW5nIHRkIHsgYm9yZGVyOiAxcHggc29saWQgI2RkZDsgYmFja2dyb3VuZDogd2hpdGUgfQoubGlzdGluZyAuY2hlY2tib3ggeyB0ZXh0LWFsaWduOiBjZW50ZXIgfQoubGlzdGluZyAuZmlsZW5hbWUgeyB0ZXh0LWFsaWduOiBsZWZ0IH0KLmxpc3RpbmcgLnNpemUgeyB0ZXh0LWFsaWduOiByaWdodCB9Ci5saXN0aW5nIHRoLnBlcm1pc3Npb24geyB0ZXh0LWFsaWduOiBsZWZ0IH0KLmxpc3RpbmcgdGQucGVybWlzc2lvbiB7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2UgfQoubGlzdGluZyAub3duZXIgeyB0ZXh0LWFsaWduOiBsZWZ0IH0KLmxpc3RpbmcgLmdyb3VwIHsgdGV4dC1hbGlnbjogbGVmdCB9Ci5saXN0aW5nIC5mdW5jdGlvbnMgeyB0ZXh0LWFsaWduOiBsZWZ0IH0KLmxpc3RpbmdfZm9vdGVyIHRkIHsgYmFja2dyb3VuZDogI2VlZTsgYm9yZGVyOiAxcHggc29saWQgc2lsdmVyIH0KI2RpcmVjdG9yeSwgI3VwbG9hZCwgI2NyZWF0ZSwgLmxpc3RpbmdfZm9vdGVyIHRkLCAjZXJyb3IgdGQsICNub3RpY2UgdGQgeyB0ZXh0LWFsaWduOiBsZWZ0OyBwYWRkaW5nOiAzcHQgfQojZGlyZWN0b3J5IHsgYmFja2dyb3VuZDogI2VlZTsgYm9yZGVyOiAxcHggc29saWQgc2lsdmVyIH0KI3VwbG9hZCB7IHBhZGRpbmctdG9wOiAxZW0gfQojY3JlYXRlIHsgcGFkZGluZy1ib3R0b206IDFlbSB9Ci5zbWFsbCwgLnNtYWxsIG9wdGlvbiB7IGZvbnQtc2l6ZTogeC1zbWFsbCB9CnRleHRhcmVhIHsgYm9yZGVyOiBub25lOyBiYWNrZ3JvdW5kOiB3aGl0ZSB9CnRhYmxlLmRpYWxvZyB7IG1hcmdpbi1sZWZ0OiBhdXRvOyBtYXJnaW4tcmlnaHQ6IGF1dG8gfQp0ZC5kaWFsb2cgeyBiYWNrZ3JvdW5kOiAjZWVlOyBwYWRkaW5nOiAxZXg7IGJvcmRlcjogMXB4IHNvbGlkIHNpbHZlcjsgdGV4dC1hbGlnbjogY2VudGVyIH0KI3Blcm1pc3Npb24geyBtYXJnaW4tbGVmdDogYXV0bzsgbWFyZ2luLXJpZ2h0OiBhdXRvIH0KI3Blcm1pc3Npb24gdGQgeyBwYWRkaW5nLWxlZnQ6IDNwdDsgcGFkZGluZy1yaWdodDogM3B0OyB0ZXh0LWFsaWduOiBjZW50ZXIgfQp0ZC5wZXJtaXNzaW9uX2FjdGlvbiB7IHRleHQtYWxpZ246IHJpZ2h0IH0KI3N5bWxpbmsgeyBiYWNrZ3JvdW5kOiAjZWVlOyBib3JkZXI6IDFweCBzb2xpZCBzaWx2ZXIgfQojc3ltbGluayB0ZCB7IHRleHQtYWxpZ246IGxlZnQ7IHBhZGRpbmc6IDNwdCB9CiNyZWRfYnV0dG9uIHsgd2lkdGg6IDEyMHB4OyBjb2xvcjogIzQwMCB9CiNncmVlbl9idXR0b24geyB3aWR0aDogMTIwcHg7IGNvbG9yOiAjMDQwIH0KI2Vycm9yIHRkIHsgYmFja2dyb3VuZDogbWFyb29uOyBjb2xvcjogd2hpdGU7IGJvcmRlcjogMXB4IHNvbGlkIHNpbHZlciB9CiNub3RpY2UgdGQgeyBiYWNrZ3JvdW5kOiBncmVlbjsgY29sb3I6IHdoaXRlOyBib3JkZXI6IDFweCBzb2xpZCBzaWx2ZXIgfQojbm90aWNlIHByZSwgI2Vycm9yIHByZSB7IGJhY2tncm91bmQ6IHNpbHZlcjsgY29sb3I6IGJsYWNrOyBwYWRkaW5nOiAxZXg7IG1hcmdpbi1sZWZ0OiAxZXg7IG1hcmdpbi1yaWdodDogMWV4IH0KY29kZSB7IGZvbnQtc2l6ZTogMTJwdCB9CnRkIHsgd2hpdGUtc3BhY2U6IG5vd3JhcCB9Cjwvc3R5bGU+Cgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CjwhLS0KZnVuY3Rpb24gYWN0aXZhdGUgKG5hbWUpIHsKCWlmIChkb2N1bWVudCAmJiBkb2N1bWVudC5mb3Jtc1swXSAmJiBkb2N1bWVudC5mb3Jtc1swXS5lbGVtZW50c1snZm9jdXMnXSkgewoJCWRvY3VtZW50LmZvcm1zWzBdLmVsZW1lbnRzWydmb2N1cyddLnZhbHVlID0gbmFtZTsKCX0KfQovLy0tPgo8L3NjcmlwdD4KCjwvaGVhZD4KPGJvZHk+CgoKRU5EOwoKfQoKZnVuY3Rpb24gaHRtbF9mb290ZXIgKCkgewoKCWVjaG8gPDw8RU5ECjwvYm9keT4KPC9odG1sPgpFTkQ7Cgp9CgpmdW5jdGlvbiBub3RpY2UgKCRwaHJhc2UpIHsKCWdsb2JhbCAkY29sczsKCgkkYXJncyA9IGZ1bmNfZ2V0X2FyZ3MoKTsKCWFycmF5X3NoaWZ0KCRhcmdzKTsKCglyZXR1cm4gJzx0ciBpZD0ibm90aWNlIj4KCTx0ZCBjb2xzcGFuPSInIC4gJGNvbHMgLiAnIj4nIC4gcGhyYXNlKCRwaHJhc2UsICRhcmdzKSAuICc8L3RkPgo8L3RyPgonOwoKfQoKZnVuY3Rpb24gZXJyb3IgKCRwaHJhc2UpIHsKCWdsb2JhbCAkY29sczsKCgkkYXJncyA9IGZ1bmNfZ2V0X2FyZ3MoKTsKCWFycmF5X3NoaWZ0KCRhcmdzKTsKCglyZXR1cm4gJzx0ciBpZD0iZXJyb3IiPgoJPHRkIGNvbHNwYW49IicgLiAkY29scyAuICciPicgLiBwaHJhc2UoJHBocmFzZSwgJGFyZ3MpIC4gJzwvdGQ+CjwvdHI+Cic7Cgp9Cgo/Pgo=')); ?>