# Name: smd_calendar v0.42a # Type: Client side plugin # Calendar / event / schedule system with events as TXP articles # Author: Stef Dawson # URL: http://stefdawson.com/ # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjEyOiJzbWRfY2FsZW5kYXIiO3M6NjoiYXV0aG9yIjtzOjEx OiJTdGVmIERhd3NvbiI7czoxMDoiYXV0aG9yX3VyaSI7czoyMjoiaHR0cDovL3N0ZWZkYXdz b24uY29tLyI7czo3OiJ2ZXJzaW9uIjtzOjU6IjAuNDJhIjtzOjExOiJkZXNjcmlwdGlvbiI7 czo2MjoiQ2FsZW5kYXIgLyBldmVudCAvIHNjaGVkdWxlIHN5c3RlbSB3aXRoIGV2ZW50cyBh cyBUWFAgYXJ0aWNsZXMiO3M6NDoiY29kZSI7czo2MDE1NjoiaWYoICRkYXRlID0gZ3BzKCdk YXRlJykgKSB7DQoJJF9HRVRbJ21vbnRoJ10gPSAkZGF0ZTsNCn0NCmZ1bmN0aW9uIHNtZF9j YWxlbmRhcigkYXR0cywgJHRoaW5nPScnKSB7DQoJZ2xvYmFsICRwcmV0ZXh0LCAkdGhpc2Fy dGljbGUsICR2YXJpYWJsZSwgJHByZWZzLCAkc21kX2NhbF9mbGFnLCAkc21kX2RhdGUsICRz bWRfY2FsaW5mbywgJHNtZF9jYWxfdWNsczsNCg0KCWV4dHJhY3QobEF0dHMoYXJyYXkoDQoJ CSd0aW1lJyA9PiAnYW55JywNCgkJJ3NpemUnID0+ICdsYXJnZScsDQoJCSdleHBpcmVkJyA9 PiAnJywNCgkJJ2NhdGVnb3J5JyA9PiAnJywNCgkJJ3NlY3Rpb24nID0+ICcnLA0KCQknYXV0 aG9yJyA9PiAnJywNCgkJJ3JlYWxuYW1lJyA9PiAnJywNCgkJJ3N0YXR1cycgPT4gJ2xpdmUn LA0KCQknc2hvd2FsbCcgPT4gJzAnLA0KCQknc3RhdGljJyA9PiAnJywNCgkJJ2Zvcm0nID0+ ICcnLA0KCQknc3BhbmZvcm0nID0+ICdTTURfU0FNRScsDQoJCSdyZWN1cmZvcm0nID0+ICdT TURfU0FNRScsDQoJCSdjZWxsZm9ybScgPT4gJycsDQoJCSdzdGVwZmllbGQnID0+ICcnLA0K CQknc2tpcGZpZWxkJyA9PiAnJywNCgkJJ29taXRmaWVsZCcgPT4gJycsDQoJCSdleHRyYWZp ZWxkJyA9PiAnJywNCgkJJ2V4dHJhc3RyaWN0JyA9PiAnMCcsDQoJCSdkYXRlZmllbGRzJyA9 PiAnJywNCgkJJ3Nob3dza2lwcGVkJyA9PiAnMCcsDQoJCSdzaG93c3Bhbm5lZCcgPT4gJzEn LA0KCQknaG9saWRheXMnID0+ICcnLA0KCQknaG9saWRheWZsYWdzJyA9PiAnc3RhbmRhcmQn LA0KCQknY2xhc3NsZXZlbHMnID0+ICdjZWxsLCBldmVudCcsDQoJCSdsaW5rcG9zdGVkJyA9 PiAncmVjdXIsIG11bHRpLCBtdWx0aXByZXYsIG11bHRpbGFzdCcsDQoJCSdjbGFzc3ByZWZp eGVzJyA9PiAnc21kX2NhbF8sIHNtZF9jYWxfZXZfJywNCgkJJ2NsYXNzJyA9PiAnJywNCgkJ J3Jvd2NsYXNzJyA9PiAnJywNCgkJJ2NlbGxjbGFzcycgPT4gJycsDQoJCSdlbXB0eWNsYXNz JyA9PiAnZW1wdHknLA0KCQknaXNvd2Vla2NsYXNzJyA9PiAnd2VlaycsDQoJCSduYXZjbGFz cycgPT4gJ25hdnByZXYsIG5hdm5leHQnLA0KCQknbmF2YXJyb3cnID0+ICcmIzYwOywgJiM2 MjsnLA0KCQknbmF2aWQnID0+ICcnLA0KCQknZXZlbnRjbGFzc2VzJyA9PiAnY2F0ZWdvcnkn LA0KCQknZXZlbnR3cmFwdGFnJyA9PiAnc3BhbicsDQoJCSdzZWxlY3QnID0+ICcnLA0KCQkn c2VsZWN0YnRuJyA9PiAnJywNCgkJJ215Y2xhc3MnID0+ICcnLA0KCQknbXl3cmFwdGFnJyA9 PiAnJywNCgkJJ2lkJyA9PiAnJywNCgkJJ3dlZWsnID0+ICcnLA0KCQknbW9udGgnID0+ICcn LA0KCQkneWVhcicgPT4gJycsDQoJCSdyZW1hcCcgPT4gJycsDQoJCSd5ZWFyd2lkdGgnID0+ ICcwJywNCgkJJ2lzb3dlZWtzJyA9PiAnJywNCgkJJ2RheWZvcm1hdCcgPT4gJ0FCQlInLA0K CQknbW9udGhmb3JtYXQnID0+ICdGVUxMJywNCgkJJ2ZpcnN0ZGF5JyA9PiAwLA0KCQknbWFp bnRhaW4nID0+ICdjYWxpZCcsDQoJCSduYW1ldmFsJyA9PiAnJywNCgkJJ2dtdCcgPT4gMCwN CgkJJ2xhbmcnID0+ICcnLA0KCQknZGVidWcnID0+IDAsDQoJKSwgJGF0dHMpKTsNCg0KCSRm dXR1cmUgPSAoICR0aW1lICE9ICdwYXN0JyApID8gdHJ1ZSA6IGZhbHNlOw0KCSRzdGF0dXMg PSAoJHN0YXR1cykgPyAkc3RhdHVzIDogJ2xpdmUnOw0KCSRmaXJzdGRheSA9ICgkaXNvd2Vl a3MgPT0gJycpID8gJGZpcnN0ZGF5IDogMTsNCgkkc3BhbmZvcm0gPSAoJHNwYW5mb3JtID09 ICdTTURfU0FNRScpID8gJGZvcm0gOiAkc3BhbmZvcm07DQoJJHJlY3VyZm9ybSA9ICgkcmVj dXJmb3JtID09ICdTTURfU0FNRScpID8gJGZvcm0gOiAkcmVjdXJmb3JtOw0KCSRjZWxsZm9y bSA9IChlbXB0eSgkY2VsbGZvcm0pKSA/ICcnIDogZmV0Y2hfZm9ybSgkY2VsbGZvcm0pOw0K CSRmcm9udHBhZ2UgPSAoJHNlY3Rpb249PScnICYmICRwcmV0ZXh0WydzJ109PSdkZWZhdWx0 JykgPyB0cnVlIDogZmFsc2U7DQoNCgkkY2xldnMgPSBkb19saXN0KCRjbGFzc2xldmVscyk7 DQoJJGNscyA9IGRvX2xpc3QoJGNsYXNzcHJlZml4ZXMpOw0KCSRjbHNfcGZ4ID0gJGV2Y19w ZnggPSAkY2xzWzBdOw0KCWlmIChjb3VudCgkY2xzKSA+IDEpew0KCQkkZXZjX3BmeCA9ICRj bHNbMV07DQoJfQ0KDQoJJG1haW50YWluID0gZG9fbGlzdCgkbWFpbnRhaW4pOw0KCSRuYXZh cnJvdyA9IGRvX2xpc3QoJG5hdmFycm93KTsNCgkkbmF2cGFyciA9ICRuYXZhcnJvd1swXTsN CgkkbmF2bmFyciA9IChjb3VudCgkbmF2YXJyb3cpID4gMSkgPyAkbmF2YXJyb3dbMV0gOiAk bmF2YXJyb3dbMF07DQoJJG5hdmNsYXNzID0gZG9fbGlzdCgkbmF2Y2xhc3MpOw0KCSRuYXZw Y2xhc3MgPSAkbmF2Y2xhc3NbMF07DQoJJG5hdm5jbGFzcyA9IChjb3VudCgkbmF2Y2xhc3Mp ID4gMSkgPyAkbmF2Y2xhc3NbMV0gOiAkbmF2Y2xhc3NbMF07DQoNCgkkZm9wdHMgPSBhcnJh eSgpOw0KCSRjYXRTUUwgPSAkc2VjU1FMID0gJGF1dGhTUUwgPSAkZnBTUUwgPSAnJzsNCglp ZigkY2F0ZWdvcnkpIHsNCgkJJGZvcHRzWydjJ10gPSAkY2F0ZWdvcnk7DQoJCSRjYXRTUUwg PSBkb1F1b3RlKGpvaW4oIicsJyIsIGRvU2xhc2goZG9fbGlzdCgkY2F0ZWdvcnkpKSkpOw0K CQkkY2F0U1FMID0gIiBBTkQgKCBDYXRlZ29yeTEgSU4gKCIuJGNhdFNRTC4iKSBPUiBDYXRl Z29yeTIgSU4gKCIuJGNhdFNRTC4iKSApICI7DQoJfQ0KCWlmKCRzZWN0aW9uKSB7DQoJCSRz ZWNzID0gZG9fbGlzdCgkc2VjdGlvbik7DQoJCSRzbWRfY2FsaW5mb1sncyddID0gJHNlY3Nb MF07DQoJCSRzZWNTUUwgPSBkb1F1b3RlKGpvaW4oIicsJyIsIGRvU2xhc2goJHNlY3MpKSk7 DQoJCSRzZWNTUUwgPSAiIEFORCBTZWN0aW9uIElOICgiLiRzZWNTUUwuIikgIjsNCgl9DQoJ aWYoJHJlYWxuYW1lKSB7DQoJCSRhdXRob3JzID0gc2FmZV9jb2x1bW4oJ25hbWUnLCAndHhw X3VzZXJzJywgJ1JlYWxOYW1lIElOICgnLiBkb1F1b3RlKGpvaW4oIicsJyIsIGRvQXJyYXko ZG9fbGlzdCgkcmVhbG5hbWUpLCAndXJsZGVjb2RlJykpKSAuJyknICk7DQoJCSRhdXRob3Ig PSBqb2luKCcsJywgJGF1dGhvcnMpOw0KCX0NCglpZigkYXV0aG9yKSB7DQoJCSRmb3B0c1sn YXV0aG9yJ10gPSBodG1sZW50aXRpZXMoZ3BzKCdhdXRob3InKSk7DQoJCSRhdXRoU1FMID0g ZG9RdW90ZShqb2luKCInLCciLCBkb1NsYXNoKGRvX2xpc3QoJGF1dGhvcikpKSk7DQoJCSRh dXRoU1FMID0gIiBBTkQgQXV0aG9ySUQgSU4gKCIuJGF1dGhTUUwuIikgIjsNCgl9DQoJaWYg KCRmcm9udHBhZ2UgJiYgISRzaG93YWxsKSB7DQoJCSRmcFNRTCA9IGZpbHRlckZyb250UGFn ZSgpOw0KCX0NCgkkc21kX2NhbGluZm9bJ2FydGlkJ10gPSAkdGhpc2FydGljbGVbJ3RoaXNp ZCddOw0KCSRzbWRfY2FsaW5mb1snYXJ0aXRsZSddID0gJHRoaXNhcnRpY2xlWyd1cmxfdGl0 bGUnXTsNCgkkbmFtZXZhbCA9IGRvX2xpc3QoJG5hbWV2YWwpOw0KCWZvcmVhY2ggKCRuYW1l dmFsIGFzICRudikgew0KCQkkbnYgPSBleHBsb2RlKCI9IiwgJG52KTsNCgkJaWYgKCRudlsw XSkgew0KCQkJJGZvcHRzWyRudlswXV0gPSAoKGlzc2V0KCRudlsxXSkpID8gJG52WzFdIDog JycpOw0KCQl9DQoJfQ0KCSRzdGF0dXMgPSBkb19saXN0KCRzdGF0dXMpOw0KCSRzdGF0aSA9 IGFycmF5KCk7DQoJZm9yZWFjaCAoJHN0YXR1cyBhcyAkc3RhdCkgew0KCQlpZiAoZW1wdHko JHN0YXQpKSB7DQoJCQljb250aW51ZTsNCgkJfSBlbHNlIGlmIChpc19udW1lcmljKCRzdGF0 KSkgew0KCQkJJHN0YXRpW10gPSAkc3RhdDsNCgkJfSBlbHNlIHsNCgkJCSRzdGF0aVtdID0g Z2V0U3RhdHVzTnVtKCRzdGF0KTsNCgkJfQ0KCX0NCgkkc3RhdGkgPSAiIFN0YXR1cyBJTiAo Ii5qb2luKCcsJywgJHN0YXRpKS4iKSI7DQoNCgkkZXhwaXJlZCA9ICgkZXhwaXJlZCkgPyAk ZXhwaXJlZCA6ICRwcmVmc1sncHVibGlzaF9leHBpcmVkX2FydGljbGVzJ107DQoJJGV4cGly ZWQgPSAoKCRleHBpcmVkKSA/ICcnIDogJyBBTkQgKG5vdygpIDw9IEV4cGlyZXMgT1IgRXhw aXJlcyA9ICcuTlVMTERBVEVUSU1FLicpJyk7DQoJJGV2ZW50Y2xhc3NlcyA9IGRvX2xpc3Qo JGV2ZW50Y2xhc3Nlcyk7DQoJJGhvbGlkYXlmbGFncyA9IGRvX2xpc3QoJGhvbGlkYXlmbGFn cyk7DQoJJGxpbmtwb3N0ZWQgPSBkb19saXN0KCRsaW5rcG9zdGVkKTsNCgkkZGF0ZWZpZWxk cyA9IGRvX2xpc3QoJGRhdGVmaWVsZHMpOw0KDQoJJGZpbHQgPSAkc3RhdGkgLiAoKCRjYXRl Z29yeSkgPyAkY2F0U1FMIDogJycpIC4gKCgkc2VjdGlvbikgPyAkc2VjU1FMIDogJycpIC4g KCgkYXV0aG9yKSA/ICRhdXRoU1FMIDogJycpIC4gJGZwU1FMOw0KCSRlYXJsaWVzdCA9IHNh ZmVfZmllbGQoJ3VuaXhfdGltZXN0YW1wKFBvc3RlZCkgQVMgdVBvc3RlZCcsICd0ZXh0cGF0 dGVybicsICRmaWx0IC4nIE9SREVSIEJZIFBvc3RlZCBBU0MgTElNSVQgMCwgMScsICRkZWJ1 Zyk7DQoJJGxwID0gc2FmZV9maWVsZCgndW5peF90aW1lc3RhbXAoUG9zdGVkKSBBUyB1UG9z dGVkJywgJ3RleHRwYXR0ZXJuJywgJGZpbHQgLicgT1JERVIgQlkgUG9zdGVkIERFU0MgTElN SVQgMCwgMScsICRkZWJ1Zyk7DQoJJGxtID0gc2FmZV9maWVsZCgndW5peF90aW1lc3RhbXAo TGFzdE1vZCkgQVMgdUxhc3RNb2QnLCAndGV4dHBhdHRlcm4nLCAkZmlsdCAuJyBPUkRFUiBC WSBMYXN0TW9kIERFU0MgTElNSVQgMCwgMScsICRkZWJ1Zyk7DQoJJGxhdGVzdCA9ICgkdGlt ZT09InBhc3QiKSA/IHRpbWUoKSA6ICgoJGxwID4gJGxtKSA/ICRscCA6ICRsbSk7DQoNCgkk eWVhcndpZHRoID0gZG9fbGlzdCgkeWVhcndpZHRoKTsNCgkkeWVhcndpZHRoWzBdID0gKGVt cHR5KCR5ZWFyd2lkdGhbMF0pKSA/IDAgOiAkeWVhcndpZHRoWzBdOw0KCWlmIChjb3VudCgk eWVhcndpZHRoKSA9PSAxKSB7DQoJCSR5ZWFyd2lkdGhbMV0gPSAkeWVhcndpZHRoWzBdOw0K CX0NCgkkdXNlbm93ID0gYXJyYXkoZmFsc2UsZmFsc2UpOw0KCWZvcmVhY2ggKCR5ZWFyd2lk dGggYXMgJHlyaWR4ID0+ICR5cml0ZW0pIHsNCgkJaWYgKHN0cnBvcygkeXJpdGVtLCJjIikg IT09IGZhbHNlKSB7DQoJCQkkeWVhcndpZHRoWyR5cmlkeF0gPSBpbnR2YWwoJHlyaXRlbSk7 DQoJCQkkdXNlbm93WyR5cmlkeF0gPSB0cnVlOw0KCQl9DQoJfQ0KDQoJJHJlbWFwID0gZG9f bGlzdCgkcmVtYXApOw0KCSRkbWFwID0gYXJyYXkoInkiID0+ICJ5IiwgIm0iID0+ICJtIiwg InciID0+ICJ3Iik7DQoJZm9yZWFjaCAoJHJlbWFwIGFzICRkcGFpcikgew0KCQkkZHBhaXIg PSBkb19saXN0KCRkcGFpciwgJzonKTsNCgkJJGRtYXBbJGRwYWlyWzBdXSA9IChpc3NldCgk ZHBhaXJbMV0pKSA/ICRkcGFpclsxXSA6ICRkcGFpclswXTsNCgl9DQoJJGVhcmxpZXN0ID0g ZGF0ZSgiWSIsIHN0cnRvdGltZSgiLSIuJHllYXJ3aWR0aFswXS4iIHllYXIiLCAoIChlbXB0 eSgkZWFybGllc3QpIHx8ICR1c2Vub3dbMF09PXRydWUpID8gdGltZSgpIDogJGVhcmxpZXN0 KSApICk7DQoJJGxhdGVzdCA9IGRhdGUoIlkiLCBzdHJ0b3RpbWUoIisiLiR5ZWFyd2lkdGhb MV0uIiB5ZWFyIiwgKCAoZW1wdHkoJGxhdGVzdCkgfHwgJHVzZW5vd1sxXT09dHJ1ZSkgPyB0 aW1lKCkgOiAkbGF0ZXN0KSApICk7DQoNCgkkaW5fY2FsaWQgPSBncHMoJ2NhbGlkJyk7DQoJ JGluX3llYXIgPSAoZ3BzKCRkbWFwWyJ5Il0pIGFuZCBpc19udW1lcmljKGdwcygkZG1hcFsi eSJdKSkpID8gKGludClncHMoJGRtYXBbInkiXSkgOiAnJzsNCgkkaW5fbW9udGggPSAoZ3Bz KCRkbWFwWyJtIl0pIGFuZCBpc19udW1lcmljKGdwcygkZG1hcFsibSJdKSkpID8gKGludCln cHMoJGRtYXBbIm0iXSkgOiAnJzsNCgkkaW5fd2VlayA9IChncHMoJGRtYXBbInciXSkgYW5k IGlzX251bWVyaWMoZ3BzKCRkbWFwWyJ3Il0pKSkgPyAoaW50KWdwcygkZG1hcFsidyJdKSA6 ICcnOw0KDQoJaWYoJHN0YXRpYykgew0KCQlpZighJHllYXIpIHsgJHllYXIgPSBzYWZlX3N0 cmZ0aW1lKCclWScpOyB9DQoJCWlmKCEkbW9udGgpIHsgJG1vbnRoID0gc2FmZV9zdHJmdGlt ZSgnJW0nKTsgfQ0KCX0gZWxzZSB7DQoJCWlmKCAkaWQgPT0gJGluX2NhbGlkICkgew0KCQkJ JHllYXIgPSAoJGluX3llYXIpID8gJGluX3llYXIgOiAoKCR5ZWFyKSA/ICR5ZWFyIDogc2Fm ZV9zdHJmdGltZSgnJVknKSk7DQoJCQkkbW9udGggPSAoJGluX21vbnRoKSA/ICRpbl9tb250 aCA6ICgoJG1vbnRoKSA/ICRtb250aCA6IHNhZmVfc3RyZnRpbWUoJyVtJykpOw0KCQkJJHdl ZWsgPSAkaW5fd2VlazsNCgkJCWlmICgkd2Vlaykgew0KCQkJCSRtb250aCA9IHNhZmVfc3Ry ZnRpbWUoIiVtIiwgc3RydG90aW1lKCR5ZWFyLiJXIi5zdHJfcGFkKCR3ZWVrLCAyLCAnMCcs IFNUUl9QQURfTEVGVCkpKTsNCgkJCX0NCgkJfSBlbHNlIHsNCgkJCWlmKCEkeWVhcikgeyAk eWVhciA9IHNhZmVfc3RyZnRpbWUoJyVZJyk7IH0NCgkJCWlmKCEkbW9udGgpIHsgJG1vbnRo ID0gc2FmZV9zdHJmdGltZSgnJW0nKTsgfQ0KCQkJaWYoJHdlZWspIHsgJG1vbnRoID0gc2Fm ZV9zdHJmdGltZSgiJW0iLCBzdHJ0b3RpbWUoJHllYXIuIlciLnN0cl9wYWQoJHdlZWssIDIs ICcwJywgU1RSX1BBRF9MRUZUKSkpOyB9DQoJCX0NCgl9DQoJJHNtZF9jYWxpbmZvWydpZCdd ID0gKCRpbl9jYWxpZCkgPyAkaW5fY2FsaWQgOiAkaWQ7DQoJJHNtZF9kYXRlWyd5J10gPSAk eWVhcjsgJHNtZF9kYXRlWydtJ10gPSAkbW9udGg7DQoNCgkkdHNfZmlyc3QgPSBta3RpbWUo MCwgMCwgMCwgJG1vbnRoLCAxLCAkeWVhcik7DQoJJHRzX2xhc3QgPSBta3RpbWUoMjMsIDU5 LCA1OSwgJG1vbnRoLCBkYXRlKCd0JywkdHNfZmlyc3QpLCAkeWVhcik7DQoNCgkkZXh0cmFz cWwgPSAkY2F0U1FMIC4gJHNlY1NRTCAuICRhdXRoU1FMIC4gJGZwU1FMOw0KCXN3aXRjaCgk dGltZSkgew0KCQljYXNlICJhbnkiIDogYnJlYWs7DQoJCWNhc2UgImZ1dHVyZSIgOiAkZXh0 cmFzcWwgLj0gIiBBTkQgUG9zdGVkID4gQ1VSREFURSgpIjsgYnJlYWs7DQoJCWRlZmF1bHQg OiAkZXh0cmFzcWwgLj0gIiBBTkQgUG9zdGVkIDwgQ1VSREFURSgpIjsgYnJlYWs7DQoJfQ0K DQoJJGhvbGlkYXlzID0gZG9fbGlzdCgkaG9saWRheXMpOw0KCSR0eHBob2xzID0gZG9fbGlz dCgkaG9saWRheXNbMF0sICI6Iik7DQoJaWYgKCR0eHBob2xzWzBdID09ICJ0eHB2YXIiKSB7 DQoJCSRob2xpZGF5cyA9IGRvX2xpc3QoJHZhcmlhYmxlWyR0eHBob2xzWzFdXSk7DQoJfQ0K DQoJZm9yZWFjaCAoJGhvbGlkYXlzIGFzICRrZXkgPT4gJHZhbCkgew0KCQlpZiAoZW1wdHko JHZhbCkpIGNvbnRpbnVlOw0KCQkkbnVtcGFydHMgPSBwcmVnX21hdGNoKCcvXihbXGRcd10r KS4/KFtcZFx3XSspLj8oW1xkXHddKyk/JC8nLCAkdmFsLCAkcGFydHMpOw0KDQoJCWlmICgk bnVtcGFydHMpIHsNCgkJCWlmIChjb3VudCgkcGFydHMpID09IDMpIHsNCgkJCQkkcGFydHNb M10gPSAkeWVhcjsNCiAgICAgICAgIH0NCgkJCSR2YWwgPSBzdHJfcGFkKCRwYXJ0c1sxXSwg MiwgJzAnLCBTVFJfUEFEX0xFRlQpLictJy5zdHJfcGFkKCRwYXJ0c1syXSwgMiwgJzAnLCBT VFJfUEFEX0xFRlQpLictJy4kcGFydHNbM107DQoJCX0NCgkJJGhvbGlkYXlzWyRrZXldID0g ZGF0ZSgiZC1NLVkiLCBzdHJ0b3RpbWUoJHZhbCkpOw0KCX0NCg0KCWlmICgkZGVidWcgPiAw ICYmICFlbXB0eSgkaG9saWRheXMpICYmICRob2xpZGF5c1swXSAhPSAnJykgew0KCQllY2hv ICIrKyBIT0xJREFZUyArKyAiOw0KCQlkbXAoJGhvbGlkYXlzKTsNCgl9DQoNCgkkZXZlbnRz ID0gYXJyYXkoKTsNCgkkc3FsMiA9ICRzdGF0aSAuICIgSEFWSU5HIHVQb3N0ZWQgPD0gIi4k dHNfbGFzdCAuICRleHBpcmVkIC4gJGV4dHJhc3FsIC4iIE9SREVSIEJZIFBvc3RlZCBBU0Mi Ow0KCSRncmFiQ29scyA9ICcqLCB1bml4X3RpbWVzdGFtcChQb3N0ZWQpIGFzIHVQb3N0ZWQs IHVuaXhfdGltZXN0YW1wKExhc3RNb2QpIGFzIHVMYXN0TW9kLCB1bml4X3RpbWVzdGFtcChF eHBpcmVzKSBhcyB1RXhwaXJlcyc7DQoJJGV2bGlzdCA9IHNhZmVfcm93cygkZ3JhYkNvbHMs ICd0ZXh0cGF0dGVybicsICRzcWwyLCAkZGVidWcpOw0KCWFydGljbGVfcHVzaCgpOw0KDQoJ Zm9yZWFjaCAoJGV2bGlzdCBhcyAkcm93KSB7DQoJCSRpZHggPSAwOw0KCQkkc3RhcnQgPSAo IWVtcHR5KCRkYXRlZmllbGRzWzBdKSAmJiAhZW1wdHkoJHJvd1skZGF0ZWZpZWxkc1swXV0p ICYmICgkc3RkdCA9IHN0cnRvdGltZSgkcm93WyRkYXRlZmllbGRzWzBdXSkpICE9PSBmYWxz ZSkgPyAkc3RkdCA6ICRyb3dbJ3VQb3N0ZWQnXTsNCgkJJHN0YXJ0X2RhdGUgPSBkYXRlKCJZ LW0tZCIsICRzdGFydCk7DQoJCSRyZWFsX2VuZCA9IChpc3NldCgkZGF0ZWZpZWxkc1sxXSkg JiYgIWVtcHR5KCRyb3dbJGRhdGVmaWVsZHNbMV1dKSAmJiAoJGVuZHQgPSBzdHJ0b3RpbWUo JHJvd1skZGF0ZWZpZWxkc1sxXV0pKSAhPT0gZmFsc2UpID8gJGVuZHQgOiAkcm93Wyd1RXhw aXJlcyddOw0KDQoJCWlmICgkcmVhbF9lbmQgIT0gMCAmJiAkcmVhbF9lbmQgPD0gJHN0YXJ0 KSB7DQoJCQkkc3RhcnQgPSAkcm93Wyd1UG9zdGVkJ107DQoJCQkkcmVhbF9lbmQgPSAkcm93 Wyd1RXhwaXJlcyddOw0KCQkJdHJpZ2dlcl9lcnJvcignRXhwaXJ5IGNhbm5vdCBiZSBiZWZv cmUgc3RhcnQgZGF0ZSBpbiAiJy4kcm93WydUaXRsZSddLiciOiBpZ25vcmVkJywgRV9VU0VS X1dBUk5JTkcpOw0KCQl9DQoNCgkJJGVuZCA9ICgkcmVhbF9lbmQgIT0gMCAmJiAkcmVhbF9l bmQgPCAkdHNfbGFzdCkgPyAkcmVhbF9lbmQgOiAkdHNfbGFzdDsNCgkJJHJlYWxfZGlmZiA9 ICgkcmVhbF9lbmQ9PTApID8gMCA6ICRyZWFsX2VuZCAtICRzdGFydDsNCgkJJGZha2VfZGlm ZiA9IHN0cnRvdGltZShkYXRlKCJZLU0tZCIsICRyZWFsX2VuZCkgLiAiIDIzOjU5OjU5Iik7 DQoJCSRkaWZmID0gKCRyZWFsX2VuZD09MCkgPyAwIDogJGZha2VfZGlmZiAtICRzdGFydDsN CgkJJHNtZF9jYWxfZmxhZyA9ICRzbWRfY2FsX3VjbHMgPSBhcnJheSgpOw0KDQoJCWlmICgk ZGVidWcgPiAxKSB7DQoJCQllY2hvICcrKyBFVkVOVCBTVEFSVCAvLyBFTkQgLy8gUkVBTCBF TkQgKysnOw0KCQkJZG1wKCRyb3dbJ1RpdGxlJ10pOw0KCQkJZG1wKGRhdGUoJ2QtTS1ZIEg6 aTpzJywgJHN0YXJ0KSAuJyAvLyAnLiBkYXRlKCdkLU0tWSBIOmk6cycsICRlbmQpIC4nIC8v ICcuIGRhdGUoJ2QtTS1ZIEg6aTpzJywgJHJlYWxfZW5kKSk7DQoJCQlpZiAoJGRlYnVnID4g Mikgew0KCQkJCWRtcCgkcm93KTsNCgkJCX0NCgkJfQ0KDQoJCSRtdWx0aSA9ICgkcmVhbF9l bmQgPiAkc3RhcnQgJiYgJHJlYWxfZW5kID4gJHRzX2ZpcnN0ICYmIChkYXRlKCJkLW0tWSIs ICRyZWFsX2VuZCkgIT0gZGF0ZSgiZC1tLVkiLCAkc3RhcnQpKSkgPyB0cnVlIDogZmFsc2U7 DQoJCSRyZWN1ciA9IChlbXB0eSgkcm93WyRzdGVwZmllbGRdKSkgPyBmYWxzZSA6IHRydWU7 DQoJCSRob2xfaGl0ID0gaW5fYXJyYXkoZGF0ZSgiZC1NLVkiLCAkc3RhcnQpLCAkaG9saWRh eXMpOw0KCQkkZXZjbGFzc2VzID0gYXJyYXkoKTsNCgkJZm9yZWFjaCAoJGV2ZW50Y2xhc3Nl cyBhcyAkZXZjbHMpIHsNCgkJCXN3aXRjaCAoJGV2Y2xzKSB7DQoJCQkJY2FzZSAiIjoNCgkJ CQkJYnJlYWs7DQoJCQkJY2FzZSAiZ2NhdCI6DQoJCQkJCWlmIChpc3NldCgkcHJldGV4dFsn YyddKSAmJiAhZW1wdHkoJHByZXRleHRbJ2MnXSkpIHsNCgkJCQkJCSRldmNsYXNzZXNbXSA9 ICRldmNfcGZ4LiRwcmV0ZXh0WydjJ107DQoJCQkJCX0NCgkJCQkJYnJlYWs7DQoJCQkJY2Fz ZSAiY2F0ZWdvcnkiOg0KCQkJCQlpZiAoaXNzZXQoJHJvd1snQ2F0ZWdvcnkxJ10pICYmICFl bXB0eSgkcm93WydDYXRlZ29yeTEnXSkpIHsNCgkJCQkJCSRldmNsYXNzZXNbXSA9ICRldmNf cGZ4LiRyb3dbJ0NhdGVnb3J5MSddOw0KCQkJCQl9DQoJCQkJCWlmIChpc3NldCgkcm93WydD YXRlZ29yeTInXSkgJiYgIWVtcHR5KCRyb3dbJ0NhdGVnb3J5MiddKSkgew0KCQkJCQkJJGV2 Y2xhc3Nlc1tdID0gJGV2Y19wZnguJHJvd1snQ2F0ZWdvcnkyJ107DQoJCQkJCX0NCgkJCQkJ YnJlYWs7DQoJCQkJY2FzZSAic2VjdGlvbiI6DQoJCQkJCWlmIChpc3NldCgkcHJldGV4dFsn cyddKSAmJiAhZW1wdHkoJHByZXRleHRbJ3MnXSkpIHsNCgkJCQkJCSRldmNsYXNzZXNbXSA9 ICRldmNfcGZ4LiRwcmV0ZXh0WydzJ107DQoJCQkJCX0NCgkJCQkJYnJlYWs7DQoJCQkJY2Fz ZSAiYXV0aG9yIjoNCgkJCQkJaWYgKGlzc2V0KCRwcmV0ZXh0WydhdXRob3InXSkgJiYgIWVt cHR5KCRwcmV0ZXh0WydhdXRob3InXSkpIHsNCgkJCQkJCSRldmNsYXNzZXNbXSA9ICRldmNf cGZ4LiRwcmV0ZXh0WydhdXRob3InXTsNCgkJCQkJfQ0KCQkJCQlicmVhazsNCgkJCQlkZWZh dWx0Og0KCQkJCQlpZiAoaXNzZXQoJHJvd1skZXZjbHNdKSAmJiAhZW1wdHkoJHJvd1skZXZj bHNdKSkgew0KCQkJCQkJJGV2Y2xhc3Nlc1tdID0gJGV2Y19wZnguJHJvd1skZXZjbHNdOw0K CQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJfQ0KCQl9DQoJCSRldmNsYXNzZXMgPSAoJGV2Y2xh c3NlcykgPyAnICcuIGpvaW4oJyAnLCAkZXZjbGFzc2VzKSA6ICcnOw0KCQkkaWdub3JlID0g JG9taXQgPSAkY2ZsYWcgPSBhcnJheSgpOw0KDQoJCWlmICgkZGVidWcgPiAxICYmICRldmNs YXNzZXMpIHsNCgkJCWVjaG8gJysrIEVWRU5UIENMQVNTRVMgKysnOw0KCQkJZG1wKCRldmNs YXNzZXMpOw0KCQl9DQoNCgkJaWYgKCRzdGFydCA8ICRlbmQgJiYgJHN0YXJ0ID4gJHRzX2Zp cnN0KSB7DQoJCQlwb3B1bGF0ZUFydGljbGVEYXRhKCRyb3cpOw0KCQkJaWYgKCRzaG93c3Bh bm5lZCAmJiAkbXVsdGkgJiYgISRyZWN1cikgew0KCQkJCSRzbWRfY2FsX2ZsYWdbXSA9ICdt dWx0aWZpcnN0JzsNCgkJCX0NCgkJCWlmICgkcmVjdXIpIHsNCgkJCQkkc21kX2NhbF9mbGFn W10gPSAncmVjdXJmaXJzdCc7DQoJCQl9DQoJCQlpZiAoISRzbWRfY2FsX2ZsYWcpIHsNCgkJ CQkkc21kX2NhbF9mbGFnW10gPSAnc3RhbmRhcmQnOw0KCQkJfQ0KCQkJaWYgKCAoICRob2xf aGl0ICYmICFpbl9hcnJheSgnbXVsdGknLCRob2xpZGF5ZmxhZ3MpICYmIGluX2FycmF5KCdt dWx0aWZpcnN0Jywkc21kX2NhbF9mbGFnKSApIHx8ICggJGhvbF9oaXQgJiYgIWluX2FycmF5 KCdzdGFuZGFyZCcsJGhvbGlkYXlmbGFncykgJiYgaW5fYXJyYXkoJ3N0YW5kYXJkJywkc21k X2NhbF9mbGFnKSApICkgew0KCQkJCSRzbWRfY2FsX2ZsYWdbXSA9ICdjYW5jZWwnOw0KCQkJ fQ0KCQkJZm9yZWFjaCAoJHNtZF9jYWxfZmxhZyBhcyAkaXRlbSkgew0KCQkJCSRjZmxhZ1td ID0gJGNsc19wZnguJGl0ZW07DQoJCQl9DQoNCgkJCSRpZHggPSAkc21kX2RhdGVbJ2QnXSA9 IChpbnQpc3RyZnRpbWUoJyVkJywgJHN0YXJ0KTsNCgkJCSRzbWRfZGF0ZVsndyddID0gc3Ry ZnRpbWUoJyVWJywgJHN0YXJ0KTsNCgkJCSRzbWRfZGF0ZVsnaXknXSA9IHN0cmZ0aW1lKCcl RycsICRzdGFydCk7DQoJCQkkb3AgPSAoJHRoaW5nKSA/IHBhcnNlKCR0aGluZykgOiAoKCRm b3JtKSA/IHBhcnNlX2Zvcm0oJGZvcm0pIDogKCgkc2l6ZT09InNtYWxsIikgPyAnJyA6IGhy ZWYoJHJvd1snVGl0bGUnXSwgcGVybWxpbmt1cmwoJHJvdyksICcgdGl0bGU9IicuJHJvd1sn VGl0bGUnXS4nIicpKSApOw0KCQkJJGV2ZW50c1skaWR4XVtdID0gYXJyYXkoJ2V2JyA9PiAk b3AsICdmbGFnJyA9PiAkc21kX2NhbF9mbGFnLCAnY2xhc3NlcycgPT4gKCgkY2ZsYWcpID8g am9pbignICcsYXJyYXlfbWVyZ2UoJGNmbGFnLCAkc21kX2NhbF91Y2xzKSkgOiAnJykuJGV2 Y2xhc3NlcywgJ3Bvc3RlZCcgPT4gJHN0YXJ0X2RhdGUpOw0KCQkJJHNtZF9jYWxfZmxhZyA9 ICRjZmxhZyA9ICRzbWRfY2FsX3VjbHMgPSBhcnJheSgpOw0KCQl9DQoNCgkJaWYgKCRza2lw ZmllbGQgJiYgJHJvd1skc2tpcGZpZWxkXSAhPSAnJykgew0KCQkJJGlnbm9yZXMgPSBkb19s aXN0KCRyb3dbJHNraXBmaWVsZF0pOw0KCQkJZm9yZWFjaCAoJGlnbm9yZXMgYXMgJHZhbCkg ew0KCQkJCSRpZ3JuZyA9IHNtZF9leHBhbmRfZGF0ZXJhbmdlKCR2YWwpOw0KCQkJCWZvcmVh Y2ggKCRpZ3JuZyBhcyAkdGhldmFsKSB7DQoJCQkJCSRpZ25vcmVbXSA9IGRhdGUoImQtTS1Z IiwgJHRoZXZhbCk7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJCWlmICgkb21pdGZpZWxkICYmICRy b3dbJG9taXRmaWVsZF0gIT0gJycpIHsNCgkJCSRvbWl0cyA9IGRvX2xpc3QoJHJvd1skb21p dGZpZWxkXSk7DQoJCQlmb3JlYWNoICgkb21pdHMgYXMgJHZhbCkgew0KCQkJCSRvbXJuZyA9 IHNtZF9leHBhbmRfZGF0ZXJhbmdlKCR2YWwpOw0KCQkJCWZvcmVhY2ggKCRvbXJuZyBhcyAk dGhldmFsKSB7DQoJCQkJCSRvbWl0W10gPSBkYXRlKCJkLU0tWSIsICR0aGV2YWwpOw0KCQkJ CX0NCgkJCX0NCgkJfQ0KCQlpZiAoJGRlYnVnID4gMSAmJiAoJGlnbm9yZSB8fCAkb21pdCkp IHsNCgkJCWVjaG8gJysrIE9NSVRURUQgREFURVMgKysnOw0KCQkJZG1wKCRvbWl0KTsNCgkJ CWVjaG8gJysrIENBTkNFTExFRCBEQVRFUyArKyc7DQoJCQlkbXAoJGlnbm9yZSk7DQoJCX0N Cg0KCQlpZiAoJHN0ZXBmaWVsZCAmJiAkcm93WyRzdGVwZmllbGRdICE9ICcnKSB7DQoJCQkk ZnJlcSA9IGRvX2xpc3QoJHJvd1skc3RlcGZpZWxkXSk7DQoJCQlmb3JlYWNoICgkZnJlcSBh cyAkaW50ZXJ2YWwpIHsNCgkJCQkkbWF4X2xvb3AgPSA5OTk5OTsNCgkJCQkkb3JpZ2VydmFs ID0gJGludGVydmFsOw0KCQkJCSRpbnRlcnZhbCA9IHN0cl9yZXBsYWNlKCI/bW9udGgiLCBk YXRlKCdGJywgZ21ta3RpbWUoMCwwLDAsJG1vbnRoLDEpKSwgJGludGVydmFsKTsNCgkJCQkk aW50ZXJ2YWwgPSBzdHJfcmVwbGFjZSgiP3llYXIiLCAkeWVhciwgJGludGVydmFsKTsNCgkJ CQlpZiAoc3RycG9zKCRpbnRlcnZhbCwgImxhc3QiKSA9PT0gMCkgew0KCQkJCQkkaW50ZXJ2 YWwgPSBkYXRlKCJsLCBGIGpTIFkiLCBzdHJ0b3RpbWUoJGludGVydmFsLCBta3RpbWUoMTIs IDAsIDAsIGRhdGUoIm4iLG1rdGltZSgwLDAsMCwkbW9udGgsMSwkeWVhcikpKzEsIDEsICR5 ZWFyKSkpOw0KCQkJCQkkbWF4X2xvb3AgPSAxOw0KCQkJCX0gZWxzZSBpZiAoc3RycG9zKCRp bnRlcnZhbCwgImZpcnN0IikgPT09IDApIHsNCgkJCQkJJGludGVydmFsID0gZGF0ZSgibCwg RiBqUyBZIiwgc3RydG90aW1lKCRpbnRlcnZhbCwgbWt0aW1lKDEyLCAwLCAwLCAoKCRtb250 aD4xKSA/ICRtb250aC0xIDogMTIpLCBkYXRlKCJ0Iixta3RpbWUoMCwwLDAsJG1vbnRoLTEs MSwoKCRtb250aD09MSkgPyAkeWVhci0xOiAkeWVhcikpKSwgKCgkbW9udGg9PTEpID8gJHll YXItMTogJHllYXIpKSkpOw0KCQkJCQkkbWF4X2xvb3AgPSAxOw0KCQkJCX0NCgkJCQkkdHNf bG9vcCA9IDA7DQoJCQkJJHRzX2N1cnIgPSAkc3RhcnQ7DQoJCQkJaWYgKHN0cnBvcygkb3Jp Z2VydmFsLCAiP21vbnRoIikgfHwgc3RycG9zKCRvcmlnZXJ2YWwsICI/eWVhciIpKSB7DQoJ CQkJCSRtYXhfbG9vcCA9IDE7DQogICAgICAgICAgICB9DQoNCgkJCQl3aGlsZSAoJHRzX2N1 cnIgPCAkZW5kICYmICR0c19sb29wIDwgJG1heF9sb29wKSB7DQoJCQkJCWlmICgkbWF4X2xv b3AgPT0gMSkgew0KCQkJCQkJJHRzX2N1cnIgPSBzdHJ0b3RpbWUoJGludGVydmFsKTsNCgkJ CQkJCSR0c19jdXJyID0gKCR0c19jdXJyIDwgJHN0YXJ0IHx8ICR0c19jdXJyID4gJGVuZCkg PyAkc3RhcnQgOiAkdHNfY3VycjsNCgkJCQkJfSBlbHNlIHsNCgkJCQkJCSR0c19jdXJyID0g c3RydG90aW1lKCRpbnRlcnZhbCwgJHRzX2N1cnIpOw0KCQkJCQl9DQoJCQkJCWlmICgkdHNf Y3VyciA9PT0gZmFsc2UpIHsNCgkJCQkJCSR0c19sb29wKys7DQoJCQkJCQlicmVhazsNCgkJ CQkJfSBlbHNlIHsNCgkJCQkJCWlmICgkZGVidWcgPiAxKSB7DQoJCQkJCQkJZG1wKCJJTlRF UlZBTDogIi4gZGF0ZSgnZC1NLVkgSDppOnMnLCAkdHNfY3VycikpOw0KCQkJCQkJfQ0KCQkJ CQkJaWYgKCR0c19jdXJyIDwgJGVuZCAmJiAkdHNfY3VyciA+PSAkdHNfZmlyc3QgJiYgJHRz X2N1cnIgIT0gJHN0YXJ0KSB7DQoJCQkJCQkJcG9wdWxhdGVBcnRpY2xlRGF0YSgkcm93KTsN CgkJCQkJCQkkb3AgPSAnJzsNCgkJCQkJCQkkaWR4ID0gKGludClzdHJmdGltZSgnJWQnLCAk dHNfY3Vycik7DQoJCQkJCQkJJHNtZF9jYWxfZmxhZ1tdID0gJ3JlY3VyJzsNCgkJCQkJCQkk dGhpc2RhdGUgPSBkYXRlKCJkLU0tWSIsICR0c19jdXJyKTsNCgkJCQkJCQkkb21pdF9tZSA9 IGluX2FycmF5KCR0aGlzZGF0ZSwgJG9taXQpOw0KCQkJCQkJCSRzaG93X21lID0gIWluX2Fy cmF5KCR0aGlzZGF0ZSwgJGlnbm9yZSk7DQoJCQkJCQkJJGhvbF9oaXQgPSBpbl9hcnJheSgk dGhpc2RhdGUsICRob2xpZGF5cyk7DQoJCQkJCQkJJHNob3dfaG9sID0gKCRob2xfaGl0ICYm ICFpbl9hcnJheSgncmVjdXInLCRob2xpZGF5ZmxhZ3MpICkgPyBmYWxzZSA6IHRydWU7DQoJ CQkJCQkJaWYgKCAkb21pdF9tZSApIHsNCgkJCQkJCQkJJHNtZF9jYWxfZmxhZ1tdID0gJ29t aXQnOw0KCQkJCQkJCX0NCgkJCQkJCQlpZiAoICghJHNob3dfbWUgfHwgISRzaG93X2hvbCkg JiYgISRvbWl0X21lICkgew0KCQkJCQkJCQkkc21kX2NhbF9mbGFnW10gPSAnY2FuY2VsJzsN CgkJCQkJCQl9DQoJCQkJCQkJZm9yZWFjaCAoJHNtZF9jYWxfZmxhZyBhcyAkaXRlbSkgew0K CQkJCQkJCQkkY2ZsYWdbXSA9ICRjbHNfcGZ4LiRpdGVtOw0KCQkJCQkJCX0NCg0KCQkJCQkJ CWlmICghJG9taXRfbWUpIHsNCgkJCQkJCQkJaWYgKCgkc2hvd19tZSAmJiAkc2hvd19ob2wp IHx8ICRzaG93c2tpcHBlZCkgew0KCQkJCQkJCQkJJHNtZF9kYXRlWydkJ10gPSAkaWR4Ow0K CQkJCQkJCQkJJHNtZF9kYXRlWyd3J10gPSBzdHJmdGltZSgnJVYnLCAkdHNfY3Vycik7DQoJ CQkJCQkJCQkkc21kX2RhdGVbJ2l5J10gPSBzdHJmdGltZSgnJUcnLCAkdHNfY3Vycik7DQoJ CQkJCQkJCQkkb3AgPSAoJHJlY3VyZm9ybSkgPyBwYXJzZV9mb3JtKCRyZWN1cmZvcm0pIDog KCgkdGhpbmcpID8gcGFyc2UoJHRoaW5nKSA6ICgoJHNpemU9PSJzbWFsbCIpID8gJycgOiBo cmVmKCRyb3dbJ1RpdGxlJ10sIHBlcm1saW5rdXJsKCRyb3cpLCAnIHRpdGxlPSInLiRyb3db J1RpdGxlJ10uJyInKSkgKTsNCgkJCQkJCQkJfQ0KCQkJCQkJCX0NCgkJCQkJCQkkdXNlZCA9 IGFycmF5KCk7DQoJCQkJCQkJaWYgKGlzc2V0KCRldmVudHNbJGlkeF0pICYmICRldmVudHNb JGlkeF0gIT0gTlVMTCkgew0KCQkJCQkJCQlmb3JlYWNoICgkZXZlbnRzWyRpZHhdIGFzICRl dikgew0KCQkJCQkJCQkJJHVzZWRbXSA9ICRldlsnZXYnXTsNCgkJCQkJCQkJfQ0KCQkJCQkJ CX0NCgkJCQkJCQlpZiAoaXNzZXQoJGV2ZW50c1skaWR4XSkgJiYgJGV2ZW50c1skaWR4XSA9 PSBOVUxMIHx8ICFpbl9hcnJheSgkb3AsICR1c2VkKSkgew0KCQkJCQkJCQkkZXZlbnRzWyRp ZHhdW10gPSBhcnJheSgnZXYnID0+ICRvcCwgJ2ZsYWcnID0+ICRzbWRfY2FsX2ZsYWcsICdj bGFzc2VzJyA9PiAoKCRjZmxhZykgPyBqb2luKCcgJyxhcnJheV9tZXJnZSgkY2ZsYWcsICRz bWRfY2FsX3VjbHMpKSA6ICcnKS4kZXZjbGFzc2VzLCAncG9zdGVkJyA9PiAkc3RhcnRfZGF0 ZSk7DQoJCQkJCQkJfQ0KCQkJCQkJCSRzbWRfY2FsX2ZsYWcgPSAkY2ZsYWcgPSAkc21kX2Nh bF91Y2xzID0gYXJyYXkoKTsNCgkJCQkJCX0NCgkJCQkJCSR0c19sb29wKys7DQoJCQkJCX0N CgkJCQl9DQoJCQl9DQoJCX0gZWxzZSBpZiAoJHNob3dzcGFubmVkICYmICRtdWx0aSkgew0K CQkJcG9wdWxhdGVBcnRpY2xlRGF0YSgkcm93KTsNCgkJCSRsYXN0ZGF5ID0gKGludClzdHJm dGltZSgnJWQnLCAkZW5kKTsNCgkJCSRyZWFsX2xhc3RkYXkgPSAoaW50KXN0cmZ0aW1lKCcl ZCcsICRyZWFsX2VuZCk7DQoJCQl3aGlsZSAoKyskaWR4IDw9ICRsYXN0ZGF5KSB7DQoJCQkJ JG9wID0gJyc7DQoJCQkJJG11bHRpZmxhZyA9ICgkaWR4PT0kcmVhbF9sYXN0ZGF5KSA/ICdt dWx0aWxhc3QnIDogKCgkaWR4PT0xKSA/ICdtdWx0aXByZXYnIDogJ211bHRpJyk7DQoJCQkJ JHNtZF9jYWxfZmxhZ1tdID0gJG11bHRpZmxhZzsNCgkJCQkkdGhpc3RpbWUgPSBnbW1rdGlt ZSgwLCAwLCAwLCAkbW9udGgsICRpZHgsICR5ZWFyKTsNCgkJCQkkdGhpc2RhdGUgPSBkYXRl KCJkLU0tWSIsICR0aGlzdGltZSk7DQoJCQkJJG9taXRfbWUgPSBpbl9hcnJheSgkdGhpc2Rh dGUsICRvbWl0KTsNCgkJCQkkc2hvd19tZSA9ICFpbl9hcnJheSgkdGhpc2RhdGUsICRpZ25v cmUpOw0KCQkJCSRob2xfaGl0ID0gaW5fYXJyYXkoJHRoaXNkYXRlLCAkaG9saWRheXMpOw0K CQkJCSRzaG93X2hvbCA9ICgkaG9sX2hpdCAmJiAhaW5fYXJyYXkoJ211bHRpJywkaG9saWRh eWZsYWdzKSApID8gZmFsc2UgOiB0cnVlOw0KCQkJCWlmICggJG9taXRfbWUgKSB7DQoJCQkJ CSRzbWRfY2FsX2ZsYWdbXSA9ICdvbWl0JzsNCgkJCQl9DQoJCQkJaWYgKCAoISRzaG93X21l IHx8ICEkc2hvd19ob2wpICYmICEkb21pdF9tZSApIHsNCgkJCQkJJHNtZF9jYWxfZmxhZ1td ID0gJ2NhbmNlbCc7DQoJCQkJfQ0KCQkJCWZvcmVhY2ggKCRzbWRfY2FsX2ZsYWcgYXMgJGl0 ZW0pIHsNCgkJCQkJJGNmbGFnW10gPSAkY2xzX3BmeC4kaXRlbTsNCgkJCQl9DQoJCQkJaWYg KCEkb21pdF9tZSkgew0KCQkJCQlpZiAoICgkc2hvd19tZSAmJiAkc2hvd19ob2wpIHx8ICRz aG93c2tpcHBlZCkgew0KCQkJCQkJJHNtZF9kYXRlWydkJ10gPSAkaWR4Ow0KCQkJCQkJJHNt ZF9kYXRlWyd3J10gPSBzdHJmdGltZSgnJVYnLCAkdGhpc3RpbWUpOw0KCQkJCQkJJHNtZF9k YXRlWydpeSddID0gc3RyZnRpbWUoJyVHJywgJHRoaXN0aW1lKTsNCgkJCQkJCSRvcCA9ICgk c3BhbmZvcm0pID8gcGFyc2VfZm9ybSgkc3BhbmZvcm0pIDogKCgkdGhpbmcpID8gcGFyc2Uo JHRoaW5nKSA6ICgoJHNpemU9PSJzbWFsbCIpID8gJycgOiBocmVmKCcmcmFycjsnLCBwZXJt bGlua3VybCgkcm93KSwgJyB0aXRsZT0iJy4kcm93WydUaXRsZSddLiciJykpICk7DQoJCQkJ CX0NCgkJCQl9DQoJCQkJJGV2ZW50c1skaWR4XVtdID0gYXJyYXkoJ2V2JyA9PiAkb3AsICdm bGFnJyA9PiAkc21kX2NhbF9mbGFnLCAnY2xhc3NlcycgPT4gKCgkY2ZsYWcpID8gam9pbign ICcsYXJyYXlfbWVyZ2UoJGNmbGFnLCAkc21kX2NhbF91Y2xzKSkgOiAnJykuJGV2Y2xhc3Nl cywgJ3Bvc3RlZCcgPT4gJHN0YXJ0X2RhdGUpOw0KCQkJCSRzbWRfY2FsX2ZsYWcgPSAkY2Zs YWcgPSAkc21kX2NhbF91Y2xzID0gYXJyYXkoKTsNCgkJCX0NCgkJfQ0KCQlpZiAoJGV4dHJh ZmllbGQgJiYgJHJvd1skZXh0cmFmaWVsZF0gIT0gJycpIHsNCgkJCSR4dHJhID0gZG9fbGlz dCgkcm93WyRleHRyYWZpZWxkXSk7DQoJCQkkZXZfaHIgPSBkYXRlKCdIJywgJHN0YXJ0KTsN CgkJCSRldl9tbiA9IGRhdGUoJ2knLCAkc3RhcnQpOw0KCQkJJGV2X3NjID0gZGF0ZSgncycs ICRzdGFydCk7DQoJCQkkc3RhbXBvZmYgPSAoaW50KSgzNjAwKiRldl9ocikgKyAoaW50KSg2 MCokZXZfbW4pICsgKGludCkkZXZfc2M7DQoJCQlmb3JlYWNoICgkeHRyYSBhcyAkdmFsKSB7 DQoJCQkJaWYgKHN0cnBvcygkdmFsLCAiKyIpID09PSBmYWxzZSkgew0KCQkJCQkkZXhybmcg PSBzbWRfZXhwYW5kX2RhdGVyYW5nZSgkdmFsKTsNCgkJCQkJJHZhbCA9IGRhdGUoIlktbS1k IiwgJGV4cm5nWzBdKTsNCgkJCQkJJHNwaWR0aCA9IGNvdW50KCRleHJuZyk7DQoJCQkJCSRz cGV4ID0gMDsNCgkJCQl9IGVsc2Ugew0KCQkJCQkkY2hrID0gJHNob3dzcGFubmVkICYmICEk cmVjdXI7DQoJCQkJCSRzcGlkdGggPSAkY2hrID8gY2VpbCgkZGlmZiAvICg2MCo2MCoyNCkp IDogMTsNCgkJCQkJJHZhbCA9IHJ0cmltKCR2YWwsICcrJyk7DQoJCQkJCSRzcGV4ID0gJGNo ayA/IDEgOiAwOw0KCQkJCX0NCg0KCQkJCWZvciAoJGpkeCA9IDE7ICRqZHggPD0gJHNwaWR0 aDsgJGpkeCsrKSB7DQoJCQkJCSR0bSA9IHN0cnRvdGltZSgkdmFsIC4gKCgkamR4PT0xKSA/ ICcnIDogJysnLigkamR4LTEpLicgZGF5cycpKTsNCgkJCQkJaWYgKCRkaWZmID4gMCAmJiAk amR4ID09IDEpIHsNCgkJCQkJCSRleHBzdGFtcCA9ICR0bSskc3RhbXBvZmYrJHJlYWxfZGlm ZjsNCgkJCQkJfQ0KCQkJCQkkaWR4ID0gJHNtZF9kYXRlWydkJ10gPSAoaW50KXN0cmZ0aW1l KCclZCcsICR0bSk7DQoJCQkJCSRkdCA9IGRhdGUoIlktbS1kIiwgJHRtKTsNCgkJCQkJJGxz dCA9ICgkZXh0cmFzdHJpY3QpID8gJGVuZCA6ICR0c19sYXN0Ow0KCQkJCQlpZiAoJHRtIDwg JGxzdCAmJiAkdG0gPj0gJHRzX2ZpcnN0KSB7DQoJCQkJCQkkZmFrZXJvdyA9ICRyb3c7DQoJ CQkJCQkkZmFrZXJvd1snUG9zdGVkJ10gPSBkYXRlKCJZLW0tZCBIOmk6cyIsICR0bSskc3Rh bXBvZmYpOw0KCQkJCQkJJGZha2Vyb3dbJ3VQb3N0ZWQnXSA9ICR0bSskc3RhbXBvZmY7DQoJ CQkJCQlpZiAoJGRpZmY+MCkgew0KCQkJCQkJCSRmYWtlcm93WydFeHBpcmVzJ10gPSBkYXRl KCJZLW0tZCBIOmk6cyIsICRleHBzdGFtcCk7DQoJCQkJCQkJJGZha2Vyb3dbJ3VFeHBpcmVz J10gPSAkZXhwc3RhbXA7DQoJCQkJCQl9DQoNCgkJCQkJCXBvcHVsYXRlQXJ0aWNsZURhdGEo JGZha2Vyb3cpOw0KCQkJCQkJJHNtZF9jYWxfZmxhZ1tdID0gJ2V4dHJhJzsNCgkJCQkJCSRj ZmxhZ1tdID0gJGNsc19wZnguJ2V4dHJhJzsNCgkJCQkJCSRvbWl0X21lID0gZmFsc2U7DQoJ CQkJCQkkc2hvd19tZSA9ICRzaG93X2hvbCA9IHRydWU7DQoJCQkJCQlpZiAoJHNwZXgpIHsN CgkJCQkJCQkkbXVsdGlmbGFnID0gKCRqZHg9PTEpID8gJ211bHRpZmlyc3QnIDogKCgkamR4 PT0kc3BpZHRoKSA/ICdtdWx0aWxhc3QnIDogKCgkaWR4PT0xKSA/ICdtdWx0aXByZXYnIDog J211bHRpJykpOw0KCQkJCQkJCSR0aGlzZGF0ZSA9IGRhdGUoImQtTS1ZIiwgJHRtKTsNCgkJ CQkJCQkkb21pdF9tZSA9IGluX2FycmF5KCR0aGlzZGF0ZSwgJG9taXQpOw0KCQkJCQkJCSRz aG93X21lID0gIWluX2FycmF5KCR0aGlzZGF0ZSwgJGlnbm9yZSk7DQoJCQkJCQkJJGhvbF9o aXQgPSBpbl9hcnJheSgkdGhpc2RhdGUsICRob2xpZGF5cyk7DQoJCQkJCQkJJHNob3dfaG9s ID0gKCRob2xfaGl0ICYmICFpbl9hcnJheSgnbXVsdGknLCRob2xpZGF5ZmxhZ3MpICkgPyBm YWxzZSA6IHRydWU7DQoJCQkJCQkJaWYgKCRvbWl0X21lKSB7DQoJCQkJCQkJCSRzbWRfY2Fs X2ZsYWdbXSA9ICdvbWl0JzsNCgkJCQkJCQl9DQoJCQkJCQkJaWYgKCAoISRzaG93X21lIHx8 ICEkc2hvd19ob2wpICYmICEkb21pdF9tZSApIHsNCgkJCQkJCQkJJHNtZF9jYWxfZmxhZ1td ID0gJ2NhbmNlbCc7DQoJCQkJCQkJfQ0KCQkJCQkJCSRzbWRfY2FsX2ZsYWdbXSA9ICRtdWx0 aWZsYWc7DQoJCQkJCQkJJGNmbGFnW10gPSAkY2xzX3BmeC4kbXVsdGlmbGFnOw0KCQkJCQkJ fQ0KCQkJCQkJaWYgKCEkb21pdF9tZSkgew0KCQkJCQkJCWlmICggKCRzaG93X21lICYmICRz aG93X2hvbCkgfHwgJHNob3dza2lwcGVkKSB7DQoJCQkJCQkJCSRzbWRfZGF0ZVsndyddID0g c3RyZnRpbWUoJyVWJywgJHRtKTsNCgkJCQkJCQkJJHNtZF9kYXRlWydpeSddID0gc3RyZnRp bWUoJyVHJywgJHRtKTsNCgkJCQkJCQkJJG9wID0gKCRzcGV4ICYmICRzcGFuZm9ybSkgPyBw YXJzZV9mb3JtKCRzcGFuZm9ybSkgOiAoKCR0aGluZykgPyBwYXJzZSgkdGhpbmcpIDogKCgk Zm9ybSkgPyBwYXJzZV9mb3JtKCRmb3JtKSA6ICgoJHNpemU9PSJzbWFsbCIpID8gJycgOiBo cmVmKCgoJHNwZXggJiYgJGpkeD4xKSA/ICcmcmFycjsnIDogJHJvd1snVGl0bGUnXSksIHBl cm1saW5rdXJsKCRyb3cpLCAnIHRpdGxlPSInLiRyb3dbJ1RpdGxlJ10uJyInKSkgKSk7DQoJ CQkJCQkJCSRldmVudHNbJGlkeF1bXSA9IGFycmF5KCdldicgPT4gJG9wLCAnZmxhZycgPT4g JHNtZF9jYWxfZmxhZywgJ2NsYXNzZXMnID0+ICgoJGNmbGFnKSA/IGpvaW4oJyAnLGFycmF5 X21lcmdlKCRjZmxhZywgJHNtZF9jYWxfdWNscykpIDogJycpLiRldmNsYXNzZXMsICdwb3N0 ZWQnID0+ICRkdCk7DQoJCQkJCQkJCSRzbWRfY2FsX2ZsYWcgPSAkY2ZsYWcgPSAkc21kX2Nh bF91Y2xzID0gYXJyYXkoKTsNCgkJCQkJCQl9DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9DQoJ CQl9DQoJCX0NCgl9DQoJYXJ0aWNsZV9wb3AoKTsNCg0KCWlmICgkZGVidWcgPiAxICYmICRl dmVudHMpIHsNCgkJZWNobyAnKysgQUxMIEVWRU5UUyArKyc7DQoJCWRtcCgkZXZlbnRzKTsN Cgl9DQoNCglpZiggJHNpemUgPT0gInNtYWxsIiApIHsNCgkJJGNhbGVuZGFyID0gbmV3IFNN RF9TbWFsbF9DYWxlbmRhcigkeWVhciwgJG1vbnRoLCAkZXZlbnRzLCAkc2VjdGlvbiwgJGNh dGVnb3J5KTsNCgl9IGVsc2Ugew0KCQkkY2FsZW5kYXIgPSBuZXcgU01EX0NhbGVuZGFyKCR5 ZWFyLCAkbW9udGgsICRldmVudHMpOw0KCX0NCgkkY2FsZW5kYXItPnNldFdlZWsoJHdlZWsp Ow0KCSRjYWxlbmRhci0+c2V0R01UKCRnbXQpOw0KCSRjYWxlbmRhci0+c2V0TGFuZygkbGFu Zyk7DQoJJGNhbGVuZGFyLT5zZXRDbGFzc0xldmVscygkY2xldnMpOw0KCSRjYWxlbmRhci0+ c2V0Q2xhc3NQcmVmaXgoJGNsc19wZngpOw0KCSRjYWxlbmRhci0+c2V0RXZlbnRXcmFwdGFn KCRldmVudHdyYXB0YWcpOw0KCSRjYWxlbmRhci0+c2V0Q2VsbEZvcm0oJGNlbGxmb3JtKTsN CgkkY2FsZW5kYXItPnNldE1ZV3JhcHRhZygkbXl3cmFwdGFnKTsNCgkkY2FsZW5kYXItPnNl dFRhYmxlSUQoJGlkKTsNCgkkY2FsZW5kYXItPnNldFRhYmxlQ2xhc3MoJGNsYXNzKTsNCgkk Y2FsZW5kYXItPnNldFJvd0NsYXNzKCRyb3djbGFzcyk7DQoJJGNhbGVuZGFyLT5zZXRDZWxs Q2xhc3MoJGNlbGxjbGFzcyk7DQoJJGNhbGVuZGFyLT5zZXRFbXB0eUNsYXNzKCRlbXB0eWNs YXNzKTsNCgkkY2FsZW5kYXItPnNldElTT1dlZWtDbGFzcygkaXNvd2Vla2NsYXNzKTsNCgkk Y2FsZW5kYXItPnNldE5hdkluZm8oJG5hdnBjbGFzcywkbmF2bmNsYXNzLCRuYXZwYXJyLCRu YXZuYXJyLCRuYXZpZCk7DQoJJGNhbGVuZGFyLT5zZXROYXZLZWVwKCRtYWludGFpbik7DQoJ JGNhbGVuZGFyLT5zZXRNWUNsYXNzKCRteWNsYXNzKTsNCgkkY2FsZW5kYXItPnNldE5hbWVG b3JtYXQoJGRheWZvcm1hdCwgImQiKTsNCgkkY2FsZW5kYXItPnNldE5hbWVGb3JtYXQoJG1v bnRoZm9ybWF0LCAibSIpOw0KCSRjYWxlbmRhci0+c2V0UmVtYXAoJGRtYXApOw0KCSRjYWxl bmRhci0+c2V0U2hvd0lTT1dlZWsoJGlzb3dlZWtzKTsNCgkkY2FsZW5kYXItPnNldEVZZWFy KCRlYXJsaWVzdCk7DQoJJGNhbGVuZGFyLT5zZXRMWWVhcigkbGF0ZXN0KTsNCgkkY2FsZW5k YXItPnNldEZpbHRlck9wdHMoJGZvcHRzKTsNCgkkY2FsZW5kYXItPnNldEhvbGlkYXlzKCRo b2xpZGF5cyk7DQoJJGNhbGVuZGFyLT5zZXRTZWxlY3RvcnMoZG9fbGlzdCgkc2VsZWN0KSwg JHNlbGVjdGJ0bik7DQoJJGNhbGVuZGFyLT5zZXRGaXJzdERheU9mV2VlaygkZmlyc3RkYXkp Ow0KCSRjYWxlbmRhci0+c2V0TGlua1Bvc3RlZCgkbGlua3Bvc3RlZCk7DQoNCglyZXR1cm4g JGNhbGVuZGFyLT5kaXNwbGF5KCRzdGF0aWMsICRmdXR1cmUpOw0KfQ0KDQpjbGFzcyBTTURf Q2FsZW5kYXIgZXh0ZW5kcyBTTURfUmF3X0NhbGVuZGFyIHsNCglmdW5jdGlvbiBTTURfQ2Fs ZW5kYXIoJHllYXIsJG1vbnRoLCRldmVudHMpIHsNCgkJJHRoaXMtPmV2ZW50cyA9ICRldmVu dHM7DQoJCSR0aGlzLT5TTURfUmF3X0NhbGVuZGFyKCR5ZWFyLCRtb250aCk7DQoJfQ0KDQoJ ZnVuY3Rpb24gZHNwRGF5Q2VsbCgkdGhlZGF5KSB7DQoJCWdsb2JhbCAkc21kX2NhbF9mbGFn LCAkc21kX2NhbGluZm8sICRzbWRfY2FsX3VjbHMsICRzbWRfZGF0ZTsNCg0KCQkkc21kX2Nh bF9mbGFnID0gJHNtZF9jYWxfdWNscyA9IGFycmF5KCk7DQoJCSRoYXNhcnRpY2xlID0gaXNz ZXQoJHRoaXMtPmV2ZW50c1skdGhlZGF5XSk7DQoJCSR0aGVkYXRlID0gZ21ta3RpbWUoMCwg MCwgMCwgJHRoaXMtPm1vbnRoLCAkdGhlZGF5LCAkdGhpcy0+eWVhcik7DQoJCSRob2xfaGl0 ID0gaW5fYXJyYXkoZGF0ZSgiZC1NLVkiLCAkdGhlZGF0ZSksICR0aGlzLT5ob2xpZGF5cyk7 DQoJCWlmICgkaGFzYXJ0aWNsZSkgew0KCQkJJHNtZF9jYWxfZmxhZ1tdID0gJ2V2ZW50JzsN CgkJfQ0KCQlpZiAoJGhvbF9oaXQpIHsNCgkJCSRzbWRfY2FsX2ZsYWdbXSA9ICdob2xzJzsN CgkJfQ0KCQkkY2ZsYWcgPSBhcnJheSgpOw0KCQlmb3JlYWNoICgkc21kX2NhbF9mbGFnIGFz ICRpdGVtKSB7DQoJCQkkY2ZsYWdbXSA9ICR0aGlzLT5jbHNfcGZ4LiRpdGVtOw0KCQl9DQoJ CSR0ZGNsYXNzID0gdHJpbSgkdGhpcy0+Y2VsbGNsYXNzIC4gKCgkY2ZsYWcpID8gJyAnLmpv aW4oJyAnLCAkY2ZsYWcpIDogJycpKTsNCgkJJHJ1bm5pbmdjbGFzcyA9IChpbl9hcnJheSgi Y2VsbCIsICR0aGlzLT5jbHNfbGV2KSB8fCBpbl9hcnJheSgiY2VsbHBsdXMiLCAkdGhpcy0+ Y2xzX2xldikpID8gZXhwbG9kZSgnICcsICR0ZGNsYXNzKSA6IGFycmF5KCk7DQoJCWlmKCR0 aGlzLT55ZWFyID09IGRhdGUoJ1knLHRpbWUoKSt0el9vZmZzZXQoKSApIGFuZCAkdGhpcy0+ bW9udGggPT0gZGF0ZSgnbicsdGltZSgpK3R6X29mZnNldCgpICkgYW5kICR0aGVkYXkgPT0g ZGF0ZSgnaicsdGltZSgpK3R6X29mZnNldCgpKSApIHsNCgkJCSRzbWRfY2FsX2ZsYWdbXSA9 ICd0b2RheSc7DQoJCQkkcnVubmluZ2NsYXNzW10gPSAkdGhpcy0+Y2xzX3BmeC4ndG9kYXkn Ow0KCQl9DQoNCgkJJG91dCA9ICRmbGFncyA9IGFycmF5KCk7DQoJCSRmb3V0ID0gYXJyYXko J3N0YW5kYXJkJz0+YXJyYXkoKSwncmVjdXInPT5hcnJheSgpLCdyZWN1cmZpcnN0Jz0+YXJy YXkoKSwnbXVsdGlmaXJzdCc9PmFycmF5KCksJ211bHRpJz0+YXJyYXkoKSwnbXVsdGlwcmV2 Jz0+YXJyYXkoKSwnbXVsdGlsYXN0Jz0+YXJyYXkoKSwnY2FuY2VsJz0+YXJyYXkoKSwnZXh0 cmEnPT5hcnJheSgpKTsNCgkJaWYgKGVtcHR5KCR0aGlzLT5jZWxsZm9ybSkpIHsNCgkJCSRv dXRbXSA9IGhlZCgkdGhlZGF5LDQpOw0KCQl9DQoJCWlmKCBpc3NldCgkdGhpcy0+ZXZlbnRz WyR0aGVkYXldKSApIHsNCgkJCSRkYXlzX2V2ZW50cyA9ICR0aGlzLT5ldmVudHNbJHRoZWRh eV07DQoJCQlmb3JlYWNoKCRkYXlzX2V2ZW50cyBhcyAkZXYpIHsNCgkJCQkkZXZjbGFzcyA9 IHRyaW0oJGV2WydjbGFzc2VzJ10pOw0KCQkJCSRmbGFncyA9IGFycmF5X21lcmdlKCRmbGFn cywgJGV2WydmbGFnJ10pOw0KCQkJCWlmIChpbl9hcnJheSgiY2VsbHBsdXMiLCAkdGhpcy0+ Y2xzX2xldikpIHsNCgkJCQkJZm9yZWFjaCAoZXhwbG9kZSgnICcsICRldmNsYXNzKSBhcyAk ZXZjKSB7DQoJCQkJCQkkcnVubmluZ2NsYXNzW109ICRldmM7DQoJCQkJCX0NCgkJCQl9DQoJ CQkJJGNscyA9ICgkZXZjbGFzcyAmJiBpbl9hcnJheSgiZXZlbnQiLCAkdGhpcy0+Y2xzX2xl dikpID8gJyBjbGFzcz0iJy50cmltKCRldmNsYXNzKS4nIicgOiAnJzsNCgkJCQkkb3AgPSAo JHRoaXMtPmV2d3JhcHRhZykgPyB0YWcoJGV2WydldiddLCAkdGhpcy0+ZXZ3cmFwdGFnLCAk Y2xzKSA6ICRldlsnZXYnXTsNCgkJCQlmb3JlYWNoICgkZXZbJ2ZsYWcnXSBhcyAkZmxldikg ew0KCQkJCQkkZm91dFskZmxldl1bXSA9ICRvcDsNCgkJCQl9DQoJCQkJJG91dFtdID0gJG9w Ow0KCQkJfQ0KCQl9DQoNCgkJJHJ1bm5pbmdjbGFzcyA9IGFycmF5X3VuaXF1ZSgkcnVubmlu Z2NsYXNzKTsNCgkJaWYgKGluX2FycmF5KCJjZWxscGx1cyIsICR0aGlzLT5jbHNfbGV2KSkg ew0KCQkJJHNtZF9jYWxfZmxhZyA9IGFycmF5X21lcmdlKCRzbWRfY2FsX2ZsYWcsICRmbGFn cyk7DQoJCX0NCg0KCQlpZiAoJHRoaXMtPmNlbGxmb3JtKSB7DQoJCQkkdGhpc3RpbWUgPSBn bW1rdGltZSgwLCAwLCAwLCAkdGhpcy0+bW9udGgsICR0aGVkYXksICR0aGlzLT55ZWFyKTsN CgkJCSRzbWRfY2FsaW5mb1snaWQnXSA9ICR0aGlzLT50YWJsZUlEOw0KCQkJJHNtZF9kYXRl Wyd5J10gPSAkdGhpcy0+eWVhcjsNCgkJCSRzbWRfZGF0ZVsnbSddID0gJHRoaXMtPm1vbnRo Ow0KCQkJJHNtZF9kYXRlWyd3J10gPSBzdHJmdGltZSgiJVYiLCAkdGhpc3RpbWUpOw0KCQkJ JHNtZF9kYXRlWydpeSddID0gc3RyZnRpbWUoIiVHIiwgJHRoaXN0aW1lKTsNCgkJCSRzbWRf ZGF0ZVsnZCddID0gJHRoZWRheTsNCgkJCSRyZXBzID0gYXJyYXkoDQoJCQkJJ3tzdGFuZGFy ZH0nID0+IGpvaW4oJycsJGZvdXRbJ3N0YW5kYXJkJ10pLA0KCQkJCSd7cmVjdXJ9JyA9PiBq b2luKCcnLCRmb3V0WydyZWN1ciddKSwNCgkJCQkne3JlY3VyZmlyc3R9JyA9PiBqb2luKCcn LCRmb3V0WydyZWN1cmZpcnN0J10pLA0KCQkJCSd7YWxscmVjdXJ9JyA9PiBqb2luKCcnLGFy cmF5X21lcmdlKCRmb3V0WydyZWN1ciddLCAkZm91dFsncmVjdXJmaXJzdCddKSksDQoJCQkJ J3ttdWx0aWZpcnN0fScgPT4gam9pbignJywkZm91dFsnbXVsdGlmaXJzdCddKSwNCgkJCQkn e211bHRpcHJldn0nID0+IGpvaW4oJycsJGZvdXRbJ211bHRpcHJldiddKSwNCgkJCQkne211 bHRpfScgPT4gam9pbignJywkZm91dFsnbXVsdGlsYXN0J10pLA0KCQkJCSd7bXVsdGlsYXN0 fScgPT4gam9pbignJywkZm91dFsnbXVsdGlsYXN0J10pLA0KCQkJCSd7YWxsbXVsdGl9JyA9 PiBqb2luKCcnLGFycmF5X21lcmdlKCRmb3V0WydtdWx0aWZpcnN0J10sJGZvdXRbJ211bHRp J10sJGZvdXRbJ211bHRpcHJldiddLCRmb3V0WydtdWx0aWxhc3QnXSkpLA0KCQkJCSd7Y2Fu Y2VsfScgPT4gam9pbignJywkZm91dFsnY2FuY2VsJ10pLA0KCQkJCSd7ZXh0cmF9JyA9PiBq b2luKCcnLCRmb3V0WydleHRyYSddKSwNCgkJCQkne2V2ZW50c30nID0+IGpvaW4oJycsJG91 dCksDQoJCQkJJ3tkYXl9JyA9PiAkdGhlZGF5LA0KCQkJCSd7d2Vla2RheX0nID0+ICgoaXNf YXJyYXkoJHRoaXMtPmRheU5hbWVGbXQpKSA/ICR0aGlzLT5kYXlOYW1lc1tkYXRlKCd3Jywk dGhpc3RpbWUpXSA6IHN0cmZ0aW1lKCR0aGlzLT5kYXlOYW1lRm10LCAkdGhpc3RpbWUpKSwN CgkJCQkne3dlZWt9JyA9PiAkc21kX2RhdGVbJ3cnXSwNCgkJCQkne21vbnRofScgPT4gJHRo aXMtPm1vbnRoLA0KCQkJCSd7bW9udGhuYW1lfScgPT4gKChpc19hcnJheSgkdGhpcy0+bXRo TmFtZUZtdCkpID8gJHRoaXMtPm10aE5hbWVzW2RhdGUoJ24nLCR0aGlzdGltZSldIDogc3Ry ZnRpbWUoJHRoaXMtPm10aE5hbWVGbXQsICR0aGlzdGltZSkpLA0KCQkJCSd7eWVhcn0nID0+ ICR0aGlzLT55ZWFyLA0KCQkJCSd7c2hvcnR5ZWFyfScgPT4gc3RyZnRpbWUoIiV5IiwgJHRo aXN0aW1lKSwNCgkJCQkne2lzb3llYXJ9JyA9PiAkc21kX2RhdGVbJ2l5J10sDQoJCQkJJ3tz aG9ydGlzb3llYXJ9JyA9PiBzdHJmdGltZSgiJWciLCAkdGhpc3RpbWUpLA0KCQkJKTsNCgkJ CSRjZWxsb3V0ID0gcGFyc2Uoc3RydHIoJHRoaXMtPmNlbGxmb3JtLCAkcmVwcykpOw0KCQkJ JGNhcnJheSA9IGFycmF5X21lcmdlKCRydW5uaW5nY2xhc3MsICRzbWRfY2FsX3VjbHMpOw0K CQkJJHNtZF9jYWxfdWNscyA9IGFycmF5KCk7DQoNCgkJCXJldHVybiBkb1RhZygkY2VsbG91 dCwndGQnLGpvaW4oJyAnLCRjYXJyYXkpKTsNCgkJfSBlbHNlIHsNCgkJCXJldHVybiBkb1Rh Zyhqb2luKCcnLCRvdXQpLCd0ZCcsam9pbignICcsJHJ1bm5pbmdjbGFzcykpOw0KCQl9DQoJ fQ0KDQoJZnVuY3Rpb24gZGlzcGxheSgkc3RhdGljPWZhbHNlLCAkZnV0dXJlPWZhbHNlKSB7 DQoJCSRpZCA9ICgkdGhpcy0+dGFibGVJRCkgPyAnIGlkPSInLiR0aGlzLT50YWJsZUlELici JyA6ICcnOw0KCQkkY1tdID0gJHRoaXMtPmRzcEhlYWRlcigkc3RhdGljLCAkZnV0dXJlKTsN CgkJJGNbXSA9ICR0aGlzLT5kc3BEYXlOYW1lcygpOw0KCQkkY1tdID0gJHRoaXMtPmRzcERh eUNlbGxzKCk7DQoNCgkJcmV0dXJuIGRvVGFnKGpvaW4oJycsJGMpLCd0YWJsZScsJHRoaXMt PnRhYmxlY2xhc3MsJGlkKTsNCgl9DQoNCglmdW5jdGlvbiBkc3BIZWFkZXIoJHN0YXRpYywg JGZ1dHVyZSkgew0KCQlnbG9iYWwgJHByZXRleHQsICRzbWRfY2FsaW5mbzsNCg0KCQkkY3Vy cm1vID0gJHRoaXMtPm1vbnRoOw0KCQkkY3VycnlyID0gJHRoaXMtPnllYXI7DQoJCSRuYXZw Y2xhc3MgPSAkdGhpcy0+Z2V0TmF2SW5mbygicGMiKTsNCgkJJG5hdm5jbGFzcyA9ICR0aGlz LT5nZXROYXZJbmZvKCJuYyIpOw0KCQkkbmF2cGFycm93ID0gJHRoaXMtPmdldE5hdkluZm8o InBhIik7DQoJCSRuYXZuYXJyb3cgPSAkdGhpcy0+Z2V0TmF2SW5mbygibmEiKTsNCgkJJG5h dmlkID0gJHRoaXMtPmdldE5hdkluZm8oImlkIik7DQoJCSRuYXZwY2xhc3MgPSAoJG5hdnBj bGFzcykgPyAnIGNsYXNzPSInLiRuYXZwY2xhc3MuJyInIDogJyc7DQoJCSRuYXZuY2xhc3Mg PSAoJG5hdm5jbGFzcykgPyAnIGNsYXNzPSInLiRuYXZuY2xhc3MuJyInIDogJyc7DQoJCSRm b3B0cyA9ICR0aGlzLT5mb3B0czsNCg0KCQkkc2VjID0gKGlzc2V0KCRzbWRfY2FsaW5mb1sn cyddKSAmJiAhZW1wdHkoJHNtZF9jYWxpbmZvWydzJ10pKSA/ICRzbWRfY2FsaW5mb1sncydd IDogJyc7DQoJCWZvcmVhY2ggKCR0aGlzLT5tYWludGFpbiBhcyAkY29sKSB7DQoJCQlzd2l0 Y2ggKCRjb2wpIHsNCgkJCQljYXNlICJzZWN0aW9uIjoNCgkJCQkJJHNlYyA9ICgkcHJldGV4 dFsncyddKSA/ICRwcmV0ZXh0WydzJ10gOiAkc2VjOw0KCQkJCQlicmVhazsNCgkJCQljYXNl ICJhcnRpY2xlIjoNCgkJCQkJaWYgKCRwcmV0ZXh0WydpZCddKSB7DQoJCQkJCQkkZm9wdHMg PSBhcnJheSgnaWQnID0+ICRwcmV0ZXh0WydpZCddKSArICRmb3B0czsNCgkJCQkJfQ0KCQkJ CQlicmVhazsNCgkJCQljYXNlICJjYXRlZ29yeSI6DQoJCQkJCWlmICgkcHJldGV4dFsnYydd KSB7DQoJCQkJCQkkZm9wdHMgPSBhcnJheSgnYycgPT4gJHByZXRleHRbJ2MnXSkgKyAkZm9w dHM7DQoJCQkJCX0NCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAiYXV0aG9yIjoNCgkJCQkJaWYg KGdwcygnYXV0aG9yJykpIHsNCgkJCQkJCSRmb3B0cyA9IGFycmF5KCdhdXRob3InID0+IGdw cygnYXV0aG9yJykpICsgJGZvcHRzOw0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2Ug InBnIjoNCgkJCQkJaWYgKCRwcmV0ZXh0WydwZyddKSB7DQoJCQkJCQkkZm9wdHMgPSBhcnJh eSgncGcnID0+ICRwcmV0ZXh0WydwZyddKSArICRmb3B0czsNCgkJCQkJfQ0KCQkJCQlicmVh azsNCgkJCQljYXNlICJjYWxpZCI6DQoJCQkJCWlmICgkdGhpcy0+dGFibGVJRCkgew0KCQkJ CQkJJGZvcHRzID0gYXJyYXkoJ2NhbGlkJyA9PiAkdGhpcy0+dGFibGVJRCkgKyAkZm9wdHM7 DQoJCQkJCX0NCgkJCQkJYnJlYWs7DQoJCQkJZGVmYXVsdDoNCgkJCQkJaWYgKGdwcygkY29s KSkgew0KCQkJCQkJJGZvcHRzID0gYXJyYXkoJGNvbCA9PiBncHMoJGNvbCkpICsgJGZvcHRz Ow0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJfQ0KCQl9DQoJCSRmb3B0cyA9IGFycmF5X3Vu aXF1ZSgkZm9wdHMpOw0KCQkkZmlsdGVycyA9IGFycmF5KCk7DQoJCSRmaWx0ZXJIaWQgPSBh cnJheSgpOw0KCQlpZiAoISRzdGF0aWMpIHsNCgkJCWZvcmVhY2goJGZvcHRzIGFzICRrZXkg PT4gJHZhbCkgew0KCQkJCSRmaWx0ZXJzW10gPSAka2V5Lic9Jy4kdmFsOw0KCQkJCSRmaWx0 ZXJIaWRbXSA9IGhJbnB1dCgka2V5LCAkdmFsKTsNCgkJCX0NCgkJfQ0KCQkkZmlsdGVyVVJM ID0gam9pbihhLCAkZmlsdGVycyk7DQoNCgkJaWYgKCR0aGlzLT51c2VTZWxlY3Rvcignd2Vl aycpICYmICEkc3RhdGljKSB7DQoJCQkkY3VycndrID0gKCR0aGlzLT53ZWVrKSA/ICR0aGlz LT53ZWVrIDogZGF0ZSgnVycsIHN0cnRvdGltZSgkY3VycnlyLiItIi4kY3Vycm1vLiItMSAx MjowMCIpKTsNCgkJCWZvciAoICRpZHggPSAxOyAkaWR4IDw9IDUzOyAkaWR4KysgKSB7DQoJ CQkJJHRhZ2F0dHMgPSAnIHZhbHVlPSInLiRpZHguJyInOw0KCQkJCWlmICggJGlkeCA9PSAk Y3VycndrICkgJHRhZ2F0dHMgLj0gJyBzZWxlY3RlZD0ic2VsZWN0ZWQiJzsNCgkJCQkkb3B0 aW9udGFnc1tdID0gZG9UYWcoJHRoaXMtPnNlbHBmeFsnd2VlayddLnN0cl9wYWQoJGlkeCwg MiwgJzAnLCBTVFJfUEFEX0xFRlQpLiR0aGlzLT5zZWxzZnhbJ3dlZWsnXSwgJ29wdGlvbics ICcnLCAkdGFnYXR0cyk7DQoJCQl9DQoJCQkkc2VsZWN0b3JbXSA9IGRvVGFnKGpvaW4obiwg JG9wdGlvbnRhZ3MpLCAnc2VsZWN0JywgKCgkdGhpcy0+bXl3cmFwdGFnKSA/ICcnIDogJHRo aXMtPm15Y2xhc3MpLCAnIG5hbWU9IicuJHRoaXMtPnJlbWFwWyd3J10uJyInLigoJHRoaXMt PnNlbGJ0bikgPyAnJyA6ICcgb25jaGFuZ2U9InN1Ym1pdCgpIicpLCAnJykNCiAgIAkJCQku ICgoJHRoaXMtPnVzZVNlbGVjdG9yKCd5ZWFyJykpID8gJycgOiBoSW5wdXQoJHRoaXMtPnJl bWFwWyd5J10sICRjdXJyeXIpKTsNCgkJCSRvcHRpb250YWdzID0gYXJyYXkoKTsNCgkJfQ0K DQoJCWlmICghJHRoaXMtPnVzZVNlbGVjdG9yKCd3ZWVrJykpIHsNCgkJCWlmICgkdGhpcy0+ dXNlU2VsZWN0b3IoJ21vbnRoJykgJiYgISRzdGF0aWMpIHsNCgkJCQlmb3IgKCAkaWR4ID0g MTsgJGlkeCA8PSAxMjsgJGlkeCsrICkgew0KCQkJCQkkdGFnYXR0cyA9ICcgdmFsdWU9Iicu JGlkeC4nIic7DQoJCQkJCWlmICggJGlkeCA9PSAkY3Vycm1vICkgJHRhZ2F0dHMgLj0gJyBz ZWxlY3RlZD0ic2VsZWN0ZWQiJzsNCgkJCQkJJG9wdGlvbnRhZ3NbXSA9IGRvVGFnKCR0aGlz LT5zZWxwZnhbJ21vbnRoJ10uKChpc19hcnJheSgkdGhpcy0+bXRoTmFtZUZtdCkpID8gJHRo aXMtPm10aE5hbWVzW2RhdGUoJ24nLGdtbWt0aW1lKDEyLDAsMCwkaWR4LDEpKV0gOiBzdHJm dGltZSgkdGhpcy0+bXRoTmFtZUZtdCwgZ21ta3RpbWUoMTIsMCwwLCRpZHgsMSkpKS4kdGhp cy0+c2Vsc2Z4Wydtb250aCddLCAnb3B0aW9uJywgJycsICR0YWdhdHRzKTsNCgkJCQl9DQoJ CQkJJHNlbGVjdG9yW10gPSBkb1RhZyhqb2luKG4sICRvcHRpb250YWdzKSwgJ3NlbGVjdCcs ICgoJHRoaXMtPm15d3JhcHRhZykgPyAnJyA6ICR0aGlzLT5teWNsYXNzKSwgJyBuYW1lPSIn LiR0aGlzLT5yZW1hcFsnbSddLiciJy4oKCR0aGlzLT5zZWxidG4pID8gJycgOiAnIG9uY2hh bmdlPSJzdWJtaXQoKSInKSwgJycpDQoJICAgCQkJCS4gKCgkdGhpcy0+dXNlU2VsZWN0b3Io J3llYXInKSkgPyAnJyA6IGhJbnB1dCgkdGhpcy0+cmVtYXBbJ3knXSwgJGN1cnJ5cikpOw0K CQkJCSRvcHRpb250YWdzID0gYXJyYXkoKTsNCgkJCX0gZWxzZSB7DQoJCQkJJHNlbGVjdG9y W10gPSBkb1RhZygkdGhpcy0+Z2V0TW9udGhOYW1lKCksICdzcGFuJywgKCgkdGhpcy0+bXl3 cmFwdGFnKSA/ICcnIDogJHRoaXMtPm15Y2xhc3MpKTsNCgkJCX0NCgkJfQ0KDQoJCSR5MCA9 ICR0aGlzLT5leXI7DQoJCSR5MSA9ICR0aGlzLT5seXI7DQoJCWlmICgkdGhpcy0+dXNlU2Vs ZWN0b3IoJ3llYXInKSAmJiAoJHkwICE9ICR5MSkgJiYgISRzdGF0aWMpIHsNCgkJCWZvciAo ICRpZHggPSAkeTA7ICRpZHggPD0gJHkxOyAkaWR4KysgKSB7DQoJCQkJJHRhZ2F0dHMgPSAn IHZhbHVlPSInLiRpZHguJyInOw0KCQkJCWlmICggJGlkeCA9PSAkY3VycnlyICkgJHRhZ2F0 dHMgLj0gJyBzZWxlY3RlZD0ic2VsZWN0ZWQiJzsNCgkJCQkkb3B0aW9udGFnc1tdID0gZG9U YWcoJHRoaXMtPnNlbHBmeFsneWVhciddLiRpZHguJHRoaXMtPnNlbHNmeFsneWVhciddLCAn b3B0aW9uJywgJycsICR0YWdhdHRzKTsNCgkJCX0NCgkJCSRzZWxlY3RvcltdID0gZG9UYWco am9pbihuLCAkb3B0aW9udGFncyksICdzZWxlY3QnLCAoKCR0aGlzLT5teXdyYXB0YWcpID8g JycgOiAkdGhpcy0+bXljbGFzcyksICcgbmFtZT0iJy4kdGhpcy0+cmVtYXBbJ3knXS4nIicu KCgkdGhpcy0+c2VsYnRuKSA/ICcnIDogJyBvbmNoYW5nZT0ic3VibWl0KCkiJyksICcnKQ0K CQkJCQkuICgoJHRoaXMtPnVzZVNlbGVjdG9yKCdtb250aCcpIHx8ICR0aGlzLT51c2VTZWxl Y3Rvcignd2VlaycpKSA/ICcnIDogaElucHV0KCR0aGlzLT5yZW1hcFsnbSddLCAkY3Vycm1v KSk7DQoJCX0gZWxzZSB7DQoJCQkkc2VsZWN0b3JbXSA9IGRvVGFnKCRjdXJyeXIsICdzcGFu JywgKCgkdGhpcy0+bXl3cmFwdGFnKSA/ICcnIDogJHRoaXMtPm15Y2xhc3MpKTsNCgkJfQ0K DQoJCSRleHRyYXMgPSAnJzsNCgkJaWYgKCEkc3RhdGljICYmICggJHRoaXMtPnVzZVNlbGVj dG9yKCdtb250aCcpIHx8ICR0aGlzLT51c2VTZWxlY3RvcigneWVhcicpICkpIHsNCgkJCWlm ICgkdGhpcy0+c2VsYnRuKSB7DQoJCQkJJGV4dHJhcyAuPSBkb1RhZygnJywgJ2lucHV0Jywg J3NtZF9jYWxfaW5wdXQnLCAnIHR5cGU9InN1Ym1pdCIgdmFsdWU9IicuJHRoaXMtPnNlbGJ0 bi4nIicpOw0KCQkJfQ0KCQkJJGV4dHJhcyAuPSBqb2luKCcnLCAkZmlsdGVySGlkKTsNCgkJ fQ0KDQoJCSR1cmxwID0gcGFyc2VfdXJsKCRwcmV0ZXh0WydyZXF1ZXN0X3VyaSddKTsNCgkJ JHNlbGVjdG9yID0gJzxmb3JtIGFjdGlvbj0iJy4kdXJscFsncGF0aCddLiciIG1ldGhvZD0i Z2V0IicuKCgkbmF2aWQpID8gJyBpZD0iJy4kbmF2aWQuJyInIDogJycpLic+Jy5kb1RhZyhq b2luKHNwLCAkc2VsZWN0b3IpLiRleHRyYXMsICR0aGlzLT5teXdyYXB0YWcsICR0aGlzLT5t eWNsYXNzKS4nPC9mb3JtPic7DQoNCgkJJG5hdl9iYWNrX2xpbmsgPSAkdGhpcy0+bmF2aWdh dGlvbigkY3VycnlyLCAkY3Vycm1vLCAnLScsICRmaWx0ZXJVUkwsICRzZWMpOw0KCQkkbmF2 X2Z3ZF9saW5rICA9ICR0aGlzLT5uYXZpZ2F0aW9uKCRjdXJyeXIsICRjdXJybW8sICcrJywg JGZpbHRlclVSTCwgJHNlYyk7DQoNCgkJJG5hdl9iYWNrID0gKCEkc3RhdGljICYmICRuYXZf YmFja19saW5rKSA/ICc8YSBocmVmPSInLiRuYXZfYmFja19saW5rLiciJy4kbmF2cGNsYXNz Lic+Jy4kbmF2cGFycm93Lic8L2E+JyA6ICcmbmJzcDsnOw0KCQkkbmF2X2Z3ZCAgPSAoISRz dGF0aWMgJiYgJGZ1dHVyZSAmJiAkbmF2X2Z3ZF9saW5rKSA/ICc8YSBocmVmPSInLiRuYXZf ZndkX2xpbmsuJyInLiRuYXZuY2xhc3MuJz4nLiRuYXZuYXJyb3cuJzwvYT4nIDogJyZuYnNw Oyc7DQoNCgkJJGNbXSA9IGRvVGFnKCRuYXZfYmFjaywndGgnKTsNCgkJJGNbXSA9ICc8dGgg Y29sc3Bhbj0iJy4oKCR0aGlzLT5zaG93SVNPV2VlaykgPyA2IDogNSkuJyI+Jy4kc2VsZWN0 b3IuJzwvdGg+JzsNCgkJJGNbXSA9IGRvVGFnKCRuYXZfZndkLCd0aCcpOw0KDQoJCXJldHVy biBkb1RhZyhqb2luKCcnLCRjKSwndHInLCAnc21kX2NhbF9uYXZyb3cnKTsNCgl9DQoNCglm dW5jdGlvbiBuYXZpZ2F0aW9uKCR5ZWFyLCRtb250aCwkZGlyZWN0aW9uLCRmbHQsJHNlYz0n Jykgew0KCQlnbG9iYWwgJHBlcm1saW5rX21vZGU7DQoNCgkJaWYoJGRpcmVjdGlvbiA9PSAn LScpIHsNCgkJCWlmKCRtb250aCAtIDEgPCAxKSB7DQoJCQkJJG1vbnRoID0gMTI7DQoJCQkJ JHllYXIgLT0gMTsNCgkJCX0gZWxzZSB7DQoJCQkJJG1vbnRoIC09IDE7DQoJCQl9DQoJCX0g ZWxzZSB7DQoJCQlpZigkbW9udGggKyAxID4gMTIpIHsNCgkJCQkkbW9udGggPSAxOw0KCQkJ CSR5ZWFyICs9IDE7DQoJCQl9IGVsc2Ugew0KCQkJCSRtb250aCArPSAxOw0KCQkJfQ0KCQl9 DQoNCgkJaWYgKCR5ZWFyIDwgJHRoaXMtPmV5ciB8fCAkeWVhciA+ICR0aGlzLT5seXIpIHsN CgkJCXJldHVybiAnJzsNCgkJfQ0KCQkkZmx0ID0gKCRmbHQpID8gYS4kZmx0IDogJyc7DQoJ CWlmKCRwZXJtbGlua19tb2RlICE9ICdtZXNzeScpIHsNCgkJCSR1cmwgPSAnJzsNCgkJCWlm ICgkc2VjICYmIHN0cnBvcygkcGVybWxpbmtfbW9kZSwgJ3NlY3Rpb24nICE9PSBmYWxzZSkp IHsNCgkJCQkkdXJsID0gaHUuJHNlYy4nLycuKCgkcGVybWxpbmtfbW9kZT09J3NlY3Rpb25f aWRfdGl0bGUnKSA/ICRzbWRfY2FsaW5mb1snYXJ0aWQnXSA6ICcnKS4kc21kX2NhbGluZm9b J2FydGl0bGUnXTsNCgkJCX0NCgkJCXJldHVybiAkdXJsLiI/Ii4kdGhpcy0+cmVtYXBbJ20n XS4iPSRtb250aCIuYS4kdGhpcy0+cmVtYXBbJ3knXS4iPSR5ZWFyIi4kZmx0Ow0KCQl9IGVs c2Ugew0KCQkJJG91dCA9IG1ha2VPdXQoJ2lkJywncycsJ2MnLCdxJywncGcnLCdwJywnbW9u dGgnKTsNCgkJCSRvdXRbJ3MnXSA9ICgkc2VjKSA/ICRzZWMgOiAkb3V0WydzJ107DQoJCQkk ciA9ICc/JzsNCgkJCWZvcmVhY2goJG91dCBhcyAka2V5ID0+ICR2YWwgKSB7DQoJCQkJJHIg Lj0gKCR2YWwpID8gIiRrZXk9JHZhbCIuYSA6ICcnOw0KCQkJfQ0KCQkJcmV0dXJuICRyLiR0 aGlzLT5yZW1hcFsnbSddLiI9JG1vbnRoIi5hLiR0aGlzLT5yZW1hcFsneSddLiI9JHllYXIi LiRmbHQ7DQoJCX0NCgl9DQp9DQoNCmNsYXNzIFNNRF9TbWFsbF9DYWxlbmRhciBleHRlbmRz IFNNRF9DYWxlbmRhciB7DQoJdmFyICRzZWN0aW9uID0gJyc7DQoJdmFyICRjYXRlZ29yeSA9 ICcnOw0KCWZ1bmN0aW9uIFNNRF9TbWFsbF9DYWxlbmRhcigkeWVhciwkbW9udGgsJGV2ZW50 cywkc2VjdGlvbiwkY2F0ZWdvcnkpIHsNCgkJJHRoaXMtPnNlY3Rpb24gPSAkc2VjdGlvbjsN CgkJJHRoaXMtPmNhdGVnb3J5ID0gJGNhdGVnb3J5Ow0KCQkkdGhpcy0+U01EX0NhbGVuZGFy KCR5ZWFyLCRtb250aCwkZXZlbnRzKTsNCgl9DQoNCglmdW5jdGlvbiBkc3BEYXlDZWxsKCR0 aGVkYXkpIHsNCgkJZ2xvYmFsICRwZXJtbGlua19tb2RlOw0KCQkkaGFzYXJ0aWNsZSA9IGlz c2V0KCR0aGlzLT5ldmVudHNbJHRoZWRheV0pOw0KCQkkY2xhc3MgPSBhcnJheSgpOw0KCQkk dGRjbGFzcyA9ICR0aGlzLT5jZWxsY2xhc3MuJyAnLiAoKCRoYXNhcnRpY2xlKSA/ICR0aGlz LT5jbHNfcGZ4LidldmVudCcgOiAnJyk7DQoJCWlmICh0cmltKCR0ZGNsYXNzKSAhPSAiIikg ew0KCQkJJGNsYXNzW10gPSAkdGRjbGFzczsNCgkJfQ0KCQlpZiAoKGluX2FycmF5KCBkYXRl KCdkLU0tWScsIGdtbWt0aW1lKCAwLCAwLCAwLCAkdGhpcy0+bW9udGgsICR0aGVkYXksICR0 aGlzLT55ZWFyKSApLCAkdGhpcy0+aG9saWRheXMpKSApIHsNCgkJCSRjbGFzc1tdID0gJHRo aXMtPmNsc19wZnguJ2hvbHMnOw0KCQl9DQoJCWlmKCR0aGlzLT55ZWFyID09IGRhdGUoJ1kn LHRpbWUoKSt0el9vZmZzZXQoKSApIGFuZCAkdGhpcy0+bW9udGggPT0gZGF0ZSgnbicsdGlt ZSgpK3R6X29mZnNldCgpICkgYW5kICR0aGVkYXkgPT0gZGF0ZSgnaicsdGltZSgpK3R6X29m ZnNldCgpKSApIHsNCgkJCSRjbGFzc1tdID0gJHRoaXMtPmNsc19wZnguJ3RvZGF5JzsNCgkJ fQ0KDQoJCWlmKCBpc3NldCgkdGhpcy0+ZXZlbnRzWyR0aGVkYXldKSApIHsNCgkJCSRkYXlz X2V2ZW50cyA9ICR0aGlzLT5ldmVudHNbJHRoZWRheV07DQoJCQlmb3JlYWNoKCRkYXlzX2V2 ZW50cyBhcyAkZXYpIHsNCgkJCQkkZXZjbGFzcyA9IHRyaW0oJGV2WydjbGFzc2VzJ10pOw0K CQkJCWZvcmVhY2ggKGV4cGxvZGUoJyAnLCAkZXZjbGFzcykgYXMgJGV2Yykgew0KCQkJCQkk Y2xhc3NbXT0gJGV2YzsNCgkJCQl9DQoNCgkJCQkkb3V0W10gPSAoJHRoaXMtPmV2d3JhcHRh ZykgPyB0YWcoJGV2WydldiddLCAkdGhpcy0+ZXZ3cmFwdGFnLCAoKCRldmNsYXNzKSA/ICcg Y2xhc3M9IicudHJpbSgkZXZjbGFzcykuJyInIDogJycpKSA6ICRldlsnZXYnXTsNCgkJCX0N CgkJCSR1c2VfcG9zdGVkID0gZmFsc2U7DQoJCQlmb3JlYWNoICgkdGhpcy0+bGlua3Bvc3Rl ZCBhcyAkZGxpbmtzKSB7DQoJCQkJaWYgKGluX2FycmF5KCRkbGlua3MsICRjbGFzcykpIHsN CgkJCQkJJHVzZV9wb3N0ZWQgPSB0cnVlOw0KCQkJCQlicmVhazsNCgkJCQl9DQoJCQl9DQoJ CQlpZiggJHBlcm1saW5rX21vZGUgIT0gJ3llYXJfbW9udGhfZGF5X3RpdGxlJyApIHsNCgkJ CQkkbGlua2RhdGUgPSAoJHVzZV9wb3N0ZWQpID8gJGV2Wydwb3N0ZWQnXSA6ICR0aGlzLT55 ZWFyLictJy4kdGhpcy0+ZG91YmxlZGlnaXQoJHRoaXMtPm1vbnRoKS4nLScuJHRoaXMtPmRv dWJsZWRpZ2l0KCR0aGVkYXkpOw0KCQkJCSRocmVmID0gJyBocmVmPSInLmh1Lic/ZGF0ZT0n LiRsaW5rZGF0ZTsNCgkJCQlpZigkdGhpcy0+c2VjdGlvbikgeyAkaHJlZiA9ICRocmVmLmEu J3M9Jy4kdGhpcy0+c2VjdGlvbjsgfQ0KCQkJCWlmKCR0aGlzLT5jYXRlZ29yeSkgeyAkaHJl ZiA9ICRocmVmLmEuJ2M9Jy4kdGhpcy0+Y2F0ZWdvcnk7IH0NCgkJCQkkaHJlZiAuPSAnIic7 DQoJCQl9IGVsc2Ugew0KCQkJCSRzZWN0aW9uID0gKCR0aGlzLT5zZWN0aW9uKSA/ICR0aGlz LT5zZWN0aW9uLicvJyA6ICcnOw0KCQkJCSRsaW5rZGF0ZSA9ICgkdXNlX3Bvc3RlZCkgPyBw cmVnX3JlcGxhY2UoIi0iLCAiLyIsICRldlsncG9zdGVkJ10pIDogJHRoaXMtPnllYXIuJy8n LiR0aGlzLT5kb3VibGVkaWdpdCgkdGhpcy0+bW9udGgpLicvJy4kdGhpcy0+ZG91YmxlZGln aXQoJHRoZWRheSk7DQoJCQkJJGhyZWYgPSAnIGhyZWY9IicuaHUuJHNlY3Rpb24uJGxpbmtk YXRlLiciJzsNCgkJCX0NCg0KCQkJJGNbXSA9IGRvVGFnKCR0aGVkYXkuam9pbignJywkb3V0 KSwnYScsJycsJGhyZWYpOw0KCQl9IGVsc2Ugew0KCQkJJGNbXSA9ICR0aGVkYXk7DQoJCX0N Cg0KCQlyZXR1cm4gZG9UYWcoam9pbignJywkYyksJ3RkJyxqb2luKCcgJywkY2xhc3MpKTsN Cgl9DQoNCglmdW5jdGlvbiBkb3VibGVkaWdpdCgkbikgew0KCQlpZigkbiA8IDEwKSB7ICRu ID0gJzAnLihpbnQpJG47IH0NCgkJcmV0dXJuICRuOw0KCX0NCg0KfQ0KDQpjbGFzcyBTTURf UmF3X0NhbGVuZGFyIHsNCnZhciAkZ210ID0gMSwgJGxhbmc7DQp2YXIgJHllYXIsICRleXIs ICRseXIsICRtb250aCwgJHdlZWs7DQp2YXIgJGRheU5hbWVGbXQsICRtdGhOYW1lRm10LCAk ZGF5TmFtZXMsICRtdGhOYW1lcywgJHN0YXJ0RGF5LCAkZW5kRGF5LCAkZmlyc3REYXlPZldl ZWsgPSAwLCAkc3RhcnRPZmZzZXQgPSAwOw0KdmFyICRzZWxlY3RvcnMsICRzZWxidG4sICRz ZWxwZngsICRzZWxzZng7DQp2YXIgJHNob3dJU09XZWVrLCAkSVNPV2Vla0hlYWQsICRJU09X ZWVrQ2VsbDsNCnZhciAkY2xzX2xldiwgJGNsc19wZngsICRmb3B0czsNCnZhciAkZXZ3cmFw dGFnLCAkbXl3cmFwdGFnOw0KdmFyICRyb3djbGFzcywgJGNlbGxjbGFzcywgJGVtcHR5Y2xh c3MsICRpc29jbGFzcywgJG15Y2xhc3MsICR0YWJsZUlEOw0KdmFyICRuYXZwY2xhc3MsICRu YXZuY2xhc3MsICRuYXZwYXJyb3csICRuYXZuYXJyb3csICRuYXZpZDsNCnZhciAkaG9saWRh eXMsICRsaW5rcG9zdGVkLCAkY2VsbGZvcm0sICRtYWludGFpbiwgJHJlbWFwOw0KZnVuY3Rp b24gU01EX1Jhd19DYWxlbmRhciAoJHlyLCAkbW8pIHsNCgkkdGhpcy0+c2V0WWVhcigkeXIp Ow0KCSR0aGlzLT5zZXRNb250aCgkbW8pOw0KCSR0aGlzLT5zZXRDbGFzc1ByZWZpeCgnc21k X2NhbF8nKTsNCg0KCSR0aGlzLT5zdGFydFRpbWUgPSBzdHJ0b3RpbWUoICIkeXItJG1vLTAx IDAwOjAwIiApOw0KCSR0aGlzLT5zdGFydERheQk9IGRhdGUoICdEJywgJHRoaXMtPnN0YXJ0 VGltZSApOw0KCSR0aGlzLT5lbmREYXkgPSBkYXRlKCAndCcsICR0aGlzLT5zdGFydFRpbWUg KTsNCgkkdGhpcy0+ZW5kVGltZSAgID0gc3RydG90aW1lKCAiJHlyLSRtby0iLiR0aGlzLT5l bmREYXkuIiAyMzo1OSIgKTsNCg0KCSR0aGlzLT5zZXROYW1lRm9ybWF0KCclYScsICdkJyk7 DQoJJHRoaXMtPnNldE5hbWVGb3JtYXQoJyVCJywgJ20nKTsNCgkkdGhpcy0+c2V0Rmlyc3RE YXlPZldlZWsoMCk7DQoJJHRoaXMtPnNldFNob3dJU09XZWVrKCcnKTsNCgkkdGhpcy0+c2V0 VGFibGVJRCgnJyk7DQoJJHRoaXMtPnNldFRhYmxlQ2xhc3MoJycpOw0KfQ0KDQpmdW5jdGlv biB1c2VTZWxlY3RvcigkdmFsKSB7IHJldHVybiBpbl9hcnJheSgkdmFsLCAkdGhpcy0+c2Vs ZWN0b3JzKTsgfQ0KZnVuY3Rpb24gZ2V0RGF5TmFtZSgkZGF5KSB7IHJldHVybiAoJHRoaXMt PmRheU5hbWVzWyRkYXklN10pOyB9DQpmdW5jdGlvbiBnZXRNb250aE5hbWUoKSB7DQoJaWYg KGlzX2FycmF5KCR0aGlzLT5tdGhOYW1lRm10KSkgew0KCQlyZXR1cm4gJHRoaXMtPm10aE5h bWVzW2RhdGUoJ24nLCR0aGlzLT5zdGFydFRpbWUpXTsNCgl9IGVsc2Ugew0KCQlyZXR1cm4g c3RyZnRpbWUoJHRoaXMtPm10aE5hbWVGbXQsICR0aGlzLT5zdGFydFRpbWUpOw0KCX0NCn0N CmZ1bmN0aW9uIGdldE5hdkluZm8oJHR5cGUpIHsNCgkkciA9ICcnOw0KCXN3aXRjaCAoJHR5 cGUpIHsNCgkJY2FzZSAiaWQiOiAkciA9ICR0aGlzLT5uYXZpZDsgYnJlYWs7DQoJCWNhc2Ug InBjIjogJHIgPSAkdGhpcy0+bmF2cGNsYXNzOyBicmVhazsNCgkJY2FzZSAibmMiOiAkciA9 ICR0aGlzLT5uYXZuY2xhc3M7IGJyZWFrOw0KCQljYXNlICJwYSI6ICRyID0gJHRoaXMtPm5h dnBhcnJvdzsgYnJlYWs7DQoJCWNhc2UgIm5hIjogJHIgPSAkdGhpcy0+bmF2bmFycm93OyBi cmVhazsNCgl9DQoJcmV0dXJuICRyOw0KfQ0KDQpmdW5jdGlvbiBzZXRHTVQoJGIpeyAkdGhp cy0+Z210ID0gJGI7IH0NCmZ1bmN0aW9uIHNldExhbmcoJGNvZGUpeyAkdGhpcy0+bGFuZyA9 ICRjb2RlOyB9DQpmdW5jdGlvbiBzZXRDZWxsRm9ybSgkZnJtKXsgJHRoaXMtPmNlbGxmb3Jt ID0gJGZybTsgfQ0KZnVuY3Rpb24gc2V0VGFibGVJRCgkaWQpeyAkdGhpcy0+dGFibGVJRCA9 ICRpZDsgfQ0KZnVuY3Rpb24gc2V0WWVhcigkeXIpeyAkdGhpcy0+eWVhciA9ICR5cjsgfQ0K ZnVuY3Rpb24gc2V0RVllYXIoJHlyKXsgJHRoaXMtPmV5ciA9ICR5cjsgfQ0KZnVuY3Rpb24g c2V0TFllYXIoJHlyKXsgJHRoaXMtPmx5ciA9ICR5cjsgfQ0KZnVuY3Rpb24gc2V0TW9udGgo JG10aCl7ICR0aGlzLT5tb250aCA9IChpbnQpJG10aDsgfQ0KZnVuY3Rpb24gc2V0V2Vlaygk d2spew0KCWlmICgkd2spIHsNCgkJJHdrID0gc3RyX3BhZCgkd2ssIDIsICcwJywgU1RSX1BB RF9MRUZUKTsNCgkJJHRoaXMtPndlZWsgPSAkd2s7DQoJCSR0aGlzLT5tb250aCA9IHNhZmVf c3RyZnRpbWUoIiVtIiwgc3RydG90aW1lKCR0aGlzLT55ZWFyLiJXIi4kd2spKTsNCgl9DQp9 DQpmdW5jdGlvbiBzZXROYXZLZWVwKCRhcil7ICR0aGlzLT5tYWludGFpbiA9ICRhcjsgfQ0K ZnVuY3Rpb24gc2V0U2hvd0lTT1dlZWsoJHZhbCkgew0KCSR0aGlzLT5zaG93SVNPV2VlayA9 ICgkdmFsKSA/IHRydWUgOiBmYWxzZTsNCglpZiAoJHZhbCkgew0KCQkkdmFsID0gZG9fbGlz dCgkdmFsKTsNCgkJJHRoaXMtPklTT1dlZWtIZWFkID0gJHZhbFswXTsNCgkJJHRoaXMtPklT T1dlZWtDZWxsID0gKGlzc2V0KCR2YWxbMV0pKSA/ICR2YWxbMV0gOiAne3dlZWt9JzsNCgl9 DQp9DQpmdW5jdGlvbiBzZXRSZW1hcCgkbWFwKXsgJHRoaXMtPnJlbWFwID0gJG1hcDsgfQ0K ZnVuY3Rpb24gc2V0Q2xhc3NMZXZlbHMoJGNscyl7ICR0aGlzLT5jbHNfbGV2ID0gJGNsczsg fQ0KZnVuY3Rpb24gc2V0Q2xhc3NQcmVmaXgoJGNscyl7ICR0aGlzLT5jbHNfcGZ4ID0gJGNs czsgfQ0KZnVuY3Rpb24gc2V0RXZlbnRXcmFwdGFnKCR3cmFwKXsgJHRoaXMtPmV2d3JhcHRh ZyA9ICR3cmFwOyB9DQpmdW5jdGlvbiBzZXRNWVdyYXB0YWcoJHdyYXApeyAkdGhpcy0+bXl3 cmFwdGFnID0gJHdyYXA7IH0NCmZ1bmN0aW9uIHNldFRhYmxlQ2xhc3MoJGNscykgeyAkdGhp cy0+dGFibGVjbGFzcyA9ICgkY2xzKSA/ICR0aGlzLT5jbHNfcGZ4LiRjbHMgOiAnJzsgfQ0K ZnVuY3Rpb24gc2V0Um93Q2xhc3MoJGNscyl7ICR0aGlzLT5yb3djbGFzcyA9ICgkY2xzKSA/ ICR0aGlzLT5jbHNfcGZ4LiRjbHMgOiAnJzsgfQ0KZnVuY3Rpb24gc2V0Q2VsbENsYXNzKCRj bHMpeyAkdGhpcy0+Y2VsbGNsYXNzID0gKCRjbHMpID8gJHRoaXMtPmNsc19wZnguJGNscyA6 ICcnOyB9DQpmdW5jdGlvbiBzZXRFbXB0eUNsYXNzKCRjbHMpeyAkdGhpcy0+ZW1wdHljbGFz cyA9ICgkY2xzKSA/ICR0aGlzLT5jbHNfcGZ4LiRjbHMgOiAnJzsgfQ0KZnVuY3Rpb24gc2V0 SVNPV2Vla0NsYXNzKCRjbHMpeyAkdGhpcy0+aXNvY2xhc3MgPSAoJGNscykgPyAkdGhpcy0+ Y2xzX3BmeC4kY2xzIDogJyc7IH0NCmZ1bmN0aW9uIHNldE5hdkluZm8oJGNsc3AsICRjbHNu LCAkYXJycCwgJGFycm4sICRuaWQpew0KCSR0aGlzLT5uYXZwY2xhc3MgPSAoJGNsc3ApID8g JHRoaXMtPmNsc19wZnguJGNsc3AgOiAnJzsNCgkkdGhpcy0+bmF2bmNsYXNzID0gKCRjbHNu KSA/ICR0aGlzLT5jbHNfcGZ4LiRjbHNuIDogJyc7DQoJJHRoaXMtPm5hdnBhcnJvdyA9ICgk YXJycCkgPyAkYXJycCA6ICcnOw0KCSR0aGlzLT5uYXZuYXJyb3cgPSAoJGFycm4pID8gJGFy cm4gOiAnJzsNCgkkdGhpcy0+bmF2aWQgPSAoJG5pZCkgPyAkdGhpcy0+Y2xzX3BmeC4kbmlk IDogJyc7DQp9DQpmdW5jdGlvbiBzZXRNWUNsYXNzKCRjbHMpeyAkdGhpcy0+bXljbGFzcyA9 ICgkY2xzKSA/ICR0aGlzLT5jbHNfcGZ4LiRjbHMgOiAnJzsgfQ0KZnVuY3Rpb24gc2V0Rmls dGVyT3B0cygkZikgeyAkdGhpcy0+Zm9wdHMgPSAkZjsgfQ0KZnVuY3Rpb24gc2V0TGlua1Bv c3RlZCgkZGwpIHsNCglmb3JlYWNoICgkZGwgYXMgJGR2YWwpIHsNCgkJJHRoaXMtPmxpbmtw b3N0ZWRbXSA9ICR0aGlzLT5jbHNfcGZ4LiRkdmFsOw0KCX0NCn0NCmZ1bmN0aW9uIHNldEhv bGlkYXlzKCRob2xzKSB7ICR0aGlzLT5ob2xpZGF5cyA9ICRob2xzOyB9DQpmdW5jdGlvbiBz ZXRTZWxlY3RvcnMoJHNlbCwgJGJ0bikgew0KCWZvcmVhY2ggKCRzZWwgYXMgJGlkeCA9PiAk aXRlbSkgew0KCQkkc2VscGFydHMgPSBleHBsb2RlKCI6IiwgJGl0ZW0pOw0KCQkkc2VsWyRp ZHhdID0gJHNlbHBhcnRzWzBdOw0KCQkkdGhpcy0+c2VscGZ4WyRzZWxwYXJ0c1swXV0gPSAo aXNzZXQoJHNlbHBhcnRzWzFdKSkgPyAkc2VscGFydHNbMV0gOiAnJzsNCgkJJHRoaXMtPnNl bHNmeFskc2VscGFydHNbMF1dID0gKGlzc2V0KCRzZWxwYXJ0c1syXSkpID8gJHNlbHBhcnRz WzJdIDogJyc7DQoJfQ0KCSR0aGlzLT5zZWxlY3RvcnMgPSAkc2VsOw0KCSR0aGlzLT5zZWxi dG4gPSAkYnRuOw0KfQ0KZnVuY3Rpb24gc2V0Rmlyc3REYXlPZldlZWsoJGQpIHsNCgkkdGhp cy0+Zmlyc3REYXlPZldlZWsgPSAoKGludCkkZCA8PSA2IGFuZCAoaW50KSRkID49IDApID8g KGludCkkZCA6IDA7DQoNCgkkdGhpcy0+c3RhcnRPZmZzZXQgPSBkYXRlKCAndycsICR0aGlz LT5zdGFydFRpbWUgKS0kdGhpcy0+Zmlyc3REYXlPZldlZWs7DQoJaWYgKCAkdGhpcy0+c3Rh cnRPZmZzZXQgPCAwICkgew0KCQkkdGhpcy0+c3RhcnRPZmZzZXQgPSA3IC0gYWJzKCR0aGlz LT5zdGFydE9mZnNldCk7DQoJfQ0KfQ0KLyoqDQoqIGZybTogYW55IHZhbGlkIFBIUCBzdHJm dGltZSgpIHN0cmluZyBvciBBQkJSL0ZVTEwNCiogdHlwOiBkIHRvIHNldCBkYXksIG0gdG8g c2V0IG1vbnRoIGZvcm1hdA0KKi8NCmZ1bmN0aW9uIHNldE5hbWVGb3JtYXQoJGZybSwgJHR5 cD0iZCIpIHsNCglzd2l0Y2ggKCRmcm0pIHsNCgkJY2FzZSAiZnVsbCI6DQoJCWNhc2UgIkZV TEwiOg0KCQkJJGZtdCA9ICgkdHlwID09ICdkJykgPyAiJUEiIDogIiVCIjsNCgkJCWJyZWFr Ow0KCQljYXNlICJhYmJyIjoNCgkJY2FzZSAiQUJCUiI6DQoJCQkkZm10ID0gKCR0eXAgPT0g J2QnKSA/ICIlYSIgOiAiJWIiOw0KCQkJYnJlYWs7DQoJCWRlZmF1bHQ6DQoJCQlpZiAoc3Ry cG9zKCRmcm0sICclJykgPT09IDApIHsNCgkJCQkkZm10ID0gJGZybTsNCgkJCX0gZWxzZSB7 DQoJCQkJJGZybSA9IHRyaW0oJGZybSwgJ3t9Jyk7DQoJCQkJJGZybSA9IGRvX2xpc3QoJGZy bSk7DQoJCQkJJGZtdCA9ICRmcm07DQoJCQl9DQoJCQlicmVhazsNCgl9DQoNCglpZiAoJHR5 cCA9PSAiZCIpIHsNCgkJJHRoaXMtPmRheU5hbWVGbXQgPSAkZm10Ow0KCQkkdGhpcy0+ZGF5 TmFtZXMgPSBhcnJheSgpOw0KDQoJCSRzZXJ2ZXJvZmZzZXQgPSBnbW1rdGltZSgwLDAsMCkg LSBta3RpbWUoMCwwLDApOw0KCQkkc3RhcnQgPSAoJHNlcnZlcm9mZnNldCA8IDApID8gNCA6 IDM7DQoJCSRlbmQgPSAkc3RhcnQgKyA3Ow0KCQlmb3IoJGk9JHN0YXJ0OyAkaTwkZW5kOyAk aSsrKSB7DQoJCQlpZiAoaXNfYXJyYXkoJGZtdCkpIHsNCgkJCQkkdGhpcy0+ZGF5TmFtZXNb XSA9ICRmbXRbJGktJHN0YXJ0XTsNCgkJCX0gZWxzZSB7DQoJCQkJJHRoaXMtPmRheU5hbWVz W10gPSB1Y2ZpcnN0KHNhZmVfc3RyZnRpbWUoJGZtdCwgODY0MDAqJGkgLSB0el9vZmZzZXQo KSwgJHRoaXMtPmdtdCwgJHRoaXMtPmxhbmcgKSk7DQoJCQl9DQoJCX0NCgl9IGVsc2Ugew0K CQkkdGhpcy0+bXRoTmFtZUZtdCA9ICRmbXQ7DQoJCSR0aGlzLT5tdGhOYW1lcyA9IGFycmF5 KCk7DQoJCWZvciAoJGk9MDsgJGk8MTI7ICRpKyspIHsNCgkJCWlmIChpc19hcnJheSgkZm10 KSkgew0KCQkJCSR0aGlzLT5tdGhOYW1lc1skaSsxXSA9ICRmbXRbJGldOw0KCQkJfSBlbHNl IHsNCgkJCQkkdGhpcy0+bXRoTmFtZXNbJGkrMV0gPSB1Y2ZpcnN0KHNhZmVfc3RyZnRpbWUo JGZtdCwgODY0MDAqJGkgLSB0el9vZmZzZXQoKSwgJHRoaXMtPmdtdCwgJHRoaXMtPmxhbmcg KSk7DQoJCQl9DQoJCX0NCgl9DQp9DQovKioNCiogUmV0dXJuIG1hcmt1cCBmb3IgZGlzcGxh eWluZyB0aGUgY2FsZW5kYXIuDQoqIEByZXR1cm4NCiogQHB1YmxpYw0KKi8NCmZ1bmN0aW9u IGRpc3BsYXkgKCApIHsNCgkkaWQgPSAoJHRoaXMtPnRhYmxlSUQpID8gJyBpZD0iJy4kdGhp cy0+dGFibGVJRC4nIicgOiAnJzsNCgkkY1tdID0gJzx0YWJsZScuJGlkLic+JzsNCgkkY1td ID0gJHRoaXMtPmRzcERheU5hbWVzKCk7DQoJJGNbXSA9ICR0aGlzLT5kc3BEYXlDZWxscygp Ow0KCSRjW10gPSAnPC90YWJsZT4nOw0KDQoJcmV0dXJuIGpvaW4oJycsJGMpOw0KfQ0KZnVu Y3Rpb24gZHNwRGF5TmFtZXMgKCApIHsNCgkkY1tdID0gJzx0ciBjbGFzcz0ic21kX2NhbF9k YXluYW1lcyI+JzsNCg0KCSRpID0gJHRoaXMtPmZpcnN0RGF5T2ZXZWVrOw0KCSRqID0gMDsN CgkkZW5kID0gZmFsc2U7DQoNCglpZiAoJHRoaXMtPnNob3dJU09XZWVrKSB7DQoJCSRjW10g PSAiPHRoPiIuJHRoaXMtPklTT1dlZWtIZWFkLiI8L3RoPiI7DQoJfQ0KCWZvcigkaiA9IDA7 ICRqPD02OyAkaisrLCAkaSsrKSB7DQoJCWlmKCRpID09IDcpIHsgJGkgPSAwOyB9DQoJCSRj W10gPSAnPHRoPicuJHRoaXMtPmdldERheU5hbWUoJGkpLiI8L3RoPiI7DQoJfQ0KDQoJJGNb XSA9ICc8L3RyPic7DQoJcmV0dXJuIGpvaW4oJycsJGMpOw0KfQ0KZnVuY3Rpb24gZHNwRGF5 Q2VsbHMgKCApIHsNCgkkaSA9IDA7DQoJJGVtcHR5Q2xhc3MgPSAkdGhpcy0+ZW1wdHljbGFz czsNCgkkaXNvQ2xhc3MgPSAkdGhpcy0+aXNvY2xhc3M7DQoJJHJvd0NsYXNzID0gJHRoaXMt PnJvd2NsYXNzOw0KCSRyb3dDbGFzcyA9ICgkcm93Q2xhc3MpID8gJyBjbGFzcz0iJy4kcm93 Q2xhc3MuJyInIDogJyc7DQoNCgkkY1tdID0gJzx0cicuJHJvd0NsYXNzLic+JzsNCg0KCWlm ICgkdGhpcy0+c2hvd0lTT1dlZWspIHsNCgkJJHJlcHMgPSBhcnJheSgNCgkJCSd7d2Vla30n ID0+IGRhdGUoJ1cnLCAkdGhpcy0+c3RhcnRUaW1lKSwNCgkJCSd7bW9udGh9JyA9PiBkYXRl KCduJywgJHRoaXMtPnN0YXJ0VGltZSksDQoJCQkne3llYXJ9JyA9PiBkYXRlKCdZJywgJHRo aXMtPnN0YXJ0VGltZSksDQoJCQkne2lzb3llYXJ9JyA9PiBkYXRlKCdvJywgJHRoaXMtPnN0 YXJ0VGltZSksDQoJCSk7DQoJCSR3a2NlbGwgPSBzdHJ0cigkdGhpcy0+SVNPV2Vla0NlbGws ICRyZXBzKTsNCgkJJGNbXSA9ICc8dGQgY2xhc3M9IicuJGlzb0NsYXNzLiciPicuJHdrY2Vs bC4nPC90ZD4nOw0KCX0NCg0KCWZvciggJGo9MDsgJGo8JHRoaXMtPnN0YXJ0T2Zmc2V0OyAk aisrICkJew0KCQkkaSsrOw0KCQkkY1tdID0gJzx0ZCBjbGFzcz0iJy4kZW1wdHlDbGFzcy4n Ij4mbmJzcDs8L3RkPic7DQoJfQ0KDQoJZm9yKCAkZD0xOyAkZDw9JHRoaXMtPmVuZERheTsg JGQrKyApIHsNCgkJJGkrKzsNCgkJJGNbXSA9ICR0aGlzLT5kc3BEYXlDZWxsKCAkZCApOw0K CQlpZiAoICRpJTcgPT0gMCApIHsgJGNbXSA9ICc8L3RyPic7IH0NCgkJaWYgKCAkZDwkdGhp cy0+ZW5kRGF5ICYmICRpJTcgPT0gMCApIHsNCgkJCSRjW10gPSAnPHRyJy4kcm93Q2xhc3Mu Jz4nOw0KCQkJaWYgKCR0aGlzLT5zaG93SVNPV2Vlaykgew0KCQkJCSR0aGVUaW1lID0gc3Ry dG90aW1lKCR0aGlzLT55ZWFyLiItIi4kdGhpcy0+bW9udGguIi0iLihpbnQpKCRkICsgMSkg LiIgMDA6MDAiKTsNCgkJCQkkcmVwcyA9IGFycmF5KA0KCQkJCQkne3dlZWt9JyA9PiBkYXRl KCdXJywgJHRoZVRpbWUpLA0KCQkJCQkne21vbnRofScgPT4gZGF0ZSgnbicsICR0aGVUaW1l KSwNCgkJCQkJJ3t5ZWFyfScgPT4gZGF0ZSgnWScsICR0aGVUaW1lKSwNCgkJCQkJJ3tpc295 ZWFyfScgPT4gZGF0ZSgnbycsICR0aGVUaW1lKSwNCgkJCQkpOw0KCQkJCSR3a2NlbGwgPSBz dHJ0cigkdGhpcy0+SVNPV2Vla0NlbGwsICRyZXBzKTsNCgkJCQkkY1tdID0gJzx0ZCBjbGFz cz0iJy4kaXNvQ2xhc3MuJyI+Jy4kd2tjZWxsLic8L3RkPic7DQoJCQl9DQoJCX0NCgl9DQoN CgkkbGVmdCA9IDcgLSAoICRpJTcgKTsNCglpZiAoICRsZWZ0IDwgNykJew0KCQlmb3IgKCAk aj0wOyAkajwkbGVmdDsgJGorKyApCXsNCgkJICAkY1tdID0gJzx0ZCBjbGFzcz0iJy4kZW1w dHlDbGFzcy4nIj4mbmJzcDs8L3RkPic7DQoJCX0NCgkJJGNbXSA9ICJcblx0PC90cj4iOw0K CX0NCglyZXR1cm4gam9pbignJywkYyk7DQp9DQpmdW5jdGlvbiBkc3BEYXlDZWxsICggJGRh eSApIHsNCglyZXR1cm4gJzx0ZD4nLiRkYXkuJzwvdGQ+JzsNCn0NCn0gLy8gZW5kIGNsYXNz DQoNCmZ1bmN0aW9uIHNtZF9pZl9jYWwoJGF0dHMsICR0aGluZykgew0KCWdsb2JhbCAkc21k X2NhbF9mbGFnLCAkc21kX2NhbGluZm8sICRzbWRfZGF0ZTsNCg0KCWV4dHJhY3QobEF0dHMo YXJyYXkoDQoJCSdmbGFnJyA9PiAnJywNCgkJJ2NhbGlkJyA9PiAnJywNCgkJJ2lzb3llYXIn ID0+ICcnLA0KCQkneWVhcicgPT4gJycsDQoJCSdtb250aCcgPT4gJycsDQoJCSd3ZWVrJyA9 PiAnJywNCgkJJ2RheScgPT4gJycsDQoJCSdsb2dpYycgPT4gJ29yJywNCgkJJ2RlYnVnJyA9 PiAnMCcsDQoJKSwgJGF0dHMpKTsNCg0KCSRmbGFnID0gZG9fbGlzdCgkZmxhZyk7DQoJJGN0 ciA9ICRudW0gPSAwOw0KDQoJaWYgKCRkZWJ1Zykgew0KCQlkbXAoJGF0dHMpOw0KCX0NCg0K CWlmICgkZmxhZyAmJiAkZmxhZ1swXSAhPSAnJykgew0KCQkkbnVtICs9IGNvdW50KCRmbGFn KTsNCgkJZm9yZWFjaCAoJGZsYWcgYXMgJHdoYXRub3QpIHsNCgkJCWlmIChlbXB0eSgkd2hh dG5vdCkpIGNvbnRpbnVlOw0KCQkJJGN0ciArPSAoaW5fYXJyYXkoJHdoYXRub3QsICRzbWRf Y2FsX2ZsYWcpIHx8ICgkd2hhdG5vdCA9PSAnU01EX0FOWScgJiYgIWVtcHR5KCRzbWRfY2Fs X2ZsYWcpKSkgPyAxIDogMDsNCgkJfQ0KCX0NCglpZiAoJGNhbGlkKSB7DQoJCSRudW0rKzsN CgkJJGN0ciArPSAoJHNtZF9jYWxpbmZvWydpZCddID09PSAkY2FsaWQpID8gMSA6IDA7DQoJ fQ0KCWZvcmVhY2ggKGFycmF5KCJpeSIgPT4gImlzb3llYXIiLCAieSIgPT4gInllYXIiLCAi bSIgPT4gIm1vbnRoIiwgInciID0+ICJ3ZWVrIiwgImQiID0+ICJkYXkiKSBhcyAkaWR4ID0+ ICR0ZXN0KSB7DQoJCSR0ZXN0ZXIgPSAkJHRlc3Q7DQoJCSRjb21wYXJlID0gJHNtZF9kYXRl WyRpZHhdOw0KDQoJCWlmICgkdGVzdGVyKSB7DQoJCQkkbnVtKys7DQoJCQlwcmVnX21hdGNo KCcvKFshPTw+XSspPyhbXGRdKykvJywgJHRlc3RlciwgJG1hdGNoZXMpOw0KCQkJaWYgKCRk ZWJ1Zykgew0KCQkJCWRtcCgiVEVTVCBJRjogIi4gJGNvbXBhcmUuICgoJG1hdGNoZXNbMV0p ID8gJG1hdGNoZXNbMV0gOiAnPScpIC4gJG1hdGNoZXNbMl0gKTsNCgkJCX0NCgkJCXN3aXRj aCAoJG1hdGNoZXNbMV0pIHsNCgkJCQljYXNlICIhIjoNCgkJCQkJJGN0ciArPSAoJGNvbXBh cmUhPSRtYXRjaGVzWzJdKSA/IDEgOiAwOw0KCQkJCQlicmVhazsNCgkJCQljYXNlICI+IjoN CgkJCQkJJGN0ciArPSAoJGNvbXBhcmU+JG1hdGNoZXNbMl0pID8gMSA6IDA7DQoJCQkJCWJy ZWFrOw0KCQkJCWNhc2UgIj49IjoNCgkJCQkJJGN0ciArPSAoJGNvbXBhcmU+PSRtYXRjaGVz WzJdKSA/IDEgOiAwOw0KCQkJCQlicmVhazsNCgkJCQljYXNlICI8IjoNCgkJCQkJJGN0ciAr PSAoJGNvbXBhcmU8JG1hdGNoZXNbMl0pID8gMSA6IDA7DQoJCQkJCWJyZWFrOw0KCQkJCWNh c2UgIjw9IjoNCgkJCQkJJGN0ciArPSAoJGNvbXBhcmU8PSRtYXRjaGVzWzJdKSA/IDEgOiAw Ow0KCQkJCQlicmVhazsNCgkJCQlkZWZhdWx0Og0KCQkJCQkkY3RyICs9ICgkY29tcGFyZT09 JG1hdGNoZXNbMl0pID8gMSA6IDA7DQoJCQkJCWJyZWFrOw0KCQkJfQ0KCQl9DQoJfQ0KCSRy ZXN1bHQgPSAoKCRjdHIgPT09ICRudW0gJiYgJGxvZ2ljID09ICJhbmQiKSB8fCAkY3RyID4g MCAmJiAkbG9naWMgPT0gIm9yIikgPyB0cnVlIDogZmFsc2U7DQoJcmV0dXJuIHBhcnNlKEV2 YWxFbHNlKCR0aGluZywgJHJlc3VsdCkpOw0KfQ0KDQpmdW5jdGlvbiBzbWRfY2FsX2luZm8o JGF0dHMpIHsNCglnbG9iYWwgJHByZXRleHQsICR0aGlzYXJ0aWNsZSwgJHNtZF9jYWxfZmxh ZywgJHNtZF9jYWxpbmZvLCAkc21kX2RhdGU7DQoNCglleHRyYWN0KGxBdHRzKGFycmF5KA0K CQkndHlwZScgPT4gJ2ZsYWcnLA0KCQknam9pbicgPT4gJyAnLA0KCQknam9pbl9wcmVmaXgn ID0+ICdTTURfQVVUTycsDQoJCSdodG1sJyA9PiAwLA0KCQknZXNjYXBlJyA9PiAnaHRtbCcs DQoJKSwgJGF0dHMpKTsNCg0KCSRtYXAgPSBhcnJheSgNCgkJJ3llYXInID0+IGFycmF5KDAs ICd5JywpLA0KCQknaXNveWVhcicgPT4gYXJyYXkoMCwgJ2l5JywgJ3knKSwNCgkJJ21vbnRo JyA9PiBhcnJheSgwLCAnbScpLA0KCQknd2VlaycgPT4gYXJyYXkoMCwgJ3cnKSwNCgkJJ2Rh eScgPT4gYXJyYXkoMCwgJ2QnKSwNCgkJJ3NlY3Rpb24nID0+IGFycmF5KDMsICcnLCAncycp LA0KCQknY2F0ZWdvcnkxJyA9PiBhcnJheSgzLCAnJywgJ2MnKSwNCgkJJ2NhdGVnb3J5Micg PT4gYXJyYXkoMywgJycsICdjJyksDQoJCSd0aGlzaWQnID0+IGFycmF5KDMsICd0aGlzaWQn LCAnaWQnKSwNCgkJJ2FydGljbGUnID0+IGFycmF5KDEsICdhcnRpZCcsICdpZCcpLA0KCQkn Y2FsaWQnID0+IGFycmF5KDEsICdpZCcsICdjYWxpZCcpLA0KCQknY2F0ZWdvcnknID0+IGFy cmF5KDIsICdjJyksDQoJCSdyZWFsbmFtZScgPT4gYXJyYXkoMiwgJ2F1dGhvcicpLA0KCSk7 DQoJJGpvaW4gPSAoJGh0bWwpID8gYSA6ICRqb2luOw0KCSR0eXBlID0gZG9fbGlzdCgkdHlw ZSk7DQoJJHJldCA9IGFycmF5KCk7DQoJZm9yZWFjaCAoJHR5cGUgYXMgJGl0ZW0pIHsNCgkJ JHB0cyA9IGRvX2xpc3QoJGl0ZW0sICc6Jyk7DQoJCSRpdGVtID0gJHB0c1swXTsNCg0KCQlp ZiAoZW1wdHkoJGl0ZW0pKSBjb250aW51ZTsNCgkJJGhpZCA9IChpc3NldCgkbWFwWyRpdGVt XSkpID8gKChpc3NldCgkbWFwWyRpdGVtXVsyXSkpID8gJG1hcFskaXRlbV1bMl0gOiAkbWFw WyRpdGVtXVsxXSkgOiAkaXRlbTsNCgkJJGhpZCA9IChjb3VudCgkcHRzKSA+IDEgJiYgIWVt cHR5KCRwdHNbMV0pKSA/ICRwdHNbMV0gOiAkaGlkOw0KCQlpZiAoJGl0ZW0gPT0gImZsYWci KSB7DQoJCQkkcmV0W10gPSAoKCRqb2luX3ByZWZpeD09IlNNRF9BVVRPIikgPyAkam9pbiA6 ICcnKS5qb2luKCRqb2luLCAkc21kX2NhbF9mbGFnKTsNCgkJfSBlbHNlIGlmICgkaXRlbSA9 PSAiYXV0aG9yIiB8fCAkaXRlbSA9PSAicmVhbG5hbWUiKSB7DQoJCQkkY3VycmF1dGhvciA9 ICgkdGhpc2FydGljbGUgPT0gTlVMTCkgPyAnJyA6IGF1dGhvcihhcnJheSgpKTsNCgkJCWlm ICgkY3VycmF1dGhvcikgew0KCQkJCSRyZXRbXSA9ICgoJGh0bWwpID8gJGhpZC4nPScgOiAn JykgLiAkY3VycmF1dGhvcjsNCgkJCX0NCgkJfSBlbHNlIGlmICgkaXRlbSA9PSAicyIpIHsN CgkJCSRzZWMgPSAoIWVtcHR5KCRwcmV0ZXh0WydzJ10pKSA/ICRwcmV0ZXh0WydzJ10gOiAo KGlzc2V0KCRzbWRfY2FsaW5mb1sncyddKSAmJiAhZW1wdHkoJHNtZF9jYWxpbmZvWydzJ10p KSA/ICRzbWRfY2FsaW5mb1sncyddIDogJycpOw0KCQkJaWYgKCRzZWMpIHsNCgkJCQkkcmV0 W10gPSAoKCRodG1sKSA/ICRoaWQuJz0nIDogJycpIC4gJHNlYzsNCgkJCX0NCgkJfSBlbHNl IGlmIChpc3NldCgkbWFwWyRpdGVtXSkpIHsNCgkJCSR0eXAgPSAkbWFwWyRpdGVtXVswXTsN CgkJCSRpZHggPSBlbXB0eSgkbWFwWyRpdGVtXVsxXSkgPyAkaXRlbSA6ICRtYXBbJGl0ZW1d WzFdOw0KCQkJc3dpdGNoICgkdHlwKSB7DQoJCQkJY2FzZSAwOg0KCQkJCQlpZiAoJHNtZF9k YXRlWyRpZHhdKSB7DQoJCQkJCQkkcmV0W10gPSAoKCRodG1sKSA/ICRoaWQuJz0nIDogJycp IC4gJHNtZF9kYXRlWyRpZHhdOw0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgMToN CgkJCQkJaWYgKCFlbXB0eSgkc21kX2NhbGluZm9bJGlkeF0pKSB7DQoJCQkJCQkkcmV0W10g PSAoKCRodG1sKSA/ICRoaWQuJz0nIDogJycpIC4gJHNtZF9jYWxpbmZvWyRpZHhdOw0KCQkJ CQl9DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgMjoNCgkJCQkJaWYgKCFlbXB0eSgkcHJldGV4 dFskaWR4XSkpIHsNCgkJCQkJCSRyZXRbXSA9ICgoJGh0bWwpID8gJGhpZC4nPScgOiAnJykg LiAkcHJldGV4dFskaWR4XTsNCgkJCQkJfQ0KCQkJCQlicmVhazsNCgkJCQljYXNlIDM6DQoJ CQkJCWlmICgkdGhpc2FydGljbGUgIT0gTlVMTCAmJiBpc3NldCgkdGhpc2FydGljbGVbJGlk eF0pICYmICFlbXB0eSgkdGhpc2FydGljbGVbJGlkeF0pKSB7DQoJCQkJCQkkcmV0W10gPSAo KCRodG1sKSA/ICRoaWQuJz0nIDogJycpIC4gJHRoaXNhcnRpY2xlWyRpZHhdOw0KCQkJCQl9 DQoJCQkJCWJyZWFrOw0KCQkJfQ0KCQl9IGVsc2UgaWYgKGFycmF5X2tleV9leGlzdHMoJGl0 ZW0sICRwcmV0ZXh0KSkgew0KCQkJaWYgKCRwcmV0ZXh0WyRpdGVtXSkgew0KCQkJCSRyZXRb XSA9ICgoJGh0bWwpID8gJGhpZC4nPScgOiAnJykgLiAkcHJldGV4dFskaXRlbV07DQoJCQl9 DQoJCX0gZWxzZSB7DQoJCQlpZiAoJHRoaXNhcnRpY2xlICE9IE5VTEwgJiYgaXNzZXQoJHRo aXNhcnRpY2xlWyRpdGVtXSkgJiYgIWVtcHR5KCR0aGlzYXJ0aWNsZVskaXRlbV0pKSB7DQoJ CQkJJHJldFtdID0gKCgkaHRtbCkgPyAkaGlkLic9JyA6ICcnKSAuICR0aGlzYXJ0aWNsZVsk aXRlbV07DQoJCQl9DQoJCX0NCgl9DQoJJHJldCA9IGFycmF5X3VuaXF1ZSgkcmV0KTsNCgkk b3V0ID0gKCgkam9pbl9wcmVmaXg9PSJTTURfQVVUTyIpID8gKCgkaHRtbCkgPyAnPycgOiAn JykgOiAkam9pbl9wcmVmaXgpLmpvaW4oJGpvaW4sICRyZXQpOw0KCXJldHVybiAoJGVzY2Fw ZT09J2h0bWwnKSA/IGh0bWxzcGVjaWFsY2hhcnMoJG91dCkgOiAkb3V0Ow0KfQ0KDQpmdW5j dGlvbiBzbWRfY2FsX25vdygkYXR0cykgew0KCWdsb2JhbCAkZGF0ZWZvcm1hdDsNCg0KCWV4 dHJhY3QobEF0dHMoYXJyYXkoDQoJCSdmb3JtYXQnID0+ICRkYXRlZm9ybWF0LA0KCQknbm93 JyA9PiAnJywNCgkJJ29mZnNldCcgPT4gJycsDQoJCSdnbXQnID0+ICcnLA0KCQknbGFuZycg PT4gJycsDQoJKSwgJGF0dHMpKTsNCg0KCSR0aGVEYXkgPSAoZ3BzKCdkJykgJiYgaXNfbnVt ZXJpYyhncHMoJ2QnKSkpID8gKGludClncHMoJ2QnKSA6IHNhZmVfc3RyZnRpbWUoJyVkJyk7 DQoJJHRoZU1vbnRoID0gKGdwcygnbScpICYmIGlzX251bWVyaWMoZ3BzKCdtJykpKSA/IChp bnQpZ3BzKCdtJykgOiBzYWZlX3N0cmZ0aW1lKCclbScpOw0KCSR0aGVZZWFyID0gKGdwcygn eScpICYmIGlzX251bWVyaWMoZ3BzKCd5JykpKSA/IChpbnQpZ3BzKCd5JykgOiBzYWZlX3N0 cmZ0aW1lKCclWScpOw0KCWlmICgkbm93KSB7DQoJCSRub3cgPSBzdHJfcmVwbGFjZSgiP21v bnRoIiwgZGF0ZSgnRicsIGdtbWt0aW1lKDEyLDAsMCwkdGhlTW9udGgsJHRoZURheSwkdGhl WWVhcikpLCAkbm93KTsNCgkJJG5vdyA9IHN0cl9yZXBsYWNlKCI/eWVhciIsICR0aGVZZWFy LCAkbm93KTsNCgkJJG5vdyA9IHN0cl9yZXBsYWNlKCI/ZGF5IiwgJHRoZURheSwgJG5vdyk7 DQoJCSRub3cgPSBzdHJ0b3RpbWUoJG5vdyk7DQoJfSBlbHNlIHsNCgkJJG5vdyA9IHRpbWUo KTsNCgl9DQoNCglpZiAoJG9mZnNldCkgew0KCQkkbm93ID0gc3RydG90aW1lKCRvZmZzZXQs ICRub3cpOw0KCX0NCg0KCXJldHVybiBzYWZlX3N0cmZ0aW1lKCRmb3JtYXQsICRub3csICRn bXQsICRsYW5nKTsNCn0NCg0KZnVuY3Rpb24gc21kX2NhbF9jbGFzcygkYXR0cykgew0KCWds b2JhbCAkc21kX2NhbF91Y2xzOw0KDQoJZXh0cmFjdChsQXR0cyhhcnJheSgNCgkJJ25hbWUn ID0+ICcnLA0KCSksICRhdHRzKSk7DQoNCgkkbmFtZSA9IGRvX2xpc3QoJG5hbWUpOw0KCSRz bWRfY2FsX3VjbHMgPSBhcnJheV9tZXJnZSgkc21kX2NhbF91Y2xzLCAkbmFtZSk7DQp9DQoN CmZ1bmN0aW9uIHNtZF9hcnRpY2xlX2V2ZW50KCRhdHRzLCAkdGhpbmc9JycpIHsNCglnbG9i YWwgJHByZWZzLCAkcHJldGV4dCwgJHRoaXNwYWdlOw0KDQoJZXh0cmFjdChsQXR0cyhhcnJh eSgNCgkJJ3RpbWUnID0+ICdhbnknLA0KCQkndHlwZScgPT4gJ3N0YW5kYXJkLHJlY3VyLG11 bHRpJywNCgkJJ2V4cGlyZWQnID0+ICcnLA0KCQknaWQnID0+ICcnLA0KCQknY2F0ZWdvcnkn ID0+ICcnLA0KCQknc2VjdGlvbicgPT4gJycsDQoJCSdhdXRob3InID0+ICcnLA0KCQkncmVh bG5hbWUnID0+ICcnLA0KCQknc3RhdHVzJyA9PiAnbGl2ZScsDQoJCSdzb3J0JyA9PiAnJywN CgkJJ2Zvcm0nID0+ICcnLA0KCQknc3RlcGZpZWxkJyA9PiAnJywNCgkJJ3NraXBmaWVsZCcg PT4gJycsDQoJCSdvbWl0ZmllbGQnID0+ICcnLA0KCQknZXh0cmFmaWVsZCcgPT4gJycsDQoJ CSdhbGxzcGFubmVkJyA9PiAnMCcsDQoJCSdkYXRlZmllbGRzJyA9PiAnJywNCgkJJ21vbnRo JyA9PiAnJywNCgkJJ2Zyb20nID0+ICcnLA0KCQkndG8nID0+ICcnLA0KCQknb2Zmc2V0JyA9 PiAwLA0KCQknbGltaXQnID0+ICcxMCcsDQoJCSdldmVudGxpbWl0JyA9PiAnMTAnLA0KCQkn cGFnaW5nJyA9PiAnMScsDQoJCSdwYWdlYnknID0+ICcnLA0KCQkncGdvbmx5JyA9PiAnJywN CgkJJ3dyYXB0YWcnID0+ICcnLA0KCQknYnJlYWsnID0+ICcnLA0KCQknY2xhc3MnID0+ICcn LA0KCQknZGVidWcnID0+IDAsDQoJKSwgJGF0dHMpKTsNCg0KCSRmaWx0U1FMID0gJHN1YlNR TCA9IGFycmF5KCk7DQoJaWYoJGNhdGVnb3J5KSB7DQoJCSR0bXAgPSBkb1F1b3RlKGpvaW4o IicsJyIsIGRvU2xhc2goZG9fbGlzdCgkY2F0ZWdvcnkpKSkpOw0KCQkkZmlsdFNRTFtdID0g JyggQ2F0ZWdvcnkxIElOICgnLiR0bXAuJykgT1IgQ2F0ZWdvcnkyIElOICgnLiR0bXAuJykg KSc7DQoJfQ0KCWlmKCRzZWN0aW9uKSB7DQoJCSRmaWx0U1FMW10gPSAnU2VjdGlvbiBJTiAo Jy5kb1F1b3RlKGpvaW4oIicsJyIsIGRvU2xhc2goZG9fbGlzdCgkc2VjdGlvbikpKSkuJykn Ow0KCX0NCglpZigkcmVhbG5hbWUpIHsNCgkJJGF1dGhvcnMgPSBzYWZlX2NvbHVtbignbmFt ZScsICd0eHBfdXNlcnMnLCAnUmVhbE5hbWUgSU4gKCcuIGRvUXVvdGUoam9pbigiJywnIiwg ZG9BcnJheShkb19saXN0KCRyZWFsbmFtZSksICd1cmxkZWNvZGUnKSkpIC4nKScgKTsNCgkJ JGF1dGhvciA9IGpvaW4oJywnLCAkYXV0aG9ycyk7DQoJfQ0KCWlmKCRhdXRob3IpIHsNCgkJ JGZpbHRTUUxbXSA9ICdBdXRob3JJRCBJTiAoJy5kb1F1b3RlKGpvaW4oIicsJyIsIGRvU2xh c2goZG9fbGlzdCgkYXV0aG9yKSkpKS4nKSc7DQoJfQ0KCWlmKCRpZCkgew0KCQkkZmlsdFNR TFtdID0gJ0lEIElOICgnLmpvaW4oJywnLCBhcnJheV9tYXAoJ2ludHZhbCcsIGRvX2xpc3Qo JGlkKSkpLicpJzsNCgl9DQoJJHR5cGUgPSBkb19saXN0KCR0eXBlKTsNCgkkcGFnZWJ5ID0g KGVtcHR5KCRwYWdlYnkpID8gJGxpbWl0IDogJHBhZ2VieSk7DQoNCglmb3JlYWNoICgkdHlw ZSBhcyAkZXZ0eXApIHsNCgkJc3dpdGNoKCRldnR5cCkgew0KCQkJY2FzZSAnc3RhbmRhcmQn Og0KCQkJCWlmICgkc3RlcGZpZWxkKSB7DQoJCQkJCSRzdWJTUUxbXSA9ICIoIi4kc3RlcGZp ZWxkLiIgPSAnJyBBTkQgRXhwaXJlcyA9ICIuTlVMTERBVEVUSU1FLiIpIjsNCgkJCQl9DQoJ CQkJYnJlYWs7DQoJCQljYXNlICdyZWN1cic6DQoJCQkJaWYgKCRzdGVwZmllbGQpIHsNCgkJ CQkJJHN1YlNRTFtdID0gIigiLiRzdGVwZmllbGQuIiAhPSAnJykiOw0KCQkJCX0NCgkJCQli cmVhazsNCgkJCWNhc2UgJ211bHRpJzoNCgkJCQlpZiAoJHN0ZXBmaWVsZCkgew0KCQkJCQkk c3ViU1FMW10gPSAiKCIuJHN0ZXBmaWVsZC4iID0gJycgQU5EIEV4cGlyZXMgIT0gIi5OVUxM REFURVRJTUUuIikiOw0KCQkJCX0NCgkJCQlicmVhazsNCgkJfQ0KCX0NCglpZiAoJHN1YlNR TCkgew0KCQkkZmlsdFNRTFtdID0gJygnLmpvaW4oJyBPUiAnLCAkc3ViU1FMKS4nKSc7DQoJ fQ0KDQoJJHN0YXR1cyA9ICgkc3RhdHVzKSA/ICRzdGF0dXMgOiAnbGl2ZSc7DQoJJHN0YXR1 cyA9IGRvX2xpc3QoJHN0YXR1cyk7DQoJJHN0YXRpID0gYXJyYXkoKTsNCglmb3JlYWNoICgk c3RhdHVzIGFzICRzdGF0KSB7DQoJCWlmIChlbXB0eSgkc3RhdCkpIHsNCgkJCWNvbnRpbnVl Ow0KCQl9IGVsc2UgaWYgKGlzX251bWVyaWMoJHN0YXQpKSB7DQoJCQkkc3RhdGlbXSA9ICRz dGF0Ow0KCQl9IGVsc2Ugew0KCQkJJHN0YXRpW10gPSBnZXRTdGF0dXNOdW0oJHN0YXQpOw0K CQl9DQoJfQ0KCSRmaWx0U1FMW10gPSAnU3RhdHVzIElOICgnLmRvUXVvdGUoam9pbigiJywn IiwgJHN0YXRpKSkuJyknOw0KDQoJJGV4cGlyZWQgPSAoJGV4cGlyZWQpID8gJGV4cGlyZWQg OiAkcHJlZnNbJ3B1Ymxpc2hfZXhwaXJlZF9hcnRpY2xlcyddOw0KCWlmICghJGV4cGlyZWQp IHsNCgkJJGZpbHRTUUxbXSA9ICcobm93KCkgPD0gRXhwaXJlcyBPUiBFeHBpcmVzID0gJy5O VUxMREFURVRJTUUuJyknOw0KCX0NCg0KCSRzb3J0ID0gKGVtcHR5KCRzb3J0KSkgPyAnUG9z dGVkIGFzYycgOiAkc29ydDsNCgkkc29ydCA9IGRvX2xpc3QoJHNvcnQpOw0KCSRzb3J0UHJl Zml4ID0gIlNPUlRfIjsNCgkkc29ydE9yZGVyID0gYXJyYXkoKTsNCglmb3IgKCRpZHggPSAw OyAkaWR4IDwgY291bnQoJHNvcnQpOyAkaWR4KyspIHsNCgkJJHNvcnRpZXMgPSBleHBsb2Rl KCcgJywgJHNvcnRbJGlkeF0pOw0KCQlpZiAoY291bnQoJHNvcnRpZXMpIDw9IDEpIHsNCgkJ CSRzb3J0aWVzWzFdID0gImFzYyI7DQoJCX0NCgkJJHNvcnRpZXNbMV0gPSAkc29ydFByZWZp eC4oKCRzb3J0aWVzWzFdID09ICJkZXNjIikgPyAnREVTQycgOiAnQVNDJyk7DQoJCSRzb3J0 T3JkZXJbXSA9IGFycmF5KCJieSIgPT4gJHNvcnRpZXNbMF0sICJkaXIiID0+ICRzb3J0aWVz WzFdKTsNCgl9DQoNCgkkZmlsdFNRTCA9IGpvaW4oJyBBTkQgJywgJGZpbHRTUUwpOw0KCSRm aWx0U1FMIC49ICcgT1JERVIgQlkgJy5qb2luKCcsJyxkb1NsYXNoKCRzb3J0KSk7DQoNCgkk Z3JhYkNvbHMgPSAnKiwgdW5peF90aW1lc3RhbXAoUG9zdGVkKSBhcyB1UG9zdGVkLCB1bml4 X3RpbWVzdGFtcChMYXN0TW9kKSBhcyB1TGFzdE1vZCwgdW5peF90aW1lc3RhbXAoRXhwaXJl cykgYXMgdUV4cGlyZXMnOw0KCSRldmxpc3QgPSBzYWZlX3Jvd3MoJGdyYWJDb2xzLCAndGV4 dHBhdHRlcm4nLCAkZmlsdFNRTCwgJGRlYnVnKTsNCg0KCWlmICgkZGVidWc+Mikgew0KCQll Y2hvICIrKyBSRUNPUkQgU0VUICsrIjsNCgkJZG1wKCRldmxpc3QpOw0KCX0NCgkkYWxsX2V2 cyA9ICRldl90YWxseSA9IGFycmF5KCk7DQoJJG5vdyA9IHRpbWUoKTsNCg0KCSRldmVudGxp bWl0ID0gZG9fbGlzdCgkZXZlbnRsaW1pdCk7DQoJaWYgKGNvdW50KCRldmVudGxpbWl0KSA9 PSAxKSB7DQoJCSRldmVudGxpbWl0WzFdID0gJGV2ZW50bGltaXRbMF07DQoJfQ0KDQoJJGRh dGVmaWVsZHMgPSBkb19saXN0KCRkYXRlZmllbGRzKTsNCg0KCWZvcmVhY2ggKCRldmxpc3Qg YXMgJHJvdykgew0KCQkkZXZfcG9zdGVkID0gKCFlbXB0eSgkZGF0ZWZpZWxkc1swXSkgJiYg IWVtcHR5KCRyb3dbJGRhdGVmaWVsZHNbMF1dKSAmJiAoJHN0ZHQgPSBzdHJ0b3RpbWUoJHJv d1skZGF0ZWZpZWxkc1swXV0pKSAhPT0gZmFsc2UpID8gJHN0ZHQgOiAkcm93Wyd1UG9zdGVk J107DQoJCSRldl9leHBpcmVzID0gKGlzc2V0KCRkYXRlZmllbGRzWzFdKSAmJiAhZW1wdHko JHJvd1skZGF0ZWZpZWxkc1sxXV0pICYmICgkZW5kdCA9IHN0cnRvdGltZSgkcm93WyRkYXRl ZmllbGRzWzFdXSkpICE9PSBmYWxzZSkgPyAkZW5kdCA6ICRyb3dbJ3VFeHBpcmVzJ107DQoN CgkJaWYgKCRldl9leHBpcmVzICE9IDAgJiYgJGV2X2V4cGlyZXMgPD0gJGV2X3Bvc3RlZCkg ew0KCQkJJGV2X3Bvc3RlZCA9ICRyb3dbJ3VQb3N0ZWQnXTsNCgkJCSRldl9leHBpcmVzID0g JHJvd1sndUV4cGlyZXMnXTsNCgkJCXRyaWdnZXJfZXJyb3IoJ0V4cGlyeSBjYW5ub3QgYmUg YmVmb3JlIHN0YXJ0IGRhdGUgaW4gIicuJHJvd1snVGl0bGUnXS4nIjogaWdub3JlZCcsIEVf VVNFUl9XQVJOSU5HKTsNCgkJfQ0KDQoJCSRyb3dbJ3VQb3N0ZWQnXSA9ICRldl9wb3N0ZWQ7 DQoJCSRyb3dbJ1Bvc3RlZCddID0gZGF0ZSgiWS1tLWQgSDppOnMiLCAkZXZfcG9zdGVkKTsN CgkJJHJvd1sndUV4cGlyZXMnXSA9ICRldl9leHBpcmVzOw0KCQkkcm93WydFeHBpcmVzJ10g PSBkYXRlKCJZLW0tZCBIOmk6cyIsICRldl9leHBpcmVzKTsNCg0KCQkkZGlmZiA9ICgkZXZf ZXhwaXJlcyA9PSAwKSA/IDAgOiAkZXZfZXhwaXJlcyAtICRldl9wb3N0ZWQ7DQoJCSRldl9t b250aCA9IGRhdGUoJ20nLCAkZXZfcG9zdGVkKTsNCgkJJGV2X3llYXIgPSBkYXRlKCdZJywg JGV2X3Bvc3RlZCk7DQoJCSRldl9ociA9IGRhdGUoJ0gnLCAkZXZfcG9zdGVkKTsNCgkJJGV2 X21uID0gZGF0ZSgnaScsICRldl9wb3N0ZWQpOw0KCQkkZXZfc2MgPSBkYXRlKCdzJywgJGV2 X3Bvc3RlZCk7DQoJCSRpZ25vcmUgPSBhcnJheSgpOw0KDQoJCWlmICgkc2tpcGZpZWxkICYm ICRyb3dbJHNraXBmaWVsZF0gIT0gJycpIHsNCgkJCSRpZ25vcmVzID0gZG9fbGlzdCgkcm93 WyRza2lwZmllbGRdKTsNCgkJCWZvcmVhY2ggKCRpZ25vcmVzIGFzICR2YWwpIHsNCgkJCQkk aWdybmcgPSBzbWRfZXhwYW5kX2RhdGVyYW5nZSgkdmFsKTsNCgkJCQlmb3JlYWNoICgkaWdy bmcgYXMgJHRoZXZhbCkgew0KCQkJCQkkaWdub3JlW10gPSBkYXRlKCJkLU0tWSIsICR0aGV2 YWwpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCQlpZiAoJG9taXRmaWVsZCAmJiAkcm93WyRvbWl0 ZmllbGRdICE9ICcnKSB7DQoJCQkkb21pdHMgPSBkb19saXN0KCRyb3dbJG9taXRmaWVsZF0p Ow0KCQkJZm9yZWFjaCAoJG9taXRzIGFzICR2YWwpIHsNCgkJCQkkb21ybmcgPSBzbWRfZXhw YW5kX2RhdGVyYW5nZSgkdmFsKTsNCgkJCQlmb3JlYWNoICgkb21ybmcgYXMgJHRoZXZhbCkg ew0KCQkJCQkkaWdub3JlW10gPSBkYXRlKCJkLU0tWSIsICR0aGV2YWwpOw0KCQkJCX0NCgkJ CX0NCgkJfQ0KCQlpZiAoJGRlYnVnID4gMSAmJiAkaWdub3JlKSB7DQoJCQllY2hvICcrKyBJ R05PUkVEIERBVEVTICsrJzsNCgkJCWRtcCgkaWdub3JlKTsNCgkJfQ0KDQoJCWlmIChzbWRf aW5jbHVkZV9ldmVudCgkZXZfcG9zdGVkLCAkbm93LCAkaWdub3JlLCAkdGltZSwgJGZyb20s ICR0bywgJG1vbnRoKSkgew0KCQkJJGFsbF9ldnNbXSA9ICRyb3c7DQoJCQkkZXZfdGFsbHlb JHJvd1sndVBvc3RlZCddXSA9IChpc3NldCgkZXZfdGFsbHlbJHJvd1sndVBvc3RlZCddXSkp ID8gJGV2X3RhbGx5WyRyb3dbJ3VQb3N0ZWQnXV0rMSA6IDE7DQoJCX0NCg0KCQlpZiAoJGV4 dHJhZmllbGQgJiYgJHJvd1skZXh0cmFmaWVsZF0gIT0gJycpIHsNCgkJCSR4dHJhID0gZG9f bGlzdCgkcm93WyRleHRyYWZpZWxkXSk7DQoJCQkkeHRyYXMgPSBhcnJheSgpOw0KCQkJZm9y ZWFjaCAoJHh0cmEgYXMgJHZhbCkgew0KCQkJCSR4dHJhcyA9IGFycmF5X21lcmdlKCR4dHJh cywgc21kX2V4cGFuZF9kYXRlcmFuZ2UoJHZhbCwgIiVZLSViLSVkIikpOw0KCQkJfQ0KCQkJ JHN0YW1wb2ZmID0gKGludCkoMzYwMCokZXZfaHIpICsgKGludCkoNjAqJGV2X21uKSArIChp bnQpJGV2X3NjOw0KCQkJZm9yZWFjaCAoJHh0cmFzIGFzICR2YWwpIHsNCgkJCQkkdmFsID0g cnRyaW0oJHZhbCwgJysnKTsNCgkJCQkkdG0gPSBzdHJ0b3RpbWUoJHZhbCk7DQoNCgkJCQlp ZiAoc21kX2luY2x1ZGVfZXZlbnQoJHRtKyRzdGFtcG9mZiwgJG5vdywgYXJyYXkoKSwgJHRp bWUsICRmcm9tLCAkdG8sICRtb250aCkpIHsNCgkJCQkJJGZha2Vyb3cgPSAkcm93Ow0KCQkJ CQkkZmFrZXJvd1snUG9zdGVkJ10gPSBkYXRlKCJZLW0tZCBIOmk6cyIsICR0bSskc3RhbXBv ZmYpOw0KCQkJCQkkZmFrZXJvd1sndVBvc3RlZCddID0gJHRtKyRzdGFtcG9mZjsNCgkJCQkJ aWYgKCRkaWZmID4gMCkgew0KCQkJCQkJJGZha2Vyb3dbJ0V4cGlyZXMnXSA9IGRhdGUoIlkt bS1kIEg6aTpzIiwgJHRtKyRzdGFtcG9mZiskZGlmZik7DQoJCQkJCQkkZmFrZXJvd1sndUV4 cGlyZXMnXSA9ICR0bSskc3RhbXBvZmYrJGRpZmY7DQoJCQkJCX0NCgkJCQkJJGFsbF9ldnNb XSA9ICRmYWtlcm93Ow0KCQkJCQkkZXZfdGFsbHlbJGZha2Vyb3dbJ3VQb3N0ZWQnXV0gPSAo aXNzZXQoJGV2X3RhbGx5WyRmYWtlcm93Wyd1UG9zdGVkJ11dKSkgPyAkZXZfdGFsbHlbJGZh a2Vyb3dbJ3VQb3N0ZWQnXV0rMSA6IDE7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoNCgkJaWYgKCRz dGVwZmllbGQgJiYgJHJvd1skc3RlcGZpZWxkXSAhPSAnJykgew0KCQkJJGZyZXEgPSBkb19s aXN0KCRyb3dbJHN0ZXBmaWVsZF0pOw0KCQkJJG1vbnRobHkgPSBmYWxzZTsNCgkJCSRjc3Rh bXAgPSAkZXZfcG9zdGVkOw0KCQkJJGN1cnJtb250aCA9ICRldl9tb250aDsNCgkJCSRjdXJy eWVhciA9ICRldl95ZWFyOw0KCQkJZm9yZWFjaCAoJGZyZXEgYXMgJGludGVydmFsKSB7DQoJ CQkJJGZha2Vyb3cgPSAkcm93Ow0KCQkJCSRzdGFtcG9mZiA9IDA7DQoJCQkJZm9yKCRpZHgg PSAwOyAkaWR4IDwgOTk5OTk7ICRpZHgrKykgew0KCQkJCQkkbHN0YW1wID0gJGNzdGFtcDsN CgkJCQkJaWYgKChpc3NldCgkZXZfdGFsbHlbJHJvd1sndVBvc3RlZCddXSkgJiYgKCRldl90 YWxseVskcm93Wyd1UG9zdGVkJ11dID49ICRldmVudGxpbWl0WzBdKSkgfHwgKCR0byAmJiAk Y3N0YW1wID4gc3RydG90aW1lKCR0bykpKSB7DQoJCQkJCQlicmVhazsNCgkJCQkJfQ0KCQkJ CQkkaXZhbCA9IHN0cl9yZXBsYWNlKCI/bW9udGgiLCBkYXRlKCdGJywgZ21ta3RpbWUoMCww LDAsJGN1cnJtb250aCwxKSksICRpbnRlcnZhbCk7DQoJCQkJCSRpdmFsID0gc3RyX3JlcGxh Y2UoIj95ZWFyIiwgJGN1cnJ5ZWFyLCAkaXZhbCk7DQoNCgkJCQkJaWYgKHN0cnBvcygkaXZh bCwgImxhc3QiKSA9PT0gMCkgew0KCQkJCQkJJGl2YWwgPSBkYXRlKCJsLCBGIGpTIFkiLCBz dHJ0b3RpbWUoJGl2YWwsIG1rdGltZSgxMiwgMCwgMCwgZGF0ZSgibiIsbWt0aW1lKDAsMCww LCRjdXJybW9udGgsMSwkY3VycnllYXIpKSsxLCAxLCAkY3VycnllYXIpKSk7DQoJCQkJCQkk bW9udGhseSA9IHRydWU7DQoJCQkJCX0gZWxzZSBpZiAoc3RycG9zKCRpdmFsLCAiZmlyc3Qi KSA9PT0gMCkgew0KCQkJCQkJJGl2YWwgPSBkYXRlKCJsLCBGIGpTIFkiLCBzdHJ0b3RpbWUo JGl2YWwsIG1rdGltZSgxMiwgMCwgMCwgKCgkY3Vycm1vbnRoPjEpID8gJGN1cnJtb250aC0x IDogMTIpLCBkYXRlKCJ0Iixta3RpbWUoMCwwLDAsJGN1cnJtb250aC0xLDEsKCgkY3Vycm1v bnRoPT0xKSA/ICRjdXJyeWVhci0xOiAkY3VycnllYXIpKSksICgoJGN1cnJtb250aD09MSkg PyAkY3VycnllYXItMTogJGN1cnJ5ZWFyKSkpKTsNCgkJCQkJCSRtb250aGx5ID0gdHJ1ZTsN CgkJCQkJfQ0KCQkJCQlpZiAoc3RycG9zKCRpbnRlcnZhbCwgIj9tb250aCIpIHx8IHN0cnBv cygkaW50ZXJ2YWwsICI/eWVhciIpKSB7DQoJCQkJCQkkbW9udGhseSA9IHRydWU7DQoJICAg ICAgICAgICAgfQ0KDQoJCQkJCWlmICgkbW9udGhseSkgew0KCQkJCQkJJGNzdGFtcCA9IHN0 cnRvdGltZSgkaXZhbCk7DQoJCQkJCQkkc3RhbXBvZmYgPSAoJHN0YW1wb2ZmPT0wKSA/IChp bnQpKDM2MDAqJGV2X2hyKSArIChpbnQpKDYwKiRldl9tbikgKyAoaW50KSRldl9zYyA6ICRz dGFtcG9mZjsNCgkJCQkJfSBlbHNlIHsNCgkJCQkJCSRjc3RhbXAgPSBzdHJ0b3RpbWUoJGl2 YWwsICRjc3RhbXApOw0KCQkJCQl9DQoNCgkJCQkJJGRpZmZzdGFtcCA9ICRjc3RhbXAgLSAk bHN0YW1wOw0KCQkJCQlpZiAoJGRpZmZzdGFtcCA8IDApIHsNCgkJCQkJCWlmICgkZGlmZnN0 YW1wID4gLSg2MCo2MCoyNCozMSkrNjAwKSB7DQoJCQkJCQkJJGNzdGFtcCA9IGZhbHNlOw0K CQkJCQkJfSBlbHNlIHsNCgkJCQkJCQlicmVhazsNCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCQlp ZiAoJGNzdGFtcCAhPT0gZmFsc2UpIHsNCgkJCQkJCWlmICgkZGVidWcgPiAxKSB7DQoJCQkJ CQkJZG1wKCJJTlRFUlZBTDogIi4gJGNzdGFtcCAuICcgLy8gJyAuZGF0ZSgnZC1NLVkgSDpp OnMnLCAkY3N0YW1wKSk7DQoJCQkJCQl9DQoNCgkJCQkJCWlmICgoJGNzdGFtcCA8ICRldl9l eHBpcmVzIHx8ICRldl9leHBpcmVzID09ICcwJykgJiYgKCRjc3RhbXAgIT0gJGV2X3Bvc3Rl ZCkpIHsNCgkJCQkJCQkkc2hvd19tZSA9IHNtZF9pbmNsdWRlX2V2ZW50KCRjc3RhbXAsICRu b3csICRpZ25vcmUsICR0aW1lLCAkZnJvbSwgJHRvLCAkbW9udGgpOw0KCQkJCQkJCWlmICgk c2hvd19tZSkgew0KCQkJCQkJCQkkZmFrZXJvd1snUG9zdGVkJ10gPSBkYXRlKCJZLW0tZCBI Omk6cyIsICRjc3RhbXArJHN0YW1wb2ZmKTsNCgkJCQkJCQkJJGZha2Vyb3dbJ3VQb3N0ZWQn XSA9ICRjc3RhbXArJHN0YW1wb2ZmOw0KCQkJCQkJCQkkYWxsX2V2c1tdID0gJGZha2Vyb3c7 DQoJCQkJCQkJCSRldl90YWxseVskcm93Wyd1UG9zdGVkJ11dID0gKGlzc2V0KCRldl90YWxs eVskcm93Wyd1UG9zdGVkJ11dKSkgPyAkZXZfdGFsbHlbJHJvd1sndVBvc3RlZCddXSsxIDog MTsNCgkJCQkJCQl9DQoJCQkJCQl9IGVsc2Ugew0KCQkJCQkJCWJyZWFrOw0KCQkJCQkJfQ0K CQkJCQl9DQoJCQkJCWlmICgkbW9udGhseSkgew0KCQkJCQkJJGN1cnJ5ZWFyID0gKCRjdXJy bW9udGg9PTEyKSA/ICRjdXJyeWVhcisxIDogJGN1cnJ5ZWFyOw0KCQkJCQkJJGN1cnJtb250 aCA9ICgkY3Vycm1vbnRoPT0xMikgPyAxIDogJGN1cnJtb250aCsxOw0KCQkJCQl9DQoJCQkJ fQ0KCQkJCWlmICgkZGVidWc+MSkgew0KCQkJCQlpZiAoaXNzZXQoJGV2X3RhbGx5WyRyb3db J3VQb3N0ZWQnXV0pKSB7DQoJCQkJCQlkbXAoIlRBTExZOiAiLiAkZXZfdGFsbHlbJHJvd1sn dVBvc3RlZCddXSk7DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCX0gZWxzZSBpZiAoJGFsbHNw YW5uZWQgJiYgZGF0ZSgiZC1tLVkiLCAkZXZfZXhwaXJlcykgIT0gZGF0ZSgiZC1tLVkiLCAk ZXZfcG9zdGVkKSkgew0KCQkJJHBvc3RkYXRlID0gZGF0ZSgiZC1tLVkiLCAkZXZfcG9zdGVk KTsNCgkJCSRmYWtlX2RpZmYgPSBzdHJ0b3RpbWUoZGF0ZSgiWS1NLWQiLCAkZXZfZXhwaXJl cykgLiAiIDIzOjU5OjU5Iik7DQoJCQkkZGlmZiA9ICgkZXZfZXhwaXJlcz09MCkgPyAwIDog JGZha2VfZGlmZiAtICRldl9wb3N0ZWQ7DQoJCQkkc3BpZHRoID0gY2VpbCgkZGlmZiAvICg2 MCo2MCoyNCkpOw0KCQkJZm9yICgkamR4ID0gMTsgJGpkeCA8PSAkc3BpZHRoOyAkamR4Kysp IHsNCgkJCQkkdG0gPSBzdHJ0b3RpbWUoJHBvc3RkYXRlLicrJy4kamR4LicgZGF5cycpOw0K CQkJCSRzaG93X21lID0gc21kX2luY2x1ZGVfZXZlbnQoJHRtLCAkbm93LCAkaWdub3JlLCAk dGltZSwgJGZyb20sICR0bywgJG1vbnRoKTsNCgkJCQlpZiAoJHNob3dfbWUpIHsNCgkJCQkJ JGZha2Vyb3cgPSAkcm93Ow0KCQkJCQkkZmFrZXJvd1snUG9zdGVkJ10gPSBkYXRlKCJZLW0t ZCBIOmk6cyIsICR0bSk7DQoJCQkJCSRmYWtlcm93Wyd1UG9zdGVkJ10gPSAkdG07DQoJCQkJ CSRhbGxfZXZzW10gPSAkZmFrZXJvdzsNCgkJCQl9DQoJCQl9DQoJCX0NCgl9DQoNCglpZiAo JGRlYnVnPjIpIHsNCgkJZWNobyAiKysgUFJFLVNPUlRFRCArKyI7DQoJCWRtcCgkYWxsX2V2 cyk7DQoJfQ0KDQoJZm9yZWFjaCgkYWxsX2V2cyBhcyAka2V5ID0+ICRyb3cpIHsNCgkJZm9y ZWFjaCAoJHJvdyBhcyAkaWRlbnRpZmllciA9PiAkaXRlbSkgew0KCQkJJHZhcm5hbWUgPSAi Y29sXyIuJGlkZW50aWZpZXI7DQoJCQkkeyR2YXJuYW1lfVska2V5XSA9ICRpdGVtOw0KCQl9 DQoJfQ0KCWlmKGNvdW50KCRhbGxfZXZzKSA+IDApIHsNCgkJZm9yICgkaWR4ID0gMDsgJGlk eCA8IGNvdW50KCRzb3J0T3JkZXIpOyAkaWR4KyspIHsNCgkJCSRzb3J0YXJnc1tdID0gJyRj b2xfJy4kc29ydE9yZGVyWyRpZHhdWydieSddOw0KCQkJJHNvcnRhcmdzW10gPSAkc29ydE9y ZGVyWyRpZHhdWydkaXInXTsNCgkJfQ0KCQkkc29ydGl0ID0gJ2FycmF5X211bHRpc29ydCgn LmltcGxvZGUoIiwgIiwkc29ydGFyZ3MpLicsICRhbGxfZXZzKTsnOw0KCQlldmFsKCRzb3J0 aXQpOw0KCX0NCg0KCWlmICgkZGVidWc+Mikgew0KCQllY2hvICIrKyBQT1NULVNPUlRFRCAr KyI7DQoJCWRtcCgkYWxsX2V2cyk7DQoJfQ0KDQoJaWYgKCRwYWdpbmcpIHsNCgkJJGdyYW5k X3RvdGFsID0gY291bnQoJGFsbF9ldnMpOw0KCQkkdG90YWwgPSAkZ3JhbmRfdG90YWwgLSAk b2Zmc2V0Ow0KCQkkbnVtUGFnZXMgPSBjZWlsKCR0b3RhbC8kcGFnZWJ5KTsNCgkJJHBnID0g KCEkcHJldGV4dFsncGcnXSkgPyAxIDogJHByZXRleHRbJ3BnJ107DQoJCSRwZ29mZnNldCA9 ICRvZmZzZXQgKyAoKCRwZyAtIDEpICogJHBhZ2VieSk7DQoJCSRwYWdlb3V0WydwZyddID0g JHBnOw0KCQkkcGFnZW91dFsnbnVtUGFnZXMnXSA9ICRudW1QYWdlczsNCgkJJHBhZ2VvdXRb J3MnXSA9ICRwcmV0ZXh0WydzJ107DQoJCSRwYWdlb3V0WydjJ10gPSAkcHJldGV4dFsnYydd Ow0KCQkkcGFnZW91dFsnZ3JhbmRfdG90YWwnXSA9ICRncmFuZF90b3RhbDsNCgkJJHBhZ2Vv dXRbJ3RvdGFsJ10gPSAkdG90YWw7DQoNCgkJaWYgKGVtcHR5KCR0aGlzcGFnZSkpDQoJCQkk dGhpc3BhZ2UgPSAkcGFnZW91dDsNCgkJaWYgKCRwZ29ubHkpDQoJCQlyZXR1cm47DQoJfSBl bHNlIHsNCgkJJHBnb2Zmc2V0ID0gJG9mZnNldDsNCgl9DQoNCgkkb3V0ID0gYXJyYXkoKTsN CgkkY3RyID0gMDsNCglhcnRpY2xlX3B1c2goKTsNCglmb3JlYWNoICgkYWxsX2V2cyBhcyAk aWR4ID0+ICRyb3cpIHsNCgkJaWYgKCRpZHggPj0gJHBnb2Zmc2V0ICYmICRjdHIgPCAkbGlt aXQpIHsNCgkJCXBvcHVsYXRlQXJ0aWNsZURhdGEoJHJvdyk7DQoJCQkkb3V0W10gPSAoJHRo aW5nKSA/IHBhcnNlKCR0aGluZykgOiAoKCRmb3JtKSA/IHBhcnNlX2Zvcm0oJGZvcm0pIDog aHJlZigkcm93WydQb3N0ZWQnXSwgcGVybWxpbmt1cmwoJHJvdyksICcgdGl0bGU9IicuJHJv d1snVGl0bGUnXS4nIicpICk7DQoJCQkkY3RyKys7DQoJCX0NCgl9DQoJYXJ0aWNsZV9wb3Ao KTsNCglyZXR1cm4gZG9XcmFwKCRvdXQsICR3cmFwdGFnLCAkYnJlYWssICRjbGFzcyk7DQp9 DQoNCmZ1bmN0aW9uIHNtZF9pbmNsdWRlX2V2ZW50KCR0cywgJG5vdywgJGlnbiwgJHRpbWUs ICRmcm9tLCAkdG8sICRtb250aCkgew0KCSRzaG93ID0gYXJyYXkoKTsNCgkkc2hvd1tdID0g IWluX2FycmF5KGRhdGUoImQtTS1ZIiwgJHRzKSwgJGlnbik7DQoJc3dpdGNoKCR0aW1lKSB7 DQoJCWNhc2UgImFueSI6IGJyZWFrOw0KCQljYXNlICJmdXR1cmUiOiAkc2hvd1tdID0gKCR0 cyA+ICRub3cpID8gdHJ1ZSA6IGZhbHNlOyBicmVhazsNCgkJZGVmYXVsdCA6ICRzaG93W10g PSAoJHRzIDwgJG5vdykgPyB0cnVlIDogZmFsc2U7IGJyZWFrOw0KCX0NCglpZiAoJGZyb20p IHsgJHNob3dbXSA9ICgkdHMgPj0gc3RydG90aW1lKCRmcm9tKSkgPyB0cnVlIDogZmFsc2U7 IH0NCglpZiAoJHRvKSB7ICRzaG93W10gPSAoJHRzIDw9IHN0cnRvdGltZSgkdG8pKSA/IHRy dWUgOiBmYWxzZTsgfQ0KCWlmICgkbW9udGgpIHsgJHNob3dbXSA9IChkYXRlKCJZLW0iLCAk dHMpID09ICRtb250aCkgPyB0cnVlIDogZmFsc2U7IH0NCg0KCXJldHVybiAoIWluX2FycmF5 KDAsICRzaG93KSkgPyB0cnVlIDogZmFsc2U7DQp9DQoNCmZ1bmN0aW9uIHNtZF9leHBhbmRf ZGF0ZXJhbmdlKCRybmcsICRmbXQ9JyVzJykgew0KCSRvdXQgPSBhcnJheSgpOw0KCSRybmcg PSBkb19saXN0KCRybmcsICI9PiIpOw0KCWlmIChjb3VudCgkcm5nKSA+IDEpIHsNCgkJJGRp ZmYgPSBzdHJ0b3RpbWUoJHJuZ1sxXSkgLSBzdHJ0b3RpbWUoJHJuZ1swXSk7DQoJCSRkaWZm ZGF5cyA9IGNlaWwoJGRpZmYgLyAoNjAqNjAqMjQpKTsNCgkJZm9yICgkamR4ID0gMDsgJGpk eCA8PSAkZGlmZmRheXM7ICRqZHgrKykgew0KCQkJJG91dFtdID0gc3RyZnRpbWUoJGZtdCwg c3RydG90aW1lKCRybmdbMF0gLiAoKCRqZHg9PTApID8gJycgOiAnKycuJGpkeC4nIGRheXMn KSkpOw0KCQl9DQoJfSBlbHNlIHsNCgkJJG91dFtdID0gc3RyZnRpbWUoJGZtdCwgc3RydG90 aW1lKCRybmdbMF0pKTsNCgl9DQoJcmV0dXJuICRvdXQ7DQp9IjtzOjQ6InR5cGUiO3M6MToi MCI7czo1OiJvcmRlciI7czoxOiI1IjtzOjU6ImZsYWdzIjtzOjE6IjAiO3M6NDoiaGVscCI7 czo2NTQ5NDoiCTxwPjxkaXYgaWQ9InNtZF9oZWxwIj48L3A+CgoJPGgxIGlkPSJ0b3AiPnNt ZF9jYWxlbmRhcjwvaDE+CgoJPHA+UmVuZGVyIGEgY2FsZW5kYXIgd2l0aCBvbmUgb3IgbW9y ZSBhcnRpY2xlcyBhcyBldmVudHMgb24gZWFjaCBkYXkuIFVzZWZ1bCBmb3IgZ2lnIGd1aWRl cywgJiM4MjIwO3doYXQmIzgyMTc7cyBvbiYjODIyMTsgb3Igc2NoZWR1bGluZyBhcHBzLjwv cD4KCgk8aDIgaWQ9ImZlYXR1cmVzIj5GZWF0dXJlczwvaDI+CgoJPHVsPgoJCTxsaT5GdWxs LXNpemUgLyBtaW5pIDxhIGhyZWY9IiNzbWRjYWwiPmNhbGVuZGFyPC9hPiBieSBtb250aCwg d2l0aCBvcHRpb25hbCA8c3BhbiBjbGFzcz0iY2FwcyI+SVNPPC9zcGFuPiB3ZWVrPC9saT4K CQk8bGk+TmF2OiBuZXh0L3ByZXYgbW9udGggb3IgbW9udGgveWVhciBkcm9wZG93bi4gWWVh ciByYW5nZSBjYW4gYmUgZnJvbSBmaXJzdC9sYXN0IGFydGljbGUgb3IgKy8tIE4geWVhcnMg aW4gZWl0aGVyIGRpcmVjdGlvbjwvbGk+CgkJPGxpPk9uZSBhcnRpY2xlID0gb25lIGV2ZW50 LCBuYXRpdmUgdG8gPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj46IFBvc3RlZCBkYXRl ID0gdGhlIGRhdGUgaXQgYXBwZWFycyBpbiB0aGUgY2FsZW5kYXIgKHVubGVzcyBvdmVycmlk ZGVuKTwvbGk+CgkJPGxpPkZpbHRlciBldmVudHMgYnkgY2F0ZWdvcnkgLyBzZWN0aW9uIC8g YXV0aG9yIC8gc3RhdHVzIC8gdGltZSBvciBleHBpcnk8L2xpPgoJCTxsaT5DdXN0b20gZmll bGQgdG8gc3BlY2lmeSBldmVudCBmcmVxdWVuY3kgKDEgd2VlayAvIDEwIGRheXMgLyAzIG1v bnRocyAvIGV0Yyk8L2xpPgoJCTxsaT5DdXN0b20gZmllbGRzIGZvciBpbi9leGNsdXNpb25z IChhIGxpc3Qgb2YgZGF0ZXMgb24gd2hpY2ggdGhhdCBldmVudCBpcyAocmUpc2NoZWR1bGVk L2NhbmNlbGxlZC9vbWl0dGVkKTwvbGk+CgkJPGxpPk11bHRpLWRheSBzcGFubmVkIGV2ZW50 cyBiYXNlZCBvbiB0aGUgYXJ0aWNsZeKAmXMgZXhwaXJ5PC9saT4KCQk8bGk+RGlzcGxheSBm dXR1cmUsIGV4cGlyZWQgb3Igc3RpY2t5IGV2ZW50czwvbGk+CgkJPGxpPkhvbGlkYXlzIG9u IGEgcGVyLWNhbGVuZGFyIGJhc2lzPC9saT4KCQk8bGk+RWFjaCBldmVudCBjYW4gYmUgcGFz c2VkIHRvIGEgZm9ybS9jb250YWluZXIgc28geW91IGNhbiBidWlsZCBpdCB5b3VyIHdheS4g U3Bhbm5lZCBhbmQvb3IgcmVjdXJyaW5nIGV2ZW50cyBjYW4gYmUgc2VudCB0byBhIHNlcGFy YXRlIGZvcm0uIE9yIHNlbmQgdGhlIGVudGlyZSBjZWxsIHRvIGEgZm9ybTwvbGk+CgkJPGxp PjxhIGhyZWY9IiNpZmNhbCI+Q29uZGl0aW9uYWw8L2E+IHRlc3RzIGZvciBmbGFncyBhbmQg ZGF0ZXMgc28geW91IGNhbiBidWlsZCB5b3VyIG93biBsb2dpYzwvbGk+CgkJPGxpPlRhYmxl LSwgcm93LSwgY2VsbC0sIGFuZCBldmVudC1sZXZlbCBjbGFzc2VzIGZvciBpbmRpY2F0aW5n IGRpZmZlcmVudCBzY2VuYXJpb3M7IGN1c3RvbSBjbGFzc2VzIGNhbiBiZSBkZWZpbmVkPC9s aT4KCQk8bGk+VGFncyB0byA8YSBocmVmPSIjYXJ0ZXYiPmRpc3BsYXkgcmVjdXJyaW5nIGV2 ZW50czwvYT4gOyBldmVudC9jYWxlbmRhciA8YSBocmVmPSIjY2FsaW5mbyI+Y2hhcmFjdGVy aXN0aWNzPC9hPiA7IG9yIHRoZSA8YSBocmVmPSIjY2Fsbm93Ij5jdXJyZW50IGRhdGUvdGlt ZTwvYT48L2xpPgoJPC91bD4KCgk8aDIgaWQ9ImF1dGhvciI+QXV0aG9yIC8gY3JlZGl0czwv aDI+CgoJPHA+PGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL2NvbW1lbnRGb3JtIj5T dGVmIERhd3NvbjwvYT4uIEpvaW50bHkgZnVuZGVkIGJ5IGdlbmVyb3VzIGRvbmF0b3JzOiBt cmRhbGUsIHdvb2YsIGpha29iLCByZW5vYmlyZCBhbmQgam9lYmFpY2guIEJhc2VkIG9yaWdp bmFsbHkgb24gbWRwX2NhbGVuZGFyLiBBbGwgcHJvcHMgdG8gdGhlIG9yaWdpbmFsIGF1dGhv ciwgYW5kIG9mIGNvdXJzZSB0aGUgY2xhc3MgdXBvbiB3aGljaCB0aGUgY2FsZW5kYXIgaXMg YmFzZWQuIEFuZCBub3QgZm9yZ2V0dGluZyBvdXIgYXdlc29tZSBUZXh0cGF0dGVybiBkZXZz IHdobyBjb250aW51ZSB0byBwdXNoIHRoaXMgPHNwYW4gY2xhc3M9ImNhcHMiPkNNUzwvc3Bh bj4gdG8gdGhlIHN0YXJzLjwvcD4KCgk8aDIgaWQ9Imluc3RhbGwiPkluc3RhbGxhdGlvbiAv IFVuaW5zdGFsbGF0aW9uPC9oMj4KCgk8cCBjbGFzcz0icmVxdWlyZWQiPlJlcXVpcmVzIFRl eHRwYXR0ZXJuIDQuMC43KzwvcD4KCgk8cD5Eb3dubG9hZCB0aGUgcGx1Z2luIGZyb20gZWl0 aGVyIDxhIGhyZWY9Imh0dHA6Ly90ZXh0cGF0dGVybi5vcmcvcGx1Z2lucy8xMDUyL3NtZF9j YWxlbmRhciI+dGV4dHBhdHRlcm4ub3JnPC9hPiwgb3IgdGhlIDxhIGhyZWY9Imh0dHA6Ly9z dGVmZGF3c29uLmNvbS9zdyI+c29mdHdhcmUgcGFnZTwvYT4sIHBhc3RlIHRoZSBjb2RlIGlu dG8gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IEFkbWluIC0mZ3Q7IFBsdWdp bnMgcGFuZSwgaW5zdGFsbCBhbmQgZW5hYmxlIHRoZSBwbHVnaW4uIFZpc2l0IHRoZSA8YSBo cmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/aWQ9Mjkz NzUiPmZvcnVtIHRocmVhZDwvYT4gZm9yIG1vcmUgaW5mbyBvciB0byByZXBvcnQgb24gdGhl IHN1Y2Nlc3Mgb3Igb3RoZXJ3aXNlIG9mIHRoZSBwbHVnaW4uPC9wPgoKCTxwPlRvIHVuaW5z dGFsbCwgZGVsZXRlIGZyb20gdGhlIEFkbWluIC0mZ3Q7IFBsdWdpbnMgcGFnZS48L3A+CgoJ PGgyIGlkPSJuYW1pbmciPk5hbWluZyBjb252ZW50aW9uPC9oMj4KCgk8cD5UaGUgY29yZSBv ZiB0aGUgcGx1Z2luIGlzIHRoZSBzbWRfY2FsZW5kYXIgdGFnLCB3aGljaCByZW5kZXJzIGEg c3RhbmRhcmQgY2FsZW5kYXIgd2l0aCBlYWNoIGNlbGwgY29udGFpbmluZyBvbmUgb3IgbW9y ZSBldmVudHMuIEJlZm9yZSBkaXZpbmcgaW50byB0aGUgdGFncyB0aGVyZSYjODIxNztzIGEg bGl0dGxlIGJpdCBvZiBub21lbmNsYXR1cmUgdG8gZ3Jhc3A6PC9wPgoKCTx1bD4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPmNhbGlkPC9zcGFuPiA6IHlvdSBtYXkgcHV0IG1vcmUgdGhh biBvbmUgY2FsZW5kYXIgb24gYSBwYWdlOiBlYWNoIGNhbiBiZSB1bmlxdWVseSByZWZlcmVu Y2VkIHdpdGggYSBjYWxlbmRhciBJRDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5j ZWxsPC9zcGFuPiA6IGEgc3BlY2lmaWMgZGF5IG9uIHRoZSBjYWxlbmRhciBpbiBhIHBhcnRp Y3VsYXIgbW9udGgveWVhcjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5ldmVudDwv c3Bhbj4gOiBhbiBhcnRpY2xlLiBJdCYjODIxNztzIGJlc3QgdG8gdXNlIGEgZGVkaWNhdGVk IHNlY3Rpb24gZm9yIGV2ZW50cyB0byBrZWVwIHRoaW5ncyBuZWF0ZXIsIGJ1dCB5b3UgY2Fu IGRpc3BsYXkgZXZlbnRzIGZyb20gbW9yZSB0aGFuIG9uZSBzZWN0aW9uIGlmIHlvdSB3aXNo LiBBbnkgYXJ0aWNsZSB3cml0dGVuIGluIHRoZSBnaXZlbiBzZWN0aW9uKHMpIHdpbGwgYXBw ZWFyIG9uIHRoZSBjYWxlbmRhciBhcyBsb25nIGFzIGl0cyBleHBpcnkgaGFzbiYjODIxNzt0 IGJlZW4gbWV0LiBNb3JlIHRoYW4gb25lIGV2ZW50IG1heSBhcHBlYXIgaW4gZWFjaCBjZWxs PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNlbGwgZmxhZzwvc3Bhbj4gOiBhIHNl cmllcyBvZiBmbGFncyBhcmUgdXNlZCB0byBsYWJlbCBlYWNoIGNlbGwgYWNjb3JkaW5nIHRv IHdoYXQgaXQgY29udGFpbnMuIENlbGxzIGNhbiBlaXRoZXIgYmUgPGNvZGU+ZW1wdHk8L2Nv ZGU+IChpLmUuIG5vIGRhdGU6IHRoZSBmaWxsZXIgY2VsbHMgYXQgdGhlIHN0YXJ0L2VuZCBv ZiB0aGUgbW9udGgpLCB0aGV5IGNhbiBiZSBhIHJlZ3VsYXIgZGF5IChubyBmbGFnKSwgdGhl eSBjYW4gY29udGFpbiBhbiA8Y29kZT5ldmVudDwvY29kZT4sIG9yIG1heSBiZSBhIGhvbGlk YXkgKDxhIGhyZWY9IiNob2xpZGF5cyI+aG9sczwvYT4pPC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPmV2ZW50IGZsYWc8L3NwYW4+IDogZWFjaCBjZWxsIGNhbiBjb250YWluIG9u ZSBvciBtb3JlIGV2ZW50cy4gRXZlbnRzIGNhbiBlaXRoZXIgYmUgPGEgaHJlZj0iI2V2ZW50 cyI+c3RhbmRhcmQ8L2E+LCB0aGV5IGNhbiA8YSBocmVmPSIjcmVjdXIiPnJlY3VyPC9hPiwg dGhleSBjYW4gc3BhbiBtb3JlIHRoYW4gb25lIGRheSAoPGEgaHJlZj0iI211bHRpIj5tdWx0 aTwvYT4pLCBkYXRlcyBjYW4gYmUgdW5zY2hlZHVsZWQgb3Igb21pdHRlZCAoPGEgaHJlZj0i I2NhbmNlbCI+Y2FuY2VsIC8gb21pdDwvYT4pIGZyb20gdGhlIGNhbGVuZGFyLCBvciA8YSBo cmVmPSIjZXh0cmEiPmV4dHJhPC9hPiBkYXRlcyBjYW4gYmUgYWRkZWQ8L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+Y2xhc3MgbGV2ZWw8L3NwYW4+IDogKGV4cGxvcmVkIGluIHRo ZSA8YSBocmVmPSIjYXR0c3R5bGVzIj5jbGFzc2xldmVsczwvYT4gYXR0cmlidXRlKS4gRWFj aCBmbGFnZ2VkIGNlbGwgY2FuIGJlIGdpdmVuIGEgPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwv c3Bhbj4gY2xhc3MgYmFzZWQgb24gaXRzIGZsYWcgbmFtZShzKS4gVGhlIGNsYXNzIG5hbWVz IGFyZSBzaW1wbHkgZWFjaCBmbGFnIG5hbWUgcHJlZml4ZWQgd2l0aCB0aGUgdmFsdWUgZ2l2 ZW4gaW4gdGhlIDxjb2RlPmNsYXNzcHJlZml4ZXM8L2NvZGU+IGF0dHJpYnV0ZS4gU3VjaCBj bGFzc2VzOgoJPHVsPgoJCTxsaT5hcHBlYXIgaW4gYSBjZWxsLCBzbyB5b3UgY2FuIHN0eWxl IHRoZSB3aG9sZSBjZWxsPC9saT4KCQk8bGk+YXBwZWFyIG9uIGVhY2ggZXZlbnQsIHNvIHlv dSBjYW4gc3R5bGUgcGFydGljdWxhciB0eXBlcyBvZiBldmVudDwvbGk+CgkJPGxpPm1heSBi ZSAmIzgyMTY7Y29waWVkJiM4MjE3OyBmcm9tIHRoZSBldmVudCB0byB0aGUgY2VsbCBpdHNl bGYsIHNvIHlvdSBjYW4gc3R5bGUgdGhlIHdob2xlIGNlbGwgYmFzZWQgb24gdGhlIGV2ZW50 cyBpdCBjb250YWluczwvbGk+Cgk8L3VsPjwvbGk+Cgk8L3VsPgoKCTxwPkZsYWdzIHByb3Zp ZGUgaW5mb3JtYXRpb24gPGVtPmFib3V0PC9lbT4gdGhlIGNlbGwgLyBldmVudCAgJiM4MjEy OyBhbmQgY2FuIGJlIHRlc3RlZCB3aXRoIHRoZSBjb25kaXRpb25hbCB0YWcgJiM4MjEyOyB3 aGlsZSB0aGUgY29ycmVzcG9uZGluZyBjbGFzcyBuYW1lcyBhcmUganVzdCB0aGVyZSBmb3Ig eW91ciA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiB1c2UuPC9wPgoKCTxwPldoZW4g YXNzaWduZWQgYXMgY2xhc3NlcywgZmxhZ3MgPHN0cm9uZz5hbHdheXM8L3N0cm9uZz4gdGFr ZSB0aGUgJiM4MjE2O2NsYXNzJiM4MjE3OyBwcmVmaXggKGkuZS4gdGhlIDFzdCBpdGVtIGdp dmVuIGluIHNtZF9jYWxlbmRhciYjODIxNztzIDxjb2RlPmNsYXNzcHJlZml4ZXM8L2NvZGU+ IGF0dHJpYnV0ZSkgJiM4MjEyOyB3aGV0aGVyIHRoZXkgYXBwZWFyIGF0IHRoZSA8ZW0+ZXZl bnQ8L2VtPiBvciA8ZW0+Y2VsbDwvZW0+IGxldmVscy4gVGhlIG9ubHkgY2xhc3NlcyB0aGF0 IHRha2UgdGhlIG9wdGlvbmFsIDJuZCAmIzgyMTY7ZXZlbnQmIzgyMTc7IHByZWZpeCBhcmUg dGhlIGZpZWxkcyB5b3Ugc3BlY2lmeSBpbiB0aGUgPGNvZGU+ZXZlbnRjbGFzc2VzPC9jb2Rl PiBhdHRyaWJ1dGUuPC9wPgoKCTxwPkl0JiM4MjE3O3MgYWxzbyB3b3J0aCBiZWFyaW5nIGlu IG1pbmQgdGhlIDxhIGhyZWY9IiNkYXRlcyI+ZGF0ZSBjYXZlYXRzPC9hPiB0aGF0IG1heSB3 ZWxsIGJpdGUgeW91LjwvcD4KCgk8aDIgaWQ9ImV2ZW50cyI+U3RhbmRhcmQgY2VsbHMgYW5k IGV2ZW50czwvaDI+CgoJPHA+VGhlIGZvbGxvd2luZyBjdW11bGF0aXZlIG5hbWluZyBydWxl cyBhcHBseTo8L3A+CgoJPHVsPgoJCTxsaT5Ob3JtYWwgKGRheSkgY2VsbHMgZG9uJiM4MjE3 O3QgaGF2ZSBhIGNsYXNzIGFzc2lnbmVkIHRvIHRoZW0gdW5sZXNzIHlvdSBzcGVjaWZ5IG9u ZSB3aXRoIDxjb2RlPmNlbGxjbGFzczwvY29kZT48L2xpPgoJCTxsaT5BbnkgY2VsbCB0aGF0 IGNvbnRhaW5zIGFuIGV2ZW50IChvZiBhbnkgdHlwZSkgaXMgZmxhZ2dlZCBhcyBhbiA8Y29k ZT5ldmVudDwvY29kZT48L2xpPgoJCTxsaT5BbnkgY2VsbCB0aGF0IGZhbGxzIG9uIGEgaG9s aWRheSBpcyBnaXZlbiB0aGUgZmxhZyA8Y29kZT5ob2xzPC9jb2RlPjwvbGk+CgkJPGxpPlRo ZSBjdXJyZW50IGRheSBpcyBnaXZlbiB0aGUgZmxhZyA8Y29kZT50b2RheTwvY29kZT48L2xp PgoJPC91bD4KCgk8cD5BIHNpbmdsZSBldmVudCAoYWthIGFydGljbGUpIHdpdGggYSBQb3N0 ZWQgZGF0ZSB3aWxsIGJlIGZsYWdnZWQgPGNvZGU+c3RhbmRhcmQ8L2NvZGU+LCB1bmxlc3Mg aXQgcmVjdXJzIG9yIHNwYW5zIG1vcmUgdGhhbiBvbmUgZGF5LjwvcD4KCgk8aDIgaWQ9InJl Y3VyIj5SZWN1cnJpbmcgZXZlbnRzPC9oMj4KCgk8cD5JZiB5b3UgaGF2ZSBub21pbmF0ZWQg YSBmaWVsZCBhcyB5b3VyIDxjb2RlPnN0ZXBmaWVsZDwvY29kZT4geW91IG1heSBlbnRlciBh IGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGZyZXF1ZW5jaWVzIGF0IHdoaWNoIHRoZSBldmVu dCBpcyB0byByZXBlYXQuIFRoZSBmb3JtYXQgb2YgdGhlIHJlcGV0aXRpb24gaXMgPHN0cm9u Zz5udW1iZXIgaW50ZXJ2YWw8L3N0cm9uZz4sIGUuZy4gPGNvZGU+NCB3ZWVrczwvY29kZT4g b3IgPGNvZGU+MTAgZGF5czwvY29kZT4gb3IgPGNvZGU+NiBtb250aHM8L2NvZGU+LiBUaGUg cGx1Z2luIHdpbGwgZG8gaXRzIGJlc3QgdG8gZmlndXJlIG91dCB3aGF0IHlvdSBtZWFuLiBT ZWUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3Rhci9tYW51YWwvaHRt bF9ub2RlL0RhdGUtaW5wdXQtZm9ybWF0cy5odG1sIj5kYXRlIGlucHV0IGZvcm1hdHM8L2E+ IGZvciBtb3JlLjwvcD4KCgk8cD5BIGZldyBwb2ludHM6PC9wPgoKCTx1bD4KCQk8bGk+PGNv ZGU+c2Vjb25kIHR1ZXNkYXk8L2NvZGU+IHdpbGwgc2hvdyBhbiBldmVudCA8ZW0+ZXZlcnk8 L2VtPiAybmQgVHVlc2RheSBmcm9tIHRoZSBzdGFydCBkYXRlIChpLmUuIGZvcnRuaWdodGx5 KTwvbGk+CgkJPGxpPjxjb2RlPnNlY29uZCB0dWVzZGF5ID9tb250aCA/eWVhcjwvY29kZT4g d2lsbCBzdWJzdGl0dXRlIHRoZSBjdXJyZW50IG1vbnRoIGFuZCB5ZWFyIGluIGZpcnN0LCBh bmQgPGVtPnRoZW48L2VtPiBjYWxjdWxhdGUgdGhlIGRhdGUsIHJlc3VsdGluZyBpbiB0aGUg ZXZlbnQgb25seSByZWN1cnJpbmcgb24gdGhlIDJuZCBUdWVzZGF5IG9mIGVhY2ggbW9udGgu IFlvdSA8c3Ryb25nPm11c3Q8L3N0cm9uZz4gdXNlIGJvdGggPGNvZGU+P21vbnRoPC9jb2Rl PiBhbmQgPGNvZGU+P3llYXI8L2NvZGU+IGlmIHlvdSBjaG9vc2UgdGhpcyB0eXBlIG9mIGRh dGUgb3IgeW91ciBldmVudCB3b24mIzgyMTc7dCBhcHBlYXI8L2xpPgoJCTxsaT48Y29kZT4y MCA/bW9udGg8L2NvZGU+IHdpbGwgc2hvdyB0aGUgZXZlbnQgb24gdGhlIDIwdGggb2YgZXZl cnkgbW9udGg8L2xpPgoJCTxsaT50aGluZ3MgbGlrZSA8Y29kZT5maXJzdCB0aHVyc2RheTwv Y29kZT4gb3IgPGNvZGU+bGFzdCBmcmlkYXk8L2NvZGU+IGRvbiYjODIxNzt0IG5lZWQgdGhl IDxjb2RlPj9tb250aDwvY29kZT4gb3IgPGNvZGU+P3llYXI8L2NvZGU+IGJlY2F1c2UgdGhl eSBjYW4gPGVtPm9ubHk8L2VtPiBvY2N1ciBtb250aGx5LCBhbmQgd2lsbCBvbmx5IHNob3cg dGhlIGV2ZW50IG9uIHRoZSBnaXZlbiBmaXJzdC9sYXN0IGRheSBvZiB0aGUgbW9udGg8L2xp PgoJPC91bD4KCgk8cD5JZiB5b3UgY2FuIGZpbmQgYSB1c2UgZm9yIGl0LCB5b3UgbWF5IHNw ZWNpZnkgbXVsdGlwbGUgZnJlcXVlbmNpZXMsIGZvciBleGFtcGxlIDxjb2RlPjMgZGF5cywg MSB3ZWVrPC9jb2RlPi4gVGhhdCBtZWFucyB5b3Ugd291bGQgc2VlIHRoZSBldmVudCBvbiB0 aGUgMXN0IGRheSwgdGhlbiB0aGUgM3JkLCA2dGgsIDd0aCwgOXRoLCAxMnRoLCAxNHRoLCAx NXRoLCAxOHRoLCAyMXN0LCAyNHRoJiM4MjMwOyBkYXlzIHRoZXJlYWZ0ZXIuIE5vdGUgdGhh dCB0aGUgZXZlbnQgb25seSBvY2N1cnMgb25jZSBvbiB0aGUgMjFzdCBkYXkgZXZlbiB0aG91 Z2ggdGhlIHR3byBmcmVxdWVuY2llcyBjbGFzaC48L3A+CgoJPHA+UmVjdXIgcnVsZXM6PC9w PgoKCTx1bD4KCQk8bGk+VGhlIHJlcGV0aXRpb24gd2lsbCBjb250aW51ZSBmb3JldmVyPHN1 cCBjbGFzcz0iZm9vdG5vdGUiPjxhIGhyZWY9IiNmbjY4NTA0MzMzMTQ5YmE3MzkyOGQ5YWUi PjE8L2E+PC9zdXA+IHVubGVzcyB5b3Ugc3BlY2lmeSBhbiBleHBpcnkgdGltZTwvbGk+CgkJ PGxpPlRoZSB2ZXJ5IGZpcnN0IGV2ZW50IG9mIGEgcmVjdXJyaW5nIHNldCB3aWxsIGJlIGZs YWdnZWQgd2l0aCA8Y29kZT5yZWN1cmZpcnN0PC9jb2RlPjwvbGk+CgkJPGxpPkVhY2ggZm9s bG93aW5nIGNlbGwgdGhhdCBjb250YWlucyBhIHJlY3VycmluZyBldmVudCB3aWxsIGJlIGZs YWdnZWQgd2l0aCA8Y29kZT5yZWN1cjwvY29kZT48L2xpPgoJCTxsaT5Cb3RoIGZsYWdzIGFy ZSBhcHBsaWVkIHRvIHRoZSBldmVudCBhcyBjbGFzc2VzIHVzaW5nIHRoZSBjbGFzcyBwcmVm aXg8L2xpPgoJCTxsaT5SZXBlYXRlZCBldmVudHMgbWF5IGJlIDxhIGhyZWY9IiNjYW5jZWwi PmNhbmNlbGxlZCBvciBvbWl0dGVkPC9hPiBvbiBhIHBlci1kYXRlIGJhc2lzPC9saT4KCTwv dWw+CgoJPHAgY2xhc3M9InNtYWxsIiBpZD0iZm42ODUwNDMzMzE0OWJhNzM5MjhkOWFlIj48 c3VwPjE8L3N1cD4gJiM4MjE2O2ZvcmV2ZXImIzgyMTc7IGlzIGxpbWl0ZWQgdG8gOTk5OTkg cmVjdXJyZW5jZXMgcGVyIGV2ZW50LCBvciAyNzQgeWVhcnMmIzgyMTc7IHdvcnRoIG9mIGRh aWx5IGV2ZW50cy4gRWl0aGVyIDxzcGFuIGNsYXNzPSJjYXBzIj5VTklYPC9zcGFuPiB3aWxs IHJ1biBvdXQgb2YgZGF0ZXMgb3IgPHNwYW4gY2xhc3M9ImNhcHMiPlBIUDwvc3Bhbj4gd2ls bCBydW4gb3V0IG9mIG1lbW9yeSBsb25nIGJlZm9yZSB5b3UgcmVhY2ggdGhpcyBsaW1pdCA6 LSk8L3A+CgoJPGgyIGlkPSJtdWx0aSI+TXVsdGktZGF5IChzcGFubmVkKSBldmVudHM8L2gy PgoKCTxwPkFueSBldmVudCB0aGF0IGhhczo8L3A+CgoJPHVsPgoJCTxsaT5hIHN0YXJ0IGRh dGU8L2xpPgoJCTxsaT5hbiBleHBpcnkgZGF0ZSB0aGF0IGlzIGEgZGF5IG9yIG1vcmUgbGF0 ZXIgdGhhbiB0aGUgc3RhcnQgZGF0ZSwgYW5kPC9saT4KCQk8bGk+PGVtPmRvZXMgbm90PC9l bT4gaGF2ZSBhbnkgcmVwZXRpdGlvbiBpbiBpdHMgPGNvZGU+c3RlcGZpZWxkPC9jb2RlPjwv bGk+Cgk8L3VsPgoKCTxwPmlzIGZsYWdnZWQgYXMgYSA8Y29kZT5tdWx0aTwvY29kZT4uIEJ5 IGRlZmF1bHQgdGhlIGZpcnN0IGV2ZW50IGlzIGRpc3BsYXllZCBpbiBmdWxsIGFuZCBlYWNo ICYjODIxNjtjb250aW51YXRpb24mIzgyMTc7IGV2ZW50IGlzIHNob3duIG9ubHkgYXMgYSBy aWdodCBhcnJvdyBpbiBzdWJzZXF1ZW50IGNlbGxzLiBFdmVudHMgbWF5IHNwYW4gbW9udGhz IG9yIHllYXJzIGFuZCB0aGUgcGx1Z2luIGZpZ3VyZXMgZXZlcnl0aGluZyBvdXQgdXNpbmcg ZmxhZyBydWxlczo8L3A+CgoJPHVsPgoJCTxsaT5UaGUgZmlyc3QgY2VsbCBvZiBhIHNwYW5u ZWQgc2V0IGlzIDxjb2RlPm11bHRpZmlyc3Q8L2NvZGU+PC9saT4KCQk8bGk+VGhlIGxhc3Qg Y2VsbCBpcyA8Y29kZT5tdWx0aWxhc3Q8L2NvZGU+PC9saT4KCQk8bGk+RXZlcnkgb3RoZXIg Y2VsbCBpcyBhIDxjb2RlPm11bHRpPC9jb2RlPiA8ZW0+ZXhjZXB0PC9lbT4gaWYgdGhlIGV2 ZW50IHJvbGxzIG92ZXIgaW50byB0aGUgbmV4dCBtb250aC4gSW4gdGhhdCBjYXNlLCB0aGUg ZW50cnkgb24gdGhlIDFzdCBvZiB0aGUgbW9udGggaXMgYSA8Y29kZT5tdWx0aXByZXY8L2Nv ZGU+IHRvIGluZGljYXRlIGl0IGJlbG9uZ3MgdG8gYSBwcmV2aW91cyBldmVudDwvbGk+CgkJ PGxpPklmIHRoZSAxc3QgZGF5IG9mIHRoZSBtb250aCBpcyB0aGUgbGFzdCBkYXkgb2YgdGhl IGV2ZW50LCB0aGUgPGNvZGU+bXVsdGlwcmV2PC9jb2RlPiBpcyBkcm9wcGVkIGluIGZhdm91 ciBvZiA8Y29kZT5tdWx0aWxhc3Q8L2NvZGU+PC9saT4KCTwvdWw+CgoJPHA+U3dpdGNoIG9m ZiBzcGFubmluZyBjb21wbGV0ZWx5IHdpdGggPGNvZGU+c2hvd3NwYW5uZWQ9JnF1b3Q7MCZx dW90OzwvY29kZT4uIEV2ZW50cyB0aGF0IGhhdmUgYW4gZXhwaXJ5IGFyZSB0aGVuIGp1c3Qg c3RhbmRhcmQgZXZlbnRzLjwvcD4KCgk8cD4mIzgyMTY7Q29udGludWF0aW9uJiM4MjE3OyBj ZWxscyBtYXkgYmUgcHJvY2Vzc2VkIHdpdGggYSBzZXBhcmF0ZSBmb3JtICg8Y29kZT5zcGFu Zm9ybTwvY29kZT4pLiBJZiB5b3UgY2hvb3NlIG5vdCB0byB1c2UgYSA8Y29kZT5zcGFuZm9y bTwvY29kZT4sIHRoZSBzdGFuZGFyZCA8Y29kZT5mb3JtPC9jb2RlPiBvciBjb250YWluZXIg d2lsbCBiZSB1c2VkIGFuZCB5b3Ugd2lsbCBoYXZlIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4g dGhlIGRpZmZlcmVudCBtdWx0aSBmbGFncyB5b3Vyc2VsZiB1c2luZyB0aGUgPGEgaHJlZj0i I2lmY2FsIj5jb25kaXRpb25hbCB0YWc8L2E+LjwvcD4KCgk8cD5Zb3UgY2FuIGFsc28gPGEg aHJlZj0iI2NhbmNlbCI+Y2FuY2VsIG9yIG9taXQ8L2E+IGRheXMgb2YgYSBzcGFubmVkIGV2 ZW50IGluIHRoZSBzYW1lIG1hbm5lciBhcyB5b3UgZG8gd2l0aCA8YSBocmVmPSIjcmVjdXIi PnJlY3VycmluZyBldmVudHM8L2E+LCBleGNlcHQgeW91IGNhbm5vdCBjYW5jZWwgdGhlIGZp cnN0IGRheTsgeW91IHNob3VsZCBtb3ZlIHRoZSBldmVudCBzdGFydCBkYXRlIGFuZCBhcG9s b2dpc2UhPC9wPgoKCTxoMiBpZD0iY2FuY2VsIj5DYW5jZWxsaW5nIGFuZCBvbWl0dGluZyBl dmVudHM8L2gyPgoKCTxwPlBsYW5zIGNoYW5nZSBhbmQgeW91IG1heSBmaW5kIHRoYXQgYSBn aWcgaGFzIHRvIGJlIGNhbmNlbGxlZC4gUGVyaGFwcyB5b3UgYWR2ZXJ0aXNlIGEgd2Vla2x5 IGJvb3QgZmFpciBidXQgdGhlIGZpZWxkIGlzIHdhdGVybG9nZ2VkIG9uZSB3ZWVrLiBObyBw cm9ibGVtOiBub21pbmF0ZSBhIDxjb2RlPnNraXBmaWVsZDwvY29kZT4gaW4geW91ciA8Y29k ZT5zbWRfY2FsZW5kYXI8L2NvZGU+IHRhZyBhbmQgZW50ZXIgdGhlIGRhdGUgb2YgdGhlIGNh bmNlbGxlZCBldmVudC48L3A+CgoJPHA+T3IgeW91IG1pZ2h0IHJ1biBhIHRoZWF0cmUgd2Vi IHNpdGUgdGhhdCBoYXMgYSB0aHJlZS13ZWVrIHByb2R1Y3Rpb24gcGVyZm9ybWFuY2Ugb24g d2Vla25pZ2h0cyBvbmx5LiBJbnN0ZWFkIG9mIHNldHRpbmcgdXAgdGhyZWUgc2VwYXJhdGUg ZXZlbnRzICYjODIxMjsgb25lIGZvciBlYWNoIHdlZWsgJiM4MjEyOyBub21pbmF0ZSBhbiA8 Y29kZT5vbWl0ZmllbGQ8L2NvZGU+IGFuZCBsaXN0IHRoZSBkYXRlcyBvbiB3aGljaCB0aGUg cGVyZm9ybWFuY2UgZG9lcyBub3QgYWlyLiBPbWl0dGVkIGRhdGVzIHdpbGwgbm90LCB1bmRl ciBhbnkgY2lyY3Vtc3RhbmNlcywgYXBwZWFyIG9uIHRoZSBjYWxlbmRhciBhbmQgdGhleSBv dmVycmlkZSBjYW5jZWxsZWQgZGF0ZXMvaG9saWRheXMuIElmIDxjb2RlPmNlbGxwbHVzPC9j b2RlPiBtb2RlIGlzIHVzZWQsIHlvdSB3aWxsIGhvd2V2ZXIgc2VlIGEgY2VsbCBmbGFnIGxh YmVsbGVkIDxjb2RlPm9taXQ8L2NvZGU+IChwbHVzIGNsYXNzIHByZWZpeCkgaW4gY2FzZSB5 b3UgZG8gd2lzaCB0byBzdHlsZSBzdWNoIGNlbGxzLjwvcD4KCgk8cD5UbyBzcGVjaWZ5IHRo ZSBkYXRlcyBpbiBlaXRoZXIgZmllbGQsIHVzZSBhbnkgYWNjZXB0YWJsZSBkYXRlIGZvcm1h dCwgYnV0IGRlcml2YXRpdmVzIG9mIGRkLW1vbnRobmFtZS15eXl5IG9yIG1vbnRobmFtZS1k ZC15eXl5IGFyZSB0aGUgbW9zdCB1bmFtYmlndW91cyB0byBhdm9pZCBwcm9ibGVtcyAoZS5n LiBpcyA8Y29kZT4xLzU8L2NvZGU+IEphbiA1dGggb3IgTWF5IDFzdCkuIFlvdSBjYW4gc3Bl Y2lmeSBhcyBtYW55IGNhbmNlbGxhdGlvbnMgb3Igb21pc3Npb25zIGFzIHlvdSBsaWtlOyBj b21tYS1zZXBhcmF0ZSBlYWNoIG9uZS4gWW91IG1heSBhbHNvIHNwZWNpZnkgcmFuZ2VzIG9m IGRhdGVzIHRvIG9taXQvY2FuY2VsIGJ5IHVzaW5nIHRoZSBub3RhdGlvbiA8Y29kZT5zdGFy dCBkYXRlID0mZ3Q7IGVuZCBkYXRlPC9jb2RlPi48L3A+CgoJPHA+QnkgZGVmYXVsdCwgY2Fu Y2VsbGVkIGV2ZW50cyB3aWxsIG5vdCBhcHBlYXIgb24gdGhlIGNhbGVuZGFyLiBJZiB5b3Ug dXNlIDxjb2RlPnNob3dza2lwcGVkPSZxdW90OzEmcXVvdDs8L2NvZGU+IHRoZSBldmVudCB3 aWxsIGFwcGVhciBpbiB0aGUgY2VsbCBhcyBub3JtYWwgYW5kIHRoZSA8Y29kZT5jYW5jZWw8 L2NvZGU+IGZsYWcgd2lsbCBhcHBseSB0byB0aGUgZXZlbnQgKGFuZCBjZWxsIGlmIHlvdSBj aG9vc2UpIHNvIHlvdSBtYXkgZGV0ZWN0L3N0eWxlIGl0LjwvcD4KCgk8aDIgaWQ9ImV4dHJh Ij5FeHRyYSBkYXRlczwvaDI+CgoJPHA+V2hlbiBldmVudHMgYXJlIDxhIGhyZWY9IiNjYW5j ZWwiPmNhbmNlbGxlZDwvYT4geW91IG1heSBlbGVjdCB0byByZXNjaGVkdWxlIHRoZSBldmVu dCBvbiBhIGRpZmZlcmVudCBkYXRlIGluc3RlYWQgb2YgaGF2aW5nIHRvIGNyZWF0ZSBhIG5l dyBldmVudCB3aXRoIGlkZW50aWNhbCBkZXRhaWxzLiBVc2UgdGhlIDxjb2RlPmV4dHJhZmll bGQ8L2NvZGU+IHRvIHNpbXBseSBhZGQgaXQgdG8gdGhlIGNhbGVuZGFyIG9uIGl0cyBuZXcg ZGF5LiBZb3UgbWlnaHQgYWxzbyB1c2UgdGhpcyBmZWF0dXJlIGlmIHlvdSBoYXZlIGEgPGEg aHJlZj0iI3JlY3VyIj5yZWN1cnJpbmc8L2E+IGV2ZW50IG9uIHRoZSAxc3Qgb2YgZXZlcnkg bW9udGggYnV0IGZvciBzb21lIHJlYXNvbiB5b3UgaGF2ZSB0byBtb3ZlIG9uZSBvZiB0aGUg ZXZlbnRzIGEgZGF5IG9yIHR3by4gU2ltcGx5IGNhbmNlbCB0aGUgb2ZmZW5kaW5nIGRhdGUg YW5kIGFkZCB0aGUgbmV3IGRhdGUgdXNpbmcgPGNvZGU+ZXh0cmFmaWVsZDwvY29kZT4uPC9w PgoKCTxwPlRoZSBsaXN0IG9mIGRhdGVzIGNhbiBiZSBpbiBhbnkgc3RhbmRhcmQgZGF0ZSBm b3JtYXQgKGluY2x1ZGluZyBkYXRlIHJhbmdlcyB1c2luZyA8Y29kZT5zdGFydCA9Jmd0OyBl bmQ8L2NvZGU+KS4gVGhleSB3aWxsIGJlIGFkZGVkIHRvIHRoZSBjYWxlbmRhciBhbmQgZmxh Z2dlZCBhcyA8Y29kZT5leHRyYTwvY29kZT4uIEFsc28gc2VlIHRoZSA8Y29kZT5leHRyYXN0 cmljdDwvY29kZT4gYXR0cmlidXRlLjwvcD4KCgk8cD5JZiB5b3VyIG9yaWdpbmFsIGV2ZW50 IHNwYW5zIG1vcmUgdGhhbiBvbmUgZGF5LCB5b3UgbWF5IGVsZWN0IHRvIHNjaGVkdWxlIHRo ZSBlbnRpcmUgYmxvY2sgYWdhaW4uIEFkZCBhICYjODIxNjsrJiM4MjE3OyBhZnRlciBhbnkg ZGF0ZSB5b3Ugd2lzaCB0byByZXBlYXQgaW4gaXRzIGVudGlyZXR5LCBlLmcuIDxjb2RlPjIw MDktTWFyLTEyKywgMjAwOS1KdW4tMTgrLCAyMDA5LUZlYi0xOTwvY29kZT4gd291bGQgY29w eSB0aGUgZW50aXJlIGV2ZW50IGJsb2NrIHRvIE1hcmNoIGFuZCBKdW5lLCBidXQgb25seSB0 aGUgMXN0IGRhdGUgdG8gRmViIDE5dGguIEV2ZW50cy9jZWxscyBhcmUgZmxhZ2dlZCBhcyBi b3RoIDxjb2RlPmV4dHJhPC9jb2RlPiBhbmQgPGNvZGU+bXVsdGk8L2NvZGU+IHdoZXJlIGFw cGxpY2FibGUuPC9wPgoKCTxwPk5vdGVzOjwvcD4KCgk8dWw+CgkJPGxpPmlmIHlvdSBzY2hl ZHVsZSBhbiBleHRyYSBldmVudCBvbiBhIGRheSB0aGF0IGFscmVhZHkgY29udGFpbnMgdGhl IHNhbWUgZXZlbnQgKHBlcmhhcHMgb24gYSBzcGFubmVkIG9yIHJlY3VycmluZyBkYXRlKSB5 b3UgbWF5IHNlZSB0d28gaWRlbnRpY2FsIGV2ZW50cyBvbiB0aGUgc2FtZSBkYXkuIFRyeSBh bmQgYXZvaWQgdGhpcywgdW5sZXNzIGl0JiM4MjE3O3MgeW91ciBpbnRlbmRlZCBiZWhhdmlv dXI8L2xpPgoJCTxsaT5kYXRlIHJhbmdlcyBhbmQgdGhlICYjODIxNjsrJiM4MjE3OyBzeW50 YXggYXJlIG11dHVhbGx5IGV4bGN1c2l2ZSBvbiBhbnkgZGF0ZSAoZS5nLiA8Y29kZT4yMDA5 LU1hci0xMCsgPSZndDsgMjAwOS1NYXItMTU8L2NvZGU+IGlzIGlsbGVnYWwpPC9saT4KCTwv dWw+CgoJPGgyIGlkPSJob2xpZGF5cyI+SG9saWRheXM8L2gyPgoKCTxwPlB1YmxpYyBob2xp ZGF5cyBuZWVkIG5vdCBiZSBhIG51aXNhbmNlIHRvIHlvdXIgZXZlbnRzLiBHaXZlIHRoZSBw bHVnaW4gYSBob2xpZGF5IGxpc3QgYW5kIGl0JiM4MjE3O2xsIG1ha2Ugc3VyZSBhbnkgcmVj dXJyaW5nIG9yIG11bHRpIGV2ZW50cyBhcmUgbm90IHNjaGVkdWxlZCBvbiB0aG9zZSBkYXlz LiA8YSBocmVmPSIjZXZlbnRzIj5TdGFuZGFyZDwvYT4gb25lLW9mZiBldmVudHMgYXJlIHBl cm1pdHRlZCBieSBkZWZhdWx0IGJlY2F1c2UgeW91IG1pZ2h0IHdhbnQgdG8gb3JnYW5pc2Ug YSBzcGVjaWFsIGV2ZW50IG9uIHRoYXQgZGF5LCB0aG91Z2ggeW91IGNhbiBmb3JiaWQgdGhv c2UgdG9vIGlmIHlvdSB3aXNoLjwvcD4KCgk8cD5UaGUgbGlzdCBvZiBkYXRlcyB5b3Ugc3Bl Y2lmeSBjYW4gYmUgZW50ZXJlZCBkaXJlY3RseSBpbiBhIHN0cmluZyBpbiB0aGUgPGNvZGU+ aG9saWRheXM8L2NvZGU+IGF0dHJpYnV0ZSBvciBpbiBhIDxjb2RlPiZsdDt0eHA6dmFyaWFi bGUgLyZndDs8L2NvZGU+OjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0i YmxvY2siPiZsdDt0eHA6dmFyaWFibGUgbmFtZT0mcXVvdDtuYXRfaG9scyZxdW90OwogICAg IHZhbHVlPSZxdW90O0RlYyAyNSwgMjYgRGVjLCAzMS9EZWMsIEphbi0xLAogICAgICAgIE1h eSA0IDIwMDksIDIwMDktMDgtMzEmcXVvdDsgLyZndDsKJmx0O3R4cDpzbWRfY2FsZW5kYXIg aG9saWRheXM9JnF1b3Q7dHhwdmFyOm5hdF9ob2xzJnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3By ZT4KCgk8cD5UaGF0IGxpc3Qgc2hvd3Mgc29tZSBvZiB0aGUgdmFyaWV0eSBhbmQgYnJlYWR0 aCBvZiBmb3JtYXRzIHRoZSBwbHVnaW4gYWxsb3dzLiBUaGVyZSBhcmUgbW9yZS4gTm90ZSB0 aGF0IHRoZSBldmVudHMgd2l0aG91dCBhIHllYXIgb2NjdXIgb24gdGhlIHNhbWUgZGF0ZSBl dmVyeSB5ZWFyLCB3aGVyZWFzIHRoZSBvbmVzIHdpdGggYSB5ZWFyIHdpbGwgb25seSBvY2N1 ciBvbiB0aGF0IHNwZWNpZmljIGRhdGUuPC9wPgoKCTxwPk9uY2UgeW91ciBkYXRlcyBhcmUg ZGVmaW5lZCB5b3UgY2FuIGNvbnRyb2wgd2hpY2ggZXZlbnRzIGFyZSBhbGxvd2VkIHRvIGZh bGwgb24gdGhvc2UgZGF0ZXMgdmlhIDxjb2RlPmhvbGlkYXlmbGFnczwvY29kZT4uIENvbWJp bmluZyB0aGF0IGF0dHJpYnV0ZSwgPGNvZGU+c2hvd3NwYW5uZWQ8L2NvZGU+LCA8Y29kZT5z aG93c2tpcHBlZDwvY29kZT4gYW5kIHRoZSBmb3JtcyAmIzgyMTI7IGFsb25nIHdpdGggdGhl IGNvbmRpdGlvbmFsIHRhZyAmIzgyMTI7IGNhbiBnaXZlIGEgd2lkZSB2YXJpZXR5IG9mIHdh eXMgdG8gZGlzcGxheSBldmVudHMgYW5kIGNlbGxzLjwvcD4KCgk8cD5Ib2xpZGF5IGNlbGxz IGFyZSBnaXZlbiB0aGUgZmxhZyA8Y29kZT5ob2xzPC9jb2RlPiwgYW5kIGFueSBldmVudCB0 aGF0IGlzIG5vdCBzcGVjaWZpY2FsbHkgcGVybWl0dGVkIGJ5IHRoZSA8Y29kZT5ob2xpZGF5 ZmxhZ3M8L2NvZGU+IGlzIGF1dG9tYXRpY2FsbHkgYXNzaWduZWQgYSA8Y29kZT5jYW5jZWw8 L2NvZGU+IGZsYWcgaWYgaXQgZmFsbHMgb24gb25lIG9mIHRoZSBkYXlzLiBPbWl0dGVkIGRh dGVzIHdpbGwsIGhvd2V2ZXIsIGNhdXNlIHRoZSA8Y29kZT5jYW5jZWw8L2NvZGU+IGZsYWcg dG8gYmUgcmVtb3ZlZC48L3A+CgoJPGgyIGlkPSJzbWRjYWwiPjxjb2RlPiZsdDt0eHA6c21k X2NhbGVuZGFyIC8mZ3Q7PC9jb2RlPjwvaDI+CgoJPHA+UHV0IHRoaXMgdGFnIHdoZXJldmVy IHlvdSB3YW50IHlvdXIgY2FsZW5kYXIgdG8gYXBwZWFyLiBVc2UgdGhlIGZvbGxvd2luZyBh dHRyaWJ1dGVzIHRvIGNvbnRyb2wgaXRzIG91dHB1dCBkaXNwbGF5IGFuZCB1c2UgdGhlIDxh IGhyZWY9IiNhdHRzdHlsZXMiPnN0eWxlIGF0dHJpYnV0ZXM8L2E+IHRvIGRldGVybWluZSBo b3cgdG8gYXBwbHkgc3R5bGVzIHRvIHRoZSB2YXJpb3VzIGV2ZW50cyBhbmQgY2VsbHMuPC9w PgoKCTxoMyBjbGFzcz0iYXR0cyAiIGlkPSJhdHRyaWJ1dGVzIj5NYWluIGF0dHJpYnV0ZXM8 L2gzPgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnNpemU8L3NwYW4+IDogY2Fs ZW5kYXIgc2l6ZSwgPGNvZGU+bGFyZ2U8L2NvZGU+IG9yIDxjb2RlPnNtYWxsPC9jb2RlPi4g VGhlIHNtYWxsIGlzIG1vcmUgZ2VhcmVkIHRvd2FyZHMgYSBtaW5pY2FsLCBhbHRob3VnaCBm dW5jdGlvbmFsbHkgdGhlcmUgPGEgaHJlZj0iI3NpemVkaWZmIj5pc24mIzgyMTc7dCBtdWNo IGJldHdlZW4gdGhlbTwvYT4uIERlZmF1bHQ6IDxjb2RlPmxhcmdlPC9jb2RlPjwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj50aW1lPC9zcGFuPiA6IHNob3cgPGNvZGU+cGFzdDwv Y29kZT4sIDxjb2RlPmZ1dHVyZTwvY29kZT4sIG9yIDxjb2RlPmFueTwvY29kZT4gZXZlbnQu IERlZmF1bHQ6IDxjb2RlPmFueTwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+ZXhwaXJlZDwvc3Bhbj4gOiBoaWRlICg8Y29kZT4wPC9jb2RlPikgb3Igc2hvdyAoPGNv ZGU+MTwvY29kZT4pIGV4cGlyZWQgZXZlbnRzLiBMZWF2ZSBibGFuayB0byB1c2UgdGhlIDxz cGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IEFkdmFuY2VkIFByZWZlcmVuY2UgJiM4MjE2 O1B1Ymxpc2ggZXhwaXJlZCBhcnRpY2xlcyYjODIxNzs8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+Zmlyc3RkYXk8L3NwYW4+IDogdGhlIDFzdCBkYXkgb2YgdGhlIHdlZWsgdG8g c2hvdyBpbiB0aGUgY2FsZW5kYXIuIDA9U3VuZGF5LCAxPU1vbmRheSAmIzgyMzA7IDY9U2F0 dXJkYXkuIERlZmF1bHQ6IDA8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZGF5Zm9y bWF0PC9zcGFuPiA6IHRoZSB3YXkgaW4gd2hpY2ggdGhlIGRheSBuYW1lcyBhcmUgcmVuZGVy ZWQuIDxjb2RlPkFCQlI8L2NvZGU+ICh0aGUgZGVmYXVsdCkgc2hvd3MgdGhlIGRheXMgYXMg TW9uLCBUdWUsIFdlZCwgZXRjIG9yIDxjb2RlPkZVTEw8L2NvZGU+IHJlbmRlcnMgdGhlaXIg ZnVsbCBuYW1lcy4gQWx0ZXJuYXRpdmVseSwgc3VwcGx5IGFueSB2YWxpZCA8YSBocmVmPSJo dHRwOi8vdWsyLnBocC5uZXQvc3RyZnRpbWUiPnN0cmZ0aW1lKCk8L2E+IGNvZGVzIHRvIHVz ZSB0aGF0IGluc3RlYWQuIExvY2FsZS1zcGVjaWZpYyBuYW1lcyBhcmUgcmV0dXJuZWQuPGRp diBjbGFzcz0iYnJlYWsiPllvdSBjYW4gaGFyZC1jb2RlIHlvdXIgb3duIGRheSBuYW1lczsg d3JpdGUgZWFjaCBpdGVtIGFzIGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgc3Vycm91bmRlZCBi eSA8Y29kZT57fTwvY29kZT4gYnJhY2tldHMuIElmIHlvdSB3YW50ZWQgdHdvLWxldHRlciBH ZXJtYW4gd2VlayBkYXlzIHlvdSBjb3VsZCB1c2U6IDxjb2RlPmRheWZvcm1hdD0mcXVvdDt7 U28sTW8sRGksTWksRG8sRnIsU2F9JnF1b3Q7PC9jb2RlPi4gVGhlIGZpcnN0IGRheSBpbiB0 aGUgbGlzdCA8c3Ryb25nPm11c3Q8L3N0cm9uZz4gcmVwcmVzZW50IFN1bmRheSBvciB0aGlu Z3Mgd2lsbCBicmVhazwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5tb250 aGZvcm1hdDwvc3Bhbj4gOiB0aGUgd2F5IGluIHdoaWNoIHRoZSBtb250aCBuYW1lcyBhcmUg cmVuZGVyZWQuIDxjb2RlPkZVTEw8L2NvZGU+ICh0aGUgZGVmYXVsdCkgc2hvd3MgdGhlIGZ1 bGwgbW9udGggbmFtZXMgb3IgPGNvZGU+QUJCUjwvY29kZT4gcmVuZGVycyB0aGVpciBhYmJy ZXZpYXRlZCBuYW1lcy4gQWx0ZXJuYXRpdmVseSwgc3VwcGx5IGFueSB2YWxpZCA8YSBocmVm PSJodHRwOi8vdWsyLnBocC5uZXQvc3RyZnRpbWUiPnN0cmZ0aW1lKCk8L2E+IGNvZGVzIHRv IHVzZSB0aGF0IGluc3RlYWQuIExvY2FsZS1zcGVjaWZpYyBuYW1lcyBhcmUgcmV0dXJuZWQu PGRpdiBjbGFzcz0iYnJlYWsiPllvdSBjYW4gaGFyZC1jb2RlIHlvdXIgb3duIG1vbnRoIG5h bWVzOyB3cml0ZSBlYWNoIGl0ZW0gYXMgYSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBzdXJyb3Vu ZGVkIGJ5IDxjb2RlPnt9PC9jb2RlPiBicmFja2V0cy4gSWYgeW91IHdhbnRlZCBzaW5nbGUt bGV0dGVyIG1vbnRoIG5hbWVzIHlvdSBjb3VsZCB1c2U6IDxjb2RlPm1vbnRoZm9ybWF0PSZx dW90O3tKLEYsTSxBLE0sSixKLEEsUyxPLE4sRH0mcXVvdDs8L2NvZGU+LiBUaGUgZmlyc3Qg bW9udGggaW4gdGhlIGxpc3QgPHN0cm9uZz5tdXN0PC9zdHJvbmc+IHJlcHJlc2VudCBKYW51 YXJ5IG9yIHRoaW5ncyB3aWxsIGJyZWFrPC9kaXY+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPnNlbGVjdDwvc3Bhbj4gOiB1c2UgYSBzZWxlY3QgZHJvcGRvd24gZm9yIHJhcGlk IGFjY2VzcyB0byB3ZWVrcywgbW9udGhzIG9yIHllYXJzIGluc3RlYWQgb2Ygc2VlaW5nIGp1 c3QgdGhlIG5hbWVzLiBEZWZhdWx0OiB1bnNldCwgYnV0IHlvdSBtYXkgbWFrZSBhIChjb21t YS1zZXBhcmF0ZWQpIGxpc3QgZnJvbSBlaXRoZXIgPGNvZGU+d2VlazwvY29kZT4gLyA8Y29k ZT5tb250aDwvY29kZT4gb3IgPGNvZGU+eWVhcjwvY29kZT4gKHdlZWsgYW5kIG1vbnRoIGFy ZSBtdXR1YWxseSBleGNsdXNpdmUpLjxkaXYgY2xhc3M9ImJyZWFrIj5Zb3UgbWF5IGFsc28g c3BlY2lmeSB1cCB0byB0d28gZXh0cmEgYXJndW1lbnRzLCBzZXBhcmF0ZWQgYnkgPGNvZGU+ OjwvY29kZT4gY2hhcnMuIFRoZXNlIGFkZCB0ZXh0IGluIGZyb250IG9mIGFuZCBiZWhpbmQg dGhlIHdlZWsvbW9udGgveWVhciwgcmVzcGVjdGl2ZWx5LiBGb3IgZXhhbXBsZTogPGNvZGU+ c2VsZWN0PSZxdW90O3dlZWs6V0VFSyMsIHllYXI6Jmx0OzomZ3Q7JnF1b3Q7PC9jb2RlPiB3 b3VsZCByZW5kZXIgYSBzZWxlY3QgbGlzdCB3aXRoIGVudHJpZXMgdGhhdCBtaWdodCBsb29r IGxpa2UgdGhpczogPGNvZGU+V0VFSyMxNSAmbHQ7MjAwOSZndDs8L2NvZGU+PC9kaXY+PC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnNlbGVjdGJ0bjwvc3Bhbj4gOiBieSBkZWZh dWx0LCB0aGUgc2VsZWN0IGRyb3Bkb3ducyB3aWxsIGF1dG8tc3VibWl0IHdoZW4gdGhleSBh cmUgY2hhbmdlZC4gSWYgeW91IHByZWZlciBhIGRlZGljYXRlZCBzdWJtaXQgYnV0dG9uLCBn aXZlIHRoZSB0ZXh0IHlvdSB3aXNoIHRvIGFwcGVhciBvbiB0aGUgYnV0dG9uIGhlcmUuIFRo ZSBidXR0b24gaGFzIGEgZml4ZWQgY2xhc3Mgb2YgPGNvZGU+c21kX2NhbF9pbnB1dDwvY29k ZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+aXNvd2Vla3M8L3NwYW4+IDogc2hv dyA8c3BhbiBjbGFzcz0iY2FwcyI+SVNPPC9zcGFuPiB3ZWVrIG51bWJlcnMgYXMgYSBjb2x1 bW4gYXQgdGhlIHN0YXJ0IG9mIHRoZSBjYWxlbmRhci4gQW55IHRleHQgaW4gdGhpcyBhdHRy aWJ1dGUgZW5hYmxlcyB0aGUgZmVhdHVyZSwgYW5kIGJlY29tZXMgdGhlIGhlYWRpbmcgb2Yg dGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5JU088L3NwYW4+IHdlZWsgY29sdW1uLiBZb3UgbWF5 IGNoYW5nZSB0aGUgZGVmYXVsdCB3ZWVrIG51bWJlciBpbiBlYWNoIGNlbGwgYnkgYWRkaW5n IGEgY29tbWEgYW5kIHNvbWUgdGV4dDsgd2hhdGV2ZXIgeW91IGVudGVyIHdpbGwgYmUgcHV0 IGluIGVhY2ggPHNwYW4gY2xhc3M9ImNhcHMiPklTTzwvc3Bhbj4gd2VlayBjZWxsLiBVc2Ug dGhlIHJlcGxhY2VtZW50IGNvZGVzIDxjb2RlPnt3ZWVrfTwvY29kZT4sIDxjb2RlPnttb250 aH08L2NvZGU+LCA8Y29kZT57eWVhcn08L2NvZGU+IG9yIDxjb2RlPntpc295ZWFyfTwvY29k ZT4gaW4geW91ciBtYXJrdXAgdG8gaW5zZXJ0IHRoZSByZWxldmFudCBpbmZvLiA8ZGl2IGNs YXNzPSJicmVhayI+RXhhbXBsZTogPGNvZGU+aXNvd2Vla3M9JnF1b3Q7d2ssICN7d2Vla30m cXVvdDs8L2NvZGU+IHdpbGwgcmVuZGVyICYjODIxNjt3ayYjODIxNzsgYXQgdGhlIHRvcCBv ZiB0aGUgY29sdW1uIGFuZCBzb21ldGhpbmcgbGlrZSA8Y29kZT4jMjQ8L2NvZGU+LCA8Y29k ZT4jMjU8L2NvZGU+LCA8Y29kZT4jMjY8L2NvZGU+JiM4MjMwOyBiZW5lYXRoIGl0LiBJZiB0 aGUgZmlyc3QgaXRlbSBpcyBvbWl0dGVkLCB0aGVyZSB3aWxsIGJlIG5vIGNvbHVtbiBoZWFk aW5nLjwvZGl2PjxkaXYgY2xhc3M9ImJyZWFrIj5Ob3RlIHRoYXQgaWYgdGhpcyBmZWF0dXJl IGlzIGVuYWJsZWQsIDxjb2RlPmZpcnN0ZGF5PC9jb2RlPiB3aWxsIGJlIGZvcmNlZCB0byBz dGFydCBvbiBhIE1vbmRheSBhcyBnb3Zlcm5lZCBieSB0aGUgPHNwYW4gY2xhc3M9ImNhcHMi PklTTzwvc3Bhbj4gc3BlY2lmaWNhdGlvbi4gRGVmYXVsdDogdW5zZXQ8L2Rpdj48L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+c3RhdHVzPC9zcGFuPiA6IGV2ZW50cyBpbiB0aGlz IGxpc3Qgb2Ygc3RhdHVzIGFyZSBwdWJsaXNoZWQuIERlZmF1bHQ6IDxjb2RlPmxpdmU8L2Nv ZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNhdGVnb3J5PC9zcGFuPiA6IGZp bHRlciBldmVudHMgYnkgdGhpcyBsaXN0IG9mIGNhdGVnb3JpZXMuIERlZmF1bHQ6IHVuc2V0 PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnNlY3Rpb248L3NwYW4+IDogZmlsdGVy IGV2ZW50cyBieSB0aGlzIGxpc3Qgb2Ygc2VjdGlvbnMuIERlZmF1bHQ6IHVuc2V0PC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmF1dGhvcjwvc3Bhbj4gOiBmaWx0ZXIgZXZlbnRz IGJ5IHRoaXMgbGlzdCBvZiBhdXRob3IgbG9naW4gbmFtZXMuIERlZmF1bHQ6IHVuc2V0PC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnJlYWxuYW1lPC9zcGFuPiA6IGZpbHRlciBl dmVudHMgYnkgdGhpcyBsaXN0IG9mIGF1dGhvciBSZWFsIE5hbWVzIChub3RlOiBhZGRzIG9u ZSBleHRyYSBxdWVyeSkuIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPnNob3dhbGw8L3NwYW4+IDogaWYgeW91ciBjYWxlbmRhciBhcHBlYXJzIG9uIHRo ZSBmcm9udCBwYWdlIGFuZCB5b3UgaGF2ZSA8ZW0+bm90PC9lbT4gdXNlZCB0aGUgPGNvZGU+ c2VjdGlvbjwvY29kZT4gYXR0cmlidXRlIHRoZSBjYWxlbmRhciBvbmx5IHNob3dzIGV2ZW50 cyBmcm9tIHNlY3Rpb25zIHRoYXQgaGF2ZSB0aGVpciA8Y29kZT5PbiBmcm9udCBwYWdlPC9j b2RlPiByYWRpbyBidXR0b24gc2V0LiBVc2UgPGNvZGU+c2hvd2FsbD0mcXVvdDsxJnF1b3Q7 PC9jb2RlPiB0byBzaG93IGFsbCBldmVudHMgZnJvbSBhbGwgc2VjdGlvbnMgb24gZnJvbnQg cGFnZSBjYWxlbmRhcnM8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+aWQ8L3NwYW4+ IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBJRCB0byBhcHBseSB0byB0 aGUgdGFibGUgdGhhdCBob2xkcyB0aGUgY2FsZW5kYXIuIFRoaXMgaXMgdGhlIHZhbHVlIG9m IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB2YXJpYWJsZSA8Y29kZT5jYWxp ZDwvY29kZT4uIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i Pm5hdmlkPC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gSUQg dG8gYXBwbHkgdG8gdGhlIHByZXYvbmV4dC9tb250aC95ZWFyIG5hdmlnYXRpb24gZm9ybS4g RGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bmF2YXJyb3c8 L3NwYW4+IDogY29tbWEtc2VwYXJhdGVkIHBhaXIgb2YgaXRlbXMgeW91IHdhbnQgdG8gYXBw ZWFyIGFzIHByZXYvbmV4dCBhcnJvd3MgaW4gdGhlIGNhbGVuZGFyLiBEZWZhdWx0OiA8Y29k ZT4mYW1wOyM2MDssICZhbXA7IzYyOzwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+bW9udGg8L3NwYW4+IDogc3RhcnQgdGhlIGNhbGVuZGFyIG9uIHRoaXMgbW9udGgg ZnJvbSAxIChKYW51YXJ5KSB0byAxMiAoRGVjZW1iZXIpLiBOb3JtYWwgY2FsZW5kYXIgbmF2 aWdhdGlvbiBvdmVycmlkZXMgdGhpcyB2YWx1ZS4gSWYgPGNvZGU+c3RhdGljPC9jb2RlPiBp cyB1c2VkLCB0aGlzIG1vbnRoIGJlY29tZXMgdGhlIG9ubHkgb25lIHlvdSBtYXkgdmlldy4g SWYgdW5zZXQsIGFuZCBubyA8Y29kZT5tPTwvY29kZT4gdmFsdWUgYXBwZWFycyBvbiB0aGUg PHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gbGluZSwgdGhlIGN1cnJlbnQgbW9udGgg aXMgdXNlZDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj53ZWVrPC9zcGFuPiA6IHN0 YXJ0IHRoZSBjYWxlbmRhciBkdXJpbmcgdGhlIG1vbnRoIGNvbnRhaW5pbmcgdGhpcyA8c3Bh biBjbGFzcz0iY2FwcyI+SVNPPC9zcGFuPiB3ZWVrIChmcm9tIDEgdG8gNTMpLiBJZ25vcmVk IGlmIDxjb2RlPnN0YXRpYzwvY29kZT4gb3Igb25lIG9mIHRoZSBjYWxlbmRhciBuYXZpZ2F0 aW9uIGNvbnRyb2xzIGlzIHVzZWQuIElmIGEgPGNvZGU+dz08L2NvZGU+IHZhbHVlIGFwcGVh cnMgb24gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGxpbmUsIHRoZSBnaXZl biB3ZWVrIG92ZXJyaWRlcyBhbnkgbW9udGggdmFsdWU8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+eWVhcjwvc3Bhbj4gOiBzdGFydCB0aGUgY2FsZW5kYXIgYXQgdGhpcyA0LWRp Z2l0IHllYXIuIE5vcm1hbCBjYWxlbmRhciBuYXZpZ2F0aW9uIG92ZXJyaWRlcyB0aGlzIHZh bHVlLiBJZiA8Y29kZT5zdGF0aWM8L2NvZGU+IGlzIHVzZWQsIHRoaXMgeWVhciBiZWNvbWVz IHRoZSBvbmx5IG9uZSB5b3UgbWF5IHZpZXcuIElmIHVuc2V0LCBhbmQgbm8gPGNvZGU+eT08 L2NvZGU+IHZhbHVlIGFwcGVhcnMgb24gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3Nw YW4+IGxpbmUsIHRoZSBjdXJyZW50IHllYXIgaXMgdXNlZDwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj55ZWFyd2lkdGg8L3NwYW4+IDogYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCB0 aGF0IHNwZWNpZmllcyBob3cgbWFueSB5ZWFycyB5b3VyIGNhbGVuZGFyIHNwYW5zLiBUaGUg ZGVmYXVsdCAoMCkgdXNlcyB0aGUgZWFybGllc3QgKHBvc3RlZCkgZXZlbnQgaW4gdGhlIHNl Y3Rpb24gYXMgdGhlIGVhcmxpZXN0IHllYXIsIGFuZCB0aGUgbGF0ZXN0IChtb2RpZmllZCBv ciBwb3N0ZWQsIHdoaWNoZXZlciBpcyBncmVhdGVyKSBldmVudCBhcyB0aGUgbGF0ZXN0IHll YXIuIFlvdSB3aWxsIG5vdCBiZSBwZXJtaXR0ZWQgdG8gbmF2aWdhdGUgdGhlIGNhbGVuZGFy IG91dHNpZGUgdGhpcyByYW5nZS48ZGl2IGNsYXNzPSJicmVhayI+VG8gd2lkZW4gdGhlIHJh bmdlLCBzcGVjaWZ5IHNvbWUgdmFsdWVzLCBmb3IgZXhhbXBsZSA8Y29kZT55ZWFyd2lkdGg9 JnF1b3Q7Miw0JnF1b3Q7PC9jb2RlPiB3aWxsIHN1YnRyYWN0IDIgd2hvbGUgeWVhcnMgZnJv bSB0aGUgZWFybGllc3QgZXZlbnQgYW5kIGFkZCA0IHdob2xlIHllYXJzIHRvIHRoZSBsYXRl c3QgZXZlbnQuIElmIHlvdSBzcGVjaWZ5IGEgc2luZ2xlIG51bWJlciwgdGhhdCB2YWx1ZSB3 aWxsIGJlIHVzZWQgdG8gZXhwYW5kIHRoZSByYW5nZSBlcXVhbGx5IGluIGJvdGggZGlyZWN0 aW9ucy48L2Rpdj48ZGl2IGNsYXNzPSJicmVhayI+IElmIHlvdSBhZGQgJiM4MjE2O2MmIzgy MTc7IHRvIGVpdGhlciB2YWx1ZSB0aGUgY3VycmVudCB5ZWFyIGlzIHVzZWQgaW5zdGVhZCBv ZiB0aGUgZWFybGllc3Qgb3IgbGF0ZXN0IGV2ZW50LCBlLmcuIDxjb2RlPnllYXJ3aWR0aD0m cXVvdDsyLDRjJnF1b3Q7PC9jb2RlPiB3aWxsIHN1YnRyYWN0IDIgeWVhcnMgZnJvbSB0aGUg ZWFybGllc3QgZXZlbnQgYW5kIGFkZCA0IHdob2xlIHllYXJzIHRvIHRvZGF5JiM4MjE3O3Mg ZGF0ZTwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5yZW1hcDwvc3Bhbj4g OiB3aGVuIGRlYWxpbmcgd2l0aCBtdWx0aXBsZSBjYWxlbmRhcnMgb24gYSBwYWdlIGl0IGlz IG9mdGVuIGJlbmVmaWNpYWwgdG8gdXNlIGRpZmZlcmVudCBuYW1lcyBmb3IgPGNvZGU+dz08 L2NvZGU+LCA8Y29kZT5tPTwvY29kZT4gb3IgPGNvZGU+eT08L2NvZGU+IGluIHRoZSA8c3Bh biBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBzbyB5b3UgY2FuIG5hdmlnYXRlIGNhbGVuZGFy cyBpbmRpdmlkdWFsbHkuIFJlbmFtZSB0aGUgdywgbSwgJmFtcDsgeSB2YXJpYWJsZXMsIGZv ciBleGFtcGxlOiA8Y29kZT5yZW1hcD0mcXVvdDt3OndrLCB5OnlyJnF1b3Q7PC9jb2RlPjwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5mb3JtPC9zcGFuPiA6IHVzZSB0aGlzIDxz cGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZvcm0gdG8gcHJvY2VzcyBlYWNoIGV2ZW50 LiBJZiB0aGUgY2FsZW5kYXIgdGFnIGlzIHVzZWQgYXMgYSBjb250YWluZXIgaXQgd2lsbCBi ZSB1c2VkIGluIHByZWZlcmVuY2UgdG8gdGhlIGZvcm0uIElmIG5laXRoZXIgYXJlIHVzZWQs IGEgZGVmYXVsdCBpcyB1c2VkIChMYXJnZTogaHlwZXJsaW5rZWQgYXJ0aWNsZSB0aXRsZSwg U21hbGw6IGVtcHR5IGV2ZW50KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5zcGFu Zm9ybTwvc3Bhbj4gOiByZW5kZXIgc3Bhbm5lZCBldmVudHMgZGlmZmVyZW50bHkgdG8gc3Rh bmRhcmQgZXZlbnRzOyB0aGV5IHVzdWFsbHkgdXNlIHRoZSBzYW1lIDxjb2RlPmZvcm08L2Nv ZGU+L2NvbnRhaW5lci4gSWYgbmVpdGhlciBhcmUgc3BlY2lmaWVkLCBhIHJpZ2h0LWFycm93 IHdpbGwgYmUgdXNlZCB0byBpbmRpY2F0ZSBjb250aW51YXRpb24gb2YgdGhlIHByZXZpb3Vz IGRheSYjODIxNztzIGV2ZW50LiBOb3RlIHRoZSBmaXJzdCBkYXkgb2YgYSBzcGFubmVkIHNl dCBpcyA8ZW0+bm90PC9lbT4gcGFzc2VkIHRvIHRoZSA8Y29kZT5zcGFuZm9ybTwvY29kZT47 IG9ubHkgY29udGludWF0aW9uIGNlbGxzIGFyZSBwYXNzZWQgdG8gaXQ8L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+cmVjdXJmb3JtPC9zcGFuPiA6IHJlbmRlciByZWN1cnJpbmcg ZXZlbnRzIGRpZmZlcmVudGx5IHRvIHN0YW5kYXJkIGV2ZW50cy4gVGhlIGZpcnN0IGV2ZW50 IG9mIGEgcmVjdXJyaW5nIHNldCBpcyA8ZW0+bm90PC9lbT4gcGFzc2VkIHRvIDxjb2RlPnJl Y3VyZm9ybTwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y2VsbGZvcm08 L3NwYW4+ICg8c3BhbiBjbGFzcz0icmVxdWlyZWQiPm9ubHkgb24gbGFyZ2UgY2FsZW5kYXJz PC9zcGFuPikgOiB1c2UgdGhpcyBpZiB5b3Ugd2lzaCB0byBidWlsZCBlYWNoIGNlbGwgZW50 aXJlbHkgZnJvbSBzY3JhdGNoLiBUaGVyZSBhcmUgc29tZSA8YSBocmVmPSIjY2VsbGZvcm0i PnJlcGxhY2VtZW50IHZhcmlhYmxlczwvYT4geW91IGNhbiB1c2UgdG8gaW5zZXJ0IGR5bmFt aWMgcGllY2VzIG9mIGluZm9ybWF0aW9uIGluIHlvdXIgY2VsbHM8L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+c3RlcGZpZWxkPC9zcGFuPiA6IHRoZSBJRCBvZiBhIGZpZWxkIHdp dGhpbiB3aGljaCBhbiBldmVudCBtYXkgYmUgdG9sZCB0byByZXBlYXQuIE5vdGUgaXQgaXMg dGhlIGZpZWxkJiM4MjE3O3MgSUQgPGVtPm5vdCBpdHMgbmFtZTwvZW0+LCBzbyBmb3IgY3Vz dG9tIGZpZWxkcyB5b3UgbXVzdCB1c2UgPGNvZGU+Y3VzdG9tXzE8L2NvZGU+IG9yIDxjb2Rl PmN1c3RvbV8yPC9jb2RlPiBldGMuIFdpdGhvdXQgdGhpcyBhdHRyaWJ1dGUsIG5vIDxhIGhy ZWY9IiNyZWN1ciI+cmVjdXJyaW5nIGV2ZW50czwvYT4gbWF5IGJlIGRlZmluZWQ8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+b21pdGZpZWxkPC9zcGFuPiA6IHRoZSBJRCAobm90 IG5hbWUpIG9mIGEgZmllbGQgdGhhdCBjb250YWlucyBhIGxpc3Qgb2YgZGF0ZXMgb24gd2hp Y2ggdGhpcyBldmVudCBpcyB0byBiZSA8YSBocmVmPSIjY2FuY2VsIj5vbWl0dGVkPC9hPjwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5za2lwZmllbGQ8L3NwYW4+IDogdGhlIElE IChub3QgbmFtZSkgb2YgYSBmaWVsZCB0aGF0IGNvbnRhaW5zIGEgbGlzdCBvZiBkYXRlcyBv biB3aGljaCB0aGlzIGV2ZW50IGlzIDxhIGhyZWY9IiNjYW5jZWwiPmNhbmNlbGxlZDwvYT48 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZXh0cmFmaWVsZDwvc3Bhbj4gOiB0aGUg SUQgKG5vdCBuYW1lKSBvZiBhIGZpZWxkIGZyb20gd2hpY2ggYSBsaXN0IG9mIDxhIGhyZWY9 IiNleHRyYSI+YWRkaXRpb25hbCBldmVudCBkYXRlczwvYT4gbWF5IGJlIGdpdmVuOyB0aGUg c2FtZSBldmVudCBkZXRhaWxzIHdpbGwgYmUgY29waWVkIHRvIHRoZSBuZXcgZGF5KHMpPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmV4dHJhc3RyaWN0PC9zcGFuPiA6IGFueSBk YXRlcyBpbiA8Y29kZT5leHRyYWZpZWxkPC9jb2RlPiBhdXRvbWF0aWNhbGx5IGFwcGVhciBv biB0aGUgY2FsZW5kYXIsIGJ1dCB5b3UgbWF5IGNob29zZSB0byByZXN0cmljdCBuZXcgZGF0 ZXMgZnJvbSBhcHBlYXJpbmcgYWZ0ZXIgdGhlIGV2ZW50JiM4MjE3O3MgZXhwaXJ5IGRhdGUg Ynkgc2V0dGluZyA8Y29kZT5leHRyYXN0cmljdD0mcXVvdDsxJnF1b3Q7PC9jb2RlPi4gRGVm YXVsdDogMDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5zaG93c2tpcHBlZDwvc3Bh bj4gOiBzaG93ICgxKSBvciBoaWRlICgwKSBjYW5jZWxsZWQgZXZlbnRzIG9uIHRoZSBjYWxl bmRhci4gRGVmYXVsdDogMDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5zaG93c3Bh bm5lZDwvc3Bhbj4gOiBzaG93ICgxKSBvciBoaWRlICgwKSBzcGFubmVkIGV2ZW50cyBvbiB0 aGUgY2FsZW5kYXIuIERlZmF1bHQ6IDE8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ ZGF0ZWZpZWxkczwvc3Bhbj4gOiB0aGUgSURzIChub3QgbmFtZXMpIG9mIHVwIHRvIHR3byBm aWVsZHMgZnJvbSB3aGljaCBwb3N0ZWQgYW5kIGV4cGlyeSBkYXRlIHN0YW1wcyBtYXkgYmUg Z2l2ZW4uIENvbW1hLXNlcGFyYXRlIHRoZSBmaWVsZCBuYW1lczsgdGhlIGZpcnN0IHdpbGwg YmUgdXNlZCBhcyB0aGUgUG9zdGVkIGRhdGUgYW5kIHRoZSBzZWNvbmQgYXMgdGhlIEV4cGly eS4gSWYgZWl0aGVyIGlzIG9taXR0ZWQgb3IgbWFuZ2xlZCwgdGhlIGFydGljbGUmIzgyMTc7 cyAmIzgyMjA7cmVhbCYjODIyMTsgcG9zdGVkL2V4cGlyeSBkYXRlIHdpbGwgYmUgdXNlZCBp bnN0ZWFkLiBJZiB0aGUgZXhwaXJ5IGRhdGUgb2NjdXJzIGJlZm9yZSB0aGUgc3RhcnQgZGF0 ZSwgeW91ciBkYXRlZmllbGRzIHdpbGwgYmUgaWdub3JlZCBhbmQgYSB3YXJuaW5nIHdpbGwg YmUgaXNzdWVkPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmhvbGlkYXlzPC9zcGFu PiA6IGxpc3Qgb2YgZGF0ZXMgdGhhdCBhcmUgZGVjcmVlZCBhcyA8YSBocmVmPSIjaG9saWRh eXMiPmhvbGlkYXlzPC9hPi4gTWF5IGJlIGRlZmVycmVkIHRvIGEgPGNvZGU+Jmx0O3R4cDp2 YXJpYWJsZSAvJmd0OzwvY29kZT4sIGluIHdoaWNoIGNhc2UgZGVmaW5lIHlvdXIgbGlzdCBp biBhIG5hbWVkIHZhcmlhYmxlIGFuZCB1c2UgPGNvZGU+aG9saWRheXM9JnF1b3Q7dHhwdmFy Om15X3Zhcl9uYW1lJnF1b3Q7PC9jb2RlPiB0byByZWFkIHRoZW0gaW50byB0aGUgcGx1Z2lu PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmhvbGlkYXlmbGFnczwvc3Bhbj4gOiBw ZXJtaXQgY2VydGFpbiA8YSBocmVmPSIjbmFtaW5nIj5ldmVudCBmbGFnczwvYT4gdG8gYmUg c2NoZWR1bGVkIG9uIGhvbGlkYXlzLiBEZWZhdWx0OiA8Y29kZT5zdGFuZGFyZDwvY29kZT4g KGkuZS4gc3RhbmRhcmQgb25lLW9mZiBldmVudHMpIGJ1dCBvdGhlcnMgbWF5IGJlIGxpc3Rl ZCBhcyB3ZWxsLiBDaG9vc2UgZnJvbSA8Y29kZT5zdGFuZGFyZDwvY29kZT4sIDxjb2RlPnJl Y3VyPC9jb2RlPiBvciA8Y29kZT5tdWx0aTwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+bGlua3Bvc3RlZDwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJyZXF1aXJlZCI+b25s eSBvbiBzbWFsbCBjYWxlbmRhcnM8L3NwYW4+KSA6IGVhY2ggY2VsbCB0aGF0IGNvbnRhaW5z IGFuIDxhIGhyZWY9IiNuYW1pbmciPmV2ZW50IGZsYWc8L2E+IG9mIHRoZSBnaXZlbiB0eXBl KHMpIHdpbGwgaGF2ZSBpdHMgZGF5IG51bWJlciBsaW5rZWQgdG8gdGhlIGV2ZW50JiM4MjE3 O3MgdHJ1ZSBzdGFydCBkYXRlIGluc3RlYWQgb2YgdGhlIGNlbGwmIzgyMTc7cyBkYXRlLiBU aHVzLCBpZiB5b3UgaGF2ZSBhIHdlZWtseSBldmVudCB0aGF0IHN0YXJ0cyBvbiB0aGUgMjB0 aCBEZWNlbWJlciAyMDA4LCBzZXR0aW5nIDxjb2RlPmxpbmtwb3N0ZWQ9JnF1b3Q7cmVjdXIm cXVvdDs8L2NvZGU+IHdpbGwgY2F1c2UgdGhlIGxpbmsgdG8gYmUgPGNvZGU+ZGF0ZT0yMDA4 LTEyLTIwPC9jb2RlPiBldmVyeSB3ZWVrLiBUaGlzIGFsbG93cyB5b3UgdG8gYWx3YXlzIGxp bmsgdG8gYSB2YWxpZCBhcnRpY2xlL2V2ZW50LiBXaXRob3V0IGxpbmtwb3N0ZWQsIHRoZSBk YXRlcyB3b3VsZCBiZSAyMDA4LTEyLTIwLCAyMDA4LTEyLTI3LCAyMDA5LTAxLTAzLCBhbmQg c28gb24uIERlZmF1bHQ6IDxjb2RlPnJlY3VyLCBtdWx0aSwgbXVsdGlwcmV2LCBtdWx0aWxh c3Q8L2NvZGU+IChpLmUuIGFueSByZWN1cnJpbmcgb3Igc3Bhbm5lZCBldmVudCkuIE5vdGUg dGhhdCBpZiBtb3JlIHRoYW4gb25lIGV2ZW50IG9jY3VycyBpbiB0aGUgY2VsbCwgdGhlIGxp bmsgd2lsbCBvbmx5IGJlIHRvIHRoZSBmaXJzdCBldmVudCB0aGUgcGx1Z2luIGZpbmRzPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm1haW50YWluPC9zcGFuPiA6IGtlZXAgdHJh Y2sgb2YgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8 L3NwYW4+IHdoZW4gbmF2aWdhdGluZyB0aGUgY2FsZW5kYXIgdXNpbmcgdGhlIG5leHQvcHJl diBvciBtb250aC95ZWFyIHNlbGVjdCBsaXN0cy4gSXRlbXMgdGhhdCB5b3Ugd2FudCB0byBw cmVzZXJ2ZSBzaG91bGQgYmUgY29tbWEtc2VwYXJhdGVkLiBDaG9vc2UgZnJvbSA8Y29kZT5j YWxpZDwvY29kZT4sIDxjb2RlPnNlY3Rpb248L2NvZGU+LCA8Y29kZT5jYXRlZ29yeTwvY29k ZT4sIDxjb2RlPmF1dGhvcjwvY29kZT4sIDxjb2RlPmFydGljbGU8L2NvZGU+LCA8Y29kZT5w ZzwvY29kZT4gb3IgeW91ciBvd24gPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdmFy aWFibGUuIERlZmF1bHQ6IDxjb2RlPmNhbGlkPC9jb2RlPi48ZGl2IGNsYXNzPSJicmVhayI+ VXNlIDxjb2RlPm1haW50YWluPSZxdW90O3NlY3Rpb24sIGFydGljbGUsIGNhbGlkJnF1b3Q7 PC9jb2RlPiBpZiB5b3UgaGF2ZSBhbiBpbmRpdmlkdWFsIGFydGljbGUgcGFnZSB3aXRoIGEg Y2FsZW5kYXIgaW4gYSBzaWRlYmFyLCBzbyB0aGUgY3VycmVudGx5IHZpZXdlZCBhcnRpY2xl IHdpbGwgcmVtYWluIGluIHZpZXcgd2hlbiBjaGFuZ2luZyBkYXRlLiBJZiB5b3Ugd2lzaCB0 byBtYWludGFpbiBzdGF0ZSB5b3Vyc2VsZiBvciBkbyBzb21ldGhpbmcgZXhvdGljLCBlbXB0 eSB0aGlzIGF0dHJpYnV0ZSBmaXJzdCB0byBhdm9pZCB3ZWlyZG5lc3M8L2Rpdj48L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bmFtZXZhbDwvc3Bhbj4gOiBhZGQgeW91ciBvd24g bmFtZS92YWx1ZSBwYWlycyB0byB0aGUgY2FsZW5kYXImIzgyMTc7cyA8c3BhbiBjbGFzcz0i Y2FwcyI+VVJMPC9zcGFuPi4gZS5nLiA8Y29kZT5uYW1ldmFsPSZxdW90O3RyYWNrZXI9bXlj YWwsIGtlZXA9MSZxdW90OzwvY29kZT4gd291bGQgYWRkIDxjb2RlPj90cmFja2VyPW15Y2Fs JmFtcDtrZWVwPTE8L2NvZGU+IHRvIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFu Pi4gVXNlZnVsIGlmIHlvdSB3YW50IHRvIDxjb2RlPm1haW50YWluPC9jb2RlPiBzb21lIHZh bHVlcyB3aGljaCB5b3UgY2FuJiM4MjE3O3QgYWRkIHRvIHRoZSA8c3BhbiBjbGFzcz0iY2Fw cyI+VVJMPC9zcGFuPiBvbiBwYWdlIGxvYWQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+c3RhdGljPC9zcGFuPiA6IGZvcmNlIHRoZSBjYWxlbmRhciB0byBiZSBmaXhlZCB0byBv bmUgbW9udGgveWVhciAoaS5lLiBubyBuYXZpZ2F0aW9uKS4gTW9udGggYW5kIHllYXIgZGVj aWRlZCBieSBhdHRyaWJ1dGVzIDxjb2RlPm1vbnRoPC9jb2RlPiBhbmQgPGNvZGU+eWVhcjwv Y29kZT4gb3IgJiM4MjEyOyBpZiBvbWl0dGVkICYjODIxMjsgdGhlIGN1cnJlbnQgZGF0ZSB3 aWxsIGJlIHVzZWQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Z210PC9zcGFuPiA6 IGN1cnJlbnRseSB1bnVzZWQsIHBlbmRpbmcgcmV2aWV3PC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPmxhbmc8L3NwYW4+IDogY3VycmVudGx5IHVudXNlZCwgcGVuZGluZyByZXZp ZXc8L2xpPgoJPC91bD4KCgk8aDMgY2xhc3M9ImF0dHMgIiBpZD0iYXR0c3R5bGVzIj5TdHls ZSBhdHRyaWJ1dGVzPC9oMz4KCgk8cD5PbmNlIHlvdSBoYXZlIHR3ZWFrZWQgeW91ciBiYXNp YyBjYWxlbmRhciBhcyBkZXNjcmliZWQgYWJvdmUgeW91IGNhbiBzdHlsZSBpdCB1c2luZyB0 aGVzZSBhdHRyaWJ1dGVzOjwvcD4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5j bGFzc2xldmVsczwvc3Bhbj4gOiBjbGFzc2VzIGNhbiBiZSBhcHBsaWVkIHRvIGV2ZW50cywg Y2VsbHMsIG9yIGJvdGguIFlvdSBtYXkgYWxzbyBwcm9tb3RlIChpLmUuIGNvcHkpIGFsbCBl dmVudC1sZXZlbCBjbGFzc2VzIHRoYXQgb2NjdXIgaW4gYSBkYXkgdG8gdGhlIGNlbGwgbGV2 ZWwgc28geW91IGNhbiBjb2xvdXIgdGhlIGNlbGwgYmFzZWQgb24gdGhlIGV2ZW50cyB0aGF0 IGl0IGNvbnRhaW5zLiBVc2UgYW55IG9mIDxjb2RlPmV2ZW50PC9jb2RlPiwgPGNvZGU+Y2Vs bDwvY29kZT4sIG9yIDxjb2RlPmNlbGxwbHVzPC9jb2RlPiAoZm9yIGNvcHlpbmcgdW5pcXVl IGV2ZW50IGNsYXNzZXMgdG8gdGhlIGNlbGwpLiBOb3RlIHlvdSBzaG91bGQgbm90IHVzZSA8 Y29kZT5jZWxsPC9jb2RlPiBhbmQgPGNvZGU+Y2VsbHBsdXM8L2NvZGU+IHRvZ2V0aGVyIGJl Y2F1c2UgdGhlIGxhdHRlciBvdmVycmlkZXMgdGhlIGZvcm1lci4gRGVmYXVsdDogPGNvZGU+ Y2VsbCwgZXZlbnQ8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNsYXNz cHJlZml4ZXM8L3NwYW4+IDogYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB1cCB0byB0d28g cHJlZml4ZXMgdG8gYXBwbHkgdG8geW91ciBjbGFzcyBuYW1lcy4gVGhlIGZpcnN0IHByZWZp eCBpcyBhcHBsaWVkIHRvIGNlbGwtbGV2ZWwgY2xhc3NlcyAoYW5kIGZsYWdzKSBhbmQgdGhl IHNlY29uZCBwcmVmaXggaXMgYXBwbGllZCB0byBldmVudCBjbGFzc2VzIChzZWUgPGNvZGU+ ZXZlbnRjbGFzc2VzPC9jb2RlPikuIElmIHlvdSBvbmx5IHNwZWNpZnkgb25lIHByZWZpeCwg aXQgd2lsbCBiZSB1c2VkIGZvciBib3RoLiBJZiB5b3UgdXNlIDxjb2RlPmNsYXNzcHJlZml4 ZXM9JnF1b3Q7JnF1b3Q7PC9jb2RlPiB0aGVuIG5vIHByZWZpeGVzIHdpbGwgYmUgdXNlZCBh dCBhbGwuIERlZmF1bHQ6IDxjb2RlPnNtZF9jYWxfLCBzbWRfY2FsX2V2XzwvY29kZT48L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y2xhc3M8L3NwYW4+IDogdGhlIGNsYXNzIG5h bWUgb2YgdGhlIGNhbGVuZGFyIHRhYmxlIGl0c2VsZi4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+cm93Y2xhc3M8L3NwYW4+IDogdGhlIGNsYXNzIG5h bWUgb2YgZWFjaCB0YWJsZSByb3cuIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPmNlbGxjbGFzczwvc3Bhbj4gOiB0aGUgY2xhc3MgbmFtZSBvZiBlYWNo IHRhYmxlIGNlbGwuIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPmVtcHR5Y2xhc3M8L3NwYW4+IDogdGhlIGNsYXNzIG5hbWUgb2YgYW55IGNlbGxzIHRo YXQgZG9uJiM4MjE3O3QgY29udGFpbiBhIGRheSBudW1iZXIgKGkuZS4gdGhlIGJsYW5rIGNl bGxzIGF0IHRoZSBzdGFydCBhbmQgZW5kIG9mIGEgbW9udGgpLiBEZWZhdWx0OiA8Y29kZT5l bXB0eTwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+aXNvd2Vla2NsYXNz PC9zcGFuPiA6IHRoZSBjbGFzcyBuYW1lIG9mIGVhY2ggY2VsbCBjb250YWluaW5nIGFuIDxz cGFuIGNsYXNzPSJjYXBzIj5JU088L3NwYW4+IHdlZWsuIERlZmF1bHQ6IDxjb2RlPndlZWs8 L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm5hdmNsYXNzPC9zcGFuPiA6 IHRoZSBjbGFzcyBuYW1lIG9mIHRoZSBwcmV2L25leHQgbW9udGggbmF2IGFycm93cy4gSWYg YSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBpcyB1c2VkLCB0aGUgZmlyc3QgaXRlbSB3aWxsIGJl IHRoZSBuYW1lIG9mIHRoZSBjbGFzcyBvZiB0aGUgcHJldmlvdXMgbW9udGgsIHRoZSAybmQg aXRlbSBvZiB0aGUgbmV4dCBtb250aC4gSWYgYSBzaW5nbGUgdmFsdWUgaXMgdXNlZCwgYm90 aCBjbGFzcyBuYW1lcyB3aWxsIGJlIHRoZSBzYW1lLiBEZWZhdWx0OiA8Y29kZT5uYXZwcmV2 LCBuYXZuZXh0PC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5teWNsYXNz PC9zcGFuPiA6IHRoZSBjbGFzcyBuYW1lIG9mIGJvdGggdGhlIG1vbnRoIGFuZCB5ZWFyIGlu IHRoZSBjYWxlbmRhciBoZWFkZXIgKGVpdGhlciB0aGUgPGNvZGU+Jmx0O3NwYW4mZ3Q7PC9j b2RlPiBvciA8Y29kZT4mbHQ7c2VsZWN0Jmd0OzwvY29kZT4gdGFncykuIElmIDxjb2RlPm15 d3JhcHRhZzwvY29kZT4gaXMgdXNlZCwgdGhlIGNsYXNzIGlzIGFwcGxpZWQgdG8gdGhlIHdy YXB0YWcgaW5zdGVhZC4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+ZXZlbnRjbGFzc2VzPC9zcGFuPiA6IGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2Yg aXRlbXMgdG8gYWRkIGFzIGNsYXNzZXMgdG8gZWFjaCBldmVudCAoZWFjaCBwcmVmaXhlZCB3 aXRoIHRoZSBldmVudCBwcmVmaXgpLiBJdCBkZWZhdWx0cyB0byA8Y29kZT5jYXRlZ29yeTwv Y29kZT4gc28gaXQgYWRkcyB0aGUgQ2F0ZWdvcnkxIGFuZCAyIG5hbWVzIGFzIGNsYXNzIGlk ZW50aWZpZXJzIHRvIGVhY2ggZXZlbnQuPGRpdiBjbGFzcz0iYnJlYWsiPklmIHlvdSB3aXNo IHRvIGV4dGVuZCBvciBhbHRlciB0aGlzLCBnaXZlIGEgbGlzdCBvZiBmaWVsZHMgdGhhdCB5 b3Ugd2FudCB0byBhcHBseSB0byB0aGUgZXZlbnQgKGUuZy4gPGNvZGU+ZXZlbnRjbGFzc2Vz PSZxdW90O0lELCBBdXRob3JJRCwgY3VzdG9tXzUmcXVvdDs8L2NvZGU+IHdvdWxkIGFkZCB0 aHJlZSBjbGFzc2VzIHRvIGVhY2ggZXZlbnQgY29ycmVzcG9uZGluZyB0byB0aGUgZXZlbnQm IzgyMTc7cyBJRCwgaXRzIGF1dGhvciAobG9naW4pIG5hbWUgYW5kIHRoZSBjb250ZW50cyBv ZiBjdXN0b21fNSkuIElmIHlvdSB1c2UgPGNvZGU+Y2VsbHBsdXM8L2NvZGU+LCB0aGVzZSBj bGFzc2VzIHdpbGwgYmUgY29waWVkIHRvIHRoZSBjZWxsIGxldmVsLjwvZGl2PjxkaXYgY2xh c3M9ImJyZWFrIj5Tb21lIHNwZWNpYWwgbmFtZXMgZXhpc3Q6IDxjb2RlPmNhdGVnb3J5PC9j b2RlPiByZXR1cm5zIGJvdGggQ2F0ZWdvcnkxIGFuZCBDYXRlZ29yeTIgKGlmIHNldCk7IDxj b2RlPmdjYXQ8L2NvZGU+IHdpbGwgcmV0dXJuIHRoZSBjdXJyZW50ICYjODIxNjtnbG9iYWwm IzgyMTc7IGNhdGVnb3J5IChpZiBmaWx0ZXJpbmcgYnkgY2F0ZWdvcnkpOyA8Y29kZT5hdXRo b3I8L2NvZGU+IHJldHVybnMgdGhlIGF1dGhvciBJRCAoaWYgZmlsdGVyaW5nIGJ5IGF1dGhv cik7IDxjb2RlPnNlY3Rpb248L2NvZGU+IGdpdmVzIHRoZSBjdXJyZW50IHNlY3Rpb248L2Rp dj48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZXZlbnR3cmFwdGFnPC9zcGFuPiA6 IHRoZSAoWClIVE1MIHRhZywgd2l0aG91dCBpdHMgYnJhY2tldHMsIHRvIHdyYXAgZWFjaCBl dmVudCB3aXRoLiBEZWZhdWx0OiA8Y29kZT5zcGFuPC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj5teXdyYXB0YWc8L3NwYW4+IDogdGhlIChYKUhUTUwgdGFnLCB3aXRo b3V0IGl0cyBicmFja2V0cywgdG8gd3JhcCBhcm91bmQgPGVtPmJvdGg8L2VtPiBtb250aCAr IHllYXIgZHJvcGRvd24gc2VsZWN0IGxpc3RzIGFuZCBzdWJtaXQgYnV0dG9uIChpdCB3cmFw cyB0aGUgbG90LCBjb21iaW5lZCkuIERlZmF1bHQ6IHVuc2V0PC9saT4KCTwvdWw+CgoJPGgy IGlkPSJjZWxsZm9ybSI+VXNpbmcgYSA8Y29kZT5jZWxsZm9ybTwvY29kZT4gd2l0aCByZXBs YWNlbWVudCB2YXJpYWJsZXM8L2gyPgoKCTxwPklmIHlvdSBkb24mIzgyMTc7dCBsaWtlIHRo ZSBsYXlvdXQgb2YgdGhlIGRlZmF1bHQgY2VsbCwgeW91IGNhbiBkbyBpdCB5b3Vyc2VsZiB3 aXRoIHRoZSA8Y29kZT5jZWxsZm9ybTwvY29kZT4gYXR0cmlidXRlLiBUaGUgY2VsbHMgYXJl IGdlbmVyYXRlZCA8ZW0+bGFzdDwvZW0+LCBzbyBieSB0aGUgdGltZSB0aGUgcGx1Z2luIHJl YWNoZXMgdGhpcyBhdHRyaWJ1dGUsIGFsbCBldmVudHMgaGF2ZSBhbHJlYWR5IGJlZW4gcHJv Y2Vzc2VkIGJ5IGFueSBvZiB5b3VyIGZvcm1zL2NvbnRhaW5lcnMuPC9wPgoKCTxwPlRvIGJ1 aWxkIHlvdXIgb3duIGNlbGxzIHlvdSBvZnRlbiBuZWVkIGluZm9ybWF0aW9uIHN1Y2ggYXMg dGhlIGV2ZW50cyB0aGF0IGZhbGwgb24gYSBwYXJ0aWN1bGFyIGRheTsgb3IgdGhlIHdlZWss IG1vbnRoIG9yIGRheSBudW1iZXJzLCBldGMuIFNvICYjODIxMjsgaW4gYWRkaXRpb24gdG8g eW91ciB1c3VhbCBtYXJrdXAgYW5kIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IHRh Z3MgJiM4MjEyOyB5b3UgbWF5IGFsc28gaW5zZXJ0IGFueSBvZiB0aGUgZm9sbG93aW5nICYj ODIxNjtyZXBsYWNlbWVudHMmIzgyMTc7IHRvIGhhdmUgdGhlIHJlbGV2YW50IHZhbHVlIGlu c2VydGVkIGF0IHRoYXQgcGxhY2UgaW4gdGhlIGNlbGw6PC9wPgoKCTx1bD4KCQk8bGk+PGNv ZGU+e2RheX08L2NvZGU+IDogY3VycmVudCBkYXkgKGFzIGEgbnVtYmVyIGZyb20gMSB0byAz MSk8L2xpPgoJCTxsaT48Y29kZT57d2Vla2RheX08L2NvZGU+IDogY3VycmVudCB3ZWVrZGF5 IGFzIGEgd29yZCBpbiB0aGUgbG9jYWwgbGFuZ3VhZ2UsIG9yIGZyb20geW91ciA8Y29kZT5k YXlmb3JtYXQ8L2NvZGU+IGxpc3Q8L2xpPgoJCTxsaT48Y29kZT57d2Vla308L2NvZGU+IDog Y3VycmVudCA8c3BhbiBjbGFzcz0iY2FwcyI+SVNPPC9zcGFuPiB3ZWVrIG51bWJlcjwvbGk+ CgkJPGxpPjxjb2RlPnttb250aH08L2NvZGU+IDogY3VycmVudCBtb250aCAoYXMgYSBudW1i ZXIgZnJvbSAxIHRvIDEyKTwvbGk+CgkJPGxpPjxjb2RlPnttb250aG5hbWV9PC9jb2RlPiA6 IG1vbnRoIG5hbWUgaW4gdGhlIGxvY2FsIGxhbmd1YWdlLCBvciBmcm9tIHlvdXIgPGNvZGU+ bW9udGhmb3JtYXQ8L2NvZGU+IGxpc3Q8L2xpPgoJCTxsaT48Y29kZT57eWVhcn08L2NvZGU+ IDogY3VycmVudCB5ZWFyICg0IGRpZ2l0cyk8L2xpPgoJCTxsaT48Y29kZT57c2hvcnR5ZWFy fTwvY29kZT4gOiBjdXJyZW50IHllYXIgKDIgZGlnaXRzKTwvbGk+CgkJPGxpPjxjb2RlPntp c295ZWFyfTwvY29kZT4gOiBjdXJyZW50IDxzcGFuIGNsYXNzPSJjYXBzIj5JU088L3NwYW4+ IHllYXIgKDQgZGlnaXRzKTwvbGk+CgkJPGxpPjxjb2RlPntzaG9ydGlzb3llYXJ9PC9jb2Rl PiA6IGN1cnJlbnQgPHNwYW4gY2xhc3M9ImNhcHMiPklTTzwvc3Bhbj4geWVhciAoMiBkaWdp dHMpPC9saT4KCQk8bGk+PGNvZGU+e2V2ZW50c308L2NvZGU+IDogYWxsIGV2ZW50cyBmb3Ig dGhlIGRheTwvbGk+CgkJPGxpPjxjb2RlPntzdGFuZGFyZH08L2NvZGU+IDogb25seSBzdGFu ZGFyZCBldmVudHM8L2xpPgoJCTxsaT48Y29kZT57cmVjdXJmaXJzdH08L2NvZGU+IC8gPGNv ZGU+e3JlY3VyfTwvY29kZT4gOiB0aGUgY2hvc2VuIHR5cGUgb2YgcmVjdXJyaW5nIGV2ZW50 PC9saT4KCQk8bGk+PGNvZGU+e2FsbHJlY3VyfTwvY29kZT4gOiBhbGwgcmVjdXJyaW5nIGV2 ZW50cyBmb3IgdGhlIGRheTwvbGk+CgkJPGxpPjxjb2RlPnttdWx0aWZpcnN0fTwvY29kZT4g LyA8Y29kZT57bXVsdGl9PC9jb2RlPiAvIDxjb2RlPnttdWx0aXByZXZ9PC9jb2RlPiAvIDxj b2RlPnttdWx0aWxhc3R9PC9jb2RlPiA6IHRoZSBjaG9zZW4gdHlwZSBvZiBtdWx0aSBldmVu dDwvbGk+CgkJPGxpPjxjb2RlPnthbGxtdWx0aX08L2NvZGU+IDogYWxsIG11bHRpIGV2ZW50 cyBmb3IgdGhlIGRheTwvbGk+CgkJPGxpPjxjb2RlPntjYW5jZWx9PC9jb2RlPiA6IG9ubHkg Y2FuY2VsbGVkIGV2ZW50czwvbGk+CgkJPGxpPjxjb2RlPntleHRyYX08L2NvZGU+IDogb25s eSBleHRyYSBldmVudHM8L2xpPgoJPC91bD4KCgk8aDIgaWQ9InNpemVkaWZmIj5EaWZmZXJl bmNlcyBiZXR3ZWVuIGxhcmdlIGFuZCBzbWFsbCBjYWxlbmRhcnM8L2gyPgoKCTxwPk5vdCBh IGxvdCEgQnV0IHRoZXJlIGFyZSBzb21lIHN1YnRsZXRpZXM6PC9wPgoKCTx1bD4KCQk8bGk+ PGNvZGU+Y2VsbGZvcm08L2NvZGU+IGNhbm5vdCBiZSB1c2VkIG9uIGEgc21hbGwgY2FsZW5k YXI8L2xpPgoJCTxsaT5CeSBkZWZhdWx0LCBubyBldmVudHMgYXJlIHBsYWNlZCBpbiB0aGUg c21hbGwgY2FsZW5kYXIuIFlvdSBjYW4gYWRkIHRoZW0geW91cnNlbGYgaWYgeW91IHdpc2gg YmVjYXVzZSB5b3UgY2FuIHVzZSB0aGUgc2FtZSBmb3JtL2NvbnRhaW5lciBtZWNoYW5pc20g YXMgdGhlIGxhcmdlIGNhbGVuZGFyPC9saT4KCQk8bGk+VGhlIG9ubHkgdGhpbmcgcmVuZGVy ZWQgaW4gYSBzbWFsbCBjYWxlbmRhciBjZWxsIGlzIHRoZSBoeXBlcmxpbmtlZCBkYXRlIGFu ZCBhbnkgPGEgaHJlZj0iI25hbWluZyI+ZmxhZ3M8L2E+IHNvIHlvdSBjYW4gc3R5bGUgdGhl IGJveGVzPC9saT4KCQk8bGk+PGNvZGU+Y2xhc3NsZXZlbHM8L2NvZGU+IGFyZSBpZ25vcmVk OiBldmVyeXRoaW5nIGlzIGF1dG9tYXRpY2FsbHkgYXNzaWduZWQgYXQgdGhlIGNlbGwgbGV2 ZWwgKGkuZS4gPGNvZGU+Y2VsbHBsdXM8L2NvZGU+IGlzIHNldCk8L2xpPgoJCTxsaT48Y29k ZT5ldmVudGNsYXNzZXM8L2NvZGU+IGFyZSBzdGlsbCBob25vdXJlZCBpZiB5b3Ugd2lzaCB0 byB1c2UgYSA8Y29kZT5mb3JtPC9jb2RlPiB0byBwcm9jZXNzIHRoZW0geW91cnNlbGY8L2xp PgoJCTxsaT5UaGUgc21hbGwgY2FsZW5kYXIgb3V0cHV0cyB5ZWFyLW1vbnRoLWRheS10aXRs ZSBvciBtZXNzeSBwZXJtbGlua3Mgb25seTwvbGk+Cgk8L3VsPgoKCTxwPkFzaWRlIGZyb20g dGhhdCB0aGV5JiM4MjE3O3JlIHByZXR0eSBtdWNoIGlkZW50aWNhbC48L3A+CgoJPGgyIGlk PSJpZmNhbCI+VGFnOiA8Y29kZT4mbHQ7dHhwOnNtZF9pZl9jYWwmZ3Q7PC9jb2RlPjwvaDI+ CgoJPHA+VGhpcyBjb25kaXRpb25hbCB0YWcgYWxsb3dzIHlvdSAmIzgyMTI7IGluc2lkZSB5 b3VyIGNvbnRhaW5lci9mb3JtcyAgJiM4MjEyOyB0byB0ZXN0IGNlcnRhaW4gY29uZGl0aW9u cyBvZiB0aGUgY3VycmVudCBldmVudC9jZWxsLiBGb3IgZW5oYW5jZWQgY29uZGl0aW9uYWwg Y2hlY2tpbmcgKHBlcmhhcHMgaW4gY29uanVuY3Rpb24gd2l0aCA8YSBocmVmPSIjY2Fsbm93 Ij5zbWRfY2FsX25vdzwvYT4pLCBjb25zaWRlciB0aGUgc21kX2lmIHBsdWdpbi48L3A+CgoJ PGgzIGNsYXNzPSJhdHRzICIgaWQ9ImF0dHNpZmNhbCI+QXR0cmlidXRlczwvaDM+CgoJPHVs PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZmxhZzwvc3Bhbj4gOiB0aGUgY2VsbCBvciBl dmVudCBmbGFnKHMpIHlvdSB3YW50IHRvIHRlc3QsIGVhY2ggc2VwYXJhdGVkIGJ5IGEgY29t bWEuIENob29zZSBmcm9tOiA8Y29kZT5ldmVudDwvY29kZT4sIDxjb2RlPnN0YW5kYXJkPC9j b2RlPiwgPGNvZGU+cmVjdXJmaXJzdDwvY29kZT4sIDxjb2RlPnJlY3VyPC9jb2RlPiwgPGNv ZGU+bXVsdGlmaXJzdDwvY29kZT4sIDxjb2RlPm11bHRpbGFzdDwvY29kZT4sIDxjb2RlPm11 bHRpPC9jb2RlPiwgPGNvZGU+bXVsdGlwcmV2PC9jb2RlPiwgPGNvZGU+Y2FuY2VsPC9jb2Rl PiwgPGNvZGU+b21pdDwvY29kZT4sIDxjb2RlPmV4dHJhPC9jb2RlPiwgPGNvZGU+aG9sczwv Y29kZT4sIDxjb2RlPnRvZGF5PC9jb2RlPiwgb3IgdGhlIHNwZWNpYWwgZmxhZyA8Y29kZT5T TURfQU5ZPC9jb2RlPiB3aGljaCB3aWxsIHRyaWdnZXIgaWYgdGhlIGNlbGwgb3IgZXZlbnQg Y29udGFpbnMgYW55IG9mIHRoZSBhYm92ZS4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+Y2FsaWQ8L3NwYW4+IDogdGhlIGNhbGVuZGFyIElEIHlvdSB3 aXNoIHRvIGNoZWNrIGZvciBhIG1hdGNoLiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj55ZWFyPC9zcGFuPiA6IHRoZSB5ZWFyIHRoZSBjdXJyZW50IGNl bGwgZmFsbHMgaW4uIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPmlzb3llYXI8L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5JU088L3NwYW4+ IHllYXIgdGhlIGN1cnJlbnQgY2VsbCBmYWxscyBpbi4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bW9udGg8L3NwYW4+IDogdGhlIG1vbnRoIG51bWJl ciAoMS0xMikgdGhhdCB0aGUgY3VycmVudCBjZWxsIGZhbGxzIGluLiBEZWZhdWx0OiB1bnNl dDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj53ZWVrPC9zcGFuPiA6IHRoZSA8c3Bh biBjbGFzcz0iY2FwcyI+SVNPPC9zcGFuPiB3ZWVrIG51bWJlciB0aGF0IHRoZSBjdXJyZW50 IGNlbGwgZmFsbHMgaW4uIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPmRheTwvc3Bhbj4gOiB0aGUgZGF5IG51bWJlciB0aGUgY3VycmVudCBjZWxsIGZh bGxzIGluLiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5s b2dpYzwvc3Bhbj4gOiB3aGV0aGVyIHlvdSB3YW50IHRvIGNoZWNrIGlmIDxlbT5hbGw8L2Vt PiB0ZXN0cyB5b3Ugbm9taW5hdGVkIGFyZSB0cnVlIGluIHRoZSBjdXJyZW50IGNlbGwgKDxj b2RlPmxvZ2ljPSZxdW90O2FuZCZxdW90OzwvY29kZT4pIG9yIDxlbT5hdCBsZWFzdCBvbmU8 L2VtPiBvZiB0aGUgdGVzdHMgaXMgdHJ1ZSAoPGNvZGU+bG9naWM9JnF1b3Q7b3ImcXVvdDs8 L2NvZGU+KS4gRGVmYXVsdDogPGNvZGU+b3I8L2NvZGU+PC9saT4KCTwvdWw+CgoJPHA+JiM4 MjE2O0FuZCYjODIxNzsgbG9naWMgaXMgZ29vZCBmb3IgY2hlY2tpbmcgaWYgdGhlIGNlbGwg aXMgb2YgYSBjZXJ0YWluIHR5cGUgPHNwYW4gY2xhc3M9ImNhcHMiPkFORDwvc3Bhbj4gaXMg bGF0ZXIgdGhhbiB0aGUgMTV0aCBvZiB0aGUgbW9udGgsIGZvciBleGFtcGxlLjwvcD4KCgk8 cD5SdWRpbWVudGFyeSBjb21wYXJhdG9ycyBjYW4gYmUgYXBwbGllZCB0byB0aGUgPGNvZGU+ KGlzbyl5ZWFyPC9jb2RlPiwgPGNvZGU+bW9udGg8L2NvZGU+LCA8Y29kZT53ZWVrPC9jb2Rl PiBhbmQgPGNvZGU+ZGF5PC9jb2RlPiBhdHRyaWJ1dGVzLiBOb3JtYWxseSB0aGUgdmFsdWUg eW91IHN1cHBseSB3aWxsIGJlIHRlc3RlZCBmb3IgYW4gZXhhY3QgbWF0Y2ggYnV0IGlmIHlv dSBwcmVmaXggaXQgd2l0aCBvbmUgb2YgdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXIgc2VxdWVu Y2VzIHRoZW4gdGhlIGJlaGF2aW91ciBjaGFuZ2VzOjwvcD4KCgk8dWw+CgkJPGxpPjxjb2Rl PiZndDs8L2NvZGU+IHRlc3RzIGlmIGF0dHJpYnV0ZSBpcyA8ZW0+Z3JlYXRlciB0aGFuPC9l bT4gdGhlIGdpdmVuIHZhbHVlIChlLmcuIDxjb2RlPnllYXI9JnF1b3Q7Jmd0OzIwMDgmcXVv dDs8L2NvZGU+KTwvbGk+CgkJPGxpPjxjb2RlPiZndDs9PC9jb2RlPiB0ZXN0cyBpZiBhdHRy aWJ1dGUgaXMgPGVtPmdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0bzwvZW0+IHRoZSBnaXZlbiB2 YWx1ZSAoZS5nLiA8Y29kZT5tb250aD0mcXVvdDsmZ3Q7PTcmcXVvdDs8L2NvZGU+KTwvbGk+ CgkJPGxpPjxjb2RlPiZsdDs8L2NvZGU+IHRlc3RzIGlmIGF0dHJpYnV0ZSBpcyA8ZW0+bGVz cyB0aGFuPC9lbT4gdGhlIGdpdmVuIHZhbHVlIChlLmcuIDxjb2RlPmRheT0mcXVvdDsmbHQ7 MTUmcXVvdDs8L2NvZGU+KTwvbGk+CgkJPGxpPjxjb2RlPiZsdDs9PC9jb2RlPiB0ZXN0cyBp ZiBhdHRyaWJ1dGUgaXMgPGVtPmxlc3MgdGhhbiBvciBlcXVhbCB0bzwvZW0+IHRoZSBnaXZl biB2YWx1ZSAoZS5nLiA8Y29kZT5tb250aD0mcXVvdDsmbHQ7PTUmcXVvdDs8L2NvZGU+KTwv bGk+CgkJPGxpPjxjb2RlPiE8L2NvZGU+IHRlc3RzIGlmIGF0dHJpYnV0ZSBpcyA8ZW0+bm90 PC9lbT4gdGhlIGdpdmVuIHZhbHVlIChlLmcuIDxjb2RlPmRheT0mcXVvdDshMTUmcXVvdDs8 L2NvZGU+KTwvbGk+Cgk8L3VsPgoKCTxoMiBpZD0iY2FsaW5mbyI+VGFnOiA8Y29kZT4mbHQ7 dHhwOnNtZF9jYWxfaW5mbyAvJmd0OzwvY29kZT48L2gyPgoKCTxwPkluc2lkZSB5b3VyIGNv bnRhaW5lci9mb3JtcywgdXNlIHRoaXMgdGFnIHRvIG91dHB1dCBjZXJ0YWluIGluZm9ybWF0 aW9uIGFib3V0IHRoZSBjdXJyZW50IGV2ZW50LjwvcD4KCgk8aDMgY2xhc3M9ImF0dHMgIiBp ZD0iYXR0c2NhbGluZm8iPkF0dHJpYnV0ZXM8L2gzPgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPnR5cGU8L3NwYW4+IDogdGhlIHR5cGUocykgb2YgaW5mb3JtYXRpb24geW91 IHdhbnQgdG8gcmV0dXJuLCBlYWNoIHNlcGFyYXRlZCBieSBhIGNvbW1hLiBDaG9vc2UgZnJv bTogPGNvZGU+ZmxhZzwvY29kZT4sIDxjb2RlPmNhbGlkPC9jb2RlPiwgPGNvZGU+KGlzbyl5 ZWFyPC9jb2RlPiAvIDxjb2RlPm1vbnRoPC9jb2RlPiAvIDxjb2RlPndlZWs8L2NvZGU+IC8g PGNvZGU+ZGF5PC9jb2RlPiwgPGNvZGU+czwvY29kZT4gKGN1cnJlbnQgc2VjdGlvbikgLyA8 Y29kZT5jYXRlZ29yeTwvY29kZT4gLyA8Y29kZT5hdXRob3I8L2NvZGU+IChvciA8Y29kZT5y ZWFsbmFtZTwvY29kZT4pLCA8Y29kZT5hcnRpY2xlPC9jb2RlPiAoaWQgb2YgdGhlIGN1cnJl bnRseSB2aWV3ZWQgYXJ0aWNsZSksIG9yIGFueSBvdGhlciBhcnRpY2xlIHZhcmlhYmxlIHN1 Y2ggYXMgPGNvZGU+c2VjdGlvbjwvY29kZT4gKHRoZSBjdXJyZW50IGFydGljbGUmIzgyMTc7 cyBzZWN0aW9uKSwgPGNvZGU+YXV0aG9yaWQ8L2NvZGU+LCA8Y29kZT5hcnRpY2xlX2ltYWdl PC9jb2RlPiwgZXRjPGRpdiBjbGFzcz0iYnJlYWsiPklmIHVzaW5nIHRoZSA8Y29kZT5odG1s PC9jb2RlPiBhdHRyaWJ1dGUsIHlvdSBtYXkgb3B0aW9uYWxseSBzcGVjaWZ5IHRoZSBuYW1l IHlvdSB3YW50IHRoZSB2YXJpYWJsZSB0byBhcHBlYXIgYXMgaW4gdGhlIDxzcGFuIGNsYXNz PSJjYXBzIj5VUkw8L3NwYW4+IHN0cmluZy4gVGhlIHZhcmlhYmxlcyBhbGwgdGFrZSBvbiBz ZW5zaWJsZSBkZWZhdWx0cyAoZS5nLiAmIzgyMTY7c2VjdGlvbiYjODIxNzsgYmVjb21lcyA8 Y29kZT4/cz0mbHQ7c2VjdGlvbiBuYW1lJmd0OzwvY29kZT4sICYjODIxNjtjYXRlZ29yeTEm IzgyMTc7IGJlY29tZXMgPGNvZGU+P2M9Jmx0O2NhdGVnb3J5MSBuYW1lJmd0OzwvY29kZT4s IGV0YykgYnV0IGlmLCBzYXksIHlvdSB3YW50ZWQgY2F0ZWdvcnkxIHRvIGJlIGtub3duIGFz IDxjb2RlPnRoZV9jYXQ8L2NvZGU+IHlvdSBjb3VsZCB3cml0ZSA8Y29kZT4mbHQ7dHhwOnNt ZF9jYWxfaW5mbyB0eXBlPSZxdW90O2NhdGdlb3J5OnRoZV9jYXQmcXVvdDsgaHRtbD0mcXVv dDsxJnF1b3Q7IC8mZ3Q7PC9jb2RlPi4gWW91IHdvdWxkIHRoZW4gc2VlIDxjb2RlPj90aGVf Y2F0PSZsdDtjYXRlZ29yeTEgbmFtZSZndDs8L2NvZGU+PC9kaXY+PC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0bm0iPmpvaW48L3NwYW4+IDogdGhlIGNoYXJhY3RlcnMgeW91IHdhbnQg dG8gdXNlIHRvIHNlcGFyYXRlIGVhY2ggaXRlbSB5b3UgYXNrZWQgZm9yLiBOb3RlIGl0IGlz IHRoZSBjaGFyYWN0ZXJzIDxlbT5iZXR3ZWVuPC9lbT4gZWFjaCBpdGVtIHNvIHRoZSB2ZXJ5 IGZpcnN0IGVudHJ5IHdpbGwgPHN0cm9uZz5ub3Q8L3N0cm9uZz4gaGF2ZSB0aGUgPGNvZGU+ am9pbjwvY29kZT4gaW4gZnJvbnQgb2YgaXQgKHNlZSA8Y29kZT5qb2luX3ByZWZpeDwvY29k ZT4pLiBEZWZhdWx0OiBhIHNwYWNlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmpv aW5fcHJlZml4PC9zcGFuPiA6IHRoZSBzdHJpbmcgeW91IHdhbnQgdG8gcHV0IGluIGZyb250 IG9mIHRoZSBmaXJzdCBpdGVtIGluIHRoZSByZXR1cm5lZCBsaXN0LiBJZiB5b3UgZG8gbm90 IHNwZWNpZnkgdGhpcyBhdHRyaWJ1dGUgaXQgZGVmYXVsdHMgdG8gPGNvZGU+U01EX0FVVE88 L2NvZGU+IHdoaWNoIHRyaWVzIHRvIGJlIGNsZXZlcjoKCTx1bD4KCQk8bGk+aWYgdXNpbmcg PGNvZGU+dHlwZT0mcXVvdDtmbGFnJnF1b3Q7PC9jb2RlPiB0aGUgam9pbl9wcmVmaXggaXMg c2V0IHRvIHRoZSBzYW1lIGFzIDxjb2RlPmpvaW48L2NvZGU+LiBUaHVzIHdpdGggPGNvZGU+ am9pbj0mcXVvdDsgY2FsXyZxdW90OzwvY29kZT4geW91IG1pZ2h0IGdldCA8Y29kZT4gY2Fs X211bHRpIGNhbF90b2RheSBjYWxfaG9sczwvY29kZT48L2xpPgoJCTxsaT5pZiB1c2luZyA8 Y29kZT5odG1sPSZxdW90OzEmcXVvdDs8L2NvZGU+IHRoZSBqb2luX3ByZWZpeCBpcyBzZXQg dG8gYSBxdWVzdGlvbiBtYXJrLCB0aHVzOiA8Y29kZT50eXBlPSZxdW90O21vbnRoLHllYXIs Y2F0ZWdvcnkmcXVvdDsgaHRtbD0mcXVvdDsxJnF1b3Q7PC9jb2RlPiBtaWdodCByZW5kZXIg PGNvZGU+P209MTImYW1wO3k9MjAwOCZhbXA7Yz1naWdzPC9jb2RlPiwgd2hpY2ggY2FuIGJl IHB1dCBzdHJhaWdodCBvbiB0aGUgZW5kIG9mIGFuIGFuY2hvcjwvbGk+Cgk8L3VsPjwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5odG1sPC9zcGFuPiA6IElmIHNldCB0byA8Y29k ZT4xPC9jb2RlPiwgcmV0dXJucyBub3Qgb25seSB0aGUgdmFsdWVzIHlvdSBzcGVjaWZpZWQg YnV0IHRoZWlyIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IHZhcmlhYmxlIG5hbWVz IGFzIHdlbGwsIGdpdmluZyB5b3UgdGhlIGVudGlyZSBzdHJpbmcgYXMgYSB2YWxpZCBzZXQg b2YgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gcGFyYW1ldGVycyB3aGljaCBjYW4g YmUgYWRkZWQgdG8gYW4gYW5jaG9yLiBJdCBvdmVycmlkZXMgdGhlIDxjb2RlPmpvaW48L2Nv ZGU+IGF0dHJpYnV0ZSBhbmQgc2V0cyBpdCB0byBhbiBhbXBlcnNhbmQuIERlZmF1bHQ6IDAu PGRpdiBjbGFzcz0iYnJlYWsiPlRoaXMgYXR0cmlidXRlIGlzIHVzZWZ1bCBpZiB5b3UgYXJl IGJ1aWxkaW5nIHlvdXIgb3duIGNvbnRlbnQgaW5zaWRlIGVhY2ggY2VsbCB2aWEgYSA8Y29k ZT5mb3JtPC9jb2RlPiBhbmQgd2lzaCB0byBtYWludGFpbiB0aGUgY3VycmVudCBzZWFyY2gg ZW52aXJvbm1lbnQuIElmIHlvdSBhbGxvdyBwZW9wbGUgdG8gZmlsdGVyIGV2ZW50cyBieSBj YXRlZ29yeSBvciBhdXRob3IgeW91IGNhbiB1c2UgdGhpcyB0byByZXR1cm4gdGhlICYjODIx NjtjdXJyZW50JiM4MjE3OyBzdGF0ZSBvZiBjZXJ0YWluIHZhcmlhYmxlcyBzbyB5b3UgY2Fu IHBhc3MgdGhlbSB0byB0aGUgbmV4dCBwYWdlIGFuZCBtYWludGFpbiBzdGF0ZTwvZGl2Pjwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5lc2NhcGU8L3NwYW4+IDogZXNjYXBlIDxz cGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBlbnRpdGllcyBzdWNoIGFzIDxjb2RlPiZs dDs8L2NvZGU+LCA8Y29kZT4mZ3Q7PC9jb2RlPiBhbmQgPGNvZGU+JmFtcDs8L2NvZGU+IGZv ciBwYWdlIHZhbGlkYXRpb24gcHVycG9zZXMuIFNldCB0byA8Y29kZT5lc2NhcGU9JnF1b3Q7 JnF1b3Q7PC9jb2RlPiB0byB0dXJuIGl0IG9mZi4gRGVmYXVsdDogPGNvZGU+aHRtbDwvY29k ZT48L2xpPgoJPC91bD4KCgk8aDIgaWQ9ImNhbGNsYXNzIj5UYWc6IDxjb2RlPiZsdDt0eHA6 c21kX2NhbF9jbGFzcyAvJmd0OzwvY29kZT48L2gyPgoKCTxwPkluc2lkZSB5b3VyIGNvbnRh aW5lci9mb3JtcywgdXNlIHRoaXMgdGFnIHRvIGFkZCBhIGxpc3Qgb2YgY2xhc3NlcyB0byB0 aGUgY3VycmVudCBjZWxsL2V2ZW50LiBWZXJ5IHVzZWZ1bCBpZiBidWlsZGluZyBjZWxscyB5 b3Vyc2VsZiBiZWNhdXNlIGluc2lkZSBhIDxhIGhyZWY9IiNpZmNhbCI+Y29uZGl0aW9uYWw8 L2E+IHRhZyB5b3UgY291bGQgYWRkIHBhcnRpY3VsYXIgY2xhc3MgbmFtZXMgYmFzZWQgb24g c29tZSB2YWx1ZSBpbiBhIGNlbGwuPC9wPgoKCTxoMyBjbGFzcz0iYXR0cyAiIGlkPSJhdHRz Y2FsY2xhc3MiPkF0dHJpYnV0ZXM8L2gzPgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPm5hbWU8L3NwYW4+IDogYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBjbGFzc25hbWVz IHRvIGFkZCB0byB0aGUgY3VycmVudCBjZWxsL2V2ZW50LiBUaGVzZSBhcmUgPHN0cm9uZz5u b3Q8L3N0cm9uZz4gc3ViamVjdCB0byBhbnkgPGNvZGU+Y2xhc3NwcmVmaXhlczwvY29kZT4g c28gd2lsbCBhbHdheXMgYXBwZWFyIGV4YWN0bHkgYXMgeW91IHdyaXRlIHRoZW08L2xpPgoJ PC91bD4KCgk8aDIgaWQ9ImNhbG5vdyI+VGFnOiA8Y29kZT4mbHQ7dHhwOnNtZF9jYWxfbm93 IC8mZ3Q7PC9jb2RlPjwvaDI+CgoJPHA+UmV0dXJuIHRoZSBjdXJyZW50IGRhdGUvdGltZSwg Zm9ybWF0dGVkIGhvd2V2ZXIgeW91IHBsZWFzZS4gVXNlZnVsIGZvciBleHRyYWN0aW5nIHBh cnRzIG9mIHRoZSBjdXJyZW50IHN5c3RlbSB0aW1lc3RhbXAgdG8gY29tcGFyZSB0aGluZ3Mg dmlhIG90aGVyIGNvbmRpdGlvbmFsIHBsdWdpbnMgb3IgdGhlIDxjb2RlPiZsdDt0eHA6c21k X2lmX2NhbCZndDs8L2NvZGU+IHRhZy48L3A+CgoJPGgzIGNsYXNzPSJhdHRzICIgaWQ9ImF0 dHNjYWxub3ciPkF0dHJpYnV0ZXM8L2gzPgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPmZvcm1hdDwvc3Bhbj4gOiB0aGUgd2F5IHlvdSB3YW50IHRoZSBkYXRlL3RpbWUgcmVw cmVzZW50ZWQuIFVzZSBhbnkgdmFsaWQgPGEgaHJlZj0iaHR0cDovL3VrMi5waHAubmV0L3N0 cmZ0aW1lIj5zdHJmdGltZSgpPC9hPiBzdHJpbmcuIERlZmF1bHRzIHRvIHRoZSBkYXRlIGZv cm1hdCB5b3Ugc2V0IGluIEJhc2ljIFByZWZzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPm5vdzwvc3Bhbj4gOiBpZiB5b3UgZG9uJiM4MjE3O3Qgd2FudCB0aGUgdGltZSB0byBi ZSwgdW1tLCAmIzgyMTY7bm93JiM4MjE3OyB5b3UgY2FuIHN0YXRlIHdoYXQgdGltZSAmIzgy MTY7bm93JiM4MjE3OyBpcyEgVXNlIGFueSBzdGFuZGFyZCBkYXRlL3RpbWUgZm9ybWF0LiAg RGVmYXVsdDogdGhlIHRpbWUgYXQgd2hpY2ggeW91IGNhbGwgdGhlIHRhZy48ZGl2IGNsYXNz PSJicmVhayI+WW91IG1heSBhbHNvIHVzZSB0aGUgY29kZXMgPGNvZGU+P2RheTwvY29kZT4s IDxjb2RlPj9tb250aDwvY29kZT4gb3IgPGNvZGU+P3llYXI8L2NvZGU+IGluIHlvdXIgdGlt ZSBzdHJpbmcgd2hpY2ggd2lsbCBkbyBvbmUgb2YgdHdvIHRoaW5nczoKCTx1bD4KCQk8bGk+ cmVwbGFjZSB0aGUgY29kZXMgd2l0aCB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bh bj4gcGFyYW1ldGVycyA8Y29kZT5kPTwvY29kZT4sIDxjb2RlPm09PC9jb2RlPiBvciA8Y29k ZT55PTwvY29kZT4sIGlmIHRoZXkgYXJlIGJlaW5nIHVzZWQ8L2xpPgoJCTxsaT51c2UgdGhl IGN1cnJlbnQgZGF5LCBtb250aCBvciB5ZWFyIChpLmUuIHRoZSBwYXJ0cyBvZiB0b2RheSYj ODIxNztzIGRhdGUpPGJyIC8+CjwvZGl2PjwvbGk+Cgk8L3VsPjwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj5vZmZzZXQ8L3NwYW4+IDogYW4gb2Zmc2V0IGludG8gdGhlIGZ1dHVy ZSB0aGF0IHlvdSB3aXNoIHRvIGFwcGx5IHRvIDxjb2RlPm5vdzwvY29kZT4uIGUuZy4gPGNv ZGU+MiBtb250aHM8L2NvZGU+LiBTZWUgPGEgaHJlZj0iI2VnNiI+RXhhbXBsZSA2PC9hPiBm b3IgYSBwcmFjdGljYWwgYXBwbGljYXRpb24gb2YgdGhpcyBhdHRyaWJ1dGU8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+Z210PC9zcGFuPiA6IHJldHVybiBlaXRoZXIgbG9jYWwg dGltZSAoPGNvZGU+MDwvY29kZT4pIGFjY29yZGluZyB0byB0aGUgdGltZSB6b25lIHNldCBp biBCYXNpYyBQcmVmcywgb3IgPHNwYW4gY2xhc3M9ImNhcHMiPkdNVDwvc3Bhbj4gdGltZSAo PGNvZGU+MTwvY29kZT4pLiBEZWZhdWx0OiAwPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPmxhbmc8L3NwYW4+IDogYW4gPHNwYW4gY2xhc3M9ImNhcHMiPklTTzwvc3Bhbj4gbGFu Z3VhZ2UgY29kZSB0aGF0IGZvcm1hdHMgdGltZSBzdHJpbmdzIHN1aXRhYmxlIGZvciB0aGUg c3BlY2lmaWVkIGxhbmd1YWdlIChvciBsb2NhbGUpIGFzIGRlZmluZWQgYnkgPGEgaHJlZj0i aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fNjM5Ij48c3BhbiBjbGFzcz0iY2Fw cyI+SVNPPC9zcGFuPiA2Mzk8L2E+LiBEZWZhdWx0OiB1bnNldCAoaS5lLiB1c2UgdGhlIHZh bHVlIGFzIHN0YXRlZCBpbiA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBwcmVmcyk8 L2xpPgoJPC91bD4KCgk8aDIgaWQ9ImFydGV2Ij5UYWc6IDxjb2RlPiZsdDt0eHA6c21kX2Fy dGljbGVfZXZlbnQgLyZndDs8L2NvZGU+PC9oMj4KCgk8cD5XaGVuIHlvdSBjcmVhdGUgZXZl bnRzLCB0aGV5IHJlYWxseSBvbmx5IGV4aXN0IG9uY2UgYXMgYSBzaW5nbGUgYXJ0aWNsZTsg dGhlIHJlcGV0aXRpb24gaXMgYSB0cmljay4gVGh1cyB0aGUgYnVpbHQtaW4gYXJ0aWNsZSB0 YWdzIG9ubHkgc2hvdyB0aGUgc2luZ2xlLCByZWFsIGFydGljbGVzLjwvcD4KCgk8cD5UaGlz IHRhZyAmIzgyMTI7IHNpbWlsYXIgaW4gZnVuY3Rpb24gdG8gPGNvZGU+Jmx0O3R4cDphcnRp Y2xlX2N1c3RvbSAvJmd0OzwvY29kZT4gJiM4MjEyOyBhbGxvd3MgeW91IHRvIHNlZSByZWN1 cnJpbmcgYXJ0aWNsZXMgYXMgaWYgdGhleSB3ZXJlICYjODIxNjtyZWFsJiM4MjE3OyBhcnRp Y2xlcyBpbiB0aGUgZGF0YWJhc2UuIEluc2lkZSB0aGUgdGFnJiM4MjE3O3MgPGNvZGU+Zm9y bTwvY29kZT4gb3IgY29udGFpbmVyIHlvdSBjYW4gdXNlIGFsbCBleGlzdGluZyBhcnRpY2xl IHRhZ3MgdG8gZGlzcGxheSBhbnkgaW5mb3JtYXRpb24geW91IGxpa2UgYWJvdXQgZWFjaCAm IzgyMTY7dmlydHVhbCYjODIxNzsgYXJ0aWNsZS48L3A+CgoJPGgzIGNsYXNzPSJhdHRzICIg aWQ9ImF0dHNhcnRldiI+QXR0cmlidXRlczwvaDM+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+c3RlcGZpZWxkPC9zcGFuPiA6IHNhbWUgYXMgc21kX2NhbGVuZGFyPC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnNraXBmaWVsZDwvc3Bhbj4gOiBzYW1lIGFzIHNt ZF9jYWxlbmRhcjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5vbWl0ZmllbGQ8L3Nw YW4+IDogc2FtZSBhcyBzbWRfY2FsZW5kYXI8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+ZXh0cmFmaWVsZDwvc3Bhbj4gOiBzYW1lIGFzIHNtZF9jYWxlbmRhcjwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj5kYXRlZmllbGRzPC9zcGFuPiA6IHNhbWUgYXMgc21kX2Nh bGVuZGFyPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmFsbHNwYW5uZWQ8L3NwYW4+ IDogbm9ybWFsbHksIGFueSBldmVudCB0aGF0IGhhcyBhIHN0YXJ0IGRhdGUgaW4gdGhlIHBh c3Qgd2lsbCBiZSBvbWl0dGVkIGZyb20gdGhlIGxpc3QuIFdoZW4gZGVhbGluZyB3aXRoIHNw YW5uZWQgZXZlbnRzLCB5b3UgbWF5IHdpc2ggdG8gc2hvdyByZW1haW5pbmcgZGF5cyBpbiBh IEJyb2Fkd2F5IHNob3cmIzgyMTc7cyBzY2hlZHVsZSBldmVuIHRob3VnaCB0aGUgZXZlbnQg c3RhcnRlZCBzb21lIG1vbnRocyBhZ28uIFNldCA8Y29kZT5hbGxzcGFubmVkPSZxdW90OzEm cXVvdDs8L2NvZGU+IHRvIGRvIHRoaXMuIERlZmF1bHQ6IDA8L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+dHlwZTwvc3Bhbj4gOiB0aGUgdHlwZXMgb2YgZXZlbnQgdG8gZGlzcGxh eS4gRGVmYXVsdDogPGNvZGU+c3RhbmRhcmQsIHJlY3VyLCBtdWx0aTwvY29kZT48L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+c2VjdGlvbjwvc3Bhbj4gOiByZXN0cmljdCB0aGUg ZXZlbnRzIHRvIGEgbGlzdCBvZiBzZWN0aW9ucy4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+Y2F0ZWdvcnk8L3NwYW4+IDogcmVzdHJpY3QgdGhlIGV2 ZW50cyB0byBhIGxpc3Qgb2YgY2F0ZWdvcmllcy4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+YXV0aG9yPC9zcGFuPiA6IHJlc3RyaWN0IHRoZSBldmVu dHMgdG8gYSBsaXN0IG9mIGF1dGhvciBsb2dpbiBuYW1lcy4gRGVmYXVsdDogdW5zZXQ8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+cmVhbG5hbWU8L3NwYW4+IDogcmVzdHJpY3Qg dGhlIGV2ZW50cyB0byBhIGxpc3Qgb2YgYXV0aG9yIFJlYWwgTmFtZXMgKG5vdGU6IGFkZHMg b25lIGV4dHJhIHF1ZXJ5KS4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+aWQ8L3NwYW4+IDogcmVzdHJpY3QgdGhlIGV2ZW50cyB0byBhIGxpc3Qgb2Yg YXJ0aWNsZSBJRHMuIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPnN0YXR1czwvc3Bhbj4gOiByZXN0cmljdCB0aGUgZXZlbnRzIHRvIHRoaXMgbGlzdCBv ZiBhcnRpY2xlIHN0YXR1cy4gRGVmYXVsdDogPGNvZGU+bGl2ZTwvY29kZT48L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+ZXhwaXJlZDwvc3Bhbj4gOiBkZWZpbml0aXZlbHkgaGlk ZSAoMCkgb3Igc2hvdyAoMSkgZXhwaXJlZCBldmVudHMuIExlYXZlIGJsYW5rIHRvIHVzZSB0 aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gQWR2YW5jZWQgUHJlZmVyZW5jZSAm IzgyMTY7UHVibGlzaCBleHBpcmVkIGFydGljbGVzJiM4MjE3OzwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj50aW1lPC9zcGFuPiA6IG9ubHkgc2hvdyBldmVudHMgaW4gdGhpcyB0 aW1lIGZyYW1lLiBDaG9vc2UgZnJvbSA8Y29kZT5hbnk8L2NvZGU+LCA8Y29kZT5mdXR1cmU8 L2NvZGU+IG9yIDxjb2RlPnBhc3Q8L2NvZGU+LiBEZWZhdWx0OiA8Y29kZT5hbnk8L2NvZGU+ PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm1vbnRoPC9zcGFuPiA6IG9ubHkgc2hv dyBldmVudHMgdGhhdCBvY2N1ciBpbiB0aGUgZ2l2ZW4gPHNwYW4gY2xhc3M9ImNhcHMiPllZ WVk8L3NwYW4+LW1tLiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj5mcm9tPC9zcGFuPiA6IG9ubHkgc2hvdyBldmVudHMgZnJvbSB0aGlzIHN0YXJ0IGRh dGUuIENhbiBiZSBhbnkgdmFsaWQgZGF0ZSBmb3JtYXQuIERlZmF1bHQ6IHVuc2V0IChpLmUu IGFsbCBkYXRlcyk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+dG88L3NwYW4+IDog b25seSBzaG93IGV2ZW50cyB1cCB0byB0aGlzIGVuZCBkYXRlLiBDYW4gYmUgYW55IHZhbGlk IGRhdGUgZm9ybWF0LiBEZWZhdWx0OiB1bnNldCAoaS5lLiBhbGwgZGF0ZXMpPC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnNvcnQ8L3NwYW4+IDogb3JkZXIgdGhlIGV2ZW50cyBi eSB0aGlzIGNvbHVtbi4gVGhlIG1vc3QgdXNlZnVsIHZhbHVlIGlzIHRoZSBkZWZhdWx0OiA8 Y29kZT5Qb3N0ZWQgYXNjPC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5m b3JtPC9zcGFuPiA6IHBhc3MgZWFjaCBtYXRjaGluZyBldmVudCB0byB0aGUgZ2l2ZW4gPHNw YW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZm9ybS4gRGVmYXVsdDogdW5zZXQuIE5vdGUg dGhhdCB1c2luZyB0aGUgY29udGFpbmVyIG92ZXJyaWRlcyB0aGlzIGF0dHJpYnV0ZSwgYW5k IGlmIHlvdSBzcGVjaWZ5IG5laXRoZXIgYSBmb3JtIG5vciBjb250YWluZXIsIHlvdSB3aWxs IHNlZSBhIGxpc3Qgb2YgYXJ0aWNsZSBwb3N0ZWQgZGF0ZXM8L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+cGFnaW5nPC9zcGFuPiA6IHVubGlrZSBhcnRpY2xlX2N1c3RvbSwgZXZl bnRzIGZyb20gdGhlIHNtZF9hcnRpY2xlX2V2ZW50IHRhZyBtYXkgYmUgcGFnZWQgdXNpbmcg PGNvZGU+Jmx0O3R4cDpvbGRlciAvJmd0OzwvY29kZT4gYW5kIDxjb2RlPiZsdDt0eHA6bmV3 ZXIgLyZndDs8L2NvZGU+LiBJZiB5b3Ugd2lzaCB0byBzaG93IGFuIGV2ZW50IGxpc3Qgb24g dGhlIHNhbWUgcGFnZSBhcyBhIHN0YW5kYXJkIGFydGljbGUgbGlzdCwgdGhlIG9sZGVyL25l d2VyIHRhZ3Mgd2lsbCBuYXZpZ2F0ZSBib3RoIGxpc3RzIHNpbXVsdGFuZW91c2x5IHNvIHlv dSBtYXkgbmVlZCB0byB0dXJuIHBhZ2luZyBvbiAoMSkgb3Igb2ZmICgwKS4gRGVmYXVsdDog MTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5vZmZzZXQ8L3NwYW4+IDogYmVnaW4g ZGlzcGxheWluZyBldmVudHMgZnJvbSB0aGlzIHBvc2l0aW9uLCBpbnN0ZWFkIG9mIGZyb20g dGhlIHN0YXJ0IG9mIHRoZSBsaXN0IG9mIGV2ZW50cy4gRGVmYXVsdDogMDwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj5saW1pdDwvc3Bhbj4gOiBvbmx5IHNob3cgdGhpcyBtYW55 IGV2ZW50cyBtYXhpbXVtIDxzdHJvbmc+cGVyIHBhZ2U8L3N0cm9uZz4sIGkuZS4gdGhlIG51 bWJlciBvZiBldmVudHMgdG8gZGlzcGxheSwgd2hldGhlciB0aGV5IGNvbWUgZnJvbSBvbmUg JiM4MjE2O3JlYWwmIzgyMTc7IGFydGljbGUgb3IgbWFueS4gRGVmYXVsdDogMTA8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZXZlbnRsaW1pdDwvc3Bhbj4gOiBvbmx5IHNob3cg dGhpcyBtYW55IGV2ZW50cyBtYXhpbXVtLCA8c3Ryb25nPnBlciBldmVudDwvc3Ryb25nPi4g U28gaWYgeW91IGhhdmUgYSB3ZWVrbHkgcmVwZWF0ZWQgZXZlbnQgdGhhdCBsYXN0cyBmb3Ig Zm91ciBtb250aHMgYW5kIHlvdSBzZXQgPGNvZGU+ZXZlbnRsaW1pdD0mcXVvdDs2JnF1b3Q7 PC9jb2RlPiB5b3Ugd2lsbCBvbmx5IHNlZSBhIG1heGltdW0gb2YgNiBldmVudHMgZnJvbSBl dmVyeSBhcnRpY2xlIGNvbnRhaW5pbmcgcmVwZXRpdGlvbi4gVGhlIHJhbmdlIChzdGFydCBh bmQgZW5kIGRhdGUpIGlzIGRldGVybWluZWQgYnkgb3RoZXIgcGx1Z2luIGF0dHJpYnV0ZXMu IERlZmF1bHQ6IDEwPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnBhZ2VieTwvc3Bh bj4gOiBlc290ZXJpYyBwYWdpbmcgZmVhdHVyZSwgaWRlbnRpY2FsIHRvIDxjb2RlPiZsdDt0 eHA6YXJ0aWNsZSAvJmd0OzwvY29kZT4uIERlZmF1bHQ6IHNhbWUgYXMgPGNvZGU+bGltaXQ8 L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnBnb25seTwvc3Bhbj4gOiBz ZXQgdG8gPGNvZGU+MTwvY29kZT4gdG8gcGVyZm9ybSB0aGUgcGFnaW5nIGFjdGlvbiB3aXRo b3V0IGRpc3BsYXlpbmcgYW55dGhpbmcuIFByb2JhYmx5IHVzZWxlc3MuIERlZmF1bHQ6IHVu c2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPndyYXB0YWc8L3NwYW4+IDogdGhl IChYKUhUTUwgdGFnIHdpdGhvdXQgYnJhY2tldHMgdG8gd3JhcCB0aGUgbGlzdCBpbi4gRGVm YXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+YnJlYWs8L3NwYW4+ IDogdGhlIChYKUhUTUwgdGFnIHRvIHNlcGFyYXRlIGVhY2ggaXRlbSB3aXRoLiBEZWZhdWx0 OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jbGFzczwvc3Bhbj4gOiB0 aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgdG8gYXBwbHkgdG8gdGhl IHdyYXB0YWcuIERlZmF1bHQ6IHVuc2V0PC9saT4KCTwvdWw+CgoJPHA+SXQgaXMgd29ydGgg bm90aW5nIHRoYXQgdGhpcyB0YWcgZXhlY3V0ZXMgaW4gMy1waGFzZXM6PC9wPgoKCTxvbD4K CQk8bGk+UHJlLWZpbHRlcjogYWxsIGV2ZW50cyB0aGF0IG1hdGNoIDxjb2RlPnR5cGU8L2Nv ZGU+LCA8Y29kZT5jYXRlZ29yeTwvY29kZT4sIDxjb2RlPnNlY3Rpb248L2NvZGU+LCA8Y29k ZT5hdXRob3I8L2NvZGU+LCA8Y29kZT5zdGF0dXM8L2NvZGU+LCA8Y29kZT5pZDwvY29kZT4s IGFuZCA8Y29kZT5leHBpcmVkPC9jb2RlPiBhcmUgZXh0cmFjdGVkPC9saT4KCQk8bGk+VGlt ZS1maWx0ZXI6IGFueSAmIzgyMjA7dGltZS1iYXNlZCYjODIyMTsgYXR0cmlidXRlcyBhcmUg dGhlbiBhcHBsaWVkIHRvIHRoZSBhYm92ZSBsaXN0LiBBdCB0aGlzIHBvaW50LCBhbnkgPGNv ZGU+ZXh0cmFmaWVsZDwvY29kZT4sIDxjb2RlPnN0ZXBmaWVsZDwvY29kZT4sIDxjb2RlPm9t aXRmaWVsZDwvY29kZT4sIG9yIDxjb2RlPnNraXBmaWVsZDwvY29kZT4gYXJlIGNhbGN1bGF0 ZWQgdG8gZmluZCByZXBlYXRlZCBkYXRlcyAodXAgdG8gYXMgbWFueSBhcyA8Y29kZT5ldmVu dGxpbWl0PC9jb2RlPiBhbGxvd3Mgb3IgdGhlIGNhbGN1bGF0aW9uIGV4Y2VlZHMgdGhlIGV2 ZW50JiM4MjE3O3MgZXhwaXJ5IHRpbWUpLiBUaGUgYXR0cmlidXRlcyA8Y29kZT50aW1lPC9j b2RlPiwgPGNvZGU+bW9udGg8L2NvZGU+LCA8Y29kZT5mcm9tPC9jb2RlPiwgYW5kIDxjb2Rl PnRvPC9jb2RlPiBhcmUgdXNlZCB0byByZWZpbmUgdGhlIGZpbHRyYXRpb24gaGVyZTwvbGk+ CgkJPGxpPk91dHB1dDogd2hhdGV2ZXIgdGhlIHByZXZpb3VzIHBoYXNlcyBoYXZlIGxlZnQg YmVoaW5kIGlzIHN1YmplY3QgdG8gYW55IDxjb2RlPnBhZ2luZzwvY29kZT4sIDxjb2RlPm9m ZnNldDwvY29kZT4gYW5kIDxjb2RlPmxpbWl0PC9jb2RlPiB5b3UgbWF5IGhhdmUgc3BlY2lm aWVkLCB0aGVuIHdyYXBwZWQgYW5kIGRpc3BsYXllZDwvbGk+Cgk8L29sPgoKCTxoMiBpZD0i ZGF0ZXMiPkRhdGUgZ290Y2hhczwvaDI+CgoJPHA+SWYgdGhlcmUgd2FzIG9uZSBnbG9iYWwg dGltZSB6b25lIHRoZSB3b3JsZCB3b3VsZCBiZSBzaW1wbGVyLiBTYWRseSwgd2UgYWxsIGxp dmUgaW4gZGlmZmVyZW50IHBsYWNlcyBhbmQgdGhlIEludGVybmV0IEJlYXQgaGFzbiYjODIx Nzt0IHJlYWxseSB0YWtlbiBvZmYuIEV2ZW4gbW9yZSBzYWRseSwgY2VydGFpbiBwZW9wbGUg aW4gcG93ZXIgZGVjcmVlIHRoYXQgdHdpY2UgYSB5ZWFyIHNvbWUgY291bnRyaWVzIG11c3Qg YWx0ZXIgdGhlaXIgY2xvY2tzIHRvIDxlbT5TYXZlIERheWxpZ2h0PC9lbT4uPC9wPgoKCTxw PjxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGRvZXMgaXRzIGJlc3QgdG8gc2hpZWxk IHlvdSBmcm9tIHRoaXMgbWF5aGVtIGJ5IGFsbG93aW5nIHlvdSB0byBzcGVjaWZ5IHlvdXIg bG9jYWxlLCB0aW1lIG9mZnNldCwgYW5kIHdoZW4gPHNwYW4gY2xhc3M9ImNhcHMiPkRTVDwv c3Bhbj4gYXBwbGllcyBpbiB5b3VyIHRpbWUgem9uZSAobm90IGZvcmdldHRpbmcgdGhlIHRp bWUgem9uZSBvZiB5b3VyIHNlcnZlciBpZiBpdCBoYXBwZW5zIHRvIGJlIG5vd2hlcmUgbmVh ciB5b3UpLiBBbmQgdGhlcmVpbiBsaWVzIHRoZSBydWIuPC9wPgoKCTxwPkZvciBhIGNhbGVu ZGFyIHN5c3RlbSwgd2hlbiB5b3Ugc2F5IGFuIGV2ZW50IGlzIGdvaW5nIHRvIG9jY3VyIGF0 IDhwbSBpbiBzaXggbW9udGhzJiM4MjE3OyB0aW1lLCBwZXNreSBEYXlsaWdodCBTYXZpbmdz IG1heSB0aGVuIGJlIGluIGVmZmVjdCBhbmQgeW91ciBldmVudCB3aWxsIGFwcGVhciBhbiBo b3VyICYjODIxNjtvZmYmIzgyMTc7IChpdCBtYXkgbG9vayB3cm9uZyBpbiB0aGUgYWRtaW4g aW50ZXJmYWNlIGFzIHdlbGwgYXMgaW4geW91ciBjYWxlbmRhciwgZGVwZW5kaW5nIG9uIHRo ZSBzZXR0aW5ncykuPC9wPgoKCTxwPkFsc28sIGlmIHlvdXIgc2VydmVyIG9yIHlvdXIgb2Zm aWNlIGlzIHJlbG9jYXRlZCBhbmQgeW91IGhhdmUgdG8gYWRqdXN0IHRpbWUgem9uZSwgYWxs IHlvdXIgYmVhdXRpZnVsbHkgY3JhZnRlZCBkYXRlcyB3aWxsIGJlIHNoaWZ0ZWQuIFRoZXkm IzgyMTc7cmUgbm90IGFjdHVhbGx5IGNoYW5nZWQgaW4gdGhlIGRhdGFiYXNlIHVubGVzcyB5 b3UgZWRpdCBhbiBhcnRpY2xlIGFuZCByZS1zYXZlIGl0LCBidXQgdGhleSA8ZW0+YXBwZWFy PC9lbT4gdG8gaGF2ZSBzaGlmdGVkIGJlY2F1c2UgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwv c3Bhbj4gaXMgdHJ5aW5nIHRvIHNoaWVsZCB5b3UgZnJvbSB0aW1lIGJ1cmVhdWNyYWN5IGlu IGEgd29ybGQgZ29uZSBtYWQuPC9wPgoKCTxwPlVuZm9ydHVuYXRlbHkgdGhlcmUgaXMgbGl0 dGxlIHdlIGNhbiBkbyBhYm91dCB0aGlzIGF0IHRoZSBtb21lbnQgdW50aWwgdGhlIHdheSBk YXRlcyBhcmUgaGFuZGxlZCBpbiA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiAob3Ig dGhlIHdvcmxkISkgaXMgY2hhbmdlZC4gQnV0IHRoZXJlIGFyZSBzb21lIHNldHRpbmdzIHRo YXQgeW91IGNhbiBwbGF5IHdpdGggdG8gdHJ5IGFuZCBtYWtlIHNlbnNlIG9mIGl0IGFsbC4g TmFtZWx5IHRoZSA8Y29kZT5nbXQ8L2NvZGU+IGF0dHJpYnV0ZSBpbiBhbnkgb2YgPHNwYW4g Y2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4mIzgyMTc7cyBkYXRlLWJhc2VkIHRhZ3Mgc3VjaCBh cyA8Y29kZT4mbHQ7dHhwOnBvc3RlZCAvJmd0OzwvY29kZT4gYW5kIDxjb2RlPiZsdDt0eHA6 ZXhwaXJlcyAvJmd0OzwvY29kZT4uIE9yIHRyeSB1c2luZyB5b3VyIG93biA8Y29kZT5kYXRl ZmllbGRzPC9jb2RlPi4gU29tZXRpbWVzIGZpZGRsaW5nIHdpdGggdGhhdCBhbmQgdGhlIHRp bWUgem9uZS9EU1QgZmxhZ3Mgd2lsbCBoZWxwLiBPdGhlciB0aW1lcyB5b3UmIzgyMTc7bGwg Z2V0IGluIGEgcmlnaHQgb2xkIG1lc3MuPC9wPgoKCTxwPklmIGFsbCB0aGF0IGZhaWxzLCB0 aGUgY29uZGl0aW9uYWwgdGFnIG1heSBiZSBhYmxlIHRvIGhlbHAgeW91IGNvbXBhcmUgZGF0 ZXMgYW5kIGFwcGx5IGRpZmZlcmVudCBhdHRyaWJ1dGVzIGRlcGVuZGluZyBvbiB0aGUgZGF5 IG9mIHRoZSB5ZWFyLiBGYWlsaW5nIHRoYXQsIGp1c3QgdXNlIDxzcGFuIGNsYXNzPSJjYXBz Ij5HTVQ8L3NwYW4+IGFuZCByZWZ1c2UgdG8gb2JzZXJ2ZSA8c3BhbiBjbGFzcz0iY2FwcyI+ RFNUPC9zcGFuPiA6LSk8L3A+CgoJPGgyIGNsYXNzPSJleGFtcGxlcyI+RXhhbXBsZXM8L2gy PgoKCTxoMyBpZD0iZWcxIj5FeGFtcGxlIDE8L2gzPgoKCTxwPlRoZSBiZWF1dHkgb2YgdGhl IHBsdWdpbiBpcyB0aGF0IHlvdSBoYXZlIHRoZSBlbnRpcmUgYXJzZW5hbCBvZiA8c3BhbiBj bGFzcz0iY2FwcyI+VFhQPC9zcGFuPiB0YWdzIGF2YWlsYWJsZSB0byB5b3UgaWYgeW91IGNo b29zZSB0byB1c2UgYSA8Y29kZT5mb3JtPC9jb2RlPi4gVGh1cyB5b3UgY2FuIHNldCB0aGUg YXJ0aWNsZSYjODIxNztzIHN0YXJ0IGFuZCBlbmQgZGF0ZXMgdG8gdGhlIHNhbWUgZGF5IGFu ZCBzZXQgdGhlIHN0YXJ0IGFuZCBlbmQgdGltZXMgdG8gaW5kaWNhdGUgdGhlIHN0YXJ0IGFu ZCBlbmQgb2YgdGhlIGV2ZW50LiBZb3UgY2FuIHRoZW4gdXNlIHN0YW5kYXJkIDxjb2RlPiZs dDt0eHA6cG9zdGVkIC8mZ3Q7PC9jb2RlPiBvciA8Y29kZT4mbHQ7dHhwOmV4cGlyZXMgLyZn dDs8L2NvZGU+IHRhZ3Mgd2l0aCB2YXJpb3VzIDxjb2RlPmZvcm1hdDwvY29kZT4gc3RyaW5n cyB0byByZW5kZXIgdGhlIGV2ZW50JiM4MjE3O3MgY3JpdGVyaWEuPC9wPgoKCTxwPlNpbWls YXJseSB5b3UgY2FuIHVzZSBhbnkgb3RoZXIgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bh bj4gdGFncyB0byBzaG93IGFzIG11Y2ggb3IgYXMgbGl0dGxlIGRldGFpbCBhcyB5b3UgbGlr ZSBpbiB0aGUgY2FsZW5kYXIgY2VsbC48L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUg Y2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9jYWxlbmRhciBzZWN0aW9uPSZxdW90O2V2ZW50 cyZxdW90OyZndDsKJmx0O2RpdiZndDsKICAgRXZlbnQ6ICZsdDt0eHA6cGVybWxpbmsmZ3Q7 Jmx0O3R4cDp0aXRsZSAvJmd0OyZsdDsvdHhwOnBlcm1saW5rJmd0OwogICAmbHQ7YnIgLyZn dDsmbHQ7dHhwOmV4Y2VycHQgLyZndDsKJmx0Oy9kaXYmZ3Q7CiZsdDtkaXYgY2xhc3M9JnF1 b3Q7ZXZ0aW1lJnF1b3Q7Jmd0OwogICBTdGFydDogJmx0O3R4cDpwb3N0ZWQgZm9ybWF0PSZx dW90OyVIOiVNJnF1b3Q7IC8mZ3Q7CiZsdDsvZGl2Jmd0OwombHQ7ZGl2IGNsYXNzPSZxdW90 O2V2dGltZSZxdW90OyZndDsKICAgRW5kOiAmbHQ7dHhwOmV4cGlyZXMgZm9ybWF0PSZxdW90 OyVIOiVNJnF1b3Q7IC8mZ3Q7CiZsdDsvZGl2Jmd0OwombHQ7L3R4cDpzbWRfY2FsZW5kYXIm Z3Q7CjwvY29kZT48L3ByZT4KCgk8aDMgaWQ9ImVnMiI+RXhhbXBsZSAyPC9oMz4KCgk8cD5V c2luZyB0aGUgY29uZGl0aW9uYWwgdGFnIHlvdSBjYW4gdGFrZSBhY3Rpb24gaWYgY2VydGFp biBldmVudHMgY29udGFpbiBwYXJ0aWN1bGFyIGZsYWdzLiBUaGlzIGV4YW1wbGUgYWxzbyBz aG93IGEgY29tcGxldGVseSB1c2VsZXNzIG1hbm5lciBvZiBlbXBsb3lpbmcgPGNvZGU+Jmx0 O3R4cDpzbWRfY2FsX25vdyAvJmd0OzwvY29kZT4uPC9wPgoKPHByZSBjbGFzcz0iYmxvY2si Pjxjb2RlIGNsYXNzPSJibG9jayI+VGltZSBpczogJmx0O3R4cDpzbWRfY2FsX25vdyBmb3Jt YXQ9JnF1b3Q7JVQmcXVvdDsgLyZndDsKJmx0O3R4cDpzbWRfY2FsZW5kYXIgZm9ybT0mcXVv dDtldmZvcm0mcXVvdDsKICAgICBzdGVwZmllbGQ9JnF1b3Q7Y3VzdG9tXzMmcXVvdDsgc2tp cGZpZWxkPSZxdW90O2N1c3RvbV82JnF1b3Q7CiAgICAgc3BhbmZvcm09JnF1b3Q7bXVsdGlz JnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5JbiBmb3JtIDxjb2RlPmV2Zm9ybTwv Y29kZT46PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0 O3R4cDpzbWRfaWZfY2FsIGZsYWc9JnF1b3Q7cmVjdXImcXVvdDsmZ3Q7CiAgJmx0O3R4cDpw ZXJtbGluayZndDsoUkVDVVIpJmx0Oy90eHA6cGVybWxpbmsmZ3Q7CiZsdDt0eHA6ZWxzZSAv Jmd0OwogICAmbHQ7dHhwOnBlcm1saW5rJmd0OyZsdDt0eHA6dGl0bGUgLyZndDsmbHQ7L3R4 cDpwZXJtbGluayZndDsKICAgJmx0O3R4cDpzbWRfaWZfY2FsIGZsYWc9JnF1b3Q7bXVsdGlm aXJzdCZxdW90OyZndDsKICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7cmlnaHQmcXVvdDsm Z3Q7JmFtcDtsYXF1bzstLSZsdDsvc3BhbiZndDsKICAgJmx0Oy90eHA6c21kX2lmX2NhbCZn dDsKICAgJmx0O3R4cDpzbWRfaWZfY2FsIGZsYWc9JnF1b3Q7cmVjdXJmaXJzdCZxdW90OyZn dDsKICAgICAgJmx0O3NwYW4mZ3Q7T25lIG9mIG1hbnkuLi4mbHQ7L3NwYW4mZ3Q7CiAgICZs dDsvdHhwOnNtZF9pZl9jYWwmZ3Q7CiZsdDsvdHhwOnNtZF9pZl9jYWwmZ3Q7CjwvY29kZT48 L3ByZT4KCgk8cD5BbmQgaW4gZm9ybSA8Y29kZT5tdWx0aXM8L2NvZGU+OjwvcD4KCjxwcmUg Y2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2lmX2NhbCBm bGFnPSZxdW90O211bHRpLCBtdWx0aXByZXYmcXVvdDsmZ3Q7CiAgICZsdDt0eHA6cGVybWxp bmsmZ3Q7LS0mYW1wO3JhcXVvOy0tJmx0Oy90eHA6cGVybWxpbmsmZ3Q7CiZsdDsvdHhwOnNt ZF9pZl9jYWwmZ3Q7CiZsdDt0eHA6c21kX2lmX2NhbCBmbGFnPSZxdW90O211bHRpbGFzdCZx dW90OyZndDsKICAgJmx0O3R4cDpwZXJtbGluayZndDsKICAgICAgJmx0O3NwYW4gY2xhc3M9 JnF1b3Q7bGVmdCZxdW90OyZndDstLSZhbXA7cmFxdW87Jmx0Oy9zcGFuJmd0OyBFTkQgJmx0 O3R4cDp0aXRsZSAvJmd0OwogICAmbHQ7L3R4cDpwZXJtbGluayZndDsKJmx0Oy90eHA6c21k X2lmX2NhbCZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGljZSB0aGF0IDxjb2RlPm11bHRp Zmlyc3Q8L2NvZGU+IGlzIHRlc3RlZCBpbnNpZGUgdGhlIHNhbWUgZm9ybSBhcyBzdGFuZGFy ZCBldmVudHMuIFRoaXMgaXMgYmVjYXVzZSBvbmx5IDxlbT5jb250aW51YXRpb24gc3Bhbm5l ZCBjZWxsczwvZW0+IGFyZSBwYXNzZWQgdG8gdGhlIDxjb2RlPnNwYW5mb3JtPC9jb2RlPjsg dGhlIGZpcnN0IGV2ZW50IG9mIGEgc3Bhbm5lZCBncm91cCBpcyBqdXN0IGxpa2UgYW55IHN0 YW5kYXJkIGV2ZW50LiBTaW1pbGFybHksIGlmIHlvdSBoYWQgYmVlbiB1c2luZyA8Y29kZT5y ZWN1cmZvcm08L2NvZGU+IHRoZSBmaXJzdCBldmVudCBvZiB0aGUgcmVjdXJyaW5nIHNldCB3 b3VsZCBiZSBwcm9jZXNzZWQgaW4gdGhlIHVzdWFsIGZvcm0vY29udGFpbmVyIGFuZCBldmVy eSBzdWJzZXF1ZW50IGV2ZW50IHdvdWxkIGJlIHBhc3NlZCB0byB0aGUgZGVkaWNhdGVkIGZv cm0uPC9wPgoKCTxoMyBpZD0iZWczIj5FeGFtcGxlIDM8L2gzPgoKCTxwPllvdSBjb3VsZCB1 c2UgdGhlIGNhbGVuZGFyIHRhZ3MgdG8gb3V0cHV0IHZhcmlvdXMgcGllY2VzIG9mIGZsYWcg aW5mb3JtYXRpb24gdG8gYnVpbGQgeW91ciBvd24gY2xhc3MgbmFtZXMuIFRoaXMgZXhhbXBs ZSBhbHNvIGRlbW9uc3RyYXRlcyB0aGUgPGNvZGU+aHRtbDwvY29kZT4gYXR0cmlidXRlIG9m IDxjb2RlPiZsdDt0eHA6c21kX2NhbF9pbmZvIC8mZ3Q7PC9jb2RlPiB0byBidWlsZCB1cCBh IHF1ZXJ5IHN0cmluZyB0aGF0IGlzIHBhc3NlZCBhbG9uZyB3aXRoIGFuIGV2ZW50JiM4MjE3 O3MgPGNvZGU+Y2F0ZWdvcnkxPC9jb2RlPiB3aGVuIGEgdmlzaXRvciBjbGlja3MgdGhlIGFu Y2hvci48L3A+CgoJPHA+VGhpcyBhbGxvd3MgeW91ciBzaXRlIHZpc2l0b3JzIHRvIGZpbHRl ciBldmVudHMgYnkgY2F0ZWdvcnkgd2hpbGUgcmV0YWluaW5nIHRoZSBhYmlsaXR5IHRvIHNo b3cgdGhlIGNhbGVuZGFyIGZvciB0aGUgY3VycmVudCBtb250aC95ZWFyIGFuZCBzZWN0aW9u IHRoZXkgYXJlIHZpZXdpbmcgaW5zdGVhZCBvZiBkcm9wcGluZyBiYWNrIHRvIHRoZSBjdXJy ZW50IG1vbnRoL3llYXIgbGlrZSBvdGhlciBjYWxlbmRhciBzeXN0ZW1zIG9mdGVuIGRvLjwv cD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21k X2NhbGVuZGFyIGlzb3dlZWtzPSZxdW90O1dFRUsjJnF1b3Q7CiAgICAgeWVhcndpZHRoPSZx dW90OzAsMiZxdW90OyBzZWxlY3Q9JnF1b3Q7eWVhciwgbW9udGgmcXVvdDsKICAgICBzdGVw ZmllbGQ9JnF1b3Q7Y3VzdG9tXzEmcXVvdDsgc2tpcGZpZWxkPSZxdW90O2N1c3RvbV8yJnF1 b3Q7CiAgICAgc2hvd3NraXBwZWQ9JnF1b3Q7MSZxdW90OyBleHBpcmVkPSZxdW90OzEmcXVv dDsmZ3Q7CiAgICZsdDtzcGFuIGNsYXNzPSZxdW90OyZsdDt0eHA6c21kX2NhbF9pbmZvIGpv aW49JnF1b3Q7IGNhbF8mcXVvdDsgLyZndDsmcXVvdDsmZ3Q7CiAgICAgICZsdDt0eHA6cGVy bWxpbmsmZ3Q7Jmx0O3R4cDp0aXRsZSAvJmd0OyZsdDsvdHhwOnBlcm1saW5rJmd0OwogICAg ICAmbHQ7YSBocmVmPSZxdW90Oz9jPSZsdDt0eHA6Y2F0ZWdvcnkxCiAgICAgICAgIC8mZ3Q7 JmFtcDsmbHQ7dHhwOnNtZF9jYWxfaW5mbyB0eXBlPSZxdW90O3MsIHllYXIsCiAgICAgICAg IG1vbnRoLCBjYWxpZCZxdW90OyBodG1sPSZxdW90OzEmcXVvdDsgam9pbl9wcmVmaXg9JnF1 b3Q7JnF1b3Q7CiAgICAgICAgIC8mZ3Q7JnF1b3Q7Jmd0OyZsdDt0eHA6Y2F0ZWdvcnkxIHRp dGxlPSZxdW90OzEmcXVvdDsgLyZndDsmbHQ7L2EmZ3Q7CiAgICZsdDsvc3BhbiZndDsKJmx0 Oy90eHA6c21kX2NhbGVuZGFyJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+V2hhdCBpcyBhbHNv IHVzZWZ1bCBhYm91dCB0aGUgPGNvZGU+Jmx0O3R4cDpzbWRfY2FsX2luZm8gLyZndDs8L2Nv ZGU+IHRhZyBpcyB0aGF0IGlmIGEgcGFydGljdWxhciB2YWx1ZSBpcyBub3Qgc2V0IGl0IHdp bGwgPGVtPm5vdDwvZW0+IGJlIGluY2x1ZGVkIGluIHRoZSBvdXRwdXQuPC9wPgoKCTxoMyBp ZD0iZWc0Ij5FeGFtcGxlIDQ8L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNz PSJibG9jayI+Jmx0O2gyJmd0O1VwY29taW5nIEV2ZW50cyZsdDsvaDImZ3Q7CiZsdDt0eHA6 c21kX2FydGljbGVfZXZlbnQgc3RlcGZpZWxkPSZxdW90O2N1c3RvbV8xJnF1b3Q7CiAgICAg d3JhcHRhZz0mcXVvdDtkbCZxdW90OyB0aW1lPSZxdW90O2Z1dHVyZSZxdW90OyBldmVudGxp bWl0PSZxdW90OzUmcXVvdDsmZ3Q7CiAgICZsdDt0eHA6aWZfZGlmZmVyZW50Jmd0OwogICAg ICZsdDtkdCZndDsmbHQ7dHhwOnBvc3RlZCBmb3JtYXQ9JnF1b3Q7JUIgJVkmcXVvdDsgLyZn dDsmbHQ7L2R0Jmd0OwogICAmbHQ7L3R4cDppZl9kaWZmZXJlbnQmZ3Q7CiAgICZsdDtkZCZn dDsKICAgICAgJmx0O3R4cDpwZXJtbGluayZndDsmbHQ7dHhwOnRpdGxlLyZndDsmbHQ7L3R4 cDpwZXJtbGluayZndDsKICAgICAgJmx0O3R4cDpwb3N0ZWQgLyZndDsKICAgJmx0Oy9kZCZn dDsKJmx0Oy90eHA6c21kX2FydGljbGVfZXZlbnQmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5U aGF0IGxpc3RzIHRoZSBuZXh0IDUgdXBjb21pbmcgJiM4MjEyOyByZWN1cnJpbmcgJiM4MjEy OyBldmVudHMsIHBsdXMgYW55IHN0YW5kYXJkIGFuZCBzcGFubmVkIGV2ZW50cywgZm9ybWF0 dGluZyB0aGVtIGFzIGEgZGVmaW5pdGlvbiBsaXN0LiBJZiB5b3UgYWRkIHBhZ2luYXRpb24g dGFncyB5b3UgY2FuIGZsaXAgdGhyb3VnaCBhbGwgdGhlIGV2ZW50czsgdGhleSB3aWxsIGJl IGRpc3BsYXllZCAxMCBhdCBhIHRpbWUgb24gZWFjaCBwYWdlIChpZiB5b3Ugd2FudCB0byBr ZWVwIHRyYWNrIG9mIHdoaWNoIHBhZ2UgeW91IGFyZSBvbiBhcyB5b3UgZmxpcCB0aHJvdWdo IGEgY2FsZW5kYXIgdGhhdCBpcyBpbiBhIHNpZGViYXIsIGFkZCA8Y29kZT5wZzwvY29kZT4g dG8gdGhlIDxjb2RlPm1haW50YWluPC9jb2RlPiBhdHRyaWJ1dGUgaW4geW91ciBjYWxlbmRh cikuPC9wPgoKCTxwPk5vdGUgdGhlIGh5cGVybGlua2VkIHRpdGxlIHNob3duIGhlcmUgd2ls bCBkaXNwbGF5IHRoZSAmIzgyMTY7cmVhbCYjODIxNzsgYXJ0aWNsZSB3aGVuIGNsaWNrZWQu IElmIHlvdSB3YW50ZWQgdG8gYWxsb3cgcGVvcGxlIHRvIGJvb2sgYW4gZXZlbnQgb24geW91 ciBpbmRpdmlkdWFsIGFydGljbGUsIHRyeSB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2Nr Ij48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6aWZfaW5kaXZpZHVhbF9hcnRpY2xlJmd0 OwogJmx0O3R4cDphcnRpY2xlIGxpbWl0PSZxdW90OzEmcXVvdDsmZ3Q7CiAgJmx0O2gzJmd0 OyZsdDt0eHA6dGl0bGUgLyZndDsmbHQ7L2gzJmd0OwogICZsdDt0eHA6Ym9keSAvJmd0Owog ICZsdDtwJmd0O1BsZWFzZSBjaG9vc2UgYSBkYXRlIHRvIGJvb2s6Jmx0Oy9wJmd0OwogICZs dDtzZWxlY3QmZ3Q7CiAgJmx0O3R4cDpzbWRfYXJ0aWNsZV9ldmVudCBzdGVwZmllbGQ9JnF1 b3Q7Y3VzdG9tXzEmcXVvdDsKICAgIHR5cGU9JnF1b3Q7cmVjdXImcXVvdDsgaWQ9JiMzOTsm bHQ7dHhwOmFydGljbGVfaWQgLyZndDsmIzM5OyZndDsKICAgICZsdDtvcHRpb24KICAgICB2 YWx1ZT0mIzM5OyZsdDt0eHA6cG9zdGVkIGZvcm1hdD0mcXVvdDslRy0lbS0lZCZxdW90Oy8m Z3Q7JiMzOTsmZ3Q7CiAgICAgICZsdDt0eHA6cG9zdGVkIGZvcm1hdD0mcXVvdDslbSAlZCwg JEcmcXVvdDsgLyZndDsKICAgICZsdDsvb3B0aW9uJmd0OwogICZsdDsvdHhwOnNtZF9hcnRp Y2xlX2V2ZW50Jmd0OwogICZsdDsvc2VsZWN0Jmd0OwogJmx0Oy90eHA6YXJ0aWNsZSZndDsK Jmx0Oy90eHA6aWZfaW5kaXZpZHVhbF9hcnRpY2xlJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+ V2l0aCBzb21lIGN1bm5pbmcgeW91IGNvdWxkIGV2ZW4gYWRkIHRoZSAmIzgyMTY7dmlydHVh bCYjODIxNzsgZGF0ZSB0aGF0IHRoZXkgY2hvc2UgaW4geW91ciBvcmlnaW5hbCBhcnRpY2xl X2V2ZW50IGxpc3QgYW5kIHBhc3MgaXQgYXMgYSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9z cGFuPiB2YXJpYWJsZSB0byB5b3VyIGluZGl2aWR1YWwgYXJ0aWNsZSB3aGVyZSB5b3UgY291 bGQgcmVhZCB0aGUgdmFsdWUgYW5kIHByZS1zZWxlY3QgdGhlIGRhdGUgZm9yIHRoZSB2aXN0 b3IuPC9wPgoKCTxoMyBpZD0iZWc1Ij5FeGFtcGxlIDU8L2gzPgoKCTxwPkhvdyBhYm91dCBi ZWluZyBhYmxlIHRvIG91dHB1dCB5b3VyIGV2ZW50cyBpbiBpQ2FsIGZvcm1hdCBzbyBvdGhl ciBwZW9wbGUgY2FuIHN5bmMgdGhlaXIgY2FsZW5kYXJzIHRvIHlvdXJzPyBQdXQgdGhpcyBp biBhIG5ldyBQYWdlIHRlbXBsYXRlIGluIGl0cyBvd24gU2VjdGlvbjo8L3A+Cgo8cHJlIGNs YXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj5CRUdJTjpWQ0FMRU5EQVIKVkVSU0lP TjoyLjAKWC1XUi1DQUxOQU1FOkdpZ3MgQ2FsZW5kYXIKUFJPRElEOi0vL0FwcGxlIENvbXB1 dGVyLCBJbmMvL2lDYWwgMS41Ly9FTgpYLVdSLVRJTUVaT05FOkV1cm9wZS9Mb25kb24KJmx0 O3R4cDpzbWRfYXJ0aWNsZV9ldmVudCBmb3JtPSZxdW90O2ljc2l0ZW0mcXVvdDsgdGltZT0m cXVvdDthbnkmcXVvdDsKc2VjdGlvbj0mcXVvdDtnaWdzJnF1b3Q7IGxpbWl0PSZxdW90OzEw MDAmcXVvdDsmZ3Q7CiBCRUdJTjpWRVZFTlQKIERUU1RBUlQ6Jmx0O3R4cDpwb3N0ZWQgZm9y bWF0PSZxdW90OyVZJW0lZFQlSCVpJXMmcXVvdDsgLyZndDsKIERURU5EOiZsdDt0eHA6ZXhw aXJlcyBmb3JtYXQ9JnF1b3Q7JVklbSVkVCVIJWklcyZxdW90OyAvJmd0OwogU1VNTUFSWTom bHQ7dHhwOnRpdGxlIC8mZ3Q7CiBFTkQ6VkVWRU5UCiZsdDsvdHhwOnNtZF9hcnRpY2xlX2V2 ZW50Jmd0OwpFTkQ6VkNBTEVOREFSCjwvY29kZT48L3ByZT4KCgk8cD5UaGF0IHdpbGwgb3V0 cHV0IGFuIGlDYWwtZm9ybWF0dGVkIGdpZyBsaXN0IChyZXBlYXRlZCBvciBvdGhlcndpc2Up LiBJZiB5b3UgZ290IGZyZWFreSB3aXRoIGl0IGFuZCBhZGRlZCBzb21lIGNvbmRpdGlvbmFs IGxvZ2ljIGluc2lkZSB0aGUgdGVtcGxhdGUgeW91IGNvdWxkIGV2ZW4gcmVhZCBpbiA8c3Bh biBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB2YXJpYWJsZXMgYW5kIHBsdWcgdGhlbSBpbi4g VGh1cyB5b3UgY291bGQgbGluayB0byBpdCBkaXJlY3RseSBvZmYgdGhlIGNhbGVuZGFyIGl0 c2VsZiwgcGFzcyBpbiB0aGUgc2VjdGlvbiwgY2F0ZWdvcnkgb3IgZXZlbnQgaW5mbyBhbmQg aGF2ZSBhIGN1c3RvbWlzZWQgaUNhbCBzdHJlYW0gcHVtcGVkIG91dCBvZiBUZXh0cGF0dGVy bi48L3A+CgoJPHA+VGhhbmtzIHRvIHdvb2YgZm9yIGJyaW5naW5nIHRoZSBvcmlnaW5hbCA8 YSBocmVmPSJodHRwOi8vZGUtb25saW5lLmNvLnVrLzIwMDYvMDUvMDUvdGV4dHBhdHRlcm4t YW5kLWljYWwiPkRhdmlkIEVtZXJ5PC9hPiBhcnRpY2xlIHRvIG15IGF0dGVudGlvbi48L3A+ CgoJPGgzIGlkPSJlZzYiPkV4YW1wbGUgNjwvaDM+CgoJPHA+VXNpbmcgdGhlIDxjb2RlPm5v dzwvY29kZT4gYW5kIDxjb2RlPm9mZnNldDwvY29kZT4gYXR0cmlidXRlcyBvZiA8Y29kZT4m bHQ7dHhwOnNtZF9jYWxfbm93IC8mZ3Q7PC9jb2RlPiB5b3UgY2FuIGVmZmVjdGl2ZWx5IHNl dCAmIzgyMTY7bm93JiM4MjE3OyB0byBiZSBhbnkgdGltZSB5b3UgbGlrZSBhbmQgbWFrZSBj YWxjdWxhdGlvbnMgYmFzZWQgb24gYSBwYXJ0aWN1bGFyIGRhdGUuPC9wPgoKCTxwPlBsdWdn aW5nIHRoZSA8Y29kZT4/bW9udGg8L2NvZGU+IGFuZCA8Y29kZT4/eWVhcjwvY29kZT4gY29k ZXMgaW4gYWxsb3dzIHlvdSB0byBtYWtlIDxjb2RlPiZsdDt0eHA6c21kX2FydGljbGVfZXZl bnQgLyZndDs8L2NvZGU+IHRyYWNrIHRoZSBjYWxlbmRhci4gU28geW91IGNhbiBhdXRvbWF0 aWNhbGx5IHNob3cgb25seSB0aGUgZXZlbnRzIHRoYXQgb2NjdXIgaW4gdGhlIG1vbnRoIHRo ZSB2aXNpdG9yIGlzIGJyb3dzaW5nIHZpYSB0aGUgY2FsZW5kYXI6PC9wPgoKPHByZSBjbGFz cz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfY2FsZW5kYXIgc3Rl cGZpZWxkPSZxdW90O2N1c3RvbV8xJnF1b3Q7IC8mZ3Q7CiZsdDtoMiZndDtFdmVudHMgdGhp cyBtb250aCZsdDsvaDImZ3Q7CiZsdDt0eHA6c21kX2FydGljbGVfZXZlbnQgc3RlcGZpZWxk PSZxdW90O2N1c3RvbV8xJnF1b3Q7CiAgICAgZnJvbT0mIzM5OyZsdDt0eHA6c21kX2NhbF9u b3cgbm93PSZxdW90OzAxLT9tb250aC0/eWVhciZxdW90OyAvJmd0OyYjMzk7CiAgICAgdG89 JiMzOTsmbHQ7dHhwOnNtZF9jYWxfbm93IG5vdz0mcXVvdDs/bW9udGgtP3llYXImcXVvdDsK ICAgICAgICBvZmZzZXQ9JnF1b3Q7MSBtb250aCZxdW90OyAvJmd0OyYjMzk7IHRpbWU9JnF1 b3Q7YW55JnF1b3Q7IHdyYXB0YWc9JnF1b3Q7dWwmcXVvdDsmZ3Q7CiZsdDtsaSZndDsmbHQ7 dHhwOnBlcm1saW5rJmd0OyZsdDtiJmd0OyZsdDt0eHA6dGl0bGUvJmd0OyZsdDsvYiZndDsm bHQ7L3R4cDpwZXJtbGluayZndDsmbHQ7L2xpJmd0OwombHQ7L3R4cDpzbWRfYXJ0aWNsZV9l dmVudCZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPjwvZGl2PjwvcD4KPCEtLSAtLS0gQkVHSU4g UExVR0lOIENTUyAtLS0gLS0+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiNzbWRfaGVscCB7 IGxpbmUtaGVpZ2h0OjEuNSA7fQojc21kX2hlbHAgY29kZSB7IGZvbnQtd2VpZ2h0OmJvbGQ7 IGZvbnQ6IDEwNSUvMTMwJSAiQ291cmllciBOZXciLCBjb3VyaWVyLCBtb25vc3BhY2U7IGJh Y2tncm91bmQtY29sb3I6ICNGRkZGQ0M7fQojc21kX2hlbHAgY29kZS5ibG9jayB7IGZvbnQt d2VpZ2h0Om5vcm1hbDsgYm9yZGVyOjFweCBkb3R0ZWQgIzk5OTsgYmFja2dyb3VuZC1jb2xv cjogI2YwZTY4YzsgZGlzcGxheTpibG9jazsgbWFyZ2luOjEwcHggMTBweCAyMHB4OyBwYWRk aW5nOjEwcHg7IH0KI3NtZF9oZWxwIGE6bGluaywgI3NtZF9oZWxwIGE6dmlzaXRlZCB7IGNv bG9yOiAjMDBjOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGJvcmRlci1ib3R0b206IDFweCBz b2xpZCBibHVlOyBwYWRkaW5nLWJvdHRvbToxcHg7fQojc21kX2hlbHAgYTpob3ZlciwgI3Nt ZF9oZWxwIGE6YWN0aXZlIHsgY29sb3I6IGJsdWU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsg Ym9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIGJsdWU7IHBhZGRpbmctYm90dG9tOjFweDt9CiNz bWRfaGVscCBoMSB7IGNvbG9yOiAjMzY5OyBmb250OiAyMHB4IEdlb3JnaWEsIHNhbnMtc2Vy aWY7IG1hcmdpbjogMDsgdGV4dC1hbGlnbjogY2VudGVyOyB9CiNzbWRfaGVscCBoMiB7IGJv cmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjazsgcGFkZGluZzoxMHB4IDAgMDsgY29sb3I6 ICMzNjk7IGZvbnQ6IDE3cHggR2VvcmdpYSwgc2Fucy1zZXJpZjsgfQojc21kX2hlbHAgaDMg eyBjb2xvcjogIzA3OTsgZm9udDogYm9sZCAxMnB4IEFyaWFsLCBzYW5zLXNlcmlmOyBsZXR0 ZXItc3BhY2luZzogMXB4OyBtYXJnaW46IDEwcHggMCAwO3RleHQtdHJhbnNmb3JtOiB1cHBl cmNhc2U7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fQojc21kX2hlbHAgaDQgeyBmb250 OiBib2xkIDExcHggQXJpYWwsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1h cmdpbjogMTBweCAwIDAgO3RleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0KI3NtZF9oZWxw IC5hdG5tIHsgZm9udC13ZWlnaHQ6Ym9sZDsgY29sb3I6IzMzZDsgfQojc21kX2hlbHAgLm1h bmQgeyBiYWNrZ3JvdW5kOiNlZWU7IGJvcmRlcjoxcHggZG90dGVkICM5OTk7IH0KI3NtZF9o ZWxwIHRhYmxlIHt3aWR0aDo5MCU7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nLWJvdHRv bToxZW07fQojc21kX2hlbHAgdGQsICNzbWRfaGVscCB0aCB7Ym9yZGVyOjFweCBzb2xpZCAj OTk5OyBwYWRkaW5nOi41ZW0gMDt9CiNzbWRfaGVscCB1bCB7IGxpc3Qtc3R5bGUtdHlwZTpz cXVhcmU7IH0KI3NtZF9oZWxwIC5yZXF1aXJlZCB7Y29sb3I6cmVkO30KI3NtZF9oZWxwIGxp IHsgbWFyZ2luOjVweCAyMHB4IDVweCAzMHB4OyB9CiNzbWRfaGVscCAuYnJlYWsgeyBtYXJn aW4tdG9wOjVweDsgfQo8L3N0eWxlPgo8IS0tIC0tLSBFTkQgUExVR0lOIENTUyAtLS0gLS0+ CiI7czozOiJtZDUiO3M6MzI6ImU1Mjg2ZDk1NTM0ZTJkODk0MzAxNjZmNzMwMDI2N2VjIjt9