# mem_form v0.8.1 # A library plugin that provides support for html forms. # Michael Manfre # http://manfre.net/ # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YToxMDp7czo3OiJ2ZXJzaW9uIjtzOjU6IjAuOC4xIjtzOjY6ImF1dGhvciI7czoxNDoiTWlj aGFlbCBNYW5mcmUiO3M6MTA6ImF1dGhvcl91cmkiO3M6MTg6Imh0dHA6Ly9tYW5mcmUubmV0 LyI7czoxMToiZGVzY3JpcHRpb24iO3M6NTQ6IkEgbGlicmFyeSBwbHVnaW4gdGhhdCBwcm92 aWRlcyBzdXBwb3J0IGZvciBodG1sIGZvcm1zLiI7czo0OiJ0eXBlIjtpOjI7czo0OiJuYW1l IjtzOjg6Im1lbV9mb3JtIjtzOjQ6ImhlbHAiO3M6MjgyODI6Igk8aDEgY2xhc3M9InRpdGxl Ij5tZW1fZm9ybSBwbHVnaW48L2gxPgoKCTxoMiBjbGFzcz0ic2VjdGlvbiBzdW1tYXJ5Ij5T dW1tYXJ5PC9oMj4KCgk8cD5UaGlzIHBsdWdpbiBwcm92aWRlcyA8c3BhbiBjbGFzcz0iY2Fw cyI+SFRNTDwvc3Bhbj4gZm9ybSBjYXBhYmlsaXRpZXMgZm9yIG90aGVyIHBsdWdpbnMuIFRo aXMgYWxsb3dzIGZvciBjb25zaXN0ZW50IGZvcm0gdGFncyBhbmQgYmVoYXZpb3JzLCB3aGls ZSByZWR1Y2luZyBvdmVyYWxsIHBsdWdpbiBzaXplIGFuZCBkZXZlbG9wbWVudCB0aW1lLjwv cD4KCgk8aDIgY2xhc3M9InNlY3Rpb24gY29udGFjdCI+QXV0aG9yIENvbnRhY3Q8L2gyPgoK CTxwPjxhIGhyZWY9Im1haWx0bzptbWFuZnJlQGdtYWlsLmNvbT9zdWJqZWN0PVRleHRwYXR0 ZXJuJTIwbWVtX2Zvcm0lMjBwbHVnaW4iPk1pY2hhZWwgTWFuZnJlPC9hPjxiciAvPgo8YSBo cmVmPSJodHRwOi8vbWFuZnJlLm5ldCI+aHR0cDovL21hbmZyZS5uZXQ8L2E+PC9wPgoKCTxo MiBjbGFzcz0ic2VjdGlvbiBsaWNlbnNlIj5MaWNlbnNlPC9oMj4KCgk8cD5UaGlzIHBsdWdp biBpcyBsaWNlbnNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5mc2Yub3JnL2xp Y2Vuc2luZy9saWNlbnNlcy9pbmZvL0dQTHYyLmh0bWwiPkdQTHYyPC9hPi48L3A+CgoJPGgy IGNsYXNzPSJzZWN0aW9uIHRhZ3MiPlRhZ3M8L2gyPgoKCTx1bD4KCQk8bGk+PGEgaHJlZj0i I21lbV9mb3JtIj5tZW1fZm9ybTwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjbWVtX2Zvcm1f Y2hlY2tib3giPm1lbV9mb3JtX2NoZWNrYm94PC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNt ZW1fZm9ybV9lbWFpbCI+bWVtX2Zvcm1fZW1haWw8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0i I21lbV9mb3JtX2ZpbGUiPm1lbV9mb3JtX2ZpbGU8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0i I21lbV9mb3JtX2hpZGRlbiI+bWVtX2Zvcm1faGlkZGVuPC9hPjwvbGk+CgkJPGxpPjxhIGhy ZWY9IiNtZW1fZm9ybV9yYWRpbyI+bWVtX2Zvcm1fcmFkaW88L2E+PC9saT4KCQk8bGk+PGEg aHJlZj0iI21lbV9mb3JtX3NlY3JldCI+bWVtX2Zvcm1fc2VjcmV0PC9hPjwvbGk+CgkJPGxp PjxhIGhyZWY9IiNtZW1fZm9ybV9zZWxlY3QiPm1lbV9mb3JtX3NlbGVjdDwvYT48L2xpPgoJ CTxsaT48YSBocmVmPSIjbWVtX2Zvcm1fc2VsZWN0X2NhdGVnb3J5Ij5tZW1fZm9ybV9zZWxl Y3RfY2F0ZWdvcnk8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI21lbV9mb3JtX3NlbGVjdF9z ZWN0aW9uIj5tZW1fZm9ybV9zZWxlY3Rfc2VjdGlvbjwvYT48L2xpPgoJCTxsaT48YSBocmVm PSIjbWVtX2Zvcm1fc2VydmVyaW5mbyI+bWVtX2Zvcm1fc2VydmVyaW5mbzwvYT48L2xpPgoJ CTxsaT48YSBocmVmPSIjbWVtX2Zvcm1fc3VibWl0Ij5tZW1fZm9ybV9zdWJtaXQ8L2E+PC9s aT4KCQk8bGk+PGEgaHJlZj0iI21lbV9mb3JtX3RleHQiPm1lbV9mb3JtX3RleHQ8L2E+PC9s aT4KCQk8bGk+PGEgaHJlZj0iI21lbV9mb3JtX3RleHRhcmVhIj5tZW1fZm9ybV90ZXh0YXJl YTwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjbWVtX2Zvcm1fdmFsdWUiPm1lbV9mb3JtX3Zh bHVlPC9hPjwvbGk+Cgk8L3VsPgoKCTxoMyBjbGFzcz0idGFnIiBpZD0ibWVtX2Zvcm0iPm1l bV9mb3JtPC9oMz4KCgk8cCBjbGFzcz0idGFnLXN1bW1hcnkiPlRoaXMgdGFnIHdpbGwgY3Jl YXRlIGFuIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBmb3JtIGFuZCBjb250YWlu cyBhbGwgb2YgdGhlIHByb2Nlc3NpbmcgYW5kIHZhbGlkYXRpb24uPC9wPgoKCTx1bCBjbGFz cz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPmZvcm08L3NwYW4+IDxz cGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gTmFtZSBvZiBhIGZvcm0gdGhh dCB3aWxsIGJlIHBhcnNlZCB0byBkaXNwbGF5IHRoZSBmb3JtLjwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdHRzLW5hbWUiPnRoYW5rc19mb3JtPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0 cy10eXBlIj5zdHJpbmc8L3NwYW4+IE5hbWUgb2YgYSBmb3JtIHRoYXQgd2lsbCBiZSBwYXJz ZWQgdXBvbiBzdWNjZXNzZnVsIGZvcm0gc3VibWlzc2lvbi48L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXR0cy1uYW1lIj5sYWJlbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+ c3RyaW5nPC9zcGFuPiBBY2Nlc3NpYmxlIG5hbWUgZm9yIHRoZSBmb3JtLjwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUgcmVxdWlyZWQiPnR5cGU8L3NwYW4+IDxzcGFuIGNs YXNzPSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gTmFtZSBvZiB0aGUgZm9ybSB0byBpZGVu dGlmeSBpdHNlbGYgdG8gYm91bmQgcGx1Z2luLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dHRzLW5hbWUiPnRoYW5rczwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5n PC9zcGFuPiBNZXNzYWdlIHRvIGRpc3BsYXkgdG8gdXNlciB1cG9uIHN1Y2Nlc3NmdWwgZm9y bSBzdWJtaXNzaW9uLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPnJlZGly ZWN0PC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj51cmw8L3NwYW4+IDxzcGFuIGNs YXNzPSJjYXBzIj5VUkw8L3NwYW4+IHRvIHJlZGlyZWN0IHVwb24gc3VjY2Vzc2Z1bCBmb3Jt IHN1Ym1pc3Npb24uIE92ZXJyaWRlcyAmIzgyMjA7dGhhbmtzJiM4MjIxOyBhbmQgJiM4MjIw O3RoYW5rc19mb3JtJiM4MjIxOy48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1l Ij5yZWRpcmVjdF9mb3JtPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8 L3NwYW4+IE5hbWUgb2YgYSBmb3JtIHRoYXQgd2lsbCBiZSBwYXJzZWQgYXMgZGlzcGxheWVk IHRvIHRoZSB1c2VyIG9uIGEgcmVkaXJlY3QuIFRoZSBzdHJpbmcgJiM4MjIwOzxlbT57dXJp fTwvZW0+JiM4MjIwOyB3aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhlIHJlZGlyZWN0IHVybC48 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5lbmN0eXBlPC9zcGFuPiA8c3Bh biBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IDxzcGFuIGNsYXNzPSJjYXBzIj5I VE1MPC9zcGFuPiBlbmNvZGluZyB0eXBlIHVzZWQgd2hlbiB0aGUgZm9ybSBpcyBzdWJtaXR0 ZWQuIDxjb2RlPmVuY3R5cGU9JnF1b3Q7bXVsdGlwYXJ0L2Zvcm0tZGF0YSZxdW90OzwvY29k ZT4gaXMgcmVxdWlyZWQgd2hlbiB1c2luZyBtZW1fZm9ybV9maWxlLjwvbGk+Cgk8L3VsPgoK CTxoMyBjbGFzcz0idGFnIiBpZD0ibWVtX2Zvcm1fY2hlY2tib3giPm1lbV9mb3JtX2NoZWNr Ym94PC9oMz4KCgk8cCBjbGFzcz0idGFnLXN1bW1hcnkiPlRoaXMgd2lsbCBvdXRwdXQgYW4g PHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IGNoZWNrYm94IGZpZWxkLjwvcD4KCgk8 dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5icmVhazwv c3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiBTZXBhcmF0b3Ig YmV0d2VlbiBsYWJlbCB0YWcgYW5kIGlucHV0IHRhZy48L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXR0cy1uYW1lIj5jaGVja2VkPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5p bnQ8L3NwYW4+IElzIHRoaXMgYm94IGNoZWNrZWQuIERlZmF1bHQgJiM4MjIwOzAmIzgyMjE7 LjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPmxhYmVsPC9zcGFuPiA8c3Bh biBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IEZyaWVuZGx5IG5hbWUgZm9yIHRo ZSBpbnB1dCBmaWVsZC4gSWYgc2V0LCB0aGlzIHdpbGwgb3V0cHV0IGFuIDxzcGFuIGNsYXNz PSJjYXBzIj5IVE1MPC9zcGFuPiA8bGFiZWw+IHRhZyBsaW5rZWQgdG8gdGhlIGlucHV0IGZp ZWxkLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPm5hbWU8L3NwYW4+IDxz cGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gSW5wdXQgZmllbGQgbmFtZS48 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5yZXF1aXJlZDwvc3Bhbj4gPHNw YW4gY2xhc3M9ImF0dHMtdHlwZSI+aW50PC9zcGFuPiBTcGVjaWZpZXMgaWYgaW5wdXQgaXMg cmVxdWlyZWQuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+Y2xhc3M8L3Nw YW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gPHNwYW4gY2xhc3M9 ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgbmFtZS48L2xpPgoJPC91bD4KCgk8aDMgY2xhc3M9 InRhZyIgaWQ9Im1lbV9mb3JtX2VtYWlsIj5tZW1fZm9ybV9lbWFpbDwvaDM+CgoJPHAgY2xh c3M9InRhZy1zdW1tYXJ5Ij5UaGlzIHdpbGwgb3V0cHV0IGFuIDxzcGFuIGNsYXNzPSJjYXBz Ij5IVE1MPC9zcGFuPiB0ZXh0IGlucHV0IGZpZWxkIGFuZCB2YWxpZGF0ZXMgdGhlIHN1Ym1p dHRlZCB2YWx1ZSBhcyBhbiBlbWFpbCBhZGRyZXNzLjwvcD4KCgk8dWwgY2xhc3M9ImF0dHMi PgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5icmVhazwvc3Bhbj4gPHNwYW4gY2xh c3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiBTZXBhcmF0b3IgYmV0d2VlbiBsYWJlbCB0 YWcgYW5kIGlucHV0IHRhZy48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5s YWJlbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiBGcmll bmRseSBuYW1lIGZvciB0aGUgaW5wdXQgZmllbGQuIElmIHNldCwgdGhpcyB3aWxsIG91dHB1 dCBhbiA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gPGxhYmVsPiB0YWcgbGlua2Vk IHRvIHRoZSBpbnB1dCBmaWVsZC48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1l Ij5uYW1lPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IElu cHV0IGZpZWxkIG5hbWUuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+cmVx dWlyZWQ8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPmludDwvc3Bhbj4gU3BlY2lm aWVzIGlmIGlucHV0IGlzIHJlcXVpcmVkLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRz LW5hbWUiPmNsYXNzPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3Nw YW4+IDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5hbWUuPC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+ZGVmYXVsdDwvc3Bhbj4gPHNwYW4gY2xhc3M9 ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiBUaGUgZGVmYXVsdCB2YWx1ZS48L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5tYXg8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRz LXR5cGUiPmludDwvc3Bhbj4gTWF4IGNoYXJhY3RlciBsZW5ndGguPC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0dHMtbmFtZSI+bWluPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBl Ij5pbnQ8L3NwYW4+IE1pbiBjaGFyYWN0ZXIgbGVuZ3RoLjwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdHRzLW5hbWUiPnNpemU8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPmlu dDwvc3Bhbj4gU2l6ZSBvZiBpbnB1dCBmaWVsZC48L2xpPgoJPC91bD4KCgk8aDMgY2xhc3M9 InRhZyIgaWQ9Im1lbV9mb3JtX2ZpbGUiPm1lbV9mb3JtX2ZpbGU8L2gzPgoKCTxwPitwKHRh Zy1zdW1tYXJ5KS4gVGhpcyB3aWxsIG91dHB1dCBhbiA8c3BhbiBjbGFzcz0iY2FwcyI+SFRN TDwvc3Bhbj4gZmlsZSBpbnB1dCBmaWVsZC4gWW91IG11c3QgYWRkIHRoZSA8Y29kZT5lbmN0 eXBlPSZxdW90O211bHRpcGFydC9mb3JtLWRhdGEmcXVvdDs8L2NvZGU+IGF0dHJpYnV0ZSB0 byB5b3VyIGVuY2xvc2luZyBtZW1fZm9ybSBmb3IgdGhpcyB0byB3b3JrLjwvcD4KCgk8dWwg Y2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5sYWJlbDwvc3Bh bj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiBGcmllbmRseSBuYW1l IGZvciB0aGUgaW5wdXQgZmllbGQuIElmIHNldCwgdGhpcyB3aWxsIG91dHB1dCBhbiA8c3Bh biBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gPGxhYmVsPiB0YWcgbGlua2VkIHRvIHRoZSBp bnB1dCBmaWVsZC48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5uYW1lPC9z cGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IElucHV0IGZpZWxk IG5hbWUuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+Y2xhc3M8L3NwYW4+ IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gPHNwYW4gY2xhc3M9ImNh cHMiPkNTUzwvc3Bhbj4gY2xhc3MgbmFtZS48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0 cy1uYW1lIj5icmVhazwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9z cGFuPiBTZXBhcmF0b3IgYmV0d2VlbiBsYWJlbCB0YWcgYW5kIGlucHV0IHRhZy48L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5ub19yZXBsYWNlPC9zcGFuPiA8c3BhbiBj bGFzcz0iYXR0cy10eXBlIj5pbnQ8L3NwYW4+IFNwZWNpZmllcyB3aGV0aGVyIGEgdXNlciBj YW4gdXBsb2FkIGFub3RoZXIgZmlsZSBhbmQgcmVwbGFjZSB0aGUgZXhpc3RpbmcgZmlsZSB0 aGF0IHdpbGwgYmUgc3VibWl0dGVkIG9uIHN1Y2Nlc3NmdWwgY29tcGxldGlvbiBvZiB0aGUg Zm9ybS4gSWYgJiM4MjIwOzEmIzgyMjE7LCB0aGUgZmlsZSBpbnB1dCBmaWVsZCB3aWxsIGJl IHJlcGxhY2VkIHdpdGggZGV0YWlscyBhYm91dCB0aGUgYWxyZWFkeSB1cGxvYWRlZCBmaWxl LjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPnJlcXVpcmVkPC9zcGFuPiA8 c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5pbnQ8L3NwYW4+IFNwZWNpZmllcyBpZiBpbnB1dCBp cyByZXF1aXJlZC48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5zaXplPC9z cGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5pbnQ8L3NwYW4+IFNpemUgb2YgaW5wdXQg ZmllbGQuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+bWF4X2ZpbGVfc2l6 ZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+aW50PC9zcGFuPiBNYXhpbXVtIHNp emUgZm9yIHRoZSB1cGxvYWRlZCBmaWxlLiBDaGVja2VkIHNlcnZlci1zaWRlLjwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPmFjY2VwdDwvc3Bhbj4gPHNwYW4gY2xhc3M9 ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiBUaGUgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8 L3NwYW4+IGZpbGUgaW5wdXQgZmllbGQmIzgyMTc7cyAmIzgyMjA7YWNjZXB0JiM4MjIxOyBh cmd1bWVudCB0aGF0IHNwZWNpZmllcyB3aGljaCBmaWxlIHR5cGVzIHRoZSBmaWVsZCBzaG91 bGQgcGVybWl0LjwvbGk+Cgk8L3VsPgoKCTxoMyBjbGFzcz0idGFnIiBpZD0ibWVtX2Zvcm1f aGlkZGVuIj5tZW1fZm9ybV9oaWRkZW48L2gzPgoKCTxwIGNsYXNzPSJ0YWctc3VtbWFyeSI+ VGhpcyB3aWxsIG91dHB1dCBhbiA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gaGlk ZGVuIHRleHQgaW5wdXQgZmllbGQuPC9wPgoKCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdHRzLW5hbWUiPmxhYmVsPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10 eXBlIj5zdHJpbmc8L3NwYW4+IEZyaWVuZGx5IG5hbWUgZm9yIHRoZSBpbnB1dCBmaWVsZC4g SWYgc2V0LCB0aGlzIHdpbGwgb3V0cHV0IGFuIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9z cGFuPiA8bGFiZWw+IHRhZyBsaW5rZWQgdG8gdGhlIGlucHV0IGZpZWxkLjwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPm5hbWU8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRz LXR5cGUiPnN0cmluZzwvc3Bhbj4gSW5wdXQgZmllbGQgbmFtZS48L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXR0cy1uYW1lIj52YWx1ZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlw ZSI+c3RyaW5nPC9zcGFuPiBUaGUgaW5wdXQgdmFsdWUuPC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0dHMtbmFtZSI+cmVxdWlyZWQ8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUi PmludDwvc3Bhbj4gU3BlY2lmaWVzIGlmIGlucHV0IGlzIHJlcXVpcmVkLjwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPmNsYXNzPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0 cy10eXBlIj5zdHJpbmc8L3NwYW4+IDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNs YXNzIG5hbWUuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+ZXNjYXBlX3Zh bHVlPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5pbnQ8L3NwYW4+IFNldCB0byAm IzgyMjA7MCYjODIyMTsgdG8gcHJldmVudCBodG1sIGVzY2FwaW5nIHRoZSB2YWx1ZS4gRGVm YXVsdCAmIzgyMjA7MSYjODIyMTsuPC9saT4KCTwvdWw+CgoJPGgzIGNsYXNzPSJ0YWciIGlk PSJtZW1fZm9ybV9yYWRpbyI+bWVtX2Zvcm1fcmFkaW88L2gzPgoKCTxwIGNsYXNzPSJ0YWct c3VtbWFyeSI+VGhpcyB3aWxsIG91dHB1dCBhbiA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwv c3Bhbj4gcmFkaW8gYnV0dG9uLjwvcD4KCgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3Bh biBjbGFzcz0iYXR0cy1uYW1lIj5icmVhazwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlw ZSI+c3RyaW5nPC9zcGFuPiBTZXBhcmF0b3IgYmV0d2VlbiBsYWJlbCB0YWcgYW5kIGlucHV0 IHRhZy48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5sYWJlbDwvc3Bhbj4g PHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiBGcmllbmRseSBuYW1lIGZv ciB0aGUgaW5wdXQgZmllbGQuIElmIHNldCwgdGhpcyB3aWxsIG91dHB1dCBhbiA8c3BhbiBj bGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gPGxhYmVsPiB0YWcgbGlua2VkIHRvIHRoZSBpbnB1 dCBmaWVsZC48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5uYW1lPC9zcGFu PiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IElucHV0IGZpZWxkIG5h bWUuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+Y2xhc3M8L3NwYW4+IDxz cGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gPHNwYW4gY2xhc3M9ImNhcHMi PkNTUzwvc3Bhbj4gY2xhc3MgbmFtZS48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1u YW1lIj5ncm91cDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFu PiBBIG5hbWUgdGhhdCBpZGVudGlmaWVzIGEgZ3JvdXAgb2YgcmFkaW8gYnV0dG9ucy48L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5jaGVja2VkPC9zcGFuPiA8c3BhbiBj bGFzcz0iYXR0cy10eXBlIj5pbnQ8L3NwYW4+IElzIHRoaXMgYm94IGNoZWNrZWQuIERlZmF1 bHQgJiM4MjIwOzAmIzgyMjE7LjwvbGk+Cgk8L3VsPgoKCTxoMyBjbGFzcz0idGFnIiBpZD0i bWVtX2Zvcm1fc2VjcmV0Ij5tZW1fZm9ybV9zZWNyZXQ8L2gzPgoKCTxwIGNsYXNzPSJ0YWct c3VtbWFyeSI+VGhpcyB3aWxsIG91dHB1dCBub3RoaW5nIGluIDxzcGFuIGNsYXNzPSJjYXBz Ij5IVE1MPC9zcGFuPiBhbmQgaXMgbWVhbnQgdG8gcGFzcyBpbmZvcm1hdGlvbiB0byB0aGUg c3VtYml0IGhhbmRsZXIgcGx1Z2lucy48L3A+CgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+bGFiZWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRz LXR5cGUiPnN0cmluZzwvc3Bhbj4gRnJpZW5kbHkgbmFtZSBmb3IgdGhlIGlucHV0IGZpZWxk LiBJZiBzZXQsIHRoaXMgd2lsbCBvdXRwdXQgYW4gPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8 L3NwYW4+IDxsYWJlbD4gdGFnIGxpbmtlZCB0byB0aGUgaW5wdXQgZmllbGQuPC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+bmFtZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0 dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiBJbnB1dCBmaWVsZCBuYW1lLjwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdHRzLW5hbWUiPnZhbHVlPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10 eXBlIj5zdHJpbmc8L3NwYW4+IFRoZSBpbnB1dCB2YWx1ZS48L2xpPgoJPC91bD4KCgk8aDMg Y2xhc3M9InRhZyIgaWQ9Im1lbV9mb3JtX3NlbGVjdCI+bWVtX2Zvcm1fc2VsZWN0PC9oMz4K Cgk8cCBjbGFzcz0idGFnLXN1bW1hcnkiPlRoaXMgd2lsbCBvdXRwdXQgYW4gPHNwYW4gY2xh c3M9ImNhcHMiPkhUTUw8L3NwYW4+IHNlbGVjdCBmaWVsZC48L3A+CgoJPHVsIGNsYXNzPSJh dHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+bGFiZWw8L3NwYW4+IDxzcGFu IGNsYXNzPSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gRnJpZW5kbHkgbmFtZSBmb3IgdGhl IGlucHV0IGZpZWxkLiBJZiBzZXQsIHRoaXMgd2lsbCBvdXRwdXQgYW4gPHNwYW4gY2xhc3M9 ImNhcHMiPkhUTUw8L3NwYW4+IDxsYWJlbD4gdGFnIGxpbmtlZCB0byB0aGUgaW5wdXQgZmll bGQuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+bmFtZTwvc3Bhbj4gPHNw YW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiBJbnB1dCBmaWVsZCBuYW1lLjwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPmJyZWFrPC9zcGFuPiA8c3BhbiBj bGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IFNlcGFyYXRvciBiZXR3ZWVuIGxhYmVs IHRhZyBhbmQgaW5wdXQgdGFnLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUi PmRlbGltaXRlcjwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFu PiBMaXN0IHNlcGFyYXRvci4gRGVmYXVsdCAmIzgyMjA7LCYjODIyMTs8L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5pdGVtczwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMt dHlwZSI+c3RyaW5nPC9zcGFuPiBEZWxpbWl0ZWQgbGlzdCBjb250YWluaW5nIGEgc2VsZWN0 IGxpc3QgZGlzcGxheSB2YWx1ZXMuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFt ZSI+dmFsdWVzPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+ IERlbGltaXRlZCBsaXN0IGNvbnRhaW5pbmcgYSBzZWxlY3QgbGlzdCBpdGVtIHZhbHVlcy48 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5yZXF1aXJlZDwvc3Bhbj4gPHNw YW4gY2xhc3M9ImF0dHMtdHlwZSI+aW50PC9zcGFuPiBTcGVjaWZpZXMgaWYgaW5wdXQgaXMg cmVxdWlyZWQuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+c2VsZWN0ZWQ8 L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gVGhlIHZhbHVl IG9mIHRoZSBzZWxlY3RlZCBpdGVtLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5h bWUiPmZpcnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+ IERpc3BsYXkgdmFsdWUgb2YgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGxpc3QuIEUuZy4gJiM4 MjIwO1NlbGVjdCBhIFNlY3Rpb24mIzgyMjE7IG9yICYjODIyMDsmIzgyMjE7IGZvciBhIGJs YW5rIG9wdGlvbi48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5jbGFzczwv c3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiA8c3BhbiBjbGFz cz0iY2FwcyI+Q1NTPC9zcGFuPiBjbGFzcyBuYW1lLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdHRzLW5hbWUiPnNlbGVjdF9saW1pdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlw ZSI+aW50PC9zcGFuPiBTcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGl0ZW1zIHRo YXQgbWF5IGJlIHNlbGVjdGVkLiBJZiBzZXQgdG8gYSB2YWx1ZSBncmVhdGVyIHRoYW4gMSwg YSBtdWx0aXNlbGVjdCB3aWxsIGJlIHVzZWQuIFRoZSBzdG9yZWQgdmFsdWUgd2lsbCBiZSBh biBhcnJheS48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5hc19jc3Y8L3Nw YW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPmludDwvc3Bhbj4gSWYgc2V0IHRvIDEsIHRo ZSB2YWx1ZSB3aWxsIGJlIHN0b3JlZCBhcyBhIGRlbGltaXRlZCBzdHJpbmcgb2YgdmFsdWVz IGluc3RlYWQgb2YgYW4gYXJyYXkuIFRoaXMgZG9lcyBub3RoaW5nIHdoZW4gc2VsZWN0X2xp bWl0IGlzIGxlc3MgdGhhbiAyLjwvbGk+Cgk8L3VsPgoKCTxoMyBjbGFzcz0idGFnIiBpZD0i bWVtX2Zvcm1fY2F0ZWdvcnkiPm1lbV9mb3JtX3NlbGVjdF9jYXRlZ29yeTwvaDM+CgoJPHAg Y2xhc3M9InRhZy1zdW1tYXJ5Ij5UaGlzIHdpbGwgb3V0cHV0IGFuIDxzcGFuIGNsYXNzPSJj YXBzIj5IVE1MPC9zcGFuPiBzZWxlY3QgZmllbGQgcG9wdWxhdGVkIHdpdGggdGhlIHNwZWNp ZmllZCBUZXh0cGF0dGVybiBjYXRlZ29yaWVzLjwvcD4KCgk8dWwgY2xhc3M9ImF0dHMiPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5sYWJlbDwvc3Bhbj4gPHNwYW4gY2xhc3M9 ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiBGcmllbmRseSBuYW1lIGZvciB0aGUgaW5wdXQg ZmllbGQuIElmIHNldCwgdGhpcyB3aWxsIG91dHB1dCBhbiA8c3BhbiBjbGFzcz0iY2FwcyI+ SFRNTDwvc3Bhbj4gPGxhYmVsPiB0YWcgbGlua2VkIHRvIHRoZSBpbnB1dCBmaWVsZC48L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5uYW1lPC9zcGFuPiA8c3BhbiBjbGFz cz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IElucHV0IGZpZWxkIG5hbWUuPC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+YnJlYWs8L3NwYW4+IDxzcGFuIGNsYXNzPSJh dHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gU2VwYXJhdG9yIGJldHdlZW4gbGFiZWwgdGFnIGFu ZCBpbnB1dCB0YWcuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+ZGVsaW1p dGVyPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IExpc3Qg c2VwYXJhdG9yLiBEZWZhdWx0ICYjODIyMDssJiM4MjIxOzwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdHRzLW5hbWUiPml0ZW1zPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5z dHJpbmc8L3NwYW4+IERlbGltaXRlZCBsaXN0IGNvbnRhaW5pbmcgYSBzZWxlY3QgbGlzdCBk aXNwbGF5IHZhbHVlcy48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj52YWx1 ZXM8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gRGVsaW1p dGVkIGxpc3QgY29udGFpbmluZyBhIHNlbGVjdCBsaXN0IGl0ZW0gdmFsdWVzLjwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPnJlcXVpcmVkPC9zcGFuPiA8c3BhbiBjbGFz cz0iYXR0cy10eXBlIj5pbnQ8L3NwYW4+IFNwZWNpZmllcyBpZiBpbnB1dCBpcyByZXF1aXJl ZC48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5zZWxlY3RlZDwvc3Bhbj4g PHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiBUaGUgdmFsdWUgb2YgdGhl IHNlbGVjdGVkIGl0ZW0uPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+Zmly c3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gRGlzcGxh eSB2YWx1ZSBvZiB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgbGlzdC4gRS5nLiAmIzgyMjA7U2Vs ZWN0IGEgU2VjdGlvbiYjODIyMTsgb3IgJiM4MjIwOyYjODIyMTsgZm9yIGEgYmxhbmsgb3B0 aW9uLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPmNsYXNzPC9zcGFuPiA8 c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IDxzcGFuIGNsYXNzPSJjYXBz Ij5DU1M8L3NwYW4+IGNsYXNzIG5hbWUuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMt bmFtZSI+ZXhjbHVkZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9z cGFuPiBMaXN0IG9mIGl0ZW0gdmFsdWVzIHRoYXQgd2lsbCBub3QgYmUgaW5jbHVkZWQuPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+c29ydDwvc3Bhbj4gPHNwYW4gY2xh c3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiAgSG93IHdpbGwgdGhlIGxpc3QgdmFsdWVz IGJlIHNvcnRlZC48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj50eXBlPC9z cGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IENhdGVnb3J5IHR5 cGUgbmFtZS4gRS5nLiAmIzgyMjA7YXJ0aWNsZSYjODIyMTs8L2xpPgoJPC91bD4KCgk8aDMg Y2xhc3M9InRhZyIgaWQ9Im1lbV9mb3JtX3NlY3Rpb24iPm1lbV9mb3JtX3NlbGVjdF9zZWN0 aW9uPC9oMz4KCgk8cCBjbGFzcz0idGFnLXN1bW1hcnkiPlRoaXMgd2lsbCBvdXRwdXQgYW4g PHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IHNlbGVjdCBmaWVsZCBwb3B1bGF0ZWQg d2l0aCB0aGUgc3BlY2lmaWVkIFRleHRwYXR0ZXJuIHNlY3Rpb25zLjwvcD4KCgk8dWwgY2xh c3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5sYWJlbDwvc3Bhbj4g PHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiBGcmllbmRseSBuYW1lIGZv ciB0aGUgaW5wdXQgZmllbGQuIElmIHNldCwgdGhpcyB3aWxsIG91dHB1dCBhbiA8c3BhbiBj bGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gPGxhYmVsPiB0YWcgbGlua2VkIHRvIHRoZSBpbnB1 dCBmaWVsZC48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5uYW1lPC9zcGFu PiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IElucHV0IGZpZWxkIG5h bWUuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+YnJlYWs8L3NwYW4+IDxz cGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gU2VwYXJhdG9yIGJldHdlZW4g bGFiZWwgdGFnIGFuZCBpbnB1dCB0YWcuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMt bmFtZSI+ZGVsaW1pdGVyPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8 L3NwYW4+IExpc3Qgc2VwYXJhdG9yLiBEZWZhdWx0ICYjODIyMDssJiM4MjIxOzwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPml0ZW1zPC9zcGFuPiA8c3BhbiBjbGFzcz0i YXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IERlbGltaXRlZCBsaXN0IGNvbnRhaW5pbmcgYSBz ZWxlY3QgbGlzdCBkaXNwbGF5IHZhbHVlcy48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0 cy1uYW1lIj52YWx1ZXM8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0cmluZzwv c3Bhbj4gRGVsaW1pdGVkIGxpc3QgY29udGFpbmluZyBhIHNlbGVjdCBsaXN0IGl0ZW0gdmFs dWVzLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPnJlcXVpcmVkPC9zcGFu PiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5pbnQ8L3NwYW4+IFNwZWNpZmllcyBpZiBpbnB1 dCBpcyByZXF1aXJlZC48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5zZWxl Y3RlZDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiBUaGUg dmFsdWUgb2YgdGhlIHNlbGVjdGVkIGl0ZW0uPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 dHMtbmFtZSI+Zmlyc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0cmluZzwv c3Bhbj4gRGlzcGxheSB2YWx1ZSBvZiB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgbGlzdC4gRS5n LiAmIzgyMjA7U2VsZWN0IGEgU2VjdGlvbiYjODIyMTsgb3IgJiM4MjIwOyYjODIyMTsgZm9y IGEgYmxhbmsgb3B0aW9uLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPmNs YXNzPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IDxzcGFu IGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5hbWUuPC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0dHMtbmFtZSI+ZXhjbHVkZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlw ZSI+c3RyaW5nPC9zcGFuPiBMaXN0IG9mIGl0ZW0gdmFsdWVzIHRoYXQgd2lsbCBub3QgYmUg aW5jbHVkZWQuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+c29ydDwvc3Bh bj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiAgSG93IHdpbGwgdGhl IGxpc3QgdmFsdWVzIGJlIHNvcnRlZC48L2xpPgoJPC91bD4KCgk8aDMgY2xhc3M9InRhZyIg aWQ9Im1lbV9mb3JtX3NlcnZlcmluZm8iPm1lbV9mb3JtX3NlcnZlcmluZm88L2gzPgoKCTxw IGNsYXNzPSJ0YWctc3VtbWFyeSI+VGhpcyB3aWxsIG91dHB1dCBubyA8c3BhbiBjbGFzcz0i Y2FwcyI+SFRNTDwvc3Bhbj4gYW5kIGlzIHVzZWQgdG8gcGFzcyBzZXJ2ZXIgaW5mb3JtYXRp b24gdG8gdGhlIHBsdWdpbiBoYW5kbGluZyB0aGUgZm9ybSBzdWJtaXNzaW9uLjwvcD4KCgk8 dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5sYWJlbDwv c3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiBGcmllbmRseSBu YW1lIGZvciB0aGUgaW5wdXQgZmllbGQuIElmIHNldCwgdGhpcyB3aWxsIG91dHB1dCBhbiA8 c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gPGxhYmVsPiB0YWcgbGlua2VkIHRvIHRo ZSBpbnB1dCBmaWVsZC48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5uYW1l PC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IElucHV0IGZp ZWxkIG5hbWUuPC9saT4KCTwvdWw+CgoJPGgzIGNsYXNzPSJ0YWciIGlkPSJtZW1fZm9ybV9z dWJtaXQiPm1lbV9mb3JtX3N1Ym1pdDwvaDM+CgoJPHAgY2xhc3M9InRhZy1zdW1tYXJ5Ij5U aGlzIHdpbGwgb3V0cHV0IGVpdGhlciBhbiA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bh bj4gc3VibWl0IGlucHV0IGZpZWxkIG9yIGFuIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9z cGFuPiBidXR0b24uPC9wPgoKCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdHRzLW5hbWUiPmxhYmVsPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5zdHJp bmc8L3NwYW4+IEZyaWVuZGx5IG5hbWUgZm9yIHRoZSBpbnB1dCBmaWVsZC4gSWYgc2V0LCB0 aGlzIHdpbGwgb3V0cHV0IGFuIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiA8bGFi ZWw+IHRhZyBsaW5rZWQgdG8gdGhlIGlucHV0IGZpZWxkLjwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdHRzLW5hbWUiPm5hbWU8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0 cmluZzwvc3Bhbj4gSW5wdXQgZmllbGQgbmFtZS48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXR0cy1uYW1lIj5jbGFzczwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5n PC9zcGFuPiA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBjbGFzcyBuYW1lLjwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPmJ1dHRvbjwvc3Bhbj4gPHNwYW4gY2xh c3M9ImF0dHMtdHlwZSI+aW50PC9zcGFuPiBJZiAmIzgyMjA7MSYjODIyMTssIGFuIGh0bWwg YnV0dG9uIHRhZyB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiBhbiBpbnB1dCB0YWcuPC9saT4K CTwvdWw+CgoJPGgzIGNsYXNzPSJ0YWciIGlkPSJtZW1fZm9ybV90ZXh0Ij5tZW1fZm9ybV90 ZXh0PC9oMz4KCgk8cCBjbGFzcz0idGFnLXN1bW1hcnkiPlRoaXMgd2lsbCBvdXRwdXQgYW4g PHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IHRleHQgaW5wdXQgZmllbGQuPC9wPgoK CTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPmxhYmVs PC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IEZyaWVuZGx5 IG5hbWUgZm9yIHRoZSBpbnB1dCBmaWVsZC4gSWYgc2V0LCB0aGlzIHdpbGwgb3V0cHV0IGFu IDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiA8bGFiZWw+IHRhZyBsaW5rZWQgdG8g dGhlIGlucHV0IGZpZWxkLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPm5h bWU8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gSW5wdXQg ZmllbGQgbmFtZS48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5jbGFzczwv c3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiA8c3BhbiBjbGFz cz0iY2FwcyI+Q1NTPC9zcGFuPiBjbGFzcyBuYW1lLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdHRzLW5hbWUiPmJyZWFrPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5zdHJp bmc8L3NwYW4+IFNlcGFyYXRvciBiZXR3ZWVuIGxhYmVsIHRhZyBhbmQgaW5wdXQgdGFnLjwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPmRlZmF1bHQ8L3NwYW4+IDxzcGFu IGNsYXNzPSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gVGhlIGRlZmF1bHQgdmFsdWUuPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+Zm9ybWF0PC9zcGFuPiA8c3BhbiBj bGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IEEgcmVnZXggcGF0dGVybiB0aGF0IHdp bGwgYmUgbWF0Y2hlZCBhZ2FpbnN0IHRoZSBpbnB1dCB2YWx1ZS4gWW91IG11c3QgZXNjYXBl IGFsbCBiYWNrc2xhc2hlcyAmIzgyMTY7XCYjODIxNzsuIEUuZyAmIzgyMjA7L1xcZC8mIzgy MjE7IGlzIGEgc2luZ2xlIGRpZ2l0LjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5h bWUiPmV4YW1wbGU8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bh bj4gQW4gZXhhbXBsZSBvZiBhIGNvcnJlY3RseSBmb3JtYXR0ZWQgaW5wdXQgdmFsdWUuPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+cGFzc3dvcmQ8L3NwYW4+IDxzcGFu IGNsYXNzPSJhdHRzLXR5cGUiPmludDwvc3Bhbj4gU3BlY2lmaWVzIGlmIHRoZSBpbnB1dCBm aWVsZCBpcyBhIHBhc3N3b3JkIGZpZWxkLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRz LW5hbWUiPnJlcXVpcmVkPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5pbnQ8L3Nw YW4+IFNwZWNpZmllcyBpZiBpbnB1dCBpcyByZXF1aXJlZC48L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXR0cy1uYW1lIj5tYXg8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPmlu dDwvc3Bhbj4gTWF4IGNoYXJhY3RlciBsZW5ndGguPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0dHMtbmFtZSI+bWluPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5pbnQ8L3Nw YW4+IE1pbiBjaGFyYWN0ZXIgbGVuZ3RoLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRz LW5hbWUiPnNpemU8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPmludDwvc3Bhbj4g U2l6ZSBvZiBpbnB1dCBmaWVsZC48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1l Ij5lc2NhcGVfdmFsdWU8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPmludDwvc3Bh bj4gU2V0IHRvICYjODIyMDswJiM4MjIxOyB0byBwcmV2ZW50IGh0bWwgZXNjYXBpbmcgdGhl IHZhbHVlLiBEZWZhdWx0ICYjODIyMDsxJiM4MjIxOy48L2xpPgoJPC91bD4KCgk8aDMgY2xh c3M9InRhZyIgaWQ9Im1lbV9mb3JtX3RleHRhcmVhIj5tZW1fZm9ybV90ZXh0YXJlYTwvaDM+ CgoJPHAgY2xhc3M9InRhZy1zdW1tYXJ5Ij5UaGlzIHdpbGwgb3V0cHV0IGFuIDxzcGFuIGNs YXNzPSJjYXBzIj5IVE1MPC9zcGFuPiB0ZXh0YXJlYS48L3A+CgoJPHVsIGNsYXNzPSJhdHRz Ij4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+bGFiZWw8L3NwYW4+IDxzcGFuIGNs YXNzPSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gRnJpZW5kbHkgbmFtZSBmb3IgdGhlIGlu cHV0IGZpZWxkLiBJZiBzZXQsIHRoaXMgd2lsbCBvdXRwdXQgYW4gPHNwYW4gY2xhc3M9ImNh cHMiPkhUTUw8L3NwYW4+IDxsYWJlbD4gdGFnIGxpbmtlZCB0byB0aGUgaW5wdXQgZmllbGQu PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+bmFtZTwvc3Bhbj4gPHNwYW4g Y2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiBJbnB1dCBmaWVsZCBuYW1lLjwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPmNsYXNzPC9zcGFuPiA8c3BhbiBjbGFz cz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3Nw YW4+IGNsYXNzIG5hbWUuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+YnJl YWs8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gU2VwYXJh dG9yIGJldHdlZW4gbGFiZWwgdGFnIGFuZCBpbnB1dCB0YWcuPC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0dHMtbmFtZSI+ZGVmYXVsdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlw ZSI+c3RyaW5nPC9zcGFuPiBUaGUgZGVmYXVsdCB2YWx1ZS48L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXR0cy1uYW1lIj5tYXg8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPmlu dDwvc3Bhbj4gTWF4IGNoYXJhY3RlciBsZW5ndGguPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0dHMtbmFtZSI+bWluPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5pbnQ8L3Nw YW4+IE1pbiBjaGFyYWN0ZXIgbGVuZ3RoLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRz LW5hbWUiPnJlcXVpcmVkPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5pbnQ8L3Nw YW4+IFNwZWNpZmllcyBpZiBpbnB1dCBpcyByZXF1aXJlZC48L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXR0cy1uYW1lIj5yb3dzPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5p bnQ8L3NwYW4+IE51bWJlciBvZiByb3dzIGluIHRoZSB0ZXh0YXJlYS48L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5jb2xzPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10 eXBlIj5pbnQ8L3NwYW4+IE51bWJlciBvZiBjb2x1bW5zIGluIHRoZSB0ZXh0YXJlYS48L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5lc2NhcGVfdmFsdWU8L3NwYW4+IDxz cGFuIGNsYXNzPSJhdHRzLXR5cGUiPmludDwvc3Bhbj4gU2V0IHRvICYjODIyMDswJiM4MjIx OyB0byBwcmV2ZW50IGh0bWwgZXNjYXBpbmcgdGhlIHZhbHVlLiBEZWZhdWx0ICYjODIyMDsx JiM4MjIxOy48L2xpPgoJPC91bD4KCgk8aDMgY2xhc3M9InRhZyIgaWQ9Im1lbV9mb3JtX3Zh bHVlIj5tZW1fZm9ybV92YWx1ZTwvaDM+CgoJPHAgY2xhc3M9InRhZy1zdW1tYXJ5Ij5UaGlz IHdpbGwgb3V0cHV0IHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggYSBmb3JtIGZpZWxkLiBV c2VmdWwgdG8gbWl4IDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBpbnB1dCBmaWVs ZHMgd2l0aCBtZW1fZm9ybS48L3A+CgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0dHMtbmFtZSI+aWQ8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0 cmluZzwvc3Bhbj4gSUQgZm9yIG91dHB1dCB3cmFwIHRhZy48L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXR0cy1uYW1lIj5jbGFzczwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+ c3RyaW5nPC9zcGFuPiA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBjbGFzcyBuYW1l LjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPmNsYXNzPC9zcGFuPiA8c3Bh biBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IDxzcGFuIGNsYXNzPSJjYXBzIj5D U1M8L3NwYW4+IGNsYXNzLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPndy YXB0YWc8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gPHNw YW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IHRhZyB0byB3cmFwIGFyb3VuZCB0aGUgdmFs dWUuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+YXR0cmlidXRlczwvc3Bh bj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiBBZGRpdGlvbmFsIDxz cGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiB0YWcgYXR0cmlidXRlcyB0aGF0IHNob3Vs ZCBiZSBwYXNzZWQgdG8gdGhlIG91dHB1dCB0YWcuPC9saT4KCTwvdWw+CgoJPGgyIGNsYXNz PSJzZWN0aW9uIj5FeHBvc2VkIEZ1bmN0aW9uczwvaDI+CgoJPGgzIGNsYXNzPSJ0YWciPm1l bV9mb3JtX21haWw8L2gzPgoKCTxwIGNsYXNzPSJ0YWctc3VtbWFyeSI+VGhpcyB3aWxsIHNl bmQgYW4gZW1haWwgbWVzc2FnZS48L3A+CgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0dHMtbmFtZSI+UmV0dXJuIFZhbHVlPC9zcGFuPiA8c3BhbiBjbGFzcz0i YXR0cy10eXBlIj5ib29sPC9zcGFuPiBSZXR1cm5zIHRydWUgb3IgZmFsc2UsIGluZGljYXRp bmcgd2hldGhlciB0aGUgZW1haWwgd2FzIHN1Y2Nlc3NmdWxseSBnaXZlbiB0byB0aGUgbWFp bCBzeXN0ZW0uIFRoaXMgZG9lcyBub3QgaW5kaWNhdGUgdGhlIHZhbGlkaXR5IG9mIHRoZSBl bWFpbCBhZGRyZXNzIG9yIHRoYXQgdGhlIHJlY2lwaWVudCBhY3R1YWxseSByZWNlaXZlZCB0 aGUgZW1haWwuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+ZnJvbTwvc3Bh bj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiBUaGUgRnJvbSBlbWFp bCBhZGRyZXNzLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPnJlcGx5PC9z cGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IFRoZSBSZXBseSBU byBlbWFpbCBhZGRyZXNzLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPnRv PC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IFRoZSBUbyBl bWFpbCBhZGRyZXNzKGVzKS48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5z dWJqZWN0PC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IFRo ZSBlbWFpbCYjODIxNztzIFN1YmplY3QuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMt bmFtZSI+bXNnPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+ IFRoZSBlbWFpbCBtZXNzYWdlLjwvbGk+Cgk8L3VsPgoKCTxoMyBjbGFzcz0idGFnIj5tZW1f Zm9ybV9lcnJvcjwvaDM+CgoJPHAgY2xhc3M9InRhZy1zdW1tYXJ5Ij5UaGlzIHdpbGwgc2V0 IG9yIGdldCBlcnJvcnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBmb3JtLjwvcD4KCgk8dWwgY2xh c3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5SZXR1cm4gVmFsdWU8 L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPm1peGVkPC9zcGFuPiBJZiBlcnIgaXMg PHNwYW4gY2xhc3M9ImNhcHMiPk5VTEw8L3NwYW4+LCB0aGVuIGl0IHdpbGwgcmV0dXJuIGFu IGFycmF5IG9mIGVycm9ycyB0aGF0IGhhdmUgYmVlbiBzZXQuPC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0dHMtbmFtZSBvcHRpb25hbCI+ZXJyPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0 cy10eXBlIj5zdHJpbmc8L3NwYW4+IEFuIGVycm9yIHRoYXQgd2lsbCBiZSBhZGRlZCB0byB0 aGUgbGlzdCBvZiBmb3JtIGVycm9ycyB0aGF0IHdpbGwgYmUgZGlzcGxheWVkIHRvIHRoZSBm b3JtIHVzZXIuPC9saT4KCTwvdWw+CgoJPGgzIGNsYXNzPSJ0YWciPm1lbV9mb3JtX2RlZmF1 bHQ8L2gzPgoKCTxwIGNsYXNzPSJ0YWctc3VtbWFyeSI+VGhpcyB3aWxsIGdldCBvciBzZXQg YSBkZWZhdWx0IHZhbHVlIGZvciBhIGZvcm0uPC9wPgoKCTx1bCBjbGFzcz0iYXR0cyI+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPlJldHVybiBWYWx1ZTwvc3Bhbj4gPHNwYW4g Y2xhc3M9ImF0dHMtdHlwZSI+bWl4ZWQ8L3NwYW4+IElmIDxzcGFuIGNsYXNzPSJhdHRzLW5h bWUiPnZhbCBpcyA8c3BhbiBjbGFzcz0iY2FwcyI+TlVMTDwvc3Bhbj4sIHRoZW4gaXQgd2ls bCByZXR1cm4gdGhlIGRlZmF1bHQgdmFsdWUgc2V0IGZvciB0aGUgaW5wdXQgZmllbGQgbWF0 Y2hpbmcgJShhdHRzLW5hbWUpa2V5PC9zcGFuPi4gSWYgPHNwYW4gY2xhc3M9ImF0dHMtbmFt ZSI+a2V5PC9zcGFuPiBkb2VzIG5vdCBleGlzdCwgdGhlbiBpdCB3aWxsIHJldHVybiA8c3Bh biBjbGFzcz0iY2FwcyI+RkFMU0U8L3NwYW4+LjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dHRzLW5hbWUiPmtleTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSUiPnN0cmluZzwv c3Bhbj4gVGhlIG5hbWUgb2YgdGhlIGlucHV0IGZpZWxkLjwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdHRzLW5hbWUgb3B0aW9uYWwiPnZhbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMt dHlwZSI+c3RyaW5nPC9zcGFuPiBJZiBzcGVjaWZpZWQsIHRoaXMgd2lsbCBiZSBzcGVjaWZp ZWQgYXMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBpbnB1dCBmaWVsZCBuYW1lZCAmIzgy MjA7a2V5JiM4MjIxOy48L2xpPgoJPC91bD4KCgk8aDMgY2xhc3M9InRhZyI+bWVtX2Zvcm1f c3RvcmU8L2gzPgoKCTxwIGNsYXNzPSJ0YWctc3VtbWFyeSI+VGhpcyB3aWxsIHN0b3JlIHRo ZSBuYW1lLCBsYWJlbCBhbmQgdmFsdWUgZm9yIGEgZmllbGQgaW4gdG8gdGhlIGFwcHJvcHJp YXRlIGdsb2JhbCB2YXJpYWJsZXMuPC9wPgoKCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdHRzLW5hbWUiPm5hbWU8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5 cGUiPnN0cmluZzwvc3Bhbj4gVGhlIG5hbWUgb2YgdGhlIGZpZWxkLjwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdHRzLW5hbWUiPmxhYmVsPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10 eXBlJSI+c3RyaW5nPC9zcGFuPiBUaGUgbGFiZWwgb2YgdGhlIGZpZWxkLjwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPnZhbHVlPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0 cy10eXBlIj5taXhlZDwvc3Bhbj4gVGhlIHZhbHVlIG9mIHRoZSBmaWVsZC48L2xpPgoJPC91 bD4KCgk8aDMgY2xhc3M9InRhZyI+bWVtX2Zvcm1fcmVtb3ZlPC9oMz4KCgk8cCBjbGFzcz0i dGFnLXN1bW1hcnkiPlRoaXMgd2lsbCByZW1vdmUgdGhlIGluZm9ybWF0aW9uIGFzc29jaWF0 ZWQgd2l0aCBhIGZpZWxkIHRoYXQgaGFzIGJlZW4gc3RvcmVkLjwvcD4KCgk8dWwgY2xhc3M9 ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5uYW1lPC9zcGFuPiA8c3Bh biBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IFRoZSBuYW1lIG9mIHRoZSBmaWVs ZC48L2xpPgoJPC91bD4KCgk8aDIgY2xhc3M9InNlY3Rpb24iPkdsb2JhbCBWYXJpYWJsZXM8 L2gyPgoKCTxwPlRoaXMgbGlicmFyeSBhbGxvd3Mgb3RoZXIgcGx1Z2lucyB0byBob29rIGlu IHRvIGV2ZW50cyB3aXRoIHRoZSA8Y29kZT5yZWdpc3Rlcl9jYWxsYmFjazwvY29kZT4gZnVu Y3Rpb24uPC9wPgoKCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRz LW5hbWUiPiRtZW1fZm9ybV90eXBlPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5z dHJpbmc8L3NwYW4+IEEgdGV4dCB2YWx1ZSB0aGF0IGFsbG93cyBhIHBsdWdpbiBkZXRlcm1p bmUgaWYgaXQgc2hvdWxkIHByb2Nlc3MgdGhlIGN1cnJlbnQgZm9ybS48L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj4kbWVtX2Zvcm1fc3VibWl0PC9zcGFuPiA8c3BhbiBj bGFzcz0iYXR0cy10eXBlIj5ib29sPC9zcGFuPiBUaGlzIHNwZWNpZmllcyBpZiB0aGUgZm9y bSBpcyBkb2luZyBhIHBvc3RiYWNrLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5h bWUiPiRtZW1fZm9ybV9kZWZhdWx0PC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5h cnJheTwvc3Bhbj4gQW4gYXJyYXkgY29udGFpbmluZyB0aGUgZGVmYXVsdCB2YWx1ZXMgdG8g dXNlIHdoZW4gZGlzcGxheWluZyB0aGUgZm9ybS48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXR0cy1uYW1lIj4kbWVtX2Zvcm08L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPmFy cmF5PC9zcGFuPiBBbiBhcnJheSBtYXBwaW5nIGFsbCBpbnB1dCBsYWJlbHMgdG8gdGhlaXIg dmFsdWVzLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPiRtZW1fZm9ybV9s YWJlbHM8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPmFycmF5PC9zcGFuPiBBbiBh cnJheSBtYXBwaW5nIGFsbCBpbnB1dCBuYW1lcyB0byB0aGVpciBsYWJlbHMuPC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+JG1lbV9mb3JtX3ZhbHVlczwvc3Bhbj4gPHNw YW4gY2xhc3M9ImF0dHMtdHlwZSI+YXJyYXk8L3NwYW4+IEFuIGFycmF5IG1hcHBpbmcgYWxs IGlucHV0IG5hbWVzIHRvIHRoZWlyIHZhbHVlcy48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXR0cy1uYW1lIj4kbWVtX2Zvcm1fdGhhbmtzX2Zvcm08L3NwYW4+IDxzcGFuIGNsYXNzPSJh dHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gQ29udGFpbnMgdGhlIG1lc3NhZ2UgdGhhdCB3aWxs IGJlIHNob3duIHRvIHRoZSB1c2VyIGFmdGVyIGEgc3VjY2Vzc2Z1bCBzdWJtaXNzaW9uLiBF aXRoZXIgdGhlICYjODIyMDt0aGFua3NfZm9ybSYjODIyMTsgb3IgdGhlICYjODIyMDt0aGFu a3MmIzgyMjE7IGF0dHJpYnV0ZS4gQSBwbHVnaW4gY2FuIG1vZGlmeSB0aGlzIHZhbHVlIG9y IHJldHVybiBhIHN0cmluZyB0byBvdmVyPC9saT4KCTwvdWw+CgoJPGgyIGNsYXNzPSJzZWN0 aW9uIj5QbHVnaW4gRXZlbnRzPC9oMj4KCgk8aDMgY2xhc3M9ImV2ZW50Ij5tZW1fZm9ybS5k ZWZhdWx0czwvaDM+CgoJPHAgY2xhc3M9ImV2ZW50LXN1bW1hcnkiPkFsbG93cyBhIHBsdWdp biB0byBhbHRlciB0aGUgZGVmYXVsdCB2YWx1ZXMgZm9yIGEgZm9ybSBwcmlvciB0byBiZWlu ZyBkaXNwbGF5ZWQuPC9wPgoKCTxoMyBjbGFzcz0iZXZlbnQiPm1lbV9mb3JtLmRpc3BsYXk8 L2gzPgoKCTxwIGNsYXNzPSJldmVudC1zdW1tYXJ5Ij5BbGxvd3MgYSBwbHVnaW4gdG8gaW5z ZXJ0IGFkZGl0aW9uYWwgaHRtbCBpbiB0aGUgcmVuZGVyZWQgaHRtbCBmb3JtIHRhZy48L3A+ CgoJPGgzIGNsYXNzPSJldmVudCI+bWVtX2Zvcm0uc3VibWl0PC9oMz4KCgk8cCBjbGFzcz0i ZXZlbnQtc3VtbWFyeSI+QWxsb3dzIGEgcGx1Z2luIHRvIGFjdCB1cG9uIGEgc3VjY2Vzc2Z1 bCBmb3JtIHN1Ym1pc3Npb24uPC9wPgoKCTxoMyBjbGFzcz0iZXZlbnQiPm1lbV9mb3JtLnNw YW08L2gzPgoKCTxwIGNsYXNzPSJldmVudC1zdW1tYXJ5Ij5BbGxvd3MgYSBwbHVnaW4gdG8g dGVzdCBhIHN1Ym1pc3Npb24gYXMgc3BhbS4gVGhlIGZ1bmN0aW9uIGdldF9tZW1fZm9ybV9l dmFsdWF0b3IoKSByZXR1cm5zIHRoZSBldmFsdWF0b3IuPC9wPgoKCTxoMyBjbGFzcz0iZXZl bnQiPm1lbV9mb3JtLnN0b3JlX3ZhbHVlPC9oMz4KCgk8cCBjbGFzcz0iZXZlbnQtc3VtbWFy eSI+T24gc3VibWl0LCB0aGlzIGV2ZW50IGlzIGNhbGxlZCBmb3IgZWFjaCBmaWVsZCB0aGF0 IHBhc3NlZCB0aGUgYnVpbHRpbiBjaGVja3MgYW5kIHdhcyBqdXN0IHN0b3JlZCBpbiB0byB0 aGUgZ2xvYmFsIHZhcmlhYmxlcy4gVGhlIGNhbGxiYWNrIHN0ZXAgaXMgdGhlIGZpZWxkIG5h bWUuIFRoaXMgY2FsbGJhY2sgY2FuIGJlIHVzZWQgZm9yIGN1c3RvbSBmaWVsZCB2YWxpZGF0 aW9uLiBJZiB0aGUgdmFsdWUgaXMgaW52YWxpZCwgcmV0dXJuIDxzcGFuIGNsYXNzPSJjYXBz Ij5GQUxTRTwvc3Bhbj4uIFdhcm5pbmc6IFRoaXMgZXZlbnQgaXMgY2FsbGVkIGZvciBlYWNo IGZpZWxkIGV2ZW4gaWYgYSBwcmV2aW91c2x5IGNoZWNrZWQgZmllbGQgaGFzIGZhaWxlZC48 L3A+CgoJPGgzIGNsYXNzPSJldmVudCI+bWVtX2Zvcm0udmFsaWRhdGU8L2gzPgoKCTxwIGNs YXNzPSJldmVudC1zdW1tYXJ5Ij5UaGlzIGV2ZW50IGlzIGNhbGxlZCBvbiBmb3JtIHN1Ym1p dCwgYWZ0ZXIgdGhlIGluZGl2aWR1YWwgZmllbGRzIGFyZSBwYXJzZWQgYW5kIHZhbGlkYXRl ZC4gVGhpcyBldmVudCBpcyBub3QgY2FsbGVkIGlmIHRoZXJlIGFyZSBhbnkgZXJyb3JzIGFm dGVyIHRoZSBmaWVsZHMgYXJlIHZhbGlkYXRlZC4gQW55IG11bHRpLWZpZWxkIG9yIGZvcm0g c3BlY2lmaWMgdmFsaWRhdGlvbiBzaG91bGQgaGFwcGVuIGhlcmUuIFVzZSBtZW1fZm9ybV9l cnJvcigpIHRvIHNldCBhbnkgdmFsaWRhdGlvbiBlcnJvciBtZXNzYWdlcyB0byBwcmV2ZW50 IGEgc3VjY2Vzc2Z1bCBwb3N0LjwvcD4iO3M6NDoiY29kZSI7czozNDY1NjoiCgokbWVtX2ds el9jdXN0b21fZmllbGRzX3BsdWdpbiA9IGxvYWRfcGx1Z2luKCdnbHpfY3VzdG9tX2ZpZWxk cycpOwoKLy8gbmVlZGVkIGZvciBNTFAKZGVmaW5lKCAnTUVNX0ZPUk1fUFJFRklYJyAsICdt ZW1fZm9ybScgKTsKCmdsb2JhbCAkbWVtX2Zvcm1fbGFuZzsKCmlmICghaXNfYXJyYXkoJG1l bV9mb3JtX2xhbmcpKQp7CgkkbWVtX2Zvcm1fbGFuZyA9IGFycmF5KAoJCSdlcnJvcl9maWxl X2V4dGVuc2lvbicJPT4gJ0ZpbGUgdXBsb2FkIGZhaWxlZCBmb3IgZmllbGQge2xhYmVsfS4n LAoJCSdlcnJvcl9maWxlX2ZhaWxlZCcJPT4gJ0ZhaWxlZCB0byB1cGxvYWQgZmlsZSBmb3Ig ZmllbGQge2xhYmVsfS4nLAoJCSdlcnJvcl9maWxlX3NpemUnCT0+ICdGYWlsZWQgdG8gdXBs b2FkIEZpbGUgZm9yIGZpZWxkIHtsYWJlbH0uIEZpbGUgaXMgdG9vIGxhcmdlLicsCgkJJ2Zp ZWxkX21pc3NpbmcnCT0+ICdUaGUgZmllbGQge2xhYmVsfSBpcyByZXF1aXJlZC4nLAoJCSdm b3JtX2V4cGlyZWQnCT0+CSdUaGUgZm9ybSBoYXMgZXhwaXJlZC4nLAoJCSdmb3JtX21pc2Nv bmZpZ3VyZWQnCT0+ICdUaGUgbWVtX2Zvcm0gaXMgbWlzY29uZmlndXJlZC4gWW91IG11c3Qg c3BlY2lmeSB0aGUgImZvcm0iIGF0dHJpYnV0ZS4nLAoJCSdmb3JtX3NvcnJ5Jwk9PiAnVGhl IGZvcm0gaXMgY3VycmVudGx5IHVuYXZhaWxhYmxlLicsCgkJJ2Zvcm1fdXNlZCcJPT4JJ1Ro aXMgZm9ybSBoYXMgYWxyZWFkeSBiZWVuIHVzZWQgdG8gc3VibWl0LicsCgkJJ2dlbmVyYWxf aW5xdWlyeScJPT4gJycsCgkJJ2ludmFsaWRfZW1haWwnCT0+ICdUaGUgZW1haWwgYWRkcmVz cyB7ZW1haWx9IGlzIGludmFsaWQuJywKCQknaW52YWxpZF9ob3N0Jwk9PiAnVGhlIGhvc3Qg e2RvbWFpbn0gaXMgaW52YWxpZC4nLAoJCSdpbnZhbGlkX3V0ZjgnCT0+ICdJbnZhbGlkIFVU Rjggc3RyaW5nIGZvciBmaWVsZCB7bGFiZWx9LicsCgkJJ2ludmFsaWRfdmFsdWUnCT0+ICdU aGUgdmFsdWUgInt2YWx1ZX0iIGlzIGludmFsaWQgZm9yIHRoZSBpbnB1dCBmaWVsZCB7bGFi ZWx9LicsCgkJJ2ludmFsaWRfZm9ybWF0Jwk9PgknVGhlIGlucHV0IGZpZWxkIHtsYWJlbH0g bXVzdCBtYXRjaCB0aGUgZm9ybWF0ICJ7ZXhhbXBsZX0iLicsCgkJJ2ludmFsaWRfdG9vX21h bnlfc2VsZWN0ZWQnCT0+ICdUaGUgaW5wdXQgZmllbGQge2xhYmVsfSBvbmx5IGFsbG93cyB7 Y291bnR9IHNlbGVjdGVkIHtwbHVyYWx9LicsCgkJJ2l0ZW0nCT0+ICdpdGVtJywKCQknaXRl bXMnCT0+ICdpdGVtcycsCgkJJ21heF93YXJuaW5nJwk9PiAnVGhlIGlucHV0IGZpZWxkIHts YWJlbH0gbXVzdCBiZSBzbWFsbGVyIHRoYW4ge21heH0gY2hhcmFjdGVycyBsb25nLicsCgkJ J21pbl93YXJuaW5nJwk9PiAnVGhlIGlucHV0IGZpZWxkIHtsYWJlbH0gbXVzdCBiZSBhdCBs ZWFzdCB7bWlufSBjaGFyYWN0ZXJzIGxvbmcuJywKCQkncmVmcmVzaCcJPT4gJ1JlZnJlc2gn LAoJCSdzcGFtJwk9PiAnWW91ciBzdWJtaXNzaW9uIHdhcyBibG9ja2VkIGJ5IGEgc3BhbSBm aWx0ZXIuJywKCQknc3VibWl0dGVkX3RoYW5rcycJPT4JJ1lvdSBoYXZlIHN1Y2Nlc3NmdWxs eSBzdWJtaXR0ZWQgdGhlIGZvcm0uIFRoYW5rIHlvdS4nLAoJKTsKfQoKcmVnaXN0ZXJfY2Fs bGJhY2soICdtZW1fZm9ybV9lbnVtZXJhdGVfc3RyaW5ncycgLCAnbDEwbi5lbnVtZXJhdGVf c3RyaW5ncycgKTsKZnVuY3Rpb24gbWVtX2Zvcm1fZW51bWVyYXRlX3N0cmluZ3MoJGV2ZW50 ICwgJHN0ZXA9JycgLCAkcHJlPTApCnsKCWdsb2JhbCAkbWVtX2Zvcm1fbGFuZzsKCSRyID0g YXJyYXkJKAoJCQkJJ293bmVyJwkJPT4gJ21lbV9mb3JtJywJCQkjCUNoYW5nZSB0byB5b3Vy IHBsdWdpbidzIG5hbWUKCQkJCSdwcmVmaXgnCT0+IE1FTV9GT1JNX1BSRUZJWCwJCSMJSXRz IHVuaXF1ZSBzdHJpbmcgcHJlZml4CgkJCQknbGFuZycJCT0+ICdlbi1nYicsCQkJCSMJVGhl IGxhbmd1YWdlIG9mIHRoZSBpbml0aWFsIHN0cmluZ3MuCgkJCQknZXZlbnQnCQk9PiAncHVi bGljJywJCQkjCXB1YmxpYy9hZG1pbi9jb21tb24gPSB3aGljaCBpbnRlcmZhY2UgdGhlIHN0 cmluZ3Mgd2lsbCBiZSBsb2FkZWQgaW50bwoJCQkJJ3N0cmluZ3MnCT0+ICRtZW1fZm9ybV9s YW5nLAkJIwlUaGUgc3RyaW5ncyB0aGVtc2VsdmVzLgoJCQkJKTsKCXJldHVybiAkcjsKfQoK CmZ1bmN0aW9uIG1lbV9mb3JtX2dUeHQoJHdoYXQsJGFyZ3MgPSBhcnJheSgpKQp7CglnbG9i YWwgJG1lbV9mb3JtX2xhbmcsICR0ZXh0YXJyYXk7CgoJJGtleSA9IHN0cnRvbG93ZXIoIE1F TV9GT1JNX1BSRUZJWCAuICctJyAuICR3aGF0ICk7CgoJaWYgKGlzc2V0KCR0ZXh0YXJyYXlb JGtleV0pKQoJewoJCSRzdHIgPSAkdGV4dGFycmF5WyRrZXldOwoJfQoJZWxzZQoJewoJCSRr ZXkgPSBzdHJ0b2xvd2VyKCR3aGF0KTsKCgkJaWYgKGlzc2V0KCRtZW1fZm9ybV9sYW5nWyRr ZXldKSkKCQkJJHN0ciA9ICRtZW1fZm9ybV9sYW5nWyRrZXldOwoJCWVsc2VpZiAoaXNzZXQo JHRleHRhcnJheVska2V5XSkpCgkJCSRzdHIgPSAkdGV4dGFycmF5WyRrZXldOwoJCWVsc2UK CQkJJHN0ciA9ICR3aGF0OwoJfQoKCWlmKCAhZW1wdHkoJGFyZ3MpICkKCQkkc3RyID0gc3Ry dHIoICRzdHIgLCAkYXJncyApOwoKCXJldHVybiAkc3RyOwp9CgoKZnVuY3Rpb24gbWVtX2Zv cm0oJGF0dHMsICR0aGluZz0nJykKewoJZ2xvYmFsICRzaXRlbmFtZSwgJHByZWZzLCAkZmls ZV9tYXhfdXBsb2FkX3NpemUsICRtZW1fZm9ybV9lcnJvciwgJG1lbV9mb3JtX3N1Ym1pdCwK CQkkbWVtX2Zvcm0sICRtZW1fZm9ybV9sYWJlbHMsICRtZW1fZm9ybV92YWx1ZXMsCgkJJG1l bV9mb3JtX2RlZmF1bHQsICRtZW1fZm9ybV90eXBlLCAkbWVtX2Zvcm1fdGhhbmtzX2Zvcm0s CgkJJG1lbV9nbHpfY3VzdG9tX2ZpZWxkc19wbHVnaW47CgoJZXh0cmFjdChtZW1fZm9ybV9s QXR0cyhhcnJheSgKCQknZm9ybScJCT0+ICcnLAoJCSd0aGFua3NfZm9ybScJPT4gJycsCgkJ J3RoYW5rcycJPT4gZ3JhZihtZW1fZm9ybV9nVHh0KCdzdWJtaXR0ZWRfdGhhbmtzJykpLAoJ CSdsYWJlbCcJCT0+ICcnLAoJCSd0eXBlJwkJPT4gJycsCgkJJ3JlZGlyZWN0Jwk9PiAnJywK CQkncmVkaXJlY3RfZm9ybScJPT4gJycsCgkJJ2NsYXNzJwkJPT4gJ21lbUZvcm0nLAoJCSdl bmN0eXBlJwk9PiAnJywKCQknZmlsZV9hY2NlcHQnCT0+ICcnLAoJCSdtYXhfZmlsZV9zaXpl Jwk9PiAkZmlsZV9tYXhfdXBsb2FkX3NpemUsCgkJJ2Zvcm1fZXhwaXJlZF9tc2cnID0+IG1l bV9mb3JtX2dUeHQoJ2Zvcm1fZXhwaXJlZCcpLAoJCSdzaG93X2Vycm9yJwk9PiAxLAoJCSdz aG93X2lucHV0Jwk9PiAxLAoJKSwgJGF0dHMpKTsKCglpZiAoZW1wdHkoJHR5cGUpIG9yIChl bXB0eSgkZm9ybSkgJiYgZW1wdHkoJHRoaW5nKSkpIHsKCQl0cmlnZ2VyX2Vycm9yKCdBcmd1 bWVudCBub3Qgc3BlY2lmaWVkIGZvciBtZW1fZm9ybSB0YWcnLCBFX1VTRVJfV0FSTklORyk7 CgoJCXJldHVybiAnJzsKCX0KCSRvdXQgPSAnJzsKCgkvLyBpbml0IGVycm9yIHN0cnVjdHVy ZQoJbWVtX2Zvcm1fZXJyb3IoKTsKCgkkbWVtX2Zvcm1fdHlwZSA9ICR0eXBlOwoKCSRtZW1f Zm9ybV9kZWZhdWx0ID0gYXJyYXkoKTsKCWNhbGxiYWNrX2V2ZW50KCdtZW1fZm9ybS5kZWZh dWx0cycpOwoKCXVuc2V0KCRhdHRzWydzaG93X2Vycm9yJ10sICRhdHRzWydzaG93X2lucHV0 J10pOwoJJG1lbV9mb3JtX2lkID0gbWQ1KHNlcmlhbGl6ZSgkYXR0cykucHJlZ19yZXBsYWNl KCcvW1x0XHNcclxuXS8nLCcnLCR0aGluZykpOwoJJG1lbV9mb3JtX3N1Ym1pdCA9IChwcygn bWVtX2Zvcm1faWQnKSA9PSAkbWVtX2Zvcm1faWQpOwoKCSRub25jZSAgID0gZG9TbGFzaChw cygnbWVtX2Zvcm1fbm9uY2UnKSk7CgkkcmVub25jZSA9IGZhbHNlOwoKCWlmICgkbWVtX2Zv cm1fc3VibWl0KSB7CgkJc2FmZV9kZWxldGUoJ3R4cF9kaXNjdXNzX25vbmNlJywgJ2lzc3Vl X3RpbWUgPCBkYXRlX3N1Yihub3coKSwgaW50ZXJ2YWwgMTAgbWludXRlKScpOwoJCWlmICgk cnMgPSBzYWZlX3JvdygndXNlZCcsICd0eHBfZGlzY3Vzc19ub25jZScsICJub25jZSA9ICck bm9uY2UnIikpCgkJewoJCQlpZiAoJHJzWyd1c2VkJ10pCgkJCXsKCQkJCXVuc2V0KCRtZW1f Zm9ybV9lcnJvcik7CgkJCQltZW1fZm9ybV9lcnJvcihtZW1fZm9ybV9nVHh0KCdmb3JtX3Vz ZWQnKSk7CgkJCQkkcmVub25jZSA9IHRydWU7CgoJCQkJJF9QT1NUWydtZW1fZm9ybV9zdWJt aXQnXSA9IFRSVUU7CgkJCQkkX1BPU1RbJ21lbV9mb3JtX2lkJ10gPSAkbWVtX2Zvcm1faWQ7 CgkJCQkkX1BPU1RbJ21lbV9mb3JtX25vbmNlJ10gPSAkbm9uY2U7CgkJCX0KCQl9CgkJZWxz ZQoJCXsKCQkJbWVtX2Zvcm1fZXJyb3IoJGZvcm1fZXhwaXJlZF9tc2cpOwoJCQkkcmVub25j ZSA9IHRydWU7CgkJfQoJfQoKCWlmICgkbWVtX2Zvcm1fc3VibWl0IGFuZCAkbm9uY2UgYW5k ICEkcmVub25jZSkKCXsKCQkkbWVtX2Zvcm1fbm9uY2UgPSAkbm9uY2U7Cgl9CgoJZWxzZWlm ICghJHNob3dfZXJyb3Igb3IgJHNob3dfaW5wdXQpCgl7CgkJJG1lbV9mb3JtX25vbmNlID0g bWQ1KHVuaXFpZChyYW5kKCksIHRydWUpKTsKCQlzYWZlX2luc2VydCgndHhwX2Rpc2N1c3Nf bm9uY2UnLCAiaXNzdWVfdGltZSA9IG5vdygpLCBub25jZSA9ICckbWVtX2Zvcm1fbm9uY2Un Iik7Cgl9CgoJJGZvcm0gPSAoJGZvcm0pID8gZmV0Y2hfZm9ybSgkZm9ybSkgOiAkdGhpbmc7 CgkkZm9ybSA9IHBhcnNlKCRmb3JtKTsKCglpZiAoJG1lbV9mb3JtX3N1Ym1pdCAmJiBlbXB0 eSgkbWVtX2Zvcm1fZXJyb3IpKQoJewoJCS8vIGxldCBwbHVnaW5zIHZhbGlkYXRlIGFmdGVy IGluZGl2aWR1YWwgZmllbGRzIGFyZSB2YWxpZGF0ZWQKCQljYWxsYmFja19ldmVudCgnbWVt X2Zvcm0udmFsaWRhdGUnKTsKCX0KCglpZiAoISRtZW1fZm9ybV9zdWJtaXQpIHsKCSAgIyBk b24ndCBzaG93IGVycm9ycyBvciBzZW5kIG1haWwKCX0KCWVsc2VpZiAobWVtX2Zvcm1fZXJy b3IoKSkKCXsKCQlpZiAoJHNob3dfZXJyb3Igb3IgISRzaG93X2lucHV0KQoJCXsKCQkJJG91 dCAuPSBtZW1fZm9ybV9kaXNwbGF5X2Vycm9yKCk7CgoJCQlpZiAoISRzaG93X2lucHV0KSBy ZXR1cm4gJG91dDsKCQl9Cgl9CgllbHNlaWYgKCRzaG93X2lucHV0IGFuZCBpc19hcnJheSgk bWVtX2Zvcm0pKQoJewoJCWlmICgkbWVtX2dsel9jdXN0b21fZmllbGRzX3BsdWdpbikgewoJ CQkvLyBwcmVwIHRoZSB2YWx1ZXMKCQkJZ2x6X2N1c3RvbV9maWVsZHNfYmVmb3JlX3NhdmUo KTsKCQl9CgoJCWNhbGxiYWNrX2V2ZW50KCdtZW1fZm9ybS5zcGFtJyk7CgoJCS8vLyBsb2Fk IGFuZCBjaGVjayBzcGFtIHBsdWdpbnMvCgkJJGV2YWx1YXRvciA9JiBnZXRfbWVtX2Zvcm1f ZXZhbHVhdG9yKCk7CgkJJGlzX3NwYW0gPSAkZXZhbHVhdG9yLT5pc19zcGFtKCk7CgoJCWlm ICgkaXNfc3BhbSkgewoJCQlyZXR1cm4gbWVtX2Zvcm1fZ1R4dCgnc3BhbScpOwoJCX0KCgkJ JG1lbV9mb3JtX3RoYW5rc19mb3JtID0gKCR0aGFua3NfZm9ybSA/IGZldGNoX2Zvcm0oJHRo YW5rc19mb3JtKSA6ICR0aGFua3MpOwoKCQlzYWZlX3VwZGF0ZSgndHhwX2Rpc2N1c3Nfbm9u Y2UnLCAidXNlZCA9ICcxJywgaXNzdWVfdGltZSA9IG5vdygpIiwgIm5vbmNlID0gJyRub25j ZSciKTsKCgkJJHJlc3VsdCA9IGNhbGxiYWNrX2V2ZW50KCdtZW1fZm9ybS5zdWJtaXQnKTsK CgkJaWYgKG1lbV9mb3JtX2Vycm9yKCkpIHsKCQkJJG91dCAuPSBtZW1fZm9ybV9kaXNwbGF5 X2Vycm9yKCk7CgkJCSRyZWRpcmVjdCA9IGZhbHNlOwoJCX0KCgkJJHRoYW5rc19mb3JtID0g JG1lbV9mb3JtX3RoYW5rc19mb3JtOwoJCXVuc2V0KCRtZW1fZm9ybV90aGFua3NfZm9ybSk7 CgoJCWlmICghZW1wdHkoJHJlc3VsdCkpCgkJCXJldHVybiAkcmVzdWx0OwoKCQlpZiAobWVt X2Zvcm1fZXJyb3IoKSBhbmQgJHNob3dfaW5wdXQpCgkJewoJCQkvLyBuby1vcCwgcmVzaG93 IGZvcm0gd2l0aCBlcnJvcnMKCQl9CgkJZWxzZSBpZiAoJHJlZGlyZWN0KQoJCXsKCQkJJF9Q T1NUID0gYXJyYXkoKTsKCgkJCXdoaWxlIChAb2JfZW5kX2NsZWFuKCkpOwoJCQkkdXJpID0g aHUubHRyaW0oJHJlZGlyZWN0LCcvJyk7CgkJCWlmIChlbXB0eSgkX1NFUlZFUlsnRkNHSV9S T0xFJ10pIGFuZCBlbXB0eSgkX0VOVlsnRkNHSV9ST0xFJ10pKQoJCQl7CgkJCQl0eHBfc3Rh dHVzX2hlYWRlcignMzAzIFNlZSBPdGhlcicpOwoJCQkJaGVhZGVyKCdMb2NhdGlvbjogJy4k dXJpKTsKCQkJCWhlYWRlcignQ29ubmVjdGlvbjogY2xvc2UnKTsKCQkJCWhlYWRlcignQ29u dGVudC1MZW5ndGg6IDAnKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSR1cmkgPSBodG1sc3Bl Y2lhbGNoYXJzKCR1cmkpOwoJCQkJJHJlZnJlc2ggPSBtZW1fZm9ybV9nVHh0KCdyZWZyZXNo Jyk7CgoJCQkJaWYgKCFlbXB0eSgkcmVkaXJlY3RfZm9ybSkpCgkJCQl7CgkJCQkJJHJlZGly ZWN0X2Zvcm0gPSBmZXRjaF9mb3JtKCRyZWRpcmVjdF9mb3JtKTsKCgkJCQkJZWNobyBzdHJf cmVwbGFjZSgne3VyaX0nLCAkdXJpLCAkcmVkaXJlY3RfZm9ybSk7CgkJCQl9CgoJCQkJaWYg KGVtcHR5KCRyZWRpcmVjdF9mb3JtKSkKCQkJCXsKCQkJCQllY2hvIDw8PEVORAo8IURPQ1RZ UEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VO IiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFs LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB4bWw6 bGFuZz0iZW4iIGxhbmc9ImVuIj4KPGhlYWQ+Cgk8dGl0bGU+JHNpdGVuYW1lPC90aXRsZT4K CTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBj aGFyc2V0PXV0Zi04IiAvPgoJPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0i MDt1cmw9JHVyaSIgLz4KPC9oZWFkPgo8Ym9keT4KPGEgaHJlZj0iJHVyaSI+JHJlZnJlc2g8 L2E+CjwvYm9keT4KPC9odG1sPgpFTkQ7CgkJCQl9CgkJCX0KCQkJZXhpdDsKCQl9CgkJZWxz ZSB7CgkJCXJldHVybiAnPGRpdiBjbGFzcz0ibWVtVGhhbmtzIiBpZD0ibWVtJy4kbWVtX2Zv cm1faWQuJyI+JyAuCgkJCQkkdGhhbmtzX2Zvcm0gLiAnPC9kaXY+JzsKCQl9Cgl9CgoJaWYg KCRzaG93X2lucHV0KQoJewoJCSRmaWxlX2FjY2VwdCA9ICghZW1wdHkoJGZpbGVfYWNjZXB0 KSA/ICcgYWNjZXB0PSInLiRmaWxlX2FjY2VwdC4nIicgOiAnJyk7CgoJCSRjbGFzcyA9IGh0 bWxzcGVjaWFsY2hhcnMoJGNsYXNzKTsKCgkJJGVuY3R5cGUgPSAhZW1wdHkoJGVuY3R5cGUp ID8gJyBlbmN0eXBlPSInLiRlbmN0eXBlLiciJyA6ICcnOwoKCQlyZXR1cm4gJzxmb3JtIG1l dGhvZD0icG9zdCInLigoISRzaG93X2Vycm9yIGFuZCAkbWVtX2Zvcm1fZXJyb3IpID8gJycg OiAnIGlkPSJtZW0nLiRtZW1fZm9ybV9pZC4nIicpLicgY2xhc3M9IicuJGNsYXNzLiciIGFj dGlvbj0iJy5odG1sc3BlY2lhbGNoYXJzKHNlcnZlclNldCgnUkVRVUVTVF9VUkknKSkuJyNt ZW0nLiRtZW1fZm9ybV9pZC4nIicuJGZpbGVfYWNjZXB0LiRlbmN0eXBlLic+Jy4KCQkJKCAk bGFiZWwgPyBuLic8ZmllbGRzZXQ+JyA6IG4uJzxkaXY+JyApLgoJCQkoICRsYWJlbCA/IG4u JzxsZWdlbmQ+Jy5odG1sc3BlY2lhbGNoYXJzKCRsYWJlbCkuJzwvbGVnZW5kPicgOiAnJyAp LgoJCQkkb3V0LgoJCQluLic8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJtZW1fZm9ybV9u b25jZSIgdmFsdWU9IicuJG1lbV9mb3JtX25vbmNlLiciIC8+Jy4KCQkJbi4nPGlucHV0IHR5 cGU9ImhpZGRlbiIgbmFtZT0ibWVtX2Zvcm1faWQiIHZhbHVlPSInLiRtZW1fZm9ybV9pZC4n IiAvPicuCgkJCSghZW1wdHkoJG1heF9maWxlX3NpemUpID8gbi4nPGlucHV0IHR5cGU9Imhp ZGRlbiIgbmFtZT0iTUFYX0ZJTEVfU0laRSIgdmFsdWU9IicuJG1heF9maWxlX3NpemUuJyIg Lz4nIDogJycgKS4KCQkJY2FsbGJhY2tfZXZlbnQoJ21lbV9mb3JtLmRpc3BsYXknLCcnLDEp LgoJCQkkZm9ybS4KCQkJY2FsbGJhY2tfZXZlbnQoJ21lbV9mb3JtLmRpc3BsYXknKS4KCQkJ KCAkbGFiZWwgPyAobi4nPC9maWVsZHNldD4nKSA6IChuLic8L2Rpdj4nKSApLgoJCQluLic8 L2Zvcm0+JzsKCX0KCglyZXR1cm4gJyc7Cn0KCmZ1bmN0aW9uIG1lbV9mb3JtX3RleHQoJGF0 dHMpCnsKCWdsb2JhbCAkbWVtX2Zvcm1fZXJyb3IsICRtZW1fZm9ybV9zdWJtaXQsICRtZW1f Zm9ybV9kZWZhdWx0OwoKCWV4dHJhY3QobWVtX2Zvcm1fbEF0dHMoYXJyYXkoCgkJJ2JyZWFr JwkJPT4gYnIsCgkJJ2RlZmF1bHQnCT0+ICcnLAoJCSdpc0Vycm9yJwk9PiAnJywKCQknbGFi ZWwnCQk9PiBtZW1fZm9ybV9nVHh0KCd0ZXh0JyksCgkJJ21heCcJCT0+IDEwMCwKCQknbWlu JwkJPT4gMCwKCQknbmFtZScJCT0+ICcnLAoJCSdjbGFzcycJCT0+ICdtZW1UZXh0JywKCQkn cmVxdWlyZWQnCT0+IDEsCgkJJ3NpemUnCQk9PiAnJywKCQkncGFzc3dvcmQnCT0+IDAsCgkJ J2Zvcm1hdCcJPT4gJycsCgkJJ2V4YW1wbGUnCT0+ICcnLAoJCSdlc2NhcGVfdmFsdWUnCT0+ IDEKCSksICRhdHRzKSk7CgoJJG1pbiA9IGludHZhbCgkbWluKTsKCSRtYXggPSBpbnR2YWwo JG1heCk7Cgkkc2l6ZSA9IGludHZhbCgkc2l6ZSk7CgoJaWYgKGVtcHR5KCRuYW1lKSkgJG5h bWUgPSBtZW1fZm9ybV9sYWJlbDJuYW1lKCRsYWJlbCk7CgoJaWYgKCRtZW1fZm9ybV9zdWJt aXQpCgl7CgkJJHZhbHVlID0gdHJpbShwcygkbmFtZSkpOwoJCSR1dGY4bGVuID0gcHJlZ19t YXRjaF9hbGwoIi8uL3N1IiwgJHZhbHVlLCAkdXRmOGFyKTsKCQkkaGxhYmVsID0gZW1wdHko JGxhYmVsKSA/IGh0bWxzcGVjaWFsY2hhcnMoJG5hbWUpIDogaHRtbHNwZWNpYWxjaGFycygk bGFiZWwpOwoKCgkJaWYgKHN0cmxlbigkdmFsdWUpID09IDAgJiYgJHJlcXVpcmVkKQoJCXsK CQkJJG1lbV9mb3JtX2Vycm9yW10gPSBtZW1fZm9ybV9nVHh0KCdmaWVsZF9taXNzaW5nJywg YXJyYXkoJ3tsYWJlbH0nPT4kaGxhYmVsKSk7CgkJCSRpc0Vycm9yID0gdHJ1ZTsKCQl9CgkJ ZWxzZWlmICghZW1wdHkoJGZvcm1hdCkgJiYgIXByZWdfbWF0Y2goJGZvcm1hdCwgJHZhbHVl KSkKCQl7CgkJCS8vZWNobyAiZm9ybWF0PSRmb3JtYXQ8YnIgLz52YWx1ZT0kdmFsdWU8YnIg Lz4iOwoJCQkkbWVtX2Zvcm1fZXJyb3JbXSA9IG1lbV9mb3JtX2dUeHQoJ2ludmFsaWRfZm9y bWF0JywgYXJyYXkoJ3tsYWJlbH0nPT4kaGxhYmVsLCAne2V4YW1wbGV9Jz0+IGh0bWxzcGVj aWFsY2hhcnMoJGV4YW1wbGUpKSk7CgkJCSRpc0Vycm9yID0gdHJ1ZTsKCQl9CgkJZWxzZWlm IChzdHJsZW4oJHZhbHVlKSkKCQl7CgkJCWlmICghJHV0ZjhsZW4pCgkJCXsKCQkJCSRtZW1f Zm9ybV9lcnJvcltdID0gbWVtX2Zvcm1fZ1R4dCgnaW52YWxpZF91dGY4JywgYXJyYXkoJ3ts YWJlbH0nPT4kaGxhYmVsKSk7CgkJCQkkaXNFcnJvciA9IHRydWU7CgkJCX0KCgkJCWVsc2Vp ZiAoJG1pbiBhbmQgJHV0ZjhsZW4gPCAkbWluKQoJCQl7CgkJCQkkbWVtX2Zvcm1fZXJyb3Jb XSA9IG1lbV9mb3JtX2dUeHQoJ21pbl93YXJuaW5nJywgYXJyYXkoJ3tsYWJlbH0nPT4kaGxh YmVsLCAne21pbn0nPT4kbWluKSk7CgkJCQkkaXNFcnJvciA9IHRydWU7CgkJCX0KCgkJCWVs c2VpZiAoJG1heCBhbmQgJHV0ZjhsZW4gPiAkbWF4KQoJCQl7CgkJCQkkbWVtX2Zvcm1fZXJy b3JbXSA9IG1lbV9mb3JtX2dUeHQoJ21heF93YXJuaW5nJywgYXJyYXkoJ3tsYWJlbH0nPT4k aGxhYmVsLCAne21heH0nPT4kbWF4KSk7CgkJCQkkaXNFcnJvciA9IHRydWU7CgkJCX0KCgkJ CWVsc2UKCQkJewoJCQkJJGlzRXJyb3IgPSBmYWxzZSA9PT0gbWVtX2Zvcm1fc3RvcmUoJG5h bWUsICRsYWJlbCwgJHZhbHVlKTsKCQkJfQoJCX0KCX0KCgllbHNlCgl7CgkJaWYgKGlzc2V0 KCRtZW1fZm9ybV9kZWZhdWx0WyRuYW1lXSkpCgkJCSR2YWx1ZSA9ICRtZW1fZm9ybV9kZWZh dWx0WyRuYW1lXTsKCQllbHNlCgkJCSR2YWx1ZSA9ICRkZWZhdWx0OwoJfQoKCSRzaXplID0g KCRzaXplKSA/ICcgc2l6ZT0iJy4kc2l6ZS4nIicgOiAnJzsKCSRtYXhsZW5ndGggPSAoJG1h eCkgPyAnIG1heGxlbmd0aD0iJy4kbWF4LiciJyA6ICcnOwoKCSRpc0Vycm9yID0gJGlzRXJy b3IgPyAiZXJyb3JFbGVtZW50IiA6ICcnOwoKCSRtZW1SZXF1aXJlZCA9ICRyZXF1aXJlZCA/ ICdtZW1SZXF1aXJlZCcgOiAnJzsKCSRjbGFzcyA9IGh0bWxzcGVjaWFsY2hhcnMoJGNsYXNz KTsKCglpZiAoJGVzY2FwZV92YWx1ZSkKCXsKCQkkdmFsdWUgPSBodG1sc3BlY2lhbGNoYXJz KCR2YWx1ZSk7Cgl9CgogICAgcmV0dXJuICc8bGFiZWwgZm9yPSInLiRuYW1lLiciIGNsYXNz PSInLiRjbGFzcy4nICcuJG1lbVJlcXVpcmVkLiRpc0Vycm9yLicgJy4kbmFtZS4nIj4nLmh0 bWxzcGVjaWFsY2hhcnMoJGxhYmVsKS4nPC9sYWJlbD4nLiRicmVhay4KCQknPGlucHV0IHR5 cGU9IicuKCRwYXNzd29yZCA/ICdwYXNzd29yZCcgOiAndGV4dCcpLiciIGlkPSInLiRuYW1l LiciIGNsYXNzPSInLiRjbGFzcy4nICcuJG1lbVJlcXVpcmVkLiRpc0Vycm9yLiciIG5hbWU9 IicuJG5hbWUuJyIgdmFsdWU9IicuJHZhbHVlLiciJy4kc2l6ZS4kbWF4bGVuZ3RoLicgLz4n Owp9CgoKZnVuY3Rpb24gbWVtX2Zvcm1fZmlsZSgkYXR0cykKewoJZ2xvYmFsICRtZW1fZm9y bV9zdWJtaXQsICRtZW1fZm9ybV9lcnJvciwgJG1lbV9mb3JtX2RlZmF1bHQsICRmaWxlX21h eF91cGxvYWRfc2l6ZSwgJHRlbXBkaXI7CgoJZXh0cmFjdChtZW1fZm9ybV9sQXR0cyhhcnJh eSgKCQknYnJlYWsnCQk9PiBiciwKCQknaXNFcnJvcicJPT4gJycsCgkJJ2xhYmVsJwkJPT4g bWVtX2Zvcm1fZ1R4dCgnZmlsZScpLAoJCSduYW1lJwkJPT4gJycsCgkJJ2NsYXNzJwkJPT4g J21lbUZpbGUnLAoJCSdzaXplJwkJPT4gJycsCgkJJ2FjY2VwdCcJPT4gJycsCgkJJ25vX3Jl cGxhY2UnID0+IDEsCgkJJ21heF9maWxlX3NpemUnCT0+ICRmaWxlX21heF91cGxvYWRfc2l6 ZSwKCQkncmVxdWlyZWQnCT0+IDEsCgkJJ2RlZmF1bHQnCT0+IEZBTFNFLAoJKSwgJGF0dHMp KTsKCgkkZm5hbWUgPSBwcygnZmlsZV8nLiRuYW1lKTsKCSRmcmVhbG5hbWUgPSBwcygnZmls ZV9pbmZvXycuJG5hbWUuJ19uYW1lJyk7CgkkZnR5cGUgPSBwcygnZmlsZV9pbmZvXycuJG5h bWUuJ190eXBlJyk7CgoJaWYgKGVtcHR5KCRuYW1lKSkgJG5hbWUgPSBtZW1fZm9ybV9sYWJl bDJuYW1lKCRsYWJlbCk7CgoJJG91dCA9ICcnOwoKCWlmICgkbWVtX2Zvcm1fc3VibWl0KQoJ ewoJCWlmICghZW1wdHkoJGZuYW1lKSkKCQl7CgkJCS8vIHNlZSBpZiB1c2VyIHVwbG9hZGVk IGEgZGlmZmVyZW50IGZpbGUgdG8gcmVwbGFjZSBhbHJlYWR5IHVwbG9hZGVkCgkJCWlmIChp c3NldCgkX0ZJTEVTWyRuYW1lXSkgJiYgIWVtcHR5KCRfRklMRVNbJG5hbWVdWyd0bXBfbmFt ZSddKSkKCQkJewoJCQkJLy8gdW5saW5rIGxhc3QgdGVtcCBmaWxlCgkJCQlpZiAoZmlsZV9l eGlzdHMoJGZuYW1lKSAmJiBzdWJzdHJfY29tcGFyZSgkZm5hbWUsICR0ZW1wZGlyLCAwLCBz dHJsZW4oJHRlbXBkaXIpLCAxKT09MCkKCQkJCQl1bmxpbmsoJGZuYW1lKTsKCgkJCQkkZm5h bWUgPSAnJzsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCS8vIHBhc3MgdGhyb3VnaCBhbHJlYWR5 IHVwbG9hZGVkIGZpbGVuYW1lCgkJCQltZW1fZm9ybV9zdG9yZSgkbmFtZSwgJGxhYmVsLCBh cnJheSgndG1wX25hbWUnPT4kZm5hbWUsICduYW1lJyA9PiAkZnJlYWxuYW1lLCAndHlwZScg PT4gJGZ0eXBlKSk7CgkJCQkkb3V0IC49ICI8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdm aWxlXyIuJG5hbWUuIicgdmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFycygkZm5hbWUpLiInIC8+ IgoJCQkJCQkuICI8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdmaWxlX2luZm9fIi4kbmFt ZS4iX25hbWUnIHZhbHVlPSciLmh0bWxzcGVjaWFsY2hhcnMoJGZyZWFsbmFtZSkuIicgLz4i CgkJCQkJCS4gIjxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2ZpbGVfaW5mb18iLiRuYW1l LiJfdHlwZScgdmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFycygkZnR5cGUpLiInIC8+IjsKCQkJ fQoJCX0KCgkJaWYgKGVtcHR5KCRmbmFtZSkpCgkJewoJCQkkaGxhYmVsID0gZW1wdHkoJGxh YmVsKSA/IGh0bWxzcGVjaWFsY2hhcnMoJG5hbWUpIDogaHRtbHNwZWNpYWxjaGFycygkbGFi ZWwpOwoKCQkJJGZuYW1lID0gJF9GSUxFU1skbmFtZV1bJ3RtcF9uYW1lJ107CgkJCSRmcmVh bG5hbWUgPSAkX0ZJTEVTWyRuYW1lXVsnbmFtZSddOwoJCQkkZnR5cGUgPSAkX0ZJTEVTWyRu YW1lXVsndHlwZSddOwoJCQkkZXJyID0gMDsKCgkJCXN3aXRjaCAoJF9GSUxFU1skbmFtZV1b J2Vycm9yJ10pIHsKCQkJCWNhc2UgVVBMT0FEX0VSUl9PSzoKCQkJCQlpZiAoaXNfdXBsb2Fk ZWRfZmlsZSgkZm5hbWUpIGFuZCAkbWF4X2ZpbGVfc2l6ZSA+PSBmaWxlc2l6ZSgkZm5hbWUp KQoJCQkJCQltZW1fZm9ybV9zdG9yZSgkbmFtZSwgJGxhYmVsLCAkX0ZJTEVTWyRuYW1lXSk7 CgkJCQkJZWxzZWlmICghaXNfdXBsb2FkZWRfZmlsZSgkZm5hbWUpKSB7CgkJCQkJCWlmICgk cmVxdWlyZWQpIHsKCQkJCQkJCSRtZW1fZm9ybV9lcnJvcltdID0gbWVtX2Zvcm1fZ1R4dCgn ZXJyb3JfZmlsZV9mYWlsZWQnLCBhcnJheSgne2xhYmVsfSc9PiRobGFiZWwpKTsKCQkJCQkJ CSRlcnIgPSAxOwoJCQkJCQl9CgkJCQkJfQoJCQkJCWVsc2UgewoJCQkJCQkkbWVtX2Zvcm1f ZXJyb3JbXSA9IG1lbV9mb3JtX2dUeHQoJ2Vycm9yX2ZpbGVfc2l6ZScsIGFycmF5KCd7bGFi ZWx9Jz0+JGhsYWJlbCkpOwoJCQkJCQkkZXJyID0gMTsKCQkJCQl9CgkJCQkJYnJlYWs7CgoJ CQkJY2FzZSBVUExPQURfRVJSX05PX0ZJTEU6CgkJCQkJaWYgKCRyZXF1aXJlZCkgewoJCQkJ CQkkbWVtX2Zvcm1fZXJyb3JbXSA9IG1lbV9mb3JtX2dUeHQoJ2ZpZWxkX21pc3NpbmcnLCBh cnJheSgne2xhYmVsfSc9PiRobGFiZWwpKTsKCQkJCQkJJGVyciA9IDE7CgkJCQkJfQoJCQkJ CWJyZWFrOwoKCQkJCWNhc2UgVVBMT0FEX0VSUl9FWFRFTlNJT046CgkJCQkJJG1lbV9mb3Jt X2Vycm9yW10gPSBtZW1fZm9ybV9nVHh0KCdlcnJvcl9maWxlX2V4dGVuc2lvbicsIGFycmF5 KCd7bGFiZWx9Jz0+JGhsYWJlbCkpOwoJCQkJCSRlcnIgPSAxOwoJCQkJCWJyZWFrOwoKCQkJ CWNhc2UgVVBMT0FEX0VSUl9JTklfU0laRToKCQkJCWNhc2UgVVBMT0FEX0VSUl9GT1JNX1NJ WkU6CgkJCQkJJG1lbV9mb3JtX2Vycm9yW10gPSBtZW1fZm9ybV9nVHh0KCdlcnJvcl9maWxl X3NpemUnLCBhcnJheSgne2xhYmVsfSc9PiRobGFiZWwpKTsKCQkJCQkkZXJyID0gMTsKCQkJ CQlicmVhazsKCgkJCQlkZWZhdWx0OgoJCQkJCSRtZW1fZm9ybV9lcnJvcltdID0gbWVtX2Zv cm1fZ1R4dCgnZXJyb3JfZmlsZV9mYWlsZWQnLCBhcnJheSgne2xhYmVsfSc9PiRobGFiZWwp KTsKCQkJCQkkZXJyID0gMTsKCQkJCQlicmVhazsKCQkJfQoKCQkJaWYgKCEkZXJyKQoJCQl7 CgkJCQkvLyBzdG9yZSBhcyBhIHR4cCB0bXAgZmlsZSB0byBiZSB1c2VkIGxhdGVyCgkJCQkk Zm5hbWUgPSBnZXRfdXBsb2FkZWRfZmlsZSgkZm5hbWUpOwoJCQkJJGVyciA9IGZhbHNlID09 PSBtZW1fZm9ybV9zdG9yZSgkbmFtZSwgJGxhYmVsLCBhcnJheSgndG1wX25hbWUnPT4kZm5h bWUsICduYW1lJyA9PiAkZnJlYWxuYW1lLCAndHlwZScgPT4gJGZ0eXBlKSk7CgkJCQlpZiAo JGVycikKCQkJCXsKCQkJCQkvLyBjbGVhbiB1cCBmaWxlCgkJCQkJQHVubGluaygkZm5hbWUp OwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSRvdXQgLj0gIjxpbnB1dCB0eXBlPSdoaWRk ZW4nIG5hbWU9J2ZpbGVfIi4kbmFtZS4iJyB2YWx1ZT0nIi5odG1sc3BlY2lhbGNoYXJzKCRm bmFtZSkuIicgLz4iCgkJCQkJCQkuICI8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdmaWxl X2luZm9fIi4kbmFtZS4iX25hbWUnIHZhbHVlPSciLmh0bWxzcGVjaWFsY2hhcnMoJF9GSUxF U1skbmFtZV1bJ25hbWUnXSkuIicgLz4iCgkJCQkJCQkuICI8aW5wdXQgdHlwZT0naGlkZGVu JyBuYW1lPSdmaWxlX2luZm9fIi4kbmFtZS4iX3R5cGUnIHZhbHVlPSciLmh0bWxzcGVjaWFs Y2hhcnMoJF9GSUxFU1skbmFtZV1bJ3R5cGUnXSkuIicgLz4iOwoJCQkJfQoJCQl9CgoJCQkk aXNFcnJvciA9ICRlcnIgPyAnZXJyb3JFbGVtZW50JyA6ICcnOwoJCX0KCX0KCWVsc2UKCXsK CQlpZiAoaXNzZXQoJG1lbV9mb3JtX2RlZmF1bHRbJG5hbWVdKSkKCQkJJHZhbHVlID0gJG1l bV9mb3JtX2RlZmF1bHRbJG5hbWVdOwoJCWVsc2UgaWYgKGlzX2FycmF5KCRkZWZhdWx0KSkK CQkJJHZhbHVlID0gJGRlZmF1bHQ7CgoJCWlmIChpc19hcnJheShAJHZhbHVlKSkKCQl7CgkJ CSRmbmFtZSA9IEAkdmFsdWVbJ3RtcF9uYW1lJ107CgkJCSRmcmVhbG5hbWUgPSBAJHZhbHVl WyduYW1lJ107CgkJCSRmdHlwZSA9IEAkdmFsdWVbJ3R5cGUnXTsKCQkJJG91dCAuPSAiPGlu cHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nZmlsZV8iLiRuYW1lLiInIHZhbHVlPSciLmh0bWxz cGVjaWFsY2hhcnMoJGZuYW1lKS4iJyAvPiIKCQkJCS4gIjxpbnB1dCB0eXBlPSdoaWRkZW4n IG5hbWU9J2ZpbGVfaW5mb18iLiRuYW1lLiJfbmFtZScgdmFsdWU9JyIuaHRtbHNwZWNpYWxj aGFycygkZnJlYWxuYW1lKS4iJyAvPiIKCQkJCS4gIjxpbnB1dCB0eXBlPSdoaWRkZW4nIG5h bWU9J2ZpbGVfaW5mb18iLiRuYW1lLiJfdHlwZScgdmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFy cygkZnR5cGUpLiInIC8+IjsKCQl9Cgl9CgoJJG1lbVJlcXVpcmVkID0gJHJlcXVpcmVkID8g J21lbVJlcXVpcmVkJyA6ICcnOwoJJGNsYXNzID0gaHRtbHNwZWNpYWxjaGFycygkY2xhc3Mp OwoKCSRzaXplID0gKCRzaXplKSA/ICcgc2l6ZT0iJy4kc2l6ZS4nIicgOiAnJzsKCSRhY2Nl cHQgPSAoIWVtcHR5KCRhY2NlcHQpID8gJyBhY2NlcHQ9IicuJGFjY2VwdC4nIicgOiAnJyk7 CgoKCSRmaWVsZF9vdXQgPSAnPGxhYmVsIGZvcj0iJy4kbmFtZS4nIiBjbGFzcz0iJy4kY2xh c3MuJyAnLiRtZW1SZXF1aXJlZC4kaXNFcnJvci4nICcuJG5hbWUuJyI+Jy5odG1sc3BlY2lh bGNoYXJzKCRsYWJlbCkuJzwvbGFiZWw+Jy4kYnJlYWs7CgoJaWYgKCFlbXB0eSgkZnJlYWxu YW1lKSAmJiAkbm9fcmVwbGFjZSkKCXsKCQkkZmllbGRfb3V0IC49ICc8ZGl2IGlkPSInLiRu YW1lLiciPicuaHRtbHNwZWNpYWxjaGFycygkZnJlYWxuYW1lKSAuICcgPHNwYW4gaWQ9Iicu JG5hbWUuJ19mdHlwZSI+KCcuIGh0bWxzcGVjaWFsY2hhcnMoJGZ0eXBlKS4nKTwvc3Bhbj48 L2Rpdj4nOwoJfQoJZWxzZQoJewoJCSRmaWVsZF9vdXQgLj0gJzxpbnB1dCB0eXBlPSJmaWxl IiBpZD0iJy4kbmFtZS4nIiBjbGFzcz0iJy4kY2xhc3MuJyAnLiRtZW1SZXF1aXJlZC4kaXNF cnJvci4nIiBuYW1lPSInLiRuYW1lLiciJyAuJHNpemUuJyAvPic7Cgl9CgogIHJldHVybiAk b3V0LiRmaWVsZF9vdXQ7Cn0KCmZ1bmN0aW9uIG1lbV9mb3JtX3RleHRhcmVhKCRhdHRzLCAk dGhpbmc9JycpCnsKCWdsb2JhbCAkbWVtX2Zvcm1fZXJyb3IsICRtZW1fZm9ybV9zdWJtaXQs ICRtZW1fZm9ybV9kZWZhdWx0OwoKCWV4dHJhY3QobWVtX2Zvcm1fbEF0dHMoYXJyYXkoCgkJ J2JyZWFrJwkJPT4gYnIsCgkJJ2NvbHMnCQk9PiA1OCwKCQknZGVmYXVsdCcJPT4gJycsCgkJ J2lzRXJyb3InCT0+ICcnLAoJCSdsYWJlbCcJCT0+IG1lbV9mb3JtX2dUeHQoJ3RleHRhcmVh JyksCgkJJ21heCcJCT0+IDEwMDAwLAoJCSdtaW4nCQk9PiAwLAoJCSduYW1lJwkJPT4gJycs CgkJJ2NsYXNzJwkJPT4gJ21lbVRleHRhcmVhJywKCQkncmVxdWlyZWQnCT0+IDEsCgkJJ3Jv d3MnCQk9PiA4LAoJCSdlc2NhcGVfdmFsdWUnCT0+IDEKCSksICRhdHRzKSk7CgoJJG1pbiA9 IGludHZhbCgkbWluKTsKCSRtYXggPSBpbnR2YWwoJG1heCk7CgkkY29scyA9IGludHZhbCgk Y29scyk7Cgkkcm93cyA9IGludHZhbCgkcm93cyk7CgoJaWYgKGVtcHR5KCRuYW1lKSkgJG5h bWUgPSBtZW1fZm9ybV9sYWJlbDJuYW1lKCRsYWJlbCk7CgoJaWYgKCRtZW1fZm9ybV9zdWJt aXQpCgl7CgkJJHZhbHVlID0gcHJlZ19yZXBsYWNlKCcvXlxzKltcclxuXS8nLCAnJywgcnRy aW0ocHMoJG5hbWUpKSk7CgkJJHV0ZjhsZW4gPSBwcmVnX21hdGNoX2FsbCgiLy4vc3UiLCBs dHJpbSgkdmFsdWUpLCAkdXRmOGFyKTsKCQkkaGxhYmVsID0gaHRtbHNwZWNpYWxjaGFycygk bGFiZWwpOwoKCQlpZiAoc3RybGVuKGx0cmltKCR2YWx1ZSkpKQoJCXsKCQkJaWYgKCEkdXRm OGxlbikKCQkJewoJCQkJJG1lbV9mb3JtX2Vycm9yW10gPSBtZW1fZm9ybV9nVHh0KCdpbnZh bGlkX3V0ZjgnLCBhcnJheSgne2xhYmVsfSc9PiRobGFiZWwpKTsKCQkJCSRpc0Vycm9yID0g dHJ1ZTsKCQkJfQoKCQkJZWxzZWlmICgkbWluIGFuZCAkdXRmOGxlbiA8ICRtaW4pCgkJCXsK CQkJCSRtZW1fZm9ybV9lcnJvcltdID0gbWVtX2Zvcm1fZ1R4dCgnbWluX3dhcm5pbmcnLCBh cnJheSgne2xhYmVsfSc9PiRobGFiZWwsICd7bWlufSc9PiRtaW4pKTsKCQkJCSRpc0Vycm9y ID0gdHJ1ZTsKCQkJfQoKCQkJZWxzZWlmICgkbWF4IGFuZCAkdXRmOGxlbiA+ICRtYXgpCgkJ CXsKCQkJCSRtZW1fZm9ybV9lcnJvcltdID0gbWVtX2Zvcm1fZ1R4dCgnbWF4X3dhcm5pbmcn LCBhcnJheSgne2xhYmVsfSc9PiRobGFiZWwsICd7bWF4fSc9PiRtYXgpKTsKCQkJCSRpc0Vy cm9yID0gdHJ1ZTsKCQkJfQoKCQkJZWxzZQoJCQl7CgkJCQkkaXNFcnJvciA9IGZhbHNlID09 PSBtZW1fZm9ybV9zdG9yZSgkbmFtZSwgJGxhYmVsLCAkdmFsdWUpOwoJCQl9CgkJfQoKCQll bHNlaWYgKCRyZXF1aXJlZCkKCQl7CgkJCSRtZW1fZm9ybV9lcnJvcltdID0gbWVtX2Zvcm1f Z1R4dCgnZmllbGRfbWlzc2luZycsIGFycmF5KCd7bGFiZWx9Jz0+JGhsYWJlbCkpOwoJCQkk aXNFcnJvciA9IHRydWU7CgkJfQoJfQoKCWVsc2UKCXsKCQlpZiAoaXNzZXQoJG1lbV9mb3Jt X2RlZmF1bHRbJG5hbWVdKSkKCQkJJHZhbHVlID0gJG1lbV9mb3JtX2RlZmF1bHRbJG5hbWVd OwoJCWVsc2UgaWYgKCFlbXB0eSgkZGVmYXVsdCkpCgkJCSR2YWx1ZSA9ICRkZWZhdWx0OwoJ CWVsc2UKCQkJJHZhbHVlID0gcGFyc2UoJHRoaW5nKTsKCX0KCgkkaXNFcnJvciA9ICRpc0Vy cm9yID8gJ2Vycm9yRWxlbWVudCcgOiAnJzsKCSRtZW1SZXF1aXJlZCA9ICRyZXF1aXJlZCA/ ICdtZW1SZXF1aXJlZCcgOiAnJzsKCSRjbGFzcyA9IGh0bWxzcGVjaWFsY2hhcnMoJGNsYXNz KTsKCglpZiAoJGVzY2FwZV92YWx1ZSkKCXsKCQkkdmFsdWUgPSBodG1sc3BlY2lhbGNoYXJz KCR2YWx1ZSk7Cgl9CgoJcmV0dXJuICc8bGFiZWwgZm9yPSInLiRuYW1lLiciIGNsYXNzPSIn LiRjbGFzcy4nICcuJG1lbVJlcXVpcmVkLiRpc0Vycm9yLicgJy4kbmFtZS4nIj4nLmh0bWxz cGVjaWFsY2hhcnMoJGxhYmVsKS4nPC9sYWJlbD4nLiRicmVhay4KCQknPHRleHRhcmVhIGlk PSInLiRuYW1lLiciIGNsYXNzPSInLiRjbGFzcy4nICcuJG1lbVJlcXVpcmVkLiRpc0Vycm9y LiciIG5hbWU9IicuJG5hbWUuJyIgY29scz0iJy4kY29scy4nIiByb3dzPSInLiRyb3dzLici PicuJHZhbHVlLic8L3RleHRhcmVhPic7Cn0KCmZ1bmN0aW9uIG1lbV9mb3JtX2VtYWlsKCRh dHRzKQp7CglnbG9iYWwgJG1lbV9mb3JtX2Vycm9yLCAkbWVtX2Zvcm1fc3VibWl0LCAkbWVt X2Zvcm1fZnJvbSwgJG1lbV9mb3JtX2RlZmF1bHQ7CgoJZXh0cmFjdChtZW1fZm9ybV9sQXR0 cyhhcnJheSgKCQknZGVmYXVsdCcJPT4gJycsCgkJJ2lzRXJyb3InCT0+ICcnLAoJCSdsYWJl bCcJCT0+IG1lbV9mb3JtX2dUeHQoJ2VtYWlsJyksCgkJJ21heCcJCT0+IDEwMCwKCQknbWlu JwkJPT4gMCwKCQknbmFtZScJCT0+ICcnLAoJCSdyZXF1aXJlZCcJPT4gMSwKCQknYnJlYWsn CQk9PiBiciwKCQknc2l6ZScJCT0+ICcnLAoJCSdjbGFzcycJCT0+ICdtZW1FbWFpbCcsCgkp LCAkYXR0cykpOwoKCWlmIChlbXB0eSgkbmFtZSkpICRuYW1lID0gbWVtX2Zvcm1fbGFiZWwy bmFtZSgkbGFiZWwpOwoKCWlmICgkbWVtX2Zvcm1fc3VibWl0KQoJewoJCSRlbWFpbCA9IHRy aW0ocHMoJG5hbWUpKTsKCgkJaWYgKHN0cmxlbigkZW1haWwpKQoJCXsKCQkJaWYgKCFpc192 YWxpZF9lbWFpbCgkZW1haWwpKQoJCQl7CgkJCQkkbWVtX2Zvcm1fZXJyb3JbXSA9IG1lbV9m b3JtX2dUeHQoJ2ludmFsaWRfZW1haWwnLCBhcnJheSgne2VtYWlsfSc9Pmh0bWxzcGVjaWFs Y2hhcnMoJGVtYWlsKSkpOwoJCQkJJGlzRXJyb3IgPSB0cnVlOwoJCQl9CgkJCWVsc2UKCQkJ ewoJCQkJcHJlZ19tYXRjaCgiL0AoLispJC8iLCAkZW1haWwsICRtYXRjaCk7CgkJCQkkZG9t YWluID0gJG1hdGNoWzFdOwoKCQkJCWlmIChpc19jYWxsYWJsZSgnY2hlY2tkbnNycicpIGFu ZCBjaGVja2Ruc3JyKCd0ZXh0cGF0dGVybi5jb20uJywnQScpIGFuZCAhY2hlY2tkbnNycigk ZG9tYWluLicuJywnTVgnKSBhbmQgIWNoZWNrZG5zcnIoJGRvbWFpbi4nLicsJ0EnKSkKCQkJ CXsKCQkJCQkkbWVtX2Zvcm1fZXJyb3JbXSA9IG1lbV9mb3JtX2dUeHQoJ2ludmFsaWRfaG9z dCcsIGFycmF5KCd7ZG9tYWlufSc9Pmh0bWxzcGVjaWFsY2hhcnMoJGRvbWFpbikpKTsKCQkJ CQkkaXNFcnJvciA9IHRydWU7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJJG1lbV9mb3Jt X2Zyb20gPSAkZW1haWw7CgkJCQl9CgkJCX0KCQl9Cgl9CgllbHNlCgl7CgkJaWYgKGlzc2V0 KCRtZW1fZm9ybV9kZWZhdWx0WyRuYW1lXSkpCgkJCSRlbWFpbCA9ICRtZW1fZm9ybV9kZWZh dWx0WyRuYW1lXTsKCQllbHNlCgkJCSRlbWFpbCA9ICRkZWZhdWx0OwoJfQoKCXJldHVybiBt ZW1fZm9ybV90ZXh0KGFycmF5KAoJCSdkZWZhdWx0Jwk9PiAkZW1haWwsCgkJJ2lzRXJyb3In CT0+ICRpc0Vycm9yLAoJCSdsYWJlbCcJCT0+ICRsYWJlbCwKCQknbWF4JwkJPT4gJG1heCwK CQknbWluJwkJPT4gJG1pbiwKCQknbmFtZScJCT0+ICRuYW1lLAoJCSdyZXF1aXJlZCcJPT4g JHJlcXVpcmVkLAoJCSdicmVhaycJCT0+ICRicmVhaywKCQknc2l6ZScJCT0+ICRzaXplLAoJ CSdjbGFzcycJCT0+ICRjbGFzcywKCSkpOwp9CgpmdW5jdGlvbiBtZW1fZm9ybV9zZWxlY3Rf c2VjdGlvbigkYXR0cykKewoJZXh0cmFjdChtZW1fZm9ybV9sQXR0cyhhcnJheSgKCQknZXhj bHVkZScJPT4gJycsCgkJJ3NvcnQnCQk9PiAnbmFtZSBBU0MnLAoJCSdkZWxpbWl0ZXInCT0+ ICcsJywKCSksJGF0dHMsZmFsc2UpKTsKCglpZiAoIWVtcHR5KCRleGNsdWRlKSkgewoJCSRl eGNsdXNpb24gPSBhcnJheV9tYXAoJ3RyaW0nLCBzcGxpdCgkZGVsaW1pdGVyLCBwcmVnX3Jl cGxhY2UoJy9bXHJcblx0XHNdKy8nLCAnICcsJGV4Y2x1ZGUpKSk7CgkJJGV4Y2x1c2lvbiA9 IGFycmF5X21hcCgnc3RydG9sb3dlcicsICRleGNsdXNpb24pOwoKCQlpZiAoY291bnQoJGV4 Y2x1c2lvbikpCgkJCSRleGNsdXNpb24gPSBqb2luKCRkZWxpbWl0ZXIsIHF1b3RlX2xpc3Qo JGV4Y2x1c2lvbikpOwoJfQoKCSR3aGVyZSA9IGVtcHR5KCRleGNsdXNpb24pID8gJzE9MScg OiAnTE9XRVIobmFtZSkgTk9UIElOICgnLiRleGNsdXNpb24uJyknOwoKCSRzb3J0ID0gZW1w dHkoJHNvcnQpID8gJycgOiAnIE9SREVSIEJZICcuIGRvU2xhc2goJHNvcnQpOwoKCSRycyA9 IHNhZmVfcm93cygnbmFtZSwgdGl0bGUnLCd0eHBfc2VjdGlvbicsJHdoZXJlIC4gJHNvcnQp OwoKCSRpdGVtcyA9IGFycmF5KCk7CgkkdmFsdWVzID0gYXJyYXkoKTsKCglpZiAoJHJzKSB7 CgkJZm9yZWFjaCgkcnMgYXMgJHIpIHsKCQkJJGl0ZW1zW10gPSAkclsndGl0bGUnXTsKCQkJ JHZhbHVlc1tdID0gJHJbJ25hbWUnXTsKCQl9Cgl9CgoJdW5zZXQoJGF0dHNbJ2V4Y2x1ZGUn XSwgJGF0dHNbJ3NvcnQnXSk7CgoJJGF0dHNbJ2l0ZW1zJ10gPSBqb2luKCRkZWxpbWl0ZXIs ICRpdGVtcyk7CgkkYXR0c1sndmFsdWVzJ10gPSBqb2luKCRkZWxpbWl0ZXIsICR2YWx1ZXMp OwoKCXJldHVybiBtZW1fZm9ybV9zZWxlY3QoJGF0dHMpOwp9CgpmdW5jdGlvbiBtZW1fZm9y bV9zZWxlY3RfY2F0ZWdvcnkoJGF0dHMpCnsKCWV4dHJhY3QobWVtX2Zvcm1fbEF0dHMoYXJy YXkoCgkJJ3Jvb3QnCT0+ICdyb290JywKCQknZXhjbHVkZScJPT4gJycsCgkJJ2RlbGltaXRl cicJPT4gJywnLAoJCSd0eXBlJwk9PiAnYXJ0aWNsZScKCSksJGF0dHMsZmFsc2UpKTsKCgkk cnMgPSBnZXRUcmVlKCRyb290LCAkdHlwZSk7CgoJaWYgKCFlbXB0eSgkZXhjbHVkZSkpIHsK CQkkZXhjbHVzaW9uID0gYXJyYXlfbWFwKCd0cmltJywgc3BsaXQoJGRlbGltaXRlciwgcHJl Z19yZXBsYWNlKCcvW1xyXG5cdFxzXSsvJywgJyAnLCRleGNsdWRlKSkpOwoJCSRleGNsdXNp b24gPSBhcnJheV9tYXAoJ3N0cnRvbG93ZXInLCAkZXhjbHVzaW9uKTsKCX0KCWVsc2UKCQkk ZXhjbHVzaW9uID0gYXJyYXkoKTsKCgkkaXRlbXMgPSBhcnJheSgpOwoJJHZhbHVlcyA9IGFy cmF5KCk7CgoJaWYgKCRycykgewoJCWZvcmVhY2ggKCRycyBhcyAkY2F0KSB7CgkJCWlmIChj b3VudCgkZXhjbHVzaW9uKSAmJiBpbl9hcnJheShzdHJ0b2xvd2VyKCRjYXRbJ25hbWUnXSks ICRleGNsdXNpb24pKQoJCQkJY29udGludWU7CgoJCQkkaXRlbXNbXSA9ICRjYXRbJ3RpdGxl J107CgkJCSR2YWx1ZXNbXSA9ICRjYXRbJ25hbWUnXTsKCQl9Cgl9CgoJdW5zZXQoJGF0dHNb J3Jvb3QnXSwgJGF0dHNbJ3R5cGUnXSk7CgoJJGF0dHNbJ2l0ZW1zJ10gPSBqb2luKCRkZWxp bWl0ZXIsICRpdGVtcyk7CgkkYXR0c1sndmFsdWVzJ10gPSBqb2luKCRkZWxpbWl0ZXIsICR2 YWx1ZXMpOwoKCXJldHVybiBtZW1fZm9ybV9zZWxlY3QoJGF0dHMpOwp9CgpmdW5jdGlvbiBt ZW1fZm9ybV9zZWxlY3QoJGF0dHMpCnsKCWdsb2JhbCAkbWVtX2Zvcm1fZXJyb3IsICRtZW1f Zm9ybV9zdWJtaXQsICRtZW1fZm9ybV9kZWZhdWx0OwoKCWV4dHJhY3QobWVtX2Zvcm1fbEF0 dHMoYXJyYXkoCgkJJ25hbWUnCQk9PiAnJywKCQknYnJlYWsnCQk9PiAnICcsCgkJJ2RlbGlt aXRlcicJPT4gJywnLAoJCSdpc0Vycm9yJwk9PiAnJywKCQknbGFiZWwnCQk9PiBtZW1fZm9y bV9nVHh0KCdvcHRpb24nKSwKCQknaXRlbXMnCQk9PiBtZW1fZm9ybV9nVHh0KCdnZW5lcmFs X2lucXVpcnknKSwKCQkndmFsdWVzJwk9PiAnJywKCQknZmlyc3QnCQk9PiBGQUxTRSwKCQkn cmVxdWlyZWQnCT0+IDEsCgkJJ3NlbGVjdF9saW1pdCcJPT4gRkFMU0UsCgkJJ2FzX2NzdicJ PT4gRkFMU0UsCgkJJ3NlbGVjdGVkJwk9PiAnJywKCQknY2xhc3MnCQk9PiAnbWVtU2VsZWN0 JywKCSksICRhdHRzLCBmYWxzZSkpOwoKCWlmIChlbXB0eSgkbmFtZSkpICRuYW1lID0gbWVt X2Zvcm1fbGFiZWwybmFtZSgkbGFiZWwpOwoKCWlmICghZW1wdHkoJGl0ZW1zKSAmJiAkaXRl bXNbMF0gPT0gJzwnKSAkaXRlbXMgPSBwYXJzZSgkaXRlbXMpOwoJaWYgKCFlbXB0eSgkdmFs dWVzKSAmJiAkdmFsdWVzWzBdID09ICc8JykgJHZhbHVlcyA9IHBhcnNlKCR2YWx1ZXMpOwoK CWlmICgkZmlyc3QgIT09IEZBTFNFKSB7CgkJJGl0ZW1zID0gJGZpcnN0LiRkZWxpbWl0ZXIu JGF0dHNbJ2l0ZW1zJ107CgkJJHZhbHVlcyA9ICRmaXJzdC4kZGVsaW1pdGVyLiRhdHRzWyd2 YWx1ZXMnXTsKCX0KCgkkc2VsZWN0X2xpbWl0ID0gZW1wdHkoJHNlbGVjdF9saW1pdCkgPyAx IDogYXNzZXJ0X2ludCgkc2VsZWN0X2xpbWl0KTsKCgkkaXRlbXMgPSBhcnJheV9tYXAoJ3Ry aW0nLCBzcGxpdCgkZGVsaW1pdGVyLCBwcmVnX3JlcGxhY2UoJy9bXHJcblx0XHNdKy8nLCAn ICcsJGl0ZW1zKSkpOwoJJHZhbHVlcyA9IGFycmF5X21hcCgndHJpbScsIHNwbGl0KCRkZWxp bWl0ZXIsIHByZWdfcmVwbGFjZSgnL1tcclxuXHRcc10rLycsICcgJywkdmFsdWVzKSkpOwoJ aWYgKCRzZWxlY3RfbGltaXQgPiAxKQoJewoJCSRzZWxlY3RlZCA9IGFycmF5X21hcCgndHJp bScsIHNwbGl0KCRkZWxpbWl0ZXIsIHByZWdfcmVwbGFjZSgnL1tcclxuXHRcc10rLycsICcg Jywkc2VlbGN0ZWQpKSk7Cgl9CgllbHNlCgl7CgkJJHNlbGVjdGVkID0gYXJyYXkodHJpbSgk c2VsZWN0ZWQpKTsKCX0KCgkkdXNlX3ZhbHVlc19hcnJheSA9IChjb3VudCgkaXRlbXMpID09 IGNvdW50KCR2YWx1ZXMpKTsKCglpZiAoJG1lbV9mb3JtX3N1Ym1pdCkKCXsKCQlpZiAoc3Ry cG9zKCRuYW1lLCAnW10nKSkKCQl7CgkJCSR2YWx1ZSA9IHBzKHN1YnN0cigkbmFtZSwgMCwg c3RybGVuKCRuYW1lKS0yKSk7CgoJCQkkc2VsZWN0ZWQgPSAkdmFsdWU7CgoJCQlpZiAoJGFz X2NzdikKCQkJewoJCQkJJHZhbHVlID0gaW1wbG9kZSgkZGVsaW1pdGVyLCAkdmFsdWUpOwoJ CQl9CgkJfQoJCWVsc2UKCQl7CgkJCSR2YWx1ZSA9IHRyaW0ocHMoJG5hbWUpKTsKCgkJCSRz ZWxlY3RlZCA9IGFycmF5KCR2YWx1ZSk7CgkJfQoKCQlpZiAoIWVtcHR5KCRzZWxlY3RlZCkp CgkJewoJCQlpZiAoY291bnQoJHNlbGVjdGVkKSA8PSAkc2VsZWN0X2xpbWl0KQoJCQl7CgkJ CQlmb3JlYWNoICgkc2VsZWN0ZWQgYXMgJHYpCgkJCQl7CgkJCQkJJGlzX3ZhbGlkID0gKCR1 c2VfdmFsdWVzX2FycmF5ICYmIGluX2FycmF5KCR2LCAkdmFsdWVzKSkgb3IgKCEkdXNlX3Zh bHVlc19hcnJheSAmJiBpbl9hcnJheSgkdiwgJGl0ZW1zKSk7CgkJCQkJaWYgKCEkaXNfdmFs aWQpCgkJCQkJewoJCQkJCQkkaW52YWxpZF92YWx1ZSA9ICR2OwoJCQkJCQlicmVhazsKCQkJ CQl9CgkJCQl9CgoJCQkJaWYgKCRpc192YWxpZCkKCQkJCXsKCQkJCQkkaXNFcnJvciA9IGZh bHNlID09PSBtZW1fZm9ybV9zdG9yZSgkbmFtZSwgJGxhYmVsLCAkdmFsdWUpOwoJCQkJfQoJ CQkJZWxzZQoJCQkJewoJCQkJCSRtZW1fZm9ybV9lcnJvcltdID0gbWVtX2Zvcm1fZ1R4dCgn aW52YWxpZF92YWx1ZScsIGFycmF5KCd7bGFiZWx9Jz0+IGh0bWxzcGVjaWFsY2hhcnMoJGxh YmVsKSwgJ3t2YWx1ZX0nPT4gaHRtbHNwZWNpYWxjaGFycygkaW52YWxpZF92YWx1ZSkpKTsK CQkJCQkkaXNFcnJvciA9IHRydWU7CgkJCQl9CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkbWVt X2Zvcm1fZXJyb3JbXSA9IG1lbV9mb3JtX2dUeHQoJ2ludmFsaWRfdG9vX21hbnlfc2VsZWN0 ZWQnLCBhcnJheSgKCQkJCQkJCQkJCQkne2xhYmVsfSc9PiBodG1sc3BlY2lhbGNoYXJzKCRs YWJlbCksCgkJCQkJCQkJCQkJJ3tjb3VudH0nPT4gJHNlbGVjdF9saW1pdCwKCQkJCQkJCQkJ CQkne3BsdXJhbH0nPT4gKCRzZWxlY3RfbGltaXQ9PTEgPyBtZW1fZm9ybV9nVHh0KCdpdGVt JykgOiBtZW1fZm9ybV9nVHh0KCdpdGVtcycpKQoJCQkJCQkJCQkJKSk7CgkJCQkkaXNFcnJv ciA9IHRydWU7CgkJCX0KCQl9CgoJCWVsc2VpZiAoJHJlcXVpcmVkKQoJCXsKCQkJJG1lbV9m b3JtX2Vycm9yW10gPSBtZW1fZm9ybV9nVHh0KCdmaWVsZF9taXNzaW5nJywgYXJyYXkoJ3ts YWJlbH0nPT4gaHRtbHNwZWNpYWxjaGFycygkbGFiZWwpKSk7CgkJCSRpc0Vycm9yID0gdHJ1 ZTsKCQl9Cgl9CgllbHNlIGlmIChpc3NldCgkbWVtX2Zvcm1fZGVmYXVsdFskbmFtZV0pKQoJ ewoJCSRzZWxlY3RlZCA9IGFycmF5KCRtZW1fZm9ybV9kZWZhdWx0WyRuYW1lXSk7Cgl9CgoJ JG91dCA9ICcnOwoKCWZvcmVhY2ggKCRpdGVtcyBhcyAkaXRlbSkKCXsKCQkkdiA9ICR1c2Vf dmFsdWVzX2FycmF5ID8gYXJyYXlfc2hpZnQoJHZhbHVlcykgOiAkaXRlbTsKCgkJJHNlbCA9 ICFlbXB0eSgkc2VsZWN0ZWQpICYmIGluX2FycmF5KCR2LCAkc2VsZWN0ZWQpOwoKCQkkb3V0 IC49IG4udC4nPG9wdGlvbicuKCR1c2VfdmFsdWVzX2FycmF5ID8gJyB2YWx1ZT0iJy4kdi4n IicgOiAnJykuKCRzZWwgPyAnIHNlbGVjdGVkPSJzZWxlY3RlZCI+JyA6ICc+JykuCgkJCQko c3RybGVuKCRpdGVtKSA/IGh0bWxzcGVjaWFsY2hhcnMoJGl0ZW0pIDogJyAnKS4nPC9vcHRp b24+JzsKCX0KCgkkaXNFcnJvciA9ICRpc0Vycm9yID8gJ2Vycm9yRWxlbWVudCcgOiAnJzsK CSRtZW1SZXF1aXJlZCA9ICRyZXF1aXJlZCA/ICdtZW1SZXF1aXJlZCcgOiAnJzsKCSRjbGFz cyA9IGh0bWxzcGVjaWFsY2hhcnMoJGNsYXNzKTsKCgkkbXVsdGlwbGUgPSAkc2VsZWN0X2xp bWl0ID4gMSA/ICcgbXVsdGlwbGU9Im11bHRpcGxlIicgOiAnJzsKCglyZXR1cm4gJzxsYWJl bCBmb3I9IicuJG5hbWUuJyIgY2xhc3M9IicuJGNsYXNzLicgJy4kbWVtUmVxdWlyZWQuJGlz RXJyb3IuJyAnLiRuYW1lLiciPicuaHRtbHNwZWNpYWxjaGFycygkbGFiZWwpLic8L2xhYmVs PicuJGJyZWFrLgoJCW4uJzxzZWxlY3QgaWQ9IicuJG5hbWUuJyIgbmFtZT0iJy4kbmFtZS4n IiBjbGFzcz0iJy4kY2xhc3MuJyAnLiRtZW1SZXF1aXJlZC4kaXNFcnJvci4nIicgLiAkbXVs dGlwbGUgLiAnPicuCgkJCSRvdXQuCgkJbi4nPC9zZWxlY3Q+JzsKfQoKZnVuY3Rpb24gbWVt X2Zvcm1fY2hlY2tib3goJGF0dHMpCnsKCWdsb2JhbCAkbWVtX2Zvcm1fZXJyb3IsICRtZW1f Zm9ybV9zdWJtaXQsICRtZW1fZm9ybV9kZWZhdWx0OwoKCWV4dHJhY3QobWVtX2Zvcm1fbEF0 dHMoYXJyYXkoCgkJJ2JyZWFrJwkJPT4gJyAnLAoJCSdjaGVja2VkJwk9PiAwLAoJCSdpc0Vy cm9yJwk9PiAnJywKCQknbGFiZWwnCQk9PiBtZW1fZm9ybV9nVHh0KCdjaGVja2JveCcpLAoJ CSduYW1lJwkJPT4gJycsCgkJJ2NsYXNzJwkJPT4gJ21lbUNoZWNrYm94JywKCQkncmVxdWly ZWQnCT0+IDEKCSksICRhdHRzKSk7CgoJaWYgKGVtcHR5KCRuYW1lKSkgJG5hbWUgPSBtZW1f Zm9ybV9sYWJlbDJuYW1lKCRsYWJlbCk7CgoJaWYgKCRtZW1fZm9ybV9zdWJtaXQpCgl7CgkJ JHZhbHVlID0gKGJvb2wpIHBzKCRuYW1lKTsKCgkJaWYgKCRyZXF1aXJlZCBhbmQgISR2YWx1 ZSkKCQl7CgkJCSRtZW1fZm9ybV9lcnJvcltdID0gbWVtX2Zvcm1fZ1R4dCgnZmllbGRfbWlz c2luZycsIGFycmF5KCd7bGFiZWx9Jz0+IGh0bWxzcGVjaWFsY2hhcnMoJGxhYmVsKSkpOwoJ CQkkaXNFcnJvciA9IHRydWU7CgkJfQoKCQllbHNlCgkJewoJCQkkaXNFcnJvciA9IGZhbHNl ID09PSBtZW1fZm9ybV9zdG9yZSgkbmFtZSwgJGxhYmVsLCAkdmFsdWUgPyBnVHh0KCd5ZXMn KSA6IGdUeHQoJ25vJykpOwoJCX0KCX0KCgllbHNlIHsKCQlpZiAoaXNzZXQoJG1lbV9mb3Jt X2RlZmF1bHRbJG5hbWVdKSkKCQkJJHZhbHVlID0gJG1lbV9mb3JtX2RlZmF1bHRbJG5hbWVd OwoJCWVsc2UKCQkJJHZhbHVlID0gJGNoZWNrZWQ7Cgl9CgoJJGlzRXJyb3IgPSAkaXNFcnJv ciA/ICdlcnJvckVsZW1lbnQnIDogJyc7CgkkbWVtUmVxdWlyZWQgPSAkcmVxdWlyZWQgPyAn bWVtUmVxdWlyZWQnIDogJyc7CgkkY2xhc3MgPSBodG1sc3BlY2lhbGNoYXJzKCRjbGFzcyk7 CgoJcmV0dXJuICc8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSInLiRuYW1lLiciIGNsYXNz PSInLiRjbGFzcy4nICcuJG1lbVJlcXVpcmVkLiRpc0Vycm9yLiciIG5hbWU9IicuJG5hbWUu JyInLgoJCSgkdmFsdWUgPyAnIGNoZWNrZWQ9ImNoZWNrZWQiJyA6ICcnKS4nIC8+Jy4kYnJl YWsuCgkJJzxsYWJlbCBmb3I9IicuJG5hbWUuJyIgY2xhc3M9IicuJGNsYXNzLicgJy4kbWVt UmVxdWlyZWQuJGlzRXJyb3IuJyAnLiRuYW1lLiciPicuaHRtbHNwZWNpYWxjaGFycygkbGFi ZWwpLic8L2xhYmVsPic7Cn0KCgpmdW5jdGlvbiBtZW1fZm9ybV9zZXJ2ZXJpbmZvKCRhdHRz KQp7CglnbG9iYWwgJG1lbV9mb3JtX3N1Ym1pdDsKCglleHRyYWN0KG1lbV9mb3JtX2xBdHRz KGFycmF5KAoJCSdsYWJlbCcJCT0+ICcnLAoJCSduYW1lJwkJPT4gJycKCSksICRhdHRzKSk7 CgoJaWYgKGVtcHR5KCRuYW1lKSkgJG5hbWUgPSBtZW1fZm9ybV9sYWJlbDJuYW1lKCRsYWJl bCk7CgoJaWYgKHN0cmxlbigkbmFtZSkgYW5kICRtZW1fZm9ybV9zdWJtaXQpCgl7CgkJaWYg KCEkbGFiZWwpICRsYWJlbCA9ICRuYW1lOwoJCW1lbV9mb3JtX3N0b3JlKCRuYW1lLCAkbGFi ZWwsIHNlcnZlclNldCgkbmFtZSkpOwoJfQp9CgpmdW5jdGlvbiBtZW1fZm9ybV9zZWNyZXQo JGF0dHMsICR0aGluZyA9ICcnKQp7CglnbG9iYWwgJG1lbV9mb3JtX3N1Ym1pdDsKCglleHRy YWN0KG1lbV9mb3JtX2xBdHRzKGFycmF5KAoJCSduYW1lJwk9PiAnJywKCQknbGFiZWwnCT0+ IG1lbV9mb3JtX2dUeHQoJ3NlY3JldCcpLAoJCSd2YWx1ZScJPT4gJycKCSksICRhdHRzKSk7 CgoKCSRuYW1lID0gbWVtX2Zvcm1fbGFiZWwybmFtZSgkbmFtZSA/ICRuYW1lIDogJGxhYmVs KTsKCglpZiAoJG1lbV9mb3JtX3N1Ym1pdCkKCXsKCQlpZiAoJHRoaW5nKQoJCQkkdmFsdWUg PSB0cmltKHBhcnNlKCR0aGluZykpOwoJCWVsc2UKCQkJJHZhbHVlID0gdHJpbShwYXJzZSgk dmFsdWUpKTsKCgkJbWVtX2Zvcm1fc3RvcmUoJG5hbWUsICRsYWJlbCwgJHZhbHVlKTsKCX0K CglyZXR1cm4gJyc7Cn0KCmZ1bmN0aW9uIG1lbV9mb3JtX2hpZGRlbigkYXR0cywgJHRoaW5n PScnKQp7CglnbG9iYWwgJG1lbV9mb3JtX3N1Ym1pdCwgJG1lbV9mb3JtX2RlZmF1bHQ7CgoJ ZXh0cmFjdChtZW1fZm9ybV9sQXR0cyhhcnJheSgKCQknbmFtZScJCT0+ICcnLAoJCSdsYWJl bCcJCT0+IG1lbV9mb3JtX2dUeHQoJ2hpZGRlbicpLAoJCSd2YWx1ZScJCT0+ICcnLAoJCSdp c0Vycm9yJwk9PiAnJywKCQkncmVxdWlyZWQnCT0+IDEsCgkJJ2NsYXNzJwkJPT4gJ21lbUhp ZGRlbicsCgkJJ2VzY2FwZV92YWx1ZScJPT4gMSwKCSksICRhdHRzKSk7CgoJJG5hbWUgPSBt ZW1fZm9ybV9sYWJlbDJuYW1lKCRuYW1lID8gJG5hbWUgOiAkbGFiZWwpOwoKCWlmICgkbWVt X2Zvcm1fc3VibWl0KQoJewoJCSR2YWx1ZSA9IHByZWdfcmVwbGFjZSgnL15ccypbXHJcbl0v JywgJycsIHJ0cmltKHBzKCRuYW1lKSkpOwoJCSR1dGY4bGVuID0gcHJlZ19tYXRjaF9hbGwo Ii8uL3N1IiwgbHRyaW0oJHZhbHVlKSwgJHV0Zjhhcik7CgkJJGhsYWJlbCA9IGh0bWxzcGVj aWFsY2hhcnMoJGxhYmVsKTsKCgkJaWYgKHN0cmxlbigkdmFsdWUpKQoJCXsKCQkJaWYgKCEk dXRmOGxlbikKCQkJewoJCQkJJG1lbV9mb3JtX2Vycm9yW10gPSBtZW1fZm9ybV9nVHh0KCdp bnZhbGlkX3V0ZjgnLCAkaGxhYmVsKTsKCQkJCSRpc0Vycm9yID0gdHJ1ZTsKCQkJfQoJCQll bHNlCgkJCXsKCQkJCSRpc0Vycm9yID0gZmFsc2UgPT09IG1lbV9mb3JtX3N0b3JlKCRuYW1l LCAkbGFiZWwsICR2YWx1ZSk7CgkJCX0KCQl9Cgl9CgllbHNlCgl7CgkJaWYgKGlzc2V0KCRt ZW1fZm9ybV9kZWZhdWx0WyRuYW1lXSkpCgkJCSR2YWx1ZSA9ICRtZW1fZm9ybV9kZWZhdWx0 WyRuYW1lXTsKCQllbHNlIGlmICgkdGhpbmcpCgkJCSR2YWx1ZSA9IHRyaW0ocGFyc2UoJHRo aW5nKSk7Cgl9CgoJJGlzRXJyb3IgPSAkaXNFcnJvciA/ICdlcnJvckVsZW1lbnQnIDogJyc7 CgkkbWVtUmVxdWlyZWQgPSAkcmVxdWlyZWQgPyAnbWVtUmVxdWlyZWQnIDogJyc7CgoJaWYg KCRlc2NhcGVfdmFsdWUpCgl7CgkJJHZhbHVlID0gaHRtbHNwZWNpYWxjaGFycygkdmFsdWUp OwoJfQoKCXJldHVybiAnPGlucHV0IHR5cGU9ImhpZGRlbiIgY2xhc3M9IicuJGNsYXNzLicg Jy4kbWVtUmVxdWlyZWQuJGlzRXJyb3IuJyAnLiRuYW1lCgkJCS4gJyIgbmFtZT0iJy4kbmFt ZS4nIiB2YWx1ZT0iJy4kdmFsdWUuJyIgLz4nOwp9CgpmdW5jdGlvbiBtZW1fZm9ybV9yYWRp bygkYXR0cykKewoJZ2xvYmFsICRtZW1fZm9ybV9lcnJvciwgJG1lbV9mb3JtX3N1Ym1pdCwg JG1lbV9mb3JtX3ZhbHVlcywgJG1lbV9mb3JtX2RlZmF1bHQ7CgoJZXh0cmFjdChtZW1fZm9y bV9sQXR0cyhhcnJheSgKCQknYnJlYWsnCQk9PiAnICcsCgkJJ2NoZWNrZWQnCT0+IDAsCgkJ J2dyb3VwJwkJPT4gJycsCgkJJ2xhYmVsJwkJPT4gbWVtX2Zvcm1fZ1R4dCgnb3B0aW9uJyks CgkJJ25hbWUnCQk9PiAnJywKCQknY2xhc3MnCQk9PiAnbWVtUmFkaW8nLAoJCSdpc0Vycm9y Jwk9PiAnJwoJKSwgJGF0dHMpKTsKCglzdGF0aWMgJGN1cl9uYW1lID0gJyc7CglzdGF0aWMg JGN1cl9ncm91cCA9ICcnOwoKCWlmICghJG5hbWUgYW5kICEkZ3JvdXAgYW5kICEkY3VyX25h bWUgYW5kICEkY3VyX2dyb3VwKSB7CgkJJGN1cl9ncm91cCA9IG1lbV9mb3JtX2dUeHQoJ3Jh ZGlvJyk7CgkJJGN1cl9uYW1lID0gJGN1cl9ncm91cDsKCX0KCWlmICgkZ3JvdXAgYW5kICEk bmFtZSBhbmQgJGdyb3VwICE9ICRjdXJfZ3JvdXApICRuYW1lID0gJGdyb3VwOwoKCWlmICgk bmFtZSkgJGN1cl9uYW1lID0gJG5hbWU7CgllbHNlICRuYW1lID0gJGN1cl9uYW1lOwoKCWlm ICgkZ3JvdXApICRjdXJfZ3JvdXAgPSAkZ3JvdXA7CgllbHNlICRncm91cCA9ICRjdXJfZ3Jv dXA7CgoJJGlkICAgPSAncScubWQ1KCRuYW1lLic9PicuJGxhYmVsKTsKCSRuYW1lID0gbWVt X2Zvcm1fbGFiZWwybmFtZSgkbmFtZSk7CgoJaWYgKCRtZW1fZm9ybV9zdWJtaXQpCgl7CgkJ JGlzX2NoZWNrZWQgPSAocHMoJG5hbWUpID09ICRpZCk7CgoJCWlmICgkaXNfY2hlY2tlZCBv ciAkY2hlY2tlZCBhbmQgIWlzc2V0KCRtZW1fZm9ybV92YWx1ZXNbJG5hbWVdKSkKCQl7CgkJ CSRpc0Vycm9yID0gZmFsc2UgPT09IG1lbV9mb3JtX3N0b3JlKCRuYW1lLCAkZ3JvdXAsICRs YWJlbCk7CgkJfQoJfQoKCWVsc2UKCXsKCQlpZiAoaXNzZXQoJG1lbV9mb3JtX2RlZmF1bHRb JG5hbWVdKSkKCQkJJGlzX2NoZWNrZWQgPSAkbWVtX2Zvcm1fZGVmYXVsdFskbmFtZV07CgkJ ZWxzZQoJCQkkaXNfY2hlY2tlZCA9ICRjaGVja2VkOwoJfQoKCSRjbGFzcyA9IGh0bWxzcGVj aWFsY2hhcnMoJGNsYXNzKTsKCgkkaXNFcnJvciA9ICRpc0Vycm9yID8gJyBlcnJvckVsZW1l bnQnIDogJyc7CgoJcmV0dXJuICc8aW5wdXQgdmFsdWU9IicuJGlkLiciIHR5cGU9InJhZGlv IiBpZD0iJy4kaWQuJyIgY2xhc3M9IicuJGNsYXNzLicgJy4kbmFtZS4kaXNFcnJvci4nIiBu YW1lPSInLiRuYW1lLiciJy4KCQkoICRpc19jaGVja2VkID8gJyBjaGVja2VkPSJjaGVja2Vk IiAvPicgOiAnIC8+JykuJGJyZWFrLgoJCSc8bGFiZWwgZm9yPSInLiRpZC4nIiBjbGFzcz0i Jy4kY2xhc3MuJyAnLiRuYW1lLiciPicuaHRtbHNwZWNpYWxjaGFycygkbGFiZWwpLic8L2xh YmVsPic7Cn0KCmZ1bmN0aW9uIG1lbV9mb3JtX3N1Ym1pdCgkYXR0cywgJHRoaW5nPScnKQp7 CglnbG9iYWwgJG1lbV9mb3JtX3N1Ym1pdDsKCglleHRyYWN0KG1lbV9mb3JtX2xBdHRzKGFy cmF5KAoJCSdidXR0b24nCT0+IDAsCgkJJ2xhYmVsJwkJPT4gbWVtX2Zvcm1fZ1R4dCgnc2F2 ZScpLAoJCSduYW1lJwkJPT4gJ21lbV9mb3JtX3N1Ym1pdCcsCgkJJ2NsYXNzJwkJPT4gJ21l bVN1Ym1pdCcsCgkpLCAkYXR0cykpOwoKCSRsYWJlbCA9IGh0bWxzcGVjaWFsY2hhcnMoJGxh YmVsKTsKCSRuYW1lID0gaHRtbHNwZWNpYWxjaGFycygkbmFtZSk7CgkkY2xhc3MgPSBodG1s c3BlY2lhbGNoYXJzKCRjbGFzcyk7CgoJaWYgKCRtZW1fZm9ybV9zdWJtaXQpCgl7CgkJJHZh bHVlID0gcHMoJG5hbWUpOwoKCQlpZiAoIWVtcHR5KCR2YWx1ZSkgJiYgJHZhbHVlID09ICRs YWJlbCkKCQl7CgkJCS8vIHNhdmUgdGhlIGNsaWNrZWQgYnV0dG9uIHZhbHVlCgkJCW1lbV9m b3JtX3N0b3JlKCRuYW1lLCAkbGFiZWwsICR2YWx1ZSk7CgkJfQoJfQoKCWlmICgkYnV0dG9u IG9yIHN0cmxlbigkdGhpbmcpKQoJewoJCXJldHVybiAnPGJ1dHRvbiB0eXBlPSJzdWJtaXQi IGNsYXNzPSInLiRjbGFzcy4nIiBuYW1lPSInLiRuYW1lLiciIHZhbHVlPSInLiRsYWJlbC4n Ij4nLigkdGhpbmcgPyB0cmltKHBhcnNlKCR0aGluZykpIDogJGxhYmVsKS4nPC9idXR0b24+ JzsKCX0KCWVsc2UKCXsKCQlyZXR1cm4gJzxpbnB1dCB0eXBlPSJzdWJtaXQiIGNsYXNzPSIn LiRjbGFzcy4nIiBuYW1lPSInLiRuYW1lLiciIHZhbHVlPSInLiRsYWJlbC4nIiAvPic7Cgl9 Cn0KCmZ1bmN0aW9uIG1lbV9mb3JtX2xBdHRzKCRhcnIsICRhdHRzLCAkd2Fybj10cnVlKQp7 Cglmb3JlYWNoKGFycmF5KCdidXR0b24nLCAnY2hlY2tlZCcsICdyZXF1aXJlZCcsICdzaG93 X2lucHV0JywgJ3Nob3dfZXJyb3InKSBhcyAka2V5KQoJewoJCWlmIChpc3NldCgkYXR0c1sk a2V5XSkpCgkJewoJCQkkYXR0c1ska2V5XSA9ICgkYXR0c1ska2V5XSA9PT0gJ3llcycgb3Ig aW50dmFsKCRhdHRzWyRrZXldKSkgPyAxIDogMDsKCQl9Cgl9CglpZiAoaXNzZXQoJGF0dHNb J2JyZWFrJ10pIGFuZCAkYXR0c1snYnJlYWsnXSA9PSAnYnInKSAkYXR0c1snYnJlYWsnXSA9 ICc8YnIgLz4nOwoJcmV0dXJuIGxBdHRzKCRhcnIsICRhdHRzLCAkd2Fybik7Cn0KCmZ1bmN0 aW9uIG1lbV9mb3JtX2xhYmVsMm5hbWUoJGxhYmVsKQp7CgkkbGFiZWwgPSB0cmltKCRsYWJl bCk7CglpZiAoc3RybGVuKCRsYWJlbCkgPT0gMCkgcmV0dXJuICdpbnZhbGlkJzsKCWlmIChz dHJsZW4oJGxhYmVsKSA8PSAzMiBhbmQgcHJlZ19tYXRjaCgnL15bYS16QS1aXVtBLVphLXow LTk6Xy1dKiQvJywgJGxhYmVsKSkgcmV0dXJuICRsYWJlbDsKCWVsc2UgcmV0dXJuICdxJy5t ZDUoJGxhYmVsKTsKfQoKZnVuY3Rpb24gbWVtX2Zvcm1fc3RvcmUoJG5hbWUsICRsYWJlbCwg JHZhbHVlKQp7CglnbG9iYWwgJG1lbV9mb3JtLCAkbWVtX2Zvcm1fbGFiZWxzLCAkbWVtX2Zv cm1fdmFsdWVzOwoKCSRtZW1fZm9ybVskbGFiZWxdID0gJHZhbHVlOwoJJG1lbV9mb3JtX2xh YmVsc1skbmFtZV0gPSAkbGFiZWw7CgkkbWVtX2Zvcm1fdmFsdWVzWyRuYW1lXSA9ICR2YWx1 ZTsKCgkkaXNfdmFsaWQgPSBmYWxzZSAhPT0gY2FsbGJhY2tfZXZlbnQoJ21lbV9mb3JtLnN0 b3JlX3ZhbHVlJywgJG5hbWUpOwoKCS8vIGludmFsaWQgZGF0YSwgdW5zdG9yZSBpdAoJaWYg KCEkaXNfdmFsaWQpCgkJbWVtX2Zvcm1fcmVtb3ZlKCRuYW1lKTsKCglyZXR1cm4gJGlzX3Zh bGlkOwp9CgpmdW5jdGlvbiBtZW1fZm9ybV9yZW1vdmUoJG5hbWUpCnsKCWdsb2JhbCAkbWVt X2Zvcm0sICRtZW1fZm9ybV9sYWJlbHMsICRtZW1fZm9ybV92YWx1ZXM7CgoJJGxhYmVsID0g JG1lbV9mb3JtX2xhYmVsc1skbmFtZV07Cgl1bnNldCgkbWVtX2Zvcm1fbGFiZWxzWyRuYW1l XSwgJG1lbV9mb3JtWyRsYWJlbF0sICRtZW1fZm9ybV92YWx1ZXNbJG5hbWVdKTsKfQoKZnVu Y3Rpb24gbWVtX2Zvcm1fZGlzcGxheV9lcnJvcigpCnsKCWdsb2JhbCAkbWVtX2Zvcm1fZXJy b3I7CgoJJG91dCA9IG4uJzx1bCBjbGFzcz0ibWVtRXJyb3IiPic7CgoJZm9yZWFjaCAoYXJy YXlfdW5pcXVlKCRtZW1fZm9ybV9lcnJvcikgYXMgJGVycm9yKQoJewoJCSRvdXQgLj0gbi50 Lic8bGk+Jy4kZXJyb3IuJzwvbGk+JzsKCX0KCgkkb3V0IC49IG4uJzwvdWw+JzsKCglyZXR1 cm4gJG91dDsKfQoKZnVuY3Rpb24gbWVtX2Zvcm1fdmFsdWUoJGF0dHMsICR0aGluZykKewoJ Z2xvYmFsICRtZW1fZm9ybV9zdWJtaXQsICRtZW1fZm9ybV92YWx1ZXMsICRtZW1fZm9ybV9k ZWZhdWx0OwoKCWV4dHJhY3QobWVtX2Zvcm1fbEF0dHMoYXJyYXkoCgkJJ25hbWUnCQk9PiAn JywKCQknd3JhcHRhZycJPT4gJycsCgkJJ2NsYXNzJwkJPT4gJycsCgkJJ2F0dHJpYnV0ZXMn PT4gJycsCgkJJ2lkJwkJPT4gJycsCgkpLCAkYXR0cykpOwoKCSRvdXQgPSAnJzsKCglpZiAo JG1lbV9mb3JtX3N1Ym1pdCkKCXsKCQlpZiAoaXNzZXQoJG1lbV9mb3JtX3ZhbHVlc1skbmFt ZV0pKQoJCQkkb3V0ID0gJG1lbV9mb3JtX3ZhbHVlc1skbmFtZV07Cgl9CgllbHNlIHsKCQlp ZiAoaXNzZXQoJG1lbV9mb3JtX2RlZmF1bHRbJG5hbWVdKSkKCQkJJG91dCA9ICRtZW1fZm9y bV9kZWZhdWx0WyRuYW1lXTsKCX0KCglyZXR1cm4gZG9UYWcoJG91dCwgJHdyYXB0YWcsICRj bGFzcywgJGF0dHJpYnV0ZXMsICRpZCk7Cn0KCmZ1bmN0aW9uIG1lbV9mb3JtX2Vycm9yKCRl cnI9TlVMTCkKewoJZ2xvYmFsICRtZW1fZm9ybV9lcnJvcjsKCglpZiAoIWlzX2FycmF5KCRt ZW1fZm9ybV9lcnJvcikpCgkJJG1lbV9mb3JtX2Vycm9yID0gYXJyYXkoKTsKCglpZiAoJGVy ciA9PSBOVUxMKQoJCXJldHVybiAhZW1wdHkoJG1lbV9mb3JtX2Vycm9yKSA/ICRtZW1fZm9y bV9lcnJvciA6IGZhbHNlOwoKCSRtZW1fZm9ybV9lcnJvcltdID0gJGVycjsKfQoKZnVuY3Rp b24gbWVtX2Zvcm1fZGVmYXVsdCgka2V5LCR2YWw9TlVMTCkKewoJZ2xvYmFsICRtZW1fZm9y bV9kZWZhdWx0OwoKCWlmIChpc19hcnJheSgka2V5KSkKCXsKCQlmb3JlYWNoICgka2V5IGFz ICRrPT4kdikKCQl7CgkJCW1lbV9mb3JtX2RlZmF1bHQoJGssJHYpOwoJCX0KCQlyZXR1cm47 Cgl9CgoJJG5hbWUgPSBtZW1fZm9ybV9sYWJlbDJuYW1lKCRrZXkpOwoKCWlmICgkdmFsID09 IE5VTEwpCgl7CgkJcmV0dXJuIChpc3NldCgkbWVtX2Zvcm1fZGVmYXVsdFskbmFtZV0pID8g JG1lbV9mb3JtX2RlZmF1bHRbJG5hbWVdIDogZmFsc2UpOwoJfQoKCSRtZW1fZm9ybV9kZWZh dWx0WyRuYW1lXSA9ICR2YWw7CgoJcmV0dXJuICR2YWw7Cn0KCgoKZnVuY3Rpb24gbWVtX2Zv cm1fbWFpbCgkZnJvbSwkcmVwbHksJHRvLCRzdWJqZWN0LCRtc2csICRjb250ZW50X3R5cGU9 J3RleHQvcGxhaW4nKQp7CglnbG9iYWwgJHByZWZzOwoKCWlmICghaXNfY2FsbGFibGUoJ21h aWwnKSkKCQlyZXR1cm4gZmFsc2U7CgoJJHRvID0gbWVtX2Zvcm1fc3RyaXAoJHRvKTsKCSRm cm9tID0gbWVtX2Zvcm1fc3RyaXAoJGZyb20pOwoJJHJlcGx5ID0gbWVtX2Zvcm1fc3RyaXAo JHJlcGx5KTsKCSRzdWJqZWN0ID0gbWVtX2Zvcm1fc3RyaXAoJHN1YmplY3QpOwoJJG1zZyA9 IG1lbV9mb3JtX3N0cmlwKCRtc2csRkFMU0UpOwoKCWlmICgkcHJlZnNbJ292ZXJyaWRlX2Vt YWlsY2hhcnNldCddIGFuZCBpc19jYWxsYWJsZSgndXRmOF9kZWNvZGUnKSkgewoJCSRjaGFy c2V0ID0gJ0lTTy04ODU5LTEnOwoJCSRzdWJqZWN0ID0gdXRmOF9kZWNvZGUoJHN1YmplY3Qp OwoJCSRtc2cgICAgID0gdXRmOF9kZWNvZGUoJG1zZyk7Cgl9CgllbHNlIHsKCQkkY2hhcnNl dCA9ICdVVEYtOCc7Cgl9CgoJJHN1YmplY3QgPSBtZW1fZm9ybV9tYWlsaGVhZGVyKCRzdWJq ZWN0LCd0ZXh0Jyk7CgoJJHNlcCA9ICFpc193aW5kb3dzKCkgPyAiXG4iIDogIlxyXG4iOwoK CSRoZWFkZXJzID0gJ0Zyb206ICcuJGZyb20uCgkJKCRyZXBseSA/ICgkc2VwLidSZXBseS1U bzogJy4kcmVwbHkpIDogJycpLgoJCSRzZXAuJ1gtTWFpbGVyOiBUZXh0cGF0dGVybiAobWVt X2Zvcm0pJy4KCQkkc2VwLidYLU9yaWdpbmF0aW5nLUlQOiAnLm1lbV9mb3JtX3N0cmlwKCgh ZW1wdHkoJF9TRVJWRVJbJ0hUVFBfWF9GT1JXQVJERURfRk9SJ10pID8gJF9TRVJWRVJbJ0hU VFBfWF9GT1JXQVJERURfRk9SJ10uJyB2aWEgJyA6ICcnKS4kX1NFUlZFUlsnUkVNT1RFX0FE RFInXSkuCgkJJHNlcC4nQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdCcuCgkJJHNl cC4nQ29udGVudC1UeXBlOiAnLiRjb250ZW50X3R5cGUuJzsgY2hhcnNldD0iJy4kY2hhcnNl dC4nIic7CgoJcmV0dXJuIG1haWwoJHRvLCAkc3ViamVjdCwgJG1zZywgJGhlYWRlcnMpOwp9 CgpmdW5jdGlvbiBtZW1fZm9ybV9tYWlsaGVhZGVyKCRzdHJpbmcsICR0eXBlKQp7CglnbG9i YWwgJHByZWZzOwoKCWlmICghc3Ryc3RyKCRzdHJpbmcsJz0/JykgYW5kICFwcmVnX21hdGNo KCcvW1x4MDAtXHgxRlx4N0YtXHhGRl0vJywgJHN0cmluZykpIHsKCQlpZiAoInBocmFzZSIg PT0gJHR5cGUpIHsKCQkJaWYgKHByZWdfbWF0Y2goJy9bXVsoKTw+QCw7OiIuXHg1Q10vJywg JHN0cmluZykpIHsKCQkJCSRzdHJpbmcgPSAnIicuIHN0cnRyKCRzdHJpbmcsIGFycmF5KCJc XCIgPT4gIlxcXFwiLCAnIicgPT4gJ1wiJykpIC4gJyInOwoJCQl9CgkJfQoJCWVsc2VpZiAo InRleHQiICE9ICR0eXBlKSB7CgkJCXRyaWdnZXJfZXJyb3IoJ1Vua25vd24gZW5jb2RlX21h aWxoZWFkZXIgdHlwZScsIEVfVVNFUl9XQVJOSU5HKTsKCQl9CgkJcmV0dXJuICRzdHJpbmc7 Cgl9CglpZiAoJHByZWZzWydvdmVycmlkZV9lbWFpbGNoYXJzZXQnXSkgewoJCSRzdGFydCA9 ICc9P0lTTy04ODU5LTE/Qj8nOwoJCSRwY3JlICA9ICcvLnsxLDQyfS9zJzsKCX0KCWVsc2Ug ewoJCSRzdGFydCA9ICc9P1VURi04P0I/JzsKCQkkcGNyZSAgPSAnLy57MSw0NX0oPz1bXHgw MC1ceDdGXHhDMC1ceEZGXXwkKS9zJzsKCX0KCSRlbmQgPSAnPz0nOwoJJHNlcCA9IGlzX3dp bmRvd3MoKSA/ICJcclxuIiA6ICJcbiI7CglwcmVnX21hdGNoX2FsbCgkcGNyZSwgJHN0cmlu ZywgJG1hdGNoZXMpOwoJcmV0dXJuICRzdGFydCAuIGpvaW4oJGVuZC4kc2VwLicgJy4kc3Rh cnQsIGFycmF5X21hcCgnYmFzZTY0X2VuY29kZScsJG1hdGNoZXNbMF0pKSAuICRlbmQ7Cn0K CmZ1bmN0aW9uIG1lbV9mb3JtX3N0cmlwKCRzdHIsICRoZWFkZXIgPSBUUlVFKSB7CglpZiAo JGhlYWRlcikgJHN0ciA9IHN0cmlwX3JuKCRzdHIpOwoJcmV0dXJuIHByZWdfcmVwbGFjZSgn L1tceDAwXS8nLCAnICcsICRzdHIpOwp9CgovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLwovLyBTcGFtIEV2YWx1YXRvcgpjbGFzcyBtZW1fZm9ybV9l dmFsdWF0aW9uCnsKCXZhciAkc3RhdHVzOwoKCWZ1bmN0aW9uIG1lbV9mb3JtX2V2YWx1YXRp b24oKSB7CgkJJHRoaXMtPnN0YXR1cyA9IDA7Cgl9CgoJZnVuY3Rpb24gYWRkX3N0YXR1cygk cmF0aW5nPS0xKSB7CgkJJHRoaXMtPnN0YXR1cyArPSAkcmF0aW5nOwoJfQoKCWZ1bmN0aW9u IGdldF9zdGF0dXMoKSB7CgkJcmV0dXJuICR0aGlzLT5zdGF0dXM7Cgl9CgoJZnVuY3Rpb24g aXNfc3BhbSgpIHsKCQlyZXR1cm4gKCR0aGlzLT5zdGF0dXMgPCAwKTsKCX0KfQoKZnVuY3Rp b24gJmdldF9tZW1fZm9ybV9ldmFsdWF0b3IoKQp7CglzdGF0aWMgJGluc3RhbmNlOwoKCWlm KCFpc3NldCgkaW5zdGFuY2UpKSB7CgkJJGluc3RhbmNlID0gbmV3IG1lbV9mb3JtX2V2YWx1 YXRpb24oKTsKCX0KCXJldHVybiAkaW5zdGFuY2U7Cn0KIjtzOjg6ImhlbHBfcmF3IjtzOjE4 NTQ4OiJoMSh0aXRsZSkuIG1lbV9mb3JtIHBsdWdpbgoKaDIoc2VjdGlvbiBzdW1tYXJ5KS4g U3VtbWFyeQoKcC4gVGhpcyBwbHVnaW4gcHJvdmlkZXMgSFRNTCBmb3JtIGNhcGFiaWxpdGll cyBmb3Igb3RoZXIgcGx1Z2lucy4gVGhpcyBhbGxvd3MgZm9yIGNvbnNpc3RlbnQgZm9ybSB0 YWdzIGFuZCBiZWhhdmlvcnMsIHdoaWxlIHJlZHVjaW5nIG92ZXJhbGwgcGx1Z2luIHNpemUg YW5kIGRldmVsb3BtZW50IHRpbWUuCgpoMihzZWN0aW9uIGNvbnRhY3QpLiBBdXRob3IgQ29u dGFjdAoKIk1pY2hhZWwgTWFuZnJlIjptYWlsdG86bW1hbmZyZUBnbWFpbC5jb20/c3ViamVj dD1UZXh0cGF0dGVybiUyMG1lbV9mb3JtJTIwcGx1Z2luCiJodHRwOi8vbWFuZnJlLm5ldCI6 aHR0cDovL21hbmZyZS5uZXQKCmgyKHNlY3Rpb24gbGljZW5zZSkuIExpY2Vuc2UKCnAuIFRo aXMgcGx1Z2luIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSAiR1BMdjIiOmh0dHA6Ly93d3cuZnNm Lm9yZy9saWNlbnNpbmcvbGljZW5zZXMvaW5mby9HUEx2Mi5odG1sLgoKaDIoc2VjdGlvbiB0 YWdzKS4gVGFncwoKKiAibWVtX2Zvcm0iOiNtZW1fZm9ybQoqICJtZW1fZm9ybV9jaGVja2Jv eCI6I21lbV9mb3JtX2NoZWNrYm94CiogIm1lbV9mb3JtX2VtYWlsIjojbWVtX2Zvcm1fZW1h aWwKKiAibWVtX2Zvcm1fZmlsZSI6I21lbV9mb3JtX2ZpbGUKKiAibWVtX2Zvcm1faGlkZGVu IjojbWVtX2Zvcm1faGlkZGVuCiogIm1lbV9mb3JtX3JhZGlvIjojbWVtX2Zvcm1fcmFkaW8K KiAibWVtX2Zvcm1fc2VjcmV0IjojbWVtX2Zvcm1fc2VjcmV0CiogIm1lbV9mb3JtX3NlbGVj dCI6I21lbV9mb3JtX3NlbGVjdAoqICJtZW1fZm9ybV9zZWxlY3RfY2F0ZWdvcnkiOiNtZW1f Zm9ybV9zZWxlY3RfY2F0ZWdvcnkKKiAibWVtX2Zvcm1fc2VsZWN0X3NlY3Rpb24iOiNtZW1f Zm9ybV9zZWxlY3Rfc2VjdGlvbgoqICJtZW1fZm9ybV9zZXJ2ZXJpbmZvIjojbWVtX2Zvcm1f c2VydmVyaW5mbwoqICJtZW1fZm9ybV9zdWJtaXQiOiNtZW1fZm9ybV9zdWJtaXQKKiAibWVt X2Zvcm1fdGV4dCI6I21lbV9mb3JtX3RleHQKKiAibWVtX2Zvcm1fdGV4dGFyZWEiOiNtZW1f Zm9ybV90ZXh0YXJlYQoqICJtZW1fZm9ybV92YWx1ZSI6I21lbV9mb3JtX3ZhbHVlCgoKaDMo dGFnI21lbV9mb3JtKS4gbWVtX2Zvcm0KCnAodGFnLXN1bW1hcnkpLiBUaGlzIHRhZyB3aWxs IGNyZWF0ZSBhbiBIVE1MIGZvcm0gYW5kIGNvbnRhaW5zIGFsbCBvZiB0aGUgcHJvY2Vzc2lu ZyBhbmQgdmFsaWRhdGlvbi4KCiooYXR0cykgJShhdHRzLW5hbWUpZm9ybSUgJShhdHRzLXR5 cGUpc3RyaW5nJSBOYW1lIG9mIGEgZm9ybSB0aGF0IHdpbGwgYmUgcGFyc2VkIHRvIGRpc3Bs YXkgdGhlIGZvcm0uCiogJShhdHRzLW5hbWUpdGhhbmtzX2Zvcm0lICUoYXR0cy10eXBlKXN0 cmluZyUgTmFtZSBvZiBhIGZvcm0gdGhhdCB3aWxsIGJlIHBhcnNlZCB1cG9uIHN1Y2Nlc3Nm dWwgZm9ybSBzdWJtaXNzaW9uLgoqICUoYXR0cy1uYW1lKWxhYmVsJSAlKGF0dHMtdHlwZSlz dHJpbmclIEFjY2Vzc2libGUgbmFtZSBmb3IgdGhlIGZvcm0uCiogJShhdHRzLW5hbWUgcmVx dWlyZWQpdHlwZSUgJShhdHRzLXR5cGUpc3RyaW5nJSBOYW1lIG9mIHRoZSBmb3JtIHRvIGlk ZW50aWZ5IGl0c2VsZiB0byBib3VuZCBwbHVnaW4uCiogJShhdHRzLW5hbWUpdGhhbmtzJSAl KGF0dHMtdHlwZSlzdHJpbmclIE1lc3NhZ2UgdG8gZGlzcGxheSB0byB1c2VyIHVwb24gc3Vj Y2Vzc2Z1bCBmb3JtIHN1Ym1pc3Npb24uCiogJShhdHRzLW5hbWUpcmVkaXJlY3QlICUoYXR0 cy10eXBlKXVybCUgVVJMIHRvIHJlZGlyZWN0IHVwb24gc3VjY2Vzc2Z1bCBmb3JtIHN1Ym1p c3Npb24uIE92ZXJyaWRlcyAidGhhbmtzIiBhbmQgInRoYW5rc19mb3JtIi4KKiAlKGF0dHMt bmFtZSlyZWRpcmVjdF9mb3JtJSAlKGF0dHMtdHlwZSlzdHJpbmclIE5hbWUgb2YgYSBmb3Jt IHRoYXQgd2lsbCBiZSBwYXJzZWQgYXMgZGlzcGxheWVkIHRvIHRoZSB1c2VyIG9uIGEgcmVk aXJlY3QuIFRoZSBzdHJpbmcgIl97dXJpfV8iIHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUg cmVkaXJlY3QgdXJsLgoqICUoYXR0cy1uYW1lKWVuY3R5cGUlICUoYXR0cy10eXBlKXN0cmlu ZyUgSFRNTCBlbmNvZGluZyB0eXBlIHVzZWQgd2hlbiB0aGUgZm9ybSBpcyBzdWJtaXR0ZWQu IEBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIkAgaXMgcmVxdWlyZWQgd2hlbiB1c2lu ZyBtZW1fZm9ybV9maWxlLgoKCmgzKHRhZyNtZW1fZm9ybV9jaGVja2JveCkuIG1lbV9mb3Jt X2NoZWNrYm94CgpwKHRhZy1zdW1tYXJ5KS4gVGhpcyB3aWxsIG91dHB1dCBhbiBIVE1MIGNo ZWNrYm94IGZpZWxkLgoKKihhdHRzKSAlKGF0dHMtbmFtZSlicmVhayUgJShhdHRzLXR5cGUp c3RyaW5nJSBTZXBhcmF0b3IgYmV0d2VlbiBsYWJlbCB0YWcgYW5kIGlucHV0IHRhZy4KKiAl KGF0dHMtbmFtZSljaGVja2VkJSAlKGF0dHMtdHlwZSlpbnQlIElzIHRoaXMgYm94IGNoZWNr ZWQuIERlZmF1bHQgIjAiLgoqICUoYXR0cy1uYW1lKWxhYmVsJSAlKGF0dHMtdHlwZSlzdHJp bmclIEZyaWVuZGx5IG5hbWUgZm9yIHRoZSBpbnB1dCBmaWVsZC4gSWYgc2V0LCB0aGlzIHdp bGwgb3V0cHV0IGFuIEhUTUwgPT08bGFiZWw+PT0gdGFnIGxpbmtlZCB0byB0aGUgaW5wdXQg ZmllbGQuCiogJShhdHRzLW5hbWUpbmFtZSUgJShhdHRzLXR5cGUpc3RyaW5nJSBJbnB1dCBm aWVsZCBuYW1lLgoqICUoYXR0cy1uYW1lKXJlcXVpcmVkJSAlKGF0dHMtdHlwZSlpbnQlIFNw ZWNpZmllcyBpZiBpbnB1dCBpcyByZXF1aXJlZC4KKiAlKGF0dHMtbmFtZSljbGFzcyUgJShh dHRzLXR5cGUpc3RyaW5nJSBDU1MgY2xhc3MgbmFtZS4KCmgzKHRhZyNtZW1fZm9ybV9lbWFp bCkuIG1lbV9mb3JtX2VtYWlsCgpwKHRhZy1zdW1tYXJ5KS4gVGhpcyB3aWxsIG91dHB1dCBh biBIVE1MIHRleHQgaW5wdXQgZmllbGQgYW5kIHZhbGlkYXRlcyB0aGUgc3VibWl0dGVkIHZh bHVlIGFzIGFuIGVtYWlsIGFkZHJlc3MuCgoqKGF0dHMpICUoYXR0cy1uYW1lKWJyZWFrJSAl KGF0dHMtdHlwZSlzdHJpbmclIFNlcGFyYXRvciBiZXR3ZWVuIGxhYmVsIHRhZyBhbmQgaW5w dXQgdGFnLgoqICUoYXR0cy1uYW1lKWxhYmVsJSAlKGF0dHMtdHlwZSlzdHJpbmclIEZyaWVu ZGx5IG5hbWUgZm9yIHRoZSBpbnB1dCBmaWVsZC4gSWYgc2V0LCB0aGlzIHdpbGwgb3V0cHV0 IGFuIEhUTUwgPT08bGFiZWw+PT0gdGFnIGxpbmtlZCB0byB0aGUgaW5wdXQgZmllbGQuCiog JShhdHRzLW5hbWUpbmFtZSUgJShhdHRzLXR5cGUpc3RyaW5nJSBJbnB1dCBmaWVsZCBuYW1l LgoqICUoYXR0cy1uYW1lKXJlcXVpcmVkJSAlKGF0dHMtdHlwZSlpbnQlIFNwZWNpZmllcyBp ZiBpbnB1dCBpcyByZXF1aXJlZC4KKiAlKGF0dHMtbmFtZSljbGFzcyUgJShhdHRzLXR5cGUp c3RyaW5nJSBDU1MgY2xhc3MgbmFtZS4KKiAlKGF0dHMtbmFtZSlkZWZhdWx0JSAlKGF0dHMt dHlwZSlzdHJpbmclIFRoZSBkZWZhdWx0IHZhbHVlLgoqICUoYXR0cy1uYW1lKW1heCUgJShh dHRzLXR5cGUpaW50JSBNYXggY2hhcmFjdGVyIGxlbmd0aC4KKiAlKGF0dHMtbmFtZSltaW4l ICUoYXR0cy10eXBlKWludCUgTWluIGNoYXJhY3RlciBsZW5ndGguCiogJShhdHRzLW5hbWUp c2l6ZSUgJShhdHRzLXR5cGUpaW50JSBTaXplIG9mIGlucHV0IGZpZWxkLgoKaDModGFnI21l bV9mb3JtX2ZpbGUpLiBtZW1fZm9ybV9maWxlCgorcCh0YWctc3VtbWFyeSkuIFRoaXMgd2ls bCBvdXRwdXQgYW4gSFRNTCBmaWxlIGlucHV0IGZpZWxkLiBZb3UgbXVzdCBhZGQgdGhlIEBl bmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIkAgYXR0cmlidXRlIHRvIHlvdXIgZW5jbG9z aW5nIG1lbV9mb3JtIGZvciB0aGlzIHRvIHdvcmsuCgoqKGF0dHMpICUoYXR0cy1uYW1lKWxh YmVsJSAlKGF0dHMtdHlwZSlzdHJpbmclIEZyaWVuZGx5IG5hbWUgZm9yIHRoZSBpbnB1dCBm aWVsZC4gSWYgc2V0LCB0aGlzIHdpbGwgb3V0cHV0IGFuIEhUTUwgPT08bGFiZWw+PT0gdGFn IGxpbmtlZCB0byB0aGUgaW5wdXQgZmllbGQuCiogJShhdHRzLW5hbWUpbmFtZSUgJShhdHRz LXR5cGUpc3RyaW5nJSBJbnB1dCBmaWVsZCBuYW1lLgoqICUoYXR0cy1uYW1lKWNsYXNzJSAl KGF0dHMtdHlwZSlzdHJpbmclIENTUyBjbGFzcyBuYW1lLgoqICUoYXR0cy1uYW1lKWJyZWFr JSAlKGF0dHMtdHlwZSlzdHJpbmclIFNlcGFyYXRvciBiZXR3ZWVuIGxhYmVsIHRhZyBhbmQg aW5wdXQgdGFnLgoqICUoYXR0cy1uYW1lKW5vX3JlcGxhY2UlICUoYXR0cy10eXBlKWludCUg U3BlY2lmaWVzIHdoZXRoZXIgYSB1c2VyIGNhbiB1cGxvYWQgYW5vdGhlciBmaWxlIGFuZCBy ZXBsYWNlIHRoZSBleGlzdGluZyBmaWxlIHRoYXQgd2lsbCBiZSBzdWJtaXR0ZWQgb24gc3Vj Y2Vzc2Z1bCBjb21wbGV0aW9uIG9mIHRoZSBmb3JtLiBJZiAiMSIsIHRoZSBmaWxlIGlucHV0 IGZpZWxkIHdpbGwgYmUgcmVwbGFjZWQgd2l0aCBkZXRhaWxzIGFib3V0IHRoZSBhbHJlYWR5 IHVwbG9hZGVkIGZpbGUuCiogJShhdHRzLW5hbWUpcmVxdWlyZWQlICUoYXR0cy10eXBlKWlu dCUgU3BlY2lmaWVzIGlmIGlucHV0IGlzIHJlcXVpcmVkLgoqICUoYXR0cy1uYW1lKXNpemUl ICUoYXR0cy10eXBlKWludCUgU2l6ZSBvZiBpbnB1dCBmaWVsZC4KKiAlKGF0dHMtbmFtZSlt YXhfZmlsZV9zaXplJSAlKGF0dHMtdHlwZSlpbnQlIE1heGltdW0gc2l6ZSBmb3IgdGhlIHVw bG9hZGVkIGZpbGUuIENoZWNrZWQgc2VydmVyLXNpZGUuCiogJShhdHRzLW5hbWUpYWNjZXB0 JSAlKGF0dHMtdHlwZSlzdHJpbmclIFRoZSBIVE1MIGZpbGUgaW5wdXQgZmllbGQncyAiYWNj ZXB0IiBhcmd1bWVudCB0aGF0IHNwZWNpZmllcyB3aGljaCBmaWxlIHR5cGVzIHRoZSBmaWVs ZCBzaG91bGQgcGVybWl0LgoKaDModGFnI21lbV9mb3JtX2hpZGRlbikuIG1lbV9mb3JtX2hp ZGRlbgoKcCh0YWctc3VtbWFyeSkuIFRoaXMgd2lsbCBvdXRwdXQgYW4gSFRNTCBoaWRkZW4g dGV4dCBpbnB1dCBmaWVsZC4KCiooYXR0cykgJShhdHRzLW5hbWUpbGFiZWwlICUoYXR0cy10 eXBlKXN0cmluZyUgRnJpZW5kbHkgbmFtZSBmb3IgdGhlIGlucHV0IGZpZWxkLiBJZiBzZXQs IHRoaXMgd2lsbCBvdXRwdXQgYW4gSFRNTCA9PTxsYWJlbD49PSB0YWcgbGlua2VkIHRvIHRo ZSBpbnB1dCBmaWVsZC4KKiAlKGF0dHMtbmFtZSluYW1lJSAlKGF0dHMtdHlwZSlzdHJpbmcl IElucHV0IGZpZWxkIG5hbWUuCiogJShhdHRzLW5hbWUpdmFsdWUlICUoYXR0cy10eXBlKXN0 cmluZyUgVGhlIGlucHV0IHZhbHVlLgoqICUoYXR0cy1uYW1lKXJlcXVpcmVkJSAlKGF0dHMt dHlwZSlpbnQlIFNwZWNpZmllcyBpZiBpbnB1dCBpcyByZXF1aXJlZC4KKiAlKGF0dHMtbmFt ZSljbGFzcyUgJShhdHRzLXR5cGUpc3RyaW5nJSBDU1MgY2xhc3MgbmFtZS4KKiAlKGF0dHMt bmFtZSllc2NhcGVfdmFsdWUlICUoYXR0cy10eXBlKWludCUgU2V0IHRvICIwIiB0byBwcmV2 ZW50IGh0bWwgZXNjYXBpbmcgdGhlIHZhbHVlLiBEZWZhdWx0ICIxIi4KCgpoMyh0YWcjbWVt X2Zvcm1fcmFkaW8pLiBtZW1fZm9ybV9yYWRpbwoKcCh0YWctc3VtbWFyeSkuIFRoaXMgd2ls bCBvdXRwdXQgYW4gSFRNTCByYWRpbyBidXR0b24uCgoqKGF0dHMpICUoYXR0cy1uYW1lKWJy ZWFrJSAlKGF0dHMtdHlwZSlzdHJpbmclIFNlcGFyYXRvciBiZXR3ZWVuIGxhYmVsIHRhZyBh bmQgaW5wdXQgdGFnLgoqICUoYXR0cy1uYW1lKWxhYmVsJSAlKGF0dHMtdHlwZSlzdHJpbmcl IEZyaWVuZGx5IG5hbWUgZm9yIHRoZSBpbnB1dCBmaWVsZC4gSWYgc2V0LCB0aGlzIHdpbGwg b3V0cHV0IGFuIEhUTUwgPT08bGFiZWw+PT0gdGFnIGxpbmtlZCB0byB0aGUgaW5wdXQgZmll bGQuCiogJShhdHRzLW5hbWUpbmFtZSUgJShhdHRzLXR5cGUpc3RyaW5nJSBJbnB1dCBmaWVs ZCBuYW1lLgoqICUoYXR0cy1uYW1lKWNsYXNzJSAlKGF0dHMtdHlwZSlzdHJpbmclIENTUyBj bGFzcyBuYW1lLgoqICUoYXR0cy1uYW1lKWdyb3VwJSAlKGF0dHMtdHlwZSlzdHJpbmclIEEg bmFtZSB0aGF0IGlkZW50aWZpZXMgYSBncm91cCBvZiByYWRpbyBidXR0b25zLgoqICUoYXR0 cy1uYW1lKWNoZWNrZWQlICUoYXR0cy10eXBlKWludCUgSXMgdGhpcyBib3ggY2hlY2tlZC4g RGVmYXVsdCAiMCIuCgpoMyh0YWcjbWVtX2Zvcm1fc2VjcmV0KS4gbWVtX2Zvcm1fc2VjcmV0 CgpwKHRhZy1zdW1tYXJ5KS4gVGhpcyB3aWxsIG91dHB1dCBub3RoaW5nIGluIEhUTUwgYW5k IGlzIG1lYW50IHRvIHBhc3MgaW5mb3JtYXRpb24gdG8gdGhlIHN1bWJpdCBoYW5kbGVyIHBs dWdpbnMuCgoqKGF0dHMpICUoYXR0cy1uYW1lKWxhYmVsJSAlKGF0dHMtdHlwZSlzdHJpbmcl IEZyaWVuZGx5IG5hbWUgZm9yIHRoZSBpbnB1dCBmaWVsZC4gSWYgc2V0LCB0aGlzIHdpbGwg b3V0cHV0IGFuIEhUTUwgPT08bGFiZWw+PT0gdGFnIGxpbmtlZCB0byB0aGUgaW5wdXQgZmll bGQuCiogJShhdHRzLW5hbWUpbmFtZSUgJShhdHRzLXR5cGUpc3RyaW5nJSBJbnB1dCBmaWVs ZCBuYW1lLgoqICUoYXR0cy1uYW1lKXZhbHVlJSAlKGF0dHMtdHlwZSlzdHJpbmclIFRoZSBp bnB1dCB2YWx1ZS4KCmgzKHRhZyNtZW1fZm9ybV9zZWxlY3QpLiBtZW1fZm9ybV9zZWxlY3QK CnAodGFnLXN1bW1hcnkpLiBUaGlzIHdpbGwgb3V0cHV0IGFuIEhUTUwgc2VsZWN0IGZpZWxk LgoKKihhdHRzKSAlKGF0dHMtbmFtZSlsYWJlbCUgJShhdHRzLXR5cGUpc3RyaW5nJSBGcmll bmRseSBuYW1lIGZvciB0aGUgaW5wdXQgZmllbGQuIElmIHNldCwgdGhpcyB3aWxsIG91dHB1 dCBhbiBIVE1MID09PGxhYmVsPj09IHRhZyBsaW5rZWQgdG8gdGhlIGlucHV0IGZpZWxkLgoq ICUoYXR0cy1uYW1lKW5hbWUlICUoYXR0cy10eXBlKXN0cmluZyUgSW5wdXQgZmllbGQgbmFt ZS4KKiAlKGF0dHMtbmFtZSlicmVhayUgJShhdHRzLXR5cGUpc3RyaW5nJSBTZXBhcmF0b3Ig YmV0d2VlbiBsYWJlbCB0YWcgYW5kIGlucHV0IHRhZy4KKiAlKGF0dHMtbmFtZSlkZWxpbWl0 ZXIlICUoYXR0cy10eXBlKXN0cmluZyUgTGlzdCBzZXBhcmF0b3IuIERlZmF1bHQgIiwiCiog JShhdHRzLW5hbWUpaXRlbXMlICUoYXR0cy10eXBlKXN0cmluZyUgRGVsaW1pdGVkIGxpc3Qg Y29udGFpbmluZyBhIHNlbGVjdCBsaXN0IGRpc3BsYXkgdmFsdWVzLgoqICUoYXR0cy1uYW1l KXZhbHVlcyUgJShhdHRzLXR5cGUpc3RyaW5nJSBEZWxpbWl0ZWQgbGlzdCBjb250YWluaW5n IGEgc2VsZWN0IGxpc3QgaXRlbSB2YWx1ZXMuCiogJShhdHRzLW5hbWUpcmVxdWlyZWQlICUo YXR0cy10eXBlKWludCUgU3BlY2lmaWVzIGlmIGlucHV0IGlzIHJlcXVpcmVkLgoqICUoYXR0 cy1uYW1lKXNlbGVjdGVkJSAlKGF0dHMtdHlwZSlzdHJpbmclIFRoZSB2YWx1ZSBvZiB0aGUg c2VsZWN0ZWQgaXRlbS4KKiAlKGF0dHMtbmFtZSlmaXJzdCUgJShhdHRzLXR5cGUpc3RyaW5n JSBEaXNwbGF5IHZhbHVlIG9mIHRoZSBmaXJzdCBpdGVtIGluIHRoZSBsaXN0LiBFLmcuICJT ZWxlY3QgYSBTZWN0aW9uIiBvciAiIiBmb3IgYSBibGFuayBvcHRpb24uCiogJShhdHRzLW5h bWUpY2xhc3MlICUoYXR0cy10eXBlKXN0cmluZyUgQ1NTIGNsYXNzIG5hbWUuCiogJShhdHRz LW5hbWUpc2VsZWN0X2xpbWl0JSAlKGF0dHMtdHlwZSlpbnQlIFNwZWNpZmllcyB0aGUgbWF4 aW11bSBudW1iZXIgb2YgaXRlbXMgdGhhdCBtYXkgYmUgc2VsZWN0ZWQuIElmIHNldCB0byBh IHZhbHVlIGdyZWF0ZXIgdGhhbiAxLCBhIG11bHRpc2VsZWN0IHdpbGwgYmUgdXNlZC4gVGhl IHN0b3JlZCB2YWx1ZSB3aWxsIGJlIGFuIGFycmF5LgoqICUoYXR0cy1uYW1lKWFzX2NzdiUg JShhdHRzLXR5cGUpaW50JSBJZiBzZXQgdG8gMSwgdGhlIHZhbHVlIHdpbGwgYmUgc3RvcmVk IGFzIGEgZGVsaW1pdGVkIHN0cmluZyBvZiB2YWx1ZXMgaW5zdGVhZCBvZiBhbiBhcnJheS4g VGhpcyBkb2VzIG5vdGhpbmcgd2hlbiBzZWxlY3RfbGltaXQgaXMgbGVzcyB0aGFuIDIuCgoK aDModGFnI21lbV9mb3JtX2NhdGVnb3J5KS4gbWVtX2Zvcm1fc2VsZWN0X2NhdGVnb3J5Cgpw KHRhZy1zdW1tYXJ5KS4gVGhpcyB3aWxsIG91dHB1dCBhbiBIVE1MIHNlbGVjdCBmaWVsZCBw b3B1bGF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIFRleHRwYXR0ZXJuIGNhdGVnb3JpZXMuCgoq KGF0dHMpICUoYXR0cy1uYW1lKWxhYmVsJSAlKGF0dHMtdHlwZSlzdHJpbmclIEZyaWVuZGx5 IG5hbWUgZm9yIHRoZSBpbnB1dCBmaWVsZC4gSWYgc2V0LCB0aGlzIHdpbGwgb3V0cHV0IGFu IEhUTUwgPT08bGFiZWw+PT0gdGFnIGxpbmtlZCB0byB0aGUgaW5wdXQgZmllbGQuCiogJShh dHRzLW5hbWUpbmFtZSUgJShhdHRzLXR5cGUpc3RyaW5nJSBJbnB1dCBmaWVsZCBuYW1lLgoq ICUoYXR0cy1uYW1lKWJyZWFrJSAlKGF0dHMtdHlwZSlzdHJpbmclIFNlcGFyYXRvciBiZXR3 ZWVuIGxhYmVsIHRhZyBhbmQgaW5wdXQgdGFnLgoqICUoYXR0cy1uYW1lKWRlbGltaXRlciUg JShhdHRzLXR5cGUpc3RyaW5nJSBMaXN0IHNlcGFyYXRvci4gRGVmYXVsdCAiLCIKKiAlKGF0 dHMtbmFtZSlpdGVtcyUgJShhdHRzLXR5cGUpc3RyaW5nJSBEZWxpbWl0ZWQgbGlzdCBjb250 YWluaW5nIGEgc2VsZWN0IGxpc3QgZGlzcGxheSB2YWx1ZXMuCiogJShhdHRzLW5hbWUpdmFs dWVzJSAlKGF0dHMtdHlwZSlzdHJpbmclIERlbGltaXRlZCBsaXN0IGNvbnRhaW5pbmcgYSBz ZWxlY3QgbGlzdCBpdGVtIHZhbHVlcy4KKiAlKGF0dHMtbmFtZSlyZXF1aXJlZCUgJShhdHRz LXR5cGUpaW50JSBTcGVjaWZpZXMgaWYgaW5wdXQgaXMgcmVxdWlyZWQuCiogJShhdHRzLW5h bWUpc2VsZWN0ZWQlICUoYXR0cy10eXBlKXN0cmluZyUgVGhlIHZhbHVlIG9mIHRoZSBzZWxl Y3RlZCBpdGVtLgoqICUoYXR0cy1uYW1lKWZpcnN0JSAlKGF0dHMtdHlwZSlzdHJpbmclIERp c3BsYXkgdmFsdWUgb2YgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGxpc3QuIEUuZy4gIlNlbGVj dCBhIFNlY3Rpb24iIG9yICIiIGZvciBhIGJsYW5rIG9wdGlvbi4KKiAlKGF0dHMtbmFtZSlj bGFzcyUgJShhdHRzLXR5cGUpc3RyaW5nJSBDU1MgY2xhc3MgbmFtZS4KKiAlKGF0dHMtbmFt ZSlleGNsdWRlJSAlKGF0dHMtdHlwZSlzdHJpbmclIExpc3Qgb2YgaXRlbSB2YWx1ZXMgdGhh dCB3aWxsIG5vdCBiZSBpbmNsdWRlZC4KKiAlKGF0dHMtbmFtZSlzb3J0JSAlKGF0dHMtdHlw ZSlzdHJpbmclICBIb3cgd2lsbCB0aGUgbGlzdCB2YWx1ZXMgYmUgc29ydGVkLgoqICUoYXR0 cy1uYW1lKXR5cGUlICUoYXR0cy10eXBlKXN0cmluZyUgQ2F0ZWdvcnkgdHlwZSBuYW1lLiBF LmcuICJhcnRpY2xlIgoKaDModGFnI21lbV9mb3JtX3NlY3Rpb24pLiBtZW1fZm9ybV9zZWxl Y3Rfc2VjdGlvbgoKcCh0YWctc3VtbWFyeSkuIFRoaXMgd2lsbCBvdXRwdXQgYW4gSFRNTCBz ZWxlY3QgZmllbGQgcG9wdWxhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBUZXh0cGF0dGVybiBz ZWN0aW9ucy4KCiooYXR0cykgJShhdHRzLW5hbWUpbGFiZWwlICUoYXR0cy10eXBlKXN0cmlu ZyUgRnJpZW5kbHkgbmFtZSBmb3IgdGhlIGlucHV0IGZpZWxkLiBJZiBzZXQsIHRoaXMgd2ls bCBvdXRwdXQgYW4gSFRNTCA9PTxsYWJlbD49PSB0YWcgbGlua2VkIHRvIHRoZSBpbnB1dCBm aWVsZC4KKiAlKGF0dHMtbmFtZSluYW1lJSAlKGF0dHMtdHlwZSlzdHJpbmclIElucHV0IGZp ZWxkIG5hbWUuCiogJShhdHRzLW5hbWUpYnJlYWslICUoYXR0cy10eXBlKXN0cmluZyUgU2Vw YXJhdG9yIGJldHdlZW4gbGFiZWwgdGFnIGFuZCBpbnB1dCB0YWcuCiogJShhdHRzLW5hbWUp ZGVsaW1pdGVyJSAlKGF0dHMtdHlwZSlzdHJpbmclIExpc3Qgc2VwYXJhdG9yLiBEZWZhdWx0 ICIsIgoqICUoYXR0cy1uYW1lKWl0ZW1zJSAlKGF0dHMtdHlwZSlzdHJpbmclIERlbGltaXRl ZCBsaXN0IGNvbnRhaW5pbmcgYSBzZWxlY3QgbGlzdCBkaXNwbGF5IHZhbHVlcy4KKiAlKGF0 dHMtbmFtZSl2YWx1ZXMlICUoYXR0cy10eXBlKXN0cmluZyUgRGVsaW1pdGVkIGxpc3QgY29u dGFpbmluZyBhIHNlbGVjdCBsaXN0IGl0ZW0gdmFsdWVzLgoqICUoYXR0cy1uYW1lKXJlcXVp cmVkJSAlKGF0dHMtdHlwZSlpbnQlIFNwZWNpZmllcyBpZiBpbnB1dCBpcyByZXF1aXJlZC4K KiAlKGF0dHMtbmFtZSlzZWxlY3RlZCUgJShhdHRzLXR5cGUpc3RyaW5nJSBUaGUgdmFsdWUg b2YgdGhlIHNlbGVjdGVkIGl0ZW0uCiogJShhdHRzLW5hbWUpZmlyc3QlICUoYXR0cy10eXBl KXN0cmluZyUgRGlzcGxheSB2YWx1ZSBvZiB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgbGlzdC4g RS5nLiAiU2VsZWN0IGEgU2VjdGlvbiIgb3IgIiIgZm9yIGEgYmxhbmsgb3B0aW9uLgoqICUo YXR0cy1uYW1lKWNsYXNzJSAlKGF0dHMtdHlwZSlzdHJpbmclIENTUyBjbGFzcyBuYW1lLgoq ICUoYXR0cy1uYW1lKWV4Y2x1ZGUlICUoYXR0cy10eXBlKXN0cmluZyUgTGlzdCBvZiBpdGVt IHZhbHVlcyB0aGF0IHdpbGwgbm90IGJlIGluY2x1ZGVkLgoqICUoYXR0cy1uYW1lKXNvcnQl ICUoYXR0cy10eXBlKXN0cmluZyUgIEhvdyB3aWxsIHRoZSBsaXN0IHZhbHVlcyBiZSBzb3J0 ZWQuCgpoMyh0YWcjbWVtX2Zvcm1fc2VydmVyaW5mbykuIG1lbV9mb3JtX3NlcnZlcmluZm8K CnAodGFnLXN1bW1hcnkpLiBUaGlzIHdpbGwgb3V0cHV0IG5vIEhUTUwgYW5kIGlzIHVzZWQg dG8gcGFzcyBzZXJ2ZXIgaW5mb3JtYXRpb24gdG8gdGhlIHBsdWdpbiBoYW5kbGluZyB0aGUg Zm9ybSBzdWJtaXNzaW9uLgoKKihhdHRzKSAlKGF0dHMtbmFtZSlsYWJlbCUgJShhdHRzLXR5 cGUpc3RyaW5nJSBGcmllbmRseSBuYW1lIGZvciB0aGUgaW5wdXQgZmllbGQuIElmIHNldCwg dGhpcyB3aWxsIG91dHB1dCBhbiBIVE1MID09PGxhYmVsPj09IHRhZyBsaW5rZWQgdG8gdGhl IGlucHV0IGZpZWxkLgoqICUoYXR0cy1uYW1lKW5hbWUlICUoYXR0cy10eXBlKXN0cmluZyUg SW5wdXQgZmllbGQgbmFtZS4KCmgzKHRhZyNtZW1fZm9ybV9zdWJtaXQpLiBtZW1fZm9ybV9z dWJtaXQKCnAodGFnLXN1bW1hcnkpLiBUaGlzIHdpbGwgb3V0cHV0IGVpdGhlciBhbiBIVE1M IHN1Ym1pdCBpbnB1dCBmaWVsZCBvciBhbiBIVE1MIGJ1dHRvbi4KCiooYXR0cykgJShhdHRz LW5hbWUpbGFiZWwlICUoYXR0cy10eXBlKXN0cmluZyUgRnJpZW5kbHkgbmFtZSBmb3IgdGhl IGlucHV0IGZpZWxkLiBJZiBzZXQsIHRoaXMgd2lsbCBvdXRwdXQgYW4gSFRNTCA9PTxsYWJl bD49PSB0YWcgbGlua2VkIHRvIHRoZSBpbnB1dCBmaWVsZC4KKiAlKGF0dHMtbmFtZSluYW1l JSAlKGF0dHMtdHlwZSlzdHJpbmclIElucHV0IGZpZWxkIG5hbWUuCiogJShhdHRzLW5hbWUp Y2xhc3MlICUoYXR0cy10eXBlKXN0cmluZyUgQ1NTIGNsYXNzIG5hbWUuCiogJShhdHRzLW5h bWUpYnV0dG9uJSAlKGF0dHMtdHlwZSlpbnQlIElmICIxIiwgYW4gaHRtbCBidXR0b24gdGFn IHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIGFuIGlucHV0IHRhZy4KCmgzKHRhZyNtZW1fZm9y bV90ZXh0KS4gbWVtX2Zvcm1fdGV4dAoKcCh0YWctc3VtbWFyeSkuIFRoaXMgd2lsbCBvdXRw dXQgYW4gSFRNTCB0ZXh0IGlucHV0IGZpZWxkLgoKKihhdHRzKSAlKGF0dHMtbmFtZSlsYWJl bCUgJShhdHRzLXR5cGUpc3RyaW5nJSBGcmllbmRseSBuYW1lIGZvciB0aGUgaW5wdXQgZmll bGQuIElmIHNldCwgdGhpcyB3aWxsIG91dHB1dCBhbiBIVE1MID09PGxhYmVsPj09IHRhZyBs aW5rZWQgdG8gdGhlIGlucHV0IGZpZWxkLgoqICUoYXR0cy1uYW1lKW5hbWUlICUoYXR0cy10 eXBlKXN0cmluZyUgSW5wdXQgZmllbGQgbmFtZS4KKiAlKGF0dHMtbmFtZSljbGFzcyUgJShh dHRzLXR5cGUpc3RyaW5nJSBDU1MgY2xhc3MgbmFtZS4KKiAlKGF0dHMtbmFtZSlicmVhayUg JShhdHRzLXR5cGUpc3RyaW5nJSBTZXBhcmF0b3IgYmV0d2VlbiBsYWJlbCB0YWcgYW5kIGlu cHV0IHRhZy4KKiAlKGF0dHMtbmFtZSlkZWZhdWx0JSAlKGF0dHMtdHlwZSlzdHJpbmclIFRo ZSBkZWZhdWx0IHZhbHVlLgoqICUoYXR0cy1uYW1lKWZvcm1hdCUgJShhdHRzLXR5cGUpc3Ry aW5nJSBBIHJlZ2V4IHBhdHRlcm4gdGhhdCB3aWxsIGJlIG1hdGNoZWQgYWdhaW5zdCB0aGUg aW5wdXQgdmFsdWUuIFlvdSBtdXN0IGVzY2FwZSBhbGwgYmFja3NsYXNoZXMgJ1wnLiBFLmcg Ii9cXGQvIiBpcyBhIHNpbmdsZSBkaWdpdC4KKiAlKGF0dHMtbmFtZSlleGFtcGxlJSAlKGF0 dHMtdHlwZSlzdHJpbmclIEFuIGV4YW1wbGUgb2YgYSBjb3JyZWN0bHkgZm9ybWF0dGVkIGlu cHV0IHZhbHVlLgoqICUoYXR0cy1uYW1lKXBhc3N3b3JkJSAlKGF0dHMtdHlwZSlpbnQlIFNw ZWNpZmllcyBpZiB0aGUgaW5wdXQgZmllbGQgaXMgYSBwYXNzd29yZCBmaWVsZC4KKiAlKGF0 dHMtbmFtZSlyZXF1aXJlZCUgJShhdHRzLXR5cGUpaW50JSBTcGVjaWZpZXMgaWYgaW5wdXQg aXMgcmVxdWlyZWQuCiogJShhdHRzLW5hbWUpbWF4JSAlKGF0dHMtdHlwZSlpbnQlIE1heCBj aGFyYWN0ZXIgbGVuZ3RoLgoqICUoYXR0cy1uYW1lKW1pbiUgJShhdHRzLXR5cGUpaW50JSBN aW4gY2hhcmFjdGVyIGxlbmd0aC4KKiAlKGF0dHMtbmFtZSlzaXplJSAlKGF0dHMtdHlwZSlp bnQlIFNpemUgb2YgaW5wdXQgZmllbGQuCiogJShhdHRzLW5hbWUpZXNjYXBlX3ZhbHVlJSAl KGF0dHMtdHlwZSlpbnQlIFNldCB0byAiMCIgdG8gcHJldmVudCBodG1sIGVzY2FwaW5nIHRo ZSB2YWx1ZS4gRGVmYXVsdCAiMSIuCgpoMyh0YWcjbWVtX2Zvcm1fdGV4dGFyZWEpLiBtZW1f Zm9ybV90ZXh0YXJlYQoKcCh0YWctc3VtbWFyeSkuIFRoaXMgd2lsbCBvdXRwdXQgYW4gSFRN TCB0ZXh0YXJlYS4KCiooYXR0cykgJShhdHRzLW5hbWUpbGFiZWwlICUoYXR0cy10eXBlKXN0 cmluZyUgRnJpZW5kbHkgbmFtZSBmb3IgdGhlIGlucHV0IGZpZWxkLiBJZiBzZXQsIHRoaXMg d2lsbCBvdXRwdXQgYW4gSFRNTCA9PTxsYWJlbD49PSB0YWcgbGlua2VkIHRvIHRoZSBpbnB1 dCBmaWVsZC4KKiAlKGF0dHMtbmFtZSluYW1lJSAlKGF0dHMtdHlwZSlzdHJpbmclIElucHV0 IGZpZWxkIG5hbWUuCiogJShhdHRzLW5hbWUpY2xhc3MlICUoYXR0cy10eXBlKXN0cmluZyUg Q1NTIGNsYXNzIG5hbWUuCiogJShhdHRzLW5hbWUpYnJlYWslICUoYXR0cy10eXBlKXN0cmlu ZyUgU2VwYXJhdG9yIGJldHdlZW4gbGFiZWwgdGFnIGFuZCBpbnB1dCB0YWcuCiogJShhdHRz LW5hbWUpZGVmYXVsdCUgJShhdHRzLXR5cGUpc3RyaW5nJSBUaGUgZGVmYXVsdCB2YWx1ZS4K KiAlKGF0dHMtbmFtZSltYXglICUoYXR0cy10eXBlKWludCUgTWF4IGNoYXJhY3RlciBsZW5n dGguCiogJShhdHRzLW5hbWUpbWluJSAlKGF0dHMtdHlwZSlpbnQlIE1pbiBjaGFyYWN0ZXIg bGVuZ3RoLgoqICUoYXR0cy1uYW1lKXJlcXVpcmVkJSAlKGF0dHMtdHlwZSlpbnQlIFNwZWNp ZmllcyBpZiBpbnB1dCBpcyByZXF1aXJlZC4KKiAlKGF0dHMtbmFtZSlyb3dzJSAlKGF0dHMt dHlwZSlpbnQlIE51bWJlciBvZiByb3dzIGluIHRoZSB0ZXh0YXJlYS4KKiAlKGF0dHMtbmFt ZSljb2xzJSAlKGF0dHMtdHlwZSlpbnQlIE51bWJlciBvZiBjb2x1bW5zIGluIHRoZSB0ZXh0 YXJlYS4KKiAlKGF0dHMtbmFtZSllc2NhcGVfdmFsdWUlICUoYXR0cy10eXBlKWludCUgU2V0 IHRvICIwIiB0byBwcmV2ZW50IGh0bWwgZXNjYXBpbmcgdGhlIHZhbHVlLiBEZWZhdWx0ICIx Ii4KCmgzKHRhZyNtZW1fZm9ybV92YWx1ZSkuIG1lbV9mb3JtX3ZhbHVlCgpwKHRhZy1zdW1t YXJ5KS4gVGhpcyB3aWxsIG91dHB1dCB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGEgZm9y bSBmaWVsZC4gVXNlZnVsIHRvIG1peCBIVE1MIGlucHV0IGZpZWxkcyB3aXRoIG1lbV9mb3Jt LgoKKihhdHRzKSAlKGF0dHMtbmFtZSlpZCUgJShhdHRzLXR5cGUpc3RyaW5nJSBJRCBmb3Ig b3V0cHV0IHdyYXAgdGFnLgoqICUoYXR0cy1uYW1lKWNsYXNzJSAlKGF0dHMtdHlwZSlzdHJp bmclIENTUyBjbGFzcyBuYW1lLgoqICUoYXR0cy1uYW1lKWNsYXNzJSAlKGF0dHMtdHlwZSlz dHJpbmclIENTUyBjbGFzcy4KKiAlKGF0dHMtbmFtZSl3cmFwdGFnJSAlKGF0dHMtdHlwZSlz dHJpbmclIEhUTUwgdGFnIHRvIHdyYXAgYXJvdW5kIHRoZSB2YWx1ZS4KKiAlKGF0dHMtbmFt ZSlhdHRyaWJ1dGVzJSAlKGF0dHMtdHlwZSlzdHJpbmclIEFkZGl0aW9uYWwgSFRNTCB0YWcg YXR0cmlidXRlcyB0aGF0IHNob3VsZCBiZSBwYXNzZWQgdG8gdGhlIG91dHB1dCB0YWcuCgpo MihzZWN0aW9uKS4gRXhwb3NlZCBGdW5jdGlvbnMKCmgzKHRhZykuIG1lbV9mb3JtX21haWwK CnAodGFnLXN1bW1hcnkpLiBUaGlzIHdpbGwgc2VuZCBhbiBlbWFpbCBtZXNzYWdlLgoKKihh dHRzKSAlKGF0dHMtbmFtZSlSZXR1cm4gVmFsdWUlICUoYXR0cy10eXBlKWJvb2wlIFJldHVy bnMgdHJ1ZSBvciBmYWxzZSwgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBlbWFpbCB3YXMgc3Vj Y2Vzc2Z1bGx5IGdpdmVuIHRvIHRoZSBtYWlsIHN5c3RlbS4gVGhpcyBkb2VzIG5vdCBpbmRp Y2F0ZSB0aGUgdmFsaWRpdHkgb2YgdGhlIGVtYWlsIGFkZHJlc3Mgb3IgdGhhdCB0aGUgcmVj aXBpZW50IGFjdHVhbGx5IHJlY2VpdmVkIHRoZSBlbWFpbC4KKiAlKGF0dHMtbmFtZSlmcm9t JSAlKGF0dHMtdHlwZSlzdHJpbmclIFRoZSBGcm9tIGVtYWlsIGFkZHJlc3MuCiogJShhdHRz LW5hbWUpcmVwbHklICUoYXR0cy10eXBlKXN0cmluZyUgVGhlIFJlcGx5IFRvIGVtYWlsIGFk ZHJlc3MuCiogJShhdHRzLW5hbWUpdG8lICUoYXR0cy10eXBlKXN0cmluZyUgVGhlIFRvIGVt YWlsIGFkZHJlc3MoZXMpLgoqICUoYXR0cy1uYW1lKXN1YmplY3QlICUoYXR0cy10eXBlKXN0 cmluZyUgVGhlIGVtYWlsJ3MgU3ViamVjdC4KKiAlKGF0dHMtbmFtZSltc2clICUoYXR0cy10 eXBlKXN0cmluZyUgVGhlIGVtYWlsIG1lc3NhZ2UuCgoKaDModGFnKS4gbWVtX2Zvcm1fZXJy b3IKCnAodGFnLXN1bW1hcnkpLiBUaGlzIHdpbGwgc2V0IG9yIGdldCBlcnJvcnMgYXNzb2Np YXRlZCB3aXRoIHRoZSBmb3JtLgoKKihhdHRzKSAlKGF0dHMtbmFtZSlSZXR1cm4gVmFsdWUl ICUoYXR0cy10eXBlKW1peGVkJSBJZiBlcnIgaXMgTlVMTCwgdGhlbiBpdCB3aWxsIHJldHVy biBhbiBhcnJheSBvZiBlcnJvcnMgdGhhdCBoYXZlIGJlZW4gc2V0LgoqICUoYXR0cy1uYW1l IG9wdGlvbmFsKWVyciUgJShhdHRzLXR5cGUpc3RyaW5nJSBBbiBlcnJvciB0aGF0IHdpbGwg YmUgYWRkZWQgdG8gdGhlIGxpc3Qgb2YgZm9ybSBlcnJvcnMgdGhhdCB3aWxsIGJlIGRpc3Bs YXllZCB0byB0aGUgZm9ybSB1c2VyLgoKaDModGFnKS4gbWVtX2Zvcm1fZGVmYXVsdAoKcCh0 YWctc3VtbWFyeSkuIFRoaXMgd2lsbCBnZXQgb3Igc2V0IGEgZGVmYXVsdCB2YWx1ZSBmb3Ig YSBmb3JtLgoKKihhdHRzKSAlKGF0dHMtbmFtZSlSZXR1cm4gVmFsdWUlICUoYXR0cy10eXBl KW1peGVkJSBJZiAlKGF0dHMtbmFtZSl2YWwgaXMgTlVMTCwgdGhlbiBpdCB3aWxsIHJldHVy biB0aGUgZGVmYXVsdCB2YWx1ZSBzZXQgZm9yIHRoZSBpbnB1dCBmaWVsZCBtYXRjaGluZyAl KGF0dHMtbmFtZSlrZXklLiBJZiAlKGF0dHMtbmFtZSlrZXklIGRvZXMgbm90IGV4aXN0LCB0 aGVuIGl0IHdpbGwgcmV0dXJuIEZBTFNFLgoqICUoYXR0cy1uYW1lKWtleSUgJShhdHRzLXR5 cGUlKXN0cmluZyUgVGhlIG5hbWUgb2YgdGhlIGlucHV0IGZpZWxkLgoqICUoYXR0cy1uYW1l IG9wdGlvbmFsKXZhbCUgJShhdHRzLXR5cGUpc3RyaW5nJSBJZiBzcGVjaWZpZWQsIHRoaXMg d2lsbCBiZSBzcGVjaWZpZWQgYXMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBpbnB1dCBm aWVsZCBuYW1lZCAia2V5Ii4KCmgzKHRhZykuIG1lbV9mb3JtX3N0b3JlCgpwKHRhZy1zdW1t YXJ5KS4gVGhpcyB3aWxsIHN0b3JlIHRoZSBuYW1lLCBsYWJlbCBhbmQgdmFsdWUgZm9yIGEg ZmllbGQgaW4gdG8gdGhlIGFwcHJvcHJpYXRlIGdsb2JhbCB2YXJpYWJsZXMuCgoqKGF0dHMp ICUoYXR0cy1uYW1lKW5hbWUlICUoYXR0cy10eXBlKXN0cmluZyUgVGhlIG5hbWUgb2YgdGhl IGZpZWxkLgoqICUoYXR0cy1uYW1lKWxhYmVsJSAlKGF0dHMtdHlwZSUpc3RyaW5nJSBUaGUg bGFiZWwgb2YgdGhlIGZpZWxkLgoqICUoYXR0cy1uYW1lKXZhbHVlJSAlKGF0dHMtdHlwZSlt aXhlZCUgVGhlIHZhbHVlIG9mIHRoZSBmaWVsZC4KCmgzKHRhZykuIG1lbV9mb3JtX3JlbW92 ZQoKcCh0YWctc3VtbWFyeSkuIFRoaXMgd2lsbCByZW1vdmUgdGhlIGluZm9ybWF0aW9uIGFz c29jaWF0ZWQgd2l0aCBhIGZpZWxkIHRoYXQgaGFzIGJlZW4gc3RvcmVkLgoKKihhdHRzKSAl KGF0dHMtbmFtZSluYW1lJSAlKGF0dHMtdHlwZSlzdHJpbmclIFRoZSBuYW1lIG9mIHRoZSBm aWVsZC4KCmgyKHNlY3Rpb24pLiBHbG9iYWwgVmFyaWFibGVzCgpwLiBUaGlzIGxpYnJhcnkg YWxsb3dzIG90aGVyIHBsdWdpbnMgdG8gaG9vayBpbiB0byBldmVudHMgd2l0aCB0aGUgQHJl Z2lzdGVyX2NhbGxiYWNrQCBmdW5jdGlvbi4KCiooYXR0cykgJShhdHRzLW5hbWUpJG1lbV9m b3JtX3R5cGUlICUoYXR0cy10eXBlKXN0cmluZyUgQSB0ZXh0IHZhbHVlIHRoYXQgYWxsb3dz IGEgcGx1Z2luIGRldGVybWluZSBpZiBpdCBzaG91bGQgcHJvY2VzcyB0aGUgY3VycmVudCBm b3JtLgoqICUoYXR0cy1uYW1lKSRtZW1fZm9ybV9zdWJtaXQlICUoYXR0cy10eXBlKWJvb2wl IFRoaXMgc3BlY2lmaWVzIGlmIHRoZSBmb3JtIGlzIGRvaW5nIGEgcG9zdGJhY2suCiogJShh dHRzLW5hbWUpJG1lbV9mb3JtX2RlZmF1bHQlICUoYXR0cy10eXBlKWFycmF5JSBBbiBhcnJh eSBjb250YWluaW5nIHRoZSBkZWZhdWx0IHZhbHVlcyB0byB1c2Ugd2hlbiBkaXNwbGF5aW5n IHRoZSBmb3JtLgoqICUoYXR0cy1uYW1lKSRtZW1fZm9ybSUgJShhdHRzLXR5cGUpYXJyYXkl IEFuIGFycmF5IG1hcHBpbmcgYWxsIGlucHV0IGxhYmVscyB0byB0aGVpciB2YWx1ZXMuCiog JShhdHRzLW5hbWUpJG1lbV9mb3JtX2xhYmVscyUgJShhdHRzLXR5cGUpYXJyYXklIEFuIGFy cmF5IG1hcHBpbmcgYWxsIGlucHV0IG5hbWVzIHRvIHRoZWlyIGxhYmVscy4KKiAlKGF0dHMt bmFtZSkkbWVtX2Zvcm1fdmFsdWVzJSAlKGF0dHMtdHlwZSlhcnJheSUgQW4gYXJyYXkgbWFw cGluZyBhbGwgaW5wdXQgbmFtZXMgdG8gdGhlaXIgdmFsdWVzLgoqICUoYXR0cy1uYW1lKSRt ZW1fZm9ybV90aGFua3NfZm9ybSUgJShhdHRzLXR5cGUpc3RyaW5nJSBDb250YWlucyB0aGUg bWVzc2FnZSB0aGF0IHdpbGwgYmUgc2hvd24gdG8gdGhlIHVzZXIgYWZ0ZXIgYSBzdWNjZXNz ZnVsIHN1Ym1pc3Npb24uIEVpdGhlciB0aGUgInRoYW5rc19mb3JtIiBvciB0aGUgInRoYW5r cyIgYXR0cmlidXRlLiBBIHBsdWdpbiBjYW4gbW9kaWZ5IHRoaXMgdmFsdWUgb3IgcmV0dXJu IGEgc3RyaW5nIHRvIG92ZXIKCmgyKHNlY3Rpb24pLiBQbHVnaW4gRXZlbnRzCgpoMyhldmVu dCkuIG1lbV9mb3JtLmRlZmF1bHRzCgpwKGV2ZW50LXN1bW1hcnkpLiBBbGxvd3MgYSBwbHVn aW4gdG8gYWx0ZXIgdGhlIGRlZmF1bHQgdmFsdWVzIGZvciBhIGZvcm0gcHJpb3IgdG8gYmVp bmcgZGlzcGxheWVkLgoKaDMoZXZlbnQpLiBtZW1fZm9ybS5kaXNwbGF5CgpwKGV2ZW50LXN1 bW1hcnkpLiBBbGxvd3MgYSBwbHVnaW4gdG8gaW5zZXJ0IGFkZGl0aW9uYWwgaHRtbCBpbiB0 aGUgcmVuZGVyZWQgaHRtbCBmb3JtIHRhZy4KCmgzKGV2ZW50KS4gbWVtX2Zvcm0uc3VibWl0 CgpwKGV2ZW50LXN1bW1hcnkpLiBBbGxvd3MgYSBwbHVnaW4gdG8gYWN0IHVwb24gYSBzdWNj ZXNzZnVsIGZvcm0gc3VibWlzc2lvbi4KCmgzKGV2ZW50KS4gbWVtX2Zvcm0uc3BhbQoKcChl dmVudC1zdW1tYXJ5KS4gQWxsb3dzIGEgcGx1Z2luIHRvIHRlc3QgYSBzdWJtaXNzaW9uIGFz IHNwYW0uIFRoZSBmdW5jdGlvbiBnZXRfbWVtX2Zvcm1fZXZhbHVhdG9yKCkgcmV0dXJucyB0 aGUgZXZhbHVhdG9yLgoKaDMoZXZlbnQpLiBtZW1fZm9ybS5zdG9yZV92YWx1ZQoKcChldmVu dC1zdW1tYXJ5KS4gT24gc3VibWl0LCB0aGlzIGV2ZW50IGlzIGNhbGxlZCBmb3IgZWFjaCBm aWVsZCB0aGF0IHBhc3NlZCB0aGUgYnVpbHRpbiBjaGVja3MgYW5kIHdhcyBqdXN0IHN0b3Jl ZCBpbiB0byB0aGUgZ2xvYmFsIHZhcmlhYmxlcy4gVGhlIGNhbGxiYWNrIHN0ZXAgaXMgdGhl IGZpZWxkIG5hbWUuIFRoaXMgY2FsbGJhY2sgY2FuIGJlIHVzZWQgZm9yIGN1c3RvbSBmaWVs ZCB2YWxpZGF0aW9uLiBJZiB0aGUgdmFsdWUgaXMgaW52YWxpZCwgcmV0dXJuIEZBTFNFLiBX YXJuaW5nOiBUaGlzIGV2ZW50IGlzIGNhbGxlZCBmb3IgZWFjaCBmaWVsZCBldmVuIGlmIGEg cHJldmlvdXNseSBjaGVja2VkIGZpZWxkIGhhcyBmYWlsZWQuCgpoMyhldmVudCkuIG1lbV9m b3JtLnZhbGlkYXRlCgpwKGV2ZW50LXN1bW1hcnkpLiBUaGlzIGV2ZW50IGlzIGNhbGxlZCBv biBmb3JtIHN1Ym1pdCwgYWZ0ZXIgdGhlIGluZGl2aWR1YWwgZmllbGRzIGFyZSBwYXJzZWQg YW5kIHZhbGlkYXRlZC4gVGhpcyBldmVudCBpcyBub3QgY2FsbGVkIGlmIHRoZXJlIGFyZSBh bnkgZXJyb3JzIGFmdGVyIHRoZSBmaWVsZHMgYXJlIHZhbGlkYXRlZC4gQW55IG11bHRpLWZp ZWxkIG9yIGZvcm0gc3BlY2lmaWMgdmFsaWRhdGlvbiBzaG91bGQgaGFwcGVuIGhlcmUuIFVz ZSBtZW1fZm9ybV9lcnJvcigpIHRvIHNldCBhbnkgdmFsaWRhdGlvbiBlcnJvciBtZXNzYWdl cyB0byBwcmV2ZW50IGEgc3VjY2Vzc2Z1bCBwb3N0LiI7czozOiJtZDUiO3M6MzI6ImQxMmQx Y2RhZTc0ZjcxZjMwYTVkYWEzNTI0YmQwYzMwIjt9