# Name: smd_gallery v0.4 # Type: Client side plugin # A(nother) thumbnail gallery/slideshow creator with unreal flexibility # Author: Stef Dawson # URL: http://stefdawson.com/ # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YTo5OntzOjQ6Im5hbWUiO3M6MTE6InNtZF9nYWxsZXJ5IjtzOjY6ImF1dGhvciI7czoxMToi U3RlZiBEYXdzb24iO3M6MTA6ImF1dGhvcl91cmkiO3M6MjI6Imh0dHA6Ly9zdGVmZGF3c29u LmNvbS8iO3M6NzoidmVyc2lvbiI7czozOiIwLjQiO3M6MTE6ImRlc2NyaXB0aW9uIjtzOjY5 OiJBKG5vdGhlcikgdGh1bWJuYWlsIGdhbGxlcnkvc2xpZGVzaG93IGNyZWF0b3Igd2l0aCB1 bnJlYWwgZmxleGliaWxpdHkiO3M6NDoiY29kZSI7czoyNjIwNjoiZnVuY3Rpb24gc21kX2dh bGxlcnkoJGF0dHMsICR0aGluZz0nJykgew0KCWdsb2JhbCAkcHJldGV4dCwgJHRoaXNhcnRp Y2xlLCAkaW1nX2RpcjsNCg0KCS8vICoqIExPT0tVUCBUQUJMRQ0KCS8vIEhvbGRzIGRhdGFi YXNlIGZpZWxkIGFzIGtleSBpbmRleCBhbmQgcGx1Z2luIG9wdGlvbiBuYW1lcyBhcyB2YWx1 ZS4NCgkvLyBVc2UgYXJyYXlfc2VhcmNoIHRvIGZpbmQgaWYgdmFsdWUgZXhpc3RzIGFuZCBy ZXR1cm4gY29ycmVjdCBrZXkgZm9yIHVzZSBpbiBkYiBjYWxscy9hcnJheSByZWZzLg0KCSRm aWVsZE1hcCA9IGFycmF5KA0KCQkidHhwX2ltYWdlLm5hbWUiID0+ICJuYW1lIiwNCgkJInR4 cF9pbWFnZS5pZCIgPT4gImlkIiwNCgkJInR4cF9pbWFnZS5hbHQiID0+ICJhbHQiLA0KCQki dHhwX2ltYWdlLmNhcHRpb24iID0+ICJjYXB0aW9uIiwNCgkJInR4cF9pbWFnZS5jYXRlZ29y eSIgPT4gImNhdGVnb3J5IiwNCgkJInR4cF9pbWFnZS5hdXRob3IiID0+ICJhdXRob3IiLA0K CQkidHhwX2ltYWdlLmRhdGUiID0+ICJkYXRlIiwNCgkJInR4cF9pbWFnZS5leHQiID0+ICJl eHQiLA0KCQkidHhwX2ltYWdlLnciID0+ICJ3aWR0aCIsDQoJCSJ0eHBfaW1hZ2UuaCIgPT4g ImhlaWdodCIsDQoJCSJ0eHBfaW1hZ2UudGh1bWJuYWlsIiA9PiAiaGFzdGh1bWIiLA0KCSk7 DQoNCgkvLyBQbHVnaW4gb3B0aW9ucw0KCWV4dHJhY3QobEF0dHMoYXJyYXkoDQoJCSd0eXBl JyA9PiAnaW1hZ2UnLA0KCQknZGVsaW0nID0+ICcsJywNCgkJJ3BhcmFtZGVsaW0nID0+ICc6 JywNCgkJJ2Zvcm0nID0+ICcnLA0KCQknaWQnID0+ICcnLA0KCQknY2F0ZWdvcnknID0+ICcn LA0KCQknZGlyZWN0b3J5JyA9PiAnJywNCgkJJ21hdGNoJyA9PiAnJywNCgkJJ3N1YmxldmVs JyA9PiAnMCcsDQoJCSdzb3J0JyA9PiAnY2F0ZWdvcnknLA0KCQknb2Zmc2V0JyA9PiAnMCcs DQoJCSdsaW1pdCcgPT4gJzAnLA0KCQknbWF4bGltaXQnID0+ICc5OTk5OScsDQoJCSd0aHVt YmxpbWl0JyA9PiAnOTk5OTknLA0KCQkndGh1bWJvZmZzZXQnID0+ICcwJywNCgkJJ3RodW1i JyA9PiAnMDoxJywNCgkJJ3RodW1ic2l6ZScgPT4gJycsDQoJCSd0aHVtYmNoYW5nZScgPT4g J2NhdGVnb3J5JywNCgkJJ3RodW1iY2hhbmdld3JhcHRhZycgPT4gJycsDQoJCSd0aHVtYmNo YW5nZWNsYXNzJyA9PiAnJywNCgkJJ3RleHQnID0+ICcnLA0KCQknY29sbGF0ZScgPT4gJycs DQoJCSdjb21ibycgPT4gJycsDQoJCSdwYWdlZm9ybScgPT4gJycsDQoJCSduYXZ3cmFwdGFn JyA9PiAndWwnLA0KCQknbmF2YnJlYWsnID0+ICdsaScsDQoJCSduYXZjbGFzcycgPT4gJ3Nt ZF9nYWxsZXJ5X25hdicsDQoJCSdlbXB0eWNsYXNzJyA9PiAnZW1wdHknLA0KCQknZ2FsbGVy eWlkJyA9PiAnPzQ6NicsDQoJCSd3cmFwdGFnJyA9PiAnJywNCgkJJ2JyZWFrJyA9PiAnJywN CgkJJ2NsYXNzJyA9PiAnJywNCgkJJ2RlYnVnJyA9PiAnMCcsDQoJKSwgJGF0dHMpKTsNCg0K CS8vIENhdGVnb3J5IHJlbGllcyBvbiB3aGV0aGVyIGlkIGhhcyBiZWVuIHNwZWNpZmllZCBv ciBub3QuDQoJLy8gbEF0dHMoKSB3b24ndCBsZXQgdXMgaGFuZGxlIHRoaXMgbG9naWMgc28g aXQgaGFzIHRvIGJlIGRvbmUgbWFudWFsbHkNCgkkYXR0ZW1wdE1hdGNoID0gKGVtcHR5KCRj YXRlZ29yeSkgJiYgZW1wdHkoJGlkKSkgPyBmYWxzZSA6IHRydWU7DQoJJGNhdGVnb3J5ID0g aXNzZXQoJGNhdGVnb3J5KSA/IGRvU2xhc2goJGNhdGVnb3J5KSA6ICgoJGlkPT0nJykgPyAk cHJldGV4dFsnYyddOiAnJyk7DQoNCgkvLyBIYW5kbGUgZm9ybXMgYW5kIHNldCBhIGRlZmF1 bHQgdGFnIGlmIG5vbmUgc3BlY2lmaWVkDQoJJHRoaW5nID0gKGVtcHR5KCRmb3JtKSkgPyAk dGhpbmcgOiBmZXRjaF9mb3JtKCRmb3JtKTsNCgkkdGhpbmcgPSAoZW1wdHkoJHRoaW5nKSkg PyAnPGEgaHJlZj0ie3VybH0iIGFsdD0ie2FsdH0iPjx0eHA6aW1hZ2UgaWQ9IntpZH0iIC8+ PC9hPicgOiAkdGhpbmc7DQoNCgkvLyBQYWdpbmcgaW5pdA0KCSRwYWdpbmcgPSAwOw0KCWlm ICgkcGFnZWZvcm0pIHsNCgkJJHBhZ2luZyA9IDE7DQoJCSRwYWdlZm9ybSA9IGZldGNoX2Zv cm0oJHBhZ2Vmb3JtKTsNCgl9DQoNCgkvLyBUaHVtYmNoYW5nZSB2ZXJpZmljYXRpb24NCgkk dGh1bWJjaGFuZ2UgPSBkb19saXN0KCR0aHVtYmNoYW5nZSwgJGRlbGltKTsNCgkkcmVzZXRP cHRzID0gYXJyYXkoKTsNCglmb3JlYWNoICgkdGh1bWJjaGFuZ2UgYXMgJHJlc2V0T3B0KSB7 DQoJCSRyZXNldE9wdHNbJHJlc2V0T3B0XSA9ICIiOw0KCX0NCg0KCS8vIFRoZSBnYWxsZXJ5 IGlkZW50aWZpZXIgaXMgdXNlZCBmb3Iga2VlcGluZyB0cmFjayBvZiBuZXh0L3ByZXYgdGh1 bWJuYWlsIHBhZ2UgbGlua3MNCgkkZ2FsbElEID0gJyc7DQoJaWYgKCRnYWxsZXJ5aWQgPT0g JycgfHwgc3Vic3RyKCRnYWxsZXJ5aWQsMCwxKSA9PSAiPyIpIHsNCgkJLy8gR2VuZXJhdGUg YSAoZmFpcmx5IGxpa2VseSkgdW5pcXVlIElEIGZvciB0aGlzIGdhbGxlcnkgaW5zdGFuY2UN CgkJJGdhbGxUbXAgPSBtZDUoJGNhdGVnb3J5LiRpZC4kZGlyZWN0b3J5LiRtYXRjaC4kc3Vi bGV2ZWwuJHNvcnQuJGxpbWl0LiRtYXhsaW1pdCk7DQoJCWxpc3QoJGdhbGxMZW4sICRnYWxs U2tpcCkgPSBleHBsb2RlKCI6Iiwgc3Vic3RyKCRnYWxsZXJ5aWQsMSkpOw0KCQkkZ2FsbExl biA9ICAoZW1wdHkoJGdhbGxMZW4pKSA/ICI0IiA6ICRnYWxsTGVuOw0KCQkkZ2FsbFNraXAg PSAgKGVtcHR5KCRnYWxsU2tpcCkpID8gIjEiIDogJGdhbGxTa2lwOw0KCQlmb3IgKCRpZHgg PSAwLCAkY250ID0gMDsgJGNudCA8ICRnYWxsTGVuOyAkY250KyssICRpZHggPSAoKCRpZHgr JGdhbGxTa2lwKSAlIHN0cmxlbigkZ2FsbFRtcCkpKSB7DQoJCQkkZ2FsbElEIC49ICRnYWxs VG1wWyRpZHhdOw0KCQl9DQoJfSBlbHNlIHsNCgkJJGdhbGxJRCA9ICRnYWxsZXJ5aWQ7DQoJ fQ0KCSRnYWxsSUQgPSAic21kX2dscnlfIi4kZ2FsbElEOyAvLyBBdm9pZCAoYWxyZWFkeSBp bmNyZWRpYmx5IHVubGlrZWx5KSBuYW1lc3BhY2UgY2xhc2hlcw0KDQoJLy8gU2V0IHVwIHRo ZSB2YXJpYWJsZXMgZnJvbSB0aGUgdGh1bWIgb3B0aW9uLg0KCS8vIERvbid0IHVzZSBwYXJh bWRlbGltIGhlcmUgb3IgdGhlIGRlZmF1bHQgb3B0aW9uIGJyZWFrcw0KCSR0aHVtYk9wdHMg PSBkb19saXN0KCR0aHVtYiwgIjoiKTsNCglpZiAoY291bnQoJHRodW1iT3B0cykgPT0gMSkg ew0KCQkkZnVsbG1vZCA9ICgkdGh1bWJPcHRzWzBdID09IDEpID8gInQiIDogIiI7DQoJCSR0 aHVtYm1vZCA9ICJ0IjsNCgl9IGVsc2Ugew0KCQkkZnVsbG1vZCA9ICgkdGh1bWJPcHRzWzBd ID09IDEpID8gInQiIDogIiI7DQoJCSR0aHVtYm1vZCA9ICgkdGh1bWJPcHRzWzFdID09IDEp ID8gInQiIDogIiI7DQoJfQ0KDQoJLy8gVGhlIG1hbm5lciBvZiBvYnRhaW5pbmcgZmlsZXMg ZGlmZmVycyBpZiB1c2luZyBkaXJlY3RvcnkgdnMgY2F0ZWdvcnkvaWQNCglpZiAoJGRpcmVj dG9yeSkgew0KCQkkcnMgPSBhcnJheSgpOw0KCQkkcnNhbGwgPSBzbWRfZG9EaXJlY3Rvcnko JGRpcmVjdG9yeSwgMCwgJHN1YmxldmVsLCAkbWF0Y2gsICRkZWxpbSk7DQoJCWxpc3QoJGFs bEltYWdlcywgJG51bVBhZ2VzLCAkdGh1bVBhZ2UsICRvZmZzZXQpID0gc21kX2dldFBhZ2Uo JHJzYWxsLCAkZ2FsbElELCAkbGltaXQsICRvZmZzZXQsICRwYWdpbmcpOw0KCQkkZGlybGlt aXQgPSAoJGxpbWl0PT0wKSA/ICRtYXhsaW1pdCA6ICRsaW1pdDsNCgkJJHJzID0gYXJyYXlf c2xpY2UoJHJzYWxsLCAkb2Zmc2V0LCAkZGlybGltaXQpOw0KCQkkcG9zdE9yZGVyID0gYXJy YXkoKTsNCgkJJGZpeGVkT3JkZXIgPSAwOw0KCQkkcmFuZHNvcnQgPSBmYWxzZTsNCgl9IGVs c2Ugew0KCQkvLyBQcm9jZXNzIGNhdGVnb3JpZXMvSURzIGFuZCBtYWtlIHVwIHRoZSBjcnV4 IG9mIHRoZSB3aGVyZSBjbGF1c2UuDQoJCS8vIENsYXVzZSBvcmRlciA9IElEcyBPUiBjYXRz IEFORCAhY2F0cyBBTkQgIUlEcw0KCQkkY2xhdXNlW10gPSAnMT0xJzsNCgkJJGNsYXVzZU9S ID0gYXJyYXkoKTsNCg0KCQkvLyBTdXJyb3VuZCBlYWNoIGVudHJ5IGluIHRoZSBJRCBsaXN0 IHdpdGggcXVvdGVzIGFuZCBtYWtlIGFuIFNRTCAiaW4iIGxpc3QNCgkJJHN1YmluZm8gPSAo JHN1YmxldmVsKSA/ICJpbWFnZToiLiRzdWJsZXZlbCA6ICcnOw0KCQlsaXN0KCRpZGluYywg JGlkZXhjKSA9IHNtZF9kb0xpc3QoJGlkLCB0cnVlLCAnJywgdHJ1ZSwgJGRlbGltKTsNCgkJ bGlzdCgkY2F0aW5jLCAkY2F0ZXhjKSA9IHNtZF9kb0xpc3QoJGNhdGVnb3J5LCBmYWxzZSwg JHN1YmluZm8sIHRydWUsICRkZWxpbSk7DQoJCWlmICgkaWRpbmMpIHsNCgkJCSRjbGF1c2VP UltdID0gJ3R4cF9pbWFnZS5pZCBJTiAoJy5pbXBsb2RlKCIsIiwgJGlkaW5jKS4nKSc7DQoJ CX0NCgkJaWYgKCRjYXRpbmMpIHsNCgkJCSRjbGF1c2VPUltdID0gJ3R4cF9pbWFnZS5jYXRl Z29yeSBJTiAoJy5pbXBsb2RlKCIsIiwgJGNhdGluYykuJyknOw0KCQl9DQoJCWlmICghZW1w dHkoJGNsYXVzZU9SKSkgew0KCQkJJGNsYXVzZVtdID0gJyAoJy5pbXBsb2RlKCIgT1IgIiwg JGNsYXVzZU9SKS4nKSAnOw0KCQl9DQoNCgkJJGNsYXVzZSA9IGltcGxvZGUoIiBBTkQgIiwg JGNsYXVzZSk7DQoJCSRjbGF1c2UgLj0gKCRjYXRleGMpID8gJyBBTkQgdHhwX2ltYWdlLmNh dGVnb3J5IE5PVCBJTiAoJy5pbXBsb2RlKCIsIiwgJGNhdGV4YykuJyknIDogJyc7DQoJCSRj bGF1c2UgLj0gKCRpZGV4YykgPyAnIEFORCB0eHBfaW1hZ2UuaWQgTk9UIElOICgnLmltcGxv ZGUoIiwiLCAkaWRleGMpLicpJyA6ICcnOw0KDQoJCS8vIElmIGEgY2F0ZWdvcnkvaWQgb3B0 aW9uIHdhcyBjaG9zZW4gYW5kIHRoZXkgbWF0Y2hlZCBub3RoaW5nLCB1c2UgYSBib2d1cyBj YXRlZ29yeSB0aGF0IHNob3VsZCBub3QgZXhpc3QuDQoJCS8vIFRoaXMgZW5zdXJlcyB0aGF0 IHRoZSBwbHVnaW4gZG9lcyB0aGUgZXhwZWN0ZWQgdGhpbmcgb2YgbWF0Y2hpbmcgbm90aGlu ZyBpbiB0aGUgZXZlbnQgaXQgZmluZHMgbm90aGluZy4NCgkJaWYgKCRjbGF1c2UgPT0gIjE9 MSIgJiYgJGF0dGVtcHRNYXRjaCkgew0KCSAgCQkkY2xhdXNlID0gJ3R4cF9pbWFnZS5jYXRl Z29yeSA9ICJzbWRfJyAubXRfcmFuZCgpLiAnIic7DQoJCX0NCg0KCQlpZiAoJGRlYnVnID4g MSkgew0KCQkJZWNobyAiKysgSU5DTFVERUQvRVhDTFVERUQgSURzIEFORCBDQVRzICsrIjsN CgkJCWRtcCgkaWRpbmMpOw0KCQkJZG1wKCRpZGV4Yyk7DQoJCQlkbXAoJGNhdGluYyk7DQoJ CQlkbXAoJGNhdGV4Yyk7DQoJCX0NCg0KCQkvLyBDb252ZXJ0IHRoZSBzb3J0IGludG8gYSB2 YWxpZCBzb3J0aW5nIGhpZXJhcmNoeS4NCgkJLy8gTm90ZSB0aGF0IHJhbmRvbSBpcyBhIHNw ZWNpYWwgY2FzZSBhbmQgdGhlIGZvbGxvd2luZyBydWxlcyBhcHBseToNCgkJLy8gIDEpIEFu eXRoaW5nIGFwcGVhcmluZyBiZWZvcmUgcmFuZG9tIGlzIHBhc3NlZCB0byB0aGUgZGF0YWJh c2UgcXVlcnkgZm9yIG9yZGVyaW5nDQoJCS8vICAyKSBBcyBzb29uIGFzIHJhbmRvbSBpcyBl bmNvdW50ZXJlZCwgdGhlIHJlc3Qgb2YgdGhlIHNvcnQgc3RyaW5nIGlzIGlnbm9yZWQuDQoJ CS8vICAgICBUaGUgcmVzdWx0c2V0IHdpbGwgYmUgc29ydGVkIHJhbmRvbWx5IGluc3RlYWQN CgkJLy8gIDMpIElmIHJhbmRvbSBhcHBlYXJzIGZpcnN0IGluIHRoZSBsaXN0LCB0aGUgZGF0 YSBpcyByZXRyaWV2ZWQgcmFuZG9tbHkgdGhlbiB0aGUNCgkJLy8gICAgIHJlbWFpbmluZyBv cHRpb25zIHNvcnQgdGhlIHJlc3VsdHNldA0KCQkkY2xhdXNlU29ydCA9IGFycmF5KCk7DQoJ CSRwb3N0T3JkZXIgPSBhcnJheSgpOw0KCQkkcnVsZSA9ICJzcWwiOw0KCQkkcG9zdFByZWZp eCA9ICJTT1JUXyI7DQoJCSRmaXhlZE9yZGVyID0gJHJhbmRzb3J0ID0gZmFsc2U7DQoJCSRz b3J0ID0gZG9fbGlzdCgkc29ydCwgJGRlbGltKTsNCgkJZm9yICgkaWR4ID0gMDsgJGlkeCA8 IGNvdW50KCRzb3J0KTsgJGlkeCsrKSB7DQoJCQkkc29ydF9kaXIgPSBleHBsb2RlKCcgJywg JHNvcnRbJGlkeF0pOw0KCQkJJGRpcmVjdGlvbiA9ICRjb2xSZWYgPSAnJzsNCgkJCWlmIChj b3VudCgkc29ydF9kaXIpIDw9IDEpIHsNCgkJCQkkc29ydF9kaXJbMV0gPSAiYXNjIjsNCgkJ CX0NCgkJCWlmICgkcnVsZSA9PSAic3FsIikgew0KCQkJCSRkaXJlY3Rpb24gPSAoJHNvcnRf ZGlyWzFdID09ICJkZXNjIikgPyAnIGRlc2MnIDogJyBhc2MnOw0KCQkJfSBlbHNlIHsNCgkJ CQkkZGlyZWN0aW9uID0gKCRzb3J0X2RpclsxXSA9PSAiZGVzYyIpID8gJHBvc3RQcmVmaXgu J0RFU0MnIDogJHBvc3RQcmVmaXguJ0FTQyc7DQoJCQl9DQoNCgkJCXN3aXRjaCAoJHNvcnRf ZGlyWzBdKSB7DQoJCQkJY2FzZSAncmFuZG9tJzoNCgkJCQkJJHJ1bGUgPSAicG9zdCI7DQoJ CQkJCWlmICgkaWR4ID09IDApIHsNCgkJCQkJCSRjbGF1c2VTb3J0W10gPSAncmFuZCgpJzsN CgkJCQkJfSBlbHNlIHsNCgkJCQkJCSRyYW5kc29ydCA9IHRydWU7DQoJCQkJCX0NCgkJCQkJ YnJlYWs7DQoJCQkJY2FzZSAnZml4ZWQnOg0KCQkJCQkvLyAnZml4ZWQnIG9ubHkgd29ya3Mg b24gaWRzDQoJCQkJCSRmaXhlZE9yZGVyID0gKCRpZCA9PSAnJykgPyBmYWxzZSA6IHRydWU7 DQoJCQkJCWJyZWFrOw0KCQkJCWRlZmF1bHQ6DQoJCQkJCSRjb2xSZWYgPSBhcnJheV9zZWFy Y2goJHNvcnRfZGlyWzBdLCAkZmllbGRNYXApOw0KCQkJCQlicmVhazsNCgkJCX0NCgkJCWlm ICgkcnVsZSA9PSAic3FsIikgew0KCQkJCWlmICgkY29sUmVmICE9ICcnKSB7DQoJCQkJCSRj bGF1c2VTb3J0W10gPSAkY29sUmVmLiRkaXJlY3Rpb247DQoJCQkJfQ0KCQkJfSBlbHNlIHsN CgkJCQlpZiAoISRyYW5kc29ydCkgew0KCQkJCQlpZiAoJGNvbFJlZiAhPSAnJykgew0KCQkJ CQkJJHBvc3RPcmRlcltdID0gYXJyYXkoImNvbCIgPT4gJGNvbFJlZiwgInNvcnQiID0+ICRk aXJlY3Rpb24pOw0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQl9DQoNCgkJaWYgKGNvdW50KCRj bGF1c2VTb3J0KSA+IDApIHsNCgkJCSRjbGF1c2UgLj0gJyBPUkRFUiBCWSAnIC4gaW1wbG9k ZSgiLCIsJGNsYXVzZVNvcnQpOw0KCQl9DQoJCWlmICgkZGVidWcgPiAwKSB7DQoJCQllY2hv ICIrKyBXSEVSRSBDTEFVU0UgKysiOw0KCQkJZG1wKCRjbGF1c2UpOw0KCQl9DQoJCS8vIFRo ZSBkYXRhYmFzZSBmaWVsZHMgcmVxdWlyZWQNCgkJJGZpZWxkcyA9IGltcGxvZGUoIiwiLCBh cnJheV9rZXlzKCRmaWVsZE1hcCkpOw0KDQoJCS8vIFRpbWUgdG8gZ3JhYiB0aGUgbWF0Y2hp bmcgcm93cyBmcm9tIHRoZSBkYXRhYmFzZQ0KCQkkcnNhbGwgPSBzYWZlX3Jvd3MoJGZpZWxk cywgJ3R4cF9pbWFnZScsICRjbGF1c2UgLicgTElNSVQgJy4kb2Zmc2V0LicsJy4kbWF4bGlt aXQpOw0KCQlsaXN0KCRhbGxJbWFnZXMsICRudW1QYWdlcywgJHRodW1QYWdlLCAkb2Zmc2V0 KSA9IHNtZF9nZXRQYWdlKCRyc2FsbCwgJGdhbGxJRCwgJGxpbWl0LCAkb2Zmc2V0LCAkcGFn aW5nKTsNCgkJJHJzID0gc2FmZV9yb3dzKCRmaWVsZHMuJywgdHhwX2NhdGVnb3J5LnRpdGxl IEFTIGNhdGVnb3J5X3RpdGxlJywgJ3R4cF9pbWFnZSwgdHhwX2NhdGVnb3J5JywgJ3R4cF9j YXRlZ29yeS5uYW1lID0gdHhwX2ltYWdlLmNhdGVnb3J5IEFORCB0eHBfY2F0ZWdvcnkudHlw ZT0iaW1hZ2UiIEFORCAnIC4kY2xhdXNlIC4nIExJTUlUICcgLiRvZmZzZXQuICcsJy4gKCgk bGltaXQ9PTApID8gJG1heGxpbWl0IDogJGxpbWl0KSk7DQoJfQ0KDQoJLy8gSXMgcG9zdC1v cmRlcmluZyByZXF1aXJlZD8gRG8gaXQNCglpZiAoJHJhbmRzb3J0KSB7DQoJCXNodWZmbGUo JHJzKTsNCgl9IGVsc2UgaWYgKGNvdW50KCRwb3N0T3JkZXIpID4gMCkgew0KCQkvLyBUcmFu c2xhdGUgdGhlIHJvd3MgaW50byBjb2x1bW5zIHRoYXQgY2FuIGJlIHNvcnRlZA0KCQlmb3Jl YWNoKCRycyBhcyAka2V5ID0+ICRyb3cpIHsNCgkJCSRjb2xfaWRbJGtleV0gPSAkcm93Wydp ZCddOw0KCQkJJGNvbF9uYW1lWyRrZXldID0gJHJvd1snbmFtZSddOw0KCQkJJGNvbF9jYXB0 aW9uWyRrZXldID0gJHJvd1snY2FwdGlvbiddOw0KCQkJJGNvbF9hbHRbJGtleV0gPSAkcm93 WydhbHQnXTsNCgkJCSRjb2xfY2F0ZWdvcnlbJGtleV0gPSAkcm93WydjYXRlZ29yeSddOw0K CQkJJGNvbF9kYXRlWyRrZXldID0gJHJvd1snZGF0ZSddOw0KCQkJJGNvbF9leHRbJGtleV0g PSAkcm93WydleHQnXTsNCgkJCSRjb2xfYXV0aG9yWyRrZXldID0gJHJvd1snYXV0aG9yJ107 DQoJCQkkY29sX3dbJGtleV0gPSAkcm93Wyd3J107DQoJCQkkY29sX2hbJGtleV0gPSAkcm93 WydoJ107DQoJCQkkY29sX3RodW1ibmFpbFska2V5XSA9ICRyb3dbJ3RodW1ibmFpbCddOw0K CQl9DQoJCS8vIE1ha2UgdXAgYW4gYXJyYXlfbXVsdGlzb3J0IGFyZyBsaXN0IGFuZCBleGVj dXRlIGl0DQoJCWZvciAoJGlkeCA9IDA7ICRpZHggPCBjb3VudCgkcG9zdE9yZGVyKTsgJGlk eCsrKSB7DQoJCQkkc29ydGFyZ3NbXSA9ICckY29sXycuJHBvc3RPcmRlclskaWR4XVsnY29s J107DQoJCQkkc29ydGFyZ3NbXSA9ICRwb3N0T3JkZXJbJGlkeF1bJ3NvcnQnXTsNCgkJfQ0K CQkkc29ydGl0ID0gJ2FycmF5X211bHRpc29ydCgnLmltcGxvZGUoIiwgIiwkc29ydGFyZ3Mp LicsICRycyk7JzsNCgkJZXZhbCgkc29ydGl0KTsNCgl9DQoNCgkvLyBJcyBmaXhlZC1vcmRl ciBvdXRwdXQgZGVzaXJlZD8gSWYgc28sIHJlLW9yZGVyIHRoZSAkcnMNCglpZiAoJGZpeGVk T3JkZXIpIHsNCgkJJG9yZGVyZWRSUyA9IEFycmF5KCk7DQoJCSRpZ25vcmVMaXN0ID0gQXJy YXkoKTsNCgkJJHJlbWFpbmluZ1JTID0gQXJyYXkoKTsNCgkJLy8gU3VjayBvdXQgdGhlIGZp eGVkIGl0ZW1zIGZpcnN0DQoJCWZvciAoJGlkeCA9IDA7ICRpZHggPCBjb3VudCgkaWRpbmMp OyAkaWR4KyspIHsNCgkJCWZvcmVhY2goJHJzIGFzICRyb3cpIHsNCgkJCQlpZiAoIiciLiRy b3dbJ2lkJ10uIiciID09ICRpZGluY1skaWR4XSkgew0KCQkJCQkkb3JkZXJlZFJTW10gPSAk cm93Ow0KCQkJCQkkaWdub3JlTGlzdFtdID0gJHJvd1snaWQnXTsNCgkJCQl9DQoJCQl9DQoJ CX0NCgkJLy8gVGFjayBvbiB0aGUgcmVtYWluaW5nIHJvd3MNCgkJZm9yZWFjaCgkcnMgYXMg JHJvdykgew0KCQkJaWYgKCFpbl9hcnJheSgkcm93WydpZCddLCAkaWdub3JlTGlzdCkpIHsN CgkJCQkkcmVtYWluaW5nUlNbXSA9ICRyb3c7DQoJCQl9DQoJCX0NCgkJJHJzID0gYXJyYXlf bWVyZ2UoJG9yZGVyZWRSUywgJHJlbWFpbmluZ1JTKTsNCgl9DQoNCgkvLyBIYW5kbGUgdGh1 bWJzaXplIC0gb2YgbGltaXRlZCB1c2Ugbm93IGJ1dCBzdGlsbCBhdmFpbGFibGUNCgkkdGh1 bWJXaWR0aCA9ICR0aHVtYkhlaWdodCA9ICcnOw0KCSR0aHVtYldVbml0cyA9ICR0aHVtYkhV bml0cyA9ICcnOw0KCWlmICgkdGh1bWJzaXplKSB7DQoJCSR0aHVtYlNpemVzID0gZG9fbGlz dCgkdGh1bWJzaXplLCAkZGVsaW0pOw0KCQlpZiAoY291bnQoJHRodW1iU2l6ZXMpID09IDEp IHsNCgkJCSR0aHVtYldpZHRoID0gJHRodW1iSGVpZ2h0ID0gZXJlZ19yZXBsYWNlKCJbXjAt OV0iLCAnJywgJHRodW1iU2l6ZXNbMF0pOw0KCQkJJHVuaXRzID0gZXJlZ19yZXBsYWNlKCJb MC05XSIsICcnLCAkdGh1bWJTaXplc1swXSk7DQoJCQkkdGh1bWJXVW5pdHMgPSAkdGh1bWJI VW5pdHMgPSAoJHVuaXRzID09ICcnKSA/ICR0aHVtYldVbml0cyA6ICR1bml0czsNCgkJfSBl bHNlIHsNCgkJCSR0aHVtYldpZHRoID0gZXJlZ19yZXBsYWNlKCJbXjAtOV0iLCAnJywgJHRo dW1iU2l6ZXNbMF0pOw0KCQkJJHRodW1iSGVpZ2h0ID0gZXJlZ19yZXBsYWNlKCJbXjAtOV0i LCAnJywgJHRodW1iU2l6ZXNbMV0pOw0KCQkJJHVuaXRzID0gZXJlZ19yZXBsYWNlKCJbMC05 XSIsICcnLCAkdGh1bWJTaXplc1swXSk7DQoJCQkkdGh1bWJXVW5pdHMgPSAoJHVuaXRzID09 ICcnICYmICR0aHVtYldpZHRoICE9ICcnKSA/ICR0aHVtYldVbml0cyA6ICR1bml0czsNCgkJ CSR1bml0cyA9IGVyZWdfcmVwbGFjZSgiWzAtOV0iLCAnJywgJHRodW1iU2l6ZXNbMV0pOw0K CQkJJHRodW1iSFVuaXRzID0gKCR1bml0cyA9PSAnJyAmJiAkdGh1bWJIZWlnaHQgIT0gJycp ID8gJHRodW1iSFVuaXRzIDogJHVuaXRzOw0KCQl9DQoJfQ0KDQoJLy8gQ29sbGF0aW9uIGRl ZmVycyBwYXJzaW5nIHRoZSBmb3JtIGZvciBlYWNoIHJldHVybmVkIGl0ZW0uDQoJLy8gSW5z dGVhZCBpdCBvdXRwdXRzIHRoZSBkYXRhIGFzIGEgbGlzdCBhdCB0aGUgZW5kIChpdGVtcyBt YXkgYmUgaW5kaXZpZHVhbGx5IHF1b3RlZCBvciBleHRyYWN0ZWQgaWYgcmVxdWlyZWQpDQoJ Ly9UT0RPIDogQWRkIEFMV0FZUyBzd2l0Y2ggYXMgYSBzaG9ydGN1dCB0byBzcGVjaWZ5IHRo YXQgYWxsIG1hdGNoaW5nIGl0ZW1zIChyZWdhcmRsZXNzIG9mICMxLCAjMiwgIzMgZXRjKSBh cmUgdG8gYmUgcXVvdGVkDQoJaWYgKCRjb2xsYXRlKSB7DQoJCSRkYmxRdW90ZSA9ICRzZ2xR dW90ZSA9IGFycmF5KCdTTUROT05FJyk7DQoJCSRjb2xsYXRlT3B0cyA9IGRvX2xpc3QoJGNv bGxhdGUsICRkZWxpbSk7DQoJCWZvcmVhY2ggKCRjb2xsYXRlT3B0cyBhcyAkb3B0aW9uKSB7 DQoJCQkkaW5kZXhlcyA9IGRvX2xpc3QoJG9wdGlvbiwgJHBhcmFtZGVsaW0pOw0KCQkJJGNv bFR5cGUgPSBhcnJheV9zaGlmdCgkaW5kZXhlcyk7DQoJCQkvLyBTdXBwbHlpbmcgJ3F1b3Rl JyBvbiBpdHMgb3duIHdpbGwgZW1wdHkgdGhlIHJlbGV2YW50IGFycmF5LCBpbXBseWluZyAi QUxMIiBmaWVsZHMgYXJlIHRvIGJlIHF1b3RlZA0KCQkJc3dpdGNoICgkY29sVHlwZSkgew0K CQkJCWNhc2UgInNnbHF1b3RlIjoNCgkJCQkJJHNnbFF1b3RlID0gJGluZGV4ZXM7DQoJCQkJ CWJyZWFrOw0KCQkJCWNhc2UgImRibHF1b3RlIjoNCgkJCQljYXNlICJxdW90ZSI6DQoJCQkJ CSRkYmxRdW90ZSA9ICRpbmRleGVzOw0KCQkJCQlicmVhazsNCgkJCX0NCgkJfQ0KCX0NCg0K CS8vIENvbWJvcyBhcmUgdXNlci1kZWZpbmVkIGNvbWJpbmF0aW9ucyBvZiByZXBsYWNlbWVu dCBtb2RpZmllcnMgKGUuZy4gaWRleHQ6IHtpZH17ZXh0fSwgLi4uDQoJJGNvbWJvcyA9IGFy cmF5KCk7DQoJaWYgKCRjb21ibykgew0KCQkkY29tYm8gPSBkb19saXN0KCRjb21ibywgJGRl bGltKTsNCgkJZm9yZWFjaCAoJGNvbWJvIGFzICRuZXdEZWYpIHsNCgkJCWxpc3QoJGRlZlBh cnRzLCAkdW53YW50ZWQpID0gc21kX2RvTGlzdCgkbmV3RGVmLCBmYWxzZSwgJycsIGZhbHNl LCAkcGFyYW1kZWxpbSk7DQoJCQkkZGVmTmFtZSA9ICJ7Ii5hcnJheV9zaGlmdCgkZGVmUGFy dHMpLiJ9IjsNCgkJCSRjb21ib3NbJGRlZk5hbWVdID0gJGRlZlBhcnRzWzBdOw0KCQl9DQoJ fQ0KCWlmICgkZGVidWcgPiAxKSB7DQoJCWVjaG8gIisrIENPTUJPcyArKyI7DQoJCWRtcCgk Y29tYm9zKTsNCgl9DQoJLy8gQ29uc3RydWN0IHRoZSBvdXRwdXQNCgkkb3V0ID0gYXJyYXko KTsNCgkkY29sbGF0aW9ucyA9IGFycmF5KCk7DQoJaWYgKCRkZWJ1ZyA+IDIpIHsNCgkJZWNo byAiKysgUkVDT1JEIFNFVCArKyI7DQoJCWRtcCgkcnMpOw0KCX0NCglpZiAoJGRlYnVnID4g Mykgew0KCQllY2hvICIrKyBBVkFJTEFCTEUgJz8nIFZBUlMgKysiOw0KCQlkbXAoJHByZXRl eHQpOw0KCQlkbXAoJHRoaXNhcnRpY2xlKTsNCgl9DQoNCglpZigkcnMpIHsNCgkJJGlkeCA9 IDA7DQoJCSRjdHIgPSAxOw0KCQkkdGh1bWJJZHggPSAwOw0KCQkkdGh1bWJDdHIgPSAxOw0K CQkkbnVtSW1hZ2VzID0gY291bnQoJHJzKTsNCgkJZm9yZWFjaCgkcnMgYXMgJHJvdykgew0K CQkJaWYgKCRkaXJlY3RvcnkpIHsNCgkJCQkkdXJsUGF0aCA9ICRyb3dbJ3BhdGgnXS5EUzsN CgkJCX0gZWxzZSB7DQoJCQkJJHVybFBhdGggPSBodS4kaW1nX2Rpci5EUzsNCgkJCX0NCgkJ CSR0aGVUaHVtYiA9ICR1cmxQYXRoIC4gJHJvd1snaWQnXSAuICR0aHVtYm1vZCAuICRyb3db J2V4dCddOw0KCQkJJGZ1bGxTaXplID0gJHVybFBhdGggLiAkcm93WydpZCddIC4gJGZ1bGxt b2QgLiRyb3dbJ2V4dCddOw0KDQoJCQkvLyBEbyB3ZSBuZWVkIHRvIHJlc2V0IHRoZSB0aHVt YiBjb3VudGVyIHRoaXMgdGltZT8NCgkJCWZvcmVhY2ggKCRyZXNldE9wdHMgYXMgJHJlc2V0 T3B0ID0+ICRyZXNldFZhbCkgew0KCQkJCWlmICgkcm93WyRyZXNldE9wdF0gIT0gJHJlc2V0 VmFsKSB7DQoJCQkJCSR0aHVtYklkeCA9IDA7DQoJCQkJCSR0aHVtYkN0ciA9IDE7DQoJCQkJ CWJyZWFrOw0KCQkJCX0NCgkJCX0NCg0KCQkJLy8gSXMgYSB0aHVtYi90ZXh0IG9iamVjdCBy ZXF1aXJlZCB0aGlzIHRpbWU/DQoJCQkkb2JqZWN0ID0gJyc7DQoJCQlpZiAoJHRodW1iSWR4 ID49ICR0aHVtYm9mZnNldCAmJiAkdGh1bWJJZHggPCAkdGh1bWJvZmZzZXQrJHRodW1ibGlt aXQpIHsNCgkJCQlzd2l0Y2ggKCR0eXBlKSB7DQoJCQkJCWNhc2UgJ2ltYWdlJzoNCgkJCQkJ CSRvYmplY3QgPSAoJHRleHQpID8gJHRleHQgOiAnPGltZyBzcmM9IicuJHRoZVRodW1iLici JyAuKCgkcm93WydhbHQnXSkgPyAnIGFsdD0iJy4kcm93WydhbHQnXS4nIicgOiAnJykgLigo JHRodW1iV2lkdGgpID8gJyB3aWR0aD0iJy4kdGh1bWJXaWR0aC4kdGh1bWJXVW5pdHMuJyIn IDogJycpIC4oKCR0aHVtYkhlaWdodCkgPyAnIGhlaWdodD0iJy4kdGh1bWJIZWlnaHQuJHRo dW1iSFVuaXRzLiciJyA6ICcnKSAuJyAvPic7DQoJCQkJCQlicmVhazsNCgkJCQl9DQoJCQl9 DQoNCgkJCS8vIENvbnN0cnVjdCB0aGUgcmVwbGFjZW1lbnQgYXJyYXkNCgkJCSRyZXBsYWNl bWVudHMgPSBhcnJheSgNCgkJCQkJJ3tpZH0nID0+ICRyb3dbJ2lkJ10sDQoJCQkJCSd7bmFt ZX0nID0+ICRyb3dbJ25hbWUnXSwNCgkJCQkJJ3tleHR9JyA9PiAkcm93WydleHQnXSwNCgkJ CQkJJ3tjYXRlZ29yeX0nID0+ICRyb3dbJ2NhdGVnb3J5J10sDQoJCQkJCSd7Y2F0ZWdvcnlf dGl0bGV9JyA9PiAkcm93WydjYXRlZ29yeV90aXRsZSddLA0KCQkJCQkne2F1dGhvcn0nID0+ ICRyb3dbJ2F1dGhvciddLA0KCQkJCQkne2hhc3RodW1ifScgPT4gJHJvd1sndGh1bWJuYWls J10sDQoJCQkJCSd7dXJsfScgPT4gJGZ1bGxTaXplLA0KCQkJCQkne3RodW1idXJsfScgPT4g JHRoZVRodW1iLA0KCQkJCQkne2ltYWdlcGF0aH0nID0+ICR1cmxQYXRoLA0KCQkJCQkne2lt YWdlZGVmfScgPT4gYmFzZW5hbWUoJGZ1bGxTaXplKSwNCgkJCQkJJ3t0aHVtYmRlZn0nID0+ IGJhc2VuYW1lKCR0aGVUaHVtYiksDQoJCQkJCSd7YWx0fScgPT4gJHJvd1snYWx0J10sDQoJ CQkJCSd7dGl0bGV9JyA9PiAkcm93WydjYXB0aW9uJ10sDQoJCQkJCSd7dGh1bWJ3aWR0aH0n ID0+ICR0aHVtYldpZHRoLA0KCQkJCQkne3RodW1iaGVpZ2h0fScgPT4gJHRodW1iSGVpZ2h0 LA0KCQkJCQkne3RodW1id3VuaXRzfScgPT4gJHRodW1iV1VuaXRzLA0KCQkJCQkne3RodW1i aHVuaXRzfScgPT4gJHRodW1iSFVuaXRzLA0KCQkJCQkne3dpZHRofScgPT4gJHJvd1sndydd LA0KCQkJCQkne2hlaWdodH0nID0+ICRyb3dbJ2gnXSwNCgkJCQkJJ3tkYXRlfScgPT4gJHJv d1snZGF0ZSddLA0KCQkJCQkne29iamVjdH0nID0+ICRvYmplY3QsDQoJCQkJCSd7Z2FsbGVy eWlkfScgPT4gJGdhbGxJRCwNCgkJCQkJJ3tpbmRleH0nID0+ICRpZHgsDQoJCQkJCSd7Y291 bnRlcn0nID0+ICRjdHIsDQoJCQkJCSd7dGh1bWJpbmRleH0nID0+ICR0aHVtYklkeCwNCgkJ CQkJJ3t0aHVtYmNvdW50ZXJ9JyA9PiAkdGh1bWJDdHIsDQoJCQkJCSd7dG90YWxpbWFnZXN9 JyA9PiAkbnVtSW1hZ2VzLA0KCQkJCQkne21heGltYWdlc30nID0+ICRhbGxJbWFnZXMsDQoJ CQkJKTsNCg0KCQkJLy8gQXBwZW5kIGFueSBjaGFuZ2VkIGl0ZW1zIHRoYXQgYXJlIHJlcXVp cmVkDQoJCQlmb3JlYWNoICgkcmVzZXRPcHRzIGFzICRyZXNldE9wdCA9PiAkcmVzZXRWYWwp IHsNCgkJCQkkcmVwbGFjZW1lbnRzWyd7Y2hhbmdlZCcuJHBhcmFtZGVsaW0uJHJlc2V0T3B0 Lid9J10gPSAoJHJvd1skcmVzZXRPcHRdICE9ICRyZXNldFZhbCkgPyBkb1RhZygkcm93WyRy ZXNldE9wdF0sICR0aHVtYmNoYW5nZXdyYXB0YWcsICR0aHVtYmNoYW5nZWNsYXNzKSA6ICcn Ow0KCQkJfQ0KDQoJCQkvLyBBcHBlbmQgYW55IGNvbWJvcw0KCQkJZm9yZWFjaCAoJGNvbWJv cyBhcyAkZGVmTmFtZSA9PiAkbmV3RGVmKSB7DQoJCQkJaWYgKCFhcnJheV9rZXlfZXhpc3Rz KCRkZWZOYW1lLCAkcmVwbGFjZW1lbnRzKSkgew0KCQkJCQkkcmVwbGFjZW1lbnRzWyRkZWZO YW1lXSA9IHN0cnRyKCRuZXdEZWYsICRyZXBsYWNlbWVudHMpOw0KCQkJCX0NCgkJCX0NCg0K CQkJLy8gU29sb3MgYXJlIGl0ZW1zIGluIHRoZSBvdXRwdXQgZm9ybSB0aGF0IHJlcXVpcmUg ZGV0YWlscyBmcm9tIGEgc3BlY2lmaWMgcm93LiBVc2VmdWwgb25seSBpbiBjb2xsYXRpb24N CgkJCS8vIG1vZGUsIHRoZXkgYXJlIGFkZGVkIHRvIHRoZSByZXBsYWNlbWVudHMgYXJyYXkg b24gYW4gYXMtbmVlZGVkIGJhc2lzIHRvIHNhdmUgc3BhY2UvdGltZQ0KCQkJJHNvbG9SRSA9 ICcvXHsoW2EtejAtOV0rKSMnLiRjdHIuJ1x9Lyc7DQoJCQkkbnVtU29sb3MgPSBwcmVnX21h dGNoX2FsbCgkc29sb1JFLCAkdGhpbmcsICRzb2xvcyk7DQoJCQlmb3IgKCRzb2xvQ3RyID0g MDsgJHNvbG9DdHIgPCAkbnVtU29sb3M7ICRzb2xvQ3RyKyspIHsNCgkJCQkkZmllbGRuYW1l ID0gJ3snLiRzb2xvc1sxXVskc29sb0N0cl0uJyMnLiRjdHIuJ30nOw0KCQkJCSRncmFiZmll bGQgPSAneycuJHNvbG9zWzFdWyRzb2xvQ3RyXS4nfSc7DQoJCQkJJHJlcGxhY2VtZW50c1sk ZmllbGRuYW1lXSA9ICRyZXBsYWNlbWVudHNbJGdyYWJmaWVsZF07DQoJCQl9DQoNCgkJCWlm ICgkZGVidWcgPiAwKSB7DQoJCQkJZWNobyAiKysgUkVQTEFDRU1FTlRTIDogSU1BR0UgIi4k Y3RyLiIgKysiOw0KCQkJCWRtcCgkcmVwbGFjZW1lbnRzKTsNCgkJCX0NCg0KCQkJLy8gSW4g Y29sbGF0ZSBtb2RlIHRoZSBmb3JtIGlzIG9ubHkgcGFyc2VkIGF0IHRoZSBlbmQ6IGJ1aWxk IGEgY29sbG9zYWwgbXVsdGktZGltZW5zaW9uIGFycmF5IG9mIGFsbCBpdGVtcyBoZXJlDQoJ CQlpZiAoJGNvbGxhdGUpIHsNCgkJCQlmb3JlYWNoICgkcmVwbGFjZW1lbnRzIGFzICRkZWZO YW1lID0+ICRkZWZWYWwpIHsNCgkJCQkJJGNvbGxhdGlvbnNbJGRlZk5hbWVdW10gPSAkZGVm VmFsOw0KCQkJCX0NCgkJCX0gZWxzZSB7DQoJCQkJJG91dFtdID0gcGFyc2Uoc3RydHIoJHRo aW5nLCAkcmVwbGFjZW1lbnRzKSk7DQoJCQl9DQoNCgkJCS8vIEtlZXAgdHJhY2sgb2YgdGhl IGN1cnJlbnQgdmFsdWVzIHNvIHdlIGtub3cgaWYgdGhleSBjaGFuZ2UgbmV4dCB0aW1lDQoJ CQlmb3JlYWNoICgkcmVzZXRPcHRzIGFzICRyZXNldE9wdCA9PiAkcmVzZXRWYWwpIHsNCgkJ CQkkcmVzZXRPcHRzWyRyZXNldE9wdF0gPSAkcm93WyRyZXNldE9wdF07DQoJCQl9DQoJCQkk dGh1bWJJZHgrKzsNCgkJCSR0aHVtYkN0cisrOw0KCQkJJGlkeCsrOw0KCQkJJGN0cisrOw0K CQl9DQoJCWlmICgkY29sbGF0ZSkgew0KCQkJZm9yZWFjaCAoJGNvbGxhdGlvbnMgYXMgJGl0 ZW0gPT4gJGxpc3QpIHsNCgkJCQkvLyBRdW90ZSB0aGUgbGlzdHMgaWYgcmVxdWlyZWQNCgkJ CQkkbGlzdCA9IChlbXB0eSgkZGJsUXVvdGUpIHx8IGluX2FycmF5KCRpdGVtLCAkZGJsUXVv dGUpKSA/IGRvQXJyYXkoJGxpc3QsICdzbWRfZG9EYmxRdW90ZScpIDogJGxpc3Q7DQoJCQkJ JGxpc3QgPSAoZW1wdHkoJHNnbFF1b3RlKSB8fCBpbl9hcnJheSgkaXRlbSwgJHNnbFF1b3Rl KSkgPyBkb0FycmF5KCRsaXN0LCAnZG9RdW90ZScpIDogJGxpc3Q7DQoJCQkJJGNvbGxhdGlv bnNbJGl0ZW1dID0gaW1wbG9kZSgkZGVsaW0sICRsaXN0KTsNCgkJCX0NCgkJCWlmICgkZGVi dWcgPiAwKSB7DQoJCQkJZWNobyAiKysgQ09MTEFUSU9OUyArKyI7DQoJCQkJZG1wKCRjb2xs YXRpb25zKTsNCgkJCX0NCgkJCSRvdXRbXSA9IHBhcnNlKHN0cnRyKCR0aGluZywgJGNvbGxh dGlvbnMpKTsNCgkJfQ0KDQoJCS8vIEFkZCB0aGUgcGFnaW5nIGZlYXR1cmVzIGlmIHJlcXVp cmVkDQoJCWlmICgoJGxpbWl0ID4gMCkgJiYgJHBhZ2luZykgew0KCQkJJG5hdm91dCA9IGFy cmF5KCk7DQoJCQkkbmV4dCA9ICgkbnVtUGFnZXMgPiAxICYmICR0aHVtUGFnZSAhPSAkbnVt UGFnZXMpOw0KCQkJJHByZXYgPSAoJG51bVBhZ2VzID4gMSAmJiAkdGh1bVBhZ2UgPiAxKTsN Cg0KCQkJLy8gUmVwbGFjZSBhbnkgcGFnaW5nIGluZm8gaW4gdGhlIHF1ZXJ5IHN0cmluZw0K CQkJJHByZXZQYWdlID0gc21kX2FkZFFTVmFyKCRwcmV0ZXh0WydyZXF1ZXN0X3VyaSddLCAk Z2FsbElELCAkdGh1bVBhZ2UtMSk7DQoJCQkkbmV4dFBhZ2UgPSBzbWRfYWRkUVNWYXIoJHBy ZXRleHRbJ3JlcXVlc3RfdXJpJ10sICRnYWxsSUQsICR0aHVtUGFnZSsxKTsNCgkJCSR0aGlz UGFnZSA9IHNtZF9hZGRRU1ZhcigkcHJldGV4dFsncmVxdWVzdF91cmknXSwgJGdhbGxJRCwg JHRodW1QYWdlKTsNCgkJCSRmaXJzdFBhZ2UgPSBzbWRfYWRkUVNWYXIoJHByZXRleHRbJ3Jl cXVlc3RfdXJpJ10sICRnYWxsSUQsIDEpOw0KCQkJJGxhc3RQYWdlID0gc21kX2FkZFFTVmFy KCRwcmV0ZXh0WydyZXF1ZXN0X3VyaSddLCAkZ2FsbElELCAkbnVtUGFnZXMpOw0KDQoJCQkv LyBMYWJlbHMgY2FuIGJlIHNwZWNpZmllZCBpbiB0aGUgcmVwbGFjZW1lbnQgdGFnIGFmdGVy IGEgcGFyYW1kZWxpbS4NCgkJCS8vICdlYXJsaWVyJyBhbmQgJ2xhdGVyJyBkb24ndCBoYXZl IGxhYmVscy4gQW55dGhpbmcgc3BlY2lmaWVkIGFmdGVyIHBhcmFtZGVsaW0gaXMgdGhlIG1h eCBudW1iZXIgb2YgcGFnZXMgdG8gc2hvdzsgZW1wdHkgPSBhbGwgcGFnZXMNCgkJCSRsYWJl bCA9IGFycmF5KA0KCQkJCQkne25hdmZpcnN0fScgPT4gJ0ZpcnN0JywNCgkJCQkJJ3tuYXZw cmV2fScgPT4gJyZsYXF1bzsnLA0KCQkJCQkne25hdmVhcmxpZXJ9JyA9PiAnJywNCgkJCQkJ J3tuYXZ0aGlzfScgPT4gJHRodW1QYWdlLA0KCQkJCQkne25hdnRoaXN1cmx9JyA9PiAkdGh1 bVBhZ2UsDQoJCQkJCSd7bmF2bGF0ZXJ9JyA9PiAnJywNCgkJCQkJJ3tuYXZuZXh0fScgPT4g JyZyYXF1bzsnLA0KCQkJCQkne25hdmxhc3R9JyA9PiAnTGFzdCcsDQoJCQkJKTsNCg0KCQkJ JGxhYmVsUkUgPSAnL1x7KG5hdlthLXpdKyknLiRwYXJhbWRlbGltLicoLis/KVx9Lyc7DQoJ CQkkbnVtTGFiZWxzID0gcHJlZ19tYXRjaF9hbGwoJGxhYmVsUkUsICRwYWdlZm9ybSwgJGxh YmVscyk7DQoNCgkJCWZvciAoJGxhYmVsQ3RyID0gMDsgJGxhYmVsQ3RyIDwgJG51bUxhYmVs czsgJGxhYmVsQ3RyKyspIHsNCgkJCQkkZmllbGRuYW1lID0gJ3snLiRsYWJlbHNbMV1bJGxh YmVsQ3RyXS4nfSc7DQoJCQkJJGxhYmVsWyRmaWVsZG5hbWVdID0gJGxhYmVsc1syXVskbGFi ZWxDdHJdOw0KCQkJCSRwYWdlZm9ybSA9IHN0cl9yZXBsYWNlKCRsYWJlbHNbMF1bJGxhYmVs Q3RyXSwgJ3snLiRsYWJlbHNbMV1bJGxhYmVsQ3RyXS4nfScsICRwYWdlZm9ybSk7DQoJCQl9 DQoNCgkJCWlmICgkZGVidWcgPiAxKSB7DQoJCQkJZWNobyAiKysgUEFHSU5HIExBQkVMUyAr KyI7DQoJCQkJZG1wKCRsYWJlbCk7DQoJCQl9DQoNCgkJCS8vIEdlbmVyYXRlICdlYXJsaWVy JyBhbmQgJ2xhdGVyJyBsaXN0cw0KCQkJJG51bUVhcmxpZXIgPSBpbnR2YWwoJGxhYmVsWyd7 bmF2ZWFybGllcn0nXSk7DQoJCQkkbnVtTGF0ZXIgPSBpbnR2YWwoJGxhYmVsWyd7bmF2bGF0 ZXJ9J10pOw0KCQkJJG51bUVhcmxpZXIgPSAoJG51bUVhcmxpZXIgJiYgKCR0aHVtUGFnZS0k bnVtRWFybGllciA+IDEpKSA/ICRudW1FYXJsaWVyIDogJHRodW1QYWdlLTE7DQoJCQkkbnVt TGF0ZXIgPSAoJG51bUxhdGVyICYmICgkdGh1bVBhZ2UrJG51bUxhdGVyIDwgJG51bVBhZ2Vz KSkgPyAkbnVtTGF0ZXIgOiAkbnVtUGFnZXMtJHRodW1QYWdlOw0KCQkJJG5hdkVhcmxpZXIg PSAkbmF2TGF0ZXIgPSBhcnJheSgpOw0KCQkJZm9yICgkaWR4ID0gJHRodW1QYWdlLSRudW1F YXJsaWVyOyAkaWR4IDwgJHRodW1QYWdlOyAkaWR4KyspIHsNCgkJCQkkbmF2RWFybGllcltd ID0gJzxhIGhyZWY9Iicuc21kX2FkZFFTVmFyKCRwcmV0ZXh0WydyZXF1ZXN0X3VyaSddLCAk Z2FsbElELCAkaWR4KS4nIj4nLiRpZHguJzwvYT4nOw0KCQkJfQ0KCQkJZm9yICgkaWR4ID0g JHRodW1QYWdlKzE7ICRpZHggPD0gJHRodW1QYWdlKyRudW1MYXRlcjsgJGlkeCsrKSB7DQoJ CQkJJG5hdkxhdGVyW10gPSAnPGEgaHJlZj0iJy5zbWRfYWRkUVNWYXIoJHByZXRleHRbJ3Jl cXVlc3RfdXJpJ10sICRnYWxsSUQsICRpZHgpLiciPicuJGlkeC4nPC9hPic7DQoJCQl9DQoJ CQkkbmF2RWFybGllciA9IGRvV3JhcCgkbmF2RWFybGllciwgJycsICRuYXZicmVhaywgJycp Ow0KCQkJJG5hdkxhdGVyID0gZG9XcmFwKCRuYXZMYXRlciwgJycsICRuYXZicmVhaywgJycp Ow0KDQoJCQkvLyBNYWtlIHVwIHRoZSByZXBsYWNlbWVudHMgYXJyYXkgZm9yIHBhZ2Vmb3Jt DQoJCQkkcmVwbGFjZW1lbnRzID0gYXJyYXkoDQoJCQkJCSd7bmF2Zmlyc3R9JyA9PiAoKCRw cmV2KSA/IGRvVGFnKCc8YSBocmVmPSInLiRmaXJzdFBhZ2UuJyI+Jy4kbGFiZWxbJ3tuYXZm aXJzdH0nXS4nPC9hPicsICRuYXZicmVhaykgOiBkb1RhZygkbGFiZWxbJ3tuYXZmaXJzdH0n XSwgJG5hdmJyZWFrLCAkZW1wdHljbGFzcykpLA0KCQkJCQkne25hdnByZXZ9JyA9PiAoKCRw cmV2KSA/IGRvVGFnKCc8YSBocmVmPSInLiRwcmV2UGFnZS4nIj4nLiRsYWJlbFsne25hdnBy ZXZ9J10uJzwvYT4nLCAkbmF2YnJlYWspIDogZG9UYWcoJGxhYmVsWyd7bmF2cHJldn0nXSwg JG5hdmJyZWFrLCAkZW1wdHljbGFzcykpLA0KCQkJCQkne25hdmVhcmxpZXJ9JyA9PiAkbmF2 RWFybGllciwNCgkJCQkJJ3tuYXZ0aGlzfScgPT4gZG9UYWcoJGxhYmVsWyd7bmF2dGhpc30n XSwgJG5hdmJyZWFrLCAnY3VycmVudCAnLiRlbXB0eWNsYXNzKSwNCgkJCQkJJ3tuYXZ0aGlz dXJsfScgPT4gZG9UYWcoJzxhIGhyZWY9IicuJHRoaXNQYWdlLiciPicuJGxhYmVsWyd7bmF2 dGhpc3VybH0nXS4nPC9hPicsICRuYXZicmVhaywgJ2N1cnJlbnQnKSwNCgkJCQkJJ3tuYXZs YXRlcn0nID0+ICRuYXZMYXRlciwNCgkJCQkJJ3tuYXZuZXh0fScgPT4gKCgkbmV4dCkgPyBk b1RhZygnPGEgaHJlZj0iJy4kbmV4dFBhZ2UuJyI+Jy4kbGFiZWxbJ3tuYXZuZXh0fSddLic8 L2E+JywgJG5hdmJyZWFrKSA6IGRvVGFnKCRsYWJlbFsne25hdm5leHR9J10sICRuYXZicmVh aywgJGVtcHR5Y2xhc3MpKSwNCgkJCQkJJ3tuYXZsYXN0fScgPT4gKCgkbmV4dCkgPyBkb1Rh ZygnPGEgaHJlZj0iJy4kbGFzdFBhZ2UuJyI+Jy4kbGFiZWxbJ3tuYXZsYXN0fSddLic8L2E+ JywgJG5hdmJyZWFrKSA6IGRvVGFnKCRsYWJlbFsne25hdmxhc3R9J10sICRuYXZicmVhaywg JGVtcHR5Y2xhc3MpKSwNCgkJCQkJJ3t0b3RhbGltYWdlc30nID0+ICRudW1JbWFnZXMsDQoJ CQkJCSd7dG90YWxwYWdlc30nID0+ICRudW1QYWdlcywNCgkJCQkJJ3ttYXhpbWFnZXN9JyA9 PiAkYWxsSW1hZ2VzLA0KCQkJCSk7DQoNCgkJCWlmICgkZGVidWcgPiAwKSB7DQoJCQkJZWNo byAiKysgUEFHSU5HIFJFUExBQ0VNRU5UUyArKyI7DQoJCQkJZG1wKCRyZXBsYWNlbWVudHMp Ow0KCQkJfQ0KCQkJLy8gUGVyZm9ybSBhbGwgc3Vic3RpdHV0aW9ucyBhbmQgd3JhcCB0aGUg ZW50aXJlIGxvdCBpZiByZXF1aXJlZA0KCQkJJG5hdm91dFtdID0gcGFyc2Uoc3RydHIoJHBh Z2Vmb3JtLCAkcmVwbGFjZW1lbnRzKSk7DQoJCQkkb3V0W10gPSBkb1dyYXAoJG5hdm91dCwg JG5hdndyYXB0YWcsICcnLCAkbmF2Y2xhc3MpOw0KCQl9DQoJCWlmICgkZGVidWcgPiAyKSB7 DQoJCQllY2hvICIrKyBGSU5BTCBPVVRQVVQgKysiOw0KCQkJZG1wKCRvdXQpOw0KCQl9DQoJ fQ0KDQoJcmV0dXJuIGRvV3JhcCgkb3V0LCAkd3JhcHRhZywgJGJyZWFrLCAkY2xhc3MpOw0K fQ0KDQovLyBSZXR1cm4gYW4gZXhwYW5kZWQgbGlzdCBvZiBpdGVtczoNCi8vIDEpIEFueXRo aW5nIGNvbnRhaW5pbmcgJz8nIG9yICchJyBpcyBjaGVja2VkIGZvciBhIG1hdGNoIHdpdGgg YSBUWFAgZmllbGQNCi8vIDIpIEFueSByYW5nZXMgb2YgaXRlbXMgYXJlIGV4cGFuZGVkIChl LmcuIDQtNyA9IDQsNSw2LDcpDQovLyAzKSBUWFAgZmllbGRzIG1heSB0aGVtc2VsdmVzIGJl IGxpc3RzIG9yIHJhbmdlcw0KLy8gNCkgQW55dGhpbmcgdGhhdCBpcyBub3QgYSBUWFAgZmll bGQgaXMgdXNlZCB2ZXJiYXRpbQ0KLy8gNSkgVGhlIGl0ZW1zIGFyZSByZXR1cm5lZCBhcyAy IGxpc3RzOyBpbmNsdXNpb24gYW5kIGV4Y2x1c2lvbg0KLy8gQXJnczoNCi8vICBsc3QgPSB0 aGUgbGlzdCBhcyBhIGRlbGltaXRlZCBzdHJpbmcNCi8vICBybmcgPSB3aGV0aGVyIHRvIGFs bG93IHJhbmdlcyBvciBub3QgKGJvb2wpDQovLyAgc3ViID0gdGhlIHR5cGUgb2Ygc3ViY2F0 ZWdvcnkgdG8gdHJhdmVyc2UgKGltYWdlLCBmaWxlLCBsaW5rLCBhcnRpY2xlLCBub25lPSIi KSBhbmQgaG93IG1hbnkgbGV2ZWxzIHRvIGdvIGRvd24gKGUuZy4gaW1hZ2U6MikNCi8vICBx dGUgPSB3aGV0aGVyIHRvIHF1b3RlIGVhY2ggaXRlbSBpbiB0aGUgYXJyYXkgb3Igbm90IChi b29sKQ0KLy8gIGRsbSA9IHRoZSBkZWxpbWl0ZXIgKHN0cmluZykNCmlmICghZnVuY3Rpb25f ZXhpc3RzKCJzbWRfZG9MaXN0IikpIHsNCmZ1bmN0aW9uIHNtZF9kb0xpc3QoJGxzdCwgJHJu Zz10cnVlLCAkc3ViPSIiLCAkcXRlPXRydWUsICRkbG09IiwiKSB7DQoJZ2xvYmFsICR0aGlz YXJ0aWNsZSwgJHByZXRleHQ7DQoNCgkkaW5jID0gJGV4YyA9IGFycmF5KCk7DQoJJGxzdCA9 IGRvX2xpc3QoJGxzdCwgJGRsbSk7DQoJJG1vZFJFID0gJy8oXD98XCEpKFtBLVphLXowLTlf XC0gXSspLyc7DQoJZm9yZWFjaCAoJGxzdCBhcyAkaXRlbSkgew0KCQkkbW9kID0gMDsgLy8g MCA9IGluY2x1ZGUsIDEgPSBleGNsdWRlDQoJCSRudW1Nb2RzID0gcHJlZ19tYXRjaF9hbGwo JG1vZFJFLCAkaXRlbSwgJG1vZHMpOw0KDQoJCWZvciAoJG1vZEN0ciA9IDA7ICRtb2RDdHIg PCAkbnVtTW9kczsgJG1vZEN0cisrKSB7DQoJCQkvLyBtb2QgInR5cGUiIGlzIGdvdmVybmVk IGJ5IHRoZSBmaXJzdCBvbmUgZm91bmQgb25seS4gaS5lLiBpZiAiYXJ0aWNsZS0/YyFzIiB3 YXMgdXNlZCBpbiBvbmUgZmllbGQNCgkJCS8vIGl0IHdvdWxkIGJlIGFuICJpbmNsdWRlIiBv ZiB0aGUgd29yZCAiYXJ0aWNsZS0iIHBsdXMgdGhlIGNhdGVnb3J5IGFuZCBzZWN0aW9uIGNv bmNhdGVuYXRlZA0KCQkJJG1vZCA9ICgkbW9kc1sxXVswXSA9PT0gIiEiKSA/IDEgOiAwOw0K CQkJJG1vZENoYXIgPSAkbW9kc1sxXVskbW9kQ3RyXTsNCgkJCSRtb2RJdGVtID0gdHJpbSgk bW9kc1syXVskbW9kQ3RyXSk7DQoJCQkkbG93aXRlbSA9IHN0cnRvbG93ZXIoJG1vZEl0ZW0p Ow0KCQkJaWYgKGFycmF5X2tleV9leGlzdHMoJGxvd2l0ZW0sICRwcmV0ZXh0KSkgew0KCQkJ CSRpdGVtID0gc3RyX3JlcGxhY2UoJG1vZENoYXIuJG1vZEl0ZW0sICRwcmV0ZXh0WyRsb3dp dGVtXSwgJGl0ZW0pOw0KCQkJfSBlbHNlIGlmIChpc3NldCgkdGhpc2FydGljbGVbJGxvd2l0 ZW1dKSkgew0KCQkJCSRpdGVtID0gc3RyX3JlcGxhY2UoJG1vZENoYXIuJG1vZEl0ZW0sICR0 aGlzYXJ0aWNsZVskbG93aXRlbV0sICRpdGVtKTsNCgkJCX0gZWxzZSB7DQoJCQkJJGl0ZW0g PSBzdHJfcmVwbGFjZSgkbW9kQ2hhci4kbW9kSXRlbSwgJG1vZEl0ZW0sICRpdGVtKTsNCgkJ CX0NCgkJfQ0KDQoJCS8vIEhhbmRsZSByYW5nZXMgb2YgdmFsdWVzDQoJCWlmICgkcm5nICYm IHByZWdfbWF0Y2goJy9eKFxkKylcLShcZCspJC8nLCAkaXRlbSkpIHsNCgkJCWxpc3QoJGxv LCAkaGkpID0gZXhwbG9kZSgiLSIsICRpdGVtLCAyKTsNCgkJCSRpdGVtID0gaW1wbG9kZSgk ZGxtLCByYW5nZSgkbG8sICRoaSkpOw0KCQl9DQoNCgkJLy8gSXRlbSBtYXkgYmUgZW1wdHk7 IGlnbm9yZSBpdCBpZiBzbw0KCQlpZiAoJGl0ZW0pIHsNCgkJCSRpdGVtID0gZG9fbGlzdCgk aXRlbSwgJGRsbSk7DQoJCQkvLyBIYW5kbGUgc3ViLWNhdGVnb3JpZXMNCgkJCWlmICgkc3Vi KSB7DQoJCQkJbGlzdCgkc3VidHlwZSwgJGxldmVsKSA9IGV4cGxvZGUoIjoiLCAkc3ViKTsN CgkJCQkkbGV2ZWwgPSAoZW1wdHkoJGxldmVsKSkgPyAwIDogJGxldmVsOw0KCQkJCSRsZXZl bCA9IChzdHJ0b2xvd2VyKCRsZXZlbCk9PSJhbGwiKSA/IDk5OTk5IDogJGxldmVsOw0KCQkJ CWZvcmVhY2ggKCRpdGVtIGFzICRjYXQpIHsNCgkJCQkJJGNhdHMgPSBnZXRUcmVlKGRvc2xh c2goJGNhdCksICRzdWJ0eXBlKTsNCgkJCQkJZm9yZWFjaCAoJGNhdHMgYXMgJGpkeCA9PiAk dmFsKSB7DQoJCQkJCQlpZiAoJGNhdHNbJGpkeF1bJ2xldmVsJ10gPD0gJGxldmVsKSB7DQoJ CQkJCQkJJGl0ZW1bXSA9ICRjYXRzWyRqZHhdWyduYW1lJ107DQoJCQkJCQl9DQoJCQkJCX0N CgkJCQl9DQoJCQl9DQoNCgkJCS8vIFF1b3RlIGlmIGFza2VkDQoJCQkkaXRlbSA9ICgkcXRl KSA/IGRvQXJyYXkoJGl0ZW0sICdkb1F1b3RlJykgOiAkaXRlbTsNCgkJCWlmICgkbW9kID09 PSAwKSB7DQoJCQkJJGluYyA9IGFycmF5X3VuaXF1ZShhcnJheV9tZXJnZSgkaW5jLCAkaXRl bSkpOw0KCQkJfSBlbHNlIHsNCgkJCQkkZXhjID0gYXJyYXlfdW5pcXVlKGFycmF5X21lcmdl KCRleGMsICRpdGVtKSk7DQoJCQl9DQoJCX0NCgl9DQoJcmV0dXJuIGFycmF5KCRpbmMsICRl eGMpOw0KfQ0KfQ0KDQovLyBBbHRlcm5hdGl2ZSB0byB0aGUgY29yZSdzIGRvUXVvdGUoKS4g VGhpcyBvbmUgZGJsLXF1b3RlcyBpbnN0ZWFkIG9mIHNnbC1xdW90ZXMNCmlmICghZnVuY3Rp b25fZXhpc3RzKCJzbWRfZG9EYmxRdW90ZSIpKSB7DQpmdW5jdGlvbiBzbWRfZG9EYmxRdW90 ZSgkdmFsKSB7DQoJcmV0dXJuICciJy4kdmFsLiciJzsNCn0NCn0NCg0KLy8gV29yayBvdXQg d2hpY2ggcGFnZSB0aGlzIGdhbGxlcnkgaXMgb24gYW5kIHJldHVybiB0aGUgcmVsZXZhbnQg aW5mbw0KZnVuY3Rpb24gc21kX2dldFBhZ2UoJHJzLCAkZ2FsbElELCAkbGltaXQsICRvZmZz ZXQsICRwYWdpbmcpIHsNCgkkbnVtVGh1bXMgPSBjb3VudCgkcnMpOw0KCWlmICgoJGxpbWl0 ID4gMCkgJiYgJHBhZ2luZykgew0KCQkkbnVtUGFnZXMgPSAoJG51bVRodW1zID4gMCkgPyBj ZWlsKCRudW1UaHVtcy8kbGltaXQpIDogMTsNCgkJJHRodW1QYWdlID0gKCFncHMoJGdhbGxJ RCkpID8gMSA6IGdwcygkZ2FsbElEKTsNCgkJJG9mZnNldCA9ICgkdGh1bVBhZ2UgLSAxKSAq ICRsaW1pdDsNCgl9IGVsc2Ugew0KCQkvLyBObyBwYWdpbmcgcmVxdWlyZWQNCgkJJG51bVBh Z2VzID0gMTsNCgkJJHRodW1QYWdlID0gMTsNCgl9DQoJcmV0dXJuIGFycmF5KCRudW1UaHVt cywgJG51bVBhZ2VzLCAkdGh1bVBhZ2UsICRvZmZzZXQpOw0KfQ0KDQovLyBSZWFkIHRoZSBn aXZlbiBkZWxpbWl0ZWQgZGlyZWN0b3JpZXMgYW5kIGdldCBhbGwgZmlsZXMgdGhhdCBtYXRj aC4NCi8vIEdvIGRvd24gYXMgbWFueSBzdWJkaXIgbGV2ZWxzIGFzIGdpdmVuIGluIHRoZSAk c3ViIHBhcmFtZXRlcg0KZnVuY3Rpb24gc21kX2RvRGlyZWN0b3J5KCRsc3QsICRsdmw9MCwg JHN1Yj0wLCAkbWF0Y2g9IiIsICRkbG09IiwiLCAkY3RyPTApIHsNCglsaXN0KCRkaXJpbmMs ICRkaXJleGMpID0gc21kX2RvTGlzdCgkbHN0LCBmYWxzZSwgJHN1YiwgZmFsc2UsICRkbG0p Ow0KCWxpc3QoJG1hdGNoaW5jLCAkbWF0Y2hleGMpID0gc21kX2RvTGlzdCgkbWF0Y2gsIGZh bHNlLCAnJywgZmFsc2UsICRkbG0pOw0KCSRtYXRjaGluYyA9ICIuKiIgLigoJG1hdGNoaW5j KSA/ICIoIiAuaW1wbG9kZSgifCIsJG1hdGNoaW5jKS4iKSsuKiIgOiAiIik7DQoJJG1hdGNo ZXhjID0gKCRtYXRjaGV4YykgPyAiLiooIiAuaW1wbG9kZSgifCIsJG1hdGNoZXhjKS4iKSsu KiIgOiAic21kX2dscnlfIi5tdF9yYW5kKCk7DQoNCgkkc3ViID0gKGVtcHR5KCRzdWIpKSA/ IDAgOiAkc3ViOw0KCSRzdWIgPSAoc3RydG9sb3dlcigkc3ViKT09ImFsbCIpID8gOTk5OTkg OiAkc3ViOw0KCSRmaWxlTGlzdCA9IGFycmF5KCk7DQoJZm9yZWFjaCAoJGRpcmluYyBhcyAk ZGlyKSB7DQoJCWlmICgkaGFuZGxlID0gQG9wZW5kaXIoJGRpcikpIHsNCgkJCXdoaWxlICgo JGZpbGUgPSBAcmVhZGRpcigkaGFuZGxlKSkgIT09IGZhbHNlKSB7DQoJCQkJJGZ1bGxwYXRo ID0gJGRpci5EUy4kZmlsZTsNCgkJCQlpZiAocHJlZ19tYXRjaCgiLyIuJG1hdGNoaW5jLiIv IiwgJGZ1bGxwYXRoKSAmJiAhcHJlZ19tYXRjaCgiLyIuJG1hdGNoZXhjLiIvIiwgJGZ1bGxw YXRoKSkgew0KCQkJCQlpZiAoaXNfZGlyKCRmdWxscGF0aCkpIHsNCgkJCQkJCWlmICgoJGZp bGUgPT0gIi4iKSB8fCAoJGZpbGU9PSAiLi4iKSB8fCAoaW5fYXJyYXkoJGZpbGUsICRkaXJl eGMpKSB8fCAoJGx2bCA+PSAkc3ViKSkgew0KCQkJCQkJCWNvbnRpbnVlOw0KCQkJCQkJfSBl bHNlIHsNCgkJCQkJCQkvLyBSZWN1cnNlIHRoZSBzdWJkaXIuIE5vdGUgdGhhdCB0aGUgJyEn IGlzIHRlbXBvcmFyaWx5IGFkZGVkIGJhY2sgdG8gZWFjaCBkaXJleGMgaXRlbQ0KCQkJCQkJ CSR0bXAgPSAkZGlyZXhjOyAvLyBEb24ndCBvdmVyd3JpdGUgdGhlIG9yaWdpbmFsIGFycmF5 DQoJCQkJCQkJYXJyYXlfdW5zaGlmdCgkdG1wLCAkZnVsbHBhdGgpOw0KCQkJCQkJCSRzdWJG aWxlcyA9IHNtZF9kb0RpcmVjdG9yeShpbXBsb2RlKCRkbG0uIiEiLCAkdG1wKSwgJGx2bCsx LCAkc3ViLCAkbWF0Y2gsICRkbG0sICRjdHIpOw0KCQkJCQkJCSRmaWxlTGlzdCA9IGFycmF5 X21lcmdlKCRmaWxlTGlzdCwgJHN1YkZpbGVzKTsNCgkJCQkJCQkkY3RyICs9IGNvdW50KCRz dWJGaWxlcyk7DQoJCQkJCQkJY29udGludWU7DQoJCQkJCQl9DQoJCQkJCX0gZWxzZSB7DQoJ CQkJCQkkZmlsZXN0YXQgPSBzdGF0KCRmdWxscGF0aCk7DQoJCQkJCQkkaW1nc2l6ZSA9IGdl dGltYWdlc2l6ZSgkZnVsbHBhdGgpOw0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWydwYXRoJ10g PSAkZGlyOw0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWyduYW1lJ10gPSBiYXNlbmFtZSgkZnVs bHBhdGgpOw0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWydpZCddID0gcHJlZ19yZXBsYWNlKCcv XC4uKyQvJywgJycsICRmaWxlKTsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnYWx0J10gPSAn JzsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnY2FwdGlvbiddID0gJyc7DQoJCQkJCQkkcGFy dHMgPSBleHBsb2RlKERTLCAkZGlyKTsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnY2F0ZWdv cnknXSA9IChjb3VudCgkcGFydHMpID4gMSkgPyBlbmQoJHBhcnRzKSA6ICcnOw0KCQkJCQkJ JGZpbGVMaXN0WyRjdHJdWydhdXRob3InXSA9IHN0cnZhbCgkZmlsZXN0YXRbJ3VpZCddKTsN CgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnZGF0ZSddID0gc3RyZnRpbWUoIiVZLSVtLSVkICVI OiVNOiVTIiwgJGZpbGVzdGF0WydjdGltZSddKTsNCgkJCQkJCSRwYXJ0cyA9IGV4cGxvZGUo Ii4iLCAkZmlsZSk7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ2V4dCddID0gKGNvdW50KCRw YXJ0cykgPiAxKSA/ICIuIi5lbmQoJHBhcnRzKSA6ICcnOw0KCQkJCQkJJGZpbGVMaXN0WyRj dHJdWyd3J10gPSAoaXNfYXJyYXkoJGltZ3NpemUpKSA/IHN0cnZhbCgkaW1nc2l6ZVswXSkg OiAnJzsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnaCddID0gKGlzX2FycmF5KCRpbWdzaXpl KSkgPyBzdHJ2YWwoJGltZ3NpemVbMV0pIDogJyc7DQoJCQkJCX0NCgkJCQkJJGN0cisrOw0K CQkJCX0NCgkJCX0NCgkJfQ0KCQlpZiAoJGhhbmRsZSkgew0KCQkJQGNsb3NlZGlyKCRoYW5k bGUpOw0KCQl9DQoJfQ0KCXJldHVybiAkZmlsZUxpc3Q7DQp9DQoNCmlmICghZnVuY3Rpb25f ZXhpc3RzKCJzbWRfcmVtb3ZlUVNWYXIiKSkgew0KZnVuY3Rpb24gc21kX3JlbW92ZVFTVmFy KCR1cmwsICRrZXkpIHsNCgkkdXJsID0gcHJlZ19yZXBsYWNlKCcvKC4qKShcP3wmKScgLiAk a2V5IC4gJz1bXiZdKz8oJikoLiopL2knLCAnJDEkMiQ0JywgJHVybCAuICcmJyk7DQoJJHVy bCA9IHN1YnN0cigkdXJsLCAwLCAtMSk7DQoJcmV0dXJuICgkdXJsKTsNCn0NCn0NCg0KaWYg KCFmdW5jdGlvbl9leGlzdHMoInNtZF9hZGRRU1ZhciIpKSB7DQpmdW5jdGlvbiBzbWRfYWRk UVNWYXIoJHVybCwgJGtleSwgJHZhbHVlKSB7DQoJJHVybCA9IHNtZF9yZW1vdmVRU1Zhcigk dXJsLCAka2V5KTsNCglpZiAoc3RycG9zKCR1cmwsICc/JykgPT09IGZhbHNlKSB7DQoJCXJl dHVybiAoJHVybCAuICc/JyAuICRrZXkgLiAnPScgLiAkdmFsdWUpOw0KCX0gZWxzZSB7DQoJ CXJldHVybiAoJHVybCAuICcmJyAuICRrZXkgLiAnPScgLiAkdmFsdWUpOw0KCX0NCn0NCn0N CiI7czo0OiJ0eXBlIjtzOjE6IjAiO3M6NDoiaGVscCI7czo0MzQ5NzoiCTxwPjxkaXYgaWQ9 InNtZF9oZWxwIj48L3A+CgoJPGgxIGlkPSJ0b3AiPnNtZF9nYWxsZXJ5PC9oMT4KCgk8aDIg aWQ9ImNvbnRlbnRzIj5Db250ZW50czwvaDI+CgoJPHVsPgoJCTxsaT48YSBocmVmPSIjZmVh dHVyZXMiPkZlYXR1cmVzPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNhdXRob3IiPkF1dGhv cjwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjaW5zdGFsbCI+SW5zdGFsbGF0aW9uIC8gVW5p bnN0YWxsYXRpb248L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3VzYWdlIj5UYWcgdXNhZ2U8 L2E+Cgk8dWw+CgkJPGxpPjxhIGhyZWY9IiNzbWRfZ2FsbGVyeSI+c21kX2dhbGxlcnk8L2E+ PC9saT4KCQk8bGk+PGEgaHJlZj0iI2dhbGxlcnlfZm9ybSI+R2FsbGVyeSBmb3JtPC9hPgoJ PHVsPgoJCTxsaT48YSBocmVmPSIjcmVwX2dhbGxlcnkiPlJlcGxhY2VtZW50IHRhZ3M8L2E+ PC9saT4KCTwvdWw+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3BhZ2luZ19mb3JtIj5QYWdpbmcg Zm9ybTwvYT4KCTx1bD4KCQk8bGk+PGEgaHJlZj0iI3JlcF9wYWdpbmciPlJlcGxhY2VtZW50 IHRhZ3M8L2E+PC9saT4KCTwvdWw+PC9saT4KCQk8bGk+PGEgaHJlZj0iI2NvbWJvcyI+Q29t Ym9zPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNjb2xsYXRlX21vZGUiPkNvbGxhdGUgbW9k ZTwvYT48L2xpPgoJPC91bD48L2xpPgoJCTxsaT48YSBocmVmPSIjZXhhbXBsZXMiPkV4YW1w bGVzPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNjaGFuZ2Vsb2ciPkNoYW5nZWxvZzwvYT48 L2xpPgoJCTxsaT48YSBocmVmPSIjY3JlZGl0cyI+Q3JlZGl0czwvYT48L2xpPgoJPC91bD4K Cgk8aDIgaWQ9ImZlYXR1cmVzIj5GZWF0dXJlczwvaDI+CgoJPHVsPgoJCTxsaT5TdXBwb3J0 cyBhbGwgY3VycmVudCBhbmQgKHByb2JhYmx5KSBmdXR1cmUgZ2FsbGVyeSBzY3JpcHRzIGlu Y2x1ZGluZyB0aHVtYnBvcCwgcm9sbG92ZXIsIHRvb2x0aXAsIGxpZ2h0Ym94LCBsaXRlYm94 LCBzbGltYm94LCBtb29uYm94LCB0aGlja2JveCwgc2xpZGVzaG93LCBmYW5jeXpvb20sIGV0 YzwvbGk+CgkJPGxpPlB1bGwgaW1hZ2VzIGZyb20gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5U WFA8L3NwYW4+IGRhdGFiYXNlIChvciBvcHRpb25hbGx5IGEgbGlzdCBvZiBkaXJlY3Rvcmll cykgdGhhdCBtYXRjaCBjYXRlZ29yaWVzIG9yIElEczwvbGk+CgkJPGxpPlVzZSBhcnRpY2xl IGZpZWxkcyB0byBob2xkIGxpc3RzIG9mIGltYWdlIGNhdGVnb3JpZXMvSURzIGZvciBhcnRp Y2xlLXNwZWNpZmljIGdhbGxlcmllczwvbGk+CgkJPGxpPk11bHRpLWxldmVsIHN1Yi1jYXRl Z29yeSBzdXBwb3J0PC9saT4KCQk8bGk+R2FsbGVyeSBsYXlvdXQgaXMgZGVmaW5lZCBpbiBh IDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZvcm08L2xpPgoJCTxsaT5EaXJlY3Qt YWNjZXNzIHBhZ2luYXRpb24gaXMgc3VwcG9ydGVkIGFuZCB0aGUgbGF5b3V0IG9mIHBhZ2lu ZyBmZWF0dXJlcyBpcyBjb250cm9sbGVkIGJ5IGEgc2Vjb25kIGZvcm08L2xpPgoJCTxsaT5V c2VzIGEgdGFnLXJlcGxhY2VtZW50IHN5c3RlbSBsaWtlIHRoZSB3ZXRfZm9yX2VhY2hfaW1h Z2UgcGx1Z2luPC9saT4KCTwvdWw+CgoJPGgyIGlkPSJhdXRob3IiPkF1dGhvcjwvaDI+CgoJ PHA+PGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL2NvbW1lbnRGb3JtIj5TdGVmIERh d3NvbjwvYT4uIEZvciBvdGhlciBzb2Z0d2FyZSBieSBtZSwgb3IgdG8gbWFrZSBhIGRvbmF0 aW9uLCBzZWUgdGhlIDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9zdyI+c29mdHdh cmUgcGFnZTwvYT4uPC9wPgoKCTxoMiBpZD0iaW5zdGFsbCI+SW5zdGFsbGF0aW9uIC8gVW5p bnN0YWxsYXRpb248L2gyPgoKCTxwPkRvd25sb2FkIHRoZSBwbHVnaW4gZnJvbSBlaXRoZXIg PGEgaHJlZj0iaHR0cDovL3RleHRwYXR0ZXJuLm9yZy9wbHVnaW5zLzk1Ny9zbWRfZ2FsbGVy eSI+dGV4dHBhdHRlcm4ub3JnPC9hPiwgb3IgdGhlIDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3 c29uLmNvbS9zdyI+c29mdHdhcmUgcGFnZTwvYT4sIHBhc3RlIHRoZSBjb2RlIGludG8gdGhl IDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IEFkbWluIC0mZ3Q7IFBsdWdpbnMgcGFu ZSwgaW5zdGFsbCBhbmQgZW5hYmxlIHRoZSBwbHVnaW4uIFZpc2l0IHRoZSA8YSBocmVmPSJo dHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/aWQ9MjY0ODIiPmZv cnVtIHRocmVhZDwvYT4gZm9yIG1vcmUgaW5mbyBvciB0byByZXBvcnQgb24gdGhlIHN1Y2Nl c3Mgb3Igb3RoZXJ3aXNlIG9mIHRoZSBwbHVnaW4uPC9wPgoKCTxwPlRvIHJlbW92ZSB0aGUg cGx1Z2luLCBzaW1wbHkgZGVsZXRlIGl0IGZyb20gdGhlIEFkbWluLSZndDtQbHVnaW5zIHRh Yi48L3A+CgoJPGgyIGlkPSJ1c2FnZSI+VXNhZ2U8L2gyPgoKCTxwPkZvciBzb21lIGlkZWFz IG9uIHVzYWdlIHNjZW5hcmlvcywgc2VlIHRoZSA8YSBocmVmPSIjZXhhbXBsZXMiPmV4YW1w bGVzPC9hPi48L3A+CgoJPHA+VGhlIGdlbmVyYWwgaWRlYSBpcyB0aGF0IHRoaXMgcGx1Z2lu IGFjdHMgYXMgYSBmbGV4aWJsZSBpbWFnZSBmaWx0ZXI7IG5vdGhpbmcgbW9yZS4gVGhlIHBs dWdpbiBvcHRpb25zIGdvdmVybiB3aGF0IGltYWdlcyBhcmUgcHVsbGVkIG91dCBvZiB0aGUg ZGF0YWJhc2UgYW5kIHRoZXkgYXJlIHNvcnRlZCBpbnRvIHdoYXRldmVyIG9yZGVyIHlvdSBs aWtlLjwvcD4KCgk8cD5BZnRlciB0aGF0LCBlYWNoIGltYWdlICYjODIxMjsgb25lIGJ5IG9u ZSAmIzgyMTI7IGhhcyBhbGwgaXRzIGF0dHJpYnV0ZXMgcGFzc2VkIHRvIHRoZSA8Y29kZT5m b3JtPC9jb2RlPiBvZiB5b3VyIGNob2ljZTsgeW91IHNpbXBseSBjaG9vc2UgdG8gZGlzcGxh eSB3aGljaGV2ZXIgaW1hZ2UgYXR0cmlidXRlcyB5b3UgbGlrZSBpbiB0aGlzIGZvcm0uIFRo aXMgbWVhbnMgYW55IGltYWdlIGF0dHJpYnV0ZXMgY2FuIGJlICYjODIyMDtpbmplY3RlZCYj ODIyMTsgZGlyZWN0bHkgaW50byBhbnkgbWFya3VwOyBpdCBjb3VsZCBiZSA8c3BhbiBjbGFz cz0iY2FwcyI+VFhQPC9zcGFuPiB0YWdzLCBpdCBjb3VsZCBiZSBjb250ZW50LCBpdCBjb3Vs ZCBiZSBqYXZhc2NyaXB0LCBvciA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPjsgYW55 dGhpbmcuIFBhZ2luYXRpb24gd29ya3MgdGhlIHNhbWUgd2F5LCBhbGxvd2luZyB5b3UgdG8g c3BlY2lmeSBob3cgdXNlcnMgY2FuIHN0ZXAgdGhyb3VnaCB5b3VyIGltYWdlIGdhbGxlcmll cy48L3A+CgoJPHA+VGhlcmUgaXMgYWxzbyBhIHNwZWNpYWwgbW9kZSBjYWxsZWQgJiM4MjIw O2NvbGxhdGUmIzgyMjE7IHRoYXQgYWxsb3dzIHlvdSB0byBjb2xsZWN0IGFsbCBpbWFnZSBh dHRyaWJ1dGVzIHRvZ2V0aGVyIGludG8gYSBzZXJpZXMgb2YgYmlnIGxvbmcgbGlzdHMgPGVt PndpdGhvdXQ8L2VtPiBjYWxsaW5nIHRoZSBmb3JtIGV2ZXJ5IHRpbWUuIFRoZSBmb3JtIGlz IHRoZW4gb25seSBwcm9jZXNzZWQgb25jZSBhdCB0aGUgZW5kLjwvcD4KCgk8cD5CZXR3ZWVu IHRoZXNlIHR3byBtb2RlcyB5b3UgPGVtPnNob3VsZDwvZW0+IGJlIGFibGUgdG8gcmVhbGlz ZSBhbnkgZ2FsbGVyeWluZyBzb2x1dGlvbjsgbm93IGFuZCBpbiBmdXR1cmUuPC9wPgoKCTxo MyBjbGFzcz0idGFnICIgaWQ9InNtZF9nYWxsZXJ5Ij5zbWRfZ2FsbGVyeTwvaDM+CgoJPHAg Y2xhc3M9InRhZy1zdW1tYXJ5Ij5QbGFjZSBvbmUgb3IgbW9yZSBzbWRfZ2FsbGVyeSB0YWdz IGluIGFueSBhcnRpY2xlLCBwYWdlIG9yIGZvcm0sIHN1cHBseSBhbnkgb2YgdGhlIGZvbGxv d2luZyBvcHRpb25zIHRvIGNvbmZpZ3VyZSBpdCBhbmQgdXNlIGEgZm9ybSB0byBkZWZpbmUg aG93IHRoZSBnYWxsZXJ5IGlzIGRpc3BsYXllZC48L3A+CgoJPGg0IGNsYXNzPSJhdHRzICIg aWQ9ImF0dHJpYnV0ZXMiPkF0dHJpYnV0ZXM8L2g0PgoKCTx1bCBjbGFzcz0iYXR0cyI+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+aWQ8L3NwYW4+IDogbGlzdCBvZiBpbWFnZSBJ RHMgZm9yIGluY2x1c2lvbiBpbiB0aGUgZ2FsbGVyeS4gTWF5IGJlIGludGVnZXJzIG9yIHJh bmdlcywgZm9yIGV4YW1wbGUgPGNvZGU+aWQ9JnF1b3Q7NSwgNDIsIDgtMTEmcXVvdDs8L2Nv ZGU+IHdvdWxkIGdyYWIgaW1hZ2VzIDUsIDgsIDksIDEwLCAxMSBhbmQgNDIuIFVzZSBhbiBl eGNsYW1hdGlvbiBtYXJrIGluIGZyb250IG9mIGEgbnVtYmVyIG9yIHJhbmdlIHRvIGV4Y2x1 ZGUgdGhvc2UgaW1hZ2VzPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXR0LW5hbWUiPmNhdGVnb3J5PC9zcGFuPiA6IGxpc3Qgb2YgaW1hZ2Ug Y2F0ZWdvcmllcyBmb3IgaW5jbHVzaW9uIGluIHRoZSBnYWxsZXJ5LiBZb3UgbWF5IHNwZWNp ZnkgZml4ZWQtbmFtZSBjYXRlZ29yaWVzIChlLmcuICYjODIyMDthbmltYWxzJiM4MjIxOykg b3IgYSBxdWVzdGlvbiBtYXJrIGZvbGxvd2VkIGJ5IGFuIGFydGljbGUgZmllbGQgbmFtZS4g ZS5nLiA8Y29kZT5jYXRlZ29yeT0mcXVvdDthbmltYWxzLCBhcnQtP2lkJnF1b3Q7PC9jb2Rl PiB3b3VsZCBncmFiIGFsbCBpbWFnZXMgZnJvbSB0aGUgY2F0ZWdvcmllcyBjYWxsZWQgJiM4 MjIwO2FuaW1hbHMmIzgyMjE7IGFuZCB0aGUgY2F0ZWdvcnkgY2FsbGVkICYjODIyMDthcnQt NDImIzgyMjE7IChhc3N1bWluZyB0aGUgY3VycmVudCBhcnRpY2xlIGhhcyBhbiBpZCBvZiA0 MiBvZiBjb3Vyc2UpLjxkaXYgY2xhc3M9ImJyZWFrIj5Vc2UgYW4gZXhjbGFtYXRpb24gbWFy ayB0byBleGNsdWRlIHRoZSBnaXZlbiBjYXRlZ29yeSBvciBmaWVsZC4gRmllbGRzIG1heSB0 aGVtc2VsdmVzIGNvbnRhaW4gbGlzdHMgb2YgY2F0ZWdvcmllcy4gVGhlID8gZmllbGQgbmFt ZXMgbWF5IGJlIGNvbWJpbmVkIChlLmcuID9zLT9hcnRpY2xlX2ltYWdlKSBidXQgYmUgYXdh cmUgdGhhdCBmaWVsZCBuYW1lcyBtYXkgY29udGFpbiBzcGFjZXM8L2Rpdj48L2xpPgoJPC91 bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+c3Vi bGV2ZWw8L3NwYW4+IDogYW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyBob3cgbWFueSAmIzgy MTY7bGV2ZWxzJiM4MjE3OyBkb3duIHRvIHRyYXZlcnNlIGVhY2ggbWF0Y2hpbmcgY2F0ZWdv cnkuIHN1YmxldmVsPSYjODIyMDswJiM4MjIxOyAodGhlIGRlZmF1bHQpIGlzIG9ubHkgdGhl IHRvcC1sZXZlbDsgMSA9IHRvcC1sZXZlbCBwbHVzIHRoZSAxc3Qgc3ViLWNhdDsgMiA9IHRv cC1sZXZlbCBwbHVzIHRoZSBuZXh0IDIgc3ViLWNhdHMsIGFuZCBzbyBvbi4gc3VibGV2ZWw9 JiM4MjIwO2FsbCYjODIyMTsgaXMgYWxsIHN1Yi1jYXRlZ29yaWVzPC9saT4KCTwvdWw+Cgk8 dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnNvcnQ8L3Nw YW4+IDogcmUtb3JkZXIgdGhlIGltYWdlcyBieSA8Y29kZT5jYXRlZ29yeTwvY29kZT4gKHRo ZSBkZWZhdWx0KSwgPGNvZGU+bmFtZTwvY29kZT4sIDxjb2RlPmRhdGU8L2NvZGU+LCA8Y29k ZT5pZDwvY29kZT4sIGZpbGUgPGNvZGU+ZXh0PC9jb2RlPmVuc2lvbiwgPGNvZGU+YWx0PC9j b2RlPiwgPGNvZGU+Y2FwdGlvbjwvY29kZT4sIDxjb2RlPmF1dGhvcjwvY29kZT4sIDxjb2Rl PndpZHRoPC9jb2RlPiwgPGNvZGU+aGVpZ2h0PC9jb2RlPiwgPGNvZGU+aGFzdGh1bWI8L2Nv ZGU+IGluIGVpdGhlciA8Y29kZT5hc2M8L2NvZGU+ZW5kaW5nIG9yIDxjb2RlPmRlc2M8L2Nv ZGU+ZW5kaW5nIG9yZGVyLiBUd28gc3BlY2lhbCBjYXNlcyBleGlzdDogPGNvZGU+Zml4ZWQ8 L2NvZGU+IG1haW50YWlucyB0aGUgb3JkZXIgeW91IHNwZWNpZmllZCBpbiB0aGUgaWQgYXR0 cmlidXRlLCB3aGlsZSA8Y29kZT5yYW5kb208L2NvZGU+IHNodWZmbGVzIHRoZSBvcmRlci48 ZGl2IGNsYXNzPSJicmVhayI+Tm90ZSB0aGF0IGlmIDxjb2RlPnJhbmRvbTwvY29kZT4gYXBw ZWFycyBhcyB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgbGlzdCwgcmFuZG9tIGltYWdlcyB3aWxs IGJlIHB1bGxlZCBmcm9tIHRoZSBkYXRhYmFzZSBhbmQgdGhleSB3aWxsIHRoZW4gYmUgc29y dGVkIGFjY29yZGluZyB0byB0aGUgb3JkZXIgbGlzdGVkIGFmdGVyIGl0LiBJZiA8Y29kZT5y YW5kb208L2NvZGU+IGFwcGVhcnMgYW55d2hlcmUgZWxzZSBpbiB0aGUgbGlzdCwgYW55IHNv cnQgaXRlbXMgYmVmb3JlIGl0IHdpbGwgZGV0ZXJtaW5lIHRoZSBvcmRlciBvZiBkYXRhIHB1 bGxlZCBmcm9tIHRoZSBkYXRhYmFzZSwgYW5kIHRoZSByZXN1bHRzIHdpbGwgdGhlbiBiZSBv cmRlcmVkIHJhbmRvbWx5IChpbiB0aGF0IGNhc2UsIGFueSBpdGVtcyBsaXN0ZWQgYWZ0ZXIg cmFuZG9tIHdpbGwgYmUgaWdub3JlZC4gPGNvZGU+Zml4ZWQ8L2NvZGU+IGlzLCBob3dldmVy LCBzdGlsbCBob25vdXJlZCk8L2Rpdj48L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+bGltaXQ8L3NwYW4+IDogdGhlIG1heGlt dW0gbnVtYmVyIG9mIGltYWdlcyB0byBzaG93IDxlbT5wZXIgcGFnZTwvZW0+LiAwIG9yIG9t aXR0ZWQgPSB1bmxpbWl0ZWQ8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+bWF4bGltaXQ8L3NwYW4+IDogdGhlIGFic29sdXRl IG1heGltdW0gbnVtYmVyIG9mIHRodW1ibmFpbHMgdG8gcHVsbCBmcm9tIHRoZSBkYXRhYmFz ZS4gMCBvciBvbWl0dGVkID0gdW5saW1pdGVkPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0 dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPm9mZnNldDwvc3Bhbj4gOiBza2lw IHRoaXMgbWFueSBpbWFnZXMgYW5kIHN0YXJ0IGNvdW50aW5nIHRoZXJlYWZ0ZXI8L2xpPgoJ PC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+ dGh1bWJsaW1pdDwvc3Bhbj4gOiB0aGUgbWF4aW11bSBudW1iZXIgb2YgdGh1bWJuYWlscyB0 byBzaG93LiAwIG9yIG9taXR0ZWQgPSBhbGwgdGh1bWJzLiBOb3RlIHRoYXQgdGhpcyBkaWZm ZXJzIGZyb20gbGltaXQ7IHlvdSBjYW4gbGF1bmNoIGEgMjAtaW1hZ2UgZ2FsbGVyeSBidXQg b25seSBzaG93IDEgdGh1bWJuYWlsIG9uIHRoZSBwYWdlPC9saT4KCTwvdWw+Cgk8dWwgY2xh c3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnRodW1ib2Zmc2V0PC9z cGFuPiA6IHNraXAgdGhpcyBtYW55IHRodW1icyBiZWZvcmUgZGlzcGxheWluZyA8Y29kZT50 aHVtYmxpbWl0PC9jb2RlPiB0aHVtYm5haWxzPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0 dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnRodW1iY2hhbmdlPC9zcGFuPiA6 IGEgbGlzdCBvZiBhdHRyaWJ1dGVzIHRvICYjODIyMDt3YXRjaCYjODIyMTs7IGkuZS4gaXQg dGVsbHMgdGhlIHBsdWdpbiB0aGF0IHlvdSB3YW50IHRvIGJlIG5vdGlmaWVkIHdoZW4gaXRl bXMgaW4gdGhpcyBsaXN0IGNoYW5nZSBjb21wYXJlZCB0byB0aGUgcHJldmlvdXMgdGh1bWJu YWlsLiBVbmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcyB0aGlzIHNob3VsZCBiZSB0aGUgc2Ft ZSBhcyB5b3VyIDxjb2RlPnNvcnQ8L2NvZGU+IHBhcmFtZXRlciBvciBlbHNlIHlvdSBjYW4g Z2V0IHNvbWUgZnJlYWt5IHJlc3VsdHMhIEl0IGRlZmF1bHRzIHRvIDxjb2RlPmNhdGVnb3J5 PC9jb2RlPi48ZGl2IGNsYXNzPSJicmVhayI+VGhpcyBhdHRyaWJ1dGUgaXMgdmVyeSB1c2Vm dWwgZm9yIHNwbGl0dGluZyBnYWxsZXJpZXMgYXQsIHNheSwgZXZlcnkgY2hhbmdlIGluIGNh dGVnb3J5IGFuZCBkaXNwbGF5aW5nIHRoZSBjYXRlZ29yeSB0aXRsZSBhYm92ZSBlYWNoIGdy b3VwLiBJdGVtcyB5b3Ugd2F0Y2ggYXJlIGFkZGVkIHRvIHRoZSBsaXN0IG9mIHJlcGxhY2Vt ZW50IHRhZ3MgYW5kIGFyZSBhdmFpbGFibGUgYnkgcHV0dGluZyAmIzgyMjA7Y2hhbmdlZDom IzgyMjE7IGluIGZyb250IG9mIHRoZWlyIG5hbWUgKGUuZy4gPGNvZGU+e2NoYW5nZWQ6Y2F0 ZWdvcnl9PC9jb2RlPiAmIzgyMTI7IHNlZSA8YSBocmVmPSIjZWc2Ij5leGFtcGxlIDY8L2E+ IGZvciBhIHJlYWwgdXNlIGNhc2UpLiBUaGUgY29sb24gZGVsaW1pdGVyIGNhbiBiZSBjaGFu Z2VkIHdpdGggdGhlIDxjb2RlPnBhcmFtZGVsaW08L2NvZGU+IGF0dHJpYnV0ZTwvZGl2Pjwv bGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1u YW1lIj50aHVtYmNoYW5nZXdyYXB0YWc8L3NwYW4+IDogdGhlIChYKUhUTUwgdGFnIHRvIHN1 cnJvdW5kIGFueSBjaGFuZ2VkIGVsZW1lbnRzIHlvdSBhcmUgd2F0Y2hpbmcgd2l0aCB0aGUg PGNvZGU+dGh1bWJjaGFuZ2U8L2NvZGU+IGF0dHJpYnV0ZS4gIFNwZWNpZnkgaXQgd2l0aG91 dCBhbmdsZSBicmFja2V0cywgZS5nLiA8Y29kZT50aHVtYmNoYW5nZXdyYXB0YWc9JnF1b3Q7 aDMmcXVvdDs8L2NvZGU+LiBEZWZhdWx0IGlzIHVuc2V0IChpLmUuIG5vIHRhZ3MpPC9saT4K CTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUi PnRodW1iY2hhbmdlY2xhc3M8L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8 L3NwYW4+IGNsYXNzIG5hbWUgdG8gYXBwbHkgdG8gYW55IGNoYW5nZWQgZWxlbWVudHMgeW91 IGFyZSB3YXRjaGluZyB3dGggdGhlIDxjb2RlPnRodW1iY2hhbmdlPC9jb2RlPiBhdHRyaWJ1 dGUuIERlZmF1bHQgaXMgdW5zZXQgKGkuZS4gbm8gY2xhc3MpPC9saT4KCTwvdWw+Cgk8dWwg Y2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnRleHQ8L3NwYW4+ IDogZGlzcGxheSB0aGUgZ2l2ZW4gdGV4dCBpbnN0ZWFkIG9mIHRodW1ibmFpbHMuIFRoZSB0 ZXh0IGNhbiBjb250YWluID8gYXJ0aWNsZSBmaWVsZHMgbGlrZSA8Y29kZT5jYXRlZ29yeTwv Y29kZT48L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdHQtbmFtZSI+dGh1bWI8L3NwYW4+IDogaWYgeW91IHdpc2ggdGhlIGZ1bGxzaXplIGlt YWdlcyBkaXNwbGF5ZWQgYXMgdGh1bWJuYWlscywgb3IgaWYgeW91IHdhbnQgdGhlIHRodW1i bmFpbCBnYWxsZXJ5IHRvIHVzZSB0aGUgZnVsbHNpemUgaW1hZ2VzLCBzcGVjaWZ5IGl0IHdp dGggdGhpcyBhdHRyaWJ1dGUuIFVzZSA8Y29kZT50aHVtYj0mcXVvdDsxJnF1b3Q7PC9jb2Rl PiB0byBzcGVjaWZ5IHRoYXQgYm90aCBmdWxsc2l6ZSBpbWFnZSBhbmQgdGh1bWJuYWlsIGRp c3BsYXkgdGhlICYjODIxNjt0JiM4MjE3OyAodGh1bWJuYWlsKSBpbWFnZS4gQ29udmVyc2Vs eSwgdXNlIDxjb2RlPnRodW1iPSZxdW90OzAmcXVvdDs8L2NvZGU+IHRvIHNwZWNpZnkgdGhh dCBib3RoIGZ1bGxzaXplIGFuZCB0aHVtYm5haWxzIHVzZSB0aGUgZnVsbCBzaXplIGltYWdl cy4gWW91IGNhbiBhbHNvIGNob29zZSBvbmUgb3IgdGhlIG90aGVyIGJ5IGdpdmluZyB0aGlz IGF0dHJpYnV0ZSB0d28gbnVtYmVycyBzZXBhcmF0ZWQgYnkgYSBjb2xvbi48ZGl2IGNsYXNz PSJicmVhayI+Rm9yICYjODIxNjtub3JtYWwmIzgyMTc7IG9wZXJhdGlvbiAmIzgyMTI7IGku ZS4gZnVsbHNpemUgaW1hZ2UgaXMgZnVsbCBzaXplLCB0aHVtYm5haWwgaXMgIHRodW1iIHNp emVkICYjODIxMjsgc3BlY2lmeSA8Y29kZT50aHVtYj0mcXVvdDswOjEmcXVvdDs8L2NvZGU+ LiBUbyByZXZlcnNlIHRoaXMsIHVzZSA8Y29kZT50aHVtYj0mcXVvdDsxOjAmcXVvdDs8L2Nv ZGU+LiBOb3RlIHRoYXQgPGNvZGU+MToxPC9jb2RlPiBhbmQgPGNvZGU+MDowPC9jb2RlPiBh bHNvIHdvcmsgdG8gc2V0IGJvdGggaW1hZ2VzIHRvIHRoZSBzYW1lIHNpemUgaWYgeW91IHBy ZWZlciB0aGF0IHN5bnRheCBvdmVyIHVzaW5nIGEgc2luZ2xlIGRpZ2l0PC9kaXY+PC9saT4K CTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUi PnRodW1ic2l6ZTwvc3Bhbj4gOiB0YWtlcyBvbmUgb3IgdHdvIGNvbW1hLXNlcGFyYXRlZCBw YXJhbWV0ZXJzIHRvIHNwZWNpZnkgd2lkdGggYW5kL29yIGhlaWdodCBvZiBhbGwgeW91ciBn YWxsZXJ5IHRodW1ibmFpbHMuIFRoZSBkZWZhdWx0IGlzIGluIHBpeGVscyBpZiB5b3UgZG9u JiM4MjE3O3Qgc3BlY2lmeSB1bml0cy4gTWlzc2luZyBvdXQgb25lIG9yIHRoZSBvdGhlciBw YXJhbWV0ZXIgKGkuZS4gaGF2aW5nIGFuICYjODIyMDtlbXB0eSYjODIyMTsgcGFyYW1ldGVy IGJlZm9yZSBvciBhZnRlciB0aGUgY29tbWEpIHdpbGwgb25seSBzZXQgb25lIG9mIHRoZSBk aW1lbnNpb25zLiBVc2luZyBvbmx5IG9uZSB2YWx1ZSwgYm90aCB3aWR0aCBhbmQgaGVpZ2h0 IHdpbGwgYmUgc2V0IHRvIHRoZSBzYW1lIHZhbHVlPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9 ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPmZvcm08L3NwYW4+IDogdGhl IDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZvcm0gdXNlZCB0byBsYXlvdXQgeW91 ciBtYXRjaGluZyBpbWFnZXM8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+cGFnZWZvcm08L3NwYW4+IDogdGhlIDxzcGFuIGNs YXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZvcm0gdXNlZCB0byBzcGVjaWZ5IHRoZSBsYXlvdXQg b2YgeW91ciBwYWdpbmcgbmF2aWdhdGlvbjwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRz Ij4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5nYWxsZXJ5aWQ8L3NwYW4+IDogdW5k ZXIgbm9ybWFsIGNpcmN1bXN0YW5jZXMgeW91IHNob3VsZCBuZXZlciBuZWVkIHRoaXMuIEVh Y2ggZ2FsbGVyeSBpcyBhc3NpZ25lZCBhIHVuaXF1ZSBJRCBiYXNlZCBvbiB0aGUgYXR0cmli dXRlcyB5b3Ugc3VwcGx5LiBJbiB0aGUgdW5saWtlbHkgZXZlbnQgdGhhdCB0d28gaWRlbnRp Y2FsIElEcyBhcmUgZ2VuZXJhdGVkIHlvdSBjYW4gb3ZlcnJpZGUgdGhlIElEIGZvciBhIGdh bGxlcnkgd2l0aCB0aGlzIGF0dHJpYnV0ZS48ZGl2IGNsYXNzPSJicmVhayI+V2hhdCB0aGUg cGx1Z2luIGRvZXMgKGludGVybmFsbHkpIGlzIGdlbmVyYXRlIGEgMzItY2hhcmFjdGVyIGhh c2ggc3RyaW5nIGZvciBlYWNoIHRhZywgdGhlbiBwaWNrcyBhIDQtY2hhciBjb2RlIGZyb20g dGhpcyBzdHJpbmcgKGl0IHRha2VzIGV2ZXJ5IDZ0aCBjaGFyYWN0ZXIgYnkgZGVmYXVsdCku IFlvdSBjYW4gc3VwcGx5IGEgdW5pcXVlIGZpeGVkIHN0cmluZyAoZS5nLiA8Y29kZT5nYWxs ZXJ5aWQ9JnF1b3Q7VGhlR2FsbGVyeTImcXVvdDs8L2NvZGU+KSBvciBnaXZlIGl0IGEgcXVl c3Rpb24gbWFyayBhbmQgMiBudW1iZXJzIHNlcGFyYXRlZCBieSBhIGNvbG9uIChlLmcuIDxj b2RlPmdhbGxlcnlpZD0mcXVvdDs/NTo0JnF1b3Q7PC9jb2RlPikuIFRoZSBmaXJzdCBudW1i ZXIgaXMgdGhlIGxlbmd0aCBvZiB0aGUgZmluYWwgc3RyaW5nIHRvIGdlbmVyYXRlLCB0aGUg c2Vjb25kIG51bWJlciBpcyBob3cgbWFueSBjaGFyYWN0ZXJzIHRvIHNraXAgb3ZlciBpbiB0 aGUgZnVsbCAzMi1jaGFyIHN0cmluZyBlYWNoIHRpbWUgaXQgcGlja3Mgb25lLjwvZGl2Pjxk aXYgY2xhc3M9ImJyZWFrIj5TbyBpbiB0aGlzIGNhc2UsIGl0IGdlbmVyYXRlcyBhIDUtY2hh cmFjdGVyIHN0cmluZyBmcm9tIHRoZSBjaGFyYWN0ZXJzIGl0IGZpbmRzIGF0IHBvc2l0aW9u cyAxLDUsOSwxMywgYW5kIDE3LiBJZiB5b3Ugb21pdCB0aGUgMm5kIG51bWJlciAoZS5nLiA8 Y29kZT5nYWxsZXJ5aWQ9JnF1b3Q7PzYmcXVvdDs8L2NvZGU+KSBpdCB3aWxsIGFzc3VtZSBp dCYjODIxNztzIGFuIGluY3JlbWVudCBvZiAxLCBzbyBpbiB0aGlzIGNhc2UgaXQmIzgyMTc7 bGwgdXNlIHRoZSAxc3QgNiBjaGFyYWN0ZXJzPC9kaXY+PC9saT4KCTwvdWw+Cgk8dWwgY2xh c3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPndyYXB0YWc8L3NwYW4+ IDogdGhlIChYKUhUTUwgdGFnIHRvIHN1cnJvdW5kIHRoZSBlbnRpcmUgZ2FsbGVyeS4gU3Bl Y2lmeSBpdCB3aXRob3V0IGFuZ2xlIGJyYWNrZXRzLCBlLmcuIDxjb2RlPndyYXB0YWc9JnF1 b3Q7ZGl2JnF1b3Q7PC9jb2RlPi4gRGVmYXVsdCBpcyB1bnNldCAoaS5lLiBubyB0YWcpPC9s aT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5h bWUiPmJyZWFrPC9zcGFuPiA6IHRoZSAoWClIVE1MIHRhZyB0byBzdXJyb3VuZCBlYWNoIHRo dW1ibmFpbC4gRGVmYXVsdCBpcyB1bnNldCAoaS5lLiBubyB0YWdzKTwvbGk+Cgk8L3VsPgoJ PHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5jbGFzczwv c3Bhbj4gOiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgbmFtZSB0 byBhcHBseSB0byB0aGUgZW50aXJlIGdhbGxlcnkuIERlZmF1bHQgaXMgdW5zZXQgKGkuZS4g bm8gY2xhc3MpPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBj bGFzcz0iYXR0LW5hbWUiPm5hdndyYXB0YWc8L3NwYW4+IDogdGhlIChYKUhUTUwgdGFnIHRv IHN1cnJvdW5kIHRoZSBlbnRpcmUgPGNvZGU+cGFnZWZvcm08L2NvZGU+LiBTcGVjaWZ5IGl0 IHdpdGhvdXQgYW5nbGUgYnJhY2tldHMsIGUuZy4gPGNvZGU+d3JhcHRhZz0mcXVvdDtkaXYm cXVvdDs8L2NvZGU+LiBEZWZhdWx0IGlzICYjODIyMDt1bCYjODIyMTs8L2xpPgoJPC91bD4K CTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+bmF2YnJl YWs8L3NwYW4+IDogdGhlIChYKUhUTUwgdGFnIHRvIHN1cnJvdW5kIGVhY2ggaXRlbSB3aXRo aW4gdGhlIDxjb2RlPnBhZ2Vmb3JtPC9jb2RlPi4gRGVmYXVsdCBpcyAmIzgyMjA7bGkmIzgy MjE7PC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0i YXR0LW5hbWUiPm5hdmNsYXNzPC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NT PC9zcGFuPiBjbGFzcyBuYW1lIHRvIGFwcGx5IHRvIHRoZSBuYXZpZ2F0aW9uIHdyYXB0YWcu IERlZmF1bHQgaXMgJiM4MjIwO3NtZF9nYWxsZXJ5X25hdiYjODIyMTs8L2xpPgoJPC91bD4K CTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+ZW1wdHlj bGFzczwvc3Bhbj4gOiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3Mg bmFtZSB0byBhcHBseSB0byB0aGUgbmF2aWdhdGlvbiBpdGVtcyB0aGF0IGFyZSA8ZW0+bm90 PC9lbT4gbGlua3MuIERlZmF1bHQgaXMgJiM4MjIwO2VtcHR5JiM4MjIxOzwvbGk+Cgk8L3Vs PgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5kZWxp bTwvc3Bhbj4gOiBjaGFuZ2UgdGhlIGRlbGltaXRlciBmb3Igc3BlY2lmeWluZyBhdHRyaWJ1 dGUgbGlzdHMuIERlZmF1bHQgaXMgY29tbWEgKCwpPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9 ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnBhcmFtZGVsaW08L3NwYW4+ IDogY2hhbmdlIHRoZSBkZWxpbWl0ZXIgZm9yIHNwZWNpZnlpbmcgaW50ZXItcGFyYW1ldGVy IGF0dHJpYnV0ZXMuIERlZmF1bHQgaXMgY29sb24gKDopPC9saT4KCTwvdWw+Cgk8dWwgY2xh c3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPmNvbGxhdGU8L3NwYW4+ IDogc3dpdGNoIHRoZSBwbHVnaW4gaW50byA8YSBocmVmPSIjY29sbGF0ZV9tb2RlIj5jb2xs YXRlIG1vZGU8L2E+PC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3Bh biBjbGFzcz0iYXR0LW5hbWUiPmNvbWJvPC9zcGFuPiA6IHNwZWNpZnkgeW91ciBvd24gPGEg aHJlZj0iI3JlcF9nYWxsZXJ5Ij5yZXBsYWNlbWVudCB0YWdzPC9hPjwvbGk+Cgk8L3VsPgoJ PHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5kaXJlY3Rv cnk8L3NwYW4+IDogcmVhZCBpbWFnZXMgZnJvbSBhIGxpc3Qgb2YgZGlyZWN0b3JpZXMgKG9y IDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+cykgaW5zdGVhZCBvZiB0aGUgPHNwYW4g Y2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZGF0YWJhc2U8L2xpPgoJPC91bD4KCTx1bCBjbGFz cz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+bWF0Y2g8L3NwYW4+IDog bGltaXQgdGhlIGltYWdlcyBhbmQgZGlyZWN0b3JpZXMgY2hvc2VuIGluIGRpcmVjdG9yeSBt b2RlLiBHaXZlIGl0IGEgbGlzdCBvZiB3b3JkcyB0byBpbmNsdWRlIG9yICFleGNsdWRlIGFu ZCBhbnkgbWF0Y2hpbmcgZmlsZXMgb3IgZGlyZWN0b3JpZXMgd2lsbCBiZSBjaG9zZW4gb3Ig aWdub3JlZCwgcmVzcGVjdGl2ZWx5LiBUaGUgbWF0Y2ggdGVybXMgYXJlIGF1dG9tYXRpY2Fs bHkgYXNzdW1lZCB0byBiZSAmIzgyMjA7d2lsZCYjODIyMTsgc28gYW55IHBhcnQgb2YgdGhl IGZpbGUgbmFtZSAvIHBhdGggd2lsbCB0cmlnZ2VyIHRoZSBtYXRjaDwvbGk+Cgk8L3VsPgoJ PHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5kZWJ1Zzwv c3Bhbj4gOiB0dXJuIG9uIGRpYWdub3N0aWNzLiBWYXJ5aW5nIGxldmVscyBvZiB2ZXJib3Np dHkgZnJvbSAwIChub25lKSB0byA0IChhIGxvdCk8L2xpPgoJPC91bD4KCgk8aDMgaWQ9Imdh bGxlcnlfZm9ybSI+R2FsbGVyeSBmb3JtPC9oMz4KCgk8cD5UaGUgPGNvZGU+Zm9ybTwvY29k ZT4gaXMgd2hlcmUgeW91IGRlc2lnbiB3aGF0IGV2ZXJ5IHRodW1ibmFpbCB3aWxsIGxvb2sg bGlrZSBvbiB0aGUgc2NyZWVuLiBZb3UgZG8gdGhpcyBieSBzcGVjaWZ5aW5nIG1hcmt1cCBv ciB0YWdzIGFzIG5vcm1hbC4gSW4ga2V5IHBsYWNlcyB3aGVyZSB5b3Ugd2FudCwgc2F5LCBh biBpbWFnZSBJRCBvciBhbHQgdGFnIG9yIGltYWdlIHdpZHRoIHRvIGJlIGRpc3BsYXllZCwg eW91IHNwZWNpZnkgc3BlY2lhbCA8YSBocmVmPSIjcmVwX2dhbGxlcnkiPnJlcGxhY2VtZW50 IHRhZ3M8L2E+LiBUaGVzZSBhcmUgcmVwbGFjZWQgZm9yIGVhY2ggaW1hZ2UgaW4gdHVybiwg dGh1cyBidWlsZGluZyB1cCB0aGUgZ2FsbGVyeS48L3A+CgoJPHA+SW4gY29sbGF0ZSBtb2Rl LCB0aGUgaW1hZ2UgZGV0YWlscyBhcmUgaW5zdGVhZCBtYWRlIGludG8gbGlzdHMuIFRoZSBm b3JtIGlzIG9ubHkgcHJvY2Vzc2VkIG9uY2UgYW5kIHRoZSByZXBsYWNlbWVudCB0YWdzIG91 dHB1dCB0aGUgZW50aXJlIGxpc3QuPC9wPgoKCTxoNCBjbGFzcz0iYXR0cyAiIGlkPSJyZXBf Z2FsbGVyeSI+UmVwbGFjZW1lbnQgdGFnczogZ2FsbGVyeTwvaDQ+CgoJPHVsIGNsYXNzPSJh dHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57aWR9PC9zcGFuPiA6IHRoZSBp bWFnZSBJRCAob3IsIGluIGRpcmVjdG9yeSBtb2RlLCB0aGUgZmlsZW5hbWUgd2l0aG91dCBp dHMgZXh0ZW5zaW9uKTwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0dC1uYW1lIj57bmFtZX08L3NwYW4+IDogdGhlIGZ1bGwgaW1hZ2UgZmls ZW5hbWUgYXMgZGVmaW5lZCBpbiB0aGUgZGF0YWJhc2UsIHVzdWFsbHkgaW5jbHVkaW5nIGV4 dGVuc2lvbjwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0dC1uYW1lIj57ZXh0fTwvc3Bhbj4gOiB0aGUgZmlsZSBleHRlbnNpb24gaW5jbHVk aW5nIHBlcmlvZDwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0dC1uYW1lIj57Y2F0ZWdvcnl9PC9zcGFuPiA6IHRoZSBpbWFnZSBjYXRlZ29y eSBuYW1lPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFz cz0iYXR0LW5hbWUiPntjYXRlZ29yeV90aXRsZX08L3NwYW4+IDogdGhlIGltYWdlIGNhdGVn b3J5IHRpdGxlPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBj bGFzcz0iYXR0LW5hbWUiPnthdXRob3J9PC9zcGFuPiA6IHdobyB1cGxvYWRlZCB0aGUgaW1h Z2U8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dHQtbmFtZSI+e3VybH08L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3Nw YW4+IG9mIHRoZSBmdWxsc2l6ZSBpbWFnZTwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRz Ij4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57dGh1bWJ1cmx9PC9zcGFuPiA6IHRo ZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBvZiB0aGUgdGh1bWJuYWlsPC9saT4K CTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUi PntpbWFnZXBhdGh9PC9zcGFuPiA6IHRoZSBkaXJlY3RvcnkgdGhlIGltYWdlIGlzIGluPC9s aT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5h bWUiPntpbWFnZWRlZn08L3NwYW4+IDoganVzdCB0aGUgZmlsZSBuYW1lIHBhcnQgb2YgdGhl IGltYWdlIChlLmcuIDUuanBnKTwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57dGh1bWJkZWZ9PC9zcGFuPiA6IGp1c3QgdGhl IGZpbGUgbmFtZSBwYXJ0IG9mIHRoZSB0aHVtYm5haWwgKGUuZy4gNXQuanBnKTwvbGk+Cgk8 L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57 YWx0fTwvc3Bhbj4gOiB0aGUgYWx0IHRleHQ8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0 cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e3RpdGxlfTwvc3Bhbj4gOiB0aGUg Y2FwdGlvbjwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0dC1uYW1lIj57ZGF0ZX08L3NwYW4+IDogaW1hZ2UgdXBsb2FkIGRhdGU8L2xpPgoJ PC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+ e3dpZHRofTwvc3Bhbj4gOiBpbWFnZSB3aWR0aDwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJh dHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57aGVpZ2h0fTwvc3Bhbj4gOiBp bWFnZSBoZWlnaHQ8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdHQtbmFtZSI+e3RodW1id2lkdGh9PC9zcGFuPiA6IHRodW1ibmFpbCB3aWR0 aCAoaWYgZGVmaW5lZDogc2VlIHRoZSA8Y29kZT50aHVtYnNpemU8L2NvZGU+IGF0dHJpYnV0 ZSk8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dHQtbmFtZSI+e3RodW1oZWlnaHR9PC9zcGFuPiA6IHRodW1ibmFpbCBoZWlnaHQgKGRpdHRv KTwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 dC1uYW1lIj57dGh1bWJ3dW5pdHN9PC9zcGFuPiA6IHRodW1ibmFpbCB3aWR0aCB1bml0cyAo ZS5nLiBweCwgJSwgZW0gZXRjLiBPbmx5IGlmIGRlZmluZWQgdmlhIDxjb2RlPnRodW1ic2l6 ZTwvY29kZT4pPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBj bGFzcz0iYXR0LW5hbWUiPnt0aHVtYmh1bml0c308L3NwYW4+IDogdGh1bWJuYWlsIGhlaWdo dCB1bml0cyAoZGl0dG8pPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXR0LW5hbWUiPntoYXN0aHVtYn08L3NwYW4+IDogaWYgdGhlIGltYWdl IGhhcyBhbiBhc3NvY2lhdGVkIHRodW1ibmFpbCBvciBub3QgKHByb2JhYmx5IG5vdCBtdWNo IHVzZSk8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdHQtbmFtZSI+e2dhbGxlcnlpZH08L3NwYW4+IDogdGhlIGdhbGxlcnkgaWQgeW91IG9y IHRoZSBwbHVnaW4gYXNzaWduZWQ8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e29iamVjdH08L3NwYW4+IDogYSBzcGVjaWFs IGl0ZW0gY29udGFpbmluZyBlaXRoZXIgdGhlIDxjb2RlPnRleHQ8L2NvZGU+IE9SIHRoZSBp bWFnZSB0YWcgb2YgdGhlIGNvcnJlc3BvbmRpbmcgdGh1bWJuYWlsIGJ1dCBvbmx5IGlmIDxj b2RlPnRodW1ibGltaXQ8L2NvZGU+IGFsbG93cyBpdC4gZS5nLiBpZiA8Y29kZT50aHVtYmxp bWl0PSZxdW90OzEmcXVvdDs8L2NvZGU+IHRoaXMgdmFyaWFibGUgaXMgb25seSBzZXQgZm9y IHRoZSBmaXJzdCB0aHVtYm5haWwgaW4gdGhlIGxpc3QuIEV2ZXJ5IG90aGVyIHRpbWUgaXQg aXMgZW1wdHk8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdHQtbmFtZSI+e2NvdW50ZXJ9PC9zcGFuPiA6IGFuIGltYWdlIGNvdW50ZXIsIHN0 YXJ0aW5nIGZyb20gMSBhbmQgaW5jcmVtZW50aW5nIGVhY2ggdGltZTwvbGk+Cgk8L3VsPgoJ PHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57aW5kZXh9 PC9zcGFuPiA6IGFuIGluZGV4IGNvdW50ZXIgKHplcm8tYmFzZWQgJiM4MjEyOyBwcm9iYWJs eSBub3QgbXVjaCB1c2UpPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnt0aHVtYmNvdW50ZXJ9PC9zcGFuPiA6IGEgdGh1bWJu YWlsIGltYWdlIGNvdW50ZXIsIHN0YXJ0aW5nIGZyb20gMSBhbmQgaW5jcmVtZW50aW5nIGVh Y2ggdGltZS4gTm90ZSBpdCBpcyAmIzgyMTY7cmVzZXQmIzgyMTc7IGJhY2sgdG8gMSB3aGVu ZXZlciBhbiBlbGVtZW50IGdpdmVuIGluIDxjb2RlPnRodW1iY2hhbmdlPC9jb2RlPiBkaWZm ZXJzIGZyb20gdGhlIHByZXZpb3VzIHRodW1ibmFpbDwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNz PSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57dGh1bWJpbmRleH08L3Nw YW4+IDogYW4gaW5kZXggY291bnRlciAoemVyby1iYXNlZCAmIzgyMTI7IHByb2JhYmx5IG5v dCBtdWNoIHVzZSkuIEl0IGlzIGFsc28gcmVzZXQganVzdCBsaWtlIDxjb2RlPnt0aHVtYmNv dW50ZXJ9PC9jb2RlPjwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0dC1uYW1lIj57dG90YWxpbWFnZXN9PC9zcGFuPiA6IHRoZSB0b3RhbCBu dW1iZXIgb2YgaW1hZ2VzIG1hdGNoZWQgb24gdGhpcyBwYWdlPC9saT4KCTwvdWw+Cgk8dWwg Y2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnttYXhpbWFnZXN9 PC9zcGFuPiA6IHRoZSBhYnNvbHV0ZSBtYXhpbXVtIG51bWJlciBvZiBpbWFnZXMgYWNyb3Nz IGFsbCBwYWdlczwvbGk+Cgk8L3VsPgoKCTxwPklmIHRob3NlIGFyZW4mIzgyMTc7dCBlbm91 Z2gsIHlvdSBjYW4gPGEgaHJlZj0iI2NvbWJvcyI+Y3JlYXRlIHlvdXIgb3duPC9hPiBieSBn cm91cGluZyBjb21iaW5hdGlvbnMgb2YgdGhlIGFib3ZlLCBvcHRpb25hbGx5IHdpdGggYXJ0 aWNsZSB2YXJpYWJsZXMgc3VjaCBhcyA8Y29kZT4/ZXhjZXJwdDwvY29kZT4sIDxjb2RlPj9r ZXl3b3JkczwvY29kZT4sIDxjb2RlPj9hcnRpY2xlX2ltYWdlPC9jb2RlPiwgZXRjLjwvcD4K Cgk8cD5PdGhlciB0YWdzIGFyZSBhZGRlZCBkZXBlbmRpbmcgb24gd2hldGhlciB5b3UgYXJl IHdhdGNoaW5nIGZvciBjaGFuZ2VkIGVsZW1lbnRzIHZpYSB0aGUgPGNvZGU+dGh1bWJjaGFu Z2U8L2NvZGU+IGF0dHJpYnV0ZS4gRm9yIGV4YW1wbGUsIGlmIHlvdSBzcGVjaWZpZWQgPGNv ZGU+dGh1bWJjaGFuZ2U9JnF1b3Q7YXV0aG9yLCBjYXRlZ29yeSZxdW90OzwvY29kZT4gdGhl biBldmVyeSB0aW1lIHRoZSBhdXRob3Igb3IgY2F0ZWdvcnkgY2hhbmdlZCBjb21wYXJlZCB0 byB0aGUgcHJldmlvdXMgdGh1bWJuYWlsLCBvbmUgb3IgdHdvIG5ldyByZXBsYWNlbWVudCB0 YWdzIHdvdWxkIGJlY29tZSBhdmFpbGFibGU7IG5hbWVseSA8Y29kZT57Y2hhbmdlZDphdXRo b3J9PC9jb2RlPiBhbmQgPGNvZGU+e2NoYW5nZWQ6Y2F0ZWdvcnkpPC9jb2RlPi48L3A+CgoJ PGgzIGlkPSJwYWdpbmdfZm9ybSI+UGFnaW5nIGZvcm08L2gzPgoKCTxwPldoZW4gYWxsIHRo ZSB0aHVtYm5haWxzIGhhdmUgYmVlbiBwcm9jZXNzZWQsIHRoZSA8Y29kZT5wYWdlZm9ybTwv Y29kZT4gaXMgcHJvY2Vzc2VkIGFuZCBkaXNwbGF5ZWQuIEluIGEgc2ltaWxhciBtYW5uZXIg dG8gdGhlIHdheSB0aGUgPGEgaHJlZj0iI2dhbGxlcnlfZm9ybSI+Z2FsbGVyeSBmb3JtPC9h PiB3b3JrcywgYSBzZXJpZXMgb2YgPGEgaHJlZj0iI3JlcF9wYWdpbmciPlJlcGxhY2VtZW50 IFRhZ3M8L2E+IGdvdmVybiB3aGljaCBnYWxsZXJ5IG5hdmlnYXRpb24gaXRlbXMgYXJlIGF2 YWlsYWJsZS4gRm9yIGV4YW1wbGUgeW91IGNvdWxkIGNob29zZSB0byBvbmx5IHNob3cgbmV4 dC9wcmV2LiBPciBwZXJoYXBzIDFzdCBwYWdlL2xhc3QgcGFnZS4gT3IgbnVtYmVyZWQgcGFn ZSBsaW5rcy48L3A+CgoJPGg0IGNsYXNzPSJhdHRzICIgaWQ9InJlcF9wYWdpbmciPlJlcGxh Y2VtZW50IHRhZ3M6IHBhZ2luZzwvaDQ+CgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0dC1uYW1lIj57bmF2Zmlyc3R9PC9zcGFuPiA6IHRoZSBmaXJzdCBwYWdl IChkZWZhdWx0IGxhYmVsOiAmIzgyMjA7Rmlyc3QmIzgyMjE7KTwvbGk+Cgk8L3VsPgoJPHVs IGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57bmF2cHJldn08 L3NwYW4+IDogdGhlIHByZXZpb3VzIHBhZ2UgKGRlZmF1bHQgbGFiZWw6ICYjODIyMDsmbGFx dW87JiM4MjIxOyk8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdHQtbmFtZSI+e25hdmVhcmxpZXJ9PC9zcGFuPiA6IGFueSBwYWdlIG51bWJl cnMgYmVmb3JlIHRoZSBjdXJyZW50IHBhZ2U8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0 cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e25hdnRoaXN1cmx9PC9zcGFuPiA6 IHRoZSBjdXJyZW50IHBhZ2Ugd2l0aCBhIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+ IGxpbmsgdG8gaXRzZWxmPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXR0LW5hbWUiPntuYXZ0aGlzfTwvc3Bhbj4gOiB0aGUgY3VycmVudCBw YWdlIHdpdGhvdXQgYSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBsaW5rPC9saT4K CTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUi PntuYXZsYXRlcn08L3NwYW4+IDogYW55IHBhZ2UgbnVtYmVycyBhZnRlciB0aGUgY3VycmVu dCBwYWdlPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFz cz0iYXR0LW5hbWUiPntuYXZuZXh0fTwvc3Bhbj4gOiB0aGUgcHJldmlvdXMgcGFnZSAoZGVm YXVsdCBsYWJlbDogJiM4MjIwOyZyYXF1bzsmIzgyMjE7KTwvbGk+Cgk8L3VsPgoJPHVsIGNs YXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57bmF2bGFzdH08L3Nw YW4+IDogdGhlIGxhc3QgcGFnZSAoZGVmYXVsdCBsYWJlbDogJiM4MjIwO0xhc3QmIzgyMjE7 KTwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 dC1uYW1lIj57dG90YWxpbWFnZXN9PC9zcGFuPiA6IHRoZSB0b3RhbCBudW1iZXIgb2YgaW1h Z2VzIG1hdGNoZWQgb24gdGhlIGN1cnJlbnQgcGFnZTwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNz PSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57dG90YWxwYWdlc308L3Nw YW4+IDogdGhlIHRvdGFsIG51bWJlciBvZiBwYWdlcyBpbiB0aGlzIGNvbGxlY3Rpb248L2xp PgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFt ZSI+e21heGltYWdlc308L3NwYW4+IDogdGhlIGFic29sdXRlIG1heGltdW0gbnVtYmVyIG9m IGltYWdlcyBhY3Jvc3MgYWxsIHBhZ2VzPC9saT4KCTwvdWw+CgoJPHA+VGhlIGN1cnJlbnQg cGFnZSBoYXMgYSBmaXhlZCBjbGFzcyBvZiAmIzgyMTY7Y3VycmVudCYjODIxNzsgYW5kIGVh Y2ggaXRlbSBpcywgYnkgZGVmYXVsdCwgYSA8Y29kZT4mbHQ7bGkmZ3Q7PC9jb2RlPiBmb3Ig ZWFzeSBzdHlsaW5nLiBUbyBhdm9pZCBhIHppbGxpb24gb3B0aW9ucywgY3VzdG9tIGxhYmVs cyBhcmUgZGVmaW5lZCBkaXJlY3RseSBpbiB0aGUgZm9ybSBpdHNlbGY6PC9wPgoKCTxwPjxj b2RlPntuYXZmaXJzdDoxc3R9PC9jb2RlPjwvcD4KCgk8cD5Xb3VsZCBsYWJlbCB0aGUgbGlu ayB0aGF0IHRha2VzIHVzZXJzIHRvIHRoZSBmaXJzdCBwYWdlIG9mIHRoZSBnYWxsZXJ5IGFz ICYjODIyMDsxc3QmIzgyMjE7LiBUaGlzIHN5bnRheCBhbGxvd3MgeW91IHRvIHVzZSA8c3Bh biBjbGFzcz0iY2FwcyI+TUxQPC9zcGFuPiBzbmlwcGV0cywgZS5nLjo8L3A+CgoJPHA+PGNv ZGU+e25hdmZpcnN0OiMjZmlyc3RMYWJlbCMjfTwvY29kZT48L3A+CgoJPHA+WW91IGNhbiBv dmVycmlkZSB0aGUgbnVtYmVyIG9mIGl0ZW1zIGRpc3BsYXllZCBieSBuYXZlYXJsaWVyIGFu ZCBuYXZsYXRlciBieSBzcGVjaWZ5aW5nIGEgY29sb24gYW5kIGEgbnVtYmVyLiBTbyB0byBv bmx5IHNob3cgMiBpdGVtcyB0byB0aGUgbGVmdCBvZiB0aGUgY3VycmVudCBwYWdlIGFuZCAz IGl0ZW1zIHRvIHRoZSByaWdodCwgdXNlIDxjb2RlPntuYXZlYXJsaWVyOjJ9IHtuYXZsYXRl cjozfTwvY29kZT4gaW4geW91ciBmb3JtLiBDdXJyZW50bHkgPGNvZGU+e25hdmVhcmxpZXJ9 PC9jb2RlPiBhbmQgPGNvZGU+e25hdmxhdGVyfTwvY29kZT4gb25seSBkaXNwbGF5IGFyYWJp YyBudW1lcmFscy4gQW55IGlkZWFzIG9uIGhvdyB0byBvZmZlciBvdGhlciBjaGFyYWN0ZXIg c2V0cyBncmVhdGx5IGFwcHJlY2lhdGVkLjwvcD4KCgk8aDMgaWQ9ImNvbWJvcyI+Q29tYm9z PC9oMz4KCgk8cD5JZiB0aGUgYnVpbHQtaW4gPGEgaHJlZj0iI3JlcF9nYWxsZXJ5Ij5yZXBs YWNlbWVudCB0YWdzPC9hPiBhcmVuJiM4MjE3O3QgZW5vdWdoIGZvciB5b3VyIG5lZWRzIG9y IHlvdSBmaW5kIHlvdXJzZWxmIHJlcGVhdGluZyB0aGUgc2FtZSBjb21iaW5hdGlvbiBhbmQg d2FudCB0byBzYXZlIHlvdXJzZWxmIHNvbWUgdHlwaW5nLCB5b3UgY2FuIGRlZmluZSB5b3Vy IG93biByZXBsYWNlbWVudCB0YWdzLiBUaGUgc3ludGF4IGlzOjwvcD4KCgk8cD48Y29kZT5j b21ibz0mcXVvdDtuZXd0YWcxOmRlZmluaXRpb24sIG5ld3RhZzI6ZGVmaW5pdGlvbiwgLi4u JnF1b3Q7PC9jb2RlPjwvcD4KCgk8cD4mIzgyMTY7ZGVmaW5pdGlvbiYjODIxNzsgY2FuIGJl IGFueSBmaXhlZCB0ZXh0LCBhbnkgZXhpc3RpbmcgcmVwbGFjZW1lbnQgdGFnLCBvciBhbnkg YXJ0aWNsZSB2YXJpYWJsZSBzbyB5b3UgY2FuIGdldCByZWFsbHkgd2lsZCBoZXJlOjwvcD4K Cgk8cD48Y29kZT5jb21ibz0mcXVvdDtpbWdpbjpmb3VuZCBpbiA/cyBbdGFnZ2VkIHdpdGgg P2tleXdvcmRzLiBQaG90byBieSB7YXV0aG9yfV0mcXVvdDs8L2NvZGU+PC9wPgoKCTxwPnNv IG5vdyA8Y29kZT57aW1naW59PC9jb2RlPiBpcyBhdmFpbGFibGUgdG8geW91ciBmb3JtIGFu ZCBtaWdodCBiZSByZXBsYWNlZCB3aXRoICYjODIyMDtmb3VuZCBpbiB6b28gW3RhZ2dlZCB3 aXRoIHplYnJhLCBhZnJpY2EsIHN0cmlwZXMuIFBob3RvIGJ5IEJsb2tlXSYjODIyMTsuICRw cmV0ZXh0IGlzIGFsc28gYXZhaWxhYmxlIGZvciB0aG9zZSBnZWVrcyB3aG8ga25vdyB3aGF0 JiM4MjE3O3MgaW4gaXQgKHVzZSA8Y29kZT5kZWJ1Zz0mcXVvdDs0JnF1b3Q7PC9jb2RlPiB0 byB2aWV3IGFsbCBhdmFpbGFibGUgYXJ0aWNsZSB2YXJpYWJsZXMpLjwvcD4KCgk8cD5PbmUg dGhpbmcgdG8gd2F0Y2ggb3V0IGZvciBpcyB0aGF0IHRoZSBzcGFjZSBjaGFyYWN0ZXIgaXNu JiM4MjE3O3QgbmVjZXNzYXJpbHkgYSBkZWxpbWl0ZXIgZm9yIDxjb2RlPj88L2NvZGU+IHZh cmlhYmxlcyAoYmVjYXVzZSBjdXN0b20gZmllbGRzIGNhbiBoYXZlIHNwYWNlcyBpbiB0aGVt KS4gU28gPGNvZGU+Y29tYm89JnF1b3Q7ZG9lc25vdHdvcms6P3MgaW4gP2NhdGVnb3J5MSZx dW90OzwvY29kZT4gd2lsbCBsb29rIGZvciBhIHZhcmlhYmxlIGxhYmVsbGVkICYjODIyMDtz IGluJiM4MjIxOyBhbmQgb25lIGNhbGxlZCAmIzgyMjA7Y2F0ZWdvcnkxJiM4MjIxOy4gT25s eSBvbmUgb2YgdGhvc2UgZXhpc3RzISBDbGV2ZXIgdXNlIG9mIHBhcmVudGhlc2VzIG9yIG90 aGVyIHB1bmN0dWF0aW9uIGNhbiB3b3JrIHJvdW5kIHRoaXMuPC9wPgoKCTxoMyBpZD0iY29s bGF0ZV9tb2RlIj5Db2xsYXRlIG1vZGU8L2gzPgoKCTxwPklmIHlvdSB3YW50IHRvIGdldCA8 ZW0+cmVhbGx5PC9lbT4gZnVua3kgeW91IGNhbiBwdXQgdGhlIHBsdWdpbiBpbnRvIGEgMm5k IG1vZGUgY2FsbGVkICYjODIyMDtjb2xsYXRpb24gbW9kZSYjODIyMTsuIEluIHRoaXMgbW9k ZSB5b3VyIGNob3NlbiBmb3JtIGlzIDxzdHJvbmc+bm90PC9zdHJvbmc+IGV4ZWN1dGVkIGZv ciBldmVyeSBpbWFnZTsgaXQgaXMgb25seSB1c2VkIG9uY2UgYXQgdGhlIHZlcnkgZW5kIG9m IHRoZSBsaXN0LCBhZnRlciBhbGwgaW1hZ2VzIGhhdmUgYmVlbiBpbnRlcm5hbGx5ICYjODIy MDtjb2xsZWN0ZWQmIzgyMjE7LiBJbiBlZmZlY3QsIHRoZSBwbHVnaW4gYnVpbGRzIHVwIGEg Z2lhbnQgYXJyYXkgb2YgYWxsIG1hdGNoaW5nIGltYWdlcyByZWFkeSBmb3IgeW91IHRvIG91 dHB1dCB0aGVtIGFsbCBpbiBvbmUgZ28uIFRoaXMgaXMgdmVyeSBoYW5keSBmb3IgZG9pbmcg c2xpZGVzaG93cyBhbmQgaXMgYmVzdCBleHBsYWluZWQgYnkgZXhhbXBsZTo8L3A+CgoJPHA+ PGNvZGU+Y29sbGF0ZT0mcXVvdDsxJnF1b3Q7PC9jb2RlPjwvcD4KCgk8cD5zd2l0Y2hlcyBj b2xsYXRpb24gbW9kZSBvbi4gSWYgdGhlIHBsdWdpbiBtYXRjaGVkIDQgaW1hZ2VzIGFuZCB5 b3Ugd2VyZSB0byB1c2UgdGhlIHJlcGxhY2VtZW50IHRhZyA8Y29kZT57bmFtZX08L2NvZGU+ IGluIHlvdXIgZm9ybSBsaWtlIHRoaXM6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2Rl IGNsYXNzPSJibG9jayI+VGhlIG1hdGNoaW5nIGltYWdlczoge25hbWV9CjwvY29kZT48L3By ZT4KCgk8cD55b3UgbWlnaHQgZ2V0IHRoaXM6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxj b2RlIGNsYXNzPSJibG9jayI+VGhlIG1hdGNoaW5nIGltYWdlczogaGVyb24uanBnLHBlbmd1 aW4uanBnLGVtdS5qcGcscHVmZmluLmpwZwo8L2NvZGU+PC9wcmU+CgoJPHA+U29tZXRpbWVz IGl0JiM4MjE3O3MgdXNlZnVsIHRvIGJlIGFibGUgdG8gcHV0IHF1b3RlcyBhcm91bmQgZWFj aCBpdGVtIHNvIHlvdSBjYW4gdGVsbCBjb2xsYXRlIG1vZGUgdG8gZG8gdGhhdCBpbnN0ZWFk OjwvcD4KCgk8cD48Y29kZT5jb2xsYXRlPSZxdW90O3F1b3RlOntuYW1lfSZxdW90OzwvY29k ZT48L3A+CgoJPHA+WW91IHdvdWxkIHRoZW4gZ2V0OjwvcD4KCjxwcmUgY2xhc3M9ImJsb2Nr Ij48Y29kZSBjbGFzcz0iYmxvY2siPlRoZSBtYXRjaGluZyBpbWFnZXM6ICZxdW90O2hlcm9u LmpwZyZxdW90OywmcXVvdDtwZW5ndWluLmpwZyZxdW90OywmcXVvdDtlbXUuanBnJnF1b3Q7 LCZxdW90O3B1ZmZpbi5qcGcmcXVvdDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoZSBkZWxpbWl0 ZXIgKGEgY29tbWEgaW4gdGhpcyBjYXNlKSBjYW4gYmUgb3ZlcnJpZGRlbiB3aXRoIHRoZSA8 Y29kZT5kZWxpbTwvY29kZT4gYXR0cmlidXRlLiBZb3UgbWF5IHVzZSA8Y29kZT5zZ2xxdW90 ZTwvY29kZT4gdG8gd3JhcCBzaW5nbGUgcXVvdGVzIHJvdW5kIHRoZSBpdGVtcywgb3IgJiM4 MjIwO2RibHF1b3RlJiM4MjIxOyBhcyBhIHN5bm9ueW0gZm9yICYjODIyMDtxdW90ZSYjODIy MTsgaWYgeW91IHByZWZlci4gWW91IGNhbiBxdW90ZSBtb3JlIHRoYW4gb25lIHRoaW5nIGF0 IG9uY2UgYnkgc3BlY2lmeWluZyB0aGUgaXRlbXMgYXMgYSBkZWxpbWl0ZWQgbGlzdDo8L3A+ CgoJPHA+PGNvZGU+Y29sbGF0ZT0mcXVvdDtxdW90ZTp7bmFtZX06e2FsdH06e2ltZ2lufSZx dW90OzwvY29kZT48L3A+CgoJPHA+WWVzLCB5b3UgY2FuIHVzZSBjb21ib3MhIFRoZSBkZWxp bWl0ZXIgdXNlZCBiZXR3ZWVuIGl0ZW1zIGNhbiBiZSBvdmVycmlkZW4gd2l0aCB0aGUgPGNv ZGU+cGFyYW1kZWxpbTwvY29kZT4gYXR0cmlidXRlLjwvcD4KCgk8cD5UaGUgc2Vjb25kIHNw ZWNpYWwgZmVhdHVyZSBvZiBjb2xsYXRpb24gbW9kZSBpcyB0aGF0IHlvdSBkbyBub3QgaGF2 ZSB0byBhbHdheXMgb3V0cHV0IHRoZSBlbnRpcmUgbGlzdC4gWW91IGNhbiBncmFiIGluZGl2 aWR1YWwgZW50aXRpZXMgZnJvbSB3aXRoaW4gdGhlIGludGVybmFsIGFycmF5IGJ5IHVzaW5n IHRoZSAmIzgyMTY7IyYjODIxNzsgbm90YXRpb24gdGh1czo8L3A+Cgo8cHJlIGNsYXNzPSJi bG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj57bmFtZX0gbWlnaHQgb3V0cHV0ICZxdW90O2hl cm9uLmpwZyZxdW90OywmcXVvdDtwZW5ndWluLmpwZyZxdW90OywmcXVvdDtlbXUuanBnJnF1 b3Q7LCZxdW90O3B1ZmZpbi5qcGcmcXVvdDsgKGFzIGJlZm9yZSkKKG5hbWUjMX0gd291bGQg b25seSBvdXRwdXQgaGVyb24uanBnCihuYW1lIzN9IHdvdWxkIG9ubHkgb3V0cHV0IGVtdS5q cGcKPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGUgdGhhdCB3aGVuIHB1bGxpbmcgb3V0IGluZGl2 aWR1YWwgZW50cmllcyB0aGV5IDxzdHJvbmc+ZG8gbm90PC9zdHJvbmc+IGdldCBxdW90ZXMg YWRkZWQgdG8gdGhlbSwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHlvdSB1c2VkIDxjb2RlPnF1 b3RlPC9jb2RlPiBvciBub3QuIFRoaXMgaXMgYmVjYXVzZSBpdCBpcyBhIHNpbmdsZSBpdGVt IHNvIHlvdSBjYW4gZWFzaWx5IHB1dCB0aGUgcXVvdGVzIGluIHRoZSBmb3JtIGl0c2VsZiAo dml6OiA8Y29kZT4mcXVvdDt7bmFtZX0mcXVvdDs8L2NvZGU+KTwvcD4KCgk8cD5NZXNzaW5n IGFyb3VuZCB3aXRoIHB1bGxpbmcgb3V0IGluZGl2aWR1YWwgaXRlbXMgYW5kIGxpc3RzIGNh biB5aWVsZCBzb21lIHZlcnkgaW50ZXJlc3RpbmcgcmVzdWx0cyBhbmQgYWxsb3dzIHNvbWUg Y29tcGxldGVseSB3YWNreSBnYWxsZXJpZXMgdG8gYmUgZ2VuZXJhdGVkLiBUcnkgY29tYmlu aW5nIHNtZF9nYWxsZXJ5IHRhZ3Mgd2l0aCA8Y29kZT4mbHQ7dHhwOmlmX2RpZmZlcmVudCZn dDs8L2NvZGU+IGZvciBhIHJlYWwgbWluZCBzY3JhbWJsZSA6LSk8L3A+CgoJPGgzIGlkPSJl eGFtcGxlcyI+RXhhbXBsZXM8L2gzPgoKCTxwPlRoZSBleGFtcGxlcyBhbGwgdXNlIHRoZSBj bGFzc2ljIHpvbyB3ZWJzaXRlLiBMZXQmIzgyMTc7cyBzcGVjaWZ5IHNvbWUgcGljdHVyZXMg dG8gcHVsbCBvdXQgb2YgdGhlIGRhdGFiYXNlOjwvcD4KCgk8aDQgaWQ9ImVnMSI+RXhhbXBs ZSAxOiBzaW1wbGUgLyBsaWdodGJveGVkIGdhbGxlcnk8L2g0PgoKPHByZSBjbGFzcz0iYmxv Y2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZ2FsbGVyeSBjYXRlZ29yeT0m cXVvdDthbmltYWxzJnF1b3Q7IHN1YmxldmVsPSZxdW90O2FsbCZxdW90OyBmb3JtPSZxdW90 O2dhbGxlcnkmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoYXQgcHVsbHMgb3V0 IGFsbCBwaWN0dXJlcyBmcm9tIHRoZSBhbmltYWxzIGNhdGVnb3J5LCBpbmNsdWRpbmcgYWxs IHN1Yi1jYXRlZ29yaWVzLCBhbmQgcGFzc2VzIHRoZW0gdG8gdGhlIGZvcm0gY2FsbGVkICYj ODIxNjtnYWxsZXJ5JiM4MjE3OyBmb3IgcHJvY2Vzc2luZy4gVGhlIGZvcm0gY291bGQganVz dCBiZSB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2si PiZsdDtpbWcgY2xhc3M9JnF1b3Q7YW5pbWFnZSZxdW90OyBzcmM9JnF1b3Q7e3VybH0mcXVv dDsgYWx0PSZxdW90O3thbHR9JnF1b3Q7IC8mZ3Q7CiZsdDtkaXYgY2xhc3M9JnF1b3Q7YWNh cHRpb24mcXVvdDsmZ3Q7e3RpdGxlfSZsdDsvZGl2Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+ VGhhdCBtZWFucywgZm9yIGV2ZXJ5IG1hdGNoZWQgaW1hZ2UsIHN1YnN0aXR1dGUgaXRzIDxz cGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+LCBhbHQgYW5kIHRpdGxlIHRhZ3MgaW50byB0 aGUgcmVsZXZhbnQgcGxhY2VzLiBUaHVzIHlvdSBnZXQgYSBzZXJpZXMgb2YgaW1hZ2VzIG9u IHRoZSBwYWdlLCB3aGljaCB5b3UgY2FuIHN0eWxlIGFjY29yZGluZ2x5LjwvcD4KCgk8cD5G b3IgYSBtb3JlIGZhbmN5IG91dHB1dCB1c2luZywgc2F5LCBzbGltYm94LCB5b3UgY291bGQg bG9hZCB0aGUgcmVsZXZhbnQgbGlicmFyaWVzIGFuZCBzdHlsZXMgaW4gdGhlIDxjb2RlPiZs dDtoZWFkJmd0OzwvY29kZT4gb2YgeW91ciBwYWdlOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2Nr Ij48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtzY3JpcHQgdHlwZT0mcXVvdDt0ZXh0L2phdmFz Y3JpcHQmcXVvdDsgc3JjPSZxdW90Oy9qcy9tb290b29scy5qcyZxdW90OyZndDsmbHQ7L3Nj cmlwdCZndDsKJmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQvamF2YXNjcmlwdCZxdW90OyBz cmM9JnF1b3Q7L2pzL3NsaW1ib3guanMmcXVvdDsmZ3Q7Jmx0Oy9zY3JpcHQmZ3Q7CiZsdDts aW5rIHJlbD0mcXVvdDtzdHlsZXNoZWV0JnF1b3Q7IHR5cGU9JnF1b3Q7dGV4dC9jc3MmcXVv dDsgaHJlZj0mcXVvdDsvY3NzL3NsaW1ib3guY3NzJnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3By ZT4KCgk8cD5UaGVuIHlvdXIgJiM4MjE2O2dhbGxlcnkmIzgyMTc7IGZvcm0gY291bGQgYmU6 PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O2EgcmVs PSZxdW90O2xpZ2h0Ym94LXtjYXRlZ29yeX0mcXVvdDsgaHJlZj0mcXVvdDt7dXJsfSZxdW90 OyBhbHQ9JnF1b3Q7e2FsdH0mcXVvdDsKICAgICB0aXRsZT0mcXVvdDtBIHBpY3R1cmUgb2Yg e3RpdGxlfSZxdW90OyBoZWlnaHQ9JnF1b3Q7e2hlaWdodH0mcXVvdDsgd2lkdGg9JnF1b3Q7 e3dpZHRofSZxdW90OyZndDsKICZsdDt0eHA6dGh1bWJuYWlsIGlkPSZxdW90O3tpZH0mcXVv dDsgLyZndDsKJmx0Oy9hJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+Vm9pbGEhIFVzaW5nIHRo ZSBzYW1lIHNtZF9nYWxsZXJ5IHRhZyB5b3UgaGF2ZSBjaGFuZ2VkIHRoZSB3YXkgdGhlIGdh bGxlcnkgcmVuZGVycyBmcm9tIGEgc2ltcGxlIGxpc3QgdG8gYSBmdWxsLWZlYXR1cmVkIHNs aW1ib3guIFdpdGggdmlydHVhbGx5IHRoZSBzYW1lIGZvcm0geW91IGNhbiBzd2l0Y2ggdGhl IG91dHB1dCB0byB0aGlja2JveCwgbGlnaHRib3gsIGxpdGVib3gsIG1vb25ib3ggb3Igd2hh dGV2ZXIteW91LWxpa2UtYm94IGRlcGVuZGluZyBvbiB3aGljaCBsaWJyYXJpZXMgeW91IGxv YWQuIEZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGZvciB5b3VyIGZhdm91cml0ZSBlZmZlY3Qg YW5kIHBsdWcgaXQgaW50byBzbWRfZ2FsbGVyeS48L3A+CgoJPGg0IGlkPSJlZzIiPkV4YW1w bGUgMjogbGF1bmNoIGZyb20gb25lIGltYWdlPC9oND4KCgk8cD5BIGNvbW1vbiByZXF1ZXN0 IGlzIHRvIGJlIGFibGUgdG8gJiM4MjIwO2xhdW5jaCYjODIyMTsgYSBzbGltYm94IGdhbGxl cnkgZnJvbSBhIHNpbmdsZSBpbWFnZSBvciB0ZXh0IGxpbmsuIFVzaW5nIGEgc2luZ2xlIGlt YWdlOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0 eHA6c21kX2dhbGxlcnkgY2F0ZWdvcnk9JnF1b3Q7YW5pbWFscyZxdW90OwogICAgIGlkPSZx dW90Oz9hcnRpY2xlX2ltYWdlJnF1b3Q7IHN1YmxldmVsPSZxdW90O2FsbCZxdW90OwogICAg IGZvcm09JnF1b3Q7Z2FsbGVyeSZxdW90OyB0aHVtYmxpbWl0PSZxdW90OzEmcXVvdDsgLyZn dDsKPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGUgdGhhdCB0aGlzIHRpbWUgd2UgYXJlIGFkZGlu ZyB0byB0aGUgZ2FsbGVyeSB0aGUgaW1hZ2UocykgcHVsbGVkIGZyb20gdGhlIGFydGljbGUt aW1hZ2UgZmllbGQgb2YgdGhlIGN1cnJlbnQgYXJ0aWNsZS4gVGhlIGZvcm0gd2lsbCB1c2Ug dGhlIHNwZWNpYWwgPGNvZGU+e29iamVjdH08L2NvZGU+IHJlcGxhY2VtZW50IHRhZy4gVGhl IHBsdWdpbiBvbmx5IGRpc3BsYXlzIHRoaXMgcGFydCBpZiB0aGUgdmFsdWUgb2YgdGh1bWJs aW1pdCBoYXMgPHN0cm9uZz5ub3Q8L3N0cm9uZz4gYmVlbiByZWFjaGVkOjwvcD4KCjxwcmUg Y2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDthIHJlbD0mcXVvdDtsaWdo dGJveC1zbWQmcXVvdDsgaHJlZj0mcXVvdDt7dXJsfSZxdW90OwogICAgIHRpdGxlPSZxdW90 O0EgcGljdHVyZSBvZiB7dGl0bGV9JnF1b3Q7Jmd0Owp7b2JqZWN0fQombHQ7L2EmZ3Q7Cjwv Y29kZT48L3ByZT4KCgk8cD5DaGFuZ2UgdGhlIHN0YXJ0IGltYWdlIGJ5IHNwZWNpZnlpbmcg PGNvZGU+dGh1bWJvZmZzZXQ8L2NvZGU+ICYjODIxMjsgbm90ZSB0aGlzIHdpbGwgYWxzbyBz dGFydCB0aGUgbGlnaHRib3ggZWZmZWN0IGZyb20gdGhlIGltYWdlIHlvdSBjaG9vc2UuIElm IHlvdSB3YW50IHRvIHN0YXJ0IG9uIGEgc3BlY2lmaWMgaW1hZ2UgaW4gcG9zaXRpb24gMSwg dXNlIHRoZSA8Y29kZT5pZDwvY29kZT4gYXR0cmlidXRlIHRvIGJyaW5nIGl0IHRvIHRoZSB0 b3Agb2YgdGhlIGxpc3QsIG9yIGNoYW5nZSB0aGUgc29ydCBvcmRlci48L3A+CgoJPHA+SWYg eW91IHdhbnRlZCB0byBsYXVuY2ggdGhlIGdhbGxlcnkgZnJvbSBhIHRleHQgbGluaywgbW9k aWZ5IHRoZSB0YWcgbGlrZSB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBj bGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2dhbGxlcnkgY2F0ZWdvcnk9JnF1b3Q7YW5pbWFs cyZxdW90OwogICAgIGlkPSZxdW90Oz9hcnRpY2xlX2ltYWdlJnF1b3Q7IHN1YmxldmVsPSZx dW90O2FsbCZxdW90OwogICAgIGZvcm09JnF1b3Q7Z2FsbGVyeSZxdW90OyB0aHVtYmxpbWl0 PSZxdW90OzEmcXVvdDsKICAgICB0ZXh0PSZxdW90O0NsaWNrIHRvIHN0YXJ0IGxpZ2h0Ym94 JnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8aDQgaWQ9ImVnMyI+RXhhbXBsZSAzOiBw b3B1cCBnYWxsZXJ5PC9oND4KCgk8cD5UbyBhY2hpZXZlIGFuIGVmZmVjdCBzaW1pbGFyIHRv IHJzc190aHVtYnBvcCwgYWRkIGFuIGltYWdlIGFuZCBjYXB0aW9uIHBsYWNlaG9sZGVyIG91 dHNpZGUgdGhlIGNhbGwgdG8gc21kX2dhbGxlcnksIHRoZW4gaW5jbHVkZSB5b3VyIHNtZF9n YWxsZXJ5IHRhZyBhcyB1c3VhbC4gVGhpcyB0aW1lIHdlIGFyZSBvbmx5IGludGVyZXN0ZWQg aW4gYWxsIHRoZSBwaWN0dXJlcyBmcm9tIHRoZSBjYXRlZ29yaWVzIHVwIHRvIHR3byBsZXZl bHMgYmVsb3cgYm90aCAmIzgyMjA7YW5pbWFscyYjODIyMTsgYW5kIHdoaWNoZXZlciBjYXRl Z29yaWVzIGFyZSBsaXN0ZWQgaW4gPGNvZGU+bXlfY3VzdG9tX2ZpZWxkPC9jb2RlPjo8L3A+ Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7aW1nIGlkPSZx dW90O2Z1bGxzaXplJnF1b3Q7IHNyYz0mcXVvdDsvaW1hZ2VzL2VtcHR5LmpwZyZxdW90OyAv Jmd0OwombHQ7c3BhbiBpZD0mcXVvdDtmdWxsY2FwdGlvbiZxdW90OyZndDsmbHQ7L3NwYW4m Z3Q7CiZsdDt0eHA6c21kX2dhbGxlcnkgc3VibGV2ZWw9JnF1b3Q7MiZxdW90OwogICAgIGNh dGVnb3J5PSZxdW90O2FuaW1hbHMsID9teV9jdXN0b21fZmllbGQmcXVvdDsKICAgICBmb3Jt PSZxdW90O2dhbGxlcnkmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoZSBnYWxs ZXJ5IGZvcm0gbG9va3Mgc2NhcnkgYnV0IGlzIG9ubHkgYSB0aHVtYm5haWwgaW1hZ2Ugc3Vy cm91bmRlZCBieSBhIHNpbXBsZSBhbmNob3IgdGFnIHdpdGggdHdvIGFjdGlvbnMgYXNzaWdu ZWQgdG8gaXQ6IGEgbW91c2VvdmVyIHRvIGNvcHkgdGhlIHBpY3R1cmUgYW5kIGNhcHRpb24g aW50byB0aGUgcGxhY2Vob2xkZXI7IGFuZCBhIG1vdXNlb3V0IHRvIHJlbW92ZSB0aGVtOjwv cD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDthIGhyZWY9 JnF1b3Q7e3VybH0mcXVvdDsgdGl0bGU9JnF1b3Q7e3RpdGxlfSZxdW90OwogICAgIG9ubW91 c2VvdmVyPSZxdW90O2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCYjMzk7ZnVsbHNpemUmIzM5 Oykuc3JjID0gdGhpcy5ocmVmOwogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCYjMzk7 ZnVsbGNhcHRpb24mIzM5OykuaW5uZXJIVE1MID0gdGhpcy50aXRsZTsgcmV0dXJuIGZhbHNl JnF1b3Q7CiAgICAgb25tb3VzZW91dD0mcXVvdDtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgm IzM5O2Z1bGxzaXplJiMzOTspLnNyYyA9ICYjMzk7L2ltYWdlcy8xNy5qcGcmIzM5OzsKICAg ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgmIzM5O2Z1bGxjYXB0aW9uJiMzOTspLmlubmVy SFRNTCA9ICYjMzk7JiMzOTs7IHJldHVybiBmYWxzZTsmcXVvdDsmZ3Q7CiAgJmx0O2ltZyBz cmM9JnF1b3Q7e3RodW1idXJsfSZxdW90OyBhbHQ9JnF1b3Q7e2FsdH0mcXVvdDsgLyZndDsK Jmx0Oy9hJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+Tm90ZSB0aGVyZSBhcmUgbXVjaCBuZWF0 ZXIgd2F5cyBvZiBkb2luZyB0aGlzIGFuZCBpdCYjODIxNztzIG5vdCByZWNvbW1lbmRlZCB0 byB1c2UgdGhpcyBmb3JtIGluIGEgbGl2ZSBzaXRlLCBidXQgaXQgZ2l2ZXMgYSBmbGF2b3Vy IG9mIHdoYXQgaXMgcG9zc2libGUuPC9wPgoKCTxoNCBpZD0iZWc0Ij5FeGFtcGxlIDQ6IHNs aWRlc2hvdzwvaDQ+CgoJPHA+VGhpcyBvbmUgdXNlcyBjb2xsYXRlIG1vZGUgYnV0IGlzIG5v dCBtdWNoIG1vcmUgZGlmZmljdWx0IHRvIHVuZGVyc3RhbmQuIEluIHlvdXIgPGNvZGU+Jmx0 O2hlYWQmZ3Q7PC9jb2RlPiBzZWN0aW9uOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29k ZSBjbGFzcz0iYmxvY2siPiZsdDtzY3JpcHQgdHlwZT0mcXVvdDt0ZXh0L2phdmFzY3JpcHQm cXVvdDsgc3JjPSZxdW90Oy9qcy9tb290b29scy5qcyZxdW90OyZndDsmbHQ7L3NjcmlwdCZn dDsKJmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQvamF2YXNjcmlwdCZxdW90OyBzcmM9JnF1 b3Q7L2pzL3NsaWRlc2hvdy5qcyZxdW90OyZndDsmbHQ7L3NjcmlwdCZndDsKPC9jb2RlPjwv cHJlPgoKCTxwPlRoZSB0YWc6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNz PSJibG9jayI+Jmx0O3R4cDpzbWRfZ2FsbGVyeQogIGNhdGVnb3J5PSZxdW90O2JpcmRzLCBm aXNoJnF1b3Q7IGZvcm09JnF1b3Q7Z2FsbGVyeSZxdW90OwogIGNvbWJvPSZxdW90O2ltZ2xp c3Q6e2lkfXtleHR9JnF1b3Q7CiAgY29sbGF0ZT0mcXVvdDtxdW90ZTp7aW1nbGlzdH06e2Fs dH0mcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoYXQgcHVsbHMgYWxsIHBpY3R1 cmVzIGZyb20gdGhlIGJpcmRzIGFuZCBmaXNoIGNhdGVnb3JpZXMuIEFsdGhvdWdoIHRlY2hu aWNhbGx5IHVubmVjZXNzYXJ5LCBhIGNvbWJvIGhhcyBiZWVuIGRlZmluZWQgdG8gc2hvdyBo b3cgaXQgY2FuIGJlIHVzZWQuIFRoaXMgY29tYm8gaXMgY2FsbGVkIDxjb2RlPmltZ2xpc3Q8 L2NvZGU+IGFuZCBpcyBkZWZpbmVkIGFzIHRoZSBpbWFnZSYjODIxNztzIElEIG51bWJlciBw bHVzIGl0cyBleHRlbnNpb24uIFdlIHVzZSB0aGlzIGluIHRoZSBjb2xsYXRlIGF0dHJpYnV0 ZSBhbmQgdGVsbCBpdCB0byBwdXQgZG91YmxlIHF1b3RlcyByb3VuZCBldmVyeSBpdGVtIGlu ICYjODIxNjtpbWdsaXN0JiM4MjE3OyBhbmQgJiM4MjE2O2FsdCYjODIxNzsuIFRoZW4gd2Ug Y2FuIHB1dCB0aGVzZSB2YWx1ZXMgaW50byB0aGUgbmVjZXNzYXJ5IGphdmFzY3JpcHQgdG8g Z2VuZXJhdGUgdGhlIHNsaWRlc2hvdzo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUg Y2xhc3M9ImJsb2NrIj4mbHQ7ZGl2IGNsYXNzPSZxdW90O3NsaWRlc2hvdyZxdW90OyBpZD0m cXVvdDtzbGlkZXNob3cxJnF1b3Q7Jmd0OwogJmx0O2ltZyBzcmM9JnF1b3Q7Jmx0O3R4cDpz aXRlX3VybCAvJmd0O2ltYWdlcy97aWQjMX0uanBnJnF1b3Q7CiAgICAgYWx0PSZxdW90O3th bHQjMX0mcXVvdDsgd2lkdGg9JnF1b3Q7e3dpZHRoIzF9JnF1b3Q7IGhlaWdodD0mcXVvdDt7 aGVpZ2h0IzF9JnF1b3Q7IC8mZ3Q7CiZsdDsvZGl2Jmd0Owo8L2NvZGU+Cjxjb2RlIGNsYXNz PSJibG9jayI+Jmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQvamF2YXNjcmlwdCZxdW90OyZn dDsKbXlTaG93MSA9IG5ldyBTbGlkZXNob3coJnF1b3Q7c2xpZGVzaG93MSZxdW90OywKICB7 IGh1OiAmcXVvdDsmbHQ7dHhwOnNpdGVfdXJsIC8mZ3Q7aW1hZ2VzLyZxdW90OywKICAgIGlt YWdlczogW3tpbWdsaXN0fV0sCiAgICBjYXB0aW9uczogW3thbHR9XSwKICAgIGNsYXNzZXM6 IFsmcXVvdDtwcmV2JnF1b3Q7LCZxdW90O25leHQmcXVvdDssJnF1b3Q7YWN0aXZlJnF1b3Q7 XSwKICAgIHR5cGU6ICZxdW90O2ZhZGUmcXVvdDsKICB9KTsKJmx0Oy9zY3JpcHQmZ3Q7Cjwv Y29kZT48L3ByZT4KCgk8cD5Ob3RlIHRoYXQgdGhlIGluaXRpYWwgcG9ydGlvbiAoaW4gdGhl IGRpdiBhbmQgaW1nIHRhZ3MpIHVzZXMgdGhlICYjODIxNjsjJiM4MjE3OyBub3RhdGlvbiBi ZWNhdXNlIHdlIG9ubHkgd2FudCB0byBkaXNwbGF5IG9uZSBpbWFnZSB0byAmIzgyMjA7c3Rh cnQmIzgyMjE7IHRoZSBzbGlkZXNob3cuIEluIHRoaXMgY2FzZSB3ZSYjODIxNztyZSB1c2lu ZyB0aGUgZmlyc3QgaW1hZ2UgaW4gdGhlIGxpc3QsIGJ1dCB5b3UgY2FuIGNoYW5nZSB0aGUg IzEgZm9yICM0MiBpZiB5b3Ugd2FudGVkIHRvIHNob3cgdGhlIGZvcnR5LXNlY29uZCBpbWFn ZSBpbnN0ZWFkISBUaGUgcGFydCBpbiB0aGUgc2NyaXB0IHRhZyB1c2VzIHRoZSBmdWxsLCBx dW90ZWQgbGlzdHMgYmVjYXVzZSB0aGF0JiM4MjE3O3MgdGhlIGZvcm1hdCB0aGUgamF2YXNj cmlwdCByZXF1aXJlcy48L3A+CgoJPGg0IGlkPSJlZzUiPkV4YW1wbGUgNTogcGFnaW5hdGlv bjwvaDQ+CgoJPHA+VG8gYWRkIHBhZ2luZyB0byBhIGdhbGxlcnkgeW91IHVzZSB0aGUgPGNv ZGU+bGltaXQ8L2NvZGU+IGF0dHJpYnV0ZSB0byBzaG93IGEgbnVtYmVyIG9mIHRodW1icyBw ZXIgcGFnZS4gRm9yIGEgcGFnZWQgdGh1bWJwb3AgZ2FsbGVyeSB0aGF0IHNob3dzIGZpdmUg dGh1bWJzIHBlciBwYWdlOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0i YmxvY2siPiZsdDtpbWcgaWQ9JnF1b3Q7ZnVsbHNpemUmcXVvdDsgc3JjPSZxdW90Oy9pbWFn ZXMvZW1wdHkuanBnJnF1b3Q7IC8mZ3Q7CiZsdDtzcGFuIGlkPSZxdW90O2Z1bGxjYXB0aW9u JnF1b3Q7Jmd0OyZsdDsvc3BhbiZndDsKJmx0O3R4cDpzbWRfZ2FsbGVyeSBjYXRlZ29yeT0m cXVvdDthbmltYWxzJnF1b3Q7CiAgZm9ybT0mcXVvdDtnYWxsZXJ5JnF1b3Q7IHBhZ2Vmb3Jt PSZxdW90O2dhbGxlcnlfbmF2JnF1b3Q7CiAgbGltaXQ9JnF1b3Q7NSZxdW90OyAvJmd0Owo8 L2NvZGU+PC9wcmU+CgoJPHA+VGhlICYjODIxNjtnYWxsZXJ5JiM4MjE3OyBmb3JtIGlzIGlk ZW50aWNhbCB0byB0aGUgb25lIGluIDxhIGhyZWY9IiNlZzQiPmV4YW1wbGUgNDwvYT4sIHdo aWxlIHlvdXIgZ2FsbGVyeV9uYXYgZm9ybSBtaWdodCBsb29rIGxpa2UgdGhpczo8L3A+Cgo8 cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7ZGl2IGNsYXNzPSZx dW90O3RvdGFsJnF1b3Q7Jmd0OyMgb2YgcGljczoge3RvdGFsaW1hZ2VzfSZsdDsvZGl2Jmd0 OwogICAgIHtuYXZmaXJzdH0ge25hdnByZXZ9CiAgICAge25hdmVhcmxpZXJ9IHtuYXZ0aGlz fSB7bmF2bGF0ZXJ9CiAgICAge25hdm5leHR9IHtuYXZsYXN0fQo8L2NvZGU+PC9wcmU+CgoJ PHA+VGhhdCBtaWdodCByZW5kZXIgc29tZXRoaW5nIHNpbWlsYXIgdG8gdGhpcyBiZWxvdyB0 aGUgdGh1bWJzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2si PiMgb2YgcGljczogMzgKICAgICBGaXJzdCAmbHQ7IDEgMiAzIDQgNSA2IDcgOCAmZ3Q7IExh c3QKPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGVzOjwvcD4KCgk8dWw+CgkJPGxpPlVzZSB7bmF2 dGhpc3VybH0gaWYgeW91IHdhbnQgdGhlIGN1cnJlbnQgcGFnZSBoeXBlcmxpbmtlZDwvbGk+ CgkJPGxpPlRoZSBjdXJyZW50IGl0ZW0gYWx3YXlzIGhhcyBhIGNsYXNzIG9mICYjODIyMDtj dXJyZW50JiM4MjIxOzwvbGk+CgkJPGxpPlVzZSB0aGUgPGNvZGU+bmF2d3JhcHRhZzwvY29k ZT4sIDxjb2RlPm5hdmJyZWFrPC9jb2RlPiwgYW5kIDxjb2RlPm5hdmNsYXNzPC9jb2RlPiB0 YWcgYXR0cmlidXRlcyB0byBzcGVjaWZ5IGl0ZW1zIHRvIHdyYXAgYXJvdW5kIHRoZSBlbnRp cmUgcGFnZWZvcm0uIFRoZSBkZWZhdWx0cyBhcmU6IDxjb2RlPnVsPC9jb2RlPiwgPGNvZGU+ bGk8L2NvZGU+LCBhbmQgPGNvZGU+c21kX2dhbGxlcnlfbmF2PC9jb2RlPiByZXNwZWN0aXZl bHk8L2xpPgoJCTxsaT5Zb3UgY2FuIGxhYmVsIG5hdmZpcnN0LCBuYXZsYXN0LCBuYXZwcmV2 LCBuYXZuZXh0IGFuZCBuYXZ0aGlzIGJ5IHNwZWNpZnlpbmcgdGhlbSBsaWtlIHRoaXM6IDxj b2RlPntuYXZwcmV2OlByZXZpb3VzfTwvY29kZT4gKHRoZSAmIzgyMTY7OiYjODIxNzsgZGVs aW1pdGVyIGluIHRoaXMgY2FzZSBpcyB0aGUgaXRlbSBzcGVjaWZpZWQgYnkgcGFyYW1kZWxp bSk8L2xpPgoJCTxsaT5uYXZlYXJsaWVyIGFuZCBuYXZsYXRlciB3aWxsIGJ5IGRlZmF1bHQg c2hvdyBhbGwgcGFnZXMgYmVmb3JlIGFuZCBhZnRlciB0aGUgY3VycmVudCBvbmUuIFlvdSBj YW4gb3ZlcnJpZGUgdGhpcyBieSBzcGVjaWZ5aW5nIHRoZSBudW1iZXIgb2YgcGFnZXMgeW91 IHdhbnQgdG8gc2hvdyBlaXRoZXIgc2lkZS4gZS5nLiBpZiB5b3Ugd2VyZSBvbiBwYWdlIDkg b2YgMTUsIHtuYXZlYXJsaWVyOjR9IHtuYXZsYXRlcjozfSB3b3VsZCBzaG93IDxjb2RlPiZs dDsmbHQ7IDUgNiA3IDggOSAxMCAxMSAxMiAmZ3Q7Jmd0OzwvY29kZT48L2xpPgoJPC91bD4K Cgk8aDQgaWQ9ImVnNiI+RXhhbXBsZSA2OiB0aHVtYmNoYW5nZTwvaDQ+CgoJPHA+SWYgeW91 IHdhbnQgdG8gc2ltdWxhdGUgbXVsdGlwbGUgZ2FsbGVyaWVzIGZyb20gb25lIHNtZF9nYWxs ZXJ5IHRhZyB5b3UgY2FuIHVzZSA8Y29kZT50aHVtYmNoYW5nZTwvY29kZT4gdG8gJiM4MjIw O3dhdGNoJiM4MjIxOyBmb3Igd2hlbiBjZXJ0YWluIGF0dHJpYnV0ZXMgb2YgdGh1bWJuYWls cyBjaGFuZ2UgYW5kIGluc2VydCBzcGVjaWFsIHRhZ3MgPGVtPm9ubHkgd2hlbiBzb21ldGhp bmcgY2hhbmdlczwvZW0+LiBJbiB0aGlzIHJlZ2FyZCBpdCBhY3RzIGxpa2UgYSBzb3VwZWQt dXAgdmVyc2lvbiBvZiA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiYjODIxNztzIGJ1 aWx0LWluIDx0eHA6aWZfZGlmZmVyZW50PiB0YWcuPC9wPgoKCTxwPllvdSBjYW4gd2F0Y2gg dGhlIHVzdWFsIHRoaW5ncyBsaWtlIDxjb2RlPmNhdGVnb3J5PC9jb2RlPiwgPGNvZGU+YXV0 aG9yPC9jb2RlPiwgPGNvZGU+d2lkdGg8L2NvZGU+LCA8Y29kZT5oZWlnaHQ8L2NvZGU+LCA8 Y29kZT5leHQ8L2NvZGU+ZW5zaW9uIGFuZCBzbyBvbi4gSGVyZSYjODIxNztzIGFuIGV4YW1w bGU6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4 cDpzbWRfZ2FsbGVyeQogICAgIGNhdGVnb3J5PSZxdW90O2JpcmRzLCBmaXNoJnF1b3Q7IGZv cm09JnF1b3Q7Z2FsbGVyeSZxdW90OwogICAgIHRodW1iY2hhbmdlPSZxdW90O2NhdGVnb3J5 X3RpdGxlJnF1b3Q7CiAgICAgdGh1bWJjaGFuZ2V3cmFwdGFnPSZxdW90O2gzJnF1b3Q7IC8m Z3Q7CjwvY29kZT48L3ByZT4KCgk8cD5TaW5jZSB0aGUgcGx1Z2luIG5vcm1hbGx5IHNvcnRz IGJ5IGNhdGVnb3J5LCB0aGlzIHdpbGwgaGF2ZSB0aGUgZWZmZWN0IG9mIGFkZGluZyBvbmUg cmVwbGFjZW1lbnQgdGFnIDxjb2RlPntjaGFuZ2VkOmNhdGVnb3J5X3RpdGxlfTwvY29kZT4g YXQgdGhlIHZlcnkgYmVnaW5uaW5nIG9mIHRoZSB0aHVtYiBsaXN0IGFuZCBhbHNvIHdoZW4g dGhlIGNhdGVnb3J5IHN3aXRjaGVzIGZyb20gJiM4MjE2O2JpcmRzJiM4MjE3OyB0byAmIzgy MTY7ZmlzaCYjODIxNzsuIFRodXMgeW91ciBnYWxsZXJ5IGZvcm0gY291bGQgYmU6PC9wPgoK PHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+e2NoYW5nZWQ6Y2F0ZWdv cnlfdGl0bGV9CiZsdDthIGhyZWY9JnF1b3Q7e3VybH0mcXVvdDsgcmVsPSZxdW90O2xpZ2h0 Ym94LXtjYXRlZ29yeX0mcXVvdDsmZ3Q7CntvYmplY3R9CiZsdDsvYSZndDsKPC9jb2RlPjwv cHJlPgoKCTxwPlRoYXQgd291bGQgbWFrZSB0d28gbGlnaHRib3hhYmxlIHNldHMgb2YgdGh1 bWJuYWlscyB3aXRoIGEgaGVhZGluZyAzIGFib3ZlIGVhY2ggZ3JvdXAgY29udGFpbmluZyB0 aGUgY2F0ZWdvcnkgdGl0bGUuPC9wPgoKCTxwPk5vdGUgdGhhdCBpZiB5b3UgYWRkIDxjb2Rl PnRodW1ibGltaXQ9JnF1b3Q7MSZxdW90OzwvY29kZT4gdG8gdGhlIHNtZF9nYWxsZXJ5IHRh ZyB5b3UgY2FuIHNob3cganVzdCBvbmUgdGh1bWJuYWlsIGluIGVhY2ggZ3JvdXAsIHdpdGgg aGVhZGluZ3MgYWJvdmUgZWFjaCB0aHVtYi4gVmlzaXRvcnMgY2xpY2tpbmcgdGhlIHRodW1i IHdpbGwgbGF1bmNoIHRoZSBsaWdodGJveCBhbmQgYmUgYWJsZSB0byBicm93c2UgdGhlIHJl bGV2YW50IGNhdGVnb3J5LjwvcD4KCgk8aDMgaWQ9ImNoYW5nZWxvZyI+Q2hhbmdlbG9nPC9o Mz4KCgk8cD5BbGwgYXZhaWxhYmxlIHZlcnNpb25zIGFuZCBjaGFuZ2VzIGFyZSBsaXN0ZWQg aGVyZS48L3A+CgoJPHA+PHN0cm9uZz5CZXRhPC9zdHJvbmc+PC9wPgoKCTx1bD4KCQk8bGk+ MTQgRmViIDA4IHwgPGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL2Rvd25sb2Fkcy9z bWRfZ2FsbGVyeV92MC4xLnR4dCI+MC4xPC9hPiBbIDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3 c29uLmNvbS9kb3dubG9hZHMvc21kX2dhbGxlcnlfdjAuMV96aXAudHh0Ij5jb21wcmVzc2Vk PC9hPiBdIHwgSW5pdGlhbCByZWxlYXNlICYjODIxMTsgSGFwcHkgVmFsZW50aW5lcyBEYXkg Oi0pPC9saT4KCQk8bGk+MTkgRmViIDA4IHwgPGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24u Y29tL2Rvd25sb2Fkcy9zbWRfZ2FsbGVyeV92MC4yLnR4dCI+MC4yPC9hPiBbIDxhIGhyZWY9 Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9kb3dubG9hZHMvc21kX2dhbGxlcnlfdjAuMl96aXAu dHh0Ij5jb21wcmVzc2VkPC9hPiBdIHwgQWRkZWQgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRl eHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP3BpZD0xNzI0NTkjcDE3MjQ1OSI+e2dhbGxl cnlpZH08L2E+ICh0aGFua3MgcmxvYWRlcnJvKSBhbmQgc29tZSBza2VsZXRvbiBkb2NzPC9s aT4KCTwvdWw+CgoJPHA+PHN0cm9uZz5PZmZpY2lhbDwvc3Ryb25nPjwvcD4KCgk8dWw+CgkJ PGxpPjExIE1hciAwOCB8IDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9kb3dubG9h ZHMvc21kX2dhbGxlcnlfdjAuMy50eHQiPjAuMzwvYT4gWyA8YSBocmVmPSJodHRwOi8vc3Rl ZmRhd3Nvbi5jb20vZG93bmxvYWRzL3NtZF9nYWxsZXJ5X3YwLjNfemlwLnR4dCI+Y29tcHJl c3NlZDwvYT4gXSB8IE9mZmljaWFsIHB1YmxpYyByZWxlYXNlLiBGaXhlZCBzaWxseSBlbXB0 eSBmaWVsZCBidWc7IGFkZGVkIHtjb3VudGVyfSwge2luZGV4fSBhbmQgdGhlIHRvdGFscyAo YWxsIHRoYW5rcyA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0 b3BpYy5waHA/cGlkPTE3MzQ5MCNwMTczNDkwIj5qYWtvYjwvYT4pPC9saT4KCQk8bGk+MTUg TWFyIDA4IHwgPGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL2Rvd25sb2Fkcy9zbWRf Z2FsbGVyeV92MC4zMS50eHQiPjAuMzE8L2E+IFsgPGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdz b24uY29tL2Rvd25sb2Fkcy9zbWRfZ2FsbGVyeV92MC4zMV96aXAudHh0Ij5jb21wcmVzc2Vk PC9hPiBdIHwgRml4ZWQgYSBjb3VwbGUgb2YgdW5kZWZpbmVkIGluZGV4ZXMgYW5kIDxhIGhy ZWY9Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9waWQ9MTc0 ODE4I3AxNzQ4MTgiPmFkZGVkIHtjYXRlZ29yeV90aXRsZX08L2E+ICh0aGFua3MgPGEgaHJl Zj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP3BpZD0xNzQ4 MjAjcDE3NDgyMCI+anN0dWJiczwvYT4pPC9saT4KCQk8bGk+MTcgTWFyIDA4IHwgPGEgaHJl Zj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL2Rvd25sb2Fkcy9zbWRfZ2FsbGVyeV92MC4zMi50 eHQiPjAuMzI8L2E+IFsgPGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL2Rvd25sb2Fk cy9zbWRfZ2FsbGVyeV92MC4zMl96aXAudHh0Ij5jb21wcmVzc2VkPC9hPiBdIHwgRml4ZWQg YW5vdGhlciA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3Bp Yy5waHA/cGlkPTE3NDk0NyNwMTc0OTQ3Ij51bmRlZmluZWQgaW5kZXg8L2E+IGFuZCA8YSBo cmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/cGlkPTE3 NDk2MSNwMTc0OTYxIj5yZW1vdmVkIGJvZ3VzIGNhbGwgdG8gc21kX2xpYjwvYT4gKGJvdGgg dGhhbmtzIHNlY3VuZGFyKTwvbGk+CgkJPGxpPjIxIE1hciAwOCB8IDxhIGhyZWY9Imh0dHA6 Ly9zdGVmZGF3c29uLmNvbS9kb3dubG9hZHMvc21kX2dhbGxlcnlfdjAuMzMudHh0Ij4wLjMz PC9hPiBbIDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9kb3dubG9hZHMvc21kX2dh bGxlcnlfdjAuMzNfemlwLnR4dCI+Y29tcHJlc3NlZDwvYT4gXSB8IERpZCB2MC4zMSBwcm9w ZXJseSwgaW5jbHVkaW5nIHRhYmxlIHByZWZpeCAodGhhbmtzIDxhIGhyZWY9Imh0dHA6Ly9m b3J1bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9waWQ9MTc1MzAyI3AxNzUzMDIi Pm5hcmRvPC9hPik8L2xpPgoJCTxsaT4wMSBBcHIgMDggfCA8YSBocmVmPSJodHRwOi8vc3Rl ZmRhd3Nvbi5jb20vZG93bmxvYWRzL3NtZF9nYWxsZXJ5X3YwLjM0LnR4dCI+MC4zNDwvYT4g WyA8YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vZG93bmxvYWRzL3NtZF9nYWxsZXJ5 X3YwLjM0X3ppcC50eHQiPmNvbXByZXNzZWQ8L2E+IF0gfCBGaXhlZCA8c3BhbiBjbGFzcz0i Y2FwcyI+U1FMPC9zcGFuPiBwYXJlbnRoZXNpcyBidWcgOyBhZGRlZCA8YSBocmVmPSJodHRw Oi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/cGlkPTE3NTYzNyNwMTc1 NjM3Ij5lbXB0eWNsYXNzIGFuZCB7bWF4aW1hZ2VzfTwvYT4gKHRoYW5rcyB0aGVfZ2hvc3Qp PC9saT4KCQk8bGk+MDggQXByIDA4IHwgPGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29t L2Rvd25sb2Fkcy9zbWRfZ2FsbGVyeV92MC40LnR4dCI+MC40PC9hPiBbIDxhIGhyZWY9Imh0 dHA6Ly9zdGVmZGF3c29uLmNvbS9kb3dubG9hZHMvc21kX2dhbGxlcnlfdjAuNF96aXAudHh0 Ij5jb21wcmVzc2VkPC9hPiBdIHwgQ2hhbmdlZCB0aHVtYiB0byBhbGxvdyB0aHVtYi9mdWxs c2l6ZSBzd2FwcGluZyA7IEFkZGVkIHRodW1iY2hhbmdlLCB0aHVtYmNoYW5nZXdyYXB0YWcs IHRodW1iY2hhbmdlY2xhc3MsIHt0aHVtYmluZGV4fSwge3RodW1iY291bnRlcn0gYW5kIHRo ZSB7Y2hhbmdlZDoqfSByZXBsYWNlbWVudCB0YWdzICh0aGFua3MgZnVscyk8L2xpPgoJPC91 bD4KCgk8aDMgaWQ9ImNyZWRpdHMiPkNyZWRpdHM8L2gzPgoKCTxwPlRoaXMgcGx1Z2luIHdv dWxkbiYjODIxNzt0IGhhdmUgZXhpc3RlZCB3aXRob3V0IHRoZSBhd2Vzb21lIG1pbmQgb2Yg Um9iZXJ0IFdldHpsbWF5ci4gSGlzIHdldF9mb3JfZWFjaF9pbWFnZSBwbHVnaW4gaXMgdHJ1 ZSBnZW5pdXM7IHRoaXMgc2ltcGx5IHN0YW5kcyBvbiB0aGUgc2hvdWxkZXJzIG9mIHRoYXQg aWRlYSBhbmQgcm9sbHMgaW4gYSBzb3VwZWQgdXAgdmVyc2lvbiBvZiB0aGUgdGh1bWJuYWls IGdlbmVyYXRpb24gZW5naW5lIGZyb20gc21kX3NsaW1ib3guIFRvIHRoYXQgZW5kLCB0aGUg cGx1Z2luIGlzIGFsc28gaW5kZWJ0ZWQgdG8gYW55b25lIHdobyBoYXMgcG9zdGVkIGZlYXR1 cmVzIG9yIGJ1ZyByZXBvcnRzIHRvIG1lIG9yIHRoZSBzbWRfc2xpbWJveCB0aHJlYWQuIFlv dSYjODIxNztyZSBhbGwgbWFydmVsbG91cy48L3A+CgoJPHA+PC9kaXY+PC9wPgo8IS0tIC0t LSBCRUdJTiBQTFVHSU4gQ1NTIC0tLSAtLT4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KI3Nt ZF9oZWxwIHsgbGluZS1oZWlnaHQ6MS40NSA7fQojc21kX2hlbHAgY29kZSB7IGZvbnQtd2Vp Z2h0OmJvbGQ7IGZvbnQ6IDEwNSUvMTMwJSAiQ291cmllciBOZXciLCBjb3VyaWVyLCBtb25v c3BhY2U7IGJhY2tncm91bmQtY29sb3I6ICNGRkZGQ0M7fQojc21kX2hlbHAgY29kZS5ibG9j ayB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgYm9yZGVyOjFweCBkb3R0ZWQgIzk5OTsgYmFja2dy b3VuZC1jb2xvcjogI2YwZTY4YzsgZGlzcGxheTpibG9jazsgbWFyZ2luOjEwcHggMTBweCAy MHB4OyBwYWRkaW5nOjEwcHg7IH0KI3NtZF9oZWxwIGE6bGluaywgI3NtZF9oZWxwIGE6dmlz aXRlZCB7IGNvbG9yOiBibHVlOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGJvcmRlci1ib3R0 b206IDFweCBzb2xpZCBibHVlOyBwYWRkaW5nLWJvdHRvbToxcHg7fQojc21kX2hlbHAgYTpo b3ZlciwgI3NtZF9oZWxwIGE6YWN0aXZlIHsgY29sb3I6IGJsdWU7IHRleHQtZGVjb3JhdGlv bjogbm9uZTsgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIGJsdWU7IHBhZGRpbmctYm90dG9t OjFweDt9CiNzbWRfaGVscCBoMSB7IGNvbG9yOiAjMzY5OyBmb250OiAyMHB4IEdlb3JnaWEs IHNhbnMtc2VyaWY7IG1hcmdpbjogMDsgdGV4dC1hbGlnbjogY2VudGVyOyB9CiNzbWRfaGVs cCBoMiB7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjazsgcGFkZGluZzoxMHB4IDAg MDsgY29sb3I6ICMzNjk7IGZvbnQ6IDE3cHggR2VvcmdpYSwgc2Fucy1zZXJpZjsgfQojc21k X2hlbHAgaDMgeyBjb2xvcjogIzY5MzsgZm9udDogYm9sZCAxMnB4IEFyaWFsLCBzYW5zLXNl cmlmOyBsZXR0ZXItc3BhY2luZzogMXB4OyBtYXJnaW46IDEwcHggMCAwO3RleHQtdHJhbnNm b3JtOiB1cHBlcmNhc2U7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fQojc21kX2hlbHAg aDQgeyBmb250OiBib2xkIDExcHggQXJpYWwsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5n OiAxcHg7IG1hcmdpbjogMTBweCAwIDAgO3RleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0K I3NtZF9oZWxwIC5hdHQtbmFtZSB7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0KI3NtZF9oZWxwIC5t YW5kIHsgYmFja2dyb3VuZDojZWVlOyBib3JkZXI6MXB4IGRvdHRlZCAjOTk5OyB9CiNzbWRf aGVscCB0YWJsZSB7d2lkdGg6OTAlOyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZy1ib3R0 b206MWVtO30KI3NtZF9oZWxwIHRkLCAjc21kX2hlbHAgdGgge2JvcmRlcjoxcHggc29saWQg Izk5OTsgcGFkZGluZzouNWVtIDA7fQojc21kX2hlbHAgdWwgeyBsaXN0LXN0eWxlLXR5cGU6 c3F1YXJlOyB9CiNzbWRfaGVscCBsaSB7IG1hcmdpbi1sZWZ0OjM1cHg7IH0KI3NtZF9oZWxw IC5icmVhayB7IG1hcmdpbi10b3A6NXB4OyB9Cjwvc3R5bGU+CjwhLS0gLS0tIEVORCBQTFVH SU4gQ1NTIC0tLSAtLT4KIjtzOjM6Im1kNSI7czozMjoiMjIzYWVjZGE1NGQxNjg3MzgxY2Vi OGNjMzQ3OWRjN2EiO30=