# Name: smd_gallery v0.54 # 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: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjExOiJzbWRfZ2FsbGVyeSI7czo2OiJhdXRob3IiO3M6MTE6 IlN0ZWYgRGF3c29uIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIyOiJodHRwOi8vc3RlZmRhd3Nv bi5jb20vIjtzOjc6InZlcnNpb24iO3M6NDoiMC41NCI7czoxMToiZGVzY3JpcHRpb24iO3M6 Njk6IkEobm90aGVyKSB0aHVtYm5haWwgZ2FsbGVyeS9zbGlkZXNob3cgY3JlYXRvciB3aXRo IHVucmVhbCBmbGV4aWJpbGl0eSI7czo0OiJjb2RlIjtzOjM1NDEzOiJyZXF1aXJlX3BsdWdp bignc21kX2xpYicpOw0KDQovLyBNTFAgc3VwcG9ydA0KZ2xvYmFsICRzbWRfZ2FsbExhbmc7 DQokc21kX2dhbGxTdHIgPSBhcnJheSgNCgknbmF2Zmlyc3QnID0+ICdGaXJzdCcsDQoJJ25h dmxhc3QnID0+ICdMYXN0JywNCgknbmF2cHJldicgPT4gJyZsYXF1bzsnLA0KCSduYXZuZXh0 JyA9PiAnJnJhcXVvOycsDQopOw0KJHNtZF9nYWxsTGFuZyA9IG5ldyBzbWRfTUxQKCdzbWRf Z2FsbGVyeScsICdzbWRfZ2FsbCcsICRzbWRfZ2FsbFN0cik7DQoNCmZ1bmN0aW9uIHNtZF9n YWxsZXJ5KCRhdHRzLCAkdGhpbmc9JycpIHsNCglnbG9iYWwgJHByZXRleHQsICR0aGlzYXJ0 aWNsZSwgJGltZ19kaXIsICRkYXRlZm9ybWF0LCAkc21kX2dhbGxMYW5nLCAkbDEwbl9sYW5n dWFnZTsNCg0KCS8vIFBsdWdpbiBvcHRpb25zDQoJZXh0cmFjdChsQXR0cyhhcnJheSgNCgkJ J2NvbHVtbnMnID0+ICcnLA0KCQknZGVsaW0nID0+ICcsJywNCgkJJ3BhcmFtZGVsaW0nID0+ ICc6JywNCgkJJ2NvbGxhdGVkZWxpbScgPT4gJywnLA0KCQknc3RyaWN0ZmllbGRzJyA9PiAn MCcsDQoJCSdmb3JtJyA9PiAnJywNCgkJJ2NvdW50Zm9ybScgPT4gJycsDQoJCSdjb3VudHBv cycgPT4gJ2Fib3ZlJywNCgkJJ2lkJyA9PiAnJywNCgkJJ2NhdGVnb3J5JyA9PiAnJywNCgkJ J2FzcGVjdCcgPT4gJycsDQoJCSdhdXRob3InID0+ICcnLA0KCQknZGltZW5zaW9ucycgPT4g JycsDQoJCSdleHRlbnNpb24nID0+ICcnLA0KCQknZGlyZWN0b3J5JyA9PiAnJywNCgkJJ21h dGNoJyA9PiAnJywNCgkJJ3N1YmxldmVsJyA9PiAnMCcsDQoJCSdlc2NhcGUnID0+ICdhbHQs IHRpdGxlLCBjYXB0aW9uJywNCgkJJ3NvcnQnID0+ICcnLA0KCQknb2Zmc2V0JyA9PiAnMCcs DQoJCSdsaW1pdCcgPT4gJzAnLA0KCQknbWF4bGltaXQnID0+ICc5OTk5OScsDQoJCSd0aHVt YmxpbWl0JyA9PiAnOTk5OTknLA0KCQkndGh1bWJvZmZzZXQnID0+ICcwJywNCgkJJ3RodW1i JyA9PiAnMDoxJywNCgkJJ3RodW1ic2l6ZScgPT4gJycsDQoJCSdpbWdzaXplJyA9PiAnJywN CgkJJ29uY2hhbmdlJyA9PiAnY2F0ZWdvcnknLA0KCQknb25jaGFuZ2V3cmFwdGFnJyA9PiAn JywNCgkJJ29uY2hhbmdlY2xhc3MnID0+ICcnLA0KCQknb2JqZWN0Zm9ybScgPT4gJycsDQoJ CSdncm91cHRhZycgPT4gJycsDQoJCSdncm91cGNsYXNzJyA9PiAnJywNCgkJJ3RleHQnID0+ ICcnLA0KCQknZm9ybWF0JyA9PiAkZGF0ZWZvcm1hdCwNCgkJJ2dtdCcgPT4gJycsDQoJCSds YW5nJyA9PiAnJywNCgkJJ2NvbGxhdGUnID0+ICcnLA0KCQknY29tYm8nID0+ICcnLA0KCQkn cGFnaW5nJyA9PiAnMCcsDQoJCSdwYWdlZm9ybScgPT4gJycsDQoJCSdwYWdlcG9zJyA9PiAn YmVsb3cnLA0KCQknbmF2d3JhcHRhZycgPT4gJ3VsJywNCgkJJ25hdmJyZWFrJyA9PiAnbGkn LA0KCQknbmF2Y2xhc3MnID0+ICdzbWRfZ2FsbGVyeV9uYXYnLA0KCQknZW1wdHljbGFzcycg PT4gJ2VtcHR5JywNCgkJJ2dhbGxlcnlpZCcgPT4gJz80OjYnLA0KCQknd3JhcHRhZycgPT4g JycsDQoJCSdodG1sX2lkJyA9PiAnJywNCgkJJ2JyZWFrJyA9PiAnJywNCgkJJ2NsYXNzJyA9 PiAnJywNCgkJJ2RlYnVnJyA9PiAnMCcsDQoJKSwgJGF0dHMpKTsNCg0KCS8vIENhdGVnb3J5 IHJlbGllcyBvbiB3aGV0aGVyIGlkIGhhcyBiZWVuIHNwZWNpZmllZCBvciBub3QuDQoJLy8g bEF0dHMoKSB3b24ndCBsZXQgdXMgaGFuZGxlIHRoaXMgbG9naWMgc28gaXQgaGFzIHRvIGJl IGRvbmUgbWFudWFsbHkNCgkkYXR0ZW1wdE1hdGNoID0gKGVtcHR5KCRjYXRlZ29yeSkgJiYg ZW1wdHkoJGlkKSkgPyBmYWxzZSA6IHRydWU7DQoJJGNhdGVnb3J5ID0gaXNzZXQoJGNhdGVn b3J5KSA/IGRvU2xhc2goJGNhdGVnb3J5KSA6ICgoJGlkPT0nJykgPyAkcHJldGV4dFsnYydd OiAnJyk7DQoJJHNvcnQgPSAoJHNvcnQpID8gJHNvcnQgOiAoICgkaWQpID8gJ2lkJyA6ICdj YXRlZ29yeScgKTsNCg0KCS8vICoqIExPT0tVUCBUQUJMRVMNCgkvLyAkZmllbGRNYXAgaG9s ZHMgZGF0YWJhc2UgY29sdW1uIGFzIGtleSwgYW5kIHJlcGxhY2VtZW50IGlkZW50aWZpZXIg YXMgdmFsdWUuDQoJLy8gQWRkaXRpb25hbCBjb2xzIGNvcGllZCB0byAkZXh0cmFNYXAgZm9y IGl0ZXJhdGlvbiB3aGlsZSBjcmVhdGluZyByZXBsYWNlbWVudHMuDQoJLy8gVXNlIGFycmF5 X3NlYXJjaCB0byBmaW5kIGlmIHZhbHVlIGV4aXN0cyBhbmQgcmV0dXJuIGNvcnJlY3Qga2V5 IGZvciB1c2UgaW4gZGIgY2FsbHMvYXJyYXkgcmVmcy4NCgkkZmllbGRNYXAgPSBhcnJheSgp Ow0KCSRleHRyYU1hcCA9IGFycmF5KCk7DQoJJGNvcmVDb2xzID0gYXJyYXkoIm5hbWUiLCAi aWQiLCAiYWx0IiwgImNhcHRpb24iLCAiY2F0ZWdvcnkiLCAiYXV0aG9yIiwgImRhdGUiLCAi ZXh0IiwgInc6d2lkdGgiLCAiaDpoZWlnaHQiLCAidGh1bWJfdzp0aHVtYl93aWR0aCIsICJ0 aHVtYl9oOnRodW1iX2hlaWdodCIsICJ0aHVtYm5haWw6aGFzdGh1bWIiKTsNCgkkbWxwRmll bGRzID0gYXJyYXkoImFsdCIsICJjYXB0aW9uIik7IC8vIE1hbnVhbGx5IGNyZWF0ZSB0aGUg TUxQIGNvbHVtbiBuYW1lcywgc2luY2UgdXNpbmcgZ2V0Um93cygpIGxhdGVyIGRvZXMgbm90 LiBDYXRlZ29yeSB0aXRsZSBhbHNvIGhhcyB0aGUgc2FtZSB0cmVhdG1lbnQNCgkkdGhpc2xh bmcgPSAoaXNzZXQoJGwxMG5fbGFuZ3VhZ2VbJ2xvbmcnXSkpID8gJGwxMG5fbGFuZ3VhZ2Vb J2xvbmcnXSA6IExBTkc7DQoJJGRmbHRfdGJsID0gUEZYLiJ0eHBfaW1hZ2UiOw0KCSRjb2x1 bW5zID0gZG9fbGlzdCgkY29sdW1ucyk7DQoJZm9yZWFjaCAoYXJyYXlfbWVyZ2UoJGNvcmVD b2xzLCAkY29sdW1ucykgYXMgJGNvbGluZm8pIHsNCgkJJGNvbGJpdCA9IGRvX2xpc3QoJGNv bGluZm8sICI6Iik7DQoJCSRjb2x0YmwgPSBkb19saXN0KCRjb2xiaXRbMF0sICIuIik7DQoN CgkJaWYgKCRjb2xiaXRbMF0gPT0gJycpIGNvbnRpbnVlOw0KDQoJCWlmIChjb3VudCgkY29s dGJsKSA+IDEpIHsNCgkJCSR0YmwgPSAkY29sdGJsWzBdOw0KCQkJJGNvbG5hbWUgPSAkY29s dGJsWzFdOw0KCQl9IGVsc2Ugew0KCQkJJHRibCA9ICRkZmx0X3RibDsNCgkJCSRjb2xuYW1l ID0gJGNvbHRibFswXTsNCgkJfQ0KCQkkY29saWQgPSAoY291bnQoJGNvbGJpdCkgPiAxKSA/ ICRjb2xiaXRbMV0gOiAkY29sbmFtZTsNCgkJJGZpZWxkTWFwWygoJHRibCk/JHRibC4nLic6 JycpLiggKGlzc2V0KCRsMTBuX2xhbmd1YWdlWydsb25nJ10pICYmIGluX2FycmF5KCRjb2xu YW1lLCAkbWxwRmllbGRzKSkgPyBfbDEwbl9tYWtlX2ZpZWxkX25hbWUoJGNvbG5hbWUsICR0 aGlzbGFuZykuICcgQVMgJy4kY29sbmFtZSAgOiAkY29sbmFtZSApXSA9ICRjb2xpZDsNCgkJ aWYgKCFpbl9hcnJheSgkY29saW5mbywgJGNvcmVDb2xzKSkgew0KCQkJJGV4dHJhTWFwWyRj b2xuYW1lXSA9ICRjb2xpZDsNCgkJfQ0KCX0NCgkkZmllbGRNYXAgPSBhcnJheV91bmlxdWUo JGZpZWxkTWFwKTsNCg0KCS8vIEhhbmRsZSBmb3JtcyBhbmQgc2V0IGEgZGVmYXVsdCB0YWcg aWYgbm9uZSBzcGVjaWZpZWQNCgkkdGhpbmcgPSAoZW1wdHkoJGZvcm0pKSA/ICR0aGluZyA6 IGZldGNoX2Zvcm0oJGZvcm0pOw0KCSR0aGluZyA9IChlbXB0eSgkdGhpbmcpKSA/ICc8YSBo cmVmPSJ7dXJsfSIgYWx0PSJ7YWx0fSI+PHR4cDppbWFnZSBpZD0ie2lkfSIgLz48L2E+JyA6 ICR0aGluZzsNCgkkb2JqZWN0Zm9ybSA9IChlbXB0eSgkb2JqZWN0Zm9ybSkpID8gJycgOiBm ZXRjaF9mb3JtKCRvYmplY3Rmb3JtKTsNCg0KCS8vIENvdW50aW5nDQoJJGNvdW50UG9zQWxs b3dlZCA9IGFycmF5KCJhYm92ZSIsICJiZWxvdyIpOw0KCSRjb3VudHBvc25zID0gYXJyYXko KTsNCgkkY291bnRpbmcgPSAwOw0KCWlmICgkY291bnRmb3JtKSB7DQoJCSRjb3VudGluZyA9 IDE7DQoJCSRjb3VudGZvcm0gPSBkb19saXN0KCRjb3VudGZvcm0sICRkZWxpbSk7DQoJCSRj b3VudHBvcyA9IHN0cl9yZXBsYWNlKCdzbWRfJywgJycsICRjb3VudHBvcyk7IC8vIEZvciBj b252ZW5pZW5jZQ0KCQkkY291bnRwb3MgPSBkb19saXN0KCRjb3VudHBvcywgJGRlbGltKTsN CgkJZm9yZWFjaCAoJGNvdW50cG9zIGFzICRjb3VudGl0ZW0pIHsNCgkJCSRjb3VudHBvc25z W10gPSAoaW5fYXJyYXkoJGNvdW50aXRlbSwgJGNvdW50UG9zQWxsb3dlZCkpID8gJGNvdW50 aXRlbSA6ICRjb3VudFBvc0FsbG93ZWRbMF07DQoJCX0NCgl9DQoNCgkvLyBQYWdpbmcgaW5p dA0KCSRwYWdlUG9zQWxsb3dlZCA9IGFycmF5KCJiZWxvdyIsICJhYm92ZSIpOw0KCSRwYWdl b3V0ID0gYXJyYXkoKTsNCglpZiAoJHBhZ2Vmb3JtKSB7DQoJCSRwYWdpbmcgPSAxOw0KCQkk cGFnZWZvcm0gPSBmZXRjaF9mb3JtKCRwYWdlZm9ybSk7DQoJCSRwYWdlcG9zID0gc3RyX3Jl cGxhY2UoJ3NtZF8nLCAnJywgJHBhZ2Vwb3MpOw0KCQkkcGFnZXBvcyA9IGRvX2xpc3QoJHBh Z2Vwb3MsICRkZWxpbSk7DQoJCWZvcmVhY2ggKCRwYWdlcG9zIGFzICRwYWdlaXRlbSkgew0K CQkJJHBhZ2VvdXRbXSA9IChpbl9hcnJheSgkcGFnZWl0ZW0sICRwYWdlUG9zQWxsb3dlZCkp ID8gJHBhZ2VpdGVtIDogJHBhZ2VQb3NBbGxvd2VkWzBdOw0KCQl9DQoJfQ0KDQoJLy8gb25j aGFuZ2UgdmVyaWZpY2F0aW9uDQoJJG9uY2hhbmdlID0gZG9fbGlzdCgkb25jaGFuZ2UsICRk ZWxpbSk7DQoJJG9uY2hhbmdlID0gKCRvbmNoYW5nZVswXSA9PSAiIikgPyBhcnJheSgpIDog JG9uY2hhbmdlOw0KCSRyZXNldE9wdHMgPSAkcmVzZXRGb3JtcyA9IGFycmF5KCk7DQoJZm9y ZWFjaCAoJG9uY2hhbmdlIGFzICRyZXNldE9wdCkgew0KCQkkcmVzZXRQYXJ0cyA9IGRvX2xp c3QoJHJlc2V0T3B0LCAkcGFyYW1kZWxpbSk7DQoNCgkJaWYgKGNvdW50KCRyZXNldFBhcnRz KSA+IDEpIHsNCgkJCWlmICgkcmVzZXRQYXJ0c1swXSA9PSAnc21kX2V2ZXJ5Jykgew0KCQkJ CSRyZXNldE9wdHNbJHJlc2V0UGFydHNbMF0uJHBhcmFtZGVsaW0uJHJlc2V0UGFydHNbMV1d ID0gIiI7DQoJCQl9IGVsc2Ugew0KCQkJCSRyZXNldEZvcm1zWyRyZXNldFBhcnRzWzBdXSA9 ICRyZXNldFBhcnRzWzFdOw0KCQkJCSRyZXNldE9wdHNbJHJlc2V0UGFydHNbMF1dID0gIiI7 DQoJCQl9DQoJCX0gZWxzZSB7DQoJCQkkcmVzZXRPcHRzWyRyZXNldFBhcnRzWzBdXSA9ICIi Ow0KCQl9DQoJfQ0KDQoJLy8gRXNjYXBpbmcNCgkkc3BjID0gKCRzdHJpY3RmaWVsZHMpID8g 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 ZSA9IGltcGxvZGUoIiBBTkQgIiwgJGNsYXVzZSk7DQoJCSRjbGF1c2UgLj0gJyBBTkQgJy5Q RlguJ3R4cF9jYXRlZ29yeS50eXBlID0gImltYWdlIic7DQoJCSRjbGF1c2UgLj0gKCRjYXRl eGMpID8gJyBBTkQgJy5QRlguJ3R4cF9pbWFnZS5jYXRlZ29yeSBOT1QgSU4gKCcuaW1wbG9k ZSgiLCIsICRjYXRleGMpLicpJyA6ICcnOw0KCQkkY2xhdXNlIC49ICgkaWRleGMpID8gJyBB TkQgJy5QRlguJ3R4cF9pbWFnZS5pZCBOT1QgSU4gKCcuaW1wbG9kZSgiLCIsICRpZGV4Yyku JyknIDogJyc7DQoNCgkJLy8gSWYgYSBjYXRlZ29yeS9pZCBvcHRpb24gd2FzIGNob3NlbiBh bmQgdGhleSBtYXRjaGVkIG5vdGhpbmcsIHVzZSBhIGJvZ3VzIGNhdGVnb3J5IHRoYXQgc2hv dWxkIG5vdCBleGlzdC4NCgkJLy8gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIHBsdWdpbiBkb2Vz IHRoZSBleHBlY3RlZCB0aGluZyBvZiBtYXRjaGluZyBub3RoaW5nIGluIHRoZSBldmVudCBp dCBmaW5kcyBub3RoaW5nLg0KCQlpZiAoJGNsYXVzZSA9PSAiMT0xIiAmJiAkYXR0ZW1wdE1h dGNoKSB7DQoJICAJCSRjbGF1c2UgPSBQRlguJ3R4cF9pbWFnZS5jYXRlZ29yeSA9ICJzbWRf JyAubXRfcmFuZCgpLiAnIic7DQoJCX0NCg0KCQkkY2xhdXNlID0gJygnLnN0cl9yZXBsYWNl KCdTTURfRU1QVFknLCAnJywgJGNsYXVzZSkuJyknOw0KDQoJCWlmICgkZGVidWcgPiAxKSB7 DQoJCQllY2hvICIrKyBJTkNMVURFRC9FWENMVURFRCBJRHMgQU5EIENBVHMgKysiOw0KCQkJ aWYgKCRpZGluYykgZG1wKCRpZGluYyk7DQoJCQlpZiAoJGlkZXhjKSBkbXAoJGlkZXhjKTsN CgkJCWlmICgkY2F0aW5jKSBkbXAoJGNhdGluYyk7DQoJCQlpZiAoJGNhdGV4YykgZG1wKCRj YXRleGMpOw0KCQl9DQoNCgkJLy8gRmlsdGVyIGJ5IGFzcGVjdCByYXRpbw0KCQlpZiAoJGFz cGVjdCkgew0KCQkJJGFzcGVjdHMgPSBkb19saXN0KCRhc3BlY3QsICRkZWxpbSk7DQoNCgkJ CS8vIENvbXBhcmUgZnVsbHNpemUgb3IgdGh1bWJuYWlsIGFzcGVjdCByYXRpb3MNCgkJCSRm bGRtb2QgPSAoJGZ1bGxtb2QpID09ICd0JyA/ICd0aHVtYl8nIDogJyc7DQoJCQkkd2ZsZCA9 IFBGWC4ndHhwX2ltYWdlLicuJGZsZG1vZC4ndyc7DQoJCQkkaGZsZCA9IFBGWC4ndHhwX2lt YWdlLicuJGZsZG1vZC4naCc7DQoNCgkJCSRjbGF1c2VPUiA9IGFycmF5KCk7DQoJCQlmb3Jl YWNoICgkYXNwZWN0cyBhcyAkcmF0aW8pIHsNCgkJCQlzd2l0Y2goJHJhdGlvKSB7DQoJCQkJ CWNhc2UgJ3BvcnRyYWl0JzoNCgkJCQkJCSRjbGF1c2VPUltdID0gJGhmbGQuICcgPiAnLiAk d2ZsZDsNCgkJCQkJCWJyZWFrOw0KCQkJCQljYXNlICdsYW5kc2NhcGUnOg0KCQkJCQkJJGNs YXVzZU9SW10gPSAkd2ZsZC4gJyA+ICcuICRoZmxkOw0KCQkJCQkJYnJlYWs7DQoJCQkJCWNh c2UgJ3NxdWFyZSc6DQoJCQkJCQkkY2xhdXNlT1JbXSA9ICRoZmxkLiAnID0gJy4gJHdmbGQ7 DQoJCQkJCQlicmVhazsNCgkJCQl9DQoJCQl9DQoJCQlpZiAoIWVtcHR5KCRjbGF1c2VPUikp IHsNCgkJCQkkY2xhdXNlIC49ICcgQU5EICcuJHdmbGQuJyA+IDAgQU5EICcuJGhmbGQuJyA+ IDAgQU5EICgnLmltcGxvZGUoIiBPUiAiLCAkY2xhdXNlT1IpLicpICc7DQoJCQl9DQoJCX0N Cg0KCQkvLyBGaWx0ZXIgYnkgYXV0aG9yDQoJCWlmICgkYXV0aG9yKSB7DQoJCQkkYXV0aG9y cyA9IGRvX2xpc3QoJGF1dGhvciwgJGRlbGltKTsNCgkJCSRjbGF1c2UgLj0gIiBBTkQgIiAu IFBGWC4idHhwX2ltYWdlLmF1dGhvciBJTiAoJyIuaW1wbG9kZSgiJywnIiwgJGF1dGhvcnMp LiInKSI7DQoJCX0NCg0KCQkvLyBGaWx0ZXIgYnkgZXh0ZW5zaW9uDQoJCWlmICgkZXh0ZW5z aW9uKSB7DQoJCQkkZXh0ZW5zaW9ucyA9IGRvX2xpc3QoJGV4dGVuc2lvbiwgJGRlbGltKTsN CgkJCWZvcmVhY2ggKCRleHRlbnNpb25zIGFzICRpZHggPT4gJGV4dCkgew0KCQkJCSRleHRl bnNpb25zWyRpZHhdID0gIi4iLiRleHQ7DQoJCQl9DQoJCQkkY2xhdXNlIC49ICIgQU5EICIg LiBQRlguInR4cF9pbWFnZS5leHQgSU4gKCciLmltcGxvZGUoIicsJyIsICRleHRlbnNpb25z KS4iJykiOw0KCQl9DQoNCgkJLy8gRmlsdGVyIGJ5IGRpbWVuc2lvbnMNCgkJaWYgKCRkaW1l bnNpb25zKSB7DQoJCQkkZGltQWxsb3cgPSBhcnJheSgnPScsICc+JywgJzwnLCAnPj0nLCAn PD0nKTsNCgkJCSRkaW1zID0gZG9fbGlzdCgkZGltZW5zaW9ucywgJGRlbGltKTsNCg0KCQkJ Ly8gQ29tcGFyZSBmdWxsc2l6ZSBvciB0aHVtYm5haWwgYXNwZWN0IHJhdGlvcw0KCQkJJGZs ZG1vZCA9ICgkZnVsbG1vZCkgPT0gJ3QnID8gJ3RodW1iXycgOiAnJzsNCgkJCSR3ZmxkID0g UEZYLid0eHBfaW1hZ2UuJy4kZmxkbW9kLid3JzsNCgkJCSRoZmxkID0gUEZYLid0eHBfaW1h Z2UuJy4kZmxkbW9kLidoJzsNCg0KCQkJJHdkaW0gPSAkZGltc1swXTsNCgkJCSRoZGltID0g KGlzc2V0KCRkaW1zWzFdKSkgPyAkZGltc1sxXSA6ICcnOw0KDQoJCQkkd2RpbXZhbCA9IHBy ZWdfcmVwbGFjZSgnL1teMC05XS8nLCAnJywgJHdkaW0pOw0KCQkJJGhkaW12YWwgPSBwcmVn X3JlcGxhY2UoJy9bXjAtOV0vJywgJycsICRoZGltKTsNCgkJCSR3ZGltb3AgPSBwcmVnX3Jl cGxhY2UoJy9bMC05XS8nLCAnJywgJHdkaW0pOw0KCQkJJHdkaW1vcCA9IGluX2FycmF5KCR3 ZGltb3AsICRkaW1BbGxvdykgPyAkd2RpbW9wIDogJz0nOw0KCQkJJGhkaW1vcCA9IHByZWdf cmVwbGFjZSgnL1swLTldLycsICcnLCAkaGRpbSk7DQoJCQkkaGRpbW9wID0gaW5fYXJyYXko JGhkaW1vcCwgJGRpbUFsbG93KSA/ICRoZGltb3AgOiAnPSc7DQoJCQkkY2xhdXNlIC49ICgo JHdkaW0pID8gJyBBTkQgJyAuICR3ZmxkIC4gJHdkaW1vcCAuICR3ZGltdmFsIDogJycpIC4g KCgkaGRpbSkgPyAnIEFORCAnIC4gJGhmbGQgLiAkaGRpbW9wIC4gJGhkaW12YWwgOiAnJyk7 DQoJCX0NCg0KCQkvLyBDb252ZXJ0IHRoZSBzb3J0IGludG8gYSB2YWxpZCBzb3J0aW5nIGhp ZXJhcmNoeS4NCgkJLy8gTm90ZSB0aGF0IHJhbmRvbSBpcyBhIHNwZWNpYWwgY2FzZSBhbmQg dGhlIGZvbGxvd2luZyBydWxlcyBhcHBseToNCgkJLy8gIDEpIEFueXRoaW5nIGFwcGVhcmlu ZyBiZWZvcmUgcmFuZG9tIGlzIHBhc3NlZCB0byB0aGUgZGF0YWJhc2UgcXVlcnkgZm9yIG9y ZGVyaW5nDQoJCS8vICAyKSBBcyBzb29uIGFzIHJhbmRvbSBpcyBlbmNvdW50ZXJlZCwgdGhl IHJlc3Qgb2YgdGhlIHNvcnQgc3RyaW5nIGlzIGlnbm9yZWQuDQoJCS8vICAgICBUaGUgcmVz dWx0c2V0IHdpbGwgYmUgc29ydGVkIHJhbmRvbWx5IGluc3RlYWQNCgkJLy8gIDMpIElmIHJh bmRvbSBhcHBlYXJzIGZpcnN0IGluIHRoZSBsaXN0LCB0aGUgZGF0YSBpcyByZXRyaWV2ZWQg cmFuZG9tbHkgdGhlbiB0aGUNCgkJLy8gICAgIHJlbWFpbmluZyBvcHRpb25zIHNvcnQgdGhl IHJlc3VsdHNldA0KCQkkY2xhdXNlU29ydCA9IGFycmF5KCk7DQoJCSRwb3N0T3JkZXIgPSBh cnJheSgpOw0KCQkkcnVsZSA9ICJzcWwiOw0KCQkkcG9zdFByZWZpeCA9ICJTT1JUXyI7DQoJ CSRmaXhlZE9yZGVyID0gJHJhbmRzb3J0ID0gZmFsc2U7DQoJCSRzb3J0ID0gZG9fbGlzdCgk c29ydCwgJGRlbGltKTsNCgkJZm9yICgkaWR4ID0gMDsgJGlkeCA8IGNvdW50KCRzb3J0KTsg JGlkeCsrKSB7DQoJCQkkc29ydF9kaXIgPSBleHBsb2RlKCcgJywgJHNvcnRbJGlkeF0pOw0K CQkJJGRpcmVjdGlvbiA9ICRjb2xSZWYgPSAnJzsNCgkJCWlmIChjb3VudCgkc29ydF9kaXIp IDw9IDEpIHsNCgkJCQkkc29ydF9kaXJbMV0gPSAiYXNjIjsNCgkJCX0NCgkJCWlmICgkcnVs ZSA9PSAic3FsIikgew0KCQkJCSRkaXJlY3Rpb24gPSAoJHNvcnRfZGlyWzFdID09ICJkZXNj IikgPyAnIGRlc2MnIDogJyBhc2MnOw0KCQkJfSBlbHNlIHsNCgkJCQkkZGlyZWN0aW9uID0g KCRzb3J0X2RpclsxXSA9PSAiZGVzYyIpID8gJHBvc3RQcmVmaXguJ0RFU0MnIDogJHBvc3RQ cmVmaXguJ0FTQyc7DQoJCQl9DQoNCgkJCXN3aXRjaCAoJHNvcnRfZGlyWzBdKSB7DQoJCQkJ Y2FzZSAncmFuZG9tJzoNCgkJCQkJJHJ1bGUgPSAicG9zdCI7DQoJCQkJCWlmICgkaWR4ID09 IDApIHsNCgkJCQkJCSRjbGF1c2VTb3J0W10gPSAncmFuZCgpJzsNCgkJCQkJfSBlbHNlIHsN CgkJCQkJCSRyYW5kc29ydCA9IHRydWU7DQoJCQkJCX0NCgkJCQkJYnJlYWs7DQoJCQkJY2Fz ZSAnZml4ZWQnOg0KCQkJCQkvLyAnZml4ZWQnIG9ubHkgd29ya3Mgb24gaWRzIG9yIGNhdGVn b3JpZXMNCgkJCQkJJGZpeGVkT3JkZXIgPSAoJGlkID09ICcnICYmICRjYXRlZ29yeSA9PSAn JykgPyBmYWxzZSA6IHRydWU7DQoJCQkJCWJyZWFrOw0KCQkJCWRlZmF1bHQ6DQoJCQkJCSRj b2xSZWYgPSBhcnJheV9zZWFyY2goJHNvcnRfZGlyWzBdLCAkZmllbGRNYXApOw0KCQkJCQkk Y29sTmFtZSA9ICRmaWVsZE1hcFskY29sUmVmXTsNCgkJCQkJYnJlYWs7DQoJCQl9DQoJCQlp ZiAoJHJ1bGUgPT0gInNxbCIpIHsNCgkJCQlpZiAoJGNvbFJlZiAhPSAnJykgew0KCQkJCQkk Y2xhdXNlU29ydFtdID0gJGNvbFJlZi4kZGlyZWN0aW9uOw0KCQkJCX0NCgkJCX0gZWxzZSB7 DQoJCQkJaWYgKCEkcmFuZHNvcnQpIHsNCgkJCQkJaWYgKCRjb2xSZWYgIT0gJycpIHsNCgkJ CQkJCSRwb3N0T3JkZXJbXSA9IGFycmF5KCJjb2wiID0+ICRjb2xOYW1lLCAic29ydCIgPT4g JGRpcmVjdGlvbik7DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCX0NCg0KCQlpZiAoY291bnQo JGNsYXVzZVNvcnQpID4gMCkgew0KCQkJJGNsYXVzZSAuPSAnIE9SREVSIEJZICcgLiBpbXBs b2RlKCIsIiwkY2xhdXNlU29ydCk7DQoJCX0NCgkJaWYgKCRkZWJ1ZyA+IDApIHsNCgkJCWVj aG8gIisrIFdIRVJFIENMQVVTRSArKyI7DQoJCQlkbXAoJGNsYXVzZSk7DQoJCX0NCgkJLy8g VGhlIGRhdGFiYXNlIGZpZWxkcyByZXF1aXJlZA0KCQkkZmllbGRzID0gaW1wbG9kZSgiLCIs IGFycmF5X2tleXMoJGZpZWxkTWFwKSk7DQoJCSRjVGl0bGUgPSAoaXNzZXQoJGwxMG5fbGFu Z3VhZ2VbJ2xvbmcnXSkpID8gX2wxMG5fbWFrZV9maWVsZF9uYW1lKCd0aXRsZScsICR0aGlz bGFuZykgOiAndGl0bGUnOw0KDQoJCSRycyA9IGdldFJvd3MoIg0KCQkJU0VMRUNUIERJU1RJ TkNUICRmaWVsZHMsICIuUEZYLiJ0eHBfY2F0ZWdvcnkuIi4kY1RpdGxlLiIgQVMgY2F0ZWdv cnlfdGl0bGUNCgkJCUZST00gIi5QRlguInR4cF9pbWFnZSBMRUZUIEpPSU4gIi5QRlguInR4 cF9jYXRlZ29yeQ0KCQkJT04gIi5QRlguInR4cF9pbWFnZS5jYXRlZ29yeSA9ICIuUEZYLiJ0 eHBfY2F0ZWdvcnkubmFtZQ0KCQkJV0hFUkUgJGNsYXVzZQ0KCQkJTElNSVQgMCwgJG1heGxp bWl0DQoJCSIsICRkZWJ1Zyk7DQoJCWxpc3QoJGFsbEltYWdlcywgJG51bVBhZ2VzLCAkdGh1 bVBhZ2UsICRvZmZzZXQpID0gc21kX2dldFBhZ2UoJHJzLCAkZ2FsbElELCAkbGltaXQsICRv ZmZzZXQsICRwYWdpbmcpOw0KCX0NCg0KDQoJLy8gSXMgcG9zdC1vcmRlcmluZyByZXF1aXJl ZD8gRG8gaXQNCglpZiAoJHJhbmRzb3J0KSB7DQoJCXNodWZmbGUoJHJzKTsNCgl9IGVsc2Ug aWYgKGNvdW50KCRwb3N0T3JkZXIpID4gMCkgew0KCQkvLyBUcmFuc2xhdGUgdGhlIHJvd3Mg aW50byBjb2x1bW5zIHRoYXQgY2FuIGJlIHNvcnRlZA0KCQlmb3JlYWNoKCRycyBhcyAka2V5 ID0+ICRyb3cpIHsNCgkJCWZvcmVhY2ggKCRyb3cgYXMgJGlkZW50aWZpZXIgPT4gJGl0ZW0p IHsNCgkJCQkkdmFybmFtZSA9ICJjb2xfIi4kaWRlbnRpZmllcjsNCgkJCQkkeyR2YXJuYW1l fVska2V5XSA9ICRpdGVtOw0KCQkJfQ0KCQl9DQoNCgkJLy8gTWFrZSB1cCBhbiBhcnJheV9t dWx0aXNvcnQgYXJnIGxpc3QgYW5kIGV4ZWN1dGUgaXQuDQoJCS8vIFRoZSBuZWNlc3Nhcnkg ZXZpbCgpIGlzIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyBob3cgbWFueSBjb2xzIHRoZXJlIHdp bGwgYmUgaW4gdGhlIGFycmF5DQoJCWZvciAoJGlkeCA9IDA7ICRpZHggPCBjb3VudCgkcG9z dE9yZGVyKTsgJGlkeCsrKSB7DQoJCQkkc29ydGFyZ3NbXSA9ICckY29sXycuJHBvc3RPcmRl clskaWR4XVsnY29sJ107DQoJCQkkc29ydGFyZ3NbXSA9ICRwb3N0T3JkZXJbJGlkeF1bJ3Nv cnQnXTsNCgkJfQ0KCQkkc29ydGl0ID0gJ2FycmF5X211bHRpc29ydCgnLmltcGxvZGUoIiwg Iiwkc29ydGFyZ3MpLicsICRycyk7JzsNCgkJZXZhbCgkc29ydGl0KTsNCgl9DQoNCgkvLyBJ cyBmaXhlZC1vcmRlciBvdXRwdXQgZGVzaXJlZD8gSWYgc28sIHJlLW9yZGVyIHRoZSAkcnMN CglpZiAoJGZpeGVkT3JkZXIpIHsNCgkJJG9yZGVyZWRSUyA9IEFycmF5KCk7DQoJCSRpZ25v cmVMaXN0ID0gQXJyYXkoKTsNCgkJJHJlbWFpbmluZ1JTID0gQXJyYXkoKTsNCg0KCQkvLyBT dWNrIG91dCB0aGUgZml4ZWQgaXRlbXMgZmlyc3QuIElEcyB0aGVuIGNhdGVnb3JpZXMNCgkJ Zm9yICgkaWR4ID0gMDsgJGlkeCA8IGNvdW50KCRpZGluYyk7ICRpZHgrKykgew0KCQkJZm9y ZWFjaCgkcnMgYXMgJHJvdykgew0KCQkJCWlmICgkaWQgJiYgZG9RdW90ZSgkcm93WydpZCdd KSA9PSAkaWRpbmNbJGlkeF0pIHsNCgkJCQkJJG9yZGVyZWRSU1tdID0gJHJvdzsNCgkJCQkJ JGlnbm9yZUxpc3RbXSA9ICRyb3dbJ2lkJ107DQoJCQkJCWJyZWFrOw0KCQkJCX0NCgkJCX0N CgkJfQ0KCQlmb3IgKCRpZHggPSAwOyAkaWR4IDwgY291bnQoJGNhdGluYyk7ICRpZHgrKykg ew0KCQkJZm9yZWFjaCgkcnMgYXMgJHJvdykgew0KCQkJCWlmICgkY2F0ZWdvcnkgJiYgZG9R dW90ZSgkcm93WydjYXRlZ29yeSddKSA9PSAkY2F0aW5jWyRpZHhdKSB7DQoJCQkJCSRvcmRl cmVkUlNbXSA9ICRyb3c7DQoJCQkJCSRpZ25vcmVMaXN0W10gPSAkcm93WydpZCddOw0KCQkJ CX0NCgkJCX0NCgkJfQ0KCQkvLyBUYWNrIG9uIHRoZSByZW1haW5pbmcgcm93cw0KCQlpZiAo JHJzKSB7DQoJCQlmb3JlYWNoKCRycyBhcyAkcm93KSB7DQoJCQkJaWYgKCFpbl9hcnJheSgk cm93WydpZCddLCAkaWdub3JlTGlzdCkpIHsNCgkJCQkJJHJlbWFpbmluZ1JTW10gPSAkcm93 Ow0KCQkJCX0NCgkJCX0NCgkJfQ0KCQkkcnMgPSBhcnJheV9tZXJnZSgkb3JkZXJlZFJTLCAk cmVtYWluaW5nUlMpOw0KCX0NCg0KCS8vIEdyYWIgdGhlIHBvcnRpb24gb2YgdGhlIHJlY29y ZCBzZXQgYWN0dWFsbHkgcmVxdWlyZWQgdG8gaXRlcmF0ZSBvdmVyDQoJaWYgKCRycykgew0K CQkkcnMgPSBhcnJheV9zbGljZSgkcnMsICRvZmZzZXQsICgoJGRpcmVjdG9yeSkgPyAkZGly bGltaXQgOiAoKCRsaW1pdD09MCkgPyAkbWF4bGltaXQgOiAkbGltaXQpKSk7DQoJfQ0KDQoJ Ly8gUHJlcGFyZSBmaXhlZCB0aHVtYnNpemVzDQoJJHRodW1iV2lkdGggPSAkdGh1bWJIZWln aHQgPSAnJzsNCgkkdGh1bWJXVW5pdHMgPSAkdGh1bWJIVW5pdHMgPSAnJzsNCglpZiAoJHRo dW1ic2l6ZSkgew0KCQkkdGh1bWJTaXplcyA9IGRvX2xpc3QoJHRodW1ic2l6ZSwgJGRlbGlt KTsNCgkJJHVuaXRzID0gcHJlZ19yZXBsYWNlKCcvWzAtOV0vJywgJycsICR0aHVtYlNpemVz WzBdKTsNCgkJaWYgKGNvdW50KCR0aHVtYlNpemVzKSA9PSAxKSB7DQoJCQkkdGh1bWJXaWR0 aCA9ICR0aHVtYkhlaWdodCA9IHByZWdfcmVwbGFjZSgnL1teMC05XS8nLCAnJywgJHRodW1i U2l6ZXNbMF0pOw0KCQkJJHRodW1iV1VuaXRzID0gJHRodW1iSFVuaXRzID0gKCR1bml0cyA9 PSAnJykgPyAkdGh1bWJXVW5pdHMgOiAkdW5pdHM7DQoJCX0gZWxzZSB7DQoJCQkkdGh1bWJX aWR0aCA9IHByZWdfcmVwbGFjZSgnL1teMC05XS8nLCAnJywgJHRodW1iU2l6ZXNbMF0pOw0K CQkJJHRodW1iSGVpZ2h0ID0gcHJlZ19yZXBsYWNlKCcvW14wLTldLycsICcnLCAkdGh1bWJT aXplc1sxXSk7DQoJCQkkdGh1bWJXVW5pdHMgPSAoJHVuaXRzID09ICcnICYmICR0aHVtYldp ZHRoICE9ICcnKSA/ICR0aHVtYldVbml0cyA6ICR1bml0czsNCgkJCSR1bml0cyA9IHByZWdf cmVwbGFjZSgnL1swLTldLycsICcnLCAkdGh1bWJTaXplc1sxXSk7DQoJCQkkdGh1bWJIVW5p dHMgPSAoJHVuaXRzID09ICcnICYmICR0aHVtYkhlaWdodCAhPSAnJykgPyAkdGh1bWJIVW5p dHMgOiAkdW5pdHM7DQoJCX0NCgl9DQoNCgkvLyBQcmVwYXJlIGZpeGVkIGltYWdlIHNpemVz DQoJJGltYWdlV2lkdGggPSAkaW1hZ2VIZWlnaHQgPSAnJzsNCgkkaW1hZ2VXVW5pdHMgPSAk aW1hZ2VIVW5pdHMgPSAnJzsNCglpZiAoJGltZ3NpemUpIHsNCgkJJGltYWdlU2l6ZXMgPSBk b19saXN0KCRpbWdzaXplLCAkZGVsaW0pOw0KCQkkdW5pdHMgPSBwcmVnX3JlcGxhY2UoJy9b MC05XS8nLCAnJywgJGltYWdlU2l6ZXNbMF0pOw0KCQlpZiAoY291bnQoJGltYWdlU2l6ZXMp ID09IDEpIHsNCgkJCSRpbWFnZVdpZHRoID0gJGltYWdlSGVpZ2h0ID0gcHJlZ19yZXBsYWNl KCcvW14wLTldLycsICcnLCAkaW1hZ2VTaXplc1swXSk7DQoJCQkkaW1hZ2VXVW5pdHMgPSAk aW1hZ2VIVW5pdHMgPSAoJHVuaXRzID09ICcnKSA/ICRpbWFnZVdVbml0cyA6ICR1bml0czsN CgkJfSBlbHNlIHsNCgkJCSRpbWFnZVdpZHRoID0gcHJlZ19yZXBsYWNlKCcvW14wLTldLycs ICcnLCAkaW1hZ2VTaXplc1swXSk7DQoJCQkkaW1hZ2VIZWlnaHQgPSBwcmVnX3JlcGxhY2Uo Jy9bXjAtOV0vJywgJycsICRpbWFnZVNpemVzWzFdKTsNCgkJCSRpbWFnZVdVbml0cyA9ICgk dW5pdHMgPT0gJycgJiYgJGltYWdlV2lkdGggIT0gJycpID8gJGltYWdlV1VuaXRzIDogJHVu aXRzOw0KCQkJJHVuaXRzID0gcHJlZ19yZXBsYWNlKCcvWzAtOV0vJywgJycsICRpbWFnZVNp emVzWzFdKTsNCgkJCSRpbWFnZUhVbml0cyA9ICgkdW5pdHMgPT0gJycgJiYgJGltYWdlSGVp Z2h0ICE9ICcnKSA/ICRpbWFnZUhVbml0cyA6ICR1bml0czsNCgkJfQ0KCX0NCg0KCS8vIENv bGxhdGlvbiBkZWZlcnMgcGFyc2luZyB0aGUgZm9ybSBmb3IgZWFjaCByZXR1cm5lZCBpdGVt Lg0KCS8vIEluc3RlYWQgaXQgb3V0cHV0cyB0aGUgZGF0YSBhcyBhIGxpc3QgYXQgdGhlIGVu ZCAoaXRlbXMgbWF5IGJlIGluZGl2aWR1YWxseSBxdW90ZWQgb3IgZXh0cmFjdGVkIGlmIHJl cXVpcmVkKQ0KCS8vVE9ETyA6IEFkZCBBTFdBWVMgc3dpdGNoIGFzIGEgc2hvcnRjdXQgdG8g c3BlY2lmeSB0aGF0IGFsbCBtYXRjaGluZyBpdGVtcyAocmVnYXJkbGVzcyBvZiAjMSwgIzIs ICMzIGV0YykgYXJlIHRvIGJlIHF1b3RlZA0KCWlmICgkY29sbGF0ZSkgew0KCQkkZGJsUXVv dGUgPSAkc2dsUXVvdGUgPSBhcnJheSgnU01ETk9ORScpOw0KCQkkY29sbGF0ZU9wdHMgPSBk b19saXN0KCRjb2xsYXRlLCAkZGVsaW0pOw0KCQlmb3JlYWNoICgkY29sbGF0ZU9wdHMgYXMg JG9wdGlvbikgew0KCQkJJGluZGV4ZXMgPSBkb19saXN0KCRvcHRpb24sICRwYXJhbWRlbGlt KTsNCgkJCSRjb2xUeXBlID0gYXJyYXlfc2hpZnQoJGluZGV4ZXMpOw0KCQkJLy8gU3VwcGx5 aW5nICdxdW90ZScgb24gaXRzIG93biB3aWxsIGVtcHR5IHRoZSByZWxldmFudCBhcnJheSwg aW1wbHlpbmcgIkFMTCIgZmllbGRzIGFyZSB0byBiZSBxdW90ZWQNCgkJCXN3aXRjaCAoJGNv bFR5cGUpIHsNCgkJCQljYXNlICJzZ2xxdW90ZSI6DQoJCQkJCSRzZ2xRdW90ZSA9ICRpbmRl eGVzOw0KCQkJCQlicmVhazsNCgkJCQljYXNlICJkYmxxdW90ZSI6DQoJCQkJY2FzZSAicXVv dGUiOg0KCQkJCQkkZGJsUXVvdGUgPSAkaW5kZXhlczsNCgkJCQkJYnJlYWs7DQoJCQl9DQoJ CX0NCgl9DQoNCgkvLyBDb21ib3MgYXJlIHVzZXItZGVmaW5lZCBjb21iaW5hdGlvbnMgb2Yg cmVwbGFjZW1lbnQgbW9kaWZpZXJzIChlLmcuIGlkZXh0OiB7aWR9e2V4dH0sIC4uLg0KCSRj b21ib3MgPSBhcnJheSgpOw0KCWlmICgkY29tYm8pIHsNCgkJJGNvbWJvID0gZG9fbGlzdCgk Y29tYm8sICRkZWxpbSk7DQoJCWZvcmVhY2ggKCRjb21ibyBhcyAkbmV3RGVmKSB7DQoJCQls aXN0KCRkZWZQYXJ0cywgJHVud2FudGVkKSA9IHNtZF9kb0xpc3QoJG5ld0RlZiwgZmFsc2Us ICcnLCBmYWxzZSwgJHBhcmFtZGVsaW0sICRzcGMpOw0KCQkJJGRlZk5hbWUgPSAieyIuYXJy YXlfc2hpZnQoJGRlZlBhcnRzKS4ifSI7DQoJCQkkY29tYm9zWyRkZWZOYW1lXSA9ICRkZWZQ YXJ0c1swXTsNCgkJfQ0KCX0NCglpZiAoJGRlYnVnID4gMSkgew0KCQllY2hvICIrKyBDT01C T3MgKysiOw0KCQlkbXAoJGNvbWJvcyk7DQoJfQ0KCS8vIENvbnN0cnVjdCB0aGUgb3V0cHV0 DQoJJHRodW1ib3V0ID0gYXJyYXkoKTsNCgkkZ3JvdXBvdXQgPSBhcnJheSgpOw0KCSRuYXZv dXQgPSBhcnJheSgpOw0KCSRvdXQgPSBhcnJheSgpOw0KCSRjb2xsYXRpb25zID0gYXJyYXko KTsNCgkkY2hJZGVudGlmaWVyID0gIm9uY2hhbmdlIjsNCg0KCWlmICgkZGVidWcgPiAyKSB7 DQoJCWVjaG8gIisrIFJFQ09SRCBTRVQgKysiOw0KCQlkbXAoJHJzKTsNCgl9DQoJaWYgKCRk ZWJ1ZyA+IDMpIHsNCgkJZWNobyAiKysgQVZBSUxBQkxFICc/JyBWQVJTICsrIjsNCgkJaWYg KCRwcmV0ZXh0KSBkbXAoJHByZXRleHQpOw0KCQlpZiAoJHRoaXNhcnRpY2xlKSBkbXAoJHRo aXNhcnRpY2xlKTsNCgl9DQoNCglpZigkcnMpIHsNCgkJJGlkeCA9IDA7DQoJCSRjdHIgPSAx Ow0KCQkkdGh1bWJJZHggPSAwOw0KCQkkdGh1bWJDdHIgPSAxOw0KCQkkbnVtSW1hZ2VzID0g Y291bnQoJHJzKTsNCgkJJHJlcGFnZW1lbnRzID0gYXJyYXkoKTsNCg0KCQkvLyBTZXQgdXAg dGhlIHBhZ2luZyBmZWF0dXJlcyBpZiByZXF1aXJlZA0KCQlpZiAoKCRsaW1pdCA+IDApICYm ICRwYWdpbmcpIHsNCgkJCSRuZXh0ID0gKCRudW1QYWdlcyA+IDEgJiYgJHRodW1QYWdlICE9 ICRudW1QYWdlcyk7DQoJCQkkcHJldiA9ICgkbnVtUGFnZXMgPiAxICYmICR0aHVtUGFnZSA+ IDEpOw0KCQkJJHByZXZQYWdlID0gc21kX2FkZFFTVmFyKCRwcmV0ZXh0WydyZXF1ZXN0X3Vy aSddLCAkZ2FsbElELCAkdGh1bVBhZ2UtMSk7DQoJCQkkbmV4dFBhZ2UgPSBzbWRfYWRkUVNW YXIoJHByZXRleHRbJ3JlcXVlc3RfdXJpJ10sICRnYWxsSUQsICR0aHVtUGFnZSsxKTsNCgkJ CSR0aGlzUGFnZSA9IHNtZF9hZGRRU1ZhcigkcHJldGV4dFsncmVxdWVzdF91cmknXSwgJGdh bGxJRCwgJHRodW1QYWdlKTsNCgkJCSRmaXJzdFBhZ2UgPSBzbWRfYWRkUVNWYXIoJHByZXRl eHRbJ3JlcXVlc3RfdXJpJ10sICRnYWxsSUQsIDEpOw0KCQkJJGxhc3RQYWdlID0gc21kX2Fk ZFFTVmFyKCRwcmV0ZXh0WydyZXF1ZXN0X3VyaSddLCAkZ2FsbElELCAkbnVtUGFnZXMpOw0K DQoJCQkvLyBMYWJlbHMgY2FuIGJlIHNwZWNpZmllZCBpbiB0aGUgcmVwbGFjZW1lbnQgdGFn IGFmdGVyIGEgcGFyYW1kZWxpbS4NCgkJCS8vICdlYXJsaWVyJyBhbmQgJ2xhdGVyJyBkb24n dCBoYXZlIGxhYmVscy4gQW55dGhpbmcgc3BlY2lmaWVkIGFmdGVyIHBhcmFtZGVsaW0gaXMg dGhlIG1heCBudW1iZXIgb2YgcGFnZXMgdG8gc2hvdzsgZW1wdHkgPSBhbGwgcGFnZXMNCgkJ CSRsYWJlbCA9IGFycmF5KA0KCQkJCQkne25hdmZpcnN0fScgPT4gJHNtZF9nYWxsTGFuZy0+ Z1R4dCgnbmF2Zmlyc3QnKSwNCgkJCQkJJ3tuYXZwcmV2fScgPT4gJHNtZF9nYWxsTGFuZy0+ Z1R4dCgnbmF2cHJldicpLA0KCQkJCQkne25hdmVhcmxpZXJ9JyA9PiAnJywNCgkJCQkJJ3tu YXZ0aGlzfScgPT4gJHRodW1QYWdlLA0KCQkJCQkne25hdnRoaXN1cmx9JyA9PiAkdGh1bVBh Z2UsDQoJCQkJCSd7bmF2bGF0ZXJ9JyA9PiAnJywNCgkJCQkJJ3tuYXZuZXh0fScgPT4gJHNt ZF9nYWxsTGFuZy0+Z1R4dCgnbmF2bmV4dCcpLA0KCQkJCQkne25hdmxhc3R9JyA9PiAkc21k X2dhbGxMYW5nLT5nVHh0KCduYXZsYXN0JyksDQoJCQkJKTsNCg0KCQkJJGxhYmVsUkUgPSAn L1x7KG5hdlthLXpdKyknLiRwYXJhbWRlbGltLicoLis/KVx9Lyc7DQoJCQkkbnVtTGFiZWxz ID0gcHJlZ19tYXRjaF9hbGwoJGxhYmVsUkUsICRwYWdlZm9ybSwgJGxhYmVscyk7DQoNCgkJ CWZvciAoJGxhYmVsQ3RyID0gMDsgJGxhYmVsQ3RyIDwgJG51bUxhYmVsczsgJGxhYmVsQ3Ry KyspIHsNCgkJCQkkZmllbGRuYW1lID0gJ3snLiRsYWJlbHNbMV1bJGxhYmVsQ3RyXS4nfSc7 DQoJCQkJJGxhYmVsWyRmaWVsZG5hbWVdID0gJGxhYmVsc1syXVskbGFiZWxDdHJdOw0KCQkJ CSRwYWdlZm9ybSA9IHN0cl9yZXBsYWNlKCRsYWJlbHNbMF1bJGxhYmVsQ3RyXSwgJ3snLiRs YWJlbHNbMV1bJGxhYmVsQ3RyXS4nfScsICRwYWdlZm9ybSk7DQoJCQl9DQoNCgkJCWlmICgk ZGVidWcgPiAxKSB7DQoJCQkJZWNobyAiKysgUEFHSU5HIExBQkVMUyArKyI7DQoJCQkJZG1w KCRsYWJlbCk7DQoJCQl9DQoNCgkJCS8vIEdlbmVyYXRlICdlYXJsaWVyJyBhbmQgJ2xhdGVy JyBsaXN0cw0KCQkJJG51bUVhcmxpZXIgPSBpbnR2YWwoJGxhYmVsWyd7bmF2ZWFybGllcn0n XSk7DQoJCQkkbnVtTGF0ZXIgPSBpbnR2YWwoJGxhYmVsWyd7bmF2bGF0ZXJ9J10pOw0KCQkJ JG51bUVhcmxpZXIgPSAoJG51bUVhcmxpZXIgJiYgKCR0aHVtUGFnZS0kbnVtRWFybGllciA+ IDEpKSA/ICRudW1FYXJsaWVyIDogJHRodW1QYWdlLTE7DQoJCQkkbnVtTGF0ZXIgPSAoJG51 bUxhdGVyICYmICgkdGh1bVBhZ2UrJG51bUxhdGVyIDwgJG51bVBhZ2VzKSkgPyAkbnVtTGF0 ZXIgOiAkbnVtUGFnZXMtJHRodW1QYWdlOw0KCQkJJG5hdkVhcmxpZXIgPSAkbmF2TGF0ZXIg PSBhcnJheSgpOw0KCQkJZm9yICgkY29kID0gJHRodW1QYWdlLSRudW1FYXJsaWVyOyAkY29k IDwgJHRodW1QYWdlOyAkY29kKyspIHsNCgkJCQkkbmF2RWFybGllcltdID0gJzxhIGhyZWY9 Iicuc21kX2FkZFFTVmFyKCRwcmV0ZXh0WydyZXF1ZXN0X3VyaSddLCAkZ2FsbElELCAkY29k KS4nIj4nLiRjb2QuJzwvYT4nOw0KCQkJfQ0KCQkJZm9yICgkY29kID0gJHRodW1QYWdlKzE7 ICRjb2QgPD0gJHRodW1QYWdlKyRudW1MYXRlcjsgJGNvZCsrKSB7DQoJCQkJJG5hdkxhdGVy W10gPSAnPGEgaHJlZj0iJy5zbWRfYWRkUVNWYXIoJHByZXRleHRbJ3JlcXVlc3RfdXJpJ10s ICRnYWxsSUQsICRjb2QpLiciPicuJGNvZC4nPC9hPic7DQoJCQl9DQoJCQkkbmF2RWFybGll ciA9IGRvV3JhcCgkbmF2RWFybGllciwgJycsICRuYXZicmVhaywgJycpOw0KCQkJJG5hdkxh dGVyID0gZG9XcmFwKCRuYXZMYXRlciwgJycsICRuYXZicmVhaywgJycpOw0KDQoJCQkvLyBN YWtlIHVwIHRoZSByZXBhZ2VtZW50cyBhcnJheSBmb3IgcGFnZWZvcm0NCgkJCSRyZXBhZ2Vt ZW50cyA9IGFycmF5KA0KCQkJCQkne25hdmZpcnN0fScgPT4gKCgkcHJldikgPyBkb1RhZygn PGEgaHJlZj0iJy4kZmlyc3RQYWdlLiciPicuJGxhYmVsWyd7bmF2Zmlyc3R9J10uJzwvYT4n LCAkbmF2YnJlYWspIDogZG9UYWcoJGxhYmVsWyd7bmF2Zmlyc3R9J10sICRuYXZicmVhaywg JGVtcHR5Y2xhc3MpKSwNCgkJCQkJJ3tuYXZwcmV2fScgPT4gKCgkcHJldikgPyBkb1RhZygn PGEgaHJlZj0iJy4kcHJldlBhZ2UuJyI+Jy4kbGFiZWxbJ3tuYXZwcmV2fSddLic8L2E+Jywg JG5hdmJyZWFrKSA6IGRvVGFnKCRsYWJlbFsne25hdnByZXZ9J10sICRuYXZicmVhaywgJGVt cHR5Y2xhc3MpKSwNCgkJCQkJJ3tuYXZlYXJsaWVyfScgPT4gJG5hdkVhcmxpZXIsDQoJCQkJ CSd7bmF2dGhpc30nID0+IGRvVGFnKCRsYWJlbFsne25hdnRoaXN9J10sICRuYXZicmVhaywg J2N1cnJlbnQgJy4kZW1wdHljbGFzcyksDQoJCQkJCSd7bmF2dGhpc3VybH0nID0+IGRvVGFn KCc8YSBocmVmPSInLiR0aGlzUGFnZS4nIj4nLiRsYWJlbFsne25hdnRoaXN1cmx9J10uJzwv YT4nLCAkbmF2YnJlYWssICdjdXJyZW50JyksDQoJCQkJCSd7bmF2bGF0ZXJ9JyA9PiAkbmF2 TGF0ZXIsDQoJCQkJCSd7bmF2bmV4dH0nID0+ICgoJG5leHQpID8gZG9UYWcoJzxhIGhyZWY9 IicuJG5leHRQYWdlLiciPicuJGxhYmVsWyd7bmF2bmV4dH0nXS4nPC9hPicsICRuYXZicmVh aykgOiBkb1RhZygkbGFiZWxbJ3tuYXZuZXh0fSddLCAkbmF2YnJlYWssICRlbXB0eWNsYXNz KSksDQoJCQkJCSd7bmF2bGFzdH0nID0+ICgoJG5leHQpID8gZG9UYWcoJzxhIGhyZWY9Iicu JGxhc3RQYWdlLiciPicuJGxhYmVsWyd7bmF2bGFzdH0nXS4nPC9hPicsICRuYXZicmVhaykg OiBkb1RhZygkbGFiZWxbJ3tuYXZsYXN0fSddLCAkbmF2YnJlYWssICRlbXB0eWNsYXNzKSks DQoJCQkJCSd7bmF2dGhpc3BhZ2V1cmx9JyA9PiAkdGhpc1BhZ2UsDQoJCQkJCSd7bmF2bmV4 dHBhZ2V1cmx9JyA9PiAoKCRuZXh0KSA/ICRuZXh0UGFnZSA6ICcnKSwNCgkJCQkJJ3tuYXZw cmV2cGFnZXVybH0nID0+ICgoJHByZXYpID8gJHByZXZQYWdlIDogJycpLA0KCQkJCQkne25h dmZpcnN0cGFnZXVybH0nID0+ICRmaXJzdFBhZ2UsDQoJCQkJCSd7bmF2bGFzdHBhZ2V1cmx9 JyA9PiAkbGFzdFBhZ2UsDQoJCQkJCSd7dG90YWxpbWFnZXN9JyA9PiAkbnVtSW1hZ2VzLA0K CQkJCQkne3RvdGFscGFnZXN9JyA9PiAkbnVtUGFnZXMsDQoJCQkJCSd7bWF4aW1hZ2VzfScg PT4gJGFsbEltYWdlcywNCgkJCQkpOw0KDQoJCQkJLy8gUGVyZm9ybSBlc2NhcGluZyBoZXJl LCBqdXN0IHByaW9yIHRvIG91dHB1dA0KCQkJCWlmICgkZXNjYXBlcykgew0KCQkJCQlmb3Jl YWNoICgkcmVwYWdlbWVudHMgYXMgJGRlZk5hbWUgPT4gJGRlZlZhbCkgew0KCQkJCQkJaWYg KGluX2FycmF5KHRyaW0oJGRlZk5hbWUsICJ7fSIpLCAkZXNjYXBlcykpIHsNCgkJCQkJCQkk cmVwYWdlbWVudHNbJGRlZk5hbWVdID0gaHRtbHNwZWNpYWxjaGFycygkZGVmVmFsLCBFTlRf UVVPVEVTKTsNCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCX0NCg0KCQkJCS8vIFBlcmZvcm0gdGhl IHN1YnN0aXR1dGlvbnMNCgkJCQkkbmF2b3V0W10gPSBwYXJzZShzdHJ0cigkcGFnZWZvcm0s ICRyZXBhZ2VtZW50cykpOw0KCQl9DQoNCgkJLy8gRm9yIGV2ZXJ5IGltYWdlIGluIHRoZSBn YWxsZXJ5Li4uDQoJCWZvcmVhY2goJHJzIGFzICRrZXkgPT4gJHJvdykgew0KCQkJaWYgKCRk aXJlY3RvcnkpIHsNCgkJCQkkdXJsUGF0aCA9ICRyb3dbJ3BhdGgnXS4nLyc7DQoJCQl9IGVs c2Ugew0KCQkJCSR1cmxQYXRoID0gaHUuJGltZ19kaXIuJy8nOw0KCQkJfQ0KCQkJJHRoZVRo dW1iID0gJHVybFBhdGggLiAkcm93WydpZCddIC4gJHRodW1ibW9kIC4gJHJvd1snZXh0J107 DQoJCQkkZnVsbFNpemUgPSAkdXJsUGF0aCAuICRyb3dbJ2lkJ10gLiAkZnVsbG1vZCAuJHJv d1snZXh0J107DQoNCgkJCS8vIERvIHdlIG5lZWQgdG8gcmVzZXQgdGhlIHRodW1iIGNvdW50 ZXIgdGhpcyB0aW1lPw0KCQkJZm9yZWFjaCAoJHJlc2V0T3B0cyBhcyAkcmVzZXRPcHQgPT4g JHJlc2V0VmFsKSB7DQoJCQkJaWYgKHN0cnBvcygkcmVzZXRPcHQsICdzbWRfZXZlcnknKSA9 PT0gMCkgew0KCQkJCQkkaXRlciA9IGV4cGxvZGUoJHBhcmFtZGVsaW0sICRyZXNldE9wdCk7 DQoJCQkJCSRpdGVyID0gKGNvdW50KCRpdGVyKSA+IDEpID8gJGl0ZXJbMV0gOiAwOw0KCQkJ CQlpZiAoJHRodW1iSWR4ICUgJGl0ZXIgPT0gMCkgew0KCQkJCQkJJHRodW1iSWR4ID0gMDsN CgkJCQkJCSR0aHVtYkN0ciA9IDE7DQoJCQkJCX0NCgkJCQl9IGVsc2UgaWYgKCRyb3dbJHJl c2V0T3B0XSAhPSAkcmVzZXRWYWwpIHsNCgkJCQkJJHRodW1iSWR4ID0gMDsNCgkJCQkJJHRo dW1iQ3RyID0gMTsNCgkJCQkJYnJlYWs7DQoJCQkJfQ0KCQkJfQ0KDQoJCQkvLyBPdmVycmlk ZSB0aHVtYnNpemUgLyBpbWdzaXplIGlmIHJlcXVpcmVkDQoJCQlpZiAoJHRodW1ic2l6ZSkg ew0KCQkJCSR0aGVUaHVtYldpZHRoID0gZW1wdHkoJHRodW1iV2lkdGgpID8gJHJvd1sndGh1 bWJfdyddIDogJHRodW1iV2lkdGg7DQoJCQkJJHRoZVRodW1iSGVpZ2h0ID0gZW1wdHkoJHRo dW1iSGVpZ2h0KSA/ICRyb3dbJ3RodW1iX2gnXSA6ICR0aHVtYkhlaWdodDsNCgkJCQkkdGhl VGh1bWJXVW5pdHMgPSAkdGh1bWJXVW5pdHM7DQoJCQkJJHRoZVRodW1iSFVuaXRzID0gJHRo dW1iSFVuaXRzOw0KCQkJfSBlbHNlIHsNCgkJCQkkdGhlVGh1bWJXaWR0aCA9ICRyb3dbJ3Ro dW1iX3cnXTsNCgkJCQkkdGhlVGh1bWJIZWlnaHQgPSAkcm93Wyd0aHVtYl9oJ107DQoJCQkJ JHRoZVRodW1iV1VuaXRzID0gJHRoZVRodW1iSFVuaXRzID0gJyc7DQoJCQl9DQoNCgkJCWlm ICgkaW1nc2l6ZSkgew0KCQkJCSR0aGVJbWFnZVdpZHRoID0gZW1wdHkoJGltYWdlV2lkdGgp ID8gJHJvd1sndyddIDogJGltYWdlV2lkdGg7DQoJCQkJJHRoZUltYWdlSGVpZ2h0ID0gZW1w dHkoJGltYWdlSGVpZ2h0KSA/ICRyb3dbJ2gnXSA6ICRpbWFnZUhlaWdodDsNCgkJCQkkdGhl SW1hZ2VXVW5pdHMgPSAkaW1hZ2VXVW5pdHM7DQoJCQkJJHRoZUltYWdlSFVuaXRzID0gJGlt YWdlSFVuaXRzOw0KCQkJfSBlbHNlIHsNCgkJCQkkdGhlSW1hZ2VXaWR0aCA9ICRyb3dbJ3cn XTsNCgkJCQkkdGhlSW1hZ2VIZWlnaHQgPSAkcm93WydoJ107DQoJCQkJJHRoZUltYWdlV1Vu aXRzID0gJHRoZUltYWdlSFVuaXRzID0gJyc7DQoJCQl9DQoNCgkJCS8vIENvbnN0cnVjdCB0 aGUgcmVwbGFjZW1lbnQgYXJyYXkNCgkJCSRyZXBsYWNlbWVudHMgPSBhcnJheSgNCgkJCQkJ J3tpZH0nID0+ICRyb3dbJ2lkJ10sDQoJCQkJCSd7bmFtZX0nID0+ICRyb3dbJ25hbWUnXSwN CgkJCQkJJ3tleHR9JyA9PiAkcm93WydleHQnXSwNCgkJCQkJJ3tjYXRlZ29yeX0nID0+ICRy b3dbJ2NhdGVnb3J5J10sDQoJCQkJCSd7Y2F0ZWdvcnlfdGl0bGV9JyA9PiAoKGlzc2V0KCRy b3dbJ2NhdGVnb3J5X3RpdGxlJ10pKSA/ICRyb3dbJ2NhdGVnb3J5X3RpdGxlJ10gOiAnJyks DQoJCQkJCSd7YXV0aG9yfScgPT4gJHJvd1snYXV0aG9yJ10sDQoJCQkJCSd7aGFzdGh1bWJ9 JyA9PiAoaXNzZXQoJHJvd1sndGh1bWJuYWlsJ10pID8gJHJvd1sndGh1bWJuYWlsJ10gOiAw KSwNCgkJCQkJJ3t1cmx9JyA9PiAkZnVsbFNpemUsDQoJCQkJCSd7dGh1bWJ1cmx9JyA9PiAk dGhlVGh1bWIsDQoJCQkJCSd7aW1hZ2VwYXRofScgPT4gJHVybFBhdGgsDQoJCQkJCSd7aW1h Z2VkZWZ9JyA9PiBiYXNlbmFtZSgkZnVsbFNpemUpLA0KCQkJCQkne3RodW1iZGVmfScgPT4g YmFzZW5hbWUoJHRoZVRodW1iKSwNCgkJCQkJJ3thbHR9JyA9PiAkcm93WydhbHQnXSwNCgkJ CQkJJ3t0aXRsZX0nID0+ICRyb3dbJ2NhcHRpb24nXSwNCgkJCQkJJ3tjYXB0aW9ufScgPT4g JHJvd1snY2FwdGlvbiddLA0KCQkJCQkne3RodW1id2lkdGh9JyA9PiAkdGhlVGh1bWJXaWR0 aCwNCgkJCQkJJ3t0aHVtYmhlaWdodH0nID0+ICR0aGVUaHVtYkhlaWdodCwNCgkJCQkJJ3t0 aHVtYnd1bml0c30nID0+ICR0aGVUaHVtYldVbml0cywNCgkJCQkJJ3t0aHVtYmh1bml0c30n ID0+ICR0aGVUaHVtYkhVbml0cywNCgkJCQkJJ3t3aWR0aH0nID0+ICR0aGVJbWFnZVdpZHRo LA0KCQkJCQkne2hlaWdodH0nID0+ICR0aGVJbWFnZUhlaWdodCwNCgkJCQkJJ3t3dW5pdHN9 JyA9PiAkdGhlSW1hZ2VXVW5pdHMsDQoJCQkJCSd7aHVuaXRzfScgPT4gJHRoZUltYWdlSFVu aXRzLA0KCQkJCQkne2RhdGV9JyA9PiAoKCRmb3JtYXQpID8gc2FmZV9zdHJmdGltZSgkZm9y bWF0LCBzdHJ0b3RpbWUoJHJvd1snZGF0ZSddKSwgJGdtdCwgJGxhbmcpIDogJHJvd1snZGF0 ZSddKSwNCgkJCQkJJ3tnYWxsZXJ5aWR9JyA9PiAkZ2FsbElELA0KCQkJCQkne2luZGV4fScg PT4gJGlkeCwNCgkJCQkJJ3tjb3VudGVyfScgPT4gJGN0ciwNCgkJCQkJJ3t0aHVtYmluZGV4 fScgPT4gJHRodW1iSWR4LA0KCQkJCQkne3RodW1iY291bnRlcn0nID0+ICR0aHVtYkN0ciwN CgkJCQkJJ3t0b3RhbGltYWdlc30nID0+ICRudW1JbWFnZXMsDQoJCQkJCSd7bWF4aW1hZ2Vz fScgPT4gJGFsbEltYWdlcywNCgkJCQkpOw0KDQoJCQkvLyBBZGQgYW55IGN1c3RvbSBjb2x1 bW5zDQoJCQlmb3JlYWNoICgkZXh0cmFNYXAgYXMgJGVDb2wgPT4gJGVWYWwpIHsNCgkJCQkk cmVwbGFjZW1lbnRzWyd7Jy4kZVZhbC4nfSddID0gJHJvd1skZUNvbF07DQoJCQl9DQoNCgkJ CS8vIEFwcGVuZCBhbnkgY2hhbmdlZCBpdGVtcyB0aGF0IGFyZSByZXF1aXJlZA0KCQkJJGVu ZHRhZyA9IGZhbHNlOw0KCQkJZm9yZWFjaCAoJHJlc2V0T3B0cyBhcyAkcmVzZXRPcHQgPT4g JHJlc2V0VmFsKSB7DQoJCQkJaWYgKHN0cnBvcygkcmVzZXRPcHQsICdzbWRfZXZlcnknKSA9 PT0gMCkgew0KCQkJCQkkaXRlciA9IGV4cGxvZGUoJHBhcmFtZGVsaW0sICRyZXNldE9wdCk7 DQoJCQkJCSRpdGVyID0gKGNvdW50KCRpdGVyKSA+IDEpID8gJGl0ZXJbMV0gOiAwOw0KCQkJ CQlpZiAoJHRodW1iQ3RyICUgJGl0ZXIgPT09IDAgfHwgJGN0ciA9PSAkbnVtSW1hZ2VzKSB7 DQoJCQkJCQkkZW5kdGFnID0gdHJ1ZTsNCgkJCQkJfQ0KCQkJCX0gZWxzZSB7DQoJCQkJCSRy ZXBsYWNlbWVudHNbJ3snLiRjaElkZW50aWZpZXIuJHBhcmFtZGVsaW0uJHJlc2V0T3B0Lid9 J10gPSAoJHRodW1iSWR4ID09IDApID8gKChpc3NldCgkcmVzZXRGb3Jtc1skcmVzZXRPcHRd KSkgPyBzdHJ0cihwYXJzZV9mb3JtKCRyZXNldEZvcm1zWyRyZXNldE9wdF0pLCAkcmVwbGFj ZW1lbnRzKSA6IGRvVGFnKCRyb3dbJHJlc2V0T3B0XSwgJG9uY2hhbmdld3JhcHRhZywgJG9u Y2hhbmdlY2xhc3MpKSA6ICcnOw0KCQkJCQkvLyBEbyBhIHNuZWFreSAoeXVrKSBsb29rYWhl YWQNCgkJCQkJaWYgKGlzc2V0KCRyc1ska2V5KzFdKSkgew0KCQkJCQkJaWYoJHJzWyRrZXkr MV1bJHJlc2V0T3B0XSAhPSAkcm93WyRyZXNldE9wdF0pIHsNCgkJCQkJCQkkZW5kdGFnID0g dHJ1ZTsNCgkJCQkJCX0NCgkJCQkJfSBlbHNlIHsNCgkJCQkJCSRlbmR0YWcgPSB0cnVlOyAv LyBMYXN0IGltYWdlDQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoNCgkJCSRyZXBsYWNlbWVudHNb J3tncm91cHRhZ2VuZH0nXSA9ICgkZ3JvdXB0YWcgJiYgJGVuZHRhZykgPyAnPC8nIC4gJGdy b3VwdGFnIC4gJz4nIDogJyc7DQoJCQkkcmVwbGFjZW1lbnRzWyd7Z3JvdXB0YWdzdGFydH0n XSA9ICgkZ3JvdXB0YWcgJiYgJHRodW1iSWR4ID09IDApID8gJzwnIC4gJGdyb3VwdGFnIC4g KCgkZ3JvdXBjbGFzcykgPyAnIGNsYXNzPSInLiRncm91cGNsYXNzLiciJyA6ICcnKSAuICc+ JyA6ICcnOw0KDQoJCQkvLyBBcHBlbmQgYW55IGNvbWJvcw0KCQkJZm9yZWFjaCAoJGNvbWJv cyBhcyAkZGVmTmFtZSA9PiAkbmV3RGVmKSB7DQoJCQkJaWYgKCFhcnJheV9rZXlfZXhpc3Rz KCRkZWZOYW1lLCAkcmVwbGFjZW1lbnRzKSkgew0KCQkJCQkkcmVwbGFjZW1lbnRzWyRkZWZO YW1lXSA9IHN0cnRyKCRuZXdEZWYsICRyZXBsYWNlbWVudHMpOw0KCQkJCX0NCgkJCX0NCg0K CQkJLy8gU29sb3MgYXJlIGl0ZW1zIGluIHRoZSBvdXRwdXQgZm9ybSB0aGF0IHJlcXVpcmUg ZGV0YWlscyBmcm9tIGEgc3BlY2lmaWMgcm93LiBVc2VmdWwgb25seSBpbiBjb2xsYXRpb24N CgkJCS8vIG1vZGUsIHRoZXkgYXJlIGFkZGVkIHRvIHRoZSByZXBsYWNlbWVudHMgYXJyYXkg b24gYW4gYXMtbmVlZGVkIGJhc2lzIHRvIHNhdmUgc3BhY2UvdGltZQ0KCQkJJHNvbG9SRSA9 ICcvXHsoW2EtejAtOV0rKSMnLiRjdHIuJ1x9Lyc7DQoJCQkkbnVtU29sb3MgPSBwcmVnX21h dGNoX2FsbCgkc29sb1JFLCAkdGhpbmcsICRzb2xvcyk7DQoJCQlmb3IgKCRzb2xvQ3RyID0g MDsgJHNvbG9DdHIgPCAkbnVtU29sb3M7ICRzb2xvQ3RyKyspIHsNCgkJCQkkZmllbGRuYW1l ID0gJ3snLiRzb2xvc1sxXVskc29sb0N0cl0uJyMnLiRjdHIuJ30nOw0KCQkJCSRncmFiZmll bGQgPSAneycuJHNvbG9zWzFdWyRzb2xvQ3RyXS4nfSc7DQoJCQkJJHJlcGxhY2VtZW50c1sk ZmllbGRuYW1lXSA9ICRyZXBsYWNlbWVudHNbJGdyYWJmaWVsZF07DQoJCQl9DQoNCgkJCS8v IFBlcmZvcm0gZXNjYXBpbmcgb24gdGhlIHJlcGxhY2VtZW50cy4NCgkJCS8vIE5vdGUgdGhl IHJlcGFnZW1lbnRzIGhhdmUgYWxyZWFkeSBiZWVuIGVzY2FwZWQgc28gd2hlbi9pZiB0aGV5 IGFyZSBjb21iaW5lZCB3aXRoIHRoZSByZXBsYWNlbWVudHMsDQoJCQkvLyB0aGUgZXNjYXBp bmcgaXMgbm90IGRvbmUgdHdpY2UNCgkJCWlmICgkZXNjYXBlcykgew0KCQkJCWZvcmVhY2gg KCRyZXBsYWNlbWVudHMgYXMgJGRlZk5hbWUgPT4gJGRlZlZhbCkgew0KCQkJCQlpZiAoaW5f YXJyYXkodHJpbSgkZGVmTmFtZSwgInt9IiksICRlc2NhcGVzKSkgew0KCQkJCQkJJHJlcGxh Y2VtZW50c1skZGVmTmFtZV0gPSBodG1sc3BlY2lhbGNoYXJzKCRkZWZWYWwsIEVOVF9RVU9U RVMpOw0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KDQoJCQkvLyBBZGQgdGhlIG5hdmlnYXRpb24g aXRlbXMgaWYgdGhleSdyZSBkZWZpbmVkDQoJCQlpZiAoY291bnQoJHJlcGFnZW1lbnRzKSA+ IDApIHsNCgkJCQkkcmVwbGFjZW1lbnRzID0gYXJyYXlfbWVyZ2UoJHJlcGFnZW1lbnRzLCAk cmVwbGFjZW1lbnRzKTsNCgkJCX0NCg0KCQkJLy8gSXMgYSB0aHVtYi90ZXh0IG9iamVjdCBy ZXF1aXJlZCB0aGlzIHRpbWU/DQoJCQkkb2JqZWN0ID0gJyc7DQoJCQlpZiAoJHRodW1iSWR4 ID49ICR0aHVtYm9mZnNldCAmJiAkdGh1bWJJZHggPCAkdGh1bWJvZmZzZXQrJHRodW1ibGlt aXQpIHsNCgkJCQkkb2JqZWN0ID0gKCRvYmplY3Rmb3JtKSA/IHBhcnNlKHN0cnRyKCRvYmpl Y3Rmb3JtLCAkcmVwbGFjZW1lbnRzKSkgOiAoKCR0ZXh0KSA/ICR0ZXh0IDogJzxpbWcgc3Jj PSInLiR0aGVUaHVtYi4nIicgLigoJHJvd1snYWx0J10pID8gJyBhbHQ9IicuJHJvd1snYWx0 J10uJyInIDogJycpIC4oKCR0aGVUaHVtYldpZHRoKSA/ICcgd2lkdGg9IicuJHRoZVRodW1i V2lkdGguJHRoZVRodW1iV1VuaXRzLiciJyA6ICcnKSAuKCgkdGhlVGh1bWJIZWlnaHQpID8g JyBoZWlnaHQ9IicuJHRoZVRodW1iSGVpZ2h0LiR0aGVUaHVtYkhVbml0cy4nIicgOiAnJykg LicgLz4nKTsNCgkJCX0NCgkJCSRyZXBsYWNlbWVudHNbJ3tvYmplY3R9J10gPSAkb2JqZWN0 Ow0KDQoJCQlpZiAoJGRlYnVnID4gMCkgew0KCQkJCWVjaG8gIisrIFJFUExBQ0VNRU5UUyA6 IElNQUdFICIuJGN0ci4iICsrIjsNCgkJCQlkbXAoJHJlcGxhY2VtZW50cyk7DQoJCQl9DQoN CgkJCS8vIENoZWNrIGlmIGNvdW50Zm9ybSBpcyB0byBiZSBjYWxsZWQNCgkJCSRjb3VudHBy ZSA9ICRjb3VudHBvc3QgPSBhcnJheSgpOw0KCQkJaWYgKCRjb3VudGluZykgew0KCQkJCWZv cmVhY2ggKCRjb3VudGZvcm0gYXMgJGNvdW50bGlzdCkgew0KCQkJCQkkcG9zb3ZlciA9IGFy cmF5KCk7DQoJCQkJCSRjb3VudGxpc3QgPSBzdHJ0cigkY291bnRsaXN0LCAkcmVwbGFjZW1l bnRzKTsgLy8gUmVwbGFjZSBhbnkge30gdmFycyB3aXRoIHRoZWlyIHJlYWwgdmFsdWVzDQoJ CQkJCSRjb3VudGxpc3QgPSBkb19saXN0KCRjb3VudGxpc3QsICRwYXJhbWRlbGltKTsNCgkJ CQkJaWYgKCRkcG9zPWFycmF5X3NlYXJjaCgnc21kX2Fib3ZlJywgJGNvdW50bGlzdCkpIHsN CgkJCQkJCSRwb3NvdmVyW10gPSAiYWJvdmUiOw0KCQkJCQkJdW5zZXQoJGNvdW50bGlzdFsk ZHBvc10pOw0KCQkJCQl9DQoJCQkJCWlmICgkZHBvcz1hcnJheV9zZWFyY2goJ3NtZF9iZWxv dycsICRjb3VudGxpc3QpKSB7DQoJCQkJCQkkcG9zb3ZlcltdID0gImJlbG93IjsNCgkJCQkJ CXVuc2V0KCRjb3VudGxpc3RbJGRwb3NdKTsNCgkJCQkJfQ0KCQkJCQkkY291bnRsaXN0ID0g YXJyYXlfbWVyZ2UoJGNvdW50bGlzdCk7IC8vIHJlLWluZGV4DQoNCgkJCQkJJHBvc292ZXIg PSAoZW1wdHkoJHBvc292ZXIpKSA/ICRjb3VudHBvc25zIDogJHBvc292ZXI7DQoJCQkJCSRk aXZieSA9IGZhbHNlOw0KCQkJCQlpZiAoJGNvdW50bGlzdFswXSA9PSAnc21kX2V2ZXJ5Jykg ew0KCQkJCQkJJGRpdmJ5ID0gdHJ1ZTsNCgkJCQkJCWFycmF5X3NoaWZ0KCRjb3VudGxpc3Qp Ow0KCQkJCQl9DQoJCQkJCSRudW1mb3JtcyA9IGNvdW50KCRjb3VudGxpc3QpOw0KCQkJCQkk Y2FsbGZvcm0gPSBmZXRjaF9mb3JtKCRjb3VudGxpc3RbJG51bWZvcm1zLTFdKTsNCgkJCQkJ dW5zZXQoJGNvdW50bGlzdFskbnVtZm9ybXMtMV0pOw0KCQkJCQkkb3Jsb2dpYyA9ICRhbmRs b2dpYyA9IGFycmF5KCk7DQoJCQkJCWZvcmVhY2ggKCRjb3VudGxpc3QgYXMgJGN1c3Rjb3Vu dCkgew0KCQkJCQkJJHNob3d2YWwgPSAoc3RycG9zKCRjdXN0Y291bnQsICIhIikgPT09IDAp ID8gZmFsc2UgOiB0cnVlOy8vIE5lZ2F0aXZlIGxvZ2ljIHJlcXVpcmVkDQoJCQkJCQkkY3Vz dGNvdW50ID0gc3RyX3JlcGxhY2UoJyEnLCAnJywgJGN1c3Rjb3VudCk7DQoJCQkJCQlpZiAo JHNob3d2YWwpIHsNCgkJCQkJCQkkb3Jsb2dpY1tdID0gZW1wdHkoJGN1c3Rjb3VudCkgfHwg KCgkZGl2YnkpID8gKCgkY3RyICUgJGN1c3Rjb3VudCA9PT0gMCkgPyB0cnVlIDogZmFsc2Up IDogKCgkY3VzdGNvdW50ID09ICRjdHIpID8gdHJ1ZSA6IGZhbHNlKSk7DQoJCQkJCQl9IGVs c2Ugew0KCQkJCQkJCSRhbmRsb2dpY1tdID0gKCRjdXN0Y291bnQgPT0gJGN0cikgPyBmYWxz ZSA6IHRydWU7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQkJaWYgKGluX2FycmF5KCcxJywgJG9y bG9naWMpICYmICFpbl9hcnJheSgnMCcsICRhbmRsb2dpYykpIHsNCgkJCQkJCWlmIChpbl9h cnJheSgiYWJvdmUiLCAkcG9zb3ZlcikpIHsNCgkJCQkJCQkkY291bnRwcmVbXSA9IHBhcnNl KHN0cnRyKCRjYWxsZm9ybSwgJHJlcGxhY2VtZW50cykpOw0KCQkJCQkJfQ0KCQkJCQkJaWYg KGluX2FycmF5KCJiZWxvdyIsICRwb3NvdmVyKSkgew0KCQkJCQkJCSRjb3VudHBvc3RbXSA9 IHBhcnNlKHN0cnRyKCRjYWxsZm9ybSwgJHJlcGxhY2VtZW50cykpOw0KCQkJCQkJfQ0KCQkJ CQl9DQogICAgICAgICAgICB9DQoJCQl9DQoNCgkJCWlmICgkZGVidWcgPiAwICYmICgkY291 bnRwcmUgfHwgJGNvdW50cG9zdCkpIHsNCgkJCQllY2hvICIrKyBDT1VOVCBGT1JNIFRSSUdH RVJFRCArKyI7DQoJCQkJaWYgKCRjb3VudHByZSkgew0KCQkJCQlkbXAoJGNvdW50cHJlKTsN CgkJCQl9DQoJCQkJaWYgKCRjb3VudHBvc3QpIHsNCgkJCQkJZG1wKCRjb3VudHBvc3QpOw0K CQkJCX0NCgkJCX0NCg0KCQkJLy8gSW4gY29sbGF0ZSBtb2RlIHRoZSBmb3JtIGlzIG9ubHkg cGFyc2VkIGF0IHRoZSBlbmQ6IGJ1aWxkIGEgY29sbG9zYWwgbXVsdGktZGltZW5zaW9uIGFy cmF5IG9mIGFsbCBpdGVtcyBoZXJlDQoJCQlpZiAoJGNvbGxhdGUpIHsNCgkJCQlmb3JlYWNo ICgkcmVwbGFjZW1lbnRzIGFzICRkZWZOYW1lID0+ICRkZWZWYWwpIHsNCgkJCQkJJGNvbGxh dGlvbnNbJGRlZk5hbWVdW10gPSAkZGVmVmFsOw0KCQkJCX0NCgkJCX0gZWxzZSB7DQoJCQkJ aWYgKCRjb3VudGluZykgew0KCQkJCQkkdGh1bWJvdXQgPSBhcnJheV9tZXJnZSgkdGh1bWJv dXQsICRjb3VudHByZSk7DQoJCQkJfQ0KDQoJCQkJJHRodW1ib3V0W10gPSBwYXJzZShzdHJ0 cigkdGhpbmcsICRyZXBsYWNlbWVudHMpKTsNCg0KCQkJCWlmICgkY291bnRpbmcpIHsNCgkJ CQkJJHRodW1ib3V0ID0gYXJyYXlfbWVyZ2UoJHRodW1ib3V0LCAkY291bnRwb3N0KTsNCgkJ CQl9DQoJCQl9DQoNCgkJCS8vIEtlZXAgdHJhY2sgb2YgdGhlIGN1cnJlbnQgdmFsdWVzIHNv IHdlIGtub3cgaWYgdGhleSBjaGFuZ2UgbmV4dCB0aW1lDQoJCQlmb3JlYWNoICgkcmVzZXRP cHRzIGFzICRyZXNldE9wdCA9PiAkcmVzZXRWYWwpIHsNCgkJCQlpZiAoc3RycG9zKCRyZXNl dE9wdCwgJ3NtZF9ldmVyeScpID09PSBmYWxzZSkgew0KCQkJCQkkcmVzZXRPcHRzWyRyZXNl dE9wdF0gPSAkcm93WyRyZXNldE9wdF07DQoJCQkJfSBlbHNlIHsNCgkJCQkJJHJlc2V0T3B0 c1skcmVzZXRPcHRdID0gJHRodW1iQ3RyOw0KCQkJCX0NCgkJCX0NCgkJCSR0aHVtYklkeCsr Ow0KCQkJJHRodW1iQ3RyKys7DQoJCQkkaWR4Kys7DQoJCQkkY3RyKys7DQoJCX0NCgkJaWYg KCRjb2xsYXRlKSB7DQoJCQlmb3JlYWNoICgkY29sbGF0aW9ucyBhcyAkaXRlbSA9PiAkbGlz dCkgew0KCQkJCS8vIFF1b3RlIHRoZSBsaXN0cyBpZiByZXF1aXJlZA0KCQkJCSRsaXN0ID0g KGVtcHR5KCRkYmxRdW90ZSkgfHwgaW5fYXJyYXkoJGl0ZW0sICRkYmxRdW90ZSkpID8gZG9B cnJheSgkbGlzdCwgJ3NtZF9kb0RibFF1b3RlJykgOiAkbGlzdDsNCgkJCQkkbGlzdCA9IChl bXB0eSgkc2dsUXVvdGUpIHx8IGluX2FycmF5KCRpdGVtLCAkc2dsUXVvdGUpKSA/IGRvQXJy YXkoJGxpc3QsICdkb1F1b3RlJykgOiAkbGlzdDsNCgkJCQkkY29sbGF0aW9uc1skaXRlbV0g PSBpbXBsb2RlKCRjb2xsYXRlZGVsaW0sICRsaXN0KTsNCgkJCX0NCgkJCWlmICgkZGVidWcg PiAwKSB7DQoJCQkJZWNobyAiKysgQ09MTEFUSU9OUyArKyI7DQoJCQkJZG1wKCRjb2xsYXRp b25zKTsNCgkJCX0NCgkJCSR0aHVtYm91dFtdID0gcGFyc2Uoc3RydHIoJHRoaW5nLCAkY29s bGF0aW9ucykpOw0KCQl9DQoNCgkJLy8gVGFjayBvbiB0aGUgcGFnaW5nIGZyb20gZWFybGll ciBpZiBpdCdzIHRvIGdvIGFmdGVyd2FyZHMNCgkJaWYgKCgkbGltaXQgPiAwKSAmJiAkcGFn aW5nKSB7DQoJCQlpZiAoJGRlYnVnID4gMCkgew0KCQkJCWVjaG8gIisrIFBBR0lORyBSRVBM QUNFTUVOVFMgKysiOw0KCQkJCWRtcCgkcmVwYWdlbWVudHMpOw0KCQkJfQ0KCQl9DQoJfQ0K DQoJLy8gQWRkIHRoZSBwYWdpbmcgdG8gdGhlIG91dHB1dCBpZiBpdCdzIHRvIGdvIGFib3Zl IHRoZSB0aHVtYnMNCglpZiAoKCRsaW1pdCA+IDApICYmICRwYWdpbmcpIHsNCgkJaWYgKGlu X2FycmF5KCJhYm92ZSIsICRwYWdlb3V0KSkgew0KCQkJJG91dFtdID0gZG9XcmFwKCRuYXZv dXQsICRuYXZ3cmFwdGFnLCAnJywgJG5hdmNsYXNzKTsNCgkJfQ0KCX0NCg0KCSRvdXRbXSA9 IGRvV3JhcCgkdGh1bWJvdXQsICR3cmFwdGFnLCAkYnJlYWssICRjbGFzcywgJycsICcnLCAn JywgJGh0bWxfaWQpOw0KDQoJaWYgKCgkbGltaXQgPiAwKSAmJiAkcGFnaW5nKSB7DQoJCWlm IChpbl9hcnJheSgiYmVsb3ciLCAkcGFnZW91dCkpIHsNCgkJCSRvdXRbXSA9IGRvV3JhcCgk bmF2b3V0LCAkbmF2d3JhcHRhZywgJycsICRuYXZjbGFzcyk7DQoJCX0NCgl9DQoNCglpZiAo JGRlYnVnID4gMikgew0KCQllY2hvICIrKyBGSU5BTCBPVVRQVVQgKysiOw0KCQlkbXAoJG91 dCk7DQoJfQ0KDQoJcmV0dXJuIGpvaW4oIiAiLCAkb3V0KTsNCn0NCg0KLy8gV29yayBvdXQg d2hpY2ggcGFnZSB0aGlzIGdhbGxlcnkgaXMgb24gYW5kIHJldHVybiB0aGUgcmVsZXZhbnQg aW5mbw0KZnVuY3Rpb24gc21kX2dldFBhZ2UoJHJzLCAkZ2FsbElELCAkbGltaXQsICRvZmZz ZXQsICRwYWdpbmcpIHsNCgkkbnVtVGh1bXMgPSBjb3VudCgkcnMpIC0gJG9mZnNldDsNCglp ZiAoKCRsaW1pdCA+IDApICYmICRwYWdpbmcpIHsNCgkJJG51bVBhZ2VzID0gKCRudW1UaHVt cyA+IDApID8gY2VpbCgkbnVtVGh1bXMvJGxpbWl0KSA6IDE7DQoJCSR0aHVtUGFnZSA9ICgh Z3BzKCRnYWxsSUQpKSA/IDEgOiBncHMoJGdhbGxJRCk7DQoJCSRvZmZzZXQgPSAoKCR0aHVt UGFnZSAtIDEpICogJGxpbWl0KSArICRvZmZzZXQ7DQoJfSBlbHNlIHsNCgkJLy8gTm8gcGFn aW5nIHJlcXVpcmVkDQoJCSRudW1QYWdlcyA9IDE7DQoJCSR0aHVtUGFnZSA9IDE7DQoJfQ0K CXJldHVybiBhcnJheSgkbnVtVGh1bXMsICRudW1QYWdlcywgJHRodW1QYWdlLCAkb2Zmc2V0 KTsNCn0NCg0KLy8gUmVhZCB0aGUgZ2l2ZW4gZGVsaW1pdGVkIGRpcmVjdG9yaWVzIGFuZCBn ZXQgYWxsIGZpbGVzIHRoYXQgbWF0Y2guDQovLyBHbyBkb3duIGFzIG1hbnkgc3ViZGlyIGxl dmVscyBhcyBnaXZlbiBpbiB0aGUgJHN1YiBwYXJhbWV0ZXINCmZ1bmN0aW9uIHNtZF9kb0Rp cmVjdG9yeSgkbHN0LCAkbHZsPTAsICRzdWI9MCwgJG1hdGNoPSIiLCAkZGxtPSIsIiwgJHNw Yz0xLCAkY3RyPTApIHsNCglsaXN0KCRkaXJpbmMsICRkaXJleGMpID0gc21kX2RvTGlzdCgk bHN0LCBmYWxzZSwgJHN1YiwgZmFsc2UsICRkbG0sICRzcGMpOw0KCWxpc3QoJG1hdGNoaW5j LCAkbWF0Y2hleGMpID0gc21kX2RvTGlzdCgkbWF0Y2gsIGZhbHNlLCAnJywgZmFsc2UsICRk bG0sICRzcGMpOw0KCSRtYXRjaGluYyA9ICIuKiIgLigoJG1hdGNoaW5jKSA/ICIoIiAuaW1w bG9kZSgifCIsJG1hdGNoaW5jKS4iKSsuKiIgOiAiIik7DQoJJG1hdGNoZXhjID0gKCRtYXRj aGV4YykgPyAiLiooIiAuaW1wbG9kZSgifCIsJG1hdGNoZXhjKS4iKSsuKiIgOiAic21kX2ds cnlfIi5tdF9yYW5kKCk7DQoNCgkkc3ViID0gKGVtcHR5KCRzdWIpKSA/IDAgOiAkc3ViOw0K CSRzdWIgPSAoc3RydG9sb3dlcigkc3ViKT09ImFsbCIpID8gOTk5OTkgOiAkc3ViOw0KCSRm aWxlTGlzdCA9IGFycmF5KCk7DQoJZm9yZWFjaCAoJGRpcmluYyBhcyAkZGlyKSB7DQoJCWlm ICgkaGFuZGxlID0gQG9wZW5kaXIoJGRpcikpIHsNCgkJCXdoaWxlICgoJGZpbGUgPSBAcmVh ZGRpcigkaGFuZGxlKSkgIT09IGZhbHNlKSB7DQoJCQkJJGZ1bGxwYXRoID0gJGRpci5EUy4k ZmlsZTsNCgkJCQlpZiAocHJlZ19tYXRjaCgiLyIuJG1hdGNoaW5jLiIvIiwgJGZ1bGxwYXRo KSAmJiAhcHJlZ19tYXRjaCgiLyIuJG1hdGNoZXhjLiIvIiwgJGZ1bGxwYXRoKSkgew0KCQkJ CQlpZiAoaXNfZGlyKCRmdWxscGF0aCkpIHsNCgkJCQkJCWlmICgoJGZpbGUgPT0gIi4iKSB8 fCAoJGZpbGU9PSAiLi4iKSB8fCAoaW5fYXJyYXkoJGZpbGUsICRkaXJleGMpKSB8fCAoJGx2 bCA+PSAkc3ViKSkgew0KCQkJCQkJCWNvbnRpbnVlOw0KCQkJCQkJfSBlbHNlIHsNCgkJCQkJ CQkvLyBSZWN1cnNlIHRoZSBzdWJkaXIuIE5vdGUgdGhhdCB0aGUgJyEnIGlzIHRlbXBvcmFy aWx5IGFkZGVkIGJhY2sgdG8gZWFjaCBkaXJleGMgaXRlbQ0KCQkJCQkJCSR0bXAgPSAkZGly ZXhjOyAvLyBEb24ndCBvdmVyd3JpdGUgdGhlIG9yaWdpbmFsIGFycmF5DQoJCQkJCQkJYXJy YXlfdW5zaGlmdCgkdG1wLCAkZnVsbHBhdGgpOw0KCQkJCQkJCSRzdWJGaWxlcyA9IHNtZF9k b0RpcmVjdG9yeShpbXBsb2RlKCRkbG0uIiEiLCAkdG1wKSwgJGx2bCsxLCAkc3ViLCAkbWF0 Y2gsICRkbG0sICRzcGMsICRjdHIpOw0KCQkJCQkJCSRmaWxlTGlzdCA9IGFycmF5X21lcmdl KCRmaWxlTGlzdCwgJHN1YkZpbGVzKTsNCgkJCQkJCQkkY3RyICs9IGNvdW50KCRzdWJGaWxl cyk7DQoJCQkJCQkJY29udGludWU7DQoJCQkJCQl9DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQkk ZmlsZXN0YXQgPSBzdGF0KCRmdWxscGF0aCk7DQoJCQkJCQkkaW1nc2l6ZSA9IGdldGltYWdl c2l6ZSgkZnVsbHBhdGgpOw0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWydwYXRoJ10gPSAkZGly Ow0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWyduYW1lJ10gPSBiYXNlbmFtZSgkZnVsbHBhdGgp Ow0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWydpZCddID0gcHJlZ19yZXBsYWNlKCcvXC4uKyQv JywgJycsICRmaWxlKTsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnYWx0J10gPSAnJzsNCgkJ CQkJCSRmaWxlTGlzdFskY3RyXVsnY2FwdGlvbiddID0gJyc7DQoJCQkJCQkkcGFydHMgPSBl eHBsb2RlKERTLCAkZGlyKTsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnY2F0ZWdvcnknXSA9 IChjb3VudCgkcGFydHMpID4gMSkgPyBlbmQoJHBhcnRzKSA6ICcnOw0KCQkJCQkJJGZpbGVM aXN0WyRjdHJdWydhdXRob3InXSA9IHN0cnZhbCgkZmlsZXN0YXRbJ3VpZCddKTsNCgkJCQkJ CSRmaWxlTGlzdFskY3RyXVsnZGF0ZSddID0gc3RyZnRpbWUoIiVZLSVtLSVkICVIOiVNOiVT IiwgJGZpbGVzdGF0WydjdGltZSddKTsNCgkJCQkJCSRwYXJ0cyA9IGV4cGxvZGUoIi4iLCAk ZmlsZSk7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ2V4dCddID0gKGNvdW50KCRwYXJ0cykg PiAxKSA/ICIuIi5lbmQoJHBhcnRzKSA6ICcnOw0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWyd3 J10gPSAoaXNfYXJyYXkoJGltZ3NpemUpKSA/IHN0cnZhbCgkaW1nc2l6ZVswXSkgOiAnJzsN CgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnaCddID0gKGlzX2FycmF5KCRpbWdzaXplKSkgPyBz dHJ2YWwoJGltZ3NpemVbMV0pIDogJyc7DQoJCQkJCX0NCgkJCQkJJGN0cisrOw0KCQkJCX0N CgkJCX0NCgkJfQ0KCQlpZiAoJGhhbmRsZSkgew0KCQkJQGNsb3NlZGlyKCRoYW5kbGUpOw0K CQl9DQoJfQ0KCXJldHVybiAkZmlsZUxpc3Q7DQp9IjtzOjQ6InR5cGUiO3M6MToiMCI7czo1 OiJvcmRlciI7czoxOiI1IjtzOjU6ImZsYWdzIjtzOjE6IjAiO3M6NDoiaGVscCI7czo1Njk2 NzoiPGRpdiBpZD0ic21kX2hlbHAiPgoKCTxoMSBpZD0idG9wIj5zbWRfZ2FsbGVyeTwvaDE+ CgoJPGgyIGlkPSJmZWF0dXJlcyI+RmVhdHVyZXM8L2gyPgoKCTx1bD4KCQk8bGk+U3VwcG9y dHMgYWxsIGN1cnJlbnQgYW5kIChwcm9iYWJseSkgZnV0dXJlIGdhbGxlcnkgc2NyaXB0cyBp bmNsdWRpbmcgdGh1bWJwb3AsIHJvbGxvdmVyLCB0b29sdGlwLCBsaWdodGJveCwgbGl0ZWJv eCwgc2xpbWJveCwgbW9vbmJveCwgdGhpY2tib3gsIHNsaWRlc2hvdywgZmFuY3l6b29tLCBl dGM8L2xpPgoJCTxsaT5QdWxsIGltYWdlcyBmcm9tIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+ VFhQPC9zcGFuPiBkYXRhYmFzZSB0aGF0IG1hdGNoIGNhdGVnb3JpZXMsIElEcywgYXV0aG9y LCBleHRlbnNpb24gb3IgcGFydGljdWxhciBkaW1lbnNpb25zIC8gYXNwZWN0IHJhdGlvczwv bGk+CgkJPGxpPlVzZSBhcnRpY2xlIGZpZWxkcyB0byBob2xkIGxpc3RzIG9mIGltYWdlIGNh dGVnb3JpZXMvSURzIGZvciBhcnRpY2xlLXNwZWNpZmljIGdhbGxlcmllczwvbGk+CgkJPGxp Pk11bHRpLWxldmVsIHN1Yi1jYXRlZ29yeSBzdXBwb3J0PC9saT4KCQk8bGk+R2FsbGVyeSBs YXlvdXQgaXMgZGVmaW5lZCBpbiBhIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZv cm0vY29udGFpbmVyPC9saT4KCQk8bGk+RGlyZWN0LWFjY2VzcyBwYWdpbmF0aW9uIGlzIHN1 cHBvcnRlZCBhbmQgdGhlIGxheW91dCBvZiBwYWdpbmcgZmVhdHVyZXMgY2FuIGJlIGNvbnRy b2xsZWQgYnkgYSBzZWNvbmQgZm9ybTwvbGk+CgkJPGxpPlVzZXMgYSB0YWctcmVwbGFjZW1l bnQgc3lzdGVtIGxpa2UgdGhlIHdldF9mb3JfZWFjaF9pbWFnZSBwbHVnaW48L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iY2FwcyI+TUxQPC9zcGFuPiBzdXBwb3J0PC9saT4KCTwvdWw+CgoJ PGgyIGlkPSJhdXRob3IiPkF1dGhvcjwvaDI+CgoJPHA+PGEgaHJlZj0iaHR0cDovL3N0ZWZk YXdzb24uY29tL2NvbnRhY3QiPlN0ZWYgRGF3c29uPC9hPi4gRm9yIG90aGVyIHNvZnR3YXJl IGJ5IG1lLCBvciB0byBtYWtlIGEgZG9uYXRpb24sIHNlZSB0aGUgPGEgaHJlZj0iaHR0cDov L3N0ZWZkYXdzb24uY29tL3N3Ij5zb2Z0d2FyZSBwYWdlPC9hPi48L3A+CgoJPGgyIGlkPSJp bnN0YWxsIj5JbnN0YWxsYXRpb24gLyBVbmluc3RhbGxhdGlvbjwvaDI+CgoJPHAgY2xhc3M9 InJlcXVpcmVkIj5SZXF1aXJlcyA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiA0LjIu MCsgYW5kIHNtZF9saWIgdjAuMzYrPC9wPgoKCTxwPkRvd25sb2FkIHRoZSBwbHVnaW4gZnJv bSBlaXRoZXIgPGEgaHJlZj0iaHR0cDovL3RleHRwYXR0ZXJuLm9yZy9wbHVnaW5zLzk1Ny9z bWRfZ2FsbGVyeSI+dGV4dHBhdHRlcm4ub3JnPC9hPiwgb3IgdGhlIHNvZnR3YXJlIHBhZ2Ug YWJvdmUsIHBhc3RlIHRoZSBjb2RlIGludG8gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8 L3NwYW4+IEFkbWluIC0mZ3Q7IFBsdWdpbnMgcGFuZSwgaW5zdGFsbCBhbmQgZW5hYmxlIHRo ZSBwbHVnaW4uIFZpc2l0IHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4u Y29tL3ZpZXd0b3BpYy5waHA/aWQ9MjY0ODIiPmZvcnVtIHRocmVhZDwvYT4gZm9yIG1vcmUg aW5mbyBvciB0byByZXBvcnQgb24gdGhlIHN1Y2Nlc3Mgb3Igb3RoZXJ3aXNlIG9mIHRoZSBw bHVnaW4uPC9wPgoKCTxwPlRvIHJlbW92ZSB0aGUgcGx1Z2luLCBzaW1wbHkgZGVsZXRlIGl0 IGZyb20gdGhlIEFkbWluLSZndDtQbHVnaW5zIHRhYi4gSWYgbm8gb3RoZXIgcGx1Z2lucyBh cmUgdXNpbmcgc21kX2xpYiB5b3UgbWF5IHNhZmVseSBkZWxldGUgdGhhdCB0b28uPC9wPgoK CTxoMiBpZD0idXNhZ2UiPk92ZXJ2aWV3PC9oMj4KCgk8cD5UaGUgZ2VuZXJhbCBpZGVhIGlz IHRoYXQgdGhpcyBwbHVnaW4gYWN0cyBhcyBhIGZsZXhpYmxlIGltYWdlIGZpbHRlcjsgbm90 aGluZyBtb3JlLiBUaGUgcGx1Z2luIG9wdGlvbnMgZ292ZXJuIHdoaWNoIGltYWdlcyBhcmUg cHVsbGVkIG91dCBvZiB0aGUgZGF0YWJhc2UgYW5kIHRoZXkgYXJlIHNvcnRlZCBpbnRvIHdo YXRldmVyIG9yZGVyIHlvdSBsaWtlLjwvcD4KCgk8cD5BZnRlciB0aGF0LCBlYWNoIGltYWdl ICYjODIxMjsgb25lIGJ5IG9uZSAmIzgyMTI7IGhhcyBhbGwgaXRzIGF0dHJpYnV0ZXMgcGFz c2VkIHRocm91Z2ggdGhlIGNvbnRhaW5lciBvciA8Y29kZT5mb3JtPC9jb2RlPiBvZiB5b3Vy IGNob2ljZTsgeW91IHNpbXBseSBjaG9vc2UgdG8gZGlzcGxheSB3aGljaGV2ZXIgaW1hZ2Ug YXR0cmlidXRlcyB5b3UgbGlrZSBpbiB0aGlzIGZvcm0uIFRoaXMgbWVhbnMgYW55IGltYWdl IGF0dHJpYnV0ZXMgY2FuIGJlICYjODIyMDtpbmplY3RlZCYjODIyMTsgZGlyZWN0bHkgaW50 byBhbnkgbWFya3VwOyBpdCBjb3VsZCBiZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFu PiB0YWdzLCBpdCBjb3VsZCBiZSBjb250ZW50LCBpdCBjb3VsZCBiZSBqYXZhc2NyaXB0LCBv ciA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPjsgYW55dGhpbmcuPC9wPgoKCTxwPlBh Z2luYXRpb24gd29ya3MgdGhlIHNhbWUgd2F5LCBhbGxvd2luZyB5b3UgdG8gc3BlY2lmeSBo b3cgdXNlcnMgY2FuIHN0ZXAgdGhyb3VnaCB5b3VyIGltYWdlIGdhbGxlcmllcy48L3A+CgoJ PHA+VGhlcmUgaXMgYWxzbyBhIHNwZWNpYWwgJiM4MjIwO2NvbGxhdGUmIzgyMjE7IG1vZGUg dGhhdCBhbGxvd3MgeW91IHRvIGNvbGxlY3QgYWxsIGltYWdlIGF0dHJpYnV0ZXMgdG9nZXRo ZXIgaW50byBhIHNlcmllcyBvZiBiaWcgbG9uZyBsaXN0cyA8ZW0+d2l0aG91dDwvZW0+IGNh bGxpbmcgdGhlIGZvcm0gZXZlcnkgdGltZS4gVGhlIGZvcm0vY29udGFpbmVyIGlzIHRoZW4g b25seSBwcm9jZXNzZWQgb25jZSBhdCB0aGUgZW5kLjwvcD4KCgk8cD5CZXR3ZWVuIHRoZXNl IHR3byBtb2RlcyB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gcmVhbGlzZSBhbnkgZ2FsbGVyeWlu ZyBzb2x1dGlvbjsgbm93IGFuZCBpbiBmdXR1cmUuPC9wPgoKCTxoMiBjbGFzcz0idGFnICIg aWQ9InNtZF9nYWxsZXJ5Ij5zbWRfZ2FsbGVyeTwvaDI+CgoJPHAgY2xhc3M9InRhZy1zdW1t YXJ5Ij5QbGFjZSBvbmUgb3IgbW9yZSBzbWRfZ2FsbGVyeSB0YWdzIGluIGFuIGFydGljbGUs IHBhZ2Ugb3IgZm9ybSwgYW5kIHN1cHBseSBhbnkgb2YgdGhlIGZvbGxvd2luZyBvcHRpb25z IHRvIGNvbmZpZ3VyZSBpdC4gVGhlIGF0dHJpYnV0ZXMgYXJlIGdyb3VwZWQgYnkgZnVuY3Rp b24gdG8gbWFrZSBpdCBlYXNpZXIgb24geW91ciBleWVzIC8gc2FuaXR5LjwvcD4KCgk8aDMg aWQ9ImF0dHJpYnV0ZXMiPkF0dHJpYnV0ZXM8L2gzPgoKCTxoND5GaWx0ZXJzPC9oND4KCgk8 dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5pZDwvc3Bhbj4gOiBsaXN0IG9mIGltYWdl IElEcyB0byBkaXNwbGF5LiBNYXkgYmUgaW50ZWdlcnMgb3IgcmFuZ2VzLCBmb3IgZXhhbXBs ZSA8Y29kZT5pZD0mcXVvdDs1LCA0MiwgOC0xMSZxdW90OzwvY29kZT4gd291bGQgZ3JhYiBp bWFnZXMgNSwgOCwgOSwgMTAsIDExIGFuZCA0Mi4gVXNlICYjODIxNjshJiM4MjE3OyBpbiBm cm9udCBvZiBhIG51bWJlciBvciByYW5nZSB0byBleGNsdWRlIHRob3NlIGltYWdlcy4gVXNl ICYjODIxNjs/JiM4MjE3OyBhbmQgdGhlIG5hbWUgb2YgYSA8c3BhbiBjbGFzcz0iY2FwcyI+ VFhQPC9zcGFuPiBmaWVsZCB0byByZWFkIHRoZSBsaXN0IG9mIGltYWdlIElEcyBmcm9tIHRo YXQgZmllbGQsIGUuZy4gPGNvZGU+aWQ9P2FydGljbGVfaW1hZ2UmcXVvdDs8L2NvZGU+PC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNhdGVnb3J5PC9zcGFuPiA6IGxpc3Qgb2Yg aW1hZ2UgY2F0ZWdvcmllcyB0byBkaXNwbGF5LiBZb3UgbWF5IHNwZWNpZnkgZml4ZWQtbmFt ZSBjYXRlZ29yaWVzIChlLmcuICYjODIyMDthbmltYWxzJiM4MjIxOykgb3IgYSYjODIxNzs/ JiM4MjE3OyBmb2xsb3dlZCBieSBhbiBhcnRpY2xlIGZpZWxkIG5hbWUuIGUuZy4gPGNvZGU+ Y2F0ZWdvcnk9JnF1b3Q7YW5pbWFscywgYXJ0LT90aGlzaWQmcXVvdDs8L2NvZGU+IHdvdWxk IGdyYWIgYWxsIGltYWdlcyBmcm9tIGNhdGVnb3J5ICYjODIyMDthbmltYWxzJiM4MjIxOyBh bmQgY2F0ZWdvcnkgJiM4MjIwO2FydC00MiYjODIyMTsgKGFzc3VtaW5nIHRoZSBjdXJyZW50 IGFydGljbGUgaGFzIGFuIGlkIG9mIDQyKS4gVXNlICYjODIxNjshJiM4MjE3OyB0byA8ZW0+ ZXhjbHVkZTwvZW0+IHRoZSBnaXZlbiBjYXRlZ29yeSBvciBmaWVsZC48ZGl2IGNsYXNzPSJi cmVhayI+RmllbGRzIG1heSB0aGVtc2VsdmVzIGNvbnRhaW4gbGlzdHMgb2YgY2F0ZWdvcmll cy4gVGhlICYjODIxNjs/JiM4MjE3OyBmaWVsZCBuYW1lcyBtYXkgYmUgY29tYmluZWQgKGUu Zy4gP3MtP2FydGljbGVfaW1hZ2UpIGJ1dCBiZSBhd2FyZSB0aGF0IGN1c3RvbSBmaWVsZCBu YW1lcyBtYXkgY29udGFpbiBzcGFjZXMgaWYgPGNvZGU+c3RyaWN0ZmllbGRzPSZxdW90OzAm cXVvdDs8L2NvZGU+PC9kaXY+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnN1Ymxl dmVsPC9zcGFuPiA6IGFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgaG93IG1hbnkgJiM4MjE2 O2xldmVscyYjODIxNzsgZG93biB0byB0cmF2ZXJzZSBlYWNoIG1hdGNoaW5nIGNhdGVnb3J5 LiA8Y29kZT5zdWJsZXZlbD0mcXVvdDswJnF1b3Q7PC9jb2RlPiAodGhlIGRlZmF1bHQpIGlz IG9ubHkgdGhlIHRvcC1sZXZlbDsgMSA9IHRvcC1sZXZlbCBwbHVzIHRoZSAxc3Qgc3ViLWNh dDsgMiA9IHRvcC1sZXZlbCBwbHVzIHRoZSBuZXh0IDIgc3ViLWNhdHMsIGFuZCBzbyBvbi4g PGNvZGU+c3VibGV2ZWw9JnF1b3Q7YWxsJnF1b3Q7PC9jb2RlPiBpcyBhbGwgc3ViLWNhdHM8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+YXV0aG9yPC9zcGFuPiA6IGZpbHRlciBp bWFnZXMgYnkgdGhpcyBsaXN0IG9mIGF1dGhvciBsb2dpbiBuYW1lczwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj5leHRlbnNpb248L3NwYW4+IDogZmlsdGVyIGltYWdlcyBieSB0 aGlzIGxpc3Qgb2YgZmlsZSBleHRlbnNpb25zICh3aXRob3V0IHRoZSBsZWFkaW5nIGRvdCk8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+YXNwZWN0PC9zcGFuPiA6IGZpbHRlciBp bWFnZXMgYnkgdGhpcyBsaXN0IG9mIGFzcGVjdCByYXRpb3MuIENob29zZSBmcm9tIGFueSBv ZiA8Y29kZT5wb3J0cmFpdDwvY29kZT4sIDxjb2RlPmxhbmRzY2FwZTwvY29kZT4gb3IgPGNv ZGU+c3F1YXJlPC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5kaW1lbnNp b25zPC9zcGFuPiA6IGZpbHRlciBpbWFnZXMgbWF0Y2hpbmcgdGhlIGdpdmVuIGRpbWVuc2lv bnMuIFNwZWNpZnkgdXAgdG8gdHdvIHZhbHVlcy4gVGhlIGZpcnN0IGlzIHRoZSB3aWR0aCBh bmQgdGhlIHNlY29uZCBpcyB0aGUgaGVpZ2h0LiBJZiB5b3Ugd2lzaCB0byBzcGVjaWZ5IG1p bmltdW0gb3IgbWF4aW11bSBkaW1lbnNpb25zLCBhZGQgPGNvZGU+Jmd0OzwvY29kZT4sIDxj b2RlPiZndDs9PC9jb2RlPiwgPGNvZGU+Jmx0OzwvY29kZT4gb3IgPGNvZGU+Jmx0Oz08L2Nv ZGU+IGJlZm9yZSB0aGUgdmFsdWUuIEZvciBleGFtcGxlLCA8Y29kZT5kaW1lbnNpb25zPSZx dW90OyZndDs9MTAyNCwgJmd0Oz03NjgmcXVvdDs8L2NvZGU+IHdvdWxkIG9ubHkgc2hvdyBp bWFnZXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDEwMjQgJiMyMTU7IDc2OCBwaXhlbHM8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+c29ydDwvc3Bhbj4gOiByZS1vcmRlciB0 aGUgaW1hZ2VzIGJ5IDxjb2RlPmNhdGVnb3J5PC9jb2RlPiAodGhlIGRlZmF1bHQpLCA8Y29k ZT5uYW1lPC9jb2RlPiwgPGNvZGU+ZGF0ZTwvY29kZT4sIDxjb2RlPmlkPC9jb2RlPiAodGhl IGRlZmF1bHQgaWYgdXNpbmcgYW4gaWQpLCBmaWxlIDxjb2RlPmV4dDwvY29kZT5lbnNpb24s IDxjb2RlPmFsdDwvY29kZT4sIDxjb2RlPmNhcHRpb248L2NvZGU+LCA8Y29kZT5hdXRob3I8 L2NvZGU+LCA8Y29kZT53aWR0aDwvY29kZT4sIDxjb2RlPmhlaWdodDwvY29kZT4sIDxjb2Rl PnRodW1iX3dpZHRoPC9jb2RlPiwgPGNvZGU+dGh1bWJfaGVpZ2h0PC9jb2RlPiwgPGNvZGU+ aGFzdGh1bWI8L2NvZGU+IGluIGVpdGhlciA8Y29kZT5hc2M8L2NvZGU+ZW5kaW5nIG9yIDxj b2RlPmRlc2M8L2NvZGU+ZW5kaW5nIG9yZGVyLiBUd28gc3BlY2lhbCBjYXNlcyBleGlzdDog PGNvZGU+Zml4ZWQ8L2NvZGU+IG1haW50YWlucyB0aGUgb3JkZXIgeW91IHNwZWNpZmllZCBp biB0aGUgaWQgYW5kL29yIGNhdGVnb3J5IGF0dHJpYnV0ZSwgd2hpbGUgPGNvZGU+cmFuZG9t PC9jb2RlPiBzaHVmZmxlcyB0aGUgb3JkZXIuPGRpdiBjbGFzcz0iYnJlYWsiPk5vdGUgdGhh dCBpZiA8Y29kZT5yYW5kb208L2NvZGU+IGFwcGVhcnMgYXMgdGhlIGZpcnN0IGl0ZW0gaW4g dGhlIGxpc3QsIHJhbmRvbSBpbWFnZXMgd2lsbCBiZSBwdWxsZWQgZnJvbSB0aGUgZGF0YWJh c2UgYW5kIHRoZXkgd2lsbCB0aGVuIGJlIHNvcnRlZCBhY2NvcmRpbmcgdG8gdGhlIG9yZGVy IGxpc3RlZCBhZnRlciBpdC4gSWYgPGNvZGU+cmFuZG9tPC9jb2RlPiBhcHBlYXJzIGFueXdo ZXJlIGVsc2UgaW4gdGhlIGxpc3QsIGFueSBzb3J0IGl0ZW1zIGJlZm9yZSBpdCB3aWxsIGRl dGVybWluZSB0aGUgb3JkZXIgb2YgZGF0YSBwdWxsZWQgZnJvbSB0aGUgZGF0YWJhc2UsIGFu ZCB0aGUgcmVzdWx0cyB3aWxsIHRoZW4gYmUgb3JkZXJlZCByYW5kb21seS4gSW4gdGhlIDJu ZCBjYXNlLCBhbnkgaXRlbXMgbGlzdGVkIGFmdGVyICYjODIxNjtyYW5kb20mIzgyMTc7IHdp bGwgYmUgaWdub3JlZCwgYnV0IDxjb2RlPmZpeGVkPC9jb2RlPiBpcyBzdGlsbCBob25vdXJl ZDwvZGl2PjwvbGk+Cgk8L3VsPgoKCTxoND5MaW1pdHMgLyBvZmZzZXRzIC8gc2l6ZXM8L2g0 PgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmxpbWl0PC9zcGFuPiA6IHRoZSBt YXhpbXVtIG51bWJlciBvZiBpbWFnZXMgdG8gc2hvdyA8ZW0+cGVyIHBhZ2U8L2VtPi4gMCAo dGhlIGRlZmF1bHQpIG9yIG9taXR0ZWQgPSB1bmxpbWl0ZWQ8L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+bWF4bGltaXQ8L3NwYW4+IDogdGhlIGFic29sdXRlIG1heGltdW0gbnVt YmVyIG9mIGltYWdlIHRvIHB1bGwgZnJvbSB0aGUgZGF0YWJhc2UuIE11c3QgYmUgZ3JlYXRl ciB0aGFuIDA8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+b2Zmc2V0PC9zcGFuPiA6 IHNraXAgdGhpcyBtYW55IGltYWdlcyBhbmQgc3RhcnQgZGlzcGxheWluZyB0aGVtIHRoZXJl YWZ0ZXI8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+dGh1bWJsaW1pdDwvc3Bhbj4g OiB0aGUgbWF4aW11bSBudW1iZXIgb2YgdGh1bWJuYWlscyB0byBzaG93LiAwIG9yIG9taXR0 ZWQgPSBhbGwgdGh1bWJzLiBOb3RlIHRoYXQgdGhpcyBkaWZmZXJzIGZyb20gbGltaXQ7IHlv dSBjYW4gbGF1bmNoIGEgMjAtaW1hZ2UgZ2FsbGVyeSBidXQgb25seSBzaG93IDEgdGh1bWJu YWlsIG9uIHRoZSBwYWdlLiBCZSBhd2FyZSB0aGF0IGlmIHlvdSBhcmUgc2hvd2luZyBtdWx0 aXBsZSBjYXRlZ29yaWVzIGZyb20gYSBzaW5nbGUgdGFnLCB5b3Ugd2lsbCBzZWUgPGNvZGU+ dGh1bWJsaW1pdDwvY29kZT4gdGh1bWJuYWlscyA8ZW0+YXQgZWFjaCBjaGFuZ2UgaW4gY2F0 ZWdvcnk8L2VtPi4gSWYgeW91IGRvbiYjODIxNzt0IHdhbnQgdGhpcywgc2V0IDxjb2RlPm9u Y2hhbmdlPC9jb2RlPiB0byBzb21ldGhpbmcgZWxzZS4gU2VlIHRoZSA8Y29kZT57b2JqZWN0 fTwvY29kZT4gPGEgaHJlZj0iI3JlcF9nYWxsZXJ5Ij5yZXBsYWNlbWVudCB0YWc8L2E+PC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnRodW1ib2Zmc2V0PC9zcGFuPiA6IHNraXAg dGhpcyBtYW55IHRodW1icyBiZWZvcmUgZGlzcGxheWluZyA8Y29kZT50aHVtYmxpbWl0PC9j b2RlPiB0aHVtYm5haWxzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnRodW1ic2l6 ZTwvc3Bhbj4gOiB0YWtlcyBvbmUgb3IgdHdvIGNvbW1hLXNlcGFyYXRlZCBudW1iZXJzIHRv IHNwZWNpZnkgd2lkdGggYW5kL29yIGhlaWdodCBvZiBhbGwgeW91ciBnYWxsZXJ5IHRodW1i bmFpbHMuIFRoZSBkZWZhdWx0IGlzIGluIHBpeGVscyBpZiB5b3UgZG9uJiM4MjE3O3Qgc3Bl Y2lmeSB1bml0cy4gTWlzc2luZyBvdXQgb25lIG9yIHRoZSBvdGhlciBwYXJhbWV0ZXIgKGku ZS4gaGF2aW5nIGFuICYjODIyMDtlbXB0eSYjODIyMTsgcGFyYW1ldGVyIGJlZm9yZSBvciBh ZnRlciB0aGUgY29tbWEpIHdpbGwgb25seSBzZXQgb25lIG9mIHRoZSBkaW1lbnNpb25zLiBV c2UgYSBzaW5nbGUgdmFsdWUgdG8gbWFrZSBzcXVhcmUgdGh1bWJzLiBJZiB5b3Ugb21pdCBl aXRoZXIgb3IgYm90aCwgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgd2lsbCBiZSByZWFkIGZy b20gdGhlIGRhdGFiYXNlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmltZ3NpemU8 L3NwYW4+IDogaWRlbnRpY2FsIHRvIDxjb2RlPnRodW1ic2l6ZTwvY29kZT4gYnV0IGZvciB0 aGUgZnVsbCBzaXplIGltYWdlczwvbGk+Cgk8L3VsPgoKCTxoND5Gb3JtcyBhbmQgcGFnaW5n PC9oND4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5mb3JtPC9zcGFuPiA6IHRo ZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBmb3JtIHVzZWQgdG8gbGF5b3V0IHlv dXIgbWF0Y2hpbmcgaW1hZ2VzLiBXaXRob3V0IHRoaXMgYXR0cmlidXRlIHRoZSBwbHVnaW4g YWN0cyBhcyBhIGNvbnRhaW5lciB0YWcuIFdpdGhvdXQgYSBjb250YWluZXIsIHRoZSBwbHVn aW4gZGlzcGxheXMgZWFjaCBmdWxsLXNpemUgaW1hZ2UsIGh5cGVybGlua2VkPC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnBhZ2Vmb3JtPC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFz cz0iY2FwcyI+VFhQPC9zcGFuPiBmb3JtIHVzZWQgdG8gc3BlY2lmeSB0aGUgbGF5b3V0IG9m IHlvdXIgcGFnaW5nIG5hdmlnYXRpb248L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ cGFnaW5nPC9zcGFuPiA6IHN3aXRjaCBwYWdpbmcgb24gd2l0aG91dCBoYXZpbmcgdG8gc3Bl Y2lmeSBhIHBhZ2Vmb3JtLiBXaGVuIHRoaXMgaXMgdXNlZCwgYWxsIDxhIGhyZWY9IiNyZXBf cGFnaW5nIj5wYWdlIHJlcGxhY2VtZW50IHRhZ3M8L2E+IGJlY29tZSBhdmFpbGFibGUgaW4g dGhlIDxhIGhyZWY9IiNyZXBfZ2FsbGVyeSI+Z2FsbGVyeSByZXBsYWNlbWVudCB0YWdzPC9h PiBhcyB3ZWxsPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnBhZ2Vwb3M8L3NwYW4+ IDogdGhlIHBvc2l0aW9uIG9mIHRoZSBwYWdpbmcgYmxvY2suIE9wdGlvbnMgYXJlIDxjb2Rl PmJlbG93PC9jb2RlPiAodGhlIGRlZmF1bHQpLCA8Y29kZT5hYm92ZTwvY29kZT4sIG9yIGJv dGggb2YgdGhlbSBzZXBhcmF0ZWQgYnkgPGNvZGU+ZGVsaW08L2NvZGU+PC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPm9iamVjdGZvcm08L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNz PSJjYXBzIj5UWFA8L3NwYW4+IGZvcm0gdXNlZCB0byBzcGVjaWZ5IHRoZSBsYXlvdXQgb2Yg eW91ciA8Y29kZT57b2JqZWN0fTwvY29kZT4gcmVwbGFjZW1lbnQgdGFnLiBZb3UgY2FuIHVz ZSBhbGwgdGhlIHN0YW5kYXJkIDxhIGhyZWY9IiNyZXBfZ2FsbGVyeSI+Z2FsbGVyeSByZXBs YWNlbWVudCB0YWdzPC9hPiB3aXRoIHRoZSBleGNlcHRpb24gb2YgPGNvZGU+e29iamVjdH08 L2NvZGU+IGl0c2VsZiEgVXNlcyBhIGh5cGVybGlua2VkIGltYWdlIGlmIG5vIGZvcm0gaXMg c3BlY2lmaWVkPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNvdW50Zm9ybTwvc3Bh bj4gOiBsaXN0IG9mIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZvcm1zIHRvIHVz ZSB3aGVuIGNlcnRhaW4gbnVtYmVyZWQgaW1hZ2VzIGFyZSByZWFjaGVkLiBTZWUgPGEgaHJl Zj0iI2NvdW50Zm9ybSI+Y291bnQgZm9ybXM8L2E+IGFuZCA8YSBocmVmPSIjZWcxMCI+ZXhh bXBsZSAxMDwvYT4uIFRoaXMgaGFzIG5vIGVmZmVjdCBpbiBjb2xsYXRlIG1vZGU8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y291bnRwb3M8L3NwYW4+IDogZGVmYXVsdCBwb3Np dGlvbiBvZiB0aGUgPGNvZGU+Y291bnRmb3JtPC9jb2RlPnMuIEVpdGhlciA8Y29kZT5hYm92 ZTwvY29kZT4gKHRoZSBkZWZhdWx0KSwgPGNvZGU+YmVsb3c8L2NvZGU+LCBvciBib3RoIG9m IHRoZW0gc2VwYXJhdGVkIGJ5IDxjb2RlPmRlbGltPC9jb2RlPi4gQ2FuIGJlIG92ZXJyaWRk ZW4gb24gYSBwZXItZm9ybSBiYXNpczwvbGk+Cgk8L3VsPgoKCTxoND5Hcm91cGluZyBpbWFn ZXM8L2g0PgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm9uY2hhbmdlPC9zcGFu PiA6IGEgbGlzdCBvZiBhdHRyaWJ1dGVzIHRvICYjODIyMDt3YXRjaCYjODIyMTsuIEl0IHRl bGxzIHRoZSBwbHVnaW4gdGhhdCB5b3Ugd2FudCB0byBiZSBub3RpZmllZCB3aGVuIGl0ZW1z IGluIHRoaXMgbGlzdCBjaGFuZ2UgY29tcGFyZWQgdG8gdGhlIHByZXZpb3VzIGltYWdlLiBV bmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcyB0aGlzIHNob3VsZCBiZSB0aGUgc2FtZSBhcyB5 b3VyIDxjb2RlPnNvcnQ8L2NvZGU+IHBhcmFtZXRlciBvciB5b3UgbWF5IGdldCBzb21lIGZy ZWFreSByZXN1bHRzISBJdCBkZWZhdWx0cyB0byA8Y29kZT5jYXRlZ29yeTwvY29kZT4uPGRp diBjbGFzcz0iYnJlYWsiPlRoaXMgaXMgdmVyeSB1c2VmdWwgZm9yIHNwbGl0dGluZyBnYWxs ZXJpZXMgYXQgZXZlcnkgY2hhbmdlIGluIGNhdGVnb3J5IGFuZCBkaXNwbGF5aW5nIHRoZSBj YXRlZ29yeSB0aXRsZSBhYm92ZSBlYWNoIGdyb3VwLiBJdGVtcyB5b3Ugd2F0Y2ggYXJlIGFk ZGVkIHRvIHRoZSBsaXN0IG9mIHJlcGxhY2VtZW50IHRhZ3MgYW5kIGFyZSBhdmFpbGFibGUg YnkgcHV0dGluZyAmIzgyMjA7b25jaGFuZ2U6JiM4MjIxOyBpbiBmcm9udCBvZiB0aGVpciBu YW1lIChlLmcuIDxjb2RlPntvbmNoYW5nZTpjYXRlZ29yeX08L2NvZGU+ICYjODIxMjsgc2Vl IDxhIGhyZWY9IiNlZzYiPmV4YW1wbGUgNjwvYT4gZm9yIG1vcmUpLiBUaGUgY29sb24gZGVs aW1pdGVyIGNhbiBiZSBjaGFuZ2VkIHdpdGggPGNvZGU+cGFyYW1kZWxpbTwvY29kZT4uPC9k aXY+PGRpdiBjbGFzcz0iYnJlYWsiPllvdSBjYW4gYWxzbyBlbGVjdCB0byBkZWZlciBwcm9j ZXNzaW5nIG9mIG9uY2hhbmdlIGV2ZW50cyB0byBhIGZvcm0uIFRvIGRvIHNvLCBzcGVjaWZ5 IGEgZm9ybSBhZnRlciB5b3VyIHdhdGNoIGl0ZW0gbGlrZSB0aGlzIDxjb2RlPmNhdGVnb3J5 X3RpdGxlOm15X2Zvcm08L2NvZGU+LiBJbiBteV9mb3JtIHlvdSBjYW4gcHV0IGFueSBtYXJr dXAgYW5kIHJlcGxhY2VtZW50IHRhZ3MuIFNlZSA8YSBocmVmPSIjZWcxMSI+ZXhhbXBsZSAx MTwvYT4gZm9yIG1vcmUuPC9kaXY+PGRpdiBjbGFzcz0iYnJlYWsiPkFub3RoZXIgd2F5IG9m IHVzaW5nIHRoaXMgYXR0cmlidXRlIGlzIHdpdGggdGhlIHNwZWNpYWwgcHJlZml4IDxjb2Rl PnNtZF9ldmVyeTpuPC9jb2RlPiB3aGljaCB3aWxsIHRyaWdnZXIgYSBncm91cCBjaGFuZ2Ug ZXZlcnkgTnRoIGltYWdlLiBOb3RlIGl0IGNhbiYjODIxNzt0IGJlIHVzZWQgdG8gd2F0Y2gg c3BlY2lmaWMgdGhpbmdzIGluIHRoaXMgbW9kZTsgaXQgaXMgb25seSB1c2VkIHRvIHRyaWdn ZXIgPGNvZGU+Z3JvdXB0YWc8L2NvZGU+IGNoYW5nZXM8L2Rpdj48L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+b25jaGFuZ2V3cmFwdGFnPC9zcGFuPiA6IHRoZSAoWClIVE1MIHRh ZyB0byBzdXJyb3VuZCBhbnkgPGNvZGU+b25jaGFuZ2U8L2NvZGU+IGVsZW1lbnRzIHlvdSBh cmUgd2F0Y2hpbmcsIGUuZy4gPGNvZGU+b25jaGFuZ2V3cmFwdGFnPSZxdW90O2gzJnF1b3Q7 PC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5vbmNoYW5nZWNsYXNzPC9z cGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBjbGFzcyBuYW1lIHRy byBhcHBseSB0byB0aGUgd3JhcHRhZyBvZiBhbnkgb25jaGFuZ2UgZWxlbWVudHMgeW91IGFy ZSB3YXRjaGluZzwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5ncm91cHRhZzwvc3Bh bj4gOiB0aGUgKFgpSFRNTCB0YWcgdG8gbWFrZSBhdmFpbGFibGUgYXMgYSByZXBsYWNlbWVu dCBzbyB5b3UgY2FuIHdyYXAgZ3JvdXBzIG9mIGVsZW1lbnRzIGF0IGVhY2ggPGNvZGU+b25j aGFuZ2U8L2NvZGU+LiBEZWZhdWx0OiB1bnNldC4gU2VlIDxhIGhyZWY9IiNlZzYiPmV4YW1w bGVzIDY8L2E+IGZvciBtb3JlIG9uIHRoZSA8Y29kZT5ncm91cHRhZ3N0YXJ0PC9jb2RlPiAv IDxjb2RlPmdyb3VwdGFnZW5kPC9jb2RlPiByZXBsYWNlbWVudCB0YWdzPC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPmdyb3VwY2xhc3M8L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNz PSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5hbWUgYXBwbGllZCB0byBhbnkgPGNvZGU+Z3Jv dXB0YWc8L2NvZGU+PC9saT4KCTwvdWw+CgoJPGg0PlRhZy9jbGFzcy9mb3JtYXR0aW5nIGF0 dHJpYnV0ZXM8L2g0PgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPndyYXB0YWc8 L3NwYW4+IDogdGhlIChYKUhUTUwgdGFnIHRvIHN1cnJvdW5kIHRoZSBlbnRpcmUgZ2FsbGVy eSwgZS5nLiA8Y29kZT53cmFwdGFnPSZxdW90O2RpdiZxdW90OzwvY29kZT48L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+YnJlYWs8L3NwYW4+IDogdGhlIChYKUhUTUwgdGFnIHRv IHN1cnJvdW5kIGVhY2ggdGh1bWJuYWlsPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i PmNsYXNzPC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBjbGFz cyBuYW1lIGFwcGxpZWQgdG8gdGhlIHdyYXB0YWc8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+aHRtbF9pZDwvc3Bhbj4gOiB0aGUgbmFtZSBvZiBhbiA8c3BhbiBjbGFzcz0iY2Fw cyI+SFRNTDwvc3Bhbj4gPGNvZGU+aWQ8L2NvZGU+IGF0dHJpYnV0ZSB0byBhcHBseSB0byB0 aGUgd3JhcHRhZzwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5uYXZ3cmFwdGFnPC9z cGFuPiA6IHRoZSAoWClIVE1MIHRhZyB0byBzdXJyb3VuZCB0aGUgZW50aXJlIDxjb2RlPnBh Z2Vmb3JtPC9jb2RlPiwgZS5nLiA8Y29kZT53cmFwdGFnPSZxdW90O2RpdiZxdW90OzwvY29k ZT4uIERlZmF1bHQ6IDxjb2RlPnVsPC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj5uYXZicmVhazwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgdG8gc3Vycm91bmQgZWFj aCBpdGVtIHdpdGhpbiB0aGUgPGNvZGU+cGFnZWZvcm08L2NvZGU+LiBEZWZhdWx0OiA8Y29k ZT5saTwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bmF2Y2xhc3M8L3Nw YW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5hbWUgb2Yg dGhlIG5hdmlnYXRpb24gd3JhcHRhZy4gRGVmYXVsdDogPGNvZGU+c21kX2dhbGxlcnlfbmF2 PC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5lbXB0eWNsYXNzPC9zcGFu PiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBjbGFzcyBuYW1lIG9mIHRo ZSBuYXZpZ2F0aW9uIGl0ZW1zIHRoYXQgYXJlIDxlbT5ub3Q8L2VtPiBsaW5rcy4gRGVmYXVs dDogPGNvZGU+ZW1wdHk8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmZv cm1hdDwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJyZXF1aXJlZCI+b25seSBpZiB1c2luZyA8Y29k ZT57ZGF0ZX08L2NvZGU+PC9zcGFuPikgOiBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgZGF0 ZSBmb3JtYXQgdXNlZC4gQ2FuIHRha2UgYW55IDxhIGhyZWY9Imh0dHA6Ly91ay5waHAubmV0 L3N0cmZ0aW1lIj5zdHJmdGltZSgpPC9hPiB2YWx1ZXMuIERlZmF1bHRzIHRvIHRoZSBkYXRl IHN5c3RlbSBhcyBzZXQgaW4gdGhlIHNpdGUmIzgyMTc7cyBwcmVmczwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj5sYW5nPC9zcGFuPiAoPHNwYW4gY2xhc3M9InJlcXVpcmVkIj5v bmx5IGlmIHVzaW5nIDxjb2RlPntkYXRlfTwvY29kZT48L3NwYW4+KSA6IHNldHMgdGhlIGxh bmd1YWdlIGNvZGUgb2YgdGhlIGRhdGUgZm9ybWF0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPmdtdDwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJyZXF1aXJlZCI+b25seSBpZiB1c2lu ZyA8Y29kZT57ZGF0ZX08L2NvZGU+PC9zcGFuPikgOiByZXR1cm5zIGVpdGhlciBsb2NhbCB0 aW1lIGFjY29yZGluZyB0byB0aGUgc2V0IHRpbWUgem9uZSBwcmVmZXJlbmNlcyAoMCksIG9y IDxzcGFuIGNsYXNzPSJjYXBzIj5HTVQ8L3NwYW4+IHRpbWUgKDEpLiBEZWZhdWx0OiAwPC9s aT4KCTwvdWw+CgoJPGg0PlBsdWdpbiBjdXN0b21pc2F0aW9uPC9oND4KCgk8dWw+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj5kZWxpbTwvc3Bhbj4gOiBjaGFuZ2UgdGhlIGRlbGltaXRl ciBmb3Igc3BlY2lmeWluZyBhdHRyaWJ1dGUgbGlzdHMuIERlZmF1bHQgaXMgY29tbWEgKCwp PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnBhcmFtZGVsaW08L3NwYW4+IDogY2hh bmdlIHRoZSBkZWxpbWl0ZXIgZm9yIHNwZWNpZnlpbmcgaW50ZXItcGFyYW1ldGVyIGF0dHJp YnV0ZXMuIERlZmF1bHQgaXMgY29sb24gKDopPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPmNvbGxhdGU8L3NwYW4+IDogc3dpdGNoIHRoZSBwbHVnaW4gaW50byA8YSBocmVmPSIj Y29sbGF0ZV9tb2RlIj5jb2xsYXRlIG1vZGU8L2E+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPmNvbGxhdGVkZWxpbTwvc3Bhbj4gOiBjaGFuZ2UgdGhlIGRlbGltaXRlciBiZXR3 ZWVuIGVhY2ggY29sbGF0ZWQgaXRlbS4gRGVmYXVsdCBpcyBjb21tYSAoLCk8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+Y29tYm88L3NwYW4+IDogc3BlY2lmeSB5b3VyIG93biA8 YSBocmVmPSIjY29tYm9zIj5jdXN0b20gcmVwbGFjZW1lbnQgdGFnczwvYT48L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+ZXNjYXBlPC9zcGFuPiA6IGxpc3Qgb2YgcmVwbGFjZW1l bnQgdmFyaWFibGUgbmFtZXMgdG8gJiM4MjE2O2VzY2FwZSYjODIxNzssIGluIG90aGVyIHdv cmRzIGNvbnZlcnQgYW55IDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiB0YWdzIHRv IHRoZWlyIGNoYXJhY3RlciBlbnRpdHkgZXF1aXZhbGVudHMuIFNldCB0byA8Y29kZT5lc2Nh cGU9JnF1b3Q7JnF1b3Q7PC9jb2RlPiB0byB0dXJuIHRoaXMgZmVhdHVyZSBvZmYuIFlvdSBj YW4gZXNjYXBlIHlvdXIgb3duIGNvbWJvcy4gRGVmYXVsdDogPGNvZGU+YWx0LCB0aXRsZSwg Y2FwdGlvbjwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+c3RyaWN0Zmll bGRzPC9zcGFuPiA6IHdoZW4gdXNpbmcgJiM4MjE2Oz8mIzgyMTc7IG9yICYjODIxNjshJiM4 MjE3OyBmaWVsZHMsIHNwYWNlcyBhcmUgYWxsb3dlZCBpbiBmaWVsZCBuYW1lcy4gU2V0IDxj b2RlPnN0cmljdGZpZWxkcz0mcXVvdDsxJnF1b3Q7PC9jb2RlPiB0byBmb3JiaWQgc3BhY2Vz LiBEZWZhdWx0OiAwPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmdhbGxlcnlpZDwv c3Bhbj4gOiB1bmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcyB5b3Ugc2hvdWxkIG5ldmVyIG5l ZWQgdGhpcy4gRWFjaCBnYWxsZXJ5IGlzIGFzc2lnbmVkIGEgdW5pcXVlIElEIGJhc2VkIG9u IHRoZSBzdXBwbGllZCBhdHRyaWJ1dGVzIHNvIHlvdSBtYXkgdXNlIG1vcmUgdGhhbiBvbmUg Z2FsbGVyeSBvbiBhIHBhZ2UgYW5kIG5hdmlnYXRlIHRoZW0gaW5kZXBlbmRlbnRseS4gSW4g dGhlIHVubGlrZWx5IGV2ZW50IHRoYXQgdHdvIGlkZW50aWNhbCBJRHMgYXJlIGdlbmVyYXRl ZCB5b3UgY2FuIG92ZXJyaWRlIHRoZSBJRCBmb3IgYSBnYWxsZXJ5IGJ5IHVzaW5nIHRoaXMg YXR0cmlidXRlLjxkaXYgY2xhc3M9ImJyZWFrIj5JbnRlcm5hbGx5IHRoZSBwbHVnaW4gZ2Vu ZXJhdGVzIGEgMzItY2hhcmFjdGVyIGhhc2ggc3RyaW5nIGZvciBlYWNoIHRhZywgdGhlbiBw aWNrcyBhIDQtY2hhciBjb2RlIGZyb20gdGhpcyBzdHJpbmcgKGl0IHRha2VzIGV2ZXJ5IDZ0 aCBjaGFyYWN0ZXIgYnkgZGVmYXVsdCkuIFlvdSBjYW4gc3VwcGx5IGEgdW5pcXVlIGZpeGVk IHN0cmluZyAoZS5nLiA8Y29kZT5nYWxsZXJ5aWQ9JnF1b3Q7TXlHYWwmcXVvdDs8L2NvZGU+ KSBvciBnaXZlIGl0IGEgcXVlc3Rpb24gbWFyayBhbmQgMiBudW1iZXJzIHNlcGFyYXRlZCBi eSBhIGNvbG9uIChlLmcuIDxjb2RlPmdhbGxlcnlpZD0mcXVvdDs/NTo0JnF1b3Q7PC9jb2Rl PikuIFRoZSBmaXJzdCBudW1iZXIgaXMgdGhlIGxlbmd0aCBvZiB0aGUgZmluYWwgc3RyaW5n IHRvIGdlbmVyYXRlLCB0aGUgc2Vjb25kIG51bWJlciBpcyBob3cgbWFueSBjaGFyYWN0ZXJz IHRvIHNraXAgaW4gdGhlIDMyLWNoYXIgc3RyaW5nIGVhY2ggdGltZSBpdCBwaWNrcyBvbmUu PC9kaXY+PGRpdiBjbGFzcz0iYnJlYWsiPkluIHRoaXMgY2FzZSBpdCBnZW5lcmF0ZXMgYSA1 LWNoYXJhY3RlciBzdHJpbmcgZnJvbSB0aGUgY2hhcmFjdGVycyBpdCBmaW5kcyBhdCBwb3Np dGlvbnMgMSw1LDksMTMsIGFuZCAxNy4gSWYgeW91IG9taXQgdGhlIDJuZCBudW1iZXIgKGUu Zy4gPGNvZGU+Z2FsbGVyeWlkPSZxdW90Oz82JnF1b3Q7PC9jb2RlPikgaXQgd2lsbCBhc3N1 bWUgaXQmIzgyMTc7cyBhbiBpbmNyZW1lbnQgb2YgMTwvZGl2PjwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj50aHVtYjwvc3Bhbj4gOiB1bmRlciBub3JtYWwgb3BlcmF0aW9uLCB0 aHVtYm5haWxzIHVzZSB0aGUgJiM4MjE2O3QmIzgyMTc7IGltYWdlIGluIHlvdXIgPGNvZGU+ aW1hZ2VzPC9jb2RlPiBkaXJlY3RvcnkgYW5kIHRoZSBmdWxsIHNpemUgcGljdHVyZXMgZG9u JiM4MjE3O3QuIElmIHlvdSB3aXNoIHRvIHJlZGVmaW5lIHRoaXMgeW91IG1heSBzcGVjaWZ5 IHVwIHRvIHR3byB2YWx1ZXMgc2VwYXJhdGVkIGJ5IGEgY29sb24uIFRoZSBmaXJzdCBpbmRp Y2F0ZXMgdGhlIHN0YXRlIG9mIHRoZSBmdWxsIHNpemUgaW1hZ2UsIGFuZCB0aGUgc2Vjb25k IGlzIHRoZSBzdGF0ZSBvZiB0aGUgdGh1bWJuYWlsOgoJPHVsPgoJCTxsaT50aHVtYj0wOjEg JiM4MjEyOyBmdWxsc2l6ZSA9IHJlZ3VsYXIgaW1hZ2UgOiB0aHVtYm5haWwgPSB0aHVtYjwv bGk+CgkJPGxpPnRodW1iPTE6MCAmIzgyMTI7IGZ1bGxzaXplID0gdGh1bWIgOiB0aHVtYm5h aWwgPSByZWd1bGFyIGltYWdlPC9saT4KCQk8bGk+dGh1bWI9MDowIChvciB0aHVtYj0wKSAm IzgyMTI7IGZ1bGxzaXplID0gcmVndWxhciBpbWFnZSA6IHRodW1ibmFpbCA9IHJlZ3VsYXIg aW1hZ2U8L2xpPgoJCTxsaT50aHVtYj0xOjEgKG9yIHRodW1iPTEpICYjODIxMjsgZnVsbHNp emUgPSB0aHVtYiA6IHRodW1ibmFpbCA9IHRodW1iPC9saT4KCTwvdWw+PC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPnRleHQ8L3NwYW4+IDogZGlzcGxheSB0aGUgZ2l2ZW4gdGV4 dCBpbnN0ZWFkIG9mIHRodW1ibmFpbHMuIFRoZSB0ZXh0IGNhbiBjb250YWluIDxjb2RlPj88 L2NvZGU+IGFydGljbGUgZmllbGRzPC9saT4KCTwvdWw+CgoJPGg0PlNwZWNpYWwgYXR0cmli dXRlczwvaDQ+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y29sdW1uczwvc3Bh bj4gOiBnaXZlIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgYWRkaXRpb25hbCBjb2x1bW5z IHlvdSB3b3VsZCBsaWtlIHRvIHB1bGwgZnJvbSB0aGUgZGF0YWJhc2UuIEVhY2ggaXRlbSB5 b3Ugc3BlY2lmeSBpcyBzcGxpdCBpbnRvIHRocmVlIHBhcnRzOiA8Y29kZT50YWJsZS5jb2x1 bW46cmVwbGFjZW1lbnQgbmFtZTwvY29kZT4uIFRoZSBvbmx5IG1hbmRhdG9yeSBwYXJ0IGlz IHRoZSByZXBsYWNlbWVudCBuYW1lLCBzaW5jZSA8Y29kZT50YWJsZTwvY29kZT4gZGVmYXVs dHMgdG8gdHhwX2ltYWdlLCBhbmQgdGhlIDxjb2RlPmNvbHVtbjwvY29kZT4gZGVmYXVsdHMg dG8gdGhlIHNhbWUgbmFtZSBhcyB0aGUgcmVwbGFjZW1lbnQgeW91IHNwZWNpZnkuPGRpdiBj bGFzcz0iYnJlYWsiPkZvciBleGFtcGxlLCBpZiB5b3UgaGF2ZSBpbnN0YWxsZWQgdGhlIGNu b19pbWFnZV9vcmRlciBwbHVnaW4geW91IGNvdWxkIHVzZSA8Y29kZT5jb2x1bW5zPSZxdW90 O3Bvc2l0aW9uJnF1b3Q7PC9jb2RlPiwgc2luY2UgdGhlIHBsdWdpbiBhZGRzIHRoZSAmIzgy MTY7cG9zaXRpb24mIzgyMTc7IGNvbHVtbiB0byB0eHBfaW1hZ2UuIFlvdSBjb3VsZCB0aGVu IHNvcnQgYnkgPGNvZGU+cG9zaXRpb248L2NvZGU+IGFuZCBhbHNvIGRpc3BsYXkgdGhlIGlt YWdlJiM4MjE3O3MgPGNvZGU+e3Bvc2l0aW9ufTwvY29kZT4uIElmIHlvdSB3aXNoZWQgdG8g cmVuYW1lIHRoZSB2YXJpYWJsZSB0bywgc2F5LCA8Y29kZT5pbWdwb3M8L2NvZGU+IHlvdSB3 b3VsZCB1c2UgPGNvZGU+Y29sdW1ucz0mcXVvdDtwb3NpdGlvbjppbWdwb3MmcXVvdDs8L2Nv ZGU+LiBOb3RlIHRoYXQgaWYgeW91IHNwZWNpZnkgdGhlIHRhYmxlIG5hbWUgeW91IG11c3Qg YWxzbyBpbmNsdWRlIHRoZSB0YWJsZSBwcmVmaXggaWYgeW91IGhhdmUgdXNlZCBvbmUuPC9k aXY+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmRpcmVjdG9yeTwvc3Bhbj4gOiAo PHNwYW4gY2xhc3M9InJlcXVpcmVkIj5leHBlcmltZW50YWw8L3NwYW4+KSByZWFkIGltYWdl cyBmcm9tIGEgbGlzdCBvZiBkaXJlY3RvcmllcyAob3IgPHNwYW4gY2xhc3M9ImNhcHMiPlVS TDwvc3Bhbj5zKSBpbnN0ZWFkIG9mIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFu PiBkYXRhYmFzZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5tYXRjaDwvc3Bhbj4g OiBsaW1pdCB0aGUgaW1hZ2VzIGFuZCBkaXJlY3RvcmllcyBjaG9zZW4gaW4gPGNvZGU+ZGly ZWN0b3J5PC9jb2RlPiBtb2RlLiBHaXZlIGEgbGlzdCBvZiB3b3JkcyB0byBpbmNsdWRlIG9y ICFleGNsdWRlIGFuZCBhbnkgbWF0Y2hpbmcgZmlsZXMgb3IgZGlyZWN0b3JpZXMgd2lsbCBi ZSBjaG9zZW4gb3IgaWdub3JlZCwgcmVzcGVjdGl2ZWx5LiBUaGUgbWF0Y2ggdGVybXMgYXJl IGF1dG9tYXRpY2FsbHkgYXNzdW1lZCB0byBiZSAmIzgyMjA7d2lsZCYjODIyMTsgc28gYW55 IHBhcnQgb2YgdGhlIGZpbGUgbmFtZSAvIHBhdGggd2lsbCB0cmlnZ2VyIHRoZSBtYXRjaDwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5kZWJ1Zzwvc3Bhbj4gOiB0dXJuIG9uIGRp YWdub3N0aWNzLiBWYXJ5aW5nIGxldmVscyBvZiB2ZXJib3NpdHkgZnJvbSAwIChub25lKSB0 byA0IChhIGxvdCk8L2xpPgoJPC91bD4KCgk8aDIgaWQ9ImdhbGxlcnlfZm9ybSI+R2FsbGVy eSBmb3JtPC9oMj4KCgk8cD5UaGUgPGNvZGU+Zm9ybTwvY29kZT4gaXMgd2hlcmUgeW91IGRl c2lnbiB3aGF0IGV2ZXJ5IHRodW1ibmFpbCB3aWxsIGxvb2sgbGlrZSBvbiB0aGUgc2NyZWVu LiBZb3UgZG8gdGhpcyBieSBzcGVjaWZ5aW5nIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9z cGFuPiBtYXJrdXAgb3IgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gdGFncyBhcyBu b3JtYWwuIEluIGtleSBwbGFjZXMgd2hlcmUgeW91IHdhbnQsIGZvciBleGFtcGxlLCBhbiBp bWFnZSBJRCAvIGFsdCB0YWcgLyBpbWFnZSB3aWR0aCB0byBiZSBkaXNwbGF5ZWQsIHlvdSBz cGVjaWZ5IHNwZWNpYWwgcmVwbGFjZW1lbnQgdGFncywgZGV0YWlsZWQgYmVsb3cuIFRoZXNl IGFyZSByZXBsYWNlZCBmb3IgZWFjaCBpbWFnZSBpbiB0dXJuLCB0aHVzIGJ1aWxkaW5nIHVw IHRoZSBnYWxsZXJ5LjwvcD4KCgk8cD5JbiBjb2xsYXRlIG1vZGUsIHRoZSBpbWFnZSBkZXRh aWxzIGFyZSBpbnN0ZWFkIG1hZGUgaW50byBsaXN0cy4gVGhlIGZvcm0gaXMgb25seSBwcm9j ZXNzZWQgb25jZSBhbmQgdGhlIHJlcGxhY2VtZW50IHRhZ3Mgb3V0cHV0IHRoZSBlbnRpcmUg bGlzdC48L3A+CgoJPGgzIGNsYXNzPSJhdHRzICIgaWQ9InJlcF9nYWxsZXJ5Ij5SZXBsYWNl bWVudCB0YWdzOiBnYWxsZXJ5PC9oMz4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij57aWR9PC9zcGFuPiA6IGltYWdlIElEIChvciwgaW4gZGlyZWN0b3J5IG1vZGUsIHRoZSBm aWxlbmFtZSB3aXRob3V0IGl0cyBleHRlbnNpb24pPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPntuYW1lfTwvc3Bhbj4gOiBmdWxsIGltYWdlIGZpbGVuYW1lIGFzIGRlZmluZWQg aW4gdGhlIGRhdGFiYXNlLCB1c3VhbGx5IGluY2x1ZGluZyBleHRlbnNpb248L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+e2V4dH08L3NwYW4+IDogZmlsZSBleHRlbnNpb24sIGlu Y2x1ZGluZyBkb3Q8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2NhdGVnb3J5fTwv c3Bhbj4gOiBpbWFnZSBjYXRlZ29yeSBuYW1lPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPntjYXRlZ29yeV90aXRsZX08L3NwYW4+IDogaW1hZ2UgY2F0ZWdvcnkgdGl0bGU8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2F1dGhvcn08L3NwYW4+IDogd2hvIHVwbG9h ZGVkIHRoZSBpbWFnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57dXJsfTwvc3Bh bj4gOiA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBvZiB0aGUgZnVsbHNpemUgaW1h Z2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3RodW1idXJsfTwvc3Bhbj4gOiA8 c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBvZiB0aGUgdGh1bWJuYWlsPC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntpbWFnZXBhdGh9PC9zcGFuPiA6IGRpcmVjdG9yeSB0 aGUgaW1hZ2UgaXMgaW48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2ltYWdlZGVm fTwvc3Bhbj4gOiBqdXN0IHRoZSBmaWxlIG5hbWUgcGFydCBvZiB0aGUgaW1hZ2UgKGUuZy4g NS5qcGcpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt0aHVtYmRlZn08L3NwYW4+ IDoganVzdCB0aGUgZmlsZSBuYW1lIHBhcnQgb2YgdGhlIHRodW1ibmFpbCAoZS5nLiA1dC5q cGcpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnthbHR9PC9zcGFuPiA6IGFsdCB0 ZXh0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt0aXRsZX0gb3Ige2NhcHRpb259 PC9zcGFuPiA6IGNhcHRpb248L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2RhdGV9 PC9zcGFuPiA6IGltYWdlIHVwbG9hZCBkYXRlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPnt3aWR0aH08L3NwYW4+IDogaW1hZ2Ugd2lkdGg8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+e2hlaWdodH08L3NwYW4+IDogaW1hZ2UgaGVpZ2h0PC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0bm0iPnt3dW5pdHN9PC9zcGFuPiA6IGltYWdlIHdpZHRoIHVuaXRzIChl LmcuIHB4LCAlLCBlbSwgZXRjLik8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2h1 bml0c308L3NwYW4+IDogaW1hZ2UgaGVpZ2h0IHVuaXRzPC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPnt0aHVtYndpZHRofTwvc3Bhbj4gOiB0aHVtYm5haWwgd2lkdGg8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3RodW1iaGVpZ2h0fTwvc3Bhbj4gOiB0aHVtYm5h aWwgaGVpZ2h0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt0aHVtYnd1bml0c308 L3NwYW4+IDogdGh1bWJuYWlsIHdpZHRoIHVuaXRzIChlLmcuIHB4LCAlLCBlbSwgZXRjLik8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3RodW1iaHVuaXRzfTwvc3Bhbj4gOiB0 aHVtYm5haWwgaGVpZ2h0IHVuaXRzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnto YXN0aHVtYn08L3NwYW4+IDogaWYgdGhlIGltYWdlIGhhcyBhbiBhc3NvY2lhdGVkIHRodW1i bmFpbCBvciBub3Q8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2dhbGxlcnlpZH08 L3NwYW4+IDogZ2FsbGVyeSBpZCB0aGF0IHlvdSBvciB0aGUgcGx1Z2luIGFzc2lnbmVkPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntvYmplY3R9PC9zcGFuPiA6IGEgc3BlY2lh bCBpdGVtIGNvbnRhaW5pbmcgZWl0aGVyIHRoZSA8Y29kZT50ZXh0PC9jb2RlPiBPUiB0aGUg aW1hZ2UgdGFnIG9mIHRoZSBjb3JyZXNwb25kaW5nIHRodW1ibmFpbCwgYnV0IDxlbT5vbmx5 PC9lbT4gaWYgPGNvZGU+dGh1bWJsaW1pdDwvY29kZT4gYWxsb3dzIGl0LiBlLmcuIGlmIDxj b2RlPnRodW1ibGltaXQ9JnF1b3Q7MSZxdW90OzwvY29kZT4gdGhpcyB2YXJpYWJsZSBpcyBv bmx5IHNldCBmb3IgdGhlIGZpcnN0IHRodW1ibmFpbCBpbiB0aGUgbGlzdDsgZXZlcnkgb3Ro ZXIgdGltZSBpdCBpcyBlbXB0eTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57Y291 bnRlcn08L3NwYW4+IDogaW1hZ2UgY291bnRlciwgc3RhcnRpbmcgZnJvbSAxIGFuZCBpbmNy ZW1lbnRpbmcgZWFjaCB0aW1lPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntpbmRl eH08L3NwYW4+IDogaW5kZXggY291bnRlciAoemVyby1iYXNlZCAmIzgyMTI7IHByb2JhYmx5 IG5vdCBtdWNoIHVzZSk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3RodW1iY291 bnRlcn08L3NwYW4+IDogdGh1bWJuYWlsIGltYWdlIGNvdW50ZXIsIHN0YXJ0aW5nIGZyb20g MS4gTm90ZSBpdCBpcyAmIzgyMTY7cmVzZXQmIzgyMTc7IHdoZW5ldmVyIGFuIGVsZW1lbnQg Z2l2ZW4gaW4gPGNvZGU+b25jaGFuZ2U8L2NvZGU+IGRpZmZlcnMgZnJvbSB0aGUgcHJldmlv dXMgaXRlbTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57dGh1bWJpbmRleH08L3Nw YW4+IDogaW5kZXggY291bnRlciAoemVyby1iYXNlZCAmIzgyMTI7IHByb2JhYmx5IG5vdCBt dWNoIHVzZSkuIEl0IGlzIHJlc2V0IGxpa2UgPGNvZGU+e3RodW1iY291bnRlcn08L2NvZGU+ PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt0b3RhbGltYWdlc308L3NwYW4+IDog dG90YWwgbnVtYmVyIG9mIGltYWdlcyBtYXRjaGVkIG9uIHRoaXMgcGFnZTwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj57bWF4aW1hZ2VzfTwvc3Bhbj4gOiBhYnNvbHV0ZSBtYXhp bXVtIG51bWJlciBvZiBpbWFnZXMgYWNyb3NzIGFsbCBwYWdlczwvbGk+Cgk8L3VsPgoKCTxw PkluIGFkZGl0aW9uLCBpZiBlaXRoZXIgPGNvZGU+cGFnaW5nPSZxdW90OzEmcXVvdDs8L2Nv ZGU+IG9yIDxjb2RlPnBhZ2Vmb3JtPC9jb2RlPiBoYXZlIGJlZW4gc3BlY2lmaWVkLCBhbGwg dGhlIDxhIGhyZWY9IiNyZXBfcGFnaW5nIj5wYWdpbmcgcmVwbGFjZW1lbnQgdGFnczwvYT4g YXJlIGF2YWlsYWJsZSB0b28uIElmIHRob3NlIGFyZW4mIzgyMTc7dCBlbm91Z2gsIHlvdSBj YW4gPGEgaHJlZj0iI2NvbWJvcyI+Y3JlYXRlIHlvdXIgb3duPC9hPiBieSBncm91cGluZyBj b21iaW5hdGlvbnMgb2YgdGhlIGFib3ZlLCBvcHRpb25hbGx5IHdpdGggYXJ0aWNsZSB2YXJp YWJsZXMgc3VjaCBhcyA8Y29kZT4/ZXhjZXJwdDwvY29kZT4sIDxjb2RlPj9rZXl3b3Jkczwv Y29kZT4sIDxjb2RlPj9hcnRpY2xlX2ltYWdlPC9jb2RlPiwgZXRjLjwvcD4KCgk8cD5PdGhl ciB0YWdzIGFyZSBhZGRlZCBkZXBlbmRpbmcgaWYgeW91IGFyZSB3YXRjaGluZyBmb3IgPGNv ZGU+b25jaGFuZ2U8L2NvZGU+IGVsZW1lbnRzLCBvciBpZiB5b3UgaGF2ZSBzcGVjaWZpZWQg YSA8Y29kZT5ncm91cHRhZzwvY29kZT4uIElmIHlvdSBhZGRlZCA8Y29kZT5vbmNoYW5nZT0m cXVvdDthdXRob3IsIGNhdGVnb3J5JnF1b3Q7PC9jb2RlPiB0aGVuIGV2ZXJ5IHRpbWUgdGhl IGF1dGhvciBvciBjYXRlZ29yeSBjaGFuZ2VkIGNvbXBhcmVkIHRvIHRoZSBwcmV2aW91cyBp bWFnZSwgb25lIG9yIHR3byBuZXcgcmVwbGFjZW1lbnQgdGFncyB3b3VsZCBiZWNvbWUgYXZh aWxhYmxlOyBuYW1lbHkgPGNvZGU+e29uY2hhbmdlOmF1dGhvcn08L2NvZGU+IGFuZCA8Y29k ZT57b25jaGFuZ2U6Y2F0ZWdvcnkpPC9jb2RlPi4gVXNpbmcgb25jaGFuZ2Ugd2l0aCA8Y29k ZT5zbWRfZXZlcnk8L2NvZGU+IGRvZXMgPGVtPm5vdDwvZW0+IGFkZCBhIG5ldyByZXBsYWNl bWVudCB0YWcgYXMgaXQgaXMgbWVyZWx5IHVzZWQgdG8gY291bnQuPC9wPgoKCTxwPklmIHlv dSB1c2VkIDxjb2RlPmdyb3VwdGFnPSZxdW90O2RpdiZxdW90OzwvY29kZT4gYXMgd2VsbCwg eW91IHdvdWxkIGJlIGdpdmVuIHR3byBuZXcgcmVwbGFjZW1lbnQgdGFncyBsYWJlbGxlZCA8 Y29kZT5ncm91cHRhZ3N0YXJ0PC9jb2RlPiBhbmQgPGNvZGU+Z3JvdXB0YWdlbmQ8L2NvZGU+ LiBTZWUgPGEgaHJlZj0iI2VnNiI+ZXhhbXBsZSA2PC9hPiBmb3IgZGV0YWlscy48L3A+CgoJ PGgyIGlkPSJwYWdpbmdfZm9ybSI+UGFnaW5nIGZvcm08L2gyPgoKCTxwPkFkZCBnYWxsZXJ5 IG5hdmlnYXRpb24gdG8geW91ciBwYWdlLiBXb3JrcyBpbiBhIHNpbWlsYXIgbWFubmVyIHRv IHRoZSA8YSBocmVmPSIjZ2FsbGVyeV9mb3JtIj5nYWxsZXJ5IGZvcm08L2E+OiBhIHNlcmll cyBvZiByZXBsYWNlbWVudCB0YWdzIGdvdmVybiB3aGljaCBnYWxsZXJ5IG5hdmlnYXRpb24g aXRlbXMgYXJlIGF2YWlsYWJsZS4gWW91IGNvdWxkIGNob29zZSB0byBvbmx5IHNob3cgbmV4 dC9wcmV2LiBPciBwZXJoYXBzIDFzdCBwYWdlL2xhc3QgcGFnZS4gT3IgbnVtYmVyZWQgcGFn ZSBsaW5rcy48L3A+CgoJPGgzIGNsYXNzPSJhdHRzICIgaWQ9InJlcF9wYWdpbmciPlJlcGxh Y2VtZW50IHRhZ3M6IHBhZ2luZzwvaDM+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+e25hdmZpcnN0fTwvc3Bhbj4gOiBmaXJzdCBwYWdlIChkZWZhdWx0IGxhYmVsOiAmIzgy MjA7Rmlyc3QmIzgyMjE7IC8gPHNwYW4gY2xhc3M9ImNhcHMiPk1MUDwvc3Bhbj4pPC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZwcmV2fTwvc3Bhbj4gOiBwcmV2aW91cyBw YWdlIChkZWZhdWx0IGxhYmVsOiAmIzgyMjA7JmxhcXVvOyYjODIyMTsgLyA8c3BhbiBjbGFz cz0iY2FwcyI+TUxQPC9zcGFuPik8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25h dmVhcmxpZXJ9PC9zcGFuPiA6IGFueSBwYWdlIG51bWJlcnMgYmVmb3JlIHRoZSBjdXJyZW50 IHBhZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25hdnRoaXN1cmx9PC9zcGFu PiA6IGN1cnJlbnQgcGFnZSB3aXRoIGEgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4g bGluayB0byBpdHNlbGY8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25hdnRoaXN9 PC9zcGFuPiA6IGN1cnJlbnQgcGFnZSB3aXRob3V0IGEgPHNwYW4gY2xhc3M9ImNhcHMiPlVS TDwvc3Bhbj4gbGluazwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bmF2bGF0ZXJ9 PC9zcGFuPiA6IGFueSBwYWdlIG51bWJlcnMgYWZ0ZXIgdGhlIGN1cnJlbnQgcGFnZTwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bmF2bmV4dH08L3NwYW4+IDogbmV4dCBwYWdl IChkZWZhdWx0IGxhYmVsOiAmIzgyMjA7JnJhcXVvOyYjODIyMTsgLyA8c3BhbiBjbGFzcz0i Y2FwcyI+TUxQPC9zcGFuPik8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25hdmxh c3R9PC9zcGFuPiA6IGxhc3QgcGFnZSAoZGVmYXVsdCBsYWJlbDogJiM4MjIwO0xhc3QmIzgy MjE7IC8gPHNwYW4gY2xhc3M9ImNhcHMiPk1MUDwvc3Bhbj4pPC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPntuYXZmaXJzdHBhZ2V1cmx9PC9zcGFuPiA6IHJhdyA8c3BhbiBjbGFz cz0iY2FwcyI+VVJMPC9zcGFuPiB0byBmaXJzdCBwYWdlPC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPntuYXZwcmV2cGFnZXVybH08L3NwYW4+IDogcmF3IDxzcGFuIGNsYXNzPSJj YXBzIj5VUkw8L3NwYW4+IHRvIHByZXZpb3VzIHBhZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+e25hdnRoaXNwYWdldXJsfTwvc3Bhbj4gOiByYXcgPHNwYW4gY2xhc3M9ImNh cHMiPlVSTDwvc3Bhbj4gdG8gY3VycmVudCBwYWdlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPntuYXZuZXh0cGFnZXVybH08L3NwYW4+IDogcmF3IDxzcGFuIGNsYXNzPSJjYXBz Ij5VUkw8L3NwYW4+IHRvIG5leHQgcGFnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij57bmF2bGFzdHBhZ2V1cmx9PC9zcGFuPiA6IHJhdyA8c3BhbiBjbGFzcz0iY2FwcyI+VVJM PC9zcGFuPiB0byBsYXN0IHBhZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3Rv dGFsaW1hZ2VzfTwvc3Bhbj4gOiB0b3RhbCBudW1iZXIgb2YgaW1hZ2VzIG1hdGNoZWQgb24g dGhlIGN1cnJlbnQgcGFnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57dG90YWxw YWdlc308L3NwYW4+IDogdG90YWwgbnVtYmVyIG9mIHBhZ2VzIGluIHRoaXMgY29sbGVjdGlv bjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bWF4aW1hZ2VzfTwvc3Bhbj4gOiBh YnNvbHV0ZSBtYXhpbXVtIG51bWJlciBvZiBpbWFnZXMgYWNyb3NzIGFsbCBwYWdlczwvbGk+ Cgk8L3VsPgoKCTxwPlRoZSBjdXJyZW50IHBhZ2UgaGFzIGEgZml4ZWQgY2xhc3Mgb2YgJiM4 MjE2O2N1cnJlbnQmIzgyMTc7IGFuZCBlYWNoIGl0ZW0gaXMsIGJ5IGRlZmF1bHQsIGEgPGNv ZGU+Jmx0O2xpJmd0OzwvY29kZT4gZm9yIGVhc3kgc3R5bGluZy4gQ3VzdG9tIGxhYmVscyBh cmUgZGVmaW5lZCBkaXJlY3RseSBpbiB0aGUgZm9ybSBpdHNlbGY7IGZvciBleGFtcGxlIHRv IGxhYmVsIHRoZSBsaW5rIHRoYXQgdGFrZXMgdXNlcnMgdG8gdGhlIGZpcnN0IHBhZ2Ugb2Yg dGhlIGdhbGxlcnkgYXMgJiM4MjIwOzFzdCYjODIyMTssIHVzZTo8L3A+CgoJPHA+PGNvZGU+ e25hdmZpcnN0OjFzdH08L2NvZGU+PC9wPgoKCTxwPldpdGggdGhpcyBzeW50YXggeW91IGNh biBsYWJlbCBuYXZmaXJzdCwgbmF2bGFzdCwgbmF2cHJldiwgbmF2bmV4dCBhbmQgbmF2dGhp cyAodGhlICYjODIxNjs6JiM4MjE3OyBkZWxpbWl0ZXIgaW4gdGhpcyBjYXNlIGlzIHNwZWNp ZmllZCBieSA8Y29kZT5wYXJhbWRlbGltPC9jb2RlPikuIFlvdSBjYW4gdXNlIHRoaXMgbWVj aGFuaXNtIHRvIHJlYWQgPHNwYW4gY2xhc3M9ImNhcHMiPk1MUDwvc3Bhbj4gc25pcHBldHMs IGUuZzo8L3A+CgoJPHA+PGNvZGU+e25hdmZpcnN0OiMjZmlyc3RMYWJlbCMjfTwvY29kZT48 L3A+CgoJPHA+WW91IGFyZSBub3QgbGltaXRlZCB0byB0ZXh0IGxhYmVscy4gSW1hZ2VzIGNv dWxkIGJlIHVzZWQ6PC9wPgoKCTxwPjxjb2RlPntuYXZsYXN0OiAmbHQ7aW1nIHNyYz0mcXVv dDtpbWFnZXMvbGFzdC5wbmcmcXVvdDsgLyZndDt9PC9jb2RlPjwvcD4KCgk8cD5Zb3UgY2Fu IG92ZXJyaWRlIHRoZSBudW1iZXIgb2YgaXRlbXMgZGlzcGxheWVkIGJ5IG5hdmVhcmxpZXIg YW5kIG5hdmxhdGVyIGJ5IHNwZWNpZnlpbmcgYSBjb2xvbiBhbmQgYSBudW1iZXIuIFNvIHRv IG9ubHkgc2hvdyAyIGl0ZW1zIHRvIHRoZSBsZWZ0IG9mIHRoZSBjdXJyZW50IHBhZ2UgYW5k IDMgaXRlbXMgdG8gdGhlIHJpZ2h0LCB1c2UgPGNvZGU+e25hdmVhcmxpZXI6Mn0ge25hdmxh dGVyOjN9PC9jb2RlPiBpbiB5b3VyIGZvcm0uIElmIHlvdSB3ZXJlIG9uIHBhZ2UgOSBvZiAx NSwge25hdmVhcmxpZXI6NH0ge25hdmxhdGVyOjN9IHdvdWxkIHNob3cgPGNvZGU+Jmx0OyZs dDsgNSA2IDcgOCA5IDEwIDExIDEyICZndDsmZ3Q7PC9jb2RlPjwvcD4KCgk8cD5DdXJyZW50 bHkgPGNvZGU+e25hdmVhcmxpZXJ9PC9jb2RlPiBhbmQgPGNvZGU+e25hdmxhdGVyfTwvY29k ZT4gb25seSBkaXNwbGF5IGFyYWJpYyBudW1lcmFscy4gQW55IGlkZWFzIG9uIGhvdyB0byBv ZmZlciBvdGhlciBjaGFyYWN0ZXIgc2V0cyBncmVhdGx5IGFwcHJlY2lhdGVkLjwvcD4KCgk8 aDIgaWQ9ImNvdW50Zm9ybSI+Q291bnQgZm9ybXM8L2gyPgoKCTxwPlNvbWV0aW1lcyBpdCYj ODIxNztzIGhhbmR5IHRvIGJlIGFibGUgdG8gdGFrZSBhY3Rpb24gb25seSB3aGVuIGNlcnRh aW4gaW1hZ2VzIGFyZSByZWFjaGVkOyBmb3IgZXhhbXBsZTo8L3A+CgoJPHVsPgoJCTxsaT5v bmx5IGRpc3BsYXkgc29tZXRoaW5nIG9uIHRoZSBmaXJzdCBvciBsYXN0IGltYWdlPC9saT4K CQk8bGk+c3RhcnQgYSBuZXcgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+ICYjODIx Njtyb3cmIzgyMTc7IGV2ZXJ5IDNyZCBpbWFnZTwvbGk+CgkJPGxpPmJyZWFrIHlvdXIgZ2Fs bGVyeSB1cCB3aXRoIGFuIGFkdmVydDwvbGk+Cgk8L3VsPgoKCTxwPlRoaXMgY2FuIGJlIGRv bmUgd2l0aCBzbWRfaWYgYnV0IHNpbmNlIGl0IGlzIHN1Y2ggYSBjb21tb24gZmVhdHVyZSwg dGhlIHBsdWdpbiBoYXMgdGhlIGFiaWxpdHkgYnVpbHQgaW4uIEFsbCByZXBsYWNlbWVudCB0 YWdzIGFyZSBhdmFpbGFibGUgd2l0aGluIHlvdXIgY291bnRmb3JtcyBzbyB5b3UgY2FuIGRv IHNvbWUgcHJldHR5IG5lYXQgc3R1ZmYuIEl0IGlzIGJlc3QgZXhwbGFpbmVkIGJ5IGV4YW1w bGU6PC9wPgoKCTx1bD4KCQk8bGk+PGNvZGU+Y291bnRmb3JtPSZxdW90OzE6Z2FsX2hlYWQm cXVvdDs8L2NvZGU+IDogdGhpcyB3b3VsZCBvdXRwdXQgdGhlIGZvcm0gPGVtPmdhbF9oZWFk PC9lbT4gb25seSB3aGVuIHRoZSBmaXJzdCBpbWFnZSBpcyBkaXNwbGF5ZWQ8L2xpPgoJCTxs aT48Y29kZT5jb3VudGZvcm09JnF1b3Q7e3RvdGFsaW1hZ2VzfTpnYWxfZm9vdCZxdW90Ozwv Y29kZT4gOiB0aGlzIHdvdWxkIG91dHB1dCB0aGUgZm9ybSA8ZW0+Z2FsX2Zvb3Q8L2VtPiBv bmx5IHdoZW4gdGhlIGxhc3QgaW1hZ2UgaXMgZGlzcGxheWVkPC9saT4KCQk8bGk+PGNvZGU+ Y291bnRmb3JtPSZxdW90OzE6Z2FsX2hlYWQsIHt0b3RhbGltYWdlc306Z2FsX2Zvb3QmcXVv dDs8L2NvZGU+IDogZG8gYm90aCBvZiB0aGUgYWJvdmU8L2xpPgoJCTxsaT48Y29kZT5jb3Vu dGZvcm09JnF1b3Q7MTpnYWxfaGVhZCwge3RvdGFsaW1hZ2VzfTpnYWxfZm9vdDpzbWRfYmVs b3cmcXVvdDs8L2NvZGU+IDogdGhlIHNhbWUgYXMgdGhlIHByZXZpb3VzIGV4YW1wbGUsIGJ1 dCBwdXQgdGhlIGNvbnRlbnRzIGJlbG93IHRoZSBsYXN0IGltYWdlIChieSBkZWZhdWx0LCBh bGwgb3V0cHV0IGFwcGVhcnMgYWJvdmUgdGhlIGdpdmVuIGltYWdlKTwvbGk+CgkJPGxpPjxj b2RlPmNvdW50Zm9ybT0mcXVvdDs0Ojk6c21kX2JlbG93OmdhbF9hZCZxdW90OzwvY29kZT4g OiBvdXRwdXQgPGVtPmdhbF9hZDwvZW0+IGFmdGVyIHRoZSA0dGggYW5kIDl0aCBpbWFnZXMg b25seTwvbGk+CgkJPGxpPjxjb2RlPmNvdW50Zm9ybT0mcXVvdDtzbWRfZXZlcnk6MzpnYWxf cm93JnF1b3Q7PC9jb2RlPiA6IG91dHB1dCA8ZW0+Z2FsX3JvdzwvZW0+IGJlZm9yZSBldmVy eSAzcmQgaW1hZ2U8L2xpPgoJCTxsaT48Y29kZT5jb3VudGZvcm09JnF1b3Q7c21kX2V2ZXJ5 OjI6ITg6Z2FsX3JvdyZxdW90OzwvY29kZT4gOiBvdXRwdXQgPGVtPmdhbF9yb3c8L2VtPiBi ZWZvcmUgZXZlcnkgZXZlbiBpbWFnZSBidXQgbm90IG9uIHRoZSA4dGggaW1hZ2U8L2xpPgoJ CTxsaT48Y29kZT5jb3VudGZvcm09JnF1b3Q7OmdhbF9yb3cmcXVvdDs8L2NvZGU+IDogdXNl IGFuIGVtcHR5IGZpcnN0IHZhbHVlIHRvIG91dHB1dCA8ZW0+Z2FsX3JvdzwvZW0+IGJlZm9y ZSBldmVyeSBpbWFnZS4gVGhpcyBtYXkgc2VlbSB1c2VsZXNzLCBidXQgaXQgbWVhbnMgeW91 IGNhbiB1c2UgdHdvLCB0aHJlZSwgZm91ciYjODIzMDsgZm9ybXMgKG9yIGFueSBudW1iZXIg b2YgZm9ybXMgYW5kIHRoZSBjb250YWluZXIpIHNpbXVsdGFuZW91c2x5IHRvIGl0ZXJhdGUg b3ZlciB0aGUgc2FtZSBnYWxsZXJ5LiBPciB1c2UgdGhlIHNhbWUgZm9ybSBhdCBkaWZmZXJl bnQgZnJlcXVlbmNpZXMuIEdldCBjcmVhdGl2ZSE8L2xpPgoJCTxsaT48Y29kZT5jb3VudGZv cm09JnF1b3Q7OiE1OmdhbF9yb3c6c21kX2JlbG93JnF1b3Q7PC9jb2RlPiA6IGFnYWluLCBt aXNzaW5nIG91dCB0aGUgZmlyc3QgdmFsdWUgd2lsbCBvdXRwdXQgZ2FsX3JvdyBhZnRlciBl dmVyeSBpbWFnZSwgYnV0IHRoaXMgdGltZSBza2lwcGluZyB0aGUgNXRoIGltYWdlPC9saT4K CTwvdWw+CgoJPHA+VGhlIDxjb2RlPiw8L2NvZGU+IGFuZCA8Y29kZT46PC9jb2RlPiBjYW4g YmUgb3ZlcnJpZGRlbiB3aXRoIHRoZSA8Y29kZT5kZWxpbTwvY29kZT4gYW5kIDxjb2RlPnBh cmFtZGVsaW08L2NvZGU+IGF0dHJpYnV0ZXMsIHJlc3BlY3RpdmVseS48L3A+CgoJPHA+VGhl cmUgYXJlIGEgZmV3IHJ1bGVzIHdoZW4gdXNpbmcgdGhlIGNvdW50Zm9ybTo8L3A+CgoJPHVs PgoJCTxsaT5udW1iZXJzIG11c3QgYXBwZWFyIGJlZm9yZSB0aGUgZm9ybSBuYW1lPC9saT4K CQk8bGk+dGhlIGZvcm0gbmFtZSBpcyB1c3VhbGx5IHRoZSBsYXN0IGl0ZW0gaW4gdGhlIGNv bG9uLXNlcGFyYXRlZCBsaXN0LCB0aG91Z2ggeW91IGNhbiBwdXQgPGNvZGU+c21kX2Fib3Zl PC9jb2RlPiBvciA8Y29kZT5zbWRfYmVsb3c8L2NvZGU+IGxhc3QgaWYgeW91IHdpc2g8L2xp PgoJCTxsaT48Y29kZT5zbWRfZXZlcnk8L2NvZGU+IG9ubHkgYWZmZWN0cyB0aGUgdmFsdWUg dGhhdCA8ZW0+aW1tZWRpYXRlbHk8L2VtPiBmb2xsb3dzIGl0LCBlLmcuIDxjb2RlPmNvdW50 Zm9ybT0mcXVvdDtzbWRfZXZlcnk6NTo3OjEyOm15X2FkJnF1b3Q7PC9jb2RlPiB3aWxsIG91 dHB1dCA8ZW0+bXlfYWQ8L2VtPiBhdCBldmVyeSA1dGggaW1hZ2UsIGFzIHdlbGwgYXMgPGVt Pm9ubHk8L2VtPiBvbiB0aGUgN3RoIGFuZCAxMnRoIGltYWdlcy4gVGh1cyB0aGUgc2VxdWVu Y2Ugd291bGQgYmUgNSwgNywgMTAsIDEyLCAxNSwgMjAsIDI1LCAzMCYjODIzMDs8L2xpPgoJ CTxsaT5pZiB1c2luZyA8Y29kZT5zbWRfZXZlcnk8L2NvZGU+LCBpdCA8c3Ryb25nPm11c3Q8 L3N0cm9uZz4gYXBwZWFyIGFzIHRoZSBmaXJzdCBpdGVtLiBGb3IgZXhhbXBsZSA8Y29kZT5j b3VudGZvcm09JnF1b3Q7NDp0aGVfZm91cnRoLCA2OnNtZF9ldmVyeTo1Om15X2FkJnF1b3Q7 PC9jb2RlPiBpcyBpbnZhbGlkLCBidXQgPGNvZGU+Y291bnRmb3JtPSZxdW90OzQ6dGhlX2Zv dXJ0aCwgc21kX2V2ZXJ5OjU6NjpteV9hZCZxdW90OzwvY29kZT4gaXMgT0s8L2xpPgoJPC91 bD4KCgk8cD5TZWUgPGEgaHJlZj0iI2VnMTAiPmV4YW1wbGUgMTA8L2E+IGZvciBtb3JlLjwv cD4KCgk8aDIgaWQ9ImNvbWJvcyI+Q29tYm9zPC9oMj4KCgk8cD5JZiB0aGUgYnVpbHQtaW4g PGEgaHJlZj0iI3JlcF9nYWxsZXJ5Ij5yZXBsYWNlbWVudCB0YWdzPC9hPiBhcmVuJiM4MjE3 O3QgZW5vdWdoIGZvciB5b3VyIG5lZWRzIG9yIHlvdSBmaW5kIHlvdXJzZWxmIHJlcGVhdGlu ZyB0aGUgc2FtZSBjb21iaW5hdGlvbiBhbmQgd2FudCB0byBzYXZlIHlvdXJzZWxmIHNvbWUg dHlwaW5nLCB5b3UgY2FuIGRlZmluZSB5b3VyIG93bi4gVGhlIHN5bnRheCBpczo8L3A+CgoJ PHA+PGNvZGU+Y29tYm89JnF1b3Q7bmV3dGFnMTpkZWZpbml0aW9uLCBuZXd0YWcyOmRlZmlu aXRpb24sIC4uLiZxdW90OzwvY29kZT48L3A+CgoJPHA+JiM4MjE2O2RlZmluaXRpb24mIzgy MTc7IGNhbiBiZSBhbnkgZml4ZWQgdGV4dCwgYW55IGV4aXN0aW5nIHJlcGxhY2VtZW50IHRh Zywgb3IgYW55ICYjODIxNjs/JiM4MjE3OyBhcnRpY2xlIHZhcmlhYmxlIHNvIHlvdSBjYW4g Z2V0IHJlYWxseSB3aWxkIGhlcmUsIGZvciBleGFtcGxlOjwvcD4KCgk8cD48Y29kZT5jb21i bz0mcXVvdDtpbWdpbjpmb3VuZCBpbiA/cyBbdGFnZ2VkIHdpdGggP2tleXdvcmRzLiBQaG90 byBieSB7YXV0aG9yfV0mcXVvdDs8L2NvZGU+PC9wPgoKCTxwPk9uY2UgZGVmaW5lZCwgPGNv ZGU+e2ltZ2lufTwvY29kZT4gaXMgYXZhaWxhYmxlIHRvIHlvdXIgZ2FsbGVyeSA8Y29kZT5m b3JtPC9jb2RlPiBhbmQgbWlnaHQgYmUgcmVwbGFjZWQgd2l0aCAmIzgyMjA7Zm91bmQgaW4g em9vIFt0YWdnZWQgd2l0aCB6ZWJyYSwgYWZyaWNhLCBzdHJpcGVzLiBQaG90byBieSBCbG9r ZV0mIzgyMjE7LiAkcHJldGV4dCBpcyBhbHNvIGF2YWlsYWJsZSBmb3IgdGhvc2UgZ2Vla3Mg d2hvIGtub3cgd2hhdCYjODIxNztzIGluIGl0ICh0ZW1wb3JhcmlseSB1c2UgPGNvZGU+ZGVi dWc9JnF1b3Q7NCZxdW90OzwvY29kZT4gdG8gdmlldyBhbGwgYXZhaWxhYmxlIGFydGljbGUg dmFyaWFibGVzKS48L3A+CgoJPHA+T25lIHRoaW5nIHRvIHdhdGNoIG91dCBmb3IgaXMgdGhh dCB0aGUgc3BhY2UgY2hhcmFjdGVyIGlzbiYjODIxNzt0IG5lY2Vzc2FyaWx5IGEgZGVsaW1p dGVyIGZvciA8Y29kZT4/PC9jb2RlPiB2YXJpYWJsZXMgKGJlY2F1c2UgY3VzdG9tIGZpZWxk cyBjYW4gaGF2ZSBzcGFjZXMgaW4gdGhlbSkuIFNvIDxjb2RlPmNvbWJvPSZxdW90O2RvZXNu b3R3b3JrOj9zIGluID9jYXRlZ29yeTEmcXVvdDs8L2NvZGU+IHdpbGwgbG9vayBmb3IgYSB2 YXJpYWJsZSBsYWJlbGxlZCAmIzgyMjA7cyBpbiYjODIyMTsgYW5kIG9uZSBjYWxsZWQgJiM4 MjIwO2NhdGVnb3J5MSYjODIyMTsuIE9ubHkgb25lIG9mIHRob3NlIGV4aXN0cyEgQ2xldmVy IHVzZSBvZiBwYXJlbnRoZXNlcyBvciBvdGhlciBwdW5jdHVhdGlvbiBjYW4gd29yayByb3Vu ZCB0aGlzLiBPciB1c2UgPGNvZGU+c3RyaWN0ZmllbGRzPSZxdW90OzAmcXVvdDs8L2NvZGU+ IHRvIHR1cm4gb2ZmIHRoZSB1c2Ugb2Ygc3BhY2VzIGluIGN1c3RvbSBmaWVsZCBuYW1lcy48 L3A+CgoJPGgyIGlkPSJjb2xsYXRlX21vZGUiPkNvbGxhdGUgbW9kZTwvaDI+CgoJPHA+SWYg eW91IHdhbnQgdG8gZ2V0IDxlbT5yZWFsbHk8L2VtPiBmdW5reSB5b3UgY2FuIHB1dCB0aGUg cGx1Z2luIGludG8gYSAybmQgbW9kZSBjYWxsZWQgJiM4MjIwO2NvbGxhdGlvbiBtb2RlJiM4 MjIxOy4gVGhpcyBtZWFucyB5b3VyIGNob3NlbiBmb3JtIGlzIDxzdHJvbmc+bm90PC9zdHJv bmc+IGV4ZWN1dGVkIGZvciBldmVyeSBpbWFnZTsgaXQgaXMgb25seSB1c2VkIG9uY2UgYXQg dGhlIHZlcnkgZW5kIG9mIHRoZSBsaXN0LCBhZnRlciBhbGwgdGhlIGltYWdlcyBoYXZlIGJl ZW4gaW50ZXJuYWxseSAmIzgyMjA7Y29sbGVjdGVkJiM4MjIxOy4gSW4gZWZmZWN0LCB0aGUg cGx1Z2luIGJ1aWxkcyB1cCBhIGdpYW50IGFycmF5IG9mIGFsbCBtYXRjaGluZyBpbWFnZXMg cmVhZHkgZm9yIHlvdSB0byBvdXRwdXQgdGhlbSBhbGwgaW4gb25lIGdvLiBUaGlzIGlzIHZl cnkgaGFuZHkgZm9yIGRvaW5nIHNsaWRlc2hvd3MgYW5kIGlzIGJlc3QgZXhwbGFpbmVkIGJ5 IGV4YW1wbGU6PC9wPgoKCTxwPjxjb2RlPmNvbGxhdGU9JnF1b3Q7MSZxdW90OzwvY29kZT48 L3A+CgoJPHA+c3dpdGNoZXMgY29sbGF0aW9uIG1vZGUgb24uIElmIHRoZSBwbHVnaW4gbWF0 Y2hlZCA0IGltYWdlcyBhbmQgeW91IHdlcmUgdG8gdXNlIHRoZSByZXBsYWNlbWVudCB0YWcg PGNvZGU+e25hbWV9PC9jb2RlPiBpbiB5b3VyIGZvcm0gbGlrZSB0aGlzOjwvcD4KCjxwcmUg Y2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPlRoZSBtYXRjaGluZyBpbWFnZXM6 IHtuYW1lfQo8L2NvZGU+PC9wcmU+CgoJPHA+eW91IG1pZ2h0IGdldCB0aGlzOjwvcD4KCjxw cmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPlRoZSBtYXRjaGluZyBpbWFn ZXM6IGhlcm9uLmpwZyxwZW5ndWluLmpwZyxlbXUuanBnLHB1ZmZpbi5qcGcKPC9jb2RlPjwv cHJlPgoKCTxwPlNvbWV0aW1lcyBpdCYjODIxNztzIHVzZWZ1bCB0byBiZSBhYmxlIHRvIHB1 dCBxdW90ZXMgYXJvdW5kIGVhY2ggaXRlbSBzbyB5b3UgY2FuIHRlbGwgY29sbGF0ZSBtb2Rl IHRvIGRvIHRoYXQgaW5zdGVhZDo8L3A+CgoJPHA+PGNvZGU+Y29sbGF0ZT0mcXVvdDtxdW90 ZTp7bmFtZX0mcXVvdDs8L2NvZGU+PC9wPgoKCTxwPllvdSB3b3VsZCB0aGVuIGdldDo8L3A+ Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj5UaGUgbWF0Y2hpbmcg aW1hZ2VzOiAmcXVvdDtoZXJvbi5qcGcmcXVvdDssJnF1b3Q7cGVuZ3Vpbi5qcGcmcXVvdDss JnF1b3Q7ZW11LmpwZyZxdW90OywmcXVvdDtwdWZmaW4uanBnJnF1b3Q7CjwvY29kZT48L3By ZT4KCgk8cD5UaGUgZGVsaW1pdGVyIChhIGNvbW1hIGluIHRoaXMgY2FzZSkgY2FuIGJlIG92 ZXJyaWRkZW4gd2l0aCB0aGUgPGNvZGU+ZGVsaW08L2NvZGU+IGF0dHJpYnV0ZS4gWW91IG1h eSB1c2UgPGNvZGU+c2dscXVvdGU8L2NvZGU+IHRvIHdyYXAgc2luZ2xlIHF1b3RlcyByb3Vu ZCB0aGUgaXRlbXMsIG9yICYjODIyMDtkYmxxdW90ZSYjODIyMTsgYXMgYSBzeW5vbnltIGZv ciAmIzgyMjA7cXVvdGUmIzgyMjE7IGlmIHlvdSBwcmVmZXIuIFlvdSBjYW4gcXVvdGUgbW9y ZSB0aGFuIG9uZSB0aGluZyBhdCBvbmNlIGJ5IHNwZWNpZnlpbmcgdGhlIGl0ZW1zIGFzIGEg ZGVsaW1pdGVkIGxpc3Q6PC9wPgoKCTxwPjxjb2RlPmNvbGxhdGU9JnF1b3Q7cXVvdGU6e25h bWV9OnthbHR9OntpbWdpbn0mcXVvdDs8L2NvZGU+PC9wPgoKCTxwPlllcywgeW91IGNhbiB1 c2UgY29tYm9zISBUaGUgZGVsaW1pdGVyIHVzZWQgYmV0d2VlbiBpdGVtcyBjYW4gYmUgb3Zl cnJpZGVuIHdpdGggdGhlIDxjb2RlPmNvbGxhdGVkZWxpbTwvY29kZT4gYXR0cmlidXRlLjwv cD4KCgk8cD5UaGUgc2Vjb25kIHNwZWNpYWwgZmVhdHVyZSBvZiBjb2xsYXRpb24gbW9kZSBp cyB0aGF0IHlvdSBkbyBub3QgaGF2ZSB0byBhbHdheXMgb3V0cHV0IHRoZSBlbnRpcmUgbGlz dC4gWW91IGNhbiBncmFiIGluZGl2aWR1YWwgZW50aXRpZXMgZnJvbSB3aXRoaW4gdGhlIGlu dGVybmFsIGFycmF5IGJ5IHVzaW5nIHRoZSAmIzgyMTY7IyYjODIxNzsgbm90YXRpb24gdGh1 czo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj57bmFtZX0g bWlnaHQgb3V0cHV0ICZxdW90O2hlcm9uLmpwZyZxdW90OywmcXVvdDtwZW5ndWluLmpwZyZx dW90OywmcXVvdDtlbXUuanBnJnF1b3Q7LCZxdW90O3B1ZmZpbi5qcGcmcXVvdDsgKGFzIGJl Zm9yZSkKe25hbWUjMX0gd291bGQgb25seSBvdXRwdXQgaGVyb24uanBnCntuYW1lIzN9IHdv dWxkIG9ubHkgb3V0cHV0IGVtdS5qcGcKPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGUgdGhhdCB3 aGVuIHB1bGxpbmcgb3V0IGluZGl2aWR1YWwgZW50cmllcyB0aGV5IDxzdHJvbmc+ZG8gbm90 PC9zdHJvbmc+IGdldCBxdW90ZXMgYWRkZWQgdG8gdGhlbSwgcmVnYXJkbGVzcyBvZiB3aGV0 aGVyIHlvdSB1c2VkIDxjb2RlPnF1b3RlPC9jb2RlPiBvciBub3QuIFRoaXMgaXMgYmVjYXVz ZSBpdCBpcyBhIHNpbmdsZSBpdGVtIHNvIHlvdSBjYW4gZWFzaWx5IHB1dCB0aGUgcXVvdGVz IGluIHRoZSBmb3JtIGl0c2VsZiAodml6OiA8Y29kZT4mcXVvdDt7bmFtZSMyfSZxdW90Ozwv Y29kZT4pPC9wPgoKCTxwPk1lc3NpbmcgYXJvdW5kIHdpdGggcHVsbGluZyBvdXQgaW5kaXZp ZHVhbCBpdGVtcyBhbmQgbGlzdHMgY2FuIHlpZWxkIHNvbWUgdmVyeSBpbnRlcmVzdGluZyBy ZXN1bHRzIGFuZCBhbGxvd3Mgc29tZSBjb21wbGV0ZWx5IHdhY2t5IGdhbGxlcmllcyB0byBi ZSBnZW5lcmF0ZWQuIFRyeSBjb21iaW5pbmcgc21kX2dhbGxlcnkgdGFncyB3aXRoIDxjb2Rl PiZsdDt0eHA6aWZfZGlmZmVyZW50Jmd0OzwvY29kZT4gZm9yIGEgcmVhbCBtaW5kIHNjcmFt YmxlIDotKTwvcD4KCgk8aDIgaWQ9ImV4YW1wbGVzIj5FeGFtcGxlczwvaDI+CgoJPHA+VGhl IGV4YW1wbGVzIGFsbCB1c2UgdGhlIGNsYXNzaWMgem9vIHdlYnNpdGUuIExldCYjODIxNztz IGdldCBzb21lIHBpY3R1cmVzIG91dCBvZiB0aGUgZGF0YWJhc2UmIzgyMzA7PC9wPgoKCTxo MyBpZD0iZWcxIj5FeGFtcGxlIDE6IHNpbXBsZSAvIGxpZ2h0Ym94ZWQgZ2FsbGVyeTwvaDM+ Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9n YWxsZXJ5IGNhdGVnb3J5PSZxdW90O2FuaW1hbHMmcXVvdDsgc3VibGV2ZWw9JnF1b3Q7YWxs JnF1b3Q7IGZvcm09JnF1b3Q7Z2FsbGVyeSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJ PHA+VGhhdCBwdWxscyBvdXQgYWxsIHBpY3R1cmVzIGZyb20gdGhlIGFuaW1hbHMgY2F0ZWdv cnksIGluY2x1ZGluZyBhbGwgc3ViLWNhdGVnb3JpZXMsIGFuZCBwYXNzZXMgdGhlbSB0byB0 aGUgZm9ybSBjYWxsZWQgJiM4MjE2O2dhbGxlcnkmIzgyMTc7IGZvciBwcm9jZXNzaW5nLiBU aGUgZm9ybSBjb3VsZCBiZTo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9 ImJsb2NrIj4mbHQ7aW1nIGNsYXNzPSZxdW90O2FuaW1hZ2UmcXVvdDsgc3JjPSZxdW90O3t1 cmx9JnF1b3Q7IGFsdD0mcXVvdDt7YWx0fSZxdW90OyAvJmd0OwombHQ7ZGl2IGNsYXNzPSZx dW90O2FjYXB0aW9uJnF1b3Q7Jmd0O3t0aXRsZX0mbHQ7L2RpdiZndDsKPC9jb2RlPjwvcHJl PgoKCTxwPlRoYXQgbWVhbnMsIGZvciBldmVyeSBtYXRjaGVkIGltYWdlLCBzdWJzdGl0dXRl IGl0cyA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiwgYWx0IGFuZCB0aXRsZSB0YWdz IGludG8gdGhlIHJlbGV2YW50IHBsYWNlcy4gVGh1cyB5b3UgZ2V0IGEgc2VyaWVzIG9mIGlt YWdlcyBvbiB0aGUgcGFnZSwgd2hpY2ggeW91IGNhbiBzdHlsZSBhY2NvcmRpbmdseS48L3A+ CgoJPHA+Rm9yIGEgbW9yZSBmYW5jeSBvdXRwdXQgdXNpbmcsIHNheSwgc2xpbWJveCwgeW91 IGNvdWxkIGxvYWQgdGhlIHJlbGV2YW50IGxpYnJhcmllcyBhbmQgc3R5bGVzIGluIHRoZSA8 Y29kZT4mbHQ7aGVhZCZndDs8L2NvZGU+IG9mIHlvdXIgcGFnZTo8L3A+Cgo8cHJlIGNsYXNz PSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7c2NyaXB0IHR5cGU9JnF1b3Q7dGV4 dC9qYXZhc2NyaXB0JnF1b3Q7IHNyYz0mcXVvdDsvanMvbW9vdG9vbHMuanMmcXVvdDsmZ3Q7 Jmx0Oy9zY3JpcHQmZ3Q7CiZsdDtzY3JpcHQgdHlwZT0mcXVvdDt0ZXh0L2phdmFzY3JpcHQm cXVvdDsgc3JjPSZxdW90Oy9qcy9zbGltYm94LmpzJnF1b3Q7Jmd0OyZsdDsvc2NyaXB0Jmd0 OwombHQ7bGluayByZWw9JnF1b3Q7c3R5bGVzaGVldCZxdW90OyB0eXBlPSZxdW90O3RleHQv Y3NzJnF1b3Q7IGhyZWY9JnF1b3Q7L2Nzcy9zbGltYm94LmNzcyZxdW90OyAvJmd0Owo8L2Nv ZGU+PC9wcmU+CgoJPHA+VGhlbiB5b3VyICYjODIxNjtnYWxsZXJ5JiM4MjE3OyBmb3JtIGNv dWxkIGJlOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZs dDthIHJlbD0mcXVvdDtsaWdodGJveC17Y2F0ZWdvcnl9JnF1b3Q7IGhyZWY9JnF1b3Q7e3Vy bH0mcXVvdDsKICAgICB0aXRsZT0mcXVvdDtBIHBpY3R1cmUgb2Yge2NhcHRpb259JnF1b3Q7 Jmd0OwogJmx0O3R4cDp0aHVtYm5haWwgaWQ9JnF1b3Q7e2lkfSZxdW90OyAvJmd0OwombHQ7 L2EmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5Wb2lsYSEgVXNpbmcgdGhlIHNhbWUgc21kX2dh bGxlcnkgdGFnIHlvdSBoYXZlIGNoYW5nZWQgdGhlIHdheSB0aGUgZ2FsbGVyeSByZW5kZXJz IGZyb20gYSBzaW1wbGUgbGlzdCB0byBhIGZ1bGwtZmVhdHVyZWQgc2xpbWJveC4gV2l0aCB2 aXJ0dWFsbHkgdGhlIHNhbWUgZm9ybSB5b3UgY2FuIHN3aXRjaCB0aGUgb3V0cHV0IHRvIHRo aWNrYm94LCBsaWdodGJveCwgbGl0ZWJveCwgbW9vbmJveCBvciB3aGF0ZXZlci15b3UtbGlr ZS1ib3ggZGVwZW5kaW5nIG9uIHdoaWNoIGxpYnJhcmllcyB5b3UgbG9hZC4gRm9sbG93IHRo ZSBpbnN0cnVjdGlvbnMgZm9yIHlvdXIgZmF2b3VyaXRlIGVmZmVjdCBhbmQgcGx1ZyBpdCBp bnRvIHNtZF9nYWxsZXJ5LjwvcD4KCgk8aDMgaWQ9ImVnMiI+RXhhbXBsZSAyOiBsYXVuY2gg ZnJvbSBvbmUgaW1hZ2U8L2gzPgoKCTxwPkEgY29tbW9uIHJlcXVlc3QgaXMgdG8gYmUgYWJs ZSB0byAmIzgyMjA7bGF1bmNoJiM4MjIxOyBhIHNsaW1ib3ggZ2FsbGVyeSBmcm9tIGEgc2lu Z2xlIGltYWdlIG9yIHRleHQgbGluay4gVXNpbmcgYSBzaW5nbGUgaW1hZ2U6PC9wPgoKPHBy ZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZ2FsbGVy eSBjYXRlZ29yeT0mcXVvdDthbmltYWxzJnF1b3Q7CiAgICAgc3VibGV2ZWw9JnF1b3Q7YWxs JnF1b3Q7CiAgICAgZm9ybT0mcXVvdDtnYWxsZXJ5JnF1b3Q7IHRodW1ibGltaXQ9JnF1b3Q7 MSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhlIGZvcm0gd2lsbCB1c2UgdGhl IHNwZWNpYWwgPGNvZGU+e29iamVjdH08L2NvZGU+IHJlcGxhY2VtZW50IHRhZyBzbyBpdCBv bmx5IGRpc3BsYXlzIHRoZSB0aHVtYm5haWwgaWYgdGhlIHZhbHVlIG9mIHRodW1ibGltaXQg aGFzIDxzdHJvbmc+bm90PC9zdHJvbmc+IGJlZW4gcmVhY2hlZDo8L3A+Cgo8cHJlIGNsYXNz PSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7YSByZWw9JnF1b3Q7bGlnaHRib3gt c21kJnF1b3Q7IGhyZWY9JnF1b3Q7e3VybH0mcXVvdDsKICAgICB0aXRsZT0mcXVvdDtBIHBp Y3R1cmUgb2Yge3RpdGxlfSZxdW90OyZndDsKe29iamVjdH0KJmx0Oy9hJmd0Owo8L2NvZGU+ PC9wcmU+CgoJPHA+Q2hhbmdlIHRoZSBzdGFydCBpbWFnZSBieSBzcGVjaWZ5aW5nIDxjb2Rl PnRodW1ib2Zmc2V0PC9jb2RlPiAmIzgyMTI7IG5vdGUgdGhpcyB3aWxsIGFsc28gc3RhcnQg dGhlIGxpZ2h0Ym94IGVmZmVjdCBmcm9tIHRoZSBpbWFnZSB5b3UgY2hvb3NlLiBJZiB5b3Ug d2FudCB0byBzdGFydCBvbiBhIHNwZWNpZmljIGltYWdlIGluIHBvc2l0aW9uIDEsIHVzZSB0 aGUgPGNvZGU+aWQ8L2NvZGU+IGF0dHJpYnV0ZSB0byBicmluZyBpdCB0byB0aGUgdG9wIG9m IHRoZSBsaXN0LCBvciBjaGFuZ2UgdGhlIHNvcnQgb3JkZXIuPC9wPgoKCTxwPklmIHlvdSB3 YW50ZWQgdG8gbGF1bmNoIHRoZSBnYWxsZXJ5IGZyb20gYSB0ZXh0IGxpbmssIGFkZCBzb21l dGhpbmcgbGlrZSA8Y29kZT50ZXh0PSZxdW90O0NsaWNrIHRvIHN0YXJ0IGxpZ2h0Ym94JnF1 b3Q7PC9jb2RlPi48L3A+CgoJPGgzIGlkPSJlZzMiPkV4YW1wbGUgMzogcG9wdXAgZ2FsbGVy eTwvaDM+CgoJPHA+VG8gYWNoaWV2ZSBhbiBlZmZlY3Qgc2ltaWxhciB0byByc3NfdGh1bWJw b3AsIGFkZCBhbiBpbWFnZSBhbmQgY2FwdGlvbiBwbGFjZWhvbGRlciBvdXRzaWRlIHRoZSBj YWxsIHRvIHNtZF9nYWxsZXJ5LCB0aGVuIGluY2x1ZGUgeW91ciBzbWRfZ2FsbGVyeSB0YWcg YXMgdXN1YWwuIFRoaXMgdGltZSB3ZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIGFsbCB0aGUg cGljdHVyZXMgZnJvbSB0aGUgY2F0ZWdvcmllcyB1cCB0byB0d28gbGV2ZWxzIGJlbG93IGJv dGggJiM4MjIwO2FuaW1hbHMmIzgyMjE7LCBwbHVzIHdoaWNoZXZlciBjYXRlZ29yaWVzIGFy ZSBsaXN0ZWQgaW4gPGNvZGU+bXlfY3VzdG9tX2ZpZWxkPC9jb2RlPiBhbmQgdGhlIGltYWdl cyB3aXRoIElEcyAyNSwgMzgsIDM5LCA0MCBhbmQgNDI6PC9wPgoKPHByZSBjbGFzcz0iYmxv Y2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O2ltZyBpZD0mcXVvdDtmdWxsc2l6ZSZxdW90 OyBzcmM9JnF1b3Q7L2ltYWdlcy9lbXB0eS5qcGcmcXVvdDsgLyZndDsKJmx0O3NwYW4gaWQ9 JnF1b3Q7ZnVsbGNhcHRpb24mcXVvdDsmZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7dHhwOnNtZF9n YWxsZXJ5IHN1YmxldmVsPSZxdW90OzImcXVvdDsKICAgICBjYXRlZ29yeT0mcXVvdDthbmlt YWxzLCA/bXlfY3VzdG9tX2ZpZWxkJnF1b3Q7CiAgICAgaWQ9JnF1b3Q7MjUsIDQyLCAzOC00 MCZxdW90OyBmb3JtPSZxdW90O2dhbGxlcnkmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoK CTxwPlRoZSBnYWxsZXJ5IGZvcm0gbG9va3Mgc2NhcnkgYnV0IGlzIG9ubHkgYSB0aHVtYm5h aWwgaW1hZ2Ugc3Vycm91bmRlZCBieSBhIHNpbXBsZSBhbmNob3IgdGFnIHdpdGggdHdvIGFj dGlvbnMgYXNzaWduZWQgdG8gaXQ6IGEgbW91c2VvdmVyIHRvIGNvcHkgdGhlIHBpY3R1cmUg YW5kIGNhcHRpb24gaW50byB0aGUgcGxhY2Vob2xkZXI7IGFuZCBhIG1vdXNlb3V0IHRvIHJl bW92ZSB0aGVtOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2si PiZsdDthIGhyZWY9JnF1b3Q7e3VybH0mcXVvdDsgdGl0bGU9JnF1b3Q7e3RpdGxlfSZxdW90 OwogICAgIG9ubW91c2VvdmVyPSZxdW90O2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCYjMzk7 ZnVsbHNpemUmIzM5Oykuc3JjID0gdGhpcy5ocmVmOwogICAgIGRvY3VtZW50LmdldEVsZW1l bnRCeUlkKCYjMzk7ZnVsbGNhcHRpb24mIzM5OykuaW5uZXJIVE1MID0gdGhpcy50aXRsZTsg cmV0dXJuIGZhbHNlOyZxdW90OwogICAgIG9ubW91c2VvdXQ9JnF1b3Q7ZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJiMzOTtmdWxsc2l6ZSYjMzk7KS5zcmMgPSAmIzM5Oy9pbWFnZXMvMTcu anBnJiMzOTs7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJiMzOTtmdWxsY2FwdGlv biYjMzk7KS5pbm5lckhUTUwgPSAmIzM5OyYjMzk7OyByZXR1cm4gZmFsc2U7JnF1b3Q7Jmd0 OwogICZsdDtpbWcgc3JjPSZxdW90O3t0aHVtYnVybH0mcXVvdDsgYWx0PSZxdW90O3thbHR9 JnF1b3Q7IC8mZ3Q7CiZsdDsvYSZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGUgdGhlcmUg YXJlIG11Y2ggbmVhdGVyIHdheXMgb2YgZG9pbmcgdGhpcyAoZS5nLiB3aXRoIGpRdWVyeSkg YW5kIGl0JiM4MjE3O3Mgbm90IHJlY29tbWVuZGVkIHRvIHVzZSB0aGlzIGZvcm0gaW4gYSBs aXZlIHNpdGUsIGJ1dCBpdCBnaXZlcyBhIGZsYXZvdXIgb2Ygd2hhdCBpcyBwb3NzaWJsZS48 L3A+CgoJPGgzIGlkPSJlZzQiPkV4YW1wbGUgNDogc2xpZGVzaG93PC9oMz4KCgk8cD5UaGlz IG9uZSB1c2VzIGNvbGxhdGUgbW9kZSBidXQgaXMgbm90IG11Y2ggbW9yZSBkaWZmaWN1bHQg dG8gdW5kZXJzdGFuZC4gSW4geW91ciA8Y29kZT4mbHQ7aGVhZCZndDs8L2NvZGU+IHNlY3Rp b246PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3Nj cmlwdCB0eXBlPSZxdW90O3RleHQvamF2YXNjcmlwdCZxdW90OyBzcmM9JnF1b3Q7L2pzL21v b3Rvb2xzLmpzJnF1b3Q7Jmd0OyZsdDsvc2NyaXB0Jmd0OwombHQ7c2NyaXB0IHR5cGU9JnF1 b3Q7dGV4dC9qYXZhc2NyaXB0JnF1b3Q7IHNyYz0mcXVvdDsvanMvc2xpZGVzaG93LmpzJnF1 b3Q7Jmd0OyZsdDsvc2NyaXB0Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhlIHRhZzo8L3A+ Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9n YWxsZXJ5CiAgY2F0ZWdvcnk9JnF1b3Q7YmlyZHMsIGZpc2gmcXVvdDsgZm9ybT0mcXVvdDtn YWxsZXJ5JnF1b3Q7CiAgY29tYm89JnF1b3Q7aW1nbGlzdDp7aWR9e2V4dH0mcXVvdDsKICBj b2xsYXRlPSZxdW90O3F1b3RlOntpbWdsaXN0fTp7YWx0fSZxdW90OyAvJmd0Owo8L2NvZGU+ PC9wcmU+CgoJPHA+VGhhdCBwdWxscyBhbGwgcGljdHVyZXMgZnJvbSB0aGUgYmlyZHMgYW5k IGZpc2ggY2F0ZWdvcmllcy4gQWx0aG91Z2ggdGVjaG5pY2FsbHkgdW5uZWNlc3NhcnksIGEg Y29tYm8gaGFzIGJlZW4gZGVmaW5lZCB0byBzaG93IGhvdyBpdCBjYW4gYmUgdXNlZC4gVGhp cyBjb21ibyBpcyBjYWxsZWQgPGNvZGU+aW1nbGlzdDwvY29kZT4gYW5kIGlzIGRlZmluZWQg YXMgdGhlIGltYWdlJiM4MjE3O3MgSUQgbnVtYmVyIHBsdXMgaXRzIGV4dGVuc2lvbi4gV2Ug dXNlIHRoaXMgaW4gdGhlIGNvbGxhdGUgYXR0cmlidXRlIGFuZCB0ZWxsIGl0IHRvIHB1dCBk b3VibGUgcXVvdGVzIHJvdW5kIGV2ZXJ5IGl0ZW0gaW4gJiM4MjE2O2ltZ2xpc3QmIzgyMTc7 IGFuZCAmIzgyMTY7YWx0JiM4MjE3Oy4gVGhlbiB3ZSBjYW4gcHV0IHRoZXNlIHZhbHVlcyBp bnRvIHRoZSBuZWNlc3NhcnkgamF2YXNjcmlwdCBpbiB0aGUgPGNvZGU+Z2FsbGVyeTwvY29k ZT4gZm9ybSB0byBnZW5lcmF0ZSB0aGUgc2xpZGVzaG93OjwvcD4KCjxwcmUgY2xhc3M9ImJs b2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtkaXYgY2xhc3M9JnF1b3Q7c2xpZGVzaG93 JnF1b3Q7IGlkPSZxdW90O3NsaWRlc2hvdzEmcXVvdDsmZ3Q7CiAmbHQ7aW1nIHNyYz0mcXVv dDsmbHQ7dHhwOnNpdGVfdXJsIC8mZ3Q7aW1hZ2VzL3tpZCMxfS5qcGcmcXVvdDsKICAgICBh bHQ9JnF1b3Q7e2FsdCMxfSZxdW90OyB3aWR0aD0mcXVvdDt7d2lkdGgjMX0mcXVvdDsgaGVp Z2h0PSZxdW90O3toZWlnaHQjMX0mcXVvdDsgLyZndDsKJmx0Oy9kaXYmZ3Q7CjwvY29kZT4K PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7c2NyaXB0IHR5cGU9JnF1b3Q7dGV4dC9qYXZhc2Ny aXB0JnF1b3Q7Jmd0OwpteVNob3cxID0gbmV3IFNsaWRlc2hvdygmcXVvdDtzbGlkZXNob3cx JnF1b3Q7LAogIHsgaHU6ICZxdW90OyZsdDt0eHA6c2l0ZV91cmwgLyZndDtpbWFnZXMvJnF1 b3Q7LAogICAgaW1hZ2VzOiBbe2ltZ2xpc3R9XSwKICAgIGNhcHRpb25zOiBbe2FsdH1dLAog ICAgY2xhc3NlczogWyZxdW90O3ByZXYmcXVvdDssJnF1b3Q7bmV4dCZxdW90OywmcXVvdDth Y3RpdmUmcXVvdDtdLAogICAgdHlwZTogJnF1b3Q7ZmFkZSZxdW90OwogIH0pOwombHQ7L3Nj cmlwdCZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGUgdGhhdCB0aGUgaW5pdGlhbCBwb3J0 aW9uIChpbiB0aGUgZGl2IGFuZCBpbWcgdGFncykgdXNlcyB0aGUgJiM4MjE2OyMmIzgyMTc7 IG5vdGF0aW9uIGJlY2F1c2Ugd2Ugb25seSB3YW50IHRvIGRpc3BsYXkgb25lIGltYWdlIHRv ICYjODIyMDtzdGFydCYjODIyMTsgdGhlIHNsaWRlc2hvdy4gSW4gdGhpcyBjYXNlIHdlJiM4 MjE3O3JlIHVzaW5nIHRoZSBmaXJzdCBpbWFnZSBpbiB0aGUgbGlzdCwgYnV0IHlvdSBjYW4g Y2hhbmdlIHRoZSAjMSBmb3IgIzQyIGlmIHlvdSB3YW50ZWQgdG8gc2hvdyB0aGUgZm9ydHkt c2Vjb25kIGltYWdlIGluc3RlYWQhIFRoZSBwYXJ0IGluIHRoZSBzY3JpcHQgdGFnIHVzZXMg dGhlIGZ1bGwsIHF1b3RlZCBsaXN0cyBiZWNhdXNlIHRoYXQmIzgyMTc7cyB0aGUgZm9ybWF0 IHRoZSBqYXZhc2NyaXB0IHJlcXVpcmVzLjwvcD4KCgk8aDMgaWQ9ImVnNSI+RXhhbXBsZSA1 OiBwYWdpbmF0aW9uPC9oMz4KCgk8cD5UbyBhZGQgcGFnaW5nIHRvIGEgZ2FsbGVyeSB5b3Ug dXNlIHRoZSA8Y29kZT5saW1pdDwvY29kZT4gYXR0cmlidXRlIHRvIHNob3cgYSBudW1iZXIg b2YgdGh1bWJzIHBlciBwYWdlLiBGb3IgYSBwYWdlZCB0aHVtYnBvcCBnYWxsZXJ5IHRoYXQg c2hvd3MgZml2ZSB0aHVtYnMgcGVyIHBhZ2U6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxj b2RlIGNsYXNzPSJibG9jayI+Jmx0O2ltZyBpZD0mcXVvdDtmdWxsc2l6ZSZxdW90OyBzcmM9 JnF1b3Q7L2ltYWdlcy9lbXB0eS5qcGcmcXVvdDsgLyZndDsKJmx0O3NwYW4gaWQ9JnF1b3Q7 ZnVsbGNhcHRpb24mcXVvdDsmZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7dHhwOnNtZF9nYWxsZXJ5 IGNhdGVnb3J5PSZxdW90O2FuaW1hbHMmcXVvdDsKICBmb3JtPSZxdW90O2dhbGxlcnkmcXVv dDsgcGFnZWZvcm09JnF1b3Q7Z2FsbGVyeV9uYXYmcXVvdDsKICBsaW1pdD0mcXVvdDs1JnF1 b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGUgJiM4MjE2O2dhbGxlcnkmIzgyMTc7 IGZvcm0gaXMgaWRlbnRpY2FsIHRvIHRoZSBvbmUgaW4gPGEgaHJlZj0iI2VnNCI+ZXhhbXBs ZSA0PC9hPiwgd2hpbGUgeW91ciBnYWxsZXJ5X25hdiBmb3JtIG1pZ2h0IGxvb2sgbGlrZSB0 aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtk aXYgY2xhc3M9JnF1b3Q7dG90YWwmcXVvdDsmZ3Q7IyBvZiBwaWNzOiB7dG90YWxpbWFnZXN9 Jmx0Oy9kaXYmZ3Q7CiAgICAge25hdmZpcnN0fSB7bmF2cHJldn0KICAgICB7bmF2ZWFybGll cn0ge25hdnRoaXN9IHtuYXZsYXRlcn0KICAgICB7bmF2bmV4dH0ge25hdmxhc3R9CjwvY29k ZT48L3ByZT4KCgk8cD5UaGF0IG1pZ2h0IHJlbmRlciBzb21ldGhpbmcgc2ltaWxhciB0byB0 aGlzIGJlbG93IHRoZSB0aHVtYnM6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNs YXNzPSJibG9jayI+IyBvZiBwaWNzOiAzOAogICAgIEZpcnN0ICZsdDsgMSAyIDMgNCA1IDYg NyA4ICZndDsgTGFzdAo8L2NvZGU+PC9wcmU+CgoJPGgzIGlkPSJlZzYiPkV4YW1wbGUgNjog b25jaGFuZ2U8L2gzPgoKCTxwPklmIHlvdSB3YW50IHRvIHNpbXVsYXRlIG11bHRpcGxlIGdh bGxlcmllcyBmcm9tIG9uZSBzbWRfZ2FsbGVyeSB0YWcgeW91IGNhbiB1c2UgPGNvZGU+b25j aGFuZ2U8L2NvZGU+IHRvICYjODIyMDt3YXRjaCYjODIyMTsgZm9yIHdoZW4gY2VydGFpbiBh dHRyaWJ1dGVzIG9mIGltYWdlcyBjaGFuZ2UgYW5kIGluc2VydCBzcGVjaWFsIHRhZ3MgPGVt Pm9ubHkgd2hlbiBzb21ldGhpbmcgY2hhbmdlczwvZW0+LiBJbiB0aGlzIHJlZ2FyZCBpdCBh Y3RzIGxpa2UgYSBzb3VwZWQtdXAgdmVyc2lvbiBvZiA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQ PC9zcGFuPiYjODIxNztzIGJ1aWx0LWluIDxjb2RlPiZsdDt0eHA6aWZfZGlmZmVyZW50Jmd0 OzwvY29kZT4gdGFnLjwvcD4KCgk8cD5Zb3UgY2FuIHdhdGNoIHRoZSB1c3VhbCB0aGluZ3Mg bGlrZSA8Y29kZT5jYXRlZ29yeTwvY29kZT4sIDxjb2RlPmF1dGhvcjwvY29kZT4sIDxjb2Rl PndpZHRoPC9jb2RlPiwgPGNvZGU+aGVpZ2h0PC9jb2RlPiwgPGNvZGU+ZXh0PC9jb2RlPmVu c2lvbiBhbmQgc28gb246PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJi bG9jayI+Jmx0O3R4cDpzbWRfZ2FsbGVyeQogICAgIGNhdGVnb3J5PSZxdW90O2JpcmRzLCBm aXNoJnF1b3Q7IGZvcm09JnF1b3Q7Z2FsbGVyeSZxdW90OwogICAgIG9uY2hhbmdlPSZxdW90 O2NhdGVnb3J5X3RpdGxlJnF1b3Q7CiAgICAgb25jaGFuZ2V3cmFwdGFnPSZxdW90O2gzJnF1 b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5TaW5jZSB0aGUgcGx1Z2luIG5vcm1hbGx5 IHNvcnRzIGJ5IGNhdGVnb3J5LCB0aGlzIHdpbGwgaGF2ZSB0aGUgZWZmZWN0IG9mIGFkZGlu ZyBvbmUgcmVwbGFjZW1lbnQgdGFnIDxjb2RlPntvbmNoYW5nZTpjYXRlZ29yeV90aXRsZX08 L2NvZGU+IGF0IHRoZSB2ZXJ5IGJlZ2lubmluZyBvZiB0aGUgdGh1bWIgbGlzdCBhbmQgYWxz byB3aGVuIHRoZSBjYXRlZ29yeSBzd2l0Y2hlcyBmcm9tICYjODIxNjtiaXJkcyYjODIxNzsg dG8gJiM4MjE2O2Zpc2gmIzgyMTc7LiBUaHVzIHlvdXIgZ2FsbGVyeSBmb3JtIGNvdWxkIGJl OjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPntvbmNoYW5n ZTpjYXRlZ29yeV90aXRsZX0KJmx0O2EgaHJlZj0mcXVvdDt7dXJsfSZxdW90OyByZWw9JnF1 b3Q7bGlnaHRib3gte2NhdGVnb3J5fSZxdW90OyZndDsKe29iamVjdH0KJmx0Oy9hJmd0Owo8 L2NvZGU+PC9wcmU+CgoJPHA+VGhhdCB3b3VsZCBtYWtlIHR3byBsaWdodGJveGFibGUgc2V0 cyBvZiB0aHVtYm5haWxzIHdpdGggYSBoZWFkaW5nIDMgYWJvdmUgZWFjaCBncm91cCBjb250 YWluaW5nIHRoZSBjYXRlZ29yeSB0aXRsZS48L3A+CgoJPHA+Tm90ZSB0aGF0IGlmIHlvdSBh ZGQgPGNvZGU+dGh1bWJsaW1pdD0mcXVvdDsxJnF1b3Q7PC9jb2RlPiB0byB0aGUgc21kX2dh bGxlcnkgdGFnIHlvdSBjYW4gc2hvdyBqdXN0IG9uZSB0aHVtYm5haWwgaW4gZWFjaCBncm91 cCwgd2l0aCBoZWFkaW5ncyBhYm92ZSBlYWNoIHRodW1iLiBWaXNpdG9ycyBjbGlja2luZyB0 aGUgdGh1bWIgd2lsbCBsYXVuY2ggdGhlIGxpZ2h0Ym94IGFuZCBiZSBhYmxlIHRvIGJyb3dz ZSB0aGUgcmVsZXZhbnQgY2F0ZWdvcnkuPC9wPgoKCTxwPkFuIGV4dHJhIHBhaXIgb2YgcmVw bGFjZW1lbnQgdGFncyBhcmUgYXZhaWxhYmxlIGlmIHlvdSB3aXNoIHRvIHdyYXAgdGhlIG9i amVjdHMgdGhlbXNlbHZlcyB0byBncm91cCB0aGVtLiBVc2UgdGhlIDxjb2RlPmdyb3VwdGFn PC9jb2RlPiBhbmQgPGNvZGU+Z3JvdXBjbGFzczwvY29kZT4gYXR0cmlidXRlcyB0byBzZXQg aXQgdXAsIHRoZW4gdHdvIG5ldyByZXBsYWNlbWVudCB0YWdzIGNhbGxlZCA8Y29kZT5ncm91 cHRhZ3N0YXJ0PC9jb2RlPiBhbmQgPGNvZGU+Z3JvdXB0YWdlbmQ8L2NvZGU+IGJlY29tZSBh dmFpbGFibGUuIFRoZXkgYXJlIGNvbmRpdGlvbmFsIGFuZCBhcmUgb25seSBwb3B1bGF0ZWQg d2hlbiB0aGUgYXR0cmlidXRlcyB5b3UgYXJlIHdhdGNoaW5nL3NvcnRpbmcgYnkgY2hhbmdl LiBVc2UgaXQgbGlrZSB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFz cz0iYmxvY2siPiZsdDt0eHA6c21kX2dhbGxlcnkgaWQ9JnF1b3Q7P2FydGljbGVfaW1hZ2Um cXVvdDsKICAgICBjYXRlZ29yeT0mcXVvdDtiaXJkcywgZmlzaCZxdW90OyBmb3JtPSZxdW90 O2dhbGxlcnkmcXVvdDsKICAgICBvbmNoYW5nZT0mcXVvdDtjYXRlZ29yeV90aXRsZSZxdW90 OwogICAgIG9uY2hhbmdld3JhcHRhZz0mcXVvdDtoMyZxdW90OwogICAgIGdyb3VwdGFnPSZx dW90O2RpdiZxdW90OyBncm91cGNsYXNzPSZxdW90O2JveCZxdW90OyAvJmd0Owo8L2NvZGU+ PC9wcmU+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj57b25jaGFu Z2U6Y2F0ZWdvcnlfdGl0bGV9Cntncm91cHRhZ3N0YXJ0fQombHQ7YSBocmVmPSZxdW90O3t1 cmx9JnF1b3Q7IHJlbD0mcXVvdDtsaWdodGJveC17Y2F0ZWdvcnl9JnF1b3Q7Jmd0Owp7b2Jq ZWN0fQombHQ7L2EmZ3Q7Cntncm91cHRhZ2VuZH0KPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGUg dGhhdCB5b3UgY2FuIG1vdmUgdGhlIDxjb2RlPmdyb3VwdGFnc3RhcnQ8L2NvZGU+IHRvIHN1 cnJvdW5kIHRoZSA8Y29kZT5vbmNoYW5nZTwvY29kZT5kIHRpdGxlIGlmIHlvdSB3aXNoLjwv cD4KCgk8aDMgaWQ9ImVnNyI+RXhhbXBsZSA3OiBzbWRfZXZlcnk8L2gzPgoKCTxwPllvdSBj YW4gYWxzbyB0cmlnZ2VyIGFuIG9uY2hhbmdlIGV2ZW50IGV2ZXJ5IG50aCBpbWFnZTo8L3A+ Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9n YWxsZXJ5IGNhdGVnb3J5PSZxdW90O2Zyb250cGFnZSZxdW90OwogICAgIGxpbWl0PSZxdW90 OzkmcXVvdDsgc29ydD0mcXVvdDtyYW5kb20mcXVvdDsKICAgICBvbmNoYW5nZT0mcXVvdDtz bWRfZXZlcnk6MyZxdW90OwogICAgIGdyb3VwdGFnPSZxdW90O3VsJnF1b3Q7IGdyb3VwY2xh c3M9JnF1b3Q7c2xpZGVzaG93JnF1b3Q7Jmd0Owp7Z3JvdXB0YWdzdGFydH0KICAgJmx0O2xp Jmd0OwogICAgICAmbHQ7YSBocmVmPSZxdW90OyZsdDt0eHA6cGVybWxpbmsgaWQ9JnF1b3Q7 e2FsdH0mcXVvdDsgLyZndDsmcXVvdDsmZ3Q7CiAgICAgICAgICZsdDtpbWcgc3JjPSZxdW90 O3t0aHVtYnVybH0mcXVvdDsgYWx0PSZxdW90OyZxdW90OyAvJmd0OwogICAgICAgICAmbHQ7 c3BhbiZndDt7dGl0bGV9Jmx0Oy9zcGFuJmd0OwogICAgICAmbHQ7L2EmZ3Q7CiAgICZsdDsv bGkmZ3Q7Cntncm91cHRhZ2VuZH0KJmx0Oy90eHA6c21kX2dhbGxlcnkmZ3Q7CjwvY29kZT48 L3ByZT4KCgk8aDMgaWQ9ImVnOCI+RXhhbXBsZSA4OiB1bmNhdGVnb3JpemVkIGltYWdlczwv aDM+CgoJPHA+U29tZXRpbWVzIHlvdSBtaWdodCB3aXNoIHRvIGV4dHJhY3QgaW1hZ2VzIHRo YXQgZG8gbm90IGhhdmUgYSBjYXRlZ29yeSBhc3NpZ25lZC4gWW91IG5lZWQgdG8gdXNlIHRo ZSBzcGVjaWFsIHZhbHVlIDxjb2RlPlNNRF9FTVBUWTwvY29kZT4gZm9yIHRoaXM6PC9wPgoK PHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZ2Fs bGVyeSBjYXRlZ29yeT0mcXVvdDtTTURfRU1QVFksIHNob2VzJnF1b3Q7IC8mZ3Q7CjwvY29k ZT48L3ByZT4KCgk8cD5Zb3UgY2FuIGFsc28gbmVnYXRlIHRoZSBsb2dpYyBzbyB5b3UgY2Fu IGV4dHJhY3QgYWxsIGltYWdlcyB0aGF0IGhhdmUgc29tZSAoYW55KSBjYXRlZ29yeSBhc3Np Z25lZCB0byB0aGVtOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxv Y2siPiZsdDt0eHA6c21kX2dhbGxlcnkgY2F0ZWdvcnk9JnF1b3Q7IVNNRF9FTVBUWSZxdW90 OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPGgzIGlkPSJlZzkiPkV4YW1wbGUgOToge29iamVj dH0gYW5kIG9iamVjdGZvcm08L2gzPgoKCTxwPlRoZSBkZWZhdWx0IDxjb2RlPntvYmplY3R9 PC9jb2RlPiBvdXRwdXRzIGEgc2ltcGxlIGh5cGVybGlua2VkIHRodW1ibmFpbC4gSWYgeW91 IHdhbnQgc29tZXRoaW5nIGEgYml0IG1vcmUgZXhvdGljLCBsaWtlIGxhdW5jaGluZyBhIHNo YWRvd2JveCBlZmZlY3QgZnJvbSBhIHNpbmdsZSB0aHVtYm5haWwgdGhhdCBhbHNvIGhhcyB0 aGUgY2FwdGlvbiBiZW5lYXRoIGl0LCB5b3UgbmVlZCB0byBjdXN0b21pc2UgdGhlIDxjb2Rl PntvYmplY3R9PC9jb2RlPiB2aWEgdGhlIDxjb2RlPm9iamVjdGZvcm08L2NvZGU+IGF0dHJp YnV0ZS4gUHV0IGEgbGlzdCBvZiBpbWFnZSBJRHMgaW4geW91ciBhcnRpY2xlIGltYWdlIGZp ZWxkIGFuZCB0aGVuOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxv Y2siPiZsdDt0eHA6c21kX2dhbGxlcnkgdGh1bWJsaW1pdD0mcXVvdDsxJnF1b3Q7CiAgICAg aWQ9JnF1b3Q7P2FydGljbGVfaW1hZ2UmcXVvdDsgd3JhcHRhZz0mcXVvdDtkaXYmcXVvdDsK ICAgICBjbGFzcz0mcXVvdDt0aHVtYnMmcXVvdDsgb2JqZWN0Zm9ybT0mcXVvdDtteV9vYmom cXVvdDsKICAgICBjb21ibz0mcXVvdDthcnRpZDo/dGhpc2lkJnF1b3Q7Jmd0OwogICZsdDth IHJlbD0mcXVvdDtzaGFkb3dib3hbe2FydGlkfV07CiAgICAgb3B0aW9ucz17Y291bnRlclR5 cGU6JiMzOTtza2lwJiMzOTssCiAgICAgY29udGludW91czp0cnVlLAogICAgIGFuaW1hdGU6 ZmFsc2UsCiAgICAgYW5pbVNlcXVlbmNlOiYjMzk7c3luYyYjMzk7fSZxdW90OwogICAgIGhy ZWY9JnF1b3Q7e3VybH0mcXVvdDsKICAgICB0aXRsZT0mcXVvdDt7YWx0fSZxdW90OyZndDt7 b2JqZWN0fSZsdDsvYSZndDsKJmx0Oy90eHA6c21kX2dhbGxlcnkmZ3Q7CjwvY29kZT48L3By ZT4KCgk8cD5BbmQgaW4gPGNvZGU+bXlfb2JqPC9jb2RlPiwgeW91IGNvdWxkIHB1dDo8L3A+ Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnRodW1i bmFpbCBpZD0mcXVvdDt7aWR9JnF1b3Q7IC8mZ3Q7Jmx0O2JyIC8mZ3Q7e3RpdGxlfQo8L2Nv ZGU+PC9wcmU+CgoJPHA+Tm90aWNlIGhvdyB0aGUgcmVwbGFjZW1lbnQgdGFncyBzdGlsbCB3 b3JrIGluIHRoZSA8Y29kZT5vYmplY3Rmb3JtPC9jb2RlPj8gVGhpcyBhbGxvd3MgeW91IHRv IGJ1aWxkIHVwIGEgY29tcGxldGUgbGF5b3V0IGZvciB0aGUgbGF1bmNoYWJsZSB0aHVtYm5h aWwgYW5kIGhhdmUgaXQgb25seSByZW5kZXJlZCBvbmNlIG9uIHRoZSBwYWdlLiBUaGUgcmVz dCBvZiB0aGUgY29udGFpbmVyIGluIHRoaXMgZXhhbXBsZSByZW5kZXJzIGFsbCB0aGUgJiM4 MjIwO2hpZGRlbiYjODIyMTsgaW1hZ2VzIGluIHRoZSBzaGFkb3dib3ggZ2FsbGVyeS48L3A+ CgoJPGgzIGlkPSJlZzEwIj5FeGFtcGxlIDEwOiA8Y29kZT5jb3VudGZvcm08L2NvZGU+PC9o Mz4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21k X2dhbGxlcnkgY2F0ZWdvcnk9JnF1b3Q7YW5pbWFscyZxdW90OwogICAgIGNvdW50Zm9ybT0m cXVvdDsxOmdhbF9hOnNtZF9hYm92ZSwKICAgICAgIHt0b3RhbGltYWdlc306Z2FsX2MsCiAg ICAgICBzbWRfZXZlcnk6Mzohe3RvdGFsaW1hZ2VzfTpnYWxfYiZxdW90OwogICAgIGNvdW50 cG9zPSZxdW90O2JlbG93JnF1b3Q7Jmd0OwombHQ7dHhwOnRodW1ibmFpbCBpZD0mcXVvdDt7 aWR9JnF1b3Q7IC8mZ3Q7CiZsdDsvdHhwOnNtZF9nYWxsZXJ5Jmd0Owo8L2NvZGU+PC9wcmU+ CgoJPHA+Tm90ZSB0aGF0IDxjb2RlPmNvdW50cG9zPC9jb2RlPiBpcyBzZXQgdG8gPGNvZGU+ YmVsb3c8L2NvZGU+IGluIHRoaXMgZXhhbXBsZSBzbyBhbGwgb3V0cHV0IGFwcGVhcnMgPGVt PmFmdGVyPC9lbT4gdGhlIGdpdmVuIGltYWdlcy4gSWYgeW91IG1hZGUgdGhlIGZvbGxvd2lu ZyB0aHJlZSBmb3JtcywgeW91ciB0YWcgd291bGQgc3BsaXQgdGhlIGdhbGxlcnkgaW50byAm IzgyMTY7cm93cyYjODIxNzsgb2YgMyBpbWFnZXM6PC9wPgoKCTxwPmdhbF9hOiA8Y29kZT4m bHQ7ZGl2IGNsYXNzPSZxdW90O25ld3JvdyZxdW90OyZndDs8L2NvZGU+PGJyIC8+CmdhbF9i OiA8Y29kZT4mbHQ7L2RpdiZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90O25ld3JvdyZxdW90OyZn dDs8L2NvZGU+PGJyIC8+CmdhbF9jOiA8Y29kZT4mbHQ7L2RpdiZndDs8L2NvZGU+PC9wPgoK CTxwPkJyZWFraW5nIHRoZSA8Y29kZT5jb3VudGZvcm08L2NvZGU+IGF0dHJpYnV0ZSBkb3du IGludG8gaXRzIGNvbXBvbmVudHMsIHlvdSBjYW4gc2VlIHRoYXQ6PC9wPgoKCTx1bD4KCQk8 bGk+PGNvZGU+MTpnYWxfYTpzbWRfYWJvdmU8L2NvZGU+IGFkZHMgdGhlICYjODIxNjtuZXdy b3cmIzgyMTc7IGRpdiBhYm92ZSB0aGUgZmlyc3QgaW1hZ2U8L2xpPgoJCTxsaT48Y29kZT57 dG90YWxpbWFnZXN9OmdhbF9jPC9jb2RlPiBhZGRzIHRoZSBjbG9zaW5nIGRpdiBiZWxvdyB0 aGUgbGFzdCBpbWFnZSBvbiB0aGlzIHBhZ2U8L2xpPgoJCTxsaT48Y29kZT5zbWRfZXZlcnk6 Mzohe3RvdGFsaW1hZ2VzfTpnYWxfYjwvY29kZT4gYWRkcyBhIGNsb3NpbmcgYW5kIHRoZW4g YW4gb3BlbmluZyBkaXYgYWZ0ZXIgZXZlcnkgM3JkIGltYWdlLCA8ZW0+ZXhjZXB0PC9lbT4g b24gdGhlIGxhc3QgaW1hZ2UuIElmIHdlIGRpZG4mIzgyMTc7dCBwdXQgdGhlIGV4Y2VwdGlv biBpbiwgYW5kIHlvdSBoYWQgMTIgdGh1bWJuYWlscyBpbiB5b3VyIGdhbGxlcnkgKHdoaWNo IGlzIGRpdmlzaWJsZSBieSAzISkgeW91IHdvdWxkIHNlZSB0aGUgY29udGVudHMgb2YgZ2Fs MiBhZnRlciB0aGUgbGFzdCBpbWFnZSBhcyB3ZWxsPC9saT4KCTwvdWw+CgoJPGgzIGlkPSJl ZzExIj5FeGFtcGxlIDExOiBVc2luZyBhbiBvbmNoYW5nZSBmb3JtPC9oMz4KCjxwcmUgY2xh c3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2dhbGxlcnkKICAg ICBjYXRlZ29yeT0mcXVvdDtiaXJkcywgZmlzaCZxdW90OwogICAgIG9uY2hhbmdlPSZxdW90 O2NhdGVnb3J5X3RpdGxlOm9jX2Zvcm0mcXVvdDsmZ3Q7CntvbmNoYW5nZTpjYXRlZ29yeV90 aXRsZX0KJmx0O2EgaHJlZj0mcXVvdDt7dXJsfSZxdW90OyByZWw9JnF1b3Q7bGlnaHRib3gt e2NhdGVnb3J5fSZxdW90OyZndDsKe29iamVjdH0KJmx0Oy9hJmd0OwombHQ7L3R4cDpzbWRf Z2FsbGVyeSZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPmFuZCBpbiBmb3JtIDxjb2RlPm9jX2Zv cm08L2NvZGU+OjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2si PiZsdDtkaXYgaWQ9JnF1b3Q7e2NhdGVnb3J5fSZxdW90OwogICBjbGFzcz0mcXVvdDtjYXRl Z29yeSZxdW90OyZndDt7Y2F0ZWdvcnlfdGl0bGV9Jmx0Oy9kaXYmZ3Q7CjwvY29kZT48L3By ZT4KCgk8aDIgaWQ9ImNoYW5nZWxvZyI+Q2hhbmdlbG9nPC9oMj4KCgk8cD5BbGwgYXZhaWxh YmxlIHZlcnNpb25zIGFuZCBjaGFuZ2VzIGFyZSBsaXN0ZWQgaGVyZS48L3A+CgoJPHA+PHN0 cm9uZz5CZXRhPC9zdHJvbmc+PC9wPgoKCTx1bD4KCQk8bGk+MTQgRmViIDA4IHwgMC4xIHwg SW5pdGlhbCByZWxlYXNlICYjODIxMTsgSGFwcHkgVmFsZW50aW5lcyBEYXkgOi0pPC9saT4K CQk8bGk+MTkgRmViIDA4IHwgMC4yIHwgQWRkZWQge2dhbGxlcnlpZH0gKHRoYW5rcyBybG9h ZGVycm8pIGFuZCBzb21lIHNrZWxldG9uIGRvY3M8L2xpPgoJPC91bD4KCgk8cD48c3Ryb25n Pk9mZmljaWFsPC9zdHJvbmc+PC9wPgoKCTx1bD4KCQk8bGk+MTEgTWFyIDA4IHwgMC4zIHwg T2ZmaWNpYWwgcHVibGljIHJlbGVhc2UuIEZpeGVkIHNpbGx5IGVtcHR5IGZpZWxkIGJ1Zzsg YWRkZWQge2NvdW50ZXJ9LCB7aW5kZXh9IGFuZCB0aGUgdG90YWxzIChhbGwgdGhhbmtzIGph a29iKTwvbGk+CgkJPGxpPjE1IE1hciAwOCB8IDAuMzEgfCBGaXhlZCBhIGNvdXBsZSBvZiB1 bmRlZmluZWQgaW5kZXhlcyBhbmQgYWRkZWQge2NhdGVnb3J5X3RpdGxlfSAodGhhbmtzIGpz dHViYnMpPC9saT4KCQk8bGk+MTcgTWFyIDA4IHwgMC4zMiB8IEZpeGVkIGFub3RoZXIgdW5k ZWZpbmVkIGluZGV4IGFuZCByZW1vdmVkIGJvZ3VzIGNhbGwgdG8gc21kX2xpYiAoYm90aCB0 aGFua3Mgc2VjdW5kYXIpPC9saT4KCQk8bGk+MjEgTWFyIDA4IHwgMC4zMyB8IERpZCB2MC4z MSBwcm9wZXJseSwgaW5jbHVkaW5nIHRhYmxlIHByZWZpeCAodGhhbmtzIG5hcmRvKTwvbGk+ CgkJPGxpPjAxIEFwciAwOCB8IDAuMzQgfCBGaXhlZCA8c3BhbiBjbGFzcz0iY2FwcyI+U1FM PC9zcGFuPiBwYXJlbnRoZXNpcyBidWcgOyBhZGRlZCBlbXB0eWNsYXNzIGFuZCB7bWF4aW1h Z2VzfSAodGhhbmtzIHRoZV9naG9zdCk8L2xpPgoJCTxsaT4wOCBBcHIgMDggfCAwLjQgfCBD aGFuZ2VkIHRodW1iIHRvIGFsbG93IHRodW1iL2Z1bGxzaXplIHN3YXBwaW5nIDsgQWRkZWQg dGh1bWJjaGFuZ2UsIHRodW1iY2hhbmdld3JhcHRhZywgdGh1bWJjaGFuZ2VjbGFzcywge3Ro dW1iaW5kZXh9LCB7dGh1bWJjb3VudGVyfSBhbmQgdGhlIHtjaGFuZ2VkOip9IHJlcGxhY2Vt ZW50IHRhZ3MgKHRoYW5rcyBmdWxzKTwvbGk+CgkJPGxpPjI2IE1heSAwOCB8IDAuNDEgfCBG aXhlZCBEaXJlY3Rvcnkgc2VwYXJhdG9yICh0aGFua3MgY3VkYSkgOyBhZGRlZCByYXcgcGFn ZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPnMgdG8gdGhlIG5hdiByZXBsYWNlbWVu dCBhcnJheSBhbmQgbWFkZSB0aGUgbmF2IGFycmF5IGF2YWlsYWJsZSBpbiB0aGUgc3RhbmRh cmQgcmVwbGFjZW1lbnRzIGFycmF5ICh0aGFua3MgdmlzdWFscGVvcGxlKTwvbGk+CgkJPGxp PjI3IE1heSAwOCB8IDAuNDIgfCBBZGRlZCBwYWdlcG9zIGFuZCBtYWRlIHBhZ2UgYmxvY2tz IGluZGVwZW5kZW50IG9mIHRodW1iIGJsb2NrICh0aGFua3MgZHVjaGFtcCk8L2xpPgoJCTxs aT4xMCBKdW4gMDggfCAwLjQzIHwgRml4ZWQgc29ydD0mIzgyMjA7Zml4ZWQmIzgyMjE7IHdo ZW4gdXNpbmcgbGltaXQgKHRoYW5rcyByb2Jpbjc0NikgOyBhZGRlZCBwZXItZ3JvdXAgb25j aGFuZ2Ugd3JhcHBpbmcgYW5kIGFsbG93ZWQgZml4ZWQgc29ydGluZyBvZiBjYXRlZ29yaWVz ICh0aGFua3MganN0dWJicykgOyBkZXByZWNhdGVkIHRodW1iY2hhbmdlKiBhbmQgcmVuYW1l ZCBhcyBvbmNoYW5nZSogOyBmaXhlZCAkaWR4IGNvdW50ZXIgcHJvYmxlbTwvbGk+CgkJPGxp PjEwIEp1biAwOCB8IDAuNDQgfCBBdHRlbXB0ICMyIGF0IHBlci1ncm91cCBvbmNoYW5nZSB3 cmFwcGluZyAodGhhbmtzIGFnYWluIGpzdHViYnMpPC9saT4KCQk8bGk+MTQgSnVsIDA4IHwg MC40NSB8IEZpeGVkIGxhY2sgb2Ygb3V0cHV0IHdoZW4gbm90IHVzaW5nIGNhdGVnb3JpZXMg KHRoYW5rcyByb2Jpbjc0Nik8L2xpPgoJCTxsaT4xNiBOb3YgMDggfCAwLjQ2IHwgQWRkZWQg Y29sbGF0ZWRlbGltICh0aGFua3MgY3VyaW91eikgOyBmaXhlZCAoSSBob3BlKSB0aGUgY2F0 ZWdvcnkgLyBpZCBidWcgZnJvbSAwLjQ0IGFuZCAwLjQ1ICh0aGFua3Mgcm9iaW43NDYvbmFy ZG8pPC9saT4KCQk8bGk+MTMgRmViIDA5IHwgMC41IHwgUmVxdWlyZXMgc21kX2xpYiA7IGFk ZGVkIDxzcGFuIGNsYXNzPSJjYXBzIj5NTFA8L3NwYW4+IHN1cHBvcnQgKHRoYW5rcyBuZXQt Y2FydmVyKSA7IGFkZGVkIHN1cHBvcnQgZm9yIGRpc3BsYXlpbmcgdW5jYXRlZ29yaXNlZCBp bWFnZXMgKHRoYW5rcyB4emFtZW4pIDsgJiM4MjE2Oz8mIzgyMTc7IHZhcnMgZXhwYW5kZWQg dG8gbGluayAvIGltYWdlIC8gZmlsZSAvIDxjb2RlPiZsdDt0eHA6dmFyaWFibGUgLyZndDs8 L2NvZGU+IGFuZCA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB2YXJpYWJsZSA7IG5l dyBhdHRyaWJ1dGVzOiA8Y29kZT5lc2NhcGU8L2NvZGU+LCA8Y29kZT5odG1sX2lkPC9jb2Rl PiwgPGNvZGU+Zm9ybWF0PC9jb2RlPiwgPGNvZGU+Z210PC9jb2RlPiwgPGNvZGU+bGFuZzwv Y29kZT4gKHRoYW5rcyBtYW5pcXVpKSwgPGNvZGU+c3RyaWN0ZmllbGRzPC9jb2RlPiA7IGlt cHJvdmVkIDxjb2RlPntvYmplY3R9PC9jb2RlPiBzdXBwb3J0IGFuZCBhZGRlZCA8Y29kZT5v YmplY3Rmb3JtPC9jb2RlPiAodGhhbmtzIHR5ZS9ydnR1cm5hZ2UpIDsgPGNvZGU+e3RpdGxl fTwvY29kZT4gPT0gPGNvZGU+e2NhcHRpb259PC9jb2RlPiBhdCBsYXN0ISA7IHJlbW92ZWQg PGNvZGU+dGh1bWJjaGFuZ2U8L2NvZGU+KiBhdHRyaWJ1dGVzIDsgaW1wcm92ZWQgc3VwcG9y dCBmb3IgdGFibGUgZXh0ZW5zaW9ucyAodmlhIHRoZSA8Y29kZT5jb2x1bW5zPC9jb2RlPiBh dHRyaWJ1dGU6IHRoYW5rcyBSZWRGb3gpIDsgYWRkZWQgPGNvZGU+c21kX2V2ZXJ5PC9jb2Rl PiBzeW50YXggdG8gPGNvZGU+b25jaGFuZ2U8L2NvZGU+ICh0aGFua3MgamFrb2IpIDsgZml4 ZWQgb2Zmc2V0IGJ1ZyAodGhhbmtzIGZlcmFnbm9saSk8L2xpPgoJCTxsaT4wMSBNYXIgMDkg fCAwLjUxIHwgQWRkZWQgPGNvZGU+Y291bnRmb3JtPC9jb2RlPiBhbmQgPGNvZGU+Y291bnRw b3M8L2NvZGU+IDsgZml4ZWQgPGNvZGU+e2hhc3RodW1ifTwvY29kZT4gd2FybmluZzwvbGk+ CgkJPGxpPjE2IE5vdiAwOSB8IDAuNTIgfCA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFu PiA0LjIuMCBvbmx5IDsgYWRkZWQgZGF0YWJhc2UgdGh1bWJuYWlsIGhlaWdodCBhbmQgd2lk dGggc3VwcG9ydCA7IGFkZGVkIDxjb2RlPmFzcGVjdDwvY29kZT4sIDxjb2RlPmRpbWVuc2lv bnM8L2NvZGU+LCA8Y29kZT5hdXRob3I8L2NvZGU+LCA8Y29kZT5leHRlbnNpb248L2NvZGU+ IGFuZCA8Y29kZT5pbWdzaXplPC9jb2RlPiBhdHRyaWJ1dGVzIDsgZml4ZWQgcXVvdGUgcGFy c2luZyBpbiA8Y29kZT5lc2NhcGU8L2NvZGU+IGF0dHJpYnV0ZSBhbmQgd2FybmluZyB3aGVu IHVzaW5nIDxjb2RlPmZpeGVkPC9jb2RlPiBzb3J0aW5nIChib3RoIHRoYW5rcyBtYW5pcXVp KTwvbGk+CgkJPGxpPjAxIEphbiAxMCB8IDAuNTMgfCBBZGRlZCBvbmNoYW5nZSBmb3JtIGNh cGFiaWxpdHkgKHRoYW5rcyBNYXR0RCk8L2xpPgoJCTxsaT4wMSBGZWIgMTAgfCAwLjU0IHwg TXVsdGlwbGUgaW1hZ2VzIG5vdCBkaXNwbGF5ZWQgaWYgbXVsdGlwbGUgY2F0ZWdvcmllcyBl eGlzdCB3aXRoIHRoZSBzYW1lIG5hbWUgYW5kIGRpZmZlcmVudCB0aXRsZTwvbGk+Cgk8L3Vs PgoKCTxoMiBpZD0iY3JlZGl0cyI+Q3JlZGl0czwvaDI+CgoJPHA+VGhpcyBwbHVnaW4gd291 bGRuJiM4MjE3O3QgaGF2ZSBleGlzdGVkIHdpdGhvdXQgdGhlIGF3ZXNvbWUgbWluZCBvZiBS b2JlcnQgV2V0emxtYXlyLiBIaXMgd2V0X2Zvcl9lYWNoX2ltYWdlIHBsdWdpbiBpcyB0cnVl IGdlbml1czsgdGhpcyBzaW1wbHkgc3RhbmRzIG9uIHRoZSBzaG91bGRlcnMgb2YgdGhhdCBp ZGVhIGFuZCByb2xscyBpbiBhIHNvdXBlZCB1cCB2ZXJzaW9uIG9mIHRoZSB0aHVtYm5haWwg Z2VuZXJhdGlvbiBlbmdpbmUgZnJvbSBzbWRfc2xpbWJveC4gVG8gdGhhdCBlbmQsIHRoZSBw bHVnaW4gaXMgYWxzbyBpbmRlYnRlZCB0byBhbnlvbmUgd2hvIGhhcyBwb3N0ZWQgZmVhdHVy ZXMgb3IgYnVnIHJlcG9ydHMgdG8gbWUgb3IgdGhlIHNtZF9zbGltYm94IHRocmVhZC4gWW91 JiM4MjE3O3JlIGFsbCBtYXJ2ZWxsb3VzLjwvcD4KCjwvZGl2Pgo8IS0tICoqKiBCRUdJTiBQ TFVHSU4gQ1NTICoqKiAtLT4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KI3NtZF9oZWxwIHsg bGluZS1oZWlnaHQ6MS41IDt9CiNzbWRfaGVscCBjb2RlIHsgZm9udC13ZWlnaHQ6Ym9sZDsg Zm9udDogMTA1JS8xMzAlICJDb3VyaWVyIE5ldyIsIGNvdXJpZXIsIG1vbm9zcGFjZTsgYmFj a2dyb3VuZC1jb2xvcjogI0ZGRkZDQzt9CiNzbWRfaGVscCBjb2RlLmJsb2NrIHsgZm9udC13 ZWlnaHQ6bm9ybWFsOyBib3JkZXI6MXB4IGRvdHRlZCAjOTk5OyBiYWNrZ3JvdW5kLWNvbG9y OiAjZjBlNjhjOyBkaXNwbGF5OmJsb2NrOyBtYXJnaW46MTBweCAxMHB4IDIwcHg7IHBhZGRp bmc6MTBweDsgfQojc21kX2hlbHAgYTpsaW5rLCAjc21kX2hlbHAgYTp2aXNpdGVkIHsgY29s b3I6ICMwMGM7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgYm9yZGVyLWJvdHRvbTogMXB4IHNv bGlkIGJsdWU7IHBhZGRpbmctYm90dG9tOjFweDt9CiNzbWRfaGVscCBhOmhvdmVyLCAjc21k X2hlbHAgYTphY3RpdmUgeyBjb2xvcjogYmx1ZTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBi b3JkZXItYm90dG9tOiAycHggc29saWQgYmx1ZTsgcGFkZGluZy1ib3R0b206MXB4O30KI3Nt ZF9oZWxwIGgxIHsgY29sb3I6ICMzNjk7IGZvbnQ6IDIwcHggR2VvcmdpYSwgc2Fucy1zZXJp ZjsgbWFyZ2luOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0KI3NtZF9oZWxwIGgyIHsgYm9y ZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsYWNrOyBwYWRkaW5nOjEwcHggMCAwOyBjb2xvcjog IzM2OTsgZm9udDogMTdweCBHZW9yZ2lhLCBzYW5zLXNlcmlmOyB9CiNzbWRfaGVscCBoMyB7 IGNvbG9yOiAjMDc5OyBmb250OiBib2xkIDEycHggQXJpYWwsIHNhbnMtc2VyaWY7IGxldHRl ci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBweCAwIDA7dGV4dC10cmFuc2Zvcm06IHVwcGVy Y2FzZTsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9CiNzbWRfaGVscCBoNCB7IGZvbnQ6 IGJvbGQgMTFweCBBcmlhbCwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDFweDsgbWFy Z2luOiAxMHB4IDAgMCA7dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfQojc21kX2hlbHAg LmF0bm0geyBmb250LXdlaWdodDpib2xkOyBjb2xvcjojMzNkOyB9CiNzbWRfaGVscCAubWFu ZCB7IGJhY2tncm91bmQ6I2VlZTsgYm9yZGVyOjFweCBkb3R0ZWQgIzk5OTsgfQojc21kX2hl bHAgdGFibGUge3dpZHRoOjkwJTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmctYm90dG9t OjFlbTt9CiNzbWRfaGVscCB0ZCwgI3NtZF9oZWxwIHRoIHtib3JkZXI6MXB4IHNvbGlkICM5 OTk7IHBhZGRpbmc6LjVlbSAwO30KI3NtZF9oZWxwIHVsIHsgbGlzdC1zdHlsZS10eXBlOnNx dWFyZTsgfQojc21kX2hlbHAgLnJlcXVpcmVkIHtjb2xvcjpyZWQ7fQojc21kX2hlbHAgbGkg eyBtYXJnaW46NXB4IDIwcHggNXB4IDMwcHg7IH0KI3NtZF9oZWxwIC5icmVhayB7IG1hcmdp bi10b3A6NXB4OyB9Cjwvc3R5bGU+CjwhLS0gKioqIEVORCBQTFVHSU4gQ1NTICoqKiAtLT4K IjtzOjM6Im1kNSI7czozMjoiMWUzYjY0NTM4NTM2ZGIwMzIxN2U2ZTMyYjQ4NzU5NGUiO30=