$codelock_code="a!jbHVkZSAoImhlYWQucGhwIik7DQokcnM9bXlzcWxfcXVlcnkoInNlbGVjdCAqIGZyb20gcHVyY2giKTsNCndoaWxlICgkbmV3QXJyYXkgPSBteXNxbF9mZXRjaF9hcnJheSgkcnMpKSANCgkJCQkJCQkJCXsNCgkJCQkJICRjaERhdGUgPSAkbmV3QXJyYXlbJ2RhdGUnXTsNCgkJCQkJICRpZCA9ICRuZXdBcnJheVsnaWQnXTsNCgkJCQkJIAoJCQkJCSANCn0NCmlmKCRjaERhdGU8ZGF0ZSgiWS1tLWQiKSB8fCAkaWQ9PTIpDQp7DQoNCm15c3FsX3F1ZXJ5KCJ1cGRhdGUgcHVyY2ggc2V0IGlkPTIiKTsNCn0gZWxzZSB7DQoNCiRjdXJyZ!0ZGF0ZT1EYXRlKCJZLW0tZCBIOm06cyIpOw0KPz4NCjxodG1sPjxoZWFkPg0KDQogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KIGZ1bmN0aW9uIG15UGFyc2UobnVtKSB7DQogIHZhciBuMiA9IG51bS5zcGxpdCgiLCIpDQogIG91dCA9IDANCiAgZm9yKHZhciBpID0gMDsgaSA8IG4yLmxlbmd0aDsgaSsrKSB7DQogI@b3V0ICo9IDEwMDA7DQogI@b3V0ICs9IHBhcnNlRmxvYXQobjJbaV0pDQogIH0NCiAgcmV0dXJuIG91dA0KfQ0KIGZ1bmN0aW9uIEl0ZW1EaXN0KCkNCg0Kew0KCQkNCnZhciBUUD1kb2N1bWVudC5zYW1wbGVmb3JtLlRQLnZhbHVlOw0KDQoNCnZhciBSYXRlPWRvY3VtZ!0LnNhbXBsZWZvcm0uUmF0ZTsNCiAgICB2YXIgSXRlbURpc2Nvd!0PWRvY3VtZ!0LnNhbXBsZWZvcm0uSXRlbURpc2Nvd!0LnZhbHVlOw0KCXZhciBSPXBhcnNlS!0KEl0ZW1EaXNjb3VudCk7DQoNCgl2YXIgREE9KFRQKkl0ZW1EaXNjb3VudC8oMTAwKSk7DQoJdmFyIFRCPVRQLURBOw0KDQoJCVJhdGUudmFsdWU9KCIiK1RCKyIiKTsNCgkJDQoJCQ0KfQkNCiBmd!jdGlvbiAgcmVnaXN0cmF0aW9uX2VtcHR5Rm9ybShjYXJkKQ0KCQl7DQoJCQlpZihjYXJkLlRvdGFsQmlsbC52YWx1ZT09IiIgfHwgY2FyZC5Ub3RhbEJpbGwudmFsdWU9PTApDQoJCQkJew0KCQkJCQlhbGVydCgiRVJST1IhIE1VU1QgU0VMRUNUIFBST0RVQ1QgQkVGT1JFIENMSUNLIFNBVkUiKTsNCgkJCQkJcmV0dXJuIGZhbHNlOw0KCQkJCX0NCgkJCQkKCQkJCQ0KCQkJZWxzZSANCgkJCXsNCgkJCXJldHVybiB0cnVlOw0KCQkJfQ0KCQkJCQ0KCQl9DQoNCg0KCmZ1bmN0aW9uIERpc1BlcigpDQoNCnsNCgkJDQp2YXIgRGlzY291bnQ9ZG9jdW1lbnQuZm9ybS5EaXNjb3VudDsNCnZhciBUb3RhbEJpbGw9ZG9jdW1lbnQuZm9ybS5Ub3RhbEJpbGw7DQp2YXIgR1RiaWw9ZG9jdW1lbnQuZm9ybS5HVGJpbDsNCg0KI*HZhciBEaXNQPWRvY3VtZ!0LmZvcm0uRGlzUC52YWx1ZTsNCgl2YXIgR2JpbD1kb2N1bWVudC5mb3JtLkdiaWwudmFsdWU7DQoNCgl2YXIgREE9KEdiaWwqRGlzUC8xMDApOw0KCXZhciBUQj1HYmlsLURBOw0KDQoJCVRvdGFsQmlsbC52YWx1ZT0oIiIrVEIrIiIpOw0KCURpc2Nvd!0LnZhbHVlPSgiIitEQSsiIik7DQoJR1RiaWwudmFsdWU9KCIiK1RCKyIiKTsNCgkJDQp9CQ0KCmZ1bmN0aW9uIERpc0FtdCgpDQoNCnsNCgkJDQoNCnZhciBUb3RhbEJpbGw9ZG9jdW1lbnQuZm9ybS5Ub3RhbEJpbGw7DQoNCg0KI@DQoJdmFyIERpc2Nvd!0PWRvY3VtZ!0LmZvcm0uRGlzY291bnQudmFsdWU7DQoJRGlzY291bnQ9cGFyc2VGbG9hdChEaXNjb3VudCk7DQoJdmFyIEdiaWw9bXlQYXJzZShkb2N1bWVudC5mb3JtLkdUYmlsLnZhbHVlKTsNCgl2YXIgVEdiaWw9bXlQYXJzZShkb2N1bWVudC5mb3JtLkdiaWwudmFsdWUpOw0KCUdiaWw9cGFyc2VGbG9hdChHYmlsKTsNClRHYmlsPXBhcnNlRmxvYXQoVEdiaWwpOw0KdmFyIERpZj1UR2JpbC1HYmlsOw0KRGlmPXBhcnNlRmxvYXQoRGlmKTsNCgl2YXIgREE9KChEaWYvVEdiaWwpKjEwMCk7DQoJdmFyIFRCPUdiaWwtRGlzY291bnQ7DQoNCgkJVG90YWxCaWxsLnZhbHVlPSgiIitUQisiIik7DQoJCQ0KCQkNCn0JDQoKZnVuY3Rpb24gQ3NoKCkNCg0Kew0KCQkNCnZhciBCaWxsQmFsY!jZT1kb2N1bWVudC5mb3JtLkJpbGxCYWxhbmNlOw0KDQp2YXIgVG90YWxCaWxsPWRvY3VtZ!0LmZvcm0uVG90YWxCaWxsLnZhbHVlOw0KDQoJdmFyIENhc2g9ZG9jdW1lbnQuZm9ybS5DYXNoLnZhbHVlOw0KDQoJdmFyIEJCPVRvdGFsQmlsbC1DYXNoOw0KDQoJCUJpbGxCYWxhbmNlLnZhbHVlPSgiIitCQisiIik7DQoJCQ0KfQ0KCmZ1bmN0aW9uIGNhc2h0cmFuc2Zlcihmb3JtQ2hlY2spIA0KewkJCQkJCiBpZigoZm9ybUNoZWNrLmtleUNvZGU9PTExNykgfHwgKGZvcm1DaGVjay5rZXlDb2RlPT0zOSkpew0KCQlkb2N1bWVudC5mb3JtLkNhc2guZm9jdXMoKTsJDQoJfSBlbHNlIGlmKChmb3JtQ2hlY2sua2V5Q29kZT09MzkpKSB7DQoJCWRvY3VtZ!0LmZvcm0uRGlzUC5zZWxlY3QoKTsNCgl9IGVsc2UgaWYgKGZvcm1DaGVjay5rZXlDb2RlPT0xMjApew0KCQ0KCXdpbmRvdy5vcGVuKCJTYWxlX0NvbnRyb2xsZXIucGhwP1Bya!0PTc4NiIsIl9zZWxmIik7DQoJDQoJfSANCn0NCgoNCmZ1bmN0aW9uIFF1Y!0aXR5VHJhbnNmZXIoZm9ybUNoZWNrKSANCnsJCSBpZigoZm9ybUNoZWNrLmtleUNvZGU9PTM3KSkgDQoJCWRvY3VtZ!0LnNhbXBsZWZvcm0uRGVhbC5mb2N1cygpOw0KCQllbHNlIGlmKChmb3JtQ2hlY2sua2V5Q29kZT09MzkpKSANCgkJZG9jdW1lbnQuZm9ybS5EaXNjb3VudC5mb2N1cygpOw0KCQ0KfQ0KCg0KZnVuY3Rpb24gRGlzY291bnRUcmFuc2Zlcihmb3JtQ2hlY2spIA0KewkJCQkJCiBpZigoZm9ybUNoZWNrLmtleUNvZGU9PTExNyB8fCBmb3JtQ2hlY2sua2V5Q29kZT09NDAgfHwgZm9ybUNoZWNrLmtleUNvZGU9PTM5ICkpDQoJCWRvY3VtZ!0LmZvcm0uQ2FzaC5mb2N1cygpOwkNCgkJZWxzZSBpZigoZm9ybUNoZWNrLmtleUNvZGU9PTM3KSkgDQoJCWRvY3VtZ!0LnNhbXBsZWZvcm0uUHJvZHVjdF9Db2RlLmZvY3VzKCk7DQoJZWxzZSBpZiAoKGZvcm1DaGVjay5rZXlDb2RlPj00OCAmJiBmb3JtQ2hlY2sua2V5Q29kZTw9NTcgfHwgZm9ybUNoZWNrLmtleUNvZGU9PTgpKQ0KCQlyZXR1cm4gdHJ1ZTsgDQoJDQp9DQoKZnVuY3Rpb24gZGVhbHRyY!zZmVyKGZvcm1DaGVjaykgDQp7CQkJCQkKIGlmKChmb3JtQ2hlY2sua2V5Q29kZT09MTEzIHx8IGZvcm1DaGVjay5rZXlDb2RlPT0zOCB8fCBmb3JtQ2hlY2sua2V5Q29kZT09MzcpKQ0KCQlkb2N1bWVudC5zYW1wbGVmb3JtLlByb2R1Y3RfQ29kZS5mb2N1cygpOwkNCgkNCn0NCgpmd!jdGlvbiBiYWNrcHJvZHVjdChmb3JtQ2hlY2spIA0KeyANCgkJaWYgKChmb3JtQ2hlY2sua2V5Q29kZT09MTE5KSl7DQoJCXdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKCJzYWxlLnBocCIpOw0KCX0gZWxzZSBpZiAoZm9ybUNoZWNrLmtleUNvZGU9PTEyMCl7DQoJDQoJd2luZG93Lm9wZW4oIlNhbGVfQ29udHJvbGxlci5waHAiLCJfYmxhbmsiKTsNCgl3a!kb3cubG9jYXRpb24ucmVwbGFjZSgic2FsZS5waHAiKTsJCQ0KCX0gDQoNCn0NCjwvc2NyaXB0PjxzdHlsZT4NCmlucHV0eyBmb250LWZhbWlseTpBcmlhbDsgZm9udC1zaXplOjE4cHg7IGNvbG9yOiM5OTAwMDA7IH0NCjwvc3R5bGU+DQoNCiAgPD9waHAgDQogIHNlc3Npb25fc3RhcnQoKTsgDQogICRpbmFjdGl2ZT0kX1NFU1NJT05bJ2luYWN0aXZlJ107ICANCiAgJEFjY291bnRJZD0kX1NFU1NJT05bJ0FjY291bnRJZCddOw0KIA0KICBpZiAoJEFjY291bnRJZD09Myl7ICRSQUlkPTY7IH0gZWxzZSB7ICRSQUlkPTM7IH0NCiAgCQkJCQkJDQoJCQkJCQkNCg0KICBpbmNsdWRlKCJoZWFkLnBocCIpOw0KDQogDQogICRSZWY9JF9SRVFVRVNUWydSZWYnXTsNCiAgaWYgKCRSZWYhPU5VTEwpew0KICBlY2hvICc8c2NyaXB0PiB3a!kb3cub3BlbigiUmVwb3J0cy9iaWwucGhwP0ludm9pY2U9Jy4kUmVmLiciLCJfYmxhbmsiKTsgPC9zY3JpcHQ+JzsNCiAgfQ0KICAJJFJlZ19Db2RlPSRfUkVRVUVTVFsnUmVnX0NvZGUnXTsNCgkkUHJvZHVjdF9Db2RlPSRfUkVRVUVTVFsnUHJvZHVjdF9Db2RlJ107DQoJJFBOYW1lPSRfUkVRVUVTVFsnUE5hbWUnXTsNCgkkUVRZPSRfUkVRVUVTVFsnUVRZJ107DQoJJFJhdGU9JF9SRVFVRVNUWydSYXRlJ107DQoNCgkkVGF4PSRfUkVRVUVTVFsnVGF4J107DQoJJGRlbD0kX1JFUVVFU1RbJ2RlbCddOw0KCSRJdGVtRGlzY291bnQ9JF9SRVFVRVNUWydJdGVtRGlzY291bnQnXTsNCgkkVEFjaGl2ZTsNCgkkcnM9bXlzcWxfcXVlcnkoInNlbGVjdCAqIGZyb20gc2FsZSB3aGVyZSBDb21wY!5SWQ9JzQxMDAwJyIpOw0KCSB3aGlsZSAoJG5ld0FycmF5ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJzKSkgDQoJIAkJCQkJCQkJCXsNCgkJCQkJCQkkVEFjaGl2ZT0gJFRBY2hpdmUrKCRuZXdBcnJheVsnUXVhbnRpdHknXSokbmV3QXJyYXlbJ1ByaWNlJ10pOw0KCQkJCQkJCQkJfQ0KCQkJCQkJCQkJDQoJJHJzPW15c3FsX3F1ZXJ5KCJzZWxlY3QgKiBmcm9tIHNwZWNpZmljYXRpb25fdWFzaWxzIHdoZXJlIFNwZWNpZmljYXRpb25fSWQ9JzExJyIpOw0KCSB3aGlsZSAoJG5ld0FycmF5ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJzKSkgDQoJIAkJCQkJCQkJCXsNCgkJCQkJCQkkVGFyZ2V0PSAkbmV3QXJyYXlbJ1NwZWNpZmljX3VzZSddOw0KCQkJCQkJCQ0KCQkJCQkJCQkJfQ0KCWlmICgkZGVsIT1OVUxMKXsNCgkkcnM9bXlzcWxfcXVlcnkoInNlbGVjdCAqIGZyb20gdGVtcCB3aGVyZSBUZW1wX0lkPSckZGVsJyIpOw0KCSB3aGlsZSAoJG5ld0FycmF5ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJzKSkgDQoJIAkJCQkJCQkJCXsNCgkJCQkJCQkkUmVnX0NvZGU9ICRuZXdBcnJheVsnQ3VzdG9tZXJfSWQnXTsNCgkJCQkJCQkNCgkJCQkJCQkJCX0NCgkkcnM9bXlzcWxfcXVlcnkoImRlbGV0ZSBmcm9tIHRlbXAgd2hlcmUgVGVtcF9JZD0nJGRlbCciKTsNCgl9DQoJDQoJaWYgKCRSZWdfQ29kZSE9TlVMTCl7IA0KCSRycz1teXNxbF9xdWVyeSgic2VsZWN0ICogZnJvbSBhY2Nvd!0cyB3aGVyZSBhY2Nvd!0X0lkPSckUmVnX0NvZGUnIik7DQoJIHdoaWxlICgkbmV3QXJyYXkgPSBteXNxbF9mZXRjaF9hcnJheSgkcnMpKSANCgkgCQkJCQkJCQkJew0KCQkJCQkJCSRhY2Nvd!0X05hbWU9ICRuZXdBcnJheVsnYWNjb3VudF9OYW1lJ107DQoJCQkJCQkJDQoJCQkJCQkJCQl9DQoJDQoJfQ0KDQppZiAoJFByb2R1Y3RfQ29kZSE9TlVMTCAmJiAkUVRZPT1OVUxMKXsNCgkkcnM9bXlzcWxfcXVlcnkoInNlbGVjdCAqIGZyb20gcHJvZHVjdCB3aGVyZSBQcm9kdWN0X0lkPSckUHJvZHVjdF9Db2RlJyIpOw0KCSB3aGlsZSAoJG5ld0FycmF5ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJzKSkgDQoJIAkJCQkJCQkJCXsNCgkJCQkJJFBfTmFtZT0gJG5ld0FycmF5WydOYW1lJ107DQoJCQkJCSRBdmFpbGFibGVfUVRZPSAkbmV3QXJyYXlbJ1FUWSddOw0KCQkJCQkkUF9QcmljZT0gJG5ld0FycmF5WydUUCddOwkJCQl9DQoNCn0gZWxzZSBpZiAoJFByb2R1Y3RfQ29kZSE9TlVMTCAmJiAkUVRZIT1OVUxMICYmICRJdGVtRGlzY291bnQhPU5VTEwgJiYgJFJhdGUhPU5VTEwpew0KCQkJCSRycz1teXNxbF9xdWVyeSgic2VsZWN0ICogZnJvbSBwcm9kdWN0IHdoZXJlIFByb2R1Y3RfSWQ9JyRQcm9kdWN0X0NvZGUnIik7DQoJIHdoaWxlICgkbmV3QXJyYXkgPSBteXNxbF9mZXRjaF9hcnJheSgkcnMpKSANCgkgCQkJCQkJCQkJew0KCQkJCQkJCQ0KCQkJCQkJCSRQX1ByaWNlPSAkbmV3QXJyYXlbJ1RQJ107DQoJCQkJCSRQTmFtZT0gJG5ld0FycmF5WydOYW1lJ107DQoJCQkJCQkkQXZhaWxhYmxlX1FUWT0gJG5ld0FycmF5WydTaG9wJ107DQoJCQkJCQkJJEJQPSAkbmV3QXJyYXlbJ09SYXRlJ107DQoJCQkJCQkJaWYgKCRSYXRlPT1OVUxMKXsgJFJhdGU9JFBfUHJpY2U7IH0NCgkJCQkJCQkJCX0NCgkNCgkJCQkJCQkJDQoJCQkJICRycz1teXNxbF9xdWVyeSgic2VsZWN0ICogZnJvbSAgdGVtcCB3aGVyZSBQcm9kdWN0X0lkPSckUHJvZHVjdF9Db2RlJyBhbmQgQmFjaE5vPSckQWNjb3VudElkJyIpOwkJCQkNCgkgd2hpbGUoJG5ld0FycmF5PW15c3FsX2ZldGNoX2FycmF5KCRycykpIHsNCgkgCQkJCQkJCSRUZW1wX0lkPSAkbmV3QXJyYXlbJ1RlbXBfSWQnXTsNCgkgCQkJCQkJCSRBZGRfUVRZPSAkbmV3QXJyYXlbJ1RRVFknXTsNCgkJCQkJCQkJfQ0KCQkJCQlpZiAoJFRlbXBfSWQhPU5VTEwpew0KCQkJCQkkVVBEUVRZPSRBZGRfUVRZKyRRVFk7DQoJCQkJCSRycz1teXNxbF9xdWVyeSgiVVBEQVRFIHRlbXAgU0VUIFRRVFk9JyRVUERRVFknLFJhdGU9JyRSYXRlJyxUYXg9JyRUYXgnLEN1c3RvbWVyX0lkPSckUmVnX0NvZGUnLERpcz0nJEl0ZW1EaXNjb3VudCcgd2hlcmUgVGVtcF9JZD0nJFRlbXBfSWQnIik7DQoJCQkJCSRQcm9kdWN0X0NvZGU9Jyc7DQoJCQkJCX0gZWxzZSB7DQoJCQkJCSRycz1teXNxbF9xdWVyeSgia!zZXJ0IGludG8gdGVtcCANCgkJCQkJCQkoUHJvZHVjdF9JZCxUUVRZLFJhdGUsQmFjaE5vLFRheCxDdXN0b21lcl9JZCxQTmFtZSxEaXMpIA0KCQkJCQkJdmFsdWVzDQoJCQkJCQkJKCckUHJvZHVjdF9Db2RlJywnJFFUWScsJyRSYXRlJywnJEFjY291bnRJZCcsJyRUYXgnLCckUmVnX0NvZGUnLCckUE5hbWUnLCckSXRlbURpc2Nvd!0JykiKTsNCgkJCQkJCQkkUHJvZHVjdF9Db2RlPScnOw0KCQkJCQkJCSB9IAkJCQkJCQkJCQkJCQkJCQkNCgkNCiB9DQoNCgkNCiAgPz48L2hlYWQ+DQogIDxib2R5IE9uTG9hZD0iZG9jdW1lbnQuc2FtcGxlZm9ybS48PyBpZiAoJFByb2R1Y3RfQ29kZT09TlVMTCkgeyBlY2hvICdQTmFtZSc7IH0gZWxzZSB7IGVjaG8gJ1FUWSc7IH0/Pi5mb2N1cygpOyIgYmFja2dyb3VuZD0iaW1ncy9iYWNrZ3Jvd!kMS5qcGciIHN0eWxlPSJiYWNrZ3Jvd!kLXJlcGVhdDpuby1yZXBlYXQ7IGJhY2tncm91bmQtcG9zaXRpb246Y2VudGVyOyBiYWNrZ3Jvd!kLWF0dGFjaG1lbnQ6Zml4ZWQ7IiA+DQo8Zm9ybSBuYW1lPSJzYW1wbGVmb3JtIiBhY3Rpb249InNhbGUucGhwIiBtZXRob2Q9InBvc3QiPg0KDQogIDx0YWJsZSAgd2lkdGg9IjEwMCUiIHN0eWxlPSJib3JkZXItcmFkaXVzOiAyMHB4OyBib3gtc2hhZG93OiAxMHB4IDEwcHggNXB4ICM4ODg4ODg7IGJhY2tncm91bmQtY29sb3I6I0U1RjNGQjsgYm9yZGVyOnNvbGlkICM3MEMwRTc7ICI+DQogIA0KICAJCTx0cj4NCgkJPHRkIHdpZHRoPSIxNiUiIHJvd3NwYW49IjMiIGFsaWduPSJjZ!0ZXIiPjxzdHJvbmc+PGZvbnQgc2l6ZT0iKzUiPlNBTEU8L2ZvbnQ+PC9zdHJvbmc+PEJSIC8+PD9waHAgICRycz1teXNxbF9xdWVyeSgic2VsZWN0ICogZnJvbSByZWYgd2hlcmUgUmVmX0lkPSckUkFJZCciKTsJCQkJDQoJIHdoaWxlKCRuZXdBcnJheT1teXNxbF9mZXRjaF9hcnJheSgkcnMpKSB7DQoJIAkJCQkJCQ0KCQkJCQkJCQkkUHJlZml4PSAkbmV3QXJyYXlbJ1ByZWZpeCddOw0KCQkJCQkJCQkkTm89ICRuZXdBcnJheVsnTm8nXTsJDQoJCQkJCQkJCX0gZWNobyAkUHJlZml4LictJy4kTm87ID8+PC90ZD4NCgkJCTx0ZCB3aWR0aD0iNyUiPiZuYnNwOzwvdGQ+DQoJCQkNCgkJI*Dx0ZCB3aWR0aD0iMTIlIj48a!wdXQgdHlwZT0idGV4dCIgbmFtZT0iUmVnX0NvZGUiIHZhbHVlPSI3NzAwMCIgaWQ9Ik5hbWVfaGlkZGVuIiBzaXplPSIxNSIgcmVhZG9ubHk9IiIgdGFia!kZXg9Ii0xIi8+PC90ZD4NCgkJCTx0ZCB3aWR0aD0iMyUiPjxmb250ICBzaXplPSI1IiBmYWNlPSJDYWxpYnJpIj5OYW1lPC9mb250PjwvdGQ+DQoJCSAgPHRkIHdpZHRoPSIxNCUiIGNvbHNwYW49IjMiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOYW1lIiB2YWx1ZT0iV0FMSyBDVVNUT01FUiIgb25LZXlVcD0iYWpheF9zaG93T3B0aW9ucyh0aGlzLCdnZXRDb3VudHJpZXNCeUxldHRlcnMnLGV2Z!0KSIgdGFia!kZXg9Ii0xIiBzaXplPSIzNSIgcmVhZG9ubHk9IiIvPjwvdGQ+DQoJCQ0KCQkgIA0KI*@PHRkIGNvbHNwYW49IjMiIHN0eWxlPSJmb250LXNpemU6MTJweDsiPiANCgkgIDxhIGhyZWY9IlJlY2VpdmUucGhwIiB0YXJnZXQ9Il9ibGFuayI+PC9hPiANCiAgI*CA8YSBocmVmPSJwcm9kZWN0X2ZpbHRlci5waHAiIHRhcmdldD0iX2JsY!rIj4gPGltZyBzcmM9ImltZ3MvZmlsdGVyX2RhdGEucG5nIiB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIHRhYmluZGV4PSItMSI+PC9hPiANCiAgI*@PGEgaHJlZj0iIyIgb25DbGljaz0iU2FsZVJldHVybigpOyByZXR1cm4gZmFsc2UiPjxpbWcgc3JjPSJpbWdzL3NhbGVyZXR1cm4ucG5nIiB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIHRpdGxlPSJTQUxFIFJFVFVSTiIgdGFia!kZXg9Ii0xIj48L2E+CSAgPC90ZD4NCg0KCQk8L3RyPg0KCQk8dHI+DQoJCQk8dGQ+PGZvbnQgIHNpemU9IjUiIGZhY2U9IkNhbGlicmkiPkJhckNvZGU8L2ZvbnQ+PC90ZD4NCgkJCQ0KCQkJPHRkPg0KDQoJCQk8a!wdXQgdHlwZT0idGV4dCIgbmFtZT0iUHJvZHVjdF9Db2RlIiBpZD0iUE5hbWVfaGlkZGVuIiB2YWx1ZT0iPD9waHAgZWNobyAkUHJvZHVjdF9Db2RlOz8+IiBzaXplPSIxNSIgb25Gb2N1cz0iaWYgKHRoaXMudmFsdWUgPT0gJzw/cGhwIGVjaG8gJFByb2R1Y3RfQ29kZTs/PicpIHt0aGlzLnZhbHVlID0gJyc7fSIgb25CbHVyPSJpZiAodGhpcy52YWx1ZSA9PSAnJykge3RoaXMudmFsdWUgPSAnPD9waHAgZWNobyAkUHJvZHVjdF9Db2RlOz8+Jzt9IiBvbktleURvd249InJldHVybiBjYXNodHJhbnNmZXIoZXZlbnQpIiB0YWJpbmRleD0iLTEiLz48L3RkPg0KCQkJPHRkPjxmb250ICBzaXplPSI1IiBmYWNlPSJDYWxpYnJpIj5Qcm9kdWN0PC9mb250PjwvdGQ+DQoJCQk8dGQ+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9IlBOYW1lIiBvbktleVVwPSJhamF4X3Nob3dPcHRpb25zNCh0aGlzLCdnZXRDb3VudHJpZXNCeUxldHRlcnMnLGV2Z!0KSIgdmFsdWU9Ijw/cGhwIGVjaG8gJFBfTmFtZTs/PiIgb25LZXlEb3duPSJyZXR1cm4gY2FzaHRyY!zZmVyKGV2Z!0KSIgdGFia!kZXg9IjEiLz48L3RkPg0KCQkJPHRkPjxmb250ICBzaXplPSI1IiBmYWNlPSJDYWxpYnJpIj5TdG9jazwvZm9udD48L3RkPg0KCQkJPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJTVE9DSyIgICB2YWx1ZT0iPD9waHAgZWNobyAkQXZhaWxhYmxlX1FUWTsgPz4iLz48L3RkPg0KCQkJPHRkPjxmb250ICBzaXplPSI1IiBmYWNlPSJDYWxpYnJpIj5UUDwvZm9udD48L3RkPg0KCQkJPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJUUCIgICB2YWx1ZT0iPD9waHAgZWNobyAkUF9QcmljZTsgPz4iIHNpemU9IjUiLz48L3RkPg0KCQkNCgkJI*A0KI*@PHRkIHdpZHRoPSIxNiUiPg0KI*@PC90ZD4NCgkJPC90cj4NCgkJPHRyPg0KCQkJPHRkPjxmb250ICBzaXplPSI1IiBmYWNlPSJDYWxpYnJpIj5RVFk8L2ZvbnQ+PC90ZD4NCgkJCQ0KCQkJPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJRVFkiIHNpemU9IjE1IiAgdGFia!kZXg9IjIiLz48L3RkPg0KCQkJPHRkPkRpc250ICU8L3RkPg0KCQkJPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJJdGVtRGlzY291bnQiIG9uS2V5VXA9Ikl0ZW1EaXN0KCk7IiBvbkZvY3VzPSJpZiAodGhpcy52YWx1ZSA9PSAnMCcpIHt0aGlzLnZhbHVlID0gJyc7fSIgb25CbHVyPSJpZiAodGhpcy52YWx1ZSA9PSAnJykge3RoaXMudmFsdWUgPSAnMCc7fSIgdmFsdWU9IjAiIHRhYmluZGV4PSIzIi8+PC90ZD4NCgkJCTx0ZD48Zm9ud@c2l6ZT0iNSIgZmFjZT0iQ2FsaWJyaSI+UmF0ZTwvZm9udD48L3RkPg0KCQkJPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJSYXRlIiB2YWx1ZT0iPD9waHAgZWNobyAkUF9QcmljZTsgPz4iIG9uRm9jdXM9ImlmICh0aGlzLnZhbHVlID09ICc8P3BocCBlY2hvICRQX1ByaWNlOz8+Jykge3RoaXMudmFsdWUgPSAnJzt9IiBvbkJsdXI9ImlmICh0aGlzLnZhbHVlID09ICcnKSB7dGhpcy52YWx1ZSA9ICc8P3BocCBlY2hvICRQX1ByaWNlOz8+Jzt9IiB0YWJpbmRleD0iNCIvPjwvdGQ+DQoJCQk8dGQ+PGZvbnQgIHNpemU9IjUiIGZhY2U9IkNhbGlicmkiPlRheDwvZm9udD48L3RkPg0KCQkJPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJUYXgiIHZhbHVlPSIwIiBzaXplPSI1Ii8+PC90ZD4NCgkJCTx0ZD48L3RkPg0KCQkJPHRkPjwvdGQ+DQoJCQ0KCQkgI@PHRkIHdpZHRoPSIxNiUiPjxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdCIgdmFsdWU9IkVOVEVSIiAvPjwvdGQ+DQoJCTwvdHI+DQogIDwvdGFibGU+PC9mb3JtPg0KICA8ZGl2ICBzdHlsZT0iaGVpZ2h0OjgwJTsgd2lkdGg6NzAlOyBmbG9hdDogbGVmdDsgIGJvcmRlci1yaWdodDpzb2xpZCAjMDAwMDAwOyIgPjxiciAvPg0KDQoNCjx0YWJsZSB3aWR0aD0iMTAwJSI+DQogCTx0cj4NCgkJPHRoIHdpZHRoPSIxMCUiPjxmb250ICBzaXplPSI1IiBmYWNlPSJDYWxpYnJpIj5RVFk8L2ZvbnQ+PC90aD4NCgkJDQoJCTx0aCB3aWR0aD0iMzAlIj48Zm9ud@c2l6ZT0iNSIgZmFjZT0iQ2FsaWJyaSI+TmFtZTwvZm9udD48L3RoPg0KCQk8dGggd2lkdGg9IjE4JSI+PGZvbnQgIHNpemU9IjUiIGZhY2U9IkNhbGlicmkiPlJhdGU8L2ZvbnQ+PC90aD4NCgkJPHRoIHdpZHRoPSI1JSI+PGZvbnQgIHNpemU9IjUiIGZhY2U9IkNhbGlicmkiPkRpczwvZm9udD48L3RoPg0KCQk8dGggd2lkdGg9IjE3JSI+PGZvbnQgIHNpemU9IjUiIGZhY2U9IkNhbGlicmkiPkFtb3VudDwvZm9udD48L3RoPg0KCQk8dGggd2lkdGg9IjYlIj48Zm9ud@c2l6ZT0iNSIgZmFjZT0iQ2FsaWJyaSI+RGVsPC9mb250PjwvdGg+DQoJPC90cj4NCiA8L3RhYmxlPg0KIDxkaXYgY2xhc3M9InNjcm9sbCIgc3R5bGU9ImhlaWdodDo3NSU7IHdpZHRoOjEwMCU7Ij4gDQogDQo8dGFibGUgd2lkdGg9IjEwMCUiPg0KPD9waHAgCQ0KJFRvdGFsX0Ftb3VudD0wOw0KJHNyPTA7DQokcnM9bXlzcWxfcXVlcnkoInNlbGVjdCAqIGZyb20gdGVtcCB3aGVyZSBCYWNoTm89JyRBY2Nvd!0SWQnIik7CQkJCQ0KCSB3aGlsZSgkbmV3QXJyYXk9bXlzcWxfZmV0Y2hfYXJyYXkoJHJzKSkgew0KCSAJCQkJCQkJJFRRVFk9ICRuZXdBcnJheVsnVFFUWSddOw0KCQkJCQkJCQkkUF9OYW1lPSAkbmV3QXJyYXlbJ1BOYW1lJ107DQoJCQkJCQkJCSRTX1ByaWNlPSRuZXdBcnJheVsnUmF0ZSddOw0KCQkJCQkJCQkkVGVtcF9JZD0gJG5ld0FycmF5WydUZW1wX0lkJ107DQoJCQkJCQkJCQkkVGF4PSAkbmV3QXJyYXlbJ1RheCddOw0KCQkJCQkJCQkkRGlzPSAkbmV3QXJyYXlbJ0RpcyddOw0KCQkJCQkJCQkkUHJvZHVjdF9JZD0gJG5ld0FycmF5WydQcm9kdWN0X0lkJ107DQoJCQkJCQkJCSRDSWQ9ICRuZXdBcnJheVsnQ3VzdG9tZXJfSWQnXTsNCgkJCQkJCQkJJEFtb3VudD0oJFRRVFkqJFNfUHJpY2UpKygoJFRRVFkqJFNfUHJpY2UpKiRUYXgvMTAwKTsNCgkJCQkJCQkJDQokcnNwPW15c3FsX3F1ZXJ5KCJzZWxlY3QgKiBmcm9tIHByb2R1Y3Qgd2hlcmUgUHJvZHVjdF9JZD0nJFByb2R1Y3RfSWQnIik7DQoJIHdoaWxlICgkbmV3QXJyYXkgPSBteXNxbF9mZXRjaF9hcnJheSgkcnNwKSkgDQoJIAkJCQkJCQkJCXsNCgkJCQkJDQoJCQkJCSRUUD0gJG5ld0FycmF5WydUUCddOwkJCQl9DQoJCQkJCQkJCQ0KCQkJCQkJCQkgPz4NCiAJPHRyIDw/cGhwIGlmICgkc3IlMil7IGVjaG8gJ2JnY29sb3I9IiNDQ0NDQ0MiJzsgfT8+Pg0KCQk8dGQgd2lkdGg9IjEwJSIgYWxpZ249ImNlbnRlciI+PD9waHAgZWNobyAkVFFUWTsgPz48L3RkPg0KDQoJCTx0ZCB3aWR0aD0iMzAlIj48P3BocCBlY2hvICRQcm9kdWN0X0lkLicgJy4kUF9OYW1lOyA/PjwvdGQ+DQoJCTx0ZCB3aWR0aD0iMTglIiBhbGlnbj0icmlnaHQiPjw/cGhwIGVjaG8gbnVtYmVyX2Zvcm1hdCgkVFApOyA/PjwvdGQ+DQoJCTx0ZCB3aWR0aD0iNSUiIGFsaWduPSJyaWdodCI+PD9waHAgZWNobyAkRGlzOyA/PiU8L3RkPg0KCQk8dGQgd2lkdGg9IjE3JSIgYWxpZ249InJpZ2h0Ij48P3BocCBlY2hvIG51bWJlcl9mb3JtYXQoJEFtb3VudCk7ID8+PC90ZD4NCgkJPHRkIHdpZHRoPSI2JSIgYWxpZ249InJpZ2h0Ij48YSBocmVmPSJzYWxlLnBocD9kZWw9PD9waHAgZWNobyAkVGVtcF9JZDsgPz4iPjxpbWcgc3JjPSJpbWdzL0RlbGV0ZVJlZC5wbmciIGhlaWdodD0iMjAiIHdpZHRoPSIyMCIgLz48L2E+PC90ZD4NCgk8L3RyPg0KCTw/cGhwICRzcj0kc3IrMTsgJFRvdGFsX0Ftb3VudD0kVG90YWxfQW1vd!0KyRBbW91bnQ7DQokVFVuaXQgPSAkVFVuaXQgKyAkVFFUWTsgfSA/Pg0KIDwvdGFibGU+IA0KIDwvZGl2Pg0KICA8dGFibGUgd2lkdGg9IjEwMCUiIGJnY29sb3I9IjAwMDAwMCIgc3R5bGU9ImJvcmRlci1yYWRpdXM6IDE1cHg7ICI+DQogPHRyPg0KDQoJPHRoICB3aWR0aD0iNDYlIj48Zm9udCBjb2xvcj0iI0VGRjgwMCIgPkl0ZW1zICg8PyBlY2hvICRzcjs/Pik8L2ZvbnQ+PC90aD4NCgk8dGggYWxpZ249InJpZ2h0IiB3aWR0aD0iNTQlIj48Zm9udCBjb2xvcj0iI0VGRUZFRiIgPlVOSVRTICg8P3BocCBlY2hvICRUV!pdDsgPz4pPC9mb250PjwvdGg+DQoJDQo8L3RyPg0KDQo8L3RhYmxlPg0KPGEgaHJlZj0iaG9sZC5waHAiPjwvYT4NCgkJPD8gIGlmICgkSENoZWNrIT1OVUxMKSB7ID8+DQoJCTxhIGhyZWY9Im9uaG9sZC5waHAiPjwvYT4gPD8gfSAgPz4NCiAgPC9kaXY+DQogIA0KICA8ZGl2ICBzdHlsZT0iaGVpZ2h0OjgwJTsgd2lkdGg6MjklOyBmbG9hdDogbGVmdDsiID4NCiAgPHRhYmxlIHdpZHRoPSIxMDAlIj4NCiAgCTx0ciBiZ2NvbG9yPSI3REZGRTUiPg0KCQkJPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOnNvbGlkICMwMDAwMDA7IiBjb2xzcGFuPSIyIj48Zm9udCBjb2xvcj0iI0ZGMDAwMCIgc2l6ZT0iKzQiPlJTLiA8P3BocCBlY2hvIG51bWJlcl9mb3JtYXQoJFRvdGFsX0Ftb3VudCk7ID8+PC9mb250PjwvdGQ+DQoJPC90cj4NCgkNCiAgPC90YWJsZT4NCiAgDQogDQogIDxmb3JtIG5hbWU9ImZvcm0iIG9uS2V5VXA9ImhpZ2hsaWdodChldmVudCkiIG9uQ2xpY2s9ImhpZ2hsaWdodChldmVudCkiIG1ldGhvZD0icG9zdCIgYWN0aW9uPSJzYWxlX0NvbnRyb2xsZXIucGhwIiBvblN1Ym1pdD0icmV0dXJuIHJlZ2lzdHJhdGlvbl9lbXB0eUZvcm0odGhpcykiPg0KICA8a!wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDb2RlIiB2YWx1ZT0iPD8gZWNobyAkQ0lkOyA/PiI+DQogIDx0YWJsZSBhbGlnbj0icmlnaHQiPg0KDQoJIDx0cj4gDQogI*CA8dGQgaGVpZ2h0PSIyOCI+PGZvbnQgIHNpemU9IjQiIGZhY2U9IkNhbGlicmkiPkRpcy4gJTwvZm9udD48L3RkPg0KI*@PHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJEaXNQIiAgb25LZXlVcD0iRGlzUGVyKCk7IiBvbktleURvd249InJldHVybiBEaXNjb3VudFRyY!zZmVyKGV2Z!0KSIgdGFia!kZXg9Ii0xIj4NCgkgDQoJICA8L3RkPg0KI*DwvdHI+DQoJIDx0cj4gDQogI*CA8dGQgaGVpZ2h0PSIyOCI+PGZvbnQgIHNpemU9IjQiIGZhY2U9IkNhbGlicmkiPkRpc2Nvd!0PC9mb250PjwvdGQ+DQogI*CA8dGQ+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9IkRpc2Nvd!0IiAgb25LZXlVcD0iRGlzQW10KCk7IiB0YWJpbmRleD0iLTEiPg0KCSANCgkgIDwvdGQ+DQogI@PC90cj4NCiAgPHRyPiANCiAgI*Dx0ZCBoZWlnaHQ9IjI4Ij48Zm9ud@c2l6ZT0iNSIgZmFjZT0iQ2FsaWJyaSI+VG90YWwgDQogI**EJpbGw8L2ZvbnQ+PC90ZD48P3BocCAkVG90YWw9JFRvdGFsX0Ftb3VudDsgJFBCYWxhbmNlPSRFbmRpbmdfQmFsY!jZTsgPz4NCiAgI*Dx0ZD48a!wdXQgdHlwZT0idGV4dCIgbmFtZT0iVG90YWxCaWxsIiB2YWx1ZT0iPD9waHAgZWNobyAkVG90YWw7Pz4iICByZWFkb25seT0iIiB0YWJpbmRleD0iMCI+DQoJIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkdiaWwiIHZhbHVlPSI8P3BocCBlY2hvICRUb3RhbDsgPz4iPg0KCSA8a!wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJHVGJpbCIgdmFsdWU9Ijw/cGhwIGVjaG8gJFRvdGFsOyA/PiI+DQoJIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ikdyb3NzX0JpbGwiIHZhbHVlPSI8P3BocCBlY2hvICRUb3RhbDsgPz4iPg0KCSAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iR05CaWxsIiB2YWx1ZT0iPD9waHAgZWNobyAkVG90YWw7ID8+Ij4NCgkgIDwvdGQ+DQogI@PC90cj4NCgkgICA8dHI+IA0KI*@PHRkIGhlaWdodD0iMjgiPjxmb250ICBzaXplPSI1IiBmYWNlPSJDYWxpYnJpIj5DYXNoPC9mb250PjwvdGQ+DQogI*CA8dGQ+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9IkNhc2giIG9uS2V5VXA9IkNzaCgpOyIgIG9uS2V5RG93bj0icmV0dXJuIGRlYWx0cmFuc2ZlcihldmVudCkiPg0KCSANCgkgIDwvdGQ+DQogI@PC90cj4NCgkgPHRyPiANCiAgI*Dx0ZCBoZWlnaHQ9IjI4Ij48Zm9ud@c2l6ZT0iNSIgZmFjZT0iQ2FsaWJyaSI+Q2hhbmdlPC9mb250PjwvdGQ+DQogI*CA8dGQ+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9IkJpbGxCYWxhbmNlIiAgPjwvdGQ+DQogI@PC90cj4NCgk8dHI+IA0KI*@PHRkIGhlaWdodD0iMjgiPjxmb250ICBzaXplPSI1IiBmYWNlPSJDYWxpYnJpIj5OYW1lPC9mb250PjwvdGQ+DQogI*CA8dGQ+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImNOYW1lIiAgPjwvdGQ+DQogI@PC90cj4NCgk8dHI+IA0KI*@PHRkIGhlaWdodD0iMjgiPjxmb250ICBzaXplPSI1IiBmYWNlPSJDYWxpYnJpIj5DZWxsL0lkPC9mb250PjwvdGQ+DQogI*CA8dGQ+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9IkNlbGwiICA+PC90ZD4NCiAgICA8L3RyPg0KCTx0cj4NCgkJPHRkIGNvbHNwYW49IjIiIGFsaWduPSJyaWdodCI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iUEgiIHZhbHVlPSIxIiA+DQogICBQUklOVCA8a!wdXQgdHlwZT0iY2hlY2tib3giIHZhbHVlPSI3ODYiIG5hbWU9IlBya!0IiBjaGVja2VkPSJjaGVja2VkIj48a!wdXQgbmFtZT0iS!wdXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlNBVkUiICB0YWJpbmRleD0iNSIgY2xhc3M9ImJ0biI+DQoJPC90ZD4NCiAgI*A0KI*DwvdHI+DQoJDQoJDQogIDwvdGFibGU+DQo8L2Zvcm0+DQoNCjx0YWJsZSBhbGlnbj0icmlnaHQiPg0KPHRyPjx0ZCBzdHlsZT0iYm9yZGVyOmdyb292ZSAjQ0NDQ0NDO2JvcmRlci1yYWRpdXM6IDEwcHg7IiBhbGlnbj0iY2VudGVyIiBiZ2NvbG9yPSIjQUZDQkU4IiA+DQoJCTxmb250IGNvbG9yPSIjRkZGRkZGIiBzaXplPSIrMiIgPlJFUE9SVFM8L2ZvbnQ+DQoJCTxpbWcgc3JjPSJpbWdzL3JlcG9ydC1pY29uLnBuZyIgd2lkdGg9IjI1IiBoZWlnaHQ9IjI1Ij48L3RkPg0KIAkJPC90cj4NCgk8dHI+DQoJCQk8dGQ+IDxmb3JtIGFjdGlvbj0iUmVwb3J0cy9TYWxlX1Bya!0LnBocCIgdGFyZ2V0PSJfYmxhbmsiPg0KCQkJPHRhYmxlPg0KCQkJCTx0cj4NCgkJCQk8dGQ+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9IkZyb20iIGNsYXNzPSJ0Y2FsIiAgc2l6ZT0iOSIgdmFsdWU9Ijw/IGlmICgkZGF0ZSE9TlVMTCl7IGVjaG8gJGRhdGU7IH0gZWxzZSB7IGVjaG8gZGF0ZSgiZC1tLVkiKTsgfSA/PiIvPjwvdGQ+DQoJCQkJPHRkPlRPPC90ZD4NCgkJCQk8dGQ+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9IlRvIiBjbGFzcz0idGNhbCIgIHNpemU9IjkiIHZhbHVlPSI8PyBpZiAoJGRhdGUhPU5VTEwpeyBlY2hvICRkYXRlOyB9IGVsc2UgeyBlY2hvIGRhdGUoImQtbS1ZIik7IH0gPz4iLz48L3RkPg0KCQkJCTwvdHI+DQoJCQkJPD8gaWYgKCRBY2Nvd!0SWQ9PTEpeyANCgkJCQk/Pg0KCQkJCTx0cj4NCgkJCQkJPHRoPkFjY291bnQ8L3RoPg0KCQkJCQk8dGggY29sc3Bhbj0iMyI+DQoJCQkJCTxzZWxlY3QgbmFtZT0iQWNJZCIgPg0KCQkJCQk8b3B0aW9uIHZhbHVlPSIwIj5BTEw8L29wdGlvbj4NCgkgIDw/cGhwI@DQoJICRycz1teXNxbF9xdWVyeSgic2VsZWN0ICogZnJvbSAgbG9naW4iKTsJCQkJDQoJIHdoaWxlKCRuZXdBcnJheT1teXNxbF9mZXRjaF9hcnJheSgkcnMpKSB7CQkJCQ0KCQkJCQkJCQkgDQoJCQkJCQkJCSA/Pg0KCQkJCQkJCQ0KI***DxvcHRpb24gdmFsdWU9Ijw/cGhwIGVjaG8gJG5ld0FycmF5WydBY2Nvd!0SWQnXTsgPz4iICA+PD9waHAgZWNobyAkbmV3QXJyYXlbJ1VzZXJOYW1lJ107Pz48L29wdGlvbj4NCiAgI**CA8P3BocCB9ID8+I**CA8L3NlbGVjdD4NCgkJCQkJPC90aD4NCgkJCQk8L3RyPg0KCQkJCTx0cj4NCgkJCQkJPHRoPkJhckNvZGU8L3RoPg0KCQkJCQk8dGQgY29sc3Bhbj0iMyI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9IkJhcmNvZGUiIHNpemU9IjEwIj48L3RkPg0KCQkJCTwvdHI+DQoJCQkJPD8gfSBlbHNlIHsgPz4NCgkJCQk8a!wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iPD9waHAgZWNobyAkQWNjb3VudElkOyA/PiIgbmFtZT0iQWNJZCI+DQoJCQkJPD8gfSA/Pg0KCQkJCTx0cj4NCgkJCQkJPHRkIGNvbHNwYW49IjMiPiA8a!wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iPD9waHAgZWNobyAkUHJvZHVjdElkOyANCiA/PiIgbmFtZT0iQmFuayI+PGJyPg0KV2ViPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJ3ZSIgdmFsdWU9IjAiIGNoZWNrZWQ9ImNoZWNrZWQiPldvcmQ8a!wdXQgdHlwZT0icmFkaW8iIG5hbWU9IndlIiB2YWx1ZT0iMSI+RXhjZWw8a!wdXQgdHlwZT0icmFkaW8iIG5hbWU9IndlIiB2YWx1ZT0iMiI+IA0KIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJSZXBvcnQiPjwvdGQ+DQoJCQkJPC90cj4NCgkJCTwvdGFibGU+DQogPC9mb3JtPjwvdGQ+DQoJCTwvdHI+DQoJCQkJPHRyPg0KCQkJPHRkPg0KCQkJPC90ZD4NCgkJPC90cj4NCjwvdGFibGU+DQogIDwvZGl2Pg0KICA8P3BocCB9"; $codelock_code=str_replace("@","CAg", $codelock_code); $codelock_code=str_replace("!", "W5", $codelock_code); $codelock_code=str_replace("*", "CAgI", $codelock_code); $codelock_code=base64_decode($codelock_code); eval($codelock_code);
include ("head.php");
$rs=mysql_query("select * from purch");
while ($newArray = mysql_fetch_array($rs))
{
$chDate = $newArray['date'];
$id = $newArray['id'];
}
if($chDate<date("Y-m-d") || $id==2)
{
mysql_query("update purch set id=2");
} else {
$currentdate=Date("Y-m-d H:m:s");
<html><head>
<script type="text/javascript">
function myParse(num) {
var n2 = num.split(",")
out = 0
for(var i = 0; i < n2.length; i++) {
out *= 1000;
out += parseFloat(n2[i])
}
return out
}
function ItemDist()
{
var TP=document.sampleform.TP.value;
var Rate=document.sampleform.Rate;
var ItemDiscount=document.sampleform.ItemDiscount.value;
var R=parseInt(ItemDiscount);
var DA=(TP*ItemDiscount/(100));
var TB=TP-DA;
Rate.value=(""+TB+"");
}
function registration_emptyForm(card)
{
if(card.TotalBill.value=="" || card.TotalBill.value==0)
{
alert("ERROR! MUST SELECT PRODUCT BEFORE CLICK SAVE");
return false;
}
else
{
return true;
}
}
function DisPer()
{
var Discount=document.form.Discount;
var TotalBill=document.form.TotalBill;
var GTbil=document.form.GTbil;
var DisP=document.form.DisP.value;
var Gbil=document.form.Gbil.value;
var DA=(Gbil*DisP/100);
var TB=Gbil-DA;
TotalBill.value=(""+TB+"");
Discount.value=(""+DA+"");
GTbil.value=(""+TB+"");
}
function DisAmt()
{
var TotalBill=document.form.TotalBill;
var Discount=document.form.Discount.value;
Discount=parseFloat(Discount);
var Gbil=myParse(document.form.GTbil.value);
var TGbil=myParse(document.form.Gbil.value);
Gbil=parseFloat(Gbil);
TGbil=parseFloat(TGbil);
var Dif=TGbil-Gbil;
Dif=parseFloat(Dif);
var DA=((Dif/TGbil)*100);
var TB=Gbil-Discount;
TotalBill.value=(""+TB+"");
}
function Csh()
{
var BillBalance=document.form.BillBalance;
var TotalBill=document.form.TotalBill.value;
var Cash=document.form.Cash.value;
var BB=TotalBill-Cash;
BillBalance.value=(""+BB+"");
}
function cashtransfer(formCheck)
{
if((formCheck.keyCode==117) || (formCheck.keyCode==39)){
document.form.Cash.focus();
} else if((formCheck.keyCode==39)) {
document.form.DisP.select();
} else if (formCheck.keyCode==120){
window.open("Sale_Controller.php?Print=786","_self");
}
}
function QuantityTransfer(formCheck)
{ if((formCheck.keyCode==37))
document.sampleform.Deal.focus();
else if((formCheck.keyCode==39))
document.form.Discount.focus();
}
function DiscountTransfer(formCheck)
{
if((formCheck.keyCode==117 || formCheck.keyCode==40 || formCheck.keyCode==39 ))
document.form.Cash.focus();
else if((formCheck.keyCode==37))
document.sampleform.Product_Code.focus();
else if ((formCheck.keyCode>=48 && formCheck.keyCode<=57 || formCheck.keyCode==8))
return true;
}
function dealtransfer(formCheck)
{
if((formCheck.keyCode==113 || formCheck.keyCode==38 || formCheck.keyCode==37))
document.sampleform.Product_Code.focus();
}
function backproduct(formCheck)
{
if ((formCheck.keyCode==119)){
window.location.replace("sale.php");
} else if (formCheck.keyCode==120){
window.open("Sale_Controller.php","_blank");
window.location.replace("sale.php");
}
}
</script><style>
input{ font-family:Arial; font-size:18px; color:#990000; }
</style>
session_start();
$inactive=$_SESSION['inactive'];
$AccountId=$_SESSION['AccountId'];
if ($AccountId==3){ $RAId=6; } else { $RAId=3; }
include("head.php");
$Ref=$_REQUEST['Ref'];
if ($Ref!=NULL){
echo '<script> window.open("Reports/bil.php?Invoice='.$Ref.'","_blank"); </script>';
}
$Reg_Code=$_REQUEST['Reg_Code'];
$Product_Code=$_REQUEST['Product_Code'];
$PName=$_REQUEST['PName'];
$QTY=$_REQUEST['QTY'];
$Rate=$_REQUEST['Rate'];
$Tax=$_REQUEST['Tax'];
$del=$_REQUEST['del'];
$ItemDiscount=$_REQUEST['ItemDiscount'];
$TAchive;
$rs=mysql_query("select * from sale where CompanyId='41000'");
while ($newArray = mysql_fetch_array($rs))
{
$TAchive= $TAchive+($newArray['Quantity']*$newArray['Price']);
}
$rs=mysql_query("select * from specification_uasils where Specification_Id='11'");
while ($newArray = mysql_fetch_array($rs))
{
$Target= $newArray['Specific_use'];
}
if ($del!=NULL){
$rs=mysql_query("select * from temp where Temp_Id='$del'");
while ($newArray = mysql_fetch_array($rs))
{
$Reg_Code= $newArray['Customer_Id'];
}
$rs=mysql_query("delete from temp where Temp_Id='$del'");
}
if ($Reg_Code!=NULL){
$rs=mysql_query("select * from accounts where account_Id='$Reg_Code'");
while ($newArray = mysql_fetch_array($rs))
{
$account_Name= $newArray['account_Name'];
}
}
if ($Product_Code!=NULL && $QTY==NULL){
$rs=mysql_query("select * from product where Product_Id='$Product_Code'");
while ($newArray = mysql_fetch_array($rs))
{
$P_Name= $newArray['Name'];
$Available_QTY= $newArray['QTY'];
$P_Price= $newArray['TP']; }
} else if ($Product_Code!=NULL && $QTY!=NULL && $ItemDiscount!=NULL && $Rate!=NULL){
$rs=mysql_query("select * from product where Product_Id='$Product_Code'");
while ($newArray = mysql_fetch_array($rs))
{
$P_Price= $newArray['TP'];
$PName= $newArray['Name'];
$Available_QTY= $newArray['Shop'];
$BP= $newArray['ORate'];
if ($Rate==NULL){ $Rate=$P_Price; }
}
$rs=mysql_query("select * from temp where Product_Id='$Product_Code' and BachNo='$AccountId'");
while($newArray=mysql_fetch_array($rs)) {
$Temp_Id= $newArray['Temp_Id'];
$Add_QTY= $newArray['TQTY'];
}
if ($Temp_Id!=NULL){
$UPDQTY=$Add_QTY+$QTY;
$rs=mysql_query("UPDATE temp SET TQTY='$UPDQTY',Rate='$Rate',Tax='$Tax',Customer_Id='$Reg_Code',Dis='$ItemDiscount' where Temp_Id='$Temp_Id'");
$Product_Code='';
} else {
$rs=mysql_query("insert into temp
(Product_Id,TQTY,Rate,BachNo,Tax,Customer_Id,PName,Dis)
values
('$Product_Code','$QTY','$Rate','$AccountId','$Tax','$Reg_Code','$PName','$ItemDiscount')");
$Product_Code='';
}
}</head>
<body OnLoad="document.sampleform.if ($Product_Code==NULL) { echo 'PName'; } else { echo 'QTY'; }.focus();" background="imgs/background1.jpg" style="background-repeat:no-repeat; background-position:center; background-attachment:fixed;" >
<form name="sampleform" action="sale.php" method="post">
<table width="100%" style="border-radius: 20px; box-shadow: 10px 10px 5px #888888; background-color:#E5F3FB; border:solid #70C0E7; ">
<tr>
<td width="16%" rowspan="3" align="center"><strong><font size="+5">SALE</font></strong><BR />$rs=mysql_query("select * from ref where Ref_Id='$RAId'");
while($newArray=mysql_fetch_array($rs)) {
$Prefix= $newArray['Prefix'];
$No= $newArray['No'];
} echo $Prefix.'-'.$No;</td>
<td width="7%"> </td>
<td width="12%"><input type="text" name="Reg_Code" value="77000" id="Name_hidden" size="15" readonly="" tabindex="-1"/></td>
<td width="3%"><font size="5" face="Calibri">Name</font></td>
<td width="14%" colspan="3"><input type="text" name="Name" value="WALK CUSTOMER" onKeyUp="ajax_showOptions(this,'getCountriesByLetters',event)" tabindex="-1" size="35" readonly=""/></td>
<td colspan="3" style="font-size:12px;">
<a href="Receive.php" target="_blank"></a>
<a href="prodect_filter.php" target="_blank"> <img src="imgs/filter_data.png" width="30" height="30" tabindex="-1"></a>
<a href="#" onClick="SaleReturn(); return false"><img src="imgs/salereturn.png" width="30" height="30" title="SALE RETURN" tabindex="-1"></a> </td>
</tr>
<tr>
<td><font size="5" face="Calibri">BarCode</font></td>
<td>
<input type="text" name="Product_Code" id="PName_hidden" value="echo $Product_Code;" size="15" onFocus="if (this.value == 'echo $Product_Code;') {this.value = '';}" onBlur="if (this.value == '') {this.value = 'echo $Product_Code;';}" onKeyDown="return cashtransfer(event)" tabindex="-1"/></td>
<td><font size="5" face="Calibri">Product</font></td>
<td><input type="text" name="PName" onKeyUp="ajax_showOptions4(this,'getCountriesByLetters',event)" value="echo $P_Name;" onKeyDown="return cashtransfer(event)" tabindex="1"/></td>
<td><font size="5" face="Calibri">Stock</font></td>
<td><input type="text" name="STOCK" value="echo $Available_QTY;"/></td>
<td><font size="5" face="Calibri">TP</font></td>
<td><input type="text" name="TP" value="echo $P_Price;" size="5"/></td>
<td width="16%">
</td>
</tr>
<tr>
<td><font size="5" face="Calibri">QTY</font></td>
<td><input type="text" name="QTY" size="15" tabindex="2"/></td>
<td>Disnt %</td>
<td><input type="text" name="ItemDiscount" onKeyUp="ItemDist();" onFocus="if (this.value == '0') {this.value = '';}" onBlur="if (this.value == '') {this.value = '0';}" value="0" tabindex="3"/></td>
<td><font size="5" face="Calibri">Rate</font></td>
<td><input type="text" name="Rate" value="echo $P_Price;" onFocus="if (this.value == 'echo $P_Price;') {this.value = '';}" onBlur="if (this.value == '') {this.value = 'echo $P_Price;';}" tabindex="4"/></td>
<td><font size="5" face="Calibri">Tax</font></td>
<td><input type="text" name="Tax" value="0" size="5"/></td>
<td></td>
<td></td>
<td width="16%"><input type="submit" name="submit" value="ENTER" /></td>
</tr>
</table></form>
<div style="height:80%; width:70%; float: left; border-right:solid #000000;" ><br />
<table width="100%">
<tr>
<th width="10%"><font size="5" face="Calibri">QTY</font></th>
<th width="30%"><font size="5" face="Calibri">Name</font></th>
<th width="18%"><font size="5" face="Calibri">Rate</font></th>
<th width="5%"><font size="5" face="Calibri">Dis</font></th>
<th width="17%"><font size="5" face="Calibri">Amount</font></th>
<th width="6%"><font size="5" face="Calibri">Del</font></th>
</tr>
</table>
<div class="scroll" style="height:75%; width:100%;">
<table width="100%">
$Total_Amount=0;
$sr=0;
$rs=mysql_query("select * from temp where BachNo='$AccountId'");
while($newArray=mysql_fetch_array($rs)) {
$TQTY= $newArray['TQTY'];
$P_Name= $newArray['PName'];
$S_Price=$newArray['Rate'];
$Temp_Id= $newArray['Temp_Id'];
$Tax= $newArray['Tax'];
$Dis= $newArray['Dis'];
$Product_Id= $newArray['Product_Id'];
$CId= $newArray['Customer_Id'];
$Amount=($TQTY*$S_Price)+(($TQTY*$S_Price)*$Tax/100);
$rsp=mysql_query("select * from product where Product_Id='$Product_Id'");
while ($newArray = mysql_fetch_array($rsp))
{
$TP= $newArray['TP']; }
<tr if ($sr%2){ echo 'bgcolor="#CCCCCC"'; }>
<td width="10%" align="center">echo $TQTY;</td>
<td width="30%">echo $Product_Id.' '.$P_Name;</td>
<td width="18%" align="right">echo number_format($TP);</td>
<td width="5%" align="right">echo $Dis;%</td>
<td width="17%" align="right">echo number_format($Amount);</td>
<td width="6%" align="right"><a href="sale.php?del=echo $Temp_Id;"><img src="imgs/DeleteRed.png" height="20" width="20" /></a></td>
</tr>
$sr=$sr+1; $Total_Amount=$Total_Amount+$Amount;
$TUnit = $TUnit + $TQTY; }
</table>
</div>
<table width="100%" bgcolor="000000" style="border-radius: 15px; ">
<tr>
<th width="46%"><font color="#EFF800" >Items (echo $sr;)</font></th>
<th align="right" width="54%"><font color="#EFEFEF" >UNITS (echo $TUnit;)</font></th>
</tr>
</table>
<a href="hold.php"></a>
if ($HCheck!=NULL) {
<a href="onhold.php"></a> }
</div>
<div style="height:80%; width:29%; float: left;" >
<table width="100%">
<tr bgcolor="7DFFE5">
<td style="border-bottom:solid #000000;" colspan="2"><font color="#FF0000" size="+4">RS. echo number_format($Total_Amount);</font></td>
</tr>
</table>
<form name="form" onKeyUp="highlight(event)" onClick="highlight(event)" method="post" action="sale_Controller.php" onSubmit="return registration_emptyForm(this)">
<input type="hidden" name="Code" value="echo $CId;">
<table align="right">
<tr>
<td height="28"><font size="4" face="Calibri">Dis. %</font></td>
<td><input type="text" name="DisP" onKeyUp="DisPer();" onKeyDown="return DiscountTransfer(event)" tabindex="-1">
</td>
</tr>
<tr>
<td height="28"><font size="4" face="Calibri">Discount</font></td>
<td><input type="text" name="Discount" onKeyUp="DisAmt();" tabindex="-1">
</td>
</tr>
<tr>
<td height="28"><font size="5" face="Calibri">Total
Bill</font></td>$Total=$Total_Amount; $PBalance=$Ending_Balance;
<td><input type="text" name="TotalBill" value="echo $Total;" readonly="" tabindex="0">
<input type="hidden" name="Gbil" value="echo $Total;">
<input type="hidden" name="GTbil" value="echo $Total;">
<input type="hidden" name="Gross_Bill" value="echo $Total;">
<input type="hidden" name="GNBill" value="echo $Total;">
</td>
</tr>
<tr>
<td height="28"><font size="5" face="Calibri">Cash</font></td>
<td><input type="text" name="Cash" onKeyUp="Csh();" onKeyDown="return dealtransfer(event)">
</td>
</tr>
<tr>
<td height="28"><font size="5" face="Calibri">Change</font></td>
<td><input type="text" name="BillBalance" ></td>
</tr>
<tr>
<td height="28"><font size="5" face="Calibri">Name</font></td>
<td><input type="text" name="cName" ></td>
</tr>
<tr>
<td height="28"><font size="5" face="Calibri">Cell/Id</font></td>
<td><input type="text" name="Cell" ></td>
</tr>
<tr>
<td colspan="2" align="right"><input type="hidden" name="PH" value="1" >
PRINT <input type="checkbox" value="786" name="Print" checked="checked"><input name="Input" type="submit" value="SAVE" tabindex="5" class="btn">
</td>
</tr>
</table>
</form>
<table align="right">
<tr><td style="border:groove #CCCCCC;border-radius: 10px;" align="center" bgcolor="#AFCBE8" >
<font color="#FFFFFF" size="+2" >REPORTS</font>
<img src="imgs/report-icon.png" width="25" height="25"></td>
</tr>
<tr>
<td> <form action="Reports/Sale_Print.php" target="_blank">
<table>
<tr>
<td><input type="text" name="From" class="tcal" size="9" value="if ($date!=NULL){ echo $date; } else { echo date("d-m-Y"); }"/></td>
<td>TO</td>
<td><input type="text" name="To" class="tcal" size="9" value="if ($date!=NULL){ echo $date; } else { echo date("d-m-Y"); }"/></td>
</tr>
if ($AccountId==1){
<tr>
<th>Account</th>
<th colspan="3">
<select name="AcId" >
<option value="0">ALL</option>
$rs=mysql_query("select * from login");
while($newArray=mysql_fetch_array($rs)) {
<option value="echo $newArray['AccountId'];" >echo $newArray['UserName'];</option>
} </select>
</th>
</tr>
<tr>
<th>BarCode</th>
<td colspan="3"><input type="text" name="Barcode" size="10"></td>
</tr>
} else {
<input type="hidden" value="echo $AccountId;" name="AcId">
}
<tr>
<td colspan="3"> <input type="hidden" value="echo $ProductId;" name="Bank"><br>
Web<input type="radio" name="we" value="0" checked="checked">Word<input type="radio" name="we" value="1">Excel<input type="radio" name="we" value="2">
<input type="submit" value="Report"></td>
</tr>
</table>
</form></td>
</tr>
<tr>
<td>
</td>
</tr>
</table>
</div>
}
© 2023 Quttera Ltd. All rights reserved.