# ako_nav v1.0
# This plugin produces a dynamic navigation bar based on a few specified attributes.
# Adrian Kostrubiak
# http://www.ako-k.com/

# ......................................................................
# This is a plugin for Textpattern - http://textpattern.com/
# To install: textpattern > admin > plugins
# Paste the following text into the 'Install plugin' box:
# ......................................................................

YToxMTp7czo3OiJ2ZXJzaW9uIjtzOjM6IjEuMCI7czo2OiJhdXRob3IiO3M6MTc6IkFkcmlh
biBLb3N0cnViaWFrIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIxOiJodHRwOi8vd3d3LmFrby1r
LmNvbS8iO3M6MTE6ImRlc2NyaXB0aW9uIjtzOjgyOiJUaGlzIHBsdWdpbiBwcm9kdWNlcyBh
IGR5bmFtaWMgbmF2aWdhdGlvbiBiYXIgYmFzZWQgb24gYSBmZXcgc3BlY2lmaWVkIGF0dHJp
YnV0ZXMuIjtzOjQ6InR5cGUiO2k6MDtzOjQ6Im5hbWUiO3M6NzoiYWtvX25hdiI7czo0OiJo
ZWxwIjtzOjcxNTI6Igk8aDI+YWtvX25hdiBIZWxwIEZpbGU8L2gyPgoKCTxoMz5BIGR5bmFt
aWMgcG9ydGFibGUgbmF2aWdhdGlvbiBjcmVhdG9yLjwvaDM+CgoJPGg0PldoYXQgZG9lcyBp
dCBkbz88L2g0PgoKCTx1bD4KCQk8bGk+Q3JlYXRlcyBhIHByaW1hcnkgPGNvZGU+ZGl2PC9j
b2RlPiAob3B0aW9uYWxseSkuPC9saT4KCQk8bGk+SW5zaWRlIHRoZSA8Y29kZT5kaXY8L2Nv
ZGU+LCBhIGhlYWRpbmcgaXMgYWRkZWQgZm9yIHRoZSBuYXYgYmFyIChvcHRpb25hbGx5KS48
L2xpPgoJCTxsaT5DcmVhdGVzIGEgPGNvZGU+dWw8L2NvZGU+IHRvIGhvbGQgdGhlIG5hdiBi
YXIuPC9saT4KCQk8bGk+R29lcyB0aHJvdWdoIGdpdmVuIHVybHMgYW5kIG5hbWVzIG9mIHBh
Z2VzIGFuZCBkeW5taWNhbGx5IGFkZHMgdGhlbSBhcyA8Y29kZT5saTwvY29kZT4mIzgyMTc7
czwvbGk+CgkJPGxpPjxjb2RlPmNsYXNzPSYjMzQ7YWN0aXZlJiMzNDs8L2NvZGU+IGlzIGF1
dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIGN1cnJlbnQgcGFnZSYjODIxNztzIDxjb2RlPmE8
L2NvZGU+IHRhZyAob3Igb3B0aW9uYWxseSwgPGNvZGU+bGk8L2NvZGU+IHRhZykuPC9saT4K
CTwvdWw+CgoJPGg0PkV4YW1wbGVzPC9oND4KCgk8cD5UaGUgc2ltcGxlc3QgZm9ybSBpcyB0
aGlzOjwvcD4KCgk8YmxvY2txdW90ZT4KCQk8cD48Y29kZT4mIzYwO3R4cDpha29fbmF2IG5h
bWU9JiMzNDtob21lLGFib3V0LGNvbnRhY3QmIzM0OyB1cmw9JiMzNDsvLC9hYm91dCwvY29u
dGFjdCYjMzQ7IC8mIzYyOzwvY29kZT48L3A+Cgk8L2Jsb2NrcXVvdGU+CgoJPHA+aXQgd2ls
bCBwcm9kdWNlIHNvbWV0aGluZyBsaWtlIHRoaXM6PC9wPgoKCTxibG9ja3F1b3RlPgoJCTxw
PjxwcmU+JiM2MDtkaXYmIzYyOwomIzYwO2gyJiM2MjtOYXZpZ2F0aW9uJiM2MDsvaDImIzYy
OwoJJiM2MDt1bCYjNjI7CgkJJiM2MDtsaSYjNjI7JiM2MDthIGhyZWY9JiMzNDsvJiMzNDsm
IzYyO2hvbWUmIzYwOy9hJiM2MjsmIzYwOy9saSYjNjI7CgkJJiM2MDtsaSYjNjI7JiM2MDth
IGhyZWY9JiMzNDsvYWJvdXQmIzM0OyYjNjI7YWJvdXQmIzYwOy9hJiM2MjsmIzYwOy9saSYj
NjI7CgkJJiM2MDtsaSYjNjI7JiM2MDthIGhyZWY9JiMzNDsvY29udGFjdCYjMzQ7JiM2Mjtj
b250YWN0JiM2MDsvYSYjNjI7JiM2MDsvbGkmIzYyOwoJJiM2MDsvdWwmIzYyOwomIzYwOy9k
aXYmIzYyOzwvcHJlPjwvcD4KCTwvYmxvY2txdW90ZT4KCgk8cD5BZGQgc29tZSBvZiB0aGUg
dGFncyBiZWxvdyB0byBnZXQgYSBsb3QgbW9yZSBjcmVhdGl2ZS48L3A+CgoJPGg0PlBsZWFz
ZSBub3RlOjwvaDQ+CgoJPHA+VGhlIHVybCBhdHRyaWJ1dGVzIHNob3VsZCBiZSByZWxhdGl2
ZSB0byB0aGUgcm9vdCBvZiB5b3VyIHNpdGUuICBUaGF0IGlzLCBpZiB5b3UgYXJlIHJ1bm5p
bmcgeW91ciBzaXRlIG91dCBvZiBhIHN1YmRpcmVjdG9yeSwgeW91IGRvIDxzdHJvbmc+bm90
PC9zdHJvbmc+IG5lZWQgdG8gaW5jbHVkZSB0aGUgc3ViZGlyZWN0b3J5IGluIHRoZSB1cmwg
YXR0cmlidXRlLiAgKEluIGZhY3QsIGRvbiYjODIxNzt0IGluY2x1ZGUgaXQuKTxiciAvPgpG
b3IgZXhhbXBsZSwgaWYgeW91IGFyZSBydW5uaW5nIHlvdXIgc2l0ZSBhdCBodHRwOi8vd3d3
LmFrby1rLmNvbS93b3cvLCBhbmQgeW91IHdhbnRlZCB0byB1c2UgYWtvX25hdiB0byBtYWtl
IGEgbmF2aWdhdGlvbiBiYXIgdG8gdGhlIGFib3V0IGFuZCBsaW5rcyBwYWdlLCB0aGUgY29k
ZSB3b3VsZCBiZTwvcD4KCgk8YmxvY2txdW90ZT4KCQk8cD48Y29kZT4mIzYwO3R4cDpha29f
bmF2IG5hbWU9JiMzNDtob21lLGFib3V0LGNvbnRhY3QmIzM0OyB1cmw9JiMzNDsvLC9hYm91
dCwvbGlua3MmIzM0OyAvJiM2Mjs8L2NvZGU+PGJyIC8+CmFuZCBub3Q8YnIgLz4KPGRlbD5A
PHR4cDpha29fbmF2IG5hbWU9ImhvbWUsYWJvdXQsY29udGFjdCIgdXJsPSIvd293Lywvd293
L2Fib3V0LC93b3cvbGlua3MiIC8+QDwvZGVsPjwvcD4KCTwvYmxvY2txdW90ZT4KCgk8aDQ+
VGFnczwvaDQ+CgoJPHVsPgoJCTxsaT48ZW0+UmVxdWlyZWQ8L2VtPgoJPHVsPgoJCTxsaT48
c3Ryb25nPm5hbWU8L3N0cm9uZz4gJiM4MjExOyBUaGlzIGlzIGEgbGlzdCBvZiBwYWdlIG5h
bWVzLCBkZWxpbWl0ZWQgYnkgY29tbWFzIChhbmQgbm8gc3BhY2VzKSwgdW5sZXNzIHRoZSAm
IzgyMjA7ZGVsaW0mIzgyMjE7IGF0dHJpYnV0ZSBpcyBzZXQgYXMgc29tZXRoaW5nIGVsc2Uu
PC9saT4KCQk8bGk+PHN0cm9uZz51cmw8L3N0cm9uZz4gJiM4MjExOyBUaGlzIGlzIGEgbGlz
dCBvZiBwYWdlIHVybCYjODIxNztzLCBmb2xsb3dpbmcgdGhlIHNhbWUgb3JkZXIgYXMgdGhl
IHBhZ2UgbmFtZXMsIGFuZCBhbHNvIGRlbGltaXRlZCBieSBjb21tYXMgKGFuZCBubyBzcGFj
ZXMpLCB1bmxlc3MgdGhlICYjODIyMDtkZWxpbSYjODIyMTsgYXR0cmlidXRlIGlzIHNldCBh
cyBzb21ldGhpbmcgZWxzZS48L2xpPgoJPC91bD48L2xpPgoJCTxsaT48ZW0+T3B0aW9uYWw8
L2VtPgoJPHVsPgoJCTxsaT48c3Ryb25nPnRpdGxlPC9zdHJvbmc+ICYjODIxMTsgVGhpcyBp
cyBhIGxpc3Qgb2YgPGNvZGU+dGl0bGU8L2NvZGU+IGF0dHJpYnV0ZXMgZm9yIHRoZSA8Y29k
ZT5hPC9jb2RlPiB0YWdzLCBkZWxpbWl0ZWQgYnkgY29tbWFzIChhbmQgbm8gc3BhY2VzKSwg
dW5sZXNzIHRoZSAmIzgyMjA7ZGVsaW0mIzgyMjE7IGF0dHJpYnV0ZSBpcyBzZXQgYXMgc29t
ZXRoaW5nIGVsc2UuPC9saT4KCQk8bGk+PHN0cm9uZz51bGlkPC9zdHJvbmc+ICYjODIxMTsg
VGhpcyBpcyBhbiBpZCBmb3IgdGhlIDxjb2RlPnVsPC9jb2RlPiB0YWcuPC9saT4KCQk8bGk+
PHN0cm9uZz51bGNsYXNzPC9zdHJvbmc+ICYjODIxMTsgVGhpcyBpcyBhIGNsYXNzIGZvciB0
aGUgPGNvZGU+dWw8L2NvZGU+dGFnLjwvbGk+CgkJPGxpPjxzdHJvbmc+bGlpZHM8L3N0cm9u
Zz4gJiM4MjExOyBUaGlzIGlzIGEgbGlzdCBvZiBpZCBhdHRyaWJ1dGVzIGZvciB0aGUgPGNv
ZGU+bGk8L2NvZGU+IHRhZywgZGVsaW1pdGVkIGJ5IGNvbW1hcyAoYW5kIG5vIHNwYWNlcyks
IHVubGVzcyB0aGUgJiM4MjIwO2RlbGltJiM4MjIxOyBhdHRyaWJ1dGUgaXMgc2V0IGFzIHNv
bWV0aGluZyBlbHNlLjwvbGk+CgkJPGxpPjxzdHJvbmc+bGljbGFzczwvc3Ryb25nPiAmIzgy
MTE7IFRoaXMgaXMgYSBjbGFzcyBmb3IgdGhlIDxjb2RlPmxpPC9jb2RlPnRhZy48L2xpPgoJ
CTxsaT48c3Ryb25nPmFmY2hpbGQ8L3N0cm9uZz4gJiM4MjExOyA8c3Bhbj57Y29sb3I6cmVk
fSBOZXcgaW4gMS4wITwvc3Bhbj4gVGhpcyBpcyBhbiBhZGRpdGlvbmFsIGNsYXNzIGF0dHJp
YnV0ZSBmb3IgdGhlIDxjb2RlPmxpPC9jb2RlPiB0YWcsIG9ubHkgYXBwbGllZCB0byB0aGUg
PGVtPmZpcnN0PC9lbT4gaXRlbSBpbiB0aGUgbGlzdC48L2xpPgoJCTxsaT48c3Ryb25nPmFs
Y2hpbGQ8L3N0cm9uZz4gJiM4MjExOyA8c3Bhbj57Y29sb3I6cmVkfSBOZXcgaW4gMS4wITwv
c3Bhbj4gVGhpcyBpcyBhbiBhZGRpdGlvbmFsIGNsYXNzIGF0dHJpYnV0ZSBmb3IgdGhlIDxj
b2RlPmxpPC9jb2RlPiB0YWcsIG9ubHkgYXBwbGllZCB0byB0aGUgPGVtPmxhc3Q8L2VtPiBp
dGVtIGluIHRoZSBsaXN0LjwvbGk+CgkJPGxpPjxzdHJvbmc+YWlkczwvc3Ryb25nPiAmIzgy
MTE7IFRoaXMgaXMgYSBsaXN0IG9mIGlkIGF0dHJpYnV0ZXMgZm9yIHRoZSA8Y29kZT5hPC9j
b2RlPiB0YWdzLCBkZWxpbWl0ZWQgYnkgY29tbWFzIChhbmQgbm8gc3BhY2VzKSwgdW5sZXNz
IHRoZSAmIzgyMjA7ZGVsaW0mIzgyMjE7IGF0dHJpYnV0ZSBpcyBzZXQgYXMgc29tZXRoaW5n
IGVsc2UuPC9saT4KCQk8bGk+PHN0cm9uZz5hY2xhc3M8L3N0cm9uZz4gJiM4MjExOyBUaGlz
IGlzIGEgY2xhc3MgZm9yIHRoZSA8Y29kZT5hPC9jb2RlPnRhZy48L2xpPgoJCTxsaT48c3Ry
b25nPmFmY2hpbGQ8L3N0cm9uZz4gJiM4MjExOyA8c3Bhbj57Y29sb3I6cmVkfSBOZXcgaW4g
MS4wITwvc3Bhbj4gVGhpcyBpcyBhbiBhZGRpdGlvbmFsIGNsYXNzIGF0dHJpYnV0ZSBmb3Ig
dGhlIDxjb2RlPmE8L2NvZGU+IHRhZywgb25seSBhcHBsaWVkIHRvIHRoZSA8ZW0+Zmlyc3Q8
L2VtPiBpdGVtIGluIHRoZSBsaXN0LjwvbGk+CgkJPGxpPjxzdHJvbmc+YWxjaGlsZDwvc3Ry
b25nPiAmIzgyMTE7IDxzcGFuPntjb2xvcjpyZWR9IE5ldyBpbiAxLjAhPC9zcGFuPiBUaGlz
IGlzIGFuIGFkZGl0aW9uYWwgY2xhc3MgYXR0cmlidXRlIGZvciB0aGUgPGNvZGU+YTwvY29k
ZT4gdGFnLCBvbmx5IGFwcGxpZWQgdG8gdGhlIDxlbT5sYXN0PC9lbT4gaXRlbSBpbiB0aGUg
bGlzdC48L2xpPgoJCTxsaT48c3Ryb25nPnNwYW53cmFwPC9zdHJvbmc+ICYjODIxMTsgVGhp
cyBpcyBmb3Igd2hldGhlciBvciBub3QgdGhlIHRleHQgaXMgd3JhcHBlZCBpbiA8Y29kZT5z
cGFuPC9jb2RlPiB0YWdzLiAgMCA9IG5vdCB3cmFwcGVkLCAxID0gd3JhcHBlZC4gQnkgZGVm
YXVsdCwgaXQgaXMgbm90IHdyYXBwZWQgKDApLjwvbGk+CgkJPGxpPjxzdHJvbmc+c3BhbmNs
YXNzPC9zdHJvbmc+ICYjODIxMTsgVGhpcyBpcyBhIGNsYXNzIGZvciB0aGUgPGNvZGU+c3Bh
bjwvY29kZT50YWcuPC9saT4KCQk8bGk+PHN0cm9uZz5zcGFuaWRzPC9zdHJvbmc+ICYjODIx
MTsgPHNwYW4+e2NvbG9yOnJlZH0gTmV3IGluIDEuMCE8L3NwYW4+ICBUaGlzIGlzIGEgbGlz
dCBvZiBpZCBhdHRyaWJ1dGVzIGZvciB0aGUgPGNvZGU+c3BhbjwvY29kZT4gdGFnLCBkZWxp
bWl0ZWQgYnkgY29tbWFzIChhbmQgbm8gc3BhY2VzKSwgdW5sZXNzIHRoZSAmIzgyMjA7ZGVs
aW0mIzgyMjE7IGF0dHJpYnV0ZSBpcyBzZXQgYXMgc29tZXRoaW5nIGVsc2UuPC9saT4KCQk8
bGk+PHN0cm9uZz5kaXZpZDwvc3Ryb25nPiAmIzgyMTE7IFRoaXMgaXMgYW4gaWQgZm9yIHRo
ZSA8Y29kZT5kaXY8L2NvZGU+IGNvbnRhaW5lci48L2xpPgoJCTxsaT48c3Ryb25nPmRpdmNs
YXNzPC9zdHJvbmc+ICYjODIxMTsgVGhpcyBpcyBhIGNsYXNzIGZvciB0aGUgPGNvZGU+ZGl2
PC9jb2RlPiBjb250YWluZXIuPC9saT4KCQk8bGk+PHN0cm9uZz5kaXZvbjwvc3Ryb25nPiAm
IzgyMTE7IFRoaXMgaXMgZm9yIHdoZXRoZXIgb3Igbm90IHRoZSA8Y29kZT5kaXY8L2NvZGU+
IGlzIGRpc3BsYXllZC4gIDAgPSBub3QgZGlzcGxheWVkLCAxID0gZGlzcGxheWVkLiBCeSBk
ZWZhdWx0LCBpdCBpcyBkaXNwbGF5ZWQgKDEpLjwvbGk+CgkJPGxpPjxzdHJvbmc+aGVhZGlk
PC9zdHJvbmc+ICYjODIxMTsgVGhpcyBpcyBhbiBpZCBmb3IgdGhlIGhlYWRlciB0YWcuPC9s
aT4KCQk8bGk+PHN0cm9uZz5oZWFkY2xhc3M8L3N0cm9uZz4gJiM4MjExOyBUaGlzIGlzIGEg
Y2xhc3MgZm9yIHRoZSBoZWFkZXIgdGFnLjwvbGk+CgkJPGxpPjxzdHJvbmc+aGVhZG9uPC9z
dHJvbmc+ICYjODIxMTsgVGhpcyBpcyBmb3Igd2hldGhlciBvciBub3QgdGhlIGhlYWRlciB0
ZXh0IGlzIGRpc3BsYXllZC4gIDAgPSBub3QgZGlzcGxheWVkLCAxID0gZGlzcGxheWVkLiBC
eSBkZWZhdWx0LCBpdCBpcyBkaXNwbGF5ZWQgKDEpLjwvbGk+CgkJPGxpPjxzdHJvbmc+aGVh
ZHR4dDwvc3Ryb25nPiAmIzgyMTE7IFRoaXMgaXMgdGhlIHRleHQgaW5zaWRlIHRoZSBoZWFk
ZXIgaXRzIHNlbGYuICBCeSBkZWZhdWx0LCB0aGlzIGlzICYjODIyMDtOYXZpZ2F0aW9uJiM4
MjIxOy48L2xpPgoJCTxsaT48c3Ryb25nPmhlYWRsdmw8L3N0cm9uZz4gJiM4MjExOyBUaGlz
IGlzIHRoZSBsZXZlbCB0aGF0IHRoZSA8Y29kZT5oPC9jb2RlPiB0YWcgaXMsIGJldHdlZW4g
MSBhbmQgNi4gIEJ5IGRlZmF1bHQsIHRoaXMgaXMgMi48L2xpPgoJCTxsaT48c3Ryb25nPmN1
cmxpbms8L3N0cm9uZz4gJiM4MjExOyBUaGlzIGlzIGFuIG9wdGlvbiBhcyB0byB3aGV0aGVy
IG9yIG5vdCB0aGUgY3VycmVudCBzZWN0aW9uIGlzIGxpbmtlZC4gIDAgPSBub3QgbGlua2Vk
LCAxID0gbGlua2VkLiAgQnkgZGVmYXVsdCwgaXQgaXMgbGlua2VkICgxKS48L2xpPgoJCTxs
aT48c3Ryb25nPmNsYXNzdGFnPC9zdHJvbmc+ICYjODIxMTsgVGhpcyBpcyBhbiBvcHRpb24g
d2hpY2ggYWxsb3dzIHlvdSB0byBhZGQgdGhlIDxjb2RlPmNsYXNzPSYjMzQ7YWN0aXZlJiMz
NDs8L2NvZGU+IHRvIGVpdGhlciB0aGUgPGNvZGU+YTwvY29kZT4gb3IgdGhlIDxjb2RlPmxp
PC9jb2RlPiB0YWcuICAwID0gaXQgaXMgYWRkZWQgdG8gdGhlIDxjb2RlPmE8L2NvZGU+IHRh
ZywgMSA9IGl0IGlzIGFkZGVkIHRvIHRoZSA8Y29kZT5saTwvY29kZT4gdGFnLiAgQnkgZGVm
YXVsdCwgaXQgaXMgYWRkZWQgdG8gdGhlIDxjb2RlPmE8L2NvZGU+IHRhZyAoMCkuPC9saT4K
CQk8bGk+PHN0cm9uZz5hY3RpY2xhc3M8L3N0cm9uZz4gJiM4MjExOyA8c3Bhbj57Y29sb3I6
cmVkfSBOZXcgaW4gMS4wITwvc3Bhbj4gVGhpcyBpcyBhbiBvcHRpb24gdG8gY2hhbmdlIHRo
ZSB0aGUgPGNvZGU+Y2xhc3M9JiMzNDthY3RpdmUmIzM0OzwvY29kZT4gdG8gd2hhdGV2ZXIg
eW91IHdvdWxkIGxpa2UuIEJ5IGRlZmF1bHQsIHRoaXMgaXMgJiM4MjIwO2FjdGl2ZSYjODIy
MTsuPC9saT4KCQk8bGk+PHN0cm9uZz5kZWxpbTwvc3Ryb25nPiAmIzgyMTE7IDxzcGFuPntj
b2xvcjpyZWR9IE5ldyBpbiAxLjAhPC9zcGFuPiBUaGlzIGlzIHRoZSBjaGFyYWN0ZXIocykg
d2hpY2ggd2lsbCBhY3QgYXMgYSBkZWxpbWl0ZXIgZm9yIHRoZSBvdGhlciBhdHRyaWJ1dGVz
IHdoaWNoIHRha2UgYSBsaXN0LCBzdWNoIGFzICYjODIyMDtuYW1lLCYjODIyMTsgJiM4MjIw
O3VybCwmIzgyMjE7IGV0Yy4gIEJ5IGRlZmF1bHQsIHRoaXMgaXMgYSBjb21tYSAoJiM4MjIx
OywmIzgyMjE7KSBidXQgY2FuIGJlIGNoYW5nZWQgdG8gYW55IG90aGVyIGNoYXJhY3Rlcihz
KS48L2xpPgoJCTxsaT48c3Ryb25nPmFjY2Vzc2tleXM8L3N0cm9uZz4gJiM4MjExOyA8c3Bh
bj57Y29sb3I6cmVkfSBOZXcgaW4gMS4wITwvc3Bhbj4gVGhpcyBpcyBhIGxpc3Qgb2YgYWNj
ZXNza2V5IGF0dHJpYnV0ZXMgZm9yIHRoZSA8Y29kZT5hPC9jb2RlPiB0YWdzLCBkZWxpbWl0
ZWQgYnkgY29tbWFzIChhbmQgbm8gc3BhY2VzKSwgdW5sZXNzIHRoZSAmIzgyMjA7ZGVsaW0m
IzgyMjE7IGF0dHJpYnV0ZSBpcyBzZXQgYXMgc29tZXRoaW5nIGVsc2UuPC9saT4KCTwvdWw+
PC9saT4KCTwvdWw+CgoJPHA+PGhyIC8+PGJyIC8+ClRoYW5rcyBmb3IgdXNpbmcgPHN0cm9u
Zz5ha29fbmF2PC9zdHJvbmc+LCBhbmQgaGF2ZSBmdW4hPC9wPiI7czo0OiJjb2RlIjtzOjE2
MDQ4OiIvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gYWtvX25hdiBwbHVnaW4KLy8gRHluYW1pYyBOYXZp
Z2F0aW9uIEJhcnMKLy8gYnkgQWRyaWFuIEtvc3RydWJpYWsKLy8gaHR0cDovL3d3dy5ha28t
ay5jb20vCi8vIGh0dHA6Ly93d3cud2VyZWFsbGFmcmFpZC5jb20vCi8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLy8KLy8gVmVyc2lvbiBIaXN0b3J5OgovLyBWZXJzaW9uIDAu
MSAtIDAyLTEzLTIwMDUgLSBJbml0aWFsIHJlbGVhc2UKLy8gVmVyc2lvbiAwLjIgLSAwMi0x
My0yMDA1IC0gQWRkZWQgYWJpbGl0eSB0byB0dXJuIG9mZiBoZWFkZXIgdGV4dC4KLy8gVmVy
c2lvbiAwLjMgLSAwNC0xMi0yMDA1IC0gQWN0dWFsbHkgYWRkZWQgYWJpbGl0eSB0byB0dXJu
IG9mZiBoZWFkZXIgdGV4dC4KLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNvbWV0
aGluZyB3YXMgd3JvbmcgbGFzdCB0aW1lLCBhbmQgaXQgdG9vayBtZQovLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhIHdoaWxlIHRvIHBpY2sgdXAgb24gaXQpLgovLyBWZXJzaW9u
IDAuNCAtIDA1LTIxLTIwMDUgLSBSZW1vdmVkIGRlcGVuZGFuY2Ugb24gVVJMcy4gIE5vdyB3
ZSBnbyBieSB0aGUKLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiB2YXJp
YWJsZSBpbiAkcHJldGV4dCAoJHByZXRleHRbJ3MnXSkuCi8vIFZlcnNpb24gMC41IC0gMDYt
MjQtMjAwNSAtIEZpeGVkIGFuIGlzc3VlIGluIHdoaWNoIHRoZSBjbGFzcz0iYWN0aXZlIiB3
YXMKLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGJlaW5nIGFkZGVkIHdoZW4g
dGhlIHNpdGUgd2FzIGJlaW5nIHJ1biBvdXQgb2YgYQovLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdWJkaXJlY3RvcnkuCi8vIFZlcnNpb24gMC42IC0gMDYtMjQtMjAwNSAtIEFk
ZGVkIHRoZSBjdXJsaW5rIGF0dHJpYnV0ZS4gIEFsbG93cyB0aGUgYWJpbGl0eSB0bwovLyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlIHRoZSBjdXJyZW50IHNlY3Rpb24gbm90
IGJlIGxpbmtlZC4KLy8gVmVyc2lvbiAwLjcgLSAwNy0wNi0yMDA1IC0gQWRkZWQgYWJpbGl0
eSB0byBoYXZlIGV4dHJhIG5hbWVzIHRoYXQsIGlmIHRoZXJlIGFyZQovLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBub3QgY29ycmVzcG9uZGluZyBsaW5rcywgd2lsbCBub3QgbGlu
ay4gIFRoZXkgd2lsbAovLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqdXN0IHJlc2lk
ZSBpbiB0aGUgbGlzdCBhcyBwbGFpbiB0ZXh0LgovLyBWZXJzaW9uIDAuOCAtIDA5LTA2LTIw
MDUgLSBBZGRlZCBhYmlsaXR5IHRvIHNldCBjbGFzcz0iYWN0aXZlIiB0byBsaSB0YWcKLy8g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGVhZCBvZiBhIHRhZwovLyBWZXJzaW9u
IDAuOSAtIDEwLTA5LTIwMDUgLSBEdWJiZWQgInN1cGVyLW1lZ2EtY29vbCBpbnN0ZWFkLW9m
LWNvbXAtc2NpLXBhcGVyCi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2Uu
IiAgQWRkZWQgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzOiBhaWRzLAovLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhY2xhc3MsIGxpaWRzLCBsaWNsYXNzLCBkaXZvbiwgc3Bhbndy
YXAsIHNwYW5jbGFzcy4KLy8gVmVyc2lvbiAwLjkuMSAtMTAtMTAtMjAwNS0gRHViYmVkICJv
ayBzbyB0aGUgbGFzdCBvbmUgd2Fzbid0IHNvIHN1cGVyLW1lZ2EtY29vbAovLyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBidXQgdGhpcyBvbmUgaXMiIHJlbGVhc2UuICBGaXhlZCBh
biBpc3N1ZSB3aGVyZQovLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iYWN0
aXZlIiB3YXNuJ3QgYmVpbmcgYWRkZWQgd2hlbiBhY2xhc3Mgd2FzIG5vdAovLyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZWQuCi8vCi8vIFBsYW5uZWQ6Ci8vIFZlcnNp
b24gMS4wIC0gMTAtMTYtMjAwNiAtIEFkZGl0aW9uIG9mIGFjY2Vzc2tleXMgYW5kIHNwYW5p
ZHMgYXR0cmlidXRlcy4gIFN1cHBvcnQgZm9yCi8vICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGh0dHBzOi8vLCBmdHA6Ly8gaW4gdXJsIGF0dHMsIGh0dHBzOi8vIGFzIHRoZSB0eHAg
UFJPVE9DQUwuCi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGljbGFzcywgZGVs
aW0sIDxhPiBhbmQgPGxpPiBmaXJzdCAvIGxhc3QgY2hpbGQgc3VwcG9ydAoKZnVuY3Rpb24g
YWtvX25hdigkYXR0cykgewoJLy8gZ2V0IHNvbWUgYXR0cmlidXRlcwoJZ2xvYmFsICRhY3Rp
Y2xhc3M7CgoJZXh0cmFjdChsQXR0cyhhcnJheSgKCQkJCQkvLyBtYWluIGltcG9ydGFudCBh
dHRyaWJ1dGVzCgkJCQkJJ25hbWUnICA9PiAnJywKCQkJCQkndXJsJyAgID0+ICcnLAoJCQkJ
CSd0aXRsZScgPT4gJycsCgoJCQkJCS8vIHVsIGF0dHJpYnV0ZXMKCQkJCQkndWxpZCcgICAg
PT4gJycsCgkJCQkJJ3VsY2xhc3MnID0+ICcnLAoKCQkJCQkvLyBsaSBhdHRyaWJ1dGVzCgkJ
CQkJJ2xpaWQnICAgID0+ICcnLAoJCQkJCSdsaWNsYXNzJyA9PiAnJywKCgkJCQkJLy8gYSBh
dHRyaWJ1dGVzCgkJCQkJJ2FpZHMnICAgPT4gJycsCgkJCQkJJ2FjbGFzcycgPT4gJycsCgoJ
CQkJCS8vIHNwYW4gYXR0cmlidXRlcwoJCQkJCSdzcGFud3JhcCcgID0+ICcwJywKCQkJCQkn
c3BhbmNsYXNzJyA9PiAnJywKCQkJCQknc3BhbmlkcycgICA9PiAnJywKCgkJCQkJLy8gZGl2
IGF0dHJpYnV0ZXMKCQkJCQknZGl2aWQnICAgID0+ICduYXYnLAoJCQkJCSdkaXZjbGFzcycg
PT4gJycsCgkJCQkJJ2Rpdm9uJyAgICA9PiAnMScsCgoJCQkJCS8vIGhlYWRpbmcgYXR0cmli
dXRlcwoJCQkJCSdoZWFkaWQnICAgID0+ICcnLAoJCQkJCSdoZWFkY2xhc3MnID0+ICcnLAoJ
CQkJCSdoZWFkb24nICAgID0+ICcxJywKCQkJCQknaGVhZHR4dCcgICA9PiAnTmF2aWdhdGlv
bicsCgkJCQkJJ2hlYWRsdmwnICAgPT4gJzInLAoKCQkJCQkvLyBmaXJzdCAvIGxhc3QgY2hp
bGQgc3VwcG9ydAoJCQkJCSdhZmNoaWxkJyAgICA9PiAnJywKCQkJCQknbGlmY2hpbGQnICAg
PT4gJycsCgkJCQkJLy8nZmNoaWxkYWN0JyA9PiAnJywKCQkJCQknYWxjaGlsZCcgICAgPT4g
JycsCgkJCQkJJ2xpbGNoaWxkJyAgID0+ICcnLAoJCQkJCS8vJ2xjaGlsZGFjdCcgPT4gJycs
CgoJCQkJCS8vIHJhbmRvbQoJCQkJCSdjdXJsaW5rJyAgICA9PiAnMScsCgkJCQkJJ2NsYXNz
dGFnJyAgID0+ICcwJywKCQkJCQknYWN0aWNsYXNzJyAgPT4gJ2FjdGl2ZScsCgkJCQkJJ2Rl
bGltJyAgICAgID0+ICcsJywKCQkJCQknYWNjZXNza2V5cycgPT4gJycsCgkJCQkJKSwkYXR0
cykpOwoJLy8gZW5kIGF0dHJpYnV0ZXMKCgkvLyBtYWtlIHN1cmUgd2UncmUgZG9pbmcgX3Nv
bWV0aGluZ18gaGVyZS4uCglpZiAoISRuYW1lICYmICEkdXJsKSByZXR1cm4oYWtvX25hdl9o
ZWxwKCJuYW1lJiM4MjE3O3MgYW5kIFVSTCIpKTsKCWlmICghJG5hbWUpIHJldHVybihha29f
bmF2X2hlbHAoIm5hbWUiKSk7CglpZiAoISR1cmwpICByZXR1cm4oYWtvX25hdl9oZWxwKCJV
UkwiKSk7CgoJJGFrb19vdXQgPSAiIjsKCgkvLyBwYXJzZSB0aGUgdXJpJ3MsIHRpdGxlJ3Ms
IG5hbWUncyBvZiBwYWdlcywgPGE+IGNsYXNzLCA8bGk+IGNsYXNzLCBmaXJzdCAmIGxhc3Qg
Y2hpbGQgc3VwcG9ydC4uCgkkcGFnZXNbXSA9IGV4cGxvZGUoJGRlbGltLCAkbmFtZSk7Cgkk
cGFnZXNbXSA9IGV4cGxvZGUoJGRlbGltLCAkdXJsKTsKCWlmICghZW1wdHkoJHRpdGxlKSkg
eyAkcGFnZXNbXSA9IGV4cGxvZGUoJGRlbGltLCAkdGl0bGUpOyB9IGVsc2UgeyAkcGFnZXNb
XSA9IGFycmF5X2ZpbGwoMCwgY291bnQoJHBhZ2VzWzBdKSwgIiIpOyB9CglpZiAoIWVtcHR5
KCRhaWRzKSkgIHsgJHBhZ2VzW10gPSBleHBsb2RlKCRkZWxpbSwgJGFpZHMpOyAgfSBlbHNl
IHsgJHBhZ2VzW10gPSBhcnJheV9maWxsKDAsIGNvdW50KCRwYWdlc1swXSksICIiKTsgfQoJ
aWYgKCFlbXB0eSgkbGlpZCkpICB7ICRwYWdlc1tdID0gZXhwbG9kZSgkZGVsaW0sICRsaWlk
KTsgIH0gZWxzZSB7ICRwYWdlc1tdID0gYXJyYXlfZmlsbCgwLCBjb3VudCgkcGFnZXNbMF0p
LCAiIik7IH0KCSRwYWdlc1tdID0gJGFjbGFzczsgICAgIC8vIGluZGV4OiA1CgkkcGFnZXNb
XSA9ICRsaWNsYXNzOyAgICAvLyBpbmRleDogNgoJJHBhZ2VzW10gPSAkYWZjaGlsZDsgICAg
Ly8gaW5kZXg6IDcKCSRwYWdlc1tdID0gJGxpZmNoaWxkOyAgIC8vIGluZGV4OiA4CgkkcGFn
ZXNbXSA9ICRhbGNoaWxkOyAgICAvLyBpbmRleDogOQoJJHBhZ2VzW10gPSAkbGlsY2hpbGQ7
ICAgLy8gaW5kZXg6IDEwCgoJLy8gYWNjZXNza2V5cy4uLgoJaWYgKCFlbXB0eSgkYWNjZXNz
a2V5cykpIHsKCQkkcGFnZXNbXSA9IGV4cGxvZGUoJGRlbGltLCAkYWNjZXNza2V5cyk7Cgl9
IGVsc2UgewoJCWZvciAoJGkgPSAwOyAkaSA8IGNvdW50KCRwYWdlc1swXSk7ICRpKyspIHsK
CQkJJHBhZ2VzWzExXVskaV0gPSAoJGkrMSk7CgkJfQoJfQoKCS8vIHN0YXJ0IHB1dHRpbmcg
dG9nZXRoZXIgYSBuYXZiYXIuLi4KCSRha29fb3V0ID0gKCRoZWFkb24gPT0gMSkgPyBuLmhl
ZCgkaGVhZHR4dCwgJGhlYWRsdmwsIGFrb19wYXJzZV9pZCgkaGVhZGlkKSAuIGFrb19wYXJz
ZV9jbGFzcygkaGVhZGNsYXNzLCBmYWxzZSkpIDogJyc7CgkkYWtvX291dCAuPSBuLiI8dWwi
LiBha29fcGFyc2VfaWQoJHVsaWQpIC4gYWtvX3BhcnNlX2NsYXNzKCR1bGNsYXNzLCBmYWxz
ZSkgLiI+Ii5uOwoKICAgIC8vIGNoZWNrIHNwYW53cmFwLi4KCWlmICgkc3BhbndyYXAgPT0g
MSkgewoJCSRzcGFuaWRBcnIgPSBleHBsb2RlKCRkZWxpbSwgJHNwYW5pZHMpOwoJCSRpID0g
MDsKCQlmb3JlYWNoICgkcGFnZXNbMF0gYXMgJHZhbHVlKSB7CgkJCSRwYWdlc1swXVskaV0g
PSB0YWcoJHZhbHVlLCAic3BhbiIsIGFrb19wYXJzZV9jbGFzcygkc3BhbmNsYXNzLCBmYWxz
ZSkgLiBha29fcGFyc2VfaWQoJHNwYW5pZEFyclskaV0pKTsKCQkJJGkrKzsKCQl9Cgl9CgoJ
Ly8gaGVyZXMgdGhlIHRyaWNrZXJ5IHRvIGdvIHRocm91Z2ggdGhlIHVsJ3MsIGFuZCBhZGQg
dGhlIGNsYXNzPSJhY3RpdmUiIGR5bmFtaWNhbGx5CgkvLyBpdCdzIHRyaXh5Li4uIHlvdSBr
bm93IHlvdSBsaWtlIGl0LgoJZm9yICgkaSA9IDA7ICRpIDwgY291bnQoJHBhZ2VzWzBdKTsg
JGkrKykgewoJCSRuYXZiYXJbXSA9IGFycmF5KCJuYW1lIiAgICAgID0+ICRwYWdlc1swXVsk
aV0sCgkJICAgICAgICAgICAgICAgICAgInVybCIgICAgICAgPT4gJHBhZ2VzWzFdWyRpXSwK
CQkgICAgICAgICAgICAgICAgICAidGl0bGUiICAgICA9PiAkcGFnZXNbMl1bJGldLAoJCSAg
ICAgICAgICAgICAgICAgICJhaWQiICAgICAgID0+ICRwYWdlc1szXVskaV0sCgkJICAgICAg
ICAgICAgICAgICAgImxpaWQiICAgICAgPT4gJHBhZ2VzWzRdWyRpXSwKCQkgICAgICAgICAg
ICAgICAgICAiYWNsYXNzIiAgICA9PiAkcGFnZXNbNV0sCgkJICAgICAgICAgICAgICAgICAg
ImxpY2xhc3MiICAgPT4gJHBhZ2VzWzZdLAoJCSAgICAgICAgICAgICAgICAgICJhZmNoaWxk
IiAgID0+ICRwYWdlc1s3XSwKCQkgICAgICAgICAgICAgICAgICAibGlmY2hpbGQiICA9PiAk
cGFnZXNbOF0sCgkJICAgICAgICAgICAgICAgICAgImFsY2hpbGQiICAgPT4gJHBhZ2VzWzld
LAoJCSAgICAgICAgICAgICAgICAgICJsaWxjaGlsZCIgID0+ICRwYWdlc1sxMF0sCgkJICAg
ICAgICAgICAgICAgICAgImFjY2Vzc2tleSIgPT4gJHBhZ2VzWzExXVskaV0pOwoJfSAvLyBl
bmQgZm9yKCkKCgkvLyBhbGwgdGhlIG1hZ2lxdWUgZ29lcyBvbiBoZXJlLiBjaGVjayBpdCBm
dXJ0aGVyIGJlbG93LgoJc3dpdGNoKCRjdXJsaW5rKSB7CgkJY2FzZSAxOgoJCQkkYWtvX291
dCAuPSAoJGNsYXNzdGFnID09IDApCgkJCQk/IGFrb19wYXJzZV9saV8xKCRuYXZiYXIsIGZh
bHNlKQoJCQkJOiBha29fcGFyc2VfbGlfMigkbmF2YmFyLCBmYWxzZSk7CgkJCWJyZWFrOwoJ
CWNhc2UgMDoKCQkJJGFrb19vdXQgLj0gKCRjbGFzc3RhZyA9PSAwKQoJCQkJPyBha29fcGFy
c2VfbGlfMygkbmF2YmFyLCBmYWxzZSkKCQkJCTogYWtvX3BhcnNlX2xpXzQoJG5hdmJhciwg
ZmFsc2UpOwoJCQlicmVhazsKCX0KCgkvLyBmaW5pc2ggb2ZmIHRoZSBuYXZiYXIuLi4KCSRh
a29fb3V0IC49ICI8L3VsPiIubjsKCSRha29fb3V0ICA9ICgkZGl2b24gPT0gMSkgPyB0YWco
JGFrb19vdXQsICJkaXYiLCBha29fcGFyc2VfaWQoJGRpdmlkKSAuIGFrb19wYXJzZV9jbGFz
cygkZGl2Y2xhc3MsIGZhbHNlKSkgOiAkYWtvX291dDsKCglyZXR1cm4oJGFrb19vdXQpOwp9
CgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgcGFyc2VfbGkga2V5OgogICAgMTogbGlu
ayB0byBjdXJyZW50IHNlbGVjdGlvbiwgYWRkIGNsYXNzPSJhY3RpdmUiIHRvIGFuY2hvciB0
YWdzCiAgICAyOiBsaW5rIHRvIGN1cnJlbnQgc2VsZWN0aW9uLCBhZGQgY2xhc3M9ImFjdGl2
ZSIgdG8gbGlzdCBpdGVtcwogICAgMzogbm8gbGluayB0byBjdXJyZW50IHNlbGVjdGlvbiwg
YWRkIGNsYXNzPSJhY3RpdmUiIHRvIGFuY2hvciB0YWdzIOKAoAogICAgNDogbm8gbGluayB0
byBjdXJyZW50IHNlbGVjdGlvbiwgYWRkIGNsYXNzPSJhY3RpdmUiIHRvIGxpc3QgaXRlbXMK
CiAgICAtLS0tLS0tLS0tLQogICAg4oCgIGlmIHlvdSB0aGluayBhYm91dCBpdCwgdGhpcyBt
YWtlcyBubyBzZW5zZSB3aGF0IHNvIGV2ZXIuCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCmZ1
bmN0aW9uIGFrb19wYXJzZV9saV8xKCRuYXZiYXIsICRmdWxsVXJsKSB7CgkvLyBsaW5rIHRv
IGN1cnJlbnQgc2VsZWN0aW9uLCBhZGQgY2xhc3M9ImFjdGl2ZSIgdG8gYW5jaG9yIHRhZ3MK
CWdsb2JhbCAkcHJldGV4dCwgJHNpdGV1cmw7Cgkkc2VjdGlvbiA9ICRwcmV0ZXh0WydzJ107
CgoJJHAgPSAoZGVmaW5lZCgnUFJPVE9DT0wnKSkgPyBQUk9UT0NPTCA6ICdodHRwOi8vJzsK
CSRwcyA9IGFycmF5KCJodHRwOi8vIiwgImh0dHBzOi8vIiwgImZ0cDovLyIsICJmdHBzOi8v
IiwgIm1haWx0bzoiKTsKCgkkc2VjdGlvbiA9ICgkc2VjdGlvbiA9PSAiZGVmYXVsdCIpID8g
IiIgOiAkc2VjdGlvbjsKCSRwX291dCA9ICIiOwoJZm9yICgkaSA9IDA7ICRpIDwgY291bnQo
JG5hdmJhcik7ICRpKyspIHsKCQlpZiAoJGkgPT0gMCkgewoJCQkkbGlBdHRzID0gYWtvX3Bh
cnNlX2lkKCRuYXZiYXJbJGldWyJsaWlkIl0pIC4gYWtvX3BhcnNlX2NsYXNzKCRuYXZiYXJb
JGldWyJsaWNsYXNzIl0sIGZhbHNlLCAkbmF2YmFyWyRpXVsibGlmY2hpbGQiXSk7CgkJfSBl
bHNlIGlmICgkaSA9PSAoY291bnQoJG5hdmJhcikgLSAxKSkgewoJCQkkbGlBdHRzID0gYWtv
X3BhcnNlX2lkKCRuYXZiYXJbJGldWyJsaWlkIl0pIC4gYWtvX3BhcnNlX2NsYXNzKCRuYXZi
YXJbJGldWyJsaWNsYXNzIl0sIGZhbHNlLCAkbmF2YmFyWyRpXVsibGlsY2hpbGQiXSk7CgkJ
fSBlbHNlIHsKCQkJJGxpQXR0cyA9IGFrb19wYXJzZV9pZCgkbmF2YmFyWyRpXVsibGlpZCJd
KSAuIGFrb19wYXJzZV9jbGFzcygkbmF2YmFyWyRpXVsibGljbGFzcyJdLCBmYWxzZSk7CgkJ
fQoKCQlpZiAoIWVtcHR5KCRuYXZiYXJbJGldWyJ1cmwiXSkpIHsKCQkJLy8gdGhlcmUgaXMg
YSBsaW5rCgkJCSRhQXR0cyAgPSAiIGhyZWY9XCIiLiAoKCRmdWxsVXJsIHx8IChzdHJwb3Mo
JG5hdmJhclskaV1bInVybCJdLCAkcHMpICE9PSBmYWxzZSkpCgkJCQk/ICRuYXZiYXJbJGld
WyJ1cmwiXQoJCQkJOiAkcC4kc2l0ZXVybC4kbmF2YmFyWyRpXVsidXJsIl0pIC4iXCIiOwoJ
CQkkYUF0dHMgLj0gYWtvX3BhcnNlX3RpdGxlKCRuYXZiYXJbJGldWyJ0aXRsZSJdKTsKCQkJ
JGFBdHRzIC49ICIgYWNjZXNza2V5PVwiIi4gJG5hdmJhclskaV1bImFjY2Vzc2tleSJdIC4i
XCIiOwoKCQkJLy8gZmlyc3QgLyBsYXN0IGNoaWxkIHN1cHBvcnQKCQkJaWYgKCRpID09IDAp
IHsKCQkJCSRhQXR0cyAuPSBha29fcGFyc2VfY2xhc3MoJG5hdmJhclskaV1bImFjbGFzcyJd
LCBha29fY2xhc3NBY3RpdmVpemUoJHNlY3Rpb24sICRuYXZiYXJbJGldWyJ1cmwiXSksICRu
YXZiYXJbJGldWyJhZmNoaWxkIl0pOwoJCQl9IGVsc2UgaWYgKCRpID09IChjb3VudCgkbmF2
YmFyKSAtIDEpKSB7CgkJCQkkYUF0dHMgLj0gYWtvX3BhcnNlX2NsYXNzKCRuYXZiYXJbJGld
WyJhY2xhc3MiXSwgYWtvX2NsYXNzQWN0aXZlaXplKCRzZWN0aW9uLCAkbmF2YmFyWyRpXVsi
dXJsIl0pLCAkbmF2YmFyWyRpXVsiYWxjaGlsZCJdKTsKCQkJfSBlbHNlIHsKCQkJCSRhQXR0
cyAuPSBha29fcGFyc2VfY2xhc3MoJG5hdmJhclskaV1bImFjbGFzcyJdLCBha29fY2xhc3NB
Y3RpdmVpemUoJHNlY3Rpb24sICRuYXZiYXJbJGldWyJ1cmwiXSkpOwoJCQl9CgoJCQkkYUF0
dHMgLj0gYWtvX3BhcnNlX2lkKCRuYXZiYXJbJGldWyJhaWQiXSk7CgoJCQkkbGlMaW5rID0g
dGFnKCRuYXZiYXJbJGldWyJuYW1lIl0sICJhIiwgJGFBdHRzKTsKCQkJJHBfb3V0IC49IHRh
ZygkbGlMaW5rLCAibGkiLCAkbGlBdHRzKS5uOwoJCX0gZWxzZSB7CgkJCS8vIG5vIGxpbmss
IGp1c3QgdGV4dAoJCQkkcF9vdXQgLj0gdGFnKCRuYXZiYXJbJGldWyJuYW1lIl0sICJsaSIs
ICRsaUF0dHMpLm47CgkJfQoJfQoJcmV0dXJuKCRwX291dCk7Cn0KCgpmdW5jdGlvbiBha29f
cGFyc2VfbGlfMigkbmF2YmFyLCAkZnVsbFVybCkgewoJLy8gbGluayB0byBjdXJyZW50IHNl
bGVjdGlvbiwgYWRkIGNsYXNzPSJhY3RpdmUiIHRvIGxpc3QgaXRlbXMKCWdsb2JhbCAkcHJl
dGV4dCwgJHNpdGV1cmw7Cgkkc2VjdGlvbiA9ICRwcmV0ZXh0WydzJ107CgoJJHAgPSAoZGVm
aW5lZCgnUFJPVE9DT0wnKSkgPyBQUk9UT0NPTCA6ICdodHRwOi8vJzsKCSRwcyA9IGFycmF5
KCJodHRwOi8vIiwgImh0dHBzOi8vIiwgImZ0cDovLyIsICJmdHBzOi8vIiwgIm1haWx0bzoi
KTsKCgkkc2VjdGlvbiA9ICgkc2VjdGlvbiA9PSAiZGVmYXVsdCIpID8gIiIgOiAkc2VjdGlv
bjsKCSRwX291dCA9ICIiOwoJZm9yICgkaSA9IDA7ICRpIDwgY291bnQoJG5hdmJhcik7ICRp
KyspIHsKCQlpZiAoJGkgPT0gMCkgewoJCQkkbGlBdHRzID0gYWtvX3BhcnNlX2lkKCRuYXZi
YXJbJGldWyJsaWlkIl0pIC4gYWtvX3BhcnNlX2NsYXNzKCRuYXZiYXJbJGldWyJsaWNsYXNz
Il0sIGFrb19jbGFzc0FjdGl2ZWl6ZSgkc2VjdGlvbiwgJG5hdmJhclskaV1bInVybCJdKSwg
JG5hdmJhclskaV1bImxpZmNoaWxkIl0pOwoJCX0gZWxzZSBpZiAoJGkgPT0gKGNvdW50KCRu
YXZiYXIpIC0gMSkpIHsKCQkJJGxpQXR0cyA9IGFrb19wYXJzZV9pZCgkbmF2YmFyWyRpXVsi
bGlpZCJdKSAuIGFrb19wYXJzZV9jbGFzcygkbmF2YmFyWyRpXVsibGljbGFzcyJdLCBha29f
Y2xhc3NBY3RpdmVpemUoJHNlY3Rpb24sICRuYXZiYXJbJGldWyJ1cmwiXSksICRuYXZiYXJb
JGldWyJsaWZjaGlsZCJdKTsKCQl9IGVsc2UgewoJCQkkbGlBdHRzID0gYWtvX3BhcnNlX2lk
KCRuYXZiYXJbJGldWyJsaWlkIl0pIC4gYWtvX3BhcnNlX2NsYXNzKCRuYXZiYXJbJGldWyJs
aWNsYXNzIl0sIGFrb19jbGFzc0FjdGl2ZWl6ZSgkc2VjdGlvbiwgJG5hdmJhclskaV1bInVy
bCJdKSk7CgkJfQoJCWlmICghZW1wdHkoJG5hdmJhclskaV1bInVybCJdKSkgewoJCQkvLyB0
aGVyZSBpcyBhIGxpbmsKCQkJJGFBdHRzICA9ICIgaHJlZj1cIiIuICgoJGZ1bGxVcmwgfHwg
KHN0cnBvcygkbmF2YmFyWyRpXVsidXJsIl0sICRwcykgIT09IGZhbHNlKSkKCQkJCT8gJG5h
dmJhclskaV1bInVybCJdCgkJCQk6ICRwLiRzaXRldXJsLiRuYXZiYXJbJGldWyJ1cmwiXSkg
LiJcIiI7CgkJCSRhQXR0cyAuPSBha29fcGFyc2VfdGl0bGUoJG5hdmJhclskaV1bInRpdGxl
Il0pOwoJCQkkYUF0dHMgLj0gIiBhY2Nlc3NrZXk9XCIiLiAkbmF2YmFyWyRpXVsiYWNjZXNz
a2V5Il0gLiJcIiI7CgkJCWlmICgkaSA9PSAwKSB7CgkJCQkkYUF0dHMgLj0gYWtvX3BhcnNl
X2NsYXNzKCRuYXZiYXJbJGldWyJhY2xhc3MiXSwgZmFsc2UsICRuYXZiYXJbJGldWyJhZmNo
aWxkIl0pOwoJCQl9IGVsc2UgaWYgKCRpID09IChjb3VudCgkbmF2YmFyKSAtIDEpKSB7CgkJ
CQkkYUF0dHMgLj0gYWtvX3BhcnNlX2NsYXNzKCRuYXZiYXJbJGldWyJhY2xhc3MiXSwgZmFs
c2UsICRuYXZiYXJbJGldWyJhbGNoaWxkIl0pOwoJCQl9IGVsc2UgewoJCQkJJGFBdHRzIC49
IGFrb19wYXJzZV9jbGFzcygkbmF2YmFyWyRpXVsiYWNsYXNzIl0sIGZhbHNlKTsKCQkJfQoJ
CQkkYUF0dHMgLj0gYWtvX3BhcnNlX2lkKCRuYXZiYXJbJGldWyJhaWQiXSk7CgoJCQkkbGlM
aW5rID0gdGFnKCRuYXZiYXJbJGldWyJuYW1lIl0sICJhIiwgJGFBdHRzKTsKCQkJJHBfb3V0
IC49IHRhZygkbGlMaW5rLCAibGkiLCAkbGlBdHRzKS5uOwoJCX0gZWxzZSB7CgkJCS8vIG5v
IGxpbmssIGp1c3QgdGV4dAoJCQkkcF9vdXQgLj0gdGFnKCRuYXZiYXJbJGldWyJuYW1lIl0s
ICJsaSIsICRsaUF0dHMpLm47CgkJfQoJfQoJcmV0dXJuKCRwX291dCk7Cn0KCgpmdW5jdGlv
biBha29fcGFyc2VfbGlfMygkbmF2YmFyLCAkZnVsbFVybCkgewoJLy8gbm8gbGluayB0byBj
dXJyZW50IHNlbGVjdGlvbiwgYWRkIGNsYXNzPSJhY3RpdmUiIHRvIGFuY2hvciB0YWdzCgkv
LyB0aGlzIGRvZXNuJ3QgbWFrZSBzZW5zZS4uLgoJZ2xvYmFsICRwcmV0ZXh0LCAkc2l0ZXVy
bDsKCSRzZWN0aW9uID0gJHByZXRleHRbJ3MnXTsKCgkkcCA9IChkZWZpbmVkKCdQUk9UT0NP
TCcpKSA/IFBST1RPQ09MIDogJ2h0dHA6Ly8nOwoJJHBzID0gYXJyYXkoImh0dHA6Ly8iLCAi
aHR0cHM6Ly8iLCAiZnRwOi8vIiwgImZ0cHM6Ly8iLCAibWFpbHRvOiIpOwoKCSRzZWN0aW9u
ID0gKCRzZWN0aW9uID09ICJkZWZhdWx0IikgPyAiIiA6ICRzZWN0aW9uOwoJJHBfb3V0ID0g
IiI7Cglmb3IgKCRpID0gMDsgJGkgPCBjb3VudCgkbmF2YmFyKTsgJGkrKykgewoJCWlmICgk
aSA9PSAwKSB7CgkJCSRsaUF0dHMgPSBha29fcGFyc2VfaWQoJG5hdmJhclskaV1bImxpaWQi
XSkgLiBha29fcGFyc2VfY2xhc3MoJG5hdmJhclskaV1bImxpY2xhc3MiXSwgZmFsc2UsICRu
YXZiYXJbJGldWyJsaWZjaGlsZCJdKTsKCQl9IGVsc2UgaWYgKCRpID09IChjb3VudCgkbmF2
YmFyKSAtIDEpKSB7CgkJCSRsaUF0dHMgPSBha29fcGFyc2VfaWQoJG5hdmJhclskaV1bImxp
aWQiXSkgLiBha29fcGFyc2VfY2xhc3MoJG5hdmJhclskaV1bImxpY2xhc3MiXSwgZmFsc2Us
ICRuYXZiYXJbJGldWyJsaWxjaGlsZCJdKTsKCQl9IGVsc2UgewoJCQkkbGlBdHRzID0gYWtv
X3BhcnNlX2lkKCRuYXZiYXJbJGldWyJsaWlkIl0pIC4gYWtvX3BhcnNlX2NsYXNzKCRuYXZi
YXJbJGldWyJsaWNsYXNzIl0sIGZhbHNlKTsKCQl9CgkJaWYgKCFlbXB0eSgkbmF2YmFyWyRp
XVsidXJsIl0pKSB7CgkJCS8vIHRoZXJlIGlzIGEgbGluawoJCQlpZiAoYWtvX2NsYXNzQWN0
aXZlaXplKCRzZWN0aW9uLCAkbmF2YmFyWyRpXVsidXJsIl0pKSB7CgkJCQkkcF9vdXQgLj0g
dGFnKCRuYXZiYXJbJGldWyJuYW1lIl0sICJsaSIsICRsaUF0dHMpLm47CgkJCX0gZWxzZSB7
CgkJCQkkYUF0dHMgID0gIiBocmVmPVwiIi4gKCgkZnVsbFVybCB8fCAoc3RycG9zKCRuYXZi
YXJbJGldWyJ1cmwiXSwgJHBzKSAhPT0gZmFsc2UpKQoJCQkJCT8gJG5hdmJhclskaV1bInVy
bCJdCgkJCQkJOiAkcC4kc2l0ZXVybC4kbmF2YmFyWyRpXVsidXJsIl0pIC4iXCIiOwoJCQkJ
JGFBdHRzIC49IGFrb19wYXJzZV90aXRsZSgkbmF2YmFyWyRpXVsidGl0bGUiXSk7CgkJCQkk
YUF0dHMgLj0gIiBhY2Nlc3NrZXk9XCIiLiAkbmF2YmFyWyRpXVsiYWNjZXNza2V5Il0gLiJc
IiI7CgkJCQlpZiAoJGkgPT0gMCkgewoJCQkJCSRhQXR0cyAuPSBha29fcGFyc2VfY2xhc3Mo
JG5hdmJhclskaV1bImFjbGFzcyJdLCBmYWxzZSwgJG5hdmJhclskaV1bImFmY2hpbGQiXSk7
CgkJCQl9IGVsc2UgaWYgKCRpID09IChjb3VudCgkbmF2YmFyKSAtIDEpKSB7CgkJCQkJJGFB
dHRzIC49IGFrb19wYXJzZV9jbGFzcygkbmF2YmFyWyRpXVsiYWNsYXNzIl0sIGZhbHNlLCAk
bmF2YmFyWyRpXVsiYWxjaGlsZCJdKTsKCQkJCX0gZWxzZSB7CgkJCQkJJGFBdHRzIC49IGFr
b19wYXJzZV9jbGFzcygkbmF2YmFyWyRpXVsiYWNsYXNzIl0sIGZhbHNlKTsKCQkJCX0KCQkJ
CSRhQXR0cyAuPSBha29fcGFyc2VfaWQoJG5hdmJhclskaV1bImFpZCJdKTsKCgkJCQkkbGlM
aW5rID0gdGFnKCRuYXZiYXJbJGldWyJuYW1lIl0sICJhIiwgJGFBdHRzKTsKCQkJCSRwX291
dCAuPSB0YWcoJGxpTGluaywgImxpIiwgJGxpQXR0cykubjsKCQkJfQoJCX0gZWxzZSB7CgkJ
CS8vIG5vIGxpbmssIGp1c3QgdGV4dAoJCQkkcF9vdXQgLj0gdGFnKCRuYXZiYXJbJGldWyJu
YW1lIl0sICJsaSIsICRsaUF0dHMpLm47CgkJfQoJfQoJcmV0dXJuKCRwX291dCk7Cn0KCgpm
dW5jdGlvbiBha29fcGFyc2VfbGlfNCgkbmF2YmFyLCAkZnVsbFVybCkgewoJLy8gbm8gbGlu
ayB0byBjdXJyZW50IHNlbGVjdGlvbiwgYWRkIGNsYXNzPSJhY3RpdmUiIHRvIGxpc3QgaXRl
bXMKCWdsb2JhbCAkcHJldGV4dCwgJHNpdGV1cmw7Cgkkc2VjdGlvbiA9ICRwcmV0ZXh0Wydz
J107CgoJJHAgPSAoZGVmaW5lZCgnUFJPVE9DT0wnKSkgPyBQUk9UT0NPTCA6ICdodHRwOi8v
JzsKCSRwcyA9IGFycmF5KCJodHRwOi8vIiwgImh0dHBzOi8vIiwgImZ0cDovLyIsICJmdHBz
Oi8vIiwgIm1haWx0bzoiKTsKCgkkc2VjdGlvbiA9ICgkc2VjdGlvbiA9PSAiZGVmYXVsdCIp
ID8gIiIgOiAkc2VjdGlvbjsKCSRwX291dCA9ICIiOwoJZm9yICgkaSA9IDA7ICRpIDwgY291
bnQoJG5hdmJhcik7ICRpKyspIHsKCQlpZiAoJGkgPT0gMCkgewoJCQkkbGlBdHRzID0gYWtv
X3BhcnNlX2lkKCRuYXZiYXJbJGldWyJsaWlkIl0pIC4gYWtvX3BhcnNlX2NsYXNzKCRuYXZi
YXJbJGldWyJsaWNsYXNzIl0sIGFrb19jbGFzc0FjdGl2ZWl6ZSgkc2VjdGlvbiwgJG5hdmJh
clskaV1bInVybCJdKSwgJG5hdmJhclskaV1bImxpZmNoaWxkIl0pOwoJCX0gZWxzZSBpZiAo
JGkgPT0gKGNvdW50KCRuYXZiYXIpIC0gMSkpIHsKCQkJJGxpQXR0cyA9IGFrb19wYXJzZV9p
ZCgkbmF2YmFyWyRpXVsibGlpZCJdKSAuIGFrb19wYXJzZV9jbGFzcygkbmF2YmFyWyRpXVsi
bGljbGFzcyJdLCBha29fY2xhc3NBY3RpdmVpemUoJHNlY3Rpb24sICRuYXZiYXJbJGldWyJ1
cmwiXSksICRuYXZiYXJbJGldWyJsaWZjaGlsZCJdKTsKCQl9IGVsc2UgewoJCQkkbGlBdHRz
ID0gYWtvX3BhcnNlX2lkKCRuYXZiYXJbJGldWyJsaWlkIl0pIC4gYWtvX3BhcnNlX2NsYXNz
KCRuYXZiYXJbJGldWyJsaWNsYXNzIl0sIGFrb19jbGFzc0FjdGl2ZWl6ZSgkc2VjdGlvbiwg
JG5hdmJhclskaV1bInVybCJdKSk7CgkJfQoJCWlmICghZW1wdHkoJG5hdmJhclskaV1bInVy
bCJdKSkgewoJCQkvLyB0aGVyZSBpcyBhIGxpbmsKCQkJaWYgKGFrb19jbGFzc0FjdGl2ZWl6
ZSgkc2VjdGlvbiwgJG5hdmJhclskaV1bInVybCJdKSkgewoJCQkJLy8gd2UncmUgaW4gY3Vy
cmVudCBzZWN0aW9uLCBubyBsaW5rIHRvIGl0CgkJCQkkcF9vdXQgLj0gdGFnKCRuYXZiYXJb
JGldWyJuYW1lIl0sICJsaSIsICRsaUF0dHMpLm47CgkJCX0gZWxzZSB7CgkJCQkvLyBub3Qg
aW4gY3VycmVudCBzZWN0aW9uLCBsaW5rIHRvIHRob3NlLgoJCQkJJGFBdHRzICA9ICIgaHJl
Zj1cIiIuICgoJGZ1bGxVcmwgfHwgKHN0cnBvcygkbmF2YmFyWyRpXVsidXJsIl0sICRwcykg
IT09IGZhbHNlKSkKCQkJCQk/ICRuYXZiYXJbJGldWyJ1cmwiXQoJCQkJCTogJHAuJHNpdGV1
cmwuJG5hdmJhclskaV1bInVybCJdKSAuIlwiIjsKCQkJCSRhQXR0cyAuPSBha29fcGFyc2Vf
dGl0bGUoJG5hdmJhclskaV1bInRpdGxlIl0pOwoJCQkJJGFBdHRzIC49ICIgYWNjZXNza2V5
PVwiIi4gJG5hdmJhclskaV1bImFjY2Vzc2tleSJdIC4iXCIiO2lmICgkaSA9PSAwKSB7CgkJ
CQkJJGFBdHRzIC49IGFrb19wYXJzZV9jbGFzcygkbmF2YmFyWyRpXVsiYWNsYXNzIl0sIGZh
bHNlLCAkbmF2YmFyWyRpXVsiYWZjaGlsZCJdKTsKCQkJCX0gZWxzZSBpZiAoJGkgPT0gKGNv
dW50KCRuYXZiYXIpIC0gMSkpIHsKCQkJCQkkYUF0dHMgLj0gYWtvX3BhcnNlX2NsYXNzKCRu
YXZiYXJbJGldWyJhY2xhc3MiXSwgZmFsc2UsICRuYXZiYXJbJGldWyJhbGNoaWxkIl0pOwoJ
CQkJfSBlbHNlIHsKCQkJCQkkYUF0dHMgLj0gYWtvX3BhcnNlX2NsYXNzKCRuYXZiYXJbJGld
WyJhY2xhc3MiXSwgZmFsc2UpOwoJCQkJfQoJCQkJJGFBdHRzIC49IGFrb19wYXJzZV9pZCgk
bmF2YmFyWyRpXVsiYWlkIl0pOwoKCQkJCSRsaUxpbmsgPSB0YWcoJG5hdmJhclskaV1bIm5h
bWUiXSwgImEiLCAkYUF0dHMpOwoJCQkJJHBfb3V0IC49IHRhZygkbGlMaW5rLCAibGkiLCAk
bGlBdHRzKS5uOwoJCQl9CgkJfSBlbHNlIHsKCQkJLy8gbm8gbGluaywganVzdCB0ZXh0CgkJ
CSRwX291dCAuPSB0YWcoJG5hdmJhclskaV1bIm5hbWUiXSwgImxpIiwgJGxpQXR0cykubjsK
CQl9Cgl9CglyZXR1cm4oJHBfb3V0KTsKfQoKCmZ1bmN0aW9uIGFrb19jbGFzc0FjdGl2ZWl6
ZSgkc2VjLCAkbmlVcmwpIHsgLy8gc2VjdGlvbiwgbmF2YmFyW2ldW3VybF0KCXJldHVybiAo
KHN0cnBvcygkc2VjLCBzdWJzdHIoJG5pVXJsLCAxKSkgIT09IGZhbHNlKSB8fCAoISRzZWMg
JiYgKCFzdWJzdHIoJG5pVXJsLCAxKSkpKTsKLy8JcmV0dXJuICggKHN0cnBvcygkc2VjLCBz
dWJzdHIoJG5pVXJsLCAxKSkgIT09IGZhbHNlKSB8fCAoISRzZWMgJiYgKCFzdWJzdHIoJG5p
VXJsLCAxKSkpIHx8IChzdHJwb3MoJHNlYy4iLyIsIHN1YnN0cigkbmlVcmwsIDEpKSAhPT0g
ZmFsc2UpICk7Cn0KCmZ1bmN0aW9uIGFrb19wYXJzZV90aXRsZSgkdGl0bGUpIHsKCXJldHVy
bigoZW1wdHkoJHRpdGxlKSkKCQk/CSIiCgkJOgkiIHRpdGxlPVwiJHRpdGxlXCIiKTsKfQoK
ZnVuY3Rpb24gYWtvX3BhcnNlX2lkKCRpZCkgewoJcmV0dXJuKChlbXB0eSgkaWQpKQoJCT8J
IiIKCQk6CSIgaWQ9XCIkaWRcIiIpOwp9CgpmdW5jdGlvbiBha29fcGFyc2VfY2xhc3MoJGNs
YXNzLCAkYWN0aXZlLCAkY2hpbGQgPSAnJykgeyAvLyBhID0+IGJvb2wsIHRydWU9aXRzIGFj
dGl2ZQoJZ2xvYmFsICRhY3RpY2xhc3M7CglpZiAoJGFjdGl2ZSkgewoJCSRwX291dCA9IChl
bXB0eSgkY2xhc3MpKQoJCQk/CShlbXB0eSgkY2hpbGQpID8gIiBjbGFzcz1cIiRhY3RpY2xh
c3NcIiIgOiAiIGNsYXNzPVwiJGFjdGljbGFzcyAkY2hpbGRcIiIpCgkJCToJKGVtcHR5KCRj
aGlsZCkgPyAiIGNsYXNzPVwiJGNsYXNzICRhY3RpY2xhc3NcIiIgOiAiIGNsYXNzPVwiJGNs
YXNzICRhY3RpY2xhc3MgJGNoaWxkXCIiKTsKCX0gZWxzZSB7CgkJJHBfb3V0ID0gKGVtcHR5
KCRjbGFzcykpCgkJCT8JKGVtcHR5KCRjaGlsZCkgPyAiIiA6ICIgY2xhc3M9XCIkY2hpbGRc
IiIpCgkJCToJKGVtcHR5KCRjaGlsZCkgPyAiIGNsYXNzPVwiJGNsYXNzXCIiIDogIiBjbGFz
cz1cIiRjbGFzcyAkY2hpbGRcIiIpOwoJfQoJcmV0dXJuKCRwX291dCk7Cn0KCi8vIGlmIG5v
IHBhZ2VzIC8gdXJscyBhcmUgc3BlY2lmaWVkLgpmdW5jdGlvbiBha29fbmF2X2hlbHAoJGVy
cm9yKSB7CgkkZXJyID0gc3Ryb25nKCJXYXJuaW5nOiIpOwoJJGxpbmsgPSB0YWcoImhlbHAg
ZmlsZSIsICJhIiwgJyBocmVmPSJodHRwOi8vd3d3LmFrby1rLmNvbS9hcmNoaXZlLzEwOCIg
dGl0bGU9IkhlbHAgZmlsZSBmb3IgYWtvX25hdiInKTsKCXJldHVybihncmFmKCRlcnIuIiBO
byBwYWdlICIuJGVycm9yLiImIzgyMTc7cyBzcGVjaWZpZWQgaW4gYXR0cmlidXRlcyBmb3Ig
YWtvX25hdi4gIFBsZWFzZSBzZWUgdGhlICRsaW5rIGZvciBtb3JlIGluZm9ybWF0aW9uLiIu
bikpOwp9Ci8vIENvbmdyYXR1bGF0aW9ucyEKLy8gWW91J3ZlIG1hZGUgaXQgdG8gdGhlIGVu
ZCBvZiBteSBjb2RlLi4uIjtzOjg6ImhlbHBfcmF3IjtzOjUwMjQ6ImgyLiBha29fbmF2IEhl
bHAgRmlsZQoKaDMuIEEgZHluYW1pYyBwb3J0YWJsZSBuYXZpZ2F0aW9uIGNyZWF0b3IuCgpo
NC4gV2hhdCBkb2VzIGl0IGRvPwoKKiBDcmVhdGVzIGEgcHJpbWFyeSBAZGl2QCAob3B0aW9u
YWxseSkuCiogSW5zaWRlIHRoZSBAZGl2QCwgYSBoZWFkaW5nIGlzIGFkZGVkIGZvciB0aGUg
bmF2IGJhciAob3B0aW9uYWxseSkuCiogQ3JlYXRlcyBhIEB1bEAgdG8gaG9sZCB0aGUgbmF2
IGJhci4KKiBHb2VzIHRocm91Z2ggZ2l2ZW4gdXJscyBhbmQgbmFtZXMgb2YgcGFnZXMgYW5k
IGR5bm1pY2FsbHkgYWRkcyB0aGVtIGFzIEBsaUAncwoqIEBjbGFzcz0iYWN0aXZlIkAgaXMg
YXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgY3VycmVudCBwYWdlJ3MgQGFAIHRhZyAob3Ig
b3B0aW9uYWxseSwgQGxpQCB0YWcpLgoKCmg0LiBFeGFtcGxlcwoKVGhlIHNpbXBsZXN0IGZv
cm0gaXMgdGhpczoKCmJxLiBAPHR4cDpha29fbmF2IG5hbWU9ImhvbWUsYWJvdXQsY29udGFj
dCIgdXJsPSIvLC9hYm91dCwvY29udGFjdCIgLz5ACgppdCB3aWxsIHByb2R1Y2Ugc29tZXRo
aW5nIGxpa2UgdGhpczoKCmJxLiA8cHJlPjxkaXY+CjxoMj5OYXZpZ2F0aW9uPC9oMj4KCTx1
bD4KCQk8bGk+PGEgaHJlZj0iLyI+aG9tZTwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIvYWJv
dXQiPmFib3V0PC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9Ii9jb250YWN0Ij5jb250YWN0PC9h
PjwvbGk+Cgk8L3VsPgo8L2Rpdj48L3ByZT4KCkFkZCBzb21lIG9mIHRoZSB0YWdzIGJlbG93
IHRvIGdldCBhIGxvdCBtb3JlIGNyZWF0aXZlLgoKCmg0LiBQbGVhc2Ugbm90ZToKClRoZSB1
cmwgYXR0cmlidXRlcyBzaG91bGQgYmUgcmVsYXRpdmUgdG8gdGhlIHJvb3Qgb2YgeW91ciBz
aXRlLiAgVGhhdCBpcywgaWYgeW91IGFyZSBydW5uaW5nIHlvdXIgc2l0ZSBvdXQgb2YgYSBz
dWJkaXJlY3RvcnksIHlvdSBkbyAqbm90KiBuZWVkIHRvIGluY2x1ZGUgdGhlIHN1YmRpcmVj
dG9yeSBpbiB0aGUgdXJsIGF0dHJpYnV0ZS4gIChJbiBmYWN0LCBkb24ndCBpbmNsdWRlIGl0
LikKRm9yIGV4YW1wbGUsIGlmIHlvdSBhcmUgcnVubmluZyB5b3VyIHNpdGUgYXQgaHR0cDov
L3d3dy5ha28tay5jb20vd293LywgYW5kIHlvdSB3YW50ZWQgdG8gdXNlIGFrb19uYXYgdG8g
bWFrZSBhIG5hdmlnYXRpb24gYmFyIHRvIHRoZSBhYm91dCBhbmQgbGlua3MgcGFnZSwgdGhl
IGNvZGUgd291bGQgYmUKCmJxLiBAPHR4cDpha29fbmF2IG5hbWU9ImhvbWUsYWJvdXQsY29u
dGFjdCIgdXJsPSIvLC9hYm91dCwvbGlua3MiIC8+QAphbmQgbm90Ci1APHR4cDpha29fbmF2
IG5hbWU9ImhvbWUsYWJvdXQsY29udGFjdCIgdXJsPSIvd293Lywvd293L2Fib3V0LC93b3cv
bGlua3MiIC8+QC0KCgpoNC4gVGFncwoKKiBfUmVxdWlyZWRfCioqICpuYW1lKiAtIFRoaXMg
aXMgYSBsaXN0IG9mIHBhZ2UgbmFtZXMsIGRlbGltaXRlZCBieSBjb21tYXMgKGFuZCBubyBz
cGFjZXMpLCB1bmxlc3MgdGhlICJkZWxpbSIgYXR0cmlidXRlIGlzIHNldCBhcyBzb21ldGhp
bmcgZWxzZS4KKiogKnVybCogLSBUaGlzIGlzIGEgbGlzdCBvZiBwYWdlIHVybCdzLCBmb2xs
b3dpbmcgdGhlIHNhbWUgb3JkZXIgYXMgdGhlIHBhZ2UgbmFtZXMsIGFuZCBhbHNvIGRlbGlt
aXRlZCBieSBjb21tYXMgKGFuZCBubyBzcGFjZXMpLCB1bmxlc3MgdGhlICJkZWxpbSIgYXR0
cmlidXRlIGlzIHNldCBhcyBzb21ldGhpbmcgZWxzZS4KKiBfT3B0aW9uYWxfCioqICp0aXRs
ZSogLSBUaGlzIGlzIGEgbGlzdCBvZiBAdGl0bGVAIGF0dHJpYnV0ZXMgZm9yIHRoZSBAYUAg
dGFncywgZGVsaW1pdGVkIGJ5IGNvbW1hcyAoYW5kIG5vIHNwYWNlcyksIHVubGVzcyB0aGUg
ImRlbGltIiBhdHRyaWJ1dGUgaXMgc2V0IGFzIHNvbWV0aGluZyBlbHNlLgoqKiAqdWxpZCog
LSBUaGlzIGlzIGFuIGlkIGZvciB0aGUgQHVsQCB0YWcuCioqICp1bGNsYXNzKiAtIFRoaXMg
aXMgYSBjbGFzcyBmb3IgdGhlIEB1bEB0YWcuCioqICpsaWlkcyogLSBUaGlzIGlzIGEgbGlz
dCBvZiBpZCBhdHRyaWJ1dGVzIGZvciB0aGUgQGxpQCB0YWcsIGRlbGltaXRlZCBieSBjb21t
YXMgKGFuZCBubyBzcGFjZXMpLCB1bmxlc3MgdGhlICJkZWxpbSIgYXR0cmlidXRlIGlzIHNl
dCBhcyBzb21ldGhpbmcgZWxzZS4KKiogKmxpY2xhc3MqIC0gVGhpcyBpcyBhIGNsYXNzIGZv
ciB0aGUgQGxpQHRhZy4KKiogKmFmY2hpbGQqIC0gJXtjb2xvcjpyZWR9IE5ldyBpbiAxLjAh
JSBUaGlzIGlzIGFuIGFkZGl0aW9uYWwgY2xhc3MgYXR0cmlidXRlIGZvciB0aGUgQGxpQCB0
YWcsIG9ubHkgYXBwbGllZCB0byB0aGUgX2ZpcnN0XyBpdGVtIGluIHRoZSBsaXN0LgoqKiAq
YWxjaGlsZCogLSAle2NvbG9yOnJlZH0gTmV3IGluIDEuMCElIFRoaXMgaXMgYW4gYWRkaXRp
b25hbCBjbGFzcyBhdHRyaWJ1dGUgZm9yIHRoZSBAbGlAIHRhZywgb25seSBhcHBsaWVkIHRv
IHRoZSBfbGFzdF8gaXRlbSBpbiB0aGUgbGlzdC4KKiogKmFpZHMqIC0gVGhpcyBpcyBhIGxp
c3Qgb2YgaWQgYXR0cmlidXRlcyBmb3IgdGhlIEBhQCB0YWdzLCBkZWxpbWl0ZWQgYnkgY29t
bWFzIChhbmQgbm8gc3BhY2VzKSwgdW5sZXNzIHRoZSAiZGVsaW0iIGF0dHJpYnV0ZSBpcyBz
ZXQgYXMgc29tZXRoaW5nIGVsc2UuCioqICphY2xhc3MqIC0gVGhpcyBpcyBhIGNsYXNzIGZv
ciB0aGUgQGFAdGFnLgoqKiAqYWZjaGlsZCogLSAle2NvbG9yOnJlZH0gTmV3IGluIDEuMCEl
IFRoaXMgaXMgYW4gYWRkaXRpb25hbCBjbGFzcyBhdHRyaWJ1dGUgZm9yIHRoZSBAYUAgdGFn
LCBvbmx5IGFwcGxpZWQgdG8gdGhlIF9maXJzdF8gaXRlbSBpbiB0aGUgbGlzdC4KKiogKmFs
Y2hpbGQqIC0gJXtjb2xvcjpyZWR9IE5ldyBpbiAxLjAhJSBUaGlzIGlzIGFuIGFkZGl0aW9u
YWwgY2xhc3MgYXR0cmlidXRlIGZvciB0aGUgQGFAIHRhZywgb25seSBhcHBsaWVkIHRvIHRo
ZSBfbGFzdF8gaXRlbSBpbiB0aGUgbGlzdC4KKiogKnNwYW53cmFwKiAtIFRoaXMgaXMgZm9y
IHdoZXRoZXIgb3Igbm90IHRoZSB0ZXh0IGlzIHdyYXBwZWQgaW4gQHNwYW5AIHRhZ3MuICAw
ID0gbm90IHdyYXBwZWQsIDEgPSB3cmFwcGVkLiBCeSBkZWZhdWx0LCBpdCBpcyBub3Qgd3Jh
cHBlZCAoMCkuCioqICpzcGFuY2xhc3MqIC0gVGhpcyBpcyBhIGNsYXNzIGZvciB0aGUgQHNw
YW5AdGFnLgoqKiAqc3BhbmlkcyogLSAle2NvbG9yOnJlZH0gTmV3IGluIDEuMCElICBUaGlz
IGlzIGEgbGlzdCBvZiBpZCBhdHRyaWJ1dGVzIGZvciB0aGUgQHNwYW5AIHRhZywgZGVsaW1p
dGVkIGJ5IGNvbW1hcyAoYW5kIG5vIHNwYWNlcyksIHVubGVzcyB0aGUgImRlbGltIiBhdHRy
aWJ1dGUgaXMgc2V0IGFzIHNvbWV0aGluZyBlbHNlLgoqKiAqZGl2aWQqIC0gVGhpcyBpcyBh
biBpZCBmb3IgdGhlIEBkaXZAIGNvbnRhaW5lci4KKiogKmRpdmNsYXNzKiAtIFRoaXMgaXMg
YSBjbGFzcyBmb3IgdGhlIEBkaXZAIGNvbnRhaW5lci4KKiogKmRpdm9uKiAtIFRoaXMgaXMg
Zm9yIHdoZXRoZXIgb3Igbm90IHRoZSBAZGl2QCBpcyBkaXNwbGF5ZWQuICAwID0gbm90IGRp
c3BsYXllZCwgMSA9IGRpc3BsYXllZC4gQnkgZGVmYXVsdCwgaXQgaXMgZGlzcGxheWVkICgx
KS4KKiogKmhlYWRpZCogLSBUaGlzIGlzIGFuIGlkIGZvciB0aGUgaGVhZGVyIHRhZy4KKiog
KmhlYWRjbGFzcyogLSBUaGlzIGlzIGEgY2xhc3MgZm9yIHRoZSBoZWFkZXIgdGFnLgoqKiAq
aGVhZG9uKiAtIFRoaXMgaXMgZm9yIHdoZXRoZXIgb3Igbm90IHRoZSBoZWFkZXIgdGV4dCBp
cyBkaXNwbGF5ZWQuICAwID0gbm90IGRpc3BsYXllZCwgMSA9IGRpc3BsYXllZC4gQnkgZGVm
YXVsdCwgaXQgaXMgZGlzcGxheWVkICgxKS4KKiogKmhlYWR0eHQqIC0gVGhpcyBpcyB0aGUg
dGV4dCBpbnNpZGUgdGhlIGhlYWRlciBpdHMgc2VsZi4gIEJ5IGRlZmF1bHQsIHRoaXMgaXMg
Ik5hdmlnYXRpb24iLgoqKiAqaGVhZGx2bCogLSBUaGlzIGlzIHRoZSBsZXZlbCB0aGF0IHRo
ZSBAaEAgdGFnIGlzLCBiZXR3ZWVuIDEgYW5kIDYuICBCeSBkZWZhdWx0LCB0aGlzIGlzIDIu
CioqICpjdXJsaW5rKiAtIFRoaXMgaXMgYW4gb3B0aW9uIGFzIHRvIHdoZXRoZXIgb3Igbm90
IHRoZSBjdXJyZW50IHNlY3Rpb24gaXMgbGlua2VkLiAgMCA9IG5vdCBsaW5rZWQsIDEgPSBs
aW5rZWQuICBCeSBkZWZhdWx0LCBpdCBpcyBsaW5rZWQgKDEpLgoqKiAqY2xhc3N0YWcqIC0g
VGhpcyBpcyBhbiBvcHRpb24gd2hpY2ggYWxsb3dzIHlvdSB0byBhZGQgdGhlIEBjbGFzcz0i
YWN0aXZlIkAgdG8gZWl0aGVyIHRoZSBAYUAgb3IgdGhlIEBsaUAgdGFnLiAgMCA9IGl0IGlz
IGFkZGVkIHRvIHRoZSBAYUAgdGFnLCAxID0gaXQgaXMgYWRkZWQgdG8gdGhlIEBsaUAgdGFn
LiAgQnkgZGVmYXVsdCwgaXQgaXMgYWRkZWQgdG8gdGhlIEBhQCB0YWcgKDApLgoqKiAqYWN0
aWNsYXNzKiAtICV7Y29sb3I6cmVkfSBOZXcgaW4gMS4wISUgVGhpcyBpcyBhbiBvcHRpb24g
dG8gY2hhbmdlIHRoZSB0aGUgQGNsYXNzPSJhY3RpdmUiQCB0byB3aGF0ZXZlciB5b3Ugd291
bGQgbGlrZS4gQnkgZGVmYXVsdCwgdGhpcyBpcyAiYWN0aXZlIi4KKiogKmRlbGltKiAtICV7
Y29sb3I6cmVkfSBOZXcgaW4gMS4wISUgVGhpcyBpcyB0aGUgY2hhcmFjdGVyKHMpIHdoaWNo
IHdpbGwgYWN0IGFzIGEgZGVsaW1pdGVyIGZvciB0aGUgb3RoZXIgYXR0cmlidXRlcyB3aGlj
aCB0YWtlIGEgbGlzdCwgc3VjaCBhcyAibmFtZSwiICJ1cmwsIiBldGMuICBCeSBkZWZhdWx0
LCB0aGlzIGlzIGEgY29tbWEgKCIsIikgYnV0IGNhbiBiZSBjaGFuZ2VkIHRvIGFueSBvdGhl
ciBjaGFyYWN0ZXIocykuCioqICphY2Nlc3NrZXlzKiAtICV7Y29sb3I6cmVkfSBOZXcgaW4g
MS4wISUgVGhpcyBpcyBhIGxpc3Qgb2YgYWNjZXNza2V5IGF0dHJpYnV0ZXMgZm9yIHRoZSBA
YUAgdGFncywgZGVsaW1pdGVkIGJ5IGNvbW1hcyAoYW5kIG5vIHNwYWNlcyksIHVubGVzcyB0
aGUgImRlbGltIiBhdHRyaWJ1dGUgaXMgc2V0IGFzIHNvbWV0aGluZyBlbHNlLgoKPGhyIC8+
ClRoYW5rcyBmb3IgdXNpbmcgKmFrb19uYXYqLCBhbmQgaGF2ZSBmdW4hIjtzOjM6Im1kNSI7
czozMjoiOWM4NzRlM2IyNjY3MThkNmEwYjY4NjFhMThkMzE4MDciO3M6ODoiY29tcHJlc3Mi
O2I6MDt9
