# Name: smd_query v0.3 # Type: Client side plugin # Generic database access via SQL # 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: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjk6InNtZF9xdWVyeSI7czo2OiJhdXRob3IiO3M6MTE6IlN0 ZWYgRGF3c29uIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIyOiJodHRwOi8vc3RlZmRhd3Nvbi5j b20vIjtzOjc6InZlcnNpb24iO3M6MzoiMC4zIjtzOjExOiJkZXNjcmlwdGlvbiI7czozMToi R2VuZXJpYyBkYXRhYmFzZSBhY2Nlc3MgdmlhIFNRTCI7czo0OiJjb2RlIjtzOjg3ODU6ImZ1 bmN0aW9uIHNtZF9xdWVyeSgkYXR0cywgJHRoaW5nPScnKSB7DQoJZ2xvYmFsICR0aGlzcGFn ZSwgJHByZXRleHQ7DQoNCglleHRyYWN0KGxBdHRzKGFycmF5KA0KCQknY29sdW1uJyA9PiAn JywNCgkJJ3RhYmxlJyA9PiAnJywNCgkJJ3doZXJlJyA9PiAnJywNCgkJJ3F1ZXJ5JyA9PiAn JywNCgkJJ2Zvcm0nID0+ICcnLA0KCQkncGFnZWZvcm0nID0+ICcnLA0KCQkncGFnZXBvcycg PT4gJ2JlbG93JywNCgkJJ2NvbHNmb3JtJyA9PiAnJywNCgkJJ2VzY2FwZScgPT4gJycsDQoJ CSdzdHJpY3RmaWVsZHMnID0+ICcwJywNCgkJJ3ByZXBhcnNlJyA9PiAnMCcsDQoJCSd1cmxm aWx0ZXInID0+ICcnLA0KCQkndXJscmVwbGFjZScgPT4gJycsDQoJCSdkZWZhdWx0cycgPT4g JycsDQoJCSdkZWxpbScgPT4gJywnLA0KCQkncGFyYW1kZWxpbScgPT4gJzonLA0KCQknc2ls ZW50JyA9PiAnMCcsDQoJCSdjb3VudCcgPT4gJ3VwJywNCgkJJ2xpbWl0JyA9PiAwLA0KCQkn b2Zmc2V0JyA9PiAwLA0KCQkncGdvbmx5JyA9PiAwLA0KCQknYnJlYWsnID0+ICcnLA0KCQkn d3JhcHRhZycgPT4gJycsDQoJCSdsYWJlbCcgPT4gJycsDQoJCSdsYWJlbHRhZycgPT4gJycs DQoJCSdjbGFzcycgPT4gJycsDQoJCSdkZWJ1ZycgPT4gJzAnLA0KCSksJGF0dHMpKTsNCg0K CS8vIEdyYWIgdGhlIGZvcm0gb3IgZW1iZWRkZWQgJHRoaW5nDQoJJHRoaW5nID0gKCR0aGlu ZykgPyAkdGhpbmcgOiBmZXRjaF9mb3JtKCRmb3JtKTsNCgkkY29sc2Zvcm0gPSAoZW1wdHko JGNvbHNmb3JtKSkgPyAnJyA6IGZldGNoX2Zvcm0oJGNvbHNmb3JtKTsNCgkkcGFnZWJpdCA9 IGFycmF5KCk7DQoJaWYgKCRwYWdlZm9ybSkgew0KCQkkcGFnZVBvc0FsbG93ZWQgPSBhcnJh eSgiYmVsb3ciLCAiYWJvdmUiKTsNCgkJJHBhZ2luZyA9IDE7DQoJCSRwYWdlZm9ybSA9IGZl dGNoX2Zvcm0oJHBhZ2Vmb3JtKTsNCgkJJHBhZ2Vwb3MgPSBzdHJfcmVwbGFjZSgnc21kXycs ICcnLCAkcGFnZXBvcyk7DQoJCSRwYWdlcG9zID0gZG9fbGlzdCgkcGFnZXBvcywgJGRlbGlt KTsNCgkJZm9yZWFjaCAoJHBhZ2Vwb3MgYXMgJHBhZ2VpdGVtKSB7DQoJCQkkcGFnZWJpdFtd ID0gKGluX2FycmF5KCRwYWdlaXRlbSwgJHBhZ2VQb3NBbGxvd2VkKSkgPyAkcGFnZWl0ZW0g OiAkcGFnZVBvc0FsbG93ZWRbMF07DQoJCX0NCgl9DQoNCgkkdXJsZmlsdGVyID0gKCFlbXB0 eSgkdXJsZmlsdGVyKSkgPyBkb19saXN0KCR1cmxmaWx0ZXIsICRkZWxpbSkgOiAnJzsNCgkk dXJscmVwbGFjZSA9ICghZW1wdHkoJHVybHJlcGxhY2UpKSA/IGRvX2xpc3QoJHVybHJlcGxh Y2UsICRkZWxpbSkgOiAnJzsNCglpZiAoJGRlYnVnID4gMCkgew0KCQllY2hvICIrKyBVUkwg RklMVEVSUyArKyI7DQoJCWRtcCgkdXJsZmlsdGVyKTsNCgkJZG1wKCR1cmxyZXBsYWNlKTsN Cgl9DQoNCgkvLyBQcm9jZXNzIGFueSBkZWZhdWx0cw0KCSRzcGMgPSAoJHN0cmljdGZpZWxk cykgPyAwIDogMTsNCgkkZGVmYXVsdHMgPSBkb19saXN0KCRkZWZhdWx0cywgJGRlbGltKTsN CgkkZGZsdHMgPSBhcnJheSgpOw0KCWZvcmVhY2ggKCRkZWZhdWx0cyBhcyAkaXRlbSkgew0K CQkkaXRlbSA9IGRvX2xpc3QoJGl0ZW0sICRwYXJhbWRlbGltKTsNCgkJaWYgKCRpdGVtWzBd ID09ICcnKSBjb250aW51ZTsNCgkJaWYgKGNvdW50KCRpdGVtKSA9PSAyKSB7DQoJCQkkZGZs dHNbJGl0ZW1bMF1dID0gc21kX3F1ZXJ5X3BhcnNlKCRpdGVtWzFdLCBhcnJheSgnJyksIGFy cmF5KCcnKSwgYXJyYXkoJycpLCAkc3BjKTsNCgkJfQ0KCX0NCg0KCWlmICgkZGVidWcgPiAw KSB7DQoJCWVjaG8gIisrIERFRkFVTFRTICsrIjsNCgkJZG1wKCRkZmx0cyk7DQoJfQ0KDQoJ Ly8gR2V0IGEgbGlzdCBvZiBmaWVsZHMgdG8gZXNjYXBlDQoJJGVzY2FwZXMgPSBkb19saXN0 KCRlc2NhcGUsICRkZWxpbSk7DQoJZm9yZWFjaCAoJGVzY2FwZXMgYXMgJGlkeCA9PiAkdmFs KSB7DQoJCWlmICgkdmFsID09ICcnKSB7DQoJCQl1bnNldCgkZXNjYXBlc1skaWR4XSk7DQoJ CX0NCgl9DQoNCgkkcnMgPSBhcnJheSgpOw0KCSRvdXQgPSBhcnJheSgpOw0KCSRjb2xvdXQg PSAkZmluYWxvdXQgPSBhcnJheSgpOw0KCSRwYWdlb3V0ID0gJyc7DQoJDQoJLy8gcXVlcnkg b3ZlcnJpZGVzIGNvbHVtbi90YWJsZS93aGVyZQ0KCWlmICgkcXVlcnkpIHsNCgkJJHF1ZXJ5 ID0gc21kX3F1ZXJ5X3BhcnNlKCRxdWVyeSwgJGRmbHRzLCAkdXJsZmlsdGVyLCAkdXJscmVw bGFjZSwgJHNwYyk7DQoJCSRycyA9ICgkc2lsZW50KSA/IEBnZXRSb3dzKCRxdWVyeSwgJGRl YnVnKSA6IGdldFJvd3MoJHF1ZXJ5LCAkZGVidWcpOw0KCX0gZWxzZSB7DQoJCWlmICgkY29s dW1uICYmICR0YWJsZSkgew0KCQkJLy8gVE9ETzogUGVyaGFwcyBkb1NsYXNoKCkgdGhlc2U/ DQoJCQkkY29sdW1uID0gc21kX3F1ZXJ5X3BhcnNlKCRjb2x1bW4sICRkZmx0cywgJHVybGZp bHRlciwgJHVybHJlcGxhY2UsICRzcGMpOw0KCQkJJHRhYmxlID0gc21kX3F1ZXJ5X3BhcnNl KCR0YWJsZSwgJGRmbHRzLCAkdXJsZmlsdGVyLCAkdXJscmVwbGFjZSwgJHNwYyk7DQoJCQkk d2hlcmUgPSBzbWRfcXVlcnlfcGFyc2UoJHdoZXJlLCAkZGZsdHMsICR1cmxmaWx0ZXIsICR1 cmxyZXBsYWNlLCAkc3BjKTsNCgkJCSR3aGVyZSA9ICgkd2hlcmUpID8gJHdoZXJlIDogIjE9 MSI7DQoJCQkkcnMgPSAoJHNpbGVudCkgPyBAc2FmZV9yb3dzKCRjb2x1bW4sICR0YWJsZSwg JHdoZXJlLCAkZGVidWcpIDogc2FmZV9yb3dzKCRjb2x1bW4sICR0YWJsZSwgJHdoZXJlLCAk ZGVidWcpOw0KCQl9IGVsc2Ugew0KCQkJdHJpZ2dlcl9lcnJvcigiWW91IG11c3Qgc3BlY2lm eSBhdCBsZWFzdCAxICdjb2x1bW4nIGFuZCBhICd0YWJsZScuIik7DQoJCX0NCgl9DQoNCgkk bnVtcm93cyA9IGNvdW50KCRycyk7DQoJJHRydWVQYXJ0ID0gRXZhbEVsc2UoJHRoaW5nLCAx KTsNCg0KCWlmICgkcnMpIHsNCgkJaWYgKCRkZWJ1ZyA+IDEpIHsNCgkJCWVjaG8gIisrIFFV RVJZIFJFU1VMVCBTRVQgKysiOw0KCQkJZG1wKCRudW1yb3dzIC4gIiBST1dTIik7DQoJCQlk bXAoJHJzKTsNCgkJfQ0KDQoJCWlmICgkbGltaXQgPiAwKSB7DQoJCQkkdG90YWwgPSAkbnVt cm93cyAtICRvZmZzZXQ7DQoJCQkkbnVtUGFnZXMgPSBjZWlsKCR0b3RhbC8kbGltaXQpOw0K CQkJJHBnID0gKCEkcHJldGV4dFsncGcnXSkgPyAxIDogJHByZXRleHRbJ3BnJ107DQoJCQkk cGdvZmZzZXQgPSAkb2Zmc2V0ICsgKCgkcGcgLSAxKSAqICRsaW1pdCk7DQoJCQkvLyBzZW5k IHBhZ2luZyBpbmZvIHRvIHR4cDpuZXdlciBhbmQgdHhwOm9sZGVyDQoJCQkkcGFnZW91dFsn cGcnXSA9ICRwZzsNCgkJCSRwYWdlb3V0WydudW1QYWdlcyddID0gJG51bVBhZ2VzOw0KCQkJ JHBhZ2VvdXRbJ3MnXSA9ICRwcmV0ZXh0WydzJ107DQoJCQkkcGFnZW91dFsnYyddID0gJHBy ZXRleHRbJ2MnXTsNCgkJCSRwYWdlb3V0WydncmFuZF90b3RhbCddID0gJG51bXJvd3M7DQoJ CQkkcGFnZW91dFsndG90YWwnXSA9ICR0b3RhbDsNCg0KCQkJaWYgKGVtcHR5KCR0aGlzcGFn ZSkpDQoJCQkJJHRoaXNwYWdlID0gJHBhZ2VvdXQ7DQoJCQlpZiAoJHBnb25seSkNCgkJCQly ZXR1cm47DQoJCX0gZWxzZSB7DQoJCQkkcGdvZmZzZXQgPSAkb2Zmc2V0Ow0KCQl9DQoNCgkJ JHJzID0gYXJyYXlfc2xpY2UoJHJzLCAkcGdvZmZzZXQsICgoJGxpbWl0PT0wKSA/IDk5OTk5 IDogJGxpbWl0KSk7DQoJCSRwYWdlcm93cyA9IGNvdW50KCRycyk7DQoNCgkJJHJlcGxhY2Vt ZW50cyA9ICRyZXBhZ2VtZW50cyA9ICRjb2xyZXBsYWNlbWVudHMgPSBhcnJheSgpOw0KCQkk cGFnZV9yb3djbnQgPSAoJGNvdW50PT0idXAiKSA/IDAgOiAkcGFnZXJvd3MtMTsNCgkJJHFy eV9yb3djbnQgPSAoJGNvdW50PT0idXAiKSA/ICRwZ29mZnNldC0kb2Zmc2V0IDogJG51bXJv d3MtJHBnb2Zmc2V0LTE7DQoJCSRmaXJzdF9yb3cgPSAkcXJ5X3Jvd2NudCArIDE7DQoJCWZv cmVhY2ggKCRycyBhcyAkcm93KSB7DQoJCQlmb3JlYWNoICgkcm93IGFzICRjb2xpZCA9PiAk dmFsKSB7DQoJCQkJaWYgKCRwYWdlX3Jvd2NudCA9PSAwICYmICRjb2xzZm9ybSkgew0KCQkJ CQkkY29scmVwbGFjZW1lbnRzWyd7Jy4kY29saWQuJ30nXSA9ICRjb2xpZDsNCgkJCQl9DQoJ CQkJLy8gQ29uc3RydWN0IHRoZSByZXBsYWNlbWVudCBhcnJheXMNCgkJCQkkcmVwbGFjZW1l bnRzWyd7Jy4kY29saWQuJ30nXSA9IChpbl9hcnJheSgkY29saWQsICRlc2NhcGVzKSA/IGh0 bWxzcGVjaWFsY2hhcnMoJHZhbCwgRU5UX1FVT1RFUykgOiAkdmFsKTsNCgkJCQlpZiAoJHBh Z2Vfcm93Y250ID09ICgoJGNvdW50PT0idXAiKSA/ICRwYWdlcm93cy0xIDogMCkgJiYgJHBh Z2Vmb3JtICYmICRsaW1pdD4wKSB7DQoJCQkJCSRyZXBhZ2VtZW50c1sne3NtZF9hbGxyb3dz fSddID0gJHRvdGFsOw0KCQkJCQkkcmVwYWdlbWVudHNbJ3tzbWRfcGFnZXN9J10gPSAkbnVt UGFnZXM7DQoJCQkJCSRyZXBhZ2VtZW50c1sne3NtZF90aGlzcGFnZX0nXSA9ICRwZzsNCgkJ CQkJJHJlcGFnZW1lbnRzWyd7c21kX3Jvd19zdGFydH0nXSA9ICRmaXJzdF9yb3c7DQoJCQkJ CSRyZXBhZ2VtZW50c1sne3NtZF9yb3dfZW5kfSddID0gJHFyeV9yb3djbnQgKyAxOw0KCQkJ CX0NCgkJCX0NCgkJCSRyZXBsYWNlbWVudHNbJ3tzbWRfYWxscm93c30nXSA9ICgoJGxpbWl0 PjApID8gJHRvdGFsIDogJG51bXJvd3MtJHBnb2Zmc2V0KTsNCgkJCSRyZXBsYWNlbWVudHNb J3tzbWRfcm93c30nXSA9ICRwYWdlcm93czsNCgkJCSRyZXBsYWNlbWVudHNbJ3tzbWRfcGFn ZXN9J10gPSAoKCRsaW1pdD4wKSA/ICRudW1QYWdlcyA6IDEpOw0KCQkJJHJlcGxhY2VtZW50 c1sne3NtZF90aGlzcGFnZX0nXSA9ICgoJGxpbWl0PjApID8gJHBnIDogMSk7DQoJCQkkcmVw bGFjZW1lbnRzWyd7c21kX3RoaXNpbmRleH0nXSA9ICRwYWdlX3Jvd2NudDsNCgkJCSRyZXBs YWNlbWVudHNbJ3tzbWRfdGhpc3Jvd30nXSA9ICRwYWdlX3Jvd2NudCArIDE7DQoJCQkkcmVw bGFjZW1lbnRzWyd7c21kX2N1cnNvcmluZGV4fSddID0gJHFyeV9yb3djbnQ7DQoJCQkkcmVw bGFjZW1lbnRzWyd7c21kX2N1cnNvcn0nXSA9ICRxcnlfcm93Y250ICsgMTsNCgkJCWlmICgk ZGVidWcgPiAwKSB7DQoJCQkJZWNobyAiKysgUkVQTEFDRU1FTlRTICsrIjsNCgkJCQlkbXAo JHJlcGxhY2VtZW50cyk7DQoJCQl9DQoJCQkkb3V0W10gPSAoJHByZXBhcnNlKSA/IHN0cnRy KHBhcnNlKCR0cnVlUGFydCksICRyZXBsYWNlbWVudHMpIDogcGFyc2Uoc3RydHIoJHRydWVQ YXJ0LCAkcmVwbGFjZW1lbnRzKSk7DQoJCQkkcXJ5X3Jvd2NudCA9ICgkY291bnQ9PSJ1cCIp ID8gJHFyeV9yb3djbnQrMSA6ICRxcnlfcm93Y250LTE7DQoJCQkkcGFnZV9yb3djbnQgPSAo JGNvdW50PT0idXAiKSA/ICRwYWdlX3Jvd2NudCsxIDogJHBhZ2Vfcm93Y250LTE7DQoJCX0N Cg0KCQlpZiAoJG91dCkgew0KCQkJaWYgKCRjb2xyZXBsYWNlbWVudHMpIHsNCgkJCQkkY29s b3V0W10gPSAoJHByZXBhcnNlKSA/IHN0cnRyKHBhcnNlKCRjb2xzZm9ybSksICRjb2xyZXBs YWNlbWVudHMpIDogcGFyc2Uoc3RydHIoJGNvbHNmb3JtLCAkY29scmVwbGFjZW1lbnRzKSk7 DQoJCQl9DQoJCQlpZiAoJHJlcGFnZW1lbnRzKSB7DQoJCQkJJHBhZ2VvdXQgPSAoJHByZXBh cnNlKSA/IHN0cnRyKHBhcnNlKCRwYWdlZm9ybSksICRyZXBhZ2VtZW50cykgOiBwYXJzZShz dHJ0cigkcGFnZWZvcm0sICRyZXBhZ2VtZW50cykpOw0KCQkJfQ0KDQoJCQkvLyBNYWtlIHVw IHRoZSBmaW5hbCBvdXRwdXQNCgkJCWlmIChpbl9hcnJheSgiYWJvdmUiLCAkcGFnZWJpdCkp IHsNCgkJCQkkZmluYWxvdXRbXSA9ICRwYWdlb3V0Ow0KCQkJfQ0KCQkJJGZpbmFsb3V0W10g PSBkb0xhYmVsKCRsYWJlbCwgJGxhYmVsdGFnKS5kb1dyYXAoYXJyYXlfbWVyZ2UoJGNvbG91 dCwgJG91dCksICR3cmFwdGFnLCAkYnJlYWssICRjbGFzcyk7DQoJCQlpZiAoaW5fYXJyYXko ImJlbG93IiwgJHBhZ2ViaXQpKSB7DQoJCQkJJGZpbmFsb3V0W10gPSAkcGFnZW91dDsNCgkJ CX0NCgkJCXJldHVybiBqb2luKCcnLCAkZmluYWxvdXQpOw0KCQl9DQoJfSBlbHNlIHsNCgkJ cmV0dXJuIHBhcnNlKEV2YWxFbHNlKCR0aGluZywgMCkpOw0KCX0NCglyZXR1cm4gJyc7DQp9 DQoNCi8vIFJldHVybnMgYSBzdHJpbmcgd2l0aCBhbnkgPyB2YXJpYWJsZXMgcmVwbGFjZWQg d2l0aCB0aGVpciBnbG9iYWxzDQovLyBVUkwgVmFyaWFibGVzIGFyZSBvcHRpb25hbGx5IHJ1 biB0aHJvdWdoIHByZWdfcmVwbGFjZSgpIHRvIHNhbml0aXplIHRoZW0uDQovLyAgJHBhdCBp cyBhbiBhcnJheSBvZiByZWdleCBzZWFyY2ggcGF0dGVybnMNCi8vICAkcmVwIGlzIGFuIGFy cmF5IG9mIHJlZ2V4IHNlYXJjaCByZXBhbGNlbWVudHMgKGRlZmF1bHQgPSAnJywgaS5lLiBy ZW1vdmUgd2hhdGV2ZXIgbWF0Y2hlcykNCmZ1bmN0aW9uIHNtZF9xdWVyeV9wYXJzZSgkaXRl bSwgJGRmbHRzPWFycmF5KCcnKSwgJHBhdD1hcnJheSgnJyksICRyZXA9YXJyYXkoJycpLCAk bGF4PXRydWUpIHsNCglnbG9iYWwgJHByZXRleHQsICR0aGlzYXJ0aWNsZSwgJHRoaXNpbWFn ZSwgJHRoaXNmaWxlLCAkdGhpc2xpbmssICR2YXJpYWJsZTsNCg0KCSRpdGVtID0gaHRtbF9l bnRpdHlfZGVjb2RlKCRpdGVtKTsNCg0KCS8vIFNvbWV0aW1lcyBwZXNreSBVbmljb2RlIGlz IG5vdCBjb21waWxlZCBpbi4gRGV0ZWN0IGlmIHNvIGFuZCBmYWxsIGJhY2sgdG8gQVNDSUkN CglpZiAoIUBwcmVnX21hdGNoKCcvXHBML3UnLCAnYScpKSB7DQoJCSRtb2RSRSA9ICgkbGF4 KSA/ICcvKFw/KShbQS1aYS16MC05X1wtIF0rKS8nIDogJy8oXD8pKFtBLVphLXowLTlfXC1d KykvJzsNCgl9IGVsc2Ugew0KCQkkbW9kUkUgPSAoJGxheCkgPyAnLyhcPykoW1xwe0x9XHB7 Tn1ccHtQY31ccHtQZH1ccHtac31dKykvJyA6ICcvKFw/KShbXHB7TH1ccHtOfVxwe1BjfVxw e1BkfV0rKS8nOw0KCX0NCg0KCSRudW1Nb2RzID0gcHJlZ19tYXRjaF9hbGwoJG1vZFJFLCAk aXRlbSwgJG1vZHMpOw0KDQoJZm9yICgkbW9kQ3RyID0gMDsgJG1vZEN0ciA8ICRudW1Nb2Rz OyAkbW9kQ3RyKyspIHsNCgkJJG1vZENoYXIgPSAkbW9kc1sxXVskbW9kQ3RyXTsNCgkJJG1v ZEl0ZW0gPSB0cmltKCRtb2RzWzJdWyRtb2RDdHJdKTsNCgkJJGxvd2l0ZW0gPSBzdHJ0b2xv d2VyKCRtb2RJdGVtKTsNCgkJJHVybHZhciA9ICRzdnJ2YXIgPSAnJzsNCg0KCQlpZiAoZ3Bz KCRsb3dpdGVtKSAhPSAnJykgew0KCQkJJHVybHZhciA9IGRvU2xhc2goZ3BzKCRsb3dpdGVt KSk7DQoJCQlpZiAoJHVybHZhciAmJiAkcGF0KSB7DQoJCQkJJHVybHZhciA9IHByZWdfcmVw bGFjZSgkcGF0LCAkcmVwLCAkdXJsdmFyKTsNCgkJCX0NCgkJfQ0KCQlpZiAoc2VydmVyU2V0 KCRtb2RJdGVtKSAhPSAnJykgew0KCQkJJHN2cnZhciA9IGRvU2xhc2goc2VydmVyU2V0KCRt b2RJdGVtKSk7DQoJCQlpZiAoJHN2cnZhciAmJiAkcGF0KSB7DQoJCQkJJHN2cnZhciA9IHBy ZWdfcmVwbGFjZSgkcGF0LCAkcmVwLCAkc3ZydmFyKTsNCgkJCX0NCgkJfQ0KDQoJCWlmIChp c3NldCgkdmFyaWFibGVbJGxvd2l0ZW1dKSAmJiAkdmFyaWFibGVbJGxvd2l0ZW1dICE9ICcn KSB7DQoJCQkkaXRlbSA9IHN0cl9yZXBsYWNlKCRtb2RDaGFyLiRtb2RJdGVtLCAkdmFyaWFi bGVbJGxvd2l0ZW1dLCAkaXRlbSk7DQoJCX0gZWxzZSBpZiAoJHN2cnZhciAhPSAnJykgew0K CQkJJGl0ZW0gPSBzdHJfcmVwbGFjZSgkbW9kQ2hhci4kbW9kSXRlbSwgJHN2cnZhciwgJGl0 ZW0pOw0KCQl9IGVsc2UgaWYgKGlzc2V0KCR0aGlzaW1hZ2VbJGxvd2l0ZW1dKSAmJiAhZW1w dHkoJHRoaXNpbWFnZVskbG93aXRlbV0pKSB7DQoJCQkkaXRlbSA9IHN0cl9yZXBsYWNlKCRt b2RDaGFyLiRtb2RJdGVtLCAkdGhpc2ltYWdlWyRsb3dpdGVtXSwgJGl0ZW0pOw0KCQl9IGVs c2UgaWYgKGlzc2V0KCR0aGlzZmlsZVskbG93aXRlbV0pICYmICFlbXB0eSgkdGhpc2ZpbGVb JGxvd2l0ZW1dKSkgew0KCQkJJGl0ZW0gPSBzdHJfcmVwbGFjZSgkbW9kQ2hhci4kbW9kSXRl bSwgJHRoaXNmaWxlWyRsb3dpdGVtXSwgJGl0ZW0pOw0KCQl9IGVsc2UgaWYgKGlzc2V0KCR0 aGlzbGlua1skbG93aXRlbV0pICYmICFlbXB0eSgkdGhpc2xpbmtbJGxvd2l0ZW1dKSkgew0K CQkJJGl0ZW0gPSBzdHJfcmVwbGFjZSgkbW9kQ2hhci4kbW9kSXRlbSwgJHRoaXNsaW5rWyRs b3dpdGVtXSwgJGl0ZW0pOw0KCQl9IGVsc2UgaWYgKGFycmF5X2tleV9leGlzdHMoJGxvd2l0 ZW0sICRwcmV0ZXh0KSAmJiAhZW1wdHkoJHByZXRleHRbJGxvd2l0ZW1dKSkgew0KCQkJJGl0 ZW0gPSBzdHJfcmVwbGFjZSgkbW9kQ2hhci4kbW9kSXRlbSwgJHByZXRleHRbJGxvd2l0ZW1d LCAkaXRlbSk7DQoJCX0gZWxzZSBpZiAoaXNzZXQoJHRoaXNhcnRpY2xlWyRsb3dpdGVtXSkg JiYgIWVtcHR5KCR0aGlzYXJ0aWNsZVskbG93aXRlbV0pKSB7DQoJCQkkaXRlbSA9IHN0cl9y ZXBsYWNlKCRtb2RDaGFyLiRtb2RJdGVtLCAkdGhpc2FydGljbGVbJGxvd2l0ZW1dLCAkaXRl bSk7DQoJCX0gZWxzZSBpZiAoJHVybHZhciAhPSAnJykgew0KCQkJJGl0ZW0gPSBzdHJfcmVw bGFjZSgkbW9kQ2hhci4kbW9kSXRlbSwgJHVybHZhciwgJGl0ZW0pOw0KCQl9IGVsc2UgaWYg KGlzc2V0KCRkZmx0c1skbG93aXRlbV0pKSB7DQoJCQkkaXRlbSA9IHN0cl9yZXBsYWNlKCRt b2RDaGFyLiRtb2RJdGVtLCAkZGZsdHNbJGxvd2l0ZW1dLCAkaXRlbSk7DQoJCX0gZWxzZSB7 DQoJCQkkaXRlbSA9IHN0cl9yZXBsYWNlKCRtb2RDaGFyLiRtb2RJdGVtLCAkbW9kSXRlbSwg JGl0ZW0pOw0KCQl9DQoJfQ0KCXJldHVybiAkaXRlbTsNCn0iO3M6NDoidHlwZSI7czoxOiIw IjtzOjU6Im9yZGVyIjtzOjE6IjUiO3M6NToiZmxhZ3MiO3M6MToiMCI7czo0OiJoZWxwIjtz OjMxNTY5OiI8ZGl2IGlkPSJzbWRfaGVscCI+CgoJPGgxPnNtZF9xdWVyeTwvaDE+CgoJPHA+ VGhlIGxhemllc3QgdGFnIGV2ZXIhIEFsbG93cyB5b3UgdG8gbWFrZSBhZC1ob2MgcXVlcmll cyB0byB0aGUgZGF0YWJhc2UgYW5kIHByb2Nlc3MgdGhlIHJlc3VsdHMsIHJvdyBieSByb3cs IGluIGEgZm9ybSBvciBjb250YWluZXIuPC9wPgoKCTxoMj5GZWF0dXJlczwvaDI+CgoJPHVs PgoJCTxsaT5TdXBwb3J0cyBzaW1wbGUgcXVlcmllcyB3aXRoIGEgcmVkdWNlZCBzeW50YXgg KDxzcGFuIGNsYXNzPSJjYXBzIj5TRUxFQ1Q8L3NwYW4+IGNvbHMgPHNwYW4gY2xhc3M9ImNh cHMiPkZST008L3NwYW4+IHRhYmxlIDxzcGFuIGNsYXNzPSJjYXBzIj5XSEVSRTwvc3Bhbj4g Y2xhdXNlKSBvciB5b3VyIG93biBjdXN0b20gcXVlcmllczwvbGk+CgkJPGxpPlJlYWQgaW5m b3JtYXRpb24gZnJvbSBhbnkgcGFydCBvZiB0aGUgY3VycmVudCBhcnRpY2xlLCBpbWFnZSAo cGxhbm5lZCksIGZpbGUsIGxpbmssIDxjb2RlPiZsdDt0eHA6dmFyaWFibGUgLyZndDs8L2Nv ZGU+IG9yIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGxpbmUuIElmIGFueSBmaWVs ZHMgYXJlIG1pc3NpbmcgeW91IGNhbiBzcGVjaWZ5IGEgZGVmYXVsdCB2YWx1ZTwvbGk+CgkJ PGxpPk9wdGlvbmFsbHkgZmlsdGVyIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFu PiBpbnB1dCB1c2luZyByZWd1bGFyIGV4cHJlc3Npb25zLCBmb3Igc2FmZXR5PC9saT4KCQk8 bGk+RWFjaCByb3cgY2FuIGJlIHBhc3NlZCB0byBhIGZvcm0gKG9yIHRoZSBwbHVnaW4gY2Fu IGJlIHVzZWQgYXMgYSBjb250YWluZXIgdGFnIHdpdGggb3Igd2l0aG91dCA8Y29kZT4mbHQ7 dHhwOmVsc2UgLyZndDs8L2NvZGU+KSB0byBkaXNwbGF5IHRoZSByZXN1bHRzPC9saT4KCQk8 bGk+Q29sdW1uIGhlYWRpbmdzIG1heSBiZSBvdXRwdXQgdXNpbmcgYSBzZWNvbmQgZm9ybTwv bGk+CgkJPGxpPlJlc3VsdCBzZXRzIGNhbiBiZSBwYWdpbmF0ZWQsIHdpdGggc3VwcG9ydCBm b3IgYSBwYWdpbmcgZm9ybTwvbGk+Cgk8L3VsPgoKCTxoMj5BdXRob3I8L2gyPgoKCTxwPjxh IGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9jb250YWN0Ij5TdGVmIERhd3NvbjwvYT48 L3A+CgoJPGgyPkluc3RhbGxhdGlvbiAvIFVuaW5zdGFsbGF0aW9uPC9oMj4KCgk8cD5Eb3du bG9hZCB0aGUgcGx1Z2luIGZyb20gZWl0aGVyIDxhIGhyZWY9Imh0dHA6Ly90ZXh0cGF0dGVy bi5vcmcvcGx1Z2lucy85NzYvc21kX3F1ZXJ5Ij50ZXh0cGF0dGVybi5vcmc8L2E+LCBvciB0 aGUgPGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL3N3Ij5zb2Z0d2FyZSBwYWdlPC9h PiwgcGFzdGUgdGhlIGNvZGUgaW50byB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bh bj4gQWRtaW4gLSZndDsgUGx1Z2lucyBwYW5lLCBpbnN0YWxsIGFuZCBlbmFibGUgdGhlIHBs dWdpbi4gVmlzaXQgdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20v dmlld3RvcGljLnBocD9pZD0yNzI3OSI+Zm9ydW0gdGhyZWFkPC9hPiBmb3IgbW9yZSBpbmZv IG9yIHRvIHJlcG9ydCBvbiB0aGUgc3VjY2VzcyBvciBvdGhlcndpc2Ugb2YgdGhlIHBsdWdp bi48L3A+CgoJPHA+VW5pbnN0YWxsIGJ5IHNpbXBseSBkZWxldGluZyB0aGUgcGx1Z2luIGZy b20gdGhlIEFkbWluLSZndDtQbHVnaW5zIHBhbmUuPC9wPgoKCTxoMj5zbWRfcXVlcnkgdXNh Z2U8L2gyPgoKCTxwPlVzZSB0aGUgdGFnIGluIGFueSBwYWdlLCBmb3JtLCBhcnRpY2xlLCBm aWxlLCBsaW5rLCBldGMgY29udGV4dCB0byBncmFiIHN0dWZmIGZyb20gdGhlIGRhdGFiYXNl LiBUaGUgcGx1Z2luIGNhbiBvcGVyYXRlIGluIG9uZSBvZiB0d28gbW9kZXM6PC9wPgoKCTxv bD4KCQk8bGk+c2ltcGxlIG1vZGUganVzdCBhbGxvd3MgPGNvZGU+U0VMRUNUIHN0dWZmIEZS T00gdGFibGUgV0hFUkUgY2xhdXNlPC9jb2RlPjwvbGk+CgkJPGxpPmFkdmFuY2VkIG1vZGUg dXNlcyB0aGUgPGNvZGU+cXVlcnk8L2NvZGU+IGF0dHJpYnV0ZSBzbyB5b3UgY2FuIGRlc2ln biB5b3VyIG93biBxdWVyeS4gSXQgY2FuIGluY2x1ZGUgPHNwYW4gY2xhc3M9ImNhcHMiPkNP VU5UPC9zcGFuPiAoKiksIGpvaW5zLCBhbnl0aGluZzsgcGVyaGFwcyBldmVuIDxzcGFuIGNs YXNzPSJjYXBzIj5JTlNFUlQ8L3NwYW4+IGFuZCA8c3BhbiBjbGFzcz0iY2FwcyI+VVBEQVRF PC9zcGFuPiAoPykgYWx0aG91Z2ggaXQmIzgyMTc7cyB1bnRlc3RlZCBhbmQgbGlhYmxlIHRv IGZsb29kaW5nPC9saT4KCTwvb2w+CgoJPGgzIGNsYXNzPSJhdHRzICIgaWQ9ImF0dHJpYnV0 ZXMiPkF0dHJpYnV0ZXM8L2gzPgoKCTxoND5TaW1wbGUgbW9kZTwvaDQ+CgoJPHVsIGNsYXNz PSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNvbHVtbjwvc3Bhbj4gOiBjb21t YS1zZXBhcmF0ZWQgbGlzdCBvZiBjb2x1bW5zIHRvIHJldHJpZXZlIGZyb20gdGhlIGRhdGFi YXNlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnRhYmxlPC9zcGFuPiA6IG5hbWUg b2YgdGhlIHRhYmxlIHRvIHJldHJpZXZlIHRoZSBjb2x1bW5zIGZyb20gKHllcywgbm9uLTxz cGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IHRhYmxlcyBhcmUgYWxzbyBzdXBwb3J0ZWQg aWYgdGhleSBhcmUgaW4gdGhlIHNhbWUgZGF0YWJhc2UgOi0pPC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPndoZXJlPC9zcGFuPiA6IGFueSBleHRyYSBjbGF1c2UgeW91IHdpc2gg dG8gc3BlY2lmeS4gRGVmYXVsdHMgdG8gJiM4MjIwO3RoZSB3aG9sZSBkYXJuIHRhYmxlJiM4 MjIxOzwvbGk+Cgk8L3VsPgoKCTxoND5BZHZhbmNlZCBtb2RlPC9oND4KCgk8dWw+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj5xdWVyeTwvc3Bhbj4gOiBhbnkgcXVlcnkgeW91IGxpa2Ug Y2FuIGJlIHVzZWQgaGVyZS4gT3ZlcnJpZGVzIDxjb2RlPmNvbHVtbjwvY29kZT4sIDxjb2Rl PnRhYmxlPC9jb2RlPiBhbmQgPGNvZGU+d2hlcmU8L2NvZGU+PC9saT4KCTwvdWw+CgoJPGg0 PkZvcm1zIGFuZCBwYWdpbmc8L2g0PgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i PmZvcm08L3NwYW4+IDogdGhlIGZvcm0gdG8gdXNlIHRvIHBhcnNlIGVhY2ggcmV0dXJuZWQg cm93LiBTZWUgPGEgaHJlZj0iI3JlcGxhY2VtZW50cyI+cmVwbGFjZW1lbnRzPC9hPi4gSWYg bm90IHNwZWNpZmllZCwgdGhlIHBsdWdpbiB3aWxsIHVzZSBhbnl0aGluZyBjb250YWluZWQg YmV0d2VlbiBpdHMgb3BlbmluZyBhbmQgY2xvc2luZyB0YWc8L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+Y29sc2Zvcm08L3NwYW4+IDogb3B0aW9uYWwgPHNwYW4gY2xhc3M9ImNh cHMiPlRYUDwvc3Bhbj4gZm9ybSB0byBwYXJzZSBhbnkgaGVhZGVyIHJvdyBjb250YWluaW5n IGNvbHVtbiBuYW1lcyAob2YgbGltaXRlZCB1c2UpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPnBhZ2Vmb3JtPC9zcGFuPiA6IG9wdGlvbmFsOyA8c3BhbiBjbGFzcz0iY2FwcyI+ VFhQPC9zcGFuPiBmb3JtIHVzZWQgdG8gc3BlY2lmeSB0aGUgbGF5b3V0IG9mIGFueSBwYWdp bmcgc3RhdGlzdGljcyBzdWNoIGFzIHBhZ2UgbnVtYmVyLCBxdWFudGl0eSBvZiByZWNvcmRz IHBlciBwYWdlLCB0b3RhbCBudW1iZXIgb2YgcmVjb3JkcywgZXRjLjwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj5wYWdlcG9zPC9zcGFuPiA6IHRoZSBwb3NpdGlvbiBvZiB0aGUg cGFnaW5nIGluZm9ybWF0aW9uLiBPcHRpb25zIGFyZSA8Y29kZT5iZWxvdzwvY29kZT4gKHRo ZSBkZWZhdWx0KSwgPGNvZGU+YWJvdmU8L2NvZGU+LCBvciBib3RoIG9mIHRoZW0gc2VwYXJh dGVkIGJ5IDxjb2RlPmRlbGltPC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij5wcmVwYXJzZTwvc3Bhbj4gOiBub3JtYWxseSwgYW55IGNvbnRhaW5lciBvciBmb3JtIHdp bGwgaGF2ZSBpdHMgcmVwbGFjZW1lbnQgdmFyaWFibGVzIHN3YXBwZWQgZm9yIGNvbnRlbnQg YW5kIDxlbT50aGVuPC9lbT4gaXQgd2lsbCBiZSBwYXJzZWQgdG8gcHJvY2VzcyBhbnkgPHNw YW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gdGFncy4gSWYgeW91IHdpc2ggdG8gcmV2ZXJz ZSB0aGlzIG9yZGVyIHNvIHRoYXQgdGhlIGNvbnRhaW5lciBpcyBwYXJzZWQgZmlyc3QgYmVm b3JlIHRoZSByZXBsYWNlbWVudHMgYXJlIG1hZGUsIHNwZWNpZnkgPGNvZGU+cHJlcGFyc2U9 JnF1b3Q7MSZxdW90OzwvY29kZT4uIFZlcnkgdXNlZnVsIHdoZW4gdXNpbmcgdGhlIDxjb2Rl PiZsdDt0eHA6eWllbGQgLyZndDs8L2NvZGU+IHRhZyAoc2VlIDxhIGhyZWY9IiNlZzkiPmV4 YW1wbGUgOTwvYT4pLiBEZWZhdWx0OiAwPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i PmxpbWl0PC9zcGFuPiA6IHNob3cgdGhpcyBtYW55IHJlc3VsdHMgcGVyIHBhZ2UuIEhhcyBu byBiZWFyaW5nIG9uIGFueSA8c3BhbiBjbGFzcz0iY2FwcyI+U1FMPC9zcGFuPiA8Y29kZT5M SU1JVDwvY29kZT4geW91IG1heSBzZXQuIFNldHRpbmcgYSA8Y29kZT5saW1pdDwvY29kZT4g aW4gdGhlIHNtZF9xdWVyeSB0YWcgc3dpdGNoZXMgcGFnaW5nIG9uIGF1dG9tYXRpY2FsbHkg c28geW91IGNhbiB1c2UgdGhlIDxjb2RlPiZsdDt0eHA6b2xkZXIgLyZndDs8L2NvZGU+IGFu ZCA8Y29kZT4mbHQ7dHhwOm5ld2VyIC8mZ3Q7PC9jb2RlPiB0YWdzIHRvIHN0ZXAgdGhyb3Vn aCBlYWNoIHBhZ2Ugb2YgcmVzdWx0czwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5v ZmZzZXQ8L3NwYW4+IDogc2tpcCB0aGlzIG1hbnkgcm93cyBiZWZvcmUgb3V0cHV0dGluZyB0 aGUgcmVzdWx0czwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5wZ29ubHk8L3NwYW4+ IDogZG9uJiM4MjE3O3QgZGlzcGxheSB0aGUgcmVzdWx0cywganVzdCBkbyB0aGUgcGFnaW5h dGlvbiBjb3VudC4gVGhpcyBjYW4gYmUgdXNlZCBmb3Igc3BlY2lhbCBlZmZlY3RzIG9yIHNw bGl0dGluZyBtdWx0aXBsZSBxdWVyeSBzZXRzIG9uIHRoZSBzYW1lIHBhZ2U8L2xpPgoJPC91 bD4KCgk8aDQ+RmlsdGVyczwvaDQ+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ dXJsZmlsdGVyPC9zcGFuPiA6IGZpbHRlciA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFu PiBpbnB1dCB3aXRoIHRoaXMgbGlzdCBvZiByZWd1bGFyIGV4cHJlc3Npb25zIChlYWNoIHNl cGFyYXRlZCBieSA8Y29kZT5kZWxpbTwvY29kZT4pPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPnVybHJlcGxhY2U8L3NwYW4+IDogcmVwbGFjZSBlYWNoIGZpbHRlcmVkIDxzcGFu IGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGVsZW1lbnQgbGlzdGVkIGluIDxjb2RlPnVybGZp bHRlcjwvY29kZT4gd2l0aCB0aGlzIGxpc3Qgb2YgcmVndWxhciBleHByZXNzaW9ucyAoZWFj aCBzZXBhcmF0ZWQgYnkgPGNvZGU+ZGVsaW08L2NvZGU+KS4gSWYgbm90IHVzZWQsIGFueXRo aW5nIG1hdGNoaW5nIDxjb2RlPnVybGZpbHRlcjwvY29kZT4gd2lsbCBiZSByZW1vdmVkIGZy b20gYW55IDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IHZhcmlhYmxlcy4gU2VlIDxh IGhyZWY9IiNmaWx0ZXJpbmciPkZpbHRlcmluZyBhbmQgaW5qZWN0aW9uPC9hPjwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5kZWZhdWx0czwvc3Bhbj4gOiBjb21tYSBzZXBhcmF0 ZWQgbGlzdCBvZiB2YWx1ZXMgdG8gdXNlIGluIHRoZSBldmVudCBzb21lIGZpZWxkIHlvdSBz cGVjaWZpZWQgZG9lc24mIzgyMTc7dCBleGlzdC4gRWFjaCBkZWZhdWx0IHNob3VsZCBiZSBn aXZlbiBhcyA8Y29kZT5uYW1lOiB2YWx1ZTwvY29kZT4gKHRoZSA8Y29kZT46PC9jb2RlPiBp cyBjb25maWd1cmFibGUgdmlhIHRoZSA8Y29kZT5wYXJhbWRlbGltPC9jb2RlPiBhdHRyaWJ1 dGUpLiBGb3IgZXhhbXBsZSA8Y29kZT5kZWZhdWx0cz0mcXVvdDtpZDogMSwgbXlfY2F0OiBt YW1tYWxzLCB1c2VyX3NlYzogP2RlZnNlYyZxdW90OzwvY29kZT4gd291bGQgbWVhbiB0aGF0 IGlmIHRoZSA8Y29kZT5pZDwvY29kZT4gZmllbGQgd2FzIGJsYW5rLCB0aGUgbnVtYmVyIDEg d291bGQgYmUgdXNlZDsgaWYgdGhlIHZhcmlhYmxlIDxjb2RlPm15X2NhdDwvY29kZT4gd2Fz IGVtcHR5LCB0aGUgd29yZCA8Y29kZT5tYW1tYWxzPC9jb2RlPiB3b3VsZCBiZSB1c2VkOyBh bmQgaWYgdGhlIDxjb2RlPnVzZXJfc2VjPC9jb2RlPiB2YXJpYWJsZSB3YXMgZW1wdHksIHVz ZSB0aGUgZGVmYXVsdCB2YWx1ZSBhcyBmb3VuZCBpbiB0aGUgdmFyaWFibGUgPGNvZGU+ZGVm c2VjPC9jb2RlPiAod2hpY2ggY291bGQgaGF2ZSBiZWVuIHNldCB2aWEgYSA8Y29kZT4mbHQ7 dHhwOnZhcmlhYmxlIC8mZ3Q7PC9jb2RlPiBlYXJsaWVyIGluIHRoZSBwYWdlKTwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5lc2NhcGU8L3NwYW4+IDogbGlzdCBvZiBjb2x1bW4g bmFtZXMgd2l0aCB3aGljaCB0byBlc2NhcGUgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3Nw YW4+IGVudGl0aWVzLiBVc2VmdWwgaWYgeW91IGhhdmUgcmV0dXJuZWQgYm9keSBvciBleGNl cnB0IGJsb2NrcyB0aGF0IG1heSBjb250YWluIGFwb3N0cm9waGVzIHRoYXQgY291bGQga2ls bCB0YWdzIGluc2lkZSB0aGUgc21kX3F1ZXJ5IGNvbnRhaW5lci4gRGVmYXVsdD0mIzgyMTc7 JiM4MjE2OzwvbGk+Cgk8L3VsPgoKCTxoND5UYWcvY2xhc3MvZm9ybWF0dGluZyBhdHRyaWJ1 dGVzPC9oND4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5sYWJlbDwvc3Bhbj4g OiBsYWJlbCB0byBkaXNwbGF5IGFib3ZlIHRoZSBlbnRpcmUgb3V0cHV0PC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPmxhYmVsdGFnPC9zcGFuPiA6IHRoZSAoWClIVE1MIHRhZyB0 byBzdXJyb3VuZCB0aGUgbGFiZWwgd2l0aC4gU3BlY2lmeSBpdCB3aXRob3V0IGFuZ2xlIGJy YWNrZXRzIChlLmcuIDxjb2RlPmxhYmVsdGFnPSZxdW90O2gzJnF1b3Q7PC9jb2RlPik8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+d3JhcHRhZzwvc3Bhbj4gOiB0aGUgKFgpSFRN TCB0YWcgdG8gc3Vycm91bmQgdGhlIGVudGlyZSBvdXRwdXQgKGUuZy4gPGNvZGU+d3JhcHRh Zz0mcXVvdDt0YWJsZSZxdW90OzwvY29kZT4pPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPmJyZWFrPC9zcGFuPiA6IGVhY2ggcm93IHdpbGwgYmUgd3JhcHBlZCB3aXRoIHRoaXMg dGFnIChlLmcuIDxjb2RlPmJyZWFrPSZxdW90O3RyJnF1b3Q7PC9jb2RlPik8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+Y2xhc3M8L3NwYW4+IDogPHNwYW4gY2xhc3M9ImNhcHMi PkNTUzwvc3Bhbj4gY2xhc3MgbmFtZSB0byBhcHBseSB0byBlYWNoIHJvdzwvbGk+Cgk8L3Vs PgoKCTxoND5QbHVnaW4gY3VzdG9taXNhdGlvbjwvaDQ+CgoJPHVsPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+c3RyaWN0ZmllbGRzPC9zcGFuPiA6IHdoZW4gdXNpbmcgJiM4MjE2Oz8m IzgyMTc7IGZpZWxkcywgc3BhY2VzIGFyZSBhbGxvd2VkIGluIGZpZWxkIG5hbWVzLiBTZXQg PGNvZGU+c3RyaWN0ZmllbGRzPSZxdW90OzEmcXVvdDs8L2NvZGU+IHRvIGZvcmJpZCBzcGFj ZXMuIERlZmF1bHQ6IDA8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZGVsaW08L3Nw YW4+IDogdGhlIGRlbGltaXRlciB0byB1c2UgYmV0d2VlbiBwYXR0ZXJucyBpbiA8Y29kZT51 cmxmaWx0ZXI8L2NvZGU+IGFuZCA8Y29kZT51cmxyZXBsYWNlPC9jb2RlPi4gRGVmYXVsdDog Y29tbWEgKDxjb2RlPiw8L2NvZGU+KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5w YXJhbWRlbGltPC9zcGFuPiA6IHRoZSBkZWxpbWl0ZXIgdG8gdXNlIGJldHdlZW4gbmFtZS12 YWx1ZSBwYWlycyBpbiA8Y29kZT5kZWZhdWx0czwvY29kZT4uIERlZmF1bHQ6IGNvbG9uICg8 Y29kZT46PC9jb2RlPik8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+c2lsZW50PC9z cGFuPiA6IGlmIHlvdXIgcXVlcnkgY29udGFpbnMgYW4gZXJyb3IgKHdyb25nIGNvbHVtbiBu YW1lIG9yIHNvbWUgbWFsZm9ybWVkIGlucHV0KSwgdGhlIHBsdWdpbiB3aWxsIGlzc3VlIGEg PHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZXJyb3IgbWVzc2FnZS4gVXNpbmcgPGNv ZGU+c2lsZW50PSZxdW90OzEmcXVvdDs8L2NvZGU+IHdpbGwgYXR0ZW1wdCB0byBoaWRlIHRo aXMgZXJyb3IgbWVzc2FnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jb3VudDwv c3Bhbj4gOiBDYW4gYmUgZWl0aGVyICYjODIyMDt1cCYjODIyMTsgKHRoZSBkZWZhdWx0KSBv ciAmIzgyMjA7ZG93biYjODIyMTsuIFNlZSA8YSBocmVmPSIjcmVwbGFjZW1lbnRzIj57c21k X3RoaXNyb3d9PC9hPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5kZWJ1Zzwvc3Bh bj4gOiBzZXQgdG8gMSB0byBzaG93IHNvbWUgZGVidWcgb3V0cHV0OyB1c2UgMiB0byBzaG93 IGEgYml0IG1vcmUgZGV0YWlsPC9saT4KCTwvdWw+CgoJPHA+VGhlIGF0dHJpYnV0ZXMgPGNv ZGU+cXVlcnk8L2NvZGU+LCA8Y29kZT5jb2x1bW48L2NvZGU+LCA8Y29kZT50YWJsZTwvY29k ZT4gYW5kIDxjb2RlPndoZXJlPC9jb2RlPiBjYW4gY29udGFpbiByZXBsYWNlbWVudHMgdGhl bXNlbHZlcyB0byByZWFkIHZhbHVlcyBmcm9tIHRoZSBjdXJyZW50IGNvbnRleHQuIFNwZWNp ZnkgdGhlIGZpZWxkIG5hbWUgd2l0aCBhIDxjb2RlPj88L2NvZGU+IGluIGZyb250IG9mIGl0 IChlLmcuIDxjb2RlPnF1ZXJ5PSZxdW90O1NFTEVDVCAqIEZST00gdHhwX2ltYWdlIFdIRVJF IGNhdGVnb3J5PSYjMzk7P2NhdGVnb3J5MSYjMzk7IE9SIGNhdGVnb3J5PSYjMzk7P2NhdGVn b3J5MiYjMzk7PC9jb2RlPikgd291bGQgc2hvdyBpbWFnZXMgdGhhdCBoYWQgdGhlaXIgY2F0 ZWdvcnkgc2V0IHRvIG9uZSBvZiB0aGUgYXJ0aWNsZSYjODIxNztzIGNhdGVnb3JpZXMuPC9w PgoKCTxwPlRoZSAmIzgyMTY7PyYjODIxNzsgZmllbGRzIGNhbiBiZSBhbnkgaXRlbSBmcm9t IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiB1bml2ZXJzZSwgaW5jbHVkaW5n IGFueXRoaW5nIHNldCBpbiBhIDxjb2RlPiZsdDt0eHA6dmFyaWFibGUgLyZndDs8L2NvZGU+ IG9yIHNvbWUgdXNlci1pbnB1dCBvbiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bh bj4gYWRkcmVzcyBiYXIuIEZpZWxkcyBhcmUgcHJvY2Vzc2VkIGluIHRoZSBmb2xsb3dpbmcg b3JkZXI7IGFzIHNvb24gYXMgYSBtYXRjaGluZyBlbnRyeSBpcyBmb3VuZCwgdGhlIHJlc3Qg YXJlIG5vdCBjaGVja2VkOjwvcD4KCgk8cD48Y29kZT4mbHQ7dHhwOnZhcmlhYmxlIC8mZ3Q7 PC9jb2RlPiAtJmd0OyA8Y29kZT4kX1NFUlZFUjwvY29kZT4gdmFyIC0mZ3Q7IGltYWdlIC0m Z3Q7IGZpbGUgLSZndDsgbGluayAtJmd0OyBnbG9iYWwgYXJ0aWNsZSAtJmd0OyBjdXJyZW50 IGFydGljbGUgLSZndDsgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdmFyIC0mZ3Q7 IGRlZmF1bHQgdmFsdWUgLSZndDsgdmVyYmF0aW0gKHdpdGhvdXQgJiM4MjE2Oz8mIzgyMTc7 KTwvcD4KCgk8cD5UaGlzIGhpZXJhcmNoeSBhbGxvd3Mgc29tZSBkZWdyZWUgb2Ygc2FmZXR5 OiBzaW5jZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiB2YXJpYWJsZXMgYXJlIHVs dGltYXRlbHkgc2V0IGJ5IHlvdSwgdGhleSBhcmUgY2hlY2tlZCBmaXJzdCwgdGhlbiBncmFk dWFsbHkgbGVzcyBzcGVjaWZpYyBzdHVmZiBpcyBjaGVja2VkIHVudGlsIDxzcGFuIGNsYXNz PSJjYXBzIj5VUkw8L3NwYW4+IHZhcmlhYmxlcyBhcmUgY29uc2lkZXJlZCBhdCB0aGUgYm90 dG9tIG9mIHRoZSBmb29kIGNoYWluLjwvcD4KCgk8aDIgY2xhc3M9ImF0dHMgIiBpZD0icmVw bGFjZW1lbnRzIj5SZXBsYWNlbWVudCB0YWdzPC9oMj4KCgk8cD5JbiB5b3VyIG91dHB1dCBm b3JtIHlvdSBtYXkgc3BlY2lmeSBhbnkgY29sdW1uIG5hbWUgc3Vycm91bmRlZCB3aXRoIDxj b2RlPnt9PC9jb2RlPiBjaGFyYWN0ZXJzIHRvIGRpc3BsYXkgdGhhdCBmaWVsZC4gU28gaWYg eW91ciBxdWVyeSB3YXMgPGNvZGU+U0VMRUNUIGlkLCBuYW1lLCBjYXRlZ29yeSBGUk9NIHR4 cF9pbWFnZSBXSEVSRSBleHQ9JnF1b3Q7LmpwZyZxdW90OzwvY29kZT4geW91IHdvdWxkIGhh dmUgdGhlIGZvbGxvd2luZyByZXBsYWNlbWVudHMgYXZhaWxhYmxlOjwvcD4KCgk8dWw+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57aWR9PC9zcGFuPiA6IHRoZSBpbWFnZSBJRDwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bmFtZX08L3NwYW4+IDogdGhlIGltYWdlIGZp bGVuYW1lPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntjYXRlZ29yeX08L3NwYW4+ IDogdGhlIGltYWdlIGNhdGVnb3J5PC9saT4KCTwvdWw+CgoJPHA+SnVzdCBwdXQgdGhvc2Ug bmFtZXMgaW50byB5b3VyIDxjb2RlPmZvcm08L2NvZGU+IGFtb25nIG90aGVyIG5vcm1hbCA8 c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gb3IgPHNwYW4gY2xhc3M9ImNhcHMiPlRY UDwvc3Bhbj4gdGFncywgYW5kIHRoZSByZWxldmFudCB2YWx1ZSBmcm9tIHRoYXQgcm93IHdp bGwgYmUgZGlzcGxheWVkLiBUaGUgcmVwbGFjZW1lbnRzIGhvbm91ciBhbnkgPGNvZGU+QVM8 L2NvZGU+IHN0YXRlbWVudCB5b3UgbWF5IGVtcGxveSB0byByZW5hbWUgdGhlbS48L3A+CgoJ PHA+SW4gYWRkaXRpb24sIHRoZSBmb2xsb3dpbmcgcmVwbGFjZW1lbnRzIGFyZSBhZGRlZCB0 byBlYWNoIHJvdzo8L3A+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3NtZF9h bGxyb3dzfTwvc3Bhbj4gOiB0aGUgdG90YWwgbnVtYmVyIG9mIHJvd3MgaW4gdGhlIHJlc3Vs dCBzZXQ8c3VwIGNsYXNzPSJmb290bm90ZSI+PGEgaHJlZj0iI2ZuNzQ0Mjg3MTMxNGIxNmM2 YTRlMWY1NyI+MTwvYT48L3N1cD48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3Nt ZF9yb3dzfTwvc3Bhbj4gOiB0aGUgdG90YWwgbnVtYmVyIG9mIHJvd3MgdmlzaWJsZSBvbiB0 aGlzIHBhZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3NtZF9wYWdlc308L3Nw YW4+IDogdGhlIHRvdGFsIG51bWJlciBvZiBwYWdlcyBpbiB0aGlzIHJlc3VsdCBzZXQ8c3Vw IGNsYXNzPSJmb290bm90ZSI+PGEgaHJlZj0iI2ZuNzQ0Mjg3MTMxNGIxNmM2YTRlMWY1NyI+ MTwvYT48L3N1cD48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3NtZF90aGlzcGFn ZX08L3NwYW4+IDogdGhlIGN1cnJlbnQgcGFnZSBudW1iZXIgYmVpbmcgdmlld2VkPHN1cCBj bGFzcz0iZm9vdG5vdGUiPjxhIGhyZWY9IiNmbjc0NDI4NzEzMTRiMTZjNmE0ZTFmNTciPjE8 L2E+PC9zdXA+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntzbWRfdGhpc3Jvd308 L3NwYW4+IDogdGhlIGN1cnJlbnQgcm93IG51bWJlciBvbiB0aGlzIHBhZ2U8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+e3NtZF90aGlzaW5kZXh9PC9zcGFuPiA6IHRoZSBjdXJy ZW50IHJvdyBudW1iZXIgKHplcm8tYmFzZWQpIG9uIHRoaXMgcGFnZTwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj57c21kX2N1cnNvcn08L3NwYW4+IDogdGhlIGN1cnJlbnQgcm93 IG51bWJlciBmcm9tIHRoZSBzdGFydCBvZiB0aGUgcmVzdWx0IHNldDwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj57c21kX2N1cnNvcmluZGV4fTwvc3Bhbj4gOiB0aGUgY3VycmVu dCByb3cgbnVtYmVyIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSByZXN1bHQgc2V0ICh6ZXJvLWJh c2VkKTwvbGk+Cgk8L3VsPgoKCTxwIGlkPSJmbjc0NDI4NzEzMTRiMTZjNmE0ZTFmNTciIGNs YXNzPSJmb290bm90ZSI+PHN1cD4xPC9zdXA+IFRoZXNlIHRocmVlIGl0ZW1zIGFyZSBhbHNv IGF2YWlsYWJsZSBpbiB5b3VyIGRlc2lnbmF0ZWQgPGNvZGU+cGFnZWZvcm08L2NvZGU+LiBJ biBhZGRpdGlvbiwgdGhlIHBhZ2Vmb3JtIGNhbiB1dGlsaXNlIHR3byBleHRyYSByZXBsYWNl bWVudHM6PC9wPgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntzbWRfcm93X3N0 YXJ0fTwvc3Bhbj4gOiB0aGUgZmlyc3Qgcm93IG51bWJlciBiZWluZyBkaXNwbGF5ZWQ8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3NtZF9yb3dfZW5kfTwvc3Bhbj4gOiB0aGUg bGFzdCByb3cgbnVtYmVyIGJlaW5nIGRpc3BsYXllZDwvbGk+Cgk8L3VsPgoKCTxwPlRoZXNl IGFyZSB1c2VmdWwgZm9yIHRhYmxlcyB0byBzaG93IHJvdyBudW1iZXJzLCBidXQgY2FuIGFs c28gYmUgdXNlZCBmb3IgcGFnaW5hdGlvbiBvciBjYW4gYmUgdGVzdGVkIHdpdGggc21kX2lm IHRvIHRha2UgYWN0aW9uIGZyb20gd2l0aGluIHlvdXIgZm9ybS4gPGNvZGU+e3NtZF90aGlz cm93fTwvY29kZT4sIDxjb2RlPntzbWRfdGhpc2luZGV4fTwvY29kZT4sIDxjb2RlPntzbWRf Y3Vyc29yfTwvY29kZT4sIGFuZCA8Y29kZT57c21kX2N1cnNvcmluZGV4fTwvY29kZT4gY291 bnQgdXAgb3IgZG93biBkZXBlbmRpbmcgb24gdGhlIDxjb2RlPmNvdW50PC9jb2RlPiBhdHRy aWJ1dGUgKDxjb2RlPntzbWRfcm93X3N0YXJ0fTwvY29kZT4gYW5kIDxjb2RlPntzbWRfcm93 X2VuZH08L2NvZGU+IGFsc28gY2hhbmdlIGFjY29yZGluZ2x5KS48L3A+CgoJPGgyIGlkPSJm aWx0ZXJpbmciPkZpbHRlcmluZyBhbmQgaW5qZWN0aW9uPC9oMj4KCgk8cD5BZnRlciBncmVh dCBkZWxpYmVyYXRpb24sIGFjY2VzcyB0byB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwv c3Bhbj4gbGluZSBoYXMgYmVlbiBncmFudGVkIHNvIHlvdSBtYXkgZW1wbG95IHVzZXItZW50 ZXJlZCBkYXRhIGluIHlvdXIgcXVlcmllcywgYWxsb3dpbmcgY29tcGxldGUgZmxleGliaWxp dHkgZm9yIHlvdXIgdXNlciBiYXNlLiBIb3dldmVyLCBhcyBQZXRlciBQYXJrZXImIzgyMTc7 cyBjb25zY2llbmNlIG1pZ2h0IHNheTo8L3A+CgoJPGJsb2NrcXVvdGU+CgkJPHA+V2l0aCBn cmVhdCBwb3dlciBjb21lcyBncmVhdCByZXNwb25zaWJpbGl0eTwvcD4KCTwvYmxvY2txdW90 ZT4KCgk8cD5Ob3QgZXZlcnlib2R5IG91dCB0aGVyZSBpcyB0cnVzdHdvcnRoeSBzbyBoZWVk IHRoaXMgd2FybmluZzogPHN0cm9uZz5Bc3N1bWUgPHNwYW4gY2xhc3M9ImNhcHMiPkFMTDwv c3Bhbj4gdXNlciBpbnB1dCBpcyB0YWludGVkPC9zdHJvbmc+LiBDaGVjayBldmVyeXRoaW5n LiBJZiB5b3Ugd2FudCB0byBrbm93IG1vcmUgYWJvdXQgd2hhdCBwZW9wbGUgY2FuIGRvIHdp dGggYWNjZXNzIHRvIG9uZSBzaW1wbGUgcG9ydGlvbiBvZiB5b3VyIDxzcGFuIGNsYXNzPSJj YXBzIj5TUUw8L3NwYW4+IHF1ZXJ5LCBHb29nbGUgZm9yICYjODIxNjs8c3BhbiBjbGFzcz0i Y2FwcyI+U1FMPC9zcGFuPiBpbmplY3Rpb24mIzgyMTc7LjwvcD4KCgk8cD5Gb3IgdGhvc2Ug c3RpbGwgcmVhZGluZywgdGhlIGdvb2QgbmV3cyBpcyB0aGF0IHRoZSBwbHVnaW4gZG9lcyBl dmVyeXRoaW5nIGl0IGNhbiB0byBwcmUtZmlsdGVyIHN0dWZmIG9uIHRoZSA8c3BhbiBjbGFz cz0iY2FwcyI+VVJMPC9zcGFuPiBsaW5lIGJlZm9yZSBpdCBnZXRzIHRvIHRoZSBxdWVyeS4g VGhpcyBzaG91bGQgbWFrZSB5b3VyIHVzZXIgaW5wdXQgc2FmZSBlbm91Z2gsIGJ1dCBmb3Ig dGhlIHBhcmFub2lkIChvciBzZW5zaWJsZSkgdGhlcmUgYXJlIHR3byBhdHRyaWJ1dGVzIHlv dSBjYW4gdXNlIHRvIGNsYW1wIGRvd24gYWxsb3dhYmxlIHVzZXIgaW5wdXQuIElmIHlvdSBr bm93IGFueXRoaW5nIGFib3V0IDxhIGhyZWY9Imh0dHA6Ly93d3cucmVndWxhci1leHByZXNz aW9ucy5pbmZvL3F1aWNrc3RhcnQuaHRtbCI+cmVndWxhciBleHByZXNzaW9uczwvYT4gb3Ig YXJlIGZhbWlsaWFyIHdpdGggdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5QSFA8L3NwYW4+IGZ1 bmN0aW9uIDxhIGhyZWY9Imh0dHA6Ly91azIucGhwLm5ldC9wcmVnX3JlcGxhY2UiPnByZWdf cmVwbGFjZSgpPC9hPiB0aGVuIHlvdSYjODIxNztsbCBiZSByaWdodCBhdCBob21lIGJlY2F1 c2UsIHB1dCBzaW1wbHksIHlvdSBjYW4gb3B0aW9uYWxseSBwYXNzIGV2ZXJ5IDxzcGFuIGNs YXNzPSJjYXBzIj5VUkw8L3NwYW4+IHZhcmlhYmxlIHRocm91Z2ggaXQgdG8gcmVtb3ZlIHN0 dWZmIHlvdSBkb24mIzgyMTc7dCB3YW50LjwvcD4KCgk8aDMgaWQ9InVybGZpbHRlciI+dXJs ZmlsdGVyPC9oMz4KCgk8cD5UaGlzIHRha2VzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QgKGF0 IGxlYXN0IGJ5IGRlZmF1bHQ7IG92ZXJyaWRlIHRoZSBjb21tYSB3aXRoIHRoZSA8Y29kZT5k ZWxpbTwvY29kZT4gYXR0cmlidXRlIGlmIHlvdSBuZWVkIHRvIHVzZSBjb21tYXMgaW4geW91 ciBmaWx0ZXIgc3RyaW5ncykgb2YgY29tcGxldGUgcmVndWxhciBleHByZXNzaW9uIHBhdHRl cm5zIHRoYXQgeW91IHdpc2ggdG8gc2VhcmNoIGZvciwgaW4gZXZlcnkgPHNwYW4gY2xhc3M9 ImNhcHMiPlVSTDwvc3Bhbj4gdmFyaWFibGUuIEZvciBleGFtcGxlLCBpZiB5b3Ugd2FudGVk IHRvIGVuc3VyZSB0aGF0IHlvdXIgdXNlcnMgb25seSBlbnRlcmVkIGRpZ2l0cyB5b3UgY291 bGQgc3BlY2lmeSB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0i YmxvY2siPnVybGZpbHRlcj0mcXVvdDsvW15cZF0rLyZxdW90Owo8L2NvZGU+PC9wcmU+CgoJ PHA+QnJpZWZseSwgdGhlIHN0YXJ0aW5nIGFuZCB0cmFpbGluZyA8Y29kZT4vPC9jb2RlPiBt YXJrcyBkZWxpbWl0IGEgcmVndWxhciBleHByZXNzaW9uICYjODIxMjsgdGhleSBtdXN0IGFs d2F5cyBiZSBwcmVzZW50LiBUaGUgc3F1YXJlIGJyYWNrZXRzIGRlbm90ZSBhIGdyb3VwIG9m IGNoYXJhY3RlcnMsIHRoZSBjaXJjdW1mbGV4IG5lZ2F0ZXMgdGhlIGdyb3VwLCB0aGUgPGNv ZGU+XGQ8L2NvZGU+IG1lYW5zICYjODIyMDthbnkgZGlnaXQmIzgyMjE7IGFuZCB0aGUgPGNv ZGU+KzwvY29kZT4gc3BlY2lmaWVzIHRoYXQgeW91IHdhbnQgaXQgdG8gY2hlY2sgZm9yIG9u ZSBvciBtb3JlIG9mIHRoZSBwcmVjZWRpbmcgdGhpbmdzLiBJbiBvdGhlciB3b3JkcywgbG9v ayBmb3IgYW55dGhpbmcgaW4gdGhlIGlucHV0IHRoYXQgaXMgPHN0cm9uZz5ub3Q8L3N0cm9u Zz4gb25lIG9yIG1vcmUgZGlnaXRzLiBUaGF0IHdvdWxkIG1hdGNoIGFueSBsZXR0ZXJzLCBx dW90ZXMsIHNwZWNpYWwgY2hhcmFjdGVycywgYW55dGhpbmcgYXQgYWxsIHRoYXQgd2FzbiYj ODIxNzt0IGEgemVybyB0byBuaW5lLjwvcD4KCgk8cD5Zb3UgY2FuIHNwZWNpZnkgbW9yZSB0 aGFuIG9uZSBmaWx0ZXIgbGlrZSB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29k ZSBjbGFzcz0iYmxvY2siPnVybGZpbHRlcj0mcXVvdDsvXGQvLCAvXHMvJnF1b3Q7CjwvY29k ZT48L3ByZT4KCgk8cD5UaGF0IHdvdWxkIGxvb2sgZm9yIGFueSBzaW5nbGUgZGlnaXQgYW5k IGFueSBzaW5nbGUgc3BhY2UgY2hhcmFjdGVyLiBUaGF0JiM4MjE3O3MgYSBzaW1wbGUgZXhh bXBsZSBhbmQgeW91IGNvdWxkIGRvIGl0IGFsbCBpbiBvbmUgcmVnZXgsIGJ1dCBzcGxpdHRp bmcgdGhlbSB1cCBjYW4gaGVscCB5b3UgZmlsdGVyIHN0dWZmIGJldHRlciAoc2VlIDxhIGhy ZWY9IiN1cmxyZXBsYWNlIj51cmxyZXBsYWNlPC9hPiBmb3IgYW4gZXhhbXBsZSkuPC9wPgoK CTxwPkJ5IGRlZmF1bHQsIGlmIHlvdSBqdXN0IHNwZWNpZnkgPGNvZGU+dXJsZmlsdGVyPC9j b2RlPiB3aXRob3V0IDxjb2RlPnVybHJlcGxhY2U8L2NvZGU+LCBhbnl0aGluZyB0aGF0IG1h dGNoZXMgeW91ciBmaWx0ZXIgcGF0dGVybnMgd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlIHVz ZXIgaW5wdXQuPC9wPgoKCTxoMyBpZD0idXJscmVwbGFjZSI+dXJscmVwbGFjZTwvaDM+CgoJ PHA+VGhlIG90aGVyIGhhbGYgb2YgdGhlIGZpbHRlcmluZyBqaWdzYXcgYWxsb3dzIHlvdSB0 byBub3QganVzdCByZW1vdmUgYW55dGhpbmcgdGhhdCBtYXRjaGVzLCBidXQgYWN0dWFsbHkg cmVwbGFjZSBpdCB3aXRoIHNvbWV0aGluZyBlbHNlLiBTcGVjaWZ5IGEgZml4ZWQgc3RyaW5n LCBhIGxpc3Qgb2YgZml4ZWQgc3RyaW5ncyBvciBtb3JlIDxzcGFuIGNsYXNzPSJjYXBzIj5V Ukw8L3NwYW4+IHBhdHRlcm5zIHRvIHJlcGxhY2Ugd2hhdGV2ZXIgbWF0Y2hlcyB5b3VyIDxj b2RlPnVybGZpbHRlcjwvY29kZT4uIFVzaW5nIHRoZSBmaXJzdCBmaWx0ZXIgZXhhbXBsZSBm cm9tIGFib3ZlLCB5b3UgY291bGQgcmVwbGFjZSBhbnl0aGluZyB0aGF0IGlzIG5vdCBhIGRp Z2l0IHdpdGggYSBoeXBoZW4gYnkgc3BlY2lmeWluZzo8L3A+Cgo8cHJlIGNsYXNzPSJibG9j ayI+PGNvZGUgY2xhc3M9ImJsb2NrIj51cmxyZXBsYWNlPSZxdW90Oy0mcXVvdDsKPC9jb2Rl PjwvcHJlPgoKCTxwPlNvIGlmIHlvdSBhbGxvd2VkIGEgPHNwYW4gY2xhc3M9ImNhcHMiPlVS TDwvc3Bhbj4gdmFyaWFibGUgY2FsbGVkIDxjb2RlPmRpZ2l0czwvY29kZT4gYW5kIGEgc2l0 ZSB2aXNpdG9yIGVudGVyZWQgPGNvZGU+P2RpZ2l0cz1aYXBob2QgNCBUcmlsbGlhbjwvY29k ZT4sIHlvdXIgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdmFyaWFibGUgd291bGQg YmVjb21lOiA8Y29kZT4tLS0tLS0tNC0tLS0tLS0tPC9jb2RlPi4gTm90IG11Y2ggdXNlLCBi dXQgaGV5LCBpdCYjODIxNztzIGFuIGV4YW1wbGUhPC9wPgoKCTxwPkFzIHdpdGggPGNvZGU+ dXJsZmlsdGVyPC9jb2RlPiB5b3UgY2FuIHNwZWNpZnkgbW9yZSB0aGFuIG9uZSByZXBsYWNl bWVudCBhbmQgdGhleSB3aWxsIHBhaXIgdXAgd2l0aCB0aGVpciBjb3JyZXNwb25kaW5nIGZp bHRlci4gSW4gb3RoZXIgd29yZHMsIGlmIHlvdSB0YWtlIHRoZSBzZWNvbmQgZmlsdGVyIGFi b3ZlICg8Y29kZT51cmxmaWx0ZXI9JnF1b3Q7L1xkLywgL1xzLyZxdW90OzwvY29kZT4pIGFu ZCB1c2VkIHRoaXM6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9j ayI+dXJscmVwbGFjZT0mcXVvdDssIC0mcXVvdDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoZW4g YW55IGRpZ2l0IGluIHlvdXIgdXNlciBpbnB1dCB3b3VsZCBiZSByZW1vdmVkICh0aGVyZSBp cyBub3RoaW5nIGJlZm9yZSB0aGUgY29tbWEpIGFuZCBhbnkgc3BhY2UgY2hhcmFjdGVyIHdv dWxkIGJlIHJlcGxhY2VkIHdpdGggYSBoeXBoZW4uPC9wPgoKCTxwPklmIGF0IGFueSB0aW1l IGEgZmllbGQgZ2l2ZXMgYW4gZW1wdHkgcmVzdWx0IChpLmUuIGl0IHRvdGFsbHkgZmFpbHMg YW55IDxjb2RlPnVybGZpbHRlcjwvY29kZT4gdGVzdHMgb3Igc2ltcGx5IHJldHVybnMgbm90 aGluZyBiZWNhdXNlIGl0IGhhcyBub3QgYmVlbiBzZXQpLCBhbnkgPGNvZGU+ZGVmYXVsdHM8 L2NvZGU+IGFzc2lnbmVkIHRvIHRoYXQgdmFyaWFibGUgd2lsbCBiZSB1c2VkIGluc3RlYWQu IElmIHRoZXJlIGFyZSBubyBkZWZhdWx0cywgdGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlIGl0 c2VsZiAobWludXMgaXRzIDxjb2RlPj88L2NvZGU+KSB3aWxsIGJlIHVzZWQuPC9wPgoKCTxw PldpdGggdGhlc2UgdHdvIGZpbHRlcnMgYXQgeW91ciBkaXNwb3NhbCBhbmQgdGhlIGFiaWxp dHkgdG8gc3BlY2lmeSBkZWZhdWx0IHZhbHVlcyBmb3IgdXNlciB2YXJpYWJsZXMsIHlvdSBj YW4gbWFrZSB5b3VyIHF1ZXJpZXMgbXVjaCBzYWZlciB0byB0aGUgb3V0c2lkZSB3b3JsZCBh bmQgc3RhcnQgdXNpbmcgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IGZvcm1zIHRv IGdhdGhlciBpbnB1dCBmcm9tIHVzZXJzIHRoYXQgY2FuIHRoZW4gYmUgcGx1Z2dlZCBpbnRv IHF1ZXJpZXMsIGZhaXJseSBzYWZlIGluIHRoZSBrbm93bGVkZ2UgdGhhdCB5b3VyIGRhdGFi YXNlIGlzIG5vdCBnb2luZyB0byBpbXBsb2RlLjwvcD4KCgk8cD5CdXQgcGxlYXNlIHJlbWVt YmVyOjwvcD4KCgk8YmxvY2txdW90ZT4KCQk8cD5Bc3N1bWUgPHN0cm9uZz5hbGw8L3N0cm9u Zz4gdXNlciBpbnB1dCBpcyB0YWludGVkOiBjaGVjayBldmVyeXRoaW5nLjwvcD4KCTwvYmxv Y2txdW90ZT4KCgk8aDIgaWQ9ImV4YW1wbGVzIj5FeGFtcGxlczwvaDI+CgoJPGgzIGlkPSJl ZzEiPkV4YW1wbGUgMTogU2ltcGxlIGltYWdlIHNlbGVjdCBxdWVyeTwvaDM+Cgo8cHJlIGNs YXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9xdWVyeSBjb2x1 bW49JnF1b3Q7KiZxdW90OwogICAgIHRhYmxlPSZxdW90O3R4cF9pbWFnZSZxdW90OwogICAg IHdoZXJlPSZxdW90O2NhdGVnb3J5PSYjMzk7bWFtbWFsJiMzOTsgT1IgY2F0ZWdvcnk9JiMz OTtiaXJkJiMzOTsmcXVvdDsKICAgICBmb3JtPSZxdW90O2Rib3V0JnF1b3Q7IHdyYXB0YWc9 JnF1b3Q7dWwmcXVvdDsgYnJlYWs9JnF1b3Q7bGkmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJl PgoKCTxwPldpdGggZm9ybSA8Y29kZT5kYm91dDwvY29kZT4gY29udGFpbmluZzo8L3A+Cgo8 cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7YSBocmVmPSZxdW90 Oy9pbWFnZXMve2lkfXtleHR9JnF1b3Q7IC8mZ3Q7Jmx0O3R4cDp0aHVtYm5haWwgbmFtZT0m cXVvdDt7bmFtZX0mcXVvdDsgLyZndDsmbHQ7L2EmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5X aWxsIHJlbmRlciBhbiB1bm9yZGVyZWQgbGlzdCBvZiB0aHVtYm5haWxzIHdpdGggbGlua3Mg dG8gdGhlIGZ1bGxzaXplIGltYWdlIGlmIHRoZSBjYXRlZ29yeSBpcyBlaXRoZXIgPGNvZGU+ bWFtbWFsPC9jb2RlPiBvciA8Y29kZT5iaXJkPC9jb2RlPi48L3A+CgoJPGgzIGlkPSJlZzIi PkV4YW1wbGUgMjogbGluayBjYXRlZ29yeSBsaXN0IHRvIHBhcmVudDwvaDM+Cgo8cHJlIGNs YXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9xdWVyeSBxdWVy eT0mcXVvdDtTRUxFQ1QgRElTVElOQ1QKICAgICB0eGMubmFtZSBGUk9NIHR4cF9jYXRlZ29y eSBBUyB0eGMsIHRleHRwYXR0ZXJuIEFTIHR4cAogICAgIFdIRVJFIHR5cGU9JiMzOTthcnRp Y2xlJiMzOTsgQU5EIHBhcmVudD0mIzM5O2FuaW1hbHMmIzM5OwogICAgIEFORCAodHhjLm5h bWUgPSB0eHAuY2F0ZWdvcnkxIE9SIHR4Yy5uYW1lID0gdHhwLmNhdGVnb3J5MikKICAgICBm b3JtPSZxdW90O2Rib3V0JnF1b3Q7IHdyYXB0YWc9JnF1b3Q7dWwmcXVvdDsgYnJlYWs9JnF1 b3Q7bGkmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPldpdGggZm9ybSA8Y29kZT5k Ym91dDwvY29kZT4gY29udGFpbmluZzo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUg Y2xhc3M9ImJsb2NrIj4mbHQ7dHhwOmNhdGVnb3J5IG5hbWU9JnF1b3Q7e25hbWV9JnF1b3Q7 IGxpbms9JnF1b3Q7MSZxdW90OyB0aXRsZT0mcXVvdDsxJnF1b3Q7IC8mZ3Q7CjwvY29kZT48 L3ByZT4KCgk8cD5XaWxsIHJlbmRlciBhIGxpc3Qgb2YgbGlua2FibGUgY2F0ZWdvcnkgbmFt ZXMgdGhhdCBjb250YWluIGFydGljbGVzIHdpdGggY2F0ZWdvcmllcyB0aGF0IGhhdmUgdGhl IGdpdmVuIHBhcmVudC4gSWYgYSBjYXRlZ29yeSBpcyB1bnVzZWQgaXQgd2lsbCBub3QgYmUg bGlzdGVkLjwvcD4KCgk8aDMgaWQ9ImVnMyI+RXhhbXBsZSAzOiBjaGlsZCBjYXRlZ29yeSBj b3VudHM8L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0 O3R4cDpzbWRfcXVlcnkgcXVlcnk9JnF1b3Q7U0VMRUNUIERJU1RJTkNUCiAgICAgdHhjLm5h bWUsIENPVU5UKCopIEFTIGNvdW50IEZST00gdHhwX2NhdGVnb3J5IEFTIHR4YywKICAgICB0 ZXh0cGF0dGVybiBBUyB0eHAKICAgICBXSEVSRSB0eXBlPSYjMzk7YXJ0aWNsZSYjMzk7IEFO RCBwYXJlbnQ9JiMzOTs/Y3VzdG9tMyYjMzk7CiAgICAgQU5EICh0eGMubmFtZSA9IHR4cC5j YXRlZ29yeTEgT1IgdHhjLm5hbWUgPSB0eHAuY2F0ZWdvcnkyKQogICAgIEdST1VQIEJZIHR4 Yy5uYW1lJnF1b3Q7CiAgICAgZm9ybT0mcXVvdDtkYm91dCZxdW90OyB3cmFwdGFnPSZxdW90 O3VsJnF1b3Q7IGJyZWFrPSZxdW90O2xpJnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8 cD5XaXRoIGZvcm0gPGNvZGU+ZGJvdXQ8L2NvZGU+IGNvbnRhaW5pbmc6PC9wPgoKPHByZSBj bGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpjYXRlZ29yeSBuYW1l PSZxdW90O3tuYW1lfSZxdW90OyBsaW5rPSZxdW90OzEmcXVvdDsgdGl0bGU9JnF1b3Q7MSZx dW90OyAvJmd0OyAoe2NvdW50fSkKPC9jb2RlPjwvcHJlPgoKCTxwPldpbGwgcmVhZCB0aGUg cGFyZW50IGl0ZW0gZnJvbSB0aGUgPGNvZGU+Y3VzdG9tMzwvY29kZT4gZmllbGQgYW5kIHJl bmRlciBhIHNpbWlsYXIgbGlzdCB0byBFeGFtcGxlIDIgYnV0IHdpdGggdGhlIGFydGljbGUg Y291bnRzIGFkZGVkIGluIHBhcmVudGhlc2VzIGFmdGVyd2FyZHMuPC9wPgoKCTxoMyBpZD0i ZWc0Ij5FeGFtcGxlIDQ6IFRvcCAxMCBkb3dubG9hZHM8L2gzPgoKPHByZSBjbGFzcz0iYmxv Y2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfcXVlcnkgY29sdW1uPSZxdW90 OyomcXVvdDsgdGFibGU9JnF1b3Q7dHhwX2ZpbGUmcXVvdDsKICAgICB3aGVyZT0mcXVvdDso Y2F0ZWdvcnk9JiMzOTs/Y2F0ZWdvcnkxJiMzOTsgT1IgY2F0ZWdvcnk9JiMzOTs/Y2F0ZWdv cnkyJiMzOTspCiAgICAgQU5EIHN0YXR1cz00IE9SREVSIEJZIGRvd25sb2FkcyBkZXNjIExJ TUlUIDEwJnF1b3Q7CiAgICAgd3JhcHRhZz0mcXVvdDt0YWJsZSZxdW90OyBicmVhaz0mcXVv dDt0ciZxdW90OwogICAgIGxhYmVsPSZxdW90O01vc3QgcG9wdWxhciBkb3dubG9hZHMmcXVv dDsgbGFiZWx0YWc9JnF1b3Q7aDMmcXVvdDsmZ3Q7CiAgJmx0O3RkJmd0OyZsdDt0eHA6Zmls ZV9kb3dubG9hZF9saW5rIGlkPSZxdW90O3tpZH0mcXVvdDsmZ3Q7e2ZpbGVuYW1lfSZsdDsv dHhwOmZpbGVfZG93bmxvYWRfbGluayZndDsmbHQ7L3RkJmd0OwogICZsdDt0ZCZndDt7ZGVz Y3JpcHRpb259Jmx0Oy90ZCZndDsKICAmbHQ7dGQmZ3Q7ZG93bmxvYWRzOiB7ZG93bmxvYWRz fSZsdDsvdGQmZ3Q7CiZsdDt0eHA6ZWxzZSAvJmd0OwogICZsdDtwJmd0O05vIHJlY2VudCBk b3dubG9hZHMsIHNvcnJ5Jmx0Oy9wJmd0OwombHQ7L3R4cDpzbWRfcXVlcnkmZ3Q7CjwvY29k ZT48L3ByZT4KCgk8cD5UaGlzIG9uZSB1c2VzIHRoZSBwbHVnaW4gYXMgYSBjb250YWluZXIg dGFnIGluc3RlYWQgb2YgYSBmb3JtIGFuZCB0YWJ1bGF0ZXMgdGhlIHRvcCAxMCBkb3dubG9h ZHMgKHN0YXR1cz1saXZlKSB0aGF0IGhhdmUgYSBjYXRlZ29yeSBtYXRjaGluZyBlaXRoZXIg b2YgdGhlIGN1cnJlbnQgYXJ0aWNsZSYjODIxNztzIGNhdGVnb3JpZXMsIHdpdGggbW9zdCBw b3B1bGFyIGxpc3RlZCBmaXJzdC4gSWYgdGhlcmUgYXJlIG5vIGRvd25sb2FkcywgdGhlIDxj b2RlPiZsdDt0eHA6ZWxzZSAvJmd0OzwvY29kZT4gcG9ydGlvbiBkaXNwbGF5cyBhIG1lc3Nh Z2UuPC9wPgoKCTxoMyBpZD0iZWc1Ij5FeGFtcGxlIDU6IEFydGljbGUga2V5d29yZHMgcmVs YXRlZCB0byBsaW5rPC9oMz4KCgk8cD5WZXJ5IGludGVyZXN0aW5nIHVzZSBjYXNlIGhlcmUu IFB1dCB0aGlzIGluIHRoZSBwbGFpbmxpbmtzIGZvcm06PC9wPgoKPHByZSBjbGFzcz0iYmxv Y2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpsaW5rZGVzY3RpdGxlIC8mZ3Q7CiZs dDt0eHA6c21kX3F1ZXJ5IHF1ZXJ5PSZxdW90O1NFTEVDVCBESVNUSU5DVAogICAgIHR4cC5p ZCwgdHhwLnRpdGxlIEZST00gdGV4dHBhdHRlcm4gQVMgdHhwCiAgICAgV0hFUkUgKHR4cC5r ZXl3b3JkcyBMSUtFICYjMzk7JSw/Y2F0ZWdvcnklLCYjMzk7CiAgICAgT1IgdHhwLmtleXdv cmRzIExJS0UgJiMzOTslP2NhdGVnb3J5JSwmIzM5OwogICAgIE9SIHR4cC5rZXl3b3JkcyBM SUtFICYjMzk7JSw/Y2F0ZWdvcnklJiMzOTspCiAgICAgR1JPVVAgQlkgdHhwLnRpdGxlJnF1 b3Q7CiAgICAgd3JhcHRhZz0mcXVvdDt1bCZxdW90OyBicmVhaz0mcXVvdDtsaSZxdW90OyZn dDsKICAmbHQ7dHhwOnBlcm1saW5rIGlkPSZxdW90O3tpZH0mcXVvdDsmZ3Q7e3RpdGxlfSZs dDsvdHhwOnBlcm1saW5rJmd0OwombHQ7L3R4cDpzbWRfcXVlcnkmZ3Q7CjwvY29kZT48L3By ZT4KCgk8cD5XaGVuIHlvdSBleGVjdXRlIDxjb2RlPiZsdDt0eHA6bGlua2xpc3QgLyZndDs8 L2NvZGU+IGZyb20gYSBwYWdlIHlvdSB3aWxsIGdldCBhIGxpc3Qgb2YgbGlua3MgYXMgdXN1 YWwsIGJ1dCB1bmRlciBlYWNoIG9uZSB5b3Ugd2lsbCBzZWUgYSBoeXBlcmxpbmtlZCBsaXN0 IG9mIGFydGljbGVzIHRoYXQgYXJlIHJlbGF0ZWQgKGJ5IGtleXdvcmQpIHRvIHRoZSBjYXRl Z29yeSBvZiB0aGUgbGluay48L3A+CgoJPHA+VGhlIHJlYXNvbiBpdCBpcyBjb21wYXJlZCB0 aHJlZSB0aW1lcyBpcyBiZWNhdXNlIGFydGljbGUga2V5d29yZHMgYXJlIHN0b3JlZCBsaWtl IHRoaXMgaW4gdGhlIGRhdGFiYXNlOjwvcD4KCgk8cD48Y29kZT5nb3Zlcm5tZW50LGNvbnNw aXJhY3ksaWQsY2FyZCxkYXRhLGJpb21ldHJpYyxiYWQsaWRlYTwvY29kZT48L3A+CgoJPHA+ SWYgZWFjaCBjYXRlZ29yeSB3b3JkIHdhcyBjb21wYXJlZCBvbmx5IG9uY2Ugd2l0aG91dCBj b21tYXMgKGkuZS4gPGNvZGU+dHhwLmtleXdvcmRzIExJS0UgJiMzOTslP2NhdGVnb3J5JSYj Mzk7PC9jb2RlPikgdGhlbiBhIGxpbmsgd2l0aCBjYXRlZ29yeSA8Y29kZT5waXJhY3k8L2Nv ZGU+IHdvdWxkIGNhdXNlIGFueSBhcnRpY2xlIGNvbnRhaW5pbmcga2V5d29yZCA8Y29kZT5j b25zcGlyYWN5PC9jb2RlPiB0byBiZSBpbmNsdWRlZC4gRXNzZW50aWFsbHksIGJ5IGNvbXBh cmluZyB0aGUgY2F0ZWdvcnkgZWl0aGVyIHN1cnJvdW5kZWQgYnkgY29tbWFzLCB3aXRoIGEg Y29tbWEgYWZ0ZXIgaXQsIG9yIHdpdGggYSBjb21tYSBiZWZvcmUgaXQsIHRoZSBzZWFyY2gg aXMgcmVzdHJpY3RlZCB0byBvbmx5IG1hdGNoIHdob2xlIHdvcmRzLjwvcD4KCgk8aDMgaWQ9 ImVnNiI+RXhhbXBsZSA2OiBDb21wYXJpc29uIGluIHF1ZXJpZXM8L2gzPgoKPHByZSBjbGFz cz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfcXVlcnkgcXVlcnk9 JnF1b3Q7U0VMRUNUICoKICAgICBGUk9NIHR4cF9maWxlIFdIRVJFIGRvd25sb2FkcyAmYW1w O2d0Oz0gNDImcXVvdDsmZ3Q7CiAgJmx0O3R4cDpmaWxlX2Rvd25sb2FkX2xpbmsgaWQ9JnF1 b3Q7e2lkfSZxdW90OyZndDsKICAgICB7ZmlsZW5hbWV9CiAgJmx0Oy90eHA6ZmlsZV9kb3du bG9hZF9saW5rJmd0OwombHQ7L3R4cDpzbWRfcXVlcnkmZ3Q7CjwvY29kZT48L3ByZT4KCgk8 cD5TaG93cyBsaW5rcyB0byBhbGwgZG93bmxvYWRzIHdoZXJlIHRoZSBkb3dubG9hZCBjb3Vu dCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gNDIuIE5vdGUgdGhhdCB1bmRlciA8c3Bh biBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiA0LjAuNiBhbmQgYmVsb3cgeW91IG11c3QgdXNl IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gZW50aXR5IG5hbWVzIGZvciA8 Y29kZT4mYW1wO2d0OzwvY29kZT4gYW5kIDxjb2RlPiZhbXA7bHQ7PC9jb2RlPiBvciB0aGUg cGFyc2VyIGdldHMgY29uZnVzZWQuPC9wPgoKCTxoMyBpZD0iZWc3Ij5FeGFtcGxlIDc6IHVu ZmlsdGVyZWQgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gcGFyYW1zIChiYWQpPC9o Mz4KCgk8cD4oYSBiYWQgcXVlcnkpPC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNs YXNzPSJibG9jayI+Jmx0O3R4cDp2YXJpYWJsZSBuYW1lPSZxdW90O2N1dG9mZiZxdW90Owog ICAgIHZhbHVlPSZxdW90OzQyJnF1b3Q7IC8mZ3Q7CiZsdDt0eHA6c21kX3F1ZXJ5IHF1ZXJ5 PSZxdW90O1NFTEVDVCBUaXRsZQogICAgIEZST00gdGV4dHBhdHRlcm4KICAgICBXSEVSRSBp ZCAmbHQ7ICYjMzk7P3VzZXJjdXQmIzM5OyZxdW90OwogICAgIGRlZmF1bHRzPSZxdW90O3Vz ZXJjdXQ6ID9jdXRvZmYmcXVvdDsmZ3Q7CiAgICZsdDt0eHA6cGVybWxpbmsmZ3Q7e1RpdGxl fSZsdDsvdHhwOnBlcm1saW5rJmd0OwombHQ7L3R4cDpzbWRfcXVlcnkmZ3Q7CjwvY29kZT48 L3ByZT4KCgk8cD5TaG93cyBoeXBlcmxpbmtzIHRvIG9ubHkgdGhvc2UgYXJ0aWNsZXMgd2l0 aCBhbiBJRCBiZWxvdyB0aGUgbnVtYmVyIGdpdmVuIGJ5IHRoZSB1c2VyIG9uIHRoZSA8c3Bh biBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBsaW5lLiBJZiB0aGUgdmFsdWUgaXMgbm90IHN1 cHBsaWVkLCB0aGUgZGVmYXVsdCB2YWx1ZSBmcm9tIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+ VFhQPC9zcGFuPiB2YXJpYWJsZSBpcyB1c2VkIGluc3RlYWQgKDQyIGluIHRoaXMgY2FzZSku PC9wPgoKCTxwPjxzdHJvbmc+PHNwYW4gY2xhc3M9ImNhcHMiPk5PVEU8L3NwYW4+PC9zdHJv bmc+OiB2YWxpZGF0aW9uIGlzIG5vdCBwZXJmb3JtZWQgYW5kIHlvdSBjYW5ub3QgZ3VhcmFu dGVlIHRoYXQgdGhlIDxjb2RlPnVzZXJjdXQ8L2NvZGU+IHZhcmlhYmxlIGlzIGdvaW5nIHRv IGJlIG51bWVyaWMuIFlvdSBzaG91bGQgbm90IHVzZSB0aGlzIHF1ZXJ5IG9uIGEgcHJvZHVj dGlvbiBzaXRlIHVubGVzcyB5b3UgYWRkIGEgPGNvZGU+dXJsZmlsdGVyPC9jb2RlPiB0byBy ZW1vdmUgYW55IG5vbi1udW1lcmljIGNoYXJhY3RlcnMgKHNlZSBuZXh0IGV4YW1wbGUgZm9y IGEgYmV0dGVyIHF1ZXJ5KS48L3A+CgoJPGgzIGlkPSJlZzgiPkV4YW1wbGUgODogZmlsdGVy ZWQgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gcGFyYW1zIChiZXR0ZXIhKTwvaDM+ Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9x dWVyeSBxdWVyeT0mcXVvdDtTRUxFQ1QgVGl0bGUKICAgICBGUk9NIHRleHRwYXR0ZXJuCiAg ICAgV0hFUkUgc3RhdHVzID0gJiMzOTs/dXNlcl9zdGF0dXMmIzM5OyZxdW90OwogICAgIHVy bGZpbHRlcj0mcXVvdDsvW14xLTVdLyZxdW90OwogICAgIGRlZmF1bHRzPSZxdW90O3VzZXJf c3RhdHVzOiA0JnF1b3Q7Jmd0OwogICAmbHQ7dHhwOnBlcm1saW5rJmd0O3tUaXRsZX0mbHQ7 L3R4cDpwZXJtbGluayZndDsKJmx0Oy90eHA6c21kX3F1ZXJ5Jmd0Owo8L2NvZGU+PC9wcmU+ CgoJPHA+UHVsbHMgYWxsIGFydGljbGVzIG91dCBvZiB0aGUgZGF0YWJhc2UgdGhhdCBtYXRj aCB0aGUgZ2l2ZW4gc3RhdHVzLiBUaGlzIGlzIGEgbW9yZSByb2J1c3QgcXVlcnkgdGhhbiBF eGFtcGxlIDcgYmVjYXVzZSBpdCBjaGVja3MgaWYgdGhlIDxjb2RlPnVzZXJfc3RhdHVzPC9j b2RlPiBmaWVsZCBpcyAxLCAyLCAzLCA0LCBvciA1ICh0aGUgcmVnZXggc3BlY2lmaWVzIHRv IHJlbW92ZSBldmVyeXRoaW5nIGZyb20gdGhlIHVzZXJfc3RhdHVzIHZhcmlhYmxlIHRoYXQg aXMgbm90IGluIHRoZSByYW5nZSAxLTUpLiBJZiB0aGlzIGNvbmRpdGlvbiBpcyBub3QgbWV0 ICYjODIxMjsgZS5nLiB0aGUgdXNlciBzcGVjaWZpZXMgPGNvZGU+dXNlcl9zdGF0dXM9Njwv Y29kZT4gb3IgPGNvZGU+dXNlcl9zdGF0dXM9JnF1b3Q7YWJjJnF1b3Q7PC9jb2RlPiAmIzgy MTI7IHRoZW4gdXNlcl9zdGF0dXMgd2lsbCBiZSBzZXQgdG8gPGNvZGU+NDwvY29kZT4uIE5v dGUgdGhhdCB1c2luZyA8Y29kZT51c2VyX3N0YXR1cz0mcXVvdDtaYXBob2QgNCBUcmlsbGlh biZxdW90OzwvY29kZT4gb24gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGFk ZHJlc3MgYmFyIHdpbGwgYWN0dWFsbHkgcGFzcyB0aGUgdGVzdCBiZWNhdXNlIGFsbCBjaGFy YWN0ZXJzIG90aGVyIHRoYW4gdGhlIG51bWJlciAmIzgyMTY7NCYjODIxNzsgd2lsbCBiZSBy ZW1vdmVkLjwvcD4KCgk8cD5Zb3UgY291bGQgdXNlIGEgPGNvZGU+Jmx0O3R4cDp2YXJpYWJs ZSAvJmd0OzwvY29kZT4gaWYgeW91IHdpc2ggYW5kIHNldCBhbGwgeW91ciBkZWZhdWx0cyBp biBhIHNwZWNpYWwgZm9ybSwgcmVhZHkgdG8gdXNlIHRocm91Z2hvdXQgeW91ciBwYWdlLiBJ biB0aGF0IGNhc2UgJiM4MjEyOyBpZiB5b3UgaGFkIGNyZWF0ZWQgYSB2YXJpYWJsZSBjYWxs ZWQgPGNvZGU+ZGZsdF9zdGF0PC9jb2RlPiAmIzgyMTI7IHlvdSBtaWdodCBwcmVmZXIgdG8g dXNlIDxjb2RlPmRlZmF1bHRzPSZxdW90O3VzZXJfc3RhdHVzOiA/ZGZsdF9zdGF0JnF1b3Q7 PC9jb2RlPi48L3A+CgoJPHA+UXVlcnktdGFzdGljIDotKTwvcD4KCgk8aDMgaWQ9ImVnOSI+ RXhhbXBsZSA5OiBVc2luZyBwcmVwYXJzZSB3aXRoIDxjb2RlPiZsdDt0eHA6eWllbGQgLyZn dDs8L2NvZGU+PC9oMz4KCgk8cD5Tb21ldGltZXMgeW91IG1heSB3YW50IHRvIHJlLXVzZSBh IHF1ZXJ5IGluIGEgZmV3IHBsYWNlcyB0aHJvdWdob3V0IHlvdXIgc2l0ZSBhbmQgc2hvdyBk aWZmZXJlbnQgY29udGVudC4gRm9yIGV4YW1wbGUsIHRoZSBzYW1lIHF1ZXJ5IGNvdWxkIGJl IHVzZWQgZm9yIGxvZ2dlZC1pbiBhbmQgbm90LWxvZ2dlZC1pbiB1c2VycyBidXQgeW91JiM4 MjE3O2Qgc2VlIG1vcmUgZGV0YWlsIGlmIHlvdSB3ZXJlIGxvZ2dlZCBpbi4gTm9ybWFsbHkg eW91IHdvdWxkIG5lZWQgdG8gd3JpdGUgdGhlIHF1ZXJ5IG1vcmUgdGhhbiBvbmNlLCB3aGlj aCBpcyBmYXIgZnJvbSBpZGVhbC4gVGhpcyB0ZWNobmlxdWUgYWxsb3dzIHlvdSB0byB3cml0 ZSB0aGUgcXVlcnkganVzdCBvbmNlIGFuZCByZXVzZSB0aGUgZm9ybS4gUHV0IHRoaXMgaW4g YSBmb3JtIGNhbGxlZCA8Y29kZT51c2VyX3RhYmxlPC9jb2RlPjo8L3A+Cgo8cHJlIGNsYXNz PSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9xdWVyeSBxdWVyeT0m cXVvdDtTRUxFQ1QgKiBGUk9NIHR4cF91c2VycyZxdW90OwogICAgIHdyYXB0YWc9JnF1b3Q7 dGFibGUmcXVvdDsgYnJlYWs9JnF1b3Q7dHImcXVvdDsgcHJlcGFyc2U9JnF1b3Q7MSZxdW90 OyZndDsKICAgJmx0O3R4cDp5aWVsZCAvJmd0OwombHQ7L3R4cDpzbWRfcXVlcnkmZ3Q7Cjwv Y29kZT48L3ByZT4KCgk8cD5Vc2luZyA8Y29kZT4mbHQ7dHhwOm91dHB1dF9mb3JtJmd0Ozwv Y29kZT4gYXMgYSBjb250YWluZXIgKGluIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+ IDQuMi4wIG9yIGhpZ2hlcikgeW91IGNhbiB0aGVuIGNhbGwgdGhlIHF1ZXJ5IGxpa2UgdGhp cyB0byBzaG93IGJhc2ljIGluZm86PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNs YXNzPSJibG9jayI+Jmx0O3R4cDpvdXRwdXRfZm9ybSBmb3JtPSZxdW90O3VzZXJfdGFibGUm cXVvdDsmZ3Q7CiZsdDt0ZCZndDt7bmFtZX0mbHQ7L3RkJmd0OwombHQ7dGQmZ3Q7e1JlYWxO YW1lfSZsdDsvdGQmZ3Q7CiZsdDsvdHhwOm91dHB1dF9mb3JtJmd0Owo8L2NvZGU+PC9wcmU+ CgoJPHA+YW5kIGxpa2UgdGhpcyBmb3IgbW9yZSBkZXRhaWxlZCBvdXRwdXQ6PC9wPgoKPHBy ZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpvdXRwdXRfZm9y bSBmb3JtPSZxdW90O3VzZXJfdGFibGUmcXVvdDsmZ3Q7CiZsdDt0ZCZndDt7bmFtZX0mbHQ7 L3RkJmd0OwombHQ7dGQmZ3Q7e1JlYWxOYW1lfSZsdDsvdGQmZ3Q7CiZsdDt0ZCZndDt7ZW1h aWx9Jmx0Oy90ZCZndDsKJmx0O3RkJmd0O3tsYXN0X2FjY2Vzc30mbHQ7L3RkJmd0OwombHQ7 L3R4cDpvdXRwdXRfZm9ybSZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGUgdGhhdCB3aGVu IHVzaW5nIHNtZF9xdWVyeSBpbiB0aGlzIG1hbm5lciB5b3UgbXVzdCByZW1lbWJlciB0byB1 c2UgPGNvZGU+cHJlcGFyc2U9JnF1b3Q7MSZxdW90OzwvY29kZT4gYmVjYXVzZSB5b3UgbmVl ZCB0byBmZXRjaCB0aGUgY29udGVudHMgb2YgdGhlIHNtZF9xdWVyeSBjb250YWluZXIgKHRo ZSA8Y29kZT4mbHQ7dHhwOnlpZWxkIC8mZ3Q7PC9jb2RlPiB0YWcgaW4gdGhpcyBjYXNlKSwg cGFyc2UgaXQgc28gaXQgZ2V0cyB0aGUgY29udGVudHMgb2YgPGNvZGU+Jmx0O3R4cDpvdXRw dXRfZm9ybSZndDs8L2NvZGU+JiM4MjE3O3MgY29udGFpbmVyIGFuZCA8ZW0+dGhlbjwvZW0+ IGFwcGxpZXMgdGhlIHJlcGxhY2VtZW50cy4gV2l0aG91dCB0aGUgPGNvZGU+cHJlcGFyc2U8 L2NvZGU+LCB0aGUgcGx1Z2luIHRyaWVzIHRvIGFwcGx5IHRoZSByZXBsYWNlbWVudHMgZGly ZWN0bHkgdG8gdGhlIHNtZF9xdWVyeSBjb250YWluZXIsIHdoaWNoIGRvZXMgbm90IGFjdHVh bGx5IGNvbnRhaW4gYW55IDxjb2RlPnsuLi59PC9jb2RlPiB0YWdzLjwvcD4KCgk8aDMgaWQ9 ImVnMTAiPkV4YW1wbGUgMTA6IHBhZ2luYXRpb248L2gzPgoKCTxwPkl0ZXJhdGUgb3ZlciBz b21lIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IHVzZXIgaW5mb3JtYXRpb24sIDEw IHBlb3BsZSBhdCBhIHRpbWU6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNz PSJibG9jayI+Jmx0O3R4cDpzbWRfcXVlcnkgcXVlcnk9JnF1b3Q7U0VMRUNUICogZnJvbSB0 eHBfdXNlcnMmcXVvdDsKICAgICBsaW1pdD0mcXVvdDsxMCZxdW90OyB3cmFwdGFnPSZxdW90 O3VsJnF1b3Q7IGJyZWFrPSZxdW90O2xpJnF1b3Q7CiAgICAgcGFnZWZvcm09JnF1b3Q7cGFn ZV9pbmZvJnF1b3Q7Jmd0OwogICB7UmVhbE5hbWV9ICh7cHJpdnN9KQombHQ7L3R4cDpzbWRf cXVlcnkmZ3Q7CiZsdDt0eHA6b2xkZXImZ3Q7TmV4dCAxMCZsdDsvdHhwOm9sZGVyJmd0OyB8 CiZsdDt0eHA6bmV3ZXImZ3Q7UHJldmlvdXMgMTAmbHQ7L3R4cDpuZXdlciZndDsKPC9jb2Rl PjwvcHJlPgoKCTxwPkluIDxjb2RlPnBhZ2VfaW5mbzwvY29kZT46PC9wPgoKPHByZSBjbGFz cz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+UGFnZSB7c21kX3RoaXNwYWdlfSBvZiB7 c21kX3BhZ2VzfSB8ClNob3dpbmcgcmVjb3Jkcwp7c21kX3Jvd19zdGFydH0gdG8ge3NtZF9y b3dfZW5kfSBvZiB7c21kX2FsbHJvd3N9CjwvY29kZT48L3ByZT4KCgk8cD5VbmRlcm5lYXRo IHlvdXIgcmVzdWx0IHNldCB5b3Ugd291bGQgdGhlbiBzZWUgdGhlIGluZm9ybWF0aW9uIHJl Z2FyZGluZyB3aGljaCBwYWdlIGFuZCByb3dzIHlvdXIgdmlzaXRvcnMgd2VyZSBjdXJyZW50 bHkgdmlld2luZy4gWW91IHdvdWxkIGFsc28gc2VlIG5leHQvcHJldiBsaW5rcyB0byB0aGUg cmVzdCBvZiB0aGUgcmVzdWx0cy48L3A+CgoJPGgyIGNsYXNzPSJjaGFuZ2Vsb2ciPkNoYW5n ZWxvZzwvaDI+CgoJPHVsPgoJCTxsaT4yMiBNYXkgMDggfCAwLjEgfCBJbml0aWFsIHJlbGVh c2U8L2xpPgoJCTxsaT4yMyBNYXkgMDggfCAwLjExIHwgQWxsb3dlZCBtYXRocyBpbiBxdWVy aWVzICh1c2UgaHRtbCBlbnRpdGllcyBpbiBUWFA0LjAuNikgYW5kIGZpeGVkIDxzcGFuIGNs YXNzPSJjYXBzIj5XSEVSRTwvc3Bhbj4gY2xhdXNlIHRvIGRlZmF1bHQgdG8gMT0xIGlmIG5v bmUgc3VwcGxpZWQgKGJvdGggdGhhbmtzIGptKSA7IGFkZGVkIG1vcmUgZGV0YWlsZWQgZmls ZSBhbmQgbGluayBzdXBwb3J0PC9saT4KCQk8bGk+MTQgSnVsIDA4IHwgMC4xMiB8IEFkZGVk IDxjb2RlPnR4cDplbHNlPC9jb2RlPiBzdXBwb3J0IGluIGNvbnRhaW5lciAodGhhbmtzIGph a29iKSA7IGFkZGVkIDxjb2RlPnNpbGVudDwvY29kZT4gYW5kIDxjb2RlPmNvdW50PC9jb2Rl PiBhdHRyaWJ1dGVzLCBhbmQgdGhlIHJlcGxhY2VtZW50IHRhZ3MgPGNvZGU+e3NtZF9yb3dz fSB7c21kX3RoaXNyb3d9IHtzbWRfdGhpc2luZGV4fTwvY29kZT48L2xpPgoJCTxsaT4yMyBO b3YgMDggfCAwLjIgfCBBZGRlZCA8Y29kZT4mbHQ7dHhwOnZhcmlhYmxlIC8mZ3Q7PC9jb2Rl PiBzdXBwb3J0IDsgZW5hYmxlZCA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB2YXJp YWJsZSBzdXBwb3J0IDsgYWRkZWQgPGNvZGU+dXJsZmlsdGVyPC9jb2RlPiwgPGNvZGU+dXJs cmVwbGFjZTwvY29kZT4sIDxjb2RlPmRlbGltPC9jb2RlPiwgPGNvZGU+cGFyYW1kZWxpbTwv Y29kZT4gYW5kIDxjb2RlPmRlZmF1bHRzPC9jb2RlPiBhdHRyaWJ1dGVzPC9saT4KCQk8bGk+ MTcgTWFyIDA5IHwgMC4yMSB8IEFkZGVkIDxjb2RlPiRfU0VSVkVSPC9jb2RlPiB2YXIgc3Vw cG9ydDwvbGk+CgkJPGxpPjE2IE9jdCAwOSB8IDAuMjIgfCBBZGRlZCA8Y29kZT5lc2NhcGU8 L2NvZGU+IGF0dHJpYnV0ZSAodGhhbmtzIGpha29iKSA7IGFkZGVkIDxjb2RlPnByZXBhcnNl PC9jb2RlPiBhdHRyaWJ1dGU8L2xpPgoJCTxsaT4wMiBEZWMgMDkgfCAwLjMgfCBBZGRlZCB1 bmljb2RlIHN1cHBvcnQgYW5kIDxjb2RlPnN0cmljdGZpZWxkczwvY29kZT4gdG8gZml4IGEg ZmV3IGJ1Z3MgKHRoYW5rcyBzcGVla2UpIDsgYWRkZWQgZGlyZWN0IHBhZ2luYXRpb24gc3Vw cG9ydDwvbGk+Cgk8L3VsPgoKPC9kaXY+CjwhLS0gKioqIEJFR0lOIFBMVUdJTiBDU1MgKioq IC0tPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgojc21kX2hlbHAgeyBsaW5lLWhlaWdodDox LjUgO30KI3NtZF9oZWxwIGNvZGUgeyBmb250LXdlaWdodDpib2xkOyBmb250OiAxMDUlLzEz MCUgIkNvdXJpZXIgTmV3IiwgY291cmllciwgbW9ub3NwYWNlOyBiYWNrZ3JvdW5kLWNvbG9y OiAjRkZGRkNDO30KI3NtZF9oZWxwIGNvZGUuYmxvY2sgeyBmb250LXdlaWdodDpub3JtYWw7 IGJvcmRlcjoxcHggZG90dGVkICM5OTk7IGJhY2tncm91bmQtY29sb3I6ICNmMGU2OGM7IGRp c3BsYXk6YmxvY2s7IG1hcmdpbjoxMHB4IDEwcHggMjBweDsgcGFkZGluZzoxMHB4OyB9CiNz bWRfaGVscCBhOmxpbmssICNzbWRfaGVscCBhOnZpc2l0ZWQgeyBjb2xvcjogIzAwYzsgdGV4 dC1kZWNvcmF0aW9uOiBub25lOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgYmx1ZTsgcGFk ZGluZy1ib3R0b206MXB4O30KI3NtZF9oZWxwIGE6aG92ZXIsICNzbWRfaGVscCBhOmFjdGl2 ZSB7IGNvbG9yOiBibHVlOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGJvcmRlci1ib3R0b206 IDJweCBzb2xpZCBibHVlOyBwYWRkaW5nLWJvdHRvbToxcHg7fQojc21kX2hlbHAgaDEgeyBj b2xvcjogIzM2OTsgZm9udDogMjBweCBHZW9yZ2lhLCBzYW5zLXNlcmlmOyBtYXJnaW46IDA7 IHRleHQtYWxpZ246IGNlbnRlcjsgfQojc21kX2hlbHAgaDIgeyBib3JkZXItYm90dG9tOiAx cHggc29saWQgYmxhY2s7IHBhZGRpbmc6MTBweCAwIDA7IGNvbG9yOiAjMzY5OyBmb250OiAx N3B4IEdlb3JnaWEsIHNhbnMtc2VyaWY7IH0KI3NtZF9oZWxwIGgzIHsgY29sb3I6ICMwNzk7 IGZvbnQ6IGJvbGQgMTJweCBBcmlhbCwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDFw eDsgbWFyZ2luOiAxMHB4IDAgMDt0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB0ZXh0LWRl Y29yYXRpb246dW5kZXJsaW5lO30KI3NtZF9oZWxwIGg0IHsgZm9udDogYm9sZCAxMXB4IEFy aWFsLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMXB4OyBtYXJnaW46IDEwcHggMCAw IDt0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9CiNzbWRfaGVscCAuYXRubSB7IGZvbnQt d2VpZ2h0OmJvbGQ7IGNvbG9yOiMzM2Q7IH0KI3NtZF9oZWxwIC5tYW5kIHsgYmFja2dyb3Vu ZDojZWVlOyBib3JkZXI6MXB4IGRvdHRlZCAjOTk5OyB9CiNzbWRfaGVscCB0YWJsZSB7d2lk dGg6OTAlOyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZy1ib3R0b206MWVtO30KI3NtZF9o ZWxwIHRkLCAjc21kX2hlbHAgdGgge2JvcmRlcjoxcHggc29saWQgIzk5OTsgcGFkZGluZzou NWVtIDA7fQojc21kX2hlbHAgdWwgeyBsaXN0LXN0eWxlLXR5cGU6c3F1YXJlOyB9CiNzbWRf aGVscCAucmVxdWlyZWQge2NvbG9yOnJlZDt9CiNzbWRfaGVscCBsaSB7IG1hcmdpbjo1cHgg MjBweCA1cHggMzBweDsgfQojc21kX2hlbHAgLmJyZWFrIHsgbWFyZ2luLXRvcDo1cHg7IH0K PC9zdHlsZT4KPCEtLSAqKiogRU5EIFBMVUdJTiBDU1MgKioqIC0tPgoiO3M6MzoibWQ1Ijtz OjMyOiI3Y2E1ZjU3MzFjZDJlZTRmOWRkYjU2Y2YwMzU4YzMxNSI7fQ==