# upm_date_archive v.0.2.4 # Simple, clean and efficient date archive listings. # Mary Fredborg # http://utterplush.com/txp-plugins/upm-date-archive # .......................................................................... # A plugin for Textpattern # http://textpattern.com/ # # Adding Plugins to Your Textpattern Installation # http://textpattern.net/wiki/index.php?title=Intermediate_Weblog_Model#Adding_Plugins_to_Your_Textpattern_Installation # .......................................................................... YToxMTp7czo0OiJuYW1lIjtzOjE2OiJ1cG1fZGF0ZV9hcmNoaXZlIjtzOjExOiJkZXNjcmlw dGlvbiI7czo1MDoiU2ltcGxlLCBjbGVhbiBhbmQgZWZmaWNpZW50IGRhdGUgYXJjaGl2ZSBs aXN0aW5ncy4iO3M6NzoidmVyc2lvbiI7czo1OiIwLjIuNCI7czo0OiJ0eXBlIjtpOjE7czo2 OiJhdXRob3IiO3M6MTM6Ik1hcnkgRnJlZGJvcmciO3M6MTA6ImF1dGhvcl91cmkiO3M6NTA6 Imh0dHA6Ly91dHRlcnBsdXNoLmNvbS90eHAtcGx1Z2lucy91cG0tZGF0ZS1hcmNoaXZlIjtz OjQ6ImNvZGUiO3M6MTcyMDc6InVwbV9kYXRlX2FyY2hpdmVfaW5zdGFsbCgpOwoKCWlmICh0 eHBpbnRlcmZhY2UgPT0gJ2FkbWluJykKCXsKCQlhZGRfcHJpdnMoJ3VwbV9kYXRlX2FyY2hp dmUnLCAnMSwyLDMsNicpOwoJCXJlZ2lzdGVyX3RhYignZXh0ZW5zaW9ucycsICd1cG1fZGF0 ZV9hcmNoaXZlJywgJ3VwbV9kYXRlX2FyY2hpdmUnKTsKCQlyZWdpc3Rlcl9jYWxsYmFjaygn dXBtX2RhdGVfYXJjaGl2ZV9wcmVmcycsICd1cG1fZGF0ZV9hcmNoaXZlJyk7Cgl9CgoJZWxz ZQoJewoJCWlmICgkR0xPQkFMU1sncGVybWxpbmtfbW9kZSddICE9ICdtZXNzeScpCgkJewoJ CQlyZWdpc3Rlcl9jYWxsYmFjaygndXBtX2RhdGVfYXJjaGl2ZV9sb2FkJywgJ3RleHRwYXR0 ZXJuJyk7CgkJfQoJfQoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCWZ1bmN0aW9uIHVwbV9kYXRlX21lbnUoJGF0 dHMpCgl7CgkJZ2xvYmFsICRwcmV0ZXh0LCAkcHJlZnM7CgoJCWV4dHJhY3QobEF0dHMoYXJy YXkoCgkJCSdjYXRlZ29yeScJCQkJCQk9PiAnJywKCQkJJ2NsYXNzJwkJCQkJCQkJPT4gJycs CgkJCSdleGNsdWRlX2NhdGVnb3J5JwkJPT4gJycsCgkJCSdleGNsdWRlX3NlY3Rpb24nCQkJ PT4gJycsCgkJCSdpZCcJCQkJCQkJCQk9PiAnJywKCQkJJ2luc2VydF9lbXB0eV9tb250aHMn ID0+ICd5ZXMnLAoJCQknbGlua190bycJCQkJCQkJPT4gJycsCgkJCSdtb250aF9mb3JtYXQn CQkJCT0+ICclYicsCgkJCSdyZW1haW5fbGlua2VkJwkJCQk9PiAneWVzJywKCQkJJ3NlY3Rp b24nCQkJCQkJCT0+ICRwcmV0ZXh0WydzJ10sCgkJCSdzb3J0JwkJCQkJCQkJPT4gJ3RoZV95 ZWFyIGRlc2MsIHRoZV9tb250aCBhc2MnLAoJCQkndGltZScJCQkJCQkJCT0+ICdwYXN0JywK CQkJJ3llYXJfZm9ybWF0JwkJCQkJPT4gJyVZJwoJCSksICRhdHRzKSk7CgoJCS8vIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCQkvLyBwcmVwYXJlIHF1ZXJ5CgoJCSRvZmZzZXQg PSB0el9vZmZzZXQoKTsKCgkJc3dpdGNoICgkdGltZSkKCQl7CgkJCWNhc2UgJ2FueSc6CgkJ CQkkdGltZSA9ICcnOwoJCQlicmVhazsKCgkJCWNhc2UgJ2Z1dHVyZSc6CgkJCQkkdGltZSA9 ICJhbmQgUG9zdGVkID4gbm93KCkiOwoJCQlicmVhazsKCgkJCWRlZmF1bHQ6CgkJCQkkdGlt ZSA9ICJhbmQgUG9zdGVkIDw9IG5vdygpIjsKCQkJYnJlYWs7CgkJfQoKCQlsaXN0KCRzZWN0 aW9uX3NxbCwgJGNhdGVnb3J5X3NxbCkgPSB1cG1fZGF0ZV9hcmNoaXZlX3F1ZXJ5X2J1aWxk KCRzZWN0aW9uLCAkZXhjbHVkZV9zZWN0aW9uLCAkY2F0ZWdvcnksICRleGNsdWRlX2NhdGVn b3J5KTsKCgkJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCQkkcnMgPSBzYWZl X3Jvd3Nfc3RhcnQoInVuaXhfdGltZXN0YW1wKGRhdGVfYWRkKFBvc3RlZCwgaW50ZXJ2YWwg JyRvZmZzZXQnIHNlY29uZCkpIGFzIHRoZV9kYXRlLAoJCQlkYXRlX2Zvcm1hdChkYXRlX2Fk ZChQb3N0ZWQsIGludGVydmFsICckb2Zmc2V0JyBzZWNvbmQpLCAnJW0nKSBhcyB0aGVfbW9u dGgsCgkJCWRhdGVfZm9ybWF0KGRhdGVfYWRkKFBvc3RlZCwgaW50ZXJ2YWwgJyRvZmZzZXQn IHNlY29uZCksICclWScpIGFzIHRoZV95ZWFyIiwKCQkJJ3RleHRwYXR0ZXJuJywKCQkJIlN0 YXR1cyA9IDQgJHRpbWUgJHNlY3Rpb25fc3FsICRjYXRlZ29yeV9zcWwKCQkJZ3JvdXAgYnkg ZGF0ZV9mb3JtYXQoZGF0ZV9hZGQoUG9zdGVkLCBpbnRlcnZhbCAnJG9mZnNldCcgc2Vjb25k KSwgJyVZLSVtJykgb3JkZXIgYnkgIi5kb1NsYXNoKCRzb3J0KSk7CgoJCWlmICgkcnMpCgkJ ewoJCQkkYXZhaWxhYmxlX21vbnRocyA9IGFycmF5KAoJCQkJMSA9PiAnSmFuIDAxJywKCQkJ CTIgPT4gJ0ZlYiAwMScsCgkJCQkzID0+ICdNYXIgMDEnLAoJCQkJNCA9PiAnQXByIDAxJywK CQkJCTUgPT4gJ01heSAwMScsCgkJCQk2ID0+ICdKdW4gMDEnLAoJCQkJNyA9PiAnSnVsIDAx JywKCQkJCTggPT4gJ0F1ZyAwMScsCgkJCQk5ID0+ICdTZXAgMDEnLAoJCQkJMTAgPT4gJ09j dCAwMScsCgkJCQkxMSA9PiAnTm92IDAxJywKCQkJCTEyID0+ICdEZWMgMDEnCgkJCSk7CgoJ CQkkd29ya2luZ19tb250aCA9ICcnOwoJCQkkd29ya2luZ195ZWFyID0gJyc7CgoJCQkkb3V0 ID0gYXJyYXkoKTsKCgkJCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgkJCXdo aWxlICgkcm93ID0gbmV4dFJvdygkcnMpKQoJCQl7CgkJCQlleHRyYWN0KCRyb3cpOwoKCQkJ CSR0aGVfbW9udGggPSBpbnR2YWwobHRyaW0oJHRoZV9tb250aCwgJzAnKSk7CgoJCQkJaWYg KCR0aGVfeWVhciAhPSAkd29ya2luZ195ZWFyKQoJCQkJewoJCQkJCWlmICgkaW5zZXJ0X2Vt cHR5X21vbnRocyA9PSAneWVzJyBhbmQgIWVtcHR5KCR3b3JraW5nX21vbnRoKSBhbmQgIWVt cHR5KCR3b3JraW5nX3llYXIpKQoJCQkJCXsKCQkJCQkJZm9yICgkaSA9ICR3b3JraW5nX21v bnRoICsgMTsgJGkgPD0gMTI7ICRpKyspCgkJCQkJCXsKCQkJCQkJCSRvdXRbXSA9IG4udC4n PGRkPicuc3RyZnRpbWUoJG1vbnRoX2Zvcm1hdCwgc3RydG90aW1lKCRhdmFpbGFibGVfbW9u dGhzWyRpXS4nICcuJHRoZV95ZWFyKSkuJzwvZGQ+JzsKCQkJCQkJfQoJCQkJCX0KCgkJCQkJ JG91dFtdID0gbi4nPGR0Picuc3RyZnRpbWUoJHllYXJfZm9ybWF0LCAkdGhlX2RhdGUpLic8 L2R0Pic7CgoJCQkJCWlmICgkaW5zZXJ0X2VtcHR5X21vbnRocyA9PSAneWVzJyBhbmQgIWVt cHR5KCR3b3JraW5nX21vbnRoKSBhbmQgJHRoZV9tb250aCAhPSAxKQoJCQkJCXsKCQkJCQkJ Zm9yICgkaSA9IDE7ICRpIDwgJHRoZV9tb250aDsgJGkrKykKCQkJCQkJewoJCQkJCQkJJG91 dFtdID0gbi50Lic8ZGQ+Jy5zdHJmdGltZSgkbW9udGhfZm9ybWF0LCBzdHJ0b3RpbWUoJGF2 YWlsYWJsZV9tb250aHNbJGldLicgJy4kdGhlX3llYXIpKS4nPC9kZD4nOwoJCQkJCQl9CgkJ CQkJfQoKCQkJCQkkd29ya2luZ195ZWFyID0gJHRoZV95ZWFyOwoJCQkJfQoKCQkJCWlmICgk aW5zZXJ0X2VtcHR5X21vbnRocyA9PSAneWVzJykKCQkJCXsKCQkJCQlpZiAoZW1wdHkoJHdv cmtpbmdfbW9udGgpKQoJCQkJCXsKCQkJCQkJZm9yICgkaSA9IDE7ICRpIDwgJHRoZV9tb250 aDsgJGkrKykKCQkJCQkJewoJCQkJCQkJJG91dFtdID0gbi50Lic8ZGQ+Jy5zdHJmdGltZSgk bW9udGhfZm9ybWF0LCBzdHJ0b3RpbWUoJGF2YWlsYWJsZV9tb250aHNbJGldLicgJy4kdGhl X3llYXIpKS4nPC9kZD4nOwoJCQkJCQl9CgkJCQkJfQoKCQkJCQllbHNlaWYgKCR3b3JraW5n X21vbnRoICsgMSAhPSAkdGhlX21vbnRoKQoJCQkJCXsKCQkJCQkJZm9yICgkaSA9ICR3b3Jr aW5nX21vbnRoICsgMTsgJGkgPCAkdGhlX21vbnRoOyAkaSsrKQoJCQkJCQl7CgkJCQkJCQkk b3V0W10gPSBuLnQuJzxkZD4nLnN0cmZ0aW1lKCRtb250aF9mb3JtYXQsIHN0cnRvdGltZSgk YXZhaWxhYmxlX21vbnRoc1skaV0uJyAnLiR0aGVfeWVhcikpLic8L2RkPic7CgkJCQkJCX0K CQkJCQl9CgkJCQl9CgoJCQkJJHdoYXQgPSBzdHJmdGltZSgkbW9udGhfZm9ybWF0LCAkdGhl X2RhdGUpOwoKCQkJCWlmICgkcmVtYWluX2xpbmtlZCA9PSAneWVzJykKCQkJCXsKCQkJCQlp ZiAoJGxpbmtfdG8gPT0gZmFsc2UpCgkJCQkJewoJCQkJCQkkbGlua190byA9ICRwcmV0ZXh0 WydzJ107CgkJCQkJfQoKCQkJCQlpZiAoJGxpbmtfdG8gPT0gJ2RlZmF1bHQnKQoJCQkJCXsK CQkJCQkJJHVybCA9ICc/bW9udGg9JzsKCQkJCQl9CgoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJ CWlmICgkcHJlZnNbJ3Blcm1saW5rX21vZGUnXSA9PSAnbWVzc3knKQoJCQkJCQl7CgkJCQkJ CQkkdXJsID0gJz9zPScuJGxpbmtfdG8uYS4nbW9udGg9JzsKCQkJCQkJfQoKCQkJCQkJZWxz ZQoJCQkJCQl7CgkJCQkJCQkkdXJsID0gaHUuJGxpbmtfdG8uJy8nOwoJCQkJCQl9CgkJCQkJ fQoKCQkJCQkkd2hhdCA9ICc8YSBocmVmPSInLiR1cmwuc3RyZnRpbWUoJyVZLSVtJywgJHRo ZV9kYXRlKS4nIj4nLiR3aGF0Lic8L2E+JzsKCQkJCX0KCgkJCQlpZiAoc3RyZnRpbWUoJyVZ LSVtJywgJHRoZV9kYXRlKSA9PSAkcHJldGV4dFsnbW9udGgnXSkKCQkJCXsKCQkJCQkkb3V0 W10gPSBuLnQuJzxkZCBjbGFzcz0iYWN0aXZlIj4nLiR3aGF0Lic8L2RkPic7CgkJCQl9CgoJ CQkJZWxzZQoJCQkJewoJCQkJCSRvdXRbXSA9IG4udC4nPGRkPicuJHdoYXQuJzwvZGQ+JzsK CQkJCX0KCgkJCQkkd29ya2luZ19tb250aCA9ICR0aGVfbW9udGg7CgkJCX0KCgkJCS8vIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgkJCWlmICgkb3V0KQoJCQl7CgkJCQlpZiAo JGluc2VydF9lbXB0eV9tb250aHMgPT0gJ3llcycgYW5kICR3b3JraW5nX21vbnRoIDwgMTIp CgkJCQl7CgkJCQkJZm9yICgkaSA9ICR3b3JraW5nX21vbnRoICsgMTsgJGkgPD0gMTI7ICRp KyspCgkJCQkJewoJCQkJCQkkb3V0W10gPSBuLnQuJzxkZD4nLnN0cmZ0aW1lKCRtb250aF9m b3JtYXQsIHN0cnRvdGltZSgkYXZhaWxhYmxlX21vbnRoc1skaV0uJyAnLiR0aGVfeWVhcikp Lic8L2RkPic7CgkJCQkJfQoJCQkJfQoKCQkJCSRvdXQgPSBqb2luKCcnLCAkb3V0KTsKCgkJ CQlyZXR1cm4gZG9UYWcoJG91dCwgJ2RsJywgJGNsYXNzLCAnJywgJGlkKTsKCQkJfQoJCX0K CgkJcmV0dXJuOwoJfQoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCWZ1bmN0aW9uIHVwbV9kYXRlX2FyY2hpdmUo JGF0dHMsICR0aGluZyA9IG51bGwpCgl7CgkJJG1vZGUgPSBnQXR0KCRhdHRzLCAnbW9kZScs ICdzbWFydCcpOwoKCQlzd2l0Y2ggKCRtb2RlKQoJCXsKCQkJY2FzZSAnZnVsbCc6CgkJCQly ZXR1cm4gdXBtX2RhdGVfYXJjaGl2ZV9mdWxsKCRhdHRzLCAkdGhpbmcpOwoJCQlicmVhazsK CgkJCWNhc2UgJ3NtYXJ0JzoKCQkJZGVmYXVsdDoKCQkJCXJldHVybiB1cG1fZGF0ZV9hcmNo aXZlX3NtYXJ0KCRhdHRzLCAkdGhpbmcpOwoJCQlicmVhazsKCQl9Cgl9CgovLyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CgoJZnVuY3Rpb24gdXBtX2RhdGVfYXJjaGl2ZV9zbWFydCgkYXR0cywgJHRoaW5nKQoJewoJ CWdsb2JhbCAkcHJldGV4dDsKCgkJaWYgKCRwcmV0ZXh0Wydtb250aCddKQoJCXsKCQkJJG1v bnRoID0gJHByZXRleHRbJ21vbnRoJ107CgkJfQoKCQllbHNlCgkJewoJCQlyZXR1cm47CgkJ fQoKCQkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJCWV4dHJhY3QobEF0dHMo YXJyYXkoCgkJCSdjYXRlZ29yeScJCQkJID0+ICcnLAoJCQknZGF0ZV9mb3JtYXQnCQkJID0+ IChpc19udW1lcmljKHN0cmZ0aW1lKCclZScpKSA/ICclZScgOiAnJWQnKSwKCQkJJ2V4Y2x1 ZGVfY2F0ZWdvcnknID0+ICcnLAoJCQknZXhjbHVkZV9zZWN0aW9uJwkgPT4gJycsCgkJCSdm b3JtJwkJCQkJCSA9PiAnJywKCQkJJ2hlYWRpbmdfY2xhc3MnCQkgPT4gJycsCgkJCSdoZWFk aW5nX2Zvcm1hdCcJID0+ICclQiAlWScsCgkJCSdoZWFkaW5nX2lkJwkJCSA9PiAnJywKCQkJ J2hlYWRpbmdfbGV2ZWwnCQkgPT4gJzEnLAoJCQknaW5jbHVkZV9kYXRlJwkJID0+ICd5ZXMn LAoJCQknbGlzdF9jbGFzcycJCQkgPT4gJycsCgkJCSdsaXN0X2lkJwkJCQkJID0+ICcnLAoJ CQknbm9uZV9mb3VuZCcJCQkgPT4gJycsCgkJCSdwb3N0X2Zvcm0nCQkJCSA9PiAnJywKCQkJ J3NlY3Rpb24nCQkJCQkgPT4gJHByZXRleHRbJ3MnXSwKCQkJJ3NvcnQnCQkJCQkJID0+ICd0 aGVfZGF0ZSBhc2MnLAoJCQkndGltZScJCQkJCQkgPT4gJ3Bhc3QnCgkJKSwgJGF0dHMpKTsK CgkJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJCS8vIHByZXBhcmUgcXVlcnkK CgkJJG9mZnNldCA9IHR6X29mZnNldCgpOwoKCQlzd2l0Y2ggKCR0aW1lKQoJCXsKCQkJY2Fz ZSAnYW55JzoKCQkJCSR0aW1lID0gJyc7CgkJCWJyZWFrOwoKCQkJY2FzZSAnZnV0dXJlJzoK CQkJCSR0aW1lID0gIiBhbmQgUG9zdGVkID4gbm93KCkiOwoJCQlicmVhazsKCgkJCWNhc2Ug J3Bhc3QnOgoJCQlkZWZhdWx0OgoJCQkJJHRpbWUgPSAiIGFuZCBQb3N0ZWQgPD0gbm93KCki OwoJCQlicmVhazsKCQl9CgoJCWxpc3QoJHNlY3Rpb25fc3FsLCAkY2F0ZWdvcnlfc3FsKSA9 IHVwbV9kYXRlX2FyY2hpdmVfcXVlcnlfYnVpbGQoJHNlY3Rpb24sICRleGNsdWRlX3NlY3Rp b24sICRjYXRlZ29yeSwgJGV4Y2x1ZGVfY2F0ZWdvcnkpOwoKCQlsaXN0KCR5ZWFyLCAkbW9u dGgpID0gZXhwbG9kZSgnLScsICRtb250aCk7CgoJCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KCgkJJHJzID0gc2FmZV9yb3dzX3N0YXJ0KCIqLCB1bml4X3RpbWVzdGFtcChk YXRlX2FkZChQb3N0ZWQsIGludGVydmFsICckb2Zmc2V0JyBzZWNvbmQpKSBhcyB0aGVfZGF0 ZSwKCQkJZGF0ZV9mb3JtYXQoZGF0ZV9hZGQoUG9zdGVkLCBpbnRlcnZhbCAnJG9mZnNldCcg c2Vjb25kKSwgJyVkJykgYXMgdGhlX2RheSwKCQkJZGF0ZV9mb3JtYXQoZGF0ZV9hZGQoUG9z dGVkLCBpbnRlcnZhbCAnJG9mZnNldCcgc2Vjb25kKSwgJyVtJykgYXMgdGhlX21vbnRoLAoJ CQlkYXRlX2Zvcm1hdChkYXRlX2FkZChQb3N0ZWQsIGludGVydmFsICckb2Zmc2V0JyBzZWNv bmQpLCAnJVknKSBhcyB0aGVfeWVhciIsCgkJCSd0ZXh0cGF0dGVybicsCgkJCSJTdGF0dXMg PSA0ICR0aW1lICRzZWN0aW9uX3NxbCAkY2F0ZWdvcnlfc3FsIGFuZAoJCQlkYXRlX2Zvcm1h dChkYXRlX2FkZChQb3N0ZWQsIGludGVydmFsICckb2Zmc2V0JyBzZWNvbmQpLCAnJVknKSA9 ICciLmRvU2xhc2goJHllYXIpLiInIGFuZAoJCQlkYXRlX2Zvcm1hdChkYXRlX2FkZChQb3N0 ZWQsIGludGVydmFsICckb2Zmc2V0JyBzZWNvbmQpLCAnJW0nKSA9ICciLmRvU2xhc2goJG1v bnRoKS4iJyBvcmRlciBieSAiLmRvU2xhc2goJHNvcnQpKTsKCgkJaWYgKCEkcnMpCgkJewoJ CQlyZXR1cm47CgkJfQoKCQkkcG9zdF9jb3VudCA9IG51bVJvd3MoJHJzKTsKCgkJaWYgKCEk cG9zdF9jb3VudCkKCQl7CgkJCXJldHVybiBuLmdyYWYodXBtX2RhdGVfYXJjaGl2ZV9nVHh0 KCdub19tb250aF9hcmNoaXZlJykpOwoJCX0KCgkJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQoJCS8vIGRpc3BsYXkgcmVzdWx0cwoKCQkkaGVhZGluZ19pZCA9ICgkaGVhZGlu Z19pZCkgPyAnIGlkPSInLiRoZWFkaW5nX2lkLiciJyA6ICcnOwoJCSRoZWFkaW5nX2NsYXNz ID0gKCRoZWFkaW5nX2NsYXNzKSA/ICcgY2xhc3M9IicuJGhlYWRpbmdfY2xhc3MuJyInIDog Jyc7CgoJCSRsaXN0X3R5cGUgPSAoJGluY2x1ZGVfZGF0ZSA9PSAneWVzJykgPyAnZGwnIDog J3VsJzsKCQkkbGlzdF9pZCA9ICgkbGlzdF9pZCkgPyAnIGlkPSInLiRsaXN0X2lkLiciJyA6 ICcnOwoJCSRsaXN0X2NsYXNzID0gKCRsaXN0X2NsYXNzKSA/ICcgY2xhc3M9IicuJGxpc3Rf Y2xhc3MuJyInIDogJyc7CgoJCWlmICgkZm9ybSkKCQl7CgkJCSR3aGF0ID0gZmV0Y2hfZm9y bSgkZm9ybSk7CgkJfQoKCQllbHNlaWYgKCR0aGluZykKCQl7CgkJCSR3aGF0ID0gJHRoaW5n OwoJCX0KCgkJJGkgPSAwOwoKCQkkY3VycmVudF9kYXkgPSAnJzsKCgkJd2hpbGUgKCRyb3cg PSBuZXh0Um93KCRycykpCgkJewoJCQlleHRyYWN0KCRyb3cpOwoKCQkJaWYgKCRpbmNsdWRl X2RhdGUgPT0gJ3llcycgJiYgJHRoZV9kYXkgIT0gJGN1cnJlbnRfZGF5KQoJCQl7CgkJCQkk b3V0W10gPSBuLic8ZHQ+Jy5zdHJmdGltZSgkZGF0ZV9mb3JtYXQsICR0aGVfZGF0ZSkuJzwv ZHQ+JzsKCgkJCQkkY3VycmVudF9kYXkgPSAkdGhlX2RheTsKCQkJfQoKCQkJaWYgKCRmb3Jt IG9yICR0aGluZykKCQkJewoJCQkJKyskaTsKCgkJCQkkcm93Wyd1UG9zdGVkJ10gPSAkdGhl X2RhdGU7CgoJCQkJcG9wdWxhdGVBcnRpY2xlRGF0YSgkcm93KTsKCgkJCQkkR0xPQkFMU1sn dGhpc2FydGljbGUnXVsnaXNfZmlyc3QnXSA9ICgkaSA9PSAxKTsKCQkJCSRHTE9CQUxTWyd0 aGlzYXJ0aWNsZSddWydpc19sYXN0J10gPSAoJGkgPT0gJHBvc3RfY291bnQpOwoKCQkJCSRj b250ZW50cyA9IHBhcnNlKCR3aGF0KTsKCgkJCQl1bnNldCgkR0xPQkFMU1sndGhpc2FydGlj bGUnXSk7CgkJCX0KCgkJCWVsc2UKCQkJewoJCQkJJGNvbnRlbnRzID0gJzxhIHJlbD0iYm9v a21hcmsiIGhyZWY9IicucGVybWxpbmt1cmxfaWQoJElEKS4nIj4nLiRUaXRsZS4nPC9hPic7 CgkJCX0KCgkJCSRvdXRbXSA9ICgkaW5jbHVkZV9kYXRlID09ICd5ZXMnKSA/CgkJCQknPGRk PicuJGNvbnRlbnRzLic8L2RkPicgOgoJCQkJJzxsaT4nLiRjb250ZW50cy4nPC9saT4nOwoJ CX0KCgkJcmV0dXJuIG4udGFnKHN0cmZ0aW1lKCRoZWFkaW5nX2Zvcm1hdCwgJHRoZV9kYXRl KSwgJ2gnLiRoZWFkaW5nX2xldmVsLCAkaGVhZGluZ19pZC4kaGVhZGluZ19jbGFzcykuCgkJ CW4ubi4nPCcuJGxpc3RfdHlwZS4kbGlzdF9pZC4kbGlzdF9jbGFzcy4nPicuCgkJCW4udC5q b2luKG4udCwgJG91dCkuCgkJCW4uJzwvJy4kbGlzdF90eXBlLic+JzsKCX0KCi8vIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KCglmdW5jdGlvbiB1cG1fZGF0ZV9hcmNoaXZlX2Z1bGwoJGF0dHMsICR0aGluZykKCXsK CQlnbG9iYWwgJHByZXRleHQ7CgoJCWV4dHJhY3QobEF0dHMoYXJyYXkoCgkJCSdjYXRlZ29y eScJCQkJID0+ICcnLAoJCQknZGF0ZV9mb3JtYXQnCQkJID0+IChpc19udW1lcmljKHN0cmZ0 aW1lKCclZScpKSA/ICclZScgOiAnJWQnKSwKCQkJJ2V4Y2x1ZGVfY2F0ZWdvcnknID0+ICcn LAoJCQknZXhjbHVkZV9zZWN0aW9uJwkgPT4gJycsCgkJCSdmb3JtJwkJCQkJCSA9PiAnJywK CQkJJ2hlYWRpbmdfY2xhc3MnCQkgPT4gJycsCgkJCSdoZWFkaW5nX2Zvcm1hdCcJID0+ICcl QiAlWScsCgkJCSdoZWFkaW5nX2lkJwkJCSA9PiAnJywKCQkJJ2hlYWRpbmdfbGV2ZWwnCQkg PT4gMiwKCQkJJ2luY2x1ZGVfZGF0ZScJCSA9PiAneWVzJywKCQkJJ2xpc3RfY2xhc3MnCQkJ ID0+ICcnLAoJCQknbGlzdF9pZCcJCQkJCSA9PiAnJywKCQkJJ3NlY3Rpb24nCQkJCQkgPT4g JHByZXRleHRbJ3MnXSwKCQkJJ3NvcnQnCQkJCQkJID0+ICd0aGVfeWVhciBkZXNjLCB0aGVf bW9udGggZGVzYywgdGhlX2RhdGUgYXNjJywKCQkJJ3RpbWUnCQkJCQkJID0+ICdwYXN0JwoJ CSksICRhdHRzKSk7CgoJCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCQkvLyBw cmVwYXJlIHF1ZXJ5CgoJCSRvZmZzZXQgPSB0el9vZmZzZXQoKTsKCgkJc3dpdGNoICgkdGlt ZSkKCQl7CgkJCWNhc2UgJ2FueSc6CgkJCQkkdGltZSA9ICcnOwoJCQlicmVhazsKCgkJCWNh c2UgJ2Z1dHVyZSc6CgkJCQkkdGltZSA9ICIgYW5kIFBvc3RlZCA+IG5vdygpIjsKCQkJYnJl YWs7CgoJCQlkZWZhdWx0OgoJCQkJJHRpbWUgPSAiIGFuZCBQb3N0ZWQgPD0gbm93KCkiOwoJ CQlicmVhazsKCQl9CgoJCWxpc3QoJHNlY3Rpb25fc3FsLCAkY2F0ZWdvcnlfc3FsKSA9IHVw bV9kYXRlX2FyY2hpdmVfcXVlcnlfYnVpbGQoJHNlY3Rpb24sICRleGNsdWRlX3NlY3Rpb24s ICRjYXRlZ29yeSwgJGV4Y2x1ZGVfY2F0ZWdvcnkpOwoKCQkvLyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCgoJCSRycyA9IHNhZmVfcm93c19zdGFydCgiKiwgdW5peF90aW1lc3Rh bXAoZGF0ZV9hZGQoUG9zdGVkLCBpbnRlcnZhbCAnJG9mZnNldCcgc2Vjb25kKSkgYXMgdGhl X2RhdGUsCgkJCWRhdGVfZm9ybWF0KGRhdGVfYWRkKFBvc3RlZCwgaW50ZXJ2YWwgJyRvZmZz ZXQnIHNlY29uZCksICclZCcpIGFzIHRoZV9kYXksCgkJCWRhdGVfZm9ybWF0KGRhdGVfYWRk KFBvc3RlZCwgaW50ZXJ2YWwgJyRvZmZzZXQnIHNlY29uZCksICclbScpIGFzIHRoZV9tb250 aCwKCQkJZGF0ZV9mb3JtYXQoZGF0ZV9hZGQoUG9zdGVkLCBpbnRlcnZhbCAnJG9mZnNldCcg c2Vjb25kKSwgJyVtICVZJykgYXMgbW9udGhfeWVhciwKCQkJZGF0ZV9mb3JtYXQoZGF0ZV9h ZGQoUG9zdGVkLCBpbnRlcnZhbCAnJG9mZnNldCcgc2Vjb25kKSwgJyVZJykgYXMgdGhlX3ll YXIiLCAndGV4dHBhdHRlcm4nLAoJCQkiU3RhdHVzID0gNCAkdGltZSAkc2VjdGlvbl9zcWwg JGNhdGVnb3J5X3NxbCBvcmRlciBieSAiLmRvU2xhc2goJHNvcnQpKTsKCgkJaWYgKCEkcnMp CgkJewoJCQlyZXR1cm47CgkJfQoKCQkkcG9zdF9jb3VudCA9IG51bVJvd3MoJHJzKTsKCgkJ aWYgKCEkcG9zdF9jb3VudCkKCQl7CgkJCXJldHVybjsKCQl9CgoJCS8vIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KCQkvLyBkaXNwbGF5IHJlc3VsdHMKCgkJJGhlYWRpbmdfaWQg PSAoJGhlYWRpbmdfaWQpID8gJyBpZD0iJy4kaGVhZGluZ19pZC4nIicgOiAnJzsKCQkkaGVh ZGluZ19jbGFzcyA9ICgkaGVhZGluZ19jbGFzcykgPyAnIGNsYXNzPSInLiRoZWFkaW5nX2Ns YXNzLiciJyA6ICcnOwoKCQkkbGlzdF9pZCA9ICgkbGlzdF9pZCkgPyAnIGlkPSInLiRsaXN0 X2lkLiciJyA6ICcnOwoJCSRsaXN0X2NsYXNzID0gKCRsaXN0X2NsYXNzKSA/ICcgY2xhc3M9 IicuJGxpc3RfY2xhc3MuJyInIDogJyc7CgoJCWlmICgkZm9ybSkKCQl7CgkJCSR3aGF0ID0g ZmV0Y2hfZm9ybSgkZm9ybSk7CgkJfQoKCQllbHNlaWYgKCR0aGluZykKCQl7CgkJCSR3aGF0 ID0gJHRoaW5nOwoJCX0KCgkJJG91dCA9IGFycmF5KCk7CgoJCSRjdXJyZW50X21vbnRoID0g Jyc7CgkJJGN1cnJlbnRfZGF5ID0gJyc7CgoJCSRpID0gMDsKCgkJd2hpbGUgKCRyb3cgPSBu ZXh0Um93KCRycykpCgkJewoJCQlleHRyYWN0KCRyb3cpOwoKCQkJaWYgKCRtb250aF95ZWFy ICE9ICRjdXJyZW50X21vbnRoKQoJCQl7CgkJCQlpZiAoIWVtcHR5KCRjdXJyZW50X21vbnRo KSkKCQkJCXsKCQkJCQkkb3V0W10gPSAoJGluY2x1ZGVfZGF0ZSA9PSAneWVzJykgPwoJCQkJ CQluLic8L2RsPicgOgoJCQkJCQluLic8L3VsPic7CgkJCQl9CgoJCQkJJG91dFtdID0gbi5u LnRhZyhzdHJmdGltZSgkaGVhZGluZ19mb3JtYXQsICR0aGVfZGF0ZSksICdoJy4kaGVhZGlu Z19sZXZlbCwgJGhlYWRpbmdfaWQuJGhlYWRpbmdfY2xhc3MpOwoKCQkJCSRvdXRbXSA9ICgk aW5jbHVkZV9kYXRlID09ICd5ZXMnKSA/CgkJCQkJbi5uLic8ZGwnLiRsaXN0X2lkLiRsaXN0 X2NsYXNzLic+JyA6CgkJCQkJbi5uLic8dWwnLiRsaXN0X2lkLiRsaXN0X2NsYXNzLic+JzsK CgkJCQkkY3VycmVudF9tb250aCA9ICRtb250aF95ZWFyOwoJCQl9CgoJCQlpZiAoJGluY2x1 ZGVfZGF0ZSA9PSAneWVzJykKCQkJewoJCQkJaWYgKCR0aGVfZGF5ICE9ICRjdXJyZW50X2Rh eSkKCQkJCXsKCQkJCQkkb3V0W10gPSBuLnQuJzxkdD4nLnN0cmZ0aW1lKCRkYXRlX2Zvcm1h dCwgJHRoZV9kYXRlKS4nPC9kdD4nOwoKCQkJCQkkY3VycmVudF9kYXkgPSAkdGhlX2RheTsK CQkJCX0KCQkJfQoKCQkJaWYgKCRmb3JtIG9yICR0aGluZykKCQkJewoJCQkJKyskaTsKCgkJ CQkkcm93Wyd1UG9zdGVkJ10gPSAkdGhlX2RhdGU7CgoJCQkJcG9wdWxhdGVBcnRpY2xlRGF0 YSgkcm93KTsKCgkJCQkkR0xPQkFMU1sndGhpc2FydGljbGUnXVsnaXNfZmlyc3QnXSA9ICgk aSA9PSAxKTsKCQkJCSRHTE9CQUxTWyd0aGlzYXJ0aWNsZSddWydpc19sYXN0J10gPSAoJGkg PT0gJHBvc3RfY291bnQpOwoKCQkJCSRjb250ZW50cyA9IHBhcnNlKCR3aGF0KTsKCgkJCQl1 bnNldCgkR0xPQkFMU1sndGhpc2FydGljbGUnXSk7CgkJCX0KCgkJCWVsc2UKCQkJewoJCQkJ JGNvbnRlbnRzID0gJzxhIHJlbD0iYm9va21hcmsiIGhyZWY9IicucGVybWxpbmt1cmxfaWQo JElEKS4nIj4nLiRUaXRsZS4nPC9hPic7CgkJCX0KCgkJCSRvdXRbXSA9ICgkaW5jbHVkZV9k YXRlID09ICd5ZXMnKSA/CgkJCQluLnQuJzxkZD4nLiRjb250ZW50cy4nPC9kZD4nIDoKCQkJ CW4udC4nPGxpPicuJGNvbnRlbnRzLic8L2xpPic7CgkJfQoKCQlyZXR1cm4gKCRpbmNsdWRl X2RhdGUgPT0gJ3llcycpID8KCQkJam9pbignJywgJG91dCkubi4nPC9kbD4nIDoKCQkJam9p bignJywgJG91dCkubi4nPC91bD4nOwoJfQoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCWZ1bmN0aW9uIHVwbV9k YXRlX2FyY2hpdmVfcXVlcnlfYnVpbGQoJHNlY3Rpb24sICRleGNsdWRlX3NlY3Rpb24sICRj YXRlZ29yeSwgJGV4Y2x1ZGVfY2F0ZWdvcnkpCgl7CgkJLy8gLS0tLS0gc2VjdGlvbnMKCgkJ JHNlY3Rpb25fc3FsID0gJyc7CgoJCWlmICgkZXhjbHVkZV9zZWN0aW9uKQoJCXsKCQkJaWYg KCRleGNsdWRlX3NlY3Rpb24gPT0gJ2RlZmF1bHQnKQoJCQl7CgkJCQkkZXhjbHVkZV9zZWN0 aW9uID0gc2FmZV9jb2x1bW4oJ25hbWUnLCAndHhwX3NlY3Rpb24nLCAib25fZnJvbnRwYWdl ID0gJzEnIik7CgkJCX0KCgkJCWVsc2UKCQkJewoJCQkJJGV4Y2x1ZGVfc2VjdGlvbiA9IGRv X2xpc3QoJGV4Y2x1ZGVfc2VjdGlvbik7CgkJCX0KCgkJCSRleGNsdWRlX3NlY3Rpb24gPSBq b2luKCInLCciLCBkb1NsYXNoKCRleGNsdWRlX3NlY3Rpb24pKTsKCgkJCSRzZWN0aW9uX3Nx bCA9ICJhbmQgU2VjdGlvbiBub3QgaW4oJyRleGNsdWRlX3NlY3Rpb24nKSI7CgkJfQoKCQll bHNlaWYgKCRzZWN0aW9uKQoJCXsKCQkJaWYgKCRzZWN0aW9uID09ICdkZWZhdWx0JykKCQkJ ewoJCQkJJHNlY3Rpb24gPSBzYWZlX2NvbHVtbignbmFtZScsICd0eHBfc2VjdGlvbicsICJv bl9mcm9udHBhZ2UgPSAnMSciKTsKCQkJfQoKCQkJZWxzZQoJCQl7CgkJCQkkc2VjdGlvbiA9 IGRvX2xpc3QoJHNlY3Rpb24pOwoJCQl9CgoJCQkkc2VjdGlvbiA9IGpvaW4oIicsJyIsIGRv U2xhc2goJHNlY3Rpb24pKTsKCgkJCSRzZWN0aW9uX3NxbCA9ICJhbmQgU2VjdGlvbiBpbign JHNlY3Rpb24nKSI7CgkJfQoKCQkvLyAtLS0tLSBjYXRlZ29yaWVzCgoJCSRjYXRlZ29yeV9z cWwgPSAnJzsKCgkJaWYgKCRleGNsdWRlX2NhdGVnb3J5KQoJCXsKCQkJJGV4Y2x1ZGVfY2F0 ZWdvcnkgPSBqb2luKCInLCciLCBkb1NsYXNoKGRvX2xpc3QoJGV4Y2x1ZGVfY2F0ZWdvcnkp KSk7CgoJCQkkY2F0ZWdvcnlfc3FsID0gImFuZCAoQ2F0ZWdvcnkxIG5vdCBpbignJGV4Y2x1 ZGVfY2F0ZWdvcnknKSBhbmQgQ2F0ZWdvcnkyIG5vdCBpbignJGV4Y2x1ZGVfY2F0ZWdvcnkn KSkiOwoJCX0KCgkJZWxzZWlmICgkY2F0ZWdvcnkpCgkJewoJCQkkY2F0ZWdvcnkgPSBqb2lu KCInLCciLCBkb1NsYXNoKGRvX2xpc3QoJGNhdGVnb3J5KSkpOwoKCQkJJGNhdGVnb3J5X3Nx bCA9ICJhbmQgKENhdGVnb3J5MSBpbignJGNhdGVnb3J5Jykgb3IgQ2F0ZWdvcnkyIGluKCck Y2F0ZWdvcnknKSkiOwoJCX0KCgkJcmV0dXJuIGFycmF5KCRzZWN0aW9uX3NxbCwgJGNhdGVn b3J5X3NxbCk7Cgl9CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJZnVuY3Rpb24gdXBtX2RhdGVfYXJjaGl2ZV9s b2FkKCkKCXsKCQlnbG9iYWwgJHByZWZzLCAkcHJldGV4dCwgJHMsICRtb250aCwgJHN0YXR1 cywgJHBhZ2U7CgoJCWlmIChlbXB0eSgkcHJlZnNbJ3VwbV9kYXRlX2FyY2hpdmVfbGlzdGVu J10pKQoJCXsKCQkJcmV0dXJuOwoJCX0KCgkJJHNlY3Rpb25zID0gdW5zZXJpYWxpemUoJHBy ZWZzWyd1cG1fZGF0ZV9hcmNoaXZlX2xpc3RlbiddKTsKCgkJaWYgKGVtcHR5KCRzZWN0aW9u cykpCgkJewoJCQlyZXR1cm47CgkJfQoKCQlpZiAoJHByZXRleHRbJ3N0YXR1cyddICE9ICc0 MDQnKQoJCXsKCQkJcmV0dXJuOwoJCX0KCgkJJHJlcXVlc3RfdXJpID0gcHJlZ19yZXBsYWNl KCJ8Xmh0dHBzPzovL1teL10rfGkiLCAnJywgc2VydmVyU2V0KCdSRVFVRVNUX1VSSScpKTsK CgkJaWYgKCEkcmVxdWVzdF91cmkgYW5kIHNlcnZlclNldCgnU0NSSVBUX05BTUUnKSkKCQl7 CgkJCSRyZXF1ZXN0X3VyaSA9IHNlcnZlclNldCgnU0NSSVBUX05BTUUnKS4oc2VydmVyU2V0 KCdRVUVSWV9TVFJJTkcnKSA/ICc/Jy5zZXJ2ZXJTZXQoJ1FVRVJZX1NUUklORycpIDogJycp OwoJCX0KCgkJaWYgKCEkcmVxdWVzdF91cmkgYW5kICRhcmd2ID0gc2VydmVyU2V0KCdhcmd2 JykpCgkJewoJCQkkcmVxdWVzdF91cmkgPSBAc3Vic3RyKCRhcmd2WzBdLCBzdHJwb3MoJGFy Z3ZbMF0sICc7JykgKyAxKTsKCQl9CgoJCSRzdWJwYXRoID0gcHJlZ19xdW90ZShwcmVnX3Jl cGxhY2UoIi9odHRwcz86XC9cLy4qKFwvLiopL1VpIiwgIiQxIiwgaHUpLCAnLycpOwoKCQkk cmVxID0gcHJlZ19yZXBsYWNlKCIvXiRzdWJwYXRoL2kiLCAnLycsICRyZXF1ZXN0X3VyaSk7 CgoJCSRyZXEgPSBjaG9wVXJsKCRyZXEpOwoKCQlpZiAoISRwcmV0ZXh0WydpZCddIGFuZCBp bl9hcnJheSgkcmVxWyd1MSddLCAkc2VjdGlvbnMpKQoJCXsKCQkJJHByZXRleHRbJ3N0YXR1 cyddID0gJHN0YXR1cyA9ICcyMDAnOwoKCQkJJHByZXRleHRbJ3MnXSA9ICRzID0gJHJlcVsn dTEnXTsKCgkJCSRycyA9IHNhZmVfcm93KCdwYWdlJywgJ3R4cF9zZWN0aW9uJywgIm5hbWUg PSAnIi5kb1NsYXNoKCRwcmV0ZXh0WydzJ10pLiInIGxpbWl0IDEiKTsKCQkJJHByZXRleHRb J3BhZ2UnXSA9ICRwYWdlID0gQCRyc1sncGFnZSddOwoKCQkJaWYgKCRyZXFbJ3UyJ10gYW5k IHByZWdfbWF0Y2goJy9eWzAtOV17NH0tezF9WzAtOV17Mn0kLycsICRyZXFbJ3UyJ10pKQoJ CQl7CgkJCQkkcHJldGV4dFsnbW9udGgnXSA9ICRtb250aCA9ICRyZXFbJ3UyJ107CgkJCX0K CQl9Cgl9CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCgoJZnVuY3Rpb24gdXBtX2RhdGVfYXJjaGl2ZV9wcmVmcygk ZXZlbnQsICRzdGVwKQoJewoJCWdsb2JhbCAkcHJlZnM7CgoJCXBhZ2V0b3AodXBtX2RhdGVf YXJjaGl2ZV9nVHh0KCdwcmVmcycpLCAoJHN0ZXAgPT0gJ3VwZGF0ZScgPyBnVHh0KCdwcmVm ZXJlbmNlc19zYXZlZCcpIDogJycpKTsKCgkJZWNobyA8PDxjc3MKCjxzdHlsZSB0eXBlPSJ0 ZXh0L2NzcyIgbWVkaWE9InNjcmVlbixwcm9qZWN0aW9uIj4KPCEtLQoKI3VwbV9kYXRlX2Fy Y2hpdmUgewptYXJnaW46IDNlbSBhdXRvIGF1dG8gYXV0bzsKd2lkdGg6IDIwZW07Cn0KCiN1 cG1fZGF0ZV9hcmNoaXZlIHVsIHsKbWFyZ2luOiAwIGF1dG8gMTVweCBhdXRvOwpwYWRkaW5n OiAwOwp3aWR0aDogMTRlbTsKbGlzdC1zdHlsZTogbm9uZSBub25lOwp9CgojdXBtX2RhdGVf YXJjaGl2ZSBsaSB7Cm1hcmdpbjogMCAwIDVweCAwOwpwYWRkaW5nOiAwOwp9CgojdXBtX2Rh dGVfYXJjaGl2ZSBsaSBpbnB1dCB7Cm1hcmdpbjogMDsKcGFkZGluZzogMDsKdmVydGljYWwt YWxpZ246IG1pZGRsZTsKfQoKLS0+Cjwvc3R5bGU+Cgpjc3M7CgoJCWlmICgkc3RlcCA9PSAn dXBkYXRlJykKCQl7CgkJCSRzZWN0aW9ucyA9IGdwcygnc2VjdGlvbnMnKTsKCgkJCWlmIChl bXB0eSgkc2VjdGlvbnMpKQoJCQl7CgkJCQkkc2VjdGlvbnMgPSBhcnJheSgpOwoJCQl9CgoJ CQllbHNlCgkJCXsKCQkJCSRzZWN0aW9ucyA9IGRvU2xhc2goJHNlY3Rpb25zKTsKCQkJfQoK CQkJJHNlY3Rpb25zID0gc2VyaWFsaXplKCRzZWN0aW9ucyk7CgoJCQlzYWZlX3VwZGF0ZSgn dHhwX3ByZWZzJywgInZhbCA9ICckc2VjdGlvbnMnIiwgIm5hbWUgPSAndXBtX2RhdGVfYXJj aGl2ZV9saXN0ZW4nIik7CgoJCQkkcHJlZnNbJ3VwbV9kYXRlX2FyY2hpdmVfbGlzdGVuJ10g PSAkc2VjdGlvbnM7CgkJfQoKCQkkc2VjdGlvbnMgPSB1bnNlcmlhbGl6ZSgkcHJlZnNbJ3Vw bV9kYXRlX2FyY2hpdmVfbGlzdGVuJ10pOwoKCQllY2hvIG4ubi4nPGRpdiBpZD0idXBtX2Rh dGVfYXJjaGl2ZSI+Jy4KCQkJbi5uLmhlZCh1cG1fZGF0ZV9hcmNoaXZlX2dUeHQoJ3ByZWZz JyksICcxJyk7CgoJCSRycyA9IHNhZmVfcm93c19zdGFydCgnbmFtZScsICd0eHBfc2VjdGlv bicsICJuYW1lICE9ICdkZWZhdWx0JyBvcmRlciBieSBuYW1lIGFzYyIpOwoKCQlpZiAoJHJz KQoJCXsKCQkJJG91dCA9IGFycmF5KCk7CgoJCQl3aGlsZSAoJHJvdyA9IG5leHRSb3coJHJz KSkKCQkJewoJCQkJZXh0cmFjdCgkcm93KTsKCgkJCQkkdGVtcCA9IG4udC4nPGxpPjxsYWJl bD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InNlY3Rpb25zW10iIHZhbHVlPSInLiRu YW1lLiciJzsKCgkJCQlpZiAoaXNfYXJyYXkoJHNlY3Rpb25zKSBhbmQgaW5fYXJyYXkoJG5h bWUsICRzZWN0aW9ucykpCgkJCQl7CgkJCQkJJHRlbXAgLj0gJyBjaGVja2VkPSJjaGVja2Vk Iic7CgkJCQl9CgoJCQkJJHRlbXAgLj0gJyAvPiAnLiRuYW1lLic8L2xhYmVsPjwvbGk+JzsK CgkJCQkkb3V0W10gPSAkdGVtcDsKCQkJfQoKCQkJaWYgKCRvdXQpCgkJCXsKCQkJCWVjaG8g bi5uLmZvcm0oCgkJCQkJbi5lSW5wdXQoJ3VwbV9kYXRlX2FyY2hpdmUnKS4KCQkJCQluLnNJ bnB1dCgndXBkYXRlJykuCgoJCQkJCW4ubi4nPHVsPicuCgkJCQkJCWpvaW4oJycsICRvdXQp LgoJCQkJCW4uJzwvdWw+Jy4KCgkJCQkJbi5uLmZJbnB1dCgnc3VibWl0JywgJ3VwZGF0ZScs ICdVcGRhdGUnLCAnc21hbGxlcmJveCcpCgkJCQkpOwoJCQl9CgkJfQoKCQllY2hvIG4ubi4n PC9kaXY+JzsKCX0KCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglmdW5jdGlvbiB1cG1fZGF0ZV9hcmNoaXZlX2lu c3RhbGwoKQoJewoJCWdsb2JhbCAkcHJlZnM7CgoJCWlmICghaXNzZXQoJHByZWZzWyd1cG1f ZGF0ZV9hcmNoaXZlX2xpc3RlbiddKSkKCQl7CgkJCXNhZmVfaW5zZXJ0KCd0eHBfcHJlZnMn LCAiCgkJCQluYW1lID0gJ3VwbV9kYXRlX2FyY2hpdmVfbGlzdGVuJywKCQkJCXZhbCA9ICcn LAoJCQkJaHRtbCA9ICd0ZXh0X2lucHV0JywKCQkJCXByZWZzX2lkID0gMSwKCQkJCXR5cGUg PSAyLAoJCQkJZXZlbnQgPSAncHVibGlzaCcsCgkJCQlwb3NpdGlvbiA9IDAKCQkJIik7CgkJ fQoJfQoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQoKCWZ1bmN0aW9uIHVwbV9kYXRlX2FyY2hpdmVfZ1R4dCgkd2hh dCwgJGF0dHMgPSBhcnJheSgpKQoJewoJCSRsYW5nID0gYXJyYXkoCgkJCSdub19tb250aF9h cmNoaXZlJyA9PiAnTm8gYXJ0aWNsZXMgY291bGQgYmUgZm91bmQgZm9yIHRoZSByZXF1ZXN0 ZWQgbW9udGguJywKCQkJJ3ByZWZzJwkJCQkJCSA9PiAndXBtX2RhdGVfYXJjaGl2ZSBQcmVm ZXJlbmNlcycKCQkpOwoKCQlyZXR1cm4gc3RydHIoJGxhbmdbJHdoYXRdLCAkYXR0cyk7Cgl9 IjtzOjQ6ImhlbHAiO3M6MTE4MDM6IjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNj cmVlbixwcm9qZWN0aW9uIj4KPCEtLQp2YXIgewoJcGFkZGluZzogMC4xZW07Cglmb250LXN0 eWxlOiBub3JtYWw7Cglmb250LXdlaWdodDogYm9sZDsKCWZvbnQtZmFtaWx5OiBtb25vc3Bh Y2U7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOwp9Cgp0YWJsZS51cG1fdGFnX2F0dHMgewoJ bWFyZ2luOiAwIDAgMTVweCAwOwoJYm9yZGVyOiAxcHggc29saWQgI2VlZTsKCWJvcmRlci1j b2xsYXBzZTogY29sbGFwc2U7Cn0KCnRhYmxlLnVwbV90YWdfYXR0cyBjYXB0aW9uIHsKCXBh ZGRpbmc6IDAuNWVtOwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cgl0ZXh0LWFsaWduOiBsZWZ0OwoJ YmFja2dyb3VuZC1jb2xvcjogI2RkZDsKfQoKdGFibGUudXBtX3RhZ19hdHRzIHRyIHsKCWJv cmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVlOwp9Cgp0YWJsZS51cG1fdGFnX2F0dHMgdGgs IHRhYmxlLnVwbV90YWdfYXR0cyB0ZCB7CgltYXJnaW46IDA7CglwYWRkaW5nOiAwLjVlbSAx ZW07Cgl2ZXJ0aWNhbC1hbGlnbjogdG9wOwp9Cgp0YWJsZS51cG1fdGFnX2F0dHMgdGggewoJ Zm9udC13ZWlnaHQ6IG5vcm1hbDsKCXRleHQtYWxpZ246IGxlZnQ7CgliYWNrZ3JvdW5kLWNv bG9yOiAjZWVlOwp9Ci0tPgo8L3N0eWxlPgoKPGgxPnVwbV9kYXRlX2FyY2hpdmU8L2gxPgoK PG9sIGlkPSJzdGFydCI+Cgk8bGk+PGEgaHJlZj0iI2ludHJvIj5JbnRybzwvYT48L2xpPgoJ PGxpPjxhIGhyZWY9IiNzZXR1cCI+U2V0dXA8L2E+PC9saT4KCTxsaT48YSBocmVmPSIjdGFn cyI+TmV3IFRhZ3M8L2E+PC9saT4KCTxsaT48YSBocmVmPSIjY3JlZGl0Ij5DcmVkaXQgYW5k IERldmVsb3BlciBOb3RlczwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNmb290bm90ZXMiPkZv b3Rub3RlczwvYT48L2xpPgo8L29sPgoKCgo8aDIgaWQ9ImludHJvIj5JbnRybzwvaDI+Cgo8 cD5TaW1wbGUsIGZhc3QgYW5kIGVmZmljaWVudCBhcnRpY2xlIGFyY2hpdmVzLjwvcD4KCgoK PGgyIGlkPSJzZXR1cCI+U2V0dXA8L2gyPgoKPHA+QmVjYXVzZSBvZiBob3cgVGV4dHBhdHRl cm4mIzgyMTc7cyBlcnJvciBoYW5kbGluZyB3b3JrcywgaWYgeW91IGFyZSB1c2luZyBjbGVh biB1cmxzLCBhbmQgd2lzaCB0byBtYWtlIHVzZSBvZiB0aGUgcGx1Z2luJiM4MjE3O3MgJiM4 MjIwO3NtYXJ0JiM4MjIxOyBtb2RlLCB5b3Ugd2lsbCBuZWVkIHRvIHRlbGwgdGhlIHBsdWdp biB3aGVuIGl0IHNob3VsZCAmIzgyMjA7bGlzdGVuJiM4MjIxOyBmb3IgYXJjaGl2ZSByZXF1 ZXN0cy4gU2ltcGx5IGhlYWQgdG8gdGhlIHBsdWdpbiYjODIxNztzIHByZWZlcmVuY2VzLCBh bmQgY2hlY2sgb2ZmIHRoZSBzZWN0aW9ucyB5b3Ugd2FudC4gVGhpcyBpcyBub3QgbmVjZXNz YXJ5IGZvciBtZXNzeSB1cmxzLjwvcD4KCjxwPnVwbV9kYXRlX21lbnUgY2FuIG9ubHkgYmUg dXNlZCBvbiB0aGUgZnJvbnQgcGFnZSBieSB1c2luZyBtZXNzeSB1cmxzLiBUaGlzIGlzIGR1 ZSB0byBob3cgVGV4dHBhdHRlcm4gdW5kZXJzdGFuZHMgc2VjdGlvbnMgYW5kIHRoZSBmcm9u dCBwYWdlLjwvcD4KCgoKPGgyIGlkPSJ0YWdzIj5OZXcgVGFnczwvaDI+CgoKPHRhYmxlIGNs YXNzPSJ1cG1fdGFnX2F0dHMiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CgoJ PGNhcHRpb24+dXBtX2RhdGVfbWVudTwvY2FwdGlvbj4KCgk8dHI+CgkJPHRoPk5hbWU8L3Ro PgoJCTx0aD5EZXNjcmlwdGlvbjwvdGg+CgkJPHRoPlJlcXVpcmVkPzwvdGg+CgkJPHRoPkF2 YWlsYWJsZSBWYWx1ZXM8L3RoPgoJCTx0aD5EZWZhdWx0IFZhbHVlPC90aD4KCTwvdHI+CgoJ PHRyPgoJCTx0ZD5jYXRlZ29yeTwvdGQ+CgkJPHRkPlRoZSBjYXRlZ29yeS9jYXRlZ29yaWVz IG9mIGFydGljbGVzIHRvIGluY2x1ZGUgaW4gdGhlIGFyY2hpdmUuIFlvdSBjYW4gZWl0aGVy IGluY2x1ZGUgb3IgZXhjbHVkZSAodXNpbmcgPHZhcj5leGNsdWRlX2NhdGVnb3J5PC92YXI+ KSwgYnV0IG5vdCBib3RoIGF0IHRoZSBzYW1lIHRpbWUuPC90ZD4KCQk8dGQ+Tm88L3RkPgoJ CTx0ZD5BbnkgZXhpc3RpbmcgY2F0ZWdvcnkgbmFtZShzKSwgY29tbWEtc2VwYXJhdGVkLjwv dGQ+CgkJPHRkPkN1cnJlbnQgY2F0ZWdvcnk8L3RkPgoJPC90cj4KCgk8dHI+CgkJPHRkPmNs YXNzPC90ZD4KCQk8dGQ+VGhlIChYKUhUTUwvQ1NTIGNsYXNzIHRvIGFwcGx5IHRvIHRoZSBs aXN0LjwvdGQ+CgkJPHRkPk5vPC90ZD4KCQk8dGQ+QW55IHZhbGlkIChYKUhUTUwvQ1NTIGNs YXNzIG5hbWUuPC90ZD4KCQk8dGQ+VW5zZXQ8L3RkPgoJPC90cj4KCgk8dHI+CgkJPHRkPmV4 Y2x1ZGVfY2F0ZWdvcnk8L3RkPgoJCTx0ZD5UaGUgY2F0ZWdvcnkvY2F0ZWdvcmllcyBvZiBh cnRpY2xlcyB0byBleGNsdWRlIGZyb20gdGhlIGFyY2hpdmUuIFlvdSBjYW4gZWl0aGVyIGV4 Y2x1ZGUgb3IgaW5jbHVkZSAodXNpbmcgPHZhcj5jYXRlZ29yeTwvdmFyPiksIGJ1dCBub3Qg Ym90aCBhdCB0aGUgc2FtZSB0aW1lLjwvdGQ+CgkJPHRkPk5vPC90ZD4KCQk8dGQ+QW55IGV4 aXN0aW5nIGNhdGVnb3J5IG5hbWUocyksIGNvbW1hLXNlcGFyYXRlZC48L3RkPgoJCTx0ZD5V bnNldDwvdGQ+Cgk8L3RyPgoKCTx0cj4KCQk8dGQ+ZXhjbHVkZV9zZWN0aW9uPC90ZD4KCQk8 dGQ+VGhlIHNlY3Rpb24ocykgb2YgYXJ0aWNsZXMgdG8gZXhjbHVkZSBmcm9tIHRoZSBhcmNo aXZlLiBZb3UgY2FuIGVpdGhlciBleGNsdWRlIG9yIGluY2x1ZGUgKHVzaW5nIDx2YXI+c2Vj dGlvbjwvdmFyPiksIGJ1dCBub3QgYm90aCBhdCB0aGUgc2FtZSB0aW1lLjwvdGQ+CgkJPHRk Pk5vPC90ZD4KCQk8dGQ+QW55IGV4aXN0aW5nIHNlY3Rpb24gbmFtZShzKSwgY29tbWEtc2Vw YXJhdGVkLjwvdGQ+CgkJPHRkPlVuc2V0PC90ZD4KCTwvdHI+CgoJPHRyPgoJCTx0ZD5pZDwv dGQ+CgkJPHRkPlRoZSAoWClIVE1ML0NTUyBpZCB0byBhcHBseSB0byB0aGUgbGlzdC48L3Rk PgoJCTx0ZD5ObzwvdGQ+CgkJPHRkPkFueSB2YWxpZCAoWClIVE1ML0NTUyBpZC48L3RkPgoJ CTx0ZD5VbnNldDwvdGQ+Cgk8L3RyPgoKCTx0cj4KCQk8dGQ+aW5zZXJ0X2VtcHR5X21vbnRo czwvdGQ+CgkJPHRkPldoZXRoZXIgdG8gaW5jbHVkZSBpbiB0aGUgbGlzdCBtb250aHMgd2l0 aG91dCBhcnRpY2xlcy48L3RkPgoJCTx0ZD5ObzwvdGQ+CgkJPHRkPjx2YXI+eWVzPC92YXI+ IG9yIDx2YXI+bm88L3Zhcj48L3RkPgoJCTx0ZD48dmFyPnllczwvdmFyPjwvdGQ+Cgk8L3Ry PgoKCTx0cj4KCQk8dGQ+bGlua190bzwvdGQ+CgkJPHRkPlRoZSBzZWN0aW9uIHRvIGluY2x1 ZGUgd2l0aGluIHRoZSBtb250aCB1cmwuPC90ZD4KCQk8dGQ+PC90ZD4KCQk8dGQ+QW55IHZh bGlkIHNlY3Rpb24gZm9yIHdoaWNoIHlvdSBoYXZlIGVuYWJsZWQgc21hcnQgbW9kZSwgYW5k IGFsc28gY29udGFpbnMgdGhlIHVwbV9kYXRlX2FyY2hpdmUgdGFnLjwvdGQ+CgkJPHRkPkN1 cnJlbnQgc2VjdGlvbjwvdGQ+Cgk8L3RyPgoKCTx0cj4KCQk8dGQ+bW9udGhfZm9ybWF0PC90 ZD4KCQk8dGQ+SG93IHRvIGZvcm1hdCB0aGUgbW9udGggZGlzcGxheS48L3RkPgoJCTx0ZD5O bzwvdGQ+CgkJPHRkPkFueSB2YWxpZCA8YSBocmVmPSJodHRwOi8vcGhwLm5ldC9zdHJmdGlt ZSI+c3RyZnRpbWUoKSBmb3JtYXQgc3RyaW5nPC9hPi48L3RkPgoJCTx0ZD48dmFyPiViPC92 YXI+PC90ZD4KCTwvdHI+CgoJPHRyPgoJCTx0ZD5yZW1haW5fbGlua2VkPC90ZD4KCQk8dGQ+ V2hlbiB2aWV3aW5nIGEgbW9udGgmIzgyMTc7cyBwb3N0IGxpc3QsIHdoZXRoZXIgdG8gZGlz cGxheSB0aGUgbW9udGggYXMgYSB1cmwgb3IgdGV4dC48L3RkPgoJCTx0ZD5ObzwvdGQ+CgkJ PHRkPjx2YXI+eWVzPC92YXI+IG9yIDx2YXI+bm88L3Zhcj48L3RkPgoJCTx0ZD48dmFyPnll czwvdmFyPjwvdGQ+Cgk8L3RyPgoKCTx0cj4KCQk8dGQ+c2VjdGlvbjwvdGQ+CgkJPHRkPlRo ZSBzZWN0aW9uKHMpIG9mIGFydGljbGVzIHRvIGluY2x1ZGUgaW4gdGhlIGFyY2hpdmUuIFlv dSBjYW4gZWl0aGVyIGluY2x1ZGUgb3IgZXhjbHVkZSAodXNpbmcgPHZhcj5leGNsdWRlX3Nl Y3Rpb248L3Zhcj4pLCBidXQgbm90IGJvdGggYXQgdGhlIHNhbWUgdGltZS48L3RkPgoJCTx0 ZD5Oby48L3RkPgoJCTx0ZD5BbnkgZXhpc3Rpbmcgc2VjdGlvbiBuYW1lKHMpLCBjb21tYS1z ZXBhcmF0ZWQuPC90ZD4KCQk8dGQ+Q3VycmVudCBzZWN0aW9uPC90ZD4KCTwvdHI+CgoJPHRy PgoJCTx0ZD5zb3J0PC90ZD4KCQk8dGQ+PC90ZD4KCQk8dGQ+Tm8uPC90ZD4KCQk8dGQ+PHZh cj50aGVfbW9udGg8L3Zhcj4gb3IgPHZhcj50aGVfeWVhcjwvdmFyPiwgPHZhcj5hc2M8L3Zh cj4gb3IgPHZhcj5kZXNjPC92YXI+PC90ZD4KCQk8dGQ+PHZhcj50aGVfeWVhciBkZXNjLCB0 aGVfbW9udGggYXNjPC92YXI+PC90ZD4KCTwvdHI+CgoJPHRyPgoJCTx0ZD50aW1lPC90ZD4K CQk8dGQ+UmVzdHJpY3QgYnkgZGF0ZS90aW1lIHBvc3RlZC48L3RkPgoJCTx0ZD5ObzwvdGQ+ CgkJPHRkPjx2YXI+cGFzdDwvdmFyPiwgPHZhcj5mdXR1cmU8L3Zhcj4gb3IgPHZhcj5hbnk8 L3Zhcj48L3RkPgoJCTx0ZD48dmFyPnBhc3Q8L3Zhcj48L3RkPgoJPC90cj4KCgk8dHI+CgkJ PHRkPnllYXJfZm9ybWF0PC90ZD4KCQk8dGQ+SG93IHRvIGZvcm1hdCB0aGUgeWVhciBoZWFk aW5nIGRpc3BsYXkuPC90ZD4KCQk8dGQ+Tm88L3RkPgoJCTx0ZD5BbnkgdmFsaWQgPGEgaHJl Zj0iaHR0cDovL3BocC5uZXQvc3RyZnRpbWUiPnN0cmZ0aW1lKCkgZm9ybWF0IHN0cmluZzwv YT4uPC90ZD4KCQk8dGQ+PHZhcj4lWTwvdmFyPjwvdGQ+Cgk8L3RyPgo8L3RhYmxlPgoKCjx0 YWJsZSBjbGFzcz0idXBtX3RhZ19hdHRzIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9 IjAiPgoKCTxjYXB0aW9uPnVwbV9kYXRlX2FyY2hpdmU8L2NhcHRpb24+CgoJPHRyPgoJCTx0 aD5OYW1lPC90aD4KCQk8dGg+RGVzY3JpcHRpb248L3RoPgoJCTx0aD5SZXF1aXJlZD88L3Ro PgoJCTx0aD5BdmFpbGFibGUgVmFsdWVzPC90aD4KCQk8dGg+RGVmYXVsdCBWYWx1ZTwvdGg+ Cgk8L3RyPgoKCTx0cj4KCQk8dGQ+Y2F0ZWdvcnk8L3RkPgoJCTx0ZD5UaGUgY2F0ZWdvcnkv Y2F0ZWdvcmllcyBvZiBhcnRpY2xlcyB0byBpbmNsdWRlIGluIHRoZSBhcmNoaXZlLiBZb3Ug Y2FuIGVpdGhlciBpbmNsdWRlIG9yIGV4Y2x1ZGUgKHVzaW5nIDx2YXI+ZXhjbHVkZV9jYXRl Z29yeTwvdmFyPiksIGJ1dCBub3QgYm90aCBhdCB0aGUgc2FtZSB0aW1lLjwvdGQ+CgkJPHRk Pk5vPC90ZD4KCQk8dGQ+QW55IGV4aXN0aW5nIGNhdGVnb3J5IG5hbWUocyksIGNvbW1hLXNl cGFyYXRlZC48L3RkPgoJCTx0ZD5DdXJyZW50IGNhdGVnb3J5PC90ZD4KCTwvdHI+CgoJPHRy PgoJCTx0ZD5kYXRlX2Zvcm1hdDwvdGQ+CgkJPHRkPklmIGluY2x1ZGluZyB0aGUgZGF0ZSB3 aXRoIDx2YXI+aW5jbHVkZV9kYXRlPC92YXI+IGF0dHJpYnV0ZSwgaG93IHRvIGZvcm1hdCB0 aGUgZGF0ZSBkaXNwbGF5IGZvciBkYWNoIGRheS48L3RkPgoJCTx0ZD5ObzwvdGQ+CgkJPHRk PkFueSB2YWxpZCA8YSBocmVmPSJodHRwOi8vcGhwLm5ldC9zdHJmdGltZSI+c3RyZnRpbWUo KSBmb3JtYXQgc3RyaW5nPC9hPi48L3RkPgoJCTx0ZD48dmFyPiVlPC92YXI+PHN1cD48YSBo cmVmPSIjZm4xIiBpZD0icmVmMSI+MTwvYT48L3N1cD48L3RkPgoJPC90cj4KCgk8dHI+CgkJ PHRkPmV4Y2x1ZGVfY2F0ZWdvcnk8L3RkPgoJCTx0ZD5UaGUgY2F0ZWdvcnkvY2F0ZWdvcmll cyBvZiBhcnRpY2xlcyB0byBleGNsdWRlIGZyb20gdGhlIGFyY2hpdmUuIFlvdSBjYW4gZWl0 aGVyIGV4Y2x1ZGUgb3IgaW5jbHVkZSAodXNpbmcgPHZhcj5jYXRlZ29yeTwvdmFyPiksIGJ1 dCBub3QgYm90aCBhdCB0aGUgc2FtZSB0aW1lLjwvdGQ+CgkJPHRkPk5vPC90ZD4KCQk8dGQ+ QW55IGV4aXN0aW5nIGNhdGVnb3J5IG5hbWUocyksIGNvbW1hLXNlcGFyYXRlZC48L3RkPgoJ CTx0ZD5VbnNldDwvdGQ+Cgk8L3RyPgoKCTx0cj4KCQk8dGQ+ZXhjbHVkZV9zZWN0aW9uPC90 ZD4KCQk8dGQ+VGhlIHNlY3Rpb24ocykgb2YgYXJ0aWNsZXMgdG8gZXhjbHVkZSBmcm9tIHRo ZSBhcmNoaXZlLiBZb3UgY2FuIGVpdGhlciBleGNsdWRlIG9yIGluY2x1ZGUgKHVzaW5nIDx2 YXI+c2VjdGlvbjwvdmFyPiksIGJ1dCBub3QgYm90aCBhdCB0aGUgc2FtZSB0aW1lLjwvdGQ+ CgkJPHRkPk5vPC90ZD4KCQk8dGQ+QW55IGV4aXN0aW5nIHNlY3Rpb24gbmFtZShzKSwgY29t bWEtc2VwYXJhdGVkLjwvdGQ+CgkJPHRkPlVuc2V0PC90ZD4KCTwvdHI+CgoJPHRyPgoJCTx0 ZD5mb3JtPC90ZD4KCQk8dGQ+Rm9ybSB0byB1c2UgZm9yIGRpc3BsYXlpbmcgZWFjaCBhcnRp Y2xlIHdpdGhpbiB0aGUgbGlzdC48L3RkPgoJCTx0ZD5ObzwvdGQ+CgkJPHRkPkFueSBleGlz dGluZyBhcnRpY2xlIGZvcm0uPC90ZD4KCQk8dGQ+VW5zZXQ8L3RkPgoJPC90cj4KCgk8dHI+ CgkJPHRkPmhlYWRpbmdfY2xhc3M8L3RkPgoJCTx0ZD5UaGUgKFgpSFRNTC9DU1MgY2xhc3Mg dG8gYXBwbHkgdG8gdGhlIG1vbnRoL3llYXIgaGVhZGluZy48L3RkPgoJCTx0ZD5ObzwvdGQ+ CgkJPHRkPkFueSB2YWxpZCAoWClIVE1ML0NTUyBjbGFzcyBuYW1lLjwvdGQ+CgkJPHRkPlVu c2V0PC90ZD4KCTwvdHI+CgoJPHRyPgoJCTx0ZD5oZWFkaW5nX2Zvcm1hdDwvdGQ+CgkJPHRk PkhvdyB0byBmb3JtYXQgdGhlIG1vbnRoL3llYXIgaGVhZGluZyBkYXRlIGRpc3BsYXkuPC90 ZD4KCQk8dGQ+Tm88L3RkPgoJCTx0ZD5BbnkgdmFsaWQgPGEgaHJlZj0iaHR0cDovL3BocC5u ZXQvc3RyZnRpbWUiPnN0cmZ0aW1lKCkgZm9ybWF0IHN0cmluZzwvYT48L3RkPgoJCTx0ZD48 dmFyPiVCICVZPC92YXI+PC90ZD4KCTwvdHI+CgoJPHRyPgoJCTx0ZD5oZWFkaW5nX2lkPC90 ZD4KCQk8dGQ+VGhlIChYKUhUTUwvQ1NTIGlkIHRvIGFwcGx5IHRvIHRoZSBtb250aC95ZWFy IGhlYWRpbmcuPC90ZD4KCQk8dGQ+Tm88L3RkPgoJCTx0ZD5BbnkgdmFsaWQgKFgpSFRNTC9D U1MgaWQuPC90ZD4KCQk8dGQ+VW5zZXQ8L3RkPgoJPC90cj4KCgk8dHI+CgkJPHRkPmhlYWRp bmdfbGV2ZWw8L3RkPgoJCTx0ZD5UaGUgbGV2ZWwgb2YgKFgpSFRNTCBoZWFkaW5nIGVsZW1l bnQgdG8gdXNlLjwvdGQ+CgkJPHRkPk5vPC90ZD4KCQk8dGQ+PHZhcj4xPC92YXI+ICYjODIx MTsgPHZhcj42PC92YXI+IChoMSAmIzgyMTE7IGg2KTwvdGQ+CgkJPHRkPlNtYXJ0IG1vZGU6 IDx2YXI+MTwvdmFyPiAoaDEgZWxlbWVudCk8YnIgLz48YnIgLz5GdWxsIG1vZGU6IDx2YXI+ MjwvdmFyPiAoaDIgZWxlbWVudCk8L3RkPgoJPC90cj4KCgk8dHI+CgkJPHRkPmluY2x1ZGVf ZGF0ZTwvdGQ+CgkJPHRkPldoZXRoZXIgdG8gbGlzdCBpbmRpdmlkdWFsIGRheSBkYXRlcy48 L3RkPgoJCTx0ZD5ObzwvdGQ+CgkJPHRkPjx2YXI+eWVzPC92YXI+IChvdXRwdXRzIGRlZmlu aXRpb24gbGlzdCkgb3IgPHZhcj5ubzwvdmFyPiAob3V0cHV0cyB1bm9yZGVyZWQgbGlzdCku CgkJPHRkPjx2YXI+eWVzPC92YXI+PC90ZD4KCTwvdHI+CgoJPHRyPgoJCTx0ZD5saXN0X2Ns YXNzPC90ZD4KCQk8dGQ+VGhlIChYKUhUTUwvQ1NTIGNsYXNzIHRvIGFwcGx5IHRvIHRoZSBh cnRpY2xlIGxpc3QuPC90ZD4KCQk8dGQ+Tm88L3RkPgoJCTx0ZD5BbnkgdmFsaWQgKFgpSFRN TC9DU1MgY2xhc3MgbmFtZS48L3RkPgoJCTx0ZD5VbnNldDwvdGQ+Cgk8L3RyPgoKCTx0cj4K CQk8dGQ+bGlzdF9pZDwvdGQ+CgkJPHRkPlRoZSAoWClIVE1ML0NTUyBpZCB0byBhcHBseSB0 byB0aGUgYXJ0aWNsZSBsaXN0LjwvdGQ+CgkJPHRkPk5vPC90ZD4KCQk8dGQ+QW55IHZhbGlk IChYKUhUTUwvQ1NTIGlkLjwvdGQ+CgkJPHRkPlVuc2V0PC90ZD4KCTwvdHI+CgoJPHRyPgoJ CTx0ZD5tb2RlPC90ZD4KCQk8dGQ+SG93IHRvIGRpc3BsYXkgdGhlIGxpc3QuPC90ZD4KCQk8 dGQ+Tm88L3RkPgoJCTx0ZD48dmFyPnNtYXJ0PC92YXI+IChlYWNoIG1vbnRoIGxpc3QgYXMg cmVxdWVzdGVkKSBvciA8dmFyPmZ1bGw8L3Zhcj4gKGNvbXBsZXRlIGxpc3QgYXQgb25jZTxz dXA+PGEgaHJlZj0iI2ZuMiIgaWQ9InJlZjIiPjI8L2E+PC9zdXA+KTwvdGQ+CgkJPHRkPjx2 YXI+c21hcnQ8L3Zhcj48L3RkPgoJPC90cj4KCgk8dHI+CgkJPHRkPm5vbmVfZm91bmQ8L3Rk PgoJCTx0ZD5UaGUgbmFtZSBvZiB0aGUgZm9ybSB0byByZXR1cm4gaWYgYSByZXF1ZXN0IGlz IG1hZGUgZm9yIGEgbW9udGggd2hlcmUgbm8gYXJ0aWNsZXMgZXhpc3QuPHN1cD48YSBocmVm PSIjZm4zIiBpZD0icmVmMyI+MzwvYT48L3N1cD4gVGhpcyBjYW4gYmUgdXNlZCB0byByZXR1 cm4gYSBjdXN0b20gbWVzc2FnZSB0byB0aGUgdmlzaXRvci48YnIgLz48YnIgLz5UaGUgZGVm YXVsdCBtZXNzYWdlIHJldHVybmVkIGlzOjxiciAvPiYjODIyMDtObyBwb3N0cyBjb3VsZCBi ZSBmb3VuZCBmb3IgdGhlIHJlcXVlc3RlZCBtb250aC4mIzgyMjE7PGJyIC8+PGJyIC8+QXBw bGllcyA8c3Ryb25nPm9ubHk8L3N0cm9uZz4gd2hlbiB1c2luZyB0aGUgcGx1Z2luIGluICYj ODIyMDtzbWFydCBtb2RlJiM4MjIxOy48L3RkPgoJCTx0ZD5ObzwvdGQ+CgkJPHRkPkFueSBl eGlzdGluZyBmb3JtIG5hbWUuPC90ZD4KCQk8dGQ+VW5zZXQ8L3RkPgoJPC90cj4KCgk8dHI+ CgkJPHRkPnNlY3Rpb248L3RkPgoJCTx0ZD5UaGUgc2VjdGlvbihzKSBvZiBhcnRpY2xlcyB0 byBpbmNsdWRlIGluIHRoZSBhcmNoaXZlLiBZb3UgY2FuIGVpdGhlciBpbmNsdWRlIG9yIGV4 Y2x1ZGUgKHVzaW5nIDx2YXI+ZXhjbHVkZV9zZWN0aW9uPC92YXI+KSwgYnV0IG5vdCBib3Ro IGF0IHRoZSBzYW1lIHRpbWUuPC90ZD4KCQk8dGQ+Tm8uPC90ZD4KCQk8dGQ+QW55IGV4aXN0 aW5nIHNlY3Rpb24gbmFtZShzKSwgY29tbWEtc2VwYXJhdGVkLjwvdGQ+CgkJPHRkPkN1cnJl bnQgc2VjdGlvbjwvdGQ+Cgk8L3RyPgoKCTx0cj4KCQk8dGQ+c29ydDwvdGQ+CgkJPHRkPkhv dyB0byBzb3J0IHRoZSBhcmNoaXZlIGxpc3QuPC90ZD4KCQk8dGQ+Tm88L3RkPgoJCTx0ZD48 dmFyPnRoZV95ZWFyPC92YXI+LCA8dmFyPnRoZV9tb250aDwvdmFyPiwgPHZhcj50aGVfZGF0 ZTwvdmFyPiAoZnVsbCB0aW1lc3RhbXApLjwvdGQ+CgkJPHRkPgoJCQlTbWFydCBtb2RlOiA8 dmFyPnRoZV9kYXRlIGFzYzwvdmFyPjxiciAvPjxiciAvPgoJCQlGdWxsIG1vZGU6IDx2YXI+ dGhlX3llYXIgZGVzYywgdGhlX21vbnRoIGRlc2MsIHRoZV9kYXRlIGFzYzwvdmFyPi4KCQk8 L3RkPgoJPC90cj4KCgk8dHI+CgkJPHRkPnRpbWU8L3RkPgoJCTx0ZD5SZXN0cmljdCBieSBk YXRlL3RpbWUgcG9zdGVkLjwvdGQ+CgkJPHRkPk5vPC90ZD4KCQk8dGQ+PHZhcj5wYXN0PC92 YXI+LCA8dmFyPmZ1dHVyZTwvdmFyPiBvciA8dmFyPmFueTwvdmFyPjwvdGQ+CgkJPHRkPjx2 YXI+cGFzdDwvdmFyPjwvdGQ+Cgk8L3RyPgoKPC90YWJsZT4KCjxwPjxhIGhyZWY9IiNzdGFy dCIgdGl0bGU9Ikp1bXAgYmFjayBjb250ZW50cyBsaXN0Ij4mIzg2MTc7PC9hPjwvcD4KCgoK PGgyIGlkPSJjcmVkaXQtc2VjdGlvbiI+Q3JlZGl0IGFuZCBEZXZlbG9wZXIgTm90ZXM8L2gy PgoKPHA+TXVjaCB0aGFua3MgdG8gU2VuY2VyIGZvciBoZWxwaW5nIG1lIG91dCB3aXRoIHdv cmtpbmcgYXJvdW5kIFRleHRwYXR0ZXJuJiM4MjE3O3MgZXJyb3IgaGFuZGxpbmcsIHVwb24g d2hpY2ggdGhlICYjODIyMDtzbWFydCBtb2RlJiM4MjIxOyBmZWF0dXJlIHJlc3RzLjwvcD4K CjxwPldoaWxlIG90aGVyIHBsdWdpbnMgc2ltaWxhciBpbiBmb2N1cyBvciBmZWF0dXJlcyBj YW4gYmUgZm91bmQsIHN1Y2ggYXMgPGEgaHJlZj0iaHR0cDovL3d3dy53aWxzaGlyZW9uZS5j b20vdGV4dHBhdHRlcm4tcGx1Z2lucy9yc3Mtc3VwYXJjaGl2ZSI+Um9iIFNhYmxlJiM4MjE3 O3MgcnNzX3N1cGFyY2hpdmU8L2E+LCB0aGlzIHBsdWdpbiBpcyBhbiBlbnRpcmVseSBvcmln aW5hbCB3b3JrLCBidWlsdCBmcm9tIHRoZSBib3R0b20tdXAgYnkgbXlzZWxmLjwvcD4KCjxw PjxhIGhyZWY9IiNzdGFydCIgdGl0bGU9Ikp1bXAgYmFjayBjb250ZW50cyBsaXN0Ij4mIzg2 MTc7PC9hPjwvcD4KCjxoMiBpZD0iZm9vdG5vdGUtc2VjdGlvbiI+Rm9vdG5vdGVzPC9oMj4K CjxvbD4KCTxsaSBpZD0iZm4xIj5XaW5kb3dzIGRvZXMgbm90IHVuZGVyc3RhbmQgPHZhcj4l ZTwvdmFyPiwgc28gaXRzIGRlZmF1bHQgaXMgPHZhcj4lZDwvdmFyPi4gPGEgaHJlZj0iI3Jl ZjEiIHRpdGxlPSJKdW1wIGJhY2sgdG8gZm9vdG5vdGUgIzEgcmVmZXJlbmNlIj4mIzg2MTc7 PC9hPjwvbGk+CgoJPGxpIGlkPSJmbjIiPkkgYWR2aXNlIHRvIGF2b2lkIHVzaW5nICYjODIy MDtmdWxsJiM4MjIxOyBtb2RlIGZvciB2ZXJ5IGxhcmdlIGFyY2hpdmVzLiBXaGlsZSBJJiM4 MjE3O3ZlIHRha2VuIGNhcmUgdG8ga2VlcCB0aGUgcXVlcmllcyBhcyBlZmZpY2llbnQgYXMg cG9zc2libGUsIHRoZSBsYXJnZXIgeW91IGtlZXAgdGhpcyBsaXN0LCB0aGUgbG9uZ2VyIGl0 IHdpbGwgdGFrZSB0byBsb2FkIGl0LiBVc2UgeW91ciBiZXN0IGp1ZGdlbWVudCwgYW5kIHJl bWVtYmVyIHRoYXQgSSBjYW5ub3QgYmUgaGVsZCByZXNwb25zaWJsZSBmb3IgaW1wcm9wZXIg dXNlIG9mIHRoZSBwbHVnaW4gKGxpa2UgY2FsbGluZyBpdCBtdWx0aXBsZSB0aW1lcyBvbiBv bmUgcGFnZSkuIElmIGluIGRvdWJ0IGFib3V0IGl0LCBhc2sgeW91ciBob3N0LiA8YSBocmVm PSIjcmVmMiIgdGl0bGU9Ikp1bXAgYmFjayB0byBmb290bm90ZSAjMiByZWZlcmVuY2UiPiYj ODYxNzs8L2E+PC9saT4KCgk8bGkgaWQ9ImZuMyI+CgkJPHA+V2hlbiBsaXN0aW5nIGFydGlj bGVzIGluICYjODIyMDtzbWFydCBtb2RlJiM4MjIxOywgbm8gaW52YWxpZCB1cmxzIGFyZSBn ZW5lcmF0ZWQuIEhvd2V2ZXIsIGluIHRoZSBldmVudCBvZiBhIHZpc2l0b3IgYXR0ZW1wdGlu ZyB0byB2aWV3IG90aGVyIGFyY2hpdmUgZGF0ZXMsIG9uZSBjb3VsZCBtYWtlIGEgcmVxdWVz dCBmb3IgYSBtb250aCB3aXRoIG5vIGFydGljbGVzLjwvcD4KCgkJPHA+SSBkZWNpZGVkIGFn YWluc3QgcmV0dXJuaW5nIGEgNDA0IGVycm9yLCBmb3IgYSBjb3VwbGUgcmVhc29uczo8L3A+ CgoJCTxwPk9uZSwgVGV4dHBhdHRlcm4mIzgyMTc7cyBlcnJvciBoYW5kbGluZyBpcyBzdWNo IHRoYXQsIGluIG9yZGVyIGZvciAmIzgyMjA7c21hcnQgbW9kZSYjODIyMTsgdG8gd29yayBj b3JyZWN0bHksIGEgcGx1Z2luIG11c3QgJiM4MjIwO2Zvb2wmIzgyMjE7IFRleHRwYXR0ZXJu IGludG8gdGhpbmtpbmcgcmVxdWVzdHMgdW5kZXIgY2VydGFpbiBjaXJjdW1zdGFuY2VzIGFy ZSB2YWxpZCwgZXhpc3RpbmcgZG9jdW1lbnRzLiBCeSB0aGUgdGltZSB0aGUgYWN0dWFsIHJl cXVlc3QgZm9yIGFydGljbGVzIGlzIG1hZGUsIHRoZSBwYWdlIGhhcyBhbHJlYWR5IHN0YXJ0 ZWQgdG8gcmVuZGVyLiBQdXQgc2ltcGx5OiBpdCBtZWFucyBpdCBpcyBub3Qgc2ltcGxlIHRv IHJlZmluZSB0aGlzIHByb2Nlc3MgY29tcGxldGVseSwgYW5kIGEgcGx1Z2luIHRoYXQgd29y a3Mgd2VsbCBldmVyeXdoZXJlIGVsc2UgaXMgYmV0dGVyIHRoYW4gb25lIG5vdCBleGlzdGlu ZyBhdCBhbGwuPC9wPgoKCQk8cD5Ud28sIGl0IGNhbiBhY3R1YWxseSBiZSBtb3JlIGNvbmZ1 c2luZyBhbmQgZnJ1c3RyYXRpbmcgdG8gdGhlIHZpc2l0b3IuPC9wPgoKCQk8cD5JIGRvbiYj ODIxNzt0IGhhdmUgYW55IHBsYW5zIHRvIGNoYW5nZSB0aGlzIGJlaGF2aW91ciBhdCBwcmVz ZW50LiA8YSBocmVmPSIjcmVmMyIgdGl0bGU9Ikp1bXAgYmFjayB0byBmb290bm90ZSAjMyBy ZWZlcmVuY2UiPiYjODYxNzs8L2E+PC9wPgoJPC9saT4KPC9vbD4KCjxwPjxhIGhyZWY9IiNz dGFydCIgdGl0bGU9Ikp1bXAgYmFjayBjb250ZW50cyBsaXN0Ij4mIzg2MTc7PC9hPjwvcD4i O3M6ODoiaGVscF9yYXciO3M6MTE4MDM6IjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9 InNjcmVlbixwcm9qZWN0aW9uIj4KPCEtLQp2YXIgewoJcGFkZGluZzogMC4xZW07Cglmb250 LXN0eWxlOiBub3JtYWw7Cglmb250LXdlaWdodDogYm9sZDsKCWZvbnQtZmFtaWx5OiBtb25v c3BhY2U7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOwp9Cgp0YWJsZS51cG1fdGFnX2F0dHMg ewoJbWFyZ2luOiAwIDAgMTVweCAwOwoJYm9yZGVyOiAxcHggc29saWQgI2VlZTsKCWJvcmRl ci1jb2xsYXBzZTogY29sbGFwc2U7Cn0KCnRhYmxlLnVwbV90YWdfYXR0cyBjYXB0aW9uIHsK CXBhZGRpbmc6IDAuNWVtOwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cgl0ZXh0LWFsaWduOiBsZWZ0 OwoJYmFja2dyb3VuZC1jb2xvcjogI2RkZDsKfQoKdGFibGUudXBtX3RhZ19hdHRzIHRyIHsK CWJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVlOwp9Cgp0YWJsZS51cG1fdGFnX2F0dHMg dGgsIHRhYmxlLnVwbV90YWdfYXR0cyB0ZCB7CgltYXJnaW46IDA7CglwYWRkaW5nOiAwLjVl bSAxZW07Cgl2ZXJ0aWNhbC1hbGlnbjogdG9wOwp9Cgp0YWJsZS51cG1fdGFnX2F0dHMgdGgg ewoJZm9udC13ZWlnaHQ6IG5vcm1hbDsKCXRleHQtYWxpZ246IGxlZnQ7CgliYWNrZ3JvdW5k LWNvbG9yOiAjZWVlOwp9Ci0tPgo8L3N0eWxlPgoKPGgxPnVwbV9kYXRlX2FyY2hpdmU8L2gx PgoKPG9sIGlkPSJzdGFydCI+Cgk8bGk+PGEgaHJlZj0iI2ludHJvIj5JbnRybzwvYT48L2xp PgoJPGxpPjxhIGhyZWY9IiNzZXR1cCI+U2V0dXA8L2E+PC9saT4KCTxsaT48YSBocmVmPSIj dGFncyI+TmV3IFRhZ3M8L2E+PC9saT4KCTxsaT48YSBocmVmPSIjY3JlZGl0Ij5DcmVkaXQg YW5kIERldmVsb3BlciBOb3RlczwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNmb290bm90ZXMi PkZvb3Rub3RlczwvYT48L2xpPgo8L29sPgoKCgo8aDIgaWQ9ImludHJvIj5JbnRybzwvaDI+ Cgo8cD5TaW1wbGUsIGZhc3QgYW5kIGVmZmljaWVudCBhcnRpY2xlIGFyY2hpdmVzLjwvcD4K CgoKPGgyIGlkPSJzZXR1cCI+U2V0dXA8L2gyPgoKPHA+QmVjYXVzZSBvZiBob3cgVGV4dHBh dHRlcm4mIzgyMTc7cyBlcnJvciBoYW5kbGluZyB3b3JrcywgaWYgeW91IGFyZSB1c2luZyBj bGVhbiB1cmxzLCBhbmQgd2lzaCB0byBtYWtlIHVzZSBvZiB0aGUgcGx1Z2luJiM4MjE3O3Mg JiM4MjIwO3NtYXJ0JiM4MjIxOyBtb2RlLCB5b3Ugd2lsbCBuZWVkIHRvIHRlbGwgdGhlIHBs dWdpbiB3aGVuIGl0IHNob3VsZCAmIzgyMjA7bGlzdGVuJiM4MjIxOyBmb3IgYXJjaGl2ZSBy ZXF1ZXN0cy4gU2ltcGx5IGhlYWQgdG8gdGhlIHBsdWdpbiYjODIxNztzIHByZWZlcmVuY2Vz LCBhbmQgY2hlY2sgb2ZmIHRoZSBzZWN0aW9ucyB5b3Ugd2FudC4gVGhpcyBpcyBub3QgbmVj ZXNzYXJ5IGZvciBtZXNzeSB1cmxzLjwvcD4KCjxwPnVwbV9kYXRlX21lbnUgY2FuIG9ubHkg YmUgdXNlZCBvbiB0aGUgZnJvbnQgcGFnZSBieSB1c2luZyBtZXNzeSB1cmxzLiBUaGlzIGlz IGR1ZSB0byBob3cgVGV4dHBhdHRlcm4gdW5kZXJzdGFuZHMgc2VjdGlvbnMgYW5kIHRoZSBm cm9udCBwYWdlLjwvcD4KCgoKPGgyIGlkPSJ0YWdzIj5OZXcgVGFnczwvaDI+CgoKPHRhYmxl IGNsYXNzPSJ1cG1fdGFnX2F0dHMiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+ CgoJPGNhcHRpb24+dXBtX2RhdGVfbWVudTwvY2FwdGlvbj4KCgk8dHI+CgkJPHRoPk5hbWU8 L3RoPgoJCTx0aD5EZXNjcmlwdGlvbjwvdGg+CgkJPHRoPlJlcXVpcmVkPzwvdGg+CgkJPHRo PkF2YWlsYWJsZSBWYWx1ZXM8L3RoPgoJCTx0aD5EZWZhdWx0IFZhbHVlPC90aD4KCTwvdHI+ CgoJPHRyPgoJCTx0ZD5jYXRlZ29yeTwvdGQ+CgkJPHRkPlRoZSBjYXRlZ29yeS9jYXRlZ29y aWVzIG9mIGFydGljbGVzIHRvIGluY2x1ZGUgaW4gdGhlIGFyY2hpdmUuIFlvdSBjYW4gZWl0 aGVyIGluY2x1ZGUgb3IgZXhjbHVkZSAodXNpbmcgPHZhcj5leGNsdWRlX2NhdGVnb3J5PC92 YXI+KSwgYnV0IG5vdCBib3RoIGF0IHRoZSBzYW1lIHRpbWUuPC90ZD4KCQk8dGQ+Tm88L3Rk PgoJCTx0ZD5BbnkgZXhpc3RpbmcgY2F0ZWdvcnkgbmFtZShzKSwgY29tbWEtc2VwYXJhdGVk LjwvdGQ+CgkJPHRkPkN1cnJlbnQgY2F0ZWdvcnk8L3RkPgoJPC90cj4KCgk8dHI+CgkJPHRk PmNsYXNzPC90ZD4KCQk8dGQ+VGhlIChYKUhUTUwvQ1NTIGNsYXNzIHRvIGFwcGx5IHRvIHRo ZSBsaXN0LjwvdGQ+CgkJPHRkPk5vPC90ZD4KCQk8dGQ+QW55IHZhbGlkIChYKUhUTUwvQ1NT IGNsYXNzIG5hbWUuPC90ZD4KCQk8dGQ+VW5zZXQ8L3RkPgoJPC90cj4KCgk8dHI+CgkJPHRk PmV4Y2x1ZGVfY2F0ZWdvcnk8L3RkPgoJCTx0ZD5UaGUgY2F0ZWdvcnkvY2F0ZWdvcmllcyBv ZiBhcnRpY2xlcyB0byBleGNsdWRlIGZyb20gdGhlIGFyY2hpdmUuIFlvdSBjYW4gZWl0aGVy IGV4Y2x1ZGUgb3IgaW5jbHVkZSAodXNpbmcgPHZhcj5jYXRlZ29yeTwvdmFyPiksIGJ1dCBu b3QgYm90aCBhdCB0aGUgc2FtZSB0aW1lLjwvdGQ+CgkJPHRkPk5vPC90ZD4KCQk8dGQ+QW55 IGV4aXN0aW5nIGNhdGVnb3J5IG5hbWUocyksIGNvbW1hLXNlcGFyYXRlZC48L3RkPgoJCTx0 ZD5VbnNldDwvdGQ+Cgk8L3RyPgoKCTx0cj4KCQk8dGQ+ZXhjbHVkZV9zZWN0aW9uPC90ZD4K CQk8dGQ+VGhlIHNlY3Rpb24ocykgb2YgYXJ0aWNsZXMgdG8gZXhjbHVkZSBmcm9tIHRoZSBh cmNoaXZlLiBZb3UgY2FuIGVpdGhlciBleGNsdWRlIG9yIGluY2x1ZGUgKHVzaW5nIDx2YXI+ c2VjdGlvbjwvdmFyPiksIGJ1dCBub3QgYm90aCBhdCB0aGUgc2FtZSB0aW1lLjwvdGQ+CgkJ PHRkPk5vPC90ZD4KCQk8dGQ+QW55IGV4aXN0aW5nIHNlY3Rpb24gbmFtZShzKSwgY29tbWEt c2VwYXJhdGVkLjwvdGQ+CgkJPHRkPlVuc2V0PC90ZD4KCTwvdHI+CgoJPHRyPgoJCTx0ZD5p ZDwvdGQ+CgkJPHRkPlRoZSAoWClIVE1ML0NTUyBpZCB0byBhcHBseSB0byB0aGUgbGlzdC48 L3RkPgoJCTx0ZD5ObzwvdGQ+CgkJPHRkPkFueSB2YWxpZCAoWClIVE1ML0NTUyBpZC48L3Rk PgoJCTx0ZD5VbnNldDwvdGQ+Cgk8L3RyPgoKCTx0cj4KCQk8dGQ+aW5zZXJ0X2VtcHR5X21v bnRoczwvdGQ+CgkJPHRkPldoZXRoZXIgdG8gaW5jbHVkZSBpbiB0aGUgbGlzdCBtb250aHMg d2l0aG91dCBhcnRpY2xlcy48L3RkPgoJCTx0ZD5ObzwvdGQ+CgkJPHRkPjx2YXI+eWVzPC92 YXI+IG9yIDx2YXI+bm88L3Zhcj48L3RkPgoJCTx0ZD48dmFyPnllczwvdmFyPjwvdGQ+Cgk8 L3RyPgoKCTx0cj4KCQk8dGQ+bGlua190bzwvdGQ+CgkJPHRkPlRoZSBzZWN0aW9uIHRvIGlu Y2x1ZGUgd2l0aGluIHRoZSBtb250aCB1cmwuPC90ZD4KCQk8dGQ+PC90ZD4KCQk8dGQ+QW55 IHZhbGlkIHNlY3Rpb24gZm9yIHdoaWNoIHlvdSBoYXZlIGVuYWJsZWQgc21hcnQgbW9kZSwg YW5kIGFsc28gY29udGFpbnMgdGhlIHVwbV9kYXRlX2FyY2hpdmUgdGFnLjwvdGQ+CgkJPHRk PkN1cnJlbnQgc2VjdGlvbjwvdGQ+Cgk8L3RyPgoKCTx0cj4KCQk8dGQ+bW9udGhfZm9ybWF0 PC90ZD4KCQk8dGQ+SG93IHRvIGZvcm1hdCB0aGUgbW9udGggZGlzcGxheS48L3RkPgoJCTx0 ZD5ObzwvdGQ+CgkJPHRkPkFueSB2YWxpZCA8YSBocmVmPSJodHRwOi8vcGhwLm5ldC9zdHJm dGltZSI+c3RyZnRpbWUoKSBmb3JtYXQgc3RyaW5nPC9hPi48L3RkPgoJCTx0ZD48dmFyPiVi PC92YXI+PC90ZD4KCTwvdHI+CgoJPHRyPgoJCTx0ZD5yZW1haW5fbGlua2VkPC90ZD4KCQk8 dGQ+V2hlbiB2aWV3aW5nIGEgbW9udGgmIzgyMTc7cyBwb3N0IGxpc3QsIHdoZXRoZXIgdG8g ZGlzcGxheSB0aGUgbW9udGggYXMgYSB1cmwgb3IgdGV4dC48L3RkPgoJCTx0ZD5ObzwvdGQ+ CgkJPHRkPjx2YXI+eWVzPC92YXI+IG9yIDx2YXI+bm88L3Zhcj48L3RkPgoJCTx0ZD48dmFy PnllczwvdmFyPjwvdGQ+Cgk8L3RyPgoKCTx0cj4KCQk8dGQ+c2VjdGlvbjwvdGQ+CgkJPHRk PlRoZSBzZWN0aW9uKHMpIG9mIGFydGljbGVzIHRvIGluY2x1ZGUgaW4gdGhlIGFyY2hpdmUu IFlvdSBjYW4gZWl0aGVyIGluY2x1ZGUgb3IgZXhjbHVkZSAodXNpbmcgPHZhcj5leGNsdWRl X3NlY3Rpb248L3Zhcj4pLCBidXQgbm90IGJvdGggYXQgdGhlIHNhbWUgdGltZS48L3RkPgoJ CTx0ZD5Oby48L3RkPgoJCTx0ZD5BbnkgZXhpc3Rpbmcgc2VjdGlvbiBuYW1lKHMpLCBjb21t YS1zZXBhcmF0ZWQuPC90ZD4KCQk8dGQ+Q3VycmVudCBzZWN0aW9uPC90ZD4KCTwvdHI+CgoJ PHRyPgoJCTx0ZD5zb3J0PC90ZD4KCQk8dGQ+PC90ZD4KCQk8dGQ+Tm8uPC90ZD4KCQk8dGQ+ PHZhcj50aGVfbW9udGg8L3Zhcj4gb3IgPHZhcj50aGVfeWVhcjwvdmFyPiwgPHZhcj5hc2M8 L3Zhcj4gb3IgPHZhcj5kZXNjPC92YXI+PC90ZD4KCQk8dGQ+PHZhcj50aGVfeWVhciBkZXNj LCB0aGVfbW9udGggYXNjPC92YXI+PC90ZD4KCTwvdHI+CgoJPHRyPgoJCTx0ZD50aW1lPC90 ZD4KCQk8dGQ+UmVzdHJpY3QgYnkgZGF0ZS90aW1lIHBvc3RlZC48L3RkPgoJCTx0ZD5Obzwv dGQ+CgkJPHRkPjx2YXI+cGFzdDwvdmFyPiwgPHZhcj5mdXR1cmU8L3Zhcj4gb3IgPHZhcj5h bnk8L3Zhcj48L3RkPgoJCTx0ZD48dmFyPnBhc3Q8L3Zhcj48L3RkPgoJPC90cj4KCgk8dHI+ CgkJPHRkPnllYXJfZm9ybWF0PC90ZD4KCQk8dGQ+SG93IHRvIGZvcm1hdCB0aGUgeWVhciBo ZWFkaW5nIGRpc3BsYXkuPC90ZD4KCQk8dGQ+Tm88L3RkPgoJCTx0ZD5BbnkgdmFsaWQgPGEg aHJlZj0iaHR0cDovL3BocC5uZXQvc3RyZnRpbWUiPnN0cmZ0aW1lKCkgZm9ybWF0IHN0cmlu ZzwvYT4uPC90ZD4KCQk8dGQ+PHZhcj4lWTwvdmFyPjwvdGQ+Cgk8L3RyPgo8L3RhYmxlPgoK Cjx0YWJsZSBjbGFzcz0idXBtX3RhZ19hdHRzIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNp bmc9IjAiPgoKCTxjYXB0aW9uPnVwbV9kYXRlX2FyY2hpdmU8L2NhcHRpb24+CgoJPHRyPgoJ CTx0aD5OYW1lPC90aD4KCQk8dGg+RGVzY3JpcHRpb248L3RoPgoJCTx0aD5SZXF1aXJlZD88 L3RoPgoJCTx0aD5BdmFpbGFibGUgVmFsdWVzPC90aD4KCQk8dGg+RGVmYXVsdCBWYWx1ZTwv dGg+Cgk8L3RyPgoKCTx0cj4KCQk8dGQ+Y2F0ZWdvcnk8L3RkPgoJCTx0ZD5UaGUgY2F0ZWdv cnkvY2F0ZWdvcmllcyBvZiBhcnRpY2xlcyB0byBpbmNsdWRlIGluIHRoZSBhcmNoaXZlLiBZ b3UgY2FuIGVpdGhlciBpbmNsdWRlIG9yIGV4Y2x1ZGUgKHVzaW5nIDx2YXI+ZXhjbHVkZV9j YXRlZ29yeTwvdmFyPiksIGJ1dCBub3QgYm90aCBhdCB0aGUgc2FtZSB0aW1lLjwvdGQ+CgkJ PHRkPk5vPC90ZD4KCQk8dGQ+QW55IGV4aXN0aW5nIGNhdGVnb3J5IG5hbWUocyksIGNvbW1h LXNlcGFyYXRlZC48L3RkPgoJCTx0ZD5DdXJyZW50IGNhdGVnb3J5PC90ZD4KCTwvdHI+CgoJ PHRyPgoJCTx0ZD5kYXRlX2Zvcm1hdDwvdGQ+CgkJPHRkPklmIGluY2x1ZGluZyB0aGUgZGF0 ZSB3aXRoIDx2YXI+aW5jbHVkZV9kYXRlPC92YXI+IGF0dHJpYnV0ZSwgaG93IHRvIGZvcm1h dCB0aGUgZGF0ZSBkaXNwbGF5IGZvciBkYWNoIGRheS48L3RkPgoJCTx0ZD5ObzwvdGQ+CgkJ PHRkPkFueSB2YWxpZCA8YSBocmVmPSJodHRwOi8vcGhwLm5ldC9zdHJmdGltZSI+c3RyZnRp bWUoKSBmb3JtYXQgc3RyaW5nPC9hPi48L3RkPgoJCTx0ZD48dmFyPiVlPC92YXI+PHN1cD48 YSBocmVmPSIjZm4xIiBpZD0icmVmMSI+MTwvYT48L3N1cD48L3RkPgoJPC90cj4KCgk8dHI+ CgkJPHRkPmV4Y2x1ZGVfY2F0ZWdvcnk8L3RkPgoJCTx0ZD5UaGUgY2F0ZWdvcnkvY2F0ZWdv cmllcyBvZiBhcnRpY2xlcyB0byBleGNsdWRlIGZyb20gdGhlIGFyY2hpdmUuIFlvdSBjYW4g ZWl0aGVyIGV4Y2x1ZGUgb3IgaW5jbHVkZSAodXNpbmcgPHZhcj5jYXRlZ29yeTwvdmFyPiks IGJ1dCBub3QgYm90aCBhdCB0aGUgc2FtZSB0aW1lLjwvdGQ+CgkJPHRkPk5vPC90ZD4KCQk8 dGQ+QW55IGV4aXN0aW5nIGNhdGVnb3J5IG5hbWUocyksIGNvbW1hLXNlcGFyYXRlZC48L3Rk PgoJCTx0ZD5VbnNldDwvdGQ+Cgk8L3RyPgoKCTx0cj4KCQk8dGQ+ZXhjbHVkZV9zZWN0aW9u PC90ZD4KCQk8dGQ+VGhlIHNlY3Rpb24ocykgb2YgYXJ0aWNsZXMgdG8gZXhjbHVkZSBmcm9t IHRoZSBhcmNoaXZlLiBZb3UgY2FuIGVpdGhlciBleGNsdWRlIG9yIGluY2x1ZGUgKHVzaW5n IDx2YXI+c2VjdGlvbjwvdmFyPiksIGJ1dCBub3QgYm90aCBhdCB0aGUgc2FtZSB0aW1lLjwv dGQ+CgkJPHRkPk5vPC90ZD4KCQk8dGQ+QW55IGV4aXN0aW5nIHNlY3Rpb24gbmFtZShzKSwg Y29tbWEtc2VwYXJhdGVkLjwvdGQ+CgkJPHRkPlVuc2V0PC90ZD4KCTwvdHI+CgoJPHRyPgoJ CTx0ZD5mb3JtPC90ZD4KCQk8dGQ+Rm9ybSB0byB1c2UgZm9yIGRpc3BsYXlpbmcgZWFjaCBh cnRpY2xlIHdpdGhpbiB0aGUgbGlzdC48L3RkPgoJCTx0ZD5ObzwvdGQ+CgkJPHRkPkFueSBl eGlzdGluZyBhcnRpY2xlIGZvcm0uPC90ZD4KCQk8dGQ+VW5zZXQ8L3RkPgoJPC90cj4KCgk8 dHI+CgkJPHRkPmhlYWRpbmdfY2xhc3M8L3RkPgoJCTx0ZD5UaGUgKFgpSFRNTC9DU1MgY2xh c3MgdG8gYXBwbHkgdG8gdGhlIG1vbnRoL3llYXIgaGVhZGluZy48L3RkPgoJCTx0ZD5Obzwv dGQ+CgkJPHRkPkFueSB2YWxpZCAoWClIVE1ML0NTUyBjbGFzcyBuYW1lLjwvdGQ+CgkJPHRk PlVuc2V0PC90ZD4KCTwvdHI+CgoJPHRyPgoJCTx0ZD5oZWFkaW5nX2Zvcm1hdDwvdGQ+CgkJ PHRkPkhvdyB0byBmb3JtYXQgdGhlIG1vbnRoL3llYXIgaGVhZGluZyBkYXRlIGRpc3BsYXku PC90ZD4KCQk8dGQ+Tm88L3RkPgoJCTx0ZD5BbnkgdmFsaWQgPGEgaHJlZj0iaHR0cDovL3Bo cC5uZXQvc3RyZnRpbWUiPnN0cmZ0aW1lKCkgZm9ybWF0IHN0cmluZzwvYT48L3RkPgoJCTx0 ZD48dmFyPiVCICVZPC92YXI+PC90ZD4KCTwvdHI+CgoJPHRyPgoJCTx0ZD5oZWFkaW5nX2lk PC90ZD4KCQk8dGQ+VGhlIChYKUhUTUwvQ1NTIGlkIHRvIGFwcGx5IHRvIHRoZSBtb250aC95 ZWFyIGhlYWRpbmcuPC90ZD4KCQk8dGQ+Tm88L3RkPgoJCTx0ZD5BbnkgdmFsaWQgKFgpSFRN TC9DU1MgaWQuPC90ZD4KCQk8dGQ+VW5zZXQ8L3RkPgoJPC90cj4KCgk8dHI+CgkJPHRkPmhl YWRpbmdfbGV2ZWw8L3RkPgoJCTx0ZD5UaGUgbGV2ZWwgb2YgKFgpSFRNTCBoZWFkaW5nIGVs ZW1lbnQgdG8gdXNlLjwvdGQ+CgkJPHRkPk5vPC90ZD4KCQk8dGQ+PHZhcj4xPC92YXI+ICYj ODIxMTsgPHZhcj42PC92YXI+IChoMSAmIzgyMTE7IGg2KTwvdGQ+CgkJPHRkPlNtYXJ0IG1v ZGU6IDx2YXI+MTwvdmFyPiAoaDEgZWxlbWVudCk8YnIgLz48YnIgLz5GdWxsIG1vZGU6IDx2 YXI+MjwvdmFyPiAoaDIgZWxlbWVudCk8L3RkPgoJPC90cj4KCgk8dHI+CgkJPHRkPmluY2x1 ZGVfZGF0ZTwvdGQ+CgkJPHRkPldoZXRoZXIgdG8gbGlzdCBpbmRpdmlkdWFsIGRheSBkYXRl cy48L3RkPgoJCTx0ZD5ObzwvdGQ+CgkJPHRkPjx2YXI+eWVzPC92YXI+IChvdXRwdXRzIGRl ZmluaXRpb24gbGlzdCkgb3IgPHZhcj5ubzwvdmFyPiAob3V0cHV0cyB1bm9yZGVyZWQgbGlz dCkuCgkJPHRkPjx2YXI+eWVzPC92YXI+PC90ZD4KCTwvdHI+CgoJPHRyPgoJCTx0ZD5saXN0 X2NsYXNzPC90ZD4KCQk8dGQ+VGhlIChYKUhUTUwvQ1NTIGNsYXNzIHRvIGFwcGx5IHRvIHRo ZSBhcnRpY2xlIGxpc3QuPC90ZD4KCQk8dGQ+Tm88L3RkPgoJCTx0ZD5BbnkgdmFsaWQgKFgp SFRNTC9DU1MgY2xhc3MgbmFtZS48L3RkPgoJCTx0ZD5VbnNldDwvdGQ+Cgk8L3RyPgoKCTx0 cj4KCQk8dGQ+bGlzdF9pZDwvdGQ+CgkJPHRkPlRoZSAoWClIVE1ML0NTUyBpZCB0byBhcHBs eSB0byB0aGUgYXJ0aWNsZSBsaXN0LjwvdGQ+CgkJPHRkPk5vPC90ZD4KCQk8dGQ+QW55IHZh bGlkIChYKUhUTUwvQ1NTIGlkLjwvdGQ+CgkJPHRkPlVuc2V0PC90ZD4KCTwvdHI+CgoJPHRy PgoJCTx0ZD5tb2RlPC90ZD4KCQk8dGQ+SG93IHRvIGRpc3BsYXkgdGhlIGxpc3QuPC90ZD4K CQk8dGQ+Tm88L3RkPgoJCTx0ZD48dmFyPnNtYXJ0PC92YXI+IChlYWNoIG1vbnRoIGxpc3Qg YXMgcmVxdWVzdGVkKSBvciA8dmFyPmZ1bGw8L3Zhcj4gKGNvbXBsZXRlIGxpc3QgYXQgb25j ZTxzdXA+PGEgaHJlZj0iI2ZuMiIgaWQ9InJlZjIiPjI8L2E+PC9zdXA+KTwvdGQ+CgkJPHRk Pjx2YXI+c21hcnQ8L3Zhcj48L3RkPgoJPC90cj4KCgk8dHI+CgkJPHRkPm5vbmVfZm91bmQ8 L3RkPgoJCTx0ZD5UaGUgbmFtZSBvZiB0aGUgZm9ybSB0byByZXR1cm4gaWYgYSByZXF1ZXN0 IGlzIG1hZGUgZm9yIGEgbW9udGggd2hlcmUgbm8gYXJ0aWNsZXMgZXhpc3QuPHN1cD48YSBo cmVmPSIjZm4zIiBpZD0icmVmMyI+MzwvYT48L3N1cD4gVGhpcyBjYW4gYmUgdXNlZCB0byBy ZXR1cm4gYSBjdXN0b20gbWVzc2FnZSB0byB0aGUgdmlzaXRvci48YnIgLz48YnIgLz5UaGUg ZGVmYXVsdCBtZXNzYWdlIHJldHVybmVkIGlzOjxiciAvPiYjODIyMDtObyBwb3N0cyBjb3Vs ZCBiZSBmb3VuZCBmb3IgdGhlIHJlcXVlc3RlZCBtb250aC4mIzgyMjE7PGJyIC8+PGJyIC8+ QXBwbGllcyA8c3Ryb25nPm9ubHk8L3N0cm9uZz4gd2hlbiB1c2luZyB0aGUgcGx1Z2luIGlu ICYjODIyMDtzbWFydCBtb2RlJiM4MjIxOy48L3RkPgoJCTx0ZD5ObzwvdGQ+CgkJPHRkPkFu eSBleGlzdGluZyBmb3JtIG5hbWUuPC90ZD4KCQk8dGQ+VW5zZXQ8L3RkPgoJPC90cj4KCgk8 dHI+CgkJPHRkPnNlY3Rpb248L3RkPgoJCTx0ZD5UaGUgc2VjdGlvbihzKSBvZiBhcnRpY2xl cyB0byBpbmNsdWRlIGluIHRoZSBhcmNoaXZlLiBZb3UgY2FuIGVpdGhlciBpbmNsdWRlIG9y IGV4Y2x1ZGUgKHVzaW5nIDx2YXI+ZXhjbHVkZV9zZWN0aW9uPC92YXI+KSwgYnV0IG5vdCBi b3RoIGF0IHRoZSBzYW1lIHRpbWUuPC90ZD4KCQk8dGQ+Tm8uPC90ZD4KCQk8dGQ+QW55IGV4 aXN0aW5nIHNlY3Rpb24gbmFtZShzKSwgY29tbWEtc2VwYXJhdGVkLjwvdGQ+CgkJPHRkPkN1 cnJlbnQgc2VjdGlvbjwvdGQ+Cgk8L3RyPgoKCTx0cj4KCQk8dGQ+c29ydDwvdGQ+CgkJPHRk PkhvdyB0byBzb3J0IHRoZSBhcmNoaXZlIGxpc3QuPC90ZD4KCQk8dGQ+Tm88L3RkPgoJCTx0 ZD48dmFyPnRoZV95ZWFyPC92YXI+LCA8dmFyPnRoZV9tb250aDwvdmFyPiwgPHZhcj50aGVf ZGF0ZTwvdmFyPiAoZnVsbCB0aW1lc3RhbXApLjwvdGQ+CgkJPHRkPgoJCQlTbWFydCBtb2Rl OiA8dmFyPnRoZV9kYXRlIGFzYzwvdmFyPjxiciAvPjxiciAvPgoJCQlGdWxsIG1vZGU6IDx2 YXI+dGhlX3llYXIgZGVzYywgdGhlX21vbnRoIGRlc2MsIHRoZV9kYXRlIGFzYzwvdmFyPi4K CQk8L3RkPgoJPC90cj4KCgk8dHI+CgkJPHRkPnRpbWU8L3RkPgoJCTx0ZD5SZXN0cmljdCBi eSBkYXRlL3RpbWUgcG9zdGVkLjwvdGQ+CgkJPHRkPk5vPC90ZD4KCQk8dGQ+PHZhcj5wYXN0 PC92YXI+LCA8dmFyPmZ1dHVyZTwvdmFyPiBvciA8dmFyPmFueTwvdmFyPjwvdGQ+CgkJPHRk Pjx2YXI+cGFzdDwvdmFyPjwvdGQ+Cgk8L3RyPgoKPC90YWJsZT4KCjxwPjxhIGhyZWY9IiNz dGFydCIgdGl0bGU9Ikp1bXAgYmFjayBjb250ZW50cyBsaXN0Ij4mIzg2MTc7PC9hPjwvcD4K CgoKPGgyIGlkPSJjcmVkaXQtc2VjdGlvbiI+Q3JlZGl0IGFuZCBEZXZlbG9wZXIgTm90ZXM8 L2gyPgoKPHA+TXVjaCB0aGFua3MgdG8gU2VuY2VyIGZvciBoZWxwaW5nIG1lIG91dCB3aXRo IHdvcmtpbmcgYXJvdW5kIFRleHRwYXR0ZXJuJiM4MjE3O3MgZXJyb3IgaGFuZGxpbmcsIHVw b24gd2hpY2ggdGhlICYjODIyMDtzbWFydCBtb2RlJiM4MjIxOyBmZWF0dXJlIHJlc3RzLjwv cD4KCjxwPldoaWxlIG90aGVyIHBsdWdpbnMgc2ltaWxhciBpbiBmb2N1cyBvciBmZWF0dXJl cyBjYW4gYmUgZm91bmQsIHN1Y2ggYXMgPGEgaHJlZj0iaHR0cDovL3d3dy53aWxzaGlyZW9u ZS5jb20vdGV4dHBhdHRlcm4tcGx1Z2lucy9yc3Mtc3VwYXJjaGl2ZSI+Um9iIFNhYmxlJiM4 MjE3O3MgcnNzX3N1cGFyY2hpdmU8L2E+LCB0aGlzIHBsdWdpbiBpcyBhbiBlbnRpcmVseSBv cmlnaW5hbCB3b3JrLCBidWlsdCBmcm9tIHRoZSBib3R0b20tdXAgYnkgbXlzZWxmLjwvcD4K CjxwPjxhIGhyZWY9IiNzdGFydCIgdGl0bGU9Ikp1bXAgYmFjayBjb250ZW50cyBsaXN0Ij4m Izg2MTc7PC9hPjwvcD4KCjxoMiBpZD0iZm9vdG5vdGUtc2VjdGlvbiI+Rm9vdG5vdGVzPC9o Mj4KCjxvbD4KCTxsaSBpZD0iZm4xIj5XaW5kb3dzIGRvZXMgbm90IHVuZGVyc3RhbmQgPHZh cj4lZTwvdmFyPiwgc28gaXRzIGRlZmF1bHQgaXMgPHZhcj4lZDwvdmFyPi4gPGEgaHJlZj0i I3JlZjEiIHRpdGxlPSJKdW1wIGJhY2sgdG8gZm9vdG5vdGUgIzEgcmVmZXJlbmNlIj4mIzg2 MTc7PC9hPjwvbGk+CgoJPGxpIGlkPSJmbjIiPkkgYWR2aXNlIHRvIGF2b2lkIHVzaW5nICYj ODIyMDtmdWxsJiM4MjIxOyBtb2RlIGZvciB2ZXJ5IGxhcmdlIGFyY2hpdmVzLiBXaGlsZSBJ JiM4MjE3O3ZlIHRha2VuIGNhcmUgdG8ga2VlcCB0aGUgcXVlcmllcyBhcyBlZmZpY2llbnQg YXMgcG9zc2libGUsIHRoZSBsYXJnZXIgeW91IGtlZXAgdGhpcyBsaXN0LCB0aGUgbG9uZ2Vy IGl0IHdpbGwgdGFrZSB0byBsb2FkIGl0LiBVc2UgeW91ciBiZXN0IGp1ZGdlbWVudCwgYW5k IHJlbWVtYmVyIHRoYXQgSSBjYW5ub3QgYmUgaGVsZCByZXNwb25zaWJsZSBmb3IgaW1wcm9w ZXIgdXNlIG9mIHRoZSBwbHVnaW4gKGxpa2UgY2FsbGluZyBpdCBtdWx0aXBsZSB0aW1lcyBv biBvbmUgcGFnZSkuIElmIGluIGRvdWJ0IGFib3V0IGl0LCBhc2sgeW91ciBob3N0LiA8YSBo cmVmPSIjcmVmMiIgdGl0bGU9Ikp1bXAgYmFjayB0byBmb290bm90ZSAjMiByZWZlcmVuY2Ui PiYjODYxNzs8L2E+PC9saT4KCgk8bGkgaWQ9ImZuMyI+CgkJPHA+V2hlbiBsaXN0aW5nIGFy dGljbGVzIGluICYjODIyMDtzbWFydCBtb2RlJiM4MjIxOywgbm8gaW52YWxpZCB1cmxzIGFy ZSBnZW5lcmF0ZWQuIEhvd2V2ZXIsIGluIHRoZSBldmVudCBvZiBhIHZpc2l0b3IgYXR0ZW1w dGluZyB0byB2aWV3IG90aGVyIGFyY2hpdmUgZGF0ZXMsIG9uZSBjb3VsZCBtYWtlIGEgcmVx dWVzdCBmb3IgYSBtb250aCB3aXRoIG5vIGFydGljbGVzLjwvcD4KCgkJPHA+SSBkZWNpZGVk IGFnYWluc3QgcmV0dXJuaW5nIGEgNDA0IGVycm9yLCBmb3IgYSBjb3VwbGUgcmVhc29uczo8 L3A+CgoJCTxwPk9uZSwgVGV4dHBhdHRlcm4mIzgyMTc7cyBlcnJvciBoYW5kbGluZyBpcyBz dWNoIHRoYXQsIGluIG9yZGVyIGZvciAmIzgyMjA7c21hcnQgbW9kZSYjODIyMTsgdG8gd29y ayBjb3JyZWN0bHksIGEgcGx1Z2luIG11c3QgJiM4MjIwO2Zvb2wmIzgyMjE7IFRleHRwYXR0 ZXJuIGludG8gdGhpbmtpbmcgcmVxdWVzdHMgdW5kZXIgY2VydGFpbiBjaXJjdW1zdGFuY2Vz IGFyZSB2YWxpZCwgZXhpc3RpbmcgZG9jdW1lbnRzLiBCeSB0aGUgdGltZSB0aGUgYWN0dWFs IHJlcXVlc3QgZm9yIGFydGljbGVzIGlzIG1hZGUsIHRoZSBwYWdlIGhhcyBhbHJlYWR5IHN0 YXJ0ZWQgdG8gcmVuZGVyLiBQdXQgc2ltcGx5OiBpdCBtZWFucyBpdCBpcyBub3Qgc2ltcGxl IHRvIHJlZmluZSB0aGlzIHByb2Nlc3MgY29tcGxldGVseSwgYW5kIGEgcGx1Z2luIHRoYXQg d29ya3Mgd2VsbCBldmVyeXdoZXJlIGVsc2UgaXMgYmV0dGVyIHRoYW4gb25lIG5vdCBleGlz dGluZyBhdCBhbGwuPC9wPgoKCQk8cD5Ud28sIGl0IGNhbiBhY3R1YWxseSBiZSBtb3JlIGNv bmZ1c2luZyBhbmQgZnJ1c3RyYXRpbmcgdG8gdGhlIHZpc2l0b3IuPC9wPgoKCQk8cD5JIGRv biYjODIxNzt0IGhhdmUgYW55IHBsYW5zIHRvIGNoYW5nZSB0aGlzIGJlaGF2aW91ciBhdCBw cmVzZW50LiA8YSBocmVmPSIjcmVmMyIgdGl0bGU9Ikp1bXAgYmFjayB0byBmb290bm90ZSAj MyByZWZlcmVuY2UiPiYjODYxNzs8L2E+PC9wPgoJPC9saT4KPC9vbD4KCjxwPjxhIGhyZWY9 IiNzdGFydCIgdGl0bGU9Ikp1bXAgYmFjayBjb250ZW50cyBsaXN0Ij4mIzg2MTc7PC9hPjwv cD4iO3M6MTU6ImFsbG93X2h0bWxfaGVscCI7aToxO3M6MzoibWQ1IjtzOjMyOiI3ZDZiODAx OWY4MWFkNDNkYjg2YWUzNDFlMDVmZWFjMyI7fQ==