# Name: smd_gallery v0.51 # Type: Client side plugin # A(nother) thumbnail gallery/slideshow creator with unreal flexibility # 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: # ..................................................................... YToxMDp7czo0OiJuYW1lIjtzOjExOiJzbWRfZ2FsbGVyeSI7czo2OiJhdXRob3IiO3M6MTE6 IlN0ZWYgRGF3c29uIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIyOiJodHRwOi8vc3RlZmRhd3Nv bi5jb20vIjtzOjc6InZlcnNpb24iO3M6NDoiMC41MSI7czoxMToiZGVzY3JpcHRpb24iO3M6 Njk6IkEobm90aGVyKSB0aHVtYm5haWwgZ2FsbGVyeS9zbGlkZXNob3cgY3JlYXRvciB3aXRo IHVucmVhbCBmbGV4aWJpbGl0eSI7czo0OiJjb2RlIjtzOjMxMDYwOiJyZXF1aXJlX3BsdWdp bignc21kX2xpYicpOw0KDQovLyBNTFAgc3VwcG9ydA0KZ2xvYmFsICRzbWRfZ2FsbExhbmc7 DQokc21kX2dhbGxTdHIgPSBhcnJheSgNCgknbmF2Zmlyc3QnID0+ICdGaXJzdCcsDQoJJ25h dmxhc3QnID0+ICdMYXN0JywNCgknbmF2cHJldicgPT4gJyZsYXF1bzsnLA0KCSduYXZuZXh0 JyA9PiAnJnJhcXVvOycsDQopOw0KJHNtZF9nYWxsTGFuZyA9IG5ldyBzbWRfTUxQKCdzbWRf Z2FsbGVyeScsICdzbWRfZ2FsbCcsICRzbWRfZ2FsbFN0cik7DQoNCmZ1bmN0aW9uIHNtZF9n YWxsZXJ5KCRhdHRzLCAkdGhpbmc9JycpIHsNCglnbG9iYWwgJHByZXRleHQsICR0aGlzYXJ0 aWNsZSwgJGltZ19kaXIsICRkYXRlZm9ybWF0LCAkc21kX2dhbGxMYW5nLCAkbDEwbl9sYW5n dWFnZTsNCg0KCS8vIFBsdWdpbiBvcHRpb25zDQoJZXh0cmFjdChsQXR0cyhhcnJheSgNCgkJ J2NvbHVtbnMnID0+ICcnLA0KCQknZGVsaW0nID0+ICcsJywNCgkJJ3BhcmFtZGVsaW0nID0+ ICc6JywNCgkJJ2NvbGxhdGVkZWxpbScgPT4gJywnLA0KCQknc3RyaWN0ZmllbGRzJyA9PiAn MCcsDQoJCSdmb3JtJyA9PiAnJywNCgkJJ2NvdW50Zm9ybScgPT4gJycsDQoJCSdjb3VudHBv cycgPT4gJ2Fib3ZlJywNCgkJJ2lkJyA9PiAnJywNCgkJJ2NhdGVnb3J5JyA9PiAnJywNCgkJ J2RpcmVjdG9yeScgPT4gJycsDQoJCSdtYXRjaCcgPT4gJycsDQoJCSdzdWJsZXZlbCcgPT4g JzAnLA0KCQknZXNjYXBlJyA9PiAnYWx0LCB0aXRsZSwgY2FwdGlvbicsDQoJCSdzb3J0JyA9 PiAnJywNCgkJJ29mZnNldCcgPT4gJzAnLA0KCQknbGltaXQnID0+ICcwJywNCgkJJ21heGxp bWl0JyA9PiAnOTk5OTknLA0KCQkndGh1bWJsaW1pdCcgPT4gJzk5OTk5JywNCgkJJ3RodW1i b2Zmc2V0JyA9PiAnMCcsDQoJCSd0aHVtYicgPT4gJzA6MScsDQoJCSd0aHVtYnNpemUnID0+ ICcnLA0KCQknb25jaGFuZ2UnID0+ICdjYXRlZ29yeScsDQoJCSdvbmNoYW5nZXdyYXB0YWcn ID0+ICcnLA0KCQknb25jaGFuZ2VjbGFzcycgPT4gJycsDQoJCSdvYmplY3Rmb3JtJyA9PiAn JywNCgkJJ2dyb3VwdGFnJyA9PiAnJywNCgkJJ2dyb3VwY2xhc3MnID0+ICcnLA0KCQkndGV4 dCcgPT4gJycsDQoJCSdmb3JtYXQnID0+ICRkYXRlZm9ybWF0LA0KCQknZ210JyA9PiAnJywN CgkJJ2xhbmcnID0+ICcnLA0KCQknY29sbGF0ZScgPT4gJycsDQoJCSdjb21ibycgPT4gJycs DQoJCSdwYWdpbmcnID0+ICcwJywNCgkJJ3BhZ2Vmb3JtJyA9PiAnJywNCgkJJ3BhZ2Vwb3Mn ID0+ICdiZWxvdycsDQoJCSduYXZ3cmFwdGFnJyA9PiAndWwnLA0KCQknbmF2YnJlYWsnID0+ ICdsaScsDQoJCSduYXZjbGFzcycgPT4gJ3NtZF9nYWxsZXJ5X25hdicsDQoJCSdlbXB0eWNs YXNzJyA9PiAnZW1wdHknLA0KCQknZ2FsbGVyeWlkJyA9PiAnPzQ6NicsDQoJCSd3cmFwdGFn JyA9PiAnJywNCgkJJ2h0bWxfaWQnID0+ICcnLA0KCQknYnJlYWsnID0+ICcnLA0KCQknY2xh c3MnID0+ICcnLA0KCQknZGVidWcnID0+ICcwJywNCgkpLCAkYXR0cykpOw0KDQoJLy8gQ2F0 ZWdvcnkgcmVsaWVzIG9uIHdoZXRoZXIgaWQgaGFzIGJlZW4gc3BlY2lmaWVkIG9yIG5vdC4N CgkvLyBsQXR0cygpIHdvbid0IGxldCB1cyBoYW5kbGUgdGhpcyBsb2dpYyBzbyBpdCBoYXMg dG8gYmUgZG9uZSBtYW51YWxseQ0KCSRhdHRlbXB0TWF0Y2ggPSAoZW1wdHkoJGNhdGVnb3J5 KSAmJiBlbXB0eSgkaWQpKSA/IGZhbHNlIDogdHJ1ZTsNCgkkY2F0ZWdvcnkgPSBpc3NldCgk Y2F0ZWdvcnkpID8gZG9TbGFzaCgkY2F0ZWdvcnkpIDogKCgkaWQ9PScnKSA/ICRwcmV0ZXh0 WydjJ106ICcnKTsNCgkkc29ydCA9ICgkc29ydCkgPyAkc29ydCA6ICggKCRpZCkgPyAnaWQn IDogJ2NhdGVnb3J5JyApOw0KDQoJLy8gKiogTE9PS1VQIFRBQkxFUw0KCS8vICRmaWVsZE1h cCBob2xkcyBkYXRhYmFzZSBjb2x1bW4gYXMga2V5LCBhbmQgcmVwbGFjZW1lbnQgaWRlbnRp ZmllciBhcyB2YWx1ZS4NCgkvLyBBZGRpdGlvbmFsIGNvbHMgY29waWVkIHRvICRleHRyYU1h cCBmb3IgaXRlcmF0aW9uIHdoaWxlIGNyZWF0aW5nIHJlcGxhY2VtZW50cy4NCgkvLyBVc2Ug YXJyYXlfc2VhcmNoIHRvIGZpbmQgaWYgdmFsdWUgZXhpc3RzIGFuZCByZXR1cm4gY29ycmVj dCBrZXkgZm9yIHVzZSBpbiBkYiBjYWxscy9hcnJheSByZWZzLg0KCSRmaWVsZE1hcCA9IGFy cmF5KCk7DQoJJGV4dHJhTWFwID0gYXJyYXkoKTsNCgkkY29yZUNvbHMgPSBhcnJheSgibmFt ZSIsICJpZCIsICJhbHQiLCAiY2FwdGlvbiIsICJjYXRlZ29yeSIsICJhdXRob3IiLCAiZGF0 ZSIsICJleHQiLCAidzp3aWR0aCIsICJoOmhlaWdodCIsICJ0aHVtYm5haWw6aGFzdGh1bWIi KTsNCgkkbWxwRmllbGRzID0gYXJyYXkoImFsdCIsICJjYXB0aW9uIik7IC8vIE1hbnVhbGx5 IGNyZWF0ZSB0aGUgTUxQIGNvbHVtbiBuYW1lcywgc2luY2UgdXNpbmcgZ2V0Um93cygpIGxh dGVyIGRvZXMgbm90LiBDYXRlZ29yeSB0aXRsZSBhbHNvIGhhcyB0aGUgc2FtZSB0cmVhdG1l bnQNCgkkdGhpc2xhbmcgPSAoaXNzZXQoJGwxMG5fbGFuZ3VhZ2VbJ2xvbmcnXSkpID8gJGwx MG5fbGFuZ3VhZ2VbJ2xvbmcnXSA6IExBTkc7DQoJJGRmbHRfdGJsID0gUEZYLiJ0eHBfaW1h Z2UiOw0KCSRjb2x1bW5zID0gZG9fbGlzdCgkY29sdW1ucyk7DQoJZm9yZWFjaCAoYXJyYXlf bWVyZ2UoJGNvcmVDb2xzLCAkY29sdW1ucykgYXMgJGNvbGluZm8pIHsNCgkJJGNvbGJpdCA9 IGRvX2xpc3QoJGNvbGluZm8sICI6Iik7DQoJCSRjb2x0YmwgPSBkb19saXN0KCRjb2xiaXRb MF0sICIuIik7DQoNCgkJaWYgKCRjb2xiaXRbMF0gPT0gJycpIGNvbnRpbnVlOw0KDQoJCWlm IChjb3VudCgkY29sdGJsKSA+IDEpIHsNCgkJCSR0YmwgPSAkY29sdGJsWzBdOw0KCQkJJGNv bG5hbWUgPSAkY29sdGJsWzFdOw0KCQl9IGVsc2Ugew0KCQkJJHRibCA9ICRkZmx0X3RibDsN CgkJCSRjb2xuYW1lID0gJGNvbHRibFswXTsNCgkJfQ0KCQkkY29saWQgPSAoY291bnQoJGNv bGJpdCkgPiAxKSA/ICRjb2xiaXRbMV0gOiAkY29sbmFtZTsNCgkJJGZpZWxkTWFwWygoJHRi bCk/JHRibC4nLic6JycpLiggKGlzc2V0KCRsMTBuX2xhbmd1YWdlWydsb25nJ10pICYmIGlu X2FycmF5KCRjb2xuYW1lLCAkbWxwRmllbGRzKSkgPyBfbDEwbl9tYWtlX2ZpZWxkX25hbWUo JGNvbG5hbWUsICR0aGlzbGFuZykuICcgQVMgJy4kY29sbmFtZSAgOiAkY29sbmFtZSApXSA9 ICRjb2xpZDsNCgkJaWYgKCFpbl9hcnJheSgkY29saW5mbywgJGNvcmVDb2xzKSkgew0KCQkJ JGV4dHJhTWFwWyRjb2xuYW1lXSA9ICRjb2xpZDsNCgkJfQ0KCX0NCgkkZmllbGRNYXAgPSBh cnJheV91bmlxdWUoJGZpZWxkTWFwKTsNCg0KCS8vIEhhbmRsZSBmb3JtcyBhbmQgc2V0IGEg ZGVmYXVsdCB0YWcgaWYgbm9uZSBzcGVjaWZpZWQNCgkkdGhpbmcgPSAoZW1wdHkoJGZvcm0p KSA/ICR0aGluZyA6IGZldGNoX2Zvcm0oJGZvcm0pOw0KCSR0aGluZyA9IChlbXB0eSgkdGhp bmcpKSA/ICc8YSBocmVmPSJ7dXJsfSIgYWx0PSJ7YWx0fSI+PHR4cDppbWFnZSBpZD0ie2lk fSIgLz48L2E+JyA6ICR0aGluZzsNCgkkb2JqZWN0Zm9ybSA9IChlbXB0eSgkb2JqZWN0Zm9y bSkpID8gJycgOiBmZXRjaF9mb3JtKCRvYmplY3Rmb3JtKTsNCg0KCS8vIENvdW50aW5nDQoJ JGNvdW50UG9zQWxsb3dlZCA9IGFycmF5KCJhYm92ZSIsICJiZWxvdyIpOw0KCSRjb3VudHBv c25zID0gYXJyYXkoKTsNCgkkY291bnRpbmcgPSAwOw0KCWlmICgkY291bnRmb3JtKSB7DQoJ CSRjb3VudGluZyA9IDE7DQoJCSRjb3VudGZvcm0gPSBkb19saXN0KCRjb3VudGZvcm0sICRk ZWxpbSk7DQoJCSRjb3VudHBvcyA9IHN0cl9yZXBsYWNlKCdzbWRfJywgJycsICRjb3VudHBv cyk7IC8vIEZvciBjb252ZW5pZW5jZQ0KCQkkY291bnRwb3MgPSBkb19saXN0KCRjb3VudHBv cywgJGRlbGltKTsNCgkJZm9yZWFjaCAoJGNvdW50cG9zIGFzICRjb3VudGl0ZW0pIHsNCgkJ CSRjb3VudHBvc25zW10gPSAoaW5fYXJyYXkoJGNvdW50aXRlbSwgJGNvdW50UG9zQWxsb3dl ZCkpID8gJGNvdW50aXRlbSA6ICRjb3VudFBvc0FsbG93ZWRbMF07DQoJCX0NCgl9DQoNCgkv LyBQYWdpbmcgaW5pdA0KCSRwYWdlUG9zQWxsb3dlZCA9IGFycmF5KCJiZWxvdyIsICJhYm92 ZSIpOw0KCSRwYWdlb3V0ID0gYXJyYXkoKTsNCglpZiAoJHBhZ2Vmb3JtKSB7DQoJCSRwYWdp bmcgPSAxOw0KCQkkcGFnZWZvcm0gPSBmZXRjaF9mb3JtKCRwYWdlZm9ybSk7DQoJCSRwYWdl cG9zID0gc3RyX3JlcGxhY2UoJ3NtZF8nLCAnJywgJHBhZ2Vwb3MpOw0KCQkkcGFnZXBvcyA9 IGRvX2xpc3QoJHBhZ2Vwb3MsICRkZWxpbSk7DQoJCWZvcmVhY2ggKCRwYWdlcG9zIGFzICRw YWdlaXRlbSkgew0KCQkJJHBhZ2VvdXRbXSA9IChpbl9hcnJheSgkcGFnZWl0ZW0sICRwYWdl UG9zQWxsb3dlZCkpID8gJHBhZ2VpdGVtIDogJHBhZ2VQb3NBbGxvd2VkWzBdOw0KCQl9DQoJ fQ0KDQoJLy8gb25jaGFuZ2UgdmVyaWZpY2F0aW9uDQoJJG9uY2hhbmdlID0gZG9fbGlzdCgk b25jaGFuZ2UsICRkZWxpbSk7DQoJJG9uY2hhbmdlID0gKCRvbmNoYW5nZVswXSA9PSAiIikg PyBhcnJheSgpIDogJG9uY2hhbmdlOw0KCSRyZXNldE9wdHMgPSBhcnJheSgpOw0KCWZvcmVh Y2ggKCRvbmNoYW5nZSBhcyAkcmVzZXRPcHQpIHsNCgkJJHJlc2V0T3B0c1skcmVzZXRPcHRd ID0gIiI7DQoJfQ0KDQoJLy8gRXNjYXBpbmcNCgkkc3BjID0gKCRzdHJpY3RmaWVsZHMpID8g MCA6IDE7DQoJJGVzY2FwZXMgPSBkb19saXN0KCRlc2NhcGUsICRkZWxpbSk7DQoJZm9yZWFj aCAoJGVzY2FwZXMgYXMgJGlkeCA9PiAkdmFsKSB7DQoJCWlmICgkdmFsID09ICcnKSB7DQoJ CQl1bnNldCgkZXNjYXBlc1skaWR4XSk7DQoJCX0NCgl9DQoNCgkvLyBUaGUgZ2FsbGVyeSBp ZGVudGlmaWVyIGlzIHVzZWQgZm9yIGtlZXBpbmcgdHJhY2sgb2YgbmV4dC9wcmV2IHRodW1i bmFpbCBwYWdlIGxpbmtzDQoJJGdhbGxJRCA9ICcnOw0KCWlmICgkZ2FsbGVyeWlkID09ICcn IHx8IHN1YnN0cigkZ2FsbGVyeWlkLDAsMSkgPT0gIj8iKSB7DQoJCS8vIEdlbmVyYXRlIGEg KGZhaXJseSBsaWtlbHkpIHVuaXF1ZSBJRCBmb3IgdGhpcyBnYWxsZXJ5IGluc3RhbmNlDQoJ CSRnYWxsVG1wID0gbWQ1KCRjYXRlZ29yeS4kaWQuJGRpcmVjdG9yeS4kbWF0Y2guJHN1Ymxl dmVsLiRzb3J0LiRsaW1pdC4kbWF4bGltaXQpOw0KCQlsaXN0KCRnYWxsTGVuLCAkZ2FsbFNr aXApID0gZXhwbG9kZSgiOiIsIHN1YnN0cigkZ2FsbGVyeWlkLDEpKTsNCgkJJGdhbGxMZW4g PSAgKGVtcHR5KCRnYWxsTGVuKSkgPyAiNCIgOiAkZ2FsbExlbjsNCgkJJGdhbGxTa2lwID0g IChlbXB0eSgkZ2FsbFNraXApKSA/ICIxIiA6ICRnYWxsU2tpcDsNCgkJZm9yICgkaWR4ID0g MCwgJGNudCA9IDA7ICRjbnQgPCAkZ2FsbExlbjsgJGNudCsrLCAkaWR4ID0gKCgkaWR4KyRn YWxsU2tpcCkgJSBzdHJsZW4oJGdhbGxUbXApKSkgew0KCQkJJGdhbGxJRCAuPSAkZ2FsbFRt cFskaWR4XTsNCgkJfQ0KCX0gZWxzZSB7DQoJCSRnYWxsSUQgPSAkZ2FsbGVyeWlkOw0KCX0N CgkkZ2FsbElEID0gInNtZF9nbHJ5XyIuJGdhbGxJRDsgLy8gQXZvaWQgKGFscmVhZHkgaW5j cmVkaWJseSB1bmxpa2VseSkgbmFtZXNwYWNlIGNsYXNoZXMNCg0KCS8vIFNldCB1cCB0aGUg dmFyaWFibGVzIGZyb20gdGhlIHRodW1iIG9wdGlvbi4NCgkvLyBEb24ndCB1c2UgcGFyYW1k ZWxpbSBoZXJlIG9yIHRoZSBkZWZhdWx0IG9wdGlvbiBicmVha3MNCgkkdGh1bWJPcHRzID0g ZG9fbGlzdCgkdGh1bWIsICI6Iik7DQoJaWYgKGNvdW50KCR0aHVtYk9wdHMpID09IDEpIHsN CgkJJGZ1bGxtb2QgPSAoJHRodW1iT3B0c1swXSA9PSAxKSA/ICJ0IiA6ICIiOw0KCQkkdGh1 bWJtb2QgPSAidCI7DQoJfSBlbHNlIHsNCgkJJGZ1bGxtb2QgPSAoJHRodW1iT3B0c1swXSA9 PSAxKSA/ICJ0IiA6ICIiOw0KCQkkdGh1bWJtb2QgPSAoJHRodW1iT3B0c1sxXSA9PSAxKSA/ ICJ0IiA6ICIiOw0KCX0NCg0KCS8vIFRoZSBtYW5uZXIgb2Ygb2J0YWluaW5nIGZpbGVzIGRp ZmZlcnMgaWYgdXNpbmcgZGlyZWN0b3J5IHZzIGNhdGVnb3J5L2lkDQoJJHJzID0gYXJyYXko KTsNCglpZiAoJGRpcmVjdG9yeSkgew0KCQkkcnMgPSBzbWRfZG9EaXJlY3RvcnkoJGRpcmVj dG9yeSwgMCwgJHN1YmxldmVsLCAkbWF0Y2gsICRkZWxpbSwgJHNwYyk7DQoJCWxpc3QoJGFs bEltYWdlcywgJG51bVBhZ2VzLCAkdGh1bVBhZ2UsICRvZmZzZXQpID0gc21kX2dldFBhZ2Uo JHJzLCAkZ2FsbElELCAkbGltaXQsICRvZmZzZXQsICRwYWdpbmcpOw0KCQkkZGlybGltaXQg PSAoJGxpbWl0PT0wKSA/ICRtYXhsaW1pdCA6ICRsaW1pdDsNCgkJJHBvc3RPcmRlciA9IGFy cmF5KCk7DQoJCSRmaXhlZE9yZGVyID0gMDsNCgkJJHJhbmRzb3J0ID0gZmFsc2U7DQoJfSBl bHNlIHsNCgkJLy8gUHJvY2VzcyBjYXRlZ29yaWVzL0lEcyBhbmQgbWFrZSB1cCB0aGUgY3J1 eCBvZiB0aGUgd2hlcmUgY2xhdXNlLg0KCQkvLyBDbGF1c2Ugb3JkZXIgPSBJRHMgT1IgY2F0 cyBBTkQgIWNhdHMgQU5EICFJRHMNCgkJJGNsYXVzZVtdID0gJzE9MSc7DQoJCSRjbGF1c2VP UiA9IGFycmF5KCk7DQoNCgkJLy8gU3Vycm91bmQgZWFjaCBlbnRyeSBpbiB0aGUgSUQgbGlz dCB3aXRoIHF1b3RlcyBhbmQgbWFrZSBhbiBTUUwgImluIiBsaXN0DQoJCSRzdWJpbmZvID0g KCRzdWJsZXZlbCkgPyAiaW1hZ2U6Ii4kc3VibGV2ZWwgOiAnJzsNCgkJbGlzdCgkaWRpbmMs ICRpZGV4YykgPSBzbWRfZG9MaXN0KCRpZCwgdHJ1ZSwgJycsIHRydWUsICRkZWxpbSwgJHNw Yyk7DQoJCWxpc3QoJGNhdGluYywgJGNhdGV4YykgPSBzbWRfZG9MaXN0KCRjYXRlZ29yeSwg ZmFsc2UsICRzdWJpbmZvLCB0cnVlLCAkZGVsaW0sICRzcGMpOw0KCQlpZiAoJGlkaW5jKSB7 DQoJCQkkY2xhdXNlT1JbXSA9IFBGWC4ndHhwX2ltYWdlLmlkIElOICgnLmltcGxvZGUoIiwi LCAkaWRpbmMpLicpJzsNCgkJfQ0KCQlpZiAoJGNhdGluYykgew0KCQkJJGNsYXVzZU9SW10g PSBQRlguJ3R4cF9pbWFnZS5jYXRlZ29yeSBJTiAoJy5pbXBsb2RlKCIsIiwgJGNhdGluYyku JyknOw0KCQl9DQoJCWlmICghZW1wdHkoJGNsYXVzZU9SKSkgew0KCQkJJGNsYXVzZVtdID0g JyAoJy5pbXBsb2RlKCIgT1IgIiwgJGNsYXVzZU9SKS4nKSAnOw0KCQl9DQoNCgkJJGNsYXVz ZSA9IGltcGxvZGUoIiBBTkQgIiwgJGNsYXVzZSk7DQoJCSRjbGF1c2UgLj0gKCRjYXRleGMp ID8gJyBBTkQgJy5QRlguJ3R4cF9pbWFnZS5jYXRlZ29yeSBOT1QgSU4gKCcuaW1wbG9kZSgi LCIsICRjYXRleGMpLicpJyA6ICcnOw0KCQkkY2xhdXNlIC49ICgkaWRleGMpID8gJyBBTkQg Jy5QRlguJ3R4cF9pbWFnZS5pZCBOT1QgSU4gKCcuaW1wbG9kZSgiLCIsICRpZGV4YykuJykn IDogJyc7DQoNCgkJLy8gSWYgYSBjYXRlZ29yeS9pZCBvcHRpb24gd2FzIGNob3NlbiBhbmQg dGhleSBtYXRjaGVkIG5vdGhpbmcsIHVzZSBhIGJvZ3VzIGNhdGVnb3J5IHRoYXQgc2hvdWxk IG5vdCBleGlzdC4NCgkJLy8gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIHBsdWdpbiBkb2VzIHRo ZSBleHBlY3RlZCB0aGluZyBvZiBtYXRjaGluZyBub3RoaW5nIGluIHRoZSBldmVudCBpdCBm aW5kcyBub3RoaW5nLg0KCQlpZiAoJGNsYXVzZSA9PSAiMT0xIiAmJiAkYXR0ZW1wdE1hdGNo KSB7DQoJICAJCSRjbGF1c2UgPSBQRlguJ3R4cF9pbWFnZS5jYXRlZ29yeSA9ICJzbWRfJyAu bXRfcmFuZCgpLiAnIic7DQoJCX0NCg0KCQkkY2xhdXNlID0gJygnLnN0cl9yZXBsYWNlKCdT TURfRU1QVFknLCAnJywgJGNsYXVzZSkuJyknOw0KDQoJCWlmICgkZGVidWcgPiAxKSB7DQoJ CQllY2hvICIrKyBJTkNMVURFRC9FWENMVURFRCBJRHMgQU5EIENBVHMgKysiOw0KCQkJaWYg KCRpZGluYykgZG1wKCRpZGluYyk7DQoJCQlpZiAoJGlkZXhjKSBkbXAoJGlkZXhjKTsNCgkJ CWlmICgkY2F0aW5jKSBkbXAoJGNhdGluYyk7DQoJCQlpZiAoJGNhdGV4YykgZG1wKCRjYXRl eGMpOw0KCQl9DQoNCgkJLy8gQ29udmVydCB0aGUgc29ydCBpbnRvIGEgdmFsaWQgc29ydGlu ZyBoaWVyYXJjaHkuDQoJCS8vIE5vdGUgdGhhdCByYW5kb20gaXMgYSBzcGVjaWFsIGNhc2Ug YW5kIHRoZSBmb2xsb3dpbmcgcnVsZXMgYXBwbHk6DQoJCS8vICAxKSBBbnl0aGluZyBhcHBl YXJpbmcgYmVmb3JlIHJhbmRvbSBpcyBwYXNzZWQgdG8gdGhlIGRhdGFiYXNlIHF1ZXJ5IGZv ciBvcmRlcmluZw0KCQkvLyAgMikgQXMgc29vbiBhcyByYW5kb20gaXMgZW5jb3VudGVyZWQs IHRoZSByZXN0IG9mIHRoZSBzb3J0IHN0cmluZyBpcyBpZ25vcmVkLg0KCQkvLyAgICAgVGhl IHJlc3VsdHNldCB3aWxsIGJlIHNvcnRlZCByYW5kb21seSBpbnN0ZWFkDQoJCS8vICAzKSBJ ZiByYW5kb20gYXBwZWFycyBmaXJzdCBpbiB0aGUgbGlzdCwgdGhlIGRhdGEgaXMgcmV0cmll dmVkIHJhbmRvbWx5IHRoZW4gdGhlDQoJCS8vICAgICByZW1haW5pbmcgb3B0aW9ucyBzb3J0 IHRoZSByZXN1bHRzZXQNCgkJJGNsYXVzZVNvcnQgPSBhcnJheSgpOw0KCQkkcG9zdE9yZGVy ID0gYXJyYXkoKTsNCgkJJHJ1bGUgPSAic3FsIjsNCgkJJHBvc3RQcmVmaXggPSAiU09SVF8i Ow0KCQkkZml4ZWRPcmRlciA9ICRyYW5kc29ydCA9IGZhbHNlOw0KCQkkc29ydCA9IGRvX2xp c3QoJHNvcnQsICRkZWxpbSk7DQoJCWZvciAoJGlkeCA9IDA7ICRpZHggPCBjb3VudCgkc29y dCk7ICRpZHgrKykgew0KCQkJJHNvcnRfZGlyID0gZXhwbG9kZSgnICcsICRzb3J0WyRpZHhd KTsNCgkJCSRkaXJlY3Rpb24gPSAkY29sUmVmID0gJyc7DQoJCQlpZiAoY291bnQoJHNvcnRf ZGlyKSA8PSAxKSB7DQoJCQkJJHNvcnRfZGlyWzFdID0gImFzYyI7DQoJCQl9DQoJCQlpZiAo JHJ1bGUgPT0gInNxbCIpIHsNCgkJCQkkZGlyZWN0aW9uID0gKCRzb3J0X2RpclsxXSA9PSAi ZGVzYyIpID8gJyBkZXNjJyA6ICcgYXNjJzsNCgkJCX0gZWxzZSB7DQoJCQkJJGRpcmVjdGlv biA9ICgkc29ydF9kaXJbMV0gPT0gImRlc2MiKSA/ICRwb3N0UHJlZml4LidERVNDJyA6ICRw b3N0UHJlZml4LidBU0MnOw0KCQkJfQ0KDQoJCQlzd2l0Y2ggKCRzb3J0X2RpclswXSkgew0K CQkJCWNhc2UgJ3JhbmRvbSc6DQoJCQkJCSRydWxlID0gInBvc3QiOw0KCQkJCQlpZiAoJGlk eCA9PSAwKSB7DQoJCQkJCQkkY2xhdXNlU29ydFtdID0gJ3JhbmQoKSc7DQoJCQkJCX0gZWxz ZSB7DQoJCQkJCQkkcmFuZHNvcnQgPSB0cnVlOw0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJ CWNhc2UgJ2ZpeGVkJzoNCgkJCQkJLy8gJ2ZpeGVkJyBvbmx5IHdvcmtzIG9uIGlkcyBvciBj YXRlZ29yaWVzDQoJCQkJCSRmaXhlZE9yZGVyID0gKCRpZCA9PSAnJyAmJiAkY2F0ZWdvcnkg PT0gJycpID8gZmFsc2UgOiB0cnVlOw0KCQkJCQlicmVhazsNCgkJCQlkZWZhdWx0Og0KCQkJ CQkkY29sUmVmID0gYXJyYXlfc2VhcmNoKCRzb3J0X2RpclswXSwgJGZpZWxkTWFwKTsNCgkJ CQkJJGNvbE5hbWUgPSAkZmllbGRNYXBbJGNvbFJlZl07DQoJCQkJCWJyZWFrOw0KCQkJfQ0K CQkJaWYgKCRydWxlID09ICJzcWwiKSB7DQoJCQkJaWYgKCRjb2xSZWYgIT0gJycpIHsNCgkJ CQkJJGNsYXVzZVNvcnRbXSA9ICRjb2xSZWYuJGRpcmVjdGlvbjsNCgkJCQl9DQoJCQl9IGVs c2Ugew0KCQkJCWlmICghJHJhbmRzb3J0KSB7DQoJCQkJCWlmICgkY29sUmVmICE9ICcnKSB7 DQoJCQkJCQkkcG9zdE9yZGVyW10gPSBhcnJheSgiY29sIiA9PiAkY29sTmFtZSwgInNvcnQi ID0+ICRkaXJlY3Rpb24pOw0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQl9DQoNCgkJaWYgKGNv dW50KCRjbGF1c2VTb3J0KSA+IDApIHsNCgkJCSRjbGF1c2UgLj0gJyBPUkRFUiBCWSAnIC4g aW1wbG9kZSgiLCIsJGNsYXVzZVNvcnQpOw0KCQl9DQoJCWlmICgkZGVidWcgPiAwKSB7DQoJ CQllY2hvICIrKyBXSEVSRSBDTEFVU0UgKysiOw0KCQkJZG1wKCRjbGF1c2UpOw0KCQl9DQoJ CS8vIFRoZSBkYXRhYmFzZSBmaWVsZHMgcmVxdWlyZWQNCgkJJGZpZWxkcyA9IGltcGxvZGUo IiwiLCBhcnJheV9rZXlzKCRmaWVsZE1hcCkpOw0KCQkkY1RpdGxlID0gKGlzc2V0KCRsMTBu X2xhbmd1YWdlWydsb25nJ10pKSA/IF9sMTBuX21ha2VfZmllbGRfbmFtZSgndGl0bGUnLCAk dGhpc2xhbmcpIDogJ3RpdGxlJzsNCg0KCQkkcnMgPSBnZXRSb3dzKCINCgkJCVNFTEVDVCBE SVNUSU5DVCAkZmllbGRzLCAiLlBGWC4idHhwX2NhdGVnb3J5LiIuJGNUaXRsZS4iIEFTIGNh dGVnb3J5X3RpdGxlDQoJCQlGUk9NICIuUEZYLiJ0eHBfaW1hZ2UgTEVGVCBKT0lOICIuUEZY LiJ0eHBfY2F0ZWdvcnkNCgkJCU9OICIuUEZYLiJ0eHBfaW1hZ2UuY2F0ZWdvcnkgPSAiLlBG WC4idHhwX2NhdGVnb3J5Lm5hbWUNCgkJCVdIRVJFICRjbGF1c2UNCgkJCUxJTUlUIDAsICRt YXhsaW1pdA0KCQkiLCAkZGVidWcpOw0KCQlsaXN0KCRhbGxJbWFnZXMsICRudW1QYWdlcywg JHRodW1QYWdlLCAkb2Zmc2V0KSA9IHNtZF9nZXRQYWdlKCRycywgJGdhbGxJRCwgJGxpbWl0 LCAkb2Zmc2V0LCAkcGFnaW5nKTsNCgl9DQoNCg0KCS8vIElzIHBvc3Qtb3JkZXJpbmcgcmVx dWlyZWQ/IERvIGl0DQoJaWYgKCRyYW5kc29ydCkgew0KCQlzaHVmZmxlKCRycyk7DQoJfSBl bHNlIGlmIChjb3VudCgkcG9zdE9yZGVyKSA+IDApIHsNCgkJLy8gVHJhbnNsYXRlIHRoZSBy b3dzIGludG8gY29sdW1ucyB0aGF0IGNhbiBiZSBzb3J0ZWQNCgkJZm9yZWFjaCgkcnMgYXMg JGtleSA9PiAkcm93KSB7DQoJCQlmb3JlYWNoICgkcm93IGFzICRpZGVudGlmaWVyID0+ICRp dGVtKSB7DQoJCQkJJHZhcm5hbWUgPSAiY29sXyIuJGlkZW50aWZpZXI7DQoJCQkJJHskdmFy bmFtZX1bJGtleV0gPSAkaXRlbTsNCgkJCX0NCgkJfQ0KDQoJCS8vIE1ha2UgdXAgYW4gYXJy YXlfbXVsdGlzb3J0IGFyZyBsaXN0IGFuZCBleGVjdXRlIGl0Lg0KCQkvLyBUaGUgbmVjZXNz YXJ5IGV2aWwoKSBpcyBiZWNhdXNlIHdlIGRvbid0IGtub3cgaG93IG1hbnkgY29scyB0aGVy ZSB3aWxsIGJlIGluIHRoZSBhcnJheQ0KCQlmb3IgKCRpZHggPSAwOyAkaWR4IDwgY291bnQo JHBvc3RPcmRlcik7ICRpZHgrKykgew0KCQkJJHNvcnRhcmdzW10gPSAnJGNvbF8nLiRwb3N0 T3JkZXJbJGlkeF1bJ2NvbCddOw0KCQkJJHNvcnRhcmdzW10gPSAkcG9zdE9yZGVyWyRpZHhd Wydzb3J0J107DQoJCX0NCgkJJHNvcnRpdCA9ICdhcnJheV9tdWx0aXNvcnQoJy5pbXBsb2Rl KCIsICIsJHNvcnRhcmdzKS4nLCAkcnMpOyc7DQoJCWV2YWwoJHNvcnRpdCk7DQoJfQ0KDQoJ Ly8gSXMgZml4ZWQtb3JkZXIgb3V0cHV0IGRlc2lyZWQ/IElmIHNvLCByZS1vcmRlciB0aGUg JHJzDQoJaWYgKCRmaXhlZE9yZGVyKSB7DQoJCSRvcmRlcmVkUlMgPSBBcnJheSgpOw0KCQkk aWdub3JlTGlzdCA9IEFycmF5KCk7DQoJCSRyZW1haW5pbmdSUyA9IEFycmF5KCk7DQoJCS8v IFN1Y2sgb3V0IHRoZSBmaXhlZCBpdGVtcyBmaXJzdC4gSURzIHRoZW4gY2F0ZWdvcmllcw0K CQlmb3IgKCRpZHggPSAwOyAkaWR4IDwgY291bnQoJGlkaW5jKTsgJGlkeCsrKSB7DQoJCQlm b3JlYWNoKCRycyBhcyAkcm93KSB7DQoJCQkJaWYgKCRpZCAmJiBkb1F1b3RlKCRyb3dbJ2lk J10pID09ICRpZGluY1skaWR4XSkgew0KCQkJCQkkb3JkZXJlZFJTW10gPSAkcm93Ow0KCQkJ CQkkaWdub3JlTGlzdFtdID0gJHJvd1snaWQnXTsNCgkJCQkJYnJlYWs7DQoJCQkJfQ0KCQkJ fQ0KCQl9DQoJCWZvciAoJGlkeCA9IDA7ICRpZHggPCBjb3VudCgkY2F0aW5jKTsgJGlkeCsr KSB7DQoJCQlmb3JlYWNoKCRycyBhcyAkcm93KSB7DQoJCQkJaWYgKCRjYXRlZ29yeSAmJiBk b1F1b3RlKCRyb3dbJ2NhdGVnb3J5J10pID09ICRjYXRpbmNbJGlkeF0pIHsNCgkJCQkJJG9y ZGVyZWRSU1tdID0gJHJvdzsNCgkJCQkJJGlnbm9yZUxpc3RbXSA9ICRyb3dbJ2lkJ107DQoJ CQkJfQ0KCQkJfQ0KCQl9DQoJCS8vIFRhY2sgb24gdGhlIHJlbWFpbmluZyByb3dzDQoJCWZv cmVhY2goJHJzIGFzICRyb3cpIHsNCgkJCWlmICghaW5fYXJyYXkoJHJvd1snaWQnXSwgJGln bm9yZUxpc3QpKSB7DQoJCQkJJHJlbWFpbmluZ1JTW10gPSAkcm93Ow0KCQkJfQ0KCQl9DQoJ CSRycyA9IGFycmF5X21lcmdlKCRvcmRlcmVkUlMsICRyZW1haW5pbmdSUyk7DQoJfQ0KDQoJ Ly8gR3JhYiB0aGUgcG9ydGlvbiBvZiB0aGUgcmVjb3JkIHNldCBhY3R1YWxseSByZXF1aXJl ZCB0byBpdGVyYXRlIG92ZXINCglpZiAoJHJzKSB7DQoJCSRycyA9IGFycmF5X3NsaWNlKCRy cywgJG9mZnNldCwgKCgkZGlyZWN0b3J5KSA/ICRkaXJsaW1pdCA6ICgoJGxpbWl0PT0wKSA/ ICRtYXhsaW1pdCA6ICRsaW1pdCkpKTsNCgl9DQoNCgkvLyBIYW5kbGUgdGh1bWJzaXplIC0g b2YgbGltaXRlZCB1c2Ugbm93IGJ1dCBzdGlsbCBhdmFpbGFibGUNCgkkdGh1bWJXaWR0aCA9 ICR0aHVtYkhlaWdodCA9ICcnOw0KCSR0aHVtYldVbml0cyA9ICR0aHVtYkhVbml0cyA9ICcn Ow0KCWlmICgkdGh1bWJzaXplKSB7DQoJCSR0aHVtYlNpemVzID0gZG9fbGlzdCgkdGh1bWJz aXplLCAkZGVsaW0pOw0KCQlpZiAoY291bnQoJHRodW1iU2l6ZXMpID09IDEpIHsNCgkJCSR0 aHVtYldpZHRoID0gJHRodW1iSGVpZ2h0ID0gZXJlZ19yZXBsYWNlKCJbXjAtOV0iLCAnJywg JHRodW1iU2l6ZXNbMF0pOw0KCQkJJHVuaXRzID0gZXJlZ19yZXBsYWNlKCJbMC05XSIsICcn LCAkdGh1bWJTaXplc1swXSk7DQoJCQkkdGh1bWJXVW5pdHMgPSAkdGh1bWJIVW5pdHMgPSAo JHVuaXRzID09ICcnKSA/ICR0aHVtYldVbml0cyA6ICR1bml0czsNCgkJfSBlbHNlIHsNCgkJ CSR0aHVtYldpZHRoID0gZXJlZ19yZXBsYWNlKCJbXjAtOV0iLCAnJywgJHRodW1iU2l6ZXNb MF0pOw0KCQkJJHRodW1iSGVpZ2h0ID0gZXJlZ19yZXBsYWNlKCJbXjAtOV0iLCAnJywgJHRo dW1iU2l6ZXNbMV0pOw0KCQkJJHVuaXRzID0gZXJlZ19yZXBsYWNlKCJbMC05XSIsICcnLCAk dGh1bWJTaXplc1swXSk7DQoJCQkkdGh1bWJXVW5pdHMgPSAoJHVuaXRzID09ICcnICYmICR0 aHVtYldpZHRoICE9ICcnKSA/ICR0aHVtYldVbml0cyA6ICR1bml0czsNCgkJCSR1bml0cyA9 IGVyZWdfcmVwbGFjZSgiWzAtOV0iLCAnJywgJHRodW1iU2l6ZXNbMV0pOw0KCQkJJHRodW1i SFVuaXRzID0gKCR1bml0cyA9PSAnJyAmJiAkdGh1bWJIZWlnaHQgIT0gJycpID8gJHRodW1i SFVuaXRzIDogJHVuaXRzOw0KCQl9DQoJfQ0KDQoJLy8gQ29sbGF0aW9uIGRlZmVycyBwYXJz aW5nIHRoZSBmb3JtIGZvciBlYWNoIHJldHVybmVkIGl0ZW0uDQoJLy8gSW5zdGVhZCBpdCBv dXRwdXRzIHRoZSBkYXRhIGFzIGEgbGlzdCBhdCB0aGUgZW5kIChpdGVtcyBtYXkgYmUgaW5k aXZpZHVhbGx5IHF1b3RlZCBvciBleHRyYWN0ZWQgaWYgcmVxdWlyZWQpDQoJLy9UT0RPIDog QWRkIEFMV0FZUyBzd2l0Y2ggYXMgYSBzaG9ydGN1dCB0byBzcGVjaWZ5IHRoYXQgYWxsIG1h dGNoaW5nIGl0ZW1zIChyZWdhcmRsZXNzIG9mICMxLCAjMiwgIzMgZXRjKSBhcmUgdG8gYmUg cXVvdGVkDQoJaWYgKCRjb2xsYXRlKSB7DQoJCSRkYmxRdW90ZSA9ICRzZ2xRdW90ZSA9IGFy cmF5KCdTTUROT05FJyk7DQoJCSRjb2xsYXRlT3B0cyA9IGRvX2xpc3QoJGNvbGxhdGUsICRk ZWxpbSk7DQoJCWZvcmVhY2ggKCRjb2xsYXRlT3B0cyBhcyAkb3B0aW9uKSB7DQoJCQkkaW5k ZXhlcyA9IGRvX2xpc3QoJG9wdGlvbiwgJHBhcmFtZGVsaW0pOw0KCQkJJGNvbFR5cGUgPSBh cnJheV9zaGlmdCgkaW5kZXhlcyk7DQoJCQkvLyBTdXBwbHlpbmcgJ3F1b3RlJyBvbiBpdHMg b3duIHdpbGwgZW1wdHkgdGhlIHJlbGV2YW50IGFycmF5LCBpbXBseWluZyAiQUxMIiBmaWVs ZHMgYXJlIHRvIGJlIHF1b3RlZA0KCQkJc3dpdGNoICgkY29sVHlwZSkgew0KCQkJCWNhc2Ug InNnbHF1b3RlIjoNCgkJCQkJJHNnbFF1b3RlID0gJGluZGV4ZXM7DQoJCQkJCWJyZWFrOw0K CQkJCWNhc2UgImRibHF1b3RlIjoNCgkJCQljYXNlICJxdW90ZSI6DQoJCQkJCSRkYmxRdW90 ZSA9ICRpbmRleGVzOw0KCQkJCQlicmVhazsNCgkJCX0NCgkJfQ0KCX0NCg0KCS8vIENvbWJv cyBhcmUgdXNlci1kZWZpbmVkIGNvbWJpbmF0aW9ucyBvZiByZXBsYWNlbWVudCBtb2RpZmll cnMgKGUuZy4gaWRleHQ6IHtpZH17ZXh0fSwgLi4uDQoJJGNvbWJvcyA9IGFycmF5KCk7DQoJ aWYgKCRjb21ibykgew0KCQkkY29tYm8gPSBkb19saXN0KCRjb21ibywgJGRlbGltKTsNCgkJ Zm9yZWFjaCAoJGNvbWJvIGFzICRuZXdEZWYpIHsNCgkJCWxpc3QoJGRlZlBhcnRzLCAkdW53 YW50ZWQpID0gc21kX2RvTGlzdCgkbmV3RGVmLCBmYWxzZSwgJycsIGZhbHNlLCAkcGFyYW1k ZWxpbSwgJHNwYyk7DQoJCQkkZGVmTmFtZSA9ICJ7Ii5hcnJheV9zaGlmdCgkZGVmUGFydHMp LiJ9IjsNCgkJCSRjb21ib3NbJGRlZk5hbWVdID0gJGRlZlBhcnRzWzBdOw0KCQl9DQoJfQ0K CWlmICgkZGVidWcgPiAxKSB7DQoJCWVjaG8gIisrIENPTUJPcyArKyI7DQoJCWRtcCgkY29t Ym9zKTsNCgl9DQoJLy8gQ29uc3RydWN0IHRoZSBvdXRwdXQNCgkkdGh1bWJvdXQgPSBhcnJh eSgpOw0KCSRncm91cG91dCA9IGFycmF5KCk7DQoJJG5hdm91dCA9IGFycmF5KCk7DQoJJG91 dCA9IGFycmF5KCk7DQoJJGNvbGxhdGlvbnMgPSBhcnJheSgpOw0KCSRjaElkZW50aWZpZXIg PSAib25jaGFuZ2UiOw0KDQoJaWYgKCRkZWJ1ZyA+IDIpIHsNCgkJZWNobyAiKysgUkVDT1JE IFNFVCArKyI7DQoJCWRtcCgkcnMpOw0KCX0NCglpZiAoJGRlYnVnID4gMykgew0KCQllY2hv ICIrKyBBVkFJTEFCTEUgJz8nIFZBUlMgKysiOw0KCQlpZiAoJHByZXRleHQpIGRtcCgkcHJl dGV4dCk7DQoJCWlmICgkdGhpc2FydGljbGUpIGRtcCgkdGhpc2FydGljbGUpOw0KCX0NCg0K CWlmKCRycykgew0KCQkkaWR4ID0gMDsNCgkJJGN0ciA9IDE7DQoJCSR0aHVtYklkeCA9IDA7 DQoJCSR0aHVtYkN0ciA9IDE7DQoJCSRudW1JbWFnZXMgPSBjb3VudCgkcnMpOw0KCQkkcmVw YWdlbWVudHMgPSBhcnJheSgpOw0KDQoJCS8vIFNldCB1cCB0aGUgcGFnaW5nIGZlYXR1cmVz IGlmIHJlcXVpcmVkDQoJCWlmICgoJGxpbWl0ID4gMCkgJiYgJHBhZ2luZykgew0KCQkJJG5l eHQgPSAoJG51bVBhZ2VzID4gMSAmJiAkdGh1bVBhZ2UgIT0gJG51bVBhZ2VzKTsNCgkJCSRw cmV2ID0gKCRudW1QYWdlcyA+IDEgJiYgJHRodW1QYWdlID4gMSk7DQoJCQkkcHJldlBhZ2Ug PSBzbWRfYWRkUVNWYXIoJHByZXRleHRbJ3JlcXVlc3RfdXJpJ10sICRnYWxsSUQsICR0aHVt UGFnZS0xKTsNCgkJCSRuZXh0UGFnZSA9IHNtZF9hZGRRU1ZhcigkcHJldGV4dFsncmVxdWVz dF91cmknXSwgJGdhbGxJRCwgJHRodW1QYWdlKzEpOw0KCQkJJHRoaXNQYWdlID0gc21kX2Fk ZFFTVmFyKCRwcmV0ZXh0WydyZXF1ZXN0X3VyaSddLCAkZ2FsbElELCAkdGh1bVBhZ2UpOw0K CQkJJGZpcnN0UGFnZSA9IHNtZF9hZGRRU1ZhcigkcHJldGV4dFsncmVxdWVzdF91cmknXSwg JGdhbGxJRCwgMSk7DQoJCQkkbGFzdFBhZ2UgPSBzbWRfYWRkUVNWYXIoJHByZXRleHRbJ3Jl cXVlc3RfdXJpJ10sICRnYWxsSUQsICRudW1QYWdlcyk7DQoNCgkJCS8vIExhYmVscyBjYW4g YmUgc3BlY2lmaWVkIGluIHRoZSByZXBsYWNlbWVudCB0YWcgYWZ0ZXIgYSBwYXJhbWRlbGlt Lg0KCQkJLy8gJ2VhcmxpZXInIGFuZCAnbGF0ZXInIGRvbid0IGhhdmUgbGFiZWxzLiBBbnl0 aGluZyBzcGVjaWZpZWQgYWZ0ZXIgcGFyYW1kZWxpbSBpcyB0aGUgbWF4IG51bWJlciBvZiBw YWdlcyB0byBzaG93OyBlbXB0eSA9IGFsbCBwYWdlcw0KCQkJJGxhYmVsID0gYXJyYXkoDQoJ CQkJCSd7bmF2Zmlyc3R9JyA9PiAkc21kX2dhbGxMYW5nLT5nVHh0KCduYXZmaXJzdCcpLA0K CQkJCQkne25hdnByZXZ9JyA9PiAkc21kX2dhbGxMYW5nLT5nVHh0KCduYXZwcmV2JyksDQoJ CQkJCSd7bmF2ZWFybGllcn0nID0+ICcnLA0KCQkJCQkne25hdnRoaXN9JyA9PiAkdGh1bVBh Z2UsDQoJCQkJCSd7bmF2dGhpc3VybH0nID0+ICR0aHVtUGFnZSwNCgkJCQkJJ3tuYXZsYXRl cn0nID0+ICcnLA0KCQkJCQkne25hdm5leHR9JyA9PiAkc21kX2dhbGxMYW5nLT5nVHh0KCdu YXZuZXh0JyksDQoJCQkJCSd7bmF2bGFzdH0nID0+ICRzbWRfZ2FsbExhbmctPmdUeHQoJ25h dmxhc3QnKSwNCgkJCQkpOw0KDQoJCQkkbGFiZWxSRSA9ICcvXHsobmF2W2Etel0rKScuJHBh cmFtZGVsaW0uJyguKz8pXH0vJzsNCgkJCSRudW1MYWJlbHMgPSBwcmVnX21hdGNoX2FsbCgk bGFiZWxSRSwgJHBhZ2Vmb3JtLCAkbGFiZWxzKTsNCg0KCQkJZm9yICgkbGFiZWxDdHIgPSAw OyAkbGFiZWxDdHIgPCAkbnVtTGFiZWxzOyAkbGFiZWxDdHIrKykgew0KCQkJCSRmaWVsZG5h bWUgPSAneycuJGxhYmVsc1sxXVskbGFiZWxDdHJdLid9JzsNCgkJCQkkbGFiZWxbJGZpZWxk bmFtZV0gPSAkbGFiZWxzWzJdWyRsYWJlbEN0cl07DQoJCQkJJHBhZ2Vmb3JtID0gc3RyX3Jl cGxhY2UoJGxhYmVsc1swXVskbGFiZWxDdHJdLCAneycuJGxhYmVsc1sxXVskbGFiZWxDdHJd Lid9JywgJHBhZ2Vmb3JtKTsNCgkJCX0NCg0KCQkJaWYgKCRkZWJ1ZyA+IDEpIHsNCgkJCQll Y2hvICIrKyBQQUdJTkcgTEFCRUxTICsrIjsNCgkJCQlkbXAoJGxhYmVsKTsNCgkJCX0NCg0K CQkJLy8gR2VuZXJhdGUgJ2VhcmxpZXInIGFuZCAnbGF0ZXInIGxpc3RzDQoJCQkkbnVtRWFy bGllciA9IGludHZhbCgkbGFiZWxbJ3tuYXZlYXJsaWVyfSddKTsNCgkJCSRudW1MYXRlciA9 IGludHZhbCgkbGFiZWxbJ3tuYXZsYXRlcn0nXSk7DQoJCQkkbnVtRWFybGllciA9ICgkbnVt RWFybGllciAmJiAoJHRodW1QYWdlLSRudW1FYXJsaWVyID4gMSkpID8gJG51bUVhcmxpZXIg OiAkdGh1bVBhZ2UtMTsNCgkJCSRudW1MYXRlciA9ICgkbnVtTGF0ZXIgJiYgKCR0aHVtUGFn ZSskbnVtTGF0ZXIgPCAkbnVtUGFnZXMpKSA/ICRudW1MYXRlciA6ICRudW1QYWdlcy0kdGh1 bVBhZ2U7DQoJCQkkbmF2RWFybGllciA9ICRuYXZMYXRlciA9IGFycmF5KCk7DQoJCQlmb3Ig KCRjb2QgPSAkdGh1bVBhZ2UtJG51bUVhcmxpZXI7ICRjb2QgPCAkdGh1bVBhZ2U7ICRjb2Qr Kykgew0KCQkJCSRuYXZFYXJsaWVyW10gPSAnPGEgaHJlZj0iJy5zbWRfYWRkUVNWYXIoJHBy ZXRleHRbJ3JlcXVlc3RfdXJpJ10sICRnYWxsSUQsICRjb2QpLiciPicuJGNvZC4nPC9hPic7 DQoJCQl9DQoJCQlmb3IgKCRjb2QgPSAkdGh1bVBhZ2UrMTsgJGNvZCA8PSAkdGh1bVBhZ2Ur JG51bUxhdGVyOyAkY29kKyspIHsNCgkJCQkkbmF2TGF0ZXJbXSA9ICc8YSBocmVmPSInLnNt ZF9hZGRRU1ZhcigkcHJldGV4dFsncmVxdWVzdF91cmknXSwgJGdhbGxJRCwgJGNvZCkuJyI+ Jy4kY29kLic8L2E+JzsNCgkJCX0NCgkJCSRuYXZFYXJsaWVyID0gZG9XcmFwKCRuYXZFYXJs aWVyLCAnJywgJG5hdmJyZWFrLCAnJyk7DQoJCQkkbmF2TGF0ZXIgPSBkb1dyYXAoJG5hdkxh dGVyLCAnJywgJG5hdmJyZWFrLCAnJyk7DQoNCgkJCS8vIE1ha2UgdXAgdGhlIHJlcGFnZW1l bnRzIGFycmF5IGZvciBwYWdlZm9ybQ0KCQkJJHJlcGFnZW1lbnRzID0gYXJyYXkoDQoJCQkJ CSd7bmF2Zmlyc3R9JyA9PiAoKCRwcmV2KSA/IGRvVGFnKCc8YSBocmVmPSInLiRmaXJzdFBh Z2UuJyI+Jy4kbGFiZWxbJ3tuYXZmaXJzdH0nXS4nPC9hPicsICRuYXZicmVhaykgOiBkb1Rh ZygkbGFiZWxbJ3tuYXZmaXJzdH0nXSwgJG5hdmJyZWFrLCAkZW1wdHljbGFzcykpLA0KCQkJ CQkne25hdnByZXZ9JyA9PiAoKCRwcmV2KSA/IGRvVGFnKCc8YSBocmVmPSInLiRwcmV2UGFn ZS4nIj4nLiRsYWJlbFsne25hdnByZXZ9J10uJzwvYT4nLCAkbmF2YnJlYWspIDogZG9UYWco JGxhYmVsWyd7bmF2cHJldn0nXSwgJG5hdmJyZWFrLCAkZW1wdHljbGFzcykpLA0KCQkJCQkn e25hdmVhcmxpZXJ9JyA9PiAkbmF2RWFybGllciwNCgkJCQkJJ3tuYXZ0aGlzfScgPT4gZG9U YWcoJGxhYmVsWyd7bmF2dGhpc30nXSwgJG5hdmJyZWFrLCAnY3VycmVudCAnLiRlbXB0eWNs YXNzKSwNCgkJCQkJJ3tuYXZ0aGlzdXJsfScgPT4gZG9UYWcoJzxhIGhyZWY9IicuJHRoaXNQ YWdlLiciPicuJGxhYmVsWyd7bmF2dGhpc3VybH0nXS4nPC9hPicsICRuYXZicmVhaywgJ2N1 cnJlbnQnKSwNCgkJCQkJJ3tuYXZsYXRlcn0nID0+ICRuYXZMYXRlciwNCgkJCQkJJ3tuYXZu ZXh0fScgPT4gKCgkbmV4dCkgPyBkb1RhZygnPGEgaHJlZj0iJy4kbmV4dFBhZ2UuJyI+Jy4k bGFiZWxbJ3tuYXZuZXh0fSddLic8L2E+JywgJG5hdmJyZWFrKSA6IGRvVGFnKCRsYWJlbFsn e25hdm5leHR9J10sICRuYXZicmVhaywgJGVtcHR5Y2xhc3MpKSwNCgkJCQkJJ3tuYXZsYXN0 fScgPT4gKCgkbmV4dCkgPyBkb1RhZygnPGEgaHJlZj0iJy4kbGFzdFBhZ2UuJyI+Jy4kbGFi ZWxbJ3tuYXZsYXN0fSddLic8L2E+JywgJG5hdmJyZWFrKSA6IGRvVGFnKCRsYWJlbFsne25h dmxhc3R9J10sICRuYXZicmVhaywgJGVtcHR5Y2xhc3MpKSwNCgkJCQkJJ3tuYXZ0aGlzcGFn ZXVybH0nID0+ICR0aGlzUGFnZSwNCgkJCQkJJ3tuYXZuZXh0cGFnZXVybH0nID0+ICgoJG5l eHQpID8gJG5leHRQYWdlIDogJycpLA0KCQkJCQkne25hdnByZXZwYWdldXJsfScgPT4gKCgk cHJldikgPyAkcHJldlBhZ2UgOiAnJyksDQoJCQkJCSd7bmF2Zmlyc3RwYWdldXJsfScgPT4g JGZpcnN0UGFnZSwNCgkJCQkJJ3tuYXZsYXN0cGFnZXVybH0nID0+ICRsYXN0UGFnZSwNCgkJ CQkJJ3t0b3RhbGltYWdlc30nID0+ICRudW1JbWFnZXMsDQoJCQkJCSd7dG90YWxwYWdlc30n ID0+ICRudW1QYWdlcywNCgkJCQkJJ3ttYXhpbWFnZXN9JyA9PiAkYWxsSW1hZ2VzLA0KCQkJ CSk7DQoNCgkJCQkvLyBQZXJmb3JtIGVzY2FwaW5nIGhlcmUsIGp1c3QgcHJpb3IgdG8gb3V0 cHV0DQoJCQkJaWYgKCRlc2NhcGVzKSB7DQoJCQkJCWZvcmVhY2ggKCRyZXBhZ2VtZW50cyBh cyAkZGVmTmFtZSA9PiAkZGVmVmFsKSB7DQoJCQkJCQlpZiAoaW5fYXJyYXkodHJpbSgkZGVm TmFtZSwgInt9IiksICRlc2NhcGVzKSkgew0KCQkJCQkJCSRyZXBhZ2VtZW50c1skZGVmTmFt ZV0gPSBodG1sc3BlY2lhbGNoYXJzKCRkZWZWYWwpOw0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJ fQ0KDQoJCQkJLy8gUGVyZm9ybSB0aGUgc3Vic3RpdHV0aW9ucw0KCQkJCSRuYXZvdXRbXSA9 IHBhcnNlKHN0cnRyKCRwYWdlZm9ybSwgJHJlcGFnZW1lbnRzKSk7DQoJCX0NCg0KCQkvLyBG b3IgZXZlcnkgaW1hZ2UgaW4gdGhlIGdhbGxlcnkuLi4NCgkJZm9yZWFjaCgkcnMgYXMgJGtl eSA9PiAkcm93KSB7DQoJCQlpZiAoJGRpcmVjdG9yeSkgew0KCQkJCSR1cmxQYXRoID0gJHJv d1sncGF0aCddLicvJzsNCgkJCX0gZWxzZSB7DQoJCQkJJHVybFBhdGggPSBodS4kaW1nX2Rp ci4nLyc7DQoJCQl9DQoJCQkkdGhlVGh1bWIgPSAkdXJsUGF0aCAuICRyb3dbJ2lkJ10gLiAk dGh1bWJtb2QgLiAkcm93WydleHQnXTsNCgkJCSRmdWxsU2l6ZSA9ICR1cmxQYXRoIC4gJHJv d1snaWQnXSAuICRmdWxsbW9kIC4kcm93WydleHQnXTsNCg0KCQkJLy8gRG8gd2UgbmVlZCB0 byByZXNldCB0aGUgdGh1bWIgY291bnRlciB0aGlzIHRpbWU/DQoJCQlmb3JlYWNoICgkcmVz ZXRPcHRzIGFzICRyZXNldE9wdCA9PiAkcmVzZXRWYWwpIHsNCgkJCQlpZiAoc3RycG9zKCRy ZXNldE9wdCwgJ3NtZF9ldmVyeScpID09PSAwKSB7DQoJCQkJCSRpdGVyID0gZXhwbG9kZSgk cGFyYW1kZWxpbSwgJHJlc2V0T3B0KTsNCgkJCQkJJGl0ZXIgPSAoY291bnQoJGl0ZXIpID4g MSkgPyAkaXRlclsxXSA6IDA7DQoJCQkJCWlmICgkdGh1bWJJZHggJSAkaXRlciA9PSAwKSB7 DQoJCQkJCQkkdGh1bWJJZHggPSAwOw0KCQkJCQkJJHRodW1iQ3RyID0gMTsNCgkJCQkJfQ0K CQkJCX0gZWxzZSBpZiAoJHJvd1skcmVzZXRPcHRdICE9ICRyZXNldFZhbCkgew0KCQkJCQkk dGh1bWJJZHggPSAwOw0KCQkJCQkkdGh1bWJDdHIgPSAxOw0KCQkJCQlicmVhazsNCgkJCQl9 DQoJCQl9DQoNCgkJCS8vIENvbnN0cnVjdCB0aGUgcmVwbGFjZW1lbnQgYXJyYXkNCgkJCSRy ZXBsYWNlbWVudHMgPSBhcnJheSgNCgkJCQkJJ3tpZH0nID0+ICRyb3dbJ2lkJ10sDQoJCQkJ CSd7bmFtZX0nID0+ICRyb3dbJ25hbWUnXSwNCgkJCQkJJ3tleHR9JyA9PiAkcm93WydleHQn XSwNCgkJCQkJJ3tjYXRlZ29yeX0nID0+ICRyb3dbJ2NhdGVnb3J5J10sDQoJCQkJCSd7Y2F0 ZWdvcnlfdGl0bGV9JyA9PiAoKGlzc2V0KCRyb3dbJ2NhdGVnb3J5X3RpdGxlJ10pKSA/ICRy b3dbJ2NhdGVnb3J5X3RpdGxlJ10gOiAnJyksDQoJCQkJCSd7YXV0aG9yfScgPT4gJHJvd1sn YXV0aG9yJ10sDQoJCQkJCSd7aGFzdGh1bWJ9JyA9PiAoaXNzZXQoJHJvd1sndGh1bWJuYWls J10pID8gJHJvd1sndGh1bWJuYWlsJ10gOiAwKSwNCgkJCQkJJ3t1cmx9JyA9PiAkZnVsbFNp emUsDQoJCQkJCSd7dGh1bWJ1cmx9JyA9PiAkdGhlVGh1bWIsDQoJCQkJCSd7aW1hZ2VwYXRo fScgPT4gJHVybFBhdGgsDQoJCQkJCSd7aW1hZ2VkZWZ9JyA9PiBiYXNlbmFtZSgkZnVsbFNp emUpLA0KCQkJCQkne3RodW1iZGVmfScgPT4gYmFzZW5hbWUoJHRoZVRodW1iKSwNCgkJCQkJ J3thbHR9JyA9PiAkcm93WydhbHQnXSwNCgkJCQkJJ3t0aXRsZX0nID0+ICRyb3dbJ2NhcHRp b24nXSwNCgkJCQkJJ3tjYXB0aW9ufScgPT4gJHJvd1snY2FwdGlvbiddLA0KCQkJCQkne3Ro dW1id2lkdGh9JyA9PiAkdGh1bWJXaWR0aCwNCgkJCQkJJ3t0aHVtYmhlaWdodH0nID0+ICR0 aHVtYkhlaWdodCwNCgkJCQkJJ3t0aHVtYnd1bml0c30nID0+ICR0aHVtYldVbml0cywNCgkJ CQkJJ3t0aHVtYmh1bml0c30nID0+ICR0aHVtYkhVbml0cywNCgkJCQkJJ3t3aWR0aH0nID0+ ICRyb3dbJ3cnXSwNCgkJCQkJJ3toZWlnaHR9JyA9PiAkcm93WydoJ10sDQoJCQkJCSd7ZGF0 ZX0nID0+ICgoJGZvcm1hdCkgPyBzYWZlX3N0cmZ0aW1lKCRmb3JtYXQsIHN0cnRvdGltZSgk cm93WydkYXRlJ10pLCAkZ210LCAkbGFuZykgOiAkcm93WydkYXRlJ10pLA0KCQkJCQkne2dh bGxlcnlpZH0nID0+ICRnYWxsSUQsDQoJCQkJCSd7aW5kZXh9JyA9PiAkaWR4LA0KCQkJCQkn e2NvdW50ZXJ9JyA9PiAkY3RyLA0KCQkJCQkne3RodW1iaW5kZXh9JyA9PiAkdGh1bWJJZHgs DQoJCQkJCSd7dGh1bWJjb3VudGVyfScgPT4gJHRodW1iQ3RyLA0KCQkJCQkne3RvdGFsaW1h Z2VzfScgPT4gJG51bUltYWdlcywNCgkJCQkJJ3ttYXhpbWFnZXN9JyA9PiAkYWxsSW1hZ2Vz LA0KCQkJCSk7DQoNCgkJCS8vIEFkZCBhbnkgY3VzdG9tIGNvbHVtbnMNCgkJCWZvcmVhY2gg KCRleHRyYU1hcCBhcyAkZUNvbCA9PiAkZVZhbCkgew0KCQkJCSRyZXBsYWNlbWVudHNbJ3sn LiRlVmFsLid9J10gPSAkcm93WyRlQ29sXTsNCgkJCX0NCg0KCQkJLy8gQXBwZW5kIGFueSBj aGFuZ2VkIGl0ZW1zIHRoYXQgYXJlIHJlcXVpcmVkDQoJCQkkZW5kdGFnID0gZmFsc2U7DQoJ CQlmb3JlYWNoICgkcmVzZXRPcHRzIGFzICRyZXNldE9wdCA9PiAkcmVzZXRWYWwpIHsNCgkJ CQlpZiAoc3RycG9zKCRyZXNldE9wdCwgJ3NtZF9ldmVyeScpID09PSAwKSB7DQoJCQkJCSRp dGVyID0gZXhwbG9kZSgkcGFyYW1kZWxpbSwgJHJlc2V0T3B0KTsNCgkJCQkJJGl0ZXIgPSAo Y291bnQoJGl0ZXIpID4gMSkgPyAkaXRlclsxXSA6IDA7DQoJCQkJCWlmICgkdGh1bWJDdHIg JSAkaXRlciA9PT0gMCB8fCAkY3RyID09ICRudW1JbWFnZXMpIHsNCgkJCQkJCSRlbmR0YWcg PSB0cnVlOw0KCQkJCQl9DQoJCQkJfSBlbHNlIHsNCgkJCQkJJHJlcGxhY2VtZW50c1sneycu JGNoSWRlbnRpZmllci4kcGFyYW1kZWxpbS4kcmVzZXRPcHQuJ30nXSA9ICgkdGh1bWJJZHgg PT0gMCkgPyBkb1RhZygkcm93WyRyZXNldE9wdF0sICRvbmNoYW5nZXdyYXB0YWcsICRvbmNo YW5nZWNsYXNzKSA6ICcnOw0KCQkJCQkvLyBEbyBhIHNuZWFreSAoeXVrKSBsb29rYWhlYWQN CgkJCQkJaWYgKGlzc2V0KCRyc1ska2V5KzFdKSkgew0KCQkJCQkJaWYoJHJzWyRrZXkrMV1b JHJlc2V0T3B0XSAhPSAkcm93WyRyZXNldE9wdF0pIHsNCgkJCQkJCQkkZW5kdGFnID0gdHJ1 ZTsNCgkJCQkJCX0NCgkJCQkJfSBlbHNlIHsNCgkJCQkJCSRlbmR0YWcgPSB0cnVlOyAvLyBM YXN0IGltYWdlDQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoNCgkJCSRyZXBsYWNlbWVudHNbJ3tn cm91cHRhZ2VuZH0nXSA9ICgkZ3JvdXB0YWcgJiYgJGVuZHRhZykgPyAnPC8nIC4gJGdyb3Vw dGFnIC4gJz4nIDogJyc7DQoJCQkkcmVwbGFjZW1lbnRzWyd7Z3JvdXB0YWdzdGFydH0nXSA9 ICgkZ3JvdXB0YWcgJiYgJHRodW1iSWR4ID09IDApID8gJzwnIC4gJGdyb3VwdGFnIC4gKCgk Z3JvdXBjbGFzcykgPyAnIGNsYXNzPSInLiRncm91cGNsYXNzLiciJyA6ICcnKSAuICc+JyA6 ICcnOw0KDQoJCQkvLyBBcHBlbmQgYW55IGNvbWJvcw0KCQkJZm9yZWFjaCAoJGNvbWJvcyBh cyAkZGVmTmFtZSA9PiAkbmV3RGVmKSB7DQoJCQkJaWYgKCFhcnJheV9rZXlfZXhpc3RzKCRk ZWZOYW1lLCAkcmVwbGFjZW1lbnRzKSkgew0KCQkJCQkkcmVwbGFjZW1lbnRzWyRkZWZOYW1l XSA9IHN0cnRyKCRuZXdEZWYsICRyZXBsYWNlbWVudHMpOw0KCQkJCX0NCgkJCX0NCg0KCQkJ Ly8gU29sb3MgYXJlIGl0ZW1zIGluIHRoZSBvdXRwdXQgZm9ybSB0aGF0IHJlcXVpcmUgZGV0 YWlscyBmcm9tIGEgc3BlY2lmaWMgcm93LiBVc2VmdWwgb25seSBpbiBjb2xsYXRpb24NCgkJ CS8vIG1vZGUsIHRoZXkgYXJlIGFkZGVkIHRvIHRoZSByZXBsYWNlbWVudHMgYXJyYXkgb24g YW4gYXMtbmVlZGVkIGJhc2lzIHRvIHNhdmUgc3BhY2UvdGltZQ0KCQkJJHNvbG9SRSA9ICcv XHsoW2EtejAtOV0rKSMnLiRjdHIuJ1x9Lyc7DQoJCQkkbnVtU29sb3MgPSBwcmVnX21hdGNo X2FsbCgkc29sb1JFLCAkdGhpbmcsICRzb2xvcyk7DQoJCQlmb3IgKCRzb2xvQ3RyID0gMDsg JHNvbG9DdHIgPCAkbnVtU29sb3M7ICRzb2xvQ3RyKyspIHsNCgkJCQkkZmllbGRuYW1lID0g J3snLiRzb2xvc1sxXVskc29sb0N0cl0uJyMnLiRjdHIuJ30nOw0KCQkJCSRncmFiZmllbGQg PSAneycuJHNvbG9zWzFdWyRzb2xvQ3RyXS4nfSc7DQoJCQkJJHJlcGxhY2VtZW50c1skZmll bGRuYW1lXSA9ICRyZXBsYWNlbWVudHNbJGdyYWJmaWVsZF07DQoJCQl9DQoNCgkJCS8vIFBl cmZvcm0gZXNjYXBpbmcgb24gdGhlIHJlcGxhY2VtZW50cy4NCgkJCS8vIE5vdGUgdGhlIHJl cGFnZW1lbnRzIGhhdmUgYWxyZWFkeSBiZWVuIGVzY2FwZWQgc28gd2hlbi9pZiB0aGV5IGFy ZSBjb21iaW5lZCB3aXRoIHRoZSByZXBsYWNlbWVudHMsDQoJCQkvLyB0aGUgZXNjYXBpbmcg aXMgbm90IGRvbmUgdHdpY2UNCgkJCWlmICgkZXNjYXBlcykgew0KCQkJCWZvcmVhY2ggKCRy ZXBsYWNlbWVudHMgYXMgJGRlZk5hbWUgPT4gJGRlZlZhbCkgew0KCQkJCQlpZiAoaW5fYXJy YXkodHJpbSgkZGVmTmFtZSwgInt9IiksICRlc2NhcGVzKSkgew0KCQkJCQkJJHJlcGxhY2Vt ZW50c1skZGVmTmFtZV0gPSBodG1sc3BlY2lhbGNoYXJzKCRkZWZWYWwpOw0KCQkJCQl9DQoJ CQkJfQ0KCQkJfQ0KDQoJCQkvLyBBZGQgdGhlIG5hdmlnYXRpb24gaXRlbXMgaWYgdGhleSdy ZSBkZWZpbmVkDQoJCQlpZiAoY291bnQoJHJlcGFnZW1lbnRzKSA+IDApIHsNCgkJCQkkcmVw bGFjZW1lbnRzID0gYXJyYXlfbWVyZ2UoJHJlcGFnZW1lbnRzLCAkcmVwbGFjZW1lbnRzKTsN CgkJCX0NCg0KCQkJLy8gSXMgYSB0aHVtYi90ZXh0IG9iamVjdCByZXF1aXJlZCB0aGlzIHRp bWU/DQoJCQkkb2JqZWN0ID0gJyc7DQoJCQlpZiAoJHRodW1iSWR4ID49ICR0aHVtYm9mZnNl dCAmJiAkdGh1bWJJZHggPCAkdGh1bWJvZmZzZXQrJHRodW1ibGltaXQpIHsNCgkJCQkkb2Jq ZWN0ID0gKCRvYmplY3Rmb3JtKSA/IHBhcnNlKHN0cnRyKCRvYmplY3Rmb3JtLCAkcmVwbGFj ZW1lbnRzKSkgOiAoKCR0ZXh0KSA/ICR0ZXh0IDogJzxpbWcgc3JjPSInLiR0aGVUaHVtYi4n IicgLigoJHJvd1snYWx0J10pID8gJyBhbHQ9IicuJHJvd1snYWx0J10uJyInIDogJycpIC4o KCR0aHVtYldpZHRoKSA/ICcgd2lkdGg9IicuJHRodW1iV2lkdGguJHRodW1iV1VuaXRzLici JyA6ICcnKSAuKCgkdGh1bWJIZWlnaHQpID8gJyBoZWlnaHQ9IicuJHRodW1iSGVpZ2h0LiR0 aHVtYkhVbml0cy4nIicgOiAnJykgLicgLz4nKTsNCgkJCX0NCgkJCSRyZXBsYWNlbWVudHNb J3tvYmplY3R9J10gPSAkb2JqZWN0Ow0KDQoJCQlpZiAoJGRlYnVnID4gMCkgew0KCQkJCWVj aG8gIisrIFJFUExBQ0VNRU5UUyA6IElNQUdFICIuJGN0ci4iICsrIjsNCgkJCQlkbXAoJHJl cGxhY2VtZW50cyk7DQoJCQl9DQoNCgkJCS8vIENoZWNrIGlmIGNvdW50Zm9ybSBpcyB0byBi ZSBjYWxsZWQNCgkJCSRjb3VudHByZSA9ICRjb3VudHBvc3QgPSBhcnJheSgpOw0KCQkJaWYg KCRjb3VudGluZykgew0KCQkJCWZvcmVhY2ggKCRjb3VudGZvcm0gYXMgJGNvdW50bGlzdCkg ew0KCQkJCQkkcG9zb3ZlciA9IGFycmF5KCk7DQoJCQkJCSRjb3VudGxpc3QgPSBzdHJ0cigk Y291bnRsaXN0LCAkcmVwbGFjZW1lbnRzKTsgLy8gUmVwbGFjZSBhbnkge30gdmFycyB3aXRo IHRoZWlyIHJlYWwgdmFsdWVzDQoJCQkJCSRjb3VudGxpc3QgPSBkb19saXN0KCRjb3VudGxp c3QsICRwYXJhbWRlbGltKTsNCgkJCQkJaWYgKCRkcG9zPWFycmF5X3NlYXJjaCgnc21kX2Fi b3ZlJywgJGNvdW50bGlzdCkpIHsNCgkJCQkJCSRwb3NvdmVyW10gPSAiYWJvdmUiOw0KCQkJ CQkJdW5zZXQoJGNvdW50bGlzdFskZHBvc10pOw0KCQkJCQl9DQoJCQkJCWlmICgkZHBvcz1h cnJheV9zZWFyY2goJ3NtZF9iZWxvdycsICRjb3VudGxpc3QpKSB7DQoJCQkJCQkkcG9zb3Zl cltdID0gImJlbG93IjsNCgkJCQkJCXVuc2V0KCRjb3VudGxpc3RbJGRwb3NdKTsNCgkJCQkJ fQ0KCQkJCQkkY291bnRsaXN0ID0gYXJyYXlfbWVyZ2UoJGNvdW50bGlzdCk7IC8vIHJlLWlu ZGV4DQoNCgkJCQkJJHBvc292ZXIgPSAoZW1wdHkoJHBvc292ZXIpKSA/ICRjb3VudHBvc25z IDogJHBvc292ZXI7DQoJCQkJCSRkaXZieSA9IGZhbHNlOw0KCQkJCQlpZiAoJGNvdW50bGlz dFswXSA9PSAnc21kX2V2ZXJ5Jykgew0KCQkJCQkJJGRpdmJ5ID0gdHJ1ZTsNCgkJCQkJCWFy cmF5X3NoaWZ0KCRjb3VudGxpc3QpOw0KCQkJCQl9DQoJCQkJCSRudW1mb3JtcyA9IGNvdW50 KCRjb3VudGxpc3QpOw0KCQkJCQkkY2FsbGZvcm0gPSBmZXRjaF9mb3JtKCRjb3VudGxpc3Rb JG51bWZvcm1zLTFdKTsNCgkJCQkJdW5zZXQoJGNvdW50bGlzdFskbnVtZm9ybXMtMV0pOw0K CQkJCQkkb3Jsb2dpYyA9ICRhbmRsb2dpYyA9IGFycmF5KCk7DQoJCQkJCWZvcmVhY2ggKCRj b3VudGxpc3QgYXMgJGN1c3Rjb3VudCkgew0KCQkJCQkJJHNob3d2YWwgPSAoc3RycG9zKCRj dXN0Y291bnQsICIhIikgPT09IDApID8gZmFsc2UgOiB0cnVlOy8vIE5lZ2F0aXZlIGxvZ2lj IHJlcXVpcmVkDQoJCQkJCQkkY3VzdGNvdW50ID0gc3RyX3JlcGxhY2UoJyEnLCAnJywgJGN1 c3Rjb3VudCk7DQoJCQkJCQlpZiAoJHNob3d2YWwpIHsNCgkJCQkJCQkkb3Jsb2dpY1tdID0g ZW1wdHkoJGN1c3Rjb3VudCkgfHwgKCgkZGl2YnkpID8gKCgkY3RyICUgJGN1c3Rjb3VudCA9 PT0gMCkgPyB0cnVlIDogZmFsc2UpIDogKCgkY3VzdGNvdW50ID09ICRjdHIpID8gdHJ1ZSA6 IGZhbHNlKSk7DQoJCQkJCQl9IGVsc2Ugew0KCQkJCQkJCSRhbmRsb2dpY1tdID0gKCRjdXN0 Y291bnQgPT0gJGN0cikgPyBmYWxzZSA6IHRydWU7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQkJ aWYgKGluX2FycmF5KCcxJywgJG9ybG9naWMpICYmICFpbl9hcnJheSgnMCcsICRhbmRsb2dp YykpIHsNCgkJCQkJCWlmIChpbl9hcnJheSgiYWJvdmUiLCAkcG9zb3ZlcikpIHsNCgkJCQkJ CQkkY291bnRwcmVbXSA9IHBhcnNlKHN0cnRyKCRjYWxsZm9ybSwgJHJlcGxhY2VtZW50cykp Ow0KCQkJCQkJfQ0KCQkJCQkJaWYgKGluX2FycmF5KCJiZWxvdyIsICRwb3NvdmVyKSkgew0K CQkJCQkJCSRjb3VudHBvc3RbXSA9IHBhcnNlKHN0cnRyKCRjYWxsZm9ybSwgJHJlcGxhY2Vt ZW50cykpOw0KCQkJCQkJfQ0KCQkJCQl9DQogICAgICAgICAgICB9DQoJCQl9DQoNCgkJCWlm ICgkZGVidWcgPiAwICYmICgkY291bnRwcmUgfHwgJGNvdW50cG9zdCkpIHsNCgkJCQllY2hv ICIrKyBDT1VOVCBGT1JNIFRSSUdHRVJFRCArKyI7DQoJCQkJaWYgKCRjb3VudHByZSkgew0K CQkJCQlkbXAoJGNvdW50cHJlKTsNCgkJCQl9DQoJCQkJaWYgKCRjb3VudHBvc3QpIHsNCgkJ CQkJZG1wKCRjb3VudHBvc3QpOw0KCQkJCX0NCgkJCX0NCg0KCQkJLy8gSW4gY29sbGF0ZSBt b2RlIHRoZSBmb3JtIGlzIG9ubHkgcGFyc2VkIGF0IHRoZSBlbmQ6IGJ1aWxkIGEgY29sbG9z YWwgbXVsdGktZGltZW5zaW9uIGFycmF5IG9mIGFsbCBpdGVtcyBoZXJlDQoJCQlpZiAoJGNv bGxhdGUpIHsNCgkJCQlmb3JlYWNoICgkcmVwbGFjZW1lbnRzIGFzICRkZWZOYW1lID0+ICRk ZWZWYWwpIHsNCgkJCQkJJGNvbGxhdGlvbnNbJGRlZk5hbWVdW10gPSAkZGVmVmFsOw0KCQkJ CX0NCgkJCX0gZWxzZSB7DQoJCQkJaWYgKCRjb3VudGluZykgew0KCQkJCQkkdGh1bWJvdXQg PSBhcnJheV9tZXJnZSgkdGh1bWJvdXQsICRjb3VudHByZSk7DQoJCQkJfQ0KDQoJCQkJJHRo dW1ib3V0W10gPSBwYXJzZShzdHJ0cigkdGhpbmcsICRyZXBsYWNlbWVudHMpKTsNCg0KCQkJ CWlmICgkY291bnRpbmcpIHsNCgkJCQkJJHRodW1ib3V0ID0gYXJyYXlfbWVyZ2UoJHRodW1i b3V0LCAkY291bnRwb3N0KTsNCgkJCQl9DQoJCQl9DQoNCgkJCS8vIEtlZXAgdHJhY2sgb2Yg dGhlIGN1cnJlbnQgdmFsdWVzIHNvIHdlIGtub3cgaWYgdGhleSBjaGFuZ2UgbmV4dCB0aW1l DQoJCQlmb3JlYWNoICgkcmVzZXRPcHRzIGFzICRyZXNldE9wdCA9PiAkcmVzZXRWYWwpIHsN CgkJCQlpZiAoc3RycG9zKCRyZXNldE9wdCwgJ3NtZF9ldmVyeScpID09PSBmYWxzZSkgew0K CQkJCQkkcmVzZXRPcHRzWyRyZXNldE9wdF0gPSAkcm93WyRyZXNldE9wdF07DQoJCQkJfSBl bHNlIHsNCgkJCQkJJHJlc2V0T3B0c1skcmVzZXRPcHRdID0gJHRodW1iQ3RyOw0KCQkJCX0N CgkJCX0NCgkJCSR0aHVtYklkeCsrOw0KCQkJJHRodW1iQ3RyKys7DQoJCQkkaWR4Kys7DQoJ CQkkY3RyKys7DQoJCX0NCgkJaWYgKCRjb2xsYXRlKSB7DQoJCQlmb3JlYWNoICgkY29sbGF0 aW9ucyBhcyAkaXRlbSA9PiAkbGlzdCkgew0KCQkJCS8vIFF1b3RlIHRoZSBsaXN0cyBpZiBy ZXF1aXJlZA0KCQkJCSRsaXN0ID0gKGVtcHR5KCRkYmxRdW90ZSkgfHwgaW5fYXJyYXkoJGl0 ZW0sICRkYmxRdW90ZSkpID8gZG9BcnJheSgkbGlzdCwgJ3NtZF9kb0RibFF1b3RlJykgOiAk bGlzdDsNCgkJCQkkbGlzdCA9IChlbXB0eSgkc2dsUXVvdGUpIHx8IGluX2FycmF5KCRpdGVt LCAkc2dsUXVvdGUpKSA/IGRvQXJyYXkoJGxpc3QsICdkb1F1b3RlJykgOiAkbGlzdDsNCgkJ CQkkY29sbGF0aW9uc1skaXRlbV0gPSBpbXBsb2RlKCRjb2xsYXRlZGVsaW0sICRsaXN0KTsN CgkJCX0NCgkJCWlmICgkZGVidWcgPiAwKSB7DQoJCQkJZWNobyAiKysgQ09MTEFUSU9OUyAr KyI7DQoJCQkJZG1wKCRjb2xsYXRpb25zKTsNCgkJCX0NCgkJCSR0aHVtYm91dFtdID0gcGFy c2Uoc3RydHIoJHRoaW5nLCAkY29sbGF0aW9ucykpOw0KCQl9DQoNCgkJLy8gVGFjayBvbiB0 aGUgcGFnaW5nIGZyb20gZWFybGllciBpZiBpdCdzIHRvIGdvIGFmdGVyd2FyZHMNCgkJaWYg KCgkbGltaXQgPiAwKSAmJiAkcGFnaW5nKSB7DQoJCQlpZiAoJGRlYnVnID4gMCkgew0KCQkJ CWVjaG8gIisrIFBBR0lORyBSRVBMQUNFTUVOVFMgKysiOw0KCQkJCWRtcCgkcmVwYWdlbWVu dHMpOw0KCQkJfQ0KCQl9DQoJfQ0KDQoJLy8gQWRkIHRoZSBwYWdpbmcgdG8gdGhlIG91dHB1 dCBpZiBpdCdzIHRvIGdvIGFib3ZlIHRoZSB0aHVtYnMNCglpZiAoKCRsaW1pdCA+IDApICYm ICRwYWdpbmcpIHsNCgkJaWYgKGluX2FycmF5KCJhYm92ZSIsICRwYWdlb3V0KSkgew0KCQkJ JG91dFtdID0gZG9XcmFwKCRuYXZvdXQsICRuYXZ3cmFwdGFnLCAnJywgJG5hdmNsYXNzKTsN CgkJfQ0KCX0NCg0KCSRvdXRbXSA9IGRvV3JhcCgkdGh1bWJvdXQsICR3cmFwdGFnLCAkYnJl YWssICRjbGFzcywgJycsICcnLCAnJywgJGh0bWxfaWQpOw0KDQoJaWYgKCgkbGltaXQgPiAw KSAmJiAkcGFnaW5nKSB7DQoJCWlmIChpbl9hcnJheSgiYmVsb3ciLCAkcGFnZW91dCkpIHsN CgkJCSRvdXRbXSA9IGRvV3JhcCgkbmF2b3V0LCAkbmF2d3JhcHRhZywgJycsICRuYXZjbGFz cyk7DQoJCX0NCgl9DQoNCglpZiAoJGRlYnVnID4gMikgew0KCQllY2hvICIrKyBGSU5BTCBP VVRQVVQgKysiOw0KCQlkbXAoJG91dCk7DQoJfQ0KDQoJcmV0dXJuIGpvaW4oIiAiLCAkb3V0 KTsNCn0NCg0KLy8gV29yayBvdXQgd2hpY2ggcGFnZSB0aGlzIGdhbGxlcnkgaXMgb24gYW5k IHJldHVybiB0aGUgcmVsZXZhbnQgaW5mbw0KZnVuY3Rpb24gc21kX2dldFBhZ2UoJHJzLCAk Z2FsbElELCAkbGltaXQsICRvZmZzZXQsICRwYWdpbmcpIHsNCgkkbnVtVGh1bXMgPSBjb3Vu dCgkcnMpIC0gJG9mZnNldDsNCglpZiAoKCRsaW1pdCA+IDApICYmICRwYWdpbmcpIHsNCgkJ JG51bVBhZ2VzID0gKCRudW1UaHVtcyA+IDApID8gY2VpbCgkbnVtVGh1bXMvJGxpbWl0KSA6 IDE7DQoJCSR0aHVtUGFnZSA9ICghZ3BzKCRnYWxsSUQpKSA/IDEgOiBncHMoJGdhbGxJRCk7 DQoJCSRvZmZzZXQgPSAoKCR0aHVtUGFnZSAtIDEpICogJGxpbWl0KSArICRvZmZzZXQ7DQoJ fSBlbHNlIHsNCgkJLy8gTm8gcGFnaW5nIHJlcXVpcmVkDQoJCSRudW1QYWdlcyA9IDE7DQoJ CSR0aHVtUGFnZSA9IDE7DQoJfQ0KCXJldHVybiBhcnJheSgkbnVtVGh1bXMsICRudW1QYWdl cywgJHRodW1QYWdlLCAkb2Zmc2V0KTsNCn0NCg0KLy8gUmVhZCB0aGUgZ2l2ZW4gZGVsaW1p dGVkIGRpcmVjdG9yaWVzIGFuZCBnZXQgYWxsIGZpbGVzIHRoYXQgbWF0Y2guDQovLyBHbyBk b3duIGFzIG1hbnkgc3ViZGlyIGxldmVscyBhcyBnaXZlbiBpbiB0aGUgJHN1YiBwYXJhbWV0 ZXINCmZ1bmN0aW9uIHNtZF9kb0RpcmVjdG9yeSgkbHN0LCAkbHZsPTAsICRzdWI9MCwgJG1h dGNoPSIiLCAkZGxtPSIsIiwgJHNwYz0xLCAkY3RyPTApIHsNCglsaXN0KCRkaXJpbmMsICRk aXJleGMpID0gc21kX2RvTGlzdCgkbHN0LCBmYWxzZSwgJHN1YiwgZmFsc2UsICRkbG0sICRz cGMpOw0KCWxpc3QoJG1hdGNoaW5jLCAkbWF0Y2hleGMpID0gc21kX2RvTGlzdCgkbWF0Y2gs IGZhbHNlLCAnJywgZmFsc2UsICRkbG0sICRzcGMpOw0KCSRtYXRjaGluYyA9ICIuKiIgLigo JG1hdGNoaW5jKSA/ICIoIiAuaW1wbG9kZSgifCIsJG1hdGNoaW5jKS4iKSsuKiIgOiAiIik7 DQoJJG1hdGNoZXhjID0gKCRtYXRjaGV4YykgPyAiLiooIiAuaW1wbG9kZSgifCIsJG1hdGNo ZXhjKS4iKSsuKiIgOiAic21kX2dscnlfIi5tdF9yYW5kKCk7DQoNCgkkc3ViID0gKGVtcHR5 KCRzdWIpKSA/IDAgOiAkc3ViOw0KCSRzdWIgPSAoc3RydG9sb3dlcigkc3ViKT09ImFsbCIp ID8gOTk5OTkgOiAkc3ViOw0KCSRmaWxlTGlzdCA9IGFycmF5KCk7DQoJZm9yZWFjaCAoJGRp cmluYyBhcyAkZGlyKSB7DQoJCWlmICgkaGFuZGxlID0gQG9wZW5kaXIoJGRpcikpIHsNCgkJ CXdoaWxlICgoJGZpbGUgPSBAcmVhZGRpcigkaGFuZGxlKSkgIT09IGZhbHNlKSB7DQoJCQkJ JGZ1bGxwYXRoID0gJGRpci5EUy4kZmlsZTsNCgkJCQlpZiAocHJlZ19tYXRjaCgiLyIuJG1h dGNoaW5jLiIvIiwgJGZ1bGxwYXRoKSAmJiAhcHJlZ19tYXRjaCgiLyIuJG1hdGNoZXhjLiIv IiwgJGZ1bGxwYXRoKSkgew0KCQkJCQlpZiAoaXNfZGlyKCRmdWxscGF0aCkpIHsNCgkJCQkJ CWlmICgoJGZpbGUgPT0gIi4iKSB8fCAoJGZpbGU9PSAiLi4iKSB8fCAoaW5fYXJyYXkoJGZp bGUsICRkaXJleGMpKSB8fCAoJGx2bCA+PSAkc3ViKSkgew0KCQkJCQkJCWNvbnRpbnVlOw0K CQkJCQkJfSBlbHNlIHsNCgkJCQkJCQkvLyBSZWN1cnNlIHRoZSBzdWJkaXIuIE5vdGUgdGhh dCB0aGUgJyEnIGlzIHRlbXBvcmFyaWx5IGFkZGVkIGJhY2sgdG8gZWFjaCBkaXJleGMgaXRl bQ0KCQkJCQkJCSR0bXAgPSAkZGlyZXhjOyAvLyBEb24ndCBvdmVyd3JpdGUgdGhlIG9yaWdp bmFsIGFycmF5DQoJCQkJCQkJYXJyYXlfdW5zaGlmdCgkdG1wLCAkZnVsbHBhdGgpOw0KCQkJ CQkJCSRzdWJGaWxlcyA9IHNtZF9kb0RpcmVjdG9yeShpbXBsb2RlKCRkbG0uIiEiLCAkdG1w KSwgJGx2bCsxLCAkc3ViLCAkbWF0Y2gsICRkbG0sICRzcGMsICRjdHIpOw0KCQkJCQkJCSRm aWxlTGlzdCA9IGFycmF5X21lcmdlKCRmaWxlTGlzdCwgJHN1YkZpbGVzKTsNCgkJCQkJCQkk Y3RyICs9IGNvdW50KCRzdWJGaWxlcyk7DQoJCQkJCQkJY29udGludWU7DQoJCQkJCQl9DQoJ CQkJCX0gZWxzZSB7DQoJCQkJCQkkZmlsZXN0YXQgPSBzdGF0KCRmdWxscGF0aCk7DQoJCQkJ CQkkaW1nc2l6ZSA9IGdldGltYWdlc2l6ZSgkZnVsbHBhdGgpOw0KCQkJCQkJJGZpbGVMaXN0 WyRjdHJdWydwYXRoJ10gPSAkZGlyOw0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWyduYW1lJ10g PSBiYXNlbmFtZSgkZnVsbHBhdGgpOw0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWydpZCddID0g cHJlZ19yZXBsYWNlKCcvXC4uKyQvJywgJycsICRmaWxlKTsNCgkJCQkJCSRmaWxlTGlzdFsk Y3RyXVsnYWx0J10gPSAnJzsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnY2FwdGlvbiddID0g Jyc7DQoJCQkJCQkkcGFydHMgPSBleHBsb2RlKERTLCAkZGlyKTsNCgkJCQkJCSRmaWxlTGlz dFskY3RyXVsnY2F0ZWdvcnknXSA9IChjb3VudCgkcGFydHMpID4gMSkgPyBlbmQoJHBhcnRz KSA6ICcnOw0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWydhdXRob3InXSA9IHN0cnZhbCgkZmls ZXN0YXRbJ3VpZCddKTsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnZGF0ZSddID0gc3RyZnRp bWUoIiVZLSVtLSVkICVIOiVNOiVTIiwgJGZpbGVzdGF0WydjdGltZSddKTsNCgkJCQkJCSRw YXJ0cyA9IGV4cGxvZGUoIi4iLCAkZmlsZSk7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ2V4 dCddID0gKGNvdW50KCRwYXJ0cykgPiAxKSA/ICIuIi5lbmQoJHBhcnRzKSA6ICcnOw0KCQkJ CQkJJGZpbGVMaXN0WyRjdHJdWyd3J10gPSAoaXNfYXJyYXkoJGltZ3NpemUpKSA/IHN0cnZh bCgkaW1nc2l6ZVswXSkgOiAnJzsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnaCddID0gKGlz X2FycmF5KCRpbWdzaXplKSkgPyBzdHJ2YWwoJGltZ3NpemVbMV0pIDogJyc7DQoJCQkJCX0N CgkJCQkJJGN0cisrOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCQlpZiAoJGhhbmRsZSkgew0KCQkJ QGNsb3NlZGlyKCRoYW5kbGUpOw0KCQl9DQoJfQ0KCXJldHVybiAkZmlsZUxpc3Q7DQp9Ijtz OjQ6InR5cGUiO3M6MToiMCI7czo1OiJvcmRlciI7czoxOiI1IjtzOjQ6ImhlbHAiO3M6NTM4 MDc6Igk8cD48ZGl2IGlkPSJzbWRfaGVscCI+PC9wPgoKCTxoMSBpZD0idG9wIj5zbWRfZ2Fs bGVyeTwvaDE+CgoJPGgyIGlkPSJmZWF0dXJlcyI+RmVhdHVyZXM8L2gyPgoKCTx1bD4KCQk8 bGk+U3VwcG9ydHMgYWxsIGN1cnJlbnQgYW5kIChwcm9iYWJseSkgZnV0dXJlIGdhbGxlcnkg c2NyaXB0cyBpbmNsdWRpbmcgdGh1bWJwb3AsIHJvbGxvdmVyLCB0b29sdGlwLCBsaWdodGJv eCwgbGl0ZWJveCwgc2xpbWJveCwgbW9vbmJveCwgdGhpY2tib3gsIHNsaWRlc2hvdywgZmFu Y3l6b29tLCBldGM8L2xpPgoJCTxsaT5QdWxsIGltYWdlcyBmcm9tIHRoZSA8c3BhbiBjbGFz cz0iY2FwcyI+VFhQPC9zcGFuPiBkYXRhYmFzZSAob3Igb3B0aW9uYWxseSBhIGxpc3Qgb2Yg ZGlyZWN0b3JpZXMpIHRoYXQgbWF0Y2ggY2F0ZWdvcmllcyBvciBJRHM8L2xpPgoJCTxsaT5V c2UgYXJ0aWNsZSBmaWVsZHMgdG8gaG9sZCBsaXN0cyBvZiBpbWFnZSBjYXRlZ29yaWVzL0lE cyBmb3IgYXJ0aWNsZS1zcGVjaWZpYyBnYWxsZXJpZXM8L2xpPgoJCTxsaT5NdWx0aS1sZXZl bCBzdWItY2F0ZWdvcnkgc3VwcG9ydDwvbGk+CgkJPGxpPkdhbGxlcnkgbGF5b3V0IGlzIGRl ZmluZWQgaW4gYSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBmb3JtL2NvbnRhaW5l cjwvbGk+CgkJPGxpPkRpcmVjdC1hY2Nlc3MgcGFnaW5hdGlvbiBpcyBzdXBwb3J0ZWQgYW5k IHRoZSBsYXlvdXQgb2YgcGFnaW5nIGZlYXR1cmVzIGNhbiBiZSBjb250cm9sbGVkIGJ5IGEg c2Vjb25kIGZvcm08L2xpPgoJCTxsaT5Vc2VzIGEgdGFnLXJlcGxhY2VtZW50IHN5c3RlbSBs aWtlIHRoZSB3ZXRfZm9yX2VhY2hfaW1hZ2UgcGx1Z2luPC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImNhcHMiPk1MUDwvc3Bhbj4gc3VwcG9ydDwvbGk+Cgk8L3VsPgoKCTxoMiBpZD0iYXV0 aG9yIj5BdXRob3I8L2gyPgoKCTxwPjxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9j b21tZW50Rm9ybSI+U3RlZiBEYXdzb248L2E+LiBGb3Igb3RoZXIgc29mdHdhcmUgYnkgbWUs IG9yIHRvIG1ha2UgYSBkb25hdGlvbiwgc2VlIHRoZSA8YSBocmVmPSJodHRwOi8vc3RlZmRh d3Nvbi5jb20vc3ciPnNvZnR3YXJlIHBhZ2U8L2E+LjwvcD4KCgk8aDIgaWQ9Imluc3RhbGwi Pkluc3RhbGxhdGlvbiAvIFVuaW5zdGFsbGF0aW9uPC9oMj4KCgk8cCBjbGFzcz0icmVxdWly ZWQiPlJlcXVpcmVzIHNtZF9saWIgdjAuMzQrPC9wPgoKCTxwPkRvd25sb2FkIHRoZSBwbHVn aW4gZnJvbSBlaXRoZXIgPGEgaHJlZj0iaHR0cDovL3RleHRwYXR0ZXJuLm9yZy9wbHVnaW5z Lzk1Ny9zbWRfZ2FsbGVyeSI+dGV4dHBhdHRlcm4ub3JnPC9hPiwgb3IgdGhlIHNvZnR3YXJl IHBhZ2UgYWJvdmUsIHBhc3RlIHRoZSBjb2RlIGludG8gdGhlIDxzcGFuIGNsYXNzPSJjYXBz Ij5UWFA8L3NwYW4+IEFkbWluIC0mZ3Q7IFBsdWdpbnMgcGFuZSwgaW5zdGFsbCBhbmQgZW5h YmxlIHRoZSBwbHVnaW4uIFZpc2l0IHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBh dHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/aWQ9MjY0ODIiPmZvcnVtIHRocmVhZDwvYT4gZm9y IG1vcmUgaW5mbyBvciB0byByZXBvcnQgb24gdGhlIHN1Y2Nlc3Mgb3Igb3RoZXJ3aXNlIG9m IHRoZSBwbHVnaW4uPC9wPgoKCTxwPlRvIHJlbW92ZSB0aGUgcGx1Z2luLCBzaW1wbHkgZGVs ZXRlIGl0IGZyb20gdGhlIEFkbWluLSZndDtQbHVnaW5zIHRhYi4gSWYgbm8gb3RoZXIgcGx1 Z2lucyBhcmUgdXNpbmcgc21kX2xpYiB5b3UgbWF5IHNhZmVseSBkZWxldGUgdGhhdCB0b28u PC9wPgoKCTxoMiBpZD0idXNhZ2UiPk92ZXJ2aWV3PC9oMj4KCgk8cD5UaGUgZ2VuZXJhbCBp ZGVhIGlzIHRoYXQgdGhpcyBwbHVnaW4gYWN0cyBhcyBhIGZsZXhpYmxlIGltYWdlIGZpbHRl cjsgbm90aGluZyBtb3JlLiBUaGUgcGx1Z2luIG9wdGlvbnMgZ292ZXJuIHdoaWNoIGltYWdl cyBhcmUgcHVsbGVkIG91dCBvZiB0aGUgZGF0YWJhc2UgYW5kIHRoZXkgYXJlIHNvcnRlZCBp bnRvIHdoYXRldmVyIG9yZGVyIHlvdSBsaWtlLjwvcD4KCgk8cD5BZnRlciB0aGF0LCBlYWNo IGltYWdlICYjODIxMjsgb25lIGJ5IG9uZSAmIzgyMTI7IGhhcyBhbGwgaXRzIGF0dHJpYnV0 ZXMgcGFzc2VkIHRocm91Z2ggdGhlIGNvbnRhaW5lciBvciA8Y29kZT5mb3JtPC9jb2RlPiBv ZiB5b3VyIGNob2ljZTsgeW91IHNpbXBseSBjaG9vc2UgdG8gZGlzcGxheSB3aGljaGV2ZXIg aW1hZ2UgYXR0cmlidXRlcyB5b3UgbGlrZSBpbiB0aGlzIGZvcm0uIFRoaXMgbWVhbnMgYW55 IGltYWdlIGF0dHJpYnV0ZXMgY2FuIGJlICYjODIyMDtpbmplY3RlZCYjODIyMTsgZGlyZWN0 bHkgaW50byBhbnkgbWFya3VwOyBpdCBjb3VsZCBiZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQ PC9zcGFuPiB0YWdzLCBpdCBjb3VsZCBiZSBjb250ZW50LCBpdCBjb3VsZCBiZSBqYXZhc2Ny aXB0LCBvciA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPjsgYW55dGhpbmcuPC9wPgoK CTxwPlBhZ2luYXRpb24gd29ya3MgdGhlIHNhbWUgd2F5LCBhbGxvd2luZyB5b3UgdG8gc3Bl Y2lmeSBob3cgdXNlcnMgY2FuIHN0ZXAgdGhyb3VnaCB5b3VyIGltYWdlIGdhbGxlcmllcy48 L3A+CgoJPHA+VGhlcmUgaXMgYWxzbyBhIHNwZWNpYWwgbW9kZSBjYWxsZWQgJiM4MjIwO2Nv bGxhdGUmIzgyMjE7IHRoYXQgYWxsb3dzIHlvdSB0byBjb2xsZWN0IGFsbCBpbWFnZSBhdHRy aWJ1dGVzIHRvZ2V0aGVyIGludG8gYSBzZXJpZXMgb2YgYmlnIGxvbmcgbGlzdHMgPGVtPndp dGhvdXQ8L2VtPiBjYWxsaW5nIHRoZSBmb3JtIGV2ZXJ5IHRpbWUuIFRoZSBmb3JtL2NvbnRh aW5lciBpcyB0aGVuIG9ubHkgcHJvY2Vzc2VkIG9uY2UgYXQgdGhlIGVuZC48L3A+CgoJPHA+ QmV0d2VlbiB0aGVzZSB0d28gbW9kZXMgeW91IDxlbT5zaG91bGQ8L2VtPiBiZSBhYmxlIHRv IHJlYWxpc2UgYW55IGdhbGxlcnlpbmcgc29sdXRpb247IG5vdyBhbmQgaW4gZnV0dXJlLjwv cD4KCgk8aDIgY2xhc3M9InRhZyAiIGlkPSJzbWRfZ2FsbGVyeSI+c21kX2dhbGxlcnk8L2gy PgoKCTxwIGNsYXNzPSJ0YWctc3VtbWFyeSI+UGxhY2Ugb25lIG9yIG1vcmUgc21kX2dhbGxl cnkgdGFncyBpbiBhbnkgYXJ0aWNsZSwgcGFnZSBvciBmb3JtLCBhbmQgc3VwcGx5IGFueSBv ZiB0aGUgZm9sbG93aW5nIG9wdGlvbnMgdG8gY29uZmlndXJlIGl0LjwvcD4KCgk8aDMgaWQ9 ImF0dHJpYnV0ZXMiPkF0dHJpYnV0ZXM8L2gzPgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPmlkPC9zcGFuPiA6IGxpc3Qgb2YgaW1hZ2UgSURzIHRvIGRpc3BsYXkuIE1heSBi ZSBpbnRlZ2VycyBvciByYW5nZXMsIGZvciBleGFtcGxlIDxjb2RlPmlkPSZxdW90OzUsIDQy LCA4LTExJnF1b3Q7PC9jb2RlPiB3b3VsZCBncmFiIGltYWdlcyA1LCA4LCA5LCAxMCwgMTEg YW5kIDQyLiBVc2UgJiM4MjE2OyEmIzgyMTc7IGluIGZyb250IG9mIGEgbnVtYmVyIG9yIHJh bmdlIHRvIGV4Y2x1ZGUgdGhvc2UgaW1hZ2VzLiBVc2UgJiM4MjE2Oz8mIzgyMTc7IGFuZCB0 aGUgbmFtZSBvZiBhIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZpZWxkIHRvIHJl YWQgdGhlIGxpc3Qgb2YgaW1hZ2UgSURzIGZyb20gdGhhdCBmaWVsZDwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj5jYXRlZ29yeTwvc3Bhbj4gOiBsaXN0IG9mIGltYWdlIGNhdGVn b3JpZXMgdG8gZGlzcGxheS4gWW91IG1heSBzcGVjaWZ5IGZpeGVkLW5hbWUgY2F0ZWdvcmll cyAoZS5nLiAmIzgyMjA7YW5pbWFscyYjODIyMTspIG9yIGEmIzgyMTc7PyYjODIxNzsgZm9s bG93ZWQgYnkgYW4gYXJ0aWNsZSBmaWVsZCBuYW1lLiBlLmcuIDxjb2RlPmNhdGVnb3J5PSZx dW90O2FuaW1hbHMsIGFydC0/dGhpc2lkJnF1b3Q7PC9jb2RlPiB3b3VsZCBncmFiIGFsbCBp bWFnZXMgZnJvbSBjYXRlZ29yeSAmIzgyMjA7YW5pbWFscyYjODIyMTsgYW5kIGNhdGVnb3J5 ICYjODIyMDthcnQtNDImIzgyMjE7IChhc3N1bWluZyB0aGUgY3VycmVudCBhcnRpY2xlIGhh cyBhbiBpZCBvZiA0MikuIFVzZSAmIzgyMTY7ISYjODIxNzsgdG8gPGVtPmV4Y2x1ZGU8L2Vt PiB0aGUgZ2l2ZW4gY2F0ZWdvcnkgb3IgZmllbGQuPGRpdiBjbGFzcz0iYnJlYWsiPkZpZWxk cyBtYXkgdGhlbXNlbHZlcyBjb250YWluIGxpc3RzIG9mIGNhdGVnb3JpZXMuIFRoZSAmIzgy MTY7PyYjODIxNzsgZmllbGQgbmFtZXMgbWF5IGJlIGNvbWJpbmVkIChlLmcuID9zLT9hcnRp Y2xlX2ltYWdlKSBidXQgYmUgYXdhcmUgdGhhdCBjdXN0b20gZmllbGQgbmFtZXMgbWF5IGNv bnRhaW4gc3BhY2VzIGlmIDxjb2RlPnN0cmljdGZpZWxkcz0mcXVvdDswJnF1b3Q7PC9jb2Rl PjwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5zdWJsZXZlbDwvc3Bhbj4g OiBhbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVzIGhvdyBtYW55ICYjODIxNjtsZXZlbHMmIzgy MTc7IGRvd24gdG8gdHJhdmVyc2UgZWFjaCBtYXRjaGluZyBjYXRlZ29yeS4gPGNvZGU+c3Vi bGV2ZWw9JnF1b3Q7MCZxdW90OzwvY29kZT4gKHRoZSBkZWZhdWx0KSBpcyBvbmx5IHRoZSB0 b3AtbGV2ZWw7IDEgPSB0b3AtbGV2ZWwgcGx1cyB0aGUgMXN0IHN1Yi1jYXQ7IDIgPSB0b3At bGV2ZWwgcGx1cyB0aGUgbmV4dCAyIHN1Yi1jYXRzLCBhbmQgc28gb24uIDxjb2RlPnN1Ymxl dmVsPSZxdW90O2FsbCZxdW90OzwvY29kZT4gaXMgYWxsIHN1Yi1jYXRzPC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPnNvcnQ8L3NwYW4+IDogcmUtb3JkZXIgdGhlIGltYWdlcyBi eSA8Y29kZT5jYXRlZ29yeTwvY29kZT4gKHRoZSBkZWZhdWx0KSwgPGNvZGU+bmFtZTwvY29k ZT4sIDxjb2RlPmRhdGU8L2NvZGU+LCA8Y29kZT5pZDwvY29kZT4gKHRoZSBkZWZhdWx0IGlm IHVzaW5nIGFuIGlkKSwgZmlsZSA8Y29kZT5leHQ8L2NvZGU+ZW5zaW9uLCA8Y29kZT5hbHQ8 L2NvZGU+LCA8Y29kZT5jYXB0aW9uPC9jb2RlPiwgPGNvZGU+YXV0aG9yPC9jb2RlPiwgPGNv ZGU+d2lkdGg8L2NvZGU+LCA8Y29kZT5oZWlnaHQ8L2NvZGU+LCA8Y29kZT5oYXN0aHVtYjwv Y29kZT4gaW4gZWl0aGVyIDxjb2RlPmFzYzwvY29kZT5lbmRpbmcgb3IgPGNvZGU+ZGVzYzwv Y29kZT5lbmRpbmcgb3JkZXIuIFR3byBzcGVjaWFsIGNhc2VzIGV4aXN0OiA8Y29kZT5maXhl ZDwvY29kZT4gbWFpbnRhaW5zIHRoZSBvcmRlciB5b3Ugc3BlY2lmaWVkIGluIHRoZSBpZCBh bmQvb3IgY2F0ZWdvcnkgYXR0cmlidXRlLCB3aGlsZSA8Y29kZT5yYW5kb208L2NvZGU+IHNo dWZmbGVzIHRoZSBvcmRlci48ZGl2IGNsYXNzPSJicmVhayI+Tm90ZSB0aGF0IGlmIDxjb2Rl PnJhbmRvbTwvY29kZT4gYXBwZWFycyBhcyB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgbGlzdCwg cmFuZG9tIGltYWdlcyB3aWxsIGJlIHB1bGxlZCBmcm9tIHRoZSBkYXRhYmFzZSBhbmQgdGhl eSB3aWxsIHRoZW4gYmUgc29ydGVkIGFjY29yZGluZyB0byB0aGUgb3JkZXIgbGlzdGVkIGFm dGVyIGl0LiBJZiA8Y29kZT5yYW5kb208L2NvZGU+IGFwcGVhcnMgYW55d2hlcmUgZWxzZSBp biB0aGUgbGlzdCwgYW55IHNvcnQgaXRlbXMgYmVmb3JlIGl0IHdpbGwgZGV0ZXJtaW5lIHRo ZSBvcmRlciBvZiBkYXRhIHB1bGxlZCBmcm9tIHRoZSBkYXRhYmFzZSwgYW5kIHRoZSByZXN1 bHRzIHdpbGwgdGhlbiBiZSBvcmRlcmVkIHJhbmRvbWx5LiBJbiB0aGUgMm5kIGNhc2UsIGFu eSBpdGVtcyBsaXN0ZWQgYWZ0ZXIgcmFuZG9tIHdpbGwgYmUgaWdub3JlZCwgYnV0ICA8Y29k ZT5maXhlZDwvY29kZT4gaXMgc3RpbGwgaG9ub3VyZWQ8L2Rpdj48L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+bGltaXQ8L3NwYW4+IDogdGhlIG1heGltdW0gbnVtYmVyIG9mIGlt YWdlcyB0byBzaG93IDxlbT5wZXIgcGFnZTwvZW0+LiAwIG9yIG9taXR0ZWQgPSB1bmxpbWl0 ZWQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bWF4bGltaXQ8L3NwYW4+IDogdGhl IGFic29sdXRlIG1heGltdW0gbnVtYmVyIG9mIGltYWdlIHRvIHB1bGwgZnJvbSB0aGUgZGF0 YWJhc2UuIDAgb3Igb21pdHRlZCA9IHVubGltaXRlZDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj5vZmZzZXQ8L3NwYW4+IDogc2tpcCB0aGlzIG1hbnkgaW1hZ2VzIGFuZCBzdGFy dCBjb3VudGluZyB0aGVyZWFmdGVyPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnRo dW1ibGltaXQ8L3NwYW4+IDogdGhlIG1heGltdW0gbnVtYmVyIG9mIHRodW1ibmFpbHMgdG8g c2hvdy4gMCBvciBvbWl0dGVkID0gYWxsIHRodW1icy4gTm90ZSB0aGF0IHRoaXMgZGlmZmVy cyBmcm9tIGxpbWl0OyB5b3UgY2FuIGxhdW5jaCBhIDIwLWltYWdlIGdhbGxlcnkgYnV0IG9u bHkgc2hvdyAxIHRodW1ibmFpbCBvbiB0aGUgcGFnZS4gQmUgYXdhcmUgdGhhdCBpZiB5b3Ug YXJlIHNob3dpbmcgbXVsdGlwbGUgY2F0ZWdvcmllcyBmcm9tIGEgc2luZ2xlIHRhZywgeW91 IHdpbGwgc2VlIG9uZSA8Y29kZT50aHVtYmxpbWl0PC9jb2RlPiB0aHVtYm5haWxzIDxlbT5h dCBlYWNoIGNoYW5nZSBpbiBjYXRlZ29yeTwvZW0+LiBJZiB5b3UgZG9uJiM4MjE3O3Qgd2Fu dCB0aGlzLCBzZXQgPGNvZGU+b25jaGFuZ2U8L2NvZGU+IHRvIHNvbWV0aGluZyBlbHNlLiBT ZWUgdGhlIDxjb2RlPntvYmplY3R9PC9jb2RlPiA8YSBocmVmPSIjcmVwX2dhbGxlcnkiPnJl cGxhY2VtZW50IHRhZzwvYT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+dGh1bWJv ZmZzZXQ8L3NwYW4+IDogc2tpcCB0aGlzIG1hbnkgdGh1bWJzIGJlZm9yZSBkaXNwbGF5aW5n IDxjb2RlPnRodW1ibGltaXQ8L2NvZGU+IHRodW1ibmFpbHM8L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+b25jaGFuZ2U8L3NwYW4+IDogYSBsaXN0IG9mIGF0dHJpYnV0ZXMgdG8g JiM4MjIwO3dhdGNoJiM4MjIxOy4gSXQgdGVsbHMgdGhlIHBsdWdpbiB0aGF0IHlvdSB3YW50 IHRvIGJlIG5vdGlmaWVkIHdoZW4gaXRlbXMgaW4gdGhpcyBsaXN0IGNoYW5nZSBjb21wYXJl ZCB0byB0aGUgcHJldmlvdXMgaW1hZ2UuIFVuZGVyIG5vcm1hbCBjaXJjdW1zdGFuY2VzIHRo aXMgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIHlvdXIgPGNvZGU+c29ydDwvY29kZT4gcGFyYW1l dGVyIG9yIHlvdSBtYXkgZ2V0IHNvbWUgZnJlYWt5IHJlc3VsdHMhIEl0IGRlZmF1bHRzIHRv IDxjb2RlPmNhdGVnb3J5PC9jb2RlPi48ZGl2IGNsYXNzPSJicmVhayI+VGhpcyBpcyB2ZXJ5 IHVzZWZ1bCBmb3Igc3BsaXR0aW5nIGdhbGxlcmllcyBhdCBldmVyeSBjaGFuZ2UgaW4gY2F0 ZWdvcnkgYW5kIGRpc3BsYXlpbmcgdGhlIGNhdGVnb3J5IHRpdGxlIGFib3ZlIGVhY2ggZ3Jv dXAuIEl0ZW1zIHlvdSB3YXRjaCBhcmUgYWRkZWQgdG8gdGhlIGxpc3Qgb2YgcmVwbGFjZW1l bnQgdGFncyBhbmQgYXJlIGF2YWlsYWJsZSBieSBwdXR0aW5nICYjODIyMDtvbmNoYW5nZTom IzgyMjE7IGluIGZyb250IG9mIHRoZWlyIG5hbWUgKGUuZy4gPGNvZGU+e29uY2hhbmdlOmNh dGVnb3J5fTwvY29kZT4gJiM4MjEyOyBzZWUgPGEgaHJlZj0iI2VnNiI+ZXhhbXBsZSA2PC9h PiBmb3IgbW9yZSkuIFRoZSBjb2xvbiBkZWxpbWl0ZXIgY2FuIGJlIGNoYW5nZWQgd2l0aCA8 Y29kZT5wYXJhbWRlbGltPC9jb2RlPi48L2Rpdj48ZGl2IGNsYXNzPSJicmVhayI+QW5vdGhl ciB3YXkgb2YgdXNpbmcgdGhpcyBhdHRyaWJ1dGUgaXMgd2l0aCB0aGUgc3BlY2lhbCBwcmVm aXggPGNvZGU+c21kX2V2ZXJ5Om48L2NvZGU+IHdoaWNoIHdpbGwgdHJpZ2dlciBhIGNoYW5n ZSBldmVyeSBudGggaW1hZ2UuPC9kaXY+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i Pm9uY2hhbmdld3JhcHRhZzwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgdG8gc3Vycm91bmQg YW55IDxjb2RlPm9uY2hhbmdlPC9jb2RlPiBlbGVtZW50cyB5b3UgYXJlIHdhdGNoaW5nLCBl LmcuIDxjb2RlPm9uY2hhbmdld3JhcHRhZz0mcXVvdDtoMyZxdW90OzwvY29kZT4uIERlZmF1 bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm9uY2hhbmdlY2xhc3M8 L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5hbWUg dHJvIGFwcGx5IHRvIHRoZSB3cmFwdGFnIG9mIGFueSBvbmNoYW5nZSBlbGVtZW50cyB5b3Ug YXJlIHdhdGNoaW5nLiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj5ncm91cHRhZzwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgdG8gbWFrZSBhdmFpbGFi bGUgYXMgYSByZXBsYWNlbWVudCBzbyB5b3UgY2FuIHdyYXAgZ3JvdXBzIG9mIGVsZW1lbnRz IGF0IGVhY2ggPGNvZGU+b25jaGFuZ2U8L2NvZGU+LiBEZWZhdWx0OiB1bnNldC4gU2VlIHRo ZSA8Y29kZT5ncm91cHRhZ3N0YXJ0PC9jb2RlPiAvIDxjb2RlPmdyb3VwdGFnZW5kPC9jb2Rl PiA8YSBocmVmPSIjcmVwX2dhbGxlcnkiPnJlcGxhY2VtZW50IHRhZ3M8L2E+PC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmdyb3VwY2xhc3M8L3NwYW4+IDogdGhlIDxzcGFuIGNs YXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5hbWUgYXBwbGllZCB0byBhbnkgPGNvZGU+ Z3JvdXB0YWc8L2NvZGU+LiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj50ZXh0PC9zcGFuPiA6IGRpc3BsYXkgdGhlIGdpdmVuIHRleHQgaW5zdGVhZCBv ZiB0aHVtYm5haWxzLiBUaGUgdGV4dCBjYW4gY29udGFpbiA8Y29kZT4/PC9jb2RlPiBhcnRp Y2xlIGZpZWxkczwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5lc2NhcGU8L3NwYW4+ IDogbGlzdCBvZiByZXBsYWNlbWVudCB2YXJpYWJsZSBuYW1lcyB0byAmIzgyMTY7ZXNjYXBl JiM4MjE3OywgaW4gb3RoZXIgd29yZHMgY29udmVydCBhbnkgPHNwYW4gY2xhc3M9ImNhcHMi PkhUTUw8L3NwYW4+IHRhZ3MgdG8gdGhlaXIgY2hhcmFjdGVyIGVudGl0eSBlcXVpdmFsZW50 cy4gU2V0IHRvIDxjb2RlPmVzY2FwZT0mcXVvdDsmcXVvdDs8L2NvZGU+IHRvIHR1cm4gdGhp cyBmZWF0dXJlIG9mZi4gRGVmYXVsdDogPGNvZGU+YWx0LCB0aXRsZSwgY2FwdGlvbjwvY29k ZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+c3RyaWN0ZmllbGRzPC9zcGFuPiA6 IHdoZW4gdXNpbmcgJiM4MjE2Oz8mIzgyMTc7IG9yICYjODIxNjshJiM4MjE3OyBmaWVsZHMs IHNwYWNlcyBhcmUgYWxsb3dlZCBpbiBmaWVsZCBuYW1lcy4gU2V0IDxjb2RlPnN0cmljdGZp ZWxkcz0mcXVvdDsxJnF1b3Q7PC9jb2RlPiB0byBmb3JiaWQgc3BhY2VzLiBEZWZhdWx0OiAw PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnRodW1iPC9zcGFuPiA6IGlmIHlvdSB3 aXNoIHRoZSBmdWxsc2l6ZSBpbWFnZXMgZGlzcGxheWVkIGFzIHRodW1ibmFpbHMsIG9yIGlm IHlvdSB3YW50IHRoZSB0aHVtYm5haWwgZ2FsbGVyeSB0byB1c2UgdGhlIGZ1bGxzaXplIGlt YWdlcywgc3BlY2lmeSBpdCB3aXRoIHRoaXMgYXR0cmlidXRlLiBVc2UgPGNvZGU+dGh1bWI9 JnF1b3Q7MSZxdW90OzwvY29kZT4gdG8gc3BlY2lmeSB0aGF0IGJvdGggZnVsbHNpemUgaW1h Z2UgYW5kIHRodW1ibmFpbCBkaXNwbGF5IHRoZSAmIzgyMTY7dCYjODIxNzsgKHRodW1ibmFp bCkgaW1hZ2UuIFVzZSA8Y29kZT50aHVtYj0mcXVvdDswJnF1b3Q7PC9jb2RlPiB0byBzcGVj aWZ5IHRoYXQgYm90aCBmdWxsc2l6ZSBhbmQgdGh1bWJuYWlscyB1c2UgdGhlIGZ1bGwgc2l6 ZSBpbWFnZXMuIFlvdSBjYW4gYWxzbyBjaG9vc2Ugb25lIG9yIHRoZSBvdGhlciBieSBnaXZp bmcgdGhpcyBhdHRyaWJ1dGUgdHdvIG51bWJlcnMgc2VwYXJhdGVkIGJ5IGEgY29sb24uPGRp diBjbGFzcz0iYnJlYWsiPkZvciAmIzgyMTY7bm9ybWFsJiM4MjE3OyBvcGVyYXRpb24gJiM4 MjEyOyBpLmUuIGZ1bGxzaXplIGltYWdlIGlzIGZ1bGwgc2l6ZSwgdGh1bWJuYWlsIGlzIHRo dW1iIHNpemVkICYjODIxMjsgc3BlY2lmeSA8Y29kZT50aHVtYj0mcXVvdDswOjEmcXVvdDs8 L2NvZGU+LiBUbyByZXZlcnNlIHRoaXMsIHVzZSA8Y29kZT50aHVtYj0mcXVvdDsxOjAmcXVv dDs8L2NvZGU+LiBOb3RlIHRoYXQgPGNvZGU+MToxPC9jb2RlPiBhbmQgPGNvZGU+MDowPC9j b2RlPiBhbHNvIHdvcmsgdG8gc2V0IGJvdGggaW1hZ2VzIHRvIHRoZSBzYW1lIHNpemUgaWYg eW91IHByZWZlciB0aGF0IHN5bnRheDwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj50aHVtYnNpemU8L3NwYW4+IDogdGFrZXMgb25lIG9yIHR3byBjb21tYS1zZXBhcmF0 ZWQgbnVtYmVycyB0byBzcGVjaWZ5IHdpZHRoIGFuZC9vciBoZWlnaHQgb2YgYWxsIHlvdXIg Z2FsbGVyeSB0aHVtYm5haWxzLiBUaGUgZGVmYXVsdCBpcyBpbiBwaXhlbHMgaWYgeW91IGRv biYjODIxNzt0IHNwZWNpZnkgdW5pdHMuIE1pc3Npbmcgb3V0IG9uZSBvciB0aGUgb3RoZXIg cGFyYW1ldGVyIChpLmUuIGhhdmluZyBhbiAmIzgyMjA7ZW1wdHkmIzgyMjE7IHBhcmFtZXRl ciBiZWZvcmUgb3IgYWZ0ZXIgdGhlIGNvbW1hKSB3aWxsIG9ubHkgc2V0IG9uZSBvZiB0aGUg ZGltZW5zaW9ucy4gVXNlIGEgc2luZ2xlIHZhbHVlIHRvIG1ha2Ugc3F1YXJlIHRodW1iczwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5mb3JtPC9zcGFuPiA6IHRoZSA8c3BhbiBj bGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBmb3JtIHVzZWQgdG8gbGF5b3V0IHlvdXIgbWF0Y2hp bmcgaW1hZ2VzLiBXaXRob3V0IHRoaXMgYXR0cmlidXRlIHRoZSBwbHVnaW4gYWN0cyBhcyBh IGNvbnRhaW5lciB0YWcuIFdpdGhvdXQgYSBjb250YWluZXIsIHRoZSBwbHVnaW4gZGlzcGxh eXMgZWFjaCBmdWxsLXNpemUgaW1hZ2UsIGh5cGVybGlua2VkPC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPnBhZ2Vmb3JtPC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+ VFhQPC9zcGFuPiBmb3JtIHVzZWQgdG8gc3BlY2lmeSB0aGUgbGF5b3V0IG9mIHlvdXIgcGFn aW5nIG5hdmlnYXRpb248L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+cGFnaW5nPC9z cGFuPiA6IHN3aXRjaCBwYWdpbmcgb24gd2l0aG91dCBoYXZpbmcgdG8gc3BlY2lmeSBhIHBh Z2Vmb3JtLiBXaGVuIHRoaXMgaXMgdXNlZCwgYWxsIDxhIGhyZWY9IiNyZXBfcGFnaW5nIj5w YWdlIHJlcGxhY2VtZW50IHRhZ3M8L2E+IGJlY29tZSBhdmFpbGFibGUgaW4gdGhlIDxhIGhy ZWY9IiNyZXBfZ2FsbGVyeSI+Z2FsbGVyeSByZXBsYWNlbWVudCB0YWdzPC9hPiBhcyB3ZWxs PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnBhZ2Vwb3M8L3NwYW4+IDogdGhlIHBv c2l0aW9uIG9mIHRoZSBwYWdpbmcgYmxvY2suIE9wdGlvbnMgYXJlIDxjb2RlPmJlbG93PC9j b2RlPiAodGhlIGRlZmF1bHQpLCA8Y29kZT5hYm92ZTwvY29kZT4sIG9yIGJvdGggb2YgdGhl bSBzZXBhcmF0ZWQgYnkgPGNvZGU+ZGVsaW08L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPm9iamVjdGZvcm08L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5U WFA8L3NwYW4+IGZvcm0gdXNlZCB0byBzcGVjaWZ5IHRoZSBsYXlvdXQgb2YgeW91ciA8Y29k ZT57b2JqZWN0fTwvY29kZT4gcmVwbGFjZW1lbnQgdGFnLiBZb3UgY2FuIHVzZSBhbGwgdGhl IHN0YW5kYXJkIDxhIGhyZWY9IiNyZXBfZ2FsbGVyeSI+Z2FsbGVyeSByZXBsYWNlbWVudCB0 YWdzPC9hPiB3aXRoIHRoZSBleGNlcHRpb24gb2YgPGNvZGU+e29iamVjdH08L2NvZGU+IGl0 c2VsZiEgVXNlcyBhIGh5cGVybGlua2VkIGltYWdlIGlmIG5vIGZvcm0gaXMgc3BlY2lmaWVk PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNvdW50Zm9ybTwvc3Bhbj4gOiBsaXN0 IG9mIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZvcm1zIHRvIHVzZSB3aGVuIGNl cnRhaW4gbnVtYmVyZWQgaW1hZ2VzIGFyZSByZWFjaGVkLiBTZWUgPGEgaHJlZj0iI2NvdW50 Zm9ybSI+Y291bnQgZm9ybXM8L2E+IGFuZCA8YSBocmVmPSIjZWcxMCI+ZXhhbXBsZSAxMDwv YT4uIFRoaXMgaGFzIG5vIGVmZmVjdCBpbiBjb2xsYXRlIG1vZGU8L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+Y291bnRwb3M8L3NwYW4+IDogZGVmYXVsdCBwb3NpdGlvbiBvZiB0 aGUgPGNvZGU+Y291bnRmb3JtPC9jb2RlPnMuIEVpdGhlciA8Y29kZT5hYm92ZTwvY29kZT4g KHRoZSBkZWZhdWx0KSwgPGNvZGU+YmVsb3c8L2NvZGU+LCBvciBib3RoIG9mIHRoZW0gc2Vw YXJhdGVkIGJ5IDxjb2RlPmRlbGltPC9jb2RlPi4gQ2FuIGJlIG92ZXJyaWRkZW4gb24gYSBw ZXItZm9ybSBiYXNpczwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5nYWxsZXJ5aWQ8 L3NwYW4+IDogdW5kZXIgbm9ybWFsIGNpcmN1bXN0YW5jZXMgeW91IHNob3VsZCBuZXZlciBu ZWVkIHRoaXMuIEVhY2ggZ2FsbGVyeSBpcyBhc3NpZ25lZCBhIHVuaXF1ZSBJRCBiYXNlZCBv biB0aGUgc3VwcGxpZWQgYXR0cmlidXRlcy4gSW4gdGhlIHVubGlrZWx5IGV2ZW50IHRoYXQg dHdvIGlkZW50aWNhbCBJRHMgYXJlIGdlbmVyYXRlZCB5b3UgY2FuIG92ZXJyaWRlIHRoZSBJ RCBmb3IgYSBnYWxsZXJ5IGJ5IHVzaW5nIHRoaXMgYXR0cmlidXRlLjxkaXYgY2xhc3M9ImJy ZWFrIj5JbnRlcm5hbGx5IHRoZSBwbHVnaW4gZ2VuZXJhdGVzIGEgMzItY2hhcmFjdGVyIGhh c2ggc3RyaW5nIGZvciBlYWNoIHRhZywgdGhlbiBwaWNrcyBhIDQtY2hhciBjb2RlIGZyb20g dGhpcyBzdHJpbmcgKGl0IHRha2VzIGV2ZXJ5IDZ0aCBjaGFyYWN0ZXIgYnkgZGVmYXVsdCku IFlvdSBjYW4gc3VwcGx5IGEgdW5pcXVlIGZpeGVkIHN0cmluZyAoZS5nLiA8Y29kZT5nYWxs ZXJ5aWQ9JnF1b3Q7TXlHYWwmcXVvdDs8L2NvZGU+KSBvciBnaXZlIGl0IGEgcXVlc3Rpb24g bWFyayBhbmQgMiBudW1iZXJzIHNlcGFyYXRlZCBieSBhIGNvbG9uIChlLmcuIDxjb2RlPmdh bGxlcnlpZD0mcXVvdDs/NTo0JnF1b3Q7PC9jb2RlPikuIFRoZSBmaXJzdCBudW1iZXIgaXMg dGhlIGxlbmd0aCBvZiB0aGUgZmluYWwgc3RyaW5nIHRvIGdlbmVyYXRlLCB0aGUgc2Vjb25k IG51bWJlciBpcyBob3cgbWFueSBjaGFyYWN0ZXJzIHRvIHNraXAgaW4gdGhlIDMyLWNoYXIg c3RyaW5nIGVhY2ggdGltZSBpdCBwaWNrcyBvbmUuPC9kaXY+PGRpdiBjbGFzcz0iYnJlYWsi PkluIHRoaXMgY2FzZSBpdCBnZW5lcmF0ZXMgYSA1LWNoYXJhY3RlciBzdHJpbmcgZnJvbSB0 aGUgY2hhcmFjdGVycyBpdCBmaW5kcyBhdCBwb3NpdGlvbnMgMSw1LDksMTMsIGFuZCAxNy4g SWYgeW91IG9taXQgdGhlIDJuZCBudW1iZXIgKGUuZy4gPGNvZGU+Z2FsbGVyeWlkPSZxdW90 Oz82JnF1b3Q7PC9jb2RlPikgaXQgd2lsbCBhc3N1bWUgaXQmIzgyMTc7cyBhbiBpbmNyZW1l bnQgb2YgMTwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5mb3JtYXQ8L3Nw YW4+ICg8c3BhbiBjbGFzcz0icmVxdWlyZWQiPm9ubHkgaWYgdXNpbmcgPGNvZGU+e2RhdGV9 PC9jb2RlPjwvc3Bhbj4pIDogYWxsb3dzIHlvdSB0byBjaGFuZ2UgdGhlIGRhdGUgZm9ybWF0 IHVzZWQuIENhbiB0YWtlIGFueSA8YSBocmVmPSJodHRwOi8vdWsucGhwLm5ldC9zdHJmdGlt ZSI+c3RyZnRpbWUoKTwvYT4gdmFsdWVzLiBEZWZhdWx0cyB0byB0aGUgZGF0ZSBzeXN0ZW0g YXMgc2V0IGluIHRoZSBzaXRlJiM4MjE3O3MgcHJlZnM8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+bGFuZzwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJyZXF1aXJlZCI+b25seSBpZiB1 c2luZyA8Y29kZT57ZGF0ZX08L2NvZGU+PC9zcGFuPikgOiBzZXRzIHRoZSBsYW5ndWFnZSBj b2RlIG9mIHRoZSBkYXRlIGZvcm1hdC4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+Z210PC9zcGFuPiAoPHNwYW4gY2xhc3M9InJlcXVpcmVkIj5vbmx5 IGlmIHVzaW5nIDxjb2RlPntkYXRlfTwvY29kZT48L3NwYW4+KSA6IHJldHVybnMgZWl0aGVy IGxvY2FsIHRpbWUgYWNjb3JkaW5nIHRvIHRoZSBzZXQgdGltZSB6b25lIHByZWZlcmVuY2Vz ICgwKSwgb3IgPHNwYW4gY2xhc3M9ImNhcHMiPkdNVDwvc3Bhbj4gdGltZSAoMSkuIERlZmF1 bHQ6IDA8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+d3JhcHRhZzwvc3Bhbj4gOiB0 aGUgKFgpSFRNTCB0YWcgdG8gc3Vycm91bmQgdGhlIGVudGlyZSBnYWxsZXJ5LCBlLmcuIDxj b2RlPndyYXB0YWc9JnF1b3Q7ZGl2JnF1b3Q7PC9jb2RlPi4gRGVmYXVsdDogdW5zZXQ8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+YnJlYWs8L3NwYW4+IDogdGhlIChYKUhUTUwg dGFnIHRvIHN1cnJvdW5kIGVhY2ggdGh1bWJuYWlsLiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jbGFzczwvc3Bhbj4gOiB0aGUgPHNwYW4gY2xhc3M9 ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgbmFtZSBhcHBsaWVkIHRvIHRoZSB3cmFwdGFnLiBE ZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5odG1sX2lkPC9z cGFuPiA6IHRoZSBuYW1lIG9mIGFuIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiA8 Y29kZT5pZDwvY29kZT4gYXR0cmlidXRlIHRvIGFwcGx5IHRvIHRoZSB3cmFwdGFnLiBEZWZh dWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5uYXZ3cmFwdGFnPC9z cGFuPiA6IHRoZSAoWClIVE1MIHRhZyB0byBzdXJyb3VuZCB0aGUgZW50aXJlIDxjb2RlPnBh Z2Vmb3JtPC9jb2RlPiwgZS5nLiA8Y29kZT53cmFwdGFnPSZxdW90O2RpdiZxdW90OzwvY29k ZT4uIERlZmF1bHQ6IDxjb2RlPnVsPC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj5uYXZicmVhazwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgdG8gc3Vycm91bmQgZWFj aCBpdGVtIHdpdGhpbiB0aGUgPGNvZGU+cGFnZWZvcm08L2NvZGU+LiBEZWZhdWx0OiA8Y29k ZT5saTwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bmF2Y2xhc3M8L3Nw YW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5hbWUgb2Yg dGhlIG5hdmlnYXRpb24gd3JhcHRhZy4gRGVmYXVsdDogPGNvZGU+c21kX2dhbGxlcnlfbmF2 PC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5lbXB0eWNsYXNzPC9zcGFu PiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBjbGFzcyBuYW1lIG9mIHRo ZSBuYXZpZ2F0aW9uIGl0ZW1zIHRoYXQgYXJlIDxlbT5ub3Q8L2VtPiBsaW5rcy4gRGVmYXVs dDogPGNvZGU+ZW1wdHk8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmRl bGltPC9zcGFuPiA6IGNoYW5nZSB0aGUgZGVsaW1pdGVyIGZvciBzcGVjaWZ5aW5nIGF0dHJp YnV0ZSBsaXN0cy4gRGVmYXVsdCBpcyBjb21tYSAoLCk8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+cGFyYW1kZWxpbTwvc3Bhbj4gOiBjaGFuZ2UgdGhlIGRlbGltaXRlciBmb3Ig c3BlY2lmeWluZyBpbnRlci1wYXJhbWV0ZXIgYXR0cmlidXRlcy4gRGVmYXVsdCBpcyBjb2xv biAoOik8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y29sbGF0ZTwvc3Bhbj4gOiBz d2l0Y2ggdGhlIHBsdWdpbiBpbnRvIDxhIGhyZWY9IiNjb2xsYXRlX21vZGUiPmNvbGxhdGUg bW9kZTwvYT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y29sbGF0ZWRlbGltPC9z cGFuPiA6IGNoYW5nZSB0aGUgZGVsaW1pdGVyIGJldHdlZW4gZWFjaCBjb2xsYXRlZCBpdGVt LiBEZWZhdWx0IGlzIGNvbW1hICgsKTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5j b21ibzwvc3Bhbj4gOiBzcGVjaWZ5IHlvdXIgb3duIDxhIGhyZWY9IiNyZXBfZ2FsbGVyeSI+ cmVwbGFjZW1lbnQgdGFnczwvYT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y29s dW1uczwvc3Bhbj4gOiBnaXZlIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgYWRkaXRpb25h bCBjb2x1bW5zIHlvdSB3b3VsZCBsaWtlIHRvIHB1bGwgZnJvbSB0aGUgZGF0YWJhc2UuIEVh Y2ggaXRlbSB5b3Ugc3BlY2lmeSBpcyBzcGxpdCBpbnRvIHRocmVlIHBhcnRzOiA8Y29kZT50 YWJsZS5jb2x1bW46cmVwbGFjZW1lbnQgbmFtZTwvY29kZT4uIFRoZSBvbmx5IG1hbmRhdG9y eSBwYXJ0IGlzIHRoZSByZXBsYWNlbWVudCBuYW1lLCBzaW5jZSA8Y29kZT50YWJsZTwvY29k ZT4gZGVmYXVsdHMgdG8gdHhwX2ltYWdlLCBhbmQgdGhlIDxjb2RlPmNvbHVtbjwvY29kZT4g ZGVmYXVsdHMgdG8gdGhlIHNhbWUgbmFtZSBhcyB0aGUgcmVwbGFjZW1lbnQgeW91IHNwZWNp ZnkuPGRpdiBjbGFzcz0iYnJlYWsiPkZvciBleGFtcGxlLCBpZiB5b3UgaGF2ZSBpbnN0YWxs ZWQgdGhlIGNub19pbWFnZV9vcmRlciBwbHVnaW4geW91IGNvdWxkIHVzZSA8Y29kZT5jb2x1 bW5zPSZxdW90O3Bvc2l0aW9uJnF1b3Q7PC9jb2RlPiwgc2luY2UgdGhlIHBsdWdpbiBhZGRz IHRoZSAmIzgyMTY7cG9zaXRpb24mIzgyMTc7IGNvbHVtbiB0byB0eHBfaW1hZ2UuIFlvdSBj b3VsZCB0aGVuIHNvcnQgYnkgPGNvZGU+cG9zaXRpb248L2NvZGU+IGFuZCBhbHNvIGRpc3Bs YXkgdGhlIGltYWdlJiM4MjE3O3MgPGNvZGU+e3Bvc2l0aW9ufTwvY29kZT4uIElmIHlvdSB3 aXNoZWQgdG8gcmVuYW1lIHRoZSB2YXJpYWJsZSB0bywgc2F5LCA8Y29kZT5pbWdwb3M8L2Nv ZGU+IHlvdSB3b3VsZCB1c2UgPGNvZGU+Y29sdW1ucz0mcXVvdDtwb3NpdGlvbjppbWdwb3Mm cXVvdDs8L2NvZGU+LiBOb3RlIHRoYXQgaWYgeW91IHNwZWNpZnkgdGhlIHRhYmxlIG5hbWUg eW91IG11c3QgYWxzbyBpbmNsdWRlIHRoZSB0YWJsZSBwcmVmaXggaWYgeW91IGhhdmUgdXNl ZCBvbmUuPC9kaXY+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmRpcmVjdG9yeTwv c3Bhbj4gOiAoPHNwYW4gY2xhc3M9InJlcXVpcmVkIj5leHBlcmltZW50YWw8L3NwYW4+KSBy ZWFkIGltYWdlcyBmcm9tIGEgbGlzdCBvZiBkaXJlY3RvcmllcyAob3IgPHNwYW4gY2xhc3M9 ImNhcHMiPlVSTDwvc3Bhbj5zKSBpbnN0ZWFkIG9mIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+ VFhQPC9zcGFuPiBkYXRhYmFzZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5tYXRj aDwvc3Bhbj4gOiBsaW1pdCB0aGUgaW1hZ2VzIGFuZCBkaXJlY3RvcmllcyBjaG9zZW4gaW4g PGNvZGU+ZGlyZWN0b3J5PC9jb2RlPiBtb2RlLiBHaXZlIGEgbGlzdCBvZiB3b3JkcyB0byBp bmNsdWRlIG9yICFleGNsdWRlIGFuZCBhbnkgbWF0Y2hpbmcgZmlsZXMgb3IgZGlyZWN0b3Jp ZXMgd2lsbCBiZSBjaG9zZW4gb3IgaWdub3JlZCwgcmVzcGVjdGl2ZWx5LiBUaGUgbWF0Y2gg dGVybXMgYXJlIGF1dG9tYXRpY2FsbHkgYXNzdW1lZCB0byBiZSAmIzgyMjA7d2lsZCYjODIy MTsgc28gYW55IHBhcnQgb2YgdGhlIGZpbGUgbmFtZSAvIHBhdGggd2lsbCB0cmlnZ2VyIHRo ZSBtYXRjaDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5kZWJ1Zzwvc3Bhbj4gOiB0 dXJuIG9uIGRpYWdub3N0aWNzLiBWYXJ5aW5nIGxldmVscyBvZiB2ZXJib3NpdHkgZnJvbSAw IChub25lKSB0byA0IChhIGxvdCk8L2xpPgoJPC91bD4KCgk8aDIgaWQ9ImdhbGxlcnlfZm9y bSI+R2FsbGVyeSBmb3JtPC9oMj4KCgk8cD5UaGUgPGNvZGU+Zm9ybTwvY29kZT4gaXMgd2hl cmUgeW91IGRlc2lnbiB3aGF0IGV2ZXJ5IHRodW1ibmFpbCB3aWxsIGxvb2sgbGlrZSBvbiB0 aGUgc2NyZWVuLiBZb3UgZG8gdGhpcyBieSBzcGVjaWZ5aW5nIDxzcGFuIGNsYXNzPSJjYXBz Ij5IVE1MPC9zcGFuPiBtYXJrdXAgb3IgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4g dGFncyBhcyBub3JtYWwuIEluIGtleSBwbGFjZXMgd2hlcmUgeW91IHdhbnQsIGZvciBleGFt cGxlLCBhbiBpbWFnZSBJRCAvIGFsdCB0YWcgLyBpbWFnZSB3aWR0aCB0byBiZSBkaXNwbGF5 ZWQsIHlvdSBzcGVjaWZ5IHNwZWNpYWwgPGEgaHJlZj0iI3JlcF9nYWxsZXJ5Ij5yZXBsYWNl bWVudCB0YWdzPC9hPi4gVGhlc2UgYXJlIHJlcGxhY2VkIGZvciBlYWNoIGltYWdlIGluIHR1 cm4sIHRodXMgYnVpbGRpbmcgdXAgdGhlIGdhbGxlcnkuPC9wPgoKCTxwPkluIGNvbGxhdGUg bW9kZSwgdGhlIGltYWdlIGRldGFpbHMgYXJlIGluc3RlYWQgbWFkZSBpbnRvIGxpc3RzLiBU aGUgZm9ybSBpcyBvbmx5IHByb2Nlc3NlZCBvbmNlIGFuZCB0aGUgcmVwbGFjZW1lbnQgdGFn cyBvdXRwdXQgdGhlIGVudGlyZSBsaXN0LjwvcD4KCgk8aDMgY2xhc3M9ImF0dHMgIiBpZD0i cmVwX2dhbGxlcnkiPlJlcGxhY2VtZW50IHRhZ3M6IGdhbGxlcnk8L2gzPgoKCTx1bD4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntpZH08L3NwYW4+IDogaW1hZ2UgSUQgKG9yLCBpbiBk aXJlY3RvcnkgbW9kZSwgdGhlIGZpbGVuYW1lIHdpdGhvdXQgaXRzIGV4dGVuc2lvbik8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25hbWV9PC9zcGFuPiA6IGZ1bGwgaW1hZ2Ug ZmlsZW5hbWUgYXMgZGVmaW5lZCBpbiB0aGUgZGF0YWJhc2UsIHVzdWFsbHkgaW5jbHVkaW5n IGV4dGVuc2lvbjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57ZXh0fTwvc3Bhbj4g OiBmaWxlIGV4dGVuc2lvbiwgaW5jbHVkaW5nIGRvdDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj57Y2F0ZWdvcnl9PC9zcGFuPiA6IGltYWdlIGNhdGVnb3J5IG5hbWU8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2NhdGVnb3J5X3RpdGxlfTwvc3Bhbj4gOiBpbWFn ZSBjYXRlZ29yeSB0aXRsZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57YXV0aG9y fTwvc3Bhbj4gOiB3aG8gdXBsb2FkZWQgdGhlIGltYWdlPC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPnt1cmx9PC9zcGFuPiA6IDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+ IG9mIHRoZSBmdWxsc2l6ZSBpbWFnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57 dGh1bWJ1cmx9PC9zcGFuPiA6IDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IG9mIHRo ZSB0aHVtYm5haWw8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2ltYWdlcGF0aH08 L3NwYW4+IDogZGlyZWN0b3J5IHRoZSBpbWFnZSBpcyBpbjwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj57aW1hZ2VkZWZ9PC9zcGFuPiA6IGp1c3QgdGhlIGZpbGUgbmFtZSBwYXJ0 IG9mIHRoZSBpbWFnZSAoZS5nLiA1LmpwZyk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+e3RodW1iZGVmfTwvc3Bhbj4gOiBqdXN0IHRoZSBmaWxlIG5hbWUgcGFydCBvZiB0aGUg dGh1bWJuYWlsIChlLmcuIDV0LmpwZyk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ e2FsdH08L3NwYW4+IDogYWx0IHRleHQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ e3RpdGxlfSBvciB7Y2FwdGlvbn08L3NwYW4+IDogY2FwdGlvbjwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj57ZGF0ZX08L3NwYW4+IDogaW1hZ2UgdXBsb2FkIGRhdGU8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3dpZHRofTwvc3Bhbj4gOiBpbWFnZSB3aWR0aDwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57aGVpZ2h0fTwvc3Bhbj4gOiBpbWFnZSBo ZWlnaHQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3RodW1id2lkdGh9PC9zcGFu PiA6IHRodW1ibmFpbCB3aWR0aCAoaWYgZGVmaW5lZDogc2VlIDxjb2RlPnRodW1ic2l6ZTwv Y29kZT4pPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt0aHVtaGVpZ2h0fTwvc3Bh bj4gOiB0aHVtYm5haWwgaGVpZ2h0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt0 aHVtYnd1bml0c308L3NwYW4+IDogdGh1bWJuYWlsIHdpZHRoIHVuaXRzIChlLmcuIHB4LCAl LCBlbSBldGMpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt0aHVtYmh1bml0c308 L3NwYW4+IDogdGh1bWJuYWlsIGhlaWdodCB1bml0czwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj57aGFzdGh1bWJ9PC9zcGFuPiA6IGlmIHRoZSBpbWFnZSBoYXMgYW4gYXNzb2Np YXRlZCB0aHVtYm5haWwgb3Igbm90PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntn YWxsZXJ5aWR9PC9zcGFuPiA6IGdhbGxlcnkgaWQgeW91IG9yIHRoZSBwbHVnaW4gYXNzaWdu ZWQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e29iamVjdH08L3NwYW4+IDogYSBz cGVjaWFsIGl0ZW0gY29udGFpbmluZyBlaXRoZXIgdGhlIDxjb2RlPnRleHQ8L2NvZGU+IE9S IHRoZSBpbWFnZSB0YWcgb2YgdGhlIGNvcnJlc3BvbmRpbmcgdGh1bWJuYWlsLCBidXQgPGVt Pm9ubHk8L2VtPiBpZiA8Y29kZT50aHVtYmxpbWl0PC9jb2RlPiBhbGxvd3MgaXQuIGUuZy4g aWYgPGNvZGU+dGh1bWJsaW1pdD0mcXVvdDsxJnF1b3Q7PC9jb2RlPiB0aGlzIHZhcmlhYmxl IGlzIG9ubHkgc2V0IGZvciB0aGUgZmlyc3QgdGh1bWJuYWlsIGluIHRoZSBsaXN0OyBldmVy eSBvdGhlciB0aW1lIGl0IGlzIGVtcHR5PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i Pntjb3VudGVyfTwvc3Bhbj4gOiBpbWFnZSBjb3VudGVyLCBzdGFydGluZyBmcm9tIDEgYW5k IGluY3JlbWVudGluZyBlYWNoIHRpbWU8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ e2luZGV4fTwvc3Bhbj4gOiBpbmRleCBjb3VudGVyICh6ZXJvLWJhc2VkICYjODIxMjsgcHJv YmFibHkgbm90IG11Y2ggdXNlKTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57dGh1 bWJjb3VudGVyfTwvc3Bhbj4gOiB0aHVtYm5haWwgaW1hZ2UgY291bnRlciwgc3RhcnRpbmcg ZnJvbSAxLiBOb3RlIGl0IGlzICYjODIxNjtyZXNldCYjODIxNzsgd2hlbmV2ZXIgYW4gZWxl bWVudCBnaXZlbiBpbiA8Y29kZT5vbmNoYW5nZTwvY29kZT4gZGlmZmVycyBmcm9tIHRoZSBw cmV2aW91cyBpdGVtPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt0aHVtYmluZGV4 fTwvc3Bhbj4gOiBpbmRleCBjb3VudGVyICh6ZXJvLWJhc2VkICYjODIxMjsgcHJvYmFibHkg bm90IG11Y2ggdXNlKS4gSXQgaXMgcmVzZXQgbGlrZSA8Y29kZT57dGh1bWJjb3VudGVyfTwv Y29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3RvdGFsaW1hZ2VzfTwvc3Bh bj4gOiB0b3RhbCBudW1iZXIgb2YgaW1hZ2VzIG1hdGNoZWQgb24gdGhpcyBwYWdlPC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnttYXhpbWFnZXN9PC9zcGFuPiA6IGFic29sdXRl IG1heGltdW0gbnVtYmVyIG9mIGltYWdlcyBhY3Jvc3MgYWxsIHBhZ2VzPC9saT4KCTwvdWw+ CgoJPHA+SW4gYWRkaXRpb24sIGlmIGVpdGhlciA8Y29kZT5wYWdpbmc9JnF1b3Q7MSZxdW90 OzwvY29kZT4gb3IgPGNvZGU+cGFnZWZvcm08L2NvZGU+IGhhdmUgYmVlbiBzcGVjaWZpZWQs IGFsbCB0aGUgPGEgaHJlZj0iI3JlcF9wYWdpbmciPnBhZ2luZyByZXBsYWNlbWVudCB0YWdz PC9hPiBhcmUgYXZhaWxhYmxlIHRvby4gSWYgdGhvc2UgYXJlbiYjODIxNzt0IGVub3VnaCwg eW91IGNhbiA8YSBocmVmPSIjY29tYm9zIj5jcmVhdGUgeW91ciBvd248L2E+IGJ5IGdyb3Vw aW5nIGNvbWJpbmF0aW9ucyBvZiB0aGUgYWJvdmUsIG9wdGlvbmFsbHkgd2l0aCBhcnRpY2xl IHZhcmlhYmxlcyBzdWNoIGFzIDxjb2RlPj9leGNlcnB0PC9jb2RlPiwgPGNvZGU+P2tleXdv cmRzPC9jb2RlPiwgPGNvZGU+P2FydGljbGVfaW1hZ2U8L2NvZGU+LCBldGMuPC9wPgoKCTxw Pk90aGVyIHRhZ3MgYXJlIGFkZGVkIGRlcGVuZGluZyBpZiB5b3UgYXJlIHdhdGNoaW5nIGZv ciA8Y29kZT5vbmNoYW5nZTwvY29kZT4gZWxlbWVudHMsIG9yIGlmIHlvdSBoYXZlIHNwZWNp ZmllZCBhIDxjb2RlPmdyb3VwdGFnPC9jb2RlPi4gSWYgeW91IGFkZGVkIDxjb2RlPm9uY2hh bmdlPSZxdW90O2F1dGhvciwgY2F0ZWdvcnkmcXVvdDs8L2NvZGU+IHRoZW4gZXZlcnkgdGlt ZSB0aGUgYXV0aG9yIG9yIGNhdGVnb3J5IGNoYW5nZWQgY29tcGFyZWQgdG8gdGhlIHByZXZp b3VzIGltYWdlLCBvbmUgb3IgdHdvIG5ldyByZXBsYWNlbWVudCB0YWdzIHdvdWxkIGJlY29t ZSBhdmFpbGFibGU7IG5hbWVseSA8Y29kZT57b25jaGFuZ2U6YXV0aG9yfTwvY29kZT4gYW5k IDxjb2RlPntvbmNoYW5nZTpjYXRlZ29yeSk8L2NvZGU+LiBVc2luZyBvbmNoYW5nZSB3aXRo IDxjb2RlPnNtZF9ldmVyeTwvY29kZT4gZG9lcyA8ZW0+bm90PC9lbT4gYWRkIGEgbmV3IHJl cGxhY2VtZW50IHRhZyBhcyBpdCBpcyBtZXJlbHkgdXNlZCB0byBjb3VudC48L3A+CgoJPHA+ SWYgeW91IHVzZWQgPGNvZGU+Z3JvdXB0YWc9JnF1b3Q7ZGl2JnF1b3Q7PC9jb2RlPiBhcyB3 ZWxsLCB5b3Ugd291bGQgYmUgZ2l2ZW4gdHdvIG5ldyByZXBsYWNlbWVudCB0YWdzIGxhYmVs bGVkIDxjb2RlPmdyb3VwdGFnc3RhcnQ8L2NvZGU+IGFuZCA8Y29kZT5ncm91cHRhZ2VuZDwv Y29kZT4uIFNlZSA8YSBocmVmPSIjZWc2Ij5leGFtcGxlIDY8L2E+IGZvciBkZXRhaWxzLjwv cD4KCgk8aDIgaWQ9InBhZ2luZ19mb3JtIj5QYWdpbmcgZm9ybTwvaDI+CgoJPHA+QWRkIGdh bGxlcnkgbmF2aWdhdGlvbiB0byB5b3VyIHBhZ2UuIFdvcmtzIGluIGEgc2ltaWxhciBtYW5u ZXIgdG8gdGhlIDxhIGhyZWY9IiNnYWxsZXJ5X2Zvcm0iPmdhbGxlcnkgZm9ybTwvYT46IGEg c2VyaWVzIG9mIDxhIGhyZWY9IiNyZXBfcGFnaW5nIj5SZXBsYWNlbWVudCBUYWdzPC9hPiBn b3Zlcm4gd2hpY2ggZ2FsbGVyeSBuYXZpZ2F0aW9uIGl0ZW1zIGFyZSBhdmFpbGFibGUuIFlv dSBjb3VsZCBjaG9vc2UgdG8gb25seSBzaG93IG5leHQvcHJldi4gT3IgcGVyaGFwcyAxc3Qg cGFnZS9sYXN0IHBhZ2UuIE9yIG51bWJlcmVkIHBhZ2UgbGlua3MuPC9wPgoKCTxoMyBjbGFz cz0iYXR0cyAiIGlkPSJyZXBfcGFnaW5nIj5SZXBsYWNlbWVudCB0YWdzOiBwYWdpbmc8L2gz PgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZmaXJzdH08L3NwYW4+IDog Zmlyc3QgcGFnZSAoZGVmYXVsdCBsYWJlbDogJiM4MjIwO0ZpcnN0JiM4MjIxOyAvIDxzcGFu IGNsYXNzPSJjYXBzIj5NTFA8L3NwYW4+KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij57bmF2cHJldn08L3NwYW4+IDogcHJldmlvdXMgcGFnZSAoZGVmYXVsdCBsYWJlbDogJiM4 MjIwOyZsYXF1bzsmIzgyMjE7IC8gPHNwYW4gY2xhc3M9ImNhcHMiPk1MUDwvc3Bhbj4pPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZlYXJsaWVyfTwvc3Bhbj4gOiBhbnkg cGFnZSBudW1iZXJzIGJlZm9yZSB0aGUgY3VycmVudCBwYWdlPC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPntuYXZ0aGlzdXJsfTwvc3Bhbj4gOiBjdXJyZW50IHBhZ2Ugd2l0aCBh IDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGxpbmsgdG8gaXRzZWxmPC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZ0aGlzfTwvc3Bhbj4gOiBjdXJyZW50IHBhZ2Ug d2l0aG91dCBhIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGxpbms8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+e25hdmxhdGVyfTwvc3Bhbj4gOiBhbnkgcGFnZSBudW1i ZXJzIGFmdGVyIHRoZSBjdXJyZW50IHBhZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+e25hdm5leHR9PC9zcGFuPiA6IG5leHQgcGFnZSAoZGVmYXVsdCBsYWJlbDogJiM4MjIw OyZyYXF1bzsmIzgyMjE7IC8gPHNwYW4gY2xhc3M9ImNhcHMiPk1MUDwvc3Bhbj4pPC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZsYXN0fTwvc3Bhbj4gOiBsYXN0IHBhZ2Ug KGRlZmF1bHQgbGFiZWw6ICYjODIyMDtMYXN0JiM4MjIxOyAvIDxzcGFuIGNsYXNzPSJjYXBz Ij5NTFA8L3NwYW4+KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bmF2Zmlyc3Rw YWdldXJsfTwvc3Bhbj4gOiByYXcgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdG8g Zmlyc3QgcGFnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bmF2cHJldnBhZ2V1 cmx9PC9zcGFuPiA6IHJhdyA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB0byBwcmV2 aW91cyBwYWdlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZ0aGlzcGFnZXVy bH08L3NwYW4+IDogcmF3IDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IHRvIGN1cnJl bnQgcGFnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bmF2bmV4dHBhZ2V1cmx9 PC9zcGFuPiA6IHJhdyA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB0byBuZXh0IHBh Z2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25hdmxhc3RwYWdldXJsfTwvc3Bh bj4gOiByYXcgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdG8gbGFzdCBwYWdlPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt0b3RhbGltYWdlc308L3NwYW4+IDogdG90 YWwgbnVtYmVyIG9mIGltYWdlcyBtYXRjaGVkIG9uIHRoZSBjdXJyZW50IHBhZ2U8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3RvdGFscGFnZXN9PC9zcGFuPiA6IHRvdGFsIG51 bWJlciBvZiBwYWdlcyBpbiB0aGlzIGNvbGxlY3Rpb248L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+e21heGltYWdlc308L3NwYW4+IDogYWJzb2x1dGUgbWF4aW11bSBudW1iZXIg b2YgaW1hZ2VzIGFjcm9zcyBhbGwgcGFnZXM8L2xpPgoJPC91bD4KCgk8cD5UaGUgY3VycmVu dCBwYWdlIGhhcyBhIGZpeGVkIGNsYXNzIG9mICYjODIxNjtjdXJyZW50JiM4MjE3OyBhbmQg ZWFjaCBpdGVtIGlzLCBieSBkZWZhdWx0LCBhIDxjb2RlPiZsdDtsaSZndDs8L2NvZGU+IGZv ciBlYXN5IHN0eWxpbmcuIFRvIGF2b2lkIGEgemlsbGlvbiBvcHRpb25zLCBjdXN0b20gbGFi ZWxzIGFyZSBkZWZpbmVkIGRpcmVjdGx5IGluIHRoZSBmb3JtIGl0c2VsZi4gVG8gbGFiZWwg dGhlIGxpbmsgdGhhdCB0YWtlcyB1c2VycyB0byB0aGUgZmlyc3QgcGFnZSBvZiB0aGUgZ2Fs bGVyeSBhcyAmIzgyMjA7MXN0JiM4MjIxOywgdXNlOjwvcD4KCgk8cD48Y29kZT57bmF2Zmly c3Q6MXN0fTwvY29kZT48L3A+CgoJPHA+V2l0aCB0aGlzIHN5bnRheCB5b3UgY2FuIGxhYmVs IG5hdmZpcnN0LCBuYXZsYXN0LCBuYXZwcmV2LCBuYXZuZXh0IGFuZCBuYXZ0aGlzICh0aGUg JiM4MjE2OzomIzgyMTc7IGRlbGltaXRlciBpbiB0aGlzIGNhc2UgaXMgc3BlY2lmaWVkIGJ5 IDxjb2RlPnBhcmFtZGVsaW08L2NvZGU+KS4gWW91IGNhbiB1c2UgdGhpcyBtZWNoYW5pc20g dG8gcmVhZCA8c3BhbiBjbGFzcz0iY2FwcyI+TUxQPC9zcGFuPiBzbmlwcGV0cywgZS5nOjwv cD4KCgk8cD48Y29kZT57bmF2Zmlyc3Q6IyNmaXJzdExhYmVsIyN9PC9jb2RlPjwvcD4KCgk8 cD5Zb3UgY2FuIG92ZXJyaWRlIHRoZSBudW1iZXIgb2YgaXRlbXMgZGlzcGxheWVkIGJ5IG5h dmVhcmxpZXIgYW5kIG5hdmxhdGVyIGJ5IHNwZWNpZnlpbmcgYSBjb2xvbiBhbmQgYSBudW1i ZXIuIFNvIHRvIG9ubHkgc2hvdyAyIGl0ZW1zIHRvIHRoZSBsZWZ0IG9mIHRoZSBjdXJyZW50 IHBhZ2UgYW5kIDMgaXRlbXMgdG8gdGhlIHJpZ2h0LCB1c2UgPGNvZGU+e25hdmVhcmxpZXI6 Mn0ge25hdmxhdGVyOjN9PC9jb2RlPiBpbiB5b3VyIGZvcm0uIElmIHlvdSB3ZXJlIG9uIHBh Z2UgOSBvZiAxNSwge25hdmVhcmxpZXI6NH0ge25hdmxhdGVyOjN9IHdvdWxkIHNob3cgPGNv ZGU+Jmx0OyZsdDsgNSA2IDcgOCA5IDEwIDExIDEyICZndDsmZ3Q7PC9jb2RlPjwvcD4KCgk8 cD5DdXJyZW50bHkgPGNvZGU+e25hdmVhcmxpZXJ9PC9jb2RlPiBhbmQgPGNvZGU+e25hdmxh dGVyfTwvY29kZT4gb25seSBkaXNwbGF5IGFyYWJpYyBudW1lcmFscy4gQW55IGlkZWFzIG9u IGhvdyB0byBvZmZlciBvdGhlciBjaGFyYWN0ZXIgc2V0cyBncmVhdGx5IGFwcHJlY2lhdGVk LjwvcD4KCgk8aDIgaWQ9ImNvdW50Zm9ybSI+Q291bnQgZm9ybXM8L2gyPgoKCTxwPlNvbWV0 aW1lcyBpdCYjODIxNztzIGhhbmR5IHRvIGJlIGFibGUgdG8gdGFrZSBhY3Rpb24gb25seSB3 aGVuIGNlcnRhaW4gaW1hZ2VzIGFyZSByZWFjaGVkOyBmb3IgZXhhbXBsZTo8L3A+CgoJPHVs PgoJCTxsaT5vbmx5IGRpc3BsYXkgc29tZXRoaW5nIG9uIHRoZSBmaXJzdCBvciBsYXN0IGlt YWdlPC9saT4KCQk8bGk+c3RhcnQgYSBuZXcgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3Nw YW4+ICYjODIxNjtyb3cmIzgyMTc7IGV2ZXJ5IDNyZCBpbWFnZTwvbGk+CgkJPGxpPmJyZWFr IHlvdXIgZ2FsbGVyeSB1cCB3aXRoIGFuIGFkdmVydDwvbGk+Cgk8L3VsPgoKCTxwPlRoaXMg Y2FuIGJlIGRvbmUgd2l0aCBzbWRfaWYgYnV0IHNpbmNlIGl0IGlzIHN1Y2ggYSBjb21tb24g ZmVhdHVyZSwgdGhlIHBsdWdpbiBoYXMgdGhlIGFiaWxpdHkgYnVpbHQgaW4uIEFsbCByZXBs YWNlbWVudCB2YXJpYWJsZXMgYXJlIGF2YWlsYWJsZSB3aXRoaW4geW91ciBjb3VudGZvcm1z IHNvIHlvdSBjYW4gZG8gc29tZSBwcmV0dHkgbmVhdCBzdHVmZi48L3A+CgoJPHA+SXQgaXMg YmVzdCBleHBsYWluZWQgYnkgZXhhbXBsZTo8L3A+CgoJPHVsPgoJCTxsaT48Y29kZT5jb3Vu dGZvcm09JnF1b3Q7MTpnYWxfaGVhZCZxdW90OzwvY29kZT4gOiB0aGlzIHdvdWxkIG91dHB1 dCB0aGUgZm9ybSA8ZW0+Z2FsX2hlYWQ8L2VtPiBvbmx5IHdoZW4gdGhlIGZpcnN0IGltYWdl IGlzIGRpc3BsYXllZDwvbGk+CgkJPGxpPjxjb2RlPmNvdW50Zm9ybT0mcXVvdDt7dG90YWxp bWFnZXN9OmdhbF9mb290JnF1b3Q7PC9jb2RlPiA6IHRoaXMgd291bGQgb3V0cHV0IHRoZSBm b3JtIDxlbT5nYWxfZm9vdDwvZW0+IG9ubHkgd2hlbiB0aGUgbGFzdCBpbWFnZSBpcyBkaXNw bGF5ZWQ8L2xpPgoJCTxsaT48Y29kZT5jb3VudGZvcm09JnF1b3Q7MTpnYWxfaGVhZCwge3Rv dGFsaW1hZ2VzfTpnYWxfZm9vdCZxdW90OzwvY29kZT4gOiBkbyBib3RoIG9mIHRoZSBhYm92 ZTwvbGk+CgkJPGxpPjxjb2RlPmNvdW50Zm9ybT0mcXVvdDsxOmdhbF9oZWFkLCB7dG90YWxp bWFnZXN9OmdhbF9mb290OnNtZF9iZWxvdyZxdW90OzwvY29kZT4gOiB0aGUgc2FtZSBhcyB0 aGUgcHJldmlvdXMgZXhhbXBsZSwgYnV0IHB1dCB0aGUgY29udGVudHMgYmVsb3cgdGhlIGxh c3QgaW1hZ2UgKGJ5IGRlZmF1bHQsIGFsbCBvdXRwdXQgYXBwZWFycyBhYm92ZSB0aGUgZ2l2 ZW4gaW1hZ2UpPC9saT4KCQk8bGk+PGNvZGU+Y291bnRmb3JtPSZxdW90OzQ6OTpzbWRfYmVs b3c6Z2FsX2FkJnF1b3Q7PC9jb2RlPiA6IG91dHB1dCA8ZW0+Z2FsX2FkPC9lbT4gYWZ0ZXIg dGhlIDR0aCBhbmQgOXRoIGltYWdlcyBvbmx5PC9saT4KCQk8bGk+PGNvZGU+Y291bnRmb3Jt PSZxdW90O3NtZF9ldmVyeTozOmdhbF9yb3cmcXVvdDs8L2NvZGU+IDogb3V0cHV0IDxlbT5n YWxfcm93PC9lbT4gYmVmb3JlIGV2ZXJ5IDNyZCBpbWFnZTwvbGk+CgkJPGxpPjxjb2RlPmNv dW50Zm9ybT0mcXVvdDtzbWRfZXZlcnk6MjohODpnYWxfcm93JnF1b3Q7PC9jb2RlPiA6IG91 dHB1dCA8ZW0+Z2FsX3JvdzwvZW0+IGJlZm9yZSBldmVyeSBldmVuIGltYWdlIGJ1dCBub3Qg b24gdGhlIDh0aCBpbWFnZTwvbGk+CgkJPGxpPjxjb2RlPmNvdW50Zm9ybT0mcXVvdDs6Z2Fs X3JvdyZxdW90OzwvY29kZT4gOiB1c2UgYW4gZW1wdHkgZmlyc3QgdmFsdWUgdG8gb3V0cHV0 IDxlbT5nYWxfcm93PC9lbT4gYmVmb3JlIGV2ZXJ5IGltYWdlLiBUaGlzIG1heSBzZWVtIHVz ZWxlc3MsIGJ1dCBpdCBtZWFucyB5b3UgY2FuIHVzZSB0d28sIHRocmVlLCBmb3VyJiM4MjMw OyBmb3JtcyAob3IgYW55IG51bWJlciBvZiBmb3JtcyBhbmQgdGhlIGNvbnRhaW5lcikgc2lt dWx0YW5lb3VzbHkgdG8gaXRlcmF0ZSBvdmVyIHRoZSBzYW1lIGdhbGxlcnkuIE9yIHVzZSB0 aGUgc2FtZSBmb3JtIGF0IGRpZmZlcmVudCBmcmVxdWVuY2llcy4gR2V0IGNyZWF0aXZlITwv bGk+CgkJPGxpPjxjb2RlPmNvdW50Zm9ybT0mcXVvdDs6ITU6Z2FsX3JvdzpzbWRfYmVsb3cm cXVvdDs8L2NvZGU+IDogYWdhaW4sIG1pc3Npbmcgb3V0IHRoZSBmaXJzdCB2YWx1ZSB3aWxs IG91dHB1dCBnYWxfcm93IGFmdGVyIGV2ZXJ5IGltYWdlLCBidXQgdGhpcyB0aW1lIHNraXBw aW5nIHRoZSA1dGggaW1hZ2U8L2xpPgoJPC91bD4KCgk8cD5UaGUgPGNvZGU+LDwvY29kZT4g YW5kIDxjb2RlPjo8L2NvZGU+IGNhbiBiZSBvdmVycmlkZGVuIHdpdGggdGhlIDxjb2RlPmRl bGltPC9jb2RlPiBhbmQgPGNvZGU+cGFyYW1kZWxpbTwvY29kZT4gYXR0cmlidXRlcywgcmVz cGVjdGl2ZWx5LjwvcD4KCgk8cD5UaGVyZSBhcmUgYSBmZXcgcnVsZXMgd2hlbiB1c2luZyB0 aGUgY291bnRmb3JtOjwvcD4KCgk8dWw+CgkJPGxpPm51bWJlcnMgbXVzdCBhcHBlYXIgZmly c3Q8L2xpPgoJCTxsaT50aGUgZm9ybSBuYW1lIGlzIHVzdWFsbHkgdGhlIGxhc3QgaXRlbSBp biB0aGUgY29sb24tc2VwYXJhdGVkIGxpc3QsIHRob3VnaCB5b3UgY2FuIHB1dCA8Y29kZT5z bWRfYWJvdmU8L2NvZGU+IG9yIDxjb2RlPnNtZF9iZWxvdzwvY29kZT4gbGFzdCBpZiB5b3Ug d2lzaDwvbGk+CgkJPGxpPjxjb2RlPnNtZF9ldmVyeTwvY29kZT4gb25seSBhZmZlY3RzIHRo ZSB2YWx1ZSB0aGF0IDxlbT5pbW1lZGlhdGVseTwvZW0+IGZvbGxvd3MgaXQsIGUuZy4gPGNv ZGU+Y291bnRmb3JtPSZxdW90O3NtZF9ldmVyeTo1Ojc6MTI6bXlfYWQmcXVvdDs8L2NvZGU+ IHdpbGwgb3V0cHV0IDxlbT5teV9hZDwvZW0+IGF0IGV2ZXJ5IDV0aCBpbWFnZSwgYXMgd2Vs bCBhcyA8ZW0+b25seTwvZW0+IG9uIHRoZSA3dGggYW5kIDEydGggaW1hZ2VzLiBUaHVzIHRo ZSBzZXF1ZW5jZSB3b3VsZCBiZSA1LCA3LCAxMCwgMTIsIDE1LCAyMCwgMjUsIDMwJiM4MjMw OzwvbGk+CgkJPGxpPmlmIHVzaW5nIDxjb2RlPnNtZF9ldmVyeTwvY29kZT4sIGl0IDxzdHJv bmc+bXVzdDwvc3Ryb25nPiBhcHBlYXIgYXMgdGhlIGZpcnN0IGl0ZW0uIEZvciBleGFtcGxl IDxjb2RlPmNvdW50Zm9ybT0mcXVvdDs0OnRoZV9mb3VydGgsIDY6c21kX2V2ZXJ5OjU6bXlf YWQmcXVvdDs8L2NvZGU+IGlzIGludmFsaWQsIGJ1dCA8Y29kZT5jb3VudGZvcm09JnF1b3Q7 NDp0aGVfZm91cnRoLCBzbWRfZXZlcnk6NTo2Om15X2FkJnF1b3Q7PC9jb2RlPiBpcyBPSzwv bGk+Cgk8L3VsPgoKCTxwPlNlZSA8YSBocmVmPSIjZWcxMCI+ZXhhbXBsZSAxMDwvYT4gZm9y IG1vcmUuPC9wPgoKCTxoMiBpZD0iY29tYm9zIj5Db21ib3M8L2gyPgoKCTxwPklmIHRoZSBi dWlsdC1pbiA8YSBocmVmPSIjcmVwX2dhbGxlcnkiPnJlcGxhY2VtZW50IHRhZ3M8L2E+IGFy ZW4mIzgyMTc7dCBlbm91Z2ggZm9yIHlvdXIgbmVlZHMgb3IgeW91IGZpbmQgeW91cnNlbGYg cmVwZWF0aW5nIHRoZSBzYW1lIGNvbWJpbmF0aW9uIGFuZCB3YW50IHRvIHNhdmUgeW91cnNl bGYgc29tZSB0eXBpbmcsIHlvdSBjYW4gZGVmaW5lIHlvdXIgb3duIHJlcGxhY2VtZW50IHRh Z3MuIFRoZSBzeW50YXggaXM6PC9wPgoKCTxwPjxjb2RlPmNvbWJvPSZxdW90O25ld3RhZzE6 ZGVmaW5pdGlvbiwgbmV3dGFnMjpkZWZpbml0aW9uLCAuLi4mcXVvdDs8L2NvZGU+PC9wPgoK CTxwPiYjODIxNjtkZWZpbml0aW9uJiM4MjE3OyBjYW4gYmUgYW55IGZpeGVkIHRleHQsIGFu eSBleGlzdGluZyByZXBsYWNlbWVudCB0YWcsIG9yIGFueSAmIzgyMTY7PyYjODIxNzsgYXJ0 aWNsZSB2YXJpYWJsZSBzbyB5b3UgY2FuIGdldCByZWFsbHkgd2lsZCBoZXJlLCBmb3IgZXhh bXBsZTo8L3A+CgoJPHA+PGNvZGU+Y29tYm89JnF1b3Q7aW1naW46Zm91bmQgaW4gP3MgW3Rh Z2dlZCB3aXRoID9rZXl3b3Jkcy4gUGhvdG8gYnkge2F1dGhvcn1dJnF1b3Q7PC9jb2RlPjwv cD4KCgk8cD5PbmNlIGRlZmluZWQsIDxjb2RlPntpbWdpbn08L2NvZGU+IGlzIGF2YWlsYWJs ZSB0byB5b3VyIGdhbGxlcnkgPGNvZGU+Zm9ybTwvY29kZT4gYW5kIG1pZ2h0IGJlIHJlcGxh Y2VkIHdpdGggJiM4MjIwO2ZvdW5kIGluIHpvbyBbdGFnZ2VkIHdpdGggemVicmEsIGFmcmlj YSwgc3RyaXBlcy4gUGhvdG8gYnkgQmxva2VdJiM4MjIxOy4gJHByZXRleHQgaXMgYWxzbyBh dmFpbGFibGUgZm9yIHRob3NlIGdlZWtzIHdobyBrbm93IHdoYXQmIzgyMTc7cyBpbiBpdCAo dGVtcG9yYXJpbHkgdXNlIDxjb2RlPmRlYnVnPSZxdW90OzQmcXVvdDs8L2NvZGU+IHRvIHZp ZXcgYWxsIGF2YWlsYWJsZSBhcnRpY2xlIHZhcmlhYmxlcykuPC9wPgoKCTxwPk9uZSB0aGlu ZyB0byB3YXRjaCBvdXQgZm9yIGlzIHRoYXQgdGhlIHNwYWNlIGNoYXJhY3RlciBpc24mIzgy MTc7dCBuZWNlc3NhcmlseSBhIGRlbGltaXRlciBmb3IgPGNvZGU+PzwvY29kZT4gdmFyaWFi bGVzIChiZWNhdXNlIGN1c3RvbSBmaWVsZHMgY2FuIGhhdmUgc3BhY2VzIGluIHRoZW0pLiBT byA8Y29kZT5jb21ibz0mcXVvdDtkb2Vzbm90d29yazo/cyBpbiA/Y2F0ZWdvcnkxJnF1b3Q7 PC9jb2RlPiB3aWxsIGxvb2sgZm9yIGEgdmFyaWFibGUgbGFiZWxsZWQgJiM4MjIwO3MgaW4m IzgyMjE7IGFuZCBvbmUgY2FsbGVkICYjODIyMDtjYXRlZ29yeTEmIzgyMjE7LiBPbmx5IG9u ZSBvZiB0aG9zZSBleGlzdHMhIENsZXZlciB1c2Ugb2YgcGFyZW50aGVzZXMgb3Igb3RoZXIg cHVuY3R1YXRpb24gY2FuIHdvcmsgcm91bmQgdGhpcy4gT3IgdXNlIDxjb2RlPnN0cmljdGZp ZWxkcz0mcXVvdDswJnF1b3Q7PC9jb2RlPiB0byB0dXJuIG9mZiB0aGUgdXNlIG9mIHNwYWNl cyBpbiBjdXN0b20gZmllbGQgbmFtZXMuPC9wPgoKCTxoMiBpZD0iY29sbGF0ZV9tb2RlIj5D b2xsYXRlIG1vZGU8L2gyPgoKCTxwPklmIHlvdSB3YW50IHRvIGdldCA8ZW0+cmVhbGx5PC9l bT4gZnVua3kgeW91IGNhbiBwdXQgdGhlIHBsdWdpbiBpbnRvIGEgMm5kIG1vZGUgY2FsbGVk ICYjODIyMDtjb2xsYXRpb24gbW9kZSYjODIyMTsuIFRoaXMgbWVhbnMgeW91ciBjaG9zZW4g Zm9ybSBpcyA8c3Ryb25nPm5vdDwvc3Ryb25nPiBleGVjdXRlZCBmb3IgZXZlcnkgaW1hZ2U7 IGl0IGlzIG9ubHkgdXNlZCBvbmNlIGF0IHRoZSB2ZXJ5IGVuZCBvZiB0aGUgbGlzdCwgYWZ0 ZXIgYWxsIGltYWdlcyBoYXZlIGJlZW4gaW50ZXJuYWxseSAmIzgyMjA7Y29sbGVjdGVkJiM4 MjIxOy4gSW4gZWZmZWN0LCB0aGUgcGx1Z2luIGJ1aWxkcyB1cCBhIGdpYW50IGFycmF5IG9m IGFsbCBtYXRjaGluZyBpbWFnZXMgcmVhZHkgZm9yIHlvdSB0byBvdXRwdXQgdGhlbSBhbGwg aW4gb25lIGdvLiBUaGlzIGlzIHZlcnkgaGFuZHkgZm9yIGRvaW5nIHNsaWRlc2hvd3MgYW5k IGlzIGJlc3QgZXhwbGFpbmVkIGJ5IGV4YW1wbGU6PC9wPgoKCTxwPjxjb2RlPmNvbGxhdGU9 JnF1b3Q7MSZxdW90OzwvY29kZT48L3A+CgoJPHA+c3dpdGNoZXMgY29sbGF0aW9uIG1vZGUg b24uIElmIHRoZSBwbHVnaW4gbWF0Y2hlZCA0IGltYWdlcyBhbmQgeW91IHdlcmUgdG8gdXNl IHRoZSByZXBsYWNlbWVudCB0YWcgPGNvZGU+e25hbWV9PC9jb2RlPiBpbiB5b3VyIGZvcm0g bGlrZSB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2si PlRoZSBtYXRjaGluZyBpbWFnZXM6IHtuYW1lfQo8L2NvZGU+PC9wcmU+CgoJPHA+eW91IG1p Z2h0IGdldCB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxv Y2siPlRoZSBtYXRjaGluZyBpbWFnZXM6IGhlcm9uLmpwZyxwZW5ndWluLmpwZyxlbXUuanBn LHB1ZmZpbi5qcGcKPC9jb2RlPjwvcHJlPgoKCTxwPlNvbWV0aW1lcyBpdCYjODIxNztzIHVz ZWZ1bCB0byBiZSBhYmxlIHRvIHB1dCBxdW90ZXMgYXJvdW5kIGVhY2ggaXRlbSBzbyB5b3Ug Y2FuIHRlbGwgY29sbGF0ZSBtb2RlIHRvIGRvIHRoYXQgaW5zdGVhZDo8L3A+CgoJPHA+PGNv ZGU+Y29sbGF0ZT0mcXVvdDtxdW90ZTp7bmFtZX0mcXVvdDs8L2NvZGU+PC9wPgoKCTxwPllv dSB3b3VsZCB0aGVuIGdldDo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9 ImJsb2NrIj5UaGUgbWF0Y2hpbmcgaW1hZ2VzOiAmcXVvdDtoZXJvbi5qcGcmcXVvdDssJnF1 b3Q7cGVuZ3Vpbi5qcGcmcXVvdDssJnF1b3Q7ZW11LmpwZyZxdW90OywmcXVvdDtwdWZmaW4u anBnJnF1b3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGUgZGVsaW1pdGVyIChhIGNvbW1hIGlu IHRoaXMgY2FzZSkgY2FuIGJlIG92ZXJyaWRkZW4gd2l0aCB0aGUgPGNvZGU+ZGVsaW08L2Nv ZGU+IGF0dHJpYnV0ZS4gWW91IG1heSB1c2UgPGNvZGU+c2dscXVvdGU8L2NvZGU+IHRvIHdy YXAgc2luZ2xlIHF1b3RlcyByb3VuZCB0aGUgaXRlbXMsIG9yICYjODIyMDtkYmxxdW90ZSYj ODIyMTsgYXMgYSBzeW5vbnltIGZvciAmIzgyMjA7cXVvdGUmIzgyMjE7IGlmIHlvdSBwcmVm ZXIuIFlvdSBjYW4gcXVvdGUgbW9yZSB0aGFuIG9uZSB0aGluZyBhdCBvbmNlIGJ5IHNwZWNp ZnlpbmcgdGhlIGl0ZW1zIGFzIGEgZGVsaW1pdGVkIGxpc3Q6PC9wPgoKCTxwPjxjb2RlPmNv bGxhdGU9JnF1b3Q7cXVvdGU6e25hbWV9OnthbHR9OntpbWdpbn0mcXVvdDs8L2NvZGU+PC9w PgoKCTxwPlllcywgeW91IGNhbiB1c2UgY29tYm9zISBUaGUgZGVsaW1pdGVyIHVzZWQgYmV0 d2VlbiBpdGVtcyBjYW4gYmUgb3ZlcnJpZGVuIHdpdGggdGhlIDxjb2RlPmNvbGxhdGVkZWxp bTwvY29kZT4gYXR0cmlidXRlLjwvcD4KCgk8cD5UaGUgc2Vjb25kIHNwZWNpYWwgZmVhdHVy ZSBvZiBjb2xsYXRpb24gbW9kZSBpcyB0aGF0IHlvdSBkbyBub3QgaGF2ZSB0byBhbHdheXMg b3V0cHV0IHRoZSBlbnRpcmUgbGlzdC4gWW91IGNhbiBncmFiIGluZGl2aWR1YWwgZW50aXRp ZXMgZnJvbSB3aXRoaW4gdGhlIGludGVybmFsIGFycmF5IGJ5IHVzaW5nIHRoZSAmIzgyMTY7 IyYjODIxNzsgbm90YXRpb24gdGh1czo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUg Y2xhc3M9ImJsb2NrIj57bmFtZX0gbWlnaHQgb3V0cHV0ICZxdW90O2hlcm9uLmpwZyZxdW90 OywmcXVvdDtwZW5ndWluLmpwZyZxdW90OywmcXVvdDtlbXUuanBnJnF1b3Q7LCZxdW90O3B1 ZmZpbi5qcGcmcXVvdDsgKGFzIGJlZm9yZSkKe25hbWUjMX0gd291bGQgb25seSBvdXRwdXQg aGVyb24uanBnCntuYW1lIzN9IHdvdWxkIG9ubHkgb3V0cHV0IGVtdS5qcGcKPC9jb2RlPjwv cHJlPgoKCTxwPk5vdGUgdGhhdCB3aGVuIHB1bGxpbmcgb3V0IGluZGl2aWR1YWwgZW50cmll cyB0aGV5IDxzdHJvbmc+ZG8gbm90PC9zdHJvbmc+IGdldCBxdW90ZXMgYWRkZWQgdG8gdGhl bSwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHlvdSB1c2VkIDxjb2RlPnF1b3RlPC9jb2RlPiBv ciBub3QuIFRoaXMgaXMgYmVjYXVzZSBpdCBpcyBhIHNpbmdsZSBpdGVtIHNvIHlvdSBjYW4g ZWFzaWx5IHB1dCB0aGUgcXVvdGVzIGluIHRoZSBmb3JtIGl0c2VsZiAodml6OiA8Y29kZT4m cXVvdDt7bmFtZSMyfSZxdW90OzwvY29kZT4pPC9wPgoKCTxwPk1lc3NpbmcgYXJvdW5kIHdp dGggcHVsbGluZyBvdXQgaW5kaXZpZHVhbCBpdGVtcyBhbmQgbGlzdHMgY2FuIHlpZWxkIHNv bWUgdmVyeSBpbnRlcmVzdGluZyByZXN1bHRzIGFuZCBhbGxvd3Mgc29tZSBjb21wbGV0ZWx5 IHdhY2t5IGdhbGxlcmllcyB0byBiZSBnZW5lcmF0ZWQuIFRyeSBjb21iaW5pbmcgc21kX2dh bGxlcnkgdGFncyB3aXRoIDxjb2RlPiZsdDt0eHA6aWZfZGlmZmVyZW50Jmd0OzwvY29kZT4g Zm9yIGEgcmVhbCBtaW5kIHNjcmFtYmxlIDotKTwvcD4KCgk8aDIgaWQ9ImV4YW1wbGVzIj5F eGFtcGxlczwvaDI+CgoJPHA+VGhlIGV4YW1wbGVzIGFsbCB1c2UgdGhlIGNsYXNzaWMgem9v IHdlYnNpdGUuIExldCYjODIxNztzIHNwZWNpZnkgc29tZSBwaWN0dXJlcyB0byBwdWxsIG91 dCBvZiB0aGUgZGF0YWJhc2U6PC9wPgoKCTxoMyBpZD0iZWcxIj5FeGFtcGxlIDE6IHNpbXBs ZSAvIGxpZ2h0Ym94ZWQgZ2FsbGVyeTwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUg Y2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9nYWxsZXJ5IGNhdGVnb3J5PSZxdW90O2FuaW1h bHMmcXVvdDsgc3VibGV2ZWw9JnF1b3Q7YWxsJnF1b3Q7IGZvcm09JnF1b3Q7Z2FsbGVyeSZx dW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhhdCBwdWxscyBvdXQgYWxsIHBpY3R1 cmVzIGZyb20gdGhlIGFuaW1hbHMgY2F0ZWdvcnksIGluY2x1ZGluZyBhbGwgc3ViLWNhdGVn b3JpZXMsIGFuZCBwYXNzZXMgdGhlbSB0byB0aGUgZm9ybSBjYWxsZWQgJiM4MjE2O2dhbGxl cnkmIzgyMTc7IGZvciBwcm9jZXNzaW5nLiBUaGUgZm9ybSBjb3VsZCBiZTo8L3A+Cgo8cHJl IGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7aW1nIGNsYXNzPSZxdW90 O2FuaW1hZ2UmcXVvdDsgc3JjPSZxdW90O3t1cmx9JnF1b3Q7IGFsdD0mcXVvdDt7YWx0fSZx dW90OyAvJmd0OwombHQ7ZGl2IGNsYXNzPSZxdW90O2FjYXB0aW9uJnF1b3Q7Jmd0O3t0aXRs ZX0mbHQ7L2RpdiZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoYXQgbWVhbnMsIGZvciBldmVy eSBtYXRjaGVkIGltYWdlLCBzdWJzdGl0dXRlIGl0cyA8c3BhbiBjbGFzcz0iY2FwcyI+VVJM PC9zcGFuPiwgYWx0IGFuZCB0aXRsZSB0YWdzIGludG8gdGhlIHJlbGV2YW50IHBsYWNlcy4g VGh1cyB5b3UgZ2V0IGEgc2VyaWVzIG9mIGltYWdlcyBvbiB0aGUgcGFnZSwgd2hpY2ggeW91 IGNhbiBzdHlsZSBhY2NvcmRpbmdseS48L3A+CgoJPHA+Rm9yIGEgbW9yZSBmYW5jeSBvdXRw dXQgdXNpbmcsIHNheSwgc2xpbWJveCwgeW91IGNvdWxkIGxvYWQgdGhlIHJlbGV2YW50IGxp YnJhcmllcyBhbmQgc3R5bGVzIGluIHRoZSA8Y29kZT4mbHQ7aGVhZCZndDs8L2NvZGU+IG9m IHlvdXIgcGFnZTo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2Nr Ij4mbHQ7c2NyaXB0IHR5cGU9JnF1b3Q7dGV4dC9qYXZhc2NyaXB0JnF1b3Q7IHNyYz0mcXVv dDsvanMvbW9vdG9vbHMuanMmcXVvdDsmZ3Q7Jmx0Oy9zY3JpcHQmZ3Q7CiZsdDtzY3JpcHQg dHlwZT0mcXVvdDt0ZXh0L2phdmFzY3JpcHQmcXVvdDsgc3JjPSZxdW90Oy9qcy9zbGltYm94 LmpzJnF1b3Q7Jmd0OyZsdDsvc2NyaXB0Jmd0OwombHQ7bGluayByZWw9JnF1b3Q7c3R5bGVz aGVldCZxdW90OyB0eXBlPSZxdW90O3RleHQvY3NzJnF1b3Q7IGhyZWY9JnF1b3Q7L2Nzcy9z bGltYm94LmNzcyZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhlbiB5b3VyICYj ODIxNjtnYWxsZXJ5JiM4MjE3OyBmb3JtIGNvdWxkIGJlOjwvcD4KCjxwcmUgY2xhc3M9ImJs b2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDthIHJlbD0mcXVvdDtsaWdodGJveC17Y2F0 ZWdvcnl9JnF1b3Q7IGhyZWY9JnF1b3Q7e3VybH0mcXVvdDsKICAgICB0aXRsZT0mcXVvdDtB IHBpY3R1cmUgb2Yge2NhcHRpb259JnF1b3Q7Jmd0OwogJmx0O3R4cDp0aHVtYm5haWwgaWQ9 JnF1b3Q7e2lkfSZxdW90OyAvJmd0OwombHQ7L2EmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5W b2lsYSEgVXNpbmcgdGhlIHNhbWUgc21kX2dhbGxlcnkgdGFnIHlvdSBoYXZlIGNoYW5nZWQg dGhlIHdheSB0aGUgZ2FsbGVyeSByZW5kZXJzIGZyb20gYSBzaW1wbGUgbGlzdCB0byBhIGZ1 bGwtZmVhdHVyZWQgc2xpbWJveC4gV2l0aCB2aXJ0dWFsbHkgdGhlIHNhbWUgZm9ybSB5b3Ug Y2FuIHN3aXRjaCB0aGUgb3V0cHV0IHRvIHRoaWNrYm94LCBsaWdodGJveCwgbGl0ZWJveCwg bW9vbmJveCBvciB3aGF0ZXZlci15b3UtbGlrZS1ib3ggZGVwZW5kaW5nIG9uIHdoaWNoIGxp YnJhcmllcyB5b3UgbG9hZC4gRm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgZm9yIHlvdXIgZmF2 b3VyaXRlIGVmZmVjdCBhbmQgcGx1ZyBpdCBpbnRvIHNtZF9nYWxsZXJ5LjwvcD4KCgk8aDMg aWQ9ImVnMiI+RXhhbXBsZSAyOiBsYXVuY2ggZnJvbSBvbmUgaW1hZ2U8L2gzPgoKCTxwPkEg Y29tbW9uIHJlcXVlc3QgaXMgdG8gYmUgYWJsZSB0byAmIzgyMjA7bGF1bmNoJiM4MjIxOyBh IHNsaW1ib3ggZ2FsbGVyeSBmcm9tIGEgc2luZ2xlIGltYWdlIG9yIHRleHQgbGluay4gVXNp bmcgYSBzaW5nbGUgaW1hZ2U6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNz PSJibG9jayI+Jmx0O3R4cDpzbWRfZ2FsbGVyeSBjYXRlZ29yeT0mcXVvdDthbmltYWxzJnF1 b3Q7CiAgICAgc3VibGV2ZWw9JnF1b3Q7YWxsJnF1b3Q7CiAgICAgZm9ybT0mcXVvdDtnYWxs ZXJ5JnF1b3Q7IHRodW1ibGltaXQ9JnF1b3Q7MSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+ CgoJPHA+VGhlIGZvcm0gd2lsbCB1c2UgdGhlIHNwZWNpYWwgPGNvZGU+e29iamVjdH08L2Nv ZGU+IHJlcGxhY2VtZW50IHRhZyBzbyBpdCBvbmx5IGRpc3BsYXlzIHRoZSB0aHVtYm5haWwg aWYgdGhlIHZhbHVlIG9mIHRodW1ibGltaXQgaGFzIDxzdHJvbmc+bm90PC9zdHJvbmc+IGJl ZW4gcmVhY2hlZDo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2Nr Ij4mbHQ7YSByZWw9JnF1b3Q7bGlnaHRib3gtc21kJnF1b3Q7IGhyZWY9JnF1b3Q7e3VybH0m cXVvdDsKICAgICB0aXRsZT0mcXVvdDtBIHBpY3R1cmUgb2Yge3RpdGxlfSZxdW90OyZndDsK e29iamVjdH0KJmx0Oy9hJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+Q2hhbmdlIHRoZSBzdGFy dCBpbWFnZSBieSBzcGVjaWZ5aW5nIDxjb2RlPnRodW1ib2Zmc2V0PC9jb2RlPiAmIzgyMTI7 IG5vdGUgdGhpcyB3aWxsIGFsc28gc3RhcnQgdGhlIGxpZ2h0Ym94IGVmZmVjdCBmcm9tIHRo ZSBpbWFnZSB5b3UgY2hvb3NlLiBJZiB5b3Ugd2FudCB0byBzdGFydCBvbiBhIHNwZWNpZmlj IGltYWdlIGluIHBvc2l0aW9uIDEsIHVzZSB0aGUgPGNvZGU+aWQ8L2NvZGU+IGF0dHJpYnV0 ZSB0byBicmluZyBpdCB0byB0aGUgdG9wIG9mIHRoZSBsaXN0LCBvciBjaGFuZ2UgdGhlIHNv cnQgb3JkZXIuPC9wPgoKCTxwPklmIHlvdSB3YW50ZWQgdG8gbGF1bmNoIHRoZSBnYWxsZXJ5 IGZyb20gYSB0ZXh0IGxpbmssIGFkZCBzb21ldGhpbmcgbGlrZSA8Y29kZT50ZXh0PSZxdW90 O0NsaWNrIHRvIHN0YXJ0IGxpZ2h0Ym94JnF1b3Q7PC9jb2RlPi48L3A+CgoJPGgzIGlkPSJl ZzMiPkV4YW1wbGUgMzogcG9wdXAgZ2FsbGVyeTwvaDM+CgoJPHA+VG8gYWNoaWV2ZSBhbiBl ZmZlY3Qgc2ltaWxhciB0byByc3NfdGh1bWJwb3AsIGFkZCBhbiBpbWFnZSBhbmQgY2FwdGlv biBwbGFjZWhvbGRlciBvdXRzaWRlIHRoZSBjYWxsIHRvIHNtZF9nYWxsZXJ5LCB0aGVuIGlu Y2x1ZGUgeW91ciBzbWRfZ2FsbGVyeSB0YWcgYXMgdXN1YWwuIFRoaXMgdGltZSB3ZSBhcmUg b25seSBpbnRlcmVzdGVkIGluIGFsbCB0aGUgcGljdHVyZXMgZnJvbSB0aGUgY2F0ZWdvcmll cyB1cCB0byB0d28gbGV2ZWxzIGJlbG93IGJvdGggJiM4MjIwO2FuaW1hbHMmIzgyMjE7LCBw bHVzIHdoaWNoZXZlciBjYXRlZ29yaWVzIGFyZSBsaXN0ZWQgaW4gPGNvZGU+bXlfY3VzdG9t X2ZpZWxkPC9jb2RlPiBhbmQgdGhlIGltYWdlcyB3aXRoIElEcyAyNSwgMzgsIDM5LCA0MCBh bmQgNDI6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0 O2ltZyBpZD0mcXVvdDtmdWxsc2l6ZSZxdW90OyBzcmM9JnF1b3Q7L2ltYWdlcy9lbXB0eS5q cGcmcXVvdDsgLyZndDsKJmx0O3NwYW4gaWQ9JnF1b3Q7ZnVsbGNhcHRpb24mcXVvdDsmZ3Q7 Jmx0Oy9zcGFuJmd0OwombHQ7dHhwOnNtZF9nYWxsZXJ5IHN1YmxldmVsPSZxdW90OzImcXVv dDsKICAgICBjYXRlZ29yeT0mcXVvdDthbmltYWxzLCA/bXlfY3VzdG9tX2ZpZWxkJnF1b3Q7 CiAgICAgaWQ9JnF1b3Q7MjUsIDQyLCAzOC00MCZxdW90OyBmb3JtPSZxdW90O2dhbGxlcnkm cXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoZSBnYWxsZXJ5IGZvcm0gbG9va3Mg c2NhcnkgYnV0IGlzIG9ubHkgYSB0aHVtYm5haWwgaW1hZ2Ugc3Vycm91bmRlZCBieSBhIHNp bXBsZSBhbmNob3IgdGFnIHdpdGggdHdvIGFjdGlvbnMgYXNzaWduZWQgdG8gaXQ6IGEgbW91 c2VvdmVyIHRvIGNvcHkgdGhlIHBpY3R1cmUgYW5kIGNhcHRpb24gaW50byB0aGUgcGxhY2Vo b2xkZXI7IGFuZCBhIG1vdXNlb3V0IHRvIHJlbW92ZSB0aGVtOjwvcD4KCjxwcmUgY2xhc3M9 ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDthIGhyZWY9JnF1b3Q7e3VybH0mcXVv dDsgdGl0bGU9JnF1b3Q7e3RpdGxlfSZxdW90OwogICAgIG9ubW91c2VvdmVyPSZxdW90O2Rv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCYjMzk7ZnVsbHNpemUmIzM5Oykuc3JjID0gdGhpcy5o cmVmOwogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCYjMzk7ZnVsbGNhcHRpb24mIzM5 OykuaW5uZXJIVE1MID0gdGhpcy50aXRsZTsgcmV0dXJuIGZhbHNlOyZxdW90OwogICAgIG9u bW91c2VvdXQ9JnF1b3Q7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJiMzOTtmdWxsc2l6ZSYj Mzk7KS5zcmMgPSAmIzM5Oy9pbWFnZXMvMTcuanBnJiMzOTs7CiAgICAgZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJiMzOTtmdWxsY2FwdGlvbiYjMzk7KS5pbm5lckhUTUwgPSAmIzM5OyYj Mzk7OyByZXR1cm4gZmFsc2U7JnF1b3Q7Jmd0OwogICZsdDtpbWcgc3JjPSZxdW90O3t0aHVt YnVybH0mcXVvdDsgYWx0PSZxdW90O3thbHR9JnF1b3Q7IC8mZ3Q7CiZsdDsvYSZndDsKPC9j b2RlPjwvcHJlPgoKCTxwPk5vdGUgdGhlcmUgYXJlIG11Y2ggbmVhdGVyIHdheXMgb2YgZG9p bmcgdGhpcyAoZS5nLiB3aXRoIGpRdWVyeSkgYW5kIGl0JiM4MjE3O3Mgbm90IHJlY29tbWVu ZGVkIHRvIHVzZSB0aGlzIGZvcm0gaW4gYSBsaXZlIHNpdGUsIGJ1dCBpdCBnaXZlcyBhIGZs YXZvdXIgb2Ygd2hhdCBpcyBwb3NzaWJsZS48L3A+CgoJPGgzIGlkPSJlZzQiPkV4YW1wbGUg NDogc2xpZGVzaG93PC9oMz4KCgk8cD5UaGlzIG9uZSB1c2VzIGNvbGxhdGUgbW9kZSBidXQg aXMgbm90IG11Y2ggbW9yZSBkaWZmaWN1bHQgdG8gdW5kZXJzdGFuZC4gSW4geW91ciA8Y29k ZT4mbHQ7aGVhZCZndDs8L2NvZGU+IHNlY3Rpb246PC9wPgoKPHByZSBjbGFzcz0iYmxvY2si Pjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQvamF2YXNj cmlwdCZxdW90OyBzcmM9JnF1b3Q7L2pzL21vb3Rvb2xzLmpzJnF1b3Q7Jmd0OyZsdDsvc2Ny aXB0Jmd0OwombHQ7c2NyaXB0IHR5cGU9JnF1b3Q7dGV4dC9qYXZhc2NyaXB0JnF1b3Q7IHNy Yz0mcXVvdDsvanMvc2xpZGVzaG93LmpzJnF1b3Q7Jmd0OyZsdDsvc2NyaXB0Jmd0Owo8L2Nv ZGU+PC9wcmU+CgoJPHA+VGhlIHRhZzo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUg Y2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9nYWxsZXJ5CiAgY2F0ZWdvcnk9JnF1b3Q7Ymly ZHMsIGZpc2gmcXVvdDsgZm9ybT0mcXVvdDtnYWxsZXJ5JnF1b3Q7CiAgY29tYm89JnF1b3Q7 aW1nbGlzdDp7aWR9e2V4dH0mcXVvdDsKICBjb2xsYXRlPSZxdW90O3F1b3RlOntpbWdsaXN0 fTp7YWx0fSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhhdCBwdWxscyBhbGwg cGljdHVyZXMgZnJvbSB0aGUgYmlyZHMgYW5kIGZpc2ggY2F0ZWdvcmllcy4gQWx0aG91Z2gg dGVjaG5pY2FsbHkgdW5uZWNlc3NhcnksIGEgY29tYm8gaGFzIGJlZW4gZGVmaW5lZCB0byBz aG93IGhvdyBpdCBjYW4gYmUgdXNlZC4gVGhpcyBjb21ibyBpcyBjYWxsZWQgPGNvZGU+aW1n bGlzdDwvY29kZT4gYW5kIGlzIGRlZmluZWQgYXMgdGhlIGltYWdlJiM4MjE3O3MgSUQgbnVt YmVyIHBsdXMgaXRzIGV4dGVuc2lvbi4gV2UgdXNlIHRoaXMgaW4gdGhlIGNvbGxhdGUgYXR0 cmlidXRlIGFuZCB0ZWxsIGl0IHRvIHB1dCBkb3VibGUgcXVvdGVzIHJvdW5kIGV2ZXJ5IGl0 ZW0gaW4gJiM4MjE2O2ltZ2xpc3QmIzgyMTc7IGFuZCAmIzgyMTY7YWx0JiM4MjE3Oy4gVGhl biB3ZSBjYW4gcHV0IHRoZXNlIHZhbHVlcyBpbnRvIHRoZSBuZWNlc3NhcnkgamF2YXNjcmlw dCBpbiB0aGUgPGNvZGU+Z2FsbGVyeTwvY29kZT4gZm9ybSB0byBnZW5lcmF0ZSB0aGUgc2xp ZGVzaG93OjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZs dDtkaXYgY2xhc3M9JnF1b3Q7c2xpZGVzaG93JnF1b3Q7IGlkPSZxdW90O3NsaWRlc2hvdzEm cXVvdDsmZ3Q7CiAmbHQ7aW1nIHNyYz0mcXVvdDsmbHQ7dHhwOnNpdGVfdXJsIC8mZ3Q7aW1h Z2VzL3tpZCMxfS5qcGcmcXVvdDsKICAgICBhbHQ9JnF1b3Q7e2FsdCMxfSZxdW90OyB3aWR0 aD0mcXVvdDt7d2lkdGgjMX0mcXVvdDsgaGVpZ2h0PSZxdW90O3toZWlnaHQjMX0mcXVvdDsg LyZndDsKJmx0Oy9kaXYmZ3Q7CjwvY29kZT4KPGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7c2Ny aXB0IHR5cGU9JnF1b3Q7dGV4dC9qYXZhc2NyaXB0JnF1b3Q7Jmd0OwpteVNob3cxID0gbmV3 IFNsaWRlc2hvdygmcXVvdDtzbGlkZXNob3cxJnF1b3Q7LAogIHsgaHU6ICZxdW90OyZsdDt0 eHA6c2l0ZV91cmwgLyZndDtpbWFnZXMvJnF1b3Q7LAogICAgaW1hZ2VzOiBbe2ltZ2xpc3R9 XSwKICAgIGNhcHRpb25zOiBbe2FsdH1dLAogICAgY2xhc3NlczogWyZxdW90O3ByZXYmcXVv dDssJnF1b3Q7bmV4dCZxdW90OywmcXVvdDthY3RpdmUmcXVvdDtdLAogICAgdHlwZTogJnF1 b3Q7ZmFkZSZxdW90OwogIH0pOwombHQ7L3NjcmlwdCZndDsKPC9jb2RlPjwvcHJlPgoKCTxw Pk5vdGUgdGhhdCB0aGUgaW5pdGlhbCBwb3J0aW9uIChpbiB0aGUgZGl2IGFuZCBpbWcgdGFn cykgdXNlcyB0aGUgJiM4MjE2OyMmIzgyMTc7IG5vdGF0aW9uIGJlY2F1c2Ugd2Ugb25seSB3 YW50IHRvIGRpc3BsYXkgb25lIGltYWdlIHRvICYjODIyMDtzdGFydCYjODIyMTsgdGhlIHNs aWRlc2hvdy4gSW4gdGhpcyBjYXNlIHdlJiM4MjE3O3JlIHVzaW5nIHRoZSBmaXJzdCBpbWFn ZSBpbiB0aGUgbGlzdCwgYnV0IHlvdSBjYW4gY2hhbmdlIHRoZSAjMSBmb3IgIzQyIGlmIHlv dSB3YW50ZWQgdG8gc2hvdyB0aGUgZm9ydHktc2Vjb25kIGltYWdlIGluc3RlYWQhIFRoZSBw YXJ0IGluIHRoZSBzY3JpcHQgdGFnIHVzZXMgdGhlIGZ1bGwsIHF1b3RlZCBsaXN0cyBiZWNh dXNlIHRoYXQmIzgyMTc7cyB0aGUgZm9ybWF0IHRoZSBqYXZhc2NyaXB0IHJlcXVpcmVzLjwv cD4KCgk8aDMgaWQ9ImVnNSI+RXhhbXBsZSA1OiBwYWdpbmF0aW9uPC9oMz4KCgk8cD5UbyBh ZGQgcGFnaW5nIHRvIGEgZ2FsbGVyeSB5b3UgdXNlIHRoZSA8Y29kZT5saW1pdDwvY29kZT4g YXR0cmlidXRlIHRvIHNob3cgYSBudW1iZXIgb2YgdGh1bWJzIHBlciBwYWdlLiBGb3IgYSBw YWdlZCB0aHVtYnBvcCBnYWxsZXJ5IHRoYXQgc2hvd3MgZml2ZSB0aHVtYnMgcGVyIHBhZ2U6 PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O2ltZyBp ZD0mcXVvdDtmdWxsc2l6ZSZxdW90OyBzcmM9JnF1b3Q7L2ltYWdlcy9lbXB0eS5qcGcmcXVv dDsgLyZndDsKJmx0O3NwYW4gaWQ9JnF1b3Q7ZnVsbGNhcHRpb24mcXVvdDsmZ3Q7Jmx0Oy9z cGFuJmd0OwombHQ7dHhwOnNtZF9nYWxsZXJ5IGNhdGVnb3J5PSZxdW90O2FuaW1hbHMmcXVv dDsKICBmb3JtPSZxdW90O2dhbGxlcnkmcXVvdDsgcGFnZWZvcm09JnF1b3Q7Z2FsbGVyeV9u YXYmcXVvdDsKICBsaW1pdD0mcXVvdDs1JnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8 cD5UaGUgJiM4MjE2O2dhbGxlcnkmIzgyMTc7IGZvcm0gaXMgaWRlbnRpY2FsIHRvIHRoZSBv bmUgaW4gPGEgaHJlZj0iI2VnNCI+ZXhhbXBsZSA0PC9hPiwgd2hpbGUgeW91ciBnYWxsZXJ5 X25hdiBmb3JtIG1pZ2h0IGxvb2sgbGlrZSB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2Nr Ij48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtkaXYgY2xhc3M9JnF1b3Q7dG90YWwmcXVvdDsm Z3Q7IyBvZiBwaWNzOiB7dG90YWxpbWFnZXN9Jmx0Oy9kaXYmZ3Q7CiAgICAge25hdmZpcnN0 fSB7bmF2cHJldn0KICAgICB7bmF2ZWFybGllcn0ge25hdnRoaXN9IHtuYXZsYXRlcn0KICAg ICB7bmF2bmV4dH0ge25hdmxhc3R9CjwvY29kZT48L3ByZT4KCgk8cD5UaGF0IG1pZ2h0IHJl bmRlciBzb21ldGhpbmcgc2ltaWxhciB0byB0aGlzIGJlbG93IHRoZSB0aHVtYnM6PC9wPgoK PHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+IyBvZiBwaWNzOiAzOAog ICAgIEZpcnN0ICZsdDsgMSAyIDMgNCA1IDYgNyA4ICZndDsgTGFzdAo8L2NvZGU+PC9wcmU+ CgoJPGgzIGlkPSJlZzYiPkV4YW1wbGUgNjogb25jaGFuZ2U8L2gzPgoKCTxwPklmIHlvdSB3 YW50IHRvIHNpbXVsYXRlIG11bHRpcGxlIGdhbGxlcmllcyBmcm9tIG9uZSBzbWRfZ2FsbGVy eSB0YWcgeW91IGNhbiB1c2UgPGNvZGU+b25jaGFuZ2U8L2NvZGU+IHRvICYjODIyMDt3YXRj aCYjODIyMTsgZm9yIHdoZW4gY2VydGFpbiBhdHRyaWJ1dGVzIG9mIGltYWdlcyBjaGFuZ2Ug YW5kIGluc2VydCBzcGVjaWFsIHRhZ3MgPGVtPm9ubHkgd2hlbiBzb21ldGhpbmcgY2hhbmdl czwvZW0+LiBJbiB0aGlzIHJlZ2FyZCBpdCBhY3RzIGxpa2UgYSBzb3VwZWQtdXAgdmVyc2lv biBvZiA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiYjODIxNztzIGJ1aWx0LWluIDxj b2RlPiZsdDt0eHA6aWZfZGlmZmVyZW50Jmd0OzwvY29kZT4gdGFnLjwvcD4KCgk8cD5Zb3Ug Y2FuIHdhdGNoIHRoZSB1c3VhbCB0aGluZ3MgbGlrZSA8Y29kZT5jYXRlZ29yeTwvY29kZT4s IDxjb2RlPmF1dGhvcjwvY29kZT4sIDxjb2RlPndpZHRoPC9jb2RlPiwgPGNvZGU+aGVpZ2h0 PC9jb2RlPiwgPGNvZGU+ZXh0PC9jb2RlPmVuc2lvbiBhbmQgc28gb246PC9wPgoKPHByZSBj bGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZ2FsbGVyeQog ICAgIGNhdGVnb3J5PSZxdW90O2JpcmRzLCBmaXNoJnF1b3Q7IGZvcm09JnF1b3Q7Z2FsbGVy eSZxdW90OwogICAgIG9uY2hhbmdlPSZxdW90O2NhdGVnb3J5X3RpdGxlJnF1b3Q7CiAgICAg b25jaGFuZ2V3cmFwdGFnPSZxdW90O2gzJnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8 cD5TaW5jZSB0aGUgcGx1Z2luIG5vcm1hbGx5IHNvcnRzIGJ5IGNhdGVnb3J5LCB0aGlzIHdp bGwgaGF2ZSB0aGUgZWZmZWN0IG9mIGFkZGluZyBvbmUgcmVwbGFjZW1lbnQgdGFnIDxjb2Rl PntvbmNoYW5nZTpjYXRlZ29yeV90aXRsZX08L2NvZGU+IGF0IHRoZSB2ZXJ5IGJlZ2lubmlu ZyBvZiB0aGUgdGh1bWIgbGlzdCBhbmQgYWxzbyB3aGVuIHRoZSBjYXRlZ29yeSBzd2l0Y2hl cyBmcm9tICYjODIxNjtiaXJkcyYjODIxNzsgdG8gJiM4MjE2O2Zpc2gmIzgyMTc7LiBUaHVz IHlvdXIgZ2FsbGVyeSBmb3JtIGNvdWxkIGJlOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48 Y29kZSBjbGFzcz0iYmxvY2siPntvbmNoYW5nZTpjYXRlZ29yeV90aXRsZX0KJmx0O2EgaHJl Zj0mcXVvdDt7dXJsfSZxdW90OyByZWw9JnF1b3Q7bGlnaHRib3gte2NhdGVnb3J5fSZxdW90 OyZndDsKe29iamVjdH0KJmx0Oy9hJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhhdCB3b3Vs ZCBtYWtlIHR3byBsaWdodGJveGFibGUgc2V0cyBvZiB0aHVtYm5haWxzIHdpdGggYSBoZWFk aW5nIDMgYWJvdmUgZWFjaCBncm91cCBjb250YWluaW5nIHRoZSBjYXRlZ29yeSB0aXRsZS48 L3A+CgoJPHA+Tm90ZSB0aGF0IGlmIHlvdSBhZGQgPGNvZGU+dGh1bWJsaW1pdD0mcXVvdDsx JnF1b3Q7PC9jb2RlPiB0byB0aGUgc21kX2dhbGxlcnkgdGFnIHlvdSBjYW4gc2hvdyBqdXN0 IG9uZSB0aHVtYm5haWwgaW4gZWFjaCBncm91cCwgd2l0aCBoZWFkaW5ncyBhYm92ZSBlYWNo IHRodW1iLiBWaXNpdG9ycyBjbGlja2luZyB0aGUgdGh1bWIgd2lsbCBsYXVuY2ggdGhlIGxp Z2h0Ym94IGFuZCBiZSBhYmxlIHRvIGJyb3dzZSB0aGUgcmVsZXZhbnQgY2F0ZWdvcnkuPC9w PgoKCTxwPkFuIGV4dHJhIHBhaXIgb2YgcmVwbGFjZW1lbnQgdGFncyBhcmUgYXZhaWxhYmxl IGlmIHlvdSB3aXNoIHRvIHdyYXAgdGhlIG9iamVjdHMgdGhlbXNlbHZlcyB0byBncm91cCB0 aGVtLiBVc2UgdGhlIDxjb2RlPmdyb3VwdGFnPC9jb2RlPiBhbmQgPGNvZGU+Z3JvdXBjbGFz czwvY29kZT4gYXR0cmlidXRlcyB0byBzZXQgaXQgdXAsIHRoZW4gdHdvIG5ldyByZXBsYWNl bWVudCB0YWdzIGNhbGxlZCA8Y29kZT5ncm91cHRhZ3N0YXJ0PC9jb2RlPiBhbmQgPGNvZGU+ Z3JvdXB0YWdlbmQ8L2NvZGU+IGJlY29tZSBhdmFpbGFibGUuIFRoZXkgYXJlIGNvbmRpdGlv bmFsIGFuZCBhcmUgb25seSBwb3B1bGF0ZWQgd2hlbiB0aGUgYXR0cmlidXRlcyB5b3UgYXJl IHdhdGNoaW5nL3NvcnRpbmcgYnkgY2hhbmdlLiBVc2UgaXQgbGlrZSB0aGlzOjwvcD4KCjxw cmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2dhbGxl cnkgaWQ9JnF1b3Q7P2FydGljbGVfaW1hZ2UmcXVvdDsKICAgICBjYXRlZ29yeT0mcXVvdDti aXJkcywgZmlzaCZxdW90OyBmb3JtPSZxdW90O2dhbGxlcnkmcXVvdDsKICAgICBvbmNoYW5n ZT0mcXVvdDtjYXRlZ29yeV90aXRsZSZxdW90OwogICAgIG9uY2hhbmdld3JhcHRhZz0mcXVv dDtoMyZxdW90OwogICAgIGdyb3VwdGFnPSZxdW90O2RpdiZxdW90OyBncm91cGNsYXNzPSZx dW90O2JveCZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+Cgo8cHJlIGNsYXNzPSJibG9jayI+ PGNvZGUgY2xhc3M9ImJsb2NrIj57b25jaGFuZ2U6Y2F0ZWdvcnlfdGl0bGV9Cntncm91cHRh Z3N0YXJ0fQombHQ7YSBocmVmPSZxdW90O3t1cmx9JnF1b3Q7IHJlbD0mcXVvdDtsaWdodGJv eC17Y2F0ZWdvcnl9JnF1b3Q7Jmd0Owp7b2JqZWN0fQombHQ7L2EmZ3Q7Cntncm91cHRhZ2Vu ZH0KPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGUgdGhhdCB5b3UgY2FuIG1vdmUgdGhlIDxjb2Rl Pmdyb3VwdGFnc3RhcnQ8L2NvZGU+IHRvIHN1cnJvdW5kIHRoZSA8Y29kZT5vbmNoYW5nZTwv Y29kZT5kIHRpdGxlIGlmIHlvdSB3aXNoLjwvcD4KCgk8aDMgaWQ9ImVnNyI+RXhhbXBsZSA3 OiBzbWRfZXZlcnk8L2gzPgoKCTxwPllvdSBjYW4gYWxzbyB0cmlnZ2VyIGFuIG9uY2hhbmdl IGV2ZW50IGV2ZXJ5IG50aCBpbWFnZTo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUg Y2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9nYWxsZXJ5IGNhdGVnb3J5PSZxdW90O2Zyb250 cGFnZSZxdW90OwogICAgIGxpbWl0PSZxdW90OzkmcXVvdDsgc29ydD0mcXVvdDtyYW5kb20m cXVvdDsKICAgICBvbmNoYW5nZT0mcXVvdDtzbWRfZXZlcnk6MyZxdW90OwogICAgIGdyb3Vw dGFnPSZxdW90O3VsJnF1b3Q7IGdyb3VwY2xhc3M9JnF1b3Q7c2xpZGVzaG93JnF1b3Q7Jmd0 Owp7Z3JvdXB0YWdzdGFydH0KICAgJmx0O2xpJmd0OwogICAgICAmbHQ7YSBocmVmPSZxdW90 OyZsdDt0eHA6cGVybWxpbmsgaWQ9JnF1b3Q7e2FsdH0mcXVvdDsgLyZndDsmcXVvdDsmZ3Q7 CiAgICAgICAgICZsdDtpbWcgc3JjPSZxdW90O3t0aHVtYnVybH0mcXVvdDsgYWx0PSZxdW90 OyZxdW90OyAvJmd0OwogICAgICAgICAmbHQ7c3BhbiZndDt7dGl0bGV9Jmx0Oy9zcGFuJmd0 OwogICAgICAmbHQ7L2EmZ3Q7CiAgICZsdDsvbGkmZ3Q7Cntncm91cHRhZ2VuZH0KJmx0Oy90 eHA6c21kX2dhbGxlcnkmZ3Q7CjwvY29kZT48L3ByZT4KCgk8aDMgaWQ9ImVnOCI+RXhhbXBs ZSA4OiB1bmNhdGVnb3JpemVkIGltYWdlczwvaDM+CgoJPHA+U29tZXRpbWVzIHlvdSBtaWdo dCB3aXNoIHRvIGV4dHJhY3QgaW1hZ2VzIHRoYXQgZG8gbm90IGhhdmUgYSBjYXRlZ29yeSBh c3NpZ25lZC4gWW91IG5lZWQgdG8gdXNlIHRoZSBzcGVjaWFsIHZhbHVlIDxjb2RlPlNNRF9F TVBUWTwvY29kZT4gZm9yIHRoaXM6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNs YXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZ2FsbGVyeSBjYXRlZ29yeT0mcXVvdDtTTURfRU1Q VFksIHNob2VzJnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5Zb3UgY2FuIGFsc28g bmVnYXRlIHRoZSBsb2dpYyBzbyB5b3UgY2FuIGV4dHJhY3QgYWxsIGltYWdlcyB0aGF0IGhh dmUgc29tZSAoYW55KSBjYXRlZ29yeSBhc3NpZ25lZCB0byB0aGVtOjwvcD4KCjxwcmUgY2xh c3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2dhbGxlcnkgY2F0 ZWdvcnk9JnF1b3Q7IVNNRF9FTVBUWSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPGgz IGlkPSJlZzkiPkV4YW1wbGUgOToge29iamVjdH0gYW5kIG9iamVjdGZvcm08L2gzPgoKCTxw PlRoZSBkZWZhdWx0IDxjb2RlPntvYmplY3R9PC9jb2RlPiBvdXRwdXRzIGEgc2ltcGxlIGh5 cGVybGlua2VkIHRodW1ibmFpbC4gSWYgeW91IHdhbnQgc29tZXRoaW5nIGEgYml0IG1vcmUg ZXhvdGljLCBsaWtlIGxhdW5jaGluZyBhIHNoYWRvd2JveCBlZmZlY3QgZnJvbSBhIHNpbmds ZSB0aHVtYm5haWwgdGhhdCBhbHNvIGhhcyB0aGUgY2FwdGlvbiBiZW5lYXRoIGl0LCB5b3Ug bmVlZCB0byBjdXN0b21pc2UgdGhlIDxjb2RlPntvYmplY3R9PC9jb2RlPiB2aWEgdGhlIDxj b2RlPm9iamVjdGZvcm08L2NvZGU+IGF0dHJpYnV0ZS4gUHV0IGEgbGlzdCBvZiBpbWFnZSBJ RHMgaW4geW91ciBhcnRpY2xlIGltYWdlIGZpZWxkIGFuZCB0aGVuOjwvcD4KCjxwcmUgY2xh c3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2dhbGxlcnkgdGh1 bWJsaW1pdD0mcXVvdDsxJnF1b3Q7CiAgICAgaWQ9JnF1b3Q7P2FydGljbGVfaW1hZ2UmcXVv dDsgd3JhcHRhZz0mcXVvdDtkaXYmcXVvdDsKICAgICBjbGFzcz0mcXVvdDt0aHVtYnMmcXVv dDsgb2JqZWN0Zm9ybT0mcXVvdDtteV9vYmomcXVvdDsKICAgICBjb21ibz0mcXVvdDthcnRp ZDo/dGhpc2lkJnF1b3Q7Jmd0OwogICZsdDthIHJlbD0mcXVvdDtzaGFkb3dib3hbe2FydGlk fV07CiAgICAgb3B0aW9ucz17Y291bnRlclR5cGU6JiMzOTtza2lwJiMzOTssCiAgICAgY29u dGludW91czp0cnVlLAogICAgIGFuaW1hdGU6ZmFsc2UsCiAgICAgYW5pbVNlcXVlbmNlOiYj Mzk7c3luYyYjMzk7fSZxdW90OwogICAgIGhyZWY9JnF1b3Q7e3VybH0mcXVvdDsKICAgICB0 aXRsZT0mcXVvdDt7YWx0fSZxdW90OyZndDt7b2JqZWN0fSZsdDsvYSZndDsKJmx0Oy90eHA6 c21kX2dhbGxlcnkmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5BbmQgaW4gPGNvZGU+bXlfb2Jq PC9jb2RlPiwgeW91IGNvdWxkIHB1dDo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUg Y2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnRodW1ibmFpbCBpZD0mcXVvdDt7aWR9JnF1b3Q7IC8m Z3Q7Jmx0O2JyIC8mZ3Q7e3RpdGxlfQo8L2NvZGU+PC9wcmU+CgoJPHA+Tm90aWNlIGhvdyB0 aGUgcmVwbGFjZW1lbnQgdGFncyBzdGlsbCB3b3JrIGluIHRoZSA8Y29kZT5vYmplY3Rmb3Jt PC9jb2RlPj8gVGhpcyBhbGxvd3MgeW91IHRvIGJ1aWxkIHVwIGEgY29tcGxldGUgbGF5b3V0 IGZvciB0aGUgbGF1bmNoYWJsZSB0aHVtYm5haWwgYW5kIGhhdmUgaXQgb25seSByZW5kZXJl ZCBvbmNlIG9uIHRoZSBwYWdlLiBUaGUgcmVzdCBvZiB0aGUgY29udGFpbmVyIGluIHRoaXMg ZXhhbXBsZSByZW5kZXJzIGFsbCB0aGUgJiM4MjIwO2hpZGRlbiYjODIyMTsgaW1hZ2VzIGlu IHRoZSBzaGFkb3dib3ggZ2FsbGVyeS48L3A+CgoJPGgzIGlkPSJlZzEwIj5FeGFtcGxlIDEw OiA8Y29kZT5jb3VudGZvcm08L2NvZGU+PC9oMz4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29k ZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2dhbGxlcnkgY2F0ZWdvcnk9JnF1b3Q7YW5p bWFscyZxdW90OwogICAgIGNvdW50Zm9ybT0mcXVvdDsxOmdhbF9hOnNtZF9hYm92ZSwKICAg ICAgIHt0b3RhbGltYWdlc306Z2FsX2MsCiAgICAgICBzbWRfZXZlcnk6Mzohe3RvdGFsaW1h Z2VzfTpnYWxfYiZxdW90OwogICAgIGNvdW50cG9zPSZxdW90O2JlbG93JnF1b3Q7Jmd0Owom bHQ7dHhwOnRodW1ibmFpbCBpZD0mcXVvdDt7aWR9JnF1b3Q7IC8mZ3Q7CiZsdDsvdHhwOnNt ZF9nYWxsZXJ5Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+Tm90ZSB0aGF0IDxjb2RlPmNvdW50 cG9zPC9jb2RlPiBpcyBzZXQgdG8gPGNvZGU+YmVsb3c8L2NvZGU+IGluIHRoaXMgZXhhbXBs ZSBzbyBhbGwgb3V0cHV0IGFwcGVhcnMgPGVtPmFmdGVyPC9lbT4gdGhlIGdpdmVuIGltYWdl cy4gSWYgeW91IG1hZGUgdGhlIGZvbGxvd2luZyB0aHJlZSBmb3JtcywgeW91ciB0YWcgd291 bGQgc3BsaXQgdGhlIGdhbGxlcnkgaW50byAmIzgyMTY7cm93cyYjODIxNzsgb2YgMyBpbWFn ZXM6PC9wPgoKCTxwPmdhbF9hOiA8Y29kZT4mbHQ7ZGl2IGNsYXNzPSZxdW90O25ld3JvdyZx dW90OyZndDs8L2NvZGU+PGJyIC8+CmdhbF9iOiA8Y29kZT4mbHQ7L2RpdiZndDsmbHQ7ZGl2 IGNsYXNzPSZxdW90O25ld3JvdyZxdW90OyZndDs8L2NvZGU+PGJyIC8+CmdhbF9jOiA8Y29k ZT4mbHQ7L2RpdiZndDs8L2NvZGU+PC9wPgoKCTxwPkJyZWFraW5nIHRoZSA8Y29kZT5jb3Vu dGZvcm08L2NvZGU+IGF0dHJpYnV0ZSBkb3duIGludG8gaXRzIGNvbXBvbmVudHMsIHlvdSBj YW4gc2VlIHRoYXQ6PC9wPgoKCTx1bD4KCQk8bGk+PGNvZGU+MTpnYWxfYTpzbWRfYWJvdmU8 L2NvZGU+IGFkZHMgdGhlICYjODIxNjtuZXdyb3cmIzgyMTc7IGRpdiBhYm92ZSB0aGUgZmly c3QgaW1hZ2U8L2xpPgoJCTxsaT48Y29kZT57dG90YWxpbWFnZXN9OmdhbF9jPC9jb2RlPiBh ZGRzIHRoZSBjbG9zaW5nIGRpdiBiZWxvdyB0aGUgbGFzdCBpbWFnZSBvbiB0aGlzIHBhZ2U8 L2xpPgoJCTxsaT48Y29kZT5zbWRfZXZlcnk6Mzohe3RvdGFsaW1hZ2VzfTpnYWxfYjwvY29k ZT4gYWRkcyBhIGNsb3NpbmcgYW5kIHRoZW4gYW4gb3BlbmluZyBkaXYgYWZ0ZXIgZXZlcnkg M3JkIGltYWdlLCA8ZW0+ZXhjZXB0PC9lbT4gb24gdGhlIGxhc3QgaW1hZ2UuIElmIHdlIGRp ZG4mIzgyMTc7dCBwdXQgdGhlIGV4Y2VwdGlvbiBpbiwgYW5kIHlvdSBoYWQgMTIgdGh1bWJu YWlscyBpbiB5b3VyIGdhbGxlcnkgKHdoaWNoIGlzIGRpdmlzaWJsZSBieSAzISkgeW91IHdv dWxkIHNlZSB0aGUgY29udGVudHMgb2YgZ2FsMiBhZnRlciB0aGUgbGFzdCBpbWFnZSBhcyB3 ZWxsPC9saT4KCTwvdWw+CgoJPGgyIGlkPSJjaGFuZ2Vsb2ciPkNoYW5nZWxvZzwvaDI+CgoJ PHA+QWxsIGF2YWlsYWJsZSB2ZXJzaW9ucyBhbmQgY2hhbmdlcyBhcmUgbGlzdGVkIGhlcmUu PC9wPgoKCTxwPjxzdHJvbmc+QmV0YTwvc3Ryb25nPjwvcD4KCgk8dWw+CgkJPGxpPjE0IEZl YiAwOCB8IDAuMSB8IEluaXRpYWwgcmVsZWFzZSAmIzgyMTE7IEhhcHB5IFZhbGVudGluZXMg RGF5IDotKTwvbGk+CgkJPGxpPjE5IEZlYiAwOCB8IDAuMiB8IEFkZGVkIHtnYWxsZXJ5aWR9 ICh0aGFua3MgcmxvYWRlcnJvKSBhbmQgc29tZSBza2VsZXRvbiBkb2NzPC9saT4KCTwvdWw+ CgoJPHA+PHN0cm9uZz5PZmZpY2lhbDwvc3Ryb25nPjwvcD4KCgk8dWw+CgkJPGxpPjExIE1h ciAwOCB8IDAuMyB8IE9mZmljaWFsIHB1YmxpYyByZWxlYXNlLiBGaXhlZCBzaWxseSBlbXB0 eSBmaWVsZCBidWc7IGFkZGVkIHtjb3VudGVyfSwge2luZGV4fSBhbmQgdGhlIHRvdGFscyAo YWxsIHRoYW5rcyBqYWtvYik8L2xpPgoJCTxsaT4xNSBNYXIgMDggfCAwLjMxIHwgRml4ZWQg YSBjb3VwbGUgb2YgdW5kZWZpbmVkIGluZGV4ZXMgYW5kIGFkZGVkIHtjYXRlZ29yeV90aXRs ZX0gKHRoYW5rcyBqc3R1YmJzKTwvbGk+CgkJPGxpPjE3IE1hciAwOCB8IDAuMzIgfCBGaXhl ZCBhbm90aGVyIHVuZGVmaW5lZCBpbmRleCBhbmQgcmVtb3ZlZCBib2d1cyBjYWxsIHRvIHNt ZF9saWIgKGJvdGggdGhhbmtzIHNlY3VuZGFyKTwvbGk+CgkJPGxpPjIxIE1hciAwOCB8IDAu MzMgfCBEaWQgdjAuMzEgcHJvcGVybHksIGluY2x1ZGluZyB0YWJsZSBwcmVmaXggKHRoYW5r cyBuYXJkbyk8L2xpPgoJCTxsaT4wMSBBcHIgMDggfCAwLjM0IHwgRml4ZWQgPHNwYW4gY2xh c3M9ImNhcHMiPlNRTDwvc3Bhbj4gcGFyZW50aGVzaXMgYnVnIDsgYWRkZWQgZW1wdHljbGFz cyBhbmQge21heGltYWdlc30gKHRoYW5rcyB0aGVfZ2hvc3QpPC9saT4KCQk8bGk+MDggQXBy IDA4IHwgMC40IHwgQ2hhbmdlZCB0aHVtYiB0byBhbGxvdyB0aHVtYi9mdWxsc2l6ZSBzd2Fw cGluZyA7IEFkZGVkIHRodW1iY2hhbmdlLCB0aHVtYmNoYW5nZXdyYXB0YWcsIHRodW1iY2hh bmdlY2xhc3MsIHt0aHVtYmluZGV4fSwge3RodW1iY291bnRlcn0gYW5kIHRoZSB7Y2hhbmdl ZDoqfSByZXBsYWNlbWVudCB0YWdzICh0aGFua3MgZnVscyk8L2xpPgoJCTxsaT4yNiBNYXkg MDggfCAwLjQxIHwgRml4ZWQgRGlyZWN0b3J5IHNlcGFyYXRvciAodGhhbmtzIGN1ZGEpIDsg YWRkZWQgcmF3IHBhZ2UgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj5zIHRvIHRoZSBu YXYgcmVwbGFjZW1lbnQgYXJyYXkgYW5kIG1hZGUgdGhlIG5hdiBhcnJheSBhdmFpbGFibGUg aW4gdGhlIHN0YW5kYXJkIHJlcGxhY2VtZW50cyBhcnJheSAodGhhbmtzIHZpc3VhbHBlb3Bs ZSk8L2xpPgoJCTxsaT4yNyBNYXkgMDggfCAwLjQyIHwgQWRkZWQgcGFnZXBvcyBhbmQgbWFk ZSBwYWdlIGJsb2NrcyBpbmRlcGVuZGVudCBvZiB0aHVtYiBibG9jayAodGhhbmtzIGR1Y2hh bXApPC9saT4KCQk8bGk+MTAgSnVuIDA4IHwgMC40MyB8IEZpeGVkIHNvcnQ9JiM4MjIwO2Zp eGVkJiM4MjIxOyB3aGVuIHVzaW5nIGxpbWl0ICh0aGFua3Mgcm9iaW43NDYpIDsgYWRkZWQg cGVyLWdyb3VwIG9uY2hhbmdlIHdyYXBwaW5nIGFuZCBhbGxvd2VkIGZpeGVkIHNvcnRpbmcg b2YgY2F0ZWdvcmllcyAodGhhbmtzIGpzdHViYnMpIDsgZGVwcmVjYXRlZCB0aHVtYmNoYW5n ZSogYW5kIHJlbmFtZWQgYXMgb25jaGFuZ2UqIDsgZml4ZWQgJGlkeCBjb3VudGVyIHByb2Js ZW08L2xpPgoJCTxsaT4xMCBKdW4gMDggfCAwLjQ0IHwgQXR0ZW1wdCAjMiBhdCBwZXItZ3Jv dXAgb25jaGFuZ2Ugd3JhcHBpbmcgKHRoYW5rcyBhZ2FpbiBqc3R1YmJzKTwvbGk+CgkJPGxp PjE0IEp1bCAwOCB8IDAuNDUgfCBGaXhlZCBsYWNrIG9mIG91dHB1dCB3aGVuIG5vdCB1c2lu ZyBjYXRlZ29yaWVzICh0aGFua3Mgcm9iaW43NDYpPC9saT4KCQk8bGk+MTYgTm92IDA4IHwg MC40NiB8IEFkZGVkIGNvbGxhdGVkZWxpbSAodGhhbmtzIGN1cmlvdXopIDsgZml4ZWQgKEkg aG9wZSkgdGhlIGNhdGVnb3J5IC8gaWQgYnVnIGZyb20gMC40NCBhbmQgMC40NSAodGhhbmtz IHJvYmluNzQ2L25hcmRvKTwvbGk+CgkJPGxpPjEzIEZlYiAwOSB8IDAuNSB8IFJlcXVpcmVz IHNtZF9saWIgOyBhZGRlZCA8c3BhbiBjbGFzcz0iY2FwcyI+TUxQPC9zcGFuPiBzdXBwb3J0 ICh0aGFua3MgbmV0LWNhcnZlcikgOyBhZGRlZCBzdXBwb3J0IGZvciBkaXNwbGF5aW5nIHVu Y2F0ZWdvcmlzZWQgaW1hZ2VzICh0aGFua3MgeHphbWVuKSA7ICYjODIxNjs/JiM4MjE3OyB2 YXJzIGV4cGFuZGVkIHRvIGxpbmsgLyBpbWFnZSAvIGZpbGUgLyA8Y29kZT4mbHQ7dHhwOnZh cmlhYmxlIC8mZ3Q7PC9jb2RlPiBhbmQgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4g dmFyaWFibGUgOyBuZXcgYXR0cmlidXRlczogPGNvZGU+ZXNjYXBlPC9jb2RlPiwgPGNvZGU+ aHRtbF9pZDwvY29kZT4sIDxjb2RlPmZvcm1hdDwvY29kZT4sIDxjb2RlPmdtdDwvY29kZT4s IDxjb2RlPmxhbmc8L2NvZGU+ICh0aGFua3MgbWFuaXF1aSksIDxjb2RlPnN0cmljdGZpZWxk czwvY29kZT4gOyBpbXByb3ZlZCA8Y29kZT57b2JqZWN0fTwvY29kZT4gc3VwcG9ydCBhbmQg YWRkZWQgPGNvZGU+b2JqZWN0Zm9ybTwvY29kZT4gKHRoYW5rcyB0eWUvcnZ0dXJuYWdlKSA7 IDxjb2RlPnt0aXRsZX08L2NvZGU+ID09IDxjb2RlPntjYXB0aW9ufTwvY29kZT4gYXQgbGFz dCEgOyByZW1vdmVkIDxjb2RlPnRodW1iY2hhbmdlPC9jb2RlPiogYXR0cmlidXRlcyA7IGlt cHJvdmVkIHN1cHBvcnQgZm9yIHRhYmxlIGV4dGVuc2lvbnMgKHZpYSB0aGUgPGNvZGU+Y29s dW1uczwvY29kZT4gYXR0cmlidXRlOiB0aGFua3MgUmVkRm94KSA7IGFkZGVkIDxjb2RlPnNt ZF9ldmVyeTwvY29kZT4gc3ludGF4IHRvIDxjb2RlPm9uY2hhbmdlPC9jb2RlPiAodGhhbmtz IGpha29iKSA7IGZpeGVkIG9mZnNldCBidWcgKHRoYW5rcyBmZXJhZ25vbGkpPC9saT4KCQk8 bGk+MDEgTWFyIDA5IHwgMC41MSB8IEFkZGVkIDxjb2RlPmNvdW50Zm9ybTwvY29kZT4gYW5k IDxjb2RlPmNvdW50cG9zPC9jb2RlPiA7IGZpeGVkIDxjb2RlPntoYXN0aHVtYn08L2NvZGU+ IHdhcm5pbmc8L2xpPgoJPC91bD4KCgk8aDIgaWQ9ImNyZWRpdHMiPkNyZWRpdHM8L2gyPgoK CTxwPlRoaXMgcGx1Z2luIHdvdWxkbiYjODIxNzt0IGhhdmUgZXhpc3RlZCB3aXRob3V0IHRo ZSBhd2Vzb21lIG1pbmQgb2YgUm9iZXJ0IFdldHpsbWF5ci4gSGlzIHdldF9mb3JfZWFjaF9p bWFnZSBwbHVnaW4gaXMgdHJ1ZSBnZW5pdXM7IHRoaXMgc2ltcGx5IHN0YW5kcyBvbiB0aGUg c2hvdWxkZXJzIG9mIHRoYXQgaWRlYSBhbmQgcm9sbHMgaW4gYSBzb3VwZWQgdXAgdmVyc2lv biBvZiB0aGUgdGh1bWJuYWlsIGdlbmVyYXRpb24gZW5naW5lIGZyb20gc21kX3NsaW1ib3gu IFRvIHRoYXQgZW5kLCB0aGUgcGx1Z2luIGlzIGFsc28gaW5kZWJ0ZWQgdG8gYW55b25lIHdo byBoYXMgcG9zdGVkIGZlYXR1cmVzIG9yIGJ1ZyByZXBvcnRzIHRvIG1lIG9yIHRoZSBzbWRf c2xpbWJveCB0aHJlYWQuIFlvdSYjODIxNztyZSBhbGwgbWFydmVsbG91cy48L3A+CgoJPHA+ PC9kaXY+PC9wPgo8IS0tIC0tLSBCRUdJTiBQTFVHSU4gQ1NTIC0tLSAtLT4KPHN0eWxlIHR5 cGU9InRleHQvY3NzIj4KI3NtZF9oZWxwIHsgbGluZS1oZWlnaHQ6MS41IDt9CiNzbWRfaGVs cCBjb2RlIHsgZm9udC13ZWlnaHQ6Ym9sZDsgZm9udDogMTA1JS8xMzAlICJDb3VyaWVyIE5l dyIsIGNvdXJpZXIsIG1vbm9zcGFjZTsgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZDQzt9CiNz bWRfaGVscCBjb2RlLmJsb2NrIHsgZm9udC13ZWlnaHQ6bm9ybWFsOyBib3JkZXI6MXB4IGRv dHRlZCAjOTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBlNjhjOyBkaXNwbGF5OmJsb2NrOyBt YXJnaW46MTBweCAxMHB4IDIwcHg7IHBhZGRpbmc6MTBweDsgfQojc21kX2hlbHAgYTpsaW5r LCAjc21kX2hlbHAgYTp2aXNpdGVkIHsgY29sb3I6ICMwMGM7IHRleHQtZGVjb3JhdGlvbjog bm9uZTsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsdWU7IHBhZGRpbmctYm90dG9tOjFw eDt9CiNzbWRfaGVscCBhOmhvdmVyLCAjc21kX2hlbHAgYTphY3RpdmUgeyBjb2xvcjogYmx1 ZTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBib3JkZXItYm90dG9tOiAycHggc29saWQgYmx1 ZTsgcGFkZGluZy1ib3R0b206MXB4O30KI3NtZF9oZWxwIGgxIHsgY29sb3I6ICMzNjk7IGZv bnQ6IDIwcHggR2VvcmdpYSwgc2Fucy1zZXJpZjsgbWFyZ2luOiAwOyB0ZXh0LWFsaWduOiBj ZW50ZXI7IH0KI3NtZF9oZWxwIGgyIHsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsYWNr OyBwYWRkaW5nOjEwcHggMCAwOyBjb2xvcjogIzM2OTsgZm9udDogMTdweCBHZW9yZ2lhLCBz YW5zLXNlcmlmOyB9CiNzbWRfaGVscCBoMyB7IGNvbG9yOiAjMDc5OyBmb250OiBib2xkIDEy cHggQXJpYWwsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBw eCAwIDA7dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgdGV4dC1kZWNvcmF0aW9uOnVuZGVy bGluZTt9CiNzbWRfaGVscCBoNCB7IGZvbnQ6IGJvbGQgMTFweCBBcmlhbCwgc2Fucy1zZXJp ZjsgbGV0dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2luOiAxMHB4IDAgMCA7dGV4dC10cmFuc2Zv cm06IHVwcGVyY2FzZTsgfQojc21kX2hlbHAgLmF0bm0geyBmb250LXdlaWdodDpib2xkOyBj b2xvcjojMzNkOyB9CiNzbWRfaGVscCAubWFuZCB7IGJhY2tncm91bmQ6I2VlZTsgYm9yZGVy OjFweCBkb3R0ZWQgIzk5OTsgfQojc21kX2hlbHAgdGFibGUge3dpZHRoOjkwJTsgdGV4dC1h bGlnbjpjZW50ZXI7IHBhZGRpbmctYm90dG9tOjFlbTt9CiNzbWRfaGVscCB0ZCwgI3NtZF9o ZWxwIHRoIHtib3JkZXI6MXB4IHNvbGlkICM5OTk7IHBhZGRpbmc6LjVlbSAwO30KI3NtZF9o ZWxwIHVsIHsgbGlzdC1zdHlsZS10eXBlOnNxdWFyZTsgfQojc21kX2hlbHAgLnJlcXVpcmVk IHtjb2xvcjpyZWQ7fQojc21kX2hlbHAgbGkgeyBtYXJnaW46NXB4IDIwcHggNXB4IDMwcHg7 IH0KI3NtZF9oZWxwIC5icmVhayB7IG1hcmdpbi10b3A6NXB4OyB9Cjwvc3R5bGU+CjwhLS0g LS0tIEVORCBQTFVHSU4gQ1NTIC0tLSAtLT4KIjtzOjM6Im1kNSI7czozMjoiYzJhNDExYWNl OTg5YTM5ZjFlMmIxZDQ0MjBmZWMyZjkiO30=