# Name: smd_featured v0.33 # Type: Admin/Public side plugin # Quickly label and display featured articles for your site's home / landing pages # 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: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjEyOiJzbWRfZmVhdHVyZWQiO3M6NjoiYXV0aG9yIjtzOjEx OiJTdGVmIERhd3NvbiI7czoxMDoiYXV0aG9yX3VyaSI7czoyMjoiaHR0cDovL3N0ZWZkYXdz b24uY29tLyI7czo3OiJ2ZXJzaW9uIjtzOjQ6IjAuMzMiO3M6MTE6ImRlc2NyaXB0aW9uIjtz OjgwOiJRdWlja2x5IGxhYmVsIGFuZCBkaXNwbGF5IGZlYXR1cmVkIGFydGljbGVzIGZvciB5 b3VyIHNpdGUncyBob21lIC8gbGFuZGluZyBwYWdlcyI7czo0OiJjb2RlIjtzOjMzNjgyOiJp ZiAoQHR4cGludGVyZmFjZSA9PSAnYWRtaW4nKSB7DQoJZ2xvYmFsICRzbWRfZmVhdHVyZWRf ZXZlbnQsICRzbWRfZmVhdHVyZWRfdGV4dGlsZV9vcHRzLCAkc21kX2ZlYXR1cmVkX3N0eWxl czsNCg0KCSRzbWRfZmVhdHVyZWRfZXZlbnQgPSAnc21kX2ZlYXR1cmVkJzsNCgkkc21kX2Zl YXR1cmVkX3ByaXZzID0gZ2V0X3ByZWYoJ3NtZF9mZWF0dXJlZF9wcml2cycsICcxLDInKTsN Cgkkc21kX2ZlYXR1cmVkX3ByZWZfcHJpdnMgPSAnMSwyJzsNCgkkc21kX2ZlYXR1cmVkX3Rl eHRpbGVfb3B0cyA9IGFycmF5KA0KCQkwID0+ICd0aXRsZScsDQoJCTEgPT4gJ2Rlc2MnLA0K CSk7DQoJJHNtZF9mZWF0dXJlZF9zdHlsZXMgPSBhcnJheSgNCgkJJ2NvbW1vbicgPT4NCiAg ICAgICAgICcjc21kX2FsbCBoMyB7IG1hcmdpbjoxNXB4IDA7IH0NCiAgICAgICAgICNzbWRf ZmVhdHVyZWRfY3BhbmVsIGZvcm0gZmllbGRzZXQgeyBib3JkZXI6MDsgfQ0KICAgICAgICAg I3NtZF9mZWF0dXJlZF9jcGFuZWwgZm9ybSBsZWdlbmQgeyBtYXJnaW46MTJweCAwOyB9DQog ICAgICAgICAuZmllbGRzZXRfaW5uZXIgeyBiYWNrZ3JvdW5kLWltYWdlOm5vbmU7IGJhY2tn cm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7IGJvcmRlcjowOyB9DQogICAgICAgICAjc21kX2Zl YXR1cmVkX2NwYW5lbCBzZWxlY3QsICNzbWRfZmVhdHVyZWRfY3BhbmVsIGlucHV0W3R5cGU9 InRleHQiXSB7IG1hcmdpbi1ib3R0b206MTBweDsgfQ0KICAgICAgICAgI3NtZF9mZWF0dXJl ZF9jcGFuZWwgaW5wdXRbdHlwZT0idGV4dCJdIHsgcGFkZGluZzozcHg7IH0NCiAgICAgICAg ICNjb250cm9sIGlucHV0LCAjY29udHJvbCBzZWxlY3QgeyBtYXJnaW46MDsgfQ0KICAgICAg ICAgLnNtZF9oaWRkZW4geyBkaXNwbGF5Om5vbmU7IH0NCiAgICAgICAgIC5zbWRfZmVhdHVy ZWQgeyBiYWNrZ3JvdW5kLWNvbG9yOiNlMmRmY2U7IH0NCiAgICAgICAgIC5zbWRfZmVhdHVy ZWQgYSB7IGZvbnQtd2VpZ2h0OiBib2xkOyBjb2xvcjojODA1NTFlOyB9DQogICAgICAgICAj c21kX2ZlYXR1cmVkX2NvbnRyb2xfcGFuZWwgeyBtYXJnaW46MCBhdXRvIDIwcHg7IHdpZHRo OjUwMHB4OyB9DQogICAgICAgICAjc21kX2ZlYXR1cmVkX3ByZWZzIHsgbWFyZ2luLWxlZnQ6 MTJweDsgfQ0KICAgICAgICAgLnNtZF9mZWF0dXJlZF9zYXZlIHsgZmxvYXQ6cmlnaHQ7IH0N CiAgICAgICAgIC5zbWRfZmVhdHVyZWRfc3VicGFuZWwgeyBmbG9hdDpsZWZ0OyB9DQogICAg ICAgICAuc21kX2ZlYXR1cmVkX3RhYmxlIHsgd2lkdGg6ODAwcHg7IG1hcmdpbjowIGF1dG8g ODBweDsgfQ0KICAgICAgICAgLnNtZF9jbGVhciB7IGNsZWFyOmJvdGg7IH0NCiAgICAgICAg IC5zbWRfZmVhdHVyZWRfdGFibGUgZGl2IHsgZmxvYXQ6bGVmdDsgd2lkdGg6e2J3fXB4OyBo ZWlnaHQ6e2JofXB4OyBib3JkZXI6MXB4IHNvbGlkICNhYWE7IHBhZGRpbmc6NHB4OyBvdmVy ZmxvdzpoaWRkZW47IH0nLA0KCQknbG9hZGluZycgPT4NCiAgICAgICAgICdjb2xvcjojODA1 NTFlOyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjIwMCU7IGZvbnQtc3R5bGU6aXRh bGljOyB3aWR0aDo1MDBweDsgaGVpZ2h0OjEwMHB4OyBtYXJnaW46MCBhdXRvOyBib3JkZXI6 MXB4IHNvbGlkICM3Nzc7IGJhY2tncm91bmQ6I2UyZGZjZTtkaXNwbGF5OmJsb2NrJywNCgkJ J2xvYWRpbmdfZGl2JyA9Pg0KICAgICAgICAgJ21hcmdpbi10b3A6MzBweDsnLA0KCSk7DQoN CglhZGRfcHJpdnMoJHNtZF9mZWF0dXJlZF9ldmVudCwgJHNtZF9mZWF0dXJlZF9wcml2cyk7 DQoJcmVnaXN0ZXJfdGFiKCJjb250ZW50IiwgJHNtZF9mZWF0dXJlZF9ldmVudCwgc21kX2Zl YXR1cmVkX2dUeHQoJ3RhYl9uYW1lJykpOw0KCXJlZ2lzdGVyX2NhbGxiYWNrKCdzbWRfZmVh dHVyZWRfbWFuYWdlJywgJHNtZF9mZWF0dXJlZF9ldmVudCk7DQoJcmVnaXN0ZXJfY2FsbGJh Y2soJ3NtZF9mZWF0dXJlZF93ZWxjb21lJywgJ3BsdWdpbl9saWZlY3ljbGUuc21kX2ZlYXR1 cmVkJyk7DQp9DQoNCmlmICghZGVmaW5lZCgnU01EX0ZFQVQnKSkgew0KCWRlZmluZSgiU01E X0ZFQVQiLCAnc21kX2ZlYXR1cmVkJyk7DQp9DQoNCi8vICoqKioqKioqKioNCi8vIEFETUlO IFNJREUNCi8vICoqKioqKioqKioNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVu Y3Rpb24gc21kX2ZlYXR1cmVkX21hbmFnZSgkZXZ0LCAkc3RwKSB7DQoJaWYgKCRzdHAgPT0g J3NhdmVfcGFuZV9zdGF0ZScpIHsNCgkJc21kX2ZlYXR1cmVkX3NhdmVfcGFuZV9zdGF0ZSgp Ow0KCX0gZWxzZSB7DQoJCWlmKCEkc3RwIG9yICFpbl9hcnJheSgkc3RwLCBhcnJheSgNCgkJ CQknc21kX2ZlYXR1cmVkX3RhYmxlX2luc3RhbGwnLA0KCQkJCSdzbWRfZmVhdHVyZWRfdGFi bGVfcmVtb3ZlJywNCgkJCQknc21kX2ZlYXR1cmVkX3ByZWZzYXZlJywNCgkJCQknc21kX2Zl YXR1cmVkX3NhdmUnLA0KCQkJCSdzbWRfZmVhdHVyZWRfdGFnaXQnLA0KCQkJCSdzbWRfZmVh dHVyZWRfY2hhbmdlX3BhZ2VieScsDQoJCQkpKSkgew0KCQkJc21kX2ZlYXR1cmVkX2xpc3Qo JycpOw0KCQl9IGVsc2UgJHN0cCgpOw0KCX0NCn0NCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQpmdW5jdGlvbiBzbWRfZmVhdHVyZWRfd2VsY29tZSgkZXZ0LCAkc3RwKSB7DQoJ JG1zZyA9ICcnOw0KCXN3aXRjaCAoJHN0cCkgew0KCQljYXNlICdpbnN0YWxsZWQnOg0KCQkJ c21kX2ZlYXR1cmVkX3RhYmxlX2luc3RhbGwoMCk7DQoJCQkkbXNnID0gJ1RoYW5rcyBmb3Ig aW5zdGFsbGluZyBzbWRfZmVhdHVyZWQuIFBsZWFzZSByZWFkIHRoZSBkb2NzIDotKSc7DQoJ CQlicmVhazsNCgkJY2FzZSAnZGVsZXRlZCc6DQoJCQlzbWRfZmVhdHVyZWRfdGFibGVfcmVt b3ZlKDApOw0KCQkJYnJlYWs7DQoJfQ0KCXJldHVybiAkbXNnOw0KfQ0KDQovLyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIHNtZF9mZWF0dXJlZF9saXN0KCRtc2c9Jycp IHsNCglnbG9iYWwgJHNtZF9mZWF0dXJlZF9ldmVudCwgJHNtZF9mZWF0dXJlZF9saXN0X3Bh Z2VieSwgJHNtZF9mZWF0dXJlZF90ZXh0aWxlX29wdHMsICRzbWRfZmVhdHVyZWRfc3R5bGVz Ow0KDQoJcGFnZXRvcChzbWRfZmVhdHVyZWRfZ1R4dCgndGFiX25hbWUnKSwgJG1zZyk7DQoJ ZXh0cmFjdChncHNhKGFycmF5KCdzbWRfZmVhdF9pZCcsICdzbWRfZmVhdF9sYWJlbCcsICdz bWRfZmVhdF9zZWFyY2hrZWVwJywgJ3NtZF9mZWF0X2ZpbHRrZWVwJywgJ3BhZ2UnKSkpOw0K DQoJaWYgKHNtZF9mZWF0dXJlZF90YWJsZV9leGlzdCgxKSkgew0KCQkkZmVhdGxpc3QgPSBz YWZlX3Jvd3MoJyonLCBTTURfRkVBVCwgJzE9MScpOw0KCQkkZmVhdGxpc3QgPSBlbXB0eSgk ZmVhdGxpc3QpID8gYXJyYXkoKSA6ICRmZWF0bGlzdDsNCgkJJGVkaXRuYW1lID0gJGZlYXRf bGFiZWwgPSAkZmVhdF90aXRsZSA9ICRmZWF0X2Rlc2MgPSAnJzsNCg0KCQkkZXR5cGVzID0g JGZ0eXBlcyA9ICRmbGlzdCA9IGFycmF5KCk7DQoJCSRldHlwZXNbJyddID0gc21kX2ZlYXR1 cmVkX2dUeHQoJ3VubGFiZWxsZWQnKTsNCgkJJGZ0eXBlc1snc21kX3VubGFiZWxsZWQnXSA9 IHNtZF9mZWF0dXJlZF9nVHh0KCd1bmxhYmVsbGVkJyk7DQoJCWZvcmVhY2ggKCRmZWF0bGlz dCBhcyAkaXRlbSkgew0KCQkJaWYgKGlzc2V0KCRpdGVtWydsYWJlbCddKSAmJiAhZW1wdHko JGl0ZW1bJ2xhYmVsJ10pKSB7DQoJCQkJJGZ0eXBlc1skaXRlbVsnbGFiZWwnXV0gPSAkZXR5 cGVzWyRpdGVtWydsYWJlbCddXSA9ICRpdGVtWydsYWJlbCddOw0KCQkJfQ0KCQkJJGZsaXN0 WyRpdGVtWydmZWF0X2lkJ11dID0gYXJyYXkoJ2xhYmVsJyA9PiAkaXRlbVsnbGFiZWwnXSwg J3RpdGxlJyA9PiAkaXRlbVsnZmVhdF90aXRsZSddLCAndGl0bGVfaHRtbCcgPT4gJGl0ZW1b J2ZlYXRfdGl0bGVfaHRtbCddLCAnZGVzY3JpcHRpb24nID0+ICRpdGVtWydkZXNjcmlwdGlv biddLCAnZGVzY19odG1sJyA9PiAkaXRlbVsnZGVzY19odG1sJ10pOw0KCQl9DQoNCgkJJGZl YXRsaXN0ID0gJGZsaXN0Ow0KDQoJCS8vIEdldCBhZGRpdGlvbmFsIGZpbHRlcmluZyBmcm9t IGhpZGRlbiBwcmVmcw0KCQkkd2hlcmUgPSBhcnJheSgnMT0xJyk7DQoJCSRzZWNsaXN0ID0g Z2V0X3ByZWYoJ3NtZF9mZWF0dXJlZF9zZWN0aW9uX2xpc3QnLCAnJyk7DQoJCWlmICgkc2Vj bGlzdCkgew0KCQkJJHdoZXJlW10gPSAiU2VjdGlvbiBJTiAoJyIuam9pbigiJywnIiwgZG9f bGlzdCgkc2VjbGlzdCkpLiInKSI7DQoJCX0NCgkJJHdoZXJlW10gPSAiU3RhdHVzIElOICg0 LDUpIjsNCg0KCQkkb3JkZXJieSA9IGdldF9wcmVmKCdzbWRfZmVhdHVyZWRfc29ydCcsICdQ b3N0ZWQgZGVzYycsIDEpOw0KCQkkb3JkZXJxcnkgPSAoJG9yZGVyYnkpID8gJyBPUkRFUiBC WSAnLmRvU2xhc2goJG9yZGVyYnkpIDogJyc7DQoJCSRjdXJyT3JkZXIgPSBleHBsb2RlKCcg JywgJG9yZGVyYnkpOw0KCQkkY3Vyck9yZGVyWzBdID0gKGlzc2V0KCRjdXJyT3JkZXJbMF0p KSA/ICRjdXJyT3JkZXJbMF0gOiAnUG9zdGVkJzsNCgkJJGN1cnJPcmRlclsxXSA9IChpc3Nl dCgkY3Vyck9yZGVyWzFdKSkgPyAkY3Vyck9yZGVyWzFdIDogJ2Rlc2MnOw0KCQkkZGlzcGxh eSA9IGdldF9wcmVmKCdzbWRfZmVhdHVyZWRfZGlzcGxheScsICdhbGwnLCAxKTsNCg0KCQkv LyBHZW5lcmF0ZSB0aGUgZXh0cmEgY3JpdGVyaWEgaWYgaW4gbGlzdCB2aWV3DQoJCWlmICgk ZGlzcGxheT09J3BhZ2luYXRlZCcpIHsNCgkJCWlmICgkc21kX2ZlYXRfc2VhcmNoa2VlcCkg ew0KCQkJCSRpdGVtcyA9IGRvX2xpc3QoJHNtZF9mZWF0X3NlYXJjaGtlZXAsICcgJyk7DQoJ CQkJJGl0bGlzdCA9IGFycmF5KCk7DQoJCQkJZm9yZWFjaCAoJGl0ZW1zIGFzICRpdGVtKSB7 DQoJCQkJCWlmICh0cmltKCRpdGVtKSAhPSAnJykgew0KCQkJCQkJJGl0bGlzdFtdID0gIlRp dGxlIGxpa2UgJyUkaXRlbSUnIjsNCgkJCQkJfQ0KCQkJCX0NCgkJCQkkd2hlcmVbXSA9ICco Jy5qb2luKCcgT1IgJywgJGl0bGlzdCkuJyknOw0KCQkJfQ0KCQkJaWYgKCRzbWRfZmVhdF9m aWx0a2VlcCkgew0KCQkJCSRsYmwgPSAoJHNtZF9mZWF0X2ZpbHRrZWVwID09ICdzbWRfdW5s YWJlbGxlZCcpID8gJycgOiAkc21kX2ZlYXRfZmlsdGtlZXA7DQoJCQkJJGlkcyA9IHNhZmVf Y29sdW1uKCdmZWF0X2lkJywgU01EX0ZFQVQsICJCSU5BUlkgbGFiZWwgPSAnJGxibCciKTsN CgkJCQkkd2hlcmVbXSA9ICJJRCBJTiAoJyIuam9pbigiJywnIiwgJGlkcykuIicpIjsNCgkJ CX0NCgkJfQ0KDQoJCSR3aGVyZSA9IGpvaW4oJyBBTkQgJywgJHdoZXJlKTsNCgkJJHRvdGFs ID0gc2FmZV9jb3VudCgndGV4dHBhdHRlcm4nLCAkd2hlcmUpOw0KCQkkZG9fcGFnID0gISRz bWRfZmVhdF9maWx0a2VlcCAmJiAhJHNtZF9mZWF0X3NlYXJjaGtlZXA7DQoNCgkJJGxpbWl0 ID0gKCRkaXNwbGF5PT0ncGFnaW5hdGVkJyAmJiAkZG9fcGFnKSA/IG1heCgkc21kX2ZlYXR1 cmVkX2xpc3RfcGFnZWJ5LCAxNSkgOiA5OTk5OTsNCgkJbGlzdCgkcGFnZSwgJG9mZnNldCwg JG51bVBhZ2VzKSA9IHBhZ2VyKCR0b3RhbCwgJGxpbWl0LCAkcGFnZSk7DQoNCgkJJHJzID0g c2FmZV9yb3dzKCcqJywgJ3RleHRwYXR0ZXJuJywgJHdoZXJlLiAkb3JkZXJxcnkgLiAiIGxp bWl0ICRvZmZzZXQsICRsaW1pdCIpOw0KCQkkb3V0ID0gYXJyYXkoKTsNCgkJZm9yZWFjaCAo JHJzIGFzICRyb3cpIHsNCgkJCSRmdHlwZSA9IGlzc2V0KCRmZWF0bGlzdFskcm93WydJRCdd XVsnbGFiZWwnXSkgPyAkZmVhdGxpc3RbJHJvd1snSUQnXV1bJ2xhYmVsJ10gOiAnJzsNCgkJ CSRvdXRbXSA9IGFycmF5KCRyb3dbJ0lEJ10sICRyb3dbJ1RpdGxlJ10sICRmdHlwZSk7DQoJ CQlpZiAoJHNtZF9mZWF0X2lkICYmICRyb3dbJ0lEJ10gPT0gJHNtZF9mZWF0X2lkKSB7DQoJ CQkJJGVkaXRuYW1lID0gJHJvd1snVGl0bGUnXTsNCgkJCQkkZmVhdF9sYWJlbCA9ICRmZWF0 bGlzdFskc21kX2ZlYXRfaWRdWydsYWJlbCddOw0KCQkJCSRmZWF0X3RpdGxlID0gJGZlYXRs aXN0WyRzbWRfZmVhdF9pZF1bJ3RpdGxlJ107DQoJCQkJJGZlYXRfZGVzYyA9IGRvU3RyaXAo c3RyX3JlcGxhY2UoJ1xyXG4nLCcNCicsICRmZWF0bGlzdFskc21kX2ZlYXRfaWRdWydkZXNj cmlwdGlvbiddKSk7DQoJCQl9DQoJCX0NCg0KCQkkc29ydG9wdHMgPSBhcnJheSgNCgkJCSdQ b3N0ZWQnID0+ICdQb3N0ZWQnLA0KCQkJJ0V4cGlyZXMnID0+ICdFeHBpcnknLA0KCQkJJ0xh c3RNb2QnID0+ICdNb2RpZmllZCcsDQoJCQknVGl0bGUnID0+ICdUaXRsZScsDQoJCQknU2Vj dGlvbicgPT4gJ1NlY3Rpb24nLA0KCQkJJ0NhdGVnb3J5MScgPT4gJ0NhdGVnb3J5MScsDQoJ CQknQ2F0ZWdvcnkyJyA9PiAnQ2F0ZWdvcnkyJywNCgkJKTsNCgkJJHNvcnRkaXJzID0gYXJy YXkoDQoJCQknYXNjJyA9PiAnQXNjZW5kaW5nJywNCgkJCSdkZXNjJyA9PiAnRGVzY2VuZGlu ZycsDQoJCSk7DQoJCSRkaXNwbGF5b3B0cyA9IGFycmF5KA0KCQkJJ2FsbCcgPT4gJ0FsbCcs DQoJCQkncGFnaW5hdGVkJyA9PiAnUGFnaW5hdGVkJywNCgkJKTsNCgkJJHRleHRpbGVvbm9m ZiA9IHNtZF9mZWF0dXJlZF9wcmVmX2V4cGxvZGUoJHNtZF9mZWF0dXJlZF90ZXh0aWxlX29w dHMsIGdldF9wcmVmKCdzbWRfZmVhdHVyZWRfdGV4dGlsZScsICcxMScsIDEpKTsNCg0KCQkk c2l6ZXMgPSBkb19saXN0KGdldF9wcmVmKCdzbWRfZmVhdHVyZWRfYm94X3NpemUnLCAnMTUw eDQwJywgMSksICd4Jyk7DQoJCSRzaXplc1swXSA9IChpc3NldCgkc2l6ZXNbMF0pICYmIGlz X251bWVyaWMoJHNpemVzWzBdKSkgPyAkc2l6ZXNbMF0gOiAnMTUwJzsNCgkJJHNpemVzWzFd ID0gKGlzc2V0KCRzaXplc1sxXSkgJiYgaXNfbnVtZXJpYygkc2l6ZXNbMV0pKSA/ICRzaXpl c1sxXSA6ICc0MCc7DQoJCSRkaXNwbGF5X2pzID0gKCRkaXNwbGF5PT0nYWxsJykgPyAxIDog MDsNCgkJJHN0eWxlcmVwcyA9IGFycmF5KA0KCQkJJ3tid30nID0+ICRzaXplc1swXSwNCgkJ CSd7Ymh9JyA9PiAkc2l6ZXNbMV0sDQoJCSk7DQoNCgkJZWNobyAnPGRpdiBpZD0ic21kX2xv YWRpbmciIHN0eWxlPSInLiRzbWRfZmVhdHVyZWRfc3R5bGVzWydsb2FkaW5nJ10uJyI+PGRp diBzdHlsZT0iJy4kc21kX2ZlYXR1cmVkX3N0eWxlc1snbG9hZGluZ19kaXYnXS4nIj5Mb2Fk aW5nLi4uPC9kaXY+PC9kaXY+JzsNCgkJZWNobyAnPGRpdiBpZD0ic21kX2NvbnRhaW5lciIg c3R5bGU9ImRpc3BsYXk6bm9uZTsiPic7DQoJCWVjaG8gJzxmaWVsZHNldCBpZD0ic21kX2Zl YXR1cmVkX2NvbnRyb2xfcGFuZWwiIGNsYXNzPSJ0eHAtY29udHJvbC1wYW5lbCI+PGxlZ2Vu ZCBjbGFzcz0icGxhaW4gbGV2ZXInLihnZXRfcHJlZigncGFuZV9zbWRfZmVhdHVyZWRfY3Bh bmVsX3Zpc2libGUnKSA/ICcgZXhwYW5kZWQnIDogJycpLiciPjxhIGhyZWY9IiNzbWRfZmVh dHVyZWRfY3BhbmVsIj4nLnNtZF9mZWF0dXJlZF9nVHh0KCdjb250cm9sX3BhbmVsJykuJzwv YT48L2xlZ2VuZD4nOw0KCQllY2hvICc8ZGl2IGlkPSJzbWRfZmVhdHVyZWRfY3BhbmVsIiBj bGFzcz0idG9nZ2xlIiBzdHlsZT0iZGlzcGxheTonLihnZXRfcHJlZigncGFuZV9zbWRfZmVh dHVyZWRfY3BhbmVsX3Zpc2libGUnKSA/ICdibG9jaycgOiAnbm9uZScpLiciPic7DQoNCgkJ ZWNobyAnPGZvcm0gaWQ9InNtZF9mZWF0X2ZpbHRmb3JtIiBhY3Rpb249ImluZGV4LnBocCIg bWV0aG9kPSJwb3N0IiBvbnN1Ym1pdD0ic21kX2ZlYXR1cmVkX2VkaXRrZWVwKDApO3JldHVy biBmYWxzZTsiPic7DQoJCWVjaG8gJzxmaWVsZHNldCBpZD0ic21kX2ZlYXR1cmVkX2ZpbHQi IGNsYXNzPSJzbWRfZmVhdHVyZWRfc3VicGFuZWwiPjxsZWdlbmQ+Jy5zbWRfZmVhdHVyZWRf Z1R4dCgoKCRkaXNwbGF5PT0nYWxsJykgPyAnc2VhcmNoX2xpdmUnIDogJ3NlYXJjaF9zdGFu ZGFyZCcpKS4nPC9sZWdlbmQ+JzsNCgkJZWNobyAnPGxhYmVsIGZvcj0ic21kX2ZlYXRfc2Vh cmNoIj4nLnNtZF9mZWF0dXJlZF9nVHh0KCdieV9uYW1lJykuJzwvbGFiZWw+Jy5mSW5wdXQo J3RleHQnLCAnc21kX2ZlYXRfc2VhcmNoJywgJHNtZF9mZWF0X3NlYXJjaGtlZXAsICcnLCAn JywgJycsICcnLCAnJywgJ3NtZF9mZWF0X3NlYXJjaCcpLg0KCQkJKCgkZnR5cGVzKSA/ICc8 ZGl2IGlkPSJzbWRfZmVhdHVyZWRfYnlsYWJlbCI+Jy5zbWRfZmVhdHVyZWRfZ1R4dCgnYnlf bGFiZWwnKS5zZWxlY3RJbnB1dCgnc21kX2ZlYXRfZmlsdCcsICRmdHlwZXMsICRzbWRfZmVh dF9maWx0a2VlcCwgMSwgJycsICdzbWRfZmVhdF9maWx0JykuJzwvZGl2PicgOiAnJyk7DQoJ CWVjaG8gKCRkaXNwbGF5PT0ncGFnaW5hdGVkJykgPyBmSW5wdXQoJ3N1Ym1pdCcsICcnLCBn VHh0KCdnbycpLCAnc21hbGxlcmJveCBzbWRfZmVhdHVyZWRfc2F2ZScsICcnLCAncmV0dXJu IHNtZF9mZWF0dXJlZF9lZGl0a2VlcCgwKTsnKSA6ICcnOw0KCQllY2hvIGVJbnB1dCgkc21k X2ZlYXR1cmVkX2V2ZW50KS5zSW5wdXQoJ3NtZF9mZWF0dXJlZF9saXN0Jyk7DQoJCWVjaG8g JzwvZmllbGRzZXQ+JzsNCgkJZWNobyAnPC9mb3JtPic7DQoNCgkJZWNobyAnPGZvcm0gaWQ9 InNtZF9mZWF0X3ByZWZzIiBhY3Rpb249ImluZGV4LnBocCIgbWV0aG9kPSJwb3N0Ij4nOw0K CQllY2hvICc8ZmllbGRzZXQgaWQ9InNtZF9mZWF0dXJlZF9wcmVmcyIgY2xhc3M9InNtZF9m ZWF0dXJlZF9zdWJwYW5lbCI+PGxlZ2VuZD4nLnNtZF9mZWF0dXJlZF9nVHh0KCdwcmVmcycp Lic8L2xlZ2VuZD4nOw0KDQoJCWVjaG8gJzxkaXYgY2xhc3M9InNtZF9mZWF0dXJlZF9wcmVm Ij4nOw0KCQllY2hvICc8bGFiZWwgZm9yPSJzbWRfZmVhdF9kaXNwbGF5Ij4nLnNtZF9mZWF0 dXJlZF9nVHh0KCdwcmVmX2Rpc3BsYXknKS4nPC9sYWJlbD4nLnNlbGVjdElucHV0KCdzbWRf ZmVhdF9kaXNwbGF5JywgJGRpc3BsYXlvcHRzLCAkZGlzcGxheSwgJycsICcnLCAnc21kX2Zl YXRfZGlzcGxheScpOw0KCQllY2hvICc8L2Rpdj4nOw0KDQoJCWVjaG8gJzxkaXYgY2xhc3M9 InNtZF9mZWF0dXJlZF9wcmVmIj4nOw0KCQllY2hvICc8bGFiZWwgZm9yPSJzbWRfZmVhdF9z b3J0Ij4nLnNtZF9mZWF0dXJlZF9nVHh0KCdwcmVmX3NvcnQnKS4nPC9sYWJlbD4nLnNlbGVj dElucHV0KCdzbWRfZmVhdF9zb3J0JywgJHNvcnRvcHRzLCAkY3Vyck9yZGVyWzBdLCAnJywg JycsICdzbWRfZmVhdF9zb3J0JykuDQoJCQlzZWxlY3RJbnB1dCgnc21kX2ZlYXRfc29ydGRp cicsICRzb3J0ZGlycywgJGN1cnJPcmRlclsxXSwgJycsICcnLCAnc21kX2ZlYXRfc29ydGRp cicpOw0KCQllY2hvICc8L2Rpdj4nOw0KDQoJCWVjaG8gJzxkaXYgY2xhc3M9InNtZF9mZWF0 dXJlZF9wcmVmIj4nOw0KCQllY2hvICc8ZGl2IGlkPSJzbWRfZmVhdF9kaXNwbGF5X2JveCI+ JzsNCgkJZWNobyAnPGxhYmVsIGZvcj0ic21kX2ZlYXRfYm94c2l6ZSI+Jy5zbWRfZmVhdHVy ZWRfZ1R4dCgncHJlZl9ib3hzaXplJykuJzwvbGFiZWw+Jy5mSW5wdXQoJ3RleHQnLCAnc21k X2ZlYXRfYm94X3gnLCAkc2l6ZXNbMF0sICcnLCAnJywgJycsICczJywgJycsICdzbWRfZmVh dF9ib3hzaXplJykuDQoJCQlzbWRfZmVhdHVyZWRfZ1R4dCgncHJlZl9ib3hzaXplYnknKS5m SW5wdXQoJ3RleHQnLCAnc21kX2ZlYXRfYm94X3knLCAkc2l6ZXNbMV0sICcnLCAnJywgJycs ICczJyk7DQoJCWVjaG8gJzwvZGl2Pic7DQoNCgkJZWNobyAnPGRpdiBjbGFzcz0ic21kX2Zl YXR1cmVkX3ByZWYgc21kX2ZlYXRfdGV4dGlsZSI+JzsNCgkJZWNobyAnPGxhYmVsIGZvcj0i c21kX2ZlYXRfdGV4dGlsZSI+Jy5zbWRfZmVhdHVyZWRfZ1R4dCgndGV4dGlsZScpLic8L2xh YmVsPic7DQoJCWZvcmVhY2ggKCR0ZXh0aWxlb25vZmYgYXMgJGtleSA9PiAkdmFsKSB7DQoJ CQllY2hvIGNoZWNrYm94KCdzbWRfZmVhdF90ZXh0aWxlXycuJGtleSwgMSwgJHRleHRpbGVv bm9mZlska2V5XSwgJycsICdzbWRfZmVhdF90ZXh0aWxlXycuJGtleSkuc3Auc21kX2ZlYXR1 cmVkX2dUeHQoJ3RleHRpbGVfJy4ka2V5KTsNCgkJfQ0KCQllY2hvIGZJbnB1dCgnaGlkZGVu JywgJ3NtZF9mZWF0X3RleHRpbGUnLCBpbXBsb2RlKCR0ZXh0aWxlb25vZmYpLCcnLCcnLCcn LCcnLCcnLCdzbWRfZmVhdF90ZXh0aWxlJyk7DQoJCWVjaG8gJzwvZGl2Pic7DQoNCgkJZWNo byAnPC9kaXY+JzsNCg0KCQllY2hvIGVJbnB1dCgkc21kX2ZlYXR1cmVkX2V2ZW50KS5zSW5w dXQoJ3NtZF9mZWF0dXJlZF9wcmVmc2F2ZScpOw0KCQllY2hvIGZJbnB1dCgnc3VibWl0Jywg JycsIGdUeHQoJ3NhdmUnKSwgJ3NtYWxsZXJib3ggc21kX2ZlYXR1cmVkX3NhdmUnLCAnJywg J3NtZF9mZWF0X3ByZXN1YigpOycpOw0KCQllY2hvICc8L2ZpZWxkc2V0Pic7DQoJCWVjaG8g JzwvZm9ybT4nOw0KDQoJCWVjaG8gJyZuYnNwOyc7IC8vIFdpdGhvdXQgdGhpcyAnY29udGVu dCcgalF1ZXJ5IDEuMy4yIHdvbid0IC50b2dnbGUoKSBhbiBlbGVtZW50IHdpdGggZW50aXJl bHkgZmxvYXRlZCBpbm5lciBlbGVtZW50cyA6LXMNCgkJZWNobyAnPC9kaXY+JzsNCgkJZWNo byAnPC9maWVsZHNldD4nOw0KDQoJCWVjaG8gJzxmb3JtIGlkPSJzbWRfZmVhdF9lZGl0Zm9y bSIgYWN0aW9uPSJpbmRleC5waHAiIG1ldGhvZD0icG9zdCI+JzsNCgkJZWNobyBoSW5wdXQo J3NtZF9mZWF0X3NlYXJjaGtlZXAnLCAnJykuDQoJCQkJaElucHV0KCdzbWRfZmVhdF9maWx0 a2VlcCcsICcnKS4NCgkJCQloSW5wdXQoJ3NtZF9mZWF0X2lkJywgJycpLg0KCQkJCWVJbnB1 dCgkc21kX2ZlYXR1cmVkX2V2ZW50KS4NCgkJCQlzSW5wdXQoJ3NtZF9mZWF0dXJlZF9saXN0 Jyk7DQoJCWVjaG8gJzwvZm9ybT4nOw0KDQoJCWVjaG8gJzxmb3JtIGlkPSJzbWRfZmVhdF9z YXZlZm9ybSIgYWN0aW9uPSJpbmRleC5waHAiIG1ldGhvZD0icG9zdCIgb25zdWJtaXQ9InJl dHVybiBzbWRfZmVhdHVyZWRfc2F2ZWtlZXAoKTsiPic7DQoJCWVjaG8gc3RhcnRUYWJsZSgn Y29udHJvbCcsJycsJycsJzMnKTsNCgkJaWYgKCRzbWRfZmVhdF9pZCkgew0KCQkJZWNobyB0 cigNCgkJCQl0ZCgnJm5ic3A7JykudGRjcyhnVHh0KCdlZGl0Jykuc3Auc3Ryb25nKCRlZGl0 bmFtZSksIDIpDQoJCQkpOw0KCQkJZWNobyB0cigNCgkJCQlmTGFiZWxDZWxsKGdUeHQoJ2xh YmVsJyksICcnLCAnc21kX2ZlYXRfbGFiZWwnKS4NCgkJCQl0ZCgNCgkJCQkJZklucHV0KCd0 ZXh0JywgJ3NtZF9mZWF0X2xhYmVsJywgJGZlYXRfbGFiZWwsICcnLCAnJywgJycsICcnLCAn JywgJ3NtZF9mZWF0X2xhYmVsJykuDQoJCQkJCXNlbGVjdElucHV0KCdzbWRfZmVhdF9sYWJl bGNob29zZScsICRldHlwZXMsICRmZWF0X2xhYmVsLCAwLCAnJywgJ3NtZF9mZWF0X2xhYmVs Y2hvb3NlJykNCgkJCQkpDQoJCQkpOw0KCQkJZWNobyB0cigNCgkJCQlmTGFiZWxDZWxsKGdU eHQoJ3RpdGxlJyksICcnLCAnc21kX2ZlYXRfdGl0bGUnKS4NCgkJCQl0ZCgNCgkJCQkJZklu cHV0KCd0ZXh0JywgJ3NtZF9mZWF0X3RpdGxlJywgJGZlYXRfdGl0bGUsICcnLCAnJywgJycs ICcnLCAnJywgJ3NtZF9mZWF0X3RpdGxlJykNCgkJCQkpDQoJCQkpOw0KCQkJZWNobyB0cigN CgkJCQlmTGFiZWxDZWxsKGdUeHQoJ2Rlc2NyaXB0aW9uJyksICcnLCAnc21kX2ZlYXRfZGVz YycpLg0KCQkJCXRkKHRleHRfYXJlYSgnc21kX2ZlYXRfZGVzYycsIDgwLCA0MDAsICRmZWF0 X2Rlc2MsICdzbWRfZmVhdF9kZXNjJykpLg0KCQkJCXRkKGZJbnB1dCgnc3VibWl0JywgJycs IGdUeHQoJ3NhdmUnKSwgJ3NtYWxsZXJib3gnKSkuDQoJCQkJaElucHV0KCdzbWRfZmVhdF9z ZWFyY2hrZWVwJywgJycpLg0KCQkJCWhJbnB1dCgnc21kX2ZlYXRfZmlsdGtlZXAnLCAnJyku DQoJCQkJaElucHV0KCdzbWRfZmVhdF9pZCcsICRzbWRfZmVhdF9pZCkuDQoJCQkJZUlucHV0 KCRzbWRfZmVhdHVyZWRfZXZlbnQpLg0KCQkJCXNJbnB1dCgnc21kX2ZlYXR1cmVkX3NhdmUn KQ0KCQkJKTsNCgkJfQ0KCQllY2hvIGVuZFRhYmxlKCk7DQoJCWVjaG8gJzwvZm9ybT4nOw0K DQoJCSRlZGJ0biA9IHNtYWxsKCdbJy5nVHh0KCdlZGl0JykuJ10nKTsNCg0KCQlpZiAoJG91 dCkgew0KCQkJJHJvd3MgPSBjb3VudCgkcnMpOw0KCQkJJHRibG91dCA9IGFycmF5KCk7DQoJ CQkkYXR0cyA9ICcgY2xhc3M9InNtZF9mZWF0dXJlZF90YWJsZSBzbWRfY2xlYXIiIGlkPSJz bWRfJy4kZGlzcGxheS4nIiBhbGlnbj0iY2VudGVyIic7DQoNCgkJCSR0YmxvdXRbXSA9IGhl ZChzbWRfZmVhdHVyZWRfZ1R4dCgnbWFuYWdlX2xibCcsIGFycmF5KCksICdyYXcnKSwgMywg JyBjbGFzcz0ic21kX2NsZWFyIicpOw0KCQkJZm9yICgkaWR4ID0gMDsgJGlkeCA8ICRyb3dz OyAkaWR4KyspIHsNCgkJCQkkaXNmZWF0ID0gKGlzc2V0KCRvdXRbJGlkeF0pICYmIGFycmF5 X2tleV9leGlzdHMoJG91dFskaWR4XVswXSwgJGZlYXRsaXN0KSk7DQoJCQkJJGNlbGxjbGFz cyA9ICRpc2ZlYXQgPyAnIGNsYXNzPSJzbWRfZmVhdHVyZWQiJyA6ICcnOw0KCQkJCSRlZGxp bmsgPSAkaXNmZWF0ID8gJzxhIGNsYXNzPSJlZGxpbmsiIGhyZWY9IiMiIG9uY2xpY2s9InJl dHVybiBzbWRfZmVhdHVyZWRfZWRpdGtlZXAoXCcnLiRvdXRbJGlkeF1bMF0uJ1wnKTsiPicu JGVkYnRuLic8L2E+Jy5zcCA6ICcnOw0KCQkJCSRyb3dkYXRhID0gKGlzc2V0KCRvdXRbJGlk eF0pKSA/ICc8c3BhbiBuYW1lPSJzbWRfZmVhdF9uYW1lIiBjbGFzcz0ic21kX2hpZGRlbiI+ Jy4kb3V0WyRpZHhdWzFdLic8L3NwYW4+JyA6ICcnOw0KCQkJCSRyb3dkYXRhIC49ICRpc2Zl YXQgPyAnPHNwYW4gbmFtZT0ic21kX2ZlYXRfbGFiZWwiIGNsYXNzPSJleHRyYSBzbWRfaGlk ZGVuIj4nLiRvdXRbJGlkeF1bMl0uJzwvc3Bhbj4nIDogJyc7DQoJCQkJJHRibG91dFtdID0g KGlzc2V0KCRvdXRbJGlkeF0pKSA/ICc8ZGl2Jy4kY2VsbGNsYXNzLic+Jy4kZWRsaW5rLic8 YSBocmVmPSIjIiBvbmNsaWNrPSJyZXR1cm4gc21kX2ZlYXR1cmVkX3NlbGVjdCh0aGlzLCBc JycuJG91dFskaWR4XVswXS4nXCcpIj4nLiRvdXRbJGlkeF1bMV0uJzwvYT4nLiRyb3dkYXRh Lic8L2Rpdj4nIDogJzxkaXY+PC9kaXY+JzsNCgkJCX0NCgkJCWVjaG8gdGFnKGpvaW4oIiIs JHRibG91dCksICdkaXYnLCAkYXR0cyk7DQoJCQllY2hvICc8ZGl2IGNsYXNzPSJzbWRfY2xl YXIiPjwvZGl2Pic7DQoJCQlpZiAoJGRpc3BsYXk9PSdwYWdpbmF0ZWQnICYmICRkb19wYWcp IHsNCgkJCQllY2hvIG4uJzxkaXYgaWQ9IicuJHNtZF9mZWF0dXJlZF9ldmVudC4nX25hdmln YXRpb24iIGNsYXNzPSJ0eHAtbmF2aWdhdGlvbiI+Jy4NCgkJCQkJbi5uYXZfZm9ybSgkc21k X2ZlYXR1cmVkX2V2ZW50LCAkcGFnZSwgJG51bVBhZ2VzLCAnJywgJycsICcnLCAnJywgJHRv dGFsLCAkbGltaXQpLg0KCQkJCQluLnBhZ2VieV9mb3JtKCRzbWRfZmVhdHVyZWRfZXZlbnQs ICRzbWRfZmVhdHVyZWRfbGlzdF9wYWdlYnkpOw0KCQkJCQluLic8L2Rpdj4nOw0KCQkJfQ0K CQl9DQoNCgkJJHFzID0gYXJyYXkoDQoJCQkiZXZlbnQiID0+ICRzbWRfZmVhdHVyZWRfZXZl bnQsDQoJCSk7DQoNCgkJJHFzVmFycyA9ICJpbmRleC5waHAiLmpvaW5fcXMoJHFzKTsNCgkJ JHZlcmlmeVR4dCA9IHNtZF9mZWF0dXJlZF9nVHh0KCd1bmZlYXR1cmVfY29uZmlybScpOw0K DQoJCWVjaG8gPDw8RU9KUw0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KLy8g Q29uY2F0ZW5hdGUgY2hlY2tib3ggb3B0aW9ucyBmb3Igc3RvcmFnZQ0KZnVuY3Rpb24gc21k X2ZlYXRfcHJlc3ViKCkgew0KCXZhciBzbWRfb3V0ID0gIiI7DQoJalF1ZXJ5KCIuc21kX2Zl YXRfdGV4dGlsZSA6Y2hlY2tib3giKS5lYWNoKGZ1bmN0aW9uKCkgew0KCQlzbWRfb3V0ICs9 ICh0aGlzLmNoZWNrZWQpID8gMSA6IDA7DQoJfSk7DQoJalF1ZXJ5KCIjc21kX2ZlYXRfdGV4 dGlsZSIpLnZhbChzbWRfb3V0KTsNCgkJcmV0dXJuIHRydWU7DQoJfQ0KDQpmdW5jdGlvbiBz bWRfZmVhdHVyZWRfc2VsZWN0KG9iaiwgaWQpIHsNCglvYmogPSBqUXVlcnkob2JqKS5wYXJl bnQoKTsNCg0KCS8vIE4uQi4gTmVnYXRpdmUgbG9naWMgdXNlZCBoZXJlIGJlY2F1c2Ugd2Un cmUgY2hlY2tpbmcgdGhlIGNsYXNzIF9iZWZvcmVfIGl0J3MgYmVlbiB0b2dnbGVkDQoJdmFy IGFjdGlvbiA9ICgob2JqKS5oYXNDbGFzcygic21kX2ZlYXR1cmVkIikpID8gJ3JlbW92ZScg OiAnYWRkJzsNCglpZiAoYWN0aW9uID09ICdyZW1vdmUnKSB7DQoJCXZhciByZXQgPSBjb25m aXJtKCd7JHZlcmlmeVR4dH0nKTsNCgkJaWYgKHJldCA9PSBmYWxzZSkgew0KCQkJcmV0dXJu IGZhbHNlOw0KCQl9DQoJfQ0KCWpRdWVyeS5wb3N0KCd7JHFzVmFyc30nLCB7IHN0ZXA6ICJz bWRfZmVhdHVyZWRfdGFnaXQiLCBzbWRfZmVhdF9pZDogaWQsIHNtZF9mZWF0X2FjdGlvbjog YWN0aW9uIH0sDQoJCWZ1bmN0aW9uKGRhdGEpIHsNCgkJCW9iai50b2dnbGVDbGFzcygnc21k X2ZlYXR1cmVkJyk7DQoJCQlpZiAoYWN0aW9uID09ICdhZGQnKSB7DQoJCQkJb2JqLnByZXBl bmQoJzxhIGNsYXNzPSJlZGxpbmsiIGhyZWY9IiMiIG9uY2xpY2s9InJldHVybiBzbWRfZmVh dHVyZWRfZWRpdGtlZXAoXCcnK2lkKydcJykiPnskZWRidG59PC9hPiZuYnNwOycpOw0KCQkJ CW9iai5hcHBlbmQoJzxzcGFuIG5hbWU9InNtZF9mZWF0X2xhYmVsIiBjbGFzcz0iZXh0cmEg c21kX2hpZGRlbiI+PC9zcGFuPicpOw0KCQkJfSBlbHNlIHsNCgkJCQlvYmouZmluZCgnYS5l ZGxpbmsnKS5yZW1vdmUoKTsNCgkJCQlvYmouZmluZCgnc3Bhbi5leHRyYScpLnJlbW92ZSgp Ow0KCQkJCWlmIChqUXVlcnkoIiNzbWRfZmVhdF9zZWFyY2giKS52YWwoKSAhPSAnJykgalF1 ZXJ5KCIjc21kX2ZlYXRfc2VhcmNoIikua2V5dXAoKTsNCgkJCQlpZiAoalF1ZXJ5KCIjc21k X2ZlYXRfZmlsdCIpLnZhbCgpICE9ICcnKSBqUXVlcnkoIiNzbWRfZmVhdF9maWx0IikuY2hh bmdlKCk7DQoJCQl9DQoJCX0NCgkpOw0KCXJldHVybiBmYWxzZTsNCn0NCg0KZnVuY3Rpb24g c21kX2ZlYXR1cmVkX2VkaXRrZWVwKGlkKSB7DQoJalF1ZXJ5KCIjc21kX2ZlYXRfZWRpdGZv cm0gW25hbWU9J3NtZF9mZWF0X3NlYXJjaGtlZXAnXSIpLnZhbChqUXVlcnkoIiNzbWRfZmVh dF9zZWFyY2giKS52YWwoKSk7DQoJalF1ZXJ5KCIjc21kX2ZlYXRfZWRpdGZvcm0gW25hbWU9 J3NtZF9mZWF0X2ZpbHRrZWVwJ10iKS52YWwoalF1ZXJ5KCIjc21kX2ZlYXR1cmVkX2J5bGFi ZWwgI3NtZF9mZWF0X2ZpbHQgb3B0aW9uOnNlbGVjdGVkIikudmFsKCkpOw0KCWpRdWVyeSgi I3NtZF9mZWF0X2VkaXRmb3JtIFtuYW1lPSdzbWRfZmVhdF9pZCddIikudmFsKGlkKTsNCglq UXVlcnkoIiNzbWRfZmVhdF9lZGl0Zm9ybSIpLnN1Ym1pdCgpOw0KfQ0KDQpmdW5jdGlvbiBz bWRfZmVhdHVyZWRfc2F2ZWtlZXAoKSB7DQoJalF1ZXJ5KCIjc21kX2ZlYXRfc2F2ZWZvcm0g W25hbWU9J3NtZF9mZWF0X3NlYXJjaGtlZXAnXSIpLnZhbChqUXVlcnkoIiNzbWRfZmVhdF9z ZWFyY2giKS52YWwoKSk7DQoJalF1ZXJ5KCIjc21kX2ZlYXRfc2F2ZWZvcm0gW25hbWU9J3Nt ZF9mZWF0X2ZpbHRrZWVwJ10iKS52YWwoalF1ZXJ5KCIjc21kX2ZlYXR1cmVkX2J5bGFiZWwg I3NtZF9mZWF0X2ZpbHQgb3B0aW9uOnNlbGVjdGVkIikudmFsKCkpOw0KfQ0KDQpmdW5jdGlv biBzbWRfZmVhdF9maWx0ZXIoc2VsZWN0b3IsIHF1ZXJ5LCBuYW0sIGNzZW5zZSwgZXhhY3Qp IHsNCglpZiAoeyRkaXNwbGF5X2pzfSA9PSAxKSB7DQoJCXZhciBxdWVyeSA9IGpRdWVyeS50 cmltKHF1ZXJ5KTsNCgkJY3NlbnNlID0gKGNzZW5zZSkgPyAiIiA6ICJpIjsNCgkJcXVlcnkg PSBxdWVyeS5yZXBsYWNlKC8gL2dpLCAnfCcpOyAvLyBhZGQgT1IgZm9yIHJlZ2V4IHF1ZXJ5 DQoJCWlmIChleGFjdCkgew0KCQkJdG1wID0gcXVlcnkuc3BsaXQoJ3wnKTsNCgkJCWZvciAo dmFyIGlkeCA9IDA7IGlkeCA8IHRtcC5sZW5ndGg7IGlkeCsrKSB7DQoJCQkJdG1wW2lkeF0g PSAnXicrdG1wW2lkeF0rJyQnOw0KCQkJfQ0KCQkJcXVlcnkgPSB0bXAuam9pbignfCcpOw0K CQl9DQoJCXZhciByZSA9IG5ldyBSZWdFeHAocXVlcnksIGNzZW5zZSk7DQoJCWpRdWVyeShz ZWxlY3RvcikuZWFjaChmdW5jdGlvbigpIHsNCgkJCXNlbCA9ICh0eXBlb2YgbmFtPT0idW5k ZWZpbmVkIiB8fCBuYW09PScnKSA/IGpRdWVyeSh0aGlzKSA6IGpRdWVyeSh0aGlzKS5maW5k KCJzcGFuW25hbWU9JyIrbmFtKyInXSIpOw0KCQkJaWYgKHF1ZXJ5ID09ICcnKSB7DQoJCQkJ aWYgKHNlbC5sZW5ndGggPT0gMSAmJiBzZWwudGV4dCgpID09ICcnKSB7DQoJCQkJCWpRdWVy eSh0aGlzKS5zaG93KCk7DQoJCQkJfSBlbHNlIHsNCgkJCQkJalF1ZXJ5KHRoaXMpLmhpZGUo KTsNCgkJCQl9DQoJCQl9IGVsc2Ugew0KCQkJCWlmIChzZWwudGV4dCgpLnNlYXJjaChyZSkg PCAwKSB7DQoJCQkJCWpRdWVyeSh0aGlzKS5oaWRlKCk7DQoJCQkJfSBlbHNlIHsNCgkJCQkJ alF1ZXJ5KHRoaXMpLnNob3coKTsNCgkJCQl9DQoJCQl9DQoJCX0pOw0KCX0NCn0NCg0KalF1 ZXJ5KGZ1bmN0aW9uKCkgew0KCWpRdWVyeSgiI3NtZF9mZWF0X3NlYXJjaCIpLmtleXVwKGZ1 bmN0aW9uKGV2ZW50KSB7DQoJCWpRdWVyeSgiI3NtZF9mZWF0X2ZpbHQiKS52YWwoJzAnKTsg Ly8gQ2xlYXIgdGhlIGZpbHRlciBkcm9wZG93bg0KCQkvLyBpZiBlc2MgaXMgcHJlc3NlZCBv ciBub3RoaW5nIGlzIGVudGVyZWQNCgkJaWYgKGV2ZW50LmtleUNvZGUgPT0gMjcgfHwgalF1 ZXJ5KHRoaXMpLnZhbCgpID09ICcnKSB7DQoJCQlqUXVlcnkodGhpcykudmFsKCcnKTsNCgkJ CWlmICh7JGRpc3BsYXlfanN9ID09IDEpIHsNCgkJCQlqUXVlcnkoIi5zbWRfZmVhdHVyZWRf dGFibGUgZGl2Om5vdCgudGJsaGVhZCkiKS5zaG93KCk7DQoJCQl9DQoJCX0gZWxzZSB7DQoJ CQlzbWRfZmVhdF9maWx0ZXIoJy5zbWRfZmVhdHVyZWRfdGFibGUgZGl2Om5vdCgudGJsaGVh ZCknLCBqUXVlcnkodGhpcykudmFsKCksICdzbWRfZmVhdF9uYW1lJywgMCwgMCk7DQoJCX0N Cgl9KTsNCglpZiAoJ3skc21kX2ZlYXRfc2VhcmNoa2VlcH0nICE9ICcnKSB7DQoJCWpRdWVy eSgiI3NtZF9mZWF0X3NlYXJjaCIpLmtleXVwKCk7DQoJfQ0KCWpRdWVyeSgiI3NtZF9mZWF0 X2ZpbHQiKS5jaGFuZ2UoZnVuY3Rpb24oZXZlbnQpIHsNCgkJalF1ZXJ5KCIjc21kX2ZlYXRf c2VhcmNoIikudmFsKCcnKTsgLy8gRW1wdHkgdGhlIHNlYXJjaCBib3gNCgkJaWYgKGpRdWVy eSh0aGlzKS52YWwoKSA9PSAnJykgew0KCQkJaWYgKHskZGlzcGxheV9qc30gPT0gMSkgew0K CQkJCWpRdWVyeSgnLnNtZF9mZWF0dXJlZF90YWJsZSBkaXY6bm90KC50YmxoZWFkKScpLnNo b3coKTsNCgkJCX0NCgkJfSBlbHNlIGlmIChqUXVlcnkodGhpcykudmFsKCkgPT0gJ3NtZF91 bmxhYmVsbGVkJykgew0KCQkJc21kX2ZlYXRfZmlsdGVyKCcuc21kX2ZlYXR1cmVkX3RhYmxl IGRpdjpub3QoLnRibGhlYWQpJywgJycsICdzbWRfZmVhdF9sYWJlbCcsIDAsIDApOw0KCQl9 IGVsc2Ugew0KCQkJc21kX2ZlYXRfZmlsdGVyKCcuc21kX2ZlYXR1cmVkX3RhYmxlIGRpdjpu b3QoLnRibGhlYWQpJywgalF1ZXJ5KHRoaXMpLnZhbCgpLCAnc21kX2ZlYXRfbGFiZWwnLCAx LCAxKTsNCgkJfQ0KCX0pOw0KCWlmICgneyRzbWRfZmVhdF9maWx0a2VlcH0nICE9ICcnKSB7 DQoJCWpRdWVyeSgiI3NtZF9mZWF0X2ZpbHQiKS5jaGFuZ2UoKTsNCgl9DQoJaWYgKCd7JHNt ZF9mZWF0X2lkfScgIT0gJycpIHsNCgkJalF1ZXJ5KCIjc21kX2ZlYXRfbGFiZWwiKS5mb2N1 cygpOw0KCQlqUXVlcnkoIiNzbWRfZmVhdF9sYWJlbGNob29zZSIpLmNoYW5nZShmdW5jdGlv bihldmVudCkgew0KCQkJalF1ZXJ5KCIjc21kX2ZlYXRfbGFiZWwiKS52YWwoalF1ZXJ5KHRo aXMpLnZhbCgpKTsNCgkJfSk7DQoJfQ0KCWpRdWVyeSgiI3NtZF9sb2FkaW5nIikuaGlkZSgp Ow0KCWpRdWVyeSgiI3NtZF9jb250YWluZXIiKS5zaG93KCk7DQp9KTsNCg0KPC9zY3JpcHQ+ DQpFT0pTOw0KDQoJCS8vIEluamVjdCBzdHlsZXMNCgkJZWNobyAnPHN0eWxlIHR5cGU9InRl eHQvY3NzIj4nOw0KCQllY2hvIHN0cnRyKCRzbWRfZmVhdHVyZWRfc3R5bGVzWydjb21tb24n XSwgJHN0eWxlcmVwcyk7DQoJCWVjaG8gJzwvc3R5bGU+JzsNCgkJZWNobyAnPC9kaXY+JzsN Cgl9IGVsc2Ugew0KCQkvLyBUYWJsZSBub3QgaW5zdGFsbGVkDQoJCSRidG5JbnN0YWxsID0g Jzxmb3JtIG1ldGhvZD0icG9zdCIgYWN0aW9uPSI/ZXZlbnQ9Jy4kc21kX2ZlYXR1cmVkX2V2 ZW50LmEuJ3N0ZXA9c21kX2ZlYXR1cmVkX3RhYmxlX2luc3RhbGwiIHN0eWxlPSJkaXNwbGF5 OmlubGluZSI+Jy5mSW5wdXQoJ3N1Ym1pdCcsICdzdWJtaXQnLCBzbWRfZmVhdHVyZWRfZ1R4 dCgndGJsX2luc3RhbGxfbGJsJyksICdzbWFsbGVyYm94JykuJzwvZm9ybT4nOw0KCQkkYnRu U3R5bGUgPSAnIHN0eWxlPSJib3JkZXI6MDtoZWlnaHQ6MjVweCInOw0KCQllY2hvIHN0YXJ0 VGFibGUoJ2xpc3QnKTsNCgkJZWNobyB0cih0ZGEoc3Ryb25nKHNtZF9mZWF0dXJlZF9nVHh0 KCdwcmVmc19zb21lX3RibCcpKS5ici5icg0KCQkJCS5zbWRfZmVhdHVyZWRfZ1R4dCgncHJl ZnNfc29tZV9leHBsYWluJykuYnIuYnINCgkJCQkuc21kX2ZlYXR1cmVkX2dUeHQoJ3ByZWZz X3NvbWVfb3B0cycpLCAnIGNvbHNwYW49IjIiJykNCgkJKTsNCgkJZWNobyB0cih0ZGEoJGJ0 bkluc3RhbGwsICRidG5TdHlsZSkpOw0KCQllY2hvIGVuZFRhYmxlKCk7DQoJfQ0KfQ0KDQov LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQpmdW5jdGlvbiBzbWRfZmVhdHVyZWRfY2hhbmdlX3BhZ2VieSgpIHsNCgln bG9iYWwgJHNtZF9mZWF0dXJlZF9ldmVudDsNCgkNCglldmVudF9jaGFuZ2VfcGFnZWJ5KCRz bWRfZmVhdHVyZWRfZXZlbnQpOw0KCXNtZF9mZWF0dXJlZF9saXN0KCk7DQp9DQoNCi8vIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gVXBkYXRlIHRoZSBwYXNzZWQgcmVjb3JkIGlu IHRoZSBmZWF0dXJlZCB0YWJsZQ0KZnVuY3Rpb24gc21kX2ZlYXR1cmVkX3NhdmUoKSB7DQoJ Z2xvYmFsICRzbWRfZmVhdHVyZWRfZXZlbnQsICRzbWRfZmVhdHVyZWRfdGV4dGlsZV9vcHRz Ow0KDQoJZXh0cmFjdChncHNhKGFycmF5KCdzbWRfZmVhdF9pZCcsICdzbWRfZmVhdF9sYWJl bCcsICdzbWRfZmVhdF90aXRsZScsICdzbWRfZmVhdF9kZXNjJykpKTsNCglhc3NlcnRfaW50 KCRzbWRfZmVhdF9pZCk7DQoNCgkkc21kX2ZlYXRfdGl0bGV0aWxlID0gJHNtZF9mZWF0X3Rp dGxlOw0KCSRzbWRfZmVhdF9kZXNjdGlsZSA9ICRzbWRfZmVhdF9kZXNjOw0KCSRzbWRfZmVh dF9sYWJlbCA9IGRvU2xhc2goJHNtZF9mZWF0X2xhYmVsKTsNCg0KCWlmIChzbWRfZmVhdHVy ZWRfdGFibGVfZXhpc3QoKSkgew0KCQlAaW5jbHVkZV9vbmNlIHR4cGF0aC4nL2xpYi9jbGFz c1RleHRpbGUucGhwJzsNCgkJQGluY2x1ZGVfb25jZSB0eHBhdGguJy9wdWJsaXNoLnBocCc7 DQoNCgkJJHRleHRpbGVvbm9mZiA9IHNtZF9mZWF0dXJlZF9wcmVmX2V4cGxvZGUoJHNtZF9m ZWF0dXJlZF90ZXh0aWxlX29wdHMsIGdldF9wcmVmKCdzbWRfZmVhdHVyZWRfdGV4dGlsZScs ICcxMScpKTsNCg0KCQlpZiAoY2xhc3NfZXhpc3RzKCdUZXh0aWxlJykpIHsNCgkJCSR0ZXh0 aWxlID0gbmV3IFRleHRpbGUoKTsNCgkJCSRzbWRfZmVhdF90aXRsZXRpbGUgPSBkb1NsYXNo KCgoJHRleHRpbGVvbm9mZlsndGl0bGUnXSA9PSAnMScpID8gJHRleHRpbGUtPlRleHRpbGVU aGlzKHBhcnNlKCRzbWRfZmVhdF90aXRsZSkpIDogcGFyc2UoJHNtZF9mZWF0X3RpdGxlKSkp Ow0KCQkJJHNtZF9mZWF0X2Rlc2N0aWxlID0gZG9TbGFzaCgoKCR0ZXh0aWxlb25vZmZbJ2Rl c2MnXSA9PSAnMScpID8gJHRleHRpbGUtPlRleHRpbGVUaGlzKHBhcnNlKCRzbWRfZmVhdF9k ZXNjKSkgOiBwYXJzZSgkc21kX2ZlYXRfZGVzYykpKTsNCgkJfQ0KDQoJCSRzbWRfZmVhdF90 aXRsZSA9IGRvU2xhc2goJHNtZF9mZWF0X3RpdGxlKTsNCgkJJHNtZF9mZWF0X2Rlc2MgPSBk b1NsYXNoKCRzbWRfZmVhdF9kZXNjKTsNCgkJJHJldCA9IHNhZmVfdXBzZXJ0KFNNRF9GRUFU LCAibGFiZWw9JyRzbWRfZmVhdF9sYWJlbCcsIGZlYXRfdGl0bGU9JyRzbWRfZmVhdF90aXRs ZScsIGZlYXRfdGl0bGVfaHRtbD0nJHNtZF9mZWF0X3RpdGxldGlsZScsIGRlc2NyaXB0aW9u PSckc21kX2ZlYXRfZGVzYycsIGRlc2NfaHRtbD0nJHNtZF9mZWF0X2Rlc2N0aWxlJyIsICJm ZWF0X2lkPSckc21kX2ZlYXRfaWQnIik7DQoJCXVuc2V0KCRfUE9TVFsnc21kX2ZlYXRfaWQn XSk7DQoJfQ0KDQoJc21kX2ZlYXR1cmVkX2xpc3Qoc21kX2ZlYXR1cmVkX2dUeHQoJ3NhdmVk JykpOw0KfQ0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIENyZWF0ZSBhbiBl bXB0eSBlbnRyeSBpbiB0aGUgZmVhdHVyZWQgdGFibGUgb3IgZGVzdHJveSBpdA0KZnVuY3Rp b24gc21kX2ZlYXR1cmVkX3RhZ2l0KCkgew0KCWdsb2JhbCAkc21kX2ZlYXR1cmVkX2V2ZW50 Ow0KCWV4dHJhY3QoZG9TbGFzaChncHNhKGFycmF5KCdzbWRfZmVhdF9pZCcsICdzbWRfZmVh dF9hY3Rpb24nKSkpKTsNCg0KCWFzc2VydF9pbnQoJHNtZF9mZWF0X2lkKTsNCg0KCWlmICgk c21kX2ZlYXRfYWN0aW9uID09ICdhZGQnKSB7DQoJCSRyZXQgPSBzYWZlX3Vwc2VydChTTURf RkVBVCwgImxhYmVsPScnIiwgImZlYXRfaWQ9JyRzbWRfZmVhdF9pZCciKTsNCgl9IGVsc2Ug aWYgKCRzbWRfZmVhdF9hY3Rpb24gPT0gJ3JlbW92ZScpIHsNCgkJJHJldCA9IHNhZmVfZGVs ZXRlKFNNRF9GRUFULCAiZmVhdF9pZD0nJHNtZF9mZWF0X2lkJyIpOw0KCX0NCn0NCg0KLy8g LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KZnVuY3Rpb24gc21kX2ZlYXR1cmVkX3ByZWZzYXZlKCkgew0KCWV4dHJhY3Qo Z3BzYShhcnJheSgnc21kX2ZlYXRfZGlzcGxheScsICdzbWRfZmVhdF9zb3J0JywgJ3NtZF9m ZWF0X3NvcnRkaXInLCAnc21kX2ZlYXRfYm94X3gnLCAnc21kX2ZlYXRfYm94X3knLCAnc21k X2ZlYXRfdGV4dGlsZScpKSk7DQoJJG1zZyA9ICcnOw0KDQoJaWYgKCRzbWRfZmVhdF9kaXNw bGF5KSB7DQoJCXNldF9wcmVmKCJzbWRfZmVhdHVyZWRfZGlzcGxheSIsICRzbWRfZmVhdF9k aXNwbGF5LCAnc21kX2ZlYXR1cmVkJywgUFJFRl9ISURERU4sICd0ZXh0X2lucHV0JywgMCwg UFJFRl9QUklWQVRFKTsNCgkJJG1zZyA9IGdUeHQoJ3ByZWZlcmVuY2VzX3NhdmVkJyk7DQoJ fQ0KDQoJaWYgKCRzbWRfZmVhdF9zb3J0ICYmICRzbWRfZmVhdF9zb3J0ZGlyKSB7DQoJCSRz b3J0X2NyaXQgPSAkc21kX2ZlYXRfc29ydC4nICcuICRzbWRfZmVhdF9zb3J0ZGlyOw0KCQlz ZXRfcHJlZigic21kX2ZlYXR1cmVkX3NvcnQiLCAkc29ydF9jcml0LCAnc21kX2ZlYXR1cmVk JywgUFJFRl9ISURERU4sICd0ZXh0X2lucHV0JywgMCwgUFJFRl9QUklWQVRFKTsNCgkJJG1z ZyA9IGdUeHQoJ3ByZWZlcmVuY2VzX3NhdmVkJyk7DQoJfQ0KDQoJaWYgKCRzbWRfZmVhdF9i b3hfeCAmJiAkc21kX2ZlYXRfYm94X3kpIHsNCgkJJGRpbXMgPSAkc21kX2ZlYXRfYm94X3gu J3gnLiRzbWRfZmVhdF9ib3hfeTsNCgkJc2V0X3ByZWYoInNtZF9mZWF0dXJlZF9ib3hfc2l6 ZSIsICRkaW1zLCAnc21kX2ZlYXR1cmVkJywgUFJFRl9ISURERU4sICd0ZXh0X2lucHV0Jywg MCwgUFJFRl9QUklWQVRFKTsNCgkJJG1zZyA9IGdUeHQoJ3ByZWZlcmVuY2VzX3NhdmVkJyk7 DQoJfQ0KDQoJaWYgKCRzbWRfZmVhdF90ZXh0aWxlKSB7DQoJCXNldF9wcmVmKCJzbWRfZmVh dHVyZWRfdGV4dGlsZSIsICRzbWRfZmVhdF90ZXh0aWxlLCAnc21kX2ZlYXR1cmVkJywgUFJF Rl9ISURERU4sICd0ZXh0X2lucHV0JywgMCwgUFJFRl9QUklWQVRFKTsNCgkJJG1zZyA9IGdU eHQoJ3ByZWZlcmVuY2VzX3NhdmVkJyk7DQoJfQ0KDQoJc21kX2ZlYXR1cmVkX2xpc3QoJG1z Zyk7DQp9DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gU3BsaXQgYSBtdWx0 aS1jaGFyIHByZWZlcmVuY2UgdmFsdWUgaW50byBhbiBhcnJheSBvZiBrZXlzL3ZhbHVlcy4N Ci8vIE5vdGU6IHZhbHVlIGlzIHBhc3NlZCBpbiBhbmQgbm90IHJlYWQgZGlyZWN0bHkgZnJv bSB0aGUgcHJlZnMgYXJyYXkgaW4gdGhpcyBmdW5jdGlvbiAtIGludGVudGlvbmFsbHkNCmZ1 bmN0aW9uIHNtZF9mZWF0dXJlZF9wcmVmX2V4cGxvZGUoJGl0ZW1zLCAkb3B0dmFsKSB7DQoJ JG9ub2ZmID0gYXJyYXlfdmFsdWVzKHByZWdfc3BsaXQoJy8vJywgJG9wdHZhbCwgLTEsIFBS RUdfU1BMSVRfTk9fRU1QVFkpKTsNCgkkb3V0ID0gYXJyYXkoKTsNCglmb3JlYWNoKCRpdGVt cyBhcyAka2V5ID0+ICR2YWx1ZSkgew0KCQkkb3V0WyhzdHJpbmcpJHZhbHVlXSA9ICRvbm9m Zlska2V5XTsNCgl9DQoJcmV0dXJuICRvdXQ7DQp9DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9u IHNtZF9mZWF0dXJlZF9zYXZlX3BhbmVfc3RhdGUoKSB7DQoJJHBhbmVzID0gYXJyYXkoJ3Nt ZF9mZWF0dXJlZF9jcGFuZWwnKTsNCgkkcGFuZSA9IGdwcygncGFuZScpOw0KCWlmIChpbl9h cnJheSgkcGFuZSwgJHBhbmVzKSkNCgl7DQoJCXNldF9wcmVmKCJwYW5lX3skcGFuZX1fdmlz aWJsZSIsIChncHMoJ3Zpc2libGUnKSA9PSAndHJ1ZScgPyAnMScgOiAnMCcpLCAnc21kX2Zl YXR1cmVkJywgUFJFRl9ISURERU4sICd5ZXNub3JhZGlvJywgMCwgUFJFRl9QUklWQVRFKTsN CgkJc2VuZF94bWxfcmVzcG9uc2UoKTsNCgl9IGVsc2Ugew0KCQlzZW5kX3htbF9yZXNwb25z ZShhcnJheSgnaHR0cC1zdGF0dXMnID0+ICc0MDAgQmFkIFJlcXVlc3QnKSk7DQoJfQ0KfQ0K DQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIEFkZCBmZWF0dXJlZCB0YWJsZSBp ZiBub3QgYWxyZWFkeSBpbnN0YWxsZWQNCmZ1bmN0aW9uIHNtZF9mZWF0dXJlZF90YWJsZV9p bnN0YWxsKCRzaG93cGFuZT0nMScpIHsNCgkkR0xPQkFMU1sndHhwX2Vycl9jb3VudCddID0g MDsNCgkkcmV0ID0gJyc7DQoJJHNxbCA9IGFycmF5KCk7DQoJJHNxbFtdID0gIkNSRUFURSBU QUJMRSBJRiBOT1QgRVhJU1RTIGAiLlBGWC5TTURfRkVBVC4iYCAoDQoJCWBmZWF0X2lkYCBp bnQoOCkgTk9UIE5VTEwgZGVmYXVsdCAnMCcsDQoJCWBsYWJlbGAgdmFyY2hhcigzMikgTlVM TCBkZWZhdWx0ICcnLA0KCQlgZmVhdF90aXRsZWAgdmFyY2hhcigyNTUpIE5VTEwgZGVmYXVs dCAnJywNCgkJYGZlYXRfdGl0bGVfaHRtbGAgdmFyY2hhcigyNTUpIE5VTEwgZGVmYXVsdCAn JywNCgkJYGRlc2NyaXB0aW9uYCB0ZXh0IE5VTEwgZGVmYXVsdCAnJywNCgkJYGRlc2NfaHRt bGAgdGV4dCBOVUxMIGRlZmF1bHQgJycsDQoJCVBSSU1BUlkgS0VZIChgZmVhdF9pZGApDQoJ KSBFTkdJTkU9TXlJU0FNIjsNCg0KCWlmKGdwcygnZGVidWcnKSkgew0KCQlkbXAoJHNxbCk7 DQoJfQ0KCWZvcmVhY2ggKCRzcWwgYXMgJHFyeSkgew0KCQkkcmV0ID0gc2FmZV9xdWVyeSgk cXJ5KTsNCgkJaWYgKCRyZXQ9PT1mYWxzZSkgew0KCQkJJEdMT0JBTFNbJ3R4cF9lcnJfY291 bnQnXSsrOw0KCQkJZWNobyAiPGI+Ii4kR0xPQkFMU1sndHhwX2Vycl9jb3VudCddLiIuPC9i PiAiLm15c3FsX2Vycm9yKCkuIjxiciAvPlxuIjsNCgkJCWVjaG8gIjwhLS1cbiAkcXJ5IFxu LS0+XG4iOw0KCQl9DQoJfQ0KDQoJLy8gSGFuZGxlIHVwZ3JhZGVzIGZyb20gcHJldmlvdXMg dmVyc2lvbnMNCgkkY29scyA9IGdldFRoaW5ncygnZGVzY3JpYmUgYCcuUEZYLlNNRF9GRUFU LidgJyk7DQoJaWYgKCFpbl9hcnJheSgnZmVhdF9pZCcsICRjb2xzKSkgew0KCQlzYWZlX2Fs dGVyKFNNRF9GRUFULCAiQ0hBTkdFIGBpZGAgYGZlYXRfaWRgIGludCggOCApIE5PVCBOVUxM IERFRkFVTFQgJzAnIik7DQoJfQ0KCWlmICghaW5fYXJyYXkoJ2ZlYXRfdGl0bGUnLCAkY29s cykpIHsNCgkJc2FmZV9hbHRlcihTTURfRkVBVCwgIkFERCBgZmVhdF90aXRsZWAgdmFyY2hh ciggMjU1ICkgTlVMTCBERUZBVUxUICcnIEFGVEVSIGBsYWJlbGAiKTsNCgl9DQoJaWYgKCFp bl9hcnJheSgnZmVhdF90aXRsZV9odG1sJywgJGNvbHMpKSB7DQoJCXNhZmVfYWx0ZXIoU01E X0ZFQVQsICJBREQgYGZlYXRfdGl0bGVfaHRtbGAgdmFyY2hhciggMjU1ICkgTlVMTCBERUZB VUxUICcnIEFGVEVSIGBmZWF0X3RpdGxlYCIpOw0KCX0NCg0KCS8vIFNwaXQgb3V0IHJlc3Vs dHMNCglpZiAoJEdMT0JBTFNbJ3R4cF9lcnJfY291bnQnXSA9PSAwKSB7DQoJCWlmICgkc2hv d3BhbmUpIHsNCgkJCSRtZXNzYWdlID0gc21kX2ZlYXR1cmVkX2dUeHQoJ3RibF9pbnN0YWxs ZWQnKTsNCgkJCXNtZF9mZWF0dXJlZF9saXN0KCRtZXNzYWdlKTsNCgkJfQ0KCX0gZWxzZSB7 DQoJCWlmICgkc2hvd3BhbmUpIHsNCgkJCSRtZXNzYWdlID0gc21kX2ZlYXR1cmVkX2dUeHQo J3RibF9ub3RfaW5zdGFsbGVkJyk7DQoJCQlzbWRfZmVhdHVyZWRfbGlzdCgkbWVzc2FnZSk7 DQoJCX0NCgl9DQp9DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gRHJvcCB0 YWJsZSBpZiBpbiBkYXRhYmFzZQ0KZnVuY3Rpb24gc21kX2ZlYXR1cmVkX3RhYmxlX3JlbW92 ZSgpIHsNCgkkcmV0ID0gJyc7DQoJJHNxbCA9IGFycmF5KCk7DQoJJEdMT0JBTFNbJ3R4cF9l cnJfY291bnQnXSA9IDA7DQoJaWYgKHNtZF9mZWF0dXJlZF90YWJsZV9leGlzdCgpKSB7DQoJ CSRzcWxbXSA9ICJEUk9QIFRBQkxFIElGIEVYSVNUUyAiIC5QRlguU01EX0ZFQVQuICI7ICI7 DQoJCWlmKGdwcygnZGVidWcnKSkgew0KCQkJZG1wKCRzcWwpOw0KCQl9DQoJCWZvcmVhY2gg KCRzcWwgYXMgJHFyeSkgew0KCQkJJHJldCA9IHNhZmVfcXVlcnkoJHFyeSk7DQoJCQlpZiAo JHJldD09PWZhbHNlKSB7DQoJCQkJJEdMT0JBTFNbJ3R4cF9lcnJfY291bnQnXSsrOw0KCQkJ CWVjaG8gIjxiPiIuJEdMT0JBTFNbJ3R4cF9lcnJfY291bnQnXS4iLjwvYj4gIi5teXNxbF9l cnJvcigpLiI8YnIgLz5cbiI7DQoJCQkJZWNobyAiPCEtLVxuICRxcnkgXG4tLT5cbiI7DQoJ CQl9DQoJCX0NCgl9DQoJaWYgKCRHTE9CQUxTWyd0eHBfZXJyX2NvdW50J10gPT0gMCkgew0K CQkkbWVzc2FnZSA9IHNtZF9mZWF0dXJlZF9nVHh0KCd0YmxfcmVtb3ZlZCcpOw0KCX0gZWxz ZSB7DQoJCSRtZXNzYWdlID0gc21kX2ZlYXR1cmVkX2dUeHQoJ3RibF9ub3RfcmVtb3ZlZCcp Ow0KCQlzbWRfZmVhdHVyZWRfbGlzdCgkbWVzc2FnZSk7DQoJfQ0KfQ0KDQovLyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIHNtZF9mZWF0dXJlZF90YWJsZV9leGlzdCgk YWxsPScnKSB7DQoJaWYgKCRhbGwpIHsNCgkJJHRibHMgPSBhcnJheShTTURfRkVBVCA9PiA2 KTsNCgkJJG91dCA9IGNvdW50KCR0YmxzKTsNCgkJZm9yZWFjaCAoJHRibHMgYXMgJHRibCA9 PiAkY29scykgew0KCQkJaWYgKGdwcygnZGVidWcnKSkgew0KCQkJCWVjaG8gIisrIFRBQkxF ICIuJHRibC4iIEhBUyAiLmNvdW50KEBzYWZlX3Nob3coJ2NvbHVtbnMnLCAkdGJsKSkuIiBD T0xVTU5TOyBSRVFVSVJFUyAiLiRjb2xzLiIgKysiLmJyOw0KCQkJfQ0KCQkJaWYgKGNvdW50 KEBzYWZlX3Nob3coJ2NvbHVtbnMnLCAkdGJsKSkgPT0gJGNvbHMpIHsNCgkJCQkkb3V0LS07 DQoJCQl9DQoJCX0NCgkJcmV0dXJuICgkb3V0PT09MCkgPyAxIDogMDsNCgl9IGVsc2Ugew0K CQlpZiAoZ3BzKCdkZWJ1ZycpKSB7DQoJCQllY2hvICIrKyBUQUJMRSAiLlNNRF9GRUFULiIg SEFTICIuY291bnQoQHNhZmVfc2hvdygnY29sdW1ucycsIFNNRF9GRUFUKSkuIiBDT0xVTU5T OyI7DQoJCX0NCgkJcmV0dXJuKEBzYWZlX3Nob3coJ2NvbHVtbnMnLCBTTURfRkVBVCkpOw0K CX0NCn0NCg0KLy8gKioqKioqKioqKioqKioqKg0KLy8gUFVCTElDIFNJREUgVEFHUw0KLy8g KioqKioqKioqKioqKioqKg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlv biBzbWRfZmVhdHVyZWQoJGF0dHMsICR0aGluZykgew0KCWdsb2JhbCAkc21kX2ZlYXR1cmVk X2luZm8sICRzbWRfcHJpb3JfZmVhdHVyZWQsICRwcmVmczsNCg0KCWV4dHJhY3QobEF0dHMo YXJyYXkoDQoJCSdsYWJlbCcgICAgPT4gJycsDQoJCSd1bmxhYmVsJyAgPT4gJ0ZlYXR1cmVk JywNCgkJJ2xhYmVsdGFnJyA9PiAnJywNCgkJJ3RpbWUnICAgICA9PiAncGFzdCcsDQoJCSdz dGF0dXMnICAgPT4gJzQsNScsDQoJCSdzZWN0aW9uJyAgPT4gJycsDQoJCSdoaXN0b3J5JyAg PT4gJzEnLA0KCQknbGltaXQnICAgID0+ICcxMCcsDQoJCSdzb3J0JyAgICAgPT4gJycsDQoJ CSdmb3JtJyAgICAgPT4gJycsDQoJCSd3cmFwdGFnJyAgPT4gJycsDQoJCSdicmVhaycgICAg PT4gJycsDQoJCSdjbGFzcycgICAgPT4gJycsDQoJCSdodG1sX2lkJyAgPT4gJycsDQoJKSwk YXR0cykpOw0KDQoJaWYgKGlzc2V0KCRhdHRzWydsYWJlbCddKSkgew0KCQlpZiAoJGxhYmVs KSB7DQoJCQkkd2hlcmUgPSAiQklOQVJZIGxhYmVsIFJFR0VYUCAnIi4kYXR0c1snbGFiZWwn XS4iJyI7DQoJCX0gZWxzZSB7DQoJCQkkd2hlcmUgPSAibGFiZWw9JyciOw0KCQl9DQoJCXVu c2V0KCRhdHRzWydsYWJlbCddKTsNCgl9IGVsc2Ugew0KCQkvLyBJZiBubyBsYWJlbCBhdHRy aWJ1dGUgaGFzIGJlZW4gZ2l2ZW4sIHRyZWF0IHRoaXMgYXMgJ2FsbCBmZWF0dXJlZCBpdGVt cycNCgkJJGlkcyA9IHNhZmVfY29sdW1uKCdmZWF0X2lkJywgU01EX0ZFQVQsICcxPTEnKTsN CgkJJGlkcyA9IGpvaW4oIicsJyIsIGRvU2xhc2goJGlkcykpOw0KCQkkd2hlcmUgPSAic21k ZmVhdC5mZWF0X2lkIElOICgnJGlkcycpIjsNCgl9DQoNCgkvLyBFeGNsdWRlIHByZXZpb3Vz bHkgc2VlbiBhcnRpY2xlcw0KCWlmICgkaGlzdG9yeSAmJiAhZW1wdHkoJHNtZF9wcmlvcl9m ZWF0dXJlZCkpIHsNCgkJJHdoZXJlIC49ICcgQU5EIHNtZGZlYXQuZmVhdF9pZCBOT1QgSU4o JyAuIGpvaW4oJywnLCAkc21kX3ByaW9yX2ZlYXR1cmVkKSAuICcpJzsNCgl9DQoNCgkvLyBO T1RFOiB0aW1lIGlzIGxlZnQgaW4gdGhlICRhdHRzIGFycmF5IGFuZCBwYXNzZWQgdG8gYXJ0 aWNsZV9jdXN0b20uIE90aGVyd2lzZSB0aGUgZGVmYXVsdA0KCS8vIHRpbWUgdmFsdWUgKHBh c3QpIHdpbGwgYmUgdXNlZA0KCWlmICgkdGltZSkgew0KCQlzd2l0Y2ggKCR0aW1lKSB7DQoJ CQljYXNlICdhbnknOg0KCQkJCWJyZWFrOw0KCQkJY2FzZSAnZnV0dXJlJzoNCgkJCQkkd2hl cmUgLj0gIiBBTkQgUG9zdGVkID4gbm93KCkiOw0KCQkJCWJyZWFrOw0KCQkJZGVmYXVsdDoN CgkJCQkkd2hlcmUgLj0gIiBBTkQgUG9zdGVkIDw9IG5vdygpIjsNCgkJfQ0KCQlpZiAoISRw cmVmc1sncHVibGlzaF9leHBpcmVkX2FydGljbGVzJ10pIHsNCgkJCSR3aGVyZSAuPSAiIEFO RCAobm93KCkgPD0gRXhwaXJlcyBPUiBFeHBpcmVzID0gIi5OVUxMREFURVRJTUUuIikiOw0K CQl9DQoJfQ0KDQoJaWYgKCRzdGF0dXMpIHsNCgkJJHdoZXJlIC49ICcgQU5EIFN0YXR1cyBJ TiAoJy5qb2luKCcsJywgZG9fbGlzdCgkc3RhdHVzKSkuJyknOw0KCQl1bnNldCgkYXR0c1sn c3RhdHVzJ10pOw0KCX0NCg0KCWlmICgkc2VjdGlvbikgew0KCQkkd2hlcmUgLj0gIiBBTkQg U2VjdGlvbiBJTiAoJyIuam9pbigiJywnIiwgZG9fbGlzdCgkc2VjdGlvbikpLiInKSI7DQoJ CXVuc2V0KCRhdHRzWydzZWN0aW9uJ10pOw0KCX0NCg0KCWlmICgkc29ydCkgew0KCQkkd2hl cmUgLj0nIE9SREVSIEJZICcuJHNvcnQ7DQoJCXVuc2V0KCRhdHRzWydzb3J0J10pOw0KCX0N Cg0KCS8vIExlYXZlIGxpbWl0IGluIHRoZSAkYXR0cyBhcnJheSB0b28gc28gaXQgZG9lc24n dCBkZWZhdWx0IHRvIGFydGljbGVfY3VzdG9tJ3MgdmFsdWUgaWYgc2V0IGhlcmUNCglpZiAo JGxpbWl0KSB7DQoJCSR3aGVyZSAuPScgTElNSVQgJy4kbGltaXQ7DQoJfQ0KDQoJLy8gRG9u J3QgcGFzcyB0aGUgcmVtYWluaW5nIGF0dHJpYnV0ZXMgd2UndmUgYWxyZWFkeSBoYW5kbGVk IG9udG8gdGhlIGFydGljbGVfY3VzdG9tIHRhZw0KCXVuc2V0KA0KCQkkYXR0c1snbGFiZWwn XSwNCgkJJGF0dHNbJ3VubGFiZWwnXSwNCgkJJGF0dHNbJ2xhYmVsdGFnJ10sDQoJCSRhdHRz Wyd3cmFwdGFnJ10sDQoJCSRhdHRzWydicmVhayddLA0KCQkkYXR0c1snY2xhc3MnXSwNCgkJ JGF0dHNbJ2hpc3RvcnknXSwNCgkJJGF0dHNbJ2h0bWxfaWQnXQ0KCSk7DQoNCgkkcnMgPSBn ZXRSb3dzKCdTRUxFQ1QgKiwgdW5peF90aW1lc3RhbXAoUG9zdGVkKSBhcyB1UG9zdGVkLCB1 bml4X3RpbWVzdGFtcChFeHBpcmVzKSBhcyB1RXhwaXJlcywgdW5peF90aW1lc3RhbXAoTGFz dE1vZCkgYXMgdUxhc3RNb2QgRlJPTSAnLlBGWC4ndGV4dHBhdHRlcm4gQVMgdHhwIExFRlQg Sk9JTiAnLlBGWC5TTURfRkVBVC4nIEFTIHNtZGZlYXQgT04gdHhwLklEPXNtZGZlYXQuZmVh dF9pZCBXSEVSRSAnLiR3aGVyZSk7DQoNCgkkb3V0ID0gYXJyYXkoKTsNCglpZiAoJHJzKSB7 DQoJCWZvcmVhY2ggKCRycyBhcyAkcm93KSB7DQoJCQkkc21kX2ZlYXR1cmVkX2luZm9bJ2xh YmVsJ10gPSAkcm93WydsYWJlbCddOw0KCQkJJHNtZF9mZWF0dXJlZF9pbmZvWyd0aXRsZSdd ID0gJHJvd1snZmVhdF90aXRsZV9odG1sJ107DQoJCQkkc21kX2ZlYXR1cmVkX2luZm9bJ2Rl c2NyaXB0aW9uJ10gPSAkcm93WydkZXNjX2h0bWwnXTsNCgkJCSRhdHRzWydpZCddID0gJHJv d1snSUQnXTsNCg0KCQkJJGFydG91dCA9IGFydGljbGVfY3VzdG9tKCRhdHRzLCAkdGhpbmcp Ow0KDQoJCQlpZiAoJGFydG91dCkgew0KCQkJCSRzbWRfcHJpb3JfZmVhdHVyZWRbXSA9ICRy b3dbJ0lEJ107DQoJCQkJJG91dFtdID0gJGFydG91dDsNCgkJCX0NCgkJfQ0KCX0NCglpZiAo JG91dCkgew0KCQlyZXR1cm4gKCgkbGFiZWx0YWcpID8gZG9MYWJlbCggKCAoJGxhYmVsID09 ICcnKSA/ICR1bmxhYmVsIDogJGxhYmVsKSwgJGxhYmVsdGFnICkgOiAnJykNCgkJCS5kb1dy YXAoJG91dCwgJHdyYXB0YWcsICRicmVhaywgJGNsYXNzLCAnJywgJycsICcnLCAkaHRtbF9p ZCk7DQoJfQ0KCXJldHVybiAnJzsNCn0NCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQpmdW5jdGlvbiBzbWRfdW5mZWF0dXJlZCgkYXR0cywgJHRoaW5nKSB7DQoJZ2xvYmFsICRz bWRfcHJpb3JfZmVhdHVyZWQsICR0aGlzcGFnZSwgJHByZXRleHQ7DQoNCgkkdGltZSA9IChp c3NldCgkYXR0c1sndGltZSddKSkgPyAkYXR0c1sndGltZSddIDogJyc7DQoJJHN0YXR1cyA9 IChpc3NldCgkYXR0c1snc3RhdHVzJ10pKSA/ICRhdHRzWydzdGF0dXMnXSA6IDQ7DQoJJHNl Y3Rpb24gPSAoaXNzZXQoJGF0dHNbJ3NlY3Rpb24nXSkpID8gJGF0dHNbJ3NlY3Rpb24nXSA6 ICcnOw0KCSRoaXN0b3J5ID0gKGlzc2V0KCRhdHRzWydoaXN0b3J5J10pKSA/ICRhdHRzWydo aXN0b3J5J10gOiAnMSc7DQoJdW5zZXQoJGF0dHNbJ2hpc3RvcnknXSk7DQoNCgkkd2hlcmUg PSAiMT0xIjsNCg0KCWlmICgkdGltZSkgew0KCQlzd2l0Y2ggKCR0aW1lKSB7DQoJCQljYXNl ICdhbnknOg0KCQkJCWJyZWFrOw0KCQkJY2FzZSAnZnV0dXJlJzoNCgkJCQkkd2hlcmUgLj0g IiBBTkQgUG9zdGVkID4gbm93KCkiOw0KCQkJCWJyZWFrOw0KCQkJZGVmYXVsdDoNCgkJCQkk d2hlcmUgLj0gIiBBTkQgUG9zdGVkIDw9IG5vdygpIjsNCgkJfQ0KCQlpZiAoISRwcmVmc1sn cHVibGlzaF9leHBpcmVkX2FydGljbGVzJ10pIHsNCgkJCSR3aGVyZSAuPSAiIEFORCAobm93 KCkgPD0gRXhwaXJlcyBPUiBFeHBpcmVzID0gIi5OVUxMREFURVRJTUUuIikiOw0KCQl9DQoJ fQ0KDQoJaWYgKCRzdGF0dXMpIHsNCgkJJHdoZXJlIC49ICcgQU5EIFN0YXR1cyBJTiAoJy5q b2luKCcsJywgZG9fbGlzdCgkc3RhdHVzKSkuJyknOw0KCX0NCg0KCWlmICgkc2VjdGlvbikg ew0KCQkkd2hlcmUgLj0gIiBBTkQgU2VjdGlvbiBJTiAoJyIuam9pbigiJywnIiwgZG9fbGlz dCgkc2VjdGlvbikpLiInKSI7DQoJfQ0KDQoJLy8gRXhjbHVkZSBwcmV2aW91c2x5IHNlZW4g YXJ0aWNsZXMNCglpZiAoJGhpc3RvcnkgJiYgIWVtcHR5KCRzbWRfcHJpb3JfZmVhdHVyZWQp KSB7DQoJCSR3aGVyZSAuPSAnIEFORCBpZCBOT1QgSU4oJyAuIGpvaW4oJywnLCAkc21kX3By aW9yX2ZlYXR1cmVkKSAuICcpJzsNCgl9DQoNCgkkb2Zmc2V0ID0gKGlzc2V0KCRhdHRzWydv ZmZzZXQnXSkpID8gJGF0dHNbJ29mZnNldCddIDogMDsNCg0KCWlmIChpc3NldCgkYXR0c1sn bGltaXQnXSkgJiYgaXNzZXQoJGF0dHNbJ3BhZ2VieSddKSkgew0KCQkkbGltaXQgPSAkYXR0 c1snbGltaXQnXTsNCgkJJHBhZ2VieSA9ICRhdHRzWydwYWdlYnknXTsNCgkJJHBhZ2VieSA9 ICgkcGFnZWJ5ID09ICdsaW1pdCcpID8gJGxpbWl0IDogJHBhZ2VieTsNCgkJJHBnID0gZ3Bz KCdwZycpOw0KDQoJCSRncmFuZF90b3RhbCA9IHNhZmVfY291bnQoJ3RleHRwYXR0ZXJuJywk d2hlcmUpOw0KCQkkdG90YWwgPSAkZ3JhbmRfdG90YWwgLSAkb2Zmc2V0Ow0KCQkkbnVtUGFn ZXMgPSBjZWlsKCR0b3RhbC8kcGFnZWJ5KTsNCgkJJHBnID0gKCEkcGcpID8gMSA6ICRwZzsN CgkJJHBnb2Zmc2V0ID0gJG9mZnNldCArICgoJHBnIC0gMSkgKiAkcGFnZWJ5KTsNCgkJLy8g c2VuZCBwYWdpbmcgaW5mbyB0byB0eHA6bmV3ZXIgYW5kIHR4cDpvbGRlcg0KCQkkcGFnZW91 dFsncGcnXSAgICAgICAgICA9ICRwZzsNCgkJJHBhZ2VvdXRbJ251bVBhZ2VzJ10gICAgPSAk bnVtUGFnZXM7DQoJCSRwYWdlb3V0WydzJ10gICAgICAgICAgID0gJHByZXRleHRbJ3MnXTsN CgkJJHBhZ2VvdXRbJ2MnXSAgICAgICAgICAgPSAkcHJldGV4dFsnYyddOw0KCQkkcGFnZW91 dFsnY29udGV4dCddICAgICA9ICdhcnRpY2xlJzsNCgkJJHBhZ2VvdXRbJ2dyYW5kX3RvdGFs J10gPSAkZ3JhbmRfdG90YWw7DQoJCSRwYWdlb3V0Wyd0b3RhbCddICAgICAgID0gJHRvdGFs Ow0KDQoJCWlmIChlbXB0eSgkdGhpc3BhZ2UpKSB7DQoJCQkkdGhpc3BhZ2UgPSAkcGFnZW91 dDsNCgkJfQ0KCX0gZWxzZSB7DQoJCSRwZ29mZnNldCA9ICRvZmZzZXQ7DQoJfQ0KDQoJJHJz ID0gc2FmZV9jb2x1bW4oJ0lEJywgJ3RleHRwYXR0ZXJuJywgJHdoZXJlKTsNCglpZiAoJHJz KSB7DQoJCSRhdHRzWydvZmZzZXQnXSA9ICRwZ29mZnNldDsNCgkJJGF0dHNbJ2lkJ10gPSBq b2luKCcsJywgJHJzKTsNCgkJJG91dCA9IGFydGljbGVfY3VzdG9tKCRhdHRzLCAkdGhpbmcp Ow0KCQlyZXR1cm4gJG91dDsNCgl9DQoJcmV0dXJuICcnOw0KfQ0KDQovLyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIHNtZF9mZWF0dXJlZF9pbmZvKCRhdHRzKSB7DQoJ Z2xvYmFsICRzbWRfZmVhdHVyZWRfaW5mbzsNCg0KCWV4dHJhY3QobEF0dHMoYXJyYXkoDQoJ CSdpdGVtJyA9PiAnJywNCgkpLCRhdHRzKSk7DQoNCglyZXR1cm4gKGlzc2V0KCRzbWRfZmVh dHVyZWRfaW5mb1skaXRlbV0pID8gJHNtZF9mZWF0dXJlZF9pbmZvWyRpdGVtXSA6ICcnKTsN Cn0NCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBzbWRfaWZfZmVh dHVyZWQoJGF0dHMsICR0aGluZykgew0KCWdsb2JhbCAkc21kX2ZlYXR1cmVkX2luZm8sICR0 aGlzYXJ0aWNsZTsNCg0KCWV4dHJhY3QobEF0dHMoYXJyYXkoDQoJCSdpZCcgPT4gJycsDQoJ CSdsYWJlbCcgPT4gJycsDQoJKSwkYXR0cykpOw0KDQoJaWYgKCRpZCkgew0KCQkkaWQgPSBq b2luKCInLCciLCBkb19saXN0KGRvU2xhc2goJGlkKSkpOw0KCX0NCg0KCWlmICghJGlkICYm ICR0aGlzYXJ0aWNsZSkgew0KCQkkaWQgPSAkdGhpc2FydGljbGVbJ3RoaXNpZCddOw0KCX0N Cg0KCSR3aGVyZVtdID0gImZlYXRfaWQgSU4gKCciLiRpZC4iJykiOw0KDQoJaWYgKGlzc2V0 KCRhdHRzWydsYWJlbCddKSkgew0KCQkkbGFiZWwgPSBleHBsb2RlKCcsJywgZG9TbGFzaCgk bGFiZWwpKTsNCgkJJGxibHdoZXJlID0gYXJyYXkoKTsNCgkJZm9yZWFjaCAoJGxhYmVsIGFz ICRsYmwpIHsNCgkJCSRsYmx3aGVyZVtdID0gIiciLnRyaW0oJGxibCkuIiciOw0KCQl9DQoJ CWlmICgkbGJsd2hlcmUpIHsNCgkJCSR3aGVyZVtdID0gJyggQklOQVJZIGxhYmVsIElOICgn IC4gam9pbignLCcsICRsYmx3aGVyZSkgLiAnKSApJzsNCgkJfQ0KCX0NCg0KCSRyZXQgPSBz YWZlX3JvdygnZmVhdF9pZCcsIFNNRF9GRUFULCBqb2luKCcgQU5EJywgJHdoZXJlKSk7DQoN CglyZXR1cm4gcGFyc2UoRXZhbEVsc2UoJHRoaW5nLCAkcmV0KSk7DQp9DQoNCi8vIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gUGx1Z2luLXNwZWNpZmljIHJlcGxhY2VtZW50IHN0 cmluZ3MgLSBsb2NhbGlzZSBhcyByZXF1aXJlZA0KLy8gVE9ETzogbWFrZSB0aGVzZSBpbnRv IGEgdGV4dHBhY2sgd2hlbiBwbHVnaW4gY29tcG9zZXIgc3VwcG9ydHMgdGhlbQ0KZnVuY3Rp b24gc21kX2ZlYXR1cmVkX2dUeHQoJHdoYXQsICRhdHRzID0gYXJyYXkoKSkgew0KCSRsYW5n ID0gYXJyYXkoDQoJCSdieV9sYWJlbCcgPT4gJ0J5IGxhYmVsOiAnLA0KCQknYnlfbmFtZScg PT4gJ0J5IG5hbWU6ICcsDQoJCSdjb250cm9sX3BhbmVsJyA9PiAnQ29udHJvbCBwYW5lbCcs DQoJCSdtYW5hZ2VfbGJsJyA9PiAnQ2xpY2sgdG8gc2VsZWN0IGZlYXR1cmVkIGFydGljbGVz LCB3aGljaCB3aWxsIHRoZW4gYmUgZGlzcGxheWVkIDxzcGFuIGNsYXNzPSJzbWRfZmVhdHVy ZWQiPjxhIGhyZWY9IiMiIHN0eWxlPSJtYXJnaW46MCA4cHg7Ij5IaWdobGlnaHRlZDwvYT48 L3NwYW4+LicsDQoJCSdwcmVmcycgPT4gJ1ByZWZlcmVuY2VzJywNCgkJJ3ByZWZfYm94c2l6 ZScgPT4gJ0JveCBzaXplOiAnLA0KCQkncHJlZl9ib3hzaXplYnknID0+ICcgeCAnLA0KCQkn cHJlZl9kaXNwbGF5JyA9PiAnRGlzcGxheTogJywNCgkJJ3ByZWZfc29ydCcgPT4gJ1NvcnQg Ynk6ICcsDQoJCSdwcmVmc19zb21lX2V4cGxhaW4nID0+ICdUaGlzIGlzIGVpdGhlciBhIG5l dyBpbnN0YWxsYXRpb24gb3IgYSBkaWZmZXJlbnQgdmVyc2lvbicuYnIuJ29mIHRoZSBwbHVn aW4gdG8gb25lIHlvdSBoYWQgYmVmb3JlLicsDQoJCSdwcmVmc19zb21lX29wdHMnID0+ICdD bGljayAiSW5zdGFsbCB0YWJsZSIgdG8gYWRkIG9yIHVwZGF0ZSB0aGUgdGFibGUnLmJyLids ZWF2aW5nIGFsbCBleGlzdGluZyBkYXRhIHVudG91Y2hlZC4nLA0KCQkncHJlZnNfc29tZV90 YmwnID0+ICdOb3QgYWxsIHRhYmxlIGluZm8gYXZhaWxhYmxlLicsDQoJCSdzYXZlZCcgPT4g J0FydGljbGUgaW5mbyB1cGRhdGVkJywNCgkJJ3NlYXJjaF9saXZlJyA9PiAnQXJ0aWNsZSBs aXZlIHNlYXJjaCcsDQoJCSdzZWFyY2hfc3RhbmRhcmQnID0+ICdBcnRpY2xlIHNlYXJjaCcs DQoJCSd0YWJfbmFtZScgPT4gJ0ZlYXR1cmVkIGFydGljbGVzJywNCgkJJ3RibF9pbnN0YWxs X2xibCcgPT4gJ0luc3RhbGwgdGFibGUnLA0KCQkndGJsX2luc3RhbGxlZCcgPT4gJ1RhYmxl IGluc3RhbGxlZCcsDQoJCSd0Ymxfbm90X2luc3RhbGxlZCcgPT4gJ1RhYmxlIG5vdCBpbnN0 YWxsZWQnLA0KCQkndGJsX3JlbW92ZWQnID0+ICdUYWJsZSByZW1vdmVkJywNCgkJJ3RibF9u b3RfcmVtb3ZlZCcgPT4gJ1RhYmxlIG5vdCByZW1vdmVkJywNCgkJJ3RleHRpbGUnID0+ICdU ZXh0aWxlOiAnLA0KCQkndGV4dGlsZV9kZXNjJyA9PiAnRGVzY3JpcHRpb24nLA0KCQkndGV4 dGlsZV90aXRsZScgPT4gJ1RpdGxlJywNCgkJJ3VuZmVhdHVyZV9jb25maXJtJyA9PiAnQXJl IHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIGFydGljbGUgZnJvbSB0aGUgZmVh dHVyZWQgbGlzdD8nLA0KCQkndW5sYWJlbGxlZCcgPT4gJ1t1bmxhYmVsbGVkXScsDQoJKTsN CglyZXR1cm4gc3RydHIoJGxhbmdbJHdoYXRdLCAkYXR0cyk7DQp9IjtzOjQ6InR5cGUiO3M6 MToiMSI7czo1OiJvcmRlciI7czoxOiI1IjtzOjU6ImZsYWdzIjtzOjE6IjIiO3M6NDoiaGVs cCI7czoyMTk2NToiPGRpdiBpZD0ic21kX2hlbHAiPgoKCTxoMT5zbWRfZmVhdHVyZWQ8L2gx PgoKCTxwPlB1bGwgb25lIG9yIG1vcmUgYXJ0aWNsZXMgb3V0IG9mIHRoZSByZWd1bGFyIGFy dGljbGUgZmxvdyBhbmQgcGltcCB0aGVtICYjODIxMjsgcGVyaGFwcyBvbiBhIHNlY3Rpb24g bGFuZGluZyBwYWdlIG9yIHlvdXIgaG9tZSBwYWdlLjwvcD4KCgk8aDI+RmVhdHVyZXM8L2gy PgoKCTx1bD4KCQk8bGk+T25lLWNsaWNrIHNlbGVjdGlvbiBvZiBhcnRpY2xlcyB0byBmZWF0 dXJlPC9saT4KCQk8bGk+TGFiZWwgeW91ciBmZWF0dXJlZCBhcnRpY2xlcywgYWxsb3dpbmcg eW91IHRvIGdyb3VwIHRoZW0gaW50byBhcmVhcyBsaWtlIEZlYXR1cmVkLCBUZWFzZXJzLCBl dGM8L2xpPgoJCTxsaT5BZGQgYW4gb3B0aW9uYWwgdGl0bGUvZGVzY3JpcHRpb24gdG8gZWFj aCBhcnRpY2xlIHNvIHlvdSBjYW4gdXNlIHRoYXQgYXMgY29weSwgaW5zdGVhZCBvZiBzb21l dGhpbmcgZnJvbSB0aGUgYXJ0aWNsZSBpdHNlbGYgKHN1cHBvcnRzIFRleHRpbGUgYW5kIHNv bWUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gdGFncyk8L2xpPgoJCTxsaT5TZWFy Y2ggeW91ciBmZWF0dXJlZCBhcnRpY2xlcyBieSBuYW1lIG9yIGxhYmVsOyBmaWx0ZXJpbmcg aW4gcmVhbC10aW1lIGlmIHlvdSB3aXNoPC9saT4KCQk8bGk+SGlkZGVuIHByZWYgYWxsb3dz IHByZS1maWx0ZXJpbmcgYnkgYW4gYWRtaW5pc3RyYXRvciBzbyBvbmx5IGFydGljbGVzIGZy b20gY2VydGFpbiBzZWN0aW9ucyBhcmUgYXZhaWxhYmxlIGZvciBwaW1wYWdlPC9saT4KCQk8 bGk+RGlzcGxheSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBmZWF0dXJlZCBhcnRpY2xlcyB1c2lu ZyByZWd1bGFyIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGFydGljbGUgdGFnczwv bGk+CgkJPGxpPktlZXBzIHRyYWNrIG9mIHdoaWNoIGFydGljbGVzIGhhdmUgYmVlbiBzZWVu IGFscmVhZHkgb24gdGhlIHBhZ2Ugc28gbGF0ZXIgZmVhdHVyZWQgKG9yIHVuZmVhdHVyZWQp IGFydGljbGVzIGFyZW4mIzgyMTc7dCBkdXBsaWNhdGVkPC9saT4KCTwvdWw+CgoJPGgyPkF1 dGhvciAvIENyZWRpdHM8L2gyPgoKCTxwPjxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNv bS9jb250YWN0Ij5TdGVmIERhd3NvbjwvYT48L3A+CgoJPGgyPkluc3RhbGxhdGlvbiAvIFVu aW5zdGFsbGF0aW9uPC9oMj4KCgk8cCBjbGFzcz0iaW1wb3J0YW50Ij5SZXF1aXJlcyBUZXh0 cGF0dGVybiA0LjIuMCsgKDQuMy4wKyByZWNvbW1lbmRlZCk8L3A+CgoJPHA+RG93bmxvYWQg dGhlIHBsdWdpbiBmcm9tIGVpdGhlciA8YSBocmVmPSJodHRwOi8vdGV4dHBhdHRlcm4ub3Jn L3BsdWdpbnMvMTE3NC9zbWRfZmVhdHVyZWQiPnRleHRwYXR0ZXJuLm9yZzwvYT4sIG9yIHRo ZSA8YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vc3ciPnNvZnR3YXJlIHBhZ2U8L2E+ LCBwYXN0ZSB0aGUgY29kZSBpbnRvIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFu PiBBZG1pbiAtJmd0OyBQbHVnaW5zIHBhbmUsIGluc3RhbGwgYW5kIGVuYWJsZSB0aGUgcGx1 Z2luLiBWaXNpdCB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92 aWV3dG9waWMucGhwP2lkPTMzOTM4Ij5mb3J1bSB0aHJlYWQ8L2E+IGZvciBtb3JlIGluZm8g b3IgdG8gcmVwb3J0IG9uIHRoZSBzdWNjZXNzIG9yIG90aGVyd2lzZSBvZiB0aGUgcGx1Z2lu LjwvcD4KCgk8cD5XaGVuIHlvdSBpbnN0YWxsIHRoZSBwbHVnaW4sIHRoZSBuZWNlc3Nhcnkg dGFibGUgaXMgYXV0b21hdGljYWxseSBpbnN0YWxsZWQgZm9yIHlvdS4gVGhlcmUmIzgyMTc7 cyBjdXJyZW50bHkgbm8gZmFjaWxpdHkgZm9yIHJlbW92aW5nIGl0IGR1cmluZyBwbHVnaW4g b3BlcmF0aW9uLCBidXQgaXQgd2lsbCBiZSBkZWxldGVkIGlmIHRoZSBwbHVnaW4gaXMgZGVs ZXRlZCBmcm9tIHlvdXIgc3lzdGVtLjwvcD4KCgk8cD5UbyB1bmluc3RhbGwsIHNpbXBseSBk ZWxldGUgdGhlIHBsdWdpbiBmcm9tIHRoZSA8ZW0+QWRtaW4tJmd0O1BsdWdpbnM8L2VtPiBw YWdlLjwvcD4KCgk8cCBjbGFzcz0iaW1wb3J0YW50Ij5VbmRlciA8c3BhbiBjbGFzcz0iY2Fw cyI+VFhQPC9zcGFuPiA0LjIuMCwgaWYgeW91IGNoYW5nZSBhbnkgb2YgdGhlIHByZWZzIGFu ZCBzYXZlIHRoZW0sIHlvdSBuZWVkIHRvIHJlbG9hZCB0aGUgcGx1Z2luIHRhYiAoanVzdCBj bGljayBpdCkgdG8gYWN0dWFsbHkgc2VlIHRoZW0gdGFrZSBlZmZlY3QuIFRoaXMgc2l0dWF0 aW9uIGlzIGZpeGVkIHVuZGVyIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IDQuMy4w LjwvcD4KCgk8aDI+Q29uZmlndXJpbmcgZmVhdHVyZWQgYXJ0aWNsZXM8L2gyPgoKCTxwPlZp c2l0IHRoZSA8ZW0+Q29udGVudC0mZ3Q7RmVhdHVyZWQgYXJ0aWNsZXM8L2VtPiB0YWIuIEEg bGlzdCBvZiBhbGwgYXJ0aWNsZXMgKGZyb20gdGhlIGFkbWluLXNlbGVjdGVkIHNlY3Rpb25z KSBhcmUgcHJlc2VudGVkIGluIGEgZ3JpZC48L3A+CgoJPGgzPlRvIGZlYXR1cmUgYW4gYXJ0 aWNsZTwvaDM+CgoJPHA+Q2xpY2sgaXRzIG5hbWUuIEl0IHdpbGwgYmUgaGlnaGxpZ2h0ZWQg YW5kIGFuIDxjb2RlPltFZGl0XTwvY29kZT4gYnV0dG9uIGFwcGVhcnMgYmVzaWRlIGl0LiBJ ZiB5b3UgY2hvb3NlIG5vdCB0byBlZGl0IHRoZSBhcnRpY2xlIGluZm9ybWF0aW9uLCBpdCB3 aWxsIGJlIGZlYXR1cmVkIGJ1dCB1bmxhYmVsbGVkLjwvcD4KCgk8cD5DbGlja2luZyA8Y29k ZT5bRWRpdF08L2NvZGU+IHdpbGwgZGlzcGxheSB0aHJlZSBpbnB1dCBib3hlczo8L3A+CgoJ PHVsPgoJCTxsaT48c3Ryb25nPkxhYmVsPC9zdHJvbmc+IDogYWxsb3dzIHlvdSB0byBsYWJl bCAoZ3JvdXApIHRoZSBhcnRpY2xlIHdpdGggb3RoZXJzIG9mIGEgc2ltaWxhciBmZWF0dXJl ZCBzdGF0dXMuIEZvciBleGFtcGxlLCB5b3UgY291bGQgbGFiZWwgc29tZSBhcnRpY2xlcyB0 byBnbyBpbiBhICYjODIxNjt0ZWFzZXJzJiM4MjE3OyBibG9jayBvbiB5b3VyIGhvbWUgcGFn ZSBieSBsYWJlbGxpbmcgZWFjaCBwb3RlbnRpYWwgYXJ0aWNsZSB3aXRoIDxjb2RlPlRlYXNl cjwvY29kZT4uIEJlIGNhcmVmdWw6IDxzdHJvbmc+bGFiZWxzIGFyZSBjYXNlIHNlbnNpdGl2 ZTwvc3Ryb25nPi4gVG8gaGVscCwgeW91IG1heSBjaG9vc2UgYSBsYWJlbCBmcm9tIHRoZSBk cm9wZG93biBsaXN0IG9mIGFsbCBjdXJyZW50bHkgZGVmaW5lZCBsYWJlbHM8L2xpPgoJCTxs aT48c3Ryb25nPlRpdGxlPC9zdHJvbmc+IDogYWxsb3dzIHlvdSB0byBzdG9yZSBzb21lIFRl eHRpbGUtYXdhcmUgdGl0bGUgcmVsYXRlZCB0byB0aGUgYXJ0aWNsZS4gVGhpcyBpcyBkaWZm ZXJlbnQgZnJvbSB0aGUgYXJ0aWNsZSYjODIxNztzIGFjdHVhbCBUaXRsZSBhbmQgY2FuIGJl IHVzZWQgZm9yIGFueSBwdXJwb3NlIHlvdSBzZWUgZml0PC9saT4KCQk8bGk+PHN0cm9uZz5E ZXNjcmlwdGlvbjwvc3Ryb25nPiA6IGFsbG93cyB5b3UgdG8gc3RvcmUgc29tZSBUZXh0aWxl LWF3YXJlIHN1cHBvcnRpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGFydGljbGUuIFRoaXMg Y291bGQgc2ltcGx5IGJlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gZm9yIHlvdXIgb3duIHVz ZSwgb3Igc29tZSBjb3B5IHRoYXQgeW91IG1heSB3aXNoIHRvIGRpc3BsYXkgaW4geW91ciB0 ZWFzZXJzIGJsb2NrIHRvIGVudGljZSBwZW9wbGUgdG8gcmVhZCB0aGUgYXJ0aWNsZS4gSXQg Y2FuIGJlIGFzIHNpbXBsZSBvciBhcyBjb21wbGV4IGFzIHlvdSBsaWtlIGFuZCBjYW4gY29u dGFpbiA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiB0YWdzIChpZiB0aGV5IG1ha2Ug c2Vuc2UgdG8gdXNlIGF0IHRoYXQgcG9pbnQgJiM4MjEyOyBhcnRpY2xlIHRhZ3MgY2Fubm90 IGJlIHVzZWQsIGZvciBleGFtcGxlLCBidXQgPGNvZGU+Jmx0O3R4cDpzaXRlX3VybCAvJmd0 OzwvY29kZT4gY2FuKTwvbGk+Cgk8L3VsPgoKCTxwPldoZW4geW91JiM4MjE3O3JlIGhhcHB5 IHdpdGggeW91ciBjYXRlZ29yaXNhdGlvbiBhbmQvb3IgZGVzY3JpcHRpb24gdGV4dCwgaGl0 IFNhdmUgdG8gc3RvcmUgaXQuIFlvdSBjYW4gZWRpdCB0aGUgaW5mb3JtYXRpb24gYXQgYW55 IHRpbWUgYnkgY2xpY2tpbmcgdGhlIGFwcHJvcHJpYXRlIDxjb2RlPltFZGl0XTwvY29kZT4g YnV0dG9uIGZyb20gdGhlIGZlYXR1cmVkIGFydGljbGUgbGlzdC48L3A+CgoJPGgzPlRvIHVu ZmVhdHVyZSBhbiBhcnRpY2xlPC9oMz4KCgk8cD5DbGljayBpdHMgbmFtZSBhZ2Fpbi4gV2hl biB5b3UgY29uZmlybSB0aGF0IHlvdSBhcmUgc3VyZSwgdGhlIGFydGljbGUmIzgyMTc7cyBs YWJlbCBhbmQgZGVzY3JpcHRpb24gYXJlIGRlbGV0ZWQsIHNvIGJlIHN1cmUgeW91IHJlYWxs eSB3YW50IHRvIHJlbW92ZSB0aGVtLCBvciBoYXZlIGJhY2tlZCB0aGUgaW5mb3JtYXRpb24g dXAgc29tZXdoZXJlLjwvcD4KCgk8aDM+RmluZGluZyBhcnRpY2xlcyB0byBmZWF0dXJlPC9o Mz4KCgk8cD5XaXRoIGxhcmdlIGFydGljbGUgbGlzdHMgaXQgY2FuIGJlY29tZSBkaWZmaWN1 bHQgdG8gZmluZCB0aGUgb25lIHlvdSB3YW50LiBBYm92ZSB0aGUgZ3JpZCBpcyBhIGNvbnRy b2wgcGFuZWwuIENsaWNrIGl0IHRvIHJldmVhbCB0aGUgcGx1Z2luIG9wdGlvbnMuICBPbiB0 aGUgbGVmdCBpcyB0aGUgQXJ0aWNsZSBzZWFyY2ggYXJlYSBhbmQgb24gdGhlIHJpZ2h0IGFy ZSB0aGUgcGx1Z2luIHByZWZlcmVuY2VzLiBJZiB5b3UgYXJlIGluIDxlbT5EaXNwbGF5OiBB bGw8L2VtPiBtb2RlLCBzaW1wbHkgc3RhcnQgdHlwaW5nIGluIHRoZSA8ZW0+QnkgbmFtZTwv ZW0+IGJveCBhbmQgeW91ciBhcnRpY2xlIGxpc3Qgd2lsbCBiZSByZWR1Y2VkIGFzIHlvdSB0 eXBlIHRvIG9ubHkgdGhvc2UgdGhhdCBtYXRjaC4gVHlwZSBtdWx0aXBsZSB3b3JkcyB0byBm aW5kIGFydGljbGVzIHRoYXQgY29udGFpbiBhbnkgb2YgdGhlIGdpdmVuIHdvcmRzLiBUbyBx dWlja2x5IGNsZWFyIHRoZSBib3gsIGhpdCB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkVTQzwv c3Bhbj5hcGUga2V5LjwvcD4KCgk8cD5BbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHVzZSB0aGUg c2VsZWN0IGxpc3QgdG8gY2hvb3NlIGFsbCBhcnRpY2xlcyB3aXRoIGEgcGFydGljdWxhciBs YWJlbC4gVGhlIGVtcHR5IGVudHJ5IGF0IHRoZSB0b3Agb2YgdGhlIGxpc3QgbWVhbnMgJiM4 MjIwO2FsbCBhcnRpY2xlcyYjODIyMTsuIElmIHlvdSBoYXZlIGZlYXR1cmVkIGFuIGFydGlj bGUgYnV0IGRvbiYjODIxNzt0IHN1cHBseSBhIGxhYmVsIHlvdSBjYW4gZmlsdGVyIGl0IGJ5 IGNob29zaW5nIHRoZSA8Y29kZT5bdW5sYWJlbGxlZF08L2NvZGU+IGl0ZW0gZnJvbSB0aGUg bGlzdC4gSWYgeW91IGhhdmUgbGFiZWxsZWQgYW55IGFydGljbGVzLCBlYWNoIGxhYmVsIHlv dSBoYXZlIHN1cHBsaWVkIHdpbGwgYWxzbyBiZSBhbiBvcHRpb24gaW4gdGhlIGxpc3QuIFJl bWVtYmVyIHRoYXQgbGFiZWxzIGFyZSBjYXNlIHNlbnNpdGl2ZS48L3A+CgoJPHA+Tm90ZSB0 aGF0IGZpbHRlcmluZyBieSBuYW1lIG9yIGJ5IGxhYmVsIGFyZSBtdXR1YWxseSBleGNsdXNp dmUgYWN0aW9uczogc2VsZWN0aW5nIHNvbWV0aGluZyBmcm9tIHRoZSBkcm9wZG93biB3aWxs IGNsZWFyIHRoZSB0ZXh0IGJveCwgYW5kIHR5cGluZyBzb21ldGhpbmcgaW4gdGhlIHRleHQg Ym94IHdpbGwgcmVzZXQgdGhlIGRyb3Bkb3duLjwvcD4KCgk8cD5Zb3VyIHNlYXJjaCBjcml0 ZXJpYSBhcmUgcmVtZW1iZXJlZCBiZXR3ZWVuIGVkaXQvbGlzdCB2aWV3cyBzbyB5b3Ugd29u JiM4MjE3O3QgbG9zZSB5b3VyIHBsYWNlLiBJZiB5b3UgYXJlIGluIDxlbT5EaXNwbGF5OiBQ YWdpbmF0ZWQ8L2VtPiBtb2RlLCB0aGUgc2VhcmNoIHdvcmtzIGluIGV4YWN0bHkgdGhlIHNh bWUgd2F5IGJ1dCB5b3UgaGF2ZSB0byBoaXQgRW50ZXIgb3IgY2xpY2sgPGVtPkdvPC9lbT4g dG8gc3VibWl0IHRoZSBzZWFyY2ggY3JpdGVyaWEuPC9wPgoKCTxoMz5QbHVnaW4gcHJlZmVy ZW5jZXM8L2gzPgoKCTxwPlVzZXJzIG9mIHRoZSA8ZW0+RmVhdHVyZWQgYXJ0aWNsZXM8L2Vt PiB0YWIgYWxzbyBoYXZlIGEgZmV3IHByZWZlcmVuY2VzIGF0IHRoZWlyIGRpc3Bvc2FsIHdo aWNoIGNhbiBiZSBhbHRlcmVkIGF0IHdpbGw6PC9wPgoKCTxvbD4KCQk8bGk+PHN0cm9uZz5E aXNwbGF5PC9zdHJvbmc+IDogY2hvb3NlIHdoZXRoZXIgeW91IHdpc2ggdG8gZGlzcGxheSBh bGwgYXJ0aWNsZXMgb24gb25lIHBhZ2UgKGFuZCB1c2UgdGhlIGxpdmUgc2VhcmNoIHRvIGZp bHRlciB0aGVtKSBvciBjaG9vc2UgYSBwYWdpbmF0ZWQgdmlldyAoYW5kIHVzZSB0aGUgdHJh ZGl0aW9uYWwgc2VhcmNoKS4gVGhlIHRyYWRpdGlvbmFsIHNlYXJjaCBtaWdodCBiZSB1c2Vm dWwgaWYgeW91IGhhdmUgYSBsb3Qgb2YgYXJ0aWNsZXMgKG92ZXIgMTAwMCkgYmVjYXVzZSB0 aGUgbGl2ZSBzZWFyY2ggbWlnaHQgc2xvdyBkb3duIHNpZ25pZmljYW50bHkuIE5vdGUgdGhh dCB3aGVuIHlvdSBzZWFyY2ggZm9yIHNvbWV0aGluZyBpbiBwYWdpbmF0ZWQgbW9kZSwgdGhl IHJlc3VsdHMgdGhlbXNlbHZlcyBhcmVuJiM4MjE3O3QgcGFnaW5hdGVkPC9saT4KCQk8bGk+ PHN0cm9uZz5Tb3J0IGJ5PC9zdHJvbmc+IDogZGVmaW5lIHRoZSBzb3J0IG9yZGVyIG9mIHRo ZSBhcnRpY2xlIGxpc3Q8L2xpPgoJCTxsaT48c3Ryb25nPkJveCBzaXplPC9zdHJvbmc+IDog c3BlY2lmeSB0aGUgPGNvZGU+d2lkdGg8L2NvZGU+IGFuZCA8Y29kZT5oZWlnaHQ8L2NvZGU+ IHZhbHVlcyBpbiBwaXhlbHMgb2YgZWFjaCBjZWxsIGluIHRoZSBncmlkLiBEZWZhdWx0IGlz IDxjb2RlPjE1MHg0MDwvY29kZT48L2xpPgoJCTxsaT48c3Ryb25nPlRleHRpbGU8L3N0cm9u Zz46IGNob29zZSB0aGUgaXRlbXMgdG8gd2hpY2ggeW91IHdpc2ggdG8gYXBwbHkgVGV4dGls ZSB3aGVuIHlvdSBFZGl0IGFuZCBTYXZlIGEgZmVhdHVyZWQgYXJ0aWNsZS4gPHN0cm9uZz5O b3RlIHRoaXMgb25seSBhZmZlY3RzIGZlYXR1cmVkIGFydGljbGVzIHNhdmVkIGZyb20gdGhp cyBwb2ludCBmb3J3YXJkPC9zdHJvbmc+LiBUaHVzIGlmIHlvdSB3aXNoIHRvIGFwcGx5IGEg bmV3IFRleHRpbGUgc2V0dGluZyB0byBleGlzdGluZyBhcnRpY2xlcyB5b3UgbmVlZCB0byB2 aXNpdCBlYWNoIG9uZSBpbiB0dXJuIGJ5IGNsaWNraW5nIDxjb2RlPltFZGl0XTwvY29kZT4g YW5kIHRoZW4gPGVtPlNhdmU8L2VtPi48L2xpPgoJPC9vbD4KCgk8cD5Zb3UgKGFzIGFkbWlu aXN0cmF0b3IpIGNhbiBhbHNvIGFsdGVyIHRoZSBiZWhhdmlvdXIgb2YgdGhlIHBsdWdpbiBi eSBjcmVhdGluZyBzb21lIGhpZGRlbiBwcmVmZXJlbmNlcyAodGhlIHNtZF9wcmVmYWxpemVy IHBsdWdpbiBjYW4gaGVscCBoZXJlKS4gVGhlcmUgYXJlIHR3byBwcmVmcyB5b3UgbWF5IGRl ZmluZTo8L3A+CgoJPG9sPgoJCTxsaT48c3Ryb25nPnNtZF9mZWF0dXJlZF9wcml2czwvc3Ry b25nPiA6IGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgcHJpdiBsZXZlbCBudW1iZXJzIHRo YXQgY2FuIGFjY2VzcyB0aGUgPGVtPkZlYXR1cmVkIGFydGljbGVzPC9lbT4gdGFiLiBEZWZh dWx0OiA8Y29kZT4xLDI8L2NvZGU+PC9saT4KCQk8bGk+PHN0cm9uZz5zbWRfZmVhdHVyZWRf c2VjdGlvbl9saXN0PC9zdHJvbmc+OiBkZWZpbmUgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBv ZiBzZWN0aW9uIG5hbWVzLiBUaGVzZSB3aWxsIGJlIHRoZSBvbmx5IHNlY3Rpb25zIGZyb20g d2hpY2ggYXJ0aWNsZXMgYXJlIGFsbG93ZWQgdG8gYmUgZmVhdHVyZWQ8L2xpPgoJPC9vbD4K Cgk8cD5JZiB1c2luZyBzbWRfcHJlZmFsaXplciB0byBjcmVhdGUgdGhlIHByZWZzLCBzZXQg dGhlIG5hbWUgYW5kIHZhbHVlIGFzIGFib3ZlIGFuZCB0aGVuIHNldCB0aGUgZm9sbG93aW5n IGFkZGl0aW9uYWwgcGFyYW1ldGVyczo8L3A+CgoJPHVsPgoJCTxsaT48c3Ryb25nPnR5cGU8 L3N0cm9uZz4gOiBoaWRkZW48L2xpPgoJCTxsaT48c3Ryb25nPmV2ZW50PC9zdHJvbmc+IDog c21kX2ZlYXR1cmVkPC9saT4KCQk8bGk+PHN0cm9uZz5pbnB1dCBjb250cm9sPC9zdHJvbmc+ IDogdGV4dF9pbnB1dDwvbGk+CgkJPGxpPjxzdHJvbmc+dXNlcjwvc3Ryb25nPiA6IC8gZW1w dHkgLzwvbGk+CgkJPGxpPjxzdHJvbmc+cG9zaXRpb248L3N0cm9uZz46IDA8L2xpPgoJPC91 bD4KCgk8aDI+RGlzcGxheWluZyBmZWF0dXJlZCBhcnRpY2xlczwvaDI+CgoJPHA+T25jZSB5 b3UgaGF2ZSBjaG9zZW4geW91ciBmZWF0dXJlZCBhcnRpY2xlcywgeW91IG5lZWQgYSB3YXkg dG8gZGlzcGxheSB0aGVtOjwvcD4KCgk8aDM+PGNvZGU+Jmx0O3R4cDpzbWRfZmVhdHVyZWQg LyZndDs8L2NvZGU+PC9oMz4KCgk8cD5BY3RzIGEgYml0IGxpa2UgdGhlIHN0YW5kYXJkIDxj b2RlPiZsdDt0eHA6YXJ0aWNsZSAvJmd0OzwvY29kZT4gdGFnIHRvIGRpc3BsYXkgZmVhdHVy ZWQgYXJ0aWNsZXMuIEF0dHJpYnV0ZXM6PC9wPgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPmxhYmVsPC9zcGFuPiA6IGRpc3BsYXkgZmVhdHVyZWQgYXJ0aWNsZXMgd2l0aCB0 aGlzIGxhYmVsLiBTcGVjaWZ5IDxjb2RlPmxhYmVsPSZxdW90OyZxdW90OzwvY29kZT4gdG8g ZGlzcGxheSB1bmxhYmVsbGVkIGFydGljbGVzICh3aGljaCBhcmUgPHN0cm9uZz5ub3Q8L3N0 cm9uZz4gdGhlIHNhbWUgYXMgdW5mZWF0dXJlZCBhcnRpY2xlcykuIElmIHRoaXMgYXR0cmli dXRlIGlzIG9taXR0ZWQsIGFsbCBmZWF0dXJlZCBhcnRpY2xlcyAmIzgyMTI7IGlycmVzcGVj dGl2ZSBvZiBsYWJlbCAmIzgyMTI7IHdpbGwgYmUgZGlzcGxheWVkPC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0bm0iPmxhYmVsdGFnPC9zcGFuPiA6IHRoZSAoWClIVE1MIHRhZyAmIzgy MTI7IHdpdGhvdXQgYnJhY2tldHMgJiM4MjEyOyB0byBhcHBseSB0byB0aGUgbGFiZWwgYXR0 cmlidXRlLiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBzcGVjaWZpZWQgdGhlIGxhYmVsIGl0c2Vs ZiBpcyBkaXNwbGF5ZWQgYXQgdGhlIGhlYWQgb2YgeW91ciBmZWF0dXJlZCBhcnRpY2xlIGxp c3QuIElmIHlvdSB3aXNoIHRvIGRpc3BsYXkgdW5sYWJlbGxlZCBhcnRpY2xlcyB5b3UgbmVl ZCB0byBzcGVjaWZ5IHRoZSA8Y29kZT51bmxhYmVsPC9jb2RlPiBhdHRyaWJ1dGUgb3IgeW91 JiM4MjE3O2xsIHNlZSBubyBsYWJlbC4gTm90ZSB0aGF0IHRoaXMgdGFnIGRpZmZlcnMgZnJv bSB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gY29udmVudGlvbjogeW91IHdp bGwgPGVtPm9ubHk8L2VtPiBzZWUgdGhlIGxhYmVsIGlmIHlvdSBzcGVjaWZ5IHRoZSA8Y29k ZT5sYWJlbHRhZzwvY29kZT4uIFlvdSBjYW4gZGlzcGxheSB0aGUgbGFiZWwgaW5zaWRlIHlv dXIgYXJ0aWNsZXMgdXNpbmcgdGhlIDxjb2RlPiZsdDt0eHA6ZmVhdHVyZWRfaW5mbyAvJmd0 OzwvY29kZT4gdGFnPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnVubGFiZWw8L3Nw YW4+IDogd2hlbiB1c2luZyA8Y29kZT5sYWJlbD0mcXVvdDsmcXVvdDs8L2NvZGU+ICh0byBz aG93IHVubGFiZWxsZWQgYXJ0aWNsZXMpIHRoaXMgYXR0cmlidXRlIHNwZWNpZmllcyB0aGUg bGFiZWwgdG8gdXNlIGluc2lkZSB0aGUgPGNvZGU+bGFiZWx0YWc8L2NvZGU+LiBEZWZhdWx0 OiAmIzgyMjA7RmVhdHVyZWQmIzgyMjE7PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i PnRpbWU8L3NwYW4+IDogbGltaXQgdGhlIGFydGljbGVzIHRvIHRob3NlIGluIHRoZSA8Y29k ZT5wYXN0PC9jb2RlPiwgdGhlIDxjb2RlPmZ1dHVyZTwvY29kZT4gb3IgPGNvZGU+YW55PC9j b2RlPi4gRGVmYXVsdDogPGNvZGU+cGFzdDwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+c3RhdHVzPC9zcGFuPiA6IG9ubHkgZGlzcGxheSBhcnRpY2xlcyBvZiB0aGUg Z2l2ZW4gc3RhdHVzIG51bWJlcihzKS4gRGVmYXVsdDogPGNvZGU+NCw1PC9jb2RlPiAoYS5r LmEuIGxpdmUgYW5kIHN0aWNreSkuIE5vdGUgdGhhdCB0aGlzIGF0dHJpYnV0ZSBtYXkgYmUg aWdub3JlZCBpZiB5b3UgYXJlIHRyeWluZyB0byB2aWV3IGFueXRoaW5nIG90aGVyIGxpdmUg YW5kIHN0aWNreSBhcnRpY2xlcyAoc2luY2UgYXJ0aWNsZV9jdXN0b20gZG9lcyB0aGUgc2Ft ZSk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+c2VjdGlvbjwvc3Bhbj4gOiBvbmx5 IGRpc3BsYXkgYXJ0aWNsZXMgZnJvbSB0aGUgZ2l2ZW4gc2VjdGlvbihzKS4gSWYgdGhlIHNl Y3Rpb24gbGlzdCBpcyByZXN0cmljdGVkIHVzaW5nIHRoZSBwbHVnaW4gcHJlZmVyZW5jZXMs IHRoZSBzZWN0aW9ucyB1c2VkIGhlcmUgbXVzdCBhbHNvIGJlIGluIHRoYXQgbGlzdDwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5oaXN0b3J5PC9zcGFuPiA6IGRldGVybWluZXMg d2hldGhlciB0byByZW1lbWJlciBwcmV2aW91c2x5IHNlZW4gYXJ0aWNsZXMgYW5kIHRodXMg ZXhjbHVkZSB0aGVtIGZyb20gZnV0dXJlIHNtZF9mZWF0dXJlZCAvIHNtZF91bmZlYXR1cmVk IHRhZ3MuIElmIHlvdSBhcmUgdXNpbmcgdGhlIHNhbWUgZmVhdHVyZWQgdGFnIG11bHRpcGxl IHRpbWVzIG9uIHRoZSBzYW1lIHBhZ2UgYW5kIHdhbnQgaXQgdG8gYWx3YXlzIG91dHB1dCB0 aGUgc2FtZSBsaXN0LCBzZXQgdGhpcyBhdHRyaWJ1dGUgdG8gMC4gRGVmYXVsdDogMTwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5mb3JtPC9zcGFuPiA6IHVzZSB0aGlzIDxzcGFu IGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZvcm0gdG8gZGlzcGxheSBlYWNoIGFydGljbGUs IGluc3RlYWQgb2YgdXNpbmcgdGhlIGNvbnRhaW5lciBjb250ZW50czwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj5saW1pdDwvc3Bhbj4gOiBtYXhpbXVtIG51bWJlciBvZiBmZWF0 dXJlZCBhcnRpY2xlcyB0byBkaXNwbGF5LiBEZWZhdWx0OiAxMDwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj5zb3J0PC9zcGFuPiA6IG9yZGVyIHRoZSBmZWF0dXJlZCBhcnRpY2xl cyBieSA8Y29kZT5pZDwvY29kZT4sIDxjb2RlPmxhYmVsPC9jb2RlPiwgPGNvZGU+VGl0bGU8 L2NvZGU+LCA8Y29kZT5Qb3N0ZWQ8L2NvZGU+LCBhbmQgc28gb24uIFRoZSBzYW1lIGxpc3Qg YXZhaWxhYmxlIGZvciB0aGUgPGNvZGU+Jmx0O3R4cDphcnRpY2xlIC8mZ3Q7PC9jb2RlPiB0 YWcgYXJlIHVzYWJsZSBoZXJlLiBBZGQgPGNvZGU+YXNjPC9jb2RlPiBvciA8Y29kZT5kZXNj PC9jb2RlPiB0byB0aGUgYXR0cmlidXRlIHRvIGFsdGVyIHRoZSBkaXJlY3Rpb24gb2YgdGhl IHNvcnQuIFlvdSBtYXkgYWxzbyB1c2UgPGNvZGU+cmFuZCgpPC9jb2RlPiB0byBzb3J0IHRo ZSBhcnRpY2xlcyByYW5kb21seTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj53cmFw dGFnPC9zcGFuPiA6IHRoZSAoWClIVE1MIHRhZyAmIzgyMTI7IHdpdGhvdXQgYnJhY2tldHMg JiM4MjEyOyB0byB3cmFwIGFyb3VuZCB0aGUgbGlzdCBvZiBmZWF0dXJlZCBhcnRpY2xlczwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5icmVhazwvc3Bhbj4gOiB0aGUgKFgpSFRN TCB0YWcgJiM4MjEyOyB3aXRob3V0IGJyYWNrZXRzICYjODIxMjsgb3IgdGV4dCB0byBwdXQg YmV0d2VlbiBlYWNoIGFydGljbGU8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y2xh c3M8L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5h bWUgdG8gYXBwbHkgdG8gdGhlIHdyYXB0YWc8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+aHRtbF9pZDwvc3Bhbj4gOiBhIDxzcGFuIGNsYXNzPSJjYXBzIj5ET008L3NwYW4+IElE IHRvIGFwcGx5IHRvIHRoZSB3cmFwdGFnPC9saT4KCTwvdWw+CgoJPHA+WW91IG1heSB1c2Ug dGhlIHRhZyBhcyBhIGNvbnRhaW5lciBhbmQgYW55IHRhZ3MgeW91IHNwZWNpZnkgd2lsbCBi ZSBkaXNwbGF5ZWQgaW4gZWFjaCBmZWF0dXJlZCBhcnRpY2xlLiBZb3UgY2FuIHVzZSBzdGFu ZGFyZCBhcnRpY2xlIHRhZ3Mgc3VjaCBhcyA8Y29kZT4mbHQ7dHhwOnRpdGxlIC8mZ3Q7PC9j b2RlPiwgPGNvZGU+Jmx0O3R4cDpleGNlcnB0IC8mZ3Q7PC9jb2RlPiwgPGNvZGU+Jmx0O3R4 cDpwZXJtbGluayAvJmd0OzwvY29kZT4sIGV0YywgYWx0aG91Z2ggc29tZSBhcnRpY2xlcyBh cmUgbm90IGRpc3BsYXlhYmxlIGJ5IFRleHRwYXR0ZXJuIChlLmcuIGhpZGRlbiwgcGVuZGlu ZyBhbmQgZHJhZnQgYXJ0aWNsZXMpLjwvcD4KCgk8cCBjbGFzcz0iaW1wb3J0YW50Ij5Ob3Rl IHRoYXQgeW91IGNhbiYjODIxNzt0IHVzZSA8Y29kZT4mbHQ7dHhwOnNtZF9mZWF0dXJlZCZn dDs8L2NvZGU+IGluc2lkZSBhbiBhcnRpY2xlIG9yIGFuIEFydGljbGUgRm9ybS4gRG9pbmcg c28gd2lsbCB0cmlnZ2VyIGEgd2FybmluZyBiZWNhdXNlIGl0JiM4MjE3O3MgdGhlIHNhbWUg YXMgcHV0dGluZyBhbm90aGVyIGFydGljbGUgdGFnIGluc2lkZSBhbiBhcnRpY2xlLiBVc2Ug dGhlIHRhZyBvbmx5IGluIFBhZ2VzLCBvciBpbiBhIEZvcm0gdGhhdCBpcyBuZXZlciBkaXJl Y3RseSB1c2VkIHRvIGRpc3BsYXkgYXJ0aWNsZSBjb250ZW50LjwvcD4KCgk8cD5FYWNoIHRp bWUgeW91IHVzZSA8Y29kZT4mbHQ7dHhwOnNtZF9mZWF0dXJlZCAvJmd0OzwvY29kZT4gaXQg bWFrZXMgYSBub3RlIG9mIHRoZSBhcnRpY2xlcyBpdCBoYXMgZGlzcGxheWVkIGFuZCB3aWxs IG5vdCBkdXBsaWNhdGUgYXJ0aWNsZXMgaW4gbGF0ZXIgdGFncy48L3A+CgoJPGgzPjxjb2Rl PiZsdDt0eHA6c21kX2ZlYXR1cmVkX2luZm8gLyZndDs8L2NvZGU+PC9oMz4KCgk8cD5BbGxv d3MgeW91IHRvIGRpc3BsYXkgdGhlIGxhYmVsIG9yIHRoZSBkZXNjcmlwdGlvbiB3aXRoaW4g eW91ciA8Y29kZT4mbHQ7dHhwOnNtZF9mZWF0dXJlZCAvJmd0OzwvY29kZT4gIGZvcm0vY29u dGFpbmVyLjwvcD4KCgk8cD5IYXMgb25lIGF0dHJpYnV0ZTo8L3A+CgoJPHVsPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+aXRlbTwvc3Bhbj4gOiB0aGUgdGhpbmcgeW91IHdhbnQgdG8g ZGlzcGxheS4gQ2hvb3NlIGZyb206Cgk8dWw+CgkJPGxpPjxzdHJvbmc+bGFiZWw8L3N0cm9u Zz46IHRoZSBsYWJlbDwvbGk+CgkJPGxpPjxzdHJvbmc+dGl0bGU8L3N0cm9uZz46IHRoZSAo cG9zc2libHkgVGV4dGlsZS1wcm9jZXNzZWQpIHRpdGxlPC9saT4KCQk8bGk+PHN0cm9uZz5k ZXNjcmlwdGlvbjwvc3Ryb25nPjogdGhlIChwb3NzaWJseSBUZXh0aWxlLXByb2Nlc3NlZCkg ZGVzY3JpcHRpb248L2xpPgoJPC91bD48L2xpPgoJPC91bD4KCgk8aDM+PGNvZGU+Jmx0O3R4 cDpzbWRfdW5mZWF0dXJlZCAvJmd0OzwvY29kZT48L2gzPgoKCTxwPlVzZSB0aGlzIHRhZyBp ZiB5b3Ugd2lzaCB0byBzaG93IHRoZSAmIzgyMTY7cmVtYWluaW5nJiM4MjE3OyBhcnRpY2xl cyAmIzgyMTI7IGkuZS4gb25lcyBub3QgYWxyZWFkeSBkaXNwbGF5ZWQgYnkgYW55IHByZWNl ZGluZyA8Y29kZT4mbHQ7dHhwOnNtZF9mZWF0dXJlZCAvJmd0OzwvY29kZT4gdGFncy4gSXQg YWN0cyB2ZXJ5IG11Y2ggbGlrZSB0aGUgYnVpbHQtaW4gYXJ0aWNsZV9jdXN0b20gdGFnLCBh bmQgdGFrZXMgYWxsIHRoZSBzYW1lIGF0dHJpYnV0ZXMuIFRodXMsIGJ5IGRlZmF1bHQsIGl0 cyBjb250ZXh0IGlzICYjODIyMDthbnkgYXJ0aWNsZXMgZnJvbSBhbnkgc2VjdGlvbiBkZWZp bmVkIGluIHRoZSBzbWRfZmVhdHVyZWQgcGx1Z2luIHRoYXQgaGF2ZSBub3QgYmVlbiBkaXNw bGF5ZWQgYWxyZWFkeSYjODIyMTsuIFlvdSBjYW4gcmVkdWNlIHRoaXMgbGlzdCBieSA8Y29k ZT5zZWN0aW9uPC9jb2RlPiwgPGNvZGU+dGltZTwvY29kZT4gb3IgPGNvZGU+c3RhdHVzPC9j b2RlPi48L3A+CgoJPHA+VW5saWtlIGFydGljbGVfY3VzdG9tLCA8Y29kZT4mbHQ7dHhwOnNt ZF91bmZlYXR1cmVkIC8mZ3Q7PC9jb2RlPiBzdXBwb3J0cyBwYWdpbmF0aW9uLiBZb3UgY2Fu IGFsc28gc3BlY2lmeSB0aGUgPGNvZGU+aGlzdG9yeTwvY29kZT4gYXR0cmlidXRlIGFuZCBp dCB3b3JrcyBleGFjdGx5IHRoZSBzYW1lIHdheSBhcyBpdCBkb2VzIGZvciA8Y29kZT4mbHQ7 dHhwOnNtZF9mZWF0dXJlZCAvJmd0OzwvY29kZT4uIFRodXMgaXQgY2FuIGJlIGEgdmVyeSB1 c2VmdWwsIHBhZ2VhYmxlIGRpcmVjdCByZXBsYWNlbWVudCB0YWcgZm9yIGFydGljbGVfY3Vz dG9tIGlmIHlvdSB1c2UgPGNvZGU+aGlzdG9yeT0mcXVvdDswJnF1b3Q7PC9jb2RlPi48L3A+ CgoJPHA+Tm90ZXM6PC9wPgoKCTx1bD4KCQk8bGk+dG8gdXNlIHBhZ2luYXRpb24sIHJlbW92 ZSBhbnkgYXJ0aWNsZSB0YWcgYW5kIGFkZCB0aGUgPGNvZGU+cGFnZWJ5PC9jb2RlPiBhdHRy aWJ1dGUgKGFuZCBvZiBjb3Vyc2UgPGNvZGU+bGltaXQ8L2NvZGU+KSB0byB0aGUgc21kX3Vu ZmVhdHVyZWQgdGFnLiBOb3RlIHlvdSBtYXkgZ2V0IGEgd2FybmluZyBhYm91dCBubyBhcnRp Y2xlIHRhZyBvbiB0aGUgcGFnZSwgYnV0IHlvdSBjYW4gaWdub3JlIGl0PC9saT4KCQk8bGk+ aWYgeW91IHdpc2ggdGhlIDxjb2RlPnBhZ2VieTwvY29kZT4gYXR0cmlidXRlIHRvIHRyYWNr IGFueSA8Y29kZT5saW1pdDwvY29kZT4geW91IHNldCwgc3BlY2lmeSA8Y29kZT5wYWdlYnk9 JnF1b3Q7bGltaXQmcXVvdDs8L2NvZGU+PC9saT4KCQk8bGk+aWYgeW91IGhhdmUgYW55IG90 aGVyIHBhZ2luZyBpbiBlZmZlY3Qgb24gdGhlIHBhZ2UsIHVuZmVhdHVyZWQgcGFnaW5hdGlv biB3aWxsIGJlIGlnbm9yZWQ8L2xpPgoJPC91bD4KCgk8aDM+PGNvZGU+Jmx0O3R4cDpzbWRf aWZfZmVhdHVyZWQmZ3Q7PC9jb2RlPjwvaDM+CgoJPHA+VGhpcyB0YWcgYWxsb3dzIHlvdSB0 byBkZXRlY3QgaWYgdGhlIGN1cnJlbnQgKGluZGl2aWR1YWwpIGFydGljbGUgaXMgZmVhdHVy ZWQgYW5kL29yIGhhcyBhIHBhcnRpY3VsYXIgbGFiZWwuIFlvdSBtYXkgYWxzbyB1c2UgdGhp cyBvdXRzaWRlIGFuIGFydGljbGUgY29udGV4dCBieSBzdXBwbHlpbmcgYSBsaXN0IG9mIGFy dGljbGUgSURzLjwvcD4KCgk8cD5IYXMgdHdvIGF0dHJpYnV0ZXM6PC9wPgoKCTx1bD4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmlkPC9zcGFuPiA6IGxpc3Qgb2YgYXJ0aWNsZSBJRHMg b2Ygd2hpY2ggeW91IHdpc2ggdG8gY2hlY2sgdGhlIGZlYXR1cmVkIHN0YXR1cy4gSWYgb21p dHRlZCwgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgYXJ0aWNsZSAoaWYgdXNlZCBpbnNpZGUg YSA8Y29kZT4mbHQ7dHhwOmFydGljbGUgLyZndDs8L2NvZGU+IGNvbnRhaW5lci9mb3JtKTwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5sYWJlbDwvc3Bhbj4gOiBsaXN0IG9mIGxh YmVscyB0byBjb21wYXJlIHRoZSBnaXZlbiBJRChzKSB3aXRoLiBTcGVjaWZ5IDxjb2RlPmxh YmVsPSZxdW90OyZxdW90OzwvY29kZT4gdG8gY2hlY2sgZm9yIHVubGFiZWxsZWQgYXJ0aWNs ZXMsIG9yIHVzZSBhbiBlbXB0eSBpdGVtIGlmIHNwZWNpZnlpbmcgYSBsaXN0LCBlLmcuIDxj b2RlPmxhYmVsPSZxdW90OywgRmVhdHVyZWQsIFRlYXNlciZxdW90OzwvY29kZT4uIFJlbWVt YmVyIHRoYXQgbGFiZWxzIGFyZSBjYXNlIHNlbnNpdGl2ZTwvbGk+Cgk8L3VsPgoKCTxwPklm IHRoZSBhcnRpY2xlIG1hdGNoZXMgb25lIG9mIHRoZSBnaXZlbiBsYWJlbHMgdGhlIGNvbnRh aW5lZCBjb250ZW50IHdpbGwgYmUgZXhlY3V0ZWQuIElmIG5vIGxhYmVsIGlzIGdpdmVuIHRo ZSBhcnRpY2xlKHMpIHdpbGwgYmUgY2hlY2tlZCBpZiB0aGV5IGFyZSBmZWF0dXJlZCwgaXJy ZXNwZWN0aXZlIG9mIGxhYmVsLjwvcD4KCgk8aDI+RXhhbXBsZXM8L2gyPgoKCTxoMyBpZD0i ZWcxIj5FeGFtcGxlIDE6IENvbXBsZXRlIGRpcmVjdG9yeSBvZiBmZWF0dXJlZCBhcnRpY2xl czwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhw OnNtZF9mZWF0dXJlZCBsYWJlbHRhZz0mcXVvdDtoMiZxdW90OyBsaW1pdD0mcXVvdDsyMCZx dW90OwogICAgIHdyYXB0YWc9JnF1b3Q7ZGwmcXVvdDsgc29ydD0mcXVvdDtsYWJlbCZxdW90 OyZndDsKICAgJmx0O3R4cDppZl9kaWZmZXJlbnQmZ3Q7CiAgICAgICZsdDtoMiZndDsmbHQ7 dHhwOnNtZF9mZWF0dXJlZF9pbmZvIGl0ZW09JnF1b3Q7bGFiZWwmcXVvdDsgLyZndDsmbHQ7 L2gyJmd0OwogICAmbHQ7L3R4cDppZl9kaWZmZXJlbnQmZ3Q7CiAgICZsdDtkdCZndDsKICAg ICAgJmx0O3R4cDpwZXJtbGluayZndDsmbHQ7dHhwOnRpdGxlIC8mZ3Q7Jmx0Oy90eHA6cGVy bWxpbmsmZ3Q7CiAgICZsdDsvZHQmZ3Q7CiAgICZsdDtkZCZndDsKICAgICAgJmx0O3R4cDpl eGNlcnB0IC8mZ3Q7CiAgICZsdDsvZGQmZ3Q7CiZsdDsvdHhwOnNtZF9mZWF0dXJlZCZndDsK PC9jb2RlPjwvcHJlPgoKCTxoMyBpZD0iZWcyIj5FeGFtcGxlIDI6IE9uZSBmZWF0dXJlZCBh cnRpY2xlIGFuZCBzaXggdGVhc2VycyBvbiB0aGUgaG9tZSBwYWdlPC9oMz4KCgk8cD5TZWxl Y3QgYW4gYXJ0aWNsZSBhbmQgbGFiZWwgaXQgPGNvZGU+ZmVhdHVyZTwvY29kZT4uIFNlbGVj dCBzaXggb3RoZXJzIGFuZCBsYWJlbCB0aGVtIDxjb2RlPnRlYXNlcnM8L2NvZGU+LiBBZGQg c29tZSBkZXNjcmlwdGlvbiB0ZXh0IHRvIHlvdXIgdGVhc2VyIGFydGljbGVzLjwvcD4KCgk8 cD5JbiB5b3VyIGRlZmF1bHQgUGFnZSwgcHV0IHRoaXM6PC9wPgoKPHByZSBjbGFzcz0iYmxv Y2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZmVhdHVyZWQgbGFiZWw9JnF1 b3Q7ZmVhdHVyZSZxdW90OwogICAgIHdyYXB0YWc9JnF1b3Q7ZGl2JnF1b3Q7IGh0bWxfaWQ9 JnF1b3Q7bWFpbl9mZWF0dXJlJnF1b3Q7Jmd0OwogICAmbHQ7dHhwOnBlcm1saW5rJmd0OyZs dDt0eHA6dGl0bGUgLyZndDsmbHQ7L3R4cDpwZXJtbGluayZndDsKICAgJmx0O3R4cDphcnRp Y2xlX2ltYWdlIGNsYXNzPSZxdW90O2ZlYXRfaW1hZ2UmcXVvdDsgLyZndDsKICAgJmx0O3Ag Y2xhc3M9JnF1b3Q7bGVhZGluJnF1b3Q7Jmd0OyZsdDt0eHA6ZXhjZXJwdCAvJmd0OyZsdDsv cCZndDsKJmx0Oy90eHA6c21kX2ZlYXR1cmVkJmd0Owo8L2NvZGU+PC9wcmU+Cgo8cHJlIGNs YXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9mZWF0dXJlZCBs YWJlbD0mcXVvdDt0ZWFzZXJzJnF1b3Q7CiAgICAgd3JhcHRhZz0mcXVvdDt1bCZxdW90OyBi cmVhaz0mcXVvdDtsaSZxdW90OyBodG1sX2lkPSZxdW90O3RlYXNlcl9ibG9jayZxdW90OyZn dDsKICAgJmx0O3R4cDpwZXJtbGluayZndDsmbHQ7dHhwOnRpdGxlIC8mZ3Q7Jmx0Oy90eHA6 cGVybWxpbmsmZ3Q7CiAgICZsdDtwIGNsYXNzPSZxdW90O2xlYWRpbiZxdW90OyZndDsmbHQ7 dHhwOmV4Y2VycHQgLyZndDsmbHQ7L3AmZ3Q7CiZsdDsvdHhwOnNtZF9mZWF0dXJlZCZndDsK PC9jb2RlPjwvcHJlPgoKCTxwPklmIHlvdSB3YW50ZWQgdG8gaGF2ZSBzb21lIG90aGVyIGFy dGljbGVzIGJlbmVhdGggdGhvc2UsIGJ1dCBkaWRuJiM4MjE3O3Qgd2FudCBhbnkgZHVwbGlj YXRlcyB0byBhcHBlYXIgeW91IGNvdWxkIHVzZTo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+ PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF91bmZlYXR1cmVkIGZvcm09JnF1b3Q7 bXlfbGlzdCZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPGgzIGlkPSJlZzMiPkV4YW1w bGUgMzogUGVyLXNlY3Rpb24gbGFuZGluZyBwYWdlIGZlYXR1cmVkIGFydGljbGVzPC9oMz4K Cgk8cD5JZiB5b3UgaGFkIGEgem9vIHNpdGUgd2l0aCBhIHNlY3Rpb24gZm9yIHByaW1hdGVz LCBhIHNlY3Rpb24gZm9yIG1hbW1hbHMgYW5kIGEgc2VjdGlvbiBmb3IgcmVwdGlsZXMsIHdo ZW4geW91IHNldCB1cCB5b3VyIGZlYXR1cmVkIGFydGljbGUgbGlzdCBkZWZpbmUgdGhlaXIg bmFtZXMgbGlrZSB0aGlzOjwvcD4KCgk8dWw+CgkJPGxpPkZlYXR1cmVkIHByaW1hdGVzPC9s aT4KCQk8bGk+RmVhdHVyZWQgbWFtbWFsczwvbGk+CgkJPGxpPkZlYXR1cmVkIHJlcHRpbGVz PC9saT4KCTwvdWw+CgoJPHA+T24geW91ciBzZWN0aW9uIGxhbmRpbmcgcGFnZSB0ZW1wbGF0 ZSB5b3UgY2FuIHRoZW4gZG8gdGhpcyB0byBkaXNwbGF5IGZvdXIgYXJ0aWNsZXMgZnJvbSB0 aGUgcmVsZXZhbnQgKGN1cnJlbnQpIHNlY3Rpb246PC9wPgoKPHByZSBjbGFzcz0iYmxvY2si Pjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O2gyJmd0O0xvb2sgd2hvJiMzOTtzIGhlcmU6Jmx0 Oy9oMiZndDsKJmx0O3R4cDpzbWRfZmVhdHVyZWQgbGFiZWw9JiMzOTtGZWF0dXJlZCAmbHQ7 dHhwOnNlY3Rpb24gLyZndDsmIzM5OwogICAgIHNlY3Rpb249JiMzOTsmbHQ7dHhwOnNlY3Rp b24gLyZndDsmIzM5OyBsaW1pdD0mcXVvdDs0JnF1b3Q7CiAgICAgd3JhcHRhZz0mcXVvdDtk aXYmcXVvdDsgaHRtbF9pZD0mcXVvdDtmZWF0X2Jsb2NrJnF1b3Q7Jmd0OwogICAmbHQ7ZGl2 IGNsYXNzPSZxdW90O3BpbXBlZF9hcnRpY2xlJnF1b3Q7Jmd0OwogICAgICAmbHQ7dHhwOnBl cm1saW5rJmd0OyZsdDt0eHA6dGl0bGUgLyZndDsmbHQ7L3R4cDpwZXJtbGluayZndDsKICAg ICAgJmx0O3R4cDpzbWRfZmVhdHVyZWRfaW5mbyBpdGVtPSZxdW90O2Rlc2NyaXB0aW9uJnF1 b3Q7IC8mZ3Q7CiAgICZsdDsvZGl2Jmd0OwombHQ7L3R4cDpzbWRfZmVhdHVyZWQmZ3Q7Cjwv Y29kZT48L3ByZT4KCgk8aDMgaWQ9ImVnNCI+RXhhbXBsZSA0OiBDb25kaXRpb25hbCBjaGVj ayBmb3IgZmVhdHVyZWQtbmVzczwvaDM+CgoJPHA+SWYgYSBzaXRlIHZpc2l0b3IgaGFzIG5h dmlnYXRlZCBhd2F5IGZyb20geW91ciBmcm9udCBwYWdlIGFuZCBpcyB2aWV3aW5nIGFuIGFy dGljbGUsIHlvdSBtYXkgd2lzaCB0byBoaWdobGlnaHQgdGhlIGZhY3QgdGhlIGN1cnJlbnQg YXJ0aWNsZSBpcyBhIGZlYXR1cmVkIHByb2R1Y3QuIFNvLCBzb21ld2hlcmUgaW5zaWRlIHlv dSBhcnRpY2xlIGZvcm0gYWRkOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFz cz0iYmxvY2siPiZsdDt0eHA6c21kX2lmX2ZlYXR1cmVkJmd0OwogICAmbHQ7cCBjbGFzcz0m cXVvdDtoaWxpZ2h0JnF1b3Q7Jmd0O0ZFQVRVUkVEIFBST0RVQ1QmbHQ7L3AmZ3Q7CiZsdDsv dHhwOnNtZF9pZl9mZWF0dXJlZCZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPk9yIGlmIHlvdSB3 YW50ZWQgdG8gb25seSBoaWdobGlnaHQgdGhlIGFydGljbGUgaWYgaXQgd2FzIGEgZmVhdHVy ZWQgb3Igb24gc3BlY2lhbCBvZmZlcjo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUg Y2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9pZl9mZWF0dXJlZCBsYWJlbD0mcXVvdDtGZWF0 dXJlZCwgU3BlY2lhbCZxdW90OyZndDsKICAgJmx0O3AgY2xhc3M9JnF1b3Q7aGlsaWdodCZx dW90OyZndDtBcyBmZWF0dXJlZCBvbiB0aGUgZnJvbnQgcGFnZSEmbHQ7L3AmZ3Q7CiZsdDsv dHhwOnNtZF9pZl9mZWF0dXJlZCZndDsKPC9jb2RlPjwvcHJlPgoKCTxoMiBpZD0iY2hhbmdl bG9nIj5DaGFuZ2Vsb2c8L2gyPgoKCTx1bD4KCQk8bGk+MTggSnVuIDEwIHwgMC4xMCB8IElu aXRpYWwgcmVsZWFzZTwvbGk+CgkJPGxpPjA3IFNlcCAxMCB8IDAuMjAgfCBSZW5hbWVkIGlk IGNvbHVtbiB0byBmZWF0X2lkIDsgZml4ZWQgPGNvZGU+bGFiZWw8L2NvZGU+IGF0dHJpYnV0 ZSBidWcgKGJvdGggdGhhbmtzIHBpZW1hbikgOyBsYWJlbCBzZWFyY2hlcyBhcmUgbm93IGV4 YWN0IG1hdGNoZXMgOyBhZGRlZCBwcmVmcyBhbmQgcGFnaW5hdGlvbiBzdXBwb3J0IGZvciBh ZG1pbiBzaWRlIDsgYWRkZWQgPGNvZGU+Jmx0O3R4cDpzbWRfaWZfZmVhdHVyZWQmZ3Q7PC9j b2RlPiA7IGFkZGVkIGxhYmVsIHNlbGVjdGlvbiBmcm9tIGRyb3Bkb3duIGR1cmluZyBlZGl0 aW5nICh0aGFua3MgdHllKTwvbGk+CgkJPGxpPjEzIFNlcCAxMCB8IDAuMjEgfCBBZGRlZCAm IzgyMTY7dGl0bGUmIzgyMTc7IGFuZCBUZXh0aWxlIG9wdGlvbnMgKGJvdGggdGhhbmtzIGJn KTwvbGk+CgkJPGxpPjEzIFNlcCAxMCB8IDAuMjIgfCBGaXhlZCBtaXNzaW5nIGRvU2xhc2go KSBvbiB1bnRleHRpbGVkIGh0bWwgY29udGVudCAodGhhbmtzIGJnKTwvbGk+CgkJPGxpPjA1 IE9jdCAxMCB8IDAuMzAgfCBVc2UgPGNvZGU+YXJ0aWNsZV9jdXN0b20oKTwvY29kZT4gbm90 IDxjb2RlPmFydGljbGUoKTwvY29kZT4gdG8gc2lkZXN0ZXAgaW5kaXZpZHVhbCBhcnRpY2xl IGNvbnRleHQgKHRoYW5rcyBqb2huc3RlcGhlbnMpIDsgcGFzcyA8Y29kZT50aW1lPC9jb2Rl PiBhbmQgPGNvZGU+bGltaXQ8L2NvZGU+IHRvIDxjb2RlPmFydGljbGVfY3VzdG9tKCk8L2Nv ZGU+IDsgPGNvZGU+bGltaXQ8L2NvZGU+IGhhcyBkZWZhdWx0IG9mIDEwPC9saT4KCQk8bGk+ MTEgT2N0IDEwIHwgMC4zMSB8IEJldHRlciB0aGVtZSBpbnRlZ3JhdGlvbiAodGhhbmtzIHRo ZWJvbWJzaXRlKTwvbGk+CgkJPGxpPjAxIE5vdiAxMCB8IDAuMzIgfCBBZGRlZCBvbGRlci9u ZXdlciBwYWdpbmF0aW9uIHN1cHBvcnQgdG8gPGNvZGU+Jmx0O3R4cDpzbWRfdW5mZWF0dXJl ZCAvJmd0OzwvY29kZT4gYW5kIHBlcm1pdHRlZCA8Y29kZT5zZWN0aW9uPC9jb2RlPiwgPGNv ZGU+c3RhdHVzPC9jb2RlPiBhbmQgPGNvZGU+dGltZTwvY29kZT4gZmlsdGVyaW5nIDsgZml4 ZWQgc29tZSBzdHlsaW5nIGlzc3VlczwvbGk+CgkJPGxpPjE3IEphbiAxMSB8IDAuMzMgfCBB ZGRlZCA8Y29kZT5oaXN0b3J5PC9jb2RlPiBhdHRyaWJ1dGUgOyBmaXhlZCBzbWRfdW5mZWF0 dXJlZCB0byB3b3JrIGNvcnJlY3RseSBpbiBpbmRpdmlkdWFsIGFydGljbGUgY29udGV4dCBh ZnRlciB0aGUgdjAuMzIgYmxvb3BlciAodGhhbmtzIGpvaG5zdGVwaGVucykgOyBmaXhlZCBz bWRfdW5mZWF0dXJlZCBidWcgdG8gc3RvcCB0eHA6YXJ0aWNsZSYjODIxNztzIGRlZmF1bHQg b3V0cHV0IGlmIHVuZmVhdHVyZWQgbGlzdCBlbXB0eTwvbGk+Cgk8L3VsPgoKPC9kaXY+Cjwh LS0gKioqIEJFR0lOIFBMVUdJTiBDU1MgKioqIC0tPgo8c3R5bGUgdHlwZT0idGV4dC9jc3Mi Pgojc21kX2hlbHAgeyBsaW5lLWhlaWdodDoxLjUgO30KI3NtZF9oZWxwIGNvZGUgeyBmb250 LXdlaWdodDpib2xkOyBmb250OiAxMDUlLzEzMCUgIkNvdXJpZXIgTmV3IiwgY291cmllciwg bW9ub3NwYWNlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBlNjhjOyBjb2xvcjojMzMzOyB9CiNz bWRfaGVscCBjb2RlLmJsb2NrIHsgZm9udC13ZWlnaHQ6bm9ybWFsOyBib3JkZXI6MXB4IGRv dHRlZCAjOTk5OyBkaXNwbGF5OmJsb2NrOyBtYXJnaW46MTBweCAxMHB4IDIwcHg7IHBhZGRp bmc6MTBweDsgfQojc21kX2hlbHAgaDEgeyBmb250OiAyMHB4IEdlb3JnaWEsIHNhbnMtc2Vy aWY7IG1hcmdpbjogMDsgdGV4dC1hbGlnbjogY2VudGVyOyB9CiNzbWRfaGVscCBoMiB7IGJv cmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjazsgcGFkZGluZzoxMHB4IDAgMDsgZm9udDog MTdweCBHZW9yZ2lhLCBzYW5zLXNlcmlmOyB9CiNzbWRfaGVscCBoMyB7IGZvbnQ6IGJvbGQg MTJweCBBcmlhbCwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2luOiAy MHB4IDAgMDsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgfQojc21kX2hlbHAgaDQgeyBm b250OiBib2xkIDExcHggQXJpYWwsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxcHg7 IG1hcmdpbjogMTBweCAwIDA7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0KI3NtZF9o ZWxwIC5hdG5tIHsgZm9udC13ZWlnaHQ6Ym9sZDsgfQojc21kX2hlbHAgLm1hbmQgeyBiYWNr Z3JvdW5kOiNlZWU7IGJvcmRlcjoxcHggZG90dGVkICM5OTk7IH0KI3NtZF9oZWxwIHRhYmxl IHsgd2lkdGg6OTAlOyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZy1ib3R0b206MWVtOyB9 CiNzbWRfaGVscCB0ZCwgI3NtZF9oZWxwIHRoIHsgYm9yZGVyOjFweCBzb2xpZCAjOTk5OyBw YWRkaW5nOi41ZW0gMDsgfQojc21kX2hlbHAgdWwgeyBsaXN0LXN0eWxlLXR5cGU6c3F1YXJl OyB9CiNzbWRfaGVscCAuaW1wb3J0YW50IHsgY29sb3I6cmVkOyB9CiNzbWRfaGVscCBsaSB7 IG1hcmdpbjo1cHggMjBweCA1cHggMzBweDsgfQojc21kX2hlbHAgLmJyZWFrIHsgbWFyZ2lu LXRvcDo1cHg7IH0KPC9zdHlsZT4KPCEtLSAqKiogRU5EIFBMVUdJTiBDU1MgKioqIC0tPgoi O3M6MzoibWQ1IjtzOjMyOiI0Yzk4NjgyNWQ5Yjg5OTdiYjQwNDZlNzQ2NmNhOGI0YiI7fQ==