# zem_contact_reborn v4.0.3.20 # Form mailer for Textpattern # # License: GNU GPLv2 or later # # TXP Community # http://forum.textpattern.com/viewtopic.php?id=23728 # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YTo5OntzOjQ6Im5hbWUiO3M6MTg6InplbV9jb250YWN0X3JlYm9ybiI7czo3OiJ2ZXJzaW9u IjtzOjg6IjQuMC4zLjIwIjtzOjY6ImF1dGhvciI7czoxMzoiVFhQIENvbW11bml0eSI7czox MDoiYXV0aG9yX3VyaSI7czo1MToiaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3 dG9waWMucGhwP2lkPTIzNzI4IjtzOjExOiJkZXNjcmlwdGlvbiI7czoyNzoiRm9ybSBtYWls ZXIgZm9yIFRleHRwYXR0ZXJuIjtzOjQ6InR5cGUiO2k6MDtzOjQ6ImhlbHAiO3M6MzcwOTY6 IiA8c3R5bGU+CiAgIGxpIGNvZGUge2ZvbnQtd2VpZ2h0OiBib2xkO30KICAgcHJlIHtwYWRk aW5nOiAwLjVlbSAxZW07IGJhY2tncm91bmQ6ICNlZWU7IGJvcmRlcjogMXB4IGRhc2hlZCAj Y2NjO30KICAgaDEsIGgyLCBoMywgaDMgY29kZSB7Zm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7 IGZvbnQtd2VpZ2h0OiBib2xkO30KICAgaDEsIGgyLCBoMyB7bWFyZ2luLWxlZnQ6IC0xZW07 fQogICBoMiwgaDMge21hcmdpbi10b3A6IDJlbTt9CiAgIGgxIHtmb250LXNpemU6IDNlbTt9 CiAgIGgyIHtmb250LXNpemU6IDJlbTt9CiAgIGgzIHtmb250LXNpemU6IDEuNWVtO30KICAg bGkgYSBjb2RlIHtmb250LXdlaWdodDogbm9ybWFsO30KICAgLnJlcXVpcmVkLCAud2Fybmlu ZyB7Y29sb3I6cmVkO30KIDwvc3R5bGU+CgoJPGgxIGlkPSJ0b3AiPlplbSBDb250YWN0IFJl Ym9ybjwvaDE+CgoJPHA+UGxlYXNlIHJlcG9ydHMgYnVncyBhbmQgcHJvYmxlbXMgd2l0aCB0 aGlzIHBsdWdpbiBpbiA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3Zp ZXd0b3BpYy5waHA/aWQ9MjM3MjgiPnRoaXMgZm9ydW0gdGhyZWFkPC9hPi48L3A+CgoJPHAg Y2xhc3M9InJlcXVpcmVkIj5UaGlzIHBsdWdpbiByZXF1aXJlcyBhIHNlcGFyYXRlIGxhbmd1 YWdlIHBsdWdpbiBjYWxsZWQgPGNvZGU+emVtX2NvbnRhY3RfbGFuZzwvY29kZT4gdG8gYmUg aW5zdGFsbGVkIGFuZCBhY3RpdmF0ZWQgdG8gd29yayBwcm9wZXJseS48L3A+CgoJPGgyIGlk PSJjb250ZW50cyI+Q29udGVudHM8L2gyPgoKCTx1bD4KCQk8bGk+PGEgaHJlZj0iI2ZlYXR1 cmVzIj5GZWF0dXJlczwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjc3RhcnQiPkdldHRpbmcg c3RhcnRlZDwvYT4KCTx1bD4KCQk8bGk+PGEgaHJlZj0iI2NvbnRhY3Rmb3JtIj5Db250YWN0 IGZvcm08L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3NlbmRhcnRpY2xlIj5TZW5kIGFydGlj bGU8L2E+PC9saT4KCTwvdWw+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3RhZ3MiPlRhZ3M8L2E+ Cgk8dWw+CgkJPGxpPjxhIGhyZWY9IiN6YyI+IDxjb2RlPiYjNjA7dHhwOnplbV9jb250YWN0 IC8mIzYyOzwvY29kZT4gPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiN6Y190ZXh0Ij4gPGNv ZGU+JiM2MDt0eHA6emVtX2NvbnRhY3RfdGV4dCAvJiM2Mjs8L2NvZGU+IDwvYT48L2xpPgoJ CTxsaT48YSBocmVmPSIjemNfZW1haWwiPiA8Y29kZT4mIzYwO3R4cDp6ZW1fY29udGFjdF9l bWFpbCAvJiM2Mjs8L2NvZGU+IDwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjemNfdGV4dGFy ZWEiPiA8Y29kZT4mIzYwO3R4cDp6ZW1fY29udGFjdF90ZXh0YXJlYSAvJiM2Mjs8L2NvZGU+ IDwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjemNfc3VibWl0Ij4gPGNvZGU+JiM2MDt0eHA6 emVtX2NvbnRhY3Rfc3VibWl0IC8mIzYyOzwvY29kZT4gPC9hPjwvbGk+CgkJPGxpPjxhIGhy ZWY9IiN6Y19zZWxlY3QiPiA8Y29kZT4mIzYwO3R4cDp6ZW1fY29udGFjdF9zZWxlY3QgLyYj NjI7PC9jb2RlPiA8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3pjX2NoZWNrYm94Ij4gPGNv ZGU+JiM2MDt0eHA6emVtX2NvbnRhY3RfY2hlY2tib3ggLyYjNjI7PC9jb2RlPiA8L2E+PC9s aT4KCQk8bGk+PGEgaHJlZj0iI3pjX3JhZGlvIj4gPGNvZGU+JiM2MDt0eHA6emVtX2NvbnRh Y3RfcmFkaW8gLyYjNjI7PC9jb2RlPiA8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3pjX3Nl Y3JldCI+IDxjb2RlPiYjNjA7dHhwOnplbV9jb250YWN0X3NlY3JldCAvJiM2Mjs8L2NvZGU+ IDwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjemNfc2VydmVyX2luZm8iPiA8Y29kZT4mIzYw O3R4cDp6ZW1fY29udGFjdF9zZXJ2ZXJpbmZvIC8mIzYyOzwvY29kZT4gPC9hPjwvbGk+CgkJ PGxpPjxhIGhyZWY9IiN6Y19zZW5kX2FydGljbGUiPiA8Y29kZT4mIzYwO3R4cDp6ZW1fY29u dGFjdF9zZW5kX2FydGljbGUgLyYjNjI7PC9jb2RlPiA8L2E+PC9saT4KCTwvdWw+PC9saT4K CQk8bGk+PGEgaHJlZj0iI2FkdmFuY2VkIj5BZHZhbmNlZCBleGFtcGxlczwvYT4KCTx1bD4K CQk8bGk+PGEgaHJlZj0iI3Nob3dfZXJyb3IiPlNlcGFyYXRlIGlucHV0IGFuZCBlcnJvciBm b3JtczwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjc3ViamVjdF9mb3JtIj5Vc2VyIHNlbGVj dGFibGUgc3ViamVjdCBmaWVsZDwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjdG9fZm9ybSI+ VXNlciBzZWxlY3RhYmxlIHJlY2lwaWVudCwgd2l0aG91dCBzaG93aW5nIGVtYWlsIGFkZHJl c3NlczwvYT48L2xpPgoJPC91bD48L2xpPgoJCTxsaT48YSBocmVmPSIjc3R5bGluZyI+U3R5 bGluZzwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjaGlzdG9yeSI+SGlzdG9yeTwvYT48L2xp PgoJCTxsaT48YSBocmVmPSIjY3JlZGl0cyI+Q3JlZGl0czwvYT48L2xpPgoJCTxsaT48YSBo cmVmPSIjYXBpIj5QbHVnaW4gPHNwYW4gY2xhc3M9ImNhcHMiPjxzcGFuIGNsYXNzPSJjYXBz Ij5BUEk8L3NwYW4+PC9zcGFuPiBhbmQgY2FsbGJhY2sgZXZlbnRzPC9hPjwvbGk+Cgk8L3Vs PgoKCTxoMiBpZD0iZmVhdHVyZXMiPkZlYXR1cmVzPC9oMj4KCgk8dWw+CgkJPGxpPkFyYml0 cmFyeSB0ZXh0IGZpZWxkcyBjYW4gYmUgc3BlY2lmaWVkLCB3aXRoIG1pbi9tYXgvcmVxdWly ZWQgc2V0dGluZ3MgZm9yIHZhbGlkYXRpb24uPC9saT4KCQk8bGk+RW1haWwgYWRkcmVzcyB2 YWxpZGF0aW9uLCBpbmNsdWRpbmcgYSBjaGVjayBmb3IgYSB2YWxpZCBNWCByZWNvcmQgKFVu aXggb25seSkuPC9saT4KCQk8bGk+U2FmZSBlc2NhcGluZyBvZiBpbnB1dCBkYXRhLjwvbGk+ CgkJPGxpPlVURi04IHNhZmUuPC9saT4KCQk8bGk+QWNjZXNzaWJsZSBmb3JtIGxheW91dCwg aW5jbHVkaW5nIDxjb2RlPiYjNjA7bGFiZWwmIzYyOzwvY29kZT4sIDxjb2RlPiYjNjA7bGVn ZW5kJiM2Mjs8L2NvZGU+IGFuZCA8Y29kZT4mIzYwO2ZpZWxkc2V0JiM2Mjs8L2NvZGU+IHRh Z3MuPC9saT4KCQk8bGk+VmFyaW91cyBjbGFzc2VzIGFuZCBpZHMgdG8gYWxsb3cgZWFzeSBz dHlsaW5nIG9mIGFsbCBwYXJ0cyBvZiB0aGUgZm9ybS48L2xpPgoJCTxsaT5BIHNlcGFyYXRl IGxhbmd1YWdlIHBsdWctaW4gdG8gZW5hYmxlIGVhc3kgbG9jYWxpc2F0aW9uLjwvbGk+CgkJ PGxpPlNwYW0gcHJldmVudGlvbiA8c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNh cHMiPkFQSTwvc3Bhbj48L3NwYW4+ICh1c2VkIGJ5IFRyYW5xdWlsbG8mIzgyMTc7cyA8Y29k ZT5wYXBfY29udGFjdF9jbGVhbmVyPC9jb2RlPiBwbHVnaW4pLjwvbGk+Cgk8L3VsPgoKCTxw PjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCgk8aDIgaWQ9InN0YXJ0Ij5H ZXR0aW5nIHN0YXJ0ZWQ8L2gyPgoKCTxoMyBpZD0iY29udGFjdGZvcm0iPkNvbnRhY3QgZm9y bTwvaDM+CgoJPHA+VGhlIHNpbXBsZXN0IGZvcm0gaXMgc2hvd24gYmVsb3csIHdoaWNoIHBy b2R1Y2VzIGEgZGVmYXVsdCBmb3JtIHdpdGggTmFtZSwgRW1haWwgYW5kIE1lc3NhZ2UgZmll bGRzLiBFbWFpbCB3aWxsIGJlIGRlbGl2ZXJlZCB0byByZWNpcGllbnRAZXhhbXBsZS5jb20s IHdpdGggdGhlIHVzZXImIzgyMTc7cyBzdXBwbGllZCBlbWFpbCBhcyB0aGUgJiM4MjIwO0Zy b206JiM4MjIxOyBhZGRyZXNzLjwvcD4KCjxwcmU+PGNvZGU+JiM2MDt0eHA6emVtX2NvbnRh Y3QgdG89JiMzNDtyZWNpcGllbnRAZXhhbXBsZS5jb20mIzM0OyAvJiM2MjsKPC9jb2RlPjwv cHJlPgoKCTxwPlRvIHNwZWNpZnkgZmllbGRzIGV4cGxpY2l0bHksIHVzZSBzb21ldGhpbmcg bGlrZSB0aGlzOjwvcD4KCjxwcmU+PGNvZGU+JiM2MDt0eHA6emVtX2NvbnRhY3QgdG89JiMz NDtyZWNpcGllbnRAZXhhbXBsZS5jb20mIzM0OyYjNjI7CiAgJiM2MDt0eHA6emVtX2NvbnRh Y3RfZW1haWwgLyYjNjI7CiAgJiM2MDt0eHA6emVtX2NvbnRhY3RfdGV4dCBsYWJlbD0mIzM0 O1Bob25lJiMzNDsgbWluPTcgbWF4PTE1LyYjNjI7CiAgJiM2MDt0eHA6emVtX2NvbnRhY3Rf dGV4dGFyZWEgbGFiZWw9JiMzNDtZb3VyIHF1ZXN0aW9uJiMzNDsgLyYjNjI7CiAgJiM2MDt0 eHA6emVtX2NvbnRhY3Rfc3VibWl0IGxhYmVsPSYjMzQ7U2VuZCYjMzQ7IC8mIzYyOwomIzYw Oy90eHA6emVtX2NvbnRhY3QmIzYyOwo8L2NvZGU+PC9wcmU+CgoJPHA+QWx0ZXJuYXRpdmVs eSwgcGxhY2UgdGhlIGZpZWxkIHNwZWNpZmljYXRpb25zIGluIGEgVGV4dHBhdHRlcm4gZm9y bSwgYW5kIGNhbGwgaXQgbGlrZSB0aGlzOjwvcD4KCjxwcmU+PGNvZGU+JiM2MDt0eHA6emVt X2NvbnRhY3QgdG89JiMzNDtyZWNpcGllbnRAZXhhbXBsZS5jb20mIzM0OyBmb3JtPSYjMzQ7 bXljb250YWN0Zm9ybSYjMzQ7IC8mIzYyOwo8L2NvZGU+PC9wcmU+CgoJPHA+PGEgaHJlZj0i I3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCTxoMyBpZD0ic2VuZGFydGljbGUiPlNlbmQg YXJ0aWNsZTwvaDM+CgoJPHA+V2l0aGluIHRoZSBjb250ZXh0IG9mIGFuIGluZGl2aWR1YWwg YXJ0aWNsZSwgdGhpcyBwbHVnaW4gY2FuIGJlIHVzZWQgdG8gc2VuZCB0aGUgYXJ0aWNsZSAo b3IgZXhjZXJwdCwgaWYgaXQgZXhpc3RzKSB0byBhbiBlbWFpbCBhZGRyZXNzIHNwZWNpZmll ZCBieSB0aGUgdmlzaXRvci4gVGhpcyByZXF1aXJlcyBhdCBsZWFzdCB0d28gdGFnczoKCTx1 bD4KCQk8bGk+PGNvZGU+emVtX2NvbnRhY3Q8L2NvZGU+LCB0byBjcmVhdGUgZm9ybSB0aGF0 IGlzIGluaXRpYWxseSBoaWRkZW4gYnkgc2V0dGluZyB0aGUgPGNvZGU+c2VuZF9hcnRpY2xl PC9jb2RlPiBhdHRyaWJ1dGUuPC9saT4KCQk8bGk+PGNvZGU+emVtX2NvbnRhY3Rfc2VuZF9h cnRpY2xlPC9jb2RlPiwgdG8gY3JlYXRlIGEgJiM4MjE2O3NlbmQgYXJ0aWNsZSYjODIxNzsg bGluayB3aGljaCByZXZlYWxzIHRoZSBhZm9yZW1lbnRpb25lZCBmb3JtIHdoZW4gY2xpY2tl ZC48L2xpPgoJPC91bD48L3A+Cgo8cHJlPjxjb2RlPiYjNjA7dHhwOnplbV9jb250YWN0IHNl bmRfYXJ0aWNsZT0mIzM0OzEmIzM0OyAvJiM2MjsKJiM2MDt0eHA6emVtX2NvbnRhY3Rfc2Vu ZF9hcnRpY2xlIC8mIzYyOwo8L2NvZGU+PC9wcmU+CgoJPHA+QnkgZGVmYXVsdCB0aGUgZm9y bSBjb250YWlucyBmaWVsZHMgZm9yIHlvdXIgbmFtZSBhbmQgZW1haWwgYWRkcmVzcywgdGhl IHJlY2lwaWVudCYjODIxNztzIGVtYWlsIGFkZHJlc3MgYW5kIGEgcGVyc29uYWwgbWVzc2Fn ZSwgYnV0IHNpbWlsYXIgdG8gY29udGFjdCBmb3JtcyB5b3UgY2FuIGNyZWF0ZSB5b3VyIG93 biBmb3JtIGxheW91dC4gU29tZSB0aGluZ3MgeW91IG5lZWQgdG8ga25vdzoKCTx1bD4KCQk8 bGk+U2V0IHRoZSA8Y29kZT5zZW5kX2FydGljbGU8L2NvZGU+IGF0dHJpYnV0ZSB0byA8Y29k ZT4xPC9jb2RlPiBpbiB0aGUgPGNvZGU+emVtX2NvbnRhY3Q8L2NvZGU+IHRhZy48L2xpPgoJ CTxsaT5Vc2UgYSA8Y29kZT56ZW1fY29udGFjdF9lbWFpbDwvY29kZT4gdGFnIHdpdGggdGhl IDxjb2RlPnNlbmRfYXJ0aWNsZTwvY29kZT4gYXR0cmlidXRlIHNldCB0byA8Y29kZT4xPC9j b2RlPi4gVGhpcyBmaWVsZCB3aWxsIGJlIHVzZWQgYXMgdGhlIHJlY2lwaWVudCBlbWFpbCBh ZGRyZXNzLjwvbGk+Cgk8L3VsPjwvcD4KCjxwcmU+PGNvZGU+JiM2MDt0eHA6emVtX2NvbnRh Y3QgdG89JiMzNDt5b3VAZXhhbXBsZS5jb20mIzM0OyBzZW5kX2FydGljbGU9JiMzNDsxJiMz NDsmIzYyOwogICYjNjA7dHhwOnplbV9jb250YWN0X2VtYWlsIGxhYmVsPSYjMzQ7UmVjaXBp ZW50IEVtYWlsJiMzNDsgc2VuZF9hcnRpY2xlPSYjMzQ7MSYjMzQ7IC8mIzYyOwogICYjNjA7 dHhwOnplbV9jb250YWN0X2VtYWlsIGxhYmVsPSYjMzQ7WW91ciBFbWFpbCYjMzQ7IC8mIzYy OwogICYjNjA7dHhwOnplbV9jb250YWN0X3N1Ym1pdCBsYWJlbD0mIzM0O1NlbmQgQXJ0aWNs ZSYjMzQ7IC8mIzYyOwomIzYwOy90eHA6emVtX2NvbnRhY3QmIzYyOwo8L2NvZGU+Cjxjb2Rl PiYjNjA7dHhwOnplbV9jb250YWN0X3NlbmRfYXJ0aWNsZSAvJiM2MjsKPC9jb2RlPjwvcHJl PgoKCTxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCgk8aDIgaWQ9InRh Z3MiPlRhZ3M8L2gyPgoKCTxwPjxhIGhyZWY9IiN6YyI+PGNvZGU+JiM2MDt0eHA6emVtX2Nv bnRhY3QgLyYjNjI7PC9jb2RlPjwvYT4gcHJvZHVjZXMgYSBmbGV4aWJsZSwgY3VzdG9taXNh YmxlIGVtYWlsIGNvbnRhY3QgZm9ybS4gSXQgaXMgaW50ZW5kZWQgZm9yIHVzZSBhcyBhbiBl bnF1aXJ5IGZvcm0gZm9yIGNvbW1lcmNpYWwgYW5kIHByaXZhdGUgc2l0ZXMsIGFuZCBpbmNs dWRlcyBzZXZlcmFsIGZlYXR1cmVzIHRvIGhlbHAgcmVkdWNlIGNvbW1vbiBwcm9ibGVtcyB3 aXRoIHN1Y2ggZm9ybXMgKGludmFsaWQgZW1haWwgYWRkcmVzc2VzLCBtaXNzaW5nIGluZm9y bWF0aW9uKS48L3A+CgoJPHA+PGEgaHJlZj0iI3pjX3NlbmRfYXJ0aWNsZSI+PGNvZGU+JiM2 MDt0eHA6emVtX2NvbnRhY3Rfc2VuZF9hcnRpY2xlIC8mIzYyOzwvY29kZT48L2E+IGNhbiBi ZSB1c2VkIHRvIGNyZWF0ZSBhICYjODIyMDtzZW5kIGFydGljbGUmIzgyMjE7IGxpbmsgd2l0 aGluIGFuIGFydGljbGUgZm9ybSwgY29ubmVjdGluZyBpdCB0byB0aGUgY29udGFjdCBmb3Jt LjwvcD4KCgk8cD5BbGwgb3RoZXIgdGFncyBwcm92aWRlZCBieSB0aGlzIHBsdWdpbiBjYW4g b25seSBiZSB1c2VkIGluc2lkZSBhIDxjb2RlPiYjNjA7dHhwOnplbV9jb250YWN0JiM2Mjs8 L2NvZGU+ICYjODIzMDsgPGNvZGU+JiM2MDsvdHhwOnplbV9jb250YWN0JiM2Mjs8L2NvZGU+ IGNvbnRhaW5lciB0YWcgb3IgaW4gYSBUZXh0cGF0dGVybiBmb3JtIHVzZWQgYXMgdGhlIDxj b2RlPmZvcm08L2NvZGU+IGF0dHJpYnV0ZSBpbiB0aGUgPGNvZGU+JiM2MDt0eHA6emVtX2Nv bnRhY3QgLyYjNjI7PC9jb2RlPiB0YWcuPC9wPgoKCTxwPjxhIGhyZWY9IiN0b3AiPkJhY2sg dG8gdG9wPC9hPjwvcD4KCgk8aDMgaWQ9InpjIj48Y29kZT4mIzYwO3R4cDp6ZW1fY29udGFj dCAvJiM2Mjs8L2NvZGU+PC9oMz4KCgk8cD5NYXkgYmUgdXNlZCBhcyBhIHNlbGYtY2xvc2lu ZyBvciBjb250YWluZXIgdGFnLiBQbGFjZSB0aGlzIHdoZXJlIHlvdSB3YW50IHRoZSBpbnB1 dCBmb3JtIHRvIGdvLiBTdGF0dXMgYW5kIGVycm9yIG1lc3NhZ2VzLCBpZiBhbnksIHdpbGwg YmUgZGlzcGxheWVkIGJlZm9yZSB0aGUgZm9ybS48L3A+CgoJPGg0PkF0dHJpYnV0ZXM8L2g0 PgoKCTx1bD4KCQk8bGk+PGNvZGU+dG89JiMzNDtlbWFpbCBhZGRyZXNzJiMzNDs8L2NvZGU+ IDxzcGFuIGNsYXNzPSJyZXF1aXJlZCI+cmVxdWlyZWQ8L3NwYW4+PGJyIC8+ClJlY2lwaWVu dCBlbWFpbCBhZGRyZXNzLjwvbGk+CgkJPGxpPjxjb2RlPnRvX2Zvcm09JiMzNDtmb3JtIG5h bWUmIzM0OzwvY29kZT48YnIgLz4KVXNlIHNwZWNpZmllZCBmb3JtIChvdmVycmlkZXMgPHN0 cm9uZz50bzwvc3Ryb25nPiBhdHRyaWJ1dGUpLjwvbGk+Cgk8L3VsPgoKCTx1bD4KCQk8bGk+ PGNvZGU+ZnJvbT0mIzM0O2VtYWlsIGFkZHJlc3MmIzM0OzwvY29kZT48YnIgLz4KRW1haWwg YWRkcmVzcyB1c2VkIGluIHRoZSAmIzgyMjA7RnJvbTomIzgyMjE7IGZpZWxkIHdoZW4gc2Vu ZGluZyBlbWFpbC4gRGVmYXVsdHMgdG8gdGhlIHNlbmRlciYjODIxNztzIGVtYWlsIGFkZHJl c3MuIElmIHNwZWNpZmllZCwgdGhlIHNlbmRlciYjODIxNztzIGVtYWlsIGFkZHJlc3Mgd2ls bCBiZSBwbGFjZWQgaW4gdGhlICYjODIyMDtSZXBseS1UbzomIzgyMjE7IGZpZWxkIGluc3Rl YWQuPC9saT4KCQk8bGk+PGNvZGU+ZnJvbV9mb3JtPSYjMzQ7Zm9ybSBuYW1lJiMzNDs8L2Nv ZGU+PGJyIC8+ClVzZSBzcGVjaWZpZWQgZm9ybSAob3ZlcnJpZGVzIDxzdHJvbmc+ZnJvbTwv c3Ryb25nPiBhdHRyaWJ1dGUpLjwvbGk+Cgk8L3VsPgoKCTx1bD4KCQk8bGk+PGNvZGU+c3Vi amVjdD0mIzM0O3N1YmplY3QgdGV4dCYjMzQ7PC9jb2RlPjxiciAvPgpTdWJqZWN0IHVzZWQg d2hlbiBzZW5kaW5nIGFuIGVtYWlsLiBEZWZhdWx0IGlzIHRoZSBzaXRlIG5hbWUuPC9saT4K CQk8bGk+PGNvZGU+c3ViamVjdF9mb3JtPSYjMzQ7Zm9ybSBuYW1lJiMzNDs8L2NvZGU+PGJy IC8+ClVzZSBzcGVjaWZpZWQgZm9ybSAob3ZlcnJpZGVzIDxzdHJvbmc+c3ViamVjdDwvc3Ry b25nPiBhdHRyaWJ1dGUpLjwvbGk+Cgk8L3VsPgoKCTx1bD4KCQk8bGk+PGNvZGU+dGhhbmtz PSYjMzQ7dGV4dCYjMzQ7PC9jb2RlPjxiciAvPgpNZXNzYWdlIHNob3duIGFmdGVyIHN1Y2Nl c3NmdWxseSBzdWJtaXR0aW5nIGEgbWVzc2FnZS4gRGVmYXVsdCBpcyA8c3Ryb25nPlRoYW5r IHlvdSwgeW91ciBtZXNzYWdlIGhhcyBiZWVuIHNlbnQ8L3N0cm9uZz4uPC9saT4KCQk8bGk+ PGNvZGU+dGhhbmtzX2Zvcm09JiMzNDtmb3JtIG5hbWUmIzM0OzwvY29kZT48YnIgLz4KVXNl IHNwZWNpZmllZCBmb3JtIChvdmVycmlkZXMgPHN0cm9uZz50aGFua3M8L3N0cm9uZz4gYXR0 cmlidXRlKS48L2xpPgoJCTxsaT48Y29kZT5yZWRpcmVjdD0mIzM0O1VSTCYjMzQ7PC9jb2Rl PjxiciAvPgpSZWRpcmVjdCB0byBzcGVjaWZpZWQgPHNwYW4gY2xhc3M9ImNhcHMiPjxzcGFu IGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+PC9zcGFuPiAob3ZlcnJpZGVzIDxzdHJvbmc+dGhh bmtzPC9zdHJvbmc+IGFuZCA8c3Ryb25nPnRoYW5rc19mb3JtPC9zdHJvbmc+IGF0dHJpYnV0 ZXMpLiA8c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj48 L3NwYW4+IG11c3QgYmUgcmVsYXRpdmUgdG8gdGhlIFRleHRwYXR0ZXJuIFNpdGUgPHNwYW4g Y2xhc3M9ImNhcHMiPjxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+PC9zcGFuPi4gRXhh bXBsZTogPGVtPnJlZGlyZWN0PSYjODIyMDttb25rZXkmIzgyMjE7PC9lbT4gd291bGQgcmVk aXJlY3QgdG8gaHR0cDovL2V4YW1wbGUuY29tL21vbmtleS48L2xpPgoJPC91bD4KCgk8dWw+ CgkJPGxpPjxjb2RlPmxhYmVsPSYjMzQ7dGV4dCYjMzQ7PC9jb2RlPjxiciAvPgpMYWJlbCBm b3IgdGhlIGNvbnRhY3QgZm9ybS4gSWYgc2V0IHRvIGFuIGVtcHR5IHN0cmluZywgZGlzcGxh eSBvZiB0aGUgZmllbGRzZXQgYW5kIGxlZ2VuZCB0YWdzIHdpbGwgYmUgc3VwcHJlc3NlZC4g RGVmYXVsdCBpcyA8c3Ryb25nPkNvbnRhY3Q8L3N0cm9uZz4uPC9saT4KCQk8bGk+PGNvZGU+ c2VuZF9hcnRpY2xlPSYjMzQ7Ym9vbGVhbiYjMzQ7PC9jb2RlPjxiciAvPgpXaGV0aGVyIHRv IHVzZSB0aGlzIGZvcm0gdG8gPGEgaHJlZj0iI2FydGljbGUiPnNlbmQgYW4gYXJ0aWNsZTwv YT4uIEF2YWlsYWJsZSB2YWx1ZXM6IDxzdHJvbmc+MTwvc3Ryb25nPiAoeWVzKSwgPHN0cm9u Zz4wPC9zdHJvbmc+IChubykuIERlZmF1bHQgaXMgPHN0cm9uZz4wPC9zdHJvbmc+IChubyku PC9saT4KCQk8bGk+PGNvZGU+Y29weXNlbmRlcj0mIzM0O2Jvb2xlYW4mIzM0OzwvY29kZT48 YnIgLz4KV2hldGhlciB0byBzZW5kIGEgY29weSBvZiB0aGUgZW1haWwgdG8gdGhlIHNlbmRl ciYjODIxNztzIGFkZHJlc3MuIEF2YWlsYWJsZSB2YWx1ZXM6IDxzdHJvbmc+MTwvc3Ryb25n PiAoeWVzKSwgPHN0cm9uZz4wPC9zdHJvbmc+IChubykuIERlZmF1bHQgaXMgPHN0cm9uZz4w PC9zdHJvbmc+IChubykuPC9saT4KCTwvdWw+CgoJPHVsPgoJCTxsaT48Y29kZT5mb3JtPSYj MzQ7Zm9ybSBuYW1lJiMzNDs8L2NvZGU+PGJyIC8+ClVzZSBzcGVjaWZpZWQgZm9ybSwgY29u dGFpbmluZyB0aGUgbGF5b3V0IG9mIHRoZSBjb250YWN0IGZvcm0gZmllbGRzLjwvbGk+CgkJ PGxpPjxjb2RlPnNob3dfaW5wdXQ9JiMzNDtib29sZWFuJiMzNDs8L2NvZGU+PGJyIC8+CiBX aGV0aGVyIHRvIGRpc3BsYXkgdGhlIGZvcm0gaW5wdXQgZmllbGRzLiBBdmFpbGFibGUgdmFs dWVzOiA8c3Ryb25nPjE8L3N0cm9uZz4gKHllcyksIDxzdHJvbmc+MDwvc3Ryb25nPiAobm8p LiBEZWZhdWx0IGlzIDxzdHJvbmc+MTwvc3Ryb25nPiAoeWVzKS48L2xpPgoJCTxsaT48Y29k ZT5zaG93X2Vycm9yPSYjMzQ7Ym9vbGVhbiYjMzQ7PC9jb2RlPjxiciAvPgogV2hldGhlciB0 byBkaXNwbGF5IGVycm9yIGFuZCBzdGF0dXMgbWVzc2FnZXMuIEF2YWlsYWJsZSB2YWx1ZXM6 IDxzdHJvbmc+MTwvc3Ryb25nPiAoeWVzKSwgPHN0cm9uZz4wPC9zdHJvbmc+IChubykuIERl ZmF1bHQgaXMgPHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLjwvbGk+Cgk8L3VsPgoKCTxoND5F eGFtcGxlczwvaDQ+CgoJPHA+U2VlIDxhIGhyZWY9IiNjb250YWN0Zm9ybSI+R2V0dGluZyBz dGFydGVkPC9hPiBhbmQgPGEgaHJlZj0iI2FkdmFuY2VkIj5BZHZhbmNlZCBleGFtcGxlczwv YT4uPC9wPgoKCTxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCgk8aDMg aWQ9InpjX3RleHQiPjxjb2RlPiYjNjA7dHhwOnplbV9jb250YWN0X3RleHQgLyYjNjI7PC9j b2RlPjwvaDM+CgoJPHA+Q3JlYXRlcyBhIHRleHQgaW5wdXQgZmllbGQgYW5kIGNvcnJlc3Bv bmRpbmcgPGNvZGU+JiM2MDtsYWJlbCYjNjI7PC9jb2RlPiB0YWcuIFRoZSBpbnB1dCB2YWx1 ZSB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBlbWFpbCwgcHJlY2VkZWQgYnkgdGhlIGxhYmVs LjwvcD4KCgk8aDQ+QXR0cmlidXRlczwvaDQ+CgoJPHVsPgoJCTxsaT48Y29kZT5sYWJlbD0m IzM0O3RleHQmIzM0OzwvY29kZT48YnIgLz4KVGV4dCBsYWJlbCBkaXNwbGF5ZWQgdG8gdGhl IHVzZXIuIERlZmF1bHQgaXMgPHN0cm9uZz5UZXh0PC9zdHJvbmc+LjwvbGk+CgkJPGxpPjxj b2RlPm5hbWU9JiMzNDt2YWx1ZSYjMzQ7PC9jb2RlPjxiciAvPgpGaWVsZCBuYW1lLCBhcyB1 c2VkIGluIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8 L3NwYW4+PC9zcGFuPiBpbnB1dCB0YWcuPC9saT4KCQk8bGk+PGNvZGU+YnJlYWs9JiMzNDt0 YWcmIzM0OzwvY29kZT48YnIgLz4KQnJlYWsgdGFnIGJldHdlZW4gdGhlIGxhYmVsIGFuZCBp bnB1dCBmaWVsZC4gRGVmYXVsdCBpcyA8Y29kZT4mIzYwO2JyIC8mIzYyOzwvY29kZT4uIFVz ZSA8Y29kZT5icmVhaz0mIzM0OyYjMzQ7PC9jb2RlPiB0byBwdXQgdGhlIGxhYmVsIGFuZCBp bnB1dCBmaWVsZCBvbiB0aGUgc2FtZSBsaW5lLjwvbGk+CgkJPGxpPjxjb2RlPmRlZmF1bHQ9 JiMzNDt2YWx1ZSYjMzQ7PC9jb2RlPjxiciAvPgpEZWZhdWx0IHZhbHVlIHdoZW4gbm8gaW5w dXQgaXMgcHJvdmlkZWQuPC9saT4KCQk8bGk+PGNvZGU+bWluPSYjMzQ7aW50ZWdlciYjMzQ7 PC9jb2RlPjxiciAvPgpNaW5pbXVtIGlucHV0IGxlbmd0aCBpbiBjaGFyYWN0ZXJzLiBEZWZh dWx0IGlzIDxzdHJvbmc+MDwvc3Ryb25nPi48L2xpPgoJCTxsaT48Y29kZT5tYXg9JiMzNDtp bnRlZ2VyJiMzNDs8L2NvZGU+PGJyIC8+Ck1heGltdW0gaW5wdXQgbGVuZ3RoIGluIGNoYXJh Y3RlcnMuIERlZmF1bHQgaXMgPHN0cm9uZz4xMDA8L3N0cm9uZz4uPC9saT4KCQk8bGk+PGNv ZGU+c2l6ZT0mIzM0O2ludGVnZXImIzM0OzwvY29kZT48YnIgLz4KU2l6ZSBvZiB0aGUgaW5w dXQgZmllbGQgYXMgZGlzcGxheWVkIHRvIHRoZSB1c2VyLjwvbGk+CgkJPGxpPjxjb2RlPnJl cXVpcmVkPSYjMzQ7Ym9vbGVhbiYjMzQ7PC9jb2RlPjxiciAvPgpXaGV0aGVyIHRoaXMgdGV4 dCBmaWVsZCBtdXN0IGJlIGZpbGxlZCBvdXQuIEF2YWlsYWJsZSB2YWx1ZXM6IDxzdHJvbmc+ MTwvc3Ryb25nPiAoeWVzKSwgPHN0cm9uZz4wPC9zdHJvbmc+IChubykuIERlZmF1bHQgaXMg PHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLjwvbGk+Cgk8L3VsPgoKCTxoND5FeGFtcGxlPC9o ND4KCjxwcmU+PGNvZGU+JiM2MDt0eHA6emVtX2NvbnRhY3RfdGV4dCBsYWJlbD0mIzM0O1lv dXIgbmFtZSYjMzQ7IC8mIzYyOwo8L2NvZGU+PC9wcmU+CgoJPHA+PGEgaHJlZj0iI3RvcCI+ QmFjayB0byB0b3A8L2E+PC9wPgoKCTxoMyBpZD0iemNfZW1haWwiPjxjb2RlPiYjNjA7dHhw OnplbV9jb250YWN0X2VtYWlsIC8mIzYyOzwvY29kZT48L2gzPgoKCTxwPklucHV0IGZpZWxk IGZvciB1c2VyJiM4MjE3O3MgZW1haWwgYWRkcmVzcy48L3A+CgoJPHA+VGhlIGVudGVyZWQg ZW1haWwgYWRkcmVzcyB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgdmFsaWRhdGVkIHRvIG1ha2Ug c3VyZSBpdCBpcyBvZiB0aGUgZm9ybSAmIzgyMjA7YWJjQHh4eC55eXlbLnp6el0mIzgyMjE7 LiBPbiBub24tV2luZG93cyBzZXJ2ZXJzLCBhIHRlc3Qgd2lsbCBiZSBkb25lIHRvIHZlcmlm eSB0aGF0IGFuIEEgb3IgTVggcmVjb3JkIGV4aXN0cyBmb3IgdGhlIGRvbWFpbi4gTmVpdGhl ciB0ZXN0IHByZXZlbnRzIHNwYW0sIGJ1dCBpdCBkb2VzIGhlbHAgZGV0ZWN0aW5nIGFjY2lk ZW50YWwgdHlwaW5nIGVycm9ycy48L3A+CgoJPGg0PkF0dHJpYnV0ZXM8L2g0PgoKCTx1bD4K CQk8bGk+PGNvZGU+bGFiZWw9JiMzNDt0ZXh0JiMzNDs8L2NvZGU+PGJyIC8+ClRleHQgbGFi ZWwgZGlzcGxheWVkIHRvIHRoZSB1c2VyLiBEZWZhdWx0IGlzIDxzdHJvbmc+RW1haWw8L3N0 cm9uZz4uPC9saT4KCQk8bGk+PGNvZGU+bmFtZT0mIzM0O3ZhbHVlJiMzNDs8L2NvZGU+PGJy IC8+CkZpZWxkIG5hbWUsIGFzIHVzZWQgaW4gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj48c3Bh biBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj48L3NwYW4+IGlucHV0IHRhZy48L2xpPgoJCTxs aT48Y29kZT5icmVhaz0mIzM0O3RhZyYjMzQ7PC9jb2RlPjxiciAvPgpCcmVhayB0YWcgYmV0 d2VlbiB0aGUgbGFiZWwgYW5kIGlucHV0IGZpZWxkLiBEZWZhdWx0IGlzIDxjb2RlPiYjNjA7 YnIgLyYjNjI7PC9jb2RlPi4gVXNlIDxjb2RlPmJyZWFrPSYjMzQ7JiMzNDs8L2NvZGU+IHRv IHB1dCB0aGUgbGFiZWwgYW5kIGlucHV0IGZpZWxkIG9uIHRoZSBzYW1lIGxpbmUuPC9saT4K CQk8bGk+PGNvZGU+ZGVmYXVsdD0mIzM0O3ZhbHVlJiMzNDs8L2NvZGU+PGJyIC8+CkRlZmF1 bHQgdmFsdWUgd2hlbiBubyBpbnB1dCBpcyBwcm92aWRlZC48L2xpPgoJCTxsaT48Y29kZT5t aW49JiMzNDtpbnRlZ2VyJiMzNDs8L2NvZGU+PGJyIC8+Ck1pbmltdW0gaW5wdXQgbGVuZ3Ro IGluIGNoYXJhY3RlcnMuIERlZmF1bHQgaXMgPHN0cm9uZz4wPC9zdHJvbmc+LjwvbGk+CgkJ PGxpPjxjb2RlPm1heD0mIzM0O2ludGVnZXImIzM0OzwvY29kZT48YnIgLz4KTWF4aW11bSBp bnB1dCBsZW5ndGggaW4gY2hhcmFjdGVycy4gRGVmYXVsdCBpcyA8c3Ryb25nPjEwMDwvc3Ry b25nPi48L2xpPgoJCTxsaT48Y29kZT5zaXplPSYjMzQ7aW50ZWdlciYjMzQ7PC9jb2RlPjxi ciAvPgpTaXplIG9mIHRoZSBpbnB1dCBmaWVsZCBhcyBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIu PC9saT4KCQk8bGk+PGNvZGU+cmVxdWlyZWQ9JiMzNDtib29sZWFuJiMzNDs8L2NvZGU+PGJy IC8+CldoZXRoZXIgdGhpcyB0ZXh0IGZpZWxkIG11c3QgYmUgZmlsbGVkIG91dC4gQXZhaWxh YmxlIHZhbHVlczogPHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLCA8c3Ryb25nPjA8L3N0cm9u Zz4gKG5vKS4gRGVmYXVsdCBpcyA8c3Ryb25nPjE8L3N0cm9uZz4gKHllcykuPC9saT4KCQk8 bGk+PGNvZGU+c2VuZF9hcnRpY2xlPSYjMzQ7Ym9vbGVhbiYjMzQ7PC9jb2RlPjxiciAvPgpX aGV0aGVyIHRoaXMgZmllbGQgaXMgdXNlZCBhcyB0aGUgcmVjaXBpZW50IGVtYWlsIGFkZHJl c3Mgd2hlbiB1c2luZyB0aGUgc2VuZF9hcnRpY2xlIGZ1bmN0aW9uLiBBdmFpbGFibGUgdmFs dWVzOiA8c3Ryb25nPjE8L3N0cm9uZz4gKHllcyksIDxzdHJvbmc+MDwvc3Ryb25nPiAobm8p LiBEZWZhdWx0IGlzIDxzdHJvbmc+MDwvc3Ryb25nPiAobm8pLjwvbGk+Cgk8L3VsPgoKCTxo ND5FeGFtcGxlPC9oND4KCjxwcmU+PGNvZGU+JiM2MDt0eHA6emVtX2NvbnRhY3RfZW1haWwg bGFiZWw9JiMzNDtZb3VyIGVtYWlsIGFkZHJlc3MmIzM0OyAvJiM2MjsKPC9jb2RlPjwvcHJl PgoKCTxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCgk8aDMgaWQ9Inpj X3RleHRhcmVhIj48Y29kZT4mIzYwO3R4cDp6ZW1fY29udGFjdF90ZXh0YXJlYSAvJiM2Mjs8 L2NvZGU+PC9oMz4KCgk8cD5DcmVhdGVzIGEgdGV4dGFyZWEuPC9wPgoKCTxoND5BdHRyaWJ1 dGVzPC9oND4KCgk8dWw+CgkJPGxpPjxjb2RlPmxhYmVsPSYjMzQ7dGV4dCYjMzQ7PC9jb2Rl PjxiciAvPgpUZXh0IGxhYmVsIGRpc3BsYXllZCB0byB0aGUgdXNlci4gRGVmYXVsdCBpcyA8 c3Ryb25nPk1lc3NhZ2U8L3N0cm9uZz4uPC9saT4KCQk8bGk+PGNvZGU+bmFtZT0mIzM0O3Zh bHVlJiMzNDs8L2NvZGU+PGJyIC8+CkZpZWxkIG5hbWUsIGFzIHVzZWQgaW4gdGhlIDxzcGFu IGNsYXNzPSJjYXBzIj48c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj48L3NwYW4+IGlu cHV0IHRhZy48L2xpPgoJCTxsaT48Y29kZT5icmVhaz0mIzM0O3RhZyYjMzQ7PC9jb2RlPjxi ciAvPgpCcmVhayB0YWcgYmV0d2VlbiB0aGUgbGFiZWwgYW5kIGlucHV0IGZpZWxkLiBEZWZh dWx0IGlzIDxjb2RlPiYjNjA7YnIgLyYjNjI7PC9jb2RlPi4gVXNlIDxjb2RlPmJyZWFrPSYj MzQ7JiMzNDs8L2NvZGU+IHRvIHB1dCB0aGUgbGFiZWwgYW5kIGlucHV0IGZpZWxkIG9uIHRo ZSBzYW1lIGxpbmUuPC9saT4KCQk8bGk+PGNvZGU+ZGVmYXVsdD0mIzM0O3ZhbHVlJiMzNDs8 L2NvZGU+PGJyIC8+CkRlZmF1bHQgdmFsdWUgd2hlbiBubyBpbnB1dCBpcyBwcm92aWRlZC48 L2xpPgoJCTxsaT48Y29kZT5jb2xzPSYjMzQ7aW50ZWdlciYjMzQ7PC9jb2RlPjxiciAvPgpD b2x1bW4gd2lkdGguIERlZmF1bHQgaXMgPHN0cm9uZz41ODwvc3Ryb25nPi48L2xpPgoJCTxs aT48Y29kZT5yb3dzPSYjMzQ7aW50ZWdlciYjMzQ7PC9jb2RlPjxiciAvPgpSb3cgaGVpZ2h0 LiBEZWZhdWx0IGlzIDxzdHJvbmc+ODwvc3Ryb25nPi48L2xpPgoJCTxsaT48Y29kZT5taW49 JiMzNDtpbnRlZ2VyJiMzNDs8L2NvZGU+PGJyIC8+Ck1pbmltdW0gaW5wdXQgbGVuZ3RoIGlu IGNoYXJhY3RlcnMuIERlZmF1bHQgaXMgPHN0cm9uZz4wPC9zdHJvbmc+LjwvbGk+CgkJPGxp Pjxjb2RlPm1heD0mIzM0O2ludGVnZXImIzM0OzwvY29kZT48YnIgLz4KTWF4aW11bSBpbnB1 dCBsZW5ndGggaW4gY2hhcmFjdGVycy4gRGVmYXVsdCBpcyA8c3Ryb25nPjEwMDAwPC9zdHJv bmc+LjwvbGk+CgkJPGxpPjxjb2RlPnJlcXVpcmVkPSYjMzQ7Ym9vbGVhbiYjMzQ7PC9jb2Rl PjxiciAvPgpXaGV0aGVyIHRoaXMgdGV4dCBmaWVsZCBtdXN0IGJlIGZpbGxlZCBvdXQuIEF2 YWlsYWJsZSB2YWx1ZXM6IDxzdHJvbmc+MTwvc3Ryb25nPiAoeWVzKSwgPHN0cm9uZz4wPC9z dHJvbmc+IChubykuIERlZmF1bHQgaXMgPHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLjwvbGk+ Cgk8L3VsPgoKCTxoND5FeGFtcGxlPC9oND4KCgk8cD5UZXh0YXJlYSB0aGF0IGlzIDQwIGNo YXJzIHdpZGUsIDEwIGxpbmVzIGhpZ2gsIHdpdGggYSBjdXN0b21pemVkIGxhYmVsOjwvcD4K CjxwcmU+PGNvZGU+JiM2MDt0eHA6emVtX2NvbnRhY3RfdGV4dGFyZWEgY29scz0mIzM0OzQw JiMzNDsgcm93cz0mIzM0OzEwJiMzNDsgbGFiZWw9JiMzNDtZb3VyIHF1ZXN0aW9uJiMzNDsg LyYjNjI7CjwvY29kZT48L3ByZT4KCgk8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwv YT48L3A+CgoJPGgzIGlkPSJ6Y19zdWJtaXQiPjxjb2RlPiYjNjA7dHhwOnplbV9jb250YWN0 X3N1Ym1pdCAvJiM2Mjs8L2NvZGU+PC9oMz4KCgk8cD5DcmVhdGVzIGEgc3VibWl0IGJ1dHRv bi48YnIgLz4KV2hlbiB1c2VkIGFzIGEgY29udGFpbmVyIHRhZywgYSAmIzgyMjA7YnV0dG9u JiM4MjIxOyBlbGVtZW50IHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIGFuICYjODIyMDtpbnB1 dCYjODIyMTsgZWxlbWVudC48L3A+CgoJPGg0PkF0dHJpYnV0ZXM6PC9oND4KCgk8dWw+CgkJ PGxpPjxjb2RlPmxhYmVsPSYjMzQ7dGV4dCYjMzQ7PC9jb2RlPjxiciAvPgpUZXh0IHNob3du IG9uIHRoZSBzdWJtaXQgYnV0dG9uLiBEZWZhdWx0IGlzICYjODIyMDtTZW5kJiM4MjIxOy48 L2xpPgoJCTxsaT48Y29kZT5idXR0b249JiMzNDtib29sZWFuJiMzNDs8L2NvZGU+PGJyIC8+ CjxlbT5EZXByZWNhdGVkLiBVc2UgYSBjb250YWluZXIgdGFnIGlmIHlvdSB3YW50IGEgYnV0 dG9uIGVsZW1lbnQuPC9lbT48L2xpPgoJPC91bD4KCgk8aDQ+RXhhbXBsZXM8L2g0PgoKCTxw PlN0YW5kYXJkIHN1Ym1pdCBidXR0b246PC9wPgoKPHByZT48Y29kZT4mIzYwO3R4cDp6ZW1f Y29udGFjdF9zdWJtaXQgLyYjNjI7CjwvY29kZT48L3ByZT4KCgk8cD5TdWJtaXQgYnV0dG9u IHdpdGggeW91ciBvd24gdGV4dDo8L3A+Cgo8cHJlPjxjb2RlPiYjNjA7dHhwOnplbV9jb250 YWN0X3N1Ym1pdCBsYWJlbD0mIzM0O1NlbmQmIzM0OyAvJiM2MjsKPC9jb2RlPjwvcHJlPgoK CTxwPlVzYWdlIGFzIGEgY29udGFpbmVyIHRhZywgd2hpY2ggYWxsb3dzIHlvdSB0byB1c2Ug VGV4dHBhdHRlcm4gdGFncyBhbmQgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IG1h cmt1cCBpbiB0aGUgc3VibWl0IGJ1dHRvbjo8L3A+Cgo8cHJlPjxjb2RlPiYjNjA7dHhwOnpl bV9jb250YWN0X3N1Ym1pdCYjNjI7JiM2MDtzdHJvbmcmIzYyO1NlbmQmIzYwOy9zdHJvbmcm IzYyOyBxdWVzdGlvbiYjNjA7L3R4cDp6ZW1fY29udGFjdF9zdWJtaXQmIzYyOwo8L2NvZGU+ PC9wcmU+Cgo8cHJlPjxjb2RlPiYjNjA7dHhwOnplbV9jb250YWN0X3N1Ym1pdCYjNjI7JiM2 MDtpbWcgc3JjPSYjMzQ7cGF0aC90by9pbWcucG5nJiMzNDsgYWx0PSYjMzQ7c3VibWl0JiMz NDsmIzYyOyYjNjA7L3R4cDp6ZW1fY29udGFjdF9zdWJtaXQmIzYyOwo8L2NvZGU+PC9wcmU+ CgoJPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCTxoMyBpZD0iemNf c2VsZWN0Ij48Y29kZT4mIzYwO3R4cDp6ZW1fY29udGFjdF9zZWxlY3QgLyYjNjI7PC9jb2Rl PjwvaDM+CgoJPHA+Q3JlYXRlcyBhIGRyb3AtZG93biBzZWxlY3Rpb24gbGlzdC48L3A+CgoJ PGg0PkF0dHJpYnV0ZXM8L2g0PgoKCTx1bD4KCQk8bGk+PGNvZGU+bGlzdD0mIzM0O2NvbW1h LXNlcGFyYXRlZCB2YWx1ZXMmIzM0OzwvY29kZT4gPHNwYW4gY2xhc3M9InJlcXVpcmVkIj5y ZXF1aXJlZDwvc3Bhbj48YnIgLz4KTGlzdCBvZiBpdGVtcyB0byBzaG93IGluIHRoZSBzZWxl Y3QgYm94LjwvbGk+CgkJPGxpPjxjb2RlPnNlbGVjdGVkPSYjMzQ7dmFsdWUmIzM0OzwvY29k ZT48YnIgLz4KTGlzdCBpdGVtIHRoYXQgaXMgc2VsZWN0ZWQgYnkgZGVmYXVsdC48L2xpPgoJ CTxsaT48Y29kZT5sYWJlbD0mIzM0O3RleHQmIzM0OzwvY29kZT48YnIgLz4KVGV4dCBsYWJl bCBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuIERlZmF1bHQgaXMgPHN0cm9uZz5PcHRpb248L3N0 cm9uZz4uPC9saT4KCQk8bGk+PGNvZGU+bmFtZT0mIzM0O3ZhbHVlJiMzNDs8L2NvZGU+PGJy IC8+CkZpZWxkIG5hbWUsIGFzIHVzZWQgaW4gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj48c3Bh biBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj48L3NwYW4+IGlucHV0IHRhZy48L2xpPgoJCTxs aT48Y29kZT5icmVhaz0mIzM0O3RhZyYjMzQ7PC9jb2RlPjxiciAvPgpCcmVhayB0YWcgYmV0 d2VlbiB0aGUgbGFiZWwgYW5kIGlucHV0IGZpZWxkLiBEZWZhdWx0IGlzIDxjb2RlPiYjNjA7 YnIgLyYjNjI7PC9jb2RlPi4gVXNlIDxjb2RlPmJyZWFrPSYjMzQ7JiMzNDs8L2NvZGU+IHRv IHB1dCB0aGUgbGFiZWwgYW5kIGlucHV0IGZpZWxkIG9uIHRoZSBzYW1lIGxpbmUuPC9saT4K CQk8bGk+PGNvZGU+ZGVsaW1pdGVyPSYjMzQ7Y2hhcmFjdGVyJiMzNDs8L2NvZGU+PGJyIC8+ ClNlcGFyYXRvciBjaGFyYWN0ZXIgdXNlZCBpbiB0aGUgPHN0cm9uZz5saXN0PC9zdHJvbmc+ IGF0dHJpYnV0ZS4gRGVmYXVsdCBpcyA8c3Ryb25nPiw8L3N0cm9uZz4gKGNvbW1hKS48L2xp PgoJCTxsaT48Y29kZT5yZXF1aXJlZD0mIzM0O2Jvb2xlYW4mIzM0OzwvY29kZT48YnIgLz4K V2hldGhlciBhIG5vbi1lbXB0eSBvcHRpb24gbXVzdCBiZSBzZWxlY3RlZC4gQXZhaWxhYmxl IHZhbHVlczogPHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLCA8c3Ryb25nPjA8L3N0cm9uZz4g KG5vKS4gRGVmYXVsdCBpcyA8c3Ryb25nPjE8L3N0cm9uZz4gKHllcykuPC9saT4KCTwvdWw+ CgoJPGg0PkV4YW1wbGVzPC9oND4KCgk8cD5TZWxlY3QgbGlzdCBsYWJlbGVkICYjODIxNjtE ZXBhcnRtZW50JiM4MjE3OywgY29udGFpbmluZyB0aHJlZSBvcHRpb25zIGFuZCBhIGJsYW5r IG9wdGlvbiAoZHVlIHRvIHRoZSBjb21tYSBiZWZvcmUgJiM4MjE2O01hcmtldGluZyYjODIx NzspIHNob3duIGJ5IGRlZmF1bHQsIGZvcmNpbmcgdGhlIHVzZXIgdG8gbWFrZSBhIHNlbGVj dGlvbi48L3A+Cgo8cHJlPjxjb2RlPiYjNjA7dHhwOnplbV9jb250YWN0X3NlbGVjdCBsYWJl bD0mIzM0O0RlcGFydG1lbnQmIzM0OyBsaXN0PSYjMzQ7LE1hcmtldGluZyxTYWxlcyxTdXBw b3J0JiMzNDsgLyYjNjI7CjwvY29kZT48L3ByZT4KCgk8cD5TZWxlY3QgbGlzdCBjb250YWlu aW5nIHRocmVlIG9wdGlvbnMgd2l0aCAmIzgyMTY7TWFya2V0aW5nJiM4MjE3OyBzZWxlY3Rl ZCBieSBkZWZhdWx0LjwvcD4KCjxwcmU+PGNvZGU+JiM2MDt0eHA6emVtX2NvbnRhY3Rfc2Vs ZWN0IGxpc3Q9JiMzNDtNYXJrZXRpbmcsU2FsZXMsU3VwcG9ydCYjMzQ7IHNlbGVjdGVkPSYj MzQ7TWFya2V0aW5nJiMzNDsgLyYjNjI7CjwvY29kZT48L3ByZT4KCgk8cD48YSBocmVmPSIj dG9wIj5CYWNrIHRvIHRvcDwvYT48L3A+CgoJPGgzIGlkPSJ6Y19jaGVja2JveCI+PGNvZGU+ JiM2MDt0eHA6emVtX2NvbnRhY3RfY2hlY2tib3ggLyYjNjI7PC9jb2RlPjwvaDM+CgoJPHA+ Q3JlYXRlcyBhIGNoZWNrIGJveC48L3A+CgoJPGg0PkF0dHJpYnV0ZXM8L2g0PgoKCTx1bD4K CQk8bGk+PGNvZGU+bGFiZWw9JiMzNDt0ZXh0JiMzNDs8L2NvZGU+PGJyIC8+ClRleHQgbGFi ZWwgZGlzcGxheWVkIHRvIHRoZSB1c2VyLiBEZWZhdWx0IGlzIDxzdHJvbmc+Q2hlY2tib3g8 L3N0cm9uZz4uPC9saT4KCQk8bGk+PGNvZGU+bmFtZT0mIzM0O3ZhbHVlJiMzNDs8L2NvZGU+ PGJyIC8+CkZpZWxkIG5hbWUsIGFzIHVzZWQgaW4gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj48 c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj48L3NwYW4+IGlucHV0IHRhZy48L2xpPgoJ CTxsaT48Y29kZT5icmVhaz0mIzM0O3RhZyYjMzQ7PC9jb2RlPjxiciAvPgpCcmVhayB0YWcg YmV0d2VlbiB0aGUgbGFiZWwgYW5kIGlucHV0IGZpZWxkLiBEZWZhdWx0IGlzIDxjb2RlPiYj NjA7YnIgLyYjNjI7PC9jb2RlPi4gVXNlIDxjb2RlPmJyZWFrPSYjMzQ7JiMzNDs8L2NvZGU+ IHRvIHB1dCB0aGUgbGFiZWwgYW5kIGlucHV0IGZpZWxkIG9uIHRoZSBzYW1lIGxpbmUuPC9s aT4KCQk8bGk+PGNvZGU+Y2hlY2tlZD0mIzM0O2Jvb2xlYW4mIzM0OzwvY29kZT48YnIgLz4K V2hldGhlciB0aGlzIGJveCBpcyBjaGVja2VkIHdoZW4gZmlyc3QgZGlzcGxheWVkLiBBdmFp bGFibGUgdmFsdWVzOiA8c3Ryb25nPjE8L3N0cm9uZz4gKHllcyksIDxzdHJvbmc+MDwvc3Ry b25nPiAobm8pLiBEZWZhdWx0IGlzICYjODIyMDswJiM4MjIxOyAobm8pLjwvbGk+CgkJPGxp Pjxjb2RlPnJlcXVpcmVkPSYjMzQ7Ym9vbGVhbiYjMzQ7PC9jb2RlPjxiciAvPgpXaGV0aGVy IHRoaXMgY2hlY2tib3ggbXVzdCBiZSBmaWxsZWQgb3V0LiBBdmFpbGFibGUgdmFsdWVzOiA8 c3Ryb25nPjE8L3N0cm9uZz4gKHllcyksIDxzdHJvbmc+MDwvc3Ryb25nPiAobm8pLiBEZWZh dWx0IGlzIDxzdHJvbmc+MTwvc3Ryb25nPiAoeWVzKS48L2xpPgoJPC91bD4KCgk8aDQ+RXhh bXBsZXM8L2g0PgoKCTxwPlNocmluay13cmFwIGFncmVlbWVudCB3aGljaCBtdXN0IGJlIGNo ZWNrZWQgYnkgdGhlIHVzZXIgYmVmb3JlIHRoZSBlbWFpbCB3aWxsIGJlIHNlbnQuPC9wPgoK PHByZT48Y29kZT4mIzYwO3R4cDp6ZW1fY29udGFjdF9jaGVja2JveCBsYWJlbD0mIzM0O0kg YWNjZXB0IHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyYjMzQ7IC8mIzYyOwo8L2NvZGU+PC9w cmU+CgoJPHA+T3B0aW9uYWwgY2hlY2tib3hlczo8L3A+Cgo8cHJlPjxjb2RlPlNlbGVjdCB3 aGljaCBvcGVyYXRpbmcgc3lzdGVtcyBhcmUgeW91IGZhbWlsaWFyIHdpdGg6JiM2MDticiAv JiM2MjsKJiM2MDt0eHA6emVtX2NvbnRhY3RfY2hlY2tib3ggbGFiZWw9JiMzNDtXaW5kb3dz JiMzNDsgcmVxdWlyZWQ9JiMzNDswJiMzNDsgLyYjNjI7JiM2MDticiAvJiM2MjsKJiM2MDt0 eHA6emVtX2NvbnRhY3RfY2hlY2tib3ggbGFiZWw9JiMzNDtVbml4L0xpbnV4L0JTRCYjMzQ7 IHJlcXVpcmVkPSYjMzQ7MCYjMzQ7IC8mIzYyOyYjNjA7YnIgLyYjNjI7CiYjNjA7dHhwOnpl bV9jb250YWN0X2NoZWNrYm94IGxhYmVsPSYjMzQ7TWFjT1MmIzM0OyByZXF1aXJlZD0mIzM0 OzAmIzM0OyAvJiM2MjsmIzYwO2JyIC8mIzYyOwo8L2NvZGU+PC9wcmU+CgoJPHA+PGEgaHJl Zj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCTxoMyBpZD0iemNfcmFkaW8iPjxjb2Rl PiYjNjA7dHhwOnplbV9jb250YWN0X3JhZGlvIC8mIzYyOzwvY29kZT48L2gzPgoKCTxwPkNy ZWF0ZXMgYSByYWRpbyBidXR0b24uPC9wPgoKCTxoND5BdHRyaWJ1dGVzPC9oND4KCgk8dWw+ CgkJPGxpPjxjb2RlPmdyb3VwPSYjMzQ7dGV4dCYjMzQ7PC9jb2RlPiA8c3BhbiBjbGFzcz0i cmVxdWlyZWQiPnJlcXVpcmVkPC9zcGFuPjxiciAvPgpUZXh0IHVzZWQgaW4gdGhlIGVtYWls IHRvIGRlc2NyaWJlIHRoaXMgZ3JvdXAgb2YgcmFkaW8gYnV0dG9ucy4gVGhpcyBhdHRyaWJ1 dGUgdmFsdWUgaXMgcmVtZW1iZXJlZCBmb3Igc3Vic2VxdWVudCByYWRpbyBidXR0b25zLCBz byB5b3Ugb25seSBoYXZlIHRvIHNldCBpdCBvbiB0aGUgZmlyc3QgcmFkaW8gYnV0dG9uIG9m IGEgZ3JvdXAuIERlZmF1bHQgaXMgPHN0cm9uZz5SYWRpbzwvc3Ryb25nPi48L2xpPgoJCTxs aT48Y29kZT5sYWJlbD0mIzM0O3RleHQmIzM0OzwvY29kZT4gPHNwYW4gY2xhc3M9InJlcXVp cmVkIj5yZXF1aXJlZDwvc3Bhbj48YnIgLz4KVGV4dCBsYWJlbCBkaXNwbGF5ZWQgdG8gdGhl IHVzZXIgYXMgcmFkaW8gYnV0dG9uIG9wdGlvbi48L2xpPgoJCTxsaT48Y29kZT5uYW1lPSYj MzQ7dmFsdWUmIzM0OzwvY29kZT48YnIgLz4KRmllbGQgbmFtZSwgYXMgdXNlZCBpbiB0aGUg PHNwYW4gY2xhc3M9ImNhcHMiPjxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPjwvc3Bh bj4gaW5wdXQgdGFnLiBUaGlzIGF0dHJpYnV0ZSB2YWx1ZSBpcyByZW1lbWJlcmVkIGZvciBz dWJzZXF1ZW50IHJhZGlvIGJ1dHRvbnMsIHNvIHlvdSBvbmx5IGhhdmUgdG8gc2V0IGl0IG9u IHRoZSBmaXJzdCByYWRpbyBidXR0b24gb2YgYSBncm91cC4gSWYgaXQgaGFzbiYjODIxNzt0 IGJlZW4gc2V0IGF0IGFsbCwgaXQgd2lsbCBiZSBkZXJpdmVkIGZyb20gdGhlIDxjb2RlPmdy b3VwPC9jb2RlPiBhdHRyaWJ1dGUuPC9saT4KCQk8bGk+PGNvZGU+YnJlYWs9JiMzNDt0YWcm IzM0OzwvY29kZT48YnIgLz4KQnJlYWsgdGFnIGJldHdlZW4gdGhlIGxhYmVsIGFuZCBmaWVs ZC4gRGVmYXVsdCBpcyBhIHNwYWNlLjwvbGk+CgkJPGxpPjxjb2RlPmNoZWNrZWQ9JiMzNDti b29sZWFuJiMzNDs8L2NvZGU+PGJyIC8+CldoZXRoZXIgdGhpcyByYWRpbyBvcHRpb24gaXMg Y2hlY2tlZCB3aGVuIHRoZSBmb3JtIGlzIGZpcnN0IGRpc3BsYXllZC4gQXZhaWxhYmxlIHZh bHVlczogPHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLCA8c3Ryb25nPjA8L3N0cm9uZz4gKG5v KS4gRGVmYXVsdCBpcyA8c3Ryb25nPjA8L3N0cm9uZz4gKG5vKS48L2xpPgoJPC91bD4KCgk8 aDQ+RXhhbXBsZTwvaDQ+CgoJPHA+R3JvdXAgbXV0dWFsbHkgZXhjbHVzaXZlIHJhZGlvIGJ1 dHRvbnMgYnkgc2V0dGluZyB0aGUgPGNvZGU+Z3JvdXA8L2NvZGU+IGF0dHJpYnV0ZSBvbiB0 aGUgZmlyc3QgcmFkaW8gYnV0dG9uIGluIGEgZ3JvdXAuIE9ubHkgdGhlIGNob3NlbiByYWRp byBidXR0b24gZnJvbSBlYWNoIGdyb3VwIHdpbGwgYmUgdXNlZCBpbiB0aGUgZW1haWwgbWVz c2FnZS4gVGhlIG1lc3NhZ2Ugd2lsbCBiZSBvdXRwdXQgaW4gdGhlIGZvcm0gPHN0cm9uZz5n cm91cDogbGFiZWw8L3N0cm9uZz4gZm9yIGVhY2ggb2YgdGhlIGNob3NlbiByYWRpbyBidXR0 b25zLjwvcD4KCjxwcmU+PGNvZGU+JiM2MDt0eHA6emVtX2NvbnRhY3RfcmFkaW8gbGFiZWw9 JiMzNDtNZWRpdW0mIzM0OyBncm91cD0mIzM0O0kgbGlrZSBteSBzdGVhayYjMzQ7IC8mIzYy OwomIzYwO3R4cDp6ZW1fY29udGFjdF9yYWRpbyBsYWJlbD0mIzM0O1JhcmUmIzM0OyAvJiM2 MjsKJiM2MDt0eHA6emVtX2NvbnRhY3RfcmFkaW8gbGFiZWw9JiMzNDtXZWxsIGRvbmUmIzM0 OyAvJiM2MjsKPC9jb2RlPgo8Y29kZT4mIzYwO3R4cDp6ZW1fY29udGFjdF9yYWRpbyBsYWJl bD0mIzM0O1dpbmUmIzM0OyBncm91cD0mIzM0O1dpdGggYSBnbGFzcyBvZiYjMzQ7IC8mIzYy OwomIzYwO3R4cDp6ZW1fY29udGFjdF9yYWRpbyBsYWJlbD0mIzM0O0JlZXImIzM0OyAvJiM2 MjsKJiM2MDt0eHA6emVtX2NvbnRhY3RfcmFkaW8gbGFiZWw9JiMzNDtXYXRlciYjMzQ7IC8m IzYyOwo8L2NvZGU+PC9wcmU+CgoJPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+ PC9wPgoKCTxoMyBpZD0iemNfc2VjcmV0Ij48Y29kZT4mIzYwO3R4cDp6ZW1fY29udGFjdF9z ZWNyZXQgLyYjNjI7PC9jb2RlPjwvaDM+CgoJPHA+VGhpcyB0YWcgaGFzIG5vIGVmZmVjdCBv biB0aGUgZm9ybSBvciA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gb3V0cHV0LCBi dXQgd2lsbCBpbmNsdWRlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gaW4gdGhlIGVtYWlsLiBJ dCBjYW4gYmUgdXNlZCBhcyBhIHNlbGYtY2xvc2luZyB0YWcgb3IgYXMgYSBjb250YWluZXIg dGFnLjwvcD4KCgk8aDQ+QXR0cmlidXRlczwvaDQ+CgoJPHVsPgoJCTxsaT48Y29kZT5uYW1l PSYjMzQ7dGV4dCYjMzQ7PC9jb2RlPjxiciAvPgpVc2VkIGludGVybmFsbHkuIFNldCB0aGlz IG9ubHkgaWYgeW91IGhhdmUgbXVsdGlwbGUgJiM4MjE2O3NlY3JldCYjODIxNzsgZm9ybSBl bGVtZW50cyB3aXRoIGlkZW50aWNhbCBsYWJlbHMuPC9saT4KCQk8bGk+PGNvZGU+bGFiZWw9 JiMzNDt0ZXh0JiMzNDs8L2NvZGU+PGJyIC8+ClVzZWQgdG8gaWRlbnRpZnkgdGhlIGZpZWxk IGluIHRoZSBlbWFpbC4gRGVmYXVsdCBpcyA8c3Ryb25nPlNlY3JldDwvc3Ryb25nPi48L2xp PgoJCTxsaT48Y29kZT52YWx1ZT0mIzM0O3ZhbHVlJiMzNDs8L2NvZGU+PGJyIC8+ClNvbWUg dGV4dCB5b3Ugd2FudCB0byBhZGQgdG8gdGhlIGVtYWlsLjwvbGk+Cgk8L3VsPgoKCTxoND5F eGFtcGxlczwvaDQ+CgoJPHA+VXNhZ2UgYXMgYSBzZWxmLWNsb3NpbmcgdGFnPC9wPgoKPHBy ZT48Y29kZT4mIzYwO3R4cDp6ZW1fY29udGFjdF9zZWNyZXQgdmFsdWU9JiMzNDtUaGUgYW5z d2VyIGlzIDQyJiMzNDsgLyYjNjI7CjwvY29kZT48L3ByZT4KCgk8cD5Vc2FnZSBhcyBhIGNv bnRhaW5lciB0YWc8L3A+Cgo8cHJlPjxjb2RlPiYjNjA7dHhwOnplbV9jb250YWN0X3NlY3Jl dCBsYWJlbD0mIzM0O0RlYXIgdXNlciYjMzQ7JiM2MjsKICBQbGVhc2UgcHJvdmlkZSBhIHVz ZWZ1bCBleGFtcGxlIGZvciB0aGlzIHRhZyEKJiM2MDsvdHhwOnplbV9jb250YWN0X3NlY3Jl dCYjNjI7CjwvY29kZT48L3ByZT4KCgk8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwv YT48L3A+CgoJPGgzIGlkPSJ6Y19zZXJ2ZXJpbmZvIj48Y29kZT4mIzYwO3R4cDp6ZW1fY29u dGFjdF9zZXJ2ZXJpbmZvIC8mIzYyOzwvY29kZT48L2gzPgoKCTxwPlRoaXMgdGFnIGhhcyBu byBlZmZlY3Qgb24gdGhlIGZvcm0gb3IgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+ IG91dHB1dCwgYnV0IHdpbGwgaW5jbHVkZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGluIHRo ZSBlbWFpbCBiYXNlZCBvbiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlBIUDwvc3Bhbj4gJF9T RVJWRVIgdmFyaWFibGUuPC9wPgoKCTxoND5BdHRyaWJ1dGVzPC9oND4KCgk8dWw+CgkJPGxp Pjxjb2RlPm5hbWU9JiMzNDt2YWx1ZSYjMzQ7PC9jb2RlPiA8c3BhbiBjbGFzcz0icmVxdWly ZWQiPnJlcXVpcmVkPC9zcGFuPjxiciAvPgpOYW1lIG9mIHRoZSBzZXJ2ZXIgdmFyaWFibGUu IFNlZSB0aGUgPGEgaHJlZj0iaHR0cDovL3BocC5uZXQvbWFudWFsL3Jlc2VydmVkLnZhcmlh Ymxlcy5waHAjcmVzZXJ2ZWQudmFyaWFibGVzLnNlcnZlciI+PHNwYW4gY2xhc3M9ImNhcHMi PlBIUDwvc3Bhbj4gbWFudWFsPC9hPiBmb3IgYSBmdWxsIGxpc3QuPC9saT4KCQk8bGk+PGNv ZGU+bGFiZWw9JiMzNDt0ZXh0JiMzNDs8L2NvZGU+PGJyIC8+ClVzZWQgdG8gaWRlbnRpZnkg dGhlIGZpZWxkIGluIHRoZSBlbWFpbC4gRGVmYXVsdHMgdG8gdGhlIHZhbHVlIG9mIHRoZSA8 c3Ryb25nPm5hbWU8L3N0cm9uZz4gYXR0cmlidXRlLjwvbGk+Cgk8L3VsPgoKCTxoND5FeGFt cGxlczwvaDQ+CgoJPHA+QWRkIHRoZSBJUCBhZGRyZXNzIG9mIHRoZSB2aXNpdG9yIHRvIHRo ZSBlbWFpbDwvcD4KCjxwcmU+PGNvZGU+JiM2MDt0eHA6emVtX2NvbnRhY3Rfc2VydmVyaW5m byBuYW1lPSYjMzQ7UkVNT1RFX0FERFImIzM0OyBsYWJlbD0mIzM0O0lQIG51bWJlciYjMzQ7 IC8mIzYyOwo8L2NvZGU+PC9wcmU+CgoJPHA+QWRkIHRoZSBuYW1lIG9mIHRoZSB2aXNpdG9y JiM4MjE3O3MgYnJvd3NlciB0byB0aGUgZW1haWw8L3A+Cgo8cHJlPjxjb2RlPiYjNjA7dHhw OnplbV9jb250YWN0X3NlcnZlcmluZm8gbmFtZT0mIzM0O0hUVFBfVVNFUl9BR0VOVCYjMzQ7 IGxhYmVsPSYjMzQ7QnJvd3NlciYjMzQ7IC8mIzYyOwo8L2NvZGU+PC9wcmU+CgoJPHA+PGEg aHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCTxoMyBpZD0iemNfc2VuZF9hcnRp Y2xlIj48Y29kZT4mIzYwO3R4cDp6ZW1fY29udGFjdF9zZW5kX2FydGljbGUgLyYjNjI7PC9j b2RlPjwvaDM+CgoJPHA+VXNlIHRoaXMgdGFnIGluIHlvdXIgaW5kaXZpZHVhbCBhcnRpY2xl IGZvcm0sIHdoZXJlIHlvdSB3YW50IHRoZSAmIzgyMjA7c2VuZCBhcnRpY2xlJiM4MjIxOyBs aW5rIHRvIGJlIGRpc3BsYXllZC48L3A+CgoJPGg0PkF0dHJpYnV0ZXM6PC9oND4KCgk8dWw+ CgkJPGxpPjxjb2RlPmxpbmt0ZXh0PSYjMzQ7dGV4dCYjMzQ7PC9jb2RlPjxiciAvPgpUZXh0 IGRpc3BsYXllZCBmb3IgdGhlIGxpbmsuIERlZmF1bHQgaXMgPHN0cm9uZz5zZW5kIGFydGlj bGU8L3N0cm9uZz48L2xpPgoJPC91bD4KCgk8aDQ+RXhhbXBsZXM6PC9oND4KCgk8cD5TZWUg PGEgaHJlZj0iI3NlbmRhcnRpY2xlIj5HZXR0aW5nIHN0YXJ0ZWQ8L2E+PC9wPgoKCTxwPjxh IGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCgk8aDIgaWQ9ImFkdmFuY2VkIj5B ZHZhbmNlZCBleGFtcGxlczwvaDI+CgoJPGgzIGlkPSJzaG93X2Vycm9yIj5TZXBhcmF0ZSBp bnB1dCBhbmQgZXJyb3IgZm9ybXM8L2gzPgoKCTxwPlVzaW5nIDxjb2RlPnNob3dfaW5wdXQ8 L2NvZGU+IGFuZCA8Y29kZT5zaG93X2Vycm9yPC9jb2RlPiB0byBkaXNwbGF5IHRoZSBmb3Jt IGFuZCBlcnJvciBtZXNzYWdlcyBvbiBkaWZmZXJlbnQgcGFydHMgb2YgYSBwYWdlLiBBIGZv cm0gaXMgdXNlZCB0byBtYWtlIHN1cmUgdGhlIGNvbnRlbnRzIG9mIGJvdGggZm9ybXMgYXJl IGlkZW50aWNhbCwgb3RoZXJ3aXNlIHRoZXkgd291bGQgYmUgc2VlbiBhcyB0d28gaW5kZXBl bmRlbnQgZm9ybXMuIFRoZSBmaXJzdCBmb3JtIG9ubHkgc2hvd3MgZXJyb3JzIChubyBpbnB1 dCksIHRoZSBzZWNvbmQgZm9ybSBvbmx5IHNob3dzIHRoZSBpbnB1dCBmaWVsZHMgKG5vIGVy cm9ycykuPC9wPgoKPHByZT48Y29kZT4mIzYwO2RpdiBpZD0mIzM0O2Vycm9yJiMzNDsmIzYy OwogICYjNjA7dHhwOnplbV9jb250YWN0IGZvcm09JiMzNDtjb250YWN0X2Zvcm0mIzM0OyBz aG93X2lucHV0PSYjMzQ7MCYjMzQ7IC8mIzYyOwomIzYwOy9kaXYmIzYyOwo8L2NvZGU+Cjxj b2RlPiYjNjA7ZGl2IGlkPSYjMzQ7aW5wdXRmb3JtJiMzNDsmIzYyOwogICYjNjA7dHhwOnpl bV9jb250YWN0IGZvcm09JiMzNDtjb250YWN0X2Zvcm0mIzM0OyBzaG93X2Vycm9yPSYjMzQ7 MCYjMzQ7IC8mIzYyOwomIzYwOy9kaXYmIzYyOwo8L2NvZGU+PC9wcmU+CgoJPHA+QXBhcnQg ZnJvbSB0aGUgPGNvZGU+c2hvd19lcnJvcjwvY29kZT4gYW5kIDxjb2RlPnNob3dfaW5wdXQ8 L2NvZGU+IGF0dHJpYnV0ZXMsIGFsbCBvdGhlciBhdHRyaWJ1dGVzIG11c3QgYmUgMTAwJSBp ZGVudGljYWwgaW4gYm90aCBmb3Jtcywgb3RoZXJ3aXNlIHRoZXkgd291bGQgYmUgc2VlbiBh cyB0d28gdW5yZWxhdGVkIGZvcm1zLjwvcD4KCgk8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRv IHRvcDwvYT48L3A+CgoJPGgzIGlkPSJzdWJqZWN0X2Zvcm0iPlVzZXIgc2VsZWN0YWJsZSBz dWJqZWN0IGZpZWxkPC9oMz4KCgk8cD5TcGVjaWZ5IHRoZSA8Y29kZT5zdWJqZWN0X2Zvcm08 L2NvZGU+IGF0dHJpYnV0ZSBhbmQgY3JlYXRlIGEgZm9ybSB3aGljaCBpbmNsdWRlcyBhIDxj b2RlPnplbV9jb250YWN0X3NlbGVjdDwvY29kZT4gdGFnOjwvcD4KCjxwcmU+PGNvZGU+JiM2 MDt0eHA6emVtX2NvbnRhY3QgdG89JiMzNDt5b3VAZXhhbXBsZS5jb20mIzM0OyBzdWJqZWN0 X2Zvcm09JiMzNDtteV9zdWJqZWN0X2Zvcm0mIzM0OyAvJiM2MjsKICAmIzYwO3R4cDp6ZW1f Y29udGFjdF90ZXh0IGxhYmVsPSYjMzQ7TmFtZSYjMzQ7IC8mIzYyOyYjNjA7YnIgLyYjNjI7 CiAgJiM2MDt0eHA6emVtX2NvbnRhY3RfZW1haWwgLyYjNjI7JiM2MDticiAvJiM2MjsKICAm IzYwO3R4cDp6ZW1fY29udGFjdF9zZWxlY3QgbGFiZWw9JiMzNDtDaG9vc2UgU3ViamVjdCYj MzQ7IGxpc3Q9JiMzNDssUXVlc3Rpb24sRmVlZGJhY2smIzM0OyAvJiM2MjsmIzYwO2JyIC8m IzYyOwogICYjNjA7dHhwOnplbV9jb250YWN0X3RleHRhcmVhIGxhYmVsPSYjMzQ7TWVzc2Fn ZSYjMzQ7IC8mIzYyOyYjNjA7YnIgLyYjNjI7CiYjNjA7L3R4cDp6ZW1fY29udGFjdCYjNjI7 CjwvY29kZT48L3ByZT4KCgk8cD5DcmVhdGUgYSBUZXh0cGF0dGVybiBmb3JtIGNhbGxlZCAm IzgyMjA7bXlfc3ViamVjdF9mb3JtJiM4MjIxOywgY29udGFpbmluZzo8L3A+Cgo8cHJlPjxj b2RlPiYjNjA7dHhwOnBocCYjNjI7CiAgZ2xvYmFsICR6ZW1fY29udGFjdF9mb3JtOwogIGVj aG8gJHplbV9jb250YWN0X2Zvcm1bJiMzOTtDaG9vc2UgU3ViamVjdCYjMzk7XTsKJiM2MDsv dHhwOnBocCYjNjI7CjwvY29kZT48L3ByZT4KCgk8cD5UaGUgPGNvZGU+bGFiZWw8L2NvZGU+ IHVzZWQgaW4gdGhlIDxjb2RlPnplbV9jb250YWN0X3NlbGVjdDwvY29kZT4gdGFnIG11c3Qg YmUgaWRlbnRpY2FsIHRvIHRoZSBjb3JyZXNwb25kaW5nIHZhcmlhYmxlIGluIHRoZSA8Y29k ZT5zdWJqZWN0X2Zvcm08L2NvZGU+LiBIZXJlIHdlIHVzZWQgPGNvZGU+Q2hvb3NlIHN1Ympl Y3Q8L2NvZGU+LjwvcD4KCgk8cD5JZiB5b3UmIzgyMTc7ZCBwcmVmZXIgdG8gYWRkIGEgY29t bW9uIHByZWZpeCBmb3IgYWxsIHN1YmplY3RzLCB1c2UgYSA8Y29kZT5zdWJqZWN0X2Zvcm08 L2NvZGU+IGNvbnRhaW5pbmc6PC9wPgoKPHByZT48Y29kZT4mIzYwO3R4cDpwaHAmIzYyOwog IGdsb2JhbCAkemVtX2NvbnRhY3RfZm9ybTsKICBlY2hvICYjMzk7TXkgY29tbW9uIHByZWZp eCAtICYjMzk7IC4gJHplbV9jb250YWN0X2Zvcm1bJiMzOTtDaG9vc2UgU3ViamVjdCYjMzk7 XTsKJiM2MDsvdHhwOnBocCYjNjI7CjwvY29kZT48L3ByZT4KCgk8cD48YSBocmVmPSIjdG9w Ij5CYWNrIHRvIHRvcDwvYT48L3A+CgoJPGgzIGlkPSJ0b19mb3JtIj5Vc2VyIHNlbGVjdGFi bGUgcmVjaXBpZW50LCB3aXRob3V0IHNob3dpbmcgZW1haWwgYWRkcmVzczwvaDM+CgoJPHA+ U3BlY2lmeSB0aGUgPGNvZGU+dG9fZm9ybTwvY29kZT4gYXR0cmlidXRlIGFuZCBjcmVhdGUg YSBmb3JtIHdoaWNoIGluY2x1ZGVzIGEgPGNvZGU+emVtX2NvbnRhY3Rfc2VsZWN0PC9jb2Rl PiB0YWc6PC9wPgoKPHByZT48Y29kZT4mIzYwO3R4cDp6ZW1fY29udGFjdCB0b19mb3JtPSYj MzQ7bXlfemVtX2NvbnRhY3RfdG9fZm9ybSYjMzQ7JiM2MjsKICAmIzYwO3R4cDp6ZW1fY29u dGFjdF90ZXh0IGxhYmVsPSYjMzQ7TmFtZSYjMzQ7IC8mIzYyOyYjNjA7YnIgLyYjNjI7CiAg JiM2MDt0eHA6emVtX2NvbnRhY3RfZW1haWwgLyYjNjI7JiM2MDticiAvJiM2MjsKICAmIzYw O3R4cDp6ZW1fY29udGFjdF9zZWxlY3QgbGFiZWw9JiMzNDtEZXBhcnRtZW50JiMzNDsgbGlz dD0mIzM0OyxTdXBwb3J0LFNhbGVzJiMzNDsgLyYjNjI7JiM2MDticiAvJiM2MjsKICAmIzYw O3R4cDp6ZW1fY29udGFjdF90ZXh0YXJlYSBsYWJlbD0mIzM0O01lc3NhZ2UmIzM0OyAvJiM2 MjsmIzYwO2JyIC8mIzYyOwomIzYwOy90eHA6emVtX2NvbnRhY3QmIzYyOwo8L2NvZGU+PC9w cmU+CgoJPHA+Q3JlYXRlIGEgVGV4dHBhdHRlcm4gZm9ybSBjYWxsZWQgJiM4MjIwO215X3pl bV9jb250YWN0X3RvX2Zvcm0mIzgyMjE7LCBjb250YWluaW5nOjwvcD4KCjxwcmU+PGNvZGU+ JiM2MDt0eHA6cGhwJiM2MjsKICBnbG9iYWwgJHplbV9jb250YWN0X2Zvcm07CiAgc3dpdGNo KCR6ZW1fY29udGFjdF9mb3JtWyYjMzk7RGVwYXJ0bWVudCYjMzk7XSkKICB7CiAgICBjYXNl ICYjMzk7U3VwcG9ydCYjMzk7OgogICAgICBlY2hvICYjMzk7Y3Jld0BleGFtcGxlLmNvbSYj Mzk7OwogICAgICBicmVhazsKICAgIGNhc2UgJiMzOTtTYWxlcyYjMzk7OgogICAgICBlY2hv ICYjMzk7c2hvd21ldGhlbW9uZXlAZXhhbXBsZS5jb20mIzM5OzsKICAgICAgYnJlYWs7CiAg ICBkZWZhdWx0OgogICAgICBlY2hvICYjMzk7c29tZW9uZUBleGFtcGxlLmNvbSYjMzk7Owog IH0KJiM2MDsvdHhwOnBocCYjNjI7CjwvY29kZT48L3ByZT4KCgk8cD5UaGUgPGNvZGU+bGFi ZWw8L2NvZGU+IHVzZWQgaW4gdGhlIDxjb2RlPnplbV9jb250YWN0X3NlbGVjdDwvY29kZT4g dGFnIG11c3QgYmUgaWRlbnRpY2FsIHRvIHRoZSBjb3JyZXNwb25zaW5nIHZhcmlhYmxlIGlu IHRoZSA8Y29kZT50b19mb3JtPC9jb2RlPi4gSGVyZSB3ZSB1c2VkIDxjb2RlPkRlcGFydG1l bnQ8L2NvZGU+LjwvcD4KCgk8cD5BICYjODIxNjtkZWZhdWx0JiM4MjE3OyBlbWFpbCBhZGRy ZXNzIGluIHRoZSA8Y29kZT50b19mb3JtPC9jb2RlPiBpcyBzcGVjaWZpZWQgdG8gZW5zdXJl IHRoYXQgYSB2YWxpZCBlbWFpbCBhZGRyZXNzIGlzIHVzZWQgaW4gY2FzZXMgd2hlcmUgeW91 IGFkZCBvciBjaGFuZ2UgYSBzZWxlY3QvcmFkaW8gb3B0aW9uIGFuZCBmb3JnZXQgdG8gdXBk YXRlIHRoZSA8Y29kZT50b19mb3JtPC9jb2RlPi48L3A+CgoJPHAgY2xhc3M9Indhcm5pbmci Pk5ldmVyIHVzZSB0YWdzIGxpa2UgPGNvZGU+emVtX2NvbnRhY3RfdGV4dDwvY29kZT4sIDxj b2RlPnplbV9jb250YWN0X2VtYWlsPC9jb2RlPiBvciA8Y29kZT56ZW1fY29udGFjdF90ZXh0 YXJlYTwvY29kZT4gZm9yIHNldHRpbmcgdGhlIHJlY2lwaWVudCBhZGRyZXNzLCBvdGhlcndp c2UgeW91ciBmb3JtIGNhbiBiZSBhYnVzZWQgdG8gc2VuZCBzcGFtIHRvIGFueSBlbWFpbCBh ZGRyZXNzITwvcD4KCgk8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT48L3A+CgoJ PGgyIGlkPSJzdHlsaW5nIj5TdHlsaW5nPC9oMj4KCgk8cD5UaGUgZm9ybSBpdHNlbGYgaGFz IGEgY2xhc3MgPHN0cm9uZz56ZW1Db250YWN0Rm9ybTwvc3Ryb25nPiBzZXQgb24gdGhlIDxj b2RlPkZPUk08L2NvZGU+IDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiB0YWcuPC9w PgoKCTxwPlRoZSBsaXN0IG9mIGVycm9yIG1lc3NhZ2VzIChpZiBhbnkpIGhhcyBhIGNsYXNz IDxzdHJvbmc+emVtRXJyb3I8L3N0cm9uZz4gc2V0IG9uIHRoZSA8Y29kZT5VTDwvY29kZT4g PHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IHRhZyB0aGF0IGVuY2xvc2VzIHRoZSBs aXN0IG9mIGVycm9ycy48L3A+CgoJPHA+QWxsIGZvcm0gZWxlbWVudHMgYW5kIGNvcnJlc3Bv bmRpbmcgbGFiZWxzIGhhdmUgdGhlIGZvbGxvd2luZyBjbGFzc2VzIChvciBpZHMgc2V0KToK CTxvbD4KCQk8bGk+T25lIG9mIDxzdHJvbmc+emVtVGV4dDwvc3Ryb25nPiwgPHN0cm9uZz56 ZW1UZXh0YXJlYTwvc3Ryb25nPiwgPHN0cm9uZz56ZW1TZWxlY3Q8L3N0cm9uZz4sIDxzdHJv bmc+emVtUmFkaW88L3N0cm9uZz4sIDxzdHJvbmc+emVtQ2hlY2tib3g8L3N0cm9uZz4sIDxz dHJvbmc+emVtU3VibWl0PC9zdHJvbmc+LiBJdCBzaG91bGQgYmUgb2J2aW91cyB3aGljaCBj bGFzcyBpcyB1c2VkIGZvciB3aGljaCBmb3JtIGVsZW1lbnQgKGFuZCBjb3JyZXNwb25kaW5n IGxhYmVsKS48L2xpPgoJCTxsaT48c3Ryb25nPnplbVJlcXVpcmVkPC9zdHJvbmc+IG9yIDxz dHJvbmc+ZXJyb3JFbGVtZW50PC9zdHJvbmc+IG9yIDxzdHJvbmc+emVtUmVxdWlyZWRlcnJv ckVsZW1lbnQ8L3N0cm9uZz4sIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBmb3JtIGVsZW1l bnQgaXMgcmVxdWlyZWQsIGFuIGVycm9yIHdhcyBmb3VuZCBpbiB3aGF0ZXZlciB0aGUgdmlz aXRvciBlbnRlcmVkJiM4MjMwOyBvciBib3RoLjwvbGk+CgkJPGxpPkFuIGluZGl2aWR1YWwg JiM4MjIwO2lkJiM4MjIxOyBvciAmIzgyMjA7Y2xhc3MmIzgyMjE7IHNldCB0byB0aGUgdmFs dWUgb2YgdGhlIDxjb2RlPm5hbWU8L2NvZGU+IGF0dHJpYnV0ZSBvZiB0aGUgY29ycmVzcG9u ZGluZyB0YWcuIFdoZW4gc3R5bGluZyBmb3JtcyBiYXNlZCBvbiB0aGlzIGNsYXNzLCB5b3Ug c2hvdWxkIGV4cGxpY2l0bHkgc2V0IHRoZSA8Y29kZT5uYW1lPC9jb2RlPiBhdHRyaWJ1dGUg YmVjYXVzZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBuYW1lcyBtYXkgY2hhbmdlIGluIG5l d2VyIHplbV9jb250YWN0X3JlYm9ybiB2ZXJzaW9ucy48L2xpPgoJPC9vbD48L3A+CgoJPHA+ PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCTxoMiBpZD0iaGlzdG9yeSI+ SGlzdG9yeTwvaDI+CgoJPHA+T25seSB0aGUgY2hhbmdlcyB0aGF0IG1heSBhZmZlY3QgcGVv cGxlIHdobyB1cGdyYWRlIGFyZSBkZXRhaWxlZCBiZWxvdy48YnIgLz4KVG8gc2F2ZSBzcGFj ZSwgbGlua3MgdG8gZm9ydW0gdG9waWNzIHRoYXQgZGV0YWlsIGFsbCB0aGUgY2hhbmdlcyBp biBlYWNoIHZlcnNpb24gaGF2ZSBiZWVuIGFkZGVkLjwvcD4KCgk8dWw+CgkJPGxpPjE0IGZl YiAyMDA3OiA8c3Ryb25nPnZlcnNpb24gNC4wLjMuMTk8L3N0cm9uZz4gPGEgaHJlZj0iaHR0 cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP2lkPTIxMTQ0Ij5jaGFu Z2Vsb2c8L2E+Cgk8dWw+CgkJPGxpPjxhIGhyZWY9IiNzZW5kYXJ0aWNsZSI+c2VuZF9hcnRp Y2xlPC9hPiBmdW5jdGlvbmFsaXR5IHJldmlzZWQsIHJlcXVpcmluZyBjaGFuZ2VzIHdoZW4g dXBncmFkaW5nIGZyb20gZWFybGllciB2ZXJzaW9uczwvbGk+CgkJPGxpPk5ldyBsYW5ndWFn ZSBzdHJpbmdzOiAmIzgyMTY7c2VuZF9hcnRpY2xlJiM4MjE3OyBhbmQgJiM4MjE2O3JlY2lw aWVudCYjODIxNzsgKHJlcGxhY2VzICYjODIxNjtyZWNlaXZlciYjODIxNzspPC9saT4KCQk8 bGk+U2V0cyBvZiByYWRpbyBidXR0b25zIHJlcXVpcmUgdGhlIG5ldyA8YSBocmVmPSIjemNf cmFkaW8iPmdyb3VwPC9hPiBhdHRyaWJ1dGU8L2xpPgoJCTxsaT5ZZXMvTm8gdmFsdWVzIGRl cHJlY2F0ZWQgaW4gZmF2b3IgZm9yIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4gY2xh c3M9ImNhcHMiPlRYUDwvc3Bhbj48L3NwYW4+IHN0YW5kYXJkIDEvMCB2YWx1ZXMgKHllcy9u byBzdGlsbCB3b3JrIGluIHRoaXMgdmVyc2lvbik8L2xpPgoJPC91bD48L2xpPgoJCTxsaT4y MCBub3YgMjAwNjogPHN0cm9uZz52ZXJzaW9uIDQuMC4zLjE4PC9zdHJvbmc+IDxhIGhyZWY9 Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9pZD0xOTgyMyI+ Y2hhbmdlbG9nPC9hPgoJPHVsPgoJCTxsaT5JRHMgJiM4MjE2O3plbUNvbnRhY3RGb3JtJiM4 MjE3OyBhbmQgJiM4MjE2O3plbVN1Ym1pdCYjODIxNzsgaGF2ZSBjaGFuZ2VkIHRvIGNsYXNz ZXMgdG8gYWxsb3cgbXVsdGlwbGUgZm9ybXMgcGVyIHBhZ2U8L2xpPgoJCTxsaT5OZXcgbGFu Z3VhZ2Ugc3RyaW5nczogJiM4MjE2O2Zvcm1fdXNlZCYjODIxNzssICYjODIxNjtpbnZhbGlk X3V0ZjgmIzgyMTc7LCAmIzgyMTY7bWF4X3dhcm5pbmcmIzgyMTc7LCAmIzgyMTY7bmFtZSYj ODIxNzssICYjODIxNjtyZWZyZXNoJiM4MjE3OywgJiM4MjE2O3NlY3JldCYjODIxNzs8L2xp PgoJPC91bD48L2xpPgoJCTxsaT4xMiBtYXIgMjAwNjogPHN0cm9uZz52ZXJzaW9uIDQuMC4z LjE3PC9zdHJvbmc+IDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20vdmll d3RvcGljLnBocD9pZD0xMzQxNiI+Y2hhbmdlbG9nPC9hPjwvbGk+CgkJPGxpPjExIGZlYiAy MDA2OiA8c3Ryb25nPnZlcnNpb24gLjE2PC9zdHJvbmc+PC9saT4KCQk8bGk+MDYgZmViIDIw MDY6IDxzdHJvbmc+dmVyc2lvbiAuMTU8L3N0cm9uZz48L2xpPgoJCTxsaT4wMyBmZWIgMjAw NjogPHN0cm9uZz52ZXJzaW9uIC4xNDwvc3Ryb25nPgoJPHVsPgoJCTxsaT5SZXF1aXJlcyBz ZXBhcmF0ZSB6ZW1fY29udGFjdF9sYW5nIHBsdWdpbjwvbGk+Cgk8L3VsPjwvbGk+CgkJPGxp PjI5IGphbiAyMDA2OiA8c3Ryb25nPnZlcnNpb24gLjEyPC9zdHJvbmc+PC9saT4KCQk8bGk+ MjcgamFuIDIwMDY6IDxzdHJvbmc+dmVyc2lvbiAuMTE8L3N0cm9uZz48L2xpPgoJCTxsaT4y MyBqYW4gMjAwNjogPHN0cm9uZz52ZXJzaW9uIC4wOSBhbmQgLjEwPC9zdHJvbmc+PC9saT4K CQk8bGk+MjMgamFuIDIwMDY6IDxzdHJvbmc+dmVyc2lvbiAuMDg8L3N0cm9uZz48L2xpPgoJ CTxsaT4xNyBqYW4gMjAwNjogPHN0cm9uZz52ZXJzaW9uIC4wNzwvc3Ryb25nPjwvbGk+CgkJ PGxpPjE2IGphbiAyMDA2OiA8c3Ryb25nPnZlcnNpb24gLjA1IGFuZCAuMDY8L3N0cm9uZz48 L2xpPgoJCTxsaT4xNSBqYW4gMjAwNjogPHN0cm9uZz52ZXJzaW9uIC4wNDwvc3Ryb25nPjwv bGk+CgkJPGxpPjEwIGphbiAyMDA2OiA8c3Ryb25nPnZlcnNpb24gLjAzPC9zdHJvbmc+PC9s aT4KCQk8bGk+MTkgZGVjIDIwMDU6IDxzdHJvbmc+dmVyc2lvbiAuMDI8L3N0cm9uZz48L2xp PgoJPC91bD4KCgk8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT48L3A+CgoJPGgy IGlkPSJjcmVkaXRzIj5DcmVkaXRzPC9oMj4KCgk8dWw+CgkJPGxpPjxzdHJvbmc+emVtPC9z dHJvbmc+IHdyb3RlIHRoZSB6ZW1fY29udGFjdCAwLjYgcGx1Z2luIG9uIHdoaWNoIHRoaXMg cGx1Z2luIHdhcyBpbml0aWFsbHkgYmFzZWQuPC9saT4KCQk8bGk+PHN0cm9uZz5NYXJ5PC9z dHJvbmc+IGNvbXBsZXRlbHkgcmV2aXNlZCB0aGUgcGx1Z2luIGNvZGUuPC9saT4KCQk8bGk+ PHN0cm9uZz5TdHVhcnQ8L3N0cm9uZz4gVHVybmVkIGl0IGludG8gYSBwbHVnaW4sIGFkZGVk IGEgcmV2aXNlZCBoZWxwIHRleHQgYW5kIGFkZGl0aW9uYWwgY29kZS4gTWFpbnRhaW5lZCBh bGwgcGx1Z2luIHZlcnNpb25zIHRpbGwgNC4wLjMuMTcuPC9saT4KCQk8bGk+PHN0cm9uZz53 ZXQ8L3N0cm9uZz4gYWRkZWQgdGhlIHplbV9jb250YWN0X3JhZGlvIHRhZy48L2xpPgoJCTxs aT48c3Ryb25nPlRyYW5xdWlsbG88L3N0cm9uZz4gYWRkZWQgdGhlIGFudGktc3BhbSA8c3Bh biBjbGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNhcHMiPkFQSTwvc3Bhbj48L3NwYW4+IGFu ZCB6ZW1fY29udGFjdF9zZW5kX2FydGljbGUgZnVuY3Rpb25hbGl0eS48L2xpPgoJCTxsaT48 c3Ryb25nPmFzbHN3NjY8L3N0cm9uZz4sIDxzdHJvbmc+amR5a2FzdDwvc3Ryb25nPiBhbmQg b3RoZXJzICg/KSBwcm92aWRlZCBhZGRpdGlvbmFsIGNvZGU8L2xpPgoJCTxsaT48c3Ryb25n PlJ1dWQ8L3N0cm9uZz4gY2xlYW5lZCB1cCBhbmQgYXVkaXRlZCB0aGUgY29kZSB0byB3ZWVk IG91dCBidWdzIGFuZCBjb21wbGV0ZWx5IHJldmlzZWQgdGhlIGhlbHAgdGV4dC4gTWFpbnRh aW5lciBvZiB2ZXJzaW9ucyA0LjAuMy4xOCBhbmQgdXAuPC9saT4KCQk8bGk+U3VwcG9ydGVk IGFuZCB0ZXN0ZWQgdG8gZGVzdHJ1Y3Rpb24gYnkgdGhlIFRleHRwYXR0ZXJuIGNvbW11bml0 eS48L2xpPgoJPC91bD4KCgk8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT48L3A+ CgoJPGgyIGlkPSJhcGkiPlplbSBDb250YWN0IFJlYm9ybiYjODIxNztzIDxzcGFuIGNsYXNz PSJjYXBzIj5BUEk8L3NwYW4+PC9oMj4KCgk8cD5UaGUgcGx1Z2luIDxzcGFuIGNsYXNzPSJj YXBzIj5BUEk8L3NwYW4+IG9mIHplbSBjb250YWN0LCBkZXZlbG9wZWQgYnkgVHJhbnF1aWxs bywgaXMgc2ltaWxhciB0byB0aGUgY29tbWVudHMgPHNwYW4gY2xhc3M9ImNhcHMiPkFQSTwv c3Bhbj4gb2YgVGV4dHBhdHRlcm4sIHdoaWNoIGlzIGV4cGxhaW5lZCBpbiB0aGUgVGV4dGJv b2sgPGEgaHJlZj0iaHR0cDovL3RleHRwYXR0ZXJuLm5ldC93aWtpL2luZGV4LnBocD90aXRs ZT1QbHVnaW5fRGV2ZWxvcG1lbnRfVG9waWNzIj5QbHVnaW4gRGV2ZWxvcG1lbnQgVG9waWNz PC9hPiBhbmQgPGEgaHJlZj0iaHR0cDovL3RleHRwYXR0ZXJuLm5ldC93aWtpL2luZGV4LnBo cD90aXRsZT1Db21iYXRfQ29tbWVudF9TcGFtIj5Db21iYXQgQ29tbWVudCBTcGFtPC9hPi48 L3A+CgoJPHA+VHdvIGNhbGxiYWNrIGV2ZW50cyBleGlzdCBpbiB6ZW1fY29udGFjdF9yZWJv cm46Cgk8dWw+CgkJPGxpPjxjb2RlPnplbWNvbnRhY3Quc3VibWl0PC9jb2RlPiBpcyBjYWxs ZWQgYWZ0ZXIgdGhlIGZvcm0gaXMgc3VibWl0dGVkIGFuZCB0aGUgdmFsdWVzIGFyZSBjaGVj a2VkIGlmIGVtcHR5IG9yIHZhbGlkIGVtYWlsIGFkZHJlc3NlcywgYnV0IGJlZm9yZSB0aGUg bWFpbCBpcyBzZW50LjwvbGk+CgkJPGxpPjxjb2RlPnplbWNvbnRhY3QuZm9ybTwvY29kZT4g bGV0JiM4MjE3O3MgeW91IGluc2VydCBjb250ZW50IGluIHRoZSBjb250YWN0IGZvcm0gYXMg ZGlzcGxheWVkIHRvIHRoZSB2aXNpdG9yLjwvbGk+Cgk8L3VsPjwvcD4KCgk8cD5Gb3IgcmVm ZXJlbmNlIGhlcmUgYXJlIHRoZSBjb21tYW5kcyB0aGF0IHdpbGwgYmUgaW50ZXJlc3Rpbmcg dG8gcGx1Z2luIGRldmVsb3BlcnM6PC9wPgoKPHByZT48Y29kZT4vLyBUaGlzIHdpbGwgY2Fs bCB5b3VyIGZ1bmN0aW9uIGJlZm9yZSB0aGUgZm9ybSBpcyBzdWJtaXR0ZWQKLy8gU28geW91 IGNhbiBhbmFseXNlIHRoZSBzdWJtaXR0ZWQgZGF0YQpyZWdpc3Rlcl9jYWxsYmFjaygmIzM5 O2FiY19teWZ1bmN0aW9uJiMzOTssJiMzOTt6ZW1jb250YWN0LnN1Ym1pdCYjMzk7KTsKPC9j b2RlPgo8Y29kZT4vLyBUaGlzIHdpbGwgY2FsbCB5b3VyIGZ1bmN0aW9uIGFuZCBhZGQgdGhl IG91dHB1dCAodXNlIHJldHVybiAkbXlzdHVmZikKLy8gdG8gdGhlIGNvbnRhY3QtZm9ybS4K cmVnaXN0ZXJfY2FsbGJhY2soJiMzOTthYmNfbXlvdGhlcmZ1bmN0aW9uMiYjMzk7LCYjMzk7 emVtY29udGFjdC5mb3JtJiMzOTspOwo8L2NvZGU+Cjxjb2RlPi8vIFRvIGdldCBob2xkIG9m IHRoZSBmb3JtLXZhcmlhYmxlcyB5b3UgY2FuIHVzZQpnbG9iYWwgemVtX2NvbnRhY3RfZm9y bTsKPC9jb2RlPgo8Y29kZT4vLyBXaXRoIHRoZSBmb2xsb3dpbmcgdHdvIGxpbmVzIHlvdSBj YW4gdGVsbCB6ZW1fY29udGFjdCBpZiB5b3VyCi8vIHBsdWdpbiBmb3VuZCBzcGFtCiRldmFs dWF0b3IgPSYjMzg7IGdldF96ZW1jb250YWN0X2V2YWx1YXRvcigpOwo8L2NvZGU+Cjxjb2Rl Pi8vIFRoZSBwYXNzZWQgdmFsdWUgbXVzdCBiZSBub24temVybyB0byBtYXJrIHRoZSBjb250 ZW50IGFzIHNwYW0uCi8vIFZhbHVlIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCAx LgokZXZhbHVhdG9yIC0mIzYyOyBhZGRfemVtY29udGFjdF9zdGF0dXMoMSk7CjwvY29kZT48 L3ByZT4KCgk8cD5NdWx0aXBsZSBwbHVnaW5zIGNhbiBiZSBhY3RpdmUgYXQgdGhlIHNhbWUg dGltZSBhbmQgZWFjaCBvZiB0aGVtIGNhbiBtYXJrIHRoZSBzdWJtaXR0ZWQgY29udGVudCBh cyBzcGFtIGFuZCBwcmV2ZW50IHRoZSBmb3JtIGZyb20gYmVpbmcgc3VibWl0dGVkLjwvcD4K Cgk8cD48c3Ryb25nPkFuIGV4YW1wbGUgb2YgYSBwbHVnLWluIGNvbm5lY3RpbmcgdG8gWmVt IENvbnRhY3QgUmVib3JuJiM4MjE3O3MgQVBJOjwvc3Ryb25nPjwvcD4KCjxwcmU+PGNvZGU+ cmVnaXN0ZXJfY2FsbGJhY2soJiMzOTtwYXBfemVtY29udGFjdF9mb3JtJiMzOTssJiMzOTt6 ZW1jb250YWN0LmZvcm0mIzM5Oyk7CnJlZ2lzdGVyX2NhbGxiYWNrKCYjMzk7cGFwX3plbWNv bnRhY3Rfc3VibWl0JiMzOTssJiMzOTt6ZW1jb250YWN0LnN1Ym1pdCYjMzk7KTsKPC9jb2Rl Pgo8Y29kZT5mdW5jdGlvbiBwYXBfemVtY29udGFjdF9mb3JtKCkgewogICRmaWVsZCA9ICYj Mzk7JiM2MDtkaXYgc3R5bGU9JiMzNDtkaXNwbGF5Om5vbmUmIzM0OyYjNjI7JiMzOTsuCiAg ICBmaW5wdXQoJiMzOTt0ZXh0JiMzOTssJiMzOTtwaG9uZSYjMzk7LHBzKCYjMzk7cGhvbmUm IzM5OyksJiMzOTsmIzM5OywmIzM5OyYjMzk7LCYjMzk7JiMzOTssJiMzOTsmIzM5OywmIzM5 OyYjMzk7LCYjMzk7cGhvbmUmIzM5OykuJiMzOTsmIzYwO2JyIC8mIzYyOyYjMzk7LgogICAg ZmlucHV0KCYjMzk7dGV4dCYjMzk7LCYjMzk7bWFpbCYjMzk7LHBzKCYjMzk7bWFpbCYjMzk7 KSwmIzM5OyYjMzk7LCYjMzk7JiMzOTssJiMzOTsmIzM5OywmIzM5OyYjMzk7LCYjMzk7JiMz OTssJiMzOTttYWlsJiMzOTspLiYjMzk7JiM2MDsvZGl2JiM2MjsmIzM5OzsKICByZXR1cm4g JGZpZWxkOyYjNjA7L2NvZGUmIzYyOwp9CjwvY29kZT4KPGNvZGU+ZnVuY3Rpb24gcGFwX3pl bWNvbnRhY3Rfc3VibWl0KCkgewogICRjaGVja2luZ19tYWlsX2ZpZWxkID0gdHJpbShwcygm IzM5O21haWwmIzM5OykpOwogICRjaGVja2luZ19waG9uZV9maWVsZCA9IHRyaW0ocHMoJiMz OTtwaG9uZSYjMzk7KSk7CjwvY29kZT4KPGNvZGU+ICAkZXZhbHVhdGlvbiA9JiMzODsgZ2V0 X3plbWNvbnRhY3RfZXZhbHVhdG9yKCk7CjwvY29kZT4KPGNvZGU+ICAvLyBJZiB0aGUgaGlk ZGVuIGZpZWxkcyBhcmUgZmlsbGVkIG91dCwgdGhlIGNvbnRhY3QgZm9ybSB3b24mIzM5O3Qg YmUgc3VibWl0dGVkIQogIGlmICgkY2hlY2tpbmdfbWFpbF9maWVsZCAhPSAmIzM5OyYjMzk7 IG9yICRjaGVja2luZ19waG9uZV9maWVsZCAhPSAmIzM5OyYjMzk7KSB7CiAgICAkZXZhbHVh dGlvbiAtJiM2MjsgYWRkX3plbWNvbnRhY3Rfc3RhdHVzKDEpOwogIH0KICByZXR1cm47Cn0K PC9jb2RlPjwvcHJlPgoKCTxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4i O3M6NDoiY29kZSI7czoyMDgzNDoiCmZ1bmN0aW9uIHplbV9jb250YWN0KCRhdHRzLCAkdGhp bmcgPSAnJykKewoJZ2xvYmFsICRzaXRlbmFtZSwgJHByZWZzLCAkcHJvZHVjdGlvbl9zdGF0 dXMsICR6ZW1fY29udGFjdF9mcm9tLAoJCSR6ZW1fY29udGFjdF9yZWNpcGllbnQsICR6ZW1f Y29udGFjdF9lcnJvciwgJHplbV9jb250YWN0X3N1Ym1pdCwKCQkkemVtX2NvbnRhY3RfZm9y bSwgJHplbV9jb250YWN0X2xhYmVscywgJHplbV9jb250YWN0X3ZhbHVlczsKCglleHRyYWN0 KHplbV9jb250YWN0X2xBdHRzKGFycmF5KAoJCSdjb3B5c2VuZGVyJwk9PiAwLAoJCSdmb3Jt JwkJPT4gJycsCgkJJ2Zyb20nCQk9PiAnJywKCQknZnJvbV9mb3JtJwk9PiAnJywKCQknbGFi ZWwnCQk9PiB6ZW1fY29udGFjdF9nVHh0KCdjb250YWN0JyksCgkJJ3JlZGlyZWN0Jwk9PiAn JywKCQknc2hvd19lcnJvcicJPT4gMSwKCQknc2hvd19pbnB1dCcJPT4gMSwKCQknc2VuZF9h cnRpY2xlJwk9PiAwLAoJCSdzdWJqZWN0Jwk9PiB6ZW1fY29udGFjdF9nVHh0KCdlbWFpbF9z dWJqZWN0JywgaHRtbF9lbnRpdHlfZGVjb2RlKCRzaXRlbmFtZSxFTlRfUVVPVEVTKSksCgkJ J3N1YmplY3RfZm9ybScJPT4gJycsCgkJJ3RvJwkJPT4gJycsCgkJJ3RvX2Zvcm0nCT0+ICcn LAoJCSd0aGFua3MnCT0+IGdyYWYoemVtX2NvbnRhY3RfZ1R4dCgnZW1haWxfdGhhbmtzJykp LAoJCSd0aGFua3NfZm9ybScJPT4gJycKCSksICRhdHRzKSk7CgoJdW5zZXQoJGF0dHNbJ3No b3dfZXJyb3InXSwgJGF0dHNbJ3Nob3dfaW5wdXQnXSk7CgkkemVtX2NvbnRhY3RfZm9ybV9p ZCA9IG1kNShzZXJpYWxpemUoJGF0dHMpLnByZWdfcmVwbGFjZSgnL1tcdFxzXHJcbl0vJywn JywkdGhpbmcpKTsKCSR6ZW1fY29udGFjdF9zdWJtaXQgPSAocHMoJ3plbV9jb250YWN0X2Zv cm1faWQnKSA9PSAkemVtX2NvbnRhY3RfZm9ybV9pZCk7CgoJaWYgKCFpc19jYWxsYWJsZSgn bWFpbCcpKQoJewoJCXJldHVybiAoJHByb2R1Y3Rpb25fc3RhdHVzID09ICdsaXZlJykgPwoJ CQl6ZW1fY29udGFjdF9nVHh0KCdtYWlsX3NvcnJ5JykgOgoJCQlnVHh0KCd3YXJuX21haWxf dW5hdmFpbGFibGUnKTsKCX0KCglzdGF0aWMgJGhlYWRlcnNfc2VudCA9IGZhbHNlOwoJaWYg KCEkaGVhZGVyc19zZW50KSB7CgkJaGVhZGVyKCdMYXN0LU1vZGlmaWVkOiAnLmdtZGF0ZSgn RCwgZCBNIFkgSDppOnMnLHRpbWUoKS0zNjAwKjI0KjcpLicgR01UJyk7CgkJaGVhZGVyKCdF eHBpcmVzOiAnLmdtZGF0ZSgnRCwgZCBNIFkgSDppOnMnLHRpbWUoKSs2MDApLicgR01UJyk7 CgkJaGVhZGVyKCdDYWNoZS1Db250cm9sOiBuby1jYWNoZSwgbXVzdC1yZXZhbGlkYXRlJyk7 CgkJJGhlYWRlcnNfc2VudCA9IHRydWU7Cgl9CgoJJG5vbmNlICAgPSBteXNxbF9yZWFsX2Vz Y2FwZV9zdHJpbmcocHMoJ3plbV9jb250YWN0X25vbmNlJykpOwoJJHJlbm9uY2UgPSBmYWxz ZTsKCglpZiAoJHplbV9jb250YWN0X3N1Ym1pdCkKCXsKCQlzYWZlX2RlbGV0ZSgndHhwX2Rp c2N1c3Nfbm9uY2UnLCAnaXNzdWVfdGltZSA8IGRhdGVfc3ViKG5vdygpLCBpbnRlcnZhbCAx MCBtaW51dGUpJyk7CgkJaWYgKCRycyA9IHNhZmVfcm93KCd1c2VkJywgJ3R4cF9kaXNjdXNz X25vbmNlJywgIm5vbmNlID0gJyRub25jZSciKSkKCQl7CgkJCWlmICgkcnNbJ3VzZWQnXSkK CQkJewoJCQkJdW5zZXQoJHplbV9jb250YWN0X2Vycm9yKTsKCQkJCSR6ZW1fY29udGFjdF9l cnJvcltdID0gemVtX2NvbnRhY3RfZ1R4dCgnZm9ybV91c2VkJyk7CgkJCQkkcmVub25jZSA9 IHRydWU7CgkJCQkkX1BPU1QgPSBhcnJheSgpOwoJCQkJJF9QT1NUWyd6ZW1fY29udGFjdF9z dWJtaXQnXSA9IFRSVUU7CgkJCQkkX1BPU1RbJ3plbV9jb250YWN0X2Zvcm1faWQnXSA9ICR6 ZW1fY29udGFjdF9mb3JtX2lkOwoJCQkJJF9QT1NUWyd6ZW1fY29udGFjdF9ub25jZSddID0g JG5vbmNlOwoJCQl9CgkJfQoJCWVsc2UKCQl7CgkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0g emVtX2NvbnRhY3RfZ1R4dCgnZm9ybV9leHBpcmVkJyk7CgkJCSRyZW5vbmNlID0gdHJ1ZTsK CQl9Cgl9CgoJaWYgKCR6ZW1fY29udGFjdF9zdWJtaXQgYW5kICRub25jZSBhbmQgISRyZW5v bmNlKQoJewoJCSR6ZW1fY29udGFjdF9ub25jZSA9ICRub25jZTsKCX0KCgllbHNlaWYgKCEk c2hvd19lcnJvciBvciAkc2hvd19pbnB1dCkKCXsKCQkkemVtX2NvbnRhY3Rfbm9uY2UgPSBt ZDUodW5pcWlkKHJhbmQoKSwgdHJ1ZSkpOwoJCXNhZmVfaW5zZXJ0KCd0eHBfZGlzY3Vzc19u b25jZScsICJpc3N1ZV90aW1lID0gbm93KCksIG5vbmNlID0gJyR6ZW1fY29udGFjdF9ub25j ZSciKTsKCX0KCgkkZm9ybSA9ICgkZm9ybSkgPyBmZXRjaF9mb3JtKCRmb3JtKSA6ICR0aGlu ZzsKCglpZiAoZW1wdHkoJGZvcm0pKQoJewoJCSRmb3JtID0gJwo8dHhwOnplbV9jb250YWN0 X3RleHQgbGFiZWw9IicuemVtX2NvbnRhY3RfZ1R4dCgnbmFtZScpLiciIC8+PGJyIC8+Cjx0 eHA6emVtX2NvbnRhY3RfZW1haWwgLz48YnIgLz4nLgooJHNlbmRfYXJ0aWNsZSA/ICc8dHhw OnplbV9jb250YWN0X2VtYWlsIHNlbmRfYXJ0aWNsZT0iMSIgbGFiZWw9IicuemVtX2NvbnRh Y3RfZ1R4dCgncmVjaXBpZW50JykuJyIgLz48YnIgLz4nIDogJycpLgonPHR4cDp6ZW1fY29u dGFjdF90ZXh0YXJlYSAvPjxiciAvPgo8dHhwOnplbV9jb250YWN0X3N1Ym1pdCAvPgonOwoJ fQoKCSRmb3JtID0gcGFyc2UoJGZvcm0pOwoKCWlmICgkdG9fZm9ybSkKCXsKCQkkdG8gPSBw YXJzZShmZXRjaF9mb3JtKCR0b19mb3JtKSk7Cgl9CgoJaWYgKCEkdG8gYW5kICEkc2VuZF9h cnRpY2xlKQoJewoJCXJldHVybiB6ZW1fY29udGFjdF9nVHh0KCd0b19taXNzaW5nJyk7Cgl9 CgoJJG91dCA9ICcnOwoKCWlmICghJHplbV9jb250YWN0X3N1Ym1pdCkgewoJICAjIGRvbid0 IHNob3cgZXJyb3JzIG9yIHNlbmQgbWFpbAoJfQoKCWVsc2VpZiAoIWVtcHR5KCR6ZW1fY29u dGFjdF9lcnJvcikpCgl7CgkJaWYgKCRzaG93X2Vycm9yIG9yICEkc2hvd19pbnB1dCkKCQl7 CgkJCSRvdXQgLj0gbi4nPHVsIGNsYXNzPSJ6ZW1FcnJvciI+JzsKCgkJCWZvcmVhY2ggKGFy cmF5X3VuaXF1ZSgkemVtX2NvbnRhY3RfZXJyb3IpIGFzICRlcnJvcikKCQkJewoJCQkJJG91 dCAuPSBuLnQuJzxsaT4nLiRlcnJvci4nPC9saT4nOwoJCQl9CgoJCQkkb3V0IC49IG4uJzwv dWw+JzsKCgkJCWlmICghJHNob3dfaW5wdXQpIHJldHVybiAkb3V0OwoJCX0KCX0KCgllbHNl aWYgKCRzaG93X2lucHV0IGFuZCBpc19hcnJheSgkemVtX2NvbnRhY3RfZm9ybSkpCgl7CgkJ Ly8vIGxvYWQgYW5kIGNoZWNrIHNwYW0gcGx1Z2lucy8KCQljYWxsYmFja19ldmVudCgnemVt Y29udGFjdC5zdWJtaXQnKTsKCQkkZXZhbHVhdGlvbiA9JiBnZXRfemVtY29udGFjdF9ldmFs dWF0b3IoKTsKCQkkY2xlYW4gPSAkZXZhbHVhdGlvbi0+Z2V0X3plbWNvbnRhY3Rfc3RhdHVz KCk7CgkJaWYgKCRjbGVhbiAhPSAwKSB7CgkJCXJldHVybiB6ZW1fY29udGFjdF9nVHh0KCdz cGFtJyk7CgkJfQoKCQlpZiAoJGZyb21fZm9ybSkKCQl7CgkJCSRmcm9tID0gcGFyc2UoZmV0 Y2hfZm9ybSgkZnJvbV9mb3JtKSk7CgkJfQoKCQlpZiAoJHN1YmplY3RfZm9ybSkKCQl7CgkJ CSRzdWJqZWN0ID0gcGFyc2UoZmV0Y2hfZm9ybSgkc3ViamVjdF9mb3JtKSk7CgkJfQoKCQkk c2VwID0gIWlzX3dpbmRvd3MoKSA/ICJcbiIgOiAiXHJcbiI7CgoJCSRtc2cgPSBhcnJheSgp OwoKCQlmb3JlYWNoICgkemVtX2NvbnRhY3RfbGFiZWxzIGFzICRuYW1lID0+ICRsYWJlbCkK CQl7CgkJCWlmICghdHJpbSgkemVtX2NvbnRhY3RfdmFsdWVzWyRuYW1lXSkpIGNvbnRpbnVl OwoJCQkkbXNnW10gPSAkbGFiZWwuJzogJy4kemVtX2NvbnRhY3RfdmFsdWVzWyRuYW1lXTsK CQl9CgoJCWlmICgkc2VuZF9hcnRpY2xlKQoJCXsKCQkJZ2xvYmFsICR0aGlzYXJ0aWNsZTsK CQkJJHN1YmplY3QgPSBzdHJfcmVwbGFjZSgnJiMzODsnLCAnJicsICR0aGlzYXJ0aWNsZVsn dGl0bGUnXSk7CgkJCSRtc2dbXSA9IHBlcm1saW5rdXJsKCR0aGlzYXJ0aWNsZSk7CgkJCSRt c2dbXSA9ICRzdWJqZWN0OwoJCQkkc19hciA9IGFycmF5KCcmIzgyMTY7JywgJyYjODIxNzsn LCAnJiM4MjIwOycsICcmIzgyMjE7JywgJyYjODIxNzsnLCAnJiM4MjQyOycsICcmIzgyNDM7 JywgJyYjODIzMDsnLCAnJiM4MjExOycsICcmIzgyMTI7JywgJyYjMjE1OycsICcmIzg0ODI7 JywgJyYjMTc0OycsICcmIzE2OTsnLCAnJmx0OycsICcmZ3Q7JywgJyZxdW90OycsICcmYW1w OycsICcmIzM4OycsICJcdCIsICc8cCcpOwoJCQlpZiAoJHByZWZzWydvdmVycmlkZV9lbWFp bGNoYXJzZXQnXSBhbmQgaXNfY2FsbGFibGUoJ3V0ZjhfZGVjb2RlJykpIHsKCQkJCSRyX2Fy ID0gYXJyYXkoIiciLCAiJyIsICciJywgJyInLCAiJyIsICInIiwgJyInLCAnLi4uJywgJy0n LCAnLS0nLCAneCcsICdbdG1dJywgJyhyKScsICcoYyknLCAnPCcsICc+JywgJyInLCAnJics ICcmJywgJyAnLCAiXG48cCIpOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJHJfYXIgPSBhcnJh eSgn4oCYJywgJ+KAmScsICfigJwnLCAn4oCdJywgJ+KAmScsICfigLInLCAn4oCzJywgJ+KA picsICfigJMnLCAn4oCUJywgJ8OXJywgJ+KEoicsICfCricsICfCqScsICc8JywgJz4nLCAn IicsICcmJywgJyYnLCAnICcsICJcbjxwIik7CgkJCX0KCQkJJG1zZ1tdID0gdHJpbShzdHJp cF90YWdzKHN0cl9yZXBsYWNlKCRzX2FyLCRyX2FyLCh0cmltKHN0cmlwX3RhZ3MoJHRoaXNh cnRpY2xlWydleGNlcnB0J10pKSA/ICR0aGlzYXJ0aWNsZVsnZXhjZXJwdCddIDogJHRoaXNh cnRpY2xlWydib2R5J10pKSkpOwoJCQlpZiAoZW1wdHkoJHplbV9jb250YWN0X3JlY2lwaWVu dCkpCgkJCXsKCQkJCXJldHVybiB6ZW1fY29udGFjdF9nVHh0KCdmaWVsZF9taXNzaW5nJywg emVtX2NvbnRhY3RfZ1R4dCgncmVjaXBpZW50JykpOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJ JHRvID0gJHplbV9jb250YWN0X3JlY2lwaWVudDsKCQkJfQoJCX0KCgkJJG1zZyA9IGpvaW4o IlxuXG4iLCAkbXNnKTsKCQkkbXNnID0gc3RyX3JlcGxhY2UoIlxyXG4iLCAiXG4iLCAkbXNn KTsKCQkkbXNnID0gc3RyX3JlcGxhY2UoIlxyIiwgIlxuIiwgJG1zZyk7CgkJJG1zZyA9IHN0 cl9yZXBsYWNlKCJcbiIsICRzZXAsICRtc2cpOwoKCQlpZiAoJGZyb20pCgkJewoJCQkkcmVw bHkgPSAkemVtX2NvbnRhY3RfZnJvbTsKCQl9CgoJCWVsc2UKCQl7CgkJCSRmcm9tID0gJHpl bV9jb250YWN0X2Zyb207CgkJCSRyZXBseSA9ICcnOwoJCX0KCgkJJGZyb20gICAgPSB6ZW1f Y29udGFjdF9zdHJpcCgkZnJvbSk7CgkJJHRvICAgICAgPSB6ZW1fY29udGFjdF9zdHJpcCgk dG8pOwoJCSRzdWJqZWN0ID0gemVtX2NvbnRhY3Rfc3RyaXAoJHN1YmplY3QpOwoJCSRyZXBs eSAgID0gemVtX2NvbnRhY3Rfc3RyaXAoJHJlcGx5KTsKCQkkbXNnICAgICA9IHplbV9jb250 YWN0X3N0cmlwKCRtc2csIEZBTFNFKTsKCgkJaWYgKCRwcmVmc1snb3ZlcnJpZGVfZW1haWxj aGFyc2V0J10gYW5kIGlzX2NhbGxhYmxlKCd1dGY4X2RlY29kZScpKQoJCXsKCQkJJGNoYXJz ZXQgPSAnSVNPLTg4NTktMSc7CgkJCSRzdWJqZWN0ID0gdXRmOF9kZWNvZGUoJHN1YmplY3Qp OwoJCQkkbXNnICAgICA9IHV0ZjhfZGVjb2RlKCRtc2cpOwoJCX0KCgkJZWxzZQoJCXsKCQkJ JGNoYXJzZXQgPSAnVVRGLTgnOwoJCX0KCgkJJHN1YmplY3QgPSB6ZW1fY29udGFjdF9tYWls aGVhZGVyKCRzdWJqZWN0LCAndGV4dCcpOwoKCQkkaGVhZGVycyA9ICdGcm9tOiAnLiRmcm9t LgoJCQkoJHJlcGx5ID8gKCRzZXAuJ1JlcGx5LVRvOiAnLiRyZXBseSkgOiAnJykuCgkJCSRz ZXAuJ1gtTWFpbGVyOiBUZXh0cGF0dGVybiAoemVtX2NvbnRhY3RfcmVib3JuKScuCgkJCSRz ZXAuJ1gtT3JpZ2luYXRpbmctSVA6ICcuemVtX2NvbnRhY3Rfc3RyaXAoKCFlbXB0eSgkX1NF UlZFUlsnSFRUUF9YX0ZPUldBUkRFRF9GT1InXSkgPyAkX1NFUlZFUlsnSFRUUF9YX0ZPUldB UkRFRF9GT1InXS4nIHZpYSAnIDogJycpLiRfU0VSVkVSWydSRU1PVEVfQUREUiddKS4KCQkJ JHNlcC4nQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdCcuCgkJCSRzZXAuJ0NvbnRl bnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0iJy4kY2hhcnNldC4nIic7CgoJCXNhZmVf dXBkYXRlKCd0eHBfZGlzY3Vzc19ub25jZScsICJ1c2VkID0gJzEnLCBpc3N1ZV90aW1lID0g bm93KCkiLCAibm9uY2UgPSAnJG5vbmNlJyIpOwoKCQlpZiAobWFpbCgkdG8sICRzdWJqZWN0 LCAkbXNnLCAkaGVhZGVycykpCgkJewoJCQkkX1BPU1QgPSBhcnJheSgpOwoKCQkJaWYgKCRj b3B5c2VuZGVyIGFuZCAkemVtX2NvbnRhY3RfZnJvbSkKCQkJewoJCQkJbWFpbCh6ZW1fY29u dGFjdF9zdHJpcCgkemVtX2NvbnRhY3RfZnJvbSksICRzdWJqZWN0LCAkbXNnLCAkaGVhZGVy cyk7CgkJCX0KCgkJCWlmICgkcmVkaXJlY3QpCgkJCXsKCQkJCXdoaWxlIChAb2JfZW5kX2Ns ZWFuKCkpOwoJCQkJJHVyaSA9IGh1Lmx0cmltKCRyZWRpcmVjdCwnLycpOwoJCQkJaWYgKGVt cHR5KCRfU0VSVkVSWydGQ0dJX1JPTEUnXSkgYW5kIGVtcHR5KCRfRU5WWydGQ0dJX1JPTEUn XSkpCgkJCQl7CgkJCQkJdHhwX3N0YXR1c19oZWFkZXIoJzMwMyBTZWUgT3RoZXInKTsKCQkJ CQloZWFkZXIoJ0xvY2F0aW9uOiAnLiR1cmkpOwoJCQkJCWhlYWRlcignQ29ubmVjdGlvbjog Y2xvc2UnKTsKCQkJCQloZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoOiAwJyk7CgkJCQl9CgkJCQll bHNlCgkJCQl7CgkJCQkJJHVyaSA9IGh0bWxzcGVjaWFsY2hhcnMoJHVyaSk7CgkJCQkJJHJl ZnJlc2ggPSB6ZW1fY29udGFjdF9nVHh0KCdyZWZyZXNoJyk7CgkJCQkJZWNobyA8PDxFTkQK PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlv bmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5z aXRpb25hbC5kdGQiPgo8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRt bCIgeG1sOmxhbmc9ImVuIiBsYW5nPSJlbiI+CjxoZWFkPgoJPHRpdGxlPiRzaXRlbmFtZTwv dGl0bGU+Cgk8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQv aHRtbDsgY2hhcnNldD11dGYtOCIgLz4KCTxtZXRhIGh0dHAtZXF1aXY9InJlZnJlc2giIGNv bnRlbnQ9IjA7dXJsPSR1cmkiIC8+CjwvaGVhZD4KPGJvZHk+CjxhIGhyZWY9IiR1cmkiPiRy ZWZyZXNoPC9hPgo8L2JvZHk+CjwvaHRtbD4KRU5EOwoJCQkJfQoJCQkJZXhpdDsKCQkJfQoK CQkJZWxzZQoJCQl7CgkJCQlyZXR1cm4gJzxkaXYgY2xhc3M9InplbVRoYW5rcyIgaWQ9Inpj cicuJHplbV9jb250YWN0X2Zvcm1faWQuJyI+JyAuCgkJCQkJKCR0aGFua3NfZm9ybSA/IGZl dGNoX2Zvcm0oJHRoYW5rc19mb3JtKSA6ICR0aGFua3MpIC4KCQkJCQknPC9kaXY+JzsKCQkJ fQoJCX0KCgkJZWxzZQoJCXsKCQkJJG91dCAuPSBncmFmKHplbV9jb250YWN0X2dUeHQoJ21h aWxfc29ycnknKSk7CgkJfQoJfQoKCWlmICgkc2hvd19pbnB1dCBhbmQgISRzZW5kX2FydGlj bGUgb3IgZ3BzKCd6ZW1fY29udGFjdF9zZW5kX2FydGljbGUnKSkKCXsKCQlyZXR1cm4gJzxm b3JtIG1ldGhvZD0icG9zdCInLigoISRzaG93X2Vycm9yIGFuZCAkemVtX2NvbnRhY3RfZXJy b3IpID8gJycgOiAnIGlkPSJ6Y3InLiR6ZW1fY29udGFjdF9mb3JtX2lkLiciJykuJyBjbGFz cz0iemVtQ29udGFjdEZvcm0iIGFjdGlvbj0iJy5odG1sc3BlY2lhbGNoYXJzKHNlcnZlclNl dCgnUkVRVUVTVF9VUkknKSkuJyN6Y3InLiR6ZW1fY29udGFjdF9mb3JtX2lkLiciPicuCgkJ CSggJGxhYmVsID8gbi4nPGZpZWxkc2V0PicgOiBuLic8ZGl2PicgKS4KCQkJKCAkbGFiZWwg PyBuLic8bGVnZW5kPicuaHRtbHNwZWNpYWxjaGFycygkbGFiZWwpLic8L2xlZ2VuZD4nIDog JycgKS4KCQkJJG91dC4KCQkJbi4nPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iemVtX2Nv bnRhY3Rfbm9uY2UiIHZhbHVlPSInLiR6ZW1fY29udGFjdF9ub25jZS4nIiAvPicuCgkJCW4u JzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InplbV9jb250YWN0X2Zvcm1faWQiIHZhbHVl PSInLiR6ZW1fY29udGFjdF9mb3JtX2lkLiciIC8+Jy4KCQkJJGZvcm0uCgkJCWNhbGxiYWNr X2V2ZW50KCd6ZW1jb250YWN0LmZvcm0nKS4KCQkJKCAkbGFiZWwgPyAobi4nPC9maWVsZHNl dD4nKSA6IChuLic8L2Rpdj4nKSApLgoJCQluLic8L2Zvcm0+JzsKCX0KCglyZXR1cm4gJyc7 Cn0KCmZ1bmN0aW9uIHplbV9jb250YWN0X3N0cmlwKCRzdHIsICRoZWFkZXIgPSBUUlVFKSB7 CglpZiAoJGhlYWRlcikgJHN0ciA9IHN0cmlwX3JuKCRzdHIpOwoJcmV0dXJuIHByZWdfcmVw bGFjZSgnL1tceDAwXS8nLCAnICcsICRzdHIpOwp9CgpmdW5jdGlvbiB6ZW1fY29udGFjdF90 ZXh0KCRhdHRzKQp7CglnbG9iYWwgJHplbV9jb250YWN0X2Vycm9yLCAkemVtX2NvbnRhY3Rf c3VibWl0OwoKCWV4dHJhY3QoemVtX2NvbnRhY3RfbEF0dHMoYXJyYXkoCgkJJ2JyZWFrJwkJ PT4gYnIsCgkJJ2RlZmF1bHQnCT0+ICcnLAoJCSdpc0Vycm9yJwk9PiAnJywKCQknbGFiZWwn CQk9PiB6ZW1fY29udGFjdF9nVHh0KCd0ZXh0JyksCgkJJ21heCcJCT0+IDEwMCwKCQknbWlu JwkJPT4gMCwKCQknbmFtZScJCT0+ICcnLAoJCSdyZXF1aXJlZCcJPT4gMSwKCQknc2l6ZScJ CT0+ICcnCgkpLCAkYXR0cykpOwoKCSRtaW4gPSBpbnR2YWwoJG1pbik7CgkkbWF4ID0gaW50 dmFsKCRtYXgpOwoJJHNpemUgPSBpbnR2YWwoJHNpemUpOwoKCWlmIChlbXB0eSgkbmFtZSkp ICRuYW1lID0gemVtX2NvbnRhY3RfbGFiZWwybmFtZSgkbGFiZWwpOwoKCWlmICgkemVtX2Nv bnRhY3Rfc3VibWl0KQoJewoJCSR2YWx1ZSA9IHRyaW0ocHMoJG5hbWUpKTsKCQkkdXRmOGxl biA9IHByZWdfbWF0Y2hfYWxsKCIvLi9zdSIsICR2YWx1ZSwgJHV0Zjhhcik7CgkJJGhsYWJl bCA9IGh0bWxzcGVjaWFsY2hhcnMoJGxhYmVsKTsKCgkJaWYgKHN0cmxlbigkdmFsdWUpKQoJ CXsKCQkJaWYgKCEkdXRmOGxlbikKCQkJewoJCQkJJHplbV9jb250YWN0X2Vycm9yW10gPSB6 ZW1fY29udGFjdF9nVHh0KCdpbnZhbGlkX3V0ZjgnLCAkaGxhYmVsKTsKCQkJCSRpc0Vycm9y ID0gImVycm9yRWxlbWVudCI7CgkJCX0KCgkJCWVsc2VpZiAoJG1pbiBhbmQgJHV0ZjhsZW4g PCAkbWluKQoJCQl7CgkJCQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9IHplbV9jb250YWN0X2dU eHQoJ21pbl93YXJuaW5nJywgJGhsYWJlbCwgJG1pbik7CgkJCQkkaXNFcnJvciA9ICJlcnJv ckVsZW1lbnQiOwoJCQl9CgoJCQllbHNlaWYgKCRtYXggYW5kICR1dGY4bGVuID4gJG1heCkK CQkJewoJCQkJJHplbV9jb250YWN0X2Vycm9yW10gPSB6ZW1fY29udGFjdF9nVHh0KCdtYXhf d2FybmluZycsICRobGFiZWwsICRtYXgpOwoJCQkJJGlzRXJyb3IgPSAiZXJyb3JFbGVtZW50 IjsKCQkJCSMkdmFsdWUgPSBqb2luKCcnLGFycmF5X3NsaWNlKCRhclswXSwwLCRtYXgpKTsK CQkJfQoKCQkJZWxzZQoJCQl7CgkJCQl6ZW1fY29udGFjdF9zdG9yZSgkbmFtZSwgJGxhYmVs LCAkdmFsdWUpOwoJCQl9CgkJfQoJCWVsc2VpZiAoJHJlcXVpcmVkKQoJCXsKCQkJJHplbV9j b250YWN0X2Vycm9yW10gPSB6ZW1fY29udGFjdF9nVHh0KCdmaWVsZF9taXNzaW5nJywgJGhs YWJlbCk7CgkJCSRpc0Vycm9yID0gImVycm9yRWxlbWVudCI7CgkJfQoJfQoKCWVsc2UKCXsK CQkkdmFsdWUgPSAkZGVmYXVsdDsKCX0KCgkkc2l6ZSA9ICgkc2l6ZSkgPyAnIHNpemU9Iicu JHNpemUuJyInIDogJyc7CgkkbWF4bGVuZ3RoID0gKCRtYXgpID8gJyBtYXhsZW5ndGg9Iicu JG1heC4nIicgOiAnJzsKCgkkemVtUmVxdWlyZWQgPSAkcmVxdWlyZWQgPyAnemVtUmVxdWly ZWQnIDogJyc7CgogICAgICAgIHJldHVybiAnPGxhYmVsIGZvcj0iJy4kbmFtZS4nIiBjbGFz cz0iemVtVGV4dCAnLiR6ZW1SZXF1aXJlZC4kaXNFcnJvci4nICcuJG5hbWUuJyI+Jy5odG1s c3BlY2lhbGNoYXJzKCRsYWJlbCkuJzwvbGFiZWw+Jy4kYnJlYWsuCgkJJzxpbnB1dCB0eXBl PSJ0ZXh0IiBpZD0iJy4kbmFtZS4nIiBjbGFzcz0iemVtVGV4dCAnLiR6ZW1SZXF1aXJlZC4k aXNFcnJvci4nIiBuYW1lPSInLiRuYW1lLiciIHZhbHVlPSInLmh0bWxzcGVjaWFsY2hhcnMo JHZhbHVlKS4nIicuJHNpemUuJG1heGxlbmd0aC4nIC8+JzsKfQoKZnVuY3Rpb24gemVtX2Nv bnRhY3RfdGV4dGFyZWEoJGF0dHMpCnsKCWdsb2JhbCAkemVtX2NvbnRhY3RfZXJyb3IsICR6 ZW1fY29udGFjdF9zdWJtaXQ7CgoJZXh0cmFjdCh6ZW1fY29udGFjdF9sQXR0cyhhcnJheSgK CQknYnJlYWsnCQk9PiBiciwKCQknY29scycJCT0+IDU4LAoJCSdkZWZhdWx0Jwk9PiAnJywK CQknaXNFcnJvcicJPT4gJycsCgkJJ2xhYmVsJwkJPT4gemVtX2NvbnRhY3RfZ1R4dCgnbWVz c2FnZScpLAoJCSdtYXgnCQk9PiAxMDAwMCwKCQknbWluJwkJPT4gMCwKCQknbmFtZScJCT0+ ICcnLAoJCSdyZXF1aXJlZCcJPT4gMSwKCQkncm93cycJCT0+IDgKCSksICRhdHRzKSk7CgoJ JG1pbiA9IGludHZhbCgkbWluKTsKCSRtYXggPSBpbnR2YWwoJG1heCk7CgkkY29scyA9IGlu dHZhbCgkY29scyk7Cgkkcm93cyA9IGludHZhbCgkcm93cyk7CgoJaWYgKGVtcHR5KCRuYW1l KSkgJG5hbWUgPSB6ZW1fY29udGFjdF9sYWJlbDJuYW1lKCRsYWJlbCk7CgoJaWYgKCR6ZW1f Y29udGFjdF9zdWJtaXQpCgl7CgkJJHZhbHVlID0gcHJlZ19yZXBsYWNlKCcvXlxzKltcclxu XS8nLCAnJywgcnRyaW0ocHMoJG5hbWUpKSk7CgkJJHV0ZjhsZW4gPSBwcmVnX21hdGNoX2Fs bCgiLy4vc3UiLCBsdHJpbSgkdmFsdWUpLCAkdXRmOGFyKTsKCQkkaGxhYmVsID0gaHRtbHNw ZWNpYWxjaGFycygkbGFiZWwpOwoKCQlpZiAoc3RybGVuKGx0cmltKCR2YWx1ZSkpKQoJCXsK CQkJaWYgKCEkdXRmOGxlbikKCQkJewoJCQkJJHplbV9jb250YWN0X2Vycm9yW10gPSB6ZW1f Y29udGFjdF9nVHh0KCdpbnZhbGlkX3V0ZjgnLCAkaGxhYmVsKTsKCQkJCSRpc0Vycm9yID0g ImVycm9yRWxlbWVudCI7CgkJCX0KCgkJCWVsc2VpZiAoJG1pbiBhbmQgJHV0ZjhsZW4gPCAk bWluKQoJCQl7CgkJCQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9IHplbV9jb250YWN0X2dUeHQo J21pbl93YXJuaW5nJywgJGhsYWJlbCwgJG1pbik7CgkJCQkkaXNFcnJvciA9ICJlcnJvckVs ZW1lbnQiOwoJCQl9CgoJCQllbHNlaWYgKCRtYXggYW5kICR1dGY4bGVuID4gJG1heCkKCQkJ ewoJCQkJJHplbV9jb250YWN0X2Vycm9yW10gPSB6ZW1fY29udGFjdF9nVHh0KCdtYXhfd2Fy bmluZycsICRobGFiZWwsICRtYXgpOwoJCQkJJGlzRXJyb3IgPSAiZXJyb3JFbGVtZW50IjsK CQkJCSMkdmFsdWUgPSBqb2luKCcnLGFycmF5X3NsaWNlKCR1dGY4YXJbMF0sMCwkbWF4KSk7 CgkJCX0KCgkJCWVsc2UKCQkJewoJCQkJemVtX2NvbnRhY3Rfc3RvcmUoJG5hbWUsICRsYWJl bCwgJHZhbHVlKTsKCQkJfQoJCX0KCgkJZWxzZWlmICgkcmVxdWlyZWQpCgkJewoJCQkkemVt X2NvbnRhY3RfZXJyb3JbXSA9IHplbV9jb250YWN0X2dUeHQoJ2ZpZWxkX21pc3NpbmcnLCAk aGxhYmVsKTsKCQkJJGlzRXJyb3IgPSAiZXJyb3JFbGVtZW50IjsKCQl9Cgl9CgoJZWxzZQoJ ewoJCSR2YWx1ZSA9ICRkZWZhdWx0OwoJfQoKCSR6ZW1SZXF1aXJlZCA9ICRyZXF1aXJlZCA/ ICd6ZW1SZXF1aXJlZCcgOiAnJzsKCglyZXR1cm4gJzxsYWJlbCBmb3I9IicuJG5hbWUuJyIg Y2xhc3M9InplbVRleHRhcmVhICcuJHplbVJlcXVpcmVkLiRpc0Vycm9yLicgJy4kbmFtZS4n Ij4nLmh0bWxzcGVjaWFsY2hhcnMoJGxhYmVsKS4nPC9sYWJlbD4nLiRicmVhay4KCQknPHRl eHRhcmVhIGlkPSInLiRuYW1lLiciIGNsYXNzPSJ6ZW1UZXh0YXJlYSAnLiR6ZW1SZXF1aXJl ZC4kaXNFcnJvci4nIiBuYW1lPSInLiRuYW1lLiciIGNvbHM9IicuJGNvbHMuJyIgcm93cz0i Jy4kcm93cy4nIj4nLmh0bWxzcGVjaWFsY2hhcnMoJHZhbHVlKS4nPC90ZXh0YXJlYT4nOwp9 CgpmdW5jdGlvbiB6ZW1fY29udGFjdF9lbWFpbCgkYXR0cykKewoJZ2xvYmFsICR6ZW1fY29u dGFjdF9lcnJvciwgJHplbV9jb250YWN0X3N1Ym1pdCwgJHplbV9jb250YWN0X2Zyb20sICR6 ZW1fY29udGFjdF9yZWNpcGllbnQ7CgoJZXh0cmFjdCh6ZW1fY29udGFjdF9sQXR0cyhhcnJh eSgKCQknZGVmYXVsdCcJPT4gJycsCgkJJ2lzRXJyb3InCT0+ICcnLAoJCSdsYWJlbCcJCT0+ IHplbV9jb250YWN0X2dUeHQoJ2VtYWlsJyksCgkJJ21heCcJCT0+IDEwMCwKCQknbWluJwkJ PT4gMCwKCQknbmFtZScJCT0+ICcnLAoJCSdyZXF1aXJlZCcJPT4gMSwKCQknYnJlYWsnCQk9 PiBiciwKCQknc2l6ZScJCT0+ICcnLAoJCSdzZW5kX2FydGljbGUnCT0+IDAKCSksICRhdHRz KSk7CgoJaWYgKGVtcHR5KCRuYW1lKSkgJG5hbWUgPSB6ZW1fY29udGFjdF9sYWJlbDJuYW1l KCRsYWJlbCk7CgoJJGVtYWlsID0gJHplbV9jb250YWN0X3N1Ym1pdCA/IHRyaW0ocHMoJG5h bWUpKSA6ICRkZWZhdWx0OwoKCWlmICgkemVtX2NvbnRhY3Rfc3VibWl0IGFuZCBzdHJsZW4o JGVtYWlsKSkKCXsKCQlpZiAoIWlzX3ZhbGlkX2VtYWlsKCRlbWFpbCkpCgkJewoJCQkkemVt X2NvbnRhY3RfZXJyb3JbXSA9IHplbV9jb250YWN0X2dUeHQoJ2ludmFsaWRfZW1haWwnLCBo dG1sc3BlY2lhbGNoYXJzKCRlbWFpbCkpOwoJCQkkaXNFcnJvciA9ICJlcnJvckVsZW1lbnQi OwoJCX0KCgkJZWxzZQoJCXsKCQkJcHJlZ19tYXRjaCgiL0AoLispJC8iLCAkZW1haWwsICRt YXRjaCk7CgkJCSRkb21haW4gPSAkbWF0Y2hbMV07CgoJCQlpZiAoaXNfY2FsbGFibGUoJ2No ZWNrZG5zcnInKSBhbmQgY2hlY2tkbnNycigndGV4dHBhdHRlcm4uY29tLicsJ0EnKSBhbmQg IWNoZWNrZG5zcnIoJGRvbWFpbi4nLicsJ01YJykgYW5kICFjaGVja2Ruc3JyKCRkb21haW4u Jy4nLCdBJykpCgkJCXsKCQkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0gemVtX2NvbnRhY3Rf Z1R4dCgnaW52YWxpZF9ob3N0JywgaHRtbHNwZWNpYWxjaGFycygkZG9tYWluKSk7CgkJCQkk aXNFcnJvciA9ICJlcnJvckVsZW1lbnQiOwoJCQl9CgoJCQllbHNlCgkJCXsKCQkJCWlmICgk c2VuZF9hcnRpY2xlKSB7CgkJCQkJJHplbV9jb250YWN0X3JlY2lwaWVudCA9ICRlbWFpbDsK CQkJCX0KCQkJCWVsc2UgewoJCQkJCSR6ZW1fY29udGFjdF9mcm9tID0gJGVtYWlsOwoJCQkJ fQoJCQl9CgkJfQoJfQoKCXJldHVybiB6ZW1fY29udGFjdF90ZXh0KGFycmF5KAoJCSdkZWZh dWx0Jwk9PiAkZW1haWwsCgkJJ2lzRXJyb3InCT0+ICRpc0Vycm9yLAoJCSdsYWJlbCcJCT0+ ICRsYWJlbCwKCQknbWF4JwkJPT4gJG1heCwKCQknbWluJwkJPT4gJG1pbiwKCQknbmFtZScJ CT0+ICRuYW1lLAoJCSdyZXF1aXJlZCcJPT4gJHJlcXVpcmVkLAoJCSdicmVhaycJCT0+ICRi cmVhaywKCQknc2l6ZScJCT0+ICRzaXplCgkpKTsKfQoKZnVuY3Rpb24gemVtX2NvbnRhY3Rf c2VsZWN0KCRhdHRzKQp7CglnbG9iYWwgJHplbV9jb250YWN0X2Vycm9yLCAkemVtX2NvbnRh Y3Rfc3VibWl0OwoKCWV4dHJhY3QoemVtX2NvbnRhY3RfbEF0dHMoYXJyYXkoCgkJJ25hbWUn CQk9PiAnJywKCQknYnJlYWsnCQk9PiAnICcsCgkJJ2RlbGltaXRlcicJPT4gJywnLAoJCSdp c0Vycm9yJwk9PiAnJywKCQknbGFiZWwnCQk9PiB6ZW1fY29udGFjdF9nVHh0KCdvcHRpb24n KSwKCQknbGlzdCcJCT0+IHplbV9jb250YWN0X2dUeHQoJ2dlbmVyYWxfaW5xdWlyeScpLAoJ CSdyZXF1aXJlZCcJPT4gMSwKCQknc2VsZWN0ZWQnCT0+ICcnCgkpLCAkYXR0cykpOwoKCWlm IChlbXB0eSgkbmFtZSkpICRuYW1lID0gemVtX2NvbnRhY3RfbGFiZWwybmFtZSgkbGFiZWwp OwoKCSRsaXN0ID0gYXJyYXlfbWFwKCd0cmltJywgc3BsaXQoJGRlbGltaXRlciwgcHJlZ19y ZXBsYWNlKCcvW1xyXG5cdFxzXSsvJywgJyAnLCRsaXN0KSkpOwoKCWlmICgkemVtX2NvbnRh Y3Rfc3VibWl0KQoJewoJCSR2YWx1ZSA9IHRyaW0ocHMoJG5hbWUpKTsKCgkJaWYgKHN0cmxl bigkdmFsdWUpKQoJCXsKCQkJaWYgKGluX2FycmF5KCR2YWx1ZSwgJGxpc3QpKQoJCQl7CgkJ CQl6ZW1fY29udGFjdF9zdG9yZSgkbmFtZSwgJGxhYmVsLCAkdmFsdWUpOwoJCQl9CgoJCQll bHNlCgkJCXsKCQkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0gemVtX2NvbnRhY3RfZ1R4dCgn aW52YWxpZF92YWx1ZScsIGh0bWxzcGVjaWFsY2hhcnMoJGxhYmVsKSwgaHRtbHNwZWNpYWxj aGFycygkdmFsdWUpKTsKCQkJCSRpc0Vycm9yID0gImVycm9yRWxlbWVudCI7CgkJCX0KCQl9 CgoJCWVsc2VpZiAoJHJlcXVpcmVkKQoJCXsKCQkJJHplbV9jb250YWN0X2Vycm9yW10gPSB6 ZW1fY29udGFjdF9nVHh0KCdmaWVsZF9taXNzaW5nJywgaHRtbHNwZWNpYWxjaGFycygkbGFi ZWwpKTsKCQkJJGlzRXJyb3IgPSAiZXJyb3JFbGVtZW50IjsKCQl9Cgl9CgllbHNlCgl7CgkJ JHZhbHVlID0gJHNlbGVjdGVkOwoJfQoKCSRvdXQgPSAnJzsKCglmb3JlYWNoICgkbGlzdCBh cyAkaXRlbSkKCXsKCQkkb3V0IC49IG4udC4nPG9wdGlvbicuKCRpdGVtID09ICR2YWx1ZSA/ ICcgc2VsZWN0ZWQ9InNlbGVjdGVkIj4nIDogJz4nKS4oc3RybGVuKCRpdGVtKSA/IGh0bWxz cGVjaWFsY2hhcnMoJGl0ZW0pIDogJyAnKS4nPC9vcHRpb24+JzsKCX0KCgkkemVtUmVxdWly ZWQgPSAkcmVxdWlyZWQgPyAnemVtUmVxdWlyZWQnIDogJyc7CgoJcmV0dXJuICc8bGFiZWwg Zm9yPSInLiRuYW1lLiciIGNsYXNzPSJ6ZW1TZWxlY3QgJy4kemVtUmVxdWlyZWQuJGlzRXJy b3IuJyAnLiRuYW1lLiciPicuaHRtbHNwZWNpYWxjaGFycygkbGFiZWwpLic8L2xhYmVsPicu JGJyZWFrLgoJCW4uJzxzZWxlY3QgaWQ9IicuJG5hbWUuJyIgbmFtZT0iJy4kbmFtZS4nIiBj bGFzcz0iemVtU2VsZWN0ICcuJHplbVJlcXVpcmVkLiRpc0Vycm9yLiciPicuCgkJCSRvdXQu CgkJbi4nPC9zZWxlY3Q+JzsKfQoKZnVuY3Rpb24gemVtX2NvbnRhY3RfY2hlY2tib3goJGF0 dHMpCnsKCWdsb2JhbCAkemVtX2NvbnRhY3RfZXJyb3IsICR6ZW1fY29udGFjdF9zdWJtaXQ7 CgoJZXh0cmFjdCh6ZW1fY29udGFjdF9sQXR0cyhhcnJheSgKCQknYnJlYWsnCQk9PiAnICcs CgkJJ2NoZWNrZWQnCT0+IDAsCgkJJ2lzRXJyb3InCT0+ICcnLAoJCSdsYWJlbCcJCT0+IHpl bV9jb250YWN0X2dUeHQoJ2NoZWNrYm94JyksCgkJJ25hbWUnCQk9PiAnJywKCQkncmVxdWly ZWQnCT0+IDEKCSksICRhdHRzKSk7CgoJaWYgKGVtcHR5KCRuYW1lKSkgJG5hbWUgPSB6ZW1f Y29udGFjdF9sYWJlbDJuYW1lKCRsYWJlbCk7CgoJaWYgKCR6ZW1fY29udGFjdF9zdWJtaXQp Cgl7CgkJJHZhbHVlID0gKGJvb2wpIHBzKCRuYW1lKTsKCgkJaWYgKCRyZXF1aXJlZCBhbmQg ISR2YWx1ZSkKCQl7CgkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0gemVtX2NvbnRhY3RfZ1R4 dCgnZmllbGRfbWlzc2luZycsIGh0bWxzcGVjaWFsY2hhcnMoJGxhYmVsKSk7CgkJCSRpc0Vy cm9yID0gImVycm9yRWxlbWVudCI7CgkJfQoKCQllbHNlCgkJewoJCQl6ZW1fY29udGFjdF9z dG9yZSgkbmFtZSwgJGxhYmVsLCAkdmFsdWUgPyBnVHh0KCd5ZXMnKSA6IGdUeHQoJ25vJykp OwoJCX0KCX0KCgllbHNlIHsKCQkkdmFsdWUgPSAkY2hlY2tlZDsKCX0KCgkkemVtUmVxdWly ZWQgPSAkcmVxdWlyZWQgPyAnemVtUmVxdWlyZWQnIDogJyc7CgoJcmV0dXJuICc8aW5wdXQg dHlwZT0iY2hlY2tib3giIGlkPSInLiRuYW1lLiciIGNsYXNzPSJ6ZW1DaGVja2JveCAnLiR6 ZW1SZXF1aXJlZC4kaXNFcnJvci4nIiBuYW1lPSInLiRuYW1lLiciJy4KCQkoJHZhbHVlID8g JyBjaGVja2VkPSJjaGVja2VkIicgOiAnJykuJyAvPicuJGJyZWFrLgoJCSc8bGFiZWwgZm9y PSInLiRuYW1lLiciIGNsYXNzPSJ6ZW1DaGVja2JveCAnLiR6ZW1SZXF1aXJlZC4kaXNFcnJv ci4nICcuJG5hbWUuJyI+Jy5odG1sc3BlY2lhbGNoYXJzKCRsYWJlbCkuJzwvbGFiZWw+JzsK fQoKZnVuY3Rpb24gemVtX2NvbnRhY3Rfc2VydmVyaW5mbygkYXR0cykKewoJZ2xvYmFsICR6 ZW1fY29udGFjdF9zdWJtaXQ7CgoJZXh0cmFjdCh6ZW1fY29udGFjdF9sQXR0cyhhcnJheSgK CQknbGFiZWwnCQk9PiAnJywKCQknbmFtZScJCT0+ICcnCgkpLCAkYXR0cykpOwoKCWlmIChl bXB0eSgkbmFtZSkpICRuYW1lID0gemVtX2NvbnRhY3RfbGFiZWwybmFtZSgkbGFiZWwpOwoK CWlmIChzdHJsZW4oJG5hbWUpIGFuZCAkemVtX2NvbnRhY3Rfc3VibWl0KQoJewoJCWlmICgh JGxhYmVsKSAkbGFiZWwgPSAkbmFtZTsKCQl6ZW1fY29udGFjdF9zdG9yZSgkbmFtZSwgJGxh YmVsLCBzZXJ2ZXJTZXQoJG5hbWUpKTsKCX0KfQoKZnVuY3Rpb24gemVtX2NvbnRhY3Rfc2Vj cmV0KCRhdHRzLCAkdGhpbmcgPSAnJykKewoJZ2xvYmFsICR6ZW1fY29udGFjdF9zdWJtaXQ7 CgoJZXh0cmFjdCh6ZW1fY29udGFjdF9sQXR0cyhhcnJheSgKCQknbmFtZScJPT4gJycsCgkJ J2xhYmVsJwk9PiB6ZW1fY29udGFjdF9nVHh0KCdzZWNyZXQnKSwKCQkndmFsdWUnCT0+ICcn CgkpLCAkYXR0cykpOwoKCSRuYW1lID0gemVtX2NvbnRhY3RfbGFiZWwybmFtZSgkbmFtZSA/ ICRuYW1lIDogJGxhYmVsKTsKCglpZiAoJHplbV9jb250YWN0X3N1Ym1pdCkKCXsKCQlpZiAo JHRoaW5nKSAkdmFsdWUgPSB0cmltKHBhcnNlKCR0aGluZykpOwoJCXplbV9jb250YWN0X3N0 b3JlKCRuYW1lLCAkbGFiZWwsICR2YWx1ZSk7Cgl9CgoJcmV0dXJuICcnOwp9CgpmdW5jdGlv biB6ZW1fY29udGFjdF9yYWRpbygkYXR0cykKewoJZ2xvYmFsICR6ZW1fY29udGFjdF9lcnJv ciwgJHplbV9jb250YWN0X3N1Ym1pdCwgJHplbV9jb250YWN0X3ZhbHVlczsKCglleHRyYWN0 KHplbV9jb250YWN0X2xBdHRzKGFycmF5KAoJCSdicmVhaycJCT0+ICcgJywKCQknY2hlY2tl ZCcJPT4gMCwKCQknZ3JvdXAnCQk9PiAnJywKCQknbGFiZWwnCQk9PiB6ZW1fY29udGFjdF9n VHh0KCdvcHRpb24nKSwKCQknbmFtZScJCT0+ICcnCgkpLCAkYXR0cykpOwoKCXN0YXRpYyAk Y3VyX25hbWUgPSAnJzsKCXN0YXRpYyAkY3VyX2dyb3VwID0gJyc7CgoJaWYgKCEkbmFtZSBh bmQgISRncm91cCBhbmQgISRjdXJfbmFtZSBhbmQgISRjdXJfZ3JvdXApIHsKCQkkY3VyX2dy b3VwID0gemVtX2NvbnRhY3RfZ1R4dCgncmFkaW8nKTsKCQkkY3VyX25hbWUgPSAkY3VyX2dy b3VwOwoJfQoJaWYgKCRncm91cCBhbmQgISRuYW1lIGFuZCAkZ3JvdXAgIT0gJGN1cl9ncm91 cCkgJG5hbWUgPSAkZ3JvdXA7CgoJaWYgKCRuYW1lKSAkY3VyX25hbWUgPSAkbmFtZTsKCWVs c2UgJG5hbWUgPSAkY3VyX25hbWU7CgoJaWYgKCRncm91cCkgJGN1cl9ncm91cCA9ICRncm91 cDsKCWVsc2UgJGdyb3VwID0gJGN1cl9ncm91cDsKCgkkaWQgICA9ICdxJy5tZDUoJG5hbWUu Jz0+Jy4kbGFiZWwpOwoJJG5hbWUgPSB6ZW1fY29udGFjdF9sYWJlbDJuYW1lKCRuYW1lKTsK CglpZiAoJHplbV9jb250YWN0X3N1Ym1pdCkKCXsKCQkkaXNfY2hlY2tlZCA9IChwcygkbmFt ZSkgPT0gJGlkKTsKCgkJaWYgKCRpc19jaGVja2VkIG9yICRjaGVja2VkIGFuZCAhaXNzZXQo JHplbV9jb250YWN0X3ZhbHVlc1skbmFtZV0pKQoJCXsKCQkJemVtX2NvbnRhY3Rfc3RvcmUo JG5hbWUsICRncm91cCwgJGxhYmVsKTsKCQl9Cgl9CgoJZWxzZQoJewoJCSRpc19jaGVja2Vk ID0gJGNoZWNrZWQ7Cgl9CgoJcmV0dXJuICc8aW5wdXQgdmFsdWU9IicuJGlkLiciIHR5cGU9 InJhZGlvIiBpZD0iJy4kaWQuJyIgY2xhc3M9InplbVJhZGlvICcuJG5hbWUuJyIgbmFtZT0i Jy4kbmFtZS4nIicuCgkJKCAkaXNfY2hlY2tlZCA/ICcgY2hlY2tlZD0iY2hlY2tlZCIgLz4n IDogJyAvPicpLiRicmVhay4KCQknPGxhYmVsIGZvcj0iJy4kaWQuJyIgY2xhc3M9InplbVJh ZGlvICcuJG5hbWUuJyI+Jy5odG1sc3BlY2lhbGNoYXJzKCRsYWJlbCkuJzwvbGFiZWw+JzsK fQoKZnVuY3Rpb24gemVtX2NvbnRhY3Rfc2VuZF9hcnRpY2xlKCRhdHRzKQp7CglpZiAoIWlz c2V0KCRfUkVRVUVTVFsnemVtX2NvbnRhY3Rfc2VuZF9hcnRpY2xlJ10pKSB7CgkJJGxpbmt0 ZXh0ID0gKGVtcHR5KCRhdHRzWydsaW5rdGV4dCddKSkgPyB6ZW1fY29udGFjdF9nVHh0KCdz ZW5kX2FydGljbGUnKSA6ICRhdHRzWydsaW5rdGV4dCddOwoJCSRqb2luID0gKGVtcHR5KCRf U0VSVkVSWydRVUVSWV9TVFJJTkcnXSkpID8gJz8nIDogJyYnOwoJCSRocmVmID0gJF9TRVJW RVJbJ1JFUVVFU1RfVVJJJ10uJGpvaW4uJ3plbV9jb250YWN0X3NlbmRfYXJ0aWNsZT15ZXMn OwoJCXJldHVybiAnPGEgaHJlZj0iJy5odG1sc3BlY2lhbGNoYXJzKCRocmVmKS4nIj4nLmh0 bWxzcGVjaWFsY2hhcnMoJGxpbmt0ZXh0KS4nPC9hPic7Cgl9CglyZXR1cm47Cn0KCmZ1bmN0 aW9uIHplbV9jb250YWN0X3N1Ym1pdCgkYXR0cywgJHRoaW5nKQp7CglleHRyYWN0KHplbV9j b250YWN0X2xBdHRzKGFycmF5KAoJCSdidXR0b24nCT0+IDAsCgkJJ2xhYmVsJwkJPT4gemVt X2NvbnRhY3RfZ1R4dCgnc2VuZCcpCgkpLCAkYXR0cykpOwoKCSRsYWJlbCA9IGh0bWxzcGVj aWFsY2hhcnMoJGxhYmVsKTsKCglpZiAoJGJ1dHRvbiBvciBzdHJsZW4oJHRoaW5nKSkKCXsK CQlyZXR1cm4gJzxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iemVtU3VibWl0IiBuYW1l PSJ6ZW1fY29udGFjdF9zdWJtaXQiIHZhbHVlPSInLiRsYWJlbC4nIj4nLigkdGhpbmcgPyB0 cmltKHBhcnNlKCR0aGluZykpIDogJGxhYmVsKS4nPC9idXR0b24+JzsKCX0KCWVsc2UKCXsK CQlyZXR1cm4gJzxpbnB1dCB0eXBlPSJzdWJtaXQiIGNsYXNzPSJ6ZW1TdWJtaXQiIG5hbWU9 InplbV9jb250YWN0X3N1Ym1pdCIgdmFsdWU9IicuJGxhYmVsLiciIC8+JzsKCX0KfQoKZnVu Y3Rpb24gemVtX2NvbnRhY3RfbEF0dHMoJGFyciwgJGF0dHMpCnsKCWZvcmVhY2goYXJyYXko J2J1dHRvbicsICdjb3B5c2VuZGVyJywgJ2NoZWNrZWQnLCAncmVxdWlyZWQnLCAnc2VuZF9h cnRpY2xlJywgJ3Nob3dfaW5wdXQnLCAnc2hvd19lcnJvcicpIGFzICRrZXkpCgl7CgkJaWYg KGlzc2V0KCRhdHRzWyRrZXldKSkKCQl7CgkJCSRhdHRzWyRrZXldID0gKCRhdHRzWyRrZXld ID09PSAneWVzJyBvciBpbnR2YWwoJGF0dHNbJGtleV0pKSA/IDEgOiAwOwoJCX0KCX0KCWlm IChpc3NldCgkYXR0c1snYnJlYWsnXSkgYW5kICRhdHRzWydicmVhayddID09ICdicicpICRh dHRzWydicmVhayddID0gJzxiciAvPic7CglyZXR1cm4gbEF0dHMoJGFyciwgJGF0dHMpOwp9 CgpjbGFzcyB6ZW1jb250YWN0X2V2YWx1YXRpb24KewoJdmFyICRzdGF0dXM7CgoJZnVuY3Rp b24gemVtY29udGFjdF9ldmFsdWF0aW9uKCkgewoJCSR0aGlzLT5zdGF0dXMgPSAwOwoJfQoK CWZ1bmN0aW9uIGFkZF96ZW1jb250YWN0X3N0YXR1cygkY2hlY2spIHsKCQkkdGhpcy0+c3Rh dHVzICs9ICRjaGVjazsKCX0KCglmdW5jdGlvbiBnZXRfemVtY29udGFjdF9zdGF0dXMoKSB7 CgkJcmV0dXJuICR0aGlzLT5zdGF0dXM7Cgl9Cn0KCmZ1bmN0aW9uICZnZXRfemVtY29udGFj dF9ldmFsdWF0b3IoKQp7CglzdGF0aWMgJGluc3RhbmNlOwoKCWlmKCFpc3NldCgkaW5zdGFu Y2UpKSB7CgkJJGluc3RhbmNlID0gbmV3IHplbWNvbnRhY3RfZXZhbHVhdGlvbigpOwoJfQoJ cmV0dXJuICRpbnN0YW5jZTsKfQoKZnVuY3Rpb24gemVtX2NvbnRhY3RfbGFiZWwybmFtZSgk bGFiZWwpCnsKCSRsYWJlbCA9IHRyaW0oJGxhYmVsKTsKCWlmIChzdHJsZW4oJGxhYmVsKSA9 PSAwKSByZXR1cm4gJ2ludmFsaWQnOwoJaWYgKHN0cmxlbigkbGFiZWwpIDw9IDMyIGFuZCBw cmVnX21hdGNoKCcvXlthLXpBLVpdW0EtWmEtejAtOTpfLV0qJC8nLCAkbGFiZWwpKSByZXR1 cm4gJGxhYmVsOwoJZWxzZSByZXR1cm4gJ3EnLm1kNSgkbGFiZWwpOwp9CgpmdW5jdGlvbiB6 ZW1fY29udGFjdF9zdG9yZSgkbmFtZSwgJGxhYmVsLCAkdmFsdWUpCnsKCWdsb2JhbCAkemVt X2NvbnRhY3RfZm9ybSwgJHplbV9jb250YWN0X2xhYmVscywgJHplbV9jb250YWN0X3ZhbHVl czsKCSR6ZW1fY29udGFjdF9mb3JtWyRsYWJlbF0gPSAkdmFsdWU7CgkkemVtX2NvbnRhY3Rf bGFiZWxzWyRuYW1lXSA9ICRsYWJlbDsKCSR6ZW1fY29udGFjdF92YWx1ZXNbJG5hbWVdID0g JHZhbHVlOwp9CgpmdW5jdGlvbiB6ZW1fY29udGFjdF9tYWlsaGVhZGVyKCRzdHJpbmcsICR0 eXBlKQp7CglnbG9iYWwgJHByZWZzOwoJaWYgKCFzdHJzdHIoJHN0cmluZywnPT8nKSBhbmQg IXByZWdfbWF0Y2goJy9bXHgwMC1ceDFGXHg3Ri1ceEZGXS8nLCAkc3RyaW5nKSkgewoJCWlm ICgicGhyYXNlIiA9PSAkdHlwZSkgewoJCQlpZiAocHJlZ19tYXRjaCgnL1tdWygpPD5ALDs6 Ii5ceDVDXS8nLCAkc3RyaW5nKSkgewoJCQkJJHN0cmluZyA9ICciJy4gc3RydHIoJHN0cmlu ZywgYXJyYXkoIlxcIiA9PiAiXFxcXCIsICciJyA9PiAnXCInKSkgLiAnIic7CgkJCX0KCQl9 CgkJZWxzZWlmICgidGV4dCIgIT0gJHR5cGUpIHsKCQkJdHJpZ2dlcl9lcnJvcignVW5rbm93 biBlbmNvZGVfbWFpbGhlYWRlciB0eXBlJywgRV9VU0VSX1dBUk5JTkcpOwoJCX0KCQlyZXR1 cm4gJHN0cmluZzsKCX0KCWlmICgkcHJlZnNbJ292ZXJyaWRlX2VtYWlsY2hhcnNldCddKSB7 CgkJJHN0YXJ0ID0gJz0/SVNPLTg4NTktMT9CPyc7CgkJJHBjcmUgID0gJy8uezEsNDJ9L3Mn OwoJfQoJZWxzZSB7CgkJJHN0YXJ0ID0gJz0/VVRGLTg/Qj8nOwoJCSRwY3JlICA9ICcvLnsx LDQ1fSg/PVtceDAwLVx4N0ZceEMwLVx4RkZdfCQpL3MnOwoJfQoJJGVuZCA9ICc/PSc7Cgkk c2VwID0gaXNfd2luZG93cygpID8gIlxyXG4iIDogIlxuIjsKCXByZWdfbWF0Y2hfYWxsKCRw Y3JlLCAkc3RyaW5nLCAkbWF0Y2hlcyk7CglyZXR1cm4gJHN0YXJ0IC4gam9pbigkZW5kLiRz ZXAuJyAnLiRzdGFydCwgYXJyYXlfbWFwKCdiYXNlNjRfZW5jb2RlJywkbWF0Y2hlc1swXSkp IC4gJGVuZDsKfQoiO3M6MzoibWQ1IjtzOjMyOiJjYjc3MmYzMDU3MjdhOWU5ZTVmZDdkMTYx NmY1Njk5NiI7fQ==