# Name: smd_if v0.8 # Type: Client side plugin # Generic multiple if condition tests # Author: Stef Dawson # URL: http://stefdawson.com/ # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMDp7czo0OiJuYW1lIjtzOjY6InNtZF9pZiI7czo2OiJhdXRob3IiO3M6MTE6IlN0ZWYg RGF3c29uIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIyOiJodHRwOi8vc3RlZmRhd3Nvbi5jb20v IjtzOjc6InZlcnNpb24iO3M6MzoiMC44IjtzOjExOiJkZXNjcmlwdGlvbiI7czozNToiR2Vu ZXJpYyBtdWx0aXBsZSBpZiBjb25kaXRpb24gdGVzdHMiO3M6NDoiY29kZSI7czoxMzM3Njoi ZnVuY3Rpb24gc21kX2lmKCRhdHRzLCR0aGluZykgew0KCWdsb2JhbCAkdGhpc2FydGljbGUs ICRwcmV0ZXh0LCAkdGhpc2ZpbGUsICR0aGlzbGluaywgJHRoaXNpbWFnZSwgJHZhcmlhYmxl Ow0KDQoJZXh0cmFjdChsQXR0cyhhcnJheSgNCgkJJ2ZpZWxkJyA9PiAnJywNCgkJJ29wZXJh dG9yJyA9PiAnJywNCgkJJ3ZhbHVlJyA9PiAnJywNCgkJJ2xvZ2ljJyA9PiAnYW5kJywNCgkJ J2Nhc2Vfc2Vuc2l0aXZlJyA9PiAwLA0KCQknZmlsdGVyJyA9PiAnJywNCgkJJ3JlcGxhY2Un ID0+ICcnLA0KCQknZmlsdGVyX3R5cGUnID0+ICdhbGwnLA0KCQknZmlsdGVyX29uJyA9PiAn ZmllbGQnLA0KCQkncGFyYW1fZGVsaW0nID0+ICcsJywNCgkJJ21vZF9kZWxpbScgPT4gJzon LA0KCQknbGlzdF9kZWxpbScgPT4gJy8nLA0KCQknZGVidWcnID0+ICcwJywNCgkpLCAkYXR0 cykpOw0KDQoJLy8gU3BlY2lhbCBmaWVsZCBuYW1lcyB0aGF0IHJlZmVyIHRvICRwcmV0ZXh0 IG9yIGVsc2V3aGVyZSAtIGV2ZXJ5dGhpbmcgZWxzZSBpcyBhc3N1bWVkIHRvDQoJLy8gZXhp c3QgaW4gJHRoaXNhcnRpY2xlIHNvIGN1c3RvbSBmaWVsZHMgY2FuIGJlIHVzZWQNCgkkYWxs UHR4dCA9IGFycmF5KA0KCQkiaWQiID0+ICckcHJldGV4dFsiaWQiXScsDQoJCSJzZWN0aW9u IiA9PiAnJHByZXRleHRbInMiXScsDQoJCSJjYXRlZ29yeSIgPT4gJyRwcmV0ZXh0WyJjIl0n LA0KCQkicXVlcnkiID0+ICckcHJldGV4dFsicSJdJywNCgkJInBnIiA9PiAnJHByZXRleHRb InBnIl0nLA0KCQkibW9udGgiID0+ICckcHJldGV4dFsibW9udGgiXScsDQoJCSJhdXRob3Ii ID0+ICckcHJldGV4dFsiYXV0aG9yIl0nLA0KCQkic3RhdHVzIiA9PiAnJHByZXRleHRbInN0 YXR1cyJdJywNCgkJInBhZ2UiID0+ICckcHJldGV4dFsicGFnZSJdJywNCgkJIm5leHRfaWQi ID0+ICckcHJldGV4dFsibmV4dF9pZCJdJywNCgkJIm5leHRfdGl0bGUiID0+ICckcHJldGV4 dFsibmV4dF90aXRsZSJdJywNCgkJIm5leHRfdXRpdGxlIiA9PiAnJHByZXRleHRbIm5leHRf dXRpdGxlIl0nLA0KCQkicHJldl9pZCIgPT4gJyRwcmV0ZXh0WyJwcmV2X2lkIl0nLA0KCQki cHJldl90aXRsZSIgPT4gJyRwcmV0ZXh0WyJwcmV2X3RpdGxlIl0nLA0KCQkicHJldl91dGl0 bGUiID0+ICckcHJldGV4dFsicHJldl91dGl0bGUiXScsDQoJCSJwZXJtbGlua19tb2RlIiA9 PiAnJHByZXRleHRbInBlcm1saW5rX21vZGUiXScsDQoJKTsNCgkvLyBFYWNoIGVudHJ5IGhh cyB0aGUgb3BlcmF0aW9uIHRvIGJlIGV2YWwoKWQgbGF0ZXIgYW5kIGEgbGlzdCBvZiBkaXNh bGxvd2VkIGZpZWxkcw0KCSRhbGxPcHMgPSBhcnJheSgNCgkJJ2VxJyA9PiBhcnJheSgnaXNz ZXQoVkFSTkFNRSkgJiYgQ0FTVCBGSUVMRCA9PT0gQ0FTVCBWQUxVRScsICcnKSwNCgkJJ25v dCcgPT4gYXJyYXkoJ2lzc2V0KFZBUk5BTUUpICYmIENBU1QgRklFTEQgIT09IENBU1QgVkFM VUUnLCAnJyksDQoJCSdndCcgPT4gYXJyYXkoJ2lzc2V0KFZBUk5BTUUpICYmIENBU1QgRklF TEQgPiBDQVNUIFZBTFVFJywgJycpLA0KCQknZ2UnID0+IGFycmF5KCdpc3NldChWQVJOQU1F KSAmJiBDQVNUIEZJRUxEID49IENBU1QgVkFMVUUnLCAnJyksDQoJCSdsdCcgPT4gYXJyYXko J2lzc2V0KFZBUk5BTUUpICYmIENBU1QgRklFTEQgPCBDQVNUIFZBTFVFJywgJycpLA0KCQkn bGUnID0+IGFycmF5KCdpc3NldChWQVJOQU1FKSAmJiBDQVNUIEZJRUxEIDw9IENBU1QgVkFM VUUnLCAnJyksDQoJCSdkaXZpc2libGUnID0+IGFycmF5KCdpc3NldChWQVJOQU1FKSAmJiBD QVNUIEZJRUxEICUgQ0FTVCBWQUxVRSA9PT0gMCcsICcnKSwNCgkJJ2luJyA9PiBhcnJheSgn aXNzZXQoVkFSTkFNRSkgJiYgaW5fYXJyYXkoRklFTEQsIGV4cGxvZGUoIicuJGxpc3RfZGVs aW0uJyIsIFZBTFVFKSkgIT09IGZhbHNlJywgJycpLA0KCQknbm90aW4nID0+IGFycmF5KCdp c3NldChWQVJOQU1FKSAmJiBpbl9hcnJheShGSUVMRCwgZXhwbG9kZSgiJy4kbGlzdF9kZWxp bS4nIiwgVkFMVUUpKSA9PT0gZmFsc2UnLCAnJyksDQoJCSdiZWdpbnMnID0+IGFycmF5KCdp c3NldChWQVJOQU1FKSAmJiBzdHJwb3MoRklFTEQsIFZBTFVFKSA9PT0gMCcsICcnKSwNCgkJ J2NvbnRhaW5zJyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgc3RycG9zKEZJRUxELCBW QUxVRSkgIT09IGZhbHNlJywgJycpLA0KCQknZW5kcycgPT4gYXJyYXkoJ2lzc2V0KFZBUk5B TUUpICYmIHN1YnN0cihGSUVMRCwgc3RybGVuKEZJRUxEKSAtIHN0cmxlbihWQUxVRSkpID09 PSBWQUxVRScsICcnKSwNCgkJJ2RlZmluZWQnID0+IGFycmF5KCdpc3NldChWQVJOQU1FKScs ICdwYXJlbnQnKSwNCgkJJ3VuZGVmaW5lZCcgPT4gYXJyYXkoJyFpc3NldChWQVJOQU1FKScs ICdwYXJlbnQnKSwNCgkJJ2lzZW1wdHknID0+IGFycmF5KCdpc3NldChWQVJOQU1FKSAmJiBG SUVMRCA9PSAiIicsICcnKSwNCgkJJ2lzdXNlZCcgPT4gYXJyYXkoJ2lzc2V0KFZBUk5BTUUp ICYmIEZJRUxEICE9ICIiJywgJycpLA0KCQknaXNudW0nID0+IGFycmF5KCdpc3NldChWQVJO QU1FKSAmJiBjdHlwZV9kaWdpdCgoc3RyaW5nKUZJRUxEKScsICcnKSwNCgkJJ2lzYWxwaGEn ID0+IGFycmF5KCdpc3NldChWQVJOQU1FKSAmJiBjdHlwZV9hbHBoYSgoc3RyaW5nKUZJRUxE KScsICcnKSwNCgkJJ2lzYWxudW0nID0+IGFycmF5KCdpc3NldChWQVJOQU1FKSAmJiBjdHlw ZV9hbG51bSgoc3RyaW5nKUZJRUxEKScsICcnKSwNCgkJJ2lzbG93ZXInID0+IGFycmF5KCdp c3NldChWQVJOQU1FKSAmJiBjdHlwZV9sb3dlcigoc3RyaW5nKUZJRUxEKScsICcnKSwNCgkJ J2lzdXBwZXInID0+IGFycmF5KCdpc3NldChWQVJOQU1FKSAmJiBjdHlwZV91cHBlcigoc3Ry aW5nKUZJRUxEKScsICcnKSwNCgkJJ2lzcHVuY3QnID0+IGFycmF5KCdpc3NldChWQVJOQU1F KSAmJiBjdHlwZV9wdW5jdCgoc3RyaW5nKUZJRUxEKScsICcnKSwNCgkJJ2lzc3BhY2UnID0+ IGFycmF5KCdpc3NldChWQVJOQU1FKSAmJiBjdHlwZV9zcGFjZSgoc3RyaW5nKUZJRUxEKScs ICcnKSwNCgkpOw0KDQoJJG51bWVyaWNPcHMgPSAiZ3QsIGdlLCBsdCwgbGUsIGVxLCBub3Qs IGRpdmlzaWJsZSI7DQoJJGNhc2VPcHMgPSAiaXNsb3dlciwgaXN1cHBlciI7DQoJJHNwYWNl T3BzID0gImlzbnVtLCBpc2FscGhhLCBpc2FsbnVtLCBpc2xvd2VyLCBpc3VwcGVyLCBpc3B1 bmN0LCBiZWdpbnMsIGNvbnRhaW5zLCBlbmRzIjsNCgkkZmllbGRzID0gZG9fbGlzdCgkZmll bGQsICRwYXJhbV9kZWxpbSk7DQoJJG51bUZsZHMgPSBjb3VudCgkZmllbGRzKTsNCgkkb3Bz ID0gZG9fbGlzdCgkb3BlcmF0b3IsICRwYXJhbV9kZWxpbSk7DQoJJG51bU9wcyA9IGNvdW50 KCRvcHMpOw0KCSR2YWxzID0gZG9fbGlzdCgkdmFsdWUsICRwYXJhbV9kZWxpbSk7DQoJJG51 bVZhbHMgPSBjb3VudCgkdmFscyk7DQoJJHBhcmVudENhdHMgPSAnJzsgLy8gUGxhY2Vob2xk ZXIgZm9yIHRoZSBjb25jYXRlbmF0ZWQgbGlzdCBvZiBjYXRlZ29yeSBsZWFmIG5vZGVzDQoJ JHJlcGxhY2VtZW50cyA9IGFycmF5KCk7DQoJJHR5cGUgPSAoJHRoaXNmaWxlKSA/ICJmaWxl IiA6ICgoJHRoaXNsaW5rKSA/ICJsaW5rIiA6ICgoJHRoaXNpbWFnZSkgPyAiaW1hZ2UiIDog ImFydGljbGUiKSk7DQoJJG91dCA9IGFycmF5KCk7DQoJJGl0ZXJhdGlvbnMgPSAoJG51bUZs ZHMgPiAkbnVtT3BzKSA/ICRudW1GbGRzIDogJG51bU9wczsNCgkkZmlsdGVyID0gKCFlbXB0 eSgkZmlsdGVyKSkgPyBkb19saXN0KCRmaWx0ZXIsICRwYXJhbV9kZWxpbSkgOiBhcnJheSgp Ow0KCSRyZXBsYWNlID0gKCFlbXB0eSgkcmVwbGFjZSkpID8gZG9fbGlzdCgkcmVwbGFjZSwg JHBhcmFtX2RlbGltKSA6IGFycmF5KCk7DQoJJG51bUZpbHRlcnMgPSBjb3VudCgkZmlsdGVy KTsNCgkkbnVtUmVwbGFjZSA9IGNvdW50KCRyZXBsYWNlKTsNCgkkZmlsdGVyX29uID0gKCFl bXB0eSgkZmlsdGVyX29uKSkgPyBkb19saXN0KCRmaWx0ZXJfb24sICRwYXJhbV9kZWxpbSkg OiBhcnJheSgpOw0KCSRmaWx0ZXJfdHlwZSA9ICghZW1wdHkoJGZpbHRlcl90eXBlKSkgPyBk b19saXN0KCRmaWx0ZXJfdHlwZSwgJHBhcmFtX2RlbGltKSA6IGFycmF5KCk7DQoJaWYgKCRk ZWJ1ZyA+IDEgJiYgKCRmaWx0ZXIgfHwgJHJlcGxhY2UpKSB7DQoJCWVjaG8gIisrIEZJTFRF UlMgKysiOw0KCQlkbXAoJGZpbHRlcik7DQoJCWRtcCgkcmVwbGFjZSk7DQoJfQ0KDQoJZm9y ICgkaWR4ID0gMDsgJGlkeCA8ICRpdGVyYXRpb25zOyAkaWR4KyspIHsNCgkJJGZsZCA9ICgk aWR4IDwgJG51bUZsZHMpID8gJGZpZWxkc1skaWR4XSA6ICRmaWVsZHNbMF07IC8vIEFsbG93 IHNob3J0LWNpcmN1aXQNCgkJJGZsZFBhcnRzID0gZXhwbG9kZSgkbW9kX2RlbGltLCAkZmxk KTsNCgkJJHZhbCA9ICgkaWR4IDwgJG51bVZhbHMpID8gJHZhbHNbJGlkeF0gOiAnJzsNCgkJ JHZhbFBhcnRzID0gZXhwbG9kZSgkbW9kX2RlbGltLCAkdmFsKTsNCgkJJG9wID0gKCRpZHgg PCAkbnVtT3BzICYmICRvcHNbJGlkeF0gIT0gJycpID8gJG9wc1skaWR4XSA6ICgoJGZsZFBh cnRzWzBdPT0icGFyZW50IikgPyAiY29udGFpbnMiIDogImVxIik7DQoJCSRvcFBhcnRzID0g ZXhwbG9kZSgkbW9kX2RlbGltLCAkb3ApOw0KCQkkb3AgPSAoYXJyYXlfa2V5X2V4aXN0cygk b3BQYXJ0c1swXSwgJGFsbE9wcykpID8gJG9wUGFydHNbMF0gOiAiZXEiOw0KCQkkY2FzdCA9 ICgoY291bnQoJG9wUGFydHMpID09IDIpICYmICgkb3BQYXJ0c1sxXSA9PT0gIk5VTSIpICYm IChpbl9saXN0KCRvcCwgJG51bWVyaWNPcHMpKSkgPyAnKGludCknIDogJyc7DQoJCSRsZW5n dGggPSAoKGNvdW50KCRvcFBhcnRzKSA9PSAyKSAmJiAoJG9wUGFydHNbMV0gPT09ICJMRU4i KSAmJiAoaW5fbGlzdCgkb3AsICRudW1lcmljT3BzKSkpID8gJ3N0cmxlbihGSUVMRCknIDog Jyc7DQoJCSRraWxsU3BhY2VzID0gKChjb3VudCgkb3BQYXJ0cykgPT0gMikgJiYgKCRvcFBh cnRzWzFdID09PSAiTk9TUEFDRSIpICYmIChpbl9saXN0KCRvcCwgJHNwYWNlT3BzKSkpID8g dHJ1ZSA6IGZhbHNlOw0KCQkkc3RyaXBGbGQgPSAoKGNvdW50KCRmbGRQYXJ0cykgPiAxKSAm JiAoaW5fYXJyYXkoIk5PVEFHUyIsICRmbGRQYXJ0cykpKSA/IHRydWUgOiBmYWxzZTsNCgkJ JHN0cmlwVmFsID0gKChjb3VudCgkdmFsUGFydHMpID4gMSkgJiYgKGluX2FycmF5KCJOT1RB R1MiLCAkdmFsUGFydHMpKSkgPyB0cnVlIDogZmFsc2U7DQoJCSR0cmltRmxkID0gKChjb3Vu dCgkZmxkUGFydHMpID4gMSkgJiYgKGluX2FycmF5KCJUUklNIiwgJGZsZFBhcnRzKSkpID8g dHJ1ZSA6IGZhbHNlOw0KCQkkdHJpbVZhbCA9ICgoY291bnQoJHZhbFBhcnRzKSA+IDEpICYm IChpbl9hcnJheSgiVFJJTSIsICR2YWxQYXJ0cykpKSA/IHRydWUgOiBmYWxzZTsNCgkJJGNh c2Vfc2Vuc2l0aXZlID0gKGluX2xpc3QoJG9wLCAkY2FzZU9wcykpID8gMSA6ICRjYXNlX3Nl bnNpdGl2ZTsNCgkJJHBhdCA9ICgkaWR4IDwgJG51bUZpbHRlcnMpID8gJGZpbHRlclskaWR4 XSA6ICgoJGZpbHRlcikgPyAkZmlsdGVyWzBdIDogJycpOw0KCQkkcmVwID0gKCRpZHggPCAk bnVtUmVwbGFjZSkgPyAkcmVwbGFjZVskaWR4XSA6ICgoJHJlcGxhY2UpID8gJHJlcGxhY2Vb MF0gOiAnJyk7DQoJCWlmICgkZGVidWcpIHsNCgkJCWVjaG8gJ1RFU1QgJy4oJGlkeCsxKS5u Ow0KCQkJZG1wKCRmbGRQYXJ0cywgJG9wUGFydHMsICR2YWxQYXJ0cyk7DQoJCX0NCgkJLy8g R2V0IHRoZSBvcGVyYXRvciByZXBsYWNlbWVudCBjb2RlDQoJCSRleGNsdWRlID0gZG9fbGlz dCgkYWxsT3BzWyRvcF1bMV0pOw0KCQkkb3AgPSAkYWxsT3BzWyRvcF1bMF07DQoNCgkJLy8g QXMgbG9uZyBhcyB0aGUgY3VycmVudCBvcGVyYXRvciBhbGxvd3MgdGhpcyBmaWVsZC4uLg0K CQlpZiAoIWluX2FycmF5KCRmbGRQYXJ0c1swXSwgJGV4Y2x1ZGUpKSB7DQoJCQkvLyBNYWtl IHVwIHRoZSB0ZXN0IGZpZWxkIHZhcmlhYmxlDQoJCQlpZiAoaXNzZXQoJHRoaXNmaWxlWyRm bGRQYXJ0c1swXV0pKSB7DQoJCQkJJHJmbGQgPSAkZmxkUGFydHNbMF07DQoJCQkJJGZsZCA9 ICckdGhpc2ZpbGVbIicuJHJmbGQuJyJdJzsNCgkJCX0gZWxzZSBpZiAoaXNzZXQoJHRoaXNs aW5rWyRmbGRQYXJ0c1swXV0pKSB7DQoJCQkJJHJmbGQgPSAkZmxkUGFydHNbMF07DQoJCQkJ JGZsZCA9ICckdGhpc2xpbmtbIicuJHJmbGQuJyJdJzsNCgkJCX0gZWxzZSBpZiAoaXNzZXQo JHRoaXNpbWFnZVskZmxkUGFydHNbMF1dKSkgew0KCQkJCSRyZmxkID0gJGZsZFBhcnRzWzBd Ow0KCQkJCSRmbGQgPSAnJHRoaXNpbWFnZVsiJy4kcmZsZC4nIl0nOw0KCQkJfSBlbHNlIGlm IChhcnJheV9rZXlfZXhpc3RzKCRmbGRQYXJ0c1swXSwgJGFsbFB0eHQpKSB7DQoJCQkJJHJm bGQgPSAkZmxkUGFydHNbMF07DQoJCQkJJGZsZCA9ICRhbGxQdHh0WyRyZmxkXTsNCgkJCX0g ZWxzZSBpZiAoJGZsZFBhcnRzWzBdID09ICJwYXJlbnQiKSB7DQoJCQkJJGxldmVsID0gJyc7 DQoJCQkJZm9yZWFjaCAoJGZsZFBhcnRzIGFzICRwYXJ0KSB7DQoJCQkJCWlmICgkcGFydCA9 PSAicGFyZW50Iikgew0KCQkJCQkJJHRoZUNhdCA9ICgkdGhpc2ZpbGUpID8gJHRoaXNmaWxl WydjYXRlZ29yeSddIDogKCgkdGhpc2xpbmspID8gJHRoaXNsaW5rWydjYXRlZ29yeSddIDog KCgkdGhpc2ltYWdlKSA/ICR0aGlzaW1hZ2VbJ2NhdGVnb3J5J10gOiAkcHJldGV4dFsnYydd KSk7DQoJCQkJCX0gZWxzZSBpZiAoc3RycG9zKCRwYXJ0LCAiQ0FUIikgPT09IDApIHsNCgkJ CQkJCSR0aGVDYXQgPSAkdGhpc2FydGljbGVbImNhdGVnb3J5Ii5zdWJzdHIoJHBhcnQsIDMp XTsNCgkJCQkJfSBlbHNlIGlmIChzdHJwb3MoJHBhcnQsICJMVkwiKSA9PT0gMCkgew0KCQkJ CQkJJGxldmVsID0gc3Vic3RyKCRwYXJ0LCAzKTsNCgkJCQkJfQ0KCQkJCX0NCg0KCQkJCSR0 cmVlID0gZ2V0VHJlZVBhdGgoZG9TbGFzaCgkdGhlQ2F0KSwgJHR5cGUpOw0KCQkJCWlmICgk ZGVidWcgJiYgJHRyZWUpIHsNCgkJCQkJZWNobyAiQ0FURUdPUlkgVFJFRToiOw0KCQkJCQlk bXAoJHRyZWUpOw0KCQkJCX0NCgkJCQkkaXRlbXMgPSBhcnJheSgpOw0KCQkJCWZvcmVhY2gg KCR0cmVlIGFzICRsZWFmKSB7DQoJCQkJCWlmICgkbGVhZlsnbmFtZSddID09ICJyb290IiB8 fCAkbGVhZlsnbmFtZSddID09ICR0aGVDYXQpIHsNCgkJCQkJCWNvbnRpbnVlOw0KCQkJCQl9 IGVsc2UgaWYgKCRsZXZlbCA9PSAnJyB8fCAkbGV2ZWwgPT0gJGxlYWZbJ2xldmVsJ10pIHsN CgkJCQkJCSRpdGVtc1tdID0gJGxlYWZbJ25hbWUnXTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQkk cGFyZW50Q2F0cyA9ICRyZmxkID0gaW1wbG9kZSgiICIsICRpdGVtcyk7DQoJCQkJJGZsZCA9 ICckcGFyZW50Q2F0cyc7DQoJCQl9IGVsc2UgaWYgKCRmbGRQYXJ0c1swXSA9PSAidHhwdmFy Iikgew0KCQkJCWlmIChjb3VudCgkZmxkUGFydHMpID4gMSkgew0KCQkJCQkkcmZsZCA9ICRm bGRQYXJ0c1sxXTsNCgkJCQkJJGZsZCA9ICckdmFyaWFibGVbIicuJHJmbGQuJyJdJzsNCgkJ CQl9DQoJCQl9IGVsc2UgaWYgKCRmbGRQYXJ0c1swXSA9PSAidXJsdmFyIikgew0KCQkJCWlm IChjb3VudCgkZmxkUGFydHMpID4gMSkgew0KCQkJCQkkcmZsZCA9ICRmbGRQYXJ0c1sxXTsN CgkJCQkJJGZsZCA9ICckX0dFVFsiJy4kcmZsZC4nIl0nOw0KCQkJCX0NCgkJCX0gZWxzZSBp ZiAoJGZsZFBhcnRzWzBdID09ICJwb3N0dmFyIikgew0KCQkJCWlmIChjb3VudCgkZmxkUGFy dHMpID4gMSkgew0KCQkJCQkkcmZsZCA9ICRmbGRQYXJ0c1sxXTsNCgkJCQkJJGZsZCA9ICck X1BPU1RbIicuJHJmbGQuJyJdJzsNCgkJCQl9DQoJCQl9IGVsc2UgaWYgKCRmbGRQYXJ0c1sw XSA9PSAic3ZydmFyIikgew0KCQkJCWlmIChjb3VudCgkZmxkUGFydHMpID4gMSkgew0KCQkJ CQkkcmZsZCA9ICRmbGRQYXJ0c1sxXTsNCgkJCQkJJGZsZCA9ICckX1NFUlZFUlsiJy4kcmZs ZC4nIl0nOw0KCQkJCX0NCgkJCX0gZWxzZSBpZiAoJGZsZFBhcnRzWzBdID09ICJwaHB2YXIi KSB7DQoJCQkJaWYgKGNvdW50KCRmbGRQYXJ0cykgPiAxKSB7DQoJCQkJCSRyZmxkID0gJGZs ZFBhcnRzWzFdOw0KCQkJCQkkZmxkID0gJyRHTE9CQUxTWyInLiRyZmxkLiciXSc7DQoJCQkJ fQ0KCQkJfSBlbHNlIGlmIChpc3NldCgkdGhpc2FydGljbGVbJGZsZFBhcnRzWzBdXSkpIHsN CgkJCQkkcmZsZCA9IHN0cnRvbG93ZXIoJGZsZFBhcnRzWzBdKTsNCgkJCQkkZmxkID0gJyR0 aGlzYXJ0aWNsZVsiJy4kcmZsZC4nIl0nOw0KCQkJfSBlbHNlIGlmICgkZmxkUGFydHNbMF0g PT0gIk5VTEwiKSB7DQoJCQkJJHNtZF9pZl92YXIgPSAnJzsNCgkJCQkkZmxkID0gJyRzbWRf aWZfdmFyJzsNCgkJCQkkcmZsZCA9ICJOVUxMIjsNCgkJCX0gZWxzZSB7DQoJCQkJJHNtZF9p Zl92YXIgPSAkZmxkUGFydHNbMF07DQoJCQkJJGZsZCA9ICckc21kX2lmX3Zhcic7DQoJCQkJ JHJmbGQgPSAiZmllbGQiLigkaWR4KjErMSk7DQoJCQl9DQoJCQkkcmxmbGQgPSAic21kX2lm X2xlbl8iLiRyZmxkOw0KCQkJJHJmbGQgPSAic21kX2lmXyIuJHJmbGQ7DQoNCgkJCS8vIFRh a2UgYSBjb3B5IG9mICRmbGQgdG8gdXNlIGluIGFueSBpc3NldCgpIHJlcXVlc3RzDQoJCQkk ZmxkQ2xlYW4gPSAkZmxkOw0KDQoJCQkvLyBBcHBseSB1c2VyLWRlZmluZWQgZmllbGQgZmls dGVycw0KCQkJaWYgKCRraWxsU3BhY2VzKSB7DQoJCQkJJGZsZCA9ICdwcmVnX3JlcGxhY2Uo Ii9ccysvIiwiIiwnLiRmbGQuJyknOw0KCQkJfQ0KCQkJaWYgKCRzdHJpcEZsZCkgew0KCQkJ CSRmbGQgPSAndHJpbShzdHJpcF90YWdzKCcuJGZsZC4nKSknOw0KCQkJfQ0KCQkJaWYgKCR0 cmltRmxkKSB7DQoJCQkJJGZsZCA9ICd0cmltKCcuJGZsZC4nKSc7DQoJCQl9DQoJCQkkZG9f ZmZpbHQgPSAoJHBhdCAmJiBpbl9hcnJheSgnZmllbGQnLCAkZmlsdGVyX29uKSAmJiAoaW5f YXJyYXkoJGZsZFBhcnRzWzBdLCAkZmlsdGVyX3R5cGUpIHx8IGluX2FycmF5KCdhbGwnLCAk ZmlsdGVyX3R5cGUpKSApID8gdHJ1ZSA6IGZhbHNlOw0KDQoJCQkvLyBGaW5kIHRoZSByZWFs IHZhbHVlIHRvIGNvbXBhcmUgYWdhaW5zdCAobWF5IGJlIGFub3RoZXIgZmllbGQpDQoJCQlp ZiAoJHZhbFBhcnRzWzBdID09ICJ1cmx2YXIiKSB7DQoJCQkJaWYgKGNvdW50KCR2YWxQYXJ0 cykgPiAxKSB7DQoJCQkJCSR2ZmxkID0gJHZhbFBhcnRzWzFdOw0KCQkJCQkkdmFsID0gKGlz c2V0KCRfR0VUWyR2ZmxkXSkgJiYgJF9HRVRbJHZmbGRdICE9ICIiKSA/ICckX0dFVFsiJy4k dmZsZC4nIl0nIDogZG9RdW90ZShzdHJfcmVwbGFjZSgnIicsICdcIicsICR2ZmxkKSk7DQoJ CQkJfQ0KCQkJfSBlbHNlIGlmICgkdmFsUGFydHNbMF0gPT0gInBvc3R2YXIiKSB7DQoJCQkJ aWYgKGNvdW50KCR2YWxQYXJ0cykgPiAxKSB7DQoJCQkJCSR2ZmxkID0gJHZhbFBhcnRzWzFd Ow0KCQkJCQkkdmFsID0gKGlzc2V0KCRfUE9TVFskdmZsZF0pICYmICRfUE9TVFskdmZsZF0g IT0gIiIpID8gJyRfUE9TVFsiJy4kdmZsZC4nIl0nIDogZG9RdW90ZShzdHJfcmVwbGFjZSgn IicsICdcIicsICR2ZmxkKSk7DQoJCQkJfQ0KCQkJfSBlbHNlIGlmICgkdmFsUGFydHNbMF0g PT0gInN2cnZhciIpIHsNCgkJCQlpZiAoY291bnQoJHZhbFBhcnRzKSA+IDEpIHsNCgkJCQkJ JHZmbGQgPSAkdmFsUGFydHNbMV07DQoJCQkJCSR2YWwgPSAoaXNzZXQoJF9TRVJWRVJbJHZm bGRdKSAmJiAkX1NFUlZFUlskdmZsZF0gIT0gIiIpID8gJyRfU0VSVkVSWyInLiR2ZmxkLici XScgOiBkb1F1b3RlKHN0cl9yZXBsYWNlKCciJywgJ1wiJywgJHZmbGQpKTsNCgkJCQl9DQoJ CQl9IGVsc2UgaWYgKCR2YWxQYXJ0c1swXSA9PSAidHhwdmFyIikgew0KCQkJCWlmIChjb3Vu dCgkdmFsUGFydHMpID4gMSkgew0KCQkJCQkkdmZsZCA9ICR2YWxQYXJ0c1sxXTsNCgkJCQkJ JHZhbCA9IChpc3NldCgkdmFyaWFibGVbJHZmbGRdKSAmJiAkdmFyaWFibGVbJHZmbGRdICE9 ICIiKSA/ICckdmFyaWFibGVbIicuJHZmbGQuJyJdJyA6IGRvUXVvdGUoc3RyX3JlcGxhY2Uo JyInLCAnXCInLCAkdmZsZCkpOw0KCQkJCX0NCgkJCX0gZWxzZSBpZiAoJHZhbFBhcnRzWzBd ID09ICJwaHB2YXIiKSB7DQoJCQkJaWYgKGNvdW50KCR2YWxQYXJ0cykgPiAxKSB7DQoJCQkJ CSR2ZmxkID0gJHZhbFBhcnRzWzFdOw0KCQkJCQkkdmFsID0gKGlzc2V0KCRHTE9CQUxTWyR2 ZmxkXSkgJiYgJEdMT0JBTFNbJHZmbGRdICE9ICIiKSA/ICckR0xPQkFMU1siJy4kdmZsZC4n Il0nIDogZG9RdW90ZShzdHJfcmVwbGFjZSgnIicsICdcIicsICR2ZmxkKSk7DQoJCQkJfQ0K CQkJfSBlbHNlIGlmIChzdHJwb3MoJHZhbFBhcnRzWzBdLCAiPyIpID09PSAwKSB7DQoJCQkJ JHZhbFBhcnRzWzBdID0gc3Vic3RyKHN0cnRvbG93ZXIoJHZhbFBhcnRzWzBdKSwgMSk7DQoJ CQkJJHZmbGQgPSAkdmFsUGFydHNbMF07DQoJCQkJaWYgKGlzc2V0KCR0aGlzZmlsZVskdmZs ZF0pICYmICR0aGlzZmlsZVskdmZsZF0gIT0gIiIpIHsNCgkJCQkJJHZhbCA9ICckdGhpc2Zp bGVbIicuJHZmbGQuJyJdJzsNCgkJCQl9IGVsc2UgaWYgKGlzc2V0KCR0aGlzbGlua1skdmZs ZF0pICYmICR0aGlzbGlua1skdmZsZF0gIT0gIiIpIHsNCgkJCQkJJHZhbCA9ICckdGhpc2xp bmtbIicuJHZmbGQuJyJdJzsNCgkJCQl9IGVsc2UgaWYgKGlzc2V0KCR0aGlzaW1hZ2VbJHZm bGRdKSAmJiAkdGhpc2ltYWdlWyR2ZmxkXSAhPSAiIikgew0KCQkJCQkkdmFsID0gJyR0aGlz aW1hZ2VbIicuJHZmbGQuJyJdJzsNCgkJCQl9IGVsc2UgaWYgKGFycmF5X2tleV9leGlzdHMo JHZmbGQsICRhbGxQdHh0KSAmJiAkYWxsUHR4dFskdmZsZF0gIT0gIiIpIHsNCgkJCQkJJHZh bCA9ICRhbGxQdHh0WyR2ZmxkXTsNCgkJCQl9IGVsc2UgaWYgKGlzc2V0KCR0aGlzYXJ0aWNs ZVskdmZsZF0pICYmICR0aGlzYXJ0aWNsZVskdmZsZF0gIT0gIiIpIHsNCgkJCQkJJHZhbCA9 ICckdGhpc2FydGljbGVbIicuJHZmbGQuJyJdJzsNCgkJCQl9IGVsc2Ugew0KCQkJCQkkdmFs ID0gZG9RdW90ZShzdHJfcmVwbGFjZSgnIicsICdcIicsICR2ZmxkKSk7DQoJCQkJfQ0KCQkJ fSBlbHNlIHsNCgkJCQkkdmZsZCA9ICJ2YWwiLigkaWR4KjErMSk7DQoJCQkJJHZhbCA9IGRv UXVvdGUoc3RyX3JlcGxhY2UoJyInLCAnXCInLCAkdmFsUGFydHNbMF0pKTsNCgkJCX0NCgkJ CSR2bGZsZCA9ICJzbWRfaWZfbGVuXyIuJHZmbGQ7DQoJCQkkdmZsZCA9ICJzbWRfaWZfIi4k dmZsZDsNCg0KCQkJLy8gQXBwbHkgdXNlci1kZWZpbmVkIHZhbHVlIGZpbHRlcnMNCgkJCWlm ICgkc3RyaXBWYWwpIHsNCgkJCQkkdmFsID0gJ3RyaW0oc3RyaXBfdGFncygnLiR2YWwuJykp JzsNCgkJCX0NCgkJCWlmICgkdHJpbVZhbCkgew0KCQkJCSR2YWwgPSAndHJpbSgnLiR2YWwu JyknOw0KCQkJfQ0KCQkJJGRvX3ZmaWx0ID0gKCRwYXQgJiYgaW5fYXJyYXkoJ3ZhbHVlJywg JGZpbHRlcl9vbikgJiYgKGluX2FycmF5KCR2YWxQYXJ0c1swXSwgJGZpbHRlcl90eXBlKSB8 fCBpbl9hcnJheSgnYWxsJywgJGZpbHRlcl90eXBlKSkgKSA/IHRydWUgOiBmYWxzZTsNCg0K CQkJLy8gUmVwbGFjZSB0aGUgc3RyaW5nIHBhcnRzLi4uDQoJCQkkZmlsdF9mbGQgPSAoJGRv X2ZmaWx0KSA/ICJwcmVnX3JlcGxhY2UoJyRwYXQnLCAnJHJlcCcsICRmbGQpIiA6ICRmbGQ7 DQoJCQkkZmlsdF92YWwgPSAoJGRvX3ZmaWx0KSA/ICJwcmVnX3JlcGxhY2UoJyRwYXQnLCAn JHJlcCcsICR2YWwpIiA6ICR2YWw7DQoJCQkkY21kID0gc3RyX3JlcGxhY2UoIkNBU1QiLCAk Y2FzdCwgJG9wKTsNCgkJCSRjbWQgPSAoJGxlbmd0aCkgPyBzdHJfcmVwbGFjZSgiRklFTEQi LCAkbGVuZ3RoLCAkY21kKSA6ICRjbWQ7DQoJCQkkY21kID0gc3RyX3JlcGxhY2UoIkZJRUxE IiwgKCgkY2FzZV9zZW5zaXRpdmUpID8gJGZpbHRfZmxkIDogJ3N0cnRvbG93ZXIoJy4kZmls dF9mbGQuJyknKSwgJGNtZCk7DQoJCQkkY21kID0gc3RyX3JlcGxhY2UoIlZBUk5BTUUiLCAk ZmxkQ2xlYW4sICRjbWQpOw0KCQkJJGNtZCA9IHN0cl9yZXBsYWNlKCJWQUxVRSIsICgoJGNh c2Vfc2Vuc2l0aXZlKSA/ICdWQUxVRScgOiAnc3RydG9sb3dlcihWQUxVRSknKSwgJGNtZCk7 DQoNCgkJCS8vIFdvdWxkIGxvdmUgdG8gZG8gdGhpcyBpbiBvbmUgZ28sIGJ1dCBpdCBhcHBl YXJzIGl0J3Mgbm90IHBvc3NpYmxlIHRvDQoJCQkvLyBkZWNsYXJlIGEgdmFyaWFibGUgYW5k IHVzZSBpdCB3aXRoaW4gdGhlIHNhbWUgZXZhbCgpIHN0YXRlbWVudCA6LSgNCgkJCWV2YWwg KCJcJHNtZF9wcmVmaWx0ZXIgPSBkb1F1b3RlKCIuJGZpbHRfdmFsLiIpOyIpOw0KCQkJJGNt ZCA9ICJAXCRyZXBsYWNlbWVudHNbJ3siLiRyZmxkLiJ9J10gPSAiLiRmaWx0X2ZsZC4iOyBc bkBcJHJlcGxhY2VtZW50c1sneyIuJHJsZmxkLiJ9J10gPSBzdHJsZW4oIi4kZmlsdF9mbGQu Iik7IFxuQFwkcmVwbGFjZW1lbnRzWyd7Ii4kdmZsZC4ifSddID0gIi4kZmlsdF92YWwuIjsg XG5AXCRyZXBsYWNlbWVudHNbJ3siLiR2bGZsZC4ifSddID0gc3RybGVuKCIuJGZpbHRfdmFs LiIpOyBcblwkb3V0WyIuJGlkeC4iXSA9ICgiLnN0cl9yZXBsYWNlKCJWQUxVRSIsICgoJHNt ZF9wcmVmaWx0ZXI9PT0iJyciICYmIHN0cnBvcygkb3AsICJzdHJwb3MiKSAhPT0gZmFsc2Up ID8gIicgJyIgOiAkc21kX3ByZWZpbHRlciksICRjbWQpLiIpID8gJ3RydWUnIDogJ2ZhbHNl JzsiOw0KCQkJaWYgKCRkZWJ1Zykgew0KCQkJCWRtcCgkY21kKTsNCgkJCX0NCgkJCS8vIC4u LiBhbmQgZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24NCgkJCWV2YWwoJGNtZCk7DQoJCX0NCgl9 DQoJaWYgKCRkZWJ1Zykgew0KCQllY2hvICJSRVNVTFQ6IjsNCgkJZG1wKCRvdXQpOw0KCQll Y2hvICJSRVBMQUNFTUVOVFM6IjsNCgkJZG1wKCRyZXBsYWNlbWVudHMpOw0KCX0NCglpZiAo JGRlYnVnID4gMikgew0KCQllY2hvICJQUkVURVhUOiI7DQoJCWRtcCgkcHJldGV4dCk7DQoJ CWVjaG8gIlRISVMgQVJUSUNMRToiOw0KCQlkbXAoJHRoaXNhcnRpY2xlKTsNCgkJZWNobyAi VEhJUyBGSUxFOiI7DQoJCWRtcCgkdGhpc2ZpbGUpOw0KCQllY2hvICJUSElTIExJTks6IjsN CgkJZG1wKCR0aGlzbGluayk7DQoJCWVjaG8gIlRISVMgSU1BR0U6IjsNCgkJZG1wKCR0aGlz aW1hZ2UpOw0KCX0NCgkvLyBDaGVjayBsb2dpYw0KCSRyZXN1bHQgPSAoJG91dCkgPyB0cnVl IDogZmFsc2U7DQoJaWYgKHN0cnRvbG93ZXIoJGxvZ2ljKSA9PSAiYW5kIiAmJiBpbl9hcnJh eSgiZmFsc2UiLCAkb3V0KSkgew0KCQkkcmVzdWx0ID0gZmFsc2U7DQoJfQ0KCWlmIChzdHJ0 b2xvd2VyKCRsb2dpYykgPT0gIm9yIiAmJiAhaW5fYXJyYXkoInRydWUiLCAkb3V0KSkgew0K CQkkcmVzdWx0ID0gZmFsc2U7DQoJfQ0KDQoJcmV0dXJuIHBhcnNlKEV2YWxFbHNlKHN0cnRy KCR0aGluZywgJHJlcGxhY2VtZW50cyksICRyZXN1bHQpKTsNCn0iO3M6NDoidHlwZSI7czox OiIwIjtzOjU6Im9yZGVyIjtzOjE6IjUiO3M6NDoiaGVscCI7czo0MDY3MzoiCTxwPjxkaXYg aWQ9InNtZF9oZWxwIj48L3A+CgoJPGgxPnNtZF9pZjwvaDE+CgoJPHA+QSBnZW5lcmljICYj ODIxNjtpZiBjb25kaXRpb24mIzgyMTc7IHRlc3Rlci4gQ2FuIHRlc3QgYW55IGZpZWxkIG9y IHZhcmlhYmxlIGluIHRoZSBjdXJyZW50IGFydGljbGUsIGZpbGUsIGltYWdlLCBsaW5rLCA8 c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB2YXIsIDxjb2RlPiZsdDt0eHA6dmFyaWFi bGUgLyZndDs8L2NvZGU+IG9yIDxzcGFuIGNsYXNzPSJjYXBzIj5QSFA8L3NwYW4+IGNvbnRl eHQgZm9yIGEgdmFyaWV0eSBvZiBhdHRyaWJ1dGVzIGFuZCB0YWtlIGFjdGlvbiBpZiA8c3Bh biBjbGFzcz0iY2FwcyI+VFJVRTwvc3Bhbj4gb3IgPHNwYW4gY2xhc3M9ImNhcHMiPkZBTFNF PC9zcGFuPi48L3A+CgoJPGgyPkZlYXR1cmVzPC9oMj4KCgk8dWw+CgkJPGxpPlN1cHBvcnRz IG1vc3QgbWFqb3IgYXJ0aWNsZSwgZmlsZSwgaW1hZ2UgYW5kIGxpbmsgdmFyaWFibGVzIHN1 Y2ggYXMgc2VjdGlvbiwgY2F0ZWdvcnksIGN1c3RvbSBmaWVsZHMsIGlkLCBxdWVyeSBzdHJp bmcsIGF1dGhvciwgYm9keSwgZXhjZXJwdCwgeWFoZGUgeWFoZGUsIHBsdXMgdXJsIHZhcnMs IHNlcnZlciB2YXJzLCB0eHAgdmFycywgcGhwIHZhcnMsIGFuZCBzdWItY2F0ZWdvcnkvcGFy ZW50IGNoZWNraW5nPC9saT4KCQk8bGk+VGVzdHMgaW5jbHVkZSBlcXVhbGl0eSwgaW5lcXVh bGl0eSwgbGVzcyB0aGFuLCBncmVhdGVyIHRoYW4sIGRpdmlzaWJsZSBieSwgZW1wdHksIHVz ZWQsIGRlZmluZWQsIGJlZ2lucywgZW5kcywgY29udGFpbnMsIGlzIG51bWVyaWMgLyBhbHBo YSAvIGFscGhhbnVtZXJpYyAvIGxvd2VyY2FzZSAvIHVwcGVyY2FzZSwgYW1vbmcgb3RoZXJz PC9saT4KCQk8bGk+VGVzdHMgZm9yIG1vcmUgdGhhbiBvbmUgY29uZGl0aW9uIGF0IG9uY2Ug YW5kIGFwcGxpZXMgZWl0aGVyIDxzcGFuIGNsYXNzPSJjYXBzIj5BTkQ8L3NwYW4+IGxvZ2lj IChhbGwgdGVzdHMgbXVzdCBwYXNzKSBvciBPUiBsb2dpYyAoYW55IHRlc3QgbXVzdCBwYXNz KTwvbGk+CgkJPGxpPkFsbCB0ZXN0ZWQgZmllbGRzIGFuZCB2YWx1ZXMgYXJlIGF2YWlsYWJs ZSB0byB0aGUgY29udGFpbmVyIHNvIHlvdSBjYW4gZGlzcGxheSB0aGVtPC9saT4KCQk8bGk+ Q3VzdG9tIHJlZ3VsYXItZXhwcmVzc2lvbiBmaWx0ZXJzIGFyZSBhdmFpbGFibGUgdG8gaGVs cCB3ZWVkIG91dCBiYWQgZGF0YTwvbGk+CgkJPGxpPlVnbHkgYW5kIHZlcnkgZGlydHkuIFVz ZXMgPHNwYW4gY2xhc3M9ImNhcHMiPlBIUDwvc3Bhbj4mIzgyMTc7cyA8Y29kZT5ldmFsKCk8 L2NvZGU+IGNvbW1hbmQgd2hpY2ggbW9zdCBwcm9ncmFtbWVycyBjb25jdXIgc2hvdWxkIGJl IHJlbmFtZWQgPGNvZGU+ZXZpbCgpPC9jb2RlPjwvbGk+Cgk8L3VsPgoKCTxoMj5BdXRob3I8 L2gyPgoKCTxwPjxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9jb21tZW50Rm9ybSI+ U3RlZiBEYXdzb248L2E+LiBCYXNlZCBvbiBhbiBpZGVhIGJyZXdpbmcgaW4gdGhlIGJhY2sg b2YgbXkgbWluZCB3aGlsZSBoYWNraW5nIGNoc19pZl91cmx2YXIuPC9wPgoKCTxoMj5JbnN0 YWxsYXRpb24gLyBVbmluc3RhbGxhdGlvbjwvaDI+CgoJPHA+RG93bmxvYWQgdGhlIHBsdWdp biBmcm9tIGVpdGhlciA8YSBocmVmPSJodHRwOi8vdGV4dHBhdHRlcm4ub3JnL3BsdWdpbnMv OTMwL3NtZF9pZiI+dGV4dHBhdHRlcm4ub3JnPC9hPiwgb3IgdGhlIDxhIGhyZWY9Imh0dHA6 Ly9zdGVmZGF3c29uLmNvbS9zdyI+c29mdHdhcmUgcGFnZTwvYT4sIHBhc3RlIHRoZSBjb2Rl IGludG8gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IEFkbWluIC0mZ3Q7IFBs dWdpbnMgcGFuZSwgaW5zdGFsbCBhbmQgZW5hYmxlIHRoZSBwbHVnaW4uIFZpc2l0IHRoZSA8 YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/aWQ9 MjUzNTciPmZvcnVtIHRocmVhZDwvYT4gZm9yIG1vcmUgaW5mbyBvciB0byByZXBvcnQgb24g dGhlIHN1Y2Nlc3Mgb3Igb3RoZXJ3aXNlIG9mIHRoZSBwbHVnaW4uPC9wPgoKCTxwPlRvIHVu aW5zdGFsbCwgc2ltcGx5IGRlbGV0ZSBmcm9tIHRoZSBBZG1pbiAtJmd0OyBQbHVnaW5zIHBh Z2UuPC9wPgoKCTxoMj5Vc2FnZTwvaDI+CgoJPHA+VXNlIHRoZSB0YWcgaW4gYW55IHBhZ2Us IGZvcm0gb3IgYXJ0aWNsZSBjb250ZXh0LiBDYW4gYWxzbyBiZSB1c2VkIGluc2lkZSBmaWxl LCBpbWFnZSAoaW4gdGhlIGZ1dHVyZSkgb3IgbGluayBsaXN0cyB0byB0YWtlIGFjdGlvbiBk ZXBlbmRpbmcgb24gYXR0cmlidXRlcyBvZiB0aGUgY3VycmVudCBpdGVtLjwvcD4KCgk8aDMg Y2xhc3M9InRhZyI+c21kX2lmPC9oMz4KCgk8cCBjbGFzcz0idGFnLXN1bW1hcnkiPkF0IHRo ZSBwbGFjZSB5b3Ugd2lzaCB0byBjb21wYXJlIGEgZmllbGQgd2l0aCBhbm90aGVyIHZhbHVl LCBwdXQgdGhpcyB0YWcgd2l0aCB0aGUgZmlyc3QgdGhyZWUgbWFuZGF0b3J5IGF0dHJpYnV0 ZXMuIEVhY2ggdGFrZSBhIHNlcmllcyBvZiBjb21tYS1zZXBhcmF0ZWQgbGlzdHMgJiM4MjEy OyB0aG91Z2ggdGhlIDxhIGhyZWY9IiNwYXJhbWRlbGltIj5jb21tYSBpcyBvdmVycmlkYWJs ZSB3aXRoIHBhcmFtX2RlbGltPC9hPi4gSWYgdGhlIHJlc3VsdCBvZiBhbGwgdGhlIGNvbXBh cmlzb24gdGVzdHMgaXMgPHNwYW4gY2xhc3M9ImNhcHMiPlRSVUU8L3NwYW4+IHRoZSBjb250 YWluZWQgYmxvY2sgd2lsbCBiZSBleGVjdXRlZC4gSWYgdGhlIHJlc3VsdCBpcyA8c3BhbiBj bGFzcz0iY2FwcyI+RkFMU0U8L3NwYW4+LCBhbnkgPGNvZGU+Jmx0O3R4cDplbHNlIC8mZ3Q7 PC9jb2RlPiB3aWxsIGJlIGV4ZWN1dGVkIGluc3RlYWQuIFdpdGhvdXQgYW55IDxjb2RlPiZs dDt0eHA6ZWxzZSAvJmd0OzwvY29kZT4gYmxvY2ssIG5vdGhpbmcgaXMgb3V0cHV0IGlmIHRo ZSByZXN1bHQgaXMgPHNwYW4gY2xhc3M9ImNhcHMiPkZBTFNFPC9zcGFuPi48L3A+CgoJPGg0 IGNsYXNzPSJhdHRzICIgaWQ9ImF0dHJpYnV0ZXMiPkF0dHJpYnV0ZXM8L2g0PgoKCTx1bD4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIG1hbmQiPmZpZWxkPC9zcGFuPiA6IHRoZSA8 YSBocmVmPSIjZmllbGQiPmZpZWxkczwvYT4gdG8gdGVzdDwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdHQtbmFtZSBtYW5kIj5vcGVyYXRvcjwvc3Bhbj4gOiB0aGUgPGEgaHJlZj0iI29w ZXJhdG9yIj5vcGVyYXRpb25zPC9hPiBmb3IgY29tcGFyaXNvbiB3aXRoIHRoYXQgZmllbGQg KGUuZy4gPGNvZGU+ZXE8L2NvZGU+LCA8Y29kZT5ub3Q8L2NvZGU+LCA8Y29kZT5iZWdpbnM8 L2NvZGU+LCBldGMpLiBEZWZhdWx0IGlzIHVzdWFsbHkgPGNvZGU+ZXE8L2NvZGU+PC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIG1hbmQiPnZhbHVlPC9zcGFuPiA6IHRoZSA8 YSBocmVmPSIjdmFsdWUiPnZhbHVlczwvYT4gd2l0aCB3aGljaCB0byBjb21wYXJlIHRoZSBm aWVsZHM8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPmxvZ2ljPC9zcGFuPiA6 IGhvdyBtdWx0aXBsZSB0ZXN0cyBhcmUgam9pbmVkOiA8c3BhbiBjbGFzcz0iY2FwcyI+QU5E PC9zcGFuPiBvciBPUi4gRGVmYXVsdCBpcyA8c3BhbiBjbGFzcz0iY2FwcyI+QU5EPC9zcGFu PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+Y2FzZV9zZW5zaXRpdmU8L3Nw YW4+IDogMSA9IGNhc2Utc2Vuc2l0aXZlIGNvbXBhcmlzb247IDAgPSBpZ25vcmUgY2FzZS4g RGVmYXVsdCBpcyAwPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5maWx0ZXI8 L3NwYW4+IDogbGlzdCBvZiByZWd1bGFyIGV4cHJlc3Npb25zIHdpdGggd2hpY2ggdG8gZmls dGVyIG9uZSBvciBtb3JlIGZpZWxkcy92YWx1ZXMuIFNlZSA8YSBocmVmPSIjZmlsdGVyaW5n Ij5maWx0ZXJpbmc8L2E+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5yZXBs YWNlPC9zcGFuPiA6IGxpc3Qgb2YgaXRlbXMgd2l0aCB3aGljaCB0byByZXBsYWNlIGVhY2gg b2YgdGhlIG1hdGNoaW5nIGZpbHRlcnM8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5h bWUiPmZpbHRlcl90eXBlPC9zcGFuPiA6IGxpbWl0IHRoZSBmaWx0ZXIgdG8gY2VydGFpbiB0 eXBlcyBvZiB0ZXN0LiBDaG9vc2UgZnJvbSA8Y29kZT5hbGw8L2NvZGU+ICh0aGUgZGVmYXVs dCksIDxjb2RlPnVybHZhcjwvY29kZT4sIDxjb2RlPnBvc3R2YXI8L2NvZGU+LCA8Y29kZT5z dnJ2YXI8L2NvZGU+LCA8Y29kZT50eHB2YXI8L2NvZGU+LCA8Y29kZT5waHB2YXI8L2NvZGU+ LCBvciBhbnkgZmllbGQgbmFtZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+ ZmlsdGVyX29uPC9zcGFuPiA6IGVpdGhlciBhcHBseSB0aGUgZmlsdGVyIHRvIHRoZSA8Y29k ZT5maWVsZDwvY29kZT4sIHRoZSA8Y29kZT52YWx1ZTwvY29kZT4gb3IgYm90aC4gRGVmYXVs dDogPGNvZGU+ZmllbGQ8L2NvZGU+LiBQbGVhc2Ugc2VlIHRoZSA8YSBocmVmPSIjZmNhdmVh dCI+ZmlsdGVyaW5nIGNhdmVhdDwvYT4gYmVsb3cgZm9yIGltcG9ydGFudCBpbmZvcm1hdGlv biBhYm91dCB0aGlzIGF0dHJpYnV0ZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFt ZSI+cGFyYW1fZGVsaW08L3NwYW4+IDogZGVsaW1pdGVyIHVzZWQgYmV0d2VlbiBlYWNoIGZp ZWxkLCBvcGVyYXRvciBvciB2YWx1ZSBpbiBhIG11bHRpLXRlc3QuIERlZmF1bHQgaXMgYSBj b21tYSAoLCk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPm1vZF9kZWxpbTwv c3Bhbj4gOiBkZWxpbWl0ZXIgdXNlZCB3aGVuIHNwZWNpZnlpbmcgZmllbGQgb3Igb3BlcmF0 b3IgbW9kaWZpZXJzIGZvciB1cmx2YXIsIHBvc3R2YXIsIHN2cnZhciBhbmQgdHhwdmFyLiBE ZWZhdWx0IGlzIGEgY29sb24gKDopPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1l Ij5saXN0X2RlbGltPC9zcGFuPiA6IGRlbGltaXRlciB1c2VkIHdoZW4gc3BlY2lmeWluZyBh IGxpc3Qgb2YgdmFsdWVzIHRvIGNoZWNrIHZpYSB0aGUgPGNvZGU+aW48L2NvZGU+IG9yIDxj b2RlPm5vdGluPC9jb2RlPiBvcGVyYXRvcnMuIERlZmF1bHQgaXMgYSBmb3J3YXJkLXNsYXNo ICgvKTwvbGk+Cgk8L3VsPgoKCTxwPlRoZSBsaXN0cyBhcmUgcHJvY2Vzc2VkIGluIG9yZGVy LCBpLmUuIHRoZSAxc3QgZmllbGQgdXNlcyB0aGUgMXN0IG9wZXJhdG9yIGluIHRoZSBsaXN0 IGFuZCBjb21wYXJlcyBpdCB0byB0aGUgMXN0IHZhbHVlOyB0aGUgMm5kIGZpZWxkIHVzZXMg dGhlIDJuZCBvcGVyYXRvciBpbiB0aGUgbGlzdCBhbmQgY29tcGFyZXMgaXQgdG8gdGhlIDJu ZCB2YWx1ZSwgYW5kIHNvIG9uLiBWYWx1ZXMgc2hvdWxkIHVzdWFsbHkgYmUgc3BlY2lmaWVk IHdpdGggcGxhY2Vob2xkZXJzIHRvIG1haW50YWluIG9yZGVyOiBlLmcuIDxjb2RlPnZhbHVl PSZxdW90OywgNCwsIHRvcCZxdW90OzwvY29kZT48L3A+CgoJPHA+Tm90ZSB0aGF0LCBhbHRo b3VnaCB0aGUgZmlyc3QgdGhyZWUgYXR0cmlidXRlcyBhcmUgY29uc2lkZXJlZCBtYW5kYXRv cnksIGlmIHlvdSBoYXBwZW4gdG8gcmVxdWlyZSB0aGUgZGVmYXVsdCBvcGVyYXRvciBmb3Ig YWxsIHlvdXIgdGVzdHMsIHlvdSBjYW4gc2FmZWx5IG9taXQgPGNvZGU+b3BlcmF0b3I8L2Nv ZGU+LiBTaW1pbGFybHkgd2l0aCB2YWx1ZXM6IGlmIHlvdSBhcmUgZW50aXJlbHkgdGVzdGlu ZyB0aGUgZXhpc3RlbmNlIG9yIHR5cGUgb2YgdmFyaWFibGVzLCB5b3UgY2FuIG9taXQgdGhl IDxjb2RlPnZhbHVlPC9jb2RlPiBwYXJhbWV0ZXIgaWYgeW91IHdpc2guIEFuZCBpZiB5b3Ug YXJlIHRlc3RpbmcgdGhlIHNhbWUgPGNvZGU+ZmllbGQ8L2NvZGU+IGFnYWluIGFuZCBhZ2Fp biBmb3IgZGlmZmVyaW5nIGNvbmRpdGlvbnMsIHlvdSBjYW4gbGlzdCBpdCBqdXN0IG9uY2Ug YXMgYSBjb252ZW5pZW50IHNob3J0Y3V0LjwvcD4KCgk8aDQgY2xhc3M9ImF0dC1uYW1lICIg aWQ9ImZpZWxkIj5maWVsZDwvaDQ+CgoJPHA+TGlzdCBvZiBmaWVsZCBsb2NhdGlvbnMgdG8g bG9vayBhdC4gU29tZSB1c2VmdWwgdmFsdWVzIGFyZTo8L3A+CgoJPHVsPgoJCTxsaT48Y29k ZT5zZWN0aW9uPC9jb2RlPjwvbGk+CgkJPGxpPjxjb2RlPmNhdGVnb3J5PC9jb2RlPiAob3Ig PGNvZGU+Y2F0ZWdvcnkxPC9jb2RlPiwgb3IgPGNvZGU+Y2F0ZWdvcnkyPC9jb2RlPiBpZiBv biBhbiBhcnRpY2xlIHBhZ2UpPC9saT4KCQk8bGk+PGNvZGU+YXV0aG9yaWQ8L2NvZGU+IG9y IDxjb2RlPmF1dGhvcjwvY29kZT48L2xpPgoJCTxsaT48Y29kZT5pZDwvY29kZT4gKGZpbGUv bGluay9pbWFnZS9hcnRpY2xlIElEKS4gSW4gYW4gaW5kaXZpZHVhbCBhcnRpY2xlIGNvbnRl eHQsIHVzZSA8Y29kZT50aGlzaWQ8L2NvZGU+IGluc3RlYWQ8L2xpPgoJCTxsaT48Y29kZT5x dWVyeTwvY29kZT4gKHRoZSBxdWVyeSBzdHJpbmcgZnJvbSB0aGUgc2VhcmNoIGZvcm0pPC9s aT4KCQk8bGk+PGNvZGU+cGc8L2NvZGU+ICh0aGUgY3VycmVudCBwYWdlIG51bWJlciBpbiBs aXN0cyk8L2xpPgoJCTxsaT48Y29kZT5tb250aDwvY29kZT4gKGN1cnJlbnQgbW9udGggZmll bGQgZnJvbSB0aGUgYWRkcmVzcyBiYXIpPC9saT4KCQk8bGk+PGNvZGU+c3RhdHVzPC9jb2Rl PiAoZG9jdW1lbnQgc3RhdHVzOiAyMDAsIDQwNCwgNDAzLCBldGMpPC9saT4KCQk8bGk+PGNv ZGU+cGFnZTwvY29kZT4gKHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBQYWdl IHRlbXBsYXRlIHVzZWQgYnkgdGhpcyBzZWN0aW9uKTwvbGk+CgkJPGxpPjxjb2RlPm5leHRf aWQ8L2NvZGU+IC8gPGNvZGU+cHJldl9pZDwvY29kZT4gKElEIG9mIG5leHQvcHJldiBkb2N1 bWVudCBpZiBvbiBhcnRpY2xlIHBhZ2UpPC9saT4KCQk8bGk+PGNvZGU+bmV4dF90aXRsZTwv Y29kZT4gLyA8Y29kZT5wcmV2X3RpdGxlPC9jb2RlPihUaXRsZSBvZiBuZXh0L3ByZXYgZG9j dW1lbnQgaWYgb24gYXJ0aWNsZSBwYWdlKTwvbGk+CgkJPGxpPjxjb2RlPm5leHRfdXRpdGxl PC9jb2RlPiAvIDxjb2RlPnByZXZfdXRpdGxlPC9jb2RlPiAodXJsLXRpdGxlIG9mIG5leHQv cHJldiBkb2N1bWVudCBpZiBvbiBhcnRpY2xlIHBhZ2UpPC9saT4KCQk8bGk+PGNvZGU+cGVy bWxpbmtfbW9kZTwvY29kZT4gKHRha2UgYWN0aW9uIGJhc2VkIG9uIG9uZSBvZiB0aGUgbWVz c3kvY2xlYW4gPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gc2NoZW1lcyk8L2xpPgoJ CTxsaT48Y29kZT5vdGhlciBhcnRpY2xlL2ZpbGUvbGluayBmaWVsZDwvY29kZT4gKGUuZy4g Ym9keSwgZXhjZXJwdCwgYXJ0aWNsZV9pbWFnZSwga2V5d29yZHMsIGxpbmthbm1lLCBmaWxl bmFtZSwgZG93bmxvYWRzLCAmIzgyMzA7KTwvbGk+CgkJPGxpPjxjb2RlPm15X2N1c3RvbV9m aWVsZF9uYW1lPC9jb2RlPiAoYW55IGN1c3RvbSBmaWVsZHMgeW91IGhhdmUgZGVmaW5lZCk8 L2xpPgoJCTxsaT48Y29kZT51cmx2YXI6dmFyX25hbWU8L2NvZGU+IChhbnkgdmFyaWFibGUg aW4gdGhlIGFkZHJlc3MgYmFyIGFmdGVyIHRoZSA8Y29kZT4/PC9jb2RlPik8L2xpPgoJCTxs aT48Y29kZT5wb3N0dmFyOnZhcl9uYW1lPC9jb2RlPiAoYW55IHZhcmlhYmxlIHBvc3RlZCBm cm9tIGFuIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBmb3JtKTwvbGk+CgkJPGxp Pjxjb2RlPnN2cnZhcjp2YXJfbmFtZTwvY29kZT4gKGFueSBzdGFuZGFyZCBzZXJ2ZXIgdmFy aWFibGUsIGUuZy4gPHNwYW4gY2xhc3M9ImNhcHMiPkhUVFA8L3NwYW4+X1VTRVJfQUdFTlQp PC9saT4KCQk8bGk+PGNvZGU+dHhwdmFyOm15X3ZhcjwvY29kZT4gKGFueSBUZXh0cGF0dGVy biB2YXJpYWJsZSBzZXQgd2l0aCA8Y29kZT4mbHQ7dHhwOnZhcmlhYmxlIG5hbWU9JnF1b3Q7 bXlfdmFyJnF1b3Q7IC8mZ3Q7PC9jb2RlPik8L2xpPgoJCTxsaT48Y29kZT5waHB2YXI6bXlf dmFyPC9jb2RlPiAoYW55IDxzcGFuIGNsYXNzPSJjYXBzIj5QSFA8L3NwYW4+IHZhcmlhYmxl IDxlbT5pbiB0aGUgZ2xvYmFsIHNjb3BlPC9lbT4pPC9saT4KCQk8bGk+PGNvZGU+cGFyZW50 Om9wdGlvbmFsX21vZGlmaWVyczwvY29kZT4gKHdoZXRoZXIgdGhlIGdpdmVuIGNhdGVnb3J5 IGlzIGEgZGVzY2VuZGVudCBvZiBhbm90aGVyIGNhdGVnb3J5KTwvbGk+CgkJPGxpPjxjb2Rl Pk5VTEw8L2NvZGU+ICh1c2VmdWwgd2hlbiBjb21wYXJpbmcgYXJiaXRyYXJ5IHZhbHVlcyBm b3IgZW1wdGluZXNzKTwvbGk+Cgk8L3VsPgoKCTxwPklmIHlvdSBzcGVjaWZ5IGEgZmllbGQg bmFtZSB0aGF0IGRvZXMgbm90IGV4aXN0LCB0aGUgdGV4dCB5b3UgdXNlIHdpbGwgYmUgdGFr ZW4gdmVyYmF0aW0gaW4gbW9zdCBjYXNlcy48L3A+CgoJPHA+SWYgeW91IHdpc2ggdG8gY29t cGFyZSBhIGZpZWxkIHRoYXQgbWlnaHQgY29udGFpbiA8c3BhbiBjbGFzcz0iY2FwcyI+SFRN TDwvc3Bhbj4gKGUuZyA8Y29kZT5ib2R5PC9jb2RlPiksIGFkZCB0aGUgbW9kaWZpZXIgPGNv ZGU+Ok5PVEFHUzwvY29kZT4gdG8gdGhlIGVuZCBvZiB0aGUgZmllbGQuIEl0IHdpbGwgaGF2 ZSBpdHMgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IGFuZCA8c3BhbiBjbGFzcz0i Y2FwcyI+UEhQPC9zcGFuPiB0YWdzIHN0cmlwcGVkIGZyb20gaXQgYW5kIHdpbGwgYWxzbyBi ZSB0cmltbWVkIHRvIHJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBzcGFjZXMuIFlvdSBt YXkgY2hvb3NlIHRvIHNvbGVseSByZW1vdmUgc3BhY2VzIGZyb20gYm90aCB0aGUgc3RhcnQg YW5kIGVuZCBvZiBhbnkgZmllbGQgYnkgYWRkaW5nIDxjb2RlPjpUUklNPC9jb2RlPiB0byB0 aGUgZW5kIG9mIHRoZSBmaWVsZC48L3A+CgoJPHA+VGhlIHNwZWNpYWwgZmllbGQgPGNvZGU+ cGFyZW50PC9jb2RlPiBjaGVja3MgdGhlIHBhcmVudCBjYXRlZ29yeSBmb3IgYSBtYXRjaC4g VW5saWtlIHRoZSBvdGhlciBmaWVsZCB0eXBlcywgdGhlIGRlZmF1bHQgPGEgaHJlZj0iI29w ZXJhdG9yIj5vcGVyYXRvcjwvYT4gZm9yIHBhcmVudCBpcyAmIzgyMTY7Y29udGFpbnMmIzgy MTc7LiBUaGlzIGlzIGJlY2F1c2UgdGhlIGVudGlyZSB0cmVlIGlzIGNoZWNrZWQgZm9yIGEg bWF0Y2gsIHN0YXJ0aW5nIGZyb20gdGhlIHRvcCBvZiB0aGUgdHJlZSBkb3duIHRvIHRoZSBj dXJyZW50IGNhdGVnb3J5LiBJbnRlcm5hbGx5LCB0aGUgcGx1Z2luIG1ha2VzIHVwIGEgJiM4 MjIwO2JyZWFkY3J1bWIgdHJhaWwmIzgyMjE7IG9mIGNhdGVnb3JpZXMgaW4gdGhlIGN1cnJl bnQgYnJhbmNoLCBlYWNoIHNlcGFyYXRlZCBieSBhIHNwYWNlLCBzbyB0ZXN0aW5nIGZvciBl cXVhbGl0eSB3b3VsZCByZXF1aXJlIHB1dHRpbmcgdGhlbSBhbGwgaW4gdGhlIDxhIGhyZWY9 IiN2YWx1ZSI+dmFsdWU8L2E+IHBhcmFtZXRlci48L3A+CgoJPHA+WW91IGFyZSBvZiBjb3Vy c2UgZnJlZSB0byBjaG9vc2UgYW4gYWx0ZXJuYXRpdmUgb3BlcmF0b3I7IDxjb2RlPmJlZ2lu czwvY29kZT4gaXMgdmVyeSB1c2VmdWwgZm9yIHRlc3RpbmcgaWYgdGhlIHRvcCBsZXZlbCBj YXRlZ29yeSBtYXRjaGVzIHRoZSBvbmUgZ2l2ZW4gaW4gdGhlIDxjb2RlPnZhbHVlPC9jb2Rl PiBmaWVsZC48L3A+CgoJPHA+SWYgeW91IHVzZSA8Y29kZT5wYXJlbnQ6TFZMbjwvY29kZT4s IHRoZSBjb21wYXJpc29uIHdpbGwgYmUgcmVzdHJpY3RlZCB0byB0aGF0ICYjODIyMDtsZXZl bCYjODIyMTsgb2Ygc3ViLWNhdGVnb3J5OyBMVkwxIGlzIHRoZSAmIzgyMjA7dG9wJiM4MjIx OyBsZXZlbCwgTFZMMiBpcyB0aGUgbmV4dCBzdWItY2F0ZWdvcnkgbGV2ZWwsIGFuZCBzbyBv bi4gV2hlbiB1c2luZyB0aGVzZSBtb2RpZmllcnMsIHRoZSAmIzgyMTY7ZXEmIzgyMTc7IG9w ZXJhdG9yIGJlY29tZXMgbW9yZSB1c2VmdWwgYmVjYXVzZSB5b3UgYXJlIGNvbXBhcmluZyBh IHNpbmdsZSBwYXJlbnQgY2F0ZWdvcnkuPC9wPgoKCTxwPldoZW4gdXNpbmcgYXJ0aWNsZXMs IHlvdSBjYW4gZnVydGhlciBtb2RpZnkgdGhlIGJlaGF2aW91ciBvZiB0aGUgcGFyZW50IHVz aW5nIHRoZSA8Y29kZT5DQVRuPC9jb2RlPiBzeW50YXggKHdoZXJlICYjODIxNjtuJiM4MjE3 OyBpcyAxIG9yIDIpLiBTcGVjaWZ5aW5nICYjODIyMDtwYXJlbnQmIzgyMjE7IHdpdGhvdXQg PGNvZGU+Q0FUbjwvY29kZT4gd2lsbCB1c2UgdGhlIGdsb2JhbCBjYXRlZ29yeSAoPGNvZGU+ P2M9PC9jb2RlPikuIElmIHlvdSBhZGQgPGNvZGU+OkNBVG48L2NvZGU+IGl0IHdpbGwgaW5z dGVhZCBjb21wYXJlIHRoZSBhcnRpY2xlJiM4MjE3O3MgY2F0ZWdvcnkxIG9yIGNhdGVnb3J5 MiByZXNwZWN0aXZlbHkuPC9wPgoKCTxwPllvdSBjYW4gdXNlIDxzcGFuIGNsYXNzPSJjYXBz Ij5DQVQ8L3NwYW4+IGFuZCA8c3BhbiBjbGFzcz0iY2FwcyI+TFZMPC9zcGFuPiBpbiBjb21i aW5hdGlvbiwgaW5kZXBlbmRlbnRseSBvciBub3QgYXQgYWxsLiBUaGlzIGFsbG93cyBjb21w YXJpc29ucyBzdWNoIGFzICYjODIyMDtpZiB0aGUgMm5kIHN1Yi1jYXRlZ29yeSBvZiBjYXRl Z29yeTEgZXF1YWxzIGJsYWhibGFoJiM4MjIxOyBvciAmIzgyMjA7aWYgY2F0ZWdvcnkyIGlz IGEgY2hpbGQgb2YgYmxhaGJsYWgmIzgyMjE7LiBTZWUgPGEgaHJlZj0iI2VnNCI+RXhhbXBs ZSA0PC9hPi48L3A+CgoJPHA+T25lIG90aGVyIHNwZWNpYWwgZmllbGQgaXMgPGNvZGU+TlVM TDwvY29kZT4uIFRoaXMgaXMgZXhhY3RseSB3aGF0IGl0IHNheXMgaXQgaXM6IGVtcHR5LiBU aGUgcmVhc29uIGZvciBpdHMgaW5jbHVzaW9uIGlzIHRoYXQgc29tZXRpbWVzIHlvdSB3aXNo IHRvIHRlc3Qgc29tZXRoaW5nIHRoYXQgaXNuJiM4MjE3O3QgYSB0cnVlIHZhcmlhYmxlICYj ODIxMjsgZS5nLiBhIHJlcGxhY2VtZW50IHZhcmlhYmxlIGZyb20gc21kX3ZhcnMgb3Igc21k X2VhY2ggJiM4MjEyOyB0byBzZWUgaWYgaXQmIzgyMTc7cyBlbXB0eSBvciBub3QuPC9wPgoK CTxwPklmIHlvdSB3ZXJlIHRvIHB1dCB0aGlzOjwvcD4KCgk8cD48Y29kZT4mbHQ7dHhwOnNt ZF9pZiBmaWVsZD0mcXVvdDt7cmVzdWx0fSZxdW90OyBvcGVyYXRvcj0mcXVvdDtpc2VtcHR5 JnF1b3Q7Jmd0OzwvY29kZT48L3A+CgoJPHA+eW91IHdvdWxkIG5vdCBnZXQgdGhlIHJlc3Vs dCB5b3UgZXhwZWN0IChpdCYjODIxNztzIHByZXR0eSBlc290ZXJpYyBidXQgaXQgcmV2b2x2 ZXMgYXJvdW5kIHRoZSBmYWN0IHRoYXQgPGNvZGU+JnF1b3Q7JnF1b3Q7PC9jb2RlPiAoYXMg YSB2YXJpYWJsZSBuYW1lKSBpcyBub3QgZW1wdHksIGl0JiM4MjE3O3MgaW52YWxpZCkuIFRv IGdldCByb3VuZCB0aGlzIHlvdSBtYXkgdXNlIDxzcGFuIGNsYXNzPSJjYXBzIj5OVUxMPC9z cGFuPiBhcyBhIHBsYWNlaG9sZGVyIGFuZCBtb3ZlIHRoZSB0aGluZyB5b3Ugd2FudCB0byBj aGVjayBpbnRvIHRoZSA8Y29kZT52YWx1ZTwvY29kZT4gaW5zdGVhZCwgZS5nOjwvcD4KCgk8 cD48Y29kZT4mbHQ7dHhwOnNtZF9pZiBmaWVsZD0mcXVvdDtOVUxMJnF1b3Q7IG9wZXJhdG9y PSZxdW90O2VxJnF1b3Q7IHZhbHVlPSZxdW90O3tyZXN1bHR9JnF1b3Q7Jmd0OzwvY29kZT48 L3A+CgoJPHA+d2lsbCB0ZXN0IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+TlVMTDwvc3Bhbj4g b2JqZWN0IChpLmUuICYjODIxNjtlbXB0aW5lc3MmIzgyMTc7KSB0byBzZWUgaWYgaXQmIzgy MTc7cyBlcXVhbCB0byB0aGUgPGNvZGU+e3Jlc3VsdH08L2NvZGU+IHJlcGxhY2VtZW50IHZh cmlhYmxlLiBZb3UgY2FuIHVzZSBzaW1pbGFyIGxvZ2ljIHRvIHRlc3QgZm9yIG9wdGlvbmFs IHZhcmlhYmxlcyBieSBzd2FwcGluZyB0aGUgZmllbGQgYW5kIHZhbHVlLCBsaWtlIHRoaXM6 PC9wPgoKCTxwPjxjb2RlPiZsdDt0eHA6c21kX2lmIGZpZWxkPSZxdW90OzcmcXVvdDsgb3Bl cmF0b3I9JnF1b3Q7Z3QmcXVvdDsgdmFsdWU9JnF1b3Q7e3Jlc3VsdH0mcXVvdDsmZ3Q7PC9j b2RlPjwvcD4KCgk8cD5UaGF0IHdvdWxkIHNlZSBpZiB0aGUgcmVwbGFjZW1lbnQgdmFyaWFi bGUgPGNvZGU+e3Jlc3VsdH08L2NvZGU+IHdhcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gNyAo dGhhdCYjODIxNztzIG5vdCBhIHR5cG8sIHRoZSBsb2dpYyBpcyByZXZlcnNlZCBpbiB0aGlz IGNhc2U6IGl0IGlzIGludGVycHJldGVkIGFzOiAmIzgyMjA7aXMgNyBncmVhdGVyIHRoYW4g e3Jlc3VsdH0mIzgyMjE7LCB3aGljaCBpcyB0aGUgc2FtZSBhcyAmIzgyMjA7aXMge3Jlc3Vs dH0gbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDcmIzgyMjE7ISk8L3A+CgoJPGg0IGNsYXNzPSJh dHQtbmFtZSAiIGlkPSJvcGVyYXRvciI+b3BlcmF0b3I8L2g0PgoKCTxwPkxpc3Qgb2Ygb3Bl cmF0b3JzIHRvIGFwcGx5LCBpbiBvcmRlciwgdG8gZWFjaCBmaWVsZC4gQ2hvb3NlIGZyb206 PC9wPgoKCTx1bD4KCQk8bGk+PGNvZGU+ZXE8L2NvZGU+IEVxdWFsICh0aGUgZGVmYXVsdCBm b3IgYWxsIGV4Y2VwdCAmIzgyMTY7cGFyZW50JiM4MjE3Oyk8L2xpPgoJCTxsaT48Y29kZT5u b3Q8L2NvZGU+IE5vdCBlcXVhbDwvbGk+CgkJPGxpPjxjb2RlPmx0PC9jb2RlPiBMZXNzIHRo YW48L2xpPgoJCTxsaT48Y29kZT5ndDwvY29kZT4gR3JlYXRlciB0aGFuPC9saT4KCQk8bGk+ PGNvZGU+bGU8L2NvZGU+IExlc3MgdGhhbiBvciBlcXVhbCB0bzwvbGk+CgkJPGxpPjxjb2Rl PmdlPC9jb2RlPiBHcmVhdGVyIHRoYW4gb3IgZXF1YWwgdG88L2xpPgoJCTxsaT48Y29kZT5p bjwvY29kZT4gRmllbGQgaXMgb25lIG9mIGEgbGlzdCBvZiB2YWx1ZXM8L2xpPgoJCTxsaT48 Y29kZT5ub3RpbjwvY29kZT4gRmllbGQgaXMgbm90IG9uZSBvZiB0aGUgZ2l2ZW4gbGlzdCBv ZiB2YWx1ZXM8L2xpPgoJCTxsaT48Y29kZT5kaXZpc2libGU8L2NvZGU+IEZpZWxkIGlzIGV4 YWN0bHkgZGl2aXNpYmxlIGJ5IHRoZSB2YWx1ZTwvbGk+CgkJPGxpPjxjb2RlPmJlZ2luczwv Y29kZT4gRmllbGQgYmVnaW5zIHdpdGggYSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzPC9saT4K CQk8bGk+PGNvZGU+Y29udGFpbnM8L2NvZGU+IEZpZWxkIGNvbnRhaW5zIGEgc2VxdWVuY2Ug b2YgY2hhcmFjdGVycyAoZGVmYXVsdCBmb3IgJiM4MjE2O3BhcmVudCYjODIxNzspPC9saT4K CQk8bGk+PGNvZGU+ZW5kczwvY29kZT4gRmllbGQgZW5kcyB3aXRoIGEgc2VxdWVuY2Ugb2Yg Y2hhcmFjdGVyczwvbGk+CgkJPGxpPjxjb2RlPmlzZW1wdHk8L2NvZGU+IEZpZWxkIGlzIGVt cHR5IChjb250YWlucyBub3RoaW5nKTwvbGk+CgkJPGxpPjxjb2RlPmlzdXNlZDwvY29kZT4g RmllbGQgaGFzIHNvbWUgdmFsdWU8L2xpPgoJCTxsaT48Y29kZT5kZWZpbmVkPC9jb2RlPiBG aWVsZCBpcyBzZXQgKHVzZWZ1bCB3aXRoIHVybHZhciB2YXJpYWJsZXMpPC9saT4KCQk8bGk+ PGNvZGU+dW5kZWZpbmVkPC9jb2RlPiBGaWVsZCBpcyBub3Qgc2V0LCBvciBtaXNzaW5nIGZy b20gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGxpbmU8L2xpPgoJCTxsaT48 Y29kZT5pc251bTwvY29kZT4gRmllbGQgaXMgYSBudW1iZXI8L2xpPgoJCTxsaT48Y29kZT5p c2FscGhhPC9jb2RlPiBGaWVsZCBjb250YWlucyBjaGFyYWN0ZXJzIG9ubHk8L2xpPgoJCTxs aT48Y29kZT5pc2FsbnVtPC9jb2RlPiBGaWVsZCBjb250YWlucyBhbHBoYW51bWVyaWMgY2hh cmFjdGVycyBvbmx5PC9saT4KCQk8bGk+PGNvZGU+aXNsb3dlcjwvY29kZT4gRXZlcnkgY2hh cmFjdGVyIGluIHRoZSBmaWVsZCBpcyBsb3dlciBjYXNlPC9saT4KCQk8bGk+PGNvZGU+aXN1 cHBlcjwvY29kZT4gRXZlcnkgY2hhcmFjdGVyIGluIHRoZSBmaWVsZCBpcyB1cHBlciBjYXNl PC9saT4KCQk8bGk+PGNvZGU+aXNwdW5jdDwvY29kZT4gRXZlcnkgY2hhcmFjdGVyIGluIHRo ZSBmaWVsZCBpcyBzb21lIHB1bmN0dWF0aW9uIG1hcms8L2xpPgoJCTxsaT48Y29kZT5pc3Nw YWNlPC9jb2RlPiBFdmVyeSBjaGFyYWN0ZXIgaW4gdGhlIGZpZWxkIGlzIGEgd2hpdGVzcGFj ZSBjaGFyYWN0ZXIgKG9yIHRhYiwgbmV3bGluZSwgZXRjKTwvbGk+Cgk8L3VsPgoKCTxwPldp dGggdGhlIGNvbXBhcmlzb24gb3BlcmF0b3JzIChwcmltYXJpbHkgZ3QsIGx0LCBnZSwgbGUp IHlvdSBtYXkgZmluZCBvZGQgYmVoYXZpb3VyIHdoZW4gY29tcGFyaW5nIG51bWJlcnMuIEZv ciBleGFtcGxlLCA8Y29kZT51cmx2YXI6cGljIGd0IDY8L2NvZGU+IHdpbGwgcmV0dXJuIDxz cGFuIGNsYXNzPSJjYXBzIj5UUlVFPC9zcGFuPiBpZiA8Y29kZT5waWM8L2NvZGU+IGlzIHNl dCB0byAmIzgyMjA7ZnJlZCYjODIyMTsuIFRoaXMgaXMgYmVjYXVzZSB0aGUgd29yZCAmIzgy MjA7ZnJlZCYjODIyMTsgKG9yIGF0IGxlYXN0IHRoZSAmIzgyMjA7Y2hhcmFjdGVyIGYmIzgy MjE7KSBpcyBncmVhdGVyIGluIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+QVNDSUk8L3NwYW4+ IHRhYmxlIHRoYW4gdGhlICYjODIyMDtjaGFyYWN0ZXIgNiYjODIyMTsuPC9wPgoKCTxwPlRv IGNpcmN1bXZlbnQgdGhpcyBwcm9ibGVtLCB5b3UgbWF5IGFwcGVuZCA8Y29kZT46TlVNPC9j b2RlPiB0byB0aGUgZW5kIG9mIGFueSBvZiB0aGVzZSBvcGVyYXRvcnMgdG8gZm9yY2UgdGhl IHBsdWdpbiB0byBjaGVjayB0aGF0IHRoZSB2YWx1ZXMgYXJlIGludGVnZXJzLjwvcD4KCgk8 cD5JZiB5b3Ugd2lzaCB0byBjb21wYXJlIHRoZSBsZW5ndGggb2YgYSBmaWVsZCBvciB2YWx1 ZSwgYXBwZW5kIDxjb2RlPjpMRU48L2NvZGU+IHRvIGFueSBvZiB0aGUgbnVtZXJpY2FsIGNv bXBhcmlzb24gb3BlcmF0b3JzLiBJdCBkb2VzbiYjODIxNzt0IG1ha2Ugc2Vuc2UgdG8gdXNl IGJvdGggPGNvZGU+Ok5VTTwvY29kZT4gYW5kIDxjb2RlPjpMRU48L2NvZGU+IHRvZ2V0aGVy LCBzbyB0aGV5IGFyZSBtdXR1YWxseSBleGNsdXNpdmUuPC9wPgoKCTxwPlRoZSA8Y29kZT5i ZWdpbnM8L2NvZGU+LCA8Y29kZT5lbmRzPC9jb2RlPiBhbmQgPGNvZGU+Y29udGFpbnM8L2Nv ZGU+IG9wZXJhdG9ycywgYWxvbmcgd2l0aCBhbnkgb2YgdGhlIDxjb2RlPmlzPC9jb2RlPiBv cGVyYXRvcnMgKGV4Y2VwdCA8Y29kZT5pc3NwYWNlPC9jb2RlPiksIGNhbiB0YWtlIGFuIGV4 dHJhIHBhcmFtZXRlciBhcyB3ZWxsLiBTaW5jZSB0aGV5IGNvbXBhcmUgZXZlcnkgY2hhcmFj dGVyIGFnYWluc3QgdGhlIGdpdmVuIGJlaGF2aW91ciwgc3BhY2UgY2hhcmFjdGVycyBjYW4g bWVzcyB0aGluZ3MgdXAgYSBiaXQuIEZvciBleGFtcGxlIDxjb2RlPmZpZWxkPSZxdW90O2N1 c3RvbTEmcXVvdDsgb3BlcmF0b3I9JnF1b3Q7aXNsb3dlciZxdW90OzwvY29kZT4gd2lsbCBm YWlsIGlmIGN1c3RvbTEgY29udGFpbnMgJiM4MjIwO3RoaXMgaXMgYSB0ZXN0JiM4MjIxOy4g T3IgY29tcGFyaW5nIHNvbWV0aGluZyB0byA8Y29kZT5ib2R5PC9jb2RlPiBjYW4gZmFpbCBi ZWNhdXNlIHRoZSBib2R5IG9mdGVuIHN0YXJ0cyB3aXRoIGEgbnVtYmVyIG9mIHNwYWNlIGNo YXJhY3RlcnMuIFRvIGNpcmN1bXZlbnQgdGhpcywgYWRkIDxjb2RlPjpOT1NQQUNFPC9jb2Rl PiB0byB0aGUgb3BlcmF0b3Igd2hpY2ggd2lsbCByZW1vdmUgYWxsIHNwYWNlcyBmcm9tIHRo ZSBzdHJpbmcgYmVmb3JlIHRlc3RpbmcgaXQuPC9wPgoKCTxwPk5vdGUgYWxzbyB0aGF0IHdo aWxlIDxjb2RlPmRlZmluZWQ8L2NvZGU+IGFuZCA8Y29kZT51bmRlZmluZWQ8L2NvZGU+IGRp ZmZlciBzZW1hbnRpY2FsbHkgZnJvbSA8Y29kZT5pc3VzZWQ8L2NvZGU+IGFuZCA8Y29kZT5p c2VtcHR5PC9jb2RlPiAocmVzcGVjdGl2ZWx5KSwgdGhlIHdheSA8c3BhbiBjbGFzcz0iY2Fw cyI+VFhQPC9zcGFuPiBhc3NpZ25zIHZhcmlhYmxlcyBtZWFucyB0aGF0LCBmb3IgdGhlIG1v c3QgcGFydCwgdGhlIHRlcm1zIGFyZSBpbnRlcmNoYW5nZWFibGUuIFdoZW4gZGVhbGluZyB3 aXRoIHVybHZhcnMsIHBvc3R2YXJzIGFuZCBzdnJ2YXJzLCB0aGUgdHdvIHNldHMgb2Ygb3Bl cmF0b3JzIGJlaGF2ZSBpbmRlcGVuZGVudGx5LCBhcyB5b3Ugd291bGQgZXhwZWN0LiBTZWUg PGEgaHJlZj0iI2VnNSI+RXhhbXBsZSA1PC9hPiBmb3IgbW9yZS4gTmVpdGhlciA8Y29kZT5k ZWZpbmVkPC9jb2RlPiBub3IgPGNvZGU+dW5kZWZpbmVkPC9jb2RlPiBtYWtlIHNlbnNlIHdp dGggPGNvZGU+cGFyZW50PC9jb2RlPiwgc28gdGhleSBhcmUgZm9yYmlkZGVuLjwvcD4KCgk8 aDQgY2xhc3M9ImF0dC1uYW1lICIgaWQ9InZhbHVlIj52YWx1ZTwvaDQ+CgoJPHA+TGlzdCBv ZiB2YWx1ZXMgdG8gY29tcGFyZSBlYWNoIGZpZWxkIGluIHR1cm4gdG8uIENhbiBiZSBzdGF0 aWMgdmFsdWVzL3RleHQgb3IgdGhlIG5hbWUgb2YgYW55IDxzcGFuIGNsYXNzPSJjYXBzIj5U WFA8L3NwYW4+IGZpZWxkLCBsaWtlIHRob3NlIGdpdmVuIGluIDxhIGhyZWY9IiNmaWVsZCI+ ZmllbGQ8L2E+IChleGNlcHQgJiM4MjIwO3BhcmVudCYjODIyMTspLjwvcD4KCgk8cD5UbyBk aXN0aW5ndWlzaCBhIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZpZWxkIGZyb20g c3RhdGljIHRleHQsIHByZWZpeCB0aGUgZmllbGQgbmFtZSB3aXRoIDxjb2RlPj88L2NvZGU+ LiBGb3IgZXhhbXBsZTogPGNvZGU+dmFsdWU9JnF1b3Q7dGl0bGUmcXVvdDs8L2NvZGU+IHdp bGwgY29tcGFyZSB5b3VyIGNob3NlbiBmaWVsZCBhZ2FpbnN0IHRoZSB3b3JkICYjODIyMDt0 aXRsZSYjODIyMTssIHdoZXJlYXMgPGNvZGU+dmFsdWU9JnF1b3Q7P3RpdGxlJnF1b3Q7PC9j b2RlPiB3aWxsIGNvbXBhcmUgeW91ciBmaWVsZCBhZ2FpbnN0IHRoZSBjdXJyZW50IGFydGlj bGUmIzgyMTc7cyB0aXRsZS48L3A+CgoJPHA+SWYgeW91IHdpc2ggdG8gY29tcGFyZSBhIHZh bHVlIHRoYXQgbWlnaHQgY29udGFpbiA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4g KGUuZyA8Y29kZT4/Ym9keTwvY29kZT4pLCBhZGQgdGhlIG1vZGlmaWVyIDxjb2RlPjpOT1RB R1M8L2NvZGU+IHRvIHRoZSBlbmQgb2YgdGhlIHZhbHVlLiBJdCB3aWxsIGhhdmUgYW55IDxz cGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBhbmQgPHNwYW4gY2xhc3M9ImNhcHMiPlBI UDwvc3Bhbj4gdGFncyBzdHJpcHBlZCBmcm9tIGl0IGFuZCB3aWxsIGFsc28gYmUgdHJpbW1l ZCB0byByZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgc3BhY2VzLiBZb3UgbWF5IGNob29z ZSB0byBzb2xlbHkgcmVtb3ZlIHNwYWNlcyBmcm9tIGJvdGggdGhlIHN0YXJ0IGFuZCBlbmQg b2YgYW55IHZhbHVlIGJ5IGFkZGluZyA8Y29kZT46VFJJTTwvY29kZT4gdG8gdGhlIGVuZCBv ZiB0aGUgdmFsdWUuPC9wPgoKCTxwPk5vdGUgdGhhdCB5b3UgbWF5IGZpbmQgdXNpbmcgZG91 YmxlLXF1b3RlcyBpbiBmaWVsZHMgZ2l2ZXMgdW5leHBlY3RlZCByZXN1bHRzLiBUaGV5IGFy ZSBiZXN0IGF2b2lkZWQsIG9yIHdvcmtlZCBhcm91bmQgYnkgdXNpbmcgPGNvZGU+Y29udGFp bnM8L2NvZGU+IGluc3RlYWQgb2YgPGNvZGU+ZXE8L2NvZGU+LjwvcD4KCgk8aDQgY2xhc3M9 ImF0dC1uYW1lICIgaWQ9ImxvZ2ljIj5sb2dpYzwvaDQ+CgoJPHA+Q2FuIGJlIG9uZSBvZiA8 Y29kZT5hbmQ8L2NvZGU+ICh0aGUgZGVmYXVsdCkgb3IgPGNvZGU+b3I8L2NvZGU+LiBJZiB1 c2luZyA8Y29kZT5hbmQ8L2NvZGU+LCBhbGwgY29uZGl0aW9ucyBtdXN0IGJlIG1ldCBmb3Ig YSA8c3BhbiBjbGFzcz0iY2FwcyI+VFJVRTwvc3Bhbj4gcmVzdWx0LiBJZiB1c2luZyA8Y29k ZT5vcjwvY29kZT4sIGFueSBvZiB0aGUgY29uZGl0aW9ucyB0aGF0IG1hdGNoIHdpbGwgZ2l2 ZSBhIDxzcGFuIGNsYXNzPSJjYXBzIj5UUlVFPC9zcGFuPiByZXN1bHQuPC9wPgoKCTxoNCBj bGFzcz0iYXR0LW5hbWUgIiBpZD0iY2FzZXNlbnNlIj5jYXNlX3NlbnNpdGl2ZTwvaDQ+CgoJ PHA+QnkgZGVmYXVsdCwgYWxsIGNvbXBhcmlzb25zIGFyZSBjYXNlLWluc2Vuc2l0aXZlICgw KS4gSWYgeW91IHdpc2ggdG8gbWFrZSB0aGVtIHNlbnNpdGl2ZSB0byBjYXB0aWxpc2F0aW9u LCBzcGVjaWZ5IDxjb2RlPmNhc2Vfc2Vuc2l0aXZlPSZxdW90OzEmcXVvdDs8L2NvZGU+LiBO b3RlIHRoYXQgaWYgdXNpbmcgPGNvZGU+aXNsb3dlcjwvY29kZT4gb3IgPGNvZGU+aXN1cHBl cjwvY29kZT4gaW4gYSBjb21wYXJpc29uLCBjYXNlIHNlbnNpdGl2aXR5IHdpbGwgYXV0b21h dGljYWxseSBiZSBzd2l0Y2hlZCBvbiB3aGlsZSB0aGUgdGVzdCBpcyB0YWtpbmcgcGxhY2Uu PC9wPgoKCTxoNCBjbGFzcz0iYXR0LW5hbWUgIiBpZD0icGFyYW1kZWxpbSI+cGFyYW1fZGVs aW08L2g0PgoKCTxwPllvdSBub3JtYWxseSBzcGVjaWZ5IGNvbW1hLXNlcGFyYXRlZCBsaXN0 cyB0byB0aGUgPGNvZGU+ZmllbGQ8L2NvZGU+LCA8Y29kZT5vcGVyYXRvcjwvY29kZT4gYW5k IDxjb2RlPnZhbHVlPC9jb2RlPiBwYXJhbWV0ZXJzLiBTb21ldGltZXMgdGhpcyBtaWdodCBu b3QgYmUgZGVzaXJhYmxlIGlmIHlvdSBoYXZlIHVzZWQgdGhhdCBjaGFyYWN0ZXIgaW4gdGhl IG5hbWUgb2YgYSBjdXN0b20gZmllbGQsIGZvciBleGFtcGxlLiBUaGlzIG9wdGlvbiBhbGxv d3MgeW91IHRvIGNoYW5nZSB0aGUgZGVsaW1pdGVyIHRvIGFsbW9zdCBhbnl0aGluZyB5b3Ug bGlrZSwgZS5nLiBzcGVjaWZ5aW5nIDxjb2RlPnBhcmFtX2RlbGltPSZxdW90Oy8vJnF1b3Q7 PC9jb2RlPiBtZWFucyB5b3Ugd291bGQgc3BlY2lmeSA8ZW0+YWxsPC9lbT4geW91ciBwYXJh bWV0ZXIgbGlzdHMgbGlrZSB0aGlzOjwvcD4KCgk8cD48Y29kZT5maWVsZD0mcXVvdDtzZWN0 aW9uIC8vIHVybHZhcjp0eXBlJnF1b3Q7IG9wZXJhdG9yPSZxdW90O2VxIC8vIGJlZ2lucyZx dW90OyB2YWx1ZT0mcXVvdDthbmltYWxzIC8vIHRpZ2VyJnF1b3Q7PC9jb2RlPjwvcD4KCgk8 aDQgY2xhc3M9ImF0dC1uYW1lICIgaWQ9Im1vZGRlbGltIj5tb2RfZGVsaW08L2g0PgoKCTxw PlZlcnkgc2ltaWxhciB0byA8YSBocmVmPSIjcGFyYW1kZWxpbSI+cGFyYW1fZGVsaW08L2E+ LCB0aGlzIGdvdmVybnMgdGhlIGRlbGltaXRlciB0byB1c2UgYmV0d2VlbiBhbiBvcHRpb24g YW5kIGl0cyBtb2RpZmllciAoZS5nLiB0aGUgdGhpbmcgc2VwYXJhdGluZyB1cmx2YXIsIHBv c3R2YXIsIHN2cnZhciBvciB0eHB2YXIgZnJvbSB0aGUgdmFyaWFibGUgbmFtZSwgb3IgcGFy ZW50IGZyb20gPGNvZGU+TFZMPC9jb2RlPiBhbmQgPGNvZGU+Q0FUPC9jb2RlPiwgYW5kIGFs c28gdGhlIGNoYXJhY3RlcihzKSB0aGF0IHNlcGFyYXRlIGFuIG9wZXJhdG9yIGZyb20gdGhl IDxzcGFuIGNsYXNzPSJjYXBzIj5OVU08L3NwYW4+IG9yIDxzcGFuIGNsYXNzPSJjYXBzIj5O T1NQQUNFPC9zcGFuPiBtb2RpZmllcnMpLiBJdCBpcyB0aGUgY29sb24gKDopIGJ5IGRlZmF1 bHQuPC9wPgoKCTxoNCBjbGFzcz0iYXR0LW5hbWUgIiBpZD0ibW9kZGVsaW0iPmxpc3RfZGVs aW08L2g0PgoKCTxwPkZvciB1c2Ugd2l0aCB0aGUgPGNvZGU+aW48L2NvZGU+IGFuZCA8Y29k ZT5ub3RpbjwvY29kZT4gb3BlcmF0b3JzLCB0aGlzIGlzIHRoZSBkZWxpbWl0ZXIgYmV0d2Vl biB2YWx1ZXMuIEl0IGlzIHRoZSBmb3J3YXJkLXNsYXNoICgvKSBieSBkZWZhdWx0LiBBIGNv bnRyaXZlZCBleGFtcGxlOjwvcD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDpzbWRfaWYgZmllbGQ9 JnF1b3Q7dHhwdmFyOmxldmVsJnF1b3Q7IG9wZXJhdG9yPSZxdW90O2luJnF1b3Q7CiAgICAg dmFsdWU9JnF1b3Q7MS8yLzMvNS84LzEzLzIxLzM0JnF1b3Q7Jmd0OwogICZsdDtwJmd0O1Jl c3VsdCBpcyBhIEZpYm9uYWNjaSB2YWx1ZSEmbHQ7L3AmZ3Q7CiZsdDsvdHhwOnNtZF9pZiZn dDsKPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGUgdGhhdCBpbiBhbGwgJiM4MjE2O2RlbGltJiM4 MjE3OyBhdHRyaWJ1dGVzLCBzb21lIGNoYXJhY3RlciBzZXF1ZW5jZXMgbWF5IGNhdXNlIHBy b2JsZW1zIChxdW90ZXMgJiM4MjEyOyBzaW5nbGUgb3IgZG91YmxlICYjODIxMjsgc3ByaW5n IHRvIG1pbmQ7IG90aGVycyBsaWtlIHBhcmVudGhlc2VzIG1heSBhbHNvIGNhdXNlIHRoZSBw bHVnaW4gdG8gZXhwbG9kZSkuPC9wPgoKCTxoMz5SZXBsYWNlbWVudCB0YWdzPC9oMz4KCgk8 cD5FdmVyeSBmaWVsZCBvciB2YWx1ZSB0aGF0IHlvdSByZWZlciB0byBpbiB5b3VyIHNtZF9p ZiB0YWcgYmVjb21lcyBhdmFpbGFibGUgd2l0aGluIHRoZSBjb250YWluaW5nIGJsb2NrIHNv IHlvdSBjYW4gZGlzcGxheSBpdHMgY29udGVudHMgaWYgeW91IHdpc2guIE1vc3Qgb2YgdGhl IHRpbWUgdGhpcyBpcyBub3QgbXVjaCB1c2UgYnV0IGl0IGNhbiBiZSB2ZXJ5IHVzZWZ1bCB3 aXRoIHRoZSA8Y29kZT5pbjwvY29kZT4gb3BlcmF0b3Igb3IgdGhlIDxjb2RlPjpMRU48L2Nv ZGU+IG1vZGlmaWVyIC4gRm9yIGluc3RhbmNlLCBpZiB5b3UgaGF2ZSBhc2tlZCBzbWRfaWYg dG8gdGVzdCB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdmFyaWFibGUgbmFt ZWQgJiM4MjE2O2xldmVsJiM4MjE3OyBhbmQgdG9sZCBpdCB0byBjb21wYXJlIGl0IHRvIHRo ZSBjdXN0b20gZmllbGQgbGFiZWxsZWQgJiM4MjE2O2FsbG93YWJsZV9sZXZlbHMmIzgyMTc7 LCB0d28gdGFncyBiZWNvbWUgYXZhaWxhYmxlIHdoaWNoIHlvdSBjYW4gdXNlIHdpdGhpbiB0 aGUgY29udGFpbmluZyBibG9jazo8L3A+CgoJPHVsPgoJCTxsaT48Y29kZT57c21kX2lmX2xl dmVsfTwvY29kZT4gd291bGQgZGlzcGxheSB0aGUgdmFsdWUgb2YgdGhlICYjODIxNjtsZXZl bCYjODIxNzsgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdmFyaWFibGU8L2xpPgoJ CTxsaT48Y29kZT57c21kX2lmX2FsbG93YWJsZV9sZXZlbHN9PC9jb2RlPiB3b3VsZCBkaXNw bGF5IHRoZSBjb250ZW50cyBvZiB0aGUgY3VycmVudCBhcnRpY2xlJiM4MjE3O3MgY3VzdG9t IGZpZWxkPC9saT4KCTwvdWw+CgoJPHA+VGhlIHJlcGxhY2VtZW50IHRhZ3MgYXJlIGFsd2F5 cyBwcmVmaXhlZCB3aXRoIDxjb2RlPnNtZF9pZl88L2NvZGU+IHNvIHRoZXkgZG9uJiM4MjE3 O3QgY2xhc2ggd2l0aCB0aGUgb25lcyBpbiBzbWRfZ2FsbGVyeSAoZm9yIGV4YW1wbGUsIHdo ZW4gdXNpbmcgc21kX2lmIGluc2lkZSBhbiBzbWRfZ2FsbGVyeSB0YWcpLiBJZiB5b3UgYXJl IGNvbXBhcmluZyBhIGZpeGVkLXZhbHVlIGZpZWxkIChzdWNoIGFzIDxjb2RlPmZpZWxkPSZx dW90O05VTEwmcXVvdDs8L2NvZGU+IG9yIDxjb2RlPnZhbHVlPSZxdW90OzEyJnF1b3Q7PC9j b2RlPiBvciBzbWRfZ2FsbGVyeSYjODIxNztzIDxjb2RlPnZhbHVlPSZxdW90O3tjYXRlZ29y eX0mcXVvdDs8L2NvZGU+KSB0aGUgbmFtZSBvZiB0aGUgcmVwbGFjZW1lbnQgdGFncyBhcmUg PGNvZGU+e3NtZF9pZl9maWVsZE59PC9jb2RlPiBmb3IgZmllbGRzIGFuZCA8Y29kZT57c21k X2lmX3ZhbE59PC9jb2RlPiBmb3IgdmFsdWVzLCB3aGVyZSBOIGlzIHRoZSB0ZXN0IG51bWJl ciBzdGFydGluZyBmcm9tIDEuPC9wPgoKCTxwPlRoZXJlIGFyZSBhbHNvIHR3byAmIzgyMTY7 bGVuZ3RoJiM4MjE3OyByZXBsYWNlbWVudCB0YWdzLiBGb2xsb3dpbmcgYSBzaW1pbGFyIGNv bnZlbnRpb24gdG8gYWJvdmUsIHRoZXNlIGFyZSBwcmVmaXhlZCB3aXRoIDxjb2RlPnNtZF9p Zl9sZW5fPC9jb2RlPi4gSWYgeW91IGdldCBzdHVjaywgdGVtcG9yYXJpbHkgc3dpdGNoIDxj b2RlPmRlYnVnPSZxdW90OzEmcXVvdDs8L2NvZGU+IG9uIHRvIHNlZSB0aGUgcmVwbGFjZW1l bnRzIGF2YWlsYWJsZSBhbmQgdGhlaXIgYXNzb2NpYXRlZCBuYW1lcy92YWx1ZXMuPC9wPgoK CTxwPlNlZSA8YSBocmVmPSIjZWc4Ij5FeGFtcGxlIDg8L2E+IGFuZCA8YSBocmVmPSIjZWc5 Ij45PC9hPiBmb3IgbW9yZS48L3A+CgoJPGgyIGlkPSJmaWx0ZXJpbmciPkZpbHRlcmluZzwv aDI+CgoJPHA+QWxsIHVzZXIgaW5wdXQgaXMgdGFpbnRlZCBieSBkZWZhdWx0LjwvcD4KCgk8 cD5BbnkgdGltZSB5b3UgcmVseSBvbiBzb21lb25lIHRvIGVudGVyIHNvbWV0aGluZywgYXQg bGVhc3Qgb25lIHBlcnNvbiB3aWxsIGludmFyaWFibHkgY2F0Y2ggeW91IG91dDsgZWl0aGVy IGFjY2lkZW50YWxseSBvciBtYWxpY2lvdXNseS4gRm9yIHRoaXMgcmVhc29uLCBzbWRfaWYg c3VwcG9ydHMgcG93ZXJmdWwgZmlsdGVyaW5nIHJ1bGVzIHNvIHlvdSBjYW4gdHJhcCBhbmQg cmVtb3ZlIHN1c3BlY3QgaW5wdXQuIEl0IGFscmVhZHkgZG9lcyBzb21lIG9mIHRoaXMgZm9y IHlvdSB3aXRoIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+Tk9UQUdTPC9zcGFuPiBtb2RpZmll ciwgYnV0IGZpbHRlcmluZyBnaXZlcyBhbm90aGVyIGxldmVsIG9mIGNvbnRyb2wgYWJvdmUg dGhhdC48L3A+CgoJPHA+TGV0JiM4MjE3O3Mgc2F5IHlvdSBhcmUgYXNraW5nIHRoZSB1c2Vy IHRvIGVudGVyIGEgdmFsdWVzIGFuZCB5b3UgbmVlZCB0byBjb21wYXJlIGl0IHRvIGEgcmFu Z2UuIFdoYXQgaWYsIGluc3RlYWQgb2YgYSBudW1iZXIsIHRoZXkgZW50ZXJlZCA8Y29kZT5m cjNkPC9jb2RlPiBvciA8Y29kZT47cm0gLXJmIDEqOzwvY29kZT4uIFRoZSBwbHVnaW4gbWln aHQganVzdCBmYWxsIG92ZXIgKHByb2JhYmx5IHdpdGggYW4gZXJyb3IsIHdoaWNoIGlzIG5v dCB2ZXJ5IHBsZWFzYW50IGZvciB1c2VycyksIG9yIGl0IG1pZ2h0IGNhdXNlIGhhcm0gdG8g dGhlIGZpbGVzeXN0ZW0gaWYgYSBwZXJzb24gdHJ5aW5nIHRvIGhhY2sgeW91ciBzaXRlIHdh cyBza2lsbGVkIGVub3VnaCAoaXQmIzgyMTc7cyB1bmxpa2VseSwgYnV0IHBvc3NpYmxlKS48 L3A+CgoJPHA+SW4gYm90aCBjYXNlcywgZmlsdGVyaW5nIGNvbWVzIHRvIHRoZSByZXNjdWUu IFlvdSBjYW4gc3BlY2lmeSB0aGF0IHlvdSA8ZW0+ZXhwZWN0PC9lbT4gb25seSBkaWdpdHMg ZnJvbSAwIHRvIDkgaW4geW91ciBmaWVsZHMgYW5kIGNhbiB0ZWxsIHRoZSBwbHVnaW4gdG8g Y2hvcCBvdXQgYW55dGhpbmcgdGhhdCBpcyBub3QgbnVtZXJpYy4gU28gaW4gdGhlIGZpcnN0 IGNhc2UgYWJvdmUsIGFsbCB5b3Ugd291bGQgc2VlIGlmIHRoZSB1c2VyIGVudGVyZWQgJiM4 MjE2O2ZyM2QmIzgyMTc7IHdvdWxkIGJlICYjODIxNjszJiM4MjE3Oy48L3A+CgoJPHA+Rm9y dHVuYXRlbHkgJiM4MjEyOyBhbmQgdW5mb3J0dW5hdGVseSAmIzgyMTI7IGl0JiM4MjE3O3Mg YnVpbHQgYXJvdW5kIDxhIGhyZWY9Imh0dHA6Ly93d3cucmVndWxhci1leHByZXNzaW9ucy5p bmZvLyI+cmVndWxhciBleHByZXNzaW9uczwvYT4gd2hpY2ggYXJlIGZpZW5kaXNobHkgcG93 ZXJmdWwgYnV0IGNhbiBhbHNvIGJlIGZpZW5kaXNobHkgdHJpY2t5IHRvIGxlYXJuIGlmIHlv dSBhcmUgbm90IGZhbWlsaWFyLiBUaGV5IGFyZSB3b3J0aCBsZWFybmluZy48L3A+CgoJPHA+ TGV0JiM4MjE3O3MgZGl2ZSBpbiBhdCB0aGUgZGVlcCBlbmQgYW5kIHRlbGwgdGhlIHBsdWdp biB0aGF0LCB1bmRlciBubyBjaXJjdW1zdGFuY2VzLCBtdXN0IHdlIGFsbG93IGFueSBpbnB1 dCB0aGF0IGlzIG5vbi1udW1lcmljOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBj bGFzcz0iYmxvY2siPiZsdDt0eHA6dmFyaWFibGUgbmFtZT0mcXVvdDtoaWdoZXN0JnF1b3Q7 IHZhbHVlPSZxdW90OzEwMCZxdW90OyAvJmd0OwombHQ7dHhwOnNtZF9pZiBmaWVsZD0mcXVv dDt1cmx2YXI6bG93JnF1b3Q7IG9wZXJhdG9yPSZxdW90O2dlLCBsZSZxdW90OwogICAgIHZh bHVlPSZxdW90OzEsIHR4cHZhcjpoaWdoZXN0JnF1b3Q7IGZpbHRlcj0mcXVvdDsvW14wLTld Ky8mcXVvdDsmZ3Q7CiAgICZsdDtwJmd0O3tzbWRfaWZfbG93fSBpcyB2YWxpZCBhbmQgaXMg YmV0d2VlbgogICAxIGFuZCAmbHQ7dHhwOnZhcmlhYmxlIG5hbWU9JnF1b3Q7aGlnaGVzdCZx dW90OyAvJmd0Oy4mbHQ7L3AmZ3Q7CiZsdDt0eHA6ZWxzZSAvJmd0OwogICAmbHQ7cCZndDtT b3JyeSwgdmFsdWUgbm90IHdpdGhpbiByYW5nZS4mbHQ7L3AmZ3Q7CiZsdDsvdHhwOnNtZF9p ZiZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlsgRWFnbGUtZXllZCBwZW9wbGUgbWF5IG5vdGlj ZSB0aGF0IHNvbWV0aGluZyBzaW1pbGFyIGNhbiBiZSBhY2hpZXZlZCB3aXRoIHRoZSA8Y29k ZT46TlVNPC9jb2RlPiBtb2RpZmllci4gVGhlIGRpZmZlcmVuY2UgaGVyZSBpcyB0aGF0IHRo ZSByZXBsYWNlbWVudCB2YXJpYWJsZXMgYXJlIGFsc28gZmlsdGVyZWQsIHdoZXJlYXMgd2l0 aCA8Y29kZT46TlVNPC9jb2RlPiB0aGV5IGNvbnRhaW4gdGhlIG9yaWdpbmFsIChwb3NzaWJs eSBpbnZhbGlkKSBpbnB1dCBdPC9wPgoKCTxwPkFsdGhvdWdoIG91dCBvZiB0aGUgc2NvcGUg b2YgdGhpcyBkb2N1bWVudGF0aW9uLCBpdCYjODIxNztzIHdvcnRoIGp1c3QgdGFraW5nIGEg bW9tZW50IHRvIHNlZSB3aGF0IHRoZSBmaWx0ZXIgaXMgZG9pbmc6PC9wPgoKPHByZT48Y29k ZT4vW14wLTldKy8KPC9jb2RlPjwvcHJlPgoKCTx1bD4KCQk8bGk+VGhlIGZvcndhcmQgc2xh c2hlcyBhcmUgc3RhcnQgYW5kIGVuZCBkZWxpbWl0ZXJzIGFuZCBzaG91bGQgYWx3YXlzIGJl IHByZXNlbnQgKHVubGVzcyB5b3Uga25vdyB3aGF0IHlvdXJlIGRvaW5nISk8L2xpPgoJCTxs aT5UaGUgc3F1YXJlIGJyYWNrZXRzIDxjb2RlPltdPC9jb2RlPmRlbm90ZSBhIGNoYXJhY3Rl ciBjbGFzcywgb3IgZ3JvdXAgb2YgY2hhcmFjdGVycy4gSW4gdGhpcyBjYXNlIHRoZXkgY29u dGFpbiB0aGUgcmFuZ2Ugb2YgZGlnaXRzIDAgdG8gOTwvbGk+CgkJPGxpPlRoZSBjaXJjdW1m bGV4IDxjb2RlPl48L2NvZGU+IG5lZ2F0ZXMgdGhlIGNsYXNzIChpLmUuIG5vbi1kaWdpdHMp PC9saT4KCQk8bGk+VGhlIHBsdXMgPGNvZGU+KzwvY29kZT4gbWVhbnMgJiM4MjE2O29uZSBv ciBtb3JlIG9mIHRoZSB0aGluZ3MgSSYjODIxNzt2ZSBqdXN0IHNlZW4mIzgyMTc7PC9saT4K CTwvdWw+CgoJPHA+U28gcHV0dGluZyBpdCBhbGwgdG9nZXRoZXIsIGl0IHJlYWRzICYjODIy MDtGaW5kIGV2ZXJ5IG9jY3VycmVuY2Ugb2Ygb25lIG9yIG1vcmUgbm9uLWRpZ2l0cyYjODIy MTsuIFRodXMgaXQgbG9va3MgYXQgZXZlcnkgZmllbGQgYW5kIGZpbmRzIGFueXRoaW5nIG5v bi1udW1lcmljLiBUaGVuIGl0IHJlcGxhY2VzIHdoYXRldmVyIGl0IGZpbmRzIHdpdGggPGNv ZGU+JiMzOTsmIzM5OzwvY29kZT4sIGkuZS4gbm90aGluZywgbmFkYSwgemlwLiBFZmZlY3Rp dmVseSwgaXQgZGVsZXRlcyB3aGF0ZXZlciBub24tZGlnaXRzIGl0IGZpbmRzIGFuZCBsZWF2 ZXMgdGhlIGdvb2Qgc3R1ZmYgKHRoZSBudW1iZXJzKSBiZWhpbmQuPC9wPgoKCTxoMyBpZD0i ZnJlcGxhY2luZyI+UmVwbGFjaW5nIGJhZCBkYXRhPC9oMz4KCgk8cD5Gb3IgZWFjaCBtYXRj aGluZyBmaWx0ZXIgdGhlcmUmIzgyMTc7cyBhbiBlcXVpdmFsZW50IDxjb2RlPnJlcGxhY2U8 L2NvZGU+IHN0cmluZy4gQnkgZGVmYXVsdCB0aGlzIGlzIHNldCB0byA8Y29kZT5yZXBsYWNl PSZxdW90OyZxdW90OzwvY29kZT4gd2hpY2ggbWVhbnMgJiM4MjIwO3JlcGxhY2Ugd2hhdGV2 ZXIgeW91IGZpbmQgd2l0aCBub3RoaW5nJiM4MjIxOzsgb3IgaW4gb3RoZXIgd29yZHMgJiM4 MjIwO2RlbGV0ZSBldmVyeXRoaW5nIHRoYXQgbWF0Y2hlcyB0aGUgZmlsdGVyJiM4MjIxOy4g WW91IG1heSBlbGVjdCB0byByZXBsYWNlIHlvdSBmaWx0ZXJlZCBkYXRhIHdpdGggc29tZXRo aW5nIGVsc2UsIHNheSwgPGNvZGU+cmVwbGFjZT0mcXVvdDt0eHAmcXVvdDs8L2NvZGU+LiBT byBpZiBzb21lb25lIGVudGVyZWQgJiM4MjIwO2ZyM2QmIzgyMjE7IHlvdSB3b3VsZCBzZWUg dGhlIHJlcGxhY2VtZW50IHZhcmlhYmxlIGhhcyBhIHZhbHVlICYjODIyMDt0eHAzdHhwJiM4 MjIxOyAodGhlIHJlYXNvbiB5b3Ugb25seSBnZXQgb25lICYjODIxNjt0eHAmIzgyMTc7IGJl Zm9yZSB0aGUgbnVtYmVyIGlzIGR1ZSB0byB0aGUgZXhwcmVzc2lvbiBiZWluZyA8ZW0+Z3Jl ZWR5PC9lbT4gYW5kIGdvYmJsaW5nIHVwIGFzIG1hbnkgY2hhcmFjdGVycyBhcyBpdCBjYW4g aW4gYSBncm91cCBiZWZvcmUgcmVwbGFjaW5nIHRoZW0uIFNlZSBhbnkgcmVnZXggdHV0b3Jp YWwgZm9yIG1vcmUgb24gdGhpcyB0b3BpYykuPC9wPgoKCTxwPlVuZGVyIG5vcm1hbCBjaXJj dW1zdGFuY2VzIHlvdSB3b24mIzgyMTc7dCB3YW50IHRvIG1lc3Mgd2l0aCA8Y29kZT5yZXBs YWNlPC9jb2RlPiBhcyBpdCYjODIxNztsbCBkbyB3aGF0IHlvdSB3YW50IHdpdGggdGhlIGRl ZmF1bHQgJiM4MjE2O2RlbGV0ZSYjODIxNzsgb3BlcmF0aW9uLjwvcD4KCgk8aDMgaWQ9ImZv cHRpb25zIj5GaWx0ZXJpbmcgb3B0aW9uczwvaDM+CgoJPHA+QnkgZGVmYXVsdCwgdGhlIHBs dWdpbiBvbmx5IGxvb2tzIGF0IDxjb2RlPmZpZWxkPC9jb2RlPiBkYXRhLiBJZiB5b3Ugd2lz aCB0byBjaGFuZ2UgdGhhdCwgdXNlIHRoZSA8Y29kZT5maWx0ZXJfaW48L2NvZGU+IGF0dHJp YnV0ZS48L3A+CgoJPHA+VGhlIHBsdWdpbiBhbHNvIGFwcGxpZXMgdGhlIGZpbHRlciB0byBh bGwgZmllbGRzICg8Y29kZT5maWx0ZXJfdHlwZT0mcXVvdDthbGwmcXVvdDs8L2NvZGU+KS4g WW91IG1heSB3aXNoIHRvIG9ubHkgdGFyZ2V0IGEgZmlsdGVyIGF0IHVybCBhbmQgc2VydmVy IHZhcnMsIGluIHdoaWNoIGNhc2UgeW91IHdvdWxkIHNwZWNpZnkgPGNvZGU+ZmlsdGVyX3R5 cGU9JnF1b3Q7dXJsdmFyLCBzdnJ2YXImcXVvdDs8L2NvZGU+LiBPciBtYXliZSB5b3Ugd2lz aCB0byB2YWxpZGF0ZSB0aGUgYXJ0aWNsZSBpbWFnZSBmaWVsZCBpbiBjYXNlIHNvbWVvbmUg ZW50ZXJlZCBzb21lIHJvZ3VlIGRhdGEgdGhlcmU6IDxjb2RlPmZpbHRlcl90eXBlPSZxdW90 O2FydGljbGVfaW1hZ2UmcXVvdDs8L2NvZGU+LjwvcD4KCgk8aDMgaWQ9ImZjYXZlYXQiPkZp bHRlcmluZyBjYXZlYXQ8L2gzPgoKCTxwPklmIHlvdSBzcGVjaWZ5IDxjb2RlPmZpbHRlcl9v bj0mcXVvdDtmaWVsZCwgdmFsdWUmcXVvdDs8L2NvZGU+IGl0IGlzIGltcG9ydGFudCB0byBu b3RlIHRoYXQgdGhlIDxlbT5zYW1lIGZpbHRlcjwvZW0+IHdpbGwgYmUgYXBwbGllZCB0byBl YWNoIGNvcnJlc3BvbmRpbmcgZmllbGQgYW5kIHZhbHVlLiBJZiB5b3VyIGZpbHRlciBpcyB0 b28gc3RyaWN0IHRoZXJlJiM4MjE3O3MgYSBjaGFuY2UgaXQgbWF5IGZpbHRlciBldmVyeSBj aGFyYWN0ZXIgb3V0IG9mIGJvdGggPGNvZGU+ZmllbGQ8L2NvZGU+IGFuZCA8Y29kZT52YWx1 ZTwvY29kZT4sIHRodXMgaWYgeW91ciB0ZXN0IHdhcyBmb3IgZXF1YWxpdHkgdGhlIHRlc3Qg d291bGQgcmV0dXJuICYjODIxNjt0cnVlJiM4MjE3Oy4gSGVyZSYjODIxNztzIGFuIGV4YW1w bGU6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4 cDpzbWRfaWYgZmllbGQ9JnF1b3Q7dXJsdmFyOmNvbXAxJnF1b3Q7IG9wZXJhdG9yPSZxdW90 O2VxJnF1b3Q7CiAgICAgdmFsdWU9JnF1b3Q7dXJsdmFyOmNvbXAyJnF1b3Q7IGZpbHRlcj0m cXVvdDsvW15hLXpBLVpdKy8mcXVvdDsKICAgICBmaWx0ZXJfb249JnF1b3Q7ZmllbGQsIHZh bHVlJnF1b3Q7Jmd0OwogICAvLyBJJiMzOTttIE5PVCBuZWNlc3NhcmlseSB2YWxpZAombHQ7 L3R4cDpzbWRfaWYmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5JZiB5b3VyIHVzZXIgdHlwZWQg aW4gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IDxjb2RlPnNpdGUuY29tL2Fy dGljbGU/Y29tcDE9MTIzNDUmYW1wO2NvbXAyPTY3ODkwPC9jb2RlPiB0aGUgcGx1Z2luIHdv dWxkIGRvIHRoZSBmb2xsb3dpbmc6PC9wPgoKCTxvbD4KCQk8bGk+RmlsdGVyIGNvbXAxIGFu ZCByZW1vdmUgYWxsIG5vbi1sZXR0ZXIgY2hhcmFjdGVyczwvbGk+CgkJPGxpPkZpbHRlciBj b21wMiBhbmQgcmVtb3ZlIGFsbCBub24tbGV0dGVyIGNoYXJhY3RlcnM8L2xpPgoJCTxsaT5M b29rIGF0IGNvbXAxICh3aGljaCBpcyBub3cgZW1wdHkpIGFuZCBjb21wMiAod2hpY2ggaXMg YWxzbyBlbXB0eSksIHRoZW4gY29tcGFyZSB0aGVtPC9saT4KCTwvb2w+CgoJPHA+WW91IGNh biBzZWUgd2hhdCYjODIxNztzIGdvaW5nIHRvIGhhcHBlbjogdGhlIHRlc3QgcmVzdWx0IGlz IGdvaW5nIHRvIGJlICYjODIxNjt0cnVlJiM4MjE3OyBiZWNhdXNlICYjODIyMDtub3RoaW5n JiM4MjIxOyBkb2VzIGluZGVlZCBlcXVhbCAmIzgyMjA7bm90aGluZyYjODIyMTsuIFNvIHRo ZSBhY3Qgb2YgdGhlIHVzZXIgZW50ZXJpbmcgdHdvIG5vbnNlbnNpY2FsLCBjb21wbGV0ZWx5 IG51bWVyaWMgc3RyaW5ncyBvZiBkYXRhIGhhcyBicm9rZW4geW91ciBsb2dpYy48L3A+CgoJ PHA+Rm9yIHRoaXMgcmVhc29uLCBpZiB5b3UgYXJlIGZpbHRlcmluZyBvbiBib3RoIGZpZWxk IGFuZCB2YWx1ZSwgeW91IHNob3VsZCBwZXJmb3JtIDxlbT5hZGRpdGlvbmFsPC9lbT4gdGVz dHMgdG8gc2VlIGlmIGVpdGhlciBmaWVsZCAvIHZhbHVlIGlzIHNldCBhdCBhbGwuIFRoaXMg aXMgYmV0dGVyOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2si PiZsdDt0eHA6c21kX2lmIGZpZWxkPSZxdW90O3VybHZhcjpjb21wMSwgdXJsdmFyOmNvbXAx LCB1cmx2YXI6Y29tcDImcXVvdDsKICAgICBvcGVyYXRvcj0mcXVvdDtlcSwgaXN1c2VkLCBp c3VzZWQmcXVvdDsgdmFsdWU9JnF1b3Q7dXJsdmFyOmNvbXAyJnF1b3Q7CiAgICAgZmlsdGVy PSZxdW90Oy9bXmEtekEtWl0rLyZxdW90OwogICAgIGZpbHRlcl9vbj0mcXVvdDtmaWVsZCwg dmFsdWUmcXVvdDsmZ3Q7CiAgIC8vIEkmIzM5O20gbm93IGFjdHVhbGx5IHZhbGlkCiZsdDsv dHhwOnNtZF9pZiZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlNvIG5vdywgaWYgeW91ciBmaWx0 ZXIgcmVtb3ZlcyBldmVyeXRoaW5nIGZyb20gYm90aCA8c3BhbiBjbGFzcz0iY2FwcyI+VVJM PC9zcGFuPiB2YXJzLCBpdCBzdGlsbCBmYWlscyB0aGUgJiM4MjE2O2hhcyB0aGUgdXNlciBl bnRlcmVkIGFueXRoaW5nIGF0IGFsbCYjODIxNzsgdGVzdHMgYmVjYXVzZSBhcyBmYXIgYXMg dGhlIHBsdWdpbiBpcyBjb25jZXJuZWQsIHRoZSB2aXNpdG9yIGhhcyBzdWJtaXR0ZWQgcnVi YmlzaC48L3A+CgoJPGgzIGlkPSJmZnVydGhlciI+R29pbmcgZnVydGhlcjwvaDM+CgoJPHA+ VGhlIGFib3ZlIGV4YW1wbGVzIGFsbCB1c2UgYSBzaW5nbGUgZmlsdGVyLiBZb3UgY2FuIHNw ZWNpZnkgbW9yZSB0aGFuIG9uZSBmaWx0ZXIgYW5kIHJlcGxhY2VtZW50IGlmIHlvdSB3aXNo LCBqdXN0IGNvbW1hLWRlbGltaXQgdGhlbSAodW5sZXNzIHlvdSYjODIxNzt2ZSBvdmVycmlk ZW4gdGhlIDxjb2RlPnBhcmFtX2RlbGltPC9jb2RlPiBvZiBjb3Vyc2UpLjwvcD4KCgk8cD5X aGVuIHlvdSBzcGVjaWZ5IG1vcmUgdGhhbiBvbmUgZmlsdGVyLCB0aGV5IGlnbm9yZSB0aGUg PGNvZGU+ZmlsdGVyX3R5cGU8L2NvZGU+IGF0dHJpYnV0ZSBiZWNhdXNlIHRoZSBmaWx0ZXJz IGFyZSBhcHBsaWVkIGluIG9yZGVyOyBvbmUgcGVyIHRlc3QuIElmIHlvdSB3aXNoIHRvIHNr aXAgYSBwYXJ0aWN1bGFyIGZpZWxkIGFuZCBub3QgYXBwbHkgYSBmaWx0ZXIsIHNpbXBseSBs ZWF2ZSBhbiBhbXB0eSBjb21tYSBhcyBhIHBsYWNlaG9sZGVyLCBlLmcuIDxjb2RlPmZpbHRl cj0mcXVvdDssIC9bXmEtekEtWjAtOVwtXSsvLCAsIC9bXjAtOV0rLyZxdW90OzwvY29kZT4g d291bGQgYXBwbHkgdGhlIHJlc3BlY3RpdmUgZmlsdGVycyB0byB0aGUgMm5kIGFuZCA0dGgg dGVzdHMgb25seS48L3A+CgoJPGgyPkV4YW1wbGVzPC9oMj4KCgk8aDMgaWQ9ImVnMSI+RXhh bXBsZSAxPC9oMz4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZs dDt0eHA6c21kX2lmIGZpZWxkPSZxdW90O3NlY3Rpb24sIGlkJnF1b3Q7CiAgICAgb3BlcmF0 b3I9JnF1b3Q7YmVnaW5zLCBndCZxdW90OwogICAgIHZhbHVlPSZxdW90O2xpb24sIDEyJnF1 b3Q7Jmd0OwogJmx0O3R4cDphcnRpY2xlIC8mZ3Q7CiZsdDt0eHA6ZWxzZSAvJmd0OwogJmx0 O3AmZ3Q7Tm90IHRvZGF5LCB0aGFua3MmbHQ7L3AmZ3Q7CiZsdDsvdHhwOnNtZF9pZiZndDsK PC9jb2RlPjwvcHJlPgoKCTxwPkNoZWNrcyBpZiB0aGUgY3VycmVudCBzZWN0aW9uIG5hbWUg YmVnaW5zIHdpdGggdGhlIHdvcmQgJiM4MjIwO2xpb24mIzgyMjE7IGFuZCB0aGUgYXJ0aWNs ZSBJRCBpcyBncmVhdGVyIHRoYW4gMTIuIERpc3BsYXlzIHRoZSBhcnRpY2xlIGlmIGJvdGgg Y29uZGl0aW9ucyBhcmUgbWV0IG9yIGRpc3BsYXlzIHRoZSB0ZXh0ICYjODIyMDtOb3QgdG9k YXksIHRoYW5rcyYjODIyMTsgaWYgbm90LjwvcD4KCgk8aDMgaWQ9ImVnMiI+RXhhbXBsZSAy PC9oMz4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6 c21kX2lmIGZpZWxkPSZxdW90O3N1bW1hcnksIGNhdGVnb3J5LCB1cmx2YXI6cGljJnF1b3Q7 CiAgICAgb3BlcmF0b3I9JnF1b3Q7aXN1c2VkLCBlcSwgaXNudW0mcXVvdDsKICAgICB2YWx1 ZT0mcXVvdDssIGFuaW1hbCAsJnF1b3Q7ICZndDsKICZsdDt0eHA6YXJ0aWNsZSAvJmd0Owom bHQ7dHhwOmVsc2UgLyZndDsKICZsdDtwJmd0O05vdCB0b2RheSwgdGhhbmtzJmx0Oy9wJmd0 OwombHQ7L3R4cDpzbWRfaWYmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5DaGVja3MgaWYgdGhl IGN1c3RvbSBmaWVsZCBsYWJlbGxlZCAmIzgyMjA7c3VtbWFyeSYjODIyMTsgaGFzIHNvbWUg ZGF0YSBpbiBpdCwgY2hlY2tzIGlmIHRoZSBnbG9iYWwgY2F0ZWdvcnkgZXF1YWxzICYjODIy MDthbmltYWwmIzgyMjE7IGFuZCB0ZXN0cyBpZiB0aGUgdXJsdmFyIDxjb2RlPnBpYzwvY29k ZT4gaXMgbnVtZXJpYyAoZS5nLiA8Y29kZT4/cGljPTU8L2NvZGU+KS48L3A+CgoJPHA+SWYg YWxsIHRoZXNlIGNvbmRpdGlvbnMgYXJlIG1ldCB0aGUgYXJ0aWNsZSBpcyBkaXNwbGF5ZWQs IGVsc2UgdGhlIG1lc3NhZ2UgaXMgc2hvd24uIE5vdGUgdGhhdCA8Y29kZT5pc3VzZWQ8L2Nv ZGU+IGFuZCA8Y29kZT5pc251bTwvY29kZT4gZG9uJiM4MjE3O3QgdGFrZSBhcmd1bWVudHMg Zm9yIDxjb2RlPnZhbHVlPC9jb2RlPiBhbmQgdGhlaXIgcG9zaXRpb25zIGFyZSBoZWxkIGJ5 IGVtcHR5IGNvbW1hcyAodGVjaG5pY2FsbHkgdGhlIGxhc3QgY29tbWEgaXNuJiM4MjE3O3Qg bmVlZGVkIGJ1dCBpdCBoZWxwcyBrZWVwIGV2ZXJ5dGhpbmcgbmVhdCBpZiB5b3UgYWRkIGZ1 cnRoZXIgdGVzdHMgbGF0ZXIgb24pLjwvcD4KCgk8aDMgaWQ9ImVnMyI+RXhhbXBsZSAzPC9o Mz4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21k X2lmIGZpZWxkPSZxdW90O2FydGljbGVfaW1hZ2UsIHN2cnZhcjpIVFRQX1VTRVJfQUdFTlQm cXVvdDsKICAgICBvcGVyYXRvcj0mcXVvdDtlcSwgY29udGFpbnMmcXVvdDsKICAgICB2YWx1 ZT0mcXVvdDt1cmx2YXI6cGljLCBTYWZhcmkmcXVvdDsKICAgICBsb2dpYz0mcXVvdDtvciZx dW90OyZndDsKICZsdDt0eHA6YXJ0aWNsZSAvJmd0OwombHQ7dHhwOmVsc2UgLyZndDsKICZs dDtwJmd0O05vdCB0b2RheSwgdGhhbmtzJmx0Oy9wJmd0OwombHQ7L3R4cDpzbWRfaWYmZ3Q7 CjwvY29kZT48L3ByZT4KCgk8cD5Db21wYXJlcyAoZm9yIGVxdWFsaXR5KSB0aGUgY3VycmVu dCBhcnRpY2xlIGltYWdlIGlkIHdpdGggdGhlIHZhbHVlIG9mIHRoZSB1cmwgdmFyaWFibGUg PGNvZGU+cGljPC9jb2RlPiBhbmQgY2hlY2tzIGlmIHRoZSB2YWx1ZSBvZiB0aGUgPHNwYW4g Y2xhc3M9ImNhcHMiPkhUVFA8L3NwYW4+X1VTRVJfQUdFTlQgc3RyaW5nIGNvbnRhaW5zICYj ODIyMDtTYWZhcmkmIzgyMjE7LiBUaGlzIGV4YW1wbGUgdXNlcyB0aGUgJiM4MjE2O29yJiM4 MjE3OyBsb2dpYywgaGVuY2UgaWYgPGVtPmVpdGhlcjwvZW0+IGNvbmRpdGlvbiBpcyBtZXQg dGhlIGFydGljbGUgaXMgc2hvd24sIG90aGVyd2lzZSB0aGUgJiM4MjE2O25vdCB0b2RheSYj ODIxNzsgbWVzc2FnZSBpcyBkaXNwbGF5ZWQuPC9wPgoKCTxoMyBpZD0iZWc0Ij5FeGFtcGxl IDQ8L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4 cDpzbWRfaWYgZmllbGQ9JnF1b3Q7cGFyZW50OkxWTDImcXVvdDsKICAgICBvcGVyYXRvcj0m cXVvdDtlcSZxdW90OwogICAgIHZhbHVlPSZxdW90O21hbW1hbCZxdW90OyZndDsKICZsdDt0 eHA6YXJ0aWNsZSAvJmd0OwombHQ7dHhwOmVsc2UgLyZndDsKICZsdDtwJmd0O05vdCB0b2Rh eSwgdGhhbmtzJmx0Oy9wJmd0OwombHQ7L3R4cDpzbWRfaWYmZ3Q7CjwvY29kZT48L3ByZT4K Cgk8cD5DaGVja3MgdGhlIDJuZCBzdWItY2F0ZWdvcnkgb2YgdGhlIGdsb2JhbCBjYXRlZ29y eSYjODIxNztzIHRyZWUgdG8gc2VlIGlmIGl0IGVxdWFscyAmIzgyMjA7bWFtbWFsJiM4MjIx Oy4gSWYgaXQgZG9lcywgc2hvdyB0aGUgYXJ0aWNsZTsgaWYgbm90IHNob3cgdGhlIG1lc3Nh Z2UuIFJlbW92aW5nIHRoZSA8Y29kZT46TFZMMjwvY29kZT4gKHdoaWNoIGFsbG93cyB5b3Ug dG8gYWxzbyByZW1vdmUgdGhlIG9wZXJhdG9yIHBhcmFtZXRlciB0byBmb3JjZSB0aGUgY29t cGFyaXNvbiB0byBiZSB0aGUgZGVmYXVsdCAmIzgyMjA7Y29udGFpbnMmIzgyMjE7KSBjaGVj a3MgaWYgdGhlIGN1cnJlbnQgZ2xvYmFsIGNhdGVnb3J5IGlzIGEgY2hpbGQgb2YgJiM4MjE2 O21hbW1hbCYjODIxNzsgKGF0IGFueSBsZXZlbCkuPC9wPgoKCTxwPkNoYW5nZSB0aGUgZmll bGQgdG8gPGNvZGU+cGFyZW50OkNBVDE8L2NvZGU+IHRvIHNlZSBpZiB0aGUgYXJ0aWNsZSYj ODIxNztzIGNhdGVnb3J5MSBtYXRjaGVzICYjODIxNjttYW1tYWwmIzgyMTc7IGF0IGFueSBs ZXZlbCwgb3IgdXNlIDxjb2RlPmZpZWxkPSZxdW90O3BhcmVudDpDQVQxOkxWTDImcXVvdDs8 L2NvZGU+IHRvIGNvbWJpbmUgdGhlIGNoZWNrcy48L3A+CgoJPGgzIGlkPSJlZzUiPkV4YW1w bGUgNTwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7 dHhwOnNtZF9pZiBmaWVsZD0mcXVvdDt1cmx2YXI6cGljLCB1cmx2YXI6cGFnZSZxdW90Owog ICAgIG9wZXJhdG9yPSZxdW90O2d0Ok5VTSwgdW5kZWZpbmVkJnF1b3Q7CiAgICAgdmFsdWU9 JnF1b3Q7P2FydGljbGVfaW1hZ2UsJnF1b3Q7Jmd0OwogJmx0O3R4cDphcnRpY2xlIC8mZ3Q7 CiZsdDt0eHA6ZWxzZSAvJmd0OwogJmx0O3AmZ3Q7Tm90IHRvZGF5LCB0aGFua3MmbHQ7L3Am Z3Q7CiZsdDsvdHhwOnNtZF9pZiZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRlc3RzIGlmIHRo ZSB1cmwgdmFyaWFibGUgPGNvZGU+cGljPC9jb2RlPiBpcyBzdHJpY3RseSBudW1lcmljYWxs eSBncmVhdGVyIHRoYW4gdGhlIHZhbHVlIGluIHRoZSBjdXJyZW50IGFydGljbGUmIzgyMTc7 cyA8Y29kZT5hcnRpY2xlX2ltYWdlPC9jb2RlPiBmaWVsZCBhbmQgdGhhdCB0aGUgdXJsIHZh cmlhYmxlIDxjb2RlPnBhZ2U8L2NvZGU+IGlzIG1pc3NpbmcgZnJvbSB0aGUgPHNwYW4gY2xh c3M9ImNhcHMiPlVSTDwvc3Bhbj4gYWRkcmVzcy4gQ29tcGFyZSB0aGUgb3V0Y29tZSBvZiB0 aGlzIHRlc3Qgd2l0aCB0aGUgb3RoZXIgb3BlcmF0b3JzIHVzaW5nIHRoZSBmb2xsb3dpbmcg dGFibGUgd2hlbiB0ZXN0aW5nIHRoZSA8Y29kZT5wYWdlPC9jb2RlPiB1cmx2YXI6PC9wPgoK CTx0YWJsZT4KCQk8dHI+CgkJCTx0aD48c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9 ImNhcHMiPlVSTDwvc3Bhbj48L3NwYW4+IDwvdGg+CgkJCTx0aD5kZWZpbmVkIDwvdGg+CgkJ CTx0aD51bmRlZmluZWQgPC90aD4KCQkJPHRoPmlzdXNlZCA8L3RoPgoJCQk8dGg+aXNlbXB0 eSA8L3RoPgoJCTwvdHI+CgkJPHRyPgoJCQk8dGQ+IGluZGV4LnBocD9wYWcgPC90ZD4KCQkJ PHRkPiA8c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNhcHMiPkZBTFNFPC9zcGFu Pjwvc3Bhbj4gPC90ZD4KCQkJPHRkPiA8c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9 ImNhcHMiPlRSVUU8L3NwYW4+PC9zcGFuPiA8L3RkPgoJCQk8dGQ+IDxzcGFuIGNsYXNzPSJj YXBzIj48c3BhbiBjbGFzcz0iY2FwcyI+RkFMU0U8L3NwYW4+PC9zcGFuPiA8L3RkPgoJCQk8 dGQ+IDxzcGFuIGNsYXNzPSJjYXBzIj48c3BhbiBjbGFzcz0iY2FwcyI+RkFMU0U8L3NwYW4+ PC9zcGFuPiA8L3RkPgoJCTwvdHI+CgkJPHRyPgoJCQk8dGQ+IGluZGV4LnBocD9wYWdlPSA8 L3RkPgoJCQk8dGQ+IDxzcGFuIGNsYXNzPSJjYXBzIj48c3BhbiBjbGFzcz0iY2FwcyI+VFJV RTwvc3Bhbj48L3NwYW4+IDwvdGQ+CgkJCTx0ZD4gPHNwYW4gY2xhc3M9ImNhcHMiPjxzcGFu IGNsYXNzPSJjYXBzIj5GQUxTRTwvc3Bhbj48L3NwYW4+IDwvdGQ+CgkJCTx0ZD4gPHNwYW4g Y2xhc3M9ImNhcHMiPjxzcGFuIGNsYXNzPSJjYXBzIj5GQUxTRTwvc3Bhbj48L3NwYW4+IDwv dGQ+CgkJCTx0ZD4gPHNwYW4gY2xhc3M9ImNhcHMiPjxzcGFuIGNsYXNzPSJjYXBzIj5UUlVF PC9zcGFuPjwvc3Bhbj4gPC90ZD4KCQk8L3RyPgoJCTx0cj4KCQkJPHRkPiBpbmRleC5waHA/ cGFnZT00IDwvdGQ+CgkJCTx0ZD4gPHNwYW4gY2xhc3M9ImNhcHMiPjxzcGFuIGNsYXNzPSJj YXBzIj5UUlVFPC9zcGFuPjwvc3Bhbj4gPC90ZD4KCQkJPHRkPiA8c3BhbiBjbGFzcz0iY2Fw cyI+PHNwYW4gY2xhc3M9ImNhcHMiPkZBTFNFPC9zcGFuPjwvc3Bhbj4gPC90ZD4KCQkJPHRk PiA8c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNhcHMiPlRSVUU8L3NwYW4+PC9z cGFuPiA8L3RkPgoJCQk8dGQ+IDxzcGFuIGNsYXNzPSJjYXBzIj48c3BhbiBjbGFzcz0iY2Fw cyI+RkFMU0U8L3NwYW4+PC9zcGFuPiA8L3RkPgoJCTwvdHI+Cgk8L3RhYmxlPgoKCTxoMyBp ZD0iZWc2Ij5FeGFtcGxlIDY8L2gzPgoKCTxwPlB1dCB0aGlzIGluc2lkZSB5b3VyIDxjb2Rl PnBsYWlubGlua3M8L2NvZGU+IGZvcm0gYW5kIGV4ZWN1dGUgYSA8Y29kZT4mbHQ7dHhwOmxp bmtsaXN0IC8mZ3Q7PC9jb2RlPiBmcm9tIGFuIGFydGljbGUgcGFnZS9mb3JtOjwvcD4KCjxw cmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2lmIGZp ZWxkPSZxdW90O2lkJnF1b3Q7CiAgICAgb3BlcmF0b3I9JnF1b3Q7Z2U6TlVNLCBsZTpOVU0m cXVvdDsKICAgICB2YWx1ZT0mcXVvdDt1cmx2YXI6bWluLCB1cmx2YXI6bWF4JnF1b3Q7Jmd0 OwogICZsdDt0eHA6bGlua2Rlc2N0aXRsZSAvJmd0OyZsdDticiAvJmd0OwombHQ7L3R4cDpz bWRfaWYmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGF0IHdpbGwgbGlzdCBvbmx5IHRoZSBs aW5rcyB0aGF0IGhhdmUgSURzIGJldHdlZW4gdGhlIDxjb2RlPm1pbjwvY29kZT4gYW5kIDxj b2RlPm1heDwvY29kZT4gdmFyaWFibGVzIHNwZWNpZmllZCBvbiB0aGUgYWRkcmVzcyBiYXIu IE5vdGljZSB0aGF0IHRoZSBpZCBmaWVsZCBpcyBvbmx5IGxpc3RlZCBvbmNlIGFuZCBlYWNo IG9wZXJhdG9yIGlzIGFwcGxpZWQgdG8gaXQgaW4gdHVybi48L3A+CgoJPGgzIGlkPSJlZzci PkV4YW1wbGUgNzwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2Nr Ij4mbHQ7dHhwOnNtZF9pZiBmaWVsZD0mcXVvdDt1cmx2YXI6cHJvZHVjdF9jb2RlJnF1b3Q7 CiAgICAgb3BlcmF0b3I9JnF1b3Q7aXNhbG51bSZxdW90OyZndDsKICAmbHQ7dHhwOm91dHB1 dF9mb3JtIGZvcm09JnF1b3Q7c2hvd19wcm9kdWN0JnF1b3Q7IC8mZ3Q7CiZsdDt0eHA6ZWxz ZSAvJmd0OwogJmx0O3AmZ3Q7SW52YWxpZCBwcm9kdWN0IGNvZGUmbHQ7L3AmZ3Q7CiZsdDsv dHhwOnNtZF9pZiZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRlc3RzIHRvIHNlZSBpZiB0aGUg cHJvZHVjdF9jb2RlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IHZhcmlhYmxlIGlz IGFscGhhbnVtZXJpYyBhbmQgZGlzcGxheXMgYSBmb3JtIGlmIHNvLjwvcD4KCgk8aDMgaWQ9 ImVnOCI+RXhhbXBsZSA4PC9oMz4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0i YmxvY2siPiZsdDt0eHA6c21kX2lmIGZpZWxkPSZxdW90O3VybHZhcjpzb3J0X29yZGVyJnF1 b3Q7CiAgICAgb3BlcmF0b3I9JnF1b3Q7aW4mcXVvdDsKICAgICB2YWx1ZT0mcXVvdDtpZC9w cmljZS9zaXplL2NvbG91ciZxdW90OyZndDsKICAmbHQ7cCZndDtTb3J0aW5nIHZhbHVlcyBi eSB7c21kX2lmX3NvcnRfb3JkZXJ9Jmx0Oy9wJmd0OwogIC8vIERvIHNvbWUgc3R1ZmYKJmx0 O3R4cDplbHNlIC8mZ3Q7CiAgLy8gVXNlIGEgZGVmYXVsdCBzb3J0LCBvciBzaG93IGFuIGVy cm9yIGhlcmUKJmx0Oy90eHA6c21kX2lmJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+QnkgdXNp bmcgdGhlIHJlcGxhY2VtZW50IHRhZyB7c21kX2lmX3NvcnRfb3JkZXJ9IHlvdSBoYXZlIHBs dWNrZWQgdGhlIHZhbHVlIGZyb20gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+ IGJhciBhbmQgaW5zZXJ0ZWQgaXQgaW50byB0aGUgYXJ0aWNsZS4gVXNlZnVsIHdoZW4gdXNp bmcgdGhlIDxjb2RlPmluPC9jb2RlPiBvciA8Y29kZT5ub3RpbjwvY29kZT4gb3BlcmF0b3Jz IGJlY2F1c2UsIGFsdGhvdWdoIHlvdSBrbm93IHRoYXQgdGhlIGZpZWxkIG1hdGNoZWQgb25l IG9mIHRoZSB2YWx1ZXMgaW4geW91ciBsaXN0LCB5b3Ugd291bGQgb3RoZXJ3aXNlIG5vdCBr bm93IHdoaWNoIG9uZSBoYXMgYmVlbiBnaXZlbiBvbiB0aGUgYWRkcmVzcyBiYXIuPC9wPgoK CTxoMyBpZD0iZWc5Ij5FeGFtcGxlIDk8L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2Rl IGNsYXNzPSJibG9jayI+Jmx0O3R4cDpwaHAmZ3Q7Cmdsb2JhbCAkYm9keWV4OwokYm9keWV4 ID0gYm9keShhcnJheSgpKSAuIGV4Y2VycHQoYXJyYXkoKSk7CiZsdDsvdHhwOnBocCZndDsK Jmx0O3R4cDpzbWRfaWYgZmllbGQ9JnF1b3Q7cGhwdmFyOmJvZHlleCZxdW90OwogICAgIG9w ZXJhdG9yPSZxdW90O2d0OkxFTiZxdW90OwogICAgIHZhbHVlPSZxdW90OzUwMCZxdW90OyZn dDsKICAmbHQ7cCZndDtZb3UgYXJlIGEgYmlnIGJveSBhdCB7c21kX2lmX2xlbl9ib2R5ZXh9 CiAgICAgY2hhcmFjdGVycyBsb25nISZsdDsvcCZndDsKJmx0Oy90eHA6c21kX2lmJmd0Owo8 L2NvZGU+PC9wcmU+CgoJPGgyIGNsYXNzPSJjaGFuZ2Vsb2ciPkNoYW5nZWxvZzwvaDI+CgoJ PHVsPgoJCTxsaT4zMCBEZWMgMDcgfCAwLjEgfCBJbml0aWFsIHJlbGVhc2U8L2xpPgoJCTxs aT4zMCBEZWMgMDcgfCAwLjIgfCBBZGRlZCBwYXJlbnQgY2F0ZWdvcnkgY2hlY2tpbmcgKHRo YW5rcyB0aGVfZ2hvc3QpPC9saT4KCQk8bGk+MDIgSmFuIDA4IHwgMC4zIHwgQWRkZWQgZGVm aW5lZC91bmRlZmluZWQgYW5kIHN0cmljdCBudW1lcmljIGNvbXBhcmlzb25zPC9saT4KCQk8 bGk+MDYgSmFuIDA4IHwgMC40IHwgQWRkZWQgPGNvZGU+PzwvY29kZT4gbm90YXRpb24gdG8g YWxsb3cgdGhlIHZhbHVlIHRvIHJlYWQgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4g ZmllbGRzOyBiZXR0ZXIgcXVvdGUgc3VwcG9ydCAoYm90aCB0aGFua3MgTmVpbEEpPC9saT4K CQk8bGk+MDYgSmFuIDA4IHwgMC40MSB8IEZpeGVkIGxvd2VyIGNhc2UgZmllbGQgbmFtZXMg YW5kIHVuZGVmaW5lZCBpbmRleCBlcnJvciAodGhhbmtzIHBldGVyaik8L2xpPgoJCTxsaT4x NCBKYW4gMDggfCAwLjUgfCBBZGRlZCBjYXNlX3NlbnNpdGl2ZSBvcHRpb247IG1hZGUgJiM4 MjE2O2NvbnRhaW5zJiM4MjE3OyB0aGUgZGVmYXVsdCBmb3IgJiM4MjE2O3BhcmVudCYjODIx NzsgdGVzdHM7IGltcHJvdmVkIGhlbHAgKGFsbCB0aGFua3MgdGhlX2dob3N0KTsgYWRkZWQg ZGVsaW0gb3B0aW9uczwvbGk+CgkJPGxpPjE1IEphbiAwOCB8IDAuNTEgfCBGaXhlZCBkZWZp bmVkL3VuZGVmaW5lZCBzeW50YXggZXJyb3I7IHRpZ2h0ZW5lZCBpc3VzZWQvaXNlbXB0eSB0 byBkaXN0aW5ndWlzaCB0aGVtIGZyb20gZGVmaW5lZC91bmRlZmluZWQ8L2xpPgoJCTxsaT4y NSBNYXkgMDggfCAwLjYgfCBGaXhlZCAmIzgyMTY7dW5kZWZpbmVkIGluZGV4JiM4MjE3OyBl cnJvcnMgKHRoYW5rcyByZWRib3QgYW5kIHRoZV9naG9zdCkgOyBhZGRlZCBtb3JlIHByZXRl eHQgdmFyaWFibGVzIDsgYWRkZWQgbW9yZSA8Y29kZT5pczwvY29kZT4gY2hlY2tzIChhbmQg dGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5OT1NQQUNFPC9zcGFuPiBtb2RpZmllcikgOyBhbGxv d2VkIGZpbGUgYW5kIGxpbmsgdGVzdHMgKGluY2x1ZGluZyBwYXJlbnQgY2F0ZWdvcmllcyk8 L2xpPgoJCTxsaT4yNiBNYXkgMDggfCAwLjYxIHwgRml4ZWQgc3R1cGlkIG92ZXJzaWdodCBp biBmaWVsZCBuYW1lIGdlbmVyYXRpb24gdG8gYWxsb3cgYXJiaXRyYXJ5IG5hbWVzIGluc3Rl YWQgb2YgZm9yY2luZyAkdGhpc2FydGljbGUgKHRoYW5rcyB0byBKb2FuYSBDYXJ2YWxobyBm b3IgbGVhZGluZyBtZSB0byB0aGlzKTwvbGk+CgkJPGxpPjExIEp1biAwOCB8IDAuNjIgfCBG aXhlZCBpbmNvcnJlY3QgcmVzdWx0IGlmIGV2YWwoKSBpcyBlbXB0eSA7IGFkZGVkIDxzcGFu IGNsYXNzPSJjYXBzIj5OVUxMPC9zcGFuPiBmaWVsZCBvYmplY3Q8L2xpPgoJCTxsaT4xMCBT ZXAgMDggfCAwLjcgfCBGaXhlZCB3YXJuaW5nIGlmIGVtcHR5IGN1c3RvbSBmaWVsZCBpbiB2 YWx1ZSAodGhhbmtzIHZpc3VhbHBlb3BsZSkgOyBhZGRlZCB0eHB2YXIgc3VwcG9ydCAodGhh bmtzIHRoZV9naG9zdCkgOyBhZGRlZCB0aGlzaW1hZ2Ugc3VwcG9ydCAoZm9yIHRoZSBmdXR1 cmUpIDsgYWRkZWQgb3BlcmF0b3JzIDxjb2RlPmluPC9jb2RlPiwgPGNvZGU+bm90aW48L2Nv ZGU+IGFuZCB0aGUgPGNvZGU+bGlzdF9kZWxpbTwvY29kZT4gYXR0cmlidXRlOyBlbmFibGVk IHJlcGxhY2VtZW50IHRhZ3MgZm9yIG1hdGNoZWQgdmFyaWFibGVzPC9saT4KCQk8bGk+MDEg T2N0IDA4IHwgMC43MSB8IEZpeGVkIHRoZSBmaXggZm9yIGVtcHR5IGN1c3RvbSBmaWVsZHMg aW1wbGVtZW50ZWQgaW4gMC43ICh0aGFua3MgbWFwdS92aXN1YWxwZW9wbGUpPC9saT4KCQk8 bGk+MDEgT2N0IDA4IHwgMC43MiB8IEFkZGVkIDxjb2RlPjpOT1RBR1M8L2NvZGU+ICh0aGFu a3MgbWFwdSk8L2xpPgoJCTxsaT4xMyBPY3QgMDggfCAwLjczIHwgQWRkZWQgPGNvZGU+Ok5P U1BBQ0U8L2NvZGU+IHRvIDxjb2RlPmJlZ2luczwvY29kZT4sIDxjb2RlPmVuZHM8L2NvZGU+ IGFuZCA8Y29kZT5jb250YWluczwvY29kZT4gKHRoYW5rcyBtYXB1KSwgYWRkZWQgcGhwdmFy IHN1cHBvcnQsIDxjb2RlPjpMRU48L2NvZGU+IG1vZGlmaWVyIGFuZCBsZW5ndGggcmVwbGFj ZW1lbnQgdGFncyAoYWxsIHRoYW5rcyB0aGVfZ2hvc3QpPC9saT4KCQk8bGk+MTMgT2N0IDA4 IHwgMC43NCB8IEJ1ZyBmaXggdGhlIHNtZF9pZl8gbmFtZXMgb2YgdmFscyBhbmQgZmllbGRz IHRvIGF2b2lkIGNsYXNoZXMuIE5vdyBudW1lcmljYWxseSBpbmRleGVkPC9saT4KCQk8bGk+ MDIgRGVjIDA4IHwgMC43NSB8IEFkZGVkIDxjb2RlPmRpdmlzaWJsZTwvY29kZT4gb3BlcmF0 b3IgKHRoYW5rcyBnb21lZGlhKSA7IGFsbG93IHNob3J0LWNpcmN1aXQgb2YgZmllbGRzICh0 aGFua3MgcmVkYm90KTwvbGk+CgkJPGxpPjIwIE1hciAwOSB8IDAuNzYgfCBBZGRlZCA8Y29k ZT5wb3N0dmFyPC9jb2RlPiBmaWVsZCB0eXBlICh0aGFua3Mga29zdGFzNDUpPC9saT4KCQk8 bGk+MjIgTWFyIDA5IHwgMC43NyB8IEFkZGVkIDxjb2RlPjpUUklNPC9jb2RlPiBtb2RpZmll ciAodGhhbmtzIGdvbWVkaWEpPC9saT4KCQk8bGk+MDUgQXByIDA5IHwgMC44IHwgQWRkZWQg ZmlsdGVyaW5nIGNhcGFiaWxpdHk8L2xpPgoJPC91bD4KCiAgPC9kaXY+CjwhLS0gLS0tIEJF R0lOIFBMVUdJTiBDU1MgLS0tIC0tPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgojc21kX2hl bHAgeyBsaW5lLWhlaWdodDoxLjMgO30KI3NtZF9oZWxwIGNvZGUgeyBmb250LXdlaWdodDpi b2xkOyBmb250OiAxMDUlLzEzMCUgIkNvdXJpZXIgTmV3IiwgY291cmllciwgbW9ub3NwYWNl OyBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkNDO30KI3NtZF9oZWxwIGNvZGUuYmxvY2sgeyBm b250LXdlaWdodDpub3JtYWw7IGJvcmRlcjoxcHggZG90dGVkICM5OTk7IGJhY2tncm91bmQt Y29sb3I6ICNmMGU2OGM7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbjoxMHB4IDEwcHggMjBweDsg cGFkZGluZzoxMHB4OyB9CiNzbWRfaGVscCBhOmxpbmssICNzbWRfaGVscCBhOnZpc2l0ZWQg eyBjb2xvcjogYmx1ZTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBib3JkZXItYm90dG9tOiAx cHggc29saWQgYmx1ZTsgcGFkZGluZy1ib3R0b206MXB4O30KI3NtZF9oZWxwIGE6aG92ZXIs ICNzbWRfaGVscCBhOmFjdGl2ZSB7IGNvbG9yOiBibHVlOyB0ZXh0LWRlY29yYXRpb246IG5v bmU7IGJvcmRlci1ib3R0b206IDJweCBzb2xpZCBibHVlOyBwYWRkaW5nLWJvdHRvbToxcHg7 fQojc21kX2hlbHAgaDEgeyBjb2xvcjogIzM2OTsgZm9udDogMjBweCBHZW9yZ2lhLCBzYW5z LXNlcmlmOyBtYXJnaW46IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgfQojc21kX2hlbHAgaDIg eyBib3JkZXItYm90dG9tOiAxcHggc29saWQgYmxhY2s7IHBhZGRpbmc6MTBweCAwIDA7IGNv bG9yOiAjMzY5OyBmb250OiAxN3B4IEdlb3JnaWEsIHNhbnMtc2VyaWY7IH0KI3NtZF9oZWxw IGgzIHsgY29sb3I6ICM2OTM7IGZvbnQ6IGJvbGQgMTJweCBBcmlhbCwgc2Fucy1zZXJpZjsg bGV0dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2luOiAxMHB4IDAgMDt0ZXh0LXRyYW5zZm9ybTog dXBwZXJjYXNlO30KI3NtZF9oZWxwIGg0IHsgZm9udDogYm9sZCAxMXB4IEFyaWFsLCBzYW5z LXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMXB4OyBtYXJnaW46IDEwcHggMCAwIDt0ZXh0LXRy YW5zZm9ybTogdXBwZXJjYXNlOyB9CiNzbWRfaGVscCAuYXR0LW5hbWUgeyBmb250LXdlaWdo dDpib2xkOyB9CiNzbWRfaGVscCAubWFuZCB7IGJhY2tncm91bmQ6I2VlZTsgYm9yZGVyOjFw eCBkb3R0ZWQgIzk5OTsgfQojc21kX2hlbHAgdGFibGUge3dpZHRoOjEwMCU7IHRleHQtYWxp Z246Y2VudGVyOyBwYWRkaW5nLWJvdHRvbToxZW07IGJvcmRlcjoxcHggc29saWQgIzY2Njt9 CiNzbWRfaGVscCB0ZCwgI3NtZF9oZWxwIHRoIHtib3JkZXI6MXB4IHNvbGlkICM5OTk7IHBh ZGRpbmc6LjVlbSAwO30KPC9zdHlsZT4KPCEtLSAtLS0gRU5EIFBMVUdJTiBDU1MgLS0tIC0t PgoiO3M6MzoibWQ1IjtzOjMyOiIwOTU0YjNhMTk1ODJlZmU4MTM5NTI5YWRjMGJhZTE2MiI7 fQ==