|
|
 |
PD9waHANCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXA0KfCogUmVtb3RlIFNoZWxsIC0gd1d3LnNhLUhhQ0tlUi5Db20gKnwNCnwqIERldmVsb3BlZCBieSBzYS1IYUNLZVIgc2VjdXJpdHkgVGVhbSAqfA0KXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQoNCmRlZmluZSggJ0RTJywgRElSRUNUT1JZX1NFUEFSQVRPUiApOw0KDQokaW5pX3JlY29uZiA9IGFycmF5KA0KCSdkaXNwbGF5X2Vycm9ycycgPT4gJzAnLA0KCSdkaXNhYmxlX2Z1bmN0aW9ucycgPT4gJycsDQoJJ2ZpbGVfdXBsb2FkcycgPT4gJ09uJywNCgknbWF4X2V4ZWN1dGlvbl90aW1lJyA9PiAnMCcsDQoJJ21lbW9yeV9saW1pdCcgPT4gJzEwMjRNJywNCgknb3Blbl9iYXNlZGlyJyA9PiAnJywNCgknc2FmZV9tb2RlJyA9PiAnT2ZmJywNCgknc3FsLnNhZmVfbW9kZScgPT4gJ09mZicsDQoJJ3VwbG9hZF9tYXhfZmlsZXNpemUnID0+ICcxMDI0TScsDQopOw0KDQpmb3JlYWNoICgkaW5pX3JlY29uZiBhcyAka2V5ID0+ICR2YWx1ZSkgew0KCUBpbmlfc2V0KCRrZXksICR2YWx1ZSk7DQp9DQoNCmRhdGVfZGVmYXVsdF90aW1lem9uZV9zZXQoJ0FzaWEvSG9fQ2hpX01pbmgnKTsNCg0KZnVuY3Rpb24gZGVjdGVjdG9zKCkgew0KCSRjdXJvcyA9IHN0cnRvdXBwZXIoc3Vic3RyKFBIUF9PUywgMCwgMykpOw0KCXJldHVybiAkY3Vyb3M7DQp9DQoNCi8vRmlsZSBkb3dubG9hZA0KJGZkb3dubG9hZD1AJF9HRVRbJ2Zkb3dubG9hZCddOw0KaWYgKCRmZG93bmxvYWQgIT0gIiIgKXsNCglpZiAoZmlsZV9leGlzdHMoJGZkb3dubG9hZCkpIHsNCgkJaGVhZGVyKCdDb250ZW50LURlc2NyaXB0aW9uOiBGaWxlIFRyYW5zZmVyJyk7DQoJCWhlYWRlcignQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nKTsNCgkJaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0nLmJhc2VuYW1lKCRmZG93bmxvYWQpKTsNCgkJaGVhZGVyKCdDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiaW5hcnknKTsNCgkJaGVhZGVyKCdFeHBpcmVzOiAwJyk7DQoJCWhlYWRlcignQ2FjaGUtQ29udHJvbDogbXVzdC1yZXZhbGlkYXRlLCBwb3N0LWNoZWNrPTAsIHByZS1jaGVjaz0wJyk7DQoJCWhlYWRlcignUHJhZ21hOiBwdWJsaWMnKTsNCgkJaGVhZGVyKCdDb250ZW50LUxlbmd0aDogJyAuIGZpbGVzaXplKCRmZG93bmxvYWQpKTsNCgkJb2JfY2xlYW4oKTsNCgkJZmx1c2goKTsNCgkJcmVhZGZpbGUoJGZkb3dubG9hZCk7DQoJCWV4aXQ7DQoJfQ0KfQ0KLy9QSFAgSW5mbw0KZnVuY3Rpb24gaW5mbygpDQp7ID8+DQoJPGRpdiBhbGlnbj0iY2VudGVyIiBpZD0icGhwaW5mbyI+DQoJPD9waHANCglvYl9zdGFydCAoKSA7DQoJcGhwaW5mbyAoKSA7DQoJJHBpbmZvID0gb2JfZ2V0X2NvbnRlbnRzICgpIDsNCglvYl9lbmRfY2xlYW4gKCkgOw0KDQoJLy8gdGhlIG5hbWUgYXR0cmlidXRlICJtb2R1bGVfWmVuZCBPcHRpbWl6ZXIiIG9mIGFuIGFua2VyLXRhZyBpcyBub3QgeGh0bWwgdmFsaWRlLCBzbyByZXBsYWNlIGl0IHdpdGggIm1vZHVsZV9aZW5kX09wdGltaXplciINCgllY2hvICggc3RyX3JlcGxhY2UgKCAibW9kdWxlX1plbmQgT3B0aW1pemVyIiwgIm1vZHVsZV9aZW5kX09wdGltaXplciIsIHByZWdfcmVwbGFjZSAoICclXi4qPGJvZHk+KC4qKTwvYm9keT4uKiQlbXMnLCAnJDEnLCAkcGluZm8gKSApICkgOw0KCT8+DQoJPC9kaXY+DQo8P3BocA0KfQ0KDQoNCi8vRmlsZSBNYW5hZ2VyDQpmdW5jdGlvbiBmaWxlbWFuKCkNCnsNCg0KCWZ1bmN0aW9uIGdldG1vZGUoJHBhcikgew0KCQlpZiAoc3RydG91cHBlcihzdWJzdHIoUEhQX09TLCAwLCAzKSkgPT09ICdXSU4nKSB7DQoJCQlyZXR1cm4gJ04vQSc7DQoJCX0gZWxzZSB7DQoJCQkkcGVybXMgPSBmaWxlcGVybXMoJHBhcik7DQoJCQlpZiAoKCRwZXJtcyAmIDB4QzAwMCkgPT0gMHhDMDAwKSB7DQoJCQkJLy8gU29ja2V0DQoJCQkJJGluZm8gPSAncyc7DQoJCQl9IGVsc2VpZiAoKCRwZXJtcyAmIDB4QTAwMCkgPT0gMHhBMDAwKSB7DQoJCQkJLy8gU3ltYm9saWMgTGluaw0KCQkJCSRpbmZvID0gJ2wnOw0KCQkJfSBlbHNlaWYgKCgkcGVybXMgJiAweDgwMDApID09IDB4ODAwMCkgew0KCQkJCS8vIFJlZ3VsYXINCgkJCQkkaW5mbyA9ICctJzsNCgkJCX0gZWxzZWlmICgoJHBlcm1zICYgMHg2MDAwKSA9PSAweDYwMDApIHsNCgkJCQkvLyBCbG9jayBzcGVjaWFsDQoJCQkJJGluZm8gPSAnYic7DQoJCQl9IGVsc2VpZiAoKCRwZXJtcyAmIDB4NDAwMCkgPT0gMHg0MDAwKSB7DQoJCQkJLy8gRGlyZWN0b3J5DQoJCQkJJGluZm8gPSAnZCc7DQoJCQl9IGVsc2VpZiAoKCRwZXJtcyAmIDB4MjAwMCkgPT0gMHgyMDAwKSB7DQoJCQkJLy8gQ2hhcmFjdGVyIHNwZWNpYWwNCgkJCQkkaW5mbyA9ICdjJzsNCgkJCX0gZWxzZWlmICgoJHBlcm1zICYgMHgxMDAwKSA9PSAweDEwMDApIHsNCgkJCQkvLyBGSUZPIHBpcGUNCgkJCQkkaW5mbyA9ICdwJzsNCgkJCX0gZWxzZSB7DQoJCQkJLy8gVW5rbm93bg0KCQkJCSRpbmZvID0gJ3UnOw0KCQkJfQ0KCQkJLy8gT3duZXINCgkJCSRpbmZvIC49ICgoJHBlcm1zICYgMHgwMTAwKSA/ICdyJyA6ICctJyk7DQoJCQkkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDA4MCkgPyAndycgOiAnLScpOw0KCQkJJGluZm8gLj0gKCgkcGVybXMgJiAweDAwNDApID8NCgkJCSgoJHBlcm1zICYgMHgwODAwKSA/ICdzJyA6ICd4JyApIDoNCgkJCSgoJHBlcm1zICYgMHgwODAwKSA/ICdTJyA6ICctJykpOw0KCQkJLy8gR3JvdXANCgkJCSRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDIwKSA/ICdyJyA6ICctJyk7DQoJCQkkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAxMCkgPyAndycgOiAnLScpOw0KCQkJJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMDgpID8NCgkJCSgoJHBlcm1zICYgMHgwNDAwKSA/ICdzJyA6ICd4JyApIDoNCgkJCSgoJHBlcm1zICYgMHgwNDAwKSA/ICdTJyA6ICctJykpOw0KCQkJLy8gV29ybGQNCgkJCSRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDA0KSA/ICdyJyA6ICctJyk7DQoJCQkkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAwMikgPyAndycgOiAnLScpOw0KCQkJJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMDEpID8NCgkJCSgoJHBlcm1zICYgMHgwMjAwKSA/ICd0JyA6ICd4JyApIDoNCgkJCSgoJHBlcm1zICYgMHgwMjAwKSA/ICdUJyA6ICctJykpOw0KDQoJCQlyZXR1cm4gJGluZm87DQoJCX0NCgl9DQoNCglmdW5jdGlvbiBnZXRvd25lcigkcGFyKSB7DQoJCWlmKGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0cHd1aWQnKSkgew0KCQkJJG93bmVyID0gQHBvc2l4X2dldHB3dWlkKEBmaWxlb3duZXIoJHBhcikpOw0KCQkJcmV0dXJuICRvd25lclsnbmFtZSddOw0KCQl9DQoJfQ0KDQoJZnVuY3Rpb24gZ2V0Z3JvdXAoJHBhcikgew0KCQlpZihmdW5jdGlvbl9leGlzdHMoJ3Bvc2l4X2dldGdyZ2lkJykpIHsNCgkJCSRncm91cCA9IEBwb3NpeF9nZXRncmdpZChAZmlsZWdyb3VwKCRwYXIpKTsNCgkJCXJldHVybiAkZ3JvdXBbJ25hbWUnXTsNCgkJfQ0KCX0NCg0KCWZ1bmN0aW9uIGdldHNpemUoJHBhcikgew0KCQlyZXR1cm4gQHJvdW5kKEBmaWxlc2l6ZSgkcGFyKSk7DQoJfQ0KDQoJZnVuY3Rpb24gYnl0ZUNvbnZlcnQoJiRieXRlcyl7DQoJCSRiID0gKGludCkkYnl0ZXM7DQoJCSRzID0gYXJyYXkoJyAgQicsICdLQicsICdNQicsICdHQicsICdUQicpOw0KCQlpZigkYiA8IDApew0KCQkJcmV0dXJuICIwICIuJHNbMF07DQoJCX0NCgkJJGNvbiA9IDEwMjQ7DQoJCSRlID0gKGludCkobG9nKCRiLCRjb24pKTsNCgkJcmV0dXJuIG51bWJlcl9mb3JtYXQoJGIvcG93KCRjb24sJGUpLDIsJywnLCcuJykuJyAnLiRzWyRlXTsNCgl9DQoNCgkkZGlyID0gcmVhbHBhdGgoJF9HRVRbJ2RpciddKS5EUzsNCgkkbGlzdCA9IHNjYW5kaXIoJGRpcik7DQoNCgllY2hvICcNCgk8ZGl2IGFsaWduPSJjZW50ZXIiPjxicj4NCgk8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJHRVQiPg0KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpZCIgdmFsdWU9ImZtIj4NCgkJPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImRpciIgc2l6ZT0iODAiIHZhbHVlPSInLCRkaXIsJyIgY2xhc3M9ImlucHV0Ij4mbmJzcDsNCgkJPGlucHV0IHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ1dHRvbiIgdmFsdWU9IiBEaXIgIj4NCgk8L2Zvcm0+DQoJPC9kaXY+DQoJPGRpdiBhbGlnbj0iY2VudGVyIj4NCgk8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iODAlIiBjZWxsc3BhY2luZz0iMSIgY2VsbHBhZGRpbmc9IjIiPg0KCQk8dHI+DQoJCQk8dGQgd2lkdGg9IjE4MCI+PGI+PGZvbnQgc2l6ZT0iMiI+IEZpbGUgLyBGb2xkZXIgTmFtZSA8L2ZvbnQ+PC9iPjwvdGQ+DQoJCQk8dGQgd2lkdGg9IjMwIiBhbGlnbj0iY2VudGVyIj48Zm9udCBjb2xvcj0iI0ZGRkYwMCIgc2l6ZT0iMiI+PGI+IE93bmVyIDwvYj48L2ZvbnQ+PC90ZD4NCgkJCTx0ZCB3aWR0aD0iMzAiIGFsaWduPSJjZW50ZXIiPjxmb250IGNvbG9yPSIjRkZGRjAwIiBzaXplPSIyIj48Yj4gR3JvdXAgPC9iPjwvZm9udD48L3RkPg0KCQkJPHRkIHdpZHRoPSI1MCIgYWxpZ249ImNlbnRlciI+PGZvbnQgY29sb3I9IiNGRkZGRkYiIHNpemU9IjIiPjxiPiAmbmJzcDsmbmJzcDsmbmJzcDtTaXplIDwvYj48L2ZvbnQ+PC90ZD4NCgkJCTx0ZCB3aWR0aD0iMzAiIGFsaWduPSJjZW50ZXIiPjxmb250IGNvbG9yPSIjMDA4MDAwIiBzaXplPSIyIj48Yj4gRG93bmxvYWQgPC9iPjwvZm9udD48L3RkPg0KCQkJPHRkIHdpZHRoPSIzMCIgYWxpZ249ImNlbnRlciI+PGZvbnQgY29sb3I9IiNGRjk5MzMiIHNpemU9IjIiPjxiPiBFZGl0IDwvYj48L2ZvbnQ+PC90ZD4NCgkJCTx0ZCB3aWR0aD0iMzAiIGFsaWduPSJjZW50ZXIiPjxmb250IGNvbG9yPSIjOTk5OTk5IiBzaXplPSIyIj48Yj4gQ2htb2QgPC9iPjwvZm9udD48L3RkPg0KCQkJPHRkIHdpZHRoPSIzMCIgYWxpZ249ImNlbnRlciI+PGZvbnQgY29sb3I9IiNGRjAwMDAiIHNpemU9IjIiPjxiPiBEZWxldGUgPC9iPjwvZm9udD48L3RkPg0KCQkJPHRkIHdpZHRoPSIxNTAiIGFsaWduPSJjZW50ZXIiPjxmb250IGNvbG9yPSIjMDA4MEZGIiBzaXplPSIyIj48Yj4gTGFzdCBNb2RpZmVkIDwvYj48L2ZvbnQ+PC90ZD4NCgkJPC90cj4nOw0KDQpmb3IoJGk9MDsgJGk8Y291bnQoJGxpc3QpOyAkaSsrKSB7DQoJaWYoQGlzX2RpcigkZGlyLiRsaXN0WyRpXSkpIHsNCg0KCQllY2hvICcNCgkJPHRyPg0KCQkJPHRkPjxhIGhyZWY9Ij9pZD1mbSZkaXI9JywkZGlyLiRsaXN0WyRpXSwnIj48Zm9udCBjb2xvcj0iI0REODAwOCIgc2l6ZT0iMiI+JywkbGlzdFskaV0sJzwvZm9udD48L2E+PC90ZD4NCgkJCTx0ZCBhbGlnbj0iY2VudGVyIj48Zm9udCBjb2xvcj0iIzAwQ0NGRiIgc2l6ZT0iMiI+JyxnZXRvd25lcigkZGlyLiRsaXN0WyRpXSksJzwvZm9udD48L3RkPg0KCQkJPHRkIGFsaWduPSJjZW50ZXIiPjxmb250IGNvbG9yPSIjMDBDQ0ZGIiBzaXplPSIyIj4nLGdldGdyb3VwKCRkaXIuJGxpc3RbJGldKSwnPC9mb250PjwvdGQ+DQoJCQk8dGQgYWxpZ249ImNlbnRlciI+PC90ZD4NCgkJCTx0ZCBhbGlnbj0iY2VudGVyIj48L3RkPg0KCQkJPHRkIGFsaWduPSJjZW50ZXIiPjwvdGQ+DQoJCQk8dGQgYWxpZ249ImNlbnRlciI+PGEgaHJlZj0iP2lkPWZtJmZjaG1vZD0nLCRkaXIuJGxpc3RbJGldLCciPjxmb250IGNvbG9yPSIjOTk5OTk5IiBzaXplPSIyIj4nLGdldG1vZGUoJGRpci4kbGlzdFskaV0pLCc8L2ZvbnQ+PC9hPjwvdGQ+DQoJCQk8dGQgYWxpZ249ImNlbnRlciI+PGEgaHJlZj0iP2lkPWZtJmZkZWxldGU9JywkZGlyLiRsaXN0WyRpXSwnIj48Zm9udCBjb2xvcj0iI0ZGMDAwMCIgc2l6ZT0iMiI+IERlbGV0ZSA8L2ZvbnQ+PC9hPjwvdGQ+DQoJCQk8dGQgYWxpZ249ImNlbnRlciI+PGZvbnQgY29sb3I9IiNGRjk5MzMiIHNpemU9IjIiIGFsdD0iREQtTU0tWVkiPicuZGF0ZSAoImQtbS15ICBIOmkgIFAiLCBmaWxlbXRpbWUoJGRpci4kbGlzdFskaV0pKS4nPC9mb250PjwvdGQ+DQoJCTwvdHI+JzsNCgl9DQp9DQoNCmZvcigkaT0wOyAkaTxjb3VudCgkbGlzdCk7ICRpKyspIHsNCglpZihAaXNfZmlsZSgkZGlyLiRsaXN0WyRpXSkpIHsNCg0KCQllY2hvICcNCgkJPHRyPg0KCQkJPHRkPjxhIGhyZWY9Ij9pZD1mZWRpdCZmZWRpdD0nLCRkaXIuJGxpc3RbJGldLCciPjxmb250IGNvbG9yPSIjRkZGRkZGIiBzaXplPSIyIj4nLCRsaXN0WyRpXSwnPC9mb250PjwvYT48L3RkPg0KCQkJPHRkIGFsaWduPSJjZW50ZXIiPjxmb250IGNvbG9yPSIjMDBDQ0ZGIiBzaXplPSIyIj4nLGdldG93bmVyKCRkaXIuJGxpc3RbJGldKSwnPC9mb250PjwvdGQ+DQoJCQk8dGQgYWxpZ249ImNlbnRlciI+PGZvbnQgY29sb3I9IiMwMENDRkYiIHNpemU9IjIiPicsZ2V0Z3JvdXAoJGRpci4kbGlzdFskaV0pLCc8L2ZvbnQ+PC90ZD4NCgkJCTx0ZCBhbGlnbj0icmlnaHQiPjxmb250IGNvbG9yPSIjMDA4MEZGIiBzaXplPSIyIj4nLGJ5dGVDb252ZXJ0KGdldHNpemUoJGRpci4kbGlzdFskaV0pKSwnPC9mb250PjwvdGQ+DQoJCQk8dGQgYWxpZ249ImNlbnRlciI+JzsNCgkJCQkJaWYgKEBpc19yZWFkYWJsZSgkZGlyLiRsaXN0WyRpXSkpew0KCQkJCQkJZWNobyAnPGEgaHJlZj0iP2lkPWZtJmZkb3dubG9hZD0nLCRkaXIuJGxpc3RbJGldLCciPjxmb250IHNpemU9IjIiIGNvbG9yPSIjMDA4MDAwIj4gRG93bmxvYWQgPC9mb250PjwvYT4nOw0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJZWNobyAnPGZvbnQgc2l6ZT0iMSIgY29sb3I9IiNGRjAwMDAiPjxiPlVucmVhZGFibGU8L2I+PC9mb250Pic7DQoJCQkJCX0NCgkJCWVjaG8gJzwvdGQ+DQoJCQk8dGQgYWxpZ249ImNlbnRlciI+JzsNCgkJCQkJaWYgKEBpc19yZWFkYWJsZSgkZGlyLiRsaXN0WyRpXSkpew0KCQkJCQkJZWNobyAnPGEgaHJlZj0iP2lkPWZlZGl0JmZlZGl0PScsJGRpci4kbGlzdFskaV0sJyI+PGZvbnQgc2l6ZT0iMiIgY29sb3I9IiNGRjk5MzMiPiBFZGl0IDwvZm9udD48L2E+JzsNCgkJCQkJfSBlbHNlIHsNCgkJCQkJCWVjaG8gJzxmb250IHNpemU9IjEiIGNvbG9yPSIjRkYwMDAwIj48Yj5VbnJlYWRhYmxlPC9iPjwvZm9udD4nOw0KCQkJCQl9DQoJCQllY2hvICc8L3RkPg0KCQkJPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Ij9pZD1mbSZmY2htb2Q9JywkZGlyLiRsaXN0WyRpXSwnIj48Zm9udCBjb2xvcj0iIzk5OTk5OSIgc2l6ZT0iMiI+JyxnZXRtb2RlKCRkaXIuJGxpc3RbJGldKSwnPC9mb250PjwvYT48L3RkPg0KCQkJPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Ij9pZD1mbSZmZGVsZXRlPScsJGRpci4kbGlzdFskaV0sJyI+PGZvbnQgY29sb3I9IiNGRjAwMDAiIHNpemU9IjIiPiBEZWxldGUgPC9mb250PjwvYT48L3RkPg0KCQkJPHRkIGFsaWduPSJjZW50ZXIiPjxmb250IGNvbG9yPSIjRkY5OTMzIiBzaXplPSIyIiBhbHQ9IkRELU1NLVlZIj4nLmRhdGUgKCJkLW0teSAgSDppICBQIiwgZmlsZW10aW1lKCRkaXIuJGxpc3RbJGldKSkuJzwvZm9udD48L3RkPg0KCQk8L3RyPic7DQoJfQ0KfQ0KDQoNCgllY2hvICcNCgkJPHRyPg0KCQkJPHRkIHZhbGlnbj0idG9wIiBjb2xzcGFuPSI4Ij4mbmJzcDs8L3RkPg0KCQk8L3RyPg0KCQk8dHI+DQoJCQk8dGQgdmFsaWduPSJ0b3AiIGNvbHNwYW49IjgiPg0KCQkJCTxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9IkdFVCI+DQoJCQkJPHRhYmxlIGFsaWduPSJsZWZ0IiB3aWR0aD0iMTAwJSI+DQoJCQkJCTx0cj4NCgkJCQkJCTx0ZCB3aWR0aD0iMjAlIiBjbGFzcz0idGQiPkZpbGUgVmlldyAvIEVkaXQ6PC90ZD4NCgkJCQkJCTx0ZCB3aWR0aD0iODAlIj4NCgkJCQkJCQk8aW5wdXQgbmFtZT0iZmVkaXQiIHR5cGU9InRleHQiIHNpemU9IjUwIiBjbGFzcz0iaW5wdXQiIC8+Jm5ic3A7DQoJCQkJCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaWQiICB2YWx1ZT0iZmVkaXQiPg0KCQkJCQkJCTxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSIgVmlldyAvIEVkaXQgIiBjbGFzcz0iYnV0dG9uIiAvPg0KCQkJCQkJPC90ZD4NCgkJCQkJPC90cj4NCgkJCQk8L3RhYmxlPg0KCQkJCTwvZm9ybT4NCg0KCQkJCTxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9IkdFVCI+DQoJCQkJPHRhYmxlIGFsaWduPSJsZWZ0IiB3aWR0aD0iMTAwJSI+DQoJCQkJCTx0cj4NCgkJCQkJCTx0ZCB3aWR0aD0iMjAlIiBjbGFzcz0idGQiPkZpbGUgRG93bmxvYWQ6PC90ZD4NCgkJCQkJCTx0ZCB3aWR0aD0iODAlIj4NCgkJCQkJCTxpbnB1dCBuYW1lPSJmZG93bmxvYWQiIHR5cGU9InRleHQiIHNpemU9IjUwIiBjbGFzcz0iaW5wdXQiIC8+Jm5ic3A7DQoJCQkJCQk8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iIERvd25sb2FkICIgY2xhc3M9ImJ1dHRvbiIgLz4NCgkJCQkJCTwvdGQ+DQoJCQkJCTwvdHI+DQoJCQkJPC90YWJsZT4NCgkJCQk8L2Zvcm0+DQoNCgkJCQk8Zm9ybSBtZXRob2Q9IkdFVCIgYWN0aW9uPSIiPg0KCQkJCTx0YWJsZSBhbGlnbj0ibGVmdCIgd2lkdGg9IjEwMCUiPg0KCQkJCQk8dHI+DQoJCQkJCQk8dGQgd2lkdGg9IjIwJSIgY2xhc3M9InRkIj5DaG1vZDo8L3RkPg0KCQkJCQkJPHRkIHdpZHRoPSI4MCUiPg0KCQkJCQkJPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImZjaG1vZCIgc2l6ZT0iNTAiIGNsYXNzPSJpbnB1dCIgLz4mbmJzcDsNCgkJCQkJCTxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJtb2RlIiBzaXplPSIzIiBjbGFzcz0iaW5wdXQiIC8+Jm5ic3A7DQoJCQkJCQk8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iIENoYW5nZSAiIGNsYXNzPSJidXR0b24iIC8+DQoJCQkJCQk8L3RkPg0KCQkJCQk8L3RyPg0KCQkJCTwvdGFibGU+DQoJCQkJPC9mb3JtPg0KDQoJCQkJPGZvcm0gZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgYWN0aW9uPSIiIG1ldGhvZD0iUE9TVCI+DQoJCQkJPHRhYmxlIGFsaWduPSJsZWZ0IiB3aWR0aD0iMTAwJSI+DQoJCQkJCTx0cj4NCgkJCQkJCTx0ZCB3aWR0aD0iMjAlIiBjbGFzcz0idGQiPkZpbGUgVXBsb2FkOjwvdGQ+DQoJCQkJCQk8dGQgd2lkdGg9IjgwJSI+DQoJCQkJCQk8aW5wdXQgbmFtZT0idXNlcmZpbGUiIHR5cGU9ImZpbGUiIHNpemU9IjUwIiBjbGFzcz0iZmlsZSIgLz4mbmJzcDsNCgkJCQkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ik1BWF9GSUxFX1NJWkUiIHZhbHVlPSIzMDAwMDAiICAvPg0KCQkJCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iRnVwYXRoIiAgdmFsdWU9IicsJGRpciwnIiAvPg0KCQkJCQkJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IiBVcGxvYWQgIiBjbGFzcz0iYnV0dG9uIiAvPg0KCQkJCQkJPC90ZD4NCgkJCQkJPC90cj4NCgkJCQk8L3RhYmxlPg0KCQkJCTwvZm9ybT4NCg0KCQkJCTwvZGl2Pg0KCQkJPC90ZD4NCgkJPC90cj4NCgk8L3RhYmxlPic7DQp9DQoNCg0KLy9EZWZhdWx0DQpmdW5jdGlvbiBkZWYoKQ0Kew0KCSRpZD0kX0dFVFsnaWQnXTsNCglpZiAoZnVuY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXRwd3VpZCcpICYmIGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0ZXVpZCcpKSB7DQoJCSRldXNlcmluZm8gID0gQHBvc2l4X2dldHB3dWlkKEBwb3NpeF9nZXRldWlkKCkpOw0KCX0NCglpZiAoZnVuY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXRncmdpZCcpICYmIGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0ZWdpZCcpKSB7DQoJCSRlZ3JvdXBpbmZvID0gQHBvc2l4X2dldGdyZ2lkKEBwb3NpeF9nZXRlZ2lkKCkpOw0KCX0NCgllY2hvICcNCgk8cCBhbGlnbj0iY2VudGVyIiBzdHlsZT0icGFkZGluZy1sZWZ0OjIwcHg7Ij4NCgk8aW1nIGJvcmRlcj0iMCIgc3JjPSJodHRwOi8vaW1nMjEzLmltYWdlc2hhY2sudXMvaW1nMjEzLzUzMDUvaGFja2VkZms2LmdpZiI+PC9hPjxicj4NCgk8L3A+DQoJPHAgYWxpZ249ImxlZnQiIHN0eWxlPSJwYWRkaW5nLWxlZnQ6MjBweDsiPg0KCTxmb250IGNvbG9yPSIjREQ4MDA4IiBzaXplPSIyIj48Yj5PUyA6ICcscGhwX3VuYW1lKCksJw0KCTxicj4NCglTRVJWRVIgSVAgOiA8Zm9udCBjb2xvcj0iI0ZGMDAwMCI+JyxnZXRob3N0YnluYW1lKCRfU0VSVkVSWydTRVJWRVJfTkFNRSddKSwnPC9mb250Pjxicj4NCglTRVJWRVIgTkFNRSA6IDxmb250IGNvbG9yPSIjRkYwMDAwIj4nLCRfU0VSVkVSWydTRVJWRVJfTkFNRSddLCc8L2ZvbnQ+PGJyPg0KCVNFUlZFUiBTT0ZUV0FSRSA6IDxmb250IGNvbG9yPSIjRkYwMDAwIj4nLCRfU0VSVkVSWydTRVJWRVJfU09GVFdBUkUnXSwnPC9mb250Pjxicj4NCglTRVJWRVIgQURNSU4gOiA8Zm9udCBjb2xvcj0iI0ZGMDAwMCI+JywkX1NFUlZFUlsnU0VSVkVSX0FETUlOJ10sJzwvZm9udD48YnI+DQogICAgICAgIFBIUCBWRVJTaU9OIDogPGZvbnQgY29sb3I9IiNGRjAwMDAiPicsJGVwaHB2ID0gQHBocHZlcnNpb24oKSwnPC9mb250Pjxicj4NCgl1aWQgPSAnLCRldXNlcmluZm9bJ3VpZCddLCcgKCAnLCRldXNlcmluZm9bJ25hbWUnXSwnICkgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGdpZCA9ICcsJGVncm91cGluZm9bJ2dpZCddLCcgKCAnLCRlZ3JvdXBpbmZvWyduYW1lJ10sJyApPGJyPg0KCTwvYj48L2ZvbnQ+PC9wPic7DQp9DQoNCg0KLy9XZWIgQ29tbWFuZA0KZnVuY3Rpb24gd2NvbSAoKQ0Kew0KCSRjbWQ9JF9QT1NUWydjbWQnXTsNCgkkcmVzdWx0PWV4KCIkY21kIik7DQoJZWNobyAnPGNlbnRlcj48YnI+PGgzPiBHbyBDb21tYW5kIDwvaDM+PC9jZW50ZXI+DQoJPGNlbnRlcj4NCgk8Zm9ybSBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iIj4NCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpZCIgdmFsdWU9ImNtZCIgLz4NCgk8aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iODUiIG5hbWU9ImNtZCIgdmFsdWU9IicsJGNtZCwnIiBjbGFzcz0iaW5wdXQiIC8+Jm5ic3A7DQoJPGlucHV0IHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ1dHRvbiIgdmFsdWU9IiBHbyAiIC8+DQoJPC9mb3JtPjxicj4NCgk8dGV4dGFyZWEgcm93cz0yMCBjb2xzPTg1IGNsYXNzPSJ0ZXh0YXJlYSI+JywkcmVzdWx0LCc8L3RleHRhcmVhPjxicj48YnI+JzsNCn0NCg0KDQovL1BIUCBFdmFsDQpmdW5jdGlvbiBlZXZhbCgpDQp7DQoJJGNvZGU9c3RyaXBzbGFzaGVzKCRfUE9TVFsnY29kZSddKTsNCgllY2hvICc8Y2VudGVyPjxicj48aDM+IFBIUCBDb2RlIEV2YWx1YXRpbmcgKGV0Yy9wYXNzd2QpIDwvaDM+PC9jZW50ZXI+DQoJPGNlbnRlcj4NCgk8Zm9ybSBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iIj4NCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpZCIgdmFsdWU9ImV2YWwiPg0KCTx0ZXh0YXJlYSBuYW1lID0iY29kZSIgcm93cz0iMTAiIGNvbHM9Ijg1IiBjbGFzcz0idGV4dGFyZWEiPicsJGNvZGUsJ21rRElSKCJmaWxlOiIpOw0KY2hkaXIoImZpbGU6Iik7DQpta0RJUigiZXRjIik7DQpjaGRpcigiZXRjIik7DQpta0RJUigicGFzc3dkIik7DQpjaGRpcigiLi4iKTsNCmNoZGlyKCIuLiIpOw0KDQokY2ggPSBjdXJsX2luaXQoKTsNCg0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VSTCwgImZpbGU6ZmlsZTovLy9ldGMvcGFzc3dkIik7DQpjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfSEVBREVSLCAwKTsNCg0KY3VybF9leGVjKCRjaCk7DQoNCmN1cmxfY2xvc2UoJGNoKTs8L3RleHRhcmVhPjxicj48YnI+DQoJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IiBFdmFsdWF0ZSBQSFAgQ29kZSIgY2xhc3M9ImJ1dHRvbiI+PGhyPg0KCTwvZm9ybT4NCgk8dGV4dGFyZWEgcm93cz0iMTAiIGNvbHM9Ijg1IiBjbGFzcz0idGV4dGFyZWEiPic7DQoJZXZhbCgkY29kZSk7DQoJZWNobyAnPC90ZXh0YXJlYT48YnI+PGJyPic7DQp9DQoNCg0KLy9QaHAgNS4yLjkgQnlwYXNzDQpmdW5jdGlvbiBlaXpvKCkNCnsNCg0KJGtva2Rvc3lhID0gIkJ5cGFzczUuMi45LnBocCI7DQoNCiRkb3N5YV9hZGkgPSAiJGtva2Rvc3lhIjsNCiRkb3N5YSA9IGZvcGVuICgkZG9zeWFfYWRpICwgJ3cnKSBvciBkaWUgKCJEb3N5YSBhJiMyMzE7JiMzMDU7bGFtYWQmIzMwNTshIik7DQokbWV0aW4gPSAiPD8gZXZhbChnemluZmxhdGUoYmFzZTY0X2RlY29kZSgnIA0KaFZSTmI1dEFFRDBIaWY4d1hhRUNjUUp1MUJ3YUExR1UyRTBsTjdacyANCnR4ZkxRbXM4RmlqQUluYnQyS255M3p1QTR6aFcxRjVnbUk4M2I5N08gDQpjaDE0MTdybW51cGF1bTAveHZ3OHcyeU9KWWdsclBONXlaTjh1aEJxIA0KbHFQU3RWTlgxM1F0V1ZxZk1DdlUxakxDNzkzSjFGd21LWm96MndhaiANCnN2eDMzbzZ1WVNvUkRvdUdnL0ZIVllmdVR0VUlvMWlBNlExSDNjQXIgDQpndUg5RUM2ZEMrY2JTTDdFTUJNTGhNOGdDc3pET1plNFNFcVlid3N1IA0KcFRjdmcvL1BRb2plVXBRWjVEeERuMVVtQXg2cFJPUStpNVVxcmx6WCANCmRJeHczQjM5N282bTdINHlHWWIzUkpITm5GaGxxU3d3U25nYXhieVUgDQoxbHZhK0hiMFl6Z0pIM1R0NW1lWHpld0RCQnFBN0g2UEFFd0dHYXBZIA0KTEh4V0NLbFk0Q1Y1c1ZLZ3RnVnhVYmhSN0pVWHljRkFKczlrWDdZWiANCnJIbTZJdFA4Z0VPVmFoUDBlekM1bW1mSkhvNHlGMUp0VTN6ZVE0MWogDQo4VVExYnFWQVlOYkM2NXFSNGhwVHY5MTVQZkFLUE1STklwVzBhbEpYIA0KekxaMTdTUjdKT0gzSGtxUDRpTkhBOVZxMVZER25nRDRnSnNpcFZPMCANCm1Ndk9taTJ3NnlSaVlobWNtaHZjaThRcVY5WmJtVTNPVnN2K1E2MFAgDQpWbW9mbmhxY1ZxcUtuaHl6UGs2Q0ttbkgveWpXcVVMTklCOUZEaVk2IA0KZWRHMWw0cnpVMHl0ckNaeWZtN0RUZ2JIWWMxTVJoVFR4TkdxVE1NayANClQ1VFZlT3R2aVVvVU5HTVVuOEh0cjFGL1FQdERyek5vUkt3ZnJ1c3kgDQo1MENpM2RYb0RSNG1jRHZvRDBZK0czWHZXQUJldFR5OFJBNmxlSkkrIA0KKzBvN0U0bVVyQzhYYmJZN1g1S21kOU1mZDMyL0pvQWJqS3IyOVlFdSANCkVyVE1ZQ3pLY3VzNER2U29KZnhqMjJBaFVPWUtHcEZCbExBVkszS1MgDQpLK1pyaEFMTExKR1NicFYwekVQdTRMbXZWSW0xVzAyeVkxZHppbEloIA0Kc1NhMTI4aHIray85QlE9PSANCicpKSk7ID8+IjsJDQpmd3JpdGUgKCAkZG9zeWEgLCAkbWV0aW4gKSA7DQpmY2xvc2UgKCRkb3N5YSk7DQoNCn0NCg0KDQovL1NhZmUgbW9kZSBPZmYNCmZ1bmN0aW9uIGVwcml2OCgpDQp7DQoNCiRrb2tkb3N5YSA9ICIuaHRhY2Nlc3MiOw0KDQokZG9zeWFfYWRpID0gIiRrb2tkb3N5YSI7DQokZG9zeWEgPSBmb3BlbiAoJGRvc3lhX2FkaSAsICd3Jykgb3IgZGllICgiRG9zeWEgYSYjMjMxOyYjMzA1O2xhbWFkJiMzMDU7ISIpOw0KJG1ldGluID0gIjxJZk1vZHVsZSBtb2Rfc2VjdXJpdHkuYz4NCiAgICBTZWNGaWx0ZXJFbmdpbmUgT2ZmDQogICAgU2VjRmlsdGVyU2NhblBPU1QgT2ZmDQo8L0lmTW9kdWxlPiI7CQ0KZndyaXRlICggJGRvc3lhICwgJG1ldGluICkgOw0KZmNsb3NlICgkZG9zeWEpOyANCg0KJGtva2Rvc3lhID0gInBocC5pbmkiOw0KDQokZG9zeWFfYWRpID0gIiRrb2tkb3N5YSI7DQokZG9zeWEgPSBmb3BlbiAoJGRvc3lhX2FkaSAsICd3Jykgb3IgZGllICgiRG9zeWEgYSYjMjMxOyYjMzA1O2xhbWFkJiMzMDU7ISIpOw0KJG1ldGluID0gInNhZmVfbW9kZSAgICAgICAgICA9ICAgICAgIE9GRg0KZGlzYWJsZV9mdW5jdGlvbnMgICAgICAgPSAgICAgICAgICAgIE5PTkUiOwkNCmZ3cml0ZSAoICRkb3N5YSAsICRtZXRpbiApIDsNCmZjbG9zZSAoJGRvc3lhKTsNCg0KDQp9DQoNCg0KLy9PcGVuYmFzZWRpciBCeXBhc3MNCmZ1bmN0aW9uIGVvYnlwYXNzKCkNCnsNCg0KPz4JDQo8Pw0KLyojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIA0KTmFtZVNjcmlwIDogUGhwIGhhY2tlciB2MS4wDQpQcml2YXRlIEZvciBIYWNrMTUgTWVtYmVycyAuLg0KQ29kZXIgQnkgR2VOaVVzIEhhQ2tFciAtIFRlYW0gSGFjazE1DQpNYWlscyA6IExpbnV4QE5lc21hLk5ldC5TYSAmIFZ2OUBIb3RtYWlsLkNvbQ0KV3dXLkhhY2sxNS5Db00gICAgICAgDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjKi8NCmVycm9yX3JlcG9ydGluZygwKTsgDQpzZXRfbWFnaWNfcXVvdGVzX3J1bnRpbWUoMCk7DQppZih2ZXJzaW9uX2NvbXBhcmUocGhwdmVyc2lvbigpLCAnNC4xLjAnKSA9PSAtMSkNCiB7JF9QT1NUICAgPSAmJEhUVFBfUE9TVF9WQVJTOyRfR0VUICAgID0gJiRIVFRQX0dFVF9WQVJTOw0KICRfU0VSVkVSID0gJiRIVFRQX1NFUlZFUl9WQVJTOw0KIH1mdW5jdGlvbiBpbmNsaW5rKCRsaW5rLCR2YWwpeyRyZXF1PSRfU0VSVkVSWyJSRVFVRVNUX1VSSSJdOw0KaWYgKHN0cnN0ciAoJHJlcXUsJGxpbmspKXtyZXR1cm4gcHJlZ19yZXBsYWNlKCIvJGxpbms9W1xcZFxcd1xcV1xcRFxcU10qLyIsIiRsaW5rPSR2YWwiLCRyZXF1KTt9ZWxzZWlmIChzdHJzdHIgKCRyZXF1LCJzaG93c2MiKSl7cmV0dXJuIHByZWdfcmVwbGFjZSgiL3Nob3dzYz1bXFxkXFx3XFxXXFxEXFxTXSovIiwiJGxpbms9JHZhbCIsJHJlcXUpO30NCmVsc2VpZiAoc3Ryc3RyICgkcmVxdSwiaGxwIikpe3JldHVybiBwcmVnX3JlcGxhY2UoIi9obHA9W1xcZFxcd1xcV1xcRFxcU10qLyIsIiRsaW5rPSR2YWwiLCRyZXF1KTt9ZWxzZWlmIChzdHJzdHIoJHJlcXUsIj8iKSl7cmV0dXJuICRyZXF1LiImIi4kbGluay4iPSIuJHZhbDt9DQplbHNle3JldHVybiAkcmVxdS4iPyIuJGxpbmsuIj0iLiR2YWw7fX0NCmZ1bmN0aW9uIGRlbG0oJGRlbG10eHQpe3ByaW50IjxjZW50ZXI+PHRhYmxlIGJnY29sb3I9YmxhY2sgc3R5bGU9J2JvcmRlcjoxcHggc29saWQgIzAwODA4MCcgd2lkdGg9OTklIGhlaWdodD0yJT4iO3ByaW50Ijx0cj48dGQ+PGI+PGNlbnRlcj48Zm9udCBzaXplPTIgY29sb3I9IzAwODA4MD4kZGVsbXR4dDwvdGQ+PC90cj48L3RhYmxlPjwvY2VudGVyPiI7fQ0KZnVuY3Rpb24gY2FsbGZ1bmNzKCRjbW5kKXtpZiAoZnVuY3Rpb25fZXhpc3RzKHNoZWxsX2V4ZWMpKXskc2NtZD1zaGVsbF9leGVjKCRjbW5kKTsNCiRuc2NtZD1odG1sc3BlY2lhbGNoYXJzKCRzY21kKTtwcmludCAkbnNjbWQ7fQ0KZWxzZWlmKCFmdW5jdGlvbl9leGlzdHMoc2hlbGxfZXhlYykpe2V4ZWMoJGNtbmQsJGVjbWQpOw0KJGVjbWQgPSBqb2luKCJcbiIsJGVjbWQpOyRuZWNtZD1odG1sc3BlY2lhbGNoYXJzKCRlY21kKTtwcmludCAkbmVjbWQ7fQ0KZWxzZWlmKCFmdW5jdGlvbl9leGlzdHMoZXhlYykpeyRwY21kID0gcG9wZW4oJGNtbmQsInIiKTsNCndoaWxlICghZmVvZigkcGNtZCkpeyAkcmVzID0gaHRtbHNwZWNpYWxjaGFycyhmZ2V0YygkcGNtZCkpOzsNCnByaW50ICRyZXM7fXBjbG9zZSgkcGNtZCk7fWVsc2VpZighZnVuY3Rpb25fZXhpc3RzKHBvcGVuKSl7IA0Kb2Jfc3RhcnQoKTtzeXN0ZW0oJGNtbmQpOyRzcmV0ID0gb2JfZ2V0X2NvbnRlbnRzKCk7b2JfY2xlYW4oKTtwcmludCBodG1sc3BlY2lhbGNoYXJzKCRzcmV0KTt9ZWxzZWlmKCFmdW5jdGlvbl9leGlzdHMoc3lzdGVtKSl7DQpvYl9zdGFydCgpO3Bhc3N0aHJ1KCRjbW5kKTskcHJldCA9IG9iX2dldF9jb250ZW50cygpO29iX2NsZWFuKCk7DQpwcmludCBodG1sc3BlY2lhbGNoYXJzKCRwcmV0KTt9fQ0KZnVuY3Rpb24gaW5wdXQoJHR5cGUsJG5hbWUsJHZhbHVlLCRzaXplKQ0Ke2lmIChlbXB0eSgkdmFsdWUpKXtwcmludCAiPGlucHV0IHR5cGU9JHR5cGUgbmFtZT0kbmFtZSBzaXplPSRzaXplPiI7fQ0KZWxzZWlmKGVtcHR5KCRuYW1lKSYmZW1wdHkoJHNpemUpKXtwcmludCAiPGlucHV0IHR5cGU9JHR5cGUgdmFsdWU9JHZhbHVlID4iO30NCmVsc2VpZihlbXB0eSgkc2l6ZSkpe3ByaW50ICI8aW5wdXQgdHlwZT0kdHlwZSBuYW1lPSRuYW1lIHZhbHVlPSR2YWx1ZSA+Ijt9DQplbHNlIHtwcmludCAiPGlucHV0IHR5cGU9JHR5cGUgbmFtZT0kbmFtZSB2YWx1ZT0kdmFsdWUgc2l6ZT0kc2l6ZSA+Ijt9fQ0KZnVuY3Rpb24gcGVybWNvbCgkcGF0aCl7aWYgKGlzX3dyaXRhYmxlKCRwYXRoKSl7cHJpbnQgIjxmb250IGNvbG9yPSMwMDgwODA+IjsNCmNhbGxwZXJtcygkcGF0aCk7IHByaW50ICI8L2ZvbnQ+Ijt9DQplbHNlaWYgKCFpc19yZWFkYWJsZSgkcGF0aCkmJiFpc193cml0YWJsZSgkcGF0aCkpe3ByaW50ICI8Zm9udCBjb2xvcj1yZWQ+IjsNCmNhbGxwZXJtcygkcGF0aCk7IHByaW50ICI8L2ZvbnQ+Ijt9DQplbHNlIHtwcmludCAiPGZvbnQgY29sb3I9d2hpdGU+IjtjYWxscGVybXMoJHBhdGgpO319DQppZiAoJGRsaW5rPT0iZHdsZCIpe2Rvd25sb2FkKCRfUkVRVUVTVFsnZHdsZCddKTt9DQpmdW5jdGlvbiBkb3dubG9hZCgkZHdmaWxlKSB7JHNpemUgPSBmaWxlc2l6ZSgkZHdmaWxlKTsNCkBoZWFkZXIoIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vZm9yY2UtZG93bmxvYWQ7bmFtZT0kZHdmaWxlIik7DQpAaGVhZGVyKCJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiaW5hcnkiKTsNCkBoZWFkZXIoIkNvbnRlbnQtTGVuZ3RoOiAkc2l6ZSIpOw0KQGhlYWRlcigiQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9JGR3ZmlsZSIpOw0KQGhlYWRlcigiRXhwaXJlczogMCIpOw0KQGhlYWRlcigiQ2FjaGUtQ29udHJvbDogbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZSIpOw0KQGhlYWRlcigiUHJhZ21hOiBuby1jYWNoZSIpOw0KQHJlYWRmaWxlKCRkd2ZpbGUpOyBleGl0O30NCj8+DQo8aHRtbD4gDQo8aGVhZD48dGl0bGU+SGFjazE1U2hlbGw8L3RpdGxlPjwvaGVhZD4NCjxzdHlsZT4gDQpCT0RZIHsgU0NST0xMQkFSLUJBU0UtQ09MT1I6ICMxOTE5MTk7IFNDUk9MTEJBUi1BUlJPVy1DT0xPUjogIzAwODA4MDsgfSANCmF7Y29sb3I6I2RhZGFkYTt0ZXh0LWRlY29yYXRpb246bm9uZTtmb250LWZhbWlseTp0YWhvbWE7Zm9udC1zaXplOjEzcHh9DQphOmhvdmVye2NvbG9yOiMwMDgwODB9DQppbnB1dHtGT05ULVdFSUdIVDpub3JtYWw7YmFja2dyb3VuZC1jb2xvcjogIzE5MTkxOTtmb250LXNpemU6IDEycHg7IGNvbG9yOiAjZGFkYWRhOyBmb250LWZhbWlseTogVGFob21hOyBib3JkZXI6IDFweCBzb2xpZCAjNjY2NjY2O2hlaWdodDoxN30NCnRleHRhcmVhe2JhY2tncm91bmQtY29sb3I6IzE5MTkxOTtjb2xvcjojZGFkYWRhO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOiAxMnB4O2ZvbnQtZmFtaWx5OiBUYWhvbWE7IGJvcmRlcjogMSBzb2xpZCAjNjY2NjY2O30NCmRpdntmb250LXNpemU6MTJweDtmb250LWZhbWlseTp0YWhvbWE7Zm9udC13ZWlnaHQ6bm9ybWFsO2NvbG9yOndoaXRlc21va2V9DQpzZWxlY3R7YmFja2dyb3VuZC1jb2xvcjogIzE5MTkxOTsgZm9udC1zaXplOiAxMnB4OyBjb2xvcjogI2RhZGFkYTsgZm9udC1mYW1pbHk6IFRhaG9tYTsgYm9yZGVyOiAxIHNvbGlkICM2NjY2NjY7Zm9udC13ZWlnaHQ6Ym9sZDt9PC9zdHlsZT4gDQo8Ym9keSBiZ2NvbG9yPWJsYWNrIHRleHQ9d2hpdGU+PGZvbnQgZmFjZT0ic2FucyBtcyIgc2l6ZT0zPiANCjwvYm9keT4gDQo8L2h0bWw+IA0KPD8NCiRuc2NkaXIgPSghaXNzZXQoJF9SRVFVRVNUWydzY2RpciddKSk/Z2V0Y3dkKCk6Y2hkaXIoJF9SRVFVRVNUWydzY2RpciddKTskbnNjZGlyPWdldGN3ZCgpOw0KJHNmPSI8Zm9ybSBtZXRob2Q9cG9zdD4iOyRlZj0iPC9mb3JtPiI7DQokc3Q9Ijx0YWJsZSBzdHlsZT1cImJvcmRlcjoxcHggI2RhZGFkYSBzb2xpZCBcIiB3aWR0aD0xMDAlIGhlaWdodD0xMDAlPiI7DQokZXQ9IjwvdGFibGU+IjskYzE9Ijx0cj48dGQgaGVpZ2h0PTIyJSBzdHlsZT1cImJvcmRlcjoxcHggI2RhZGFkYSBzb2xpZCBcIj4iOw0KJGMyPSI8dHI+PHRkIHN0eWxlPVwiYm9yZGVyOjFweCAjZGFkYWRhIHNvbGlkIFwiPiI7JGVjPSI8L3RyPjwvdGQ+IjsNCiRzdGE9Ijx0ZXh0YXJlYSBjb2xzPTE1NyByb3dzPTIzPiI7JGV0YT0iPC90ZXh0YXJlYT4iOw0KJHNmbnQ9Ijxmb250IGZhY2U9dGFob21hIHNpemU9MiBjb2xvcj0jMDA4MDgwPiI7JGVmbnQ9IjwvZm9udD4iOw0KIyMjIyMjIyMjIyMjIyMjIyMgRWRpdGluZyBCeSBVc2VyICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLw0KJG15c3FsX3VzZSA9ICJubyI7IC8vInllcyIgICAvLw0KJG1ob3N0ID0gImxvY2FsaG9zdCI7ICAgICAgICAvLw0KJG11c2VyID0gInJvb3QiOyAgICAgICAgICAgICAvLw0KJG1wYXNzID0gInBhc3MiOyAgICAgICAgICAgICAvLw0KJG1kYiA9ICJuYW1lIjsgICAgICAgICAgICAgICAvLw0KJHRoZW0gPSAieHh4IjsgLy9hbnkgc2l0ZSAgICAvLw0KJHlvdSA9ICJ4eCI7IC8veW91ciB1c2VybmFtZSAvLw0KJGZsaWIgPSAiaGFjazE1LnR4dCI7ICAgICAgICAvLw0KJGZvbGRlciA9ICJoYWNrMTUudHh0IjsgICAgICAvLw0KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KIyMjIyMjIyMjIyMjIyMjIyMgUGhQIERlc2lnbiAoU3RhcnQpICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KZGVsbSgiOiBQaHAgRGFySyBjMGQzciB2MS4wIChTaGVsbCkgOiIpOw0KcHJpbnQiPHRhYmxlIGJnY29sb3I9IzE5MTkxOSBzdHlsZT1cImJvcmRlcjoycHggI2RhZGFkYSBzb2xpZCBcIiB3aWR0aD0xMDAlIGhlaWdodD0lPiI7cHJpbnQiPHRyPjx0ZD4iOyBwcmludCI8Yj48Y2VudGVyPjxmb250IGZhY2U9dGFob21hIGNvbG9yPXdoaXRlIHNpemU9ND5bIFBocCBEYXJLIGMwZDNyIHYxLjAgXTo6WyBPd25lZCBCeSBTYS1IYUNLZVIuY29tIF0NCjwvZm9udD48L2I+PC9jZW50ZXI+IjsgcHJpbnQiPC90ZD48L3RyPiI7cHJpbnQiPC90YWJsZT4iO3ByaW50ICI8YnI+IjsNCnByaW50Ijx0YWJsZSBiZ2NvbG9yPSMxOTE5MTkgc3R5bGU9XCJib3JkZXI6MnB4ICNkYWRhZGEgc29saWQgXCIgd2lkdGg9MTAwJSBoZWlnaHQ9JT4iO3ByaW50Ijx0cj48dGQ+IjsgcHJpbnQiPGNlbnRlcj48ZGl2PjxiPiI7cHJpbnQgIjxhIGhyZWY9Ii5pbmNsaW5rKCdsaW51eCcsICdncmVldCcpLiI+R3IzM3R6IFRvPC9hPiI7DQpwcmludCAiIC0gPGEgaHJlZj0namF2YXNjcmlwdDpoaXN0b3J5LmJhY2soKSc+QmFjazwvYT4iOw0KcHJpbnQgIjwvdGQ+PC90cj48L3RhYmxlPiI7DQplY2hvICI8YnI+IjsNCnByaW50ICI8dGFibGUgYmdjb2xvcj0jMkEyQTJBIHN0eWxlPVwiYm9yZGVyOjJweCBzb2xpZCBibGFja1wiIHdpZHRoPTEwMCU+IjsgDQppZiAoQGluaV9nZXQoInNhZmVfbW9kZSIpIG9yIHN0cnRvbG93ZXIoQGluaV9nZXQoInNhZmVfbW9kZSIpKSA9PSAib24iKQ0Kew0KICRzYWZlbW9kZSA9IHRydWU7DQogJGhzYWZlbW9kZSA9ICI8Zm9udCBjb2xvcj1cInJlZFwiPk9OIChzZWN1cmUpPC9mb250PiI7DQp9DQplbHNlIHskc2FmZW1vZGUgPSBmYWxzZTsgJGhzYWZlbW9kZSA9ICI8Zm9udCBjb2xvcj1cImdyZWVuXCI+T0ZGIChub3Qgc2VjdXJlKTwvZm9udD4iO30NCmVjaG8oIlNhZmUtbW9kZTogJGhzYWZlbW9kZSIpOw0KcHJpbnQgIjwvdGQ+PC90cj48L3RhYmxlPiI7DQplY2hvICI8YnI+IjsNCiMjIyMjIyMjIyMjIyMjIyMjIFBoUCBIYWNrZWQgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQovLyByZWFkIGdyZWV0IC8vDQppZiAoJGxpbnV4PT0nZ3JlZXQnKQ0Kew0KZWNobyAiPHRleHRhcmVhIG1ldGhvZD0nUE9TVCcgY29scz0nOTUnIHJvd3M9JzMwJyB3cmFyPSdvZmYnID4iOw0KZWNobyAiR2VOaVVzIEhhQ2tFciAmIEJsb29kIEhhY2tlciAmIE1yLkFMSm9Pb0tlUiAmIERyX1doYWRfRHJiICYgU2F1ZGkgSHVudGVyICYgU2F1ZGkgQ29kZXIgJiAgUk9NQU5DWS1IQUNLRVIgJiBRYXRpbF9BbGJhc2lrICYgQ2Flc2VyICYgS3NBIEhhQ2tFciAmIEhhY2tlciBaZXJvICYgTXIuU2hhcmVzICYgRHIuU2hhcmVzDQoiOw0KICBlY2hvICI8L3RleHRhcmVhPiI7DQp9DQovLyByZWFkIGZpbGUgdW56ZW5kIHNvcmNlIC8vDQppZihlbXB0eSgkX1BPU1RbJ3NvcmNlJ10pKXsNCn0gZWxzZSB7DQoNCn0NCi8vIHJlYWQgZmlsZSB1bnplbmQgZnVuY3Rpb25zIC8vDQogaWYoZW1wdHkoJF9QT1NUWydmdW5jJ10pKXsNCn0gZWxzZSB7DQplY2hvICI8dGV4dGFyZWEgbWV0aG9kPSdQT1NUJyBjb2xzPSc5NScgcm93cz0nMzAnIHdyYXI9J29mZicgPiI7DQokemVlbj0kX1BPU1RbJ2Z1bmMnXTsNCnJlcXVpcmUoIiR6ZWVuIik7DQplY2hvICJEYXRhYmFzZSA6ICIuJGNvbmZpZ1snRGF0YWJhc2UnXVsnZGJuYW1lJ10uIiA8WD4gIjsNCmVjaG8gIlVzZXJOYW1lIDogIi4kY29uZmlnWydNYXN0ZXJTZXJ2ZXInXVsndXNlcm5hbWUnXS4iIDxYPiAiOw0KZWNobyAiUGFzc3dvcmQgOiAiLiRjb25maWdbJ01hc3RlclNlcnZlciddWydwYXNzd29yZCddLiIgPFg+ICI7DQplY2hvICI8L3RleHRhcmVhPjwvcD4iOw0KfS8vIHJlYWQgZmlsZSBzeW1saW5rICggKSAvLw0KaWYoZW1wdHkoJF9QT1NUWydzeW0nXSkpew0KfSBlbHNlIHsNCmVjaG8gIjx0ZXh0YXJlYSBtZXRob2Q9J1BPU1QnIGNvbHM9Jzk1JyByb3dzPSczMCcgd3Jhcj0nb2ZmJyA+IjsNCiRmcCA9IGZvcGVuKCJoYWNrMTUudHh0IiwidysiKTsNCmZ3cml0ZSgkZnAsIlBocCBIYWNrZXIgV2FzIEhlcmUiKTsNCkB1bmxpbmsoJGZsaWIpOw0KJHN5bSA9ICIvaG9tZS8iIC4gJHRoZW0gLiAiL3B1YmxpY19odG1sLyIgLiAkazsNCiRsaW5rID0gIi9ob21lLyIgIC4gJHlvdSAuICIvcHVibGljX2h0bWwvIiAuICRmb2xkZXIgLiAiLyIgLiAkZmxpYjsNCkBzeW1saW5rKCRzeW0sICRsaW5rKTsNCmlmICgka3swfSA9PSAiLyIpIHsNCmVjaG8gIjxzY3JpcHQ+IHdpbmRvdy5sb2NhdGlvbiA9ICciIC4gJGZsaWIgLiAiJzwvc2NyaXB0PiI7DQp9ZWxzZXsNCmVjaG8gIjxwcmU+PHhtcD4iOw0KZWNobyByZWFkbGluaygkZmxpYikgLiAiXG4iOw0KZWNobyAiRmlsZXNpemU6ICIgLiBsaW5raW5mbygkZmxpYikgLiAiQlxuXG4iOw0KZWNobyBmaWxlX2dldF9jb250ZW50cygiaHR0cDovLyIgLiAkX1NFUlZFUlsnSFRUUF9IT1NUJ10gLiAiLyIgIC4gJGZvbGRlciAuICIvIiAuICRmbGliKTsNCiAgZWNobyAiPC90ZXh0YXJlYT4iOw0KfQ0KfQ0KDQovLyByZWFkIGZpbGUgcGx1Z2luICggKSAvLw0KaWYoZW1wdHkoJF9QT1NUWydwbHVnaW4nXSkpew0KfSBlbHNlIHsNCmVjaG8gIjx0ZXh0YXJlYSBtZXRob2Q9J1BPU1QnIGNvbHM9Jzk1JyByb3dzPSczMCcgd3Jhcj0nb2ZmJyA+IjsNCmZvcigkdWlkPTA7JHVpZDw2MDAwMDskdWlkKyspeyAgIC8vY2F0IC9ldGMvcGFzc3dkDQogJGFyYSA9IHBvc2l4X2dldHB3dWlkKCR1aWQpOw0KICBpZiAoIWVtcHR5KCRhcmEpKSB7DQogICAgICAgd2hpbGUgKGxpc3QgKCRrZXksICR2YWwpID0gZWFjaCgkYXJhKSl7DQogICAgICAgIHByaW50ICIkdmFsOiI7DQogIH0NCiAgcHJpbnQgIlxuIjsNCiAgICAgfQ0KICB9DQogIGVjaG8gIjwvdGV4dGFyZWE+IjsNCn0NCi8vIHJlYWQgZmlsZSBpZCAoICkgLy8NCmlmICgkX1BPU1RbJ3JpZCddICl7DQplY2hvICI8dGV4dGFyZWEgbWV0aG9kPSdQT1NUJyBjb2xzPSc5NScgcm93cz0nMzAnIHdyYXI9J29mZicgPiI7DQogZm9yKCR1aWQ9MDskdWlkPDYwMDAwOyR1aWQrKyl7ICAgLy9jYXQgL2V0Yy9wYXNzd2QNCiRhcmEgPSBwb3NpeF9nZXRwd3VpZCgkdWlkKTsNCiBpZiAoIWVtcHR5KCRhcmEpKSB7DQp3aGlsZSAobGlzdCAoJGtleSwgJHZhbCkgPSBlYWNoKCRhcmEpKXsNCnByaW50ICIkdmFsOiI7DQp9DQogcHJpbnQgIlxuIjsNCn0NCiB9DQplY2hvICI8L3RleHRhcmVhPiI7DQpicmVhazsNCg0KIH0NCi8vIHJlYWQgZmlsZSBpbWFwICggKSAvLw0KJHN0cmluZyA9ICFlbXB0eSgkX1BPU1RbJ3JpbWFwJ10pID8gJF9QT1NUWydyaW1hcCddIDogMDsNCmlmKGVtcHR5KCRfUE9TVFsncmltYXAnXSkpew0KfSBlbHNlIHsNCmVjaG8gIjx0ZXh0YXJlYSBtZXRob2Q9J1BPU1QnIGNvbHM9Jzk1JyByb3dzPSczMCcgd3Jhcj0nb2ZmJyA+IjsNCiRzdHJlYW0gPSBpbWFwX29wZW4oJHN0cmluZywgIiIsICIiKTsNCiRzdHIgPSBpbWFwX2JvZHkoJHN0cmVhbSwgMSk7DQplY2hvICI8L3RleHRhcmVhPiI7DQp9DQovLyByZWFkIGZpbGUgQ3VybCAoICkgLy8NCmlmKGVtcHR5KCRfUE9TVFsnY3VybCddKSl7DQp9IGVsc2Ugew0KZWNobyAiPHRleHRhcmVhIG1ldGhvZD0nUE9TVCcgY29scz0nOTUnIHJvd3M9JzMwJyB3cmFyPSdvZmYnID4iOw0KJG09JF9QT1NUWydjdXJsJ107DQokY2ggPQ0KY3VybF9pbml0KCJmaWxlOi8vLyIuJG0uIlx4MDAvLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vIi5fX0ZJTEVfXyk7DQpjdXJsX2V4ZWMoJGNoKTsNCnZhcl9kdW1wKGN1cmxfZXhlYygkY2gpKTsNCmVjaG8gIjwvdGV4dGFyZWE+IjsNCn0NCg0KLy8gcmVhZCBmaWxlIFNRTCAoICkgLy8NCmlmKGVtcHR5KCRfUE9TVFsnc3NxbCddKSl7DQp9IGVsc2Ugew0KZWNobyAiPHRleHRhcmVhIG1ldGhvZD0nUE9TVCcgY29scz0nOTUnIHJvd3M9JzMwJyB3cmFyPSdvZmYnID4iOw0KJGZpbGU9JF9QT1NUWydzc3FsJ107DQoNCg0KJG15c3FsX2ZpbGVzX3N0ciA9ICIvZXRjL3Bhc3N3ZDovcHJvYy9jcHVpbmZvOi9ldGMvcmVzb2x2LmNvbmY6L2V0Yy9wcm9mdHBkLmNvbmYiOw0KJG15c3FsX2ZpbGVzID0gZXhwbG9kZSgnOicsICRteXNxbF9maWxlc19zdHIpOw0KDQokc3FsID0gYXJyYXkgKA0KIlVTRSAkbWRiIiwNCidDUkVBVEUgVEVNUE9SQVJZIFRBQkxFICcgLiAoJHRibCA9ICdBJy50aW1lICgpKSAuICcgKGEgTE9OR0JMT0IpJywNCiJMT0FEIERBVEEgTE9DQUwgSU5GSUxFICckZmlsZScgSU5UTyBUQUJMRSAkdGJsIEZJRUxEUyAiDQouICJURVJNSU5BVEVEIEJZICAgICAgICdfX1RISVNfTkVWRVJfSEFQUEVOU19fJyAiDQouICJFU0NBUEVEIEJZICAgICAgICAgICcnICINCi4gIkxJTkVTIFRFUk1JTkFURUQgQlkgJ19fVEhJU19ORVZFUl9IQVBQRU5TX18nIiwNCg0KIlNFTEVDVCBhIEZST00gJHRibCBMSU1JVCAxIg0KKTsNCm15c3FsX2Nvbm5lY3QgKCRtaG9zdCwgJG11c2VyLCAkbXBhc3MpOw0KDQpmb3JlYWNoICgkc3FsIGFzICRzdGF0ZW1lbnQpIHsNCiAgICRxID0gbXlzcWxfcXVlcnkgKCRzdGF0ZW1lbnQpOw0KDQogICBpZiAoJHEgPT0gZmFsc2UpIGRpZSAoDQogICAgICAiRkFJTEVEOiAiIC4gJHN0YXRlbWVudCAuICJcbiIgLg0KICAgICAgIlJFQVNPTjogIiAuIG15c3FsX2Vycm9yICgpIC4gIlxuIg0KICAgKTsNCg0KICAgaWYgKCEgJHIgPSBAbXlzcWxfZmV0Y2hfYXJyYXkgKCRxLCBNWVNRTF9OVU0pKSBjb250aW51ZTsNCg0KICAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRyWzBdKTsNCiAgIG15c3FsX2ZyZWVfcmVzdWx0ICgkcSk7DQp9DQplY2hvICI8L3RleHRhcmVhPiI7DQp9DQoNCg0KDQovLyByZWFkIGZpbGUgY29weSAmIGluaSAoICkgLy8NCmlmIChpc3NldCAoJF9SRVFVRVNUWydzYWZlZmlsZSddKSl7DQokZmlsZT0kX1JFUVVFU1RbJ3NhZmVmaWxlJ107JHR5bWN6YXM9IiI7aWYoZW1wdHkoJGZpbGUpKXsNCmlmKGVtcHR5KCRfR0VUWydmaWxlJ10pKXtpZihlbXB0eSgkX1BPU1RbJ2ZpbGUnXSkpew0KcHJpbnQgIjxjZW50ZXI+WyBQbGVhc2UgY2hvb3NlIGEgZmlsZSBmaXJzdCB0byByZWFkIGl0IHVzaW5nIGNvcHkoKSBdPC9jZW50ZXI+IjsNCn0gZWxzZSB7JGZpbGU9JF9QT1NUWydmaWxlJ107fX0gZWxzZSB7JGZpbGU9JF9HRVRbJ2ZpbGUnXTt9fQ0KJHRlbXA9dGVtcG5hbSgkdHltY3phcywgImN4Iik7aWYoY29weSgiY29tcHJlc3MuemxpYjovLyIuJGZpbGUsICR0ZW1wKSl7DQokenJvZGxvID0gZm9wZW4oJHRlbXAsICJyIik7JHRla3N0ID0gZnJlYWQoJHpyb2RsbywgZmlsZXNpemUoJHRlbXApKTsNCmZjbG9zZSgkenJvZGxvKTtlY2hvICI8Y2VudGVyPjxwcmU+Ii4kc3RhLmh0bWxzcGVjaWFsY2hhcnMoJHRla3N0KS4kZXRhLiI8L3ByZT48L2NlbnRlcj4iO3VubGluaygkdGVtcCk7fSBlbHNlIHsNCnByaW50ICI8Rk9OVCBDT0xPUj1cIlJFRFwiPjxDRU5URVI+U29ycnksIENhbid0IHJlYWQgdGhlIHNlbGVjdGVkIGZpbGUgISENCjwvQ0VOVEVSPjwvRk9OVD48YnI+Ijt9fWlmIChpc3NldCAoJF9SRVFVRVNUWydpbmlmaWxlJ10pKXsNCmluaV9yZXN0b3JlKCJzYWZlX21vZGUiKTtpbmlfcmVzdG9yZSgib3Blbl9iYXNlZGlyIik7DQpwcmludCAiPGNlbnRlcj48cHJlPiIuJHN0YTsNCmlmIChpbmNsdWRlKGh0bWxzcGVjaWFsY2hhcnMoJF9SRVFVRVNUWydpbmlmaWxlJ10pKSl7fWVsc2Uge3ByaW50ICJTb3JyeSwgY2FuJ3QgcmVhZCB0aGUgc2VsZWN0ZWQgZmlsZSAhISI7fXByaW50ICRldGEuIjwvcHJlPjwvY2VudGVyPiI7fQ0KZGVsbSgiOiBTYWZlIG1vZGUgYnlwYXNzIDoiKTsNCnByaW50ICI8dGFibGUgYmdjb2xvcj0jMkEyQTJBIHN0eWxlPVwiYm9yZGVyOjJweCBzb2xpZCBibGFja1wiIHdpZHRoPTEwMCU+IjsNCnByaW50ICI8dHI+PHRkIHdpZHRoPTUwJT48ZGl2IGFsaWduPWxlZnQ+IjsNCnByaW50ICRzdC4kYzEuIjxkaXY+PGI+PGNlbnRlcj5Vc2luZyBjb3B5KCkgZnVuY3Rpb248L2Rpdj4iOw0KcHJpbnQgJGVjLiRjMi4kc2YuIiZuYnNwOyI7DQppbnB1dCgidGV4dCIsInNhZmVmaWxlIiwkbnNjZGlyLDc1KTsNCmlucHV0KCJoaWRkZW4iLCJzY2RpciIsJG5zY2RpciwwKTtwcmludCAiICI7DQppbnB1dCgic3VibWl0IiwiIiwiUmVhZC1GIiwiIik7cHJpbnQgIjwvY2VudGVyPiIuJGVjLiRlZi4kZXQ7DQpwcmludCAiPC90ZD48dGQgaGVpZ2h0PTIwJSB3aWR0aD01MCU+PGRpdiBhbGlnbj1yaWdodD4iOw0KcHJpbnQgJHN0LiRjMS4iPGRpdj48Yj48Y2VudGVyPlVzaW5nIGluaV9yZXN0b3JlKCkgZnVuY3Rpb248L2Rpdj4iOw0KcHJpbnQgJGVjLiRjMi4kc2YuIiZuYnNwOyI7DQppbnB1dCgidGV4dCIsImluaWZpbGUiLCRuc2NkaXIsNzUpOw0KaW5wdXQoImhpZGRlbiIsInNjZGlyIiwkbnNjZGlyLDApO3ByaW50ICIgIjsNCmlucHV0KCJzdWJtaXQiLCIiLCJSZWFkLUYiLCIiKTtwcmludCAiPC9jZW50ZXI+Ii4kZWMuJGVmLiRldDsNCnByaW50ICI8L3RkPjwvdHI+PC90YWJsZT4iOw0KcHJpbnQgIjx0YWJsZSBiZ2NvbG9yPSMyQTJBMkEgc3R5bGU9XCJib3JkZXI6MnB4IHNvbGlkIGJsYWNrXCIgd2lkdGg9MTAwJT4iOw0KcHJpbnQgIjx0cj48dGQgd2lkdGg9NTAlPjxkaXYgYWxpZ249bGVmdD4iOw0KcHJpbnQgJHN0LiRjMS4iPGRpdj48Yj48Y2VudGVyPlVzaW5nIHNxbCgpIGZ1bmN0aW9uPC9kaXY+IjsNCnByaW50ICRlYy4kYzIuJHNmLiImbmJzcDsiOw0KaW5wdXQoInRleHQiLCJzc3FsIiwkbnNjZGlyLDc1KTsNCmlucHV0KCJoaWRkZW4iLCJzY2RpciIsJG5zY2RpciwwKTtwcmludCAiICI7DQppbnB1dCgic3VibWl0IiwiIiwiUmVhZC1GIiwiIik7cHJpbnQgIjwvY2VudGVyPiIuJGVjLiRlZi4kZXQ7DQpwcmludCAiPC90ZD48dGQgaGVpZ2h0PTIwJSB3aWR0aD01MCU+PGRpdiBhbGlnbj1yaWdodD4iOw0KcHJpbnQgJHN0LiRjMS4iPGRpdj48Yj48Y2VudGVyPlVzaW5nIEN1cmwoKSBmdW5jdGlvbjwvZGl2PiI7DQpwcmludCAkZWMuJGMyLiRzZi4iJm5ic3A7IjsNCmlucHV0KCJ0ZXh0IiwiY3VybCIsJG5zY2Rpciw3NSk7DQppbnB1dCgiaGlkZGVuIiwic2NkaXIiLCRuc2NkaXIsMCk7cHJpbnQgIiAiOw0KaW5wdXQoInN1Ym1pdCIsIiIsIlJlYWQtRiIsIiIpO3ByaW50ICI8L2NlbnRlcj4iLiRlYy4kZWYuJGV0Ow0KcHJpbnQgIjwvdGQ+PC90cj48L3RhYmxlPiI7DQpwcmludCAiPHRhYmxlIGJnY29sb3I9IzJBMkEyQSBzdHlsZT1cImJvcmRlcjoycHggc29saWQgYmxhY2tcIiB3aWR0aD0xMDAlPiI7DQpwcmludCAiPHRyPjx0ZCB3aWR0aD01MCU+PGRpdiBhbGlnbj1sZWZ0PiI7DQpwcmludCAkc3QuJGMxLiI8ZGl2PjxiPjxjZW50ZXI+VXNpbmcgaW1hcCgpIGZ1bmN0aW9uPC9kaXY+IjsNCnByaW50ICRlYy4kYzIuJHNmLiImbmJzcDsiOw0KaW5wdXQoInRleHQiLCJyaW1hcCIsJG5zY2Rpciw3NSk7DQppbnB1dCgiaGlkZGVuIiwic2NkaXIiLCRuc2NkaXIsMCk7cHJpbnQgIiAiOw0KaW5wdXQoInN1Ym1pdCIsIiIsIlJlYWQtRiIsIiIpO3ByaW50ICI8L2NlbnRlcj4iLiRlYy4kZWYuJGV0Ow0KcHJpbnQgIjwvdGQ+PHRkIGhlaWdodD0yMCUgd2lkdGg9NTAlPjxkaXYgYWxpZ249cmlnaHQ+IjsNCnByaW50ICRzdC4kYzEuIjxkaXY+PGI+PGNlbnRlcj5Vc2luZyBpZCgpIGZ1bmN0aW9uPC9kaXY+IjsNCnByaW50ICRlYy4kYzIuJHNmLiImbmJzcDsiOw0KaW5wdXQoInRleHQiLCJyaWQiLCRuc2NkaXIsNzUpOw0KaW5wdXQoImhpZGRlbiIsInNjZGlyIiwkbnNjZGlyLDApO3ByaW50ICIgIjsNCmlucHV0KCJzdWJtaXQiLCIiLCJSZWFkLUYiLCIiKTtwcmludCAiPC9jZW50ZXI+Ii4kZWMuJGVmLiRldDsNCnByaW50ICI8L3RkPjwvdHI+PC90YWJsZT4iOw0KcHJpbnQgIjx0YWJsZSBiZ2NvbG9yPSMyQTJBMkEgc3R5bGU9XCJib3JkZXI6MnB4IHNvbGlkIGJsYWNrXCIgd2lkdGg9MTAwJT4iOw0KcHJpbnQgIjx0cj48dGQgd2lkdGg9NTAlPjxkaXYgYWxpZ249bGVmdD4iOw0KcHJpbnQgJHN0LiRjMS4iPGRpdj48Yj48Y2VudGVyPlVzaW5nIHBsdWdpbigpIGZ1bmN0aW9uPC9kaXY+IjsNCnByaW50ICRlYy4kYzIuJHNmLiImbmJzcDsiOw0KaW5wdXQoInRleHQiLCJwbHVnaW4iLCRuc2NkaXIsNzUpOw0KaW5wdXQoImhpZGRlbiIsInNjZGlyIiwkbnNjZGlyLDApO3ByaW50ICIgIjsNCmlucHV0KCJzdWJtaXQiLCIiLCJSZWFkLUYiLCIiKTtwcmludCAiPC9jZW50ZXI+Ii4kZWMuJGVmLiRldDsNCnByaW50ICI8L3RkPjx0ZCBoZWlnaHQ9MjAlIHdpZHRoPTUwJT48ZGl2IGFsaWduPXJpZ2h0PiI7DQpwcmludCAkc3QuJGMxLiI8ZGl2PjxiPjxjZW50ZXI+VXNpbmcgc3ltbGluaygpIGZ1bmN0aW9uPC9kaXY+IjsNCnByaW50ICRlYy4kYzIuJHNmLiImbmJzcDsiOw0KaW5wdXQoInRleHQiLCJzeW0iLCRuc2NkaXIsNzUpOw0KaW5wdXQoImhpZGRlbiIsInNjZGlyIiwkbnNjZGlyLDApO3ByaW50ICIgIjsNCmlucHV0KCJzdWJtaXQiLCIiLCJSZWFkLUYiLCIiKTtwcmludCAiPC9jZW50ZXI+Ii4kZWMuJGVmLiRldDsNCnByaW50ICI8L3RkPjwvdHI+PC90YWJsZT4iOw0KZGVsbSgiOiBVbnplbmQgQ29uZmlnIDoiKTsNCnByaW50ICI8dGFibGUgYmdjb2xvcj0jMkEyQTJBIHN0eWxlPVwiYm9yZGVyOjJweCBzb2xpZCBibGFja1wiIHdpZHRoPTEwMCU+IjsNCnByaW50ICI8dHI+PHRkIHdpZHRoPTUwJT48ZGl2IGFsaWduPWxlZnQ+IjsNCnByaW50ICRzdC4kYzEuIjxkaXY+PGI+PGNlbnRlcj5Db25uZWN0IFRvIEZ1bmN0aW9ucyBPZiBDb25maWc8L2Rpdj4iOw0KcHJpbnQgJGVjLiRjMi4kc2YuIiZuYnNwOyI7DQppbnB1dCgidGV4dCIsImZ1bmMiLCRuc2NkaXIsNzUpOw0KaW5wdXQoImhpZGRlbiIsInNjZGlyIiwkbnNjZGlyLDApO3ByaW50ICIgIjsNCmlucHV0KCJzdWJtaXQiLCIiLCJSZWFkLUYiLCIiKTtwcmludCAiPC9jZW50ZXI+Ii4kZWMuJGVmLiRldDsNCnByaW50ICI8L3RkPjwvdHI+PC90YWJsZT4iOw0KPz48Pw0KcHJpbnQgIjxicj48dGFibGUgYmdjb2xvcj0jMTkxOTE5IHN0eWxlPVwiYm9yZGVyOjJweCAjZGFkYWRhIHNvbGlkIFwiIHdpZHRoPTEwMCUgaGVpZ2h0PSU+IjsgDQpwcmludCI8dHI+PHRkPjxmb250IHNpemU9MiBmYWNlPXRhaG9tYT4iOyANCnByaW50IjxjZW50ZXI+Q29kZXIgQnkgRGFySyBjMGQzciA8YnI+WyBUZWFtIHNhLWhhY2tlciA6OiBHbyB0byA6IDxhIHRhcmdldD0nX2JsYW5rJyBocmVmPSdodHRwOi8vd3d3LnNhLWhhY2tlci5jb20nPmh0dHA6Ly93d3cuc2EtaGFja2VyLmNvbTwvYT4gXSI7IA0KcHJpbnQiPC9mb250PjwvdGQ+PC90cj48L3RhYmxlPiI7DQo/Pg0KPFBIUA0KDQp9DQoNCi8vVmJ1bGxldGluIGNvbmZpZyBkZWNvZGVyDQpmdW5jdGlvbiBlZGVjb2RlKCkNCnsNCj8+CQ0KPD8NCi8qPT09PT09PT09PT09PT09PSpcDQp8fCAjIyMjIyMjIyMjIyMjIyMgfHwNCnx8ICMgSC1UIG9NWzNdR2EgIyB8fA0KfHwgIyMjIyMjIyMjIyMjIyMjIHx8DQpcKj09PT09PT09PT09PT09PT0qLw0KPz4NCjx0aXRsZT5pb25DdWJlICYgWmVuZCBEZWNvZGVyPC90aXRsZT4NCjxmb3JtIG5hbWU9ImZvcm0iIGFjdGlvbj0iP2E9ZGVjb2RlIiBtZXRob2Q9InBvc3QiPg0KPHRyPjx0ZD48aW5wdXQgbmFtZT0iZmlsZSIgdmFsdWU9ImNvbmZpZy5waHAiIC8+PC90ZD48L3RyPg0KPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0iQ29ubmVjdCIgdmFsdWU9IkRlY29kZSIgLz4NCjxicj4NCjw/DQokYSA9ICRfR0VUWydhJ107DQppZigkYT09J2RlY29kZScgJiYgaXNzZXQoJF9QT1NUWydmaWxlJ10pKQ0Kew0KJGZpbGUgPSAkX1BPU1RbJ2ZpbGUnXTsNCmluY2x1ZGUgJGZpbGU7DQo/Pg0KPD8gZWNobyAkY29uZmlnWydNYXN0ZXJTZXJ2ZXInXVsnc2VydmVybmFtZSddLiJcbiI7ID8+PGJyPg0KPD8gZWNobyAkY29uZmlnWydEYXRhYmFzZSddWydkYm5hbWUnXS4iXG4iOyA/Pjxicj4NCjw/IGVjaG8gJGNvbmZpZ1snTWFzdGVyU2VydmVyJ11bJ3VzZXJuYW1lJ10uIlxuIjsgPz48YnI+DQo8PyBlY2hvICRjb25maWdbJ01hc3RlclNlcnZlciddWydwYXNzd29yZCddLiJcbiI7ID8+PGJyPg0KPD8NCn0NCmlmICgkYT09J2NvbmZpZycpDQp7DQp9DQo/Pg0KPD9QSFANCg0KfQ0KDQovL1BocCA0IEJhY2sNCmZ1bmN0aW9uIGVwaHA0KCkNCnsNCglAdW5saW5rKCcuaHRhY2Nlc3MnKTsNCiRIID0gZm9wZW4oJy5odGFjY2VzcycsJ3crJyk7DQokU3RyID0gJzxGaWxlcyAqLnBocD4NCiAgIEZvcmNlVHlwZSBhcHBsaWNhdGlvbi94LWh0dHBkLXBocDQNCjwvRmlsZXM+JzsNCmlmKGZ3cml0ZSgkSCwkU3RyKSl7DQplY2hvICJbK10gRXZpbCBGaWxlIENyZWF0ZWQgU3VjY2VzICEgXG4iOw0KfQ0KZmNsb3NlKCRIKTsNCmJyZWFrOw0KDQp9DQoNCi8vUGhwIDQueCBCeXBhc3MNCmZ1bmN0aW9uIGU0NDQoKQ0Kew0KDQo/Pg0KPD8NCi8qDQp3d3cuc2VjdXJpdHl3YWxsLm9yZyANClNhZmUgTW9kZSBDb21tYW5kIEV4ZWN1dGlvbiBTaGVsbA0KKi8NCmZ1bmN0aW9uIHNhZmVzaGVsbCgka29tdXQpIA0KeyANCmluaV9yZXN0b3JlKCJzYWZlX21vZGUiKTsNCmluaV9yZXN0b3JlKCJvcGVuX2Jhc2VkaXIiKTsNCiAkcmVzID0gJyc7IA0KIGlmICghZW1wdHkoJGtvbXV0KSkgDQogeyANCmlmKGZ1bmN0aW9uX2V4aXN0cygnZXhlYycpKSANCnsgDQogQGV4ZWMoJGtvbXV0LCRyZXMpOyANCiAkcmVzID0gam9pbigiXG4iLCRyZXMpOyANCn0gDQplbHNlaWYoZnVuY3Rpb25fZXhpc3RzKCdzaGVsbF9leGVjJykpIA0KeyANCiAkcmVzID0gQHNoZWxsX2V4ZWMoJGtvbXV0KTsgDQp9IA0KZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygnc3lzdGVtJykpIA0KeyANCiBAb2Jfc3RhcnQoKTsgDQogQHN5c3RlbSgka29tdXQpOyANCiAkcmVzID0gQG9iX2dldF9jb250ZW50cygpOyANCiBAb2JfZW5kX2NsZWFuKCk7IA0KfSANCmVsc2VpZihmdW5jdGlvbl9leGlzdHMoJ3Bhc3N0aHJ1JykpIA0KeyANCiBAb2Jfc3RhcnQoKTsgDQogQHBhc3N0aHJ1KCRrb211dCk7IA0KICRyZXMgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7IA0KIEBvYl9lbmRfY2xlYW4oKTsgDQp9IA0KZWxzZWlmKEBpc19yZXNvdXJjZSgkZiA9IEBwb3Blbigka29tdXQsInIiKSkpIA0KeyANCiRyZXMgPSAiIjsgDQp3aGlsZSghQGZlb2YoJGYpKSB7ICRyZXMgLj0gQGZyZWFkKCRmLDEwMjQpOyB9IA0KQHBjbG9zZSgkZik7IA0KfSANCiB9IA0KIHJldHVybiAkcmVzOyANCn0NCmVjaG8gIjxiPjxmb250IGNvbG9yPWJsdWU+U2FmZSBNb2RlIENvbW1hbmQgRXhlY3V0aW9uIEJ5cGFzcyBFeHBsb2l0PC9mb250PjwvYj48YnI+IjsNCnByaW50X3IoJw0KPHByZT4NCjxmb3JtIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIiPg0KPGI+PGZvbnQgY29sb3I9Ymx1ZT5Db21tYW5kIDo8L2ZvbnQ+PC9iPjxpbnB1dCBuYW1lPSJiYWJhIiB0eXBlPSJ0ZXh0Ij48aW5wdXQgdmFsdWU9IkV4ZWN1dGUiIHR5cGU9InN1Ym1pdCI+DQo8L2Zvcm0+DQo8Zm9ybSBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iIj4NCjxiPjxmb250IGNvbG9yPWJsdWU+UmVhZHkgQ29tbWFuZCA6PSkgOjwvZm9udD48c2VsZWN0IHNpemU9IjEiIG5hbWU9ImxpejAiPg0KPG9wdGlvbiB2YWx1ZT0iY2F0IC9ldGMvcGFzc3dkIj4vZXRjL3Bhc3N3ZDwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0ibmV0c3RhdCAtYW4gfCBncmVwIC1pIGxpc3RlbiI+QWxsIG9wZW4gUG9ydGFsYXJpIEdvcjwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iY2F0IC92YXIvY3BhbmVsL2FjY291bnRpbmcubG9nIj4vdmFyL2NwYW5lbC9hY2NvdW50aW5nLmxvZzwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iY2F0IC9ldGMvc3lzbG9nLmNvbmYiPi9ldGMvc3lzbG9nLmNvbmY8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9ImNhdCAvZXRjL2hvc3RzIj4vZXRjL2hvc3RzPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSJjYXQgL2V0Yy9uYW1lZC5jb25mIj4vZXRjL25hbWVkLmNvbmY8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9ImNhdCAvZXRjL2h0dHBkL2NvbmYvaHR0cGQuY29uZiI+L2V0Yy9odHRwZC9jb25mL2h0dHBkLmNvbmY8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9ImxzIC1sYSAvZXRjL3ZpcnR1YWwiPmxzIC1sYSAvZXRjL3ZpcnR1YWw8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9ImxzIC1sYSAvZXRjL3Zkb21haW5hbGlhc2VzIj5scyAtbGEgL2V0Yy92ZG9tYWluYWxpYXNlczwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0ibHMgLWxhIC9ldGMvdmZpbHRlcnMiPmxzIC1sYSAvZXRjL3ZmaWx0ZXJzPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSJmaW5kIFBBVEggLXBlcm0gNzc3IC10eXBlIGQiPll6aWxhYmlsaXIgRGlyZWN0b3JpZXM8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9ImNhdCAvZXRjL3Bhc3N3ZCB8IGdyZXAgY3BhbmVsID4gMTtjYXQgMSI+cDE8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9ImN1dCAtZDogLWYgNiAxID4yO2NhdCAyIj5wMjwvb3B0aW9uPg0KPC9zZWxlY3Q+IDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJTb251YyI+DQo8L2Zvcm0+DQo8L3ByZT4NCicpOw0KaW5pX3Jlc3RvcmUoInNhZmVfbW9kZSIpOw0KaW5pX3Jlc3RvcmUoIm9wZW5fYmFzZWRpciIpOw0KaWYoJF9QT1NUW2JhYmFdIT0gIiIpIHsgJGxpejA9c2FmZXNoZWxsKCRfUE9TVFtiYWJhXSk7IH0NCmlmKCRfUE9TVFtsaXowXSE9ICIiKSB7ICRsaXowemltPXNhZmVzaGVsbCgkX1BPU1RbbGl6MF0pOyB9DQokdWlkPXNhZmVzaGVsbCgnaWQnKTsNCiRzZXJ2ZXI9c2FmZXNoZWxsKCd1bmFtZSAtYScpOw0KZWNobyAiPHByZT48aDQ+IjsNCmVjaG8gIjxiPjxmb250IGNvbG9yPXJlZD5JbmZvcm1hdGlvbjo8L2ZvbnQ+PC9iPjokdWlkPGJyPiI7DQplY2hvICI8Yj48Zm9udCBjb2xvcj1yZWQ+U2VydmVyPC9mb250PjwvYj46JHNlcnZlcjxicj4iOw0KZWNobyAiPGI+PGZvbnQgY29sb3I9cmVkPkNvbW1hbmQgUmVzdWx0czo8L2ZvbnQ+PC9iPjxicj4iOyANCmlmKCRfUE9TVFsiYmFiYSJdIT0gIiIpIHsgZWNobyAkbGl6MDsgfQ0KaWYoJF9QT1NUWyJsaXowIl0hPSAiIikgeyBlY2hvICRsaXowemltOyB9DQplY2hvICI8L2g0PjwvcHJlPiI7DQo/Pg0KPD9waHANCn0NCg0KDQovL1BlcmwgY2dpDQpmdW5jdGlvbiBlY2dpKCkNCnsNCg0KJGtva2Rvc3lhID0gIi5odGFjY2VzcyI7DQoNCiRkb3N5YV9hZGkgPSAiJGtva2Rvc3lhIjsNCiRkb3N5YSA9IGZvcGVuICgkZG9zeWFfYWRpICwgJ3cnKSBvciBkaWUgKCJEb3N5YSBhJiMyMzE7JiMzMDU7bGFtYWQmIzMwNTshIik7DQokbWV0aW4gPSAiT3B0aW9ucyBGb2xsb3dTeW1MaW5rcyBNdWx0aVZpZXdzIEluZGV4ZXMgRXhlY0NHSQ0KDQpBZGRUeXBlIGFwcGxpY2F0aW9uL3gtaHR0cGQtY2dpIC5zYQ0KDQpBZGRIYW5kbGVyIGNnaS1zY3JpcHQgLnNhDQpBZGRIYW5kbGVyIGNnaS1zY3JpcHQgLnNhIjsJDQpmd3JpdGUgKCAkZG9zeWEgLCAkbWV0aW4gKSA7DQpmY2xvc2UgKCRkb3N5YSk7DQoNCj8+DQo8P3BocCANCg0KJGZpbGUgPSBmb3BlbigiaXpvLnNhIiAsIncrIik7IA0KDQokc2E9ZmlsZV9nZXRfY29udGVudHMoJ2h0dHA6Ly93d3cucm9oaXRhYi5jb20vY2dpc2NyaXB0cy9jZ2l0ZWxuZXQudHh0Jyk7IA0KDQokd3JpdGUgPSBmd3JpdGUgKCRmaWxlICwkc2EpOyANCg0KZmNsb3NlKCRmaWxlKTsgDQoNCmlmICgkd3JpdGUpIHsgDQoNCmVjaG8gIlRoZSBGaWxlIFdhcyBDcmVhdGVkIFN1Y2Nlc3NmdWx5LjwvYnI+IjsgDQoNCn0gDQplbHNlIHtlY2hvJyJlcnJvciInO30gDQoNCiRjaG0gPSBjaG1vZCgiaXpvLnNhIiAsIDA3NTUpOyANCg0KaWYgKCRjaG0gPT0gdHJ1ZSl7IA0KICAgIGVjaG8gImNobW9kZWQgdGhlIGZpbGUgdG8gNzU1IjsgDQp9ZWxzZXsgDQogICAgZWNobyAic29ycnkgZmlsZSBkaWRuJ3QgY2htb2RlZCI7IA0KfSANCj8+DQo8P3BocA0KfQ0KDQovL2xuIC1zIGJ5cGFzcw0KZnVuY3Rpb24gZWxucygpDQp7DQoNCiRrb2tkb3N5YSA9ICIuaHRhY2Nlc3MiOw0KDQokZG9zeWFfYWRpID0gIiRrb2tkb3N5YSI7DQokZG9zeWEgPSBmb3BlbiAoJGRvc3lhX2FkaSAsICd3Jykgb3IgZGllICgiRG9zeWEgYSYjMjMxOyYjMzA1O2xhbWFkJiMzMDU7ISIpOw0KJG1ldGluID0gIk9wdGlvbnMgK0ZvbGxvd1N5bUxpbmtzDQpEaXJlY3RvcnlJbmRleCBzZWVlcy5odG1sDQpSZW1vdmVIYW5kbGVyIC5waHANCiI7CQ0KZndyaXRlICggJGRvc3lhICwgJG1ldGluICkgOw0KZmNsb3NlICgkZG9zeWEpOw0KDQp9DQoNCi8vQXBhY2hpIEJ5cGFzcw0KZnVuY3Rpb24gZWFwYWNoaSgpDQp7DQoNCiRrb2tkb3N5YSA9ICIuaHRhY2Nlc3MiOw0KDQokZG9zeWFfYWRpID0gIiRrb2tkb3N5YSI7DQokZG9zeWEgPSBmb3BlbiAoJGRvc3lhX2FkaSAsICd3Jykgb3IgZGllICgiRG9zeWEgYSYjMjMxOyYjMzA1O2xhbWFkJiMzMDU7ISIpOw0KJG1ldGluID0gIjxJZk1vZHVsZSBtb2Rfc2VjdXJpdHkuYz4NCiBTZWNGaWx0ZXJFbmdpbmUgT2ZmDQogU2VjRmlsdGVyU2NhblBPU1QgT2ZmDQo8L0lmTW9kdWxlPiI7CQ0KZndyaXRlICggJGRvc3lhICwgJG1ldGluICkgOw0KZmNsb3NlICgkZG9zeWEpOw0KCQ0KDQp9DQoNCg0KLy9Xb3JraW5nIHdpdGggTXlTUUwNCmZ1bmN0aW9uIGVteXNxbCgpDQp7DQoJJGNxdWVyeSA9ICRfUE9TVFsncXVlcnknXTsNCgkkcXVlcnlzID0gQGV4cGxvZGUoJzsnLCRjcXVlcnkpOw0KCSRkYmhvc3QgPSAkX1BPU1RbJ2RiaG9zdCddPyRfUE9TVFsnZGJob3N0J106ImxvY2FsaG9zdCI7DQoJJGRicG9ydCA9ICRfUE9TVFsnZGJwb3J0J10/JF9QT1NUWydkYnBvcnQnXToiMzMwNiI7DQoJJGRidXNlciA9ICRfUE9TVFsnZGJ1c2VyJ107DQoJJGRicGFzcyA9ICRfUE9TVFsnZGJwYXNzJ107DQoJJGRibmFtZSA9ICRfUE9TVFsnZGJuYW1lJ107DQoJaWYgKCRjcXVlcnkgID09ICIiKSB7DQoJCSRjcXVlcnkgID0gIi0tIFNIT1cgREFUQUJBU0VTO1xuLS0gU0hPVyBUQUJMRVMgRlJPTSA8ZGF0YWJhc2U+O1xuLS0gU0hPVyBDT0xVTU5TIEZST00gPHRhYmxlPjsiOw0KCX0NCgllY2hvICcNCgk8Y2VudGVyPjxoMz4gV29ya2luZyB3aXRoIE15U1FMIDwvaDM+PC9jZW50ZXI+DQoJPGNlbnRlcj4NCgk8Zm9ybSBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iIj4NCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpZCIgdmFsdWU9Im15c3FsIj4NCglEQkhvc3Q6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSI4IiBuYW1lPSJkYmhvc3QiIHZhbHVlPSInLCRkYmhvc3QsJyIgY2xhc3M9ImlucHV0IiAvPiZuYnNwOw0KCURCUG9ydDogPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjUiIG5hbWU9ImRicG9ydCIgdmFsdWU9IicsJGRicG9ydCwnIiBjbGFzcz0iaW5wdXQiIC8+Jm5ic3A7DQoJREJVc2VyOiA8aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iMTAiIG5hbWU9ImRidXNlciIgdmFsdWU9IicsJGRidXNlciwnIiBjbGFzcz0iaW5wdXQiIC8+Jm5ic3A7DQoJREJQYXNzOiA8aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iMTAiIG5hbWU9ImRicGFzcyIgdmFsdWU9IicsJGRicGFzcywnIiBjbGFzcz0iaW5wdXQiIC8+Jm5ic3A7DQoJREJOYW1lOiA8aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iMTAiIG5hbWU9ImRibmFtZSIgdmFsdWU9IicsJGRibmFtZSwnIiBjbGFzcz0iaW5wdXQiIC8+PGJyPjxicj4NCgk8dGV4dGFyZWEgbmFtZSA9InF1ZXJ5IiByb3dzPSI3IiBjb2xzPTkwIGNsYXNzPSJ0ZXh0YXJlYSI+JywkY3F1ZXJ5LCc8L3RleHRhcmVhPjxicj48YnI+DQoJPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0iZ28iIHZhbHVlPSIgICAgIEdvICAgICAiIGNsYXNzPSJidXR0b24iPg0KCTwvZm9ybT4nOw0KCWlmKCRfUE9TVFsnZ28nXSkgew0KCQkkY29ubmVjdCA9IEBteXNxbF9jb25uZWN0KCRkYmhvc3QuIjoiLiRkYnBvcnQsICRkYnVzZXIsICRkYnBhc3MpOw0KDQoJCWlmICghJGNvbm5lY3QpCXsgZWNobyAnPHRleHRhcmVhIHJvd3M9MyBjb2xzPTgwIGNsYXNzPSJ0ZXh0YXJlYSI+Q291bGQgbm90IGNvbm5lY3Q6ICcsbXlzcWxfZXJyb3IoKSwnPC90ZXh0YXJlYT4nOwl9DQoJCWVsc2Ugew0KCQkJQG15c3FsX3NlbGVjdF9kYigkZGJuYW1lLCAkY29ubmVjdCk7DQoJCQllY2hvICc8ZGl2IHN0eWxlPSJvdmVyZmxvdzphdXRvOyBoZWlnaHQ6NDAwcHg7d2lkdGg6MTAwMHB4OyI+JzsNCgkJCWZvcmVhY2goJHF1ZXJ5cyBhcyAkbnVtPT4kcXVlcnkpew0KCQkJCWlmKHN0cmxlbigkcXVlcnkpPjUpew0KCQkJCQllY2hvICc8Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMiBjb2xvcj1vcmFuZ2U+PGI+UXVlcnkjJy4kbnVtLicgOiAnLmh0bWxzcGVjaWFsY2hhcnMoJHF1ZXJ5KS4nPC9iPjwvZm9udD48YnI+JzsNCgkJCQkJJHJlcyA9IEBteXNxbF9xdWVyeSgkcXVlcnksJGNvbm5lY3QpOw0KCQkJCQkkZXJyb3IgPSBAbXlzcWxfZXJyb3IoJGNvbm5lY3QpOw0KCQkJCQlpZigkZXJyb3IpIHsgZWNobyAnPHRhYmxlIHdpZHRoPTEwMCU+PHRyPjx0ZD48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj5FcnJvciA6IDxiPicuJGVycm9yLic8L2I+PC9mb250PjwvdGQ+PC90cj48L3RhYmxlPjxicj4nOyB9DQoJCQkJCWVsc2Ugew0KCQkJCQkJaWYgKEBteXNxbF9udW1fcm93cygkcmVzKSA+IDApew0KCQkJCQkJCSRzcWwyID0gJHNxbCA9ICRrZXlzID0gJHZhbHVlcyA9ICcnOw0KCQkJCQkJCXdoaWxlICgoJHJvdyA9IEBteXNxbF9mZXRjaF9hc3NvYygkcmVzKSkpew0KCQkJCQkJCQkka2V5cyA9IEBpbXBsb2RlKCcmbmJzcDs8L2I+PC9mb250PjwvdGQ+PHRkIGJnY29sb3I9Ymx1ZT48Zm9udCBjb2xvcj13aGl0ZSBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj4mbmJzcDsnLCBAYXJyYXlfa2V5cygkcm93KSk7DQoJCQkJCQkJCSR2YWx1ZXMgPSBAYXJyYXlfdmFsdWVzKCRyb3cpOw0KCQkJCQkJCQlmb3JlYWNoKCR2YWx1ZXMgYXMgJGs9PiR2KSB7ICR2YWx1ZXNbJGtdID0gaHRtbHNwZWNpYWxjaGFycygkdik7fQ0KCQkJCQkJCQkkdmFsdWVzID0gQGltcGxvZGUoJyZuYnNwOzwvZm9udD48L3RkPjx0ZD48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj4mbmJzcDsnLCR2YWx1ZXMpOw0KCQkJCQkJCQkkc3FsMiAuPSAnPHRyPjx0ZD48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj4mbmJzcDsnLiR2YWx1ZXMuJyZuYnNwOzwvZm9udD48L3RkPjwvdHI+JzsNCgkJCQkJCQl9DQoJCQkJCQkJZWNobyAnPHRhYmxlIHdpZHRoPTEwMCU+JzsNCgkJCQkJCQkkc3FsICA9ICc8dHI+PHRkIGJnY29sb3I9Ymx1ZT48Zm9udCBmYWNlPVZlcmRhbmEgY29sb3I9d2hpdGUgc2l6ZT0tMj48Yj4mbmJzcDsnLiRrZXlzLicmbmJzcDs8L2I+PC9mb250PjwvdGQ+PC90cj4nOw0KCQkJCQkJCSRzcWwgLj0gJHNxbDI7DQoJCQkJCQkJZWNobyAkc3FsOw0KCQkJCQkJCWVjaG8gJzwvdGFibGU+PGJyPic7DQoJCQkJCQl9DQoJCQkJCQllbHNlIHsgaWYoKCRyb3dzID0gQG15c3FsX2FmZmVjdGVkX3Jvd3MoJGNvbm5lY3QpKT49MCkgeyBlY2hvICc8dGFibGUgd2lkdGg9MTAwJT48dHI+PHRkPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPmFmZmVjdGVkIHJvd3MgOiA8Yj4nLiRyb3dzLic8L2I+PC9mb250PjwvdGQ+PC90cj48L3RhYmxlPjxicj4nOyB9IH0NCgkJCQkJfQ0KCQkJCQlAbXlzcWxfZnJlZV9yZXN1bHQoJHJlcyk7DQoJCQkJfQ0KCQkJfQ0KCQkJZWNobyAnPC9kaXY+PGJyPic7DQoJCQlAbXlzcWxfY2xvc2UoJGNvbm5lY3QpOw0KCQl9DQoJfQ0KfQ0KDQoNCi8vQmFjayBDb25uZWN0DQpmdW5jdGlvbiBlYmFjaygpDQp7DQoJJGJjX3Blcmw9Ikl5RXZkWE55TDJKcGJpOXdaWEpzRFFwMWMyVWdVMjlqYTJWME93MEtKR050WkQwZ0lteDVibmdpT3cwS0pITjVjM1JsYlQwZ0oyVmphRzhnSW1CMWJtRnRaU0F0WVdBaU8yVmoNCmFHOGdJbUJwWkdBaU95OWlhVzR2YzJnbk93MEtKREE5SkdOdFpEc05DaVIwWVhKblpYUTlKRUZTUjFaYk1GMDdEUW9rY0c5eWREMGtRVkpIVmxzeFhUc05DaVJwWVdSa2NqMXBibVYwWDJGMGIyNG9KSFINCmhjbWRsZENrZ2ZId2daR2xsS0NKRmNuSnZjam9nSkNGY2JpSXBPdzBLSkhCaFpHUnlQWE52WTJ0aFpHUnlYMmx1S0NSd2IzSjBMQ0FrYVdGa1pISXBJSHg4SUdScFpTZ2lSWEp5YjNJNklDUWhYRzRpS1QNCnNOQ2lSd2NtOTBiejFuWlhSd2NtOTBiMko1Ym1GdFpTZ25kR053SnlrN0RRcHpiMk5yWlhRb1UwOURTMFZVTENCUVJsOUpUa1ZVTENCVFQwTkxYMU5VVWtWQlRTd2dKSEJ5YjNSdktTQjhmQ0JrYVdVb0kNCmtWeWNtOXlPaUFrSVZ4dUlpazdEUXBqYjI1dVpXTjBLRk5QUTB0RlZDd2dKSEJoWkdSeUtTQjhmQ0JrYVdVb0lrVnljbTl5T2lBa0lWeHVJaWs3RFFwdmNHVnVLRk5VUkVsT0xDQWlQaVpUVDBOTFJWUWkNCktUc05DbTl3Wlc0b1UxUkVUMVZVTENBaVBpWlRUME5MUlZRaUtUc05DbTl3Wlc0b1UxUkVSVkpTTENBaVBpWlRUME5MUlZRaUtUc05Dbk41YzNSbGJTZ2tjM2x6ZEdWdEtUc05DbU5zYjNObEtGTlVSRWwNCk9LVHNOQ21Oc2IzTmxLRk5VUkU5VlZDazdEUXBqYkc5elpTaFRWRVJGVWxJcE93PT0iOw0KCWVjaG8gJw0KCTxwIGFsaWduPSJjZW50ZXIiPjxmb250IHNpemU9IjUiPjxiPiBCYWNrIENvbm5lY3RpbmcgPC9iPjwvZm9udD48L3A+DQoJPHAgYWxpZ249ImNlbnRlciI+PGZvbnQgY29sb3I9IiNERDgwMDgiPlJ1biBOZXRDYXQgb24geW91ciBtYWNoaW5lOjwvZm9udD48aT48Zm9udCBjb2xvcj0iI0ZGMDAwMCI+IG5jIC1sIC1wIDE1NDI8L2ZvbnQ+PC9pPg0KCTwvcD48YnI+PGhyPjxicj48cCBhbGlnbj0iY2VudGVyIj48Zm9udCBjb2xvcj0iI0REODAwOCI+VGhlbiBpbnB1dCB5b3VyIElQIGFuZCBQb3J0PC9mb250PjwvcD4NCgk8ZGl2IGFsaWduPSJjZW50ZXIiPjxmb3JtIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIiPg0KCTxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJwaXAiIHZhbHVlPSInLCRfU0VSVkVSWydSRU1PVEVfQUREUiddLCciIGNsYXNzPSJpbnB1dCIgLz4gOg0KCTxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJwcG9ydCIgc2l6ZT0iNSIgdmFsdWU9IjE1NDIiIGNsYXNzPSJpbnB1dCIgLz4gPGJyPjxicj4NCgk8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0icHBhdGgiIHZhbHVlPSIvdG1wIiBjbGFzcz0iaW5wdXQiIC8+PGJyPjxicj4NCgk8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iIENvbm5lY3QgIiBjbGFzcz0iYnV0dG9uIiAvPg0KCTwvZm9ybT48L2Rpdj4nOw0KCSRwaXA9JF9QT1NUWydwaXAnXTsJCSRwcG9ydD0kX1BPU1RbJ3Bwb3J0J107DQoJaWYgKCRwaXAgPD4gJycpIHsNCgkJJGZwPWZvcGVuKCRfUE9TVFsncHBhdGgnXS5EUy5yYW5kKDAsMTApLidiY19wZXJsX2VuaGFjay5wbCcsICd3Jyk7DQoJCWlmICghJGZwKXsNCgkJCSRyZXN1bHQgPSAnRXJyb3I6IGNvdWxkblwndCB3cml0ZSBmaWxlIHRvIG9wZW4gc29ja2V0IGNvbm5lY3Rpb24nOw0KCQl9IGVsc2Ugew0KCQkJQGZwdXRzKCRmcCxAYmFzZTY0X2RlY29kZSgkYmNfcGVybCkpOw0KCQkJZmNsb3NlKCRmcCk7DQoJCQkkcmVzdWx0ID0gZXgoJ3BlcmwgJy4kX1BPU1RbJ3BwYXRoJ10uJy9iY19wZXJsX2VuaGFjay5wbCAnLiRwaXAuJyAnLiRwcG9ydC4nICYnKTsNCgkJfQ0KCX0NCn0NCg0KDQovL0ZpbGUgRWRpdA0KZnVuY3Rpb24gZmVkaXQoKQ0Kew0KCSRmZWRpdD0kX0dFVFsnZmVkaXQnXTsNCglpZihpc19maWxlKCRmZWRpdCkpIHsNCgkJaWYgKCRmZWRpdCAhPSAiIiApew0KCQkJJGZlZGl0PXJlYWxwYXRoKCRmZWRpdCk7DQoJCQkkbGluZXMgPSBmaWxlKCRmZWRpdCk7DQoJCQllY2hvICcNCgkJCTxjZW50ZXI+PGJyPjxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9IlBPU1QiPg0KCQkJPHRleHRhcmVhIG5hbWU9InNhdmVmaWxlIiByb3dzPSIzMyIgY29scz0iMTAwIj4nIDsNCg0KCQkJZm9yZWFjaCAoJGxpbmVzIGFzICRsaW5lX251bSA9PiAkbGluZSkgew0KCQkJCWVjaG8gaHRtbHNwZWNpYWxjaGFycygkbGluZSk7DQoJCQl9DQoJCQllY2hvICcNCgkJCTwvdGV4dGFyZWE+PGJyPjxicj4NCgkJCTxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJmaWxlcGF0aCIgIHNpemU9IjYwIiB2YWx1ZT0iJywkZmVkaXQsJyIgY2xhc3M9ImlucHV0IiAvPiZuYnNwOw0KCQkJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IiBTYXZlICIgY2xhc3M9ImJ1dHRvbiIgLz48L2Zvcm0+JzsNCgkJCSRzYXZlZmlsZT1zdHJpcHNsYXNoZXMoJF9QT1NUWydzYXZlZmlsZSddKTsNCgkJCSRmaWxlcGF0aD1yZWFscGF0aCgkX1BPU1RbJ2ZpbGVwYXRoJ10pOw0KCQkJaWYgKCRzYXZlZmlsZSA8PiAiIikgew0KCQkJCSRmcD1AZm9wZW4oIiRmaWxlcGF0aCIsIncrIik7DQoJCQkJaWYoJGZwKXsNCgkJCQkJZndyaXRlKCRmcCwiIikgOw0KCQkJCQlmd3JpdGUoJGZwLCRzYXZlZmlsZSkgOw0KCQkJCQlmY2xvc2UoJGZwKTsNCgkJCQkJZWNobyAnPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+IGFsZXJ0KCJGaWxlIFNhdmVkISIpPC9zY3JpcHQ+JzsNCgkJCQl9IGVsc2Ugew0KCQkJCQllY2hvICc8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4gYWxlcnQoIlNhdmUgRmFpbGVkISIpPC9zY3JpcHQ+JzsNCgkJCQl9DQoJCQkJZWNobyAnPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+IHdpbmRvdy5sb2NhdGlvbiA9ICJodHRwOi8vJy4kX1NFUlZFUlsnSFRUUF9IT1NUJ10uJy8nLiRfU0VSVkVSWydSRVFVRVNUX1VSSSddLiciPC9zY3JpcHQ+JzsNCgkJCX0NCgkJCWV4aXQoKTsNCgkJfQ0KCX0NCgllbHNlIHsNCgkJZWNobyAnPHU+JywkZmVkaXQsJzwvdT4gaXMgbm90IGZpbGUuIDxiciAvPg0KCQk8YSBocmVmPSJqYXZhc2NyaXB0Omhpc3RvcnkuZ28oLTEpIj48LS0gYmFjazwvYT4NCgkJJzsNCgl9DQp9DQoNCg0KLy8gRXhlY3V0ZQ0KZnVuY3Rpb24gZXgoJHBhcmFtKSB7DQoJJHJlcyA9ICcnOw0KCWlmICghZW1wdHkoJHBhcmFtKSl7DQoJCWlmKGZ1bmN0aW9uX2V4aXN0cygnZXhlYycpKQl7DQoJCQlAZXhlYygkcGFyYW0sJHJlcyk7DQoJCQkkcmVzID0gam9pbigiXG4iLCRyZXMpOw0KCQl9DQoJCWVsc2VpZihmdW5jdGlvbl9leGlzdHMoJ3NoZWxsX2V4ZWMnKSkJew0KCQkJJHJlcyA9IEBzaGVsbF9leGVjKCRwYXJhbSk7DQoJCX0NCgkJZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygnc3lzdGVtJykpCXsNCgkJCUBvYl9zdGFydCgpOw0KCQkJQHN5c3RlbSgkcGFyYW0pOw0KCQkJJHJlcyA9IEBvYl9nZXRfY29udGVudHMoKTsNCgkJCUBvYl9lbmRfY2xlYW4oKTsNCgkJfQ0KCQllbHNlaWYoZnVuY3Rpb25fZXhpc3RzKCdwYXNzdGhydScpKQl7DQoJCQlAb2Jfc3RhcnQoKTsNCgkJCUBwYXNzdGhydSgkcGFyYW0pOw0KCQkJJHJlcyA9IEBvYl9nZXRfY29udGVudHMoKTsNCgkJCUBvYl9lbmRfY2xlYW4oKTsNCgkJfQ0KCQllbHNlaWYoQGlzX3Jlc291cmNlKCRmID0gQHBvcGVuKCRwYXJhbSwiciIpKSkJew0KCQkJJHJlcyA9ICIiOw0KCQkJd2hpbGUoIUBmZW9mKCRmKSkgeyAkcmVzIC49IEBmcmVhZCgkZiwxMDI0KTsgfQ0KCQkJQHBjbG9zZSgkZik7DQoJCX0NCgl9DQoJcmV0dXJuICRyZXM7DQp9DQoNCi8vVXBsb2FkIEZpbGUNCiRycGF0aD1AJF9QT1NUWydGdXBhdGgnXTsNCmlmICgkcnBhdGggPD4gIiIpIHsNCgkkdXBsb2FkZmlsZSA9ICRycGF0aC4iLyIgLiAkX0ZJTEVTWyd1c2VyZmlsZSddWyduYW1lJ107DQoJaWYgKG1vdmVfdXBsb2FkZWRfZmlsZSgkX0ZJTEVTWyd1c2VyZmlsZSddWyd0bXBfbmFtZSddLCAkdXBsb2FkZmlsZSkpIHsNCgkJZWNobyAnPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+IGFsZXJ0KCJcOkQgVXBsb2FkIHN1Y2Nlc3NmdWxseSEiKTwvc2NyaXB0Pic7DQoJfSBlbHNlIHsNCgkJZWNobyAnPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+IGFsZXJ0KCJcOiggVXBsb2FkIEZhaWxlZCEiKTwvc2NyaXB0Pic7DQoJfQ0KfQ0KDQovL0RlbGV0ZSBmaWxlDQokZnJwYXRoPUAkX0dFVFsnZmRlbGV0ZSddOw0KDQpmdW5jdGlvbiBybWRpcnIoJGRpcm5hbWUpDQp7DQogICAgLy8gU2FuaXR5IGNoZWNrDQogICAgaWYgKCFmaWxlX2V4aXN0cygkZGlybmFtZSkpIHsNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0NCg0KICAgIC8vIFNpbXBsZSBkZWxldGUgZm9yIGEgZmlsZQ0KICAgIGlmIChpc19maWxlKCRkaXJuYW1lKSB8fCBpc19saW5rKCRkaXJuYW1lKSkgew0KICAgICAgICByZXR1cm4gdW5saW5rKCRkaXJuYW1lKTsNCiAgICB9DQoNCiAgICAvLyBMb29wIHRocm91Z2ggdGhlIGZvbGRlcg0KICAgICRkaXIgPSBkaXIoJGRpcm5hbWUpOw0KICAgIHdoaWxlIChmYWxzZSAhPT0gJGVudHJ5ID0gJGRpci0+cmVhZCgpKSB7DQogICAgICAgIC8vIFNraXAgcG9pbnRlcnMNCiAgICAgICAgaWYgKCRlbnRyeSA9PSAnLicgfHwgJGVudHJ5ID09ICcuLicpIHsNCiAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gUmVjdXJzZQ0KICAgICAgICBybWRpcnIoJGRpcm5hbWUgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJGVudHJ5KTsNCiAgICB9DQoNCiAgICAvLyBDbGVhbiB1cA0KICAgICRkaXItPmNsb3NlKCk7DQogICAgcmV0dXJuIHJtZGlyKCRkaXJuYW1lKTsNCn0NCg0KaWYgKCRmcnBhdGggPD4gIiIpIHsNCglpZihybWRpcnIoJGZycGF0aCkpIHsNCgkJZWNobyAnPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+IGFsZXJ0KCJEb25lISBQcmVzcyBGNSB0byByZWZyZXNoIik8L3NjcmlwdD4nOw0KCX0gZWxzZSB7DQoJCWVjaG8gJzxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPiBhbGVydCgiRmFpbCEgUHJlc3MgRjUgdG8gcmVmcmVzaCIpPC9zY3JpcHQ+JzsNCgl9DQoJZWNobyAnPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+IGhpc3RvcnkuYmFjaygyKTwvc2NyaXB0Pic7DQoJZXhpdCgwKTsNCn0NCj8+DQoNCjxodG1sPg0KPGhlYWQ+DQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LUxhbmd1YWdlIiBjb250ZW50PSJlbi11cyI+DQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+DQo8dGl0bGU+OjogU2EtSGFDS2VSLkNvTSBCeXBhc3NpbmcgU2hlTEwgdjEgOjo8L3RpdGxlPg0KPHN0eWxlPg0KPCEtLQ0KYm9keSB7DQoJZm9udC1mYW1pbHk6IFRhaG9tYTsgZm9udC1zaXplOiA4cHQ7IGNvbG9yOiMwMEZGMDA7DQoJYmFja2dyb3VuZC1jb2xvcjojMDAwOw0KfQ0KLnRkIHsNCglmb250LXNpemU6ODAlOw0KfQ0KYTpsaW5rIHsNCgl0ZXh0LWRlY29yYXRpb246IG5vbmU7DQoJY29sb3I6ICMwMDgwRkYNCn0NCmE6dmlzaXRlZCB7DQoJdGV4dC1kZWNvcmF0aW9uOiBub25lOw0KCWNvbG9yOiAjMDA4MEZGDQp9DQphOmFjdGl2ZSB7DQoJdGV4dC1kZWNvcmF0aW9uOiBub25lOw0KCWNvbG9yOiAjMDA4MEZGDQp9DQphOmhvdmVyIHsNCgl0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBvdmVybGluZTsNCgljb2xvcjogI0ZGMDAwMA0KfQ0KDQouaW5wdXQgew0KCWJvcmRlcjogIDFweCBzb2xpZCAjMGM5OTA0IDsNCglCQUNLR1JPVU5ELUNPTE9SOiAjMzMzMzMzOw0KCWZvbnQ6IDEwcHQgdGFob21hOw0KCWNvbG9yOiAjZmZmZmZmOw0KfQ0KDQouYnV0dG9uIHsNCglmb250LXNpemU6IDEzcHg7DQoJY29sb3I6IzBjOTkwNDsNCglCQUNLR1JPVU5ELUNPTE9SOiAjMzMzMzMzOw0KCWJvcmRlcjogIDFweCBzb2xpZCAjMGM5OTA0Ow0KfQ0KDQoudGV4dGFyZWEgew0KCWJvcmRlcjogIDFweCBzb2xpZCAjMGM5OTA0IDsNCglCQUNLR1JPVU5ELUNPTE9SOiAjMzMzMzMzOw0KCWZvbnQ6IEZpeGVkc3lzIGJvbGQ7DQoJY29sb3I6ICNmZmZmZmY7DQp9DQoNCiNwaHBpbmZvIHsNCgl3aWR0aDo4MCU7DQoJZm9udC1zaXplOjgwJTsNCglwYWRkaW5nLWxlZnQxMHB4Ow0KfQ0KI3BocGluZm8gdGFibGUgLA0KI3BocGluZm8gdGQgLA0KI3BocGluZm8gdHIgew0KCWJvcmRlcjoxcHggc29saWQgIzlmZTNhMjsNCn0NCiNwaHBpbmZvIHByZSB7fQ0KI3BocGluZm8gYTpsaW5rIHsNCgljb2xvcjpyZWQ7DQp9DQojcGhwaW5mbyBhOmhvdmVyIHt9DQojcGhwaW5mbyB0YWJsZSB7fQ0KI3BocGluZm8gLmNlbnRlciB7fQ0KI3BocGluZm8gLmNlbnRlciB0YWJsZSB7fQ0KI3BocGluZm8gLmNlbnRlciB0aCB7fQ0KI3BocGluZm8gdGQsIHRoIHt9DQojcGhwaW5mbyBoMSB7DQoJZm9udC1zaXplOjEyMCU7DQp9DQojcGhwaW5mbyBoMiB7DQoJdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsNCgljb2xvcjojNzVkNTg0Ow0KfQ0KI3BocGluZm8gLnAgew0KIGZvbnQtc2l6ZTo5MCU7DQogY29sb3I6cmVkOw0KfQ0KI3BocGluZm8gLmUgew0KCWZvbnQtc2l6ZTo4MCU7DQp9DQojcGhwaW5mbyAuaCB7DQp9DQojcGhwaW5mbyAudiB7DQoJZm9udC1zaXplOjc1JTsNCgljb2xvcjojM2U5ZTI1Ow0KfQ0KI3BocGluZm8gLnZyIHt9DQojcGhwaW5mbyBpbWcge30NCiNwaHBpbmZvIGhyIHt9DQotLT4NCjwvc3R5bGU+DQo8L2hlYWQ+DQoNCjxib2R5Pg0KPD9waHANCmVycm9yX3JlcG9ydGluZyhFX0VSUk9SIHwgRV9XQVJOSU5HIHwgRV9QQVJTRSk7DQoNCg0KLy8gQ2hhbmdlIG1vZGUNCiRmY2htb2Q9JF9HRVRbJ2ZjaG1vZCddOw0KaWYgKCRmY2htb2QgPD4gIiIgKXsNCgkkZmNobW9kPXJlYWxwYXRoKCRmY2htb2QpOw0KCWVjaG8gJzxjZW50ZXI+PGZvbnQgc2l6ZT0iMyI+PGJyPg0KCUNoYW5nIG1vZGUgJywkZmNobW9kLCc8YnI+DQoJPGZvcm0gbWV0aG9kPSJQT1NUIiBhY3Rpb249IiI+PGJyPg0KCTxicj4NCgk8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibW9kZSIgc2l6ZT0iNCIgY2xhc3M9ImlucHV0IiAvPiZuYnNwOw0KCTxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJjaG1vZCIgY2xhc3M9ImJ1dHRvbiIgLz4NCgk8L2Zvcm0+PGJyPic7DQoJJG1vZGU9JF9QT1NUWydtb2RlJ107DQoJaWYgKCRtb2RlICE9ICIiKXsNCgkJaWYoY2htb2QoJGZjaG1vZCAsICRtb2RlKSkgew0KCQkJZWNobyAiU3VjY2Vzc2Z1bGx5IjsNCgkJfSBlbHNlIHsNCgkJCWVjaG8gIlBlcm1pc3Npb24gZGVuaWVkIjsNCgkJfQ0KCX0NCgllY2hvICc8L2ZvbnQ+JzsNCglleGl0KCk7DQp9DQo/Pg0KDQo8ZGl2IGFsaWduPSJjZW50ZXIiPg0KCTxwIGFsaWduPSJjZW50ZXIiPg0KCQk8Zm9udCBmYWNlPVdlYmRpbmdzIHNpemU9MTA+PGI+ITwvYj48L2ZvbnQ+DQoJCTxTUEFOIHN0eWxlPSJGT05ULVNJWkU6IDIzcHQ7IENPTE9SOiAjMDBDQ0ZGOyBGT05ULUZBTUlMWTogSW1wYWN0Ij4mbmJzcDtTYS1IYUNLZVIuQ29NIEJ5cGFzc2luZyBTaGVMTCB2MSZuYnNwOzwvU1BBTj4NCgkJPGZvbnQgZmFjZT1XZWJkaW5ncyBzaXplPTEwPjxiPiE8L2I+PC9mb250Pg0KCQk8YnIvPlJlbGVhc2VkIDIwMTANCgk8L3A+DQoJPHRhYmxlIGJvcmRlcj0iMSIgd2lkdGg9Ijk4JSIgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkICMwMDgwRkYiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgaGVpZ2h0PSI2MDAiPg0KCQk8dHI+DQoJCQk8dGQgdmFsaWduPSJ0b3AiIHJvd3NwYW49IjIiPg0KCQkJCTxwIGFsaWduPSJjZW50ZXIiPjxiPg0KCQkJCQk8YnI+PGEgaHJlZj0iPyI+PGltZyBib3JkZXI9IjAiIHNyYz0iaHR0cDovL2ltZzU0LmltYWdlc2hhY2sudXMvaW1nNTQvNzY4OC9zYWhhY2sucG5nIj48L2E+DQoJCQkJPC9wPg0KCQkJCTxwIGFsaWduPSJjZW50ZXIiPj09PT09W35dPT09PT08L3A+DQoJCQkJPHAgYWxpZ249ImNlbnRlciI+PGI+DQoJCQkJPGZvbnQgZmFjZT0iVGFob21hIiBzaXplPSIyIiBjb2xvcj0iIzAwODBGRiI+DQoJCQkJCTxhIGhyZWY9Ij9pZD1mbSZkaXI9PD9waHAJZWNobyBnZXRjd2QoKTsJPz4JIj5GaWxlIE1hbmFnZXI8L2E+DQoJCQkJPC9mb250PjwvYj48L3A+DQoNCgkJCQk8cCBhbGlnbj0iY2VudGVyIj48Yj4NCgkJCQk8Zm9udCBmYWNlPSJUYWhvbWEiIHNpemU9IjIiIGNvbG9yPSIjMDA4MEZGIj4NCgkJCQkJPGEgaHJlZj0iP2lkPWNtZCI+V2ViIENvbW1hbmQ8L2E+DQoJCQkJPC9mb250PjwvYj48L3A+DQoNCgkJCQk8cCBhbGlnbj0iY2VudGVyIj48Yj4NCgkJCQk8Zm9udCBmYWNlPSJUYWhvbWEiIHNpemU9IjIiIGNvbG9yPSIjMDA4MEZGIj4NCgkJCQkJPGEgaHJlZj0iP2lkPWV2YWwiPlBIUCBFdmFsdWF0b3I8L2E+DQoJCQkJPC9mb250PjwvYj48L3A+DQoNCgkJCQk8cCBhbGlnbj0iY2VudGVyIj48Yj4NCgkJCQk8Zm9udCBmYWNlPSJUYWhvbWEiIHNpemU9IjIiIGNvbG9yPSIjMDA4MEZGIj4NCgkJCQkJPGEgaHJlZj0iP2lkPWl6byI+UGhwIDUuMi45IEJ5cGFzczwvYT4NCgkJCQk8L2ZvbnQ+PC9iPjwvcD4NCg0KCQkJCTxwIGFsaWduPSJjZW50ZXIiPjxiPg0KCQkJCTxmb250IGZhY2U9IlRhaG9tYSIgc2l6ZT0iMiIgY29sb3I9IiMwMDgwRkYiPg0KCQkJCQk8YSBocmVmPSI/aWQ9cHJpdjgiPlNhZmUgTW9kZSBPZmY8L2E+DQoJCQkJPC9mb250PjwvYj48L3A+DQoNCgkJCQk8cCBhbGlnbj0iY2VudGVyIj48Yj4NCgkJCQk8Zm9udCBmYWNlPSJUYWhvbWEiIHNpemU9IjIiIGNvbG9yPSIjMDA4MEZGIj4NCgkJCQkJPGEgaHJlZj0iP2lkPW9ieXBhc3MiPk9wZW5iYXNlZGlyIEJ5cGFzczwvYT4NCgkJCQk8L2ZvbnQ+PC9iPjwvcD4NCg0KCQkJCTxwIGFsaWduPSJjZW50ZXIiPjxiPg0KCQkJCTxmb250IGZhY2U9IlRhaG9tYSIgc2l6ZT0iMiIgY29sb3I9ImdyZWVuIj4NCgkJCQkJPGEgaHJlZj0iP2lkPWRlY29kZSI+VmJ1bGxldGluIGNvbmZpZyBkZWNvZGVyPC9hPg0KCQkJCTwvZm9udD48L2I+PC9wPg0KDQoJCQkJPHAgYWxpZ249ImNlbnRlciI+PGI+DQoJCQkJPGZvbnQgZmFjZT0iVGFob21hIiBzaXplPSIyIiBjb2xvcj0iIzAwODBGRiI+DQoJCQkJCTxhIGhyZWY9Ij9pZD1waHA0Ij5QaHAgNCBCYWNrPC9hPg0KCQkJCTwvZm9udD48L2I+PC9wPg0KDQoJCQkJPHAgYWxpZ249ImNlbnRlciI+PGI+DQoJCQkJPGZvbnQgZmFjZT0iVGFob21hIiBzaXplPSIyIiBjb2xvcj0iIzAwODBGRiI+DQoJCQkJCTxhIGhyZWY9Ij9pZD00NDQiPlBocCA0LjQueCBCeXBhc3M8L2E+DQoJCQkJPC9mb250PjwvYj48L3A+DQoNCgkJCQk8cCBhbGlnbj0iY2VudGVyIj48Yj4NCgkJCQk8Zm9udCBmYWNlPSJUYWhvbWEiIHNpemU9IjIiIGNvbG9yPSIjMDA4MEZGIj4NCgkJCQkJPGEgaHJlZj0iP2lkPWNnaSI+UGVybCBjZ2k8L2E+DQoJCQkJPC9mb250PjwvYj48L3A+DQoNCgkJCQk8cCBhbGlnbj0iY2VudGVyIj48Yj4NCgkJCQk8Zm9udCBmYWNlPSJUYWhvbWEiIHNpemU9IjIiIGNvbG9yPSIjMDA4MEZGIj4NCgkJCQkJPGEgaHJlZj0iP2lkPWxucyI+bG4gLXMgYnlwYXNzPC9hPg0KCQkJCTwvZm9udD48L2I+PC9wPg0KDQoJCQkJPHAgYWxpZ249ImNlbnRlciI+PGI+DQoJCQkJPGZvbnQgZmFjZT0iVGFob21hIiBzaXplPSIyIiBjb2xvcj0iIzAwODBGRiI+DQoJCQkJCTxhIGhyZWY9Ij9pZD1hcGFjaGkiPkFwYWNoaSBCeXBhc3M8L2E+DQoJCQkJPC9mb250PjwvYj48L3A+DQoNCgkJCQk8cCBhbGlnbj0iY2VudGVyIj48Yj4NCgkJCQk8Zm9udCBmYWNlPSJUYWhvbWEiIHNpemU9IjIiIGNvbG9yPSIjMDA4MEZGIj4NCgkJCQkJPGEgaHJlZj0iP3g9Ij5OaXRyb2plbiBCb21iYXNpPC9hPg0KCQkJCTwvZm9udD48L2I+PC9wPg0KDQoJCQkJPHAgYWxpZ249ImNlbnRlciI+PGI+DQoJCQkJPGZvbnQgZmFjZT0iVGFob21hIiBzaXplPSIyIiBjb2xvcj0iIzAwODBGRiI+DQoJCQkJCTxhIGhyZWY9Ij9wYW5lbD1jcCI+Q3BhbmVsIGNyYWNrPC9hPg0KCQkJCTwvZm9udD48L2I+PC9wPg0KDQoJCQkJPHAgYWxpZ249ImNlbnRlciI+PGI+DQoJCQkJPGZvbnQgZmFjZT0iVGFob21hIiBzaXplPSIyIiBjb2xvcj0iIzAwODBGRiI+DQoJCQkJCTxhIGhyZWY9Ij9pZD1iY29uIj5CYWNrIENvbm5lY3Q8L2E+DQoJCQkJPC9mb250PjwvYj48L3A+DQoNCgkJCQk8cCBhbGlnbj0iY2VudGVyIj48Yj4NCgkJCQk8Zm9udCBmYWNlPSJUYWhvbWEiIHNpemU9IjIiIGNvbG9yPSIjMDA4MEZGIj4NCgkJCQkJPGEgaHJlZj0iP2lkPW15c3FsIj5NeVNRTCBRdWVyeTwvYT4NCgkJCQk8L2ZvbnQ+PC9iPjwvcD4NCg0KCQkJCTxwIGFsaWduPSJjZW50ZXIiPjxiPg0KCQkJCTxmb250IGZhY2U9IlRhaG9tYSIgc2l6ZT0iMiIgY29sb3I9IiMwMDgwRkYiPg0KCQkJCQk8YSBocmVmPSI/aWQ9aW5mbyI+U2VydmVyIEluZm9zPC9hPg0KCQkJCTwvZm9udD48L2I+PC9wPg0KDQoJCQkJPHAgYWxpZ249ImNlbnRlciI+PT09PT1bfl09PT09PTwvcD4NCg0KCQkJCTxwIGFsaWduPSJjZW50ZXIiPjxiPg0KCQkJCTxmb250IGZhY2U9IlRhaG9tYSIgc2l6ZT0iMiIgY29sb3I9IiMwMDgwRkYiPg0KCQkJCQk8aW1nIGJvcmRlcj0iMCIgc3JjPSJodHRwOi8vd3d3LnNhLWhhY2tlci5jb20vdmIvaW5kZXgucGhwIj48L2E+DQoJCQkJPC9mb250PjwvYj48L3A+DQoJCQk8L3RkPg0KCQkJPHRkIHZhbGlnbj0idG9wIiBoZWlnaHQ9IjUwMCIgd2lkdGg9Ijg1JSIgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkICMwMDgwRkYiIGFsaWduPSJsZWZ0Ij4NCgkJCTw/cGhwDQoJCQkvLyBzd2ljaCB0byBmdW5jdGlvbiBjYWxsZWQgYmFzZSBvbiBpZA0KCQkJJGNtZGlkID0gJF9HRVRbJ2lkJ107DQoJCQlzd2l0Y2ggKCRjbWRpZCkgew0KCQkJCS8vIEZpbGUgTWFuYWdlcg0KCQkJCWNhc2UgJ2ZtJzoNCgkJCQkJZmlsZW1hbiAoKTsNCgkJCQkJYnJlYWs7DQoJCQkJLy8gQ29tbWFuZCBMaW5lDQoJCQkJY2FzZSAnY21kJzoNCgkJCQkJd2NvbSgpOw0KCQkJCQlicmVhazsNCgkJCQkvLyBQSFAgRXZhbA0KCQkJCWNhc2UgJ2V2YWwnOg0KCQkJCQllZXZhbCgpOw0KCQkJCQlicmVhazsNCgkJCQkvLyBQaHAgNS4yLjkgQnlwYXNzDQoJCQkJY2FzZSAnaXpvJzoNCgkJCQkJZWl6bygpOw0KCQkJCQlicmVhazsNCgkJCQkvLyBTYWZlIE1vZHUgT2ZmbGENCgkJCQljYXNlICdwcml2OCc6DQoJCQkJCWVwcml2OCgpOw0KCQkJCQlicmVhazsNCgkJCQkvLyBPcGVuYmFzZWRpciBCeXBhc3MNCgkJCQljYXNlICdvYnlwYXNzJzoNCgkJCQkJZW9ieXBhc3MoKTsNCgkJCQkJYnJlYWs7DQoJCQkJLy8gVmJ1bGxldGluIGNvbmZpZyBkZWNvZGVyDQoJCQkJY2FzZSAnZGVjb2RlJzoNCgkJCQkJZWRlY29kZSgpOw0KCQkJCQlicmVhazsJCQkJDQoJCQkJLy8gUGhwIDQgQmFjaw0KCQkJCWNhc2UgJ3BocDQnOg0KCQkJCQllcGhwNCgpOw0KCQkJCQlicmVhazsNCgkJCQkvLyBQaHAgNC40LnggQnlwYXNzDQoJCQkJY2FzZSAnNDQ0JzoNCgkJCQkJZTQ0NCgpOw0KCQkJCQlicmVhazsNCgkJCQkvLyBQZXJsIGNnaQ0KCQkJCWNhc2UgJ2NnaSc6DQoJCQkJCWVjZ2koKTsNCgkJCQkJYnJlYWs7DQoJCQkJLy8gbG4gLXMgYnlwYXNzDQoJCQkJY2FzZSAnbG5zJzoNCgkJCQkJZWxucygpOw0KCQkJCQlicmVhazsNCgkJCQkvLyBBcGFjaGkgQnlwYXNzDQoJCQkJY2FzZSAnYXBhY2hpJzoNCgkJCQkJZWFwYWNoaSgpOw0KCQkJCQlicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV29yayB3aXRoIE15U1FMDQoJCQkJY2FzZSAnbXlzcWwnOg0KCQkJCQllbXlzcWwoKTsNCgkJCQkJYnJlYWs7DQoJCQkJLy8gQmFjayBjb25uZWN0DQoJCQkJY2FzZSAnYmNvbic6DQoJCQkJCWViYWNrKCk7DQoJCQkJCWJyZWFrOw0KCQkJCS8vIEZpbGUgRWRpdA0KCQkJCWNhc2UgJ2ZlZGl0JzoNCgkJCQkJZmVkaXQoKTsNCgkJCQkJYnJlYWs7DQoJCQkJLy8gUGhwIEluZm8NCgkJCQljYXNlICdpbmZvJzoNCgkJCQkJaW5mbygpOw0KCQkJCQlicmVhazsNCgkJCQkvLyBEZWZhdWx0DQoJCQkJZGVmYXVsdDogZGVmKCk7DQoJCQl9DQoJCQkvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCg0KCQkJPz4NCgkJCTwvdGQ+DQoJCTwvdHI+DQoJCTx0cj4NCgkJCTx0ZCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgIzAwODBGRiI+DQoJCQk8cCBhbGlnbj0iY2VudGVyIj4NCgkJCTxmb250IGNvbG9yPSIjRkYwMDAwIiBzaXplPSIyIj48Yj46Ojo6Ojo6Ojo6Ojo6Ojo6IFsgOjogQ29weXJpZ2h0ICZjb3B5IDIwMTAgLSBEZXZlbG9wZWQ8L2E+IGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cuc2EtaGFja2VyLmNvbSI+c2EtaGFja2VyIFNlY3VyaXR5IFRlYW08L2E+IDo6IF0gOjo6Ojo6Ojo6Ojo6Ojo6OiA8L2I+PC9mb250Pg0KCQkJPC9wPjwvdGQ+DQoJCTwvdHI+DQoJPC90YWJsZT4NCjwvZGl2Pg0KPC9mb250Pg0KPC9ib2R5Pg0KPC9odG1sPg0KPD9waHANCiRtb2RlPSJjcCI7Ly8/Pz8/Pz8/Pz8/Pz8uDQppZigkX1JFUVVFU1RbJ3BhbmVsJ10hPSRtb2RlKQ0Kew0KICAgZWNobyAiPGlmcmFtZSBzcmM9Y3Agd2lkdGg9MTAwJSBoZWlnaHQ9MTAwJSBmcmFtZWJvcmRlcj0wPjwvaWZyYW1lPiAiOw0KZXhpdDsNCn0NCj8+DQo8aHRtbD4gDQo8aGVhZD4gDQo8c2FraW5jYWxpIGtvZHNha2luY2FsaSBrb2RzYWtpbmNhbGkga29kc2FraW5jYWxpIGtvZCBzYWtpbmNhbGkga29kc2FraW5jYWxpIGtvZHNha2luY2FsaSBrb2RzYWtpbmNhbGkga29kc2FraW5jYWxpIGtvZHNha2luY2FsaSBrb2RzYWtpbmNhbGkga29kc2FraW5jYWxpIGtvZHNha2luY2FsaSBrb2RzYWtpbmNhbGkga29kPSJDb250ZW50LUxhbmd1YWdlIiBjb250ZW50PSJlbi11cyI+IA0KPC9oZWFkPiANCjx0aXRsZT5BcmlhIGNQYW5lbCBjcmFja2VyIHZlcnNpb24gOiAxLjA8L3RpdGxlPiANCjxzdHlsZT4gDQpib2R5e21hcmdpbjowcHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC1zaXplOjEwcHg7Y29sb3I6I0ZGRkZGRjtmb250LWZhbWlseTpWZXJkYW5hLEFyaWFsO2JhY2tncm91bmQtY29sb3I6IzNhM2EzYTtzY3JvbGxiYXItZmFjZS1jb2xvcjogIzMwMzAzMDtzY3JvbGxiYXItaGlnaGxpZ2h0LWNvbG9yOiAjNWQ1ZDVkO3Njcm9sbGJhci1 |
 |
|
|
|
|