play-cljc.gl.core
play-cljc.gl.entities-2d
play-cljc.gl.entities-3d
play-cljc.gl.example-data
play-cljc.gl.example-fonts
play-cljc.gl.example-utils
play-cljc.gl.examples-2d
play-cljc.gl.examples-3d
play-cljc.gl.examples-advanced
play-cljc.gl.examples-text
play-cljc.gl.text
play-cljc.gl.utils
play-cljc.instances
play-cljc.macros-common
play-cljc.macros-java
play-cljc.macros-js
play-cljc.math
play-cljc.primitives-2d
play-cljc.primitives-3d
play-cljc.text
play-cljc.transforms
(translation-example game)
Example
(
play-cljc.gl.core/render
game
(
->
(
assoc
entity
:viewport
{
:x
0
,
:y
0
,
:width
game-width
,
:height
game-height
}
)
(
play-cljc.transforms/project
game-width
game-height
)
(
play-cljc.transforms/translate
x
y
)
(
play-cljc.transforms/color
[
1
0
0.5
1
]
)
)
)
Source
(
defn
translation-example
[
game
]
(
gl
game
disable
(
gl
game
CULL_FACE
)
)
(
gl
game
disable
(
gl
game
DEPTH_TEST
)
)
(
let
[
entity
(
->
(
c/compile
game
(
e/->entity
game
data/f-2d
)
)
(
assoc
:clear
{
:color
[
0
0
0
0
]
,
:depth
1
}
)
)
*state
(
atom
{
:x
0
,
:y
0
}
)
]
(
eu/listen-for-mouse
game
*state
)
(
assoc
game
:entity
entity
:*state
*state
)
)
)
ezpkeW5hZG9jLmNvbW1vbi9zdGF0aWM/IHRydWUsIDpkeW5hZG9jLmNvbW1vbi90eXBlIDpjbGpzLCA6ZHluYWRvYy5jb21tb24vbnNlcyAoezp2YXItc3ltcyBbLT5nYW1lIGNvbXBpbGUgcmVuZGVyXSwgOnR5cGUgOmNsanMsIDpzeW0gcGxheS1jbGpjLmdsLmNvcmV9IHs6dmFyLXN5bXMgWy0+Y2FtZXJhIC0+ZW50aXR5IC0+aW1hZ2UtZW50aXR5XSwgOnR5cGUgOmNsanMsIDpzeW0gcGxheS1jbGpjLmdsLmVudGl0aWVzLTJkfSB7OnZhci1zeW1zIFstPmNhbWVyYSAtPmVudGl0eV0sIDp0eXBlIDpjbGpzLCA6c3ltIHBsYXktY2xqYy5nbC5lbnRpdGllcy0zZH0gezp2YXItc3ltcyBbYWR2YW5jZWQtdmVydGV4LXNoYWRlciBmLTNkIHRleHR1cmUtZnJhZ21lbnQtc2hhZGVyIGYtMmQgZi10ZXhjb29yZHMgZi0zZC1jb2xvcnMgdGV4dHVyZS12ZXJ0ZXgtc2hhZGVyIGFkdmFuY2VkLWZyYWdtZW50LXNoYWRlciBjdWJlLXRleGNvb3JkcyBjdWJlXSwgOnR5cGUgOmNsanMsIDpzeW0gcGxheS1jbGpjLmdsLmV4YW1wbGUtZGF0YX0gezp2YXItc3ltcyBbYml0bWFwcyBmb250LWhlaWdodCBiYWtlZC1mb250cyBiaXRtYXAtc2l6ZSBsb2FkLWZvbnQtY2xqcyBsb2FkLWZvbnQtY2xqXSwgOnR5cGUgOmNsaiwgOnN5bSBwbGF5LWNsamMuZ2wuZXhhbXBsZS1mb250c30gezp2YXItc3ltcyBbdGV4dHVyZXMgbGlzdGVuLWZvci1tb3VzZSBnZXQtc2l6ZSBnZXQtd2lkdGggY29zIHJlc2l6ZS1leGFtcGxlIGdldC1pbWFnZSBnZXQtaGVpZ2h0IFBJIGluaXQtZXhhbXBsZSBnYW1lLWxvb3Agc2luXSwgOnR5cGUgOmNsanMsIDpzeW0gcGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHN9IHs6dmFyLXN5bXMgW3JhbmQtcmVjdHMtZXhhbXBsZSBpbWFnZS1leGFtcGxlIHRyYW5zbGF0aW9uLWV4YW1wbGUgcm90YXRpb24tZXhhbXBsZSBzY2FsZS1leGFtcGxlIHJvdGF0aW9uLW11bHRpLWV4YW1wbGVdLCA6dHlwZSA6Y2xqcywgOnN5bSBwbGF5LWNsamMuZ2wuZXhhbXBsZXMtMmR9IHs6dmFyLXN5bXMgW3NjYWxlLTNkLWV4YW1wbGUgcGVyc3BlY3RpdmUtdGV4dHVyZS1tZXRhLTNkLWV4YW1wbGUgcGVyc3BlY3RpdmUtdGV4dHVyZS1kYXRhLTNkLWV4YW1wbGUgcGVyc3BlY3RpdmUtM2QtZXhhbXBsZSByb3RhdGlvbi0zZC1leGFtcGxlIHBlcnNwZWN0aXZlLXRleHR1cmUtM2QtZXhhbXBsZSBwZXJzcGVjdGl2ZS1jYW1lcmEtdGFyZ2V0LTNkLWV4YW1wbGUgdHJhbnNsYXRpb24tM2QtZXhhbXBsZSBwZXJzcGVjdGl2ZS1jYW1lcmEtM2QtZXhhbXBsZSBwZXJzcGVjdGl2ZS1hbmltYXRpb24tM2QtZXhhbXBsZV0sIDp0eXBlIDpjbGpzLCA6c3ltIHBsYXktY2xqYy5nbC5leGFtcGxlcy0zZH0gezp2YXItc3ltcyBbY3Jlc2NlbnQtM2QtaW5pdCBiYWxscy0zZCBwbGFuZXMtM2QtaW5pdCBwbGFuZXMtM2QgZGlzYy0zZC1pbml0IGFkdmFuY2VkLXJlbmRlciBjdWJlcy0zZC1pbml0IGN1YmVzLTNkIGN5bGluZGVyLTNkIHRvcnVzLTNkIGNyZXNjZW50LTNkIGJhbGxzLTNkLWluaXQgc2hhcGUtZW50aXR5IGN5bGluZGVyLTNkLWluaXQgZGlzYy0zZCB0b3J1cy0zZC1pbml0XSwgOnR5cGUgOmNsanMsIDpzeW0gcGxheS1jbGpjLmdsLmV4YW1wbGVzLWFkdmFuY2VkfSB7OnZhci1zeW1zIFtsb2FkLXJvYm90byBpbml0XSwgOnR5cGUgOmNsanMsIDpzeW0gcGxheS1jbGpjLmdsLmV4YW1wbGVzLXRleHR9IHs6dmFyLXN5bXMgWy0+Zm9udC1lbnRpdHkgLT50ZXh0LWVudGl0eV0sIDp0eXBlIDpjbGpzLCA6c3ltIHBsYXktY2xqYy5nbC50ZXh0fSB7OnZhci1zeW1zIFtjcmVhdGUtYnVmZmVyIGZsb2F0LXNpemUgY3JlYXRlLXByb2dyYW0gbWVyZ2UtYXR0cmlidXRlLW9wdHMgc2V0LWFycmF5LWJ1ZmZlciBnZXQtYXR0cmlidXRlLXR5cGUgZGVmYXVsdC1vcHRzIGdldC11bmlmb3JtLXR5cGUgdHlwZS0+YXR0cmlidXRlLW9wdHMgZGlzc29jLWluc3RhbmNlLWF0dHIgZ2V0LWF0dHJpYnV0ZS1uYW1lcyBhc3NvYy1pbnN0YW5jZS1hdHRyIHNldC1pbmRleC1idWZmZXJdLCA6dHlwZSA6Y2xqcywgOnN5bSBwbGF5LWNsamMuZ2wudXRpbHN9IHs6dmFyLXN5bXMgWy0+aW5zdGFuY2VkLWVudGl0eSBJSW5zdGFuY2UgYXNzb2MgZGlzc29jIElJbnN0YW5jZWRdLCA6dHlwZSA6Y2xqcywgOnN5bSBwbGF5LWNsamMuaW5zdGFuY2VzfSB7OnZhci1zeW1zIFttdWwtbWF0LWZuIGludi1tYXQtZm5dLCA6dHlwZSA6Y2xqLCA6c3ltIHBsYXktY2xqYy5tYWNyb3MtY29tbW9ufSB7OnZhci1zeW1zIFttYXRoIHRyYW5zZm9ybSBnbF0sIDp0eXBlIDpjbGosIDpzeW0gcGxheS1jbGpjLm1hY3Jvcy1qYXZhfSB7OnZhci1zeW1zIFttYXRoIHRyYW5zZm9ybSBnbF0sIDp0eXBlIDpjbGosIDpzeW0gcGxheS1jbGpjLm1hY3Jvcy1qc30gezp2YXItc3ltcyBbaW52ZXJzZS1tYXRyaXggaWRlbnRpdHktbWF0cml4IHZlY3Rvci0+YXJyYXkgZGVnLT5yYWQgdHJhbnNmb3JtLXZlY3RvciB4LXJvdGF0aW9uLW1hdHJpeC0zZCBwZXJzcGVjdGl2ZS1tYXRyaXgtM2Qgc2NhbGluZy1tYXRyaXggei1yb3RhdGlvbi1tYXRyaXgtM2Qgcm90YXRpb24tbWF0cml4IHRyYW5zbGF0aW9uLW1hdHJpeCB0cmFuc2xhdGlvbi1tYXRyaXgtM2QgcHJvamVjdGlvbi1tYXRyaXggbXVsdGlwbHktbWF0cmljZXMtM2QgaW52ZXJzZS1tYXRyaXgtM2QgdmVjdG9yLT4yZC1hcnJheSBsb29rLWF0LW1hdHJpeCBtdWx0aXBseS1tYXRyaWNlcyBvcnRoby1tYXRyaXgtM2QgbG9vay1hdC1tYXRyaXgtM2QgeS1yb3RhdGlvbi1tYXRyaXgtM2Qgc2NhbGluZy1tYXRyaXgtM2QgdHJhbnNwb3NlLW1hdHJpeC0zZF0sIDp0eXBlIDpjbGpzLCA6c3ltIHBsYXktY2xqYy5tYXRofSB7OnZhci1zeW1zIFtyZWN0XSwgOnR5cGUgOmNsanMsIDpzeW0gcGxheS1jbGpjLnByaW1pdGl2ZXMtMmR9IHs6dmFyLXN5bXMgW3BsYW5lIHNwaGVyZSBjdWJlLWZhY2UtaW5kaWNlcyBjdWJlIGN5bGluZGVyIGNyZXNjZW50IHRvcnVzIGRpc2NdLCA6dHlwZSA6Y2xqcywgOnN5bSBwbGF5LWNsamMucHJpbWl0aXZlcy0zZH0gezp2YXItc3ltcyBbLT5iYWtlZC1mb250IC0+Yml0bWFwIGJpdG1hcC0+ZGF0YS11cmldLCA6dHlwZSA6Y2xqLCA6c3ltIHBsYXktY2xqYy50ZXh0fSB7OnZhci1zeW1zIFtJUm90YXRlIGNyb3AgSUludmVydCBpbnZlcnQgbG9vay1hdCBJQ2FtZXJhIHRyYW5zZm9ybSBjb2xvciBJU2NhbGUgc2NhbGUgSVByb2plY3QgSUNvbG9yIElDcm9wIHByb2plY3QgSVRyYW5zbGF0ZSBwYXJzZSByb3RhdGUgdHJhbnNmb3JtLWVudGl0eSBjYW1lcmEgdHJhbnNsYXRlIElMb29rQXRdLCA6dHlwZSA6Y2xqcywgOnN5bSBwbGF5LWNsamMudHJhbnNmb3Jtc30pLCA6ZHluYWRvYy5jb21tb24vdmFycyBbezpzeW0gdHJhbnNsYXRpb24tZXhhbXBsZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtnYW1lXSl9LCA6c291cmNlICIoZGVmblxuIHRyYW5zbGF0aW9uLWV4YW1wbGVcbiBbZ2FtZV1cbiAoZ2wgZ2FtZSBkaXNhYmxlIChnbCBnYW1lIENVTExfRkFDRSkpXG4gKGdsIGdhbWUgZGlzYWJsZSAoZ2wgZ2FtZSBERVBUSF9URVNUKSlcbiAobGV0XG4gIFtlbnRpdHlcbiAgICgtPlxuICAgIChjL2NvbXBpbGUgZ2FtZSAoZS8tPmVudGl0eSBnYW1lIGRhdGEvZi0yZCkpXG4gICAgKGFzc29jIDpjbGVhciB7OmNvbG9yIFswIDAgMCAwXSwgOmRlcHRoIDF9KSlcbiAgICpzdGF0ZVxuICAgKGF0b20gezp4IDAsIDp5IDB9KV1cbiAgKGV1L2xpc3Rlbi1mb3ItbW91c2UgZ2FtZSAqc3RhdGUpXG4gIChhc3NvYyBnYW1lIDplbnRpdHkgZW50aXR5IDoqc3RhdGUgKnN0YXRlKSkpXG4iLCA6ZXhhbXBsZXMgW3s6d2l0aC1jYXJkIGNhcmQsIDp3aXRoLWZvY3VzIHs6Zm9ybSBbOmxvY2FsLXN5bWJvbCBmb2N1c10sIDppbml0LWV4cHIgKHBsYXktY2xqYy5nbC5jb3JlL3JlbmRlciBnYW1lICgtPiAoYXNzb2MgZW50aXR5IDp2aWV3cG9ydCB7OnggMCwgOnkgMCwgOndpZHRoIGdhbWUtd2lkdGgsIDpoZWlnaHQgZ2FtZS1oZWlnaHR9KSAocGxheS1jbGpjLnRyYW5zZm9ybXMvcHJvamVjdCBnYW1lLXdpZHRoIGdhbWUtaGVpZ2h0KSAocGxheS1jbGpjLnRyYW5zZm9ybXMvdHJhbnNsYXRlIHggeSkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL2NvbG9yIFsxIDAgMC41IDFdKSkpfSwgOmJvZHkgKC0+PiAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvaW5pdC1leGFtcGxlIGNhcmQpIChwbGF5LWNsamMuZ2wuZXhhbXBsZXMtMmQvdHJhbnNsYXRpb24tZXhhbXBsZSkgKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dhbWUtbG9vcCAoZm4gdHJhbnNsYXRpb24tcmVuZGVyIFt7OmtleXMgW2VudGl0eSAqc3RhdGVdLCA6YXMgZ2FtZX1dIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9yZXNpemUtZXhhbXBsZSBnYW1lKSAobGV0IFt7OmtleXMgW3ggeV19IChjbG9qdXJlLmNvcmUvZGVyZWYgKnN0YXRlKV0gKGxldCBbZ2FtZS13aWR0aCAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2V0LXdpZHRoIGdhbWUpIGdhbWUtaGVpZ2h0IChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nZXQtaGVpZ2h0IGdhbWUpXSBmb2N1cykpIGdhbWUpKSksIDpib2R5LXN0ciAiKHBsYXktY2xqYy5nbC5jb3JlL3JlbmRlclxuIGdhbWVcbiAoLT5cbiAgKGFzc29jXG4gICBlbnRpdHlcbiAgIDp2aWV3cG9ydFxuICAgezp4IDAsIDp5IDAsIDp3aWR0aCBnYW1lLXdpZHRoLCA6aGVpZ2h0IGdhbWUtaGVpZ2h0fSlcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3Byb2plY3QgZ2FtZS13aWR0aCBnYW1lLWhlaWdodClcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3RyYW5zbGF0ZSB4IHkpXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy9jb2xvciBbMSAwIDAuNSAxXSkpKVxuIiwgOmlkICJwbGF5LWNsamMuZ2wuZXhhbXBsZXMtMmQvdHJhbnNsYXRpb24tZXhhbXBsZS8wIn1dfV0sIDpkeW5hZG9jLmNvbW1vbi9ucy1tZXRhIG5pbCwgOmR5bmFkb2MuY29tbW9uL25zLXN5bSBwbGF5LWNsamMuZ2wuZXhhbXBsZXMtMmQsIDpkeW5hZG9jLmNvbW1vbi9yZWwtcGF0aCAiLi4vLi4vIiwgOmR5bmFkb2MuY29tbW9uL2hpZGUtYmFkZ2U/IHRydWUsIDpkeW5hZG9jLmNvbW1vbi9jbGpzLW5zZXMtYW5kLXZhcnMge2V2YWwtc291cC5jb3JlICh7OnN5bSBjb2RlLT5yZXN1bHRzLCA6bWV0YSB7OmRvYyAiRXZhbHVhdGVzIGVhY2ggZm9ybSwgcHJvdmlkaW5nIHRoZSByZXN1bHRzIGluIGEgY2FsbGJhY2suXG4gIElmIGFueSBvZiB0aGUgZm9ybXMgYXJlIHN0cmluZ3MsIGl0IHdpbGwgcmVhZCB0aGVtIGZpcnN0LiIsIDphcmdsaXN0cyBbW2Zvcm1zIGNiXSBbZm9ybXMgY2IgezprZXlzIFsqY3VycmVudC1ucyAqc3RhdGUgY3VzdG9tLWxvYWQgdGltZW91dCBkaXNhYmxlLXRpbWVvdXQ/XSwgOm9yIHsqY3VycmVudC1ucyAoYXRvbSAocXVvdGUgY2xqcy51c2VyKSksICpzdGF0ZSAqY2xqcy1zdGF0ZSwgY3VzdG9tLWxvYWQgY3VzdG9tLWxvYWQhLCB0aW1lb3V0IDQwMDAsIGRpc2FibGUtdGltZW91dD8gZmFsc2V9LCA6YXMgb3B0c31dXX0sIDpzb3VyY2UgIihkZWZuXG4gY29kZS0+cmVzdWx0c1xuIFwiRXZhbHVhdGVzIGVhY2ggZm9ybSwgcHJvdmlkaW5nIHRoZSByZXN1bHRzIGluIGEgY2FsbGJhY2suXFxuICBJZiBhbnkgb2YgdGhlIGZvcm1zIGFyZSBzdHJpbmdzLCBpdCB3aWxsIHJlYWQgdGhlbSBmaXJzdC5cIlxuIChbZm9ybXMgY2JdIChjb2RlLT5yZXN1bHRzIGZvcm1zIGNiIHt9KSlcbiAoW2Zvcm1zXG4gICBjYlxuICAgezprZXlzIFsqY3VycmVudC1ucyAqc3RhdGUgY3VzdG9tLWxvYWQgdGltZW91dCBkaXNhYmxlLXRpbWVvdXQ/XSxcbiAgICA6b3JcbiAgICB7KmN1cnJlbnQtbnMgKGF0b20gJ2NsanMudXNlciksXG4gICAgICpzdGF0ZSAqY2xqcy1zdGF0ZSxcbiAgICAgY3VzdG9tLWxvYWQgY3VzdG9tLWxvYWQhLFxuICAgICB0aW1lb3V0IDQwMDAsXG4gICAgIGRpc2FibGUtdGltZW91dD8gZmFsc2V9LFxuICAgIDphcyBvcHRzfV1cbiAgKGxldFxuICAgW2Zvcm1zXG4gICAgKG1hcHZcbiAgICAgKGZuKlxuICAgICAgW3AxX180NTQ2OSNdXG4gICAgICAoaWZcbiAgICAgICAoc3RyaW5nPyBwMV9fNDU0NjkjKVxuICAgICAgIChzdHItPmZvcm0gQCpjdXJyZW50LW5zIHAxX180NTQ2OSMpXG4gICAgICAgcDFfXzQ1NDY5IykpXG4gICAgIGZvcm1zKVxuICAgIGluaXQtZm9ybXNcbiAgICAodmVjXG4gICAgIChjb25jYXRcbiAgICAgIFsnKG5zIGNsanMudXNlcildXG4gICAgICAod2hlbi1ub3RcbiAgICAgICBkaXNhYmxlLXRpbWVvdXQ/XG4gICAgICAgWycoZGVmIHBzLWxhc3QtdGltZSAoYXRvbSAwKSlcbiAgICAgICAgJyhkZWZuXG4gICAgICAgICAgcHMtcmVzZXQtdGltZW91dCFcbiAgICAgICAgICBbXVxuICAgICAgICAgIChyZXNldCEgcHMtbGFzdC10aW1lICguZ2V0VGltZSAoanMvRGF0ZS4pKSkpXG4gICAgICAgICcoZGVmblxuICAgICAgICAgIHBzLWNoZWNrLWZvci10aW1lb3V0IVxuICAgICAgICAgIFt0aW1lb3V0XVxuICAgICAgICAgICh3aGVuXG4gICAgICAgICAgICg+ICgtICguZ2V0VGltZSAoanMvRGF0ZS4pKSBAcHMtbGFzdC10aW1lKSB0aW1lb3V0KVxuICAgICAgICAgICAodGhyb3cgKGpzL0Vycm9yLiBcIkV4ZWN1dGlvbiB0aW1lZCBvdXQuXCIpKSkpXSlcbiAgICAgIFsnKHNldCEgKnByaW50LWVyci1mbiogKGZuIFtfXSkpIChsaXN0ICducyBAKmN1cnJlbnQtbnMpXSkpXG4gICAgdGltZW91dC1jYlxuICAgIChmblxuICAgICBbcmVzdWx0c11cbiAgICAgKGV2YWwtZm9ybXNcbiAgICAgIChhZGQtdGltZW91dHMtaWYtbmVjZXNzYXJ5IHRpbWVvdXQgZm9ybXMgcmVzdWx0cylcbiAgICAgIGNiXG4gICAgICAqc3RhdGVcbiAgICAgICpjdXJyZW50LW5zXG4gICAgICBjdXN0b20tbG9hZCkpXG4gICAgaW5pdC1jYlxuICAgIChmblxuICAgICBbcmVzdWx0c11cbiAgICAgKGV2YWwtZm9ybXNcbiAgICAgIChpZiBkaXNhYmxlLXRpbWVvdXQ/IGZvcm1zIChtYXAgd3JhcC1tYWNyb2V4cGFuZCBmb3JtcykpXG4gICAgICAoaWYgZGlzYWJsZS10aW1lb3V0PyBjYiB0aW1lb3V0LWNiKVxuICAgICAgKnN0YXRlXG4gICAgICAqY3VycmVudC1uc1xuICAgICAgY3VzdG9tLWxvYWQpKV1cbiAgIChldmFsLWZvcm1zIGluaXQtZm9ybXMgaW5pdC1jYiAqc3RhdGUgKmN1cnJlbnQtbnMgY3VzdG9tLWxvYWQpKSkpXG4ifSksIGNsanMuY29tcGlsZXIgKHs6c3ltIHByb3RvY29sLXByZWZpeCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwc3ltXSl9LCA6c291cmNlICIoZGVmblxuIHByb3RvY29sLXByZWZpeFxuIFtwc3ltXVxuIChzeW1ib2xcbiAgKHN0clxuICAgKC0+XG4gICAgKHN0ciBwc3ltKVxuICAgICgucmVwbGFjZSAjPyg6Y2xqIFxcLiA6Y2xqcyAoanMvUmVnRXhwLiBcIlxcXFwuXCIgXCJnXCIpKSBcXCQpXG4gICAgKC5yZXBsYWNlIFxcLyBcXCQpKVxuICAgXCIkXCIpKSlcbiJ9IHs6c3ltIGVtaXQtYXJndW1lbnRzLXRvLWFycmF5LCA6bWV0YSB7OmRvYyAiRW1pdCBjb2RlIHRoYXQgY29waWVzIGZ1bmN0aW9uIGFyZ3VtZW50cyBpbnRvIGFuIGFycmF5IHN0YXJ0aW5nIGF0IGFuIGluZGV4LlxuICBSZXR1cm5zIG5hbWUgb2YgdmFyIGhvbGRpbmcgdGhlIGFycmF5LiIsIDphcmdsaXN0cyAoW3N0YXJ0c2xpY2VdKX0sIDpzb3VyY2UgIihkZWZuXG4gZW1pdC1hcmd1bWVudHMtdG8tYXJyYXlcbiBcIkVtaXQgY29kZSB0aGF0IGNvcGllcyBmdW5jdGlvbiBhcmd1bWVudHMgaW50byBhbiBhcnJheSBzdGFydGluZyBhdCBhbiBpbmRleC5cXG4gIFJldHVybnMgbmFtZSBvZiB2YXIgaG9sZGluZyB0aGUgYXJyYXkuXCJcbiBbc3RhcnRzbGljZV1cbiAoYXNzZXJ0IChhbmQgKD49IHN0YXJ0c2xpY2UgMCkgKGludGVnZXI/IHN0YXJ0c2xpY2UpKSlcbiAobGV0XG4gIFttbmFtZSAobXVuZ2UgKGdlbnN5bSkpIGkgKHN0ciBtbmFtZSBcIl9faVwiKSBhIChzdHIgbW5hbWUgXCJfX2FcIildXG4gIChlbWl0bG5cbiAgIFwidmFyIFwiXG4gICBpXG4gICBcIiA9IDAsIFwiXG4gICBhXG4gICBcIiA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gIFwiXG4gICBzdGFydHNsaWNlXG4gICBcIik7XCIpXG4gIChlbWl0bG5cbiAgIFwid2hpbGUgKFwiXG4gICBpXG4gICBcIiA8IFwiXG4gICBhXG4gICBcIi5sZW5ndGgpIHtcIlxuICAgYVxuICAgXCJbXCJcbiAgIGlcbiAgIFwiXSA9IGFyZ3VtZW50c1tcIlxuICAgaVxuICAgXCIgKyBcIlxuICAgc3RhcnRzbGljZVxuICAgXCJdOyArK1wiXG4gICBpXG4gICBcIjt9XCIpXG4gIGEpKVxuIn0gezpzeW0gZW1pdC1qcy1vYmplY3QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbaXRlbXMgZW1pdC1qcy1vYmplY3QtdmFsXSl9LCA6c291cmNlICIoZGVmblxuIGVtaXQtanMtb2JqZWN0XG4gW2l0ZW1zIGVtaXQtanMtb2JqZWN0LXZhbF1cbiAoZW1pdHMgXCIoe1wiKVxuICh3aGVuLWxldFxuICBbaXRlbXMgKHNlcSBpdGVtcyldXG4gIChsZXRcbiAgIFtbW2sgdl0gJiByXSBpdGVtc11cbiAgIChlbWl0cyBcIlxcXCJcIiAobmFtZSBrKSBcIlxcXCI6IFwiIChlbWl0LWpzLW9iamVjdC12YWwgdikpXG4gICAoZG9zZXFcbiAgICBbW2sgdl0gcl1cbiAgICAoZW1pdHMgXCIsIFxcXCJcIiAobmFtZSBrKSBcIlxcXCI6IFwiIChlbWl0LWpzLW9iamVjdC12YWwgdikpKSkpXG4gKGVtaXRzIFwifSlcIikpXG4ifSB7OnN5bSBkaXN0aW5jdC1rZXlzPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtrZXlzXSl9LCA6c291cmNlICIoZGVmblxuIGRpc3RpbmN0LWtleXM/XG4gW2tleXNdXG4gKGxldFxuICBba2V5cyAobWFwIGFuYS91bndyYXAtcXVvdGUga2V5cyldXG4gIChhbmRcbiAgIChldmVyeT8gKGZuKiBbcDFfXzQ1MjY5I10gKD0gKDpvcCBwMV9fNDUyNjkjKSA6Y29uc3QpKSBrZXlzKVxuICAgKD0gKGNvdW50IChpbnRvICN7fSBrZXlzKSkgKGNvdW50IGtleXMpKSkpKVxuIn0gezpzeW0gbXVuZ2UsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbc10gW3MgcmVzZXJ2ZWRdXX0sIDpzb3VyY2UgIihkZWZuXG4gbXVuZ2VcbiAoW3NdIChtdW5nZSBzIGpzLXJlc2VydmVkKSlcbiAoW3MgcmVzZXJ2ZWRdXG4gIChpZlxuICAgIz8oOmNsaiAobWFwPyBzKSA6Y2xqcyAoYW5hLmltcGwvY2xqcy1tYXA/IHMpKVxuICAgKGxldFxuICAgIFtuYW1lLXZhclxuICAgICBzXG4gICAgIG5hbWVcbiAgICAgKDpuYW1lIG5hbWUtdmFyKVxuICAgICBmaWVsZFxuICAgICAoOmZpZWxkIG5hbWUtdmFyKVxuICAgICBpbmZvXG4gICAgICg6aW5mbyBuYW1lLXZhcildXG4gICAgKGlmLW5vdFxuICAgICAobmlsPyAoOmZuLXNlbGYtbmFtZSBpbmZvKSlcbiAgICAgKGZuLXNlbGYtbmFtZSBzKVxuICAgICAobGV0XG4gICAgICBbZGVwdGhcbiAgICAgICAoc2hhZG93LWRlcHRoIHMpXG4gICAgICAgY29kZVxuICAgICAgIChoYXNoLXNjb3BlIHMpXG4gICAgICAgcmVuYW1lZFxuICAgICAgIChnZXQgKmxleGljYWwtcmVuYW1lcyogY29kZSlcbiAgICAgICBuYW1lXG4gICAgICAgKGNvbmRcbiAgICAgICAgKHRydWU/IGZpZWxkKVxuICAgICAgICAoc3RyIFwic2VsZl9fLlwiIG5hbWUpXG4gICAgICAgIChub3QgKG5pbD8gcmVuYW1lZCkpXG4gICAgICAgIHJlbmFtZWRcbiAgICAgICAgOmVsc2VcbiAgICAgICAgbmFtZSlcbiAgICAgICBtdW5nZWQtbmFtZVxuICAgICAgIChtdW5nZSBuYW1lIHJlc2VydmVkKV1cbiAgICAgIChpZlxuICAgICAgIChvciAodHJ1ZT8gZmllbGQpICh6ZXJvPyBkZXB0aCkpXG4gICAgICAgbXVuZ2VkLW5hbWVcbiAgICAgICAoc3ltYm9sIChzdHIgbXVuZ2VkLW5hbWUgXCJfXyRcIiBkZXB0aCkpKSkpKVxuICAgKGxldFxuICAgIFtzc1xuICAgICAoc3RyaW5nL3JlcGxhY2UgKHN0ciBzKSBcIi4uXCIgXCJfRE9UX19ET1RfXCIpXG4gICAgIHNzXG4gICAgIChzdHJpbmcvcmVwbGFjZVxuICAgICAgc3NcbiAgICAgICM/KDpjbGogI1wiXFwvKC4pXCIgOmNsanMgKGpzL1JlZ0V4cC4gXCJcXFxcLyguKVwiKSlcbiAgICAgIFwiLiQxXCIpXG4gICAgIHJmXG4gICAgIChtdW5nZS1yZXNlcnZlZCByZXNlcnZlZClcbiAgICAgc3NcbiAgICAgKG1hcCByZiAoc3RyaW5nL3NwbGl0IHNzICNcIlxcLlwiKSlcbiAgICAgc3NcbiAgICAgKHN0cmluZy9qb2luIFwiLlwiIHNzKVxuICAgICBtc1xuICAgICAjPyg6Y2xqIChjbG9qdXJlLmxhbmcuQ29tcGlsZXIvbXVuZ2Ugc3MpIDpjbGpzICgodmFyIGNsanMuY29yZS9tdW5nZS1zdHIpIHNzKSldXG4gICAgKGlmIChzeW1ib2w/IHMpIChzeW1ib2wgbXMpIG1zKSkpKSlcbiJ9IHs6c3ltIGdldC1kZWZpbmUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbW5hbWUganNkb2NdKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LWRlZmluZVxuIFttbmFtZSBqc2RvY11cbiAobGV0XG4gIFtvcHRzIChnZXQgQGVudi8qY29tcGlsZXIqIDpvcHRpb25zKV1cbiAgKGFuZFxuICAgKHNvbWVcbiAgICAjPyg6Y2xqIChmbiogW3AxX180NTI3NCNdICguc3RhcnRzV2l0aCBwMV9fNDUyNzQjIFwiQGRlZmluZVwiKSkgOmNsanMgKGZuKiBbcDFfXzQ1Mjc1I10gKGdzdHJpbmcvc3RhcnRzV2l0aCBwMV9fNDUyNzUjIFwiQGRlZmluZVwiKSkpXG4gICAganNkb2MpXG4gICBvcHRzXG4gICAoPSAoOm9wdGltaXphdGlvbnMgb3B0cykgOm5vbmUpXG4gICAobGV0XG4gICAgW2RlZmluZSAoZ2V0LWluIG9wdHMgWzpjbG9zdXJlLWRlZmluZXMgKHN0ciBtbmFtZSldKV1cbiAgICAod2hlbiAodmFsaWQtZGVmaW5lLXZhbHVlPyBkZWZpbmUpIChwci1zdHIgZGVmaW5lKSkpKSkpXG4ifSB7OnN5bSB2YWxpZC1kZWZpbmUtdmFsdWU/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gdmFsaWQtZGVmaW5lLXZhbHVlP1xuIFt4XVxuIChvciAoc3RyaW5nPyB4KSAodHJ1ZT8geCkgKGZhbHNlPyB4KSAobnVtYmVyPyB4KSkpXG4ifSB7OnN5bSBlbWl0LXNldCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtpdGVtcyBjb21tYS1zZXAgZGlzdGluY3QtY29uc3RhbnRzP10pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbWl0LXNldFxuIFtpdGVtcyBjb21tYS1zZXAgZGlzdGluY3QtY29uc3RhbnRzP11cbiAoY29uZFxuICAoZW1wdHk/IGl0ZW1zKVxuICAoZW1pdHMgXCJjbGpzLmNvcmUuUGVyc2lzdGVudEhhc2hTZXQuRU1QVFlcIilcbiAgKGRpc3RpbmN0LWNvbnN0YW50cz8gaXRlbXMpXG4gIChlbWl0c1xuICAgXCJuZXcgY2xqcy5jb3JlLlBlcnNpc3RlbnRIYXNoU2V0KG51bGwsIG5ldyBjbGpzLmNvcmUuUGVyc2lzdGVudEFycmF5TWFwKG51bGwsIFwiXG4gICAoY291bnQgaXRlbXMpXG4gICBcIiwgW1wiXG4gICAoY29tbWEtc2VwIChpbnRlcmxlYXZlIGl0ZW1zIChyZXBlYXQgXCJudWxsXCIpKSlcbiAgIFwiXSwgbnVsbCksIG51bGwpXCIpXG4gIDplbHNlXG4gIChlbWl0c1xuICAgXCJjbGpzLmNvcmUuUGVyc2lzdGVudEhhc2hTZXQuY3JlYXRlQXNJZkJ5QXNzb2MoW1wiXG4gICAoY29tbWEtc2VwIGl0ZW1zKVxuICAgXCJdKVwiKSkpXG4ifSB7OnN5bSBlbWl0cy1rZXl3b3JkLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2t3XSl9LCA6c291cmNlICIoZGVmblxuIGVtaXRzLWtleXdvcmRcbiBba3ddXG4gKGxldFxuICBbbnMgKG5hbWVzcGFjZSBrdykgbmFtZSAobmFtZSBrdyldXG4gIChlbWl0cyBcIm5ldyBjbGpzLmNvcmUuS2V5d29yZChcIilcbiAgKGVtaXQtY29uc3RhbnQgbnMpXG4gIChlbWl0cyBcIixcIilcbiAgKGVtaXQtY29uc3RhbnQgbmFtZSlcbiAgKGVtaXRzIFwiLFwiKVxuICAoZW1pdC1jb25zdGFudCAoaWYgbnMgKHN0ciBucyBcIi9cIiBuYW1lKSBuYW1lKSlcbiAgKGVtaXRzIFwiLFwiKVxuICAoZW1pdC1jb25zdGFudCAoaGFzaCBrdykpXG4gIChlbWl0cyBcIilcIikpKVxuIn0gezpzeW0gKmxleGljYWwtcmVuYW1lcyosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpsZXhpY2FsLXJlbmFtZXMqIHt9KVxuIn0gezpzeW0gZW1pdC1sZXQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbe2V4cHIgOmJvZHksIDprZXlzIFtiaW5kaW5ncyBlbnZdfSBpcy1sb29wXSl9LCA6c291cmNlICIoZGVmblxuIGVtaXQtbGV0XG4gW3tleHByIDpib2R5LCA6a2V5cyBbYmluZGluZ3MgZW52XX0gaXMtbG9vcF1cbiAobGV0XG4gIFtjb250ZXh0ICg6Y29udGV4dCBlbnYpXVxuICAod2hlbiAoPSA6ZXhwciBjb250ZXh0KSAoZW1pdHMgXCIoZnVuY3Rpb24gKCl7XCIpKVxuICAoYmluZGluZ1xuICAgWypsZXhpY2FsLXJlbmFtZXMqXG4gICAgKGludG9cbiAgICAgKmxleGljYWwtcmVuYW1lcypcbiAgICAgKHdoZW5cbiAgICAgICg9IDpzdGF0ZW1lbnQgY29udGV4dClcbiAgICAgIChtYXBcbiAgICAgICAoZm5cbiAgICAgICAgW2JpbmRpbmddXG4gICAgICAgIChsZXRcbiAgICAgICAgIFtuYW1lICg6bmFtZSBiaW5kaW5nKV1cbiAgICAgICAgICh2ZWN0b3IgKGhhc2gtc2NvcGUgYmluZGluZykgKGdlbnN5bSAoc3RyIG5hbWUgXCItXCIpKSkpKVxuICAgICAgIGJpbmRpbmdzKSkpXVxuICAgKGRvc2VxXG4gICAgW3s6a2V5cyBbaW5pdF0sIDphcyBiaW5kaW5nfSBiaW5kaW5nc11cbiAgICAoZW1pdHMgXCJ2YXIgXCIpXG4gICAgKGVtaXQgYmluZGluZylcbiAgICAoZW1pdGxuIFwiID0gXCIgaW5pdCBcIjtcIikpXG4gICAod2hlbiBpcy1sb29wIChlbWl0bG4gXCJ3aGlsZSh0cnVlKXtcIikpXG4gICAoZW1pdHMgZXhwcilcbiAgICh3aGVuIGlzLWxvb3AgKGVtaXRsbiBcImJyZWFrO1wiKSAoZW1pdGxuIFwifVwiKSkpXG4gICh3aGVuICg9IDpleHByIGNvbnRleHQpIChlbWl0cyBcIn0pKClcIikpKSlcbiJ9IHs6c3ltIHN1YmxpYi1zZWxlY3QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3VibGliXSl9LCA6c291cmNlICIoZGVmblxuIHN1YmxpYi1zZWxlY3RcbiBbc3VibGliXVxuICh3aGVuXG4gIHN1YmxpYlxuICAobGV0XG4gICBbeHMgKHN0cmluZy9zcGxpdCBzdWJsaWIgI1wiXFwuXCIpXVxuICAgKGFwcGx5IHN0ciAobWFwIChmbiogW3AxX180NTI4MSNdIChzdHIgXCJbJ1wiIHAxX180NTI4MSMgXCInXVwiKSkgeHMpKSkpKVxuIn0gezpzeW0gYWxsLWRpc3RpbmN0PywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4c10pfSwgOnNvdXJjZSAiKGRlZm4gYWxsLWRpc3RpbmN0PyBbeHNdIChhcHBseSBkaXN0aW5jdD8geHMpKVxuIn0gezpzeW0gY2xqcy1yZXNlcnZlZC1maWxlLW5hbWVzLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBjbGpzLXJlc2VydmVkLWZpbGUtbmFtZXMgI3tcImRlcHMuY2xqc1wifSlcbiJ9IHs6c3ltIGJhc2UtdHlwZXMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gYmFzZS10eXBlc1xuICN7XCJib29sZWFuXCJcbiAgIFwib2JqZWN0XCJcbiAgIFwiKlwiXG4gICBcInN0cmluZ1wiXG4gICBcIk9iamVjdFwiXG4gICBcIk51bWJlclwiXG4gICBcIm51bGxcIlxuICAgXCJEYXRlXCJcbiAgIFwibnVtYmVyXCJcbiAgIFwiU3RyaW5nXCJcbiAgIFwiUmVnRXhwXCJcbiAgIFwiLi4uKlwiXG4gICBcIkFycmF5XCJcbiAgIFwiYXJyYXlcIlxuICAgXCJCb29sZWFuXCJ9KVxuIn0gezpzeW0gcmVzb2x2ZS10eXBlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiB0XSl9LCA6c291cmNlICIoZGVmblxuIHJlc29sdmUtdHlwZVxuIFtlbnYgdF1cbiAoY29uZFxuICAoZ2V0IGJhc2UtdHlwZXMgdClcbiAgdFxuICAoZ2V0IG1hcHBlZC10eXBlcyB0KVxuICAoZ2V0IG1hcHBlZC10eXBlcyB0KVxuICAjPyg6Y2xqICguc3RhcnRzV2l0aCB0IFwiIVwiKSA6Y2xqcyAoZ3N0cmluZy9zdGFydHNXaXRoIHQgXCIhXCIpKVxuICAoc3RyIFwiIVwiIChyZXNvbHZlLXR5cGUgZW52IChzdWJzIHQgMSkpKVxuICAjPyg6Y2xqICguc3RhcnRzV2l0aCB0IFwie1wiKSA6Y2xqcyAoZ3N0cmluZy9zdGFydHNXaXRoIHQgXCJ7XCIpKVxuICB0XG4gICM/KDpjbGogKC5zdGFydHNXaXRoIHQgXCJmdW5jdGlvblwiKSA6Y2xqcyAoZ3N0cmluZy9zdGFydHNXaXRoIHQgXCJmdW5jdGlvblwiKSlcbiAgKGxldFxuICAgW2lkeFxuICAgICgubGFzdEluZGV4T2YgdCBcIjpcIilcbiAgICBbZnN0ciByc3RyXVxuICAgIChpZi1ub3RcbiAgICAgKD09IC0xIGlkeClcbiAgICAgWyhzdWJzIHQgMCBpZHgpIChzdWJzIHQgKGluYyBpZHgpIChjb3VudCB0KSldXG4gICAgIFt0IG5pbF0pXG4gICAgcmV0LXRcbiAgICAod2hlbiByc3RyIChyZXNvbHZlLXR5cGUgZW52IHJzdHIpKVxuICAgIGF4c3RyXG4gICAgKHN1YnMgZnN0ciA5IChkZWMgKGNvdW50IGZzdHIpKSlcbiAgICBhcmdzLXRzXG4gICAgKHdoZW4tbm90XG4gICAgIChzdHJpbmcvYmxhbms/IGF4c3RyKVxuICAgICAobWFwXG4gICAgICAoY29tcFxuICAgICAgIChmbiogW3AxX180NTI3MSNdIChyZXNvbHZlLXR5cGUgZW52IHAxX180NTI3MSMpKVxuICAgICAgIHN0cmluZy90cmltKVxuICAgICAgKHN0cmluZy9zcGxpdCBheHN0ciAjXCIsXCIpKSldXG4gICAoY29uZC0+XG4gICAgKHN0ciBcImZ1bmN0aW9uKFwiIChzdHJpbmcvam9pbiBcIixcIiBhcmdzLXRzKSBcIilcIilcbiAgICByZXQtdFxuICAgIChzdHIgXCI6XCIgcmV0LXQpKSlcbiAgIz8oOmNsaiAoLmVuZHNXaXRoIHQgXCI9XCIpIDpjbGpzIChnc3RyaW5nL2VuZHNXaXRoIHQgXCI9XCIpKVxuICAoc3RyIChyZXNvbHZlLXR5cGUgZW52IChzdWJzIHQgMCAoZGVjIChjb3VudCB0KSkpKSBcIj1cIilcbiAgOmVsc2VcbiAgKG11bmdlIChzdHIgKDpuYW1lIChhbmEvcmVzb2x2ZS12YXIgZW52IChzeW1ib2wgdCkpKSkpKSlcbiJ9IHs6c3ltICpzb3VyY2UtbWFwLWRhdGEtZ2VuLWNvbCosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpzb3VyY2UtbWFwLWRhdGEtZ2VuLWNvbCogbmlsKVxuIn0gezpzeW0gZW1pdC13aXRoLW1ldGEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZXhwciBtZXRhXSl9LCA6c291cmNlICIoZGVmblxuIGVtaXQtd2l0aC1tZXRhXG4gW2V4cHIgbWV0YV1cbiAoZW1pdHMgXCJjbGpzLmNvcmUud2l0aF9tZXRhKFwiIGV4cHIgXCIsXCIgbWV0YSBcIilcIikpXG4ifSB7OnN5bSBlbWl0LXZhcmlhZGljLWZuLW1ldGhvZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt7ZXhwciA6Ym9keSwgbWF4LWZpeGVkLWFyaXR5IDpmaXhlZC1hcml0eSwgdmFyaWFkaWMgOnZhcmlhZGljPywgOmtleXMgW3R5cGUgbmFtZSBwYXJhbXMgZW52IHJlY3Vyc10sIDphcyBmfV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbWl0LXZhcmlhZGljLWZuLW1ldGhvZFxuIFt7ZXhwciA6Ym9keSxcbiAgIG1heC1maXhlZC1hcml0eSA6Zml4ZWQtYXJpdHksXG4gICB2YXJpYWRpYyA6dmFyaWFkaWM/LFxuICAgOmtleXMgW3R5cGUgbmFtZSBwYXJhbXMgZW52IHJlY3Vyc10sXG4gICA6YXMgZn1dXG4gKGVtaXQtd3JhcFxuICBlbnZcbiAgKGxldFxuICAgW25hbWVcbiAgICAob3IgbmFtZSAoZ2Vuc3ltKSlcbiAgICBtbmFtZVxuICAgIChtdW5nZSBuYW1lKVxuICAgIGRlbGVnYXRlLW5hbWVcbiAgICAoc3RyIG1uYW1lIFwiX19kZWxlZ2F0ZVwiKV1cbiAgIChlbWl0bG4gXCIoZnVuY3Rpb24oKSB7IFwiKVxuICAgKGVtaXRzIFwidmFyIFwiIGRlbGVnYXRlLW5hbWUgXCIgPSBmdW5jdGlvbiAoXCIpXG4gICAoZG9zZXFcbiAgICBbcGFyYW0gcGFyYW1zXVxuICAgIChlbWl0IHBhcmFtKVxuICAgICh3aGVuLW5vdCAoPSBwYXJhbSAobGFzdCBwYXJhbXMpKSAoZW1pdHMgXCIsXCIpKSlcbiAgIChlbWl0bG4gXCIpe1wiKVxuICAgKHdoZW4gdHlwZSAoZW1pdGxuIFwidmFyIHNlbGZfXyA9IHRoaXM7XCIpKVxuICAgKHdoZW4gcmVjdXJzIChlbWl0bG4gXCJ3aGlsZSh0cnVlKXtcIikpXG4gICAoZW1pdHMgZXhwcilcbiAgICh3aGVuIHJlY3VycyAoZW1pdGxuIFwiYnJlYWs7XCIpIChlbWl0bG4gXCJ9XCIpKVxuICAgKGVtaXRsbiBcIn07XCIpXG4gICAoZW1pdGxuXG4gICAgXCJ2YXIgXCJcbiAgICBtbmFtZVxuICAgIFwiID0gZnVuY3Rpb24gKFwiXG4gICAgKGNvbW1hLXNlcFxuICAgICAoaWYgdmFyaWFkaWMgKGNvbmNhdCAoYnV0bGFzdCBwYXJhbXMpIFsndmFyX2FyZ3NdKSBwYXJhbXMpKVxuICAgIFwiKXtcIilcbiAgICh3aGVuIHR5cGUgKGVtaXRsbiBcInZhciBzZWxmX18gPSB0aGlzO1wiKSlcbiAgICh3aGVuXG4gICAgdmFyaWFkaWNcbiAgICAoZW1pdHMgXCJ2YXIgXCIpXG4gICAgKGVtaXQgKGxhc3QgcGFyYW1zKSlcbiAgICAoZW1pdGxuIFwiID0gbnVsbDtcIilcbiAgICAoZW1pdGxuIFwiaWYgKGFyZ3VtZW50cy5sZW5ndGggPiBcIiAoZGVjIChjb3VudCBwYXJhbXMpKSBcIikge1wiKVxuICAgIChsZXRcbiAgICAgW2EgKGVtaXQtYXJndW1lbnRzLXRvLWFycmF5IChkZWMgKGNvdW50IHBhcmFtcykpKV1cbiAgICAgKGVtaXRsblxuICAgICAgXCIgIFwiXG4gICAgICAobGFzdCBwYXJhbXMpXG4gICAgICBcIiA9IG5ldyBjbGpzLmNvcmUuSW5kZXhlZFNlcShcIlxuICAgICAgYVxuICAgICAgXCIsMCxudWxsKTtcIikpXG4gICAgKGVtaXRsbiBcIn0gXCIpKVxuICAgKGVtaXRzIFwicmV0dXJuIFwiIGRlbGVnYXRlLW5hbWUgXCIuY2FsbCh0aGlzLFwiKVxuICAgKGRvc2VxXG4gICAgW3BhcmFtIHBhcmFtc11cbiAgICAoZW1pdCBwYXJhbSlcbiAgICAod2hlbi1ub3QgKD0gcGFyYW0gKGxhc3QgcGFyYW1zKSkgKGVtaXRzIFwiLFwiKSkpXG4gICAoZW1pdHMgXCIpO1wiKVxuICAgKGVtaXRsbiBcIn07XCIpXG4gICAoZW1pdGxuIG1uYW1lIFwiLmNsanMkbGFuZyRtYXhGaXhlZEFyaXR5ID0gXCIgbWF4LWZpeGVkLWFyaXR5IFwiO1wiKVxuICAgKGVtaXRzIG1uYW1lIFwiLmNsanMkbGFuZyRhcHBseVRvID0gXCIpXG4gICAoZW1pdC1hcHBseS10byAoYXNzb2MgZiA6bmFtZSBuYW1lKSlcbiAgIChlbWl0bG4gXCI7XCIpXG4gICAoZW1pdGxuXG4gICAgbW5hbWVcbiAgICBcIi5jbGpzJGNvcmUkSUZuJF9pbnZva2UkYXJpdHkkdmFyaWFkaWMgPSBcIlxuICAgIGRlbGVnYXRlLW5hbWVcbiAgICBcIjtcIilcbiAgIChlbWl0bG4gXCJyZXR1cm4gXCIgbW5hbWUgXCI7XCIpXG4gICAoZW1pdGxuIFwifSkoKVwiKSkpKVxuIn0gezpzeW0ganMtcmVzZXJ2ZWQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIGpzLXJlc2VydmVkIGFuYS9qcy1yZXNlcnZlZClcbiJ9IHs6c3ltICpyZWNvbXBpbGVkKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKnJlY29tcGlsZWQqIG5pbClcbiJ9IHs6c3ltIGVtaXRzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW10gW2FdIFthIGJdIFthIGIgY10gW2EgYiBjIGRdIFthIGIgYyBkIGVdIFthIGIgYyBkIGUgJiB4c11dfSwgOnNvdXJjZSAiKGRlZm5cbiBlbWl0c1xuIChbXSlcbiAoW2FdXG4gIChjb25kXG4gICAobmlsPyBhKVxuICAgbmlsXG4gICAjPyg6Y2xqIChtYXA/IGEpIDpjbGpzIChhbmEuaW1wbC9jbGpzLW1hcD8gYSkpXG4gICAoZW1pdCBhKVxuICAgIz8oOmNsaiAoc2VxPyBhKSA6Y2xqcyAoYW5hLmltcGwvY2xqcy1zZXE/IGEpKVxuICAgKGFwcGx5IGVtaXRzIGEpXG4gICAjPyg6Y2xqIChmbj8gYSkgOmNsanMgKGpzLWZuPyBhKSlcbiAgIChhKVxuICAgOmVsc2VcbiAgIChsZXRcbiAgICBbcyAoY29uZC0+IGEgKG5vdCAoc3RyaW5nPyBhKSkgLnRvU3RyaW5nKV1cbiAgICAjPyg6Y2xqICh3aGVuLXNvbWUgW2dlbi1jb2wgKnNvdXJjZS1tYXAtZGF0YS1nZW4tY29sKl0gKC5hZGRBbmRHZXQgZ2VuLWNvbCAoLmxlbmd0aCBzKSkpIDpjbGpzICh3aGVuLXNvbWUgW3NtLWRhdGEgKnNvdXJjZS1tYXAtZGF0YSpdIChzd2FwISBzbS1kYXRhIHVwZGF0ZSA6Z2VuLWNvbCAoZm4qIFtwMV9fNDUyNjYjXSAoKyBwMV9fNDUyNjYjICguLWxlbmd0aCBzKSkpKSkpXG4gICAgIz8oOmNsaiAoLndyaXRlICpvdXQqIHMpIDpjbGpzIChwcmludCBzKSkpKVxuICBuaWwpXG4gKFthIGJdIChlbWl0cyBhKSAoZW1pdHMgYikpXG4gKFthIGIgY10gKGVtaXRzIGEpIChlbWl0cyBiKSAoZW1pdHMgYykpXG4gKFthIGIgYyBkXSAoZW1pdHMgYSkgKGVtaXRzIGIpIChlbWl0cyBjKSAoZW1pdHMgZCkpXG4gKFthIGIgYyBkIGVdIChlbWl0cyBhKSAoZW1pdHMgYikgKGVtaXRzIGMpIChlbWl0cyBkKSAoZW1pdHMgZSkpXG4gKFthIGIgYyBkIGUgJiB4c11cbiAgKGVtaXRzIGEpXG4gIChlbWl0cyBiKVxuICAoZW1pdHMgYylcbiAgKGVtaXRzIGQpXG4gIChlbWl0cyBlKVxuICAoZG9zZXEgW3ggeHNdIChlbWl0cyB4KSkpKVxuIn0gezpzeW0gZW1pdC1jb25zdGFudCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt2XSl9LCA6c291cmNlICIoZGVmblxuIGVtaXQtY29uc3RhbnRcbiBbdl1cbiAobGV0XG4gIFttIChhbmEvZWxpZGUtaXJyZWxldmFudC1tZXRhIChtZXRhIHYpKV1cbiAgKGlmXG4gICAoc29tZT8gKHNlcSBtKSlcbiAgIChlbWl0LXdpdGgtbWV0YVxuICAgIChmbiogW10gKGVtaXQtY29uc3RhbnQtbm8tbWV0YSB2KSlcbiAgICAoZm4qIFtdIChlbWl0LWNvbnN0YW50LW5vLW1ldGEgbSkpKVxuICAgKGVtaXQtY29uc3RhbnQtbm8tbWV0YSB2KSkpKVxuIn0gezpzeW0gZW1pdC1kb3QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbezprZXlzIFt0YXJnZXQgZmllbGQgbWV0aG9kIGFyZ3MgZW52XX1dKX0sIDpzb3VyY2UgIihkZWZuXG4gZW1pdC1kb3RcbiBbezprZXlzIFt0YXJnZXQgZmllbGQgbWV0aG9kIGFyZ3MgZW52XX1dXG4gKGVtaXQtd3JhcFxuICBlbnZcbiAgKGlmXG4gICBmaWVsZFxuICAgKGVtaXRzIHRhcmdldCBcIi5cIiAobXVuZ2UgZmllbGQgI3t9KSlcbiAgIChlbWl0cyB0YXJnZXQgXCIuXCIgKG11bmdlIG1ldGhvZCAje30pIFwiKFwiIChjb21tYS1zZXAgYXJncykgXCIpXCIpKSkpXG4ifSB7OnN5bSBlbWl0LWNvbnN0YW50cy10YWJsZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0YWJsZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbWl0LWNvbnN0YW50cy10YWJsZVxuIFt0YWJsZV1cbiAoZW1pdGxuIFwiZ29vZy5wcm92aWRlKCdcIiAobXVuZ2UgYW5hL2NvbnN0YW50cy1ucy1zeW0pIFwiJyk7XCIpXG4gKGVtaXRsbiBcImdvb2cucmVxdWlyZSgnY2xqcy5jb3JlJyk7XCIpXG4gKGRvc2VxXG4gIFtbc3ltIHZhbHVlXSB0YWJsZV1cbiAgKGxldFxuICAgW25zIChuYW1lc3BhY2Ugc3ltKSBuYW1lIChuYW1lIHN5bSldXG4gICAoZW1pdHMgXCJjbGpzLmNvcmUuXCIgdmFsdWUgXCIgPSBcIilcbiAgIChjb25kXG4gICAgKGtleXdvcmQ/IHN5bSlcbiAgICAoZW1pdHMta2V5d29yZCBzeW0pXG4gICAgKHN5bWJvbD8gc3ltKVxuICAgIChlbWl0cy1zeW1ib2wgc3ltKVxuICAgIDplbHNlXG4gICAgKHRocm93XG4gICAgIChleC1pbmZvXG4gICAgICAoc3RyIFwiQ2Fubm90IGVtaXQgY29uc3RhbnQgZm9yIHR5cGUgXCIgKHR5cGUgc3ltKSlcbiAgICAgIHs6ZXJyb3IgOmludmFsaWQtY29uc3RhbnQtdHlwZSxcbiAgICAgICA6Y2xvanVyZS5lcnJvci9waGFzZSA6Y29tcGlsYXRpb259KSkpXG4gICAoZW1pdHMgXCI7XFxuXCIpKSkpXG4ifSB7OnN5bSBlbWl0LWxpc3QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbaXRlbXMgY29tbWEtc2VwXSl9LCA6c291cmNlICIoZGVmblxuIGVtaXQtbGlzdFxuIFtpdGVtcyBjb21tYS1zZXBdXG4gKGlmXG4gIChlbXB0eT8gaXRlbXMpXG4gIChlbWl0cyBcImNsanMuY29yZS5MaXN0LkVNUFRZXCIpXG4gIChlbWl0cyBcImNsanMuY29yZS5saXN0KFwiIChjb21tYS1zZXAgaXRlbXMpIFwiKVwiKSkpXG4ifSB7OnN5bSBnZXQtZmlyc3QtbnMtc2VnbWVudCwgOm1ldGEgezpkb2MgIkdldHMgdGhlIHBhcnQgdXAgdG8gdGhlIGZpcnN0IGAuYCBvZiBhIG5hbWVzcGFjZS5cbiAgIFJldHVybnMgdGhlIGVtcHR5IHN0cmluZyBmb3IgbmlsLlxuICAgUmV0dXJucyB0aGUgZW50aXJlIHN0cmluZyBpZiBubyBgLmAgaW4gbmFtZXNwYWNlIiwgOmFyZ2xpc3RzIChbbnNdKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LWZpcnN0LW5zLXNlZ21lbnRcbiBcIkdldHMgdGhlIHBhcnQgdXAgdG8gdGhlIGZpcnN0IGAuYCBvZiBhIG5hbWVzcGFjZS5cXG4gICBSZXR1cm5zIHRoZSBlbXB0eSBzdHJpbmcgZm9yIG5pbC5cXG4gICBSZXR1cm5zIHRoZSBlbnRpcmUgc3RyaW5nIGlmIG5vIGAuYCBpbiBuYW1lc3BhY2VcIlxuIFtuc11cbiAobGV0XG4gIFtucyAoc3RyIG5zKSBpZHggKC5pbmRleE9mIG5zIFwiLlwiKV1cbiAgKGlmICg9PSAtMSBpZHgpIG5zIChzdWJzIG5zIDAgaWR4KSkpKVxuIn0gezpzeW0gZW1pdC1mbi1wYXJhbXMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcGFyYW1zXSl9LCA6c291cmNlICIoZGVmblxuIGVtaXQtZm4tcGFyYW1zXG4gW3BhcmFtc11cbiAoZG9zZXFcbiAgW3BhcmFtIHBhcmFtc11cbiAgKGVtaXQgcGFyYW0pXG4gICh3aGVuLW5vdCAoPSBwYXJhbSAobGFzdCBwYXJhbXMpKSAoZW1pdHMgXCIsXCIpKSkpXG4ifSB7OnN5bSBtdW5nZS1yZXNlcnZlZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZXNlcnZlZF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtdW5nZS1yZXNlcnZlZFxuIFtyZXNlcnZlZF1cbiAoZm4gW3NdIChpZi1ub3QgKG5pbD8gKGdldCByZXNlcnZlZCBzKSkgKHN0ciBzIFwiJFwiKSBzKSkpXG4ifSB7OnN5bSBmbi1zZWxmLW5hbWUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbezprZXlzIFtuYW1lIGluZm9dLCA6YXMgbmFtZS12YXJ9XSl9LCA6c291cmNlICIoZGVmblxuIGZuLXNlbGYtbmFtZVxuIFt7OmtleXMgW25hbWUgaW5mb10sIDphcyBuYW1lLXZhcn1dXG4gKGxldFxuICBbbmFtZVxuICAgKHN0cmluZy9yZXBsYWNlIChzdHIgbmFtZSkgXCIuLlwiIFwiX0RPVF9fRE9UX1wiKVxuICAgezprZXlzIFtucyBmbi1zY29wZV19XG4gICBpbmZvXG4gICBzY29wZWQtbmFtZVxuICAgKGFwcGx5XG4gICAgc3RyXG4gICAgKGludGVycG9zZSBcIl8kX1wiIChjb25jYXQgKG1hcCAoY29tcCBzdHIgOm5hbWUpIGZuLXNjb3BlKSBbbmFtZV0pKSldXG4gIChzeW1ib2xcbiAgIChtdW5nZSAoc3RyIChzdHJpbmcvcmVwbGFjZSAoc3RyIG5zKSBcIi5cIiBcIiRcIikgXCIkXCIgc2NvcGVkLW5hbWUpKSkpKVxuIn0gezpzeW0gbG9hZC1saWJzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2xpYnMgc2VlbiByZWxvYWRzIGRlcHMgbnMtbmFtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBsb2FkLWxpYnNcbiBbbGlicyBzZWVuIHJlbG9hZHMgZGVwcyBucy1uYW1lXVxuIChsZXRcbiAgW3s6a2V5cyBbb3B0aW9ucyBqcy1kZXBlbmRlbmN5LWluZGV4XX1cbiAgIEBlbnYvKmNvbXBpbGVyKlxuICAgezprZXlzIFt0YXJnZXQgbm9kZWpzLXJ0IG9wdGltaXphdGlvbnNdfVxuICAgb3B0aW9uc1xuICAgbG9hZGVkLWxpYnNcbiAgIChtdW5nZSAnY2xqcy5jb3JlLipsb2FkZWQtbGlicyopXG4gICBsb2FkZWQtbGlicy10ZW1wXG4gICAobXVuZ2UgKGdlbnN5bSAnY2xqcy5jb3JlLipsb2FkZWQtbGlicyopKVxuICAgW25vZGUtbGlicyBsaWJzLXRvLWxvYWRdXG4gICAobGV0XG4gICAgW2xpYnMgKHJlbW92ZSAoc2V0ICh2YWxzIHNlZW4pKSAoZmlsdGVyIChzZXQgKHZhbHMgbGlicykpIGRlcHMpKV1cbiAgICAoaWZcbiAgICAgKD0gOm5vZGVqcyB0YXJnZXQpXG4gICAgIChsZXRcbiAgICAgIFt7bm9kZS1saWJzIHRydWUsIGxpYnMtdG8tbG9hZCBmYWxzZX1cbiAgICAgICAoZ3JvdXAtYnkgYW5hL25vZGUtbW9kdWxlLWRlcD8gbGlicyldXG4gICAgICBbbm9kZS1saWJzIGxpYnMtdG8tbG9hZF0pXG4gICAgIFtuaWwgbGlic10pKVxuICAgW2dvb2ctbW9kdWxlcyBsaWJzLXRvLWxvYWRdXG4gICAobGV0XG4gICAgW3tnb29nLW1vZHVsZXMgdHJ1ZSwgbGlicy10by1sb2FkIGZhbHNlfVxuICAgICAoZ3JvdXAtYnkgYW5hL2dvb2ctbW9kdWxlLWRlcD8gbGlicy10by1sb2FkKV1cbiAgICBbZ29vZy1tb2R1bGVzIGxpYnMtdG8tbG9hZF0pXG4gICBnbG9iYWwtZXhwb3J0cy1saWJzXG4gICAoZmlsdGVyIGFuYS9kZXAtaGFzLWdsb2JhbC1leHBvcnRzPyBsaWJzLXRvLWxvYWQpXVxuICAod2hlblxuICAgKC0+IGxpYnMgbWV0YSA6cmVsb2FkLWFsbClcbiAgIChlbWl0bG5cbiAgICBcImlmKCFDT01QSUxFRCkgXCJcbiAgICBsb2FkZWQtbGlicy10ZW1wXG4gICAgXCIgPSBcIlxuICAgIGxvYWRlZC1saWJzXG4gICAgXCIgfHwgY2xqcy5jb3JlLnNldChbXFxcImNsanMuY29yZVxcXCJdKTtcIilcbiAgIChlbWl0bG5cbiAgICBcImlmKCFDT01QSUxFRCkgXCJcbiAgICBsb2FkZWQtbGlic1xuICAgIFwiID0gY2xqcy5jb3JlLnNldChbXFxcImNsanMuY29yZVxcXCJdKTtcIikpXG4gIChkb3NlcVxuICAgW2xpYiBsaWJzLXRvLWxvYWRdXG4gICAoY29uZFxuICAgICM/QCg6Y2xqIFsoYW5hL2ZvcmVpZ24tZGVwPyBsaWIpICh3aGVuIChhbmQgKD0gOm5vbmUgb3B0aW1pemF0aW9ucykgKG5vdCAoY29udGFpbnM/IG9wdGlvbnMgOm1vZHVsZXMpKSkgKGxldCBbW2xpYiBfXSAoYW5hL2xpYiZzdWJsaWIgbGliKV0gKGlmIG5vZGVqcy1ydCAobGV0IFtpanMgKGdldCBqcy1kZXBlbmRlbmN5LWluZGV4IChuYW1lIGxpYikpXSAoZW1pdGxuIFwiY2xqcy5jb3JlLmxvYWRfZmlsZShcIiAoLT4gKGlvL2ZpbGUgKHV0aWwvb3V0cHV0LWRpcmVjdG9yeSBvcHRpb25zKSAob3IgKGRlcHMvLXJlbGF0aXZlLXBhdGggaWpzKSAodXRpbC9yZWxhdGl2ZS1uYW1lICg6dXJsIGlqcykpKSkgc3RyIGVzY2FwZS1zdHJpbmcgd3JhcC1pbi1kb3VibGUtcXVvdGVzKSBcIik7XCIpKSAoZW1pdGxuIFwiZ29vZy5yZXF1aXJlKCdcIiAobXVuZ2UgbGliKSBcIicpO1wiKSkpKV0gOmNsanMgWyhhbmQgKGFuYS9mb3JlaWduLWRlcD8gbGliKSAobm90IChrZXl3b3JkLWlkZW50aWNhbD8gb3B0aW1pemF0aW9ucyA6bm9uZSkpKSBuaWxdKVxuICAgIChvciAoLT4gbGlicyBtZXRhIDpyZWxvYWQpICg9IChnZXQgcmVsb2FkcyBsaWIpIDpyZWxvYWQpKVxuICAgIChlbWl0bG4gXCJnb29nLnJlcXVpcmUoJ1wiIChtdW5nZSBsaWIpIFwiJywgJ3JlbG9hZCcpO1wiKVxuICAgIChvciAoLT4gbGlicyBtZXRhIDpyZWxvYWQtYWxsKSAoPSAoZ2V0IHJlbG9hZHMgbGliKSA6cmVsb2FkLWFsbCkpXG4gICAgKGVtaXRsbiBcImdvb2cucmVxdWlyZSgnXCIgKG11bmdlIGxpYikgXCInLCAncmVsb2FkLWFsbCcpO1wiKVxuICAgIDplbHNlXG4gICAgKHdoZW4tbm90XG4gICAgICg9IGxpYiAnZ29vZylcbiAgICAgKGVtaXRsbiBcImdvb2cucmVxdWlyZSgnXCIgKG11bmdlIGxpYikgXCInKTtcIikpKSlcbiAgKGRvc2VxXG4gICBbbGliIG5vZGUtbGlic11cbiAgIChsZXRcbiAgICBbW2xpYicgc3VibGliXSAoYW5hL2xpYiZzdWJsaWIgbGliKV1cbiAgICAoZW1pdGxuXG4gICAgIChtdW5nZSBucy1uYW1lKVxuICAgICBcIi5cIlxuICAgICAoYW5hL211bmdlLW5vZGUtbGliIGxpYilcbiAgICAgXCIgPSByZXF1aXJlKCdcIlxuICAgICBsaWInXG4gICAgIFwiJylcIlxuICAgICAoc3VibGliLXNlbGVjdCBzdWJsaWIpXG4gICAgIFwiO1wiKSkpXG4gIChkb3NlcVxuICAgW2xpYiBnb29nLW1vZHVsZXNdXG4gICAobGV0XG4gICAgW1tsaWInIHN1YmxpYl0gKGFuYS9saWImc3VibGliIGxpYildXG4gICAgKGVtaXRsbiBcImdvb2cucmVxdWlyZSgnXCIgbGliJyBcIicpO1wiKVxuICAgIChlbWl0bG4gXCJnb29nLnNjb3BlKGZ1bmN0aW9uKCl7XCIpXG4gICAgKGVtaXRsblxuICAgICAobXVuZ2UgbnMtbmFtZSlcbiAgICAgXCIuXCJcbiAgICAgKGFuYS9tdW5nZS1nb29nLW1vZHVsZS1saWIgbGliKVxuICAgICBcIiA9IGdvb2cubW9kdWxlLmdldCgnXCJcbiAgICAgbGliJ1xuICAgICBcIicpXCJcbiAgICAgKHN1YmxpYi1zZWxlY3Qgc3VibGliKVxuICAgICBcIjtcIilcbiAgICAoZW1pdGxuIFwifSk7XCIpKSlcbiAgKGRvc2VxXG4gICBbbGliIGdsb2JhbC1leHBvcnRzLWxpYnNdXG4gICAobGV0XG4gICAgW3s6a2V5cyBbZ2xvYmFsLWV4cG9ydHNdfVxuICAgICAoZ2V0IGpzLWRlcGVuZGVuY3ktaW5kZXggKG5hbWUgKC0+IGxpYiBhbmEvbGliJnN1YmxpYiBmaXJzdCkpKV1cbiAgICAoZW1pdC1nbG9iYWwtZXhwb3J0IG5zLW5hbWUgZ2xvYmFsLWV4cG9ydHMgbGliKSkpXG4gICh3aGVuXG4gICAoLT4gbGlicyBtZXRhIDpyZWxvYWQtYWxsKVxuICAgKGVtaXRsblxuICAgIFwiaWYoIUNPTVBJTEVEKSBcIlxuICAgIGxvYWRlZC1saWJzXG4gICAgXCIgPSBjbGpzLmNvcmUuaW50byhcIlxuICAgIGxvYWRlZC1saWJzLXRlbXBcbiAgICBcIiwgXCJcbiAgICBsb2FkZWQtbGlic1xuICAgIFwiKTtcIikpKSlcbiJ9IHs6c3ltIG11bmdlLXBhcmFtLXJldHVybiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgbGluZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtdW5nZS1wYXJhbS1yZXR1cm5cbiBbZW52IGxpbmVdXG4gKGNvbmRcbiAgKHJlLWZpbmQgI1wiQHBhcmFtXCIgbGluZSlcbiAgKGxldFxuICAgW1twIHRzIG4gJiB4c11cbiAgICAobWFwIHN0cmluZy90cmltIChzdHJpbmcvc3BsaXQgKHN0cmluZy90cmltIGxpbmUpICNcIiBcIikpXVxuICAgKGlmXG4gICAgKGFuZFxuICAgICAoPSBcIkBwYXJhbVwiIHApXG4gICAgIHRzXG4gICAgICM/KDpjbGogKC5zdGFydHNXaXRoIHRzIFwie1wiKSA6Y2xqcyAoZ3N0cmluZy9zdGFydHNXaXRoIHRzIFwie1wiKSkpXG4gICAgKHN0cmluZy9qb2luIFwiIFwiIChjb25jYXQgW3AgKHJlc29sdmUtdHlwZXMgZW52IHRzKSAobXVuZ2UgbildIHhzKSlcbiAgICBsaW5lKSlcbiAgKHJlLWZpbmQgI1wiQHJldHVyblwiIGxpbmUpXG4gIChsZXRcbiAgIFtbcCB0cyAmIHhzXVxuICAgIChtYXAgc3RyaW5nL3RyaW0gKHN0cmluZy9zcGxpdCAoc3RyaW5nL3RyaW0gbGluZSkgI1wiIFwiKSldXG4gICAoaWZcbiAgICAoYW5kXG4gICAgICg9IFwiQHJldHVyblwiIHApXG4gICAgIHRzXG4gICAgICM/KDpjbGogKC5zdGFydHNXaXRoIHRzIFwie1wiKSA6Y2xqcyAoZ3N0cmluZy9zdGFydHNXaXRoIHRzIFwie1wiKSkpXG4gICAgKHN0cmluZy9qb2luIFwiIFwiIChjb25jYXQgW3AgKHJlc29sdmUtdHlwZXMgZW52IHRzKV0geHMpKVxuICAgIGxpbmUpKVxuICA6ZWxzZVxuICBsaW5lKSlcbiJ9IHs6c3ltIGVtaXQtanMtYXJyYXksIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbaXRlbXMgY29tbWEtc2VwXSl9LCA6c291cmNlICIoZGVmbiBlbWl0LWpzLWFycmF5IFtpdGVtcyBjb21tYS1zZXBdIChlbWl0cyBcIltcIiAoY29tbWEtc2VwIGl0ZW1zKSBcIl1cIikpXG4ifSB7OnN5bSBmaW5kLW5zLXN0YXJ0cy13aXRoLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW25lZWRsZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBmaW5kLW5zLXN0YXJ0cy13aXRoXG4gW25lZWRsZV1cbiAocmVkdWNlLWt2XG4gIChmblxuICAgW3hzIG5zIF9dXG4gICAod2hlbiAoPSBuZWVkbGUgKGdldC1maXJzdC1ucy1zZWdtZW50IG5zKSkgKHJlZHVjZWQgbmVlZGxlKSkpXG4gIG5pbFxuICAoOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyBAZW52Lypjb21waWxlciopKSlcbiJ9IHs6c3ltIGNoZWNraW5nLXR5cGVzPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gY2hlY2tpbmctdHlwZXM/XG4gW11cbiAoI3s6d2FybmluZyA6ZXJyb3J9XG4gIChnZXQtaW4gQGVudi8qY29tcGlsZXIqIFs6b3B0aW9ucyA6Y2xvc3VyZS13YXJuaW5ncyA6Y2hlY2stdHlwZXNdKSkpXG4ifSB7OnN5bSBlbWl0LWZuLW1ldGhvZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt7ZXhwciA6Ym9keSwgOmtleXMgW3R5cGUgbmFtZSBwYXJhbXMgZW52IHJlY3Vyc119XSl9LCA6c291cmNlICIoZGVmblxuIGVtaXQtZm4tbWV0aG9kXG4gW3tleHByIDpib2R5LCA6a2V5cyBbdHlwZSBuYW1lIHBhcmFtcyBlbnYgcmVjdXJzXX1dXG4gKGVtaXQtd3JhcFxuICBlbnZcbiAgKGVtaXRzIFwiKGZ1bmN0aW9uIFwiIChtdW5nZSBuYW1lKSBcIihcIilcbiAgKGVtaXQtZm4tcGFyYW1zIHBhcmFtcylcbiAgKGVtaXRsbiBcIil7XCIpXG4gICh3aGVuIHR5cGUgKGVtaXRsbiBcInZhciBzZWxmX18gPSB0aGlzO1wiKSlcbiAgKHdoZW4gcmVjdXJzIChlbWl0bG4gXCJ3aGlsZSh0cnVlKXtcIikpXG4gIChlbWl0cyBleHByKVxuICAod2hlbiByZWN1cnMgKGVtaXRsbiBcImJyZWFrO1wiKSAoZW1pdGxuIFwifVwiKSlcbiAgKGVtaXRzIFwifSlcIikpKVxuIn0gezpzeW0gZW1pdC1jb21tZW50LCA6bWV0YSB7OmRvYyAiRW1pdCBhIG5pY2VseSBmb3JtYXR0ZWQgY29tbWVudCBzdHJpbmcuIiwgOmFyZ2xpc3RzIFtbZG9jIGpzZG9jXSBbZW52IGRvYyBqc2RvY11dfSwgOnNvdXJjZSAiKGRlZm5cbiBlbWl0LWNvbW1lbnRcbiBcIkVtaXQgYSBuaWNlbHkgZm9ybWF0dGVkIGNvbW1lbnQgc3RyaW5nLlwiXG4gKFtkb2MganNkb2NdIChlbWl0LWNvbW1lbnQgbmlsIGRvYyBqc2RvYykpXG4gKFtlbnYgZG9jIGpzZG9jXVxuICAobGV0XG4gICBbZG9jc1xuICAgICh3aGVuIGRvYyBbZG9jXSlcbiAgICBkb2NzXG4gICAgKGlmIGpzZG9jIChjb25jYXQgZG9jcyBqc2RvYykgZG9jcylcbiAgICBkb2NzXG4gICAgKHJlbW92ZSBuaWw/IGRvY3MpXVxuICAgKGxldGZuXG4gICAgWyhwcmludC1jb21tZW50LWxpbmVzXG4gICAgICBbZV1cbiAgICAgIChsZXRcbiAgICAgICBbW3ggJiB5c11cbiAgICAgICAgKG1hcFxuICAgICAgICAgKGZuKlxuICAgICAgICAgIFtwMV9fNDUyNzMjXVxuICAgICAgICAgIChpZlxuICAgICAgICAgICAoY2hlY2tpbmctdHlwZXM/KVxuICAgICAgICAgICAobXVuZ2UtcGFyYW0tcmV0dXJuIGVudiBwMV9fNDUyNzMjKVxuICAgICAgICAgICBwMV9fNDUyNzMjKSlcbiAgICAgICAgIChzdHJpbmcvc3BsaXQtbGluZXMgZSkpXVxuICAgICAgIChlbWl0bG4gXCIgKiBcIiAoc3RyaW5nL3JlcGxhY2UgeCBcIiovXCIgXCIqIC9cIikpXG4gICAgICAgKGRvc2VxXG4gICAgICAgIFtuZXh0LWxpbmUgeXNdXG4gICAgICAgIChlbWl0bG5cbiAgICAgICAgIFwiICogXCJcbiAgICAgICAgICgtPlxuICAgICAgICAgIG5leHQtbGluZVxuICAgICAgICAgIChzdHJpbmcvcmVwbGFjZSAjXCJeICAgXCIgXCJcIilcbiAgICAgICAgICAoc3RyaW5nL3JlcGxhY2UgXCIqL1wiIFwiKiAvXCIpKSkpKSldXG4gICAgKHdoZW5cbiAgICAgKHNlcSBkb2NzKVxuICAgICAoZW1pdGxuIFwiLyoqXCIpXG4gICAgIChkb3NlcSBbZSBkb2NzXSAod2hlbiBlIChwcmludC1jb21tZW50LWxpbmVzIGUpKSlcbiAgICAgKGVtaXRsbiBcIiAqL1wiKSkpKSkpXG4ifSB7OnN5bSBoYXNoLXNjb3BlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gaGFzaC1zY29wZVxuIFtzXVxuIChoYXNoLWNvbWJpbmVcbiAgIz8oOmNsaiAoaGFzaCAoOm5hbWUgcykpIDpjbGpzICgtaGFzaCAoOm5hbWUgcykpKVxuICAoc2hhZG93LWRlcHRoIHMpKSlcbiJ9IHs6c3ltIGVtaXQtYXBwbHktdG8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbezprZXlzIFtuYW1lIHBhcmFtcyBlbnZdfV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbWl0LWFwcGx5LXRvXG4gW3s6a2V5cyBbbmFtZSBwYXJhbXMgZW52XX1dXG4gKGxldFxuICBbYXJnbGlzdFxuICAgKGdlbnN5bSBcImFyZ2xpc3RfX1wiKVxuICAgZGVsZWdhdGUtbmFtZVxuICAgKHN0ciAobXVuZ2UgbmFtZSkgXCJfX2RlbGVnYXRlXCIpXVxuICAoZW1pdGxuIFwiKGZ1bmN0aW9uIChcIiBhcmdsaXN0IFwiKXtcIilcbiAgKGRvc2VxXG4gICBbW2kgcGFyYW1dIChtYXAtaW5kZXhlZCB2ZWN0b3IgKGRyb3AtbGFzdCAyIHBhcmFtcykpXVxuICAgKGVtaXRzIFwidmFyIFwiKVxuICAgKGVtaXQgcGFyYW0pXG4gICAoZW1pdHMgXCIgPSBjbGpzLmNvcmUuZmlyc3QoXCIpXG4gICAoZW1pdGxuIGFyZ2xpc3QgXCIpO1wiKVxuICAgKGVtaXRsbiBhcmdsaXN0IFwiID0gY2xqcy5jb3JlLm5leHQoXCIgYXJnbGlzdCBcIik7XCIpKVxuICAoaWZcbiAgICg8IDEgKGNvdW50IHBhcmFtcykpXG4gICAoZG9cbiAgICAoZW1pdHMgXCJ2YXIgXCIpXG4gICAgKGVtaXQgKGxhc3QgKGJ1dGxhc3QgcGFyYW1zKSkpXG4gICAgKGVtaXRsbiBcIiA9IGNsanMuY29yZS5maXJzdChcIiBhcmdsaXN0IFwiKTtcIilcbiAgICAoZW1pdHMgXCJ2YXIgXCIpXG4gICAgKGVtaXQgKGxhc3QgcGFyYW1zKSlcbiAgICAoZW1pdGxuIFwiID0gY2xqcy5jb3JlLnJlc3QoXCIgYXJnbGlzdCBcIik7XCIpXG4gICAgKGVtaXRzIFwicmV0dXJuIFwiIGRlbGVnYXRlLW5hbWUgXCIoXCIpXG4gICAgKGRvc2VxXG4gICAgIFtwYXJhbSBwYXJhbXNdXG4gICAgIChlbWl0IHBhcmFtKVxuICAgICAod2hlbi1ub3QgKD0gcGFyYW0gKGxhc3QgcGFyYW1zKSkgKGVtaXRzIFwiLFwiKSkpXG4gICAgKGVtaXRsbiBcIik7XCIpKVxuICAgKGRvXG4gICAgKGVtaXRzIFwidmFyIFwiKVxuICAgIChlbWl0IChsYXN0IHBhcmFtcykpXG4gICAgKGVtaXRsbiBcIiA9IGNsanMuY29yZS5zZXEoXCIgYXJnbGlzdCBcIik7XCIpXG4gICAgKGVtaXRzIFwicmV0dXJuIFwiIGRlbGVnYXRlLW5hbWUgXCIoXCIpXG4gICAgKGRvc2VxXG4gICAgIFtwYXJhbSBwYXJhbXNdXG4gICAgIChlbWl0IHBhcmFtKVxuICAgICAod2hlbi1ub3QgKD0gcGFyYW0gKGxhc3QgcGFyYW1zKSkgKGVtaXRzIFwiLFwiKSkpXG4gICAgKGVtaXRsbiBcIik7XCIpKSlcbiAgKGVtaXRzIFwifSlcIikpKVxuIn0gezpzeW0gZW1pdHMtc3ltYm9sLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N5bV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbWl0cy1zeW1ib2xcbiBbc3ltXVxuIChsZXRcbiAgW25zXG4gICAobmFtZXNwYWNlIHN5bSlcbiAgIG5hbWVcbiAgIChuYW1lIHN5bSlcbiAgIHN5bXN0clxuICAgKGlmLW5vdCAobmlsPyBucykgKHN0ciBucyBcIi9cIiBuYW1lKSBuYW1lKV1cbiAgKGVtaXRzIFwibmV3IGNsanMuY29yZS5TeW1ib2woXCIpXG4gIChlbWl0LWNvbnN0YW50IG5zKVxuICAoZW1pdHMgXCIsXCIpXG4gIChlbWl0LWNvbnN0YW50IG5hbWUpXG4gIChlbWl0cyBcIixcIilcbiAgKGVtaXQtY29uc3RhbnQgc3ltc3RyKVxuICAoZW1pdHMgXCIsXCIpXG4gIChlbWl0LWNvbnN0YW50IChoYXNoIHN5bSkpXG4gIChlbWl0cyBcIixcIilcbiAgKGVtaXQtY29uc3RhbnQgbmlsKVxuICAoZW1pdHMgXCIpXCIpKSlcbiJ9IHs6c3ltIGZhbHNleS1jb25zdGFudD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZXhwcl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBmYWxzZXktY29uc3RhbnQ/XG4gW2V4cHJdXG4gKGxldFxuICBbezprZXlzIFtvcCBmb3JtIGNvbnN0LWV4cHJdfSAoYW5hL3Vud3JhcC1xdW90ZSBleHByKV1cbiAgKG9yXG4gICAoYW5kICg9IG9wIDpjb25zdCkgKG9yIChmYWxzZT8gZm9ybSkgKG5pbD8gZm9ybSkpKVxuICAgKGFuZCAoc29tZT8gY29uc3QtZXhwcikgKGZhbHNleS1jb25zdGFudD8gY29uc3QtZXhwcikpKSkpXG4ifSB7OnN5bSBlbWl0LWNvbnN0YW50cy1jb21tYS1zZXAsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbY3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gZW1pdC1jb25zdGFudHMtY29tbWEtc2VwXG4gW2NzXVxuIChmblxuICBbXVxuICAoZG9hbGxcbiAgIChtYXAtaW5kZXhlZFxuICAgIChmbiBbaSBtXSAoaWYgKGV2ZW4/IGkpIChlbWl0LWNvbnN0YW50IG0pIChlbWl0cyBtKSkpXG4gICAgKGNvbW1hLXNlcCBjcykpKSkpXG4ifSB7OnN5bSAqc291cmNlLW1hcC1kYXRhKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKnNvdXJjZS1tYXAtZGF0YSogbmlsKVxuIn0gezpzeW0gZW1pdC1yZWNvcmQtdmFsdWUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbnMgbmFtZSBpdGVtc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbWl0LXJlY29yZC12YWx1ZVxuIFtucyBuYW1lIGl0ZW1zXVxuIChlbWl0cyBucyBcIi5tYXBfX0dUX1wiIG5hbWUgXCIoXCIgaXRlbXMgXCIpXCIpKVxuIn0gezpzeW0gZW1pdC12YXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbezprZXlzIFtpbmZvIGVudiBmb3JtXSwgOmFzIGFzdH1dKX0sIDpzb3VyY2UgIihkZWZuXG4gZW1pdC12YXJcbiBbezprZXlzIFtpbmZvIGVudiBmb3JtXSwgOmFzIGFzdH1dXG4gKGlmLWxldFxuICBbY29uc3QtZXhwciAoOmNvbnN0LWV4cHIgYXN0KV1cbiAgKGVtaXQgKGFzc29jIGNvbnN0LWV4cHIgOmVudiBlbnYpKVxuICAobGV0XG4gICBbezprZXlzIFtvcHRpb25zXSwgOmFzIGNlbnZ9XG4gICAgQGVudi8qY29tcGlsZXIqXG4gICAgdmFyLW5hbWVcbiAgICAoOm5hbWUgaW5mbylcbiAgICBpbmZvXG4gICAgKGlmXG4gICAgICg9IChuYW1lc3BhY2UgdmFyLW5hbWUpIFwianNcIilcbiAgICAgKGxldFxuICAgICAgW2pzLW1vZHVsZS1uYW1lXG4gICAgICAgKGdldC1pbiBjZW52IFs6anMtbW9kdWxlLWluZGV4IChuYW1lIHZhci1uYW1lKSA6bmFtZV0pXVxuICAgICAgKG9yIGpzLW1vZHVsZS1uYW1lIChuYW1lIHZhci1uYW1lKSkpXG4gICAgIGluZm8pXVxuICAgKGlmXG4gICAgKDpiaW5kaW5nLWZvcm0/IGFzdClcbiAgICAoZW1pdHMgKG11bmdlIGFzdCkpXG4gICAgKHdoZW4tbm90XG4gICAgICg9IDpzdGF0ZW1lbnQgKDpjb250ZXh0IGVudikpXG4gICAgIChsZXRcbiAgICAgIFtyZXNlcnZlZFxuICAgICAgIChjb25kLT5cbiAgICAgICAganMtcmVzZXJ2ZWRcbiAgICAgICAgKGFuZFxuICAgICAgICAgKGVzNT49ICg6bGFuZ3VhZ2Utb3V0IG9wdGlvbnMpKVxuICAgICAgICAgKHNvbWU/IChuYW1lc3BhY2UgdmFyLW5hbWUpKSlcbiAgICAgICAgKHNldC9kaWZmZXJlbmNlIGFuYS9lczUtYWxsb3dlZCkpXG4gICAgICAganMtbW9kdWxlXG4gICAgICAgKGdldC1pblxuICAgICAgICBjZW52XG4gICAgICAgIFs6anMtbmFtZXNwYWNlcyAob3IgKG5hbWVzcGFjZSB2YXItbmFtZSkgKG5hbWUgdmFyLW5hbWUpKV0pXG4gICAgICAgaW5mb1xuICAgICAgIChjb25kLT4gaW5mbyAobm90PSBmb3JtICdqcy8tSW5maW5pdHkpIChtdW5nZSByZXNlcnZlZCkpXVxuICAgICAgKGVtaXQtd3JhcFxuICAgICAgIGVudlxuICAgICAgIChjYXNlXG4gICAgICAgICg6bW9kdWxlLXR5cGUganMtbW9kdWxlKVxuICAgICAgICA6Y29tbW9uanNcbiAgICAgICAgKGlmXG4gICAgICAgICAobmFtZXNwYWNlIHZhci1uYW1lKVxuICAgICAgICAgKGVtaXRzXG4gICAgICAgICAgKG11bmdlIChuYW1lc3BhY2UgdmFyLW5hbWUpIHJlc2VydmVkKVxuICAgICAgICAgIFwiW1xcXCJkZWZhdWx0XFxcIl0uXCJcbiAgICAgICAgICAobXVuZ2UgKG5hbWUgdmFyLW5hbWUpIHJlc2VydmVkKSlcbiAgICAgICAgIChlbWl0cyAobXVuZ2UgKG5hbWUgdmFyLW5hbWUpIHJlc2VydmVkKSBcIltcXFwiZGVmYXVsdFxcXCJdXCIpKVxuICAgICAgICA6ZXM2XG4gICAgICAgIChpZlxuICAgICAgICAgKGFuZCAobmFtZXNwYWNlIHZhci1uYW1lKSAoPSBcImRlZmF1bHRcIiAobmFtZSB2YXItbmFtZSkpKVxuICAgICAgICAgKGVtaXRzIChtdW5nZSAobmFtZXNwYWNlIHZhci1uYW1lKSByZXNlcnZlZCkgXCJbXFxcImRlZmF1bHRcXFwiXVwiKVxuICAgICAgICAgKGVtaXRzIGluZm8pKVxuICAgICAgICAoZW1pdHMgaW5mbykpKSkpKSkpKVxuIn0gezpzeW0gbWFwcGVkLXR5cGVzLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBtYXBwZWQtdHlwZXMge1wibmlsXCIgXCJudWxsXCJ9KVxuIn0gezpzeW0gcmVzb2x2ZS10eXBlcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgdHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVzb2x2ZS10eXBlc1xuIFtlbnYgdHNdXG4gKGxldFxuICBbdHNcbiAgICgtPiB0cyBzdHJpbmcvdHJpbSAoc3VicyAxIChkZWMgKGNvdW50IHRzKSkpKVxuICAgeHNcbiAgIChzdHJpbmcvc3BsaXQgdHMgI1wiXFx8XCIpXVxuICAoc3RyXG4gICBcIntcIlxuICAgKHN0cmluZy9qb2luXG4gICAgXCJ8XCJcbiAgICAobWFwIChmbiogW3AxX180NTI3MiNdIChyZXNvbHZlLXR5cGUgZW52IHAxX180NTI3MiMpKSB4cykpXG4gICBcIn1cIikpKVxuIn0gezpzeW0gKmlucHV0cyosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICppbnB1dHMqIG5pbClcbiJ9IHs6c3ltIGVtaXQtc3RyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2V4cHJdKX0sIDpzb3VyY2UgIihkZWZuIGVtaXQtc3RyIFtleHByXSAod2l0aC1vdXQtc3RyIChlbWl0IGV4cHIpKSlcbiJ9IHs6c3ltIGVtaXQtbWFwLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2tleXMgdmFscyBjb21tYS1zZXAgZGlzdGluY3Qta2V5cz9dKX0sIDpzb3VyY2UgIihkZWZuXG4gZW1pdC1tYXBcbiBba2V5cyB2YWxzIGNvbW1hLXNlcCBkaXN0aW5jdC1rZXlzP11cbiAoY29uZFxuICAoemVybz8gKGNvdW50IGtleXMpKVxuICAoZW1pdHMgXCJjbGpzLmNvcmUuUGVyc2lzdGVudEFycmF5TWFwLkVNUFRZXCIpXG4gICg8PSAoY291bnQga2V5cykgYXJyYXktbWFwLXRocmVzaG9sZClcbiAgKGlmXG4gICAoZGlzdGluY3Qta2V5cz8ga2V5cylcbiAgIChlbWl0c1xuICAgIFwibmV3IGNsanMuY29yZS5QZXJzaXN0ZW50QXJyYXlNYXAobnVsbCwgXCJcbiAgICAoY291bnQga2V5cylcbiAgICBcIiwgW1wiXG4gICAgKGNvbW1hLXNlcCAoaW50ZXJsZWF2ZSBrZXlzIHZhbHMpKVxuICAgIFwiXSwgbnVsbClcIilcbiAgIChlbWl0c1xuICAgIFwiY2xqcy5jb3JlLlBlcnNpc3RlbnRBcnJheU1hcC5jcmVhdGVBc0lmQnlBc3NvYyhbXCJcbiAgICAoY29tbWEtc2VwIChpbnRlcmxlYXZlIGtleXMgdmFscykpXG4gICAgXCJdKVwiKSlcbiAgOmVsc2VcbiAgKGVtaXRzXG4gICBcImNsanMuY29yZS5QZXJzaXN0ZW50SGFzaE1hcC5mcm9tQXJyYXlzKFtcIlxuICAgKGNvbW1hLXNlcCBrZXlzKVxuICAgXCJdLFtcIlxuICAgKGNvbW1hLXNlcCB2YWxzKVxuICAgXCJdKVwiKSkpXG4ifSB7OnN5bSBlbWl0LXZlY3RvciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtpdGVtcyBjb21tYS1zZXBdKX0sIDpzb3VyY2UgIihkZWZuXG4gZW1pdC12ZWN0b3JcbiBbaXRlbXMgY29tbWEtc2VwXVxuIChpZlxuICAoZW1wdHk/IGl0ZW1zKVxuICAoZW1pdHMgXCJjbGpzLmNvcmUuUGVyc2lzdGVudFZlY3Rvci5FTVBUWVwiKVxuICAobGV0XG4gICBbY250IChjb3VudCBpdGVtcyldXG4gICAoaWZcbiAgICAoPCBjbnQgMzIpXG4gICAgKGVtaXRzXG4gICAgIFwibmV3IGNsanMuY29yZS5QZXJzaXN0ZW50VmVjdG9yKG51bGwsIFwiXG4gICAgIGNudFxuICAgICBcIiwgNSwgY2xqcy5jb3JlLlBlcnNpc3RlbnRWZWN0b3IuRU1QVFlfTk9ERSwgW1wiXG4gICAgIChjb21tYS1zZXAgaXRlbXMpXG4gICAgIFwiXSwgbnVsbClcIilcbiAgICAoZW1pdHNcbiAgICAgXCJjbGpzLmNvcmUuUGVyc2lzdGVudFZlY3Rvci5mcm9tQXJyYXkoW1wiXG4gICAgIChjb21tYS1zZXAgaXRlbXMpXG4gICAgIFwiXSwgdHJ1ZSlcIikpKSkpXG4ifSB7OnN5bSB0cnV0aHktY29uc3RhbnQ/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2V4cHJdKX0sIDpzb3VyY2UgIihkZWZuXG4gdHJ1dGh5LWNvbnN0YW50P1xuIFtleHByXVxuIChsZXRcbiAgW3s6a2V5cyBbb3AgZm9ybSBjb25zdC1leHByXX0gKGFuYS91bndyYXAtcXVvdGUgZXhwcildXG4gIChvclxuICAgKGFuZFxuICAgICg9IG9wIDpjb25zdClcbiAgICBmb3JtXG4gICAgKG5vdFxuICAgICAob3JcbiAgICAgIChhbmQgKHN0cmluZz8gZm9ybSkgKD0gZm9ybSBcIlwiKSlcbiAgICAgIChhbmQgKG51bWJlcj8gZm9ybSkgKHplcm8/IGZvcm0pKSkpKVxuICAgKGFuZCAoc29tZT8gY29uc3QtZXhwcikgKHRydXRoeS1jb25zdGFudD8gY29uc3QtZXhwcikpKSkpXG4ifSB7OnN5bSBlbWl0bG4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbXSBbYV0gW2EgYl0gW2EgYiBjXSBbYSBiIGMgZF0gW2EgYiBjIGQgZV0gW2EgYiBjIGQgZSAmIHhzXV19LCA6c291cmNlICIoZGVmblxuIGVtaXRsblxuIChbXSAoX2VtaXRsbikpXG4gKFthXSAoZW1pdHMgYSkgKF9lbWl0bG4pKVxuIChbYSBiXSAoZW1pdHMgYSkgKGVtaXRzIGIpIChfZW1pdGxuKSlcbiAoW2EgYiBjXSAoZW1pdHMgYSkgKGVtaXRzIGIpIChlbWl0cyBjKSAoX2VtaXRsbikpXG4gKFthIGIgYyBkXSAoZW1pdHMgYSkgKGVtaXRzIGIpIChlbWl0cyBjKSAoZW1pdHMgZCkgKF9lbWl0bG4pKVxuIChbYSBiIGMgZCBlXVxuICAoZW1pdHMgYSlcbiAgKGVtaXRzIGIpXG4gIChlbWl0cyBjKVxuICAoZW1pdHMgZClcbiAgKGVtaXRzIGUpXG4gIChfZW1pdGxuKSlcbiAoW2EgYiBjIGQgZSAmIHhzXVxuICAoZW1pdHMgYSlcbiAgKGVtaXRzIGIpXG4gIChlbWl0cyBjKVxuICAoZW1pdHMgZClcbiAgKGVtaXRzIGUpXG4gIChkb3NlcSBbeCB4c10gKGVtaXRzIHgpKVxuICAoX2VtaXRsbikpKVxuIn0gezpzeW0gZW1pdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFthc3RdKX0sIDpzb3VyY2UgIihkZWZuXG4gZW1pdFxuIFthc3RdXG4gKHdoZW5cbiAgKnNvdXJjZS1tYXAtZGF0YSpcbiAgKGxldFxuICAgW3s6a2V5cyBbZW52XX0gYXN0XVxuICAgKHdoZW5cbiAgICAoOmxpbmUgZW52KVxuICAgIChsZXRcbiAgICAgW3s6a2V5cyBbbGluZSBjb2x1bW5dfSBlbnZdXG4gICAgIChzd2FwIVxuICAgICAgKnNvdXJjZS1tYXAtZGF0YSpcbiAgICAgIChmblxuICAgICAgIFttXVxuICAgICAgIChsZXRcbiAgICAgICAgW21pbmZvXG4gICAgICAgICAoY29uZC0+XG4gICAgICAgICAgezpnY29sXG4gICAgICAgICAgICM/KDpjbGogKC5nZXQgKnNvdXJjZS1tYXAtZGF0YS1nZW4tY29sKikgOmNsanMgKDpnZW4tY29sIG0pKSxcbiAgICAgICAgICAgOmdsaW5lICg6Z2VuLWxpbmUgbSl9XG4gICAgICAgICAgKCN7OmJpbmRpbmcgOnZhciA6anMtdmFyIDpsb2NhbH0gKDpvcCBhc3QpKVxuICAgICAgICAgIChhc3NvYyA6bmFtZSAoc3RyICgtPiBhc3QgOmluZm8gOm5hbWUpKSkpXVxuICAgICAgICAodXBkYXRlLWluXG4gICAgICAgICBtXG4gICAgICAgICBbOnNvdXJjZS1tYXAgKGRlYyBsaW5lKV1cbiAgICAgICAgIChmbmlsXG4gICAgICAgICAgKGZuXG4gICAgICAgICAgIFtsaW5lXVxuICAgICAgICAgICAodXBkYXRlLWluXG4gICAgICAgICAgICBsaW5lXG4gICAgICAgICAgICBbKGlmIGNvbHVtbiAoZGVjIGNvbHVtbikgMCldXG4gICAgICAgICAgICAoZm5pbCAoZm4gW2NvbHVtbl0gKGNvbmogY29sdW1uIG1pbmZvKSkgW10pKSlcbiAgICAgICAgICAoc29ydGVkLW1hcCkpKSkpKSkpKSlcbiAoZW1pdCogYXN0KSlcbiJ9IHs6c3ltIHNhZmUtdGVzdD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gc2FmZS10ZXN0P1xuIFtlbnYgZV1cbiAobGV0XG4gIFt0YWcgKGFuYS9pbmZlci10YWcgZW52IGUpXVxuICAob3IgKCN7J3NlcSAnYm9vbGVhbn0gdGFnKSAodHJ1dGh5LWNvbnN0YW50PyBlKSkpKVxuIn0gezpzeW0gZW1pdC1leHRlcm5zLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW2V4dGVybnNdIFtwcmVmaXggZXh0ZXJucyB0b3AtbGV2ZWwga25vd24tZXh0ZXJuc11dfSwgOnNvdXJjZSAiKGRlZm5cbiBlbWl0LWV4dGVybnNcbiAoW2V4dGVybnNdXG4gIChlbWl0LWV4dGVybnNcbiAgIFtdXG4gICBleHRlcm5zXG4gICAoYXRvbSAje30pXG4gICAod2hlbiBlbnYvKmNvbXBpbGVyKiAoYW5hL2dldC1leHRlcm5zKSkpKVxuIChbcHJlZml4IGV4dGVybnMgdG9wLWxldmVsIGtub3duLWV4dGVybnNdXG4gIChsb29wXG4gICBba3MgKHNlcSAoa2V5cyBleHRlcm5zKSldXG4gICAod2hlblxuICAgIGtzXG4gICAgKGxldFxuICAgICBbayAoZmlyc3Qga3MpIFt0b3AgOmFzIHByZWZpeCddIChjb25qIHByZWZpeCBrKV1cbiAgICAgKHdoZW5cbiAgICAgIChhbmQgKG5vdD0gJ3Byb3RvdHlwZSBrKSAobmlsPyAoZ2V0LWluIGtub3duLWV4dGVybnMgcHJlZml4JykpKVxuICAgICAgKGlmLW5vdFxuICAgICAgIChvciAoY29udGFpbnM/IEB0b3AtbGV2ZWwgdG9wKSAoY29udGFpbnM/IGtub3duLWV4dGVybnMgdG9wKSlcbiAgICAgICAoZG9cbiAgICAgICAgKGVtaXRsbiBcInZhciBcIiAoc3RyaW5nL2pvaW4gXCIuXCIgKG1hcCBtdW5nZSBwcmVmaXgnKSkgXCI7XCIpXG4gICAgICAgIChzd2FwISB0b3AtbGV2ZWwgY29uaiB0b3ApKVxuICAgICAgIChlbWl0bG4gKHN0cmluZy9qb2luIFwiLlwiIChtYXAgbXVuZ2UgcHJlZml4JykpIFwiO1wiKSkpXG4gICAgIChsZXRcbiAgICAgIFttIChnZXQgZXh0ZXJucyBrKV1cbiAgICAgICh3aGVuLW5vdFxuICAgICAgIChlbXB0eT8gbSlcbiAgICAgICAoZW1pdC1leHRlcm5zIHByZWZpeCcgbSB0b3AtbGV2ZWwga25vd24tZXh0ZXJucykpKSlcbiAgICAocmVjdXIgKG5leHQga3MpKSkpKSlcbiJ9IHs6c3ltIGVtaXQtZ2xvYmFsLWV4cG9ydCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtucy1uYW1lIGdsb2JhbC1leHBvcnRzIGxpYl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbWl0LWdsb2JhbC1leHBvcnRcbiBbbnMtbmFtZSBnbG9iYWwtZXhwb3J0cyBsaWJdXG4gKGxldFxuICBbW2xpYicgc3VibGliXSAoYW5hL2xpYiZzdWJsaWIgbGliKV1cbiAgKGVtaXRsblxuICAgKG11bmdlIG5zLW5hbWUpXG4gICBcIi5cIlxuICAgKGFuYS9tdW5nZS1nbG9iYWwtZXhwb3J0IGxpYilcbiAgIFwiID0gZ29vZy5nbG9iYWxcIlxuICAgKC0+PlxuICAgIChzdHJpbmcvc3BsaXRcbiAgICAgKG5hbWVcbiAgICAgIChvclxuICAgICAgIChnZXQgZ2xvYmFsLWV4cG9ydHMgKHN5bWJvbCBsaWInKSlcbiAgICAgICAoZ2V0IGdsb2JhbC1leHBvcnRzIChuYW1lIGxpYicpKSkpXG4gICAgICNcIlxcLlwiKVxuICAgIChtYXAgKGZuIFtwcm9wXSAoc3RyIFwiW1xcXCJcIiBwcm9wIFwiXFxcIl1cIikpKVxuICAgIChhcHBseSBzdHIpKVxuICAgKHN1YmxpYi1zZWxlY3Qgc3VibGliKVxuICAgXCI7XCIpKSlcbiJ9IHs6c3ltIGRpc3RpbmN0LWNvbnN0YW50cz8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbaXRlbXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gZGlzdGluY3QtY29uc3RhbnRzP1xuIFtpdGVtc11cbiAobGV0XG4gIFtpdGVtcyAobWFwIGFuYS91bndyYXAtcXVvdGUgaXRlbXMpXVxuICAoYW5kXG4gICAoZXZlcnk/IChmbiogW3AxX180NTI3MCNdICg9ICg6b3AgcDFfXzQ1MjcwIykgOmNvbnN0KSkgaXRlbXMpXG4gICAoPSAoY291bnQgKGludG8gI3t9IGl0ZW1zKSkgKGNvdW50IGl0ZW1zKSkpKSlcbiJ9IHs6c3ltIHNoYWRvdy1kZXB0aCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIHNoYWRvdy1kZXB0aFxuIFtzXVxuIChsZXRcbiAgW3s6a2V5cyBbbmFtZSBpbmZvXX0gc11cbiAgKGxvb3BcbiAgIFtkIDAgezprZXlzIFtzaGFkb3ddfSBpbmZvXVxuICAgKGNvbmRcbiAgICBzaGFkb3dcbiAgICAocmVjdXIgKGluYyBkKSBzaGFkb3cpXG4gICAgKGZpbmQtbnMtc3RhcnRzLXdpdGggKHN0ciBuYW1lKSlcbiAgICAoaW5jIGQpXG4gICAgOmVsc2VcbiAgICBkKSkpKVxuIn0pLCBjbGpzLnNvdXJjZS1tYXAuYmFzZTY0ICh7OnN5bSBjaGFyczY0LCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIGNoYXJzNjRcbiBcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky9cIilcbiJ9IHs6c3ltIGNoYXItPmludCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgY2hhci0+aW50ICh6aXBtYXAgY2hhcnM2NCAocmFuZ2UgMCA2NCkpKVxuIn0gezpzeW0gaW50LT5jaGFyLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBpbnQtPmNoYXIgKHppcG1hcCAocmFuZ2UgMCA2NCkgY2hhcnM2NCkpXG4ifSB7OnN5bSBlbmNvZGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbmNvZGVcbiBbbl1cbiAobGV0XG4gIFtlIChmaW5kIGludC0+Y2hhciBuKV1cbiAgKGlmXG4gICBlXG4gICAoc2Vjb25kIGUpXG4gICAodGhyb3cgKGpzL0Vycm9yLiAoc3RyIFwiTXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDYzOiBcIiBuKSkpKSkpXG4ifSB7OnN5bSBkZWNvZGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbY10pfSwgOnNvdXJjZSAiKGRlZm5cbiBkZWNvZGVcbiBbY11cbiAobGV0XG4gIFtlIChmaW5kIGNoYXItPmludCBjKV1cbiAgKGlmXG4gICBlXG4gICAoc2Vjb25kIGUpXG4gICAodGhyb3cgKGpzL0Vycm9yLiAoc3RyIFwiTm90IGEgdmFsaWQgYmFzZSA2NCBkaWdpdDogXCIgYykpKSkpKVxuIn0pLCBvYWtjbGpzLnRvb2xzLnJlYWRlci5pbXBsLnV0aWxzICh7OnN5bSByZWFkZXItY29uZGl0aW9uYWwsIDptZXRhIHs6ZG9jICJDb25zdHJ1Y3QgYSBkYXRhIHJlcHJlc2VudGF0aW9uIG9mIGEgcmVhZGVyIGNvbmRpdGlvbmFsLlxuICBJZiB0cnVlLCBzcGxpY2luZz8gaW5kaWNhdGVzIHJlYWQtY29uZC1zcGxpY2luZy4iLCA6YXJnbGlzdHMgKFtmb3JtIHNwbGljaW5nP10pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWFkZXItY29uZGl0aW9uYWxcbiBcIkNvbnN0cnVjdCBhIGRhdGEgcmVwcmVzZW50YXRpb24gb2YgYSByZWFkZXIgY29uZGl0aW9uYWwuXFxuICBJZiB0cnVlLCBzcGxpY2luZz8gaW5kaWNhdGVzIHJlYWQtY29uZC1zcGxpY2luZy5cIlxuIFtmb3JtIHNwbGljaW5nP11cbiAoUmVhZGVyQ29uZGl0aW9uYWwuIHNwbGljaW5nPyBmb3JtKSlcbiJ9IHs6c3ltIHdoaXRlc3BhY2U/LCA6bWV0YSB7OmRvYyAiQ2hlY2tzIHdoZXRoZXIgYSBnaXZlbiBjaGFyYWN0ZXIgaXMgd2hpdGVzcGFjZSIsIDphcmdsaXN0cyAoW2NoXSl9LCA6c291cmNlICIoZGVmblxuIHdoaXRlc3BhY2U/XG4gXCJDaGVja3Mgd2hldGhlciBhIGdpdmVuIGNoYXJhY3RlciBpcyB3aGl0ZXNwYWNlXCJcbiBbY2hdXG4gKHdoZW4tbm90IChuaWw/IGNoKSAoaWYgKGlkZW50aWNhbD8gY2ggXFwsKSB0cnVlICgudGVzdCB3cy1yeCBjaCkpKSlcbiJ9IHs6c3ltIGNoYXItY29kZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjaCBiYXNlXSl9LCA6c291cmNlICIoZGVmblxuIGNoYXItY29kZVxuIFtjaCBiYXNlXVxuIChsZXQgW2NvZGUgKGpzL3BhcnNlSW50IGNoIGJhc2UpXSAoaWYgKGpzL2lzTmFOIGNvZGUpIC0xIGNvZGUpKSlcbiJ9IHs6c3ltIGxhc3QtaWQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIGxhc3QtaWQgKGF0b20gMCkpXG4ifSB7OnN5bSBjaGFyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGNoYXIgW3hdICh3aGVuLW5vdCAobmlsPyB4KSAoY2xqcy5jb3JlL2NoYXIgeCkpKVxuIn0gezpzeW0gbnVtZXJpYz8sIDptZXRhIHs6ZG9jICJDaGVja3Mgd2hldGhlciBhIGdpdmVuIGNoYXJhY3RlciBpcyBudW1lcmljIiwgOmFyZ2xpc3RzIChbY2hdKX0sIDpzb3VyY2UgIihkZWZuXG4gbnVtZXJpYz9cbiBcIkNoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gY2hhcmFjdGVyIGlzIG51bWVyaWNcIlxuIFtjaF1cbiAod2hlbi1ub3QgKG5pbD8gY2gpIChnc3RyaW5nL2lzTnVtZXJpYyBjaCkpKVxuIn0gezpzeW0gc2Vjb25kJywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtbYSBiXV0pfSwgOnNvdXJjZSAiKGRlZm4gc2Vjb25kJyBbW2EgYl1dICh3aGVuLW5vdCBhIGIpKVxuIn0gezpzeW0gZGVzdWdhci1tZXRhLCA6bWV0YSB7OmRvYyAiUmVzb2x2ZXMgc3ludGFjdGljYWwgc3VnYXIgaW4gbWV0YWRhdGEiLCA6YXJnbGlzdHMgKFtmXSl9LCA6c291cmNlICIoZGVmblxuIGRlc3VnYXItbWV0YVxuIFwiUmVzb2x2ZXMgc3ludGFjdGljYWwgc3VnYXIgaW4gbWV0YWRhdGFcIlxuIFtmXVxuIChjb25kXG4gIChrZXl3b3JkPyBmKVxuICB7ZiB0cnVlfVxuICAoc3ltYm9sPyBmKVxuICB7OnRhZyBmfVxuICAoc3RyaW5nPyBmKVxuICB7OnRhZyBmfVxuICA6ZWxzZVxuICBmKSlcbiJ9IHs6c3ltIG5leHQtaWQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmbiBuZXh0LWlkIFtdIChzd2FwISBsYXN0LWlkIGluYykpXG4ifSB7OnN5bSBleC1pbmZvPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtleF0pfSwgOnNvdXJjZSAiKGRlZm4gZXgtaW5mbz8gW2V4XSAoaW5zdGFuY2U/IGNsanMuY29yZS5FeGNlcHRpb25JbmZvIGV4KSlcbiJ9IHs6c3ltIHJlYWRlci1jb25kaXRpb25hbD8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgaXMgdGhlIGRhdGEgcmVwcmVzZW50YXRpb24gb2YgYSByZWFkZXIgY29uZGl0aW9uYWwiLCA6YXJnbGlzdHMgKFt2YWx1ZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWFkZXItY29uZGl0aW9uYWw/XG4gXCJSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgaXMgdGhlIGRhdGEgcmVwcmVzZW50YXRpb24gb2YgYSByZWFkZXIgY29uZGl0aW9uYWxcIlxuIFt2YWx1ZV1cbiAoaW5zdGFuY2U/IFJlYWRlckNvbmRpdGlvbmFsIHZhbHVlKSlcbiJ9IHs6c3ltIG5ld2xpbmU/LCA6bWV0YSB7OmRvYyAiQ2hlY2tzIHdoZXRoZXIgdGhlIGNoYXJhY3RlciBpcyBhIG5ld2xpbmUiLCA6YXJnbGlzdHMgKFtjXSl9LCA6c291cmNlICIoZGVmblxuIG5ld2xpbmU/XG4gXCJDaGVja3Mgd2hldGhlciB0aGUgY2hhcmFjdGVyIGlzIGEgbmV3bGluZVwiXG4gW2NdXG4gKG9yIChpZGVudGljYWw/IFxcbmV3bGluZSBjKSAoaWRlbnRpY2FsPyBcIlxcblwiIGMpIChuaWw/IGMpKSlcbiJ9IHs6c3ltIG5hbWVzcGFjZS1rZXlzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW25zIGtleXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gbmFtZXNwYWNlLWtleXNcbiBbbnMga2V5c11cbiAoZm9yXG4gIFtrZXkga2V5c11cbiAgKGlmXG4gICAob3IgKHN5bWJvbD8ga2V5KSAoa2V5d29yZD8ga2V5KSlcbiAgIChsZXRcbiAgICBbW2tleS1ucyBrZXktbmFtZV1cbiAgICAgKChqdXh0IG5hbWVzcGFjZSBuYW1lKSBrZXkpXG4gICAgIC0+a2V5XG4gICAgIChpZiAoc3ltYm9sPyBrZXkpIHN5bWJvbCBrZXl3b3JkKV1cbiAgICAoY29uZFxuICAgICAobmlsPyBrZXktbnMpXG4gICAgICgtPmtleSBucyBrZXktbmFtZSlcbiAgICAgKD0gXCJfXCIga2V5LW5zKVxuICAgICAoLT5rZXkga2V5LW5hbWUpXG4gICAgIDplbHNlXG4gICAgIGtleSkpXG4gICBrZXkpKSlcbiJ9IHs6c3ltIHdzLXJ4LCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiB3cy1yeCAjXCJbXFxzXVwiKVxuIn0pLCBjbGpzLmNvcmUuYXN5bmMuaW1wbC5jaGFubmVscyAoezpzeW0gYm94LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ZhbF0pfSwgOnNvdXJjZSAiKGRlZm4gYm94IFt2YWxdIChyZWlmeSBjbGpzLmNvcmUvSURlcmVmICgtZGVyZWYgW19dIHZhbCkpKVxuIn0gezpzeW0gcHV0LWFjdGl2ZT8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbYm94XSl9LCA6c291cmNlICIoZGVmbiBwdXQtYWN0aXZlPyBbYm94XSAoaW1wbC9hY3RpdmU/ICguLWhhbmRsZXIgYm94KSkpXG4ifSB7OnN5bSBNQVhfRElSVFksIDptZXRhIHt9LCA6c291cmNlICIoZGVmIE1BWF9ESVJUWSA2NClcbiJ9IHs6c3ltIGFib3J0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RoaXNdKX0sIDpwcm90b2NvbCBNTUN9IHs6c3ltIE1NQywgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKGFib3J0KX0gezpzeW0gY2hhbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1tidWZdIFtidWYgeGZvcm1dIFtidWYgeGZvcm0gZXhoXV19LCA6c291cmNlICIoZGVmblxuIGNoYW5cbiAoW2J1Zl0gKGNoYW4gYnVmIG5pbCkpXG4gKFtidWYgeGZvcm1dIChjaGFuIGJ1ZiB4Zm9ybSBuaWwpKVxuIChbYnVmIHhmb3JtIGV4aF1cbiAgKE1hbnlUb01hbnlDaGFubmVsLlxuICAgKGJ1ZmZlcnMvcmluZy1idWZmZXIgMzIpXG4gICAwXG4gICAoYnVmZmVycy9yaW5nLWJ1ZmZlciAzMilcbiAgIDBcbiAgIGJ1ZlxuICAgZmFsc2VcbiAgIChsZXRcbiAgICBbYWRkISAoaWYgeGZvcm0gKHhmb3JtIGltcGwvYWRkISkgaW1wbC9hZGQhKV1cbiAgICAoZm5cbiAgICAgKFtidWZdICh0cnkgKGFkZCEgYnVmKSAoY2F0Y2ggOmRlZmF1bHQgdCAoaGFuZGxlIGJ1ZiBleGggdCkpKSlcbiAgICAgKFtidWYgdmFsXVxuICAgICAgKHRyeSAoYWRkISBidWYgdmFsKSAoY2F0Y2ggOmRlZmF1bHQgdCAoaGFuZGxlIGJ1ZiBleGggdCkpKSkpKSkpKVxuIn0pLCBjbGpzLmNvcmUuYXN5bmMuaW1wbC5kaXNwYXRjaCAoezpzeW0gdGFza3MsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHRhc2tzIChidWZmZXJzL3JpbmctYnVmZmVyIDMyKSlcbiJ9IHs6c3ltIHJ1bm5pbmc/LCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBydW5uaW5nPyBmYWxzZSlcbiJ9IHs6c3ltIHF1ZXVlZD8sIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHF1ZXVlZD8gZmFsc2UpXG4ifSB7OnN5bSBUQVNLX0JBVENIX1NJWkUsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIFRBU0tfQkFUQ0hfU0laRSAxMDI0KVxuIn0gezpzeW0gcHJvY2Vzcy1tZXNzYWdlcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gcHJvY2Vzcy1tZXNzYWdlc1xuIFtdXG4gKHNldCEgcnVubmluZz8gdHJ1ZSlcbiAoc2V0ISBxdWV1ZWQ/IGZhbHNlKVxuIChsb29wXG4gIFtjb3VudCAwXVxuICAobGV0XG4gICBbbSAoLnBvcCB0YXNrcyldXG4gICAod2hlbi1ub3RcbiAgICAobmlsPyBtKVxuICAgIChtKVxuICAgICh3aGVuICg8IGNvdW50IFRBU0tfQkFUQ0hfU0laRSkgKHJlY3VyIChpbmMgY291bnQpKSkpKSlcbiAoc2V0ISBydW5uaW5nPyBmYWxzZSlcbiAod2hlbiAoPiAoLi1sZW5ndGggdGFza3MpIDApIChxdWV1ZS1kaXNwYXRjaGVyKSkpXG4ifSB7OnN5bSBxdWV1ZS1kaXNwYXRjaGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBxdWV1ZS1kaXNwYXRjaGVyXG4gW11cbiAod2hlbi1ub3RcbiAgKGFuZCBxdWV1ZWQ/IHJ1bm5pbmc/KVxuICAoc2V0ISBxdWV1ZWQ/IHRydWUpXG4gIChnb29nLmFzeW5jLm5leHRUaWNrIHByb2Nlc3MtbWVzc2FnZXMpKSlcbiJ9IHs6c3ltIHJ1biwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmXSl9LCA6c291cmNlICIoZGVmbiBydW4gW2ZdICgudW5ib3VuZGVkLXVuc2hpZnQgdGFza3MgZikgKHF1ZXVlLWRpc3BhdGNoZXIpKVxuIn0gezpzeW0gcXVldWUtZGVsYXksIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZiBkZWxheV0pfSwgOnNvdXJjZSAiKGRlZm4gcXVldWUtZGVsYXkgW2YgZGVsYXldIChqcy9zZXRUaW1lb3V0IGYgZGVsYXkpKVxuIn0pLCBwYXJlbi1zb3VwLmNvcmUgKHs6c3ltIGNhbi11bmRvLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VkaXRvcl0pfSwgOnNvdXJjZSAiKGRlZm4gY2FuLXVuZG8gW2VkaXRvcl0gKGNhbi11bmRvPyBlZGl0b3IpKVxuIn0gezpzeW0gc2hvdy1lcnJvci1tZXNzYWdlISwgOm1ldGEgezpkb2MgIlNob3dzIGEgcG9wdXAgd2l0aCBhbiBlcnJvciBtZXNzYWdlLiIsIDphcmdsaXN0cyAoW3BhcmVudC1lbGVtIGV2ZW50XSl9LCA6c291cmNlICIoZGVmblxuIHNob3ctZXJyb3ItbWVzc2FnZSFcbiBcIlNob3dzIGEgcG9wdXAgd2l0aCBhbiBlcnJvciBtZXNzYWdlLlwiXG4gW3BhcmVudC1lbGVtIGV2ZW50XVxuIChsZXRcbiAgW2VsZW1cbiAgICguLXRhcmdldCBldmVudClcbiAgIHhcbiAgICguLWNsaWVudFggZXZlbnQpXG4gICB5XG4gICAoLi1jbGllbnRZIGV2ZW50KVxuICAgcG9wdXBcbiAgICguY3JlYXRlRWxlbWVudCBqcy9kb2N1bWVudCBcImRpdlwiKV1cbiAgKHNldCEgKC4tdGV4dENvbnRlbnQgcG9wdXApICgtPiBlbGVtIC4tZGF0YXNldCAuLW1lc3NhZ2UpKVxuICAoc2V0ISAoLi10b3AgKC4tc3R5bGUgcG9wdXApKSAoc3RyIHkgXCJweFwiKSlcbiAgKHNldCEgKC4tbGVmdCAoLi1zdHlsZSBwb3B1cCkpIChzdHIgeCBcInB4XCIpKVxuICAoc2V0ISAoLi1jbGFzc05hbWUgcG9wdXApIFwiZXJyb3ItdGV4dFwiKVxuICAoLmFwcGVuZENoaWxkIHBhcmVudC1lbGVtIHBvcHVwKSkpXG4ifSB7OnN5bSBmb2N1c2VkLXRleHQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmbiBmb2N1c2VkLXRleHQgW10gKHNvbWUtPiAoZG9tL2dldC1mb2N1c2VkLWZvcm0pIC4tdGV4dENvbnRlbnQpKVxuIn0gezpzeW0gc2VsZWN0ZWQtdGV4dCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gc2VsZWN0ZWQtdGV4dFxuIFtdXG4gKGxldFxuICBbcyAoLT4ganMvd2luZG93IC5nZXRTZWxlY3Rpb24gLnRvU3RyaW5nKV1cbiAgKHdoZW4tbm90IChlbXB0eT8gcykgcykpKVxuIn0gezpzeW0gY2FuLXJlZG8/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RoaXNdKX0sIDpwcm90b2NvbCBFZGl0b3J9IHs6c3ltIGNhbi1yZWRvLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VkaXRvcl0pfSwgOnNvdXJjZSAiKGRlZm4gY2FuLXJlZG8gW2VkaXRvcl0gKGNhbi1yZWRvPyBlZGl0b3IpKVxuIn0gezpzeW0gcmFpbmJvdy1kZWxpbWl0ZXJzLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG1hcCBvZiBlbGVtZW50cyBhbmQgY2xhc3MgbmFtZXMuIiwgOmFyZ2xpc3RzIFtbcGFyZW50IGxldmVsXSBbcGFyZW50IGxldmVsIG1dXX0sIDpzb3VyY2UgIihkZWZuXG4gcmFpbmJvdy1kZWxpbWl0ZXJzXG4gXCJSZXR1cm5zIGEgbWFwIG9mIGVsZW1lbnRzIGFuZCBjbGFzcyBuYW1lcy5cIlxuIChbcGFyZW50IGxldmVsXVxuICAocGVyc2lzdGVudCEgKHJhaW5ib3ctZGVsaW1pdGVycyBwYXJlbnQgbGV2ZWwgKHRyYW5zaWVudCB7fSkpKSlcbiAoW3BhcmVudCBsZXZlbCBtXVxuICAocmVkdWNlXG4gICAoZm5cbiAgICBbbSBlbGVtXVxuICAgIChsZXRcbiAgICAgW2NsYXNzZXMgKC4tY2xhc3NMaXN0IGVsZW0pXVxuICAgICAoY29uZFxuICAgICAgKC5jb250YWlucyBjbGFzc2VzIFwiZGVsaW1pdGVyXCIpXG4gICAgICAoYXNzb2MhIG0gZWxlbSAoc3RyIFwicmFpbmJvdy1cIiAobW9kIGxldmVsIHJhaW5ib3ctY291bnQpKSlcbiAgICAgICguY29udGFpbnMgY2xhc3NlcyBcImNvbGxlY3Rpb25cIilcbiAgICAgIChyYWluYm93LWRlbGltaXRlcnMgZWxlbSAoaW5jIGxldmVsKSBtKVxuICAgICAgOmVsc2VcbiAgICAgIG0pKSlcbiAgIG1cbiAgICgtPiBwYXJlbnQgLi1jaGlsZHJlbiBhcnJheS1zZXEpKSkpXG4ifSB7OnN5bSB1cCEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGhpcyBhbHQ/XSl9LCA6cHJvdG9jb2wgRWRpdG9yfSB7OnN5bSByZWZyZXNoISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0aGlzIHN0YXRlXSl9LCA6cHJvdG9jb2wgRWRpdG9yfSB7OnN5bSB1bmRvISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0aGlzXSl9LCA6cHJvdG9jb2wgRWRpdG9yfSB7OnN5bSByZWZyZXNoLWN1cnNvci1wb3NpdGlvbiEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbY29udGVudCB7OmtleXMgW2Nyb3BwZWQtc3RhdGVdLCA6YXMgc3RhdGV9XSl9LCA6c291cmNlICIoZGVmblxuIHJlZnJlc2gtY3Vyc29yLXBvc2l0aW9uIVxuIFtjb250ZW50IHs6a2V5cyBbY3JvcHBlZC1zdGF0ZV0sIDphcyBzdGF0ZX1dXG4gKGlmXG4gIChzb21lLT4+IGNyb3BwZWQtc3RhdGUgOmVsZW1lbnQgKC5jb250YWlucyBjb250ZW50KSlcbiAgKHNvbWUtPlxuICAgY3JvcHBlZC1zdGF0ZVxuICAgOmVsZW1lbnRcbiAgIChkb20vc2V0LWN1cnNvci1wb3NpdGlvbiEgKDpjdXJzb3ItcG9zaXRpb24gY3JvcHBlZC1zdGF0ZSkpKVxuICAoaWZcbiAgIChhbmQgKDpzZWxlY3Rpb24tY2hhbmdlPyBzdGF0ZSkgKDpvcmlnaW5hbC1jdXJzb3ItcG9zaXRpb24gc3RhdGUpKVxuICAgKGRvbS9zZXQtY3Vyc29yLXBvc2l0aW9uISBjb250ZW50ICg6b3JpZ2luYWwtY3Vyc29yLXBvc2l0aW9uIHN0YXRlKSlcbiAgIChkb20vc2V0LWN1cnNvci1wb3NpdGlvbiEgY29udGVudCAoOmN1cnNvci1wb3NpdGlvbiBzdGF0ZSkpKSkpXG4ifSB7OnN5bSBrZXktbmFtZT8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgdGhlIHN1cHBsaWVkIGtleSBldmVudCBpbnZvbHZlcyB0aGUga2V5KHMpIGRlc2NyaWJlZCBieSBrZXktbmFtZS4iLCA6YXJnbGlzdHMgKFtldmVudCBrZXktbmFtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBrZXktbmFtZT9cbiBcIlJldHVybnMgdHJ1ZSBpZiB0aGUgc3VwcGxpZWQga2V5IGV2ZW50IGludm9sdmVzIHRoZSBrZXkocykgZGVzY3JpYmVkIGJ5IGtleS1uYW1lLlwiXG4gW2V2ZW50IGtleS1uYW1lXVxuIChsZXRcbiAgW2NvZGUgKGtleS1jb2RlIGV2ZW50KV1cbiAgKGNhc2VcbiAgIGtleS1uYW1lXG4gICA6dW5kby1vci1yZWRvXG4gICAoYW5kIChvciAoLi1tZXRhS2V5IGV2ZW50KSAoLi1jdHJsS2V5IGV2ZW50KSkgKD0gY29kZSA5MCkpXG4gICA6dGFiXG4gICAoPSBjb2RlIDkpXG4gICA6ZW50ZXJcbiAgICg9IGNvZGUgMTMpXG4gICA6YXJyb3dzXG4gICAoY29udGFpbnM/ICN7MzkgNDAgMzggMzd9IGNvZGUpXG4gICA6dXAtYXJyb3dcbiAgICg9IGNvZGUgMzgpXG4gICA6ZG93bi1hcnJvd1xuICAgKD0gY29kZSA0MClcbiAgIDpnZW5lcmFsXG4gICAobm90XG4gICAgKG9yXG4gICAgIChjb250YWlucz8gI3swIDkxIDkzIDE3IDE2IDE4fSBjb2RlKVxuICAgICAoLi1jdHJsS2V5IGV2ZW50KVxuICAgICAoLi1tZXRhS2V5IGV2ZW50KSkpXG4gICBmYWxzZSkpKVxuIn0gezpzeW0gZXZhbCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlZGl0b3IgZm9ybSBjYWxsYmFja10pfSwgOnNvdXJjZSAiKGRlZm4gZXZhbCBbZWRpdG9yIGZvcm0gY2FsbGJhY2tdIChldmFsISBlZGl0b3IgZm9ybSBjYWxsYmFjaykpXG4ifSB7OnN5bSBjaGFubmVsPywgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBjaGFubmVsP1xuIChmbipcbiAgW3AxX180NTAzNCNdXG4gIChpbnN0YW5jZT9cbiAgIGNsanMuY29yZS5hc3luYy5pbXBsLmNoYW5uZWxzLk1hbnlUb01hbnlDaGFubmVsXG4gICBwMV9fNDUwMzQjKSkpXG4ifSB7OnN5bSBjcmVhdGUtZWRpdG9yLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3BzIGNvbnRlbnQgZXZlbnRzLWNoYW4gezprZXlzIFtoaXN0b3J5LWxpbWl0IGFwcGVuZC1saW1pdCBjb21waWxlci1mbiBjb25zb2xlLWNhbGxiYWNrIGRpc2FibGUtY2xqPyBlZGl0LWhpc3RvcnkgZm9jdXM/IGZpeC1pbmRlbnQtb24taW5pdD9dLCA6b3Ige2hpc3RvcnktbGltaXQgMTAwLCBhcHBlbmQtbGltaXQgNTAwMCwgZm9jdXM/IGZhbHNlfSwgOmFzIG9wdHN9XSl9LCA6c291cmNlICIoZGVmblxuIGNyZWF0ZS1lZGl0b3JcbiBbcHNcbiAgY29udGVudFxuICBldmVudHMtY2hhblxuICB7OmtleXNcbiAgIFtoaXN0b3J5LWxpbWl0XG4gICAgYXBwZW5kLWxpbWl0XG4gICAgY29tcGlsZXItZm5cbiAgICBjb25zb2xlLWNhbGxiYWNrXG4gICAgZGlzYWJsZS1jbGo/XG4gICAgZWRpdC1oaXN0b3J5XG4gICAgZm9jdXM/XG4gICAgZml4LWluZGVudC1vbi1pbml0P10sXG4gICA6b3Ige2hpc3RvcnktbGltaXQgMTAwLCBhcHBlbmQtbGltaXQgNTAwMCwgZm9jdXM/IGZhbHNlfSxcbiAgIDphcyBvcHRzfV1cbiAobGV0XG4gIFtjbGo/XG4gICAobm90IGRpc2FibGUtY2xqPylcbiAgIGVkaXRvcj9cbiAgIChub3QgY29uc29sZS1jYWxsYmFjaylcbiAgIGNvbXBpbGVyLWZuXG4gICAob3IgY29tcGlsZXItZm4gKGlyL2NyZWF0ZS1jb21waWxlci1mbiBvcHRzKSlcbiAgICplZGl0LWhpc3RvcnlcbiAgIChkb3RvXG4gICAgKG9yIGVkaXQtaGlzdG9yeSAobXdtL2NyZWF0ZS1lZGl0LWhpc3RvcnkpKVxuICAgIChzd2FwISBhc3NvYyA6bGltaXQgaGlzdG9yeS1saW1pdCkpXG4gICByZWZyZXNoLWluc3RhcmVwbC13aXRoLWRlbGF5IVxuICAgKGRlYm91bmNlIHJlZnJlc2gtaW5zdGFyZXBsISAzMDApXG4gICAqY29uc29sZS1oaXN0b3J5XG4gICAoY29uc29sZS9jcmVhdGUtY29uc29sZS1oaXN0b3J5KVxuICAgKmxhc3QtaGlnaGxpZ2h0LWVsZW1cbiAgIChhdG9tIG5pbClcbiAgICphbGxvdy10YWI/XG4gICAoYXRvbSBmYWxzZSlcbiAgICpmaXJzdC1yZWZyZXNoP1xuICAgKGF0b20gdHJ1ZSldXG4gICh3aGVuLW5vdFxuICAgZWRpdG9yP1xuICAgKHNldC12YWxpZGF0b3IhXG4gICAgKmVkaXQtaGlzdG9yeVxuICAgIChmblxuICAgICBbezprZXlzIFtjdXJyZW50LXN0YXRlIHN0YXRlc119XVxuICAgICAoaWYtbGV0XG4gICAgICBbc3RhdGUgKGdldCBzdGF0ZXMgY3VycmVudC1zdGF0ZSldXG4gICAgICAoLT5cbiAgICAgICBzdGF0ZVxuICAgICAgIDpjdXJzb3ItcG9zaXRpb25cbiAgICAgICBmaXJzdFxuICAgICAgICg+PSAoY29uc29sZS9nZXQtY29uc29sZS1zdGFydCAqY29uc29sZS1oaXN0b3J5KSkpXG4gICAgICB0cnVlKSkpKVxuICAocmVpZnlcbiAgIEVkaXRvclxuICAgKHVuZG8hXG4gICAgW3RoaXNdXG4gICAgKHNvbWUtPj4gKmVkaXQtaGlzdG9yeSBtd20vdW5kbyEgKHJlZnJlc2ghIHRoaXMpKVxuICAgIChkb20vc2Nyb2xsLXRvLW5lYXJlc3QtZWxlbSkpXG4gICAocmVkbyFcbiAgICBbdGhpc11cbiAgICAoc29tZS0+PiAqZWRpdC1oaXN0b3J5IG13bS9yZWRvISAocmVmcmVzaCEgdGhpcykpXG4gICAgKGRvbS9zY3JvbGwtdG8tbmVhcmVzdC1lbGVtKSlcbiAgIChjYW4tdW5kbz8gW3RoaXNdIChtd20vY2FuLXVuZG8/ICplZGl0LWhpc3RvcnkpKVxuICAgKGNhbi1yZWRvPyBbdGhpc10gKG13bS9jYW4tcmVkbz8gKmVkaXQtaGlzdG9yeSkpXG4gICAodXBkYXRlLWN1cnNvci1wb3NpdGlvbiFcbiAgICBbdGhpcyBwb3NpdGlvbl1cbiAgICAodHJ5XG4gICAgIChtd20vdXBkYXRlLWN1cnNvci1wb3NpdGlvbiEgKmVkaXQtaGlzdG9yeSBwb3NpdGlvbilcbiAgICAgKGNhdGNoXG4gICAgICBqcy9FcnJvclxuICAgICAgX1xuICAgICAgKHdoZW5cbiAgICAgICAoYXBwbHkgPSBwb3NpdGlvbilcbiAgICAgICAobGV0XG4gICAgICAgIFtzdGFydCAoY29uc29sZS9nZXQtY29uc29sZS1zdGFydCAqY29uc29sZS1oaXN0b3J5KV1cbiAgICAgICAgKGRvbS9zZXQtY3Vyc29yLXBvc2l0aW9uISBjb250ZW50IFtzdGFydCBzdGFydF0pXG4gICAgICAgIChtd20vdXBkYXRlLWN1cnNvci1wb3NpdGlvbiEgKmVkaXQtaGlzdG9yeSBbc3RhcnQgc3RhcnRdKSkpKSlcbiAgICAodXBkYXRlLWhpZ2hsaWdodCEgY29udGVudCAqbGFzdC1oaWdobGlnaHQtZWxlbSkpXG4gICAocmVzZXQtZWRpdC1oaXN0b3J5IVxuICAgIFt0aGlzIHN0YXJ0XVxuICAgIChjb25zb2xlL3VwZGF0ZS1jb25zb2xlLXN0YXJ0ISAqY29uc29sZS1oaXN0b3J5IHN0YXJ0KVxuICAgIChkb20vc2V0LWN1cnNvci1wb3NpdGlvbiEgY29udGVudCBbc3RhcnQgc3RhcnRdKVxuICAgIChsZXRcbiAgICAgWypuZXctZWRpdC1oaXN0b3J5XG4gICAgICAobXdtL2NyZWF0ZS1lZGl0LWhpc3RvcnkpXG4gICAgICBzdGF0ZVxuICAgICAgezpjdXJzb3ItcG9zaXRpb24gW3N0YXJ0IHN0YXJ0XSwgOnRleHQgKC4tdGV4dENvbnRlbnQgY29udGVudCl9XVxuICAgICAodXBkYXRlLWVkaXQtaGlzdG9yeSEgKm5ldy1lZGl0LWhpc3Rvcnkgc3RhdGUpXG4gICAgIChyZXNldCEgKmVkaXQtaGlzdG9yeSBAKm5ldy1lZGl0LWhpc3RvcnkpKSlcbiAgIChhcHBlbmQtdGV4dCFcbiAgICBbdGhpcyB0ZXh0XVxuICAgIChsZXRcbiAgICAgW25vZGVcbiAgICAgICguY3JlYXRlVGV4dE5vZGUganMvZG9jdW1lbnQgdGV4dClcbiAgICAgIF9cbiAgICAgICguYXBwZW5kQ2hpbGQgY29udGVudCBub2RlKVxuICAgICAgYWxsLXRleHRcbiAgICAgICguLXRleHRDb250ZW50IGNvbnRlbnQpXG4gICAgICBjaGFyLWNvdW50XG4gICAgICAobWF4IDAgKC0gKGNvdW50IGFsbC10ZXh0KSBhcHBlbmQtbGltaXQpKVxuICAgICAgbmV3LWFsbC10ZXh0XG4gICAgICAoc3VicyBhbGwtdGV4dCBjaGFyLWNvdW50KVxuICAgICAgY2hhci1jb3VudFxuICAgICAgKGlmXG4gICAgICAgKC5lbmRzV2l0aCBuZXctYWxsLXRleHQgXCJcXG5cIilcbiAgICAgICAoZGVjIChjb3VudCBuZXctYWxsLXRleHQpKVxuICAgICAgIChjb3VudCBuZXctYWxsLXRleHQpKV1cbiAgICAgKHdoZW5cbiAgICAgIChub3Q9IGFsbC10ZXh0IG5ldy1hbGwtdGV4dClcbiAgICAgIChzZXQhICguLXRleHRDb250ZW50IGNvbnRlbnQpIG5ldy1hbGwtdGV4dCkpXG4gICAgIChyZXNldC1lZGl0LWhpc3RvcnkhIHRoaXMgY2hhci1jb3VudCkpKVxuICAgKGVudGVyIVxuICAgIFt0aGlzXVxuICAgIChpZlxuICAgICBlZGl0b3I/XG4gICAgICguZXhlY0NvbW1hbmQganMvZG9jdW1lbnQgXCJpbnNlcnRIVE1MXCIgZmFsc2UgXCJcXG5cIilcbiAgICAgKGxldFxuICAgICAgW3RleHRcbiAgICAgICAodHJpbXIgKC4tdGV4dENvbnRlbnQgY29udGVudCkpXG4gICAgICAgcG9zdC10ZXh0XG4gICAgICAgKHN1YnMgdGV4dCAoY29uc29sZS9nZXQtY29uc29sZS1zdGFydCAqY29uc29sZS1oaXN0b3J5KSldXG4gICAgICAocmVzZXQtZWRpdC1oaXN0b3J5ISB0aGlzIChjb3VudCB0ZXh0KSlcbiAgICAgIChjb25zb2xlL3VwZGF0ZS1jb25zb2xlLWhpc3RvcnkhICpjb25zb2xlLWhpc3RvcnkgcG9zdC10ZXh0KVxuICAgICAgKGNvbnNvbGUtY2FsbGJhY2sgcG9zdC10ZXh0KSkpKVxuICAgKHVwIVxuICAgIFt0aGlzIGFsdD9dXG4gICAgKGlmXG4gICAgIGFsdD9cbiAgICAgKHdoZW4tbGV0XG4gICAgICBbZWxlbSAoZG9tL2dldC1mb2N1c2VkLWZvcm0pXVxuICAgICAgKHdoZW4tbGV0XG4gICAgICAgW3N0YXRlIChtd20vZ2V0LWN1cnJlbnQtc3RhdGUgKmVkaXQtaGlzdG9yeSldXG4gICAgICAgKHdoZW4tbGV0XG4gICAgICAgIFtlbGVtXG4gICAgICAgICAoaWZcbiAgICAgICAgICAoYW5kXG4gICAgICAgICAgICg6c2VsZWN0aW9uLWNoYW5nZT8gc3RhdGUpXG4gICAgICAgICAgICg9IGVsZW0gKHNvbWUtPiBzdGF0ZSA6Y3JvcHBlZC1zdGF0ZSA6ZWxlbWVudCkpKVxuICAgICAgICAgIChkb20vZ2V0LXBhcmVudCBlbGVtIFwiY29sbGVjdGlvblwiKVxuICAgICAgICAgIGVsZW0pXVxuICAgICAgICAobGV0XG4gICAgICAgICBbdGV4dCAoLi10ZXh0Q29udGVudCBlbGVtKSBwb3MgWzAgKGNvdW50IHRleHQpXV1cbiAgICAgICAgIChkb20vc2V0LWN1cnNvci1wb3NpdGlvbiEgZWxlbSBwb3MpXG4gICAgICAgICAodXBkYXRlLWVkaXQtaGlzdG9yeSFcbiAgICAgICAgICAqZWRpdC1oaXN0b3J5XG4gICAgICAgICAgKGFzc29jXG4gICAgICAgICAgIHN0YXRlXG4gICAgICAgICAgIDpzZWxlY3Rpb24tY2hhbmdlP1xuICAgICAgICAgICB0cnVlXG4gICAgICAgICAgIDpjcm9wcGVkLXN0YXRlXG4gICAgICAgICAgIHs6Y3Vyc29yLXBvc2l0aW9uIHBvcywgOnRleHQgdGV4dCwgOmVsZW1lbnQgZWxlbX0pKVxuICAgICAgICAgKHVwZGF0ZS1oaWdobGlnaHQhIGNvbnRlbnQgKmxhc3QtaGlnaGxpZ2h0LWVsZW0pKSkpKVxuICAgICAod2hlbi1ub3RcbiAgICAgIGVkaXRvcj9cbiAgICAgIChsZXRcbiAgICAgICBbdGV4dFxuICAgICAgICAoLi10ZXh0Q29udGVudCBjb250ZW50KVxuICAgICAgICBzdGFydFxuICAgICAgICAoY29uc29sZS9nZXQtY29uc29sZS1zdGFydCAqY29uc29sZS1oaXN0b3J5KVxuICAgICAgICBwcmUtdGV4dFxuICAgICAgICAoc3VicyB0ZXh0IDAgKGNvbnNvbGUvZ2V0LWNvbnNvbGUtc3RhcnQgKmNvbnNvbGUtaGlzdG9yeSkpXG4gICAgICAgIGxpbmVcbiAgICAgICAgKG9yIChjb25zb2xlL3VwISAqY29uc29sZS1oaXN0b3J5KSBcIlwiKVxuICAgICAgICBzdGF0ZVxuICAgICAgICB7OmN1cnNvci1wb3NpdGlvbiBbc3RhcnQgc3RhcnRdLFxuICAgICAgICAgOnRleHQgKHN0ciBwcmUtdGV4dCBsaW5lIFxcbmV3bGluZSl9XVxuICAgICAgICgtPj5cbiAgICAgICAgc3RhdGVcbiAgICAgICAgKHVwZGF0ZS1lZGl0LWhpc3RvcnkhICplZGl0LWhpc3RvcnkpXG4gICAgICAgIChyZWZyZXNoISB0aGlzKSkpKSkpXG4gICAoZG93biFcbiAgICBbdGhpcyBhbHQ/XVxuICAgIChpZlxuICAgICBhbHQ/XG4gICAgICh3aGVuXG4gICAgICAoOnNlbGVjdGlvbi1jaGFuZ2U/IChtd20vZ2V0LWN1cnJlbnQtc3RhdGUgKmVkaXQtaGlzdG9yeSkpXG4gICAgICAodW5kbyEgdGhpcykpXG4gICAgICh3aGVuLW5vdFxuICAgICAgZWRpdG9yP1xuICAgICAgKGxldFxuICAgICAgIFt0ZXh0XG4gICAgICAgICguLXRleHRDb250ZW50IGNvbnRlbnQpXG4gICAgICAgIHN0YXJ0XG4gICAgICAgIChjb25zb2xlL2dldC1jb25zb2xlLXN0YXJ0ICpjb25zb2xlLWhpc3RvcnkpXG4gICAgICAgIHByZS10ZXh0XG4gICAgICAgIChzdWJzIHRleHQgMCBzdGFydClcbiAgICAgICAgbGluZVxuICAgICAgICAob3IgKGNvbnNvbGUvZG93biEgKmNvbnNvbGUtaGlzdG9yeSkgXCJcIilcbiAgICAgICAgc3RhdGVcbiAgICAgICAgezpjdXJzb3ItcG9zaXRpb24gW3N0YXJ0IHN0YXJ0XSxcbiAgICAgICAgIDp0ZXh0IChzdHIgcHJlLXRleHQgbGluZSBcXG5ld2xpbmUpfV1cbiAgICAgICAoLT4+XG4gICAgICAgIHN0YXRlXG4gICAgICAgICh1cGRhdGUtZWRpdC1oaXN0b3J5ISAqZWRpdC1oaXN0b3J5KVxuICAgICAgICAocmVmcmVzaCEgdGhpcykpKSkpKVxuICAgKHRhYiEgW3RoaXNdICh3aGVuIGVkaXRvcj8gKHJlc2V0ISAqYWxsb3ctdGFiPyB0cnVlKSkpXG4gICAocmVmcmVzaCFcbiAgICBbdGhpcyBzdGF0ZV1cbiAgICAobGV0XG4gICAgIFtzdGF0ZVxuICAgICAgKGNvbmRcbiAgICAgICAoOnNlbGVjdGlvbi1jaGFuZ2U/IHN0YXRlKVxuICAgICAgIHN0YXRlXG4gICAgICAgZWRpdG9yP1xuICAgICAgIChyZWZyZXNoLWNvbnRlbnQhIGNvbnRlbnQgc3RhdGUgY2xqPylcbiAgICAgICA6ZWxzZVxuICAgICAgIChyZWZyZXNoLWNvbnNvbGUtY29udGVudCFcbiAgICAgICAgY29udGVudFxuICAgICAgICBzdGF0ZVxuICAgICAgICAoY29uc29sZS9nZXQtY29uc29sZS1zdGFydCAqY29uc29sZS1oaXN0b3J5KVxuICAgICAgICBjbGo/KSldXG4gICAgICh3aGVuXG4gICAgICAob3IgZm9jdXM/IChub3QgQCpmaXJzdC1yZWZyZXNoPykpXG4gICAgICAocmVmcmVzaC1jdXJzb3ItcG9zaXRpb24hIGNvbnRlbnQgc3RhdGUpKVxuICAgICAod2hlbiBjbGo/IChyZWZyZXNoLWVycm9ycy1hbmQtZGVsaW1pdGVycyEgY29udGVudCBldmVudHMtY2hhbikpXG4gICAgICh3aGVuXG4gICAgICBlZGl0b3I/XG4gICAgICAoc29tZS0+XG4gICAgICAgKC5xdWVyeVNlbGVjdG9yIHBzIFwiLm51bWJlcnNcIilcbiAgICAgICAocmVmcmVzaC1udW1iZXJzISAoY291bnQgKHJlLXNlcSAjXCJcXG5cIiAoOnRleHQgc3RhdGUpKSkpKVxuICAgICAgKHdoZW5cbiAgICAgICBjbGo/XG4gICAgICAgKHdoZW4tbGV0XG4gICAgICAgIFtlbGVtICgucXVlcnlTZWxlY3RvciBwcyBcIi5pbnN0YXJlcGxcIildXG4gICAgICAgICh3aGVuLW5vdFxuICAgICAgICAgKC0+IGVsZW0gLi1zdHlsZSAuLWRpc3BsYXkgKD0gXCJub25lXCIpKVxuICAgICAgICAgKHJlZnJlc2gtaW5zdGFyZXBsLXdpdGgtZGVsYXkhXG4gICAgICAgICAgZWxlbVxuICAgICAgICAgIGNvbnRlbnRcbiAgICAgICAgICBjb21waWxlci1mblxuICAgICAgICAgIGFwcGVuZC1saW1pdCkpKSkpXG4gICAgICh1cGRhdGUtaGlnaGxpZ2h0ISBjb250ZW50ICpsYXN0LWhpZ2hsaWdodC1lbGVtKSkpXG4gICAoZWRpdC1hbmQtcmVmcmVzaCFcbiAgICBbdGhpcyBzdGF0ZV1cbiAgICAoYXMtPlxuICAgICBzdGF0ZVxuICAgICAkXG4gICAgIChhZGQtbmV3bGluZSAkKVxuICAgICAoaWZcbiAgICAgIGNsaj9cbiAgICAgIChhZGQtcGFyaW5mZXJcbiAgICAgICAkXG4gICAgICAgKGNvbnNvbGUvZ2V0LWNvbnNvbGUtc3RhcnQgKmNvbnNvbGUtaGlzdG9yeSlcbiAgICAgICAoaWYgZml4LWluZGVudC1vbi1pbml0PyBAKmZpcnN0LXJlZnJlc2g/IGZhbHNlKSlcbiAgICAgICQpXG4gICAgICh1cGRhdGUtZWRpdC1oaXN0b3J5ISAqZWRpdC1oaXN0b3J5ICQpXG4gICAgIChyZWZyZXNoISB0aGlzICQpKSlcbiAgIChpbml0aWFsaXplIVxuICAgIFt0aGlzXVxuICAgICh3aGVuXG4gICAgIGVkaXRvcj9cbiAgICAgKC0+PiAoaW5pdC1zdGF0ZSBjb250ZW50IGZhbHNlIGZhbHNlKSAoZWRpdC1hbmQtcmVmcmVzaCEgdGhpcykpKVxuICAgIChyZXNldCEgKmZpcnN0LXJlZnJlc2g/IGZhbHNlKSlcbiAgIChyZWZyZXNoLWFmdGVyLWtleS1ldmVudCFcbiAgICBbdGhpcyBldmVudF1cbiAgICAobGV0XG4gICAgIFt0YWI/XG4gICAgICAoa2V5LW5hbWU/IGV2ZW50IDp0YWIpXG4gICAgICBzdGF0ZVxuICAgICAgKGluaXQtc3RhdGUgY29udGVudCBlZGl0b3I/IHRhYj8pXVxuICAgICAod2hlbi1ub3RcbiAgICAgIChhbmQgdGFiPyAobm90IEAqYWxsb3ctdGFiPykpXG4gICAgICAoZWRpdC1hbmQtcmVmcmVzaCFcbiAgICAgICB0aGlzXG4gICAgICAgKGNhc2VcbiAgICAgICAgKGtleS1jb2RlIGV2ZW50KVxuICAgICAgICAxM1xuICAgICAgICAoYXNzb2Mgc3RhdGUgOmluZGVudC10eXBlIDpyZXR1cm4pXG4gICAgICAgIDlcbiAgICAgICAgKGFzc29jXG4gICAgICAgICBzdGF0ZVxuICAgICAgICAgOmluZGVudC10eXBlXG4gICAgICAgICAoaWYgKC4tc2hpZnRLZXkgZXZlbnQpIDpiYWNrIDpmb3J3YXJkKSlcbiAgICAgICAgKGFzc29jIHN0YXRlIDppbmRlbnQtdHlwZSA6bm9ybWFsKSkpKVxuICAgICAod2hlbiB0YWI/IChyZXNldCEgKmFsbG93LXRhYj8gZmFsc2UpKSkpXG4gICAocmVmcmVzaC1hZnRlci1jdXQtcGFzdGUhXG4gICAgW3RoaXNdXG4gICAgKGVkaXQtYW5kLXJlZnJlc2ghXG4gICAgIHRoaXNcbiAgICAgKGFzc29jIChpbml0LXN0YXRlIGNvbnRlbnQgZmFsc2UgZmFsc2UpIDppbmRlbnQtdHlwZSA6bm9ybWFsKSkpXG4gICAoZXZhbCFcbiAgICBbdGhpcyBmb3JtIGNhbGxiYWNrXVxuICAgIChjb21waWxlci1mblxuICAgICBbZm9ybV1cbiAgICAgKGZuKiBbcDFfXzQ1MDQzI10gKGNhbGxiYWNrIChmaXJzdCBwMV9fNDUwNDMjKSkpKSkpKSlcbiJ9IHs6c3ltIGtleS1jb2RlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2V2ZW50XSl9LCA6c291cmNlICIoZGVmblxuIGtleS1jb2RlXG4gW2V2ZW50XVxuIChsZXQgW2NvZGUgKC4ta2V5Q29kZSBldmVudCldIChpZiAocG9zPyBjb2RlKSBjb2RlICguLXdoaWNoIGV2ZW50KSkpKVxuIn0gezpzeW0gcmVkbyEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGhpc10pfSwgOnByb3RvY29sIEVkaXRvcn0gezpzeW0gdGFiISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0aGlzXSl9LCA6cHJvdG9jb2wgRWRpdG9yfSB7OnN5bSB0cmFuc2llbnQtbWFwPywgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiB0cmFuc2llbnQtbWFwP1xuIChmbipcbiAgW3AxX180NTAzNSNdXG4gIChvclxuICAgKGluc3RhbmNlPyBjbGpzLmNvcmUvVHJhbnNpZW50QXJyYXlNYXAgcDFfXzQ1MDM1IylcbiAgIChpbnN0YW5jZT8gY2xqcy5jb3JlL1RyYW5zaWVudEhhc2hNYXAgcDFfXzQ1MDM1IykpKSlcbiJ9IHs6c3ltIHJlZnJlc2gtY29udGVudC1lbGVtZW50ISwgOm1ldGEgezpkb2MgIlJlcGxhY2VzIGEgc2luZ2xlIG5vZGUgaW4gdGhlIGNvbnRlbnQsIGFuZCBzaWJsaW5ncyBpZiBuZWNlc3NhcnkuIiwgOmFyZ2xpc3RzIChbezprZXlzIFtlbGVtZW50IHRleHRdLCA6YXMgY3JvcHBlZC1zdGF0ZX1dKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVmcmVzaC1jb250ZW50LWVsZW1lbnQhXG4gXCJSZXBsYWNlcyBhIHNpbmdsZSBub2RlIGluIHRoZSBjb250ZW50LCBhbmQgc2libGluZ3MgaWYgbmVjZXNzYXJ5LlwiXG4gW3s6a2V5cyBbZWxlbWVudCB0ZXh0XSwgOmFzIGNyb3BwZWQtc3RhdGV9XVxuIChsZXRcbiAgW3BhcmVudFxuICAgKC4tcGFyZW50RWxlbWVudCBlbGVtZW50KVxuICAgbGFzdC1lbGVtXG4gICAoLi1sYXN0Q2hpbGQgcGFyZW50KVxuICAgbGFzdC1lcnJvclxuICAgKGxvb3BcbiAgICBbY3VycmVudC1lbGVtIGxhc3QtZWxlbV1cbiAgICAoY29uZFxuICAgICAoZG9tL2Vycm9yLW5vZGU/IGN1cnJlbnQtZWxlbSlcbiAgICAgY3VycmVudC1lbGVtXG4gICAgIChvciAobmlsPyBjdXJyZW50LWVsZW0pICg9IGVsZW1lbnQgY3VycmVudC1lbGVtKSlcbiAgICAgbmlsXG4gICAgIDplbHNlXG4gICAgIChyZWN1ciAoLi1wcmV2aW91c1NpYmxpbmcgY3VycmVudC1lbGVtKSkpKVxuICAgbGFzdC1lbGVtLXRvLXJlZnJlc2hcbiAgICh3aGVuXG4gICAgbGFzdC1lcnJvclxuICAgIChsb29wXG4gICAgIFtjdXJyZW50LWVsZW0gbGFzdC1lcnJvcl1cbiAgICAgKGlmLWxldFxuICAgICAgW3NpYmxpbmcgKC4tbmV4dFNpYmxpbmcgY3VycmVudC1lbGVtKV1cbiAgICAgIChpZiAoZG9tL2NvbGwtbm9kZT8gc2libGluZykgY3VycmVudC1lbGVtIChyZWN1ciBzaWJsaW5nKSlcbiAgICAgIGN1cnJlbnQtZWxlbSkpKVxuICAgb2xkLWVsZW1zXG4gICAobG9vcFxuICAgIFtlbGVtcyBbZWxlbWVudF0gY3VycmVudC1lbGVtIGVsZW1lbnRdXG4gICAgKGNvbmRcbiAgICAgKD0gbGFzdC1lbGVtLXRvLXJlZnJlc2ggY3VycmVudC1lbGVtKVxuICAgICBlbGVtc1xuICAgICAob3IgKHNvbWU/IGxhc3QtZWxlbS10by1yZWZyZXNoKSAoZG9tL3RleHQtbm9kZT8gY3VycmVudC1lbGVtKSlcbiAgICAgKGlmLWxldFxuICAgICAgW3NpYmxpbmcgKC4tbmV4dFNpYmxpbmcgY3VycmVudC1lbGVtKV1cbiAgICAgIChyZWN1ciAoY29uaiBlbGVtcyBzaWJsaW5nKSBzaWJsaW5nKVxuICAgICAgZWxlbXMpXG4gICAgIDplbHNlXG4gICAgIGVsZW1zKSlcbiAgIF9cbiAgIChzZXQhICguLXRleHRDb250ZW50IGVsZW1lbnQpIHRleHQpXG4gICB0ZXh0XG4gICAoam9pbiAobWFwIChmbiogW3AxX180NTA0MSNdICguLXRleHRDb250ZW50IHAxX180NTA0MSMpKSBvbGQtZWxlbXMpKVxuICAgdGVtcC1lbGVtXG4gICAoLmNyZWF0ZUVsZW1lbnQganMvZG9jdW1lbnQgXCJzcGFuXCIpXG4gICBfXG4gICAoc2V0ISAoLi1pbm5lckhUTUwgdGVtcC1lbGVtKSAoaHMvY29kZS0+aHRtbCB0ZXh0KSlcbiAgIG5ldy1lbGVtc1xuICAgKGRvYWxsXG4gICAgKGZvclxuICAgICBbaSAocmFuZ2UgKC0+IHRlbXAtZWxlbSAuLWNoaWxkTm9kZXMgLi1sZW5ndGgpKV1cbiAgICAgKC0+IHRlbXAtZWxlbSAuLWNoaWxkTm9kZXMgKC5pdGVtIGkpKSkpXVxuICAoZG9zZXEgW25ldy1lbGVtIG5ldy1lbGVtc10gKC5pbnNlcnRCZWZvcmUgcGFyZW50IG5ldy1lbGVtIGVsZW1lbnQpKVxuICAoZG9zZXEgW29sZC1lbGVtIG9sZC1lbGVtc10gKC5yZW1vdmVDaGlsZCBwYXJlbnQgb2xkLWVsZW0pKVxuICAoYXNzb2MgY3JvcHBlZC1zdGF0ZSA6ZWxlbWVudCAoZmlyc3QgbmV3LWVsZW1zKSkpKVxuIn0gezpzeW0gZWxlbT8sIDptZXRhIHt9LCA6c291cmNlICIoZGVmIGVsZW0/IChmbiogW3AxX180NTAzNiNdIChpbnN0YW5jZT8ganMvRWxlbWVudCBwMV9fNDUwMzYjKSkpXG4ifSB7OnN5bSBlbnRlciEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGhpc10pfSwgOnByb3RvY29sIEVkaXRvcn0gezpzeW0gYXBwZW5kLXRleHQhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RoaXMgdGV4dF0pfSwgOnByb3RvY29sIEVkaXRvcn0gezpzeW0gbGluZS1udW1iZXJzLCA6bWV0YSB7OmRvYyAiQWRkcyBsaW5lIG51bWJlcnMgdG8gdGhlIG51bWJlcnMuIiwgOmFyZ2xpc3RzIChbbGluZS1jb3VudF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBsaW5lLW51bWJlcnNcbiBcIkFkZHMgbGluZSBudW1iZXJzIHRvIHRoZSBudW1iZXJzLlwiXG4gW2xpbmUtY291bnRdXG4gKGpvaW4gKGZvciBbaSAocmFuZ2UgbGluZS1jb3VudCldIChzdHIgXCI8ZGl2PlwiIChpbmMgaSkgXCI8L2Rpdj5cIikpKSlcbiJ9IHs6c3ltIHVwZGF0ZS1oaWdobGlnaHQhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2NvbnRlbnQgKmxhc3QtZWxlbV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB1cGRhdGUtaGlnaGxpZ2h0IVxuIFtjb250ZW50ICpsYXN0LWVsZW1dXG4gKHdoZW4tbGV0XG4gIFtlbGVtIEAqbGFzdC1lbGVtXVxuICAoc2V0ISAoLi1iYWNrZ3JvdW5kQ29sb3IgKC4tc3R5bGUgZWxlbSkpIG5pbClcbiAgKHJlc2V0ISAqbGFzdC1lbGVtIG5pbCkpXG4gKHdoZW4tbGV0XG4gIFtlbGVtIChkb20vZ2V0LWZvY3VzZWQtZm9ybSldXG4gICh3aGVuLWxldFxuICAgW2NvbG9yXG4gICAgKC5nZXRQcm9wZXJ0eVZhbHVlXG4gICAgICguZ2V0Q29tcHV0ZWRTdHlsZSBqcy93aW5kb3cgKC4tZmlyc3RDaGlsZCBlbGVtKSlcbiAgICAgXCJjb2xvclwiKV1cbiAgIChsZXRcbiAgICBbbmV3LWNvbG9yICgtPiBjb2xvciAocmVwbGFjZSAjXCJyZ2JcXChcIiBcIlwiKSAocmVwbGFjZSAjXCJcXClcIiBcIlwiKSldXG4gICAgKHNldCFcbiAgICAgKC4tYmFja2dyb3VuZENvbG9yICguLXN0eWxlIGVsZW0pKVxuICAgICAoc3RyIFwicmdiYShcIiBuZXctY29sb3IgXCIsIDAuMSlcIikpXG4gICAgKHJlc2V0ISAqbGFzdC1lbGVtIGVsZW0pKSkpKVxuIn0gezpzeW0gaW5pdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwcyBvcHRzXSl9LCA6c291cmNlICIoZGVmblxuIGluaXRcbiBbcHMgb3B0c11cbiAoLmluaXQganMvcmFuZ3kpXG4gKGxldFxuICBbb3B0c1xuICAgKGpzLT5jbGogb3B0cyA6a2V5d29yZGl6ZS1rZXlzIHRydWUpXG4gICBjb250ZW50XG4gICAoLnF1ZXJ5U2VsZWN0b3IgcHMgXCIuY29udGVudFwiKVxuICAgZXZlbnRzLWNoYW5cbiAgIChjaGFuKVxuICAgZWRpdG9yXG4gICAoY3JlYXRlLWVkaXRvciBwcyBjb250ZW50IGV2ZW50cy1jaGFuIG9wdHMpXVxuICAoc2V0ISAoLi1zcGVsbGNoZWNrIHBzKSBmYWxzZSlcbiAgKHdoZW4tbm90XG4gICBjb250ZW50XG4gICAodGhyb3cgKGpzL0Vycm9yLiBcIkNhbid0IGZpbmQgYSBkaXYgd2l0aCBjbGFzcyAnY29udGVudCdcIikpKVxuICAoaW5pdGlhbGl6ZSEgZWRpdG9yKVxuICAoYWRkLWV2ZW50LWxpc3RlbmVycyEgY29udGVudCBldmVudHMtY2hhbiBvcHRzKVxuICAoZ29cbiAgICh3aGlsZVxuICAgIHRydWVcbiAgICAobGV0XG4gICAgIFtldmVudCAoPCEgZXZlbnRzLWNoYW4pXVxuICAgICAod2hlbi1ub3RcbiAgICAgIChzb21lLT5cbiAgICAgICBvcHRzXG4gICAgICAgOmJlZm9yZS1jaGFuZ2UtY2FsbGJhY2tcbiAgICAgICAoKGZuKiBbcDFfXzQ1MDQ4I10gKHAxX180NTA0OCMgZXZlbnQpKSkpXG4gICAgICAoY2FzZVxuICAgICAgICguLXR5cGUgZXZlbnQpXG4gICAgICAgXCJrZXlkb3duXCJcbiAgICAgICAoY29uZFxuICAgICAgICAoYW5kXG4gICAgICAgICAoa2V5LW5hbWU/IGV2ZW50IDp1bmRvLW9yLXJlZG8pXG4gICAgICAgICAoLT4gb3B0cyA6ZGlzYWJsZS11bmRvLXJlZG8/IG5vdCkpXG4gICAgICAgIChpZiAoLi1zaGlmdEtleSBldmVudCkgKHJlZG8hIGVkaXRvcikgKHVuZG8hIGVkaXRvcikpXG4gICAgICAgIChrZXktbmFtZT8gZXZlbnQgOmVudGVyKVxuICAgICAgICAoZW50ZXIhIGVkaXRvcilcbiAgICAgICAgKGtleS1uYW1lPyBldmVudCA6dXAtYXJyb3cpXG4gICAgICAgICh1cCEgZWRpdG9yICguLWFsdEtleSBldmVudCkpXG4gICAgICAgIChrZXktbmFtZT8gZXZlbnQgOmRvd24tYXJyb3cpXG4gICAgICAgIChkb3duISBlZGl0b3IgKC4tYWx0S2V5IGV2ZW50KSlcbiAgICAgICAgKGtleS1uYW1lPyBldmVudCA6dGFiKVxuICAgICAgICAodGFiISBlZGl0b3IpKVxuICAgICAgIFwia2V5dXBcIlxuICAgICAgIChjb25kXG4gICAgICAgIChrZXktbmFtZT8gZXZlbnQgOmFycm93cylcbiAgICAgICAgKHVwZGF0ZS1jdXJzb3ItcG9zaXRpb24hXG4gICAgICAgICBlZGl0b3JcbiAgICAgICAgIChkb20vZ2V0LWN1cnNvci1wb3NpdGlvbiBjb250ZW50IGZhbHNlKSlcbiAgICAgICAgKGtleS1uYW1lPyBldmVudCA6Z2VuZXJhbClcbiAgICAgICAgKHJlZnJlc2gtYWZ0ZXIta2V5LWV2ZW50ISBlZGl0b3IgZXZlbnQpKVxuICAgICAgIFwiY3V0XCJcbiAgICAgICAocmVmcmVzaC1hZnRlci1jdXQtcGFzdGUhIGVkaXRvcilcbiAgICAgICBcInBhc3RlXCJcbiAgICAgICAocmVmcmVzaC1hZnRlci1jdXQtcGFzdGUhIGVkaXRvcilcbiAgICAgICBcIm1vdXNldXBcIlxuICAgICAgICh1cGRhdGUtY3Vyc29yLXBvc2l0aW9uIVxuICAgICAgICBlZGl0b3JcbiAgICAgICAgKGRvbS9nZXQtY3Vyc29yLXBvc2l0aW9uXG4gICAgICAgICBjb250ZW50XG4gICAgICAgICAoc29tZT8gKDpjb25zb2xlLWNhbGxiYWNrIG9wdHMpKSkpXG4gICAgICAgXCJtb3VzZWVudGVyXCJcbiAgICAgICAoc2hvdy1lcnJvci1tZXNzYWdlISBwcyBldmVudClcbiAgICAgICBcIm1vdXNlbGVhdmVcIlxuICAgICAgIChoaWRlLWVycm9yLW1lc3NhZ2VzISBwcylcbiAgICAgICBuaWwpXG4gICAgICAoc29tZS0+XG4gICAgICAgb3B0c1xuICAgICAgIDpjaGFuZ2UtY2FsbGJhY2tcbiAgICAgICAoKGZuKiBbcDFfXzQ1MDQ5I10gKHAxX180NTA0OSMgZXZlbnQpKSkpKSkpKVxuICBlZGl0b3IpKVxuIn0gezpzeW0gY2FuLXVuZG8/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RoaXNdKX0sIDpwcm90b2NvbCBFZGl0b3J9IHs6c3ltIHJlZnJlc2gtY29udGVudCEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbY29udGVudCBzdGF0ZSBjbGo/XSl9LCA6c291cmNlICIoZGVmblxuIHJlZnJlc2gtY29udGVudCFcbiBbY29udGVudCBzdGF0ZSBjbGo/XVxuIChpZi1ub3RcbiAgY2xqP1xuICAoZG9cbiAgIChzZXQhICguLWlubmVySFRNTCBjb250ZW50KSAoaHMvZXNjYXBlLWh0bWwtc3RyICg6dGV4dCBzdGF0ZSkpKVxuICAgc3RhdGUpXG4gIChpZi1sZXRcbiAgIFtjcm9wIChzb21lLT4gc3RhdGUgOmNyb3BwZWQtc3RhdGUgcmVmcmVzaC1jb250ZW50LWVsZW1lbnQhKV1cbiAgIChpZlxuICAgIChub3Q9ICg6dGV4dCBzdGF0ZSkgKC4tdGV4dENvbnRlbnQgY29udGVudCkpXG4gICAgKHJlZnJlc2gtY29udGVudCEgY29udGVudCAoZGlzc29jIHN0YXRlIDpjcm9wcGVkLXN0YXRlKSBjbGo/KVxuICAgIChhc3NvYyBzdGF0ZSA6Y3JvcHBlZC1zdGF0ZSBjcm9wKSlcbiAgIChkb1xuICAgIChzZXQhICguLWlubmVySFRNTCBjb250ZW50KSAoaHMvY29kZS0+aHRtbCAoOnRleHQgc3RhdGUpKSlcbiAgICAoZGlzc29jIHN0YXRlIDpjcm9wcGVkLXN0YXRlKSkpKSlcbiJ9IHs6c3ltIHJlZG8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZWRpdG9yXSl9LCA6c291cmNlICIoZGVmbiByZWRvIFtlZGl0b3JdIChyZWRvISBlZGl0b3IpKVxuIn0gezpzeW0gZGVib3VuY2UtZnVuY3Rpb24sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZiBtaWxsaXNdKX0sIDpzb3VyY2UgIihkZWZuIGRlYm91bmNlLWZ1bmN0aW9uIFtmIG1pbGxpc10gKGRlYm91bmNlIGYgbWlsbGlzKSlcbiJ9IHs6c3ltIHJlZnJlc2gtaW5zdGFyZXBsISwgOm1ldGEgezpkb2MgIlJlZnJlc2hlcyB0aGUgSW5zdGFSRVBMLiIsIDphcmdsaXN0cyAoW2luc3RhcmVwbCBjb250ZW50IGNvbXBpbGVyLWZuIGxpbWl0XSl9LCA6c291cmNlICIoZGVmblxuIHJlZnJlc2gtaW5zdGFyZXBsIVxuIFwiUmVmcmVzaGVzIHRoZSBJbnN0YVJFUEwuXCJcbiBbaW5zdGFyZXBsIGNvbnRlbnQgY29tcGlsZXItZm4gbGltaXRdXG4gKGxldFxuICBbZWxlbXNcbiAgIChpci9nZXQtY29sbGVjdGlvbnMgY29udGVudClcbiAgIGxvY2F0aW9uc1xuICAgKGlyL2VsZW1zLT5sb2NhdGlvbnMgZWxlbXMgKC4tb2Zmc2V0VG9wIGluc3RhcmVwbCkpXG4gICBmb3Jtc1xuICAgKC0+PlxuICAgIGVsZW1zXG4gICAgKG1hcCBpci9jb2xsZWN0aW9uLT5jb250ZW50KVxuICAgIChtYXAgKGZuKiBbcDFfXzQ1MDM4I10gKHJlcGxhY2UgcDFfXzQ1MDM4IyBcXMKgIFwiIFwiKSkpKV1cbiAgKGNvbXBpbGVyLWZuXG4gICBmb3Jtc1xuICAgKGZuXG4gICAgW3Jlc3VsdHNdXG4gICAgKHdoZW5cbiAgICAgKC4tcGFyZW50RWxlbWVudCBpbnN0YXJlcGwpXG4gICAgIChzZXQhXG4gICAgICAoLi1pbm5lckhUTUwgaW5zdGFyZXBsKVxuICAgICAgKGlyL3Jlc3VsdHMtPmh0bWwgcmVzdWx0cyBsb2NhdGlvbnMgbGltaXQpKSkpKSkpXG4ifSB7OnN5bSBlZGl0LWFuZC1yZWZyZXNoISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0aGlzIHN0YXRlXSl9LCA6cHJvdG9jb2wgRWRpdG9yfSB7OnN5bSByYWluYm93LWNvdW50LCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiByYWluYm93LWNvdW50IDUpXG4ifSB7OnN5bSB1cGRhdGUtY3Vyc29yLXBvc2l0aW9uISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0aGlzIHBvc2l0aW9uXSl9LCA6cHJvdG9jb2wgRWRpdG9yfSB7OnN5bSBpbml0LXN0YXRlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgZWRpdG9yJ3Mgc3RhdGUuIElmIGZ1bGwtc2VsZWN0aW9uPyBpcyB0cnVlLCBpdCB3aWxsIHRyeSB0byBzYXZlXG50aGUgZW50aXJlIHNlbGVjdGlvbiByYXRoZXIgdGhhbiBqdXN0IHRoZSBjdXJzb3IgcG9zaXRpb24uIiwgOmFyZ2xpc3RzIChbY29udGVudCBjcm9wPyBmdWxsLXNlbGVjdGlvbj9dKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5pdC1zdGF0ZVxuIFwiUmV0dXJucyB0aGUgZWRpdG9yJ3Mgc3RhdGUuIElmIGZ1bGwtc2VsZWN0aW9uPyBpcyB0cnVlLCBpdCB3aWxsIHRyeSB0byBzYXZlXFxudGhlIGVudGlyZSBzZWxlY3Rpb24gcmF0aGVyIHRoYW4ganVzdCB0aGUgY3Vyc29yIHBvc2l0aW9uLlwiXG4gW2NvbnRlbnQgY3JvcD8gZnVsbC1zZWxlY3Rpb24/XVxuIChsZXRcbiAgW3NlbGVjdGlvblxuICAgKC5nZXRTZWxlY3Rpb24ganMvcmFuZ3kpXG4gICBhbmNob3JcbiAgICguLWFuY2hvck5vZGUgc2VsZWN0aW9uKVxuICAgZm9jdXNcbiAgICguLWZvY3VzTm9kZSBzZWxlY3Rpb24pXG4gICBwYXJlbnRcbiAgICh3aGVuIChhbmQgYW5jaG9yIGZvY3VzKSAoZG9tL2NvbW1vbi1hbmNlc3RvciBhbmNob3IgZm9jdXMpKVxuICAgc3RhdGVcbiAgIHs6Y3Vyc29yLXBvc2l0aW9uXG4gICAgKC0+IGNvbnRlbnQgKGRvbS9nZXQtc2VsZWN0aW9uIGZ1bGwtc2VsZWN0aW9uPykgOmN1cnNvci1wb3NpdGlvbiksXG4gICAgOnRleHQgKC4tdGV4dENvbnRlbnQgY29udGVudCl9XVxuICAoaWYtbGV0XG4gICBbY3JvcHBlZC1zZWxlY3Rpb24gKHNvbWUtPiBwYXJlbnQgKGRvbS9nZXQtc2VsZWN0aW9uIGZhbHNlKSldXG4gICAoaWZcbiAgICBjcm9wP1xuICAgIChhc3NvY1xuICAgICBzdGF0ZVxuICAgICA6Y3JvcHBlZC1zdGF0ZVxuICAgICAoYXNzb2MgY3JvcHBlZC1zZWxlY3Rpb24gOnRleHQgKC4tdGV4dENvbnRlbnQgcGFyZW50KSkpXG4gICAgc3RhdGUpXG4gICBzdGF0ZSkpKVxuIn0gezpzeW0gZXZhbCEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGhpcyBmb3JtIGNhbGxiYWNrXSl9LCA6cHJvdG9jb2wgRWRpdG9yfSB7OnN5bSBhZGQtcGFyaW5mZXItYWZ0ZXItY29uc29sZS1zdGFydCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzdGF0ZSBjb25zb2xlLXN0YXJ0LW51bV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhZGQtcGFyaW5mZXItYWZ0ZXItY29uc29sZS1zdGFydFxuIFtzdGF0ZSBjb25zb2xlLXN0YXJ0LW51bV1cbiAobGV0XG4gIFtwcmUtdGV4dFxuICAgKHN1YnMgKDp0ZXh0IHN0YXRlKSAwIGNvbnNvbGUtc3RhcnQtbnVtKVxuICAgcG9zdC10ZXh0XG4gICAoc3VicyAoOnRleHQgc3RhdGUpIGNvbnNvbGUtc3RhcnQtbnVtKVxuICAgY2xlYXJlZC10ZXh0XG4gICAoc3RyIChyZXBsYWNlIHByZS10ZXh0ICNcIlteXFxyXlxcbl1cIiBcIiBcIikgcG9zdC10ZXh0KVxuICAgdGVtcC1zdGF0ZVxuICAgKGFzc29jIHN0YXRlIDp0ZXh0IGNsZWFyZWQtdGV4dClcbiAgIHRlbXAtc3RhdGVcbiAgIChjcC9hZGQtcGFyaW5mZXIgOmJvdGggdGVtcC1zdGF0ZSlcbiAgIG5ldy10ZXh0XG4gICAoc3RyIHByZS10ZXh0IChzdWJzICg6dGV4dCB0ZW1wLXN0YXRlKSBjb25zb2xlLXN0YXJ0LW51bSkpXVxuICAoYXNzb2Mgc3RhdGUgOnRleHQgbmV3LXRleHQpKSlcbiJ9IHs6c3ltIHJlZnJlc2gtbnVtYmVycyEsIDptZXRhIHs6ZG9jICJSZWZyZXNoZXMgdGhlIGxpbmUgbnVtYmVycy4iLCA6YXJnbGlzdHMgKFtudW1iZXJzIGxpbmUtY291bnRdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVmcmVzaC1udW1iZXJzIVxuIFwiUmVmcmVzaGVzIHRoZSBsaW5lIG51bWJlcnMuXCJcbiBbbnVtYmVycyBsaW5lLWNvdW50XVxuIChzZXQhICguLWlubmVySFRNTCBudW1iZXJzKSAobGluZS1udW1iZXJzIGxpbmUtY291bnQpKSlcbiJ9IHs6c3ltIHJlZnJlc2gtYWZ0ZXItY3V0LXBhc3RlISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0aGlzXSl9LCA6cHJvdG9jb2wgRWRpdG9yfSB7OnN5bSByZWZyZXNoLWFmdGVyLWtleS1ldmVudCEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGhpcyBldmVudF0pfSwgOnByb3RvY29sIEVkaXRvcn0gezpzeW0gYWRkLW5ld2xpbmUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbezprZXlzIFt0ZXh0XSwgOmFzIHN0YXRlfV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhZGQtbmV3bGluZVxuIFt7OmtleXMgW3RleHRdLCA6YXMgc3RhdGV9XVxuIChpZi1ub3RcbiAgKD0gXFxuZXdsaW5lIChsYXN0IHRleHQpKVxuICAoYXNzb2Mgc3RhdGUgOnRleHQgKHN0ciB0ZXh0IFxcbmV3bGluZSkpXG4gIHN0YXRlKSlcbiJ9IHs6c3ltIHVwZGF0ZS1lZGl0LWhpc3RvcnkhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoWyplZGl0LWhpc3Rvcnkgc3RhdGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gdXBkYXRlLWVkaXQtaGlzdG9yeSFcbiBbKmVkaXQtaGlzdG9yeSBzdGF0ZV1cbiAodHJ5XG4gIChtd20vdXBkYXRlLWVkaXQtaGlzdG9yeSFcbiAgICplZGl0LWhpc3RvcnlcbiAgIChpZiAoOnNlbGVjdGlvbi1jaGFuZ2U/IHN0YXRlKSBzdGF0ZSAoZGlzc29jIHN0YXRlIDpjcm9wcGVkLXN0YXRlKSkpXG4gIHN0YXRlXG4gIChjYXRjaCBqcy9FcnJvciBfIChtd20vZ2V0LWN1cnJlbnQtc3RhdGUgKmVkaXQtaGlzdG9yeSkpKSlcbiJ9IHs6c3ltIHJlZnJlc2gtY29uc29sZS1jb250ZW50ISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjb250ZW50IHN0YXRlIGNvbnNvbGUtc3RhcnQtbnVtIGNsaj9dKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVmcmVzaC1jb25zb2xlLWNvbnRlbnQhXG4gW2NvbnRlbnQgc3RhdGUgY29uc29sZS1zdGFydC1udW0gY2xqP11cbiAoc2V0IVxuICAoLi1pbm5lckhUTUwgY29udGVudClcbiAgKGlmXG4gICBjbGo/XG4gICAobGV0XG4gICAgW3ByZS10ZXh0XG4gICAgIChzdWJzICg6dGV4dCBzdGF0ZSkgMCBjb25zb2xlLXN0YXJ0LW51bSlcbiAgICAgcG9zdC10ZXh0XG4gICAgIChzdWJzICg6dGV4dCBzdGF0ZSkgY29uc29sZS1zdGFydC1udW0pXVxuICAgIChzdHIgKGhzL2VzY2FwZS1odG1sLXN0ciBwcmUtdGV4dCkgKGhzL2NvZGUtPmh0bWwgcG9zdC10ZXh0KSkpXG4gICAoaHMvZXNjYXBlLWh0bWwtc3RyICg6dGV4dCBzdGF0ZSkpKSlcbiBzdGF0ZSlcbiJ9IHs6c3ltIHJlZnJlc2gtZXJyb3JzLWFuZC1kZWxpbWl0ZXJzISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjb250ZW50IGV2ZW50cy1jaGFuXSl9LCA6c291cmNlICIoZGVmblxuIHJlZnJlc2gtZXJyb3JzLWFuZC1kZWxpbWl0ZXJzIVxuIFtjb250ZW50IGV2ZW50cy1jaGFuXVxuIChoaWRlLWVycm9yLW1lc3NhZ2VzISAoLi1wYXJlbnRFbGVtZW50IGNvbnRlbnQpKVxuIChkb3NlcVxuICBbZWxlbSAoLT4gY29udGVudCAoLnF1ZXJ5U2VsZWN0b3JBbGwgXCIuZXJyb3JcIikgYXJyYXktc2VxKV1cbiAgKGxldFxuICAgW3Nob3ctZXJyb3ItaWNvbiFcbiAgICAoZm4gW2VsZW1dIChzZXQhICguLWRpc3BsYXkgKC4tc3R5bGUgZWxlbSkpIFwiaW5saW5lLWJsb2NrXCIpKVxuICAgIHNob3ctZXJyb3ItaWNvbiFcbiAgICAoZGVib3VuY2Ugc2hvdy1lcnJvci1pY29uISAxMDAwKV1cbiAgIChzaG93LWVycm9yLWljb24hIGVsZW0pKVxuICAoZXZlbnRzL2xpc3RlblxuICAgZWxlbVxuICAgXCJtb3VzZWVudGVyXCJcbiAgIChmbiogW3AxX180NTAzOSNdIChwdXQhIGV2ZW50cy1jaGFuIHAxX180NTAzOSMpKSlcbiAgKGV2ZW50cy9saXN0ZW5cbiAgIGVsZW1cbiAgIFwibW91c2VsZWF2ZVwiXG4gICAoZm4qIFtwMV9fNDUwNDAjXSAocHV0ISBldmVudHMtY2hhbiBwMV9fNDUwNDAjKSkpKVxuIChkb3NlcVxuICBbW2VsZW0gY2xhc3MtbmFtZV0gKHJhaW5ib3ctZGVsaW1pdGVycyBjb250ZW50IC0xKV1cbiAgKC5hZGQgKC4tY2xhc3NMaXN0IGVsZW0pIGNsYXNzLW5hbWUpKSlcbiJ9IHs6c3ltIGFwcGVuZC10ZXh0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VkaXRvciB0ZXh0XSl9LCA6c291cmNlICIoZGVmbiBhcHBlbmQtdGV4dCBbZWRpdG9yIHRleHRdIChhcHBlbmQtdGV4dCEgZWRpdG9yIHRleHQpKVxuIn0gezpzeW0gcHJldmVudC1kZWZhdWx0PywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtldmVudCBvcHRzXSl9LCA6c291cmNlICIoZGVmblxuIHByZXZlbnQtZGVmYXVsdD9cbiBbZXZlbnQgb3B0c11cbiAoYm9vbGVhblxuICAob3JcbiAgIChrZXktbmFtZT8gZXZlbnQgOnVuZG8tb3ItcmVkbylcbiAgIChrZXktbmFtZT8gZXZlbnQgOnRhYilcbiAgIChrZXktbmFtZT8gZXZlbnQgOmVudGVyKVxuICAgKGFuZFxuICAgIChvciAoOmNvbnNvbGUtY2FsbGJhY2sgb3B0cykgKC4tYWx0S2V5IGV2ZW50KSlcbiAgICAob3IgKGtleS1uYW1lPyBldmVudCA6dXAtYXJyb3cpIChrZXktbmFtZT8gZXZlbnQgOmRvd24tYXJyb3cpKSkpKSlcbiJ9IHs6c3ltIGluaXRpYWxpemUhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RoaXNdKX0sIDpwcm90b2NvbCBFZGl0b3J9IHs6c3ltIGluaXQtYWxsLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoWyYgW29wdHNdXSl9LCA6c291cmNlICIoZGVmblxuIGluaXQtYWxsXG4gWyYgW29wdHNdXVxuIChkb3NlcVxuICBbcHMgKC0+IGpzL2RvY3VtZW50ICgucXVlcnlTZWxlY3RvckFsbCBcIi5wYXJlbi1zb3VwXCIpIGFycmF5LXNlcSldXG4gIChpbml0IHBzIChvciBvcHRzICNqcyB7fSkpKSlcbiJ9IHs6c3ltIGFkZC1wYXJpbmZlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzdGF0ZSBjb25zb2xlLXN0YXJ0LW51bSBmaXgtaW5kZW50P10pfSwgOnNvdXJjZSAiKGRlZm5cbiBhZGQtcGFyaW5mZXJcbiBbc3RhdGUgY29uc29sZS1zdGFydC1udW0gZml4LWluZGVudD9dXG4gKGxldFxuICBbY3JvcHBlZC1zdGF0ZVxuICAgKDpjcm9wcGVkLXN0YXRlIHN0YXRlKVxuICAgc3RhdGVcbiAgIChjb25kLT5cbiAgICBzdGF0ZVxuICAgIGZpeC1pbmRlbnQ/XG4gICAgKGFzc29jIDppbmRlbnQtdHlwZSA6bm9ybWFsIDpjdXJzb3ItcG9zaXRpb24gWzAgMF0pKVxuICAgaW5kZW50LXR5cGVcbiAgICg6aW5kZW50LXR5cGUgc3RhdGUpXG4gICBzdGF0ZVxuICAgKGNvbmRcbiAgICAocG9zPyBjb25zb2xlLXN0YXJ0LW51bSlcbiAgICAoYWRkLXBhcmluZmVyLWFmdGVyLWNvbnNvbGUtc3RhcnQgc3RhdGUgY29uc29sZS1zdGFydC1udW0pXG4gICAgaW5kZW50LXR5cGVcbiAgICAoY3AvYWRkLWluZGVudCBzdGF0ZSlcbiAgICA6ZWxzZVxuICAgIChjcC9hZGQtcGFyaW5mZXIgOnBhcmVuIHN0YXRlKSldXG4gIChpZlxuICAgKGFuZCBjcm9wcGVkLXN0YXRlIGluZGVudC10eXBlKVxuICAgKGFzc29jXG4gICAgc3RhdGVcbiAgICA6Y3JvcHBlZC1zdGF0ZVxuICAgIChtZXJnZVxuICAgICBjcm9wcGVkLXN0YXRlXG4gICAgIChjcC9hZGQtaW5kZW50IChhc3NvYyBjcm9wcGVkLXN0YXRlIDppbmRlbnQtdHlwZSBpbmRlbnQtdHlwZSkpKSlcbiAgIHN0YXRlKSkpXG4ifSB7OnN5bSB1bmRvLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VkaXRvcl0pfSwgOnNvdXJjZSAiKGRlZm4gdW5kbyBbZWRpdG9yXSAodW5kbyEgZWRpdG9yKSlcbiJ9IHs6c3ltIG9iaj8sIDptZXRhIHt9LCA6c291cmNlICIoZGVmIG9iaj8gKGZuKiBbcDFfXzQ1MDM3I10gKGluc3RhbmNlPyBqcy9PYmplY3QgcDFfXzQ1MDM3IykpKVxuIn0gezpzeW0gZG93biEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGhpcyBhbHQ/XSl9LCA6cHJvdG9jb2wgRWRpdG9yfSB7OnN5bSBhZGQtZXZlbnQtbGlzdGVuZXJzISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjb250ZW50IGV2ZW50cy1jaGFuIG9wdHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gYWRkLWV2ZW50LWxpc3RlbmVycyFcbiBbY29udGVudCBldmVudHMtY2hhbiBvcHRzXVxuIChkb3RvXG4gIGNvbnRlbnRcbiAgKGV2ZW50cy9yZW1vdmVBbGwpXG4gIChldmVudHMvbGlzdGVuXG4gICBcImtleWRvd25cIlxuICAgKGZuXG4gICAgW2VdXG4gICAgKHdoZW4gKHByZXZlbnQtZGVmYXVsdD8gZSBvcHRzKSAoLnByZXZlbnREZWZhdWx0IGUpKVxuICAgIChwdXQhIGV2ZW50cy1jaGFuIGUpKSlcbiAgKGV2ZW50cy9saXN0ZW5cbiAgIFwia2V5dXBcIlxuICAgKGZuKiBbcDFfXzQ1MDQ0I10gKHB1dCEgZXZlbnRzLWNoYW4gcDFfXzQ1MDQ0IykpKVxuICAoZXZlbnRzL2xpc3RlblxuICAgXCJjdXRcIlxuICAgKGZuKiBbcDFfXzQ1MDQ1I10gKHB1dCEgZXZlbnRzLWNoYW4gcDFfXzQ1MDQ1IykpKVxuICAoZXZlbnRzL2xpc3RlblxuICAgXCJwYXN0ZVwiXG4gICAoZm4qIFtwMV9fNDUwNDYjXSAocHV0ISBldmVudHMtY2hhbiBwMV9fNDUwNDYjKSkpXG4gIChldmVudHMvbGlzdGVuXG4gICBcIm1vdXNldXBcIlxuICAgKGZuKiBbcDFfXzQ1MDQ3I10gKHB1dCEgZXZlbnRzLWNoYW4gcDFfXzQ1MDQ3IykpKSkpXG4ifSB7OnN5bSByZXNldC1lZGl0LWhpc3RvcnkhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RoaXMgc3RhcnRdKX0sIDpwcm90b2NvbCBFZGl0b3J9IHs6c3ltIGhpZGUtZXJyb3ItbWVzc2FnZXMhLCA6bWV0YSB7OmRvYyAiSGlkZXMgYWxsIGVycm9yIHBvcHVwcy4iLCA6YXJnbGlzdHMgKFtwYXJlbnQtZWxlbV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBoaWRlLWVycm9yLW1lc3NhZ2VzIVxuIFwiSGlkZXMgYWxsIGVycm9yIHBvcHVwcy5cIlxuIFtwYXJlbnQtZWxlbV1cbiAoZG9zZXFcbiAgW2VsZW0gKC0+IHBhcmVudC1lbGVtICgucXVlcnlTZWxlY3RvckFsbCBcIi5lcnJvci10ZXh0XCIpIGFycmF5LXNlcSldXG4gICgucmVtb3ZlQ2hpbGQgcGFyZW50LWVsZW0gZWxlbSkpKVxuIn0gezpzeW0gRWRpdG9yLCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAoYXBwZW5kLXRleHQhIGNhbi1yZWRvPyBjYW4tdW5kbz8gZG93biEgZWRpdC1hbmQtcmVmcmVzaCEgZW50ZXIhIGV2YWwhIGluaXRpYWxpemUhIHJlZG8hIHJlZnJlc2ghIHJlZnJlc2gtYWZ0ZXItY3V0LXBhc3RlISByZWZyZXNoLWFmdGVyLWtleS1ldmVudCEgcmVzZXQtZWRpdC1oaXN0b3J5ISB0YWIhIHVuZG8hIHVwISB1cGRhdGUtY3Vyc29yLXBvc2l0aW9uISl9KSwgY2xqcy50b29scy5yZWFkZXIuaW1wbC5jb21tb25zICh7OnN5bSBtYXRjaC1udW1iZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBtYXRjaC1udW1iZXJcbiBbc11cbiAoaWZcbiAgKG1hdGNoZXM/IGludC1wYXR0ZXJuIHMpXG4gIChtYXRjaC1pbnQgcylcbiAgKGlmXG4gICAobWF0Y2hlcz8gZmxvYXQtcGF0dGVybiBzKVxuICAgKG1hdGNoLWZsb2F0IHMpXG4gICAod2hlbiAobWF0Y2hlcz8gcmF0aW8tcGF0dGVybiBzKSAobWF0Y2gtcmF0aW8gcykpKSkpXG4ifSB7OnN5bSBza2lwLWxpbmUsIDptZXRhIHs6ZG9jICJBZHZhbmNlcyB0aGUgcmVhZGVyIHRvIHRoZSBlbmQgb2YgYSBsaW5lLiBSZXR1cm5zIHRoZSByZWFkZXIiLCA6YXJnbGlzdHMgKFtyZWFkZXJdKX0sIDpzb3VyY2UgIihkZWZuXG4gc2tpcC1saW5lXG4gXCJBZHZhbmNlcyB0aGUgcmVhZGVyIHRvIHRoZSBlbmQgb2YgYSBsaW5lLiBSZXR1cm5zIHRoZSByZWFkZXJcIlxuIFtyZWFkZXJdXG4gKGxvb3AgW10gKHdoZW4tbm90IChuZXdsaW5lPyAocmVhZC1jaGFyIHJlYWRlcikpIChyZWN1cikpKVxuIHJlYWRlcilcbiJ9IHs6c3ltIGludC1wYXR0ZXJuLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIGludC1wYXR0ZXJuXG4gI1wiXihbLStdPykoPzooMCl8KFsxLTldWzAtOV0qKXwwW3hYXShbMC05QS1GYS1mXSspfDAoWzAtN10rKXwoWzEtOV1bMC05XT8pW3JSXShbMC05QS1aYS16XSspfDBbMC05XSspKE4pPyRcIilcbiJ9IHs6c3ltIHJlYWQtY29tbWVudCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgJiBfXSl9LCA6c291cmNlICIoZGVmbiByZWFkLWNvbW1lbnQgW3JkciAmIF9dIChza2lwLWxpbmUgcmRyKSlcbiJ9IHs6c3ltIHBhcnNlLXN5bWJvbCwgOm1ldGEgezpkb2MgIlBhcnNlcyBhIHN0cmluZyBpbnRvIGEgdmVjdG9yIG9mIHRoZSBuYW1lc3BhY2UgYW5kIHN5bWJvbCIsIDphcmdsaXN0cyAoW3Rva2VuXSl9LCA6c291cmNlICIoZGVmblxuIHBhcnNlLXN5bWJvbFxuIFwiUGFyc2VzIGEgc3RyaW5nIGludG8gYSB2ZWN0b3Igb2YgdGhlIG5hbWVzcGFjZSBhbmQgc3ltYm9sXCJcbiBbdG9rZW5dXG4gKHdoZW4tbm90XG4gIChvclxuICAgKGlkZW50aWNhbD8gXCJcIiB0b2tlbilcbiAgICh0cnVlPyAoLnRlc3QgI1wiOiRcIiB0b2tlbikpXG4gICAodHJ1ZT8gKC50ZXN0ICNcIl46OlwiIHRva2VuKSkpXG4gIChsZXRcbiAgIFtucy1pZHhcbiAgICAoLmluZGV4T2YgdG9rZW4gXCIvXCIpXG4gICAgbnNcbiAgICAod2hlbiAocG9zPyBucy1pZHgpIChzdWJzIHRva2VuIDAgbnMtaWR4KSldXG4gICAoaWYtbm90XG4gICAgKG5pbD8gbnMpXG4gICAgKGxldFxuICAgICBbbnMtaWR4IChpbmMgbnMtaWR4KV1cbiAgICAgKHdoZW4tbm90XG4gICAgICAoPT0gbnMtaWR4IChjb3VudCB0b2tlbikpXG4gICAgICAobGV0XG4gICAgICAgW3N5bSAoc3VicyB0b2tlbiBucy1pZHgpXVxuICAgICAgICh3aGVuXG4gICAgICAgIChhbmRcbiAgICAgICAgIChub3QgKG51bWVyaWM/IChudGggc3ltIDApKSlcbiAgICAgICAgIChub3QgKGlkZW50aWNhbD8gXCJcIiBzeW0pKVxuICAgICAgICAgKGZhbHNlPyAoLnRlc3QgI1wiOiRcIiBucykpXG4gICAgICAgICAob3IgKGlkZW50aWNhbD8gc3ltIFwiL1wiKSAoPT0gLTEgKC5pbmRleE9mIHN5bSBcIi9cIikpKSlcbiAgICAgICAgW25zIHN5bV0pKSkpXG4gICAgKHdoZW5cbiAgICAgKG9yIChpZGVudGljYWw/IHRva2VuIFwiL1wiKSAoPT0gLTEgKC5pbmRleE9mIHRva2VuIFwiL1wiKSkpXG4gICAgIFtuaWwgdG9rZW5dKSkpKSlcbiJ9IHs6c3ltIG51bWJlci1saXRlcmFsPywgOm1ldGEgezpkb2MgIkNoZWNrcyB3aGV0aGVyIHRoZSByZWFkZXIgaXMgYXQgdGhlIHN0YXJ0IG9mIGEgbnVtYmVyIGxpdGVyYWwiLCA6YXJnbGlzdHMgKFtyZWFkZXIgaW5pdGNoXSl9LCA6c291cmNlICIoZGVmblxuIG51bWJlci1saXRlcmFsP1xuIFwiQ2hlY2tzIHdoZXRoZXIgdGhlIHJlYWRlciBpcyBhdCB0aGUgc3RhcnQgb2YgYSBudW1iZXIgbGl0ZXJhbFwiXG4gW3JlYWRlciBpbml0Y2hdXG4gKG9yXG4gIChudW1lcmljPyBpbml0Y2gpXG4gIChhbmRcbiAgIChvciAoaWRlbnRpY2FsPyBcXCsgaW5pdGNoKSAoaWRlbnRpY2FsPyBcXC0gaW5pdGNoKSlcbiAgIChudW1lcmljPyAocGVlay1jaGFyIHJlYWRlcikpKSkpXG4ifSB7OnN5bSByZWFkLXBhc3QsIDptZXRhIHs6ZG9jICJSZWFkIHVudGlsIGZpcnN0IGNoYXJhY3RlciB0aGF0IGRvZXNuJ3QgbWF0Y2ggcHJlZCwgcmV0dXJuaW5nXG4gICBjaGFyLiIsIDphcmdsaXN0cyAoW3ByZWQgcmRyXSl9LCA6c291cmNlICIoZGVmblxuIHJlYWQtcGFzdFxuIFwiUmVhZCB1bnRpbCBmaXJzdCBjaGFyYWN0ZXIgdGhhdCBkb2Vzbid0IG1hdGNoIHByZWQsIHJldHVybmluZ1xcbiAgIGNoYXIuXCJcbiBbcHJlZCByZHJdXG4gKGxvb3AgW2NoIChyZWFkLWNoYXIgcmRyKV0gKGlmIChwcmVkIGNoKSAocmVjdXIgKHJlYWQtY2hhciByZHIpKSBjaCkpKVxuIn0gezpzeW0gZmxvYXQtcGF0dGVybiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgZmxvYXQtcGF0dGVybiAjXCIoWy0rXT9bMC05XSsoXFwuWzAtOV0qKT8oW2VFXVstK10/WzAtOV0rKT8pKE0pP1wiKVxuIn0gezpzeW0gbWF0Y2hlcz8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcGF0dGVybiBzXSl9LCA6c291cmNlICIoZGVmblxuIG1hdGNoZXM/XG4gW3BhdHRlcm4gc11cbiAobGV0IFtbbWF0Y2hdIChyZS1maW5kIHBhdHRlcm4gcyldIChpZGVudGljYWw/IG1hdGNoIHMpKSlcbiJ9IHs6c3ltIHRocm93aW5nLXJlYWRlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttc2ddKX0sIDpzb3VyY2UgIihkZWZuIHRocm93aW5nLXJlYWRlciBbbXNnXSAoZm4gW3JkciAmIF9dIChyZWFkZXItZXJyb3IgcmRyIG1zZykpKVxuIn0gezpzeW0gcmF0aW8tcGF0dGVybiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgcmF0aW8tcGF0dGVybiAjXCIoWy0rXT9bMC05XSspLyhbMC05XSspXCIpXG4ifSksIHBsYXktY2xqYy5pbnN0YW5jZXMgKHs6c3ltIC0+aW5zdGFuY2VkLWVudGl0eSwgOm1ldGEgezpkb2MgIlJldHVybnMgYW4gaW5zdGFuY2VkIHZlcnNpb24gb2YgdGhlIGdpdmVuIGVudGl0eS4iLCA6YXJnbGlzdHMgKFtlbnRpdHldKX0sIDpwcm90b2NvbCBJSW5zdGFuY2V9IHs6c3ltIElJbnN0YW5jZSwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKC0+aW5zdGFuY2VkLWVudGl0eSl9IHs6c3ltIGFzc29jLCA6bWV0YSB7OmRvYyAiQWRkcyBhbiBlbnRpdHkgdG8gdGhlIGluc3RhbmNlZCBlbnRpdHkgYXQgdGhlIGdpdmVuIGluZGV4LiIsIDphcmdsaXN0cyAoW2luc3RhbmNlZC1lbnRpdHkgaSBlbnRpdHldKX0sIDpwcm90b2NvbCBJSW5zdGFuY2VkfSB7OnN5bSBkaXNzb2MsIDptZXRhIHs6ZG9jICJSZW1vdmVzIGFuIGVudGl0eSBmcm9tIHRoZSBpbnN0YW5jZWQgZW50aXR5IGF0IHRoZSBnaXZlbiBpbmRleC4iLCA6YXJnbGlzdHMgKFtpbnN0YW5jZWQtZW50aXR5IGldKX0sIDpwcm90b2NvbCBJSW5zdGFuY2VkfSB7OnN5bSBJSW5zdGFuY2VkLCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAoYXNzb2MgZGlzc29jKX0pLCBjbGpzLnRvb2xzLnJlYWRlci5lZG4gKHs6c3ltIHJlYWQsIDptZXRhIHs6ZG9jICJSZWFkcyB0aGUgZmlyc3Qgb2JqZWN0IGZyb20gYW4gSVB1c2hiYWNrUmVhZGVyLlxuICAgUmV0dXJucyB0aGUgb2JqZWN0IHJlYWQuIElmIEVPRiwgdGhyb3dzIGlmIGVvZi1lcnJvcj8gaXMgdHJ1ZSBvdGhlcndpc2UgcmV0dXJucyBlb2YuXG4gICBJZiBubyByZWFkZXIgaXMgcHJvdmlkZWQsICppbiogd2lsbCBiZSB1c2VkLlxuXG4gICBSZWFkcyBkYXRhIGluIHRoZSBlZG4gZm9ybWF0IChzdWJzZXQgb2YgQ2xvanVyZSBkYXRhKTpcbiAgIGh0dHA6Ly9lZG4tZm9ybWF0Lm9yZ1xuXG4gICBjbGpzLnRvb2xzLnJlYWRlci5lZG4vcmVhZCBkb2Vzbid0IGRlcGVuZCBvbiBkeW5hbWljIFZhcnMsIGFsbCBjb25maWd1cmF0aW9uXG4gICBpcyBkb25lIGJ5IHBhc3NpbmcgYW4gb3B0IG1hcC5cblxuICAgb3B0cyBpcyBhIG1hcCB0aGF0IGNhbiBpbmNsdWRlIHRoZSBmb2xsb3dpbmcga2V5czpcbiAgIDplb2YgLSB2YWx1ZSB0byByZXR1cm4gb24gZW5kLW9mLWZpbGUuIFdoZW4gbm90IHN1cHBsaWVkLCBlb2YgdGhyb3dzIGFuIGV4Y2VwdGlvbi5cbiAgIDpyZWFkZXJzICAtIGEgbWFwIG9mIHRhZyBzeW1ib2xzIHRvIGRhdGEtcmVhZGVyIGZ1bmN0aW9ucyB0byBiZSBjb25zaWRlcmVkIGJlZm9yZSBkZWZhdWx0LWRhdGEtcmVhZGVycy5cbiAgICAgICAgICAgICAgV2hlbiBub3Qgc3VwcGxpZWQsIG9ubHkgdGhlIGRlZmF1bHQtZGF0YS1yZWFkZXJzIHdpbGwgYmUgdXNlZC5cbiAgIDpkZWZhdWx0IC0gQSBmdW5jdGlvbiBvZiB0d28gYXJncywgdGhhdCB3aWxsLCBpZiBwcmVzZW50IGFuZCBubyByZWFkZXIgaXMgZm91bmQgZm9yIGEgdGFnLFxuICAgICAgICAgICAgICBiZSBjYWxsZWQgd2l0aCB0aGUgdGFnIGFuZCB0aGUgdmFsdWUuIiwgOmFyZ2xpc3RzIFtbcmVhZGVyXSBbezprZXlzIFtlb2ZdLCA6YXMgb3B0c30gcmVhZGVyXSBbcmVhZGVyIGVvZi1lcnJvcj8gZW9mIG9wdHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gcmVhZFxuIFwiUmVhZHMgdGhlIGZpcnN0IG9iamVjdCBmcm9tIGFuIElQdXNoYmFja1JlYWRlci5cXG4gICBSZXR1cm5zIHRoZSBvYmplY3QgcmVhZC4gSWYgRU9GLCB0aHJvd3MgaWYgZW9mLWVycm9yPyBpcyB0cnVlIG90aGVyd2lzZSByZXR1cm5zIGVvZi5cXG4gICBJZiBubyByZWFkZXIgaXMgcHJvdmlkZWQsICppbiogd2lsbCBiZSB1c2VkLlxcblxcbiAgIFJlYWRzIGRhdGEgaW4gdGhlIGVkbiBmb3JtYXQgKHN1YnNldCBvZiBDbG9qdXJlIGRhdGEpOlxcbiAgIGh0dHA6Ly9lZG4tZm9ybWF0Lm9yZ1xcblxcbiAgIGNsanMudG9vbHMucmVhZGVyLmVkbi9yZWFkIGRvZXNuJ3QgZGVwZW5kIG9uIGR5bmFtaWMgVmFycywgYWxsIGNvbmZpZ3VyYXRpb25cXG4gICBpcyBkb25lIGJ5IHBhc3NpbmcgYW4gb3B0IG1hcC5cXG5cXG4gICBvcHRzIGlzIGEgbWFwIHRoYXQgY2FuIGluY2x1ZGUgdGhlIGZvbGxvd2luZyBrZXlzOlxcbiAgIDplb2YgLSB2YWx1ZSB0byByZXR1cm4gb24gZW5kLW9mLWZpbGUuIFdoZW4gbm90IHN1cHBsaWVkLCBlb2YgdGhyb3dzIGFuIGV4Y2VwdGlvbi5cXG4gICA6cmVhZGVycyAgLSBhIG1hcCBvZiB0YWcgc3ltYm9scyB0byBkYXRhLXJlYWRlciBmdW5jdGlvbnMgdG8gYmUgY29uc2lkZXJlZCBiZWZvcmUgZGVmYXVsdC1kYXRhLXJlYWRlcnMuXFxuICAgICAgICAgICAgICBXaGVuIG5vdCBzdXBwbGllZCwgb25seSB0aGUgZGVmYXVsdC1kYXRhLXJlYWRlcnMgd2lsbCBiZSB1c2VkLlxcbiAgIDpkZWZhdWx0IC0gQSBmdW5jdGlvbiBvZiB0d28gYXJncywgdGhhdCB3aWxsLCBpZiBwcmVzZW50IGFuZCBubyByZWFkZXIgaXMgZm91bmQgZm9yIGEgdGFnLFxcbiAgICAgICAgICAgICAgYmUgY2FsbGVkIHdpdGggdGhlIHRhZyBhbmQgdGhlIHZhbHVlLlwiXG4gKFtyZWFkZXJdIChyZWFkIHt9IHJlYWRlcikpXG4gKFt7OmtleXMgW2VvZl0sIDphcyBvcHRzfSByZWFkZXJdXG4gIChsZXRcbiAgIFtlb2YtZXJyb3I/IChub3QgKGNvbnRhaW5zPyBvcHRzIDplb2YpKV1cbiAgIChyZWFkIHJlYWRlciBlb2YtZXJyb3I/IGVvZiBvcHRzKSkpXG4gKFtyZWFkZXIgZW9mLWVycm9yPyBlb2Ygb3B0c11cbiAgKHRyeVxuICAgKGxvb3BcbiAgICBbXVxuICAgIChsZXRcbiAgICAgW2NoIChyZWFkLWNoYXIgcmVhZGVyKV1cbiAgICAgKGNvbmRcbiAgICAgICh3aGl0ZXNwYWNlPyBjaClcbiAgICAgIChyZWN1cilcbiAgICAgIChuaWw/IGNoKVxuICAgICAgKGlmIGVvZi1lcnJvcj8gKGVyci90aHJvdy1lb2YtZXJyb3IgcmVhZGVyIG5pbCkgZW9mKVxuICAgICAgKG51bWJlci1saXRlcmFsPyByZWFkZXIgY2gpXG4gICAgICAocmVhZC1udW1iZXIgcmVhZGVyIGNoIG9wdHMpXG4gICAgICA6ZWxzZVxuICAgICAgKGxldFxuICAgICAgIFtmIChtYWNyb3MgY2gpXVxuICAgICAgIChpZlxuICAgICAgICBmXG4gICAgICAgIChsZXRcbiAgICAgICAgIFtyZXMgKGYgcmVhZGVyIGNoIG9wdHMpXVxuICAgICAgICAgKGlmIChpZGVudGljYWw/IHJlcyByZWFkZXIpIChyZWN1cikgcmVzKSlcbiAgICAgICAgKHJlYWQtc3ltYm9sIHJlYWRlciBjaCkpKSkpKVxuICAgKGNhdGNoXG4gICAganMvRXJyb3JcbiAgICBlXG4gICAgKGlmXG4gICAgIChleC1pbmZvPyBlKVxuICAgICAobGV0XG4gICAgICBbZCAoZXgtZGF0YSBlKV1cbiAgICAgIChpZlxuICAgICAgICg9IDpyZWFkZXItZXhjZXB0aW9uICg6dHlwZSBkKSlcbiAgICAgICAodGhyb3cgZSlcbiAgICAgICAodGhyb3dcbiAgICAgICAgKGV4LWluZm9cbiAgICAgICAgICguLW1lc3NhZ2UgZSlcbiAgICAgICAgIChtZXJnZVxuICAgICAgICAgIHs6dHlwZSA6cmVhZGVyLWV4Y2VwdGlvbn1cbiAgICAgICAgICBkXG4gICAgICAgICAgKGlmXG4gICAgICAgICAgIChpbmRleGluZy1yZWFkZXI/IHJlYWRlcilcbiAgICAgICAgICAgezpsaW5lIChnZXQtbGluZS1udW1iZXIgcmVhZGVyKSxcbiAgICAgICAgICAgIDpjb2x1bW4gKGdldC1jb2x1bW4tbnVtYmVyIHJlYWRlciksXG4gICAgICAgICAgICA6ZmlsZSAoZ2V0LWZpbGUtbmFtZSByZWFkZXIpfSkpXG4gICAgICAgICBlKSkpKVxuICAgICAodGhyb3dcbiAgICAgIChleC1pbmZvXG4gICAgICAgKC4tbWVzc2FnZSBlKVxuICAgICAgIChtZXJnZVxuICAgICAgICB7OnR5cGUgOnJlYWRlci1leGNlcHRpb259XG4gICAgICAgIChpZlxuICAgICAgICAgKGluZGV4aW5nLXJlYWRlcj8gcmVhZGVyKVxuICAgICAgICAgezpsaW5lIChnZXQtbGluZS1udW1iZXIgcmVhZGVyKSxcbiAgICAgICAgICA6Y29sdW1uIChnZXQtY29sdW1uLW51bWJlciByZWFkZXIpLFxuICAgICAgICAgIDpmaWxlIChnZXQtZmlsZS1uYW1lIHJlYWRlcil9KSlcbiAgICAgICBlKSkpKSkpKVxuIn0gezpzeW0gcmVhZC1zdHJpbmcsIDptZXRhIHs6ZG9jICJSZWFkcyBvbmUgb2JqZWN0IGZyb20gdGhlIHN0cmluZyBzLlxuICAgUmV0dXJucyBuaWwgd2hlbiBzIGlzIG5pbCBvciBlbXB0eS5cblxuICAgUmVhZHMgZGF0YSBpbiB0aGUgZWRuIGZvcm1hdCAoc3Vic2V0IG9mIENsb2p1cmUgZGF0YSk6XG4gICBodHRwOi8vZWRuLWZvcm1hdC5vcmdcblxuICAgb3B0cyBpcyBhIG1hcCBhcyBwZXIgY2xqcy50b29scy5yZWFkZXIuZWRuL3JlYWQiLCA6YXJnbGlzdHMgW1tzXSBbb3B0cyBzXV19LCA6c291cmNlICIoZGVmblxuIHJlYWQtc3RyaW5nXG4gXCJSZWFkcyBvbmUgb2JqZWN0IGZyb20gdGhlIHN0cmluZyBzLlxcbiAgIFJldHVybnMgbmlsIHdoZW4gcyBpcyBuaWwgb3IgZW1wdHkuXFxuXFxuICAgUmVhZHMgZGF0YSBpbiB0aGUgZWRuIGZvcm1hdCAoc3Vic2V0IG9mIENsb2p1cmUgZGF0YSk6XFxuICAgaHR0cDovL2Vkbi1mb3JtYXQub3JnXFxuXFxuICAgb3B0cyBpcyBhIG1hcCBhcyBwZXIgY2xqcy50b29scy5yZWFkZXIuZWRuL3JlYWRcIlxuIChbc10gKHJlYWQtc3RyaW5nIHs6ZW9mIG5pbH0gcykpXG4gKFtvcHRzIHNdXG4gICh3aGVuIChhbmQgcyAobm90PSBzIFwiXCIpKSAocmVhZCBvcHRzIChzdHJpbmctcHVzaC1iYWNrLXJlYWRlciBzKSkpKSlcbiJ9KSwgY2xqcy5zb3VyY2UtbWFwLmJhc2U2NC12bHEgKHs6c3ltIGVuY29kZS12YWwsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbmNvZGUtdmFsXG4gW25dXG4gKGxldFxuICBbc2IgKFN0cmluZ0J1ZmZlci4pIHZscSAodG8tdmxxLXNpZ25lZCBuKV1cbiAgKGxvb3BcbiAgIFtkaWdpdFxuICAgIChiaXQtYW5kIHZscSB2bHEtYmFzZS1tYXNrKVxuICAgIHZscVxuICAgIChiaXQtc2hpZnQtcmlnaHQtemVyby1maWxsIHZscSB2bHEtYmFzZS1zaGlmdCldXG4gICAoaWZcbiAgICAocG9zPyB2bHEpXG4gICAgKGxldFxuICAgICBbZGlnaXQgKGJpdC1vciBkaWdpdCB2bHEtY29udGludWF0aW9uLWJpdCldXG4gICAgICguYXBwZW5kIHNiIChiYXNlNjQvZW5jb2RlIGRpZ2l0KSlcbiAgICAgKHJlY3VyXG4gICAgICAoYml0LWFuZCB2bHEgdmxxLWJhc2UtbWFzaylcbiAgICAgIChiaXQtc2hpZnQtcmlnaHQtemVyby1maWxsIHZscSB2bHEtYmFzZS1zaGlmdCkpKVxuICAgICguYXBwZW5kIHNiIChiYXNlNjQvZW5jb2RlIGRpZ2l0KSkpKVxuICAoc3RyIHNiKSkpXG4ifSB7OnN5bSBlbmNvZGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdl0pfSwgOnNvdXJjZSAiKGRlZm4gZW5jb2RlIFt2XSAoYXBwbHkgc3RyIChtYXAgZW5jb2RlLXZhbCB2KSkpXG4ifSB7OnN5bSB2bHEtY29udGludWF0aW9uLWJpdCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgdmxxLWNvbnRpbnVhdGlvbi1iaXQgdmxxLWJhc2UpXG4ifSB7OnN5bSB2bHEtYmFzZS1tYXNrLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiB2bHEtYmFzZS1tYXNrIChkZWMgdmxxLWJhc2UpKVxuIn0gezpzeW0gZGVjb2RlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gZGVjb2RlXG4gW3NdXG4gKGxldFxuICBbbCAoLi1sZW5ndGggcyldXG4gIChsb29wXG4gICBbaSAwIHJlc3VsdCAwIHNoaWZ0IDBdXG4gICAod2hlblxuICAgICg+PSBpIGwpXG4gICAgKHRocm93IChqcy9FcnJvci4gXCJFeHBlY3RlZCBtb3JlIGRpZ2l0cyBpbiBiYXNlIDY0IFZMUSB2YWx1ZS5cIikpKVxuICAgKGxldFxuICAgIFtkaWdpdCAoYmFzZTY0L2RlY29kZSAoLmNoYXJBdCBzIGkpKV1cbiAgICAobGV0XG4gICAgIFtpXG4gICAgICAoaW5jIGkpXG4gICAgICBjb250aW51YXRpb24/XG4gICAgICAocG9zPyAoYml0LWFuZCBkaWdpdCB2bHEtY29udGludWF0aW9uLWJpdCkpXG4gICAgICBkaWdpdFxuICAgICAgKGJpdC1hbmQgZGlnaXQgdmxxLWJhc2UtbWFzaylcbiAgICAgIHJlc3VsdFxuICAgICAgKCsgcmVzdWx0IChiaXQtc2hpZnQtbGVmdCBkaWdpdCBzaGlmdCkpXG4gICAgICBzaGlmdFxuICAgICAgKCsgc2hpZnQgdmxxLWJhc2Utc2hpZnQpXVxuICAgICAoaWZcbiAgICAgIGNvbnRpbnVhdGlvbj9cbiAgICAgIChyZWN1ciBpIHJlc3VsdCBzaGlmdClcbiAgICAgIChsYXp5LXNlcVxuICAgICAgIChjb25zXG4gICAgICAgIChmcm9tLXZscS1zaWduZWQgcmVzdWx0KVxuICAgICAgICAobGV0XG4gICAgICAgICBbcyAoLnN1YnN0cmluZyBzIGkpXVxuICAgICAgICAgKHdoZW4tbm90IChzdHJpbmcvYmxhbms/IHMpIChkZWNvZGUgcykpKSkpKSkpKSkpXG4ifSB7OnN5bSB2bHEtYmFzZS1zaGlmdCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgdmxxLWJhc2Utc2hpZnQgNSlcbiJ9IHs6c3ltIGZyb20tdmxxLXNpZ25lZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt2XSl9LCA6c291cmNlICIoZGVmblxuIGZyb20tdmxxLXNpZ25lZFxuIFt2XVxuIChsZXRcbiAgW25lZz8gKD0gKGJpdC1hbmQgdiAxKSAxKSBzaGlmdGVkIChiaXQtc2hpZnQtcmlnaHQgdiAxKV1cbiAgKGlmIG5lZz8gKC0gc2hpZnRlZCkgc2hpZnRlZCkpKVxuIn0gezpzeW0gdG8tdmxxLXNpZ25lZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt2XSl9LCA6c291cmNlICIoZGVmblxuIHRvLXZscS1zaWduZWRcbiBbdl1cbiAoaWZcbiAgKG5lZz8gdilcbiAgKGluYyAoYml0LXNoaWZ0LWxlZnQgKC0gdikgMSkpXG4gICgrIChiaXQtc2hpZnQtbGVmdCB2IDEpIDApKSlcbiJ9IHs6c3ltIHZscS1iYXNlLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiB2bHEtYmFzZSAoYml0LXNoaWZ0LWxlZnQgMSB2bHEtYmFzZS1zaGlmdCkpXG4ifSksIGV4cG91bmQuYW5zaSAoezpzeW0gKnByaW50LXN0eWxlcyosIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gKnByaW50LXN0eWxlcypcbiB7Omdvb2Qta2V5IFs6Z3JlZW5dLFxuICA6d2FybmluZy1rZXkgWzpib2xkXSxcbiAgOmNvcnJlY3Qta2V5IFs6Z3JlZW5dLFxuICA6aGlnaGxpZ2h0IFs6Ym9sZF0sXG4gIDpmb2N1cy1wYXRoIFs6bWFnZW50YV0sXG4gIDpiYWQtdmFsdWUgWzpyZWRdLFxuICA6Zm9vdGVyIFs6Y3lhbl0sXG4gIDpoZWFkZXIgWzpjeWFuXSxcbiAgOmdvb2QtcHJlZCBbOmdyZWVuXSxcbiAgOmdvb2QgWzpncmVlbl0sXG4gIDpmb2N1cy1rZXkgWzpib2xkXSxcbiAgOnBvaW50ZXIgWzptYWdlbnRhXSxcbiAgOmJhZCBbOnJlZF0sXG4gIDplcnJvci1rZXkgWzpyZWRdLFxuICA6bm9uZSBbOm5vbmVdLFxuICA6bWVzc2FnZSBbOm1hZ2VudGFdfSlcbiJ9IHs6c3ltICplbmFibGUtY29sb3IqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqZW5hYmxlLWNvbG9yKiBmYWxzZSlcbiJ9IHs6c3ltIHNnci1jb2RlLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIHNnci1jb2RlXG4gXCJNYXAgb2Ygc3ltYm9scyB0byBudW1lcmljIFNHUiAoc2VsZWN0IGdyYXBoaWMgcmVuZGl0aW9uKSBjb2Rlcy5cIlxuIHs6Ym9sZCAxLFxuICA6YmxpbmsgNSxcbiAgOndoaXRlIDM3LFxuICA6eWVsbG93IDMzLFxuICA6YmctcmVkIDQxLFxuICA6YmctY3lhbiA0NixcbiAgOmdyZWVuIDMyLFxuICA6YmctZ3JlZW4gNDIsXG4gIDpmZy1yZXNldCAzOSxcbiAgOmN5YW4gMzYsXG4gIDpiZy1ibGFjayA0MCxcbiAgOmZnLTI1NiAzOCxcbiAgOnVuZGVybGluZSAzLFxuICA6YmctbWFnZW50YSA0NSxcbiAgOnN0cmlrZSA5LFxuICA6YmcteWVsbG93IDQzLFxuICA6aGlkZGVuIDgsXG4gIDpyZWQgMzEsXG4gIDpibHVlIDM0LFxuICA6Ymctd2hpdGUgNDcsXG4gIDpiZy0yNTYgNDgsXG4gIDptYWdlbnRhIDM1LFxuICA6YmctYmx1ZSA0NCxcbiAgOmJnLXJlc2V0IDQ5LFxuICA6bm9uZSAwLFxuICA6cmV2ZXJzZSA3LFxuICA6YmxhY2sgMzB9KVxuIn0gezpzeW0gZXNjYXBlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhbiBBTlNJIGVzY29wZSBzdHJpbmcgd2hpY2ggd2lsbCBlbmFjdCB0aGUgZ2l2ZW4gU0dSIGNvZGVzLiIsIDphcmdsaXN0cyAoWyYgY29kZXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gZXNjYXBlXG4gXCJSZXR1cm5zIGFuIEFOU0kgZXNjb3BlIHN0cmluZyB3aGljaCB3aWxsIGVuYWN0IHRoZSBnaXZlbiBTR1IgY29kZXMuXCJcbiBbJiBjb2Rlc11cbiAoZXNjIGNvZGVzKSlcbiJ9IHs6c3ltIGNvbG9yLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3MgJiBzdHlsZXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gY29sb3JcbiBbcyAmIHN0eWxlc11cbiAoaWYgKmVuYWJsZS1jb2xvciogKGFwcGx5IHNnciBzIChyZXNvbHZlLXN0eWxlcyBzdHlsZXMpKSBzKSlcbiJ9IHs6c3ltIGVzYywgOm1ldGEgezpkb2MgIlJldHVybnMgYW4gQU5TSSBlc2NvcGUgc3RyaW5nIHdoaWNoIHdpbGwgYXBwbHkgdGhlIGdpdmVuIGNvbGxlY3Rpb24gb2YgU0dSXG4gIGNvZGVzLiIsIDphcmdsaXN0cyAoW2NvZGVzXSl9LCA6c291cmNlICIoZGVmblxuIGVzY1xuIFwiUmV0dXJucyBhbiBBTlNJIGVzY29wZSBzdHJpbmcgd2hpY2ggd2lsbCBhcHBseSB0aGUgZ2l2ZW4gY29sbGVjdGlvbiBvZiBTR1JcXG4gIGNvZGVzLlwiXG4gW2NvZGVzXVxuIChsZXRcbiAgW2NvZGVzIChtYXAgc2dyLWNvZGUgY29kZXMgY29kZXMpIGNvZGVzIChzdHJpbmcvam9pbiBcXDsgY29kZXMpXVxuICAoc3RyIFxcGyBcXFsgY29kZXMgXFxtKSkpXG4ifSB7OnN5bSBzZ3IsIDptZXRhIHs6ZG9jICJXcmFwcyB0aGUgZ2l2ZW4gc3RyaW5nIHdpdGggU0dSIGVzY2FwZXMgdG8gYXBwbHkgdGhlIGdpdmVuIGNvZGVzLCB0aGVuIHJlc2V0XG4gIHRoZSBncmFwaGljcy4iLCA6YXJnbGlzdHMgKFtzdHJpbmcgJiBjb2Rlc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBzZ3JcbiBcIldyYXBzIHRoZSBnaXZlbiBzdHJpbmcgd2l0aCBTR1IgZXNjYXBlcyB0byBhcHBseSB0aGUgZ2l2ZW4gY29kZXMsIHRoZW4gcmVzZXRcXG4gIHRoZSBncmFwaGljcy5cIlxuIFtzdHJpbmcgJiBjb2Rlc11cbiAoc3RyIChlc2MgY29kZXMpIHN0cmluZyAoZXNjYXBlIDpub25lKSkpXG4ifSB7OnN5bSBhbnNpLWNvZGU/LCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBhbnNpLWNvZGU/IHNnci1jb2RlKVxuIn0gezpzeW0gc3RyaXAsIDptZXRhIHs6ZG9jICJSZW1vdmVzIGNvbG9yIGNvZGVzIGZyb20gdGhlIGdpdmVuIHN0cmluZy4iLCA6YXJnbGlzdHMgKFtzdHJpbmddKX0sIDpzb3VyY2UgIihkZWZuXG4gc3RyaXBcbiBcIlJlbW92ZXMgY29sb3IgY29kZXMgZnJvbSB0aGUgZ2l2ZW4gc3RyaW5nLlwiXG4gW3N0cmluZ11cbiAoc3RyaW5nL3JlcGxhY2Ugc3RyaW5nICNcIlxcdTAwMWJcXFtbMC05O10qW21LXVwiIFwiXCIpKVxuIn0gezpzeW0gcmVzb2x2ZS1zdHlsZXMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3R5bGVzXSl9LCA6c291cmNlICIoZGVmblxuIHJlc29sdmUtc3R5bGVzXG4gW3N0eWxlc11cbiAoaWYtbGV0XG4gIFtyZXNcbiAgIChub3QtZW1wdHlcbiAgICAobWFwY2F0XG4gICAgIChmbipcbiAgICAgIFtwMV9fNDUwMjEjXVxuICAgICAgKG9yXG4gICAgICAgKHdoZW4tbGV0IFtyZXMgKCpwcmludC1zdHlsZXMqIHAxX180NTAyMSMpXSByZXMpXG4gICAgICAgW3AxX180NTAyMSNdKSlcbiAgICAgc3R5bGVzKSldXG4gIHJlc1xuICBbOmJvbGRdKSlcbiJ9KSwgZXhwb3VuZC5wcmludGVyICh7OnN5bSBtaXNzaW5nLWtleSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmb3JtXSl9LCA6c291cmNlICIoZGVmblxuIG1pc3Npbmcta2V5XG4gW2Zvcm1dXG4gKGxldFxuICBbW2JyYW5jaCBtYXRjaF1cbiAgIChzL2NvbmZvcm0gOmV4cG91bmQuc3BlYy9jb250YWlucy1rZXktcHJlZCAobnRoIGZvcm0gMikpXVxuICAoY2FzZVxuICAgYnJhbmNoXG4gICA6c2ltcGxlXG4gICAoOmt3IG1hdGNoKVxuICAgOmNvbXBvdW5kXG4gICAoc3VtbWFyaXplLWtleS1jbGF1c2UgW2JyYW5jaCBtYXRjaF0pKSkpXG4ifSB7OnN5bSBpbmRlbnQtbGV2ZWwsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIGluZGVudC1sZXZlbCAyKVxuIn0gezpzeW0gbWF4LXNwZWMtc3RyLXdpZHRoLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBtYXgtc3BlYy1zdHItd2lkdGggMTAwKVxuIn0gezpzeW0gYW5vbi1mbi1zdHIsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIGFub24tZm4tc3RyIFwiPGFub255bW91cyBmdW5jdGlvbj5cIilcbiJ9IHs6c3ltIHByaW50LXNwZWMta2V5cywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwcm9ibGVtc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcmludC1zcGVjLWtleXNcbiBbcHJvYmxlbXNdXG4gKGxldFxuICBba2V5c1xuICAgKGtleXdvcmRzXG4gICAgKG1hcFxuICAgICAoZm4qIFtwMV9fNDUwMTcjXSAobWlzc2luZy1rZXkgKDpwcmVkIHAxX180NTAxNyMpKSlcbiAgICAgcHJvYmxlbXMpKV1cbiAgKGlmXG4gICAoYW5kXG4gICAgKGVtcHR5PyAoOmV4cG91bmQvdmlhIChmaXJzdCBwcm9ibGVtcykpKVxuICAgIChzb21lIHNpbXBsZS1rZXl3b3JkPyBrZXlzKSlcbiAgIG5pbFxuICAgKC0+PlxuICAgIChrZXktPnNwZWMga2V5cyBwcm9ibGVtcylcbiAgICAobWFwIChmbiBbW2sgdl1dIHtcImtleVwiIGssIFwic3BlY1wiIChzaW1wbGUtc3BlYy1vci1uYW1lIHYpfSkpXG4gICAgKHNvcnQtYnkgKGZuKiBbcDFfXzQ1MDE4I10gKGdldCBwMV9fNDUwMTgjIFwia2V5XCIpKSlcbiAgICAocHByaW50L3ByaW50LXRhYmxlIFtcImtleVwiIFwic3BlY1wiXSlcbiAgICB3aXRoLW91dC1zdHJcbiAgICBzdHJpbmcvdHJpbSkpKSlcbiJ9IHs6c3ltIHNpbmdsZXRvbj8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeHNdKX0sIDpzb3VyY2UgIihkZWZuIHNpbmdsZXRvbj8gW3hzXSAoPSAxIChjb3VudCB4cykpKVxuIn0gezpzeW0gaW5kZW50LCA6bWV0YSB7OmRvYyAiR2l2ZW4gYW4gcG90ZW50aWFsbHkgbXVsdGktbGluZSBzdHJpbmcsIHJldHVybnMgdGhhdCBzdHJpbmcgaW5kZW50ZWQgYnlcbiAgICdpbmRlbnQtbGV2ZWwnIHNwYWNlcy4gT3B0aW9uYWxseSwgY2FuIGluZGVudCBmaXJzdCBsaW5lIGFuZCBvdGhlciBsaW5lc1xuICAgZGlmZmVyZW50IGFtb3VudHMuIiwgOmFyZ2xpc3RzIFtbc10gW2luZGVudC1sZXZlbCBzXSBbZmlyc3QtbGluZS1pbmRlbnQgcmVzdC1saW5lcy1pbmRlbnQgc11dfSwgOnNvdXJjZSAiKGRlZm5cbiBpbmRlbnRcbiBcIkdpdmVuIGFuIHBvdGVudGlhbGx5IG11bHRpLWxpbmUgc3RyaW5nLCByZXR1cm5zIHRoYXQgc3RyaW5nIGluZGVudGVkIGJ5XFxuICAgJ2luZGVudC1sZXZlbCcgc3BhY2VzLiBPcHRpb25hbGx5LCBjYW4gaW5kZW50IGZpcnN0IGxpbmUgYW5kIG90aGVyIGxpbmVzXFxuICAgZGlmZmVyZW50IGFtb3VudHMuXCJcbiAoW3NdIChpbmRlbnQgaW5kZW50LWxldmVsIHMpKVxuIChbaW5kZW50LWxldmVsIHNdIChpbmRlbnQgaW5kZW50LWxldmVsIGluZGVudC1sZXZlbCBzKSlcbiAoW2ZpcnN0LWxpbmUtaW5kZW50IHJlc3QtbGluZXMtaW5kZW50IHNdXG4gIChsZXRcbiAgIFtbbGluZSAmIGxpbmVzXSAoc3RyaW5nL3NwbGl0LWxpbmVzIChzdHIgcykpXVxuICAgKC0+PlxuICAgIGxpbmVzXG4gICAgKG1hcFxuICAgICAoZm4qXG4gICAgICBbcDFfXzQ1MDIwI11cbiAgICAgIChzdHIgKGFwcGx5IHN0ciAocmVwZWF0IHJlc3QtbGluZXMtaW5kZW50IFwiIFwiKSkgcDFfXzQ1MDIwIykpKVxuICAgIChpbnRvIFsoc3RyIChhcHBseSBzdHIgKHJlcGVhdCBmaXJzdC1saW5lLWluZGVudCBcIiBcIikpIGxpbmUpXSlcbiAgICAoc3RyaW5nL2pvaW4gXCJcXG5cIikpKSkpXG4ifSB7OnN5bSBzaW1wbGUtc3BlYy1vci1uYW1lLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NwZWMtbmFtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzaW1wbGUtc3BlYy1vci1uYW1lXG4gW3NwZWMtbmFtZV1cbiAobGV0XG4gIFtzcGVjLXN0clxuICAgKGVsaWRlLXNwZWMtbnMgKGVsaWRlLWNvcmUtbnMgKHByLXN0ciAoZXhwYW5kLXNwZWMgc3BlYy1uYW1lKSkpKV1cbiAgKGlmXG4gICAob3JcbiAgICAoPCBtYXgtc3BlYy1zdHItd2lkdGggKGNvdW50IHNwZWMtc3RyKSlcbiAgICAoc3RyaW5nL2luY2x1ZGVzPyBzcGVjLXN0ciBcIlxcblwiKSlcbiAgIHNwZWMtbmFtZVxuICAgc3BlYy1zdHIpKSlcbiJ9IHs6c3ltIHNwZWNzLWZyb20tZm9ybSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt2aWFdKX0sIDpzb3VyY2UgIihkZWZuXG4gc3BlY3MtZnJvbS1mb3JtXG4gW3ZpYV1cbiAobGV0XG4gIFtmb3JtXG4gICAoc29tZS0+IHZpYSBsYXN0IHMvZm9ybSlcbiAgIGNvbmZvcm1lZFxuICAgKHMvY29uZm9ybSA6ZXhwb3VuZC5zcGVjL2tleS1zcGVjIGZvcm0pXVxuICAoaWZcbiAgIChhbmQgZm9ybSAobm90PSA6Y2xvanVyZS5zcGVjLmFscGhhL2ludmFsaWQgY29uZm9ybWVkKSlcbiAgICgtPj5cbiAgICAoOmNsYXVzZXMgY29uZm9ybWVkKVxuICAgIChtYXAgOnNwZWNzKVxuICAgICh0cmVlLXNlcSBjb2xsPyBzZXEpXG4gICAgKGZpbHRlciAoZm4gW3hdIChhbmQgKHZlY3Rvcj8geCkgKD0gOmt3IChmaXJzdCB4KSkpKSlcbiAgICAobWFwIHNlY29uZClcbiAgICBzZXQpXG4gICAje30pKSlcbiJ9IHs6c3ltIGVsaWRlLXNwZWMtbnMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbGlkZS1zcGVjLW5zXG4gW3NdXG4gIz8oOmNsanMgKC0+IHMgKHN0cmluZy9yZXBsYWNlIFwiY2xqcy5zcGVjLmFscGhhL1wiIFwiXCIpIChzdHJpbmcvcmVwbGFjZSBcImNsanMvc3BlYy9hbHBoYVwiIFwiXCIpKSA6Y2xqIChzdHJpbmcvcmVwbGFjZSBzIFwiY2xvanVyZS5zcGVjLmFscGhhL1wiIFwiXCIpKSlcbiJ9IHs6c3ltIGtleS0+c3BlYywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtrZXlzIHByb2JsZW1zXSl9LCA6c291cmNlICIoZGVmblxuIGtleS0+c3BlY1xuIFtrZXlzIHByb2JsZW1zXVxuIChkb3NlcVxuICBbcCBwcm9ibGVtc11cbiAgKGFzc2VydCAoc29tZT8gKDpleHBvdW5kL3ZpYSBwKSkgdXRpbC9hc3NlcnQtbWVzc2FnZSkpXG4gKGxldFxuICBbdmlhc1xuICAgKG1hcCA6ZXhwb3VuZC92aWEgcHJvYmxlbXMpXG4gICBzcGVjc1xuICAgKGlmXG4gICAgKGV2ZXJ5PyBxdWFsaWZpZWQta2V5d29yZD8ga2V5cylcbiAgICBrZXlzXG4gICAgKGlmLWxldFxuICAgICBbc3BlY3MgKGFwcGx5IHNldC91bmlvbiAobWFwIHNwZWNzLWZyb20tZm9ybSB2aWFzKSldXG4gICAgIHNwZWNzXG4gICAgIGtleXMpKV1cbiAgKHJlZHVjZVxuICAgKGZuXG4gICAgW20ga11cbiAgICAoYXNzb2NcbiAgICAgbVxuICAgICBrXG4gICAgIChpZlxuICAgICAgKHF1YWxpZmllZC1rZXl3b3JkPyBrKVxuICAgICAga1xuICAgICAgKC0+PlxuICAgICAgIHNwZWNzXG4gICAgICAgKGZpbHRlciAoZm4qIFtwMV9fNDUwMTYjXSAoPSAobmFtZSBrKSAobmFtZSBwMV9fNDUwMTYjKSkpKVxuICAgICAgIGZpcnN0KSkpKVxuICAge31cbiAgIGtleXMpKSlcbiJ9IHs6c3ltIGVsaWRlLWNvcmUtbnMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbGlkZS1jb3JlLW5zXG4gW3NdXG4gIz8oOmNsanMgKC0+IHMgKHN0cmluZy9yZXBsYWNlIFwiY2xqcy5jb3JlL1wiIFwiXCIpIChzdHJpbmcvcmVwbGFjZSBcImNsanMvY29yZS9cIiBcIlwiKSkgOmNsaiAoc3RyaW5nL3JlcGxhY2UgcyBcImNsb2p1cmUuY29yZS9cIiBcIlwiKSkpXG4ifSB7OnN5bSBwcmludC1taXNzaW5nLWtleXMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcHJvYmxlbXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gcHJpbnQtbWlzc2luZy1rZXlzXG4gW3Byb2JsZW1zXVxuIChsZXRcbiAgW2tleXMtY2xhdXNlcyAoZGlzdGluY3QgKG1hcCAoY29tcCBtaXNzaW5nLWtleSA6cHJlZCkgcHJvYmxlbXMpKV1cbiAgKGlmXG4gICAoZXZlcnk/IGtleXdvcmQ/IGtleXMtY2xhdXNlcylcbiAgIChzdHJpbmcvam9pblxuICAgIFwiLCBcIlxuICAgIChtYXBcbiAgICAgKGZuKiBbcDFfXzQ1MDE5I10gKGFuc2kvY29sb3IgcDFfXzQ1MDE5IyA6Y29ycmVjdC1rZXkpKVxuICAgICAoc29ydCBrZXlzLWNsYXVzZXMpKSlcbiAgIChzdHJcbiAgICBcIlxcblxcblwiXG4gICAgKGFuc2kvY29sb3JcbiAgICAgKHBwcmludC1zdHJcbiAgICAgIChpZlxuICAgICAgIChzaW5nbGV0b24/IGtleXMtY2xhdXNlcylcbiAgICAgICAoZmlyc3Qga2V5cy1jbGF1c2VzKVxuICAgICAgIChhcHBseSBsaXN0ICdhbmQga2V5cy1jbGF1c2VzKSkpXG4gICAgIDpjb3JyZWN0LWtleSkpKSkpXG4ifSB7OnN5bSBleHBhbmQtc3BlYywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzcGVjXSl9LCA6c291cmNlICIoZGVmblxuIGV4cGFuZC1zcGVjXG4gW3NwZWNdXG4gKGxldFxuICBbIXNlZW4tc3BlY3MgKGF0b20gI3t9KV1cbiAgKHdhbGsvcHJld2Fsa1xuICAgKGZuXG4gICAgW3hdXG4gICAgKGlmLW5vdFxuICAgICAocXVhbGlmaWVkLWtleXdvcmQ/IHgpXG4gICAgIHhcbiAgICAgKGlmLWxldFxuICAgICAgW3NwIChzL2dldC1zcGVjIHgpXVxuICAgICAgKGlmLW5vdFxuICAgICAgIChjb250YWlucz8gQCFzZWVuLXNwZWNzIHgpXG4gICAgICAgKGRvIChzd2FwISAhc2Vlbi1zcGVjcyBjb25qIHgpIChzL2Zvcm0gc3ApKVxuICAgICAgIHgpXG4gICAgICB4KSkpXG4gICAoaWYgKHMvZ2V0LXNwZWMgc3BlYykgKHMvZm9ybSBzcGVjKSBzcGVjKSkpKVxuIn0gezpzeW0ga2V5d29yZHMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm4ga2V5d29yZHMgW2Zvcm1dICgtPj4gZm9ybSAodHJlZS1zZXEgY29sbD8gc2VxKSAoZmlsdGVyIGtleXdvcmQ/KSkpXG4ifSB7OnN5bSBuby10cmFpbGluZy13aGl0ZXNwYWNlLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYW4gcG90ZW50aWFsbHkgbXVsdGktbGluZSBzdHJpbmcsIHJldHVybnMgdGhhdCBzdHJpbmcgd2l0aCBhbGxcbiAgdHJhaWxpbmcgd2hpdGVzcGFjZSByZW1vdmVkLiIsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gbm8tdHJhaWxpbmctd2hpdGVzcGFjZVxuIFwiR2l2ZW4gYW4gcG90ZW50aWFsbHkgbXVsdGktbGluZSBzdHJpbmcsIHJldHVybnMgdGhhdCBzdHJpbmcgd2l0aCBhbGxcXG4gIHRyYWlsaW5nIHdoaXRlc3BhY2UgcmVtb3ZlZC5cIlxuIFtzXVxuIChsZXRcbiAgW3MnICgtPj4gcyBzdHJpbmcvc3BsaXQtbGluZXMgKG1hcCBzdHJpbmcvdHJpbXIpIChzdHJpbmcvam9pbiBcIlxcblwiKSldXG4gIChpZiAoPSBcXG5ld2xpbmUgKGxhc3QgcykpIChzdHIgcycgXCJcXG5cIikgcycpKSlcbiJ9IHs6c3ltIHBwcmludC1zdHIsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBwcmV0dHktcHJpbnRlZCBzdHJpbmciLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHBwcmludC1zdHJcbiBcIlJldHVybnMgdGhlIHByZXR0eS1wcmludGVkIHN0cmluZ1wiXG4gW3hdXG4gKGlmIChmbj8geCkgKHBwcmludC1mbiB4KSAocHByaW50L3dyaXRlIHggOnN0cmVhbSBuaWwpKSlcbiJ9IHs6c3ltIHN1bW1hcml6ZS1rZXktY2xhdXNlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW1ticmFuY2ggbWF0Y2hdXSl9LCA6c291cmNlICIoZGVmblxuIHN1bW1hcml6ZS1rZXktY2xhdXNlXG4gW1ticmFuY2ggbWF0Y2hdXVxuIChjYXNlXG4gIGJyYW5jaFxuICA6c2ltcGxlXG4gICg6a3cgbWF0Y2gpXG4gIDpjb21wb3VuZFxuICAoYXBwbHlcbiAgIGxpc3RcbiAgIChzeW1ib2wgKG5hbWUgKDpvcCBtYXRjaCkpKVxuICAgKG1hcCBzdW1tYXJpemUta2V5LWNsYXVzZSAoOmNsYXVzZXMgbWF0Y2gpKSkpKVxuIn0gezpzeW0gcHByaW50LWZuLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2ZdKX0sIDpzb3VyY2UgIihkZWZuXG4gcHByaW50LWZuXG4gW2ZdXG4gKC0+XG4gICM/KDpjbGogKGxldCBbW18gbnMtbiBmLW5dIChyZS1tYXRjaGVzICNcIiguKilcXCQoLio/KShfX1swLTldKyk/XCIgKHN0ciBmKSldIChpZiAocmUtbWF0Y2hlcyAjXCJeZm5fX1xcZCtcXEAuKiRcIiBmLW4pIGFub24tZm4tc3RyIChzdHIgKG1haW4vZGVtdW5nZSBucy1uKSBcIi9cIiAobWFpbi9kZW11bmdlIGYtbikpKSkgOmNsanMgKGxldCBbZm4tcGFydHMgKHN0cmluZy9zcGxpdCAoc2Vjb25kIChyZS1maW5kICNcIm9iamVjdFxcWyhbXlxcKCBcXF1dKykuKihcXG58XFxdKT9cIiAocHItc3RyIGYpKSkgI1wiXFwkXCIpIG5zLW4gKHN0cmluZy9qb2luIFwiLlwiIChidXRsYXN0IGZuLXBhcnRzKSkgZm4tbiAobGFzdCBmbi1wYXJ0cyldIChpZiAoZW1wdHk/IG5zLW4pIGFub24tZm4tc3RyIChzdHIgKGRlbXVuZ2Utc3RyIG5zLW4pIFwiL1wiIChkZW11bmdlLXN0ciBmbi1uKSkpKSlcbiAgKGVsaWRlLWNvcmUtbnMpXG4gIChzdHJpbmcvcmVwbGFjZSAjXCItLVxcZCtcIiBcIlwiKVxuICAoc3RyaW5nL3JlcGxhY2UgI1wiQFthLXpBLVowLTldK1wiIFwiXCIpKSlcbiJ9KSwgaHRtbC1zb3VwLmNvcmUgKHs6c3ltIGxpbmUtPnNlZ21lbnRzLCA6bWV0YSB7OmRvYyAiU3BsaXRzIGEgbGluZSBpbnRvIHNlZ21lbnRzIHdoZXJlIHRhZ3MgYXJlIHN1cHBvc2VkIHRvIGFwcGVhci4iLCA6YXJnbGlzdHMgKFtsaW5lIHRhZ3MtZm9yLWxpbmUgZXNjYXBlP10pfSwgOnNvdXJjZSAiKGRlZm5cbiBsaW5lLT5zZWdtZW50c1xuIFwiU3BsaXRzIGEgbGluZSBpbnRvIHNlZ21lbnRzIHdoZXJlIHRhZ3MgYXJlIHN1cHBvc2VkIHRvIGFwcGVhci5cIlxuIFtsaW5lIHRhZ3MtZm9yLWxpbmUgZXNjYXBlP11cbiAobGV0XG4gIFtjb2x1bW5zXG4gICAoc2V0IChtYXAgOmNvbHVtbiB0YWdzLWZvci1saW5lKSlcbiAgIGVzY2FwZS1odG1sLWNoYXJcbiAgIChpZiBlc2NhcGU/IGVzY2FwZS1odG1sLWNoYXIgaWRlbnRpdHkpXVxuICAobG9vcFxuICAgW2kgMCBzZWdtZW50cyAodHJhbnNpZW50IFtdKSBjdXJyZW50LXNlZ21lbnQgKHRyYW5zaWVudCBbXSldXG4gICAoaWYtbGV0XG4gICAgW2MgKHNvbWUtPiBsaW5lIChnZXQgaSkgZXNjYXBlLWh0bWwtY2hhcildXG4gICAgKGlmXG4gICAgIChjb250YWlucz8gY29sdW1ucyAoaW5jIGkpKVxuICAgICAocmVjdXJcbiAgICAgIChpbmMgaSlcbiAgICAgIChjb25qISBzZWdtZW50cyAocGVyc2lzdGVudCEgY3VycmVudC1zZWdtZW50KSlcbiAgICAgICh0cmFuc2llbnQgW2NdKSlcbiAgICAgKHJlY3VyIChpbmMgaSkgc2VnbWVudHMgKGNvbmohIGN1cnJlbnQtc2VnbWVudCBjKSkpXG4gICAgKC0+PlxuICAgICAocGVyc2lzdGVudCEgY3VycmVudC1zZWdtZW50KVxuICAgICAoY29uaiEgc2VnbWVudHMpXG4gICAgIHBlcnNpc3RlbnQhXG4gICAgIChtYXAgc3RyL2pvaW4pKSkpKSlcbiJ9IHs6c3ltIHRhZy0+aGljY3VwLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIEhpY2N1cC1jb21wYXRpYmxlIGRhdGEgc3RydWN0dXJlIGZvciB0aGUgZ2l2ZW4gdGFnIGRlc2NyaXB0aW9uLiIsIDphcmdsaXN0cyAoW3RhZ10pfSwgOnNvdXJjZSAiKGRlZm5cbiB0YWctPmhpY2N1cFxuIFwiUmV0dXJucyBhIEhpY2N1cC1jb21wYXRpYmxlIGRhdGEgc3RydWN0dXJlIGZvciB0aGUgZ2l2ZW4gdGFnIGRlc2NyaXB0aW9uLlwiXG4gW3RhZ11cbiAoY29uZFxuICAoOmRlbGltaXRlcj8gdGFnKVxuICBbOnNwYW4gezpjbGFzcyBcImRlbGltaXRlclwifV1cbiAgKDplcnJvcj8gdGFnKVxuICBbOnNwYW4gezpjbGFzcyBcImVycm9yXCIsIDpkYXRhLW1lc3NhZ2UgKDptZXNzYWdlIHRhZyl9XVxuICAoOmJlZ2luPyB0YWcpXG4gIChsZXRcbiAgIFt2YWx1ZSAoOnZhbHVlIHRhZyldXG4gICAoY29uZFxuICAgIChzeW1ib2w/IHZhbHVlKVxuICAgIFs6c3BhbiB7OmNsYXNzIFwic3ltYm9sXCJ9XVxuICAgIChsaXN0PyB2YWx1ZSlcbiAgICBbOnNwYW4gezpjbGFzcyBcImNvbGxlY3Rpb24gbGlzdFwifV1cbiAgICAodmVjdG9yPyB2YWx1ZSlcbiAgICBbOnNwYW4gezpjbGFzcyBcImNvbGxlY3Rpb24gdmVjdG9yXCJ9XVxuICAgIChtYXA/IHZhbHVlKVxuICAgIFs6c3BhbiB7OmNsYXNzIFwiY29sbGVjdGlvbiBtYXBcIn1dXG4gICAgKHNldD8gdmFsdWUpXG4gICAgWzpzcGFuIHs6Y2xhc3MgXCJjb2xsZWN0aW9uIHNldFwifV1cbiAgICAobnVtYmVyPyB2YWx1ZSlcbiAgICBbOnNwYW4gezpjbGFzcyBcIm51bWJlclwifV1cbiAgICAoc3RyaW5nPyB2YWx1ZSlcbiAgICBbOnNwYW4gezpjbGFzcyBcInN0cmluZ1wifV1cbiAgICAoa2V5d29yZD8gdmFsdWUpXG4gICAgWzpzcGFuIHs6Y2xhc3MgXCJrZXl3b3JkXCJ9XVxuICAgIChuaWw/IHZhbHVlKVxuICAgIFs6c3BhbiB7OmNsYXNzIFwibmlsXCJ9XVxuICAgIChjb250YWlucz8gI3t0cnVlIGZhbHNlfSB2YWx1ZSlcbiAgICBbOnNwYW4gezpjbGFzcyBcImJvb2xlYW5cIn1dXG4gICAgOmVsc2VcbiAgICBbOnNwYW5dKSlcbiAgKDplbmQ/IHRhZylcbiAgbmlsKSlcbiJ9IHs6c3ltIGxpbmUtPmh0bWwsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBnaXZlbiBsaW5lIHdpdGggaHRtbCBhZGRlZC4iLCA6YXJnbGlzdHMgKFtsaW5lIHRhZ3MtZm9yLWxpbmVdKX0sIDpzb3VyY2UgIihkZWZuXG4gbGluZS0+aHRtbFxuIFwiUmV0dXJucyB0aGUgZ2l2ZW4gbGluZSB3aXRoIGh0bWwgYWRkZWQuXCJcbiBbbGluZSB0YWdzLWZvci1saW5lXVxuIChsZXRcbiAgW2h0bWwtcGVyLWNvbHVtblxuICAgKGludG8gW10gdGFncy1mb3ItbGluZS0+aHRtbCAoc29ydC1ieSA6Y29sdW1uIHRhZ3MtZm9yLWxpbmUpKVxuICAgc2VnbWVudHNcbiAgIChsaW5lLT5zZWdtZW50cyBsaW5lIHRhZ3MtZm9yLWxpbmUgdHJ1ZSldXG4gIChzdHIvam9pblxuICAgKGludGVybGVhdmUgc2VnbWVudHMgKGNvbmNhdCBodG1sLXBlci1jb2x1bW4gKHJlcGVhdCBcIlwiKSkpKSkpXG4ifSB7OnN5bSBjb2RlLT5oaWNjdXAsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBjb2RlIGluIHRoZSBnaXZlbiBzdHJpbmcgd2l0aCBIaWNjdXAtY29tcGF0aWJsZSBkYXRhIHN0cnVjdHVyZXMgYWRkZWQuIiwgOmFyZ2xpc3RzIChbY29kZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjb2RlLT5oaWNjdXBcbiBcIlJldHVybnMgdGhlIGNvZGUgaW4gdGhlIGdpdmVuIHN0cmluZyB3aXRoIEhpY2N1cC1jb21wYXRpYmxlIGRhdGEgc3RydWN0dXJlcyBhZGRlZC5cIlxuIFtjb2RlXVxuIChsZXRcbiAgW2xpbmVzXG4gICAoc3BsaXQtbGluZXMgY29kZSlcbiAgIHRhZ3NcbiAgICh0cy9jb2RlLT50YWdzIGNvZGUpXG4gICBoaWNjdXBcbiAgIChwYXJzZS1saW5lcyBsaW5lLT5oaWNjdXAgbGluZXMgdGFncylcbiAgIGhpY2N1cFxuICAgKGFwcGx5IGNvbmNhdCAoaW50ZXJwb3NlIFtcIlxcblwiXSBoaWNjdXApKV1cbiAgKHN0cnVjdHVyaXplLWhpY2N1cCBoaWNjdXApKSlcbiJ9IHs6c3ltIHNwbGl0LWxpbmVzLCA6bWV0YSB7OmRvYyAiU3BsaXRzIHRoZSBzdHJpbmcgaW50byBsaW5lcy4iLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIHNwbGl0LWxpbmVzXG4gXCJTcGxpdHMgdGhlIHN0cmluZyBpbnRvIGxpbmVzLlwiXG4gW3NdXG4gKHZlYyAoLnNwbGl0IHMgXCJcXG5cIiAtMSkpKVxuIn0gezpzeW0gY29kZS0+aHRtbCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGNvZGUgaW4gdGhlIGdpdmVuIHN0cmluZyB3aXRoIGh0bWwgYWRkZWQuIiwgOmFyZ2xpc3RzIChbY29kZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjb2RlLT5odG1sXG4gXCJSZXR1cm5zIHRoZSBjb2RlIGluIHRoZSBnaXZlbiBzdHJpbmcgd2l0aCBodG1sIGFkZGVkLlwiXG4gW2NvZGVdXG4gKGxldFxuICBbbGluZXNcbiAgIChzcGxpdC1saW5lcyBjb2RlKVxuICAgdGFnc1xuICAgKHRzL2NvZGUtPnRhZ3MgY29kZSlcbiAgIGxpbmVzXG4gICAocGFyc2UtbGluZXMgbGluZS0+aHRtbCBsaW5lcyB0YWdzKV1cbiAgKHN0ci9qb2luIFxcbmV3bGluZSBsaW5lcykpKVxuIn0gezpzeW0gbGluZS0+aGljY3VwLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgZ2l2ZW4gbGluZSB3aXRoIEhpY2N1cC1jb21wYXRpYmxlIGRhdGEgc3RydWN0dXJlcyBhZGRlZC4iLCA6YXJnbGlzdHMgKFtsaW5lIHRhZ3MtZm9yLWxpbmVdKX0sIDpzb3VyY2UgIihkZWZuXG4gbGluZS0+aGljY3VwXG4gXCJSZXR1cm5zIHRoZSBnaXZlbiBsaW5lIHdpdGggSGljY3VwLWNvbXBhdGlibGUgZGF0YSBzdHJ1Y3R1cmVzIGFkZGVkLlwiXG4gW2xpbmUgdGFncy1mb3ItbGluZV1cbiAobGV0XG4gIFtoaWNjdXAtcGVyLWNvbHVtblxuICAgKGludG8gW10gdGFncy1mb3ItbGluZS0+aGljY3VwIChzb3J0LWJ5IDpjb2x1bW4gdGFncy1mb3ItbGluZSkpXG4gICBzZWdtZW50c1xuICAgKG1hcCBsaXN0IChsaW5lLT5zZWdtZW50cyBsaW5lIHRhZ3MtZm9yLWxpbmUgZmFsc2UpKV1cbiAgKGFwcGx5XG4gICBjb25jYXRcbiAgIChpbnRlcmxlYXZlIHNlZ21lbnRzIChjb25jYXQgaGljY3VwLXBlci1jb2x1bW4gKHJlcGVhdCBuaWwpKSkpKSlcbiJ9IHs6c3ltIHRhZ3MtZm9yLWxpbmUtPmhpY2N1cCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiB0YWdzLWZvci1saW5lLT5oaWNjdXBcbiAoY29tcFxuICAocGFydGl0aW9uLWJ5IDpjb2x1bW4pXG4gIChtYXAgKGZuKiBbcDFfXzQ1NDcxI10gKG1hcCB0YWctPmhpY2N1cCBwMV9fNDU0NzEjKSkpKSlcbiJ9IHs6c3ltIHRhZy0+aHRtbCwgOm1ldGEgezpkb2MgIlJldHVybnMgYW4gSFRNTCBzdHJpbmcgZm9yIHRoZSBnaXZlbiB0YWcgZGVzY3JpcHRpb24uIiwgOmFyZ2xpc3RzIChbdGFnXSl9LCA6c291cmNlICIoZGVmblxuIHRhZy0+aHRtbFxuIFwiUmV0dXJucyBhbiBIVE1MIHN0cmluZyBmb3IgdGhlIGdpdmVuIHRhZyBkZXNjcmlwdGlvbi5cIlxuIFt0YWddXG4gKGNvbmRcbiAgKDpkZWxpbWl0ZXI/IHRhZylcbiAgXCI8c3BhbiBjbGFzcz0nZGVsaW1pdGVyJz5cIlxuICAoOmVycm9yPyB0YWcpXG4gIChmb3JtYXRcbiAgIFwiPHNwYW4gY2xhc3M9J2Vycm9yJyBkYXRhLW1lc3NhZ2U9JyVzJz48L3NwYW4+XCJcbiAgIChzb21lLT4gKDptZXNzYWdlIHRhZykgZXNjYXBlLWh0bWwtc3RyKSlcbiAgKDpiZWdpbj8gdGFnKVxuICAobGV0XG4gICBbdmFsdWUgKDp2YWx1ZSB0YWcpXVxuICAgKGNvbmRcbiAgICAoc3ltYm9sPyB2YWx1ZSlcbiAgICBcIjxzcGFuIGNsYXNzPSdzeW1ib2wnPlwiXG4gICAgKGxpc3Q/IHZhbHVlKVxuICAgIFwiPHNwYW4gY2xhc3M9J2NvbGxlY3Rpb24gbGlzdCc+XCJcbiAgICAodmVjdG9yPyB2YWx1ZSlcbiAgICBcIjxzcGFuIGNsYXNzPSdjb2xsZWN0aW9uIHZlY3Rvcic+XCJcbiAgICAobWFwPyB2YWx1ZSlcbiAgICBcIjxzcGFuIGNsYXNzPSdjb2xsZWN0aW9uIG1hcCc+XCJcbiAgICAoc2V0PyB2YWx1ZSlcbiAgICBcIjxzcGFuIGNsYXNzPSdjb2xsZWN0aW9uIHNldCc+XCJcbiAgICAobnVtYmVyPyB2YWx1ZSlcbiAgICBcIjxzcGFuIGNsYXNzPSdudW1iZXInPlwiXG4gICAgKHN0cmluZz8gdmFsdWUpXG4gICAgXCI8c3BhbiBjbGFzcz0nc3RyaW5nJz5cIlxuICAgIChrZXl3b3JkPyB2YWx1ZSlcbiAgICBcIjxzcGFuIGNsYXNzPSdrZXl3b3JkJz5cIlxuICAgIChuaWw/IHZhbHVlKVxuICAgIFwiPHNwYW4gY2xhc3M9J25pbCc+XCJcbiAgICAoY29udGFpbnM/ICN7dHJ1ZSBmYWxzZX0gdmFsdWUpXG4gICAgXCI8c3BhbiBjbGFzcz0nYm9vbGVhbic+XCJcbiAgICA6ZWxzZVxuICAgIFwiPHNwYW4+XCIpKVxuICAoOmVuZD8gdGFnKVxuICBcIjwvc3Bhbj5cIikpXG4ifSB7OnN5bSBlc2NhcGUtaHRtbC1zdHIsIDptZXRhIHs6ZG9jICJFc2NhcGVzIGFuIEhUTUwgc3RyaW5nIiwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBlc2NhcGUtaHRtbC1zdHJcbiBcIkVzY2FwZXMgYW4gSFRNTCBzdHJpbmdcIlxuIFtzXVxuIChzdHIvZXNjYXBlXG4gIHNcbiAge1xcPCBcIiZsdDtcIiwgXFw+IFwiJmd0O1wiLCBcXCYgXCImYW1wO1wiLCBcXFwiIFwiJnF1b3Q7XCIsIFxcJyBcIiZhcG9zO1wifSkpXG4ifSB7OnN5bSB0YWdzLWZvci1saW5lLT5odG1sLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIHRhZ3MtZm9yLWxpbmUtPmh0bWxcbiAoY29tcFxuICAocGFydGl0aW9uLWJ5IDpjb2x1bW4pXG4gIChtYXAgKGZuKiBbcDFfXzQ1NDcwI10gKHN0ci9qb2luIChtYXAgdGFnLT5odG1sIHAxX180NTQ3MCMpKSkpKSlcbiJ9IHs6c3ltIHN0cnVjdHVyaXplLWhpY2N1cCwgOm1ldGEgezpkb2MgIlRha2VzIGEgZmxhdCBsaXN0IG9mIEhpY2N1cC1jb21wYXRpYmxlIGRhdGEgYW5kIGFkZHMgc3RydWN0dXJlIHRvIGl0LiIsIDphcmdsaXN0cyBbW2ZsYXQtaGljY3VwXSBbZmxhdC1oaWNjdXAgc3RydWN0dXJlZC1oaWNjdXBdXX0sIDpzb3VyY2UgIihkZWZuXG4gc3RydWN0dXJpemUtaGljY3VwXG4gXCJUYWtlcyBhIGZsYXQgbGlzdCBvZiBIaWNjdXAtY29tcGF0aWJsZSBkYXRhIGFuZCBhZGRzIHN0cnVjdHVyZSB0byBpdC5cIlxuIChbZmxhdC1oaWNjdXBdIChzZWNvbmQgKHN0cnVjdHVyaXplLWhpY2N1cCBmbGF0LWhpY2N1cCBbOnNwYW5dKSkpXG4gKFtmbGF0LWhpY2N1cCBzdHJ1Y3R1cmVkLWhpY2N1cF1cbiAgKGxvb3BcbiAgIFtmbGF0LWhpY2N1cCBmbGF0LWhpY2N1cCBzdHJ1Y3R1cmVkLWhpY2N1cCBzdHJ1Y3R1cmVkLWhpY2N1cF1cbiAgIChpZi1sZXRcbiAgICBbdG9rZW4gKGZpcnN0IGZsYXQtaGljY3VwKV1cbiAgICAoY29uZFxuICAgICAoc3RyaW5nPyB0b2tlbilcbiAgICAgKHJlY3VyIChyZXN0IGZsYXQtaGljY3VwKSAoY29uaiBzdHJ1Y3R1cmVkLWhpY2N1cCB0b2tlbikpXG4gICAgICh2ZWN0b3I/IHRva2VuKVxuICAgICAobGV0XG4gICAgICBbW2ZsYXQgc3RydWN0dXJlZF0gKHN0cnVjdHVyaXplLWhpY2N1cCAocmVzdCBmbGF0LWhpY2N1cCkgdG9rZW4pXVxuICAgICAgKHJlY3VyIGZsYXQgKGNvbmogc3RydWN0dXJlZC1oaWNjdXAgc3RydWN0dXJlZCkpKSlcbiAgICBbKHJlc3QgZmxhdC1oaWNjdXApIHN0cnVjdHVyZWQtaGljY3VwXSkpKSlcbiJ9IHs6c3ltIGVzY2FwZS1odG1sLWNoYXIsIDptZXRhIHs6ZG9jICJFc2NhcGVzIGFuIEhUTUwgY2hhcmFjdGVyIiwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBlc2NhcGUtaHRtbC1jaGFyXG4gXCJFc2NhcGVzIGFuIEhUTUwgY2hhcmFjdGVyXCJcbiBbc11cbiAoY2FzZSBzIFxcPCBcIiZsdDtcIiBcXD4gXCImZ3Q7XCIgXFwmIFwiJmFtcDtcIiBcXFwiIFwiJnF1b3Q7XCIgXFwnIFwiJmFwb3M7XCIgcykpXG4ifSB7OnN5bSBwYXJzZS1saW5lcywgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGxpbmVzIHBhcnNlZCB3aXRoIHRoZSBnaXZlbiBmdW5jdGlvbi4iLCA6YXJnbGlzdHMgKFtwYXJzZS1mbiBsaW5lcyB0YWdzXSl9LCA6c291cmNlICIoZGVmblxuIHBhcnNlLWxpbmVzXG4gXCJSZXR1cm5zIHRoZSBsaW5lcyBwYXJzZWQgd2l0aCB0aGUgZ2l2ZW4gZnVuY3Rpb24uXCJcbiBbcGFyc2UtZm4gbGluZXMgdGFnc11cbiAobG9vcFxuICBbaSAwIHJlc3VsdHMgKHRyYW5zaWVudCBbXSldXG4gIChpZi1sZXRcbiAgIFtsaW5lIChnZXQgbGluZXMgaSldXG4gICAocmVjdXIgKGluYyBpKSAoY29uaiEgcmVzdWx0cyAocGFyc2UtZm4gbGluZSAoZ2V0IHRhZ3MgKGluYyBpKSkpKSlcbiAgIChwZXJzaXN0ZW50ISByZXN1bHRzKSkpKVxuIn0pLCBvYWtjbGpzLnRvb2xzLnJlYWRlciAoezpzeW0gcmVhZCtzdHJpbmcsIDptZXRhIHs6ZG9jICJMaWtlIHJlYWQsIGFuZCB0YWtpbmcgdGhlIHNhbWUgYXJncy4gcmVhZGVyIG11c3QgYmUgYSBTb3VyY2VMb2dnaW5nUHVzaGJhY2tSZWFkZXIuXG4gIFJldHVybnMgYSB2ZWN0b3IgY29udGFpbmluZyB0aGUgb2JqZWN0IHJlYWQgYW5kIHRoZSAod2hpdGVzcGFjZS10cmltbWVkKSBzdHJpbmcgcmVhZC4iLCA6YXJnbGlzdHMgW1tzdHJlYW1dIFtzdHJlYW0gZW9mLWVycm9yPyBlb2YtdmFsdWVdIFtvcHRzIHN0cmVhbV1dfSwgOnNvdXJjZSAiKGRlZm5cbiByZWFkK3N0cmluZ1xuIFwiTGlrZSByZWFkLCBhbmQgdGFraW5nIHRoZSBzYW1lIGFyZ3MuIHJlYWRlciBtdXN0IGJlIGEgU291cmNlTG9nZ2luZ1B1c2hiYWNrUmVhZGVyLlxcbiAgUmV0dXJucyBhIHZlY3RvciBjb250YWluaW5nIHRoZSBvYmplY3QgcmVhZCBhbmQgdGhlICh3aGl0ZXNwYWNlLXRyaW1tZWQpIHN0cmluZyByZWFkLlwiXG4gKFtzdHJlYW1dIChyZWFkK3N0cmluZyBzdHJlYW0gdHJ1ZSBuaWwpKVxuIChbc3RyZWFtIGVvZi1lcnJvcj8gZW9mLXZhbHVlXVxuICAobGV0XG4gICBbYnVmXG4gICAgKGZuIFtyZWFkZXJdIChzdHIgKDpidWZmZXIgQCguLWZyYW1lcyBzdHJlYW0pKSkpXG4gICAgb2Zmc2V0XG4gICAgKGNvdW50IChidWYgc3RyZWFtKSlcbiAgICBvXG4gICAgKGxvZy1zb3VyY2Ugc3RyZWFtIChyZWFkIHN0cmVhbSBlb2YtZXJyb3I/IGVvZi12YWx1ZSkpXG4gICAgc1xuICAgICgudHJpbSAoc3VicyAoYnVmIHN0cmVhbSkgb2Zmc2V0KSldXG4gICBbbyBzXSkpXG4gKFtvcHRzIHN0cmVhbV1cbiAgKGxldFxuICAgW2J1ZlxuICAgIChmbiBbcmVhZGVyXSAoc3RyICg6YnVmZmVyIEAoLi1mcmFtZXMgc3RyZWFtKSkpKVxuICAgIG9mZnNldFxuICAgIChjb3VudCAoYnVmIHN0cmVhbSkpXG4gICAgb1xuICAgIChsb2ctc291cmNlIHN0cmVhbSAocmVhZCBvcHRzIHN0cmVhbSkpXG4gICAgc1xuICAgICgudHJpbSAoc3VicyAoYnVmIHN0cmVhbSkgb2Zmc2V0KSldXG4gICBbbyBzXSkpKVxuIn0gezpzeW0gYm9vbD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gYm9vbD8gW3hdIChvciAoaW5zdGFuY2U/IGpzL0Jvb2xlYW4geCkgKHRydWU/IHgpIChmYWxzZT8geCkpKVxuIn0gezpzeW0gKnN1cHByZXNzLXJlYWQqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqc3VwcHJlc3MtcmVhZCogZmFsc2UpXG4ifSB7OnN5bSAqZGVmYXVsdC1kYXRhLXJlYWRlci1mbiosIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gKmRlZmF1bHQtZGF0YS1yZWFkZXItZm4qXG4gXCJXaGVuIG5vIGRhdGEgcmVhZGVyIGlzIGZvdW5kIGZvciBhIHRhZyBhbmQgKmRlZmF1bHQtZGF0YS1yZWFkZXItZm4qXFxuICBpcyBub24tbmlsLCBpdCB3aWxsIGJlIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHMsIHRoZSB0YWcgYW5kIHRoZSB2YWx1ZS5cXG4gIElmICpkZWZhdWx0LWRhdGEtcmVhZGVyLWZuKiBpcyBuaWwgKHRoZSBkZWZhdWx0IHZhbHVlKSwgYW4gZXhjZXB0aW9uXFxuICB3aWxsIGJlIHRocm93biBmb3IgdGhlIHVua25vd24gdGFnLlwiXG4gKGZuIFt0YWcgdmFsdWVdKSlcbiJ9IHs6c3ltIHJlYWQsIDptZXRhIHs6ZG9jICJSZWFkcyB0aGUgZmlyc3Qgb2JqZWN0IGZyb20gYW4gSVB1c2hiYWNrUmVhZGVyLlxuICAgUmV0dXJucyB0aGUgb2JqZWN0IHJlYWQuIElmIEVPRiwgdGhyb3dzIGlmIGVvZi1lcnJvcj8gaXMgdHJ1ZS5cbiAgIE90aGVyd2lzZSByZXR1cm5zIHNlbnRpbmVsLiBJZiBubyBzdHJlYW0gaXMgcHJvdmlkZWQsICppbiogd2lsbCBiZSB1c2VkLlxuXG4gICBPcHRzIGlzIGEgcGVyc2lzdGVudCBtYXAgd2l0aCB2YWxpZCBrZXlzOlxuICAgIDpyZWFkLWNvbmQgLSA6YWxsb3cgdG8gcHJvY2VzcyByZWFkZXIgY29uZGl0aW9uYWxzLCBvclxuICAgICAgICAgICAgICAgICA6cHJlc2VydmUgdG8ga2VlcCBhbGwgYnJhbmNoZXNcbiAgICA6ZmVhdHVyZXMgLSBwZXJzaXN0ZW50IHNldCBvZiBmZWF0dXJlIGtleXdvcmRzIGZvciByZWFkZXIgY29uZGl0aW9uYWxzXG4gICAgOmVvZiAtIG9uIGVvZiwgcmV0dXJuIHZhbHVlIHVubGVzcyA6ZW9mdGhyb3csIHRoZW4gdGhyb3cuXG4gICAgICAgICAgIGlmIG5vdCBzcGVjaWZpZWQsIHdpbGwgdGhyb3dcblxuICAgVG8gcmVhZCBkYXRhIHN0cnVjdHVyZXMgb25seSwgdXNlIGNsanMudG9vbHMucmVhZGVyLmVkbi9yZWFkXG5cbiAgIE5vdGUgdGhhdCB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlIG9mIGNsanMudG9vbHMucmVhZGVyL3JlYWQgYW5kXG4gICBjbGpzLnRvb2xzLnJlYWRlci5lZG4vcmVhZCBpcyBub3QgdGhlIHNhbWUgZm9yIGVvZi1oYW5kbGluZyIsIDphcmdsaXN0cyBbW3JlYWRlcl0gW3tlb2YgOmVvZiwgOmFzIG9wdHMsIDpvciB7ZW9mIDplb2Z0aHJvd319IHJlYWRlcl0gW3JlYWRlciBlb2YtZXJyb3I/IHNlbnRpbmVsXV19LCA6c291cmNlICIoZGVmblxuIHJlYWRcbiBcIlJlYWRzIHRoZSBmaXJzdCBvYmplY3QgZnJvbSBhbiBJUHVzaGJhY2tSZWFkZXIuXFxuICAgUmV0dXJucyB0aGUgb2JqZWN0IHJlYWQuIElmIEVPRiwgdGhyb3dzIGlmIGVvZi1lcnJvcj8gaXMgdHJ1ZS5cXG4gICBPdGhlcndpc2UgcmV0dXJucyBzZW50aW5lbC4gSWYgbm8gc3RyZWFtIGlzIHByb3ZpZGVkLCAqaW4qIHdpbGwgYmUgdXNlZC5cXG5cXG4gICBPcHRzIGlzIGEgcGVyc2lzdGVudCBtYXAgd2l0aCB2YWxpZCBrZXlzOlxcbiAgICA6cmVhZC1jb25kIC0gOmFsbG93IHRvIHByb2Nlc3MgcmVhZGVyIGNvbmRpdGlvbmFscywgb3JcXG4gICAgICAgICAgICAgICAgIDpwcmVzZXJ2ZSB0byBrZWVwIGFsbCBicmFuY2hlc1xcbiAgICA6ZmVhdHVyZXMgLSBwZXJzaXN0ZW50IHNldCBvZiBmZWF0dXJlIGtleXdvcmRzIGZvciByZWFkZXIgY29uZGl0aW9uYWxzXFxuICAgIDplb2YgLSBvbiBlb2YsIHJldHVybiB2YWx1ZSB1bmxlc3MgOmVvZnRocm93LCB0aGVuIHRocm93LlxcbiAgICAgICAgICAgaWYgbm90IHNwZWNpZmllZCwgd2lsbCB0aHJvd1xcblxcbiAgIFRvIHJlYWQgZGF0YSBzdHJ1Y3R1cmVzIG9ubHksIHVzZSBjbGpzLnRvb2xzLnJlYWRlci5lZG4vcmVhZFxcblxcbiAgIE5vdGUgdGhhdCB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlIG9mIGNsanMudG9vbHMucmVhZGVyL3JlYWQgYW5kXFxuICAgY2xqcy50b29scy5yZWFkZXIuZWRuL3JlYWQgaXMgbm90IHRoZSBzYW1lIGZvciBlb2YtaGFuZGxpbmdcIlxuIHs6YXJnbGlzdHMgJyhbcmVhZGVyXSBbb3B0cyByZWFkZXJdIFtyZWFkZXIgZW9mLWVycm9yPyBlb2YtdmFsdWVdKX1cbiAoW3JlYWRlcl0gKHJlYWQgcmVhZGVyIHRydWUgbmlsKSlcbiAoW3tlb2YgOmVvZiwgOmFzIG9wdHMsIDpvciB7ZW9mIDplb2Z0aHJvd319IHJlYWRlcl1cbiAgKHJlYWQqIHJlYWRlciAoPSBlb2YgOmVvZnRocm93KSBlb2YgbmlsIG9wdHMgKHRvLWFycmF5IFtdKSkpXG4gKFtyZWFkZXIgZW9mLWVycm9yPyBzZW50aW5lbF1cbiAgKHJlYWQqIHJlYWRlciBlb2YtZXJyb3I/IHNlbnRpbmVsIG5pbCB7fSAodG8tYXJyYXkgW10pKSkpXG4ifSB7OnN5bSBkZWZhdWx0LWRhdGEtcmVhZGVycywgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBkZWZhdWx0LWRhdGEtcmVhZGVyc1xuIFwiRGVmYXVsdCBtYXAgb2YgZGF0YSByZWFkZXIgZnVuY3Rpb25zIHByb3ZpZGVkIGJ5IENsb2p1cmUuXFxuICBNYXkgYmUgb3ZlcnJpZGRlbiBieSBiaW5kaW5nICpkYXRhLXJlYWRlcnMqXCJcbiB7fSlcbiJ9IHs6c3ltICpkYXRhLXJlYWRlcnMqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuICpkYXRhLXJlYWRlcnMqXG4gXCJNYXAgZnJvbSByZWFkZXIgdGFnIHN5bWJvbHMgdG8gZGF0YSByZWFkZXIgVmFycy5cXG4gIFJlYWRlciB0YWdzIHdpdGhvdXQgbmFtZXNwYWNlIHF1YWxpZmllcnMgYXJlIHJlc2VydmVkIGZvciBDbG9qdXJlLlxcbiAgVGhpcyBsaWdodCB2ZXJzaW9uIG9mIHRvb2xzLnJlYWRlciBoYXMgbm8gaW1wbGVtZW50YXRpb24gZm9yIGRlZmF1bHRcXG4gIHJlYWRlciB0YWdzIHN1Y2ggYXMgI2luc3QgYW5kICN1dWlkLlwiXG4ge30pXG4ifSB7OnN5bSAqcmVhZC1kZWxpbSosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpyZWFkLWRlbGltKiBmYWxzZSlcbiJ9IHs6c3ltIHJlc29sdmUtc3ltYm9sLCA6bWV0YSB7OmRvYyAiUmVzb2x2ZSBhIHN5bWJvbCBzIGludG8gaXRzIGZ1bGx5IHF1YWxpZmllZCBuYW1lc3BhY2UgdmVyc2lvbiIsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVzb2x2ZS1zeW1ib2xcbiBcIlJlc29sdmUgYSBzeW1ib2wgcyBpbnRvIGl0cyBmdWxseSBxdWFsaWZpZWQgbmFtZXNwYWNlIHZlcnNpb25cIlxuIFtzXVxuIHMpXG4ifSB7OnN5bSAqYWxpYXMtbWFwKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiAqYWxpYXMtbWFwKlxuIFwiTWFwIGZyb20gbnMgYWxpYXMgdG8gbnMsIGlmIG5vbi1uaWwsIGl0IHdpbGwgYmUgdXNlZCB0byByZXNvbHZlIHJlYWQtdGltZVxcbiAgIG5zIGFsaWFzZXMuXFxuXFxuICAgRGVmYXVsdHMgdG8gbmlsXCJcbiBuaWwpXG4ifSB7OnN5bSAqd3JhcC12YWx1ZS1hbmQtYWRkLW1ldGFkYXRhPyosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICp3cmFwLXZhbHVlLWFuZC1hZGQtbWV0YWRhdGE/KiBmYWxzZSlcbiJ9IHs6c3ltIHJlYWQtcmVnZXgsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGNoIG9wdHMgcGVuZGluZy1mb3Jtc10pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWFkLXJlZ2V4XG4gW3JkciBjaCBvcHRzIHBlbmRpbmctZm9ybXNdXG4gKGxldFxuICBbc2IgKFN0cmluZ0J1ZmZlci4pXVxuICAobG9vcFxuICAgW2NoIChyZWFkLWNoYXIgcmRyKV1cbiAgIChpZlxuICAgIChpZGVudGljYWw/IFxcXCIgY2gpXG4gICAgKHN0ciBzYilcbiAgICAoaWZcbiAgICAgKG5pbD8gY2gpXG4gICAgIChlcnIvdGhyb3ctZW9mLXJlYWRpbmcgcmRyIDpyZWdleCBzYilcbiAgICAgKGRvXG4gICAgICAoLmFwcGVuZCBzYiBjaClcbiAgICAgICh3aGVuXG4gICAgICAgKGlkZW50aWNhbD8gXFxcXCBjaClcbiAgICAgICAobGV0XG4gICAgICAgIFtjaCAocmVhZC1jaGFyIHJkcildXG4gICAgICAgIChpZiAobmlsPyBjaCkgKGVyci90aHJvdy1lb2YtcmVhZGluZyByZHIgOnJlZ2V4IHNiKSlcbiAgICAgICAgKC5hcHBlbmQgc2IgY2gpKSlcbiAgICAgIChyZWN1ciAocmVhZC1jaGFyIHJkcikpKSkpKSkpXG4ifSB7OnN5bSBzYiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgc2IgKFN0cmluZ0J1ZmZlci4pKVxuIn0gezpzeW0gcmVhZC1zdHJpbmcsIDptZXRhIHs6ZG9jICJSZWFkcyBvbmUgb2JqZWN0IGZyb20gdGhlIHN0cmluZyBzLlxuICAgUmV0dXJucyBuaWwgd2hlbiBzIGlzIG5pbCBvciBlbXB0eS5cblxuICAgVG8gcmVhZCBkYXRhIHN0cnVjdHVyZXMgb25seSwgdXNlIGNsanMudG9vbHMucmVhZGVyLmVkbi9yZWFkLXN0cmluZ1xuXG4gICBOb3RlIHRoYXQgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSBvZiBjbGpzLnRvb2xzLnJlYWRlci9yZWFkLXN0cmluZyBhbmRcbiAgIGNsanMudG9vbHMucmVhZGVyLmVkbi9yZWFkLXN0cmluZyBpcyBub3QgdGhlIHNhbWUgZm9yIGVvZi1oYW5kbGluZyIsIDphcmdsaXN0cyBbW3NdIFtvcHRzIHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gcmVhZC1zdHJpbmdcbiBcIlJlYWRzIG9uZSBvYmplY3QgZnJvbSB0aGUgc3RyaW5nIHMuXFxuICAgUmV0dXJucyBuaWwgd2hlbiBzIGlzIG5pbCBvciBlbXB0eS5cXG5cXG4gICBUbyByZWFkIGRhdGEgc3RydWN0dXJlcyBvbmx5LCB1c2UgY2xqcy50b29scy5yZWFkZXIuZWRuL3JlYWQtc3RyaW5nXFxuXFxuICAgTm90ZSB0aGF0IHRoZSBmdW5jdGlvbiBzaWduYXR1cmUgb2YgY2xqcy50b29scy5yZWFkZXIvcmVhZC1zdHJpbmcgYW5kXFxuICAgY2xqcy50b29scy5yZWFkZXIuZWRuL3JlYWQtc3RyaW5nIGlzIG5vdCB0aGUgc2FtZSBmb3IgZW9mLWhhbmRsaW5nXCJcbiAoW3NdIChyZWFkLXN0cmluZyB7fSBzKSlcbiAoW29wdHMgc11cbiAgKHdoZW5cbiAgIChhbmQgcyAobm90IChpZGVudGljYWw/IHMgXCJcIikpKVxuICAgKHJlYWQgb3B0cyAoc3RyaW5nLXB1c2gtYmFjay1yZWFkZXIgcykpKSkpXG4ifSB7OnN5bSBtYXAtZnVuYywgOm1ldGEgezpkb2MgIkRlY2lkZSB3aGljaCBtYXAgdHlwZSB0byB1c2UsIGFycmF5LW1hcCBpZiBsZXNzIHRoYW4gMTYgZWxlbWVudHMiLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIG1hcC1mdW5jXG4gXCJEZWNpZGUgd2hpY2ggbWFwIHR5cGUgdG8gdXNlLCBhcnJheS1tYXAgaWYgbGVzcyB0aGFuIDE2IGVsZW1lbnRzXCJcbiBbY29sbF1cbiAoaWYgKD49IChjb3VudCBjb2xsKSAxNikgJ2NsanMuY29yZS9oYXNoLW1hcCAnY2xqcy5jb3JlL2FycmF5LW1hcCkpXG4ifSksIHBsYXktY2xqYy5nbC5jb3JlICh7OnN5bSAtPmdhbWUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbY29udGV4dF0pfSwgOnNvdXJjZSAiKGRlZm4gLT5nYW1lIFtjb250ZXh0XSB7OnRleC1jb3VudCAoYXRvbSAwKSwgOmNvbnRleHQgY29udGV4dH0pXG4ifSB7OnN5bSBjb21waWxlLCA6bWV0YSB7OmRvYyAiSW5pdGlhbGl6ZXMgdGhlIHByb3ZpZGVkIGVudGl0eSwgY29tcGlsaW5nIHRoZSBzaGFkZXJzIGFuZCBjcmVhdGluZyBhbGwgdGhlXG4gIG5lY2Vzc2FyeSBzdGF0ZSBmb3IgcmVuZGVyaW5nLiIsIDphcmdsaXN0cyAoW2dhbWUgZW50aXR5XSl9LCA6c291cmNlICIoZGVmblxuIGNvbXBpbGVcbiBcIkluaXRpYWxpemVzIHRoZSBwcm92aWRlZCBlbnRpdHksIGNvbXBpbGluZyB0aGUgc2hhZGVycyBhbmQgY3JlYXRpbmcgYWxsIHRoZVxcbiAgbmVjZXNzYXJ5IHN0YXRlIGZvciByZW5kZXJpbmcuXCJcbiBbZ2FtZSBlbnRpdHldXG4gKGxldFxuICBbezprZXlzIFt2ZXJ0ZXggZnJhZ21lbnQgYXR0cmlidXRlcyB1bmlmb3JtcyBpbmRpY2VzXX1cbiAgIGVudGl0eVxuICAgdmVydGV4LXNvdXJjZVxuICAgKGlnL2lnbHUtPmdsc2wgKG1lcmdlIHs6dmVyc2lvbiBnbHNsLXZlcnNpb259IHZlcnRleCkpXG4gICBmcmFnbWVudC1zb3VyY2VcbiAgIChpZy9pZ2x1LT5nbHNsIChtZXJnZSB7OnZlcnNpb24gZ2xzbC12ZXJzaW9ufSBmcmFnbWVudCkpXG4gICBwcmV2aW91cy1wcm9ncmFtXG4gICAoZ2xcbiAgICBnYW1lXG4gICAgIz8oOmNsaiBnZXRJbnRlZ2VyIDpjbGpzIGdldFBhcmFtZXRlcilcbiAgICAoZ2wgZ2FtZSBDVVJSRU5UX1BST0dSQU0pKVxuICAgcHJldmlvdXMtdmFvXG4gICAoZ2xcbiAgICBnYW1lXG4gICAgIz8oOmNsaiBnZXRJbnRlZ2VyIDpjbGpzIGdldFBhcmFtZXRlcilcbiAgICAoZ2wgZ2FtZSBWRVJURVhfQVJSQVlfQklORElORykpXG4gICBwcm9ncmFtXG4gICAodS9jcmVhdGUtcHJvZ3JhbSBnYW1lIHZlcnRleC1zb3VyY2UgZnJhZ21lbnQtc291cmNlKVxuICAgX1xuICAgKGdsIGdhbWUgdXNlUHJvZ3JhbSBwcm9ncmFtKVxuICAgdmFvXG4gICAoZ2wgZ2FtZSAjPyg6Y2xqIGdlblZlcnRleEFycmF5cyA6Y2xqcyBjcmVhdGVWZXJ0ZXhBcnJheSkpXG4gICBfXG4gICAoZ2wgZ2FtZSBiaW5kVmVydGV4QXJyYXkgdmFvKVxuICAgYXR0ci1uYW1lc1xuICAgKHUvZ2V0LWF0dHJpYnV0ZS1uYW1lcyB2ZXJ0ZXgpXG4gICBlbnRpdHlcbiAgIChjb25kLT5cbiAgICBlbnRpdHlcbiAgICBhdHRyLW5hbWVzXG4gICAgKGFzc29jXG4gICAgIDphdHRyaWJ1dGUtYnVmZmVyc1xuICAgICAocmVkdWNlXG4gICAgICAoZm4gW20gYXR0ci1uYW1lXSAoYXNzb2MgbSBhdHRyLW5hbWUgKHUvY3JlYXRlLWJ1ZmZlciBnYW1lKSkpXG4gICAgICB7fVxuICAgICAgYXR0ci1uYW1lcykpXG4gICAgaW5kaWNlc1xuICAgIChhc3NvYyA6aW5kZXgtYnVmZmVyICh1L2NyZWF0ZS1idWZmZXIgZ2FtZSkpKVxuICAgZW50aXR5XG4gICAoc2V0LWJ1ZmZlcnMgZ2FtZSBlbnRpdHkgcHJvZ3JhbSlcbiAgIHVuaWZvcm0tbG9jYXRpb25zXG4gICAocmVkdWNlXG4gICAgKGZuXG4gICAgIFttIHVuaWZvcm1dXG4gICAgIChhc3NvY1xuICAgICAgbVxuICAgICAgdW5pZm9ybVxuICAgICAgKGdsIGdhbWUgZ2V0VW5pZm9ybUxvY2F0aW9uIHByb2dyYW0gKG5hbWUgdW5pZm9ybSkpKSlcbiAgICB7fVxuICAgICgtPlxuICAgICAje31cbiAgICAgKGludG8gKC0+IHZlcnRleCA6dW5pZm9ybXMga2V5cykpXG4gICAgIChpbnRvICgtPiBmcmFnbWVudCA6dW5pZm9ybXMga2V5cykpKSlcbiAgIGVudGl0eVxuICAgKG1lcmdlXG4gICAgZW50aXR5XG4gICAgezp2ZXJ0ZXggdmVydGV4LFxuICAgICA6ZnJhZ21lbnQgZnJhZ21lbnQsXG4gICAgIDp2ZXJ0ZXgtc291cmNlIHZlcnRleC1zb3VyY2UsXG4gICAgIDpmcmFnbWVudC1zb3VyY2UgZnJhZ21lbnQtc291cmNlLFxuICAgICA6cHJvZ3JhbSBwcm9ncmFtLFxuICAgICA6dmFvIHZhbyxcbiAgICAgOnVuaWZvcm0tbG9jYXRpb25zIHVuaWZvcm0tbG9jYXRpb25zLFxuICAgICA6dGV4dHVyZXMge319KVxuICAgZW50aXR5XG4gICAocmVkdWNlIChwYXJ0aWFsIGNhbGwtdW5pZm9ybSBnYW1lKSBlbnRpdHkgdW5pZm9ybXMpXVxuICAoc29tZS0+PlxuICAgZW50aXR5XG4gICA6cmVuZGVyLXRvLXRleHR1cmVcbiAgIChyZW5kZXItPnRleHR1cmUgZ2FtZSAoOnRleHR1cmVzIGVudGl0eSkpKVxuICAoZ2wgZ2FtZSB1c2VQcm9ncmFtIHByZXZpb3VzLXByb2dyYW0pXG4gIChnbCBnYW1lIGJpbmRWZXJ0ZXhBcnJheSBwcmV2aW91cy12YW8pXG4gIChkaXNzb2MgZW50aXR5IDp1bmlmb3JtcyA6YXR0cmlidXRlcyA6cmVuZGVyLXRvLXRleHR1cmUpKSlcbiJ9IHs6c3ltIHJlbmRlciwgOm1ldGEgezpkb2MgIlJlbmRlcnMgdGhlIHByb3ZpZGVkIGVudGl0eS4iLCA6YXJnbGlzdHMgKFtnYW1lIGVudGl0eV0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZW5kZXJcbiBcIlJlbmRlcnMgdGhlIHByb3ZpZGVkIGVudGl0eS5cIlxuIFtnYW1lIGVudGl0eV1cbiAobGV0XG4gIFt7OmtleXNcbiAgICBbcHJvZ3JhbVxuICAgICB2YW9cbiAgICAgdW5pZm9ybXNcbiAgICAgaW5kaWNlc1xuICAgICB2aWV3cG9ydFxuICAgICBjbGVhclxuICAgICByZW5kZXItdG8tdGV4dHVyZVxuICAgICBpbmRleC1idWZmZXJdfVxuICAgZW50aXR5XG4gICBwcmV2aW91cy1wcm9ncmFtXG4gICAoZ2xcbiAgICBnYW1lXG4gICAgIz8oOmNsaiBnZXRJbnRlZ2VyIDpjbGpzIGdldFBhcmFtZXRlcilcbiAgICAoZ2wgZ2FtZSBDVVJSRU5UX1BST0dSQU0pKVxuICAgcHJldmlvdXMtdmFvXG4gICAoZ2xcbiAgICBnYW1lXG4gICAgIz8oOmNsaiBnZXRJbnRlZ2VyIDpjbGpzIGdldFBhcmFtZXRlcilcbiAgICAoZ2wgZ2FtZSBWRVJURVhfQVJSQVlfQklORElORykpXG4gICBwcmV2aW91cy1pbmRleC1idWZmZXJcbiAgIChnbFxuICAgIGdhbWVcbiAgICAjPyg6Y2xqIGdldEludGVnZXIgOmNsanMgZ2V0UGFyYW1ldGVyKVxuICAgIChnbCBnYW1lIEVMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkcpKV1cbiAgKHNvbWUtPj4gcHJvZ3JhbSAoZ2wgZ2FtZSB1c2VQcm9ncmFtKSlcbiAgKHNvbWUtPj4gdmFvIChnbCBnYW1lIGJpbmRWZXJ0ZXhBcnJheSkpXG4gIChzb21lLT4+XG4gICBpbmRleC1idWZmZXJcbiAgIChnbCBnYW1lIGJpbmRCdWZmZXIgKGdsIGdhbWUgRUxFTUVOVF9BUlJBWV9CVUZGRVIpKSlcbiAgKHdoZW5cbiAgIHVuaWZvcm1zXG4gICAod2hlbi1ub3RcbiAgICBwcm9ncmFtXG4gICAgKHRocm93IChleC1pbmZvIFwiT25seSBjb21waWxlZCBlbnRpdGllcyBjYW4gYmUgcmVuZGVyZWRcIiB7fSkpKVxuICAgKGxldFxuICAgIFt7OmtleXMgW3RleHR1cmVzXX1cbiAgICAgKHJlZHVjZSAocGFydGlhbCBjYWxsLXVuaWZvcm0gZ2FtZSkgZW50aXR5IHVuaWZvcm1zKV1cbiAgICAoZG9zZXFcbiAgICAgW3s6a2V5cyBbdW5pdCBsb2NhdGlvbl19ICh2YWxzIHRleHR1cmVzKV1cbiAgICAgKGdsIGdhbWUgdW5pZm9ybTFpIGxvY2F0aW9uIHVuaXQpKVxuICAgIChzb21lLT4+XG4gICAgIGVudGl0eVxuICAgICA6cmVuZGVyLXRvLXRleHR1cmVcbiAgICAgKHJlbmRlci0+dGV4dHVyZSBnYW1lIHRleHR1cmVzKSkpKVxuICAoc29tZS0+PiB2aWV3cG9ydCAocmVuZGVyLXZpZXdwb3J0IGdhbWUpKVxuICAoc29tZS0+PiBjbGVhciAocmVuZGVyLWNsZWFyIGdhbWUpKVxuICAobGV0XG4gICBbezprZXlzIFtkcmF3LWNvdW50IGluc3RhbmNlLWNvdW50XX1cbiAgICAoc2V0LWJ1ZmZlcnMgZ2FtZSBlbnRpdHkgcHJvZ3JhbSldXG4gICAod2hlblxuICAgIGRyYXctY291bnRcbiAgICAoaWYtbGV0XG4gICAgIFt7OmtleXMgW3R5cGVdfSBpbmRpY2VzXVxuICAgICAoZ2wgZ2FtZSBkcmF3RWxlbWVudHMgKGdsIGdhbWUgVFJJQU5HTEVTKSBkcmF3LWNvdW50IHR5cGUgMClcbiAgICAgKGlmXG4gICAgICBpbnN0YW5jZS1jb3VudFxuICAgICAgKGdsXG4gICAgICAgZ2FtZVxuICAgICAgIGRyYXdBcnJheXNJbnN0YW5jZWRcbiAgICAgICAoZ2wgZ2FtZSBUUklBTkdMRVMpXG4gICAgICAgMFxuICAgICAgIGRyYXctY291bnRcbiAgICAgICBpbnN0YW5jZS1jb3VudClcbiAgICAgIChnbCBnYW1lIGRyYXdBcnJheXMgKGdsIGdhbWUgVFJJQU5HTEVTKSAwIGRyYXctY291bnQpKSkpKVxuICAoZ2wgZ2FtZSB1c2VQcm9ncmFtIHByZXZpb3VzLXByb2dyYW0pXG4gIChnbCBnYW1lIGJpbmRWZXJ0ZXhBcnJheSBwcmV2aW91cy12YW8pXG4gIChnbFxuICAgZ2FtZVxuICAgYmluZEJ1ZmZlclxuICAgKGdsIGdhbWUgRUxFTUVOVF9BUlJBWV9CVUZGRVIpXG4gICBwcmV2aW91cy1pbmRleC1idWZmZXIpKSlcbiJ9KSwgY2xqcy50b29scy5yZWFkZXIgKHs6c3ltIHJlYWQrc3RyaW5nLCA6bWV0YSB7OmRvYyAiTGlrZSByZWFkLCBhbmQgdGFraW5nIHRoZSBzYW1lIGFyZ3MuIHJlYWRlciBtdXN0IGJlIGEgU291cmNlTG9nZ2luZ1B1c2hiYWNrUmVhZGVyLlxuICBSZXR1cm5zIGEgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIG9iamVjdCByZWFkIGFuZCB0aGUgKHdoaXRlc3BhY2UtdHJpbW1lZCkgc3RyaW5nIHJlYWQuIiwgOmFyZ2xpc3RzIFtbc3RyZWFtXSBbc3RyZWFtIGVvZi1lcnJvcj8gZW9mLXZhbHVlXSBbb3B0cyBzdHJlYW1dXX0sIDpzb3VyY2UgIihkZWZuXG4gcmVhZCtzdHJpbmdcbiBcIkxpa2UgcmVhZCwgYW5kIHRha2luZyB0aGUgc2FtZSBhcmdzLiByZWFkZXIgbXVzdCBiZSBhIFNvdXJjZUxvZ2dpbmdQdXNoYmFja1JlYWRlci5cXG4gIFJldHVybnMgYSB2ZWN0b3IgY29udGFpbmluZyB0aGUgb2JqZWN0IHJlYWQgYW5kIHRoZSAod2hpdGVzcGFjZS10cmltbWVkKSBzdHJpbmcgcmVhZC5cIlxuIChbc3RyZWFtXSAocmVhZCtzdHJpbmcgc3RyZWFtIHRydWUgbmlsKSlcbiAoW3N0cmVhbSBlb2YtZXJyb3I/IGVvZi12YWx1ZV1cbiAgKGxldFxuICAgW2J1ZlxuICAgIChmbiBbcmVhZGVyXSAoc3RyICg6YnVmZmVyIEAoLi1mcmFtZXMgc3RyZWFtKSkpKVxuICAgIG9mZnNldFxuICAgIChjb3VudCAoYnVmIHN0cmVhbSkpXG4gICAgb1xuICAgIChsb2ctc291cmNlIHN0cmVhbSAocmVhZCBzdHJlYW0gZW9mLWVycm9yPyBlb2YtdmFsdWUpKVxuICAgIHNcbiAgICAoLnRyaW0gKHN1YnMgKGJ1ZiBzdHJlYW0pIG9mZnNldCkpXVxuICAgW28gc10pKVxuIChbb3B0cyBzdHJlYW1dXG4gIChsZXRcbiAgIFtidWZcbiAgICAoZm4gW3JlYWRlcl0gKHN0ciAoOmJ1ZmZlciBAKC4tZnJhbWVzIHN0cmVhbSkpKSlcbiAgICBvZmZzZXRcbiAgICAoY291bnQgKGJ1ZiBzdHJlYW0pKVxuICAgIG9cbiAgICAobG9nLXNvdXJjZSBzdHJlYW0gKHJlYWQgb3B0cyBzdHJlYW0pKVxuICAgIHNcbiAgICAoLnRyaW0gKHN1YnMgKGJ1ZiBzdHJlYW0pIG9mZnNldCkpXVxuICAgW28gc10pKSlcbiJ9IHs6c3ltIGJvb2w/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGJvb2w/IFt4XSAob3IgKGluc3RhbmNlPyBqcy9Cb29sZWFuIHgpICh0cnVlPyB4KSAoZmFsc2U/IHgpKSlcbiJ9IHs6c3ltICpzdXBwcmVzcy1yZWFkKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKnN1cHByZXNzLXJlYWQqIGZhbHNlKVxuIn0gezpzeW0gKmRlZmF1bHQtZGF0YS1yZWFkZXItZm4qLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuICpkZWZhdWx0LWRhdGEtcmVhZGVyLWZuKlxuIFwiV2hlbiBubyBkYXRhIHJlYWRlciBpcyBmb3VuZCBmb3IgYSB0YWcgYW5kICpkZWZhdWx0LWRhdGEtcmVhZGVyLWZuKlxcbiAgaXMgbm9uLW5pbCwgaXQgd2lsbCBiZSBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzLCB0aGUgdGFnIGFuZCB0aGUgdmFsdWUuXFxuICBJZiAqZGVmYXVsdC1kYXRhLXJlYWRlci1mbiogaXMgbmlsICh0aGUgZGVmYXVsdCB2YWx1ZSksIGFuIGV4Y2VwdGlvblxcbiAgd2lsbCBiZSB0aHJvd24gZm9yIHRoZSB1bmtub3duIHRhZy5cIlxuIG5pbClcbiJ9IHs6c3ltIHJlYWQsIDptZXRhIHs6ZG9jICJSZWFkcyB0aGUgZmlyc3Qgb2JqZWN0IGZyb20gYW4gSVB1c2hiYWNrUmVhZGVyLlxuICAgUmV0dXJucyB0aGUgb2JqZWN0IHJlYWQuIElmIEVPRiwgdGhyb3dzIGlmIGVvZi1lcnJvcj8gaXMgdHJ1ZS5cbiAgIE90aGVyd2lzZSByZXR1cm5zIHNlbnRpbmVsLiBJZiBubyBzdHJlYW0gaXMgcHJvdmlkZWQsICppbiogd2lsbCBiZSB1c2VkLlxuXG4gICBPcHRzIGlzIGEgcGVyc2lzdGVudCBtYXAgd2l0aCB2YWxpZCBrZXlzOlxuICAgIDpyZWFkLWNvbmQgLSA6YWxsb3cgdG8gcHJvY2VzcyByZWFkZXIgY29uZGl0aW9uYWxzLCBvclxuICAgICAgICAgICAgICAgICA6cHJlc2VydmUgdG8ga2VlcCBhbGwgYnJhbmNoZXNcbiAgICA6ZmVhdHVyZXMgLSBwZXJzaXN0ZW50IHNldCBvZiBmZWF0dXJlIGtleXdvcmRzIGZvciByZWFkZXIgY29uZGl0aW9uYWxzXG4gICAgOmVvZiAtIG9uIGVvZiwgcmV0dXJuIHZhbHVlIHVubGVzcyA6ZW9mdGhyb3csIHRoZW4gdGhyb3cuXG4gICAgICAgICAgIGlmIG5vdCBzcGVjaWZpZWQsIHdpbGwgdGhyb3dcblxuICAgVG8gcmVhZCBkYXRhIHN0cnVjdHVyZXMgb25seSwgdXNlIGNsanMudG9vbHMucmVhZGVyLmVkbi9yZWFkXG5cbiAgIE5vdGUgdGhhdCB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlIG9mIGNsanMudG9vbHMucmVhZGVyL3JlYWQgYW5kXG4gICBjbGpzLnRvb2xzLnJlYWRlci5lZG4vcmVhZCBpcyBub3QgdGhlIHNhbWUgZm9yIGVvZi1oYW5kbGluZyIsIDphcmdsaXN0cyBbW3JlYWRlcl0gW3tlb2YgOmVvZiwgOmFzIG9wdHMsIDpvciB7ZW9mIDplb2Z0aHJvd319IHJlYWRlcl0gW3JlYWRlciBlb2YtZXJyb3I/IHNlbnRpbmVsXV19LCA6c291cmNlICIoZGVmblxuIHJlYWRcbiBcIlJlYWRzIHRoZSBmaXJzdCBvYmplY3QgZnJvbSBhbiBJUHVzaGJhY2tSZWFkZXIuXFxuICAgUmV0dXJucyB0aGUgb2JqZWN0IHJlYWQuIElmIEVPRiwgdGhyb3dzIGlmIGVvZi1lcnJvcj8gaXMgdHJ1ZS5cXG4gICBPdGhlcndpc2UgcmV0dXJucyBzZW50aW5lbC4gSWYgbm8gc3RyZWFtIGlzIHByb3ZpZGVkLCAqaW4qIHdpbGwgYmUgdXNlZC5cXG5cXG4gICBPcHRzIGlzIGEgcGVyc2lzdGVudCBtYXAgd2l0aCB2YWxpZCBrZXlzOlxcbiAgICA6cmVhZC1jb25kIC0gOmFsbG93IHRvIHByb2Nlc3MgcmVhZGVyIGNvbmRpdGlvbmFscywgb3JcXG4gICAgICAgICAgICAgICAgIDpwcmVzZXJ2ZSB0byBrZWVwIGFsbCBicmFuY2hlc1xcbiAgICA6ZmVhdHVyZXMgLSBwZXJzaXN0ZW50IHNldCBvZiBmZWF0dXJlIGtleXdvcmRzIGZvciByZWFkZXIgY29uZGl0aW9uYWxzXFxuICAgIDplb2YgLSBvbiBlb2YsIHJldHVybiB2YWx1ZSB1bmxlc3MgOmVvZnRocm93LCB0aGVuIHRocm93LlxcbiAgICAgICAgICAgaWYgbm90IHNwZWNpZmllZCwgd2lsbCB0aHJvd1xcblxcbiAgIFRvIHJlYWQgZGF0YSBzdHJ1Y3R1cmVzIG9ubHksIHVzZSBjbGpzLnRvb2xzLnJlYWRlci5lZG4vcmVhZFxcblxcbiAgIE5vdGUgdGhhdCB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlIG9mIGNsanMudG9vbHMucmVhZGVyL3JlYWQgYW5kXFxuICAgY2xqcy50b29scy5yZWFkZXIuZWRuL3JlYWQgaXMgbm90IHRoZSBzYW1lIGZvciBlb2YtaGFuZGxpbmdcIlxuIHs6YXJnbGlzdHMgJyhbcmVhZGVyXSBbb3B0cyByZWFkZXJdIFtyZWFkZXIgZW9mLWVycm9yPyBlb2YtdmFsdWVdKX1cbiAoW3JlYWRlcl0gKHJlYWQgcmVhZGVyIHRydWUgbmlsKSlcbiAoW3tlb2YgOmVvZiwgOmFzIG9wdHMsIDpvciB7ZW9mIDplb2Z0aHJvd319IHJlYWRlcl1cbiAgKHJlYWQqIHJlYWRlciAoPSBlb2YgOmVvZnRocm93KSBlb2YgbmlsIG9wdHMgKHRvLWFycmF5IFtdKSkpXG4gKFtyZWFkZXIgZW9mLWVycm9yPyBzZW50aW5lbF1cbiAgKHJlYWQqIHJlYWRlciBlb2YtZXJyb3I/IHNlbnRpbmVsIG5pbCB7fSAodG8tYXJyYXkgW10pKSkpXG4ifSB7OnN5bSBkZWZhdWx0LWRhdGEtcmVhZGVycywgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBkZWZhdWx0LWRhdGEtcmVhZGVyc1xuIFwiRGVmYXVsdCBtYXAgb2YgZGF0YSByZWFkZXIgZnVuY3Rpb25zIHByb3ZpZGVkIGJ5IENsb2p1cmUuXFxuICBNYXkgYmUgb3ZlcnJpZGRlbiBieSBiaW5kaW5nICpkYXRhLXJlYWRlcnMqXCJcbiB7fSlcbiJ9IHs6c3ltICpkYXRhLXJlYWRlcnMqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuICpkYXRhLXJlYWRlcnMqXG4gXCJNYXAgZnJvbSByZWFkZXIgdGFnIHN5bWJvbHMgdG8gZGF0YSByZWFkZXIgVmFycy5cXG4gIFJlYWRlciB0YWdzIHdpdGhvdXQgbmFtZXNwYWNlIHF1YWxpZmllcnMgYXJlIHJlc2VydmVkIGZvciBDbG9qdXJlLlxcbiAgVGhpcyBsaWdodCB2ZXJzaW9uIG9mIHRvb2xzLnJlYWRlciBoYXMgbm8gaW1wbGVtZW50YXRpb24gZm9yIGRlZmF1bHRcXG4gIHJlYWRlciB0YWdzIHN1Y2ggYXMgI2luc3QgYW5kICN1dWlkLlwiXG4ge30pXG4ifSB7OnN5bSAqcmVhZC1kZWxpbSosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpyZWFkLWRlbGltKiBmYWxzZSlcbiJ9IHs6c3ltIHJlc29sdmUtc3ltYm9sLCA6bWV0YSB7OmRvYyAiUmVzb2x2ZSBhIHN5bWJvbCBzIGludG8gaXRzIGZ1bGx5IHF1YWxpZmllZCBuYW1lc3BhY2UgdmVyc2lvbiIsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVzb2x2ZS1zeW1ib2xcbiBcIlJlc29sdmUgYSBzeW1ib2wgcyBpbnRvIGl0cyBmdWxseSBxdWFsaWZpZWQgbmFtZXNwYWNlIHZlcnNpb25cIlxuIFtzXVxuICh0aHJvdyAoZXgtaW5mbyBcInJlc29sdmUtc3ltYm9sIGlzIG5vdCBpbXBsZW1lbnRlZFwiIHs6c3ltIHN9KSkpXG4ifSB7OnN5bSAqYWxpYXMtbWFwKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiAqYWxpYXMtbWFwKlxuIFwiTWFwIGZyb20gbnMgYWxpYXMgdG8gbnMsIGlmIG5vbi1uaWwsIGl0IHdpbGwgYmUgdXNlZCB0byByZXNvbHZlIHJlYWQtdGltZVxcbiAgIG5zIGFsaWFzZXMuXFxuXFxuICAgRGVmYXVsdHMgdG8gbmlsXCJcbiBuaWwpXG4ifSB7OnN5bSByZWFkLXJlZ2V4LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBjaCBvcHRzIHBlbmRpbmctZm9ybXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVhZC1yZWdleFxuIFtyZHIgY2ggb3B0cyBwZW5kaW5nLWZvcm1zXVxuIChsZXRcbiAgW3NiIChTdHJpbmdCdWZmZXIuKV1cbiAgKGxvb3BcbiAgIFtjaCAocmVhZC1jaGFyIHJkcildXG4gICAoaWZcbiAgICAoaWRlbnRpY2FsPyBcXFwiIGNoKVxuICAgIChyZS1wYXR0ZXJuIChzdHIgc2IpKVxuICAgIChpZlxuICAgICAobmlsPyBjaClcbiAgICAgKGVyci90aHJvdy1lb2YtcmVhZGluZyByZHIgOnJlZ2V4IHNiKVxuICAgICAoZG9cbiAgICAgICguYXBwZW5kIHNiIGNoKVxuICAgICAgKHdoZW5cbiAgICAgICAoaWRlbnRpY2FsPyBcXFxcIGNoKVxuICAgICAgIChsZXRcbiAgICAgICAgW2NoIChyZWFkLWNoYXIgcmRyKV1cbiAgICAgICAgKGlmIChuaWw/IGNoKSAoZXJyL3Rocm93LWVvZi1yZWFkaW5nIHJkciA6cmVnZXggc2IpKVxuICAgICAgICAoLmFwcGVuZCBzYiBjaCkpKVxuICAgICAgKHJlY3VyIChyZWFkLWNoYXIgcmRyKSkpKSkpKSlcbiJ9IHs6c3ltIHNiLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBzYiAoU3RyaW5nQnVmZmVyLikpXG4ifSB7OnN5bSByZWFkLXN0cmluZywgOm1ldGEgezpkb2MgIlJlYWRzIG9uZSBvYmplY3QgZnJvbSB0aGUgc3RyaW5nIHMuXG4gICBSZXR1cm5zIG5pbCB3aGVuIHMgaXMgbmlsIG9yIGVtcHR5LlxuXG4gICBUbyByZWFkIGRhdGEgc3RydWN0dXJlcyBvbmx5LCB1c2UgY2xqcy50b29scy5yZWFkZXIuZWRuL3JlYWQtc3RyaW5nXG5cbiAgIE5vdGUgdGhhdCB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlIG9mIGNsanMudG9vbHMucmVhZGVyL3JlYWQtc3RyaW5nIGFuZFxuICAgY2xqcy50b29scy5yZWFkZXIuZWRuL3JlYWQtc3RyaW5nIGlzIG5vdCB0aGUgc2FtZSBmb3IgZW9mLWhhbmRsaW5nIiwgOmFyZ2xpc3RzIFtbc10gW29wdHMgc11dfSwgOnNvdXJjZSAiKGRlZm5cbiByZWFkLXN0cmluZ1xuIFwiUmVhZHMgb25lIG9iamVjdCBmcm9tIHRoZSBzdHJpbmcgcy5cXG4gICBSZXR1cm5zIG5pbCB3aGVuIHMgaXMgbmlsIG9yIGVtcHR5LlxcblxcbiAgIFRvIHJlYWQgZGF0YSBzdHJ1Y3R1cmVzIG9ubHksIHVzZSBjbGpzLnRvb2xzLnJlYWRlci5lZG4vcmVhZC1zdHJpbmdcXG5cXG4gICBOb3RlIHRoYXQgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSBvZiBjbGpzLnRvb2xzLnJlYWRlci9yZWFkLXN0cmluZyBhbmRcXG4gICBjbGpzLnRvb2xzLnJlYWRlci5lZG4vcmVhZC1zdHJpbmcgaXMgbm90IHRoZSBzYW1lIGZvciBlb2YtaGFuZGxpbmdcIlxuIChbc10gKHJlYWQtc3RyaW5nIHt9IHMpKVxuIChbb3B0cyBzXVxuICAod2hlblxuICAgKGFuZCBzIChub3QgKGlkZW50aWNhbD8gcyBcIlwiKSkpXG4gICAocmVhZCBvcHRzIChzdHJpbmctcHVzaC1iYWNrLXJlYWRlciBzKSkpKSlcbiJ9IHs6c3ltIG1hcC1mdW5jLCA6bWV0YSB7OmRvYyAiRGVjaWRlIHdoaWNoIG1hcCB0eXBlIHRvIHVzZSwgYXJyYXktbWFwIGlmIGxlc3MgdGhhbiAxNiBlbGVtZW50cyIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWFwLWZ1bmNcbiBcIkRlY2lkZSB3aGljaCBtYXAgdHlwZSB0byB1c2UsIGFycmF5LW1hcCBpZiBsZXNzIHRoYW4gMTYgZWxlbWVudHNcIlxuIFtjb2xsXVxuIChpZiAoPj0gKGNvdW50IGNvbGwpIDE2KSAnY2xqcy5jb3JlL2hhc2gtbWFwICdjbGpzLmNvcmUvYXJyYXktbWFwKSlcbiJ9KSwgc2FibG9uby51dGlsICh7OnN5bSBqb2luLWNsYXNzZXMsIDptZXRhIHs6ZG9jICJKb2luIHRoZSBgY2xhc3Nlc2Agd2l0aCBhIHdoaXRlc3BhY2UuIiwgOmFyZ2xpc3RzIChbY2xhc3Nlc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBqb2luLWNsYXNzZXNcbiBcIkpvaW4gdGhlIGBjbGFzc2VzYCB3aXRoIGEgd2hpdGVzcGFjZS5cIlxuIFtjbGFzc2VzXVxuICgtPj5cbiAgY2xhc3Nlc1xuICAoaW50b1xuICAgW11cbiAgIChjb21wIChtYXBjYXQgKGZuIFt4XSAoaWYgKHN0cmluZz8geCkgW3hdIChzZXEgeCkpKSkgKHJlbW92ZSBuaWw/KSkpXG4gIChzdHIvam9pbiBcIiBcIikpKVxuIn0gezpzeW0gdG8tc3RyLCA6bWV0YSB7OmRvYyAiQ29udmVydCBhIHZhbHVlIGludG8gYSBzdHJpbmcuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnByb3RvY29sIFRvU3RyaW5nfSB7OnN5bSByZWFjdC1mbiwgOm1ldGEgezpkb2MgIlJldHVybiB0aGUgc3ltYm9sIG9mIGEgZm4gdGhhdCBidWlsZCBhIFJlYWN0IGVsZW1lbnQuICIsIDphcmdsaXN0cyAoW3R5cGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVhY3QtZm5cbiBcIlJldHVybiB0aGUgc3ltYm9sIG9mIGEgZm4gdGhhdCBidWlsZCBhIFJlYWN0IGVsZW1lbnQuIFwiXG4gW3R5cGVdXG4gKGlmXG4gIChjb250YWlucz8gI3s6dGV4dGFyZWEgOmlucHV0IDpzZWxlY3R9IChrZXl3b3JkIHR5cGUpKVxuICAnc2FibG9uby5pbnRlcnByZXRlci9jcmVhdGUtZWxlbWVudFxuICAnanMvUmVhY3QuY3JlYXRlRWxlbWVudCkpXG4ifSB7OnN5bSBjYW1lbC1jYXNlLWtleXMsIDptZXRhIHs6ZG9jICJSZWN1cnNpdmVseSB0cmFuc2Zvcm1zIGFsbCBtYXAga2V5cyBpbnRvIGNhbWVsIGNhc2UuIiwgOmFyZ2xpc3RzIChbbV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjYW1lbC1jYXNlLWtleXNcbiBcIlJlY3Vyc2l2ZWx5IHRyYW5zZm9ybXMgYWxsIG1hcCBrZXlzIGludG8gY2FtZWwgY2FzZS5cIlxuIFttXVxuIChpZlxuICAobWFwPyBtKVxuICAobGV0XG4gICBbbSAoaW50byB7fSAobWFwIChmbiBbW2sgdl1dIFsoY2FtZWwtY2FzZSBrKSB2XSkpIG0pXVxuICAgKGNvbmQtPiBtIChtYXA/ICg6c3R5bGUgbSkpICh1cGRhdGUgOnN0eWxlIGNhbWVsLWNhc2Uta2V5cykpKVxuICBtKSlcbiJ9IHs6c3ltIGVsZW1lbnQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJuIHRydWUgaWYgYHhgIGlzIGFuIEhUTUwgZWxlbWVudC4gVHJ1ZSB3aGVuIGB4YCBpcyBhIHZlY3RvclxuICBhbmQgdGhlIGZpcnN0IGVsZW1lbnQgaXMgYSBrZXl3b3JkLCBlLmcuIGBbOmRpdl1gIG9yIGBbOmRpdiBbOnNwYW4gXCJ4XCJdYC4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGVsZW1lbnQ/XG4gXCJSZXR1cm4gdHJ1ZSBpZiBgeGAgaXMgYW4gSFRNTCBlbGVtZW50LiBUcnVlIHdoZW4gYHhgIGlzIGEgdmVjdG9yXFxuICBhbmQgdGhlIGZpcnN0IGVsZW1lbnQgaXMgYSBrZXl3b3JkLCBlLmcuIGBbOmRpdl1gIG9yIGBbOmRpdiBbOnNwYW4gXFxcInhcXFwiXWAuXCJcbiBbeF1cbiAoYW5kICh2ZWN0b3I/IHgpIChrZXl3b3JkPyAoZmlyc3QgeCkpKSlcbiJ9IHs6c3ltICpiYXNlLXVybCosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpiYXNlLXVybCogbmlsKVxuIn0gezpzeW0gYXMtc3RyLCA6bWV0YSB7OmRvYyAiQ29udmVydHMgaXRzIGFyZ3VtZW50cyBpbnRvIGEgc3RyaW5nIHVzaW5nIHRvLXN0ci4iLCA6YXJnbGlzdHMgKFsmIHhzXSl9LCA6c291cmNlICIoZGVmblxuIGFzLXN0clxuIFwiQ29udmVydHMgaXRzIGFyZ3VtZW50cyBpbnRvIGEgc3RyaW5nIHVzaW5nIHRvLXN0ci5cIlxuIFsmIHhzXVxuIChzdHIvam9pbiAobWFwIHRvLXN0ciB4cykpKVxuIn0gezpzeW0gaHRtbC10by1kb20tYXR0cnMsIDptZXRhIHs6ZG9jICJDb252ZXJ0cyBhbGwgSFRNTCBhdHRyaWJ1dGVzIHRvIHRoZWlyIERPTSBlcXVpdmFsZW50cy4iLCA6YXJnbGlzdHMgKFthdHRyc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBodG1sLXRvLWRvbS1hdHRyc1xuIFwiQ29udmVydHMgYWxsIEhUTUwgYXR0cmlidXRlcyB0byB0aGVpciBET00gZXF1aXZhbGVudHMuXCJcbiBbYXR0cnNdXG4gKHJlbmFtZS1rZXlzXG4gIChjYW1lbC1jYXNlLWtleXMgYXR0cnMpXG4gIHs6Y2xhc3MgOmNsYXNzTmFtZSwgOmZvciA6aHRtbEZvcn0pKVxuIn0gezpzeW0gVG9TdHJpbmcsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzICh0by1zdHIpfSB7OnN5bSBUb1VSSSwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKHRvLXVyaSl9IHs6c3ltIGNhbWVsLWNhc2UsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGNhbWVsIGNhc2UgdmVyc2lvbiBvZiB0aGUga2V5LCBlLmcuIDpodHRwLWVxdWl2IGJlY29tZXMgOmh0dHBFcXVpdi4iLCA6YXJnbGlzdHMgKFtrXSl9LCA6c291cmNlICIoZGVmblxuIGNhbWVsLWNhc2VcbiBcIlJldHVybnMgY2FtZWwgY2FzZSB2ZXJzaW9uIG9mIHRoZSBrZXksIGUuZy4gOmh0dHAtZXF1aXYgYmVjb21lcyA6aHR0cEVxdWl2LlwiXG4gW2tdXG4gKGlmXG4gIChvciAoa2V5d29yZD8gaykgKHN0cmluZz8gaykgKHN5bWJvbD8gaykpXG4gIChsZXRcbiAgIFtbZmlyc3Qtd29yZCAmIHdvcmRzXSAoLnNwbGl0IChuYW1lIGspIFwiLVwiKV1cbiAgIChpZlxuICAgIChvciAoZW1wdHk/IHdvcmRzKSAoPSBcImFyaWFcIiBmaXJzdC13b3JkKSAoPSBcImRhdGFcIiBmaXJzdC13b3JkKSlcbiAgICBrXG4gICAgKC0+XG4gICAgIChtYXAgc3RyL2NhcGl0YWxpemUgd29yZHMpXG4gICAgIChjb25qIGZpcnN0LXdvcmQpXG4gICAgIHN0ci9qb2luXG4gICAgIGtleXdvcmQpKSlcbiAgaykpXG4ifSB7OnN5bSB0by11cmksIDptZXRhIHs6ZG9jICJDb252ZXJ0IGEgdmFsdWUgaW50byBhIFVSSS4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6cHJvdG9jb2wgVG9VUkl9KSwgcGxheS1jbGpjLmdsLnV0aWxzICh7OnN5bSBjcmVhdGUtYnVmZmVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2dhbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gY3JlYXRlLWJ1ZmZlclxuIFtnYW1lXVxuIChnbCBnYW1lICM/KDpjbGogZ2VuQnVmZmVycyA6Y2xqcyBjcmVhdGVCdWZmZXIpKSlcbiJ9IHs6c3ltIGZsb2F0LXNpemUsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIGZsb2F0LXNpemUgNClcbiJ9IHs6c3ltIGNyZWF0ZS1wcm9ncmFtLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2dhbWUgdi1zb3VyY2UgZi1zb3VyY2VdKX0sIDpzb3VyY2UgIihkZWZuXG4gY3JlYXRlLXByb2dyYW1cbiBbZ2FtZSB2LXNvdXJjZSBmLXNvdXJjZV1cbiAobGV0XG4gIFt2ZXJ0ZXgtc2hhZGVyXG4gICAoY3JlYXRlLXNoYWRlciBnYW1lIChnbCBnYW1lIFZFUlRFWF9TSEFERVIpIHYtc291cmNlKVxuICAgZnJhZ21lbnQtc2hhZGVyXG4gICAoY3JlYXRlLXNoYWRlciBnYW1lIChnbCBnYW1lIEZSQUdNRU5UX1NIQURFUikgZi1zb3VyY2UpXG4gICBwcm9ncmFtXG4gICAoZ2wgZ2FtZSBjcmVhdGVQcm9ncmFtKV1cbiAgKGdsIGdhbWUgYXR0YWNoU2hhZGVyIHByb2dyYW0gdmVydGV4LXNoYWRlcilcbiAgKGdsIGdhbWUgYXR0YWNoU2hhZGVyIHByb2dyYW0gZnJhZ21lbnQtc2hhZGVyKVxuICAoZ2wgZ2FtZSBsaW5rUHJvZ3JhbSBwcm9ncmFtKVxuICAoZ2wgZ2FtZSBkZWxldGVTaGFkZXIgdmVydGV4LXNoYWRlcilcbiAgKGdsIGdhbWUgZGVsZXRlU2hhZGVyIGZyYWdtZW50LXNoYWRlcilcbiAgKGlmXG4gICAjPyg6Y2xqICg9IChnbCBnYW1lIFRSVUUpIChnbCBnYW1lIGdldFByb2dyYW1pIHByb2dyYW0gKGdsIGdhbWUgTElOS19TVEFUVVMpKSkgOmNsanMgKGdsIGdhbWUgZ2V0UHJvZ3JhbVBhcmFtZXRlciBwcm9ncmFtIChnbCBnYW1lIExJTktfU1RBVFVTKSkpXG4gICBwcm9ncmFtXG4gICAodGhyb3cgKGV4LWluZm8gKGdsIGdhbWUgZ2V0UHJvZ3JhbUluZm9Mb2cgcHJvZ3JhbSkge30pKSkpKVxuIn0gezpzeW0gbWVyZ2UtYXR0cmlidXRlLW9wdHMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW50aXR5IGF0dHItbmFtZSBvcHRzXSl9LCA6c291cmNlICIoZGVmblxuIG1lcmdlLWF0dHJpYnV0ZS1vcHRzXG4gW2VudGl0eSBhdHRyLW5hbWUgb3B0c11cbiAobGV0XG4gIFt0eXBlLW5hbWUgKGdldC1hdHRyaWJ1dGUtdHlwZSBlbnRpdHkgYXR0ci1uYW1lKV1cbiAgKG1lcmdlIGRlZmF1bHQtb3B0cyAodHlwZS0+YXR0cmlidXRlLW9wdHMgdHlwZS1uYW1lKSBvcHRzKSkpXG4ifSB7OnN5bSBzZXQtYXJyYXktYnVmZmVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2dhbWUgcHJvZ3JhbSBidWZmZXIgYXR0cmliLW5hbWUgZGF0YSB7OmtleXMgW3NpemUgdHlwZSBpdGVyIG5vcm1hbGl6ZSBzdHJpZGUgb2Zmc2V0IGRpdmlzb3JdLCA6YXMgb3B0c31dKX0sIDpzb3VyY2UgIihkZWZuXG4gc2V0LWFycmF5LWJ1ZmZlclxuIFtnYW1lXG4gIHByb2dyYW1cbiAgYnVmZmVyXG4gIGF0dHJpYi1uYW1lXG4gIGRhdGFcbiAgezprZXlzIFtzaXplIHR5cGUgaXRlciBub3JtYWxpemUgc3RyaWRlIG9mZnNldCBkaXZpc29yXSwgOmFzIG9wdHN9XVxuIChsZXRcbiAgW2F0dHJpYi1sb2NhdGlvblxuICAgKGdsIGdhbWUgZ2V0QXR0cmliTG9jYXRpb24gcHJvZ3JhbSBhdHRyaWItbmFtZSlcbiAgIHByZXZpb3VzLWJ1ZmZlclxuICAgKGdsXG4gICAgZ2FtZVxuICAgICM/KDpjbGogZ2V0SW50ZWdlciA6Y2xqcyBnZXRQYXJhbWV0ZXIpXG4gICAgKGdsIGdhbWUgQVJSQVlfQlVGRkVSX0JJTkRJTkcpKVxuICAgdG90YWwtc2l6ZVxuICAgKCogc2l6ZSBpdGVyKV1cbiAgKGdsIGdhbWUgYmluZEJ1ZmZlciAoZ2wgZ2FtZSBBUlJBWV9CVUZGRVIpIGJ1ZmZlcilcbiAgKGdsXG4gICBnYW1lXG4gICBidWZmZXJEYXRhXG4gICAoZ2wgZ2FtZSBBUlJBWV9CVUZGRVIpXG4gICBkYXRhXG4gICAoZ2wgZ2FtZSBTVEFUSUNfRFJBVykpXG4gIChkb3RpbWVzXG4gICBbaSBpdGVyXVxuICAgKGxldFxuICAgIFtsb2MgKCsgYXR0cmliLWxvY2F0aW9uIGkpXVxuICAgIChnbCBnYW1lIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5IGxvYylcbiAgICAoZ2xcbiAgICAgZ2FtZVxuICAgICB2ZXJ0ZXhBdHRyaWJQb2ludGVyXG4gICAgIGxvY1xuICAgICBzaXplXG4gICAgIHR5cGVcbiAgICAgbm9ybWFsaXplXG4gICAgICgqIHRvdGFsLXNpemUgZmxvYXQtc2l6ZSlcbiAgICAgKCogaSBzaXplIGZsb2F0LXNpemUpKVxuICAgIChnbCBnYW1lIHZlcnRleEF0dHJpYkRpdmlzb3IgbG9jIGRpdmlzb3IpKSlcbiAgKGdsIGdhbWUgYmluZEJ1ZmZlciAoZ2wgZ2FtZSBBUlJBWV9CVUZGRVIpIHByZXZpb3VzLWJ1ZmZlcilcbiAgKC8gKCM/KDpjbGogY291bnQgOmNsanMgLi1sZW5ndGgpIGRhdGEpIHRvdGFsLXNpemUpKSlcbiJ9IHs6c3ltIGdldC1hdHRyaWJ1dGUtdHlwZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt7OmtleXMgW3ZlcnRleF19IGF0dHItbmFtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtYXR0cmlidXRlLXR5cGVcbiBbezprZXlzIFt2ZXJ0ZXhdfSBhdHRyLW5hbWVdXG4gKG9yXG4gIChnZXQtaW4gdmVydGV4IFs6aW5wdXRzIGF0dHItbmFtZV0pXG4gIChnZXQtaW4gdmVydGV4IFs6YXR0cmlidXRlcyBhdHRyLW5hbWVdKVxuICAodGhyb3dcbiAgIChleC1pbmZvXG4gICAgXCJZb3UgbXVzdCBkZWZpbmUgdGhlIGF0dHJpYnV0ZSBpbiB5b3VyIHZlcnRleCBzaGFkZXIncyA6aW5wdXRzXCJcbiAgICB7OmF0dHJpYnV0ZS1uYW1lIGF0dHItbmFtZX0pKSkpXG4ifSB7OnN5bSBkZWZhdWx0LW9wdHMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gZGVmYXVsdC1vcHRzXG4gezppdGVyIDEsIDpub3JtYWxpemUgZmFsc2UsIDpzdHJpZGUgMCwgOm9mZnNldCAwLCA6ZGl2aXNvciAwfSlcbiJ9IHs6c3ltIGdldC11bmlmb3JtLXR5cGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbezprZXlzIFt2ZXJ0ZXggZnJhZ21lbnRdfSB1bmktbmFtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtdW5pZm9ybS10eXBlXG4gW3s6a2V5cyBbdmVydGV4IGZyYWdtZW50XX0gdW5pLW5hbWVdXG4gKG9yXG4gIChnZXQtaW4gdmVydGV4IFs6dW5pZm9ybXMgdW5pLW5hbWVdKVxuICAoZ2V0LWluIGZyYWdtZW50IFs6dW5pZm9ybXMgdW5pLW5hbWVdKVxuICAodGhyb3dcbiAgIChleC1pbmZvXG4gICAgXCJZb3UgbXVzdCBkZWZpbmUgdGhlIHVuaWZvcm0gaW4geW91ciB2ZXJ0ZXggb3IgZnJhZ21lbnQgc2hhZGVyJ3MgOnVuaWZvcm1zXCJcbiAgICB7OnVuaWZvcm0tbmFtZSB1bmktbmFtZX0pKSkpXG4ifSB7OnN5bSB0eXBlLT5hdHRyaWJ1dGUtb3B0cywgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiB0eXBlLT5hdHRyaWJ1dGUtb3B0c1xuICd7ZmxvYXQgezpzaXplIDF9LFxuICAgdmVjMiB7OnNpemUgMn0sXG4gICB2ZWMzIHs6c2l6ZSAzfSxcbiAgIHZlYzQgezpzaXplIDR9LFxuICAgbWF0MiB7OnNpemUgNH0sXG4gICBtYXQzIHs6c2l6ZSAzLCA6aXRlciAzfSxcbiAgIG1hdDQgezpzaXplIDQsIDppdGVyIDR9fSlcbiJ9IHs6c3ltIGRpc3NvYy1pbnN0YW5jZS1hdHRyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2luZGV4IGluc3RhbmNlZC1lbnRpdHkgYXR0ci1uYW1lXSl9LCA6c291cmNlICIoZGVmblxuIGRpc3NvYy1pbnN0YW5jZS1hdHRyXG4gW2luZGV4IGluc3RhbmNlZC1lbnRpdHkgYXR0ci1uYW1lXVxuICh1cGRhdGUtaW5cbiAgaW5zdGFuY2VkLWVudGl0eVxuICBbOmF0dHJpYnV0ZXMgYXR0ci1uYW1lXVxuICAoZm5cbiAgIFthdHRyXVxuICAgKGxldFxuICAgIFt7OmtleXMgW3NpemUgaXRlcl19XG4gICAgIChtZXJnZS1hdHRyaWJ1dGUtb3B0cyBpbnN0YW5jZWQtZW50aXR5IGF0dHItbmFtZSBhdHRyKVxuICAgICBkYXRhLWxlblxuICAgICAoKiBzaXplIGl0ZXIpXG4gICAgIG9mZnNldFxuICAgICAoKiBpbmRleCBkYXRhLWxlbildXG4gICAgKHVwZGF0ZVxuICAgICBhdHRyXG4gICAgIDpkYXRhXG4gICAgIChmblxuICAgICAgW2RhdGFdXG4gICAgICAobGV0XG4gICAgICAgW3YxIChzdWJ2ZWMgZGF0YSAwIG9mZnNldCkgdjIgKHN1YnZlYyBkYXRhICgrIG9mZnNldCBkYXRhLWxlbikpXVxuICAgICAgIChpbnRvIChpbnRvIFtdIHYxKSB2MikpKSkpKSkpXG4ifSB7OnN5bSBnZXQtYXR0cmlidXRlLW5hbWVzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ZlcnRleF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtYXR0cmlidXRlLW5hbWVzXG4gW3ZlcnRleF1cbiAob3IgKHNvbWUtPiB2ZXJ0ZXggOmlucHV0cyBrZXlzKSAoc29tZS0+IHZlcnRleCA6YXR0cmlidXRlcyBrZXlzKSkpXG4ifSB7OnN5bSBhc3NvYy1pbnN0YW5jZS1hdHRyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2luZGV4IGVudGl0eSBpbnN0YW5jZWQtZW50aXR5IGF0dHItbmFtZSB1bmktbmFtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhc3NvYy1pbnN0YW5jZS1hdHRyXG4gW2luZGV4IGVudGl0eSBpbnN0YW5jZWQtZW50aXR5IGF0dHItbmFtZSB1bmktbmFtZV1cbiAod2hlblxuICAoOnByb2dyYW0gZW50aXR5KVxuICAodGhyb3dcbiAgIChleC1pbmZvXG4gICAgXCJPbmx5IHVuY29tcGlsZWQgZW50aXRpZXMgY2FuIGJlIGFzc29jJ2VkIHRvIGFuIGluc3RhbmNlZCBlbnRpdHlcIlxuICAgIHt9KSkpXG4gKGxldFxuICBbbmV3LWRhdGFcbiAgIChnZXQtaW4gZW50aXR5IFs6dW5pZm9ybXMgdW5pLW5hbWVdKVxuICAgZGF0YS1sZW5cbiAgIChjb3VudCBuZXctZGF0YSlcbiAgIG9mZnNldFxuICAgKCogaW5kZXggZGF0YS1sZW4pXVxuICAodXBkYXRlLWluXG4gICBpbnN0YW5jZWQtZW50aXR5XG4gICBbOmF0dHJpYnV0ZXMgYXR0ci1uYW1lXVxuICAgKGZuXG4gICAgW2F0dHJdXG4gICAgKGlmXG4gICAgIGF0dHJcbiAgICAgKHVwZGF0ZVxuICAgICAgYXR0clxuICAgICAgOmRhdGFcbiAgICAgIChmblxuICAgICAgIFtvbGQtZGF0YV1cbiAgICAgICAocGVyc2lzdGVudCFcbiAgICAgICAgKHJlZHVjZS1rdlxuICAgICAgICAgKGZuIFtkYXRhIGkgbl0gKGFzc29jISBkYXRhICgrIG9mZnNldCBpKSBuKSlcbiAgICAgICAgICh0cmFuc2llbnQgb2xkLWRhdGEpXG4gICAgICAgICBuZXctZGF0YSkpKSlcbiAgICAgezpkYXRhICh2ZWMgbmV3LWRhdGEpLCA6ZGl2aXNvciAxfSkpKSkpXG4ifSB7OnN5bSBzZXQtaW5kZXgtYnVmZmVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2dhbWUgaW5kZXgtYnVmZmVyIGluZGljZXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gc2V0LWluZGV4LWJ1ZmZlclxuIFtnYW1lIGluZGV4LWJ1ZmZlciBpbmRpY2VzXVxuIChsZXRcbiAgW3ByZXZpb3VzLWluZGV4LWJ1ZmZlclxuICAgKGdsXG4gICAgZ2FtZVxuICAgICM/KDpjbGogZ2V0SW50ZWdlciA6Y2xqcyBnZXRQYXJhbWV0ZXIpXG4gICAgKGdsIGdhbWUgRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORykpXVxuICAoZ2wgZ2FtZSBiaW5kQnVmZmVyIChnbCBnYW1lIEVMRU1FTlRfQVJSQVlfQlVGRkVSKSBpbmRleC1idWZmZXIpXG4gIChnbFxuICAgZ2FtZVxuICAgYnVmZmVyRGF0YVxuICAgKGdsIGdhbWUgRUxFTUVOVF9BUlJBWV9CVUZGRVIpXG4gICBpbmRpY2VzXG4gICAoZ2wgZ2FtZSBTVEFUSUNfRFJBVykpXG4gIChnbFxuICAgZ2FtZVxuICAgYmluZEJ1ZmZlclxuICAgKGdsIGdhbWUgRUxFTUVOVF9BUlJBWV9CVUZGRVIpXG4gICBwcmV2aW91cy1pbmRleC1idWZmZXIpXG4gICgjPyg6Y2xqIGNvdW50IDpjbGpzIC4tbGVuZ3RoKSBpbmRpY2VzKSkpXG4ifSksIGR5bmFkb2MuY29tbW9uICh7OnN5bSB2YXItc3ltLT51cmwsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmVsLXBhdGggc3RhdGljPyB0eXBlIG5zLXN5bSB2YXItc3ltXSl9LCA6c291cmNlICIoZGVmblxuIHZhci1zeW0tPnVybFxuIFtyZWwtcGF0aCBzdGF0aWM/IHR5cGUgbnMtc3ltIHZhci1zeW1dXG4gKHN0clxuICByZWwtcGF0aFxuICAobmFtZSB0eXBlKVxuICBcIi9cIlxuICBucy1zeW1cbiAgXCIvXCJcbiAgKGlmXG4gICBzdGF0aWM/XG4gICAoLT5cbiAgICAoc3RyIHZhci1zeW0pXG4gICAgKHN0ci9yZXBsYWNlIFwiP1wiIFwiJ3EnXCIpXG4gICAgKHN0ci9yZXBsYWNlIFwiIVwiIFwiJ2UnXCIpXG4gICAgKHN0ci9yZXBsYWNlIFwiPFwiIFwiJ2wnXCIpXG4gICAgKHN0ci9yZXBsYWNlIFwiPlwiIFwiJ2cnXCIpXG4gICAgKHN0ci9yZXBsYWNlIFwiOlwiIFwiJ2MnXCIpXG4gICAgKHN0ci9yZXBsYWNlIFwiKlwiIFwiJ2EnXCIpXG4gICAgKHN0ci9yZXBsYWNlIFwiJlwiIFwiJ20nXCIpKVxuICAgIz8oOmNsanMgKGpzL2VuY29kZVVSSUNvbXBvbmVudCAoc3RyIHZhci1zeW0pKSA6Y2xqIChqYXZhLm5ldC5VUkxFbmNvZGVyL2VuY29kZSAoc3RyIHZhci1zeW0pIFwiVVRGLThcIikpKVxuICAod2hlbiBzdGF0aWM/IFwiLmh0bWxcIikpKVxuIn0gezpzeW0gaW5pdC1lZGl0b3IsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcnVtLXN0YXRlXSl9LCA6c291cmNlICIoZGVmblxuIGluaXQtZWRpdG9yXG4gW3J1bS1zdGF0ZV1cbiAobGV0XG4gIFtbc3RhdGVdICg6cnVtL2FyZ3MgcnVtLXN0YXRlKV1cbiAgKHdoZW4tbGV0XG4gICBbaW5pdCAoOmluaXQtZWRpdG9yIHN0YXRlKV1cbiAgIChpbml0IChydW0vZG9tLW5vZGUgcnVtLXN0YXRlKSkpKVxuIHJ1bS1zdGF0ZSlcbiJ9IHs6c3ltIG5zLXN5bS0+dXJsLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JlbC1wYXRoIHN0YXRpYz8gdHlwZSBucy1zeW1dKX0sIDpzb3VyY2UgIihkZWZuXG4gbnMtc3ltLT51cmxcbiBbcmVsLXBhdGggc3RhdGljPyB0eXBlIG5zLXN5bV1cbiAoc3RyIHJlbC1wYXRoIChuYW1lIHR5cGUpIFwiL1wiIG5zLXN5bSAod2hlbiBzdGF0aWM/IFwiLmh0bWxcIikpKVxuIn0gezpzeW0gKnNlc3Npb24sIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpzZXNzaW9uIChhdG9tIGluaXRpYWwtc2Vzc2lvbikpXG4ifSB7OnN5bSBnZXQtc3RhdGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIGdldC1zdGF0ZVxuIFtdXG4gKC0+XG4gIEAqc2Vzc2lvblxuICAoby9xdWVyeS1hbGwgOmR5bmFkb2MuY29tbW9uL2dldC1zdGF0ZSlcbiAgZmlyc3RcbiAgKG9yICh0aHJvdyAoZXgtaW5mbyBcIlN0YXRlIG5vdCBmb3VuZFwiIHt9KSkpKSlcbiJ9IHs6c3ltIHVwZGF0ZS1zZXNzaW9uLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3Nlc3Npb24gaWQgc3RhdGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gdXBkYXRlLXNlc3Npb25cbiBbc2Vzc2lvbiBpZCBzdGF0ZV1cbiAoby9maXJlLXJ1bGVzIChvL2luc2VydCBzZXNzaW9uIGlkIHN0YXRlKSkpXG4ifSB7OnN5bSBpbml0aWFsLXNlc3Npb24sIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gaW5pdGlhbC1zZXNzaW9uXG4gKC0+XG4gIChyZWR1Y2Ugby9hZGQtcnVsZSAoby8tPnNlc3Npb24pIChjb25jYXQgcnVsZXMgY29tcG9uZW50cykpXG4gIChvL2luc2VydFxuICAgOmR5bmFkb2MuY29tbW9uL2NsaWVudFxuICAgezpkeW5hZG9jLmNvbW1vbi9wcm9kPyBmYWxzZSxcbiAgICA6ZHluYWRvYy5jb21tb24vZXhwb3J0LWZpbHRlciBcIlwiLFxuICAgIDpkeW5hZG9jLmNvbW1vbi9jbGpzLXN0YXJ0ZWQ/IGZhbHNlLFxuICAgIDpkeW5hZG9jLmNvbW1vbi9leHBvcnRhYmxlPyBmYWxzZSxcbiAgICA6ZHluYWRvYy5jb21tb24vaW5pdC1lZGl0b3IgbmlsLFxuICAgIDpkeW5hZG9jLmNvbW1vbi9pbml0LWV4YW1wbGUtZWRpdG9yIG5pbCxcbiAgICA6ZHluYWRvYy5jb21tb24vd2F0Y2hlciBuaWx9KVxuICAoby9pbnNlcnRcbiAgIDpkeW5hZG9jLmNvbW1vbi9zZXJ2ZXJcbiAgIHs6ZHluYWRvYy5jb21tb24vbnMtc3ltIG5pbCxcbiAgICA6ZHluYWRvYy5jb21tb24vdmFyLXN5bSBuaWwsXG4gICAgOmR5bmFkb2MuY29tbW9uL3R5cGUgbmlsLFxuICAgIDpkeW5hZG9jLmNvbW1vbi9oaWRlLXNpZGViYXI/IGZhbHNlfSkpKVxuIn0gezpzeW0gcnVsZXMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gcnVsZXNcbiAoby9ydWxlc2V0XG4gIHs6ZHluYWRvYy5jb21tb24vZ2V0LXN0YXRlXG4gICBbOndoYXRcbiAgICBbOmR5bmFkb2MuY29tbW9uL3NlcnZlciA6ZHluYWRvYy5jb21tb24vbnMtc3ltIG5zLXN5bV1cbiAgICBbOmR5bmFkb2MuY29tbW9uL3NlcnZlciA6ZHluYWRvYy5jb21tb24vdmFyLXN5bSB2YXItc3ltXVxuICAgIFs6ZHluYWRvYy5jb21tb24vc2VydmVyIDpkeW5hZG9jLmNvbW1vbi90eXBlIHR5cGVdXG4gICAgWzpkeW5hZG9jLmNvbW1vbi9jbGllbnQgOmR5bmFkb2MuY29tbW9uL3dhdGNoZXIgd2F0Y2hlcl1dfSkpXG4ifSB7OnN5bSBjb21wb25lbnRzLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIGNvbXBvbmVudHNcbiAob3J1bS9ydWxlc2V0XG4gIHthcHAtcm9vdFxuICAgWzp3aGF0XG4gICAgWzpkeW5hZG9jLmNvbW1vbi9zZXJ2ZXIgOmR5bmFkb2MuY29tbW9uL25zLXN5bSBucy1zeW1dXG4gICAgWzpkeW5hZG9jLmNvbW1vbi9zZXJ2ZXIgOmR5bmFkb2MuY29tbW9uL25zLW1ldGEgbnMtbWV0YV1cbiAgICBbOmR5bmFkb2MuY29tbW9uL3NlcnZlciA6ZHluYWRvYy5jb21tb24vdmFyLXN5bSB2YXItc3ltXVxuICAgIFs6ZHluYWRvYy5jb21tb24vc2VydmVyIDpkeW5hZG9jLmNvbW1vbi92YXJzIHZhcnNdXG4gICAgWzpkeW5hZG9jLmNvbW1vbi9jbGllbnRcbiAgICAgOmR5bmFkb2MuY29tbW9uL2NsanMtc3RhcnRlZD9cbiAgICAgY2xqcy1zdGFydGVkP11cbiAgICBbOmR5bmFkb2MuY29tbW9uL2NsaWVudCA6ZHluYWRvYy5jb21tb24vcHJvZD8gcHJvZD9dXG4gICAgWzpkeW5hZG9jLmNvbW1vbi9zZXJ2ZXIgOmR5bmFkb2MuY29tbW9uL3N0YXRpYz8gc3RhdGljP11cbiAgICBbOmR5bmFkb2MuY29tbW9uL3NlcnZlclxuICAgICA6ZHluYWRvYy5jb21tb24vaGlkZS1zaWRlYmFyP1xuICAgICBoaWRlLXNpZGViYXI/XVxuICAgIDp0aGVuXG4gICAgKGxldFxuICAgICBbKnNlc3Npb24gKG9ydW0vcHJvcCldXG4gICAgIFs6ZGl2XG4gICAgICAod2hlbi1ub3QgaGlkZS1zaWRlYmFyPyAoc2lkZWJhciB7fSkpXG4gICAgICAoY29ualxuICAgICAgIChpZlxuICAgICAgICBucy1zeW1cbiAgICAgICAgKGludG9cbiAgICAgICAgIFs6ZGl2XG4gICAgICAgICAgezpjbGFzcyBcInZhcnNcIiwgOnN0eWxlIHs6bGVmdCAoaWYgaGlkZS1zaWRlYmFyPyAwIDMwMCl9fVxuICAgICAgICAgIChleHBvcnQgKnNlc3Npb24pXG4gICAgICAgICAgKHdoZW4tbm90XG4gICAgICAgICAgIHZhci1zeW1cbiAgICAgICAgICAgWzpkaXZcbiAgICAgICAgICAgIFs6Y2VudGVyIFs6aDEgKHN0ciBucy1zeW0pXV1cbiAgICAgICAgICAgICh3aGVuLWxldFxuICAgICAgICAgICAgIFtkb2MgKDpkb2MgbnMtbWV0YSldXG4gICAgICAgICAgICAgWzpkaXYgezpjbGFzcyBcInNlY3Rpb24gZG9jXCJ9IGRvY10pXSldXG4gICAgICAgICAobWFwdiB2YXItPmh0bWwgdmFycykpXG4gICAgICAgIFs6ZGl2IHs6Y2xhc3MgXCJ2YXJzXCJ9IChleHBvcnQgKnNlc3Npb24pXSlcbiAgICAgICAoY29uZFxuICAgICAgICBzdGF0aWM/XG4gICAgICAgIFs6ZGl2XG4gICAgICAgICB7OmNsYXNzIFwiZm9vdGVyXCJ9XG4gICAgICAgICBcIkdlbmVyYXRlZCBieSBcIlxuICAgICAgICAgWzphXG4gICAgICAgICAgezpocmVmIFwiaHR0cHM6Ly9naXRodWIuY29tL29ha2VzL0R5bmFkb2NcIiwgOnRhcmdldCBcIl9ibGFua1wifVxuICAgICAgICAgIFwiRHluYWRvY1wiXV1cbiAgICAgICAgKGFuZCBjbGpzLXN0YXJ0ZWQ/IChub3QgcHJvZD8pKVxuICAgICAgICBbOmRpdlxuICAgICAgICAgezpjbGFzcyBcImZvb3RlclwifVxuICAgICAgICAgXCJUaGlzIGlzIGEgY3VzdG9tIGJ1aWxkIG9mIFwiXG4gICAgICAgICBbOmFcbiAgICAgICAgICB7OmhyZWYgXCJodHRwczovL2dpdGh1Yi5jb20vb2FrZXMvRHluYWRvY1wiLCA6dGFyZ2V0IFwiX2JsYW5rXCJ9XG4gICAgICAgICAgXCJEeW5hZG9jXCJdXSkpXSldLFxuICAgdmFyLT5odG1sXG4gICBbOndoYXRcbiAgICBbOmR5bmFkb2MuY29tbW9uL3NlcnZlciA6ZHluYWRvYy5jb21tb24vbnMtc3ltIG5zLXN5bV1cbiAgICBbOmR5bmFkb2MuY29tbW9uL3NlcnZlciA6ZHluYWRvYy5jb21tb24vdmFyLXN5bSB2YXItc3ltXVxuICAgIFs6ZHluYWRvYy5jb21tb24vc2VydmVyIDpkeW5hZG9jLmNvbW1vbi90eXBlIHR5cGVdXG4gICAgWzpkeW5hZG9jLmNvbW1vbi9zZXJ2ZXIgOmR5bmFkb2MuY29tbW9uL3JlbC1wYXRoIHJlbC1wYXRoXVxuICAgIFs6ZHluYWRvYy5jb21tb24vc2VydmVyIDpkeW5hZG9jLmNvbW1vbi9zdGF0aWM/IHN0YXRpYz9dXG4gICAgOnRoZW5cbiAgICAobGV0XG4gICAgIFt7OmtleXMgW3N5bSBtZXRhIHNvdXJjZSBzcGVjIGV4YW1wbGVzIG1ldGhvZHMgcHJvdG9jb2xdfVxuICAgICAgKG9ydW0vcHJvcClcbiAgICAgIHs6a2V5cyBbYXJnbGlzdHMgZG9jXX1cbiAgICAgIG1ldGFcbiAgICAgIHVybFxuICAgICAgKHZhci1zeW0tPnVybCByZWwtcGF0aCBzdGF0aWM/IHR5cGUgbnMtc3ltIHN5bSldXG4gICAgIFs6ZGl2XG4gICAgICB7OmNsYXNzIFwidmFyLWluZm9cIn1cbiAgICAgIChpbnRvXG4gICAgICAgKGlmIHZhci1zeW0gWzpkaXZdIFs6YSB7OmhyZWYgdXJsfV0pXG4gICAgICAgKGlmXG4gICAgICAgIGFyZ2xpc3RzXG4gICAgICAgIChtYXBcbiAgICAgICAgIChmbiBbYXJnbGlzdF0gWzpoMiAocHItc3RyIChhcHBseSBsaXN0IHN5bSBhcmdsaXN0KSldKVxuICAgICAgICAgYXJnbGlzdHMpXG4gICAgICAgIFtbOmgyIChzdHIgc3ltKV1dKSlcbiAgICAgICh3aGVuXG4gICAgICAgbWV0aG9kc1xuICAgICAgIFs6ZGl2XG4gICAgICAgIHs6Y2xhc3MgXCJzZWN0aW9uXCJ9XG4gICAgICAgIFs6aDMgXCJNZXRob2RzIGluIHRoaXMgcHJvdG9jb2xcIl1cbiAgICAgICAgKGludG9cbiAgICAgICAgIFs6dWxdXG4gICAgICAgICAoZm9yXG4gICAgICAgICAgW21ldGhvZC1zeW0gbWV0aG9kc11cbiAgICAgICAgICBbOmxpXG4gICAgICAgICAgIFs6YVxuICAgICAgICAgICAgezpocmVmXG4gICAgICAgICAgICAgKHZhci1zeW0tPnVybCByZWwtcGF0aCBzdGF0aWM/IHR5cGUgbnMtc3ltIG1ldGhvZC1zeW0pfVxuICAgICAgICAgICAgKHN0ciBtZXRob2Qtc3ltKV1dKSldKVxuICAgICAgKHdoZW5cbiAgICAgICBwcm90b2NvbFxuICAgICAgIFs6ZGl2XG4gICAgICAgIHs6Y2xhc3MgXCJzZWN0aW9uXCJ9XG4gICAgICAgIFs6aDNcbiAgICAgICAgIFwiUGFydCBvZiB0aGUgXCJcbiAgICAgICAgIFs6YVxuICAgICAgICAgIHs6aHJlZiAodmFyLXN5bS0+dXJsIHJlbC1wYXRoIHN0YXRpYz8gdHlwZSBucy1zeW0gcHJvdG9jb2wpfVxuICAgICAgICAgIChzdHIgcHJvdG9jb2wpXVxuICAgICAgICAgXCIgcHJvdG9jb2xcIl1dKVxuICAgICAgKHdoZW4gZG9jIFs6ZGl2IHs6Y2xhc3MgXCJzZWN0aW9uIGRvY1wifSBkb2NdKVxuICAgICAgKHdoZW5cbiAgICAgICAoc2VxIGV4YW1wbGVzKVxuICAgICAgIChpbnRvXG4gICAgICAgIFs6ZGl2XG4gICAgICAgICB7OmNsYXNzIFwic2VjdGlvblwifVxuICAgICAgICAgWzpoMiAoaWYgKD4gKGNvdW50IGV4YW1wbGVzKSAxKSBcIkV4YW1wbGVzXCIgXCJFeGFtcGxlXCIpXV1cbiAgICAgICAgKG1hcHYgZXhhbXBsZS0+aHRtbCBleGFtcGxlcykpKVxuICAgICAgKHdoZW5cbiAgICAgICBzcGVjXG4gICAgICAgKGlmXG4gICAgICAgIHZhci1zeW1cbiAgICAgICAgWzpkaXYgezpjbGFzcyBcInNlY3Rpb25cIn0gWzpoMiBcIlNwZWNcIl0gKHNwZWMtPmh0bWwgc3BlYyldXG4gICAgICAgIChleHBhbmRhYmxlLXNlY3Rpb25cbiAgICAgICAgIHs6bGFiZWwgXCJTcGVjXCIsIDp1cmwgdXJsLCA6Y29udGVudCAoc3BlYy0+aHRtbCBzcGVjKX0pKSlcbiAgICAgICh3aGVuXG4gICAgICAgc291cmNlXG4gICAgICAgKGlmXG4gICAgICAgIHZhci1zeW1cbiAgICAgICAgWzpkaXYgezpjbGFzcyBcInNlY3Rpb25cIn0gWzpoMiBcIlNvdXJjZVwiXSAoc291cmNlLT5odG1sIHNvdXJjZSldXG4gICAgICAgIChleHBhbmRhYmxlLXNlY3Rpb25cbiAgICAgICAgIHs6bGFiZWwgXCJTb3VyY2VcIixcbiAgICAgICAgICA6dXJsIHVybCxcbiAgICAgICAgICA6Y29udGVudCAoc291cmNlLT5odG1sIHNvdXJjZSl9KSkpXSldLFxuICAgZXhhbXBsZS0+aHRtbFxuICAgWzp3aGF0XG4gICAgWzpkeW5hZG9jLmNvbW1vbi9zZXJ2ZXIgOmR5bmFkb2MuY29tbW9uL3R5cGUgdHlwZV1cbiAgICBbOmR5bmFkb2MuY29tbW9uL2NsaWVudCA6ZHluYWRvYy5jb21tb24vcHJvZD8gcHJvZD9dXG4gICAgWzpkeW5hZG9jLmNvbW1vbi9zZXJ2ZXIgOmR5bmFkb2MuY29tbW9uL3N0YXRpYz8gc3RhdGljP11cbiAgICBbOmR5bmFkb2MuY29tbW9uL2NsaWVudFxuICAgICA6ZHluYWRvYy5jb21tb24vaW5pdC1leGFtcGxlLWVkaXRvclxuICAgICBpbml0LWV4YW1wbGUtZWRpdG9yXVxuICAgIDp0aGVuXG4gICAgKGV4YW1wbGUtPmh0bWwqIG8vKm1hdGNoKiAob3J1bS9wcm9wKSldLFxuICAgc291cmNlLT5odG1sXG4gICBbOndoYXRcbiAgICBbOmR5bmFkb2MuY29tbW9uL2NsaWVudCA6ZHluYWRvYy5jb21tb24vaW5pdC1lZGl0b3IgaW5pdC1lZGl0b3JdXG4gICAgOnRoZW5cbiAgICAoc291cmNlLT5odG1sKiBvLyptYXRjaCogKG9ydW0vcHJvcCkpXSxcbiAgIHNwZWMtPmh0bWxcbiAgIFs6d2hhdFxuICAgIFs6ZHluYWRvYy5jb21tb24vY2xpZW50IDpkeW5hZG9jLmNvbW1vbi9pbml0LWVkaXRvciBpbml0LWVkaXRvcl1cbiAgICA6dGhlblxuICAgIChzcGVjLT5odG1sKiBvLyptYXRjaCogKG9ydW0vcHJvcCkpXSxcbiAgIGV4cG9ydFxuICAgWzp3aGF0XG4gICAgWzpkeW5hZG9jLmNvbW1vbi9jbGllbnRcbiAgICAgOmR5bmFkb2MuY29tbW9uL2NsanMtc3RhcnRlZD9cbiAgICAgY2xqcy1zdGFydGVkP11cbiAgICBbOmR5bmFkb2MuY29tbW9uL3NlcnZlciA6ZHluYWRvYy5jb21tb24vc3RhdGljPyBzdGF0aWM/XVxuICAgIDp0aGVuXG4gICAgKGxldFxuICAgICBbKnNlc3Npb24gKG9ydW0vcHJvcCldXG4gICAgICh3aGVuLW5vdFxuICAgICAgc3RhdGljP1xuICAgICAgWzpkaXZcbiAgICAgICB7OnN0eWxlIHs6bWluLWhlaWdodCA3NX19XG4gICAgICAgKHdoZW5cbiAgICAgICAgY2xqcy1zdGFydGVkP1xuICAgICAgICBbOmRpdlxuICAgICAgICAgezpjbGFzcyBcImV4cG9ydFwifVxuICAgICAgICAgKGV4cGFuZGFibGUtc2VjdGlvblxuICAgICAgICAgIHs6bGFiZWwgXCJFeHBvcnRcIixcbiAgICAgICAgICAgOnVybCBcIlwiLFxuICAgICAgICAgICA6Y29udGVudCAoZXhwb3J0LWZvcm0gKnNlc3Npb24pLFxuICAgICAgICAgICA6b24tY2xvc2VcbiAgICAgICAgICAgKGZuKlxuICAgICAgICAgICAgW11cbiAgICAgICAgICAgIChzd2FwIVxuICAgICAgICAgICAgICpzZXNzaW9uXG4gICAgICAgICAgICAgKGZuXG4gICAgICAgICAgICAgIFtzZXNzaW9uXVxuICAgICAgICAgICAgICAoLT5cbiAgICAgICAgICAgICAgIHNlc3Npb25cbiAgICAgICAgICAgICAgIChvL2luc2VydFxuICAgICAgICAgICAgICAgIDpkeW5hZG9jLmNvbW1vbi9jbGllbnRcbiAgICAgICAgICAgICAgICA6ZHluYWRvYy5jb21tb24vZXhwb3J0LWZpbHRlclxuICAgICAgICAgICAgICAgIFwiXCIpXG4gICAgICAgICAgICAgICBvL2ZpcmUtcnVsZXMpKSkpfSldKVxuICAgICAgIFs6ZGl2IHs6c3R5bGUgezpjbGVhciBcInJpZ2h0XCJ9fV1dKSldLFxuICAgZXhwb3J0LWZvcm1cbiAgIFs6d2hhdFxuICAgIFs6ZHluYWRvYy5jb21tb24vc2VydmVyIDpkeW5hZG9jLmNvbW1vbi9ucy1zeW0gbnMtc3ltXVxuICAgIFs6ZHluYWRvYy5jb21tb24vc2VydmVyIDpkeW5hZG9jLmNvbW1vbi9ucy1tZXRhIG5zLW1ldGFdXG4gICAgWzpkeW5hZG9jLmNvbW1vbi9zZXJ2ZXIgOmR5bmFkb2MuY29tbW9uL3Zhci1zeW0gdmFyLXN5bV1cbiAgICBbOmR5bmFkb2MuY29tbW9uL3NlcnZlciA6ZHluYWRvYy5jb21tb24vdHlwZSB0eXBlXVxuICAgIFs6ZHluYWRvYy5jb21tb24vY2xpZW50IDpkeW5hZG9jLmNvbW1vbi9leHBvcnRhYmxlPyBleHBvcnRhYmxlP11cbiAgICBbOmR5bmFkb2MuY29tbW9uL2NsaWVudFxuICAgICA6ZHluYWRvYy5jb21tb24vZXhwb3J0LWZpbHRlclxuICAgICBleHBvcnQtZmlsdGVyXVxuICAgIDp0aGVuXG4gICAgKGxldFxuICAgICBbKnNlc3Npb25cbiAgICAgIChvcnVtL3Byb3ApXG4gICAgICAqb3B0aW9uc1xuICAgICAgKG9ydW0vYXRvbSB7OnBhZ2VzIChpZiBucy1zeW0gOnNpbmdsZSA6bXVsdGlwbGUpfSlcbiAgICAgIHs6a2V5cyBbcGFnZXNdfVxuICAgICAgQCpvcHRpb25zXVxuICAgICBbOmZvcm1cbiAgICAgIHs6YWN0aW9uIFwiL2R5bmFkb2MtZXhwb3J0LnppcFwiLFxuICAgICAgIDptZXRob2QgOmdldCxcbiAgICAgICA6c3R5bGUgezp0ZXh0LWFsaWduIFwibGVmdFwifX1cbiAgICAgIFs6ZGl2XG4gICAgICAgWzpsYWJlbFxuICAgICAgICBbOmlucHV0XG4gICAgICAgICB7OnR5cGUgXCJyYWRpb1wiLFxuICAgICAgICAgIDpuYW1lIFwicGFnZXNcIixcbiAgICAgICAgICA6dmFsdWUgXCJzaW5nbGVcIixcbiAgICAgICAgICA6Y2hlY2tlZCAoPSBwYWdlcyA6c2luZ2xlKSxcbiAgICAgICAgICA6b24tY2xpY2sgKGZuKiBbXSAoc3dhcCEgKm9wdGlvbnMgYXNzb2MgOnBhZ2VzIDpzaW5nbGUpKSxcbiAgICAgICAgICA6ZGlzYWJsZWQgKG5pbD8gbnMtc3ltKX1dXG4gICAgICAgIFwiT25seSB0aGlzIHBhZ2VcIl1dXG4gICAgICBbOmRpdlxuICAgICAgIFs6bGFiZWxcbiAgICAgICAgWzppbnB1dFxuICAgICAgICAgezp0eXBlIFwicmFkaW9cIixcbiAgICAgICAgICA6bmFtZSBcInBhZ2VzXCIsXG4gICAgICAgICAgOnZhbHVlIFwibXVsdGlwbGVcIixcbiAgICAgICAgICA6Y2hlY2tlZCAoPSBwYWdlcyA6bXVsdGlwbGUpLFxuICAgICAgICAgIDpvbi1jbGljayAoZm4qIFtdIChzd2FwISAqb3B0aW9ucyBhc3NvYyA6cGFnZXMgOm11bHRpcGxlKSl9XVxuICAgICAgICBcIk11bHRpcGxlIHBhZ2VzXCJdXVxuICAgICAgWzpkaXZcbiAgICAgICB7OnN0eWxlIHs6bWFyZ2luIDEwLCA6Zm9udC1zaXplIDE0fX1cbiAgICAgICAoY2FzZVxuICAgICAgICBwYWdlc1xuICAgICAgICA6c2luZ2xlXG4gICAgICAgIFs6aVxuICAgICAgICAgXCJPbmx5IHRoZSBjdXJyZW50IHBhZ2Ugd2lsbCBiZSBleHBvcnRlZFwiXG4gICAgICAgICBbOmJyXVxuICAgICAgICAgXCJhbmQgdGhlIHNpZGViYXIgd2lsbCBiZSBoaWRkZW4uXCJdXG4gICAgICAgIDptdWx0aXBsZVxuICAgICAgICBbOmlcbiAgICAgICAgIFwiQWxsIHRoZSBuYW1lc3BhY2VzIGluIHRoZSBzaWRlYmFyXCJcbiAgICAgICAgIFs6YnJdXG4gICAgICAgICBcIndpbGwgYmUgZXhwb3J0ZWQuIFlvdSBjYW4gbmFycm93IHRoZW1cIlxuICAgICAgICAgWzpicl1cbiAgICAgICAgIFwiZG93biB3aXRoIHRoZSBmb2xsb3dpbmcgcmVnZXg6XCJcbiAgICAgICAgIFs6ZGl2XG4gICAgICAgICAgWzppbnB1dFxuICAgICAgICAgICB7OnR5cGUgXCJ0ZXh0XCIsXG4gICAgICAgICAgICA6dmFsdWUgXCJcIixcbiAgICAgICAgICAgIDpwbGFjZWhvbGRlciBcIkV4cG9ydCBmaWx0ZXJcIixcbiAgICAgICAgICAgIDpzdHlsZSB7Om1hcmdpbiA1LCA6Zm9udC1zaXplIDE0fSxcbiAgICAgICAgICAgIDpvbi1jaGFuZ2VcbiAgICAgICAgICAgIChmblxuICAgICAgICAgICAgIFtlXVxuICAgICAgICAgICAgIChzd2FwIVxuICAgICAgICAgICAgICAqc2Vzc2lvblxuICAgICAgICAgICAgICAoZm5cbiAgICAgICAgICAgICAgIFtzZXNzaW9uXVxuICAgICAgICAgICAgICAgKC0+XG4gICAgICAgICAgICAgICAgc2Vzc2lvblxuICAgICAgICAgICAgICAgIChvL2luc2VydFxuICAgICAgICAgICAgICAgICA6ZHluYWRvYy5jb21tb24vY2xpZW50XG4gICAgICAgICAgICAgICAgIDpkeW5hZG9jLmNvbW1vbi9leHBvcnQtZmlsdGVyXG4gICAgICAgICAgICAgICAgICgtPiBlIC4tdGFyZ2V0IC4tdmFsdWUpKVxuICAgICAgICAgICAgICAgIG8vZmlyZS1ydWxlcykpKSl9XV1dKV1cbiAgICAgIFs6aW5wdXRcbiAgICAgICB7OnR5cGUgXCJoaWRkZW5cIixcbiAgICAgICAgOm5hbWUgXCJleHBvcnQtZmlsdGVyXCIsXG4gICAgICAgIDp2YWx1ZSAob3IgZXhwb3J0LWZpbHRlciBcIlwiKX1dXG4gICAgICAod2hlblxuICAgICAgIHR5cGVcbiAgICAgICBbOmlucHV0IHs6dHlwZSBcImhpZGRlblwiLCA6bmFtZSBcInR5cGVcIiwgOnZhbHVlIChuYW1lIHR5cGUpfV0pXG4gICAgICAod2hlblxuICAgICAgIG5zLXN5bVxuICAgICAgIFs6aW5wdXQgezp0eXBlIFwiaGlkZGVuXCIsIDpuYW1lIFwibnMtc3ltXCIsIDp2YWx1ZSAoc3RyIG5zLXN5bSl9XSlcbiAgICAgICh3aGVuXG4gICAgICAgdmFyLXN5bVxuICAgICAgIFs6aW5wdXRcbiAgICAgICAgezp0eXBlIFwiaGlkZGVuXCIsIDpuYW1lIFwidmFyLXN5bVwiLCA6dmFsdWUgKHN0ciB2YXItc3ltKX1dKVxuICAgICAgWzpkaXZcbiAgICAgICB7OnN0eWxlIHs6dGV4dC1hbGlnbiBcImNlbnRlclwifX1cbiAgICAgICBbOmJ1dHRvblxuICAgICAgICB7OnR5cGUgXCJzdWJtaXRcIiwgOmRpc2FibGVkIChub3QgZXhwb3J0YWJsZT8pfVxuICAgICAgICBcIkRvd25sb2FkIHppcCBmaWxlXCJdXVxuICAgICAgKHdoZW4tbm90XG4gICAgICAgZXhwb3J0YWJsZT9cbiAgICAgICBbOmRpdlxuICAgICAgICB7OnN0eWxlIHs6bWFyZ2luIDEwLCA6Zm9udC1zaXplIDE0fX1cbiAgICAgICAgWzpkaXZcbiAgICAgICAgIFs6YiBcIllvdSBidWlsdCBEeW5hZG9jIHdpdGggOm9wdGltaXphdGlvbnMgc2V0IHRvIDpub25lXCJdXVxuICAgICAgICBbOmRpdlxuICAgICAgICAgWzpiIFwiWW91IG11c3Qgc2V0IGl0IHRvIDpzaW1wbGUgaW4gb3JkZXIgdG8gZXhwb3J0XCJdXV0pXSldLFxuICAgc2lkZWJhclxuICAgWzp3aGF0XG4gICAgWzpkeW5hZG9jLmNvbW1vbi9zZXJ2ZXIgOmR5bmFkb2MuY29tbW9uL25zZXMgbnNlc11cbiAgICBbOmR5bmFkb2MuY29tbW9uL2NsaWVudFxuICAgICA6ZHluYWRvYy5jb21tb24vY2xqcy1zdGFydGVkP1xuICAgICBjbGpzLXN0YXJ0ZWQ/XVxuICAgIFs6ZHluYWRvYy5jb21tb24vc2VydmVyIDpkeW5hZG9jLmNvbW1vbi9yZWwtcGF0aCByZWwtcGF0aF1cbiAgICBbOmR5bmFkb2MuY29tbW9uL3NlcnZlciA6ZHluYWRvYy5jb21tb24vc3RhdGljPyBzdGF0aWM/XVxuICAgIFs6ZHluYWRvYy5jb21tb24vc2VydmVyIDpkeW5hZG9jLmNvbW1vbi9oaWRlLWJhZGdlPyBoaWRlLWJhZGdlP11cbiAgICBbOmR5bmFkb2MuY29tbW9uL2NsaWVudFxuICAgICA6ZHluYWRvYy5jb21tb24vZXhwb3J0LWZpbHRlclxuICAgICBleHBvcnQtZmlsdGVyXVxuICAgIDp0aGVuXG4gICAgKGxldFxuICAgICBbKnNlYXJjaFxuICAgICAgKG9ydW0vYXRvbSBcIlwiKVxuICAgICAgc2VhcmNoXG4gICAgICAob3IgKG5vdC1lbXB0eSBleHBvcnQtZmlsdGVyKSBAKnNlYXJjaClcbiAgICAgIHNlYXJjaFxuICAgICAgKHdoZW5cbiAgICAgICAoc2VxIHNlYXJjaClcbiAgICAgICAodHJ5XG4gICAgICAgIChyZS1wYXR0ZXJuIHNlYXJjaClcbiAgICAgICAgKGNhdGNoICM/KDpjbGogRXhjZXB0aW9uIDpjbGpzIGpzL0Vycm9yKSBlIChwcmludGxuIGUpKSkpXVxuICAgICBbOmRpdlxuICAgICAgKHdoZW5cbiAgICAgICBjbGpzLXN0YXJ0ZWQ/XG4gICAgICAgWzppbnB1dFxuICAgICAgICB7OmNsYXNzIFwic2VhcmNoXCIsXG4gICAgICAgICA6b24tY2hhbmdlXG4gICAgICAgICAoZm4qXG4gICAgICAgICAgW3AxX180NTQ3MiNdXG4gICAgICAgICAgKC0+PiBwMV9fNDU0NzIjIC4tdGFyZ2V0IC4tdmFsdWUgKHJlc2V0ISAqc2VhcmNoKSkpLFxuICAgICAgICAgOnBsYWNlaG9sZGVyIFwiU2VhcmNoXCJ9XSlcbiAgICAgIChpbnRvXG4gICAgICAgWzpkaXZcbiAgICAgICAgezpjbGFzcyBcIm5zZXNcIn1cbiAgICAgICAgKHdoZW4gKHNlcSBleHBvcnQtZmlsdGVyKSBbOmkgXCJQYWdlcyB0byBleHBvcnQ6XCJdKV1cbiAgICAgICAoa2VlcFxuICAgICAgICAoZm5cbiAgICAgICAgIFt7OmtleXMgW3N5bSB0eXBlIHZhci1zeW1zXX1dXG4gICAgICAgICAobGV0XG4gICAgICAgICAgW3ZhcnNcbiAgICAgICAgICAgKHdoZW5cbiAgICAgICAgICAgIChhbmQgc2VhcmNoIChlbXB0eT8gZXhwb3J0LWZpbHRlcikpXG4gICAgICAgICAgICAoLT4+XG4gICAgICAgICAgICAgdmFyLXN5bXNcbiAgICAgICAgICAgICAoZmlsdGVyXG4gICAgICAgICAgICAgIChmbiogW3AxX180NTQ3MyNdIChyZS1maW5kIHNlYXJjaCAoc3RyIHAxX180NTQ3MyMpKSkpXG4gICAgICAgICAgICAgKG1hcHZcbiAgICAgICAgICAgICAgKGZuXG4gICAgICAgICAgICAgICBbdmFyLXN5bV1cbiAgICAgICAgICAgICAgIFs6ZGl2XG4gICAgICAgICAgICAgICAgezpjbGFzcyBcInZhclwifVxuICAgICAgICAgICAgICAgIFs6YVxuICAgICAgICAgICAgICAgICB7OmhyZWZcbiAgICAgICAgICAgICAgICAgICh2YXItc3ltLT51cmwgcmVsLXBhdGggc3RhdGljPyB0eXBlIHN5bSB2YXItc3ltKX1cbiAgICAgICAgICAgICAgICAgKHN0ciB2YXItc3ltKV1dKSkpKV1cbiAgICAgICAgICAod2hlblxuICAgICAgICAgICAob3IgKG5pbD8gc2VhcmNoKSAocmUtZmluZCBzZWFyY2ggKHN0ciBzeW0pKSAoc2VxIHZhcnMpKVxuICAgICAgICAgICBbOmRpdlxuICAgICAgICAgICAgKHdoZW5cbiAgICAgICAgICAgICAoYW5kICg9IHR5cGUgOmNsanMpIChub3QgaGlkZS1iYWRnZT8pKVxuICAgICAgICAgICAgIFs6ZGl2IHs6Y2xhc3MgXCJ0YWdcIn0gXCJDTEpTXCJdKVxuICAgICAgICAgICAgWzphXG4gICAgICAgICAgICAgezpocmVmIChucy1zeW0tPnVybCByZWwtcGF0aCBzdGF0aWM/IHR5cGUgc3ltKX1cbiAgICAgICAgICAgICAoc3RyIHN5bSldXG4gICAgICAgICAgICAod2hlbiAoc2VxIHZhcnMpIChpbnRvIFs6ZGl2XSB2YXJzKSldKSkpXG4gICAgICAgIG5zZXMpKV0pXX0pKVxuIn0gezpzeW0gaW5pdC1leGFtcGxlLWVkaXRvciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtydW0tc3RhdGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5pdC1leGFtcGxlLWVkaXRvclxuIFtydW0tc3RhdGVdXG4gKGxldFxuICBbW3N0YXRlIGV4YW1wbGVdICg6cnVtL2FyZ3MgcnVtLXN0YXRlKV1cbiAgKHdoZW4tbGV0XG4gICBbaW5pdCAoOmluaXQtZXhhbXBsZS1lZGl0b3Igc3RhdGUpXVxuICAgKGluaXQgKHJ1bS9kb20tbm9kZSBydW0tc3RhdGUpIGV4YW1wbGUpKSlcbiBydW0tc3RhdGUpXG4ifSksIHBhcmVuLXNvdXAuZG9tICh7OnN5bSB0b3AtbGV2ZWw/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW25vZGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gdG9wLWxldmVsP1xuIFtub2RlXVxuIChib29sZWFuXG4gIChzb21lLT4gbm9kZSAuLXBhcmVudEVsZW1lbnQgLi1jbGFzc0xpc3QgKC5jb250YWlucyBcImNvbnRlbnRcIikpKSlcbiJ9IHs6c3ltIGdldC1zZWxlY3Rpb24sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBvYmplY3RzIHJlbGF0ZWQgdG8gc2VsZWN0aW9uIGZvciB0aGUgZ2l2ZW4gZWxlbWVudC4gSWYgZnVsbC1zZWxlY3Rpb24/IGlzIHRydWUsXG5pdCB3aWxsIHVzZSByYW5neSBpbnN0ZWFkIG9mIHRoZSBuYXRpdmUgc2VsZWN0aW9uIEFQSSBpbiBvcmRlciB0byBnZXQgdGhlIGJlZ2lubmluZyBhbmQgZW5kaW5nXG5vZiB0aGUgc2VsZWN0aW9uIChpdCBpcywgaG93ZXZlciwgbXVjaCBzbG93ZXIpLiIsIDphcmdsaXN0cyAoW2VsZW1lbnQgZnVsbC1zZWxlY3Rpb24/XSl9LCA6c291cmNlICIoZGVmblxuIGdldC1zZWxlY3Rpb25cbiBcIlJldHVybnMgdGhlIG9iamVjdHMgcmVsYXRlZCB0byBzZWxlY3Rpb24gZm9yIHRoZSBnaXZlbiBlbGVtZW50LiBJZiBmdWxsLXNlbGVjdGlvbj8gaXMgdHJ1ZSxcXG5pdCB3aWxsIHVzZSByYW5neSBpbnN0ZWFkIG9mIHRoZSBuYXRpdmUgc2VsZWN0aW9uIEFQSSBpbiBvcmRlciB0byBnZXQgdGhlIGJlZ2lubmluZyBhbmQgZW5kaW5nXFxub2YgdGhlIHNlbGVjdGlvbiAoaXQgaXMsIGhvd2V2ZXIsIG11Y2ggc2xvd2VyKS5cIlxuIFtlbGVtZW50IGZ1bGwtc2VsZWN0aW9uP11cbiB7OmVsZW1lbnQgZWxlbWVudCxcbiAgOmN1cnNvci1wb3NpdGlvblxuICAoY29uZFxuICAgZnVsbC1zZWxlY3Rpb24/XG4gICAobGV0XG4gICAgW3NlbGVjdGlvblxuICAgICAoLmdldFNlbGVjdGlvbiBqcy9yYW5neSlcbiAgICAgcmFuZ2VzXG4gICAgICguc2F2ZUNoYXJhY3RlclJhbmdlcyBzZWxlY3Rpb24gZWxlbWVudCldXG4gICAgKGlmLWxldFxuICAgICBbY2hhci1yYW5nZSAoc29tZS0+IHJhbmdlcyAoYWdldCAwKSAoZ29iai9nZXQgXCJjaGFyYWN0ZXJSYW5nZVwiKSldXG4gICAgIFsoZ29iai9nZXQgY2hhci1yYW5nZSBcInN0YXJ0XCIpIChnb2JqL2dldCBjaGFyLXJhbmdlIFwiZW5kXCIpXVxuICAgICBbMCAwXSkpXG4gICAoPSAwICguLXJhbmdlQ291bnQgKC5nZXRTZWxlY3Rpb24ganMvd2luZG93KSkpXG4gICBbMCAwXVxuICAgOmVsc2VcbiAgIChsZXRcbiAgICBbc2VsZWN0aW9uXG4gICAgICguZ2V0U2VsZWN0aW9uIGpzL3dpbmRvdylcbiAgICAgcmFuZ2VcbiAgICAgKC5nZXRSYW5nZUF0IHNlbGVjdGlvbiAwKVxuICAgICBwcmUtY2FyZXQtcmFuZ2VcbiAgICAgKGRvdG9cbiAgICAgICguY2xvbmVSYW5nZSByYW5nZSlcbiAgICAgICguc2VsZWN0Tm9kZUNvbnRlbnRzIGVsZW1lbnQpXG4gICAgICAoLnNldEVuZCAoLi1lbmRDb250YWluZXIgcmFuZ2UpICguLWVuZE9mZnNldCByYW5nZSkpKVxuICAgICBwb3NcbiAgICAgKC0+IHByZS1jYXJldC1yYW5nZSAudG9TdHJpbmcgKHN0ci9yZXBsYWNlICNcIlxcclwiIFwiXCIpIC4tbGVuZ3RoKV1cbiAgICBbcG9zIHBvc10pKX0pXG4ifSB7OnN5bSBnZXQtY3Vyc29yLXBvc2l0aW9uLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgY3Vyc29yIHBvc2l0aW9uLiIsIDphcmdsaXN0cyAoW2VsZW1lbnQgZnVsbC1zZWxlY3Rpb24/XSl9LCA6c291cmNlICIoZGVmblxuIGdldC1jdXJzb3ItcG9zaXRpb25cbiBcIlJldHVybnMgdGhlIGN1cnNvciBwb3NpdGlvbi5cIlxuIFtlbGVtZW50IGZ1bGwtc2VsZWN0aW9uP11cbiAoLT4gZWxlbWVudCAoZ2V0LXNlbGVjdGlvbiBmdWxsLXNlbGVjdGlvbj8pIDpjdXJzb3ItcG9zaXRpb24pKVxuIn0gezpzeW0gdGV4dC1ub2RlPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtub2RlXSl9LCA6c291cmNlICIoZGVmbiB0ZXh0LW5vZGU/IFtub2RlXSAoPSAzICguLW5vZGVUeXBlIG5vZGUpKSlcbiJ9IHs6c3ltIGdldC1mb2N1c2VkLWZvcm0sIDptZXRhIHt9LCA6c291cmNlICIoZGVmIGdldC1mb2N1c2VkLWZvcm0gKGZuKiBbXSAoZ2V0LWZvY3VzZWQtZWxlbSBcImNvbGxlY3Rpb25cIikpKVxuIn0gezpzeW0gZ2V0LWZvY3VzZWQtdG9wLWxldmVsLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtZm9jdXNlZC10b3AtbGV2ZWxcbiBbXVxuICh3aGVuLWxldFxuICBbbm9kZSAoc29tZS0+IGpzL3Jhbmd5IC5nZXRTZWxlY3Rpb24gLi1hbmNob3JOb2RlKV1cbiAgKGxvb3BcbiAgIFtub2RlIG5vZGVdXG4gICAoaWZcbiAgICAodG9wLWxldmVsPyBub2RlKVxuICAgIG5vZGVcbiAgICAod2hlbi1sZXQgW3BhcmVudCAoLi1wYXJlbnRFbGVtZW50IG5vZGUpXSAocmVjdXIgcGFyZW50KSkpKSkpXG4ifSB7OnN5bSBnZXQtcGFyZW50LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbmVhcmVzdCBwYXJlbnQgd2l0aCB0aGUgZ2l2ZW4gY2xhc3MgbmFtZS4iLCA6YXJnbGlzdHMgKFtub2RlIGNsYXNzLW5hbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LXBhcmVudFxuIFwiUmV0dXJucyB0aGUgbmVhcmVzdCBwYXJlbnQgd2l0aCB0aGUgZ2l2ZW4gY2xhc3MgbmFtZS5cIlxuIFtub2RlIGNsYXNzLW5hbWVdXG4gKGxvb3BcbiAgW25vZGUgbm9kZV1cbiAgKHdoZW4tbGV0XG4gICBbcGFyZW50ICguLXBhcmVudEVsZW1lbnQgbm9kZSldXG4gICAoaWZcbiAgICAoLmNvbnRhaW5zICguLWNsYXNzTGlzdCBwYXJlbnQpIGNsYXNzLW5hbWUpXG4gICAgcGFyZW50XG4gICAgKHJlY3VyIHBhcmVudCkpKSkpXG4ifSB7OnN5bSBjb2xsLW5vZGU/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW25vZGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gY29sbC1ub2RlP1xuIFtub2RlXVxuIChib29sZWFuIChzb21lLT4gbm9kZSAuLWNsYXNzTGlzdCAoLmNvbnRhaW5zIFwiY29sbGVjdGlvblwiKSkpKVxuIn0gezpzeW0gZ2V0LW5lYXJlc3QtbnMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbm9kZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtbmVhcmVzdC1uc1xuIFtub2RlXVxuIChsb29wXG4gIFtub2RlIG5vZGVdXG4gIChpZlxuICAgKHNvbWUtPiBub2RlIC4tY2hpbGROb2RlcyAoLml0ZW0gMSkgLi10ZXh0Q29udGVudCAoPSBcIm5zXCIpKVxuICAgKHNvbWUtPiBub2RlIC4tY2hpbGROb2RlcyAoLml0ZW0gMykgLi10ZXh0Q29udGVudCBzeW1ib2wpXG4gICAod2hlbi1sZXQgW3NpYmxpbmcgKC4tcHJldmlvdXNTaWJsaW5nIG5vZGUpXSAocmVjdXIgc2libGluZykpKSkpXG4ifSB7OnN5bSBpbnNlcnQtdGV4dCEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGV4dF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbnNlcnQtdGV4dCFcbiBbdGV4dF1cbiAobGV0XG4gIFtzZWxlY3Rpb25cbiAgICguZ2V0U2VsZWN0aW9uIGpzL3dpbmRvdylcbiAgIHJhbmdlXG4gICAoLmdldFJhbmdlQXQgc2VsZWN0aW9uIDApXG4gICBub2RlXG4gICAoLmNyZWF0ZVRleHROb2RlIGpzL2RvY3VtZW50IHRleHQpXVxuICAoZG90b1xuICAgcmFuZ2VcbiAgIC5kZWxldGVDb250ZW50c1xuICAgKC5pbnNlcnROb2RlIG5vZGUpXG4gICAoLnNldFN0YXJ0QWZ0ZXIgbm9kZSlcbiAgICguc2V0RW5kQWZ0ZXIgbm9kZSlcbiAgICguY29sbGFwc2UgZmFsc2UpKSkpXG4ifSB7OnN5bSBnZXQtY29tcGxldGlvbi1pbmZvLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtY29tcGxldGlvbi1pbmZvXG4gW11cbiAod2hlbi1sZXRcbiAgW3ByZWZpeC1lbGVtIChnZXQtZm9jdXNlZC1lbGVtIFwic3ltYm9sXCIpXVxuICAobGV0XG4gICBbcG9zXG4gICAgKC0+IHByZWZpeC1lbGVtIChnZXQtY3Vyc29yLXBvc2l0aW9uIGZhbHNlKSBmaXJzdClcbiAgICB0ZXh0XG4gICAgKC4tdGV4dENvbnRlbnQgcHJlZml4LWVsZW0pXG4gICAgcHJlZml4XG4gICAgKHN1YnMgdGV4dCAwIHBvcyldXG4gICAoYXNzb2NcbiAgICAoZ2V0LWNvbXBsZXRpb24tY29udGV4dCAoY291bnQgdGV4dCkgKGNvdW50IHByZWZpeCkpXG4gICAgOnRleHRcbiAgICB0ZXh0XG4gICAgOnByZWZpeFxuICAgIHByZWZpeCkpKSlcbiJ9IHs6c3ltIHNldC1jdXJzb3ItcG9zaXRpb24hLCA6bWV0YSB7OmRvYyAiTW92ZXMgdGhlIGN1cnNvciB0byB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLiIsIDphcmdsaXN0cyAoW2VsZW1lbnQgcG9zaXRpb25dKX0sIDpzb3VyY2UgIihkZWZuXG4gc2V0LWN1cnNvci1wb3NpdGlvbiFcbiBcIk1vdmVzIHRoZSBjdXJzb3IgdG8gdGhlIHNwZWNpZmllZCBwb3NpdGlvbi5cIlxuIFtlbGVtZW50IHBvc2l0aW9uXVxuIChsZXRcbiAgW1tzdGFydC1wb3MgZW5kLXBvc11cbiAgIHBvc2l0aW9uXG4gICBtYXgtbGVuZ3RoXG4gICAoLT4gZWxlbWVudCAuLXRleHRDb250ZW50IGNvdW50KVxuICAgc2VsZWN0aW9uXG4gICAoLmdldFNlbGVjdGlvbiBqcy9yYW5neSlcbiAgIGNoYXItcmFuZ2VcbiAgICNqcyB7OnN0YXJ0IHN0YXJ0LXBvcywgOmVuZCBlbmQtcG9zfVxuICAgcmFuZ2VcbiAgICNqcyB7OmNoYXJhY3RlclJhbmdlIGNoYXItcmFuZ2UsIDpiYWNrd2FyZCBmYWxzZSwgOmNoYXJhY3Rlck9wdGlvbnMgbmlsfVxuICAgcmFuZ2VzXG4gICAoYXJyYXkgcmFuZ2UpXVxuICAoLnJlc3RvcmVDaGFyYWN0ZXJSYW5nZXMgc2VsZWN0aW9uIGVsZW1lbnQgcmFuZ2VzKSkpXG4ifSB7OnN5bSBnZXQtZm9jdXNlZC1lbGVtLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2NsYXNzLW5hbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LWZvY3VzZWQtZWxlbVxuIFtjbGFzcy1uYW1lXVxuIChzb21lLT4ganMvcmFuZ3kgLmdldFNlbGVjdGlvbiAuLWFuY2hvck5vZGUgKGdldC1wYXJlbnQgY2xhc3MtbmFtZSkpKVxuIn0gezpzeW0gZXJyb3Itbm9kZT8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbm9kZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBlcnJvci1ub2RlP1xuIFtub2RlXVxuIChib29sZWFuIChzb21lLT4gbm9kZSAuLWNsYXNzTGlzdCAoLmNvbnRhaW5zIFwiZXJyb3JcIikpKSlcbiJ9IHs6c3ltIGdldC1jb21wbGV0aW9uLWNvbnRleHQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3ltYm9sLWxlbmd0aCBjdXJzb3Itb2Zmc2V0XSl9LCA6c291cmNlICIoZGVmblxuIGdldC1jb21wbGV0aW9uLWNvbnRleHRcbiBbc3ltYm9sLWxlbmd0aCBjdXJzb3Itb2Zmc2V0XVxuICh3aGVuLWxldFxuICBbdG9wLWxldmVsLWVsZW0gKGdldC1mb2N1c2VkLXRvcC1sZXZlbCldXG4gIChsZXRcbiAgIFtwb3NcbiAgICAoLT4gdG9wLWxldmVsLWVsZW0gKGdldC1jdXJzb3ItcG9zaXRpb24gZmFsc2UpIGZpcnN0KVxuICAgIHByZWZpeC1zdGFydFxuICAgICgtIHBvcyBjdXJzb3Itb2Zmc2V0KVxuICAgIHRleHRcbiAgICAoLi10ZXh0Q29udGVudCB0b3AtbGV2ZWwtZWxlbSldXG4gICB7Om5zIChnZXQtbmVhcmVzdC1ucyB0b3AtbGV2ZWwtZWxlbSksXG4gICAgOmNvbnRleHQtYmVmb3JlIChzdWJzIHRleHQgMCBwcmVmaXgtc3RhcnQpLFxuICAgIDpjb250ZXh0LWFmdGVyIChzdWJzIHRleHQgKCsgcHJlZml4LXN0YXJ0IHN5bWJvbC1sZW5ndGgpKSxcbiAgICA6c3RhcnQtcG9zaXRpb24gcHJlZml4LXN0YXJ0fSkpKVxuIn0gezpzeW0gY29tbW9uLWFuY2VzdG9yLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgY29tbW9uIGFuY2VzdG9yIG9mIHRoZSBnaXZlbiBub2Rlcy4iLCA6YXJnbGlzdHMgKFtmaXJzdC1ub2RlIHNlY29uZC1ub2RlXSl9LCA6c291cmNlICIoZGVmblxuIGNvbW1vbi1hbmNlc3RvclxuIFwiUmV0dXJucyB0aGUgY29tbW9uIGFuY2VzdG9yIG9mIHRoZSBnaXZlbiBub2Rlcy5cIlxuIFtmaXJzdC1ub2RlIHNlY29uZC1ub2RlXVxuIChsZXRcbiAgW2ZpcnN0LXBhcmVudFxuICAgKGZpcnN0IChnZXQtcGFyZW50cyBmaXJzdC1ub2RlIFwiY29sbGVjdGlvblwiKSlcbiAgIHNlY29uZC1wYXJlbnRcbiAgIChmaXJzdCAoZ2V0LXBhcmVudHMgc2Vjb25kLW5vZGUgXCJjb2xsZWN0aW9uXCIpKV1cbiAgKGNvbmRcbiAgIChhbmQgZmlyc3QtcGFyZW50IHNlY29uZC1wYXJlbnQgKD0gZmlyc3QtcGFyZW50IHNlY29uZC1wYXJlbnQpKVxuICAgZmlyc3QtcGFyZW50XG4gICAoYW5kXG4gICAgKD0gZmlyc3Qtbm9kZSBzZWNvbmQtbm9kZSlcbiAgICAodGV4dC1ub2RlPyBmaXJzdC1ub2RlKVxuICAgICh0b3AtbGV2ZWw/IGZpcnN0LW5vZGUpKVxuICAgZmlyc3Qtbm9kZSkpKVxuIn0gezpzeW0gZ2V0LXBhcmVudHMsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGFsbCB0aGUgcGFyZW50cyB3aXRoIHRoZSBnaXZlbiBjbGFzcyBuYW1lLiIsIDphcmdsaXN0cyAoW25vZGUgY2xhc3MtbmFtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtcGFyZW50c1xuIFwiUmV0dXJucyBhbGwgdGhlIHBhcmVudHMgd2l0aCB0aGUgZ2l2ZW4gY2xhc3MgbmFtZS5cIlxuIFtub2RlIGNsYXNzLW5hbWVdXG4gKGxvb3BcbiAgW25vZGUgbm9kZSBlbGVtcyAnKCldXG4gIChpZi1sZXRcbiAgIFtwYXJlbnQgKGdldC1wYXJlbnQgbm9kZSBjbGFzcy1uYW1lKV1cbiAgIChyZWN1ciBwYXJlbnQgKGNvbmogZWxlbXMgcGFyZW50KSlcbiAgIGVsZW1zKSkpXG4ifSB7OnN5bSBub2RlPywgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgbm9kZT8gKGZuKiBbcDFfXzQ1MDMxI10gKGluc3RhbmNlPyBqcy9Ob2RlIHAxX180NTAzMSMpKSlcbiJ9IHs6c3ltIHNjcm9sbC10by1uZWFyZXN0LWVsZW0sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIHNjcm9sbC10by1uZWFyZXN0LWVsZW1cbiBbXVxuIChzb21lLT5cbiAganMvcmFuZ3lcbiAgLmdldFNlbGVjdGlvblxuICAuLWFuY2hvck5vZGVcbiAgLi1wYXJlbnRFbGVtZW50XG4gICguc2Nyb2xsSW50b1ZpZXdcbiAgICNqcyB7OmJlaGF2aW9yIFwiYXV0b1wiLCA6YmxvY2sgXCJuZWFyZXN0XCIsIDppbmxpbmUgXCJuZWFyZXN0XCJ9KSkpXG4ifSksIG9ha2NsanMudG9vbHMucmVhZGVyLmltcGwuZXJyb3JzICh7OnN5bSB0aHJvdy1iYWQtZGlzcGF0Y2gsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGNoXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWJhZC1kaXNwYXRjaFxuIFtyZHIgY2hdXG4gKHJlYWRlci1lcnJvciByZHIgXCJObyBkaXNwYXRjaCBtYWNybyBmb3IgXCIgY2ggXCIuXCIpKVxuIn0gezpzeW0gdGhyb3ctaW52YWxpZC11bmljb2RlLWVzY2FwZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgY2hdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctaW52YWxpZC11bmljb2RlLWVzY2FwZVxuIFtyZHIgY2hdXG4gKHJlYWRlci1lcnJvciByZHIgXCJJbnZhbGlkIHVuaWNvZGUgZXNjYXBlOiBcXFxcdVwiIGNoIFwiLlwiKSlcbiJ9IHs6c3ltIHRocm93LWR1cC1rZXlzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBraW5kIGtzXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWR1cC1rZXlzXG4gW3JkciBraW5kIGtzXVxuIChyZWFkZXItZXJyb3JcbiAgcmRyXG4gIChkdXBsaWNhdGUta2V5cy1lcnJvclxuICAgKHN0ciAocy9jYXBpdGFsaXplIChuYW1lIGtpbmQpKSBcIiBsaXRlcmFsIGNvbnRhaW5zIGR1cGxpY2F0ZSBrZXlcIilcbiAgIGtzKSkpXG4ifSB7OnN5bSB0aHJvdy1iYWQtbnMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIG5zLW5hbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctYmFkLW5zXG4gW3JkciBucy1uYW1lXVxuIChyZWFkZXItZXJyb3JcbiAgcmRyXG4gIFwiSW52YWxpZCB2YWx1ZSB1c2VkIGFzIG5hbWVzcGFjZSBpbiBuYW1lc3BhY2VkIG1hcDogXCJcbiAgbnMtbmFtZVxuICBcIi5cIikpXG4ifSB7OnN5bSB0aHJvdy11bmtub3duLXJlYWRlci10YWcsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIHRhZ10pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy11bmtub3duLXJlYWRlci10YWdcbiBbcmRyIHRhZ11cbiAocmVhZGVyLWVycm9yIHJkciBcIk5vIHJlYWRlciBmdW5jdGlvbiBmb3IgdGFnIFwiIChpL2luc3BlY3QgdGFnKSBcIi5cIikpXG4ifSB7OnN5bSB0aHJvdy1lb2YtYXQtZGlzcGF0Y2gsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWVvZi1hdC1kaXNwYXRjaFxuIFtyZHJdXG4gKGVvZi1lcnJvciByZHIgXCJVbmV4cGVjdGVkIEVPRiB3aGlsZSByZWFkaW5nIGRpc3BhdGNoIGNoYXJhY3Rlci5cIikpXG4ifSB7OnN5bSB0aHJvdy1iYWQtbWV0YWRhdGEtdGFyZ2V0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciB0YXJnZXRdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctYmFkLW1ldGFkYXRhLXRhcmdldFxuIFtyZHIgdGFyZ2V0XVxuIChyZWFkZXItZXJyb3JcbiAgcmRyXG4gIFwiTWV0YWRhdGEgY2FuIG5vdCBiZSBhcHBsaWVkIHRvIFwiXG4gIChpL2luc3BlY3QgdGFyZ2V0KVxuICBcIi4gXCJcbiAgXCJNZXRhZGF0YSBjYW4gb25seSBiZSBhcHBsaWVkIHRvIElNZXRhcy5cIikpXG4ifSB7OnN5bSB0aHJvdy1pbnZhbGlkLW51bWJlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgdG9rZW5dKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctaW52YWxpZC1udW1iZXJcbiBbcmRyIHRva2VuXVxuIChyZWFkZXItZXJyb3IgcmRyIFwiSW52YWxpZCBudW1iZXI6IFwiIHRva2VuIFwiLlwiKSlcbiJ9IHs6c3ltIHJlYWRlci1lcnJvciwgOm1ldGEgezpkb2MgIlRocm93cyBhbiBFeGNlcHRpb25JbmZvIHdpdGggdGhlIGdpdmVuIG1lc3NhZ2UuXG4gICBJZiByZHIgaXMgYW4gSW5kZXhpbmdSZWFkZXIsIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgY29sdW1uIGFuZCBsaW5lIG51bWJlciBpcyBwcm92aWRlZCIsIDphcmdsaXN0cyAoW3JkciAmIG1zZ3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVhZGVyLWVycm9yXG4gXCJUaHJvd3MgYW4gRXhjZXB0aW9uSW5mbyB3aXRoIHRoZSBnaXZlbiBtZXNzYWdlLlxcbiAgIElmIHJkciBpcyBhbiBJbmRleGluZ1JlYWRlciwgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBjb2x1bW4gYW5kIGxpbmUgbnVtYmVyIGlzIHByb3ZpZGVkXCJcbiBbcmRyICYgbXNnc11cbiAodGhyb3ctZXggcmRyIDpyZWFkZXItZXJyb3IgKGFwcGx5IHN0ciBtc2dzKSkpXG4ifSB7OnN5bSB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtbGl0ZXJhbCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgdG9rZW5dKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctaW52YWxpZC11bmljb2RlLWxpdGVyYWxcbiBbcmRyIHRva2VuXVxuICh0aHJvd1xuICAoaWxsZWdhbC1hcmctZXJyb3IgcmRyIFwiSW52YWxpZCB1bmljb2RlIGxpdGVyYWw6IFxcXFxcIiB0b2tlbiBcIi5cIikpKVxuIn0gezpzeW0gdGhyb3ctbnMtbWFwLW5vLW1hcCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgbnMtbmFtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1ucy1tYXAtbm8tbWFwXG4gW3JkciBucy1uYW1lXVxuIChyZWFkZXItZXJyb3JcbiAgcmRyXG4gIFwiTmFtZXNwYWNlZCBtYXAgd2l0aCBuYW1lc3BhY2UgXCJcbiAgbnMtbmFtZVxuICBcIiBkb2VzIG5vdCBzcGVjaWZ5IGEgbWFwLlwiKSlcbiJ9IHs6c3ltIHRocm93LXVuc3VwcG9ydGVkLWNoYXJhY3RlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgdG9rZW5dKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctdW5zdXBwb3J0ZWQtY2hhcmFjdGVyXG4gW3JkciB0b2tlbl1cbiAocmVhZGVyLWVycm9yIHJkciBcIlVuc3VwcG9ydGVkIGNoYXJhY3RlcjogXCIgdG9rZW4gXCIuXCIpKVxuIn0gezpzeW0gdGhyb3ctZmVhdHVyZS1ub3Qta2V5d29yZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgZmVhdHVyZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1mZWF0dXJlLW5vdC1rZXl3b3JkXG4gW3JkciBmZWF0dXJlXVxuIChyZWFkZXItZXJyb3JcbiAgcmRyXG4gIFwiRmVhdHVyZSBjYW5ub3QgYmUgXCJcbiAgKGkvaW5zcGVjdCBmZWF0dXJlKVxuICBcIiBGZWF0dXJlcyBtdXN0IGJlIGtleXdvcmRzLlwiKSlcbiJ9IHs6c3ltIHRocm93LWVvZi1kZWxpbWl0ZWQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbcmRyIGtpbmQgY29sdW1uIGxpbmVdIFtyZHIga2luZCBsaW5lIGNvbHVtbiBuXV19LCA6c291cmNlICIoZGVmblxuIHRocm93LWVvZi1kZWxpbWl0ZWRcbiAoW3JkciBraW5kIGNvbHVtbiBsaW5lXVxuICAodGhyb3ctZW9mLWRlbGltaXRlZCByZHIga2luZCBsaW5lIGNvbHVtbiBuaWwpKVxuIChbcmRyIGtpbmQgbGluZSBjb2x1bW4gbl1cbiAgKGVvZi1lcnJvclxuICAgcmRyXG4gICBcIlVuZXhwZWN0ZWQgRU9GIHdoaWxlIHJlYWRpbmcgXCJcbiAgIChpZiBuIChzdHIgXCJpdGVtIFwiIG4gXCIgb2YgXCIpKVxuICAgKG5hbWUga2luZClcbiAgIChpZiBsaW5lIChzdHIgXCIsIHN0YXJ0aW5nIGF0IGxpbmUgXCIgbGluZSBcIiBhbmQgY29sdW1uIFwiIGNvbHVtbikpXG4gICBcIi5cIikpKVxuIn0gezpzeW0gdGhyb3ctZW9mLWluLWNoYXJhY3RlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHJdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctZW9mLWluLWNoYXJhY3RlclxuIFtyZHJdXG4gKGVvZi1lcnJvciByZHIgXCJVbmV4cGVjdGVkIEVPRiB3aGlsZSByZWFkaW5nIGNoYXJhY3Rlci5cIikpXG4ifSB7OnN5bSB0aHJvdy1iYWQtY2hhciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIga2luZCBjaF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1iYWQtY2hhclxuIFtyZHIga2luZCBjaF1cbiAocmVhZGVyLWVycm9yXG4gIHJkclxuICBcIkludmFsaWQgY2hhcmFjdGVyOiBcIlxuICBjaFxuICBcIiBmb3VuZCB3aGlsZSByZWFkaW5nIFwiXG4gIChuYW1lIGtpbmQpXG4gIFwiLlwiKSlcbiJ9IHs6c3ltIGVvZi1lcnJvciwgOm1ldGEgezpkb2MgIlRocm93cyBhbiBFeGNlcHRpb25JbmZvIHdpdGggdGhlIGdpdmVuIG1lc3NhZ2UuXG4gICBJZiByZHIgaXMgYW4gSW5kZXhpbmdSZWFkZXIsIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgY29sdW1uIGFuZCBsaW5lIG51bWJlciBpcyBwcm92aWRlZCIsIDphcmdsaXN0cyAoW3JkciAmIG1zZ3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gZW9mLWVycm9yXG4gXCJUaHJvd3MgYW4gRXhjZXB0aW9uSW5mbyB3aXRoIHRoZSBnaXZlbiBtZXNzYWdlLlxcbiAgIElmIHJkciBpcyBhbiBJbmRleGluZ1JlYWRlciwgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBjb2x1bW4gYW5kIGxpbmUgbnVtYmVyIGlzIHByb3ZpZGVkXCJcbiBbcmRyICYgbXNnc11cbiAodGhyb3ctZXggcmRyIDplb2YgKGFwcGx5IHN0ciBtc2dzKSkpXG4ifSB7OnN5bSB0aHJvdy1iYWQtbWV0YWRhdGEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIHhdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctYmFkLW1ldGFkYXRhXG4gW3JkciB4XVxuIChyZWFkZXItZXJyb3JcbiAgcmRyXG4gIFwiTWV0YWRhdGEgY2Fubm90IGJlIFwiXG4gIChpL2luc3BlY3QgeClcbiAgXCIuIE1ldGFkYXRhIG11c3QgYmUgYSBTeW1ib2wsIEtleXdvcmQsIFN0cmluZyBvciBNYXAuXCIpKVxuIn0gezpzeW0gdGhyb3ctZW9mLXJlYWRpbmcsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGtpbmQgJiBzdGFydF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1lb2YtcmVhZGluZ1xuIFtyZHIga2luZCAmIHN0YXJ0XVxuIChsZXRcbiAgW2luaXQgKGNhc2Uga2luZCA6cmVnZXggXCIjXFxcIlwiIDpzdHJpbmcgXFxcIildXG4gIChlb2YtZXJyb3JcbiAgIHJkclxuICAgXCJVbmV4cGVjdGVkIEVPRiByZWFkaW5nIFwiXG4gICAobmFtZSBraW5kKVxuICAgXCIgc3RhcnRpbmcgXCJcbiAgIChhcHBseSBzdHIgaW5pdCBzdGFydClcbiAgIFwiLlwiKSkpXG4ifSB7OnN5bSB0aHJvdy1lb2YtZXJyb3IsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGxpbmVdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctZW9mLWVycm9yXG4gW3JkciBsaW5lXVxuIChpZlxuICBsaW5lXG4gIChlb2YtZXJyb3IgcmRyIFwiRU9GIHdoaWxlIHJlYWRpbmcsIHN0YXJ0aW5nIGF0IGxpbmUgXCIgbGluZSBcIi5cIilcbiAgKGVvZi1lcnJvciByZHIgXCJFT0Ygd2hpbGUgcmVhZGluZy5cIikpKVxuIn0gezpzeW0gaWxsZWdhbC1hcmctZXJyb3IsIDptZXRhIHs6ZG9jICJUaHJvd3MgYW4gRXhjZXB0aW9uSW5mbyB3aXRoIHRoZSBnaXZlbiBtZXNzYWdlLlxuICAgSWYgcmRyIGlzIGFuIEluZGV4aW5nUmVhZGVyLCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGNvbHVtbiBhbmQgbGluZSBudW1iZXIgaXMgcHJvdmlkZWQiLCA6YXJnbGlzdHMgKFtyZHIgJiBtc2dzXSl9LCA6c291cmNlICIoZGVmblxuIGlsbGVnYWwtYXJnLWVycm9yXG4gXCJUaHJvd3MgYW4gRXhjZXB0aW9uSW5mbyB3aXRoIHRoZSBnaXZlbiBtZXNzYWdlLlxcbiAgIElmIHJkciBpcyBhbiBJbmRleGluZ1JlYWRlciwgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBjb2x1bW4gYW5kIGxpbmUgbnVtYmVyIGlzIHByb3ZpZGVkXCJcbiBbcmRyICYgbXNnc11cbiAodGhyb3ctZXggcmRyIDppbGxlZ2FsLWFyZ3VtZW50IChhcHBseSBzdHIgbXNncykpKVxuIn0gezpzeW0gdGhyb3ctaW52YWxpZC1vY3RhbC1sZW4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIHRva2VuXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWludmFsaWQtb2N0YWwtbGVuXG4gW3JkciB0b2tlbl1cbiAocmVhZGVyLWVycm9yXG4gIHJkclxuICBcIkludmFsaWQgb2N0YWwgZXNjYXBlIHNlcXVlbmNlIGluIGEgY2hhcmFjdGVyIGxpdGVyYWw6XCJcbiAgdG9rZW5cbiAgXCIuIE9jdGFsIGVzY2FwZSBzZXF1ZW5jZXMgbXVzdCBiZSAzIG9yIGZld2VyIGRpZ2l0cy5cIikpXG4ifSB7OnN5bSB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtZGlnaXQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGNoXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWludmFsaWQtdW5pY29kZS1kaWdpdFxuIFtyZHIgY2hdXG4gKGlsbGVnYWwtYXJnLWVycm9yIHJkciBcIkludmFsaWQgZGlnaXQgXCIgY2ggXCIgaW4gdW5pY29kZSBjaGFyYWN0ZXIuXCIpKVxuIn0gezpzeW0gdGhyb3ctaW52YWxpZC11bmljb2RlLWRpZ2l0LWluLXRva2VuLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBjaCB0b2tlbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtZGlnaXQtaW4tdG9rZW5cbiBbcmRyIGNoIHRva2VuXVxuIChpbGxlZ2FsLWFyZy1lcnJvclxuICByZHJcbiAgXCJJbnZhbGlkIGRpZ2l0IFwiXG4gIGNoXG4gIFwiIGluIHVuaWNvZGUgY2hhcmFjdGVyIFxcXFxcIlxuICB0b2tlblxuICBcIi5cIikpXG4ifSB7OnN5bSB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtbGVuLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBhY3R1YWwgZXhwZWN0ZWRdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctaW52YWxpZC11bmljb2RlLWxlblxuIFtyZHIgYWN0dWFsIGV4cGVjdGVkXVxuIChpbGxlZ2FsLWFyZy1lcnJvclxuICByZHJcbiAgXCJJbnZhbGlkIHVuaWNvZGUgbGl0ZXJhbC4gVW5pY29kZSBsaXRlcmFscyBzaG91bGQgYmUgXCJcbiAgZXhwZWN0ZWRcbiAgXCJjaGFyYWN0ZXJzIGxvbmcuICBcIlxuICBcInZhbHVlIHN1cHBsZWQgaXMgXCJcbiAgYWN0dWFsXG4gIFwiY2hhcmFjdGVycyBsb25nLlwiKSlcbiJ9IHs6c3ltIHRocm93LXNpbmdsZS1jb2xvbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHJdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctc2luZ2xlLWNvbG9uXG4gW3Jkcl1cbiAocmVhZGVyLWVycm9yIHJkciBcIkEgc2luZ2xlIGNvbG9uIGlzIG5vdCBhIHZhbGlkIGtleXdvcmQuXCIpKVxuIn0gezpzeW0gdGhyb3ctb2RkLW1hcCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgbGluZSBjb2wgZWxlbWVudHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctb2RkLW1hcFxuIFtyZHIgbGluZSBjb2wgZWxlbWVudHNdXG4gKHJlYWRlci1lcnJvclxuICByZHJcbiAgXCJUaGUgbWFwIGxpdGVyYWwgc3RhcnRpbmcgd2l0aCBcIlxuICAoaS9pbnNwZWN0IChmaXJzdCBlbGVtZW50cykpXG4gIChpZiBsaW5lIChzdHIgXCIgb24gbGluZSBcIiBsaW5lIFwiIGNvbHVtbiBcIiBjb2wpKVxuICBcIiBjb250YWlucyBcIlxuICAoY291bnQgZWxlbWVudHMpXG4gIFwiIGZvcm0ocykuIE1hcCBsaXRlcmFscyBtdXN0IGNvbnRhaW4gYW4gZXZlbiBudW1iZXIgb2YgZm9ybXMuXCIpKVxuIn0gezpzeW0gdGhyb3ctYmFkLW9jdGFsLW51bWJlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHJdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctYmFkLW9jdGFsLW51bWJlclxuIFtyZHJdXG4gKHJlYWRlci1lcnJvciByZHIgXCJPY3RhbCBlc2NhcGUgc2VxdWVuY2UgbXVzdCBiZSBpbiByYW5nZSBbMCwgMzc3XS5cIikpXG4ifSB7OnN5bSB0aHJvdy1iYWQtcmVhZGVyLXRhZywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgdGFnXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWJhZC1yZWFkZXItdGFnXG4gW3JkciB0YWddXG4gKHJlYWRlci1lcnJvclxuICByZHJcbiAgXCJJbnZhbGlkIHJlYWRlciB0YWc6IFwiXG4gIChpL2luc3BlY3QgdGFnKVxuICBcIi4gUmVhZGVyIHRhZ3MgbXVzdCBiZSBzeW1ib2xzLlwiKSlcbiJ9IHs6c3ltIHRocm93LXVubWF0Y2gtZGVsaW1pdGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBjaF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy11bm1hdGNoLWRlbGltaXRlclxuIFtyZHIgY2hdXG4gKHJlYWRlci1lcnJvciByZHIgXCJVbm1hdGNoZWQgZGVsaW1pdGVyIFwiIGNoIFwiLlwiKSlcbiJ9IHs6c3ltIHRocm93LWludmFsaWQtY2hhcmFjdGVyLWxpdGVyYWwsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIHRva2VuXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWludmFsaWQtY2hhcmFjdGVyLWxpdGVyYWxcbiBbcmRyIHRva2VuXVxuIChyZWFkZXItZXJyb3IgcmRyIFwiSW52YWxpZCBjaGFyYWN0ZXIgbGl0ZXJhbCBcXFxcdVwiIHRva2VuIFwiLlwiKSlcbiJ9IHs6c3ltIHRocm93LWludmFsaWQtdW5pY29kZS1jaGFyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciB0b2tlbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtY2hhclxuIFtyZHIgdG9rZW5dXG4gKHJlYWRlci1lcnJvciByZHIgXCJJbnZhbGlkIHVuaWNvZGUgY2hhcmFjdGVyIFxcXFxcIiB0b2tlbiBcIi5cIikpXG4ifSB7OnN5bSB0aHJvdy1iYWQtZXNjYXBlLWNoYXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGNoXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWJhZC1lc2NhcGUtY2hhclxuIFtyZHIgY2hdXG4gKHJlYWRlci1lcnJvciByZHIgXCJVbnN1cHBvcnRlZCBlc2NhcGUgY2hhcmFjdGVyOiBcXFxcXCIgY2ggXCIuXCIpKVxuIn0gezpzeW0gdGhyb3ctbm8tZGlzcGF0Y2gsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGNoXSl9LCA6c291cmNlICIoZGVmbiB0aHJvdy1uby1kaXNwYXRjaCBbcmRyIGNoXSAodGhyb3ctYmFkLWRpc3BhdGNoIHJkciBjaCkpXG4ifSB7OnN5bSB0aHJvdy1lb2YtYXQtc3RhcnQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGtpbmRdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctZW9mLWF0LXN0YXJ0XG4gW3JkciBraW5kXVxuIChlb2YtZXJyb3JcbiAgcmRyXG4gIFwiVW5leHBlY3RlZCBFT0Ygd2hpbGUgcmVhZGluZyBzdGFydCBvZiBcIlxuICAobmFtZSBraW5kKVxuICBcIi5cIikpXG4ifSB7OnN5bSB0aHJvdy1pbnZhbGlkLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBraW5kIHRva2VuXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWludmFsaWRcbiBbcmRyIGtpbmQgdG9rZW5dXG4gKHJlYWRlci1lcnJvciByZHIgXCJJbnZhbGlkIFwiIChuYW1lIGtpbmQpIFwiOiBcIiB0b2tlbiBcIi5cIikpXG4ifSksIHBsYXktY2xqYy5wcmltaXRpdmVzLTJkICh7OnN5bSByZWN0LCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiByZWN0IFswIDAgMSAwIDAgMSAwIDEgMSAwIDEgMV0pXG4ifSksIGR5bmFkb2MuY29yZSAoezpzeW0gY2xqLWNvbXBpbGVyLWZuLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2V4YW1wbGUgZm9ybXMgY2JdKX0sIDpzb3VyY2UgIihkZWZuXG4gY2xqLWNvbXBpbGVyLWZuXG4gW2V4YW1wbGUgZm9ybXMgY2JdXG4gKGxldFxuICBbbnMtc3ltICg6bnMtc3ltIChjb21tb24vZ2V0LXN0YXRlKSldXG4gICh0cnlcbiAgICguc2VuZFxuICAgIFhocklvXG4gICAgXCIvZXZhbFwiXG4gICAgKGZuXG4gICAgIFtlXVxuICAgICAoaWZcbiAgICAgICguaXNTdWNjZXNzICguLXRhcmdldCBlKSlcbiAgICAgICgtPj5cbiAgICAgICAoLi4gZSAtdGFyZ2V0IGdldFJlc3BvbnNlVGV4dClcbiAgICAgICByZWFkLXN0cmluZ1xuICAgICAgIHJlc3RcbiAgICAgICAobWFwdlxuICAgICAgICAoZm4qXG4gICAgICAgICBbcDFfXzQ1NDc0I11cbiAgICAgICAgIChpZiAodmVjdG9yPyBwMV9fNDU0NzQjKSAoaW50by1hcnJheSBwMV9fNDU0NzQjKSBwMV9fNDU0NzQjKSkpXG4gICAgICAgY2IpXG4gICAgICAoY2IgW10pKSlcbiAgICBcIlBPU1RcIlxuICAgIChwci1zdHJcbiAgICAgKGludG9cbiAgICAgIFsobGlzdCAnaW4tbnMgKGxpc3QgJ3F1b3RlIG5zLXN5bSkpXVxuICAgICAgKG1hcHYgKHBhcnRpYWwgdHJhbnNmb3JtIChkaXNzb2MgZXhhbXBsZSA6d2l0aC1jYXJkKSkgZm9ybXMpKSkpXG4gICAoY2F0Y2gganMvRXJyb3IgXyAoY2IgW10pKSkpKVxuIn0gezpzeW0gZm9ybS0+c2VyaWFsaXphYmxlLCA6bWV0YSB7OmRvYyAiQ29udmVydHMgdGhlIGlucHV0IHRvIGVpdGhlciBhIHN0cmluZyBvciAoaWYgYW4gZXJyb3Igb2JqZWN0KSBhbiBhcnJheSBvZiBkYXRhIiwgOmFyZ2xpc3RzIChbZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBmb3JtLT5zZXJpYWxpemFibGVcbiBcIkNvbnZlcnRzIHRoZSBpbnB1dCB0byBlaXRoZXIgYSBzdHJpbmcgb3IgKGlmIGFuIGVycm9yIG9iamVjdCkgYW4gYXJyYXkgb2YgZGF0YVwiXG4gW2Zvcm1dXG4gKGlmXG4gIChpbnN0YW5jZT8ganMvRXJyb3IgZm9ybSlcbiAgKGFycmF5XG4gICAob3IgKHNvbWUtPiBmb3JtIC4tY2F1c2UgLi1tZXNzYWdlKSAoLi1tZXNzYWdlIGZvcm0pKVxuICAgKC4tZmlsZU5hbWUgZm9ybSlcbiAgICguLWxpbmVOdW1iZXIgZm9ybSkpXG4gIChwci1zdHIgZm9ybSkpKVxuIn0gezpzeW0gaW5pdC1lZGl0b3IsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZWxlbV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbml0LWVkaXRvclxuIFtlbGVtXVxuICh3aGVuLWxldFxuICBbcGFyZW4tc291cCAob3IgKC5xdWVyeVNlbGVjdG9yIGVsZW0gXCIucGFyZW4tc291cFwiKSBlbGVtKV1cbiAgKHBzL2luaXQgcGFyZW4tc291cCAoanMtPmNsaiB7OmNvbXBpbGVyLWZuIChmbiBbXSl9KSkpKVxuIn0gezpzeW0gY2xqcy1jb21waWxlci1mbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtleGFtcGxlIGZvcm1zIGNiXSl9LCA6c291cmNlICIoZGVmblxuIGNsanMtY29tcGlsZXItZm5cbiBbZXhhbXBsZSBmb3JtcyBjYl1cbiAobGV0XG4gIFtucy1zeW0gKDpucy1zeW0gKGNvbW1vbi9nZXQtc3RhdGUpKV1cbiAgKGVzL2NvZGUtPnJlc3VsdHNcbiAgIChpbnRvIFsobGlzdCAnbnMgbnMtc3ltKV0gKG1hcHYgKHBhcnRpYWwgdHJhbnNmb3JtIGV4YW1wbGUpIGZvcm1zKSlcbiAgIChmbiBbcmVzdWx0c10gKC0+PiByZXN1bHRzIHJlc3QgKG1hcHYgZm9ybS0+c2VyaWFsaXphYmxlKSBjYikpXG4gICB7OmN1c3RvbS1sb2FkIChmbiBbb3B0cyBjYl0gKGNiIHs6bGFuZyA6Y2xqLCA6c291cmNlIFwiXCJ9KSksXG4gICAgOmRpc2FibGUtdGltZW91dD8gdHJ1ZX0pKSlcbiJ9IHs6c3ltIHRyYW5zZm9ybSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt7OmtleXMgW3dpdGgtZm9jdXMgd2l0aC1jYXJkIHdpdGgtY2FsbGJhY2tdLCA6YXMgZXh9IGZvcm0tc3RyXSl9LCA6c291cmNlICIoZGVmblxuIHRyYW5zZm9ybVxuIFt7OmtleXMgW3dpdGgtZm9jdXMgd2l0aC1jYXJkIHdpdGgtY2FsbGJhY2tdLCA6YXMgZXh9IGZvcm0tc3RyXVxuIChpZlxuICAob3Igd2l0aC1mb2N1cyB3aXRoLWNhcmQgd2l0aC1jYWxsYmFjaylcbiAgKHRyYW5zZm9ybS90cmFuc2Zvcm0gZXggKHJlYWQtc3RyaW5nIGZvcm0tc3RyKSlcbiAgZm9ybS1zdHIpKVxuIn0gezpzeW0gaW5pdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5pdFxuIFtdXG4gKC0+PlxuICAoLnF1ZXJ5U2VsZWN0b3IganMvZG9jdW1lbnQgXCIjaW5pdGlhbC1zdGF0ZVwiKVxuICAuLXRleHRDb250ZW50XG4gIGpzL2F0b2JcbiAgcmVhZC1zdHJpbmdcbiAgKHN3YXAhIGNvbW1vbi8qc2Vzc2lvbiBjb21tb24vdXBkYXRlLXNlc3Npb24gOmR5bmFkb2MuY29tbW9uL3NlcnZlcikpXG4gKHJ1bS9oeWRyYXRlXG4gIChjb21tb24vYXBwLXJvb3QgY29tbW9uLypzZXNzaW9uKVxuICAoLnF1ZXJ5U2VsZWN0b3IganMvZG9jdW1lbnQgXCIjYXBwXCIpKVxuIChsZXRcbiAgW3s6a2V5cyBbdmFyLXN5bSB3YXRjaGVyXX0gKGNvbW1vbi9nZXQtc3RhdGUpXVxuICAoLT4+XG4gICB7OmR5bmFkb2MuY29tbW9uL2NsanMtc3RhcnRlZD8gdHJ1ZSxcbiAgICA6ZHluYWRvYy5jb21tb24vZXhwb3J0YWJsZT8ganMvQ09NUElMRUQsXG4gICAgOmR5bmFkb2MuY29tbW9uL2luaXQtZWRpdG9yIChtZW1vaXplIGluaXQtZWRpdG9yKSxcbiAgICA6ZHluYWRvYy5jb21tb24vaW5pdC1leGFtcGxlLWVkaXRvciAobWVtb2l6ZSBpbml0LWV4YW1wbGUtZWRpdG9yKSxcbiAgICA6ZHluYWRvYy5jb21tb24vd2F0Y2hlclxuICAgICh3aGVuLW5vdCBqcy9DT01QSUxFRCAob3Igd2F0Y2hlciAoaW5pdC13YXRjaGVyISkpKX1cbiAgIChzd2FwIVxuICAgIGNvbW1vbi8qc2Vzc2lvblxuICAgIGNvbW1vbi91cGRhdGUtc2Vzc2lvblxuICAgIDpkeW5hZG9jLmNvbW1vbi9jbGllbnQpKVxuICAod2hlblxuICAgdmFyLXN5bVxuICAgKGRvc2VxXG4gICAgW2J1dHRvbiAoLT4ganMvZG9jdW1lbnQgKC5xdWVyeVNlbGVjdG9yQWxsIFwiLmJ1dHRvblwiKSBhcnJheS1zZXEpXVxuICAgIChzZXQhICguLWRpc3BsYXkgKC4tc3R5bGUgYnV0dG9uKSkgXCJpbmxpbmUtYmxvY2tcIikpKSkpXG4ifSB7OnN5bSByZWFkLXN0cmluZywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIHJlYWQtc3RyaW5nXG4gW3NdXG4gKGJpbmRpbmdcbiAgW3IvKnN1cHByZXNzLXJlYWQqIHRydWVdXG4gIChyL3JlYWQtc3RyaW5nIHs6cmVhZC1jb25kIDpwcmVzZXJ2ZSwgOmVvZiBuaWx9IHMpKSlcbiJ9IHs6c3ltIGluaXQtZXhhbXBsZS1lZGl0b3IsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZWxlbSBleGFtcGxlXSl9LCA6c291cmNlICIoZGVmblxuIGluaXQtZXhhbXBsZS1lZGl0b3JcbiBbZWxlbSBleGFtcGxlXVxuICh3aGVuLWxldFxuICBbcGFyZW4tc291cCAob3IgKC5xdWVyeVNlbGVjdG9yIGVsZW0gXCIucGFyZW4tc291cFwiKSBlbGVtKV1cbiAgKHdoZW4tbGV0XG4gICBbY29udGVudCAoLnF1ZXJ5U2VsZWN0b3IgcGFyZW4tc291cCBcIi5jb250ZW50XCIpXVxuICAgKHNldCEgKC4tY29udGVudEVkaXRhYmxlIGNvbnRlbnQpIHRydWUpKVxuICAobGV0XG4gICBbdHlwZSAoOnR5cGUgKGNvbW1vbi9nZXQtc3RhdGUpKV1cbiAgIChwcy9pbml0XG4gICAgcGFyZW4tc291cFxuICAgIChqcy0+Y2xqXG4gICAgIHs6Y29tcGlsZXItZm5cbiAgICAgIChpZlxuICAgICAgICg9IDpjbGogdHlwZSlcbiAgICAgICAocGFydGlhbCBjbGotY29tcGlsZXItZm4gZXhhbXBsZSlcbiAgICAgICAocGFydGlhbCBjbGpzLWNvbXBpbGVyLWZuIGV4YW1wbGUpKSxcbiAgICAgIDpmaXgtaW5kZW50LW9uLWluaXQ/IHRydWV9KSkpKSlcbiJ9IHs6c3ltIGluaXQtd2F0Y2hlciEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIGluaXQtd2F0Y2hlciFcbiBbXVxuIChsZXRcbiAgW3Byb3RvY29sXG4gICAoaWYgKD0gKC4tcHJvdG9jb2wganMvbG9jYXRpb24pIFwiaHR0cHM6XCIpIFwid3NzOlwiIFwid3M6XCIpXG4gICBob3N0XG4gICAoLT4ganMvd2luZG93IC4tbG9jYXRpb24gLi1ob3N0KVxuICAgc29ja1xuICAgKGpzL1dlYlNvY2tldC4gKHN0ciBwcm90b2NvbCBcIi8vXCIgaG9zdCBcIi93YXRjaFwiKSldXG4gIChzZXQhXG4gICAoLi1vbm9wZW4gc29jaylcbiAgIChmbiBbZXZlbnRdICguc2VuZCBzb2NrIGpzL3dpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkpKVxuICAoc2V0IVxuICAgKC4tb25tZXNzYWdlIHNvY2spXG4gICAoZm5cbiAgICBbZXZlbnRdXG4gICAgKC0+PlxuICAgICAoLi1kYXRhIGV2ZW50KVxuICAgICByZWFkLXN0cmluZ1xuICAgICAoc3dhcCFcbiAgICAgIGNvbW1vbi8qc2Vzc2lvblxuICAgICAgY29tbW9uL3VwZGF0ZS1zZXNzaW9uXG4gICAgICA6ZHluYWRvYy5jb21tb24vc2VydmVyKSkpKVxuICBzb2NrKSlcbiJ9KSwgZXhwb3VuZC5hbHBoYSAoezpzeW0gZXJyb3ItbWVzc2FnZSwgOm1ldGEgezpkb2MgIkdpdmVuIGEgc3BlYyBuYW1lZCBga2AsIHJldHVybiBpdHMgaHVtYW4tcmVhZGFibGUgZXJyb3IgbWVzc2FnZS4iLCA6YXJnbGlzdHMgKFtrXSl9LCA6c291cmNlICIoZGVmblxuIGVycm9yLW1lc3NhZ2VcbiBcIkdpdmVuIGEgc3BlYyBuYW1lZCBga2AsIHJldHVybiBpdHMgaHVtYW4tcmVhZGFibGUgZXJyb3IgbWVzc2FnZS5cIlxuIFtrXVxuIChnZXQgQHJlZ2lzdHJ5LXJlZiBrKSlcbiJ9IHs6c3ltIGV4cGxhaW4tcmVzdWx0LCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSByZXN1bHQgZnJvbSBgY2xvanVyZS5zcGVjLnRlc3QuYWxwaGEvY2hlY2tgLCBwcmludHMgYSBzdW1tYXJ5IG9mIHRoZSByZXN1bHQuIiwgOmFyZ2xpc3RzIChbY2hlY2stcmVzdWx0XSl9LCA6c291cmNlICIoZGVmblxuIGV4cGxhaW4tcmVzdWx0XG4gXCJHaXZlbiBhIHJlc3VsdCBmcm9tIGBjbG9qdXJlLnNwZWMudGVzdC5hbHBoYS9jaGVja2AsIHByaW50cyBhIHN1bW1hcnkgb2YgdGhlIHJlc3VsdC5cIlxuIFtjaGVjay1yZXN1bHRdXG4gKHdoZW5cbiAgKD0gcy8qZXhwbGFpbi1vdXQqIHMvZXhwbGFpbi1wcmludGVyKVxuICAodGhyb3dcbiAgIChleC1pbmZvXG4gICAgXCJDYW5ub3QgcHJpbnQgY2hlY2sgcmVzdWx0cyB3aXRoIGRlZmF1bHQgcHJpbnRlci4gVXNlICdzZXQhJyBvciAnYmluZGluZycgdG8gdXNlIEV4cG91bmQgcHJpbnRlci5cIlxuICAgIHt9KSkpXG4gKHMvKmV4cGxhaW4tb3V0KiBjaGVjay1yZXN1bHQpKVxuIn0gezpzeW0gY3VzdG9tLXByaW50ZXIsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgcHJpbnRlci5cblxuICBPcHRpb25zOlxuICAgLSBgOnNob3ctdmFsaWQtdmFsdWVzP2AgLSBpZiBgZmFsc2VgLCByZXBsYWNlcyB2YWxpZCB2YWx1ZXMgd2l0aCBcIi4uLlwiXG4gICAtIGA6dmFsdWUtc3RyLWZuYCAgICAgICAtIGZ1bmN0aW9uIHRvIHByaW50IGJhZCB2YWx1ZXNcbiAgIC0gYDpwcmludC1zcGVjcz9gICAgICAgIC0gaWYgYHRydWVgLCBkaXNwbGF5IFwiUmVsZXZhbnQgc3BlY3NcIiBzZWN0aW9uLiBPdGhlcndpc2UsIG9taXQgdGhhdCBzZWN0aW9uLlxuICAgLSBgOnRoZW1lYCAgICAgICAgICAgICAgIC0gZW5hYmxlcyBjb2xvciB0aGVtZS4gUG9zc2libGUgdmFsdWVzOiBgOmZpZ3doZWVsLXRoZW1lYCwgYDpub25lYCIsIDphcmdsaXN0cyAoW29wdHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gY3VzdG9tLXByaW50ZXJcbiBcIlJldHVybnMgYSBwcmludGVyLlxcblxcbiAgT3B0aW9uczpcXG4gICAtIGA6c2hvdy12YWxpZC12YWx1ZXM/YCAtIGlmIGBmYWxzZWAsIHJlcGxhY2VzIHZhbGlkIHZhbHVlcyB3aXRoIFxcXCIuLi5cXFwiXFxuICAgLSBgOnZhbHVlLXN0ci1mbmAgICAgICAgLSBmdW5jdGlvbiB0byBwcmludCBiYWQgdmFsdWVzXFxuICAgLSBgOnByaW50LXNwZWNzP2AgICAgICAgLSBpZiBgdHJ1ZWAsIGRpc3BsYXkgXFxcIlJlbGV2YW50IHNwZWNzXFxcIiBzZWN0aW9uLiBPdGhlcndpc2UsIG9taXQgdGhhdCBzZWN0aW9uLlxcbiAgIC0gYDp0aGVtZWAgICAgICAgICAgICAgICAtIGVuYWJsZXMgY29sb3IgdGhlbWUuIFBvc3NpYmxlIHZhbHVlczogYDpmaWd3aGVlbC10aGVtZWAsIGA6bm9uZWBcIlxuIFtvcHRzXVxuIChmbiBbZXhwbGFpbi1kYXRhXSAocHJpbnQgKHByaW50ZXItc3RyIG9wdHMgZXhwbGFpbi1kYXRhKSkpKVxuIn0gezpzeW0gY29uZm9ybWVkLXZhbHVlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3Byb2JsZW1zIGludmFsaWQtdmFsdWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gY29uZm9ybWVkLXZhbHVlXG4gW3Byb2JsZW1zIGludmFsaWQtdmFsdWVdXG4gKGxldFxuICBbY29uZm9ybWVkLXZhbCAoLT4gcHJvYmxlbXMgZmlyc3QgOnZhbCldXG4gIChpZlxuICAgKD0gY29uZm9ybWVkLXZhbCBpbnZhbGlkLXZhbHVlKVxuICAgXCJcIlxuICAgKHByaW50ZXIvZm9ybWF0XG4gICAgXCJcXG5cXG53aGVuIGNvbmZvcm1lZCBhc1xcblxcbiVzXCJcbiAgICAocHJpbnRlci9pbmRlbnQgKGFuc2kvY29sb3IgKHByLXN0ciBjb25mb3JtZWQtdmFsKSA6YmFkLXZhbHVlKSkpKSkpXG4ifSB7OnN5bSBwcmludGVyLCA6bWV0YSB7OmRvYyAiUHJpbnRzIGBleHBsYWluLWRhdGFgIGluIGEgaHVtYW4tcmVhZGFibGUgZm9ybWF0LiIsIDphcmdsaXN0cyAoW2V4cGxhaW4tZGF0YV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcmludGVyXG4gXCJQcmludHMgYGV4cGxhaW4tZGF0YWAgaW4gYSBodW1hbi1yZWFkYWJsZSBmb3JtYXQuXCJcbiBbZXhwbGFpbi1kYXRhXVxuICgoY3VzdG9tLXByaW50ZXIge30pIGV4cGxhaW4tZGF0YSkpXG4ifSB7OnN5bSBleHBsYWluLXJlc3VsdC1zdHIsIDptZXRhIHs6ZG9jICJHaXZlbiBhIHJlc3VsdCBmcm9tIGBjbG9qdXJlLnNwZWMudGVzdC5hbHBoYS9jaGVja2AsIHJldHVybnMgYSBzdHJpbmcgc3VtbWFyaXppbmcgdGhlIHJlc3VsdC4iLCA6YXJnbGlzdHMgKFtjaGVjay1yZXN1bHRdKX0sIDpzb3VyY2UgIihkZWZuXG4gZXhwbGFpbi1yZXN1bHQtc3RyXG4gXCJHaXZlbiBhIHJlc3VsdCBmcm9tIGBjbG9qdXJlLnNwZWMudGVzdC5hbHBoYS9jaGVja2AsIHJldHVybnMgYSBzdHJpbmcgc3VtbWFyaXppbmcgdGhlIHJlc3VsdC5cIlxuIFtjaGVjay1yZXN1bHRdXG4gKHdpdGgtb3V0LXN0ciAoZXhwbGFpbi1yZXN1bHQgY2hlY2stcmVzdWx0KSkpXG4ifSB7OnN5bSBleHBsYWluLXJlc3VsdHMsIDptZXRhIHs6ZG9jICJHaXZlbiBhIHNlcXVlbmNlIG9mIHJlc3VsdHMgZnJvbSBgY2xvanVyZS5zcGVjLnRlc3QuYWxwaGEvY2hlY2tgLCBwcmludHMgYSBzdW1tYXJ5IG9mIHRoZSByZXN1bHRzLiIsIDphcmdsaXN0cyAoW2NoZWNrLXJlc3VsdHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gZXhwbGFpbi1yZXN1bHRzXG4gXCJHaXZlbiBhIHNlcXVlbmNlIG9mIHJlc3VsdHMgZnJvbSBgY2xvanVyZS5zcGVjLnRlc3QuYWxwaGEvY2hlY2tgLCBwcmludHMgYSBzdW1tYXJ5IG9mIHRoZSByZXN1bHRzLlwiXG4gW2NoZWNrLXJlc3VsdHNdXG4gKGRvc2VxXG4gIFtjaGVjay1yZXN1bHQgKGJ1dGxhc3QgY2hlY2stcmVzdWx0cyldXG4gIChleHBsYWluLXJlc3VsdCBjaGVjay1yZXN1bHQpXG4gIChwcmludCBcIlxcblxcblwiKSlcbiAoZXhwbGFpbi1yZXN1bHQgKGxhc3QgY2hlY2stcmVzdWx0cykpKVxuIn0gezpzeW0gZXhwb3VuZC1zdHIsIDptZXRhIHs6ZG9jICJHaXZlbiBhIGBzcGVjYCBhbmQgYSBgZm9ybWAsIGVpdGhlciByZXR1cm5zIHN1Y2Nlc3MgbWVzc2FnZSBvciBhIGh1bWFuLXJlYWRhYmxlIGVycm9yIG1lc3NhZ2UuIiwgOmFyZ2xpc3RzIChbc3BlYyBmb3JtXSl9LCA6c291cmNlICIoZGVmblxuIGV4cG91bmQtc3RyXG4gXCJHaXZlbiBhIGBzcGVjYCBhbmQgYSBgZm9ybWAsIGVpdGhlciByZXR1cm5zIHN1Y2Nlc3MgbWVzc2FnZSBvciBhIGh1bWFuLXJlYWRhYmxlIGVycm9yIG1lc3NhZ2UuXCJcbiBbc3BlYyBmb3JtXVxuIChsZXRcbiAgW2V4cGxhaW4tZGF0YSAocy9leHBsYWluLWRhdGEgc3BlYyBmb3JtKV1cbiAgKHByaW50ZXItc3RyXG4gICB7fVxuICAgKGlmXG4gICAgZXhwbGFpbi1kYXRhXG4gICAgKGFzc29jIGV4cGxhaW4tZGF0YSA6Y2xvanVyZS5zcGVjLmFscGhhL3ZhbHVlIGZvcm0pXG4gICAgbmlsKSkpKVxuIn0gezpzeW0gZXhwbGFpbi1yZXN1bHRzLXN0ciwgOm1ldGEgezpkb2MgIkdpdmVuIGEgc2VxdWVuY2Ugb2YgcmVzdWx0cyBmcm9tIGBjbG9qdXJlLnNwZWMudGVzdC5hbHBoYS9jaGVja2AsIHJldHVybnMgYSBzdHJpbmcgc3VtbWFyaXppbmcgdGhlIHJlc3VsdHMuIiwgOmFyZ2xpc3RzIChbY2hlY2stcmVzdWx0c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBleHBsYWluLXJlc3VsdHMtc3RyXG4gXCJHaXZlbiBhIHNlcXVlbmNlIG9mIHJlc3VsdHMgZnJvbSBgY2xvanVyZS5zcGVjLnRlc3QuYWxwaGEvY2hlY2tgLCByZXR1cm5zIGEgc3RyaW5nIHN1bW1hcml6aW5nIHRoZSByZXN1bHRzLlwiXG4gW2NoZWNrLXJlc3VsdHNdXG4gKHdpdGgtb3V0LXN0ciAoZXhwbGFpbi1yZXN1bHRzIGNoZWNrLXJlc3VsdHMpKSlcbiJ9IHs6c3ltIGV4cG91bmQsIDptZXRhIHs6ZG9jICJHaXZlbiBhIGBzcGVjYCBhbmQgYSBgZm9ybWAsIGVpdGhlciBwcmludHMgYSBzdWNjZXNzIG1lc3NhZ2Ugb3IgYSBodW1hbi1yZWFkYWJsZSBlcnJvciBtZXNzYWdlLiIsIDphcmdsaXN0cyAoW3NwZWMgZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBleHBvdW5kXG4gXCJHaXZlbiBhIGBzcGVjYCBhbmQgYSBgZm9ybWAsIGVpdGhlciBwcmludHMgYSBzdWNjZXNzIG1lc3NhZ2Ugb3IgYSBodW1hbi1yZWFkYWJsZSBlcnJvciBtZXNzYWdlLlwiXG4gW3NwZWMgZm9ybV1cbiAocHJpbnQgKGV4cG91bmQtc3RyIHNwZWMgZm9ybSkpKVxuIn0gezpzeW0gZGVmbXNnLCA6bWV0YSB7OmRvYyAiQXNzb2NpYXRlcyB0aGUgc3BlYyBuYW1lZCBga2Agd2l0aCBgZXJyb3ItbWVzc2FnZWAuIiwgOmFyZ2xpc3RzIChbayBlcnJvci1tZXNzYWdlXSl9LCA6c291cmNlICIoZGVmblxuIGRlZm1zZ1xuIFwiQXNzb2NpYXRlcyB0aGUgc3BlYyBuYW1lZCBga2Agd2l0aCBgZXJyb3ItbWVzc2FnZWAuXCJcbiBbayBlcnJvci1tZXNzYWdlXVxuIChzd2FwISByZWdpc3RyeS1yZWYgYXNzb2MgayBlcnJvci1tZXNzYWdlKVxuIG5pbClcbiJ9KSwgY2xqcy5zdGFja3RyYWNlICh7OnN5bSBvdXRwdXQtZGlyZWN0b3J5LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW29wdHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gb3V0cHV0LWRpcmVjdG9yeVxuIFtvcHRzXVxuICM/KDpjbGogKHV0aWwvb3V0cHV0LWRpcmVjdG9yeSBvcHRzKSA6Y2xqcyAob3IgKDpvdXRwdXQtZGlyIG9wdHMpIFwib3V0XCIpKSlcbiJ9IHs6c3ltIGVuZHMtd2l0aD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbczAgczFdKX0sIDpzb3VyY2UgIihkZWZuXG4gZW5kcy13aXRoP1xuICM/KDpjbGpzIHs6dGFnIGJvb2xlYW59KVxuIFtzMCBzMV1cbiAjPyg6Y2xqICguZW5kc1dpdGggczAgczEpIDpjbGpzIChnc3RyaW5nL2VuZHNXaXRoIHMwIHMxKSkpXG4ifSB7OnN5bSBzdGFydHMtd2l0aD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbczAgczFdKX0sIDpzb3VyY2UgIihkZWZuXG4gc3RhcnRzLXdpdGg/XG4gIz8oOmNsanMgezp0YWcgYm9vbGVhbn0pXG4gW3MwIHMxXVxuICM/KDpjbGogKC5zdGFydHNXaXRoIHMwIHMxKSA6Y2xqcyAoZ3N0cmluZy9zdGFydHNXaXRoIHMwIHMxKSkpXG4ifSB7OnN5bSByZW1vdmUtZXh0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2ZpbGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVtb3ZlLWV4dFxuIFtmaWxlXVxuICgtPlxuICBmaWxlXG4gIChzdHJpbmcvcmVwbGFjZSAjXCJcXC5qcyRcIiBcIlwiKVxuICAoc3RyaW5nL3JlcGxhY2UgI1wiXFwuY2xqcyRcIiBcIlwiKVxuICAoc3RyaW5nL3JlcGxhY2UgI1wiXFwuY2xqYyRcIiBcIlwiKVxuICAoc3RyaW5nL3JlcGxhY2UgI1wiXFwuY2xqJFwiIFwiXCIpKSlcbiJ9IHs6c3ltIHN0cmluZy0+cmVnZXgsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBzdHJpbmctPnJlZ2V4XG4gW3NdXG4gIz8oOmNsaiAoUGF0dGVybi9jb21waWxlIHMpIDpjbGpzIChqcy9SZWdFeHAuIHMpKSlcbiJ9IHs6c3ltIHNhZmFyaS1zdC1lbC0+ZnJhbWUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmVwbC1lbnYgc3QtZWwgb3B0c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBzYWZhcmktc3QtZWwtPmZyYW1lXG4gW3JlcGwtZW52IHN0LWVsIG9wdHNdXG4gKGxldFxuICBbW2Z1bmN0aW9uIGZsY11cbiAgIChpZiAocmUtZmluZCAjXCJAXCIgc3QtZWwpIChzdHJpbmcvc3BsaXQgc3QtZWwgI1wiQFwiKSBbbmlsIHN0LWVsXSlcbiAgIFtmaWxlIGxpbmUgY29sdW1uXVxuICAgKHBhcnNlLWZpbGUtbGluZS1jb2x1bW4gZmxjKV1cbiAgKGlmXG4gICAoYW5kIGZpbGUgZnVuY3Rpb24gbGluZSBjb2x1bW4pXG4gICB7OmZpbGUgKHBhcnNlLWZpbGUgcmVwbC1lbnYgZmlsZSBvcHRzKSxcbiAgICA6ZnVuY3Rpb24gKHN0cmluZy90cmltIGZ1bmN0aW9uKSxcbiAgICA6bGluZSBsaW5lLFxuICAgIDpjb2x1bW4gY29sdW1ufVxuICAgKHdoZW4tbm90XG4gICAgKHN0cmluZy9ibGFuaz8gZnVuY3Rpb24pXG4gICAgezpmaWxlIG5pbCxcbiAgICAgOmZ1bmN0aW9uIChzdHJpbmcvdHJpbSBmdW5jdGlvbiksXG4gICAgIDpsaW5lIG5pbCxcbiAgICAgOmNvbHVtbiBuaWx9KSkpKVxuIn0gezpzeW0gbWFwcGVkLWZyYW1lLCA6bWV0YSB7OmRvYyAiR2l2ZW4gb3B0cyBhbmQgYSBjYW5vbmljYWxpemVkIEphdmFTY3JpcHQgc3RhY2t0cmFjZSBmcmFtZSwgcmV0dXJuIHRoZVxuICBDbG9qdXJlU2NyaXB0IGZyYW1lLiIsIDphcmdsaXN0cyAoW3s6a2V5cyBbZnVuY3Rpb24gZmlsZSBsaW5lIGNvbHVtbl19IHNtcyBvcHRzXSl9LCA6c291cmNlICIoZGVmblxuIG1hcHBlZC1mcmFtZVxuIFwiR2l2ZW4gb3B0cyBhbmQgYSBjYW5vbmljYWxpemVkIEphdmFTY3JpcHQgc3RhY2t0cmFjZSBmcmFtZSwgcmV0dXJuIHRoZVxcbiAgQ2xvanVyZVNjcmlwdCBmcmFtZS5cIlxuIFt7OmtleXMgW2Z1bmN0aW9uIGZpbGUgbGluZSBjb2x1bW5dfSBzbXMgb3B0c11cbiAobGV0XG4gIFtuby1zb3VyY2UtZmlsZT9cbiAgIChpZi1ub3QgZmlsZSB0cnVlIChzdGFydHMtd2l0aD8gZmlsZSBcIjxcIikpXG4gICBbbGluZScgY29sdW1uJyBjYWxsXVxuICAgKGlmXG4gICAgbm8tc291cmNlLWZpbGU/XG4gICAgW2xpbmUgY29sdW1uIG5pbF1cbiAgICAobWFwcGVkLWxpbmUtY29sdW1uLWNhbGwgc21zIGZpbGUgbGluZSBjb2x1bW4pKVxuICAgZmlsZSdcbiAgICh3aGVuLW5vdFxuICAgIG5vLXNvdXJjZS1maWxlP1xuICAgIChpZlxuICAgICAoZW5kcy13aXRoPyBmaWxlIFwiLmpzXCIpXG4gICAgIChzdHIgKHN1YnMgZmlsZSAwICgtIChjb3VudCBmaWxlKSAzKSkgXCIuY2xqc1wiKVxuICAgICBmaWxlKSldXG4gIHs6ZnVuY3Rpb24gZnVuY3Rpb24sXG4gICA6Y2FsbCBjYWxsLFxuICAgOmZpbGVcbiAgIChpZlxuICAgIG5vLXNvdXJjZS1maWxlP1xuICAgIChzdHIgXCJOT19TT1VSQ0VfRklMRVwiICh3aGVuIGZpbGUgKHN0ciBcIiBcIiBmaWxlKSkpXG4gICAgZmlsZScpLFxuICAgOmxpbmUgbGluZScsXG4gICA6Y29sdW1uIGNvbHVtbid9KSlcbiJ9IHs6c3ltIGZpcmVmb3gtc3QtZWwtPmZyYW1lLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JlcGwtZW52IHN0LWVsIG9wdHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gZmlyZWZveC1zdC1lbC0+ZnJhbWVcbiBbcmVwbC1lbnYgc3QtZWwgb3B0c11cbiAobGV0XG4gIFtbZnVuY3Rpb24gZmxjXVxuICAgKGlmIChyZS1maW5kICNcIkBcIiBzdC1lbCkgKHN0cmluZy9zcGxpdCBzdC1lbCAjXCJAXCIpIFtuaWwgc3QtZWxdKVxuICAgW2ZpbGUgbGluZSBjb2x1bW5dXG4gICAocGFyc2UtZmlsZS1saW5lLWNvbHVtbiBmbGMpXVxuICAoaWZcbiAgIChhbmQgZmlsZSBmdW5jdGlvbiBsaW5lIGNvbHVtbilcbiAgIHs6ZmlsZSAocGFyc2UtZmlsZSByZXBsLWVudiBmaWxlIG9wdHMpLFxuICAgIDpmdW5jdGlvbiAoZmlyZWZveC1jbGVhbi1mdW5jdGlvbiBmdW5jdGlvbiksXG4gICAgOmxpbmUgbGluZSxcbiAgICA6Y29sdW1uIGNvbHVtbn1cbiAgICh3aGVuLW5vdFxuICAgIChzdHJpbmcvYmxhbms/IGZ1bmN0aW9uKVxuICAgIHs6ZmlsZSBuaWwsXG4gICAgIDpmdW5jdGlvbiAoZmlyZWZveC1jbGVhbi1mdW5jdGlvbiBmdW5jdGlvbiksXG4gICAgIDpsaW5lIG5pbCxcbiAgICAgOmNvbHVtbiBuaWx9KSkpKVxuIn0gezpzeW0gZmlyZWZveC1jbGVhbi1mdW5jdGlvbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmXSl9LCA6c291cmNlICIoZGVmblxuIGZpcmVmb3gtY2xlYW4tZnVuY3Rpb25cbiBbZl1cbiAoYXMtPlxuICBmXG4gIGZcbiAgKGNvbmRcbiAgIChzdHJpbmcvYmxhbms/IGYpXG4gICBuaWxcbiAgIChub3Q9ICguaW5kZXhPZiBmIFwiPC9cIikgLTEpXG4gICAobGV0IFtpZHggKC5pbmRleE9mIGYgXCI8L1wiKV0gKC5zdWJzdHJpbmcgZiAoKyBpZHggMikpKVxuICAgOmVsc2VcbiAgIGYpXG4gICgtPlxuICAgZlxuICAgKHN0cmluZy9yZXBsYWNlICNcIjxcIiBcIlwiKVxuICAgKHN0cmluZy9yZXBsYWNlICM/KDpjbGogI1wiXFwvXCIgOmNsanMgKGpzL1JlZ0V4cC4gXCJcXFxcL1wiKSkgXCJcIikpKSlcbiJ9IHs6c3ltIGNocm9tZS1zdC1lbC0+ZnJhbWUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmVwbC1lbnYgc3QtZWwgb3B0c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBjaHJvbWUtc3QtZWwtPmZyYW1lXG4gW3JlcGwtZW52IHN0LWVsIG9wdHNdXG4gKGxldFxuICBbeHNcbiAgICgtPiBzdC1lbCAoc3RyaW5nL3JlcGxhY2UgI1wiXFxzK2F0XFxzK1wiIFwiXCIpIChzdHJpbmcvc3BsaXQgI1wiXFxzK1wiKSlcbiAgIFtmdW5jdGlvbiBmbGNdXG4gICAoaWYgKD09IDEgKGNvdW50IHhzKSkgW25pbCAoZmlyc3QgeHMpXSBbKGZpcnN0IHhzKSAobGFzdCB4cyldKVxuICAgW2ZpbGUgbGluZSBjb2x1bW5dXG4gICAocGFyc2UtZmlsZS1saW5lLWNvbHVtbiBmbGMpXVxuICAoaWZcbiAgIChhbmQgZmlsZSBmdW5jdGlvbiBsaW5lIGNvbHVtbilcbiAgIHs6ZmlsZSAocGFyc2UtZmlsZSByZXBsLWVudiBmaWxlIG9wdHMpLFxuICAgIDpmdW5jdGlvbiAoc3RyaW5nL3JlcGxhY2UgZnVuY3Rpb24gI1wiT2JqZWN0XFwuXCIgXCJcIiksXG4gICAgOmxpbmUgbGluZSxcbiAgICA6Y29sdW1uIGNvbHVtbn1cbiAgICh3aGVuLW5vdFxuICAgIChzdHJpbmcvYmxhbms/IGZ1bmN0aW9uKVxuICAgIHs6ZmlsZSBuaWwsXG4gICAgIDpmdW5jdGlvbiAoc3RyaW5nL3JlcGxhY2UgZnVuY3Rpb24gI1wiT2JqZWN0XFwuXCIgXCJcIiksXG4gICAgIDpsaW5lIG5pbCxcbiAgICAgOmNvbHVtbiBuaWx9KSkpKVxuIn0gezpzeW0gbWFwcGVkLWxpbmUtY29sdW1uLWNhbGwsIDptZXRhIHs6ZG9jICJHaXZlbiBhIGNsanMuc291cmNlLW1hcCBzb3VyY2UgbWFwIGRhdGEgc3RydWN0dXJlIG1hcCBhIGdlbmVyYXRlZCBsaW5lXG4gICBhbmQgY29sdW1uIGJhY2sgdG8gdGhlIG9yaWdpbmFsIGxpbmUsIGNvbHVtbiwgYW5kIGZ1bmN0aW9uIGNhbGxlZC4iLCA6YXJnbGlzdHMgKFtzbXMgZmlsZSBsaW5lIGNvbHVtbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtYXBwZWQtbGluZS1jb2x1bW4tY2FsbFxuIFwiR2l2ZW4gYSBjbGpzLnNvdXJjZS1tYXAgc291cmNlIG1hcCBkYXRhIHN0cnVjdHVyZSBtYXAgYSBnZW5lcmF0ZWQgbGluZVxcbiAgIGFuZCBjb2x1bW4gYmFjayB0byB0aGUgb3JpZ2luYWwgbGluZSwgY29sdW1uLCBhbmQgZnVuY3Rpb24gY2FsbGVkLlwiXG4gW3NtcyBmaWxlIGxpbmUgY29sdW1uXVxuIChsZXRcbiAgW3NvdXJjZS1tYXBcbiAgIChnZXQgc21zIChzeW1ib2wgKHN0cmluZy9yZXBsYWNlIChyZW1vdmUtZXh0IGZpbGUpIFwiL1wiIFwiLlwiKSkpXVxuICAobGV0Zm5cbiAgIFsoZ2V0LWJlc3QtY29sdW1uXG4gICAgIFtjb2x1bW5zIGNvbHVtbl1cbiAgICAgKGxhc3RcbiAgICAgIChvclxuICAgICAgIChnZXRcbiAgICAgICAgY29sdW1uc1xuICAgICAgICAobGFzdFxuICAgICAgICAgKGZpbHRlclxuICAgICAgICAgIChmbiogW3AxX180NTQ2MCNdICg8PSBwMV9fNDU0NjAjIChkZWMgY29sdW1uKSkpXG4gICAgICAgICAgKHNvcnQgKGtleXMgY29sdW1ucykpKSkpXG4gICAgICAgKHNlY29uZCAoZmlyc3QgY29sdW1ucykpKSkpXG4gICAgKGFkanVzdFxuICAgICBbbWFwcGVkXVxuICAgICAodmVjXG4gICAgICAobWFwXG4gICAgICAgKGZuKiBbcDFfXzQ1NDYxIyBwMl9fNDU0NjIjXSAocDFfXzQ1NDYxIyBwMl9fNDU0NjIjKSlcbiAgICAgICBbaW5jIGluYyBpZGVudGl0eV1cbiAgICAgICBtYXBwZWQpKSldXG4gICAobGV0XG4gICAgW2RlZmF1bHQgW2xpbmUgY29sdW1uIG5pbF1dXG4gICAgKGlmLWxldFxuICAgICBbY29sdW1ucyAoZ2V0IHNvdXJjZS1tYXAgKGRlYyBsaW5lKSldXG4gICAgIChhZGp1c3QgKG1hcCAoZ2V0LWJlc3QtY29sdW1uIGNvbHVtbnMgY29sdW1uKSBbOmxpbmUgOmNvbCA6bmFtZV0pKVxuICAgICBkZWZhdWx0KSkpKSlcbiJ9IHs6c3ltIG1hcHBlZC1zdGFja3RyYWNlLXN0ciwgOm1ldGEgezpkb2MgIkdpdmVuIGEgdmVjdG9yIHJlcHJlc2VudGluZyB0aGUgY2Fub25pY2FsaXplZCBKYXZhU2NyaXB0IHN0YWNrdHJhY2UgYW5kIGEgbWFwXG4gIG9mIGxpYnJhcnkgbmFtZXMgdG8gZGVjb2RlZCBzb3VyY2UgbWFwcywgcHJpbnQgdGhlIENsb2p1cmVTY3JpcHQgc3RhY2t0cmFjZSAuXG4gIFNlZSBtYXBwZWQtc3RhY2t0cmFjZS4iLCA6YXJnbGlzdHMgW1tzdGFja3RyYWNlIHNtc10gW3N0YWNrdHJhY2Ugc21zIG9wdHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gbWFwcGVkLXN0YWNrdHJhY2Utc3RyXG4gXCJHaXZlbiBhIHZlY3RvciByZXByZXNlbnRpbmcgdGhlIGNhbm9uaWNhbGl6ZWQgSmF2YVNjcmlwdCBzdGFja3RyYWNlIGFuZCBhIG1hcFxcbiAgb2YgbGlicmFyeSBuYW1lcyB0byBkZWNvZGVkIHNvdXJjZSBtYXBzLCBwcmludCB0aGUgQ2xvanVyZVNjcmlwdCBzdGFja3RyYWNlIC5cXG4gIFNlZSBtYXBwZWQtc3RhY2t0cmFjZS5cIlxuIChbc3RhY2t0cmFjZSBzbXNdIChtYXBwZWQtc3RhY2t0cmFjZS1zdHIgc3RhY2t0cmFjZSBzbXMgbmlsKSlcbiAoW3N0YWNrdHJhY2Ugc21zIG9wdHNdXG4gICh3aXRoLW91dC1zdHJcbiAgIChkb3NlcVxuICAgIFt7OmtleXMgW2Z1bmN0aW9uIGZpbGUgbGluZSBjb2x1bW5dfVxuICAgICAobWFwcGVkLXN0YWNrdHJhY2Ugc3RhY2t0cmFjZSBzbXMgb3B0cyldXG4gICAgKHByaW50bG5cbiAgICAgXCJcXHRcIlxuICAgICAoc3RyXG4gICAgICAod2hlbiBmdW5jdGlvbiAoc3RyIGZ1bmN0aW9uIFwiIFwiKSlcbiAgICAgIFwiKFwiXG4gICAgICBmaWxlXG4gICAgICAod2hlbiBsaW5lIChzdHIgXCI6XCIgbGluZSkpXG4gICAgICAod2hlbiBjb2x1bW4gKHN0ciBcIjpcIiBjb2x1bW4pKVxuICAgICAgXCIpXCIpKSkpKSlcbiJ9IHs6c3ltIG1hcHBlZC1zdGFja3RyYWNlLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSB2ZWN0b3IgcmVwcmVzZW50aW5nIHRoZSBjYW5vbmljYWxpemVkIEphdmFTY3JpcHQgc3RhY2t0cmFjZVxuICAgcmV0dXJuIHRoZSBDbG9qdXJlU2NyaXB0IHN0YWNrdHJhY2UuIFRoZSBjYW5vbmljYWwgc3RhY2t0cmFjZSBtdXN0IGJlXG4gICBpbiB0aGUgZm9ybTpcblxuICAgIFt7OmZpbGUgPHN0cmluZz5cbiAgICAgIDpmdW5jdGlvbiA8c3RyaW5nPlxuICAgICAgOmxpbmUgPGludGVnZXI+XG4gICAgICA6Y29sdW1uIDxpbnRlZ2VyPn0qXVxuXG4gICA6ZmlsZSBtdXN0IGJlIGEgVVJMIHBhdGggKHdpdGhvdXQgcHJvdG9jb2wpIHJlbGF0aXZlIHRvIDpvdXRwdXQtZGlyIG9yIGFcbiAgIGlkZW50aWZpZXIgZGVsaW1pdGVkIGJ5IGFuZ2xlIGJyYWNrZXRzLiBUaGUgcmV0dXJuZWQgbWFwcGVkIHN0YWNrdHJhY2Ugd2lsbFxuICAgYWxzbyBjb250YWluIDp1cmwgZW50cmllcyB0byB0aGUgb3JpZ2luYWwgc291cmNlcyBpZiBpdCBjYW4gYmUgZGV0ZXJtaW5lZFxuICAgZnJvbSB0aGUgY2xhc3NwYXRoLiIsIDphcmdsaXN0cyBbW3N0YWNrdHJhY2Ugc21zXSBbc3RhY2t0cmFjZSBzbXMgb3B0c11dfSwgOnNvdXJjZSAiKGRlZm5cbiBtYXBwZWQtc3RhY2t0cmFjZVxuIFwiR2l2ZW4gYSB2ZWN0b3IgcmVwcmVzZW50aW5nIHRoZSBjYW5vbmljYWxpemVkIEphdmFTY3JpcHQgc3RhY2t0cmFjZVxcbiAgIHJldHVybiB0aGUgQ2xvanVyZVNjcmlwdCBzdGFja3RyYWNlLiBUaGUgY2Fub25pY2FsIHN0YWNrdHJhY2UgbXVzdCBiZVxcbiAgIGluIHRoZSBmb3JtOlxcblxcbiAgICBbezpmaWxlIDxzdHJpbmc+XFxuICAgICAgOmZ1bmN0aW9uIDxzdHJpbmc+XFxuICAgICAgOmxpbmUgPGludGVnZXI+XFxuICAgICAgOmNvbHVtbiA8aW50ZWdlcj59Kl1cXG5cXG4gICA6ZmlsZSBtdXN0IGJlIGEgVVJMIHBhdGggKHdpdGhvdXQgcHJvdG9jb2wpIHJlbGF0aXZlIHRvIDpvdXRwdXQtZGlyIG9yIGFcXG4gICBpZGVudGlmaWVyIGRlbGltaXRlZCBieSBhbmdsZSBicmFja2V0cy4gVGhlIHJldHVybmVkIG1hcHBlZCBzdGFja3RyYWNlIHdpbGxcXG4gICBhbHNvIGNvbnRhaW4gOnVybCBlbnRyaWVzIHRvIHRoZSBvcmlnaW5hbCBzb3VyY2VzIGlmIGl0IGNhbiBiZSBkZXRlcm1pbmVkXFxuICAgZnJvbSB0aGUgY2xhc3NwYXRoLlwiXG4gKFtzdGFja3RyYWNlIHNtc10gKG1hcHBlZC1zdGFja3RyYWNlIHN0YWNrdHJhY2Ugc21zIG5pbCkpXG4gKFtzdGFja3RyYWNlIHNtcyBvcHRzXVxuICAobGV0Zm5cbiAgIFsoY2FsbC0+ZnVuY3Rpb25cbiAgICAgW3hdXG4gICAgIChpZiAoOmNhbGwgeCkgKGhhc2gtbWFwIDpmdW5jdGlvbiAoOmNhbGwgeCkpIHt9KSlcbiAgICAoY2FsbC1tZXJnZVxuICAgICBbZnVuY3Rpb24gY2FsbF1cbiAgICAgKG1lcmdlLXdpdGhcbiAgICAgIChmblxuICAgICAgIFttdW5nZWQtZm4tbmFtZSB1bm11bmdlZC1jYWxsLW5hbWVdXG4gICAgICAgKGlmXG4gICAgICAgICg9XG4gICAgICAgICBtdW5nZWQtZm4tbmFtZVxuICAgICAgICAgKHN0cmluZy9yZXBsYWNlIChtdW5nZSB1bm11bmdlZC1jYWxsLW5hbWUpIFwiLlwiIFwiJFwiKSlcbiAgICAgICAgdW5tdW5nZWQtY2FsbC1uYW1lXG4gICAgICAgIG11bmdlZC1mbi1uYW1lKSlcbiAgICAgIGZ1bmN0aW9uXG4gICAgICBjYWxsKSldXG4gICAobGV0XG4gICAgW21hcHBlZC1mcmFtZXNcbiAgICAgKG1hcFxuICAgICAgKG1lbW9pemUgKGZuKiBbcDFfXzQ1NDYzI10gKG1hcHBlZC1mcmFtZSBwMV9fNDU0NjMjIHNtcyBvcHRzKSkpXG4gICAgICBzdGFja3RyYWNlKV1cbiAgICAodmVjXG4gICAgIChtYXBcbiAgICAgIGNhbGwtbWVyZ2VcbiAgICAgIChtYXAgKGZuKiBbcDFfXzQ1NDY0I10gKGRpc3NvYyBwMV9fNDU0NjQjIDpjYWxsKSkgbWFwcGVkLWZyYW1lcylcbiAgICAgIChjb25jYXQgKHJlc3QgKG1hcCBjYWxsLT5mdW5jdGlvbiBtYXBwZWQtZnJhbWVzKSkgW3t9XSkpKSkpKSlcbiJ9IHs6c3ltIHBhcnNlLWludCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIHBhcnNlLWludFxuIFtzXVxuICM/KDpjbGogKExvbmcvcGFyc2VMb25nIHMpIDpjbGpzIChqcy9wYXJzZUludCBzIDEwKSkpXG4ifSB7OnN5bSBwYXJzZS1maWxlLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBicm93c2VyIGZpbGUgdXJsIGNvbnZlcnQgaXQgaW50byBhIHJlbGF0aXZlIHBhdGggdGhhdCBjYW4gYmUgdXNlZFxuICAgdG8gbG9jYXRlIHRoZSBvcmlnaW5hbCBzb3VyY2UuIiwgOmFyZ2xpc3RzIChbezprZXlzIFtob3N0IGhvc3QtcG9ydCBwb3J0XSwgOmFzIHJlcGwtZW52fSBmaWxlIHs6a2V5cyBbYXNzZXQtcGF0aF0sIDphcyBvcHRzfV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwYXJzZS1maWxlXG4gXCJHaXZlbiBhIGJyb3dzZXIgZmlsZSB1cmwgY29udmVydCBpdCBpbnRvIGEgcmVsYXRpdmUgcGF0aCB0aGF0IGNhbiBiZSB1c2VkXFxuICAgdG8gbG9jYXRlIHRoZSBvcmlnaW5hbCBzb3VyY2UuXCJcbiBbezprZXlzIFtob3N0IGhvc3QtcG9ydCBwb3J0XSwgOmFzIHJlcGwtZW52fVxuICBmaWxlXG4gIHs6a2V5cyBbYXNzZXQtcGF0aF0sIDphcyBvcHRzfV1cbiAobGV0XG4gIFt1cmxwYXRcbiAgIChpZlxuICAgIGhvc3RcbiAgICAoc3RyaW5nLT5yZWdleCAoc3RyIFwiaHR0cDovL1wiIGhvc3QgXCI6XCIgKG9yIGhvc3QtcG9ydCBwb3J0KSBcIi9cIikpXG4gICAgXCJcIilcbiAgIG1hdGNoXG4gICAoaWYgaG9zdCAocmUtZmluZCB1cmxwYXQgZmlsZSkgKGNvbnRhaW5zPyBvcHRzIDpvdXRwdXQtZGlyKSldXG4gIChpZlxuICAgbWF0Y2hcbiAgICgtPlxuICAgIGZpbGVcbiAgICAoc3RyaW5nL3JlcGxhY2UgdXJscGF0IFwiXCIpXG4gICAgKHN0cmluZy9yZXBsYWNlXG4gICAgIChzdHJpbmctPnJlZ2V4XG4gICAgICAoc3RyXG4gICAgICAgXCJeXCJcbiAgICAgICAob3JcbiAgICAgICAgKGFuZCBhc3NldC1wYXRoIChzdHJpbmcvcmVwbGFjZSBhc3NldC1wYXRoICNcIl4vXCIgXCJcIikpXG4gICAgICAgIChvdXRwdXQtZGlyZWN0b3J5IG9wdHMpKVxuICAgICAgIFwiL1wiKSlcbiAgICAgXCJcIikpXG4gICAoaWYtbGV0XG4gICAgW2Fzc2V0LXJvb3QgKDphc3NldC1yb290IG9wdHMpXVxuICAgIChzdHJpbmcvcmVwbGFjZSBmaWxlIGFzc2V0LXJvb3QgXCJcIilcbiAgICAodGhyb3dcbiAgICAgKGV4LWluZm9cbiAgICAgIChzdHIgXCJDb3VsZCBub3QgcmVsYXRpdml6ZSBVUkwgXCIgZmlsZSlcbiAgICAgIHs6dHlwZSA6cGFyc2Utc3RhY2t0cmFjZSwgOnJlYXNvbiA6cmVsYXRpdml6ZS11cmx9KSkpKSkpXG4ifSB7OnN5bSBwYXJzZS1maWxlLWxpbmUtY29sdW1uLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2ZsY10pfSwgOnNvdXJjZSAiKGRlZm5cbiBwYXJzZS1maWxlLWxpbmUtY29sdW1uXG4gW2ZsY11cbiAoaWYtbm90XG4gIChyZS1maW5kICNcIjpcIiBmbGMpXG4gIFtmbGMgbmlsIG5pbF1cbiAgKGxldFxuICAgW3hzXG4gICAgKHN0cmluZy9zcGxpdCBmbGMgI1wiOlwiKVxuICAgIFtwcmUgW2xpbmUgY29sdW1uXV1cbiAgICAocmVkdWNlXG4gICAgIChmblxuICAgICAgW1twcmUgcG9zdF0gW3ggaV1dXG4gICAgICAoaWYgKDw9IGkgMikgW3ByZSAoY29uaiBwb3N0IHgpXSBbKGNvbmogcHJlIHgpIHBvc3RdKSlcbiAgICAgW1tdIFtdXVxuICAgICAobWFwIHZlY3RvciB4cyAocmFuZ2UgKGNvdW50IHhzKSAwIC0xKSkpXG4gICAgZmlsZVxuICAgIChzdHJpbmcvam9pbiBcIjpcIiBwcmUpXVxuICAgWyhjb25kLT4gZmlsZSAoc3RhcnRzLXdpdGg/IGZpbGUgXCIoXCIpIChzdHJpbmcvcmVwbGFjZSBcIihcIiBcIlwiKSlcbiAgICAocGFyc2UtaW50XG4gICAgIChjb25kLT4gbGluZSAoZW5kcy13aXRoPyBsaW5lIFwiKVwiKSAoc3RyaW5nL3JlcGxhY2UgXCIpXCIgXCJcIikpKVxuICAgIChwYXJzZS1pbnRcbiAgICAgKGNvbmQtPlxuICAgICAgY29sdW1uXG4gICAgICAoZW5kcy13aXRoPyBjb2x1bW4gXCIpXCIpXG4gICAgICAoc3RyaW5nL3JlcGxhY2UgXCIpXCIgXCJcIikpKV0pKSlcbiJ9KSwgY2xqcy50b29scy5yZWFkZXIuaW1wbC5lcnJvcnMgKHs6c3ltIHRocm93LWludmFsaWQtdW5pY29kZS1lc2NhcGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGNoXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWludmFsaWQtdW5pY29kZS1lc2NhcGVcbiBbcmRyIGNoXVxuIChyZWFkZXItZXJyb3IgcmRyIFwiSW52YWxpZCB1bmljb2RlIGVzY2FwZTogXFxcXHVcIiBjaCBcIi5cIikpXG4ifSB7OnN5bSB0aHJvdy1kdXAta2V5cywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIga2luZCBrc10pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1kdXAta2V5c1xuIFtyZHIga2luZCBrc11cbiAocmVhZGVyLWVycm9yXG4gIHJkclxuICAoZHVwbGljYXRlLWtleXMtZXJyb3JcbiAgIChzdHIgKHMvY2FwaXRhbGl6ZSAobmFtZSBraW5kKSkgXCIgbGl0ZXJhbCBjb250YWlucyBkdXBsaWNhdGUga2V5XCIpXG4gICBrcykpKVxuIn0gezpzeW0gdGhyb3ctYmFkLW5zLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBucy1uYW1lXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWJhZC1uc1xuIFtyZHIgbnMtbmFtZV1cbiAocmVhZGVyLWVycm9yXG4gIHJkclxuICBcIkludmFsaWQgdmFsdWUgdXNlZCBhcyBuYW1lc3BhY2UgaW4gbmFtZXNwYWNlZCBtYXA6IFwiXG4gIG5zLW5hbWVcbiAgXCIuXCIpKVxuIn0gezpzeW0gdGhyb3ctdW5rbm93bi1yZWFkZXItdGFnLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciB0YWddKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctdW5rbm93bi1yZWFkZXItdGFnXG4gW3JkciB0YWddXG4gKHJlYWRlci1lcnJvciByZHIgXCJObyByZWFkZXIgZnVuY3Rpb24gZm9yIHRhZyBcIiAoaS9pbnNwZWN0IHRhZykgXCIuXCIpKVxuIn0gezpzeW0gdGhyb3ctZW9mLWF0LWRpc3BhdGNoLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3Jkcl0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1lb2YtYXQtZGlzcGF0Y2hcbiBbcmRyXVxuIChlb2YtZXJyb3IgcmRyIFwiVW5leHBlY3RlZCBFT0Ygd2hpbGUgcmVhZGluZyBkaXNwYXRjaCBjaGFyYWN0ZXIuXCIpKVxuIn0gezpzeW0gdGhyb3ctYmFkLW1ldGFkYXRhLXRhcmdldCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgdGFyZ2V0XSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWJhZC1tZXRhZGF0YS10YXJnZXRcbiBbcmRyIHRhcmdldF1cbiAocmVhZGVyLWVycm9yXG4gIHJkclxuICBcIk1ldGFkYXRhIGNhbiBub3QgYmUgYXBwbGllZCB0byBcIlxuICAoaS9pbnNwZWN0IHRhcmdldClcbiAgXCIuIFwiXG4gIFwiTWV0YWRhdGEgY2FuIG9ubHkgYmUgYXBwbGllZCB0byBJTWV0YXMuXCIpKVxuIn0gezpzeW0gdGhyb3ctaW52YWxpZC1udW1iZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIHRva2VuXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWludmFsaWQtbnVtYmVyXG4gW3JkciB0b2tlbl1cbiAocmVhZGVyLWVycm9yIHJkciBcIkludmFsaWQgbnVtYmVyOiBcIiB0b2tlbiBcIi5cIikpXG4ifSB7OnN5bSByZWFkZXItZXJyb3IsIDptZXRhIHs6ZG9jICJUaHJvd3MgYW4gRXhjZXB0aW9uSW5mbyB3aXRoIHRoZSBnaXZlbiBtZXNzYWdlLlxuICAgSWYgcmRyIGlzIGFuIEluZGV4aW5nUmVhZGVyLCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGNvbHVtbiBhbmQgbGluZSBudW1iZXIgaXMgcHJvdmlkZWQiLCA6YXJnbGlzdHMgKFtyZHIgJiBtc2dzXSl9LCA6c291cmNlICIoZGVmblxuIHJlYWRlci1lcnJvclxuIFwiVGhyb3dzIGFuIEV4Y2VwdGlvbkluZm8gd2l0aCB0aGUgZ2l2ZW4gbWVzc2FnZS5cXG4gICBJZiByZHIgaXMgYW4gSW5kZXhpbmdSZWFkZXIsIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgY29sdW1uIGFuZCBsaW5lIG51bWJlciBpcyBwcm92aWRlZFwiXG4gW3JkciAmIG1zZ3NdXG4gKHRocm93LWV4IHJkciA6cmVhZGVyLWVycm9yIChhcHBseSBzdHIgbXNncykpKVxuIn0gezpzeW0gdGhyb3ctaW52YWxpZC11bmljb2RlLWxpdGVyYWwsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIHRva2VuXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWludmFsaWQtdW5pY29kZS1saXRlcmFsXG4gW3JkciB0b2tlbl1cbiAodGhyb3dcbiAgKGlsbGVnYWwtYXJnLWVycm9yIHJkciBcIkludmFsaWQgdW5pY29kZSBsaXRlcmFsOiBcXFxcXCIgdG9rZW4gXCIuXCIpKSlcbiJ9IHs6c3ltIHRocm93LW5zLW1hcC1uby1tYXAsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIG5zLW5hbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctbnMtbWFwLW5vLW1hcFxuIFtyZHIgbnMtbmFtZV1cbiAocmVhZGVyLWVycm9yXG4gIHJkclxuICBcIk5hbWVzcGFjZWQgbWFwIHdpdGggbmFtZXNwYWNlIFwiXG4gIG5zLW5hbWVcbiAgXCIgZG9lcyBub3Qgc3BlY2lmeSBhIG1hcC5cIikpXG4ifSB7OnN5bSB0aHJvdy11bnN1cHBvcnRlZC1jaGFyYWN0ZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIHRva2VuXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LXVuc3VwcG9ydGVkLWNoYXJhY3RlclxuIFtyZHIgdG9rZW5dXG4gKHJlYWRlci1lcnJvciByZHIgXCJVbnN1cHBvcnRlZCBjaGFyYWN0ZXI6IFwiIHRva2VuIFwiLlwiKSlcbiJ9IHs6c3ltIHRocm93LWZlYXR1cmUtbm90LWtleXdvcmQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGZlYXR1cmVdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctZmVhdHVyZS1ub3Qta2V5d29yZFxuIFtyZHIgZmVhdHVyZV1cbiAocmVhZGVyLWVycm9yXG4gIHJkclxuICBcIkZlYXR1cmUgY2Fubm90IGJlIFwiXG4gIChpL2luc3BlY3QgZmVhdHVyZSlcbiAgXCIgRmVhdHVyZXMgbXVzdCBiZSBrZXl3b3Jkcy5cIikpXG4ifSB7OnN5bSB0aHJvdy1lb2YtZGVsaW1pdGVkLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW3JkciBraW5kIGNvbHVtbiBsaW5lXSBbcmRyIGtpbmQgbGluZSBjb2x1bW4gbl1dfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1lb2YtZGVsaW1pdGVkXG4gKFtyZHIga2luZCBjb2x1bW4gbGluZV1cbiAgKHRocm93LWVvZi1kZWxpbWl0ZWQgcmRyIGtpbmQgbGluZSBjb2x1bW4gbmlsKSlcbiAoW3JkciBraW5kIGxpbmUgY29sdW1uIG5dXG4gIChlb2YtZXJyb3JcbiAgIHJkclxuICAgXCJVbmV4cGVjdGVkIEVPRiB3aGlsZSByZWFkaW5nIFwiXG4gICAoaWYgbiAoc3RyIFwiaXRlbSBcIiBuIFwiIG9mIFwiKSlcbiAgIChuYW1lIGtpbmQpXG4gICAoaWYgbGluZSAoc3RyIFwiLCBzdGFydGluZyBhdCBsaW5lIFwiIGxpbmUgXCIgYW5kIGNvbHVtbiBcIiBjb2x1bW4pKVxuICAgXCIuXCIpKSlcbiJ9IHs6c3ltIHRocm93LWVvZi1pbi1jaGFyYWN0ZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWVvZi1pbi1jaGFyYWN0ZXJcbiBbcmRyXVxuIChlb2YtZXJyb3IgcmRyIFwiVW5leHBlY3RlZCBFT0Ygd2hpbGUgcmVhZGluZyBjaGFyYWN0ZXIuXCIpKVxuIn0gezpzeW0gdGhyb3ctYmFkLWNoYXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGtpbmQgY2hdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctYmFkLWNoYXJcbiBbcmRyIGtpbmQgY2hdXG4gKHJlYWRlci1lcnJvclxuICByZHJcbiAgXCJJbnZhbGlkIGNoYXJhY3RlcjogXCJcbiAgY2hcbiAgXCIgZm91bmQgd2hpbGUgcmVhZGluZyBcIlxuICAobmFtZSBraW5kKVxuICBcIi5cIikpXG4ifSB7OnN5bSBlb2YtZXJyb3IsIDptZXRhIHs6ZG9jICJUaHJvd3MgYW4gRXhjZXB0aW9uSW5mbyB3aXRoIHRoZSBnaXZlbiBtZXNzYWdlLlxuICAgSWYgcmRyIGlzIGFuIEluZGV4aW5nUmVhZGVyLCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGNvbHVtbiBhbmQgbGluZSBudW1iZXIgaXMgcHJvdmlkZWQiLCA6YXJnbGlzdHMgKFtyZHIgJiBtc2dzXSl9LCA6c291cmNlICIoZGVmblxuIGVvZi1lcnJvclxuIFwiVGhyb3dzIGFuIEV4Y2VwdGlvbkluZm8gd2l0aCB0aGUgZ2l2ZW4gbWVzc2FnZS5cXG4gICBJZiByZHIgaXMgYW4gSW5kZXhpbmdSZWFkZXIsIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgY29sdW1uIGFuZCBsaW5lIG51bWJlciBpcyBwcm92aWRlZFwiXG4gW3JkciAmIG1zZ3NdXG4gKHRocm93LWV4IHJkciA6ZW9mIChhcHBseSBzdHIgbXNncykpKVxuIn0gezpzeW0gdGhyb3ctYmFkLW1ldGFkYXRhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciB4XSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWJhZC1tZXRhZGF0YVxuIFtyZHIgeF1cbiAocmVhZGVyLWVycm9yXG4gIHJkclxuICBcIk1ldGFkYXRhIGNhbm5vdCBiZSBcIlxuICAoaS9pbnNwZWN0IHgpXG4gIFwiLiBNZXRhZGF0YSBtdXN0IGJlIGEgU3ltYm9sLCBLZXl3b3JkLCBTdHJpbmcgb3IgTWFwLlwiKSlcbiJ9IHs6c3ltIHRocm93LWVvZi1yZWFkaW5nLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBraW5kICYgc3RhcnRdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctZW9mLXJlYWRpbmdcbiBbcmRyIGtpbmQgJiBzdGFydF1cbiAobGV0XG4gIFtpbml0IChjYXNlIGtpbmQgOnJlZ2V4IFwiI1xcXCJcIiA6c3RyaW5nIFxcXCIpXVxuICAoZW9mLWVycm9yXG4gICByZHJcbiAgIFwiVW5leHBlY3RlZCBFT0YgcmVhZGluZyBcIlxuICAgKG5hbWUga2luZClcbiAgIFwiIHN0YXJ0aW5nIFwiXG4gICAoYXBwbHkgc3RyIGluaXQgc3RhcnQpXG4gICBcIi5cIikpKVxuIn0gezpzeW0gdGhyb3ctZW9mLWVycm9yLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBsaW5lXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWVvZi1lcnJvclxuIFtyZHIgbGluZV1cbiAoaWZcbiAgbGluZVxuICAoZW9mLWVycm9yIHJkciBcIkVPRiB3aGlsZSByZWFkaW5nLCBzdGFydGluZyBhdCBsaW5lIFwiIGxpbmUgXCIuXCIpXG4gIChlb2YtZXJyb3IgcmRyIFwiRU9GIHdoaWxlIHJlYWRpbmcuXCIpKSlcbiJ9IHs6c3ltIGlsbGVnYWwtYXJnLWVycm9yLCA6bWV0YSB7OmRvYyAiVGhyb3dzIGFuIEV4Y2VwdGlvbkluZm8gd2l0aCB0aGUgZ2l2ZW4gbWVzc2FnZS5cbiAgIElmIHJkciBpcyBhbiBJbmRleGluZ1JlYWRlciwgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBjb2x1bW4gYW5kIGxpbmUgbnVtYmVyIGlzIHByb3ZpZGVkIiwgOmFyZ2xpc3RzIChbcmRyICYgbXNnc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbGxlZ2FsLWFyZy1lcnJvclxuIFwiVGhyb3dzIGFuIEV4Y2VwdGlvbkluZm8gd2l0aCB0aGUgZ2l2ZW4gbWVzc2FnZS5cXG4gICBJZiByZHIgaXMgYW4gSW5kZXhpbmdSZWFkZXIsIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgY29sdW1uIGFuZCBsaW5lIG51bWJlciBpcyBwcm92aWRlZFwiXG4gW3JkciAmIG1zZ3NdXG4gKHRocm93LWV4IHJkciA6aWxsZWdhbC1hcmd1bWVudCAoYXBwbHkgc3RyIG1zZ3MpKSlcbiJ9IHs6c3ltIHRocm93LWludmFsaWQtb2N0YWwtbGVuLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciB0b2tlbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1pbnZhbGlkLW9jdGFsLWxlblxuIFtyZHIgdG9rZW5dXG4gKHJlYWRlci1lcnJvclxuICByZHJcbiAgXCJJbnZhbGlkIG9jdGFsIGVzY2FwZSBzZXF1ZW5jZSBpbiBhIGNoYXJhY3RlciBsaXRlcmFsOlwiXG4gIHRva2VuXG4gIFwiLiBPY3RhbCBlc2NhcGUgc2VxdWVuY2VzIG11c3QgYmUgMyBvciBmZXdlciBkaWdpdHMuXCIpKVxuIn0gezpzeW0gdGhyb3ctaW52YWxpZC11bmljb2RlLWRpZ2l0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBjaF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtZGlnaXRcbiBbcmRyIGNoXVxuIChpbGxlZ2FsLWFyZy1lcnJvciByZHIgXCJJbnZhbGlkIGRpZ2l0IFwiIGNoIFwiIGluIHVuaWNvZGUgY2hhcmFjdGVyLlwiKSlcbiJ9IHs6c3ltIHRocm93LWludmFsaWQtdW5pY29kZS1kaWdpdC1pbi10b2tlbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgY2ggdG9rZW5dKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctaW52YWxpZC11bmljb2RlLWRpZ2l0LWluLXRva2VuXG4gW3JkciBjaCB0b2tlbl1cbiAoaWxsZWdhbC1hcmctZXJyb3JcbiAgcmRyXG4gIFwiSW52YWxpZCBkaWdpdCBcIlxuICBjaFxuICBcIiBpbiB1bmljb2RlIGNoYXJhY3RlciBcXFxcXCJcbiAgdG9rZW5cbiAgXCIuXCIpKVxuIn0gezpzeW0gdGhyb3ctaW52YWxpZC11bmljb2RlLWxlbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgYWN0dWFsIGV4cGVjdGVkXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWludmFsaWQtdW5pY29kZS1sZW5cbiBbcmRyIGFjdHVhbCBleHBlY3RlZF1cbiAoaWxsZWdhbC1hcmctZXJyb3JcbiAgcmRyXG4gIFwiSW52YWxpZCB1bmljb2RlIGxpdGVyYWwuIFVuaWNvZGUgbGl0ZXJhbHMgc2hvdWxkIGJlIFwiXG4gIGV4cGVjdGVkXG4gIFwiY2hhcmFjdGVycyBsb25nLiAgXCJcbiAgXCJ2YWx1ZSBzdXBwbGVkIGlzIFwiXG4gIGFjdHVhbFxuICBcImNoYXJhY3RlcnMgbG9uZy5cIikpXG4ifSB7OnN5bSB0aHJvdy1zaW5nbGUtY29sb24sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LXNpbmdsZS1jb2xvblxuIFtyZHJdXG4gKHJlYWRlci1lcnJvciByZHIgXCJBIHNpbmdsZSBjb2xvbiBpcyBub3QgYSB2YWxpZCBrZXl3b3JkLlwiKSlcbiJ9IHs6c3ltIHRocm93LW9kZC1tYXAsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGxpbmUgY29sIGVsZW1lbnRzXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LW9kZC1tYXBcbiBbcmRyIGxpbmUgY29sIGVsZW1lbnRzXVxuIChyZWFkZXItZXJyb3JcbiAgcmRyXG4gIFwiVGhlIG1hcCBsaXRlcmFsIHN0YXJ0aW5nIHdpdGggXCJcbiAgKGkvaW5zcGVjdCAoZmlyc3QgZWxlbWVudHMpKVxuICAoaWYgbGluZSAoc3RyIFwiIG9uIGxpbmUgXCIgbGluZSBcIiBjb2x1bW4gXCIgY29sKSlcbiAgXCIgY29udGFpbnMgXCJcbiAgKGNvdW50IGVsZW1lbnRzKVxuICBcIiBmb3JtKHMpLiBNYXAgbGl0ZXJhbHMgbXVzdCBjb250YWluIGFuIGV2ZW4gbnVtYmVyIG9mIGZvcm1zLlwiKSlcbiJ9IHs6c3ltIHRocm93LWJhZC1vY3RhbC1udW1iZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWJhZC1vY3RhbC1udW1iZXJcbiBbcmRyXVxuIChyZWFkZXItZXJyb3IgcmRyIFwiT2N0YWwgZXNjYXBlIHNlcXVlbmNlIG11c3QgYmUgaW4gcmFuZ2UgWzAsIDM3N10uXCIpKVxuIn0gezpzeW0gdGhyb3ctYmFkLXJlYWRlci10YWcsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIHRhZ10pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1iYWQtcmVhZGVyLXRhZ1xuIFtyZHIgdGFnXVxuIChyZWFkZXItZXJyb3JcbiAgcmRyXG4gIFwiSW52YWxpZCByZWFkZXIgdGFnOiBcIlxuICAoaS9pbnNwZWN0IHRhZylcbiAgXCIuIFJlYWRlciB0YWdzIG11c3QgYmUgc3ltYm9scy5cIikpXG4ifSB7OnN5bSB0aHJvdy11bm1hdGNoLWRlbGltaXRlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgY2hdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctdW5tYXRjaC1kZWxpbWl0ZXJcbiBbcmRyIGNoXVxuIChyZWFkZXItZXJyb3IgcmRyIFwiVW5tYXRjaGVkIGRlbGltaXRlciBcIiBjaCBcIi5cIikpXG4ifSB7OnN5bSB0aHJvdy1pbnZhbGlkLWNoYXJhY3Rlci1saXRlcmFsLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciB0b2tlbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1pbnZhbGlkLWNoYXJhY3Rlci1saXRlcmFsXG4gW3JkciB0b2tlbl1cbiAocmVhZGVyLWVycm9yIHJkciBcIkludmFsaWQgY2hhcmFjdGVyIGxpdGVyYWwgXFxcXHVcIiB0b2tlbiBcIi5cIikpXG4ifSB7OnN5bSB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtY2hhciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgdG9rZW5dKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctaW52YWxpZC11bmljb2RlLWNoYXJcbiBbcmRyIHRva2VuXVxuIChyZWFkZXItZXJyb3IgcmRyIFwiSW52YWxpZCB1bmljb2RlIGNoYXJhY3RlciBcXFxcXCIgdG9rZW4gXCIuXCIpKVxuIn0gezpzeW0gdGhyb3ctYmFkLWVzY2FwZS1jaGFyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBjaF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1iYWQtZXNjYXBlLWNoYXJcbiBbcmRyIGNoXVxuIChyZWFkZXItZXJyb3IgcmRyIFwiVW5zdXBwb3J0ZWQgZXNjYXBlIGNoYXJhY3RlcjogXFxcXFwiIGNoIFwiLlwiKSlcbiJ9IHs6c3ltIHRocm93LWVvZi1hdC1zdGFydCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIga2luZF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1lb2YtYXQtc3RhcnRcbiBbcmRyIGtpbmRdXG4gKGVvZi1lcnJvclxuICByZHJcbiAgXCJVbmV4cGVjdGVkIEVPRiB3aGlsZSByZWFkaW5nIHN0YXJ0IG9mIFwiXG4gIChuYW1lIGtpbmQpXG4gIFwiLlwiKSlcbiJ9IHs6c3ltIHRocm93LWludmFsaWQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGtpbmQgdG9rZW5dKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctaW52YWxpZFxuIFtyZHIga2luZCB0b2tlbl1cbiAocmVhZGVyLWVycm9yIHJkciBcIkludmFsaWQgXCIgKG5hbWUga2luZCkgXCI6IFwiIHRva2VuIFwiLlwiKSlcbiJ9KSwgaWdsdS5wYXJzZSAoezpzeW0gKmZuLWRlcGVuZGVuY2llcyosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpmbi1kZXBlbmRlbmNpZXMqIG5pbClcbiJ9IHs6c3ltICpjdXJyZW50LWZuKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmN1cnJlbnQtZm4qIG5pbClcbiJ9IHs6c3ltIGZuLW5hbWU/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gZm4tbmFtZT9cbiBbeF1cbiAod2hlblxuICAoYW5kIChzeW1ib2w/IHgpICpjdXJyZW50LWZuKilcbiAgKHNvbWUtPlxuICAgKmZuLWRlcGVuZGVuY2llcypcbiAgIChzd2FwIVxuICAgIChmblxuICAgICBbZGVwc11cbiAgICAgKHdoZW5cbiAgICAgIChjb250YWlucz8gKGRlcHMgeCkgKmN1cnJlbnQtZm4qKVxuICAgICAgKHRocm93XG4gICAgICAgKGV4LWluZm9cbiAgICAgICAgXCJDeWNsaWMgZGVwZW5kZW5jeSBkZXRlY3RlZCBiZXR3ZWVuIGZ1bmN0aW9uc1wiXG4gICAgICAgIHs6Zmlyc3QtZm4gKmN1cnJlbnQtZm4qLCA6c2Vjb25kLWZuIHh9KSkpXG4gICAgICh1cGRhdGVcbiAgICAgIGRlcHNcbiAgICAgICpjdXJyZW50LWZuKlxuICAgICAgKGZuKiBbcDFfXzQ1NDY2I10gKGNvbmogKHNldCBwMV9fNDU0NjYjKSB4KSkpKSkpKVxuIChvciAoc3ltYm9sPyB4KSAobnVtYmVyPyB4KSAoc3RyaW5nPyB4KSkpXG4ifSB7OnN5bSBwYXJzZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjb250ZW50XSl9LCA6c291cmNlICIoZGVmblxuIHBhcnNlXG4gW2NvbnRlbnRdXG4gKGxldFxuICBbcGFyc2VkLWNvbnRlbnQgKHMvY29uZm9ybSA6aWdsdS5wYXJzZS9zaGFkZXIgY29udGVudCldXG4gIChpZlxuICAgKD0gcGFyc2VkLWNvbnRlbnQgOmNsb2p1cmUuc3BlYy5hbHBoYS9pbnZhbGlkKVxuICAgKHRocm93XG4gICAgKGV4LWluZm8gKGV4cG91bmQvZXhwb3VuZC1zdHIgOmlnbHUucGFyc2Uvc2hhZGVyIGNvbnRlbnQpIHt9KSlcbiAgIChsZXRcbiAgICBbKmZuLWRlcHMgKGF0b20ge30pXVxuICAgICh3aGVuXG4gICAgIChtYXA/ICg6ZnVuY3Rpb25zIGNvbnRlbnQpKVxuICAgICAoZG9zZXFcbiAgICAgIFtbZm4tc3ltIGJvZHldICg6ZnVuY3Rpb25zIGNvbnRlbnQpXVxuICAgICAgKGJpbmRpbmdcbiAgICAgICBbKmZuLWRlcGVuZGVuY2llcyogKmZuLWRlcHMgKmN1cnJlbnQtZm4qIGZuLXN5bV1cbiAgICAgICAocy9jb25mb3JtIDppZ2x1LnBhcnNlL2Z1bmN0aW9uIGJvZHkpKSkpXG4gICAgKGFzc29jIHBhcnNlZC1jb250ZW50IDpmbi1kZXBzIEAqZm4tZGVwcykpKSkpXG4ifSksIGNsanMuanMgKHs6c3ltICpsb2FkLWZuKiwgOm1ldGEgezpkb2MgIkVhY2ggcnVudGltZSBlbnZpcm9ubWVudCBwcm92aWRlcyBhIGRpZmZlcmVudCB3YXkgdG8gbG9hZCBhIGxpYnJhcnkuXG4gIFdoYXRldmVyIGZ1bmN0aW9uICpsb2FkLWZuKiBpcyBib3VuZCB0byB3aWxsIGJlIHBhc3NlZCB0d28gYXJndW1lbnRzIC0gYVxuICBtYXAgYW5kIGEgY2FsbGJhY2sgZnVuY3Rpb246IFRoZSBtYXAgd2lsbCBoYXZlIHRoZSBmb2xsb3dpbmcga2V5czpcblxuICA6bmFtZSAgIC0gdGhlIG5hbWUgb2YgdGhlIGxpYnJhcnkgKGEgc3ltYm9sKVxuICA6bWFjcm9zIC0gbW9kaWZpZXIgc2lnbmFsaW5nIGEgbWFjcm9zIG5hbWVzcGFjZSBsb2FkXG4gIDpwYXRoICAgLSBtdW5nZWQgcmVsYXRpdmUgbGlicmFyeSBwYXRoIChhIHN0cmluZylcblxuICBJdCBpcyB1cCB0byB0aGUgaW1wbGVtZW50b3IgdG8gY29ycmVjdGx5IHJlc29sdmUgdGhlIGNvcnJlc3BvbmRpbmcgLmNsanMsXG4gIC5jbGpjLCBvciAuanMgcmVzb3VyY2UgKHRoZSBvcmRlciBtdXN0IGJlIHJlc3BlY3RlZCkuIElmIDptYWNyb3MgaXMgdHJ1ZVxuICByZXNvbHV0aW9uIHNob3VsZCBvbmx5IGNvbnNpZGVyIC5jbGogb3IgLmNsamMgcmVzb3VyY2VzICh0aGUgb3JkZXIgbXVzdCBiZVxuICByZXNwZWN0ZWQpLiBVcG9uIHJlc29sdXRpb24gdGhlIGNhbGxiYWNrIHNob3VsZCBiZSBpbnZva2VkIHdpdGggYSBtYXBcbiAgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIGtleXM6XG5cbiAgOmxhbmcgICAgICAgLSB0aGUgbGFuZ3VhZ2UsIDpjbGogb3IgOmpzXG4gIDpzb3VyY2UgICAgIC0gdGhlIHNvdXJjZSBvZiB0aGUgbGlicmFyeSAoYSBzdHJpbmcpXG4gIDpmaWxlICAgICAgIC0gb3B0aW9uYWwsIHRoZSBmaWxlIHBhdGgsIGl0IHdpbGwgYmUgYWRkZWQgdG8gQVNUJ3MgOmZpbGUga2V5d29yZFxuICAgICAgICAgICAgICAgIChidXQgbm90IGluIDptZXRhKVxuICA6Y2FjaGUgICAgICAtIG9wdGlvbmFsLCBpZiBhIDpjbGogbmFtZXNwYWNlIGhhcyBiZWVuIHByZWNvbXBpbGVkIHRvIDpqcywgY2FuXG4gICAgICAgICAgICAgICAgZ2l2ZSBhbiBhbmFseXNpcyBjYWNoZSBmb3IgZmFzdGVyIGxvYWRzLlxuICA6c291cmNlLW1hcCAtIG9wdGlvbmFsLCBpZiBhIDpjbGogbmFtZXNwYWNlIGhhcyBiZWVuIHByZWNvbXBpbGVkIHRvIDpqcywgY2FuXG4gICAgICAgICAgICAgICAgZ2l2ZSBhIFYzIHNvdXJjZSBtYXAgSlNPTlxuXG4gIElmIHRoZSByZXNvdXJjZSBjb3VsZCBub3QgYmUgcmVzb2x2ZWQsIHRoZSBjYWxsYmFjayBzaG91bGQgYmUgaW52b2tlZCB3aXRoXG4gIG5pbC4ifSwgOnNvdXJjZSAiKGRlZm9uY2UgKmxvYWQtZm4qIChmbiBbbSBjYl0gKHRocm93IChqcy9FcnJvci4gXCJObyAqbG9hZC1mbiogc2V0XCIpKSkpXG4ifSB7OnN5bSBldmFsLCA6bWV0YSB7OmRvYyAiRXZhbHVhdGUgYSBzaW5nbGUgQ2xvanVyZVNjcmlwdCBmb3JtLiBUaGUgcGFyYW1ldGVyczpcblxuICAgc3RhdGUgKGF0b20pXG4gICAgIHRoZSBjb21waWxlciBzdGF0ZVxuXG4gICBmb3JtIChzLWV4cHIpXG4gICAgIHRoZSBDbG9qdXJlU2NyaXB0IHNvdXJjZVxuXG4gICBvcHRzIChtYXApXG4gICAgIGNvbXBpbGF0aW9uIG9wdGlvbnMuXG5cbiAgICAgIDpldmFsICAgICAgICAgICAgIC0gZXZhbCBmdW5jdGlvbiB0byBpbnZva2UsIHNlZSAqZXZhbC1mbipcbiAgICAgIDpsb2FkICAgICAgICAgICAgIC0gbGlicmFyeSByZXNvbHV0aW9uIGZ1bmN0aW9uLCBzZWUgKmxvYWQtZm4qXG4gICAgICA6c291cmNlLW1hcCAgICAgICAtIHNldCB0byB0cnVlIHRvIGdlbmVyYXRlIGlubGluZSBzb3VyY2UgbWFwIGluZm9ybWF0aW9uXG4gICAgICA6ZGVmLWVtaXRzLXZhciAgICAtIHNldHMgd2hldGhlciBkZWYgKGFuZCBkZXJpdmVkKSBmb3JtcyByZXR1cm4gZWl0aGVyIGEgVmFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBzZXQgdG8gdHJ1ZSkgb3IgdGhlIGRlZiBpbml0IHZhbHVlIChpZiBmYWxzZSkuIERlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgZmFsc2UuXG4gICAgICA6Y2hlY2tlZC1hcnJheXMgICAtIGlmIDp3YXJuIG9yIDplcnJvciwgY2hlY2tzIGluZmVycmVkIHR5cGVzIGFuZCB2YWx1ZXMgcGFzc2VkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGFnZXQvYXNldC4gTG9ncyBmb3IgaW5jb3JyZWN0IHZhbHVlcyBpZiA6d2FybiwgdGhyb3dzIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDplcnJvci4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICA6c3RhdGljLWZucyAgICAgICAtIGVtcGxveSBzdGF0aWMgZGlzcGF0Y2ggdG8gc3BlY2lmaWMgZnVuY3Rpb24gYXJpdGllcyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0dGVkIEphdmFTY3JpcHQsIGFzIG9wcG9zZWQgdG8gbWFraW5nIHVzZSBvZiB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYGNhbGxgIGNvbnN0cnVjdC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICA6Zm4taW52b2tlLWRpcmVjdCAtIGlmIGB0cnVlYCwgZG9lcyBub3QgZ2VuZXJhdGUgYC5jYWxsKG51bGwuLi4pYCBjYWxscyBmb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5rbm93biBmdW5jdGlvbnMsIGJ1dCBpbnN0ZWFkIGRpcmVjdCBpbnZva2VzIHZpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICBgZihhMCxhMS4uLilgLiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICAgICAgOnRhcmdldCAgICAgICAgICAgLSB1c2UgYDpub2RlanNgIGlmIHRhcmdldGluZyBOb2RlLmpzLiBUYWtlcyBubyBvdGhlciBvcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0IHRoZSBtb21lbnQuXG4gICAgICA6bnMgICAgICAgICAgICAgICAtIG9wdGlvbmFsLCB0aGUgbmFtZXNwYWNlIGluIHdoaWNoIHRvIGV2YWx1YXRlIHRoZSBzb3VyY2UuXG4gICAgICA6dmVyYm9zZSAgICAgICAgICAtIG9wdGlvbmFsLCBlbWl0IGRldGFpbHMgZnJvbSBjb21waWxlciBhY3Rpdml0eS4gRGVmYXVsdHMgdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UuXG4gICAgICA6Y29udGV4dCAgICAgICAgICAtIG9wdGlvbmFsLCBzZXRzIHRoZSBjb250ZXh0IGZvciB0aGUgc291cmNlLiBQb3NzaWJsZSB2YWx1ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIGA6ZXhwcmAsIGA6c3RhdGVtZW50YCBhbmQgYDpyZXR1cm5gLiBEZWZhdWx0cyB0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgOnN0YXRlbWVudGAuXG5cbiAgIGNiIChmdW5jdGlvbilcbiAgICAgY2FsbGJhY2ssIHdpbGwgYmUgaW52b2tlZCB3aXRoIGEgbWFwLiBJZiBzdWNjZXNzZnVsIHRoZSBtYXAgd2lsbCBjb250YWluXG4gICAgIGEga2V5IDp2YWx1ZSB3aXRoIHRoZSByZXN1bHQgb2YgZXZhbHV0aW9uLiBJZiB1bnN1Y2Nlc3NmdWwgdGhlIG1hcCB3aWxsXG4gICAgIGNvbnRhaW4gYSBrZXkgOmVycm9yIHdpdGggYW4gZXgtaW5mbyBpbnN0YW5jZSBkZXNjcmliaW5nIHRoZSBjYXVzZSBvZlxuICAgICBmYWlsdXJlLiIsIDphcmdsaXN0cyBbW3N0YXRlIGZvcm0gY2JdIFtzdGF0ZSBmb3JtIG9wdHMgY2JdXX0sIDpzb3VyY2UgIihkZWZuXG4gZXZhbFxuIFwiRXZhbHVhdGUgYSBzaW5nbGUgQ2xvanVyZVNjcmlwdCBmb3JtLiBUaGUgcGFyYW1ldGVyczpcXG5cXG4gICBzdGF0ZSAoYXRvbSlcXG4gICAgIHRoZSBjb21waWxlciBzdGF0ZVxcblxcbiAgIGZvcm0gKHMtZXhwcilcXG4gICAgIHRoZSBDbG9qdXJlU2NyaXB0IHNvdXJjZVxcblxcbiAgIG9wdHMgKG1hcClcXG4gICAgIGNvbXBpbGF0aW9uIG9wdGlvbnMuXFxuXFxuICAgICAgOmV2YWwgICAgICAgICAgICAgLSBldmFsIGZ1bmN0aW9uIHRvIGludm9rZSwgc2VlICpldmFsLWZuKlxcbiAgICAgIDpsb2FkICAgICAgICAgICAgIC0gbGlicmFyeSByZXNvbHV0aW9uIGZ1bmN0aW9uLCBzZWUgKmxvYWQtZm4qXFxuICAgICAgOnNvdXJjZS1tYXAgICAgICAgLSBzZXQgdG8gdHJ1ZSB0byBnZW5lcmF0ZSBpbmxpbmUgc291cmNlIG1hcCBpbmZvcm1hdGlvblxcbiAgICAgIDpkZWYtZW1pdHMtdmFyICAgIC0gc2V0cyB3aGV0aGVyIGRlZiAoYW5kIGRlcml2ZWQpIGZvcm1zIHJldHVybiBlaXRoZXIgYSBWYXJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBzZXQgdG8gdHJ1ZSkgb3IgdGhlIGRlZiBpbml0IHZhbHVlIChpZiBmYWxzZSkuIERlZmF1bHRcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGZhbHNlLlxcbiAgICAgIDpjaGVja2VkLWFycmF5cyAgIC0gaWYgOndhcm4gb3IgOmVycm9yLCBjaGVja3MgaW5mZXJyZWQgdHlwZXMgYW5kIHZhbHVlcyBwYXNzZWRcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGFnZXQvYXNldC4gTG9ncyBmb3IgaW5jb3JyZWN0IHZhbHVlcyBpZiA6d2FybiwgdGhyb3dzIGlmXFxuICAgICAgICAgICAgICAgICAgICAgICAgICA6ZXJyb3IuIERlZmF1bHRzIHRvIGZhbHNlLlxcbiAgICAgIDpzdGF0aWMtZm5zICAgICAgIC0gZW1wbG95IHN0YXRpYyBkaXNwYXRjaCB0byBzcGVjaWZpYyBmdW5jdGlvbiBhcml0aWVzIGluXFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0dGVkIEphdmFTY3JpcHQsIGFzIG9wcG9zZWQgdG8gbWFraW5nIHVzZSBvZiB0aGVcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBjYWxsYCBjb25zdHJ1Y3QuIERlZmF1bHRzIHRvIGZhbHNlLlxcbiAgICAgIDpmbi1pbnZva2UtZGlyZWN0IC0gaWYgYHRydWVgLCBkb2VzIG5vdCBnZW5lcmF0ZSBgLmNhbGwobnVsbC4uLilgIGNhbGxzIGZvclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5rbm93biBmdW5jdGlvbnMsIGJ1dCBpbnN0ZWFkIGRpcmVjdCBpbnZva2VzIHZpYVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYGYoYTAsYTEuLi4pYC4gRGVmYXVsdHMgdG8gYGZhbHNlYC5cXG4gICAgICA6dGFyZ2V0ICAgICAgICAgICAtIHVzZSBgOm5vZGVqc2AgaWYgdGFyZ2V0aW5nIE5vZGUuanMuIFRha2VzIG5vIG90aGVyIG9wdGlvbnNcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0IHRoZSBtb21lbnQuXFxuICAgICAgOm5zICAgICAgICAgICAgICAgLSBvcHRpb25hbCwgdGhlIG5hbWVzcGFjZSBpbiB3aGljaCB0byBldmFsdWF0ZSB0aGUgc291cmNlLlxcbiAgICAgIDp2ZXJib3NlICAgICAgICAgIC0gb3B0aW9uYWwsIGVtaXQgZGV0YWlscyBmcm9tIGNvbXBpbGVyIGFjdGl2aXR5LiBEZWZhdWx0cyB0b1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UuXFxuICAgICAgOmNvbnRleHQgICAgICAgICAgLSBvcHRpb25hbCwgc2V0cyB0aGUgY29udGV4dCBmb3IgdGhlIHNvdXJjZS4gUG9zc2libGUgdmFsdWVzXFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgYDpleHByYCwgYDpzdGF0ZW1lbnRgIGFuZCBgOnJldHVybmAuIERlZmF1bHRzIHRvXFxuICAgICAgICAgICAgICAgICAgICAgICAgICBgOnN0YXRlbWVudGAuXFxuXFxuICAgY2IgKGZ1bmN0aW9uKVxcbiAgICAgY2FsbGJhY2ssIHdpbGwgYmUgaW52b2tlZCB3aXRoIGEgbWFwLiBJZiBzdWNjZXNzZnVsIHRoZSBtYXAgd2lsbCBjb250YWluXFxuICAgICBhIGtleSA6dmFsdWUgd2l0aCB0aGUgcmVzdWx0IG9mIGV2YWx1dGlvbi4gSWYgdW5zdWNjZXNzZnVsIHRoZSBtYXAgd2lsbFxcbiAgICAgY29udGFpbiBhIGtleSA6ZXJyb3Igd2l0aCBhbiBleC1pbmZvIGluc3RhbmNlIGRlc2NyaWJpbmcgdGhlIGNhdXNlIG9mXFxuICAgICBmYWlsdXJlLlwiXG4gKFtzdGF0ZSBmb3JtIGNiXSAoZXZhbCBzdGF0ZSBmb3JtIG5pbCBjYikpXG4gKFtzdGF0ZSBmb3JtIG9wdHMgY2JdXG4gIChldmFsKlxuICAgezoqY29tcGlsZXIqIHN0YXRlLFxuICAgIDoqZGF0YS1yZWFkZXJzKiB0YWdzLypjbGpzLWRhdGEtcmVhZGVycyosXG4gICAgOiphbmFseXplLWRlcHMqICg6YW5hbHl6ZS1kZXBzIG9wdHMgdHJ1ZSksXG4gICAgOipjbGpzLWRlcC1zZXQqIGFuYS8qY2xqcy1kZXAtc2V0KixcbiAgICA6KmxvYWQtbWFjcm9zKiAoOmxvYWQtbWFjcm9zIG9wdHMgdHJ1ZSksXG4gICAgOipsb2FkLWZuKiAob3IgKDpsb2FkIG9wdHMpICpsb2FkLWZuKiksXG4gICAgOipldmFsLWZuKiAob3IgKDpldmFsIG9wdHMpICpldmFsLWZuKil9XG4gICBmb3JtXG4gICBvcHRzXG4gICBjYikpKVxuIn0gezpzeW0gY29tcGlsZS1zdHIsIDptZXRhIHs6ZG9jICJDb21waWxlIENsb2p1cmVTY3JpcHQgc291cmNlIGludG8gSmF2YVNjcmlwdC4gVGhlIHBhcmFtZXRlcnM6XG5cbiAgIHN0YXRlIChhdG9tKVxuICAgICB0aGUgY29tcGlsZXIgc3RhdGVcblxuICAgc291cmNlIChzdHJpbmcpXG4gICAgIHRoZSBDbG9qdXJlU2NyaXB0IHNvdXJjZVxuXG4gICBuYW1lIChzeW1ib2wgb3Igc3RyaW5nKVxuICAgICBvcHRpb25hbCwgdGhlIG5hbWUgb2YgdGhlIHNvdXJjZSAtIHVzZWQgYXMga2V5IGluIDpzb3VyY2UtbWFwc1xuXG4gICBvcHRzIChtYXApXG4gICAgIGNvbXBpbGF0aW9uIG9wdGlvbnMuXG5cbiAgICAgIDpldmFsICAgICAgICAgICAgIC0gZXZhbCBmdW5jdGlvbiB0byBpbnZva2UsIHNlZSAqZXZhbC1mbipcbiAgICAgIDpsb2FkICAgICAgICAgICAgIC0gbGlicmFyeSByZXNvbHV0aW9uIGZ1bmN0aW9uLCBzZWUgKmxvYWQtZm4qXG4gICAgICA6c291cmNlLW1hcCAgICAgICAtIHNldCB0byB0cnVlIHRvIGdlbmVyYXRlIGlubGluZSBzb3VyY2UgbWFwIGluZm9ybWF0aW9uXG4gICAgICA6ZGVmLWVtaXRzLXZhciAgICAtIHNldHMgd2hldGhlciBkZWYgKGFuZCBkZXJpdmVkKSBmb3JtcyByZXR1cm4gZWl0aGVyIGEgVmFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBzZXQgdG8gdHJ1ZSkgb3IgdGhlIGRlZiBpbml0IHZhbHVlIChpZiBmYWxzZSkuIERlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgZmFsc2UuXG4gICAgICA6Y2hlY2tlZC1hcnJheXMgICAtIGlmIDp3YXJuIG9yIDplcnJvciwgY2hlY2tzIGluZmVycmVkIHR5cGVzIGFuZCB2YWx1ZXMgcGFzc2VkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGFnZXQvYXNldC4gTG9ncyBmb3IgaW5jb3JyZWN0IHZhbHVlcyBpZiA6d2FybiwgdGhyb3dzIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDplcnJvci4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICA6c3RhdGljLWZucyAgICAgICAtIGVtcGxveSBzdGF0aWMgZGlzcGF0Y2ggdG8gc3BlY2lmaWMgZnVuY3Rpb24gYXJpdGllcyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0dGVkIEphdmFTY3JpcHQsIGFzIG9wcG9zZWQgdG8gbWFraW5nIHVzZSBvZiB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYGNhbGxgIGNvbnN0cnVjdC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICA6Zm4taW52b2tlLWRpcmVjdCAtIGlmIGB0cnVlYCwgZG9lcyBub3QgZ2VuZXJhdGUgYC5jYWxsKG51bGwuLi4pYCBjYWxscyBmb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5rbm93biBmdW5jdGlvbnMsIGJ1dCBpbnN0ZWFkIGRpcmVjdCBpbnZva2VzIHZpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICBgZihhMCxhMS4uLilgLiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICAgICAgOnRhcmdldCAgICAgICAgICAgLSB1c2UgYDpub2RlanNgIGlmIHRhcmdldGluZyBOb2RlLmpzLiBUYWtlcyBubyBvdGhlciBvcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0IHRoZSBtb21lbnQuXG4gICAgICA6bnMgICAgICAgICAgICAgICAtIG9wdGlvbmFsLCB0aGUgbmFtZXNwYWNlIGluIHdoaWNoIHRvIGV2YWx1YXRlIHRoZSBzb3VyY2UuXG4gICAgICA6dmVyYm9zZSAgICAgICAgICAtIG9wdGlvbmFsLCBlbWl0IGRldGFpbHMgZnJvbSBjb21waWxlciBhY3Rpdml0eS4gRGVmYXVsdHMgdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UuXG4gICAgICA6Y29udGV4dCAgICAgICAgICAtIG9wdGlvbmFsLCBzZXRzIHRoZSBjb250ZXh0IGZvciB0aGUgc291cmNlLiBQb3NzaWJsZSB2YWx1ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIGA6ZXhwcmAsIGA6c3RhdGVtZW50YCBhbmQgYDpyZXR1cm5gLiBEZWZhdWx0cyB0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgOnN0YXRlbWVudGAuXG5cbiAgIGNiIChmdW5jdGlvbilcbiAgICAgY2FsbGJhY2ssIHdpbGwgYmUgaW52b2tlZCB3aXRoIGEgbWFwLiBJZiBzdWNjZXNzZnVsIHRoZSBtYXAgd2lsbCBjb250YWluXG4gICAgIGEga2V5IDp2YWx1ZSB3aXRoIHRoZSBjb21waWxhdGlvbiByZXN1bHQgKHN0cmluZykuIElmIHVuc3VjY2Vzc2Z1bCB0aGUgbWFwXG4gICAgIHdpbGwgY29udGFpbiBhIGtleSA6ZXJyb3Igd2l0aCBhbiBleC1pbmZvIGluc3RhbmNlIGRlc2NyaWJpbmcgdGhlIGNhdXNlXG4gICAgIG9mIGZhaWx1cmUuIiwgOmFyZ2xpc3RzIFtbc3RhdGUgc291cmNlIGNiXSBbc3RhdGUgc291cmNlIG5hbWUgY2JdIFtzdGF0ZSBzb3VyY2UgbmFtZSBvcHRzIGNiXV19LCA6c291cmNlICIoZGVmblxuIGNvbXBpbGUtc3RyXG4gXCJDb21waWxlIENsb2p1cmVTY3JpcHQgc291cmNlIGludG8gSmF2YVNjcmlwdC4gVGhlIHBhcmFtZXRlcnM6XFxuXFxuICAgc3RhdGUgKGF0b20pXFxuICAgICB0aGUgY29tcGlsZXIgc3RhdGVcXG5cXG4gICBzb3VyY2UgKHN0cmluZylcXG4gICAgIHRoZSBDbG9qdXJlU2NyaXB0IHNvdXJjZVxcblxcbiAgIG5hbWUgKHN5bWJvbCBvciBzdHJpbmcpXFxuICAgICBvcHRpb25hbCwgdGhlIG5hbWUgb2YgdGhlIHNvdXJjZSAtIHVzZWQgYXMga2V5IGluIDpzb3VyY2UtbWFwc1xcblxcbiAgIG9wdHMgKG1hcClcXG4gICAgIGNvbXBpbGF0aW9uIG9wdGlvbnMuXFxuXFxuICAgICAgOmV2YWwgICAgICAgICAgICAgLSBldmFsIGZ1bmN0aW9uIHRvIGludm9rZSwgc2VlICpldmFsLWZuKlxcbiAgICAgIDpsb2FkICAgICAgICAgICAgIC0gbGlicmFyeSByZXNvbHV0aW9uIGZ1bmN0aW9uLCBzZWUgKmxvYWQtZm4qXFxuICAgICAgOnNvdXJjZS1tYXAgICAgICAgLSBzZXQgdG8gdHJ1ZSB0byBnZW5lcmF0ZSBpbmxpbmUgc291cmNlIG1hcCBpbmZvcm1hdGlvblxcbiAgICAgIDpkZWYtZW1pdHMtdmFyICAgIC0gc2V0cyB3aGV0aGVyIGRlZiAoYW5kIGRlcml2ZWQpIGZvcm1zIHJldHVybiBlaXRoZXIgYSBWYXJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBzZXQgdG8gdHJ1ZSkgb3IgdGhlIGRlZiBpbml0IHZhbHVlIChpZiBmYWxzZSkuIERlZmF1bHRcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGZhbHNlLlxcbiAgICAgIDpjaGVja2VkLWFycmF5cyAgIC0gaWYgOndhcm4gb3IgOmVycm9yLCBjaGVja3MgaW5mZXJyZWQgdHlwZXMgYW5kIHZhbHVlcyBwYXNzZWRcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGFnZXQvYXNldC4gTG9ncyBmb3IgaW5jb3JyZWN0IHZhbHVlcyBpZiA6d2FybiwgdGhyb3dzIGlmXFxuICAgICAgICAgICAgICAgICAgICAgICAgICA6ZXJyb3IuIERlZmF1bHRzIHRvIGZhbHNlLlxcbiAgICAgIDpzdGF0aWMtZm5zICAgICAgIC0gZW1wbG95IHN0YXRpYyBkaXNwYXRjaCB0byBzcGVjaWZpYyBmdW5jdGlvbiBhcml0aWVzIGluXFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0dGVkIEphdmFTY3JpcHQsIGFzIG9wcG9zZWQgdG8gbWFraW5nIHVzZSBvZiB0aGVcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBjYWxsYCBjb25zdHJ1Y3QuIERlZmF1bHRzIHRvIGZhbHNlLlxcbiAgICAgIDpmbi1pbnZva2UtZGlyZWN0IC0gaWYgYHRydWVgLCBkb2VzIG5vdCBnZW5lcmF0ZSBgLmNhbGwobnVsbC4uLilgIGNhbGxzIGZvclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5rbm93biBmdW5jdGlvbnMsIGJ1dCBpbnN0ZWFkIGRpcmVjdCBpbnZva2VzIHZpYVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYGYoYTAsYTEuLi4pYC4gRGVmYXVsdHMgdG8gYGZhbHNlYC5cXG4gICAgICA6dGFyZ2V0ICAgICAgICAgICAtIHVzZSBgOm5vZGVqc2AgaWYgdGFyZ2V0aW5nIE5vZGUuanMuIFRha2VzIG5vIG90aGVyIG9wdGlvbnNcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0IHRoZSBtb21lbnQuXFxuICAgICAgOm5zICAgICAgICAgICAgICAgLSBvcHRpb25hbCwgdGhlIG5hbWVzcGFjZSBpbiB3aGljaCB0byBldmFsdWF0ZSB0aGUgc291cmNlLlxcbiAgICAgIDp2ZXJib3NlICAgICAgICAgIC0gb3B0aW9uYWwsIGVtaXQgZGV0YWlscyBmcm9tIGNvbXBpbGVyIGFjdGl2aXR5LiBEZWZhdWx0cyB0b1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UuXFxuICAgICAgOmNvbnRleHQgICAgICAgICAgLSBvcHRpb25hbCwgc2V0cyB0aGUgY29udGV4dCBmb3IgdGhlIHNvdXJjZS4gUG9zc2libGUgdmFsdWVzXFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgYDpleHByYCwgYDpzdGF0ZW1lbnRgIGFuZCBgOnJldHVybmAuIERlZmF1bHRzIHRvXFxuICAgICAgICAgICAgICAgICAgICAgICAgICBgOnN0YXRlbWVudGAuXFxuXFxuICAgY2IgKGZ1bmN0aW9uKVxcbiAgICAgY2FsbGJhY2ssIHdpbGwgYmUgaW52b2tlZCB3aXRoIGEgbWFwLiBJZiBzdWNjZXNzZnVsIHRoZSBtYXAgd2lsbCBjb250YWluXFxuICAgICBhIGtleSA6dmFsdWUgd2l0aCB0aGUgY29tcGlsYXRpb24gcmVzdWx0IChzdHJpbmcpLiBJZiB1bnN1Y2Nlc3NmdWwgdGhlIG1hcFxcbiAgICAgd2lsbCBjb250YWluIGEga2V5IDplcnJvciB3aXRoIGFuIGV4LWluZm8gaW5zdGFuY2UgZGVzY3JpYmluZyB0aGUgY2F1c2VcXG4gICAgIG9mIGZhaWx1cmUuXCJcbiAoW3N0YXRlIHNvdXJjZSBjYl0gKGNvbXBpbGUtc3RyIHN0YXRlIHNvdXJjZSBuaWwgY2IpKVxuIChbc3RhdGUgc291cmNlIG5hbWUgY2JdIChjb21waWxlLXN0ciBzdGF0ZSBzb3VyY2UgbmFtZSBuaWwgY2IpKVxuIChbc3RhdGUgc291cmNlIG5hbWUgb3B0cyBjYl1cbiAgezpwcmVcbiAgIFsoYXRvbT8gc3RhdGUpXG4gICAgKHN0cmluZz8gc291cmNlKVxuICAgICh2YWxpZC1uYW1lPyBuYW1lKVxuICAgICh2YWxpZC1vcHRzPyBvcHRzKVxuICAgIChmbj8gY2IpXX1cbiAgKGNvbXBpbGUtc3RyKlxuICAgezoqY29tcGlsZXIqIHN0YXRlLFxuICAgIDoqZGF0YS1yZWFkZXJzKiB0YWdzLypjbGpzLWRhdGEtcmVhZGVycyosXG4gICAgOipjbGpzLWRlcC1zZXQqIGFuYS8qY2xqcy1kZXAtc2V0KixcbiAgICA6KmFuYWx5emUtZGVwcyogKDphbmFseXplLWRlcHMgb3B0cyB0cnVlKSxcbiAgICA6KmxvYWQtbWFjcm9zKiAoOmxvYWQtbWFjcm9zIG9wdHMgdHJ1ZSksXG4gICAgOipsb2FkLWZuKiAob3IgKDpsb2FkIG9wdHMpICpsb2FkLWZuKiksXG4gICAgOipldmFsLWZuKiAob3IgKDpldmFsIG9wdHMpICpldmFsLWZuKiksXG4gICAgOipzbS1kYXRhKiAod2hlbiAoOnNvdXJjZS1tYXAgb3B0cykgKHNtLWRhdGEpKX1cbiAgIHNvdXJjZVxuICAgbmFtZVxuICAgb3B0c1xuICAgY2IpKSlcbiJ9IHs6c3ltIG5zLT5yZWxwYXRoLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBuYW1lc3BhY2UgYXMgYSBzeW1ib2wgcmV0dXJuIHRoZSByZWxhdGl2ZSBwYXRoIHNhbnMgZXh0ZW5zaW9uIiwgOmFyZ2xpc3RzIChbbnMtc3ltXSl9LCA6c291cmNlICIoZGVmblxuIG5zLT5yZWxwYXRoXG4gXCJHaXZlbiBhIG5hbWVzcGFjZSBhcyBhIHN5bWJvbCByZXR1cm4gdGhlIHJlbGF0aXZlIHBhdGggc2FucyBleHRlbnNpb25cIlxuIFtucy1zeW1dXG4gKHN0cmluZy9yZXBsYWNlIChhbmEvbXVuZ2UtcGF0aCBucy1zeW0pIFxcLiBcXC8pKVxuIn0gezpzeW0gZW1wdHktc3RhdGUsIDptZXRhIHs6ZG9jICJDb25zdHJ1Y3QgYW4gZW1wdHkgY29tcGlsZXIgc3RhdGUuIFJlcXVpcmVkIHRvIGludm9rZSBhbmFseXplLCBjb21waWxlLFxuICAgZXZhbCBhbmQgZXZhbC1zdHIuIiwgOmFyZ2xpc3RzIFtbXSBbaW5pdF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBlbXB0eS1zdGF0ZVxuIFwiQ29uc3RydWN0IGFuIGVtcHR5IGNvbXBpbGVyIHN0YXRlLiBSZXF1aXJlZCB0byBpbnZva2UgYW5hbHl6ZSwgY29tcGlsZSxcXG4gICBldmFsIGFuZCBldmFsLXN0ci5cIlxuIChbXVxuICAoZG90b1xuICAgKGVudi9kZWZhdWx0LWNvbXBpbGVyLWVudilcbiAgIChzd2FwIVxuICAgIChmblxuICAgICBbc3RhdGVdXG4gICAgICgtPlxuICAgICAgc3RhdGVcbiAgICAgIChhc3NvYy1pblxuICAgICAgIFs6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzICdjbGpzLmNvcmVdXG4gICAgICAgKGR1bXAtY29yZSkpKSkpKSlcbiAoW2luaXRdIChkb3RvIChlbXB0eS1zdGF0ZSkgKHN3YXAhIGluaXQpKSkpXG4ifSB7OnN5bSAqbG9hZGVkKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmxvYWRlZCogKGF0b20gI3t9KSlcbiJ9IHs6c3ltIHJlcXVpcmUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbbmFtZSBjYl0gW25hbWUgb3B0cyBjYl0gW2JvdW5kLXZhcnMgbmFtZSBvcHRzIGNiXSBbYm91bmQtdmFycyBuYW1lIHJlbG9hZCBvcHRzIGNiXV19LCA6c291cmNlICIoZGVmblxuIHJlcXVpcmVcbiAoW25hbWUgY2JdIChyZXF1aXJlIG5hbWUgbmlsIGNiKSlcbiAoW25hbWUgb3B0cyBjYl0gKHJlcXVpcmUgbmlsIG5hbWUgb3B0cyBjYikpXG4gKFtib3VuZC12YXJzIG5hbWUgb3B0cyBjYl0gKHJlcXVpcmUgYm91bmQtdmFycyBuYW1lIG5pbCBvcHRzIGNiKSlcbiAoW2JvdW5kLXZhcnMgbmFtZSByZWxvYWQgb3B0cyBjYl1cbiAgKGxldFxuICAgW2JvdW5kLXZhcnNcbiAgICAobWVyZ2VcbiAgICAgezoqY29tcGlsZXIqIChlbnYvZGVmYXVsdC1jb21waWxlci1lbnYpLFxuICAgICAgOipkYXRhLXJlYWRlcnMqIHRhZ3MvKmNsanMtZGF0YS1yZWFkZXJzKixcbiAgICAgIDoqbG9hZC1tYWNyb3MqICg6bG9hZC1tYWNyb3Mgb3B0cyB0cnVlKSxcbiAgICAgIDoqYW5hbHl6ZS1kZXBzKiAoOmFuYWx5emUtZGVwcyBvcHRzIHRydWUpLFxuICAgICAgOipsb2FkLWZuKiAob3IgKDpsb2FkIG9wdHMpICpsb2FkLWZuKiksXG4gICAgICA6KmV2YWwtZm4qIChvciAoOmV2YWwgb3B0cykgKmV2YWwtZm4qKX1cbiAgICAgYm91bmQtdmFycylcbiAgICBhbmFtZVxuICAgIChjb25kLT4gbmFtZSAoOm1hY3Jvcy1ucyBvcHRzKSBhbmEvbWFjcm8tbnMtbmFtZSldXG4gICAod2hlbiAoPSA6cmVsb2FkIHJlbG9hZCkgKHN3YXAhICpsb2FkZWQqIGRpc2ogYW5hbWUpKVxuICAgKHdoZW4gKD0gOnJlbG9hZC1hbGwgcmVsb2FkKSAocmVzZXQhICpsb2FkZWQqICN7fSkpXG4gICAod2hlblxuICAgICg6dmVyYm9zZSBvcHRzKVxuICAgIChkZWJ1Zy1wcm5cbiAgICAgKHN0clxuICAgICAgXCJMb2FkaW5nIFwiXG4gICAgICBuYW1lXG4gICAgICAod2hlbiAoOm1hY3Jvcy1ucyBvcHRzKSBcIiBtYWNyb3NcIilcbiAgICAgIFwiIG5hbWVzcGFjZVwiKSkpXG4gICAoaWYtbm90XG4gICAgKGNvbnRhaW5zPyBAKmxvYWRlZCogYW5hbWUpXG4gICAgKGxldFxuICAgICBbZW52ICg6KmVudiogYm91bmQtdmFycyldXG4gICAgICh0cnlcbiAgICAgICgoOipsb2FkLWZuKiBib3VuZC12YXJzKVxuICAgICAgIHs6bmFtZSBuYW1lLFxuICAgICAgICA6bWFjcm9zICg6bWFjcm9zLW5zIG9wdHMpLFxuICAgICAgICA6cGF0aCAobnMtPnJlbHBhdGggbmFtZSl9XG4gICAgICAgKGZuXG4gICAgICAgIFtyZXNvdXJjZV1cbiAgICAgICAgKGFzc2VydFxuICAgICAgICAgKG9yIChtYXA/IHJlc291cmNlKSAobmlsPyByZXNvdXJjZSkpXG4gICAgICAgICBcIipsb2FkLWZuKiBtYXkgb25seSByZXR1cm4gYSBtYXAgb3IgbmlsXCIpXG4gICAgICAgIChpZlxuICAgICAgICAgcmVzb3VyY2VcbiAgICAgICAgIChsZXRcbiAgICAgICAgICBbezprZXlzIFtsYW5nIHNvdXJjZSBjYWNoZSBzb3VyY2UtbWFwIGZpbGVdfSByZXNvdXJjZV1cbiAgICAgICAgICAoY29uZHBcbiAgICAgICAgICAga2V5d29yZC1pZGVudGljYWw/XG4gICAgICAgICAgIGxhbmdcbiAgICAgICAgICAgOmNsalxuICAgICAgICAgICAoZG9cbiAgICAgICAgICAgIChwcmUtZmlsZS1zaWRlLWVmZmVjdHNcbiAgICAgICAgICAgICAoOipjb21waWxlciogYm91bmQtdmFycylcbiAgICAgICAgICAgICBhbmFtZVxuICAgICAgICAgICAgIGZpbGVcbiAgICAgICAgICAgICBvcHRzKVxuICAgICAgICAgICAgKGV2YWwtc3RyKlxuICAgICAgICAgICAgIGJvdW5kLXZhcnNcbiAgICAgICAgICAgICBzb3VyY2VcbiAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICAgKGFzc29jIG9wdHMgOmNsanMtZmlsZSBmaWxlKVxuICAgICAgICAgICAgIChmblxuICAgICAgICAgICAgICBbcmVzXVxuICAgICAgICAgICAgICAocG9zdC1maWxlLXNpZGUtZWZmZWN0cyBmaWxlIG9wdHMpXG4gICAgICAgICAgICAgIChpZlxuICAgICAgICAgICAgICAgKDplcnJvciByZXMpXG4gICAgICAgICAgICAgICAoY2IgcmVzKVxuICAgICAgICAgICAgICAgKGRvIChzd2FwISAqbG9hZGVkKiBjb25qIGFuYW1lKSAoY2Igezp2YWx1ZSB0cnVlfSkpKSkpKVxuICAgICAgICAgICA6anNcbiAgICAgICAgICAgKHByb2Nlc3MtbWFjcm9zLWRlcHNcbiAgICAgICAgICAgIGJvdW5kLXZhcnNcbiAgICAgICAgICAgIGNhY2hlXG4gICAgICAgICAgICBvcHRzXG4gICAgICAgICAgICAoZm5cbiAgICAgICAgICAgICBbcmVzXVxuICAgICAgICAgICAgIChpZlxuICAgICAgICAgICAgICAoOmVycm9yIHJlcylcbiAgICAgICAgICAgICAgKGNiIHJlcylcbiAgICAgICAgICAgICAgKHByb2Nlc3MtbGlicy1kZXBzXG4gICAgICAgICAgICAgICBib3VuZC12YXJzXG4gICAgICAgICAgICAgICBjYWNoZVxuICAgICAgICAgICAgICAgb3B0c1xuICAgICAgICAgICAgICAgKGZuXG4gICAgICAgICAgICAgICAgW3Jlc11cbiAgICAgICAgICAgICAgICAoaWZcbiAgICAgICAgICAgICAgICAgKDplcnJvciByZXMpXG4gICAgICAgICAgICAgICAgIChjYiByZXMpXG4gICAgICAgICAgICAgICAgIChsZXRcbiAgICAgICAgICAgICAgICAgIFtyZXNcbiAgICAgICAgICAgICAgICAgICAodHJ5XG4gICAgICAgICAgICAgICAgICAgICgoOipldmFsLWZuKiBib3VuZC12YXJzKSByZXNvdXJjZSlcbiAgICAgICAgICAgICAgICAgICAgKHdoZW5cbiAgICAgICAgICAgICAgICAgICAgIGNhY2hlXG4gICAgICAgICAgICAgICAgICAgICAobG9hZC1hbmFseXNpcy1jYWNoZSFcbiAgICAgICAgICAgICAgICAgICAgICAoOipjb21waWxlciogYm91bmQtdmFycylcbiAgICAgICAgICAgICAgICAgICAgICBhbmFtZVxuICAgICAgICAgICAgICAgICAgICAgIGNhY2hlKVxuICAgICAgICAgICAgICAgICAgICAgKGFuYS9yZWdpc3Rlci1zcGVjcyBjYWNoZSkpXG4gICAgICAgICAgICAgICAgICAgICh3aGVuXG4gICAgICAgICAgICAgICAgICAgICBzb3VyY2UtbWFwXG4gICAgICAgICAgICAgICAgICAgICAobG9hZC1zb3VyY2UtbWFwIVxuICAgICAgICAgICAgICAgICAgICAgICg6KmNvbXBpbGVyKiBib3VuZC12YXJzKVxuICAgICAgICAgICAgICAgICAgICAgIGFuYW1lXG4gICAgICAgICAgICAgICAgICAgICAgc291cmNlLW1hcCkpXG4gICAgICAgICAgICAgICAgICAgIChjYXRjaFxuICAgICAgICAgICAgICAgICAgICAgOmRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgIGNhdXNlXG4gICAgICAgICAgICAgICAgICAgICAod3JhcC1lcnJvclxuICAgICAgICAgICAgICAgICAgICAgIChhbmEvZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgZW52XG4gICAgICAgICAgICAgICAgICAgICAgIChzdHIgXCJDb3VsZCBub3QgcmVxdWlyZSBcIiBuYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICBjYXVzZSkpKSldXG4gICAgICAgICAgICAgICAgICAoaWZcbiAgICAgICAgICAgICAgICAgICAoOmVycm9yIHJlcylcbiAgICAgICAgICAgICAgICAgICAoY2IgcmVzKVxuICAgICAgICAgICAgICAgICAgIChkb1xuICAgICAgICAgICAgICAgICAgICAoc3dhcCEgKmxvYWRlZCogY29uaiBhbmFtZSlcbiAgICAgICAgICAgICAgICAgICAgKGNiIHs6dmFsdWUgdHJ1ZX0pKSkpKSkpKSkpXG4gICAgICAgICAgIChjYlxuICAgICAgICAgICAgKHdyYXAtZXJyb3JcbiAgICAgICAgICAgICAoYW5hL2Vycm9yXG4gICAgICAgICAgICAgIGVudlxuICAgICAgICAgICAgICAoc3RyXG4gICAgICAgICAgICAgICBcIkludmFsaWQgOmxhbmcgc3BlY2lmaWVkIFwiXG4gICAgICAgICAgICAgICBsYW5nXG4gICAgICAgICAgICAgICBcIiwgb25seSA6Y2xqIG9yIDpqcyBhbGxvd2VkXCIpKSkpKSlcbiAgICAgICAgIChjYlxuICAgICAgICAgICh3cmFwLWVycm9yXG4gICAgICAgICAgIChhbmEvZXJyb3JcbiAgICAgICAgICAgIGVudlxuICAgICAgICAgICAgKGFuYS9lcnJvci1tZXNzYWdlXG4gICAgICAgICAgICAgKGlmXG4gICAgICAgICAgICAgICg6bWFjcm9zLW5zIG9wdHMpXG4gICAgICAgICAgICAgIDp1bmRlY2xhcmVkLW1hY3Jvcy1uc1xuICAgICAgICAgICAgICA6dW5kZWNsYXJlZC1ucylcbiAgICAgICAgICAgICB7Om5zLXN5bSBuYW1lLCA6anMtcHJvdmlkZSAoY2xqcy5jb3JlL25hbWUgbmFtZSl9KSkpKSkpKVxuICAgICAgKGNhdGNoXG4gICAgICAgOmRlZmF1bHRcbiAgICAgICBjYXVzZVxuICAgICAgIChjYlxuICAgICAgICAod3JhcC1lcnJvclxuICAgICAgICAgKGFuYS9lcnJvciBlbnYgKHN0ciBcIkNvdWxkIG5vdCByZXF1aXJlIFwiIG5hbWUpIGNhdXNlKSkpKSkpXG4gICAgKGNiIHs6dmFsdWUgdHJ1ZX0pKSkpKVxuIn0gezpzeW0gZmlsZS0+bnMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZmlsZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBmaWxlLT5uc1xuIFtmaWxlXVxuIChsZXRcbiAgW2xpYi1uYW1lIChzdWJzIChzdHJpbmcvcmVwbGFjZSBmaWxlIFwiL1wiIFwiLlwiKSAwICgtIChjb3VudCBmaWxlKSA1KSldXG4gIChzeW1ib2wgKGRlbXVuZ2UgbGliLW5hbWUpKSkpXG4ifSB7OnN5bSBldmFsLXN0ciwgOm1ldGEgezpkb2MgIkV2YWx1dGUgQ2xvanVyZVNjcmlwdCBzb3VyY2UgZ2l2ZW4gYXMgYSBzdHJpbmcuIFRoZSBwYXJhbWV0ZXJzOlxuXG4gIHN0YXRlIChhdG9tKVxuICAgIHRoZSBjb21waWxlciBzdGF0ZVxuXG4gIHNvdXJjZSAoc3RyaW5nKVxuICAgIHRoZSBDbG9qdXJlU2NyaXB0IHNvdXJjZVxuXG4gIG5hbWUgKHN5bWJvbCBvciBzdHJpbmcpXG4gICAgb3B0aW9uYWwsIHRoZSBuYW1lIG9mIHRoZSBzb3VyY2UgLSB1c2VkIGFzIGtleSBpbiA6c291cmNlLW1hcHNcblxuICBvcHRzIChtYXApXG4gICAgY29tcGlsYXRpb24gb3B0aW9ucy5cblxuICAgIDpldmFsICAgICAgICAgICAgIC0gZXZhbCBmdW5jdGlvbiB0byBpbnZva2UsIHNlZSAqZXZhbC1mbipcbiAgICA6bG9hZCAgICAgICAgICAgICAtIGxpYnJhcnkgcmVzb2x1dGlvbiBmdW5jdGlvbiwgc2VlICpsb2FkLWZuKlxuICAgIDpzb3VyY2UtbWFwICAgICAgIC0gc2V0IHRvIHRydWUgdG8gZ2VuZXJhdGUgaW5saW5lIHNvdXJjZSBtYXAgaW5mb3JtYXRpb25cbiAgICA6Y2FjaGUtc291cmNlICAgICAtIG9wdGlvbmFsLCBhIGZ1bmN0aW9uIHRvIHJ1biBzaWRlLWVmZmVjdHMgd2l0aCB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGF0aW9uIHJlc3VsdCBwcmlvciB0byBhY3R1YWwgZXZhbHV0aW9uLiBUaGlzIGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWtlcyB0d28gYXJndW1lbnRzLCB0aGUgZmlyc3QgaXMgdGhlIGV2YWwgbWFwLCB0aGUgc291cmNlXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWxsIGJlIHVuZGVyIDpzb3VyY2UuIFRoZSBzZWNvbmQgYXJndW1lbnQgaXMgYSBjYWxsYmFjayBvZlxuICAgICAgICAgICAgICAgICAgICAgICAgb25lIGFyZ3VtZW50LiBJZiBhbiBlcnJvciBvY2N1cnMgYW4gOmVycm9yIGtleSBzaG91bGQgYmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBsaWVkLlxuICAgIDpkZWYtZW1pdHMtdmFyICAgIC0gc2V0cyB3aGV0aGVyIGRlZiAoYW5kIGRlcml2ZWQpIGZvcm1zIHJldHVybiBlaXRoZXIgYSBWYXJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpZiBzZXQgdG8gdHJ1ZSkgb3IgdGhlIGRlZiBpbml0IHZhbHVlIChpZiBmYWxzZSkuIERlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzIGZhbHNlLlxuICAgIDpjaGVja2VkLWFycmF5cyAgIC0gaWYgOndhcm4gb3IgOmVycm9yLCBjaGVja3MgaW5mZXJyZWQgdHlwZXMgYW5kIHZhbHVlcyBwYXNzZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvIGFnZXQvYXNldC4gTG9ncyBmb3IgaW5jb3JyZWN0IHZhbHVlcyBpZiA6d2FybiwgdGhyb3dzIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICA6ZXJyb3IuIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgIDpzdGF0aWMtZm5zICAgICAgIC0gZW1wbG95IHN0YXRpYyBkaXNwYXRjaCB0byBzcGVjaWZpYyBmdW5jdGlvbiBhcml0aWVzIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWl0dGVkIEphdmFTY3JpcHQsIGFzIG9wcG9zZWQgdG8gbWFraW5nIHVzZSBvZiB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGBjYWxsYCBjb25zdHJ1Y3QuIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgIDpmbi1pbnZva2UtZGlyZWN0IC0gaWYgYHRydWVgLCBkb2VzIG5vdCBnZW5lcmF0ZSBgLmNhbGwobnVsbC4uLilgIGNhbGxzIGZvclxuICAgICAgICAgICAgICAgICAgICAgICAgdW5rbm93biBmdW5jdGlvbnMsIGJ1dCBpbnN0ZWFkIGRpcmVjdCBpbnZva2VzIHZpYVxuICAgICAgICAgICAgICAgICAgICAgICAgYGYoYTAsYTEuLi4pYC4gRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgICA6dGFyZ2V0ICAgICAgICAgICAtIHVzZSBgOm5vZGVqc2AgaWYgdGFyZ2V0aW5nIE5vZGUuanMuIFRha2VzIG5vIG90aGVyIG9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0IHRoZSBtb21lbnQuXG4gICAgOm5zICAgICAgICAgICAgICAgLSBvcHRpb25hbCwgdGhlIG5hbWVzcGFjZSBpbiB3aGljaCB0byBldmFsdWF0ZSB0aGUgc291cmNlLlxuICAgIDp2ZXJib3NlICAgICAgICAgIC0gb3B0aW9uYWwsIGVtaXQgZGV0YWlscyBmcm9tIGNvbXBpbGVyIGFjdGl2aXR5LiBEZWZhdWx0cyB0b1xuICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UuXG4gICAgOmNvbnRleHQgICAgICAgICAgLSBvcHRpb25hbCwgc2V0cyB0aGUgY29udGV4dCBmb3IgdGhlIHNvdXJjZS4gUG9zc2libGUgdmFsdWVzXG4gICAgICAgICAgICAgICAgICAgICBhcmUgYDpleHByYCwgYDpzdGF0ZW1lbnRgIGFuZCBgOnJldHVybmAuIERlZmF1bHRzIHRvXG4gICAgICAgICAgICAgICAgICAgICAgYDpzdGF0ZW1lbnRgLlxuXG4gIGNiIChmdW5jdGlvbilcbiAgICBjYWxsYmFjaywgd2lsbCBiZSBpbnZva2VkIHdpdGggYSBtYXAuIElmIHN1Y2Nlc2Z1bCB0aGUgbWFwIHdpbGwgY29udGFpblxuICAgIGEgOnZhbHVlIGtleSB3aXRoIHRoZSByZXN1bHQgb2YgZXZhbHVhdGlvbiBhbmQgOm5zIHRoZSBjdXJyZW50IG5hbWVzcGFjZS5cbiAgICBJZiB1bnN1Y2Nlc3NmdWwgd2lsbCBjb250YWluIGEgOmVycm9yIGtleSB3aXRoIGFuIGV4LWluZm8gaW5zdGFuY2UgZGVzY3JpYmluZ1xuICAgIHRoZSBjYXVzZSBvZiBmYWlsdXJlLiIsIDphcmdsaXN0cyBbW3N0YXRlIHNvdXJjZSBjYl0gW3N0YXRlIHNvdXJjZSBuYW1lIGNiXSBbc3RhdGUgc291cmNlIG5hbWUgb3B0cyBjYl1dfSwgOnNvdXJjZSAiKGRlZm5cbiBldmFsLXN0clxuIFwiRXZhbHV0ZSBDbG9qdXJlU2NyaXB0IHNvdXJjZSBnaXZlbiBhcyBhIHN0cmluZy4gVGhlIHBhcmFtZXRlcnM6XFxuXFxuICBzdGF0ZSAoYXRvbSlcXG4gICAgdGhlIGNvbXBpbGVyIHN0YXRlXFxuXFxuICBzb3VyY2UgKHN0cmluZylcXG4gICAgdGhlIENsb2p1cmVTY3JpcHQgc291cmNlXFxuXFxuICBuYW1lIChzeW1ib2wgb3Igc3RyaW5nKVxcbiAgICBvcHRpb25hbCwgdGhlIG5hbWUgb2YgdGhlIHNvdXJjZSAtIHVzZWQgYXMga2V5IGluIDpzb3VyY2UtbWFwc1xcblxcbiAgb3B0cyAobWFwKVxcbiAgICBjb21waWxhdGlvbiBvcHRpb25zLlxcblxcbiAgICA6ZXZhbCAgICAgICAgICAgICAtIGV2YWwgZnVuY3Rpb24gdG8gaW52b2tlLCBzZWUgKmV2YWwtZm4qXFxuICAgIDpsb2FkICAgICAgICAgICAgIC0gbGlicmFyeSByZXNvbHV0aW9uIGZ1bmN0aW9uLCBzZWUgKmxvYWQtZm4qXFxuICAgIDpzb3VyY2UtbWFwICAgICAgIC0gc2V0IHRvIHRydWUgdG8gZ2VuZXJhdGUgaW5saW5lIHNvdXJjZSBtYXAgaW5mb3JtYXRpb25cXG4gICAgOmNhY2hlLXNvdXJjZSAgICAgLSBvcHRpb25hbCwgYSBmdW5jdGlvbiB0byBydW4gc2lkZS1lZmZlY3RzIHdpdGggdGhlXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsYXRpb24gcmVzdWx0IHByaW9yIHRvIGFjdHVhbCBldmFsdXRpb24uIFRoaXMgZnVuY3Rpb25cXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWtlcyB0d28gYXJndW1lbnRzLCB0aGUgZmlyc3QgaXMgdGhlIGV2YWwgbWFwLCB0aGUgc291cmNlXFxuICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBiZSB1bmRlciA6c291cmNlLiBUaGUgc2Vjb25kIGFyZ3VtZW50IGlzIGEgY2FsbGJhY2sgb2ZcXG4gICAgICAgICAgICAgICAgICAgICAgICBvbmUgYXJndW1lbnQuIElmIGFuIGVycm9yIG9jY3VycyBhbiA6ZXJyb3Iga2V5IHNob3VsZCBiZVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBsaWVkLlxcbiAgICA6ZGVmLWVtaXRzLXZhciAgICAtIHNldHMgd2hldGhlciBkZWYgKGFuZCBkZXJpdmVkKSBmb3JtcyByZXR1cm4gZWl0aGVyIGEgVmFyXFxuICAgICAgICAgICAgICAgICAgICAgICAgKGlmIHNldCB0byB0cnVlKSBvciB0aGUgZGVmIGluaXQgdmFsdWUgKGlmIGZhbHNlKS4gRGVmYXVsdFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzIGZhbHNlLlxcbiAgICA6Y2hlY2tlZC1hcnJheXMgICAtIGlmIDp3YXJuIG9yIDplcnJvciwgY2hlY2tzIGluZmVycmVkIHR5cGVzIGFuZCB2YWx1ZXMgcGFzc2VkXFxuICAgICAgICAgICAgICAgICAgICAgICAgdG8gYWdldC9hc2V0LiBMb2dzIGZvciBpbmNvcnJlY3QgdmFsdWVzIGlmIDp3YXJuLCB0aHJvd3MgaWZcXG4gICAgICAgICAgICAgICAgICAgICAgICA6ZXJyb3IuIERlZmF1bHRzIHRvIGZhbHNlLlxcbiAgICA6c3RhdGljLWZucyAgICAgICAtIGVtcGxveSBzdGF0aWMgZGlzcGF0Y2ggdG8gc3BlY2lmaWMgZnVuY3Rpb24gYXJpdGllcyBpblxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtaXR0ZWQgSmF2YVNjcmlwdCwgYXMgb3Bwb3NlZCB0byBtYWtpbmcgdXNlIG9mIHRoZVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGBjYWxsYCBjb25zdHJ1Y3QuIERlZmF1bHRzIHRvIGZhbHNlLlxcbiAgICA6Zm4taW52b2tlLWRpcmVjdCAtIGlmIGB0cnVlYCwgZG9lcyBub3QgZ2VuZXJhdGUgYC5jYWxsKG51bGwuLi4pYCBjYWxscyBmb3JcXG4gICAgICAgICAgICAgICAgICAgICAgICB1bmtub3duIGZ1bmN0aW9ucywgYnV0IGluc3RlYWQgZGlyZWN0IGludm9rZXMgdmlhXFxuICAgICAgICAgICAgICAgICAgICAgICAgYGYoYTAsYTEuLi4pYC4gRGVmYXVsdHMgdG8gYGZhbHNlYC5cXG4gICAgOnRhcmdldCAgICAgICAgICAgLSB1c2UgYDpub2RlanNgIGlmIHRhcmdldGluZyBOb2RlLmpzLiBUYWtlcyBubyBvdGhlciBvcHRpb25zXFxuICAgICAgICAgICAgICAgICAgICAgICAgYXQgdGhlIG1vbWVudC5cXG4gICAgOm5zICAgICAgICAgICAgICAgLSBvcHRpb25hbCwgdGhlIG5hbWVzcGFjZSBpbiB3aGljaCB0byBldmFsdWF0ZSB0aGUgc291cmNlLlxcbiAgICA6dmVyYm9zZSAgICAgICAgICAtIG9wdGlvbmFsLCBlbWl0IGRldGFpbHMgZnJvbSBjb21waWxlciBhY3Rpdml0eS4gRGVmYXVsdHMgdG9cXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWxzZS5cXG4gICAgOmNvbnRleHQgICAgICAgICAgLSBvcHRpb25hbCwgc2V0cyB0aGUgY29udGV4dCBmb3IgdGhlIHNvdXJjZS4gUG9zc2libGUgdmFsdWVzXFxuICAgICAgICAgICAgICAgICAgICAgYXJlIGA6ZXhwcmAsIGA6c3RhdGVtZW50YCBhbmQgYDpyZXR1cm5gLiBEZWZhdWx0cyB0b1xcbiAgICAgICAgICAgICAgICAgICAgICBgOnN0YXRlbWVudGAuXFxuXFxuICBjYiAoZnVuY3Rpb24pXFxuICAgIGNhbGxiYWNrLCB3aWxsIGJlIGludm9rZWQgd2l0aCBhIG1hcC4gSWYgc3VjY2VzZnVsIHRoZSBtYXAgd2lsbCBjb250YWluXFxuICAgIGEgOnZhbHVlIGtleSB3aXRoIHRoZSByZXN1bHQgb2YgZXZhbHVhdGlvbiBhbmQgOm5zIHRoZSBjdXJyZW50IG5hbWVzcGFjZS5cXG4gICAgSWYgdW5zdWNjZXNzZnVsIHdpbGwgY29udGFpbiBhIDplcnJvciBrZXkgd2l0aCBhbiBleC1pbmZvIGluc3RhbmNlIGRlc2NyaWJpbmdcXG4gICAgdGhlIGNhdXNlIG9mIGZhaWx1cmUuXCJcbiAoW3N0YXRlIHNvdXJjZSBjYl0gKGV2YWwtc3RyIHN0YXRlIHNvdXJjZSBuaWwgY2IpKVxuIChbc3RhdGUgc291cmNlIG5hbWUgY2JdIChldmFsLXN0ciBzdGF0ZSBzb3VyY2UgbmFtZSBuaWwgY2IpKVxuIChbc3RhdGUgc291cmNlIG5hbWUgb3B0cyBjYl1cbiAgezpwcmVcbiAgIFsoYXRvbT8gc3RhdGUpXG4gICAgKHN0cmluZz8gc291cmNlKVxuICAgICh2YWxpZC1uYW1lPyBuYW1lKVxuICAgICh2YWxpZC1vcHRzPyBvcHRzKVxuICAgIChmbj8gY2IpXX1cbiAgKGV2YWwtc3RyKlxuICAgezoqY29tcGlsZXIqIHN0YXRlLFxuICAgIDoqZGF0YS1yZWFkZXJzKiB0YWdzLypjbGpzLWRhdGEtcmVhZGVycyosXG4gICAgOiphbmFseXplLWRlcHMqICg6YW5hbHl6ZS1kZXBzIG9wdHMgdHJ1ZSksXG4gICAgOipjbGpzLWRlcC1zZXQqIGFuYS8qY2xqcy1kZXAtc2V0KixcbiAgICA6KmxvYWQtbWFjcm9zKiAoOmxvYWQtbWFjcm9zIG9wdHMgdHJ1ZSksXG4gICAgOipsb2FkLWZuKiAob3IgKDpsb2FkIG9wdHMpICpsb2FkLWZuKiksXG4gICAgOipldmFsLWZuKiAob3IgKDpldmFsIG9wdHMpICpldmFsLWZuKil9XG4gICBzb3VyY2VcbiAgIG5hbWVcbiAgIG9wdHNcbiAgIGNiKSkpXG4ifSB7OnN5bSBqcy1ldmFsLCA6bWV0YSB7OmRvYyAiQSBkZWZhdWx0IEphdmFTY3JpcHQgZXZhbHVhdGlvbiBmdW5jdGlvbi4iLCA6YXJnbGlzdHMgKFt7OmtleXMgW3NvdXJjZV0sIDphcyByZXNvdXJjZX1dKX0sIDpzb3VyY2UgIihkZWZuXG4ganMtZXZhbFxuIFwiQSBkZWZhdWx0IEphdmFTY3JpcHQgZXZhbHVhdGlvbiBmdW5jdGlvbi5cIlxuIFt7OmtleXMgW3NvdXJjZV0sIDphcyByZXNvdXJjZX1dXG4gKGpzL2V2YWwgc291cmNlKSlcbiJ9IHs6c3ltIGxvYWQtc291cmNlLW1hcCEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3RhdGUgbnMgc20tanNvbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBsb2FkLXNvdXJjZS1tYXAhXG4gW3N0YXRlIG5zIHNtLWpzb25dXG4gKGxldFxuICBbc20gKHNtL2RlY29kZSAoLnBhcnNlIGpzL0pTT04gc20tanNvbikpXVxuICAoc3dhcCEgc3RhdGUgYXNzb2MtaW4gWzpzb3VyY2UtbWFwcyBuc10gc20pKSlcbiJ9IHs6c3ltIGxvYWQtYW5hbHlzaXMtY2FjaGUhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N0YXRlIG5zIGNhY2hlXSl9LCA6c291cmNlICIoZGVmblxuIGxvYWQtYW5hbHlzaXMtY2FjaGUhXG4gW3N0YXRlIG5zIGNhY2hlXVxuIChzd2FwISBzdGF0ZSBhc3NvYy1pbiBbOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyBuc10gY2FjaGUpKVxuIn0gezpzeW0gYW5hbHl6ZS1zdHIsIDptZXRhIHs6ZG9jICJBbmFseXplIENsb2p1cmVTY3JpcHQgc291cmNlLiBUaGUgY29tcGlsZXIgc3RhdGUgd2lsbCBiZSBwb3B1bGF0ZWQgd2l0aFxuICAgdGhlIHJlc3VsdHMgb2YgYW5hbHl6ZXMuIFRoZSBwYXJhbWV0ZXJzOlxuXG4gICBzdGF0ZSAoYXRvbSlcbiAgICAgdGhlIGNvbXBpbGVyIHN0YXRlXG5cbiAgIHNvdXJjZSAoc3RyaW5nKVxuICAgICB0aGUgQ2xvanVyZVNjcmlwdCBzb3VyY2VcblxuICAgbmFtZSAoc3ltYm9sIG9yIHN0cmluZylcbiAgICAgb3B0aW9uYWwsIHRoZSBuYW1lIG9mIHRoZSBzb3VyY2VcblxuICAgb3B0cyAobWFwKVxuICAgICBjb21waWxhdGlvbiBvcHRpb25zLlxuXG4gICAgICA6ZXZhbCAgICAgICAgICAgICAtIGV2YWwgZnVuY3Rpb24gdG8gaW52b2tlLCBzZWUgKmV2YWwtZm4qXG4gICAgICA6bG9hZCAgICAgICAgICAgICAtIGxpYnJhcnkgcmVzb2x1dGlvbiBmdW5jdGlvbiwgc2VlICpsb2FkLWZuKlxuICAgICAgOnNvdXJjZS1tYXAgICAgICAgLSBzZXQgdG8gdHJ1ZSB0byBnZW5lcmF0ZSBpbmxpbmUgc291cmNlIG1hcCBpbmZvcm1hdGlvblxuICAgICAgOmRlZi1lbWl0cy12YXIgICAgLSBzZXRzIHdoZXRoZXIgZGVmIChhbmQgZGVyaXZlZCkgZm9ybXMgcmV0dXJuIGVpdGhlciBhIFZhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgc2V0IHRvIHRydWUpIG9yIHRoZSBkZWYgaW5pdCB2YWx1ZSAoaWYgZmFsc2UpLlxuICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgIDpjaGVja2VkLWFycmF5cyAgIC0gaWYgOndhcm4gb3IgOmVycm9yLCBjaGVja3MgaW5mZXJyZWQgdHlwZXMgYW5kIHZhbHVlcyBwYXNzZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYWdldC9hc2V0LiBMb2dzIGZvciBpbmNvcnJlY3QgdmFsdWVzIGlmIDp3YXJuLCB0aHJvd3MgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOmVycm9yLiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgIDpzdGF0aWMtZm5zICAgICAgIC0gZW1wbG95IHN0YXRpYyBkaXNwYXRjaCB0byBzcGVjaWZpYyBmdW5jdGlvbiBhcml0aWVzIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXR0ZWQgSmF2YVNjcmlwdCwgYXMgb3Bwb3NlZCB0byBtYWtpbmcgdXNlIG9mIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBgY2FsbGAgY29uc3RydWN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgIDpmbi1pbnZva2UtZGlyZWN0IC0gaWYgYHRydWVgLCBkb2VzIG5vdCBnZW5lcmF0ZSBgLmNhbGwobnVsbC4uLilgIGNhbGxzIGZvclxuICAgICAgICAgICAgICAgICAgICAgICAgICB1bmtub3duIGZ1bmN0aW9ucywgYnV0IGluc3RlYWQgZGlyZWN0IGludm9rZXMgdmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBmKGEwLGExLi4uKWAuIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gICAgICA6dGFyZ2V0ICAgICAgICAgICAtIHVzZSBgOm5vZGVqc2AgaWYgdGFyZ2V0aW5nIE5vZGUuanMuIFRha2VzIG5vIG90aGVyIG9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXQgdGhlIG1vbWVudC5cbiAgICAgIDpucyAgICAgICAgICAgICAgIC0gb3B0aW9uYWwsIHRoZSBuYW1lc3BhY2UgaW4gd2hpY2ggdG8gZXZhbHVhdGUgdGhlIHNvdXJjZS5cbiAgICAgIDp2ZXJib3NlICAgICAgICAgIC0gb3B0aW9uYWwsIGVtaXQgZGV0YWlscyBmcm9tIGNvbXBpbGVyIGFjdGl2aXR5LiBEZWZhdWx0cyB0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZS5cbiAgICAgIDpjb250ZXh0ICAgICAgICAgIC0gb3B0aW9uYWwsIHNldHMgdGhlIGNvbnRleHQgZm9yIHRoZSBzb3VyY2UuIFBvc3NpYmxlIHZhbHVlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgYDpleHByYCwgYDpzdGF0ZW1lbnRgIGFuZCBgOnJldHVybmAuIERlZmF1bHRzIHRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGA6c3RhdGVtZW50YC5cblxuICAgY2IgKGZ1bmN0aW9uKVxuICAgICBjYWxsYmFjaywgd2lsbCBiZSBpbnZva2VkIHdpdGggYSBtYXAuIElmIHN1Y2Nlc3NmdWwgdGhlIG1hcCB3aWxsIGNvbnRhaW5cbiAgICAgYSBrZXkgOnZhbHVlLCB0aGUgYWN0dWFsIHZhbHVlIGlzIG5vdCBtZWFuaW5nZnVsLiBJZiB1bnN1Y2Nlc3NmdWwgdGhlXG4gICAgIG1hcCB3aWxsIGNvbnRhaW4gYSBrZXkgOmVycm9yIHdpdGggYW4gZXgtaW5mbyBpbnN0YW5jZSBkZXNjcmliaW5nIHRoZSBjYXVzZVxuICAgICBvZiBmYWlsdXJlLiIsIDphcmdsaXN0cyBbW3N0YXRlIHNvdXJjZSBjYl0gW3N0YXRlIHNvdXJjZSBuYW1lIGNiXSBbc3RhdGUgc291cmNlIG5hbWUgb3B0cyBjYl1dfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLXN0clxuIFwiQW5hbHl6ZSBDbG9qdXJlU2NyaXB0IHNvdXJjZS4gVGhlIGNvbXBpbGVyIHN0YXRlIHdpbGwgYmUgcG9wdWxhdGVkIHdpdGhcXG4gICB0aGUgcmVzdWx0cyBvZiBhbmFseXplcy4gVGhlIHBhcmFtZXRlcnM6XFxuXFxuICAgc3RhdGUgKGF0b20pXFxuICAgICB0aGUgY29tcGlsZXIgc3RhdGVcXG5cXG4gICBzb3VyY2UgKHN0cmluZylcXG4gICAgIHRoZSBDbG9qdXJlU2NyaXB0IHNvdXJjZVxcblxcbiAgIG5hbWUgKHN5bWJvbCBvciBzdHJpbmcpXFxuICAgICBvcHRpb25hbCwgdGhlIG5hbWUgb2YgdGhlIHNvdXJjZVxcblxcbiAgIG9wdHMgKG1hcClcXG4gICAgIGNvbXBpbGF0aW9uIG9wdGlvbnMuXFxuXFxuICAgICAgOmV2YWwgICAgICAgICAgICAgLSBldmFsIGZ1bmN0aW9uIHRvIGludm9rZSwgc2VlICpldmFsLWZuKlxcbiAgICAgIDpsb2FkICAgICAgICAgICAgIC0gbGlicmFyeSByZXNvbHV0aW9uIGZ1bmN0aW9uLCBzZWUgKmxvYWQtZm4qXFxuICAgICAgOnNvdXJjZS1tYXAgICAgICAgLSBzZXQgdG8gdHJ1ZSB0byBnZW5lcmF0ZSBpbmxpbmUgc291cmNlIG1hcCBpbmZvcm1hdGlvblxcbiAgICAgIDpkZWYtZW1pdHMtdmFyICAgIC0gc2V0cyB3aGV0aGVyIGRlZiAoYW5kIGRlcml2ZWQpIGZvcm1zIHJldHVybiBlaXRoZXIgYSBWYXJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBzZXQgdG8gdHJ1ZSkgb3IgdGhlIGRlZiBpbml0IHZhbHVlIChpZiBmYWxzZSkuXFxuICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0cyB0byBmYWxzZS5cXG4gICAgICA6Y2hlY2tlZC1hcnJheXMgICAtIGlmIDp3YXJuIG9yIDplcnJvciwgY2hlY2tzIGluZmVycmVkIHR5cGVzIGFuZCB2YWx1ZXMgcGFzc2VkXFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0byBhZ2V0L2FzZXQuIExvZ3MgZm9yIGluY29ycmVjdCB2YWx1ZXMgaWYgOndhcm4sIHRocm93cyBpZlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOmVycm9yLiBEZWZhdWx0cyB0byBmYWxzZS5cXG4gICAgICA6c3RhdGljLWZucyAgICAgICAtIGVtcGxveSBzdGF0aWMgZGlzcGF0Y2ggdG8gc3BlY2lmaWMgZnVuY3Rpb24gYXJpdGllcyBpblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdHRlZCBKYXZhU2NyaXB0LCBhcyBvcHBvc2VkIHRvIG1ha2luZyB1c2Ugb2YgdGhlXFxuICAgICAgICAgICAgICAgICAgICAgICAgICBgY2FsbGAgY29uc3RydWN0LiBEZWZhdWx0cyB0byBmYWxzZS5cXG4gICAgICA6Zm4taW52b2tlLWRpcmVjdCAtIGlmIGB0cnVlYCwgZG9lcyBub3QgZ2VuZXJhdGUgYC5jYWxsKG51bGwuLi4pYCBjYWxscyBmb3JcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHVua25vd24gZnVuY3Rpb25zLCBidXQgaW5zdGVhZCBkaXJlY3QgaW52b2tlcyB2aWFcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBmKGEwLGExLi4uKWAuIERlZmF1bHRzIHRvIGBmYWxzZWAuXFxuICAgICAgOnRhcmdldCAgICAgICAgICAgLSB1c2UgYDpub2RlanNgIGlmIHRhcmdldGluZyBOb2RlLmpzLiBUYWtlcyBubyBvdGhlciBvcHRpb25zXFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhdCB0aGUgbW9tZW50LlxcbiAgICAgIDpucyAgICAgICAgICAgICAgIC0gb3B0aW9uYWwsIHRoZSBuYW1lc3BhY2UgaW4gd2hpY2ggdG8gZXZhbHVhdGUgdGhlIHNvdXJjZS5cXG4gICAgICA6dmVyYm9zZSAgICAgICAgICAtIG9wdGlvbmFsLCBlbWl0IGRldGFpbHMgZnJvbSBjb21waWxlciBhY3Rpdml0eS4gRGVmYXVsdHMgdG9cXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLlxcbiAgICAgIDpjb250ZXh0ICAgICAgICAgIC0gb3B0aW9uYWwsIHNldHMgdGhlIGNvbnRleHQgZm9yIHRoZSBzb3VyY2UuIFBvc3NpYmxlIHZhbHVlc1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIGA6ZXhwcmAsIGA6c3RhdGVtZW50YCBhbmQgYDpyZXR1cm5gLiBEZWZhdWx0cyB0b1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYDpzdGF0ZW1lbnRgLlxcblxcbiAgIGNiIChmdW5jdGlvbilcXG4gICAgIGNhbGxiYWNrLCB3aWxsIGJlIGludm9rZWQgd2l0aCBhIG1hcC4gSWYgc3VjY2Vzc2Z1bCB0aGUgbWFwIHdpbGwgY29udGFpblxcbiAgICAgYSBrZXkgOnZhbHVlLCB0aGUgYWN0dWFsIHZhbHVlIGlzIG5vdCBtZWFuaW5nZnVsLiBJZiB1bnN1Y2Nlc3NmdWwgdGhlXFxuICAgICBtYXAgd2lsbCBjb250YWluIGEga2V5IDplcnJvciB3aXRoIGFuIGV4LWluZm8gaW5zdGFuY2UgZGVzY3JpYmluZyB0aGUgY2F1c2VcXG4gICAgIG9mIGZhaWx1cmUuXCJcbiAoW3N0YXRlIHNvdXJjZSBjYl0gKGFuYWx5emUtc3RyIHN0YXRlIHNvdXJjZSBuaWwgY2IpKVxuIChbc3RhdGUgc291cmNlIG5hbWUgY2JdIChhbmFseXplLXN0ciBzdGF0ZSBzb3VyY2UgbmFtZSBuaWwgY2IpKVxuIChbc3RhdGUgc291cmNlIG5hbWUgb3B0cyBjYl1cbiAgezpwcmVcbiAgIFsoYXRvbT8gc3RhdGUpXG4gICAgKHN0cmluZz8gc291cmNlKVxuICAgICh2YWxpZC1uYW1lPyBuYW1lKVxuICAgICh2YWxpZC1vcHRzPyBvcHRzKVxuICAgIChmbj8gY2IpXX1cbiAgKGFuYWx5emUtc3RyKlxuICAgezoqY29tcGlsZXIqIHN0YXRlLFxuICAgIDoqZGF0YS1yZWFkZXJzKiB0YWdzLypjbGpzLWRhdGEtcmVhZGVycyosXG4gICAgOipwYXNzZXMqIChvciAoOnBhc3NlcyBvcHRzKSBhbmEvKnBhc3NlcyopLFxuICAgIDoqYW5hbHl6ZS1kZXBzKiAoOmFuYWx5emUtZGVwcyBvcHRzIHRydWUpLFxuICAgIDoqY2xqcy1kZXAtc2V0KiBhbmEvKmNsanMtZGVwLXNldCosXG4gICAgOipsb2FkLW1hY3JvcyogKDpsb2FkLW1hY3JvcyBvcHRzIHRydWUpLFxuICAgIDoqbG9hZC1mbiogKG9yICg6bG9hZCBvcHRzKSAqbG9hZC1mbiopLFxuICAgIDoqZXZhbC1mbiogKG9yICg6ZXZhbCBvcHRzKSAqZXZhbC1mbiopfVxuICAgc291cmNlXG4gICBuYW1lXG4gICBvcHRzXG4gICBjYikpKVxuIn0gezpzeW0gKmV2YWwtZm4qLCA6bWV0YSB7OmRvYyAiRWFjaCBydW50aW1lIGVudmlyb25tZW50IHByb3ZpZGVzIHZhcmlvdXMgd2F5cyB0byBldmFsIEphdmFTY3JpcHRcbiAgc291cmNlLiBXaGF0ZXZlciBmdW5jdGlvbiAqZXZhbC1mbiogaXMgYm91bmQgdG8gd2lsbCBiZSBwYXNzZWQgYSBtYXBcbiAgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIGtleXM6XG5cbiAgOnNvdXJjZSAtIHRoZSBzb3VyY2Ugb2YgdGhlIGxpYnJhcnkgKHN0cmluZylcbiAgOm5hbWUgICAtIHVzZWQgdG8gdW5pcXVlIGlkZW50aWZ5IHRoZSBzY3JpcHQgKHN5bWJvbClcbiAgOmNhY2hlICAtIGlmIHRoZSBzb3VyY2Ugd2FzIG9yaWdpbmFsbHkgQ2xvanVyZVNjcmlwdCwgd2lsbCBiZSBnaXZlbiB0aGVcbiAgICAgICAgICAgIGFuYWx5c2lzIGNhY2hlLlxuXG4gIFRoZSByZXN1bHQgb2YgZXZhbHVhdGlvbiBzaG91bGQgYmUgdGhlIHJldHVybiB2YWx1ZS4ifSwgOnNvdXJjZSAiKGRlZm9uY2UgKmV2YWwtZm4qIChmbiBbbV0gKHRocm93IChqcy9FcnJvci4gXCJObyAqZXZhbC1mbiogc2V0XCIpKSkpXG4ifSksIHJ1bS5jb3JlICh7OnN5bSBtb3VudCwgOm1ldGEgezpkb2MgIkFkZCBlbGVtZW50IHRvIHRoZSBET00gdHJlZS4gSWRlbXBvdGVudC4gU3Vic2VxdWVudCBtb3VudHMgd2lsbCBqdXN0IHVwZGF0ZSBlbGVtZW50LiIsIDphcmdsaXN0cyAoW2VsZW1lbnQgbm9kZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtb3VudFxuIFwiQWRkIGVsZW1lbnQgdG8gdGhlIERPTSB0cmVlLiBJZGVtcG90ZW50LiBTdWJzZXF1ZW50IG1vdW50cyB3aWxsIGp1c3QgdXBkYXRlIGVsZW1lbnQuXCJcbiBbZWxlbWVudCBub2RlXVxuIChqcy9SZWFjdERPTS5yZW5kZXIgZWxlbWVudCBub2RlKVxuIG5pbClcbiJ9IHs6c3ltIHVubW91bnQsIDptZXRhIHs6ZG9jICJSZW1vdmVzIGNvbXBvbmVudCBmcm9tIHRoZSBET00gdHJlZS4iLCA6YXJnbGlzdHMgKFtub2RlXSl9LCA6c291cmNlICIoZGVmblxuIHVubW91bnRcbiBcIlJlbW92ZXMgY29tcG9uZW50IGZyb20gdGhlIERPTSB0cmVlLlwiXG4gW25vZGVdXG4gKGpzL1JlYWN0RE9NLnVubW91bnRDb21wb25lbnRBdE5vZGUgbm9kZSkpXG4ifSB7OnN5bSBsb2NhbCwgOm1ldGEgezpkb2MgIk1peGluIGNvbnN0cnVjdG9yLiBBZGRzIGFuIGF0b20gdG8gY29tcG9uZW504oCZcyBzdGF0ZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGtlZXAgc3R1ZmYgZHVyaW5nIGNvbXBvbmVudOKAmXMgbGlmZWN5Y2xlLiBDb21wb25lbnQgd2lsbCBiZSByZS1yZW5kZXJlZCBpZiBhdG9t4oCZcyB2YWx1ZSBjaGFuZ2VzLiBBdG9tIGlzIHN0b3JlZCB1bmRlciB1c2VyLXByb3ZpZGVkIGtleSBvciB1bmRlciBgOnJ1bS9sb2NhbGAgYnkgZGVmYXVsdC5cbiAgXG4gICBgYGBcbiAgIChydW0vZGVmY3MgY291bnRlciA8IChydW0vbG9jYWwgMCA6Y250KVxuICAgICBbc3RhdGUgbGFiZWxdXG4gICAgIChsZXQgWypjbnQgKDpjbnQgc3RhdGUpXVxuICAgICAgIFs6ZGl2IHs6b24tY2xpY2sgKGZuIFtfXSAoc3dhcCEgKmNudCBpbmMpKX1cbiAgICAgICAgIGxhYmVsIEAqY250XSkpXG4gICBcbiAgIChydW0vbW91bnQgKGNvdW50ZXIgXCJDbGljayBjb3VudDogXCIpKVxuICAgYGBgIiwgOmFyZ2xpc3RzIFtbaW5pdGlhbF0gW2luaXRpYWwga2V5XV19LCA6c291cmNlICIoZGVmblxuIGxvY2FsXG4gXCJNaXhpbiBjb25zdHJ1Y3Rvci4gQWRkcyBhbiBhdG9tIHRvIGNvbXBvbmVudOKAmXMgc3RhdGUgdGhhdCBjYW4gYmUgdXNlZCB0byBrZWVwIHN0dWZmIGR1cmluZyBjb21wb25lbnTigJlzIGxpZmVjeWNsZS4gQ29tcG9uZW50IHdpbGwgYmUgcmUtcmVuZGVyZWQgaWYgYXRvbeKAmXMgdmFsdWUgY2hhbmdlcy4gQXRvbSBpcyBzdG9yZWQgdW5kZXIgdXNlci1wcm92aWRlZCBrZXkgb3IgdW5kZXIgYDpydW0vbG9jYWxgIGJ5IGRlZmF1bHQuXFxuICBcXG4gICBgYGBcXG4gICAocnVtL2RlZmNzIGNvdW50ZXIgPCAocnVtL2xvY2FsIDAgOmNudClcXG4gICAgIFtzdGF0ZSBsYWJlbF1cXG4gICAgIChsZXQgWypjbnQgKDpjbnQgc3RhdGUpXVxcbiAgICAgICBbOmRpdiB7Om9uLWNsaWNrIChmbiBbX10gKHN3YXAhICpjbnQgaW5jKSl9XFxuICAgICAgICAgbGFiZWwgQCpjbnRdKSlcXG4gICBcXG4gICAocnVtL21vdW50IChjb3VudGVyIFxcXCJDbGljayBjb3VudDogXFxcIikpXFxuICAgYGBgXCJcbiAoW2luaXRpYWxdIChsb2NhbCBpbml0aWFsIDpydW0vbG9jYWwpKVxuIChbaW5pdGlhbCBrZXldXG4gIHs6d2lsbC1tb3VudFxuICAgKGZuXG4gICAgW3N0YXRlXVxuICAgIChsZXRcbiAgICAgW2xvY2FsLXN0YXRlXG4gICAgICAoYXRvbSBpbml0aWFsKVxuICAgICAgY29tcG9uZW50XG4gICAgICAoOnJ1bS9yZWFjdC1jb21wb25lbnQgc3RhdGUpXVxuICAgICAoYWRkLXdhdGNoXG4gICAgICBsb2NhbC1zdGF0ZVxuICAgICAga2V5XG4gICAgICAoZm4gW18gXyBfIF9dIChyZXF1ZXN0LXJlbmRlciBjb21wb25lbnQpKSlcbiAgICAgKGFzc29jIHN0YXRlIGtleSBsb2NhbC1zdGF0ZSkpKX0pKVxuIn0gezpzeW0gcmVhY3RpdmUsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gcmVhY3RpdmVcbiBcIk1peGluLiBXb3JrcyBpbiBjb25qdW5jdGlvbiB3aXRoIFtbcmVhY3RdXS5cXG4gIFxcbiAgIGBgYFxcbiAgIChydW0vZGVmYyBjb21wIDwgcnVtL3JlYWN0aXZlXFxuICAgICBbKmNvdW50ZXJdXFxuICAgICBbOmRpdiAocnVtL3JlYWN0IGNvdW50ZXIpXSlcXG5cXG4gICAoZGVmICpjb3VudGVyIChhdG9tIDApKVxcbiAgIChydW0vbW91bnQgKGNvbXAgKmNvdW50ZXIpIGpzL2RvY3VtZW50LmJvZHkpXFxuICAgKHN3YXAhICpjb3VudGVyIGluYykgOzsgd2lsbCBmb3JjZSBjb21wIHRvIHJlLXJlbmRlclxcbiAgIGBgYFwiXG4gezppbml0XG4gIChmbiBbc3RhdGUgcHJvcHNdIChhc3NvYyBzdGF0ZSA6cnVtLnJlYWN0aXZlL2tleSAocmFuZG9tLXV1aWQpKSksXG4gIDp3cmFwLXJlbmRlclxuICAoZm5cbiAgIFtyZW5kZXItZm5dXG4gICAoZm5cbiAgICBbc3RhdGVdXG4gICAgKGJpbmRpbmdcbiAgICAgWypyZWFjdGlvbnMqICh2b2xhdGlsZSEgI3t9KV1cbiAgICAgKGxldFxuICAgICAgW2NvbXBcbiAgICAgICAoOnJ1bS9yZWFjdC1jb21wb25lbnQgc3RhdGUpXG4gICAgICAgb2xkLXJlYWN0aW9uc1xuICAgICAgICg6cnVtLnJlYWN0aXZlL3JlZnMgc3RhdGUgI3t9KVxuICAgICAgIFtkb20gbmV4dC1zdGF0ZV1cbiAgICAgICAocmVuZGVyLWZuIHN0YXRlKVxuICAgICAgIG5ldy1yZWFjdGlvbnNcbiAgICAgICBAKnJlYWN0aW9ucypcbiAgICAgICBrZXlcbiAgICAgICAoOnJ1bS5yZWFjdGl2ZS9rZXkgc3RhdGUpXVxuICAgICAgKGRvc2VxXG4gICAgICAgW3JlZiBvbGQtcmVhY3Rpb25zXVxuICAgICAgICh3aGVuLW5vdCAoY29udGFpbnM/IG5ldy1yZWFjdGlvbnMgcmVmKSAocmVtb3ZlLXdhdGNoIHJlZiBrZXkpKSlcbiAgICAgIChkb3NlcVxuICAgICAgIFtyZWYgbmV3LXJlYWN0aW9uc11cbiAgICAgICAod2hlbi1ub3RcbiAgICAgICAgKGNvbnRhaW5zPyBvbGQtcmVhY3Rpb25zIHJlZilcbiAgICAgICAgKGFkZC13YXRjaCByZWYga2V5IChmbiBbXyBfIF8gX10gKHJlcXVlc3QtcmVuZGVyIGNvbXApKSkpKVxuICAgICAgW2RvbSAoYXNzb2MgbmV4dC1zdGF0ZSA6cnVtLnJlYWN0aXZlL3JlZnMgbmV3LXJlYWN0aW9ucyldKSkpKSxcbiAgOndpbGwtdW5tb3VudFxuICAoZm5cbiAgIFtzdGF0ZV1cbiAgIChsZXRcbiAgICBba2V5ICg6cnVtLnJlYWN0aXZlL2tleSBzdGF0ZSldXG4gICAgKGRvc2VxIFtyZWYgKDpydW0ucmVhY3RpdmUvcmVmcyBzdGF0ZSldIChyZW1vdmUtd2F0Y2ggcmVmIGtleSkpKVxuICAgKGRpc3NvYyBzdGF0ZSA6cnVtLnJlYWN0aXZlL3JlZnMgOnJ1bS5yZWFjdGl2ZS9rZXkpKX0pXG4ifSB7OnN5bSByZWYtbm9kZSwgOm1ldGEgezpkb2MgIkdpdmVuIHN0YXRlIGFuZCByZWYgaGFuZGxlLCByZXR1cm5zIERPTSBub2RlIGFzc29jaWF0ZWQgd2l0aCByZWYuIiwgOmFyZ2xpc3RzIChbc3RhdGUga2V5XSl9LCA6c291cmNlICIoZGVmblxuIHJlZi1ub2RlXG4gXCJHaXZlbiBzdGF0ZSBhbmQgcmVmIGhhbmRsZSwgcmV0dXJucyBET00gbm9kZSBhc3NvY2lhdGVkIHdpdGggcmVmLlwiXG4gW3N0YXRlIGtleV1cbiAoanMvUmVhY3RET00uZmluZERPTU5vZGUgKHJlZiBzdGF0ZSAobmFtZSBrZXkpKSkpXG4ifSB7OnN5bSByZWFjdCwgOm1ldGEgezpkb2MgIldvcmtzIGluIGNvbmp1bmN0aW9uIHdpdGggW1tyZWFjdGl2ZV1dIG1peGluLiBVc2UgdGhpcyBmdW5jdGlvbiBpbnN0ZWFkIG9mIGBkZXJlZmAgaW5zaWRlIHJlbmRlciwgYW5kIHlvdXIgY29tcG9uZW50IHdpbGwgc3Vic2NyaWJlIHRvIGNoYW5nZXMgaGFwcGVuaW5nIHRvIHRoZSBkZXJlZmVkIGF0b20uIiwgOmFyZ2xpc3RzIChbcmVmXSl9LCA6c291cmNlICIoZGVmblxuIHJlYWN0XG4gXCJXb3JrcyBpbiBjb25qdW5jdGlvbiB3aXRoIFtbcmVhY3RpdmVdXSBtaXhpbi4gVXNlIHRoaXMgZnVuY3Rpb24gaW5zdGVhZCBvZiBgZGVyZWZgIGluc2lkZSByZW5kZXIsIGFuZCB5b3VyIGNvbXBvbmVudCB3aWxsIHN1YnNjcmliZSB0byBjaGFuZ2VzIGhhcHBlbmluZyB0byB0aGUgZGVyZWZlZCBhdG9tLlwiXG4gW3JlZl1cbiAoYXNzZXJ0XG4gICpyZWFjdGlvbnMqXG4gIFwicnVtLmNvcmUvcmVhY3QgaXMgb25seSBzdXBwb3J0ZWQgaW4gY29uanVuY3Rpb24gd2l0aCBydW0uY29yZS9yZWFjdGl2ZVwiKVxuICh2c3dhcCEgKnJlYWN0aW9ucyogY29uaiByZWYpXG4gQHJlZilcbiJ9IHs6c3ltIHJlcXVlc3QtcmVuZGVyLCA6bWV0YSB7OmRvYyAiU2NoZWR1bGVzIHJlYWN0IGNvbXBvbmVudCB0byBiZSByZW5kZXJlZCBvbiBuZXh0IGFuaW1hdGlvbiBmcmFtZS4iLCA6YXJnbGlzdHMgKFtjb21wb25lbnRdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVxdWVzdC1yZW5kZXJcbiBcIlNjaGVkdWxlcyByZWFjdCBjb21wb25lbnQgdG8gYmUgcmVuZGVyZWQgb24gbmV4dCBhbmltYXRpb24gZnJhbWUuXCJcbiBbY29tcG9uZW50XVxuICh3aGVuIChlbXB0eT8gQHJlbmRlci1xdWV1ZSkgKHNjaGVkdWxlIHJlbmRlcikpXG4gKHZzd2FwISByZW5kZXItcXVldWUgY29uaiBjb21wb25lbnQpKVxuIn0gezpzeW0gcG9ydGFsLCA6bWV0YSB7OmRvYyAiUmVuZGVyIGBlbGVtZW50YCBpbiBhIERPTSBgbm9kZWAgdGhhdCBpcyBvdXNpZGUgb2YgY3VycmVudCBET00gaGllcmFyY2h5LiIsIDphcmdsaXN0cyAoW2VsZW1lbnQgbm9kZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwb3J0YWxcbiBcIlJlbmRlciBgZWxlbWVudGAgaW4gYSBET00gYG5vZGVgIHRoYXQgaXMgb3VzaWRlIG9mIGN1cnJlbnQgRE9NIGhpZXJhcmNoeS5cIlxuIFtlbGVtZW50IG5vZGVdXG4gKGpzL1JlYWN0RE9NLmNyZWF0ZVBvcnRhbCBlbGVtZW50IG5vZGUpKVxuIn0gezpzeW0gd2l0aC1rZXksIDptZXRhIHs6ZG9jICJBZGRzIFJlYWN0IGtleSB0byBlbGVtZW50LlxuICAgXG4gICBgYGBcbiAgIChydW0vZGVmYyBsYWJlbCBbdGV4dF0gWzpkaXYgdGV4dF0pXG5cbiAgICgtPiAobGFiZWwpXG4gICAgICAgKHJ1bS93aXRoLWtleSBcImFiY1wiKVxuICAgICAgIChydW0vbW91bnQganMvZG9jdW1lbnQuYm9keSkpXG4gICBgYGAiLCA6YXJnbGlzdHMgKFtlbGVtZW50IGtleV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB3aXRoLWtleVxuIFwiQWRkcyBSZWFjdCBrZXkgdG8gZWxlbWVudC5cXG4gICBcXG4gICBgYGBcXG4gICAocnVtL2RlZmMgbGFiZWwgW3RleHRdIFs6ZGl2IHRleHRdKVxcblxcbiAgICgtPiAobGFiZWwpXFxuICAgICAgIChydW0vd2l0aC1rZXkgXFxcImFiY1xcXCIpXFxuICAgICAgIChydW0vbW91bnQganMvZG9jdW1lbnQuYm9keSkpXFxuICAgYGBgXCJcbiBbZWxlbWVudCBrZXldXG4gKGpzL1JlYWN0LmNsb25lRWxlbWVudCBlbGVtZW50ICNqcyB7XCJrZXlcIiBrZXl9IG5pbCkpXG4ifSB7OnN5bSBidWlsZC1kZWZjcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZW5kZXItYm9keSBtaXhpbnMgZGlzcGxheS1uYW1lXSl9LCA6c291cmNlICIoZGVmblxuIGJ1aWxkLWRlZmNzXG4gW3JlbmRlci1ib2R5IG1peGlucyBkaXNwbGF5LW5hbWVdXG4gKGxldFxuICBbcmVuZGVyXG4gICAoZm4gW3N0YXRlXSBbKGFwcGx5IHJlbmRlci1ib2R5IHN0YXRlICg6cnVtL2FyZ3Mgc3RhdGUpKSBzdGF0ZV0pXVxuICAoYnVpbGQtY3RvciByZW5kZXIgbWl4aW5zIGRpc3BsYXktbmFtZSkpKVxuIn0gezpzeW0gcmVmLCA6bWV0YSB7OmRvYyAiR2l2ZW4gc3RhdGUgYW5kIHJlZiBoYW5kbGUsIHJldHVybnMgUmVhY3QgY29tcG9uZW50LiIsIDphcmdsaXN0cyAoW3N0YXRlIGtleV0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWZcbiBcIkdpdmVuIHN0YXRlIGFuZCByZWYgaGFuZGxlLCByZXR1cm5zIFJlYWN0IGNvbXBvbmVudC5cIlxuIFtzdGF0ZSBrZXldXG4gKC0+IHN0YXRlIDpydW0vcmVhY3QtY29tcG9uZW50IChhZ2V0IFwicmVmc1wiKSAoYWdldCAobmFtZSBrZXkpKSkpXG4ifSB7OnN5bSBzdGF0aWMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gc3RhdGljXG4gXCJNaXhpbi4gV2lsbCBhdm9pZCByZS1yZW5kZXIgaWYgbm9uZSBvZiBjb21wb25lbnTigJlzIGFyZ3VtZW50cyBoYXZlIGNoYW5nZWQuIERvZXMgZXF1YWxpdHkgY2hlY2sgKGA9YCkgb24gYWxsIGFyZ3VtZW50cy5cXG4gIFxcbiAgIGBgYFxcbiAgIChydW0vZGVmYyBsYWJlbCA8IHJ1bS9zdGF0aWNcXG4gICAgIFt0ZXh0XVxcbiAgICAgWzpkaXYgdGV4dF0pXFxuICAgICBcXG4gICAocnVtL21vdW50IChsYWJlbCBcXFwiYWJjXFxcIikganMvZG9jdW1lbnQuYm9keSlcXG5cXG4gICA7OyBkZWYgIT0gYWJjLCB3aWxsIHJlLXJlbmRlclxcbiAgIChydW0vbW91bnQgKGxhYmVsIFxcXCJkZWZcXFwiKSBqcy9kb2N1bWVudC5ib2R5KVxcblxcbiAgIDs7IGRlZiA9PSBkZWYsIHdvbuKAmXQgcmUtcmVuZGVyXFxuICAgKHJ1bS9tb3VudCAobGFiZWwgXFxcImRlZlxcXCIpIGpzL2RvY3VtZW50LmJvZHkpXFxuICAgYGBgXCJcbiB7OnNob3VsZC11cGRhdGVcbiAgKGZuXG4gICBbb2xkLXN0YXRlIG5ldy1zdGF0ZV1cbiAgIChub3Q9ICg6cnVtL2FyZ3Mgb2xkLXN0YXRlKSAoOnJ1bS9hcmdzIG5ldy1zdGF0ZSkpKX0pXG4ifSB7OnN5bSBjdXJzb3IsIDptZXRhIHs6ZG9jICJTYW1lIGFzIFtbY3Vyc29yLWluXV0gYnV0IGFjY2VwdHMgc2luZ2xlIGtleSBpbnN0ZWFkIG9mIHBhdGggdmVjdG9yLiIsIDphcmdsaXN0cyAoW3JlZiBrZXkgJiBvcHRpb25zXSl9LCA6c291cmNlICIoZGVmblxuIGN1cnNvclxuIFwiU2FtZSBhcyBbW2N1cnNvci1pbl1dIGJ1dCBhY2NlcHRzIHNpbmdsZSBrZXkgaW5zdGVhZCBvZiBwYXRoIHZlY3Rvci5cIlxuIFtyZWYga2V5ICYgb3B0aW9uc11cbiAoYXBwbHkgY3Vyc29yLWluIHJlZiBba2V5XSBvcHRpb25zKSlcbiJ9IHs6c3ltIHN0YXRlLCA6bWV0YSB7OmRvYyAiR2l2ZW4gUmVhY3QgY29tcG9uZW50LCByZXR1cm5zIFJ1bSBzdGF0ZSBhc3NvY2lhdGVkIHdpdGggaXQuIiwgOmFyZ2xpc3RzIChbY29tcF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzdGF0ZVxuIFwiR2l2ZW4gUmVhY3QgY29tcG9uZW50LCByZXR1cm5zIFJ1bSBzdGF0ZSBhc3NvY2lhdGVkIHdpdGggaXQuXCJcbiBbY29tcF1cbiAoZ29iai9nZXQgKC4tc3RhdGUgY29tcCkgXCI6cnVtL3N0YXRlXCIpKVxuIn0gezpzeW0gY3Vyc29yLWluLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYXRvbSB3aXRoIGRlZXAgbmVzdGVkIHZhbHVlIGFuZCBwYXRoIGluc2lkZSBpdCwgY3JlYXRlcyBhbiBhdG9tLWxpa2Ugc3RydWN0dXJlXG4gICB0aGF0IGNhbiBiZSB1c2VkIHNlcGFyYXRlbHkgZnJvbSBtYWluIGF0b20sIGJ1dCB3aWxsIHN5bmMgY2hhbmdlcyBib3RoIHdheXM6XG4gIFxuICAgYGBgXG4gICAoZGVmIGRiIChhdG9tIHsgOnVzZXJzIHsgXCJJdmFuXCIgeyA6YWdlIDMwIH19fSkpXG4gICBcbiAgIChkZWYgaXZhbiAocnVtL2N1cnNvciBkYiBbOnVzZXJzIFwiSXZhblwiXSkpXG4gICAoZGVyZWYgaXZhbikgOzsgPT4geyA6YWdlIDMwIH1cbiAgIFxuICAgKHN3YXAhIGl2YW4gdXBkYXRlIDphZ2UgaW5jKSA7OyA9PiB7IDphZ2UgMzEgfVxuICAgKGRlcmVmIGRiKSA7OyA9PiB7IDp1c2VycyB7IFwiSXZhblwiIHsgOmFnZSAzMSB9fX1cbiAgIFxuICAgKHN3YXAhIGRiIHVwZGF0ZS1pbiBbOnVzZXJzIFwiSXZhblwiIDphZ2VdIGluYylcbiAgIDs7ID0+IHsgOnVzZXJzIHsgXCJJdmFuXCIgeyA6YWdlIDMyIH19fVxuICAgXG4gICAoZGVyZWYgaXZhbikgOzsgPT4geyA6YWdlIDMyIH1cbiAgIGBgYFxuICBcbiAgIFJldHVybmVkIHZhbHVlIHN1cHBvcnRzIGBkZXJlZmAsIGBzd2FwIWAsIGByZXNldCFgLCB3YXRjaGVzIGFuZCBtZXRhZGF0YS5cbiAgXG4gICBUaGUgb25seSBzdXBwb3J0ZWQgb3B0aW9uIGlzIGA6bWV0YWAiLCA6YXJnbGlzdHMgKFtyZWYgcGF0aCAmIHs6YXMgb3B0aW9uc31dKX0sIDpzb3VyY2UgIihkZWZuXG4gY3Vyc29yLWluXG4gXCJHaXZlbiBhdG9tIHdpdGggZGVlcCBuZXN0ZWQgdmFsdWUgYW5kIHBhdGggaW5zaWRlIGl0LCBjcmVhdGVzIGFuIGF0b20tbGlrZSBzdHJ1Y3R1cmVcXG4gICB0aGF0IGNhbiBiZSB1c2VkIHNlcGFyYXRlbHkgZnJvbSBtYWluIGF0b20sIGJ1dCB3aWxsIHN5bmMgY2hhbmdlcyBib3RoIHdheXM6XFxuICBcXG4gICBgYGBcXG4gICAoZGVmIGRiIChhdG9tIHsgOnVzZXJzIHsgXFxcIkl2YW5cXFwiIHsgOmFnZSAzMCB9fX0pKVxcbiAgIFxcbiAgIChkZWYgaXZhbiAocnVtL2N1cnNvciBkYiBbOnVzZXJzIFxcXCJJdmFuXFxcIl0pKVxcbiAgIChkZXJlZiBpdmFuKSA7OyA9PiB7IDphZ2UgMzAgfVxcbiAgIFxcbiAgIChzd2FwISBpdmFuIHVwZGF0ZSA6YWdlIGluYykgOzsgPT4geyA6YWdlIDMxIH1cXG4gICAoZGVyZWYgZGIpIDs7ID0+IHsgOnVzZXJzIHsgXFxcIkl2YW5cXFwiIHsgOmFnZSAzMSB9fX1cXG4gICBcXG4gICAoc3dhcCEgZGIgdXBkYXRlLWluIFs6dXNlcnMgXFxcIkl2YW5cXFwiIDphZ2VdIGluYylcXG4gICA7OyA9PiB7IDp1c2VycyB7IFxcXCJJdmFuXFxcIiB7IDphZ2UgMzIgfX19XFxuICAgXFxuICAgKGRlcmVmIGl2YW4pIDs7ID0+IHsgOmFnZSAzMiB9XFxuICAgYGBgXFxuICBcXG4gICBSZXR1cm5lZCB2YWx1ZSBzdXBwb3J0cyBgZGVyZWZgLCBgc3dhcCFgLCBgcmVzZXQhYCwgd2F0Y2hlcyBhbmQgbWV0YWRhdGEuXFxuICBcXG4gICBUaGUgb25seSBzdXBwb3J0ZWQgb3B0aW9uIGlzIGA6bWV0YWBcIlxuIFtyZWYgcGF0aCAmIHs6YXMgb3B0aW9uc31dXG4gKGlmXG4gIChpbnN0YW5jZT8gY3Vyc29yL0N1cnNvciByZWYpXG4gIChjdXJzb3IvQ3Vyc29yLiAoLi1yZWYgcmVmKSAoaW50byAoLi1wYXRoIHJlZikgcGF0aCkgKDptZXRhIG9wdGlvbnMpKVxuICAoY3Vyc29yL0N1cnNvci4gcmVmIHBhdGggKDptZXRhIG9wdGlvbnMpKSkpXG4ifSB7OnN5bSBkb20tbm9kZSwgOm1ldGEgezpkb2MgIkdpdmVuIHN0YXRlLCByZXR1cm5zIHRvcC1sZXZlbCBET00gbm9kZSBvZiBjb21wb25lbnQuIENhbGwgaXQgZHVyaW5nIGxpZmVjeWNsZSBjYWxsYmFja3MuIENhbuKAmXQgYmUgY2FsbGVkIGR1cmluZyByZW5kZXIuIiwgOmFyZ2xpc3RzIChbc3RhdGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gZG9tLW5vZGVcbiBcIkdpdmVuIHN0YXRlLCByZXR1cm5zIHRvcC1sZXZlbCBET00gbm9kZSBvZiBjb21wb25lbnQuIENhbGwgaXQgZHVyaW5nIGxpZmVjeWNsZSBjYWxsYmFja3MuIENhbuKAmXQgYmUgY2FsbGVkIGR1cmluZyByZW5kZXIuXCJcbiBbc3RhdGVdXG4gKGpzL1JlYWN0RE9NLmZpbmRET01Ob2RlICg6cnVtL3JlYWN0LWNvbXBvbmVudCBzdGF0ZSkpKVxuIn0gezpzeW0gd2l0aC1yZWYsIDptZXRhIHs6ZG9jICJBZGRzIFJlYWN0IHJlZiAoc3RyaW5nIG9yIGNhbGxiYWNrKSB0byBlbGVtZW50LlxuICAgXG4gICBgYGBcbiAgIChydW0vZGVmYyBsYWJlbCBbdGV4dF0gWzpkaXYgdGV4dF0pXG5cbiAgICgtPiAobGFiZWwpXG4gICAgICAgKHJ1bS93aXRoLXJlZiBcImFiY1wiKVxuICAgICAgIChydW0vbW91bnQganMvZG9jdW1lbnQuYm9keSkpXG4gICBgYGAiLCA6YXJnbGlzdHMgKFtlbGVtZW50IHJlZl0pfSwgOnNvdXJjZSAiKGRlZm5cbiB3aXRoLXJlZlxuIFwiQWRkcyBSZWFjdCByZWYgKHN0cmluZyBvciBjYWxsYmFjaykgdG8gZWxlbWVudC5cXG4gICBcXG4gICBgYGBcXG4gICAocnVtL2RlZmMgbGFiZWwgW3RleHRdIFs6ZGl2IHRleHRdKVxcblxcbiAgICgtPiAobGFiZWwpXFxuICAgICAgIChydW0vd2l0aC1yZWYgXFxcImFiY1xcXCIpXFxuICAgICAgIChydW0vbW91bnQganMvZG9jdW1lbnQuYm9keSkpXFxuICAgYGBgXCJcbiBbZWxlbWVudCByZWZdXG4gKGpzL1JlYWN0LmNsb25lRWxlbWVudCBlbGVtZW50ICNqcyB7XCJyZWZcIiByZWZ9IG5pbCkpXG4ifSB7OnN5bSBidWlsZC1kZWZjLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JlbmRlci1ib2R5IG1peGlucyBkaXNwbGF5LW5hbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gYnVpbGQtZGVmY1xuIFtyZW5kZXItYm9keSBtaXhpbnMgZGlzcGxheS1uYW1lXVxuIChpZlxuICAoZW1wdHk/IG1peGlucylcbiAgKGxldFxuICAgW2NsYXNzXG4gICAgKGZuIFtwcm9wc10gKGFwcGx5IHJlbmRlci1ib2R5IChhZ2V0IHByb3BzIFwiOnJ1bS9hcmdzXCIpKSlcbiAgICBfXG4gICAgKGFzZXQgY2xhc3MgXCJkaXNwbGF5TmFtZVwiIGRpc3BsYXktbmFtZSlcbiAgICBjdG9yXG4gICAgKGZuXG4gICAgIFsmIGFyZ3NdXG4gICAgIChqcy9SZWFjdC5jcmVhdGVFbGVtZW50IGNsYXNzICNqcyB7XCI6cnVtL2FyZ3NcIiBhcmdzfSkpXVxuICAgKHdpdGgtbWV0YSBjdG9yIHs6cnVtL2NsYXNzIGNsYXNzfSkpXG4gIChsZXRcbiAgIFtyZW5kZXIgKGZuIFtzdGF0ZV0gWyhhcHBseSByZW5kZXItYm9keSAoOnJ1bS9hcmdzIHN0YXRlKSkgc3RhdGVdKV1cbiAgIChidWlsZC1jdG9yIHJlbmRlciBtaXhpbnMgZGlzcGxheS1uYW1lKSkpKVxuIn0gezpzeW0gaHlkcmF0ZSwgOm1ldGEgezpkb2MgIlNhbWUgYXMgW1ttb3VudF1dIGJ1dCBtdXN0IGJlIGNhbGxlZCBvbiBET00gdHJlZSBhbHJlYWR5IHJlbmRlcmVkIGJ5IGEgc2VydmVyIHZpYSBbW3JlbmRlci1odG1sXV0uIiwgOmFyZ2xpc3RzIChbZWxlbWVudCBub2RlXSl9LCA6c291cmNlICIoZGVmblxuIGh5ZHJhdGVcbiBcIlNhbWUgYXMgW1ttb3VudF1dIGJ1dCBtdXN0IGJlIGNhbGxlZCBvbiBET00gdHJlZSBhbHJlYWR5IHJlbmRlcmVkIGJ5IGEgc2VydmVyIHZpYSBbW3JlbmRlci1odG1sXV0uXCJcbiBbZWxlbWVudCBub2RlXVxuIChqcy9SZWFjdERPTS5oeWRyYXRlIGVsZW1lbnQgbm9kZSkpXG4ifSB7OnN5bSBidWlsZC1kZWZjYywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZW5kZXItYm9keSBtaXhpbnMgZGlzcGxheS1uYW1lXSl9LCA6c291cmNlICIoZGVmblxuIGJ1aWxkLWRlZmNjXG4gW3JlbmRlci1ib2R5IG1peGlucyBkaXNwbGF5LW5hbWVdXG4gKGxldFxuICBbcmVuZGVyXG4gICAoZm5cbiAgICBbc3RhdGVdXG4gICAgWyhhcHBseSByZW5kZXItYm9keSAoOnJ1bS9yZWFjdC1jb21wb25lbnQgc3RhdGUpICg6cnVtL2FyZ3Mgc3RhdGUpKVxuICAgICBzdGF0ZV0pXVxuICAoYnVpbGQtY3RvciByZW5kZXIgbWl4aW5zIGRpc3BsYXktbmFtZSkpKVxuIn0gezpzeW0gZGVyaXZlZC1hdG9tLCA6bWV0YSB7OmFyZ2xpc3RzIChxdW90ZSAoW3JlZnMga2V5IGZdIFtyZWZzIGtleSBmIG9wdHNdKSksIDpkb2MgIlVzZSB0aGlzIHRvIGNyZWF0ZSDigJxjaGFpbnPigJ0gYW5kIGFjeWNsaWMgZ3JhcGhzIG9mIGRlcGVuZGVudCBhdG9tcy5cbiAgIFxuICAgICAgICAgICAgIFtbZGVyaXZlZC1hdG9tXV0gd2lsbDpcbiAgICAgICAgICBcbiAgICAgICAgICAgICAtIFRha2UgTiDigJxzb3VyY2XigJ0gcmVmcy5cbiAgICAgICAgICAgICAtIFNldCB1cCBhIHdhdGNoIG9uIGVhY2ggb2YgdGhlbS5cbiAgICAgICAgICAgICAtIENyZWF0ZSDigJxzaW5r4oCdIGF0b20uXG4gICAgICAgICAgICAgLSBXaGVuIGFueSBvZiBzb3VyY2UgcmVmcyBjaGFuZ2VzOlxuICAgICAgICAgICAgICAgIC0gcmUtcnVuIGZ1bmN0aW9uIGBmYCwgcGFzc2luZyBOIGRlcmVmZXJlbmNlZCB2YWx1ZXMgb2Ygc291cmNlIHJlZnMuXG4gICAgICAgICAgICAgICAgLSBgcmVzZXQhYCByZXN1bHQgb2YgYGZgIHRvIHRoZSBzaW5rIGF0b20uXG4gICAgICAgICAgICAgLSBSZXR1cm4gc2luayBhdG9tLlxuXG4gICAgICAgICAgICAgRXhhbXBsZTpcblxuICAgICAgICAgICAgIGBgYFxuICAgICAgICAgICAgIChkZWYgKmEgKGF0b20gMCkpXG4gICAgICAgICAgICAgKGRlZiAqYiAoYXRvbSAxKSlcbiAgICAgICAgICAgICAoZGVmICp4IChkZXJpdmVkLWF0b20gWyphICpiXSA6OmtleVxuICAgICAgICAgICAgICAgICAgICAgICAoZm4gW2EgYl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyIGEgXCI6XCIgYikpKSlcbiAgICAgICAgICAgICBcbiAgICAgICAgICAgICAodHlwZSAqeCkgIDs7ID0+IGNsb2p1cmUubGFuZy5BdG9tXG4gICAgICAgICAgICAgKGRlcmVmICp4KSA7OyA9PiBcIjA6MVwiXG4gICAgICAgICAgICAgXG4gICAgICAgICAgICAgKHN3YXAhICphIGluYylcbiAgICAgICAgICAgICAoZGVyZWYgKngpIDs7ID0+IFwiMToxXCJcbiAgICAgICAgICAgICBcbiAgICAgICAgICAgICAocmVzZXQhICpiIDcpXG4gICAgICAgICAgICAgKGRlcmVmICp4KSA7OyA9PiBcIjE6N1wiXG4gICAgICAgICAgICAgYGBgXG5cbiAgICAgICAgICAgICBBcmd1bWVudHM6XG4gICAgICAgICAgXG4gICAgICAgICAgICAgLSBgcmVmc2AgLSBzZXF1ZW5jZSBvZiBzb3VyY2UgcmVmcyxcbiAgICAgICAgICAgICAtIGBrZXlgICAtIHVuaXF1ZSBrZXkgdG8gcmVnaXN0ZXIgd2F0Y2hlciwgc2FtZSBhcyBpbiBgY2xvanVyZS5jb3JlL2FkZC13YXRjaGAsXG4gICAgICAgICAgICAgLSBgZmAgICAgLSBmdW5jdGlvbiB0aGF0IG11c3QgYWNjZXB0IE4gYXJndW1lbnRzIChzYW1lIGFzIG51bWJlciBvZiBzb3VyY2UgcmVmcykgYW5kIHJldHVybiBhIHZhbHVlIHRvIGJlIHdyaXR0ZW4gdG8gdGhlIHNpbmsgcmVmLiBOb3RlOiBgZmAgd2lsbCBiZSBjYWxsZWQgd2l0aCBhbHJlYWR5IGRlcmVmZXJlbmNlZCB2YWx1ZXMsXG4gICAgICAgICAgICAgLSBgb3B0c2AgLSBvcHRpb25hbC4gTWFwIG9mOlxuICAgICAgICAgICAgICAgLSBgOnJlZmAgLSB1c2UgdGhpcyBhcyBzaW5rIHJlZi4gQnkgZGVmYXVsdCBjcmVhdGVzIG5ldyBhdG9tLFxuICAgICAgICAgICAgICAgLSBgOmNoZWNrLWVxdWFscz9gIC0gRGVmYXVsdHMgdG8gYHRydWVgLiBJZiBlcXVhbGl0eSBjaGVjayBzaG91bGQgYmUgcnVuIG9uIGVhY2ggc291cmNlIHVwZGF0ZTogYCg9IEBzaW5rIChmIG5ldy12YWxzKSlgLiBXaGVuIHJlc3VsdCBvZiByZWNhbGN1bGF0aW5nIGBmYCBlcXVhbHMgdG8gdGhlIG9sZCB2YWx1ZSwgYHJlc2V0IWAgd29u4oCZdCBiZSBjYWxsZWQuIFNldCB0byBgZmFsc2VgIGlmIGNoZWNraW5nIGZvciBlcXVhbGl0eSBjYW4gYmUgZXhwZW5zaXZlLiJ9LCA6c291cmNlICIoZGVmIGRlcml2ZWQtYXRvbSBkZXJpdmVkLWF0b20vZGVyaXZlZC1hdG9tKVxuIn0pLCBjbGpzLmNvcmUgKHs6c3ltIGpzLT5jbGosIDptZXRhIHs6ZG9jICJSZWN1cnNpdmVseSB0cmFuc2Zvcm1zIEphdmFTY3JpcHQgYXJyYXlzIGludG8gQ2xvanVyZVNjcmlwdFxuICB2ZWN0b3JzLCBhbmQgSmF2YVNjcmlwdCBvYmplY3RzIGludG8gQ2xvanVyZVNjcmlwdCBtYXBzLiAgV2l0aFxuICBvcHRpb24gJzprZXl3b3JkaXplLWtleXMgdHJ1ZScgd2lsbCBjb252ZXJ0IG9iamVjdCBmaWVsZHMgZnJvbVxuICBzdHJpbmdzIHRvIGtleXdvcmRzLiIsIDphcmdsaXN0cyBbW3hdIFt4ICYgb3B0c11dfSwgOnNvdXJjZSAiKGRlZm5cbiBqcy0+Y2xqXG4gXCJSZWN1cnNpdmVseSB0cmFuc2Zvcm1zIEphdmFTY3JpcHQgYXJyYXlzIGludG8gQ2xvanVyZVNjcmlwdFxcbiAgdmVjdG9ycywgYW5kIEphdmFTY3JpcHQgb2JqZWN0cyBpbnRvIENsb2p1cmVTY3JpcHQgbWFwcy4gIFdpdGhcXG4gIG9wdGlvbiAnOmtleXdvcmRpemUta2V5cyB0cnVlJyB3aWxsIGNvbnZlcnQgb2JqZWN0IGZpZWxkcyBmcm9tXFxuICBzdHJpbmdzIHRvIGtleXdvcmRzLlwiXG4gKFt4XSAoanMtPmNsaiB4IDprZXl3b3JkaXplLWtleXMgZmFsc2UpKVxuIChbeCAmIG9wdHNdXG4gIChsZXRcbiAgIFt7OmtleXMgW2tleXdvcmRpemUta2V5c119XG4gICAgb3B0c1xuICAgIGtleWZuXG4gICAgKGlmIGtleXdvcmRpemUta2V5cyBrZXl3b3JkIHN0cilcbiAgICBmXG4gICAgKGZuXG4gICAgIHRoaXNmblxuICAgICBbeF1cbiAgICAgKGNvbmRcbiAgICAgIChzYXRpc2ZpZXM/IElFbmNvZGVDbG9qdXJlIHgpXG4gICAgICAoLWpzLT5jbGogeCAoYXBwbHkgYXJyYXktbWFwIG9wdHMpKVxuICAgICAgKHNlcT8geClcbiAgICAgIChkb2FsbCAobWFwIHRoaXNmbiB4KSlcbiAgICAgIChtYXAtZW50cnk/IHgpXG4gICAgICAoTWFwRW50cnkuICh0aGlzZm4gKGtleSB4KSkgKHRoaXNmbiAodmFsIHgpKSBuaWwpXG4gICAgICAoY29sbD8geClcbiAgICAgIChpbnRvIChlbXB0eSB4KSAobWFwIHRoaXNmbikgeClcbiAgICAgIChhcnJheT8geClcbiAgICAgIChwZXJzaXN0ZW50IVxuICAgICAgIChyZWR1Y2VcbiAgICAgICAgKGZuKlxuICAgICAgICAgW3AxX180NTQ0MiMgcDJfXzQ1NDQzI11cbiAgICAgICAgIChjb25qISBwMV9fNDU0NDIjICh0aGlzZm4gcDJfXzQ1NDQzIykpKVxuICAgICAgICAodHJhbnNpZW50IFtdKVxuICAgICAgICB4KSlcbiAgICAgIChpZGVudGljYWw/ICh0eXBlIHgpIGpzL09iamVjdClcbiAgICAgIChwZXJzaXN0ZW50IVxuICAgICAgIChyZWR1Y2VcbiAgICAgICAgKGZuIFtyIGtdIChhc3NvYyEgciAoa2V5Zm4gaykgKHRoaXNmbiAoZ29iamVjdC9nZXQgeCBrKSkpKVxuICAgICAgICAodHJhbnNpZW50IHt9KVxuICAgICAgICAoanMta2V5cyB4KSkpXG4gICAgICA6ZWxzZVxuICAgICAgeCkpXVxuICAgKGYgeCkpKSlcbiJ9IHs6c3ltIHNvcnQtYnksIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgc29ydGVkIHNlcXVlbmNlIG9mIHRoZSBpdGVtcyBpbiBjb2xsLCB3aGVyZSB0aGUgc29ydFxuICAgb3JkZXIgaXMgZGV0ZXJtaW5lZCBieSBjb21wYXJpbmcgKGtleWZuIGl0ZW0pLiAgQ29tcCBjYW4gYmVcbiAgIGJvb2xlYW4tdmFsdWVkIGNvbXBhcmlzb24gZnVuY3Rpb24sIG9yIGEgLS8wLysgdmFsdWVkIGNvbXBhcmF0b3IuXG4gICBDb21wIGRlZmF1bHRzIHRvIGNvbXBhcmUuIiwgOmFyZ2xpc3RzIFtba2V5Zm4gY29sbF0gW2tleWZuIGNvbXAgY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBzb3J0LWJ5XG4gXCJSZXR1cm5zIGEgc29ydGVkIHNlcXVlbmNlIG9mIHRoZSBpdGVtcyBpbiBjb2xsLCB3aGVyZSB0aGUgc29ydFxcbiAgIG9yZGVyIGlzIGRldGVybWluZWQgYnkgY29tcGFyaW5nIChrZXlmbiBpdGVtKS4gIENvbXAgY2FuIGJlXFxuICAgYm9vbGVhbi12YWx1ZWQgY29tcGFyaXNvbiBmdW5jdGlvbiwgb3IgYSAtLzAvKyB2YWx1ZWQgY29tcGFyYXRvci5cXG4gICBDb21wIGRlZmF1bHRzIHRvIGNvbXBhcmUuXCJcbiAoW2tleWZuIGNvbGxdIChzb3J0LWJ5IGtleWZuIGNvbXBhcmUgY29sbCkpXG4gKFtrZXlmbiBjb21wIGNvbGxdXG4gIChzb3J0IChmbiBbeCB5XSAoKGZuLT5jb21wYXJhdG9yIGNvbXApIChrZXlmbiB4KSAoa2V5Zm4geSkpKSBjb2xsKSkpXG4ifSB7OnN5bSBJVHJhbnNpZW50QXNzb2NpYXRpdmUsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgYWRkaW5nIGFzc29jaWF0aXZpdHkgdG8gdHJhbnNpZW50IGNvbGxlY3Rpb25zLiJ9LCA6bWV0aG9kcyAoLWFzc29jISl9IHs6c3ltIGNodW5rLWZpcnN0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuIGNodW5rLWZpcnN0IFtzXSAoLWNodW5rZWQtZmlyc3QgcykpXG4ifSB7OnN5bSBwcmludC1tZXRhPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtvcHRzIG9ial0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcmludC1tZXRhP1xuIFtvcHRzIG9ial1cbiAoYW5kXG4gIChib29sZWFuIChnZXQgb3B0cyA6bWV0YSkpXG4gIChpbXBsZW1lbnRzPyBJTWV0YSBvYmopXG4gIChub3QgKG5pbD8gKG1ldGEgb2JqKSkpKSlcbiJ9IHs6c3ltIG0zLWhhc2gtaW50LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2luXSl9LCA6c291cmNlICIoZGVmblxuIG0zLWhhc2gtaW50XG4gW2luXVxuIChpZlxuICAoemVybz8gaW4pXG4gIGluXG4gIChsZXQgW2sxIChtMy1taXgtSzEgaW4pIGgxIChtMy1taXgtSDEgbTMtc2VlZCBrMSldIChtMy1mbWl4IGgxIDQpKSkpXG4ifSB7OnN5bSBwci1zdHIqLCA6bWV0YSB7OmRvYyAiU3VwcG9ydCBzbyB0aGF0IGNvbGxlY3Rpb25zIGNhbiBpbXBsZW1lbnQgdG9TdHJpbmcgd2l0aG91dFxuICAgbG9hZGluZyBhbGwgdGhlIHByaW50aW5nIG1hY2hpbmVyeS4iLCA6YXJnbGlzdHMgKFtvYmpdKX0sIDpzb3VyY2UgIihkZWZuXG4gcHItc3RyKlxuIFwiU3VwcG9ydCBzbyB0aGF0IGNvbGxlY3Rpb25zIGNhbiBpbXBsZW1lbnQgdG9TdHJpbmcgd2l0aG91dFxcbiAgIGxvYWRpbmcgYWxsIHRoZSBwcmludGluZyBtYWNoaW5lcnkuXCJcbiBbb2JqXVxuIChsZXRcbiAgW3NiIChTdHJpbmdCdWZmZXIuKSB3cml0ZXIgKFN0cmluZ0J1ZmZlcldyaXRlci4gc2IpXVxuICAoLXByLXdyaXRlciBvYmogd3JpdGVyIChwci1vcHRzKSlcbiAgKC1mbHVzaCB3cml0ZXIpXG4gIChzdHIgc2IpKSlcbiJ9IHs6c3ltIGVkdWN0aW9uLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHJlZHVjaWJsZS9pdGVyYWJsZSBhcHBsaWNhdGlvbiBvZiB0aGUgdHJhbnNkdWNlcnNcbiAgdG8gdGhlIGl0ZW1zIGluIGNvbGwuIFRyYW5zZHVjZXJzIGFyZSBhcHBsaWVkIGluIG9yZGVyIGFzIGlmXG4gIGNvbWJpbmVkIHdpdGggY29tcC4gTm90ZSB0aGF0IHRoZXNlIGFwcGxpY2F0aW9ucyB3aWxsIGJlXG4gIHBlcmZvcm1lZCBldmVyeSB0aW1lIHJlZHVjZS9pdGVyYXRvciBpcyBjYWxsZWQuIiwgOmFyZ2xpc3RzIChbJiB4Zm9ybXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gZWR1Y3Rpb25cbiBcIlJldHVybnMgYSByZWR1Y2libGUvaXRlcmFibGUgYXBwbGljYXRpb24gb2YgdGhlIHRyYW5zZHVjZXJzXFxuICB0byB0aGUgaXRlbXMgaW4gY29sbC4gVHJhbnNkdWNlcnMgYXJlIGFwcGxpZWQgaW4gb3JkZXIgYXMgaWZcXG4gIGNvbWJpbmVkIHdpdGggY29tcC4gTm90ZSB0aGF0IHRoZXNlIGFwcGxpY2F0aW9ucyB3aWxsIGJlXFxuICBwZXJmb3JtZWQgZXZlcnkgdGltZSByZWR1Y2UvaXRlcmF0b3IgaXMgY2FsbGVkLlwiXG4gezphcmdsaXN0cyAnKFt4Zm9ybSogY29sbF0pfVxuIFsmIHhmb3Jtc11cbiAoRWR1Y3Rpb24uIChhcHBseSBjb21wIChidXRsYXN0IHhmb3JtcykpIChsYXN0IHhmb3JtcykpKVxuIn0gezpzeW0gdHJlZS1zZXEsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiB0aGUgbm9kZXMgaW4gYSB0cmVlLCB2aWEgYSBkZXB0aC1maXJzdCB3YWxrLlxuICBicmFuY2g/IG11c3QgYmUgYSBmbiBvZiBvbmUgYXJnIHRoYXQgcmV0dXJucyB0cnVlIGlmIHBhc3NlZCBhIG5vZGVcbiAgdGhhdCBjYW4gaGF2ZSBjaGlsZHJlbiAoYnV0IG1heSBub3QpLiAgY2hpbGRyZW4gbXVzdCBiZSBhIGZuIG9mIG9uZVxuICBhcmcgdGhhdCByZXR1cm5zIGEgc2VxdWVuY2Ugb2YgdGhlIGNoaWxkcmVuLiBXaWxsIG9ubHkgYmUgY2FsbGVkIG9uXG4gIG5vZGVzIGZvciB3aGljaCBicmFuY2g/IHJldHVybnMgdHJ1ZS4gUm9vdCBpcyB0aGUgcm9vdCBub2RlIG9mIHRoZVxuICB0cmVlLiIsIDphcmdsaXN0cyAoW2JyYW5jaD8gY2hpbGRyZW4gcm9vdF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0cmVlLXNlcVxuIFwiUmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2YgdGhlIG5vZGVzIGluIGEgdHJlZSwgdmlhIGEgZGVwdGgtZmlyc3Qgd2Fsay5cXG4gIGJyYW5jaD8gbXVzdCBiZSBhIGZuIG9mIG9uZSBhcmcgdGhhdCByZXR1cm5zIHRydWUgaWYgcGFzc2VkIGEgbm9kZVxcbiAgdGhhdCBjYW4gaGF2ZSBjaGlsZHJlbiAoYnV0IG1heSBub3QpLiAgY2hpbGRyZW4gbXVzdCBiZSBhIGZuIG9mIG9uZVxcbiAgYXJnIHRoYXQgcmV0dXJucyBhIHNlcXVlbmNlIG9mIHRoZSBjaGlsZHJlbi4gV2lsbCBvbmx5IGJlIGNhbGxlZCBvblxcbiAgbm9kZXMgZm9yIHdoaWNoIGJyYW5jaD8gcmV0dXJucyB0cnVlLiBSb290IGlzIHRoZSByb290IG5vZGUgb2YgdGhlXFxuICB0cmVlLlwiXG4gW2JyYW5jaD8gY2hpbGRyZW4gcm9vdF1cbiAobGV0XG4gIFt3YWxrXG4gICAoZm5cbiAgICB3YWxrXG4gICAgW25vZGVdXG4gICAgKGxhenktc2VxXG4gICAgIChjb25zIG5vZGUgKHdoZW4gKGJyYW5jaD8gbm9kZSkgKG1hcGNhdCB3YWxrIChjaGlsZHJlbiBub2RlKSkpKSkpXVxuICAod2FsayByb290KSkpXG4ifSB7OnN5bSB1bmNoZWNrZWQtcmVtYWluZGVyLWludCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4IG5dKX0sIDpzb3VyY2UgIihkZWZuXG4gdW5jaGVja2VkLXJlbWFpbmRlci1pbnRcbiBbeCBuXVxuIChjbGpzLmNvcmUvdW5jaGVja2VkLXJlbWFpbmRlci1pbnQgeCBuKSlcbiJ9IHs6c3ltIHV1aWQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm4gdXVpZCBbc10gKGFzc2VydCAoc3RyaW5nPyBzKSkgKFVVSUQuICgudG9Mb3dlckNhc2UgcykgbmlsKSlcbiJ9IHs6c3ltIHNlcSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBzZXEgb24gdGhlIGNvbGxlY3Rpb24uIElmIHRoZSBjb2xsZWN0aW9uIGlzXG4gIGVtcHR5LCByZXR1cm5zIG5pbC4gIChzZXEgbmlsKSByZXR1cm5zIG5pbC4gc2VxIGFsc28gd29ya3Mgb25cbiAgU3RyaW5ncy4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIHNlcVxuIFwiUmV0dXJucyBhIHNlcSBvbiB0aGUgY29sbGVjdGlvbi4gSWYgdGhlIGNvbGxlY3Rpb24gaXNcXG4gIGVtcHR5LCByZXR1cm5zIG5pbC4gIChzZXEgbmlsKSByZXR1cm5zIG5pbC4gc2VxIGFsc28gd29ya3Mgb25cXG4gIFN0cmluZ3MuXCJcbiBbY29sbF1cbiAod2hlbi1ub3RcbiAgKG5pbD8gY29sbClcbiAgKGNvbmRcbiAgIChpbXBsZW1lbnRzPyBJU2VxYWJsZSBjb2xsKVxuICAgKC1zZXEgY29sbClcbiAgIChhcnJheT8gY29sbClcbiAgICh3aGVuLW5vdCAoemVybz8gKGFsZW5ndGggY29sbCkpIChJbmRleGVkU2VxLiBjb2xsIDAgbmlsKSlcbiAgIChzdHJpbmc/IGNvbGwpXG4gICAod2hlbi1ub3QgKHplcm8/ICguLWxlbmd0aCBjb2xsKSkgKEluZGV4ZWRTZXEuIGNvbGwgMCBuaWwpKVxuICAgKGpzLWl0ZXJhYmxlPyBjb2xsKVxuICAgKGVzNi1pdGVyYXRvci1zZXEgKC5jYWxsIChnb2JqZWN0L2dldCBjb2xsIElURVJfU1lNQk9MKSBjb2xsKSlcbiAgIChuYXRpdmUtc2F0aXNmaWVzPyBJU2VxYWJsZSBjb2xsKVxuICAgKC1zZXEgY29sbClcbiAgIDplbHNlXG4gICAodGhyb3cgKGpzL0Vycm9yLiAoc3RyIGNvbGwgXCIgaXMgbm90IElTZXFhYmxlXCIpKSkpKSlcbiJ9IHs6c3ltIHJlZHVjZSwgOm1ldGEgezpkb2MgImYgc2hvdWxkIGJlIGEgZnVuY3Rpb24gb2YgMiBhcmd1bWVudHMuIElmIHZhbCBpcyBub3Qgc3VwcGxpZWQsXG4gIHJldHVybnMgdGhlIHJlc3VsdCBvZiBhcHBseWluZyBmIHRvIHRoZSBmaXJzdCAyIGl0ZW1zIGluIGNvbGwsIHRoZW5cbiAgYXBwbHlpbmcgZiB0byB0aGF0IHJlc3VsdCBhbmQgdGhlIDNyZCBpdGVtLCBldGMuIElmIGNvbGwgY29udGFpbnMgbm9cbiAgaXRlbXMsIGYgbXVzdCBhY2NlcHQgbm8gYXJndW1lbnRzIGFzIHdlbGwsIGFuZCByZWR1Y2UgcmV0dXJucyB0aGVcbiAgcmVzdWx0IG9mIGNhbGxpbmcgZiB3aXRoIG5vIGFyZ3VtZW50cy4gIElmIGNvbGwgaGFzIG9ubHkgMSBpdGVtLCBpdFxuICBpcyByZXR1cm5lZCBhbmQgZiBpcyBub3QgY2FsbGVkLiAgSWYgdmFsIGlzIHN1cHBsaWVkLCByZXR1cm5zIHRoZVxuICByZXN1bHQgb2YgYXBwbHlpbmcgZiB0byB2YWwgYW5kIHRoZSBmaXJzdCBpdGVtIGluIGNvbGwsIHRoZW5cbiAgYXBwbHlpbmcgZiB0byB0aGF0IHJlc3VsdCBhbmQgdGhlIDJuZCBpdGVtLCBldGMuIElmIGNvbGwgY29udGFpbnMgbm9cbiAgaXRlbXMsIHJldHVybnMgdmFsIGFuZCBmIGlzIG5vdCBjYWxsZWQuIiwgOmFyZ2xpc3RzIFtbZiBjb2xsXSBbZiB2YWwgY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cbiByZWR1Y2VcbiBcImYgc2hvdWxkIGJlIGEgZnVuY3Rpb24gb2YgMiBhcmd1bWVudHMuIElmIHZhbCBpcyBub3Qgc3VwcGxpZWQsXFxuICByZXR1cm5zIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgZiB0byB0aGUgZmlyc3QgMiBpdGVtcyBpbiBjb2xsLCB0aGVuXFxuICBhcHBseWluZyBmIHRvIHRoYXQgcmVzdWx0IGFuZCB0aGUgM3JkIGl0ZW0sIGV0Yy4gSWYgY29sbCBjb250YWlucyBub1xcbiAgaXRlbXMsIGYgbXVzdCBhY2NlcHQgbm8gYXJndW1lbnRzIGFzIHdlbGwsIGFuZCByZWR1Y2UgcmV0dXJucyB0aGVcXG4gIHJlc3VsdCBvZiBjYWxsaW5nIGYgd2l0aCBubyBhcmd1bWVudHMuICBJZiBjb2xsIGhhcyBvbmx5IDEgaXRlbSwgaXRcXG4gIGlzIHJldHVybmVkIGFuZCBmIGlzIG5vdCBjYWxsZWQuICBJZiB2YWwgaXMgc3VwcGxpZWQsIHJldHVybnMgdGhlXFxuICByZXN1bHQgb2YgYXBwbHlpbmcgZiB0byB2YWwgYW5kIHRoZSBmaXJzdCBpdGVtIGluIGNvbGwsIHRoZW5cXG4gIGFwcGx5aW5nIGYgdG8gdGhhdCByZXN1bHQgYW5kIHRoZSAybmQgaXRlbSwgZXRjLiBJZiBjb2xsIGNvbnRhaW5zIG5vXFxuICBpdGVtcywgcmV0dXJucyB2YWwgYW5kIGYgaXMgbm90IGNhbGxlZC5cIlxuIChbZiBjb2xsXVxuICAoY29uZFxuICAgKGltcGxlbWVudHM/IElSZWR1Y2UgY29sbClcbiAgICgtcmVkdWNlIGNvbGwgZilcbiAgIChhcnJheT8gY29sbClcbiAgIChhcnJheS1yZWR1Y2UgY29sbCBmKVxuICAgKHN0cmluZz8gY29sbClcbiAgIChhcnJheS1yZWR1Y2UgY29sbCBmKVxuICAgKG5hdGl2ZS1zYXRpc2ZpZXM/IElSZWR1Y2UgY29sbClcbiAgICgtcmVkdWNlIGNvbGwgZilcbiAgIChpdGVyYWJsZT8gY29sbClcbiAgIChpdGVyLXJlZHVjZSBjb2xsIGYpXG4gICA6ZWxzZVxuICAgKHNlcS1yZWR1Y2UgZiBjb2xsKSkpXG4gKFtmIHZhbCBjb2xsXVxuICAoY29uZFxuICAgKGltcGxlbWVudHM/IElSZWR1Y2UgY29sbClcbiAgICgtcmVkdWNlIGNvbGwgZiB2YWwpXG4gICAoYXJyYXk/IGNvbGwpXG4gICAoYXJyYXktcmVkdWNlIGNvbGwgZiB2YWwpXG4gICAoc3RyaW5nPyBjb2xsKVxuICAgKGFycmF5LXJlZHVjZSBjb2xsIGYgdmFsKVxuICAgKG5hdGl2ZS1zYXRpc2ZpZXM/IElSZWR1Y2UgY29sbClcbiAgICgtcmVkdWNlIGNvbGwgZiB2YWwpXG4gICAoaXRlcmFibGU/IGNvbGwpXG4gICAoaXRlci1yZWR1Y2UgY29sbCBmIHZhbClcbiAgIDplbHNlXG4gICAoc2VxLXJlZHVjZSBmIHZhbCBjb2xsKSkpKVxuIn0gezpzeW0gSVVVSUQsIDptZXRhIHs6ZG9jICJBIG1hcmtlciBwcm90b2NvbCBmb3IgVVVJRHMifSwgOm1ldGhvZHMgKCl9IHs6c3ltIElOSVQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIElOSVQgI2pzIHt9KVxuIn0gezpzeW0gZmluZC1ucywgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG5hbWVzcGFjZSBuYW1lZCBieSB0aGUgc3ltYm9sIG9yIG5pbCBpZiBpdCBkb2Vzbid0IGV4aXN0LlxuICBCb290c3RyYXAgb25seS4iLCA6YXJnbGlzdHMgKFtuc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBmaW5kLW5zXG4gXCJSZXR1cm5zIHRoZSBuYW1lc3BhY2UgbmFtZWQgYnkgdGhlIHN5bWJvbCBvciBuaWwgaWYgaXQgZG9lc24ndCBleGlzdC5cXG4gIEJvb3RzdHJhcCBvbmx5LlwiXG4gW25zXVxuICh3aGVuIChuaWw/IE5TX0NBQ0hFKSAoc2V0ISBOU19DQUNIRSAoYXRvbSB7fSkpKVxuIChsZXRcbiAgW3RoZS1ucyAoZ2V0IEBOU19DQUNIRSBucyldXG4gIChpZi1ub3RcbiAgIChuaWw/IHRoZS1ucylcbiAgIHRoZS1uc1xuICAgKGxldFxuICAgIFtucy1vYmogKGZpbmQtbnMtb2JqIG5zKV1cbiAgICAod2hlbi1ub3RcbiAgICAgKG5pbD8gbnMtb2JqKVxuICAgICAobGV0XG4gICAgICBbbmV3LW5zIChjcmVhdGUtbnMgbnMgbnMtb2JqKV1cbiAgICAgIChzd2FwISBOU19DQUNIRSBhc3NvYyBucyBuZXctbnMpXG4gICAgICBuZXctbnMpKSkpKSlcbiJ9IHs6c3ltIGNvbnRhaW5zPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiBrZXkgaXMgcHJlc2VudCBpbiB0aGUgZ2l2ZW4gY29sbGVjdGlvbiwgb3RoZXJ3aXNlXG4gIHJldHVybnMgZmFsc2UuICBOb3RlIHRoYXQgZm9yIG51bWVyaWNhbGx5IGluZGV4ZWQgY29sbGVjdGlvbnMgbGlrZVxuICB2ZWN0b3JzIGFuZCBhcnJheXMsIHRoaXMgdGVzdHMgaWYgdGhlIG51bWVyaWMga2V5IGlzIHdpdGhpbiB0aGVcbiAgcmFuZ2Ugb2YgaW5kZXhlcy4gJ2NvbnRhaW5zPycgb3BlcmF0ZXMgY29uc3RhbnQgb3IgbG9nYXJpdGhtaWMgdGltZTtcbiAgaXQgd2lsbCBub3QgcGVyZm9ybSBhIGxpbmVhciBzZWFyY2ggZm9yIGEgdmFsdWUuICBTZWUgYWxzbyAnc29tZScuIiwgOmFyZ2xpc3RzIChbY29sbCB2XSl9LCA6c291cmNlICIoZGVmblxuIGNvbnRhaW5zP1xuIFwiUmV0dXJucyB0cnVlIGlmIGtleSBpcyBwcmVzZW50IGluIHRoZSBnaXZlbiBjb2xsZWN0aW9uLCBvdGhlcndpc2VcXG4gIHJldHVybnMgZmFsc2UuICBOb3RlIHRoYXQgZm9yIG51bWVyaWNhbGx5IGluZGV4ZWQgY29sbGVjdGlvbnMgbGlrZVxcbiAgdmVjdG9ycyBhbmQgYXJyYXlzLCB0aGlzIHRlc3RzIGlmIHRoZSBudW1lcmljIGtleSBpcyB3aXRoaW4gdGhlXFxuICByYW5nZSBvZiBpbmRleGVzLiAnY29udGFpbnM/JyBvcGVyYXRlcyBjb25zdGFudCBvciBsb2dhcml0aG1pYyB0aW1lO1xcbiAgaXQgd2lsbCBub3QgcGVyZm9ybSBhIGxpbmVhciBzZWFyY2ggZm9yIGEgdmFsdWUuICBTZWUgYWxzbyAnc29tZScuXCJcbiBbY29sbCB2XVxuIChjb25kXG4gIChpbXBsZW1lbnRzPyBJQXNzb2NpYXRpdmUgY29sbClcbiAgKC1jb250YWlucy1rZXk/IGNvbGwgdilcbiAgKG5hdGl2ZS1zYXRpc2ZpZXM/IElBc3NvY2lhdGl2ZSBjb2xsKVxuICAoLWNvbnRhaW5zLWtleT8gY29sbCB2KVxuICAoaWRlbnRpY2FsPyAoZ2V0IGNvbGwgdiBsb29rdXAtc2VudGluZWwpIGxvb2t1cC1zZW50aW5lbClcbiAgZmFsc2VcbiAgOmVsc2VcbiAgdHJ1ZSkpXG4ifSB7OnN5bSBldmVyeT8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgKHByZWQgeCkgaXMgbG9naWNhbCB0cnVlIGZvciBldmVyeSB4IGluIGNvbGwsIGVsc2VcbiAgZmFsc2UuIiwgOmFyZ2xpc3RzIChbcHJlZCBjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIGV2ZXJ5P1xuIFwiUmV0dXJucyB0cnVlIGlmIChwcmVkIHgpIGlzIGxvZ2ljYWwgdHJ1ZSBmb3IgZXZlcnkgeCBpbiBjb2xsLCBlbHNlXFxuICBmYWxzZS5cIlxuIFtwcmVkIGNvbGxdXG4gKGNvbmRcbiAgKG5pbD8gKHNlcSBjb2xsKSlcbiAgdHJ1ZVxuICAocHJlZCAoZmlyc3QgY29sbCkpXG4gIChyZWN1ciBwcmVkIChuZXh0IGNvbGwpKVxuICA6ZWxzZVxuICBmYWxzZSkpXG4ifSB7OnN5bSBrZWVwLWluZGV4ZWQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiB0aGUgbm9uLW5pbCByZXN1bHRzIG9mIChmIGluZGV4IGl0ZW0pLiBOb3RlLFxuICB0aGlzIG1lYW5zIGZhbHNlIHJldHVybiB2YWx1ZXMgd2lsbCBiZSBpbmNsdWRlZC4gIGYgbXVzdCBiZSBmcmVlIG9mXG4gIHNpZGUtZWZmZWN0cy4gIFJldHVybnMgYSBzdGF0ZWZ1bCB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbiBpc1xuICBwcm92aWRlZC4iLCA6YXJnbGlzdHMgW1tmXSBbZiBjb2xsXV19LCA6c291cmNlICIoZGVmblxuIGtlZXAtaW5kZXhlZFxuIFwiUmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2YgdGhlIG5vbi1uaWwgcmVzdWx0cyBvZiAoZiBpbmRleCBpdGVtKS4gTm90ZSxcXG4gIHRoaXMgbWVhbnMgZmFsc2UgcmV0dXJuIHZhbHVlcyB3aWxsIGJlIGluY2x1ZGVkLiAgZiBtdXN0IGJlIGZyZWUgb2ZcXG4gIHNpZGUtZWZmZWN0cy4gIFJldHVybnMgYSBzdGF0ZWZ1bCB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbiBpc1xcbiAgcHJvdmlkZWQuXCJcbiAoW2ZdXG4gIChmblxuICAgW3JmXVxuICAgKGxldFxuICAgIFtpYSAodm9sYXRpbGUhIC0xKV1cbiAgICAoZm5cbiAgICAgKFtdIChyZikpXG4gICAgIChbcmVzdWx0XSAocmYgcmVzdWx0KSlcbiAgICAgKFtyZXN1bHQgaW5wdXRdXG4gICAgICAobGV0XG4gICAgICAgW2kgKHZzd2FwISBpYSBpbmMpIHYgKGYgaSBpbnB1dCldXG4gICAgICAgKGlmIChuaWw/IHYpIHJlc3VsdCAocmYgcmVzdWx0IHYpKSkpKSkpKVxuIChbZiBjb2xsXVxuICAobGV0Zm5cbiAgIFsoa2VlcGlcbiAgICAgW2lkeCBjb2xsXVxuICAgICAobGF6eS1zZXFcbiAgICAgICh3aGVuLWxldFxuICAgICAgIFtzIChzZXEgY29sbCldXG4gICAgICAgKGlmXG4gICAgICAgIChjaHVua2VkLXNlcT8gcylcbiAgICAgICAgKGxldFxuICAgICAgICAgW2MgKGNodW5rLWZpcnN0IHMpIHNpemUgKGNvdW50IGMpIGIgKGNodW5rLWJ1ZmZlciBzaXplKV1cbiAgICAgICAgIChkb3RpbWVzXG4gICAgICAgICAgW2kgc2l6ZV1cbiAgICAgICAgICAobGV0XG4gICAgICAgICAgIFt4IChmICgrIGlkeCBpKSAoLW50aCBjIGkpKV1cbiAgICAgICAgICAgKHdoZW4tbm90IChuaWw/IHgpIChjaHVuay1hcHBlbmQgYiB4KSkpKVxuICAgICAgICAgKGNodW5rLWNvbnMgKGNodW5rIGIpIChrZWVwaSAoKyBpZHggc2l6ZSkgKGNodW5rLXJlc3QgcykpKSlcbiAgICAgICAgKGxldFxuICAgICAgICAgW3ggKGYgaWR4IChmaXJzdCBzKSldXG4gICAgICAgICAoaWZcbiAgICAgICAgICAobmlsPyB4KVxuICAgICAgICAgIChrZWVwaSAoaW5jIGlkeCkgKHJlc3QgcykpXG4gICAgICAgICAgKGNvbnMgeCAoa2VlcGkgKGluYyBpZHgpIChyZXN0IHMpKSkpKSkpKSldXG4gICAoa2VlcGkgMCBjb2xsKSkpKVxuIn0gezpzeW0gc3VicywgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHN1YnN0cmluZyBvZiBzIGJlZ2lubmluZyBhdCBzdGFydCBpbmNsdXNpdmUsIGFuZCBlbmRpbmdcbiAgYXQgZW5kIChkZWZhdWx0cyB0byBsZW5ndGggb2Ygc3RyaW5nKSwgZXhjbHVzaXZlLiIsIDphcmdsaXN0cyBbW3Mgc3RhcnRdIFtzIHN0YXJ0IGVuZF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBzdWJzXG4gXCJSZXR1cm5zIHRoZSBzdWJzdHJpbmcgb2YgcyBiZWdpbm5pbmcgYXQgc3RhcnQgaW5jbHVzaXZlLCBhbmQgZW5kaW5nXFxuICBhdCBlbmQgKGRlZmF1bHRzIHRvIGxlbmd0aCBvZiBzdHJpbmcpLCBleGNsdXNpdmUuXCJcbiAoW3Mgc3RhcnRdICguc3Vic3RyaW5nIHMgc3RhcnQpKVxuIChbcyBzdGFydCBlbmRdICguc3Vic3RyaW5nIHMgc3RhcnQgZW5kKSkpXG4ifSB7OnN5bSBqcy1zeW1ib2w/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIHggaXMgYW4gaW5zdGFuY2Ugb2YgU3ltYm9sIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBqcy1zeW1ib2w/XG4gXCJSZXR1cm5zIHRydWUgaWYgeCBpcyBhbiBpbnN0YW5jZSBvZiBTeW1ib2xcIlxuIFt4XVxuIChvclxuICAoaWRlbnRpY2FsPyAoZ29vZy90eXBlT2YgeCkgXCJzeW1ib2xcIilcbiAgKGFuZCAoZXhpc3RzPyBqcy9TeW1ib2wpIChpbnN0YW5jZT8ganMvU3ltYm9sIHgpKSkpXG4ifSB7OnN5bSBJRmluZCwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBpbXBsZW1lbnRpbmcgZW50cnkgZmluZGluZyBpbiBjb2xsZWN0aW9ucy4ifSwgOm1ldGhvZHMgKC1maW5kKX0gezpzeW0gc2V0LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHNldCBvZiB0aGUgZGlzdGluY3QgZWxlbWVudHMgb2YgY29sbC4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIHNldFxuIFwiUmV0dXJucyBhIHNldCBvZiB0aGUgZGlzdGluY3QgZWxlbWVudHMgb2YgY29sbC5cIlxuIFtjb2xsXVxuIChpZlxuICAoc2V0PyBjb2xsKVxuICAod2l0aC1tZXRhIGNvbGwgbmlsKVxuICAobGV0XG4gICBbaW4gKHNlcSBjb2xsKV1cbiAgIChjb25kXG4gICAgKG5pbD8gaW4pXG4gICAgI3t9XG4gICAgKGFuZCAoaW5zdGFuY2U/IEluZGV4ZWRTZXEgaW4pICh6ZXJvPyAoLi1pIGluKSkpXG4gICAgKC5jcmVhdGVBc0lmQnlBc3NvYyBQZXJzaXN0ZW50SGFzaFNldCAoLi1hcnIgaW4pKVxuICAgIDplbHNlXG4gICAgKGxvb3BcbiAgICAgW2luIGluIG91dCAoLWFzLXRyYW5zaWVudCAje30pXVxuICAgICAoaWYtbm90XG4gICAgICAobmlsPyBpbilcbiAgICAgIChyZWN1ciAobmV4dCBpbikgKC1jb25qISBvdXQgKC1maXJzdCBpbikpKVxuICAgICAgKHBlcnNpc3RlbnQhIG91dCkpKSkpKSlcbiJ9IHs6c3ltIE1PRFVMRV9VUklTLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBNT0RVTEVfVVJJUyBuaWwpXG4ifSB7OnN5bSB0YWtlLWxhc3QsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgc2VxIG9mIHRoZSBsYXN0IG4gaXRlbXMgaW4gY29sbC4gIERlcGVuZGluZyBvbiB0aGUgdHlwZVxuICBvZiBjb2xsIG1heSBiZSBubyBiZXR0ZXIgdGhhbiBsaW5lYXIgdGltZS4gIEZvciB2ZWN0b3JzLCBzZWUgYWxzbyBzdWJ2ZWMuIiwgOmFyZ2xpc3RzIChbbiBjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIHRha2UtbGFzdFxuIFwiUmV0dXJucyBhIHNlcSBvZiB0aGUgbGFzdCBuIGl0ZW1zIGluIGNvbGwuICBEZXBlbmRpbmcgb24gdGhlIHR5cGVcXG4gIG9mIGNvbGwgbWF5IGJlIG5vIGJldHRlciB0aGFuIGxpbmVhciB0aW1lLiAgRm9yIHZlY3RvcnMsIHNlZSBhbHNvIHN1YnZlYy5cIlxuIFtuIGNvbGxdXG4gKGxvb3BcbiAgW3MgKHNlcSBjb2xsKSBsZWFkIChzZXEgKGRyb3AgbiBjb2xsKSldXG4gIChpZiBsZWFkIChyZWN1ciAobmV4dCBzKSAobmV4dCBsZWFkKSkgcykpKVxuIn0gezpzeW0gYml0LXNldCwgOm1ldGEgezpkb2MgIlNldCBiaXQgYXQgaW5kZXggbiIsIDphcmdsaXN0cyAoW3ggbl0pfSwgOnNvdXJjZSAiKGRlZm4gYml0LXNldCBcIlNldCBiaXQgYXQgaW5kZXggblwiIFt4IG5dIChjbGpzLmNvcmUvYml0LXNldCB4IG4pKVxuIn0gezpzeW0gc3RyaW5nLWhhc2gtY2FjaGUtY291bnQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHN0cmluZy1oYXNoLWNhY2hlLWNvdW50IDApXG4ifSB7OnN5bSBxdWFsaWZpZWQta2V5d29yZD8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IGlzIGEga2V5d29yZCB3aXRoIGEgbmFtZXNwYWNlIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBxdWFsaWZpZWQta2V5d29yZD9cbiBcIlJldHVybiB0cnVlIGlmIHggaXMgYSBrZXl3b3JkIHdpdGggYSBuYW1lc3BhY2VcIlxuIFt4XVxuIChib29sZWFuIChhbmQgKGtleXdvcmQ/IHgpIChuYW1lc3BhY2UgeCkgdHJ1ZSkpKVxuIn0gezpzeW0gLXdpdGgtbWV0YSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBuZXcgb2JqZWN0IHdpdGggdmFsdWUgb2YgbyBhbmQgbWV0YWRhdGEgbWV0YSBhZGRlZCB0byBpdC4iLCA6YXJnbGlzdHMgKFtvIG1ldGFdKX0sIDpwcm90b2NvbCBJV2l0aE1ldGF9IHs6c3ltIGJ1dGxhc3QsIDptZXRhIHs6ZG9jICJSZXR1cm4gYSBzZXEgb2YgYWxsIGJ1dCB0aGUgbGFzdCBpdGVtIGluIGNvbGwsIGluIGxpbmVhciB0aW1lIiwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBidXRsYXN0XG4gXCJSZXR1cm4gYSBzZXEgb2YgYWxsIGJ1dCB0aGUgbGFzdCBpdGVtIGluIGNvbGwsIGluIGxpbmVhciB0aW1lXCJcbiBbc11cbiAobG9vcFxuICBbcmV0IFtdIHMgc11cbiAgKGlmIChuZXh0IHMpIChyZWN1ciAoY29uaiByZXQgKGZpcnN0IHMpKSAobmV4dCBzKSkgKHNlcSByZXQpKSkpXG4ifSB7OnN5bSB1bmNoZWNrZWQtc3VidHJhY3QtaW50LCA6bWV0YSB7OmRvYyAiSWYgbm8geXMgYXJlIHN1cHBsaWVkLCByZXR1cm5zIHRoZSBuZWdhdGlvbiBvZiB4LCBlbHNlIHN1YnRyYWN0c1xuICB0aGUgeXMgZnJvbSB4IGFuZCByZXR1cm5zIHRoZSByZXN1bHQuIiwgOmFyZ2xpc3RzIFtbeF0gW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gdW5jaGVja2VkLXN1YnRyYWN0LWludFxuIFwiSWYgbm8geXMgYXJlIHN1cHBsaWVkLCByZXR1cm5zIHRoZSBuZWdhdGlvbiBvZiB4LCBlbHNlIHN1YnRyYWN0c1xcbiAgdGhlIHlzIGZyb20geCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LlwiXG4gKFt4XSAoY2xqcy5jb3JlL3VuY2hlY2tlZC1zdWJ0cmFjdC1pbnQgeCkpXG4gKFt4IHldIChjbGpzLmNvcmUvdW5jaGVja2VkLXN1YnRyYWN0LWludCB4IHkpKVxuIChbeCB5ICYgbW9yZV1cbiAgKHJlZHVjZVxuICAgdW5jaGVja2VkLXN1YnRyYWN0LWludFxuICAgKGNsanMuY29yZS91bmNoZWNrZWQtc3VidHJhY3QtaW50IHggeSlcbiAgIG1vcmUpKSlcbiJ9IHs6c3ltIC1pdGVyYXRvciwgOm1ldGEgezpkb2MgIlJldHVybnMgYW4gaXRlcmF0b3IgZm9yIGNvbGwuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnByb3RvY29sIElJdGVyYWJsZX0gezpzeW0gKnByaW50LW5hbWVzcGFjZS1tYXBzKiwgOm1ldGEgezpkb2MgIipwcmludC1uYW1lc3BhY2UtbWFwcyogY29udHJvbHMgd2hldGhlciB0aGUgcHJpbnRlciB3aWxsIHByaW50XG4gIG5hbWVzcGFjZSBtYXAgbGl0ZXJhbCBzeW50YXguXG5cbiAgRGVmYXVsdHMgdG8gZmFsc2UsIGJ1dCB0aGUgUkVQTCBiaW5kcyBpdCB0byB0cnVlLiJ9LCA6c291cmNlICIoZGVmICpwcmludC1uYW1lc3BhY2UtbWFwcyogZmFsc2UpXG4ifSB7OnN5bSB0YWtlLW50aCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBsYXp5IHNlcSBvZiBldmVyeSBudGggaXRlbSBpbiBjb2xsLiAgUmV0dXJucyBhIHN0YXRlZnVsXG4gIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLiIsIDphcmdsaXN0cyBbW25dIFtuIGNvbGxdXX0sIDpzb3VyY2UgIihkZWZuXG4gdGFrZS1udGhcbiBcIlJldHVybnMgYSBsYXp5IHNlcSBvZiBldmVyeSBudGggaXRlbSBpbiBjb2xsLiAgUmV0dXJucyBhIHN0YXRlZnVsXFxuICB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC5cIlxuIChbbl1cbiAgezpwcmUgWyhudW1iZXI/IG4pXX1cbiAgKGZuXG4gICBbcmZdXG4gICAobGV0XG4gICAgW2lhICh2b2xhdGlsZSEgLTEpXVxuICAgIChmblxuICAgICAoW10gKHJmKSlcbiAgICAgKFtyZXN1bHRdIChyZiByZXN1bHQpKVxuICAgICAoW3Jlc3VsdCBpbnB1dF1cbiAgICAgIChsZXRcbiAgICAgICBbaSAodnN3YXAhIGlhIGluYyldXG4gICAgICAgKGlmICh6ZXJvPyAocmVtIGkgbikpIChyZiByZXN1bHQgaW5wdXQpIHJlc3VsdCkpKSkpKSlcbiAoW24gY29sbF1cbiAgezpwcmUgWyhudW1iZXI/IG4pXX1cbiAgKGxhenktc2VxXG4gICAod2hlbi1sZXQgW3MgKHNlcSBjb2xsKV0gKGNvbnMgKGZpcnN0IHMpICh0YWtlLW50aCBuIChkcm9wIG4gcykpKSkpKSlcbiJ9IHs6c3ltIGZpcnN0LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgY29sbGVjdGlvbi4gQ2FsbHMgc2VxIG9uIGl0c1xuICBhcmd1bWVudC4gSWYgY29sbCBpcyBuaWwsIHJldHVybnMgbmlsLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gZmlyc3RcbiBcIlJldHVybnMgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGNvbGxlY3Rpb24uIENhbGxzIHNlcSBvbiBpdHNcXG4gIGFyZ3VtZW50LiBJZiBjb2xsIGlzIG5pbCwgcmV0dXJucyBuaWwuXCJcbiBbY29sbF1cbiAod2hlbi1ub3RcbiAgKG5pbD8gY29sbClcbiAgKGlmXG4gICAoaW1wbGVtZW50cz8gSVNlcSBjb2xsKVxuICAgKC1maXJzdCBjb2xsKVxuICAgKGxldCBbcyAoc2VxIGNvbGwpXSAod2hlbi1ub3QgKG5pbD8gcykgKC1maXJzdCBzKSkpKSkpXG4ifSB7OnN5bSBuYXRpdmUtc2F0aXNmaWVzPywgOm1ldGEgezpkb2MgIkludGVybmFsIC0gZG8gbm90IHVzZSEiLCA6YXJnbGlzdHMgKFtwIHhdKX0sIDpzb3VyY2UgIihkZWZuXG4gbmF0aXZlLXNhdGlzZmllcz9cbiBcIkludGVybmFsIC0gZG8gbm90IHVzZSFcIlxuIFtwIHhdXG4gKGxldFxuICBbeCAoaWYgKG5pbD8geCkgbmlsIHgpXVxuICAoY29uZFxuICAgKHVuY2hlY2tlZC1nZXQgcCAoZ29vZy90eXBlT2YgeCkpXG4gICB0cnVlXG4gICAodW5jaGVja2VkLWdldCBwIFwiX1wiKVxuICAgdHJ1ZVxuICAgOmVsc2VcbiAgIGZhbHNlKSkpXG4ifSB7OnN5bSBzZXE/LCA6bWV0YSB7OmRvYyAiUmV0dXJuIHRydWUgaWYgcyBzYXRpc2ZpZXMgSVNlcSIsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gc2VxP1xuIFwiUmV0dXJuIHRydWUgaWYgcyBzYXRpc2ZpZXMgSVNlcVwiXG4gW3NdXG4gKGlmIChuaWw/IHMpIGZhbHNlIChzYXRpc2ZpZXM/IElTZXEgcykpKVxuIn0gezpzeW0gLXNvcnRlZC1zZXEtZnJvbSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBzb3J0ZWQgc2VxIGZyb20gY29sbCBpbiBlaXRoZXIgYXNjZW5kaW5nIG9yIGRlc2NlbmRpbmcgb3JkZXIuXG4gICAgIElmIGFzY2VuZGluZyBpcyB0cnVlLCB0aGUgcmVzdWx0IHNob3VsZCBjb250YWluIGFsbCBpdGVtcyB3aGljaCBhcmUgPiBvciA+PVxuICAgICB0aGFuIGsuIElmIGFzY2VuZGluZyBpcyBmYWxzZSwgdGhlIHJlc3VsdCBzaG91bGQgY29udGFpbiBhbGwgaXRlbXMgd2hpY2hcbiAgICAgYXJlIDwgb3IgPD0gdGhhbiBrLCBlLmcuXG4gICAgICgtc29ydGVkLXNlcS1mcm9tIChzb3J0ZWQtc2V0IDEgMiAzIDQgNSkgMyB0cnVlKSA9PiAoMyA0IDUpXG4gICAgICgtc29ydGVkLXNlcS1mcm9tIChzb3J0ZWQtc2V0IDEgMiAzIDQgNSkgMyBmYWxzZSkgPT4gKDMgMiAxKSIsIDphcmdsaXN0cyAoW2NvbGwgayBhc2NlbmRpbmc/XSl9LCA6cHJvdG9jb2wgSVNvcnRlZH0gezpzeW0gcHJpbnRsbi1zdHIsIDptZXRhIHs6ZG9jICJwcmludGxuIHRvIGEgc3RyaW5nLCByZXR1cm5pbmcgaXQiLCA6YXJnbGlzdHMgKFsmIG9ianNdKX0sIDpzb3VyY2UgIihkZWZuXG4gcHJpbnRsbi1zdHJcbiBcInByaW50bG4gdG8gYSBzdHJpbmcsIHJldHVybmluZyBpdFwiXG4gWyYgb2Jqc11cbiAocHJuLXN0ci13aXRoLW9wdHMgb2JqcyAoYXNzb2MgKHByLW9wdHMpIDpyZWFkYWJseSBmYWxzZSkpKVxuIn0gezpzeW0gaW5zdC1tcywgOm1ldGEgezpkb2MgIlJldHVybiB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBzaW5jZSBKYW51YXJ5IDEsIDE5NzAsIDAwOjAwOjAwIEdNVCIsIDphcmdsaXN0cyAoW2luc3RdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5zdC1tc1xuIFwiUmV0dXJuIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHNpbmNlIEphbnVhcnkgMSwgMTk3MCwgMDA6MDA6MDAgR01UXCJcbiBbaW5zdF1cbiAoaW5zdC1tcyogaW5zdCkpXG4ifSB7OnN5bSBpdGVyYXRlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2YgeCwgKGYgeCksIChmIChmIHgpKSBldGMuIGYgbXVzdCBiZSBmcmVlIG9mIHNpZGUtZWZmZWN0cyIsIDphcmdsaXN0cyAoW2YgeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpdGVyYXRlXG4gXCJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiB4LCAoZiB4KSwgKGYgKGYgeCkpIGV0Yy4gZiBtdXN0IGJlIGZyZWUgb2Ygc2lkZS1lZmZlY3RzXCJcbiB7OmFkZGVkIFwiMS4wXCJ9XG4gW2YgeF1cbiAoSXRlcmF0ZS4gbmlsIGYgbmlsIHggbmlsKSlcbiJ9IHs6c3ltIC1lbXB0eSwgOm1ldGEgezpkb2MgIlJldHVybnMgYW4gZW1wdHkgY29sbGVjdGlvbiBvZiB0aGUgc2FtZSBjYXRlZ29yeSBhcyBjb2xsLiBVc2VkXG4gICAgIGJ5IGNsanMuY29yZS9lbXB0eS4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6cHJvdG9jb2wgSUVtcHR5YWJsZUNvbGxlY3Rpb259IHs6c3ltIG5ld2xpbmUsIDptZXRhIHs6ZG9jICJQcmludHMgYSBuZXdsaW5lIHVzaW5nICpwcmludC1mbioiLCA6YXJnbGlzdHMgW1tdIFtvcHRzXV19LCA6c291cmNlICIoZGVmblxuIG5ld2xpbmVcbiBcIlByaW50cyBhIG5ld2xpbmUgdXNpbmcgKnByaW50LWZuKlwiXG4gKFtdIChuZXdsaW5lIG5pbCkpXG4gKFtvcHRzXVxuICAoc3RyaW5nLXByaW50IFwiXFxuXCIpXG4gICh3aGVuIChnZXQgb3B0cyA6Zmx1c2gtb24tbmV3bGluZSkgKGZsdXNoKSkpKVxuIn0gezpzeW0gSUxvb2t1cCwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBsb29raW5nIHVwIGEgdmFsdWUgaW4gYSBkYXRhIHN0cnVjdHVyZS4ifSwgOm1ldGhvZHMgKC1sb29rdXApfSB7OnN5bSAtY2h1bmtlZC1yZXN0LCA6bWV0YSB7OmRvYyAiUmV0dXJuIGEgbmV3IGNvbGxlY3Rpb24gb2YgY29sbCB3aXRoIHRoZSBmaXJzdCBjaHVuayByZW1vdmVkLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpwcm90b2NvbCBJQ2h1bmtlZFNlcX0gezpzeW0gd3JpdGUtYWxsLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3dyaXRlciAmIHNzXSl9LCA6c291cmNlICIoZGVmbiB3cml0ZS1hbGwgW3dyaXRlciAmIHNzXSAoZG9zZXEgW3Mgc3NdICgtd3JpdGUgd3JpdGVyIHMpKSlcbiJ9IHs6c3ltIGZuPywgOm1ldGEgezpkb2MgIlJldHVybiB0cnVlIGlmIGYgaXMgYSBKYXZhU2NyaXB0IGZ1bmN0aW9uIG9yIHNhdGlzZmllcyB0aGUgRm4gcHJvdG9jb2wuIiwgOmFyZ2xpc3RzIChbZl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBmbj9cbiBcIlJldHVybiB0cnVlIGlmIGYgaXMgYSBKYXZhU2NyaXB0IGZ1bmN0aW9uIG9yIHNhdGlzZmllcyB0aGUgRm4gcHJvdG9jb2wuXCJcbiBbZl1cbiAob3IgKGpzLWZuPyBmKSAoc2F0aXNmaWVzPyBGbiBmKSkpXG4ifSB7OnN5bSAtcHJlZmVyLW1ldGhvZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttZiBkaXNwYXRjaC12YWwgZGlzcGF0Y2gtdmFsLXldKX0sIDpwcm90b2NvbCBJTXVsdGlGbn0gezpzeW0gLWFzc29jLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG5ldyBjb2xsZWN0aW9uIG9mIGNvbGwgd2l0aCBhIG1hcHBpbmcgZnJvbSBrZXkgayB0b1xuICAgICB2YWx1ZSB2IGFkZGVkIHRvIGl0LiIsIDphcmdsaXN0cyAoW2NvbGwgayB2XSl9LCA6cHJvdG9jb2wgSUFzc29jaWF0aXZlfSB7OnN5bSBkb2FsbCwgOm1ldGEgezpkb2MgIldoZW4gbGF6eSBzZXF1ZW5jZXMgYXJlIHByb2R1Y2VkIHZpYSBmdW5jdGlvbnMgdGhhdCBoYXZlIHNpZGVcbiAgZWZmZWN0cywgYW55IGVmZmVjdHMgb3RoZXIgdGhhbiB0aG9zZSBuZWVkZWQgdG8gcHJvZHVjZSB0aGUgZmlyc3RcbiAgZWxlbWVudCBpbiB0aGUgc2VxIGRvIG5vdCBvY2N1ciB1bnRpbCB0aGUgc2VxIGlzIGNvbnN1bWVkLiBkb2FsbCBjYW5cbiAgYmUgdXNlZCB0byBmb3JjZSBhbnkgZWZmZWN0cy4gV2Fsa3MgdGhyb3VnaCB0aGUgc3VjY2Vzc2l2ZSBuZXh0cyBvZlxuICB0aGUgc2VxLCByZXRhaW5zIHRoZSBoZWFkIGFuZCByZXR1cm5zIGl0LCB0aHVzIGNhdXNpbmcgdGhlIGVudGlyZVxuICBzZXEgdG8gcmVzaWRlIGluIG1lbW9yeSBhdCBvbmUgdGltZS4iLCA6YXJnbGlzdHMgW1tjb2xsXSBbbiBjb2xsXV19LCA6c291cmNlICIoZGVmblxuIGRvYWxsXG4gXCJXaGVuIGxhenkgc2VxdWVuY2VzIGFyZSBwcm9kdWNlZCB2aWEgZnVuY3Rpb25zIHRoYXQgaGF2ZSBzaWRlXFxuICBlZmZlY3RzLCBhbnkgZWZmZWN0cyBvdGhlciB0aGFuIHRob3NlIG5lZWRlZCB0byBwcm9kdWNlIHRoZSBmaXJzdFxcbiAgZWxlbWVudCBpbiB0aGUgc2VxIGRvIG5vdCBvY2N1ciB1bnRpbCB0aGUgc2VxIGlzIGNvbnN1bWVkLiBkb2FsbCBjYW5cXG4gIGJlIHVzZWQgdG8gZm9yY2UgYW55IGVmZmVjdHMuIFdhbGtzIHRocm91Z2ggdGhlIHN1Y2Nlc3NpdmUgbmV4dHMgb2ZcXG4gIHRoZSBzZXEsIHJldGFpbnMgdGhlIGhlYWQgYW5kIHJldHVybnMgaXQsIHRodXMgY2F1c2luZyB0aGUgZW50aXJlXFxuICBzZXEgdG8gcmVzaWRlIGluIG1lbW9yeSBhdCBvbmUgdGltZS5cIlxuIChbY29sbF0gKGRvcnVuIGNvbGwpIGNvbGwpXG4gKFtuIGNvbGxdIChkb3J1biBuIGNvbGwpIGNvbGwpKVxuIn0gezpzeW0ga2V5d29yZC1pZGVudGljYWw/LCA6bWV0YSB7OmRvYyAiRWZmaWNpZW50IHRlc3QgdG8gZGV0ZXJtaW5lIHRoYXQgdHdvIGtleXdvcmRzIGFyZSBpZGVudGljYWwuIiwgOmFyZ2xpc3RzIChbeCB5XSl9LCA6c291cmNlICIoZGVmblxuIGtleXdvcmQtaWRlbnRpY2FsP1xuIFwiRWZmaWNpZW50IHRlc3QgdG8gZGV0ZXJtaW5lIHRoYXQgdHdvIGtleXdvcmRzIGFyZSBpZGVudGljYWwuXCJcbiBbeCB5XVxuIChpZlxuICAoaWRlbnRpY2FsPyB4IHkpXG4gIHRydWVcbiAgKGlmXG4gICAoYW5kIChrZXl3b3JkPyB4KSAoa2V5d29yZD8geSkpXG4gICAoaWRlbnRpY2FsPyAoLi1mcW4geCkgKC4tZnFuIHkpKVxuICAgZmFsc2UpKSlcbiJ9IHs6c3ltICpwcmludC1lcnItZm4qLCA6bWV0YSB7OmRvYyAiRWFjaCBydW50aW1lIGVudmlyb25tZW50IHByb3ZpZGVzIGEgZGlmZmVyZW50IHdheSB0byBwcmludCBlcnJvciBvdXRwdXQuXG4gIFdoYXRldmVyIGZ1bmN0aW9uICpwcmludC1lcnItZm4qIGlzIGJvdW5kIHRvIHdpbGwgYmUgcGFzc2VkIGFueVxuICBTdHJpbmdzIHdoaWNoIHNob3VsZCBiZSBwcmludGVkLiJ9LCA6c291cmNlICIoZGVmb25jZSAqcHJpbnQtZXJyLWZuKiBuaWwpXG4ifSB7OnN5bSBwcmVmZXJzLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBtdWx0aW1ldGhvZCwgcmV0dXJucyBhIG1hcCBvZiBwcmVmZXJyZWQgdmFsdWUgLT4gc2V0IG9mIG90aGVyIHZhbHVlcyIsIDphcmdsaXN0cyAoW211bHRpZm5dKX0sIDpzb3VyY2UgIihkZWZuXG4gcHJlZmVyc1xuIFwiR2l2ZW4gYSBtdWx0aW1ldGhvZCwgcmV0dXJucyBhIG1hcCBvZiBwcmVmZXJyZWQgdmFsdWUgLT4gc2V0IG9mIG90aGVyIHZhbHVlc1wiXG4gW211bHRpZm5dXG4gKC1wcmVmZXJzIG11bHRpZm4pKVxuIn0gezpzeW0gLWpzLT5jbGosIDptZXRhIHs6ZG9jICJUcmFuc2Zvcm1zIEphdmFTY3JpcHQgdmFsdWVzIHRvIENsb2p1cmUiLCA6YXJnbGlzdHMgKFt4IG9wdGlvbnNdKX0sIDpwcm90b2NvbCBJRW5jb2RlQ2xvanVyZX0gezpzeW0gZGVkdXBlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGxhenkgc2VxdWVuY2UgcmVtb3ZpbmcgY29uc2VjdXRpdmUgZHVwbGljYXRlcyBpbiBjb2xsLlxuICBSZXR1cm5zIGEgdHJhbnNkdWNlciB3aGVuIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuIiwgOmFyZ2xpc3RzIFtbXSBbY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBkZWR1cGVcbiBcIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIHJlbW92aW5nIGNvbnNlY3V0aXZlIGR1cGxpY2F0ZXMgaW4gY29sbC5cXG4gIFJldHVybnMgYSB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC5cIlxuIChbXVxuICAoZm5cbiAgIFtyZl1cbiAgIChsZXRcbiAgICBbcGEgKHZvbGF0aWxlISA6Y2xqcy5jb3JlL25vbmUpXVxuICAgIChmblxuICAgICAoW10gKHJmKSlcbiAgICAgKFtyZXN1bHRdIChyZiByZXN1bHQpKVxuICAgICAoW3Jlc3VsdCBpbnB1dF1cbiAgICAgIChsZXRcbiAgICAgICBbcHJpb3IgQHBhXVxuICAgICAgICh2cmVzZXQhIHBhIGlucHV0KVxuICAgICAgIChpZiAoPSBwcmlvciBpbnB1dCkgcmVzdWx0IChyZiByZXN1bHQgaW5wdXQpKSkpKSkpKVxuIChbY29sbF0gKHNlcXVlbmNlIChkZWR1cGUpIGNvbGwpKSlcbiJ9IHs6c3ltIGRpc3NvYywgOm1ldGEgezpkb2MgImRpc3NvY1tpYXRlXS4gUmV0dXJucyBhIG5ldyBtYXAgb2YgdGhlIHNhbWUgKGhhc2hlZC9zb3J0ZWQpIHR5cGUsXG4gIHRoYXQgZG9lcyBub3QgY29udGFpbiBhIG1hcHBpbmcgZm9yIGtleShzKS4iLCA6YXJnbGlzdHMgW1tjb2xsXSBbY29sbCBrXSBbY29sbCBrICYga3NdXX0sIDpzb3VyY2UgIihkZWZuXG4gZGlzc29jXG4gXCJkaXNzb2NbaWF0ZV0uIFJldHVybnMgYSBuZXcgbWFwIG9mIHRoZSBzYW1lIChoYXNoZWQvc29ydGVkKSB0eXBlLFxcbiAgdGhhdCBkb2VzIG5vdCBjb250YWluIGEgbWFwcGluZyBmb3Iga2V5KHMpLlwiXG4gKFtjb2xsXSBjb2xsKVxuIChbY29sbCBrXSAod2hlbi1ub3QgKG5pbD8gY29sbCkgKC1kaXNzb2MgY29sbCBrKSkpXG4gKFtjb2xsIGsgJiBrc11cbiAgKHdoZW4tbm90XG4gICAobmlsPyBjb2xsKVxuICAgKGxldFxuICAgIFtyZXQgKGRpc3NvYyBjb2xsIGspXVxuICAgIChpZiBrcyAocmVjdXIgcmV0IChmaXJzdCBrcykgKG5leHQga3MpKSByZXQpKSkpKVxuIn0gezpzeW0gYXRvbSwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYW5kIHJldHVybnMgYW4gQXRvbSB3aXRoIGFuIGluaXRpYWwgdmFsdWUgb2YgeCBhbmQgemVybyBvclxuICBtb3JlIG9wdGlvbnMgKGluIGFueSBvcmRlcik6XG5cbiAgOm1ldGEgbWV0YWRhdGEtbWFwXG5cbiAgOnZhbGlkYXRvciB2YWxpZGF0ZS1mblxuXG4gIElmIG1ldGFkYXRhLW1hcCBpcyBzdXBwbGllZCwgaXQgd2lsbCBiZWNvbWUgdGhlIG1ldGFkYXRhIG9uIHRoZVxuICBhdG9tLiB2YWxpZGF0ZS1mbiBtdXN0IGJlIG5pbCBvciBhIHNpZGUtZWZmZWN0LWZyZWUgZm4gb2Ygb25lXG4gIGFyZ3VtZW50LCB3aGljaCB3aWxsIGJlIHBhc3NlZCB0aGUgaW50ZW5kZWQgbmV3IHN0YXRlIG9uIGFueSBzdGF0ZVxuICBjaGFuZ2UuIElmIHRoZSBuZXcgc3RhdGUgaXMgdW5hY2NlcHRhYmxlLCB0aGUgdmFsaWRhdGUtZm4gc2hvdWxkXG4gIHJldHVybiBmYWxzZSBvciB0aHJvdyBhbiBFcnJvci4gIElmIGVpdGhlciBvZiB0aGVzZSBlcnJvciBjb25kaXRpb25zXG4gIG9jY3VyLCB0aGVuIHRoZSB2YWx1ZSBvZiB0aGUgYXRvbSB3aWxsIG5vdCBjaGFuZ2UuIiwgOmFyZ2xpc3RzIFtbeF0gW3ggJiB7OmtleXMgW21ldGEgdmFsaWRhdG9yXX1dXX0sIDpzb3VyY2UgIihkZWZuXG4gYXRvbVxuIFwiQ3JlYXRlcyBhbmQgcmV0dXJucyBhbiBBdG9tIHdpdGggYW4gaW5pdGlhbCB2YWx1ZSBvZiB4IGFuZCB6ZXJvIG9yXFxuICBtb3JlIG9wdGlvbnMgKGluIGFueSBvcmRlcik6XFxuXFxuICA6bWV0YSBtZXRhZGF0YS1tYXBcXG5cXG4gIDp2YWxpZGF0b3IgdmFsaWRhdGUtZm5cXG5cXG4gIElmIG1ldGFkYXRhLW1hcCBpcyBzdXBwbGllZCwgaXQgd2lsbCBiZWNvbWUgdGhlIG1ldGFkYXRhIG9uIHRoZVxcbiAgYXRvbS4gdmFsaWRhdGUtZm4gbXVzdCBiZSBuaWwgb3IgYSBzaWRlLWVmZmVjdC1mcmVlIGZuIG9mIG9uZVxcbiAgYXJndW1lbnQsIHdoaWNoIHdpbGwgYmUgcGFzc2VkIHRoZSBpbnRlbmRlZCBuZXcgc3RhdGUgb24gYW55IHN0YXRlXFxuICBjaGFuZ2UuIElmIHRoZSBuZXcgc3RhdGUgaXMgdW5hY2NlcHRhYmxlLCB0aGUgdmFsaWRhdGUtZm4gc2hvdWxkXFxuICByZXR1cm4gZmFsc2Ugb3IgdGhyb3cgYW4gRXJyb3IuICBJZiBlaXRoZXIgb2YgdGhlc2UgZXJyb3IgY29uZGl0aW9uc1xcbiAgb2NjdXIsIHRoZW4gdGhlIHZhbHVlIG9mIHRoZSBhdG9tIHdpbGwgbm90IGNoYW5nZS5cIlxuIChbeF0gKEF0b20uIHggbmlsIG5pbCBuaWwpKVxuIChbeCAmIHs6a2V5cyBbbWV0YSB2YWxpZGF0b3JdfV0gKEF0b20uIHggbWV0YSB2YWxpZGF0b3IgbmlsKSkpXG4ifSB7OnN5bSBiaXQtc2hpZnQtcmlnaHQsIDptZXRhIHs6ZG9jICJCaXR3aXNlIHNoaWZ0IHJpZ2h0IiwgOmFyZ2xpc3RzIChbeCBuXSl9LCA6c291cmNlICIoZGVmblxuIGJpdC1zaGlmdC1yaWdodFxuIFwiQml0d2lzZSBzaGlmdCByaWdodFwiXG4gW3ggbl1cbiAoY2xqcy5jb3JlL2JpdC1zaGlmdC1yaWdodCB4IG4pKVxuIn0gezpzeW0gKmNsb2p1cmVzY3JpcHQtdmVyc2lvbiosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpjbG9qdXJlc2NyaXB0LXZlcnNpb24qIFwiMS4xMS40XCIpXG4ifSB7OnN5bSAtZmlyc3QsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBmaXJzdCBpdGVtIGluIHRoZSBjb2xsZWN0aW9uIGNvbGwuIFVzZWQgYnkgY2xqcy5jb3JlL2ZpcnN0LiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpwcm90b2NvbCBJU2VxfSB7OnN5bSBwZWVrLCA6bWV0YSB7OmRvYyAiRm9yIGEgbGlzdCBvciBxdWV1ZSwgc2FtZSBhcyBmaXJzdCwgZm9yIGEgdmVjdG9yLCBzYW1lIGFzLCBidXQgbXVjaFxuICBtb3JlIGVmZmljaWVudCB0aGFuLCBsYXN0LiBJZiB0aGUgY29sbGVjdGlvbiBpcyBlbXB0eSwgcmV0dXJucyBuaWwuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwZWVrXG4gXCJGb3IgYSBsaXN0IG9yIHF1ZXVlLCBzYW1lIGFzIGZpcnN0LCBmb3IgYSB2ZWN0b3IsIHNhbWUgYXMsIGJ1dCBtdWNoXFxuICBtb3JlIGVmZmljaWVudCB0aGFuLCBsYXN0LiBJZiB0aGUgY29sbGVjdGlvbiBpcyBlbXB0eSwgcmV0dXJucyBuaWwuXCJcbiBbY29sbF1cbiAod2hlbi1ub3QgKG5pbD8gY29sbCkgKC1wZWVrIGNvbGwpKSlcbiJ9IHs6c3ltIElLVlJlZHVjZSwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhc3NvY2lhdGl2ZSB0eXBlcyB0aGF0IGNhbiByZWR1Y2UgdGhlbXNlbHZlc1xuICB2aWEgYSBmdW5jdGlvbiBvZiBrZXkgYW5kIHZhbC4gQ2FsbGVkIGJ5IGNsanMuY29yZS9yZWR1Y2Uta3YuIn0sIDptZXRob2RzICgta3YtcmVkdWNlKX0gezpzeW0gYWdldCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHZhbHVlIGF0IHRoZSBpbmRleC9pbmRpY2VzLiBXb3JrcyBvbiBKYXZhU2NyaXB0IGFycmF5cy4iLCA6YXJnbGlzdHMgW1thcnJheSBpZHhdIFthcnJheSBpZHggJiBpZHhzXV19LCA6c291cmNlICIoZGVmblxuIGFnZXRcbiBcIlJldHVybnMgdGhlIHZhbHVlIGF0IHRoZSBpbmRleC9pbmRpY2VzLiBXb3JrcyBvbiBKYXZhU2NyaXB0IGFycmF5cy5cIlxuIChbYXJyYXkgaWR4XSAoY2xqcy5jb3JlL2FnZXQgYXJyYXkgaWR4KSlcbiAoW2FycmF5IGlkeCAmIGlkeHNdIChhcHBseSBhZ2V0IChhZ2V0IGFycmF5IGlkeCkgaWR4cykpKVxuIn0gezpzeW0gLXdyaXRlLCA6bWV0YSB7OmRvYyAiV3JpdGVzIHMgd2l0aCB3cml0ZXIgYW5kIHJldHVybnMgdGhlIHJlc3VsdC4iLCA6YXJnbGlzdHMgKFt3cml0ZXIgc10pfSwgOnByb3RvY29sIElXcml0ZXJ9IHs6c3ltIGl0ZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpdGVyXG4gW2NvbGxdXG4gKGNvbmRcbiAgKGl0ZXJhYmxlPyBjb2xsKVxuICAoLWl0ZXJhdG9yIGNvbGwpXG4gIChuaWw/IGNvbGwpXG4gIChuaWwtaXRlcilcbiAgKHN0cmluZz8gY29sbClcbiAgKHN0cmluZy1pdGVyIGNvbGwpXG4gIChhcnJheT8gY29sbClcbiAgKGFycmF5LWl0ZXIgY29sbClcbiAgKHNlcWFibGU/IGNvbGwpXG4gIChzZXEtaXRlciBjb2xsKVxuICA6ZWxzZVxuICAodGhyb3cgKGpzL0Vycm9yLiAoc3RyIFwiQ2Fubm90IGNyZWF0ZSBpdGVyYXRvciBmcm9tIFwiIGNvbGwpKSkpKVxuIn0gezpzeW0gbWstYm91bmQtZm4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc2MgdGVzdCBrZXldKX0sIDpzb3VyY2UgIihkZWZuXG4gbWstYm91bmQtZm5cbiBbc2MgdGVzdCBrZXldXG4gKGZuXG4gIFtlXVxuICAobGV0IFtjb21wICgtY29tcGFyYXRvciBzYyldICh0ZXN0IChjb21wICgtZW50cnkta2V5IHNjIGUpIGtleSkgMCkpKSlcbiJ9IHs6c3ltIGxhc3QsIDptZXRhIHs6ZG9jICJSZXR1cm4gdGhlIGxhc3QgaXRlbSBpbiBjb2xsLCBpbiBsaW5lYXIgdGltZSIsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gbGFzdFxuIFwiUmV0dXJuIHRoZSBsYXN0IGl0ZW0gaW4gY29sbCwgaW4gbGluZWFyIHRpbWVcIlxuIFtzXVxuIChsZXQgW3NuIChuZXh0IHMpXSAoaWYtbm90IChuaWw/IHNuKSAocmVjdXIgc24pIChmaXJzdCBzKSkpKVxuIn0gezpzeW0gLWRlZmF1bHQtZGlzcGF0Y2gtdmFsLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21mXSl9LCA6cHJvdG9jb2wgSU11bHRpRm59IHs6c3ltIHByLCA6bWV0YSB7OmRvYyAiUHJpbnRzIHRoZSBvYmplY3QocykgdXNpbmcgc3RyaW5nLXByaW50LiAgUHJpbnRzIHRoZVxuICBvYmplY3QocyksIHNlcGFyYXRlZCBieSBzcGFjZXMgaWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZS5cbiAgQnkgZGVmYXVsdCwgcHIgYW5kIHBybiBwcmludCBpbiBhIHdheSB0aGF0IG9iamVjdHMgY2FuIGJlXG4gIHJlYWQgYnkgdGhlIHJlYWRlciIsIDphcmdsaXN0cyAoWyYgb2Jqc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBwclxuIFwiUHJpbnRzIHRoZSBvYmplY3QocykgdXNpbmcgc3RyaW5nLXByaW50LiAgUHJpbnRzIHRoZVxcbiAgb2JqZWN0KHMpLCBzZXBhcmF0ZWQgYnkgc3BhY2VzIGlmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUuXFxuICBCeSBkZWZhdWx0LCBwciBhbmQgcHJuIHByaW50IGluIGEgd2F5IHRoYXQgb2JqZWN0cyBjYW4gYmVcXG4gIHJlYWQgYnkgdGhlIHJlYWRlclwiXG4gWyYgb2Jqc11cbiAocHItd2l0aC1vcHRzIG9ianMgKHByLW9wdHMpKSlcbiJ9IHs6c3ltIG5hbWVzcGFjZSwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG5hbWVzcGFjZSBTdHJpbmcgb2YgYSBzeW1ib2wgb3Iga2V5d29yZCwgb3IgbmlsIGlmIG5vdCBwcmVzZW50LiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gbmFtZXNwYWNlXG4gXCJSZXR1cm5zIHRoZSBuYW1lc3BhY2UgU3RyaW5nIG9mIGEgc3ltYm9sIG9yIGtleXdvcmQsIG9yIG5pbCBpZiBub3QgcHJlc2VudC5cIlxuIFt4XVxuIChpZlxuICAoaW1wbGVtZW50cz8gSU5hbWVkIHgpXG4gICgtbmFtZXNwYWNlIHgpXG4gICh0aHJvdyAoanMvRXJyb3IuIChzdHIgXCJEb2Vzbid0IHN1cHBvcnQgbmFtZXNwYWNlOiBcIiB4KSkpKSlcbiJ9IHs6c3ltIG9iai1tYXAsIDptZXRhIHs6ZG9jICJrZXl2YWwgPT4ga2V5IHZhbFxuICBSZXR1cm5zIGEgbmV3IG9iamVjdCBtYXAgd2l0aCBzdXBwbGllZCBtYXBwaW5ncy4iLCA6YXJnbGlzdHMgKFsmIGtleXZhbHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gb2JqLW1hcFxuIFwia2V5dmFsID0+IGtleSB2YWxcXG4gIFJldHVybnMgYSBuZXcgb2JqZWN0IG1hcCB3aXRoIHN1cHBsaWVkIG1hcHBpbmdzLlwiXG4gWyYga2V5dmFsc11cbiAobGV0XG4gIFtrcyAoYXJyYXkpIG9iaiAoanMtb2JqKV1cbiAgKGxvb3BcbiAgIFtrdnMgKHNlcSBrZXl2YWxzKV1cbiAgIChpZlxuICAgIGt2c1xuICAgIChkb1xuICAgICAoLnB1c2gga3MgKGZpcnN0IGt2cykpXG4gICAgIChnb2JqZWN0L3NldCBvYmogKGZpcnN0IGt2cykgKHNlY29uZCBrdnMpKVxuICAgICAocmVjdXIgKG5uZXh0IGt2cykpKVxuICAgICguZnJvbU9iamVjdCBPYmpNYXAga3Mgb2JqKSkpKSlcbiJ9IHs6c3ltIC1jb25qLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG5ldyBjb2xsZWN0aW9uIG9mIGNvbGwgd2l0aCBvIGFkZGVkIHRvIGl0LiBUaGUgbmV3IGl0ZW1cbiAgICAgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBtb3N0IGVmZmljaWVudCBwbGFjZSwgZS5nLlxuICAgICAoY29uaiBbMSAyIDMgNF0gNSkgPT4gWzEgMiAzIDQgNV1cbiAgICAgKGNvbmogJygyIDMgNCA1KSAxKSA9PiAnKDEgMiAzIDQgNSkiLCA6YXJnbGlzdHMgKFtjb2xsIG9dKX0sIDpwcm90b2NvbCBJQ29sbGVjdGlvbn0gezpzeW0gPSwgOm1ldGEgezpkb2MgIkVxdWFsaXR5LiBSZXR1cm5zIHRydWUgaWYgeCBlcXVhbHMgeSwgZmFsc2UgaWYgbm90LiBDb21wYXJlc1xuICBudW1iZXJzIGFuZCBjb2xsZWN0aW9ucyBpbiBhIHR5cGUtaW5kZXBlbmRlbnQgbWFubmVyLiAgQ2xvanVyZSdzIGltbXV0YWJsZSBkYXRhXG4gIHN0cnVjdHVyZXMgZGVmaW5lIC1lcXVpdiAoYW5kIHRodXMgPSkgYXMgYSB2YWx1ZSwgbm90IGFuIGlkZW50aXR5LFxuICBjb21wYXJpc29uLiIsIDphcmdsaXN0cyBbW3hdIFt4IHldIFt4IHkgJiBtb3JlXV19LCA6c291cmNlICIoZGVmblxuID1cbiBcIkVxdWFsaXR5LiBSZXR1cm5zIHRydWUgaWYgeCBlcXVhbHMgeSwgZmFsc2UgaWYgbm90LiBDb21wYXJlc1xcbiAgbnVtYmVycyBhbmQgY29sbGVjdGlvbnMgaW4gYSB0eXBlLWluZGVwZW5kZW50IG1hbm5lci4gIENsb2p1cmUncyBpbW11dGFibGUgZGF0YVxcbiAgc3RydWN0dXJlcyBkZWZpbmUgLWVxdWl2IChhbmQgdGh1cyA9KSBhcyBhIHZhbHVlLCBub3QgYW4gaWRlbnRpdHksXFxuICBjb21wYXJpc29uLlwiXG4gKFt4XSB0cnVlKVxuIChbeCB5XSAoaWYgKG5pbD8geCkgKG5pbD8geSkgKG9yIChpZGVudGljYWw/IHggeSkgKC1lcXVpdiB4IHkpKSkpXG4gKFt4IHkgJiBtb3JlXVxuICAoaWZcbiAgICg9IHggeSlcbiAgIChpZlxuICAgIChuZXh0IG1vcmUpXG4gICAgKHJlY3VyIHkgKGZpcnN0IG1vcmUpIChuZXh0IG1vcmUpKVxuICAgICg9IHkgKGZpcnN0IG1vcmUpKSlcbiAgIGZhbHNlKSkpXG4ifSB7OnN5bSBJVHJhbnNpZW50TWFwLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFkZGluZyBtYXBwaW5nIGZ1bmN0aW9uYWxpdHkgdG8gdHJhbnNpZW50IGNvbGxlY3Rpb25zLiJ9LCA6bWV0aG9kcyAoLWRpc3NvYyEpfSB7OnN5bSB0YWtlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2YgdGhlIGZpcnN0IG4gaXRlbXMgaW4gY29sbCwgb3IgYWxsIGl0ZW1zIGlmXG4gIHRoZXJlIGFyZSBmZXdlciB0aGFuIG4uICBSZXR1cm5zIGEgc3RhdGVmdWwgdHJhbnNkdWNlciB3aGVuXG4gIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuIiwgOmFyZ2xpc3RzIFtbbl0gW24gY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cbiB0YWtlXG4gXCJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiB0aGUgZmlyc3QgbiBpdGVtcyBpbiBjb2xsLCBvciBhbGwgaXRlbXMgaWZcXG4gIHRoZXJlIGFyZSBmZXdlciB0aGFuIG4uICBSZXR1cm5zIGEgc3RhdGVmdWwgdHJhbnNkdWNlciB3aGVuXFxuICBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLlwiXG4gKFtuXVxuICB7OnByZSBbKG51bWJlcj8gbildfVxuICAoZm5cbiAgIFtyZl1cbiAgIChsZXRcbiAgICBbbmEgKHZvbGF0aWxlISBuKV1cbiAgICAoZm5cbiAgICAgKFtdIChyZikpXG4gICAgIChbcmVzdWx0XSAocmYgcmVzdWx0KSlcbiAgICAgKFtyZXN1bHQgaW5wdXRdXG4gICAgICAobGV0XG4gICAgICAgW25cbiAgICAgICAgQG5hXG4gICAgICAgIG5uXG4gICAgICAgICh2c3dhcCEgbmEgZGVjKVxuICAgICAgICByZXN1bHRcbiAgICAgICAgKGlmIChwb3M/IG4pIChyZiByZXN1bHQgaW5wdXQpIHJlc3VsdCldXG4gICAgICAgKGlmIChub3QgKHBvcz8gbm4pKSAoZW5zdXJlLXJlZHVjZWQgcmVzdWx0KSByZXN1bHQpKSkpKSkpXG4gKFtuIGNvbGxdXG4gIHs6cHJlIFsobnVtYmVyPyBuKV19XG4gIChsYXp5LXNlcVxuICAgKHdoZW5cbiAgICAocG9zPyBuKVxuICAgICh3aGVuLWxldFxuICAgICBbcyAoc2VxIGNvbGwpXVxuICAgICAoY29ucyAoZmlyc3QgcykgKHRha2UgKGRlYyBuKSAocmVzdCBzKSkpKSkpKSlcbiJ9IHs6c3ltIHZlY3Rvcj8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IHNhdGlzZmllcyBJVmVjdG9yIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB2ZWN0b3I/XG4gXCJSZXR1cm4gdHJ1ZSBpZiB4IHNhdGlzZmllcyBJVmVjdG9yXCJcbiBbeF1cbiAoc2F0aXNmaWVzPyBJVmVjdG9yIHgpKVxuIn0gezpzeW0gYm9vbGVhbiwgOm1ldGEgezpkb2MgIkNvZXJjZSB0byBib29sZWFuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBib29sZWFuXG4gXCJDb2VyY2UgdG8gYm9vbGVhblwiXG4gW3hdXG4gKGNvbmQgKG5pbD8geCkgZmFsc2UgKGZhbHNlPyB4KSBmYWxzZSA6ZWxzZSB0cnVlKSlcbiJ9IHs6c3ltIElDaHVuaywgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhY2Nlc3NpbmcgdGhlIGl0ZW1zIG9mIGEgY2h1bmsuIn0sIDptZXRob2RzICgtZHJvcC1maXJzdCl9IHs6c3ltIGJpdC1zaGlmdC1sZWZ0LCA6bWV0YSB7OmRvYyAiQml0d2lzZSBzaGlmdCBsZWZ0IiwgOmFyZ2xpc3RzIChbeCBuXSl9LCA6c291cmNlICIoZGVmblxuIGJpdC1zaGlmdC1sZWZ0XG4gXCJCaXR3aXNlIHNoaWZ0IGxlZnRcIlxuIFt4IG5dXG4gKGNsanMuY29yZS9iaXQtc2hpZnQtbGVmdCB4IG4pKVxuIn0gezpzeW0gcmFuZG9tLXV1aWQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIHJhbmRvbS11dWlkXG4gW11cbiAobGV0Zm5cbiAgWyhoZXggW10gKC50b1N0cmluZyAocmFuZC1pbnQgMTYpIDE2KSldXG4gIChsZXRcbiAgIFtyaGV4ICgudG9TdHJpbmcgKGJpdC1vciA4IChiaXQtYW5kIDMgKHJhbmQtaW50IDE2KSkpIDE2KV1cbiAgICh1dWlkXG4gICAgKHN0clxuICAgICAoaGV4KVxuICAgICAoaGV4KVxuICAgICAoaGV4KVxuICAgICAoaGV4KVxuICAgICAoaGV4KVxuICAgICAoaGV4KVxuICAgICAoaGV4KVxuICAgICAoaGV4KVxuICAgICBcIi1cIlxuICAgICAoaGV4KVxuICAgICAoaGV4KVxuICAgICAoaGV4KVxuICAgICAoaGV4KVxuICAgICBcIi1cIlxuICAgICBcIjRcIlxuICAgICAoaGV4KVxuICAgICAoaGV4KVxuICAgICAoaGV4KVxuICAgICBcIi1cIlxuICAgICByaGV4XG4gICAgIChoZXgpXG4gICAgIChoZXgpXG4gICAgIChoZXgpXG4gICAgIFwiLVwiXG4gICAgIChoZXgpXG4gICAgIChoZXgpXG4gICAgIChoZXgpXG4gICAgIChoZXgpXG4gICAgIChoZXgpXG4gICAgIChoZXgpXG4gICAgIChoZXgpXG4gICAgIChoZXgpXG4gICAgIChoZXgpXG4gICAgIChoZXgpXG4gICAgIChoZXgpXG4gICAgIChoZXgpKSkpKSlcbiJ9IHs6c3ltIGFueT8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgZ2l2ZW4gYW55IGFyZ3VtZW50LiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGFueT8gXCJSZXR1cm5zIHRydWUgaWYgZ2l2ZW4gYW55IGFyZ3VtZW50LlwiIFt4XSB0cnVlKVxuIn0gezpzeW0gcmFuZC1pbnQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgcmFuZG9tIGludGVnZXIgYmV0d2VlbiAwIChpbmNsdXNpdmUpIGFuZCBuIChleGNsdXNpdmUpLiIsIDphcmdsaXN0cyAoW25dKX0sIDpzb3VyY2UgIihkZWZuXG4gcmFuZC1pbnRcbiBcIlJldHVybnMgYSByYW5kb20gaW50ZWdlciBiZXR3ZWVuIDAgKGluY2x1c2l2ZSkgYW5kIG4gKGV4Y2x1c2l2ZSkuXCJcbiBbbl1cbiAoTWF0aC9mbG9vciAoKiAoTWF0aC9yYW5kb20pIG4pKSlcbiJ9IHs6c3ltIGFjbG9uZSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBqYXZhc2NyaXB0IGFycmF5LCBjbG9uZWQgZnJvbSB0aGUgcGFzc2VkIGluIGFycmF5IiwgOmFyZ2xpc3RzIChbYXJyXSl9LCA6c291cmNlICIoZGVmblxuIGFjbG9uZVxuIFwiUmV0dXJucyBhIGphdmFzY3JpcHQgYXJyYXksIGNsb25lZCBmcm9tIHRoZSBwYXNzZWQgaW4gYXJyYXlcIlxuIFthcnJdXG4gKGxldFxuICBbbGVuIChhbGVuZ3RoIGFycikgbmV3LWFyciAobWFrZS1hcnJheSBsZW4pXVxuICAoZG90aW1lcyBbaSBsZW5dIChhc2V0IG5ldy1hcnIgaSAoYWdldCBhcnIgaSkpKVxuICBuZXctYXJyKSlcbiJ9IHs6c3ltIHZyZXNldCEsIDptZXRhIHs6ZG9jICJTZXRzIHRoZSB2YWx1ZSBvZiB2b2xhdGlsZSB0byBuZXd2YWwgd2l0aG91dCByZWdhcmQgZm9yIHRoZVxuICAgY3VycmVudCB2YWx1ZS4gUmV0dXJucyBuZXd2YWwuIiwgOmFyZ2xpc3RzIChbdm9sIG5ld3ZhbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB2cmVzZXQhXG4gXCJTZXRzIHRoZSB2YWx1ZSBvZiB2b2xhdGlsZSB0byBuZXd2YWwgd2l0aG91dCByZWdhcmQgZm9yIHRoZVxcbiAgIGN1cnJlbnQgdmFsdWUuIFJldHVybnMgbmV3dmFsLlwiXG4gW3ZvbCBuZXd2YWxdXG4gKC12cmVzZXQhIHZvbCBuZXd2YWwpKVxuIn0gezpzeW0gY2h1bmssIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbYl0pfSwgOnNvdXJjZSAiKGRlZm4gY2h1bmsgW2JdICguY2h1bmsgYikpXG4ifSB7OnN5bSBkZWMsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbnVtYmVyIG9uZSBsZXNzIHRoYW4gbnVtLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGRlYyBcIlJldHVybnMgYSBudW1iZXIgb25lIGxlc3MgdGhhbiBudW0uXCIgW3hdICgtIHggMSkpXG4ifSB7OnN5bSBBUGVyc2lzdGVudFZlY3RvciwgOm1ldGEgezpkb2MgIk1hcmtlciBwcm90b2NvbCJ9LCA6bWV0aG9kcyAoKX0gezpzeW0gbWFwLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGxhenkgc2VxdWVuY2UgY29uc2lzdGluZyBvZiB0aGUgcmVzdWx0IG9mIGFwcGx5aW5nIGYgdG9cbiAgdGhlIHNldCBvZiBmaXJzdCBpdGVtcyBvZiBlYWNoIGNvbGwsIGZvbGxvd2VkIGJ5IGFwcGx5aW5nIGYgdG8gdGhlXG4gIHNldCBvZiBzZWNvbmQgaXRlbXMgaW4gZWFjaCBjb2xsLCB1bnRpbCBhbnkgb25lIG9mIHRoZSBjb2xscyBpc1xuICBleGhhdXN0ZWQuICBBbnkgcmVtYWluaW5nIGl0ZW1zIGluIG90aGVyIGNvbGxzIGFyZSBpZ25vcmVkLiBGdW5jdGlvblxuICBmIHNob3VsZCBhY2NlcHQgbnVtYmVyLW9mLWNvbGxzIGFyZ3VtZW50cy4gUmV0dXJucyBhIHRyYW5zZHVjZXIgd2hlblxuICBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLiIsIDphcmdsaXN0cyBbW2ZdIFtmIGNvbGxdIFtmIGMxIGMyXSBbZiBjMSBjMiBjM10gW2YgYzEgYzIgYzMgJiBjb2xsc11dfSwgOnNvdXJjZSAiKGRlZm5cbiBtYXBcbiBcIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIGNvbnNpc3Rpbmcgb2YgdGhlIHJlc3VsdCBvZiBhcHBseWluZyBmIHRvXFxuICB0aGUgc2V0IG9mIGZpcnN0IGl0ZW1zIG9mIGVhY2ggY29sbCwgZm9sbG93ZWQgYnkgYXBwbHlpbmcgZiB0byB0aGVcXG4gIHNldCBvZiBzZWNvbmQgaXRlbXMgaW4gZWFjaCBjb2xsLCB1bnRpbCBhbnkgb25lIG9mIHRoZSBjb2xscyBpc1xcbiAgZXhoYXVzdGVkLiAgQW55IHJlbWFpbmluZyBpdGVtcyBpbiBvdGhlciBjb2xscyBhcmUgaWdub3JlZC4gRnVuY3Rpb25cXG4gIGYgc2hvdWxkIGFjY2VwdCBudW1iZXItb2YtY29sbHMgYXJndW1lbnRzLiBSZXR1cm5zIGEgdHJhbnNkdWNlciB3aGVuXFxuICBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLlwiXG4gKFtmXVxuICAoZm5cbiAgIFtyZl1cbiAgIChmblxuICAgIChbXSAocmYpKVxuICAgIChbcmVzdWx0XSAocmYgcmVzdWx0KSlcbiAgICAoW3Jlc3VsdCBpbnB1dF0gKHJmIHJlc3VsdCAoZiBpbnB1dCkpKVxuICAgIChbcmVzdWx0IGlucHV0ICYgaW5wdXRzXSAocmYgcmVzdWx0IChhcHBseSBmIGlucHV0IGlucHV0cykpKSkpKVxuIChbZiBjb2xsXVxuICAobGF6eS1zZXFcbiAgICh3aGVuLWxldFxuICAgIFtzIChzZXEgY29sbCldXG4gICAgKGlmXG4gICAgIChjaHVua2VkLXNlcT8gcylcbiAgICAgKGxldFxuICAgICAgW2MgKGNodW5rLWZpcnN0IHMpIHNpemUgKGNvdW50IGMpIGIgKGNodW5rLWJ1ZmZlciBzaXplKV1cbiAgICAgIChkb3RpbWVzIFtpIHNpemVdIChjaHVuay1hcHBlbmQgYiAoZiAoLW50aCBjIGkpKSkpXG4gICAgICAoY2h1bmstY29ucyAoY2h1bmsgYikgKG1hcCBmIChjaHVuay1yZXN0IHMpKSkpXG4gICAgIChjb25zIChmIChmaXJzdCBzKSkgKG1hcCBmIChyZXN0IHMpKSkpKSkpXG4gKFtmIGMxIGMyXVxuICAobGF6eS1zZXFcbiAgIChsZXRcbiAgICBbczEgKHNlcSBjMSkgczIgKHNlcSBjMildXG4gICAgKHdoZW5cbiAgICAgKGFuZCBzMSBzMilcbiAgICAgKGNvbnMgKGYgKGZpcnN0IHMxKSAoZmlyc3QgczIpKSAobWFwIGYgKHJlc3QgczEpIChyZXN0IHMyKSkpKSkpKVxuIChbZiBjMSBjMiBjM11cbiAgKGxhenktc2VxXG4gICAobGV0XG4gICAgW3MxIChzZXEgYzEpIHMyIChzZXEgYzIpIHMzIChzZXEgYzMpXVxuICAgICh3aGVuXG4gICAgIChhbmQgczEgczIgczMpXG4gICAgIChjb25zXG4gICAgICAoZiAoZmlyc3QgczEpIChmaXJzdCBzMikgKGZpcnN0IHMzKSlcbiAgICAgIChtYXAgZiAocmVzdCBzMSkgKHJlc3QgczIpIChyZXN0IHMzKSkpKSkpKVxuIChbZiBjMSBjMiBjMyAmIGNvbGxzXVxuICAobGV0XG4gICBbc3RlcFxuICAgIChmblxuICAgICBzdGVwXG4gICAgIFtjc11cbiAgICAgKGxhenktc2VxXG4gICAgICAobGV0XG4gICAgICAgW3NzIChtYXAgc2VxIGNzKV1cbiAgICAgICAod2hlblxuICAgICAgICAoZXZlcnk/IGlkZW50aXR5IHNzKVxuICAgICAgICAoY29ucyAobWFwIGZpcnN0IHNzKSAoc3RlcCAobWFwIHJlc3Qgc3MpKSkpKSkpXVxuICAgKG1hcFxuICAgIChmbiogW3AxX180NTQxMiNdIChhcHBseSBmIHAxX180NTQxMiMpKVxuICAgIChzdGVwIChjb25qIGNvbGxzIGMzIGMyIGMxKSkpKSkpXG4ifSB7OnN5bSBqdXh0LCA6bWV0YSB7OmRvYyAiVGFrZXMgYSBzZXQgb2YgZnVuY3Rpb25zIGFuZCByZXR1cm5zIGEgZm4gdGhhdCBpcyB0aGUganV4dGFwb3NpdGlvblxuICBvZiB0aG9zZSBmbnMuICBUaGUgcmV0dXJuZWQgZm4gdGFrZXMgYSB2YXJpYWJsZSBudW1iZXIgb2YgYXJncywgYW5kXG4gIHJldHVybnMgYSB2ZWN0b3IgY29udGFpbmluZyB0aGUgcmVzdWx0IG9mIGFwcGx5aW5nIGVhY2ggZm4gdG8gdGhlXG4gIGFyZ3MgKGxlZnQtdG8tcmlnaHQpLlxuICAoKGp1eHQgYSBiIGMpIHgpID0+IFsoYSB4KSAoYiB4KSAoYyB4KV0iLCA6YXJnbGlzdHMgW1tmXSBbZiBnXSBbZiBnIGhdIFtmIGcgaCAmIGZzXV19LCA6c291cmNlICIoZGVmblxuIGp1eHRcbiBcIlRha2VzIGEgc2V0IG9mIGZ1bmN0aW9ucyBhbmQgcmV0dXJucyBhIGZuIHRoYXQgaXMgdGhlIGp1eHRhcG9zaXRpb25cXG4gIG9mIHRob3NlIGZucy4gIFRoZSByZXR1cm5lZCBmbiB0YWtlcyBhIHZhcmlhYmxlIG51bWJlciBvZiBhcmdzLCBhbmRcXG4gIHJldHVybnMgYSB2ZWN0b3IgY29udGFpbmluZyB0aGUgcmVzdWx0IG9mIGFwcGx5aW5nIGVhY2ggZm4gdG8gdGhlXFxuICBhcmdzIChsZWZ0LXRvLXJpZ2h0KS5cXG4gICgoanV4dCBhIGIgYykgeCkgPT4gWyhhIHgpIChiIHgpIChjIHgpXVwiXG4gKFtmXVxuICAoZm5cbiAgIChbXSAodmVjdG9yIChmKSkpXG4gICAoW3hdICh2ZWN0b3IgKGYgeCkpKVxuICAgKFt4IHldICh2ZWN0b3IgKGYgeCB5KSkpXG4gICAoW3ggeSB6XSAodmVjdG9yIChmIHggeSB6KSkpXG4gICAoW3ggeSB6ICYgYXJnc10gKHZlY3RvciAoYXBwbHkgZiB4IHkgeiBhcmdzKSkpKSlcbiAoW2YgZ11cbiAgKGZuXG4gICAoW10gKHZlY3RvciAoZikgKGcpKSlcbiAgIChbeF0gKHZlY3RvciAoZiB4KSAoZyB4KSkpXG4gICAoW3ggeV0gKHZlY3RvciAoZiB4IHkpIChnIHggeSkpKVxuICAgKFt4IHkgel0gKHZlY3RvciAoZiB4IHkgeikgKGcgeCB5IHopKSlcbiAgIChbeCB5IHogJiBhcmdzXVxuICAgICh2ZWN0b3IgKGFwcGx5IGYgeCB5IHogYXJncykgKGFwcGx5IGcgeCB5IHogYXJncykpKSkpXG4gKFtmIGcgaF1cbiAgKGZuXG4gICAoW10gKHZlY3RvciAoZikgKGcpIChoKSkpXG4gICAoW3hdICh2ZWN0b3IgKGYgeCkgKGcgeCkgKGggeCkpKVxuICAgKFt4IHldICh2ZWN0b3IgKGYgeCB5KSAoZyB4IHkpIChoIHggeSkpKVxuICAgKFt4IHkgel0gKHZlY3RvciAoZiB4IHkgeikgKGcgeCB5IHopIChoIHggeSB6KSkpXG4gICAoW3ggeSB6ICYgYXJnc11cbiAgICAodmVjdG9yXG4gICAgIChhcHBseSBmIHggeSB6IGFyZ3MpXG4gICAgIChhcHBseSBnIHggeSB6IGFyZ3MpXG4gICAgIChhcHBseSBoIHggeSB6IGFyZ3MpKSkpKVxuIChbZiBnIGggJiBmc11cbiAgKGxldFxuICAgW2ZzIChsaXN0KiBmIGcgaCBmcyldXG4gICAoZm5cbiAgICAoW11cbiAgICAgKHJlZHVjZVxuICAgICAgKGZuKiBbcDFfXzQ1NDI4IyBwMl9fNDU0MjkjXSAoY29uaiBwMV9fNDU0MjgjIChwMl9fNDU0MjkjKSkpXG4gICAgICBbXVxuICAgICAgZnMpKVxuICAgIChbeF1cbiAgICAgKHJlZHVjZVxuICAgICAgKGZuKiBbcDFfXzQ1NDMwIyBwMl9fNDU0MzEjXSAoY29uaiBwMV9fNDU0MzAjIChwMl9fNDU0MzEjIHgpKSlcbiAgICAgIFtdXG4gICAgICBmcykpXG4gICAgKFt4IHldXG4gICAgIChyZWR1Y2VcbiAgICAgIChmbiogW3AxX180NTQzMiMgcDJfXzQ1NDMzI10gKGNvbmogcDFfXzQ1NDMyIyAocDJfXzQ1NDMzIyB4IHkpKSlcbiAgICAgIFtdXG4gICAgICBmcykpXG4gICAgKFt4IHkgel1cbiAgICAgKHJlZHVjZVxuICAgICAgKGZuKlxuICAgICAgIFtwMV9fNDU0MzQjIHAyX180NTQzNSNdXG4gICAgICAgKGNvbmogcDFfXzQ1NDM0IyAocDJfXzQ1NDM1IyB4IHkgeikpKVxuICAgICAgW11cbiAgICAgIGZzKSlcbiAgICAoW3ggeSB6ICYgYXJnc11cbiAgICAgKHJlZHVjZVxuICAgICAgKGZuKlxuICAgICAgIFtwMV9fNDU0MzYjIHAyX180NTQzNyNdXG4gICAgICAgKGNvbmogcDFfXzQ1NDM2IyAoYXBwbHkgcDJfXzQ1NDM3IyB4IHkgeiBhcmdzKSkpXG4gICAgICBbXVxuICAgICAgZnMpKSkpKSlcbiJ9IHs6c3ltIDwsIDptZXRhIHs6ZG9jICJSZXR1cm5zIG5vbi1uaWwgaWYgbnVtcyBhcmUgaW4gbW9ub3RvbmljYWxseSBpbmNyZWFzaW5nIG9yZGVyLFxuICBvdGhlcndpc2UgZmFsc2UuIiwgOmFyZ2xpc3RzIFtbeF0gW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gPFxuIFwiUmV0dXJucyBub24tbmlsIGlmIG51bXMgYXJlIGluIG1vbm90b25pY2FsbHkgaW5jcmVhc2luZyBvcmRlcixcXG4gIG90aGVyd2lzZSBmYWxzZS5cIlxuIChbeF0gdHJ1ZSlcbiAoW3ggeV0gKGNsanMuY29yZS88IHggeSkpXG4gKFt4IHkgJiBtb3JlXVxuICAoaWZcbiAgIChjbGpzLmNvcmUvPCB4IHkpXG4gICAoaWZcbiAgICAobmV4dCBtb3JlKVxuICAgIChyZWN1ciB5IChmaXJzdCBtb3JlKSAobmV4dCBtb3JlKSlcbiAgICAoY2xqcy5jb3JlLzwgeSAoZmlyc3QgbW9yZSkpKVxuICAgZmFsc2UpKSlcbiJ9IHs6c3ltICpldmFsKiwgOm1ldGEgezpkb2MgIlJ1bnRpbWUgZW52aXJvbm1lbnRzIG1heSBwcm92aWRlIGEgd2F5IHRvIGV2YWx1YXRlIENsb2p1cmVTY3JpcHRcbiAgZm9ybXMuIFdoYXRldmVyIGZ1bmN0aW9uICpldmFsKiBpcyBib3VuZCB0byB3aWxsIGJlIHBhc3NlZCBhbnkgZm9ybXMgd2hpY2hcbiAgc2hvdWxkIGJlIGV2YWx1YXRlZC4ifSwgOnNvdXJjZSAiKGRlZm9uY2VcbiAqZXZhbCpcbiAoZm4gW19dICh0aHJvdyAoanMvRXJyb3IuIFwiY2xqcy5jb3JlLypldmFsKiBub3QgYm91bmRcIikpKSlcbiJ9IHs6c3ltIHRlc3QsIDptZXRhIHs6ZG9jICJ0ZXN0IFt2XSBmaW5kcyBmbiBhdCBrZXkgOnRlc3QgaW4gdmFyIG1ldGFkYXRhIGFuZCBjYWxscyBpdCxcbiAgcHJlc3VtaW5nIGZhaWx1cmUgd2lsbCB0aHJvdyBleGNlcHRpb24iLCA6YXJnbGlzdHMgKFt2XSl9LCA6c291cmNlICIoZGVmblxuIHRlc3RcbiBcInRlc3QgW3ZdIGZpbmRzIGZuIGF0IGtleSA6dGVzdCBpbiB2YXIgbWV0YWRhdGEgYW5kIGNhbGxzIGl0LFxcbiAgcHJlc3VtaW5nIGZhaWx1cmUgd2lsbCB0aHJvdyBleGNlcHRpb25cIlxuIFt2XVxuIChsZXQgW2YgKC4tY2xqcyRsYW5nJHRlc3QgdildIChpZiBmIChkbyAoZikgOm9rKSA6bm8tdGVzdCkpKVxuIn0gezpzeW0gcmVzdCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBwb3NzaWJseSBlbXB0eSBzZXEgb2YgdGhlIGl0ZW1zIGFmdGVyIHRoZSBmaXJzdC4gQ2FsbHMgc2VxIG9uIGl0c1xuICBhcmd1bWVudC4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIHJlc3RcbiBcIlJldHVybnMgYSBwb3NzaWJseSBlbXB0eSBzZXEgb2YgdGhlIGl0ZW1zIGFmdGVyIHRoZSBmaXJzdC4gQ2FsbHMgc2VxIG9uIGl0c1xcbiAgYXJndW1lbnQuXCJcbiBbY29sbF1cbiAoaWYtbm90XG4gIChuaWw/IGNvbGwpXG4gIChpZlxuICAgKGltcGxlbWVudHM/IElTZXEgY29sbClcbiAgICgtcmVzdCBjb2xsKVxuICAgKGxldCBbcyAoc2VxIGNvbGwpXSAoaWYgcyAoLXJlc3QgcykgKCkpKSlcbiAgKCkpKVxuIn0gezpzeW0gZXgtZGF0YSwgOm1ldGEgezpkb2MgIlJldHVybnMgZXhjZXB0aW9uIGRhdGEgKGEgbWFwKSBpZiBleCBpcyBhbiBFeGNlcHRpb25JbmZvLlxuICBPdGhlcndpc2UgcmV0dXJucyBuaWwuIiwgOmFyZ2xpc3RzIChbZXhdKX0sIDpzb3VyY2UgIihkZWZuXG4gZXgtZGF0YVxuIFwiUmV0dXJucyBleGNlcHRpb24gZGF0YSAoYSBtYXApIGlmIGV4IGlzIGFuIEV4Y2VwdGlvbkluZm8uXFxuICBPdGhlcndpc2UgcmV0dXJucyBuaWwuXCJcbiBbZXhdXG4gKHdoZW4gKGluc3RhbmNlPyBFeGNlcHRpb25JbmZvIGV4KSAoLi1kYXRhIGV4KSkpXG4ifSB7OnN5bSAtZHJvcC1maXJzdCwgOm1ldGEgezpkb2MgIlJldHVybiBhIG5ldyBjaHVuayBvZiBjb2xsIHdpdGggdGhlIGZpcnN0IGl0ZW0gcmVtb3ZlZC4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6cHJvdG9jb2wgSUNodW5rfSB7OnN5bSBpc2E/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmICg9IGNoaWxkIHBhcmVudCksIG9yIGNoaWxkIGlzIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgZGVyaXZlZCBmcm9tXG4gIHBhcmVudCwgZWl0aGVyIHZpYSBhIEphdmFTY3JpcHQgdHlwZSBpbmhlcml0YW5jZSByZWxhdGlvbnNoaXAgb3IgYVxuICByZWxhdGlvbnNoaXAgZXN0YWJsaXNoZWQgdmlhIGRlcml2ZS4gaCBtdXN0IGJlIGEgaGllcmFyY2h5IG9idGFpbmVkXG4gIGZyb20gbWFrZS1oaWVyYXJjaHksIGlmIG5vdCBzdXBwbGllZCBkZWZhdWx0cyB0byB0aGUgZ2xvYmFsXG4gIGhpZXJhcmNoeSIsIDphcmdsaXN0cyBbW2NoaWxkIHBhcmVudF0gW2ggY2hpbGQgcGFyZW50XV19LCA6c291cmNlICIoZGVmblxuIGlzYT9cbiBcIlJldHVybnMgdHJ1ZSBpZiAoPSBjaGlsZCBwYXJlbnQpLCBvciBjaGlsZCBpcyBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGRlcml2ZWQgZnJvbVxcbiAgcGFyZW50LCBlaXRoZXIgdmlhIGEgSmF2YVNjcmlwdCB0eXBlIGluaGVyaXRhbmNlIHJlbGF0aW9uc2hpcCBvciBhXFxuICByZWxhdGlvbnNoaXAgZXN0YWJsaXNoZWQgdmlhIGRlcml2ZS4gaCBtdXN0IGJlIGEgaGllcmFyY2h5IG9idGFpbmVkXFxuICBmcm9tIG1ha2UtaGllcmFyY2h5LCBpZiBub3Qgc3VwcGxpZWQgZGVmYXVsdHMgdG8gdGhlIGdsb2JhbFxcbiAgaGllcmFyY2h5XCJcbiAoW2NoaWxkIHBhcmVudF0gKGlzYT8gQChnZXQtZ2xvYmFsLWhpZXJhcmNoeSkgY2hpbGQgcGFyZW50KSlcbiAoW2ggY2hpbGQgcGFyZW50XVxuICAob3JcbiAgICg9IGNoaWxkIHBhcmVudClcbiAgIChjb250YWlucz8gKCg6YW5jZXN0b3JzIGgpIGNoaWxkKSBwYXJlbnQpXG4gICAoYW5kXG4gICAgKHZlY3Rvcj8gcGFyZW50KVxuICAgICh2ZWN0b3I/IGNoaWxkKVxuICAgICg9PSAoY291bnQgcGFyZW50KSAoY291bnQgY2hpbGQpKVxuICAgIChsb29wXG4gICAgIFtyZXQgdHJ1ZSBpIDBdXG4gICAgIChpZlxuICAgICAgKG9yIChub3QgcmV0KSAoPT0gaSAoY291bnQgcGFyZW50KSkpXG4gICAgICByZXRcbiAgICAgIChyZWN1ciAoaXNhPyBoIChjaGlsZCBpKSAocGFyZW50IGkpKSAoaW5jIGkpKSkpKSkpKVxuIn0gezpzeW0gYm9vbGVhbj8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IGlzIGEgQm9vbGVhbiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gYm9vbGVhbj9cbiBcIlJldHVybiB0cnVlIGlmIHggaXMgYSBCb29sZWFuXCJcbiBbeF1cbiAob3IgKGNsanMuY29yZS90cnVlPyB4KSAoY2xqcy5jb3JlL2ZhbHNlPyB4KSkpXG4ifSB7OnN5bSAtY2xvbmUsIDptZXRhIHs6ZG9jICJDcmVhdGVzIGEgY2xvbmUgb2YgdmFsdWUuIiwgOmFyZ2xpc3RzIChbdmFsdWVdKX0sIDpwcm90b2NvbCBJQ2xvbmVhYmxlfSB7OnN5bSBtdW5nZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtuYW1lXSl9LCA6c291cmNlICIoZGVmblxuIG11bmdlXG4gW25hbWVdXG4gKGxldFxuICBbbmFtZSdcbiAgIChtdW5nZS1zdHIgKHN0ciBuYW1lKSlcbiAgIG5hbWUnXG4gICAoY29uZFxuICAgIChpZGVudGljYWw/IG5hbWUnIFwiLi5cIilcbiAgICBcIl9ET1RfX0RPVF9cIlxuICAgIChqcy1yZXNlcnZlZD8gbmFtZScpXG4gICAgKHN0ciBuYW1lJyBcIiRcIilcbiAgICA6ZWxzZVxuICAgIG5hbWUnKV1cbiAgKGlmIChzeW1ib2w/IG5hbWUpIChzeW1ib2wgbmFtZScpIG5hbWUnKSkpXG4ifSB7OnN5bSBERU1VTkdFX01BUCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBERU1VTkdFX01BUFxuICNqcyB7XCJfUkJSQUNFX1wiIFwifVwiLCBcIl9DT0xPTl9cIiBcIjpcIiwgXCJfQkFOR19cIiBcIiFcIiwgXCJfUU1BUktfXCIgXCI/XCIsIFwiX0JTTEFTSF9cIiBcIlxcXFxcXFxcXCIsIFwiX1NMQVNIX1wiIFwiL1wiLCBcIl9QRVJDRU5UX1wiIFwiJVwiLCBcIl9QTFVTX1wiIFwiK1wiLCBcIl9TSEFSUF9cIiBcIiNcIiwgXCJfTEJSQUNFX1wiIFwie1wiLCBcIl9CQVJfXCIgXCJ8XCIsIFwiX0xCUkFDS19cIiBcIltcIiwgXCJfRVFfXCIgXCI9XCIsIFwiX1wiIFwiLVwiLCBcIl9USUxERV9cIiBcIn5cIiwgXCJfUkJSQUNLX1wiIFwiXVwiLCBcIl9HVF9cIiBcIj5cIiwgXCJfU0lOR0xFUVVPVEVfXCIgXCInXCIsIFwiX0NJUkNBX1wiIFwiQFwiLCBcIl9BTVBFUlNBTkRfXCIgXCImXCIsIFwiX0RPVUJMRVFVT1RFX1wiIFwiXFxcXFxcXCJcIiwgXCJfQ0FSRVRfXCIgXCJeXCIsIFwiX0xUX1wiIFwiPFwiLCBcIl9TVEFSX1wiIFwiKlwifSlcbiJ9IHs6c3ltIHJlLXNlcSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIHN1Y2Nlc3NpdmUgbWF0Y2hlcyBvZiByZSBpbiBzLiIsIDphcmdsaXN0cyAoW3JlIHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmUtc2VxXG4gXCJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiBzdWNjZXNzaXZlIG1hdGNoZXMgb2YgcmUgaW4gcy5cIlxuIFtyZSBzXVxuIChpZlxuICAoc3RyaW5nPyBzKVxuICAocmUtc2VxKiByZSBzKVxuICAodGhyb3cgKGpzL1R5cGVFcnJvci4gXCJyZS1zZXEgbXVzdCBtYXRjaCBhZ2FpbnN0IGEgc3RyaW5nLlwiKSkpKVxuIn0gezpzeW0gY2hhcj8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgeCBpcyBhIEphdmFTY3JpcHQgc3RyaW5nIG9mIGxlbmd0aCBvbmUuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjaGFyP1xuIFwiUmV0dXJucyB0cnVlIGlmIHggaXMgYSBKYXZhU2NyaXB0IHN0cmluZyBvZiBsZW5ndGggb25lLlwiXG4gW3hdXG4gKGFuZCAoc3RyaW5nPyB4KSAoPT0gMSAoLi1sZW5ndGggeCkpKSlcbiJ9IHs6c3ltIG1ha2UtaGllcmFyY2h5LCA6bWV0YSB7OmRvYyAiQ3JlYXRlcyBhIGhpZXJhcmNoeSBvYmplY3QgZm9yIHVzZSB3aXRoIGRlcml2ZSwgaXNhPyBldGMuIiwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIG1ha2UtaGllcmFyY2h5XG4gXCJDcmVhdGVzIGEgaGllcmFyY2h5IG9iamVjdCBmb3IgdXNlIHdpdGggZGVyaXZlLCBpc2E/IGV0Yy5cIlxuIFtdXG4gezpwYXJlbnRzIHt9LCA6ZGVzY2VuZGFudHMge30sIDphbmNlc3RvcnMge319KVxuIn0gezpzeW0gUFJPVE9DT0xfU0VOVElORUwsIDptZXRhIHt9LCA6c291cmNlICIoZGVmb25jZSBQUk9UT0NPTF9TRU5USU5FTCAjanMge30pXG4ifSB7OnN5bSAtcmVkdWNlLCA6bWV0YSB7OmRvYyAiZiBzaG91bGQgYmUgYSBmdW5jdGlvbiBvZiAyIGFyZ3VtZW50cy4gSWYgc3RhcnQgaXMgbm90IHN1cHBsaWVkLFxuICAgICByZXR1cm5zIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgZiB0byB0aGUgZmlyc3QgMiBpdGVtcyBpbiBjb2xsLCB0aGVuXG4gICAgIGFwcGx5aW5nIGYgdG8gdGhhdCByZXN1bHQgYW5kIHRoZSAzcmQgaXRlbSwgZXRjLiIsIDphcmdsaXN0cyAoW2NvbGwgZl0gW2NvbGwgZiBzdGFydF0pfSwgOnByb3RvY29sIElSZWR1Y2V9IHs6c3ltIC1jb3VudCwgOm1ldGEgezpkb2MgIkNhbGN1bGF0ZXMgdGhlIGNvdW50IG9mIGNvbGwgaW4gY29uc3RhbnQgdGltZS4gVXNlZCBieSBjbGpzLmNvcmUvY291bnQuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnByb3RvY29sIElDb3VudGVkfSB7OnN5bSBzd2FwLXZhbHMhLCA6bWV0YSB7OmRvYyAiQXRvbWljYWxseSBzd2FwcyB0aGUgdmFsdWUgb2YgYXRvbSB0byBiZTpcbiAgKGFwcGx5IGYgY3VycmVudC12YWx1ZS1vZi1hdG9tIGFyZ3MpLiBOb3RlIHRoYXQgZiBtYXkgYmUgY2FsbGVkXG4gIG11bHRpcGxlIHRpbWVzLCBhbmQgdGh1cyBzaG91bGQgYmUgZnJlZSBvZiBzaWRlIGVmZmVjdHMuXG4gIFJldHVybnMgW29sZCBuZXddLCB0aGUgdmFsdWUgb2YgdGhlIGF0b20gYmVmb3JlIGFuZCBhZnRlciB0aGUgc3dhcC4iLCA6YXJnbGlzdHMgW1thIGZdIFthIGYgeF0gW2EgZiB4IHldIFthIGYgeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBzd2FwLXZhbHMhXG4gXCJBdG9taWNhbGx5IHN3YXBzIHRoZSB2YWx1ZSBvZiBhdG9tIHRvIGJlOlxcbiAgKGFwcGx5IGYgY3VycmVudC12YWx1ZS1vZi1hdG9tIGFyZ3MpLiBOb3RlIHRoYXQgZiBtYXkgYmUgY2FsbGVkXFxuICBtdWx0aXBsZSB0aW1lcywgYW5kIHRodXMgc2hvdWxkIGJlIGZyZWUgb2Ygc2lkZSBlZmZlY3RzLlxcbiAgUmV0dXJucyBbb2xkIG5ld10sIHRoZSB2YWx1ZSBvZiB0aGUgYXRvbSBiZWZvcmUgYW5kIGFmdGVyIHRoZSBzd2FwLlwiXG4gezphZGRlZCBcIjEuOVwifVxuIChbYSBmXSAocmVzZXQtdmFscyEgYSAoZiAoLi1zdGF0ZSBhKSkpKVxuIChbYSBmIHhdIChyZXNldC12YWxzISBhIChmICguLXN0YXRlIGEpIHgpKSlcbiAoW2EgZiB4IHldIChyZXNldC12YWxzISBhIChmICguLXN0YXRlIGEpIHggeSkpKVxuIChbYSBmIHggeSAmIG1vcmVdIChyZXNldC12YWxzISBhIChhcHBseSBmICguLXN0YXRlIGEpIHggeSBtb3JlKSkpKVxuIn0gezpzeW0ga2VlcCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIHRoZSBub24tbmlsIHJlc3VsdHMgb2YgKGYgaXRlbSkuIE5vdGUsXG4gIHRoaXMgbWVhbnMgZmFsc2UgcmV0dXJuIHZhbHVlcyB3aWxsIGJlIGluY2x1ZGVkLiAgZiBtdXN0IGJlIGZyZWUgb2ZcbiAgc2lkZS1lZmZlY3RzLiAgUmV0dXJucyBhIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLiIsIDphcmdsaXN0cyBbW2ZdIFtmIGNvbGxdXX0sIDpzb3VyY2UgIihkZWZuXG4ga2VlcFxuIFwiUmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2YgdGhlIG5vbi1uaWwgcmVzdWx0cyBvZiAoZiBpdGVtKS4gTm90ZSxcXG4gIHRoaXMgbWVhbnMgZmFsc2UgcmV0dXJuIHZhbHVlcyB3aWxsIGJlIGluY2x1ZGVkLiAgZiBtdXN0IGJlIGZyZWUgb2ZcXG4gIHNpZGUtZWZmZWN0cy4gIFJldHVybnMgYSB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC5cIlxuIChbZl1cbiAgKGZuXG4gICBbcmZdXG4gICAoZm5cbiAgICAoW10gKHJmKSlcbiAgICAoW3Jlc3VsdF0gKHJmIHJlc3VsdCkpXG4gICAgKFtyZXN1bHQgaW5wdXRdXG4gICAgIChsZXQgW3YgKGYgaW5wdXQpXSAoaWYgKG5pbD8gdikgcmVzdWx0IChyZiByZXN1bHQgdikpKSkpKSlcbiAoW2YgY29sbF1cbiAgKGxhenktc2VxXG4gICAod2hlbi1sZXRcbiAgICBbcyAoc2VxIGNvbGwpXVxuICAgIChpZlxuICAgICAoY2h1bmtlZC1zZXE/IHMpXG4gICAgIChsZXRcbiAgICAgIFtjIChjaHVuay1maXJzdCBzKSBzaXplIChjb3VudCBjKSBiIChjaHVuay1idWZmZXIgc2l6ZSldXG4gICAgICAoZG90aW1lc1xuICAgICAgIFtpIHNpemVdXG4gICAgICAgKGxldCBbeCAoZiAoLW50aCBjIGkpKV0gKHdoZW4tbm90IChuaWw/IHgpIChjaHVuay1hcHBlbmQgYiB4KSkpKVxuICAgICAgKGNodW5rLWNvbnMgKGNodW5rIGIpIChrZWVwIGYgKGNodW5rLXJlc3QgcykpKSlcbiAgICAgKGxldFxuICAgICAgW3ggKGYgKGZpcnN0IHMpKV1cbiAgICAgIChpZiAobmlsPyB4KSAoa2VlcCBmIChyZXN0IHMpKSAoY29ucyB4IChrZWVwIGYgKHJlc3QgcykpKSkpKSkpKSlcbiJ9IHs6c3ltIGNoYXIsIDptZXRhIHs6ZG9jICJDb2VyY2UgdG8gY2hhciIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gY2hhclxuIFwiQ29lcmNlIHRvIGNoYXJcIlxuIFt4XVxuIChjb25kXG4gIChudW1iZXI/IHgpXG4gICguZnJvbUNoYXJDb2RlIGpzL1N0cmluZyB4KVxuICAoYW5kIChzdHJpbmc/IHgpICg9PSAoLi1sZW5ndGggeCkgMSkpXG4gIHhcbiAgOmVsc2VcbiAgKHRocm93IChqcy9FcnJvci4gXCJBcmd1bWVudCB0byBjaGFyIG11c3QgYmUgYSBjaGFyYWN0ZXIgb3IgbnVtYmVyXCIpKSkpXG4ifSB7OnN5bSBtYXBjYXQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgY29uY2F0IHRvIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgbWFwXG4gIHRvIGYgYW5kIGNvbGxzLiAgVGh1cyBmdW5jdGlvbiBmIHNob3VsZCByZXR1cm4gYSBjb2xsZWN0aW9uLiBSZXR1cm5zXG4gIGEgdHJhbnNkdWNlciB3aGVuIG5vIGNvbGxlY3Rpb25zIGFyZSBwcm92aWRlZCIsIDphcmdsaXN0cyBbW2ZdIFtmICYgY29sbHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gbWFwY2F0XG4gXCJSZXR1cm5zIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgY29uY2F0IHRvIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgbWFwXFxuICB0byBmIGFuZCBjb2xscy4gIFRodXMgZnVuY3Rpb24gZiBzaG91bGQgcmV0dXJuIGEgY29sbGVjdGlvbi4gUmV0dXJuc1xcbiAgYSB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbnMgYXJlIHByb3ZpZGVkXCJcbiB7OmFkZGVkIFwiMS4wXCIsIDpzdGF0aWMgdHJ1ZX1cbiAoW2ZdIChjb21wIChtYXAgZikgY2F0KSlcbiAoW2YgJiBjb2xsc10gKGFwcGx5IGNvbmNhdCAoYXBwbHkgbWFwIGYgY29sbHMpKSkpXG4ifSB7OnN5bSB1bmNoZWNrZWQtbG9uZywgOm1ldGEgezpkb2MgIkNvZXJjZSB0byBsb25nIGJ5IHN0cmlwcGluZyBkZWNpbWFsIHBsYWNlcy4gSWRlbnRpY2FsIHRvIGBpbnQnLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gdW5jaGVja2VkLWxvbmdcbiBcIkNvZXJjZSB0byBsb25nIGJ5IHN0cmlwcGluZyBkZWNpbWFsIHBsYWNlcy4gSWRlbnRpY2FsIHRvIGBpbnQnLlwiXG4gW3hdXG4gKGZpeCB4KSlcbiJ9IHs6c3ltIG0zLXNlZWQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIG0zLXNlZWQgMClcbiJ9IHs6c3ltIHNvbWU/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIHggaXMgbm90IG5pbCwgZmFsc2Ugb3RoZXJ3aXNlLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gc29tZT9cbiBcIlJldHVybnMgdHJ1ZSBpZiB4IGlzIG5vdCBuaWwsIGZhbHNlIG90aGVyd2lzZS5cIlxuIFt4XVxuIChub3QgKG5pbD8geCkpKVxuIn0gezpzeW0gdW5jaGVja2VkLW5lZ2F0ZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiB1bmNoZWNrZWQtbmVnYXRlIFt4XSAoY2xqcy5jb3JlL3VuY2hlY2tlZC1uZWdhdGUgeCkpXG4ifSB7OnN5bSByZW1vdmUtdGFwLCA6bWV0YSB7OmRvYyAiUmVtb3ZlIGYgZnJvbSB0aGUgdGFwIHNldC4iLCA6YXJnbGlzdHMgKFtmXSl9LCA6c291cmNlICIoZGVmblxuIHJlbW92ZS10YXBcbiBcIlJlbW92ZSBmIGZyb20gdGhlIHRhcCBzZXQuXCJcbiBbZl1cbiAobWF5YmUtaW5pdC10YXBzZXQpXG4gKHN3YXAhIHRhcHNldCBkaXNqIGYpXG4gbmlsKVxuIn0gezpzeW0gc3ltYm9sLWlkZW50aWNhbD8sIDptZXRhIHs6ZG9jICJFZmZpY2llbnQgdGVzdCB0byBkZXRlcm1pbmUgdGhhdCB0d28gc3ltYm9scyBhcmUgaWRlbnRpY2FsLiIsIDphcmdsaXN0cyAoW3ggeV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzeW1ib2wtaWRlbnRpY2FsP1xuIFwiRWZmaWNpZW50IHRlc3QgdG8gZGV0ZXJtaW5lIHRoYXQgdHdvIHN5bWJvbHMgYXJlIGlkZW50aWNhbC5cIlxuIFt4IHldXG4gKGlmXG4gIChpZGVudGljYWw/IHggeSlcbiAgdHJ1ZVxuICAoaWZcbiAgIChhbmQgKHN5bWJvbD8geCkgKHN5bWJvbD8geSkpXG4gICAoaWRlbnRpY2FsPyAoLi1zdHIgeCkgKC4tc3RyIHkpKVxuICAgZmFsc2UpKSlcbiJ9IHs6c3ltICpjb21tYW5kLWxpbmUtYXJncyosIDptZXRhIHs6ZG9jICJBIHNlcXVlbmNlIG9mIHRoZSBzdXBwbGllZCBjb21tYW5kIGxpbmUgYXJndW1lbnRzLCBvciBuaWwgaWZcbiAgbm9uZSB3ZXJlIHN1cHBsaWVkIn0sIDpzb3VyY2UgIihkZWYgKmNvbW1hbmQtbGluZS1hcmdzKiBuaWwpXG4ifSB7OnN5bSByZXZlcnNlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHNlcSBvZiB0aGUgaXRlbXMgaW4gY29sbCBpbiByZXZlcnNlIG9yZGVyLiBOb3QgbGF6eS4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIHJldmVyc2VcbiBcIlJldHVybnMgYSBzZXEgb2YgdGhlIGl0ZW1zIGluIGNvbGwgaW4gcmV2ZXJzZSBvcmRlci4gTm90IGxhenkuXCJcbiBbY29sbF1cbiAoaWYgKHJldmVyc2libGU/IGNvbGwpIChvciAocnNlcSBjb2xsKSAoKSkgKHJlZHVjZSBjb25qICgpIGNvbGwpKSlcbiJ9IHs6c3ltIGluc3Q/LCA6bWV0YSB7OmRvYyAiUmV0dXJuIHRydWUgaWYgeCBzYXRpc2ZpZXMgSW5zdCIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGluc3Q/IFwiUmV0dXJuIHRydWUgaWYgeCBzYXRpc2ZpZXMgSW5zdFwiIFt4XSAoc2F0aXNmaWVzPyBJbnN0IHgpKVxuIn0gezpzeW0gcmFuZ2UsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbGF6eSBzZXEgb2YgbnVtcyBmcm9tIHN0YXJ0IChpbmNsdXNpdmUpIHRvIGVuZFxuICAgKGV4Y2x1c2l2ZSksIGJ5IHN0ZXAsIHdoZXJlIHN0YXJ0IGRlZmF1bHRzIHRvIDAsIHN0ZXAgdG8gMSxcbiAgIGFuZCBlbmQgdG8gaW5maW5pdHkuIiwgOmFyZ2xpc3RzIFtbXSBbZW5kXSBbc3RhcnQgZW5kXSBbc3RhcnQgZW5kIHN0ZXBdXX0sIDpzb3VyY2UgIihkZWZuXG4gcmFuZ2VcbiBcIlJldHVybnMgYSBsYXp5IHNlcSBvZiBudW1zIGZyb20gc3RhcnQgKGluY2x1c2l2ZSkgdG8gZW5kXFxuICAgKGV4Y2x1c2l2ZSksIGJ5IHN0ZXAsIHdoZXJlIHN0YXJ0IGRlZmF1bHRzIHRvIDAsIHN0ZXAgdG8gMSxcXG4gICBhbmQgZW5kIHRvIGluZmluaXR5LlwiXG4gKFtdIChyYW5nZSAwICguLU1BWF9WQUxVRSBqcy9OdW1iZXIpIDEpKVxuIChbZW5kXSAocmFuZ2UgMCBlbmQgMSkpXG4gKFtzdGFydCBlbmRdIChyYW5nZSBzdGFydCBlbmQgMSkpXG4gKFtzdGFydCBlbmQgc3RlcF1cbiAgKGNvbmRcbiAgIChwb3M/IHN0ZXApXG4gICAoaWZcbiAgICAoPD0gZW5kIHN0YXJ0KVxuICAgICgpXG4gICAgKGlmXG4gICAgIChhbmQgKGludGVnZXI/IHN0YXJ0KSAoaW50ZWdlcj8gZW5kKSAoaW50ZWdlcj8gc3RlcCkpXG4gICAgIChJbnRlZ2VyUmFuZ2UuIG5pbCBzdGFydCBlbmQgc3RlcCBuaWwgbmlsIG5pbClcbiAgICAgKFJhbmdlLiBuaWwgc3RhcnQgZW5kIHN0ZXAgbmlsIG5pbCBuaWwpKSlcbiAgIChuZWc/IHN0ZXApXG4gICAoaWZcbiAgICAoPj0gZW5kIHN0YXJ0KVxuICAgICgpXG4gICAgKGlmXG4gICAgIChhbmQgKGludGVnZXI/IHN0YXJ0KSAoaW50ZWdlcj8gZW5kKSAoaW50ZWdlcj8gc3RlcCkpXG4gICAgIChJbnRlZ2VyUmFuZ2UuIG5pbCBzdGFydCBlbmQgc3RlcCBuaWwgbmlsIG5pbClcbiAgICAgKFJhbmdlLiBuaWwgc3RhcnQgZW5kIHN0ZXAgbmlsIG5pbCBuaWwpKSlcbiAgIDplbHNlXG4gICAoaWYgKD09IGVuZCBzdGFydCkgKCkgKHJlcGVhdCBzdGFydCkpKSkpXG4ifSB7OnN5bSBiaXQtY291bnQsIDptZXRhIHs6ZG9jICJDb3VudHMgdGhlIG51bWJlciBvZiBiaXRzIHNldCBpbiBuIiwgOmFyZ2xpc3RzIChbdl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBiaXQtY291bnRcbiBcIkNvdW50cyB0aGUgbnVtYmVyIG9mIGJpdHMgc2V0IGluIG5cIlxuIFt2XVxuIChsZXRcbiAgW3ZcbiAgICgtIHYgKGJpdC1hbmQgKGJpdC1zaGlmdC1yaWdodCB2IDEpIDE0MzE2NTU3NjUpKVxuICAgdlxuICAgKCsgKGJpdC1hbmQgdiA4NTg5OTM0NTkpIChiaXQtYW5kIChiaXQtc2hpZnQtcmlnaHQgdiAyKSA4NTg5OTM0NTkpKV1cbiAgKGJpdC1zaGlmdC1yaWdodFxuICAgKCogKGJpdC1hbmQgKCsgdiAoYml0LXNoaWZ0LXJpZ2h0IHYgNCkpIDI1MjY0NTEzNSkgMTY4NDMwMDkpXG4gICAyNCkpKVxuIn0gezpzeW0gc29ydCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBzb3J0ZWQgc2VxdWVuY2Ugb2YgdGhlIGl0ZW1zIGluIGNvbGwuIENvbXAgY2FuIGJlXG4gICBib29sZWFuLXZhbHVlZCBjb21wYXJpc29uIGZ1bmN0aW9uLCBvciBhIC0vMC8rIHZhbHVlZCBjb21wYXJhdG9yLlxuICAgQ29tcCBkZWZhdWx0cyB0byBjb21wYXJlLiIsIDphcmdsaXN0cyBbW2NvbGxdIFtjb21wIGNvbGxdXX0sIDpzb3VyY2UgIihkZWZuXG4gc29ydFxuIFwiUmV0dXJucyBhIHNvcnRlZCBzZXF1ZW5jZSBvZiB0aGUgaXRlbXMgaW4gY29sbC4gQ29tcCBjYW4gYmVcXG4gICBib29sZWFuLXZhbHVlZCBjb21wYXJpc29uIGZ1bmN0aW9uLCBvciBhIC0vMC8rIHZhbHVlZCBjb21wYXJhdG9yLlxcbiAgIENvbXAgZGVmYXVsdHMgdG8gY29tcGFyZS5cIlxuIChbY29sbF0gKHNvcnQgY29tcGFyZSBjb2xsKSlcbiAoW2NvbXAgY29sbF1cbiAgKGlmXG4gICAoc2VxIGNvbGwpXG4gICAobGV0XG4gICAgW2EgKHRvLWFycmF5IGNvbGwpXVxuICAgIChnYXJyYXkvc3RhYmxlU29ydCBhIChmbi0+Y29tcGFyYXRvciBjb21wKSlcbiAgICAod2l0aC1tZXRhIChzZXEgYSkgKG1ldGEgY29sbCkpKVxuICAgKCkpKSlcbiJ9IHs6c3ltIHVuY2hlY2tlZC1pbmMtaW50LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIHVuY2hlY2tlZC1pbmMtaW50IFt4XSAoY2xqcy5jb3JlL3VuY2hlY2tlZC1pbmMtaW50IHgpKVxuIn0gezpzeW0gLWNvbXBhcmUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbmVnYXRpdmUgbnVtYmVyLCB6ZXJvLCBvciBhIHBvc2l0aXZlIG51bWJlciB3aGVuIHggaXMgbG9naWNhbGx5XG4gICAgICdsZXNzIHRoYW4nLCAnZXF1YWwgdG8nLCBvciAnZ3JlYXRlciB0aGFuJyB5LiIsIDphcmdsaXN0cyAoW3ggeV0pfSwgOnByb3RvY29sIElDb21wYXJhYmxlfSB7OnN5bSBtYXAtaW5kZXhlZCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIGNvbnNpc3Rpbmcgb2YgdGhlIHJlc3VsdCBvZiBhcHBseWluZyBmIHRvIDBcbiAgYW5kIHRoZSBmaXJzdCBpdGVtIG9mIGNvbGwsIGZvbGxvd2VkIGJ5IGFwcGx5aW5nIGYgdG8gMSBhbmQgdGhlIHNlY29uZFxuICBpdGVtIGluIGNvbGwsIGV0YywgdW50aWwgY29sbCBpcyBleGhhdXN0ZWQuIFRodXMgZnVuY3Rpb24gZiBzaG91bGRcbiAgYWNjZXB0IDIgYXJndW1lbnRzLCBpbmRleCBhbmQgaXRlbS4gUmV0dXJucyBhIHN0YXRlZnVsIHRyYW5zZHVjZXIgd2hlblxuICBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLiIsIDphcmdsaXN0cyBbW2ZdIFtmIGNvbGxdXX0sIDpzb3VyY2UgIihkZWZuXG4gbWFwLWluZGV4ZWRcbiBcIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIGNvbnNpc3Rpbmcgb2YgdGhlIHJlc3VsdCBvZiBhcHBseWluZyBmIHRvIDBcXG4gIGFuZCB0aGUgZmlyc3QgaXRlbSBvZiBjb2xsLCBmb2xsb3dlZCBieSBhcHBseWluZyBmIHRvIDEgYW5kIHRoZSBzZWNvbmRcXG4gIGl0ZW0gaW4gY29sbCwgZXRjLCB1bnRpbCBjb2xsIGlzIGV4aGF1c3RlZC4gVGh1cyBmdW5jdGlvbiBmIHNob3VsZFxcbiAgYWNjZXB0IDIgYXJndW1lbnRzLCBpbmRleCBhbmQgaXRlbS4gUmV0dXJucyBhIHN0YXRlZnVsIHRyYW5zZHVjZXIgd2hlblxcbiAgbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC5cIlxuIChbZl1cbiAgKGZuXG4gICBbcmZdXG4gICAobGV0XG4gICAgW2kgKHZvbGF0aWxlISAtMSldXG4gICAgKGZuXG4gICAgIChbXSAocmYpKVxuICAgICAoW3Jlc3VsdF0gKHJmIHJlc3VsdCkpXG4gICAgIChbcmVzdWx0IGlucHV0XSAocmYgcmVzdWx0IChmICh2c3dhcCEgaSBpbmMpIGlucHV0KSkpKSkpKVxuIChbZiBjb2xsXVxuICAobGV0Zm5cbiAgIFsobWFwaVxuICAgICBbaWR4IGNvbGxdXG4gICAgIChsYXp5LXNlcVxuICAgICAgKHdoZW4tbGV0XG4gICAgICAgW3MgKHNlcSBjb2xsKV1cbiAgICAgICAoaWZcbiAgICAgICAgKGNodW5rZWQtc2VxPyBzKVxuICAgICAgICAobGV0XG4gICAgICAgICBbYyAoY2h1bmstZmlyc3Qgcykgc2l6ZSAoY291bnQgYykgYiAoY2h1bmstYnVmZmVyIHNpemUpXVxuICAgICAgICAgKGRvdGltZXMgW2kgc2l6ZV0gKGNodW5rLWFwcGVuZCBiIChmICgrIGlkeCBpKSAoLW50aCBjIGkpKSkpXG4gICAgICAgICAoY2h1bmstY29ucyAoY2h1bmsgYikgKG1hcGkgKCsgaWR4IHNpemUpIChjaHVuay1yZXN0IHMpKSkpXG4gICAgICAgIChjb25zIChmIGlkeCAoZmlyc3QgcykpIChtYXBpIChpbmMgaWR4KSAocmVzdCBzKSkpKSkpKV1cbiAgIChtYXBpIDAgY29sbCkpKSlcbiJ9IHs6c3ltIGFycmF5LWxpc3QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmbiBhcnJheS1saXN0IFtdIChBcnJheUxpc3QuIChhcnJheSkpKVxuIn0gezpzeW0gcmFuZC1udGgsIDptZXRhIHs6ZG9jICJSZXR1cm4gYSByYW5kb20gZWxlbWVudCBvZiB0aGUgKHNlcXVlbnRpYWwpIGNvbGxlY3Rpb24uIFdpbGwgaGF2ZVxuICB0aGUgc2FtZSBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3MgYXMgbnRoIGZvciB0aGUgZ2l2ZW5cbiAgY29sbGVjdGlvbi4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIHJhbmQtbnRoXG4gXCJSZXR1cm4gYSByYW5kb20gZWxlbWVudCBvZiB0aGUgKHNlcXVlbnRpYWwpIGNvbGxlY3Rpb24uIFdpbGwgaGF2ZVxcbiAgdGhlIHNhbWUgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIGFzIG50aCBmb3IgdGhlIGdpdmVuXFxuICBjb2xsZWN0aW9uLlwiXG4gW2NvbGxdXG4gKG50aCBjb2xsIChyYW5kLWludCAoY291bnQgY29sbCkpKSlcbiJ9IHs6c3ltIGNvbXAsIDptZXRhIHs6ZG9jICJUYWtlcyBhIHNldCBvZiBmdW5jdGlvbnMgYW5kIHJldHVybnMgYSBmbiB0aGF0IGlzIHRoZSBjb21wb3NpdGlvblxuICBvZiB0aG9zZSBmbnMuICBUaGUgcmV0dXJuZWQgZm4gdGFrZXMgYSB2YXJpYWJsZSBudW1iZXIgb2YgYXJncyxcbiAgYXBwbGllcyB0aGUgcmlnaHRtb3N0IG9mIGZucyB0byB0aGUgYXJncywgdGhlIG5leHRcbiAgZm4gKHJpZ2h0LXRvLWxlZnQpIHRvIHRoZSByZXN1bHQsIGV0Yy4iLCA6YXJnbGlzdHMgW1tdIFtmXSBbZiBnXSBbZiBnIGhdIFtmMSBmMiBmMyAmIGZzXV19LCA6c291cmNlICIoZGVmblxuIGNvbXBcbiBcIlRha2VzIGEgc2V0IG9mIGZ1bmN0aW9ucyBhbmQgcmV0dXJucyBhIGZuIHRoYXQgaXMgdGhlIGNvbXBvc2l0aW9uXFxuICBvZiB0aG9zZSBmbnMuICBUaGUgcmV0dXJuZWQgZm4gdGFrZXMgYSB2YXJpYWJsZSBudW1iZXIgb2YgYXJncyxcXG4gIGFwcGxpZXMgdGhlIHJpZ2h0bW9zdCBvZiBmbnMgdG8gdGhlIGFyZ3MsIHRoZSBuZXh0XFxuICBmbiAocmlnaHQtdG8tbGVmdCkgdG8gdGhlIHJlc3VsdCwgZXRjLlwiXG4gKFtdIGlkZW50aXR5KVxuIChbZl0gZilcbiAoW2YgZ11cbiAgKGZuXG4gICAoW10gKGYgKGcpKSlcbiAgIChbeF0gKGYgKGcgeCkpKVxuICAgKFt4IHldIChmIChnIHggeSkpKVxuICAgKFt4IHkgel0gKGYgKGcgeCB5IHopKSlcbiAgIChbeCB5IHogJiBhcmdzXSAoZiAoYXBwbHkgZyB4IHkgeiBhcmdzKSkpKSlcbiAoW2YgZyBoXVxuICAoZm5cbiAgIChbXSAoZiAoZyAoaCkpKSlcbiAgIChbeF0gKGYgKGcgKGggeCkpKSlcbiAgIChbeCB5XSAoZiAoZyAoaCB4IHkpKSkpXG4gICAoW3ggeSB6XSAoZiAoZyAoaCB4IHkgeikpKSlcbiAgIChbeCB5IHogJiBhcmdzXSAoZiAoZyAoYXBwbHkgaCB4IHkgeiBhcmdzKSkpKSkpXG4gKFtmMSBmMiBmMyAmIGZzXVxuICAobGV0XG4gICBbZnMgKHJldmVyc2UgKGxpc3QqIGYxIGYyIGYzIGZzKSldXG4gICAoZm5cbiAgICBbJiBhcmdzXVxuICAgIChsb29wXG4gICAgIFtyZXQgKGFwcGx5IChmaXJzdCBmcykgYXJncykgZnMgKG5leHQgZnMpXVxuICAgICAoaWYgZnMgKHJlY3VyICgoZmlyc3QgZnMpIHJldCkgKG5leHQgZnMpKSByZXQpKSkpKSlcbiJ9IHs6c3ltIGFycmF5LWNodW5rLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW2Fycl0gW2FyciBvZmZdIFthcnIgb2ZmIGVuZF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBhcnJheS1jaHVua1xuIChbYXJyXSAoQXJyYXlDaHVuay4gYXJyIDAgKGFsZW5ndGggYXJyKSkpXG4gKFthcnIgb2ZmXSAoQXJyYXlDaHVuay4gYXJyIG9mZiAoYWxlbmd0aCBhcnIpKSlcbiAoW2FyciBvZmYgZW5kXSAoQXJyYXlDaHVuay4gYXJyIG9mZiBlbmQpKSlcbiJ9IHs6c3ltIGRpc3BhdGNoLWZuLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBtdWx0aW1ldGhvZCwgcmV0dXJuIGl0cyBkaXNwYXRjaC1mbi4iLCA6YXJnbGlzdHMgKFttdWx0aWZuXSl9LCA6c291cmNlICIoZGVmblxuIGRpc3BhdGNoLWZuXG4gXCJHaXZlbiBhIG11bHRpbWV0aG9kLCByZXR1cm4gaXRzIGRpc3BhdGNoLWZuLlwiXG4gW211bHRpZm5dXG4gKC1kaXNwYXRjaC1mbiBtdWx0aWZuKSlcbiJ9IHs6c3ltIGJpdC1zaGlmdC1yaWdodC16ZXJvLWZpbGwsIDptZXRhIHs6ZG9jICJERVBSRUNBVEVEOiBCaXR3aXNlIHNoaWZ0IHJpZ2h0IHdpdGggemVybyBmaWxsIiwgOmFyZ2xpc3RzIChbeCBuXSl9LCA6c291cmNlICIoZGVmblxuIGJpdC1zaGlmdC1yaWdodC16ZXJvLWZpbGxcbiBcIkRFUFJFQ0FURUQ6IEJpdHdpc2Ugc2hpZnQgcmlnaHQgd2l0aCB6ZXJvIGZpbGxcIlxuIFt4IG5dXG4gKGNsanMuY29yZS9iaXQtc2hpZnQtcmlnaHQtemVyby1maWxsIHggbikpXG4ifSB7OnN5bSAtYXMtdHJhbnNpZW50LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG5ldywgdHJhbnNpZW50IHZlcnNpb24gb2YgdGhlIGNvbGxlY3Rpb24sIGluIGNvbnN0YW50IHRpbWUuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnByb3RvY29sIElFZGl0YWJsZUNvbGxlY3Rpb259IHs6c3ltIGRvcnVuLCA6bWV0YSB7OmRvYyAiV2hlbiBsYXp5IHNlcXVlbmNlcyBhcmUgcHJvZHVjZWQgdmlhIGZ1bmN0aW9ucyB0aGF0IGhhdmUgc2lkZVxuICBlZmZlY3RzLCBhbnkgZWZmZWN0cyBvdGhlciB0aGFuIHRob3NlIG5lZWRlZCB0byBwcm9kdWNlIHRoZSBmaXJzdFxuICBlbGVtZW50IGluIHRoZSBzZXEgZG8gbm90IG9jY3VyIHVudGlsIHRoZSBzZXEgaXMgY29uc3VtZWQuIGRvcnVuIGNhblxuICBiZSB1c2VkIHRvIGZvcmNlIGFueSBlZmZlY3RzLiBXYWxrcyB0aHJvdWdoIHRoZSBzdWNjZXNzaXZlIG5leHRzIG9mXG4gIHRoZSBzZXEsIGRvZXMgbm90IHJldGFpbiB0aGUgaGVhZCBhbmQgcmV0dXJucyBuaWwuIiwgOmFyZ2xpc3RzIFtbY29sbF0gW24gY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBkb3J1blxuIFwiV2hlbiBsYXp5IHNlcXVlbmNlcyBhcmUgcHJvZHVjZWQgdmlhIGZ1bmN0aW9ucyB0aGF0IGhhdmUgc2lkZVxcbiAgZWZmZWN0cywgYW55IGVmZmVjdHMgb3RoZXIgdGhhbiB0aG9zZSBuZWVkZWQgdG8gcHJvZHVjZSB0aGUgZmlyc3RcXG4gIGVsZW1lbnQgaW4gdGhlIHNlcSBkbyBub3Qgb2NjdXIgdW50aWwgdGhlIHNlcSBpcyBjb25zdW1lZC4gZG9ydW4gY2FuXFxuICBiZSB1c2VkIHRvIGZvcmNlIGFueSBlZmZlY3RzLiBXYWxrcyB0aHJvdWdoIHRoZSBzdWNjZXNzaXZlIG5leHRzIG9mXFxuICB0aGUgc2VxLCBkb2VzIG5vdCByZXRhaW4gdGhlIGhlYWQgYW5kIHJldHVybnMgbmlsLlwiXG4gKFtjb2xsXSAod2hlbi1sZXQgW3MgKHNlcSBjb2xsKV0gKHJlY3VyIChuZXh0IHMpKSkpXG4gKFtuIGNvbGxdXG4gICh3aGVuIChhbmQgKHNlcSBjb2xsKSAocG9zPyBuKSkgKHJlY3VyIChkZWMgbikgKG5leHQgY29sbCkpKSkpXG4ifSB7OnN5bSBwci1zZXF1ZW50aWFsLXdyaXRlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt3cml0ZXIgcHJpbnQtb25lIGJlZ2luIHNlcCBlbmQgb3B0cyBjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIHByLXNlcXVlbnRpYWwtd3JpdGVyXG4gW3dyaXRlciBwcmludC1vbmUgYmVnaW4gc2VwIGVuZCBvcHRzIGNvbGxdXG4gKGJpbmRpbmdcbiAgWypwcmludC1sZXZlbCogKHdoZW4tbm90IChuaWw/ICpwcmludC1sZXZlbCopIChkZWMgKnByaW50LWxldmVsKikpXVxuICAoaWZcbiAgIChhbmQgKG5vdCAobmlsPyAqcHJpbnQtbGV2ZWwqKSkgKG5lZz8gKnByaW50LWxldmVsKikpXG4gICAoLXdyaXRlIHdyaXRlciBcIiNcIilcbiAgIChkb1xuICAgICgtd3JpdGUgd3JpdGVyIGJlZ2luKVxuICAgIChpZlxuICAgICAoemVybz8gKDpwcmludC1sZW5ndGggb3B0cykpXG4gICAgICh3aGVuIChzZXEgY29sbCkgKC13cml0ZSB3cml0ZXIgKG9yICg6bW9yZS1tYXJrZXIgb3B0cykgXCIuLi5cIikpKVxuICAgICAoZG9cbiAgICAgICh3aGVuIChzZXEgY29sbCkgKHByaW50LW9uZSAoZmlyc3QgY29sbCkgd3JpdGVyIG9wdHMpKVxuICAgICAgKGxvb3BcbiAgICAgICBbY29sbCAobmV4dCBjb2xsKSBuIChkZWMgKDpwcmludC1sZW5ndGggb3B0cykpXVxuICAgICAgIChpZlxuICAgICAgICAoYW5kIGNvbGwgKG9yIChuaWw/IG4pIChub3QgKHplcm8/IG4pKSkpXG4gICAgICAgIChkb1xuICAgICAgICAgKC13cml0ZSB3cml0ZXIgc2VwKVxuICAgICAgICAgKHByaW50LW9uZSAoZmlyc3QgY29sbCkgd3JpdGVyIG9wdHMpXG4gICAgICAgICAocmVjdXIgKG5leHQgY29sbCkgKGRlYyBuKSkpXG4gICAgICAgICh3aGVuXG4gICAgICAgICAoYW5kIChzZXEgY29sbCkgKHplcm8/IG4pKVxuICAgICAgICAgKC13cml0ZSB3cml0ZXIgc2VwKVxuICAgICAgICAgKC13cml0ZSB3cml0ZXIgKG9yICg6bW9yZS1tYXJrZXIgb3B0cykgXCIuLi5cIikpKSkpKSlcbiAgICAoLXdyaXRlIHdyaXRlciBlbmQpKSkpKVxuIn0gezpzeW0gc2ltcGxlLXN5bWJvbD8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IGlzIGEgc3ltYm9sIHdpdGhvdXQgYSBuYW1lc3BhY2UiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHNpbXBsZS1zeW1ib2w/XG4gXCJSZXR1cm4gdHJ1ZSBpZiB4IGlzIGEgc3ltYm9sIHdpdGhvdXQgYSBuYW1lc3BhY2VcIlxuIFt4XVxuIChhbmQgKHN5bWJvbD8geCkgKG5pbD8gKG5hbWVzcGFjZSB4KSkpKVxuIn0gezpzeW0gSUluZGV4ZWQsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgY29sbGVjdGlvbnMgdG8gcHJvdmlkZSBpbmRleGVkLWJhc2VkIGFjY2VzcyB0byB0aGVpciBpdGVtcy4ifSwgOm1ldGhvZHMgKC1udGgpfSB7OnN5bSBkaXNqLCA6bWV0YSB7OmRvYyAiZGlzaltvaW5dLiBSZXR1cm5zIGEgbmV3IHNldCBvZiB0aGUgc2FtZSAoaGFzaGVkL3NvcnRlZCkgdHlwZSwgdGhhdFxuICBkb2VzIG5vdCBjb250YWluIGtleShzKS4iLCA6YXJnbGlzdHMgW1tjb2xsXSBbY29sbCBrXSBbY29sbCBrICYga3NdXX0sIDpzb3VyY2UgIihkZWZuXG4gZGlzalxuIFwiZGlzaltvaW5dLiBSZXR1cm5zIGEgbmV3IHNldCBvZiB0aGUgc2FtZSAoaGFzaGVkL3NvcnRlZCkgdHlwZSwgdGhhdFxcbiAgZG9lcyBub3QgY29udGFpbiBrZXkocykuXCJcbiAoW2NvbGxdIGNvbGwpXG4gKFtjb2xsIGtdICh3aGVuLW5vdCAobmlsPyBjb2xsKSAoLWRpc2pvaW4gY29sbCBrKSkpXG4gKFtjb2xsIGsgJiBrc11cbiAgKHdoZW4tbm90XG4gICAobmlsPyBjb2xsKVxuICAgKGxldFxuICAgIFtyZXQgKGRpc2ogY29sbCBrKV1cbiAgICAoaWYga3MgKHJlY3VyIHJldCAoZmlyc3Qga3MpIChuZXh0IGtzKSkgcmV0KSkpKSlcbiJ9IHs6c3ltIElQcmludFdpdGhXcml0ZXIsIDptZXRhIHs6ZG9jICJUaGUgb2xkIElQcmludGFibGUgcHJvdG9jb2wncyBpbXBsZW1lbnRhdGlvbiBjb25zaXN0ZWQgb2YgYnVpbGRpbmcgYSBnaWFudFxuICAgbGlzdCBvZiBzdHJpbmdzIHRvIGNvbmNhdGVuYXRlLiAgVGhpcyBpbnZvbHZlZCBsb3RzIG9mIGNvbmNhdCBjYWxscyxcbiAgIGludGVybWVkaWF0ZSB2ZWN0b3JzLCBhbmQgbGF6eS1zZXFzLCBhbmQgd2FzIHZlcnkgc2xvdyBpbiBzb21lIG9sZGVyIEpTXG4gICBlbmdpbmVzLiAgSVByaW50V2l0aFdyaXRlciBpbXBsZW1lbnRzIHByaW50aW5nIHZpYSB0aGUgSVdyaXRlciBwcm90b2NvbCwgc28gaXRcbiAgIGJlIGltcGxlbWVudGVkIGVmZmljaWVudGx5IGluIHRlcm1zIG9mIGUuZy4gYSBTdHJpbmdCdWZmZXIgYXBwZW5kLiJ9LCA6bWV0aG9kcyAoLXByLXdyaXRlcil9IHs6c3ltIElWZWN0b3IsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgYWRkaW5nIHZlY3RvciBmdW5jdGlvbmFsaXR5IHRvIGNvbGxlY3Rpb25zLiJ9LCA6bWV0aG9kcyAoLWFzc29jLW4pfSB7OnN5bSBJSXRlcmFibGUsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgaXRlcmF0aW5nIG92ZXIgYSBjb2xsZWN0aW9uLiJ9LCA6bWV0aG9kcyAoLWl0ZXJhdG9yKX0gezpzeW0gZXZhbCwgOm1ldGEgezpkb2MgIkV2YWx1YXRlcyB0aGUgZm9ybSBkYXRhIHN0cnVjdHVyZSAobm90IHRleHQhKSBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LlxuICBEZWxlZ2F0ZXMgdG8gY2xqcy5jb3JlLypldmFsKi4gSW50ZW5kZWQgZm9yIHVzZSBpbiBzZWxmLWhvc3RlZCBDbG9qdXJlU2NyaXB0LFxuICB3aGljaCBzZXRzIHVwIGFuIGltcGxlbWVudGF0aW9uIG9mIGNsanMuY29yZS8qZXZhbCogZm9yIHRoYXQgZW52aXJvbm1lbnQuIiwgOmFyZ2xpc3RzIChbZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBldmFsXG4gXCJFdmFsdWF0ZXMgdGhlIGZvcm0gZGF0YSBzdHJ1Y3R1cmUgKG5vdCB0ZXh0ISkgYW5kIHJldHVybnMgdGhlIHJlc3VsdC5cXG4gIERlbGVnYXRlcyB0byBjbGpzLmNvcmUvKmV2YWwqLiBJbnRlbmRlZCBmb3IgdXNlIGluIHNlbGYtaG9zdGVkIENsb2p1cmVTY3JpcHQsXFxuICB3aGljaCBzZXRzIHVwIGFuIGltcGxlbWVudGF0aW9uIG9mIGNsanMuY29yZS8qZXZhbCogZm9yIHRoYXQgZW52aXJvbm1lbnQuXCJcbiBbZm9ybV1cbiAoKmV2YWwqIGZvcm0pKVxuIn0gezpzeW0gY29ucywgOm1ldGEgezpkb2MgIlJldHVybnMgYSBuZXcgc2VxIHdoZXJlIHggaXMgdGhlIGZpcnN0IGVsZW1lbnQgYW5kIGNvbGwgaXMgdGhlIHJlc3QuIiwgOmFyZ2xpc3RzIChbeCBjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIGNvbnNcbiBcIlJldHVybnMgYSBuZXcgc2VxIHdoZXJlIHggaXMgdGhlIGZpcnN0IGVsZW1lbnQgYW5kIGNvbGwgaXMgdGhlIHJlc3QuXCJcbiBbeCBjb2xsXVxuIChjb25kXG4gIChuaWw/IGNvbGwpXG4gIChMaXN0LiBuaWwgeCBuaWwgMSBuaWwpXG4gIChpbXBsZW1lbnRzPyBJU2VxIGNvbGwpXG4gIChDb25zLiBuaWwgeCBjb2xsIG5pbClcbiAgOmRlZmF1bHRcbiAgKENvbnMuIG5pbCB4IChzZXEgY29sbCkgbmlsKSkpXG4ifSB7OnN5bSBmbG9hdHMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gZmxvYXRzIFt4XSB4KVxuIn0gezpzeW0gcG9zPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiBudW0gaXMgZ3JlYXRlciB0aGFuIHplcm8sIGVsc2UgZmFsc2UiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHBvcz9cbiBcIlJldHVybnMgdHJ1ZSBpZiBudW0gaXMgZ3JlYXRlciB0aGFuIHplcm8sIGVsc2UgZmFsc2VcIlxuIFt4XVxuIChjbGpzLmNvcmUvcG9zPyB4KSlcbiJ9IHs6c3ltIGZuaWwsIDptZXRhIHs6ZG9jICJUYWtlcyBhIGZ1bmN0aW9uIGYsIGFuZCByZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBjYWxscyBmLCByZXBsYWNpbmdcbiAgYSBuaWwgZmlyc3QgYXJndW1lbnQgdG8gZiB3aXRoIHRoZSBzdXBwbGllZCB2YWx1ZSB4LiBIaWdoZXIgYXJpdHlcbiAgdmVyc2lvbnMgY2FuIHJlcGxhY2UgYXJndW1lbnRzIGluIHRoZSBzZWNvbmQgYW5kIHRoaXJkXG4gIHBvc2l0aW9ucyAoeSwgeikuIE5vdGUgdGhhdCB0aGUgZnVuY3Rpb24gZiBjYW4gdGFrZSBhbnkgbnVtYmVyIG9mXG4gIGFyZ3VtZW50cywgbm90IGp1c3QgdGhlIG9uZShzKSBiZWluZyBuaWwtcGF0Y2hlZC4iLCA6YXJnbGlzdHMgW1tmIHhdIFtmIHggeV0gW2YgeCB5IHpdXX0sIDpzb3VyY2UgIihkZWZuXG4gZm5pbFxuIFwiVGFrZXMgYSBmdW5jdGlvbiBmLCBhbmQgcmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgY2FsbHMgZiwgcmVwbGFjaW5nXFxuICBhIG5pbCBmaXJzdCBhcmd1bWVudCB0byBmIHdpdGggdGhlIHN1cHBsaWVkIHZhbHVlIHguIEhpZ2hlciBhcml0eVxcbiAgdmVyc2lvbnMgY2FuIHJlcGxhY2UgYXJndW1lbnRzIGluIHRoZSBzZWNvbmQgYW5kIHRoaXJkXFxuICBwb3NpdGlvbnMgKHksIHopLiBOb3RlIHRoYXQgdGhlIGZ1bmN0aW9uIGYgY2FuIHRha2UgYW55IG51bWJlciBvZlxcbiAgYXJndW1lbnRzLCBub3QganVzdCB0aGUgb25lKHMpIGJlaW5nIG5pbC1wYXRjaGVkLlwiXG4gKFtmIHhdXG4gIChmblxuICAgKFthXSAoZiAoaWYgKG5pbD8gYSkgeCBhKSkpXG4gICAoW2EgYl0gKGYgKGlmIChuaWw/IGEpIHggYSkgYikpXG4gICAoW2EgYiBjXSAoZiAoaWYgKG5pbD8gYSkgeCBhKSBiIGMpKVxuICAgKFthIGIgYyAmIGRzXSAoYXBwbHkgZiAoaWYgKG5pbD8gYSkgeCBhKSBiIGMgZHMpKSkpXG4gKFtmIHggeV1cbiAgKGZuXG4gICAoW2EgYl0gKGYgKGlmIChuaWw/IGEpIHggYSkgKGlmIChuaWw/IGIpIHkgYikpKVxuICAgKFthIGIgY10gKGYgKGlmIChuaWw/IGEpIHggYSkgKGlmIChuaWw/IGIpIHkgYikgYykpXG4gICAoW2EgYiBjICYgZHNdIChhcHBseSBmIChpZiAobmlsPyBhKSB4IGEpIChpZiAobmlsPyBiKSB5IGIpIGMgZHMpKSkpXG4gKFtmIHggeSB6XVxuICAoZm5cbiAgIChbYSBiXSAoZiAoaWYgKG5pbD8gYSkgeCBhKSAoaWYgKG5pbD8gYikgeSBiKSkpXG4gICAoW2EgYiBjXSAoZiAoaWYgKG5pbD8gYSkgeCBhKSAoaWYgKG5pbD8gYikgeSBiKSAoaWYgKG5pbD8gYykgeiBjKSkpXG4gICAoW2EgYiBjICYgZHNdXG4gICAgKGFwcGx5XG4gICAgIGZcbiAgICAgKGlmIChuaWw/IGEpIHggYSlcbiAgICAgKGlmIChuaWw/IGIpIHkgYilcbiAgICAgKGlmIChuaWw/IGMpIHogYylcbiAgICAgZHMpKSkpKVxuIn0gezpzeW0gbWVyZ2Utd2l0aCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBtYXAgdGhhdCBjb25zaXN0cyBvZiB0aGUgcmVzdCBvZiB0aGUgbWFwcyBjb25qLWVkIG9udG9cbiAgdGhlIGZpcnN0LiAgSWYgYSBrZXkgb2NjdXJzIGluIG1vcmUgdGhhbiBvbmUgbWFwLCB0aGUgbWFwcGluZyhzKVxuICBmcm9tIHRoZSBsYXR0ZXIgKGxlZnQtdG8tcmlnaHQpIHdpbGwgYmUgY29tYmluZWQgd2l0aCB0aGUgbWFwcGluZyBpblxuICB0aGUgcmVzdWx0IGJ5IGNhbGxpbmcgKGYgdmFsLWluLXJlc3VsdCB2YWwtaW4tbGF0dGVyKS4iLCA6YXJnbGlzdHMgKFtmICYgbWFwc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBtZXJnZS13aXRoXG4gXCJSZXR1cm5zIGEgbWFwIHRoYXQgY29uc2lzdHMgb2YgdGhlIHJlc3Qgb2YgdGhlIG1hcHMgY29uai1lZCBvbnRvXFxuICB0aGUgZmlyc3QuICBJZiBhIGtleSBvY2N1cnMgaW4gbW9yZSB0aGFuIG9uZSBtYXAsIHRoZSBtYXBwaW5nKHMpXFxuICBmcm9tIHRoZSBsYXR0ZXIgKGxlZnQtdG8tcmlnaHQpIHdpbGwgYmUgY29tYmluZWQgd2l0aCB0aGUgbWFwcGluZyBpblxcbiAgdGhlIHJlc3VsdCBieSBjYWxsaW5nIChmIHZhbC1pbi1yZXN1bHQgdmFsLWluLWxhdHRlcikuXCJcbiBbZiAmIG1hcHNdXG4gKHdoZW5cbiAgKHNvbWUgaWRlbnRpdHkgbWFwcylcbiAgKGxldFxuICAgW21lcmdlLWVudHJ5XG4gICAgKGZuXG4gICAgIFttIGVdXG4gICAgIChsZXRcbiAgICAgIFtrIChrZXkgZSkgdiAodmFsIGUpXVxuICAgICAgKGlmIChjb250YWlucz8gbSBrKSAoYXNzb2MgbSBrIChmIChnZXQgbSBrKSB2KSkgKGFzc29jIG0gayB2KSkpKVxuICAgIG1lcmdlMlxuICAgIChmbiBbbTEgbTJdIChyZWR1Y2UgbWVyZ2UtZW50cnkgKG9yIG0xIHt9KSAoc2VxIG0yKSkpXVxuICAgKHJlZHVjZSBtZXJnZTIgbWFwcykpKSlcbiJ9IHs6c3ltIG50aHJlc3QsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBudGggcmVzdCBvZiBjb2xsLCBjb2xsIHdoZW4gbiBpcyAwLiIsIDphcmdsaXN0cyAoW2NvbGwgbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBudGhyZXN0XG4gXCJSZXR1cm5zIHRoZSBudGggcmVzdCBvZiBjb2xsLCBjb2xsIHdoZW4gbiBpcyAwLlwiXG4gW2NvbGwgbl1cbiAobG9vcFxuICBbbiBuIHhzIGNvbGxdXG4gIChpZi1sZXQgW3hzIChhbmQgKHBvcz8gbikgKHNlcSB4cykpXSAocmVjdXIgKGRlYyBuKSAocmVzdCB4cykpIHhzKSkpXG4ifSB7OnN5bSAqd2Fybi1vbi1pbmZlciosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICp3YXJuLW9uLWluZmVyKiBmYWxzZSlcbiJ9IHs6c3ltIC1maW5kLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbWFwIGVudHJ5IGZvciBrZXksIG9yIG5pbCBpZiBrZXkgbm90IHByZXNlbnQuIiwgOmFyZ2xpc3RzIChbY29sbCBrXSl9LCA6cHJvdG9jb2wgSUZpbmR9IHs6c3ltIHNlcXVlbnRpYWw/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIGNvbGwgc2F0aXNmaWVzIElTZXF1ZW50aWFsIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzZXF1ZW50aWFsP1xuIFwiUmV0dXJucyB0cnVlIGlmIGNvbGwgc2F0aXNmaWVzIElTZXF1ZW50aWFsXCJcbiBbeF1cbiAoc2F0aXNmaWVzPyBJU2VxdWVudGlhbCB4KSlcbiJ9IHs6c3ltIExvbmdJbXBsLCA6bWV0YSB7OmRvYyAiSU5URVJOQUw6IGRvIG5vdCB1c2UifSwgOnNvdXJjZSAiKGRlZiBMb25nSW1wbCBnb29nLm1hdGguTG9uZylcbiJ9IHs6c3ltIG0zLW1peC1IMSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtoMSBrMV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtMy1taXgtSDFcbiBbaDEgazFdXG4gKGludFxuICAoLT5cbiAgIChpbnQgaDEpXG4gICAoYml0LXhvciAoaW50IGsxKSlcbiAgIChpbnQtcm90YXRlLWxlZnQgMTMpXG4gICAoaW11bCA1KVxuICAgKCsgKGludCAzODY0MjkyMTk2KSkpKSlcbiJ9IHs6c3ltIHByaW0tc2VxLCA6bWV0YSB7OmRvYyAiQ3JlYXRlIHNlcSBmcm9tIGEgcHJpbWl0aXZlIEphdmFTY3JpcHQgQXJyYXktbGlrZS4iLCA6YXJnbGlzdHMgW1twcmltXSBbcHJpbSBpXV19LCA6c291cmNlICIoZGVmblxuIHByaW0tc2VxXG4gXCJDcmVhdGUgc2VxIGZyb20gYSBwcmltaXRpdmUgSmF2YVNjcmlwdCBBcnJheS1saWtlLlwiXG4gKFtwcmltXSAocHJpbS1zZXEgcHJpbSAwKSlcbiAoW3ByaW0gaV0gKHdoZW4gKDwgaSAoYWxlbmd0aCBwcmltKSkgKEluZGV4ZWRTZXEuIHByaW0gaSBuaWwpKSkpXG4ifSB7OnN5bSAqcHJpbnQtbGV2ZWwqLCA6bWV0YSB7OmRvYyAiKnByaW50LWxldmVsKiBjb250cm9scyBob3cgbWFueSBsZXZlbHMgZGVlcCB0aGUgcHJpbnRlciB3aWxsXG4gIHByaW50IG5lc3RlZCBvYmplY3RzLiBJZiBpdCBpcyBib3VuZCB0byBsb2dpY2FsIGZhbHNlLCB0aGVyZSBpcyBub1xuICBsaW1pdC4gT3RoZXJ3aXNlLCBpdCBtdXN0IGJlIGJvdW5kIHRvIGFuIGludGVnZXIgaW5kaWNhdGluZyB0aGUgbWF4aW11bVxuICBsZXZlbCB0byBwcmludC4gRWFjaCBhcmd1bWVudCB0byBwcmludCBpcyBhdCBsZXZlbCAwOyBpZiBhbiBhcmd1bWVudCBpcyBhXG4gIGNvbGxlY3Rpb24sIGl0cyBpdGVtcyBhcmUgYXQgbGV2ZWwgMTsgYW5kIHNvIG9uLiBJZiBhbiBvYmplY3QgaXMgYVxuICBjb2xsZWN0aW9uIGFuZCBpcyBhdCBhIGxldmVsIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgdmFsdWUgYm91bmQgdG9cbiAgKnByaW50LWxldmVsKiwgdGhlIHByaW50ZXIgcHJpbnRzICcjJyB0byByZXByZXNlbnQgaXQuIFRoZSByb290IGJpbmRpbmdcbiAgaXMgbmlsIGluZGljYXRpbmcgbm8gbGltaXQuIn0sIDpzb3VyY2UgIihkZWYgKnByaW50LWxldmVsKiBuaWwpXG4ifSB7OnN5bSBzaHVmZmxlLCA6bWV0YSB7OmRvYyAiUmV0dXJuIGEgcmFuZG9tIHBlcm11dGF0aW9uIG9mIGNvbGwiLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIHNodWZmbGVcbiBcIlJldHVybiBhIHJhbmRvbSBwZXJtdXRhdGlvbiBvZiBjb2xsXCJcbiBbY29sbF1cbiAobGV0IFthICh0by1hcnJheSBjb2xsKV0gKGdhcnJheS9zaHVmZmxlIGEpICh2ZWMgYSkpKVxuIn0gezpzeW0gaGFzaC1rZXl3b3JkLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2tdKX0sIDpzb3VyY2UgIihkZWZuIGhhc2gta2V5d29yZCBba10gKGludCAoKyAoaGFzaC1zeW1ib2wgaykgMjY1NDQzNTc2OSkpKVxuIn0gezpzeW0gZmluZCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG1hcCBlbnRyeSBmb3Iga2V5LCBvciBuaWwgaWYga2V5IG5vdCBwcmVzZW50LiIsIDphcmdsaXN0cyAoW2NvbGwga10pfSwgOnNvdXJjZSAiKGRlZm5cbiBmaW5kXG4gXCJSZXR1cm5zIHRoZSBtYXAgZW50cnkgZm9yIGtleSwgb3IgbmlsIGlmIGtleSBub3QgcHJlc2VudC5cIlxuIFtjb2xsIGtdXG4gKGlmXG4gIChpZmluZD8gY29sbClcbiAgKC1maW5kIGNvbGwgaylcbiAgKHdoZW5cbiAgIChhbmQgKG5vdCAobmlsPyBjb2xsKSkgKGFzc29jaWF0aXZlPyBjb2xsKSAoY29udGFpbnM/IGNvbGwgaykpXG4gICAoTWFwRW50cnkuIGsgKGdldCBjb2xsIGspIG5pbCkpKSlcbiJ9IHs6c3ltIGFsZW5ndGgsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBsZW5ndGggb2YgdGhlIGFycmF5LiBXb3JrcyBvbiBhcnJheXMgb2YgYWxsIHR5cGVzLiIsIDphcmdsaXN0cyAoW2FycmF5XSl9LCA6c291cmNlICIoZGVmblxuIGFsZW5ndGhcbiBcIlJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUgYXJyYXkuIFdvcmtzIG9uIGFycmF5cyBvZiBhbGwgdHlwZXMuXCJcbiBbYXJyYXldXG4gKGNsanMuY29yZS9hbGVuZ3RoIGFycmF5KSlcbiJ9IHs6c3ltIGJpdC14b3IsIDptZXRhIHs6ZG9jICJCaXR3aXNlIGV4Y2x1c2l2ZSBvciIsIDphcmdsaXN0cyBbW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gYml0LXhvclxuIFwiQml0d2lzZSBleGNsdXNpdmUgb3JcIlxuIChbeCB5XSAoY2xqcy5jb3JlL2JpdC14b3IgeCB5KSlcbiAoW3ggeSAmIG1vcmVdIChyZWR1Y2UgYml0LXhvciAoY2xqcy5jb3JlL2JpdC14b3IgeCB5KSBtb3JlKSkpXG4ifSB7OnN5bSB1bnNpZ25lZC1iaXQtc2hpZnQtcmlnaHQsIDptZXRhIHs6ZG9jICJCaXR3aXNlIHNoaWZ0IHJpZ2h0IHdpdGggemVybyBmaWxsIiwgOmFyZ2xpc3RzIChbeCBuXSl9LCA6c291cmNlICIoZGVmblxuIHVuc2lnbmVkLWJpdC1zaGlmdC1yaWdodFxuIFwiQml0d2lzZSBzaGlmdCByaWdodCB3aXRoIHplcm8gZmlsbFwiXG4gW3ggbl1cbiAoY2xqcy5jb3JlL3Vuc2lnbmVkLWJpdC1zaGlmdC1yaWdodCB4IG4pKVxuIn0gezpzeW0gbmVnPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiBudW0gaXMgbGVzcyB0aGFuIHplcm8sIGVsc2UgZmFsc2UiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIG5lZz9cbiBcIlJldHVybnMgdHJ1ZSBpZiBudW0gaXMgbGVzcyB0aGFuIHplcm8sIGVsc2UgZmFsc2VcIlxuIFt4XVxuIChjbGpzLmNvcmUvbmVnPyB4KSlcbiJ9IHs6c3ltIC1yZW1vdmUtbWV0aG9kLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21mIGRpc3BhdGNoLXZhbF0pfSwgOnByb3RvY29sIElNdWx0aUZufSB7OnN5bSBqcy1pbnZva2UsIDptZXRhIHs6ZG9jICJJbnZva2UgSmF2YVNjcmlwdCBvYmplY3QgbWV0aG9kIHZpYSBzdHJpbmcuIE5lZWRlZCB3aGVuIHRoZVxuICBzdHJpbmcgaXMgbm90IGEgdmFsaWQgdW5xdW90ZWQgcHJvcGVydHkgbmFtZS4iLCA6YXJnbGlzdHMgKFtvYmogcyAmIGFyZ3NdKX0sIDpzb3VyY2UgIihkZWZuXG4ganMtaW52b2tlXG4gXCJJbnZva2UgSmF2YVNjcmlwdCBvYmplY3QgbWV0aG9kIHZpYSBzdHJpbmcuIE5lZWRlZCB3aGVuIHRoZVxcbiAgc3RyaW5nIGlzIG5vdCBhIHZhbGlkIHVucXVvdGVkIHByb3BlcnR5IG5hbWUuXCJcbiBbb2JqIHMgJiBhcmdzXVxuICguYXBwbHkgKHVuY2hlY2tlZC1nZXQgb2JqIHMpIG9iaiAoaW50by1hcnJheSBhcmdzKSkpXG4ifSB7OnN5bSBtMy1taXgtSzEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbazFdKX0sIDpzb3VyY2UgIihkZWZuXG4gbTMtbWl4LUsxXG4gW2sxXVxuICgtPiAoaW50IGsxKSAoaW11bCBtMy1DMSkgKGludC1yb3RhdGUtbGVmdCAxNSkgKGltdWwgbTMtQzIpKSlcbiJ9IHs6c3ltIHVuY2hlY2tlZC1mbG9hdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiB1bmNoZWNrZWQtZmxvYXQgW3hdIHgpXG4ifSB7OnN5bSB1bmRlZmluZWQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIHggaWRlbnRpY2FsIHRvIHRoZSBKYXZhU2NyaXB0IHVuZGVmaW5lZCB2YWx1ZS4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHVuZGVmaW5lZD9cbiBcIlJldHVybnMgdHJ1ZSBpZiB4IGlkZW50aWNhbCB0byB0aGUgSmF2YVNjcmlwdCB1bmRlZmluZWQgdmFsdWUuXCJcbiBbeF1cbiAoY2xqcy5jb3JlL3VuZGVmaW5lZD8geCkpXG4ifSB7OnN5bSBJTWV0YSwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhY2Nlc3NpbmcgdGhlIG1ldGFkYXRhIG9mIGFuIG9iamVjdC4ifSwgOm1ldGhvZHMgKC1tZXRhKX0gezpzeW0gcmVkdWNlZD8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgeCBpcyB0aGUgcmVzdWx0IG9mIGEgY2FsbCB0byByZWR1Y2VkIiwgOmFyZ2xpc3RzIChbcl0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWR1Y2VkP1xuIFwiUmV0dXJucyB0cnVlIGlmIHggaXMgdGhlIHJlc3VsdCBvZiBhIGNhbGwgdG8gcmVkdWNlZFwiXG4gW3JdXG4gKGluc3RhbmNlPyBSZWR1Y2VkIHIpKVxuIn0gezpzeW0gZGlzaiEsIDptZXRhIHs6ZG9jICJkaXNqW29pbl0uIFJldHVybnMgYSB0cmFuc2llbnQgc2V0IG9mIHRoZSBzYW1lIChoYXNoZWQvc29ydGVkKSB0eXBlLCB0aGF0XG4gIGRvZXMgbm90IGNvbnRhaW4ga2V5KHMpLiIsIDphcmdsaXN0cyBbW3Rjb2xsIHZhbF0gW3Rjb2xsIHZhbCAmIHZhbHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gZGlzaiFcbiBcImRpc2pbb2luXS4gUmV0dXJucyBhIHRyYW5zaWVudCBzZXQgb2YgdGhlIHNhbWUgKGhhc2hlZC9zb3J0ZWQpIHR5cGUsIHRoYXRcXG4gIGRvZXMgbm90IGNvbnRhaW4ga2V5KHMpLlwiXG4gKFt0Y29sbCB2YWxdICgtZGlzam9pbiEgdGNvbGwgdmFsKSlcbiAoW3Rjb2xsIHZhbCAmIHZhbHNdXG4gIChsZXRcbiAgIFtudGNvbGwgKC1kaXNqb2luISB0Y29sbCB2YWwpXVxuICAgKGlmIHZhbHMgKHJlY3VyIG50Y29sbCAoZmlyc3QgdmFscykgKG5leHQgdmFscykpIG50Y29sbCkpKSlcbiJ9IHs6c3ltIC1sb29rdXAsIDptZXRhIHs6ZG9jICJVc2UgayB0byBsb29rIHVwIGEgdmFsdWUgaW4gby4gSWYgbm90LWZvdW5kIGlzIHN1cHBsaWVkIGFuZCBrIGlzIG5vdFxuICAgICBhIHZhbGlkIHZhbHVlIHRoYXQgY2FuIGJlIHVzZWQgZm9yIGxvb2sgdXAsIG5vdC1mb3VuZCBpcyByZXR1cm5lZC4iLCA6YXJnbGlzdHMgKFtvIGtdIFtvIGsgbm90LWZvdW5kXSl9LCA6cHJvdG9jb2wgSUxvb2t1cH0gezpzeW0gZmxvYXQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGZvciBKYXZhU2NyaXB0IG51bWJlcnMsIGZhbHNlIG90aGVyd2lzZS4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGZsb2F0P1xuIFwiUmV0dXJucyB0cnVlIGZvciBKYXZhU2NyaXB0IG51bWJlcnMsIGZhbHNlIG90aGVyd2lzZS5cIlxuIFt4XVxuIChudW1iZXI/IHgpKVxuIn0gezpzeW0gSUNsb25lYWJsZSwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBjbG9uaW5nIGEgdmFsdWUuIn0sIDptZXRob2RzICgtY2xvbmUpfSB7OnN5bSBJRW5jb2RlQ2xvanVyZSwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKC1qcy0+Y2xqKX0gezpzeW0gYm9vbGVhbnMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gYm9vbGVhbnMgW3hdIHgpXG4ifSB7OnN5bSBpbnQtYXJyYXksIDptZXRhIHs6ZG9jICJDcmVhdGVzIGFuIGFycmF5IG9mIGludHMuIERvZXMgbm90IGNvZXJjZSBhcnJheSwgcHJvdmlkZWQgZm9yIGNvbXBhdGliaWxpdHlcbiAgd2l0aCBDbG9qdXJlLiIsIDphcmdsaXN0cyBbW3NpemUtb3Itc2VxXSBbc2l6ZSBpbml0LXZhbC1vci1zZXFdXX0sIDpzb3VyY2UgIihkZWZuXG4gaW50LWFycmF5XG4gXCJDcmVhdGVzIGFuIGFycmF5IG9mIGludHMuIERvZXMgbm90IGNvZXJjZSBhcnJheSwgcHJvdmlkZWQgZm9yIGNvbXBhdGliaWxpdHlcXG4gIHdpdGggQ2xvanVyZS5cIlxuIChbc2l6ZS1vci1zZXFdXG4gIChpZlxuICAgKG51bWJlcj8gc2l6ZS1vci1zZXEpXG4gICAoaW50LWFycmF5IHNpemUtb3Itc2VxIG5pbClcbiAgIChpbnRvLWFycmF5IHNpemUtb3Itc2VxKSkpXG4gKFtzaXplIGluaXQtdmFsLW9yLXNlcV1cbiAgKGxldFxuICAgW2EgKG1ha2UtYXJyYXkgc2l6ZSldXG4gICAoaWZcbiAgICAoc2VxPyBpbml0LXZhbC1vci1zZXEpXG4gICAgKGxldFxuICAgICBbcyAoc2VxIGluaXQtdmFsLW9yLXNlcSldXG4gICAgIChsb29wXG4gICAgICBbaSAwIHMgc11cbiAgICAgIChpZlxuICAgICAgIChhbmQgcyAoPCBpIHNpemUpKVxuICAgICAgIChkbyAoYXNldCBhIGkgKGZpcnN0IHMpKSAocmVjdXIgKGluYyBpKSAobmV4dCBzKSkpXG4gICAgICAgYSkpKVxuICAgIChkbyAoZG90aW1lcyBbaSBzaXplXSAoYXNldCBhIGkgaW5pdC12YWwtb3Itc2VxKSkgYSkpKSkpXG4ifSB7OnN5bSBzZXQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIHggc2F0aXNmaWVzIElTZXQiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHNldD9cbiBcIlJldHVybnMgdHJ1ZSBpZiB4IHNhdGlzZmllcyBJU2V0XCJcbiBbeF1cbiAoaWYgKG5pbD8geCkgZmFsc2UgKHNhdGlzZmllcz8gSVNldCB4KSkpXG4ifSB7OnN5bSBpdGVyYWJsZT8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IGltcGxlbWVudHMgSUl0ZXJhYmxlIHByb3RvY29sLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gaXRlcmFibGU/XG4gXCJSZXR1cm4gdHJ1ZSBpZiB4IGltcGxlbWVudHMgSUl0ZXJhYmxlIHByb3RvY29sLlwiXG4gW3hdXG4gKHNhdGlzZmllcz8gSUl0ZXJhYmxlIHgpKVxuIn0gezpzeW0gY2F0LCA6bWV0YSB7OmRvYyAiQSB0cmFuc2R1Y2VyIHdoaWNoIGNvbmNhdGVuYXRlcyB0aGUgY29udGVudHMgb2YgZWFjaCBpbnB1dCwgd2hpY2ggbXVzdCBiZSBhXG4gIGNvbGxlY3Rpb24sIGludG8gdGhlIHJlZHVjdGlvbi4iLCA6YXJnbGlzdHMgKFtyZl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjYXRcbiBcIkEgdHJhbnNkdWNlciB3aGljaCBjb25jYXRlbmF0ZXMgdGhlIGNvbnRlbnRzIG9mIGVhY2ggaW5wdXQsIHdoaWNoIG11c3QgYmUgYVxcbiAgY29sbGVjdGlvbiwgaW50byB0aGUgcmVkdWN0aW9uLlwiXG4gezphZGRlZCBcIjEuN1wifVxuIFtyZl1cbiAobGV0XG4gIFtyZjEgKHByZXNlcnZpbmctcmVkdWNlZCByZildXG4gIChmblxuICAgKFtdIChyZikpXG4gICAoW3Jlc3VsdF0gKHJmIHJlc3VsdCkpXG4gICAoW3Jlc3VsdCBpbnB1dF0gKHJlZHVjZSByZjEgcmVzdWx0IGlucHV0KSkpKSlcbiJ9IHs6c3ltIC1wci13cml0ZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbyB3cml0ZXIgb3B0c10pfSwgOnByb3RvY29sIElQcmludFdpdGhXcml0ZXJ9IHs6c3ltIGZsdXNoLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm4gZmx1c2ggW10gbmlsKVxuIn0gezpzeW0gc2V0LWZyb20taW5kZXhlZC1zZXEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbaXNlcV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzZXQtZnJvbS1pbmRleGVkLXNlcVxuIFtpc2VxXVxuIChsZXRcbiAgW2FyclxuICAgKC4tYXJyIGlzZXEpXG4gICByZXRcbiAgIChhcmVkdWNlIGFyciBpIHJlcyAoLWFzLXRyYW5zaWVudCAje30pICgtY29uaiEgcmVzIChhZ2V0IGFyciBpKSkpXVxuICAoLXBlcnNpc3RlbnQhIHJldCkpKVxuIn0gezpzeW0gdGFrZS13aGlsZSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIHN1Y2Nlc3NpdmUgaXRlbXMgZnJvbSBjb2xsIHdoaWxlXG4gIChwcmVkIGl0ZW0pIHJldHVybnMgbG9naWNhbCB0cnVlLiBwcmVkIG11c3QgYmUgZnJlZSBvZiBzaWRlLWVmZmVjdHMuXG4gIFJldHVybnMgYSB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC4iLCA6YXJnbGlzdHMgW1twcmVkXSBbcHJlZCBjb2xsXV19LCA6c291cmNlICIoZGVmblxuIHRha2Utd2hpbGVcbiBcIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIHN1Y2Nlc3NpdmUgaXRlbXMgZnJvbSBjb2xsIHdoaWxlXFxuICAocHJlZCBpdGVtKSByZXR1cm5zIGxvZ2ljYWwgdHJ1ZS4gcHJlZCBtdXN0IGJlIGZyZWUgb2Ygc2lkZS1lZmZlY3RzLlxcbiAgUmV0dXJucyBhIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLlwiXG4gKFtwcmVkXVxuICAoZm5cbiAgIFtyZl1cbiAgIChmblxuICAgIChbXSAocmYpKVxuICAgIChbcmVzdWx0XSAocmYgcmVzdWx0KSlcbiAgICAoW3Jlc3VsdCBpbnB1dF1cbiAgICAgKGlmIChwcmVkIGlucHV0KSAocmYgcmVzdWx0IGlucHV0KSAocmVkdWNlZCByZXN1bHQpKSkpKSlcbiAoW3ByZWQgY29sbF1cbiAgKGxhenktc2VxXG4gICAod2hlbi1sZXRcbiAgICBbcyAoc2VxIGNvbGwpXVxuICAgICh3aGVuXG4gICAgIChwcmVkIChmaXJzdCBzKSlcbiAgICAgKGNvbnMgKGZpcnN0IHMpICh0YWtlLXdoaWxlIHByZWQgKHJlc3QgcykpKSkpKSkpXG4ifSB7OnN5bSB2YXJ5LW1ldGEsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGFuIG9iamVjdCBvZiB0aGUgc2FtZSB0eXBlIGFuZCB2YWx1ZSBhcyBvYmosIHdpdGhcbiAgKGFwcGx5IGYgKG1ldGEgb2JqKSBhcmdzKSBhcyBpdHMgbWV0YWRhdGEuIiwgOmFyZ2xpc3RzIFtbb2JqIGZdIFtvYmogZiBhXSBbb2JqIGYgYSBiXSBbb2JqIGYgYSBiIGNdIFtvYmogZiBhIGIgYyBkXSBbb2JqIGYgYSBiIGMgZCAmIGFyZ3NdXX0sIDpzb3VyY2UgIihkZWZuXG4gdmFyeS1tZXRhXG4gXCJSZXR1cm5zIGFuIG9iamVjdCBvZiB0aGUgc2FtZSB0eXBlIGFuZCB2YWx1ZSBhcyBvYmosIHdpdGhcXG4gIChhcHBseSBmIChtZXRhIG9iaikgYXJncykgYXMgaXRzIG1ldGFkYXRhLlwiXG4gKFtvYmogZl0gKHdpdGgtbWV0YSBvYmogKGYgKG1ldGEgb2JqKSkpKVxuIChbb2JqIGYgYV0gKHdpdGgtbWV0YSBvYmogKGYgKG1ldGEgb2JqKSBhKSkpXG4gKFtvYmogZiBhIGJdICh3aXRoLW1ldGEgb2JqIChmIChtZXRhIG9iaikgYSBiKSkpXG4gKFtvYmogZiBhIGIgY10gKHdpdGgtbWV0YSBvYmogKGYgKG1ldGEgb2JqKSBhIGIgYykpKVxuIChbb2JqIGYgYSBiIGMgZF0gKHdpdGgtbWV0YSBvYmogKGYgKG1ldGEgb2JqKSBhIGIgYyBkKSkpXG4gKFtvYmogZiBhIGIgYyBkICYgYXJnc11cbiAgKHdpdGgtbWV0YSBvYmogKGFwcGx5IGYgKG1ldGEgb2JqKSBhIGIgYyBkIGFyZ3MpKSkpXG4ifSB7OnN5bSBJTmV4dCwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhY2Nlc3NpbmcgdGhlIG5leHQgaXRlbXMgb2YgYSBjb2xsZWN0aW9uLiJ9LCA6bWV0aG9kcyAoLW5leHQpfSB7OnN5bSBpc19wcm90b18sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gaXNfcHJvdG9fIFt4XSAoaWRlbnRpY2FsPyAoLi1wcm90b3R5cGUgKC4tY29uc3RydWN0b3IgeCkpIHgpKVxuIn0gezpzeW0gU1RBUlQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIFNUQVJUICNqcyB7fSlcbiJ9IHs6c3ltIElDb3VudGVkLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFkZGluZyB0aGUgYWJpbGl0eSB0byBjb3VudCBhIGNvbGxlY3Rpb24gaW4gY29uc3RhbnQgdGltZS4ifSwgOm1ldGhvZHMgKC1jb3VudCl9IHs6c3ltIElNYXBFbnRyeSwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBleGFtaW5pbmcgYSBtYXAgZW50cnkuIn0sIDptZXRob2RzICgta2V5IC12YWwpfSB7OnN5bSA8PSwgOm1ldGEgezpkb2MgIlJldHVybnMgbm9uLW5pbCBpZiBudW1zIGFyZSBpbiBtb25vdG9uaWNhbGx5IG5vbi1kZWNyZWFzaW5nIG9yZGVyLFxuICBvdGhlcndpc2UgZmFsc2UuIiwgOmFyZ2xpc3RzIFtbeF0gW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gPD1cbiBcIlJldHVybnMgbm9uLW5pbCBpZiBudW1zIGFyZSBpbiBtb25vdG9uaWNhbGx5IG5vbi1kZWNyZWFzaW5nIG9yZGVyLFxcbiAgb3RoZXJ3aXNlIGZhbHNlLlwiXG4gKFt4XSB0cnVlKVxuIChbeCB5XSAoY2xqcy5jb3JlLzw9IHggeSkpXG4gKFt4IHkgJiBtb3JlXVxuICAoaWZcbiAgIChjbGpzLmNvcmUvPD0geCB5KVxuICAgKGlmXG4gICAgKG5leHQgbW9yZSlcbiAgICAocmVjdXIgeSAoZmlyc3QgbW9yZSkgKG5leHQgbW9yZSkpXG4gICAgKGNsanMuY29yZS88PSB5IChmaXJzdCBtb3JlKSkpXG4gICBmYWxzZSkpKVxuIn0gezpzeW0gTU9EVUxFX0lORk9TLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBNT0RVTEVfSU5GT1MgbmlsKVxuIn0gezpzeW0gY29uaiEsIDptZXRhIHs6ZG9jICJBZGRzIHZhbCB0byB0aGUgdHJhbnNpZW50IGNvbGxlY3Rpb24sIGFuZCByZXR1cm4gdGNvbGwuIFRoZSAnYWRkaXRpb24nXG4gIG1heSBoYXBwZW4gYXQgZGlmZmVyZW50ICdwbGFjZXMnIGRlcGVuZGluZyBvbiB0aGUgY29uY3JldGUgdHlwZS4iLCA6YXJnbGlzdHMgW1tdIFt0Y29sbF0gW3Rjb2xsIHZhbF0gW3Rjb2xsIHZhbCAmIHZhbHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gY29uaiFcbiBcIkFkZHMgdmFsIHRvIHRoZSB0cmFuc2llbnQgY29sbGVjdGlvbiwgYW5kIHJldHVybiB0Y29sbC4gVGhlICdhZGRpdGlvbidcXG4gIG1heSBoYXBwZW4gYXQgZGlmZmVyZW50ICdwbGFjZXMnIGRlcGVuZGluZyBvbiB0aGUgY29uY3JldGUgdHlwZS5cIlxuIChbXSAodHJhbnNpZW50IFtdKSlcbiAoW3Rjb2xsXSB0Y29sbClcbiAoW3Rjb2xsIHZhbF0gKC1jb25qISB0Y29sbCB2YWwpKVxuIChbdGNvbGwgdmFsICYgdmFsc11cbiAgKGxldFxuICAgW250Y29sbCAoLWNvbmohIHRjb2xsIHZhbCldXG4gICAoaWYgdmFscyAocmVjdXIgbnRjb2xsIChmaXJzdCB2YWxzKSAobmV4dCB2YWxzKSkgbnRjb2xsKSkpKVxuIn0gezpzeW0gLXBvcCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBuZXcgc3RhY2sgd2l0aG91dCB0aGUgaXRlbSBvbiB0b3Agb2YgdGhlIHN0YWNrLiBJcyB1c2VkXG4gICAgIGJ5IGNsanMuY29yZS9wb3AuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnByb3RvY29sIElTdGFja30gezpzeW0gcmVwZWF0ZWRseSwgOm1ldGEgezpkb2MgIlRha2VzIGEgZnVuY3Rpb24gb2Ygbm8gYXJncywgcHJlc3VtYWJseSB3aXRoIHNpZGUgZWZmZWN0cywgYW5kXG4gIHJldHVybnMgYW4gaW5maW5pdGUgKG9yIGxlbmd0aCBuIGlmIHN1cHBsaWVkKSBsYXp5IHNlcXVlbmNlIG9mIGNhbGxzXG4gIHRvIGl0IiwgOmFyZ2xpc3RzIFtbZl0gW24gZl1dfSwgOnNvdXJjZSAiKGRlZm5cbiByZXBlYXRlZGx5XG4gXCJUYWtlcyBhIGZ1bmN0aW9uIG9mIG5vIGFyZ3MsIHByZXN1bWFibHkgd2l0aCBzaWRlIGVmZmVjdHMsIGFuZFxcbiAgcmV0dXJucyBhbiBpbmZpbml0ZSAob3IgbGVuZ3RoIG4gaWYgc3VwcGxpZWQpIGxhenkgc2VxdWVuY2Ugb2YgY2FsbHNcXG4gIHRvIGl0XCJcbiAoW2ZdIChsYXp5LXNlcSAoY29ucyAoZikgKHJlcGVhdGVkbHkgZikpKSlcbiAoW24gZl0gKHRha2UgbiAocmVwZWF0ZWRseSBmKSkpKVxuIn0gezpzeW0gemlwbWFwLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG1hcCB3aXRoIHRoZSBrZXlzIG1hcHBlZCB0byB0aGUgY29ycmVzcG9uZGluZyB2YWxzLiIsIDphcmdsaXN0cyAoW2tleXMgdmFsc10pfSwgOnNvdXJjZSAiKGRlZm5cbiB6aXBtYXBcbiBcIlJldHVybnMgYSBtYXAgd2l0aCB0aGUga2V5cyBtYXBwZWQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdmFscy5cIlxuIFtrZXlzIHZhbHNdXG4gKGxvb3BcbiAgW21hcCAodHJhbnNpZW50IHt9KSBrcyAoc2VxIGtleXMpIHZzIChzZXEgdmFscyldXG4gIChpZlxuICAgKGFuZCBrcyB2cylcbiAgIChyZWN1ciAoYXNzb2MhIG1hcCAoZmlyc3Qga3MpIChmaXJzdCB2cykpIChuZXh0IGtzKSAobmV4dCB2cykpXG4gICAocGVyc2lzdGVudCEgbWFwKSkpKVxuIn0gezpzeW0gcmVzZXQtdmFscyEsIDptZXRhIHs6ZG9jICJTZXRzIHRoZSB2YWx1ZSBvZiBhdG9tIHRvIG5ld3ZhbC4gUmV0dXJucyBbb2xkIG5ld10sIHRoZSB2YWx1ZSBvZiB0aGVcbiAgIGF0b20gYmVmb3JlIGFuZCBhZnRlciB0aGUgcmVzZXQuIiwgOmFyZ2xpc3RzIChbYSBuZXctdmFsdWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVzZXQtdmFscyFcbiBcIlNldHMgdGhlIHZhbHVlIG9mIGF0b20gdG8gbmV3dmFsLiBSZXR1cm5zIFtvbGQgbmV3XSwgdGhlIHZhbHVlIG9mIHRoZVxcbiAgIGF0b20gYmVmb3JlIGFuZCBhZnRlciB0aGUgcmVzZXQuXCJcbiB7OmFkZGVkIFwiMS45XCJ9XG4gW2EgbmV3LXZhbHVlXVxuIChsZXRcbiAgW3ZhbGlkYXRlICguLXZhbGlkYXRvciBhKV1cbiAgKHdoZW4tbm90XG4gICAobmlsPyB2YWxpZGF0ZSlcbiAgICh3aGVuLW5vdFxuICAgICh2YWxpZGF0ZSBuZXctdmFsdWUpXG4gICAgKHRocm93IChqcy9FcnJvci4gXCJWYWxpZGF0b3IgcmVqZWN0ZWQgcmVmZXJlbmNlIHN0YXRlXCIpKSkpXG4gIChsZXRcbiAgIFtvbGQtdmFsdWUgKC4tc3RhdGUgYSldXG4gICAoc2V0ISAoLi1zdGF0ZSBhKSBuZXctdmFsdWUpXG4gICAod2hlbi1ub3RcbiAgICAobmlsPyAoLi13YXRjaGVzIGEpKVxuICAgICgtbm90aWZ5LXdhdGNoZXMgYSBvbGQtdmFsdWUgbmV3LXZhbHVlKSlcbiAgIFtvbGQtdmFsdWUgbmV3LXZhbHVlXSkpKVxuIn0gezpzeW0gSVN0YWNrLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGNvbGxlY3Rpb25zIHRvIHByb3ZpZGUgYWNjZXNzIHRvIHRoZWlyIGl0ZW1zIGFzIHN0YWNrcy4gVGhlIHRvcFxuICBvZiB0aGUgc3RhY2sgc2hvdWxkIGJlIGFjY2Vzc2VkIGluIHRoZSBtb3N0IGVmZmljaWVudCB3YXkgZm9yIHRoZSBkaWZmZXJlbnRcbiAgZGF0YSBzdHJ1Y3R1cmVzLiJ9LCA6bWV0aG9kcyAoLXBlZWsgLXBvcCl9IHs6c3ltIC1yZW1vdmUtd2F0Y2gsIDptZXRhIHs6ZG9jICJSZW1vdmVzIHdhdGNoZXIgdGhhdCBjb3JyZXNwb25kcyB0byBrZXkgZnJvbSB0aGlzLiIsIDphcmdsaXN0cyAoW3RoaXMga2V5XSl9LCA6cHJvdG9jb2wgSVdhdGNoYWJsZX0gezpzeW0gSVZvbGF0aWxlLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFkZGluZyB2b2xhdGlsZSBmdW5jdGlvbmFsaXR5LiJ9LCA6bWV0aG9kcyAoLXZyZXNldCEpfSB7OnN5bSByZW1vdmUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiB0aGUgaXRlbXMgaW4gY29sbCBmb3Igd2hpY2hcbiAgKHByZWQgaXRlbSkgcmV0dXJucyBsb2dpY2FsIGZhbHNlLiBwcmVkIG11c3QgYmUgZnJlZSBvZiBzaWRlLWVmZmVjdHMuXG4gIFJldHVybnMgYSB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC4iLCA6YXJnbGlzdHMgW1twcmVkXSBbcHJlZCBjb2xsXV19LCA6c291cmNlICIoZGVmblxuIHJlbW92ZVxuIFwiUmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2YgdGhlIGl0ZW1zIGluIGNvbGwgZm9yIHdoaWNoXFxuICAocHJlZCBpdGVtKSByZXR1cm5zIGxvZ2ljYWwgZmFsc2UuIHByZWQgbXVzdCBiZSBmcmVlIG9mIHNpZGUtZWZmZWN0cy5cXG4gIFJldHVybnMgYSB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC5cIlxuIChbcHJlZF0gKGZpbHRlciAoY29tcGxlbWVudCBwcmVkKSkpXG4gKFtwcmVkIGNvbGxdIChmaWx0ZXIgKGNvbXBsZW1lbnQgcHJlZCkgY29sbCkpKVxuIn0gezpzeW0gKiwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHByb2R1Y3Qgb2YgbnVtcy4gKCopIHJldHVybnMgMS4iLCA6YXJnbGlzdHMgW1tdIFt4XSBbeCB5XSBbeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiAqXG4gXCJSZXR1cm5zIHRoZSBwcm9kdWN0IG9mIG51bXMuICgqKSByZXR1cm5zIDEuXCJcbiAoW10gMSlcbiAoW3hdIHgpXG4gKFt4IHldIChjbGpzLmNvcmUvKiB4IHkpKVxuIChbeCB5ICYgbW9yZV0gKHJlZHVjZSAqIChjbGpzLmNvcmUvKiB4IHkpIG1vcmUpKSlcbiJ9IHs6c3ltIHJlLXBhdHRlcm4sIDptZXRhIHs6ZG9jICJSZXR1cm5zIGFuIGluc3RhbmNlIG9mIFJlZ0V4cCB3aGljaCBoYXMgY29tcGlsZWQgdGhlIHByb3ZpZGVkIHN0cmluZy4iLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIHJlLXBhdHRlcm5cbiBcIlJldHVybnMgYW4gaW5zdGFuY2Ugb2YgUmVnRXhwIHdoaWNoIGhhcyBjb21waWxlZCB0aGUgcHJvdmlkZWQgc3RyaW5nLlwiXG4gW3NdXG4gKGlmXG4gIChpbnN0YW5jZT8ganMvUmVnRXhwIHMpXG4gIHNcbiAgKGxldFxuICAgW1twcmVmaXggZmxhZ3NdXG4gICAgKHJlLWZpbmQgI1wiXlxcKFxcPyhbaWRtc3V4XSopXFwpXCIgcylcbiAgICBwYXR0ZXJuXG4gICAgKHN1YnMgcyAoaWYgKG5pbD8gcHJlZml4KSAwIChjb3VudCBwcmVmaXgpKSldXG4gICAoanMvUmVnRXhwLiBwYXR0ZXJuIChvciBmbGFncyBcIlwiKSkpKSlcbiJ9IHs6c3ltIG1pbiwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGxlYXN0IG9mIHRoZSBudW1zLiIsIDphcmdsaXN0cyBbW3hdIFt4IHldIFt4IHkgJiBtb3JlXV19LCA6c291cmNlICIoZGVmblxuIG1pblxuIFwiUmV0dXJucyB0aGUgbGVhc3Qgb2YgdGhlIG51bXMuXCJcbiAoW3hdIHgpXG4gKFt4IHldIChjbGpzLmNvcmUvbWluIHggeSkpXG4gKFt4IHkgJiBtb3JlXSAocmVkdWNlIG1pbiAoY2xqcy5jb3JlL21pbiB4IHkpIG1vcmUpKSlcbiJ9IHs6c3ltIC1wZXJzaXN0ZW50ISwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYSBwZXJzaXN0ZW50IGRhdGEgc3RydWN0dXJlIGZyb20gdGNvbGwgYW5kIHJldHVybnMgaXQuIiwgOmFyZ2xpc3RzIChbdGNvbGxdKX0sIDpwcm90b2NvbCBJVHJhbnNpZW50Q29sbGVjdGlvbn0gezpzeW0gLW50aCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHZhbHVlIGF0IHRoZSBpbmRleCBuIGluIHRoZSBjb2xsZWN0aW9uIGNvbGwuXG4gICAgIFJldHVybnMgbm90LWZvdW5kIGlmIGluZGV4IG4gaXMgb3V0IG9mIGJvdW5kcyBhbmQgbm90LWZvdW5kIGlzIHN1cHBsaWVkLiIsIDphcmdsaXN0cyAoW2NvbGwgbl0gW2NvbGwgbiBub3QtZm91bmRdKX0sIDpwcm90b2NvbCBJSW5kZXhlZH0gezpzeW0gcG9wISwgOm1ldGEgezpkb2MgIlJlbW92ZXMgdGhlIGxhc3QgaXRlbSBmcm9tIGEgdHJhbnNpZW50IHZlY3Rvci4gSWZcbiAgdGhlIGNvbGxlY3Rpb24gaXMgZW1wdHksIHRocm93cyBhbiBleGNlcHRpb24uIFJldHVybnMgdGNvbGwiLCA6YXJnbGlzdHMgKFt0Y29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwb3AhXG4gXCJSZW1vdmVzIHRoZSBsYXN0IGl0ZW0gZnJvbSBhIHRyYW5zaWVudCB2ZWN0b3IuIElmXFxuICB0aGUgY29sbGVjdGlvbiBpcyBlbXB0eSwgdGhyb3dzIGFuIGV4Y2VwdGlvbi4gUmV0dXJucyB0Y29sbFwiXG4gW3Rjb2xsXVxuICgtcG9wISB0Y29sbCkpXG4ifSB7OnN5bSBjaHVuay1hcHBlbmQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbYiB4XSl9LCA6c291cmNlICIoZGVmbiBjaHVuay1hcHBlbmQgW2IgeF0gKC5hZGQgYiB4KSlcbiJ9IHs6c3ltICp1bmNoZWNrZWQtYXJyYXlzKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKnVuY2hlY2tlZC1hcnJheXMqIGZhbHNlKVxuIn0gezpzeW0gcHJuLXN0ciwgOm1ldGEgezpkb2MgIlNhbWUgYXMgcHItc3RyIGZvbGxvd2VkIGJ5IChuZXdsaW5lKSIsIDphcmdsaXN0cyAoWyYgb2Jqc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcm4tc3RyXG4gXCJTYW1lIGFzIHByLXN0ciBmb2xsb3dlZCBieSAobmV3bGluZSlcIlxuIFsmIG9ianNdXG4gKHBybi1zdHItd2l0aC1vcHRzIG9ianMgKHByLW9wdHMpKSlcbiJ9IHs6c3ltIElSZXZlcnNpYmxlLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIHJldmVyc2luZyBhIHNlcS4ifSwgOm1ldGhvZHMgKC1yc2VxKX0gezpzeW0gcmV2ZXJzaWJsZT8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgY29sbCBzYXRpc2ZpZXM/IElSZXZlcnNpYmxlLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmV2ZXJzaWJsZT9cbiBcIlJldHVybnMgdHJ1ZSBpZiBjb2xsIHNhdGlzZmllcz8gSVJldmVyc2libGUuXCJcbiBbY29sbF1cbiAoc2F0aXNmaWVzPyBJUmV2ZXJzaWJsZSBjb2xsKSlcbiJ9IHs6c3ltIC1yZWFsaXplZD8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgYSB2YWx1ZSBmb3IgeCBoYXMgYmVlbiBwcm9kdWNlZCwgZmFsc2Ugb3RoZXJ3aXNlLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpwcm90b2NvbCBJUGVuZGluZ30gezpzeW0gLWFkZC13YXRjaCwgOm1ldGEgezpkb2MgIkFkZHMgYSB3YXRjaGVyIGZ1bmN0aW9uIGYgdG8gdGhpcy4gS2V5cyBtdXN0IGJlIHVuaXF1ZSBwZXIgcmVmZXJlbmNlLFxuICAgICBhbmQgY2FuIGJlIHVzZWQgdG8gcmVtb3ZlIHRoZSB3YXRjaCB3aXRoIC1yZW1vdmUtd2F0Y2guIiwgOmFyZ2xpc3RzIChbdGhpcyBrZXkgZl0pfSwgOnByb3RvY29sIElXYXRjaGFibGV9IHs6c3ltIC1kZXJlZi13aXRoLXRpbWVvdXQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbyBtc2VjIHRpbWVvdXQtdmFsXSl9LCA6cHJvdG9jb2wgSURlcmVmV2l0aFRpbWVvdXR9IHs6c3ltIGNvbmosIDptZXRhIHs6ZG9jICJjb25qW29pbl0uIFJldHVybnMgYSBuZXcgY29sbGVjdGlvbiB3aXRoIHRoZSB4c1xuICAnYWRkZWQnLiAoY29uaiBuaWwgaXRlbSkgcmV0dXJucyAoaXRlbSkuXG4gIChjb25qIGNvbGwpIHJldHVybnMgY29sbC4gKGNvbmopIHJldHVybnMgW10uXG4gIFRoZSAnYWRkaXRpb24nIG1heSBoYXBwZW4gYXQgZGlmZmVyZW50ICdwbGFjZXMnIGRlcGVuZGluZ1xuICBvbiB0aGUgY29uY3JldGUgdHlwZS4iLCA6YXJnbGlzdHMgW1tdIFtjb2xsXSBbY29sbCB4XSBbY29sbCB4ICYgeHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gY29ualxuIFwiY29ualtvaW5dLiBSZXR1cm5zIGEgbmV3IGNvbGxlY3Rpb24gd2l0aCB0aGUgeHNcXG4gICdhZGRlZCcuIChjb25qIG5pbCBpdGVtKSByZXR1cm5zIChpdGVtKS5cXG4gIChjb25qIGNvbGwpIHJldHVybnMgY29sbC4gKGNvbmopIHJldHVybnMgW10uXFxuICBUaGUgJ2FkZGl0aW9uJyBtYXkgaGFwcGVuIGF0IGRpZmZlcmVudCAncGxhY2VzJyBkZXBlbmRpbmdcXG4gIG9uIHRoZSBjb25jcmV0ZSB0eXBlLlwiXG4gKFtdIFtdKVxuIChbY29sbF0gY29sbClcbiAoW2NvbGwgeF0gKGlmLW5vdCAobmlsPyBjb2xsKSAoLWNvbmogY29sbCB4KSAobGlzdCB4KSkpXG4gKFtjb2xsIHggJiB4c11cbiAgKGlmIHhzIChyZWN1ciAoY29uaiBjb2xsIHgpIChmaXJzdCB4cykgKG5leHQgeHMpKSAoY29uaiBjb2xsIHgpKSkpXG4ifSB7OnN5bSAtc29ydGVkLXNlcSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBzb3J0ZWQgc2VxIGZyb20gY29sbCBpbiBlaXRoZXIgYXNjZW5kaW5nIG9yIGRlc2NlbmRpbmcgb3JkZXIuIiwgOmFyZ2xpc3RzIChbY29sbCBhc2NlbmRpbmc/XSl9LCA6cHJvdG9jb2wgSVNvcnRlZH0gezpzeW0gdHJhbnNkdWNlLCA6bWV0YSB7OmRvYyAicmVkdWNlIHdpdGggYSB0cmFuc2Zvcm1hdGlvbiBvZiBmICh4ZikuIElmIGluaXQgaXMgbm90XG4gIHN1cHBsaWVkLCAoZikgd2lsbCBiZSBjYWxsZWQgdG8gcHJvZHVjZSBpdC4gZiBzaG91bGQgYmUgYSByZWR1Y2luZ1xuICBzdGVwIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyBib3RoIDEgYW5kIDIgYXJndW1lbnRzLCBpZiBpdCBhY2NlcHRzXG4gIG9ubHkgMiB5b3UgY2FuIGFkZCB0aGUgYXJpdHktMSB3aXRoICdjb21wbGV0aW5nJy4gUmV0dXJucyB0aGUgcmVzdWx0XG4gIG9mIGFwcGx5aW5nICh0aGUgdHJhbnNmb3JtZWQpIHhmIHRvIGluaXQgYW5kIHRoZSBmaXJzdCBpdGVtIGluIGNvbGwsXG4gIHRoZW4gYXBwbHlpbmcgeGYgdG8gdGhhdCByZXN1bHQgYW5kIHRoZSAybmQgaXRlbSwgZXRjLiBJZiBjb2xsXG4gIGNvbnRhaW5zIG5vIGl0ZW1zLCByZXR1cm5zIGluaXQgYW5kIGYgaXMgbm90IGNhbGxlZC4gTm90ZSB0aGF0XG4gIGNlcnRhaW4gdHJhbnNmb3JtcyBtYXkgaW5qZWN0IG9yIHNraXAgaXRlbXMuIiwgOmFyZ2xpc3RzIFtbeGZvcm0gZiBjb2xsXSBbeGZvcm0gZiBpbml0IGNvbGxdXX0sIDpzb3VyY2UgIihkZWZuXG4gdHJhbnNkdWNlXG4gXCJyZWR1Y2Ugd2l0aCBhIHRyYW5zZm9ybWF0aW9uIG9mIGYgKHhmKS4gSWYgaW5pdCBpcyBub3RcXG4gIHN1cHBsaWVkLCAoZikgd2lsbCBiZSBjYWxsZWQgdG8gcHJvZHVjZSBpdC4gZiBzaG91bGQgYmUgYSByZWR1Y2luZ1xcbiAgc3RlcCBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgYm90aCAxIGFuZCAyIGFyZ3VtZW50cywgaWYgaXQgYWNjZXB0c1xcbiAgb25seSAyIHlvdSBjYW4gYWRkIHRoZSBhcml0eS0xIHdpdGggJ2NvbXBsZXRpbmcnLiBSZXR1cm5zIHRoZSByZXN1bHRcXG4gIG9mIGFwcGx5aW5nICh0aGUgdHJhbnNmb3JtZWQpIHhmIHRvIGluaXQgYW5kIHRoZSBmaXJzdCBpdGVtIGluIGNvbGwsXFxuICB0aGVuIGFwcGx5aW5nIHhmIHRvIHRoYXQgcmVzdWx0IGFuZCB0aGUgMm5kIGl0ZW0sIGV0Yy4gSWYgY29sbFxcbiAgY29udGFpbnMgbm8gaXRlbXMsIHJldHVybnMgaW5pdCBhbmQgZiBpcyBub3QgY2FsbGVkLiBOb3RlIHRoYXRcXG4gIGNlcnRhaW4gdHJhbnNmb3JtcyBtYXkgaW5qZWN0IG9yIHNraXAgaXRlbXMuXCJcbiAoW3hmb3JtIGYgY29sbF0gKHRyYW5zZHVjZSB4Zm9ybSBmIChmKSBjb2xsKSlcbiAoW3hmb3JtIGYgaW5pdCBjb2xsXVxuICAobGV0IFtmICh4Zm9ybSBmKSByZXQgKHJlZHVjZSBmIGluaXQgY29sbCldIChmIHJldCkpKSlcbiJ9IHs6c3ltIC1zd2FwISwgOm1ldGEgezpkb2MgIlN3YXBzIHRoZSB2YWx1ZSBvZiBvIHRvIGJlIChhcHBseSBmIGN1cnJlbnQtdmFsdWUtb2YtYXRvbSBhcmdzKS4iLCA6YXJnbGlzdHMgKFtvIGZdIFtvIGYgYV0gW28gZiBhIGJdIFtvIGYgYSBiIHhzXSl9LCA6cHJvdG9jb2wgSVN3YXB9IHs6c3ltICpwcmludC1sZW5ndGgqLCA6bWV0YSB7OmRvYyAiKnByaW50LWxlbmd0aCogY29udHJvbHMgaG93IG1hbnkgaXRlbXMgb2YgZWFjaCBjb2xsZWN0aW9uIHRoZVxuICBwcmludGVyIHdpbGwgcHJpbnQuIElmIGl0IGlzIGJvdW5kIHRvIGxvZ2ljYWwgZmFsc2UsIHRoZXJlIGlzIG5vXG4gIGxpbWl0LiBPdGhlcndpc2UsIGl0IG11c3QgYmUgYm91bmQgdG8gYW4gaW50ZWdlciBpbmRpY2F0aW5nIHRoZSBtYXhpbXVtXG4gIG51bWJlciBvZiBpdGVtcyBvZiBlYWNoIGNvbGxlY3Rpb24gdG8gcHJpbnQuIElmIGEgY29sbGVjdGlvbiBjb250YWluc1xuICBtb3JlIGl0ZW1zLCB0aGUgcHJpbnRlciB3aWxsIHByaW50IGl0ZW1zIHVwIHRvIHRoZSBsaW1pdCBmb2xsb3dlZCBieVxuICAnLi4uJyB0byByZXByZXNlbnQgdGhlIHJlbWFpbmluZyBpdGVtcy4gVGhlIHJvb3QgYmluZGluZyBpcyBuaWxcbiAgaW5kaWNhdGluZyBubyBsaW1pdC4ifSwgOnNvdXJjZSAiKGRlZiAqcHJpbnQtbGVuZ3RoKiBuaWwpXG4ifSB7OnN5bSBqcy1kZWxldGUsIDptZXRhIHs6ZG9jICJEZWxldGUgYSBwcm9wZXJ0eSBmcm9tIGEgSmF2YVNjcmlwdCBvYmplY3QuXG4gIFJldHVybnMgdHJ1ZSB1cG9uIHN1Y2Nlc3MsIGZhbHNlIG90aGVyd2lzZS4iLCA6YXJnbGlzdHMgKFtvYmoga2V5XSl9LCA6c291cmNlICIoZGVmblxuIGpzLWRlbGV0ZVxuIFwiRGVsZXRlIGEgcHJvcGVydHkgZnJvbSBhIEphdmFTY3JpcHQgb2JqZWN0LlxcbiAgUmV0dXJucyB0cnVlIHVwb24gc3VjY2VzcywgZmFsc2Ugb3RoZXJ3aXNlLlwiXG4gW29iaiBrZXldXG4gKGNsanMuY29yZS9qcy1kZWxldGUgb2JqIGtleSkpXG4ifSB7OnN5bSB0cnV0aF8sIDptZXRhIHs6ZG9jICJJbnRlcm5hbCAtIGRvIG5vdCB1c2UhIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gdHJ1dGhfIFwiSW50ZXJuYWwgLSBkbyBub3QgdXNlIVwiIFt4XSAoY2xqcy5jb3JlL3RydXRoXyB4KSlcbiJ9IHs6c3ltIGFycmF5LWluZGV4LW9mLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2FyciBrXSl9LCA6c291cmNlICIoZGVmblxuIGFycmF5LWluZGV4LW9mXG4gW2FyciBrXVxuIChjb25kXG4gIChrZXl3b3JkPyBrKVxuICAoYXJyYXktaW5kZXgtb2Yta2V5d29yZD8gYXJyIGspXG4gIChvciAoc3RyaW5nPyBrKSAobnVtYmVyPyBrKSlcbiAgKGFycmF5LWluZGV4LW9mLWlkZW50aWNhbD8gYXJyIGspXG4gIChzeW1ib2w/IGspXG4gIChhcnJheS1pbmRleC1vZi1zeW1ib2w/IGFyciBrKVxuICAobmlsPyBrKVxuICAoYXJyYXktaW5kZXgtb2YtbmlsPyBhcnIpXG4gIDplbHNlXG4gIChhcnJheS1pbmRleC1vZi1lcXVpdj8gYXJyIGspKSlcbiJ9IHs6c3ltIGtleS0+anMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtba10gW2sgcHJpbWl0aXZlLWZuXV19LCA6c291cmNlICIoZGVmblxuIGtleS0+anNcbiAoW2tdIChrZXktPmpzIGsgY2xqLT5qcykpXG4gKFtrIHByaW1pdGl2ZS1mbl1cbiAgKGNvbmRcbiAgIChzYXRpc2ZpZXM/IElFbmNvZGVKUyBrKVxuICAgKC1jbGotPmpzIGspXG4gICAob3IgKHN0cmluZz8gaykgKG51bWJlcj8gaykgKGtleXdvcmQ/IGspIChzeW1ib2w/IGspKVxuICAgKHByaW1pdGl2ZS1mbiBrKVxuICAgOmRlZmF1bHRcbiAgIChwci1zdHIgaykpKSlcbiJ9IHs6c3ltIElFbmNvZGVKUywgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKC1jbGotPmpzIC1rZXktPmpzKX0gezpzeW0gY29tcGFyZS1hbmQtc2V0ISwgOm1ldGEgezpkb2MgIkF0b21pY2FsbHkgc2V0cyB0aGUgdmFsdWUgb2YgYXRvbSB0byBuZXd2YWwgaWYgYW5kIG9ubHkgaWYgdGhlXG4gIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGF0b20gaXMgZXF1YWwgdG8gb2xkdmFsLiBSZXR1cm5zIHRydWUgaWZcbiAgc2V0IGhhcHBlbmVkLCBlbHNlIGZhbHNlLiIsIDphcmdsaXN0cyAoW2Egb2xkdmFsIG5ld3ZhbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjb21wYXJlLWFuZC1zZXQhXG4gXCJBdG9taWNhbGx5IHNldHMgdGhlIHZhbHVlIG9mIGF0b20gdG8gbmV3dmFsIGlmIGFuZCBvbmx5IGlmIHRoZVxcbiAgY3VycmVudCB2YWx1ZSBvZiB0aGUgYXRvbSBpcyBlcXVhbCB0byBvbGR2YWwuIFJldHVybnMgdHJ1ZSBpZlxcbiAgc2V0IGhhcHBlbmVkLCBlbHNlIGZhbHNlLlwiXG4gW2Egb2xkdmFsIG5ld3ZhbF1cbiAoaWYgKD0gKC1kZXJlZiBhKSBvbGR2YWwpIChkbyAocmVzZXQhIGEgbmV3dmFsKSB0cnVlKSBmYWxzZSkpXG4ifSB7OnN5bSBhcnJheS1zZXEsIDptZXRhIHs6ZG9jICJDcmVhdGUgYSBzZXEgZnJvbSBhIEphdmFTY3JpcHQgYXJyYXkuIiwgOmFyZ2xpc3RzIFtbYXJyYXldIFthcnJheSBpXV19LCA6c291cmNlICIoZGVmblxuIGFycmF5LXNlcVxuIFwiQ3JlYXRlIGEgc2VxIGZyb20gYSBKYXZhU2NyaXB0IGFycmF5LlwiXG4gKFthcnJheV0gKHByaW0tc2VxIGFycmF5IDApKVxuIChbYXJyYXkgaV0gKHByaW0tc2VxIGFycmF5IGkpKSlcbiJ9IHs6c3ltIGludGVybGVhdmUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbGF6eSBzZXEgb2YgdGhlIGZpcnN0IGl0ZW0gaW4gZWFjaCBjb2xsLCB0aGVuIHRoZSBzZWNvbmQgZXRjLiIsIDphcmdsaXN0cyBbW10gW2MxXSBbYzEgYzJdIFtjMSBjMiAmIGNvbGxzXV19LCA6c291cmNlICIoZGVmblxuIGludGVybGVhdmVcbiBcIlJldHVybnMgYSBsYXp5IHNlcSBvZiB0aGUgZmlyc3QgaXRlbSBpbiBlYWNoIGNvbGwsIHRoZW4gdGhlIHNlY29uZCBldGMuXCJcbiAoW10gKCkpXG4gKFtjMV0gKGxhenktc2VxIGMxKSlcbiAoW2MxIGMyXVxuICAobGF6eS1zZXFcbiAgIChsZXRcbiAgICBbczEgKHNlcSBjMSkgczIgKHNlcSBjMildXG4gICAgKHdoZW5cbiAgICAgKGFuZCBzMSBzMilcbiAgICAgKGNvbnNcbiAgICAgIChmaXJzdCBzMSlcbiAgICAgIChjb25zIChmaXJzdCBzMikgKGludGVybGVhdmUgKHJlc3QgczEpIChyZXN0IHMyKSkpKSkpKSlcbiAoW2MxIGMyICYgY29sbHNdXG4gIChsYXp5LXNlcVxuICAgKGxldFxuICAgIFtzcyAobWFwIHNlcSAoY29uaiBjb2xscyBjMiBjMSkpXVxuICAgICh3aGVuXG4gICAgIChldmVyeT8gaWRlbnRpdHkgc3MpXG4gICAgIChjb25jYXQgKG1hcCBmaXJzdCBzcykgKGFwcGx5IGludGVybGVhdmUgKG1hcCByZXN0IHNzKSkpKSkpKSlcbiJ9IHs6c3ltIHByaW50LW1hcCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttIHByaW50LW9uZSB3cml0ZXIgb3B0c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcmludC1tYXBcbiBbbSBwcmludC1vbmUgd3JpdGVyIG9wdHNdXG4gKGxldFxuICBbW25zIGxpZnQtbWFwXSAod2hlbiAobWFwPyBtKSAobGlmdC1ucyBtKSldXG4gIChpZlxuICAgbnNcbiAgIChwcmludC1wcmVmaXgtbWFwIChzdHIgXCIjOlwiIG5zKSBsaWZ0LW1hcCBwcmludC1vbmUgd3JpdGVyIG9wdHMpXG4gICAocHJpbnQtcHJlZml4LW1hcCBuaWwgbSBwcmludC1vbmUgd3JpdGVyIG9wdHMpKSkpXG4ifSB7OnN5bSBtYXA/LCA6bWV0YSB7OmRvYyAiUmV0dXJuIHRydWUgaWYgeCBzYXRpc2ZpZXMgSU1hcCIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWFwP1xuIFwiUmV0dXJuIHRydWUgaWYgeCBzYXRpc2ZpZXMgSU1hcFwiXG4gW3hdXG4gKGlmIChuaWw/IHgpIGZhbHNlIChzYXRpc2ZpZXM/IElNYXAgeCkpKVxuIn0gezpzeW0gbTMtQzEsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIG0zLUMxIChpbnQgMzQzMjkxODM1MykpXG4ifSB7OnN5bSBnZXQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSB2YWx1ZSBtYXBwZWQgdG8ga2V5LCBub3QtZm91bmQgb3IgbmlsIGlmIGtleSBub3QgcHJlc2VudC4iLCA6YXJnbGlzdHMgW1tvIGtdIFtvIGsgbm90LWZvdW5kXV19LCA6c291cmNlICIoZGVmblxuIGdldFxuIFwiUmV0dXJucyB0aGUgdmFsdWUgbWFwcGVkIHRvIGtleSwgbm90LWZvdW5kIG9yIG5pbCBpZiBrZXkgbm90IHByZXNlbnQuXCJcbiAoW28ga11cbiAgKHdoZW4tbm90XG4gICAobmlsPyBvKVxuICAgKGNvbmRcbiAgICAoaW1wbGVtZW50cz8gSUxvb2t1cCBvKVxuICAgICgtbG9va3VwIG8gaylcbiAgICAoYXJyYXk/IG8pXG4gICAgKHdoZW4gKGFuZCAoc29tZT8gaykgKDwgayAoLi1sZW5ndGggbykpKSAoYWdldCBvIChpbnQgaykpKVxuICAgIChzdHJpbmc/IG8pXG4gICAgKHdoZW4gKGFuZCAoc29tZT8gaykgKDwgLTEgayAoLi1sZW5ndGggbykpKSAoLmNoYXJBdCBvIChpbnQgaykpKVxuICAgIChuYXRpdmUtc2F0aXNmaWVzPyBJTG9va3VwIG8pXG4gICAgKC1sb29rdXAgbyBrKVxuICAgIDplbHNlXG4gICAgbmlsKSkpXG4gKFtvIGsgbm90LWZvdW5kXVxuICAoaWYtbm90XG4gICAobmlsPyBvKVxuICAgKGNvbmRcbiAgICAoaW1wbGVtZW50cz8gSUxvb2t1cCBvKVxuICAgICgtbG9va3VwIG8gayBub3QtZm91bmQpXG4gICAgKGFycmF5PyBvKVxuICAgIChpZlxuICAgICAoYW5kIChzb21lPyBrKSAoPCAtMSBrICguLWxlbmd0aCBvKSkpXG4gICAgIChhZ2V0IG8gKGludCBrKSlcbiAgICAgbm90LWZvdW5kKVxuICAgIChzdHJpbmc/IG8pXG4gICAgKGlmXG4gICAgIChhbmQgKHNvbWU/IGspICg8IC0xIGsgKC4tbGVuZ3RoIG8pKSlcbiAgICAgKC5jaGFyQXQgbyAoaW50IGspKVxuICAgICBub3QtZm91bmQpXG4gICAgKG5hdGl2ZS1zYXRpc2ZpZXM/IElMb29rdXAgbylcbiAgICAoLWxvb2t1cCBvIGsgbm90LWZvdW5kKVxuICAgIDplbHNlXG4gICAgbm90LWZvdW5kKVxuICAgbm90LWZvdW5kKSkpXG4ifSB7OnN5bSBpZGVudGl0eSwgOm1ldGEgezpkb2MgIlJldHVybnMgaXRzIGFyZ3VtZW50LiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGlkZW50aXR5IFwiUmV0dXJucyBpdHMgYXJndW1lbnQuXCIgW3hdIHgpXG4ifSB7OnN5bSBpbnRvLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG5ldyBjb2xsIGNvbnNpc3Rpbmcgb2YgdG8tY29sbCB3aXRoIGFsbCBvZiB0aGUgaXRlbXMgb2ZcbiAgZnJvbS1jb2xsIGNvbmpvaW5lZC4gQSB0cmFuc2R1Y2VyIG1heSBiZSBzdXBwbGllZC4iLCA6YXJnbGlzdHMgW1tdIFt0b10gW3RvIGZyb21dIFt0byB4Zm9ybSBmcm9tXV19LCA6c291cmNlICIoZGVmblxuIGludG9cbiBcIlJldHVybnMgYSBuZXcgY29sbCBjb25zaXN0aW5nIG9mIHRvLWNvbGwgd2l0aCBhbGwgb2YgdGhlIGl0ZW1zIG9mXFxuICBmcm9tLWNvbGwgY29uam9pbmVkLiBBIHRyYW5zZHVjZXIgbWF5IGJlIHN1cHBsaWVkLlwiXG4gKFtdIFtdKVxuIChbdG9dIHRvKVxuIChbdG8gZnJvbV1cbiAgKGlmLW5vdFxuICAgKG5pbD8gdG8pXG4gICAoaWZcbiAgICAoaW1wbGVtZW50cz8gSUVkaXRhYmxlQ29sbGVjdGlvbiB0bylcbiAgICAoLXdpdGgtbWV0YVxuICAgICAocGVyc2lzdGVudCEgKHJlZHVjZSAtY29uaiEgKHRyYW5zaWVudCB0bykgZnJvbSkpXG4gICAgIChtZXRhIHRvKSlcbiAgICAocmVkdWNlIC1jb25qIHRvIGZyb20pKVxuICAgKHJlZHVjZSBjb25qIHRvIGZyb20pKSlcbiAoW3RvIHhmb3JtIGZyb21dXG4gIChpZlxuICAgKGltcGxlbWVudHM/IElFZGl0YWJsZUNvbGxlY3Rpb24gdG8pXG4gICAoLXdpdGgtbWV0YVxuICAgIChwZXJzaXN0ZW50ISAodHJhbnNkdWNlIHhmb3JtIGNvbmohICh0cmFuc2llbnQgdG8pIGZyb20pKVxuICAgIChtZXRhIHRvKSlcbiAgICh0cmFuc2R1Y2UgeGZvcm0gY29uaiB0byBmcm9tKSkpKVxuIn0gezpzeW0gbG9uZywgOm1ldGEgezpkb2MgIkNvZXJjZSB0byBsb25nIGJ5IHN0cmlwcGluZyBkZWNpbWFsIHBsYWNlcy4gSWRlbnRpY2FsIHRvIGBpbnQnLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gbG9uZ1xuIFwiQ29lcmNlIHRvIGxvbmcgYnkgc3RyaXBwaW5nIGRlY2ltYWwgcGxhY2VzLiBJZGVudGljYWwgdG8gYGludCcuXCJcbiBbeF1cbiAoZml4IHgpKVxuIn0gezpzeW0gZG91YmxlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGRvdWJsZSBbeF0geClcbiJ9IHs6c3ltIHZvbGF0aWxlPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB4IGlzIGEgdm9sYXRpbGUuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB2b2xhdGlsZT9cbiBcIlJldHVybnMgdHJ1ZSBpZiB4IGlzIGEgdm9sYXRpbGUuXCJcbiBbeF1cbiAoaW5zdGFuY2U/IFZvbGF0aWxlIHgpKVxuIn0gezpzeW0gLWtleSwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGtleSBvZiB0aGUgbWFwIGVudHJ5LiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpwcm90b2NvbCBJTWFwRW50cnl9IHs6c3ltIG5maXJzdCwgOm1ldGEgezpkb2MgIlNhbWUgYXMgKG5leHQgKGZpcnN0IHgpKSIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuIG5maXJzdCBcIlNhbWUgYXMgKG5leHQgKGZpcnN0IHgpKVwiIFtjb2xsXSAobmV4dCAoZmlyc3QgY29sbCkpKVxuIn0gezpzeW0gbWV0YSwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG1ldGFkYXRhIG9mIG9iaiwgcmV0dXJucyBuaWwgaWYgdGhlcmUgaXMgbm8gbWV0YWRhdGEuIiwgOmFyZ2xpc3RzIChbb10pfSwgOnNvdXJjZSAiKGRlZm5cbiBtZXRhXG4gXCJSZXR1cm5zIHRoZSBtZXRhZGF0YSBvZiBvYmosIHJldHVybnMgbmlsIGlmIHRoZXJlIGlzIG5vIG1ldGFkYXRhLlwiXG4gW29dXG4gKHdoZW4gKGFuZCAobm90IChuaWw/IG8pKSAoc2F0aXNmaWVzPyBJTWV0YSBvKSkgKC1tZXRhIG8pKSlcbiJ9IHs6c3ltIC1rdi1yZWR1Y2UsIDptZXRhIHs6ZG9jICJSZWR1Y2VzIGFuIGFzc29jaWF0aXZlIGNvbGxlY3Rpb24gYW5kIHJldHVybnMgdGhlIHJlc3VsdC4gZiBzaG91bGQgYmVcbiAgICAgYSBmdW5jdGlvbiB0aGF0IHRha2VzIHRocmVlIGFyZ3VtZW50cy4iLCA6YXJnbGlzdHMgKFtjb2xsIGYgaW5pdF0pfSwgOnByb3RvY29sIElLVlJlZHVjZX0gezpzeW0gSUhhc2gsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgYWRkaW5nIGhhc2hpbmcgZnVuY3Rpb25hbGl0eSB0byBhIHR5cGUuIn0sIDptZXRob2RzICgtaGFzaCl9IHs6c3ltIGJpdC1hbmQtbm90LCA6bWV0YSB7OmRvYyAiQml0d2lzZSBhbmQgd2l0aCBjb21wbGVtZW50IiwgOmFyZ2xpc3RzIFtbeCB5XSBbeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBiaXQtYW5kLW5vdFxuIFwiQml0d2lzZSBhbmQgd2l0aCBjb21wbGVtZW50XCJcbiAoW3ggeV0gKGNsanMuY29yZS9iaXQtYW5kLW5vdCB4IHkpKVxuIChbeCB5ICYgbW9yZV0gKHJlZHVjZSBiaXQtYW5kLW5vdCAoY2xqcy5jb3JlL2JpdC1hbmQtbm90IHggeSkgbW9yZSkpKVxuIn0gezpzeW0gdmFyPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB2IGlzIG9mIHR5cGUgY2xqcy5jb3JlLlZhciIsIDphcmdsaXN0cyAoW3ZdKX0sIDpzb3VyY2UgIihkZWZuXG4gdmFyP1xuIFwiUmV0dXJucyB0cnVlIGlmIHYgaXMgb2YgdHlwZSBjbGpzLmNvcmUuVmFyXCJcbiBbdl1cbiAoaW5zdGFuY2U/IGNsanMuY29yZS5WYXIgdikpXG4ifSB7OnN5bSAtY29tcGFyYXRvciwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGNvbXBhcmF0b3IgZm9yIGNvbGwuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnByb3RvY29sIElTb3J0ZWR9IHs6c3ltIHVuY2hlY2tlZC1hZGQtaW50LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgc3VtIG9mIG51bXMuICgrKSByZXR1cm5zIDAuIiwgOmFyZ2xpc3RzIFtbXSBbeF0gW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gdW5jaGVja2VkLWFkZC1pbnRcbiBcIlJldHVybnMgdGhlIHN1bSBvZiBudW1zLiAoKykgcmV0dXJucyAwLlwiXG4gKFtdIDApXG4gKFt4XSB4KVxuIChbeCB5XSAoY2xqcy5jb3JlL3VuY2hlY2tlZC1hZGQtaW50IHggeSkpXG4gKFt4IHkgJiBtb3JlXVxuICAocmVkdWNlIHVuY2hlY2tlZC1hZGQtaW50IChjbGpzLmNvcmUvdW5jaGVja2VkLWFkZC1pbnQgeCB5KSBtb3JlKSkpXG4ifSB7OnN5bSBoYXNoLW9yZGVyZWQtY29sbCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGhhc2ggY29kZSwgY29uc2lzdGVudCB3aXRoID0sIGZvciBhbiBleHRlcm5hbCBvcmRlcmVkXG4gICBjb2xsZWN0aW9uIGltcGxlbWVudGluZyBJdGVyYWJsZS5cbiAgIFNlZSBodHRwOi8vY2xvanVyZS5vcmcvZGF0YV9zdHJ1Y3R1cmVzI2hhc2ggZm9yIGZ1bGwgYWxnb3JpdGhtcy4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIGhhc2gtb3JkZXJlZC1jb2xsXG4gXCJSZXR1cm5zIHRoZSBoYXNoIGNvZGUsIGNvbnNpc3RlbnQgd2l0aCA9LCBmb3IgYW4gZXh0ZXJuYWwgb3JkZXJlZFxcbiAgIGNvbGxlY3Rpb24gaW1wbGVtZW50aW5nIEl0ZXJhYmxlLlxcbiAgIFNlZSBodHRwOi8vY2xvanVyZS5vcmcvZGF0YV9zdHJ1Y3R1cmVzI2hhc2ggZm9yIGZ1bGwgYWxnb3JpdGhtcy5cIlxuIFtjb2xsXVxuIChsb29wXG4gIFtuIDAgaGFzaC1jb2RlIDEgY29sbCAoc2VxIGNvbGwpXVxuICAoaWYtbm90XG4gICAobmlsPyBjb2xsKVxuICAgKHJlY3VyXG4gICAgKGluYyBuKVxuICAgIChiaXQtb3IgKCsgKGltdWwgMzEgaGFzaC1jb2RlKSAoaGFzaCAoZmlyc3QgY29sbCkpKSAwKVxuICAgIChuZXh0IGNvbGwpKVxuICAgKG1peC1jb2xsZWN0aW9uLWhhc2ggaGFzaC1jb2RlIG4pKSkpXG4ifSB7OnN5bSByZXNldC1tZXRhISwgOm1ldGEgezpkb2MgIkF0b21pY2FsbHkgcmVzZXRzIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXRvbSIsIDphcmdsaXN0cyAoW2lyZWYgbV0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZXNldC1tZXRhIVxuIFwiQXRvbWljYWxseSByZXNldHMgdGhlIG1ldGFkYXRhIGZvciBhbiBhdG9tXCJcbiBbaXJlZiBtXVxuIChzZXQhICguLW1ldGEgaXJlZikgbSkpXG4ifSB7OnN5bSBJRXF1aXYsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgYWRkaW5nIHZhbHVlIGNvbXBhcmlzb24gZnVuY3Rpb25hbGl0eSB0byBhIHR5cGUuIn0sIDptZXRob2RzICgtZXF1aXYpfSB7OnN5bSBjeWNsZSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBsYXp5IChpbmZpbml0ZSEpIHNlcXVlbmNlIG9mIHJlcGV0aXRpb25zIG9mIHRoZSBpdGVtcyBpbiBjb2xsLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gY3ljbGVcbiBcIlJldHVybnMgYSBsYXp5IChpbmZpbml0ZSEpIHNlcXVlbmNlIG9mIHJlcGV0aXRpb25zIG9mIHRoZSBpdGVtcyBpbiBjb2xsLlwiXG4gW2NvbGxdXG4gKGlmLWxldFxuICBbdmFscyAoc2VxIGNvbGwpXVxuICAoQ3ljbGUuIG5pbCB2YWxzIG5pbCB2YWxzIG5pbClcbiAgKC4tRU1QVFkgTGlzdCkpKVxuIn0gezpzeW0gLWRlcmVmLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIHJlZmVyZW5jZSBvLiIsIDphcmdsaXN0cyAoW29dKX0sIDpwcm90b2NvbCBJRGVyZWZ9IHs6c3ltIGVtcHR5PywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiBjb2xsIGhhcyBubyBpdGVtcyAtIHNhbWUgYXMgKG5vdCAoc2VxIGNvbGwpKS5cbiAgUGxlYXNlIHVzZSB0aGUgaWRpb20gKHNlcSB4KSByYXRoZXIgdGhhbiAobm90IChlbXB0eT8geCkpIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbXB0eT9cbiBcIlJldHVybnMgdHJ1ZSBpZiBjb2xsIGhhcyBubyBpdGVtcyAtIHNhbWUgYXMgKG5vdCAoc2VxIGNvbGwpKS5cXG4gIFBsZWFzZSB1c2UgdGhlIGlkaW9tIChzZXEgeCkgcmF0aGVyIHRoYW4gKG5vdCAoZW1wdHk/IHgpKVwiXG4gW2NvbGxdXG4gKG9yIChuaWw/IGNvbGwpIChub3QgKHNlcSBjb2xsKSkpKVxuIn0gezpzeW0gc2hvcnQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gc2hvcnQgW3hdIHgpXG4ifSB7OnN5bSAtY2xqLT5qcywgOm1ldGEgezpkb2MgIlJlY3Vyc2l2ZWx5IHRyYW5zZm9ybXMgY2xqIHZhbHVlcyB0byBKYXZhU2NyaXB0IiwgOmFyZ2xpc3RzIChbeF0pfSwgOnByb3RvY29sIElFbmNvZGVKU30gezpzeW0gLWNodW5rZWQtZmlyc3QsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBmaXJzdCBjaHVuayBpbiBjb2xsLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpwcm90b2NvbCBJQ2h1bmtlZFNlcX0gezpzeW0gYWRkLXRhcCwgOm1ldGEgezpkb2MgIkFkZHMgZiwgYSBmbiBvZiBvbmUgYXJndW1lbnQsIHRvIHRoZSB0YXAgc2V0LiBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdpdGhcbiAgYW55dGhpbmcgc2VudCB2aWEgdGFwPi4gUmVtZW1iZXIgZiBpbiBvcmRlciB0byByZW1vdmUtdGFwIiwgOmFyZ2xpc3RzIChbZl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhZGQtdGFwXG4gXCJBZGRzIGYsIGEgZm4gb2Ygb25lIGFyZ3VtZW50LCB0byB0aGUgdGFwIHNldC4gVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB3aXRoXFxuICBhbnl0aGluZyBzZW50IHZpYSB0YXA+LiBSZW1lbWJlciBmIGluIG9yZGVyIHRvIHJlbW92ZS10YXBcIlxuIFtmXVxuIChtYXliZS1pbml0LXRhcHNldClcbiAoc3dhcCEgdGFwc2V0IGNvbmogZilcbiBuaWwpXG4ifSB7OnN5bSBmaWx0ZXJ2LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHZlY3RvciBvZiB0aGUgaXRlbXMgaW4gY29sbCBmb3Igd2hpY2hcbiAgKHByZWQgaXRlbSkgcmV0dXJucyBsb2dpY2FsIHRydWUuIHByZWQgbXVzdCBiZSBmcmVlIG9mIHNpZGUtZWZmZWN0cy4iLCA6YXJnbGlzdHMgKFtwcmVkIGNvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gZmlsdGVydlxuIFwiUmV0dXJucyBhIHZlY3RvciBvZiB0aGUgaXRlbXMgaW4gY29sbCBmb3Igd2hpY2hcXG4gIChwcmVkIGl0ZW0pIHJldHVybnMgbG9naWNhbCB0cnVlLiBwcmVkIG11c3QgYmUgZnJlZSBvZiBzaWRlLWVmZmVjdHMuXCJcbiBbcHJlZCBjb2xsXVxuICgtPlxuICAocmVkdWNlIChmbiBbdiBvXSAoaWYgKHByZWQgbykgKGNvbmohIHYgbykgdikpICh0cmFuc2llbnQgW10pIGNvbGwpXG4gIHBlcnNpc3RlbnQhKSlcbiJ9IHs6c3ltIGhhc2gsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBoYXNoIGNvZGUgb2YgaXRzIGFyZ3VtZW50LiBOb3RlIHRoaXMgaXMgdGhlIGhhc2ggY29kZVxuICAgY29uc2lzdGVudCB3aXRoID0uIiwgOmFyZ2xpc3RzIChbb10pfSwgOnNvdXJjZSAiKGRlZm5cbiBoYXNoXG4gXCJSZXR1cm5zIHRoZSBoYXNoIGNvZGUgb2YgaXRzIGFyZ3VtZW50LiBOb3RlIHRoaXMgaXMgdGhlIGhhc2ggY29kZVxcbiAgIGNvbnNpc3RlbnQgd2l0aCA9LlwiXG4gW29dXG4gKGNvbmRcbiAgKGltcGxlbWVudHM/IElIYXNoIG8pXG4gIChiaXQteG9yICgtaGFzaCBvKSAwKVxuICAobnVtYmVyPyBvKVxuICAoaWZcbiAgIChqcy9pc0Zpbml0ZSBvKVxuICAgKGpzLW1vZCAoTWF0aC9mbG9vciBvKSAyMTQ3NDgzNjQ3KVxuICAgKGNhc2UgbyAjI0luZiAyMTQ2NDM1MDcyICMjLUluZiAtMTA0ODU3NiAyMTQ2OTU5MzYwKSlcbiAgKHRydWU/IG8pXG4gIDEyMzFcbiAgKGZhbHNlPyBvKVxuICAxMjM3XG4gIChzdHJpbmc/IG8pXG4gIChtMy1oYXNoLWludCAoaGFzaC1zdHJpbmcgbykpXG4gIChpbnN0YW5jZT8ganMvRGF0ZSBvKVxuICAoYml0LXhvciAoLnZhbHVlT2YgbykgMClcbiAgKG5pbD8gbylcbiAgMFxuICA6ZWxzZVxuICAoYml0LXhvciAoLWhhc2ggbykgMCkpKVxuIn0gezpzeW0gcXVvdCwgOm1ldGEgezpkb2MgInF1b3RbaWVudF0gb2YgZGl2aWRpbmcgbnVtZXJhdG9yIGJ5IGRlbm9taW5hdG9yLiIsIDphcmdsaXN0cyAoW24gZF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBxdW90XG4gXCJxdW90W2llbnRdIG9mIGRpdmlkaW5nIG51bWVyYXRvciBieSBkZW5vbWluYXRvci5cIlxuIFtuIGRdXG4gKGxldCBbcmVtIChqcy1tb2QgbiBkKV0gKGZpeCAoLyAoLSBuIHJlbSkgZCkpKSlcbiJ9IHs6c3ltIG5zLWludGVybnMqLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG1hcCBvZiB0aGUgaW50ZXJuIG1hcHBpbmdzIGZvciB0aGUgbmFtZXNwYWNlLlxuICBCb290c3RyYXAgb25seS4iLCA6YXJnbGlzdHMgKFtzeW1dKX0sIDpzb3VyY2UgIihkZWZuXG4gbnMtaW50ZXJucypcbiBcIlJldHVybnMgYSBtYXAgb2YgdGhlIGludGVybiBtYXBwaW5ncyBmb3IgdGhlIG5hbWVzcGFjZS5cXG4gIEJvb3RzdHJhcCBvbmx5LlwiXG4gW3N5bV1cbiAobGV0XG4gIFtucy1vYmogKGZpbmQtbnMtb2JqIHN5bSkgbnMgKE5hbWVzcGFjZS4gbnMtb2JqIHN5bSldXG4gIChsZXRmblxuICAgWyhzdGVwXG4gICAgIFtyZXQga11cbiAgICAgKGxldFxuICAgICAgW3Zhci1zeW0gKHN5bWJvbCAoZGVtdW5nZSBrKSldXG4gICAgICAoYXNzb2NcbiAgICAgICByZXRcbiAgICAgICB2YXItc3ltXG4gICAgICAgKFZhci5cbiAgICAgICAgKGZuKiBbXSAoZ29iamVjdC9nZXQgbnMtb2JqIGspKVxuICAgICAgICAoc3ltYm9sIChzdHIgc3ltKSAoc3RyIHZhci1zeW0pKVxuICAgICAgICB7Om5zIG5zfSkpKSldXG4gICAocmVkdWNlIHN0ZXAge30gKGpzLWtleXMgbnMtb2JqKSkpKSlcbiJ9IHs6c3ltIHVuY2hlY2tlZC1kb3VibGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gdW5jaGVja2VkLWRvdWJsZSBbeF0geClcbiJ9IHs6c3ltIHJhbmdlZC1pdGVyYXRvciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt2IHN0YXJ0IGVuZF0pfSwgOnNvdXJjZSAiKGRlZm5cbiByYW5nZWQtaXRlcmF0b3JcbiBbdiBzdGFydCBlbmRdXG4gKGxldFxuICBbaSBzdGFydF1cbiAgKFJhbmdlZEl0ZXJhdG9yLlxuICAgaVxuICAgKC0gaSAoanMtbW9kIGkgMzIpKVxuICAgKHdoZW4gKDwgc3RhcnQgKGNvdW50IHYpKSAodW5jaGVja2VkLWFycmF5LWZvciB2IGkpKVxuICAgdlxuICAgc3RhcnRcbiAgIGVuZCkpKVxuIn0gezpzeW0gSVRyYW5zaWVudFZlY3RvciwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhZGRpbmcgdmVjdG9yIGZ1bmN0aW9uYWxpdHkgdG8gdHJhbnNpZW50IGNvbGxlY3Rpb25zLiJ9LCA6bWV0aG9kcyAoLWFzc29jLW4hIC1wb3AhKX0gezpzeW0ga2V5LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUga2V5IG9mIHRoZSBtYXAgZW50cnkuIiwgOmFyZ2xpc3RzIChbbWFwLWVudHJ5XSl9LCA6c291cmNlICIoZGVmblxuIGtleVxuIFwiUmV0dXJucyB0aGUga2V5IG9mIHRoZSBtYXAgZW50cnkuXCJcbiBbbWFwLWVudHJ5XVxuICgta2V5IG1hcC1lbnRyeSkpXG4ifSB7OnN5bSBsb25ncywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiBsb25ncyBbeF0geClcbiJ9IHs6c3ltIG5vdD0sIDptZXRhIHs6ZG9jICJTYW1lIGFzIChub3QgKD0gb2JqMSBvYmoyKSkiLCA6YXJnbGlzdHMgW1t4XSBbeCB5XSBbeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBub3Q9XG4gXCJTYW1lIGFzIChub3QgKD0gb2JqMSBvYmoyKSlcIlxuIChbeF0gZmFsc2UpXG4gKFt4IHldIChub3QgKD0geCB5KSkpXG4gKFt4IHkgJiBtb3JlXSAobm90IChhcHBseSA9IHggeSBtb3JlKSkpKVxuIn0gezpzeW0gc2V0LXByaW50LWVyci1mbiEsIDptZXRhIHs6ZG9jICJTZXQgKnByaW50LWVyci1mbiogdG8gZi4iLCA6YXJnbGlzdHMgKFtmXSl9LCA6c291cmNlICIoZGVmblxuIHNldC1wcmludC1lcnItZm4hXG4gXCJTZXQgKnByaW50LWVyci1mbiogdG8gZi5cIlxuIFtmXVxuIChzZXQhICpwcmludC1lcnItZm4qIGYpKVxuIn0gezpzeW0gZmFzdC1wYXRoLXByb3RvY29scywgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBmYXN0LXBhdGgtcHJvdG9jb2xzXG4gXCJwcm90b2NvbCBmcW4gLT4gW3BhcnRpdGlvbiBudW1iZXIsIGJpdF1cIlxuICh6aXBtYXBcbiAgKG1hcFxuICAgKGZuKiBbcDFfXzQ1MTQ2I10gKHN5bWJvbCBcImNsanMuY29yZVwiIChjb3JlL3N0ciBwMV9fNDUxNDYjKSkpXG4gICAnW0lGblxuICAgICBJQ291bnRlZFxuICAgICBJRW1wdHlhYmxlQ29sbGVjdGlvblxuICAgICBJQ29sbGVjdGlvblxuICAgICBJSW5kZXhlZFxuICAgICBBU2VxXG4gICAgIElTZXFcbiAgICAgSU5leHRcbiAgICAgSUxvb2t1cFxuICAgICBJQXNzb2NpYXRpdmVcbiAgICAgSU1hcFxuICAgICBJTWFwRW50cnlcbiAgICAgSVNldFxuICAgICBJU3RhY2tcbiAgICAgSVZlY3RvclxuICAgICBJRGVyZWZcbiAgICAgSURlcmVmV2l0aFRpbWVvdXRcbiAgICAgSU1ldGFcbiAgICAgSVdpdGhNZXRhXG4gICAgIElSZWR1Y2VcbiAgICAgSUtWUmVkdWNlXG4gICAgIElFcXVpdlxuICAgICBJSGFzaFxuICAgICBJU2VxYWJsZVxuICAgICBJU2VxdWVudGlhbFxuICAgICBJTGlzdFxuICAgICBJUmVjb3JkXG4gICAgIElSZXZlcnNpYmxlXG4gICAgIElTb3J0ZWRcbiAgICAgSVByaW50V2l0aFdyaXRlclxuICAgICBJV3JpdGVyXG4gICAgIElQcmludFdpdGhXcml0ZXJcbiAgICAgSVBlbmRpbmdcbiAgICAgSVdhdGNoYWJsZVxuICAgICBJRWRpdGFibGVDb2xsZWN0aW9uXG4gICAgIElUcmFuc2llbnRDb2xsZWN0aW9uXG4gICAgIElUcmFuc2llbnRBc3NvY2lhdGl2ZVxuICAgICBJVHJhbnNpZW50TWFwXG4gICAgIElUcmFuc2llbnRWZWN0b3JcbiAgICAgSVRyYW5zaWVudFNldFxuICAgICBJTXVsdGlGblxuICAgICBJQ2h1bmtlZFNlcVxuICAgICBJQ2h1bmtlZE5leHRcbiAgICAgSUNvbXBhcmFibGVcbiAgICAgSU5hbWVkXG4gICAgIElDbG9uZWFibGVcbiAgICAgSUF0b21cbiAgICAgSVJlc2V0XG4gICAgIElTd2FwXG4gICAgIElJdGVyYWJsZV0pXG4gIChpdGVyYXRlXG4gICAoY29yZS9mblxuICAgIFtbcCBiXV1cbiAgICAoaWZcbiAgICAgKGNvcmUvPT0gMjE0NzQ4MzY0OCBiKVxuICAgICBbKGNvcmUvaW5jIHApIDFdXG4gICAgIFtwICM/KDpjbGogKGNvcmUvYml0LXNoaWZ0LWxlZnQgYiAxKSA6Y2xqcyAoY29yZS8qIDIgYikpXSkpXG4gICBbMCAxXSkpKVxuIn0gezpzeW0gc3RyaW5nPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB4IGlzIGEgSmF2YVNjcmlwdCBzdHJpbmcuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzdHJpbmc/XG4gXCJSZXR1cm5zIHRydWUgaWYgeCBpcyBhIEphdmFTY3JpcHQgc3RyaW5nLlwiXG4gW3hdXG4gKGlkZW50aWNhbD8gXCJzdHJpbmdcIiAoZ29vZy90eXBlT2YgeCkpKVxuIn0gezpzeW0gdXJpPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSB4IGlzIGEgZ29vZy5VcmkgaW5zdGFuY2UuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB1cmk/XG4gXCJSZXR1cm5zIHRydWUgeCBpcyBhIGdvb2cuVXJpIGluc3RhbmNlLlwiXG4gezphZGRlZCBcIjEuOVwifVxuIFt4XVxuIChpbnN0YW5jZT8gZ29vZy5VcmkgeCkpXG4ifSB7OnN5bSBlczYtaXRlcmF0b3IsIDptZXRhIHs6ZG9jICJFWFBFUklNRU5UQUw6IFJldHVybiBhIEVTMjAxNSBjb21wYXRpYmxlIGl0ZXJhdG9yIGZvciBjb2xsLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gZXM2LWl0ZXJhdG9yXG4gXCJFWFBFUklNRU5UQUw6IFJldHVybiBhIEVTMjAxNSBjb21wYXRpYmxlIGl0ZXJhdG9yIGZvciBjb2xsLlwiXG4gW2NvbGxdXG4gKEVTNkl0ZXJhdG9yLiAoc2VxIGNvbGwpKSlcbiJ9IHs6c3ltIHByLXN0ci13aXRoLW9wdHMsIDptZXRhIHs6ZG9jICJQcmludHMgYSBzZXF1ZW5jZSBvZiBvYmplY3RzIHRvIGEgc3RyaW5nLCBvYnNlcnZpbmcgYWxsIHRoZVxuICBvcHRpb25zIGdpdmVuIGluIG9wdHMiLCA6YXJnbGlzdHMgKFtvYmpzIG9wdHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gcHItc3RyLXdpdGgtb3B0c1xuIFwiUHJpbnRzIGEgc2VxdWVuY2Ugb2Ygb2JqZWN0cyB0byBhIHN0cmluZywgb2JzZXJ2aW5nIGFsbCB0aGVcXG4gIG9wdGlvbnMgZ2l2ZW4gaW4gb3B0c1wiXG4gW29ianMgb3B0c11cbiAoaWYgKGVtcHR5PyBvYmpzKSBcIlwiIChzdHIgKHByLXNiLXdpdGgtb3B0cyBvYmpzIG9wdHMpKSkpXG4ifSB7OnN5bSBtMy1DMiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgbTMtQzIgKGludCA0NjE4NDU5MDcpKVxuIn0gezpzeW0gKnByaW50LW5ld2xpbmUqLCA6bWV0YSB7OmRvYyAiV2hlbiBzZXQgdG8gbG9naWNhbCBmYWxzZSB3aWxsIGRyb3AgbmV3bGluZXMgZnJvbSBwcmludGluZyBjYWxscy5cbiAgVGhpcyBpcyB0byB3b3JrIGFyb3VuZCB0aGUgaW1wbGljaXQgbmV3bGluZXMgZW1pdHRlZCBieSBzdGFuZGFyZCBKYXZhU2NyaXB0XG4gIGNvbnNvbGUgb2JqZWN0cy4ifSwgOnNvdXJjZSAiKGRlZiAqcHJpbnQtbmV3bGluZSogdHJ1ZSlcbiJ9IHs6c3ltIHVuY2hlY2tlZC1tdWx0aXBseS1pbnQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBwcm9kdWN0IG9mIG51bXMuICgqKSByZXR1cm5zIDEuIiwgOmFyZ2xpc3RzIFtbXSBbeF0gW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gdW5jaGVja2VkLW11bHRpcGx5LWludFxuIFwiUmV0dXJucyB0aGUgcHJvZHVjdCBvZiBudW1zLiAoKikgcmV0dXJucyAxLlwiXG4gKFtdIDEpXG4gKFt4XSB4KVxuIChbeCB5XSAoY2xqcy5jb3JlL3VuY2hlY2tlZC1tdWx0aXBseS1pbnQgeCB5KSlcbiAoW3ggeSAmIG1vcmVdXG4gIChyZWR1Y2VcbiAgIHVuY2hlY2tlZC1tdWx0aXBseS1pbnRcbiAgIChjbGpzLmNvcmUvdW5jaGVja2VkLW11bHRpcGx5LWludCB4IHkpXG4gICBtb3JlKSkpXG4ifSB7OnN5bSBjaHVuay1yZXN0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuIGNodW5rLXJlc3QgW3NdICgtY2h1bmtlZC1yZXN0IHMpKVxuIn0gezpzeW0gcmVtb3ZlLWFsbC1tZXRob2RzLCA6bWV0YSB7OmRvYyAiUmVtb3ZlcyBhbGwgb2YgdGhlIG1ldGhvZHMgb2YgbXVsdGltZXRob2QuIiwgOmFyZ2xpc3RzIChbbXVsdGlmbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZW1vdmUtYWxsLW1ldGhvZHNcbiBcIlJlbW92ZXMgYWxsIG9mIHRoZSBtZXRob2RzIG9mIG11bHRpbWV0aG9kLlwiXG4gW211bHRpZm5dXG4gKC1yZXNldCBtdWx0aWZuKSlcbiJ9IHs6c3ltIHRyYW1wb2xpbmUsIDptZXRhIHs6ZG9jICJ0cmFtcG9saW5lIGNhbiBiZSB1c2VkIHRvIGNvbnZlcnQgYWxnb3JpdGhtcyByZXF1aXJpbmcgbXV0dWFsXG4gIHJlY3Vyc2lvbiB3aXRob3V0IHN0YWNrIGNvbnN1bXB0aW9uLiBDYWxscyBmIHdpdGggc3VwcGxpZWQgYXJncywgaWZcbiAgYW55LiBJZiBmIHJldHVybnMgYSBmbiwgY2FsbHMgdGhhdCBmbiB3aXRoIG5vIGFyZ3VtZW50cywgYW5kXG4gIGNvbnRpbnVlcyB0byByZXBlYXQsIHVudGlsIHRoZSByZXR1cm4gdmFsdWUgaXMgbm90IGEgZm4sIHRoZW5cbiAgcmV0dXJucyB0aGF0IG5vbi1mbiB2YWx1ZS4gTm90ZSB0aGF0IGlmIHlvdSB3YW50IHRvIHJldHVybiBhIGZuIGFzIGFcbiAgZmluYWwgdmFsdWUsIHlvdSBtdXN0IHdyYXAgaXQgaW4gc29tZSBkYXRhIHN0cnVjdHVyZSBhbmQgdW5wYWNrIGl0XG4gIGFmdGVyIHRyYW1wb2xpbmUgcmV0dXJucy4iLCA6YXJnbGlzdHMgW1tmXSBbZiAmIGFyZ3NdXX0sIDpzb3VyY2UgIihkZWZuXG4gdHJhbXBvbGluZVxuIFwidHJhbXBvbGluZSBjYW4gYmUgdXNlZCB0byBjb252ZXJ0IGFsZ29yaXRobXMgcmVxdWlyaW5nIG11dHVhbFxcbiAgcmVjdXJzaW9uIHdpdGhvdXQgc3RhY2sgY29uc3VtcHRpb24uIENhbGxzIGYgd2l0aCBzdXBwbGllZCBhcmdzLCBpZlxcbiAgYW55LiBJZiBmIHJldHVybnMgYSBmbiwgY2FsbHMgdGhhdCBmbiB3aXRoIG5vIGFyZ3VtZW50cywgYW5kXFxuICBjb250aW51ZXMgdG8gcmVwZWF0LCB1bnRpbCB0aGUgcmV0dXJuIHZhbHVlIGlzIG5vdCBhIGZuLCB0aGVuXFxuICByZXR1cm5zIHRoYXQgbm9uLWZuIHZhbHVlLiBOb3RlIHRoYXQgaWYgeW91IHdhbnQgdG8gcmV0dXJuIGEgZm4gYXMgYVxcbiAgZmluYWwgdmFsdWUsIHlvdSBtdXN0IHdyYXAgaXQgaW4gc29tZSBkYXRhIHN0cnVjdHVyZSBhbmQgdW5wYWNrIGl0XFxuICBhZnRlciB0cmFtcG9saW5lIHJldHVybnMuXCJcbiAoW2ZdIChsZXQgW3JldCAoZildIChpZiAoZm4/IHJldCkgKHJlY3VyIHJldCkgcmV0KSkpXG4gKFtmICYgYXJnc10gKHRyYW1wb2xpbmUgKGZuKiBbXSAoYXBwbHkgZiBhcmdzKSkpKSlcbiJ9IHs6c3ltIGRvdWJsZT8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgZm9yIEphdmFTY3JpcHQgbnVtYmVycywgZmFsc2Ugb3RoZXJ3aXNlLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gZG91YmxlP1xuIFwiUmV0dXJucyB0cnVlIGZvciBKYXZhU2NyaXB0IG51bWJlcnMsIGZhbHNlIG90aGVyd2lzZS5cIlxuIFt4XVxuIChudW1iZXI/IHgpKVxuIn0gezpzeW0gdmVjLCA6bWV0YSB7OmRvYyAiQ3JlYXRlcyBhIG5ldyB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29udGVudHMgb2YgY29sbC4gSmF2YVNjcmlwdCBhcnJheXNcbiAgd2lsbCBiZSBhbGlhc2VkIGFuZCBzaG91bGQgbm90IGJlIG1vZGlmaWVkLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gdmVjXG4gXCJDcmVhdGVzIGEgbmV3IHZlY3RvciBjb250YWluaW5nIHRoZSBjb250ZW50cyBvZiBjb2xsLiBKYXZhU2NyaXB0IGFycmF5c1xcbiAgd2lsbCBiZSBhbGlhc2VkIGFuZCBzaG91bGQgbm90IGJlIG1vZGlmaWVkLlwiXG4gW2NvbGxdXG4gKGNvbmRcbiAgKG1hcC1lbnRyeT8gY29sbClcbiAgWyhrZXkgY29sbCkgKHZhbCBjb2xsKV1cbiAgKHZlY3Rvcj8gY29sbClcbiAgKHdpdGgtbWV0YSBjb2xsIG5pbClcbiAgKGFycmF5PyBjb2xsKVxuICAoLmZyb21BcnJheSBQZXJzaXN0ZW50VmVjdG9yIGNvbGwgdHJ1ZSlcbiAgOmVsc2VcbiAgKC1wZXJzaXN0ZW50IVxuICAgKHJlZHVjZSAtY29uaiEgKC1hcy10cmFuc2llbnQgKC4tRU1QVFkgUGVyc2lzdGVudFZlY3RvcikpIGNvbGwpKSkpXG4ifSB7OnN5bSAqcHJpbnQtbWV0YSosIDptZXRhIHs6ZG9jICJJZiBzZXQgdG8gbG9naWNhbCB0cnVlLCB3aGVuIHByaW50aW5nIGFuIG9iamVjdCwgaXRzIG1ldGFkYXRhIHdpbGwgYWxzb1xuICBiZSBwcmludGVkIGluIGEgZm9ybSB0aGF0IGNhbiBiZSByZWFkIGJhY2sgYnkgdGhlIHJlYWRlci5cblxuICBEZWZhdWx0cyB0byBmYWxzZS4ifSwgOnNvdXJjZSAiKGRlZiAqcHJpbnQtbWV0YSogZmFsc2UpXG4ifSB7OnN5bSAtbm90aWZ5LXdhdGNoZXMsIDptZXRhIHs6ZG9jICJDYWxscyBhbGwgd2F0Y2hlcnMgd2l0aCB0aGlzLCBvbGR2YWwgYW5kIG5ld3ZhbC4iLCA6YXJnbGlzdHMgKFt0aGlzIG9sZHZhbCBuZXd2YWxdKX0sIDpwcm90b2NvbCBJV2F0Y2hhYmxlfSB7OnN5bSBpbnQsIDptZXRhIHs6ZG9jICJDb2VyY2UgdG8gaW50IGJ5IHN0cmlwcGluZyBkZWNpbWFsIHBsYWNlcy4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiBpbnQgXCJDb2VyY2UgdG8gaW50IGJ5IHN0cmlwcGluZyBkZWNpbWFsIHBsYWNlcy5cIiBbeF0gKGJpdC1vciB4IDApKVxuIn0gezpzeW0gbWFwLWVudHJ5PywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB4IHNhdGlzZmllcyBJTWFwRW50cnkiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIG1hcC1lbnRyeT9cbiBcIlJldHVybnMgdHJ1ZSBpZiB4IHNhdGlzZmllcyBJTWFwRW50cnlcIlxuIFt4XVxuIChpbXBsZW1lbnRzPyBJTWFwRW50cnkgeCkpXG4ifSB7OnN5bSByYW5kLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHJhbmRvbSBmbG9hdGluZyBwb2ludCBudW1iZXIgYmV0d2VlbiAwIChpbmNsdXNpdmUpIGFuZFxuICBuIChkZWZhdWx0IDEpIChleGNsdXNpdmUpLiIsIDphcmdsaXN0cyBbW10gW25dXX0sIDpzb3VyY2UgIihkZWZuXG4gcmFuZFxuIFwiUmV0dXJucyBhIHJhbmRvbSBmbG9hdGluZyBwb2ludCBudW1iZXIgYmV0d2VlbiAwIChpbmNsdXNpdmUpIGFuZFxcbiAgbiAoZGVmYXVsdCAxKSAoZXhjbHVzaXZlKS5cIlxuIChbXSAocmFuZCAxKSlcbiAoW25dICgqIChNYXRoL3JhbmRvbSkgbikpKVxuIn0gezpzeW0gc2Vjb25kLCA6bWV0YSB7OmRvYyAiU2FtZSBhcyAoZmlyc3QgKG5leHQgeCkpIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm4gc2Vjb25kIFwiU2FtZSBhcyAoZmlyc3QgKG5leHQgeCkpXCIgW2NvbGxdIChmaXJzdCAobmV4dCBjb2xsKSkpXG4ifSB7OnN5bSBmaW5kLW5zLW9iaiwgOm1ldGEgezpkb2MgIkJvb3RzdHJhcCBvbmx5LiIsIDphcmdsaXN0cyAoW25zXSl9LCA6c291cmNlICIoZGVmblxuIGZpbmQtbnMtb2JqXG4gXCJCb290c3RyYXAgb25seS5cIlxuIFtuc11cbiAobGV0XG4gIFttdW5nZWQtbnMgKG11bmdlIChzdHIgbnMpKSBzZWdzICguc3BsaXQgbXVuZ2VkLW5zIFwiLlwiKV1cbiAgKGNhc2VcbiAgICp0YXJnZXQqXG4gICBcIm5vZGVqc1wiXG4gICAoaWZcbiAgICBqcy9DT01QSUxFRFxuICAgIChmaW5kLW5zLW9iaipcbiAgICAgKHRyeVxuICAgICAgKGxldFxuICAgICAgIFtjdHh0IChqcy9ldmFsIChmaXJzdCBzZWdzKSldXG4gICAgICAgKHdoZW4gKGFuZCBjdHh0IChvYmplY3Q/IGN0eHQpKSBjdHh0KSlcbiAgICAgIChjYXRjaCBqcy9SZWZlcmVuY2VFcnJvciBlIG5pbCkpXG4gICAgIChuZXh0IHNlZ3MpKVxuICAgIChmaW5kLW5zLW9iaiogZ29vZy9nbG9iYWwgc2VncykpXG4gICAoXCJkZWZhdWx0XCIgXCJ3ZWJ3b3JrZXJcIilcbiAgIChmaW5kLW5zLW9iaiogZ29vZy9nbG9iYWwgc2VncylcbiAgICh0aHJvd1xuICAgIChqcy9FcnJvci5cbiAgICAgKHN0ciBcImZpbmQtbnMtb2JqIG5vdCBzdXBwb3J0ZWQgZm9yIHRhcmdldCBcIiAqdGFyZ2V0KikpKSkpKVxuIn0gezpzeW0gSUVkaXRhYmxlQ29sbGVjdGlvbiwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBjb2xsZWN0aW9ucyB3aGljaCBjYW4gdHJhbnNmb3JtZWQgdG8gdHJhbnNpZW50cy4ifSwgOm1ldGhvZHMgKC1hcy10cmFuc2llbnQpfSB7OnN5bSBoYXNoLWNvbWJpbmUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc2VlZCBoYXNoXSl9LCA6c291cmNlICIoZGVmblxuIGhhc2gtY29tYmluZVxuIFtzZWVkIGhhc2hdXG4gKGJpdC14b3JcbiAgc2VlZFxuICAoKyBoYXNoIDI2NTQ0MzU3NjkgKGJpdC1zaGlmdC1sZWZ0IHNlZWQgNikgKGJpdC1zaGlmdC1yaWdodCBzZWVkIDIpKSkpXG4ifSB7OnN5bSA+LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBub24tbmlsIGlmIG51bXMgYXJlIGluIG1vbm90b25pY2FsbHkgZGVjcmVhc2luZyBvcmRlcixcbiAgb3RoZXJ3aXNlIGZhbHNlLiIsIDphcmdsaXN0cyBbW3hdIFt4IHldIFt4IHkgJiBtb3JlXV19LCA6c291cmNlICIoZGVmblxuID5cbiBcIlJldHVybnMgbm9uLW5pbCBpZiBudW1zIGFyZSBpbiBtb25vdG9uaWNhbGx5IGRlY3JlYXNpbmcgb3JkZXIsXFxuICBvdGhlcndpc2UgZmFsc2UuXCJcbiAoW3hdIHRydWUpXG4gKFt4IHldIChjbGpzLmNvcmUvPiB4IHkpKVxuIChbeCB5ICYgbW9yZV1cbiAgKGlmXG4gICAoY2xqcy5jb3JlLz4geCB5KVxuICAgKGlmXG4gICAgKG5leHQgbW9yZSlcbiAgICAocmVjdXIgeSAoZmlyc3QgbW9yZSkgKG5leHQgbW9yZSkpXG4gICAgKGNsanMuY29yZS8+IHkgKGZpcnN0IG1vcmUpKSlcbiAgIGZhbHNlKSkpXG4ifSB7OnN5bSAtbmFtZSwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG5hbWUgU3RyaW5nIG9mIHguIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnByb3RvY29sIElOYW1lZH0gezpzeW0gcmVwbGFjZSwgOm1ldGEgezpkb2MgIkdpdmVuIGEgbWFwIG9mIHJlcGxhY2VtZW50IHBhaXJzIGFuZCBhIHZlY3Rvci9jb2xsZWN0aW9uLCByZXR1cm5zIGFcbiAgdmVjdG9yL3NlcSB3aXRoIGFueSBlbGVtZW50cyA9IGEga2V5IGluIHNtYXAgcmVwbGFjZWQgd2l0aCB0aGVcbiAgY29ycmVzcG9uZGluZyB2YWwgaW4gc21hcC4gIFJldHVybnMgYSB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvblxuICBpcyBwcm92aWRlZC4iLCA6YXJnbGlzdHMgW1tzbWFwXSBbc21hcCBjb2xsXV19LCA6c291cmNlICIoZGVmblxuIHJlcGxhY2VcbiBcIkdpdmVuIGEgbWFwIG9mIHJlcGxhY2VtZW50IHBhaXJzIGFuZCBhIHZlY3Rvci9jb2xsZWN0aW9uLCByZXR1cm5zIGFcXG4gIHZlY3Rvci9zZXEgd2l0aCBhbnkgZWxlbWVudHMgPSBhIGtleSBpbiBzbWFwIHJlcGxhY2VkIHdpdGggdGhlXFxuICBjb3JyZXNwb25kaW5nIHZhbCBpbiBzbWFwLiAgUmV0dXJucyBhIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uXFxuICBpcyBwcm92aWRlZC5cIlxuIChbc21hcF1cbiAgKG1hcFxuICAgKGZuKlxuICAgIFtwMV9fNDU0MjEjXVxuICAgIChpZi1sZXQgW2UgKGZpbmQgc21hcCBwMV9fNDU0MjEjKV0gKHZhbCBlKSBwMV9fNDU0MjEjKSkpKVxuIChbc21hcCBjb2xsXVxuICAoaWZcbiAgICh2ZWN0b3I/IGNvbGwpXG4gICAobGV0XG4gICAgW24gKGNvdW50IGNvbGwpXVxuICAgIChyZWR1Y2VcbiAgICAgKGZuXG4gICAgICBbdiBpXVxuICAgICAgKGlmLWxldCBbZSAoZmluZCBzbWFwIChudGggdiBpKSldIChhc3NvYyB2IGkgKHNlY29uZCBlKSkgdikpXG4gICAgIGNvbGxcbiAgICAgKHRha2UgbiAoaXRlcmF0ZSBpbmMgMCkpKSlcbiAgIChtYXBcbiAgICAoZm4qXG4gICAgIFtwMV9fNDU0MjIjXVxuICAgICAoaWYtbGV0IFtlIChmaW5kIHNtYXAgcDFfXzQ1NDIyIyldIChzZWNvbmQgZSkgcDFfXzQ1NDIyIykpXG4gICAgY29sbCkpKSlcbiJ9IHs6c3ltIGludD8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IHNhdGlzZmllcyBpbnRlZ2VyPyBvciBpcyBhbiBpbnN0YW5jZSBvZiBnb29nLm1hdGguSW50ZWdlclxuICAgb3IgZ29vZy5tYXRoLkxvbmcuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbnQ/XG4gXCJSZXR1cm4gdHJ1ZSBpZiB4IHNhdGlzZmllcyBpbnRlZ2VyPyBvciBpcyBhbiBpbnN0YW5jZSBvZiBnb29nLm1hdGguSW50ZWdlclxcbiAgIG9yIGdvb2cubWF0aC5Mb25nLlwiXG4gW3hdXG4gKG9yXG4gIChpbnRlZ2VyPyB4KVxuICAoaW5zdGFuY2U/IGdvb2cubWF0aC5JbnRlZ2VyIHgpXG4gIChpbnN0YW5jZT8gZ29vZy5tYXRoLkxvbmcgeCkpKVxuIn0gezpzeW0gYXNzb2NpYXRpdmU/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIGNvbGwgaW1wbGVtZW50cyBJQXNzb2NpYXRpdmUiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGFzc29jaWF0aXZlP1xuIFwiUmV0dXJucyB0cnVlIGlmIGNvbGwgaW1wbGVtZW50cyBJQXNzb2NpYXRpdmVcIlxuIFt4XVxuIChzYXRpc2ZpZXM/IElBc3NvY2lhdGl2ZSB4KSlcbiJ9IHs6c3ltIHVuY2hlY2tlZC1pbnQsIDptZXRhIHs6ZG9jICJDb2VyY2UgdG8gaW50IGJ5IHN0cmlwcGluZyBkZWNpbWFsIHBsYWNlcy4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHVuY2hlY2tlZC1pbnRcbiBcIkNvZXJjZSB0byBpbnQgYnkgc3RyaXBwaW5nIGRlY2ltYWwgcGxhY2VzLlwiXG4gW3hdXG4gKGZpeCB4KSlcbiJ9IHs6c3ltIGpzLWtleXMsIDptZXRhIHs6ZG9jICJSZXR1cm4gdGhlIEphdmFTY3JpcHQga2V5cyBmb3IgYW4gb2JqZWN0LiIsIDphcmdsaXN0cyAoW29ial0pfSwgOnNvdXJjZSAiKGRlZm5cbiBqcy1rZXlzXG4gXCJSZXR1cm4gdGhlIEphdmFTY3JpcHQga2V5cyBmb3IgYW4gb2JqZWN0LlwiXG4gW29ial1cbiAoZ29iamVjdC9nZXRLZXlzIG9iaikpXG4ifSB7OnN5bSBpbnN0LW1zKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtpbnN0XSl9LCA6cHJvdG9jb2wgSW5zdH0gezpzeW0ga2V5d29yZD8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IGlzIGEgS2V5d29yZCIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4ga2V5d29yZD9cbiBcIlJldHVybiB0cnVlIGlmIHggaXMgYSBLZXl3b3JkXCJcbiBbeF1cbiAoaW5zdGFuY2U/IEtleXdvcmQgeCkpXG4ifSB7OnN5bSBhcnJheS1pdGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGFycmF5LWl0ZXIgW3hdIChBcnJheUl0ZXIuIHggMCkpXG4ifSB7OnN5bSBmb3JjZSwgOm1ldGEgezpkb2MgIklmIHggaXMgYSBEZWxheSwgcmV0dXJucyB0aGUgKHBvc3NpYmx5IGNhY2hlZCkgdmFsdWUgb2YgaXRzIGV4cHJlc3Npb24sIGVsc2UgcmV0dXJucyB4IiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBmb3JjZVxuIFwiSWYgeCBpcyBhIERlbGF5LCByZXR1cm5zIHRoZSAocG9zc2libHkgY2FjaGVkKSB2YWx1ZSBvZiBpdHMgZXhwcmVzc2lvbiwgZWxzZSByZXR1cm5zIHhcIlxuIFt4XVxuIChpZiAoZGVsYXk/IHgpIChkZXJlZiB4KSB4KSlcbiJ9IHs6c3ltIGdyb3VwLWJ5LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG1hcCBvZiB0aGUgZWxlbWVudHMgb2YgY29sbCBrZXllZCBieSB0aGUgcmVzdWx0IG9mXG4gIGYgb24gZWFjaCBlbGVtZW50LiBUaGUgdmFsdWUgYXQgZWFjaCBrZXkgd2lsbCBiZSBhIHZlY3RvciBvZiB0aGVcbiAgY29ycmVzcG9uZGluZyBlbGVtZW50cywgaW4gdGhlIG9yZGVyIHRoZXkgYXBwZWFyZWQgaW4gY29sbC4iLCA6YXJnbGlzdHMgKFtmIGNvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gZ3JvdXAtYnlcbiBcIlJldHVybnMgYSBtYXAgb2YgdGhlIGVsZW1lbnRzIG9mIGNvbGwga2V5ZWQgYnkgdGhlIHJlc3VsdCBvZlxcbiAgZiBvbiBlYWNoIGVsZW1lbnQuIFRoZSB2YWx1ZSBhdCBlYWNoIGtleSB3aWxsIGJlIGEgdmVjdG9yIG9mIHRoZVxcbiAgY29ycmVzcG9uZGluZyBlbGVtZW50cywgaW4gdGhlIG9yZGVyIHRoZXkgYXBwZWFyZWQgaW4gY29sbC5cIlxuIFtmIGNvbGxdXG4gKHBlcnNpc3RlbnQhXG4gIChyZWR1Y2VcbiAgIChmbiBbcmV0IHhdIChsZXQgW2sgKGYgeCldIChhc3NvYyEgcmV0IGsgKGNvbmogKGdldCByZXQgayBbXSkgeCkpKSlcbiAgICh0cmFuc2llbnQge30pXG4gICBjb2xsKSkpXG4ifSB7OnN5bSAtcnNlcSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBzZXEgb2YgdGhlIGl0ZW1zIGluIGNvbGwgaW4gcmV2ZXJzZWQgb3JkZXIuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnByb3RvY29sIElSZXZlcnNpYmxlfSB7OnN5bSBwcm4sIDptZXRhIHs6ZG9jICJTYW1lIGFzIHByIGZvbGxvd2VkIGJ5IChuZXdsaW5lKS4iLCA6YXJnbGlzdHMgKFsmIG9ianNdKX0sIDpzb3VyY2UgIihkZWZuXG4gcHJuXG4gXCJTYW1lIGFzIHByIGZvbGxvd2VkIGJ5IChuZXdsaW5lKS5cIlxuIFsmIG9ianNdXG4gKHByLXdpdGgtb3B0cyBvYmpzIChwci1vcHRzKSlcbiAod2hlbiAqcHJpbnQtbmV3bGluZSogKG5ld2xpbmUgKHByLW9wdHMpKSkpXG4ifSB7OnN5bSBkZWZhdWx0LWRpc3BhdGNoLXZhbCwgOm1ldGEgezpkb2MgIkdpdmVuIGEgbXVsdGltZXRob2QsIHJldHVybiBpdHMgZGVmYXVsdC1kaXNwYXRjaC12YWwuIiwgOmFyZ2xpc3RzIChbbXVsdGlmbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBkZWZhdWx0LWRpc3BhdGNoLXZhbFxuIFwiR2l2ZW4gYSBtdWx0aW1ldGhvZCwgcmV0dXJuIGl0cyBkZWZhdWx0LWRpc3BhdGNoLXZhbC5cIlxuIFttdWx0aWZuXVxuICgtZGVmYXVsdC1kaXNwYXRjaC12YWwgbXVsdGlmbikpXG4ifSB7OnN5bSBqcy1pdGVyYWJsZT8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IGhhcyBhIEphdmFTY3JpcHQgaXRlcmF0b3IgcHJvcGVydHkiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGpzLWl0ZXJhYmxlP1xuIFwiUmV0dXJuIHRydWUgaWYgeCBoYXMgYSBKYXZhU2NyaXB0IGl0ZXJhdG9yIHByb3BlcnR5XCJcbiBbeF1cbiAoYW5kIChub3QgKG5pbD8geCkpIChub3QgKG5pbD8gKGpzKiBcIn57fVt+e31dXCIgeCBJVEVSX1NZTUJPTCkpKSkpXG4ifSB7OnN5bSB1bmNoZWNrZWQtbXVsdGlwbHksIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBwcm9kdWN0IG9mIG51bXMuICgqKSByZXR1cm5zIDEuIiwgOmFyZ2xpc3RzIFtbXSBbeF0gW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gdW5jaGVja2VkLW11bHRpcGx5XG4gXCJSZXR1cm5zIHRoZSBwcm9kdWN0IG9mIG51bXMuICgqKSByZXR1cm5zIDEuXCJcbiAoW10gMSlcbiAoW3hdIHgpXG4gKFt4IHldIChjbGpzLmNvcmUvdW5jaGVja2VkLW11bHRpcGx5IHggeSkpXG4gKFt4IHkgJiBtb3JlXVxuICAocmVkdWNlIHVuY2hlY2tlZC1tdWx0aXBseSAoY2xqcy5jb3JlL3VuY2hlY2tlZC1tdWx0aXBseSB4IHkpIG1vcmUpKSlcbiJ9IHs6c3ltIGV2ZW4/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIG4gaXMgZXZlbiwgdGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiBuIGlzIG5vdCBhbiBpbnRlZ2VyIiwgOmFyZ2xpc3RzIChbbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBldmVuP1xuIFwiUmV0dXJucyB0cnVlIGlmIG4gaXMgZXZlbiwgdGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiBuIGlzIG5vdCBhbiBpbnRlZ2VyXCJcbiBbbl1cbiAoaWZcbiAgKGludGVnZXI/IG4pXG4gICh6ZXJvPyAoYml0LWFuZCBuIDEpKVxuICAodGhyb3cgKGpzL0Vycm9yLiAoc3RyIFwiQXJndW1lbnQgbXVzdCBiZSBhbiBpbnRlZ2VyOiBcIiBuKSkpKSlcbiJ9IHs6c3ltIGVzNi1pdGVyYXRvci1zZXEsIDptZXRhIHs6ZG9jICJFWFBFUklNRU5UQUw6IEdpdmVuIGFuIEVTMjAxNSBjb21wYXRpYmxlIGl0ZXJhdG9yIHJldHVybiBhIHNlcS4iLCA6YXJnbGlzdHMgKFtpdGVyXSl9LCA6c291cmNlICIoZGVmblxuIGVzNi1pdGVyYXRvci1zZXFcbiBcIkVYUEVSSU1FTlRBTDogR2l2ZW4gYW4gRVMyMDE1IGNvbXBhdGlibGUgaXRlcmF0b3IgcmV0dXJuIGEgc2VxLlwiXG4gW2l0ZXJdXG4gKGxldFxuICBbdiAoLm5leHQgaXRlcildXG4gIChpZiAoLi1kb25lIHYpIG5pbCAoRVM2SXRlcmF0b3JTZXEuICguLXZhbHVlIHYpIGl0ZXIgbmlsKSkpKVxuIn0gezpzeW0gdW5jaGVja2VkLWRlYywgOm1ldGEgezpkb2MgIlJldHVybnMgYSBudW1iZXIgb25lIGxlc3MgdGhhbiB4LCBhbiBpbnQuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB1bmNoZWNrZWQtZGVjXG4gXCJSZXR1cm5zIGEgbnVtYmVyIG9uZSBsZXNzIHRoYW4geCwgYW4gaW50LlwiXG4gW3hdXG4gKGNsanMuY29yZS91bmNoZWNrZWQtZGVjIHgpKVxuIn0gezpzeW0gSW5zdCwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKGluc3QtbXMqKX0gezpzeW0gcGVyc2lzdGVudC1hcnJheS1tYXAtc2VxLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2FyciBpIF9tZXRhXSl9LCA6c291cmNlICIoZGVmblxuIHBlcnNpc3RlbnQtYXJyYXktbWFwLXNlcVxuIFthcnIgaSBfbWV0YV1cbiAod2hlbiAoPD0gaSAoLSAoYWxlbmd0aCBhcnIpIDIpKSAoUGVyc2lzdGVudEFycmF5TWFwU2VxLiBhcnIgaSBfbWV0YSkpKVxuIn0gezpzeW0gdGFnZ2VkLWxpdGVyYWw/LCA6bWV0YSB7OmRvYyAiUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIGlzIHRoZSBkYXRhIHJlcHJlc2VudGF0aW9uIG9mIGEgdGFnZ2VkIGxpdGVyYWwiLCA6YXJnbGlzdHMgKFt2YWx1ZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0YWdnZWQtbGl0ZXJhbD9cbiBcIlJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBpcyB0aGUgZGF0YSByZXByZXNlbnRhdGlvbiBvZiBhIHRhZ2dlZCBsaXRlcmFsXCJcbiBbdmFsdWVdXG4gKGluc3RhbmNlPyBUYWdnZWRMaXRlcmFsIHZhbHVlKSlcbiJ9IHs6c3ltIGRvdWJsZS1hcnJheSwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYW4gYXJyYXkgb2YgZG91Ymxlcy4gRG9lcyBub3QgY29lcmNlIGFycmF5LCBwcm92aWRlZCBmb3IgY29tcGF0aWJpbGl0eVxuICB3aXRoIENsb2p1cmUuIiwgOmFyZ2xpc3RzIFtbc2l6ZS1vci1zZXFdIFtzaXplIGluaXQtdmFsLW9yLXNlcV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBkb3VibGUtYXJyYXlcbiBcIkNyZWF0ZXMgYW4gYXJyYXkgb2YgZG91Ymxlcy4gRG9lcyBub3QgY29lcmNlIGFycmF5LCBwcm92aWRlZCBmb3IgY29tcGF0aWJpbGl0eVxcbiAgd2l0aCBDbG9qdXJlLlwiXG4gKFtzaXplLW9yLXNlcV1cbiAgKGlmXG4gICAobnVtYmVyPyBzaXplLW9yLXNlcSlcbiAgIChkb3VibGUtYXJyYXkgc2l6ZS1vci1zZXEgbmlsKVxuICAgKGludG8tYXJyYXkgc2l6ZS1vci1zZXEpKSlcbiAoW3NpemUgaW5pdC12YWwtb3Itc2VxXVxuICAobGV0XG4gICBbYSAobWFrZS1hcnJheSBzaXplKV1cbiAgIChpZlxuICAgIChzZXE/IGluaXQtdmFsLW9yLXNlcSlcbiAgICAobGV0XG4gICAgIFtzIChzZXEgaW5pdC12YWwtb3Itc2VxKV1cbiAgICAgKGxvb3BcbiAgICAgIFtpIDAgcyBzXVxuICAgICAgKGlmXG4gICAgICAgKGFuZCBzICg8IGkgc2l6ZSkpXG4gICAgICAgKGRvIChhc2V0IGEgaSAoZmlyc3QgcykpIChyZWN1ciAoaW5jIGkpIChuZXh0IHMpKSlcbiAgICAgICBhKSkpXG4gICAgKGRvIChkb3RpbWVzIFtpIHNpemVdIChhc2V0IGEgaSBpbml0LXZhbC1vci1zZXEpKSBhKSkpKSlcbiJ9IHs6c3ltIGNyZWF0ZS1ucywgOm1ldGEgezpkb2MgIkNyZWF0ZSBhIG5ldyBuYW1lc3BhY2UgbmFtZWQgYnkgdGhlIHN5bWJvbC4gQm9vdHN0cmFwIG9ubHkuIiwgOmFyZ2xpc3RzIFtbc3ltXSBbc3ltIG5zLW9ial1dfSwgOnNvdXJjZSAiKGRlZm5cbiBjcmVhdGUtbnNcbiBcIkNyZWF0ZSBhIG5ldyBuYW1lc3BhY2UgbmFtZWQgYnkgdGhlIHN5bWJvbC4gQm9vdHN0cmFwIG9ubHkuXCJcbiAoW3N5bV0gKGNyZWF0ZS1ucyBzeW0gKGZpbmQtbnMtb2JqIHN5bSkpKVxuIChbc3ltIG5zLW9ial0gKE5hbWVzcGFjZS4gbnMtb2JqIHN5bSkpKVxuIn0gezpzeW0gZGVmbiwgOm1ldGEgezphcmdsaXN0cyAocXVvdGUgKFtuYW1lIGRvYy1zdHJpbmc/IGF0dHItbWFwPyBbcGFyYW1zKl0gcHJlcG9zdC1tYXA/IGJvZHldIFtuYW1lIGRvYy1zdHJpbmc/IGF0dHItbWFwPyAoW3BhcmFtcypdIHByZXBvc3QtbWFwPyBib2R5KSArIGF0dHItbWFwP10pKSwgOmRvYyAiU2FtZSBhcyAoZGVmIG5hbWUgKGNvcmUvZm4gW3BhcmFtcyogXSBleHBycyopKSBvciAoZGVmXG4gICAgbmFtZSAoY29yZS9mbiAoW3BhcmFtcyogXSBleHBycyopKykpIHdpdGggYW55IGRvYy1zdHJpbmcgb3IgYXR0cnMgYWRkZWRcbiAgICB0byB0aGUgdmFyIG1ldGFkYXRhLiBwcmVwb3N0LW1hcCBkZWZpbmVzIGEgbWFwIHdpdGggb3B0aW9uYWwga2V5c1xuICAgIDpwcmUgYW5kIDpwb3N0IHRoYXQgY29udGFpbiBjb2xsZWN0aW9ucyBvZiBwcmUgb3IgcG9zdCBjb25kaXRpb25zLiJ9LCA6c291cmNlICIoZGVmXG4gZGVmblxuIChjb3JlL2ZuXG4gIGRlZm5cbiAgWyZmb3JtICZlbnYgbmFtZSAmIGZkZWNsXVxuICAoaWZcbiAgIChjb3JlL2luc3RhbmNlPyAjPyg6Y2xqIGNsb2p1cmUubGFuZy5TeW1ib2wgOmNsanMgU3ltYm9sKSBuYW1lKVxuICAgbmlsXG4gICAodGhyb3dcbiAgICAjPyg6Y2xqIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24uIFwiRmlyc3QgYXJndW1lbnQgdG8gZGVmbiBtdXN0IGJlIGEgc3ltYm9sXCIpIDpjbGpzIChqcy9FcnJvci4gXCJGaXJzdCBhcmd1bWVudCB0byBkZWZuIG11c3QgYmUgYSBzeW1ib2xcIikpKSlcbiAgKGNvcmUvbGV0XG4gICBbbVxuICAgIChpZiAoY29yZS9zdHJpbmc/IChmaXJzdCBmZGVjbCkpIHs6ZG9jIChmaXJzdCBmZGVjbCl9IHt9KVxuICAgIGZkZWNsXG4gICAgKGlmIChjb3JlL3N0cmluZz8gKGZpcnN0IGZkZWNsKSkgKG5leHQgZmRlY2wpIGZkZWNsKVxuICAgIG1cbiAgICAoaWYgKG1hcD8gKGZpcnN0IGZkZWNsKSkgKGNvbmogbSAoZmlyc3QgZmRlY2wpKSBtKVxuICAgIGZkZWNsXG4gICAgKGlmIChtYXA/IChmaXJzdCBmZGVjbCkpIChuZXh0IGZkZWNsKSBmZGVjbClcbiAgICBmZGVjbFxuICAgIChpZiAodmVjdG9yPyAoZmlyc3QgZmRlY2wpKSAoY29yZS9saXN0IGZkZWNsKSBmZGVjbClcbiAgICBtXG4gICAgKGlmIChtYXA/IChsYXN0IGZkZWNsKSkgKGNvbmogbSAobGFzdCBmZGVjbCkpIG0pXG4gICAgZmRlY2xcbiAgICAoaWYgKG1hcD8gKGxhc3QgZmRlY2wpKSAoYnV0bGFzdCBmZGVjbCkgZmRlY2wpXG4gICAgbVxuICAgIChjb25qIHs6YXJnbGlzdHMgKGNvcmUvbGlzdCAncXVvdGUgKHNpZ3MgZmRlY2wpKX0gbSlcbiAgICBtXG4gICAgKGNvbmogKGlmIChtZXRhIG5hbWUpIChtZXRhIG5hbWUpIHt9KSBtKV1cbiAgIChjb3JlL2NvbmRcbiAgICAobXVsdGktYXJpdHktZm4/IGZkZWNsKVxuICAgIChtdWx0aS1hcml0eS1mblxuICAgICBuYW1lXG4gICAgIChpZlxuICAgICAgKGNvbXAvY2hlY2tpbmctdHlwZXM/KVxuICAgICAgKHVwZGF0ZS1pbiBtIFs6anNkb2NdIGNvbmogXCJAcGFyYW0gey4uLip9IHZhcl9hcmdzXCIpXG4gICAgICBtKVxuICAgICBmZGVjbFxuICAgICAoOmRlZi1lbWl0cy12YXIgJmVudikpXG4gICAgKHZhcmlhZGljLWZuPyBmZGVjbClcbiAgICAodmFyaWFkaWMtZm5cbiAgICAgbmFtZVxuICAgICAoaWZcbiAgICAgIChjb21wL2NoZWNraW5nLXR5cGVzPylcbiAgICAgICh1cGRhdGUtaW4gbSBbOmpzZG9jXSBjb25qIFwiQHBhcmFtIHsuLi4qfSB2YXJfYXJnc1wiKVxuICAgICAgbSlcbiAgICAgZmRlY2xcbiAgICAgKDpkZWYtZW1pdHMtdmFyICZlbnYpKVxuICAgIDplbHNlXG4gICAgKGNvcmUvbGlzdCAnZGVmICh3aXRoLW1ldGEgbmFtZSBtKSAoY29ucyAnY2xqcy5jb3JlL2ZuIGZkZWNsKSkpKSkpXG4ifSB7OnN5bSBzcHJlYWQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbYXJnbGlzdF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzcHJlYWRcbiBbYXJnbGlzdF1cbiAod2hlbi1ub3RcbiAgKG5pbD8gYXJnbGlzdClcbiAgKGxldFxuICAgW24gKG5leHQgYXJnbGlzdCldXG4gICAoaWZcbiAgICAobmlsPyBuKVxuICAgIChzZXEgKGZpcnN0IGFyZ2xpc3QpKVxuICAgIChjb25zIChmaXJzdCBhcmdsaXN0KSAoc3ByZWFkIG4pKSkpKSlcbiJ9IHs6c3ltIHJzZXEsIDptZXRhIHs6ZG9jICJSZXR1cm5zLCBpbiBjb25zdGFudCB0aW1lLCBhIHNlcSBvZiB0aGUgaXRlbXMgaW4gcmV2ICh3aGljaFxuICBjYW4gYmUgYSB2ZWN0b3Igb3Igc29ydGVkLW1hcCksIGluIHJldmVyc2Ugb3JkZXIuIElmIHJldiBpcyBlbXB0eSByZXR1cm5zIG5pbCIsIDphcmdsaXN0cyAoW3Jldl0pfSwgOnNvdXJjZSAiKGRlZm5cbiByc2VxXG4gXCJSZXR1cm5zLCBpbiBjb25zdGFudCB0aW1lLCBhIHNlcSBvZiB0aGUgaXRlbXMgaW4gcmV2ICh3aGljaFxcbiAgY2FuIGJlIGEgdmVjdG9yIG9yIHNvcnRlZC1tYXApLCBpbiByZXZlcnNlIG9yZGVyLiBJZiByZXYgaXMgZW1wdHkgcmV0dXJucyBuaWxcIlxuIFtyZXZdXG4gKC1yc2VxIHJldikpXG4ifSB7OnN5bSBleC1jYXVzZSwgOm1ldGEgezpkb2MgIlJldHVybnMgZXhjZXB0aW9uIGNhdXNlIChhbiBFcnJvciAvIEV4Y2VwdGlvbkluZm8pIGlmIGV4IGlzIGFuXG4gIEV4Y2VwdGlvbkluZm8uXG4gIE90aGVyd2lzZSByZXR1cm5zIG5pbC4iLCA6YXJnbGlzdHMgKFtleF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBleC1jYXVzZVxuIFwiUmV0dXJucyBleGNlcHRpb24gY2F1c2UgKGFuIEVycm9yIC8gRXhjZXB0aW9uSW5mbykgaWYgZXggaXMgYW5cXG4gIEV4Y2VwdGlvbkluZm8uXFxuICBPdGhlcndpc2UgcmV0dXJucyBuaWwuXCJcbiBbZXhdXG4gKHdoZW4gKGluc3RhbmNlPyBFeGNlcHRpb25JbmZvIGV4KSAoLi1jYXVzZSBleCkpKVxuIn0gezpzeW0gSVJlc2V0LCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFkZGluZyByZXNldHRpbmcgZnVuY3Rpb25hbGl0eS4ifSwgOm1ldGhvZHMgKC1yZXNldCEpfSB7OnN5bSBJRW1wdHlhYmxlQ29sbGVjdGlvbiwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBjcmVhdGluZyBhbiBlbXB0eSBjb2xsZWN0aW9uLiJ9LCA6bWV0aG9kcyAoLWVtcHR5KX0gezpzeW0gZXgtbWVzc2FnZSwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG1lc3NhZ2UgYXR0YWNoZWQgdG8gdGhlIGdpdmVuIEVycm9yIC8gRXhjZXB0aW9uSW5mbyBvYmplY3QuXG4gIEZvciBub24tRXJyb3JzIHJldHVybnMgbmlsLiIsIDphcmdsaXN0cyAoW2V4XSl9LCA6c291cmNlICIoZGVmblxuIGV4LW1lc3NhZ2VcbiBcIlJldHVybnMgdGhlIG1lc3NhZ2UgYXR0YWNoZWQgdG8gdGhlIGdpdmVuIEVycm9yIC8gRXhjZXB0aW9uSW5mbyBvYmplY3QuXFxuICBGb3Igbm9uLUVycm9ycyByZXR1cm5zIG5pbC5cIlxuIFtleF1cbiAod2hlbiAoaW5zdGFuY2U/IGpzL0Vycm9yIGV4KSAoLi1tZXNzYWdlIGV4KSkpXG4ifSB7OnN5bSAqcHJpbnQtZm4tYm9kaWVzKiwgOm1ldGEgezpkb2MgIipwcmludC1mbnMtYm9kaWVzKiBjb250cm9scyB3aGV0aGVyIGZ1bmN0aW9ucyBwcmludCB0aGVpciBzb3VyY2Ugb3JcbiAgICBvbmx5IHRoZWlyIG5hbWVzLiJ9LCA6c291cmNlICIoZGVmICpwcmludC1mbi1ib2RpZXMqIGZhbHNlKVxuIn0gezpzeW0gc3RyaW5nLXByaW50LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gc3RyaW5nLXByaW50XG4gW3hdXG4gKHdoZW5cbiAgKG5pbD8gKnByaW50LWZuKilcbiAgKHRocm93XG4gICAoanMvRXJyb3IuIFwiTm8gKnByaW50LWZuKiBmbiBzZXQgZm9yIGV2YWx1YXRpb24gZW52aXJvbm1lbnRcIikpKVxuICgqcHJpbnQtZm4qIHgpXG4gbmlsKVxuIn0gezpzeW0gZmxvYXQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gZmxvYXQgW3hdIHgpXG4ifSB7OnN5bSBJUmVjb3JkLCA6bWV0YSB7OmRvYyAiTWFya2VyIGludGVyZmFjZSBpbmRpY2F0aW5nIGEgcmVjb3JkIG9iamVjdCJ9LCA6bWV0aG9kcyAoKX0gezpzeW0gcHItc3RyLCA6bWV0YSB7OmRvYyAicHIgdG8gYSBzdHJpbmcsIHJldHVybmluZyBpdC4gRnVuZGFtZW50YWwgZW50cnlwb2ludCB0byBJUHJpbnRXaXRoV3JpdGVyLiIsIDphcmdsaXN0cyAoWyYgb2Jqc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBwci1zdHJcbiBcInByIHRvIGEgc3RyaW5nLCByZXR1cm5pbmcgaXQuIEZ1bmRhbWVudGFsIGVudHJ5cG9pbnQgdG8gSVByaW50V2l0aFdyaXRlci5cIlxuIFsmIG9ianNdXG4gKHByLXN0ci13aXRoLW9wdHMgb2JqcyAocHItb3B0cykpKVxuIn0gezpzeW0gZXM2LXNldC1lbnRyaWVzLWl0ZXJhdG9yLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gZXM2LXNldC1lbnRyaWVzLWl0ZXJhdG9yXG4gW2NvbGxdXG4gKEVTNlNldEVudHJpZXNJdGVyYXRvci4gKHNlcSBjb2xsKSkpXG4ifSB7OnN5bSBjb25jYXQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbGF6eSBzZXEgcmVwcmVzZW50aW5nIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSBlbGVtZW50cyBpbiB0aGUgc3VwcGxpZWQgY29sbHMuIiwgOmFyZ2xpc3RzIFtbXSBbeF0gW3ggeV0gW3ggeSAmIHpzXV19LCA6c291cmNlICIoZGVmblxuIGNvbmNhdFxuIFwiUmV0dXJucyBhIGxhenkgc2VxIHJlcHJlc2VudGluZyB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0aGUgZWxlbWVudHMgaW4gdGhlIHN1cHBsaWVkIGNvbGxzLlwiXG4gKFtdIChsYXp5LXNlcSBuaWwpKVxuIChbeF0gKGxhenktc2VxIHgpKVxuIChbeCB5XVxuICAobGF6eS1zZXFcbiAgIChsZXRcbiAgICBbcyAoc2VxIHgpXVxuICAgIChpZlxuICAgICBzXG4gICAgIChpZlxuICAgICAgKGNodW5rZWQtc2VxPyBzKVxuICAgICAgKGNodW5rLWNvbnMgKGNodW5rLWZpcnN0IHMpIChjb25jYXQgKGNodW5rLXJlc3QgcykgeSkpXG4gICAgICAoY29ucyAoZmlyc3QgcykgKGNvbmNhdCAocmVzdCBzKSB5KSkpXG4gICAgIHkpKSkpXG4gKFt4IHkgJiB6c11cbiAgKGxldFxuICAgW2NhdFxuICAgIChmblxuICAgICBjYXRcbiAgICAgW3h5cyB6c11cbiAgICAgKGxhenktc2VxXG4gICAgICAobGV0XG4gICAgICAgW3h5cyAoc2VxIHh5cyldXG4gICAgICAgKGlmXG4gICAgICAgIHh5c1xuICAgICAgICAoaWZcbiAgICAgICAgIChjaHVua2VkLXNlcT8geHlzKVxuICAgICAgICAgKGNodW5rLWNvbnMgKGNodW5rLWZpcnN0IHh5cykgKGNhdCAoY2h1bmstcmVzdCB4eXMpIHpzKSlcbiAgICAgICAgIChjb25zIChmaXJzdCB4eXMpIChjYXQgKHJlc3QgeHlzKSB6cykpKVxuICAgICAgICAod2hlbiB6cyAoY2F0IChmaXJzdCB6cykgKG5leHQgenMpKSkpKSkpXVxuICAgKGNhdCAoY29uY2F0IHggeSkgenMpKSkpXG4ifSB7OnN5bSAtbWV0aG9kcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttZl0pfSwgOnByb3RvY29sIElNdWx0aUZufSB7OnN5bSBqcy1yZXNlcnZlZCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYganMtcmVzZXJ2ZWQgbmlsKVxuIn0gezpzeW0gSURlcmVmV2l0aFRpbWVvdXQsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzICgtZGVyZWYtd2l0aC10aW1lb3V0KX0gezpzeW0gc3ltYm9sLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIFN5bWJvbCB3aXRoIHRoZSBnaXZlbiBuYW1lc3BhY2UgYW5kIG5hbWUuIEFyaXR5LTEgd29ya3NcbiAgb24gc3RyaW5ncywga2V5d29yZHMsIGFuZCB2YXJzLiIsIDphcmdsaXN0cyBbW25hbWVdIFtucyBuYW1lXV19LCA6c291cmNlICIoZGVmblxuIHN5bWJvbFxuIFwiUmV0dXJucyBhIFN5bWJvbCB3aXRoIHRoZSBnaXZlbiBuYW1lc3BhY2UgYW5kIG5hbWUuIEFyaXR5LTEgd29ya3NcXG4gIG9uIHN0cmluZ3MsIGtleXdvcmRzLCBhbmQgdmFycy5cIlxuIChbbmFtZV1cbiAgKGNvbmRcbiAgIChzeW1ib2w/IG5hbWUpXG4gICBuYW1lXG4gICAoc3RyaW5nPyBuYW1lKVxuICAgKGxldFxuICAgIFtpZHggKC5pbmRleE9mIG5hbWUgXCIvXCIpXVxuICAgIChpZlxuICAgICAoPCBpZHggMSlcbiAgICAgKHN5bWJvbCBuaWwgbmFtZSlcbiAgICAgKHN5bWJvbFxuICAgICAgKC5zdWJzdHJpbmcgbmFtZSAwIGlkeClcbiAgICAgICguc3Vic3RyaW5nIG5hbWUgKGluYyBpZHgpICguIG5hbWUgLWxlbmd0aCkpKSkpXG4gICAodmFyPyBuYW1lKVxuICAgKC4tc3ltIG5hbWUpXG4gICAoa2V5d29yZD8gbmFtZSlcbiAgIChyZWN1ciAoLi1mcW4gbmFtZSkpXG4gICA6ZWxzZVxuICAgKHRocm93IChuZXcganMvRXJyb3IgXCJubyBjb252ZXJzaW9uIHRvIHN5bWJvbFwiKSkpKVxuIChbbnMgbmFtZV1cbiAgKGxldFxuICAgW3N5bS1zdHIgKGlmLW5vdCAobmlsPyBucykgKHN0ciBucyBcIi9cIiBuYW1lKSBuYW1lKV1cbiAgIChTeW1ib2wuIG5zIG5hbWUgc3ltLXN0ciBuaWwgbmlsKSkpKVxuIn0gezpzeW0gdG8tYXJyYXktMmQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgKHBvdGVudGlhbGx5LXJhZ2dlZCkgMi1kaW1lbnNpb25hbCBhcnJheVxuICBjb250YWluaW5nIHRoZSBjb250ZW50cyBvZiBjb2xsLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gdG8tYXJyYXktMmRcbiBcIlJldHVybnMgYSAocG90ZW50aWFsbHktcmFnZ2VkKSAyLWRpbWVuc2lvbmFsIGFycmF5XFxuICBjb250YWluaW5nIHRoZSBjb250ZW50cyBvZiBjb2xsLlwiXG4gW2NvbGxdXG4gKGxldFxuICBbcmV0IChtYWtlLWFycmF5IChjb3VudCBjb2xsKSldXG4gIChsb29wXG4gICBbaSAwIHhzIChzZXEgY29sbCldXG4gICAod2hlbi1ub3RcbiAgICAobmlsPyB4cylcbiAgICAoYXNldCByZXQgaSAodG8tYXJyYXkgKGZpcnN0IHhzKSkpXG4gICAgKHJlY3VyIChpbmMgaSkgKG5leHQgeHMpKSkpXG4gIHJldCkpXG4ifSB7OnN5bSBFeGNlcHRpb25JbmZvLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21lc3NhZ2UgZGF0YSBjYXVzZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBFeGNlcHRpb25JbmZvXG4gW21lc3NhZ2UgZGF0YSBjYXVzZV1cbiAobGV0XG4gIFtlIChqcy9FcnJvci4gbWVzc2FnZSldXG4gICh0aGlzLWFzXG4gICB0aGlzXG4gICAoc2V0ISAoLi1tZXNzYWdlIHRoaXMpIG1lc3NhZ2UpXG4gICAoc2V0ISAoLi1kYXRhIHRoaXMpIGRhdGEpXG4gICAoc2V0ISAoLi1jYXVzZSB0aGlzKSBjYXVzZSlcbiAgIChkb1xuICAgIChzZXQhICguLW5hbWUgdGhpcykgKC4tbmFtZSBlKSlcbiAgICAoc2V0ISAoLi1kZXNjcmlwdGlvbiB0aGlzKSAoLi1kZXNjcmlwdGlvbiBlKSlcbiAgICAoc2V0ISAoLi1udW1iZXIgdGhpcykgKC4tbnVtYmVyIGUpKVxuICAgIChzZXQhICguLWZpbGVOYW1lIHRoaXMpICguLWZpbGVOYW1lIGUpKVxuICAgIChzZXQhICguLWxpbmVOdW1iZXIgdGhpcykgKC4tbGluZU51bWJlciBlKSlcbiAgICAoc2V0ISAoLi1jb2x1bW5OdW1iZXIgdGhpcykgKC4tY29sdW1uTnVtYmVyIGUpKVxuICAgIChzZXQhICguLXN0YWNrIHRoaXMpICguLXN0YWNrIGUpKSlcbiAgIHRoaXMpKSlcbiJ9IHs6c3ltIG1vZCwgOm1ldGEgezpkb2MgIk1vZHVsdXMgb2YgbnVtIGFuZCBkaXYuIFRydW5jYXRlcyB0b3dhcmQgbmVnYXRpdmUgaW5maW5pdHkuIiwgOmFyZ2xpc3RzIChbbiBkXSl9LCA6c291cmNlICIoZGVmblxuIG1vZFxuIFwiTW9kdWx1cyBvZiBudW0gYW5kIGRpdi4gVHJ1bmNhdGVzIHRvd2FyZCBuZWdhdGl2ZSBpbmZpbml0eS5cIlxuIFtuIGRdXG4gKGpzLW1vZCAoKyAoanMtbW9kIG4gZCkgZCkgZCkpXG4ifSB7OnN5bSBJU2V0LCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFkZGluZyBzZXQgZnVuY3Rpb25hbGl0eSB0byBhIGNvbGxlY3Rpb24uIn0sIDptZXRob2RzICgtZGlzam9pbil9IHs6c3ltIHBvcCwgOm1ldGEgezpkb2MgIkZvciBhIGxpc3Qgb3IgcXVldWUsIHJldHVybnMgYSBuZXcgbGlzdC9xdWV1ZSB3aXRob3V0IHRoZSBmaXJzdFxuICBpdGVtLCBmb3IgYSB2ZWN0b3IsIHJldHVybnMgYSBuZXcgdmVjdG9yIHdpdGhvdXQgdGhlIGxhc3QgaXRlbS5cbiAgTm90ZSAtIG5vdCB0aGUgc2FtZSBhcyBuZXh0L2J1dGxhc3QuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwb3BcbiBcIkZvciBhIGxpc3Qgb3IgcXVldWUsIHJldHVybnMgYSBuZXcgbGlzdC9xdWV1ZSB3aXRob3V0IHRoZSBmaXJzdFxcbiAgaXRlbSwgZm9yIGEgdmVjdG9yLCByZXR1cm5zIGEgbmV3IHZlY3RvciB3aXRob3V0IHRoZSBsYXN0IGl0ZW0uXFxuICBOb3RlIC0gbm90IHRoZSBzYW1lIGFzIG5leHQvYnV0bGFzdC5cIlxuIFtjb2xsXVxuICh3aGVuLW5vdCAobmlsPyBjb2xsKSAoLXBvcCBjb2xsKSkpXG4ifSB7OnN5bSBJUGVuZGluZywgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciB0eXBlcyB3aGljaCBjYW4gaGF2ZSBhIGRlZmVycmVkIHJlYWxpemF0aW9uLiBDdXJyZW50bHkgb25seVxuICBpbXBsZW1lbnRlZCBieSBEZWxheSBhbmQgTGF6eVNlcS4ifSwgOm1ldGhvZHMgKC1yZWFsaXplZD8pfSB7OnN5bSAtZW50cnkta2V5LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUga2V5IGZvciBlbnRyeS4iLCA6YXJnbGlzdHMgKFtjb2xsIGVudHJ5XSl9LCA6cHJvdG9jb2wgSVNvcnRlZH0gezpzeW0gQ0hBUl9NQVAsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gQ0hBUl9NQVBcbiAjanMge1wiXVwiIFwiX1JCUkFDS19cIiwgXCInXCIgXCJfU0lOR0xFUVVPVEVfXCIsIFwiPVwiIFwiX0VRX1wiLCBcIlxcXFxcXFwiXCIgXCJfRE9VQkxFUVVPVEVfXCIsIFwiIVwiIFwiX0JBTkdfXCIsIFwiKlwiIFwiX1NUQVJfXCIsIFwiJVwiIFwiX1BFUkNFTlRfXCIsIFwifFwiIFwiX0JBUl9cIiwgXCJ+XCIgXCJfVElMREVfXCIsIFwiL1wiIFwiX1NMQVNIX1wiLCBcIlxcXFxcXFxcXCIgXCJfQlNMQVNIX1wiLCBcIi1cIiBcIl9cIiwgXCI/XCIgXCJfUU1BUktfXCIsIFwiJlwiIFwiX0FNUEVSU0FORF9cIiwgXCI6XCIgXCJfQ09MT05fXCIsIFwiPFwiIFwiX0xUX1wiLCBcIntcIiBcIl9MQlJBQ0VfXCIsIFwifVwiIFwiX1JCUkFDRV9cIiwgXCJbXCIgXCJfTEJSQUNLX1wiLCBcIiNcIiBcIl9TSEFSUF9cIiwgXCJeXCIgXCJfQ0FSRVRfXCIsIFwiK1wiIFwiX1BMVVNfXCIsIFwiQFwiIFwiX0NJUkNBX1wiLCBcIj5cIiBcIl9HVF9cIn0pXG4ifSB7OnN5bSBkaXNzb2MhLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHRyYW5zaWVudCBtYXAgdGhhdCBkb2Vzbid0IGNvbnRhaW4gYSBtYXBwaW5nIGZvciBrZXkocykuIiwgOmFyZ2xpc3RzIFtbdGNvbGwga2V5XSBbdGNvbGwga2V5ICYga3NdXX0sIDpzb3VyY2UgIihkZWZuXG4gZGlzc29jIVxuIFwiUmV0dXJucyBhIHRyYW5zaWVudCBtYXAgdGhhdCBkb2Vzbid0IGNvbnRhaW4gYSBtYXBwaW5nIGZvciBrZXkocykuXCJcbiAoW3Rjb2xsIGtleV0gKC1kaXNzb2MhIHRjb2xsIGtleSkpXG4gKFt0Y29sbCBrZXkgJiBrc11cbiAgKGxldFxuICAgW250Y29sbCAoLWRpc3NvYyEgdGNvbGwga2V5KV1cbiAgIChpZiBrcyAocmVjdXIgbnRjb2xsIChmaXJzdCBrcykgKG5leHQga3MpKSBudGNvbGwpKSkpXG4ifSB7OnN5bSByZWR1Y3Rpb25zLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGxhenkgc2VxIG9mIHRoZSBpbnRlcm1lZGlhdGUgdmFsdWVzIG9mIHRoZSByZWR1Y3Rpb24gKGFzXG4gIHBlciByZWR1Y2UpIG9mIGNvbGwgYnkgZiwgc3RhcnRpbmcgd2l0aCBpbml0LiIsIDphcmdsaXN0cyBbW2YgY29sbF0gW2YgaW5pdCBjb2xsXV19LCA6c291cmNlICIoZGVmblxuIHJlZHVjdGlvbnNcbiBcIlJldHVybnMgYSBsYXp5IHNlcSBvZiB0aGUgaW50ZXJtZWRpYXRlIHZhbHVlcyBvZiB0aGUgcmVkdWN0aW9uIChhc1xcbiAgcGVyIHJlZHVjZSkgb2YgY29sbCBieSBmLCBzdGFydGluZyB3aXRoIGluaXQuXCJcbiAoW2YgY29sbF1cbiAgKGxhenktc2VxXG4gICAoaWYtbGV0XG4gICAgW3MgKHNlcSBjb2xsKV1cbiAgICAocmVkdWN0aW9ucyBmIChmaXJzdCBzKSAocmVzdCBzKSlcbiAgICAobGlzdCAoZikpKSkpXG4gKFtmIGluaXQgY29sbF1cbiAgKGlmXG4gICAocmVkdWNlZD8gaW5pdClcbiAgIChsaXN0IEBpbml0KVxuICAgKGNvbnNcbiAgICBpbml0XG4gICAgKGxhenktc2VxXG4gICAgICh3aGVuLWxldFxuICAgICAgW3MgKHNlcSBjb2xsKV1cbiAgICAgIChyZWR1Y3Rpb25zIGYgKGYgaW5pdCAoZmlyc3QgcykpIChyZXN0IHMpKSkpKSkpKVxuIn0gezpzeW0gZmFzdC1wYXRoLXByb3RvY29sLXBhcnRpdGlvbnMtY291bnQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gZmFzdC1wYXRoLXByb3RvY29sLXBhcnRpdGlvbnMtY291bnRcbiBcInRvdGFsIG51bWJlciBvZiBwYXJ0aXRpb25zXCJcbiAoY29yZS9sZXRcbiAgW2MgKGNvdW50IGZhc3QtcGF0aC1wcm90b2NvbHMpIG0gKGNvcmUvbW9kIGMgMzIpXVxuICAoaWYgKGNvcmUvemVybz8gbSkgKGNvcmUvcXVvdCBjIDMyKSAoY29yZS9pbmMgKGNvcmUvcXVvdCBjIDMyKSkpKSlcbiJ9IHs6c3ltIGluZGV4ZWQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIGNvbGwgaW1wbGVtZW50cyBudGggaW4gY29uc3RhbnQgdGltZSIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5kZXhlZD9cbiBcIlJldHVybnMgdHJ1ZSBpZiBjb2xsIGltcGxlbWVudHMgbnRoIGluIGNvbnN0YW50IHRpbWVcIlxuIFt4XVxuIChzYXRpc2ZpZXM/IElJbmRleGVkIHgpKVxuIn0gezpzeW0gLSwgOm1ldGEgezpkb2MgIklmIG5vIHlzIGFyZSBzdXBwbGllZCwgcmV0dXJucyB0aGUgbmVnYXRpb24gb2YgeCwgZWxzZSBzdWJ0cmFjdHNcbiAgdGhlIHlzIGZyb20geCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LiIsIDphcmdsaXN0cyBbW3hdIFt4IHldIFt4IHkgJiBtb3JlXV19LCA6c291cmNlICIoZGVmblxuIC1cbiBcIklmIG5vIHlzIGFyZSBzdXBwbGllZCwgcmV0dXJucyB0aGUgbmVnYXRpb24gb2YgeCwgZWxzZSBzdWJ0cmFjdHNcXG4gIHRoZSB5cyBmcm9tIHggYW5kIHJldHVybnMgdGhlIHJlc3VsdC5cIlxuIChbeF0gKGNsanMuY29yZS8tIHgpKVxuIChbeCB5XSAoY2xqcy5jb3JlLy0geCB5KSlcbiAoW3ggeSAmIG1vcmVdIChyZWR1Y2UgLSAoY2xqcy5jb3JlLy0geCB5KSBtb3JlKSkpXG4ifSB7OnN5bSAtZXF1aXYsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgbyBhbmQgb3RoZXIgYXJlIGVxdWFsLCBmYWxzZSBvdGhlcndpc2UuIiwgOmFyZ2xpc3RzIChbbyBvdGhlcl0pfSwgOnByb3RvY29sIElFcXVpdn0gezpzeW0gYXNzb2MhLCA6bWV0YSB7OmRvYyAiV2hlbiBhcHBsaWVkIHRvIGEgdHJhbnNpZW50IG1hcCwgYWRkcyBtYXBwaW5nIG9mIGtleShzKSB0b1xuICB2YWwocykuIFdoZW4gYXBwbGllZCB0byBhIHRyYW5zaWVudCB2ZWN0b3IsIHNldHMgdGhlIHZhbCBhdCBpbmRleC5cbiAgTm90ZSAtIGluZGV4IG11c3QgYmUgPD0gKGNvdW50IHZlY3RvcikuIFJldHVybnMgY29sbC4iLCA6YXJnbGlzdHMgW1t0Y29sbCBrZXkgdmFsXSBbdGNvbGwga2V5IHZhbCAmIGt2c11dfSwgOnNvdXJjZSAiKGRlZm5cbiBhc3NvYyFcbiBcIldoZW4gYXBwbGllZCB0byBhIHRyYW5zaWVudCBtYXAsIGFkZHMgbWFwcGluZyBvZiBrZXkocykgdG9cXG4gIHZhbChzKS4gV2hlbiBhcHBsaWVkIHRvIGEgdHJhbnNpZW50IHZlY3Rvciwgc2V0cyB0aGUgdmFsIGF0IGluZGV4LlxcbiAgTm90ZSAtIGluZGV4IG11c3QgYmUgPD0gKGNvdW50IHZlY3RvcikuIFJldHVybnMgY29sbC5cIlxuIChbdGNvbGwga2V5IHZhbF0gKC1hc3NvYyEgdGNvbGwga2V5IHZhbCkpXG4gKFt0Y29sbCBrZXkgdmFsICYga3ZzXVxuICAobGV0XG4gICBbbnRjb2xsICgtYXNzb2MhIHRjb2xsIGtleSB2YWwpXVxuICAgKGlmXG4gICAga3ZzXG4gICAgKHJlY3VyIG50Y29sbCAoZmlyc3Qga3ZzKSAoc2Vjb25kIGt2cykgKG5uZXh0IGt2cykpXG4gICAgbnRjb2xsKSkpKVxuIn0gezpzeW0gaGFzaC1zZXQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbmV3IGhhc2ggc2V0IHdpdGggc3VwcGxpZWQga2V5cy4gIEFueSBlcXVhbCBrZXlzIGFyZVxuICBoYW5kbGVkIGFzIGlmIGJ5IHJlcGVhdGVkIHVzZXMgb2YgY29uai4iLCA6YXJnbGlzdHMgW1tdIFsmIGtleXNdXX0sIDpzb3VyY2UgIihkZWZuXG4gaGFzaC1zZXRcbiBcIlJldHVybnMgYSBuZXcgaGFzaCBzZXQgd2l0aCBzdXBwbGllZCBrZXlzLiAgQW55IGVxdWFsIGtleXMgYXJlXFxuICBoYW5kbGVkIGFzIGlmIGJ5IHJlcGVhdGVkIHVzZXMgb2YgY29uai5cIlxuIChbXSAje30pXG4gKFsmIGtleXNdIChzZXQga2V5cykpKVxuIn0gezpzeW0gcmVkdWNlLWt2LCA6bWV0YSB7OmRvYyAiUmVkdWNlcyBhbiBhc3NvY2lhdGl2ZSBjb2xsZWN0aW9uLiBmIHNob3VsZCBiZSBhIGZ1bmN0aW9uIG9mIDNcbiAgYXJndW1lbnRzLiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgZiB0byBpbml0LCB0aGUgZmlyc3Qga2V5XG4gIGFuZCB0aGUgZmlyc3QgdmFsdWUgaW4gY29sbCwgdGhlbiBhcHBseWluZyBmIHRvIHRoYXQgcmVzdWx0IGFuZCB0aGVcbiAgMm5kIGtleSBhbmQgdmFsdWUsIGV0Yy4gSWYgY29sbCBjb250YWlucyBubyBlbnRyaWVzLCByZXR1cm5zIGluaXRcbiAgYW5kIGYgaXMgbm90IGNhbGxlZC4gTm90ZSB0aGF0IHJlZHVjZS1rdiBpcyBzdXBwb3J0ZWQgb24gdmVjdG9ycyxcbiAgd2hlcmUgdGhlIGtleXMgd2lsbCBiZSB0aGUgb3JkaW5hbHMuIiwgOmFyZ2xpc3RzIFtbZiBpbml0IGNvbGxdXX0sIDpzb3VyY2UgIihkZWZuXG4gcmVkdWNlLWt2XG4gXCJSZWR1Y2VzIGFuIGFzc29jaWF0aXZlIGNvbGxlY3Rpb24uIGYgc2hvdWxkIGJlIGEgZnVuY3Rpb24gb2YgM1xcbiAgYXJndW1lbnRzLiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgZiB0byBpbml0LCB0aGUgZmlyc3Qga2V5XFxuICBhbmQgdGhlIGZpcnN0IHZhbHVlIGluIGNvbGwsIHRoZW4gYXBwbHlpbmcgZiB0byB0aGF0IHJlc3VsdCBhbmQgdGhlXFxuICAybmQga2V5IGFuZCB2YWx1ZSwgZXRjLiBJZiBjb2xsIGNvbnRhaW5zIG5vIGVudHJpZXMsIHJldHVybnMgaW5pdFxcbiAgYW5kIGYgaXMgbm90IGNhbGxlZC4gTm90ZSB0aGF0IHJlZHVjZS1rdiBpcyBzdXBwb3J0ZWQgb24gdmVjdG9ycyxcXG4gIHdoZXJlIHRoZSBrZXlzIHdpbGwgYmUgdGhlIG9yZGluYWxzLlwiXG4gKFtmIGluaXQgY29sbF0gKGlmLW5vdCAobmlsPyBjb2xsKSAoLWt2LXJlZHVjZSBjb2xsIGYgaW5pdCkgaW5pdCkpKVxuIn0gezpzeW0gcmVzZXQhLCA6bWV0YSB7OmRvYyAiU2V0cyB0aGUgdmFsdWUgb2YgYXRvbSB0byBuZXd2YWwgd2l0aG91dCByZWdhcmQgZm9yIHRoZVxuICBjdXJyZW50IHZhbHVlLiBSZXR1cm5zIG5ldy12YWx1ZS4iLCA6YXJnbGlzdHMgKFthIG5ldy12YWx1ZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZXNldCFcbiBcIlNldHMgdGhlIHZhbHVlIG9mIGF0b20gdG8gbmV3dmFsIHdpdGhvdXQgcmVnYXJkIGZvciB0aGVcXG4gIGN1cnJlbnQgdmFsdWUuIFJldHVybnMgbmV3LXZhbHVlLlwiXG4gW2EgbmV3LXZhbHVlXVxuIChpZlxuICAoaW5zdGFuY2U/IEF0b20gYSlcbiAgKGxldFxuICAgW3ZhbGlkYXRlICguLXZhbGlkYXRvciBhKV1cbiAgICh3aGVuLW5vdFxuICAgIChuaWw/IHZhbGlkYXRlKVxuICAgICh3aGVuLW5vdFxuICAgICAodmFsaWRhdGUgbmV3LXZhbHVlKVxuICAgICAodGhyb3cgKGpzL0Vycm9yLiBcIlZhbGlkYXRvciByZWplY3RlZCByZWZlcmVuY2Ugc3RhdGVcIikpKSlcbiAgIChsZXRcbiAgICBbb2xkLXZhbHVlICguLXN0YXRlIGEpXVxuICAgIChzZXQhICguLXN0YXRlIGEpIG5ldy12YWx1ZSlcbiAgICAod2hlbi1ub3RcbiAgICAgKG5pbD8gKC4td2F0Y2hlcyBhKSlcbiAgICAgKC1ub3RpZnktd2F0Y2hlcyBhIG9sZC12YWx1ZSBuZXctdmFsdWUpKVxuICAgIG5ldy12YWx1ZSkpXG4gICgtcmVzZXQhIGEgbmV3LXZhbHVlKSkpXG4ifSB7OnN5bSBuYW1lLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbmFtZSBTdHJpbmcgb2YgYSBzdHJpbmcsIHN5bWJvbCBvciBrZXl3b3JkLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gbmFtZVxuIFwiUmV0dXJucyB0aGUgbmFtZSBTdHJpbmcgb2YgYSBzdHJpbmcsIHN5bWJvbCBvciBrZXl3b3JkLlwiXG4gW3hdXG4gKGlmXG4gIChpbXBsZW1lbnRzPyBJTmFtZWQgeClcbiAgKC1uYW1lIHgpXG4gIChpZlxuICAgKHN0cmluZz8geClcbiAgIHhcbiAgICh0aHJvdyAoanMvRXJyb3IuIChzdHIgXCJEb2Vzbid0IHN1cHBvcnQgbmFtZTogXCIgeCkpKSkpKVxuIn0gezpzeW0gRm4sIDptZXRhIHs6ZG9jICJNYXJrZXIgcHJvdG9jb2wifSwgOm1ldGhvZHMgKCl9IHs6c3ltIGZmaXJzdCwgOm1ldGEgezpkb2MgIlNhbWUgYXMgKGZpcnN0IChmaXJzdCB4KSkiLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmbiBmZmlyc3QgXCJTYW1lIGFzIChmaXJzdCAoZmlyc3QgeCkpXCIgW2NvbGxdIChmaXJzdCAoZmlyc3QgY29sbCkpKVxuIn0gezpzeW0gc29ydGVkLXNldCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBuZXcgc29ydGVkIHNldCB3aXRoIHN1cHBsaWVkIGtleXMuIiwgOmFyZ2xpc3RzIFtbJiBrZXlzXV19LCA6c291cmNlICIoZGVmblxuIHNvcnRlZC1zZXRcbiBcIlJldHVybnMgYSBuZXcgc29ydGVkIHNldCB3aXRoIHN1cHBsaWVkIGtleXMuXCJcbiAoWyYga2V5c10gKHJlZHVjZSAtY29uaiAoLi1FTVBUWSBQZXJzaXN0ZW50VHJlZVNldCkga2V5cykpKVxuIn0gezpzeW0gY291bnRlZD8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgY29sbCBpbXBsZW1lbnRzIGNvdW50IGluIGNvbnN0YW50IHRpbWUiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGNvdW50ZWQ/XG4gXCJSZXR1cm5zIHRydWUgaWYgY29sbCBpbXBsZW1lbnRzIGNvdW50IGluIGNvbnN0YW50IHRpbWVcIlxuIFt4XVxuIChzYXRpc2ZpZXM/IElDb3VudGVkIHgpKVxuIn0gezpzeW0gdGFnZ2VkLWxpdGVyYWwsIDptZXRhIHs6ZG9jICJDb25zdHJ1Y3QgYSBkYXRhIHJlcHJlc2VudGF0aW9uIG9mIGEgdGFnZ2VkIGxpdGVyYWwgZnJvbSBhXG4gIHRhZyBzeW1ib2wgYW5kIGEgZm9ybS4iLCA6YXJnbGlzdHMgKFt0YWcgZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0YWdnZWQtbGl0ZXJhbFxuIFwiQ29uc3RydWN0IGEgZGF0YSByZXByZXNlbnRhdGlvbiBvZiBhIHRhZ2dlZCBsaXRlcmFsIGZyb20gYVxcbiAgdGFnIHN5bWJvbCBhbmQgYSBmb3JtLlwiXG4gW3RhZyBmb3JtXVxuIHs6cHJlIFsoc3ltYm9sPyB0YWcpXX1cbiAoVGFnZ2VkTGl0ZXJhbC4gdGFnIGZvcm0pKVxuIn0gezpzeW0gcHJpbnRsbiwgOm1ldGEgezpkb2MgIlNhbWUgYXMgcHJpbnQgZm9sbG93ZWQgYnkgKG5ld2xpbmUpIiwgOmFyZ2xpc3RzIChbJiBvYmpzXSl9LCA6c291cmNlICIoZGVmblxuIHByaW50bG5cbiBcIlNhbWUgYXMgcHJpbnQgZm9sbG93ZWQgYnkgKG5ld2xpbmUpXCJcbiBbJiBvYmpzXVxuIChwci13aXRoLW9wdHMgb2JqcyAoYXNzb2MgKHByLW9wdHMpIDpyZWFkYWJseSBmYWxzZSkpXG4gKHdoZW4gKnByaW50LW5ld2xpbmUqIChuZXdsaW5lIChwci1vcHRzKSkpKVxuIn0gezpzeW0gYXNzb2MtaW4sIDptZXRhIHs6ZG9jICJBc3NvY2lhdGVzIGEgdmFsdWUgaW4gYSBuZXN0ZWQgYXNzb2NpYXRpdmUgc3RydWN0dXJlLCB3aGVyZSBrcyBpcyBhXG4gIHNlcXVlbmNlIG9mIGtleXMgYW5kIHYgaXMgdGhlIG5ldyB2YWx1ZSBhbmQgcmV0dXJucyBhIG5ldyBuZXN0ZWQgc3RydWN0dXJlLlxuICBJZiBhbnkgbGV2ZWxzIGRvIG5vdCBleGlzdCwgaGFzaC1tYXBzIHdpbGwgYmUgY3JlYXRlZC4iLCA6YXJnbGlzdHMgKFttIFtrICYga3NdIHZdKX0sIDpzb3VyY2UgIihkZWZuXG4gYXNzb2MtaW5cbiBcIkFzc29jaWF0ZXMgYSB2YWx1ZSBpbiBhIG5lc3RlZCBhc3NvY2lhdGl2ZSBzdHJ1Y3R1cmUsIHdoZXJlIGtzIGlzIGFcXG4gIHNlcXVlbmNlIG9mIGtleXMgYW5kIHYgaXMgdGhlIG5ldyB2YWx1ZSBhbmQgcmV0dXJucyBhIG5ldyBuZXN0ZWQgc3RydWN0dXJlLlxcbiAgSWYgYW55IGxldmVscyBkbyBub3QgZXhpc3QsIGhhc2gtbWFwcyB3aWxsIGJlIGNyZWF0ZWQuXCJcbiBbbSBbayAmIGtzXSB2XVxuIChpZiBrcyAoYXNzb2MgbSBrIChhc3NvYy1pbiAoZ2V0IG0gaykga3MgdikpIChhc3NvYyBtIGsgdikpKVxuIn0gezpzeW0gYml0LXRlc3QsIDptZXRhIHs6ZG9jICJUZXN0IGJpdCBhdCBpbmRleCBuIiwgOmFyZ2xpc3RzIChbeCBuXSl9LCA6c291cmNlICIoZGVmbiBiaXQtdGVzdCBcIlRlc3QgYml0IGF0IGluZGV4IG5cIiBbeCBuXSAoY2xqcy5jb3JlL2JpdC10ZXN0IHggbikpXG4ifSB7OnN5bSBJU3dhcCwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhZGRpbmcgc3dhcHBpbmcgZnVuY3Rpb25hbGl0eS4ifSwgOm1ldGhvZHMgKC1zd2FwISl9IHs6c3ltIG1lbW9pemUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbWVtb2l6ZWQgdmVyc2lvbiBvZiBhIHJlZmVyZW50aWFsbHkgdHJhbnNwYXJlbnQgZnVuY3Rpb24uIFRoZVxuICBtZW1vaXplZCB2ZXJzaW9uIG9mIHRoZSBmdW5jdGlvbiBrZWVwcyBhIGNhY2hlIG9mIHRoZSBtYXBwaW5nIGZyb20gYXJndW1lbnRzXG4gIHRvIHJlc3VsdHMgYW5kLCB3aGVuIGNhbGxzIHdpdGggdGhlIHNhbWUgYXJndW1lbnRzIGFyZSByZXBlYXRlZCBvZnRlbiwgaGFzXG4gIGhpZ2hlciBwZXJmb3JtYW5jZSBhdCB0aGUgZXhwZW5zZSBvZiBoaWdoZXIgbWVtb3J5IHVzZS4iLCA6YXJnbGlzdHMgKFtmXSl9LCA6c291cmNlICIoZGVmblxuIG1lbW9pemVcbiBcIlJldHVybnMgYSBtZW1vaXplZCB2ZXJzaW9uIG9mIGEgcmVmZXJlbnRpYWxseSB0cmFuc3BhcmVudCBmdW5jdGlvbi4gVGhlXFxuICBtZW1vaXplZCB2ZXJzaW9uIG9mIHRoZSBmdW5jdGlvbiBrZWVwcyBhIGNhY2hlIG9mIHRoZSBtYXBwaW5nIGZyb20gYXJndW1lbnRzXFxuICB0byByZXN1bHRzIGFuZCwgd2hlbiBjYWxscyB3aXRoIHRoZSBzYW1lIGFyZ3VtZW50cyBhcmUgcmVwZWF0ZWQgb2Z0ZW4sIGhhc1xcbiAgaGlnaGVyIHBlcmZvcm1hbmNlIGF0IHRoZSBleHBlbnNlIG9mIGhpZ2hlciBtZW1vcnkgdXNlLlwiXG4gW2ZdXG4gKGxldFxuICBbbWVtIChhdG9tIHt9KV1cbiAgKGZuXG4gICBbJiBhcmdzXVxuICAgKGxldFxuICAgIFt2IChnZXQgQG1lbSBhcmdzIGxvb2t1cC1zZW50aW5lbCldXG4gICAgKGlmXG4gICAgIChpZGVudGljYWw/IHYgbG9va3VwLXNlbnRpbmVsKVxuICAgICAobGV0IFtyZXQgKGFwcGx5IGYgYXJncyldIChzd2FwISBtZW0gYXNzb2MgYXJncyByZXQpIHJldClcbiAgICAgdikpKSkpXG4ifSB7OnN5bSBhbHRlci1tZXRhISwgOm1ldGEgezpkb2MgIkF0b21pY2FsbHkgc2V0cyB0aGUgbWV0YWRhdGEgZm9yIGEgbmFtZXNwYWNlL3Zhci9yZWYvYWdlbnQvYXRvbSB0byBiZTpcblxuICAoYXBwbHkgZiBpdHMtY3VycmVudC1tZXRhIGFyZ3MpXG5cbiAgZiBtdXN0IGJlIGZyZWUgb2Ygc2lkZS1lZmZlY3RzIiwgOmFyZ2xpc3RzIChbaXJlZiBmICYgYXJnc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbHRlci1tZXRhIVxuIFwiQXRvbWljYWxseSBzZXRzIHRoZSBtZXRhZGF0YSBmb3IgYSBuYW1lc3BhY2UvdmFyL3JlZi9hZ2VudC9hdG9tIHRvIGJlOlxcblxcbiAgKGFwcGx5IGYgaXRzLWN1cnJlbnQtbWV0YSBhcmdzKVxcblxcbiAgZiBtdXN0IGJlIGZyZWUgb2Ygc2lkZS1lZmZlY3RzXCJcbiBbaXJlZiBmICYgYXJnc11cbiAoc2V0ISAoLi1tZXRhIGlyZWYpIChhcHBseSBmICguLW1ldGEgaXJlZikgYXJncykpKVxuIn0gezpzeW0gemVybz8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgbnVtIGlzIHplcm8sIGVsc2UgZmFsc2UiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHplcm8/XG4gXCJSZXR1cm5zIHRydWUgaWYgbnVtIGlzIHplcm8sIGVsc2UgZmFsc2VcIlxuIFt4XVxuIChjbGpzLmNvcmUvemVybz8geCkpXG4ifSB7OnN5bSBzaW1wbGUta2V5d29yZD8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IGlzIGEga2V5d29yZCB3aXRob3V0IGEgbmFtZXNwYWNlIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzaW1wbGUta2V5d29yZD9cbiBcIlJldHVybiB0cnVlIGlmIHggaXMgYSBrZXl3b3JkIHdpdGhvdXQgYSBuYW1lc3BhY2VcIlxuIFt4XVxuIChhbmQgKGtleXdvcmQ/IHgpIChuaWw/IChuYW1lc3BhY2UgeCkpKSlcbiJ9IHs6c3ltICptYWluLWNsaS1mbiosIDptZXRhIHs6ZG9jICJXaGVuIGNvbXBpbGVkIGZvciBhIGNvbW1hbmQtbGluZSB0YXJnZXQsIHdoYXRldmVyIGZ1bmN0aW9uXG4gICptYWluLWNsaS1mbiogaXMgc2V0IHRvIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIGNvbW1hbmQtbGluZVxuICBhcmd2IGFzIGFyZ3VtZW50cyJ9LCA6c291cmNlICIoZGVmICptYWluLWNsaS1mbiogbmlsKVxuIn0gezpzeW0gLWFzc29jLW4sIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbmV3IHZlY3RvciB3aXRoIHZhbHVlIHZhbCBhZGRlZCBhdCBwb3NpdGlvbiBuLiIsIDphcmdsaXN0cyAoW2NvbGwgbiB2YWxdKX0sIDpwcm90b2NvbCBJVmVjdG9yfSB7OnN5bSB1bmNoZWNrZWQtZGVjLWludCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBudW1iZXIgb25lIGxlc3MgdGhhbiB4LCBhbiBpbnQuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB1bmNoZWNrZWQtZGVjLWludFxuIFwiUmV0dXJucyBhIG51bWJlciBvbmUgbGVzcyB0aGFuIHgsIGFuIGludC5cIlxuIFt4XVxuIChjbGpzLmNvcmUvdW5jaGVja2VkLWRlYy1pbnQgeCkpXG4ifSB7OnN5bSBwZXJzaXN0ZW50ISwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBuZXcsIHBlcnNpc3RlbnQgdmVyc2lvbiBvZiB0aGUgdHJhbnNpZW50IGNvbGxlY3Rpb24sIGluXG4gIGNvbnN0YW50IHRpbWUuIFRoZSB0cmFuc2llbnQgY29sbGVjdGlvbiBjYW5ub3QgYmUgdXNlZCBhZnRlciB0aGlzXG4gIGNhbGwsIGFueSBzdWNoIHVzZSB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbi4iLCA6YXJnbGlzdHMgKFt0Y29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwZXJzaXN0ZW50IVxuIFwiUmV0dXJucyBhIG5ldywgcGVyc2lzdGVudCB2ZXJzaW9uIG9mIHRoZSB0cmFuc2llbnQgY29sbGVjdGlvbiwgaW5cXG4gIGNvbnN0YW50IHRpbWUuIFRoZSB0cmFuc2llbnQgY29sbGVjdGlvbiBjYW5ub3QgYmUgdXNlZCBhZnRlciB0aGlzXFxuICBjYWxsLCBhbnkgc3VjaCB1c2Ugd2lsbCB0aHJvdyBhbiBleGNlcHRpb24uXCJcbiBbdGNvbGxdXG4gKC1wZXJzaXN0ZW50ISB0Y29sbCkpXG4ifSB7OnN5bSBzZXQtcHJpbnQtZm4hLCA6bWV0YSB7OmRvYyAiU2V0ICpwcmludC1mbiogdG8gZi4iLCA6YXJnbGlzdHMgKFtmXSl9LCA6c291cmNlICIoZGVmbiBzZXQtcHJpbnQtZm4hIFwiU2V0ICpwcmludC1mbiogdG8gZi5cIiBbZl0gKHNldCEgKnByaW50LWZuKiBmKSlcbiJ9IHs6c3ltIG5uZXh0LCA6bWV0YSB7OmRvYyAiU2FtZSBhcyAobmV4dCAobmV4dCB4KSkiLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmbiBubmV4dCBcIlNhbWUgYXMgKG5leHQgKG5leHQgeCkpXCIgW2NvbGxdIChuZXh0IChuZXh0IGNvbGwpKSlcbiJ9IHs6c3ltIGFkZC13YXRjaCwgOm1ldGEgezpkb2MgIkFkZHMgYSB3YXRjaCBmdW5jdGlvbiB0byBhbiBhdG9tIHJlZmVyZW5jZS4gVGhlIHdhdGNoIGZuIG11c3QgYmUgYVxuICBmbiBvZiA0IGFyZ3M6IGEga2V5LCB0aGUgcmVmZXJlbmNlLCBpdHMgb2xkLXN0YXRlLCBpdHNcbiAgbmV3LXN0YXRlLiBXaGVuZXZlciB0aGUgcmVmZXJlbmNlJ3Mgc3RhdGUgbWlnaHQgaGF2ZSBiZWVuIGNoYW5nZWQsXG4gIGFueSByZWdpc3RlcmVkIHdhdGNoZXMgd2lsbCBoYXZlIHRoZWlyIGZ1bmN0aW9ucyBjYWxsZWQuIFRoZSB3YXRjaFxuICBmbiB3aWxsIGJlIGNhbGxlZCBzeW5jaHJvbm91c2x5LiBOb3RlIHRoYXQgYW4gYXRvbSdzIHN0YXRlXG4gIG1heSBoYXZlIGNoYW5nZWQgYWdhaW4gcHJpb3IgdG8gdGhlIGZuIGNhbGwsIHNvIHVzZSBvbGQvbmV3LXN0YXRlXG4gIHJhdGhlciB0aGFuIGRlcmVmaW5nIHRoZSByZWZlcmVuY2UuIEtleXMgbXVzdCBiZSB1bmlxdWUgcGVyXG4gIHJlZmVyZW5jZSwgYW5kIGNhbiBiZSB1c2VkIHRvIHJlbW92ZSB0aGUgd2F0Y2ggd2l0aCByZW1vdmUtd2F0Y2gsXG4gIGJ1dCBhcmUgb3RoZXJ3aXNlIGNvbnNpZGVyZWQgb3BhcXVlIGJ5IHRoZSB3YXRjaCBtZWNoYW5pc20uICBCZWFyIGluXG4gIG1pbmQgdGhhdCByZWdhcmRsZXNzIG9mIHRoZSByZXN1bHQgb3IgYWN0aW9uIG9mIHRoZSB3YXRjaCBmbnMgdGhlXG4gIGF0b20ncyB2YWx1ZSB3aWxsIGNoYW5nZS4gIEV4YW1wbGU6XG5cbiAgICAgIChkZWYgYSAoYXRvbSAwKSlcbiAgICAgIChhZGQtd2F0Y2ggYSA6aW5jIChmbiBbayByIG8gbl0gKGFzc2VydCAoPT0gMCBuKSkpKVxuICAgICAgKHN3YXAhIGEgaW5jKVxuICAgICAgOzsgQXNzZXJ0aW9uIEVycm9yXG4gICAgICAoZGVyZWYgYSlcbiAgICAgIDs9PiAxIiwgOmFyZ2xpc3RzIChbaXJlZiBrZXkgZl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhZGQtd2F0Y2hcbiBcIkFkZHMgYSB3YXRjaCBmdW5jdGlvbiB0byBhbiBhdG9tIHJlZmVyZW5jZS4gVGhlIHdhdGNoIGZuIG11c3QgYmUgYVxcbiAgZm4gb2YgNCBhcmdzOiBhIGtleSwgdGhlIHJlZmVyZW5jZSwgaXRzIG9sZC1zdGF0ZSwgaXRzXFxuICBuZXctc3RhdGUuIFdoZW5ldmVyIHRoZSByZWZlcmVuY2UncyBzdGF0ZSBtaWdodCBoYXZlIGJlZW4gY2hhbmdlZCxcXG4gIGFueSByZWdpc3RlcmVkIHdhdGNoZXMgd2lsbCBoYXZlIHRoZWlyIGZ1bmN0aW9ucyBjYWxsZWQuIFRoZSB3YXRjaFxcbiAgZm4gd2lsbCBiZSBjYWxsZWQgc3luY2hyb25vdXNseS4gTm90ZSB0aGF0IGFuIGF0b20ncyBzdGF0ZVxcbiAgbWF5IGhhdmUgY2hhbmdlZCBhZ2FpbiBwcmlvciB0byB0aGUgZm4gY2FsbCwgc28gdXNlIG9sZC9uZXctc3RhdGVcXG4gIHJhdGhlciB0aGFuIGRlcmVmaW5nIHRoZSByZWZlcmVuY2UuIEtleXMgbXVzdCBiZSB1bmlxdWUgcGVyXFxuICByZWZlcmVuY2UsIGFuZCBjYW4gYmUgdXNlZCB0byByZW1vdmUgdGhlIHdhdGNoIHdpdGggcmVtb3ZlLXdhdGNoLFxcbiAgYnV0IGFyZSBvdGhlcndpc2UgY29uc2lkZXJlZCBvcGFxdWUgYnkgdGhlIHdhdGNoIG1lY2hhbmlzbS4gIEJlYXIgaW5cXG4gIG1pbmQgdGhhdCByZWdhcmRsZXNzIG9mIHRoZSByZXN1bHQgb3IgYWN0aW9uIG9mIHRoZSB3YXRjaCBmbnMgdGhlXFxuICBhdG9tJ3MgdmFsdWUgd2lsbCBjaGFuZ2UuICBFeGFtcGxlOlxcblxcbiAgICAgIChkZWYgYSAoYXRvbSAwKSlcXG4gICAgICAoYWRkLXdhdGNoIGEgOmluYyAoZm4gW2sgciBvIG5dIChhc3NlcnQgKD09IDAgbikpKSlcXG4gICAgICAoc3dhcCEgYSBpbmMpXFxuICAgICAgOzsgQXNzZXJ0aW9uIEVycm9yXFxuICAgICAgKGRlcmVmIGEpXFxuICAgICAgOz0+IDFcIlxuIFtpcmVmIGtleSBmXVxuICgtYWRkLXdhdGNoIGlyZWYga2V5IGYpXG4gaXJlZilcbiJ9IHs6c3ltIG5vdC1ldmVyeT8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIGZhbHNlIGlmIChwcmVkIHgpIGlzIGxvZ2ljYWwgdHJ1ZSBmb3IgZXZlcnkgeCBpblxuICBjb2xsLCBlbHNlIHRydWUuIiwgOmFyZ2xpc3RzIChbcHJlZCBjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIG5vdC1ldmVyeT9cbiBcIlJldHVybnMgZmFsc2UgaWYgKHByZWQgeCkgaXMgbG9naWNhbCB0cnVlIGZvciBldmVyeSB4IGluXFxuICBjb2xsLCBlbHNlIHRydWUuXCJcbiBbcHJlZCBjb2xsXVxuIChub3QgKGV2ZXJ5PyBwcmVkIGNvbGwpKSlcbiJ9IHs6c3ltIHJlbSwgOm1ldGEgezpkb2MgInJlbWFpbmRlciBvZiBkaXZpZGluZyBudW1lcmF0b3IgYnkgZGVub21pbmF0b3IuIiwgOmFyZ2xpc3RzIChbbiBkXSl9LCA6c291cmNlICIoZGVmblxuIHJlbVxuIFwicmVtYWluZGVyIG9mIGRpdmlkaW5nIG51bWVyYXRvciBieSBkZW5vbWluYXRvci5cIlxuIFtuIGRdXG4gKGxldCBbcSAocXVvdCBuIGQpXSAoLSBuICgqIGQgcSkpKSlcbiJ9IHs6c3ltIGlmaW5kPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiBjb2xsIGltcGxlbWVudHMgSUZpbmQiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGlmaW5kP1xuIFwiUmV0dXJucyB0cnVlIGlmIGNvbGwgaW1wbGVtZW50cyBJRmluZFwiXG4gW3hdXG4gKHNhdGlzZmllcz8gSUZpbmQgeCkpXG4ifSB7OnN5bSBzb21lLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgZmlyc3QgbG9naWNhbCB0cnVlIHZhbHVlIG9mIChwcmVkIHgpIGZvciBhbnkgeCBpbiBjb2xsLFxuICBlbHNlIG5pbC4gIE9uZSBjb21tb24gaWRpb20gaXMgdG8gdXNlIGEgc2V0IGFzIHByZWQsIGZvciBleGFtcGxlXG4gIHRoaXMgd2lsbCByZXR1cm4gOmZyZWQgaWYgOmZyZWQgaXMgaW4gdGhlIHNlcXVlbmNlLCBvdGhlcndpc2UgbmlsOlxuICAoc29tZSAjezpmcmVkfSBjb2xsKSIsIDphcmdsaXN0cyAoW3ByZWQgY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzb21lXG4gXCJSZXR1cm5zIHRoZSBmaXJzdCBsb2dpY2FsIHRydWUgdmFsdWUgb2YgKHByZWQgeCkgZm9yIGFueSB4IGluIGNvbGwsXFxuICBlbHNlIG5pbC4gIE9uZSBjb21tb24gaWRpb20gaXMgdG8gdXNlIGEgc2V0IGFzIHByZWQsIGZvciBleGFtcGxlXFxuICB0aGlzIHdpbGwgcmV0dXJuIDpmcmVkIGlmIDpmcmVkIGlzIGluIHRoZSBzZXF1ZW5jZSwgb3RoZXJ3aXNlIG5pbDpcXG4gIChzb21lICN7OmZyZWR9IGNvbGwpXCJcbiBbcHJlZCBjb2xsXVxuICh3aGVuLWxldCBbcyAoc2VxIGNvbGwpXSAob3IgKHByZWQgKGZpcnN0IHMpKSAocmVjdXIgcHJlZCAobmV4dCBzKSkpKSlcbiJ9IHs6c3ltIElOYW1lZCwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhZGRpbmcgYSBuYW1lLiJ9LCA6bWV0aG9kcyAoLW5hbWUgLW5hbWVzcGFjZSl9IHs6c3ltIElSZWR1Y2UsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3Igc2VxIHR5cGVzIHRoYXQgY2FuIHJlZHVjZSB0aGVtc2VsdmVzLlxuICBDYWxsZWQgYnkgY2xqcy5jb3JlL3JlZHVjZS4ifSwgOm1ldGhvZHMgKC1yZWR1Y2UpfSB7OnN5bSBuZWctaW50PywgOm1ldGEgezpkb2MgIlJldHVybiB0cnVlIGlmIHggc2F0aXNmaWVzIGludD8gYW5kIGlzIG5lZ2F0aXZlLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gbmVnLWludD9cbiBcIlJldHVybiB0cnVlIGlmIHggc2F0aXNmaWVzIGludD8gYW5kIGlzIG5lZ2F0aXZlLlwiXG4gW3hdXG4gKGNvbmRcbiAgKGludGVnZXI/IHgpXG4gIChuZWc/IHgpXG4gIChpbnN0YW5jZT8gZ29vZy5tYXRoLkludGVnZXIgeClcbiAgKC5pc05lZ2F0aXZlIHgpXG4gIChpbnN0YW5jZT8gZ29vZy5tYXRoLkxvbmcgeClcbiAgKC5pc05lZ2F0aXZlIHgpXG4gIDplbHNlXG4gIGZhbHNlKSlcbiJ9IHs6c3ltIGRyb3AsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiBhbGwgYnV0IHRoZSBmaXJzdCBuIGl0ZW1zIGluIGNvbGwuXG4gIFJldHVybnMgYSBzdGF0ZWZ1bCB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC4iLCA6YXJnbGlzdHMgW1tuXSBbbiBjb2xsXV19LCA6c291cmNlICIoZGVmblxuIGRyb3BcbiBcIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIGFsbCBidXQgdGhlIGZpcnN0IG4gaXRlbXMgaW4gY29sbC5cXG4gIFJldHVybnMgYSBzdGF0ZWZ1bCB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC5cIlxuIChbbl1cbiAgezpwcmUgWyhudW1iZXI/IG4pXX1cbiAgKGZuXG4gICBbcmZdXG4gICAobGV0XG4gICAgW25hICh2b2xhdGlsZSEgbildXG4gICAgKGZuXG4gICAgIChbXSAocmYpKVxuICAgICAoW3Jlc3VsdF0gKHJmIHJlc3VsdCkpXG4gICAgIChbcmVzdWx0IGlucHV0XVxuICAgICAgKGxldFxuICAgICAgIFtuIEBuYV1cbiAgICAgICAodnN3YXAhIG5hIGRlYylcbiAgICAgICAoaWYgKHBvcz8gbikgcmVzdWx0IChyZiByZXN1bHQgaW5wdXQpKSkpKSkpKVxuIChbbiBjb2xsXVxuICB7OnByZSBbKG51bWJlcj8gbildfVxuICAobGV0XG4gICBbc3RlcFxuICAgIChmblxuICAgICBbbiBjb2xsXVxuICAgICAobGV0XG4gICAgICBbcyAoc2VxIGNvbGwpXVxuICAgICAgKGlmIChhbmQgKHBvcz8gbikgcykgKHJlY3VyIChkZWMgbikgKHJlc3QgcykpIHMpKSldXG4gICAobGF6eS1zZXEgKHN0ZXAgbiBjb2xsKSkpKSlcbiJ9IHs6c3ltIGpzLW9iaiwgOm1ldGEgezpkb2MgIkNyZWF0ZSBKYXZhU3JpcHQgb2JqZWN0IGZyb20gYW4gZXZlbiBudW1iZXIgYXJndW1lbnRzIHJlcHJlc2VudGluZ1xuICBpbnRlcmxlYXZlZCBrZXlzIGFuZCB2YWx1ZXMuIiwgOmFyZ2xpc3RzIFtbXSBbJiBrZXl2YWxzXV19LCA6c291cmNlICIoZGVmblxuIGpzLW9ialxuIFwiQ3JlYXRlIEphdmFTcmlwdCBvYmplY3QgZnJvbSBhbiBldmVuIG51bWJlciBhcmd1bWVudHMgcmVwcmVzZW50aW5nXFxuICBpbnRlcmxlYXZlZCBrZXlzIGFuZCB2YWx1ZXMuXCJcbiAoW10gKGNsanMuY29yZS9qcy1vYmopKVxuIChbJiBrZXl2YWxzXSAoYXBwbHkgZ29iamVjdC9jcmVhdGUga2V5dmFscykpKVxuIn0gezpzeW0gSVRyYW5zaWVudENvbGxlY3Rpb24sIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgYWRkaW5nIGJhc2ljIGZ1bmN0aW9uYWxpdHkgdG8gdHJhbnNpZW50IGNvbGxlY3Rpb25zLiJ9LCA6bWV0aG9kcyAoLWNvbmohIC1wZXJzaXN0ZW50ISl9IHs6c3ltIG50aCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHZhbHVlIGF0IHRoZSBpbmRleC4gZ2V0IHJldHVybnMgbmlsIGlmIGluZGV4IG91dCBvZlxuICBib3VuZHMsIG50aCB0aHJvd3MgYW4gZXhjZXB0aW9uIHVubGVzcyBub3QtZm91bmQgaXMgc3VwcGxpZWQuICBudGhcbiAgYWxzbyB3b3JrcyBmb3Igc3RyaW5ncywgYXJyYXlzLCByZWdleCBNYXRjaGVycyBhbmQgTGlzdHMsIGFuZCxcbiAgaW4gTyhuKSB0aW1lLCBmb3Igc2VxdWVuY2VzLiIsIDphcmdsaXN0cyBbW2NvbGwgbl0gW2NvbGwgbiBub3QtZm91bmRdXX0sIDpzb3VyY2UgIihkZWZuXG4gbnRoXG4gXCJSZXR1cm5zIHRoZSB2YWx1ZSBhdCB0aGUgaW5kZXguIGdldCByZXR1cm5zIG5pbCBpZiBpbmRleCBvdXQgb2ZcXG4gIGJvdW5kcywgbnRoIHRocm93cyBhbiBleGNlcHRpb24gdW5sZXNzIG5vdC1mb3VuZCBpcyBzdXBwbGllZC4gIG50aFxcbiAgYWxzbyB3b3JrcyBmb3Igc3RyaW5ncywgYXJyYXlzLCByZWdleCBNYXRjaGVycyBhbmQgTGlzdHMsIGFuZCxcXG4gIGluIE8obikgdGltZSwgZm9yIHNlcXVlbmNlcy5cIlxuIChbY29sbCBuXVxuICAoY29uZFxuICAgKG5vdCAobnVtYmVyPyBuKSlcbiAgICh0aHJvdyAoanMvRXJyb3IuIFwiSW5kZXggYXJndW1lbnQgdG8gbnRoIG11c3QgYmUgYSBudW1iZXJcIikpXG4gICAobmlsPyBjb2xsKVxuICAgY29sbFxuICAgKGltcGxlbWVudHM/IElJbmRleGVkIGNvbGwpXG4gICAoLW50aCBjb2xsIG4pXG4gICAoYXJyYXk/IGNvbGwpXG4gICAoaWZcbiAgICAoYW5kICg8IC0xIG4gKC4tbGVuZ3RoIGNvbGwpKSlcbiAgICAoYWdldCBjb2xsIChpbnQgbikpXG4gICAgKHRocm93IChqcy9FcnJvci4gXCJJbmRleCBvdXQgb2YgYm91bmRzXCIpKSlcbiAgIChzdHJpbmc/IGNvbGwpXG4gICAoaWZcbiAgICAoYW5kICg8IC0xIG4gKC4tbGVuZ3RoIGNvbGwpKSlcbiAgICAoLmNoYXJBdCBjb2xsIChpbnQgbikpXG4gICAgKHRocm93IChqcy9FcnJvci4gXCJJbmRleCBvdXQgb2YgYm91bmRzXCIpKSlcbiAgIChvciAoaW1wbGVtZW50cz8gSVNlcSBjb2xsKSAoaW1wbGVtZW50cz8gSVNlcXVlbnRpYWwgY29sbCkpXG4gICAoaWZcbiAgICAobmVnPyBuKVxuICAgICh0aHJvdyAoanMvRXJyb3IuIFwiSW5kZXggb3V0IG9mIGJvdW5kc1wiKSlcbiAgICAobGluZWFyLXRyYXZlcnNhbC1udGggY29sbCBuKSlcbiAgIChuYXRpdmUtc2F0aXNmaWVzPyBJSW5kZXhlZCBjb2xsKVxuICAgKC1udGggY29sbCBuKVxuICAgOmVsc2VcbiAgICh0aHJvd1xuICAgIChqcy9FcnJvci5cbiAgICAgKHN0clxuICAgICAgXCJudGggbm90IHN1cHBvcnRlZCBvbiB0aGlzIHR5cGUgXCJcbiAgICAgICh0eXBlLT5zdHIgKHR5cGUgY29sbCkpKSkpKSlcbiAoW2NvbGwgbiBub3QtZm91bmRdXG4gIChjb25kXG4gICAobm90IChudW1iZXI/IG4pKVxuICAgKHRocm93IChqcy9FcnJvci4gXCJJbmRleCBhcmd1bWVudCB0byBudGggbXVzdCBiZSBhIG51bWJlci5cIikpXG4gICAobmlsPyBjb2xsKVxuICAgbm90LWZvdW5kXG4gICAoaW1wbGVtZW50cz8gSUluZGV4ZWQgY29sbClcbiAgICgtbnRoIGNvbGwgbiBub3QtZm91bmQpXG4gICAoYXJyYXk/IGNvbGwpXG4gICAoaWYgKGFuZCAoPCAtMSBuICguLWxlbmd0aCBjb2xsKSkpIChhZ2V0IGNvbGwgKGludCBuKSkgbm90LWZvdW5kKVxuICAgKHN0cmluZz8gY29sbClcbiAgIChpZiAoYW5kICg8IC0xIG4gKC4tbGVuZ3RoIGNvbGwpKSkgKC5jaGFyQXQgY29sbCAoaW50IG4pKSBub3QtZm91bmQpXG4gICAob3IgKGltcGxlbWVudHM/IElTZXEgY29sbCkgKGltcGxlbWVudHM/IElTZXF1ZW50aWFsIGNvbGwpKVxuICAgKGlmIChuZWc/IG4pIG5vdC1mb3VuZCAobGluZWFyLXRyYXZlcnNhbC1udGggY29sbCBuIG5vdC1mb3VuZCkpXG4gICAobmF0aXZlLXNhdGlzZmllcz8gSUluZGV4ZWQgY29sbClcbiAgICgtbnRoIGNvbGwgbiBub3QtZm91bmQpXG4gICA6ZWxzZVxuICAgKHRocm93XG4gICAgKGpzL0Vycm9yLlxuICAgICAoc3RyXG4gICAgICBcIm50aCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgdHlwZSBcIlxuICAgICAgKHR5cGUtPnN0ciAodHlwZSBjb2xsKSkpKSkpKSlcbiJ9IHs6c3ltIHNvcnRlZD8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgY29sbCBzYXRpc2ZpZXMgSVNvcnRlZCIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gc29ydGVkP1xuIFwiUmV0dXJucyB0cnVlIGlmIGNvbGwgc2F0aXNmaWVzIElTb3J0ZWRcIlxuIFt4XVxuIChzYXRpc2ZpZXM/IElTb3J0ZWQgeCkpXG4ifSB7OnN5bSBuaWw/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIHggaXMgbmlsLCBmYWxzZSBvdGhlcndpc2UuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBuaWw/XG4gXCJSZXR1cm5zIHRydWUgaWYgeCBpcyBuaWwsIGZhbHNlIG90aGVyd2lzZS5cIlxuIFt4XVxuIChjb2VyY2l2ZS09IHggbmlsKSlcbiJ9IHs6c3ltIHNwbGl0LWF0LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHZlY3RvciBvZiBbKHRha2UgbiBjb2xsKSAoZHJvcCBuIGNvbGwpXSIsIDphcmdsaXN0cyAoW24gY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzcGxpdC1hdFxuIFwiUmV0dXJucyBhIHZlY3RvciBvZiBbKHRha2UgbiBjb2xsKSAoZHJvcCBuIGNvbGwpXVwiXG4gW24gY29sbF1cbiBbKHRha2UgbiBjb2xsKSAoZHJvcCBuIGNvbGwpXSlcbiJ9IHs6c3ltIHBybi1zdHItd2l0aC1vcHRzLCA6bWV0YSB7OmRvYyAiU2FtZSBhcyBwci1zdHItd2l0aC1vcHRzIGZvbGxvd2VkIGJ5IChuZXdsaW5lKSIsIDphcmdsaXN0cyAoW29ianMgb3B0c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcm4tc3RyLXdpdGgtb3B0c1xuIFwiU2FtZSBhcyBwci1zdHItd2l0aC1vcHRzIGZvbGxvd2VkIGJ5IChuZXdsaW5lKVwiXG4gW29ianMgb3B0c11cbiAoaWZcbiAgKGVtcHR5PyBvYmpzKVxuICBcIlxcblwiXG4gIChsZXRcbiAgIFtzYiAocHItc2Itd2l0aC1vcHRzIG9ianMgb3B0cyldXG4gICAoLmFwcGVuZCBzYiBcXG5ld2xpbmUpXG4gICAoc3RyIHNiKSkpKVxuIn0gezpzeW0gbm90LW5hdGl2ZSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgbm90LW5hdGl2ZSBuaWwpXG4ifSB7OnN5bSByYW5kb20tc2FtcGxlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBpdGVtcyBmcm9tIGNvbGwgd2l0aCByYW5kb20gcHJvYmFiaWxpdHkgb2YgcHJvYiAoMC4wIC1cbiAgMS4wKS4gIFJldHVybnMgYSB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC4iLCA6YXJnbGlzdHMgW1twcm9iXSBbcHJvYiBjb2xsXV19LCA6c291cmNlICIoZGVmblxuIHJhbmRvbS1zYW1wbGVcbiBcIlJldHVybnMgaXRlbXMgZnJvbSBjb2xsIHdpdGggcmFuZG9tIHByb2JhYmlsaXR5IG9mIHByb2IgKDAuMCAtXFxuICAxLjApLiAgUmV0dXJucyBhIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLlwiXG4gKFtwcm9iXSAoZmlsdGVyIChmbiBbX10gKDwgKHJhbmQpIHByb2IpKSkpXG4gKFtwcm9iIGNvbGxdIChmaWx0ZXIgKGZuIFtfXSAoPCAocmFuZCkgcHJvYikpIGNvbGwpKSlcbiJ9IHs6c3ltIHNlbGVjdC1rZXlzLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG1hcCBjb250YWluaW5nIG9ubHkgdGhvc2UgZW50cmllcyBpbiBtYXAgd2hvc2Uga2V5IGlzIGluIGtleXMiLCA6YXJnbGlzdHMgKFttYXAga2V5c2VxXSl9LCA6c291cmNlICIoZGVmblxuIHNlbGVjdC1rZXlzXG4gXCJSZXR1cm5zIGEgbWFwIGNvbnRhaW5pbmcgb25seSB0aG9zZSBlbnRyaWVzIGluIG1hcCB3aG9zZSBrZXkgaXMgaW4ga2V5c1wiXG4gW21hcCBrZXlzZXFdXG4gKGxvb3BcbiAgW3JldCB7fSBrZXlzIChzZXEga2V5c2VxKV1cbiAgKGlmXG4gICBrZXlzXG4gICAobGV0XG4gICAgW2tleSAoZmlyc3Qga2V5cykgZW50cnkgKGdldCBtYXAga2V5IDpjbGpzLmNvcmUvbm90LWZvdW5kKV1cbiAgICAocmVjdXJcbiAgICAgKGlmIChub3Q9IGVudHJ5IDpjbGpzLmNvcmUvbm90LWZvdW5kKSAoYXNzb2MgcmV0IGtleSBlbnRyeSkgcmV0KVxuICAgICAobmV4dCBrZXlzKSkpXG4gICAoLXdpdGgtbWV0YSByZXQgKG1ldGEgbWFwKSkpKSlcbiJ9IHs6c3ltIGJpdC1hbmQsIDptZXRhIHs6ZG9jICJCaXR3aXNlIGFuZCIsIDphcmdsaXN0cyBbW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gYml0LWFuZFxuIFwiQml0d2lzZSBhbmRcIlxuIChbeCB5XSAoY2xqcy5jb3JlL2JpdC1hbmQgeCB5KSlcbiAoW3ggeSAmIG1vcmVdIChyZWR1Y2UgYml0LWFuZCAoY2xqcy5jb3JlL2JpdC1hbmQgeCB5KSBtb3JlKSkpXG4ifSB7OnN5bSBib3VuZGVkLWNvdW50LCA6bWV0YSB7OmRvYyAiSWYgY29sbCBpcyBjb3VudGVkPyByZXR1cm5zIGl0cyBjb3VudCwgZWxzZSB3aWxsIGNvdW50IGF0IG1vc3QgdGhlIGZpcnN0IG5cbiAgIGVsZW1lbnRzIG9mIGNvbGwgdXNpbmcgaXRzIHNlcSIsIDphcmdsaXN0cyAoW24gY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBib3VuZGVkLWNvdW50XG4gXCJJZiBjb2xsIGlzIGNvdW50ZWQ/IHJldHVybnMgaXRzIGNvdW50LCBlbHNlIHdpbGwgY291bnQgYXQgbW9zdCB0aGUgZmlyc3QgblxcbiAgIGVsZW1lbnRzIG9mIGNvbGwgdXNpbmcgaXRzIHNlcVwiXG4gezphZGRlZCBcIjEuOVwifVxuIFtuIGNvbGxdXG4gKGlmXG4gIChjb3VudGVkPyBjb2xsKVxuICAoY291bnQgY29sbClcbiAgKGxvb3BcbiAgIFtpIDAgcyAoc2VxIGNvbGwpXVxuICAgKGlmIChhbmQgKG5vdCAobmlsPyBzKSkgKDwgaSBuKSkgKHJlY3VyIChpbmMgaSkgKG5leHQgcykpIGkpKSkpXG4ifSB7OnN5bSB1cGRhdGUsIDptZXRhIHs6ZG9jICInVXBkYXRlcycgYSB2YWx1ZSBpbiBhbiBhc3NvY2lhdGl2ZSBzdHJ1Y3R1cmUsIHdoZXJlIGsgaXMgYVxuICBrZXkgYW5kIGYgaXMgYSBmdW5jdGlvbiB0aGF0IHdpbGwgdGFrZSB0aGUgb2xkIHZhbHVlXG4gIGFuZCBhbnkgc3VwcGxpZWQgYXJncyBhbmQgcmV0dXJuIHRoZSBuZXcgdmFsdWUsIGFuZCByZXR1cm5zIGEgbmV3XG4gIHN0cnVjdHVyZS4gIElmIHRoZSBrZXkgZG9lcyBub3QgZXhpc3QsIG5pbCBpcyBwYXNzZWQgYXMgdGhlIG9sZCB2YWx1ZS4iLCA6YXJnbGlzdHMgW1ttIGsgZl0gW20gayBmIHhdIFttIGsgZiB4IHldIFttIGsgZiB4IHkgel0gW20gayBmIHggeSB6ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiB1cGRhdGVcbiBcIidVcGRhdGVzJyBhIHZhbHVlIGluIGFuIGFzc29jaWF0aXZlIHN0cnVjdHVyZSwgd2hlcmUgayBpcyBhXFxuICBrZXkgYW5kIGYgaXMgYSBmdW5jdGlvbiB0aGF0IHdpbGwgdGFrZSB0aGUgb2xkIHZhbHVlXFxuICBhbmQgYW55IHN1cHBsaWVkIGFyZ3MgYW5kIHJldHVybiB0aGUgbmV3IHZhbHVlLCBhbmQgcmV0dXJucyBhIG5ld1xcbiAgc3RydWN0dXJlLiAgSWYgdGhlIGtleSBkb2VzIG5vdCBleGlzdCwgbmlsIGlzIHBhc3NlZCBhcyB0aGUgb2xkIHZhbHVlLlwiXG4gKFttIGsgZl0gKGFzc29jIG0gayAoZiAoZ2V0IG0gaykpKSlcbiAoW20gayBmIHhdIChhc3NvYyBtIGsgKGYgKGdldCBtIGspIHgpKSlcbiAoW20gayBmIHggeV0gKGFzc29jIG0gayAoZiAoZ2V0IG0gaykgeCB5KSkpXG4gKFttIGsgZiB4IHkgel0gKGFzc29jIG0gayAoZiAoZ2V0IG0gaykgeCB5IHopKSlcbiAoW20gayBmIHggeSB6ICYgbW9yZV0gKGFzc29jIG0gayAoYXBwbHkgZiAoZ2V0IG0gaykgeCB5IHogbW9yZSkpKSlcbiJ9IHs6c3ltIGdlbnN5bV9jb3VudGVyLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBnZW5zeW1fY291bnRlciBuaWwpXG4ifSB7OnN5bSBmaW5kLW1hY3Jvcy1ucywgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG1hY3JvcyBuYW1lc3BhY2UgbmFtZWQgYnkgdGhlIHN5bWJvbCBvciBuaWwgaWYgaXQgZG9lc24ndCBleGlzdC5cbiAgQm9vdHN0cmFwIG9ubHkuIiwgOmFyZ2xpc3RzIChbbnNdKX0sIDpzb3VyY2UgIihkZWZuXG4gZmluZC1tYWNyb3MtbnNcbiBcIlJldHVybnMgdGhlIG1hY3JvcyBuYW1lc3BhY2UgbmFtZWQgYnkgdGhlIHN5bWJvbCBvciBuaWwgaWYgaXQgZG9lc24ndCBleGlzdC5cXG4gIEJvb3RzdHJhcCBvbmx5LlwiXG4gW25zXVxuICh3aGVuIChuaWw/IE5TX0NBQ0hFKSAoc2V0ISBOU19DQUNIRSAoYXRvbSB7fSkpKVxuIChsZXRcbiAgW25zLXN0clxuICAgKHN0ciBucylcbiAgIG5zXG4gICAoaWZcbiAgICAobm90IChnc3RyaW5nL2NvbnRhaW5zIG5zLXN0ciBcIiRtYWNyb3NcIikpXG4gICAgKHN5bWJvbCAoc3RyIG5zLXN0ciBcIiRtYWNyb3NcIikpXG4gICAgbnMpXG4gICB0aGUtbnNcbiAgIChnZXQgQE5TX0NBQ0hFIG5zKV1cbiAgKGlmLW5vdFxuICAgKG5pbD8gdGhlLW5zKVxuICAgdGhlLW5zXG4gICAobGV0XG4gICAgW25zLW9iaiAoZmluZC1ucy1vYmogbnMpXVxuICAgICh3aGVuLW5vdFxuICAgICAobmlsPyBucy1vYmopXG4gICAgIChsZXRcbiAgICAgIFtuZXctbnMgKGNyZWF0ZS1ucyBucyBucy1vYmopXVxuICAgICAgKHN3YXAhIE5TX0NBQ0hFIGFzc29jIG5zIG5ldy1ucylcbiAgICAgIG5ldy1ucykpKSkpKVxuIn0gezpzeW0gbGlzdCosIDptZXRhIHs6ZG9jICJDcmVhdGVzIGEgbmV3IGxpc3QgY29udGFpbmluZyB0aGUgaXRlbXMgcHJlcGVuZGVkIHRvIHRoZSByZXN0LCB0aGVcbiAgbGFzdCBvZiB3aGljaCB3aWxsIGJlIHRyZWF0ZWQgYXMgYSBzZXF1ZW5jZS4iLCA6YXJnbGlzdHMgW1thcmdzXSBbYSBhcmdzXSBbYSBiIGFyZ3NdIFthIGIgYyBhcmdzXSBbYSBiIGMgZCAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gbGlzdCpcbiBcIkNyZWF0ZXMgYSBuZXcgbGlzdCBjb250YWluaW5nIHRoZSBpdGVtcyBwcmVwZW5kZWQgdG8gdGhlIHJlc3QsIHRoZVxcbiAgbGFzdCBvZiB3aGljaCB3aWxsIGJlIHRyZWF0ZWQgYXMgYSBzZXF1ZW5jZS5cIlxuIChbYXJnc10gKHNlcSBhcmdzKSlcbiAoW2EgYXJnc10gKGNvbnMgYSBhcmdzKSlcbiAoW2EgYiBhcmdzXSAoY29ucyBhIChjb25zIGIgYXJncykpKVxuIChbYSBiIGMgYXJnc10gKGNvbnMgYSAoY29ucyBiIChjb25zIGMgYXJncykpKSlcbiAoW2EgYiBjIGQgJiBtb3JlXSAoY29ucyBhIChjb25zIGIgKGNvbnMgYyAoY29ucyBkIChzcHJlYWQgbW9yZSkpKSkpKSlcbiJ9IHs6c3ltIHVwZGF0ZS1pbiwgOm1ldGEgezpkb2MgIidVcGRhdGVzJyBhIHZhbHVlIGluIGEgbmVzdGVkIGFzc29jaWF0aXZlIHN0cnVjdHVyZSwgd2hlcmUga3MgaXMgYVxuICBzZXF1ZW5jZSBvZiBrZXlzIGFuZCBmIGlzIGEgZnVuY3Rpb24gdGhhdCB3aWxsIHRha2UgdGhlIG9sZCB2YWx1ZVxuICBhbmQgYW55IHN1cHBsaWVkIGFyZ3MgYW5kIHJldHVybiB0aGUgbmV3IHZhbHVlLCBhbmQgcmV0dXJucyBhIG5ld1xuICBuZXN0ZWQgc3RydWN0dXJlLiAgSWYgYW55IGxldmVscyBkbyBub3QgZXhpc3QsIGhhc2gtbWFwcyB3aWxsIGJlXG4gIGNyZWF0ZWQuIiwgOmFyZ2xpc3RzIFtbbSBbayAmIGtzXSBmXSBbbSBbayAmIGtzXSBmIGFdIFttIFtrICYga3NdIGYgYSBiXSBbbSBbayAmIGtzXSBmIGEgYiBjXSBbbSBbayAmIGtzXSBmIGEgYiBjICYgYXJnc11dfSwgOnNvdXJjZSAiKGRlZm5cbiB1cGRhdGUtaW5cbiBcIidVcGRhdGVzJyBhIHZhbHVlIGluIGEgbmVzdGVkIGFzc29jaWF0aXZlIHN0cnVjdHVyZSwgd2hlcmUga3MgaXMgYVxcbiAgc2VxdWVuY2Ugb2Yga2V5cyBhbmQgZiBpcyBhIGZ1bmN0aW9uIHRoYXQgd2lsbCB0YWtlIHRoZSBvbGQgdmFsdWVcXG4gIGFuZCBhbnkgc3VwcGxpZWQgYXJncyBhbmQgcmV0dXJuIHRoZSBuZXcgdmFsdWUsIGFuZCByZXR1cm5zIGEgbmV3XFxuICBuZXN0ZWQgc3RydWN0dXJlLiAgSWYgYW55IGxldmVscyBkbyBub3QgZXhpc3QsIGhhc2gtbWFwcyB3aWxsIGJlXFxuICBjcmVhdGVkLlwiXG4gKFttIFtrICYga3NdIGZdXG4gIChpZlxuICAga3NcbiAgIChhc3NvYyBtIGsgKHVwZGF0ZS1pbiAoZ2V0IG0gaykga3MgZikpXG4gICAoYXNzb2MgbSBrIChmIChnZXQgbSBrKSkpKSlcbiAoW20gW2sgJiBrc10gZiBhXVxuICAoaWZcbiAgIGtzXG4gICAoYXNzb2MgbSBrICh1cGRhdGUtaW4gKGdldCBtIGspIGtzIGYgYSkpXG4gICAoYXNzb2MgbSBrIChmIChnZXQgbSBrKSBhKSkpKVxuIChbbSBbayAmIGtzXSBmIGEgYl1cbiAgKGlmXG4gICBrc1xuICAgKGFzc29jIG0gayAodXBkYXRlLWluIChnZXQgbSBrKSBrcyBmIGEgYikpXG4gICAoYXNzb2MgbSBrIChmIChnZXQgbSBrKSBhIGIpKSkpXG4gKFttIFtrICYga3NdIGYgYSBiIGNdXG4gIChpZlxuICAga3NcbiAgIChhc3NvYyBtIGsgKHVwZGF0ZS1pbiAoZ2V0IG0gaykga3MgZiBhIGIgYykpXG4gICAoYXNzb2MgbSBrIChmIChnZXQgbSBrKSBhIGIgYykpKSlcbiAoW20gW2sgJiBrc10gZiBhIGIgYyAmIGFyZ3NdXG4gIChpZlxuICAga3NcbiAgIChhc3NvYyBtIGsgKGFwcGx5IHVwZGF0ZS1pbiAoZ2V0IG0gaykga3MgZiBhIGIgYyBhcmdzKSlcbiAgIChhc3NvYyBtIGsgKGFwcGx5IGYgKGdldCBtIGspIGEgYiBjIGFyZ3MpKSkpKVxuIn0gezpzeW0gcHJlZmVyLW1ldGhvZCwgOm1ldGEgezpkb2MgIkNhdXNlcyB0aGUgbXVsdGltZXRob2QgdG8gcHJlZmVyIG1hdGNoZXMgb2YgZGlzcGF0Y2gtdmFsLXggb3ZlciBkaXNwYXRjaC12YWwteVxuICAgd2hlbiB0aGVyZSBpcyBhIGNvbmZsaWN0IiwgOmFyZ2xpc3RzIChbbXVsdGlmbiBkaXNwYXRjaC12YWwteCBkaXNwYXRjaC12YWwteV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcmVmZXItbWV0aG9kXG4gXCJDYXVzZXMgdGhlIG11bHRpbWV0aG9kIHRvIHByZWZlciBtYXRjaGVzIG9mIGRpc3BhdGNoLXZhbC14IG92ZXIgZGlzcGF0Y2gtdmFsLXlcXG4gICB3aGVuIHRoZXJlIGlzIGEgY29uZmxpY3RcIlxuIFttdWx0aWZuIGRpc3BhdGNoLXZhbC14IGRpc3BhdGNoLXZhbC15XVxuICgtcHJlZmVyLW1ldGhvZCBtdWx0aWZuIGRpc3BhdGNoLXZhbC14IGRpc3BhdGNoLXZhbC15KSlcbiJ9IHs6c3ltIGVuc3VyZS1yZWR1Y2VkLCA6bWV0YSB7OmRvYyAiSWYgeCBpcyBhbHJlYWR5IHJlZHVjZWQ/LCByZXR1cm5zIGl0LCBlbHNlIHJldHVybnMgKHJlZHVjZWQgeCkiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGVuc3VyZS1yZWR1Y2VkXG4gXCJJZiB4IGlzIGFscmVhZHkgcmVkdWNlZD8sIHJldHVybnMgaXQsIGVsc2UgcmV0dXJucyAocmVkdWNlZCB4KVwiXG4gW3hdXG4gKGlmIChyZWR1Y2VkPyB4KSB4IChyZWR1Y2VkIHgpKSlcbiJ9IHs6c3ltIGluc3RhbmNlPywgOm1ldGEgezpkb2MgIkV2YWx1YXRlcyB4IGFuZCB0ZXN0cyBpZiBpdCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgdHlwZVxuICBjLiBSZXR1cm5zIHRydWUgb3IgZmFsc2UiLCA6YXJnbGlzdHMgKFtjIHhdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5zdGFuY2U/XG4gXCJFdmFsdWF0ZXMgeCBhbmQgdGVzdHMgaWYgaXQgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIHR5cGVcXG4gIGMuIFJldHVybnMgdHJ1ZSBvciBmYWxzZVwiXG4gW2MgeF1cbiAoY2xqcy5jb3JlL2luc3RhbmNlPyBjIHgpKVxuIn0gezpzeW0gbWl4LWNvbGxlY3Rpb24taGFzaCwgOm1ldGEgezpkb2MgIk1peCBmaW5hbCBjb2xsZWN0aW9uIGhhc2ggZm9yIG9yZGVyZWQgb3IgdW5vcmRlcmVkIGNvbGxlY3Rpb25zLlxuICAgaGFzaC1iYXNpcyBpcyB0aGUgY29tYmluZWQgY29sbGVjdGlvbiBoYXNoLCBjb3VudCBpcyB0aGUgbnVtYmVyXG4gICBvZiBlbGVtZW50cyBpbmNsdWRlZCBpbiB0aGUgYmFzaXMuIE5vdGUgdGhpcyBpcyB0aGUgaGFzaCBjb2RlXG4gICBjb25zaXN0ZW50IHdpdGggPSwgZGlmZmVyZW50IGZyb20gLmhhc2hDb2RlLlxuICAgU2VlIGh0dHA6Ly9jbG9qdXJlLm9yZy9kYXRhX3N0cnVjdHVyZXMjaGFzaCBmb3IgZnVsbCBhbGdvcml0aG1zLiIsIDphcmdsaXN0cyAoW2hhc2gtYmFzaXMgY291bnRdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWl4LWNvbGxlY3Rpb24taGFzaFxuIFwiTWl4IGZpbmFsIGNvbGxlY3Rpb24gaGFzaCBmb3Igb3JkZXJlZCBvciB1bm9yZGVyZWQgY29sbGVjdGlvbnMuXFxuICAgaGFzaC1iYXNpcyBpcyB0aGUgY29tYmluZWQgY29sbGVjdGlvbiBoYXNoLCBjb3VudCBpcyB0aGUgbnVtYmVyXFxuICAgb2YgZWxlbWVudHMgaW5jbHVkZWQgaW4gdGhlIGJhc2lzLiBOb3RlIHRoaXMgaXMgdGhlIGhhc2ggY29kZVxcbiAgIGNvbnNpc3RlbnQgd2l0aCA9LCBkaWZmZXJlbnQgZnJvbSAuaGFzaENvZGUuXFxuICAgU2VlIGh0dHA6Ly9jbG9qdXJlLm9yZy9kYXRhX3N0cnVjdHVyZXMjaGFzaCBmb3IgZnVsbCBhbGdvcml0aG1zLlwiXG4gW2hhc2gtYmFzaXMgY291bnRdXG4gKGxldFxuICBbaDEgbTMtc2VlZCBrMSAobTMtbWl4LUsxIGhhc2gtYmFzaXMpIGgxIChtMy1taXgtSDEgaDEgazEpXVxuICAobTMtZm1peCBoMSBjb3VudCkpKVxuIn0gezpzeW0gcmUtZmluZCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGZpcnN0IHJlZ2V4IG1hdGNoLCBpZiBhbnksIG9mIHMgdG8gcmUsIHVzaW5nXG4gIHJlLmV4ZWMocykuIFJldHVybnMgYSB2ZWN0b3IsIGNvbnRhaW5pbmcgZmlyc3QgdGhlIG1hdGNoaW5nXG4gIHN1YnN0cmluZywgdGhlbiBhbnkgY2FwdHVyaW5nIGdyb3VwcyBpZiB0aGUgcmVndWxhciBleHByZXNzaW9uIGNvbnRhaW5zXG4gIGNhcHR1cmluZyBncm91cHMuIiwgOmFyZ2xpc3RzIChbcmUgc10pfSwgOnNvdXJjZSAiKGRlZm5cbiByZS1maW5kXG4gXCJSZXR1cm5zIHRoZSBmaXJzdCByZWdleCBtYXRjaCwgaWYgYW55LCBvZiBzIHRvIHJlLCB1c2luZ1xcbiAgcmUuZXhlYyhzKS4gUmV0dXJucyBhIHZlY3RvciwgY29udGFpbmluZyBmaXJzdCB0aGUgbWF0Y2hpbmdcXG4gIHN1YnN0cmluZywgdGhlbiBhbnkgY2FwdHVyaW5nIGdyb3VwcyBpZiB0aGUgcmVndWxhciBleHByZXNzaW9uIGNvbnRhaW5zXFxuICBjYXB0dXJpbmcgZ3JvdXBzLlwiXG4gW3JlIHNdXG4gKGlmXG4gIChzdHJpbmc/IHMpXG4gIChsZXRcbiAgIFttYXRjaGVzICguZXhlYyByZSBzKV1cbiAgICh3aGVuLW5vdFxuICAgIChuaWw/IG1hdGNoZXMpXG4gICAgKGlmICg9PSAoY291bnQgbWF0Y2hlcykgMSkgKGFnZXQgbWF0Y2hlcyAwKSAodmVjIG1hdGNoZXMpKSkpXG4gICh0aHJvdyAoanMvVHlwZUVycm9yLiBcInJlLWZpbmQgbXVzdCBtYXRjaCBhZ2FpbnN0IGEgc3RyaW5nLlwiKSkpKVxuIn0gezpzeW0gcnVuISwgOm1ldGEgezpkb2MgIlJ1bnMgdGhlIHN1cHBsaWVkIHByb2NlZHVyZSAodmlhIHJlZHVjZSksIGZvciBwdXJwb3NlcyBvZiBzaWRlXG4gIGVmZmVjdHMsIG9uIHN1Y2Nlc3NpdmUgaXRlbXMgaW4gdGhlIGNvbGxlY3Rpb24uIFJldHVybnMgbmlsIiwgOmFyZ2xpc3RzIChbcHJvYyBjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIHJ1biFcbiBcIlJ1bnMgdGhlIHN1cHBsaWVkIHByb2NlZHVyZSAodmlhIHJlZHVjZSksIGZvciBwdXJwb3NlcyBvZiBzaWRlXFxuICBlZmZlY3RzLCBvbiBzdWNjZXNzaXZlIGl0ZW1zIGluIHRoZSBjb2xsZWN0aW9uLiBSZXR1cm5zIG5pbFwiXG4gW3Byb2MgY29sbF1cbiAocmVkdWNlIChmbiogW3AxX180NTQ0MSMgcDJfXzQ1NDQwI10gKHByb2MgcDJfXzQ1NDQwIykpIG5pbCBjb2xsKVxuIG5pbClcbiJ9IHs6c3ltIHZhbCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHZhbHVlIGluIHRoZSBtYXAgZW50cnkuIiwgOmFyZ2xpc3RzIChbbWFwLWVudHJ5XSl9LCA6c291cmNlICIoZGVmblxuIHZhbFxuIFwiUmV0dXJucyB0aGUgdmFsdWUgaW4gdGhlIG1hcCBlbnRyeS5cIlxuIFttYXAtZW50cnldXG4gKC12YWwgbWFwLWVudHJ5KSlcbiJ9IHs6c3ltIHVuY2hlY2tlZC1hZGQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBzdW0gb2YgbnVtcy4gKCspIHJldHVybnMgMC4iLCA6YXJnbGlzdHMgW1tdIFt4XSBbeCB5XSBbeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiB1bmNoZWNrZWQtYWRkXG4gXCJSZXR1cm5zIHRoZSBzdW0gb2YgbnVtcy4gKCspIHJldHVybnMgMC5cIlxuIChbXSAwKVxuIChbeF0geClcbiAoW3ggeV0gKGNsanMuY29yZS91bmNoZWNrZWQtYWRkIHggeSkpXG4gKFt4IHkgJiBtb3JlXVxuICAocmVkdWNlIHVuY2hlY2tlZC1hZGQgKGNsanMuY29yZS91bmNoZWNrZWQtYWRkIHggeSkgbW9yZSkpKVxuIn0gezpzeW0gdHJhbnNmb3JtZXItaXRlcmF0b3IsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeGZvcm0gc291cmNlSXRlciBtdWx0aV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0cmFuc2Zvcm1lci1pdGVyYXRvclxuIFt4Zm9ybSBzb3VyY2VJdGVyIG11bHRpXVxuIChsZXRcbiAgW2l0ZXJhdG9yXG4gICAoVHJhbnNmb3JtZXJJdGVyYXRvci4gRU1QVFkgTk9ORSBmYWxzZSBuaWwgc291cmNlSXRlciBtdWx0aSldXG4gIChzZXQhXG4gICAoLi14ZiBpdGVyYXRvcilcbiAgICh4Zm9ybVxuICAgIChmblxuICAgICAoW10gbmlsKVxuICAgICAoW2FjY10gYWNjKVxuICAgICAoW2FjYyBvXVxuICAgICAgKHNldCEgKC4tYnVmZmVyIGl0ZXJhdG9yKSAoLmFkZCAoLi1idWZmZXIgaXRlcmF0b3IpIG8pKVxuICAgICAgYWNjKSkpKVxuICBpdGVyYXRvcikpXG4ifSB7OnN5bSBub3QsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgeCBpcyBsb2dpY2FsIGZhbHNlLCBmYWxzZSBvdGhlcndpc2UuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBub3RcbiBcIlJldHVybnMgdHJ1ZSBpZiB4IGlzIGxvZ2ljYWwgZmFsc2UsIGZhbHNlIG90aGVyd2lzZS5cIlxuIFt4XVxuIChjb25kIChuaWw/IHgpIHRydWUgKGZhbHNlPyB4KSB0cnVlIDplbHNlIGZhbHNlKSlcbiJ9IHs6c3ltIC12cmVzZXQhLCA6bWV0YSB7OmRvYyAiU2V0cyB0aGUgdmFsdWUgb2Ygdm9sYXRpbGUgbyB0byBuZXctdmFsdWUgd2l0aG91dCByZWdhcmQgZm9yIHRoZVxuICAgICBjdXJyZW50IHZhbHVlLiBSZXR1cm5zIG5ldy12YWx1ZS4iLCA6YXJnbGlzdHMgKFtvIG5ldy12YWx1ZV0pfSwgOnByb3RvY29sIElWb2xhdGlsZX0gezpzeW0gd2l0aC1tZXRhLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhbiBvYmplY3Qgb2YgdGhlIHNhbWUgdHlwZSBhbmQgdmFsdWUgYXMgb2JqLCB3aXRoXG4gIG1hcCBtIGFzIGl0cyBtZXRhZGF0YS4iLCA6YXJnbGlzdHMgKFtvIG1ldGFdKX0sIDpzb3VyY2UgIihkZWZuXG4gd2l0aC1tZXRhXG4gXCJSZXR1cm5zIGFuIG9iamVjdCBvZiB0aGUgc2FtZSB0eXBlIGFuZCB2YWx1ZSBhcyBvYmosIHdpdGhcXG4gIG1hcCBtIGFzIGl0cyBtZXRhZGF0YS5cIlxuIFtvIG1ldGFdXG4gKGlmXG4gIChqcy1mbj8gbylcbiAgKE1ldGFGbi4gbyBtZXRhKVxuICAod2hlbi1ub3QgKG5pbD8gbykgKC13aXRoLW1ldGEgbyBtZXRhKSkpKVxuIn0gezpzeW0gdW5yZWR1Y2VkLCA6bWV0YSB7OmRvYyAiSWYgeCBpcyByZWR1Y2VkPywgcmV0dXJucyAoZGVyZWYgeCksIGVsc2UgcmV0dXJucyB4IiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB1bnJlZHVjZWRcbiBcIklmIHggaXMgcmVkdWNlZD8sIHJldHVybnMgKGRlcmVmIHgpLCBlbHNlIHJldHVybnMgeFwiXG4gW3hdXG4gKGlmIChyZWR1Y2VkPyB4KSAoZGVyZWYgeCkgeCkpXG4ifSB7OnN5bSByZWNvcmQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJuIHRydWUgaWYgeCBzYXRpc2ZpZXMgSVJlY29yZCIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVjb3JkP1xuIFwiUmV0dXJuIHRydWUgaWYgeCBzYXRpc2ZpZXMgSVJlY29yZFwiXG4gW3hdXG4gKHNhdGlzZmllcz8gSVJlY29yZCB4KSlcbiJ9IHs6c3ltIHR5cGUsIDptZXRhIHs6ZG9jICJSZXR1cm4geCdzIGNvbnN0cnVjdG9yLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gdHlwZVxuIFwiUmV0dXJuIHgncyBjb25zdHJ1Y3Rvci5cIlxuIFt4XVxuICh3aGVuLW5vdCAobmlsPyB4KSAoLi1jb25zdHJ1Y3RvciB4KSkpXG4ifSB7OnN5bSBpZGVudGljYWw/LCA6bWV0YSB7OmRvYyAiVGVzdHMgaWYgMiBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIG9iamVjdCIsIDphcmdsaXN0cyAoW3ggeV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpZGVudGljYWw/XG4gXCJUZXN0cyBpZiAyIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgb2JqZWN0XCJcbiBbeCB5XVxuIChjbGpzLmNvcmUvaWRlbnRpY2FsPyB4IHkpKVxuIn0gezpzeW0gLW5hbWVzcGFjZSwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG5hbWVzcGFjZSBTdHJpbmcgb2YgeC4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6cHJvdG9jb2wgSU5hbWVkfSB7OnN5bSB1bmNoZWNrZWQtZGl2aWRlLWludCwgOm1ldGEgezpkb2MgIklmIG5vIGRlbm9taW5hdG9ycyBhcmUgc3VwcGxpZWQsIHJldHVybnMgMS9udW1lcmF0b3IsXG4gIGVsc2UgcmV0dXJucyBudW1lcmF0b3IgZGl2aWRlZCBieSBhbGwgb2YgdGhlIGRlbm9taW5hdG9ycy4iLCA6YXJnbGlzdHMgW1t4XSBbeCB5XSBbeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiB1bmNoZWNrZWQtZGl2aWRlLWludFxuIFwiSWYgbm8gZGVub21pbmF0b3JzIGFyZSBzdXBwbGllZCwgcmV0dXJucyAxL251bWVyYXRvcixcXG4gIGVsc2UgcmV0dXJucyBudW1lcmF0b3IgZGl2aWRlZCBieSBhbGwgb2YgdGhlIGRlbm9taW5hdG9ycy5cIlxuIChbeF0gKHVuY2hlY2tlZC1kaXZpZGUtaW50IDEgeCkpXG4gKFt4IHldIChjbGpzLmNvcmUvZGl2aWRlIHggeSkpXG4gKFt4IHkgJiBtb3JlXVxuICAocmVkdWNlIHVuY2hlY2tlZC1kaXZpZGUtaW50ICh1bmNoZWNrZWQtZGl2aWRlLWludCB4IHkpIG1vcmUpKSlcbiJ9IHs6c3ltIG5zLW5hbWUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBuYW1lc3BhY2UsIGEgTmFtZXNwYWNlIG9iamVjdC5cbiAgQm9vdHN0cmFwIG9ubHkuIiwgOmFyZ2xpc3RzIChbbnMtb2JqXSl9LCA6c291cmNlICIoZGVmblxuIG5zLW5hbWVcbiBcIlJldHVybnMgdGhlIG5hbWUgb2YgdGhlIG5hbWVzcGFjZSwgYSBOYW1lc3BhY2Ugb2JqZWN0LlxcbiAgQm9vdHN0cmFwIG9ubHkuXCJcbiBbbnMtb2JqXVxuICguLW5hbWUgbnMtb2JqKSlcbiJ9IHs6c3ltIG1heC1rZXksIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSB4IGZvciB3aGljaCAoayB4KSwgYSBudW1iZXIsIGlzIGdyZWF0ZXN0LlxuXG4gIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBzdWNoIHhzLCB0aGUgbGFzdCBvbmUgaXMgcmV0dXJuZWQuIiwgOmFyZ2xpc3RzIFtbayB4XSBbayB4IHldIFtrIHggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gbWF4LWtleVxuIFwiUmV0dXJucyB0aGUgeCBmb3Igd2hpY2ggKGsgeCksIGEgbnVtYmVyLCBpcyBncmVhdGVzdC5cXG5cXG4gIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBzdWNoIHhzLCB0aGUgbGFzdCBvbmUgaXMgcmV0dXJuZWQuXCJcbiAoW2sgeF0geClcbiAoW2sgeCB5XSAoaWYgKD4gKGsgeCkgKGsgeSkpIHggeSkpXG4gKFtrIHggeSAmIG1vcmVdXG4gIChyZWR1Y2VcbiAgIChmbiogW3AxX180NTQyMyMgcDJfXzQ1NDI0I10gKG1heC1rZXkgayBwMV9fNDU0MjMjIHAyX180NTQyNCMpKVxuICAgKG1heC1rZXkgayB4IHkpXG4gICBtb3JlKSkpXG4ifSB7OnN5bSAqb3V0KiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKm91dCogbmlsKVxuIn0gezpzeW0gaGFzaC1zdHJpbmcsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChba10pfSwgOnNvdXJjZSAiKGRlZm5cbiBoYXNoLXN0cmluZ1xuIFtrXVxuICh3aGVuXG4gICg+IHN0cmluZy1oYXNoLWNhY2hlLWNvdW50IDI1NSlcbiAgKHNldCEgc3RyaW5nLWhhc2gtY2FjaGUgKGpzLW9iaikpXG4gIChzZXQhIHN0cmluZy1oYXNoLWNhY2hlLWNvdW50IDApKVxuIChpZlxuICAobmlsPyBrKVxuICAwXG4gIChsZXRcbiAgIFtoICh1bmNoZWNrZWQtZ2V0IHN0cmluZy1oYXNoLWNhY2hlIGspXVxuICAgKGlmIChudW1iZXI/IGgpIGggKGFkZC10by1zdHJpbmctaGFzaC1jYWNoZSBrKSkpKSlcbiJ9IHs6c3ltIC1wcmVmZXJzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21mXSl9LCA6cHJvdG9jb2wgSU11bHRpRm59IHs6c3ltIHNldC12YWxpZGF0b3IhLCA6bWV0YSB7OmRvYyAiU2V0cyB0aGUgdmFsaWRhdG9yLWZuIGZvciBhbiBhdG9tLiB2YWxpZGF0b3ItZm4gbXVzdCBiZSBuaWwgb3IgYVxuICBzaWRlLWVmZmVjdC1mcmVlIGZuIG9mIG9uZSBhcmd1bWVudCwgd2hpY2ggd2lsbCBiZSBwYXNzZWQgdGhlIGludGVuZGVkXG4gIG5ldyBzdGF0ZSBvbiBhbnkgc3RhdGUgY2hhbmdlLiBJZiB0aGUgbmV3IHN0YXRlIGlzIHVuYWNjZXB0YWJsZSwgdGhlXG4gIHZhbGlkYXRvci1mbiBzaG91bGQgcmV0dXJuIGZhbHNlIG9yIHRocm93IGFuIEVycm9yLiBJZiB0aGUgY3VycmVudCBzdGF0ZVxuICBpcyBub3QgYWNjZXB0YWJsZSB0byB0aGUgbmV3IHZhbGlkYXRvciwgYW4gRXJyb3Igd2lsbCBiZSB0aHJvd24gYW5kIHRoZVxuICB2YWxpZGF0b3Igd2lsbCBub3QgYmUgY2hhbmdlZC4iLCA6YXJnbGlzdHMgKFtpcmVmIHZhbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzZXQtdmFsaWRhdG9yIVxuIFwiU2V0cyB0aGUgdmFsaWRhdG9yLWZuIGZvciBhbiBhdG9tLiB2YWxpZGF0b3ItZm4gbXVzdCBiZSBuaWwgb3IgYVxcbiAgc2lkZS1lZmZlY3QtZnJlZSBmbiBvZiBvbmUgYXJndW1lbnQsIHdoaWNoIHdpbGwgYmUgcGFzc2VkIHRoZSBpbnRlbmRlZFxcbiAgbmV3IHN0YXRlIG9uIGFueSBzdGF0ZSBjaGFuZ2UuIElmIHRoZSBuZXcgc3RhdGUgaXMgdW5hY2NlcHRhYmxlLCB0aGVcXG4gIHZhbGlkYXRvci1mbiBzaG91bGQgcmV0dXJuIGZhbHNlIG9yIHRocm93IGFuIEVycm9yLiBJZiB0aGUgY3VycmVudCBzdGF0ZVxcbiAgaXMgbm90IGFjY2VwdGFibGUgdG8gdGhlIG5ldyB2YWxpZGF0b3IsIGFuIEVycm9yIHdpbGwgYmUgdGhyb3duIGFuZCB0aGVcXG4gIHZhbGlkYXRvciB3aWxsIG5vdCBiZSBjaGFuZ2VkLlwiXG4gW2lyZWYgdmFsXVxuICh3aGVuXG4gIChhbmQgKHNvbWU/IHZhbCkgKG5vdCAodmFsICgtZGVyZWYgaXJlZikpKSlcbiAgKHRocm93IChqcy9FcnJvci4gXCJWYWxpZGF0b3IgcmVqZWN0ZWQgcmVmZXJlbmNlIHN0YXRlXCIpKSlcbiAoc2V0ISAoLi12YWxpZGF0b3IgaXJlZikgdmFsKSlcbiJ9IHs6c3ltIGlkZW50PywgOm1ldGEgezpkb2MgIlJldHVybiB0cnVlIGlmIHggaXMgYSBzeW1ib2wgb3Iga2V5d29yZCIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gaWRlbnQ/XG4gXCJSZXR1cm4gdHJ1ZSBpZiB4IGlzIGEgc3ltYm9sIG9yIGtleXdvcmRcIlxuIFt4XVxuIChvciAoa2V5d29yZD8geCkgKHN5bWJvbD8geCkpKVxuIn0gezpzeW0gLW1ldGEsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBtZXRhZGF0YSBvZiBvYmplY3Qgby4iLCA6YXJnbGlzdHMgKFtvXSl9LCA6cHJvdG9jb2wgSU1ldGF9IHs6c3ltIC1kaXNwYXRjaC1mbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttZl0pfSwgOnByb3RvY29sIElNdWx0aUZufSB7OnN5bSAtYWRkLW1ldGhvZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttZiBkaXNwYXRjaC12YWwgbWV0aG9kXSl9LCA6cHJvdG9jb2wgSU11bHRpRm59IHs6c3ltIHN3YXAhLCA6bWV0YSB7OmRvYyAiQXRvbWljYWxseSBzd2FwcyB0aGUgdmFsdWUgb2YgYXRvbSB0byBiZTpcbiAgKGFwcGx5IGYgY3VycmVudC12YWx1ZS1vZi1hdG9tIGFyZ3MpLiBOb3RlIHRoYXQgZiBtYXkgYmUgY2FsbGVkXG4gIG11bHRpcGxlIHRpbWVzLCBhbmQgdGh1cyBzaG91bGQgYmUgZnJlZSBvZiBzaWRlIGVmZmVjdHMuICBSZXR1cm5zXG4gIHRoZSB2YWx1ZSB0aGF0IHdhcyBzd2FwcGVkIGluLiIsIDphcmdsaXN0cyBbW2EgZl0gW2EgZiB4XSBbYSBmIHggeV0gW2EgZiB4IHkgJiBtb3JlXV19LCA6c291cmNlICIoZGVmblxuIHN3YXAhXG4gXCJBdG9taWNhbGx5IHN3YXBzIHRoZSB2YWx1ZSBvZiBhdG9tIHRvIGJlOlxcbiAgKGFwcGx5IGYgY3VycmVudC12YWx1ZS1vZi1hdG9tIGFyZ3MpLiBOb3RlIHRoYXQgZiBtYXkgYmUgY2FsbGVkXFxuICBtdWx0aXBsZSB0aW1lcywgYW5kIHRodXMgc2hvdWxkIGJlIGZyZWUgb2Ygc2lkZSBlZmZlY3RzLiAgUmV0dXJuc1xcbiAgdGhlIHZhbHVlIHRoYXQgd2FzIHN3YXBwZWQgaW4uXCJcbiAoW2EgZl1cbiAgKGlmIChpbnN0YW5jZT8gQXRvbSBhKSAocmVzZXQhIGEgKGYgKC4tc3RhdGUgYSkpKSAoLXN3YXAhIGEgZikpKVxuIChbYSBmIHhdXG4gIChpZiAoaW5zdGFuY2U/IEF0b20gYSkgKHJlc2V0ISBhIChmICguLXN0YXRlIGEpIHgpKSAoLXN3YXAhIGEgZiB4KSkpXG4gKFthIGYgeCB5XVxuICAoaWZcbiAgIChpbnN0YW5jZT8gQXRvbSBhKVxuICAgKHJlc2V0ISBhIChmICguLXN0YXRlIGEpIHggeSkpXG4gICAoLXN3YXAhIGEgZiB4IHkpKSlcbiAoW2EgZiB4IHkgJiBtb3JlXVxuICAoaWZcbiAgIChpbnN0YW5jZT8gQXRvbSBhKVxuICAgKHJlc2V0ISBhIChhcHBseSBmICguLXN0YXRlIGEpIHggeSBtb3JlKSlcbiAgICgtc3dhcCEgYSBmIHggeSBtb3JlKSkpKVxuIn0gezpzeW0gdmFscywgOm1ldGEgezpkb2MgIlJldHVybnMgYSBzZXF1ZW5jZSBvZiB0aGUgbWFwJ3MgdmFsdWVzLCBpbiB0aGUgc2FtZSBvcmRlciBhcyAoc2VxIG1hcCkuIiwgOmFyZ2xpc3RzIChbbWFwXSl9LCA6c291cmNlICIoZGVmblxuIHZhbHNcbiBcIlJldHVybnMgYSBzZXF1ZW5jZSBvZiB0aGUgbWFwJ3MgdmFsdWVzLCBpbiB0aGUgc2FtZSBvcmRlciBhcyAoc2VxIG1hcCkuXCJcbiBbbWFwXVxuICh3aGVuLWxldCBbbXNlcSAoc2VxIG1hcCldIChWYWxTZXEuIG1zZXEgbmlsKSkpXG4ifSB7OnN5bSAtY2h1bmtlZC1uZXh0LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG5ldyBjb2xsZWN0aW9uIG9mIGNvbGwgd2l0aG91dCB0aGUgZmlyc3QgY2h1bmsuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnByb3RvY29sIElDaHVua2VkTmV4dH0gezpzeW0gdW5jaGVja2VkLXN1YnRyYWN0LCA6bWV0YSB7OmRvYyAiSWYgbm8geXMgYXJlIHN1cHBsaWVkLCByZXR1cm5zIHRoZSBuZWdhdGlvbiBvZiB4LCBlbHNlIHN1YnRyYWN0c1xuICB0aGUgeXMgZnJvbSB4IGFuZCByZXR1cm5zIHRoZSByZXN1bHQuIiwgOmFyZ2xpc3RzIFtbeF0gW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gdW5jaGVja2VkLXN1YnRyYWN0XG4gXCJJZiBubyB5cyBhcmUgc3VwcGxpZWQsIHJldHVybnMgdGhlIG5lZ2F0aW9uIG9mIHgsIGVsc2Ugc3VidHJhY3RzXFxuICB0aGUgeXMgZnJvbSB4IGFuZCByZXR1cm5zIHRoZSByZXN1bHQuXCJcbiAoW3hdIChjbGpzLmNvcmUvdW5jaGVja2VkLXN1YnRyYWN0IHgpKVxuIChbeCB5XSAoY2xqcy5jb3JlL3VuY2hlY2tlZC1zdWJ0cmFjdCB4IHkpKVxuIChbeCB5ICYgbW9yZV1cbiAgKHJlZHVjZSB1bmNoZWNrZWQtc3VidHJhY3QgKGNsanMuY29yZS91bmNoZWNrZWQtc3VidHJhY3QgeCB5KSBtb3JlKSkpXG4ifSB7OnN5bSB0YXA+LCA6bWV0YSB7OmRvYyAiU2VuZHMgeCB0byBhbnkgdGFwcy4gUmV0dXJucyB0aGUgcmVzdWx0IG9mICpleGVjLXRhcC1mbiosIGEgQm9vbGVhbiB2YWx1ZS4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHRhcD5cbiBcIlNlbmRzIHggdG8gYW55IHRhcHMuIFJldHVybnMgdGhlIHJlc3VsdCBvZiAqZXhlYy10YXAtZm4qLCBhIEJvb2xlYW4gdmFsdWUuXCJcbiBbeF1cbiAobWF5YmUtaW5pdC10YXBzZXQpXG4gKCpleGVjLXRhcC1mbipcbiAgKGZuIFtdIChkb3NlcSBbdGFwIEB0YXBzZXRdICh0cnkgKHRhcCB4KSAoY2F0Y2gganMvRXJyb3IgZXgpKSkpKSlcbiJ9IHs6c3ltIElNYXAsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgYWRkaW5nIG1hcHBpbmcgZnVuY3Rpb25hbGl0eSB0byBjb2xsZWN0aW9ucy4ifSwgOm1ldGhvZHMgKC1kaXNzb2MpfSB7OnN5bSBzb3J0ZWQtc2V0LWJ5LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG5ldyBzb3J0ZWQgc2V0IHdpdGggc3VwcGxpZWQga2V5cywgdXNpbmcgdGhlIHN1cHBsaWVkIGNvbXBhcmF0b3IuIiwgOmFyZ2xpc3RzIFtbY29tcGFyYXRvciAmIGtleXNdXX0sIDpzb3VyY2UgIihkZWZuXG4gc29ydGVkLXNldC1ieVxuIFwiUmV0dXJucyBhIG5ldyBzb3J0ZWQgc2V0IHdpdGggc3VwcGxpZWQga2V5cywgdXNpbmcgdGhlIHN1cHBsaWVkIGNvbXBhcmF0b3IuXCJcbiAoW2NvbXBhcmF0b3IgJiBrZXlzXVxuICAocmVkdWNlXG4gICAtY29ualxuICAgKFBlcnNpc3RlbnRUcmVlU2V0LiBuaWwgKHNvcnRlZC1tYXAtYnkgY29tcGFyYXRvcikgMClcbiAgIGtleXMpKSlcbiJ9IHs6c3ltIGNsb25lYWJsZT8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IGltcGxlbWVudHMgSUNsb25lYWJsZSBwcm90b2NvbC4iLCA6YXJnbGlzdHMgKFt2YWx1ZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjbG9uZWFibGU/XG4gXCJSZXR1cm4gdHJ1ZSBpZiB4IGltcGxlbWVudHMgSUNsb25lYWJsZSBwcm90b2NvbC5cIlxuIFt2YWx1ZV1cbiAoc2F0aXNmaWVzPyBJQ2xvbmVhYmxlIHZhbHVlKSlcbiJ9IHs6c3ltIHF1YWxpZmllZC1pZGVudD8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IGlzIGEgc3ltYm9sIG9yIGtleXdvcmQgd2l0aCBhIG5hbWVzcGFjZSIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gcXVhbGlmaWVkLWlkZW50P1xuIFwiUmV0dXJuIHRydWUgaWYgeCBpcyBhIHN5bWJvbCBvciBrZXl3b3JkIHdpdGggYSBuYW1lc3BhY2VcIlxuIFt4XVxuIChib29sZWFuIChhbmQgKGlkZW50PyB4KSAobmFtZXNwYWNlIHgpIHRydWUpKSlcbiJ9IHs6c3ltIGhhc2gtc3RyaW5nKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIGhhc2gtc3RyaW5nKlxuIFtzXVxuIChpZi1ub3RcbiAgKG5pbD8gcylcbiAgKGxldFxuICAgW2xlbiAoLi1sZW5ndGggcyldXG4gICAoaWZcbiAgICAocG9zPyBsZW4pXG4gICAgKGxvb3BcbiAgICAgW2kgMCBoYXNoIDBdXG4gICAgIChpZlxuICAgICAgKDwgaSBsZW4pXG4gICAgICAocmVjdXIgKGluYyBpKSAoKyAoaW11bCAzMSBoYXNoKSAoLmNoYXJDb2RlQXQgcyBpKSkpXG4gICAgICBoYXNoKSlcbiAgICAwKSlcbiAgMCkpXG4ifSB7OnN5bSBrZXktdGVzdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtrZXkgb3RoZXJdKX0sIDpzb3VyY2UgIihkZWZuXG4ga2V5LXRlc3RcbiBba2V5IG90aGVyXVxuIChjb25kXG4gIChpZGVudGljYWw/IGtleSBvdGhlcilcbiAgdHJ1ZVxuICAoa2V5d29yZC1pZGVudGljYWw/IGtleSBvdGhlcilcbiAgdHJ1ZVxuICA6ZWxzZVxuICAoPSBrZXkgb3RoZXIpKSlcbiJ9IHs6c3ltIC1yZXNldCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttZl0pfSwgOnByb3RvY29sIElNdWx0aUZufSB7OnN5bSB0cnVlPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB4IGlzIHRoZSB2YWx1ZSB0cnVlLCBmYWxzZSBvdGhlcndpc2UuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0cnVlP1xuIFwiUmV0dXJucyB0cnVlIGlmIHggaXMgdGhlIHZhbHVlIHRydWUsIGZhbHNlIG90aGVyd2lzZS5cIlxuIFt4XVxuIChjbGpzLmNvcmUvdHJ1ZT8geCkpXG4ifSB7OnN5bSBhcnJheSwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYSBuZXcgamF2YXNjcmlwdCBhcnJheS5cbkBwYXJhbSB7Li4uKn0gdmFyX2FyZ3MiLCA6YXJnbGlzdHMgKFt2YXItYXJnc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBhcnJheVxuIFwiQ3JlYXRlcyBhIG5ldyBqYXZhc2NyaXB0IGFycmF5LlxcbkBwYXJhbSB7Li4uKn0gdmFyX2FyZ3NcIlxuIFt2YXItYXJnc11cbiAobGV0XG4gIFthIChqcy9BcnJheS4gKGFsZW5ndGggKGNsanMuY29yZS9qcy1hcmd1bWVudHMpKSldXG4gIChsb29wXG4gICBbaSAwXVxuICAgKGlmXG4gICAgKDwgaSAoYWxlbmd0aCBhKSlcbiAgICAoZG8gKGFzZXQgYSBpIChhZ2V0IChjbGpzLmNvcmUvanMtYXJndW1lbnRzKSBpKSkgKHJlY3VyIChpbmMgaSkpKVxuICAgIGEpKSkpXG4ifSB7OnN5bSBwcmludCwgOm1ldGEgezpkb2MgIlByaW50cyB0aGUgb2JqZWN0KHMpIHVzaW5nIHN0cmluZy1wcmludC5cbiAgcHJpbnQgYW5kIHByaW50bG4gcHJvZHVjZSBvdXRwdXQgZm9yIGh1bWFuIGNvbnN1bXB0aW9uLiJ9LCA6c291cmNlICIoZGVmXG4gcHJpbnRcbiAoZm5cbiAgY2xqcy1jb3JlLXByaW50XG4gIFsmIG9ianNdXG4gIChwci13aXRoLW9wdHMgb2JqcyAoYXNzb2MgKHByLW9wdHMpIDpyZWFkYWJseSBmYWxzZSkpKSlcbiJ9IHs6c3ltIC1wZWVrLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgaXRlbSBmcm9tIHRoZSB0b3Agb2YgdGhlIHN0YWNrLiBJcyB1c2VkIGJ5IGNsanMuY29yZS9wZWVrLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpwcm90b2NvbCBJU3RhY2t9IHs6c3ltIElTZXEsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgY29sbGVjdGlvbnMgdG8gcHJvdmlkZSBhY2Nlc3MgdG8gdGhlaXIgaXRlbXMgYXMgc2VxdWVuY2VzLiJ9LCA6bWV0aG9kcyAoLWZpcnN0IC1yZXN0KX0gezpzeW0gZW1wdHksIDptZXRhIHs6ZG9jICJSZXR1cm5zIGFuIGVtcHR5IGNvbGxlY3Rpb24gb2YgdGhlIHNhbWUgY2F0ZWdvcnkgYXMgY29sbCwgb3IgbmlsIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbXB0eVxuIFwiUmV0dXJucyBhbiBlbXB0eSBjb2xsZWN0aW9uIG9mIHRoZSBzYW1lIGNhdGVnb3J5IGFzIGNvbGwsIG9yIG5pbFwiXG4gW2NvbGxdXG4gKHdoZW4tbm90XG4gIChuaWw/IGNvbGwpXG4gIChjb25kXG4gICAoaW1wbGVtZW50cz8gSUVtcHR5YWJsZUNvbGxlY3Rpb24gY29sbClcbiAgICgtZW1wdHkgY29sbClcbiAgIChzYXRpc2ZpZXM/IElFbXB0eWFibGVDb2xsZWN0aW9uIGNvbGwpXG4gICAoLWVtcHR5IGNvbGwpXG4gICA6ZWxzZVxuICAgbmlsKSkpXG4ifSB7OnN5bSByZW1vdmUtbWV0aG9kLCA6bWV0YSB7OmRvYyAiUmVtb3ZlcyB0aGUgbWV0aG9kIG9mIG11bHRpbWV0aG9kIGFzc29jaWF0ZWQgd2l0aCBkaXNwYXRjaC12YWx1ZS4iLCA6YXJnbGlzdHMgKFttdWx0aWZuIGRpc3BhdGNoLXZhbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZW1vdmUtbWV0aG9kXG4gXCJSZW1vdmVzIHRoZSBtZXRob2Qgb2YgbXVsdGltZXRob2QgYXNzb2NpYXRlZCB3aXRoIGRpc3BhdGNoLXZhbHVlLlwiXG4gW211bHRpZm4gZGlzcGF0Y2gtdmFsXVxuICgtcmVtb3ZlLW1ldGhvZCBtdWx0aWZuIGRpc3BhdGNoLXZhbCkpXG4ifSB7OnN5bSB2b2xhdGlsZSEsIDptZXRhIHs6ZG9jICJDcmVhdGVzIGFuZCByZXR1cm5zIGEgVm9sYXRpbGUgd2l0aCBhbiBpbml0aWFsIHZhbHVlIG9mIHZhbC4iLCA6YXJnbGlzdHMgKFt2YWxdKX0sIDpzb3VyY2UgIihkZWZuXG4gdm9sYXRpbGUhXG4gXCJDcmVhdGVzIGFuZCByZXR1cm5zIGEgVm9sYXRpbGUgd2l0aCBhbiBpbml0aWFsIHZhbHVlIG9mIHZhbC5cIlxuIFt2YWxdXG4gKFZvbGF0aWxlLiB2YWwpKVxuIn0gezpzeW0gLywgOm1ldGEgezpkb2MgIklmIG5vIGRlbm9taW5hdG9ycyBhcmUgc3VwcGxpZWQsIHJldHVybnMgMS9udW1lcmF0b3IsXG4gIGVsc2UgcmV0dXJucyBudW1lcmF0b3IgZGl2aWRlZCBieSBhbGwgb2YgdGhlIGRlbm9taW5hdG9ycy4iLCA6YXJnbGlzdHMgW1t4XSBbeCB5XSBbeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiAvXG4gXCJJZiBubyBkZW5vbWluYXRvcnMgYXJlIHN1cHBsaWVkLCByZXR1cm5zIDEvbnVtZXJhdG9yLFxcbiAgZWxzZSByZXR1cm5zIG51bWVyYXRvciBkaXZpZGVkIGJ5IGFsbCBvZiB0aGUgZGVub21pbmF0b3JzLlwiXG4gKFt4XSAoLyAxIHgpKVxuIChbeCB5XSAoY2xqcy5jb3JlL2RpdmlkZSB4IHkpKVxuIChbeCB5ICYgbW9yZV0gKHJlZHVjZSAvICgvIHggeSkgbW9yZSkpKVxuIn0gezpzeW0gYml0LW9yLCA6bWV0YSB7OmRvYyAiQml0d2lzZSBvciIsIDphcmdsaXN0cyBbW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gYml0LW9yXG4gXCJCaXR3aXNlIG9yXCJcbiAoW3ggeV0gKGNsanMuY29yZS9iaXQtb3IgeCB5KSlcbiAoW3ggeSAmIG1vcmVdIChyZWR1Y2UgYml0LW9yIChjbGpzLmNvcmUvYml0LW9yIHggeSkgbW9yZSkpKVxuIn0gezpzeW0gbTMtZm1peCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtoMSBsZW5dKX0sIDpzb3VyY2UgIihkZWZuXG4gbTMtZm1peFxuIFtoMSBsZW5dXG4gKGFzLT5cbiAgKGludCBoMSlcbiAgaDFcbiAgKGJpdC14b3IgaDEgbGVuKVxuICAoYml0LXhvciBoMSAodW5zaWduZWQtYml0LXNoaWZ0LXJpZ2h0IGgxIDE2KSlcbiAgKGltdWwgaDEgKGludCAyMjQ2ODIyNTA3KSlcbiAgKGJpdC14b3IgaDEgKHVuc2lnbmVkLWJpdC1zaGlmdC1yaWdodCBoMSAxMykpXG4gIChpbXVsIGgxIChpbnQgMzI2NjQ4OTkwOSkpXG4gIChiaXQteG9yIGgxICh1bnNpZ25lZC1iaXQtc2hpZnQtcmlnaHQgaDEgMTYpKSkpXG4ifSB7OnN5bSB2ZWN0b3IsIDptZXRhIHs6ZG9jICJDcmVhdGVzIGEgbmV3IHZlY3RvciBjb250YWluaW5nIHRoZSBhcmdzLiIsIDphcmdsaXN0cyAoWyYgYXJnc10pfSwgOnNvdXJjZSAiKGRlZm5cbiB2ZWN0b3JcbiBcIkNyZWF0ZXMgYSBuZXcgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGFyZ3MuXCJcbiBbJiBhcmdzXVxuIChpZlxuICAoYW5kIChpbnN0YW5jZT8gSW5kZXhlZFNlcSBhcmdzKSAoemVybz8gKC4taSBhcmdzKSkpXG4gICguZnJvbUFycmF5XG4gICBQZXJzaXN0ZW50VmVjdG9yXG4gICAoLi1hcnIgYXJncylcbiAgIChub3QgKGFycmF5PyAoLi1hcnIgYXJncykpKSlcbiAgKHZlYyBhcmdzKSkpXG4ifSB7OnN5bSA+PSwgOm1ldGEgezpkb2MgIlJldHVybnMgbm9uLW5pbCBpZiBudW1zIGFyZSBpbiBtb25vdG9uaWNhbGx5IG5vbi1pbmNyZWFzaW5nIG9yZGVyLFxuICBvdGhlcndpc2UgZmFsc2UuIiwgOmFyZ2xpc3RzIFtbeF0gW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gPj1cbiBcIlJldHVybnMgbm9uLW5pbCBpZiBudW1zIGFyZSBpbiBtb25vdG9uaWNhbGx5IG5vbi1pbmNyZWFzaW5nIG9yZGVyLFxcbiAgb3RoZXJ3aXNlIGZhbHNlLlwiXG4gKFt4XSB0cnVlKVxuIChbeCB5XSAoY2xqcy5jb3JlLz49IHggeSkpXG4gKFt4IHkgJiBtb3JlXVxuICAoaWZcbiAgIChjbGpzLmNvcmUvPj0geCB5KVxuICAgKGlmXG4gICAgKG5leHQgbW9yZSlcbiAgICAocmVjdXIgeSAoZmlyc3QgbW9yZSkgKG5leHQgbW9yZSkpXG4gICAgKGNsanMuY29yZS8+PSB5IChmaXJzdCBtb3JlKSkpXG4gICBmYWxzZSkpKVxuIn0gezpzeW0gZHJvcC1sYXN0LCA6bWV0YSB7OmRvYyAiUmV0dXJuIGEgbGF6eSBzZXF1ZW5jZSBvZiBhbGwgYnV0IHRoZSBsYXN0IG4gKGRlZmF1bHQgMSkgaXRlbXMgaW4gY29sbCIsIDphcmdsaXN0cyBbW3NdIFtuIHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gZHJvcC1sYXN0XG4gXCJSZXR1cm4gYSBsYXp5IHNlcXVlbmNlIG9mIGFsbCBidXQgdGhlIGxhc3QgbiAoZGVmYXVsdCAxKSBpdGVtcyBpbiBjb2xsXCJcbiAoW3NdIChkcm9wLWxhc3QgMSBzKSlcbiAoW24gc10gKG1hcCAoZm4gW3ggX10geCkgcyAoZHJvcCBuIHMpKSkpXG4ifSB7OnN5bSBvYmplY3Q/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIHgncyBjb25zdHJ1Y3RvciBpcyBPYmplY3QiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIG9iamVjdD9cbiBcIlJldHVybnMgdHJ1ZSBpZiB4J3MgY29uc3RydWN0b3IgaXMgT2JqZWN0XCJcbiBbeF1cbiAoaWYtbm90IChuaWw/IHgpIChpZGVudGljYWw/ICguLWNvbnN0cnVjdG9yIHgpIGpzL09iamVjdCkgZmFsc2UpKVxuIn0gezpzeW0gbm90LWVtcHR5LCA6bWV0YSB7OmRvYyAiSWYgY29sbCBpcyBlbXB0eSwgcmV0dXJucyBuaWwsIGVsc2UgY29sbCIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gbm90LWVtcHR5XG4gXCJJZiBjb2xsIGlzIGVtcHR5LCByZXR1cm5zIG5pbCwgZWxzZSBjb2xsXCJcbiBbY29sbF1cbiAod2hlbiAoc2VxIGNvbGwpIGNvbGwpKVxuIn0gezpzeW0gZGlzdGluY3QsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiB0aGUgZWxlbWVudHMgb2YgY29sbCB3aXRoIGR1cGxpY2F0ZXMgcmVtb3ZlZC5cbiAgUmV0dXJucyBhIHN0YXRlZnVsIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLiIsIDphcmdsaXN0cyBbW10gW2NvbGxdXX0sIDpzb3VyY2UgIihkZWZuXG4gZGlzdGluY3RcbiBcIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIHRoZSBlbGVtZW50cyBvZiBjb2xsIHdpdGggZHVwbGljYXRlcyByZW1vdmVkLlxcbiAgUmV0dXJucyBhIHN0YXRlZnVsIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLlwiXG4gKFtdXG4gIChmblxuICAgW3JmXVxuICAgKGxldFxuICAgIFtzZWVuICh2b2xhdGlsZSEgI3t9KV1cbiAgICAoZm5cbiAgICAgKFtdIChyZikpXG4gICAgIChbcmVzdWx0XSAocmYgcmVzdWx0KSlcbiAgICAgKFtyZXN1bHQgaW5wdXRdXG4gICAgICAoaWZcbiAgICAgICAoY29udGFpbnM/IEBzZWVuIGlucHV0KVxuICAgICAgIHJlc3VsdFxuICAgICAgIChkbyAodnN3YXAhIHNlZW4gY29uaiBpbnB1dCkgKHJmIHJlc3VsdCBpbnB1dCkpKSkpKSkpXG4gKFtjb2xsXVxuICAobGV0XG4gICBbc3RlcFxuICAgIChmblxuICAgICBzdGVwXG4gICAgIFt4cyBzZWVuXVxuICAgICAobGF6eS1zZXFcbiAgICAgICgoZm5cbiAgICAgICAgW1tmIDphcyB4c10gc2Vlbl1cbiAgICAgICAgKHdoZW4tbGV0XG4gICAgICAgICBbcyAoc2VxIHhzKV1cbiAgICAgICAgIChpZlxuICAgICAgICAgIChjb250YWlucz8gc2VlbiBmKVxuICAgICAgICAgIChyZWN1ciAocmVzdCBzKSBzZWVuKVxuICAgICAgICAgIChjb25zIGYgKHN0ZXAgKHJlc3QgcykgKGNvbmogc2VlbiBmKSkpKSkpXG4gICAgICAgeHNcbiAgICAgICBzZWVuKSkpXVxuICAgKHN0ZXAgY29sbCAje30pKSkpXG4ifSB7OnN5bSBwYXJ0aXRpb24sIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiBsaXN0cyBvZiBuIGl0ZW1zIGVhY2gsIGF0IG9mZnNldHMgc3RlcFxuICBhcGFydC4gSWYgc3RlcCBpcyBub3Qgc3VwcGxpZWQsIGRlZmF1bHRzIHRvIG4sIGkuZS4gdGhlIHBhcnRpdGlvbnNcbiAgZG8gbm90IG92ZXJsYXAuIElmIGEgcGFkIGNvbGxlY3Rpb24gaXMgc3VwcGxpZWQsIHVzZSBpdHMgZWxlbWVudHMgYXNcbiAgbmVjZXNzYXJ5IHRvIGNvbXBsZXRlIGxhc3QgcGFydGl0aW9uIHVwIHRvIG4gaXRlbXMuIEluIGNhc2UgdGhlcmUgYXJlXG4gIG5vdCBlbm91Z2ggcGFkZGluZyBlbGVtZW50cywgcmV0dXJuIGEgcGFydGl0aW9uIHdpdGggbGVzcyB0aGFuIG4gaXRlbXMuIiwgOmFyZ2xpc3RzIFtbbiBjb2xsXSBbbiBzdGVwIGNvbGxdIFtuIHN0ZXAgcGFkIGNvbGxdXX0sIDpzb3VyY2UgIihkZWZuXG4gcGFydGl0aW9uXG4gXCJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiBsaXN0cyBvZiBuIGl0ZW1zIGVhY2gsIGF0IG9mZnNldHMgc3RlcFxcbiAgYXBhcnQuIElmIHN0ZXAgaXMgbm90IHN1cHBsaWVkLCBkZWZhdWx0cyB0byBuLCBpLmUuIHRoZSBwYXJ0aXRpb25zXFxuICBkbyBub3Qgb3ZlcmxhcC4gSWYgYSBwYWQgY29sbGVjdGlvbiBpcyBzdXBwbGllZCwgdXNlIGl0cyBlbGVtZW50cyBhc1xcbiAgbmVjZXNzYXJ5IHRvIGNvbXBsZXRlIGxhc3QgcGFydGl0aW9uIHVwIHRvIG4gaXRlbXMuIEluIGNhc2UgdGhlcmUgYXJlXFxuICBub3QgZW5vdWdoIHBhZGRpbmcgZWxlbWVudHMsIHJldHVybiBhIHBhcnRpdGlvbiB3aXRoIGxlc3MgdGhhbiBuIGl0ZW1zLlwiXG4gKFtuIGNvbGxdIChwYXJ0aXRpb24gbiBuIGNvbGwpKVxuIChbbiBzdGVwIGNvbGxdXG4gIChsYXp5LXNlcVxuICAgKHdoZW4tbGV0XG4gICAgW3MgKHNlcSBjb2xsKV1cbiAgICAobGV0XG4gICAgIFtwICh0YWtlIG4gcyldXG4gICAgICh3aGVuXG4gICAgICAoPT0gbiAoY291bnQgcCkpXG4gICAgICAoY29ucyBwIChwYXJ0aXRpb24gbiBzdGVwIChkcm9wIHN0ZXAgcykpKSkpKSkpXG4gKFtuIHN0ZXAgcGFkIGNvbGxdXG4gIChsYXp5LXNlcVxuICAgKHdoZW4tbGV0XG4gICAgW3MgKHNlcSBjb2xsKV1cbiAgICAobGV0XG4gICAgIFtwICh0YWtlIG4gcyldXG4gICAgIChpZlxuICAgICAgKD09IG4gKGNvdW50IHApKVxuICAgICAgKGNvbnMgcCAocGFydGl0aW9uIG4gc3RlcCBwYWQgKGRyb3Agc3RlcCBzKSkpXG4gICAgICAobGlzdCAodGFrZSBuIChjb25jYXQgcCBwYWQpKSkpKSkpKSlcbiJ9IHs6c3ltIElNdWx0aUZuLCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAoLWFkZC1tZXRob2QgLWRlZmF1bHQtZGlzcGF0Y2gtdmFsIC1kaXNwYXRjaC1mbiAtZ2V0LW1ldGhvZCAtbWV0aG9kcyAtcHJlZmVyLW1ldGhvZCAtcHJlZmVycyAtcmVtb3ZlLW1ldGhvZCAtcmVzZXQpfSB7OnN5bSBERU1VTkdFX1BBVFRFUk4sIDptZXRhIHt9LCA6c291cmNlICIoZGVmIERFTVVOR0VfUEFUVEVSTiBuaWwpXG4ifSB7OnN5bSBJQXNzb2NpYXRpdmUsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgYWRkaW5nIGFzc29jaWF0aXZpdHkgdG8gY29sbGVjdGlvbnMuIn0sIDptZXRob2RzICgtYXNzb2MgLWNvbnRhaW5zLWtleT8pfSB7OnN5bSBiaXQtZmxpcCwgOm1ldGEgezpkb2MgIkZsaXAgYml0IGF0IGluZGV4IG4iLCA6YXJnbGlzdHMgKFt4IG5dKX0sIDpzb3VyY2UgIihkZWZuIGJpdC1mbGlwIFwiRmxpcCBiaXQgYXQgaW5kZXggblwiIFt4IG5dIChjbGpzLmNvcmUvYml0LWZsaXAgeCBuKSlcbiJ9IHs6c3ltIGxvbmctYXJyYXksIDptZXRhIHs6ZG9jICJDcmVhdGVzIGFuIGFycmF5IG9mIGxvbmdzLiBEb2VzIG5vdCBjb2VyY2UgYXJyYXksIHByb3ZpZGVkIGZvciBjb21wYXRpYmlsaXR5XG4gIHdpdGggQ2xvanVyZS4iLCA6YXJnbGlzdHMgW1tzaXplLW9yLXNlcV0gW3NpemUgaW5pdC12YWwtb3Itc2VxXV19LCA6c291cmNlICIoZGVmblxuIGxvbmctYXJyYXlcbiBcIkNyZWF0ZXMgYW4gYXJyYXkgb2YgbG9uZ3MuIERvZXMgbm90IGNvZXJjZSBhcnJheSwgcHJvdmlkZWQgZm9yIGNvbXBhdGliaWxpdHlcXG4gIHdpdGggQ2xvanVyZS5cIlxuIChbc2l6ZS1vci1zZXFdXG4gIChpZlxuICAgKG51bWJlcj8gc2l6ZS1vci1zZXEpXG4gICAobG9uZy1hcnJheSBzaXplLW9yLXNlcSBuaWwpXG4gICAoaW50by1hcnJheSBzaXplLW9yLXNlcSkpKVxuIChbc2l6ZSBpbml0LXZhbC1vci1zZXFdXG4gIChsZXRcbiAgIFthIChtYWtlLWFycmF5IHNpemUpXVxuICAgKGlmXG4gICAgKHNlcT8gaW5pdC12YWwtb3Itc2VxKVxuICAgIChsZXRcbiAgICAgW3MgKHNlcSBpbml0LXZhbC1vci1zZXEpXVxuICAgICAobG9vcFxuICAgICAgW2kgMCBzIHNdXG4gICAgICAoaWZcbiAgICAgICAoYW5kIHMgKDwgaSBzaXplKSlcbiAgICAgICAoZG8gKGFzZXQgYSBpIChmaXJzdCBzKSkgKHJlY3VyIChpbmMgaSkgKG5leHQgcykpKVxuICAgICAgIGEpKSlcbiAgICAoZG8gKGRvdGltZXMgW2kgc2l6ZV0gKGFzZXQgYSBpIGluaXQtdmFsLW9yLXNlcSkpIGEpKSkpKVxuIn0gezpzeW0gZGVzY2VuZGFudHMsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBpbW1lZGlhdGUgYW5kIGluZGlyZWN0IGNoaWxkcmVuIG9mIHRhZywgdGhyb3VnaCBhXG4gIHJlbGF0aW9uc2hpcCBlc3RhYmxpc2hlZCB2aWEgZGVyaXZlLiBoIG11c3QgYmUgYSBoaWVyYXJjaHkgb2J0YWluZWRcbiAgZnJvbSBtYWtlLWhpZXJhcmNoeSwgaWYgbm90IHN1cHBsaWVkIGRlZmF1bHRzIHRvIHRoZSBnbG9iYWxcbiAgaGllcmFyY2h5LiBOb3RlOiBkb2VzIG5vdCB3b3JrIG9uIEphdmFTY3JpcHQgdHlwZSBpbmhlcml0YW5jZVxuICByZWxhdGlvbnNoaXBzLiIsIDphcmdsaXN0cyBbW3RhZ10gW2ggdGFnXV19LCA6c291cmNlICIoZGVmblxuIGRlc2NlbmRhbnRzXG4gXCJSZXR1cm5zIHRoZSBpbW1lZGlhdGUgYW5kIGluZGlyZWN0IGNoaWxkcmVuIG9mIHRhZywgdGhyb3VnaCBhXFxuICByZWxhdGlvbnNoaXAgZXN0YWJsaXNoZWQgdmlhIGRlcml2ZS4gaCBtdXN0IGJlIGEgaGllcmFyY2h5IG9idGFpbmVkXFxuICBmcm9tIG1ha2UtaGllcmFyY2h5LCBpZiBub3Qgc3VwcGxpZWQgZGVmYXVsdHMgdG8gdGhlIGdsb2JhbFxcbiAgaGllcmFyY2h5LiBOb3RlOiBkb2VzIG5vdCB3b3JrIG9uIEphdmFTY3JpcHQgdHlwZSBpbmhlcml0YW5jZVxcbiAgcmVsYXRpb25zaGlwcy5cIlxuIChbdGFnXSAoZGVzY2VuZGFudHMgQChnZXQtZ2xvYmFsLWhpZXJhcmNoeSkgdGFnKSlcbiAoW2ggdGFnXSAobm90LWVtcHR5IChnZXQgKDpkZXNjZW5kYW50cyBoKSB0YWcpKSkpXG4ifSB7OnN5bSBtZXJnZSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBtYXAgdGhhdCBjb25zaXN0cyBvZiB0aGUgcmVzdCBvZiB0aGUgbWFwcyBjb25qLWVkIG9udG9cbiAgdGhlIGZpcnN0LiAgSWYgYSBrZXkgb2NjdXJzIGluIG1vcmUgdGhhbiBvbmUgbWFwLCB0aGUgbWFwcGluZyBmcm9tXG4gIHRoZSBsYXR0ZXIgKGxlZnQtdG8tcmlnaHQpIHdpbGwgYmUgdGhlIG1hcHBpbmcgaW4gdGhlIHJlc3VsdC4iLCA6YXJnbGlzdHMgKFsmIG1hcHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWVyZ2VcbiBcIlJldHVybnMgYSBtYXAgdGhhdCBjb25zaXN0cyBvZiB0aGUgcmVzdCBvZiB0aGUgbWFwcyBjb25qLWVkIG9udG9cXG4gIHRoZSBmaXJzdC4gIElmIGEga2V5IG9jY3VycyBpbiBtb3JlIHRoYW4gb25lIG1hcCwgdGhlIG1hcHBpbmcgZnJvbVxcbiAgdGhlIGxhdHRlciAobGVmdC10by1yaWdodCkgd2lsbCBiZSB0aGUgbWFwcGluZyBpbiB0aGUgcmVzdWx0LlwiXG4gWyYgbWFwc11cbiAod2hlblxuICAoc29tZSBpZGVudGl0eSBtYXBzKVxuICAocmVkdWNlXG4gICAoZm4qIFtwMV9fNDU0MTUjIHAyX180NTQxNiNdIChjb25qIChvciBwMV9fNDU0MTUjIHt9KSBwMl9fNDU0MTYjKSlcbiAgIG1hcHMpKSlcbiJ9IHs6c3ltIElTZXFhYmxlLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFkZGluZyB0aGUgYWJpbGl0eSB0byBhIHR5cGUgdG8gYmUgdHJhbnNmb3JtZWQgaW50byBhIHNlcXVlbmNlLiJ9LCA6bWV0aG9kcyAoLXNlcSl9IHs6c3ltIGpzLW1vZCwgOm1ldGEgezpkb2MgIk1vZHVsdXMgb2YgbnVtIGFuZCBkaXYgd2l0aCBvcmlnaW5hbCBqYXZhc2NyaXB0IGJlaGF2aW9yLiBpLmUuIGJ1ZyBmb3IgbmVnYXRpdmUgbnVtYmVycyIsIDphcmdsaXN0cyAoW24gZF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBqcy1tb2RcbiBcIk1vZHVsdXMgb2YgbnVtIGFuZCBkaXYgd2l0aCBvcmlnaW5hbCBqYXZhc2NyaXB0IGJlaGF2aW9yLiBpLmUuIGJ1ZyBmb3IgbmVnYXRpdmUgbnVtYmVyc1wiXG4gW24gZF1cbiAoY2xqcy5jb3JlL2pzLW1vZCBuIGQpKVxuIn0gezpzeW0gaW50ZWdlcj8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgbiBpcyBhIEphdmFTY3JpcHQgbnVtYmVyIHdpdGggbm8gZGVjaW1hbCBwYXJ0LiIsIDphcmdsaXN0cyAoW25dKX0sIDpzb3VyY2UgIihkZWZuXG4gaW50ZWdlcj9cbiBcIlJldHVybnMgdHJ1ZSBpZiBuIGlzIGEgSmF2YVNjcmlwdCBudW1iZXIgd2l0aCBubyBkZWNpbWFsIHBhcnQuXCJcbiBbbl1cbiAoYW5kXG4gIChudW1iZXI/IG4pXG4gIChub3QgKGpzL2lzTmFOIG4pKVxuICAobm90IChpZGVudGljYWw/IG4ganMvSW5maW5pdHkpKVxuICAoPT0gKGpzL3BhcnNlRmxvYXQgbikgKGpzL3BhcnNlSW50IG4gMTApKSkpXG4ifSB7OnN5bSBOU19DQUNIRSwgOm1ldGEgezpkb2MgIkJvb3RzdHJhcCBvbmx5LiJ9LCA6c291cmNlICIoZGVmIE5TX0NBQ0hFIG5pbClcbiJ9IHs6c3ltIG1hcHYsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgdmVjdG9yIGNvbnNpc3Rpbmcgb2YgdGhlIHJlc3VsdCBvZiBhcHBseWluZyBmIHRvIHRoZVxuICBzZXQgb2YgZmlyc3QgaXRlbXMgb2YgZWFjaCBjb2xsLCBmb2xsb3dlZCBieSBhcHBseWluZyBmIHRvIHRoZSBzZXRcbiAgb2Ygc2Vjb25kIGl0ZW1zIGluIGVhY2ggY29sbCwgdW50aWwgYW55IG9uZSBvZiB0aGUgY29sbHMgaXNcbiAgZXhoYXVzdGVkLiAgQW55IHJlbWFpbmluZyBpdGVtcyBpbiBvdGhlciBjb2xscyBhcmUgaWdub3JlZC4gRnVuY3Rpb25cbiAgZiBzaG91bGQgYWNjZXB0IG51bWJlci1vZi1jb2xscyBhcmd1bWVudHMuIiwgOmFyZ2xpc3RzIFtbZiBjb2xsXSBbZiBjMSBjMl0gW2YgYzEgYzIgYzNdIFtmIGMxIGMyIGMzICYgY29sbHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gbWFwdlxuIFwiUmV0dXJucyBhIHZlY3RvciBjb25zaXN0aW5nIG9mIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgZiB0byB0aGVcXG4gIHNldCBvZiBmaXJzdCBpdGVtcyBvZiBlYWNoIGNvbGwsIGZvbGxvd2VkIGJ5IGFwcGx5aW5nIGYgdG8gdGhlIHNldFxcbiAgb2Ygc2Vjb25kIGl0ZW1zIGluIGVhY2ggY29sbCwgdW50aWwgYW55IG9uZSBvZiB0aGUgY29sbHMgaXNcXG4gIGV4aGF1c3RlZC4gIEFueSByZW1haW5pbmcgaXRlbXMgaW4gb3RoZXIgY29sbHMgYXJlIGlnbm9yZWQuIEZ1bmN0aW9uXFxuICBmIHNob3VsZCBhY2NlcHQgbnVtYmVyLW9mLWNvbGxzIGFyZ3VtZW50cy5cIlxuIChbZiBjb2xsXVxuICAoLT5cbiAgIChyZWR1Y2UgKGZuIFt2IG9dIChjb25qISB2IChmIG8pKSkgKHRyYW5zaWVudCBbXSkgY29sbClcbiAgIHBlcnNpc3RlbnQhKSlcbiAoW2YgYzEgYzJdIChpbnRvIFtdIChtYXAgZiBjMSBjMikpKVxuIChbZiBjMSBjMiBjM10gKGludG8gW10gKG1hcCBmIGMxIGMyIGMzKSkpXG4gKFtmIGMxIGMyIGMzICYgY29sbHNdIChpbnRvIFtdIChhcHBseSBtYXAgZiBjMSBjMiBjMyBjb2xscykpKSlcbiJ9IHs6c3ltIGluZmluaXRlPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBmb3IgSW5maW5pdHkgYW5kIC1JbmZpbml0eSB2YWx1ZXMuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbmZpbml0ZT9cbiBcIlJldHVybnMgdHJ1ZSBmb3IgSW5maW5pdHkgYW5kIC1JbmZpbml0eSB2YWx1ZXMuXCJcbiBbeF1cbiAob3JcbiAgKGlkZW50aWNhbD8geCBqcy9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpXG4gIChpZGVudGljYWw/IHgganMvTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZKSkpXG4ifSB7OnN5bSBwYXJ0aXRpb24tYWxsLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2YgbGlzdHMgbGlrZSBwYXJ0aXRpb24sIGJ1dCBtYXkgaW5jbHVkZVxuICBwYXJ0aXRpb25zIHdpdGggZmV3ZXIgdGhhbiBuIGl0ZW1zIGF0IHRoZSBlbmQuICBSZXR1cm5zIGEgc3RhdGVmdWxcbiAgdHJhbnNkdWNlciB3aGVuIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuIiwgOmFyZ2xpc3RzIFtbbl0gW24gY29sbF0gW24gc3RlcCBjb2xsXV19LCA6c291cmNlICIoZGVmblxuIHBhcnRpdGlvbi1hbGxcbiBcIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIGxpc3RzIGxpa2UgcGFydGl0aW9uLCBidXQgbWF5IGluY2x1ZGVcXG4gIHBhcnRpdGlvbnMgd2l0aCBmZXdlciB0aGFuIG4gaXRlbXMgYXQgdGhlIGVuZC4gIFJldHVybnMgYSBzdGF0ZWZ1bFxcbiAgdHJhbnNkdWNlciB3aGVuIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuXCJcbiAoW25dXG4gIChmblxuICAgW3JmXVxuICAgKGxldFxuICAgIFthIChhcnJheS1saXN0KV1cbiAgICAoZm5cbiAgICAgKFtdIChyZikpXG4gICAgIChbcmVzdWx0XVxuICAgICAgKGxldFxuICAgICAgIFtyZXN1bHRcbiAgICAgICAgKGlmXG4gICAgICAgICAoLmlzRW1wdHkgYSlcbiAgICAgICAgIHJlc3VsdFxuICAgICAgICAgKGxldFxuICAgICAgICAgIFt2ICh2ZWMgKC50b0FycmF5IGEpKV1cbiAgICAgICAgICAoLmNsZWFyIGEpXG4gICAgICAgICAgKHVucmVkdWNlZCAocmYgcmVzdWx0IHYpKSkpXVxuICAgICAgIChyZiByZXN1bHQpKSlcbiAgICAgKFtyZXN1bHQgaW5wdXRdXG4gICAgICAoLmFkZCBhIGlucHV0KVxuICAgICAgKGlmXG4gICAgICAgKD09IG4gKC5zaXplIGEpKVxuICAgICAgIChsZXQgW3YgKHZlYyAoLnRvQXJyYXkgYSkpXSAoLmNsZWFyIGEpIChyZiByZXN1bHQgdikpXG4gICAgICAgcmVzdWx0KSkpKSkpXG4gKFtuIGNvbGxdIChwYXJ0aXRpb24tYWxsIG4gbiBjb2xsKSlcbiAoW24gc3RlcCBjb2xsXVxuICAobGF6eS1zZXFcbiAgICh3aGVuLWxldFxuICAgIFtzIChzZXEgY29sbCldXG4gICAgKGNvbnMgKHRha2UgbiBzKSAocGFydGl0aW9uLWFsbCBuIHN0ZXAgKGRyb3Agc3RlcCBzKSkpKSkpKVxuIn0gezpzeW0gcGFydGl0aW9uLWJ5LCA6bWV0YSB7OmRvYyAiQXBwbGllcyBmIHRvIGVhY2ggdmFsdWUgaW4gY29sbCwgc3BsaXR0aW5nIGl0IGVhY2ggdGltZSBmIHJldHVybnMgYVxuICAgbmV3IHZhbHVlLiAgUmV0dXJucyBhIGxhenkgc2VxIG9mIHBhcnRpdGlvbnMuICBSZXR1cm5zIGEgc3RhdGVmdWxcbiAgIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLiIsIDphcmdsaXN0cyBbW2ZdIFtmIGNvbGxdXX0sIDpzb3VyY2UgIihkZWZuXG4gcGFydGl0aW9uLWJ5XG4gXCJBcHBsaWVzIGYgdG8gZWFjaCB2YWx1ZSBpbiBjb2xsLCBzcGxpdHRpbmcgaXQgZWFjaCB0aW1lIGYgcmV0dXJucyBhXFxuICAgbmV3IHZhbHVlLiAgUmV0dXJucyBhIGxhenkgc2VxIG9mIHBhcnRpdGlvbnMuICBSZXR1cm5zIGEgc3RhdGVmdWxcXG4gICB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC5cIlxuIChbZl1cbiAgKGZuXG4gICBbcmZdXG4gICAobGV0XG4gICAgW2EgKGFycmF5LWxpc3QpIHBhICh2b2xhdGlsZSEgOmNsanMuY29yZS9ub25lKV1cbiAgICAoZm5cbiAgICAgKFtdIChyZikpXG4gICAgIChbcmVzdWx0XVxuICAgICAgKGxldFxuICAgICAgIFtyZXN1bHRcbiAgICAgICAgKGlmXG4gICAgICAgICAoLmlzRW1wdHkgYSlcbiAgICAgICAgIHJlc3VsdFxuICAgICAgICAgKGxldFxuICAgICAgICAgIFt2ICh2ZWMgKC50b0FycmF5IGEpKV1cbiAgICAgICAgICAoLmNsZWFyIGEpXG4gICAgICAgICAgKHVucmVkdWNlZCAocmYgcmVzdWx0IHYpKSkpXVxuICAgICAgIChyZiByZXN1bHQpKSlcbiAgICAgKFtyZXN1bHQgaW5wdXRdXG4gICAgICAobGV0XG4gICAgICAgW3B2YWwgQHBhIHZhbCAoZiBpbnB1dCldXG4gICAgICAgKHZyZXNldCEgcGEgdmFsKVxuICAgICAgIChpZlxuICAgICAgICAob3IgKGtleXdvcmQtaWRlbnRpY2FsPyBwdmFsIDpjbGpzLmNvcmUvbm9uZSkgKD0gdmFsIHB2YWwpKVxuICAgICAgICAoZG8gKC5hZGQgYSBpbnB1dCkgcmVzdWx0KVxuICAgICAgICAobGV0XG4gICAgICAgICBbdiAodmVjICgudG9BcnJheSBhKSldXG4gICAgICAgICAoLmNsZWFyIGEpXG4gICAgICAgICAobGV0XG4gICAgICAgICAgW3JldCAocmYgcmVzdWx0IHYpXVxuICAgICAgICAgICh3aGVuLW5vdCAocmVkdWNlZD8gcmV0KSAoLmFkZCBhIGlucHV0KSlcbiAgICAgICAgICByZXQpKSkpKSkpKSlcbiAoW2YgY29sbF1cbiAgKGxhenktc2VxXG4gICAod2hlbi1sZXRcbiAgICBbcyAoc2VxIGNvbGwpXVxuICAgIChsZXRcbiAgICAgW2ZzdFxuICAgICAgKGZpcnN0IHMpXG4gICAgICBmdlxuICAgICAgKGYgZnN0KVxuICAgICAgcnVuXG4gICAgICAoY29uc1xuICAgICAgIGZzdFxuICAgICAgICh0YWtlLXdoaWxlIChmbiogW3AxX180NTQyNyNdICg9IGZ2IChmIHAxX180NTQyNyMpKSkgKG5leHQgcykpKV1cbiAgICAgKGNvbnMgcnVuIChwYXJ0aXRpb24tYnkgZiAobGF6eS1zZXEgKGRyb3AgKGNvdW50IHJ1bikgcykpKSkpKSkpKVxuIn0gezpzeW0gSVNlcXVlbnRpYWwsIDptZXRhIHs6ZG9jICJNYXJrZXIgaW50ZXJmYWNlIGluZGljYXRpbmcgYSBwZXJzaXN0ZW50IGNvbGxlY3Rpb24gb2Ygc2VxdWVudGlhbCBpdGVtcyJ9LCA6bWV0aG9kcyAoKX0gezpzeW0gZXF1aXYtbWFwLCA6bWV0YSB7OmRvYyAiVGVzdCBtYXAgZXF1aXZhbGVuY2UuIFJldHVybnMgdHJ1ZSBpZiB4IGVxdWFscyB5LCBvdGhlcndpc2UgcmV0dXJucyBmYWxzZS4iLCA6YXJnbGlzdHMgKFt4IHldKX0sIDpzb3VyY2UgIihkZWZuXG4gZXF1aXYtbWFwXG4gXCJUZXN0IG1hcCBlcXVpdmFsZW5jZS4gUmV0dXJucyB0cnVlIGlmIHggZXF1YWxzIHksIG90aGVyd2lzZSByZXR1cm5zIGZhbHNlLlwiXG4gW3ggeV1cbiAoYm9vbGVhblxuICAod2hlblxuICAgKGFuZCAobWFwPyB5KSAobm90IChyZWNvcmQ/IHkpKSlcbiAgICh3aGVuXG4gICAgKD09IChjb3VudCB4KSAoY291bnQgeSkpXG4gICAgKGlmXG4gICAgIChzYXRpc2ZpZXM/IElLVlJlZHVjZSB4KVxuICAgICAocmVkdWNlLWt2XG4gICAgICAoZm5cbiAgICAgICBbXyBrIHZdXG4gICAgICAgKGlmICg9IChnZXQgeSBrIG5ldmVyLWVxdWl2KSB2KSB0cnVlIChyZWR1Y2VkIGZhbHNlKSkpXG4gICAgICB0cnVlXG4gICAgICB4KVxuICAgICAoZXZlcnk/XG4gICAgICAoZm4gW3hrdl0gKD0gKGdldCB5IChmaXJzdCB4a3YpIG5ldmVyLWVxdWl2KSAoc2Vjb25kIHhrdikpKVxuICAgICAgeCkpKSkpKVxuIn0gezpzeW0gb2JqZWN0LWFycmF5LCA6bWV0YSB7OmRvYyAiQ3JlYXRlcyBhbiBhcnJheSBvZiBvYmplY3RzLiBEb2VzIG5vdCBjb2VyY2UgYXJyYXksIHByb3ZpZGVkIGZvciBjb21wYXRpYmlsaXR5XG4gIHdpdGggQ2xvanVyZS4iLCA6YXJnbGlzdHMgW1tzaXplLW9yLXNlcV0gW3NpemUgaW5pdC12YWwtb3Itc2VxXV19LCA6c291cmNlICIoZGVmblxuIG9iamVjdC1hcnJheVxuIFwiQ3JlYXRlcyBhbiBhcnJheSBvZiBvYmplY3RzLiBEb2VzIG5vdCBjb2VyY2UgYXJyYXksIHByb3ZpZGVkIGZvciBjb21wYXRpYmlsaXR5XFxuICB3aXRoIENsb2p1cmUuXCJcbiAoW3NpemUtb3Itc2VxXVxuICAoaWZcbiAgIChudW1iZXI/IHNpemUtb3Itc2VxKVxuICAgKG9iamVjdC1hcnJheSBzaXplLW9yLXNlcSBuaWwpXG4gICAoaW50by1hcnJheSBzaXplLW9yLXNlcSkpKVxuIChbc2l6ZSBpbml0LXZhbC1vci1zZXFdXG4gIChsZXRcbiAgIFthIChtYWtlLWFycmF5IHNpemUpXVxuICAgKGlmXG4gICAgKHNlcT8gaW5pdC12YWwtb3Itc2VxKVxuICAgIChsZXRcbiAgICAgW3MgKHNlcSBpbml0LXZhbC1vci1zZXEpXVxuICAgICAobG9vcFxuICAgICAgW2kgMCBzIHNdXG4gICAgICAoaWZcbiAgICAgICAoYW5kIHMgKDwgaSBzaXplKSlcbiAgICAgICAoZG8gKGFzZXQgYSBpIChmaXJzdCBzKSkgKHJlY3VyIChpbmMgaSkgKG5leHQgcykpKVxuICAgICAgIGEpKSlcbiAgICAoZG8gKGRvdGltZXMgW2kgc2l6ZV0gKGFzZXQgYSBpIGluaXQtdmFsLW9yLXNlcSkpIGEpKSkpKVxuIn0gezpzeW0gZGVyaXZlLCA6bWV0YSB7OmRvYyAiRXN0YWJsaXNoZXMgYSBwYXJlbnQvY2hpbGQgcmVsYXRpb25zaGlwIGJldHdlZW4gcGFyZW50IGFuZFxuICB0YWcuIFBhcmVudCBtdXN0IGJlIGEgbmFtZXNwYWNlLXF1YWxpZmllZCBzeW1ib2wgb3Iga2V5d29yZCBhbmRcbiAgY2hpbGQgY2FuIGJlIGVpdGhlciBhIG5hbWVzcGFjZS1xdWFsaWZpZWQgc3ltYm9sIG9yIGtleXdvcmQgb3IgYVxuICBjbGFzcy4gaCBtdXN0IGJlIGEgaGllcmFyY2h5IG9idGFpbmVkIGZyb20gbWFrZS1oaWVyYXJjaHksIGlmIG5vdFxuICBzdXBwbGllZCBkZWZhdWx0cyB0bywgYW5kIG1vZGlmaWVzLCB0aGUgZ2xvYmFsIGhpZXJhcmNoeS4iLCA6YXJnbGlzdHMgW1t0YWcgcGFyZW50XSBbaCB0YWcgcGFyZW50XV19LCA6c291cmNlICIoZGVmblxuIGRlcml2ZVxuIFwiRXN0YWJsaXNoZXMgYSBwYXJlbnQvY2hpbGQgcmVsYXRpb25zaGlwIGJldHdlZW4gcGFyZW50IGFuZFxcbiAgdGFnLiBQYXJlbnQgbXVzdCBiZSBhIG5hbWVzcGFjZS1xdWFsaWZpZWQgc3ltYm9sIG9yIGtleXdvcmQgYW5kXFxuICBjaGlsZCBjYW4gYmUgZWl0aGVyIGEgbmFtZXNwYWNlLXF1YWxpZmllZCBzeW1ib2wgb3Iga2V5d29yZCBvciBhXFxuICBjbGFzcy4gaCBtdXN0IGJlIGEgaGllcmFyY2h5IG9idGFpbmVkIGZyb20gbWFrZS1oaWVyYXJjaHksIGlmIG5vdFxcbiAgc3VwcGxpZWQgZGVmYXVsdHMgdG8sIGFuZCBtb2RpZmllcywgdGhlIGdsb2JhbCBoaWVyYXJjaHkuXCJcbiAoW3RhZyBwYXJlbnRdXG4gIChhc3NlcnQgKG5hbWVzcGFjZSBwYXJlbnQpKVxuICAoc3dhcC1nbG9iYWwtaGllcmFyY2h5ISBkZXJpdmUgdGFnIHBhcmVudClcbiAgbmlsKVxuIChbaCB0YWcgcGFyZW50XVxuICAoYXNzZXJ0IChub3Q9IHRhZyBwYXJlbnQpKVxuICAobGV0XG4gICBbdHBcbiAgICAoOnBhcmVudHMgaClcbiAgICB0ZFxuICAgICg6ZGVzY2VuZGFudHMgaClcbiAgICB0YVxuICAgICg6YW5jZXN0b3JzIGgpXG4gICAgdGZcbiAgICAoZm5cbiAgICAgW20gc291cmNlIHNvdXJjZXMgdGFyZ2V0IHRhcmdldHNdXG4gICAgIChyZWR1Y2VcbiAgICAgIChmblxuICAgICAgIFtyZXQga11cbiAgICAgICAoYXNzb2NcbiAgICAgICAgcmV0XG4gICAgICAgIGtcbiAgICAgICAgKHJlZHVjZVxuICAgICAgICAgY29ualxuICAgICAgICAgKGdldCB0YXJnZXRzIGsgI3t9KVxuICAgICAgICAgKGNvbnMgdGFyZ2V0ICh0YXJnZXRzIHRhcmdldCkpKSkpXG4gICAgICBtXG4gICAgICAoY29ucyBzb3VyY2UgKHNvdXJjZXMgc291cmNlKSkpKV1cbiAgIChvclxuICAgICh3aGVuLW5vdFxuICAgICAoY29udGFpbnM/ICh0cCB0YWcpIHBhcmVudClcbiAgICAgKHdoZW5cbiAgICAgIChjb250YWlucz8gKHRhIHRhZykgcGFyZW50KVxuICAgICAgKHRocm93IChqcy9FcnJvci4gKHN0ciB0YWcgXCJhbHJlYWR5IGhhc1wiIHBhcmVudCBcImFzIGFuY2VzdG9yXCIpKSkpXG4gICAgICh3aGVuXG4gICAgICAoY29udGFpbnM/ICh0YSBwYXJlbnQpIHRhZylcbiAgICAgICh0aHJvd1xuICAgICAgIChqcy9FcnJvci5cbiAgICAgICAgKHN0ciBcIkN5Y2xpYyBkZXJpdmF0aW9uOlwiIHBhcmVudCBcImhhc1wiIHRhZyBcImFzIGFuY2VzdG9yXCIpKSkpXG4gICAgIHs6cGFyZW50cyAoYXNzb2MgKDpwYXJlbnRzIGgpIHRhZyAoY29uaiAoZ2V0IHRwIHRhZyAje30pIHBhcmVudCkpLFxuICAgICAgOmFuY2VzdG9ycyAodGYgKDphbmNlc3RvcnMgaCkgdGFnIHRkIHBhcmVudCB0YSksXG4gICAgICA6ZGVzY2VuZGFudHMgKHRmICg6ZGVzY2VuZGFudHMgaCkgcGFyZW50IHRhIHRhZyB0ZCl9KVxuICAgIGgpKSkpXG4ifSB7OnN5bSBzZXEtaXRlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmbiBzZXEtaXRlciBbY29sbF0gKFNlcUl0ZXIuIElOSVQgY29sbCkpXG4ifSB7OnN5bSBJQ2h1bmtlZFNlcSwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhY2Nlc3NpbmcgYSBjb2xsZWN0aW9uIGFzIHNlcXVlbnRpYWwgY2h1bmtzLiJ9LCA6bWV0aG9kcyAoLWNodW5rZWQtZmlyc3QgLWNodW5rZWQtcmVzdCl9IHs6c3ltIHNwZWNpYWwtc3ltYm9sPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB4IG5hbWVzIGEgc3BlY2lhbCBmb3JtIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzcGVjaWFsLXN5bWJvbD9cbiBcIlJldHVybnMgdHJ1ZSBpZiB4IG5hbWVzIGEgc3BlY2lhbCBmb3JtXCJcbiBbeF1cbiAoY29udGFpbnM/XG4gICcjeyZcbiAgICAgY2FzZSpcbiAgICAgZGVmcmVjb3JkKlxuICAgICB0cnlcbiAgICAgbnMqXG4gICAgIGZpbmFsbHlcbiAgICAgbG9vcCpcbiAgICAgZG9cbiAgICAgbGV0Zm4qXG4gICAgIGlmXG4gICAgIG5ld1xuICAgICBuc1xuICAgICBkZWZ0eXBlKlxuICAgICBsZXQqXG4gICAgIGpzKlxuICAgICBmbipcbiAgICAgcmVjdXJcbiAgICAgc2V0IVxuICAgICAuXG4gICAgIHZhclxuICAgICBxdW90ZVxuICAgICBjYXRjaFxuICAgICB0aHJvd1xuICAgICBkZWZ9XG4gIHgpKVxuIn0gezpzeW0gYW5jZXN0b3JzLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgaW1tZWRpYXRlIGFuZCBpbmRpcmVjdCBwYXJlbnRzIG9mIHRhZywgZWl0aGVyIHZpYSBhIEphdmFTY3JpcHQgdHlwZVxuICBpbmhlcml0YW5jZSByZWxhdGlvbnNoaXAgb3IgYSByZWxhdGlvbnNoaXAgZXN0YWJsaXNoZWQgdmlhIGRlcml2ZS4gaFxuICBtdXN0IGJlIGEgaGllcmFyY2h5IG9idGFpbmVkIGZyb20gbWFrZS1oaWVyYXJjaHksIGlmIG5vdCBzdXBwbGllZFxuICBkZWZhdWx0cyB0byB0aGUgZ2xvYmFsIGhpZXJhcmNoeSIsIDphcmdsaXN0cyBbW3RhZ10gW2ggdGFnXV19LCA6c291cmNlICIoZGVmblxuIGFuY2VzdG9yc1xuIFwiUmV0dXJucyB0aGUgaW1tZWRpYXRlIGFuZCBpbmRpcmVjdCBwYXJlbnRzIG9mIHRhZywgZWl0aGVyIHZpYSBhIEphdmFTY3JpcHQgdHlwZVxcbiAgaW5oZXJpdGFuY2UgcmVsYXRpb25zaGlwIG9yIGEgcmVsYXRpb25zaGlwIGVzdGFibGlzaGVkIHZpYSBkZXJpdmUuIGhcXG4gIG11c3QgYmUgYSBoaWVyYXJjaHkgb2J0YWluZWQgZnJvbSBtYWtlLWhpZXJhcmNoeSwgaWYgbm90IHN1cHBsaWVkXFxuICBkZWZhdWx0cyB0byB0aGUgZ2xvYmFsIGhpZXJhcmNoeVwiXG4gKFt0YWddIChhbmNlc3RvcnMgQChnZXQtZ2xvYmFsLWhpZXJhcmNoeSkgdGFnKSlcbiAoW2ggdGFnXSAobm90LWVtcHR5IChnZXQgKDphbmNlc3RvcnMgaCkgdGFnKSkpKVxuIn0gezpzeW0gc3Vic2VxLCA6bWV0YSB7OmRvYyAic2MgbXVzdCBiZSBhIHNvcnRlZCBjb2xsZWN0aW9uLCB0ZXN0KHMpIG9uZSBvZiA8LCA8PSwgPiBvclxuICA+PS4gUmV0dXJucyBhIHNlcSBvZiB0aG9zZSBlbnRyaWVzIHdpdGgga2V5cyBlayBmb3JcbiAgd2hpY2ggKHRlc3QgKC4uIHNjIGNvbXBhcmF0b3IgKGNvbXBhcmUgZWsga2V5KSkgMCkgaXMgdHJ1ZSIsIDphcmdsaXN0cyBbW3NjIHRlc3Qga2V5XSBbc2Mgc3RhcnQtdGVzdCBzdGFydC1rZXkgZW5kLXRlc3QgZW5kLWtleV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBzdWJzZXFcbiBcInNjIG11c3QgYmUgYSBzb3J0ZWQgY29sbGVjdGlvbiwgdGVzdChzKSBvbmUgb2YgPCwgPD0sID4gb3JcXG4gID49LiBSZXR1cm5zIGEgc2VxIG9mIHRob3NlIGVudHJpZXMgd2l0aCBrZXlzIGVrIGZvclxcbiAgd2hpY2ggKHRlc3QgKC4uIHNjIGNvbXBhcmF0b3IgKGNvbXBhcmUgZWsga2V5KSkgMCkgaXMgdHJ1ZVwiXG4gKFtzYyB0ZXN0IGtleV1cbiAgKGxldFxuICAgW2luY2x1ZGUgKG1rLWJvdW5kLWZuIHNjIHRlc3Qga2V5KV1cbiAgIChpZlxuICAgICgjez4gPj19IHRlc3QpXG4gICAgKHdoZW4tbGV0XG4gICAgIFtbZSA6YXMgc10gKC1zb3J0ZWQtc2VxLWZyb20gc2Mga2V5IHRydWUpXVxuICAgICAoaWYgKGluY2x1ZGUgZSkgcyAobmV4dCBzKSkpXG4gICAgKHRha2Utd2hpbGUgaW5jbHVkZSAoLXNvcnRlZC1zZXEgc2MgdHJ1ZSkpKSkpXG4gKFtzYyBzdGFydC10ZXN0IHN0YXJ0LWtleSBlbmQtdGVzdCBlbmQta2V5XVxuICAod2hlbi1sZXRcbiAgIFtbZSA6YXMgc10gKC1zb3J0ZWQtc2VxLWZyb20gc2Mgc3RhcnQta2V5IHRydWUpXVxuICAgKHRha2Utd2hpbGVcbiAgICAobWstYm91bmQtZm4gc2MgZW5kLXRlc3QgZW5kLWtleSlcbiAgICAoaWYgKChtay1ib3VuZC1mbiBzYyBzdGFydC10ZXN0IHN0YXJ0LWtleSkgZSkgcyAobmV4dCBzKSkpKSkpXG4ifSB7OnN5bSBnZW5zeW0sIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbmV3IHN5bWJvbCB3aXRoIGEgdW5pcXVlIG5hbWUuIElmIGEgcHJlZml4IHN0cmluZyBpc1xuICBzdXBwbGllZCwgdGhlIG5hbWUgaXMgcHJlZml4IyB3aGVyZSAjIGlzIHNvbWUgdW5pcXVlIG51bWJlci4gSWZcbiAgcHJlZml4IGlzIG5vdCBzdXBwbGllZCwgdGhlIHByZWZpeCBpcyAnR19fJy4iLCA6YXJnbGlzdHMgW1tdIFtwcmVmaXgtc3RyaW5nXV19LCA6c291cmNlICIoZGVmblxuIGdlbnN5bVxuIFwiUmV0dXJucyBhIG5ldyBzeW1ib2wgd2l0aCBhIHVuaXF1ZSBuYW1lLiBJZiBhIHByZWZpeCBzdHJpbmcgaXNcXG4gIHN1cHBsaWVkLCB0aGUgbmFtZSBpcyBwcmVmaXgjIHdoZXJlICMgaXMgc29tZSB1bmlxdWUgbnVtYmVyLiBJZlxcbiAgcHJlZml4IGlzIG5vdCBzdXBwbGllZCwgdGhlIHByZWZpeCBpcyAnR19fJy5cIlxuIChbXSAoZ2Vuc3ltIFwiR19fXCIpKVxuIChbcHJlZml4LXN0cmluZ11cbiAgKHdoZW4gKG5pbD8gZ2Vuc3ltX2NvdW50ZXIpIChzZXQhIGdlbnN5bV9jb3VudGVyIChhdG9tIDApKSlcbiAgKHN5bWJvbCAoc3RyIHByZWZpeC1zdHJpbmcgKHN3YXAhIGdlbnN5bV9jb3VudGVyIGluYykpKSkpXG4ifSB7OnN5bSAtbmV4dCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBuZXcgY29sbGVjdGlvbiBvZiBjb2xsIHdpdGhvdXQgdGhlIGZpcnN0IGl0ZW0uIEluIGNvbnRyYXN0IHRvXG4gICAgIHJlc3QsIGl0IHNob3VsZCByZXR1cm4gbmlsIGlmIHRoZXJlIGFyZSBubyBtb3JlIGl0ZW1zLCBlLmcuXG4gICAgIChuZXh0IFtdKSA9PiBuaWxcbiAgICAgKG5leHQgbmlsKSA9PiBuaWwiLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6cHJvdG9jb2wgSU5leHR9IHs6c3ltIGRlbGF5PywgOm1ldGEgezpkb2MgInJldHVybnMgdHJ1ZSBpZiB4IGlzIGEgRGVsYXkgY3JlYXRlZCB3aXRoIGRlbGF5IiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBkZWxheT9cbiBcInJldHVybnMgdHJ1ZSBpZiB4IGlzIGEgRGVsYXkgY3JlYXRlZCB3aXRoIGRlbGF5XCJcbiBbeF1cbiAoaW5zdGFuY2U/IERlbGF5IHgpKVxuIn0gezpzeW0gZmxhdHRlbiwgOm1ldGEgezpkb2MgIlRha2VzIGFueSBuZXN0ZWQgY29tYmluYXRpb24gb2Ygc2VxdWVudGlhbCB0aGluZ3MgKGxpc3RzLCB2ZWN0b3JzLFxuICBldGMuKSBhbmQgcmV0dXJucyB0aGVpciBjb250ZW50cyBhcyBhIHNpbmdsZSwgZmxhdCBzZXF1ZW5jZS5cbiAgKGZsYXR0ZW4gbmlsKSByZXR1cm5zIG5pbC4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGZsYXR0ZW5cbiBcIlRha2VzIGFueSBuZXN0ZWQgY29tYmluYXRpb24gb2Ygc2VxdWVudGlhbCB0aGluZ3MgKGxpc3RzLCB2ZWN0b3JzLFxcbiAgZXRjLikgYW5kIHJldHVybnMgdGhlaXIgY29udGVudHMgYXMgYSBzaW5nbGUsIGZsYXQgc2VxdWVuY2UuXFxuICAoZmxhdHRlbiBuaWwpIHJldHVybnMgbmlsLlwiXG4gW3hdXG4gKGZpbHRlclxuICAoZm4qIFtwMV9fNDU0MTMjXSAobm90IChzZXF1ZW50aWFsPyBwMV9fNDU0MTMjKSkpXG4gIChyZXN0ICh0cmVlLXNlcSBzZXF1ZW50aWFsPyBzZXEgeCkpKSlcbiJ9IHs6c3ltIC1kaXNzb2MsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbmV3IGNvbGxlY3Rpb24gb2YgY29sbCB3aXRob3V0IHRoZSBtYXBwaW5nIGZvciBrZXkgay4iLCA6YXJnbGlzdHMgKFtjb2xsIGtdKX0sIDpwcm90b2NvbCBJTWFwfSB7OnN5bSBkb3VibGVzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGRvdWJsZXMgW3hdIHgpXG4ifSB7OnN5bSBoYWx0LXdoZW4sIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgdHJhbnNkdWNlciB0aGF0IGVuZHMgdHJhbnNkdWN0aW9uIHdoZW4gcHJlZCByZXR1cm5zIHRydWVcbiAgZm9yIGFuIGlucHV0LiBXaGVuIHJldGYgaXMgc3VwcGxpZWQgaXQgbXVzdCBiZSBhIGZuIG9mIDIgYXJndW1lbnRzIC1cbiAgaXQgd2lsbCBiZSBwYXNzZWQgdGhlIChjb21wbGV0ZWQpIHJlc3VsdCBzbyBmYXIgYW5kIHRoZSBpbnB1dCB0aGF0XG4gIHRyaWdnZXJlZCB0aGUgcHJlZGljYXRlLCBhbmQgaXRzIHJldHVybiB2YWx1ZSAoaWYgaXQgZG9lcyBub3QgdGhyb3dcbiAgYW4gZXhjZXB0aW9uKSB3aWxsIGJlIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIHRyYW5zZHVjZXIuIElmIHJldGZcbiAgaXMgbm90IHN1cHBsaWVkLCB0aGUgaW5wdXQgdGhhdCB0cmlnZ2VyZWQgdGhlIHByZWRpY2F0ZSB3aWxsIGJlXG4gIHJldHVybmVkLiBJZiB0aGUgcHJlZGljYXRlIG5ldmVyIHJldHVybnMgdHJ1ZSB0aGUgdHJhbnNkdWN0aW9uIGlzXG4gIHVuYWZmZWN0ZWQuIiwgOmFyZ2xpc3RzIFtbcHJlZF0gW3ByZWQgcmV0Zl1dfSwgOnNvdXJjZSAiKGRlZm5cbiBoYWx0LXdoZW5cbiBcIlJldHVybnMgYSB0cmFuc2R1Y2VyIHRoYXQgZW5kcyB0cmFuc2R1Y3Rpb24gd2hlbiBwcmVkIHJldHVybnMgdHJ1ZVxcbiAgZm9yIGFuIGlucHV0LiBXaGVuIHJldGYgaXMgc3VwcGxpZWQgaXQgbXVzdCBiZSBhIGZuIG9mIDIgYXJndW1lbnRzIC1cXG4gIGl0IHdpbGwgYmUgcGFzc2VkIHRoZSAoY29tcGxldGVkKSByZXN1bHQgc28gZmFyIGFuZCB0aGUgaW5wdXQgdGhhdFxcbiAgdHJpZ2dlcmVkIHRoZSBwcmVkaWNhdGUsIGFuZCBpdHMgcmV0dXJuIHZhbHVlIChpZiBpdCBkb2VzIG5vdCB0aHJvd1xcbiAgYW4gZXhjZXB0aW9uKSB3aWxsIGJlIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIHRyYW5zZHVjZXIuIElmIHJldGZcXG4gIGlzIG5vdCBzdXBwbGllZCwgdGhlIGlucHV0IHRoYXQgdHJpZ2dlcmVkIHRoZSBwcmVkaWNhdGUgd2lsbCBiZVxcbiAgcmV0dXJuZWQuIElmIHRoZSBwcmVkaWNhdGUgbmV2ZXIgcmV0dXJucyB0cnVlIHRoZSB0cmFuc2R1Y3Rpb24gaXNcXG4gIHVuYWZmZWN0ZWQuXCJcbiB7OmFkZGVkIFwiMS45XCJ9XG4gKFtwcmVkXSAoaGFsdC13aGVuIHByZWQgbmlsKSlcbiAoW3ByZWQgcmV0Zl1cbiAgKGZuXG4gICBbcmZdXG4gICAoZm5cbiAgICAoW10gKHJmKSlcbiAgICAoW3Jlc3VsdF1cbiAgICAgKGlmXG4gICAgICAoYW5kIChtYXA/IHJlc3VsdCkgKGNvbnRhaW5zPyByZXN1bHQgOmNsanMuY29yZS9oYWx0KSlcbiAgICAgICg6Y2xqcy5jb3JlL2hhbHQgcmVzdWx0KVxuICAgICAgKHJmIHJlc3VsdCkpKVxuICAgIChbcmVzdWx0IGlucHV0XVxuICAgICAoaWZcbiAgICAgIChwcmVkIGlucHV0KVxuICAgICAgKHJlZHVjZWRcbiAgICAgICB7OmNsanMuY29yZS9oYWx0IChpZiByZXRmIChyZXRmIChyZiByZXN1bHQpIGlucHV0KSBpbnB1dCl9KVxuICAgICAgKHJmIHJlc3VsdCBpbnB1dCkpKSkpKSlcbiJ9IHs6c3ltIC1jb250YWlucy1rZXk/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIGsgaXMgYSBrZXkgaW4gY29sbC4iLCA6YXJnbGlzdHMgKFtjb2xsIGtdKX0sIDpwcm90b2NvbCBJQXNzb2NpYXRpdmV9IHs6c3ltIHJlbW92ZS13YXRjaCwgOm1ldGEgezpkb2MgIlJlbW92ZXMgYSB3YXRjaCAoc2V0IGJ5IGFkZC13YXRjaCkgZnJvbSBhIHJlZmVyZW5jZSIsIDphcmdsaXN0cyAoW2lyZWYga2V5XSl9LCA6c291cmNlICIoZGVmblxuIHJlbW92ZS13YXRjaFxuIFwiUmVtb3ZlcyBhIHdhdGNoIChzZXQgYnkgYWRkLXdhdGNoKSBmcm9tIGEgcmVmZXJlbmNlXCJcbiBbaXJlZiBrZXldXG4gKC1yZW1vdmUtd2F0Y2ggaXJlZiBrZXkpXG4gaXJlZilcbiJ9IHs6c3ltIGV4LWluZm8sIDptZXRhIHs6ZG9jICJDcmVhdGUgYW4gaW5zdGFuY2Ugb2YgRXhjZXB0aW9uSW5mbywgYW4gRXJyb3IgdHlwZSB0aGF0IGNhcnJpZXMgYVxuICBtYXAgb2YgYWRkaXRpb25hbCBkYXRhLiIsIDphcmdsaXN0cyBbW21zZyBkYXRhXSBbbXNnIGRhdGEgY2F1c2VdXX0sIDpzb3VyY2UgIihkZWZuXG4gZXgtaW5mb1xuIFwiQ3JlYXRlIGFuIGluc3RhbmNlIG9mIEV4Y2VwdGlvbkluZm8sIGFuIEVycm9yIHR5cGUgdGhhdCBjYXJyaWVzIGFcXG4gIG1hcCBvZiBhZGRpdGlvbmFsIGRhdGEuXCJcbiAoW21zZyBkYXRhXSAoZXgtaW5mbyBtc2cgZGF0YSBuaWwpKVxuIChbbXNnIGRhdGEgY2F1c2VdIChFeGNlcHRpb25JbmZvLiBtc2cgZGF0YSBjYXVzZSkpKVxuIn0gezpzeW0gaWZuPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiBmIHJldHVybnMgdHJ1ZSBmb3IgZm4/IG9yIHNhdGlzZmllcyBJRm4uIiwgOmFyZ2xpc3RzIChbZl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpZm4/XG4gXCJSZXR1cm5zIHRydWUgaWYgZiByZXR1cm5zIHRydWUgZm9yIGZuPyBvciBzYXRpc2ZpZXMgSUZuLlwiXG4gW2ZdXG4gKG9yIChmbj8gZikgKHNhdGlzZmllcz8gSUZuIGYpKSlcbiJ9IHs6c3ltIElBdG9tLCA6bWV0YSB7OmRvYyAiTWFya2VyIHByb3RvY29sIGluZGljYXRpbmcgYW4gYXRvbS4ifSwgOm1ldGhvZHMgKCl9IHs6c3ltIG5hdC1pbnQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJuIHRydWUgaWYgeCBzYXRpc2ZpZXMgaW50PyBhbmQgaXMgYSBuYXR1cmFsIGludGVnZXIgdmFsdWUuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBuYXQtaW50P1xuIFwiUmV0dXJuIHRydWUgaWYgeCBzYXRpc2ZpZXMgaW50PyBhbmQgaXMgYSBuYXR1cmFsIGludGVnZXIgdmFsdWUuXCJcbiBbeF1cbiAoY29uZFxuICAoaW50ZWdlcj8geClcbiAgKG5vdCAobmVnPyB4KSlcbiAgKGluc3RhbmNlPyBnb29nLm1hdGguSW50ZWdlciB4KVxuICAobm90ICguaXNOZWdhdGl2ZSB4KSlcbiAgKGluc3RhbmNlPyBnb29nLm1hdGguTG9uZyB4KVxuICAobm90ICguaXNOZWdhdGl2ZSB4KSlcbiAgOmVsc2VcbiAgZmFsc2UpKVxuIn0gezpzeW0gSVdhdGNoYWJsZSwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciB0eXBlcyB0aGF0IGNhbiBiZSB3YXRjaGVkLiBDdXJyZW50bHkgb25seSBpbXBsZW1lbnRlZCBieSBBdG9tLiJ9LCA6bWV0aG9kcyAoLWFkZC13YXRjaCAtbm90aWZ5LXdhdGNoZXMgLXJlbW92ZS13YXRjaCl9IHs6c3ltIHN1YnZlYywgOm1ldGEgezpkb2MgIlJldHVybnMgYSBwZXJzaXN0ZW50IHZlY3RvciBvZiB0aGUgaXRlbXMgaW4gdmVjdG9yIGZyb21cbiAgc3RhcnQgKGluY2x1c2l2ZSkgdG8gZW5kIChleGNsdXNpdmUpLiAgSWYgZW5kIGlzIG5vdCBzdXBwbGllZCxcbiAgZGVmYXVsdHMgdG8gKGNvdW50IHZlY3RvcikuIFRoaXMgb3BlcmF0aW9uIGlzIE8oMSkgYW5kIHZlcnkgZmFzdCwgYXNcbiAgdGhlIHJlc3VsdGluZyB2ZWN0b3Igc2hhcmVzIHN0cnVjdHVyZSB3aXRoIHRoZSBvcmlnaW5hbCBhbmQgbm9cbiAgdHJpbW1pbmcgaXMgZG9uZS4iLCA6YXJnbGlzdHMgW1t2IHN0YXJ0XSBbdiBzdGFydCBlbmRdXX0sIDpzb3VyY2UgIihkZWZuXG4gc3VidmVjXG4gXCJSZXR1cm5zIGEgcGVyc2lzdGVudCB2ZWN0b3Igb2YgdGhlIGl0ZW1zIGluIHZlY3RvciBmcm9tXFxuICBzdGFydCAoaW5jbHVzaXZlKSB0byBlbmQgKGV4Y2x1c2l2ZSkuICBJZiBlbmQgaXMgbm90IHN1cHBsaWVkLFxcbiAgZGVmYXVsdHMgdG8gKGNvdW50IHZlY3RvcikuIFRoaXMgb3BlcmF0aW9uIGlzIE8oMSkgYW5kIHZlcnkgZmFzdCwgYXNcXG4gIHRoZSByZXN1bHRpbmcgdmVjdG9yIHNoYXJlcyBzdHJ1Y3R1cmUgd2l0aCB0aGUgb3JpZ2luYWwgYW5kIG5vXFxuICB0cmltbWluZyBpcyBkb25lLlwiXG4gKFt2IHN0YXJ0XSAoc3VidmVjIHYgc3RhcnQgKGNvdW50IHYpKSlcbiAoW3Ygc3RhcnQgZW5kXVxuICAoYXNzZXJ0IChhbmQgKG5vdCAobmlsPyBzdGFydCkpIChub3QgKG5pbD8gZW5kKSkpKVxuICAoYnVpbGQtc3VidmVjIG5pbCB2IChpbnQgc3RhcnQpIChpbnQgZW5kKSBuaWwpKSlcbiJ9IHs6c3ltIC1wb3AhLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0Y29sbCB3aXRoIHRoZSBsYXN0IGl0ZW0gcmVtb3ZlZCBmcm9tIGl0LiIsIDphcmdsaXN0cyAoW3Rjb2xsXSl9LCA6cHJvdG9jb2wgSVRyYW5zaWVudFZlY3Rvcn0gezpzeW0gcGFydGlhbCwgOm1ldGEgezpkb2MgIlRha2VzIGEgZnVuY3Rpb24gZiBhbmQgZmV3ZXIgdGhhbiB0aGUgbm9ybWFsIGFyZ3VtZW50cyB0byBmLCBhbmRcbiAgcmV0dXJucyBhIGZuIHRoYXQgdGFrZXMgYSB2YXJpYWJsZSBudW1iZXIgb2YgYWRkaXRpb25hbCBhcmdzLiBXaGVuXG4gIGNhbGxlZCwgdGhlIHJldHVybmVkIGZ1bmN0aW9uIGNhbGxzIGYgd2l0aCBhcmdzICsgYWRkaXRpb25hbCBhcmdzLiIsIDphcmdsaXN0cyBbW2ZdIFtmIGFyZzFdIFtmIGFyZzEgYXJnMl0gW2YgYXJnMSBhcmcyIGFyZzNdIFtmIGFyZzEgYXJnMiBhcmczICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBwYXJ0aWFsXG4gXCJUYWtlcyBhIGZ1bmN0aW9uIGYgYW5kIGZld2VyIHRoYW4gdGhlIG5vcm1hbCBhcmd1bWVudHMgdG8gZiwgYW5kXFxuICByZXR1cm5zIGEgZm4gdGhhdCB0YWtlcyBhIHZhcmlhYmxlIG51bWJlciBvZiBhZGRpdGlvbmFsIGFyZ3MuIFdoZW5cXG4gIGNhbGxlZCwgdGhlIHJldHVybmVkIGZ1bmN0aW9uIGNhbGxzIGYgd2l0aCBhcmdzICsgYWRkaXRpb25hbCBhcmdzLlwiXG4gKFtmXSBmKVxuIChbZiBhcmcxXVxuICAoZm5cbiAgIChbXSAoZiBhcmcxKSlcbiAgIChbeF0gKGYgYXJnMSB4KSlcbiAgIChbeCB5XSAoZiBhcmcxIHggeSkpXG4gICAoW3ggeSB6XSAoZiBhcmcxIHggeSB6KSlcbiAgIChbeCB5IHogJiBhcmdzXSAoYXBwbHkgZiBhcmcxIHggeSB6IGFyZ3MpKSkpXG4gKFtmIGFyZzEgYXJnMl1cbiAgKGZuXG4gICAoW10gKGYgYXJnMSBhcmcyKSlcbiAgIChbeF0gKGYgYXJnMSBhcmcyIHgpKVxuICAgKFt4IHldIChmIGFyZzEgYXJnMiB4IHkpKVxuICAgKFt4IHkgel0gKGYgYXJnMSBhcmcyIHggeSB6KSlcbiAgIChbeCB5IHogJiBhcmdzXSAoYXBwbHkgZiBhcmcxIGFyZzIgeCB5IHogYXJncykpKSlcbiAoW2YgYXJnMSBhcmcyIGFyZzNdXG4gIChmblxuICAgKFtdIChmIGFyZzEgYXJnMiBhcmczKSlcbiAgIChbeF0gKGYgYXJnMSBhcmcyIGFyZzMgeCkpXG4gICAoW3ggeV0gKGYgYXJnMSBhcmcyIGFyZzMgeCB5KSlcbiAgIChbeCB5IHpdIChmIGFyZzEgYXJnMiBhcmczIHggeSB6KSlcbiAgIChbeCB5IHogJiBhcmdzXSAoYXBwbHkgZiBhcmcxIGFyZzIgYXJnMyB4IHkgeiBhcmdzKSkpKVxuIChbZiBhcmcxIGFyZzIgYXJnMyAmIG1vcmVdXG4gIChmbiBbJiBhcmdzXSAoYXBwbHkgZiBhcmcxIGFyZzIgYXJnMyAoY29uY2F0IG1vcmUgYXJncykpKSkpXG4ifSB7OnN5bSBjaHVua2VkLXNlcT8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IHNhdGlzZmllcyBJQ2h1bmtlZFNlcS4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGNodW5rZWQtc2VxP1xuIFwiUmV0dXJuIHRydWUgaWYgeCBzYXRpc2ZpZXMgSUNodW5rZWRTZXEuXCJcbiBbeF1cbiAoaW1wbGVtZW50cz8gSUNodW5rZWRTZXEgeCkpXG4ifSB7OnN5bSByZXBsaWNhdGUsIDptZXRhIHs6ZG9jICJERVBSRUNBVEVEOiBVc2UgJ3JlcGVhdCcgaW5zdGVhZC5cbiAgUmV0dXJucyBhIGxhenkgc2VxIG9mIG4geHMuIiwgOmFyZ2xpc3RzIChbbiB4XSl9LCA6c291cmNlICIoZGVmblxuIHJlcGxpY2F0ZVxuIFwiREVQUkVDQVRFRDogVXNlICdyZXBlYXQnIGluc3RlYWQuXFxuICBSZXR1cm5zIGEgbGF6eSBzZXEgb2YgbiB4cy5cIlxuIFtuIHhdXG4gKHRha2UgbiAocmVwZWF0IHgpKSlcbiJ9IHs6c3ltIG1pbi1rZXksIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSB4IGZvciB3aGljaCAoayB4KSwgYSBudW1iZXIsIGlzIGxlYXN0LlxuXG4gIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBzdWNoIHhzLCB0aGUgbGFzdCBvbmUgaXMgcmV0dXJuZWQuIiwgOmFyZ2xpc3RzIFtbayB4XSBbayB4IHldIFtrIHggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gbWluLWtleVxuIFwiUmV0dXJucyB0aGUgeCBmb3Igd2hpY2ggKGsgeCksIGEgbnVtYmVyLCBpcyBsZWFzdC5cXG5cXG4gIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBzdWNoIHhzLCB0aGUgbGFzdCBvbmUgaXMgcmV0dXJuZWQuXCJcbiAoW2sgeF0geClcbiAoW2sgeCB5XSAoaWYgKDwgKGsgeCkgKGsgeSkpIHggeSkpXG4gKFtrIHggeSAmIG1vcmVdXG4gIChyZWR1Y2VcbiAgIChmbiogW3AxX180NTQyNSMgcDJfXzQ1NDI2I10gKG1pbi1rZXkgayBwMV9fNDU0MjUjIHAyX180NTQyNiMpKVxuICAgKG1pbi1rZXkgayB4IHkpXG4gICBtb3JlKSkpXG4ifSB7OnN5bSByZWR1Y2VkLCA6bWV0YSB7OmRvYyAiV3JhcHMgeCBpbiBhIHdheSBzdWNoIHRoYXQgYSByZWR1Y2Ugd2lsbCB0ZXJtaW5hdGUgd2l0aCB0aGUgdmFsdWUgeCIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVkdWNlZFxuIFwiV3JhcHMgeCBpbiBhIHdheSBzdWNoIHRoYXQgYSByZWR1Y2Ugd2lsbCB0ZXJtaW5hdGUgd2l0aCB0aGUgdmFsdWUgeFwiXG4gW3hdXG4gKFJlZHVjZWQuIHgpKVxuIn0gezpzeW0gcmUtbWF0Y2hlcywgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHJlc3VsdCBvZiAocmUtZmluZCByZSBzKSBpZiByZSBmdWxseSBtYXRjaGVzIHMuIiwgOmFyZ2xpc3RzIChbcmUgc10pfSwgOnNvdXJjZSAiKGRlZm5cbiByZS1tYXRjaGVzXG4gXCJSZXR1cm5zIHRoZSByZXN1bHQgb2YgKHJlLWZpbmQgcmUgcykgaWYgcmUgZnVsbHkgbWF0Y2hlcyBzLlwiXG4gW3JlIHNdXG4gKGlmXG4gIChzdHJpbmc/IHMpXG4gIChsZXRcbiAgIFttYXRjaGVzICguZXhlYyByZSBzKV1cbiAgICh3aGVuXG4gICAgKGFuZCAobm90IChuaWw/IG1hdGNoZXMpKSAoPSAoYWdldCBtYXRjaGVzIDApIHMpKVxuICAgIChpZiAoPT0gKGNvdW50IG1hdGNoZXMpIDEpIChhZ2V0IG1hdGNoZXMgMCkgKHZlYyBtYXRjaGVzKSkpKVxuICAodGhyb3cgKGpzL1R5cGVFcnJvci4gXCJyZS1tYXRjaGVzIG11c3QgbWF0Y2ggYWdhaW5zdCBhIHN0cmluZy5cIikpKSlcbiJ9IHs6c3ltIGFycmF5LW1hcCwgOm1ldGEgezpkb2MgImtleXZhbCA9PiBrZXkgdmFsXG4gIFJldHVybnMgYSBuZXcgYXJyYXkgbWFwIHdpdGggc3VwcGxpZWQgbWFwcGluZ3MuIiwgOmFyZ2xpc3RzIChbJiBrZXl2YWxzXSl9LCA6c291cmNlICIoZGVmblxuIGFycmF5LW1hcFxuIFwia2V5dmFsID0+IGtleSB2YWxcXG4gIFJldHVybnMgYSBuZXcgYXJyYXkgbWFwIHdpdGggc3VwcGxpZWQgbWFwcGluZ3MuXCJcbiBbJiBrZXl2YWxzXVxuIChsZXRcbiAgW2FyclxuICAgKGlmXG4gICAgKGFuZCAoaW5zdGFuY2U/IEluZGV4ZWRTZXEga2V5dmFscykgKHplcm8/ICguLWkga2V5dmFscykpKVxuICAgICguLWFyciBrZXl2YWxzKVxuICAgIChpbnRvLWFycmF5IGtleXZhbHMpKV1cbiAgKC5jcmVhdGVBc0lmQnlBc3NvYyBQZXJzaXN0ZW50QXJyYXlNYXAgYXJyKSkpXG4ifSB7OnN5bSBJVHJhbnNpZW50U2V0LCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFkZGluZyBzZXQgZnVuY3Rpb25hbGl0eSB0byBhIHRyYW5zaWVudCBjb2xsZWN0aW9uLiJ9LCA6bWV0aG9kcyAoLWRpc2pvaW4hKX0gezpzeW0gdW5jaGVja2VkLWJ5dGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gdW5jaGVja2VkLWJ5dGUgW3hdIHgpXG4ifSB7OnN5bSBldmVyeS1wcmVkLCA6bWV0YSB7OmRvYyAiVGFrZXMgYSBzZXQgb2YgcHJlZGljYXRlcyBhbmQgcmV0dXJucyBhIGZ1bmN0aW9uIGYgdGhhdCByZXR1cm5zIHRydWUgaWYgYWxsIG9mIGl0c1xuICBjb21wb3NpbmcgcHJlZGljYXRlcyByZXR1cm4gYSBsb2dpY2FsIHRydWUgdmFsdWUgYWdhaW5zdCBhbGwgb2YgaXRzIGFyZ3VtZW50cywgZWxzZSBpdCByZXR1cm5zXG4gIGZhbHNlLiBOb3RlIHRoYXQgZiBpcyBzaG9ydC1jaXJjdWl0aW5nIGluIHRoYXQgaXQgd2lsbCBzdG9wIGV4ZWN1dGlvbiBvbiB0aGUgZmlyc3RcbiAgYXJndW1lbnQgdGhhdCB0cmlnZ2VycyBhIGxvZ2ljYWwgZmFsc2UgcmVzdWx0IGFnYWluc3QgdGhlIG9yaWdpbmFsIHByZWRpY2F0ZXMuIiwgOmFyZ2xpc3RzIFtbcF0gW3AxIHAyXSBbcDEgcDIgcDNdIFtwMSBwMiBwMyAmIHBzXV19LCA6c291cmNlICIoZGVmblxuIGV2ZXJ5LXByZWRcbiBcIlRha2VzIGEgc2V0IG9mIHByZWRpY2F0ZXMgYW5kIHJldHVybnMgYSBmdW5jdGlvbiBmIHRoYXQgcmV0dXJucyB0cnVlIGlmIGFsbCBvZiBpdHNcXG4gIGNvbXBvc2luZyBwcmVkaWNhdGVzIHJldHVybiBhIGxvZ2ljYWwgdHJ1ZSB2YWx1ZSBhZ2FpbnN0IGFsbCBvZiBpdHMgYXJndW1lbnRzLCBlbHNlIGl0IHJldHVybnNcXG4gIGZhbHNlLiBOb3RlIHRoYXQgZiBpcyBzaG9ydC1jaXJjdWl0aW5nIGluIHRoYXQgaXQgd2lsbCBzdG9wIGV4ZWN1dGlvbiBvbiB0aGUgZmlyc3RcXG4gIGFyZ3VtZW50IHRoYXQgdHJpZ2dlcnMgYSBsb2dpY2FsIGZhbHNlIHJlc3VsdCBhZ2FpbnN0IHRoZSBvcmlnaW5hbCBwcmVkaWNhdGVzLlwiXG4gKFtwXVxuICAoZm5cbiAgIGVwMVxuICAgKFtdIHRydWUpXG4gICAoW3hdIChib29sZWFuIChwIHgpKSlcbiAgIChbeCB5XSAoYm9vbGVhbiAoYW5kIChwIHgpIChwIHkpKSkpXG4gICAoW3ggeSB6XSAoYm9vbGVhbiAoYW5kIChwIHgpIChwIHkpIChwIHopKSkpXG4gICAoW3ggeSB6ICYgYXJnc10gKGJvb2xlYW4gKGFuZCAoZXAxIHggeSB6KSAoZXZlcnk/IHAgYXJncykpKSkpKVxuIChbcDEgcDJdXG4gIChmblxuICAgZXAyXG4gICAoW10gdHJ1ZSlcbiAgIChbeF0gKGJvb2xlYW4gKGFuZCAocDEgeCkgKHAyIHgpKSkpXG4gICAoW3ggeV0gKGJvb2xlYW4gKGFuZCAocDEgeCkgKHAxIHkpIChwMiB4KSAocDIgeSkpKSlcbiAgIChbeCB5IHpdIChib29sZWFuIChhbmQgKHAxIHgpIChwMSB5KSAocDEgeikgKHAyIHgpIChwMiB5KSAocDIgeikpKSlcbiAgIChbeCB5IHogJiBhcmdzXVxuICAgIChib29sZWFuXG4gICAgIChhbmRcbiAgICAgIChlcDIgeCB5IHopXG4gICAgICAoZXZlcnk/XG4gICAgICAgKGZuKiBbcDFfXzQ1NDAwI10gKGFuZCAocDEgcDFfXzQ1NDAwIykgKHAyIHAxX180NTQwMCMpKSlcbiAgICAgICBhcmdzKSkpKSkpXG4gKFtwMSBwMiBwM11cbiAgKGZuXG4gICBlcDNcbiAgIChbXSB0cnVlKVxuICAgKFt4XSAoYm9vbGVhbiAoYW5kIChwMSB4KSAocDIgeCkgKHAzIHgpKSkpXG4gICAoW3ggeV0gKGJvb2xlYW4gKGFuZCAocDEgeCkgKHAyIHgpIChwMyB4KSAocDEgeSkgKHAyIHkpIChwMyB5KSkpKVxuICAgKFt4IHkgel1cbiAgICAoYm9vbGVhblxuICAgICAoYW5kXG4gICAgICAocDEgeClcbiAgICAgIChwMiB4KVxuICAgICAgKHAzIHgpXG4gICAgICAocDEgeSlcbiAgICAgIChwMiB5KVxuICAgICAgKHAzIHkpXG4gICAgICAocDEgeilcbiAgICAgIChwMiB6KVxuICAgICAgKHAzIHopKSkpXG4gICAoW3ggeSB6ICYgYXJnc11cbiAgICAoYm9vbGVhblxuICAgICAoYW5kXG4gICAgICAoZXAzIHggeSB6KVxuICAgICAgKGV2ZXJ5P1xuICAgICAgIChmbipcbiAgICAgICAgW3AxX180NTQwMSNdXG4gICAgICAgIChhbmQgKHAxIHAxX180NTQwMSMpIChwMiBwMV9fNDU0MDEjKSAocDMgcDFfXzQ1NDAxIykpKVxuICAgICAgIGFyZ3MpKSkpKSlcbiAoW3AxIHAyIHAzICYgcHNdXG4gIChsZXRcbiAgIFtwcyAobGlzdCogcDEgcDIgcDMgcHMpXVxuICAgKGZuXG4gICAgZXBuXG4gICAgKFtdIHRydWUpXG4gICAgKFt4XSAoZXZlcnk/IChmbiogW3AxX180NTQwMiNdIChwMV9fNDU0MDIjIHgpKSBwcykpXG4gICAgKFt4IHldXG4gICAgIChldmVyeT9cbiAgICAgIChmbiogW3AxX180NTQwMyNdIChhbmQgKHAxX180NTQwMyMgeCkgKHAxX180NTQwMyMgeSkpKVxuICAgICAgcHMpKVxuICAgIChbeCB5IHpdXG4gICAgIChldmVyeT9cbiAgICAgIChmbipcbiAgICAgICBbcDFfXzQ1NDA0I11cbiAgICAgICAoYW5kIChwMV9fNDU0MDQjIHgpIChwMV9fNDU0MDQjIHkpIChwMV9fNDU0MDQjIHopKSlcbiAgICAgIHBzKSlcbiAgICAoW3ggeSB6ICYgYXJnc11cbiAgICAgKGJvb2xlYW5cbiAgICAgIChhbmRcbiAgICAgICAoZXBuIHggeSB6KVxuICAgICAgIChldmVyeT8gKGZuKiBbcDFfXzQ1NDA1I10gKGV2ZXJ5PyBwMV9fNDU0MDUjIGFyZ3MpKSBwcykpKSkpKSkpXG4ifSB7OnN5bSBrZXlzLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHNlcXVlbmNlIG9mIHRoZSBtYXAncyBrZXlzLCBpbiB0aGUgc2FtZSBvcmRlciBhcyAoc2VxIG1hcCkuIiwgOmFyZ2xpc3RzIChbbWFwXSl9LCA6c291cmNlICIoZGVmblxuIGtleXNcbiBcIlJldHVybnMgYSBzZXF1ZW5jZSBvZiB0aGUgbWFwJ3Mga2V5cywgaW4gdGhlIHNhbWUgb3JkZXIgYXMgKHNlcSBtYXApLlwiXG4gW21hcF1cbiAod2hlbi1sZXQgW21zZXEgKHNlcSBtYXApXSAoS2V5U2VxLiBtc2VxIG5pbCkpKVxuIn0gezpzeW0gbWlzc2luZy1wcm90b2NvbCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwcm90byBvYmpdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWlzc2luZy1wcm90b2NvbFxuIFtwcm90byBvYmpdXG4gKGxldFxuICBbdHlcbiAgICh0eXBlIG9iailcbiAgIHR5XG4gICAoaWZcbiAgICAoYW5kIHR5ICguLWNsanMkbGFuZyR0eXBlIHR5KSlcbiAgICAoLi1jbGpzJGxhbmckY3RvclN0ciB0eSlcbiAgICAoZ29vZy90eXBlT2Ygb2JqKSldXG4gIChqcy9FcnJvci5cbiAgICguam9pblxuICAgIChhcnJheVxuICAgICBcIk5vIHByb3RvY29sIG1ldGhvZCBcIlxuICAgICBwcm90b1xuICAgICBcIiBkZWZpbmVkIGZvciB0eXBlIFwiXG4gICAgIHR5XG4gICAgIFwiOiBcIlxuICAgICBvYmopXG4gICAgXCJcIikpKSlcbiJ9IHs6c3ltIGxvYWQtZmlsZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmaWxlXSl9LCA6c291cmNlICIoZGVmblxuIGxvYWQtZmlsZVxuIFtmaWxlXVxuICh3aGVuLW5vdCBqcy9DT01QSUxFRCAoY2xqcy5jb3JlL2xvYWQtZmlsZSogZmlsZSkpKVxuIn0gezpzeW0gZGlzdGluY3Q/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIG5vIHR3byBvZiB0aGUgYXJndW1lbnRzIGFyZSA9IiwgOmFyZ2xpc3RzIFtbeF0gW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gZGlzdGluY3Q/XG4gXCJSZXR1cm5zIHRydWUgaWYgbm8gdHdvIG9mIHRoZSBhcmd1bWVudHMgYXJlID1cIlxuIChbeF0gdHJ1ZSlcbiAoW3ggeV0gKG5vdCAoPSB4IHkpKSlcbiAoW3ggeSAmIG1vcmVdXG4gIChpZlxuICAgKG5vdCAoPSB4IHkpKVxuICAgKGxvb3BcbiAgICBbcyAje3ggeX0geHMgbW9yZV1cbiAgICAobGV0XG4gICAgIFt4IChmaXJzdCB4cykgZXRjIChuZXh0IHhzKV1cbiAgICAgKGlmIHhzIChpZiAoY29udGFpbnM/IHMgeCkgZmFsc2UgKHJlY3VyIChjb25qIHMgeCkgZXRjKSkgdHJ1ZSkpKVxuICAgZmFsc2UpKSlcbiJ9IHs6c3ltIHBvcy1pbnQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJuIHRydWUgaWYgeCBzYXRpc2ZpZXMgaW50PyBhbmQgaXMgcG9zaXRpdmUuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwb3MtaW50P1xuIFwiUmV0dXJuIHRydWUgaWYgeCBzYXRpc2ZpZXMgaW50PyBhbmQgaXMgcG9zaXRpdmUuXCJcbiBbeF1cbiAoY29uZFxuICAoaW50ZWdlcj8geClcbiAgKHBvcz8geClcbiAgKGluc3RhbmNlPyBnb29nLm1hdGguSW50ZWdlciB4KVxuICAoYW5kIChub3QgKC5pc05lZ2F0aXZlIHgpKSAobm90ICguaXNaZXJvIHgpKSlcbiAgKGluc3RhbmNlPyBnb29nLm1hdGguTG9uZyB4KVxuICAoYW5kIChub3QgKC5pc05lZ2F0aXZlIHgpKSAobm90ICguaXNaZXJvIHgpKSlcbiAgOmVsc2VcbiAgZmFsc2UpKVxuIn0gezpzeW0gdW5jaGVja2VkLXNob3J0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIHVuY2hlY2tlZC1zaG9ydCBbeF0geClcbiJ9IHs6c3ltIG1ldGhvZHMsIDptZXRhIHs6ZG9jICJHaXZlbiBhIG11bHRpbWV0aG9kLCByZXR1cm5zIGEgbWFwIG9mIGRpc3BhdGNoIHZhbHVlcyAtPiBkaXNwYXRjaCBmbnMiLCA6YXJnbGlzdHMgKFttdWx0aWZuXSl9LCA6c291cmNlICIoZGVmblxuIG1ldGhvZHNcbiBcIkdpdmVuIGEgbXVsdGltZXRob2QsIHJldHVybnMgYSBtYXAgb2YgZGlzcGF0Y2ggdmFsdWVzIC0+IGRpc3BhdGNoIGZuc1wiXG4gW211bHRpZm5dXG4gKC1tZXRob2RzIG11bHRpZm4pKVxuIn0gezpzeW0gb2RkPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiBuIGlzIG9kZCwgdGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiBuIGlzIG5vdCBhbiBpbnRlZ2VyIiwgOmFyZ2xpc3RzIChbbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBvZGQ/XG4gXCJSZXR1cm5zIHRydWUgaWYgbiBpcyBvZGQsIHRocm93cyBhbiBleGNlcHRpb24gaWYgbiBpcyBub3QgYW4gaW50ZWdlclwiXG4gW25dXG4gKG5vdCAoZXZlbj8gbikpKVxuIn0gezpzeW0gLWdldC1tZXRob2QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbWYgZGlzcGF0Y2gtdmFsXSl9LCA6cHJvdG9jb2wgSU11bHRpRm59IHs6c3ltIGZyZXF1ZW5jaWVzLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG1hcCBmcm9tIGRpc3RpbmN0IGl0ZW1zIGluIGNvbGwgdG8gdGhlIG51bWJlciBvZiB0aW1lc1xuICB0aGV5IGFwcGVhci4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIGZyZXF1ZW5jaWVzXG4gXCJSZXR1cm5zIGEgbWFwIGZyb20gZGlzdGluY3QgaXRlbXMgaW4gY29sbCB0byB0aGUgbnVtYmVyIG9mIHRpbWVzXFxuICB0aGV5IGFwcGVhci5cIlxuIFtjb2xsXVxuIChwZXJzaXN0ZW50IVxuICAocmVkdWNlXG4gICAoZm4gW2NvdW50cyB4XSAoYXNzb2MhIGNvdW50cyB4IChpbmMgKGdldCBjb3VudHMgeCAwKSkpKVxuICAgKHRyYW5zaWVudCB7fSlcbiAgIGNvbGwpKSlcbiJ9IHs6c3ltIHJlZHVjZWFibGU/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIGNvbGwgc2F0aXNmaWVzIElSZWR1Y2UiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHJlZHVjZWFibGU/XG4gXCJSZXR1cm5zIHRydWUgaWYgY29sbCBzYXRpc2ZpZXMgSVJlZHVjZVwiXG4gW3hdXG4gKHNhdGlzZmllcz8gSVJlZHVjZSB4KSlcbiJ9IHs6c3ltIHN0cmluZy1oYXNoLWNhY2hlLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBzdHJpbmctaGFzaC1jYWNoZSAoanMtb2JqKSlcbiJ9IHs6c3ltIHJzdWJzZXEsIDptZXRhIHs6ZG9jICJzYyBtdXN0IGJlIGEgc29ydGVkIGNvbGxlY3Rpb24sIHRlc3Qocykgb25lIG9mIDwsIDw9LCA+IG9yXG4gID49LiBSZXR1cm5zIGEgcmV2ZXJzZSBzZXEgb2YgdGhvc2UgZW50cmllcyB3aXRoIGtleXMgZWsgZm9yXG4gIHdoaWNoICh0ZXN0ICguLiBzYyBjb21wYXJhdG9yIChjb21wYXJlIGVrIGtleSkpIDApIGlzIHRydWUiLCA6YXJnbGlzdHMgW1tzYyB0ZXN0IGtleV0gW3NjIHN0YXJ0LXRlc3Qgc3RhcnQta2V5IGVuZC10ZXN0IGVuZC1rZXldXX0sIDpzb3VyY2UgIihkZWZuXG4gcnN1YnNlcVxuIFwic2MgbXVzdCBiZSBhIHNvcnRlZCBjb2xsZWN0aW9uLCB0ZXN0KHMpIG9uZSBvZiA8LCA8PSwgPiBvclxcbiAgPj0uIFJldHVybnMgYSByZXZlcnNlIHNlcSBvZiB0aG9zZSBlbnRyaWVzIHdpdGgga2V5cyBlayBmb3JcXG4gIHdoaWNoICh0ZXN0ICguLiBzYyBjb21wYXJhdG9yIChjb21wYXJlIGVrIGtleSkpIDApIGlzIHRydWVcIlxuIChbc2MgdGVzdCBrZXldXG4gIChsZXRcbiAgIFtpbmNsdWRlIChtay1ib3VuZC1mbiBzYyB0ZXN0IGtleSldXG4gICAoaWZcbiAgICAoI3s8IDw9fSB0ZXN0KVxuICAgICh3aGVuLWxldFxuICAgICBbW2UgOmFzIHNdICgtc29ydGVkLXNlcS1mcm9tIHNjIGtleSBmYWxzZSldXG4gICAgIChpZiAoaW5jbHVkZSBlKSBzIChuZXh0IHMpKSlcbiAgICAodGFrZS13aGlsZSBpbmNsdWRlICgtc29ydGVkLXNlcSBzYyBmYWxzZSkpKSkpXG4gKFtzYyBzdGFydC10ZXN0IHN0YXJ0LWtleSBlbmQtdGVzdCBlbmQta2V5XVxuICAod2hlbi1sZXRcbiAgIFtbZSA6YXMgc10gKC1zb3J0ZWQtc2VxLWZyb20gc2MgZW5kLWtleSBmYWxzZSldXG4gICAodGFrZS13aGlsZVxuICAgIChtay1ib3VuZC1mbiBzYyBzdGFydC10ZXN0IHN0YXJ0LWtleSlcbiAgICAoaWYgKChtay1ib3VuZC1mbiBzYyBlbmQtdGVzdCBlbmQta2V5KSBlKSBzIChuZXh0IHMpKSkpKSlcbiJ9IHs6c3ltIGluYywgOm1ldGEgezpkb2MgIlJldHVybnMgYSBudW1iZXIgb25lIGdyZWF0ZXIgdGhhbiBudW0uIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbmNcbiBcIlJldHVybnMgYSBudW1iZXIgb25lIGdyZWF0ZXIgdGhhbiBudW0uXCJcbiBbeF1cbiAoY2xqcy5jb3JlLysgeCAxKSlcbiJ9IHs6c3ltIHR5cGUtPnN0ciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0eV0pfSwgOnNvdXJjZSAiKGRlZm4gdHlwZS0+c3RyIFt0eV0gKGlmLWxldCBbcyAoLi1jbGpzJGxhbmckY3RvclN0ciB0eSldIHMgKHN0ciB0eSkpKVxuIn0gezpzeW0gZ2V0LW1ldGhvZCwgOm1ldGEgezpkb2MgIkdpdmVuIGEgbXVsdGltZXRob2QgYW5kIGEgZGlzcGF0Y2ggdmFsdWUsIHJldHVybnMgdGhlIGRpc3BhdGNoIGZuXG4gIHRoYXQgd291bGQgYXBwbHkgdG8gdGhhdCB2YWx1ZSwgb3IgbmlsIGlmIG5vbmUgYXBwbHkgYW5kIG5vIGRlZmF1bHQiLCA6YXJnbGlzdHMgKFttdWx0aWZuIGRpc3BhdGNoLXZhbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtbWV0aG9kXG4gXCJHaXZlbiBhIG11bHRpbWV0aG9kIGFuZCBhIGRpc3BhdGNoIHZhbHVlLCByZXR1cm5zIHRoZSBkaXNwYXRjaCBmblxcbiAgdGhhdCB3b3VsZCBhcHBseSB0byB0aGF0IHZhbHVlLCBvciBuaWwgaWYgbm9uZSBhcHBseSBhbmQgbm8gZGVmYXVsdFwiXG4gW211bHRpZm4gZGlzcGF0Y2gtdmFsXVxuICgtZ2V0LW1ldGhvZCBtdWx0aWZuIGRpc3BhdGNoLXZhbCkpXG4ifSB7OnN5bSB1dWlkPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiB1dWlkPyBbeF0gKGltcGxlbWVudHM/IElVVUlEIHgpKVxuIn0gezpzeW0gZXM2LWVudHJpZXMtaXRlcmF0b3IsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm4gZXM2LWVudHJpZXMtaXRlcmF0b3IgW2NvbGxdIChFUzZFbnRyaWVzSXRlcmF0b3IuIChzZXEgY29sbCkpKVxuIn0gezpzeW0gYml0LWNsZWFyLCA6bWV0YSB7OmRvYyAiQ2xlYXIgYml0IGF0IGluZGV4IG4iLCA6YXJnbGlzdHMgKFt4IG5dKX0sIDpzb3VyY2UgIihkZWZuIGJpdC1jbGVhciBcIkNsZWFyIGJpdCBhdCBpbmRleCBuXCIgW3ggbl0gKGNsanMuY29yZS9iaXQtY2xlYXIgeCBuKSlcbiJ9IHs6c3ltIGZpbHRlciwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIHRoZSBpdGVtcyBpbiBjb2xsIGZvciB3aGljaFxuICAocHJlZCBpdGVtKSByZXR1cm5zIGxvZ2ljYWwgdHJ1ZS4gcHJlZCBtdXN0IGJlIGZyZWUgb2Ygc2lkZS1lZmZlY3RzLlxuICBSZXR1cm5zIGEgdHJhbnNkdWNlciB3aGVuIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuIiwgOmFyZ2xpc3RzIFtbcHJlZF0gW3ByZWQgY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBmaWx0ZXJcbiBcIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIHRoZSBpdGVtcyBpbiBjb2xsIGZvciB3aGljaFxcbiAgKHByZWQgaXRlbSkgcmV0dXJucyBsb2dpY2FsIHRydWUuIHByZWQgbXVzdCBiZSBmcmVlIG9mIHNpZGUtZWZmZWN0cy5cXG4gIFJldHVybnMgYSB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC5cIlxuIChbcHJlZF1cbiAgKGZuXG4gICBbcmZdXG4gICAoZm5cbiAgICAoW10gKHJmKSlcbiAgICAoW3Jlc3VsdF0gKHJmIHJlc3VsdCkpXG4gICAgKFtyZXN1bHQgaW5wdXRdIChpZiAocHJlZCBpbnB1dCkgKHJmIHJlc3VsdCBpbnB1dCkgcmVzdWx0KSkpKSlcbiAoW3ByZWQgY29sbF1cbiAgKGxhenktc2VxXG4gICAod2hlbi1sZXRcbiAgICBbcyAoc2VxIGNvbGwpXVxuICAgIChpZlxuICAgICAoY2h1bmtlZC1zZXE/IHMpXG4gICAgIChsZXRcbiAgICAgIFtjIChjaHVuay1maXJzdCBzKSBzaXplIChjb3VudCBjKSBiIChjaHVuay1idWZmZXIgc2l6ZSldXG4gICAgICAoZG90aW1lc1xuICAgICAgIFtpIHNpemVdXG4gICAgICAgKHdoZW4gKHByZWQgKC1udGggYyBpKSkgKGNodW5rLWFwcGVuZCBiICgtbnRoIGMgaSkpKSlcbiAgICAgIChjaHVuay1jb25zIChjaHVuayBiKSAoZmlsdGVyIHByZWQgKGNodW5rLXJlc3QgcykpKSlcbiAgICAgKGxldFxuICAgICAgW2YgKGZpcnN0IHMpIHIgKHJlc3QgcyldXG4gICAgICAoaWYgKHByZWQgZikgKGNvbnMgZiAoZmlsdGVyIHByZWQgcikpIChmaWx0ZXIgcHJlZCByKSkpKSkpKSlcbiJ9IHs6c3ltIC1hc3NvYy1uISwgOm1ldGEgezpkb2MgIlJldHVybnMgdGNvbGwgd2l0aCB2YWx1ZSB2YWwgYWRkZWQgYXQgcG9zaXRpb24gbi4iLCA6YXJnbGlzdHMgKFt0Y29sbCBuIHZhbF0pfSwgOnByb3RvY29sIElUcmFuc2llbnRWZWN0b3J9IHs6c3ltIElXaXRoTWV0YSwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhZGRpbmcgbWV0YWRhdGEgdG8gYW4gb2JqZWN0LiJ9LCA6bWV0aG9kcyAoLXdpdGgtbWV0YSl9IHs6c3ltIGxpc3QsIDptZXRhIHs6ZG9jICJDcmVhdGVzIGEgbmV3IGxpc3QgY29udGFpbmluZyB0aGUgaXRlbXMuIiwgOmFyZ2xpc3RzIChbJiB4c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBsaXN0XG4gXCJDcmVhdGVzIGEgbmV3IGxpc3QgY29udGFpbmluZyB0aGUgaXRlbXMuXCJcbiBbJiB4c11cbiAobGV0XG4gIFthcnJcbiAgIChpZlxuICAgIChhbmQgKGluc3RhbmNlPyBJbmRleGVkU2VxIHhzKSAoemVybz8gKC4taSB4cykpKVxuICAgICguLWFyciB4cylcbiAgICAobGV0XG4gICAgIFthcnIgKGFycmF5KV1cbiAgICAgKGxvb3BcbiAgICAgIFt4cyB4c11cbiAgICAgIChpZi1ub3RcbiAgICAgICAobmlsPyB4cylcbiAgICAgICAoZG8gKC5wdXNoIGFyciAoLWZpcnN0IHhzKSkgKHJlY3VyICgtbmV4dCB4cykpKVxuICAgICAgIGFycikpKSldXG4gIChsb29wXG4gICBbaSAoYWxlbmd0aCBhcnIpIHIgKCldXG4gICAoaWYgKD4gaSAwKSAocmVjdXIgKGRlYyBpKSAoLWNvbmogciAoYWdldCBhcnIgKGRlYyBpKSkpKSByKSkpKVxuIn0gezpzeW0gKywgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHN1bSBvZiBudW1zLiAoKykgcmV0dXJucyAwLiIsIDphcmdsaXN0cyBbW10gW3hdIFt4IHldIFt4IHkgJiBtb3JlXV19LCA6c291cmNlICIoZGVmblxuICtcbiBcIlJldHVybnMgdGhlIHN1bSBvZiBudW1zLiAoKykgcmV0dXJucyAwLlwiXG4gKFtdIDApXG4gKFt4XSB4KVxuIChbeCB5XSAoY2xqcy5jb3JlLysgeCB5KSlcbiAoW3ggeSAmIG1vcmVdIChyZWR1Y2UgKyAoY2xqcy5jb3JlLysgeCB5KSBtb3JlKSkpXG4ifSB7OnN5bSBzcGxpdC13aXRoLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHZlY3RvciBvZiBbKHRha2Utd2hpbGUgcHJlZCBjb2xsKSAoZHJvcC13aGlsZSBwcmVkIGNvbGwpXSIsIDphcmdsaXN0cyAoW3ByZWQgY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzcGxpdC13aXRoXG4gXCJSZXR1cm5zIGEgdmVjdG9yIG9mIFsodGFrZS13aGlsZSBwcmVkIGNvbGwpIChkcm9wLXdoaWxlIHByZWQgY29sbCldXCJcbiBbcHJlZCBjb2xsXVxuIFsodGFrZS13aGlsZSBwcmVkIGNvbGwpIChkcm9wLXdoaWxlIHByZWQgY29sbCldKVxuIn0gezpzeW0gYXNldCwgOm1ldGEgezpkb2MgIlNldHMgdGhlIHZhbHVlIGF0IHRoZSBpbmRleC9pbmRpY2VzLiBXb3JrcyBvbiBKYXZhU2NyaXB0IGFycmF5cy5cbiAgUmV0dXJucyB2YWwuIiwgOmFyZ2xpc3RzIFtbYXJyYXkgaWR4IHZhbF0gW2FycmF5IGlkeCBpZHgyICYgaWR4dl1dfSwgOnNvdXJjZSAiKGRlZm5cbiBhc2V0XG4gXCJTZXRzIHRoZSB2YWx1ZSBhdCB0aGUgaW5kZXgvaW5kaWNlcy4gV29ya3Mgb24gSmF2YVNjcmlwdCBhcnJheXMuXFxuICBSZXR1cm5zIHZhbC5cIlxuIChbYXJyYXkgaWR4IHZhbF0gKGNsanMuY29yZS9hc2V0IGFycmF5IGlkeCB2YWwpKVxuIChbYXJyYXkgaWR4IGlkeDIgJiBpZHh2XSAoYXBwbHkgYXNldCAoYWdldCBhcnJheSBpZHgpIGlkeDIgaWR4dikpKVxuIn0gezpzeW0gaW50LXJvdGF0ZS1sZWZ0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ggbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbnQtcm90YXRlLWxlZnRcbiBbeCBuXVxuIChiaXQtb3IgKGJpdC1zaGlmdC1sZWZ0IHggbikgKHVuc2lnbmVkLWJpdC1zaGlmdC1yaWdodCB4ICgtIG4pKSkpXG4ifSB7OnN5bSBrZXl3b3JkLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIEtleXdvcmQgd2l0aCB0aGUgZ2l2ZW4gbmFtZXNwYWNlIGFuZCBuYW1lLiAgRG8gbm90IHVzZSA6XG4gIGluIHRoZSBrZXl3b3JkIHN0cmluZ3MsIGl0IHdpbGwgYmUgYWRkZWQgYXV0b21hdGljYWxseS4iLCA6YXJnbGlzdHMgW1tuYW1lXSBbbnMgbmFtZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBrZXl3b3JkXG4gXCJSZXR1cm5zIGEgS2V5d29yZCB3aXRoIHRoZSBnaXZlbiBuYW1lc3BhY2UgYW5kIG5hbWUuICBEbyBub3QgdXNlIDpcXG4gIGluIHRoZSBrZXl3b3JkIHN0cmluZ3MsIGl0IHdpbGwgYmUgYWRkZWQgYXV0b21hdGljYWxseS5cIlxuIChbbmFtZV1cbiAgKGNvbmRcbiAgIChrZXl3b3JkPyBuYW1lKVxuICAgbmFtZVxuICAgKHN5bWJvbD8gbmFtZSlcbiAgIChLZXl3b3JkLlxuICAgIChjbGpzLmNvcmUvbmFtZXNwYWNlIG5hbWUpXG4gICAgKGNsanMuY29yZS9uYW1lIG5hbWUpXG4gICAgKC4tc3RyIG5hbWUpXG4gICAgbmlsKVxuICAgKD0gXCIvXCIgbmFtZSlcbiAgIChLZXl3b3JkLiBuaWwgbmFtZSBuYW1lIG5pbClcbiAgIChzdHJpbmc/IG5hbWUpXG4gICAobGV0XG4gICAgW3BhcnRzICguc3BsaXQgbmFtZSBcIi9cIildXG4gICAgKGlmXG4gICAgICg9PSAoYWxlbmd0aCBwYXJ0cykgMilcbiAgICAgKEtleXdvcmQuIChhZ2V0IHBhcnRzIDApIChhZ2V0IHBhcnRzIDEpIG5hbWUgbmlsKVxuICAgICAoS2V5d29yZC4gbmlsIChhZ2V0IHBhcnRzIDApIG5hbWUgbmlsKSkpKSlcbiAoW25zIG5hbWVdXG4gIChsZXRcbiAgIFtuc1xuICAgIChjb25kXG4gICAgIChrZXl3b3JkPyBucylcbiAgICAgKGNsanMuY29yZS9uYW1lIG5zKVxuICAgICAoc3ltYm9sPyBucylcbiAgICAgKGNsanMuY29yZS9uYW1lIG5zKVxuICAgICA6ZWxzZVxuICAgICBucylcbiAgICBuYW1lXG4gICAgKGNvbmRcbiAgICAgKGtleXdvcmQ/IG5hbWUpXG4gICAgIChjbGpzLmNvcmUvbmFtZSBuYW1lKVxuICAgICAoc3ltYm9sPyBuYW1lKVxuICAgICAoY2xqcy5jb3JlL25hbWUgbmFtZSlcbiAgICAgOmVsc2VcbiAgICAgbmFtZSldXG4gICAoS2V5d29yZC4gbnMgbmFtZSAoc3RyICh3aGVuIG5zIChzdHIgbnMgXCIvXCIpKSBuYW1lKSBuaWwpKSkpXG4ifSB7OnN5bSAqbnMqLCA6bWV0YSB7OmRvYyAiVmFyIGJvdW5kIHRvIHRoZSBjdXJyZW50IG5hbWVzcGFjZS4gT25seSB1c2VkIGZvciBib290c3RyYXBwaW5nLiJ9LCA6c291cmNlICIoZGVmICpucyogbmlsKVxuIn0gezpzeW0gKmFzc2VydCosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICphc3NlcnQqIHRydWUpXG4ifSB7OnN5bSBJQ29sbGVjdGlvbiwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhZGRpbmcgdG8gYSBjb2xsZWN0aW9uLiJ9LCA6bWV0aG9kcyAoLWNvbmopfSB7OnN5bSBjaGFycywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiBjaGFycyBbeF0geClcbiJ9IHs6c3ltIHN0ciwgOm1ldGEgezpkb2MgIldpdGggbm8gYXJncywgcmV0dXJucyB0aGUgZW1wdHkgc3RyaW5nLiBXaXRoIG9uZSBhcmcgeCwgcmV0dXJuc1xuICB4LnRvU3RyaW5nKCkuICAoc3RyIG5pbCkgcmV0dXJucyB0aGUgZW1wdHkgc3RyaW5nLiBXaXRoIG1vcmUgdGhhblxuICBvbmUgYXJnLCByZXR1cm5zIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSBzdHIgdmFsdWVzIG9mIHRoZSBhcmdzLiIsIDphcmdsaXN0cyBbW10gW3hdIFt4ICYgeXNdXX0sIDpzb3VyY2UgIihkZWZuXG4gc3RyXG4gXCJXaXRoIG5vIGFyZ3MsIHJldHVybnMgdGhlIGVtcHR5IHN0cmluZy4gV2l0aCBvbmUgYXJnIHgsIHJldHVybnNcXG4gIHgudG9TdHJpbmcoKS4gIChzdHIgbmlsKSByZXR1cm5zIHRoZSBlbXB0eSBzdHJpbmcuIFdpdGggbW9yZSB0aGFuXFxuICBvbmUgYXJnLCByZXR1cm5zIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSBzdHIgdmFsdWVzIG9mIHRoZSBhcmdzLlwiXG4gKFtdIFwiXCIpXG4gKFt4XSAoaWYgKG5pbD8geCkgXCJcIiAoLmpvaW4gI2pzIFt4XSBcIlwiKSkpXG4gKFt4ICYgeXNdXG4gIChsb29wXG4gICBbc2IgKFN0cmluZ0J1ZmZlci4gKHN0ciB4KSkgbW9yZSB5c11cbiAgIChpZlxuICAgIG1vcmVcbiAgICAocmVjdXIgKC4gc2IgKGFwcGVuZCAoc3RyIChmaXJzdCBtb3JlKSkpKSAobmV4dCBtb3JlKSlcbiAgICAoLnRvU3RyaW5nIHNiKSkpKSlcbiJ9IHs6c3ltIG5leHQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgc2VxIG9mIHRoZSBpdGVtcyBhZnRlciB0aGUgZmlyc3QuIENhbGxzIHNlcSBvbiBpdHNcbiAgYXJndW1lbnQuICBJZiB0aGVyZSBhcmUgbm8gbW9yZSBpdGVtcywgcmV0dXJucyBuaWwiLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIG5leHRcbiBcIlJldHVybnMgYSBzZXEgb2YgdGhlIGl0ZW1zIGFmdGVyIHRoZSBmaXJzdC4gQ2FsbHMgc2VxIG9uIGl0c1xcbiAgYXJndW1lbnQuICBJZiB0aGVyZSBhcmUgbm8gbW9yZSBpdGVtcywgcmV0dXJucyBuaWxcIlxuIFtjb2xsXVxuICh3aGVuLW5vdFxuICAobmlsPyBjb2xsKVxuICAoaWYgKGltcGxlbWVudHM/IElOZXh0IGNvbGwpICgtbmV4dCBjb2xsKSAoc2VxIChyZXN0IGNvbGwpKSkpKVxuIn0gezpzeW0gQVNlcSwgOm1ldGEgezpkb2MgIk1hcmtlciBwcm90b2NvbCBpbmRpY2F0aW5nIGFuIGFycmF5IHNlcXVlbmNlLiJ9LCA6bWV0aG9kcyAoKX0gezpzeW0gcHItc2VxLXdyaXRlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtvYmpzIHdyaXRlciBvcHRzXSl9LCA6c291cmNlICIoZGVmblxuIHByLXNlcS13cml0ZXJcbiBbb2JqcyB3cml0ZXIgb3B0c11cbiAocHItd3JpdGVyIChmaXJzdCBvYmpzKSB3cml0ZXIgb3B0cylcbiAoZG9zZXFcbiAgW29iaiAobmV4dCBvYmpzKV1cbiAgKC13cml0ZSB3cml0ZXIgXCIgXCIpXG4gIChwci13cml0ZXIgb2JqIHdyaXRlciBvcHRzKSkpXG4ifSB7OnN5bSBJRm4sIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgYWRkaW5nIHRoZSBhYmlsaXR5IHRvIGludm9rZSBhbiBvYmplY3QgYXMgYSBmdW5jdGlvbi5cbiAgRm9yIGV4YW1wbGUsIGEgdmVjdG9yIGNhbiBhbHNvIGJlIHVzZWQgdG8gbG9vayB1cCBhIHZhbHVlOlxuICAoWzEgMiAzIDRdIDEpID0+IDIifSwgOm1ldGhvZHMgKC1pbnZva2UpfSB7OnN5bSByZWdleHA/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIHggaXMgYSBKYXZhU2NyaXB0IFJlZ0V4cCBpbnN0YW5jZS4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHJlZ2V4cD9cbiBcIlJldHVybnMgdHJ1ZSBpZiB4IGlzIGEgSmF2YVNjcmlwdCBSZWdFeHAgaW5zdGFuY2UuXCJcbiBbeF1cbiAoaW5zdGFuY2U/IGpzL1JlZ0V4cCB4KSlcbiJ9IHs6c3ltIGhhc2gtbWFwLCA6bWV0YSB7OmRvYyAia2V5dmFsID0+IGtleSB2YWxcbiAgUmV0dXJucyBhIG5ldyBoYXNoIG1hcCB3aXRoIHN1cHBsaWVkIG1hcHBpbmdzLiIsIDphcmdsaXN0cyAoWyYga2V5dmFsc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBoYXNoLW1hcFxuIFwia2V5dmFsID0+IGtleSB2YWxcXG4gIFJldHVybnMgYSBuZXcgaGFzaCBtYXAgd2l0aCBzdXBwbGllZCBtYXBwaW5ncy5cIlxuIFsmIGtleXZhbHNdXG4gKGxvb3BcbiAgW2luIChzZXEga2V5dmFscykgb3V0ICh0cmFuc2llbnQgKC4tRU1QVFkgUGVyc2lzdGVudEhhc2hNYXApKV1cbiAgKGlmXG4gICBpblxuICAgKGxldFxuICAgIFtpbicgKG5leHQgaW4pXVxuICAgIChpZlxuICAgICAobmlsPyBpbicpXG4gICAgICh0aHJvdyAoanMvRXJyb3IuIChzdHIgXCJObyB2YWx1ZSBzdXBwbGllZCBmb3Iga2V5OiBcIiAoZmlyc3QgaW4pKSkpXG4gICAgIChyZWN1ciAobmV4dCBpbicpIChhc3NvYyEgb3V0IChmaXJzdCBpbikgKGZpcnN0IGluJykpKSkpXG4gICAocGVyc2lzdGVudCEgb3V0KSkpKVxuIn0gezpzeW0gKmV4ZWMtdGFwLWZuKiwgOm1ldGEgezpkb2MgIkFycmFuZ2VzIHRvIGhhdmUgdGFwIGZ1bmN0aW9ucyBleGVjdXRlZCB2aWEgdGhlIHN1cHBsaWVkIGYsIGFcbiAgZnVuY3Rpb24gb2Ygbm8gYXJndW1lbnRzLiBSZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bCwgZmFsc2Ugb3RoZXJ3aXNlLiIsIDphcmdsaXN0cyAoW2ZdKX0sIDpzb3VyY2UgIihkZWZuXG4gKmV4ZWMtdGFwLWZuKlxuIFtmXVxuIChhbmQgKGV4aXN0cz8ganMvc2V0VGltZW91dCkgKGJvb2xlYW4gKGpzL3NldFRpbWVvdXQgZiAwKSkpKVxuIn0gezpzeW0gdW5kZXJpdmUsIDptZXRhIHs6ZG9jICJSZW1vdmVzIGEgcGFyZW50L2NoaWxkIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHBhcmVudCBhbmRcbiAgdGFnLiBoIG11c3QgYmUgYSBoaWVyYXJjaHkgb2J0YWluZWQgZnJvbSBtYWtlLWhpZXJhcmNoeSwgaWYgbm90XG4gIHN1cHBsaWVkIGRlZmF1bHRzIHRvLCBhbmQgbW9kaWZpZXMsIHRoZSBnbG9iYWwgaGllcmFyY2h5LiIsIDphcmdsaXN0cyBbW3RhZyBwYXJlbnRdIFtoIHRhZyBwYXJlbnRdXX0sIDpzb3VyY2UgIihkZWZuXG4gdW5kZXJpdmVcbiBcIlJlbW92ZXMgYSBwYXJlbnQvY2hpbGQgcmVsYXRpb25zaGlwIGJldHdlZW4gcGFyZW50IGFuZFxcbiAgdGFnLiBoIG11c3QgYmUgYSBoaWVyYXJjaHkgb2J0YWluZWQgZnJvbSBtYWtlLWhpZXJhcmNoeSwgaWYgbm90XFxuICBzdXBwbGllZCBkZWZhdWx0cyB0bywgYW5kIG1vZGlmaWVzLCB0aGUgZ2xvYmFsIGhpZXJhcmNoeS5cIlxuIChbdGFnIHBhcmVudF0gKHN3YXAtZ2xvYmFsLWhpZXJhcmNoeSEgdW5kZXJpdmUgdGFnIHBhcmVudCkgbmlsKVxuIChbaCB0YWcgcGFyZW50XVxuICAobGV0XG4gICBbcGFyZW50TWFwXG4gICAgKDpwYXJlbnRzIGgpXG4gICAgY2hpbGRzUGFyZW50c1xuICAgIChpZiAocGFyZW50TWFwIHRhZykgKGRpc2ogKHBhcmVudE1hcCB0YWcpIHBhcmVudCkgI3t9KVxuICAgIG5ld1BhcmVudHNcbiAgICAoaWZcbiAgICAgKG5vdC1lbXB0eSBjaGlsZHNQYXJlbnRzKVxuICAgICAoYXNzb2MgcGFyZW50TWFwIHRhZyBjaGlsZHNQYXJlbnRzKVxuICAgICAoZGlzc29jIHBhcmVudE1hcCB0YWcpKVxuICAgIGRlcml2LXNlcVxuICAgIChmbGF0dGVuXG4gICAgIChtYXBcbiAgICAgIChmbipcbiAgICAgICBbcDFfXzQ1NDQ0I11cbiAgICAgICAoY29uc1xuICAgICAgICAoZmlyc3QgcDFfXzQ1NDQ0IylcbiAgICAgICAgKGludGVycG9zZSAoZmlyc3QgcDFfXzQ1NDQ0IykgKHNlY29uZCBwMV9fNDU0NDQjKSkpKVxuICAgICAgKHNlcSBuZXdQYXJlbnRzKSkpXVxuICAgKGlmXG4gICAgKGNvbnRhaW5zPyAocGFyZW50TWFwIHRhZykgcGFyZW50KVxuICAgIChyZWR1Y2VcbiAgICAgKGZuKiBbcDFfXzQ1NDQ1IyBwMl9fNDU0NDYjXSAoYXBwbHkgZGVyaXZlIHAxX180NTQ0NSMgcDJfXzQ1NDQ2IykpXG4gICAgIChtYWtlLWhpZXJhcmNoeSlcbiAgICAgKHBhcnRpdGlvbiAyIGRlcml2LXNlcSkpXG4gICAgaCkpKSlcbiJ9IHs6c3ltIC1yZXNldCEsIDptZXRhIHs6ZG9jICJTZXRzIHRoZSB2YWx1ZSBvZiBvIHRvIG5ldy12YWx1ZS4iLCA6YXJnbGlzdHMgKFtvIG5ldy12YWx1ZV0pfSwgOnByb3RvY29sIElSZXNldH0gezpzeW0gLXJlc3QsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbmV3IGNvbGxlY3Rpb24gb2YgY29sbCB3aXRob3V0IHRoZSBmaXJzdCBpdGVtLiBJdCBzaG91bGRcbiAgICAgYWx3YXlzIHJldHVybiBhIHNlcSwgZS5nLlxuICAgICAocmVzdCBbXSkgPT4gKClcbiAgICAgKHJlc3QgbmlsKSA9PiAoKSIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpwcm90b2NvbCBJU2VxfSB7OnN5bSAtLWRlc3RydWN0dXJlLW1hcCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIC0tZGVzdHJ1Y3R1cmUtbWFwXG4gW3hdXG4gKGlmIChpbXBsZW1lbnRzPyBJU2VxIHgpIChhcHBseSBjbGpzLmNvcmUvaGFzaC1tYXAgeCkgeCkpXG4ifSB7OnN5bSBuaWwtaXRlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gbmlsLWl0ZXJcbiBbXVxuIChyZWlmeVxuICBPYmplY3RcbiAgKGhhc05leHQgW19dIGZhbHNlKVxuICAobmV4dCBbX10gKGpzL0Vycm9yLiBcIk5vIHN1Y2ggZWxlbWVudFwiKSlcbiAgKHJlbW92ZSBbX10gKGpzL0Vycm9yLiBcIlVuc3VwcG9ydGVkIG9wZXJhdGlvblwiKSkpKVxuIn0gezpzeW0gZmFsc2U/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIHggaXMgdGhlIHZhbHVlIGZhbHNlLCBmYWxzZSBvdGhlcndpc2UuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBmYWxzZT9cbiBcIlJldHVybnMgdHJ1ZSBpZiB4IGlzIHRoZSB2YWx1ZSBmYWxzZSwgZmFsc2Ugb3RoZXJ3aXNlLlwiXG4gW3hdXG4gKGNsanMuY29yZS9mYWxzZT8geCkpXG4ifSB7OnN5bSAqcHJpbnQtcmVhZGFibHkqLCA6bWV0YSB7OmRvYyAiV2hlbiBzZXQgdG8gbG9naWNhbCBmYWxzZSwgc3RyaW5ncyBhbmQgY2hhcmFjdGVycyB3aWxsIGJlIHByaW50ZWQgd2l0aFxuICBub24tYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgY29udmVydGVkIHRvIHRoZSBhcHByb3ByaWF0ZSBlc2NhcGUgc2VxdWVuY2VzLlxuXG4gIERlZmF1bHRzIHRvIHRydWUifSwgOnNvdXJjZSAiKGRlZiAqcHJpbnQtcmVhZGFibHkqIHRydWUpXG4ifSB7OnN5bSBpbnRzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGludHMgW3hdIHgpXG4ifSB7OnN5bSBzb21lLWZuLCA6bWV0YSB7OmRvYyAiVGFrZXMgYSBzZXQgb2YgcHJlZGljYXRlcyBhbmQgcmV0dXJucyBhIGZ1bmN0aW9uIGYgdGhhdCByZXR1cm5zIHRoZSBmaXJzdCBsb2dpY2FsIHRydWUgdmFsdWVcbiAgcmV0dXJuZWQgYnkgb25lIG9mIGl0cyBjb21wb3NpbmcgcHJlZGljYXRlcyBhZ2FpbnN0IGFueSBvZiBpdHMgYXJndW1lbnRzLCBlbHNlIGl0IHJldHVybnNcbiAgbG9naWNhbCBmYWxzZS4gTm90ZSB0aGF0IGYgaXMgc2hvcnQtY2lyY3VpdGluZyBpbiB0aGF0IGl0IHdpbGwgc3RvcCBleGVjdXRpb24gb24gdGhlIGZpcnN0XG4gIGFyZ3VtZW50IHRoYXQgdHJpZ2dlcnMgYSBsb2dpY2FsIHRydWUgcmVzdWx0IGFnYWluc3QgdGhlIG9yaWdpbmFsIHByZWRpY2F0ZXMuIiwgOmFyZ2xpc3RzIFtbcF0gW3AxIHAyXSBbcDEgcDIgcDNdIFtwMSBwMiBwMyAmIHBzXV19LCA6c291cmNlICIoZGVmblxuIHNvbWUtZm5cbiBcIlRha2VzIGEgc2V0IG9mIHByZWRpY2F0ZXMgYW5kIHJldHVybnMgYSBmdW5jdGlvbiBmIHRoYXQgcmV0dXJucyB0aGUgZmlyc3QgbG9naWNhbCB0cnVlIHZhbHVlXFxuICByZXR1cm5lZCBieSBvbmUgb2YgaXRzIGNvbXBvc2luZyBwcmVkaWNhdGVzIGFnYWluc3QgYW55IG9mIGl0cyBhcmd1bWVudHMsIGVsc2UgaXQgcmV0dXJuc1xcbiAgbG9naWNhbCBmYWxzZS4gTm90ZSB0aGF0IGYgaXMgc2hvcnQtY2lyY3VpdGluZyBpbiB0aGF0IGl0IHdpbGwgc3RvcCBleGVjdXRpb24gb24gdGhlIGZpcnN0XFxuICBhcmd1bWVudCB0aGF0IHRyaWdnZXJzIGEgbG9naWNhbCB0cnVlIHJlc3VsdCBhZ2FpbnN0IHRoZSBvcmlnaW5hbCBwcmVkaWNhdGVzLlwiXG4gKFtwXVxuICAoZm5cbiAgIHNwMVxuICAgKFtdIG5pbClcbiAgIChbeF0gKHAgeCkpXG4gICAoW3ggeV0gKG9yIChwIHgpIChwIHkpKSlcbiAgIChbeCB5IHpdIChvciAocCB4KSAocCB5KSAocCB6KSkpXG4gICAoW3ggeSB6ICYgYXJnc10gKG9yIChzcDEgeCB5IHopIChzb21lIHAgYXJncykpKSkpXG4gKFtwMSBwMl1cbiAgKGZuXG4gICBzcDJcbiAgIChbXSBuaWwpXG4gICAoW3hdIChvciAocDEgeCkgKHAyIHgpKSlcbiAgIChbeCB5XSAob3IgKHAxIHgpIChwMSB5KSAocDIgeCkgKHAyIHkpKSlcbiAgIChbeCB5IHpdIChvciAocDEgeCkgKHAxIHkpIChwMSB6KSAocDIgeCkgKHAyIHkpIChwMiB6KSkpXG4gICAoW3ggeSB6ICYgYXJnc11cbiAgICAob3JcbiAgICAgKHNwMiB4IHkgeilcbiAgICAgKHNvbWVcbiAgICAgIChmbiogW3AxX180NTQwNiNdIChvciAocDEgcDFfXzQ1NDA2IykgKHAyIHAxX180NTQwNiMpKSlcbiAgICAgIGFyZ3MpKSkpKVxuIChbcDEgcDIgcDNdXG4gIChmblxuICAgc3AzXG4gICAoW10gbmlsKVxuICAgKFt4XSAob3IgKHAxIHgpIChwMiB4KSAocDMgeCkpKVxuICAgKFt4IHldIChvciAocDEgeCkgKHAyIHgpIChwMyB4KSAocDEgeSkgKHAyIHkpIChwMyB5KSkpXG4gICAoW3ggeSB6XVxuICAgIChvclxuICAgICAocDEgeClcbiAgICAgKHAyIHgpXG4gICAgIChwMyB4KVxuICAgICAocDEgeSlcbiAgICAgKHAyIHkpXG4gICAgIChwMyB5KVxuICAgICAocDEgeilcbiAgICAgKHAyIHopXG4gICAgIChwMyB6KSkpXG4gICAoW3ggeSB6ICYgYXJnc11cbiAgICAob3JcbiAgICAgKHNwMyB4IHkgeilcbiAgICAgKHNvbWVcbiAgICAgIChmbipcbiAgICAgICBbcDFfXzQ1NDA3I11cbiAgICAgICAob3IgKHAxIHAxX180NTQwNyMpIChwMiBwMV9fNDU0MDcjKSAocDMgcDFfXzQ1NDA3IykpKVxuICAgICAgYXJncykpKSkpXG4gKFtwMSBwMiBwMyAmIHBzXVxuICAobGV0XG4gICBbcHMgKGxpc3QqIHAxIHAyIHAzIHBzKV1cbiAgIChmblxuICAgIHNwblxuICAgIChbXSBuaWwpXG4gICAgKFt4XSAoc29tZSAoZm4qIFtwMV9fNDU0MDgjXSAocDFfXzQ1NDA4IyB4KSkgcHMpKVxuICAgIChbeCB5XVxuICAgICAoc29tZSAoZm4qIFtwMV9fNDU0MDkjXSAob3IgKHAxX180NTQwOSMgeCkgKHAxX180NTQwOSMgeSkpKSBwcykpXG4gICAgKFt4IHkgel1cbiAgICAgKHNvbWVcbiAgICAgIChmbipcbiAgICAgICBbcDFfXzQ1NDEwI11cbiAgICAgICAob3IgKHAxX180NTQxMCMgeCkgKHAxX180NTQxMCMgeSkgKHAxX180NTQxMCMgeikpKVxuICAgICAgcHMpKVxuICAgIChbeCB5IHogJiBhcmdzXVxuICAgICAob3JcbiAgICAgIChzcG4geCB5IHopXG4gICAgICAoc29tZSAoZm4qIFtwMV9fNDU0MTEjXSAoc29tZSBwMV9fNDU0MTEjIGFyZ3MpKSBwcykpKSkpKSlcbiJ9IHs6c3ltICpmbHVzaC1vbi1uZXdsaW5lKiwgOm1ldGEgezpkb2MgIldoZW4gc2V0IHRvIHRydWUsIG91dHB1dCB3aWxsIGJlIGZsdXNoZWQgd2hlbmV2ZXIgYSBuZXdsaW5lIGlzIHByaW50ZWQuXG5cbiAgRGVmYXVsdHMgdG8gdHJ1ZS4ifSwgOnNvdXJjZSAiKGRlZiAqZmx1c2gtb24tbmV3bGluZSogdHJ1ZSlcbiJ9IHs6c3ltIHRvLWFycmF5LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhbiBhcnJheSBjb250YWluaW5nIHRoZSBjb250ZW50cyBvZiBjb2xsLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gdG8tYXJyYXlcbiBcIlJldHVybnMgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgY29udGVudHMgb2YgY29sbC5cIlxuIFtjb2xsXVxuIChsZXRcbiAgW2FyeSAoYXJyYXkpXVxuICAobG9vcFxuICAgW3MgKHNlcSBjb2xsKV1cbiAgIChpZi1ub3QgKG5pbD8gcykgKGRvICguIGFyeSBwdXNoIChmaXJzdCBzKSkgKHJlY3VyIChuZXh0IHMpKSkgYXJ5KSkpKVxuIn0gezpzeW0gbGlzdD8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgeCBpbXBsZW1lbnRzIElMaXN0IiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBsaXN0P1xuIFwiUmV0dXJucyB0cnVlIGlmIHggaW1wbGVtZW50cyBJTGlzdFwiXG4gW3hdXG4gKHNhdGlzZmllcz8gSUxpc3QgeCkpXG4ifSB7OnN5bSBhcnJheT8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgeCBpcyBhIEphdmFTY3JpcHQgYXJyYXkuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhcnJheT9cbiBcIlJldHVybnMgdHJ1ZSBpZiB4IGlzIGEgSmF2YVNjcmlwdCBhcnJheS5cIlxuIFt4XVxuIChpZlxuICAoaWRlbnRpY2FsPyAqdGFyZ2V0KiBcIm5vZGVqc1wiKVxuICAoLmlzQXJyYXkganMvQXJyYXkgeClcbiAgKGluc3RhbmNlPyBqcy9BcnJheSB4KSkpXG4ifSB7OnN5bSBzaW1wbGUtaWRlbnQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJuIHRydWUgaWYgeCBpcyBhIHN5bWJvbCBvciBrZXl3b3JkIHdpdGhvdXQgYSBuYW1lc3BhY2UiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHNpbXBsZS1pZGVudD9cbiBcIlJldHVybiB0cnVlIGlmIHggaXMgYSBzeW1ib2wgb3Iga2V5d29yZCB3aXRob3V0IGEgbmFtZXNwYWNlXCJcbiBbeF1cbiAoYW5kIChpZGVudD8geCkgKG5pbD8gKG5hbWVzcGFjZSB4KSkpKVxuIn0gezpzeW0gY2xvbmUsIDptZXRhIHs6ZG9jICJDbG9uZSB0aGUgc3VwcGxpZWQgdmFsdWUgd2hpY2ggbXVzdCBpbXBsZW1lbnQgSUNsb25lYWJsZS4iLCA6YXJnbGlzdHMgKFt2YWx1ZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjbG9uZVxuIFwiQ2xvbmUgdGhlIHN1cHBsaWVkIHZhbHVlIHdoaWNoIG11c3QgaW1wbGVtZW50IElDbG9uZWFibGUuXCJcbiBbdmFsdWVdXG4gKC1jbG9uZSB2YWx1ZSkpXG4ifSB7OnN5bSBkZW11bmdlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW25hbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gZGVtdW5nZVxuIFtuYW1lXVxuICgoaWYgKHN5bWJvbD8gbmFtZSkgc3ltYm9sIHN0cilcbiAgKGxldFxuICAgW25hbWUnIChzdHIgbmFtZSldXG4gICAoaWYgKGlkZW50aWNhbD8gbmFtZScgXCJfRE9UX19ET1RfXCIpIFwiLi5cIiAoZGVtdW5nZS1zdHIgbmFtZScpKSkpKVxuIn0gezpzeW0gYml0LW5vdCwgOm1ldGEgezpkb2MgIkJpdHdpc2UgY29tcGxlbWVudCIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGJpdC1ub3QgXCJCaXR3aXNlIGNvbXBsZW1lbnRcIiBbeF0gKGNsanMuY29yZS9iaXQtbm90IHgpKVxuIn0gezpzeW0gYnl0ZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiBieXRlIFt4XSB4KVxuIn0gezpzeW0gbWF4LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgZ3JlYXRlc3Qgb2YgdGhlIG51bXMuIiwgOmFyZ2xpc3RzIFtbeF0gW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gbWF4XG4gXCJSZXR1cm5zIHRoZSBncmVhdGVzdCBvZiB0aGUgbnVtcy5cIlxuIChbeF0geClcbiAoW3ggeV0gKGNsanMuY29yZS9tYXggeCB5KSlcbiAoW3ggeSAmIG1vcmVdIChyZWR1Y2UgbWF4IChjbGpzLmNvcmUvbWF4IHggeSkgbW9yZSkpKVxuIn0gezpzeW0gSUNvbXBhcmFibGUsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgdmFsdWVzIHRoYXQgY2FuIGJlIGNvbXBhcmVkLiJ9LCA6bWV0aG9kcyAoLWNvbXBhcmUpfSB7OnN5bSA9PSwgOm1ldGEgezpkb2MgIlJldHVybnMgbm9uLW5pbCBpZiBudW1zIGFsbCBoYXZlIHRoZSBlcXVpdmFsZW50XG4gIHZhbHVlLCBvdGhlcndpc2UgZmFsc2UuIEJlaGF2aW9yIG9uIG5vbiBudW1zIGlzXG4gIHVuZGVmaW5lZC4iLCA6YXJnbGlzdHMgW1t4XSBbeCB5XSBbeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiA9PVxuIFwiUmV0dXJucyBub24tbmlsIGlmIG51bXMgYWxsIGhhdmUgdGhlIGVxdWl2YWxlbnRcXG4gIHZhbHVlLCBvdGhlcndpc2UgZmFsc2UuIEJlaGF2aW9yIG9uIG5vbiBudW1zIGlzXFxuICB1bmRlZmluZWQuXCJcbiAoW3hdIHRydWUpXG4gKFt4IHldICgtZXF1aXYgeCB5KSlcbiAoW3ggeSAmIG1vcmVdXG4gIChpZlxuICAgKD09IHggeSlcbiAgIChpZlxuICAgIChuZXh0IG1vcmUpXG4gICAgKHJlY3VyIHkgKGZpcnN0IG1vcmUpIChuZXh0IG1vcmUpKVxuICAgICg9PSB5IChmaXJzdCBtb3JlKSkpXG4gICBmYWxzZSkpKVxuIn0gezpzeW0gcGFyZW50cywgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGltbWVkaWF0ZSBwYXJlbnRzIG9mIHRhZywgZWl0aGVyIHZpYSBhIEphdmFTY3JpcHQgdHlwZVxuICBpbmhlcml0YW5jZSByZWxhdGlvbnNoaXAgb3IgYSByZWxhdGlvbnNoaXAgZXN0YWJsaXNoZWQgdmlhIGRlcml2ZS4gaFxuICBtdXN0IGJlIGEgaGllcmFyY2h5IG9idGFpbmVkIGZyb20gbWFrZS1oaWVyYXJjaHksIGlmIG5vdCBzdXBwbGllZFxuICBkZWZhdWx0cyB0byB0aGUgZ2xvYmFsIGhpZXJhcmNoeSIsIDphcmdsaXN0cyBbW3RhZ10gW2ggdGFnXV19LCA6c291cmNlICIoZGVmblxuIHBhcmVudHNcbiBcIlJldHVybnMgdGhlIGltbWVkaWF0ZSBwYXJlbnRzIG9mIHRhZywgZWl0aGVyIHZpYSBhIEphdmFTY3JpcHQgdHlwZVxcbiAgaW5oZXJpdGFuY2UgcmVsYXRpb25zaGlwIG9yIGEgcmVsYXRpb25zaGlwIGVzdGFibGlzaGVkIHZpYSBkZXJpdmUuIGhcXG4gIG11c3QgYmUgYSBoaWVyYXJjaHkgb2J0YWluZWQgZnJvbSBtYWtlLWhpZXJhcmNoeSwgaWYgbm90IHN1cHBsaWVkXFxuICBkZWZhdWx0cyB0byB0aGUgZ2xvYmFsIGhpZXJhcmNoeVwiXG4gKFt0YWddIChwYXJlbnRzIEAoZ2V0LWdsb2JhbC1oaWVyYXJjaHkpIHRhZykpXG4gKFtoIHRhZ10gKG5vdC1lbXB0eSAoZ2V0ICg6cGFyZW50cyBoKSB0YWcpKSkpXG4ifSB7OnN5bSBjb3VudCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgY29sbGVjdGlvbi4gKGNvdW50IG5pbCkgcmV0dXJuc1xuICAwLiAgQWxzbyB3b3JrcyBvbiBzdHJpbmdzLCBhcnJheXMsIGFuZCBNYXBzIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjb3VudFxuIFwiUmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBjb2xsZWN0aW9uLiAoY291bnQgbmlsKSByZXR1cm5zXFxuICAwLiAgQWxzbyB3b3JrcyBvbiBzdHJpbmdzLCBhcnJheXMsIGFuZCBNYXBzXCJcbiBbY29sbF1cbiAoaWYtbm90XG4gIChuaWw/IGNvbGwpXG4gIChjb25kXG4gICAoaW1wbGVtZW50cz8gSUNvdW50ZWQgY29sbClcbiAgICgtY291bnQgY29sbClcbiAgIChhcnJheT8gY29sbClcbiAgIChhbGVuZ3RoIGNvbGwpXG4gICAoc3RyaW5nPyBjb2xsKVxuICAgKC4tbGVuZ3RoIGNvbGwpXG4gICAoaW1wbGVtZW50cz8gSVNlcWFibGUgY29sbClcbiAgIChhY2N1bXVsYXRpbmctc2VxLWNvdW50IGNvbGwpXG4gICA6ZWxzZVxuICAgKC1jb3VudCBjb2xsKSlcbiAgMCkpXG4ifSB7OnN5bSAtZGlzam9pbiEsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRjb2xsIHdpdGhvdXQgdi4iLCA6YXJnbGlzdHMgKFt0Y29sbCB2XSl9LCA6cHJvdG9jb2wgSVRyYW5zaWVudFNldH0gezpzeW0gKmxvYWRlZC1saWJzKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZvbmNlICpsb2FkZWQtbGlicyogbmlsKVxuIn0gezpzeW0gc29ydGVkLW1hcC1ieSwgOm1ldGEgezpkb2MgImtleXZhbCA9PiBrZXkgdmFsXG4gIFJldHVybnMgYSBuZXcgc29ydGVkIG1hcCB3aXRoIHN1cHBsaWVkIG1hcHBpbmdzLCB1c2luZyB0aGUgc3VwcGxpZWQgY29tcGFyYXRvci4iLCA6YXJnbGlzdHMgW1tjb21wYXJhdG9yICYga2V5dmFsc11dfSwgOnNvdXJjZSAiKGRlZm5cbiBzb3J0ZWQtbWFwLWJ5XG4gXCJrZXl2YWwgPT4ga2V5IHZhbFxcbiAgUmV0dXJucyBhIG5ldyBzb3J0ZWQgbWFwIHdpdGggc3VwcGxpZWQgbWFwcGluZ3MsIHVzaW5nIHRoZSBzdXBwbGllZCBjb21wYXJhdG9yLlwiXG4gKFtjb21wYXJhdG9yICYga2V5dmFsc11cbiAgKGxvb3BcbiAgIFtpblxuICAgIChzZXEga2V5dmFscylcbiAgICBvdXRcbiAgICAoUGVyc2lzdGVudFRyZWVNYXAuIChmbi0+Y29tcGFyYXRvciBjb21wYXJhdG9yKSBuaWwgMCBuaWwgMCldXG4gICAoaWYgaW4gKHJlY3VyIChubmV4dCBpbikgKGFzc29jIG91dCAoZmlyc3QgaW4pIChzZWNvbmQgaW4pKSkgb3V0KSkpKVxuIn0gezpzeW0gYXBwbHksIDptZXRhIHs6ZG9jICJBcHBsaWVzIGZuIGYgdG8gdGhlIGFyZ3VtZW50IGxpc3QgZm9ybWVkIGJ5IHByZXBlbmRpbmcgaW50ZXJ2ZW5pbmcgYXJndW1lbnRzIHRvIGFyZ3MuIiwgOmFyZ2xpc3RzIFtbZiBhcmdzXSBbZiB4IGFyZ3NdIFtmIHggeSBhcmdzXSBbZiB4IHkgeiBhcmdzXSBbZiBhIGIgYyBkICYgYXJnc11dfSwgOnNvdXJjZSAiKGRlZm5cbiBhcHBseVxuIFwiQXBwbGllcyBmbiBmIHRvIHRoZSBhcmd1bWVudCBsaXN0IGZvcm1lZCBieSBwcmVwZW5kaW5nIGludGVydmVuaW5nIGFyZ3VtZW50cyB0byBhcmdzLlwiXG4gKFtmIGFyZ3NdXG4gIChpZlxuICAgKC4tY2xqcyRsYW5nJGFwcGx5VG8gZilcbiAgIChsZXRcbiAgICBbZml4ZWQtYXJpdHlcbiAgICAgKC4tY2xqcyRsYW5nJG1heEZpeGVkQXJpdHkgZilcbiAgICAgYmNcbiAgICAgKGJvdW5kZWQtY291bnQgKGluYyBmaXhlZC1hcml0eSkgYXJncyldXG4gICAgKGlmXG4gICAgICg8PSBiYyBmaXhlZC1hcml0eSlcbiAgICAgKGFwcGx5LXRvIGYgYmMgYXJncylcbiAgICAgKC5jbGpzJGxhbmckYXBwbHlUbyBmIGFyZ3MpKSlcbiAgIChhcHBseS10by1zaW1wbGUgZiAoc2VxIGFyZ3MpKSkpXG4gKFtmIHggYXJnc11cbiAgKGlmXG4gICAoLi1jbGpzJGxhbmckYXBwbHlUbyBmKVxuICAgKGxldFxuICAgIFthcmdsaXN0XG4gICAgIChsaXN0KiB4IGFyZ3MpXG4gICAgIGZpeGVkLWFyaXR5XG4gICAgICguLWNsanMkbGFuZyRtYXhGaXhlZEFyaXR5IGYpXG4gICAgIGJjXG4gICAgIChpbmMgKGJvdW5kZWQtY291bnQgZml4ZWQtYXJpdHkgYXJncykpXVxuICAgIChpZlxuICAgICAoPD0gYmMgZml4ZWQtYXJpdHkpXG4gICAgIChhcHBseS10byBmIGJjIGFyZ2xpc3QpXG4gICAgICguY2xqcyRsYW5nJGFwcGx5VG8gZiBhcmdsaXN0KSkpXG4gICAoYXBwbHktdG8tc2ltcGxlIGYgeCAoc2VxIGFyZ3MpKSkpXG4gKFtmIHggeSBhcmdzXVxuICAoaWZcbiAgICguLWNsanMkbGFuZyRhcHBseVRvIGYpXG4gICAobGV0XG4gICAgW2FyZ2xpc3RcbiAgICAgKGxpc3QqIHggeSBhcmdzKVxuICAgICBmaXhlZC1hcml0eVxuICAgICAoLi1jbGpzJGxhbmckbWF4Rml4ZWRBcml0eSBmKVxuICAgICBiY1xuICAgICAoKyAyIChib3VuZGVkLWNvdW50IChkZWMgZml4ZWQtYXJpdHkpIGFyZ3MpKV1cbiAgICAoaWZcbiAgICAgKDw9IGJjIGZpeGVkLWFyaXR5KVxuICAgICAoYXBwbHktdG8gZiBiYyBhcmdsaXN0KVxuICAgICAoLmNsanMkbGFuZyRhcHBseVRvIGYgYXJnbGlzdCkpKVxuICAgKGFwcGx5LXRvLXNpbXBsZSBmIHggeSAoc2VxIGFyZ3MpKSkpXG4gKFtmIHggeSB6IGFyZ3NdXG4gIChpZlxuICAgKC4tY2xqcyRsYW5nJGFwcGx5VG8gZilcbiAgIChsZXRcbiAgICBbYXJnbGlzdFxuICAgICAobGlzdCogeCB5IHogYXJncylcbiAgICAgZml4ZWQtYXJpdHlcbiAgICAgKC4tY2xqcyRsYW5nJG1heEZpeGVkQXJpdHkgZilcbiAgICAgYmNcbiAgICAgKCsgMyAoYm91bmRlZC1jb3VudCAoLSBmaXhlZC1hcml0eSAyKSBhcmdzKSldXG4gICAgKGlmXG4gICAgICg8PSBiYyBmaXhlZC1hcml0eSlcbiAgICAgKGFwcGx5LXRvIGYgYmMgYXJnbGlzdClcbiAgICAgKC5jbGpzJGxhbmckYXBwbHlUbyBmIGFyZ2xpc3QpKSlcbiAgIChhcHBseS10by1zaW1wbGUgZiB4IHkgeiAoc2VxIGFyZ3MpKSkpXG4gKFtmIGEgYiBjIGQgJiBhcmdzXVxuICAoaWZcbiAgICguLWNsanMkbGFuZyRhcHBseVRvIGYpXG4gICAobGV0XG4gICAgW3NwcmVhZC1hcmdzXG4gICAgIChzcHJlYWQgYXJncylcbiAgICAgYXJnbGlzdFxuICAgICAoY29ucyBhIChjb25zIGIgKGNvbnMgYyAoY29ucyBkIHNwcmVhZC1hcmdzKSkpKVxuICAgICBmaXhlZC1hcml0eVxuICAgICAoLi1jbGpzJGxhbmckbWF4Rml4ZWRBcml0eSBmKVxuICAgICBiY1xuICAgICAoKyA0IChib3VuZGVkLWNvdW50ICgtIGZpeGVkLWFyaXR5IDMpIHNwcmVhZC1hcmdzKSldXG4gICAgKGlmXG4gICAgICg8PSBiYyBmaXhlZC1hcml0eSlcbiAgICAgKGFwcGx5LXRvIGYgYmMgYXJnbGlzdClcbiAgICAgKC5jbGpzJGxhbmckYXBwbHlUbyBmIGFyZ2xpc3QpKSlcbiAgIChhcHBseS10by1zaW1wbGUgZiBhIGIgYyBkIChzcHJlYWQgYXJncykpKSkpXG4ifSB7OnN5bSBhZGQtdG8tc3RyaW5nLWhhc2gtY2FjaGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChba10pfSwgOnNvdXJjZSAiKGRlZm5cbiBhZGQtdG8tc3RyaW5nLWhhc2gtY2FjaGVcbiBba11cbiAobGV0XG4gIFtoIChoYXNoLXN0cmluZyogayldXG4gIChnb2JqZWN0L3NldCBzdHJpbmctaGFzaC1jYWNoZSBrIGgpXG4gIChzZXQhIHN0cmluZy1oYXNoLWNhY2hlLWNvdW50IChpbmMgc3RyaW5nLWhhc2gtY2FjaGUtY291bnQpKVxuICBoKSlcbiJ9IHs6c3ltIGNsai0+anMsIDptZXRhIHs6ZG9jICJSZWN1cnNpdmVseSB0cmFuc2Zvcm1zIENsb2p1cmVTY3JpcHQgdmFsdWVzIHRvIEphdmFTY3JpcHQuXG4gIHNldHMvdmVjdG9ycy9saXN0cyBiZWNvbWUgQXJyYXlzLCBLZXl3b3JkcyBhbmQgU3ltYm9sIGJlY29tZSBTdHJpbmdzLFxuICBNYXBzIGJlY29tZSBPYmplY3RzLiBBcmJpdHJhcnkga2V5cyBhcmUgZW5jb2RlZCB0byBieSBga2V5LT5qc2AuXG4gIE9wdGlvbnMgaXMgYSBrZXktdmFsdWUgcGFpciwgd2hlcmUgdGhlIG9ubHkgdmFsaWQga2V5IGlzXG4gIDprZXl3b3JkLWZuLCB3aGljaCBzaG91bGQgcG9pbnQgdG8gYSBzaW5nbGUtYXJndW1lbnQgZnVuY3Rpb24gdG8gYmVcbiAgY2FsbGVkIG9uIGtleXdvcmQga2V5cy4gRGVmYXVsdCB0byBgbmFtZWAuIiwgOmFyZ2xpc3RzIChbeCAmIHs6a2V5cyBba2V5d29yZC1mbl0sIDpvciB7a2V5d29yZC1mbiBuYW1lfSwgOmFzIG9wdGlvbnN9XSl9LCA6c291cmNlICIoZGVmblxuIGNsai0+anNcbiBcIlJlY3Vyc2l2ZWx5IHRyYW5zZm9ybXMgQ2xvanVyZVNjcmlwdCB2YWx1ZXMgdG8gSmF2YVNjcmlwdC5cXG4gIHNldHMvdmVjdG9ycy9saXN0cyBiZWNvbWUgQXJyYXlzLCBLZXl3b3JkcyBhbmQgU3ltYm9sIGJlY29tZSBTdHJpbmdzLFxcbiAgTWFwcyBiZWNvbWUgT2JqZWN0cy4gQXJiaXRyYXJ5IGtleXMgYXJlIGVuY29kZWQgdG8gYnkgYGtleS0+anNgLlxcbiAgT3B0aW9ucyBpcyBhIGtleS12YWx1ZSBwYWlyLCB3aGVyZSB0aGUgb25seSB2YWxpZCBrZXkgaXNcXG4gIDprZXl3b3JkLWZuLCB3aGljaCBzaG91bGQgcG9pbnQgdG8gYSBzaW5nbGUtYXJndW1lbnQgZnVuY3Rpb24gdG8gYmVcXG4gIGNhbGxlZCBvbiBrZXl3b3JkIGtleXMuIERlZmF1bHQgdG8gYG5hbWVgLlwiXG4gW3ggJiB7OmtleXMgW2tleXdvcmQtZm5dLCA6b3Ige2tleXdvcmQtZm4gbmFtZX0sIDphcyBvcHRpb25zfV1cbiAobGV0Zm5cbiAgWyhrZXlmbiBba10gKGtleS0+anMgayB0aGlzZm4pKVxuICAgKHRoaXNmblxuICAgIFt4XVxuICAgIChjb25kXG4gICAgIChuaWw/IHgpXG4gICAgIG5pbFxuICAgICAoc2F0aXNmaWVzPyBJRW5jb2RlSlMgeClcbiAgICAgKC1jbGotPmpzIHgpXG4gICAgIChrZXl3b3JkPyB4KVxuICAgICAoa2V5d29yZC1mbiB4KVxuICAgICAoc3ltYm9sPyB4KVxuICAgICAoc3RyIHgpXG4gICAgIChtYXA/IHgpXG4gICAgIChsZXRcbiAgICAgIFttIChqcy1vYmopXVxuICAgICAgKGRvc2VxIFtbayB2XSB4XSAoZ29iamVjdC9zZXQgbSAoa2V5Zm4gaykgKHRoaXNmbiB2KSkpXG4gICAgICBtKVxuICAgICAoY29sbD8geClcbiAgICAgKGxldCBbYXJyIChhcnJheSldIChkb3NlcSBbeCAobWFwIHRoaXNmbiB4KV0gKC5wdXNoIGFyciB4KSkgYXJyKVxuICAgICA6ZWxzZVxuICAgICB4KSldXG4gICh0aGlzZm4geCkpKVxuIn0gezpzeW0gSUNodW5rZWROZXh0LCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFjY2Vzc2luZyB0aGUgY2h1bmtzIG9mIGEgY29sbGVjdGlvbi4ifSwgOm1ldGhvZHMgKC1jaHVua2VkLW5leHQpfSB7OnN5bSBpbnRlcnBvc2UsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbGF6eSBzZXEgb2YgdGhlIGVsZW1lbnRzIG9mIGNvbGwgc2VwYXJhdGVkIGJ5IHNlcC5cbiAgUmV0dXJucyBhIHN0YXRlZnVsIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLiIsIDphcmdsaXN0cyBbW3NlcF0gW3NlcCBjb2xsXV19LCA6c291cmNlICIoZGVmblxuIGludGVycG9zZVxuIFwiUmV0dXJucyBhIGxhenkgc2VxIG9mIHRoZSBlbGVtZW50cyBvZiBjb2xsIHNlcGFyYXRlZCBieSBzZXAuXFxuICBSZXR1cm5zIGEgc3RhdGVmdWwgdHJhbnNkdWNlciB3aGVuIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuXCJcbiAoW3NlcF1cbiAgKGZuXG4gICBbcmZdXG4gICAobGV0XG4gICAgW3N0YXJ0ZWQgKHZvbGF0aWxlISBmYWxzZSldXG4gICAgKGZuXG4gICAgIChbXSAocmYpKVxuICAgICAoW3Jlc3VsdF0gKHJmIHJlc3VsdCkpXG4gICAgIChbcmVzdWx0IGlucHV0XVxuICAgICAgKGlmXG4gICAgICAgQHN0YXJ0ZWRcbiAgICAgICAobGV0XG4gICAgICAgIFtzZXByIChyZiByZXN1bHQgc2VwKV1cbiAgICAgICAgKGlmIChyZWR1Y2VkPyBzZXByKSBzZXByIChyZiBzZXByIGlucHV0KSkpXG4gICAgICAgKGRvICh2cmVzZXQhIHN0YXJ0ZWQgdHJ1ZSkgKHJmIHJlc3VsdCBpbnB1dCkpKSkpKSkpXG4gKFtzZXAgY29sbF0gKGRyb3AgMSAoaW50ZXJsZWF2ZSAocmVwZWF0IHNlcCkgY29sbCkpKSlcbiJ9IHs6c3ltIGRlcmVmLCA6bWV0YSB7OmRvYyAiQWxzbyByZWFkZXIgbWFjcm86IEB2YXIvQGF0b20vQGRlbGF5LiBSZXR1cm5zIHRoZVxuICAgbW9zdC1yZWNlbnRseS1jb21taXR0ZWQgdmFsdWUgb2YgcmVmLiBXaGVuIGFwcGxpZWQgdG8gYSB2YXJcbiAgIG9yIGF0b20sIHJldHVybnMgaXRzIGN1cnJlbnQgc3RhdGUuIFdoZW4gYXBwbGllZCB0byBhIGRlbGF5LCBmb3JjZXNcbiAgIGl0IGlmIG5vdCBhbHJlYWR5IGZvcmNlZC4gU2VlIGFsc28gLSByZWFsaXplZD8uIiwgOmFyZ2xpc3RzIChbb10pfSwgOnNvdXJjZSAiKGRlZm5cbiBkZXJlZlxuIFwiQWxzbyByZWFkZXIgbWFjcm86IEB2YXIvQGF0b20vQGRlbGF5LiBSZXR1cm5zIHRoZVxcbiAgIG1vc3QtcmVjZW50bHktY29tbWl0dGVkIHZhbHVlIG9mIHJlZi4gV2hlbiBhcHBsaWVkIHRvIGEgdmFyXFxuICAgb3IgYXRvbSwgcmV0dXJucyBpdHMgY3VycmVudCBzdGF0ZS4gV2hlbiBhcHBsaWVkIHRvIGEgZGVsYXksIGZvcmNlc1xcbiAgIGl0IGlmIG5vdCBhbHJlYWR5IGZvcmNlZC4gU2VlIGFsc28gLSByZWFsaXplZD8uXCJcbiBbb11cbiAoLWRlcmVmIG8pKVxuIn0gezpzeW0gYXNzb2MsIDptZXRhIHs6ZG9jICJhc3NvY1tpYXRlXS4gV2hlbiBhcHBsaWVkIHRvIGEgbWFwLCByZXR1cm5zIGEgbmV3IG1hcCBvZiB0aGVcbiAgIHNhbWUgKGhhc2hlZC9zb3J0ZWQpIHR5cGUsIHRoYXQgY29udGFpbnMgdGhlIG1hcHBpbmcgb2Yga2V5KHMpIHRvXG4gICB2YWwocykuIFdoZW4gYXBwbGllZCB0byBhIHZlY3RvciwgcmV0dXJucyBhIG5ldyB2ZWN0b3IgdGhhdFxuICAgY29udGFpbnMgdmFsIGF0IGluZGV4LiBOb3RlIC0gaW5kZXggbXVzdCBiZSA8PSAoY291bnQgdmVjdG9yKS4iLCA6YXJnbGlzdHMgW1tjb2xsIGsgdl0gW2NvbGwgayB2ICYga3ZzXV19LCA6c291cmNlICIoZGVmblxuIGFzc29jXG4gXCJhc3NvY1tpYXRlXS4gV2hlbiBhcHBsaWVkIHRvIGEgbWFwLCByZXR1cm5zIGEgbmV3IG1hcCBvZiB0aGVcXG4gICBzYW1lIChoYXNoZWQvc29ydGVkKSB0eXBlLCB0aGF0IGNvbnRhaW5zIHRoZSBtYXBwaW5nIG9mIGtleShzKSB0b1xcbiAgIHZhbChzKS4gV2hlbiBhcHBsaWVkIHRvIGEgdmVjdG9yLCByZXR1cm5zIGEgbmV3IHZlY3RvciB0aGF0XFxuICAgY29udGFpbnMgdmFsIGF0IGluZGV4LiBOb3RlIC0gaW5kZXggbXVzdCBiZSA8PSAoY291bnQgdmVjdG9yKS5cIlxuIChbY29sbCBrIHZdXG4gIChpZlxuICAgKGltcGxlbWVudHM/IElBc3NvY2lhdGl2ZSBjb2xsKVxuICAgKC1hc3NvYyBjb2xsIGsgdilcbiAgIChpZi1ub3QgKG5pbD8gY29sbCkgKC1hc3NvYyBjb2xsIGsgdikgKGFycmF5LW1hcCBrIHYpKSkpXG4gKFtjb2xsIGsgdiAmIGt2c11cbiAgKGxldFxuICAgW3JldCAoYXNzb2MgY29sbCBrIHYpXVxuICAgKGlmIGt2cyAocmVjdXIgcmV0IChmaXJzdCBrdnMpIChzZWNvbmQga3ZzKSAobm5leHQga3ZzKSkgcmV0KSkpKVxuIn0gezpzeW0gdHJhbnNpZW50LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG5ldywgdHJhbnNpZW50IHZlcnNpb24gb2YgdGhlIGNvbGxlY3Rpb24sIGluIGNvbnN0YW50IHRpbWUuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0cmFuc2llbnRcbiBcIlJldHVybnMgYSBuZXcsIHRyYW5zaWVudCB2ZXJzaW9uIG9mIHRoZSBjb2xsZWN0aW9uLCBpbiBjb25zdGFudCB0aW1lLlwiXG4gW2NvbGxdXG4gKC1hcy10cmFuc2llbnQgY29sbCkpXG4ifSB7OnN5bSAtZGlzam9pbiwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBuZXcgY29sbGVjdGlvbiBvZiBjb2xsIHRoYXQgZG9lcyBub3QgY29udGFpbiB2LiIsIDphcmdsaXN0cyAoW2NvbGwgdl0pfSwgOnByb3RvY29sIElTZXR9IHs6c3ltIGNodW5rLWNvbnMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbY2h1bmsgcmVzdF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjaHVuay1jb25zXG4gW2NodW5rIHJlc3RdXG4gKGlmICh6ZXJvPyAoLWNvdW50IGNodW5rKSkgcmVzdCAoQ2h1bmtlZENvbnMuIGNodW5rIHJlc3QgbmlsIG5pbCkpKVxuIn0gezpzeW0gY29tcGFyYXRvciwgOm1ldGEgezpkb2MgIlJldHVybnMgYW4gSmF2YVNjcmlwdCBjb21wYXRpYmxlIGNvbXBhcmF0b3IgYmFzZWQgdXBvbiBwcmVkLiIsIDphcmdsaXN0cyAoW3ByZWRdKX0sIDpzb3VyY2UgIihkZWZuXG4gY29tcGFyYXRvclxuIFwiUmV0dXJucyBhbiBKYXZhU2NyaXB0IGNvbXBhdGlibGUgY29tcGFyYXRvciBiYXNlZCB1cG9uIHByZWQuXCJcbiBbcHJlZF1cbiAoZm4gW3ggeV0gKGNvbmQgKHByZWQgeCB5KSAtMSAocHJlZCB5IHgpIDEgOmVsc2UgMCkpKVxuIn0gezpzeW0gcHJpbnQtcHJlZml4LW1hcCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwcmVmaXggbSBwcmludC1vbmUgd3JpdGVyIG9wdHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gcHJpbnQtcHJlZml4LW1hcFxuIFtwcmVmaXggbSBwcmludC1vbmUgd3JpdGVyIG9wdHNdXG4gKHByLXNlcXVlbnRpYWwtd3JpdGVyXG4gIHdyaXRlclxuICAoZm5cbiAgIFtlIHcgb3B0c11cbiAgIChkb1xuICAgIChwcmludC1vbmUgKGtleSBlKSB3IG9wdHMpXG4gICAgKC13cml0ZSB3IFxcc3BhY2UpXG4gICAgKHByaW50LW9uZSAodmFsIGUpIHcgb3B0cykpKVxuICAoc3RyIHByZWZpeCBcIntcIilcbiAgXCIsIFwiXG4gIFwifVwiXG4gIG9wdHNcbiAgKHNlcSBtKSkpXG4ifSB7OnN5bSBzb3J0ZWQtbWFwLCA6bWV0YSB7OmRvYyAia2V5dmFsID0+IGtleSB2YWxcbiAgUmV0dXJucyBhIG5ldyBzb3J0ZWQgbWFwIHdpdGggc3VwcGxpZWQgbWFwcGluZ3MuIiwgOmFyZ2xpc3RzIFtbJiBrZXl2YWxzXV19LCA6c291cmNlICIoZGVmblxuIHNvcnRlZC1tYXBcbiBcImtleXZhbCA9PiBrZXkgdmFsXFxuICBSZXR1cm5zIGEgbmV3IHNvcnRlZCBtYXAgd2l0aCBzdXBwbGllZCBtYXBwaW5ncy5cIlxuIChbJiBrZXl2YWxzXVxuICAobG9vcFxuICAgW2luIChzZXEga2V5dmFscykgb3V0ICguLUVNUFRZIFBlcnNpc3RlbnRUcmVlTWFwKV1cbiAgIChpZiBpbiAocmVjdXIgKG5uZXh0IGluKSAoYXNzb2Mgb3V0IChmaXJzdCBpbikgKHNlY29uZCBpbikpKSBvdXQpKSkpXG4ifSB7OnN5bSBkcm9wLXdoaWxlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2YgdGhlIGl0ZW1zIGluIGNvbGwgc3RhcnRpbmcgZnJvbSB0aGVcbiAgZmlyc3QgaXRlbSBmb3Igd2hpY2ggKHByZWQgaXRlbSkgcmV0dXJucyBsb2dpY2FsIGZhbHNlLiAgUmV0dXJucyBhXG4gIHN0YXRlZnVsIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLiIsIDphcmdsaXN0cyBbW3ByZWRdIFtwcmVkIGNvbGxdXX0sIDpzb3VyY2UgIihkZWZuXG4gZHJvcC13aGlsZVxuIFwiUmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2YgdGhlIGl0ZW1zIGluIGNvbGwgc3RhcnRpbmcgZnJvbSB0aGVcXG4gIGZpcnN0IGl0ZW0gZm9yIHdoaWNoIChwcmVkIGl0ZW0pIHJldHVybnMgbG9naWNhbCBmYWxzZS4gIFJldHVybnMgYVxcbiAgc3RhdGVmdWwgdHJhbnNkdWNlciB3aGVuIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuXCJcbiAoW3ByZWRdXG4gIChmblxuICAgW3JmXVxuICAgKGxldFxuICAgIFtkYSAodm9sYXRpbGUhIHRydWUpXVxuICAgIChmblxuICAgICAoW10gKHJmKSlcbiAgICAgKFtyZXN1bHRdIChyZiByZXN1bHQpKVxuICAgICAoW3Jlc3VsdCBpbnB1dF1cbiAgICAgIChsZXRcbiAgICAgICBbZHJvcD8gQGRhXVxuICAgICAgIChpZlxuICAgICAgICAoYW5kIGRyb3A/IChwcmVkIGlucHV0KSlcbiAgICAgICAgcmVzdWx0XG4gICAgICAgIChkbyAodnJlc2V0ISBkYSBuaWwpIChyZiByZXN1bHQgaW5wdXQpKSkpKSkpKSlcbiAoW3ByZWQgY29sbF1cbiAgKGxldFxuICAgW3N0ZXBcbiAgICAoZm5cbiAgICAgW3ByZWQgY29sbF1cbiAgICAgKGxldFxuICAgICAgW3MgKHNlcSBjb2xsKV1cbiAgICAgIChpZiAoYW5kIHMgKHByZWQgKGZpcnN0IHMpKSkgKHJlY3VyIHByZWQgKHJlc3QgcykpIHMpKSldXG4gICAobGF6eS1zZXEgKHN0ZXAgcHJlZCBjb2xsKSkpKSlcbiJ9IHs6c3ltIElXcml0ZXIsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3Igd3JpdGluZy4gQ3VycmVudGx5IG9ubHkgaW1wbGVtZW50ZWQgYnkgU3RyaW5nQnVmZmVyV3JpdGVyLiJ9LCA6bWV0aG9kcyAoLWZsdXNoIC13cml0ZSl9IHs6c3ltIHJlYWxpemVkPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiBhIHZhbHVlIGhhcyBiZWVuIHByb2R1Y2VkIGZvciBhIGRlbGF5IG9yIGxhenkgc2VxdWVuY2UuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWFsaXplZD9cbiBcIlJldHVybnMgdHJ1ZSBpZiBhIHZhbHVlIGhhcyBiZWVuIHByb2R1Y2VkIGZvciBhIGRlbGF5IG9yIGxhenkgc2VxdWVuY2UuXCJcbiBbeF1cbiAoLXJlYWxpemVkPyB4KSlcbiJ9IHs6c3ltICpwcmludC1mbiosIDptZXRhIHs6ZG9jICJFYWNoIHJ1bnRpbWUgZW52aXJvbm1lbnQgcHJvdmlkZXMgYSBkaWZmZXJlbnQgd2F5IHRvIHByaW50IG91dHB1dC5cbiAgV2hhdGV2ZXIgZnVuY3Rpb24gKnByaW50LWZuKiBpcyBib3VuZCB0byB3aWxsIGJlIHBhc3NlZCBhbnlcbiAgU3RyaW5ncyB3aGljaCBzaG91bGQgYmUgcHJpbnRlZC4ifSwgOnNvdXJjZSAiKGRlZm9uY2UgKnByaW50LWZuKiBuaWwpXG4ifSB7OnN5bSBjb21wYXJlLCA6bWV0YSB7OmRvYyAiQ29tcGFyYXRvci4gUmV0dXJucyBhIG5lZ2F0aXZlIG51bWJlciwgemVybywgb3IgYSBwb3NpdGl2ZSBudW1iZXJcbiAgd2hlbiB4IGlzIGxvZ2ljYWxseSAnbGVzcyB0aGFuJywgJ2VxdWFsIHRvJywgb3IgJ2dyZWF0ZXIgdGhhbidcbiAgeS4gVXNlcyBJQ29tcGFyYWJsZSBpZiBhdmFpbGFibGUgYW5kIGdvb2dsZS5hcnJheS5kZWZhdWx0Q29tcGFyZSBmb3Igb2JqZWN0c1xuIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHNwZWNpYWwtY2FzZXMgbmlsIHRvIGJlIGxlc3MgdGhhbiBhbnkgb3RoZXIgb2JqZWN0LiIsIDphcmdsaXN0cyAoW3ggeV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjb21wYXJlXG4gXCJDb21wYXJhdG9yLiBSZXR1cm5zIGEgbmVnYXRpdmUgbnVtYmVyLCB6ZXJvLCBvciBhIHBvc2l0aXZlIG51bWJlclxcbiAgd2hlbiB4IGlzIGxvZ2ljYWxseSAnbGVzcyB0aGFuJywgJ2VxdWFsIHRvJywgb3IgJ2dyZWF0ZXIgdGhhbidcXG4gIHkuIFVzZXMgSUNvbXBhcmFibGUgaWYgYXZhaWxhYmxlIGFuZCBnb29nbGUuYXJyYXkuZGVmYXVsdENvbXBhcmUgZm9yIG9iamVjdHNcXG4gb2YgdGhlIHNhbWUgdHlwZSBhbmQgc3BlY2lhbC1jYXNlcyBuaWwgdG8gYmUgbGVzcyB0aGFuIGFueSBvdGhlciBvYmplY3QuXCJcbiBbeCB5XVxuIChjb25kXG4gIChpZGVudGljYWw/IHggeSlcbiAgMFxuICAobmlsPyB4KVxuICAtMVxuICAobmlsPyB5KVxuICAxXG4gIChudW1iZXI/IHgpXG4gIChpZlxuICAgKG51bWJlcj8geSlcbiAgIChnYXJyYXkvZGVmYXVsdENvbXBhcmUgeCB5KVxuICAgKHRocm93IChqcy9FcnJvci4gKHN0ciBcIkNhbm5vdCBjb21wYXJlIFwiIHggXCIgdG8gXCIgeSkpKSlcbiAgKHNhdGlzZmllcz8gSUNvbXBhcmFibGUgeClcbiAgKC1jb21wYXJlIHggeSlcbiAgOmVsc2VcbiAgKGlmXG4gICAoYW5kXG4gICAgKG9yIChzdHJpbmc/IHgpIChhcnJheT8geCkgKHRydWU/IHgpIChmYWxzZT8geCkpXG4gICAgKGlkZW50aWNhbD8gKHR5cGUgeCkgKHR5cGUgeSkpKVxuICAgKGdhcnJheS9kZWZhdWx0Q29tcGFyZSB4IHkpXG4gICAodGhyb3cgKGpzL0Vycm9yLiAoc3RyIFwiQ2Fubm90IGNvbXBhcmUgXCIgeCBcIiB0byBcIiB5KSkpKSkpXG4ifSB7OnN5bSBjb21wbGVtZW50LCA6bWV0YSB7OmRvYyAiVGFrZXMgYSBmbiBmIGFuZCByZXR1cm5zIGEgZm4gdGhhdCB0YWtlcyB0aGUgc2FtZSBhcmd1bWVudHMgYXMgZixcbiAgaGFzIHRoZSBzYW1lIGVmZmVjdHMsIGlmIGFueSwgYW5kIHJldHVybnMgdGhlIG9wcG9zaXRlIHRydXRoIHZhbHVlLiIsIDphcmdsaXN0cyAoW2ZdKX0sIDpzb3VyY2UgIihkZWZuXG4gY29tcGxlbWVudFxuIFwiVGFrZXMgYSBmbiBmIGFuZCByZXR1cm5zIGEgZm4gdGhhdCB0YWtlcyB0aGUgc2FtZSBhcmd1bWVudHMgYXMgZixcXG4gIGhhcyB0aGUgc2FtZSBlZmZlY3RzLCBpZiBhbnksIGFuZCByZXR1cm5zIHRoZSBvcHBvc2l0ZSB0cnV0aCB2YWx1ZS5cIlxuIFtmXVxuIChmblxuICAoW10gKG5vdCAoZikpKVxuICAoW3hdIChub3QgKGYgeCkpKVxuICAoW3ggeV0gKG5vdCAoZiB4IHkpKSlcbiAgKFt4IHkgJiB6c10gKG5vdCAoYXBwbHkgZiB4IHkgenMpKSkpKVxuIn0gezpzeW0gLWFzc29jISwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBuZXcgdHJhbnNpZW50IGNvbGxlY3Rpb24gb2YgdGNvbGwgd2l0aCBhIG1hcHBpbmcgZnJvbSBrZXkgdG9cbiAgICAgdmFsIGFkZGVkIHRvIGl0LiIsIDphcmdsaXN0cyAoW3Rjb2xsIGtleSB2YWxdKX0sIDpwcm90b2NvbCBJVHJhbnNpZW50QXNzb2NpYXRpdmV9IHs6c3ltICpwcmludC1kdXAqLCA6bWV0YSB7OmRvYyAiV2hlbiBzZXQgdG8gbG9naWNhbCB0cnVlLCBvYmplY3RzIHdpbGwgYmUgcHJpbnRlZCBpbiBhIHdheSB0aGF0IHByZXNlcnZlc1xuICB0aGVpciB0eXBlIHdoZW4gcmVhZCBpbiBsYXRlci5cblxuICBEZWZhdWx0cyB0byBmYWxzZS4ifSwgOnNvdXJjZSAiKGRlZiAqcHJpbnQtZHVwKiBmYWxzZSlcbiJ9IHs6c3ltIHN0cmluZy1pdGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIHN0cmluZy1pdGVyIFt4XSAoU3RyaW5nSXRlci4geCAwKSlcbiJ9IHs6c3ltIC1rZXktPmpzLCA6bWV0YSB7OmRvYyAiVHJhbnNmb3JtcyBtYXAga2V5cyB0byB2YWxpZCBKYXZhU2NyaXB0IGtleXMuIEFyYml0cmFyeSBrZXlzIGFyZVxuICBlbmNvZGVkIHRvIHRoZWlyIHN0cmluZyByZXByZXNlbnRhdGlvbiB2aWEgKHByLXN0ciB4KSIsIDphcmdsaXN0cyAoW3hdKX0sIDpwcm90b2NvbCBJRW5jb2RlSlN9IHs6c3ltIElEZXJlZiwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhZGRpbmcgZGVyZWZlcmVuY2UgZnVuY3Rpb25hbGl0eSB0byBhIHJlZmVyZW5jZS4ifSwgOm1ldGhvZHMgKC1kZXJlZil9IHs6c3ltIHNlcXVlbmNlLCA6bWV0YSB7OmRvYyAiQ29lcmNlcyBjb2xsIHRvIGEgKHBvc3NpYmx5IGVtcHR5KSBzZXF1ZW5jZSwgaWYgaXQgaXMgbm90IGFscmVhZHlcbiAgb25lLiBXaWxsIG5vdCBmb3JjZSBhIGxhenkgc2VxLiAoc2VxdWVuY2UgbmlsKSB5aWVsZHMgKCksIFdoZW4gYVxuICB0cmFuc2R1Y2VyIGlzIHN1cHBsaWVkLCByZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiBhcHBsaWNhdGlvbnMgb2ZcbiAgdGhlIHRyYW5zZm9ybSB0byB0aGUgaXRlbXMgaW4gY29sbChzKSwgaS5lLiB0byB0aGUgc2V0IG9mIGZpcnN0XG4gIGl0ZW1zIG9mIGVhY2ggY29sbCwgZm9sbG93ZWQgYnkgdGhlIHNldCBvZiBzZWNvbmRcbiAgaXRlbXMgaW4gZWFjaCBjb2xsLCB1bnRpbCBhbnkgb25lIG9mIHRoZSBjb2xscyBpcyBleGhhdXN0ZWQuICBBbnlcbiAgcmVtYWluaW5nIGl0ZW1zIGluIG90aGVyIGNvbGxzIGFyZSBpZ25vcmVkLiBUaGUgdHJhbnNmb3JtIHNob3VsZCBhY2NlcHRcbiAgbnVtYmVyLW9mLWNvbGxzIGFyZ3VtZW50cyIsIDphcmdsaXN0cyBbW2NvbGxdIFt4Zm9ybSBjb2xsXSBbeGZvcm0gY29sbCAmIGNvbGxzXV19LCA6c291cmNlICIoZGVmblxuIHNlcXVlbmNlXG4gXCJDb2VyY2VzIGNvbGwgdG8gYSAocG9zc2libHkgZW1wdHkpIHNlcXVlbmNlLCBpZiBpdCBpcyBub3QgYWxyZWFkeVxcbiAgb25lLiBXaWxsIG5vdCBmb3JjZSBhIGxhenkgc2VxLiAoc2VxdWVuY2UgbmlsKSB5aWVsZHMgKCksIFdoZW4gYVxcbiAgdHJhbnNkdWNlciBpcyBzdXBwbGllZCwgcmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2YgYXBwbGljYXRpb25zIG9mXFxuICB0aGUgdHJhbnNmb3JtIHRvIHRoZSBpdGVtcyBpbiBjb2xsKHMpLCBpLmUuIHRvIHRoZSBzZXQgb2YgZmlyc3RcXG4gIGl0ZW1zIG9mIGVhY2ggY29sbCwgZm9sbG93ZWQgYnkgdGhlIHNldCBvZiBzZWNvbmRcXG4gIGl0ZW1zIGluIGVhY2ggY29sbCwgdW50aWwgYW55IG9uZSBvZiB0aGUgY29sbHMgaXMgZXhoYXVzdGVkLiAgQW55XFxuICByZW1haW5pbmcgaXRlbXMgaW4gb3RoZXIgY29sbHMgYXJlIGlnbm9yZWQuIFRoZSB0cmFuc2Zvcm0gc2hvdWxkIGFjY2VwdFxcbiAgbnVtYmVyLW9mLWNvbGxzIGFyZ3VtZW50c1wiXG4gKFtjb2xsXSAoaWYgKHNlcT8gY29sbCkgY29sbCAob3IgKHNlcSBjb2xsKSAoKSkpKVxuIChbeGZvcm0gY29sbF1cbiAgKG9yXG4gICAoY2h1bmtJdGVyYXRvclNlcSAoLmNyZWF0ZSBUcmFuc2Zvcm1lckl0ZXJhdG9yIHhmb3JtIChpdGVyIGNvbGwpKSlcbiAgICgpKSlcbiAoW3hmb3JtIGNvbGwgJiBjb2xsc11cbiAgKG9yXG4gICAoY2h1bmtJdGVyYXRvclNlcVxuICAgICguY3JlYXRlTXVsdGlcbiAgICAgVHJhbnNmb3JtZXJJdGVyYXRvclxuICAgICB4Zm9ybVxuICAgICAobWFwIGl0ZXIgKGNvbnMgY29sbCBjb2xscykpKSlcbiAgICgpKSkpXG4ifSB7OnN5bSBjb25zdGFudGx5LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYW55IG51bWJlciBvZiBhcmd1bWVudHMgYW5kIHJldHVybnMgeC4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGNvbnN0YW50bHlcbiBcIlJldHVybnMgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGFueSBudW1iZXIgb2YgYXJndW1lbnRzIGFuZCByZXR1cm5zIHguXCJcbiBbeF1cbiAoZm4gWyYgYXJnc10geCkpXG4ifSB7OnN5bSBjaHVua2VkLXNlcSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1t2ZWMgaSBvZmZdIFt2ZWMgbm9kZSBpIG9mZl0gW3ZlYyBub2RlIGkgb2ZmIG1ldGFdXX0sIDpzb3VyY2UgIihkZWZuXG4gY2h1bmtlZC1zZXFcbiAoW3ZlYyBpIG9mZl0gKENodW5rZWRTZXEuIHZlYyAoYXJyYXktZm9yIHZlYyBpKSBpIG9mZiBuaWwgbmlsKSlcbiAoW3ZlYyBub2RlIGkgb2ZmXSAoQ2h1bmtlZFNlcS4gdmVjIG5vZGUgaSBvZmYgbmlsIG5pbCkpXG4gKFt2ZWMgbm9kZSBpIG9mZiBtZXRhXSAoQ2h1bmtlZFNlcS4gdmVjIG5vZGUgaSBvZmYgbWV0YSBuaWwpKSlcbiJ9IHs6c3ltIElTb3J0ZWQsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgYSBjb2xsZWN0aW9uIHdoaWNoIGNhbiByZXByZXNlbnQgdGhlaXIgaXRlbXNcbiAgaW4gYSBzb3J0ZWQgbWFubmVyLiAifSwgOm1ldGhvZHMgKC1jb21wYXJhdG9yIC1lbnRyeS1rZXkgLXNvcnRlZC1zZXEgLXNvcnRlZC1zZXEtZnJvbSl9IHs6c3ltIG1ha2UtYXJyYXksIDptZXRhIHs6ZG9jICJDb25zdHJ1Y3QgYSBKYXZhU2NyaXB0IGFycmF5IG9mIHRoZSBzcGVjaWZpZWQgZGltZW5zaW9ucy4gQWNjZXB0cyBpZ25vcmVkXG4gIHR5cGUgYXJndW1lbnQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBDbG9qdXJlLiBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gZWZmaWNpZW50XG4gIHdheSB0byBhbGxvY2F0ZSBtdWx0aS1kaW1lbnNpb25hbCBhcnJheXMgaW4gSmF2YVNjcmlwdDsgYXMgc3VjaCwgdGhpcyBmdW5jdGlvblxuICB3aWxsIHJ1biBpbiBwb2x5bm9taWFsIHRpbWUgd2hlbiBjYWxsZWQgd2l0aCAzIG9yIG1vcmUgYXJndW1lbnRzLiIsIDphcmdsaXN0cyBbW3NpemVdIFt0eXBlIHNpemVdIFt0eXBlIHNpemUgJiBtb3JlLXNpemVzXV19LCA6c291cmNlICIoZGVmblxuIG1ha2UtYXJyYXlcbiBcIkNvbnN0cnVjdCBhIEphdmFTY3JpcHQgYXJyYXkgb2YgdGhlIHNwZWNpZmllZCBkaW1lbnNpb25zLiBBY2NlcHRzIGlnbm9yZWRcXG4gIHR5cGUgYXJndW1lbnQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBDbG9qdXJlLiBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gZWZmaWNpZW50XFxuICB3YXkgdG8gYWxsb2NhdGUgbXVsdGktZGltZW5zaW9uYWwgYXJyYXlzIGluIEphdmFTY3JpcHQ7IGFzIHN1Y2gsIHRoaXMgZnVuY3Rpb25cXG4gIHdpbGwgcnVuIGluIHBvbHlub21pYWwgdGltZSB3aGVuIGNhbGxlZCB3aXRoIDMgb3IgbW9yZSBhcmd1bWVudHMuXCJcbiAoW3NpemVdIChqcy9BcnJheS4gc2l6ZSkpXG4gKFt0eXBlIHNpemVdIChtYWtlLWFycmF5IHNpemUpKVxuIChbdHlwZSBzaXplICYgbW9yZS1zaXplc11cbiAgKGxldFxuICAgW2RpbXMgbW9yZS1zaXplcyBkaW1hcnJheSAobWFrZS1hcnJheSBzaXplKV1cbiAgIChkb3RpbWVzXG4gICAgW2kgKGFsZW5ndGggZGltYXJyYXkpXVxuICAgIChhc2V0IGRpbWFycmF5IGkgKGFwcGx5IG1ha2UtYXJyYXkgbmlsIGRpbXMpKSlcbiAgIGRpbWFycmF5KSkpXG4ifSB7OnN5bSBzaG9ydHMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gc2hvcnRzIFt4XSB4KVxuIn0gezpzeW0gKnVuY2hlY2tlZC1pZiosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICp1bmNoZWNrZWQtaWYqIGZhbHNlKVxuIn0gezpzeW0gZW5hYmxlLWNvbnNvbGUtcHJpbnQhLCA6bWV0YSB7OmRvYyAiU2V0ICpwcmludC1mbiogdG8gY29uc29sZS5sb2ciLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gZW5hYmxlLWNvbnNvbGUtcHJpbnQhXG4gXCJTZXQgKnByaW50LWZuKiB0byBjb25zb2xlLmxvZ1wiXG4gW11cbiAoc2V0ISAqcHJpbnQtbmV3bGluZSogZmFsc2UpXG4gKHNldC1wcmludC1mbiFcbiAgKGZuXG4gICBbXVxuICAgKGxldFxuICAgIFt4cyAoanMtYXJndW1lbnRzKV1cbiAgICAoLmFwcGx5ICguLWxvZyBqcy9jb25zb2xlKSBqcy9jb25zb2xlIChnYXJyYXkvY2xvbmUgeHMpKSkpKVxuIChzZXQtcHJpbnQtZXJyLWZuIVxuICAoZm5cbiAgIFtdXG4gICAobGV0XG4gICAgW3hzIChqcy1hcmd1bWVudHMpXVxuICAgICguYXBwbHkgKC4tZXJyb3IganMvY29uc29sZSkganMvY29uc29sZSAoZ2FycmF5L2Nsb25lIHhzKSkpKSlcbiBuaWwpXG4ifSB7OnN5bSAtZmx1c2gsIDptZXRhIHs6ZG9jICJGbHVzaCB3cml0ZXIuIiwgOmFyZ2xpc3RzIChbd3JpdGVyXSl9LCA6cHJvdG9jb2wgSVdyaXRlcn0gezpzeW0gY29tcGxldGluZywgOm1ldGEgezpkb2MgIlRha2VzIGEgcmVkdWNpbmcgZnVuY3Rpb24gZiBvZiAyIGFyZ3MgYW5kIHJldHVybnMgYSBmbiBzdWl0YWJsZSBmb3JcbiAgdHJhbnNkdWNlIGJ5IGFkZGluZyBhbiBhcml0eS0xIHNpZ25hdHVyZSB0aGF0IGNhbGxzIGNmIChkZWZhdWx0IC1cbiAgaWRlbnRpdHkpIG9uIHRoZSByZXN1bHQgYXJndW1lbnQuIiwgOmFyZ2xpc3RzIFtbZl0gW2YgY2ZdXX0sIDpzb3VyY2UgIihkZWZuXG4gY29tcGxldGluZ1xuIFwiVGFrZXMgYSByZWR1Y2luZyBmdW5jdGlvbiBmIG9mIDIgYXJncyBhbmQgcmV0dXJucyBhIGZuIHN1aXRhYmxlIGZvclxcbiAgdHJhbnNkdWNlIGJ5IGFkZGluZyBhbiBhcml0eS0xIHNpZ25hdHVyZSB0aGF0IGNhbGxzIGNmIChkZWZhdWx0IC1cXG4gIGlkZW50aXR5KSBvbiB0aGUgcmVzdWx0IGFyZ3VtZW50LlwiXG4gKFtmXSAoY29tcGxldGluZyBmIGlkZW50aXR5KSlcbiAoW2YgY2ZdIChmbiAoW10gKGYpKSAoW3hdIChjZiB4KSkgKFt4IHldIChmIHggeSkpKSkpXG4ifSB7OnN5bSB1bmNoZWNrZWQtbmVnYXRlLWludCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiB1bmNoZWNrZWQtbmVnYXRlLWludCBbeF0gKGNsanMuY29yZS91bmNoZWNrZWQtbmVnYXRlLWludCB4KSlcbiJ9IHs6c3ltIGhhc2gtdW5vcmRlcmVkLWNvbGwsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBoYXNoIGNvZGUsIGNvbnNpc3RlbnQgd2l0aCA9LCBmb3IgYW4gZXh0ZXJuYWwgdW5vcmRlcmVkXG4gICBjb2xsZWN0aW9uIGltcGxlbWVudGluZyBJdGVyYWJsZS4gRm9yIG1hcHMsIHRoZSBpdGVyYXRvciBzaG91bGRcbiAgIHJldHVybiBtYXAgZW50cmllcyB3aG9zZSBoYXNoIGlzIGNvbXB1dGVkIGFzXG4gICAgIChoYXNoLW9yZGVyZWQtY29sbCBbayB2XSkuXG4gICBTZWUgaHR0cDovL2Nsb2p1cmUub3JnL2RhdGFfc3RydWN0dXJlcyNoYXNoIGZvciBmdWxsIGFsZ29yaXRobXMuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBoYXNoLXVub3JkZXJlZC1jb2xsXG4gXCJSZXR1cm5zIHRoZSBoYXNoIGNvZGUsIGNvbnNpc3RlbnQgd2l0aCA9LCBmb3IgYW4gZXh0ZXJuYWwgdW5vcmRlcmVkXFxuICAgY29sbGVjdGlvbiBpbXBsZW1lbnRpbmcgSXRlcmFibGUuIEZvciBtYXBzLCB0aGUgaXRlcmF0b3Igc2hvdWxkXFxuICAgcmV0dXJuIG1hcCBlbnRyaWVzIHdob3NlIGhhc2ggaXMgY29tcHV0ZWQgYXNcXG4gICAgIChoYXNoLW9yZGVyZWQtY29sbCBbayB2XSkuXFxuICAgU2VlIGh0dHA6Ly9jbG9qdXJlLm9yZy9kYXRhX3N0cnVjdHVyZXMjaGFzaCBmb3IgZnVsbCBhbGdvcml0aG1zLlwiXG4gW2NvbGxdXG4gKGxvb3BcbiAgW24gMCBoYXNoLWNvZGUgMCBjb2xsIChzZXEgY29sbCldXG4gIChpZi1ub3RcbiAgIChuaWw/IGNvbGwpXG4gICAocmVjdXJcbiAgICAoaW5jIG4pXG4gICAgKGJpdC1vciAoKyBoYXNoLWNvZGUgKGhhc2ggKGZpcnN0IGNvbGwpKSkgMClcbiAgICAobmV4dCBjb2xsKSlcbiAgIChtaXgtY29sbGVjdGlvbi1oYXNoIGhhc2gtY29kZSBuKSkpKVxuIn0gezpzeW0gcmVwZWF0LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGxhenkgKGluZmluaXRlISwgb3IgbGVuZ3RoIG4gaWYgc3VwcGxpZWQpIHNlcXVlbmNlIG9mIHhzLiIsIDphcmdsaXN0cyBbW3hdIFtuIHhdXX0sIDpzb3VyY2UgIihkZWZuXG4gcmVwZWF0XG4gXCJSZXR1cm5zIGEgbGF6eSAoaW5maW5pdGUhLCBvciBsZW5ndGggbiBpZiBzdXBwbGllZCkgc2VxdWVuY2Ugb2YgeHMuXCJcbiAoW3hdIChSZXBlYXQuIG5pbCAtMSB4IG5pbCBuaWwpKVxuIChbbiB4XSAoaWYgKHBvcz8gbikgKFJlcGVhdC4gbmlsIG4geCBuaWwgbmlsKSAoLi1FTVBUWSBMaXN0KSkpKVxuIn0gezpzeW0gdW5jaGVja2VkLWluYywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiB1bmNoZWNrZWQtaW5jIFt4XSAoY2xqcy5jb3JlL3VuY2hlY2tlZC1pbmMgeCkpXG4ifSB7OnN5bSBudGhuZXh0LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbnRoIG5leHQgb2YgY29sbCwgKHNlcSBjb2xsKSB3aGVuIG4gaXMgMC4iLCA6YXJnbGlzdHMgKFtjb2xsIG5dKX0sIDpzb3VyY2UgIihkZWZuXG4gbnRobmV4dFxuIFwiUmV0dXJucyB0aGUgbnRoIG5leHQgb2YgY29sbCwgKHNlcSBjb2xsKSB3aGVuIG4gaXMgMC5cIlxuIFtjb2xsIG5dXG4gKGxvb3BcbiAgW24gbiB4cyAoc2VxIGNvbGwpXVxuICAoaWYgKGFuZCB4cyAocG9zPyBuKSkgKHJlY3VyIChkZWMgbikgKG5leHQgeHMpKSB4cykpKVxuIn0gezpzeW0gZ2V0LXZhbGlkYXRvciwgOm1ldGEgezpkb2MgIkdldHMgdGhlIHZhbGlkYXRvci1mbiBmb3IgYSB2YXIvcmVmL2FnZW50L2F0b20uIiwgOmFyZ2xpc3RzIChbaXJlZl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtdmFsaWRhdG9yXG4gXCJHZXRzIHRoZSB2YWxpZGF0b3ItZm4gZm9yIGEgdmFyL3JlZi9hZ2VudC9hdG9tLlwiXG4gW2lyZWZdXG4gKC4tdmFsaWRhdG9yIGlyZWYpKVxuIn0gezpzeW0gbnVtYmVyPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB4IGlzIGEgSmF2YVNjcmlwdCBudW1iZXIuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBudW1iZXI/XG4gXCJSZXR1cm5zIHRydWUgaWYgeCBpcyBhIEphdmFTY3JpcHQgbnVtYmVyLlwiXG4gW3hdXG4gKGNsanMuY29yZS9udW1iZXI/IHgpKVxuIn0gezpzeW0gLWNvbmohLCA6bWV0YSB7OmRvYyAiQWRkcyB2YWx1ZSB2YWwgdG8gdGNvbGwgYW5kIHJldHVybnMgdGNvbGwuIiwgOmFyZ2xpc3RzIChbdGNvbGwgdmFsXSl9LCA6cHJvdG9jb2wgSVRyYW5zaWVudENvbGxlY3Rpb259IHs6c3ltIGNodW5rLW5leHQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBjaHVuay1uZXh0XG4gW3NdXG4gKGlmXG4gIChpbXBsZW1lbnRzPyBJQ2h1bmtlZE5leHQgcylcbiAgKC1jaHVua2VkLW5leHQgcylcbiAgKHNlcSAoLWNodW5rZWQtcmVzdCBzKSkpKVxuIn0gezpzeW0gcHJpbnQtc3RyLCA6bWV0YSB7OmRvYyAicHJpbnQgdG8gYSBzdHJpbmcsIHJldHVybmluZyBpdCIsIDphcmdsaXN0cyAoWyYgb2Jqc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcmludC1zdHJcbiBcInByaW50IHRvIGEgc3RyaW5nLCByZXR1cm5pbmcgaXRcIlxuIFsmIG9ianNdXG4gKHByLXN0ci13aXRoLW9wdHMgb2JqcyAoYXNzb2MgKHByLW9wdHMpIDpyZWFkYWJseSBmYWxzZSkpKVxuIn0gezpzeW0gbm90LWFueT8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIGZhbHNlIGlmIChwcmVkIHgpIGlzIGxvZ2ljYWwgdHJ1ZSBmb3IgYW55IHggaW4gY29sbCxcbiAgZWxzZSB0cnVlLiIsIDphcmdsaXN0cyAoW3ByZWQgY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBub3QtYW55P1xuIFwiUmV0dXJucyBmYWxzZSBpZiAocHJlZCB4KSBpcyBsb2dpY2FsIHRydWUgZm9yIGFueSB4IGluIGNvbGwsXFxuICBlbHNlIHRydWUuXCJcbiBbcHJlZCBjb2xsXVxuIChub3QgKHNvbWUgcHJlZCBjb2xsKSkpXG4ifSB7OnN5bSBpbnRvLWFycmF5LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhbiBhcnJheSB3aXRoIGNvbXBvbmVudHMgc2V0IHRvIHRoZSB2YWx1ZXMgaW4gYXNlcS4gT3B0aW9uYWwgdHlwZVxuICBhcmd1bWVudCBhY2NlcHRlZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIENsb2p1cmUuIiwgOmFyZ2xpc3RzIFtbYXNlcV0gW3R5cGUgYXNlcV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBpbnRvLWFycmF5XG4gXCJSZXR1cm5zIGFuIGFycmF5IHdpdGggY29tcG9uZW50cyBzZXQgdG8gdGhlIHZhbHVlcyBpbiBhc2VxLiBPcHRpb25hbCB0eXBlXFxuICBhcmd1bWVudCBhY2NlcHRlZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIENsb2p1cmUuXCJcbiAoW2FzZXFdIChpbnRvLWFycmF5IG5pbCBhc2VxKSlcbiAoW3R5cGUgYXNlcV0gKHJlZHVjZSAoZm4gW2EgeF0gKC5wdXNoIGEgeCkgYSkgKGFycmF5KSBhc2VxKSkpXG4ifSB7OnN5bSAtaGFzaCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGhhc2ggY29kZSBvZiBvLiIsIDphcmdsaXN0cyAoW29dKX0sIDpwcm90b2NvbCBJSGFzaH0gezpzeW0gcXVhbGlmaWVkLXN5bWJvbD8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IGlzIGEgc3ltYm9sIHdpdGggYSBuYW1lc3BhY2UiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHF1YWxpZmllZC1zeW1ib2w/XG4gXCJSZXR1cm4gdHJ1ZSBpZiB4IGlzIGEgc3ltYm9sIHdpdGggYSBuYW1lc3BhY2VcIlxuIFt4XVxuIChib29sZWFuIChhbmQgKHN5bWJvbD8geCkgKG5hbWVzcGFjZSB4KSB0cnVlKSkpXG4ifSB7OnN5bSAtZGlzc29jISwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBuZXcgdHJhbnNpZW50IGNvbGxlY3Rpb24gb2YgdGNvbGwgd2l0aG91dCB0aGUgbWFwcGluZyBmb3Iga2V5LiIsIDphcmdsaXN0cyAoW3Rjb2xsIGtleV0pfSwgOnByb3RvY29sIElUcmFuc2llbnRNYXB9IHs6c3ltIGNodW5rLWJ1ZmZlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjYXBhY2l0eV0pfSwgOnNvdXJjZSAiKGRlZm4gY2h1bmstYnVmZmVyIFtjYXBhY2l0eV0gKENodW5rQnVmZmVyLiAobWFrZS1hcnJheSBjYXBhY2l0eSkgMCkpXG4ifSB7OnN5bSBzZXFhYmxlPywgOm1ldGEgezpkb2MgIlJldHVybiB0cnVlIGlmIHRoZSBzZXEgZnVuY3Rpb24gaXMgc3VwcG9ydGVkIGZvciBzIiwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBzZXFhYmxlP1xuIFwiUmV0dXJuIHRydWUgaWYgdGhlIHNlcSBmdW5jdGlvbiBpcyBzdXBwb3J0ZWQgZm9yIHNcIlxuIFtzXVxuIChvciAobmlsPyBzKSAoc2F0aXNmaWVzPyBJU2VxYWJsZSBzKSAoYXJyYXk/IHMpIChzdHJpbmc/IHMpKSlcbiJ9IHs6c3ltIHN5bWJvbD8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IGlzIGEgU3ltYm9sIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gc3ltYm9sPyBcIlJldHVybiB0cnVlIGlmIHggaXMgYSBTeW1ib2xcIiBbeF0gKGluc3RhbmNlPyBTeW1ib2wgeCkpXG4ifSB7OnN5bSBtMy1oYXNoLXVuZW5jb2RlZC1jaGFycywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtpbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtMy1oYXNoLXVuZW5jb2RlZC1jaGFyc1xuIFtpbl1cbiAobGV0XG4gIFtoMVxuICAgKGxvb3BcbiAgICBbaSAxIGgxIG0zLXNlZWRdXG4gICAgKGlmXG4gICAgICg8IGkgKC4tbGVuZ3RoIGluKSlcbiAgICAgKHJlY3VyXG4gICAgICAoKyBpIDIpXG4gICAgICAobTMtbWl4LUgxXG4gICAgICAgaDFcbiAgICAgICAobTMtbWl4LUsxXG4gICAgICAgIChiaXQtb3JcbiAgICAgICAgICguY2hhckNvZGVBdCBpbiAoZGVjIGkpKVxuICAgICAgICAgKGJpdC1zaGlmdC1sZWZ0ICguY2hhckNvZGVBdCBpbiBpKSAxNikpKSkpXG4gICAgIGgxKSlcbiAgIGgxXG4gICAoaWZcbiAgICAoPT0gKGJpdC1hbmQgKC4tbGVuZ3RoIGluKSAxKSAxKVxuICAgIChiaXQteG9yIGgxIChtMy1taXgtSzEgKC5jaGFyQ29kZUF0IGluIChkZWMgKC4tbGVuZ3RoIGluKSkpKSlcbiAgICBoMSldXG4gIChtMy1mbWl4IGgxIChpbXVsIDIgKC4tbGVuZ3RoIGluKSkpKSlcbiJ9IHs6c3ltIHVuY2hlY2tlZC1jaGFyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIHVuY2hlY2tlZC1jaGFyIFt4XSB4KVxuIn0gezpzeW0gc3lzdGVtLXRpbWUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGhpZ2hlc3QgcmVzb2x1dGlvbiB0aW1lIG9mZmVyZWQgYnkgaG9zdCBpbiBtaWxsaXNlY29uZHMuIiwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIHN5c3RlbS10aW1lXG4gXCJSZXR1cm5zIGhpZ2hlc3QgcmVzb2x1dGlvbiB0aW1lIG9mZmVyZWQgYnkgaG9zdCBpbiBtaWxsaXNlY29uZHMuXCJcbiBbXVxuIChjb25kXG4gIChhbmQgKGV4aXN0cz8ganMvcGVyZm9ybWFuY2UpIChub3QgKG5pbD8gKC4ganMvcGVyZm9ybWFuY2UgLW5vdykpKSlcbiAgKC5ub3cganMvcGVyZm9ybWFuY2UpXG4gIChhbmQgKGV4aXN0cz8ganMvcHJvY2VzcykgKG5vdCAobmlsPyAoLiBqcy9wcm9jZXNzIC1ocnRpbWUpKSkpXG4gIChsZXRcbiAgIFt0ICguaHJ0aW1lIGpzL3Byb2Nlc3MpXVxuICAgKC8gKCsgKCogKGFnZXQgdCAwKSAxLjBFOSkgKGFnZXQgdCAxKSkgMTAwMDAwMC4wKSlcbiAgOmVsc2VcbiAgKC5nZXRUaW1lIChqcy9EYXRlLikpKSlcbiJ9IHs6c3ltIC1pbnZva2UsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGhpc10gW3RoaXMgYV0gW3RoaXMgYSBiXSBbdGhpcyBhIGIgY10gW3RoaXMgYSBiIGMgZF0gW3RoaXMgYSBiIGMgZCBlXSBbdGhpcyBhIGIgYyBkIGUgZl0gW3RoaXMgYSBiIGMgZCBlIGYgZ10gW3RoaXMgYSBiIGMgZCBlIGYgZyBoXSBbdGhpcyBhIGIgYyBkIGUgZiBnIGggaV0gW3RoaXMgYSBiIGMgZCBlIGYgZyBoIGkgal0gW3RoaXMgYSBiIGMgZCBlIGYgZyBoIGkgaiBrXSBbdGhpcyBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbF0gW3RoaXMgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbV0gW3RoaXMgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuXSBbdGhpcyBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gb10gW3RoaXMgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcF0gW3RoaXMgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxXSBbdGhpcyBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgcl0gW3RoaXMgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgc10gW3RoaXMgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0XSBbdGhpcyBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgcmVzdF0pfSwgOnByb3RvY29sIElGbn0gezpzeW0gY29sbD8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgeCBzYXRpc2ZpZXMgSUNvbGxlY3Rpb24iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGNvbGw/XG4gXCJSZXR1cm5zIHRydWUgaWYgeCBzYXRpc2ZpZXMgSUNvbGxlY3Rpb25cIlxuIFt4XVxuIChpZiAobmlsPyB4KSBmYWxzZSAoc2F0aXNmaWVzPyBJQ29sbGVjdGlvbiB4KSkpXG4ifSB7OnN5bSBnZXQtaW4sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSB2YWx1ZSBpbiBhIG5lc3RlZCBhc3NvY2lhdGl2ZSBzdHJ1Y3R1cmUsXG4gIHdoZXJlIGtzIGlzIGEgc2VxdWVuY2Ugb2Yga2V5cy4gUmV0dXJucyBuaWwgaWYgdGhlIGtleSBpcyBub3QgcHJlc2VudCxcbiAgb3IgdGhlIG5vdC1mb3VuZCB2YWx1ZSBpZiBzdXBwbGllZC4iLCA6YXJnbGlzdHMgW1ttIGtzXSBbbSBrcyBub3QtZm91bmRdXX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LWluXG4gXCJSZXR1cm5zIHRoZSB2YWx1ZSBpbiBhIG5lc3RlZCBhc3NvY2lhdGl2ZSBzdHJ1Y3R1cmUsXFxuICB3aGVyZSBrcyBpcyBhIHNlcXVlbmNlIG9mIGtleXMuIFJldHVybnMgbmlsIGlmIHRoZSBrZXkgaXMgbm90IHByZXNlbnQsXFxuICBvciB0aGUgbm90LWZvdW5kIHZhbHVlIGlmIHN1cHBsaWVkLlwiXG4gezphZGRlZCBcIjEuMlwiLCA6c3RhdGljIHRydWV9XG4gKFttIGtzXSAocmVkdWNlIGdldCBtIGtzKSlcbiAoW20ga3Mgbm90LWZvdW5kXVxuICAobG9vcFxuICAgW3NlbnRpbmVsIGxvb2t1cC1zZW50aW5lbCBtIG0ga3MgKHNlcSBrcyldXG4gICAoaWYtbm90XG4gICAgKG5pbD8ga3MpXG4gICAgKGxldFxuICAgICBbbSAoZ2V0IG0gKGZpcnN0IGtzKSBzZW50aW5lbCldXG4gICAgIChpZlxuICAgICAgKGlkZW50aWNhbD8gc2VudGluZWwgbSlcbiAgICAgIG5vdC1mb3VuZFxuICAgICAgKHJlY3VyIHNlbnRpbmVsIG0gKG5leHQga3MpKSkpXG4gICAgbSkpKSlcbiJ9IHs6c3ltIGZuZXh0LCA6bWV0YSB7OmRvYyAiU2FtZSBhcyAoZmlyc3QgKG5leHQgeCkpIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm4gZm5leHQgXCJTYW1lIGFzIChmaXJzdCAobmV4dCB4KSlcIiBbY29sbF0gKGZpcnN0IChuZXh0IGNvbGwpKSlcbiJ9IHs6c3ltIElMaXN0LCA6bWV0YSB7OmRvYyAiTWFya2VyIGludGVyZmFjZSBpbmRpY2F0aW5nIGEgcGVyc2lzdGVudCBsaXN0In0sIDptZXRob2RzICgpfSB7OnN5bSAtdmFsLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIG1hcCBlbnRyeS4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6cHJvdG9jb2wgSU1hcEVudHJ5fSB7OnN5bSBieXRlcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiBieXRlcyBbeF0geClcbiJ9IHs6c3ltIC1zZXEsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgc2VxIG9mIG8sIG9yIG5pbCBpZiBvIGlzIGVtcHR5LiIsIDphcmdsaXN0cyAoW29dKX0sIDpwcm90b2NvbCBJU2VxYWJsZX0pLCBjbGpzLnRvb2xzLnJlYWRlci5yZWFkZXItdHlwZXMgKHs6c3ltIGluZGV4aW5nLXB1c2gtYmFjay1yZWFkZXIsIDptZXRhIHs6ZG9jICJDcmVhdGVzIGFuIEluZGV4aW5nUHVzaGJhY2tSZWFkZXIgZnJvbSBhIGdpdmVuIHN0cmluZyBvciBQdXNoYmFja1JlYWRlciIsIDphcmdsaXN0cyBbW3Mtb3ItcmRyXSBbcy1vci1yZHIgYnVmLWxlbl0gW3Mtb3ItcmRyIGJ1Zi1sZW4gZmlsZS1uYW1lXV19LCA6c291cmNlICIoZGVmblxuIGluZGV4aW5nLXB1c2gtYmFjay1yZWFkZXJcbiBcIkNyZWF0ZXMgYW4gSW5kZXhpbmdQdXNoYmFja1JlYWRlciBmcm9tIGEgZ2l2ZW4gc3RyaW5nIG9yIFB1c2hiYWNrUmVhZGVyXCJcbiAoW3Mtb3ItcmRyXSAoaW5kZXhpbmctcHVzaC1iYWNrLXJlYWRlciBzLW9yLXJkciAxKSlcbiAoW3Mtb3ItcmRyIGJ1Zi1sZW5dIChpbmRleGluZy1wdXNoLWJhY2stcmVhZGVyIHMtb3ItcmRyIGJ1Zi1sZW4gbmlsKSlcbiAoW3Mtb3ItcmRyIGJ1Zi1sZW4gZmlsZS1uYW1lXVxuICAoSW5kZXhpbmdQdXNoYmFja1JlYWRlci5cbiAgIChpZlxuICAgIChzdHJpbmc/IHMtb3ItcmRyKVxuICAgIChzdHJpbmctcHVzaC1iYWNrLXJlYWRlciBzLW9yLXJkciBidWYtbGVuKVxuICAgIHMtb3ItcmRyKVxuICAgMVxuICAgMVxuICAgdHJ1ZVxuICAgbmlsXG4gICAwXG4gICBmaWxlLW5hbWUpKSlcbiJ9IHs6c3ltIGxvZy1zb3VyY2UqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JlYWRlciBmXSl9LCA6c291cmNlICIoZGVmblxuIGxvZy1zb3VyY2UqXG4gW3JlYWRlciBmXVxuIChsZXRcbiAgW2J1ZmZlciAoOmJ1ZmZlciBAKC4tZnJhbWVzIHJlYWRlcikpXVxuICAodHJ5XG4gICAoc3dhcCFcbiAgICAoLi1mcmFtZXMgcmVhZGVyKVxuICAgIHVwZGF0ZS1pblxuICAgIFs6b2Zmc2V0XVxuICAgIGNvbmpcbiAgICAoLmdldExlbmd0aCBidWZmZXIpKVxuICAgKGxldFxuICAgIFtyZXQgKGYpXVxuICAgIChpZlxuICAgICAoaW1wbGVtZW50cz8gSU1ldGEgcmV0KVxuICAgICAobWVyZ2UtbWV0YSByZXQgezpzb3VyY2UgKHBlZWstc291cmNlLWxvZyBAKC4tZnJhbWVzIHJlYWRlcikpfSlcbiAgICAgcmV0KSlcbiAgIChmaW5hbGx5IChzd2FwISAoLi1mcmFtZXMgcmVhZGVyKSB1cGRhdGUtaW4gWzpvZmZzZXRdIHJlc3QpKSkpKVxuIn0gezpzeW0gbWVyZ2UtbWV0YSwgOm1ldGEgezpkb2MgIlJldHVybnMgYW4gb2JqZWN0IG9mIHRoZSBzYW1lIHR5cGUgYW5kIHZhbHVlIGFzIGBvYmpgLCB3aXRoIGl0c1xubWV0YWRhdGEgbWVyZ2VkIG92ZXIgYG1gLiIsIDphcmdsaXN0cyAoW29iaiBtXSl9LCA6c291cmNlICIoZGVmblxuIG1lcmdlLW1ldGFcbiBcIlJldHVybnMgYW4gb2JqZWN0IG9mIHRoZSBzYW1lIHR5cGUgYW5kIHZhbHVlIGFzIGBvYmpgLCB3aXRoIGl0c1xcbm1ldGFkYXRhIG1lcmdlZCBvdmVyIGBtYC5cIlxuIFtvYmogbV1cbiAobGV0XG4gIFtvcmlnLW1ldGEgKG1ldGEgb2JqKV1cbiAgKHdpdGgtbWV0YSBvYmogKG1lcmdlIG0gKGRpc3NvYyBvcmlnLW1ldGEgOnNvdXJjZSkpKSkpXG4ifSB7OnN5bSBSZWFkZXIsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzIChwZWVrLWNoYXIgcmVhZC1jaGFyKX0gezpzeW0gc291cmNlLWxvZ2dpbmctcHVzaC1iYWNrLXJlYWRlciwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYSBTb3VyY2VMb2dnaW5nUHVzaGJhY2tSZWFkZXIgZnJvbSBhIGdpdmVuIHN0cmluZyBvciBQdXNoYmFja1JlYWRlciIsIDphcmdsaXN0cyBbW3Mtb3ItcmRyXSBbcy1vci1yZHIgYnVmLWxlbl0gW3Mtb3ItcmRyIGJ1Zi1sZW4gZmlsZS1uYW1lXV19LCA6c291cmNlICIoZGVmblxuIHNvdXJjZS1sb2dnaW5nLXB1c2gtYmFjay1yZWFkZXJcbiBcIkNyZWF0ZXMgYSBTb3VyY2VMb2dnaW5nUHVzaGJhY2tSZWFkZXIgZnJvbSBhIGdpdmVuIHN0cmluZyBvciBQdXNoYmFja1JlYWRlclwiXG4gKFtzLW9yLXJkcl0gKHNvdXJjZS1sb2dnaW5nLXB1c2gtYmFjay1yZWFkZXIgcy1vci1yZHIgMSkpXG4gKFtzLW9yLXJkciBidWYtbGVuXVxuICAoc291cmNlLWxvZ2dpbmctcHVzaC1iYWNrLXJlYWRlciBzLW9yLXJkciBidWYtbGVuIG5pbCkpXG4gKFtzLW9yLXJkciBidWYtbGVuIGZpbGUtbmFtZV1cbiAgKFNvdXJjZUxvZ2dpbmdQdXNoYmFja1JlYWRlci5cbiAgIChpZlxuICAgIChzdHJpbmc/IHMtb3ItcmRyKVxuICAgIChzdHJpbmctcHVzaC1iYWNrLXJlYWRlciBzLW9yLXJkciBidWYtbGVuKVxuICAgIHMtb3ItcmRyKVxuICAgMVxuICAgMVxuICAgdHJ1ZVxuICAgbmlsXG4gICAwXG4gICBmaWxlLW5hbWVcbiAgIChhdG9tIHs6YnVmZmVyIChTdHJpbmdCdWZmZXIuKSwgOm9mZnNldCAnKDApfSkpKSlcbiJ9IHs6c3ltIHVucmVhZCwgOm1ldGEgezpkb2MgIlB1c2hlcyBiYWNrIGEgc2luZ2xlIGNoYXJhY3RlciBvbiB0byB0aGUgc3RyZWFtIiwgOmFyZ2xpc3RzIChbcmVhZGVyIGNoXSl9LCA6cHJvdG9jb2wgSVB1c2hiYWNrUmVhZGVyfSB7OnN5bSBwZWVrLWNoYXIsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBuZXh0IGNoYXIgZnJvbSB0aGUgUmVhZGVyIHdpdGhvdXQgcmVtb3ZpbmcgaXQgZnJvbSB0aGUgcmVhZGVyIHN0cmVhbSIsIDphcmdsaXN0cyAoW3JlYWRlcl0pfSwgOnByb3RvY29sIFJlYWRlcn0gezpzeW0gSVB1c2hiYWNrUmVhZGVyLCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAodW5yZWFkKX0gezpzeW0gaW5kZXhpbmctcmVhZGVyPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB0aGUgcmVhZGVyIHNhdGlzZmllcyBJbmRleGluZ1JlYWRlciIsIDphcmdsaXN0cyAoW3Jkcl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbmRleGluZy1yZWFkZXI/XG4gXCJSZXR1cm5zIHRydWUgaWYgdGhlIHJlYWRlciBzYXRpc2ZpZXMgSW5kZXhpbmdSZWFkZXJcIlxuIFtyZHJdXG4gKGltcGxlbWVudHM/IEluZGV4aW5nUmVhZGVyIHJkcikpXG4ifSB7OnN5bSBzdHJpbmctcmVhZGVyLCA6bWV0YSB7OmRvYyAiQ3JlYXRlcyBhIFN0cmluZ1JlYWRlciBmcm9tIGEgZ2l2ZW4gc3RyaW5nIiwgOmFyZ2xpc3RzIFtbc11dfSwgOnNvdXJjZSAiKGRlZm5cbiBzdHJpbmctcmVhZGVyXG4gXCJDcmVhdGVzIGEgU3RyaW5nUmVhZGVyIGZyb20gYSBnaXZlbiBzdHJpbmdcIlxuIChbc10gKFN0cmluZ1JlYWRlci4gcyAoY291bnQgcykgMCkpKVxuIn0gezpzeW0gcmVhZC1jaGFyLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbmV4dCBjaGFyIGZyb20gdGhlIFJlYWRlciwgbmlsIGlmIHRoZSBlbmQgb2Ygc3RyZWFtIGhhcyBiZWVuIHJlYWNoZWQiLCA6YXJnbGlzdHMgKFtyZWFkZXJdKX0sIDpwcm90b2NvbCBSZWFkZXJ9IHs6c3ltIGdldC1jb2x1bW4tbnVtYmVyLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgY29sdW1uIG51bWJlciBvZiB0aGUgbmV4dCBjaGFyYWN0ZXIgdG8gYmUgcmVhZCBmcm9tIHRoZSBzdHJlYW0iLCA6YXJnbGlzdHMgKFtyZWFkZXJdKX0sIDpwcm90b2NvbCBJbmRleGluZ1JlYWRlcn0gezpzeW0gZ2V0LWZpbGUtbmFtZSwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGZpbGUgbmFtZSB0aGUgcmVhZGVyIGlzIHJlYWRpbmcgZnJvbSwgb3IgbmlsIiwgOmFyZ2xpc3RzIChbcmVhZGVyXSl9LCA6cHJvdG9jb2wgSW5kZXhpbmdSZWFkZXJ9IHs6c3ltIHJlYWQtbGluZSwgOm1ldGEgezpkb2MgIlJlYWRzIGEgbGluZSBmcm9tIHRoZSByZWFkZXIgb3IgZnJvbSAqaW4qIGlmIG5vIHJlYWRlciBpcyBzcGVjaWZpZWQiLCA6YXJnbGlzdHMgW1tyZHJdXX0sIDpzb3VyY2UgIihkZWZuXG4gcmVhZC1saW5lXG4gXCJSZWFkcyBhIGxpbmUgZnJvbSB0aGUgcmVhZGVyIG9yIGZyb20gKmluKiBpZiBubyByZWFkZXIgaXMgc3BlY2lmaWVkXCJcbiAoW3Jkcl1cbiAgKGxvb3BcbiAgIFtjIChyZWFkLWNoYXIgcmRyKSBzIChTdHJpbmdCdWZmZXIuKV1cbiAgIChpZiAobmV3bGluZT8gYykgKHN0ciBzKSAocmVjdXIgKHJlYWQtY2hhciByZHIpICguYXBwZW5kIHMgYykpKSkpKVxuIn0gezpzeW0gc3RyaW5nLXB1c2gtYmFjay1yZWFkZXIsIDptZXRhIHs6ZG9jICJDcmVhdGVzIGEgUHVzaGJhY2tSZWFkZXIgZnJvbSBhIGdpdmVuIHN0cmluZyIsIDphcmdsaXN0cyBbW3NdIFtzIGJ1Zi1sZW5dXX0sIDpzb3VyY2UgIihkZWZuXG4gc3RyaW5nLXB1c2gtYmFjay1yZWFkZXJcbiBcIkNyZWF0ZXMgYSBQdXNoYmFja1JlYWRlciBmcm9tIGEgZ2l2ZW4gc3RyaW5nXCJcbiAoW3NdIChzdHJpbmctcHVzaC1iYWNrLXJlYWRlciBzIDEpKVxuIChbcyBidWYtbGVuXVxuICAoUHVzaGJhY2tSZWFkZXIuXG4gICAoc3RyaW5nLXJlYWRlciBzKVxuICAgKG9iamVjdC1hcnJheSBidWYtbGVuKVxuICAgYnVmLWxlblxuICAgYnVmLWxlbikpKVxuIn0gezpzeW0gbGluZS1zdGFydD8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgcmRyIGlzIGFuIEluZGV4aW5nUmVhZGVyIGFuZCB0aGUgY3VycmVudCBjaGFyIHN0YXJ0cyBhIG5ldyBsaW5lIiwgOmFyZ2xpc3RzIChbcmRyXSl9LCA6c291cmNlICIoZGVmblxuIGxpbmUtc3RhcnQ/XG4gXCJSZXR1cm5zIHRydWUgaWYgcmRyIGlzIGFuIEluZGV4aW5nUmVhZGVyIGFuZCB0aGUgY3VycmVudCBjaGFyIHN0YXJ0cyBhIG5ldyBsaW5lXCJcbiBbcmRyXVxuICh3aGVuIChpbmRleGluZy1yZWFkZXI/IHJkcikgKD09IDEgKGdldC1jb2x1bW4tbnVtYmVyIHJkcikpKSlcbiJ9IHs6c3ltIHNvdXJjZS1sb2dnaW5nLXJlYWRlcj8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyXSl9LCA6c291cmNlICIoZGVmblxuIHNvdXJjZS1sb2dnaW5nLXJlYWRlcj9cbiBbcmRyXVxuIChpbnN0YW5jZT8gU291cmNlTG9nZ2luZ1B1c2hiYWNrUmVhZGVyIHJkcikpXG4ifSB7OnN5bSBJbmRleGluZ1JlYWRlciwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKGdldC1jb2x1bW4tbnVtYmVyIGdldC1maWxlLW5hbWUgZ2V0LWxpbmUtbnVtYmVyKX0gezpzeW0gbm9kZS1yZWFkYWJsZS1wdXNoLWJhY2stcmVhZGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JlYWRhYmxlXSl9LCA6c291cmNlICIoZGVmblxuIG5vZGUtcmVhZGFibGUtcHVzaC1iYWNrLXJlYWRlclxuIFtyZWFkYWJsZV1cbiAoUHVzaGJhY2tSZWFkZXIuXG4gIChOb2RlUmVhZGFibGVSZWFkZXIuIHJlYWRhYmxlIG5pbClcbiAgKG9iamVjdC1hcnJheSAxKVxuICAxXG4gIDEpKVxuIn0gezpzeW0gZ2V0LWxpbmUtbnVtYmVyLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbGluZSBudW1iZXIgb2YgdGhlIG5leHQgY2hhcmFjdGVyIHRvIGJlIHJlYWQgZnJvbSB0aGUgc3RyZWFtIiwgOmFyZ2xpc3RzIChbcmVhZGVyXSl9LCA6cHJvdG9jb2wgSW5kZXhpbmdSZWFkZXJ9KSwgcGxheS1jbGpjLnRyYW5zZm9ybXMgKHs6c3ltIElSb3RhdGUsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzIChyb3RhdGUpfSB7OnN5bSBjcm9wLCA6bWV0YSB7OmRvYyAiQ3JvcHMgdGhlIHZpc2libGUgYXJlYSBvZiB0aGUgZW50aXR5LiIsIDphcmdsaXN0cyAoW2VudGl0eSB4IHkgd2lkdGggaGVpZ2h0XSl9LCA6cHJvdG9jb2wgSUNyb3B9IHs6c3ltIElJbnZlcnQsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzIChpbnZlcnQpfSB7OnN5bSBpbnZlcnQsIDptZXRhIHs6ZG9jICJBcHBsaWVzIGEgY2FtZXJhIHRvIHRoZSBlbnRpdHkgYWZ0ZXIgY3JlYXRpbmcgYW4gaW52ZXJzZSBtYXRyaXggb2YgaXQuIiwgOmFyZ2xpc3RzIChbZW50aXR5IGNhbWVyYV0pfSwgOnByb3RvY29sIElJbnZlcnR9IHs6c3ltIGxvb2stYXQsIDptZXRhIHs6ZG9jICJBcHBsaWVzIGEgbG9vayBhdCBtYXRyaXggdG8gdGhlIGNhbWVyYS4iLCA6YXJnbGlzdHMgKFtjYW1lcmEgdGFyZ2V0IHVwXSl9LCA6cHJvdG9jb2wgSUxvb2tBdH0gezpzeW0gSUNhbWVyYSwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKGNhbWVyYSl9IHs6c3ltIHRyYW5zZm9ybSwgOm1ldGEgezpkb2MgIldvcmsgaW4gcHJvZ3Jlc3MhIFN1YmplY3QgdG8gY2hhbmdlL2JyZWFrIGluIGZ1dHVyZSByZWxlYXNlcy4iLCA6YXJnbGlzdHMgW1tjb250ZW50XSBbW2NvbnRlbnQtdHlwZSBjb250ZW50LXZhbF0gZW50aXRpZXMgdHJhbnNmb3Jtc11dfSwgOnNvdXJjZSAiKGRlZm5cbiB0cmFuc2Zvcm1cbiBcIldvcmsgaW4gcHJvZ3Jlc3MhIFN1YmplY3QgdG8gY2hhbmdlL2JyZWFrIGluIGZ1dHVyZSByZWxlYXNlcy5cIlxuIChbY29udGVudF1cbiAgKHRyYW5zZm9ybSAocGFyc2UgOnBsYXktY2xqYy50cmFuc2Zvcm1zL2NvbnRlbnQgY29udGVudCkgW10gW10pKVxuIChbW2NvbnRlbnQtdHlwZSBjb250ZW50LXZhbF0gZW50aXRpZXMgdHJhbnNmb3Jtc11cbiAgKGNhc2VcbiAgIGNvbnRlbnQtdHlwZVxuICAgOnN1YmNvbnRlbnRcbiAgIChyZWR1Y2VcbiAgICAoZm5cbiAgICAgW2VudGl0aWVzIGNvbnRlbnRdXG4gICAgICh0cmFuc2Zvcm1cbiAgICAgIGNvbnRlbnRcbiAgICAgIGVudGl0aWVzXG4gICAgICAoaW50byB0cmFuc2Zvcm1zICgoanV4dCA6bmFtZSA6YXJncykgY29udGVudC12YWwpKSkpXG4gICAgZW50aXRpZXNcbiAgICAoOmNvbnRlbnQgY29udGVudC12YWwpKVxuICAgOmVudGl0eVxuICAgKGNvbmogZW50aXRpZXMgKHRyYW5zZm9ybS1lbnRpdHkgY29udGVudC12YWwgdHJhbnNmb3JtcykpKSkpXG4ifSB7OnN5bSBjb2xvciwgOm1ldGEgezpkb2MgIkFwcGxpZXMgYSBjb2xvciB0byB0aGUgZW50aXR5LiIsIDphcmdsaXN0cyAoW2VudGl0eSByZ2JhXSl9LCA6cHJvdG9jb2wgSUNvbG9yfSB7OnN5bSBJU2NhbGUsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzIChzY2FsZSl9IHs6c3ltIHNjYWxlLCA6bWV0YSB7OmRvYyAiQXBwbGllcyBhIHNjYWxpbmcgbWF0cml4IHRvIHRoZSBlbnRpdHkgb3IgY2FtZXJhLiIsIDphcmdsaXN0cyAoW2VudGl0eSB4IHldIFtlbnRpdHkgeCB5IHpdKX0sIDpwcm90b2NvbCBJU2NhbGV9IHs6c3ltIElQcm9qZWN0LCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAocHJvamVjdCl9IHs6c3ltIElDb2xvciwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKGNvbG9yKX0gezpzeW0gSUNyb3AsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzIChjcm9wKX0gezpzeW0gcHJvamVjdCwgOm1ldGEgezpkb2MgIkFwcGxpZXMgYSBwcm9qZWN0aW9uIG1hdHJpeCB0byB0aGUgZW50aXR5LiIsIDphcmdsaXN0cyAoW2VudGl0eSB3aWR0aCBoZWlnaHRdIFtlbnRpdHkgbGVmdCByaWdodCBib3R0b20gdG9wIG5lYXIgZmFyXSBbZW50aXR5IGZpZWxkLW9mLXZpZXcgYXNwZWN0IG5lYXIgZmFyXSl9LCA6cHJvdG9jb2wgSVByb2plY3R9IHs6c3ltIElUcmFuc2xhdGUsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzICh0cmFuc2xhdGUpfSB7OnN5bSBwYXJzZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzcGVjIGNvbnRlbnRdKX0sIDpzb3VyY2UgIihkZWZuXG4gcGFyc2VcbiBbc3BlYyBjb250ZW50XVxuIChsZXRcbiAgW3JlcyAocy9jb25mb3JtIHNwZWMgY29udGVudCldXG4gIChpZlxuICAgKD0gOmNsb2p1cmUuc3BlYy5hbHBoYS9pbnZhbGlkIHJlcylcbiAgICh0aHJvdyAoZXgtaW5mbyAoZXhwb3VuZC9leHBvdW5kLXN0ciBzcGVjIGNvbnRlbnQpIHt9KSlcbiAgIHJlcykpKVxuIn0gezpzeW0gcm90YXRlLCA6bWV0YSB7OmRvYyAiQXBwbGllcyBhIHJvdGF0aW9uIG1hdHJpeCB0byB0aGUgZW50aXR5IG9yIGNhbWVyYS4iLCA6YXJnbGlzdHMgKFtlbnRpdHkgYW5nbGVdIFtlbnRpdHkgYW5nbGUgYXhpc10pfSwgOnByb3RvY29sIElSb3RhdGV9IHs6c3ltIHRyYW5zZm9ybS1lbnRpdHksIDptZXRhIHs6ZG9jICJXb3JrIGluIHByb2dyZXNzISBTdWJqZWN0IHRvIGNoYW5nZS9icmVhayBpbiBmdXR1cmUgcmVsZWFzZXMuIiwgOmFyZ2xpc3RzIChbZW50aXR5IHRyYW5zZm9ybXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gdHJhbnNmb3JtLWVudGl0eVxuIFwiV29yayBpbiBwcm9ncmVzcyEgU3ViamVjdCB0byBjaGFuZ2UvYnJlYWsgaW4gZnV0dXJlIHJlbGVhc2VzLlwiXG4gW2VudGl0eSB0cmFuc2Zvcm1zXVxuIChjb25jYXRcbiAgWyctPiBlbnRpdHldXG4gIChtYXBcbiAgIChmbiBbW25hbWUgYXJnc11dICh0cmFuc2Zvcm0tZW50aXR5KiBuYW1lIGFyZ3MpKVxuICAgKHBhcnRpdGlvbiAyIHRyYW5zZm9ybXMpKSkpXG4ifSB7OnN5bSBjYW1lcmEsIDptZXRhIHs6ZG9jICJUaGlzIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQgLS0gdXNlIGBpbnZlcnRgIGluc3RlYWQhIiwgOmFyZ2xpc3RzIChbZW50aXR5IGNhbWVyYV0pfSwgOnByb3RvY29sIElDYW1lcmF9IHs6c3ltIHRyYW5zbGF0ZSwgOm1ldGEgezpkb2MgIkFwcGxpZXMgYSB0cmFuc2xhdGlvbiBtYXRyaXggdG8gdGhlIGVudGl0eSBvciBjYW1lcmEuIiwgOmFyZ2xpc3RzIChbZW50aXR5IHggeV0gW2VudGl0eSB4IHkgel0pfSwgOnByb3RvY29sIElUcmFuc2xhdGV9IHs6c3ltIElMb29rQXQsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzIChsb29rLWF0KX0pLCBjbGpzLmVudiAoezpzeW0gKmNvbXBpbGVyKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmNvbXBpbGVyKiBuaWwpXG4ifSB7OnN5bSBkZWZhdWx0LWNvbXBpbGVyLWVudiosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbb3B0aW9uc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBkZWZhdWx0LWNvbXBpbGVyLWVudipcbiBbb3B0aW9uc11cbiAobWVyZ2VcbiAgezpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXMgeydjbGpzLnVzZXIgezpuYW1lICdjbGpzLnVzZXJ9fSxcbiAgIDpjbGpzLmFuYWx5emVyL2NvbnN0YW50LXRhYmxlIHt9LFxuICAgOmNsanMuYW5hbHl6ZXIvZGF0YS1yZWFkZXJzIHt9LFxuICAgOmNsanMuYW5hbHl6ZXIvZXh0ZXJuc1xuICAgIz8oOmNsaiAoZXh0ZXJucy9leHRlcm5zLW1hcCAoOmV4dGVybnMtc291cmNlcyBvcHRpb25zKSkgOmNsanMgbmlsKSxcbiAgIDpvcHRpb25zIG9wdGlvbnN9XG4gICM/QCg6Y2xqIFsod2hlbiAoYW5kICg9IDpub2RlanMgKDp0YXJnZXQgb3B0aW9ucykpIChub3QgKGZhbHNlPyAoOm5vZGVqcy1ydCBvcHRpb25zKSkpKSB7Om5vZGUtbW9kdWxlLWluZGV4IGRlcHMvbmF0aXZlLW5vZGUtbW9kdWxlc30pIHs6anMtZGVwZW5kZW5jeS1pbmRleCAoZGVwcy9qcy1kZXBlbmRlbmN5LWluZGV4IG9wdGlvbnMpfV0pKSlcbiJ9IHs6c3ltIGRlZmF1bHQtY29tcGlsZXItZW52LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW10gW29wdGlvbnNdXX0sIDpzb3VyY2UgIihkZWZuXG4gZGVmYXVsdC1jb21waWxlci1lbnZcbiAoW10gKGRlZmF1bHQtY29tcGlsZXItZW52IHt9KSlcbiAoW29wdGlvbnNdIChhdG9tIChkZWZhdWx0LWNvbXBpbGVyLWVudiogb3B0aW9ucykpKSlcbiJ9KSwgcGFyZW4tc291cC5jb25zb2xlICh7OnN5bSBjcmVhdGUtY29uc29sZS1oaXN0b3J5LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBjcmVhdGUtY29uc29sZS1oaXN0b3J5XG4gW11cbiAoYXRvbSB7OmN1cnJlbnQtbGluZSAwLCA6bGluZXMgW10sIDpzdGFydCAwfSkpXG4ifSB7OnN5bSBnZXQtY29uc29sZS1zdGFydCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFsqY29uc29sZS1oaXN0b3J5XSl9LCA6c291cmNlICIoZGVmblxuIGdldC1jb25zb2xlLXN0YXJ0XG4gWypjb25zb2xlLWhpc3RvcnldXG4gKC0+ICpjb25zb2xlLWhpc3RvcnkgZGVyZWYgOnN0YXJ0KSlcbiJ9IHs6c3ltIHVwZGF0ZS1jb25zb2xlLXN0YXJ0ISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFsqY29uc29sZS1oaXN0b3J5IHN0YXJ0XSl9LCA6c291cmNlICIoZGVmblxuIHVwZGF0ZS1jb25zb2xlLXN0YXJ0IVxuIFsqY29uc29sZS1oaXN0b3J5IHN0YXJ0XVxuIChzd2FwISAqY29uc29sZS1oaXN0b3J5IGFzc29jIDpzdGFydCBzdGFydCkpXG4ifSB7OnN5bSB1cGRhdGUtY29uc29sZS1oaXN0b3J5ISwgOm1ldGEgezpkb2MgIlVwZGF0ZXMgdGhlIGNvbnNvbGUgaGlzdG9yeSBhdG9tLiIsIDphcmdsaXN0cyAoWypjb25zb2xlLWhpc3RvcnkgbGluZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB1cGRhdGUtY29uc29sZS1oaXN0b3J5IVxuIFwiVXBkYXRlcyB0aGUgY29uc29sZSBoaXN0b3J5IGF0b20uXCJcbiBbKmNvbnNvbGUtaGlzdG9yeSBsaW5lXVxuIChsZXRcbiAgW3s6a2V5cyBbY3VycmVudC1saW5lIGxpbmVzXX0gQCpjb25zb2xlLWhpc3RvcnldXG4gIChzd2FwIVxuICAgKmNvbnNvbGUtaGlzdG9yeVxuICAgKGZuXG4gICAgW2NvbnNvbGUtaGlzdG9yeV1cbiAgICAobGV0XG4gICAgIFtsaW5lc1xuICAgICAgKGlmXG4gICAgICAgKGFuZCAoc2VxIGxpbmUpIChub3Q9IGxpbmUgKGxhc3QgbGluZXMpKSlcbiAgICAgICAoY29uaiBsaW5lcyBsaW5lKVxuICAgICAgIGxpbmVzKV1cbiAgICAgKGFzc29jXG4gICAgICBjb25zb2xlLWhpc3RvcnlcbiAgICAgIDpjdXJyZW50LWxpbmVcbiAgICAgIChjb3VudCBsaW5lcylcbiAgICAgIDpsaW5lc1xuICAgICAgbGluZXMpKSkpKSlcbiJ9IHs6c3ltIGdldC1wcmV2aW91cy1saW5lLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgcHJldmlvdXMgbGluZSBmcm9tIGNvbnNvbGUtaGlzdG9yeSwgb3IgbmlsIGlmIHRoZXJlIGlzIG5vbmUuIiwgOmFyZ2xpc3RzIChbKmNvbnNvbGUtaGlzdG9yeV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtcHJldmlvdXMtbGluZVxuIFwiUmV0dXJucyB0aGUgcHJldmlvdXMgbGluZSBmcm9tIGNvbnNvbGUtaGlzdG9yeSwgb3IgbmlsIGlmIHRoZXJlIGlzIG5vbmUuXCJcbiBbKmNvbnNvbGUtaGlzdG9yeV1cbiAobGV0XG4gIFt7OmtleXMgW2N1cnJlbnQtbGluZSBsaW5lc119IEAqY29uc29sZS1oaXN0b3J5XVxuICAoZ2V0IGxpbmVzIChkZWMgY3VycmVudC1saW5lKSkpKVxuIn0gezpzeW0gZ2V0LW5leHQtbGluZSwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG5leHQgbGluZSBmcm9tIGNvbnNvbGUtaGlzdG9yeSwgb3IgbmlsIGlmIHRoZXJlIGlzIG5vbmUuIiwgOmFyZ2xpc3RzIChbKmNvbnNvbGUtaGlzdG9yeV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtbmV4dC1saW5lXG4gXCJSZXR1cm5zIHRoZSBuZXh0IGxpbmUgZnJvbSBjb25zb2xlLWhpc3RvcnksIG9yIG5pbCBpZiB0aGVyZSBpcyBub25lLlwiXG4gWypjb25zb2xlLWhpc3RvcnldXG4gKGxldFxuICBbezprZXlzIFtjdXJyZW50LWxpbmUgbGluZXNdfSBAKmNvbnNvbGUtaGlzdG9yeV1cbiAgKGdldCBsaW5lcyAoaW5jIGN1cnJlbnQtbGluZSkpKSlcbiJ9IHs6c3ltIHVwISwgOm1ldGEgezpkb2MgIkNoYW5nZXMgdGhlIGN1cnJlbnQgbGluZSBhbmQgcmV0dXJucyB0aGUgcHJldmlvdXMgbGluZSBmcm9tIGNvbnNvbGUtaGlzdG9yeSwgb3IgbmlsIGlmIHRoZXJlIGlzIG5vbmUuIiwgOmFyZ2xpc3RzIChbKmNvbnNvbGUtaGlzdG9yeV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB1cCFcbiBcIkNoYW5nZXMgdGhlIGN1cnJlbnQgbGluZSBhbmQgcmV0dXJucyB0aGUgcHJldmlvdXMgbGluZSBmcm9tIGNvbnNvbGUtaGlzdG9yeSwgb3IgbmlsIGlmIHRoZXJlIGlzIG5vbmUuXCJcbiBbKmNvbnNvbGUtaGlzdG9yeV1cbiAobGV0XG4gIFtsaW5lIChnZXQtcHJldmlvdXMtbGluZSAqY29uc29sZS1oaXN0b3J5KV1cbiAgKGlmXG4gICBsaW5lXG4gICAoc3dhcCEgKmNvbnNvbGUtaGlzdG9yeSB1cGRhdGUgOmN1cnJlbnQtbGluZSBkZWMpXG4gICAoc3dhcCEgKmNvbnNvbGUtaGlzdG9yeSBhc3NvYyA6Y3VycmVudC1saW5lIC0xKSlcbiAgbGluZSkpXG4ifSB7OnN5bSBkb3duISwgOm1ldGEgezpkb2MgIkNoYW5nZXMgdGhlIGN1cnJlbnQgbGluZSBhbmQgcmV0dXJucyB0aGUgbmV4dCBsaW5lIGZyb20gY29uc29sZS1oaXN0b3J5LCBvciBuaWwgaWYgdGhlcmUgaXMgbm9uZS4iLCA6YXJnbGlzdHMgKFsqY29uc29sZS1oaXN0b3J5XSl9LCA6c291cmNlICIoZGVmblxuIGRvd24hXG4gXCJDaGFuZ2VzIHRoZSBjdXJyZW50IGxpbmUgYW5kIHJldHVybnMgdGhlIG5leHQgbGluZSBmcm9tIGNvbnNvbGUtaGlzdG9yeSwgb3IgbmlsIGlmIHRoZXJlIGlzIG5vbmUuXCJcbiBbKmNvbnNvbGUtaGlzdG9yeV1cbiAobGV0XG4gIFtsaW5lIChnZXQtbmV4dC1saW5lICpjb25zb2xlLWhpc3RvcnkpXVxuICAoaWZcbiAgIGxpbmVcbiAgIChzd2FwISAqY29uc29sZS1oaXN0b3J5IHVwZGF0ZSA6Y3VycmVudC1saW5lIGluYylcbiAgIChzd2FwIVxuICAgICpjb25zb2xlLWhpc3RvcnlcbiAgICBhc3NvY1xuICAgIDpjdXJyZW50LWxpbmVcbiAgICAoLT4gQCpjb25zb2xlLWhpc3RvcnkgOmxpbmVzIGNvdW50KSkpXG4gIGxpbmUpKVxuIn0pLCBwbGF5LWNsamMuZ2wuZXhhbXBsZXMtdGV4dCAoezpzeW0gbG9hZC1yb2JvdG8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbY2FsbGJhY2tdKX0sIDpzb3VyY2UgIihkZWZuXG4gbG9hZC1yb2JvdG9cbiBbY2FsbGJhY2tdXG4gKCM/KDpjbGogbG9hZC1mb250LWNsaiA6Y2xqcyBsb2FkLWZvbnQtY2xqcykgOnJvYm90byBjYWxsYmFjaykpXG4ifSB7OnN5bSBpbml0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2dhbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5pdFxuIFtnYW1lXVxuIChnbCBnYW1lIGVuYWJsZSAoZ2wgZ2FtZSBCTEVORCkpXG4gKGdsIGdhbWUgYmxlbmRGdW5jIChnbCBnYW1lIFNSQ19BTFBIQSkgKGdsIGdhbWUgT05FX01JTlVTX1NSQ19BTFBIQSkpXG4gKGdsIGdhbWUgZGlzYWJsZSAoZ2wgZ2FtZSBDVUxMX0ZBQ0UpKVxuIChnbCBnYW1lIGRpc2FibGUgKGdsIGdhbWUgREVQVEhfVEVTVCkpKVxuIn0pLCBjbGpzLmNvcmUuYXN5bmMgKHs6c3ltIFB1YiwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKHN1YiogdW5zdWIqIHVuc3ViLWFsbCopfSB7OnN5bSByZWR1Y2UsIDptZXRhIHs6ZG9jICJmIHNob3VsZCBiZSBhIGZ1bmN0aW9uIG9mIDIgYXJndW1lbnRzLiBSZXR1cm5zIGEgY2hhbm5lbCBjb250YWluaW5nXG4gIHRoZSBzaW5nbGUgcmVzdWx0IG9mIGFwcGx5aW5nIGYgdG8gaW5pdCBhbmQgdGhlIGZpcnN0IGl0ZW0gZnJvbSB0aGVcbiAgY2hhbm5lbCwgdGhlbiBhcHBseWluZyBmIHRvIHRoYXQgcmVzdWx0IGFuZCB0aGUgMm5kIGl0ZW0sIGV0Yy4gSWZcbiAgdGhlIGNoYW5uZWwgY2xvc2VzIHdpdGhvdXQgeWllbGRpbmcgaXRlbXMsIHJldHVybnMgaW5pdCBhbmQgZiBpcyBub3RcbiAgY2FsbGVkLiBjaCBtdXN0IGNsb3NlIGJlZm9yZSByZWR1Y2UgcHJvZHVjZXMgYSByZXN1bHQuIiwgOmFyZ2xpc3RzIChbZiBpbml0IGNoXSl9LCA6c291cmNlICIoZGVmblxuIHJlZHVjZVxuIFwiZiBzaG91bGQgYmUgYSBmdW5jdGlvbiBvZiAyIGFyZ3VtZW50cy4gUmV0dXJucyBhIGNoYW5uZWwgY29udGFpbmluZ1xcbiAgdGhlIHNpbmdsZSByZXN1bHQgb2YgYXBwbHlpbmcgZiB0byBpbml0IGFuZCB0aGUgZmlyc3QgaXRlbSBmcm9tIHRoZVxcbiAgY2hhbm5lbCwgdGhlbiBhcHBseWluZyBmIHRvIHRoYXQgcmVzdWx0IGFuZCB0aGUgMm5kIGl0ZW0sIGV0Yy4gSWZcXG4gIHRoZSBjaGFubmVsIGNsb3NlcyB3aXRob3V0IHlpZWxkaW5nIGl0ZW1zLCByZXR1cm5zIGluaXQgYW5kIGYgaXMgbm90XFxuICBjYWxsZWQuIGNoIG11c3QgY2xvc2UgYmVmb3JlIHJlZHVjZSBwcm9kdWNlcyBhIHJlc3VsdC5cIlxuIFtmIGluaXQgY2hdXG4gKGdvLWxvb3BcbiAgW3JldCBpbml0XVxuICAobGV0XG4gICBbdiAoPCEgY2gpXVxuICAgKGlmXG4gICAgKG5pbD8gdilcbiAgICByZXRcbiAgICAobGV0IFtyZXQnIChmIHJldCB2KV0gKGlmIChyZWR1Y2VkPyByZXQnKSBAcmV0JyAocmVjdXIgcmV0JykpKSkpKSlcbiJ9IHs6c3ltIHJlbW92ZT4sIDptZXRhIHs6ZG9jICJEZXByZWNhdGVkIC0gdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHJlbW92ZWQuIFVzZSB0cmFuc2R1Y2VyIGluc3RlYWQiLCA6YXJnbGlzdHMgKFtwIGNoXSl9LCA6c291cmNlICIoZGVmblxuIHJlbW92ZT5cbiBcIkRlcHJlY2F0ZWQgLSB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVtb3ZlZC4gVXNlIHRyYW5zZHVjZXIgaW5zdGVhZFwiXG4gW3AgY2hdXG4gKGZpbHRlcj4gKGNvbXBsZW1lbnQgcCkgY2gpKVxuIn0gezpzeW0gdGltZW91dCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBjaGFubmVsIHRoYXQgd2lsbCBjbG9zZSBhZnRlciBtc2VjcyIsIDphcmdsaXN0cyAoW21zZWNzXSl9LCA6c291cmNlICIoZGVmblxuIHRpbWVvdXRcbiBcIlJldHVybnMgYSBjaGFubmVsIHRoYXQgd2lsbCBjbG9zZSBhZnRlciBtc2Vjc1wiXG4gW21zZWNzXVxuICh0aW1lcnMvdGltZW91dCBtc2VjcykpXG4ifSB7OnN5bSB1bnN1YiosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcCB2IGNoXSl9LCA6cHJvdG9jb2wgUHVifSB7OnN5bSBhZG1peCosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbSBjaF0pfSwgOnByb3RvY29sIE1peH0gezpzeW0gdW5taXgqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW20gY2hdKX0sIDpwcm90b2NvbCBNaXh9IHs6c3ltIG1peCwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYW5kIHJldHVybnMgYSBtaXggb2Ygb25lIG9yIG1vcmUgaW5wdXQgY2hhbm5lbHMgd2hpY2ggd2lsbFxuICBiZSBwdXQgb24gdGhlIHN1cHBsaWVkIG91dCBjaGFubmVsLiBJbnB1dCBzb3VyY2VzIGNhbiBiZSBhZGRlZCB0b1xuICB0aGUgbWl4IHdpdGggJ2FkbWl4JywgYW5kIHJlbW92ZWQgd2l0aCAndW5taXgnLiBBIG1peCBzdXBwb3J0c1xuICBzb2xvaW5nLCBtdXRpbmcgYW5kIHBhdXNpbmcgbXVsdGlwbGUgaW5wdXRzIGF0b21pY2FsbHkgdXNpbmdcbiAgJ3RvZ2dsZScsIGFuZCBjYW4gc29sbyB1c2luZyBlaXRoZXIgbXV0aW5nIG9yIHBhdXNpbmcgYXMgZGV0ZXJtaW5lZFxuICBieSAnc29sby1tb2RlJy5cblxuICBFYWNoIGNoYW5uZWwgY2FuIGhhdmUgemVybyBvciBtb3JlIGJvb2xlYW4gbW9kZXMgc2V0IHZpYSAndG9nZ2xlJzpcblxuICA6c29sbyAtIHdoZW4gdHJ1ZSwgb25seSB0aGlzIChvbmQgb3RoZXIgc29sb2VkKSBjaGFubmVsKHMpIHdpbGwgYXBwZWFyXG4gICAgICAgICAgaW4gdGhlIG1peCBvdXRwdXQgY2hhbm5lbC4gOm11dGUgYW5kIDpwYXVzZSBzdGF0ZXMgb2Ygc29sb2VkXG4gICAgICAgICAgY2hhbm5lbHMgYXJlIGlnbm9yZWQuIElmIHNvbG8tbW9kZSBpcyA6bXV0ZSwgbm9uLXNvbG9lZFxuICAgICAgICAgIGNoYW5uZWxzIGFyZSBtdXRlZCwgaWYgOnBhdXNlLCBub24tc29sb2VkIGNoYW5uZWxzIGFyZVxuICAgICAgICAgIHBhdXNlZC5cblxuICA6bXV0ZSAtIG11dGVkIGNoYW5uZWxzIHdpbGwgaGF2ZSB0aGVpciBjb250ZW50cyBjb25zdW1lZCBidXQgbm90IGluY2x1ZGVkIGluIHRoZSBtaXhcbiAgOnBhdXNlIC0gcGF1c2VkIGNoYW5uZWxzIHdpbGwgbm90IGhhdmUgdGhlaXIgY29udGVudHMgY29uc3VtZWQgKGFuZCB0aHVzIGFsc28gbm90IGluY2x1ZGVkIGluIHRoZSBtaXgpXG4iLCA6YXJnbGlzdHMgKFtvdXRdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWl4XG4gXCJDcmVhdGVzIGFuZCByZXR1cm5zIGEgbWl4IG9mIG9uZSBvciBtb3JlIGlucHV0IGNoYW5uZWxzIHdoaWNoIHdpbGxcXG4gIGJlIHB1dCBvbiB0aGUgc3VwcGxpZWQgb3V0IGNoYW5uZWwuIElucHV0IHNvdXJjZXMgY2FuIGJlIGFkZGVkIHRvXFxuICB0aGUgbWl4IHdpdGggJ2FkbWl4JywgYW5kIHJlbW92ZWQgd2l0aCAndW5taXgnLiBBIG1peCBzdXBwb3J0c1xcbiAgc29sb2luZywgbXV0aW5nIGFuZCBwYXVzaW5nIG11bHRpcGxlIGlucHV0cyBhdG9taWNhbGx5IHVzaW5nXFxuICAndG9nZ2xlJywgYW5kIGNhbiBzb2xvIHVzaW5nIGVpdGhlciBtdXRpbmcgb3IgcGF1c2luZyBhcyBkZXRlcm1pbmVkXFxuICBieSAnc29sby1tb2RlJy5cXG5cXG4gIEVhY2ggY2hhbm5lbCBjYW4gaGF2ZSB6ZXJvIG9yIG1vcmUgYm9vbGVhbiBtb2RlcyBzZXQgdmlhICd0b2dnbGUnOlxcblxcbiAgOnNvbG8gLSB3aGVuIHRydWUsIG9ubHkgdGhpcyAob25kIG90aGVyIHNvbG9lZCkgY2hhbm5lbChzKSB3aWxsIGFwcGVhclxcbiAgICAgICAgICBpbiB0aGUgbWl4IG91dHB1dCBjaGFubmVsLiA6bXV0ZSBhbmQgOnBhdXNlIHN0YXRlcyBvZiBzb2xvZWRcXG4gICAgICAgICAgY2hhbm5lbHMgYXJlIGlnbm9yZWQuIElmIHNvbG8tbW9kZSBpcyA6bXV0ZSwgbm9uLXNvbG9lZFxcbiAgICAgICAgICBjaGFubmVscyBhcmUgbXV0ZWQsIGlmIDpwYXVzZSwgbm9uLXNvbG9lZCBjaGFubmVscyBhcmVcXG4gICAgICAgICAgcGF1c2VkLlxcblxcbiAgOm11dGUgLSBtdXRlZCBjaGFubmVscyB3aWxsIGhhdmUgdGhlaXIgY29udGVudHMgY29uc3VtZWQgYnV0IG5vdCBpbmNsdWRlZCBpbiB0aGUgbWl4XFxuICA6cGF1c2UgLSBwYXVzZWQgY2hhbm5lbHMgd2lsbCBub3QgaGF2ZSB0aGVpciBjb250ZW50cyBjb25zdW1lZCAoYW5kIHRodXMgYWxzbyBub3QgaW5jbHVkZWQgaW4gdGhlIG1peClcXG5cIlxuIFtvdXRdXG4gKGxldFxuICBbY3NcbiAgIChhdG9tIHt9KVxuICAgc29sby1tb2Rlc1xuICAgI3s6cGF1c2UgOm11dGV9XG4gICBhdHRyc1xuICAgKGNvbmogc29sby1tb2RlcyA6c29sbylcbiAgIHNvbG8tbW9kZVxuICAgKGF0b20gOm11dGUpXG4gICBjaGFuZ2VcbiAgIChjaGFuIChzbGlkaW5nLWJ1ZmZlciAxKSlcbiAgIGNoYW5nZWRcbiAgIChmbiogW10gKHB1dCEgY2hhbmdlIHRydWUpKVxuICAgcGlja1xuICAgKGZuXG4gICAgW2F0dHIgY2hzXVxuICAgIChyZWR1Y2Uta3YgKGZuIFtyZXQgYyB2XSAoaWYgKGF0dHIgdikgKGNvbmogcmV0IGMpIHJldCkpICN7fSBjaHMpKVxuICAgY2FsYy1zdGF0ZVxuICAgKGZuXG4gICAgW11cbiAgICAobGV0XG4gICAgIFtjaHNcbiAgICAgIEBjc1xuICAgICAgbW9kZVxuICAgICAgQHNvbG8tbW9kZVxuICAgICAgc29sb3NcbiAgICAgIChwaWNrIDpzb2xvIGNocylcbiAgICAgIHBhdXNlc1xuICAgICAgKHBpY2sgOnBhdXNlIGNocyldXG4gICAgIHs6c29sb3Mgc29sb3MsXG4gICAgICA6bXV0ZXMgKHBpY2sgOm11dGUgY2hzKSxcbiAgICAgIDpyZWFkc1xuICAgICAgKGNvbmpcbiAgICAgICAoaWZcbiAgICAgICAgKGFuZCAoPSBtb2RlIDpwYXVzZSkgKG5vdCAoZW1wdHk/IHNvbG9zKSkpXG4gICAgICAgICh2ZWMgc29sb3MpXG4gICAgICAgICh2ZWMgKHJlbW92ZSBwYXVzZXMgKGtleXMgY2hzKSkpKVxuICAgICAgIGNoYW5nZSl9KSlcbiAgIG1cbiAgIChyZWlmeVxuICAgIE11eFxuICAgIChtdXhjaCogW19dIG91dClcbiAgICBNaXhcbiAgICAoYWRtaXgqIFtfIGNoXSAoc3dhcCEgY3MgYXNzb2MgY2gge30pIChjaGFuZ2VkKSlcbiAgICAodW5taXgqIFtfIGNoXSAoc3dhcCEgY3MgZGlzc29jIGNoKSAoY2hhbmdlZCkpXG4gICAgKHVubWl4LWFsbCogW19dIChyZXNldCEgY3Mge30pIChjaGFuZ2VkKSlcbiAgICAodG9nZ2xlKlxuICAgICBbXyBzdGF0ZS1tYXBdXG4gICAgIChzd2FwISBjcyAocGFydGlhbCBtZXJnZS13aXRoIGNsanMuY29yZS9tZXJnZSkgc3RhdGUtbWFwKVxuICAgICAoY2hhbmdlZCkpXG4gICAgKHNvbG8tbW9kZSpcbiAgICAgW18gbW9kZV1cbiAgICAgKGFzc2VydFxuICAgICAgKHNvbG8tbW9kZXMgbW9kZSlcbiAgICAgIChzdHIgXCJtb2RlIG11c3QgYmUgb25lIG9mOiBcIiBzb2xvLW1vZGVzKSlcbiAgICAgKHJlc2V0ISBzb2xvLW1vZGUgbW9kZSlcbiAgICAgKGNoYW5nZWQpKSldXG4gIChnby1sb29wXG4gICBbezprZXlzIFtzb2xvcyBtdXRlcyByZWFkc10sIDphcyBzdGF0ZX0gKGNhbGMtc3RhdGUpXVxuICAgKGxldFxuICAgIFtbdiBjXSAoYWx0cyEgcmVhZHMpXVxuICAgIChpZlxuICAgICAob3IgKG5pbD8gdikgKD0gYyBjaGFuZ2UpKVxuICAgICAoZG8gKHdoZW4gKG5pbD8gdikgKHN3YXAhIGNzIGRpc3NvYyBjKSkgKHJlY3VyIChjYWxjLXN0YXRlKSkpXG4gICAgIChpZlxuICAgICAgKG9yIChzb2xvcyBjKSAoYW5kIChlbXB0eT8gc29sb3MpIChub3QgKG11dGVzIGMpKSkpXG4gICAgICAod2hlbiAoPiEgb3V0IHYpIChyZWN1ciBzdGF0ZSkpXG4gICAgICAocmVjdXIgc3RhdGUpKSkpKVxuICBtKSlcbiJ9IHs6c3ltIHB1YiwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYW5kIHJldHVybnMgYSBwdWIobGljYXRpb24pIG9mIHRoZSBzdXBwbGllZCBjaGFubmVsLFxuICBwYXJ0aXRpb25lZCBpbnRvIHRvcGljcyBieSB0aGUgdG9waWMtZm4uIHRvcGljLWZuIHdpbGwgYmUgYXBwbGllZCB0b1xuICBlYWNoIHZhbHVlIG9uIHRoZSBjaGFubmVsIGFuZCB0aGUgcmVzdWx0IHdpbGwgZGV0ZXJtaW5lIHRoZSAndG9waWMnXG4gIG9uIHdoaWNoIHRoYXQgdmFsdWUgd2lsbCBiZSBwdXQuIENoYW5uZWxzIGNhbiBiZSBzdWJzY3JpYmVkIHRvXG4gIHJlY2VpdmUgY29waWVzIG9mIHRvcGljcyB1c2luZyAnc3ViJywgYW5kIHVuc3Vic2NyaWJlZCB1c2luZ1xuICAndW5zdWInLiBFYWNoIHRvcGljIHdpbGwgYmUgaGFuZGxlZCBieSBhbiBpbnRlcm5hbCBtdWx0IG9uIGFcbiAgZGVkaWNhdGVkIGNoYW5uZWwuIEJ5IGRlZmF1bHQgdGhlc2UgaW50ZXJuYWwgY2hhbm5lbHMgYXJlXG4gIHVuYnVmZmVyZWQsIGJ1dCBhIGJ1Zi1mbiBjYW4gYmUgc3VwcGxpZWQgd2hpY2gsIGdpdmVuIGEgdG9waWMsXG4gIGNyZWF0ZXMgYSBidWZmZXIgd2l0aCBkZXNpcmVkIHByb3BlcnRpZXMuXG5cbiAgRWFjaCBpdGVtIGlzIGRpc3RyaWJ1dGVkIHRvIGFsbCBzdWJzIGluIHBhcmFsbGVsIGFuZCBzeW5jaHJvbm91c2x5LFxuICBpLmUuIGVhY2ggc3ViIG11c3QgYWNjZXB0IGJlZm9yZSB0aGUgbmV4dCBpdGVtIGlzIGRpc3RyaWJ1dGVkLiBVc2VcbiAgYnVmZmVyaW5nL3dpbmRvd2luZyB0byBwcmV2ZW50IHNsb3cgc3VicyBmcm9tIGhvbGRpbmcgdXAgdGhlIHB1Yi5cblxuICBJdGVtcyByZWNlaXZlZCB3aGVuIHRoZXJlIGFyZSBubyBtYXRjaGluZyBzdWJzIGdldCBkcm9wcGVkLlxuXG4gIE5vdGUgdGhhdCBpZiBidWYtZm5zIGFyZSB1c2VkIHRoZW4gZWFjaCB0b3BpYyBpcyBoYW5kbGVkXG4gIGFzeW5jaHJvbm91c2x5LCBpLmUuIGlmIGEgY2hhbm5lbCBpcyBzdWJzY3JpYmVkIHRvIG1vcmUgdGhhbiBvbmVcbiAgdG9waWMgaXQgc2hvdWxkIG5vdCBleHBlY3QgdGhlbSB0byBiZSBpbnRlcmxlYXZlZCBpZGVudGljYWxseSB3aXRoXG4gIHRoZSBzb3VyY2UuIiwgOmFyZ2xpc3RzIFtbY2ggdG9waWMtZm5dIFtjaCB0b3BpYy1mbiBidWYtZm5dXX0sIDpzb3VyY2UgIihkZWZuXG4gcHViXG4gXCJDcmVhdGVzIGFuZCByZXR1cm5zIGEgcHViKGxpY2F0aW9uKSBvZiB0aGUgc3VwcGxpZWQgY2hhbm5lbCxcXG4gIHBhcnRpdGlvbmVkIGludG8gdG9waWNzIGJ5IHRoZSB0b3BpYy1mbi4gdG9waWMtZm4gd2lsbCBiZSBhcHBsaWVkIHRvXFxuICBlYWNoIHZhbHVlIG9uIHRoZSBjaGFubmVsIGFuZCB0aGUgcmVzdWx0IHdpbGwgZGV0ZXJtaW5lIHRoZSAndG9waWMnXFxuICBvbiB3aGljaCB0aGF0IHZhbHVlIHdpbGwgYmUgcHV0LiBDaGFubmVscyBjYW4gYmUgc3Vic2NyaWJlZCB0b1xcbiAgcmVjZWl2ZSBjb3BpZXMgb2YgdG9waWNzIHVzaW5nICdzdWInLCBhbmQgdW5zdWJzY3JpYmVkIHVzaW5nXFxuICAndW5zdWInLiBFYWNoIHRvcGljIHdpbGwgYmUgaGFuZGxlZCBieSBhbiBpbnRlcm5hbCBtdWx0IG9uIGFcXG4gIGRlZGljYXRlZCBjaGFubmVsLiBCeSBkZWZhdWx0IHRoZXNlIGludGVybmFsIGNoYW5uZWxzIGFyZVxcbiAgdW5idWZmZXJlZCwgYnV0IGEgYnVmLWZuIGNhbiBiZSBzdXBwbGllZCB3aGljaCwgZ2l2ZW4gYSB0b3BpYyxcXG4gIGNyZWF0ZXMgYSBidWZmZXIgd2l0aCBkZXNpcmVkIHByb3BlcnRpZXMuXFxuXFxuICBFYWNoIGl0ZW0gaXMgZGlzdHJpYnV0ZWQgdG8gYWxsIHN1YnMgaW4gcGFyYWxsZWwgYW5kIHN5bmNocm9ub3VzbHksXFxuICBpLmUuIGVhY2ggc3ViIG11c3QgYWNjZXB0IGJlZm9yZSB0aGUgbmV4dCBpdGVtIGlzIGRpc3RyaWJ1dGVkLiBVc2VcXG4gIGJ1ZmZlcmluZy93aW5kb3dpbmcgdG8gcHJldmVudCBzbG93IHN1YnMgZnJvbSBob2xkaW5nIHVwIHRoZSBwdWIuXFxuXFxuICBJdGVtcyByZWNlaXZlZCB3aGVuIHRoZXJlIGFyZSBubyBtYXRjaGluZyBzdWJzIGdldCBkcm9wcGVkLlxcblxcbiAgTm90ZSB0aGF0IGlmIGJ1Zi1mbnMgYXJlIHVzZWQgdGhlbiBlYWNoIHRvcGljIGlzIGhhbmRsZWRcXG4gIGFzeW5jaHJvbm91c2x5LCBpLmUuIGlmIGEgY2hhbm5lbCBpcyBzdWJzY3JpYmVkIHRvIG1vcmUgdGhhbiBvbmVcXG4gIHRvcGljIGl0IHNob3VsZCBub3QgZXhwZWN0IHRoZW0gdG8gYmUgaW50ZXJsZWF2ZWQgaWRlbnRpY2FsbHkgd2l0aFxcbiAgdGhlIHNvdXJjZS5cIlxuIChbY2ggdG9waWMtZm5dIChwdWIgY2ggdG9waWMtZm4gKGNvbnN0YW50bHkgbmlsKSkpXG4gKFtjaCB0b3BpYy1mbiBidWYtZm5dXG4gIChsZXRcbiAgIFttdWx0c1xuICAgIChhdG9tIHt9KVxuICAgIGVuc3VyZS1tdWx0XG4gICAgKGZuXG4gICAgIFt0b3BpY11cbiAgICAgKG9yXG4gICAgICAoZ2V0IEBtdWx0cyB0b3BpYylcbiAgICAgIChnZXRcbiAgICAgICAoc3dhcCFcbiAgICAgICAgbXVsdHNcbiAgICAgICAgKGZuKlxuICAgICAgICAgW3AxX180NTEyNyNdXG4gICAgICAgICAoaWZcbiAgICAgICAgICAocDFfXzQ1MTI3IyB0b3BpYylcbiAgICAgICAgICBwMV9fNDUxMjcjXG4gICAgICAgICAgKGFzc29jIHAxX180NTEyNyMgdG9waWMgKG11bHQgKGNoYW4gKGJ1Zi1mbiB0b3BpYykpKSkpKSlcbiAgICAgICB0b3BpYykpKVxuICAgIHBcbiAgICAocmVpZnlcbiAgICAgTXV4XG4gICAgIChtdXhjaCogW19dIGNoKVxuICAgICBQdWJcbiAgICAgKHN1YipcbiAgICAgIFtwIHRvcGljIGNoIGNsb3NlP11cbiAgICAgIChsZXQgW20gKGVuc3VyZS1tdWx0IHRvcGljKV0gKHRhcCBtIGNoIGNsb3NlPykpKVxuICAgICAodW5zdWIqXG4gICAgICBbcCB0b3BpYyBjaF1cbiAgICAgICh3aGVuLWxldCBbbSAoZ2V0IEBtdWx0cyB0b3BpYyldICh1bnRhcCBtIGNoKSkpXG4gICAgICh1bnN1Yi1hbGwqIFtfXSAocmVzZXQhIG11bHRzIHt9KSlcbiAgICAgKHVuc3ViLWFsbCogW18gdG9waWNdIChzd2FwISBtdWx0cyBkaXNzb2MgdG9waWMpKSldXG4gICAoZ28tbG9vcFxuICAgIFtdXG4gICAgKGxldFxuICAgICBbdmFsICg8ISBjaCldXG4gICAgIChpZlxuICAgICAgKG5pbD8gdmFsKVxuICAgICAgKGRvc2VxIFttICh2YWxzIEBtdWx0cyldIChjbG9zZSEgKG11eGNoKiBtKSkpXG4gICAgICAobGV0XG4gICAgICAgW3RvcGljICh0b3BpYy1mbiB2YWwpIG0gKGdldCBAbXVsdHMgdG9waWMpXVxuICAgICAgICh3aGVuXG4gICAgICAgIG1cbiAgICAgICAgKHdoZW4tbm90ICg+ISAobXV4Y2gqIG0pIHZhbCkgKHN3YXAhIG11bHRzIGRpc3NvYyB0b3BpYykpKVxuICAgICAgIChyZWN1cikpKSkpXG4gICBwKSkpXG4ifSB7OnN5bSB0YWtlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGNoYW5uZWwgdGhhdCB3aWxsIHJldHVybiwgYXQgbW9zdCwgbiBpdGVtcyBmcm9tIGNoLiBBZnRlciBuIGl0ZW1zXG4gICBoYXZlIGJlZW4gcmV0dXJuZWQsIG9yIGNoIGhhcyBiZWVuIGNsb3NlZCwgdGhlIHJldHVybiBjaGFuZWwgd2lsbCBjbG9zZS5cblxuICBUaGUgb3V0cHV0IGNoYW5uZWwgaXMgdW5idWZmZXJlZCBieSBkZWZhdWx0LCB1bmxlc3MgYnVmLW9yLW4gaXMgZ2l2ZW4uIiwgOmFyZ2xpc3RzIFtbbiBjaF0gW24gY2ggYnVmLW9yLW5dXX0sIDpzb3VyY2UgIihkZWZuXG4gdGFrZVxuIFwiUmV0dXJucyBhIGNoYW5uZWwgdGhhdCB3aWxsIHJldHVybiwgYXQgbW9zdCwgbiBpdGVtcyBmcm9tIGNoLiBBZnRlciBuIGl0ZW1zXFxuICAgaGF2ZSBiZWVuIHJldHVybmVkLCBvciBjaCBoYXMgYmVlbiBjbG9zZWQsIHRoZSByZXR1cm4gY2hhbmVsIHdpbGwgY2xvc2UuXFxuXFxuICBUaGUgb3V0cHV0IGNoYW5uZWwgaXMgdW5idWZmZXJlZCBieSBkZWZhdWx0LCB1bmxlc3MgYnVmLW9yLW4gaXMgZ2l2ZW4uXCJcbiAoW24gY2hdICh0YWtlIG4gY2ggbmlsKSlcbiAoW24gY2ggYnVmLW9yLW5dXG4gIChsZXRcbiAgIFtvdXQgKGNoYW4gYnVmLW9yLW4pXVxuICAgKGdvXG4gICAgKGxvb3BcbiAgICAgW3ggMF1cbiAgICAgKHdoZW5cbiAgICAgICg8IHggbilcbiAgICAgIChsZXRcbiAgICAgICBbdiAoPCEgY2gpXVxuICAgICAgICh3aGVuIChub3QgKG5pbD8gdikpICg+ISBvdXQgdikgKHJlY3VyIChpbmMgeCkpKSkpKVxuICAgIChjbG9zZSEgb3V0KSlcbiAgIG91dCkpKVxuIn0gezpzeW0gdW5zdWItYWxsKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwXSBbcCB2XSl9LCA6cHJvdG9jb2wgUHVifSB7OnN5bSA8ISwgOm1ldGEgezpkb2MgInRha2VzIGEgdmFsIGZyb20gcG9ydC4gTXVzdCBiZSBjYWxsZWQgaW5zaWRlIGEgKGdvIC4uLikgYmxvY2suIFdpbGxcbiAgcmV0dXJuIG5pbCBpZiBjbG9zZWQuIFdpbGwgcGFyayBpZiBub3RoaW5nIGlzIGF2YWlsYWJsZS5cbiAgUmV0dXJucyB0cnVlIHVubGVzcyBwb3J0IGlzIGFscmVhZHkgY2xvc2VkIiwgOmFyZ2xpc3RzIChbcG9ydF0pfSwgOnNvdXJjZSAiKGRlZm5cbiA8IVxuIFwidGFrZXMgYSB2YWwgZnJvbSBwb3J0LiBNdXN0IGJlIGNhbGxlZCBpbnNpZGUgYSAoZ28gLi4uKSBibG9jay4gV2lsbFxcbiAgcmV0dXJuIG5pbCBpZiBjbG9zZWQuIFdpbGwgcGFyayBpZiBub3RoaW5nIGlzIGF2YWlsYWJsZS5cXG4gIFJldHVybnMgdHJ1ZSB1bmxlc3MgcG9ydCBpcyBhbHJlYWR5IGNsb3NlZFwiXG4gW3BvcnRdXG4gKHRocm93IChqcy9FcnJvci4gXCI8ISB1c2VkIG5vdCBpbiAoZ28gLi4uKSBibG9ja1wiKSkpXG4ifSB7OnN5bSBtYXAsIDptZXRhIHs6ZG9jICJUYWtlcyBhIGZ1bmN0aW9uIGFuZCBhIGNvbGxlY3Rpb24gb2Ygc291cmNlIGNoYW5uZWxzLCBhbmQgcmV0dXJucyBhXG4gIGNoYW5uZWwgd2hpY2ggY29udGFpbnMgdGhlIHZhbHVlcyBwcm9kdWNlZCBieSBhcHBseWluZyBmIHRvIHRoZSBzZXRcbiAgb2YgZmlyc3QgaXRlbXMgdGFrZW4gZnJvbSBlYWNoIHNvdXJjZSBjaGFubmVsLCBmb2xsb3dlZCBieSBhcHBseWluZ1xuICBmIHRvIHRoZSBzZXQgb2Ygc2Vjb25kIGl0ZW1zIGZyb20gZWFjaCBjaGFubmVsLCB1bnRpbCBhbnkgb25lIG9mIHRoZVxuICBjaGFubmVscyBpcyBjbG9zZWQsIGF0IHdoaWNoIHBvaW50IHRoZSBvdXRwdXQgY2hhbm5lbCB3aWxsIGJlXG4gIGNsb3NlZC4gVGhlIHJldHVybmVkIGNoYW5uZWwgd2lsbCBiZSB1bmJ1ZmZlcmVkIGJ5IGRlZmF1bHQsIG9yIGFcbiAgYnVmLW9yLW4gY2FuIGJlIHN1cHBsaWVkIiwgOmFyZ2xpc3RzIFtbZiBjaHNdIFtmIGNocyBidWYtb3Itbl1dfSwgOnNvdXJjZSAiKGRlZm5cbiBtYXBcbiBcIlRha2VzIGEgZnVuY3Rpb24gYW5kIGEgY29sbGVjdGlvbiBvZiBzb3VyY2UgY2hhbm5lbHMsIGFuZCByZXR1cm5zIGFcXG4gIGNoYW5uZWwgd2hpY2ggY29udGFpbnMgdGhlIHZhbHVlcyBwcm9kdWNlZCBieSBhcHBseWluZyBmIHRvIHRoZSBzZXRcXG4gIG9mIGZpcnN0IGl0ZW1zIHRha2VuIGZyb20gZWFjaCBzb3VyY2UgY2hhbm5lbCwgZm9sbG93ZWQgYnkgYXBwbHlpbmdcXG4gIGYgdG8gdGhlIHNldCBvZiBzZWNvbmQgaXRlbXMgZnJvbSBlYWNoIGNoYW5uZWwsIHVudGlsIGFueSBvbmUgb2YgdGhlXFxuICBjaGFubmVscyBpcyBjbG9zZWQsIGF0IHdoaWNoIHBvaW50IHRoZSBvdXRwdXQgY2hhbm5lbCB3aWxsIGJlXFxuICBjbG9zZWQuIFRoZSByZXR1cm5lZCBjaGFubmVsIHdpbGwgYmUgdW5idWZmZXJlZCBieSBkZWZhdWx0LCBvciBhXFxuICBidWYtb3ItbiBjYW4gYmUgc3VwcGxpZWRcIlxuIChbZiBjaHNdIChtYXAgZiBjaHMgbmlsKSlcbiAoW2YgY2hzIGJ1Zi1vci1uXVxuICAobGV0XG4gICBbY2hzXG4gICAgKHZlYyBjaHMpXG4gICAgb3V0XG4gICAgKGNoYW4gYnVmLW9yLW4pXG4gICAgY250XG4gICAgKGNvdW50IGNocylcbiAgICByZXRzXG4gICAgKG9iamVjdC1hcnJheSBjbnQpXG4gICAgZGNoYW5cbiAgICAoY2hhbiAxKVxuICAgIGRjdHJcbiAgICAoYXRvbSBuaWwpXG4gICAgZG9uZVxuICAgIChtYXB2XG4gICAgIChmblxuICAgICAgW2ldXG4gICAgICAoZm5cbiAgICAgICBbcmV0XVxuICAgICAgIChhc2V0IHJldHMgaSByZXQpXG4gICAgICAgKHdoZW4gKHplcm8/IChzd2FwISBkY3RyIGRlYykpIChwdXQhIGRjaGFuICguc2xpY2UgcmV0cyAwKSkpKSlcbiAgICAgKHJhbmdlIGNudCkpXVxuICAgKGdvLWxvb3BcbiAgICBbXVxuICAgIChyZXNldCEgZGN0ciBjbnQpXG4gICAgKGRvdGltZXNcbiAgICAgW2kgY250XVxuICAgICAodHJ5XG4gICAgICAodGFrZSEgKGNocyBpKSAoZG9uZSBpKSlcbiAgICAgIChjYXRjaCBqcy9PYmplY3QgZSAoc3dhcCEgZGN0ciBkZWMpKSkpXG4gICAgKGxldFxuICAgICBbcmV0cyAoPCEgZGNoYW4pXVxuICAgICAoaWZcbiAgICAgIChzb21lIG5pbD8gcmV0cylcbiAgICAgIChjbG9zZSEgb3V0KVxuICAgICAgKGRvICg+ISBvdXQgKGFwcGx5IGYgcmV0cykpIChyZWN1cikpKSkpXG4gICBvdXQpKSlcbiJ9IHs6c3ltIE11eCwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKG11eGNoKil9IHs6c3ltIG1hcGNhdD4sIDptZXRhIHs6ZG9jICJEZXByZWNhdGVkIC0gdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHJlbW92ZWQuIFVzZSB0cmFuc2R1Y2VyIGluc3RlYWQiLCA6YXJnbGlzdHMgW1tmIG91dF0gW2Ygb3V0IGJ1Zi1vci1uXV19LCA6c291cmNlICIoZGVmblxuIG1hcGNhdD5cbiBcIkRlcHJlY2F0ZWQgLSB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVtb3ZlZC4gVXNlIHRyYW5zZHVjZXIgaW5zdGVhZFwiXG4gKFtmIG91dF0gKG1hcGNhdD4gZiBvdXQgbmlsKSlcbiAoW2Ygb3V0IGJ1Zi1vci1uXSAobGV0IFtpbiAoY2hhbiBidWYtb3ItbildIChtYXBjYXQqIGYgaW4gb3V0KSBpbikpKVxuIn0gezpzeW0gYnVmZmVyLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGZpeGVkIGJ1ZmZlciBvZiBzaXplIG4uIFdoZW4gZnVsbCwgcHV0cyB3aWxsIGJsb2NrL3BhcmsuIiwgOmFyZ2xpc3RzIChbbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBidWZmZXJcbiBcIlJldHVybnMgYSBmaXhlZCBidWZmZXIgb2Ygc2l6ZSBuLiBXaGVuIGZ1bGwsIHB1dHMgd2lsbCBibG9jay9wYXJrLlwiXG4gW25dXG4gKGJ1ZmZlcnMvZml4ZWQtYnVmZmVyIG4pKVxuIn0gezpzeW0gY2xvc2UhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW3BvcnRdXX0sIDpzb3VyY2UgIihkZWZuIGNsb3NlISAoW3BvcnRdIChpbXBsL2Nsb3NlISBwb3J0KSkpXG4ifSB7OnN5bSBvZmZlciEsIDptZXRhIHs6ZG9jICJQdXRzIGEgdmFsIGludG8gcG9ydCBpZiBpdCdzIHBvc3NpYmxlIHRvIGRvIHNvIGltbWVkaWF0ZWx5LlxuICBuaWwgdmFsdWVzIGFyZSBub3QgYWxsb3dlZC4gTmV2ZXIgYmxvY2tzLiBSZXR1cm5zIHRydWUgaWYgb2ZmZXIgc3VjY2VlZHMuIiwgOmFyZ2xpc3RzIChbcG9ydCB2YWxdKX0sIDpzb3VyY2UgIihkZWZuXG4gb2ZmZXIhXG4gXCJQdXRzIGEgdmFsIGludG8gcG9ydCBpZiBpdCdzIHBvc3NpYmxlIHRvIGRvIHNvIGltbWVkaWF0ZWx5LlxcbiAgbmlsIHZhbHVlcyBhcmUgbm90IGFsbG93ZWQuIE5ldmVyIGJsb2Nrcy4gUmV0dXJucyB0cnVlIGlmIG9mZmVyIHN1Y2NlZWRzLlwiXG4gW3BvcnQgdmFsXVxuIChsZXRcbiAgW3JldCAoaW1wbC9wdXQhIHBvcnQgdmFsIChmbi1oYW5kbGVyIG5vcCBmYWxzZSkpXVxuICAod2hlbiByZXQgQHJldCkpKVxuIn0gezpzeW0gY2hhbiwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYSBjaGFubmVsIHdpdGggYW4gb3B0aW9uYWwgYnVmZmVyLCBhbiBvcHRpb25hbCB0cmFuc2R1Y2VyIChsaWtlIChtYXAgZiksXG4gIChmaWx0ZXIgcCkgZXRjIG9yIGEgY29tcG9zaXRpb24gdGhlcmVvZiksIGFuZCBhbiBvcHRpb25hbCBleGNlcHRpb24gaGFuZGxlci5cbiAgSWYgYnVmLW9yLW4gaXMgYSBudW1iZXIsIHdpbGwgY3JlYXRlIGFuZCB1c2UgYSBmaXhlZCBidWZmZXIgb2YgdGhhdCBzaXplLiBJZiBhXG4gIHRyYW5zZHVjZXIgaXMgc3VwcGxpZWQgYSBidWZmZXIgbXVzdCBiZSBzcGVjaWZpZWQuIGV4LWhhbmRsZXIgbXVzdCBiZSBhXG4gIGZuIG9mIG9uZSBhcmd1bWVudCAtIGlmIGFuIGV4Y2VwdGlvbiBvY2N1cnMgZHVyaW5nIHRyYW5zZm9ybWF0aW9uIGl0IHdpbGwgYmUgY2FsbGVkXG4gIHdpdGggdGhlIHRocm93biB2YWx1ZSBhcyBhbiBhcmd1bWVudCwgYW5kIGFueSBub24tbmlsIHJldHVybiB2YWx1ZSB3aWxsIGJlIHBsYWNlZFxuICBpbiB0aGUgY2hhbm5lbC4iLCA6YXJnbGlzdHMgW1tdIFtidWYtb3Itbl0gW2J1Zi1vci1uIHhmb3JtXSBbYnVmLW9yLW4geGZvcm0gZXgtaGFuZGxlcl1dfSwgOnNvdXJjZSAiKGRlZm5cbiBjaGFuXG4gXCJDcmVhdGVzIGEgY2hhbm5lbCB3aXRoIGFuIG9wdGlvbmFsIGJ1ZmZlciwgYW4gb3B0aW9uYWwgdHJhbnNkdWNlciAobGlrZSAobWFwIGYpLFxcbiAgKGZpbHRlciBwKSBldGMgb3IgYSBjb21wb3NpdGlvbiB0aGVyZW9mKSwgYW5kIGFuIG9wdGlvbmFsIGV4Y2VwdGlvbiBoYW5kbGVyLlxcbiAgSWYgYnVmLW9yLW4gaXMgYSBudW1iZXIsIHdpbGwgY3JlYXRlIGFuZCB1c2UgYSBmaXhlZCBidWZmZXIgb2YgdGhhdCBzaXplLiBJZiBhXFxuICB0cmFuc2R1Y2VyIGlzIHN1cHBsaWVkIGEgYnVmZmVyIG11c3QgYmUgc3BlY2lmaWVkLiBleC1oYW5kbGVyIG11c3QgYmUgYVxcbiAgZm4gb2Ygb25lIGFyZ3VtZW50IC0gaWYgYW4gZXhjZXB0aW9uIG9jY3VycyBkdXJpbmcgdHJhbnNmb3JtYXRpb24gaXQgd2lsbCBiZSBjYWxsZWRcXG4gIHdpdGggdGhlIHRocm93biB2YWx1ZSBhcyBhbiBhcmd1bWVudCwgYW5kIGFueSBub24tbmlsIHJldHVybiB2YWx1ZSB3aWxsIGJlIHBsYWNlZFxcbiAgaW4gdGhlIGNoYW5uZWwuXCJcbiAoW10gKGNoYW4gbmlsKSlcbiAoW2J1Zi1vci1uXSAoY2hhbiBidWYtb3ItbiBuaWwgbmlsKSlcbiAoW2J1Zi1vci1uIHhmb3JtXSAoY2hhbiBidWYtb3ItbiB4Zm9ybSBuaWwpKVxuIChbYnVmLW9yLW4geGZvcm0gZXgtaGFuZGxlcl1cbiAgKGxldFxuICAgW2J1Zi1vci1uIChpZiAoPSBidWYtb3ItbiAwKSBuaWwgYnVmLW9yLW4pXVxuICAgKHdoZW5cbiAgICB4Zm9ybVxuICAgIChhc3NlcnQgYnVmLW9yLW4gXCJidWZmZXIgbXVzdCBiZSBzdXBwbGllZCB3aGVuIHRyYW5zZHVjZXIgaXNcIikpXG4gICAoY2hhbm5lbHMvY2hhblxuICAgIChpZiAobnVtYmVyPyBidWYtb3ItbikgKGJ1ZmZlciBidWYtb3ItbikgYnVmLW9yLW4pXG4gICAgeGZvcm1cbiAgICBleC1oYW5kbGVyKSkpKVxuIn0gezpzeW0gc29sby1tb2RlKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttIG1vZGVdKX0sIDpwcm90b2NvbCBNaXh9IHs6c3ltIG9udG8tY2hhbiEsIDptZXRhIHs6ZG9jICJQdXRzIHRoZSBjb250ZW50cyBvZiBjb2xsIGludG8gdGhlIHN1cHBsaWVkIGNoYW5uZWwuXG5cbiAgQnkgZGVmYXVsdCB0aGUgY2hhbm5lbCB3aWxsIGJlIGNsb3NlZCBhZnRlciB0aGUgaXRlbXMgYXJlIGNvcGllZCxcbiAgYnV0IGNhbiBiZSBkZXRlcm1pbmVkIGJ5IHRoZSBjbG9zZT8gcGFyYW1ldGVyLlxuXG4gIFJldHVybnMgYSBjaGFubmVsIHdoaWNoIHdpbGwgY2xvc2UgYWZ0ZXIgdGhlIGl0ZW1zIGFyZSBjb3BpZWQuIiwgOmFyZ2xpc3RzIFtbY2ggY29sbF0gW2NoIGNvbGwgY2xvc2U/XV19LCA6c291cmNlICIoZGVmblxuIG9udG8tY2hhbiFcbiBcIlB1dHMgdGhlIGNvbnRlbnRzIG9mIGNvbGwgaW50byB0aGUgc3VwcGxpZWQgY2hhbm5lbC5cXG5cXG4gIEJ5IGRlZmF1bHQgdGhlIGNoYW5uZWwgd2lsbCBiZSBjbG9zZWQgYWZ0ZXIgdGhlIGl0ZW1zIGFyZSBjb3BpZWQsXFxuICBidXQgY2FuIGJlIGRldGVybWluZWQgYnkgdGhlIGNsb3NlPyBwYXJhbWV0ZXIuXFxuXFxuICBSZXR1cm5zIGEgY2hhbm5lbCB3aGljaCB3aWxsIGNsb3NlIGFmdGVyIHRoZSBpdGVtcyBhcmUgY29waWVkLlwiXG4gKFtjaCBjb2xsXSAob250by1jaGFuISBjaCBjb2xsIHRydWUpKVxuIChbY2ggY29sbCBjbG9zZT9dXG4gIChnby1sb29wXG4gICBbdnMgKHNlcSBjb2xsKV1cbiAgIChpZlxuICAgIChhbmQgdnMgKD4hIGNoIChmaXJzdCB2cykpKVxuICAgIChyZWN1ciAobmV4dCB2cykpXG4gICAgKHdoZW4gY2xvc2U/IChjbG9zZSEgY2gpKSkpKSlcbiJ9IHs6c3ltIHRhcCwgOm1ldGEgezpkb2MgIkNvcGllcyB0aGUgbXVsdCBzb3VyY2Ugb250byB0aGUgc3VwcGxpZWQgY2hhbm5lbC5cblxuICBCeSBkZWZhdWx0IHRoZSBjaGFubmVsIHdpbGwgYmUgY2xvc2VkIHdoZW4gdGhlIHNvdXJjZSBjbG9zZXMsXG4gIGJ1dCBjYW4gYmUgZGV0ZXJtaW5lZCBieSB0aGUgY2xvc2U/IHBhcmFtZXRlci4iLCA6YXJnbGlzdHMgW1ttdWx0IGNoXSBbbXVsdCBjaCBjbG9zZT9dXX0sIDpzb3VyY2UgIihkZWZuXG4gdGFwXG4gXCJDb3BpZXMgdGhlIG11bHQgc291cmNlIG9udG8gdGhlIHN1cHBsaWVkIGNoYW5uZWwuXFxuXFxuICBCeSBkZWZhdWx0IHRoZSBjaGFubmVsIHdpbGwgYmUgY2xvc2VkIHdoZW4gdGhlIHNvdXJjZSBjbG9zZXMsXFxuICBidXQgY2FuIGJlIGRldGVybWluZWQgYnkgdGhlIGNsb3NlPyBwYXJhbWV0ZXIuXCJcbiAoW211bHQgY2hdICh0YXAgbXVsdCBjaCB0cnVlKSlcbiAoW211bHQgY2ggY2xvc2U/XSAodGFwKiBtdWx0IGNoIGNsb3NlPykgY2gpKVxuIn0gezpzeW0gYWRtaXgsIDptZXRhIHs6ZG9jICJBZGRzIGNoIGFzIGFuIGlucHV0IHRvIHRoZSBtaXgiLCA6YXJnbGlzdHMgKFttaXggY2hdKX0sIDpzb3VyY2UgIihkZWZuIGFkbWl4IFwiQWRkcyBjaCBhcyBhbiBpbnB1dCB0byB0aGUgbWl4XCIgW21peCBjaF0gKGFkbWl4KiBtaXggY2gpKVxuIn0gezpzeW0gcHJvbWlzZS1jaGFuLCA6bWV0YSB7OmRvYyAiQ3JlYXRlcyBhIHByb21pc2UgY2hhbm5lbCB3aXRoIGFuIG9wdGlvbmFsIHRyYW5zZHVjZXIsIGFuZCBhbiBvcHRpb25hbFxuICBleGNlcHRpb24taGFuZGxlci4gQSBwcm9taXNlIGNoYW5uZWwgY2FuIHRha2UgZXhhY3RseSBvbmUgdmFsdWUgdGhhdCBjb25zdW1lcnNcbiAgd2lsbCByZWNlaXZlLiBPbmNlIGZ1bGwsIHB1dHMgY29tcGxldGUgYnV0IHZhbCBpcyBkcm9wcGVkIChubyB0cmFuc2ZlcikuXG4gIENvbnN1bWVycyB3aWxsIGJsb2NrIHVudGlsIGVpdGhlciBhIHZhbHVlIGlzIHBsYWNlZCBpbiB0aGUgY2hhbm5lbCBvciB0aGVcbiAgY2hhbm5lbCBpcyBjbG9zZWQuIFNlZSBjaGFuIGZvciB0aGUgc2VtYW50aWNzIG9mIHhmb3JtIGFuZCBleC1oYW5kbGVyLiIsIDphcmdsaXN0cyBbW10gW3hmb3JtXSBbeGZvcm0gZXgtaGFuZGxlcl1dfSwgOnNvdXJjZSAiKGRlZm5cbiBwcm9taXNlLWNoYW5cbiBcIkNyZWF0ZXMgYSBwcm9taXNlIGNoYW5uZWwgd2l0aCBhbiBvcHRpb25hbCB0cmFuc2R1Y2VyLCBhbmQgYW4gb3B0aW9uYWxcXG4gIGV4Y2VwdGlvbi1oYW5kbGVyLiBBIHByb21pc2UgY2hhbm5lbCBjYW4gdGFrZSBleGFjdGx5IG9uZSB2YWx1ZSB0aGF0IGNvbnN1bWVyc1xcbiAgd2lsbCByZWNlaXZlLiBPbmNlIGZ1bGwsIHB1dHMgY29tcGxldGUgYnV0IHZhbCBpcyBkcm9wcGVkIChubyB0cmFuc2ZlcikuXFxuICBDb25zdW1lcnMgd2lsbCBibG9jayB1bnRpbCBlaXRoZXIgYSB2YWx1ZSBpcyBwbGFjZWQgaW4gdGhlIGNoYW5uZWwgb3IgdGhlXFxuICBjaGFubmVsIGlzIGNsb3NlZC4gU2VlIGNoYW4gZm9yIHRoZSBzZW1hbnRpY3Mgb2YgeGZvcm0gYW5kIGV4LWhhbmRsZXIuXCJcbiAoW10gKHByb21pc2UtY2hhbiBuaWwpKVxuIChbeGZvcm1dIChwcm9taXNlLWNoYW4geGZvcm0gbmlsKSlcbiAoW3hmb3JtIGV4LWhhbmRsZXJdIChjaGFuIChidWZmZXJzL3Byb21pc2UtYnVmZmVyKSB4Zm9ybSBleC1oYW5kbGVyKSkpXG4ifSB7OnN5bSB1bmlxdWUsIDptZXRhIHs6ZG9jICJEZXByZWNhdGVkIC0gdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHJlbW92ZWQuIFVzZSB0cmFuc2R1Y2VyIGluc3RlYWQiLCA6YXJnbGlzdHMgW1tjaF0gW2NoIGJ1Zi1vci1uXV19LCA6c291cmNlICIoZGVmblxuIHVuaXF1ZVxuIFwiRGVwcmVjYXRlZCAtIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSByZW1vdmVkLiBVc2UgdHJhbnNkdWNlciBpbnN0ZWFkXCJcbiAoW2NoXSAodW5pcXVlIGNoIG5pbCkpXG4gKFtjaCBidWYtb3Itbl1cbiAgKGxldFxuICAgW291dCAoY2hhbiBidWYtb3ItbildXG4gICAoZ29cbiAgICAobG9vcFxuICAgICBbbGFzdCBuaWxdXG4gICAgIChsZXRcbiAgICAgIFt2ICg8ISBjaCldXG4gICAgICAod2hlblxuICAgICAgIChub3QgKG5pbD8gdikpXG4gICAgICAgKGlmICg9IHYgbGFzdCkgKHJlY3VyIGxhc3QpIChkbyAoPiEgb3V0IHYpIChyZWN1ciB2KSkpKSkpXG4gICAgKGNsb3NlISBvdXQpKVxuICAgb3V0KSkpXG4ifSB7OnN5bSBtdXhjaCosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbX10pfSwgOnByb3RvY29sIE11eH0gezpzeW0gc29sby1tb2RlLCA6bWV0YSB7OmRvYyAiU2V0cyB0aGUgc29sbyBtb2RlIG9mIHRoZSBtaXguIG1vZGUgbXVzdCBiZSBvbmUgb2YgOm11dGUgb3IgOnBhdXNlIiwgOmFyZ2xpc3RzIChbbWl4IG1vZGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gc29sby1tb2RlXG4gXCJTZXRzIHRoZSBzb2xvIG1vZGUgb2YgdGhlIG1peC4gbW9kZSBtdXN0IGJlIG9uZSBvZiA6bXV0ZSBvciA6cGF1c2VcIlxuIFttaXggbW9kZV1cbiAoc29sby1tb2RlKiBtaXggbW9kZSkpXG4ifSB7OnN5bSB0cmFuc2R1Y2UsIDptZXRhIHs6ZG9jICJhc3luYy9yZWR1Y2VzIGEgY2hhbm5lbCB3aXRoIGEgdHJhbnNmb3JtYXRpb24gKHhmb3JtIGYpLlxuICBSZXR1cm5zIGEgY2hhbm5lbCBjb250YWluaW5nIHRoZSByZXN1bHQuICBjaCBtdXN0IGNsb3NlIGJlZm9yZVxuICB0cmFuc2R1Y2UgcHJvZHVjZXMgYSByZXN1bHQuIiwgOmFyZ2xpc3RzIChbeGZvcm0gZiBpbml0IGNoXSl9LCA6c291cmNlICIoZGVmblxuIHRyYW5zZHVjZVxuIFwiYXN5bmMvcmVkdWNlcyBhIGNoYW5uZWwgd2l0aCBhIHRyYW5zZm9ybWF0aW9uICh4Zm9ybSBmKS5cXG4gIFJldHVybnMgYSBjaGFubmVsIGNvbnRhaW5pbmcgdGhlIHJlc3VsdC4gIGNoIG11c3QgY2xvc2UgYmVmb3JlXFxuICB0cmFuc2R1Y2UgcHJvZHVjZXMgYSByZXN1bHQuXCJcbiBbeGZvcm0gZiBpbml0IGNoXVxuIChsZXQgW2YgKHhmb3JtIGYpXSAoZ28gKGxldCBbcmV0ICg8ISAocmVkdWNlIGYgaW5pdCBjaCkpXSAoZiByZXQpKSkpKVxuIn0gezpzeW0gb250by1jaGFuLCA6bWV0YSB7OmRvYyAiRGVwcmVjYXRlZCAtIHVzZSBvbnRvLWNoYW4hIiwgOmFyZ2xpc3RzIFtbY2ggY29sbF0gW2NoIGNvbGwgY2xvc2U/XV19LCA6c291cmNlICIoZGVmblxuIG9udG8tY2hhblxuIFwiRGVwcmVjYXRlZCAtIHVzZSBvbnRvLWNoYW4hXCJcbiB7OmRlcHJlY2F0ZWQgXCIxLjJcIn1cbiAoW2NoIGNvbGxdIChvbnRvLWNoYW4hIGNoIGNvbGwgdHJ1ZSkpXG4gKFtjaCBjb2xsIGNsb3NlP10gKG9udG8tY2hhbiEgY2ggY29sbCBjbG9zZT8pKSlcbiJ9IHs6c3ltIHRvLWNoYW4sIDptZXRhIHs6ZG9jICJEZXByZWNhdGVkIC0gdXNlIHRvLWNoYW4hIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0by1jaGFuXG4gXCJEZXByZWNhdGVkIC0gdXNlIHRvLWNoYW4hXCJcbiB7OmRlcHJlY2F0ZWQgXCIxLjJcIn1cbiBbY29sbF1cbiAodG8tY2hhbiEgY29sbCkpXG4ifSB7OnN5bSBkcm9wcGluZy1idWZmZXIsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgYnVmZmVyIG9mIHNpemUgbi4gV2hlbiBmdWxsLCBwdXRzIHdpbGwgY29tcGxldGUgYnV0XG4gIHZhbCB3aWxsIGJlIGRyb3BwZWQgKG5vIHRyYW5zZmVyKS4iLCA6YXJnbGlzdHMgKFtuXSl9LCA6c291cmNlICIoZGVmblxuIGRyb3BwaW5nLWJ1ZmZlclxuIFwiUmV0dXJucyBhIGJ1ZmZlciBvZiBzaXplIG4uIFdoZW4gZnVsbCwgcHV0cyB3aWxsIGNvbXBsZXRlIGJ1dFxcbiAgdmFsIHdpbGwgYmUgZHJvcHBlZCAobm8gdHJhbnNmZXIpLlwiXG4gW25dXG4gKGJ1ZmZlcnMvZHJvcHBpbmctYnVmZmVyIG4pKVxuIn0gezpzeW0gdW50YXAtYWxsLCA6bWV0YSB7OmRvYyAiRGlzY29ubmVjdHMgYWxsIHRhcmdldCBjaGFubmVscyBmcm9tIGEgbXVsdCIsIDphcmdsaXN0cyAoW211bHRdKX0sIDpzb3VyY2UgIihkZWZuXG4gdW50YXAtYWxsXG4gXCJEaXNjb25uZWN0cyBhbGwgdGFyZ2V0IGNoYW5uZWxzIGZyb20gYSBtdWx0XCJcbiBbbXVsdF1cbiAodW50YXAtYWxsKiBtdWx0KSlcbiJ9IHs6c3ltIGludG8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgY2hhbm5lbCBjb250YWluaW5nIHRoZSBzaW5nbGUgKGNvbGxlY3Rpb24pIHJlc3VsdCBvZiB0aGVcbiAgaXRlbXMgdGFrZW4gZnJvbSB0aGUgY2hhbm5lbCBjb25qb2luZWQgdG8gdGhlIHN1cHBsaWVkXG4gIGNvbGxlY3Rpb24uIGNoIG11c3QgY2xvc2UgYmVmb3JlIGludG8gcHJvZHVjZXMgYSByZXN1bHQuIiwgOmFyZ2xpc3RzIChbY29sbCBjaF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbnRvXG4gXCJSZXR1cm5zIGEgY2hhbm5lbCBjb250YWluaW5nIHRoZSBzaW5nbGUgKGNvbGxlY3Rpb24pIHJlc3VsdCBvZiB0aGVcXG4gIGl0ZW1zIHRha2VuIGZyb20gdGhlIGNoYW5uZWwgY29uam9pbmVkIHRvIHRoZSBzdXBwbGllZFxcbiAgY29sbGVjdGlvbi4gY2ggbXVzdCBjbG9zZSBiZWZvcmUgaW50byBwcm9kdWNlcyBhIHJlc3VsdC5cIlxuIFtjb2xsIGNoXVxuIChyZWR1Y2UgY29uaiBjb2xsIGNoKSlcbiJ9IHs6c3ltIHRvLWNoYW4hLCA6bWV0YSB7OmRvYyAiQ3JlYXRlcyBhbmQgcmV0dXJucyBhIGNoYW5uZWwgd2hpY2ggY29udGFpbnMgdGhlIGNvbnRlbnRzIG9mIGNvbGwsXG4gIGNsb3Npbmcgd2hlbiBleGhhdXN0ZWQuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0by1jaGFuIVxuIFwiQ3JlYXRlcyBhbmQgcmV0dXJucyBhIGNoYW5uZWwgd2hpY2ggY29udGFpbnMgdGhlIGNvbnRlbnRzIG9mIGNvbGwsXFxuICBjbG9zaW5nIHdoZW4gZXhoYXVzdGVkLlwiXG4gW2NvbGxdXG4gKGxldCBbY2ggKGNoYW4gKGJvdW5kZWQtY291bnQgMTAwIGNvbGwpKV0gKG9udG8tY2hhbiEgY2ggY29sbCkgY2gpKVxuIn0gezpzeW0gcGlwZWxpbmUsIDptZXRhIHs6ZG9jICJUYWtlcyBlbGVtZW50cyBmcm9tIHRoZSBmcm9tIGNoYW5uZWwgYW5kIHN1cHBsaWVzIHRoZW0gdG8gdGhlIHRvXG4gIGNoYW5uZWwsIHN1YmplY3QgdG8gdGhlIHRyYW5zZHVjZXIgeGYsIHdpdGggcGFyYWxsZWxpc20gbi4gQmVjYXVzZVxuICBpdCBpcyBwYXJhbGxlbCwgdGhlIHRyYW5zZHVjZXIgd2lsbCBiZSBhcHBsaWVkIGluZGVwZW5kZW50bHkgdG8gZWFjaFxuICBlbGVtZW50LCBub3QgYWNyb3NzIGVsZW1lbnRzLCBhbmQgbWF5IHByb2R1Y2UgemVybyBvciBtb3JlIG91dHB1dHNcbiAgcGVyIGlucHV0LiAgT3V0cHV0cyB3aWxsIGJlIHJldHVybmVkIGluIG9yZGVyIHJlbGF0aXZlIHRvIHRoZVxuICBpbnB1dHMuIEJ5IGRlZmF1bHQsIHRoZSB0byBjaGFubmVsIHdpbGwgYmUgY2xvc2VkIHdoZW4gdGhlIGZyb21cbiAgY2hhbm5lbCBjbG9zZXMsIGJ1dCBjYW4gYmUgZGV0ZXJtaW5lZCBieSB0aGUgY2xvc2U/ICBwYXJhbWV0ZXIuIFdpbGxcbiAgc3RvcCBjb25zdW1pbmcgdGhlIGZyb20gY2hhbm5lbCBpZiB0aGUgdG8gY2hhbm5lbCBjbG9zZXMuXG5cbiAgTm90ZSB0aGlzIGlzIHN1cHBsaWVkIGZvciBBUEkgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBDbG9qdXJlIHZlcnNpb24uXG4gIFZhbHVlcyBvZiBOID4gMSB3aWxsIG5vdCByZXN1bHQgaW4gYWN0dWFsIGNvbmN1cnJlbmN5IGluIGFcbiAgc2luZ2xlLXRocmVhZGVkIHJ1bnRpbWUuIiwgOmFyZ2xpc3RzIFtbbiB0byB4ZiBmcm9tXSBbbiB0byB4ZiBmcm9tIGNsb3NlP10gW24gdG8geGYgZnJvbSBjbG9zZT8gZXgtaGFuZGxlcl1dfSwgOnNvdXJjZSAiKGRlZm5cbiBwaXBlbGluZVxuIFwiVGFrZXMgZWxlbWVudHMgZnJvbSB0aGUgZnJvbSBjaGFubmVsIGFuZCBzdXBwbGllcyB0aGVtIHRvIHRoZSB0b1xcbiAgY2hhbm5lbCwgc3ViamVjdCB0byB0aGUgdHJhbnNkdWNlciB4Ziwgd2l0aCBwYXJhbGxlbGlzbSBuLiBCZWNhdXNlXFxuICBpdCBpcyBwYXJhbGxlbCwgdGhlIHRyYW5zZHVjZXIgd2lsbCBiZSBhcHBsaWVkIGluZGVwZW5kZW50bHkgdG8gZWFjaFxcbiAgZWxlbWVudCwgbm90IGFjcm9zcyBlbGVtZW50cywgYW5kIG1heSBwcm9kdWNlIHplcm8gb3IgbW9yZSBvdXRwdXRzXFxuICBwZXIgaW5wdXQuICBPdXRwdXRzIHdpbGwgYmUgcmV0dXJuZWQgaW4gb3JkZXIgcmVsYXRpdmUgdG8gdGhlXFxuICBpbnB1dHMuIEJ5IGRlZmF1bHQsIHRoZSB0byBjaGFubmVsIHdpbGwgYmUgY2xvc2VkIHdoZW4gdGhlIGZyb21cXG4gIGNoYW5uZWwgY2xvc2VzLCBidXQgY2FuIGJlIGRldGVybWluZWQgYnkgdGhlIGNsb3NlPyAgcGFyYW1ldGVyLiBXaWxsXFxuICBzdG9wIGNvbnN1bWluZyB0aGUgZnJvbSBjaGFubmVsIGlmIHRoZSB0byBjaGFubmVsIGNsb3Nlcy5cXG5cXG4gIE5vdGUgdGhpcyBpcyBzdXBwbGllZCBmb3IgQVBJIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgQ2xvanVyZSB2ZXJzaW9uLlxcbiAgVmFsdWVzIG9mIE4gPiAxIHdpbGwgbm90IHJlc3VsdCBpbiBhY3R1YWwgY29uY3VycmVuY3kgaW4gYVxcbiAgc2luZ2xlLXRocmVhZGVkIHJ1bnRpbWUuXCJcbiAoW24gdG8geGYgZnJvbV0gKHBpcGVsaW5lIG4gdG8geGYgZnJvbSB0cnVlKSlcbiAoW24gdG8geGYgZnJvbSBjbG9zZT9dIChwaXBlbGluZSBuIHRvIHhmIGZyb20gY2xvc2U/IG5pbCkpXG4gKFtuIHRvIHhmIGZyb20gY2xvc2U/IGV4LWhhbmRsZXJdXG4gIChwaXBlbGluZSogbiB0byB4ZiBmcm9tIGNsb3NlPyBleC1oYW5kbGVyIDpjb21wdXRlKSkpXG4ifSB7OnN5bSBzdWIsIDptZXRhIHs6ZG9jICJTdWJzY3JpYmVzIGEgY2hhbm5lbCB0byBhIHRvcGljIG9mIGEgcHViLlxuXG4gIEJ5IGRlZmF1bHQgdGhlIGNoYW5uZWwgd2lsbCBiZSBjbG9zZWQgd2hlbiB0aGUgc291cmNlIGNsb3NlcyxcbiAgYnV0IGNhbiBiZSBkZXRlcm1pbmVkIGJ5IHRoZSBjbG9zZT8gcGFyYW1ldGVyLiIsIDphcmdsaXN0cyBbW3AgdG9waWMgY2hdIFtwIHRvcGljIGNoIGNsb3NlP11dfSwgOnNvdXJjZSAiKGRlZm5cbiBzdWJcbiBcIlN1YnNjcmliZXMgYSBjaGFubmVsIHRvIGEgdG9waWMgb2YgYSBwdWIuXFxuXFxuICBCeSBkZWZhdWx0IHRoZSBjaGFubmVsIHdpbGwgYmUgY2xvc2VkIHdoZW4gdGhlIHNvdXJjZSBjbG9zZXMsXFxuICBidXQgY2FuIGJlIGRldGVybWluZWQgYnkgdGhlIGNsb3NlPyBwYXJhbWV0ZXIuXCJcbiAoW3AgdG9waWMgY2hdIChzdWIgcCB0b3BpYyBjaCB0cnVlKSlcbiAoW3AgdG9waWMgY2ggY2xvc2U/XSAoc3ViKiBwIHRvcGljIGNoIGNsb3NlPykpKVxuIn0gezpzeW0gbWFwPiwgOm1ldGEgezpkb2MgIkRlcHJlY2F0ZWQgLSB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVtb3ZlZC4gVXNlIHRyYW5zZHVjZXIgaW5zdGVhZCIsIDphcmdsaXN0cyAoW2YgY2hdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWFwPlxuIFwiRGVwcmVjYXRlZCAtIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSByZW1vdmVkLiBVc2UgdHJhbnNkdWNlciBpbnN0ZWFkXCJcbiBbZiBjaF1cbiAocmVpZnlcbiAgaW1wbC9DaGFubmVsXG4gIChjbG9zZSEgW19dIChpbXBsL2Nsb3NlISBjaCkpXG4gIGltcGwvUmVhZFBvcnRcbiAgKHRha2UhIFtfIGZuMV0gKGltcGwvdGFrZSEgY2ggZm4xKSlcbiAgaW1wbC9Xcml0ZVBvcnRcbiAgKHB1dCEgW18gdmFsIGZuMV0gKGltcGwvcHV0ISBjaCAoZiB2YWwpIGZuMSkpKSlcbiJ9IHs6c3ltIHBpcGUsIDptZXRhIHs6ZG9jICJUYWtlcyBlbGVtZW50cyBmcm9tIHRoZSBmcm9tIGNoYW5uZWwgYW5kIHN1cHBsaWVzIHRoZW0gdG8gdGhlIHRvXG4gICBjaGFubmVsLiBCeSBkZWZhdWx0LCB0aGUgdG8gY2hhbm5lbCB3aWxsIGJlIGNsb3NlZCB3aGVuIHRoZSBmcm9tXG4gICBjaGFubmVsIGNsb3NlcywgYnV0IGNhbiBiZSBkZXRlcm1pbmVkIGJ5IHRoZSBjbG9zZT8gIHBhcmFtZXRlci4gV2lsbFxuICAgc3RvcCBjb25zdW1pbmcgdGhlIGZyb20gY2hhbm5lbCBpZiB0aGUgdG8gY2hhbm5lbCBjbG9zZXMiLCA6YXJnbGlzdHMgW1tmcm9tIHRvXSBbZnJvbSB0byBjbG9zZT9dXX0sIDpzb3VyY2UgIihkZWZuXG4gcGlwZVxuIFwiVGFrZXMgZWxlbWVudHMgZnJvbSB0aGUgZnJvbSBjaGFubmVsIGFuZCBzdXBwbGllcyB0aGVtIHRvIHRoZSB0b1xcbiAgIGNoYW5uZWwuIEJ5IGRlZmF1bHQsIHRoZSB0byBjaGFubmVsIHdpbGwgYmUgY2xvc2VkIHdoZW4gdGhlIGZyb21cXG4gICBjaGFubmVsIGNsb3NlcywgYnV0IGNhbiBiZSBkZXRlcm1pbmVkIGJ5IHRoZSBjbG9zZT8gIHBhcmFtZXRlci4gV2lsbFxcbiAgIHN0b3AgY29uc3VtaW5nIHRoZSBmcm9tIGNoYW5uZWwgaWYgdGhlIHRvIGNoYW5uZWwgY2xvc2VzXCJcbiAoW2Zyb20gdG9dIChwaXBlIGZyb20gdG8gdHJ1ZSkpXG4gKFtmcm9tIHRvIGNsb3NlP11cbiAgKGdvLWxvb3BcbiAgIFtdXG4gICAobGV0XG4gICAgW3YgKDwhIGZyb20pXVxuICAgIChpZiAobmlsPyB2KSAod2hlbiBjbG9zZT8gKGNsb3NlISB0bykpICh3aGVuICg+ISB0byB2KSAocmVjdXIpKSkpKVxuICB0bykpXG4ifSB7OnN5bSB1bm1peCwgOm1ldGEgezpkb2MgIlJlbW92ZXMgY2ggYXMgYW4gaW5wdXQgdG8gdGhlIG1peCIsIDphcmdsaXN0cyAoW21peCBjaF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB1bm1peFxuIFwiUmVtb3ZlcyBjaCBhcyBhbiBpbnB1dCB0byB0aGUgbWl4XCJcbiBbbWl4IGNoXVxuICh1bm1peCogbWl4IGNoKSlcbiJ9IHs6c3ltIGZpbHRlcjwsIDptZXRhIHs6ZG9jICJEZXByZWNhdGVkIC0gdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHJlbW92ZWQuIFVzZSB0cmFuc2R1Y2VyIGluc3RlYWQiLCA6YXJnbGlzdHMgW1twIGNoXSBbcCBjaCBidWYtb3Itbl1dfSwgOnNvdXJjZSAiKGRlZm5cbiBmaWx0ZXI8XG4gXCJEZXByZWNhdGVkIC0gdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHJlbW92ZWQuIFVzZSB0cmFuc2R1Y2VyIGluc3RlYWRcIlxuIChbcCBjaF0gKGZpbHRlcjwgcCBjaCBuaWwpKVxuIChbcCBjaCBidWYtb3Itbl1cbiAgKGxldFxuICAgW291dCAoY2hhbiBidWYtb3ItbildXG4gICAoZ28tbG9vcFxuICAgIFtdXG4gICAgKGxldFxuICAgICBbdmFsICg8ISBjaCldXG4gICAgIChpZlxuICAgICAgKG5pbD8gdmFsKVxuICAgICAgKGNsb3NlISBvdXQpXG4gICAgICAoZG8gKHdoZW4gKHAgdmFsKSAoPiEgb3V0IHZhbCkpIChyZWN1cikpKSkpXG4gICBvdXQpKSlcbiJ9IHs6c3ltIHN1YiosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcCB2IGNoIGNsb3NlP10pfSwgOnByb3RvY29sIFB1Yn0gezpzeW0gcmVtb3ZlPCwgOm1ldGEgezpkb2MgIkRlcHJlY2F0ZWQgLSB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVtb3ZlZC4gVXNlIHRyYW5zZHVjZXIgaW5zdGVhZCIsIDphcmdsaXN0cyBbW3AgY2hdIFtwIGNoIGJ1Zi1vci1uXV19LCA6c291cmNlICIoZGVmblxuIHJlbW92ZTxcbiBcIkRlcHJlY2F0ZWQgLSB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVtb3ZlZC4gVXNlIHRyYW5zZHVjZXIgaW5zdGVhZFwiXG4gKFtwIGNoXSAocmVtb3ZlPCBwIGNoIG5pbCkpXG4gKFtwIGNoIGJ1Zi1vci1uXSAoZmlsdGVyPCAoY29tcGxlbWVudCBwKSBjaCBidWYtb3ItbikpKVxuIn0gezpzeW0gdW50YXAqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW20gY2hdKX0sIDpwcm90b2NvbCBNdWx0fSB7OnN5bSB0b2dnbGUsIDptZXRhIHs6ZG9jICJBdG9taWNhbGx5IHNldHMgdGhlIHN0YXRlKHMpIG9mIG9uZSBvciBtb3JlIGNoYW5uZWxzIGluIGEgbWl4LiBUaGVcbiAgc3RhdGUgbWFwIGlzIGEgbWFwIG9mIGNoYW5uZWxzIC0+IGNoYW5uZWwtc3RhdGUtbWFwLiBBXG4gIGNoYW5uZWwtc3RhdGUtbWFwIGlzIGEgbWFwIG9mIGF0dHJzIC0+IGJvb2xlYW4sIHdoZXJlIGF0dHIgaXMgb25lIG9yXG4gIG1vcmUgb2YgOm11dGUsIDpwYXVzZSBvciA6c29sby4gQW55IHN0YXRlcyBzdXBwbGllZCBhcmUgbWVyZ2VkIHdpdGhcbiAgdGhlIGN1cnJlbnQgc3RhdGUuXG5cbiAgTm90ZSB0aGF0IGNoYW5uZWxzIGNhbiBiZSBhZGRlZCB0byBhIG1peCB2aWEgdG9nZ2xlLCB3aGljaCBjYW4gYmVcbiAgdXNlZCB0byBhZGQgY2hhbm5lbHMgaW4gYSBwYXJ0aWN1bGFyIChlLmcuIHBhdXNlZCkgc3RhdGUuIiwgOmFyZ2xpc3RzIChbbWl4IHN0YXRlLW1hcF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0b2dnbGVcbiBcIkF0b21pY2FsbHkgc2V0cyB0aGUgc3RhdGUocykgb2Ygb25lIG9yIG1vcmUgY2hhbm5lbHMgaW4gYSBtaXguIFRoZVxcbiAgc3RhdGUgbWFwIGlzIGEgbWFwIG9mIGNoYW5uZWxzIC0+IGNoYW5uZWwtc3RhdGUtbWFwLiBBXFxuICBjaGFubmVsLXN0YXRlLW1hcCBpcyBhIG1hcCBvZiBhdHRycyAtPiBib29sZWFuLCB3aGVyZSBhdHRyIGlzIG9uZSBvclxcbiAgbW9yZSBvZiA6bXV0ZSwgOnBhdXNlIG9yIDpzb2xvLiBBbnkgc3RhdGVzIHN1cHBsaWVkIGFyZSBtZXJnZWQgd2l0aFxcbiAgdGhlIGN1cnJlbnQgc3RhdGUuXFxuXFxuICBOb3RlIHRoYXQgY2hhbm5lbHMgY2FuIGJlIGFkZGVkIHRvIGEgbWl4IHZpYSB0b2dnbGUsIHdoaWNoIGNhbiBiZVxcbiAgdXNlZCB0byBhZGQgY2hhbm5lbHMgaW4gYSBwYXJ0aWN1bGFyIChlLmcuIHBhdXNlZCkgc3RhdGUuXCJcbiBbbWl4IHN0YXRlLW1hcF1cbiAodG9nZ2xlKiBtaXggc3RhdGUtbWFwKSlcbiJ9IHs6c3ltIHVudGFwLWFsbCosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbV0pfSwgOnByb3RvY29sIE11bHR9IHs6c3ltIHNsaWRpbmctYnVmZmVyLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGJ1ZmZlciBvZiBzaXplIG4uIFdoZW4gZnVsbCwgcHV0cyB3aWxsIGNvbXBsZXRlLCBhbmQgYmVcbiAgYnVmZmVyZWQsIGJ1dCBvbGRlc3QgZWxlbWVudHMgaW4gYnVmZmVyIHdpbGwgYmUgZHJvcHBlZCAobm90XG4gIHRyYW5zZmVycmVkKS4iLCA6YXJnbGlzdHMgKFtuXSl9LCA6c291cmNlICIoZGVmblxuIHNsaWRpbmctYnVmZmVyXG4gXCJSZXR1cm5zIGEgYnVmZmVyIG9mIHNpemUgbi4gV2hlbiBmdWxsLCBwdXRzIHdpbGwgY29tcGxldGUsIGFuZCBiZVxcbiAgYnVmZmVyZWQsIGJ1dCBvbGRlc3QgZWxlbWVudHMgaW4gYnVmZmVyIHdpbGwgYmUgZHJvcHBlZCAobm90XFxuICB0cmFuc2ZlcnJlZCkuXCJcbiBbbl1cbiAoYnVmZmVycy9zbGlkaW5nLWJ1ZmZlciBuKSlcbiJ9IHs6c3ltIHBhcnRpdGlvbiwgOm1ldGEgezpkb2MgIkRlcHJlY2F0ZWQgLSB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVtb3ZlZC4gVXNlIHRyYW5zZHVjZXIgaW5zdGVhZCIsIDphcmdsaXN0cyBbW24gY2hdIFtuIGNoIGJ1Zi1vci1uXV19LCA6c291cmNlICIoZGVmblxuIHBhcnRpdGlvblxuIFwiRGVwcmVjYXRlZCAtIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSByZW1vdmVkLiBVc2UgdHJhbnNkdWNlciBpbnN0ZWFkXCJcbiAoW24gY2hdIChwYXJ0aXRpb24gbiBjaCBuaWwpKVxuIChbbiBjaCBidWYtb3Itbl1cbiAgKGxldFxuICAgW291dCAoY2hhbiBidWYtb3ItbildXG4gICAoZ29cbiAgICAobG9vcFxuICAgICBbYXJyIChtYWtlLWFycmF5IG4pIGlkeCAwXVxuICAgICAobGV0XG4gICAgICBbdiAoPCEgY2gpXVxuICAgICAgKGlmXG4gICAgICAgKG5vdCAobmlsPyB2KSlcbiAgICAgICAoZG9cbiAgICAgICAgKGFzZXQgYXJyIGlkeCB2KVxuICAgICAgICAobGV0XG4gICAgICAgICBbbmV3LWlkeCAoaW5jIGlkeCldXG4gICAgICAgICAoaWZcbiAgICAgICAgICAoPCBuZXctaWR4IG4pXG4gICAgICAgICAgKHJlY3VyIGFyciBuZXctaWR4KVxuICAgICAgICAgIChkbyAoPiEgb3V0ICh2ZWMgYXJyKSkgKHJlY3VyIChtYWtlLWFycmF5IG4pIDApKSkpKVxuICAgICAgIChkbyAod2hlbiAoPiBpZHggMCkgKD4hIG91dCAodmVjIGFycikpKSAoY2xvc2UhIG91dCkpKSkpKVxuICAgb3V0KSkpXG4ifSB7OnN5bSBNdWx0LCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAodGFwKiB1bnRhcCogdW50YXAtYWxsKil9IHs6c3ltIG1lcmdlLCA6bWV0YSB7OmRvYyAiVGFrZXMgYSBjb2xsZWN0aW9uIG9mIHNvdXJjZSBjaGFubmVscyBhbmQgcmV0dXJucyBhIGNoYW5uZWwgd2hpY2hcbiAgY29udGFpbnMgYWxsIHZhbHVlcyB0YWtlbiBmcm9tIHRoZW0uIFRoZSByZXR1cm5lZCBjaGFubmVsIHdpbGwgYmVcbiAgdW5idWZmZXJlZCBieSBkZWZhdWx0LCBvciBhIGJ1Zi1vci1uIGNhbiBiZSBzdXBwbGllZC4gVGhlIGNoYW5uZWxcbiAgd2lsbCBjbG9zZSBhZnRlciBhbGwgdGhlIHNvdXJjZSBjaGFubmVscyBoYXZlIGNsb3NlZC4iLCA6YXJnbGlzdHMgW1tjaHNdIFtjaHMgYnVmLW9yLW5dXX0sIDpzb3VyY2UgIihkZWZuXG4gbWVyZ2VcbiBcIlRha2VzIGEgY29sbGVjdGlvbiBvZiBzb3VyY2UgY2hhbm5lbHMgYW5kIHJldHVybnMgYSBjaGFubmVsIHdoaWNoXFxuICBjb250YWlucyBhbGwgdmFsdWVzIHRha2VuIGZyb20gdGhlbS4gVGhlIHJldHVybmVkIGNoYW5uZWwgd2lsbCBiZVxcbiAgdW5idWZmZXJlZCBieSBkZWZhdWx0LCBvciBhIGJ1Zi1vci1uIGNhbiBiZSBzdXBwbGllZC4gVGhlIGNoYW5uZWxcXG4gIHdpbGwgY2xvc2UgYWZ0ZXIgYWxsIHRoZSBzb3VyY2UgY2hhbm5lbHMgaGF2ZSBjbG9zZWQuXCJcbiAoW2Noc10gKG1lcmdlIGNocyBuaWwpKVxuIChbY2hzIGJ1Zi1vci1uXVxuICAobGV0XG4gICBbb3V0IChjaGFuIGJ1Zi1vci1uKV1cbiAgIChnby1sb29wXG4gICAgW2NzICh2ZWMgY2hzKV1cbiAgICAoaWZcbiAgICAgKHBvcz8gKGNvdW50IGNzKSlcbiAgICAgKGxldFxuICAgICAgW1t2IGNdIChhbHRzISBjcyldXG4gICAgICAoaWZcbiAgICAgICAobmlsPyB2KVxuICAgICAgIChyZWN1ciAoZmlsdGVydiAoZm4qIFtwMV9fNDUxMjgjXSAobm90PSBjIHAxX180NTEyOCMpKSBjcykpXG4gICAgICAgKGRvICg+ISBvdXQgdikgKHJlY3VyIGNzKSkpKVxuICAgICAoY2xvc2UhIG91dCkpKVxuICAgb3V0KSkpXG4ifSB7OnN5bSBwYXJ0aXRpb24tYnksIDptZXRhIHs6ZG9jICJEZXByZWNhdGVkIC0gdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHJlbW92ZWQuIFVzZSB0cmFuc2R1Y2VyIGluc3RlYWQiLCA6YXJnbGlzdHMgW1tmIGNoXSBbZiBjaCBidWYtb3Itbl1dfSwgOnNvdXJjZSAiKGRlZm5cbiBwYXJ0aXRpb24tYnlcbiBcIkRlcHJlY2F0ZWQgLSB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVtb3ZlZC4gVXNlIHRyYW5zZHVjZXIgaW5zdGVhZFwiXG4gKFtmIGNoXSAocGFydGl0aW9uLWJ5IGYgY2ggbmlsKSlcbiAoW2YgY2ggYnVmLW9yLW5dXG4gIChsZXRcbiAgIFtvdXQgKGNoYW4gYnVmLW9yLW4pXVxuICAgKGdvXG4gICAgKGxvb3BcbiAgICAgW2xzdCAobWFrZS1hcnJheSAwKSBsYXN0IDpjbGpzLmNvcmUuYXN5bmMvbm90aGluZ11cbiAgICAgKGxldFxuICAgICAgW3YgKDwhIGNoKV1cbiAgICAgIChpZlxuICAgICAgIChub3QgKG5pbD8gdikpXG4gICAgICAgKGxldFxuICAgICAgICBbbmV3LWl0bSAoZiB2KV1cbiAgICAgICAgKGlmXG4gICAgICAgICAob3JcbiAgICAgICAgICAoPSBuZXctaXRtIGxhc3QpXG4gICAgICAgICAgKGtleXdvcmQtaWRlbnRpY2FsPyBsYXN0IDpjbGpzLmNvcmUuYXN5bmMvbm90aGluZykpXG4gICAgICAgICAoZG8gKC5wdXNoIGxzdCB2KSAocmVjdXIgbHN0IG5ldy1pdG0pKVxuICAgICAgICAgKGRvXG4gICAgICAgICAgKD4hIG91dCAodmVjIGxzdCkpXG4gICAgICAgICAgKGxldFxuICAgICAgICAgICBbbmV3LWxzdCAobWFrZS1hcnJheSAwKV1cbiAgICAgICAgICAgKC5wdXNoIG5ldy1sc3QgdilcbiAgICAgICAgICAgKHJlY3VyIG5ldy1sc3QgbmV3LWl0bSkpKSkpXG4gICAgICAgKGRvXG4gICAgICAgICh3aGVuICg+IChhbGVuZ3RoIGxzdCkgMCkgKD4hIG91dCAodmVjIGxzdCkpKVxuICAgICAgICAoY2xvc2UhIG91dCkpKSkpKVxuICAgb3V0KSkpXG4ifSB7OnN5bSB1bnN1Yi1hbGwsIDptZXRhIHs6ZG9jICJVbnN1YnNjcmliZXMgYWxsIGNoYW5uZWxzIGZyb20gYSBwdWIsIG9yIGEgdG9waWMgb2YgYSBwdWIiLCA6YXJnbGlzdHMgW1twXSBbcCB0b3BpY11dfSwgOnNvdXJjZSAiKGRlZm5cbiB1bnN1Yi1hbGxcbiBcIlVuc3Vic2NyaWJlcyBhbGwgY2hhbm5lbHMgZnJvbSBhIHB1Yiwgb3IgYSB0b3BpYyBvZiBhIHB1YlwiXG4gKFtwXSAodW5zdWItYWxsKiBwKSlcbiAoW3AgdG9waWNdICh1bnN1Yi1hbGwqIHAgdG9waWMpKSlcbiJ9IHs6c3ltID4hLCA6bWV0YSB7OmRvYyAicHV0cyBhIHZhbCBpbnRvIHBvcnQuIG5pbCB2YWx1ZXMgYXJlIG5vdCBhbGxvd2VkLiBNdXN0IGJlIGNhbGxlZFxuICBpbnNpZGUgYSAoZ28gLi4uKSBibG9jay4gV2lsbCBwYXJrIGlmIG5vIGJ1ZmZlciBzcGFjZSBpcyBhdmFpbGFibGUuXG4gIFJldHVybnMgdHJ1ZSB1bmxlc3MgcG9ydCBpcyBhbHJlYWR5IGNsb3NlZC4iLCA6YXJnbGlzdHMgKFtwb3J0IHZhbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiA+IVxuIFwicHV0cyBhIHZhbCBpbnRvIHBvcnQuIG5pbCB2YWx1ZXMgYXJlIG5vdCBhbGxvd2VkLiBNdXN0IGJlIGNhbGxlZFxcbiAgaW5zaWRlIGEgKGdvIC4uLikgYmxvY2suIFdpbGwgcGFyayBpZiBubyBidWZmZXIgc3BhY2UgaXMgYXZhaWxhYmxlLlxcbiAgUmV0dXJucyB0cnVlIHVubGVzcyBwb3J0IGlzIGFscmVhZHkgY2xvc2VkLlwiXG4gW3BvcnQgdmFsXVxuICh0aHJvdyAoanMvRXJyb3IuIFwiPiEgdXNlZCBub3QgaW4gKGdvIC4uLikgYmxvY2tcIikpKVxuIn0gezpzeW0gdW5taXgtYWxsKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttXSl9LCA6cHJvdG9jb2wgTWl4fSB7OnN5bSBzcGxpdCwgOm1ldGEgezpkb2MgIlRha2VzIGEgcHJlZGljYXRlIGFuZCBhIHNvdXJjZSBjaGFubmVsIGFuZCByZXR1cm5zIGEgdmVjdG9yIG9mIHR3b1xuICBjaGFubmVscywgdGhlIGZpcnN0IG9mIHdoaWNoIHdpbGwgY29udGFpbiB0aGUgdmFsdWVzIGZvciB3aGljaCB0aGVcbiAgcHJlZGljYXRlIHJldHVybmVkIHRydWUsIHRoZSBzZWNvbmQgdGhvc2UgZm9yIHdoaWNoIGl0IHJldHVybmVkXG4gIGZhbHNlLlxuXG4gIFRoZSBvdXQgY2hhbm5lbHMgd2lsbCBiZSB1bmJ1ZmZlcmVkIGJ5IGRlZmF1bHQsIG9yIHR3byBidWYtb3ItbnMgY2FuXG4gIGJlIHN1cHBsaWVkLiBUaGUgY2hhbm5lbHMgd2lsbCBjbG9zZSBhZnRlciB0aGUgc291cmNlIGNoYW5uZWwgaGFzXG4gIGNsb3NlZC4iLCA6YXJnbGlzdHMgW1twIGNoXSBbcCBjaCB0LWJ1Zi1vci1uIGYtYnVmLW9yLW5dXX0sIDpzb3VyY2UgIihkZWZuXG4gc3BsaXRcbiBcIlRha2VzIGEgcHJlZGljYXRlIGFuZCBhIHNvdXJjZSBjaGFubmVsIGFuZCByZXR1cm5zIGEgdmVjdG9yIG9mIHR3b1xcbiAgY2hhbm5lbHMsIHRoZSBmaXJzdCBvZiB3aGljaCB3aWxsIGNvbnRhaW4gdGhlIHZhbHVlcyBmb3Igd2hpY2ggdGhlXFxuICBwcmVkaWNhdGUgcmV0dXJuZWQgdHJ1ZSwgdGhlIHNlY29uZCB0aG9zZSBmb3Igd2hpY2ggaXQgcmV0dXJuZWRcXG4gIGZhbHNlLlxcblxcbiAgVGhlIG91dCBjaGFubmVscyB3aWxsIGJlIHVuYnVmZmVyZWQgYnkgZGVmYXVsdCwgb3IgdHdvIGJ1Zi1vci1ucyBjYW5cXG4gIGJlIHN1cHBsaWVkLiBUaGUgY2hhbm5lbHMgd2lsbCBjbG9zZSBhZnRlciB0aGUgc291cmNlIGNoYW5uZWwgaGFzXFxuICBjbG9zZWQuXCJcbiAoW3AgY2hdIChzcGxpdCBwIGNoIG5pbCBuaWwpKVxuIChbcCBjaCB0LWJ1Zi1vci1uIGYtYnVmLW9yLW5dXG4gIChsZXRcbiAgIFt0YyAoY2hhbiB0LWJ1Zi1vci1uKSBmYyAoY2hhbiBmLWJ1Zi1vci1uKV1cbiAgIChnby1sb29wXG4gICAgW11cbiAgICAobGV0XG4gICAgIFt2ICg8ISBjaCldXG4gICAgIChpZlxuICAgICAgKG5pbD8gdilcbiAgICAgIChkbyAoY2xvc2UhIHRjKSAoY2xvc2UhIGZjKSlcbiAgICAgICh3aGVuICg+ISAoaWYgKHAgdikgdGMgZmMpIHYpIChyZWN1cikpKSkpXG4gICBbdGMgZmNdKSkpXG4ifSB7OnN5bSB1bm1peC1hbGwsIDptZXRhIHs6ZG9jICJyZW1vdmVzIGFsbCBpbnB1dHMgZnJvbSB0aGUgbWl4IiwgOmFyZ2xpc3RzIChbbWl4XSl9LCA6c291cmNlICIoZGVmblxuIHVubWl4LWFsbFxuIFwicmVtb3ZlcyBhbGwgaW5wdXRzIGZyb20gdGhlIG1peFwiXG4gW21peF1cbiAodW5taXgtYWxsKiBtaXgpKVxuIn0gezpzeW0gZmlsdGVyPiwgOm1ldGEgezpkb2MgIkRlcHJlY2F0ZWQgLSB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVtb3ZlZC4gVXNlIHRyYW5zZHVjZXIgaW5zdGVhZCIsIDphcmdsaXN0cyAoW3AgY2hdKX0sIDpzb3VyY2UgIihkZWZuXG4gZmlsdGVyPlxuIFwiRGVwcmVjYXRlZCAtIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSByZW1vdmVkLiBVc2UgdHJhbnNkdWNlciBpbnN0ZWFkXCJcbiBbcCBjaF1cbiAocmVpZnlcbiAgaW1wbC9DaGFubmVsXG4gIChjbG9zZSEgW19dIChpbXBsL2Nsb3NlISBjaCkpXG4gIChjbG9zZWQ/IFtfXSAoaW1wbC9jbG9zZWQ/IGNoKSlcbiAgaW1wbC9SZWFkUG9ydFxuICAodGFrZSEgW18gZm4xXSAoaW1wbC90YWtlISBjaCBmbjEpKVxuICBpbXBsL1dyaXRlUG9ydFxuICAocHV0IVxuICAgW18gdmFsIGZuMV1cbiAgIChpZlxuICAgIChwIHZhbClcbiAgICAoaW1wbC9wdXQhIGNoIHZhbCBmbjEpXG4gICAgKGNoYW5uZWxzL2JveCAobm90IChpbXBsL2Nsb3NlZD8gY2gpKSkpKSkpXG4ifSB7OnN5bSB0YXAqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW20gY2ggY2xvc2U/XSl9LCA6cHJvdG9jb2wgTXVsdH0gezpzeW0gdW50YXAsIDptZXRhIHs6ZG9jICJEaXNjb25uZWN0cyBhIHRhcmdldCBjaGFubmVsIGZyb20gYSBtdWx0IiwgOmFyZ2xpc3RzIChbbXVsdCBjaF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB1bnRhcFxuIFwiRGlzY29ubmVjdHMgYSB0YXJnZXQgY2hhbm5lbCBmcm9tIGEgbXVsdFwiXG4gW211bHQgY2hdXG4gKHVudGFwKiBtdWx0IGNoKSlcbiJ9IHs6c3ltIGFsdHMhLCA6bWV0YSB7OmRvYyAiQ29tcGxldGVzIGF0IG1vc3Qgb25lIG9mIHNldmVyYWwgY2hhbm5lbCBvcGVyYXRpb25zLiBNdXN0IGJlIGNhbGxlZFxuICAgaW5zaWRlIGEgKGdvIC4uLikgYmxvY2suIHBvcnRzIGlzIGEgdmVjdG9yIG9mIGNoYW5uZWwgZW5kcG9pbnRzLFxuICAgd2hpY2ggY2FuIGJlIGVpdGhlciBhIGNoYW5uZWwgdG8gdGFrZSBmcm9tIG9yIGEgdmVjdG9yIG9mXG4gIFtjaGFubmVsLXRvLXB1dC10byB2YWwtdG8tcHV0XSwgaW4gYW55IGNvbWJpbmF0aW9uLiBUYWtlcyB3aWxsIGJlXG4gIG1hZGUgYXMgaWYgYnkgPCEsIGFuZCBwdXRzIHdpbGwgYmUgbWFkZSBhcyBpZiBieSA+IS4gVW5sZXNzXG4gIHRoZSA6cHJpb3JpdHkgb3B0aW9uIGlzIHRydWUsIGlmIG1vcmUgdGhhbiBvbmUgcG9ydCBvcGVyYXRpb24gaXNcbiAgcmVhZHkgYSBub24tZGV0ZXJtaW5pc3RpYyBjaG9pY2Ugd2lsbCBiZSBtYWRlLiBJZiBubyBvcGVyYXRpb24gaXNcbiAgcmVhZHkgYW5kIGEgOmRlZmF1bHQgdmFsdWUgaXMgc3VwcGxpZWQsIFtkZWZhdWx0LXZhbCA6ZGVmYXVsdF0gd2lsbFxuICBiZSByZXR1cm5lZCwgb3RoZXJ3aXNlIGFsdHMhIHdpbGwgcGFyayB1bnRpbCB0aGUgZmlyc3Qgb3BlcmF0aW9uIHRvXG4gIGJlY29tZSByZWFkeSBjb21wbGV0ZXMuIFJldHVybnMgW3ZhbCBwb3J0XSBvZiB0aGUgY29tcGxldGVkXG4gIG9wZXJhdGlvbiwgd2hlcmUgdmFsIGlzIHRoZSB2YWx1ZSB0YWtlbiBmb3IgdGFrZXMsIGFuZCBhXG4gIGJvb2xlYW4gKHRydWUgdW5sZXNzIGFscmVhZHkgY2xvc2VkLCBhcyBwZXIgcHV0ISkgZm9yIHB1dHMuXG5cbiAgb3B0cyBhcmUgcGFzc2VkIGFzIDprZXkgdmFsIC4uLiBTdXBwb3J0ZWQgb3B0aW9uczpcblxuICA6ZGVmYXVsdCB2YWwgLSB0aGUgdmFsdWUgdG8gdXNlIGlmIG5vbmUgb2YgdGhlIG9wZXJhdGlvbnMgYXJlIGltbWVkaWF0ZWx5IHJlYWR5XG4gIDpwcmlvcml0eSB0cnVlIC0gKGRlZmF1bHQgbmlsKSB3aGVuIHRydWUsIHRoZSBvcGVyYXRpb25zIHdpbGwgYmUgdHJpZWQgaW4gb3JkZXIuXG5cbiAgTm90ZTogdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgdGhlIHBvcnQgZXhwcyBvciB2YWwgZXhwcnMgd2lsbCBiZVxuICB1c2VkLCBub3IgaW4gd2hhdCBvcmRlciBzaG91bGQgdGhleSBiZSwgc28gdGhleSBzaG91bGQgbm90IGJlXG4gIGRlcGVuZGVkIHVwb24gZm9yIHNpZGUgZWZmZWN0cy4iLCA6YXJnbGlzdHMgKFtwb3J0cyAmIHs6YXMgb3B0c31dKX0sIDpzb3VyY2UgIihkZWZuXG4gYWx0cyFcbiBcIkNvbXBsZXRlcyBhdCBtb3N0IG9uZSBvZiBzZXZlcmFsIGNoYW5uZWwgb3BlcmF0aW9ucy4gTXVzdCBiZSBjYWxsZWRcXG4gICBpbnNpZGUgYSAoZ28gLi4uKSBibG9jay4gcG9ydHMgaXMgYSB2ZWN0b3Igb2YgY2hhbm5lbCBlbmRwb2ludHMsXFxuICAgd2hpY2ggY2FuIGJlIGVpdGhlciBhIGNoYW5uZWwgdG8gdGFrZSBmcm9tIG9yIGEgdmVjdG9yIG9mXFxuICBbY2hhbm5lbC10by1wdXQtdG8gdmFsLXRvLXB1dF0sIGluIGFueSBjb21iaW5hdGlvbi4gVGFrZXMgd2lsbCBiZVxcbiAgbWFkZSBhcyBpZiBieSA8ISwgYW5kIHB1dHMgd2lsbCBiZSBtYWRlIGFzIGlmIGJ5ID4hLiBVbmxlc3NcXG4gIHRoZSA6cHJpb3JpdHkgb3B0aW9uIGlzIHRydWUsIGlmIG1vcmUgdGhhbiBvbmUgcG9ydCBvcGVyYXRpb24gaXNcXG4gIHJlYWR5IGEgbm9uLWRldGVybWluaXN0aWMgY2hvaWNlIHdpbGwgYmUgbWFkZS4gSWYgbm8gb3BlcmF0aW9uIGlzXFxuICByZWFkeSBhbmQgYSA6ZGVmYXVsdCB2YWx1ZSBpcyBzdXBwbGllZCwgW2RlZmF1bHQtdmFsIDpkZWZhdWx0XSB3aWxsXFxuICBiZSByZXR1cm5lZCwgb3RoZXJ3aXNlIGFsdHMhIHdpbGwgcGFyayB1bnRpbCB0aGUgZmlyc3Qgb3BlcmF0aW9uIHRvXFxuICBiZWNvbWUgcmVhZHkgY29tcGxldGVzLiBSZXR1cm5zIFt2YWwgcG9ydF0gb2YgdGhlIGNvbXBsZXRlZFxcbiAgb3BlcmF0aW9uLCB3aGVyZSB2YWwgaXMgdGhlIHZhbHVlIHRha2VuIGZvciB0YWtlcywgYW5kIGFcXG4gIGJvb2xlYW4gKHRydWUgdW5sZXNzIGFscmVhZHkgY2xvc2VkLCBhcyBwZXIgcHV0ISkgZm9yIHB1dHMuXFxuXFxuICBvcHRzIGFyZSBwYXNzZWQgYXMgOmtleSB2YWwgLi4uIFN1cHBvcnRlZCBvcHRpb25zOlxcblxcbiAgOmRlZmF1bHQgdmFsIC0gdGhlIHZhbHVlIHRvIHVzZSBpZiBub25lIG9mIHRoZSBvcGVyYXRpb25zIGFyZSBpbW1lZGlhdGVseSByZWFkeVxcbiAgOnByaW9yaXR5IHRydWUgLSAoZGVmYXVsdCBuaWwpIHdoZW4gdHJ1ZSwgdGhlIG9wZXJhdGlvbnMgd2lsbCBiZSB0cmllZCBpbiBvcmRlci5cXG5cXG4gIE5vdGU6IHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSBwb3J0IGV4cHMgb3IgdmFsIGV4cHJzIHdpbGwgYmVcXG4gIHVzZWQsIG5vciBpbiB3aGF0IG9yZGVyIHNob3VsZCB0aGV5IGJlLCBzbyB0aGV5IHNob3VsZCBub3QgYmVcXG4gIGRlcGVuZGVkIHVwb24gZm9yIHNpZGUgZWZmZWN0cy5cIlxuIFtwb3J0cyAmIHs6YXMgb3B0c31dXG4gKHRocm93IChqcy9FcnJvci4gXCJhbHRzISB1c2VkIG5vdCBpbiAoZ28gLi4uKSBibG9ja1wiKSkpXG4ifSB7OnN5bSB1bnN1YiwgOm1ldGEgezpkb2MgIlVuc3Vic2NyaWJlcyBhIGNoYW5uZWwgZnJvbSBhIHRvcGljIG9mIGEgcHViIiwgOmFyZ2xpc3RzIChbcCB0b3BpYyBjaF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB1bnN1YlxuIFwiVW5zdWJzY3JpYmVzIGEgY2hhbm5lbCBmcm9tIGEgdG9waWMgb2YgYSBwdWJcIlxuIFtwIHRvcGljIGNoXVxuICh1bnN1YiogcCB0b3BpYyBjaCkpXG4ifSB7OnN5bSBwb2xsISwgOm1ldGEgezpkb2MgIlRha2VzIGEgdmFsIGZyb20gcG9ydCBpZiBpdCdzIHBvc3NpYmxlIHRvIGRvIHNvIGltbWVkaWF0ZWx5LlxuICBOZXZlciBibG9ja3MuIFJldHVybnMgdmFsdWUgaWYgc3VjY2Vzc2Z1bCwgbmlsIG90aGVyd2lzZS4iLCA6YXJnbGlzdHMgKFtwb3J0XSl9LCA6c291cmNlICIoZGVmblxuIHBvbGwhXG4gXCJUYWtlcyBhIHZhbCBmcm9tIHBvcnQgaWYgaXQncyBwb3NzaWJsZSB0byBkbyBzbyBpbW1lZGlhdGVseS5cXG4gIE5ldmVyIGJsb2Nrcy4gUmV0dXJucyB2YWx1ZSBpZiBzdWNjZXNzZnVsLCBuaWwgb3RoZXJ3aXNlLlwiXG4gW3BvcnRdXG4gKGxldCBbcmV0IChpbXBsL3Rha2UhIHBvcnQgKGZuLWhhbmRsZXIgbm9wIGZhbHNlKSldICh3aGVuIHJldCBAcmV0KSkpXG4ifSB7OnN5bSBtYXA8LCA6bWV0YSB7OmRvYyAiRGVwcmVjYXRlZCAtIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSByZW1vdmVkLiBVc2UgdHJhbnNkdWNlciBpbnN0ZWFkIiwgOmFyZ2xpc3RzIChbZiBjaF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtYXA8XG4gXCJEZXByZWNhdGVkIC0gdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHJlbW92ZWQuIFVzZSB0cmFuc2R1Y2VyIGluc3RlYWRcIlxuIFtmIGNoXVxuIChyZWlmeVxuICBpbXBsL0NoYW5uZWxcbiAgKGNsb3NlISBbX10gKGltcGwvY2xvc2UhIGNoKSlcbiAgKGNsb3NlZD8gW19dIChpbXBsL2Nsb3NlZD8gY2gpKVxuICBpbXBsL1JlYWRQb3J0XG4gICh0YWtlIVxuICAgW18gZm4xXVxuICAgKGxldFxuICAgIFtyZXRcbiAgICAgKGltcGwvdGFrZSFcbiAgICAgIGNoXG4gICAgICAocmVpZnlcbiAgICAgICBpbXBsL0hhbmRsZXJcbiAgICAgICAoYWN0aXZlPyBbX10gKGltcGwvYWN0aXZlPyBmbjEpKVxuICAgICAgIChibG9ja2FibGU/IFtfXSB0cnVlKVxuICAgICAgIChjb21taXRcbiAgICAgICAgW19dXG4gICAgICAgIChsZXRcbiAgICAgICAgIFtmMSAoaW1wbC9jb21taXQgZm4xKV1cbiAgICAgICAgIChmbipcbiAgICAgICAgICBbcDFfXzQ1MTI5I11cbiAgICAgICAgICAoZjEgKGlmIChuaWw/IHAxX180NTEyOSMpIG5pbCAoZiBwMV9fNDUxMjkjKSkpKSkpKSldXG4gICAgKGlmIChhbmQgcmV0IChub3QgKG5pbD8gQHJldCkpKSAoY2hhbm5lbHMvYm94IChmIEByZXQpKSByZXQpKSlcbiAgaW1wbC9Xcml0ZVBvcnRcbiAgKHB1dCEgW18gdmFsIGZuMV0gKGltcGwvcHV0ISBjaCB2YWwgZm4xKSkpKVxuIn0gezpzeW0gZG8tYWx0cywgOm1ldGEgezpkb2MgInJldHVybnMgZGVyZWZhYmxlIFt2YWwgcG9ydF0gaWYgaW1tZWRpYXRlLCBuaWwgaWYgZW5xdWV1ZWQiLCA6YXJnbGlzdHMgKFtmcmV0IHBvcnRzIG9wdHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gZG8tYWx0c1xuIFwicmV0dXJucyBkZXJlZmFibGUgW3ZhbCBwb3J0XSBpZiBpbW1lZGlhdGUsIG5pbCBpZiBlbnF1ZXVlZFwiXG4gW2ZyZXQgcG9ydHMgb3B0c11cbiAoYXNzZXJ0XG4gIChwb3M/IChjb3VudCBwb3J0cykpXG4gIFwiYWx0cyBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIGNoYW5uZWwgb3BlcmF0aW9uXCIpXG4gKGxldFxuICBbZmxhZ1xuICAgKGFsdC1mbGFnKVxuICAgblxuICAgKGNvdW50IHBvcnRzKVxuICAgaWR4c1xuICAgKHJhbmRvbS1hcnJheSBuKVxuICAgcHJpb3JpdHlcbiAgICg6cHJpb3JpdHkgb3B0cylcbiAgIHJldFxuICAgKGxvb3BcbiAgICBbaSAwXVxuICAgICh3aGVuXG4gICAgICg8IGkgbilcbiAgICAgKGxldFxuICAgICAgW2lkeFxuICAgICAgIChpZiBwcmlvcml0eSBpIChhZ2V0IGlkeHMgaSkpXG4gICAgICAgcG9ydFxuICAgICAgIChudGggcG9ydHMgaWR4KVxuICAgICAgIHdwb3J0XG4gICAgICAgKHdoZW4gKHZlY3Rvcj8gcG9ydCkgKHBvcnQgMCkpXG4gICAgICAgdmJveFxuICAgICAgIChpZlxuICAgICAgICB3cG9ydFxuICAgICAgICAobGV0XG4gICAgICAgICBbdmFsIChwb3J0IDEpXVxuICAgICAgICAgKGltcGwvcHV0IVxuICAgICAgICAgIHdwb3J0XG4gICAgICAgICAgdmFsXG4gICAgICAgICAgKGFsdC1oYW5kbGVyXG4gICAgICAgICAgIGZsYWdcbiAgICAgICAgICAgKGZuKiBbcDFfXzQ1MTI1I10gKGZyZXQgW3AxX180NTEyNSMgd3BvcnRdKSkpKSlcbiAgICAgICAgKGltcGwvdGFrZSFcbiAgICAgICAgIHBvcnRcbiAgICAgICAgIChhbHQtaGFuZGxlclxuICAgICAgICAgIGZsYWdcbiAgICAgICAgICAoZm4qIFtwMV9fNDUxMjYjXSAoZnJldCBbcDFfXzQ1MTI2IyBwb3J0XSkpKSkpXVxuICAgICAgKGlmXG4gICAgICAgdmJveFxuICAgICAgIChjaGFubmVscy9ib3ggW0B2Ym94IChvciB3cG9ydCBwb3J0KV0pXG4gICAgICAgKHJlY3VyIChpbmMgaSkpKSkpKV1cbiAgKG9yXG4gICByZXRcbiAgICh3aGVuXG4gICAgKGNvbnRhaW5zPyBvcHRzIDpkZWZhdWx0KVxuICAgICh3aGVuLWxldFxuICAgICBbZ290IChhbmQgKGltcGwvYWN0aXZlPyBmbGFnKSAoaW1wbC9jb21taXQgZmxhZykpXVxuICAgICAoY2hhbm5lbHMvYm94IFsoOmRlZmF1bHQgb3B0cykgOmRlZmF1bHRdKSkpKSkpXG4ifSB7OnN5bSBwaXBlbGluZS1hc3luYywgOm1ldGEgezpkb2MgIlRha2VzIGVsZW1lbnRzIGZyb20gdGhlIGZyb20gY2hhbm5lbCBhbmQgc3VwcGxpZXMgdGhlbSB0byB0aGUgdG9cbiAgY2hhbm5lbCwgc3ViamVjdCB0byB0aGUgYXN5bmMgZnVuY3Rpb24gYWYsIHdpdGggcGFyYWxsZWxpc20gbi4gYWZcbiAgbXVzdCBiZSBhIGZ1bmN0aW9uIG9mIHR3byBhcmd1bWVudHMsIHRoZSBmaXJzdCBhbiBpbnB1dCB2YWx1ZSBhbmRcbiAgdGhlIHNlY29uZCBhIGNoYW5uZWwgb24gd2hpY2ggdG8gcGxhY2UgdGhlIHJlc3VsdChzKS4gYWYgbXVzdCBjbG9zZSFcbiAgdGhlIGNoYW5uZWwgYmVmb3JlIHJldHVybmluZy4gIFRoZSBwcmVzdW1wdGlvbiBpcyB0aGF0IGFmIHdpbGxcbiAgcmV0dXJuIGltbWVkaWF0ZWx5LCBoYXZpbmcgbGF1bmNoZWQgc29tZSBhc3luY2hyb25vdXMgb3BlcmF0aW9uXG4gIHdob3NlIGNvbXBsZXRpb24vY2FsbGJhY2sgd2lsbCBtYW5pcHVsYXRlIHRoZSByZXN1bHQgY2hhbm5lbC4gT3V0cHV0c1xuICB3aWxsIGJlIHJldHVybmVkIGluIG9yZGVyIHJlbGF0aXZlIHRvICB0aGUgaW5wdXRzLiBCeSBkZWZhdWx0LCB0aGUgdG9cbiAgY2hhbm5lbCB3aWxsIGJlIGNsb3NlZCB3aGVuIHRoZSBmcm9tIGNoYW5uZWwgY2xvc2VzLCBidXQgY2FuIGJlXG4gIGRldGVybWluZWQgYnkgdGhlIGNsb3NlPyAgcGFyYW1ldGVyLiBXaWxsIHN0b3AgY29uc3VtaW5nIHRoZSBmcm9tXG4gIGNoYW5uZWwgaWYgdGhlIHRvIGNoYW5uZWwgY2xvc2VzLiIsIDphcmdsaXN0cyBbW24gdG8gYWYgZnJvbV0gW24gdG8gYWYgZnJvbSBjbG9zZT9dXX0sIDpzb3VyY2UgIihkZWZuXG4gcGlwZWxpbmUtYXN5bmNcbiBcIlRha2VzIGVsZW1lbnRzIGZyb20gdGhlIGZyb20gY2hhbm5lbCBhbmQgc3VwcGxpZXMgdGhlbSB0byB0aGUgdG9cXG4gIGNoYW5uZWwsIHN1YmplY3QgdG8gdGhlIGFzeW5jIGZ1bmN0aW9uIGFmLCB3aXRoIHBhcmFsbGVsaXNtIG4uIGFmXFxuICBtdXN0IGJlIGEgZnVuY3Rpb24gb2YgdHdvIGFyZ3VtZW50cywgdGhlIGZpcnN0IGFuIGlucHV0IHZhbHVlIGFuZFxcbiAgdGhlIHNlY29uZCBhIGNoYW5uZWwgb24gd2hpY2ggdG8gcGxhY2UgdGhlIHJlc3VsdChzKS4gYWYgbXVzdCBjbG9zZSFcXG4gIHRoZSBjaGFubmVsIGJlZm9yZSByZXR1cm5pbmcuICBUaGUgcHJlc3VtcHRpb24gaXMgdGhhdCBhZiB3aWxsXFxuICByZXR1cm4gaW1tZWRpYXRlbHksIGhhdmluZyBsYXVuY2hlZCBzb21lIGFzeW5jaHJvbm91cyBvcGVyYXRpb25cXG4gIHdob3NlIGNvbXBsZXRpb24vY2FsbGJhY2sgd2lsbCBtYW5pcHVsYXRlIHRoZSByZXN1bHQgY2hhbm5lbC4gT3V0cHV0c1xcbiAgd2lsbCBiZSByZXR1cm5lZCBpbiBvcmRlciByZWxhdGl2ZSB0byAgdGhlIGlucHV0cy4gQnkgZGVmYXVsdCwgdGhlIHRvXFxuICBjaGFubmVsIHdpbGwgYmUgY2xvc2VkIHdoZW4gdGhlIGZyb20gY2hhbm5lbCBjbG9zZXMsIGJ1dCBjYW4gYmVcXG4gIGRldGVybWluZWQgYnkgdGhlIGNsb3NlPyAgcGFyYW1ldGVyLiBXaWxsIHN0b3AgY29uc3VtaW5nIHRoZSBmcm9tXFxuICBjaGFubmVsIGlmIHRoZSB0byBjaGFubmVsIGNsb3Nlcy5cIlxuIChbbiB0byBhZiBmcm9tXSAocGlwZWxpbmUtYXN5bmMgbiB0byBhZiBmcm9tIHRydWUpKVxuIChbbiB0byBhZiBmcm9tIGNsb3NlP10gKHBpcGVsaW5lKiBuIHRvIGFmIGZyb20gY2xvc2U/IG5pbCA6YXN5bmMpKSlcbiJ9IHs6c3ltIE1peCwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKGFkbWl4KiBzb2xvLW1vZGUqIHRvZ2dsZSogdW5taXgqIHVubWl4LWFsbCopfSB7OnN5bSB0b2dnbGUqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW20gc3RhdGUtbWFwXSl9LCA6cHJvdG9jb2wgTWl4fSB7OnN5bSBtdWx0LCA6bWV0YSB7OmRvYyAiQ3JlYXRlcyBhbmQgcmV0dXJucyBhIG11bHQoaXBsZSkgb2YgdGhlIHN1cHBsaWVkIGNoYW5uZWwuIENoYW5uZWxzXG4gIGNvbnRhaW5pbmcgY29waWVzIG9mIHRoZSBjaGFubmVsIGNhbiBiZSBjcmVhdGVkIHdpdGggJ3RhcCcsIGFuZFxuICBkZXRhY2hlZCB3aXRoICd1bnRhcCcuXG5cbiAgRWFjaCBpdGVtIGlzIGRpc3RyaWJ1dGVkIHRvIGFsbCB0YXBzIGluIHBhcmFsbGVsIGFuZCBzeW5jaHJvbm91c2x5LFxuICBpLmUuIGVhY2ggdGFwIG11c3QgYWNjZXB0IGJlZm9yZSB0aGUgbmV4dCBpdGVtIGlzIGRpc3RyaWJ1dGVkLiBVc2VcbiAgYnVmZmVyaW5nL3dpbmRvd2luZyB0byBwcmV2ZW50IHNsb3cgdGFwcyBmcm9tIGhvbGRpbmcgdXAgdGhlIG11bHQuXG5cbiAgSXRlbXMgcmVjZWl2ZWQgd2hlbiB0aGVyZSBhcmUgbm8gdGFwcyBnZXQgZHJvcHBlZC5cblxuICBJZiBhIHRhcCBwdXRzIHRvIGEgY2xvc2VkIGNoYW5uZWwsIGl0IHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHRoZSBtdWx0LiIsIDphcmdsaXN0cyAoW2NoXSl9LCA6c291cmNlICIoZGVmblxuIG11bHRcbiBcIkNyZWF0ZXMgYW5kIHJldHVybnMgYSBtdWx0KGlwbGUpIG9mIHRoZSBzdXBwbGllZCBjaGFubmVsLiBDaGFubmVsc1xcbiAgY29udGFpbmluZyBjb3BpZXMgb2YgdGhlIGNoYW5uZWwgY2FuIGJlIGNyZWF0ZWQgd2l0aCAndGFwJywgYW5kXFxuICBkZXRhY2hlZCB3aXRoICd1bnRhcCcuXFxuXFxuICBFYWNoIGl0ZW0gaXMgZGlzdHJpYnV0ZWQgdG8gYWxsIHRhcHMgaW4gcGFyYWxsZWwgYW5kIHN5bmNocm9ub3VzbHksXFxuICBpLmUuIGVhY2ggdGFwIG11c3QgYWNjZXB0IGJlZm9yZSB0aGUgbmV4dCBpdGVtIGlzIGRpc3RyaWJ1dGVkLiBVc2VcXG4gIGJ1ZmZlcmluZy93aW5kb3dpbmcgdG8gcHJldmVudCBzbG93IHRhcHMgZnJvbSBob2xkaW5nIHVwIHRoZSBtdWx0LlxcblxcbiAgSXRlbXMgcmVjZWl2ZWQgd2hlbiB0aGVyZSBhcmUgbm8gdGFwcyBnZXQgZHJvcHBlZC5cXG5cXG4gIElmIGEgdGFwIHB1dHMgdG8gYSBjbG9zZWQgY2hhbm5lbCwgaXQgd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlIG11bHQuXCJcbiBbY2hdXG4gKGxldFxuICBbY3NcbiAgIChhdG9tIHt9KVxuICAgbVxuICAgKHJlaWZ5XG4gICAgTXV4XG4gICAgKG11eGNoKiBbX10gY2gpXG4gICAgTXVsdFxuICAgICh0YXAqIFtfIGNoIGNsb3NlP10gKHN3YXAhIGNzIGFzc29jIGNoIGNsb3NlPykgbmlsKVxuICAgICh1bnRhcCogW18gY2hdIChzd2FwISBjcyBkaXNzb2MgY2gpIG5pbClcbiAgICAodW50YXAtYWxsKiBbX10gKHJlc2V0ISBjcyB7fSkgbmlsKSlcbiAgIGRjaGFuXG4gICAoY2hhbiAxKVxuICAgZGN0clxuICAgKGF0b20gbmlsKVxuICAgZG9uZVxuICAgKGZuIFtfXSAod2hlbiAoemVybz8gKHN3YXAhIGRjdHIgZGVjKSkgKHB1dCEgZGNoYW4gdHJ1ZSkpKV1cbiAgKGdvLWxvb3BcbiAgIFtdXG4gICAobGV0XG4gICAgW3ZhbCAoPCEgY2gpXVxuICAgIChpZlxuICAgICAobmlsPyB2YWwpXG4gICAgIChkb3NlcSBbW2MgY2xvc2U/XSBAY3NdICh3aGVuIGNsb3NlPyAoY2xvc2UhIGMpKSlcbiAgICAgKGxldFxuICAgICAgW2NocyAoa2V5cyBAY3MpXVxuICAgICAgKHJlc2V0ISBkY3RyIChjb3VudCBjaHMpKVxuICAgICAgKGRvc2VxIFtjIGNoc10gKHdoZW4tbm90IChwdXQhIGMgdmFsIGRvbmUpICh1bnRhcCogbSBjKSkpXG4gICAgICAod2hlbiAoc2VxIGNocykgKDwhIGRjaGFuKSlcbiAgICAgIChyZWN1cikpKSkpXG4gIG0pKVxuIn0gezpzeW0gbWFwY2F0PCwgOm1ldGEgezpkb2MgIkRlcHJlY2F0ZWQgLSB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVtb3ZlZC4gVXNlIHRyYW5zZHVjZXIgaW5zdGVhZCIsIDphcmdsaXN0cyBbW2YgaW5dIFtmIGluIGJ1Zi1vci1uXV19LCA6c291cmNlICIoZGVmblxuIG1hcGNhdDxcbiBcIkRlcHJlY2F0ZWQgLSB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVtb3ZlZC4gVXNlIHRyYW5zZHVjZXIgaW5zdGVhZFwiXG4gKFtmIGluXSAobWFwY2F0PCBmIGluIG5pbCkpXG4gKFtmIGluIGJ1Zi1vci1uXSAobGV0IFtvdXQgKGNoYW4gYnVmLW9yLW4pXSAobWFwY2F0KiBmIGluIG91dCkgb3V0KSkpXG4ifSB7OnN5bSBpb2MtYWx0cyEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3RhdGUgY29udC1ibG9jayBwb3J0cyAmIHs6YXMgb3B0c31dKX0sIDpzb3VyY2UgIihkZWZuXG4gaW9jLWFsdHMhXG4gW3N0YXRlIGNvbnQtYmxvY2sgcG9ydHMgJiB7OmFzIG9wdHN9XVxuIChpb2MvYXNldC1hbGwhIHN0YXRlIGhlbHBlcnMvU1RBVEUtSURYIGNvbnQtYmxvY2spXG4gKHdoZW4tbGV0XG4gIFtjYlxuICAgKGNsanMuY29yZS5hc3luYy9kby1hbHRzXG4gICAgKGZuXG4gICAgIFt2YWxdXG4gICAgIChpb2MvYXNldC1hbGwhIHN0YXRlIGhlbHBlcnMvVkFMVUUtSURYIHZhbClcbiAgICAgKGhlbHBlcnMvcnVuLXN0YXRlLW1hY2hpbmUtd3JhcHBlZCBzdGF0ZSkpXG4gICAgcG9ydHNcbiAgICBvcHRzKV1cbiAgKGlvYy9hc2V0LWFsbCEgc3RhdGUgaGVscGVycy9WQUxVRS1JRFggQGNiKVxuICA6cmVjdXIpKVxuIn0gezpzeW0gdW5ibG9ja2luZy1idWZmZXI/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIGEgY2hhbm5lbCBjcmVhdGVkIHdpdGggYnVmZiB3aWxsIG5ldmVyIGJsb2NrLiBUaGF0IGlzIHRvIHNheSxcbiAgIHB1dHMgaW50byB0aGlzIGJ1ZmZlciB3aWxsIG5ldmVyIGNhdXNlIHRoZSBidWZmZXIgdG8gYmUgZnVsbC4gIiwgOmFyZ2xpc3RzIChbYnVmZl0pfSwgOnNvdXJjZSAiKGRlZm5cbiB1bmJsb2NraW5nLWJ1ZmZlcj9cbiBcIlJldHVybnMgdHJ1ZSBpZiBhIGNoYW5uZWwgY3JlYXRlZCB3aXRoIGJ1ZmYgd2lsbCBuZXZlciBibG9jay4gVGhhdCBpcyB0byBzYXksXFxuICAgcHV0cyBpbnRvIHRoaXMgYnVmZmVyIHdpbGwgbmV2ZXIgY2F1c2UgdGhlIGJ1ZmZlciB0byBiZSBmdWxsLiBcIlxuIFtidWZmXVxuIChzYXRpc2ZpZXM/IGltcGwvVW5ibG9ja2luZ0J1ZmZlciBidWZmKSlcbiJ9IHs6c3ltIHB1dCEsIDptZXRhIHs6ZG9jICJBc3luY2hyb25vdXNseSBwdXRzIGEgdmFsIGludG8gcG9ydCwgY2FsbGluZyBmbjEgKGlmIHN1cHBsaWVkKSB3aGVuXG4gICBjb21wbGV0ZS4gbmlsIHZhbHVlcyBhcmUgbm90IGFsbG93ZWQuIFdpbGwgdGhyb3cgaWYgY2xvc2VkLiBJZlxuICAgb24tY2FsbGVyPyAoZGVmYXVsdCB0cnVlKSBpcyB0cnVlLCBhbmQgdGhlIHB1dCBpcyBpbW1lZGlhdGVseVxuICAgYWNjZXB0ZWQsIHdpbGwgY2FsbCBmbjEgb24gY2FsbGluZyB0aHJlYWQuICBSZXR1cm5zIG5pbC4iLCA6YXJnbGlzdHMgW1twb3J0IHZhbF0gW3BvcnQgdmFsIGZuMV0gW3BvcnQgdmFsIGZuMSBvbi1jYWxsZXI/XV19LCA6c291cmNlICIoZGVmblxuIHB1dCFcbiBcIkFzeW5jaHJvbm91c2x5IHB1dHMgYSB2YWwgaW50byBwb3J0LCBjYWxsaW5nIGZuMSAoaWYgc3VwcGxpZWQpIHdoZW5cXG4gICBjb21wbGV0ZS4gbmlsIHZhbHVlcyBhcmUgbm90IGFsbG93ZWQuIFdpbGwgdGhyb3cgaWYgY2xvc2VkLiBJZlxcbiAgIG9uLWNhbGxlcj8gKGRlZmF1bHQgdHJ1ZSkgaXMgdHJ1ZSwgYW5kIHRoZSBwdXQgaXMgaW1tZWRpYXRlbHlcXG4gICBhY2NlcHRlZCwgd2lsbCBjYWxsIGZuMSBvbiBjYWxsaW5nIHRocmVhZC4gIFJldHVybnMgbmlsLlwiXG4gKFtwb3J0IHZhbF0gKGlmLWxldCBbcmV0IChpbXBsL3B1dCEgcG9ydCB2YWwgZmhub3ApXSBAcmV0IHRydWUpKVxuIChbcG9ydCB2YWwgZm4xXSAocHV0ISBwb3J0IHZhbCBmbjEgdHJ1ZSkpXG4gKFtwb3J0IHZhbCBmbjEgb24tY2FsbGVyP11cbiAgKGlmLWxldFxuICAgW3JldGIgKGltcGwvcHV0ISBwb3J0IHZhbCAoZm4taGFuZGxlciBmbjEpKV1cbiAgIChsZXRcbiAgICBbcmV0IEByZXRiXVxuICAgIChpZiBvbi1jYWxsZXI/IChmbjEgcmV0KSAoZGlzcGF0Y2gvcnVuIChmbiogW10gKGZuMSByZXQpKSkpXG4gICAgcmV0KVxuICAgdHJ1ZSkpKVxuIn0gezpzeW0gdGFrZSEsIDptZXRhIHs6ZG9jICJBc3luY2hyb25vdXNseSB0YWtlcyBhIHZhbCBmcm9tIHBvcnQsIHBhc3NpbmcgdG8gZm4xLiBXaWxsIHBhc3MgbmlsXG4gICBpZiBjbG9zZWQuIElmIG9uLWNhbGxlcj8gKGRlZmF1bHQgdHJ1ZSkgaXMgdHJ1ZSwgYW5kIHZhbHVlIGlzXG4gICBpbW1lZGlhdGVseSBhdmFpbGFibGUsIHdpbGwgY2FsbCBmbjEgb24gY2FsbGluZyB0aHJlYWQuXG4gICBSZXR1cm5zIG5pbC4iLCA6YXJnbGlzdHMgW1twb3J0IGZuMV0gW3BvcnQgZm4xIG9uLWNhbGxlcj9dXX0sIDpzb3VyY2UgIihkZWZuXG4gdGFrZSFcbiBcIkFzeW5jaHJvbm91c2x5IHRha2VzIGEgdmFsIGZyb20gcG9ydCwgcGFzc2luZyB0byBmbjEuIFdpbGwgcGFzcyBuaWxcXG4gICBpZiBjbG9zZWQuIElmIG9uLWNhbGxlcj8gKGRlZmF1bHQgdHJ1ZSkgaXMgdHJ1ZSwgYW5kIHZhbHVlIGlzXFxuICAgaW1tZWRpYXRlbHkgYXZhaWxhYmxlLCB3aWxsIGNhbGwgZm4xIG9uIGNhbGxpbmcgdGhyZWFkLlxcbiAgIFJldHVybnMgbmlsLlwiXG4gKFtwb3J0IGZuMV0gKHRha2UhIHBvcnQgZm4xIHRydWUpKVxuIChbcG9ydCBmbjEgb24tY2FsbGVyP11cbiAgKGxldFxuICAgW3JldCAoaW1wbC90YWtlISBwb3J0IChmbi1oYW5kbGVyIGZuMSkpXVxuICAgKHdoZW5cbiAgICByZXRcbiAgICAobGV0XG4gICAgIFt2YWwgQHJldF1cbiAgICAgKGlmIG9uLWNhbGxlcj8gKGZuMSB2YWwpIChkaXNwYXRjaC9ydW4gKGZuKiBbXSAoZm4xIHZhbCkpKSkpKVxuICAgbmlsKSkpXG4ifSksIHBsYXktY2xqYy5nbC5leGFtcGxlcy0zZCAoezpzeW0gc2NhbGUtM2QtZXhhbXBsZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtnYW1lXSl9LCA6c291cmNlICIoZGVmblxuIHNjYWxlLTNkLWV4YW1wbGVcbiBbZ2FtZV1cbiAoZ2wgZ2FtZSBlbmFibGUgKGdsIGdhbWUgQ1VMTF9GQUNFKSlcbiAoZ2wgZ2FtZSBlbmFibGUgKGdsIGdhbWUgREVQVEhfVEVTVCkpXG4gKGxldFxuICBbZW50aXR5XG4gICAoZi1lbnRpdHkgZ2FtZSBkYXRhL2YtM2QpXG4gICB0eFxuICAgMTAwXG4gICB0eVxuICAgMTAwXG4gICAqc3RhdGVcbiAgIChhdG9tIHs6dHggdHgsIDp0eSB0eSwgOnJ4IDEsIDpyeSAxfSldXG4gIChldS9saXN0ZW4tZm9yLW1vdXNlIGdhbWUgKnN0YXRlKVxuICAoYXNzb2MgZ2FtZSA6ZW50aXR5IGVudGl0eSA6KnN0YXRlICpzdGF0ZSkpKVxuIiwgOmV4YW1wbGVzIFt7OndpdGgtY2FyZCBjYXJkLCA6d2l0aC1mb2N1cyB7OmZvcm0gWzpsb2NhbC1zeW1ib2wgZm9jdXNdLCA6aW5pdC1leHByIChwbGF5LWNsamMuZ2wuY29yZS9yZW5kZXIgZ2FtZSAoLT4gZW50aXR5IChhc3NvYyA6Y2xlYXIgezpjb2xvciBbMSAxIDEgMV0sIDpkZXB0aCAxfSA6dmlld3BvcnQgezp4IDAsIDp5IDAsIDp3aWR0aCBnYW1lLXdpZHRoLCA6aGVpZ2h0IGdhbWUtaGVpZ2h0fSkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3Byb2plY3QgMCBnYW1lLXdpZHRoIGdhbWUtaGVpZ2h0IDAgNDAwIC00MDApIChwbGF5LWNsamMudHJhbnNmb3Jtcy90cmFuc2xhdGUgdHggdHkgMCkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3JvdGF0ZSAocGxheS1jbGpjLm1hdGgvZGVnLT5yYWQgNDApIDp4KSAocGxheS1jbGpjLnRyYW5zZm9ybXMvcm90YXRlIChwbGF5LWNsamMubWF0aC9kZWctPnJhZCAyNSkgOnkpIChwbGF5LWNsamMudHJhbnNmb3Jtcy9yb3RhdGUgKHBsYXktY2xqYy5tYXRoL2RlZy0+cmFkIDMyNSkgOnopIChwbGF5LWNsamMudHJhbnNmb3Jtcy9zY2FsZSByeCByeSAxKSkpfSwgOmJvZHkgKC0+PiAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvaW5pdC1leGFtcGxlIGNhcmQpIChwbGF5LWNsamMuZ2wuZXhhbXBsZXMtM2Qvc2NhbGUtM2QtZXhhbXBsZSkgKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dhbWUtbG9vcCAoZm4gc2NhbGUtM2QtcmVuZGVyIFt7OmtleXMgW2VudGl0eSAqc3RhdGVdLCA6YXMgZ2FtZX1dIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9yZXNpemUtZXhhbXBsZSBnYW1lKSAobGV0IFt7OmtleXMgW3R4IHR5IHJ4IHJ5XX0gKGNsb2p1cmUuY29yZS9kZXJlZiAqc3RhdGUpIGdhbWUtd2lkdGggKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dldC13aWR0aCBnYW1lKSBnYW1lLWhlaWdodCAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2V0LWhlaWdodCBnYW1lKV0gZm9jdXMpIGdhbWUpKSksIDpib2R5LXN0ciAiKHBsYXktY2xqYy5nbC5jb3JlL3JlbmRlclxuIGdhbWVcbiAoLT5cbiAgZW50aXR5XG4gIChhc3NvY1xuICAgOmNsZWFyXG4gICB7OmNvbG9yIFsxIDEgMSAxXSwgOmRlcHRoIDF9XG4gICA6dmlld3BvcnRcbiAgIHs6eCAwLCA6eSAwLCA6d2lkdGggZ2FtZS13aWR0aCwgOmhlaWdodCBnYW1lLWhlaWdodH0pXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy9wcm9qZWN0IDAgZ2FtZS13aWR0aCBnYW1lLWhlaWdodCAwIDQwMCAtNDAwKVxuICAocGxheS1jbGpjLnRyYW5zZm9ybXMvdHJhbnNsYXRlIHR4IHR5IDApXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy9yb3RhdGUgKHBsYXktY2xqYy5tYXRoL2RlZy0+cmFkIDQwKSA6eClcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3JvdGF0ZSAocGxheS1jbGpjLm1hdGgvZGVnLT5yYWQgMjUpIDp5KVxuICAocGxheS1jbGpjLnRyYW5zZm9ybXMvcm90YXRlIChwbGF5LWNsamMubWF0aC9kZWctPnJhZCAzMjUpIDp6KVxuICAocGxheS1jbGpjLnRyYW5zZm9ybXMvc2NhbGUgcnggcnkgMSkpKVxuIiwgOmlkICJwbGF5LWNsamMuZ2wuZXhhbXBsZXMtM2Qvc2NhbGUtM2QtZXhhbXBsZS8wIn1dfSB7OnN5bSBwZXJzcGVjdGl2ZS10ZXh0dXJlLW1ldGEtM2QtZXhhbXBsZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0YXJnZXQtd2lkdGggdGFyZ2V0LWhlaWdodCBnYW1lXSl9LCA6c291cmNlICIoZGVmblxuIHBlcnNwZWN0aXZlLXRleHR1cmUtbWV0YS0zZC1leGFtcGxlXG4gW3RhcmdldC13aWR0aCB0YXJnZXQtaGVpZ2h0IGdhbWVdXG4gKGdsIGdhbWUgZW5hYmxlIChnbCBnYW1lIENVTExfRkFDRSkpXG4gKGdsIGdhbWUgZW5hYmxlIChnbCBnYW1lIERFUFRIX1RFU1QpKVxuIChsZXRcbiAgW2VudGl0eVxuICAgKC0+PlxuICAgIHs6dmVydGV4IGRhdGEvdGV4dHVyZS12ZXJ0ZXgtc2hhZGVyLFxuICAgICA6ZnJhZ21lbnQgZGF0YS90ZXh0dXJlLWZyYWdtZW50LXNoYWRlcixcbiAgICAgOmF0dHJpYnV0ZXNcbiAgICAgeydhX3Bvc2l0aW9uIHs6ZGF0YSBkYXRhL2N1YmUsIDp0eXBlIChnbCBnYW1lIEZMT0FUKSwgOnNpemUgM30sXG4gICAgICAnYV90ZXhjb29yZFxuICAgICAgezpkYXRhIGRhdGEvY3ViZS10ZXhjb29yZHMsXG4gICAgICAgOnR5cGUgKGdsIGdhbWUgRkxPQVQpLFxuICAgICAgIDpzaXplIDIsXG4gICAgICAgOm5vcm1hbGl6ZSB0cnVlfX0sXG4gICAgIDp1bmlmb3Jtc1xuICAgICB7J3VfdGV4dHVyZVxuICAgICAgezpkYXRhIG5pbCxcbiAgICAgICA6b3B0c1xuICAgICAgIHs6bWlwLWxldmVsIDAsXG4gICAgICAgIDppbnRlcm5hbC1mbXQgKGdsIGdhbWUgUkdCQSksXG4gICAgICAgIDp3aWR0aCB0YXJnZXQtd2lkdGgsXG4gICAgICAgIDpoZWlnaHQgdGFyZ2V0LWhlaWdodCxcbiAgICAgICAgOmJvcmRlciAwLFxuICAgICAgICA6c3JjLWZtdCAoZ2wgZ2FtZSBSR0JBKSxcbiAgICAgICAgOnNyYy10eXBlIChnbCBnYW1lIFVOU0lHTkVEX0JZVEUpfSxcbiAgICAgICA6cGFyYW1zXG4gICAgICAgeyhnbCBnYW1lIFRFWFRVUkVfV1JBUF9TKSAoZ2wgZ2FtZSBDTEFNUF9UT19FREdFKSxcbiAgICAgICAgKGdsIGdhbWUgVEVYVFVSRV9XUkFQX1QpIChnbCBnYW1lIENMQU1QX1RPX0VER0UpLFxuICAgICAgICAoZ2wgZ2FtZSBURVhUVVJFX01JTl9GSUxURVIpIChnbCBnYW1lIExJTkVBUil9fX0sXG4gICAgIDpjbGVhciB7OmNvbG9yIFsxIDEgMSAxXSwgOmRlcHRoIDF9fVxuICAgIGUvbWFwLT5UaHJlZURFbnRpdHlcbiAgICAoYy9jb21waWxlIGdhbWUpKVxuICAgaW5uZXItZW50aXR5XG4gICAoLT4+XG4gICAgezp2ZXJ0ZXggZGF0YS90ZXh0dXJlLXZlcnRleC1zaGFkZXIsXG4gICAgIDpmcmFnbWVudCBkYXRhL3RleHR1cmUtZnJhZ21lbnQtc2hhZGVyLFxuICAgICA6YXR0cmlidXRlc1xuICAgICB7J2FfcG9zaXRpb24gezpkYXRhIGRhdGEvY3ViZSwgOnR5cGUgKGdsIGdhbWUgRkxPQVQpLCA6c2l6ZSAzfSxcbiAgICAgICdhX3RleGNvb3JkXG4gICAgICB7OmRhdGEgZGF0YS9jdWJlLXRleGNvb3JkcyxcbiAgICAgICA6dHlwZSAoZ2wgZ2FtZSBGTE9BVCksXG4gICAgICAgOnNpemUgMixcbiAgICAgICA6bm9ybWFsaXplIHRydWV9fSxcbiAgICAgOnVuaWZvcm1zXG4gICAgIHsndV90ZXh0dXJlXG4gICAgICB7OmRhdGEgWzEyOCA2NCAxMjggMCAxOTIgMF0sXG4gICAgICAgOm9wdHNcbiAgICAgICB7Om1pcC1sZXZlbCAwLFxuICAgICAgICA6aW50ZXJuYWwtZm10IChnbCBnYW1lIFI4KSxcbiAgICAgICAgOndpZHRoIDMsXG4gICAgICAgIDpoZWlnaHQgMixcbiAgICAgICAgOmJvcmRlciAwLFxuICAgICAgICA6c3JjLWZtdCAoZ2wgZ2FtZSBSRUQpLFxuICAgICAgICA6c3JjLXR5cGUgKGdsIGdhbWUgVU5TSUdORURfQllURSl9LFxuICAgICAgIDphbGlnbm1lbnQgMSxcbiAgICAgICA6cGFyYW1zXG4gICAgICAgeyhnbCBnYW1lIFRFWFRVUkVfV1JBUF9TKSAoZ2wgZ2FtZSBDTEFNUF9UT19FREdFKSxcbiAgICAgICAgKGdsIGdhbWUgVEVYVFVSRV9XUkFQX1QpIChnbCBnYW1lIENMQU1QX1RPX0VER0UpLFxuICAgICAgICAoZ2wgZ2FtZSBURVhUVVJFX01JTl9GSUxURVIpIChnbCBnYW1lIE5FQVJFU1QpLFxuICAgICAgICAoZ2wgZ2FtZSBURVhUVVJFX01BR19GSUxURVIpIChnbCBnYW1lIE5FQVJFU1QpfX19LFxuICAgICA6Y2xlYXIgezpjb2xvciBbMCAwIDEgMV0sIDpkZXB0aCAxfX1cbiAgICBlL21hcC0+VGhyZWVERW50aXR5XG4gICAgKGMvY29tcGlsZSBnYW1lKSlcbiAgIHN0YXRlXG4gICB7OnJ4IChtL2RlZy0+cmFkIDE5MCksIDpyeSAobS9kZWctPnJhZCA0MCl9XVxuICAoYXNzb2MgZ2FtZSA6ZW50aXR5IGVudGl0eSA6aW5uZXItZW50aXR5IGlubmVyLWVudGl0eSA6c3RhdGUgc3RhdGUpKSlcbiIsIDpleGFtcGxlcyBbezp3aXRoLWNhcmQgY2FyZCwgOndpdGgtZm9jdXMgezpmb3JtIFs6bG9jYWwtc3ltYm9sIGZvY3VzXSwgOmluaXQtZXhwciAobGV0IFtjYW1lcmEgKC0+IChwbGF5LWNsamMuZ2wuZW50aXRpZXMtM2QvLT5jYW1lcmEpIChwbGF5LWNsamMudHJhbnNmb3Jtcy90cmFuc2xhdGUgMCAwIDIpIChwbGF5LWNsamMudHJhbnNmb3Jtcy9sb29rLWF0IFswIDAgMF0gWzAgMSAwXSkpXSAoLT4gZW50aXR5IChwbGF5LWNsamMudHJhbnNmb3Jtcy9wcm9qZWN0IChwbGF5LWNsamMubWF0aC9kZWctPnJhZCA2MCkgYXNwZWN0IDEgMjAwMCkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL2ludmVydCBjYW1lcmEpIChwbGF5LWNsamMudHJhbnNmb3Jtcy9yb3RhdGUgcnggOngpIChwbGF5LWNsamMudHJhbnNmb3Jtcy9yb3RhdGUgcnkgOnkpKSl9LCA6Ym9keSAobGV0IFt0YXJnZXQtd2lkdGggMjU2IHRhcmdldC1oZWlnaHQgMjU2IHJlbmRlci1jdWJlIChmbiBbZW50aXR5IHs6a2V5cyBbcnggcnldfSBhc3BlY3RdIGZvY3VzKV0gKC0+PiAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvaW5pdC1leGFtcGxlIGNhcmQpIChwbGF5LWNsamMuZ2wuZXhhbXBsZXMtM2QvcGVyc3BlY3RpdmUtdGV4dHVyZS1tZXRhLTNkLWV4YW1wbGUgdGFyZ2V0LXdpZHRoIHRhcmdldC1oZWlnaHQpIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nYW1lLWxvb3AgKGZuIHBlcnNwZWN0aXZlLXRleHR1cmUtbWV0YS0zZC1yZW5kZXIgW3s6a2V5cyBbZW50aXR5IGlubmVyLWVudGl0eSBzdGF0ZSBkZWx0YS10aW1lXSwgOmFzIGdhbWV9XSAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvcmVzaXplLWV4YW1wbGUgZ2FtZSkgKGxldCBbZ2FtZS13aWR0aCAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2V0LXdpZHRoIGdhbWUpIGdhbWUtaGVpZ2h0IChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nZXQtaGVpZ2h0IGdhbWUpXSAocGxheS1jbGpjLmdsLmNvcmUvcmVuZGVyIGdhbWUgKC0+IGVudGl0eSAoYXNzb2MgOnZpZXdwb3J0IHs6eCAwLCA6eSAwLCA6d2lkdGggZ2FtZS13aWR0aCwgOmhlaWdodCBnYW1lLWhlaWdodH0pIChyZW5kZXItY3ViZSBzdGF0ZSAoLyBnYW1lLXdpZHRoIGdhbWUtaGVpZ2h0KSkgKGFzc29jIDpyZW5kZXItdG8tdGV4dHVyZSB7KHF1b3RlIHVfdGV4dHVyZSkgWygtPiBpbm5lci1lbnRpdHkgKGFzc29jIDp2aWV3cG9ydCB7OnggMCwgOnkgMCwgOndpZHRoIHRhcmdldC13aWR0aCwgOmhlaWdodCB0YXJnZXQtaGVpZ2h0fSkgKHJlbmRlci1jdWJlIHN0YXRlICgvIHRhcmdldC13aWR0aCB0YXJnZXQtaGVpZ2h0KSkpXX0pKSkpICgtPiBnYW1lICh1cGRhdGUtaW4gWzpzdGF0ZSA6cnhdICsgKCogMS4yIGRlbHRhLXRpbWUpKSAodXBkYXRlLWluIFs6c3RhdGUgOnJ5XSArICgqIDAuNyBkZWx0YS10aW1lKSkpKSkpKSwgOmJvZHktc3RyICIobGV0XG4gW2NhbWVyYVxuICAoLT5cbiAgIChwbGF5LWNsamMuZ2wuZW50aXRpZXMtM2QvLT5jYW1lcmEpXG4gICAocGxheS1jbGpjLnRyYW5zZm9ybXMvdHJhbnNsYXRlIDAgMCAyKVxuICAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL2xvb2stYXQgWzAgMCAwXSBbMCAxIDBdKSldXG4gKC0+XG4gIGVudGl0eVxuICAocGxheS1jbGpjLnRyYW5zZm9ybXMvcHJvamVjdFxuICAgKHBsYXktY2xqYy5tYXRoL2RlZy0+cmFkIDYwKVxuICAgYXNwZWN0XG4gICAxXG4gICAyMDAwKVxuICAocGxheS1jbGpjLnRyYW5zZm9ybXMvaW52ZXJ0IGNhbWVyYSlcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3JvdGF0ZSByeCA6eClcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3JvdGF0ZSByeSA6eSkpKVxuIiwgOmlkICJwbGF5LWNsamMuZ2wuZXhhbXBsZXMtM2QvcGVyc3BlY3RpdmUtdGV4dHVyZS1tZXRhLTNkLWV4YW1wbGUvMCJ9XX0gezpzeW0gcGVyc3BlY3RpdmUtdGV4dHVyZS1kYXRhLTNkLWV4YW1wbGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZ2FtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwZXJzcGVjdGl2ZS10ZXh0dXJlLWRhdGEtM2QtZXhhbXBsZVxuIFtnYW1lXVxuIChnbCBnYW1lIGVuYWJsZSAoZ2wgZ2FtZSBDVUxMX0ZBQ0UpKVxuIChnbCBnYW1lIGVuYWJsZSAoZ2wgZ2FtZSBERVBUSF9URVNUKSlcbiAobGV0XG4gIFtlbnRpdHlcbiAgICgtPj5cbiAgICB7OnZlcnRleCBkYXRhL3RleHR1cmUtdmVydGV4LXNoYWRlcixcbiAgICAgOmZyYWdtZW50IGRhdGEvdGV4dHVyZS1mcmFnbWVudC1zaGFkZXIsXG4gICAgIDphdHRyaWJ1dGVzXG4gICAgIHsnYV9wb3NpdGlvbiB7OmRhdGEgZGF0YS9jdWJlLCA6dHlwZSAoZ2wgZ2FtZSBGTE9BVCksIDpzaXplIDN9LFxuICAgICAgJ2FfdGV4Y29vcmRcbiAgICAgIHs6ZGF0YSBkYXRhL2N1YmUtdGV4Y29vcmRzLFxuICAgICAgIDp0eXBlIChnbCBnYW1lIEZMT0FUKSxcbiAgICAgICA6c2l6ZSAyLFxuICAgICAgIDpub3JtYWxpemUgdHJ1ZX19LFxuICAgICA6dW5pZm9ybXNcbiAgICAgeyd1X3RleHR1cmVcbiAgICAgIHs6ZGF0YSBbMTI4IDY0IDEyOCAwIDE5MiAwXSxcbiAgICAgICA6b3B0c1xuICAgICAgIHs6bWlwLWxldmVsIDAsXG4gICAgICAgIDppbnRlcm5hbC1mbXQgKGdsIGdhbWUgUjgpLFxuICAgICAgICA6d2lkdGggMyxcbiAgICAgICAgOmhlaWdodCAyLFxuICAgICAgICA6Ym9yZGVyIDAsXG4gICAgICAgIDpzcmMtZm10IChnbCBnYW1lIFJFRCksXG4gICAgICAgIDpzcmMtdHlwZSAoZ2wgZ2FtZSBVTlNJR05FRF9CWVRFKX0sXG4gICAgICAgOmFsaWdubWVudCAxLFxuICAgICAgIDpwYXJhbXNcbiAgICAgICB7KGdsIGdhbWUgVEVYVFVSRV9XUkFQX1MpIChnbCBnYW1lIENMQU1QX1RPX0VER0UpLFxuICAgICAgICAoZ2wgZ2FtZSBURVhUVVJFX1dSQVBfVCkgKGdsIGdhbWUgQ0xBTVBfVE9fRURHRSksXG4gICAgICAgIChnbCBnYW1lIFRFWFRVUkVfTUlOX0ZJTFRFUikgKGdsIGdhbWUgTkVBUkVTVCksXG4gICAgICAgIChnbCBnYW1lIFRFWFRVUkVfTUFHX0ZJTFRFUikgKGdsIGdhbWUgTkVBUkVTVCl9fX0sXG4gICAgIDpjbGVhciB7OmNvbG9yIFsxIDEgMSAxXSwgOmRlcHRoIDF9fVxuICAgIGUvbWFwLT5UaHJlZURFbnRpdHlcbiAgICAoYy9jb21waWxlIGdhbWUpKVxuICAgc3RhdGVcbiAgIHs6cnggKG0vZGVnLT5yYWQgMTkwKSwgOnJ5IChtL2RlZy0+cmFkIDQwKX1dXG4gIChhc3NvYyBnYW1lIDplbnRpdHkgZW50aXR5IDpzdGF0ZSBzdGF0ZSkpKVxuIiwgOmV4YW1wbGVzIFt7OndpdGgtY2FyZCBjYXJkLCA6d2l0aC1mb2N1cyB7OmZvcm0gWzpsb2NhbC1zeW1ib2wgZm9jdXNdLCA6aW5pdC1leHByIChwbGF5LWNsamMuZ2wuY29yZS9yZW5kZXIgZ2FtZSAoLT4gZW50aXR5IChhc3NvYyA6dmlld3BvcnQgezp4IDAsIDp5IDAsIDp3aWR0aCBnYW1lLXdpZHRoLCA6aGVpZ2h0IGdhbWUtaGVpZ2h0fSkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3Byb2plY3QgKHBsYXktY2xqYy5tYXRoL2RlZy0+cmFkIDYwKSAoLyBnYW1lLXdpZHRoIGdhbWUtaGVpZ2h0KSAxIDIwMDApIChwbGF5LWNsamMudHJhbnNmb3Jtcy9pbnZlcnQgY2FtZXJhKSAocGxheS1jbGpjLnRyYW5zZm9ybXMvcm90YXRlIHJ4IDp4KSAocGxheS1jbGpjLnRyYW5zZm9ybXMvcm90YXRlIHJ5IDp5KSkpfSwgOmJvZHkgKC0+PiAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvaW5pdC1leGFtcGxlIGNhcmQpIChwbGF5LWNsamMuZ2wuZXhhbXBsZXMtM2QvcGVyc3BlY3RpdmUtdGV4dHVyZS1kYXRhLTNkLWV4YW1wbGUpIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nYW1lLWxvb3AgKGZuIHBlcnNwZWN0aXZlLXRleHR1cmUtZGF0YS0zZC1yZW5kZXIgW3s6a2V5cyBbZW50aXR5IHN0YXRlIGRlbHRhLXRpbWVdLCA6YXMgZ2FtZX1dIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9yZXNpemUtZXhhbXBsZSBnYW1lKSAobGV0IFtjYW1lcmEgKC0+IChwbGF5LWNsamMuZ2wuZW50aXRpZXMtM2QvLT5jYW1lcmEpIChwbGF5LWNsamMudHJhbnNmb3Jtcy90cmFuc2xhdGUgMCAwIDIpIChwbGF5LWNsamMudHJhbnNmb3Jtcy9sb29rLWF0IFswIDAgMF0gWzAgMSAwXSkpIGdhbWUtd2lkdGggKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dldC13aWR0aCBnYW1lKSBnYW1lLWhlaWdodCAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2V0LWhlaWdodCBnYW1lKSB7OmtleXMgW3J4IHJ5XX0gc3RhdGVdIGZvY3VzKSAoLT4gZ2FtZSAodXBkYXRlLWluIFs6c3RhdGUgOnJ4XSArICgqIDEuMiBkZWx0YS10aW1lKSkgKHVwZGF0ZS1pbiBbOnN0YXRlIDpyeV0gKyAoKiAwLjcgZGVsdGEtdGltZSkpKSkpKSwgOmJvZHktc3RyICIocGxheS1jbGpjLmdsLmNvcmUvcmVuZGVyXG4gZ2FtZVxuICgtPlxuICBlbnRpdHlcbiAgKGFzc29jXG4gICA6dmlld3BvcnRcbiAgIHs6eCAwLCA6eSAwLCA6d2lkdGggZ2FtZS13aWR0aCwgOmhlaWdodCBnYW1lLWhlaWdodH0pXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy9wcm9qZWN0XG4gICAocGxheS1jbGpjLm1hdGgvZGVnLT5yYWQgNjApXG4gICAoLyBnYW1lLXdpZHRoIGdhbWUtaGVpZ2h0KVxuICAgMVxuICAgMjAwMClcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL2ludmVydCBjYW1lcmEpXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy9yb3RhdGUgcnggOngpXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy9yb3RhdGUgcnkgOnkpKSlcbiIsIDppZCAicGxheS1jbGpjLmdsLmV4YW1wbGVzLTNkL3BlcnNwZWN0aXZlLXRleHR1cmUtZGF0YS0zZC1leGFtcGxlLzAifV19IHs6c3ltIHBlcnNwZWN0aXZlLTNkLWV4YW1wbGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZ2FtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwZXJzcGVjdGl2ZS0zZC1leGFtcGxlXG4gW2dhbWVdXG4gKGdsIGdhbWUgZW5hYmxlIChnbCBnYW1lIENVTExfRkFDRSkpXG4gKGdsIGdhbWUgZW5hYmxlIChnbCBnYW1lIERFUFRIX1RFU1QpKVxuIChsZXRcbiAgW2VudGl0eSAoZi1lbnRpdHkgZ2FtZSBkYXRhL2YtM2QpICpzdGF0ZSAoYXRvbSB7OmN4IDAsIDpjeSAwfSldXG4gIChldS9saXN0ZW4tZm9yLW1vdXNlIGdhbWUgKnN0YXRlKVxuICAoYXNzb2MgZ2FtZSA6ZW50aXR5IGVudGl0eSA6KnN0YXRlICpzdGF0ZSkpKVxuIiwgOmV4YW1wbGVzIFt7OndpdGgtY2FyZCBjYXJkLCA6d2l0aC1mb2N1cyB7OmZvcm0gWzpsb2NhbC1zeW1ib2wgZm9jdXNdLCA6aW5pdC1leHByIChwbGF5LWNsamMuZ2wuY29yZS9yZW5kZXIgZ2FtZSAoLT4gZW50aXR5IChhc3NvYyA6Y2xlYXIgezpjb2xvciBbMSAxIDEgMV0sIDpkZXB0aCAxfSA6dmlld3BvcnQgezp4IDAsIDp5IDAsIDp3aWR0aCBnYW1lLXdpZHRoLCA6aGVpZ2h0IGdhbWUtaGVpZ2h0fSkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3Byb2plY3QgKHBsYXktY2xqYy5tYXRoL2RlZy0+cmFkIDYwKSAoLyBnYW1lLXdpZHRoIGdhbWUtaGVpZ2h0KSAxIDIwMDApIChwbGF5LWNsamMudHJhbnNmb3Jtcy90cmFuc2xhdGUgY3ggY3kgLTE1MCkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3JvdGF0ZSAocGxheS1jbGpjLm1hdGgvZGVnLT5yYWQgMTgwKSA6eCkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3JvdGF0ZSAwIDp5KSAocGxheS1jbGpjLnRyYW5zZm9ybXMvcm90YXRlIDAgOnopKSl9LCA6Ym9keSAoLT4+IChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9pbml0LWV4YW1wbGUgY2FyZCkgKHBsYXktY2xqYy5nbC5leGFtcGxlcy0zZC9wZXJzcGVjdGl2ZS0zZC1leGFtcGxlKSAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2FtZS1sb29wIChmbiBwZXJzcGVjdGl2ZS0zZC1yZW5kZXIgW3s6a2V5cyBbZW50aXR5ICpzdGF0ZV0sIDphcyBnYW1lfV0gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL3Jlc2l6ZS1leGFtcGxlIGdhbWUpIChsZXQgW3s6a2V5cyBbY3ggY3ldfSAoY2xvanVyZS5jb3JlL2RlcmVmICpzdGF0ZSkgZ2FtZS13aWR0aCAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2V0LXdpZHRoIGdhbWUpIGdhbWUtaGVpZ2h0IChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nZXQtaGVpZ2h0IGdhbWUpXSBmb2N1cykgZ2FtZSkpKSwgOmJvZHktc3RyICIocGxheS1jbGpjLmdsLmNvcmUvcmVuZGVyXG4gZ2FtZVxuICgtPlxuICBlbnRpdHlcbiAgKGFzc29jXG4gICA6Y2xlYXJcbiAgIHs6Y29sb3IgWzEgMSAxIDFdLCA6ZGVwdGggMX1cbiAgIDp2aWV3cG9ydFxuICAgezp4IDAsIDp5IDAsIDp3aWR0aCBnYW1lLXdpZHRoLCA6aGVpZ2h0IGdhbWUtaGVpZ2h0fSlcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3Byb2plY3RcbiAgIChwbGF5LWNsamMubWF0aC9kZWctPnJhZCA2MClcbiAgICgvIGdhbWUtd2lkdGggZ2FtZS1oZWlnaHQpXG4gICAxXG4gICAyMDAwKVxuICAocGxheS1jbGpjLnRyYW5zZm9ybXMvdHJhbnNsYXRlIGN4IGN5IC0xNTApXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy9yb3RhdGUgKHBsYXktY2xqYy5tYXRoL2RlZy0+cmFkIDE4MCkgOngpXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy9yb3RhdGUgMCA6eSlcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3JvdGF0ZSAwIDp6KSkpXG4iLCA6aWQgInBsYXktY2xqYy5nbC5leGFtcGxlcy0zZC9wZXJzcGVjdGl2ZS0zZC1leGFtcGxlLzAifV19IHs6c3ltIHJvdGF0aW9uLTNkLWV4YW1wbGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZ2FtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiByb3RhdGlvbi0zZC1leGFtcGxlXG4gW2dhbWVdXG4gKGdsIGdhbWUgZW5hYmxlIChnbCBnYW1lIENVTExfRkFDRSkpXG4gKGdsIGdhbWUgZW5hYmxlIChnbCBnYW1lIERFUFRIX1RFU1QpKVxuIChsZXRcbiAgW2VudGl0eVxuICAgKGYtZW50aXR5IGdhbWUgZGF0YS9mLTNkKVxuICAgdHhcbiAgIDEwMFxuICAgdHlcbiAgIDEwMFxuICAgKnN0YXRlXG4gICAoYXRvbSB7OnR4IHR4LCA6dHkgdHksIDpyIDB9KV1cbiAgKGV1L2xpc3Rlbi1mb3ItbW91c2UgZ2FtZSAqc3RhdGUpXG4gIChhc3NvYyBnYW1lIDplbnRpdHkgZW50aXR5IDoqc3RhdGUgKnN0YXRlKSkpXG4iLCA6ZXhhbXBsZXMgW3s6d2l0aC1jYXJkIGNhcmQsIDp3aXRoLWZvY3VzIHs6Zm9ybSBbOmxvY2FsLXN5bWJvbCBmb2N1c10sIDppbml0LWV4cHIgKHBsYXktY2xqYy5nbC5jb3JlL3JlbmRlciBnYW1lICgtPiBlbnRpdHkgKGFzc29jIDpjbGVhciB7OmNvbG9yIFsxIDEgMSAxXSwgOmRlcHRoIDF9IDp2aWV3cG9ydCB7OnggMCwgOnkgMCwgOndpZHRoIGdhbWUtd2lkdGgsIDpoZWlnaHQgZ2FtZS1oZWlnaHR9KSAocGxheS1jbGpjLnRyYW5zZm9ybXMvcHJvamVjdCAwIGdhbWUtd2lkdGggZ2FtZS1oZWlnaHQgMCA0MDAgLTQwMCkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3RyYW5zbGF0ZSB0eCB0eSAwKSAocGxheS1jbGpjLnRyYW5zZm9ybXMvcm90YXRlIHIgOngpIChwbGF5LWNsamMudHJhbnNmb3Jtcy9yb3RhdGUgciA6eSkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3JvdGF0ZSByIDp6KSAocGxheS1jbGpjLnRyYW5zZm9ybXMvdHJhbnNsYXRlIC01MCAtNzUgMCkpKX0sIDpib2R5ICgtPj4gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2luaXQtZXhhbXBsZSBjYXJkKSAocGxheS1jbGpjLmdsLmV4YW1wbGVzLTNkL3JvdGF0aW9uLTNkLWV4YW1wbGUpIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nYW1lLWxvb3AgKGZuIHJvdGF0aW9uLTNkLXJlbmRlciBbezprZXlzIFtlbnRpdHkgKnN0YXRlXSwgOmFzIGdhbWV9XSAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvcmVzaXplLWV4YW1wbGUgZ2FtZSkgKGxldCBbezprZXlzIFt0eCB0eSByXX0gKGNsb2p1cmUuY29yZS9kZXJlZiAqc3RhdGUpIGdhbWUtd2lkdGggKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dldC13aWR0aCBnYW1lKSBnYW1lLWhlaWdodCAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2V0LWhlaWdodCBnYW1lKV0gZm9jdXMpIGdhbWUpKSksIDpib2R5LXN0ciAiKHBsYXktY2xqYy5nbC5jb3JlL3JlbmRlclxuIGdhbWVcbiAoLT5cbiAgZW50aXR5XG4gIChhc3NvY1xuICAgOmNsZWFyXG4gICB7OmNvbG9yIFsxIDEgMSAxXSwgOmRlcHRoIDF9XG4gICA6dmlld3BvcnRcbiAgIHs6eCAwLCA6eSAwLCA6d2lkdGggZ2FtZS13aWR0aCwgOmhlaWdodCBnYW1lLWhlaWdodH0pXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy9wcm9qZWN0IDAgZ2FtZS13aWR0aCBnYW1lLWhlaWdodCAwIDQwMCAtNDAwKVxuICAocGxheS1jbGpjLnRyYW5zZm9ybXMvdHJhbnNsYXRlIHR4IHR5IDApXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy9yb3RhdGUgciA6eClcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3JvdGF0ZSByIDp5KVxuICAocGxheS1jbGpjLnRyYW5zZm9ybXMvcm90YXRlIHIgOnopXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy90cmFuc2xhdGUgLTUwIC03NSAwKSkpXG4iLCA6aWQgInBsYXktY2xqYy5nbC5leGFtcGxlcy0zZC9yb3RhdGlvbi0zZC1leGFtcGxlLzAifV19IHs6c3ltIHBlcnNwZWN0aXZlLXRleHR1cmUtM2QtZXhhbXBsZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtnYW1lIHs6a2V5cyBbZGF0YSB3aWR0aCBoZWlnaHRdfV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwZXJzcGVjdGl2ZS10ZXh0dXJlLTNkLWV4YW1wbGVcbiBbZ2FtZSB7OmtleXMgW2RhdGEgd2lkdGggaGVpZ2h0XX1dXG4gKGdsIGdhbWUgZW5hYmxlIChnbCBnYW1lIENVTExfRkFDRSkpXG4gKGdsIGdhbWUgZW5hYmxlIChnbCBnYW1lIERFUFRIX1RFU1QpKVxuIChsZXRcbiAgW2VudGl0eVxuICAgKC0+PlxuICAgIHs6dmVydGV4IGRhdGEvdGV4dHVyZS12ZXJ0ZXgtc2hhZGVyLFxuICAgICA6ZnJhZ21lbnQgZGF0YS90ZXh0dXJlLWZyYWdtZW50LXNoYWRlcixcbiAgICAgOmF0dHJpYnV0ZXNcbiAgICAgeydhX3Bvc2l0aW9uXG4gICAgICB7OmRhdGEgKHRyYW5zZm9ybS1mLWRhdGEgZGF0YS9mLTNkKSxcbiAgICAgICA6dHlwZSAoZ2wgZ2FtZSBGTE9BVCksXG4gICAgICAgOnNpemUgM30sXG4gICAgICAnYV90ZXhjb29yZFxuICAgICAgezpkYXRhIGRhdGEvZi10ZXhjb29yZHMsXG4gICAgICAgOnR5cGUgKGdsIGdhbWUgRkxPQVQpLFxuICAgICAgIDpzaXplIDIsXG4gICAgICAgOm5vcm1hbGl6ZSB0cnVlfX0sXG4gICAgIDp1bmlmb3Jtc1xuICAgICB7J3VfdGV4dHVyZVxuICAgICAgezpkYXRhIGRhdGEsXG4gICAgICAgOm9wdHNcbiAgICAgICB7Om1pcC1sZXZlbCAwLFxuICAgICAgICA6aW50ZXJuYWwtZm10IChnbCBnYW1lIFJHQkEpLFxuICAgICAgICA6d2lkdGggd2lkdGgsXG4gICAgICAgIDpoZWlnaHQgaGVpZ2h0LFxuICAgICAgICA6Ym9yZGVyIDAsXG4gICAgICAgIDpzcmMtZm10IChnbCBnYW1lIFJHQkEpLFxuICAgICAgICA6c3JjLXR5cGUgKGdsIGdhbWUgVU5TSUdORURfQllURSl9LFxuICAgICAgIDptaXBtYXAgdHJ1ZX19LFxuICAgICA6Y2xlYXIgezpjb2xvciBbMCAwIDAgMF0sIDpkZXB0aCAxfX1cbiAgICBlL21hcC0+VGhyZWVERW50aXR5XG4gICAgKGMvY29tcGlsZSBnYW1lKSlcbiAgIHN0YXRlXG4gICB7OnJ4IChtL2RlZy0+cmFkIDE5MCksIDpyeSAobS9kZWctPnJhZCA0MCl9XVxuICAoYXNzb2MgZ2FtZSA6ZW50aXR5IGVudGl0eSA6c3RhdGUgc3RhdGUpKSlcbiIsIDpleGFtcGxlcyBbezp3aXRoLWNhcmQgY2FyZCwgOndpdGgtZm9jdXMgezpmb3JtIFs6bG9jYWwtc3ltYm9sIGZvY3VzXSwgOmluaXQtZXhwciAocGxheS1jbGpjLmdsLmNvcmUvcmVuZGVyIGdhbWUgKC0+IGVudGl0eSAoYXNzb2MgOnZpZXdwb3J0IHs6eCAwLCA6eSAwLCA6d2lkdGggZ2FtZS13aWR0aCwgOmhlaWdodCBnYW1lLWhlaWdodH0pIChwbGF5LWNsamMudHJhbnNmb3Jtcy9wcm9qZWN0IChwbGF5LWNsamMubWF0aC9kZWctPnJhZCA2MCkgKC8gZ2FtZS13aWR0aCBnYW1lLWhlaWdodCkgMSAyMDAwKSAocGxheS1jbGpjLnRyYW5zZm9ybXMvaW52ZXJ0IGNhbWVyYSkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3JvdGF0ZSByeCA6eCkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3JvdGF0ZSByeSA6eSkpKX0sIDpib2R5IChsZXQgW2dhbWUgKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2luaXQtZXhhbXBsZSBjYXJkKV0gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dldC1pbWFnZSAiZi10ZXh0dXJlLnBuZyIgKGZuIFtpbWFnZV0gKC0+PiAocGxheS1jbGpjLmdsLmV4YW1wbGVzLTNkL3BlcnNwZWN0aXZlLXRleHR1cmUtM2QtZXhhbXBsZSBnYW1lIGltYWdlKSAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2FtZS1sb29wIChmbiBwZXJzcGVjdGl2ZS10ZXh0dXJlLTNkLXJlbmRlciBbezprZXlzIFtlbnRpdHkgc3RhdGUgZGVsdGEtdGltZV0sIDphcyBnYW1lfV0gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL3Jlc2l6ZS1leGFtcGxlIGdhbWUpIChsZXQgW2NhbWVyYSAoLT4gKHBsYXktY2xqYy5nbC5lbnRpdGllcy0zZC8tPmNhbWVyYSkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3RyYW5zbGF0ZSAwIDAgMjAwKSAocGxheS1jbGpjLnRyYW5zZm9ybXMvbG9vay1hdCBbMCAwIDBdIFswIDEgMF0pKSBnYW1lLXdpZHRoIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nZXQtd2lkdGggZ2FtZSkgZ2FtZS1oZWlnaHQgKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dldC1oZWlnaHQgZ2FtZSkgezprZXlzIFtyeCByeV19IHN0YXRlXSBmb2N1cykgKC0+IGdhbWUgKHVwZGF0ZS1pbiBbOnN0YXRlIDpyeF0gKyAoKiAxLjIgZGVsdGEtdGltZSkpICh1cGRhdGUtaW4gWzpzdGF0ZSA6cnldICsgKCogMC43IGRlbHRhLXRpbWUpKSkpKSkpKSksIDpib2R5LXN0ciAiKHBsYXktY2xqYy5nbC5jb3JlL3JlbmRlclxuIGdhbWVcbiAoLT5cbiAgZW50aXR5XG4gIChhc3NvY1xuICAgOnZpZXdwb3J0XG4gICB7OnggMCwgOnkgMCwgOndpZHRoIGdhbWUtd2lkdGgsIDpoZWlnaHQgZ2FtZS1oZWlnaHR9KVxuICAocGxheS1jbGpjLnRyYW5zZm9ybXMvcHJvamVjdFxuICAgKHBsYXktY2xqYy5tYXRoL2RlZy0+cmFkIDYwKVxuICAgKC8gZ2FtZS13aWR0aCBnYW1lLWhlaWdodClcbiAgIDFcbiAgIDIwMDApXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy9pbnZlcnQgY2FtZXJhKVxuICAocGxheS1jbGpjLnRyYW5zZm9ybXMvcm90YXRlIHJ4IDp4KVxuICAocGxheS1jbGpjLnRyYW5zZm9ybXMvcm90YXRlIHJ5IDp5KSkpXG4iLCA6aWQgInBsYXktY2xqYy5nbC5leGFtcGxlcy0zZC9wZXJzcGVjdGl2ZS10ZXh0dXJlLTNkLWV4YW1wbGUvMCJ9XX0gezpzeW0gcGVyc3BlY3RpdmUtY2FtZXJhLXRhcmdldC0zZC1leGFtcGxlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2dhbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gcGVyc3BlY3RpdmUtY2FtZXJhLXRhcmdldC0zZC1leGFtcGxlXG4gW2dhbWVdXG4gKGdsIGdhbWUgZW5hYmxlIChnbCBnYW1lIENVTExfRkFDRSkpXG4gKGdsIGdhbWUgZW5hYmxlIChnbCBnYW1lIERFUFRIX1RFU1QpKVxuIChsZXRcbiAgW2VudGl0eVxuICAgKGYtZW50aXR5IGdhbWUgKHRyYW5zZm9ybS1mLWRhdGEgZGF0YS9mLTNkKSlcbiAgICpzdGF0ZVxuICAgKGF0b20gezpjciAwfSldXG4gIChldS9saXN0ZW4tZm9yLW1vdXNlIGdhbWUgKnN0YXRlKVxuICAoYXNzb2MgZ2FtZSA6ZW50aXR5IGVudGl0eSA6KnN0YXRlICpzdGF0ZSkpKVxuIiwgOmV4YW1wbGVzIFt7OndpdGgtY2FyZCBjYXJkLCA6d2l0aC1mb2N1cyB7OmZvcm0gWzpsb2NhbC1zeW1ib2wgZm9jdXNdLCA6aW5pdC1leHByIChkb3RpbWVzIFtpIG51bS1mc10gKGxldCBbYW5nbGUgKC8gKCogaSBQSSAyKSBudW0tZnMpIHggKCogKGNvcyBhbmdsZSkgcmFkaXVzKSB6ICgqIChzaW4gYW5nbGUpIHJhZGl1cyldIChwbGF5LWNsamMuZ2wuY29yZS9yZW5kZXIgZ2FtZSAocGxheS1jbGpjLnRyYW5zZm9ybXMvdHJhbnNsYXRlIGVudGl0eSB4IDAgeikpKSl9LCA6Ym9keSAoLT4+IChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9pbml0LWV4YW1wbGUgY2FyZCkgKHBsYXktY2xqYy5nbC5leGFtcGxlcy0zZC9wZXJzcGVjdGl2ZS1jYW1lcmEtdGFyZ2V0LTNkLWV4YW1wbGUpIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nYW1lLWxvb3AgKGZuIHBlcnNwZWN0aXZlLWNhbWVyYS10YXJnZXQtM2QtcmVuZGVyIFt7OmtleXMgW2VudGl0eSAqc3RhdGVdLCA6YXMgZ2FtZX1dIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9yZXNpemUtZXhhbXBsZSBnYW1lKSAocGxheS1jbGpjLmdsLmNvcmUvcmVuZGVyIGdhbWUgezpjbGVhciB7OmNvbG9yIFsxIDEgMSAxXSwgOmRlcHRoIDF9fSkgKGxldCBbezprZXlzIFtjcl19IChjbG9qdXJlLmNvcmUvZGVyZWYgKnN0YXRlKSBnYW1lLXdpZHRoIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nZXQtd2lkdGggZ2FtZSkgZ2FtZS1oZWlnaHQgKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dldC1oZWlnaHQgZ2FtZSkgcmFkaXVzIDIwMCBudW0tZnMgNSBjYW1lcmEgKC0+IChwbGF5LWNsamMuZ2wuZW50aXRpZXMtM2QvLT5jYW1lcmEpIChwbGF5LWNsamMudHJhbnNmb3Jtcy9yb3RhdGUgY3IgOnkpIChwbGF5LWNsamMudHJhbnNmb3Jtcy90cmFuc2xhdGUgMCAwICgqIHJhZGl1cyAxLjUpKSAocGxheS1jbGpjLnRyYW5zZm9ybXMvbG9vay1hdCBbcmFkaXVzIDAgMF0gWzAgMSAwXSkpIGVudGl0eSAoLT4gZW50aXR5IChhc3NvYyA6dmlld3BvcnQgezp4IDAsIDp5IDAsIDp3aWR0aCBnYW1lLXdpZHRoLCA6aGVpZ2h0IGdhbWUtaGVpZ2h0fSkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3Byb2plY3QgKHBsYXktY2xqYy5tYXRoL2RlZy0+cmFkIDYwKSAoLyBnYW1lLXdpZHRoIGdhbWUtaGVpZ2h0KSAxIDIwMDApIChwbGF5LWNsamMudHJhbnNmb3Jtcy9pbnZlcnQgY2FtZXJhKSkgUEkgcGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvUEkgc2luIHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL3NpbiBjb3MgcGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvY29zXSBmb2N1cykgZ2FtZSkpKSwgOmJvZHktc3RyICIoZG90aW1lc1xuIFtpIG51bS1mc11cbiAobGV0XG4gIFthbmdsZVxuICAgKC8gKCogaSBQSSAyKSBudW0tZnMpXG4gICB4XG4gICAoKiAoY29zIGFuZ2xlKSByYWRpdXMpXG4gICB6XG4gICAoKiAoc2luIGFuZ2xlKSByYWRpdXMpXVxuICAocGxheS1jbGpjLmdsLmNvcmUvcmVuZGVyXG4gICBnYW1lXG4gICAocGxheS1jbGpjLnRyYW5zZm9ybXMvdHJhbnNsYXRlIGVudGl0eSB4IDAgeikpKSlcbiIsIDppZCAicGxheS1jbGpjLmdsLmV4YW1wbGVzLTNkL3BlcnNwZWN0aXZlLWNhbWVyYS10YXJnZXQtM2QtZXhhbXBsZS8wIn1dfSB7OnN5bSB0cmFuc2xhdGlvbi0zZC1leGFtcGxlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2dhbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gdHJhbnNsYXRpb24tM2QtZXhhbXBsZVxuIFtnYW1lXVxuIChnbCBnYW1lIGVuYWJsZSAoZ2wgZ2FtZSBDVUxMX0ZBQ0UpKVxuIChnbCBnYW1lIGVuYWJsZSAoZ2wgZ2FtZSBERVBUSF9URVNUKSlcbiAobGV0XG4gIFtlbnRpdHkgKGYtZW50aXR5IGdhbWUgZGF0YS9mLTNkKSAqc3RhdGUgKGF0b20gezp4IDAsIDp5IDB9KV1cbiAgKGV1L2xpc3Rlbi1mb3ItbW91c2UgZ2FtZSAqc3RhdGUpXG4gIChhc3NvYyBnYW1lIDplbnRpdHkgZW50aXR5IDoqc3RhdGUgKnN0YXRlKSkpXG4iLCA6ZXhhbXBsZXMgW3s6d2l0aC1jYXJkIGNhcmQsIDp3aXRoLWZvY3VzIHs6Zm9ybSBbOmxvY2FsLXN5bWJvbCBmb2N1c10sIDppbml0LWV4cHIgKHBsYXktY2xqYy5nbC5jb3JlL3JlbmRlciBnYW1lICgtPiBlbnRpdHkgKGFzc29jIDpjbGVhciB7OmNvbG9yIFsxIDEgMSAxXSwgOmRlcHRoIDF9IDp2aWV3cG9ydCB7OnggMCwgOnkgMCwgOndpZHRoIGdhbWUtd2lkdGgsIDpoZWlnaHQgZ2FtZS1oZWlnaHR9KSAocGxheS1jbGpjLnRyYW5zZm9ybXMvcHJvamVjdCAwIGdhbWUtd2lkdGggZ2FtZS1oZWlnaHQgMCA0MDAgLTQwMCkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3RyYW5zbGF0ZSB4IHkgMCkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3JvdGF0ZSAocGxheS1jbGpjLm1hdGgvZGVnLT5yYWQgNDApIDp4KSAocGxheS1jbGpjLnRyYW5zZm9ybXMvcm90YXRlIChwbGF5LWNsamMubWF0aC9kZWctPnJhZCAyNSkgOnkpIChwbGF5LWNsamMudHJhbnNmb3Jtcy9yb3RhdGUgKHBsYXktY2xqYy5tYXRoL2RlZy0+cmFkIDMyNSkgOnopKSl9LCA6Ym9keSAoLT4+IChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9pbml0LWV4YW1wbGUgY2FyZCkgKHBsYXktY2xqYy5nbC5leGFtcGxlcy0zZC90cmFuc2xhdGlvbi0zZC1leGFtcGxlKSAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2FtZS1sb29wIChmbiB0cmFuc2xhdGlvbi0zZC1yZW5kZXIgW3s6a2V5cyBbZW50aXR5ICpzdGF0ZV0sIDphcyBnYW1lfV0gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL3Jlc2l6ZS1leGFtcGxlIGdhbWUpIChsZXQgW3s6a2V5cyBbeCB5XX0gKGNsb2p1cmUuY29yZS9kZXJlZiAqc3RhdGUpIGdhbWUtd2lkdGggKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dldC13aWR0aCBnYW1lKSBnYW1lLWhlaWdodCAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2V0LWhlaWdodCBnYW1lKV0gZm9jdXMpIGdhbWUpKSksIDpib2R5LXN0ciAiKHBsYXktY2xqYy5nbC5jb3JlL3JlbmRlclxuIGdhbWVcbiAoLT5cbiAgZW50aXR5XG4gIChhc3NvY1xuICAgOmNsZWFyXG4gICB7OmNvbG9yIFsxIDEgMSAxXSwgOmRlcHRoIDF9XG4gICA6dmlld3BvcnRcbiAgIHs6eCAwLCA6eSAwLCA6d2lkdGggZ2FtZS13aWR0aCwgOmhlaWdodCBnYW1lLWhlaWdodH0pXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy9wcm9qZWN0IDAgZ2FtZS13aWR0aCBnYW1lLWhlaWdodCAwIDQwMCAtNDAwKVxuICAocGxheS1jbGpjLnRyYW5zZm9ybXMvdHJhbnNsYXRlIHggeSAwKVxuICAocGxheS1jbGpjLnRyYW5zZm9ybXMvcm90YXRlIChwbGF5LWNsamMubWF0aC9kZWctPnJhZCA0MCkgOngpXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy9yb3RhdGUgKHBsYXktY2xqYy5tYXRoL2RlZy0+cmFkIDI1KSA6eSlcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3JvdGF0ZSAocGxheS1jbGpjLm1hdGgvZGVnLT5yYWQgMzI1KSA6eikpKVxuIiwgOmlkICJwbGF5LWNsamMuZ2wuZXhhbXBsZXMtM2QvdHJhbnNsYXRpb24tM2QtZXhhbXBsZS8wIn1dfSB7OnN5bSBwZXJzcGVjdGl2ZS1jYW1lcmEtM2QtZXhhbXBsZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtnYW1lXSl9LCA6c291cmNlICIoZGVmblxuIHBlcnNwZWN0aXZlLWNhbWVyYS0zZC1leGFtcGxlXG4gW2dhbWVdXG4gKGdsIGdhbWUgZW5hYmxlIChnbCBnYW1lIENVTExfRkFDRSkpXG4gKGdsIGdhbWUgZW5hYmxlIChnbCBnYW1lIERFUFRIX1RFU1QpKVxuIChsZXRcbiAgW2VudGl0eVxuICAgKGYtZW50aXR5IGdhbWUgKHRyYW5zZm9ybS1mLWRhdGEgZGF0YS9mLTNkKSlcbiAgICpzdGF0ZVxuICAgKGF0b20gezpjciAwfSldXG4gIChldS9saXN0ZW4tZm9yLW1vdXNlIGdhbWUgKnN0YXRlKVxuICAoYXNzb2MgZ2FtZSA6ZW50aXR5IGVudGl0eSA6KnN0YXRlICpzdGF0ZSkpKVxuIiwgOmV4YW1wbGVzIFt7OndpdGgtY2FyZCBjYXJkLCA6d2l0aC1mb2N1cyB7OmZvcm0gWzpsb2NhbC1zeW1ib2wgZm9jdXNdLCA6aW5pdC1leHByIChkb3RpbWVzIFtpIG51bS1mc10gKGxldCBbYW5nbGUgKC8gKCogaSBQSSAyKSBudW0tZnMpIHggKCogKGNvcyBhbmdsZSkgcmFkaXVzKSB6ICgqIChzaW4gYW5nbGUpIHJhZGl1cyldIChwbGF5LWNsamMuZ2wuY29yZS9yZW5kZXIgZ2FtZSAocGxheS1jbGpjLnRyYW5zZm9ybXMvdHJhbnNsYXRlIGVudGl0eSB4IDAgeikpKSl9LCA6Ym9keSAoLT4+IChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9pbml0LWV4YW1wbGUgY2FyZCkgKHBsYXktY2xqYy5nbC5leGFtcGxlcy0zZC9wZXJzcGVjdGl2ZS1jYW1lcmEtM2QtZXhhbXBsZSkgKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dhbWUtbG9vcCAoZm4gcGVyc3BlY3RpdmUtY2FtZXJhLTNkLXJlbmRlciBbezprZXlzIFtlbnRpdHkgKnN0YXRlXSwgOmFzIGdhbWV9XSAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvcmVzaXplLWV4YW1wbGUgZ2FtZSkgKHBsYXktY2xqYy5nbC5jb3JlL3JlbmRlciBnYW1lIHs6Y2xlYXIgezpjb2xvciBbMSAxIDEgMV0sIDpkZXB0aCAxfX0pIChsZXQgW3s6a2V5cyBbY3JdfSAoY2xvanVyZS5jb3JlL2RlcmVmICpzdGF0ZSkgZ2FtZS13aWR0aCAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2V0LXdpZHRoIGdhbWUpIGdhbWUtaGVpZ2h0IChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nZXQtaGVpZ2h0IGdhbWUpIHJhZGl1cyAyMDAgbnVtLWZzIDUgY2FtZXJhICgtPiAocGxheS1jbGpjLmdsLmVudGl0aWVzLTNkLy0+Y2FtZXJhKSAocGxheS1jbGpjLnRyYW5zZm9ybXMvcm90YXRlIGNyIDp5KSAocGxheS1jbGpjLnRyYW5zZm9ybXMvdHJhbnNsYXRlIDAgMCAoKiByYWRpdXMgMS41KSkpIGVudGl0eSAoLT4gZW50aXR5IChhc3NvYyA6dmlld3BvcnQgezp4IDAsIDp5IDAsIDp3aWR0aCBnYW1lLXdpZHRoLCA6aGVpZ2h0IGdhbWUtaGVpZ2h0fSkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3Byb2plY3QgKHBsYXktY2xqYy5tYXRoL2RlZy0+cmFkIDYwKSAoLyBnYW1lLXdpZHRoIGdhbWUtaGVpZ2h0KSAxIDIwMDApIChwbGF5LWNsamMudHJhbnNmb3Jtcy9pbnZlcnQgY2FtZXJhKSkgUEkgcGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvUEkgc2luIHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL3NpbiBjb3MgcGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvY29zXSBmb2N1cykgZ2FtZSkpKSwgOmJvZHktc3RyICIoZG90aW1lc1xuIFtpIG51bS1mc11cbiAobGV0XG4gIFthbmdsZVxuICAgKC8gKCogaSBQSSAyKSBudW0tZnMpXG4gICB4XG4gICAoKiAoY29zIGFuZ2xlKSByYWRpdXMpXG4gICB6XG4gICAoKiAoc2luIGFuZ2xlKSByYWRpdXMpXVxuICAocGxheS1jbGpjLmdsLmNvcmUvcmVuZGVyXG4gICBnYW1lXG4gICAocGxheS1jbGpjLnRyYW5zZm9ybXMvdHJhbnNsYXRlIGVudGl0eSB4IDAgeikpKSlcbiIsIDppZCAicGxheS1jbGpjLmdsLmV4YW1wbGVzLTNkL3BlcnNwZWN0aXZlLWNhbWVyYS0zZC1leGFtcGxlLzAifV19IHs6c3ltIHBlcnNwZWN0aXZlLWFuaW1hdGlvbi0zZC1leGFtcGxlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2dhbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gcGVyc3BlY3RpdmUtYW5pbWF0aW9uLTNkLWV4YW1wbGVcbiBbZ2FtZV1cbiAoZ2wgZ2FtZSBlbmFibGUgKGdsIGdhbWUgQ1VMTF9GQUNFKSlcbiAoZ2wgZ2FtZSBlbmFibGUgKGdsIGdhbWUgREVQVEhfVEVTVCkpXG4gKGxldFxuICBbZW50aXR5XG4gICAoZi1lbnRpdHkgZ2FtZSBkYXRhL2YtM2QpXG4gICBzdGF0ZVxuICAgezpyeCAobS9kZWctPnJhZCAxOTApLCA6cnkgKG0vZGVnLT5yYWQgNDApLCA6cnogKG0vZGVnLT5yYWQgMzIwKX1dXG4gIChhc3NvYyBnYW1lIDplbnRpdHkgZW50aXR5IDpzdGF0ZSBzdGF0ZSkpKVxuIiwgOmV4YW1wbGVzIFt7OndpdGgtY2FyZCBjYXJkLCA6d2l0aC1mb2N1cyB7OmZvcm0gWzpsb2NhbC1zeW1ib2wgZm9jdXNdLCA6aW5pdC1leHByIChwbGF5LWNsamMuZ2wuY29yZS9yZW5kZXIgZ2FtZSAoLT4gZW50aXR5IChhc3NvYyA6Y2xlYXIgezpjb2xvciBbMSAxIDEgMV0sIDpkZXB0aCAxfSA6dmlld3BvcnQgezp4IDAsIDp5IDAsIDp3aWR0aCBnYW1lLXdpZHRoLCA6aGVpZ2h0IGdhbWUtaGVpZ2h0fSkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3Byb2plY3QgKHBsYXktY2xqYy5tYXRoL2RlZy0+cmFkIDYwKSAoLyBnYW1lLXdpZHRoIGdhbWUtaGVpZ2h0KSAxIDIwMDApIChwbGF5LWNsamMudHJhbnNmb3Jtcy90cmFuc2xhdGUgMCAwIC0zNjApIChwbGF5LWNsamMudHJhbnNmb3Jtcy9yb3RhdGUgcnggOngpIChwbGF5LWNsamMudHJhbnNmb3Jtcy9yb3RhdGUgcnkgOnkpIChwbGF5LWNsamMudHJhbnNmb3Jtcy9yb3RhdGUgcnogOnopKSl9LCA6Ym9keSAoLT4+IChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9pbml0LWV4YW1wbGUgY2FyZCkgKHBsYXktY2xqYy5nbC5leGFtcGxlcy0zZC9wZXJzcGVjdGl2ZS1hbmltYXRpb24tM2QtZXhhbXBsZSkgKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dhbWUtbG9vcCAoZm4gcGVyc3BlY3RpdmUtYW5pbWF0aW9uLTNkLXJlbmRlciBbezprZXlzIFtlbnRpdHkgc3RhdGUgZGVsdGEtdGltZV0sIDphcyBnYW1lfV0gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL3Jlc2l6ZS1leGFtcGxlIGdhbWUpIChsZXQgW2dhbWUtd2lkdGggKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dldC13aWR0aCBnYW1lKSBnYW1lLWhlaWdodCAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2V0LWhlaWdodCBnYW1lKSB7OmtleXMgW3J4IHJ5IHJ6XX0gc3RhdGVdIGZvY3VzKSAodXBkYXRlLWluIGdhbWUgWzpzdGF0ZSA6cnldICsgKCogMS4yIGRlbHRhLXRpbWUpKSkpKSwgOmJvZHktc3RyICIocGxheS1jbGpjLmdsLmNvcmUvcmVuZGVyXG4gZ2FtZVxuICgtPlxuICBlbnRpdHlcbiAgKGFzc29jXG4gICA6Y2xlYXJcbiAgIHs6Y29sb3IgWzEgMSAxIDFdLCA6ZGVwdGggMX1cbiAgIDp2aWV3cG9ydFxuICAgezp4IDAsIDp5IDAsIDp3aWR0aCBnYW1lLXdpZHRoLCA6aGVpZ2h0IGdhbWUtaGVpZ2h0fSlcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3Byb2plY3RcbiAgIChwbGF5LWNsamMubWF0aC9kZWctPnJhZCA2MClcbiAgICgvIGdhbWUtd2lkdGggZ2FtZS1oZWlnaHQpXG4gICAxXG4gICAyMDAwKVxuICAocGxheS1jbGpjLnRyYW5zZm9ybXMvdHJhbnNsYXRlIDAgMCAtMzYwKVxuICAocGxheS1jbGpjLnRyYW5zZm9ybXMvcm90YXRlIHJ4IDp4KVxuICAocGxheS1jbGpjLnRyYW5zZm9ybXMvcm90YXRlIHJ5IDp5KVxuICAocGxheS1jbGpjLnRyYW5zZm9ybXMvcm90YXRlIHJ6IDp6KSkpXG4iLCA6aWQgInBsYXktY2xqYy5nbC5leGFtcGxlcy0zZC9wZXJzcGVjdGl2ZS1hbmltYXRpb24tM2QtZXhhbXBsZS8wIn1dfSksIGNsanMuY29yZS5hc3luYy5pbXBsLmJ1ZmZlcnMgKHs6c3ltIGFjb3B5LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NyYyBzcmMtc3RhcnQgZGVzdCBkZXN0LXN0YXJ0IGxlbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhY29weVxuIFtzcmMgc3JjLXN0YXJ0IGRlc3QgZGVzdC1zdGFydCBsZW5dXG4gKGxvb3BcbiAgW2NudCAwXVxuICAod2hlblxuICAgKDwgY250IGxlbilcbiAgIChhc2V0IGRlc3QgKCsgZGVzdC1zdGFydCBjbnQpIChhZ2V0IHNyYyAoKyBzcmMtc3RhcnQgY250KSkpXG4gICAocmVjdXIgKGluYyBjbnQpKSkpKVxuIn0gezpzeW0gcmluZy1idWZmZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiByaW5nLWJ1ZmZlclxuIFtuXVxuIChhc3NlcnQgKD4gbiAwKSBcIkNhbid0IGNyZWF0ZSBhIHJpbmcgYnVmZmVyIG9mIHNpemUgMFwiKVxuIChSaW5nQnVmZmVyLiAwIDAgMCAobWFrZS1hcnJheSBuKSkpXG4ifSB7OnN5bSBmaXhlZC1idWZmZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbl0pfSwgOnNvdXJjZSAiKGRlZm4gZml4ZWQtYnVmZmVyIFtuXSAoRml4ZWRCdWZmZXIuIChyaW5nLWJ1ZmZlciBuKSBuKSlcbiJ9IHs6c3ltIGRyb3BwaW5nLWJ1ZmZlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtuXSl9LCA6c291cmNlICIoZGVmbiBkcm9wcGluZy1idWZmZXIgW25dIChEcm9wcGluZ0J1ZmZlci4gKHJpbmctYnVmZmVyIG4pIG4pKVxuIn0gezpzeW0gc2xpZGluZy1idWZmZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbl0pfSwgOnNvdXJjZSAiKGRlZm4gc2xpZGluZy1idWZmZXIgW25dIChTbGlkaW5nQnVmZmVyLiAocmluZy1idWZmZXIgbikgbikpXG4ifSB7OnN5bSBwcm9taXNlLWJ1ZmZlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuIHByb21pc2UtYnVmZmVyIFtdIChQcm9taXNlQnVmZmVyLiBOTy1WQUwpKVxuIn0pLCBjbGpzLmFuYWx5emVyLnBhc3Nlcy5hbmQtb3IgKHs6c3ltIHJlbW92ZS1sb29wLWxldCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmbi1hc3QgbG9jYWxdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVtb3ZlLWxvb3AtbGV0XG4gW2ZuLWFzdCBsb2NhbF1cbiAodXBkYXRlXG4gIGZuLWFzdFxuICA6bG9vcC1sZXRzXG4gIChmblxuICAgW2xvb3AtbGV0c11cbiAgIChtYXBcbiAgICAoZm5cbiAgICAgW21dXG4gICAgICh1cGRhdGVcbiAgICAgIG1cbiAgICAgIDpwYXJhbXNcbiAgICAgIChmblxuICAgICAgIFt4c11cbiAgICAgICAocmVtb3ZlIChmbiogW3AxX180NTQ1MCNdICg9IGxvY2FsICg6bmFtZSBwMV9fNDU0NTAjKSkpIHhzKSkpKVxuICAgIGxvb3AtbGV0cykpKSlcbiJ9IHs6c3ltIHNpbXBsZS1vcHMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gc2ltcGxlLW9wc1xuICN7OmpzXG4gICA6aG9zdC1maWVsZFxuICAgOmNvbnN0XG4gICA6dmFyXG4gICA6cXVvdGVcbiAgIDppbnZva2VcbiAgIDpqcy12YXJcbiAgIDpob3N0LWNhbGxcbiAgIDpsb2NhbH0pXG4ifSB7OnN5bSBvcHRpbWl6ZS1vciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFthc3RdKX0sIDpzb3VyY2UgIihkZWZuXG4gb3B0aW1pemUtb3JcbiBbYXN0XVxuIChsZXRcbiAgW3s6a2V5cyBbaW5pdCBuYW1lXX0gKC0+IGFzdCA6YmluZGluZ3MgZmlyc3QpXVxuICB7Om9wIDpqcyxcbiAgIDplbnYgKDplbnYgYXN0KSxcbiAgIDpzZWdzIFtcIigoXCIgXCIpIHx8IChcIiBcIikpXCJdLFxuICAgOmFyZ3NcbiAgIFtpbml0XG4gICAgKHBhc3Nlcy93YWxrXG4gICAgICgtPmV4cHItZW52ICgtPiBhc3QgOmJvZHkgOnJldCA6ZWxzZSkpXG4gICAgIFsocmVtb3ZlLWxvY2FsLXBhc3MgbmFtZSldKV0sXG4gICA6Zm9ybSAoOmZvcm0gYXN0KSxcbiAgIDpjaGlsZHJlbiBbOmFyZ3NdLFxuICAgOnRhZyAnYm9vbGVhbn0pKVxuIn0gezpzeW0gbm8tc3RhdGVtZW50cz8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbGV0LWFzdF0pfSwgOnNvdXJjZSAiKGRlZm4gbm8tc3RhdGVtZW50cz8gW2xldC1hc3RdICg9IFtdICgtPiBsZXQtYXN0IDpib2R5IDpzdGF0ZW1lbnRzKSkpXG4ifSB7OnN5bSBzaW1wbGUtb3I/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2FzdF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzaW1wbGUtb3I/XG4gW2FzdF1cbiAoYW5kIChzaW1wbGUtdGVzdC1iaW5kaW5nLWxldD8gYXN0KSAodGVzdD10aGVuPyAoLT4gYXN0IDpib2R5IDpyZXQpKSkpXG4ifSB7OnN5bSB0ZXN0PXRoZW4/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2lmLWFzdF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0ZXN0PXRoZW4/XG4gW2lmLWFzdF1cbiAoPSAoZGlzc29jICg6dGVzdCBpZi1hc3QpIDplbnYpIChkaXNzb2MgKDp0aGVuIGlmLWFzdCkgOmVudikpKVxuIn0gezpzeW0gdGVzdD1lbHNlPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtpZi1hc3RdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGVzdD1lbHNlP1xuIFtpZi1hc3RdXG4gKD0gKGRpc3NvYyAoOnRlc3QgaWYtYXN0KSA6ZW52KSAoZGlzc29jICg6ZWxzZSBpZi1hc3QpIDplbnYpKSlcbiJ9IHs6c3ltIHNpbXBsZS10ZXN0LWJpbmRpbmctbGV0PywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFthc3RdKX0sIDpzb3VyY2UgIihkZWZuXG4gc2ltcGxlLXRlc3QtYmluZGluZy1sZXQ/XG4gW2FzdF1cbiAoYW5kXG4gIChzaW5nbGUtYmluZGluZy1sZXQ/IGFzdClcbiAgKG5vLXN0YXRlbWVudHM/IGFzdClcbiAgKHNpbXBsZS10ZXN0LWV4cHI/ICgtPiBhc3QgOmJpbmRpbmdzIGZpcnN0IDppbml0KSlcbiAgKHJldHVybnMtaWY/IGFzdCkpKVxuIn0gezpzeW0gc2ltcGxlLW9wPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFthc3RdKX0sIDpzb3VyY2UgIihkZWZuIHNpbXBsZS1vcD8gW2FzdF0gKGNvbnRhaW5zPyBzaW1wbGUtb3BzICg6b3AgYXN0KSkpXG4ifSB7OnN5bSBvcHRpbWl6YWJsZS1hbmQ/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2FzdF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBvcHRpbWl6YWJsZS1hbmQ/XG4gW2FzdF1cbiAoYW5kIChzaW1wbGUtYW5kPyBhc3QpIChzaW1wbGUtdGVzdC1leHByPyAoLT4gYXN0IDpib2R5IDpyZXQgOnRoZW4pKSkpXG4ifSB7OnN5bSBvcHRpbWl6YWJsZS1vcj8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbYXN0XSl9LCA6c291cmNlICIoZGVmblxuIG9wdGltaXphYmxlLW9yP1xuIFthc3RdXG4gKGFuZCAoc2ltcGxlLW9yPyBhc3QpIChzaW1wbGUtdGVzdC1leHByPyAoLT4gYXN0IDpib2R5IDpyZXQgOmVsc2UpKSkpXG4ifSB7OnN5bSAtPmV4cHItZW52LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2FzdF0pfSwgOnNvdXJjZSAiKGRlZm4gLT5leHByLWVudiBbYXN0XSAoYXNzb2MtaW4gYXN0IFs6ZW52IDpjb250ZXh0XSA6ZXhwcikpXG4ifSB7OnN5bSByZXR1cm5zLWlmPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtsZXQtYXN0XSl9LCA6c291cmNlICIoZGVmbiByZXR1cm5zLWlmPyBbbGV0LWFzdF0gKD0gOmlmICgtPiBsZXQtYXN0IDpib2R5IDpyZXQgOm9wKSkpXG4ifSB7OnN5bSByZW1vdmUtbG9jYWwtcGFzcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtsb2NhbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZW1vdmUtbG9jYWwtcGFzc1xuIFtsb2NhbF1cbiAoZm5cbiAgW2VudiBhc3Qgb3B0c11cbiAgKGNvbmQtPlxuICAgKHVwZGF0ZS1pbiBhc3QgWzplbnYgOmxvY2Fsc10gZGlzc29jIGxvY2FsKVxuICAgKD0gOmZuICg6b3AgYXN0KSlcbiAgIChyZW1vdmUtbG9vcC1sZXQgbG9jYWwpKSkpXG4ifSB7OnN5bSBzaW1wbGUtYW5kPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFthc3RdKX0sIDpzb3VyY2UgIihkZWZuXG4gc2ltcGxlLWFuZD9cbiBbYXN0XVxuIChhbmQgKHNpbXBsZS10ZXN0LWJpbmRpbmctbGV0PyBhc3QpICh0ZXN0PWVsc2U/ICgtPiBhc3QgOmJvZHkgOnJldCkpKSlcbiJ9IHs6c3ltIG9wdGltaXplLWFuZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFthc3RdKX0sIDpzb3VyY2UgIihkZWZuXG4gb3B0aW1pemUtYW5kXG4gW2FzdF1cbiAobGV0XG4gIFt7OmtleXMgW2luaXQgbmFtZV19ICgtPiBhc3QgOmJpbmRpbmdzIGZpcnN0KV1cbiAgezpvcCA6anMsXG4gICA6ZW52ICg6ZW52IGFzdCksXG4gICA6c2VncyBbXCIoKFwiIFwiKSAmJiAoXCIgXCIpKVwiXSxcbiAgIDphcmdzXG4gICBbaW5pdFxuICAgIChwYXNzZXMvd2Fsa1xuICAgICAoLT5leHByLWVudiAoLT4gYXN0IDpib2R5IDpyZXQgOnRoZW4pKVxuICAgICBbKHJlbW92ZS1sb2NhbC1wYXNzIG5hbWUpXSldLFxuICAgOmZvcm0gKDpmb3JtIGFzdCksXG4gICA6Y2hpbGRyZW4gWzphcmdzXSxcbiAgIDp0YWcgJ2Jvb2xlYW59KSlcbiJ9IHs6c3ltIHNpbXBsZS10ZXN0LWV4cHI/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3s6a2V5cyBbb3BdLCA6YXMgYXN0fV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzaW1wbGUtdGVzdC1leHByP1xuIFt7OmtleXMgW29wXSwgOmFzIGFzdH1dXG4gKGJvb2xlYW5cbiAgKGFuZFxuICAgKHNpbXBsZS1vcD8gYXN0KVxuICAgKCcje3NlcSBib29sZWFufVxuICAgIChvciAoOnRhZyBhc3QpICh3aGVuICgjezp2YXIgOmxvY2FsfSBvcCkgKC0+IGFzdCA6aW5mbyA6dGFnKSkpKSkpKVxuIn0gezpzeW0gc2luZ2xlLWJpbmRpbmctbGV0PywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFthc3RdKX0sIDpzb3VyY2UgIihkZWZuXG4gc2luZ2xlLWJpbmRpbmctbGV0P1xuIFthc3RdXG4gKGFuZCAoPSA6bGV0ICg6b3AgYXN0KSkgKD0gMSAoY291bnQgKC0+IGFzdCA6YmluZGluZ3MpKSkpKVxuIn0gezpzeW0gb3B0aW1pemUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IGFzdCBfXSl9LCA6c291cmNlICIoZGVmblxuIG9wdGltaXplXG4gW2VudiBhc3QgX11cbiAoY29uZFxuICAob3B0aW1pemFibGUtYW5kPyBhc3QpXG4gIChvcHRpbWl6ZS1hbmQgYXN0KVxuICAob3B0aW1pemFibGUtb3I/IGFzdClcbiAgKG9wdGltaXplLW9yIGFzdClcbiAgOmVsc2VcbiAgYXN0KSlcbiJ9KSwgY2xqcy5jb3JlLmFzeW5jLmltcGwucHJvdG9jb2xzICh7OnN5bSByZW1vdmUhLCA6bWV0YSB7OmRvYyAicmVtb3ZlIGFuZCByZXR1cm4gbmV4dCBpdGVtIGZyb20gYnVmZmVyLCBjYWxsZWQgdW5kZXIgY2hhbiBtdXRleCIsIDphcmdsaXN0cyAoW2JdKX0sIDpwcm90b2NvbCBCdWZmZXJ9IHs6c3ltIGNsb3NlLWJ1ZiEsIDptZXRhIHs6ZG9jICJjYWxsZWQgb24gY2hhbiBjbG9zZWQgdW5kZXIgY2hhbiBtdXRleCwgcmV0dXJuIGlnbm9yZWQiLCA6YXJnbGlzdHMgKFtiXSl9LCA6cHJvdG9jb2wgQnVmZmVyfSB7OnN5bSBjbG9zZSEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbY2hhbl0pfSwgOnByb3RvY29sIENoYW5uZWx9IHs6c3ltIEhhbmRsZXIsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzIChhY3RpdmU/IGJsb2NrYWJsZT8gY29tbWl0KX0gezpzeW0gYmxvY2thYmxlPywgOm1ldGEgezpkb2MgInJldHVybnMgdHJ1ZSBpZiB0aGlzIGhhbmRsZXIgbWF5IGJlIGJsb2NrZWQsIG90aGVyd2lzZSBpdCBtdXN0IG5vdCBibG9jayIsIDphcmdsaXN0cyAoW2hdKX0sIDpwcm90b2NvbCBIYW5kbGVyfSB7OnN5bSBhY3RpdmU/LCA6bWV0YSB7OmRvYyAicmV0dXJucyB0cnVlIGlmIGhhcyBjYWxsYmFjay4gTXVzdCB3b3JrIHcvbyBsb2NrIiwgOmFyZ2xpc3RzIChbaF0pfSwgOnByb3RvY29sIEhhbmRsZXJ9IHs6c3ltIEJ1ZmZlciwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKGFkZCEqIGNsb3NlLWJ1ZiEgZnVsbD8gcmVtb3ZlISl9IHs6c3ltIGZ1bGw/LCA6bWV0YSB7OmRvYyAicmV0dXJucyB0cnVlIGlmIGJ1ZmZlciBjYW5ub3QgYWNjZXB0IHB1dCIsIDphcmdsaXN0cyAoW2JdKX0sIDpwcm90b2NvbCBCdWZmZXJ9IHs6c3ltIGFkZCEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbYl0gW2IgaXRtXV19LCA6c291cmNlICIoZGVmbiBhZGQhIChbYl0gYikgKFtiIGl0bV0gKGFzc2VydCAobm90IChuaWw/IGl0bSkpKSAoYWRkISogYiBpdG0pKSlcbiJ9IHs6c3ltIGFkZCEqLCA6bWV0YSB7OmRvYyAiaWYgcm9vbSwgYWRkIGl0ZW0gdG8gdGhlIGJ1ZmZlciwgcmV0dXJucyBiLCBjYWxsZWQgdW5kZXIgY2hhbiBtdXRleCIsIDphcmdsaXN0cyAoW2IgaXRtXSl9LCA6cHJvdG9jb2wgQnVmZmVyfSB7OnN5bSBSZWFkUG9ydCwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKHRha2UhKX0gezpzeW0gQ2hhbm5lbCwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKGNsb3NlISBjbG9zZWQ/KX0gezpzeW0gY2xvc2VkPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjaGFuXSl9LCA6cHJvdG9jb2wgQ2hhbm5lbH0gezpzeW0gVW5ibG9ja2luZ0J1ZmZlciwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKCl9IHs6c3ltIE1BWC1RVUVVRS1TSVpFLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBNQVgtUVVFVUUtU0laRSAxMDI0KVxuIn0gezpzeW0gY29tbWl0LCA6bWV0YSB7OmRvYyAiY29tbWl0IHRvIGZ1bGZpbGxpbmcgaXRzIGVuZCBvZiB0aGUgdHJhbnNmZXIsIHJldHVybnMgY2IuIE11c3QgYmUgY2FsbGVkIHdpdGhpbiBsb2NrIiwgOmFyZ2xpc3RzIChbaF0pfSwgOnByb3RvY29sIEhhbmRsZXJ9IHs6c3ltIHB1dCEsIDptZXRhIHs6ZG9jICJkZXJlZmFibGUgYm9vbGVhbiAoZmFsc2UgaWYgYWxyZWFkeSBjbG9zZWQpIGlmIGhhbmRsZWQsIG5pbCBpZiBwdXQgd2FzIGVucXVldWVkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE11c3QgdGhyb3cgb24gbmlsIHZhbC4iLCA6YXJnbGlzdHMgKFtwb3J0IHZhbCBmbjEtaGFuZGxlcl0pfSwgOnByb3RvY29sIFdyaXRlUG9ydH0gezpzeW0gdGFrZSEsIDptZXRhIHs6ZG9jICJkZXJlZmFibGUgdmFsIGlmIHRha2VuLCBuaWwgaWYgdGFrZSB3YXMgZW5xdWV1ZWQiLCA6YXJnbGlzdHMgKFtwb3J0IGZuMS1oYW5kbGVyXSl9LCA6cHJvdG9jb2wgUmVhZFBvcnR9IHs6c3ltIFdyaXRlUG9ydCwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKHB1dCEpfSksIHJ1bS5kZXJpdmVkLWF0b20gKHs6c3ltIGRlcml2ZWQtYXRvbSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1tyZWZzIGtleSBmXSBbcmVmcyBrZXkgZiBvcHRzXV19LCA6c291cmNlICIoZGVmblxuIGRlcml2ZWQtYXRvbVxuIChbcmVmcyBrZXkgZl0gKGRlcml2ZWQtYXRvbSByZWZzIGtleSBmIHt9KSlcbiAoW3JlZnMga2V5IGYgb3B0c11cbiAgKGxldFxuICAgW3s6a2V5cyBbcmVmIGNoZWNrLWVxdWFscz9dLCA6b3Ige2NoZWNrLWVxdWFscz8gdHJ1ZX19XG4gICAgb3B0c1xuICAgIHJlY2FsY1xuICAgIChjYXNlXG4gICAgIChjb3VudCByZWZzKVxuICAgICAxXG4gICAgIChsZXQgW1thXSByZWZzXSAoZm4qIFtdIChmIEBhKSkpXG4gICAgIDJcbiAgICAgKGxldCBbW2EgYl0gcmVmc10gKGZuKiBbXSAoZiBAYSBAYikpKVxuICAgICAzXG4gICAgIChsZXQgW1thIGIgY10gcmVmc10gKGZuKiBbXSAoZiBAYSBAYiBAYykpKVxuICAgICAoZm4qIFtdIChhcHBseSBmIChtYXAgZGVyZWYgcmVmcykpKSlcbiAgICBzaW5rXG4gICAgKGlmIHJlZiAoZG90byByZWYgKHJlc2V0ISAocmVjYWxjKSkpIChhdG9tIChyZWNhbGMpKSlcbiAgICB3YXRjaFxuICAgIChpZlxuICAgICBjaGVjay1lcXVhbHM/XG4gICAgIChmblxuICAgICAgW18gXyBfIF9dXG4gICAgICAobGV0XG4gICAgICAgW25ldy12YWwgKHJlY2FsYyldXG4gICAgICAgKHdoZW4gKG5vdD0gQHNpbmsgbmV3LXZhbCkgKHJlc2V0ISBzaW5rIG5ldy12YWwpKSkpXG4gICAgIChmbiBbXyBfIF8gX10gKHJlc2V0ISBzaW5rIChyZWNhbGMpKSkpXVxuICAgKGRvc2VxIFtyZWYgcmVmc10gKGFkZC13YXRjaCByZWYga2V5IHdhdGNoKSlcbiAgIHNpbmspKSlcbiJ9KSwgbWlzdGFrZXMtd2VyZS1tYWRlLmNvcmUgKHs6c3ltIGNhbi1yZWRvPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB3ZSBjYW4gcmVkby4iLCA6YXJnbGlzdHMgKFsqZWRpdC1oaXN0b3J5XSl9LCA6c291cmNlICIoZGVmblxuIGNhbi1yZWRvP1xuIFwiUmV0dXJucyB0cnVlIGlmIHdlIGNhbiByZWRvLlwiXG4gWyplZGl0LWhpc3RvcnldXG4gKHNvbWU/IChnZXQtbmV4dC1zdGF0ZSAqZWRpdC1oaXN0b3J5KSkpXG4ifSB7OnN5bSBhdG9tPywgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBhdG9tP1xuIChmbipcbiAgW3AxX180NTAzMCNdXG4gIChpbnN0YW5jZT9cbiAgICM/KDpjbGogY2xvanVyZS5sYW5nLkF0b20gOmNsanMgY2xqcy5jb3JlL0F0b20pXG4gICBwMV9fNDUwMzAjKSkpXG4ifSB7OnN5bSBnZXQtY3VycmVudC1zdGF0ZSwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGN1cnJlbnQgc3RhdGUgZnJvbSBlZGl0LWhpc3RvcnksIG9yIG5pbCBpZiB0aGVyZSBpcyBub25lLiIsIDphcmdsaXN0cyAoWyplZGl0LWhpc3RvcnldKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LWN1cnJlbnQtc3RhdGVcbiBcIlJldHVybnMgdGhlIGN1cnJlbnQgc3RhdGUgZnJvbSBlZGl0LWhpc3RvcnksIG9yIG5pbCBpZiB0aGVyZSBpcyBub25lLlwiXG4gWyplZGl0LWhpc3RvcnldXG4gKGxldFxuICBbezprZXlzIFtjdXJyZW50LXN0YXRlIHN0YXRlc119IEAqZWRpdC1oaXN0b3J5XVxuICAoZ2V0IHN0YXRlcyBjdXJyZW50LXN0YXRlKSkpXG4ifSB7OnN5bSB1bmRvISwgOm1ldGEgezpkb2MgIkNoYW5nZXMgdGhlIGN1cnJlbnQgc3RhdGUgYW5kIHJldHVybnMgdGhlIHByZXZpb3VzIHN0YXRlIGZyb20gZWRpdC1oaXN0b3J5LCBvciBuaWwgaWYgdGhlcmUgaXMgbm9uZS4iLCA6YXJnbGlzdHMgKFsqZWRpdC1oaXN0b3J5XSl9LCA6c291cmNlICIoZGVmblxuIHVuZG8hXG4gXCJDaGFuZ2VzIHRoZSBjdXJyZW50IHN0YXRlIGFuZCByZXR1cm5zIHRoZSBwcmV2aW91cyBzdGF0ZSBmcm9tIGVkaXQtaGlzdG9yeSwgb3IgbmlsIGlmIHRoZXJlIGlzIG5vbmUuXCJcbiBbKmVkaXQtaGlzdG9yeV1cbiAod2hlbi1sZXRcbiAgW3N0YXRlIChnZXQtcHJldmlvdXMtc3RhdGUgKmVkaXQtaGlzdG9yeSldXG4gIChzd2FwISAqZWRpdC1oaXN0b3J5IHVwZGF0ZSA6Y3VycmVudC1zdGF0ZSBkZWMpXG4gIHN0YXRlKSlcbiJ9IHs6c3ltIHJlZG8hLCA6bWV0YSB7OmRvYyAiQ2hhbmdlcyB0aGUgY3VycmVudCBzdGF0ZSBhbmQgcmV0dXJucyB0aGUgbmV4dCBzdGF0ZSBmcm9tIGVkaXQtaGlzdG9yeSwgb3IgbmlsIGlmIHRoZXJlIGlzIG5vbmUuIiwgOmFyZ2xpc3RzIChbKmVkaXQtaGlzdG9yeV0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWRvIVxuIFwiQ2hhbmdlcyB0aGUgY3VycmVudCBzdGF0ZSBhbmQgcmV0dXJucyB0aGUgbmV4dCBzdGF0ZSBmcm9tIGVkaXQtaGlzdG9yeSwgb3IgbmlsIGlmIHRoZXJlIGlzIG5vbmUuXCJcbiBbKmVkaXQtaGlzdG9yeV1cbiAod2hlbi1sZXRcbiAgW3N0YXRlIChnZXQtbmV4dC1zdGF0ZSAqZWRpdC1oaXN0b3J5KV1cbiAgKHN3YXAhICplZGl0LWhpc3RvcnkgdXBkYXRlIDpjdXJyZW50LXN0YXRlIGluYylcbiAgc3RhdGUpKVxuIn0gezpzeW0gY2FuLXVuZG8/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIHdlIGNhbiB1bmRvLiIsIDphcmdsaXN0cyAoWyplZGl0LWhpc3RvcnldKX0sIDpzb3VyY2UgIihkZWZuXG4gY2FuLXVuZG8/XG4gXCJSZXR1cm5zIHRydWUgaWYgd2UgY2FuIHVuZG8uXCJcbiBbKmVkaXQtaGlzdG9yeV1cbiAoc29tZT8gKGdldC1wcmV2aW91cy1zdGF0ZSAqZWRpdC1oaXN0b3J5KSkpXG4ifSB7OnN5bSBnZXQtbmV4dC1zdGF0ZSwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG5leHQgc3RhdGUgZnJvbSBlZGl0LWhpc3RvcnksIG9yIG5pbCBpZiB0aGVyZSBpcyBub25lLiIsIDphcmdsaXN0cyAoWyplZGl0LWhpc3RvcnldKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LW5leHQtc3RhdGVcbiBcIlJldHVybnMgdGhlIG5leHQgc3RhdGUgZnJvbSBlZGl0LWhpc3RvcnksIG9yIG5pbCBpZiB0aGVyZSBpcyBub25lLlwiXG4gWyplZGl0LWhpc3RvcnldXG4gKGxldFxuICBbezprZXlzIFtjdXJyZW50LXN0YXRlIHN0YXRlc119IEAqZWRpdC1oaXN0b3J5XVxuICAoZ2V0IHN0YXRlcyAoaW5jIGN1cnJlbnQtc3RhdGUpKSkpXG4ifSB7OnN5bSB1cGRhdGUtY3Vyc29yLXBvc2l0aW9uISwgOm1ldGEgezpkb2MgIlVwZGF0ZXMgb25seSB0aGUgY3Vyc29yIHBvc2l0aW9uLiIsIDphcmdsaXN0cyAoWyplZGl0LWhpc3RvcnkgY3Vyc29yLXBvc2l0aW9uXSl9LCA6c291cmNlICIoZGVmblxuIHVwZGF0ZS1jdXJzb3ItcG9zaXRpb24hXG4gXCJVcGRhdGVzIG9ubHkgdGhlIGN1cnNvciBwb3NpdGlvbi5cIlxuIFsqZWRpdC1oaXN0b3J5IGN1cnNvci1wb3NpdGlvbl1cbiAobGV0XG4gIFt7OmtleXMgW2N1cnJlbnQtc3RhdGVdfSBAKmVkaXQtaGlzdG9yeV1cbiAgKHdoZW5cbiAgICg+PSBjdXJyZW50LXN0YXRlIDApXG4gICAoc3dhcCFcbiAgICAqZWRpdC1oaXN0b3J5XG4gICAgYXNzb2MtaW5cbiAgICBbOnN0YXRlcyBjdXJyZW50LXN0YXRlIDpjdXJzb3ItcG9zaXRpb25dXG4gICAgY3Vyc29yLXBvc2l0aW9uKSkpKVxuIn0gezpzeW0gdXBkYXRlLWVkaXQtaGlzdG9yeSEsIDptZXRhIHs6ZG9jICJVcGRhdGVzIHRoZSBlZGl0IGhpc3RvcnkgYXRvbS4iLCA6YXJnbGlzdHMgKFsqZWRpdC1oaXN0b3J5IHN0YXRlXSl9LCA6c291cmNlICIoZGVmblxuIHVwZGF0ZS1lZGl0LWhpc3RvcnkhXG4gXCJVcGRhdGVzIHRoZSBlZGl0IGhpc3RvcnkgYXRvbS5cIlxuIFsqZWRpdC1oaXN0b3J5IHN0YXRlXVxuIChsZXRcbiAgW3s6a2V5cyBbY3VycmVudC1zdGF0ZSBzdGF0ZXMgbGltaXRdfVxuICAgQCplZGl0LWhpc3RvcnlcbiAgIG9sZC1zdGF0ZVxuICAgKGdldCBzdGF0ZXMgY3VycmVudC1zdGF0ZSlcbiAgIG9sZC1jdXJzb3ItcG9zaXRpb25cbiAgIChvciAoZmlyc3QgKDpvcmlnaW5hbC1jdXJzb3ItcG9zaXRpb24gb2xkLXN0YXRlKSkgMClcbiAgIG5ldy1jdXJzb3ItcG9zaXRpb25cbiAgIChmaXJzdCAoOmN1cnNvci1wb3NpdGlvbiBzdGF0ZSkpXG4gICBuZXctY3Vyc29yLWNoYW5nZVxuICAgKC0gbmV3LWN1cnNvci1wb3NpdGlvbiBvbGQtY3Vyc29yLXBvc2l0aW9uKVxuICAgc3RhdGVcbiAgIChhc3NvYyBzdGF0ZSA6b3JpZ2luYWwtY3Vyc29yLXBvc2l0aW9uICg6Y3Vyc29yLXBvc2l0aW9uIHN0YXRlKSldXG4gICh3aGVuXG4gICAob3JcbiAgICAobm90PSAoOnRleHQgb2xkLXN0YXRlKSAoOnRleHQgc3RhdGUpKVxuICAgICg6c2VsZWN0aW9uLWNoYW5nZT8gc3RhdGUpKVxuICAgKHN3YXAhXG4gICAgKmVkaXQtaGlzdG9yeVxuICAgIChmblxuICAgICBbZWRpdC1oaXN0b3J5XVxuICAgICAobGV0XG4gICAgICBbbmV3LWN1cnJlbnQtc3RhdGVcbiAgICAgICAoaWZcbiAgICAgICAgKG9yICg8PSBjdXJyZW50LXN0YXRlIDEpIChub3Q9IG5ldy1jdXJzb3ItY2hhbmdlIDEpKVxuICAgICAgICAoaW5jIGN1cnJlbnQtc3RhdGUpXG4gICAgICAgIGN1cnJlbnQtc3RhdGUpXG4gICAgICAgbmV3LXN0YXRlc1xuICAgICAgIChzdWJ2ZWMgc3RhdGVzIDAgbmV3LWN1cnJlbnQtc3RhdGUpXG4gICAgICAgbmV3LXN0YXRlc1xuICAgICAgIChjb25qIG5ldy1zdGF0ZXMgc3RhdGUpXVxuICAgICAgKGlmXG4gICAgICAgKGFuZCBsaW1pdCAoPiAoY291bnQgbmV3LXN0YXRlcykgbGltaXQpKVxuICAgICAgIChhc3NvY1xuICAgICAgICBlZGl0LWhpc3RvcnlcbiAgICAgICAgOmN1cnJlbnQtc3RhdGVcbiAgICAgICAgKGRlYyBuZXctY3VycmVudC1zdGF0ZSlcbiAgICAgICAgOnN0YXRlc1xuICAgICAgICAoc3VidmVjIG5ldy1zdGF0ZXMgMSkpXG4gICAgICAgKGFzc29jXG4gICAgICAgIGVkaXQtaGlzdG9yeVxuICAgICAgICA6Y3VycmVudC1zdGF0ZVxuICAgICAgICBuZXctY3VycmVudC1zdGF0ZVxuICAgICAgICA6c3RhdGVzXG4gICAgICAgIG5ldy1zdGF0ZXMpKSkpKSkpKVxuIn0gezpzeW0gY3JlYXRlLWVkaXQtaGlzdG9yeSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuIGNyZWF0ZS1lZGl0LWhpc3RvcnkgW10gKGF0b20gezpjdXJyZW50LXN0YXRlIC0xLCA6c3RhdGVzIFtdfSkpXG4ifSB7OnN5bSBnZXQtcHJldmlvdXMtc3RhdGUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBwcmV2aW91cyBzdGF0ZSBmcm9tIGVkaXQtaGlzdG9yeSwgb3IgbmlsIGlmIHRoZXJlIGlzIG5vbmUuIiwgOmFyZ2xpc3RzIChbKmVkaXQtaGlzdG9yeV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtcHJldmlvdXMtc3RhdGVcbiBcIlJldHVybnMgdGhlIHByZXZpb3VzIHN0YXRlIGZyb20gZWRpdC1oaXN0b3J5LCBvciBuaWwgaWYgdGhlcmUgaXMgbm9uZS5cIlxuIFsqZWRpdC1oaXN0b3J5XVxuIChsZXRcbiAgW3s6a2V5cyBbY3VycmVudC1zdGF0ZSBzdGF0ZXNdfSBAKmVkaXQtaGlzdG9yeV1cbiAgKGdldCBzdGF0ZXMgKGRlYyBjdXJyZW50LXN0YXRlKSkpKVxuIn0pLCBjbGpzLnRvb2xzLnJlYWRlci5pbXBsLmluc3BlY3QgKHs6c3ltIGluc3BlY3QsIDptZXRhIHs6ZG9jICJSZXR1cm4gYSBzdHJpbmcgZGVzY3JpcHRpb24gb2YgdGhlIHZhbHVlIHN1cHBsaWVkLlxuICAgTWF5IGJlIHRoZSBhIHN0cmluZyB2ZXJzaW9uIG9mIHRoZSB2YWx1ZSBpdHNlbGYgKGUuZy4gXCJ0cnVlXCIpXG4gICBvciBpdCBtYXkgYmUgYSBkZXNjcmlwdGlvbiAoZS5nLiBcImFuIGluc3RhbmNlIG9mIEZvb1wiKS5cbiAgIElmIHRydW5jYXRlIGlzIHRydWUgdGhlbiByZXR1cm4gYSB2ZXJ5IHRlcnNlIHZlcnNpb24gb2ZcbiAgIHRoZSBpbnNwZWN0aW9uLiIsIDphcmdsaXN0cyBbW3hdIFt0cnVuY2F0ZSB4XV19LCA6c291cmNlICIoZGVmblxuIGluc3BlY3RcbiBcIlJldHVybiBhIHN0cmluZyBkZXNjcmlwdGlvbiBvZiB0aGUgdmFsdWUgc3VwcGxpZWQuXFxuICAgTWF5IGJlIHRoZSBhIHN0cmluZyB2ZXJzaW9uIG9mIHRoZSB2YWx1ZSBpdHNlbGYgKGUuZy4gXFxcInRydWVcXFwiKVxcbiAgIG9yIGl0IG1heSBiZSBhIGRlc2NyaXB0aW9uIChlLmcuIFxcXCJhbiBpbnN0YW5jZSBvZiBGb29cXFwiKS5cXG4gICBJZiB0cnVuY2F0ZSBpcyB0cnVlIHRoZW4gcmV0dXJuIGEgdmVyeSB0ZXJzZSB2ZXJzaW9uIG9mXFxuICAgdGhlIGluc3BlY3Rpb24uXCJcbiAoW3hdIChpbnNwZWN0KiBmYWxzZSB4KSlcbiAoW3RydW5jYXRlIHhdIChpbnNwZWN0KiB0cnVuY2F0ZSB4KSkpXG4ifSksIHNhYmxvbm8uY29yZSAoezpzeW0gd3JhcC1hdHRycywgOm1ldGEgezpkb2MgIkFkZCBhbiBvcHRpb25hbCBhdHRyaWJ1dGUgYXJndW1lbnQgdG8gYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBlbGVtZW50IHZlY3Rvci4iLCA6YXJnbGlzdHMgKFtmdW5jXSl9LCA6c291cmNlICIoZGVmblxuIHdyYXAtYXR0cnNcbiBcIkFkZCBhbiBvcHRpb25hbCBhdHRyaWJ1dGUgYXJndW1lbnQgdG8gYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBlbGVtZW50IHZlY3Rvci5cIlxuIFtmdW5jXVxuIChmblxuICBbJiBhcmdzXVxuICAoaWZcbiAgIChtYXA/IChmaXJzdCBhcmdzKSlcbiAgIChsZXRcbiAgICBbW3RhZyAmIGJvZHldIChhcHBseSBmdW5jIChyZXN0IGFyZ3MpKV1cbiAgICAoaWZcbiAgICAgKG1hcD8gKGZpcnN0IGJvZHkpKVxuICAgICAoaW50byBbdGFnIChtZXJnZSAoZmlyc3QgYm9keSkgKGZpcnN0IGFyZ3MpKV0gKHJlc3QgYm9keSkpXG4gICAgIChpbnRvIFt0YWcgKGZpcnN0IGFyZ3MpXSBib2R5KSkpXG4gICAoYXBwbHkgZnVuYyBhcmdzKSkpKVxuIn0gezpzeW0gaW5jbHVkZS1jc3MsIDptZXRhIHs6ZG9jICJJbmNsdWRlIGEgbGlzdCBvZiBleHRlcm5hbCBzdHlsZXNoZWV0IGZpbGVzLiIsIDphcmdsaXN0cyAoWyYgc3R5bGVzXSl9LCA6c291cmNlICIoZGVmblxuIGluY2x1ZGUtY3NzXG4gXCJJbmNsdWRlIGEgbGlzdCBvZiBleHRlcm5hbCBzdHlsZXNoZWV0IGZpbGVzLlwiXG4gWyYgc3R5bGVzXVxuIChmb3JcbiAgW3N0eWxlIHN0eWxlc11cbiAgWzpsaW5rIHs6dHlwZSBcInRleHQvY3NzXCIsIDpocmVmIChhcy1zdHIgc3R5bGUpLCA6cmVsIFwic3R5bGVzaGVldFwifV0pKVxuIn0gezpzeW0gaW5jbHVkZS1qcywgOm1ldGEgezpkb2MgIkluY2x1ZGUgdGhlIEphdmFTY3JpcHQgbGlicmFyeSBhdCBgc3JjYC4iLCA6YXJnbGlzdHMgKFtzcmNdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5jbHVkZS1qc1xuIFwiSW5jbHVkZSB0aGUgSmF2YVNjcmlwdCBsaWJyYXJ5IGF0IGBzcmNgLlwiXG4gW3NyY11cbiAoZG9tL2FwcGVuZENoaWxkXG4gICguLWJvZHkgKGRvbS9nZXREb2N1bWVudCkpXG4gIChkb20vY3JlYXRlRG9tIFwic2NyaXB0XCIgI2pzIHs6c3JjIHNyY30pKSlcbiJ9IHs6c3ltIGluY2x1ZGUtcmVhY3QsIDptZXRhIHs6ZG9jICJJbmNsdWRlIEZhY2Vib29rJ3MgUmVhY3QgSmF2YVNjcmlwdCBsaWJyYXJ5LiIsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbmNsdWRlLXJlYWN0XG4gXCJJbmNsdWRlIEZhY2Vib29rJ3MgUmVhY3QgSmF2YVNjcmlwdCBsaWJyYXJ5LlwiXG4gW11cbiAoaW5jbHVkZS1qcyBcImh0dHA6Ly9mYi5tZS9yZWFjdC0wLjEyLjIuanNcIikpXG4ifSB7OnN5bSAqZ3JvdXAqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqZ3JvdXAqIFtdKVxuIn0gezpzeW0gZmlsZS11cGxvYWQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIGZpbGUtdXBsb2FkIGZpbGUtZmllbGQpXG4ifSksIGNsb2p1cmUuc2V0ICh7OnN5bSB1bmlvbiwgOm1ldGEgezpkb2MgIlJldHVybiBhIHNldCB0aGF0IGlzIHRoZSB1bmlvbiBvZiB0aGUgaW5wdXQgc2V0cyIsIDphcmdsaXN0cyBbW10gW3MxXSBbczEgczJdIFtzMSBzMiAmIHNldHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gdW5pb25cbiBcIlJldHVybiBhIHNldCB0aGF0IGlzIHRoZSB1bmlvbiBvZiB0aGUgaW5wdXQgc2V0c1wiXG4gKFtdICN7fSlcbiAoW3MxXSBzMSlcbiAoW3MxIHMyXVxuICAoaWZcbiAgICg8IChjb3VudCBzMSkgKGNvdW50IHMyKSlcbiAgIChyZWR1Y2UgY29uaiBzMiBzMSlcbiAgIChyZWR1Y2UgY29uaiBzMSBzMikpKVxuIChbczEgczIgJiBzZXRzXVxuICAobGV0XG4gICBbYnViYmxlZC1zZXRzIChidWJibGUtbWF4LWtleSBjb3VudCAoY29uaiBzZXRzIHMyIHMxKSldXG4gICAocmVkdWNlIGludG8gKGZpcnN0IGJ1YmJsZWQtc2V0cykgKHJlc3QgYnViYmxlZC1zZXRzKSkpKSlcbiJ9IHs6c3ltIG1hcC1pbnZlcnQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBtYXAgd2l0aCB0aGUgdmFscyBtYXBwZWQgdG8gdGhlIGtleXMuIiwgOmFyZ2xpc3RzIChbbV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtYXAtaW52ZXJ0XG4gXCJSZXR1cm5zIHRoZSBtYXAgd2l0aCB0aGUgdmFscyBtYXBwZWQgdG8gdGhlIGtleXMuXCJcbiBbbV1cbiAocmVkdWNlIChmbiBbbSBbayB2XV0gKGFzc29jIG0gdiBrKSkge30gbSkpXG4ifSB7OnN5bSBqb2luLCA6bWV0YSB7OmRvYyAiV2hlbiBwYXNzZWQgMiByZWxzLCByZXR1cm5zIHRoZSByZWwgY29ycmVzcG9uZGluZyB0byB0aGUgbmF0dXJhbFxuICBqb2luLiBXaGVuIHBhc3NlZCBhbiBhZGRpdGlvbmFsIGtleW1hcCwgam9pbnMgb24gdGhlIGNvcnJlc3BvbmRpbmdcbiAga2V5cy4iLCA6YXJnbGlzdHMgW1t4cmVsIHlyZWxdIFt4cmVsIHlyZWwga21dXX0sIDpzb3VyY2UgIihkZWZuXG4gam9pblxuIFwiV2hlbiBwYXNzZWQgMiByZWxzLCByZXR1cm5zIHRoZSByZWwgY29ycmVzcG9uZGluZyB0byB0aGUgbmF0dXJhbFxcbiAgam9pbi4gV2hlbiBwYXNzZWQgYW4gYWRkaXRpb25hbCBrZXltYXAsIGpvaW5zIG9uIHRoZSBjb3JyZXNwb25kaW5nXFxuICBrZXlzLlwiXG4gKFt4cmVsIHlyZWxdXG4gIChpZlxuICAgKGFuZCAoc2VxIHhyZWwpIChzZXEgeXJlbCkpXG4gICAobGV0XG4gICAgW2tzXG4gICAgIChpbnRlcnNlY3Rpb24gKHNldCAoa2V5cyAoZmlyc3QgeHJlbCkpKSAoc2V0IChrZXlzIChmaXJzdCB5cmVsKSkpKVxuICAgICBbciBzXVxuICAgICAoaWYgKDw9IChjb3VudCB4cmVsKSAoY291bnQgeXJlbCkpIFt4cmVsIHlyZWxdIFt5cmVsIHhyZWxdKVxuICAgICBpZHhcbiAgICAgKGluZGV4IHIga3MpXVxuICAgIChyZWR1Y2VcbiAgICAgKGZuXG4gICAgICBbcmV0IHhdXG4gICAgICAobGV0XG4gICAgICAgW2ZvdW5kIChpZHggKHNlbGVjdC1rZXlzIHgga3MpKV1cbiAgICAgICAoaWZcbiAgICAgICAgZm91bmRcbiAgICAgICAgKHJlZHVjZVxuICAgICAgICAgKGZuKlxuICAgICAgICAgIFtwMV9fNDQ5NzQjIHAyX180NDk3NSNdXG4gICAgICAgICAgKGNvbmogcDFfXzQ0OTc0IyAobWVyZ2UgcDJfXzQ0OTc1IyB4KSkpXG4gICAgICAgICByZXRcbiAgICAgICAgIGZvdW5kKVxuICAgICAgICByZXQpKSlcbiAgICAgI3t9XG4gICAgIHMpKVxuICAgI3t9KSlcbiAoW3hyZWwgeXJlbCBrbV1cbiAgKGxldFxuICAgW1tyIHMga11cbiAgICAoaWZcbiAgICAgKDw9IChjb3VudCB4cmVsKSAoY291bnQgeXJlbCkpXG4gICAgIFt4cmVsIHlyZWwgKG1hcC1pbnZlcnQga20pXVxuICAgICBbeXJlbCB4cmVsIGttXSlcbiAgICBpZHhcbiAgICAoaW5kZXggciAodmFscyBrKSldXG4gICAocmVkdWNlXG4gICAgKGZuXG4gICAgIFtyZXQgeF1cbiAgICAgKGxldFxuICAgICAgW2ZvdW5kIChpZHggKHJlbmFtZS1rZXlzIChzZWxlY3Qta2V5cyB4IChrZXlzIGspKSBrKSldXG4gICAgICAoaWZcbiAgICAgICBmb3VuZFxuICAgICAgIChyZWR1Y2VcbiAgICAgICAgKGZuKlxuICAgICAgICAgW3AxX180NDk3NiMgcDJfXzQ0OTc3I11cbiAgICAgICAgIChjb25qIHAxX180NDk3NiMgKG1lcmdlIHAyX180NDk3NyMgeCkpKVxuICAgICAgICByZXRcbiAgICAgICAgZm91bmQpXG4gICAgICAgcmV0KSkpXG4gICAgI3t9XG4gICAgcykpKSlcbiJ9IHs6c3ltIHNlbGVjdCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBzZXQgb2YgdGhlIGVsZW1lbnRzIGZvciB3aGljaCBwcmVkIGlzIHRydWUiLCA6YXJnbGlzdHMgKFtwcmVkIHhzZXRdKX0sIDpzb3VyY2UgIihkZWZuXG4gc2VsZWN0XG4gXCJSZXR1cm5zIGEgc2V0IG9mIHRoZSBlbGVtZW50cyBmb3Igd2hpY2ggcHJlZCBpcyB0cnVlXCJcbiBbcHJlZCB4c2V0XVxuIChyZWR1Y2UgKGZuIFtzIGtdIChpZiAocHJlZCBrKSBzIChkaXNqIHMgaykpKSB4c2V0IHhzZXQpKVxuIn0gezpzeW0gaW50ZXJzZWN0aW9uLCA6bWV0YSB7OmRvYyAiUmV0dXJuIGEgc2V0IHRoYXQgaXMgdGhlIGludGVyc2VjdGlvbiBvZiB0aGUgaW5wdXQgc2V0cyIsIDphcmdsaXN0cyBbW3MxXSBbczEgczJdIFtzMSBzMiAmIHNldHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gaW50ZXJzZWN0aW9uXG4gXCJSZXR1cm4gYSBzZXQgdGhhdCBpcyB0aGUgaW50ZXJzZWN0aW9uIG9mIHRoZSBpbnB1dCBzZXRzXCJcbiAoW3MxXSBzMSlcbiAoW3MxIHMyXVxuICAoaWZcbiAgICg8IChjb3VudCBzMikgKGNvdW50IHMxKSlcbiAgIChyZWN1ciBzMiBzMSlcbiAgIChyZWR1Y2VcbiAgICAoZm5cbiAgICAgW3Jlc3VsdCBpdGVtXVxuICAgICAoaWYgKGNvbnRhaW5zPyBzMiBpdGVtKSByZXN1bHQgKGRpc2ogcmVzdWx0IGl0ZW0pKSlcbiAgICBzMVxuICAgIHMxKSkpXG4gKFtzMSBzMiAmIHNldHNdXG4gIChsZXRcbiAgIFtidWJibGVkLXNldHNcbiAgICAoYnViYmxlLW1heC1rZXlcbiAgICAgKGZuKiBbcDFfXzQ0OTcxI10gKC0gKGNvdW50IHAxX180NDk3MSMpKSlcbiAgICAgKGNvbmogc2V0cyBzMiBzMSkpXVxuICAgKHJlZHVjZSBpbnRlcnNlY3Rpb24gKGZpcnN0IGJ1YmJsZWQtc2V0cykgKHJlc3QgYnViYmxlZC1zZXRzKSkpKSlcbiJ9IHs6c3ltIHN1cGVyc2V0PywgOm1ldGEgezpkb2MgIklzIHNldDEgYSBzdXBlcnNldCBvZiBzZXQyPyIsIDphcmdsaXN0cyAoW3NldDEgc2V0Ml0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzdXBlcnNldD9cbiBcIklzIHNldDEgYSBzdXBlcnNldCBvZiBzZXQyP1wiXG4gW3NldDEgc2V0Ml1cbiAoYW5kXG4gICg+PSAoY291bnQgc2V0MSkgKGNvdW50IHNldDIpKVxuICAoZXZlcnk/IChmbiogW3AxX180NDk3OSNdIChjb250YWlucz8gc2V0MSBwMV9fNDQ5NzkjKSkgc2V0MikpKVxuIn0gezpzeW0gaW5kZXgsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbWFwIG9mIHRoZSBkaXN0aW5jdCB2YWx1ZXMgb2Yga3MgaW4gdGhlIHhyZWwgbWFwcGVkIHRvIGFcbiAgc2V0IG9mIHRoZSBtYXBzIGluIHhyZWwgd2l0aCB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZXMgb2Yga3MuIiwgOmFyZ2xpc3RzIChbeHJlbCBrc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbmRleFxuIFwiUmV0dXJucyBhIG1hcCBvZiB0aGUgZGlzdGluY3QgdmFsdWVzIG9mIGtzIGluIHRoZSB4cmVsIG1hcHBlZCB0byBhXFxuICBzZXQgb2YgdGhlIG1hcHMgaW4geHJlbCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlcyBvZiBrcy5cIlxuIFt4cmVsIGtzXVxuIChyZWR1Y2VcbiAgKGZuXG4gICBbbSB4XVxuICAgKGxldCBbaWsgKHNlbGVjdC1rZXlzIHgga3MpXSAoYXNzb2MgbSBpayAoY29uaiAoZ2V0IG0gaWsgI3t9KSB4KSkpKVxuICB7fVxuICB4cmVsKSlcbiJ9IHs6c3ltIHN1YnNldD8sIDptZXRhIHs6ZG9jICJJcyBzZXQxIGEgc3Vic2V0IG9mIHNldDI/IiwgOmFyZ2xpc3RzIChbc2V0MSBzZXQyXSl9LCA6c291cmNlICIoZGVmblxuIHN1YnNldD9cbiBcIklzIHNldDEgYSBzdWJzZXQgb2Ygc2V0Mj9cIlxuIFtzZXQxIHNldDJdXG4gKGFuZFxuICAoPD0gKGNvdW50IHNldDEpIChjb3VudCBzZXQyKSlcbiAgKGV2ZXJ5PyAoZm4qIFtwMV9fNDQ5NzgjXSAoY29udGFpbnM/IHNldDIgcDFfXzQ0OTc4IykpIHNldDEpKSlcbiJ9IHs6c3ltIHJlbmFtZSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSByZWwgb2YgdGhlIG1hcHMgaW4geHJlbCB3aXRoIHRoZSBrZXlzIGluIGttYXAgcmVuYW1lZCB0byB0aGUgdmFscyBpbiBrbWFwIiwgOmFyZ2xpc3RzIChbeHJlbCBrbWFwXSl9LCA6c291cmNlICIoZGVmblxuIHJlbmFtZVxuIFwiUmV0dXJucyBhIHJlbCBvZiB0aGUgbWFwcyBpbiB4cmVsIHdpdGggdGhlIGtleXMgaW4ga21hcCByZW5hbWVkIHRvIHRoZSB2YWxzIGluIGttYXBcIlxuIFt4cmVsIGttYXBdXG4gKHNldCAobWFwIChmbiogW3AxX180NDk3MyNdIChyZW5hbWUta2V5cyBwMV9fNDQ5NzMjIGttYXApKSB4cmVsKSkpXG4ifSB7OnN5bSByZW5hbWUta2V5cywgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG1hcCB3aXRoIHRoZSBrZXlzIGluIGttYXAgcmVuYW1lZCB0byB0aGUgdmFscyBpbiBrbWFwIiwgOmFyZ2xpc3RzIChbbWFwIGttYXBdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVuYW1lLWtleXNcbiBcIlJldHVybnMgdGhlIG1hcCB3aXRoIHRoZSBrZXlzIGluIGttYXAgcmVuYW1lZCB0byB0aGUgdmFscyBpbiBrbWFwXCJcbiBbbWFwIGttYXBdXG4gKHJlZHVjZVxuICAoZm5cbiAgIFttIFtvbGQgbmV3XV1cbiAgIChpZiAoY29udGFpbnM/IG1hcCBvbGQpIChhc3NvYyBtIG5ldyAoZ2V0IG1hcCBvbGQpKSBtKSlcbiAgKGFwcGx5IGRpc3NvYyBtYXAgKGtleXMga21hcCkpXG4gIGttYXApKVxuIn0gezpzeW0gcHJvamVjdCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSByZWwgb2YgdGhlIGVsZW1lbnRzIG9mIHhyZWwgd2l0aCBvbmx5IHRoZSBrZXlzIGluIGtzIiwgOmFyZ2xpc3RzIChbeHJlbCBrc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcm9qZWN0XG4gXCJSZXR1cm5zIGEgcmVsIG9mIHRoZSBlbGVtZW50cyBvZiB4cmVsIHdpdGggb25seSB0aGUga2V5cyBpbiBrc1wiXG4gW3hyZWwga3NdXG4gKHNldCAobWFwIChmbiogW3AxX180NDk3MiNdIChzZWxlY3Qta2V5cyBwMV9fNDQ5NzIjIGtzKSkgeHJlbCkpKVxuIn0gezpzeW0gZGlmZmVyZW5jZSwgOm1ldGEgezpkb2MgIlJldHVybiBhIHNldCB0aGF0IGlzIHRoZSBmaXJzdCBzZXQgd2l0aG91dCBlbGVtZW50cyBvZiB0aGUgcmVtYWluaW5nIHNldHMiLCA6YXJnbGlzdHMgW1tzMV0gW3MxIHMyXSBbczEgczIgJiBzZXRzXV19LCA6c291cmNlICIoZGVmblxuIGRpZmZlcmVuY2VcbiBcIlJldHVybiBhIHNldCB0aGF0IGlzIHRoZSBmaXJzdCBzZXQgd2l0aG91dCBlbGVtZW50cyBvZiB0aGUgcmVtYWluaW5nIHNldHNcIlxuIChbczFdIHMxKVxuIChbczEgczJdXG4gIChpZlxuICAgKDwgKGNvdW50IHMxKSAoY291bnQgczIpKVxuICAgKHJlZHVjZVxuICAgIChmblxuICAgICBbcmVzdWx0IGl0ZW1dXG4gICAgIChpZiAoY29udGFpbnM/IHMyIGl0ZW0pIChkaXNqIHJlc3VsdCBpdGVtKSByZXN1bHQpKVxuICAgIHMxXG4gICAgczEpXG4gICAocmVkdWNlIGRpc2ogczEgczIpKSlcbiAoW3MxIHMyICYgc2V0c10gKHJlZHVjZSBkaWZmZXJlbmNlIHMxIChjb25qIHNldHMgczIpKSkpXG4ifSksIG9kb3lsZS5ydW0gKHs6c3ltICptYXRjaGVzKiwgOm1ldGEgezpkb2MgIklmIGJvdW5kIHRvIGEgdm9sYXRpbGUgY29udGFpbmluZyBhIGhhc2ggbWFwLFxuICAgICAgICAgICAgbWF0Y2hlcyB0cmlnZ2VyZWQgYnkgYGZpcmUtcnVsZXNgIHdpbGwgYmUgc3RvcmVkIGluIGl0XG4gICAgICAgICAgICByYXRoZXIgdGhhbiBpbiB0aGUgYXRvbSBjcmVhdGVkIGJ5IGBydWxlc2V0YC5cbiAgICAgICAgICAgIFRoaXMgaXMgaW1wb3J0YW50IHdoZW4gbW9kaWZ5aW5nIHRoZSBzZXNzaW9uIGluIGEgc2VydmVyLXNpZGVcbiAgICAgICAgICAgIHJvdXRlIGJlY2F1c2UgaXQgZW5zdXJlcyB0aGUgbW9kaWZpY2F0aW9ucyB3aWxsIGJlIGxvY2FsXG4gICAgICAgICAgICBhbmQgd2lsbCBub3QgYWZmZWN0IG90aGVyIGNvbm5lY3Rpb25zIGhhcHBlbmluZyBzaW11bHRhbmVvdXNseS5cbiAgICAgICAgICAgIERvIG5vdCB1c2UgaXQgZnJvbSBjbG9qdXJlc2NyaXB0LiJ9LCA6c291cmNlICIoZGVmICptYXRjaGVzKiBuaWwpXG4ifSB7OnN5bSBhdG9tLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhbiBhdG9tIHRoYXQgY2FuIGhvbGQgbG9jYWwgc3RhdGUgZm9yIGEgY29tcG9uZW50LlxuICBPbmx5IHdvcmtzIGluIGEgOnRoZW4gYmxvY2suIiwgOmFyZ2xpc3RzIChbaW5pdGlhbC12YWx1ZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhdG9tXG4gXCJSZXR1cm5zIGFuIGF0b20gdGhhdCBjYW4gaG9sZCBsb2NhbCBzdGF0ZSBmb3IgYSBjb21wb25lbnQuXFxuICBPbmx5IHdvcmtzIGluIGEgOnRoZW4gYmxvY2suXCJcbiBbaW5pdGlhbC12YWx1ZV1cbiAod2hlbi1ub3RcbiAgKmxvY2FsLXBvaW50ZXIqXG4gICh0aHJvdyAoZXgtaW5mbyBcIllvdSBjYW5ub3QgY2FsbCBgYXRvbWAgaGVyZVwiIHt9KSkpXG4gKHdoZW4tbm90XG4gIEAqY2FuLXJldHVybi1hdG9tPypcbiAgKHRocm93XG4gICAoZXgtaW5mbyBcIllvdSBjYW4gb25seSBjYWxsIGBhdG9tYCBvbmNlIGluIGVhY2ggOnRoZW4gYmxvY2tcIiB7fSkpKVxuICh2cmVzZXQhICpjYW4tcmV0dXJuLWF0b20/KiBmYWxzZSlcbiAoaWYtbGV0XG4gIFsqbG9jYWwgQCpsb2NhbC1wb2ludGVyKl1cbiAgKmxvY2FsXG4gIChsZXRcbiAgIFsqbG9jYWwgKHJlc2V0ISAqbG9jYWwtcG9pbnRlciogKGNsb2p1cmUuY29yZS9hdG9tIGluaXRpYWwtdmFsdWUpKV1cbiAgICh3aGVuLWxldFxuICAgIFtjbXAgKnJlYWN0LWNvbXBvbmVudCpdXG4gICAgKGFkZC13YXRjaFxuICAgICAqbG9jYWxcbiAgICAgOm9kb3lsZS5ydW0vbG9jYWxcbiAgICAgKGZuIFtfIF8gcCBuXSAod2hlbiAobm90PSBwIG4pICguZm9yY2VVcGRhdGUgY21wKSkpKSlcbiAgICpsb2NhbCkpKVxuIn0gezpzeW0gcHJvcCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHByb3Agc2VudCB0byB0aGUgY29tcG9uZW50LiBPbmx5IHdvcmtzIGluIGEgOnRoZW4gYmxvY2suIiwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIHByb3BcbiBcIlJldHVybnMgdGhlIHByb3Agc2VudCB0byB0aGUgY29tcG9uZW50LiBPbmx5IHdvcmtzIGluIGEgOnRoZW4gYmxvY2suXCJcbiBbXVxuICh3aGVuLW5vdFxuICAqbG9jYWwtcG9pbnRlcipcbiAgKHRocm93IChleC1pbmZvIFwiWW91IGNhbm5vdCBjYWxsIGBwcm9wYCBoZXJlXCIge30pKSlcbiAqcHJvcCopXG4ifSB7OnN5bSByZWFjdGl2ZSwgOm1ldGEgezpkb2MgIkEgcnVtIG1peGluIHRoYXQgbWFrZXMgdGhlIGFzc29jaWF0ZWQgY29tcG9uZW50IHJlYWN0IHRvIGNoYW5nZXMgZnJvbVxuICB0aGUgc2Vzc2lvbiBhbmQgdGhlIGxvY2FsIGF0b20uIiwgOmFyZ2xpc3RzIChbcnVsZS1rZXkgKm1hdGNoXSl9LCA6c291cmNlICIoZGVmblxuIHJlYWN0aXZlXG4gXCJBIHJ1bSBtaXhpbiB0aGF0IG1ha2VzIHRoZSBhc3NvY2lhdGVkIGNvbXBvbmVudCByZWFjdCB0byBjaGFuZ2VzIGZyb21cXG4gIHRoZSBzZXNzaW9uIGFuZCB0aGUgbG9jYWwgYXRvbS5cIlxuIFtydWxlLWtleSAqbWF0Y2hdXG4gezppbml0XG4gIChmblxuICAgW3N0YXRlIHByb3BzXVxuICAgKC0+XG4gICAgc3RhdGVcbiAgICAoYXNzb2MgOm9kb3lsZS5ydW0vbG9jYWwtcG9pbnRlciAoY2xvanVyZS5jb3JlL2F0b20gbmlsKSlcbiAgICAjPyg6Y2xqcyAoYXNzb2MgOm9kb3lsZS5ydW0vZ2xvYmFsLWtleSAobGV0IFtnbG9iYWwta2V5IChyYW5kb20tdXVpZCkgY21wICg6cnVtL3JlYWN0LWNvbXBvbmVudCBzdGF0ZSldIChhZGQtd2F0Y2ggKm1hdGNoIGdsb2JhbC1rZXkgKGZuIFtfIF8gcCBuXSAod2hlbiAobm90PSBwIG4pICguZm9yY2VVcGRhdGUgY21wKSkpKSBnbG9iYWwta2V5KSkpKSksXG4gIDp3cmFwLXJlbmRlclxuICAoZm5cbiAgIFtyZW5kZXItZm5dXG4gICAoZm5cbiAgICBbc3RhdGVdXG4gICAgKGJpbmRpbmdcbiAgICAgWypsb2NhbC1wb2ludGVyKlxuICAgICAgKDpvZG95bGUucnVtL2xvY2FsLXBvaW50ZXIgc3RhdGUpXG4gICAgICAqcmVhY3QtY29tcG9uZW50KlxuICAgICAgKDpydW0vcmVhY3QtY29tcG9uZW50IHN0YXRlKVxuICAgICAgKmNhbi1yZXR1cm4tYXRvbT8qXG4gICAgICAodm9sYXRpbGUhIHRydWUpXG4gICAgICAqcHJvcCpcbiAgICAgIChmaXJzdCAoOnJ1bS9hcmdzIHN0YXRlKSlcbiAgICAgIG8vKm1hdGNoKlxuICAgICAgIz8oOmNsanMgKGNsb2p1cmUuY29yZS9kZXJlZiAqbWF0Y2gpIDpjbGogKG9yIChzb21lLT4gKm1hdGNoZXMqIGRlcmVmIHJ1bGUta2V5KSAoY2xvanVyZS5jb3JlL2RlcmVmICptYXRjaCkpKV1cbiAgICAgKHJlbmRlci1mbiBzdGF0ZSkpKSksXG4gIDp3aWxsLXVubW91bnRcbiAgKGZuXG4gICBbc3RhdGVdXG4gICAjPyg6Y2xqcyAocmVtb3ZlLXdhdGNoICptYXRjaCAoOm9kb3lsZS5ydW0vZ2xvYmFsLWtleSBzdGF0ZSkpKVxuICAgKHdoZW4tbGV0XG4gICAgWypsb2NhbCBAKDpvZG95bGUucnVtL2xvY2FsLXBvaW50ZXIgc3RhdGUpXVxuICAgIChyZW1vdmUtd2F0Y2ggKmxvY2FsIDpvZG95bGUucnVtL2xvY2FsKSlcbiAgIChkaXNzb2Mgc3RhdGUgOm9kb3lsZS5ydW0vbG9jYWwtcG9pbnRlcikpfSlcbiJ9KSwgcGFyZW4tc291cC5pbnN0YXJlcGwgKHs6c3ltICp3ZWItd29ya2VyLXBhdGgqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqd2ViLXdvcmtlci1wYXRoKiBuaWwpXG4ifSB7OnN5bSBmb3JtLT5zZXJpYWxpemFibGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBmb3JtLT5zZXJpYWxpemFibGVcbiBbZm9ybV1cbiAoaWZcbiAgKGluc3RhbmNlPyBqcy9FcnJvciBmb3JtKVxuICAoYXJyYXlcbiAgIChvciAoc29tZS0+IGZvcm0gLi1jYXVzZSAuLW1lc3NhZ2UpICguLW1lc3NhZ2UgZm9ybSkpXG4gICAoLi1maWxlTmFtZSBmb3JtKVxuICAgKC4tbGluZU51bWJlciBmb3JtKSlcbiAgKHByLXN0ciBmb3JtKSkpXG4ifSB7OnN5bSByZXN1bHRzLT5odG1sLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBIVE1MIGZvciB0aGUgZ2l2ZW4gZXZhbCByZXN1bHRzLiIsIDphcmdsaXN0cyAoW3Jlc3VsdHMgbG9jYXRpb25zIGxpbWl0XSl9LCA6c291cmNlICIoZGVmblxuIHJlc3VsdHMtPmh0bWxcbiBcIlJldHVybnMgSFRNTCBmb3IgdGhlIGdpdmVuIGV2YWwgcmVzdWx0cy5cIlxuIFtyZXN1bHRzIGxvY2F0aW9ucyBsaW1pdF1cbiAobG9vcFxuICBbaSAwIGV2YWxzICh0cmFuc2llbnQgW10pXVxuICAobGV0XG4gICBbcmVzIChnZXQgcmVzdWx0cyBpKSB7OmtleXMgW3RvcCBoZWlnaHRdfSAoZ2V0IGxvY2F0aW9ucyBpKV1cbiAgIChpZlxuICAgIChhbmQgcmVzIHRvcCBoZWlnaHQpXG4gICAgKHJlY3VyXG4gICAgIChpbmMgaSlcbiAgICAgKGNvbmohXG4gICAgICBldmFsc1xuICAgICAgKGZvcm1hdFxuICAgICAgIFwiPGRpdiBjbGFzcz0nJXMnIHN0eWxlPSd0b3A6ICVzcHg7IGhlaWdodDogJXNweDsgbWluLWhlaWdodDogJXNweCc+JXM8L2Rpdj5cIlxuICAgICAgIChpZiAoYXJyYXk/IHJlcykgXCJyZXN1bHQgZXJyb3JcIiBcInJlc3VsdFwiKVxuICAgICAgIHRvcFxuICAgICAgIGhlaWdodFxuICAgICAgIGhlaWdodFxuICAgICAgIChzb21lLT5cbiAgICAgICAgKGlmIChhcnJheT8gcmVzKSAoZmlyc3QgcmVzKSByZXMpXG4gICAgICAgICh0cnVuY2F0ZSBsaW1pdClcbiAgICAgICAgaHMvZXNjYXBlLWh0bWwtc3RyKSkpKVxuICAgIChqb2luIChwZXJzaXN0ZW50ISBldmFscykpKSkpKVxuIn0gezpzeW0gdXNlLXdlYi13b3JrZXIhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiB1c2Utd2ViLXdvcmtlciFcbiBbXVxuIChzZXQhICp3ZWItd29ya2VyLXBhdGgqIFwicGFyZW4tc291cC1jb21waWxlci5qc1wiKSlcbiJ9IHs6c3ltIGVsZW0/LCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBlbGVtPyAoZm4qIFtwMV9fNDUwMzIjXSAoaW5zdGFuY2U/IGpzL0VsZW1lbnQgcDFfXzQ1MDMyIykpKVxuIn0gezpzeW0gY29sbGVjdGlvbi0+Y29udGVudCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbGVtXSl9LCA6c291cmNlICIoZGVmblxuIGNvbGxlY3Rpb24tPmNvbnRlbnRcbiBbZWxlbV1cbiAobG9vcFxuICBbZSBlbGVtIGNvbnRlbnQgKC4tdGV4dENvbnRlbnQgZWxlbSldXG4gIChpZi1sZXRcbiAgIFtwcmV2ICguLXByZXZpb3VzU2libGluZyBlKV1cbiAgIChpZlxuICAgICh0ZXh0LW5vZGU/IHByZXYpXG4gICAgKHJlY3VyIHByZXYgKHN0ciAoLi10ZXh0Q29udGVudCBwcmV2KSBjb250ZW50KSlcbiAgICBjb250ZW50KVxuICAgY29udGVudCkpKVxuIn0gezpzeW0gdHJ1bmNhdGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGV4dCBsaW1pdF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0cnVuY2F0ZVxuIFt0ZXh0IGxpbWl0XVxuIChpZiAoPiAoY291bnQgdGV4dCkgbGltaXQpIChzdHIgKHN1YnMgdGV4dCAwIGxpbWl0KSBcIi4uLlwiKSB0ZXh0KSlcbiJ9IHs6c3ltIGNyZWF0ZS1jb21waWxlci1mbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtvcHRzXSl9LCA6c291cmNlICIoZGVmblxuIGNyZWF0ZS1jb21waWxlci1mblxuIFtvcHRzXVxuIChpZi1sZXRcbiAgW3dvcmtlciAoc29tZS0+ICp3ZWItd29ya2VyLXBhdGgqIGpzL1dvcmtlci4pXVxuICAoZm5cbiAgIFtjb2xsIHJlY2VpdmUtZm5dXG4gICAoc2V0IVxuICAgICguLW9ubWVzc2FnZSB3b3JrZXIpXG4gICAgKGZuKiBbcDFfXzQ1MDMzI10gKHJlY2VpdmUtZm4gKHZlYyAoLi1kYXRhIHAxX180NTAzMyMpKSkpKVxuICAgKC5wb3N0TWVzc2FnZSB3b3JrZXIgKGludG8tYXJyYXkgY29sbCkpKVxuICAoZm5cbiAgIFtjb2xsIHJlY2VpdmUtZm5dXG4gICAoZXMvY29kZS0+cmVzdWx0c1xuICAgIGNvbGxcbiAgICAoZm5cbiAgICAgW3Jlc3VsdHNdXG4gICAgIChyZWNlaXZlLWZuIChpbnRvLWFycmF5IChtYXB2IGZvcm0tPnNlcmlhbGl6YWJsZSByZXN1bHRzKSkpKVxuICAgIG9wdHMpKSkpXG4ifSB7OnN5bSBnZXQtY29sbGVjdGlvbnMsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGNvbGxlY3Rpb25zIGZyb20gdGhlIGdpdmVuIERPTSBub2RlLiIsIDphcmdsaXN0cyAoW2VsZW1lbnRdKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LWNvbGxlY3Rpb25zXG4gXCJSZXR1cm5zIGNvbGxlY3Rpb25zIGZyb20gdGhlIGdpdmVuIERPTSBub2RlLlwiXG4gW2VsZW1lbnRdXG4gKHZlY1xuICAoZm9yXG4gICBbZWxlbVxuICAgICgtPiBlbGVtZW50IC4tY2hpbGRyZW4gYXJyYXktc2VxKVxuICAgIDpsZXRcbiAgICBbY2xhc3NlcyAoLi1jbGFzc0xpc3QgZWxlbSldXG4gICAgOndoZW5cbiAgICAob3IgKC5jb250YWlucyBjbGFzc2VzIFwiY29sbGVjdGlvblwiKSAoLmNvbnRhaW5zIGNsYXNzZXMgXCJzeW1ib2xcIikpXVxuICAgZWxlbSkpKVxuIn0gezpzeW0gZWxlbXMtPmxvY2F0aW9ucywgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGxvY2F0aW9uIG9mIGVhY2ggZWxlbS4iLCA6YXJnbGlzdHMgKFtlbGVtcyB0b3Atb2Zmc2V0XSl9LCA6c291cmNlICIoZGVmblxuIGVsZW1zLT5sb2NhdGlvbnNcbiBcIlJldHVybnMgdGhlIGxvY2F0aW9uIG9mIGVhY2ggZWxlbS5cIlxuIFtlbGVtcyB0b3Atb2Zmc2V0XVxuIChsb29wXG4gIFtpIDAgbG9jYXRpb25zICh0cmFuc2llbnQgW10pXVxuICAoaWYtbGV0XG4gICBbZWxlbSAoZ2V0IGVsZW1zIGkpXVxuICAgKGxldFxuICAgIFt0b3BcbiAgICAgKC0+IGVsZW0gLi1vZmZzZXRUb3AgKC0gdG9wLW9mZnNldCkpXG4gICAgIGhlaWdodFxuICAgICAoLT4gZWxlbSAuLW9mZnNldEhlaWdodCldXG4gICAgKHJlY3VyIChpbmMgaSkgKGNvbmohIGxvY2F0aW9ucyB7OnRvcCB0b3AsIDpoZWlnaHQgaGVpZ2h0fSkpKVxuICAgKHBlcnNpc3RlbnQhIGxvY2F0aW9ucykpKSlcbiJ9KSwgY2xqcy5wcHJpbnQgKHs6c3ltIHBwcmludCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1tvYmplY3RdIFtvYmplY3Qgd3JpdGVyXV19LCA6c291cmNlICIoZGVmblxuIHBwcmludFxuIChbb2JqZWN0XVxuICAobGV0XG4gICBbc2IgKFN0cmluZ0J1ZmZlci4pXVxuICAgKGJpbmRpbmdcbiAgICBbKm91dCogKFN0cmluZ0J1ZmZlcldyaXRlci4gc2IpXVxuICAgIChwcHJpbnQgb2JqZWN0ICpvdXQqKVxuICAgIChzdHJpbmctcHJpbnQgKHN0ciBzYikpKSkpXG4gKFtvYmplY3Qgd3JpdGVyXVxuICAod2l0aC1wcmV0dHktd3JpdGVyXG4gICB3cml0ZXJcbiAgIChiaW5kaW5nIFsqcHJpbnQtcHJldHR5KiB0cnVlXSAod3JpdGUtb3V0IG9iamVjdCkpXG4gICAoaWYgKG5vdCAoPSAwIChnZXQtY29sdW1uICpvdXQqKSkpICgtd3JpdGUgKm91dCogXFxuZXdsaW5lKSkpKSlcbiJ9IHs6c3ltIGdldC1wcmV0dHktd3JpdGVyLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgSVdyaXRlciBwYXNzZWQgaW4gd3JhcHBlZCBpbiBhIHByZXR0eSB3cml0ZXIgcHJveHksIHVubGVzcyBpdCdzXG5hbHJlYWR5IGEgcHJldHR5IHdyaXRlci4gR2VuZXJhbGx5LCBpdCBpcyB1bm5lY2Vzc2FyeSB0byBjYWxsIHRoaXMgZnVuY3Rpb24sIHNpbmNlIHBwcmludCxcbndyaXRlLCBhbmQgY2wtZm9ybWF0IGFsbCBjYWxsIGl0IGlmIHRoZXkgbmVlZCB0by4gSG93ZXZlciBpZiB5b3Ugd2FudCB0aGUgc3RhdGUgdG8gYmVcbnByZXNlcnZlZCBhY3Jvc3MgY2FsbHMsIHlvdSB3aWxsIHdhbnQgdG8gd3JhcCB0aGVtIHdpdGggdGhpcy5cblxuRm9yIGV4YW1wbGUsIHdoZW4geW91IHdhbnQgdG8gZ2VuZXJhdGUgY29sdW1uLWF3YXJlIG91dHB1dCB3aXRoIG11bHRpcGxlIGNhbGxzIHRvIGNsLWZvcm1hdCxcbmRvIGl0IGxpa2UgaW4gdGhpcyBleGFtcGxlOlxuXG4gICAgKGRlZm4gcHJpbnQtdGFibGUgW2FzZXEgY29sdW1uLXdpZHRoXVxuICAgICAgKGJpbmRpbmcgWypvdXQqIChnZXQtcHJldHR5LXdyaXRlciAqb3V0KildXG4gICAgICAgIChkb3NlcSBbcm93IGFzZXFdXG4gICAgICAgICAgKGRvc2VxIFtjb2wgcm93XVxuICAgICAgICAgICAgKGNsLWZvcm1hdCB0cnVlIFwifjREfjcsdlRcIiBjb2wgY29sdW1uLXdpZHRoKSlcbiAgICAgICAgICAocHJuKSkpKVxuXG5Ob3cgd2hlbiB5b3UgcnVuOlxuXG4gICAgdXNlcj4gKHByaW50LXRhYmxlIChtYXAgIyh2ZWN0b3IgJSAoKiAlICUpICgqICUgJSAlKSkgKHJhbmdlIDEgMTEpKSA4KVxuXG5JdCBwcmludHMgYSB0YWJsZSBvZiBzcXVhcmVzIGFuZCBjdWJlcyBmb3IgdGhlIG51bWJlcnMgZnJvbSAxIHRvIDEwOlxuXG4gICAgICAgMSAgICAgIDEgICAgICAgMVxuICAgICAgIDIgICAgICA0ICAgICAgIDhcbiAgICAgICAzICAgICAgOSAgICAgIDI3XG4gICAgICAgNCAgICAgMTYgICAgICA2NFxuICAgICAgIDUgICAgIDI1ICAgICAxMjVcbiAgICAgICA2ICAgICAzNiAgICAgMjE2XG4gICAgICAgNyAgICAgNDkgICAgIDM0M1xuICAgICAgIDggICAgIDY0ICAgICA1MTJcbiAgICAgICA5ICAgICA4MSAgICAgNzI5XG4gICAgICAxMCAgICAxMDAgICAgMTAwMCIsIDphcmdsaXN0cyAoW3dyaXRlcl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtcHJldHR5LXdyaXRlclxuIFwiUmV0dXJucyB0aGUgSVdyaXRlciBwYXNzZWQgaW4gd3JhcHBlZCBpbiBhIHByZXR0eSB3cml0ZXIgcHJveHksIHVubGVzcyBpdCdzXFxuYWxyZWFkeSBhIHByZXR0eSB3cml0ZXIuIEdlbmVyYWxseSwgaXQgaXMgdW5uZWNlc3NhcnkgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uLCBzaW5jZSBwcHJpbnQsXFxud3JpdGUsIGFuZCBjbC1mb3JtYXQgYWxsIGNhbGwgaXQgaWYgdGhleSBuZWVkIHRvLiBIb3dldmVyIGlmIHlvdSB3YW50IHRoZSBzdGF0ZSB0byBiZVxcbnByZXNlcnZlZCBhY3Jvc3MgY2FsbHMsIHlvdSB3aWxsIHdhbnQgdG8gd3JhcCB0aGVtIHdpdGggdGhpcy5cXG5cXG5Gb3IgZXhhbXBsZSwgd2hlbiB5b3Ugd2FudCB0byBnZW5lcmF0ZSBjb2x1bW4tYXdhcmUgb3V0cHV0IHdpdGggbXVsdGlwbGUgY2FsbHMgdG8gY2wtZm9ybWF0LFxcbmRvIGl0IGxpa2UgaW4gdGhpcyBleGFtcGxlOlxcblxcbiAgICAoZGVmbiBwcmludC10YWJsZSBbYXNlcSBjb2x1bW4td2lkdGhdXFxuICAgICAgKGJpbmRpbmcgWypvdXQqIChnZXQtcHJldHR5LXdyaXRlciAqb3V0KildXFxuICAgICAgICAoZG9zZXEgW3JvdyBhc2VxXVxcbiAgICAgICAgICAoZG9zZXEgW2NvbCByb3ddXFxuICAgICAgICAgICAgKGNsLWZvcm1hdCB0cnVlIFxcXCJ+NER+Nyx2VFxcXCIgY29sIGNvbHVtbi13aWR0aCkpXFxuICAgICAgICAgIChwcm4pKSkpXFxuXFxuTm93IHdoZW4geW91IHJ1bjpcXG5cXG4gICAgdXNlcj4gKHByaW50LXRhYmxlIChtYXAgIyh2ZWN0b3IgJSAoKiAlICUpICgqICUgJSAlKSkgKHJhbmdlIDEgMTEpKSA4KVxcblxcbkl0IHByaW50cyBhIHRhYmxlIG9mIHNxdWFyZXMgYW5kIGN1YmVzIGZvciB0aGUgbnVtYmVycyBmcm9tIDEgdG8gMTA6XFxuXFxuICAgICAgIDEgICAgICAxICAgICAgIDFcXG4gICAgICAgMiAgICAgIDQgICAgICAgOFxcbiAgICAgICAzICAgICAgOSAgICAgIDI3XFxuICAgICAgIDQgICAgIDE2ICAgICAgNjRcXG4gICAgICAgNSAgICAgMjUgICAgIDEyNVxcbiAgICAgICA2ICAgICAzNiAgICAgMjE2XFxuICAgICAgIDcgICAgIDQ5ICAgICAzNDNcXG4gICAgICAgOCAgICAgNjQgICAgIDUxMlxcbiAgICAgICA5ICAgICA4MSAgICAgNzI5XFxuICAgICAgMTAgICAgMTAwICAgIDEwMDBcIlxuIFt3cml0ZXJdXG4gKGlmXG4gIChwcmV0dHktd3JpdGVyPyB3cml0ZXIpXG4gIHdyaXRlclxuICAocHJldHR5LXdyaXRlciB3cml0ZXIgKnByaW50LXJpZ2h0LW1hcmdpbiogKnByaW50LW1pc2VyLXdpZHRoKikpKVxuIn0gezpzeW0gKnByaW50LXN1cHByZXNzLW5hbWVzcGFjZXMqLCA6bWV0YSB7OmRvYyAiRG9uJ3QgcHJpbnQgbmFtZXNwYWNlcyB3aXRoIHN5bWJvbHMuIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCB3aGVuXG5wcmV0dHkgcHJpbnRpbmcgdGhlIHJlc3VsdHMgb2YgbWFjcm8gZXhwYW5zaW9ucyJ9LCA6c291cmNlICIoZGVmICpwcmludC1zdXBwcmVzcy1uYW1lc3BhY2VzKiBuaWwpXG4ifSB7OnN5bSBjaGFyLWNvZGUsIDptZXRhIHs6ZG9jICJDb252ZXJ0IGNoYXIgdG8gaW50IiwgOmFyZ2xpc3RzIChbY10pfSwgOnNvdXJjZSAiKGRlZm5cbiBjaGFyLWNvZGVcbiBcIkNvbnZlcnQgY2hhciB0byBpbnRcIlxuIFtjXVxuIChjb25kXG4gIChudW1iZXI/IGMpXG4gIGNcbiAgKGFuZCAoc3RyaW5nPyBjKSAoPT0gKC4tbGVuZ3RoIGMpIDEpKVxuICAoLmNoYXJDb2RlQXQgYyAwKVxuICA6ZWxzZVxuICAodGhyb3cgKGpzL0Vycm9yLiBcIkFyZ3VtZW50IHRvIGNoYXIgbXVzdCBiZSBhIGNoYXJhY3RlciBvciBudW1iZXJcIikpKSlcbiJ9IHs6c3ltICpwcmludC1wcmV0dHkqLCA6bWV0YSB7OmRvYyAiQmluZCB0byB0cnVlIGlmIHlvdSB3YW50IHdyaXRlIHRvIHVzZSBwcmV0dHkgcHJpbnRpbmcifSwgOnNvdXJjZSAiKGRlZiAqcHJpbnQtcHJldHR5KiB0cnVlKVxuIn0gezpzeW0gKnByaW50LXBwcmludC1kaXNwYXRjaCosIDptZXRhIHs6ZG9jICJUaGUgcHJldHR5IHByaW50IGRpc3BhdGNoIGZ1bmN0aW9uLiBVc2Ugd2l0aC1wcHJpbnQtZGlzcGF0Y2ggb3JcbnNldC1wcHJpbnQtZGlzcGF0Y2ggdG8gbW9kaWZ5LiJ9LCA6c291cmNlICIoZGVmb25jZSAqcHJpbnQtcHByaW50LWRpc3BhdGNoKiBuaWwpXG4ifSB7OnN5bSBwcHJpbnQtbmV3bGluZSwgOm1ldGEgezpkb2MgIlByaW50IGEgY29uZGl0aW9uYWwgbmV3bGluZSB0byBhIHByZXR0eSBwcmludGluZyBzdHJlYW0uIGtpbmQgc3BlY2lmaWVzIGlmIHRoZVxuICBuZXdsaW5lIGlzIDpsaW5lYXIsIDptaXNlciwgOmZpbGwsIG9yIDptYW5kYXRvcnkuXG5cbiAgVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCBmb3IgdXNlIHdoZW4gd3JpdGluZyBjdXN0b20gZGlzcGF0Y2ggZnVuY3Rpb25zLlxuXG4gIE91dHB1dCBpcyBzZW50IHRvICpvdXQqIHdoaWNoIG11c3QgYmUgYSBwcmV0dHkgcHJpbnRpbmcgd3JpdGVyLiIsIDphcmdsaXN0cyAoW2tpbmRdKX0sIDpzb3VyY2UgIihkZWZuXG4gcHByaW50LW5ld2xpbmVcbiBcIlByaW50IGEgY29uZGl0aW9uYWwgbmV3bGluZSB0byBhIHByZXR0eSBwcmludGluZyBzdHJlYW0uIGtpbmQgc3BlY2lmaWVzIGlmIHRoZVxcbiAgbmV3bGluZSBpcyA6bGluZWFyLCA6bWlzZXIsIDpmaWxsLCBvciA6bWFuZGF0b3J5LlxcblxcbiAgVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCBmb3IgdXNlIHdoZW4gd3JpdGluZyBjdXN0b20gZGlzcGF0Y2ggZnVuY3Rpb25zLlxcblxcbiAgT3V0cHV0IGlzIHNlbnQgdG8gKm91dCogd2hpY2ggbXVzdCBiZSBhIHByZXR0eSBwcmludGluZyB3cml0ZXIuXCJcbiBba2luZF1cbiAoY2hlY2stZW51bWVyYXRlZC1hcmcga2luZCAjezptYW5kYXRvcnkgOm1pc2VyIDpmaWxsIDpsaW5lYXJ9KVxuIChubCAqb3V0KiBraW5kKSlcbiJ9IHs6c3ltIGZsb2F0PywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiBuIGlzIGFuIGZsb2F0LiIsIDphcmdsaXN0cyAoW25dKX0sIDpzb3VyY2UgIihkZWZuXG4gZmxvYXQ/XG4gXCJSZXR1cm5zIHRydWUgaWYgbiBpcyBhbiBmbG9hdC5cIlxuIFtuXVxuIChhbmRcbiAgKG51bWJlcj8gbilcbiAgKG5vdCAoanMvaXNOYU4gbikpXG4gIChub3QgKGlkZW50aWNhbD8gbiBqcy9JbmZpbml0eSkpXG4gIChub3QgKD09IChqcy9wYXJzZUZsb2F0IG4pIChqcy9wYXJzZUludCBuIDEwKSkpKSlcbiJ9IHs6c3ltIHBwcmludC10YWIsIDptZXRhIHs6ZG9jICJUYWIgYXQgdGhpcyBwb2ludCBpbiB0aGUgcHJldHR5IHByaW50aW5nIHN0cmVhbS4ga2luZCBzcGVjaWZpZXMgd2hldGhlciB0aGUgdGFiXG5pcyA6bGluZSwgOnNlY3Rpb24sIDpsaW5lLXJlbGF0aXZlLCBvciA6c2VjdGlvbi1yZWxhdGl2ZS5cblxuQ29sbnVtIGFuZCBjb2xpbmMgc3BlY2lmeSB0aGUgdGFyZ2V0IGNvbHVtbiBhbmQgdGhlIGluY3JlbWVudCB0byBtb3ZlIHRoZSB0YXJnZXRcbmZvcndhcmQgaWYgdGhlIG91dHB1dCBpcyBhbHJlYWR5IHBhc3QgdGhlIG9yaWdpbmFsIHRhcmdldC5cblxuVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCBmb3IgdXNlIHdoZW4gd3JpdGluZyBjdXN0b20gZGlzcGF0Y2ggZnVuY3Rpb25zLlxuXG5PdXRwdXQgaXMgc2VudCB0byAqb3V0KiB3aGljaCBtdXN0IGJlIGEgcHJldHR5IHByaW50aW5nIHdyaXRlci5cblxuVEhJUyBGVU5DVElPTiBJUyBOT1QgWUVUIElNUExFTUVOVEVELiIsIDphcmdsaXN0cyAoW2tpbmQgY29sbnVtIGNvbGluY10pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcHJpbnQtdGFiXG4gXCJUYWIgYXQgdGhpcyBwb2ludCBpbiB0aGUgcHJldHR5IHByaW50aW5nIHN0cmVhbS4ga2luZCBzcGVjaWZpZXMgd2hldGhlciB0aGUgdGFiXFxuaXMgOmxpbmUsIDpzZWN0aW9uLCA6bGluZS1yZWxhdGl2ZSwgb3IgOnNlY3Rpb24tcmVsYXRpdmUuXFxuXFxuQ29sbnVtIGFuZCBjb2xpbmMgc3BlY2lmeSB0aGUgdGFyZ2V0IGNvbHVtbiBhbmQgdGhlIGluY3JlbWVudCB0byBtb3ZlIHRoZSB0YXJnZXRcXG5mb3J3YXJkIGlmIHRoZSBvdXRwdXQgaXMgYWxyZWFkeSBwYXN0IHRoZSBvcmlnaW5hbCB0YXJnZXQuXFxuXFxuVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCBmb3IgdXNlIHdoZW4gd3JpdGluZyBjdXN0b20gZGlzcGF0Y2ggZnVuY3Rpb25zLlxcblxcbk91dHB1dCBpcyBzZW50IHRvICpvdXQqIHdoaWNoIG11c3QgYmUgYSBwcmV0dHkgcHJpbnRpbmcgd3JpdGVyLlxcblxcblRISVMgRlVOQ1RJT04gSVMgTk9UIFlFVCBJTVBMRU1FTlRFRC5cIlxuIHs6YWRkZWQgXCIxLjJcIn1cbiBba2luZCBjb2xudW0gY29saW5jXVxuIChjaGVjay1lbnVtZXJhdGVkLWFyZ1xuICBraW5kXG4gICN7OnNlY3Rpb24gOmxpbmUgOmxpbmUtcmVsYXRpdmUgOnNlY3Rpb24tcmVsYXRpdmV9KVxuICh0aHJvdyAoanMvRXJyb3IuIFwicHByaW50LXRhYiBpcyBub3QgeWV0IGltcGxlbWVudGVkXCIpKSlcbiJ9IHs6c3ltIHBwcmludC1zZXQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHBwcmludC1zZXQgKGZvcm1hdHRlci1vdXQgXCJ+PCN7fjt+QHt+d35eIH46X359fjt9fjo+XCIpKVxuIn0gezpzeW0gcHJpbnQtdGFibGUsIDptZXRhIHs6ZG9jICJQcmludHMgYSBjb2xsZWN0aW9uIG9mIG1hcHMgaW4gYSB0ZXh0dWFsIHRhYmxlLiBQcmludHMgdGFibGUgaGVhZGluZ3NcbiAgIGtzLCBhbmQgdGhlbiBhIGxpbmUgb2Ygb3V0cHV0IGZvciBlYWNoIHJvdywgY29ycmVzcG9uZGluZyB0byB0aGUga2V5c1xuICAgaW4ga3MuIElmIGtzIGFyZSBub3Qgc3BlY2lmaWVkLCB1c2UgdGhlIGtleXMgb2YgdGhlIGZpcnN0IGl0ZW0gaW4gcm93cy4iLCA6YXJnbGlzdHMgW1trcyByb3dzXSBbcm93c11dfSwgOnNvdXJjZSAiKGRlZm5cbiBwcmludC10YWJsZVxuIFwiUHJpbnRzIGEgY29sbGVjdGlvbiBvZiBtYXBzIGluIGEgdGV4dHVhbCB0YWJsZS4gUHJpbnRzIHRhYmxlIGhlYWRpbmdzXFxuICAga3MsIGFuZCB0aGVuIGEgbGluZSBvZiBvdXRwdXQgZm9yIGVhY2ggcm93LCBjb3JyZXNwb25kaW5nIHRvIHRoZSBrZXlzXFxuICAgaW4ga3MuIElmIGtzIGFyZSBub3Qgc3BlY2lmaWVkLCB1c2UgdGhlIGtleXMgb2YgdGhlIGZpcnN0IGl0ZW0gaW4gcm93cy5cIlxuIHs6YWRkZWQgXCIxLjNcIn1cbiAoW2tzIHJvd3NdXG4gICh3aGVuXG4gICAoc2VxIHJvd3MpXG4gICAobGV0XG4gICAgW3dpZHRoc1xuICAgICAobWFwXG4gICAgICAoZm5cbiAgICAgICBba11cbiAgICAgICAoYXBwbHlcbiAgICAgICAgbWF4XG4gICAgICAgIChjb3VudCAoc3RyIGspKVxuICAgICAgICAobWFwXG4gICAgICAgICAoZm4qIFtwMV9fNDUzOTUjXSAoY291bnQgKHN0ciAoZ2V0IHAxX180NTM5NSMgaykpKSlcbiAgICAgICAgIHJvd3MpKSlcbiAgICAgIGtzKVxuICAgICBzcGFjZXJzXG4gICAgIChtYXBcbiAgICAgIChmbiogW3AxX180NTM5NiNdIChhcHBseSBzdHIgKHJlcGVhdCBwMV9fNDUzOTYjIFwiLVwiKSkpXG4gICAgICB3aWR0aHMpXG4gICAgIGZtdC1yb3dcbiAgICAgKGZuXG4gICAgICBbbGVhZGVyIGRpdmlkZXIgdHJhaWxlciByb3ddXG4gICAgICAoc3RyXG4gICAgICAgbGVhZGVyXG4gICAgICAgKGFwcGx5XG4gICAgICAgIHN0clxuICAgICAgICAoaW50ZXJwb3NlXG4gICAgICAgICBkaXZpZGVyXG4gICAgICAgICAoZm9yXG4gICAgICAgICAgW1tjb2wgd2lkdGhdXG4gICAgICAgICAgIChtYXBcbiAgICAgICAgICAgIHZlY3RvclxuICAgICAgICAgICAgKG1hcCAoZm4qIFtwMV9fNDUzOTcjXSAoZ2V0IHJvdyBwMV9fNDUzOTcjKSkga3MpXG4gICAgICAgICAgICB3aWR0aHMpXVxuICAgICAgICAgIChhZGQtcGFkZGluZyB3aWR0aCAoc3RyIGNvbCkpKSkpXG4gICAgICAgdHJhaWxlcikpXVxuICAgIChjbGpzLmNvcmUvcHJpbnRsbilcbiAgICAoY2xqcy5jb3JlL3ByaW50bG4gKGZtdC1yb3cgXCJ8IFwiIFwiIHwgXCIgXCIgfFwiICh6aXBtYXAga3Mga3MpKSlcbiAgICAoY2xqcy5jb3JlL3ByaW50bG4gKGZtdC1yb3cgXCJ8LVwiIFwiLSstXCIgXCItfFwiICh6aXBtYXAga3Mgc3BhY2VycykpKVxuICAgIChkb3NlcVxuICAgICBbcm93IHJvd3NdXG4gICAgIChjbGpzLmNvcmUvcHJpbnRsbiAoZm10LXJvdyBcInwgXCIgXCIgfCBcIiBcIiB8XCIgcm93KSkpKSkpXG4gKFtyb3dzXSAocHJpbnQtdGFibGUgKGtleXMgKGZpcnN0IHJvd3MpKSByb3dzKSkpXG4ifSB7OnN5bSBzZXQtcHByaW50LWRpc3BhdGNoLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2Z1bmN0aW9uXSl9LCA6c291cmNlICIoZGVmblxuIHNldC1wcHJpbnQtZGlzcGF0Y2hcbiBbZnVuY3Rpb25dXG4gKHNldCEgKnByaW50LXBwcmludC1kaXNwYXRjaCogZnVuY3Rpb24pXG4gbmlsKVxuIn0gezpzeW0gZnJlc2gtbGluZSwgOm1ldGEgezpkb2MgIk1ha2UgYSBuZXdsaW5lIGlmICpvdXQqIGlzIG5vdCBhbHJlYWR5IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpbmUuIElmICpvdXQqIGlzXG5ub3QgYSBwcmV0dHkgd3JpdGVyICh3aGljaCBrZWVwcyB0cmFjayBvZiBjb2x1bW5zKSwgdGhpcyBmdW5jdGlvbiBhbHdheXMgb3V0cHV0cyBhIG5ld2xpbmUuIiwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIGZyZXNoLWxpbmVcbiBcIk1ha2UgYSBuZXdsaW5lIGlmICpvdXQqIGlzIG5vdCBhbHJlYWR5IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpbmUuIElmICpvdXQqIGlzXFxubm90IGEgcHJldHR5IHdyaXRlciAod2hpY2gga2VlcHMgdHJhY2sgb2YgY29sdW1ucyksIHRoaXMgZnVuY3Rpb24gYWx3YXlzIG91dHB1dHMgYSBuZXdsaW5lLlwiXG4gW11cbiAoaWZcbiAgKHNhdGlzZmllcz8gSURlcmVmICpvdXQqKVxuICAoaWYgKG5vdCAoPSAwIChnZXQtY29sdW1uICg6YmFzZSBAQCpvdXQqKSkpKSAocHJuKSlcbiAgKHBybikpKVxuIn0gezpzeW0gcHByaW50LWluZGVudCwgOm1ldGEgezpkb2MgIkNyZWF0ZSBhbiBpbmRlbnQgYXQgdGhpcyBwb2ludCBpbiB0aGUgcHJldHR5IHByaW50aW5nIHN0cmVhbS4gVGhpcyBkZWZpbmVzIGhvd1xuZm9sbG93aW5nIGxpbmVzIGFyZSBpbmRlbnRlZC4gcmVsYXRpdmUtdG8gY2FuIGJlIGVpdGhlciA6YmxvY2sgb3IgOmN1cnJlbnQgZGVwZW5kaW5nXG53aGV0aGVyIHRoZSBpbmRlbnQgc2hvdWxkIGJlIGNvbXB1dGVkIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBvZiB0aGUgbG9naWNhbCBibG9jayBvclxudGhlIGN1cnJlbnQgY29sdW1uIHBvc2l0aW9uLiBuIGlzIGFuIG9mZnNldC5cblxuVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCBmb3IgdXNlIHdoZW4gd3JpdGluZyBjdXN0b20gZGlzcGF0Y2ggZnVuY3Rpb25zLlxuXG5PdXRwdXQgaXMgc2VudCB0byAqb3V0KiB3aGljaCBtdXN0IGJlIGEgcHJldHR5IHByaW50aW5nIHdyaXRlci4iLCA6YXJnbGlzdHMgKFtyZWxhdGl2ZS10byBuXSl9LCA6c291cmNlICIoZGVmblxuIHBwcmludC1pbmRlbnRcbiBcIkNyZWF0ZSBhbiBpbmRlbnQgYXQgdGhpcyBwb2ludCBpbiB0aGUgcHJldHR5IHByaW50aW5nIHN0cmVhbS4gVGhpcyBkZWZpbmVzIGhvd1xcbmZvbGxvd2luZyBsaW5lcyBhcmUgaW5kZW50ZWQuIHJlbGF0aXZlLXRvIGNhbiBiZSBlaXRoZXIgOmJsb2NrIG9yIDpjdXJyZW50IGRlcGVuZGluZ1xcbndoZXRoZXIgdGhlIGluZGVudCBzaG91bGQgYmUgY29tcHV0ZWQgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBsb2dpY2FsIGJsb2NrIG9yXFxudGhlIGN1cnJlbnQgY29sdW1uIHBvc2l0aW9uLiBuIGlzIGFuIG9mZnNldC5cXG5cXG5UaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIGZvciB1c2Ugd2hlbiB3cml0aW5nIGN1c3RvbSBkaXNwYXRjaCBmdW5jdGlvbnMuXFxuXFxuT3V0cHV0IGlzIHNlbnQgdG8gKm91dCogd2hpY2ggbXVzdCBiZSBhIHByZXR0eSBwcmludGluZyB3cml0ZXIuXCJcbiBbcmVsYXRpdmUtdG8gbl1cbiAoY2hlY2stZW51bWVyYXRlZC1hcmcgcmVsYXRpdmUtdG8gI3s6YmxvY2sgOmN1cnJlbnR9KVxuIChpbmRlbnQgKm91dCogcmVsYXRpdmUtdG8gbikpXG4ifSB7OnN5bSAqcHJpbnQtcmFkaXgqLCA6bWV0YSB7OmRvYyAiUHJpbnQgYSByYWRpeCBzcGVjaWZpZXIgaW4gZnJvbnQgb2YgaW50ZWdlcnMgYW5kIHJhdGlvbmFscy4gSWYgKnByaW50LWJhc2UqIGlzIDIsIDgsXG5vciAxNiwgdGhlbiB0aGUgcmFkaXggc3BlY2lmaWVyIHVzZWQgaXMgI2IsICNvLCBvciAjeCwgcmVzcGVjdGl2ZWx5LiBPdGhlcndpc2UgdGhlXG5yYWRpeCBzcGVjaWZpZXIgaXMgaW4gdGhlIGZvcm0gI1hYciB3aGVyZSBYWCBpcyB0aGUgZGVjaW1hbCB2YWx1ZSBvZiAqcHJpbnQtYmFzZSogIn0sIDpzb3VyY2UgIihkZWYgKnByaW50LXJhZGl4KiBuaWwpXG4ifSB7OnN5bSBJUHJldHR5Rmx1c2gsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzICgtcHBmbHVzaCl9IHs6c3ltIGNsLWZvcm1hdCwgOm1ldGEgezpkb2MgIkFuIGltcGxlbWVudGF0aW9uIG9mIGEgQ29tbW9uIExpc3AgY29tcGF0aWJsZSBmb3JtYXQgZnVuY3Rpb24uIGNsLWZvcm1hdCBmb3JtYXRzIGl0c1xuYXJndW1lbnRzIHRvIGFuIG91dHB1dCBzdHJlYW0gb3Igc3RyaW5nIGJhc2VkIG9uIHRoZSBmb3JtYXQgY29udHJvbCBzdHJpbmcgZ2l2ZW4uIEl0XG5zdXBwb3J0cyBzb3BoaXN0aWNhdGVkIGZvcm1hdHRpbmcgb2Ygc3RydWN0dXJlZCBkYXRhLlxuXG5Xcml0ZXIgc2F0aXNmaWVzIElXcml0ZXIsIHRydWUgdG8gb3V0cHV0IHZpYSAqcHJpbnQtZm4qIG9yIG5pbCB0byBvdXRwdXRcbnRvIGEgc3RyaW5nLCBmb3JtYXQtaW4gaXMgdGhlIGZvcm1hdCBjb250cm9sIHN0cmluZyBhbmQgdGhlIHJlbWFpbmluZyBhcmd1bWVudHNcbmFyZSB0aGUgZGF0YSB0byBiZSBmb3JtYXR0ZWQuXG5cblRoZSBmb3JtYXQgY29udHJvbCBzdHJpbmcgaXMgYSBzdHJpbmcgdG8gYmUgb3V0cHV0IHdpdGggZW1iZWRkZWQgJ2Zvcm1hdCBkaXJlY3RpdmVzJ1xuZGVzY3JpYmluZyBob3cgdG8gZm9ybWF0IHRoZSB2YXJpb3VzIGFyZ3VtZW50cyBwYXNzZWQgaW4uXG5cbklmIHdyaXRlciBpcyBuaWwsIGNsLWZvcm1hdCByZXR1cm5zIHRoZSBmb3JtYXR0ZWQgcmVzdWx0IHN0cmluZy4gT3RoZXJ3aXNlLCBjbC1mb3JtYXRcbnJldHVybnMgbmlsLlxuXG5Gb3IgZXhhbXBsZTpcbiAobGV0IFtyZXN1bHRzIFs0NiAzOCAyMl1dXG4gICAgICAgIChjbC1mb3JtYXQgdHJ1ZSBcIlRoZXJlIH5bYXJlfjtpc346O2FyZX5dfjoqIH5kIHJlc3VsdH46cDogfnt+ZH5eLCB+fX4lXCJcbiAgICAgICAgICAgICAgICAgICAoY291bnQgcmVzdWx0cykgcmVzdWx0cykpXG5cblByaW50cyB2aWEgKnByaW50LWZuKjpcbiBUaGVyZSBhcmUgMyByZXN1bHRzOiA0NiwgMzgsIDIyXG5cbkRldGFpbGVkIGRvY3VtZW50YXRpb24gb24gZm9ybWF0IGNvbnRyb2wgc3RyaW5ncyBpcyBhdmFpbGFibGUgaW4gdGhlIFwiQ29tbW9uIExpc3AgdGhlXG5MYW5ndWFnZSwgMm5kIGVkaXRpb25cIiwgQ2hhcHRlciAyMiAoYXZhaWxhYmxlIG9ubGluZSBhdDpcbmh0dHA6Ly93d3cuY3MuY211LmVkdS9hZnMvY3MuY211LmVkdS9wcm9qZWN0L2FpLXJlcG9zaXRvcnkvYWkvaHRtbC9jbHRsL2NsbS9ub2RlMjAwLmh0bWwjU0VDVElPTjAwMjYzMzAwMDAwMDAwMDAwMDAwMClcbmFuZCBpbiB0aGUgQ29tbW9uIExpc3AgSHlwZXJTcGVjIGF0XG5odHRwOi8vd3d3Lmxpc3B3b3Jrcy5jb20vZG9jdW1lbnRhdGlvbi9IeXBlclNwZWMvQm9keS8yMl9jLmh0bSIsIDphcmdsaXN0cyAoW3dyaXRlciBmb3JtYXQtaW4gJiBhcmdzXSl9LCA6c291cmNlICIoZGVmblxuIGNsLWZvcm1hdFxuIFwiQW4gaW1wbGVtZW50YXRpb24gb2YgYSBDb21tb24gTGlzcCBjb21wYXRpYmxlIGZvcm1hdCBmdW5jdGlvbi4gY2wtZm9ybWF0IGZvcm1hdHMgaXRzXFxuYXJndW1lbnRzIHRvIGFuIG91dHB1dCBzdHJlYW0gb3Igc3RyaW5nIGJhc2VkIG9uIHRoZSBmb3JtYXQgY29udHJvbCBzdHJpbmcgZ2l2ZW4uIEl0XFxuc3VwcG9ydHMgc29waGlzdGljYXRlZCBmb3JtYXR0aW5nIG9mIHN0cnVjdHVyZWQgZGF0YS5cXG5cXG5Xcml0ZXIgc2F0aXNmaWVzIElXcml0ZXIsIHRydWUgdG8gb3V0cHV0IHZpYSAqcHJpbnQtZm4qIG9yIG5pbCB0byBvdXRwdXRcXG50byBhIHN0cmluZywgZm9ybWF0LWluIGlzIHRoZSBmb3JtYXQgY29udHJvbCBzdHJpbmcgYW5kIHRoZSByZW1haW5pbmcgYXJndW1lbnRzXFxuYXJlIHRoZSBkYXRhIHRvIGJlIGZvcm1hdHRlZC5cXG5cXG5UaGUgZm9ybWF0IGNvbnRyb2wgc3RyaW5nIGlzIGEgc3RyaW5nIHRvIGJlIG91dHB1dCB3aXRoIGVtYmVkZGVkICdmb3JtYXQgZGlyZWN0aXZlcydcXG5kZXNjcmliaW5nIGhvdyB0byBmb3JtYXQgdGhlIHZhcmlvdXMgYXJndW1lbnRzIHBhc3NlZCBpbi5cXG5cXG5JZiB3cml0ZXIgaXMgbmlsLCBjbC1mb3JtYXQgcmV0dXJucyB0aGUgZm9ybWF0dGVkIHJlc3VsdCBzdHJpbmcuIE90aGVyd2lzZSwgY2wtZm9ybWF0XFxucmV0dXJucyBuaWwuXFxuXFxuRm9yIGV4YW1wbGU6XFxuIChsZXQgW3Jlc3VsdHMgWzQ2IDM4IDIyXV1cXG4gICAgICAgIChjbC1mb3JtYXQgdHJ1ZSBcXFwiVGhlcmUgflthcmV+O2lzfjo7YXJlfl1+OiogfmQgcmVzdWx0fjpwOiB+e35kfl4sIH59fiVcXFwiXFxuICAgICAgICAgICAgICAgICAgIChjb3VudCByZXN1bHRzKSByZXN1bHRzKSlcXG5cXG5QcmludHMgdmlhICpwcmludC1mbio6XFxuIFRoZXJlIGFyZSAzIHJlc3VsdHM6IDQ2LCAzOCwgMjJcXG5cXG5EZXRhaWxlZCBkb2N1bWVudGF0aW9uIG9uIGZvcm1hdCBjb250cm9sIHN0cmluZ3MgaXMgYXZhaWxhYmxlIGluIHRoZSBcXFwiQ29tbW9uIExpc3AgdGhlXFxuTGFuZ3VhZ2UsIDJuZCBlZGl0aW9uXFxcIiwgQ2hhcHRlciAyMiAoYXZhaWxhYmxlIG9ubGluZSBhdDpcXG5odHRwOi8vd3d3LmNzLmNtdS5lZHUvYWZzL2NzLmNtdS5lZHUvcHJvamVjdC9haS1yZXBvc2l0b3J5L2FpL2h0bWwvY2x0bC9jbG0vbm9kZTIwMC5odG1sI1NFQ1RJT04wMDI2MzMwMDAwMDAwMDAwMDAwMDApXFxuYW5kIGluIHRoZSBDb21tb24gTGlzcCBIeXBlclNwZWMgYXRcXG5odHRwOi8vd3d3Lmxpc3B3b3Jrcy5jb20vZG9jdW1lbnRhdGlvbi9IeXBlclNwZWMvQm9keS8yMl9jLmh0bVwiXG4gezpzZWUtYWxzb1xuICBbW1wiaHR0cDovL3d3dy5jcy5jbXUuZWR1L2Fmcy9jcy5jbXUuZWR1L3Byb2plY3QvYWktcmVwb3NpdG9yeS9haS9odG1sL2NsdGwvY2xtL25vZGUyMDAuaHRtbCNTRUNUSU9OMDAyNjMzMDAwMDAwMDAwMDAwMDAwXCJcbiAgICBcIkNvbW1vbiBMaXNwIHRoZSBMYW5ndWFnZVwiXVxuICAgW1wiaHR0cDovL3d3dy5saXNwd29ya3MuY29tL2RvY3VtZW50YXRpb24vSHlwZXJTcGVjL0JvZHkvMjJfYy5odG1cIlxuICAgIFwiQ29tbW9uIExpc3AgSHlwZXJTcGVjXCJdXX1cbiBbd3JpdGVyIGZvcm1hdC1pbiAmIGFyZ3NdXG4gKGxldFxuICBbY29tcGlsZWQtZm9ybWF0XG4gICAoaWYgKHN0cmluZz8gZm9ybWF0LWluKSAoY29tcGlsZS1mb3JtYXQgZm9ybWF0LWluKSBmb3JtYXQtaW4pXG4gICBuYXZpZ2F0b3JcbiAgIChpbml0LW5hdmlnYXRvciBhcmdzKV1cbiAgKGV4ZWN1dGUtZm9ybWF0IHdyaXRlciBjb21waWxlZC1mb3JtYXQgbmF2aWdhdG9yKSkpXG4ifSB7OnN5bSAqcHJpbnQtbWlzZXItd2lkdGgqLCA6bWV0YSB7OmRvYyAiVGhlIGNvbHVtbiBhdCB3aGljaCB0byBlbnRlciBtaXNlciBzdHlsZS4gRGVwZW5kaW5nIG9uIHRoZSBkaXNwYXRjaCB0YWJsZSxcbm1pc2VyIHN0eWxlIGFkZCBuZXdsaW5lcyBpbiBtb3JlIHBsYWNlcyB0byB0cnkgdG8ga2VlcCBsaW5lcyBzaG9ydCBhbGxvd2luZyBmb3IgZnVydGhlclxubGV2ZWxzIG9mIG5lc3RpbmcuIn0sIDpzb3VyY2UgIihkZWYgKnByaW50LW1pc2VyLXdpZHRoKiA0MClcbiJ9IHs6c3ltIHdyaXRlLCA6bWV0YSB7OmRvYyAiV3JpdGUgYW4gb2JqZWN0IHN1YmplY3QgdG8gdGhlIGN1cnJlbnQgYmluZGluZ3Mgb2YgdGhlIHByaW50ZXIgY29udHJvbCB2YXJpYWJsZXMuXG5Vc2UgdGhlIGt3LWFyZ3MgYXJndW1lbnQgdG8gb3ZlcnJpZGUgaW5kaXZpZHVhbCB2YXJpYWJsZXMgZm9yIHRoaXMgY2FsbCAoYW5kIGFueVxucmVjdXJzaXZlIGNhbGxzKS4gUmV0dXJucyB0aGUgc3RyaW5nIHJlc3VsdCBpZiA6c3RyZWFtIGlzIG5pbCBvciBuaWwgb3RoZXJ3aXNlLlxuXG5UaGUgZm9sbG93aW5nIGtleXdvcmQgYXJndW1lbnRzIGNhbiBiZSBwYXNzZWQgd2l0aCB2YWx1ZXM6XG4gIEtleXdvcmQgICAgICAgICAgICAgIE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0IHZhbHVlXG4gIDpzdHJlYW0gICAgICAgICAgICAgIFdyaXRlciBmb3Igb3V0cHV0IG9yIG5pbCAgICAgICAgICAgICB0cnVlIChpbmRpY2F0ZXMgKm91dCopXG4gIDpiYXNlICAgICAgICAgICAgICAgIEJhc2UgdG8gdXNlIGZvciB3cml0aW5nIHJhdGlvbmFscyAgICBDdXJyZW50IHZhbHVlIG9mICpwcmludC1iYXNlKlxuICA6Y2lyY2xlKiAgICAgICAgICAgICBJZiB0cnVlLCBtYXJrIGNpcmN1bGFyIHN0cnVjdHVyZXMgICAgQ3VycmVudCB2YWx1ZSBvZiAqcHJpbnQtY2lyY2xlKlxuICA6bGVuZ3RoICAgICAgICAgICAgICBNYXhpbXVtIGVsZW1lbnRzIHRvIHNob3cgaW4gc3VibGlzdHMgQ3VycmVudCB2YWx1ZSBvZiAqcHJpbnQtbGVuZ3RoKlxuICA6bGV2ZWwgICAgICAgICAgICAgICBNYXhpbXVtIGRlcHRoICAgICAgICAgICAgICAgICAgICAgICAgQ3VycmVudCB2YWx1ZSBvZiAqcHJpbnQtbGV2ZWwqXG4gIDpsaW5lcyogICAgICAgICAgICAgIE1heGltdW0gbGluZXMgb2Ygb3V0cHV0ICAgICAgICAgICAgICBDdXJyZW50IHZhbHVlIG9mICpwcmludC1saW5lcypcbiAgOm1pc2VyLXdpZHRoICAgICAgICAgV2lkdGggdG8gZW50ZXIgbWlzZXIgbW9kZSAgICAgICAgICAgIEN1cnJlbnQgdmFsdWUgb2YgKnByaW50LW1pc2VyLXdpZHRoKlxuICA6ZGlzcGF0Y2ggICAgICAgICAgICBUaGUgcHJldHR5IHByaW50IGRpc3BhdGNoIGZ1bmN0aW9uICAgQ3VycmVudCB2YWx1ZSBvZiAqcHJpbnQtcHByaW50LWRpc3BhdGNoKlxuICA6cHJldHR5ICAgICAgICAgICAgICBJZiB0cnVlLCBkbyBwcmV0dHkgcHJpbnRpbmcgICAgICAgICAgQ3VycmVudCB2YWx1ZSBvZiAqcHJpbnQtcHJldHR5KlxuICA6cmFkaXggICAgICAgICAgICAgICBJZiB0cnVlLCBwcmVwZW5kIGEgcmFkaXggc3BlY2lmaWVyICAgQ3VycmVudCB2YWx1ZSBvZiAqcHJpbnQtcmFkaXgqXG4gIDpyZWFkYWJseSogICAgICAgICAgIElmIHRydWUsIHByaW50IHJlYWRhYmx5ICAgICAgICAgICAgICBDdXJyZW50IHZhbHVlIG9mICpwcmludC1yZWFkYWJseSpcbiAgOnJpZ2h0LW1hcmdpbiAgICAgICAgVGhlIGNvbHVtbiBmb3IgdGhlIHJpZ2h0IG1hcmdpbiAgICAgIEN1cnJlbnQgdmFsdWUgb2YgKnByaW50LXJpZ2h0LW1hcmdpbipcbiAgOnN1cHByZXNzLW5hbWVzcGFjZXMgSWYgdHJ1ZSwgbm8gbmFtZXNwYWNlcyBpbiBzeW1ib2xzICAgIEN1cnJlbnQgdmFsdWUgb2YgKnByaW50LXN1cHByZXNzLW5hbWVzcGFjZXMqXG5cbiAgKiA9IG5vdCB5ZXQgc3VwcG9ydGVkXG4iLCA6YXJnbGlzdHMgKFtvYmplY3QgJiBrdy1hcmdzXSl9LCA6c291cmNlICIoZGVmblxuIHdyaXRlXG4gXCJXcml0ZSBhbiBvYmplY3Qgc3ViamVjdCB0byB0aGUgY3VycmVudCBiaW5kaW5ncyBvZiB0aGUgcHJpbnRlciBjb250cm9sIHZhcmlhYmxlcy5cXG5Vc2UgdGhlIGt3LWFyZ3MgYXJndW1lbnQgdG8gb3ZlcnJpZGUgaW5kaXZpZHVhbCB2YXJpYWJsZXMgZm9yIHRoaXMgY2FsbCAoYW5kIGFueVxcbnJlY3Vyc2l2ZSBjYWxscykuIFJldHVybnMgdGhlIHN0cmluZyByZXN1bHQgaWYgOnN0cmVhbSBpcyBuaWwgb3IgbmlsIG90aGVyd2lzZS5cXG5cXG5UaGUgZm9sbG93aW5nIGtleXdvcmQgYXJndW1lbnRzIGNhbiBiZSBwYXNzZWQgd2l0aCB2YWx1ZXM6XFxuICBLZXl3b3JkICAgICAgICAgICAgICBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdCB2YWx1ZVxcbiAgOnN0cmVhbSAgICAgICAgICAgICAgV3JpdGVyIGZvciBvdXRwdXQgb3IgbmlsICAgICAgICAgICAgIHRydWUgKGluZGljYXRlcyAqb3V0KilcXG4gIDpiYXNlICAgICAgICAgICAgICAgIEJhc2UgdG8gdXNlIGZvciB3cml0aW5nIHJhdGlvbmFscyAgICBDdXJyZW50IHZhbHVlIG9mICpwcmludC1iYXNlKlxcbiAgOmNpcmNsZSogICAgICAgICAgICAgSWYgdHJ1ZSwgbWFyayBjaXJjdWxhciBzdHJ1Y3R1cmVzICAgIEN1cnJlbnQgdmFsdWUgb2YgKnByaW50LWNpcmNsZSpcXG4gIDpsZW5ndGggICAgICAgICAgICAgIE1heGltdW0gZWxlbWVudHMgdG8gc2hvdyBpbiBzdWJsaXN0cyBDdXJyZW50IHZhbHVlIG9mICpwcmludC1sZW5ndGgqXFxuICA6bGV2ZWwgICAgICAgICAgICAgICBNYXhpbXVtIGRlcHRoICAgICAgICAgICAgICAgICAgICAgICAgQ3VycmVudCB2YWx1ZSBvZiAqcHJpbnQtbGV2ZWwqXFxuICA6bGluZXMqICAgICAgICAgICAgICBNYXhpbXVtIGxpbmVzIG9mIG91dHB1dCAgICAgICAgICAgICAgQ3VycmVudCB2YWx1ZSBvZiAqcHJpbnQtbGluZXMqXFxuICA6bWlzZXItd2lkdGggICAgICAgICBXaWR0aCB0byBlbnRlciBtaXNlciBtb2RlICAgICAgICAgICAgQ3VycmVudCB2YWx1ZSBvZiAqcHJpbnQtbWlzZXItd2lkdGgqXFxuICA6ZGlzcGF0Y2ggICAgICAgICAgICBUaGUgcHJldHR5IHByaW50IGRpc3BhdGNoIGZ1bmN0aW9uICAgQ3VycmVudCB2YWx1ZSBvZiAqcHJpbnQtcHByaW50LWRpc3BhdGNoKlxcbiAgOnByZXR0eSAgICAgICAgICAgICAgSWYgdHJ1ZSwgZG8gcHJldHR5IHByaW50aW5nICAgICAgICAgIEN1cnJlbnQgdmFsdWUgb2YgKnByaW50LXByZXR0eSpcXG4gIDpyYWRpeCAgICAgICAgICAgICAgIElmIHRydWUsIHByZXBlbmQgYSByYWRpeCBzcGVjaWZpZXIgICBDdXJyZW50IHZhbHVlIG9mICpwcmludC1yYWRpeCpcXG4gIDpyZWFkYWJseSogICAgICAgICAgIElmIHRydWUsIHByaW50IHJlYWRhYmx5ICAgICAgICAgICAgICBDdXJyZW50IHZhbHVlIG9mICpwcmludC1yZWFkYWJseSpcXG4gIDpyaWdodC1tYXJnaW4gICAgICAgIFRoZSBjb2x1bW4gZm9yIHRoZSByaWdodCBtYXJnaW4gICAgICBDdXJyZW50IHZhbHVlIG9mICpwcmludC1yaWdodC1tYXJnaW4qXFxuICA6c3VwcHJlc3MtbmFtZXNwYWNlcyBJZiB0cnVlLCBubyBuYW1lc3BhY2VzIGluIHN5bWJvbHMgICAgQ3VycmVudCB2YWx1ZSBvZiAqcHJpbnQtc3VwcHJlc3MtbmFtZXNwYWNlcypcXG5cXG4gICogPSBub3QgeWV0IHN1cHBvcnRlZFxcblwiXG4gW29iamVjdCAmIGt3LWFyZ3NdXG4gKGxldFxuICBbb3B0aW9ucyAobWVyZ2UgezpzdHJlYW0gdHJ1ZX0gKGFwcGx5IGhhc2gtbWFwIGt3LWFyZ3MpKV1cbiAgKGJpbmRpbmdcbiAgIFtjbGpzLnBwcmludC8qcHJpbnQtYmFzZSpcbiAgICAoOmJhc2Ugb3B0aW9ucyBjbGpzLnBwcmludC8qcHJpbnQtYmFzZSopXG4gICAgY2xqcy5wcHJpbnQvKnByaW50LWNpcmNsZSpcbiAgICAoOmNpcmNsZSBvcHRpb25zIGNsanMucHByaW50LypwcmludC1jaXJjbGUqKVxuICAgIGNsanMuY29yZS8qcHJpbnQtbGVuZ3RoKlxuICAgICg6bGVuZ3RoIG9wdGlvbnMgY2xqcy5jb3JlLypwcmludC1sZW5ndGgqKVxuICAgIGNsanMuY29yZS8qcHJpbnQtbGV2ZWwqXG4gICAgKDpsZXZlbCBvcHRpb25zIGNsanMuY29yZS8qcHJpbnQtbGV2ZWwqKVxuICAgIGNsanMucHByaW50LypwcmludC1saW5lcypcbiAgICAoOmxpbmVzIG9wdGlvbnMgY2xqcy5wcHJpbnQvKnByaW50LWxpbmVzKilcbiAgICBjbGpzLnBwcmludC8qcHJpbnQtbWlzZXItd2lkdGgqXG4gICAgKDptaXNlci13aWR0aCBvcHRpb25zIGNsanMucHByaW50LypwcmludC1taXNlci13aWR0aCopXG4gICAgY2xqcy5wcHJpbnQvKnByaW50LXBwcmludC1kaXNwYXRjaCpcbiAgICAoOmRpc3BhdGNoIG9wdGlvbnMgY2xqcy5wcHJpbnQvKnByaW50LXBwcmludC1kaXNwYXRjaCopXG4gICAgY2xqcy5wcHJpbnQvKnByaW50LXByZXR0eSpcbiAgICAoOnByZXR0eSBvcHRpb25zIGNsanMucHByaW50LypwcmludC1wcmV0dHkqKVxuICAgIGNsanMucHByaW50LypwcmludC1yYWRpeCpcbiAgICAoOnJhZGl4IG9wdGlvbnMgY2xqcy5wcHJpbnQvKnByaW50LXJhZGl4KilcbiAgICBjbGpzLmNvcmUvKnByaW50LXJlYWRhYmx5KlxuICAgICg6cmVhZGFibHkgb3B0aW9ucyBjbGpzLmNvcmUvKnByaW50LXJlYWRhYmx5KilcbiAgICBjbGpzLnBwcmludC8qcHJpbnQtcmlnaHQtbWFyZ2luKlxuICAgICg6cmlnaHQtbWFyZ2luIG9wdGlvbnMgY2xqcy5wcHJpbnQvKnByaW50LXJpZ2h0LW1hcmdpbiopXG4gICAgY2xqcy5wcHJpbnQvKnByaW50LXN1cHByZXNzLW5hbWVzcGFjZXMqXG4gICAgKDpzdXBwcmVzcy1uYW1lc3BhY2VzXG4gICAgIG9wdGlvbnNcbiAgICAgY2xqcy5wcHJpbnQvKnByaW50LXN1cHByZXNzLW5hbWVzcGFjZXMqKV1cbiAgIChiaW5kaW5nXG4gICAgW11cbiAgICAobGV0XG4gICAgIFtzYlxuICAgICAgKFN0cmluZ0J1ZmZlci4pXG4gICAgICBvcHR2YWxcbiAgICAgIChpZiAoY29udGFpbnM/IG9wdGlvbnMgOnN0cmVhbSkgKDpzdHJlYW0gb3B0aW9ucykgdHJ1ZSlcbiAgICAgIGJhc2Utd3JpdGVyXG4gICAgICAoaWZcbiAgICAgICAob3IgKHRydWU/IG9wdHZhbCkgKG5pbD8gb3B0dmFsKSlcbiAgICAgICAoU3RyaW5nQnVmZmVyV3JpdGVyLiBzYilcbiAgICAgICBvcHR2YWwpXVxuICAgICAoaWZcbiAgICAgICpwcmludC1wcmV0dHkqXG4gICAgICAod2l0aC1wcmV0dHktd3JpdGVyIGJhc2Utd3JpdGVyICh3cml0ZS1vdXQgb2JqZWN0KSlcbiAgICAgIChiaW5kaW5nIFsqb3V0KiBiYXNlLXdyaXRlcl0gKHByIG9iamVjdCkpKVxuICAgICAoaWYgKHRydWU/IG9wdHZhbCkgKHN0cmluZy1wcmludCAoc3RyIHNiKSkpXG4gICAgIChpZiAobmlsPyBvcHR2YWwpIChzdHIgc2IpKSkpKSkpXG4ifSB7OnN5bSAtcHBmbHVzaCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwcF0pfSwgOnByb3RvY29sIElQcmV0dHlGbHVzaH0gezpzeW0gKnByaW50LXJpZ2h0LW1hcmdpbiosIDptZXRhIHs6ZG9jICJQcmV0dHkgcHJpbnRpbmcgd2lsbCB0cnkgdG8gYXZvaWQgYW55dGhpbmcgZ29pbmcgYmV5b25kIHRoaXMgY29sdW1uLlxuU2V0IGl0IHRvIG5pbCB0byBoYXZlIHBwcmludCBsZXQgdGhlIGxpbmUgYmUgYXJiaXRyYXJpbHkgbG9uZy4gVGhpcyB3aWxsIGlnbm9yZSBhbGxcbm5vbi1tYW5kYXRvcnkgbmV3bGluZXMuIn0sIDpzb3VyY2UgIihkZWYgKnByaW50LXJpZ2h0LW1hcmdpbiogNzIpXG4ifSB7OnN5bSB3cml0ZS1vdXQsIDptZXRhIHs6ZG9jICJXcml0ZSBhbiBvYmplY3QgdG8gKm91dCogc3ViamVjdCB0byB0aGUgY3VycmVudCBiaW5kaW5ncyBvZiB0aGUgcHJpbnRlciBjb250cm9sXG52YXJpYWJsZXMuIFVzZSB0aGUga3ctYXJncyBhcmd1bWVudCB0byBvdmVycmlkZSBpbmRpdmlkdWFsIHZhcmlhYmxlcyBmb3IgdGhpcyBjYWxsIChhbmRcbmFueSByZWN1cnNpdmUgY2FsbHMpLlxuXG4qb3V0KiBtdXN0IGJlIGEgUHJldHR5V3JpdGVyIGlmIHByZXR0eSBwcmludGluZyBpcyBlbmFibGVkLiBUaGlzIGlzIHRoZSByZXNwb25zaWJpbGl0eVxub2YgdGhlIGNhbGxlci5cblxuVGhpcyBtZXRob2QgaXMgcHJpbWFyaWx5IGludGVuZGVkIGZvciB1c2UgYnkgcHJldHR5IHByaW50IGRpc3BhdGNoIGZ1bmN0aW9ucyB0aGF0XG5hbHJlYWR5IGtub3cgdGhhdCB0aGUgcHJldHR5IHByaW50ZXIgd2lsbCBoYXZlIHNldCB1cCB0aGVpciBlbnZpcm9ubWVudCBhcHByb3ByaWF0ZWx5LlxuTm9ybWFsIGxpYnJhcnkgY2xpZW50cyBzaG91bGQgdXNlIHRoZSBzdGFuZGFyZCBcIndyaXRlXCIgaW50ZXJmYWNlLiAiLCA6YXJnbGlzdHMgKFtvYmplY3RdKX0sIDpzb3VyY2UgIihkZWZuXG4gd3JpdGUtb3V0XG4gXCJXcml0ZSBhbiBvYmplY3QgdG8gKm91dCogc3ViamVjdCB0byB0aGUgY3VycmVudCBiaW5kaW5ncyBvZiB0aGUgcHJpbnRlciBjb250cm9sXFxudmFyaWFibGVzLiBVc2UgdGhlIGt3LWFyZ3MgYXJndW1lbnQgdG8gb3ZlcnJpZGUgaW5kaXZpZHVhbCB2YXJpYWJsZXMgZm9yIHRoaXMgY2FsbCAoYW5kXFxuYW55IHJlY3Vyc2l2ZSBjYWxscykuXFxuXFxuKm91dCogbXVzdCBiZSBhIFByZXR0eVdyaXRlciBpZiBwcmV0dHkgcHJpbnRpbmcgaXMgZW5hYmxlZC4gVGhpcyBpcyB0aGUgcmVzcG9uc2liaWxpdHlcXG5vZiB0aGUgY2FsbGVyLlxcblxcblRoaXMgbWV0aG9kIGlzIHByaW1hcmlseSBpbnRlbmRlZCBmb3IgdXNlIGJ5IHByZXR0eSBwcmludCBkaXNwYXRjaCBmdW5jdGlvbnMgdGhhdFxcbmFscmVhZHkga25vdyB0aGF0IHRoZSBwcmV0dHkgcHJpbnRlciB3aWxsIGhhdmUgc2V0IHVwIHRoZWlyIGVudmlyb25tZW50IGFwcHJvcHJpYXRlbHkuXFxuTm9ybWFsIGxpYnJhcnkgY2xpZW50cyBzaG91bGQgdXNlIHRoZSBzdGFuZGFyZCBcXFwid3JpdGVcXFwiIGludGVyZmFjZS4gXCJcbiBbb2JqZWN0XVxuIChsZXRcbiAgW2xlbmd0aC1yZWFjaGVkXG4gICAoYW5kXG4gICAgKmN1cnJlbnQtbGVuZ3RoKlxuICAgICpwcmludC1sZW5ndGgqXG4gICAgKD49ICpjdXJyZW50LWxlbmd0aCogKnByaW50LWxlbmd0aCopKV1cbiAgKGlmLW5vdFxuICAgKnByaW50LXByZXR0eSpcbiAgIChwciBvYmplY3QpXG4gICAoaWZcbiAgICBsZW5ndGgtcmVhY2hlZFxuICAgICgtd3JpdGUgKm91dCogXCIuLi5cIilcbiAgICAoZG9cbiAgICAgKGlmXG4gICAgICAqY3VycmVudC1sZW5ndGgqXG4gICAgICAoc2V0ISAqY3VycmVudC1sZW5ndGgqIChpbmMgKmN1cnJlbnQtbGVuZ3RoKikpKVxuICAgICAoKnByaW50LXBwcmludC1kaXNwYXRjaCogb2JqZWN0KSkpKVxuICBsZW5ndGgtcmVhY2hlZCkpXG4ifSB7OnN5bSAqcHJpbnQtYmFzZSosIDptZXRhIHs6ZG9jICJUaGUgYmFzZSB0byB1c2UgZm9yIHByaW50aW5nIGludGVnZXJzIGFuZCByYXRpb25hbHMuIn0sIDpzb3VyY2UgIihkZWYgKnByaW50LWJhc2UqIDEwKVxuIn0pLCBpZ2x1LmNvcmUgKHs6c3ltIGlnbHUtPmdsc2wsIDptZXRhIHs6ZG9jICJDb252ZXJ0cyBhbiBpZ2x1IG1hcCBpbnRvIGEgR0xTTCBzdHJpbmcuIFRoZSBzZWNvbmQgYXJpdHkgaXMgb25seSBmb3IgYmFja3dhcmRzXG4gIGNvbXBhdGliaWxpdHkgYW5kIHNob3VsZCBub3QgYmUgdXNlZC4iLCA6YXJnbGlzdHMgW1tzaGFkZXJdIFtzaGFkZXItdHlwZSBzaGFkZXJdXX0sIDpzb3VyY2UgIihkZWZuXG4gaWdsdS0+Z2xzbFxuIFwiQ29udmVydHMgYW4gaWdsdSBtYXAgaW50byBhIEdMU0wgc3RyaW5nLiBUaGUgc2Vjb25kIGFyaXR5IGlzIG9ubHkgZm9yIGJhY2t3YXJkc1xcbiAgY29tcGF0aWJpbGl0eSBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkLlwiXG4gKFtzaGFkZXJdICgtPiBzaGFkZXIgcGFyc2UvcGFyc2UgZ2xzbC9pZ2x1LT5nbHNsKSlcbiAoW3NoYWRlci10eXBlIHNoYWRlcl1cbiAgKC0+XG4gICAocmVkdWNlLWt2XG4gICAgKGZuXG4gICAgIFtzaGFkZXIgb2xkLWtleSBuZXcta2V5XVxuICAgICAobGV0XG4gICAgICBbY29tYmluZWQtdmFscyAobWVyZ2UgKG5ldy1rZXkgc2hhZGVyKSAob2xkLWtleSBzaGFkZXIpKV1cbiAgICAgIChjb25kLT5cbiAgICAgICAoZGlzc29jIHNoYWRlciBvbGQta2V5KVxuICAgICAgIChzZXEgY29tYmluZWQtdmFscylcbiAgICAgICAoYXNzb2MgbmV3LWtleSBjb21iaW5lZC12YWxzKSkpKVxuICAgIHNoYWRlclxuICAgIChjYXNlXG4gICAgIHNoYWRlci10eXBlXG4gICAgIDp2ZXJ0ZXhcbiAgICAgezphdHRyaWJ1dGVzIDppbnB1dHMsIDp2YXJ5aW5ncyA6b3V0cHV0c31cbiAgICAgOmZyYWdtZW50XG4gICAgIHs6dmFyeWluZ3MgOmlucHV0c30pKVxuICAgcGFyc2UvcGFyc2VcbiAgIGdsc2wvaWdsdS0+Z2xzbCkpKVxuIn0pLCBydW0udXRpbCAoezpzeW0gY29sbGVjdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtrZXkgbWl4aW5zXSl9LCA6c291cmNlICIoZGVmbiBjb2xsZWN0IFtrZXkgbWl4aW5zXSAoaW50byBbXSAoa2VlcCAoZm4gW21dIChnZXQgbSBrZXkpKSkgbWl4aW5zKSlcbiJ9IHs6c3ltIGNvbGxlY3QqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2tleXMgbWl4aW5zXSl9LCA6c291cmNlICIoZGVmblxuIGNvbGxlY3QqXG4gW2tleXMgbWl4aW5zXVxuIChpbnRvIFtdIChtYXBjYXQgKGZuIFttXSAoa2VlcCAoZm4gW2tdIChnZXQgbSBrKSkga2V5cykpKSBtaXhpbnMpKVxuIn0gezpzeW0gY2FsbC1hbGwsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3RhdGUgZm5zICYgYXJnc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBjYWxsLWFsbFxuIFtzdGF0ZSBmbnMgJiBhcmdzXVxuIChyZWR1Y2UgKGZuIFtzdGF0ZSBmbl0gKGFwcGx5IGZuIHN0YXRlIGFyZ3MpKSBzdGF0ZSBmbnMpKVxuIn0pLCBwbGF5LWNsamMuZ2wuZXhhbXBsZS1kYXRhICh7OnN5bSBhZHZhbmNlZC12ZXJ0ZXgtc2hhZGVyLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIGFkdmFuY2VkLXZlcnRleC1zaGFkZXJcbiB7OnVuaWZvcm1zXG4gICd7dV93b3JsZFZpZXdQcm9qZWN0aW9uIG1hdDQsXG4gICAgdV9saWdodFdvcmxkUG9zIHZlYzMsXG4gICAgdV93b3JsZCBtYXQ0LFxuICAgIHVfdmlld0ludmVyc2UgbWF0NCxcbiAgICB1X3dvcmxkSW52ZXJzZVRyYW5zcG9zZSBtYXQ0fSxcbiAgOmlucHV0cyAne2FfcG9zaXRpb24gdmVjNCwgYV9ub3JtYWwgdmVjMywgYV90ZXhDb29yZCB2ZWMyfSxcbiAgOm91dHB1dHNcbiAgJ3t2X3Bvc2l0aW9uIHZlYzQsXG4gICAgdl90ZXhDb29yZCB2ZWMyLFxuICAgIHZfbm9ybWFsIHZlYzMsXG4gICAgdl9zdXJmYWNlVG9MaWdodCB2ZWMzLFxuICAgIHZfc3VyZmFjZVRvVmlldyB2ZWMzfSxcbiAgOnNpZ25hdHVyZXMgJ3ttYWluIChbXSB2b2lkKX0sXG4gIDpmdW5jdGlvbnNcbiAgJ3ttYWluXG4gICAgKFtdXG4gICAgICg9IHZfdGV4Q29vcmQgYV90ZXhDb29yZClcbiAgICAgKD0gdl9wb3NpdGlvbiAoKiB1X3dvcmxkVmlld1Byb2plY3Rpb24gYV9wb3NpdGlvbikpXG4gICAgICg9IHZfbm9ybWFsICgueHl6ICgqIHVfd29ybGRJbnZlcnNlVHJhbnNwb3NlICh2ZWM0IGFfbm9ybWFsIDApKSkpXG4gICAgICg9XG4gICAgICB2X3N1cmZhY2VUb0xpZ2h0XG4gICAgICAoLSB1X2xpZ2h0V29ybGRQb3MgKC54eXogKCogdV93b3JsZCBhX3Bvc2l0aW9uKSkpKVxuICAgICAoPVxuICAgICAgdl9zdXJmYWNlVG9WaWV3XG4gICAgICAoLnh5eiAoLSBbdV92aWV3SW52ZXJzZSAzXSAoKiB1X3dvcmxkIGFfcG9zaXRpb24pKSkpXG4gICAgICg9IGdsX1Bvc2l0aW9uIHZfcG9zaXRpb24pKX19KVxuIn0gezpzeW0gZi0zZCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBmLTNkXG4gWzBcbiAgMFxuICAwXG4gIDBcbiAgMTUwXG4gIDBcbiAgMzBcbiAgMFxuICAwXG4gIDBcbiAgMTUwXG4gIDBcbiAgMzBcbiAgMTUwXG4gIDBcbiAgMzBcbiAgMFxuICAwXG4gIDMwXG4gIDBcbiAgMFxuICAzMFxuICAzMFxuICAwXG4gIDEwMFxuICAwXG4gIDBcbiAgMzBcbiAgMzBcbiAgMFxuICAxMDBcbiAgMzBcbiAgMFxuICAxMDBcbiAgMFxuICAwXG4gIDMwXG4gIDYwXG4gIDBcbiAgMzBcbiAgOTBcbiAgMFxuICA2N1xuICA2MFxuICAwXG4gIDMwXG4gIDkwXG4gIDBcbiAgNjdcbiAgOTBcbiAgMFxuICA2N1xuICA2MFxuICAwXG4gIDBcbiAgMFxuICAzMFxuICAzMFxuICAwXG4gIDMwXG4gIDBcbiAgMTUwXG4gIDMwXG4gIDBcbiAgMTUwXG4gIDMwXG4gIDMwXG4gIDBcbiAgMzBcbiAgMzBcbiAgMTUwXG4gIDMwXG4gIDMwXG4gIDBcbiAgMzBcbiAgMTAwXG4gIDBcbiAgMzBcbiAgMzBcbiAgMzBcbiAgMzBcbiAgMzBcbiAgMzBcbiAgMzBcbiAgMTAwXG4gIDBcbiAgMzBcbiAgMTAwXG4gIDMwXG4gIDMwXG4gIDMwXG4gIDYwXG4gIDMwXG4gIDY3XG4gIDYwXG4gIDMwXG4gIDMwXG4gIDkwXG4gIDMwXG4gIDMwXG4gIDkwXG4gIDMwXG4gIDY3XG4gIDYwXG4gIDMwXG4gIDY3XG4gIDkwXG4gIDMwXG4gIDBcbiAgMFxuICAwXG4gIDEwMFxuICAwXG4gIDBcbiAgMTAwXG4gIDBcbiAgMzBcbiAgMFxuICAwXG4gIDBcbiAgMTAwXG4gIDBcbiAgMzBcbiAgMFxuICAwXG4gIDMwXG4gIDEwMFxuICAwXG4gIDBcbiAgMTAwXG4gIDMwXG4gIDBcbiAgMTAwXG4gIDMwXG4gIDMwXG4gIDEwMFxuICAwXG4gIDBcbiAgMTAwXG4gIDMwXG4gIDMwXG4gIDEwMFxuICAwXG4gIDMwXG4gIDMwXG4gIDMwXG4gIDBcbiAgMzBcbiAgMzBcbiAgMzBcbiAgMTAwXG4gIDMwXG4gIDMwXG4gIDMwXG4gIDMwXG4gIDBcbiAgMTAwXG4gIDMwXG4gIDMwXG4gIDEwMFxuICAzMFxuICAwXG4gIDMwXG4gIDMwXG4gIDBcbiAgMzBcbiAgNjBcbiAgMzBcbiAgMzBcbiAgMzBcbiAgMzBcbiAgMzBcbiAgMzBcbiAgMFxuICAzMFxuICA2MFxuICAwXG4gIDMwXG4gIDYwXG4gIDMwXG4gIDMwXG4gIDYwXG4gIDBcbiAgNjdcbiAgNjBcbiAgMzBcbiAgMzBcbiAgNjBcbiAgMzBcbiAgMzBcbiAgNjBcbiAgMFxuICA2N1xuICA2MFxuICAwXG4gIDY3XG4gIDYwXG4gIDMwXG4gIDY3XG4gIDYwXG4gIDBcbiAgNjdcbiAgOTBcbiAgMzBcbiAgNjdcbiAgNjBcbiAgMzBcbiAgNjdcbiAgNjBcbiAgMFxuICA2N1xuICA5MFxuICAwXG4gIDY3XG4gIDkwXG4gIDMwXG4gIDMwXG4gIDkwXG4gIDBcbiAgMzBcbiAgOTBcbiAgMzBcbiAgNjdcbiAgOTBcbiAgMzBcbiAgMzBcbiAgOTBcbiAgMFxuICA2N1xuICA5MFxuICAzMFxuICA2N1xuICA5MFxuICAwXG4gIDMwXG4gIDkwXG4gIDBcbiAgMzBcbiAgMTUwXG4gIDMwXG4gIDMwXG4gIDkwXG4gIDMwXG4gIDMwXG4gIDkwXG4gIDBcbiAgMzBcbiAgMTUwXG4gIDBcbiAgMzBcbiAgMTUwXG4gIDMwXG4gIDBcbiAgMTUwXG4gIDBcbiAgMFxuICAxNTBcbiAgMzBcbiAgMzBcbiAgMTUwXG4gIDMwXG4gIDBcbiAgMTUwXG4gIDBcbiAgMzBcbiAgMTUwXG4gIDMwXG4gIDMwXG4gIDE1MFxuICAwXG4gIDBcbiAgMFxuICAwXG4gIDBcbiAgMFxuICAzMFxuICAwXG4gIDE1MFxuICAzMFxuICAwXG4gIDBcbiAgMFxuICAwXG4gIDE1MFxuICAzMFxuICAwXG4gIDE1MFxuICAwXSlcbiJ9IHs6c3ltIHRleHR1cmUtZnJhZ21lbnQtc2hhZGVyLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIHRleHR1cmUtZnJhZ21lbnQtc2hhZGVyXG4gezpwcmVjaXNpb24gXCJtZWRpdW1wIGZsb2F0XCIsXG4gIDp1bmlmb3JtcyAne3VfdGV4dHVyZSBzYW1wbGVyMkR9LFxuICA6aW5wdXRzICd7dl90ZXhjb29yZCB2ZWMyfSxcbiAgOm91dHB1dHMgJ3tvdXRDb2xvciB2ZWM0fSxcbiAgOnNpZ25hdHVyZXMgJ3ttYWluIChbXSB2b2lkKX0sXG4gIDpmdW5jdGlvbnMgJ3ttYWluIChbXSAoPSBvdXRDb2xvciAodGV4dHVyZSB1X3RleHR1cmUgdl90ZXhjb29yZCkpKX19KVxuIn0gezpzeW0gZi0yZCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBmLTJkXG4gWzBcbiAgMFxuICAzMFxuICAwXG4gIDBcbiAgMTUwXG4gIDBcbiAgMTUwXG4gIDMwXG4gIDBcbiAgMzBcbiAgMTUwXG4gIDMwXG4gIDBcbiAgMTAwXG4gIDBcbiAgMzBcbiAgMzBcbiAgMzBcbiAgMzBcbiAgMTAwXG4gIDBcbiAgMTAwXG4gIDMwXG4gIDMwXG4gIDYwXG4gIDY3XG4gIDYwXG4gIDMwXG4gIDkwXG4gIDMwXG4gIDkwXG4gIDY3XG4gIDYwXG4gIDY3XG4gIDkwXSlcbiJ9IHs6c3ltIGYtdGV4Y29vcmRzLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIGYtdGV4Y29vcmRzXG4gWzBcbiAgMFxuICAwXG4gIDFcbiAgMVxuICAwXG4gIDBcbiAgMVxuICAxXG4gIDFcbiAgMVxuICAwXG4gIDBcbiAgMFxuICAwXG4gIDFcbiAgMVxuICAwXG4gIDBcbiAgMVxuICAxXG4gIDFcbiAgMVxuICAwXG4gIDBcbiAgMFxuICAwXG4gIDFcbiAgMVxuICAwXG4gIDBcbiAgMVxuICAxXG4gIDFcbiAgMVxuICAwXG4gIDBcbiAgMFxuICAxXG4gIDBcbiAgMFxuICAxXG4gIDBcbiAgMVxuICAxXG4gIDBcbiAgMVxuICAxXG4gIDBcbiAgMFxuICAxXG4gIDBcbiAgMFxuICAxXG4gIDBcbiAgMVxuICAxXG4gIDBcbiAgMVxuICAxXG4gIDBcbiAgMFxuICAxXG4gIDBcbiAgMFxuICAxXG4gIDBcbiAgMVxuICAxXG4gIDBcbiAgMVxuICAxXG4gIDBcbiAgMFxuICAxXG4gIDBcbiAgMVxuICAxXG4gIDBcbiAgMFxuICAxXG4gIDFcbiAgMFxuICAxXG4gIDBcbiAgMFxuICAxXG4gIDBcbiAgMVxuICAxXG4gIDBcbiAgMFxuICAxXG4gIDFcbiAgMFxuICAxXG4gIDBcbiAgMFxuICAwXG4gIDFcbiAgMVxuICAxXG4gIDBcbiAgMFxuICAxXG4gIDFcbiAgMVxuICAwXG4gIDBcbiAgMFxuICAxXG4gIDFcbiAgMFxuICAxXG4gIDBcbiAgMFxuICAxXG4gIDBcbiAgMVxuICAxXG4gIDBcbiAgMFxuICAxXG4gIDFcbiAgMFxuICAxXG4gIDBcbiAgMFxuICAxXG4gIDBcbiAgMVxuICAxXG4gIDBcbiAgMFxuICAxXG4gIDFcbiAgMFxuICAxXG4gIDBcbiAgMFxuICAxXG4gIDBcbiAgMVxuICAxXG4gIDBcbiAgMFxuICAwXG4gIDFcbiAgMVxuICAxXG4gIDBcbiAgMFxuICAxXG4gIDFcbiAgMVxuICAwXG4gIDBcbiAgMFxuICAxXG4gIDFcbiAgMFxuICAxXG4gIDBcbiAgMFxuICAxXG4gIDBcbiAgMVxuICAxXG4gIDBcbiAgMFxuICAwXG4gIDFcbiAgMVxuICAxXG4gIDBcbiAgMFxuICAxXG4gIDFcbiAgMVxuICAwXG4gIDBcbiAgMFxuICAwXG4gIDFcbiAgMVxuICAxXG4gIDBcbiAgMFxuICAxXG4gIDFcbiAgMVxuICAwXSlcbiJ9IHs6c3ltIGYtM2QtY29sb3JzLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIGYtM2QtY29sb3JzXG4gWzIwMFxuICA3MFxuICAxMjBcbiAgMjAwXG4gIDcwXG4gIDEyMFxuICAyMDBcbiAgNzBcbiAgMTIwXG4gIDIwMFxuICA3MFxuICAxMjBcbiAgMjAwXG4gIDcwXG4gIDEyMFxuICAyMDBcbiAgNzBcbiAgMTIwXG4gIDIwMFxuICA3MFxuICAxMjBcbiAgMjAwXG4gIDcwXG4gIDEyMFxuICAyMDBcbiAgNzBcbiAgMTIwXG4gIDIwMFxuICA3MFxuICAxMjBcbiAgMjAwXG4gIDcwXG4gIDEyMFxuICAyMDBcbiAgNzBcbiAgMTIwXG4gIDIwMFxuICA3MFxuICAxMjBcbiAgMjAwXG4gIDcwXG4gIDEyMFxuICAyMDBcbiAgNzBcbiAgMTIwXG4gIDIwMFxuICA3MFxuICAxMjBcbiAgMjAwXG4gIDcwXG4gIDEyMFxuICAyMDBcbiAgNzBcbiAgMTIwXG4gIDgwXG4gIDcwXG4gIDIwMFxuICA4MFxuICA3MFxuICAyMDBcbiAgODBcbiAgNzBcbiAgMjAwXG4gIDgwXG4gIDcwXG4gIDIwMFxuICA4MFxuICA3MFxuICAyMDBcbiAgODBcbiAgNzBcbiAgMjAwXG4gIDgwXG4gIDcwXG4gIDIwMFxuICA4MFxuICA3MFxuICAyMDBcbiAgODBcbiAgNzBcbiAgMjAwXG4gIDgwXG4gIDcwXG4gIDIwMFxuICA4MFxuICA3MFxuICAyMDBcbiAgODBcbiAgNzBcbiAgMjAwXG4gIDgwXG4gIDcwXG4gIDIwMFxuICA4MFxuICA3MFxuICAyMDBcbiAgODBcbiAgNzBcbiAgMjAwXG4gIDgwXG4gIDcwXG4gIDIwMFxuICA4MFxuICA3MFxuICAyMDBcbiAgODBcbiAgNzBcbiAgMjAwXG4gIDcwXG4gIDIwMFxuICAyMTBcbiAgNzBcbiAgMjAwXG4gIDIxMFxuICA3MFxuICAyMDBcbiAgMjEwXG4gIDcwXG4gIDIwMFxuICAyMTBcbiAgNzBcbiAgMjAwXG4gIDIxMFxuICA3MFxuICAyMDBcbiAgMjEwXG4gIDIwMFxuICAyMDBcbiAgNzBcbiAgMjAwXG4gIDIwMFxuICA3MFxuICAyMDBcbiAgMjAwXG4gIDcwXG4gIDIwMFxuICAyMDBcbiAgNzBcbiAgMjAwXG4gIDIwMFxuICA3MFxuICAyMDBcbiAgMjAwXG4gIDcwXG4gIDIxMFxuICAxMDBcbiAgNzBcbiAgMjEwXG4gIDEwMFxuICA3MFxuICAyMTBcbiAgMTAwXG4gIDcwXG4gIDIxMFxuICAxMDBcbiAgNzBcbiAgMjEwXG4gIDEwMFxuICA3MFxuICAyMTBcbiAgMTAwXG4gIDcwXG4gIDIxMFxuICAxNjBcbiAgNzBcbiAgMjEwXG4gIDE2MFxuICA3MFxuICAyMTBcbiAgMTYwXG4gIDcwXG4gIDIxMFxuICAxNjBcbiAgNzBcbiAgMjEwXG4gIDE2MFxuICA3MFxuICAyMTBcbiAgMTYwXG4gIDcwXG4gIDcwXG4gIDE4MFxuICAyMTBcbiAgNzBcbiAgMTgwXG4gIDIxMFxuICA3MFxuICAxODBcbiAgMjEwXG4gIDcwXG4gIDE4MFxuICAyMTBcbiAgNzBcbiAgMTgwXG4gIDIxMFxuICA3MFxuICAxODBcbiAgMjEwXG4gIDEwMFxuICA3MFxuICAyMTBcbiAgMTAwXG4gIDcwXG4gIDIxMFxuICAxMDBcbiAgNzBcbiAgMjEwXG4gIDEwMFxuICA3MFxuICAyMTBcbiAgMTAwXG4gIDcwXG4gIDIxMFxuICAxMDBcbiAgNzBcbiAgMjEwXG4gIDc2XG4gIDIxMFxuICAxMDBcbiAgNzZcbiAgMjEwXG4gIDEwMFxuICA3NlxuICAyMTBcbiAgMTAwXG4gIDc2XG4gIDIxMFxuICAxMDBcbiAgNzZcbiAgMjEwXG4gIDEwMFxuICA3NlxuICAyMTBcbiAgMTAwXG4gIDE0MFxuICAyMTBcbiAgODBcbiAgMTQwXG4gIDIxMFxuICA4MFxuICAxNDBcbiAgMjEwXG4gIDgwXG4gIDE0MFxuICAyMTBcbiAgODBcbiAgMTQwXG4gIDIxMFxuICA4MFxuICAxNDBcbiAgMjEwXG4gIDgwXG4gIDkwXG4gIDEzMFxuICAxMTBcbiAgOTBcbiAgMTMwXG4gIDExMFxuICA5MFxuICAxMzBcbiAgMTEwXG4gIDkwXG4gIDEzMFxuICAxMTBcbiAgOTBcbiAgMTMwXG4gIDExMFxuICA5MFxuICAxMzBcbiAgMTEwXG4gIDE2MFxuICAxNjBcbiAgMjIwXG4gIDE2MFxuICAxNjBcbiAgMjIwXG4gIDE2MFxuICAxNjBcbiAgMjIwXG4gIDE2MFxuICAxNjBcbiAgMjIwXG4gIDE2MFxuICAxNjBcbiAgMjIwXG4gIDE2MFxuICAxNjBcbiAgMjIwXSlcbiJ9IHs6c3ltIHRleHR1cmUtdmVydGV4LXNoYWRlciwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiB0ZXh0dXJlLXZlcnRleC1zaGFkZXJcbiB7OmlucHV0cyAne2FfcG9zaXRpb24gdmVjNCwgYV90ZXhjb29yZCB2ZWMyfSxcbiAgOnVuaWZvcm1zICd7dV9tYXRyaXggbWF0NH0sXG4gIDpvdXRwdXRzICd7dl90ZXhjb29yZCB2ZWMyfSxcbiAgOnNpZ25hdHVyZXMgJ3ttYWluIChbXSB2b2lkKX0sXG4gIDpmdW5jdGlvbnNcbiAgJ3ttYWluXG4gICAgKFtdXG4gICAgICg9IGdsX1Bvc2l0aW9uICgqIHVfbWF0cml4IGFfcG9zaXRpb24pKVxuICAgICAoPSB2X3RleGNvb3JkIGFfdGV4Y29vcmQpKX19KVxuIn0gezpzeW0gYWR2YW5jZWQtZnJhZ21lbnQtc2hhZGVyLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIGFkdmFuY2VkLWZyYWdtZW50LXNoYWRlclxuIHs6cHJlY2lzaW9uIFwibWVkaXVtcCBmbG9hdFwiLFxuICA6dW5pZm9ybXNcbiAgJ3t1X2xpZ2h0Q29sb3IgdmVjNCxcbiAgICB1X2NvbG9yIHZlYzQsXG4gICAgdV9zcGVjdWxhciB2ZWM0LFxuICAgIHVfc2hpbmluZXNzIGZsb2F0LFxuICAgIHVfc3BlY3VsYXJGYWN0b3IgZmxvYXR9LFxuICA6aW5wdXRzXG4gICd7dl9wb3NpdGlvbiB2ZWM0LFxuICAgIHZfdGV4Q29vcmQgdmVjMixcbiAgICB2X25vcm1hbCB2ZWMzLFxuICAgIHZfc3VyZmFjZVRvTGlnaHQgdmVjMyxcbiAgICB2X3N1cmZhY2VUb1ZpZXcgdmVjM30sXG4gIDpvdXRwdXRzICd7b3V0Q29sb3IgdmVjNH0sXG4gIDpzaWduYXR1cmVzICd7bGl0IChbZmxvYXQgZmxvYXQgZmxvYXRdIHZlYzQpLCBtYWluIChbXSB2b2lkKX0sXG4gIDpmdW5jdGlvbnNcbiAgJ3tsaXRcbiAgICAoW2wgaCBtXVxuICAgICAodmVjNFxuICAgICAgXCIxLjBcIlxuICAgICAgKGFicyBsKVxuICAgICAgKD8gKD4gbCBcIjAuMFwiKSAocG93IChtYXggXCIwLjBcIiBoKSBtKSBcIjAuMFwiKVxuICAgICAgXCIxLjBcIikpLFxuICAgIG1haW5cbiAgICAoW11cbiAgICAgKD12ZWMzIGFfbm9ybWFsIChub3JtYWxpemUgdl9ub3JtYWwpKVxuICAgICAoPXZlYzMgc3VyZmFjZVRvTGlnaHQgKG5vcm1hbGl6ZSB2X3N1cmZhY2VUb0xpZ2h0KSlcbiAgICAgKD12ZWMzIHN1cmZhY2VUb1ZpZXcgKG5vcm1hbGl6ZSB2X3N1cmZhY2VUb1ZpZXcpKVxuICAgICAoPXZlYzMgaGFsZlZlY3RvciAobm9ybWFsaXplICgrIHN1cmZhY2VUb0xpZ2h0IHN1cmZhY2VUb1ZpZXcpKSlcbiAgICAgKD12ZWM0XG4gICAgICBsaXRSXG4gICAgICAobGl0XG4gICAgICAgKGRvdCBhX25vcm1hbCBzdXJmYWNlVG9MaWdodClcbiAgICAgICAoZG90IGFfbm9ybWFsIGhhbGZWZWN0b3IpXG4gICAgICAgdV9zaGluaW5lc3MpKVxuICAgICAoPVxuICAgICAgb3V0Q29sb3JcbiAgICAgICh2ZWM0XG4gICAgICAgKC5yZ2JcbiAgICAgICAgKCpcbiAgICAgICAgIHVfbGlnaHRDb2xvclxuICAgICAgICAgKCtcbiAgICAgICAgICAoKiAoLnkgbGl0UikgdV9jb2xvcilcbiAgICAgICAgICAoKiB1X3NwZWN1bGFyICgueiBsaXRSKSB1X3NwZWN1bGFyRmFjdG9yKSkpKVxuICAgICAgIDEpKSl9fSlcbiJ9IHs6c3ltIGN1YmUtdGV4Y29vcmRzLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIGN1YmUtdGV4Y29vcmRzXG4gWzBcbiAgMFxuICAwXG4gIDFcbiAgMVxuICAwXG4gIDBcbiAgMVxuICAxXG4gIDFcbiAgMVxuICAwXG4gIDBcbiAgMFxuICAwXG4gIDFcbiAgMVxuICAwXG4gIDFcbiAgMFxuICAwXG4gIDFcbiAgMVxuICAxXG4gIDBcbiAgMFxuICAwXG4gIDFcbiAgMVxuICAwXG4gIDBcbiAgMVxuICAxXG4gIDFcbiAgMVxuICAwXG4gIDBcbiAgMFxuICAwXG4gIDFcbiAgMVxuICAwXG4gIDFcbiAgMFxuICAwXG4gIDFcbiAgMVxuICAxXG4gIDBcbiAgMFxuICAwXG4gIDFcbiAgMVxuICAwXG4gIDBcbiAgMVxuICAxXG4gIDFcbiAgMVxuICAwXG4gIDBcbiAgMFxuICAwXG4gIDFcbiAgMVxuICAwXG4gIDFcbiAgMFxuICAwXG4gIDFcbiAgMVxuICAxXSlcbiJ9IHs6c3ltIGN1YmUsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gY3ViZVxuIFstMC41XG4gIC0wLjVcbiAgLTAuNVxuICAtMC41XG4gIDAuNVxuICAtMC41XG4gIDAuNVxuICAtMC41XG4gIC0wLjVcbiAgLTAuNVxuICAwLjVcbiAgLTAuNVxuICAwLjVcbiAgMC41XG4gIC0wLjVcbiAgMC41XG4gIC0wLjVcbiAgLTAuNVxuICAtMC41XG4gIC0wLjVcbiAgMC41XG4gIDAuNVxuICAtMC41XG4gIDAuNVxuICAtMC41XG4gIDAuNVxuICAwLjVcbiAgLTAuNVxuICAwLjVcbiAgMC41XG4gIDAuNVxuICAtMC41XG4gIDAuNVxuICAwLjVcbiAgMC41XG4gIDAuNVxuICAtMC41XG4gIDAuNVxuICAtMC41XG4gIC0wLjVcbiAgMC41XG4gIDAuNVxuICAwLjVcbiAgMC41XG4gIC0wLjVcbiAgLTAuNVxuICAwLjVcbiAgMC41XG4gIDAuNVxuICAwLjVcbiAgMC41XG4gIDAuNVxuICAwLjVcbiAgLTAuNVxuICAtMC41XG4gIC0wLjVcbiAgLTAuNVxuICAwLjVcbiAgLTAuNVxuICAtMC41XG4gIC0wLjVcbiAgLTAuNVxuICAwLjVcbiAgLTAuNVxuICAtMC41XG4gIDAuNVxuICAwLjVcbiAgLTAuNVxuICAtMC41XG4gIDAuNVxuICAtMC41XG4gIDAuNVxuICAtMC41XG4gIC0wLjVcbiAgLTAuNVxuICAtMC41XG4gIC0wLjVcbiAgMC41XG4gIC0wLjVcbiAgMC41XG4gIC0wLjVcbiAgLTAuNVxuICAtMC41XG4gIDAuNVxuICAtMC41XG4gIDAuNVxuICAwLjVcbiAgLTAuNVxuICAwLjVcbiAgLTAuNVxuICAwLjVcbiAgLTAuNVxuICAtMC41XG4gIDAuNVxuICAwLjVcbiAgLTAuNVxuICAwLjVcbiAgLTAuNVxuICAwLjVcbiAgMC41XG4gIC0wLjVcbiAgMC41XG4gIDAuNVxuICAwLjVcbiAgLTAuNVxuICAwLjVcbiAgMC41XG4gIDAuNV0pXG4ifSksIG9ha2NsanMudG9vbHMucmVhZGVyLmltcGwuaW5zcGVjdCAoezpzeW0gaW5zcGVjdCwgOm1ldGEgezpkb2MgIlJldHVybiBhIHN0cmluZyBkZXNjcmlwdGlvbiBvZiB0aGUgdmFsdWUgc3VwcGxpZWQuXG4gICBNYXkgYmUgdGhlIGEgc3RyaW5nIHZlcnNpb24gb2YgdGhlIHZhbHVlIGl0c2VsZiAoZS5nLiBcInRydWVcIilcbiAgIG9yIGl0IG1heSBiZSBhIGRlc2NyaXB0aW9uIChlLmcuIFwiYW4gaW5zdGFuY2Ugb2YgRm9vXCIpLlxuICAgSWYgdHJ1bmNhdGUgaXMgdHJ1ZSB0aGVuIHJldHVybiBhIHZlcnkgdGVyc2UgdmVyc2lvbiBvZlxuICAgdGhlIGluc3BlY3Rpb24uIiwgOmFyZ2xpc3RzIFtbeF0gW3RydW5jYXRlIHhdXX0sIDpzb3VyY2UgIihkZWZuXG4gaW5zcGVjdFxuIFwiUmV0dXJuIGEgc3RyaW5nIGRlc2NyaXB0aW9uIG9mIHRoZSB2YWx1ZSBzdXBwbGllZC5cXG4gICBNYXkgYmUgdGhlIGEgc3RyaW5nIHZlcnNpb24gb2YgdGhlIHZhbHVlIGl0c2VsZiAoZS5nLiBcXFwidHJ1ZVxcXCIpXFxuICAgb3IgaXQgbWF5IGJlIGEgZGVzY3JpcHRpb24gKGUuZy4gXFxcImFuIGluc3RhbmNlIG9mIEZvb1xcXCIpLlxcbiAgIElmIHRydW5jYXRlIGlzIHRydWUgdGhlbiByZXR1cm4gYSB2ZXJ5IHRlcnNlIHZlcnNpb24gb2ZcXG4gICB0aGUgaW5zcGVjdGlvbi5cIlxuIChbeF0gKGluc3BlY3QqIGZhbHNlIHgpKVxuIChbdHJ1bmNhdGUgeF0gKGluc3BlY3QqIHRydW5jYXRlIHgpKSlcbiJ9KSwgc2FibG9uby5pbnRlcnByZXRlciAoezpzeW0gaW50ZXJwcmV0LCA6bWV0YSB7OmRvYyAiSW50ZXJwcmV0IGEgQ2xvanVyZSBkYXRhIHN0cnVjdHVyZSBhcyBhIFJlYWN0IGZuIGNhbGwuIiwgOmFyZ2xpc3RzIChbdGhpc10pfSwgOnByb3RvY29sIElJbnRlcnByZXRlcn0gezpzeW0gSUludGVycHJldGVyLCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAoaW50ZXJwcmV0KX0gezpzeW0gY29udHJvbGxlZC1pbnB1dD8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgYHR5cGVgIGFuZCBgcHJvcHNgIGFyZSB1c2VkIGEgY29udHJvbGxlZCBpbnB1dCxcbiAgb3RoZXJ3aXNlIGZhbHNlLiIsIDphcmdsaXN0cyAoW3R5cGUgcHJvcHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gY29udHJvbGxlZC1pbnB1dD9cbiBcIlJldHVybnMgdHJ1ZSBpZiBgdHlwZWAgYW5kIGBwcm9wc2AgYXJlIHVzZWQgYSBjb250cm9sbGVkIGlucHV0LFxcbiAgb3RoZXJ3aXNlIGZhbHNlLlwiXG4gW3R5cGUgcHJvcHNdXG4gIz8oOmNsanMgKGFuZCAob2JqZWN0PyBwcm9wcykgKGNhc2UgdHlwZSBcImlucHV0XCIgKG9yIChleGlzdHM/ICguLWNoZWNrZWQgcHJvcHMpKSAoZXhpc3RzPyAoLi12YWx1ZSBwcm9wcykpKSBcInNlbGVjdFwiIChleGlzdHM/ICguLXZhbHVlIHByb3BzKSkgXCJ0ZXh0YXJlYVwiIChleGlzdHM/ICguLXZhbHVlIHByb3BzKSkgZmFsc2UpKSkpXG4ifSB7OnN5bSBjcmVhdGUtZWxlbWVudCwgOm1ldGEgezpkb2MgIkNyZWF0ZSBhIFJlYWN0IGVsZW1lbnQuIFJldHVybnMgYSBKYXZhU2NyaXB0IG9iamVjdCB3aGVuIHJ1bm5pbmdcbiAgdW5kZXIgQ2xvanVyZVNjcmlwdCwgYW5kIGEgb20uZG9tLkVsZW1lbnQgcmVjb3JkIGluIENsb2p1cmUuIiwgOmFyZ2xpc3RzIChbdHlwZSBwcm9wcyAmIGNoaWxkcmVuXSl9LCA6c291cmNlICIoZGVmblxuIGNyZWF0ZS1lbGVtZW50XG4gXCJDcmVhdGUgYSBSZWFjdCBlbGVtZW50LiBSZXR1cm5zIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2hlbiBydW5uaW5nXFxuICB1bmRlciBDbG9qdXJlU2NyaXB0LCBhbmQgYSBvbS5kb20uRWxlbWVudCByZWNvcmQgaW4gQ2xvanVyZS5cIlxuIFt0eXBlIHByb3BzICYgY2hpbGRyZW5dXG4gIz8oOmNsaiAoZG9tL2VsZW1lbnQgezphdHRycyBwcm9wcywgOmNoaWxkcmVuIGNoaWxkcmVuLCA6cmVhY3Qta2V5IG5pbCwgOnRhZyB0eXBlfSkgOmNsanMgKGFwcGx5IGpzL1JlYWN0LmNyZWF0ZUVsZW1lbnQgKGVsZW1lbnQtY2xhc3MgdHlwZSBwcm9wcykgcHJvcHMgY2hpbGRyZW4pKSlcbiJ9IHs6c3ltIGF0dHJpYnV0ZXMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbYXR0cnNdKX0sIDpzb3VyY2UgIihkZWZuXG4gYXR0cmlidXRlc1xuIFthdHRyc11cbiAjPyg6Y2xqICgtPiAodXRpbC9odG1sLXRvLWRvbS1hdHRycyBhdHRycykgKHVwZGF0ZSA6Y2xhc3NOYW1lIChmbiogW3AxX180NTA1MCNdIChzb21lLT4+IHAxX180NTA1MCMgKHN0ci9qb2luIFwiIFwiKSkpKSkgOmNsanMgKHdoZW4tbGV0IFtqcy1hdHRycyAoY2xqLT5qcyAodXRpbC9odG1sLXRvLWRvbS1hdHRycyBhdHRycykpXSAobGV0IFtjbGFzcyAoLi1jbGFzc05hbWUganMtYXR0cnMpIGNsYXNzIChpZiAoYXJyYXk/IGNsYXNzKSAoam9pbiBcIiBcIiBjbGFzcykgY2xhc3MpXSAoaWYgKGJsYW5rPyBjbGFzcykgKGpzLWRlbGV0ZSBqcy1hdHRycyBcImNsYXNzTmFtZVwiKSAoc2V0ISAoLi1jbGFzc05hbWUganMtYXR0cnMpIGNsYXNzKSkganMtYXR0cnMpKSkpXG4ifSB7OnN5bSBlbGVtZW50LCA6bWV0YSB7OmRvYyAiUmVuZGVyIGFuIGVsZW1lbnQgdmVjdG9yIGFzIGEgSFRNTCBlbGVtZW50LiIsIDphcmdsaXN0cyAoW2VsZW1lbnRdKX0sIDpzb3VyY2UgIihkZWZuXG4gZWxlbWVudFxuIFwiUmVuZGVyIGFuIGVsZW1lbnQgdmVjdG9yIGFzIGEgSFRNTCBlbGVtZW50LlwiXG4gW2VsZW1lbnRdXG4gKGxldFxuICBbW3R5cGUgYXR0cnMgY29udGVudF0gKG5vcm1hbGl6ZS9lbGVtZW50IGVsZW1lbnQpXVxuICAoYXBwbHlcbiAgIGNyZWF0ZS1lbGVtZW50XG4gICB0eXBlXG4gICAoYXR0cmlidXRlcyBhdHRycylcbiAgIChpbnRlcnByZXQtc2VxIGNvbnRlbnQpKSkpXG4ifSksIGNsanMudG9vbHMucmVhZGVyLmltcGwudXRpbHMgKHs6c3ltIHJlYWRlci1jb25kaXRpb25hbCwgOm1ldGEgezpkb2MgIkNvbnN0cnVjdCBhIGRhdGEgcmVwcmVzZW50YXRpb24gb2YgYSByZWFkZXIgY29uZGl0aW9uYWwuXG4gIElmIHRydWUsIHNwbGljaW5nPyBpbmRpY2F0ZXMgcmVhZC1jb25kLXNwbGljaW5nLiIsIDphcmdsaXN0cyAoW2Zvcm0gc3BsaWNpbmc/XSl9LCA6c291cmNlICIoZGVmblxuIHJlYWRlci1jb25kaXRpb25hbFxuIFwiQ29uc3RydWN0IGEgZGF0YSByZXByZXNlbnRhdGlvbiBvZiBhIHJlYWRlciBjb25kaXRpb25hbC5cXG4gIElmIHRydWUsIHNwbGljaW5nPyBpbmRpY2F0ZXMgcmVhZC1jb25kLXNwbGljaW5nLlwiXG4gW2Zvcm0gc3BsaWNpbmc/XVxuIChSZWFkZXJDb25kaXRpb25hbC4gc3BsaWNpbmc/IGZvcm0pKVxuIn0gezpzeW0gd2hpdGVzcGFjZT8sIDptZXRhIHs6ZG9jICJDaGVja3Mgd2hldGhlciBhIGdpdmVuIGNoYXJhY3RlciBpcyB3aGl0ZXNwYWNlIiwgOmFyZ2xpc3RzIChbY2hdKX0sIDpzb3VyY2UgIihkZWZuXG4gd2hpdGVzcGFjZT9cbiBcIkNoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gY2hhcmFjdGVyIGlzIHdoaXRlc3BhY2VcIlxuIFtjaF1cbiAod2hlbi1ub3QgKG5pbD8gY2gpIChpZiAoaWRlbnRpY2FsPyBjaCBcXCwpIHRydWUgKC50ZXN0IHdzLXJ4IGNoKSkpKVxuIn0gezpzeW0gY2hhci1jb2RlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2NoIGJhc2VdKX0sIDpzb3VyY2UgIihkZWZuXG4gY2hhci1jb2RlXG4gW2NoIGJhc2VdXG4gKGxldCBbY29kZSAoanMvcGFyc2VJbnQgY2ggYmFzZSldIChpZiAoanMvaXNOYU4gY29kZSkgLTEgY29kZSkpKVxuIn0gezpzeW0gbGFzdC1pZCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgbGFzdC1pZCAoYXRvbSAwKSlcbiJ9IHs6c3ltIGNoYXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gY2hhciBbeF0gKHdoZW4tbm90IChuaWw/IHgpIChjbGpzLmNvcmUvY2hhciB4KSkpXG4ifSB7OnN5bSBudW1lcmljPywgOm1ldGEgezpkb2MgIkNoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gY2hhcmFjdGVyIGlzIG51bWVyaWMiLCA6YXJnbGlzdHMgKFtjaF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBudW1lcmljP1xuIFwiQ2hlY2tzIHdoZXRoZXIgYSBnaXZlbiBjaGFyYWN0ZXIgaXMgbnVtZXJpY1wiXG4gW2NoXVxuICh3aGVuLW5vdCAobmlsPyBjaCkgKGdzdHJpbmcvaXNOdW1lcmljIGNoKSkpXG4ifSB7OnN5bSBzZWNvbmQnLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW1thIGJdXSl9LCA6c291cmNlICIoZGVmbiBzZWNvbmQnIFtbYSBiXV0gKHdoZW4tbm90IGEgYikpXG4ifSB7OnN5bSBkZXN1Z2FyLW1ldGEsIDptZXRhIHs6ZG9jICJSZXNvbHZlcyBzeW50YWN0aWNhbCBzdWdhciBpbiBtZXRhZGF0YSIsIDphcmdsaXN0cyAoW2ZdKX0sIDpzb3VyY2UgIihkZWZuXG4gZGVzdWdhci1tZXRhXG4gXCJSZXNvbHZlcyBzeW50YWN0aWNhbCBzdWdhciBpbiBtZXRhZGF0YVwiXG4gW2ZdXG4gKGNvbmRcbiAgKGtleXdvcmQ/IGYpXG4gIHtmIHRydWV9XG4gIChzeW1ib2w/IGYpXG4gIHs6dGFnIGZ9XG4gIChzdHJpbmc/IGYpXG4gIHs6dGFnIGZ9XG4gIDplbHNlXG4gIGYpKVxuIn0gezpzeW0gbmV4dC1pZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuIG5leHQtaWQgW10gKHN3YXAhIGxhc3QtaWQgaW5jKSlcbiJ9IHs6c3ltIGV4LWluZm8/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2V4XSl9LCA6c291cmNlICIoZGVmbiBleC1pbmZvPyBbZXhdIChpbnN0YW5jZT8gY2xqcy5jb3JlLkV4Y2VwdGlvbkluZm8gZXgpKVxuIn0gezpzeW0gcmVhZGVyLWNvbmRpdGlvbmFsPywgOm1ldGEgezpkb2MgIlJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBpcyB0aGUgZGF0YSByZXByZXNlbnRhdGlvbiBvZiBhIHJlYWRlciBjb25kaXRpb25hbCIsIDphcmdsaXN0cyAoW3ZhbHVlXSl9LCA6c291cmNlICIoZGVmblxuIHJlYWRlci1jb25kaXRpb25hbD9cbiBcIlJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBpcyB0aGUgZGF0YSByZXByZXNlbnRhdGlvbiBvZiBhIHJlYWRlciBjb25kaXRpb25hbFwiXG4gW3ZhbHVlXVxuIChpbnN0YW5jZT8gUmVhZGVyQ29uZGl0aW9uYWwgdmFsdWUpKVxuIn0gezpzeW0gbmV3bGluZT8sIDptZXRhIHs6ZG9jICJDaGVja3Mgd2hldGhlciB0aGUgY2hhcmFjdGVyIGlzIGEgbmV3bGluZSIsIDphcmdsaXN0cyAoW2NdKX0sIDpzb3VyY2UgIihkZWZuXG4gbmV3bGluZT9cbiBcIkNoZWNrcyB3aGV0aGVyIHRoZSBjaGFyYWN0ZXIgaXMgYSBuZXdsaW5lXCJcbiBbY11cbiAob3IgKGlkZW50aWNhbD8gXFxuZXdsaW5lIGMpIChpZGVudGljYWw/IFwiXFxuXCIgYykgKG5pbD8gYykpKVxuIn0gezpzeW0gbmFtZXNwYWNlLWtleXMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbnMga2V5c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBuYW1lc3BhY2Uta2V5c1xuIFtucyBrZXlzXVxuIChmb3JcbiAgW2tleSBrZXlzXVxuICAoaWZcbiAgIChvciAoc3ltYm9sPyBrZXkpIChrZXl3b3JkPyBrZXkpKVxuICAgKGxldFxuICAgIFtba2V5LW5zIGtleS1uYW1lXVxuICAgICAoKGp1eHQgbmFtZXNwYWNlIG5hbWUpIGtleSlcbiAgICAgLT5rZXlcbiAgICAgKGlmIChzeW1ib2w/IGtleSkgc3ltYm9sIGtleXdvcmQpXVxuICAgIChjb25kXG4gICAgIChuaWw/IGtleS1ucylcbiAgICAgKC0+a2V5IG5zIGtleS1uYW1lKVxuICAgICAoPSBcIl9cIiBrZXktbnMpXG4gICAgICgtPmtleSBrZXktbmFtZSlcbiAgICAgOmVsc2VcbiAgICAga2V5KSlcbiAgIGtleSkpKVxuIn0gezpzeW0gd3MtcngsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHdzLXJ4ICNcIltcXHNdXCIpXG4ifSksIGNsanMudGFnZ2VkLWxpdGVyYWxzICh7OnN5bSByZWFkLXF1ZXVlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2Zvcm1dKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVhZC1xdWV1ZVxuIFtmb3JtXVxuICh3aGVuLW5vdFxuICAodmVjdG9yPyBmb3JtKVxuICAodGhyb3dcbiAgICM/KDpjbGogKFJ1bnRpbWVFeGNlcHRpb24uIFwiUXVldWUgbGl0ZXJhbCBleHBlY3RzIGEgdmVjdG9yIGZvciBpdHMgZWxlbWVudHMuXCIpIDpjbGpzIChqcy9FcnJvci4gXCJRdWV1ZSBsaXRlcmFsIGV4cGVjdHMgYSB2ZWN0b3IgZm9yIGl0cyBlbGVtZW50cy5cIikpKSlcbiAobGlzdCAnY2xqcy5jb3JlL2ludG8gJ2NsanMuY29yZS5QZXJzaXN0ZW50UXVldWUuRU1QVFkgZm9ybSkpXG4ifSB7OnN5bSB2YWxpZC1qcy1saXRlcmFsLWtleT8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChba10pfSwgOnNvdXJjZSAiKGRlZm5cbiB2YWxpZC1qcy1saXRlcmFsLWtleT9cbiBba11cbiAob3IgKHN0cmluZz8gaykgKGFuZCAoa2V5d29yZD8gaykgKG5pbD8gKG5hbWVzcGFjZSBrKSkpKSlcbiJ9IHs6c3ltIHJlYWQtanMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWFkLWpzXG4gW2Zvcm1dXG4gKHdoZW4tbm90XG4gIChvciAodmVjdG9yPyBmb3JtKSAobWFwPyBmb3JtKSlcbiAgKHRocm93XG4gICAjPyg6Y2xqIChSdW50aW1lRXhjZXB0aW9uLiBcIkphdmFTY3JpcHQgbGl0ZXJhbCBtdXN0IHVzZSBtYXAgb3IgdmVjdG9yIG5vdGF0aW9uXCIpIDpjbGpzIChqcy9FcnJvci4gXCJKYXZhU2NyaXB0IGxpdGVyYWwgbXVzdCB1c2UgbWFwIG9yIHZlY3RvciBub3RhdGlvblwiKSkpKVxuICh3aGVuLW5vdFxuICAob3IgKG5vdCAobWFwPyBmb3JtKSkgKGV2ZXJ5PyB2YWxpZC1qcy1saXRlcmFsLWtleT8gKGtleXMgZm9ybSkpKVxuICAodGhyb3dcbiAgICM/KDpjbGogKFJ1bnRpbWVFeGNlcHRpb24uIFwiSmF2YVNjcmlwdCBsaXRlcmFsIGtleXMgbXVzdCBiZSBzdHJpbmdzIG9yIHVucXVhbGlmaWVkIGtleXdvcmRzXCIpIDpjbGpzIChqcy9FcnJvci4gXCJKYXZhU2NyaXB0IGxpdGVyYWwga2V5cyBtdXN0IGJlIHN0cmluZ3Mgb3IgdW5xdWFsaWZpZWQga2V5d29yZHNcIikpKSlcbiAoSlNWYWx1ZS4gZm9ybSkpXG4ifSB7OnN5bSAqY2xqcy1kYXRhLXJlYWRlcnMqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuICpjbGpzLWRhdGEtcmVhZGVycypcbiAobWVyZ2VcbiAgIz8oOmNsaiAqZGF0YS1yZWFkZXJzKilcbiAgeydxdWV1ZSByZWFkLXF1ZXVlLCAndXVpZCByZWFkLXV1aWQsICdpbnN0IHJlYWQtaW5zdCwgJ2pzIHJlYWQtanN9KSlcbiJ9KSwgaWdsdS5nbHNsICh7OnN5bSBzb3J0LWZucywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmdW5jdGlvbnMgZm4tZGVwc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBzb3J0LWZuc1xuIFtmdW5jdGlvbnMgZm4tZGVwc11cbiAoLT4+XG4gIGZ1bmN0aW9uc1xuICBzZXFcbiAgKHNvcnQtYnlcbiAgIGZpcnN0XG4gICAoZm5cbiAgICBbYSBiXVxuICAgIChjb25kXG4gICAgIChjb250YWlucz8gKGZuLWRlcHMgYSkgYilcbiAgICAgMVxuICAgICAoY29udGFpbnM/IChmbi1kZXBzIGIpIGEpXG4gICAgIC0xXG4gICAgIDplbHNlXG4gICAgIDApKSkpKVxuIn0gezpzeW0gLT5pbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtbbmFtZSB0eXBlXV0pfSwgOnNvdXJjZSAiKGRlZm4gLT5pbiBbW25hbWUgdHlwZV1dIChzdHIgXCJpbiBcIiAocGFyc2UtdHlwZSB0eXBlKSBcIiBcIiBuYW1lKSlcbiJ9IHs6c3ltIGlnbHUtPmdsc2wsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbezprZXlzIFt2ZXJzaW9uIHByZWNpc2lvbiB1bmlmb3JtcyBhdHRyaWJ1dGVzIHZhcnlpbmdzIGlucHV0cyBvdXRwdXRzIHNpZ25hdHVyZXMgZnVuY3Rpb25zIGZuLWRlcHNdLCA6YXMgc2hhZGVyfV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpZ2x1LT5nbHNsXG4gW3s6a2V5c1xuICAgW3ZlcnNpb25cbiAgICBwcmVjaXNpb25cbiAgICB1bmlmb3Jtc1xuICAgIGF0dHJpYnV0ZXNcbiAgICB2YXJ5aW5nc1xuICAgIGlucHV0c1xuICAgIG91dHB1dHNcbiAgICBzaWduYXR1cmVzXG4gICAgZnVuY3Rpb25zXG4gICAgZm4tZGVwc10sXG4gICA6YXMgc2hhZGVyfV1cbiAobGV0XG4gIFtbZm4ta2luZCBmbi12YWxdIGZ1bmN0aW9uc11cbiAgKC0+PlxuICAgKGNvbmQtPlxuICAgIFtdXG4gICAgdmVyc2lvblxuICAgIChjb25qIChzdHIgXCIjdmVyc2lvbiBcIiB2ZXJzaW9uKSlcbiAgICBwcmVjaXNpb25cbiAgICAoY29uaiAoc3RyIFwicHJlY2lzaW9uIFwiIHByZWNpc2lvbikpXG4gICAgdW5pZm9ybXNcbiAgICAoaW50byAobWFwdiAtPnVuaWZvcm0gdW5pZm9ybXMpKVxuICAgIGF0dHJpYnV0ZXNcbiAgICAoaW50byAobWFwdiAtPmF0dHJpYnV0ZSBhdHRyaWJ1dGVzKSlcbiAgICB2YXJ5aW5nc1xuICAgIChpbnRvIChtYXB2IC0+dmFyeWluZyB2YXJ5aW5ncykpXG4gICAgaW5wdXRzXG4gICAgKGludG8gKG1hcHYgLT5pbiBpbnB1dHMpKVxuICAgIG91dHB1dHNcbiAgICAoaW50byAobWFwdiAtPm91dCBvdXRwdXRzKSlcbiAgICAoPSBmbi1raW5kIDppZ2x1KVxuICAgIChpbnRvXG4gICAgIChtYXB2IChwYXJ0aWFsIC0+ZnVuY3Rpb24gc2lnbmF0dXJlcykgKHNvcnQtZm5zIGZuLXZhbCBmbi1kZXBzKSkpKVxuICAgKHJlZHVjZSAocGFydGlhbCBzdHJpbmdpZnkgMCkgW10pXG4gICAoc3RyL2pvaW4gXFxuZXdsaW5lKVxuICAgKChmblxuICAgICBbb3V0cHV0XVxuICAgICAoaWYgKD0gZm4ta2luZCA6Z2xzbCkgKHN0ciBvdXRwdXQgXFxuZXdsaW5lIGZuLXZhbCkgb3V0cHV0KSkpKSkpXG4ifSB7OnN5bSBpbmRlbnQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbGV2ZWwgbGluZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbmRlbnRcbiBbbGV2ZWwgbGluZV1cbiAoc3RyIChzdHIvam9pbiAocmVwZWF0ICgqIGxldmVsIDIpIFwiIFwiKSkgbGluZSkpXG4ifSB7OnN5bSAtPmZ1bmN0aW9uLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NpZ25hdHVyZXMgW25hbWUgezprZXlzIFthcmdzIGJvZHldfV1dKX0sIDpzb3VyY2UgIihkZWZuXG4gLT5mdW5jdGlvblxuIFtzaWduYXR1cmVzIFtuYW1lIHs6a2V5cyBbYXJncyBib2R5XX1dXVxuIChpZi1sZXRcbiAgW3s6a2V5cyBbaW4gb3V0XX0gKGdldCBzaWduYXR1cmVzIG5hbWUpXVxuICAobGV0XG4gICBbX1xuICAgICh3aGVuXG4gICAgIChub3Q9IChjb3VudCBpbikgKGNvdW50IGFyZ3MpKVxuICAgICAodGhyb3dcbiAgICAgIChleC1pbmZvXG4gICAgICAgXCJGdW5jdGlvbiBoYXMgYXJncyBzaWduYXR1cmUgb2YgYSBkaWZmZXJlbnQgbGVuZ3RoIHRoYW4gaXRzIGFyZ3MgZGVmaW5pdGlvblwiXG4gICAgICAgezpmbiBuYW1lLCA6c2lnbmF0dXJlIGluLCA6ZGVmaW5pdGlvbiBhcmdzfSkpKVxuICAgIGFyZ3MtbGlzdFxuICAgIChzdHIvam9pbiBcIiwgXCIgKG1hcHYgKGZuIFt0eXBlIG5hbWVdIChzdHIgdHlwZSBcIiBcIiBuYW1lKSkgaW4gYXJncykpXG4gICAgc2lnbmF0dXJlXG4gICAgKHN0ciBvdXQgXCIgXCIgbmFtZSBcIihcIiBhcmdzLWxpc3QgXCIpXCIpXVxuICAgKGludG9cbiAgICBbc2lnbmF0dXJlXVxuICAgIChsZXRcbiAgICAgW2JvZHktbGluZXMgKG1hcHYgLT5zdGF0ZW1lbnQgYm9keSldXG4gICAgIChpZlxuICAgICAgKD0gJ3ZvaWQgb3V0KVxuICAgICAgYm9keS1saW5lc1xuICAgICAgKGNvbmpcbiAgICAgICAodmVjIChidXRsYXN0IGJvZHktbGluZXMpKVxuICAgICAgIChzdHIgXCJyZXR1cm4gXCIgKGxhc3QgYm9keS1saW5lcykpKSkpKSlcbiAgKHRocm93XG4gICAoZXgtaW5mbyBcIk5vdGhpbmcgZm91bmQgaW4gOnNpZ25hdHVyZXMgZm9yIGZ1bmN0aW9uXCIgezpmbiBuYW1lfSkpKSlcbiJ9IHs6c3ltIC0+dW5pZm9ybSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtbbmFtZSB0eXBlXV0pfSwgOnNvdXJjZSAiKGRlZm5cbiAtPnVuaWZvcm1cbiBbW25hbWUgdHlwZV1dXG4gKHN0ciBcInVuaWZvcm0gXCIgKHBhcnNlLXR5cGUgdHlwZSkgXCIgXCIgbmFtZSkpXG4ifSB7OnN5bSBzdHJpbmdpZnksIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbGV2ZWwgbGluZXMgbGluZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzdHJpbmdpZnlcbiBbbGV2ZWwgbGluZXMgbGluZV1cbiAoY29uZFxuICAoc3RyaW5nPyBsaW5lKVxuICAoY29ualxuICAgbGluZXNcbiAgIChpZlxuICAgIChvciAoc3RyL3N0YXJ0cy13aXRoPyBsaW5lIFwiI1wiKSAoc3RyL2VuZHMtd2l0aD8gbGluZSBcIjtcIikpXG4gICAgbGluZVxuICAgIChzdHIgKGluZGVudCBsZXZlbCBsaW5lKSBcIjtcIikpKVxuICAoc3RyaW5nPyAoZmlyc3QgbGluZSkpXG4gICgtPlxuICAgbGluZXNcbiAgIChjb25qIChpbmRlbnQgbGV2ZWwgKGZpcnN0IGxpbmUpKSlcbiAgIChjb25qIChpbmRlbnQgbGV2ZWwgXCJ7XCIpKVxuICAgKGludG8gKHJlZHVjZSAocGFydGlhbCBzdHJpbmdpZnkgKGluYyBsZXZlbCkpIFtdIChyZXN0IGxpbmUpKSlcbiAgIChjb25qIChpbmRlbnQgbGV2ZWwgXCJ9XCIpKSlcbiAgOmVsc2VcbiAgKGludG8gbGluZXMgKHJlZHVjZSAocGFydGlhbCBzdHJpbmdpZnkgbGV2ZWwpIFtdIGxpbmUpKSkpXG4ifSB7OnN5bSAtPnZhcnlpbmcsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbW25hbWUgdHlwZV1dKX0sIDpzb3VyY2UgIihkZWZuXG4gLT52YXJ5aW5nXG4gW1tuYW1lIHR5cGVdXVxuIChzdHIgXCJ2YXJ5aW5nIFwiIChwYXJzZS10eXBlIHR5cGUpIFwiIFwiIG5hbWUpKVxuIn0gezpzeW0gLT5vdXQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbW25hbWUgdHlwZV1dKX0sIDpzb3VyY2UgIihkZWZuXG4gLT5vdXRcbiBbW25hbWUgdHlwZV1dXG4gKHdoZW4gdHlwZSAoc3RyIFwib3V0IFwiIChwYXJzZS10eXBlIHR5cGUpIFwiIFwiIG5hbWUpKSlcbiJ9IHs6c3ltIC0+YXR0cmlidXRlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW1tuYW1lIHR5cGVdXSl9LCA6c291cmNlICIoZGVmblxuIC0+YXR0cmlidXRlXG4gW1tuYW1lIHR5cGVdXVxuIChzdHIgXCJhdHRyaWJ1dGUgXCIgKHBhcnNlLXR5cGUgdHlwZSkgXCIgXCIgbmFtZSkpXG4ifSksIHBsYXktY2xqYy5nbC5lbnRpdGllcy0zZCAoezpzeW0gLT5jYW1lcmEsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgM0QgY2FtZXJhIiwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIC0+Y2FtZXJhXG4gXCJSZXR1cm5zIGEgM0QgY2FtZXJhXCJcbiBbXVxuICgtPkNhbWVyYSAobS9pZGVudGl0eS1tYXRyaXggNCkpKVxuIn0gezpzeW0gLT5lbnRpdHksIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgM0QgZW50aXR5IHdpdGggYSB2ZWN0b3Igb2YgYXR0cmlidXRlIGBkYXRhYCBhbmQgb3B0aW9uYWxseSBhIHZlY3RvciBvZiBgY29sb3ItZGF0YWAuIiwgOmFyZ2xpc3RzIFtbZ2FtZSBkYXRhXSBbZ2FtZSBkYXRhIGNvbG9yLWRhdGFdXX0sIDpzb3VyY2UgIihkZWZuXG4gLT5lbnRpdHlcbiBcIlJldHVybnMgYSAzRCBlbnRpdHkgd2l0aCBhIHZlY3RvciBvZiBhdHRyaWJ1dGUgYGRhdGFgIGFuZCBvcHRpb25hbGx5IGEgdmVjdG9yIG9mIGBjb2xvci1kYXRhYC5cIlxuIChbZ2FtZSBkYXRhXVxuICAoLT4+XG4gICB7OnZlcnRleCB0aHJlZS1kLXVuaWZvcm0tY29sb3JzLXZlcnRleC1zaGFkZXIsXG4gICAgOmZyYWdtZW50IHRocmVlLWQtdW5pZm9ybS1jb2xvcnMtZnJhZ21lbnQtc2hhZGVyLFxuICAgIDphdHRyaWJ1dGVzXG4gICAgeydhX3Bvc2l0aW9uIHs6ZGF0YSBkYXRhLCA6dHlwZSAoZ2wgZ2FtZSBGTE9BVCksIDpzaXplIDN9fX1cbiAgIG1hcC0+VGhyZWVERW50aXR5KSlcbiAoW2dhbWUgZGF0YSBjb2xvci1kYXRhXVxuICAoLT4+XG4gICB7OnZlcnRleCB0aHJlZS1kLWF0dHJpYnV0ZS1jb2xvcnMtdmVydGV4LXNoYWRlcixcbiAgICA6ZnJhZ21lbnQgdGhyZWUtZC1hdHRyaWJ1dGUtY29sb3JzLWZyYWdtZW50LXNoYWRlcixcbiAgICA6YXR0cmlidXRlc1xuICAgIHsnYV9wb3NpdGlvbiB7OmRhdGEgZGF0YSwgOnR5cGUgKGdsIGdhbWUgRkxPQVQpLCA6c2l6ZSAzfSxcbiAgICAgJ2FfY29sb3IgezpkYXRhIGNvbG9yLWRhdGEsIDp0eXBlIChnbCBnYW1lIEZMT0FUKSwgOnNpemUgM319fVxuICAgbWFwLT5UaHJlZURFbnRpdHkpKSlcbiJ9KSwgY2xqcy5hbmFseXplci5wYXNzZXMgKHs6c3ltIGFwcGx5LXBhc3NlcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1thc3QgcGFzc2VzXSBbYXN0IHBhc3NlcyBvcHRzXV19LCA6c291cmNlICIoZGVmblxuIGFwcGx5LXBhc3Nlc1xuIChbYXN0IHBhc3Nlc10gKGFwcGx5LXBhc3NlcyBhc3QgcGFzc2VzIG5pbCkpXG4gKFthc3QgcGFzc2VzIG9wdHNdXG4gIChyZWR1Y2UgKGZuIFthc3QgcGFzc10gKHBhc3MgKDplbnYgYXN0KSBhc3Qgb3B0cykpIGFzdCBwYXNzZXMpKSlcbiJ9IHs6c3ltIHdhbGssIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbYXN0IHBhc3Nlc10gW2FzdCBwYXNzZXMgb3B0c11dfSwgOnNvdXJjZSAiKGRlZm5cbiB3YWxrXG4gKFthc3QgcGFzc2VzXSAod2FsayBhc3QgcGFzc2VzIG5pbCkpXG4gKFthc3QgcGFzc2VzIG9wdHNdXG4gIChyZWR1Y2VcbiAgIChmblxuICAgIFthc3QgY2hpbGQta11cbiAgICAoYXNzb2NcbiAgICAgYXN0XG4gICAgIGNoaWxkLWtcbiAgICAgKGxldFxuICAgICAgW2NoaWxkIChnZXQgYXN0IGNoaWxkLWspXVxuICAgICAgKGlmXG4gICAgICAgKHZlY3Rvcj8gY2hpbGQpXG4gICAgICAgKGludG9cbiAgICAgICAgW11cbiAgICAgICAgKG1hcCAoZm4qIFtwMV9fNDU0NDkjXSAod2FsayBwMV9fNDU0NDkjIHBhc3NlcyBvcHRzKSkpXG4gICAgICAgIGNoaWxkKVxuICAgICAgICh3YWxrIGNoaWxkIHBhc3NlcyBvcHRzKSkpKSlcbiAgIChzb21lLT4gYXN0IChhcHBseS1wYXNzZXMgcGFzc2VzIG9wdHMpKVxuICAgKDpjaGlsZHJlbiBhc3QpKSkpXG4ifSksIHBsYXktY2xqYy5nbC5lbnRpdGllcy0yZCAoezpzeW0gLT5jYW1lcmEsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgMkQgY2FtZXJhLiBUaGUgMS1hcmcgYXJpdHkgaXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkISIsIDphcmdsaXN0cyBbW10gW3ktZG93bj9dXX0sIDpzb3VyY2UgIihkZWZuXG4gLT5jYW1lcmFcbiBcIlJldHVybnMgYSAyRCBjYW1lcmEuIFRoZSAxLWFyZyBhcml0eSBpcyBkZXByZWNhdGVkIGFuZCBzaG91bGQgbm90IGJlIHVzZWQhXCJcbiAoW10gKC0+Q2FtZXJhIChtL2lkZW50aXR5LW1hdHJpeCAzKSkpXG4gKFt5LWRvd24/XVxuICAoLT5DYW1lcmFcbiAgIChpZlxuICAgIHktZG93bj9cbiAgICAobS9sb29rLWF0LW1hdHJpeCBbMCAwIDFdIFswIC0xIDBdKVxuICAgIChtL2xvb2stYXQtbWF0cml4IFswIDAgLTFdIFswIDEgMF0pKSkpKVxuIn0gezpzeW0gLT5lbnRpdHksIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgMkQgZW50aXR5IHdpdGggYSB2ZWN0b3Igb2YgYXR0cmlidXRlIGBkYXRhYC4iLCA6YXJnbGlzdHMgKFtnYW1lIGRhdGFdKX0sIDpzb3VyY2UgIihkZWZuXG4gLT5lbnRpdHlcbiBcIlJldHVybnMgYSAyRCBlbnRpdHkgd2l0aCBhIHZlY3RvciBvZiBhdHRyaWJ1dGUgYGRhdGFgLlwiXG4gW2dhbWUgZGF0YV1cbiAoLT4+XG4gIHs6dmVydGV4IHR3by1kLXZlcnRleC1zaGFkZXIsXG4gICA6ZnJhZ21lbnQgdHdvLWQtZnJhZ21lbnQtc2hhZGVyLFxuICAgOmF0dHJpYnV0ZXNcbiAgIHsnYV9wb3NpdGlvbiB7OmRhdGEgZGF0YSwgOnR5cGUgKGdsIGdhbWUgRkxPQVQpLCA6c2l6ZSAyfX0sXG4gICA6dW5pZm9ybXMgeyd1X21hdHJpeCAobS9pZGVudGl0eS1tYXRyaXggMyksICd1X2NvbG9yIFswIDAgMCAxXX19XG4gIG1hcC0+VHdvREVudGl0eSkpXG4ifSB7OnN5bSAtPmltYWdlLWVudGl0eSwgOm1ldGEgezpkb2MgIlJldHVybnMgYW4gaW1hZ2UgZW50aXR5IHdpdGggYSB2ZWN0b3Igb2YgaW1hZ2UgYGRhdGFgLFxuICBhbG9uZyB3aXRoIGEgYHdpZHRoYCBhbmQgYGhlaWdodGAgaW4gcGl4ZWxzLiIsIDphcmdsaXN0cyAoW2dhbWUgZGF0YSB3aWR0aCBoZWlnaHRdKX0sIDpzb3VyY2UgIihkZWZuXG4gLT5pbWFnZS1lbnRpdHlcbiBcIlJldHVybnMgYW4gaW1hZ2UgZW50aXR5IHdpdGggYSB2ZWN0b3Igb2YgaW1hZ2UgYGRhdGFgLFxcbiAgYWxvbmcgd2l0aCBhIGB3aWR0aGAgYW5kIGBoZWlnaHRgIGluIHBpeGVscy5cIlxuIFtnYW1lIGRhdGEgd2lkdGggaGVpZ2h0XVxuICgtPj5cbiAgezp2ZXJ0ZXggaW1hZ2UtdmVydGV4LXNoYWRlcixcbiAgIDpmcmFnbWVudCBpbWFnZS1mcmFnbWVudC1zaGFkZXIsXG4gICA6YXR0cmlidXRlc1xuICAgeydhX3Bvc2l0aW9uXG4gICAgezpkYXRhIHByaW1pdGl2ZXMvcmVjdCwgOnR5cGUgKGdsIGdhbWUgRkxPQVQpLCA6c2l6ZSAyfX0sXG4gICA6dW5pZm9ybXNcbiAgIHsndV9pbWFnZVxuICAgIHs6ZGF0YSBkYXRhLFxuICAgICA6b3B0c1xuICAgICB7Om1pcC1sZXZlbCAwLFxuICAgICAgOmludGVybmFsLWZtdCAoZ2wgZ2FtZSBSR0JBKSxcbiAgICAgIDp3aWR0aCB3aWR0aCxcbiAgICAgIDpoZWlnaHQgaGVpZ2h0LFxuICAgICAgOmJvcmRlciAwLFxuICAgICAgOnNyYy1mbXQgKGdsIGdhbWUgUkdCQSksXG4gICAgICA6c3JjLXR5cGUgKGdsIGdhbWUgVU5TSUdORURfQllURSl9LFxuICAgICA6cGFyYW1zXG4gICAgIHsoZ2wgZ2FtZSBURVhUVVJFX1dSQVBfUykgKGdsIGdhbWUgQ0xBTVBfVE9fRURHRSksXG4gICAgICAoZ2wgZ2FtZSBURVhUVVJFX1dSQVBfVCkgKGdsIGdhbWUgQ0xBTVBfVE9fRURHRSksXG4gICAgICAoZ2wgZ2FtZSBURVhUVVJFX01JTl9GSUxURVIpIChnbCBnYW1lIE5FQVJFU1QpLFxuICAgICAgKGdsIGdhbWUgVEVYVFVSRV9NQUdfRklMVEVSKSAoZ2wgZ2FtZSBORUFSRVNUKX19LFxuICAgICd1X3RleHR1cmVfbWF0cml4IChtL2lkZW50aXR5LW1hdHJpeCAzKX0sXG4gICA6d2lkdGggd2lkdGgsXG4gICA6aGVpZ2h0IGhlaWdodH1cbiAgbWFwLT5JbWFnZUVudGl0eSkpXG4ifSksIGNsanMuYW5hbHl6ZXIgKHs6c3ltIHR5cGU/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiB0XSl9LCA6c291cmNlICIoZGVmblxuIHR5cGU/XG4gIz8oOmNsanMgezp0YWcgYm9vbGVhbn0pXG4gW2VudiB0XVxuICh3aGVuXG4gIChhbmQgKHNvbWU/IHQpIChzeW1ib2w/IHQpKVxuICAobGV0XG4gICBbdmFyXG4gICAgKGJpbmRpbmcgWypwcml2YXRlLXZhci1hY2Nlc3Mtbm93YXJuKiB0cnVlXSAocmVzb2x2ZS12YXIgZW52IHQpKV1cbiAgIChpZi1zb21lXG4gICAgW3R5cGUgKDp0eXBlIHZhcildXG4gICAgdHlwZVxuICAgIChpZi1zb21lXG4gICAgIFt0eXBlICgtPiB2YXIgOmluZm8gOnR5cGUpXVxuICAgICB0eXBlXG4gICAgIChpZi1zb21lXG4gICAgICBbcHJvdG8gKDpwcm90b2NvbC1zeW1ib2wgdmFyKV1cbiAgICAgIHByb3RvXG4gICAgICAoZ2V0ICcje2NsanMuY29yZS9QZXJzaXN0ZW50SGFzaE1hcCBjbGpzLmNvcmUvTGlzdH0gdCkpKSkpKSlcbiJ9IHs6c3ltIGdldC1uYW1lc3BhY2UsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtba2V5XSBbY2VudiBrZXldXX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LW5hbWVzcGFjZVxuIChba2V5XSAoZ2V0LW5hbWVzcGFjZSBlbnYvKmNvbXBpbGVyKiBrZXkpKVxuIChbY2VudiBrZXldXG4gIChpZi1zb21lXG4gICBbbnMgKGdldC1pbiBAY2VudiBbOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyBrZXldKV1cbiAgIG5zXG4gICAod2hlbiAoPSAnY2xqcy51c2VyIGtleSkgezpuYW1lICdjbGpzLnVzZXJ9KSkpKVxuIn0gezpzeW0gZWxpZGUtcmVhZGVyLW1ldGEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbGlkZS1yZWFkZXItbWV0YVxuIFttXVxuIChkaXNzb2MgbSA6ZmlsZSA6bGluZSA6Y29sdW1uIDplbmQtY29sdW1uIDplbmQtbGluZSA6c291cmNlKSlcbiJ9IHs6c3ltIG1pc3NpbmctcmVuYW1lPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzeW0gY2Vudl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtaXNzaW5nLXJlbmFtZT9cbiBbc3ltIGNlbnZdXG4gKGxldFxuICBbbGliIChzeW1ib2wgKG5hbWVzcGFjZSBzeW0pKSBzeW0gKHN5bWJvbCAobmFtZSBzeW0pKV1cbiAgKG1pc3NpbmctdXNlPyBsaWIgc3ltIGNlbnYpKSlcbiJ9IHs6c3ltIHJlc29sdmUtaW52b2tlYWJsZS1ucywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtucyBjdXJyZW50LW5zIGVudl0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZXNvbHZlLWludm9rZWFibGUtbnNcbiBbbnMgY3VycmVudC1ucyBlbnZdXG4gKGxldFxuICBbbnMgKHJlc29sdmUtbnMtYWxpYXMgZW52IG5zKSBtb2R1bGUtdHlwZSAobnMtPm1vZHVsZS10eXBlIG5zKV1cbiAgKGNhc2VcbiAgIG1vZHVsZS10eXBlXG4gICA6anNcbiAgIHs6bmFtZVxuICAgIChzeW1ib2xcbiAgICAgKG9yXG4gICAgICAoZ2V0cyBAZW52Lypjb21waWxlciogOmpzLW1vZHVsZS1pbmRleCBucyA6bmFtZSlcbiAgICAgIChyZXNvbHZlLW5zLWFsaWFzIGVudiBucykpKSxcbiAgICA6b3AgOmpzLXZhcixcbiAgICA6bnMgJ2pzfVxuICAgOm5vZGVcbiAgIHs6bmFtZVxuICAgIChzeW1ib2xcbiAgICAgKHN0ciBjdXJyZW50LW5zKVxuICAgICAobXVuZ2Utbm9kZS1saWIgKHJlc29sdmUtbnMtYWxpYXMgZW52IG5zKSkpLFxuICAgIDpvcCA6anMtdmFyLFxuICAgIDpucyBjdXJyZW50LW5zfVxuICAgOmdsb2JhbFxuICAgezpuYW1lXG4gICAgKHN5bWJvbFxuICAgICAoc3RyIGN1cnJlbnQtbnMpXG4gICAgIChtdW5nZS1nbG9iYWwtZXhwb3J0IChyZXNvbHZlLW5zLWFsaWFzIGVudiBucykpKSxcbiAgICA6b3AgOmpzLXZhcixcbiAgICA6bnMgY3VycmVudC1uc30pKSlcbiJ9IHs6c3ltIGFuYWx5emUtbGV0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VuY2wtZW52IFtfIGJpbmRpbmdzICYgZXhwcnMgOmFzIGZvcm1dIGlzLWxvb3Agd2lkZW5lZC10YWdzXSl9LCA6c291cmNlICIoZGVmblxuIGFuYWx5emUtbGV0XG4gW2VuY2wtZW52IFtfIGJpbmRpbmdzICYgZXhwcnMgOmFzIGZvcm1dIGlzLWxvb3Agd2lkZW5lZC10YWdzXVxuICh3aGVuLW5vdFxuICAoYW5kICh2ZWN0b3I/IGJpbmRpbmdzKSAoZXZlbj8gKGNvdW50IGJpbmRpbmdzKSkpXG4gICh0aHJvd1xuICAgKGVycm9yXG4gICAgZW5jbC1lbnZcbiAgICBcImJpbmRpbmdzIG11c3QgYmUgdmVjdG9yIG9mIGV2ZW4gbnVtYmVyIG9mIGVsZW1lbnRzXCIpKSlcbiAobGV0XG4gIFtjb250ZXh0XG4gICAoOmNvbnRleHQgZW5jbC1lbnYpXG4gICBvcFxuICAgKGlmICh0cnVlPyBpcy1sb29wKSA6bG9vcCA6bGV0KVxuICAgYmluZGluZ3NcbiAgIChpZlxuICAgIHdpZGVuZWQtdGFnc1xuICAgICh2ZWNcbiAgICAgKG1hcGNhdFxuICAgICAgKGZuXG4gICAgICAgW1tuYW1lIGluaXRdIHdpZGVuZWQtdGFnXVxuICAgICAgIFsodmFyeS1tZXRhIG5hbWUgYXNzb2MgOnRhZyB3aWRlbmVkLXRhZykgaW5pdF0pXG4gICAgICAocGFydGl0aW9uIDIgYmluZGluZ3MpXG4gICAgICB3aWRlbmVkLXRhZ3MpKVxuICAgIGJpbmRpbmdzKVxuICAgW2JlcyBlbnZdXG4gICAoLT5cbiAgICBlbmNsLWVudlxuICAgIChjb25kLT4gKHRydWU/IGlzLWxvb3ApIChhc3NvYyA6aW4tbG9vcCB0cnVlKSlcbiAgICAoYW5hbHl6ZS1sZXQtYmluZGluZ3MgYmluZGluZ3Mgb3ApKVxuICAgcmVjdXItZnJhbWVcbiAgICh3aGVuXG4gICAgKHRydWU/IGlzLWxvb3ApXG4gICAgezpwYXJhbXMgYmVzLCA6ZmxhZyAoYXRvbSBuaWwpLCA6dGFncyAoYXRvbSAobWFwdiA6dGFnIGJlcykpfSlcbiAgIHJlY3VyLWZyYW1lc1xuICAgKGlmIHJlY3VyLWZyYW1lIChjb25zIHJlY3VyLWZyYW1lICpyZWN1ci1mcmFtZXMqKSAqcmVjdXItZnJhbWVzKilcbiAgIGxvb3AtbGV0c1xuICAgKGNvbmRcbiAgICAodHJ1ZT8gaXMtbG9vcClcbiAgICAqbG9vcC1sZXRzKlxuICAgIChzb21lPyAqbG9vcC1sZXRzKilcbiAgICAoY29ucyB7OnBhcmFtcyBiZXN9ICpsb29wLWxldHMqKSlcbiAgIHdhcm4tYWNjXG4gICAod2hlbiAoYW5kIGlzLWxvb3AgKG5vdCB3aWRlbmVkLXRhZ3MpKSAoYXRvbSBbXSkpXG4gICBleHByXG4gICAoaWZcbiAgICB3YXJuLWFjY1xuICAgICh3aXRoLXdhcm5pbmctaGFuZGxlcnNcbiAgICAgWyhhY2N1bXVsYXRpbmctd2FybmluZy1oYW5kbGVyIHdhcm4tYWNjKV1cbiAgICAgKGFuYWx5emUtbGV0LWJvZHkgZW52IGNvbnRleHQgZXhwcnMgcmVjdXItZnJhbWVzIGxvb3AtbGV0cykpXG4gICAgKGFuYWx5emUtbGV0LWJvZHkgZW52IGNvbnRleHQgZXhwcnMgcmVjdXItZnJhbWVzIGxvb3AtbGV0cykpXG4gICBjaGlsZHJlblxuICAgWzpiaW5kaW5ncyA6Ym9keV1cbiAgIG5pbC0+YW55XG4gICAoZm5pbCBpZGVudGl0eSAnYW55KV1cbiAgKGlmXG4gICAoYW5kXG4gICAgaXMtbG9vcFxuICAgIChub3Qgd2lkZW5lZC10YWdzKVxuICAgIChub3Q9XG4gICAgIChtYXB2IG5pbC0+YW55IEAoOnRhZ3MgcmVjdXItZnJhbWUpKVxuICAgICAobWFwdiAoY29tcCBuaWwtPmFueSA6dGFnKSBiZXMpKSlcbiAgIChyZWN1ciBlbmNsLWVudiBmb3JtIGlzLWxvb3AgQCg6dGFncyByZWN1ci1mcmFtZSkpXG4gICAoZG9cbiAgICAod2hlbiB3YXJuLWFjYyAocmVwbGF5LWFjY3VtdWxhdGVkLXdhcm5pbmdzIHdhcm4tYWNjKSlcbiAgICB7Om9wIG9wLFxuICAgICA6ZW52IGVuY2wtZW52LFxuICAgICA6YmluZGluZ3MgYmVzLFxuICAgICA6Ym9keSAoYXNzb2MgZXhwciA6Ym9keT8gdHJ1ZSksXG4gICAgIDpmb3JtIGZvcm0sXG4gICAgIDpjaGlsZHJlbiBjaGlsZHJlbn0pKSkpXG4ifSB7OnN5bSB2YXItbWV0YSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1t2YXJdIFt2YXIgZXhwci1lbnZdXX0sIDpzb3VyY2UgIihkZWZuXG4gdmFyLW1ldGFcbiAoW3Zhcl0gKHZhci1tZXRhIHZhciBuaWwpKVxuIChbdmFyIGV4cHItZW52XVxuICAobGV0XG4gICBbc3ltXG4gICAgKDpuYW1lIHZhcilcbiAgICBrc1xuICAgIFs6bnMgOmRvYyA6ZmlsZSA6bGluZSA6Y29sdW1uXVxuICAgIG1cbiAgICAobWVyZ2VcbiAgICAgKGxldFxuICAgICAgW3VzZXItbWV0YSAoOm1ldGEgdmFyKSB1a3MgKGtleXMgdXNlci1tZXRhKV1cbiAgICAgICh6aXBtYXBcbiAgICAgICB1a3NcbiAgICAgICAobWFwXG4gICAgICAgIChmbiogW3AxX180NTA3NCNdIChsaXN0ICdxdW90ZSAoZ2V0IHVzZXItbWV0YSBwMV9fNDUwNzQjKSkpXG4gICAgICAgIHVrcykpKVxuICAgICAoYXNzb2NcbiAgICAgICh6aXBtYXBcbiAgICAgICBrc1xuICAgICAgIChtYXAgKGZuKiBbcDFfXzQ1MDc1I10gKGxpc3QgJ3F1b3RlIChnZXQgdmFyIHAxX180NTA3NSMpKSkga3MpKVxuICAgICAgOm5hbWVcbiAgICAgIChjbG9qdXJlLmNvcmUvc2VxdWVuY2VcbiAgICAgICAoY2xvanVyZS5jb3JlL3NlcVxuICAgICAgICAoY2xvanVyZS5jb3JlL2NvbmNhdFxuICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0ICdxdW90ZSlcbiAgICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCAoc3ltYm9sIChuYW1lICg6bmFtZSB2YXIpKSkpKSkpXG4gICAgICA6dGVzdFxuICAgICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxuICAgICAgIChjbG9qdXJlLmNvcmUvc2VxXG4gICAgICAgIChjbG9qdXJlLmNvcmUvY29uY2F0XG4gICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgJ2Nsb2p1cmUuY29yZS93aGVuKVxuICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0IHN5bSlcbiAgICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdFxuICAgICAgICAgIChjbG9qdXJlLmNvcmUvc2VxdWVuY2VcbiAgICAgICAgICAgKGNsb2p1cmUuY29yZS9zZXFcbiAgICAgICAgICAgIChjbG9qdXJlLmNvcmUvY29uY2F0XG4gICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0ICcuLWNsanMkbGFuZyR0ZXN0KVxuICAgICAgICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCBzeW0pKSkpKSkpKVxuICAgICAgOmFyZ2xpc3RzXG4gICAgICAobGV0XG4gICAgICAgW2FyZ2xpc3RzXG4gICAgICAgICg6YXJnbGlzdHMgdmFyKVxuICAgICAgICBhcmdsaXN0cydcbiAgICAgICAgKGlmICg9ICdxdW90ZSAoZmlyc3QgYXJnbGlzdHMpKSAoc2Vjb25kIGFyZ2xpc3RzKSBhcmdsaXN0cyldXG4gICAgICAgKGxpc3RcbiAgICAgICAgJ3F1b3RlXG4gICAgICAgIChkb2FsbCAobWFwIHdpdGgtbWV0YSBhcmdsaXN0cycgKDphcmdsaXN0cy1tZXRhIHZhcikpKSkpKSldXG4gICAoaWYgZXhwci1lbnYgKGFuYWx5emUgZXhwci1lbnYgbSkgbSkpKSlcbiJ9IHs6c3ltIGRlc3VnYXItbnMtc3BlY3MsIDptZXRhIHs6ZG9jICJHaXZlbiBhbiBvcmlnaW5hbCBzZXQgb2YgbnMgc3BlY3MgZGVzdWdhciA6aW5jbHVkZS1tYWNyb3MgYW5kIDpyZWZlci1tYWNyb3NcbiAgIHVzYWdlIGludG8gb25seSBwcmltaXRpdmUgc3BlYyBmb3JtcyAtIDp1c2UsIDpyZXF1aXJlLCA6dXNlLW1hY3JvcyxcbiAgIDpyZXF1aXJlLW1hY3Jvcy4gSWYgYSBsaWJyYXJ5IGluY2x1ZGVzIGEgbWFjcm8gZmlsZSBvZiB3aXRoIHRoZSBzYW1lIG5hbWVcbiAgIGFzIHRoZSBuYW1lc3BhY2Ugd2lsbCBhbHNvIGJlIGRlc3VnYXJlZC4iLCA6YXJnbGlzdHMgKFthcmdzXSl9LCA6c291cmNlICIoZGVmblxuIGRlc3VnYXItbnMtc3BlY3NcbiBcIkdpdmVuIGFuIG9yaWdpbmFsIHNldCBvZiBucyBzcGVjcyBkZXN1Z2FyIDppbmNsdWRlLW1hY3JvcyBhbmQgOnJlZmVyLW1hY3Jvc1xcbiAgIHVzYWdlIGludG8gb25seSBwcmltaXRpdmUgc3BlYyBmb3JtcyAtIDp1c2UsIDpyZXF1aXJlLCA6dXNlLW1hY3JvcyxcXG4gICA6cmVxdWlyZS1tYWNyb3MuIElmIGEgbGlicmFyeSBpbmNsdWRlcyBhIG1hY3JvIGZpbGUgb2Ygd2l0aCB0aGUgc2FtZSBuYW1lXFxuICAgYXMgdGhlIG5hbWVzcGFjZSB3aWxsIGFsc28gYmUgZGVzdWdhcmVkLlwiXG4gW2FyZ3NdXG4gKGxldFxuICBbezprZXlzIFtyZXF1aXJlXSwgOmFzIGluZGV4ZWR9XG4gICAoLT4+IGFyZ3MgKG1hcCAoZm4gW1trICYgc3BlY3NdXSBbayAoaW50byBbXSBzcGVjcyldKSkgKGludG8ge30pKVxuICAgc3VnYXIta2V5c1xuICAgI3s6aW5jbHVkZS1tYWNyb3MgOnJlZmVyLW1hY3Jvc31cbiAgIHJlbW92ZS1mcm9tLXNwZWNcbiAgIChmblxuICAgIFtwcmVkIHNwZWNdXG4gICAgKGlmLW5vdFxuICAgICAoYW5kIChzZXF1ZW50aWFsPyBzcGVjKSAoc29tZSBwcmVkIHNwZWMpKVxuICAgICBzcGVjXG4gICAgIChsZXRcbiAgICAgIFtbbCByXSAoc3BsaXQtd2l0aCAoY29tcGxlbWVudCBwcmVkKSBzcGVjKV1cbiAgICAgIChyZWN1ciBwcmVkIChjb25jYXQgbCAoZHJvcCAyIHIpKSkpKSlcbiAgIHJlcGxhY2UtcmVmZXItbWFjcm9zXG4gICAoZm5cbiAgICBbc3BlY11cbiAgICAoaWYtbm90XG4gICAgIChzZXF1ZW50aWFsPyBzcGVjKVxuICAgICBzcGVjXG4gICAgIChtYXAgKGZuIFt4XSAoaWYgKD0geCA6cmVmZXItbWFjcm9zKSA6cmVmZXIgeCkpIHNwZWMpKSlcbiAgIHJlbG9hZC1zcGVjP1xuICAgKGZuKiBbcDFfXzQ1MDk5I10gKCN7OnJlbG9hZCA6cmVsb2FkLWFsbH0gcDFfXzQ1MDk5IykpXG4gICB0by1tYWNyby1zcGVjc1xuICAgKGZuXG4gICAgW3NwZWNzXVxuICAgICgtPj5cbiAgICAgc3BlY3NcbiAgICAgKGZpbHRlclxuICAgICAgKGZuXG4gICAgICAgW3hdXG4gICAgICAgKG9yXG4gICAgICAgIChhbmQgKHNlcXVlbnRpYWw/IHgpIChzb21lIHN1Z2FyLWtleXMgeCkpXG4gICAgICAgIChyZWxvYWQtc3BlYz8geClcbiAgICAgICAgKG1hY3JvLWF1dG9sb2FkLW5zPyB4KSkpKVxuICAgICAobWFwXG4gICAgICAoZm5cbiAgICAgICBbeF1cbiAgICAgICAoaWYtbm90XG4gICAgICAgIChyZWxvYWQtc3BlYz8geClcbiAgICAgICAgKC0+PlxuICAgICAgICAgeFxuICAgICAgICAgKHJlbW92ZS1mcm9tLXNwZWMgI3s6aW5jbHVkZS1tYWNyb3N9KVxuICAgICAgICAgKHJlbW92ZS1mcm9tLXNwZWMgI3s6cmVmZXJ9KVxuICAgICAgICAgKHJlbW92ZS1mcm9tLXNwZWMgI3s6cmVuYW1lfSlcbiAgICAgICAgIChyZXBsYWNlLXJlZmVyLW1hY3JvcykpXG4gICAgICAgIHgpKSkpKVxuICAgcmVtb3ZlLXN1Z2FyXG4gICAocGFydGlhbCByZW1vdmUtZnJvbS1zcGVjIHN1Z2FyLWtleXMpXVxuICAoaWYtc29tZVxuICAgW3JlcXVpcmUtc3BlY3MgKHNlcSAodG8tbWFjcm8tc3BlY3MgcmVxdWlyZSkpXVxuICAgKG1hcFxuICAgIChmblxuICAgICBbeF1cbiAgICAgKGlmLW5vdFxuICAgICAgKHJlbG9hZC1zcGVjPyB4KVxuICAgICAgKGxldCBbW2sgdl0geF0gKGNvbnMgayAobWFwIHJlbW92ZS1zdWdhciB2KSkpXG4gICAgICB4KSlcbiAgICAodXBkYXRlLWluIGluZGV4ZWQgWzpyZXF1aXJlLW1hY3Jvc10gKGZuaWwgaW50byBbXSkgcmVxdWlyZS1zcGVjcykpXG4gICBhcmdzKSkpXG4ifSB7OnN5bSBqcy10YWc/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4ganMtdGFnP1xuIFt4XVxuIChhbmQgKHN5bWJvbD8geCkgKG9yICg9ICdqcyB4KSAoPSBcImpzXCIgKG5hbWVzcGFjZSB4KSkpKSlcbiJ9IHs6c3ltIGVuc3VyZS1kZWZzLCA6bWV0YSB7OmRvYyAiRW5zdXJlcyB0aGF0IGEgbm9uLW5pbCBkZWZzIG1hcCBleGlzdHMgaW4gdGhlIGNvbXBpbGVyIHN0YXRlIGZvciBhIGdpdmVuXG4gIG5zLiAoQSBub24tbmlsIGRlZnMgbWFwIHNpZ25pZmllcyB0aGF0IHRoZSBuYW1lc3BhY2UgaGFzIGJlZW4gYW5hbHl6ZWQuKSIsIDphcmdsaXN0cyAoW25zXSl9LCA6c291cmNlICIoZGVmblxuIGVuc3VyZS1kZWZzXG4gXCJFbnN1cmVzIHRoYXQgYSBub24tbmlsIGRlZnMgbWFwIGV4aXN0cyBpbiB0aGUgY29tcGlsZXIgc3RhdGUgZm9yIGEgZ2l2ZW5cXG4gIG5zLiAoQSBub24tbmlsIGRlZnMgbWFwIHNpZ25pZmllcyB0aGF0IHRoZSBuYW1lc3BhY2UgaGFzIGJlZW4gYW5hbHl6ZWQuKVwiXG4gW25zXVxuIChzd2FwIVxuICBlbnYvKmNvbXBpbGVyKlxuICB1cGRhdGUtaW5cbiAgWzpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXMgbnMgOmRlZnNdXG4gIChmbiogW3AxX180NTEyNCNdIChvciBwMV9fNDUxMjQjIHt9KSkpKVxuIn0gezpzeW0gYW5hbHl6ZS1tYXAsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IGZvcm1dKX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHl6ZS1tYXBcbiBbZW52IGZvcm1dXG4gKGxldFxuICBbZXhwci1lbnZcbiAgIChhc3NvYyBlbnYgOmNvbnRleHQgOmV4cHIpXG4gICBrc1xuICAgKGRpc2FsbG93aW5nLXJlY3VyXG4gICAgKG1hcHZcbiAgICAgKGZuKiBbcDFfXzQ1MTEzI10gKGFuYWx5emUgZXhwci1lbnYgcDFfXzQ1MTEzIykpXG4gICAgIChrZXlzIGZvcm0pKSlcbiAgIHZzXG4gICAoZGlzYWxsb3dpbmctcmVjdXJcbiAgICAobWFwdlxuICAgICAoZm4qIFtwMV9fNDUxMTQjXSAoYW5hbHl6ZSBleHByLWVudiBwMV9fNDUxMTQjKSlcbiAgICAgKHZhbHMgZm9ybSkpKV1cbiAgKGFuYWx5emUtd3JhcC1tZXRhXG4gICB7Om9wIDptYXAsXG4gICAgOmVudiBlbnYsXG4gICAgOmZvcm0gZm9ybSxcbiAgICA6a2V5cyBrcyxcbiAgICA6dmFscyB2cyxcbiAgICA6Y2hpbGRyZW4gWzprZXlzIDp2YWxzXSxcbiAgICA6dGFnICdjbGpzLmNvcmUvSU1hcH0pKSlcbiJ9IHs6c3ltIE5VTUVSSUNfU0VULCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBOVU1FUklDX1NFVCAnI3thbnkgbG9uZyBkb3VibGUgbnVtYmVyfSlcbiJ9IHs6c3ltIGFuYWx5emUtcmVjb3JkLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiB4XSl9LCA6c291cmNlICIoZGVmblxuIGFuYWx5emUtcmVjb3JkXG4gW2VudiB4XVxuIChsZXRcbiAgW19pdGVtc19cbiAgIChkaXNhbGxvd2luZy1yZWN1ciAoYW5hbHl6ZSAoYXNzb2MgZW52IDpjb250ZXh0IDpleHByKSAoaW50byB7fSB4KSkpXG4gICBbbnMgbmFtZV1cbiAgIChyZWNvcmQtbnMrbmFtZSB4KV1cbiAgezpvcCA6Y29uc3QsXG4gICA6dmFsIHgsXG4gICA6ZW52IGVudixcbiAgIDpmb3JtIHgsXG4gICA6dGFnIChzeW1ib2wgKHN0ciBucykgKHN0ciBuYW1lKSl9KSlcbiJ9IHs6c3ltIGFuYWx5emUtc2VxKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtvcCBlbnYgZm9ybSBuYW1lIG9wdHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHl6ZS1zZXEqXG4gW29wIGVudiBmb3JtIG5hbWUgb3B0c11cbiAoaWZcbiAgKGNvbnRhaW5zPyBzcGVjaWFscyBvcClcbiAgKHBhcnNlIG9wIGVudiBmb3JtIG5hbWUgb3B0cylcbiAgKHBhcnNlLWludm9rZSBlbnYgZm9ybSkpKVxuIn0gezpzeW0gY29uc3RhbnRzLW5zLXN5bSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBjb25zdGFudHMtbnMtc3ltXG4gXCJUaGUgbmFtZXNwYWNlIG9mIHRoZSBjb25zdGFudHMgdGFibGUgYXMgYSBzeW1ib2wuXCJcbiAnY2xqcy5jb3JlLmNvbnN0YW50cylcbiJ9IHs6c3ltIHJlc29sdmUtYWxpYXMsIDptZXRhIHs6ZG9jICJUYWtlcyBhIG5hbWVzcGFjZSBhbmQgYW4gdW5xdWFsaWZpZWQgc3ltYm9sIGFuZCBwb3RlbnRpYWxseSByZXR1cm5zIGEgbmV3XG4gIHN5bWJvbCB0byBiZSB1c2VkIGluIGxpZXUgb2YgdGhlIG9yaWdpbmFsLiIsIDphcmdsaXN0cyAoW25zIHN5bV0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZXNvbHZlLWFsaWFzXG4gXCJUYWtlcyBhIG5hbWVzcGFjZSBhbmQgYW4gdW5xdWFsaWZpZWQgc3ltYm9sIGFuZCBwb3RlbnRpYWxseSByZXR1cm5zIGEgbmV3XFxuICBzeW1ib2wgdG8gYmUgdXNlZCBpbiBsaWV1IG9mIHRoZSBvcmlnaW5hbC5cIlxuIFtucyBzeW1dXG4gKGlmXG4gIChhbmQgKD0gJ2NsanMuY29yZSBucykgKCcje2FnZXQgYXNldH0gc3ltKSAoY2hlY2tlZC1hcnJheXMpKVxuICAoZ2V0LWluXG4gICAnezp3YXJuIHthZ2V0IGNoZWNrZWQtYWdldCwgYXNldCBjaGVja2VkLWFzZXR9LFxuICAgICA6ZXJyb3Ige2FnZXQgY2hlY2tlZC1hZ2V0JywgYXNldCBjaGVja2VkLWFzZXQnfX1cbiAgIFsoY2hlY2tlZC1hcnJheXMpIHN5bV0pXG4gIHN5bSkpXG4ifSB7OnN5bSAqY2xqcy1kZXAtc2V0KiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmNsanMtZGVwLXNldCogKHdpdGgtbWV0YSAje30gezpkZXAtcGF0aCBbXX0pKVxuIn0gezpzeW0gcmVzb2x2ZS12YXIsIDptZXRhIHs6ZG9jICJSZXNvbHZlIGEgdmFyLiBBY2NlcHRzIGEgc2lkZS1lZmZlY3RpbmcgY29uZmlybSBmbiBmb3IgcHJvZHVjaW5nXG4gICB3YXJuaW5ncyBhYm91dCB1bnJlc29sdmVkIHZhcnMuIiwgOmFyZ2xpc3RzIFtbZW52IHN5bV0gW2VudiBzeW0gY29uZmlybV0gW2VudiBzeW0gY29uZmlybSBkZWZhdWx0P11dfSwgOnNvdXJjZSAiKGRlZm5cbiByZXNvbHZlLXZhclxuIFwiUmVzb2x2ZSBhIHZhci4gQWNjZXB0cyBhIHNpZGUtZWZmZWN0aW5nIGNvbmZpcm0gZm4gZm9yIHByb2R1Y2luZ1xcbiAgIHdhcm5pbmdzIGFib3V0IHVucmVzb2x2ZWQgdmFycy5cIlxuIChbZW52IHN5bV0gKHJlc29sdmUtdmFyIGVudiBzeW0gbmlsKSlcbiAoW2VudiBzeW0gY29uZmlybV0gKHJlc29sdmUtdmFyIGVudiBzeW0gY29uZmlybSB0cnVlKSlcbiAoW2VudiBzeW0gY29uZmlybSBkZWZhdWx0P11cbiAgKGxldFxuICAgW2xvY2FscyAoOmxvY2FscyBlbnYpXVxuICAgKGlmXG4gICAgIz8oOmNsaiAoPSBcImpzXCIgKG5hbWVzcGFjZSBzeW0pKSA6Y2xqcyAoaWRlbnRpY2FsPyBcImpzXCIgKG5hbWVzcGFjZSBzeW0pKSlcbiAgICAobGV0XG4gICAgIFtzeW1uXG4gICAgICAoLT4gc3ltIG5hbWUgc3ltYm9sKVxuICAgICAgc2hhZG93ZWQtYnktbG9jYWxcbiAgICAgIChoYW5kbGUtc3ltYm9sLWxvY2FsIHN5bW4gKGdldCBsb2NhbHMgc3ltbikpXVxuICAgICAoY29uZFxuICAgICAgKHNvbWU/IHNoYWRvd2VkLWJ5LWxvY2FsKVxuICAgICAgKGRvXG4gICAgICAgKHdhcm5pbmcgOmpzLXNoYWRvd2VkLWJ5LWxvY2FsIGVudiB7Om5hbWUgc3ltfSlcbiAgICAgICAoYXNzb2Mgc2hhZG93ZWQtYnktbG9jYWwgOm9wIDpsb2NhbCkpXG4gICAgICA6ZWxzZVxuICAgICAgKGxldFxuICAgICAgIFtwcmUgKC0+PiAoc3RyaW5nL3NwbGl0IChuYW1lIHN5bSkgI1wiXFwuXCIpIChtYXAgc3ltYm9sKSB2ZWMpXVxuICAgICAgICh3aGVuXG4gICAgICAgIChhbmRcbiAgICAgICAgIChub3QgKGhhcy1leHRlcm4/IHByZSkpXG4gICAgICAgICAobm90ICgtPiBzeW0gbWV0YSA6Y2xqcy5hbmFseXplci9uby1yZXNvbHZlKSkpXG4gICAgICAgIChzd2FwIVxuICAgICAgICAgZW52Lypjb21waWxlcipcbiAgICAgICAgIHVwZGF0ZS1pblxuICAgICAgICAgKGludG9cbiAgICAgICAgICBbOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyAoLT4gZW52IDpucyA6bmFtZSkgOmV4dGVybnNdXG4gICAgICAgICAgcHJlKVxuICAgICAgICAgbWVyZ2VcbiAgICAgICAgIHt9KSlcbiAgICAgICAobWVyZ2VcbiAgICAgICAgezpuYW1lIHN5bSxcbiAgICAgICAgIDpvcCA6anMtdmFyLFxuICAgICAgICAgOm5zICdqcyxcbiAgICAgICAgIDp0YWdcbiAgICAgICAgICh3aXRoLW1ldGFcbiAgICAgICAgICAob3IgKGpzLXRhZyBwcmUpICg6dGFnIChtZXRhIHN5bSkpICdqcylcbiAgICAgICAgICB7OnByZWZpeCBwcmV9KX1cbiAgICAgICAgKHdoZW4tbGV0XG4gICAgICAgICBbcmV0LXRhZyAoanMtdGFnIHByZSA6cmV0LXRhZyldXG4gICAgICAgICB7OmpzLWZuLXZhciB0cnVlLCA6cmV0LXRhZyByZXQtdGFnfSkpKSkpXG4gICAgKGxldFxuICAgICBbc1xuICAgICAgKHN0ciBzeW0pXG4gICAgICBsYlxuICAgICAgKGhhbmRsZS1zeW1ib2wtbG9jYWwgc3ltIChnZXQgbG9jYWxzIHN5bSkpXG4gICAgICBjdXJyZW50LW5zXG4gICAgICAoLT4gZW52IDpucyA6bmFtZSldXG4gICAgIChjb25kXG4gICAgICAoc29tZT8gbGIpXG4gICAgICAoYXNzb2MgbGIgOm9wIDpsb2NhbClcbiAgICAgIChzb21lPyAobmFtZXNwYWNlIHN5bSkpXG4gICAgICAobGV0XG4gICAgICAgW25zXG4gICAgICAgIChuYW1lc3BhY2Ugc3ltKVxuICAgICAgICBuc1xuICAgICAgICAoaWZcbiAgICAgICAgICM/KDpjbGogKD0gXCJjbG9qdXJlLmNvcmVcIiBucykgOmNsanMgKGlkZW50aWNhbD8gXCJjbG9qdXJlLmNvcmVcIiBucykpXG4gICAgICAgICBcImNsanMuY29yZVwiXG4gICAgICAgICBucylcbiAgICAgICAgZnVsbC1uc1xuICAgICAgICAocmVzb2x2ZS1ucy1hbGlhc1xuICAgICAgICAgZW52XG4gICAgICAgICBuc1xuICAgICAgICAgKG9yXG4gICAgICAgICAgKGFuZFxuICAgICAgICAgICAoanMtbW9kdWxlLWV4aXN0cz8gbnMpXG4gICAgICAgICAgIChnZXRzIEBlbnYvKmNvbXBpbGVyKiA6anMtbW9kdWxlLWluZGV4IG5zIDpuYW1lKSlcbiAgICAgICAgICAoc3ltYm9sIG5zKSkpXVxuICAgICAgICh3aGVuXG4gICAgICAgIChzb21lPyBjb25maXJtKVxuICAgICAgICAod2hlbiAobm90PSBjdXJyZW50LW5zIGZ1bGwtbnMpIChjb25maXJtLW5zIGVudiBmdWxsLW5zKSlcbiAgICAgICAgKGNvbmZpcm0gZW52IGZ1bGwtbnMgKHN5bWJvbCAobmFtZSBzeW0pKSkpXG4gICAgICAgKHJlc29sdmUqIGVudiBzeW0gZnVsbC1ucyBjdXJyZW50LW5zKSlcbiAgICAgIChkb3R0ZWQtc3ltYm9sPyBzeW0pXG4gICAgICAobGV0XG4gICAgICAgW2lkeFxuICAgICAgICAoLmluZGV4T2YgcyBcIi5cIilcbiAgICAgICAgcHJlZml4XG4gICAgICAgIChzeW1ib2wgKHN1YnMgcyAwIGlkeCkpXG4gICAgICAgIHN1ZmZpeFxuICAgICAgICAoc3VicyBzIChpbmMgaWR4KSldXG4gICAgICAgKGlmLWxldFxuICAgICAgICBbcmVzb2x2ZWQgKHJlc29sdmUtdmFyIGVudiBwcmVmaXggbmlsIGZhbHNlKV1cbiAgICAgICAgKHVwZGF0ZVxuICAgICAgICAgcmVzb2x2ZWRcbiAgICAgICAgIDpuYW1lXG4gICAgICAgICAoZm4qIFtwMV9fNDUwNzMjXSAoc3ltYm9sIChzdHIgcDFfXzQ1MDczIyBcIi5cIiBzdWZmaXgpKSkpXG4gICAgICAgIChsZXRcbiAgICAgICAgIFtzXG4gICAgICAgICAgKHN0ciAoY29uZC0+PiBzIChnb29nLW1vZHVsZS1kZXA/IHN5bSkgKHJlc29sdmUtaW1wb3J0IGVudikpKVxuICAgICAgICAgIGlkeFxuICAgICAgICAgICgubGFzdEluZGV4T2YgKHN0ciBzKSBcIi5cIilcbiAgICAgICAgICBwcmVcbiAgICAgICAgICAoc3VicyBzIDAgaWR4KVxuICAgICAgICAgIHN1ZlxuICAgICAgICAgIChzdWJzIHMgKGluYyBpZHgpKV1cbiAgICAgICAgIHs6b3AgOnZhciwgOm5hbWUgKHN5bWJvbCBwcmUgc3VmKSwgOm5zIChzeW1ib2wgcHJlKX0pKSlcbiAgICAgIChzb21lP1xuICAgICAgIChnZXRzXG4gICAgICAgIEBlbnYvKmNvbXBpbGVyKlxuICAgICAgICA6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzXG4gICAgICAgIGN1cnJlbnQtbnNcbiAgICAgICAgOnVzZXNcbiAgICAgICAgc3ltKSlcbiAgICAgIChsZXRcbiAgICAgICBbZnVsbC1uc1xuICAgICAgICAoZ2V0c1xuICAgICAgICAgQGVudi8qY29tcGlsZXIqXG4gICAgICAgICA6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzXG4gICAgICAgICBjdXJyZW50LW5zXG4gICAgICAgICA6dXNlc1xuICAgICAgICAgc3ltKV1cbiAgICAgICAocmVzb2x2ZSogZW52IHN5bSBmdWxsLW5zIGN1cnJlbnQtbnMpKVxuICAgICAgKHNvbWU/XG4gICAgICAgKGdldHNcbiAgICAgICAgQGVudi8qY29tcGlsZXIqXG4gICAgICAgIDpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXNcbiAgICAgICAgY3VycmVudC1uc1xuICAgICAgICA6cmVuYW1lc1xuICAgICAgICBzeW0pKVxuICAgICAgKGxldFxuICAgICAgIFtxdWFsaWZpZWQtc3ltYm9sXG4gICAgICAgIChnZXRzXG4gICAgICAgICBAZW52Lypjb21waWxlcipcbiAgICAgICAgIDpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXNcbiAgICAgICAgIGN1cnJlbnQtbnNcbiAgICAgICAgIDpyZW5hbWVzXG4gICAgICAgICBzeW0pXG4gICAgICAgIGZ1bGwtbnNcbiAgICAgICAgKHN5bWJvbCAobmFtZXNwYWNlIHF1YWxpZmllZC1zeW1ib2wpKVxuICAgICAgICBzeW1cbiAgICAgICAgKHN5bWJvbCAobmFtZSBxdWFsaWZpZWQtc3ltYm9sKSldXG4gICAgICAgKHJlc29sdmUqIGVudiBzeW0gZnVsbC1ucyBjdXJyZW50LW5zKSlcbiAgICAgIChzb21lP1xuICAgICAgIChnZXRzXG4gICAgICAgIEBlbnYvKmNvbXBpbGVyKlxuICAgICAgICA6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzXG4gICAgICAgIGN1cnJlbnQtbnNcbiAgICAgICAgOmltcG9ydHNcbiAgICAgICAgc3ltKSlcbiAgICAgIChyZWN1clxuICAgICAgIGVudlxuICAgICAgIChnZXRzXG4gICAgICAgIEBlbnYvKmNvbXBpbGVyKlxuICAgICAgICA6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzXG4gICAgICAgIGN1cnJlbnQtbnNcbiAgICAgICAgOmltcG9ydHNcbiAgICAgICAgc3ltKVxuICAgICAgIGNvbmZpcm1cbiAgICAgICBkZWZhdWx0PylcbiAgICAgIChzb21lP1xuICAgICAgIChnZXRzXG4gICAgICAgIEBlbnYvKmNvbXBpbGVyKlxuICAgICAgICA6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzXG4gICAgICAgIGN1cnJlbnQtbnNcbiAgICAgICAgOmRlZnNcbiAgICAgICAgc3ltKSlcbiAgICAgIChkb1xuICAgICAgICh3aGVuIChzb21lPyBjb25maXJtKSAoY29uZmlybSBlbnYgY3VycmVudC1ucyBzeW0pKVxuICAgICAgIChtZXJnZVxuICAgICAgICAoZ2V0c1xuICAgICAgICAgQGVudi8qY29tcGlsZXIqXG4gICAgICAgICA6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzXG4gICAgICAgICBjdXJyZW50LW5zXG4gICAgICAgICA6ZGVmc1xuICAgICAgICAgc3ltKVxuICAgICAgICB7Om5hbWUgKHN5bWJvbCAoc3RyIGN1cnJlbnQtbnMpIChzdHIgc3ltKSksXG4gICAgICAgICA6b3AgOnZhcixcbiAgICAgICAgIDpucyBjdXJyZW50LW5zfSkpXG4gICAgICAoY29yZS1uYW1lPyBlbnYgc3ltKVxuICAgICAgKGxldFxuICAgICAgIFtzeW0gKHJlc29sdmUtYWxpYXMgJ2NsanMuY29yZSBzeW0pXVxuICAgICAgICh3aGVuIChzb21lPyBjb25maXJtKSAoY29uZmlybSBlbnYgJ2NsanMuY29yZSBzeW0pKVxuICAgICAgIChtZXJnZVxuICAgICAgICAoZ2V0c1xuICAgICAgICAgQGVudi8qY29tcGlsZXIqXG4gICAgICAgICA6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzXG4gICAgICAgICAnY2xqcy5jb3JlXG4gICAgICAgICA6ZGVmc1xuICAgICAgICAgc3ltKVxuICAgICAgICB7Om5hbWUgKHN5bWJvbCBcImNsanMuY29yZVwiIChzdHIgc3ltKSksXG4gICAgICAgICA6b3AgOnZhcixcbiAgICAgICAgIDpucyAnY2xqcy5jb3JlfSkpXG4gICAgICAoaW52b2tlYWJsZS1ucz8gcyBlbnYpXG4gICAgICAocmVzb2x2ZS1pbnZva2VhYmxlLW5zIHMgY3VycmVudC1ucyBlbnYpXG4gICAgICA6ZWxzZVxuICAgICAgKHdoZW5cbiAgICAgICBkZWZhdWx0P1xuICAgICAgICh3aGVuIChzb21lPyBjb25maXJtKSAoY29uZmlybSBlbnYgY3VycmVudC1ucyBzeW0pKVxuICAgICAgIChtZXJnZVxuICAgICAgICAoZ2V0c1xuICAgICAgICAgQGVudi8qY29tcGlsZXIqXG4gICAgICAgICA6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzXG4gICAgICAgICBjdXJyZW50LW5zXG4gICAgICAgICA6ZGVmc1xuICAgICAgICAgc3ltKVxuICAgICAgICB7Om5hbWUgKHN5bWJvbCAoc3RyIGN1cnJlbnQtbnMpIChzdHIgc3ltKSksXG4gICAgICAgICA6b3AgOnZhcixcbiAgICAgICAgIDpucyBjdXJyZW50LW5zfSkpKSkpKSkpXG4ifSB7OnN5bSBqcy1zdGFyLXNlZywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIGpzLXN0YXItc2VnXG4gW3NdXG4gKGxldFxuICBbaWR4ICguaW5kZXhPZiBzIFwifntcIildXG4gIChpZlxuICAgKD09IC0xIGlkeClcbiAgIChsaXN0IHMpXG4gICAobGV0XG4gICAgW2VuZCAoLmluZGV4T2YgcyBcIn1cIiBpZHgpXVxuICAgIChsYXp5LXNlcVxuICAgICAoY29ucyAoc3VicyBzIDAgaWR4KSAoanMtc3Rhci1zZWcgKHN1YnMgcyAoaW5jIGVuZCkpKSkpKSkpKVxuIn0gezpzeW0gZGVwLWhhcy1nbG9iYWwtZXhwb3J0cz8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbW9kdWxlXSl9LCA6c291cmNlICIoZGVmblxuIGRlcC1oYXMtZ2xvYmFsLWV4cG9ydHM/XG4gW21vZHVsZV1cbiAobGV0XG4gIFtbbW9kdWxlIF9dXG4gICAobGliJnN1YmxpYiBtb2R1bGUpXG4gICBnbG9iYWwtZXhwb3J0c1xuICAgKGdldC1pblxuICAgIEBlbnYvKmNvbXBpbGVyKlxuICAgIFs6anMtZGVwZW5kZW5jeS1pbmRleCAoc3RyIG1vZHVsZSkgOmdsb2JhbC1leHBvcnRzXSldXG4gIChvclxuICAgKGNvbnRhaW5zPyBnbG9iYWwtZXhwb3J0cyAoc3ltYm9sIG1vZHVsZSkpXG4gICAoY29udGFpbnM/IGdsb2JhbC1leHBvcnRzIChuYW1lIG1vZHVsZSkpKSkpXG4ifSB7OnN5bSByZWdpc3Rlci1zcGVjcywgOm1ldGEgezpkb2MgIlJlZ2lzdGVycyBzcGVjZWQgdmFycyBmb3VuZCBpbiBhIG5hbWVzcGFjZSBhbmFseXNpcyBjYWNoZS4iLCA6YXJnbGlzdHMgKFtjYWNoZWQtbnNdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVnaXN0ZXItc3BlY3NcbiBcIlJlZ2lzdGVycyBzcGVjZWQgdmFycyBmb3VuZCBpbiBhIG5hbWVzcGFjZSBhbmFseXNpcyBjYWNoZS5cIlxuIFtjYWNoZWQtbnNdXG4gIz8oOmNsaiAodHJ5IChsb2NraW5nIGxvYWQtbXV0ZXggKGNsb2p1cmUuY29yZS9yZXF1aXJlIChxdW90ZSBjbGpzLnNwZWMuYWxwaGEpKSkgKGNhdGNoIFRocm93YWJsZSB0KSkpXG4gKGxldFxuICBbezprZXlzIFtyZWdpc3RyeS1yZWYgc3BlY2VkLXZhcnNdfSAoZ2V0LXNwZWMtdmFycyldXG4gICh3aGVuLWxldFxuICAgW3JlZ2lzdHJ5IChzZXEgKDpjbGpzLnNwZWMvcmVnaXN0cnktcmVmIGNhY2hlZC1ucykpXVxuICAgKHdoZW4gcmVnaXN0cnktcmVmIChzd2FwISBAcmVnaXN0cnktcmVmIGludG8gcmVnaXN0cnkpKSlcbiAgKHdoZW4tbGV0XG4gICBbdmFycyAoc2VxICg6Y2xqcy5zcGVjL3NwZWNlZC12YXJzIGNhY2hlZC1ucykpXVxuICAgKHdoZW4gc3BlY2VkLXZhcnMgKHN3YXAhIEBzcGVjZWQtdmFycyBpbnRvIHZhcnMpKSkpKVxuIn0gezpzeW0gZ2V0LWV4dGVybnMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmbiBnZXQtZXh0ZXJucyBbXSAoOmNsanMuYW5hbHl6ZXIvZXh0ZXJucyBAZW52Lypjb21waWxlciopKVxuIn0gezpzeW0gKnBhc3NlcyosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpwYXNzZXMqIG5pbClcbiJ9IHs6c3ltIGhhcy1leHRlcm4/KiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1twcmUgZXh0ZXJuc10gW3ByZSBleHRlcm5zIHRvcF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBoYXMtZXh0ZXJuPypcbiAoW3ByZSBleHRlcm5zXVxuICAobGV0XG4gICBbcHJlXG4gICAgKGlmLXNvbWVcbiAgICAgW21lIChmaW5kIChnZXQtaW4gZXh0ZXJucyAnW1dpbmRvdyBwcm90b3R5cGVdKSAoZmlyc3QgcHJlKSldXG4gICAgIChpZi1zb21lXG4gICAgICBbdGFnICgtPiBtZSBmaXJzdCBtZXRhIDp0YWcpXVxuICAgICAgKGludG8gW3RhZyAncHJvdG90eXBlXSAobmV4dCBwcmUpKVxuICAgICAgcHJlKVxuICAgICBwcmUpXVxuICAgKGhhcy1leHRlcm4/KiBwcmUgZXh0ZXJucyBleHRlcm5zKSkpXG4gKFtwcmUgZXh0ZXJucyB0b3BdXG4gIChjb25kXG4gICAoZW1wdHk/IHByZSlcbiAgIHRydWVcbiAgIDplbHNlXG4gICAobGV0XG4gICAgW3ggKGZpcnN0IHByZSkgbWUgKGZpbmQgZXh0ZXJucyB4KV1cbiAgICAoY29uZFxuICAgICAobm90IG1lKVxuICAgICBmYWxzZVxuICAgICA6ZWxzZVxuICAgICAobGV0XG4gICAgICBbW3gnIGV4dGVybnMnXSBtZSB4bWV0YSAobWV0YSB4JyldXG4gICAgICAoaWZcbiAgICAgICAoYW5kICg9ICdGdW5jdGlvbiAoOnRhZyB4bWV0YSkpICg6Y3RvciB4bWV0YSkpXG4gICAgICAgKG9yXG4gICAgICAgIChoYXMtZXh0ZXJuPyogKGludG8gJ1twcm90b3R5cGVdIChuZXh0IHByZSkpIGV4dGVybnMnIHRvcClcbiAgICAgICAgKGhhcy1leHRlcm4/KiAobmV4dCBwcmUpIGV4dGVybnMnIHRvcCkpXG4gICAgICAgKHJlY3VyIChuZXh0IHByZSkgZXh0ZXJucycgdG9wKSkpKSkpKSlcbiJ9IHs6c3ltIGhhbmRsZS1zeW1ib2wtbG9jYWwsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3ltIGxiXSl9LCA6c291cmNlICIoZGVmbiBoYW5kbGUtc3ltYm9sLWxvY2FsIFtzeW0gbGJdIChpZiAoc3ltYm9sPyBsYikgezpuYW1lIHN5bX0gbGIpKVxuIn0gezpzeW0gZ2V0LWV4cGFuZGVyLW5zLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBuc3RyXSl9LCA6c291cmNlICIoZGVmblxuIGdldC1leHBhbmRlci1uc1xuIFtlbnYgbnN0cl1cbiAobGV0XG4gIFtyZXNcbiAgIChvclxuICAgIChyZXNvbHZlLW1hY3JvLW5zLWFsaWFzIGVudiBuc3RyIG5pbClcbiAgICAocmVzb2x2ZS1ucy1hbGlhcyBlbnYgbnN0ciBuaWwpKVxuICAgbnN0clxuICAgKGlmIChzb21lPyByZXMpIChzdHIgcmVzKSBuc3RyKV1cbiAgKGNvbmRcbiAgICM/QCg6Y2xqIFsoPSBcImNsb2p1cmUuY29yZVwiIG5zdHIpIChmaW5kLW5zIChxdW90ZSBjbGpzLmNvcmUpKV0gOmNsanMgWyhpZGVudGljYWw/IFwiY2xvanVyZS5jb3JlXCIgbnN0cikgKGZpbmQtbWFjcm9zLW5zIGltcGwvQ0xKU19DT1JFX01BQ1JPU19TWU0pXSlcbiAgICM/QCg6Y2xqIFsoPSBcImNsb2p1cmUucmVwbFwiIG5zdHIpIChmaW5kLW5zIChxdW90ZSBjbGpzLnJlcGwpKV0gOmNsanMgWyhpZGVudGljYWw/IFwiY2xvanVyZS5yZXBsXCIgbnN0cikgKGZpbmQtbWFjcm9zLW5zIChxdW90ZSBjbGpzLnJlcGwpKV0pXG4gICAjP0AoOmNsaiBbKC5jb250YWlucyBuc3RyIFwiLlwiKSAoZmluZC1ucyAoc3ltYm9sIG5zdHIpKV0gOmNsanMgWyhnb29nLnN0cmluZy9jb250YWlucyBuc3RyIFwiLlwiKSAoZmluZC1tYWNyb3MtbnMgKHN5bWJvbCBuc3RyKSldKVxuICAgOmVsc2VcbiAgIChzb21lLT5cbiAgICBlbnZcbiAgICA6bnNcbiAgICA6cmVxdWlyZS1tYWNyb3NcbiAgICAoZ2V0IChzeW1ib2wgbnN0cikpXG4gICAgIz8oOmNsaiBmaW5kLW5zIDpjbGpzIGZpbmQtbWFjcm9zLW5zKSkpKSlcbiJ9IHs6c3ltIG1lc3NhZ2UsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWVzc2FnZVxuIFtlbnYgc11cbiAoc3RyXG4gIHNcbiAgKGlmXG4gICAoOmxpbmUgZW52KVxuICAgKHN0ciBcIiBhdCBsaW5lIFwiICg6bGluZSBlbnYpIFwiIFwiICpjbGpzLWZpbGUqKVxuICAgKHdoZW4gKmNsanMtZmlsZSogKHN0ciBcIiBpbiBmaWxlIFwiICpjbGpzLWZpbGUqKSkpKSlcbiJ9IHs6c3ltIHBhcnNlLWludm9rZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwYXJzZS1pbnZva2VcbiBbZW52IGZvcm1dXG4gKGRpc2FsbG93aW5nLXJlY3VyIChwYXJzZS1pbnZva2UqIGVudiBmb3JtKSkpXG4ifSB7OnN5bSAqY2xqcy13YXJuaW5nLWhhbmRsZXJzKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmNsanMtd2FybmluZy1oYW5kbGVycyogW2RlZmF1bHQtd2FybmluZy1oYW5kbGVyXSlcbiJ9IHs6c3ltIGFuYWx5emUtc2VxKi13cmFwLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW29wIGVudiBmb3JtIG5hbWUgb3B0c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLXNlcSotd3JhcFxuIFtvcCBlbnYgZm9ybSBuYW1lIG9wdHNdXG4gKHdyYXBwaW5nLWVycm9ycyBlbnYgKGFuYWx5emUtc2VxKiBvcCBlbnYgZm9ybSBuYW1lIG9wdHMpKSlcbiJ9IHs6c3ltIGNvbmZpcm0tYmluZGluZ3MsIDptZXRhIHs6ZG9jICJHaXZlbiBlbnYsIGFuIGFuYWx5c2lzIGVudmlyb25tZW50IGVudiwgYW5kIG5hbWVzLCBhIGxpc3Qgb2Ygc3ltYm9scywgY29uZmlybVxuICAgdGhhdCBhbGwgY29ycmVzcG9uZCB0byBkZWNsYXJlZCBkeW5hbWljIHZhcnMuIiwgOmFyZ2xpc3RzIChbZW52IG5hbWVzXSl9LCA6c291cmNlICIoZGVmblxuIGNvbmZpcm0tYmluZGluZ3NcbiBcIkdpdmVuIGVudiwgYW4gYW5hbHlzaXMgZW52aXJvbm1lbnQgZW52LCBhbmQgbmFtZXMsIGEgbGlzdCBvZiBzeW1ib2xzLCBjb25maXJtXFxuICAgdGhhdCBhbGwgY29ycmVzcG9uZCB0byBkZWNsYXJlZCBkeW5hbWljIHZhcnMuXCJcbiBbZW52IG5hbWVzXVxuIChkb3NlcVxuICBbbmFtZSBuYW1lc11cbiAgKGxldFxuICAgW2VudlxuICAgIChhc3NvYyBlbnYgOm5zIChnZXQtbmFtZXNwYWNlICpjbGpzLW5zKikpXG4gICAgZXZcbiAgICAocmVzb2x2ZS1leGlzdGluZy12YXIgZW52IG5hbWUpXVxuICAgKHdoZW5cbiAgICAoYW5kIGV2IChub3QgKC0+IGV2IDpkeW5hbWljKSkpXG4gICAgKHdhcm5pbmcgOmR5bmFtaWMgZW52IHs6ZXYgZXYsIDpuYW1lICg6bmFtZSBldil9KSkpKSlcbiJ9IHs6c3ltIGhhcy1leHRlcm4/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW3ByZV0gW3ByZSBleHRlcm5zXV19LCA6c291cmNlICIoZGVmblxuIGhhcy1leHRlcm4/XG4gKFtwcmVdIChoYXMtZXh0ZXJuPyBwcmUgKGdldC1leHRlcm5zKSkpXG4gKFtwcmUgZXh0ZXJuc11cbiAgKG9yXG4gICAoaGFzLWV4dGVybj8qIHByZSBleHRlcm5zKVxuICAgKHdoZW5cbiAgICAoPSAxIChjb3VudCBwcmUpKVxuICAgIChsZXRcbiAgICAgW3ggKGZpcnN0IHByZSldXG4gICAgIChvclxuICAgICAgKGdldC1pbiBleHRlcm5zIChjb25qICdbV2luZG93IHByb3RvdHlwZV0geCkpXG4gICAgICAoZ2V0LWluIGV4dGVybnMgKGNvbmogJ1tOdW1iZXJdIHgpKSkpKVxuICAgKC0+IChsYXN0IHByZSkgc3RyIChzdHJpbmcvc3RhcnRzLXdpdGg/IFwiY2xqcyRcIikpKSkpXG4ifSB7OnN5bSBmb3JlaWduLWRlcD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZGVwXSl9LCA6c291cmNlICIoZGVmblxuIGZvcmVpZ24tZGVwP1xuICM/KDpjbGpzIHs6dGFnIGJvb2xlYW59KVxuIFtkZXBdXG4gKGxldFxuICBbanMtaW5kZXggKDpqcy1kZXBlbmRlbmN5LWluZGV4IEBlbnYvKmNvbXBpbGVyKildXG4gIChpZi1zb21lXG4gICBbW18gezprZXlzIFtmb3JlaWduXX1dXG4gICAgKGZpbmQganMtaW5kZXggKG5hbWUgKC0+IGRlcCBsaWImc3VibGliIGZpcnN0KSkpXVxuICAgZm9yZWlnblxuICAgZmFsc2UpKSlcbiJ9IHs6c3ltIG1pc3NpbmctcmVuYW1lLW1hY3JvPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzeW1dKX0sIDpzb3VyY2UgIihkZWZuXG4gbWlzc2luZy1yZW5hbWUtbWFjcm8/XG4gW3N5bV1cbiAobGV0XG4gIFtsaWJcbiAgIChzeW1ib2wgKG5hbWVzcGFjZSBzeW0pKVxuICAgc3ltXG4gICAoc3ltYm9sIChuYW1lIHN5bSkpXG4gICB0aGUtbnNcbiAgICM/KDpjbGogKGZpbmQtbnMgbGliKSA6Y2xqcyAoZmluZC1tYWNyb3MtbnMgbGliKSldXG4gIChvciAobmlsPyB0aGUtbnMpIChuaWw/ICguZmluZEludGVybmVkVmFyIHRoZS1ucyBzeW0pKSkpKVxuIn0gezpzeW0gbWlzc2luZy11c2VzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3VzZXMgZW52XSl9LCA6c291cmNlICIoZGVmblxuIG1pc3NpbmctdXNlc1xuIFt1c2VzIGVudl1cbiAobGV0XG4gIFtjZW52IEBlbnYvKmNvbXBpbGVyKl1cbiAgKGludG8ge30gKGZpbHRlciAoZm4gW1tzeW0gbGliXV0gKG1pc3NpbmctdXNlPyBsaWIgc3ltIGNlbnYpKSB1c2VzKSkpKVxuIn0gezpzeW0gbWlzc2luZy11c2U/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2xpYiBzeW0gY2Vudl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtaXNzaW5nLXVzZT9cbiBbbGliIHN5bSBjZW52XVxuIChsZXRcbiAgW2pzLWxpYiAoZ2V0LWluIGNlbnYgWzpqcy1kZXBlbmRlbmN5LWluZGV4IChuYW1lIGxpYildKV1cbiAgKGFuZFxuICAgKD1cbiAgICAoZ2V0LWluXG4gICAgIGNlbnZcbiAgICAgWzpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXMgbGliIDpkZWZzIHN5bV1cbiAgICAgOmNsanMuYW5hbHl6ZXIvbm90LWZvdW5kKVxuICAgIDpjbGpzLmFuYWx5emVyL25vdC1mb3VuZClcbiAgIChub3QgKD0gKGdldCBqcy1saWIgOmdyb3VwKSA6Z29vZykpXG4gICAobm90IChnZXQganMtbGliIDpjbG9zdXJlLWxpYikpXG4gICAobm90IChub2RlLW1vZHVsZS1kZXA/IGxpYikpXG4gICAobm90IChkZXAtaGFzLWdsb2JhbC1leHBvcnRzPyBsaWIpKSkpKVxuIn0gezpzeW0gZXM1LWFsbG93ZWQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIGVzNS1hbGxvd2VkICN7XCJkZWZhdWx0XCJ9KVxuIn0gezpzeW0gYW5hbHl6ZSwgOm1ldGEgezpkb2MgIkdpdmVuIGFuIGVudmlyb25tZW50LCBhIG1hcCBjb250YWluaW5nIHs6bG9jYWxzIChtYXBwaW5nIG9mIG5hbWVzIHRvIGJpbmRpbmdzKSwgOmNvbnRleHRcbiAgKG9uZSBvZiA6c3RhdGVtZW50LCA6ZXhwciwgOnJldHVybiksIDpucyAoYSBzeW1ib2wgbmFtaW5nIHRoZVxuICBjb21waWxhdGlvbiBucyl9LCBhbmQgZm9ybSwgcmV0dXJucyBhbiBleHByZXNzaW9uIG9iamVjdCAoYSBtYXBcbiAgY29udGFpbmluZyBhdCBsZWFzdCA6Zm9ybSwgOm9wIGFuZCA6ZW52IGtleXMpLiBJZiBleHByIGhhcyBhbnkgKGltbWVkaWF0ZWx5KVxuICBuZXN0ZWQgZXhwcnMsIG11c3QgaGF2ZSBhIDpjaGlsZHJlbiBlbnRyeS4gVGhpcyBtdXN0IGJlIGEgdmVjdG9yIG9mIGtleXdvcmRzIG5hbWluZ1xuICB0aGUgaW1tZWRpYXRlbHkgbmVzdGVkIGZpZWxkcyBtYXBwZWQgdG8gYW4gZXhwciBvciB2ZWN0b3Igb2YgZXhwcnMuIFRoaXMgd2lsbFxuICBmYWNpbGl0YXRlIGNvZGUgd2Fsa2luZyB3aXRob3V0IGtub3dpbmcgdGhlIGRldGFpbHMgb2YgdGhlIG9wIHNldC4iLCA6YXJnbGlzdHMgW1tlbnYgZm9ybV0gW2VudiBmb3JtIG5hbWVdIFtlbnYgZm9ybSBuYW1lIG9wdHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHl6ZVxuIFwiR2l2ZW4gYW4gZW52aXJvbm1lbnQsIGEgbWFwIGNvbnRhaW5pbmcgezpsb2NhbHMgKG1hcHBpbmcgb2YgbmFtZXMgdG8gYmluZGluZ3MpLCA6Y29udGV4dFxcbiAgKG9uZSBvZiA6c3RhdGVtZW50LCA6ZXhwciwgOnJldHVybiksIDpucyAoYSBzeW1ib2wgbmFtaW5nIHRoZVxcbiAgY29tcGlsYXRpb24gbnMpfSwgYW5kIGZvcm0sIHJldHVybnMgYW4gZXhwcmVzc2lvbiBvYmplY3QgKGEgbWFwXFxuICBjb250YWluaW5nIGF0IGxlYXN0IDpmb3JtLCA6b3AgYW5kIDplbnYga2V5cykuIElmIGV4cHIgaGFzIGFueSAoaW1tZWRpYXRlbHkpXFxuICBuZXN0ZWQgZXhwcnMsIG11c3QgaGF2ZSBhIDpjaGlsZHJlbiBlbnRyeS4gVGhpcyBtdXN0IGJlIGEgdmVjdG9yIG9mIGtleXdvcmRzIG5hbWluZ1xcbiAgdGhlIGltbWVkaWF0ZWx5IG5lc3RlZCBmaWVsZHMgbWFwcGVkIHRvIGFuIGV4cHIgb3IgdmVjdG9yIG9mIGV4cHJzLiBUaGlzIHdpbGxcXG4gIGZhY2lsaXRhdGUgY29kZSB3YWxraW5nIHdpdGhvdXQga25vd2luZyB0aGUgZGV0YWlscyBvZiB0aGUgb3Agc2V0LlwiXG4gKFtlbnYgZm9ybV0gKGFuYWx5emUgZW52IGZvcm0gbmlsKSlcbiAoW2VudiBmb3JtIG5hbWVdXG4gIChhbmFseXplXG4gICBlbnZcbiAgIGZvcm1cbiAgIG5hbWVcbiAgICh3aGVuIGVudi8qY29tcGlsZXIqICg6b3B0aW9ucyBAZW52Lypjb21waWxlciopKSkpXG4gKFtlbnYgZm9ybSBuYW1lIG9wdHNdXG4gICh3cmFwcGluZy1lcnJvcnNcbiAgIGVudlxuICAgKGlmXG4gICAgKGFuYWx5emVkPyBmb3JtKVxuICAgIChuby13YXJuIChhbmFseXplKiBlbnYgZm9ybSBuYW1lIG9wdHMpKVxuICAgIChhbmFseXplKiBlbnYgZm9ybSBuYW1lIG9wdHMpKSkpKVxuIn0gezpzeW0gdXNlZD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IHN5bV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB1c2VkP1xuICM/KDpjbGpzIHs6dGFnIGJvb2xlYW59KVxuIFtlbnYgc3ltXVxuIChvclxuICAoc29tZT8gKGdldHMgZW52IDpucyA6dXNlLW1hY3JvcyBzeW0pKVxuICAoc29tZT9cbiAgIChnZXRzXG4gICAgQGVudi8qY29tcGlsZXIqXG4gICAgOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlc1xuICAgIChnZXRzIGVudiA6bnMgOm5hbWUpXG4gICAgOnVzZS1tYWNyb3NcbiAgICBzeW0pKSkpXG4ifSB7OnN5bSBub2RlLW1vZHVsZS1kZXA/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21vZHVsZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBub2RlLW1vZHVsZS1kZXA/XG4gIz8oOmNsanMgezp0YWcgYm9vbGVhbn0pXG4gW21vZHVsZV1cbiAjPyg6Y2xqIChsZXQgW2lkeCAoZ2V0IChjbG9qdXJlLmNvcmUvZGVyZWYgZW52Lypjb21waWxlciopIDpub2RlLW1vZHVsZS1pbmRleCldIChjb250YWlucz8gaWR4IChzdHIgKC0+IG1vZHVsZSBsaWImc3VibGliIGZpcnN0KSkpKSA6Y2xqcyAodHJ5IChhbmQgKD0gKnRhcmdldCogXCJub2RlanNcIikgKGJvb2xlYW4gKG9yIChqcy9yZXF1aXJlLnJlc29sdmUgKHN0ciBtb2R1bGUpKSAoanMvcmVxdWlyZS5yZXNvbHZlICgtPiBtb2R1bGUgbGliJnN1YmxpYiBmaXJzdCkpKSkpIChjYXRjaCA6ZGVmYXVsdCBfIGZhbHNlKSkpKVxuIn0gezpzeW0gcGFyc2UtdHlwZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtvcCBlbnYgW18gdHN5bSBmaWVsZHMgcG1hc2tzIGJvZHkgOmFzIGZvcm1dXSl9LCA6c291cmNlICIoZGVmblxuIHBhcnNlLXR5cGVcbiBbb3AgZW52IFtfIHRzeW0gZmllbGRzIHBtYXNrcyBib2R5IDphcyBmb3JtXV1cbiAobGV0XG4gIFt0XG4gICAoOm5hbWUgKHJlc29sdmUtdmFyIChkaXNzb2MgZW52IDpsb2NhbHMpIHRzeW0pKVxuICAgbG9jYWxzXG4gICAocmVkdWNlXG4gICAgKGZuXG4gICAgIFttIGZsZF1cbiAgICAgKGFzc29jXG4gICAgICBtXG4gICAgICBmbGRcbiAgICAgIHs6bmFtZSBmbGQsXG4gICAgICAgOmZpZWxkIHRydWUsXG4gICAgICAgOmNvbHVtbiAoZ2V0LWNvbCBmbGQgZW52KSxcbiAgICAgICA6dW5zeW5jaHJvbml6ZWQtbXV0YWJsZSAoLT4gZmxkIG1ldGEgOnVuc3luY2hyb25pemVkLW11dGFibGUpLFxuICAgICAgIDpsaW5lIChnZXQtbGluZSBmbGQgZW52KSxcbiAgICAgICA6dGFnICgtPiBmbGQgbWV0YSA6dGFnKSxcbiAgICAgICA6bXV0YWJsZSAoLT4gZmxkIG1ldGEgOm11dGFibGUpLFxuICAgICAgIDp2b2xhdGlsZS1tdXRhYmxlICgtPiBmbGQgbWV0YSA6dm9sYXRpbGUtbXV0YWJsZSksXG4gICAgICAgOnNoYWRvdyAobSBmbGQpLFxuICAgICAgIDpsb2NhbCA6ZmllbGR9KSlcbiAgICB7fVxuICAgIChpZlxuICAgICAoPSA6ZGVmcmVjb3JkIG9wKVxuICAgICAoY29uY2F0IGZpZWxkcyAnW19fbWV0YSBfX2V4dG1hcCBfX2hhc2hdKVxuICAgICBmaWVsZHMpKVxuICAgcHJvdG9jb2xzXG4gICAoLT4gdHN5bSBtZXRhIDpwcm90b2NvbHMpXVxuICAoc3dhcCFcbiAgIGVudi8qY29tcGlsZXIqXG4gICB1cGRhdGUtaW5cbiAgIFs6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzICgtPiBlbnYgOm5zIDpuYW1lKSA6ZGVmcyB0c3ltXVxuICAgKGZuXG4gICAgW21dXG4gICAgKGxldFxuICAgICBbbVxuICAgICAgKGFzc29jXG4gICAgICAgKG9yIG0ge30pXG4gICAgICAgOm5hbWVcbiAgICAgICB0XG4gICAgICAgOnRhZ1xuICAgICAgICdmdW5jdGlvblxuICAgICAgIDp0eXBlXG4gICAgICAgdHJ1ZVxuICAgICAgIDpudW0tZmllbGRzXG4gICAgICAgKGNvdW50IGZpZWxkcylcbiAgICAgICA6cmVjb3JkXG4gICAgICAgKD0gOmRlZnJlY29yZCBvcCkpXVxuICAgICAobWVyZ2VcbiAgICAgIG1cbiAgICAgIChkaXNzb2MgKG1ldGEgdHN5bSkgOnByb3RvY29scylcbiAgICAgIHs6cHJvdG9jb2xzIHByb3RvY29sc31cbiAgICAgIChzb3VyY2UtaW5mbyB0c3ltIGVudikpKSkpXG4gIHs6Y2hpbGRyZW4gWzpib2R5XSxcbiAgIDpwbWFza3MgcG1hc2tzLFxuICAgOnByb3RvY29scyAoZGlzaiBwcm90b2NvbHMgJ2NsanMuY29yZS9PYmplY3QpLFxuICAgOmZpZWxkcyBmaWVsZHMsXG4gICA6b3Agb3AsXG4gICA6ZW52IGVudixcbiAgIDp0IHQsXG4gICA6Zm9ybSBmb3JtLFxuICAgOnRhZyAnZnVuY3Rpb24sXG4gICA6Ym9keSAoYW5hbHl6ZSAoYXNzb2MgZW52IDpsb2NhbHMgbG9jYWxzKSBib2R5KX0pKVxuIn0gezpzeW0gZ2V0cywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1ttIGswIGsxXSBbbSBrMCBrMSBrMl0gW20gazAgazEgazIgazNdXX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0c1xuIChbbSBrMCBrMV1cbiAgKGxldFxuICAgW20gKGdldCBtIGswIFNFTlRJTkVMKV1cbiAgICh3aGVuLW5vdCAoaWRlbnRpY2FsPyBtIFNFTlRJTkVMKSAoZ2V0IG0gazEpKSkpXG4gKFttIGswIGsxIGsyXVxuICAobGV0XG4gICBbbSAoZ2V0IG0gazAgU0VOVElORUwpXVxuICAgKHdoZW4tbm90XG4gICAgKGlkZW50aWNhbD8gbSBTRU5USU5FTClcbiAgICAobGV0XG4gICAgIFttIChnZXQgbSBrMSBTRU5USU5FTCldXG4gICAgICh3aGVuLW5vdCAoaWRlbnRpY2FsPyBtIFNFTlRJTkVMKSAoZ2V0IG0gazIpKSkpKSlcbiAoW20gazAgazEgazIgazNdXG4gIChsZXRcbiAgIFttIChnZXQgbSBrMCBTRU5USU5FTCldXG4gICAod2hlbi1ub3RcbiAgICAoaWRlbnRpY2FsPyBtIFNFTlRJTkVMKVxuICAgIChsZXRcbiAgICAgW20gKGdldCBtIGsxIFNFTlRJTkVMKV1cbiAgICAgKHdoZW4tbm90XG4gICAgICAoaWRlbnRpY2FsPyBtIFNFTlRJTkVMKVxuICAgICAgKGxldFxuICAgICAgIFttIChnZXQgbSBrMiBTRU5USU5FTCldXG4gICAgICAgKHdoZW4tbm90IChpZGVudGljYWw/IG0gU0VOVElORUwpIChnZXQgbSBrMykpKSkpKSkpKVxuIn0gezpzeW0gY2hlY2stcmVuYW1lLW1hY3Jvcy1pbmZlcnJpbmctbWlzc2luZywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt7OmtleXMgW25hbWUgcmVuYW1lc10sIDphcyBhc3R9IGVudl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjaGVjay1yZW5hbWUtbWFjcm9zLWluZmVycmluZy1taXNzaW5nXG4gW3s6a2V5cyBbbmFtZSByZW5hbWVzXSwgOmFzIGFzdH0gZW52XVxuIChsZXRcbiAgW21pc3NpbmctcmVuYW1lc1xuICAgKHdoZW5cbiAgICAoYW5kICphbmFseXplLWRlcHMqIChzZXEgcmVuYW1lcykpXG4gICAgKG1pc3NpbmctcmVuYW1lcyByZW5hbWVzIGVudikpXG4gICBtYXliZS1tYWNyb3NcbiAgIChhcHBseSBkaXNzb2MgcmVuYW1lcyAoa2V5cyBtaXNzaW5nLXJlbmFtZXMpKVxuICAgbWlzc2luZy1yZW5hbWUtbWFjcm9zXG4gICAoaW5mZXJyZWQtcmVuYW1lLW1hY3JvcyBtaXNzaW5nLXJlbmFtZXMgZW52KVxuICAgcmVtb3ZlLW1pc3NpbmctcmVuYW1lc1xuICAgKGZuKiBbcDFfXzQ1MDkzI10gKGFwcGx5IGRpc3NvYyBwMV9fNDUwOTMjIChrZXlzIG1pc3NpbmctcmVuYW1lcykpKVxuICAgYXN0J1xuICAgKC0+XG4gICAgYXN0XG4gICAgKHVwZGF0ZS1pblxuICAgICBbOnJlbmFtZS1tYWNyb3NdXG4gICAgIChmbipcbiAgICAgIFtwMV9fNDUwOTQjXVxuICAgICAgKC0+XG4gICAgICAgcDFfXzQ1MDk0I1xuICAgICAgIChtZXJnZSBtaXNzaW5nLXJlbmFtZS1tYWNyb3MpXG4gICAgICAgKG1lcmdlIChpbmZlcnJlZC1yZW5hbWUtbWFjcm9zIG1heWJlLW1hY3JvcyBlbnYpKSkpKVxuICAgICh1cGRhdGUtaW4gWzpyZW5hbWVzXSByZW1vdmUtbWlzc2luZy1yZW5hbWVzKSldXG4gIChzd2FwIVxuICAgZW52Lypjb21waWxlcipcbiAgIChmbipcbiAgICBbcDFfXzQ1MDk1I11cbiAgICAoLT5cbiAgICAgcDFfXzQ1MDk1I1xuICAgICAodXBkYXRlLWluXG4gICAgICBbOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyBuYW1lIDpyZW5hbWUtbWFjcm9zXVxuICAgICAgbWVyZ2VcbiAgICAgICg6cmVuYW1lLW1hY3JvcyBhc3QnKSlcbiAgICAgKHVwZGF0ZS1pblxuICAgICAgWzpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXMgbmFtZSA6cmVuYW1lc11cbiAgICAgIHJlbW92ZS1taXNzaW5nLXJlbmFtZXMpKSkpXG4gIGFzdCcpKVxuIn0gezpzeW0gKmFsbG93LW5zKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmFsbG93LW5zKiB0cnVlKVxuIn0gezpzeW0gYW5hbHl6ZS1jb25zdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLWNvbnN0XG4gW2VudiBmb3JtXVxuIChsZXRcbiAgW3s6a2V5cyBbdGFnXX0gKGFuYWx5emUgKGFzc29jIGVudiA6cXVvdGVkPyB0cnVlKSBmb3JtKV1cbiAgezpvcCA6Y29uc3QsXG4gICA6ZW52IGVudixcbiAgIDpsaXRlcmFsPyB0cnVlLFxuICAgOnZhbCBmb3JtLFxuICAgOnRhZyB0YWcsXG4gICA6Zm9ybSBmb3JtfSkpXG4ifSB7OnN5bSBtdW5nZS1nb29nLW1vZHVsZS1saWIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbbmFtZV0gW25zIG5hbWVdXX0sIDpzb3VyY2UgIihkZWZuXG4gbXVuZ2UtZ29vZy1tb2R1bGUtbGliXG4gKFtuYW1lXVxuICAoc3RyXG4gICBcImdvb2ckbW9kdWxlJFwiXG4gICAobXVuZ2VcbiAgICAoc3RyaW5nL3JlcGxhY2UgKHN0ciBuYW1lKSAjXCJbLlxcL11cIiAjPyg6Y2xqIFwiXFxcXCRcIiA6Y2xqcyBcIiQkXCIpKSkpKVxuIChbbnMgbmFtZV0gKHN0ciAobXVuZ2UgbnMpIFwiLlwiIChtdW5nZS1nb29nLW1vZHVsZS1saWIgbmFtZSkpKSlcbiJ9IHs6c3ltIGluZmVyLWludm9rZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYge2YgOmZuLCA6a2V5cyBbYXJnc10sIDphcyBlfV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbmZlci1pbnZva2VcbiBbZW52IHtmIDpmbiwgOmtleXMgW2FyZ3NdLCA6YXMgZX1dXG4gKGxldFxuICBbbWUgKGFzc29jIChmaW5kLW1hdGNoaW5nLW1ldGhvZCBmIGFyZ3MpIDpvcCA6Zm4tbWV0aG9kKV1cbiAgKGlmLXNvbWVcbiAgIFtyZXQtdGFnIChpbmZlci10YWcgZW52IG1lKV1cbiAgIHJldC10YWdcbiAgIChsZXRcbiAgICBbezprZXlzIFtpbmZvXX0gZl1cbiAgICAoaWYtc29tZVxuICAgICBbcmV0LXRhZ1xuICAgICAgKGlmXG4gICAgICAgKG9yICh0cnVlPyAoOmZuLXZhciBpbmZvKSkgKHRydWU/ICg6anMtZm4tdmFyIGluZm8pKSlcbiAgICAgICAoOnJldC10YWcgaW5mbylcbiAgICAgICAod2hlbiAoPSAnanMgKDpucyBpbmZvKSkgJ2pzKSldXG4gICAgIHJldC10YWdcbiAgICAgaW1wbC9BTllfU1lNKSkpKSlcbiJ9IHs6c3ltICpjbGpzLXN0YXRpYy1mbnMqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqY2xqcy1zdGF0aWMtZm5zKiBmYWxzZSlcbiJ9IHs6c3ltIGFycmF5LXR5cGVzLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIGFycmF5LXR5cGVzXG4gJyN7Ym9vbGVhbiBmbG9hdHMgbG9uZ3Mgb2JqZWN0cyBhcnJheSBkb3VibGVzIGNoYXJzIGludHMgc2hvcnRzIGJ5dGVzfSlcbiJ9IHs6c3ltICpjaGVjay1hbGlhcy1kdXBlcyosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpjaGVjay1hbGlhcy1kdXBlcyogdHJ1ZSlcbiJ9IHs6c3ltIG1hY3JvLW5zLW5hbWUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbmFtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtYWNyby1ucy1uYW1lXG4gW25hbWVdXG4gKGxldFxuICBbbmFtZS1zdHIgKHN0ciBuYW1lKV1cbiAgKGlmLW5vdFxuICAgIz8oOmNsaiAoLmVuZHNXaXRoIG5hbWUtc3RyIFwiJG1hY3Jvc1wiKSA6Y2xqcyAoZ3N0cmluZy9lbmRzV2l0aCBuYW1lLXN0ciBcIiRtYWNyb3NcIikpXG4gICAoc3ltYm9sIChzdHIgbmFtZS1zdHIgXCIkbWFjcm9zXCIpKVxuICAgbmFtZSkpKVxuIn0gezpzeW0gKnJlbG9hZC1tYWNyb3MqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqcmVsb2FkLW1hY3JvcyogZmFsc2UpXG4ifSB7OnN5bSBjb21waWxlci1vcHRpb25zLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm4gY29tcGlsZXItb3B0aW9ucyBbXSAoZ2V0IEBlbnYvKmNvbXBpbGVyKiA6b3B0aW9ucykpXG4ifSB7OnN5bSByZXNvbHZlLWV4aXN0aW5nLXZhciwgOm1ldGEgezpkb2MgIkdpdmVuIGVudiwgYW4gYW5hbHlzaXMgZW52aXJvbm1lbnQsIGFuZCBzeW0sIGEgc3ltYm9sLCByZXNvbHZlIGFuIGV4aXN0aW5nIHZhci5cbiAgIEVtaXRzIGEgd2FybmluZyBpZiBubyBzdWNoIHZhciBleGlzdHMuIiwgOmFyZ2xpc3RzIChbZW52IHN5bV0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZXNvbHZlLWV4aXN0aW5nLXZhclxuIFwiR2l2ZW4gZW52LCBhbiBhbmFseXNpcyBlbnZpcm9ubWVudCwgYW5kIHN5bSwgYSBzeW1ib2wsIHJlc29sdmUgYW4gZXhpc3RpbmcgdmFyLlxcbiAgIEVtaXRzIGEgd2FybmluZyBpZiBubyBzdWNoIHZhciBleGlzdHMuXCJcbiBbZW52IHN5bV1cbiAoaWYtbm90XG4gICgtPiBzeW0gbWV0YSA6Y2xqcy5hbmFseXplci9uby1yZXNvbHZlKVxuICAocmVzb2x2ZS12YXIgZW52IHN5bSBjb25maXJtLXZhci1leGlzdHMpXG4gIChyZXNvbHZlLXZhciBlbnYgc3ltKSkpXG4ifSB7OnN5bSByZXF1aXJlZD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbnMgZW52XSl9LCA6c291cmNlICIoZGVmblxuIHJlcXVpcmVkP1xuIFtucyBlbnZdXG4gKG9yXG4gIChjb250YWlucz8gKHNldCAodmFscyAoZ2V0cyBlbnYgOm5zIDpyZXF1aXJlcykpKSBucylcbiAgKGNvbnRhaW5zPyAoc2V0ICh2YWxzIChnZXRzIGVudiA6bnMgOnVzZXMpKSkgbnMpKSlcbiJ9IHs6c3ltIG5vZGUtbGlrZT8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbXSBbb3B0c11dfSwgOnNvdXJjZSAiKGRlZm5cbiBub2RlLWxpa2U/XG4gKFtdIChub2RlLWxpa2U/IChjb21waWxlci1vcHRpb25zKSkpXG4gKFtvcHRzXSAoYW5kICg9IDpub2RlanMgKDp0YXJnZXQgb3B0cykpIChmYWxzZT8gKDpub2RlanMtcnQgb3B0cykpKSkpXG4ifSB7OnN5bSBwYXJzZS1pbnZva2UqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBbZiAmIGFyZ3MgOmFzIGZvcm1dXSl9LCA6c291cmNlICIoZGVmblxuIHBhcnNlLWludm9rZSpcbiBbZW52IFtmICYgYXJncyA6YXMgZm9ybV1dXG4gKGxldFxuICBbZW52ZVxuICAgKGFzc29jIGVudiA6Y29udGV4dCA6ZXhwcilcbiAgIGZleHByXG4gICAoYW5hbHl6ZSBlbnZlIGYpXG4gICBhcmdjXG4gICAoY291bnQgYXJncylcbiAgIGZuLXZhcj9cbiAgIChvciAoLT4gZmV4cHIgOmluZm8gOmZuLXZhcikgKC0+IGZleHByIDppbmZvIDpqcy1mbi12YXIpKVxuICAga3c/XG4gICAoPSAnY2xqcy5jb3JlL0tleXdvcmQgKDp0YWcgZmV4cHIpKVxuICAgY3VyLW5zXG4gICAoLT4gZW52IDpucyA6bmFtZSlcbiAgIEhPLWludm9rZT9cbiAgIChhbmRcbiAgICAoYm9vbGVhbiAqY2xqcy1zdGF0aWMtZm5zKilcbiAgICAobm90IGZuLXZhcj8pXG4gICAgKG5vdCAoanMtdGFnPyBmKSlcbiAgICAobm90IGt3PylcbiAgICAobm90IChhbmFseXplZD8gZikpKVxuICAgYmluZC1mLWV4cHI/XG4gICAoYW5kIEhPLWludm9rZT8gKG5vdCAoc3ltYm9sPyBmKSkpXG4gICBiaW5kLWFyZ3M/XG4gICAoYW5kIEhPLWludm9rZT8gKG5vdCAoYWxsLXZhbHVlcz8gYXJncykpKV1cbiAgKHdoZW5cbiAgIGZuLXZhcj9cbiAgIChsZXRcbiAgICBbe3ZhcmlhZGljIDp2YXJpYWRpYz8sXG4gICAgICA6a2V5cyBbbWF4LWZpeGVkLWFyaXR5IG1ldGhvZC1wYXJhbXMgbmFtZSBucyBtYWNyb119XG4gICAgICg6aW5mbyBmZXhwcildXG4gICAgKHdoZW5cbiAgICAgKGFuZFxuICAgICAgIz8oOmNsanMgKG5vdCAoYW5kIChnc3RyaW5nL2VuZHNXaXRoIChzdHIgY3VyLW5zKSBcIiRtYWNyb3NcIikgKHN5bWJvbC1pZGVudGljYWw/IGN1ci1ucyBucykgKHRydWU/IG1hY3JvKSkpKVxuICAgICAgKGludmFsaWQtYXJpdHk/IGFyZ2MgbWV0aG9kLXBhcmFtcyB2YXJpYWRpYyBtYXgtZml4ZWQtYXJpdHkpKVxuICAgICAod2FybmluZyA6Zm4tYXJpdHkgZW52IHs6bmFtZSBuYW1lLCA6YXJnYyBhcmdjfSkpKSlcbiAgKHdoZW5cbiAgIChhbmQga3c/IChub3QgKG9yICg9PSAxIGFyZ2MpICg9PSAyIGFyZ2MpKSkpXG4gICAod2FybmluZyA6Zm4tYXJpdHkgZW52IHs6bmFtZSAoZmlyc3QgZm9ybSksIDphcmdjIGFyZ2N9KSlcbiAgKGxldFxuICAgW2RlcHJlY2F0ZWQ/XG4gICAgKC0+IGZleHByIDppbmZvIDpkZXByZWNhdGVkKVxuICAgIG5vLXdhcm4/XG4gICAgKC0+IGZvcm0gbWV0YSA6ZGVwcmVjYXRpb24tbm93YXJuKV1cbiAgICh3aGVuXG4gICAgKGFuZCAoYm9vbGVhbiBkZXByZWNhdGVkPykgKG5vdCAoYm9vbGVhbiBuby13YXJuPykpKVxuICAgICh3YXJuaW5nIDpmbi1kZXByZWNhdGVkIGVudiB7OmZleHByIGZleHByfSkpKVxuICAod2hlblxuICAgKHNvbWU/ICgtPiBmZXhwciA6aW5mbyA6dHlwZSkpXG4gICAod2FybmluZyA6aW52b2tlLWN0b3IgZW52IHs6ZmV4cHIgZmV4cHJ9KSlcbiAgKGlmXG4gICAob3IgYmluZC1hcmdzPyBiaW5kLWYtZXhwcj8pXG4gICAobGV0XG4gICAgW2FyZy1zeW1zXG4gICAgICh3aGVuIGJpbmQtYXJncz8gKHRha2UgYXJnYyAocmVwZWF0ZWRseSBnZW5zeW0pKSlcbiAgICAgZi1zeW1cbiAgICAgKHdoZW4gYmluZC1mLWV4cHI/IChnZW5zeW0gXCJmZXhwcl9fXCIpKVxuICAgICBiaW5kaW5nc1xuICAgICAoY29uZC0+XG4gICAgICBbXVxuICAgICAgYmluZC1hcmdzP1xuICAgICAgKGludG8gKGludGVybGVhdmUgYXJnLXN5bXMgYXJncykpXG4gICAgICBiaW5kLWYtZXhwcj9cbiAgICAgIChjb25qIGYtc3ltIChhbmFseXplZCBmKSkpXG4gICAgIHRhZ1xuICAgICAoOnRhZyAobWV0YSBmb3JtKSldXG4gICAgKGFuYWx5emVcbiAgICAgZW52XG4gICAgIChjbG9qdXJlLmNvcmUvc2VxdWVuY2VcbiAgICAgIChjbG9qdXJlLmNvcmUvc2VxXG4gICAgICAgKGNsb2p1cmUuY29yZS9jb25jYXRcbiAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0ICdjbG9qdXJlLmNvcmUvbGV0KVxuICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3RcbiAgICAgICAgIChjbG9qdXJlLmNvcmUvdmVjXG4gICAgICAgICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxuICAgICAgICAgICAoY2xvanVyZS5jb3JlL3NlcSAoY2xvanVyZS5jb3JlL2NvbmNhdCBiaW5kaW5ncykpKSkpXG4gICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdFxuICAgICAgICAgKHdpdGgtbWV0YVxuICAgICAgICAgIChjbG9qdXJlLmNvcmUvc2VxdWVuY2VcbiAgICAgICAgICAgKGNsb2p1cmUuY29yZS9zZXFcbiAgICAgICAgICAgIChjbG9qdXJlLmNvcmUvY29uY2F0XG4gICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0IChhbmFseXplZCAoaWYgYmluZC1mLWV4cHI/IGYtc3ltIGYpKSlcbiAgICAgICAgICAgICAoaWYgYmluZC1hcmdzPyBhcmctc3ltcyBhcmdzKSkpKVxuICAgICAgICAgIHs6dGFnIHRhZ30pKSkpKSkpXG4gICAobGV0XG4gICAgW2FuYS1leHByXG4gICAgIChmbiogW3AxX180NTExMSNdIChhbmFseXplIGVudmUgcDFfXzQ1MTExIykpXG4gICAgIGFyZ2V4cHJzXG4gICAgIChtYXB2IGFuYS1leHByIGFyZ3MpXVxuICAgIChpZlxuICAgICAoYW5kXG4gICAgICAoYW5kIChrZXl3b3JkPyBmKSAobmlsPyAobmFtZXNwYWNlIGYpKSlcbiAgICAgICg9PSAxIChjb3VudCBhcmdzKSlcbiAgICAgIChyZWNvcmQtd2l0aC1maWVsZD8gKDp0YWcgKGZpcnN0IGFyZ2V4cHJzKSkgKHN5bWJvbCAobmFtZSBmKSkpKVxuICAgICAobGV0XG4gICAgICBbZmllbGQtYWNjZXNzLWZvcm0gKGxpc3QqIChzeW1ib2wgKHN0ciBcIi4tXCIgKG5hbWUgZikpKSBhcmdzKV1cbiAgICAgIChuby13YXJuIChhbmFseXplIGVudiBmaWVsZC1hY2Nlc3MtZm9ybSkpKVxuICAgICB7OmVudiBlbnYsXG4gICAgICA6b3AgOmludm9rZSxcbiAgICAgIDpmb3JtIGZvcm0sXG4gICAgICA6Zm4gZmV4cHIsXG4gICAgICA6YXJncyBhcmdleHBycyxcbiAgICAgIDpjaGlsZHJlbiBbOmZuIDphcmdzXX0pKSkpKVxuIn0gezpzeW0gKmNoZWNrZWQtYXJyYXlzKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmNoZWNrZWQtYXJyYXlzKiBmYWxzZSlcbiJ9IHs6c3ltIGFzdC1jaGlsZHJlbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFthc3RdKX0sIDpzb3VyY2UgIihkZWZuXG4gYXN0LWNoaWxkcmVuXG4gW2FzdF1cbiAobWFwY2F0XG4gIChmbiBbY10gKGxldCBbZyAoZ2V0IGFzdCBjKV0gKGNvbmQgKHZlY3Rvcj8gZykgZyBnIFtnXSkpKVxuICAoOmNoaWxkcmVuIGFzdCkpKVxuIn0gezpzeW0gbG9hZGVkLWpzLW5zPywgOm1ldGEgezpkb2MgIkNoZWNrIGlmIGEgSmF2YVNjcmlwdCBuYW1lc3BhY2UgaGFzIGJlZW4gbG9hZGVkLiBKYXZhU2NyaXB0IHZhcnMgYXJlXG4gIG5vdCBjdXJyZW50bHkgY2hlY2tlZC4iLCA6YXJnbGlzdHMgKFtlbnYgcHJlZml4XSl9LCA6c291cmNlICIoZGVmblxuIGxvYWRlZC1qcy1ucz9cbiBcIkNoZWNrIGlmIGEgSmF2YVNjcmlwdCBuYW1lc3BhY2UgaGFzIGJlZW4gbG9hZGVkLiBKYXZhU2NyaXB0IHZhcnMgYXJlXFxuICBub3QgY3VycmVudGx5IGNoZWNrZWQuXCJcbiAjPyg6Y2xqcyB7OnRhZyBib29sZWFufSlcbiBbZW52IHByZWZpeF1cbiAod2hlbi1ub3RcbiAgKGdldHMgQGVudi8qY29tcGlsZXIqIDpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXMgcHJlZml4KVxuICAobGV0XG4gICBbbnMgKDpucyBlbnYpXVxuICAgKG9yXG4gICAgKHNvbWU/IChnZXQgKDpyZXF1aXJlcyBucykgcHJlZml4KSlcbiAgICAoc29tZT8gKGdldCAoOmltcG9ydHMgbnMpIHByZWZpeCkpKSkpKVxuIn0gezpzeW0gYW5hbHl6ZS12ZWN0b3IsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IGZvcm1dKX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHl6ZS12ZWN0b3JcbiBbZW52IGZvcm1dXG4gKGxldFxuICBbZXhwci1lbnZcbiAgIChhc3NvYyBlbnYgOmNvbnRleHQgOmV4cHIpXG4gICBpdGVtc1xuICAgKGRpc2FsbG93aW5nLXJlY3VyXG4gICAgKG1hcHYgKGZuKiBbcDFfXzQ1MTE2I10gKGFuYWx5emUgZXhwci1lbnYgcDFfXzQ1MTE2IykpIGZvcm0pKV1cbiAgKGFuYWx5emUtd3JhcC1tZXRhXG4gICB7Om9wIDp2ZWN0b3IsXG4gICAgOmVudiBlbnYsXG4gICAgOmZvcm0gZm9ybSxcbiAgICA6aXRlbXMgaXRlbXMsXG4gICAgOmNoaWxkcmVuIFs6aXRlbXNdLFxuICAgIDp0YWcgJ2NsanMuY29yZS9JVmVjdG9yfSkpKVxuIn0gezpzeW0gdW53cmFwLXF1b3RlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3s6a2V5cyBbb3BdLCA6YXMgZXhwcn1dKX0sIDpzb3VyY2UgIihkZWZuXG4gdW53cmFwLXF1b3RlXG4gW3s6a2V5cyBbb3BdLCA6YXMgZXhwcn1dXG4gKGlmXG4gICM/KDpjbGogKD0gb3AgOnF1b3RlKSA6Y2xqcyAoa2V5d29yZC1pZGVudGljYWw/IG9wIDpxdW90ZSkpXG4gICg6ZXhwciBleHByKVxuICBleHByKSlcbiJ9IHs6c3ltIG5hbWVzcGFjZXMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gbmFtZXNwYWNlc1xuICM/KDpjbGogKHJlaWZ5IGNsb2p1cmUubGFuZy5JRGVyZWYgKGRlcmVmIFtfXSAoaWYgKHNvbWU/IGVudi8qY29tcGlsZXIqKSAoOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyAoY2xvanVyZS5jb3JlL2RlcmVmIGVudi8qY29tcGlsZXIqKSkgZGVmYXVsdC1uYW1lc3BhY2VzKSkpIDpjbGpzIChyZWlmeSBJRGVyZWYgKC1kZXJlZiBbX10gKGlmIChzb21lPyBlbnYvKmNvbXBpbGVyKikgKDpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXMgKGNsb2p1cmUuY29yZS9kZXJlZiBlbnYvKmNvbXBpbGVyKikpIGRlZmF1bHQtbmFtZXNwYWNlcykpKSkpXG4ifSB7OnN5bSBlbGlkZS1hbmFseXplci1tZXRhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21dKX0sIDpzb3VyY2UgIihkZWZuIGVsaWRlLWFuYWx5emVyLW1ldGEgW21dIChkaXNzb2MgbSA6Y2xqcy5hbmFseXplci9hbmFseXplZCkpXG4ifSB7OnN5bSBhbmFseXplLWxldC1ib2R5LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBjb250ZXh0IGV4cHJzIHJlY3VyLWZyYW1lcyBsb29wLWxldHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHl6ZS1sZXQtYm9keVxuIFtlbnYgY29udGV4dCBleHBycyByZWN1ci1mcmFtZXMgbG9vcC1sZXRzXVxuIChiaW5kaW5nXG4gIFsqcmVjdXItZnJhbWVzKiByZWN1ci1mcmFtZXMgKmxvb3AtbGV0cyogbG9vcC1sZXRzXVxuICAoYW5hbHl6ZS1sZXQtYm9keSogZW52IGNvbnRleHQgZXhwcnMpKSlcbiJ9IHs6c3ltIGV4dGVybi1wcmUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3ltIGN1cnJlbnQtbnNdKX0sIDpzb3VyY2UgIihkZWZuXG4gZXh0ZXJuLXByZVxuIFtzeW0gY3VycmVudC1uc11cbiAobGV0XG4gIFtwcmVcbiAgIChpbnRvXG4gICAgJ1tPYmplY3RdXG4gICAgKC0+PiAoc3RyaW5nL3NwbGl0IChuYW1lIHN5bSkgI1wiXFwuXCIpIChtYXAgc3ltYm9sKSB2ZWMpKV1cbiAgKHdoZW4tbm90XG4gICAoaGFzLWV4dGVybj8gcHJlKVxuICAgKHN3YXAhXG4gICAgZW52Lypjb21waWxlcipcbiAgICB1cGRhdGUtaW5cbiAgICAoaW50byBbOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyBjdXJyZW50LW5zIDpleHRlcm5zXSBwcmUpXG4gICAgbWVyZ2VcbiAgICB7fSkpXG4gIHByZSkpXG4ifSB7OnN5bSBnZXQtY29sLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ggZW52XSl9LCA6c291cmNlICIoZGVmbiBnZXQtY29sIFt4IGVudl0gKG9yICgtPiB4IG1ldGEgOmNvbHVtbikgKDpjb2x1bW4gZW52KSkpXG4ifSB7OnN5bSBiYXNpYy12YWxpZGF0ZS1ucy1zcGVjLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBtYWNyb3M/IHNwZWNdKX0sIDpzb3VyY2UgIihkZWZuXG4gYmFzaWMtdmFsaWRhdGUtbnMtc3BlY1xuIFtlbnYgbWFjcm9zPyBzcGVjXVxuICh3aGVuLW5vdFxuICAob3IgKHN5bWJvbD8gc3BlYykgKHN0cmluZz8gc3BlYykgKHNlcXVlbnRpYWw/IHNwZWMpKVxuICAodGhyb3dcbiAgIChlcnJvclxuICAgIGVudlxuICAgIChwYXJzZS1ucy1lcnJvci1tc2dcbiAgICAgc3BlY1xuICAgICBcIk9ubHkgW2xpYi5ucyAmIG9wdGlvbnNdIGFuZCBsaWIubnMgc3BlY3Mgc3VwcG9ydGVkIGluIDpyZXF1aXJlIC8gOnJlcXVpcmUtbWFjcm9zXCIpKSkpXG4gKHdoZW5cbiAgKHNlcXVlbnRpYWw/IHNwZWMpXG4gICh3aGVuLW5vdFxuICAgKG9yIChzeW1ib2w/IChmaXJzdCBzcGVjKSkgKHN0cmluZz8gKGZpcnN0IHNwZWMpKSlcbiAgICh0aHJvd1xuICAgIChlcnJvclxuICAgICBlbnZcbiAgICAgKHBhcnNlLW5zLWVycm9yLW1zZ1xuICAgICAgc3BlY1xuICAgICAgXCJMaWJyYXJ5IG5hbWUgbXVzdCBiZSBzcGVjaWZpZWQgYXMgYSBzeW1ib2wgaW4gOnJlcXVpcmUgLyA6cmVxdWlyZS1tYWNyb3NcIikpKSlcbiAgKHdoZW4tbm90XG4gICAob2RkPyAoY291bnQgc3BlYykpXG4gICAodGhyb3dcbiAgICAoZXJyb3JcbiAgICAgZW52XG4gICAgIChwYXJzZS1ucy1lcnJvci1tc2dcbiAgICAgIHNwZWNcbiAgICAgIFwiT25seSA6YXMgYWxpYXMsIDpyZWZlciAobmFtZXMpIGFuZCA6cmVuYW1lIHtmcm9tIHRvfSBvcHRpb25zIHN1cHBvcnRlZCBpbiA6cmVxdWlyZVwiKSkpKVxuICAod2hlbi1ub3RcbiAgIChldmVyeT8gI3s6YXMgOnJlbmFtZSA6cmVmZXJ9IChtYXAgZmlyc3QgKHBhcnRpdGlvbiAyIChuZXh0IHNwZWMpKSkpXG4gICAodGhyb3dcbiAgICAoZXJyb3JcbiAgICAgZW52XG4gICAgIChwYXJzZS1ucy1lcnJvci1tc2dcbiAgICAgIHNwZWNcbiAgICAgIFwiT25seSA6YXMsIDpyZWZlciBhbmQgOnJlbmFtZSBvcHRpb25zIHN1cHBvcnRlZCBpbiA6cmVxdWlyZSAvIDpyZXF1aXJlLW1hY3Jvc1wiKSkpKVxuICAod2hlbi1ub3RcbiAgIChsZXRcbiAgICBbZnMgKGZyZXF1ZW5jaWVzIChuZXh0IHNwZWMpKV1cbiAgICAoYW5kICg8PSAoZnMgOmFzIDApIDEpICg8PSAoZnMgOnJlZmVyIDApIDEpKSlcbiAgICh0aHJvd1xuICAgIChlcnJvclxuICAgICBlbnZcbiAgICAgKHBhcnNlLW5zLWVycm9yLW1zZ1xuICAgICAgc3BlY1xuICAgICAgXCJFYWNoIG9mIDphcyBhbmQgOnJlZmVyIG9wdGlvbnMgbWF5IG9ubHkgYmUgc3BlY2lmaWVkIG9uY2UgaW4gOnJlcXVpcmUgLyA6cmVxdWlyZS1tYWNyb3NcIikpKSkpKVxuIn0gezpzeW0gKmNsanMtd2FybmluZ3MqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuICpjbGpzLXdhcm5pbmdzKlxuIHs6aW52b2tlLWN0b3IgdHJ1ZSxcbiAgOmV4dGVuZGluZy1iYXNlLWpzLXR5cGUgdHJ1ZSxcbiAgOnVuc3VwcG9ydGVkLXByZXByb2Nlc3MtdmFsdWUgdHJ1ZSxcbiAgOnJlZGVmIHRydWUsXG4gIDpqcy1zaGFkb3dlZC1ieS1sb2NhbCB0cnVlLFxuICA6dW5zdXBwb3J0ZWQtanMtbW9kdWxlLXR5cGUgdHJ1ZSxcbiAgOmludmFsaWQtcHJvdG9jb2wtc3ltYm9sIHRydWUsXG4gIDpwcml2YXRlLXZhci1hY2Nlc3MgdHJ1ZSxcbiAgOnByb3RvY29sLWR1cGVkLW1ldGhvZCB0cnVlLFxuICA6bXVuZ2VkLW5hbWVzcGFjZSB0cnVlLFxuICA6c2luZ2xlLXNlZ21lbnQtbmFtZXNwYWNlIHRydWUsXG4gIDpmbi1hcml0eSB0cnVlLFxuICA6aW5mZXItd2FybmluZyBmYWxzZSxcbiAgOnZhcmlhZGljLW1heC1hcml0eSB0cnVlLFxuICA6cHJvdG9jb2wtd2l0aC12YXJpYWRpYy1tZXRob2QgdHJ1ZSxcbiAgOmZuLWRlcHJlY2F0ZWQgdHJ1ZSxcbiAgOnVuZGVjbGFyZWQtdmFyIHRydWUsXG4gIDpkZWNsYXJlZC1hcmdsaXN0cy1taXNtYXRjaCB0cnVlLFxuICA6cHJlYW1ibGUtbWlzc2luZyB0cnVlLFxuICA6dW5kZWNsYXJlZC1wcm90b2NvbC1zeW1ib2wgdHJ1ZSxcbiAgOnByb3RvY29sLXdpdGgtb3ZlcndyaXRpbmctbWV0aG9kIHRydWUsXG4gIDpkeW5hbWljIHRydWUsXG4gIDppbnZhbGlkLWFycmF5LWFjY2VzcyB0cnVlLFxuICA6dW5wcm92aWRlZCB0cnVlLFxuICA6bnMtdmFyLWNsYXNoIHRydWUsXG4gIDp1bmRlY2xhcmVkLW5zIHRydWUsXG4gIDpub24tZHluYW1pYy1lYXJtdWZmZWQtdmFyIHRydWUsXG4gIDp1bmRlY2xhcmVkLW5zLWZvcm0gdHJ1ZSxcbiAgOmludmFsaWQtYXJpdGhtZXRpYyB0cnVlLFxuICA6cHJvdG9jb2wtZGVwcmVjYXRlZCB0cnVlLFxuICA6Zm4tdmFyIHRydWUsXG4gIDpwcm90b2NvbC1pbXBsLXJlY3VyLXdpdGgtdGFyZ2V0IHRydWUsXG4gIDpvdmVybG9hZC1hcml0eSB0cnVlLFxuICA6cHJvdG9jb2wtbXVsdGlwbGUtaW1wbHMgdHJ1ZSxcbiAgOnJlZGVmLWluLWZpbGUgdHJ1ZSxcbiAgOnByb3RvY29sLWludmFsaWQtbWV0aG9kIHRydWUsXG4gIDpleHRlbmQtdHlwZS1pbnZhbGlkLW1ldGhvZC1zaGFwZSB0cnVlLFxuICA6bXVsdGlwbGUtdmFyaWFkaWMtb3ZlcmxvYWRzIHRydWUsXG4gIDpwcm90b2NvbC1pbXBsLXdpdGgtdmFyaWFkaWMtbWV0aG9kIHRydWV9KVxuIn0gezpzeW0gYWxpYXMtPnR5cGUsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gYWxpYXMtPnR5cGVcbiAne29iamVjdCBPYmplY3QsXG4gICBzdHJpbmcgU3RyaW5nLFxuICAgbnVtYmVyIE51bWJlcixcbiAgIGFycmF5IEFycmF5LFxuICAgZnVuY3Rpb24gRnVuY3Rpb24sXG4gICBib29sZWFuIEJvb2xlYW4sXG4gICBzeW1ib2wgU3ltYm9sfSlcbiJ9IHs6c3ltIGFuYWx5emVkPywgOm1ldGEgezpkb2MgIlJldHVybnMgYm9vbGVhbiBpZiB0aGUgZm9ybSBoYXMgYWxyZWFkeSBiZWVuIG1hcmtlZCBhcyBhbmFseXplZC4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGFuYWx5emVkP1xuIFwiUmV0dXJucyBib29sZWFuIGlmIHRoZSBmb3JtIGhhcyBhbHJlYWR5IGJlZW4gbWFya2VkIGFzIGFuYWx5emVkLlwiXG4gIz8oOmNsanMgezp0YWcgYm9vbGVhbn0pXG4gW3hdXG4gKGJvb2xlYW5cbiAgKGNvbmRcbiAgICh1bnNvcnRlZC1tYXA/IHgpXG4gICAoOmNsanMuYW5hbHl6ZXIvYW5hbHl6ZWQgeClcbiAgIDplbHNlXG4gICAoOmNsanMuYW5hbHl6ZXIvYW5hbHl6ZWQgKG1ldGEgeCkpKSkpXG4ifSB7OnN5bSBhbmFseXplLWRlcHMsIDptZXRhIHs6ZG9jICJHaXZlbiBhIGxpYiwgYSBuYW1lc3BhY2UsIGRlcHMsIGl0cyBkZXBlbmRlbmNpZXMsIGVudiwgYW4gYW5hbHlzaXMgZW52aXJvbm1lbnRcbiAgIGFuZCBvcHRzLCBjb21waWxlciBvcHRpb25zIC0gYW5hbHl6ZSBhbGwgb2YgdGhlIGRlcGVuZGVuY2llcy4gUmVxdWlyZWQgdG9cbiAgIGNvcnJlY3RseSBhbmFseXplIHVzYWdlIG9mIG90aGVyIG5hbWVzcGFjZXMuIiwgOmFyZ2xpc3RzIFtbbGliIGRlcHMgZW52XSBbbGliIGRlcHMgZW52IG9wdHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHl6ZS1kZXBzXG4gXCJHaXZlbiBhIGxpYiwgYSBuYW1lc3BhY2UsIGRlcHMsIGl0cyBkZXBlbmRlbmNpZXMsIGVudiwgYW4gYW5hbHlzaXMgZW52aXJvbm1lbnRcXG4gICBhbmQgb3B0cywgY29tcGlsZXIgb3B0aW9ucyAtIGFuYWx5emUgYWxsIG9mIHRoZSBkZXBlbmRlbmNpZXMuIFJlcXVpcmVkIHRvXFxuICAgY29ycmVjdGx5IGFuYWx5emUgdXNhZ2Ugb2Ygb3RoZXIgbmFtZXNwYWNlcy5cIlxuIChbbGliIGRlcHMgZW52XVxuICAoYW5hbHl6ZS1kZXBzXG4gICBsaWJcbiAgIGRlcHNcbiAgIGVudlxuICAgKHdoZW4gZW52Lypjb21waWxlciogKDpvcHRpb25zIEBlbnYvKmNvbXBpbGVyKikpKSlcbiAoW2xpYiBkZXBzIGVudiBvcHRzXVxuICAobGV0XG4gICBbY29tcGlsZXIgQGVudi8qY29tcGlsZXIqXVxuICAgKGJpbmRpbmdcbiAgICBbKmNsanMtZGVwLXNldCpcbiAgICAgKHZhcnktbWV0YVxuICAgICAgKGNvbmogKmNsanMtZGVwLXNldCogbGliKVxuICAgICAgdXBkYXRlLWluXG4gICAgICBbOmRlcC1wYXRoXVxuICAgICAgY29ualxuICAgICAgbGliKV1cbiAgICAoYXNzZXJ0XG4gICAgIChldmVyeT9cbiAgICAgIChmbiogW3AxX180NTA4OSNdIChub3QgKGNvbnRhaW5zPyAqY2xqcy1kZXAtc2V0KiBwMV9fNDUwODkjKSkpXG4gICAgICBkZXBzKVxuICAgICAoc3RyXG4gICAgICBcIkNpcmN1bGFyIGRlcGVuZGVuY3kgZGV0ZWN0ZWQsIFwiXG4gICAgICAoYXBwbHlcbiAgICAgICBzdHJcbiAgICAgICAoaW50ZXJwb3NlXG4gICAgICAgIFwiIC0+IFwiXG4gICAgICAgIChjb25qXG4gICAgICAgICAoLT4gKmNsanMtZGVwLXNldCogbWV0YSA6ZGVwLXBhdGgpXG4gICAgICAgICAoc29tZSAqY2xqcy1kZXAtc2V0KiBkZXBzKSkpKSkpXG4gICAgKGRvc2VxXG4gICAgIFtkZXAgZGVwc11cbiAgICAgKHdoZW4tbm90XG4gICAgICAob3JcbiAgICAgICAoc29tZT8gKGdldC1pbiBjb21waWxlciBbOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyBkZXAgOmRlZnNdKSlcbiAgICAgICAobm9kZS1tb2R1bGUtZGVwPyBkZXApXG4gICAgICAgKGpzLW1vZHVsZS1leGlzdHM/IChuYW1lIGRlcCkpXG4gICAgICAgIz8oOmNsaiAoZGVwcy9maW5kLWNsYXNzcGF0aC1saWIgZGVwKSkpXG4gICAgICAobGV0XG4gICAgICAgW2lkeFxuICAgICAgICAoOmpzLWRlcGVuZGVuY3ktaW5kZXggY29tcGlsZXIpXG4gICAgICAgIGRlcFxuICAgICAgICAoLT4gZGVwIGxpYiZzdWJsaWIgZmlyc3QpXVxuICAgICAgIChpZlxuICAgICAgICAoY29udGFpbnM/IGlkeCAobmFtZSBkZXApKVxuICAgICAgICAobGV0XG4gICAgICAgICBbZGVwLW5hbWUgKG5hbWUgZGVwKV1cbiAgICAgICAgICh3aGVuXG4gICAgICAgICAgKHN0cmluZy9zdGFydHMtd2l0aD8gZGVwLW5hbWUgXCJnb29nLlwiKVxuICAgICAgICAgICM/KDpjbGogKGxldCBbanMtbGliIChnZXQgaWR4IGRlcC1uYW1lKSBucyAoZXh0ZXJucy9hbmFseXplLWdvb2ctZmlsZSAoOmZpbGUganMtbGliKSAoc3ltYm9sIGRlcC1uYW1lKSldIChzd2FwISBlbnYvKmNvbXBpbGVyKiB1cGRhdGUtaW4gWzpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXMgZGVwXSBtZXJnZSBucykpKSkpXG4gICAgICAgICM/KDpjbGogKGlmLXNvbWUgW3NyYyAobG9jYXRlLXNyYyBkZXApXSAoYW5hbHl6ZS1maWxlIHNyYyBvcHRzKSAodGhyb3cgKGVycm9yIGVudiAoZXJyb3ItbWVzc2FnZSA6dW5kZWNsYXJlZC1ucyB7Om5zLXN5bSBkZXAsIDpqcy1wcm92aWRlIChuYW1lIGRlcCl9KSkpKSA6Y2xqcyAodGhyb3cgKGVycm9yIGVudiAoZXJyb3ItbWVzc2FnZSA6dW5kZWNsYXJlZC1ucyB7Om5zLXN5bSBkZXAsIDpqcy1wcm92aWRlIChuYW1lIGRlcCl9KSkpKSkpKSkpKSkpXG4ifSB7OnN5bSBhcnJheS10eXBlPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0XSl9LCA6c291cmNlICIoZGVmblxuIGFycmF5LXR5cGU/XG4gIz8oOmNsanMgezp0YWcgYm9vbGVhbn0pXG4gW3RdXG4gKGNvbmRcbiAgKG5pbD8gdClcbiAgdHJ1ZVxuICAoPSAnY2xqLW5pbCB0KVxuICB0cnVlXG4gIChqcy10YWc/IHQpXG4gIHRydWVcbiAgKD0gJ2FueSB0KVxuICB0cnVlXG4gIChjb250YWlucz8gYXJyYXktdHlwZXMgdClcbiAgdHJ1ZVxuICA6ZWxzZVxuICAoYm9vbGVhblxuICAgKHdoZW5cbiAgICAjPyg6Y2xqIChzZXQ/IHQpIDpjbGpzIChpbXBsL2NsanMtc2V0PyB0KSlcbiAgICAob3IgKGNvbnRhaW5zPyB0ICdhbnkpIChjb250YWlucz8gdCAnanMpIChzb21lIGFycmF5LXR5cGVzIHQpKSkpKSlcbiJ9IHs6c3ltIGRvdHRlZC1zeW1ib2w/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N5bV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBkb3R0ZWQtc3ltYm9sP1xuIFtzeW1dXG4gKGxldFxuICBbcyAoc3RyIHN5bSldXG4gICM/KDpjbGogKGFuZCAoLmNvbnRhaW5zIHMgXCIuXCIpIChub3QgKC5jb250YWlucyBzIFwiLi5cIikpKSA6Y2xqcyAoYW5kIChnb29nLnN0cmluZy9jb250YWlucyBzIFwiLlwiKSAobm90IChnb29nLnN0cmluZy9jb250YWlucyBzIFwiLi5cIikpKSkpKVxuIn0gezpzeW0gKmNsanMtbWFjcm9zLWlzLWNsYXNzcGF0aCosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpjbGpzLW1hY3Jvcy1pcy1jbGFzc3BhdGgqIHRydWUpXG4ifSB7OnN5bSAqYWxsb3ctcmVkZWYqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqYWxsb3ctcmVkZWYqIGZhbHNlKVxuIn0gezpzeW0gYW5hbHl6ZS1mbi1tZXRob2QtYm9keSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgZm9ybSByZWN1ci1mcmFtZXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHl6ZS1mbi1tZXRob2QtYm9keVxuIFtlbnYgZm9ybSByZWN1ci1mcmFtZXNdXG4gKGJpbmRpbmcgWypyZWN1ci1mcmFtZXMqIHJlY3VyLWZyYW1lc10gKGFuYWx5emUgZW52IGZvcm0pKSlcbiJ9IHs6c3ltIGluZmVyLXR5cGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IHs6a2V5cyBbdGFnXSwgOmFzIGFzdH0gX10pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbmZlci10eXBlXG4gW2VudiB7OmtleXMgW3RhZ10sIDphcyBhc3R9IF9dXG4gKGlmXG4gIChvciAobmlsPyB0YWcpICg9ICdmdW5jdGlvbiB0YWcpKVxuICAoaWZcbiAgICg9IDpmbiAoOm9wIGFzdCkpXG4gICAodXBkYXRlXG4gICAgYXN0XG4gICAgOm1ldGhvZHNcbiAgICAoZm5cbiAgICAgW21zXVxuICAgICAoaW50b1xuICAgICAgW11cbiAgICAgIChtYXAgKGZuKiBbcDFfXzQ1MTIxI10gKGluZmVyLXR5cGUgZW52IHAxX180NTEyMSMgXykpKVxuICAgICAgbXMpKSlcbiAgIChpZi1zb21lIFt0YWcgKGluZmVyLXRhZyBlbnYgYXN0KV0gKGFzc29jIGFzdCA6dGFnIHRhZykgYXN0KSlcbiAgYXN0KSlcbiJ9IHs6c3ltIHBhcnNlLWltcG9ydC1zcGVjLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBkZXBzIHNwZWNdKX0sIDpzb3VyY2UgIihkZWZuXG4gcGFyc2UtaW1wb3J0LXNwZWNcbiBbZW52IGRlcHMgc3BlY11cbiAod2hlbi1ub3RcbiAgKG9yXG4gICAoYW5kIChzZXF1ZW50aWFsPyBzcGVjKSAoZXZlcnk/IHN5bWJvbD8gc3BlYykpXG4gICAoYW5kIChzeW1ib2w/IHNwZWMpIChuaWw/IChuYW1lc3BhY2Ugc3BlYykpKSlcbiAgKHRocm93XG4gICAoZXJyb3JcbiAgICBlbnZcbiAgICAocGFyc2UtbnMtZXJyb3ItbXNnXG4gICAgIHNwZWNcbiAgICAgXCJPbmx5IGxpYi5ucy5DdG9yIG9yIFtsaWIubnMgQ3RvcipdIHNwZWMgc3VwcG9ydGVkIGluIDppbXBvcnRcIikpKSlcbiAobGV0XG4gIFtpbXBvcnQtbWFwXG4gICAoY29uZFxuICAgIChzZXF1ZW50aWFsPyBzcGVjKVxuICAgICgtPj5cbiAgICAgKHJlc3Qgc3BlYylcbiAgICAgKG1hcFxuICAgICAgKGZuKlxuICAgICAgIFtwMV9fNDUwOTgjXVxuICAgICAgICh2ZWN0b3IgcDFfXzQ1MDk4IyAoc3ltYm9sIChzdHIgKGZpcnN0IHNwZWMpIFwiLlwiIHAxX180NTA5OCMpKSkpKVxuICAgICAoaW50byB7fSkpXG4gICAgKG5vdCAoPT0gLTEgKC5pbmRleE9mIChzdHIgc3BlYykgXCIuXCIpKSlcbiAgICB7KHN5bWJvbCAobGFzdCAoc3RyaW5nL3NwbGl0IChzdHIgc3BlYykgI1wiXFwuXCIpKSkgc3BlY31cbiAgICA6ZWxzZVxuICAgIHt9KV1cbiAgKGRvc2VxIFtbXyBzcGVjXSBpbXBvcnQtbWFwXSAoc3dhcCEgZGVwcyBjb25qIHNwZWMpKVxuICB7OmltcG9ydCBpbXBvcnQtbWFwLCA6cmVxdWlyZSBpbXBvcnQtbWFwfSkpXG4ifSB7OnN5bSBjbGotbnMtPmNsanMtbnMsIDptZXRhIHs6ZG9jICJHaXZlbiBhIHN5bWJvbCB0aGF0IHN0YXJ0cyB3aXRoIGNsb2p1cmUgYXMgdGhlIGZpcnN0IHNlZ21lbnQgcmV0dXJuIHRoZVxuICAgc2FtZSBzeW1ib2wgd2l0aCB0aGUgZmlyc3Qgc2VnbWVudCByZXBsYWNlZCB3aXRoIGNsanMiLCA6YXJnbGlzdHMgKFtzeW1dKX0sIDpzb3VyY2UgIihkZWZuXG4gY2xqLW5zLT5jbGpzLW5zXG4gXCJHaXZlbiBhIHN5bWJvbCB0aGF0IHN0YXJ0cyB3aXRoIGNsb2p1cmUgYXMgdGhlIGZpcnN0IHNlZ21lbnQgcmV0dXJuIHRoZVxcbiAgIHNhbWUgc3ltYm9sIHdpdGggdGhlIGZpcnN0IHNlZ21lbnQgcmVwbGFjZWQgd2l0aCBjbGpzXCJcbiBbc3ltXVxuIChsZXRcbiAgW3NlZ3MgKHN0cmluZy9zcGxpdCAoY2xvanVyZS5jb3JlL25hbWUgc3ltKSAjXCJcXC5cIildXG4gIChpZlxuICAgKD0gXCJjbG9qdXJlXCIgKGZpcnN0IHNlZ3MpKVxuICAgKHN5bWJvbCAoc3RyaW5nL2pvaW4gXCIuXCIgKGNvbnMgXCJjbGpzXCIgKG5leHQgc2VncykpKSlcbiAgIHN5bSkpKVxuIn0gezpzeW0gY29uc3RhbnQtdmFsdWU/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3s6a2V5cyBbb3BdLCA6YXMgYXN0fV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjb25zdGFudC12YWx1ZT9cbiBbezprZXlzIFtvcF0sIDphcyBhc3R9XVxuIChvclxuICAoI3s6Y29uc3QgOnF1b3RlfSBvcClcbiAgKGFuZFxuICAgKCN7OnZlY3RvciA6c2V0IDptYXB9IG9wKVxuICAgKGV2ZXJ5PyBjb25zdGFudC12YWx1ZT8gKGFzdC1jaGlsZHJlbiBhc3QpKSkpKVxuIn0gezpzeW0gZHVtcC1zcGVjcywgOm1ldGEgezpkb2MgIkR1bXBzIHJlZ2lzdGVyZWQgc3BlY2VkIHZhcnMgZm9yIGEgZ2l2ZW4gbmFtZXNwYWNlIGludG8gdGhlIGNvbXBpbGVyXG4gIGVudmlyb25tZW50LiIsIDphcmdsaXN0cyAoW25zXSl9LCA6c291cmNlICIoZGVmblxuIGR1bXAtc3BlY3NcbiBcIkR1bXBzIHJlZ2lzdGVyZWQgc3BlY2VkIHZhcnMgZm9yIGEgZ2l2ZW4gbmFtZXNwYWNlIGludG8gdGhlIGNvbXBpbGVyXFxuICBlbnZpcm9ubWVudC5cIlxuIFtuc11cbiAobGV0XG4gIFtzcGVjLXZhcnMgKGdldC1zcGVjLXZhcnMpIG5zLXN0ciAoc3RyIG5zKV1cbiAgKHN3YXAhXG4gICBlbnYvKmNvbXBpbGVyKlxuICAgdXBkYXRlLWluXG4gICBbOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyBuc11cbiAgIG1lcmdlXG4gICAod2hlbi1sZXRcbiAgICBbcmVnaXN0cnktcmVmICg6cmVnaXN0cnktcmVmIHNwZWMtdmFycyldXG4gICAgezpjbGpzLnNwZWMvcmVnaXN0cnktcmVmXG4gICAgIChpbnRvXG4gICAgICBbXVxuICAgICAgKGZpbHRlciAoZm4gW1trIF9dXSAoPSBucy1zdHIgKG5hbWVzcGFjZSBrKSkpKVxuICAgICAgQEByZWdpc3RyeS1yZWYpfSlcbiAgICh3aGVuLWxldFxuICAgIFtzcGVjZWQtdmFycyAoOnNwZWNlZC12YXJzIHNwZWMtdmFycyldXG4gICAgezpjbGpzLnNwZWMvc3BlY2VkLXZhcnNcbiAgICAgKGludG9cbiAgICAgIFtdXG4gICAgICAoZmlsdGVyXG4gICAgICAgKGZuXG4gICAgICAgIFt2XVxuICAgICAgICAob3IgKD0gbnMtc3RyIChuYW1lc3BhY2UgdikpICg9IG5zICgtPiB2IG1ldGEgOmZkZWYtbnMpKSkpKVxuICAgICAgQEBzcGVjZWQtdmFycyl9KSkpKVxuIn0gezpzeW0gKmZuLWludm9rZS1kaXJlY3QqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqZm4taW52b2tlLWRpcmVjdCogZmFsc2UpXG4ifSB7OnN5bSB1c2UtPnJlcXVpcmUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IFtsaWIgJiBmaWx0ZXJzIDphcyBzcGVjXV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB1c2UtPnJlcXVpcmVcbiBbZW52IFtsaWIgJiBmaWx0ZXJzIDphcyBzcGVjXV1cbiAod2hlbi1ub3RcbiAgKGFuZCAoc3ltYm9sPyBsaWIpIChvZGQ/IChjb3VudCBzcGVjKSkpXG4gICh0aHJvd1xuICAgKGVycm9yXG4gICAgZW52XG4gICAgKHBhcnNlLW5zLWVycm9yLW1zZ1xuICAgICBzcGVjXG4gICAgIFwiT25seSBbbGliLm5zIDpvbmx5IChuYW1lcyldIGFuZCBvcHRpb25hbGx5IGA6cmVuYW1lIHtmcm9tIHRvfWAgc3BlY3Mgc3VwcG9ydGVkIGluIDp1c2UgLyA6dXNlLW1hY3Jvc1wiKSkpKVxuIChsb29wXG4gIFtmcyAoc2VxIGZpbHRlcnMpIHJldCBbbGliXSBlcnIgZmFsc2VdXG4gIChjb25kXG4gICAodHJ1ZT8gZXJyKVxuICAgKHRocm93XG4gICAgKGVycm9yXG4gICAgIGVudlxuICAgICAocGFyc2UtbnMtZXJyb3ItbXNnXG4gICAgICBzcGVjXG4gICAgICBcIk9ubHkgW2xpYi5ucyA6b25seSAobmFtZXMpXSBhbmQgb3B0aW9uYWxseSBgOnJlbmFtZSB7ZnJvbSB0b31gIHNwZWNzIHN1cHBvcnRlZCBpbiA6dXNlIC8gOnVzZS1tYWNyb3NcIikpKVxuICAgKHNvbWU/IGZzKVxuICAgKGxldFxuICAgIFtrdyAoZmlyc3QgZnMpIG9ubHk/ICg9IGt3IDpvbmx5KV1cbiAgICAoaWZcbiAgICAgKG9yIG9ubHk/ICg9IGt3IDpyZW5hbWUpKVxuICAgICAoaWZcbiAgICAgIChzb21lPyAoc29tZSAjeyhpZiBvbmx5PyA6cmVmZXIga3cpfSByZXQpKVxuICAgICAgKHRocm93XG4gICAgICAgKGVycm9yXG4gICAgICAgIGVudlxuICAgICAgICAocGFyc2UtbnMtZXJyb3ItbXNnXG4gICAgICAgICBzcGVjXG4gICAgICAgICBcIkVhY2ggb2YgOm9ubHkgYW5kIDpyZW5hbWUgb3B0aW9ucyBtYXkgb25seSBiZSBzcGVjaWZpZWQgb25jZSBpbiA6dXNlIC8gOnVzZS1tYWNyb3NcIikpKVxuICAgICAgKGxldFxuICAgICAgIFtyZWZzIChzZWNvbmQgZnMpXVxuICAgICAgIChpZi1ub3RcbiAgICAgICAgKG9yXG4gICAgICAgICAoYW5kIG9ubHk/IChzZXF1ZW50aWFsPyByZWZzKSAoZXZlcnk/IHN5bWJvbD8gcmVmcykpXG4gICAgICAgICAoYW5kXG4gICAgICAgICAgKD0ga3cgOnJlbmFtZSlcbiAgICAgICAgICAobWFwPyByZWZzKVxuICAgICAgICAgIChldmVyeT9cbiAgICAgICAgICAgKGZuKiBbcDFfXzQ1MDk3I10gKGV2ZXJ5PyBzeW1ib2w/IHAxX180NTA5NyMpKVxuICAgICAgICAgICByZWZzKSkpXG4gICAgICAgIChyZWN1ciBmcyByZXQgdHJ1ZSlcbiAgICAgICAgKHJlY3VyXG4gICAgICAgICAobm5leHQgZnMpXG4gICAgICAgICAoaW50byByZXQgWyhpZiBvbmx5PyA6cmVmZXIga3cpIHJlZnNdKVxuICAgICAgICAgZmFsc2UpKSkpXG4gICAgIChyZWN1ciBmcyByZXQgdHJ1ZSkpKVxuICAgOmVsc2VcbiAgIChpZiAoc29tZT8gKHNvbWUgI3s6cmVmZXJ9IHJldCkpIHJldCAocmVjdXIgZnMgcmV0IHRydWUpKSkpKVxuIn0gezpzeW0gaW5mZXJyZWQtdXNlLW1hY3JvcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt1c2UtbWFjcm9zIGVudl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbmZlcnJlZC11c2UtbWFjcm9zXG4gW3VzZS1tYWNyb3MgZW52XVxuIChsZXRcbiAgW2NlbnYgQGVudi8qY29tcGlsZXIqXVxuICAoaW50b1xuICAge31cbiAgIChmaWx0ZXJcbiAgICAoZm4gW1tzeW0gbGliXV0gKG5vdCAobWlzc2luZy11c2UtbWFjcm8/IGxpYiBzeW0pKSlcbiAgICB1c2UtbWFjcm9zKSkpKVxuIn0gezpzeW0gYW5hbHl6ZS1zeW1ib2wsIDptZXRhIHs6ZG9jICJGaW5kcyB0aGUgdmFyIGFzc29jaWF0ZWQgd2l0aCBzeW0iLCA6YXJnbGlzdHMgKFtlbnYgc3ltXSl9LCA6c291cmNlICIoZGVmblxuIGFuYWx5emUtc3ltYm9sXG4gXCJGaW5kcyB0aGUgdmFyIGFzc29jaWF0ZWQgd2l0aCBzeW1cIlxuIFtlbnYgc3ltXVxuIChpZlxuICAoOnF1b3RlZD8gZW52KVxuICAoZG9cbiAgIChyZWdpc3Rlci1jb25zdGFudCEgZW52IHN5bSlcbiAgIChhbmFseXplLXdyYXAtbWV0YVxuICAgIHs6b3AgOmNvbnN0LFxuICAgICA6dmFsIHN5bSxcbiAgICAgOmVudiBlbnYsXG4gICAgIDpmb3JtIHN5bSxcbiAgICAgOnRhZyAnY2xqcy5jb3JlL1N5bWJvbH0pKVxuICAobGV0XG4gICBbezprZXlzIFtsaW5lIGNvbHVtbl19XG4gICAgKG1ldGEgc3ltKVxuICAgIGVudlxuICAgIChpZi1ub3QgKG5pbD8gbGluZSkgKGFzc29jIGVudiA6bGluZSBsaW5lKSBlbnYpXG4gICAgZW52XG4gICAgKGlmLW5vdCAobmlsPyBjb2x1bW4pIChhc3NvYyBlbnYgOmNvbHVtbiBjb2x1bW4pIGVudilcbiAgICByZXRcbiAgICB7OmVudiBlbnYsIDpmb3JtIHN5bX1cbiAgICBsY2xzXG4gICAgKDpsb2NhbHMgZW52KV1cbiAgIChpZi1zb21lXG4gICAgW2xiIChoYW5kbGUtc3ltYm9sLWxvY2FsIHN5bSAoZ2V0IGxjbHMgc3ltKSldXG4gICAgKG1lcmdlXG4gICAgIChhc3NvYyByZXQgOm9wIDpsb2NhbCA6aW5mbyBsYilcbiAgICAgKHdoZW5cbiAgICAgIChtYXA/IGxiKVxuICAgICAgKHNlbGVjdC1rZXlzIGxiIFs6bmFtZSA6bG9jYWwgOmFyZy1pZCA6dmFyaWFkaWM/IDppbml0XSkpKVxuICAgIChsZXRcbiAgICAgW3N5bS1tZXRhXG4gICAgICAobWV0YSBzeW0pXG4gICAgICBzeW0tbnNcbiAgICAgIChuYW1lc3BhY2Ugc3ltKVxuICAgICAgY3VyLW5zXG4gICAgICAoc3RyICgtPiBlbnYgOm5zIDpuYW1lKSlcbiAgICAgICM/QCg6Y2xqcyBbc3ltIChpZiAoYW5kIHN5bS1ucyAobm90PSBzeW0tbnMgXCJjbGpzLmNvcmVcIikgKGdzdHJpbmcvZW5kc1dpdGggY3VyLW5zIFwiJG1hY3Jvc1wiKSAobm90IChnc3RyaW5nL2VuZHNXaXRoIHN5bS1ucyBcIiRtYWNyb3NcIikpICg9IHN5bS1ucyAoc3VicyBjdXItbnMgMCAoLSAoY291bnQgY3VyLW5zKSA3KSkpKSAoc3ltYm9sIChzdHIgc3ltLW5zIFwiJG1hY3Jvc1wiKSAobmFtZSBzeW0pKSBzeW0pXSlcbiAgICAgIGluZm9cbiAgICAgIChpZi1ub3RcbiAgICAgICAoY29udGFpbnM/IHN5bS1tZXRhIDpjbGpzLmFuYWx5emVyL2FuYWx5emVkKVxuICAgICAgIChyZXNvbHZlLWV4aXN0aW5nLXZhciBlbnYgc3ltKVxuICAgICAgIChyZXNvbHZlLXZhciBlbnYgc3ltKSldXG4gICAgIChhc3NlcnQgKDpvcCBpbmZvKSAoOm9wIGluZm8pKVxuICAgICAoZGVzdWdhci1kb3R0ZWQtZXhwclxuICAgICAgKGlmLW5vdFxuICAgICAgICh0cnVlPyAoOmRlZi12YXIgZW52KSlcbiAgICAgICAobWVyZ2VcbiAgICAgICAgKGFzc29jIHJldCA6aW5mbyBpbmZvKVxuICAgICAgICAoc2VsZWN0LWtleXMgaW5mbyBbOm9wIDpuYW1lIDpucyA6dGFnXSlcbiAgICAgICAgKHdoZW4tbGV0XG4gICAgICAgICBbY29uc3QtZXhwciAoOmNvbnN0LWV4cHIgaW5mbyldXG4gICAgICAgICB7OmNvbnN0LWV4cHIgY29uc3QtZXhwcn0pKVxuICAgICAgIChsZXRcbiAgICAgICAgW2luZm8gKHJlc29sdmUtdmFyIGVudiBzeW0pXVxuICAgICAgICAobWVyZ2VcbiAgICAgICAgIChhc3NvYyByZXQgOm9wIDp2YXIgOmluZm8gaW5mbylcbiAgICAgICAgIChzZWxlY3Qta2V5cyBpbmZvIFs6b3AgOm5hbWUgOm5zIDp0YWddKSkpKSkpKSkpKVxuIn0gezpzeW0gY29uZmlybS12YXItZXhpc3RzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW2VudiBwcmVmaXggc3VmZml4XSBbZW52IHByZWZpeCBzdWZmaXggbWlzc2luZy1mbl1dfSwgOnNvdXJjZSAiKGRlZm5cbiBjb25maXJtLXZhci1leGlzdHNcbiAoW2VudiBwcmVmaXggc3VmZml4XVxuICAobGV0XG4gICBbd2FybiAoY29uZmlybS12YXItZXhpc3Qtd2FybmluZyBlbnYgcHJlZml4IHN1ZmZpeCldXG4gICAoY29uZmlybS12YXItZXhpc3RzIGVudiBwcmVmaXggc3VmZml4IHdhcm4pKSlcbiAoW2VudiBwcmVmaXggc3VmZml4IG1pc3NpbmctZm5dXG4gIChsZXRcbiAgIFtzdWZzdHJcbiAgICAoc3RyIHN1ZmZpeClcbiAgICBzdWZmaXgtc3RyXG4gICAgKGlmXG4gICAgIChhbmRcbiAgICAgICM/KDpjbGogKG5vdD0gXCIuLlwiIHN1ZnN0cikgOmNsanMgKG5vdCAoaWRlbnRpY2FsPyBcIi4uXCIgc3Vmc3RyKSkpXG4gICAgICAjPyg6Y2xqIChyZS1maW5kICNcIlxcLlwiIHN1ZnN0cikgOmNsanMgKC50ZXN0ICNcIlxcLlwiIHN1ZnN0cikpKVxuICAgICAoZmlyc3QgKHN0cmluZy9zcGxpdCBzdWZzdHIgI1wiXFwuXCIpKVxuICAgICBzdWZmaXgpXG4gICAgc3VmZml4XG4gICAgKHN5bWJvbCBzdWZmaXgtc3RyKV1cbiAgICh3aGVuXG4gICAgKGFuZFxuICAgICAobm90IChpbXBsaWNpdC1pbXBvcnQ/IGVudiBwcmVmaXggc3VmZml4KSlcbiAgICAgKG5vdCAobG9hZGVkLWpzLW5zPyBlbnYgcHJlZml4KSlcbiAgICAgKG5vdCAoYW5kICg9ICdjbGpzLmNvcmUgcHJlZml4KSAoPSAndW5xdW90ZSBzdWZmaXgpKSlcbiAgICAgKG5pbD9cbiAgICAgIChnZXRzXG4gICAgICAgQGVudi8qY29tcGlsZXIqXG4gICAgICAgOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlc1xuICAgICAgIHByZWZpeFxuICAgICAgIDpkZWZzXG4gICAgICAgc3VmZml4KSlcbiAgICAgKG5vdCAoanMtbW9kdWxlLWV4aXN0cz8gcHJlZml4KSkpXG4gICAgKG1pc3NpbmctZm4gZW52IHByZWZpeCBzdWZmaXgpKSkpKVxuIn0gezpzeW0gYW5hbHl6ZS1rZXl3b3JkLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBzeW1dKX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHl6ZS1rZXl3b3JkXG4gW2VudiBzeW1dXG4gKHJlZ2lzdGVyLWNvbnN0YW50ISBlbnYgc3ltKVxuIHs6b3AgOmNvbnN0LCA6dmFsIHN5bSwgOmVudiBlbnYsIDpmb3JtIHN5bSwgOnRhZyAnY2xqcy5jb3JlL0tleXdvcmR9KVxuIn0gezpzeW0gYW5hbHl6ZS1sZXQtYmluZGluZ3MsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW5jbC1lbnYgYmluZGluZ3Mgb3BdKX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHl6ZS1sZXQtYmluZGluZ3NcbiBbZW5jbC1lbnYgYmluZGluZ3Mgb3BdXG4gKGRpc2FsbG93aW5nLXJlY3VyIChhbmFseXplLWxldC1iaW5kaW5ncyogZW5jbC1lbnYgYmluZGluZ3Mgb3ApKSlcbiJ9IHs6c3ltIG11bmdlLWdsb2JhbC1leHBvcnQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbmFtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtdW5nZS1nbG9iYWwtZXhwb3J0XG4gW25hbWVdXG4gKHN0clxuICBcImdsb2JhbCRtb2R1bGUkXCJcbiAgKG11bmdlXG4gICAoc3RyaW5nL3JlcGxhY2UgKHN0ciBuYW1lKSAjXCJbLlxcL11cIiAjPyg6Y2xqIFwiXFxcXCRcIiA6Y2xqcyBcIiQkXCIpKSkpKVxuIn0gezpzeW0gKmxvb3AtbGV0cyosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpsb29wLWxldHMqICgpKVxuIn0gezpzeW0gLT50eXBlLXNldCwgOm1ldGEgezpkb2MgIkVuc3VyZXMgdGhhdCBhIHR5cGUgdGFnIGlzIGEgc2V0LiIsIDphcmdsaXN0cyAoW3RdKX0sIDpzb3VyY2UgIihkZWZuXG4gLT50eXBlLXNldFxuIFwiRW5zdXJlcyB0aGF0IGEgdHlwZSB0YWcgaXMgYSBzZXQuXCJcbiBbdF1cbiAoaWYgIz8oOmNsaiAoc2V0PyB0KSA6Y2xqcyAoaW1wbC9jbGpzLXNldD8gdCkpIHQgI3t0fSkpXG4ifSB7OnN5bSBqcy10YWcsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbcHJlXSBbcHJlIHRhZy10eXBlXSBbcHJlIHRhZy10eXBlIGV4dGVybnNdIFtwcmUgdGFnLXR5cGUgZXh0ZXJucyB0b3BdXX0sIDpzb3VyY2UgIihkZWZuXG4ganMtdGFnXG4gKFtwcmVdIChqcy10YWcgcHJlIDp0YWcpKVxuIChbcHJlIHRhZy10eXBlXSAoanMtdGFnIHByZSB0YWctdHlwZSAoZ2V0LWV4dGVybnMpKSlcbiAoW3ByZSB0YWctdHlwZSBleHRlcm5zXSAoanMtdGFnIHByZSB0YWctdHlwZSBleHRlcm5zIGV4dGVybnMpKVxuIChbcHJlIHRhZy10eXBlIGV4dGVybnMgdG9wXVxuICAod2hlbi1sZXRcbiAgIFtbcCBleHRlcm5zJyA6YXMgbWVdIChmaW5kIGV4dGVybnMgKGZpcnN0IHByZSkpXVxuICAgKGxldFxuICAgIFt0YWcgKC0+IHAgbWV0YSB0YWctdHlwZSldXG4gICAgKGlmXG4gICAgICg9IChjb3VudCBwcmUpIDEpXG4gICAgICh3aGVuIHRhZyAoc3ltYm9sIFwianNcIiAoc3RyIChhbGlhcy0+dHlwZSB0YWcgdGFnKSkpKVxuICAgICAob3JcbiAgICAgIChqcy10YWcgKG5leHQgcHJlKSB0YWctdHlwZSBleHRlcm5zJyB0b3ApXG4gICAgICAoanMtdGFnXG4gICAgICAgKGludG8gJ1twcm90b3R5cGVdIChuZXh0IHByZSkpXG4gICAgICAgdGFnLXR5cGVcbiAgICAgICAoZ2V0IHRvcCB0YWcpXG4gICAgICAgdG9wKSkpKSkpKVxuIn0gezpzeW0ganMtcmVzZXJ2ZWQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4ganMtcmVzZXJ2ZWRcbiAje1widHlwZW9mXCJcbiAgIFwiZmxvYXRcIlxuICAgXCJpbXBsZW1lbnRzXCJcbiAgIFwiZWxzZVwiXG4gICBcImJvb2xlYW5cIlxuICAgXCJhYnN0cmFjdFwiXG4gICBcImludFwiXG4gICBcInN0YXRpY1wiXG4gICBcInBhY2thZ2VcIlxuICAgXCJ0aGlzXCJcbiAgIFwiYXdhaXRcIlxuICAgXCJ5aWVsZFwiXG4gICBcImludGVyZmFjZVwiXG4gICBcInZvaWRcIlxuICAgXCJkZWxldGVcIlxuICAgXCJjbGFzc1wiXG4gICBcImV4cG9ydFwiXG4gICBcInZhclwiXG4gICBcInRyeVwiXG4gICBcImxvbmdcIlxuICAgXCJudWxsXCJcbiAgIFwicmV0dXJuXCJcbiAgIFwibWV0aG9kc1wiXG4gICBcIm5hdGl2ZVwiXG4gICBcInByaXZhdGVcIlxuICAgXCJuZXdcIlxuICAgXCJmb3JcIlxuICAgXCJjYXRjaFwiXG4gICBcImV4dGVuZHNcIlxuICAgXCJzaG9ydFwiXG4gICBcInByb3RlY3RlZFwiXG4gICBcInRocm93c1wiXG4gICBcInN5bmNocm9uaXplZFwiXG4gICBcInRyYW5zaWVudFwiXG4gICBcInN1cGVyXCJcbiAgIFwiaWZcIlxuICAgXCJsZXRcIlxuICAgXCJpbXBvcnRcIlxuICAgXCJjaGFyXCJcbiAgIFwic3dpdGNoXCJcbiAgIFwiY29uc3RcIlxuICAgXCJjYXNlXCJcbiAgIFwiYnJlYWtcIlxuICAgXCJ2b2xhdGlsZVwiXG4gICBcImZ1bmN0aW9uXCJcbiAgIFwiY29udGludWVcIlxuICAgXCJmaW5hbFwiXG4gICBcImRvXCJcbiAgIFwiZG91YmxlXCJcbiAgIFwid2hpbGVcIlxuICAgXCJwdWJsaWNcIlxuICAgXCJhcmd1bWVudHNcIlxuICAgXCJkZWJ1Z2dlclwiXG4gICBcIndpdGhcIlxuICAgXCJpbnN0YW5jZW9mXCJcbiAgIFwiZGVmYXVsdFwiXG4gICBcInRocm93XCJcbiAgIFwiZ290b1wiXG4gICBcImZpbmFsbHlcIlxuICAgXCJieXRlXCJcbiAgIFwiY29uc3RydWN0b3JcIlxuICAgXCJpblwiXG4gICBcImVudW1cIn0pXG4ifSB7OnN5bSAqbG9hZC10ZXN0cyosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpsb2FkLXRlc3RzKiB0cnVlKVxuIn0gezpzeW0gY2hlY2stdXNlLW1hY3Jvcy1pbmZlcnJpbmctbWlzc2luZywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt7OmtleXMgW25hbWUgdXNlcyB1c2UtbWFjcm9zXSwgOmFzIGFzdH0gZW52XSl9LCA6c291cmNlICIoZGVmblxuIGNoZWNrLXVzZS1tYWNyb3MtaW5mZXJyaW5nLW1pc3NpbmdcbiBbezprZXlzIFtuYW1lIHVzZXMgdXNlLW1hY3Jvc10sIDphcyBhc3R9IGVudl1cbiAobGV0XG4gIFttaXNzaW5nLXVzZXNcbiAgICh3aGVuIChhbmQgKmFuYWx5emUtZGVwcyogKHNlcSB1c2VzKSkgKG1pc3NpbmctdXNlcyB1c2VzIGVudikpXG4gICBtYXliZS1tYWNyb3NcbiAgIChhcHBseSBkaXNzb2MgdXNlcyAoa2V5cyBtaXNzaW5nLXVzZXMpKVxuICAgcmVtb3ZlLW1pc3NpbmctdXNlc1xuICAgKGZuKiBbcDFfXzQ1MDkwI10gKGFwcGx5IGRpc3NvYyBwMV9fNDUwOTAjIChrZXlzIG1pc3NpbmctdXNlcykpKVxuICAgYXN0J1xuICAgKC0+XG4gICAgYXN0XG4gICAgKHVwZGF0ZS1pblxuICAgICBbOnVzZS1tYWNyb3NdXG4gICAgIChmbipcbiAgICAgIFtwMV9fNDUwOTEjXVxuICAgICAgKC0+XG4gICAgICAgcDFfXzQ1MDkxI1xuICAgICAgIChtZXJnZSAoY2hlY2stdXNlLW1hY3JvcyB1c2UtbWFjcm9zIG1pc3NpbmctdXNlcyBlbnYpKVxuICAgICAgIChtZXJnZSAoaW5mZXJyZWQtdXNlLW1hY3JvcyBtYXliZS1tYWNyb3MgZW52KSkpKSlcbiAgICAodXBkYXRlLWluIFs6dXNlc10gcmVtb3ZlLW1pc3NpbmctdXNlcykpXVxuICAoc3dhcCFcbiAgIGVudi8qY29tcGlsZXIqXG4gICAoZm4qXG4gICAgW3AxX180NTA5MiNdXG4gICAgKC0+XG4gICAgIHAxX180NTA5MiNcbiAgICAgKHVwZGF0ZS1pblxuICAgICAgWzpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXMgbmFtZSA6dXNlLW1hY3Jvc11cbiAgICAgIG1lcmdlXG4gICAgICAoOnVzZS1tYWNyb3MgYXN0JykpXG4gICAgICh1cGRhdGUtaW5cbiAgICAgIFs6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzIG5hbWUgOnVzZXNdXG4gICAgICByZW1vdmUtbWlzc2luZy11c2VzKSkpKVxuICBhc3QnKSlcbiJ9IHs6c3ltIGNhbm9uaWNhbGl6ZS10eXBlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RdKX0sIDpzb3VyY2UgIihkZWZuXG4gY2Fub25pY2FsaXplLXR5cGVcbiBbdF1cbiBcIkVuc3VyZXMgdGhhdCBhIHR5cGUgdGFnIGlzIGVpdGhlciBuaWwsIGEgdHlwZSBzeW1ib2wsIG9yIGEgbm9uLXNpbmdsZXRvblxcbiAgc2V0IG9mIHR5cGUgc3ltYm9scywgYWJzb3JiaW5nIGNsai1uaWwgaW50byBzZXEgYW5kIGFsbCB0eXBlcyBpbnRvIGFueS5cIlxuIChjb25kXG4gIChzeW1ib2w/IHQpXG4gIHRcbiAgKGVtcHR5PyB0KVxuICBuaWxcbiAgKD09IDEgKGNvdW50IHQpKVxuICAoZmlyc3QgdClcbiAgKGNvbnRhaW5zPyB0ICdhbnkpXG4gICdhbnlcbiAgKGNvbnRhaW5zPyB0ICdzZXEpXG4gIChsZXQgW3JlcyAoZGlzaiB0ICdjbGotbmlsKV0gKGlmICg9PSAxIChjb3VudCByZXMpKSAnc2VxIHJlcykpXG4gIDplbHNlXG4gIHQpKVxuIn0gezpzeW0gbWFjcm9leHBhbmQtMSosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IGZvcm1dKX0sIDpzb3VyY2UgIihkZWZuXG4gbWFjcm9leHBhbmQtMSpcbiBbZW52IGZvcm1dXG4gKGxldFxuICBbb3AgKGZpcnN0IGZvcm0pXVxuICAoaWZcbiAgIChjb250YWlucz8gc3BlY2lhbHMgb3ApXG4gICAoZG9cbiAgICAod2hlblxuICAgICAoPSAnbnMgb3ApXG4gICAgIChkby1tYWNyb2V4cGFuZC1jaGVja1xuICAgICAgZW52XG4gICAgICBmb3JtXG4gICAgICAoZ2V0LWV4cGFuZGVyICdjbGpzLmNvcmUvbnMtc3BlY2lhbC1mb3JtIGVudikpKVxuICAgIGZvcm0pXG4gICAoaWYtc29tZVxuICAgIFttYWMtdmFyICh3aGVuIChzeW1ib2w/IG9wKSAoZ2V0LWV4cGFuZGVyIG9wIGVudikpXVxuICAgICgjP0AoOmNsaiBbYmluZGluZyBbKm5zKiAoY3JlYXRlLW5zICpjbGpzLW5zKildXSA6Y2xqcyBbZG9dKVxuICAgICAoZG8tbWFjcm9leHBhbmQtY2hlY2sgZW52IGZvcm0gbWFjLXZhcilcbiAgICAgKGxldFxuICAgICAgW2Zvcm0nXG4gICAgICAgKHRyeVxuICAgICAgICAjPyg6Y2xqcyAoY2hlY2stbWFjcm8tYXJpdHkgbWFjLXZhciBmb3JtKSlcbiAgICAgICAgKGFwcGx5IEBtYWMtdmFyIGZvcm0gZW52IChyZXN0IGZvcm0pKVxuICAgICAgICAjPyg6Y2xqIChjYXRjaCBBcml0eUV4Y2VwdGlvbiBlICh0aHJvdyAoQXJpdHlFeGNlcHRpb24uICgtICguYWN0dWFsIGUpIDIpICgubmFtZSBlKSkpKSlcbiAgICAgICAgKGNhdGNoXG4gICAgICAgICAjPyg6Y2xqIFRocm93YWJsZSA6Y2xqcyA6ZGVmYXVsdClcbiAgICAgICAgIGVcbiAgICAgICAgICh0aHJvd1xuICAgICAgICAgIChleC1pbmZvXG4gICAgICAgICAgIG5pbFxuICAgICAgICAgICAoZXJyb3ItZGF0YSBlbnYgOm1hY3JvZXhwYW5zaW9uICh2YXItPnN5bSBtYWMtdmFyKSlcbiAgICAgICAgICAgZSkpKSldXG4gICAgICAoaWZcbiAgICAgICAjPyg6Y2xqIChzZXE/IGZvcm0nKSA6Y2xqcyAoaW1wbC9jbGpzLXNlcT8gZm9ybScpKVxuICAgICAgIChsZXRcbiAgICAgICAgW3N5bScgKGZpcnN0IGZvcm0nKSBzeW0gKGZpcnN0IGZvcm0pXVxuICAgICAgICAoaWZcbiAgICAgICAgICM/KDpjbGogKD0gc3ltJyAocXVvdGUganMqKSkgOmNsanMgKHN5bWJvbC1pZGVudGljYWw/IHN5bScgaW1wbC9KU19TVEFSX1NZTSkpXG4gICAgICAgICAobGV0XG4gICAgICAgICAgW3N5bVxuICAgICAgICAgICAoaWZcbiAgICAgICAgICAgIChzb21lPyAobmFtZXNwYWNlIHN5bSkpXG4gICAgICAgICAgICBzeW1cbiAgICAgICAgICAgIChzeW1ib2wgXCJjbGpzLmNvcmVcIiAoc3RyIHN5bSkpKVxuICAgICAgICAgICBqcy1vcFxuICAgICAgICAgICB7OmpzLW9wIHN5bX1cbiAgICAgICAgICAgbnVtZXJpY1xuICAgICAgICAgICAjPyg6Y2xqICgtPiBtYWMtdmFyIG1ldGEgOmNsanMuYW5hbHl6ZXIvbnVtZXJpYykgOmNsanMgKGxldCBbbWFjLXZhci1ucyAoc3ltYm9sIChuYW1lc3BhY2UgKC4tc3ltIG1hYy12YXIpKSkgbWFjLXZhci1uYW1lIChzeW1ib2wgKG5hbWUgKC4tc3ltIG1hYy12YXIpKSldIChnZXQtaW4gKGNsb2p1cmUuY29yZS9kZXJlZiBlbnYvKmNvbXBpbGVyKikgWzpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXMgbWFjLXZhci1ucyA6ZGVmcyBtYWMtdmFyLW5hbWUgOm1ldGEgOmNsanMuYW5hbHl6ZXIvbnVtZXJpY10pKSlcbiAgICAgICAgICAganMtb3BcbiAgICAgICAgICAgKGlmICh0cnVlPyBudW1lcmljKSAoYXNzb2MganMtb3AgOm51bWVyaWMgdHJ1ZSkganMtb3ApXVxuICAgICAgICAgICh2YXJ5LW1ldGEgZm9ybScgbWVyZ2UganMtb3ApKVxuICAgICAgICAgZm9ybScpKVxuICAgICAgIGZvcm0nKSkpXG4gICAgKGlmXG4gICAgIChzeW1ib2w/IG9wKVxuICAgICAobGV0XG4gICAgICBbb3BuYW1lIChzdHIgb3ApXVxuICAgICAgKGNvbmRcbiAgICAgICAoaWRlbnRpY2FsPyBcXC4gIz8oOmNsaiAoZmlyc3Qgb3BuYW1lKSA6Y2xqcyAoLmNoYXJBdCBvcG5hbWUgMCkpKVxuICAgICAgIChsZXRcbiAgICAgICAgW1t0YXJnZXQgJiBhcmdzXSAobmV4dCBmb3JtKV1cbiAgICAgICAgKHdpdGgtbWV0YVxuICAgICAgICAgKGxpc3QqXG4gICAgICAgICAgIz8oOmNsaiAocXVvdGUgLikgOmNsanMgaW1wbC9ET1RfU1lNKVxuICAgICAgICAgIHRhcmdldFxuICAgICAgICAgIChzeW1ib2wgKHN1YnMgb3BuYW1lIDEpKVxuICAgICAgICAgIGFyZ3MpXG4gICAgICAgICAobWV0YSBmb3JtKSkpXG4gICAgICAgKGlkZW50aWNhbD9cbiAgICAgICAgXFwuXG4gICAgICAgICM/KDpjbGogKGxhc3Qgb3BuYW1lKSA6Y2xqcyAoLmNoYXJBdCBvcG5hbWUgKGRlYyAoLiBvcG5hbWUgLWxlbmd0aCkpKSkpXG4gICAgICAgKHdpdGgtbWV0YVxuICAgICAgICAobGlzdCpcbiAgICAgICAgICM/KDpjbGogKHF1b3RlIG5ldykgOmNsanMgaW1wbC9ORVdfU1lNKVxuICAgICAgICAgKHN5bWJvbCAoc3VicyBvcG5hbWUgMCAoZGVjIChjb3VudCBvcG5hbWUpKSkpXG4gICAgICAgICAobmV4dCBmb3JtKSlcbiAgICAgICAgKG1ldGEgZm9ybSkpXG4gICAgICAgOmVsc2VcbiAgICAgICBmb3JtKSlcbiAgICAgZm9ybSkpKSkpXG4ifSB7OnN5bSBjaGVjay11c2UtbWFjcm9zLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW3VzZS1tYWNyb3MgZW52XSBbdXNlLW1hY3JvcyBtaXNzaW5nLXVzZXMgZW52XV19LCA6c291cmNlICIoZGVmblxuIGNoZWNrLXVzZS1tYWNyb3NcbiAoW3VzZS1tYWNyb3MgZW52XSAoY2hlY2stdXNlLW1hY3JvcyB1c2UtbWFjcm9zIG5pbCBlbnYpKVxuIChbdXNlLW1hY3JvcyBtaXNzaW5nLXVzZXMgZW52XVxuICAobGV0XG4gICBbY2VudiBAZW52Lypjb21waWxlcipdXG4gICAoZG9zZXFcbiAgICBbW3N5bSBsaWJdIHVzZS1tYWNyb3NdXG4gICAgKHdoZW5cbiAgICAgKG1pc3NpbmctdXNlLW1hY3JvPyBsaWIgc3ltKVxuICAgICAodGhyb3dcbiAgICAgIChlcnJvclxuICAgICAgIGVudlxuICAgICAgIChlcnJvci1tZXNzYWdlXG4gICAgICAgIDp1bmRlY2xhcmVkLW5zLWZvcm1cbiAgICAgICAgezp0eXBlIFwibWFjcm9cIiwgOmxpYiBsaWIsIDpzeW0gc3ltfSkpKSkpXG4gICAoY2hlY2stdXNlcyAobWlzc2luZy11c2UtbWFjcm9zIG1pc3NpbmctdXNlcyBlbnYpIGVudilcbiAgIChpbmZlcnJlZC11c2UtbWFjcm9zIG1pc3NpbmctdXNlcyBlbnYpKSkpXG4ifSB7OnN5bSBnZXQtZXhwYW5kZXIsIDptZXRhIHs6ZG9jICJHaXZlbiBhIHN5bSwgYSBzeW1ib2wgaWRlbnRpZnlpbmcgYSBtYWNybywgYW5kIGVudiwgYW4gYW5hbHlzaXMgZW52aXJvbm1lbnRcbiAgIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyBDbG9qdXJlIG1hY3JvZXhwYW5kZXIuIiwgOmFyZ2xpc3RzIChbc3ltIGVudl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtZXhwYW5kZXJcbiBcIkdpdmVuIGEgc3ltLCBhIHN5bWJvbCBpZGVudGlmeWluZyBhIG1hY3JvLCBhbmQgZW52LCBhbiBhbmFseXNpcyBlbnZpcm9ubWVudFxcbiAgIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyBDbG9qdXJlIG1hY3JvZXhwYW5kZXIuXCJcbiBbc3ltIGVudl1cbiAobGV0XG4gIFttdmFyIChnZXQtZXhwYW5kZXIqIHN5bSBlbnYpXVxuICAod2hlblxuICAgKGFuZCAoc29tZT8gbXZhcikgIz8oOmNsaiAoLmlzTWFjcm8gbXZhcikgOmNsanMgKC5pc01hY3JvIG12YXIpKSlcbiAgIG12YXIpKSlcbiJ9IHs6c3ltIGFuYWx5emUtanMtc3RhciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYganNmb3JtIGFyZ3MgZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLWpzLXN0YXJcbiBbZW52IGpzZm9ybSBhcmdzIGZvcm1dXG4gKGRpc2FsbG93aW5nLXJlY3VyIChhbmFseXplLWpzLXN0YXIqIGVudiBqc2Zvcm0gYXJncyBmb3JtKSkpXG4ifSB7OnN5bSBqcy1zdGFyLWludGVycCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBqcy1zdGFyLWludGVycFxuIFtlbnYgc11cbiAobGV0XG4gIFtpZHggKC5pbmRleE9mIHMgXCJ+e1wiKV1cbiAgKGlmXG4gICAoPT0gLTEgaWR4KVxuICAgKGxpc3QgcylcbiAgIChsZXRcbiAgICBbZW5kXG4gICAgICguaW5kZXhPZiBzIFwifVwiIGlkeClcbiAgICAgaW5uZXJcbiAgICAgKDpuYW1lXG4gICAgICAocmVzb2x2ZS1leGlzdGluZy12YXIgZW52IChzeW1ib2wgKHN1YnMgcyAoKyAyIGlkeCkgZW5kKSkpKV1cbiAgICAobGF6eS1zZXFcbiAgICAgKGNvbnNcbiAgICAgIChzdWJzIHMgMCBpZHgpXG4gICAgICAoY29ucyBpbm5lciAoanMtc3Rhci1pbnRlcnAgZW52IChzdWJzIHMgKGluYyBlbmQpKSkpKSkpKSkpXG4ifSB7OnN5bSAqcmVjdXItZnJhbWVzKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKnJlY3VyLWZyYW1lcyogbmlsKVxuIn0gezpzeW0gYW5hbHl6ZS1mbi1tZXRob2RzLXBhc3MyKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttZW52IGxvY2FscyB0eXBlIG1ldGhzXSl9LCA6c291cmNlICIoZGVmblxuIGFuYWx5emUtZm4tbWV0aG9kcy1wYXNzMipcbiBbbWVudiBsb2NhbHMgdHlwZSBtZXRoc11cbiAobWFwdlxuICAoZm4qXG4gICBbcDFfXzQ1MDgzI11cbiAgIChhbmFseXplLWZuLW1ldGhvZCBtZW52IGxvY2FscyBwMV9fNDUwODMjIHR5cGUgdHJ1ZSkpXG4gIG1ldGhzKSlcbiJ9IHs6c3ltIG1hY3JvZXhwYW5kLTEsIDptZXRhIHs6ZG9jICJHaXZlbiBhIGVudiwgYW4gYW5hbHlzaXMgZW52aXJvbm1lbnQsIGFuZCBmb3JtLCBhIENsb2p1cmVTY3JpcHQgZm9ybSxcbiAgIG1hY3JvZXhwYW5kIHRoZSBmb3JtIG9uY2UuIiwgOmFyZ2xpc3RzIChbZW52IGZvcm1dKX0sIDpzb3VyY2UgIihkZWZuXG4gbWFjcm9leHBhbmQtMVxuIFwiR2l2ZW4gYSBlbnYsIGFuIGFuYWx5c2lzIGVudmlyb25tZW50LCBhbmQgZm9ybSwgYSBDbG9qdXJlU2NyaXB0IGZvcm0sXFxuICAgbWFjcm9leHBhbmQgdGhlIGZvcm0gb25jZS5cIlxuIFtlbnYgZm9ybV1cbiAod3JhcHBpbmctZXJyb3JzIGVudiAobWFjcm9leHBhbmQtMSogZW52IGZvcm0pKSlcbiJ9IHs6c3ltIHJlc29sdmUtbWFjcm8tdmFyLCA6bWV0YSB7OmRvYyAiR2l2ZW4gZW52LCBhbiBhbmFseXNpcyBlbnZpcm9ubWVudCwgYW5kIHN5bSwgYSBzeW1ib2wsIHJlc29sdmUgYSBtYWNyby4iLCA6YXJnbGlzdHMgKFtlbnYgc3ltXSl9LCA6c291cmNlICIoZGVmblxuIHJlc29sdmUtbWFjcm8tdmFyXG4gXCJHaXZlbiBlbnYsIGFuIGFuYWx5c2lzIGVudmlyb25tZW50LCBhbmQgc3ltLCBhIHN5bWJvbCwgcmVzb2x2ZSBhIG1hY3JvLlwiXG4gW2VudiBzeW1dXG4gKGxldFxuICBbbnNcbiAgICgtPiBlbnYgOm5zIDpuYW1lKVxuICAgbmFtZXNwYWNlc1xuICAgKGdldCBAZW52Lypjb21waWxlciogOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyldXG4gIChjb25kXG4gICAoc29tZT8gKG5hbWVzcGFjZSBzeW0pKVxuICAgKGxldFxuICAgIFtuc1xuICAgICAobmFtZXNwYWNlIHN5bSlcbiAgICAgbnNcbiAgICAgKGlmICg9IFwiY2xvanVyZS5jb3JlXCIgbnMpIFwiY2xqcy5jb3JlXCIgbnMpXG4gICAgIGZ1bGwtbnNcbiAgICAgKHJlc29sdmUtbWFjcm8tbnMtYWxpYXMgZW52IG5zKVxuICAgICAjP0AoOmNsanMgW2Z1bGwtbnMgKGlmLW5vdCAoc3RyaW5nL2VuZHMtd2l0aD8gKHN0ciBmdWxsLW5zKSBcIiRtYWNyb3NcIikgKHN5bWJvbCAoc3RyIGZ1bGwtbnMgXCIkbWFjcm9zXCIpKSBmdWxsLW5zKV0pXVxuICAgICM/KDpjbGogKGdldC1pbiBuYW1lc3BhY2VzIFtmdWxsLW5zIDptYWNyb3MgKHN5bWJvbCAobmFtZSBzeW0pKV0pIDpjbGpzIChnZXQtaW4gbmFtZXNwYWNlcyBbZnVsbC1ucyA6ZGVmcyAoc3ltYm9sIChuYW1lIHN5bSkpXSkpKVxuICAgKHNvbWU/IChnZXQtaW4gbmFtZXNwYWNlcyBbbnMgOnVzZS1tYWNyb3Mgc3ltXSkpXG4gICAobGV0XG4gICAgW2Z1bGwtbnMgKGdldC1pbiBuYW1lc3BhY2VzIFtucyA6dXNlLW1hY3JvcyBzeW1dKV1cbiAgICAoZ2V0LWluIG5hbWVzcGFjZXMgW2Z1bGwtbnMgOm1hY3JvcyBzeW1dKSlcbiAgIChzb21lPyAoZ2V0LWluIG5hbWVzcGFjZXMgW25zIDpyZW5hbWUtbWFjcm9zIHN5bV0pKVxuICAgKGxldFxuICAgIFtxdWFsaWZpZWQtc3ltYm9sXG4gICAgIChnZXQtaW4gbmFtZXNwYWNlcyBbbnMgOnJlbmFtZS1tYWNyb3Mgc3ltXSlcbiAgICAgZnVsbC1uc1xuICAgICAoc3ltYm9sIChuYW1lc3BhY2UgcXVhbGlmaWVkLXN5bWJvbCkpXG4gICAgIHN5bVxuICAgICAoc3ltYm9sIChuYW1lIHF1YWxpZmllZC1zeW1ib2wpKV1cbiAgICAoZ2V0LWluIG5hbWVzcGFjZXMgW2Z1bGwtbnMgOm1hY3JvcyBzeW1dKSlcbiAgIDplbHNlXG4gICAobGV0XG4gICAgW25zXG4gICAgIChjb25kXG4gICAgICAoc29tZT8gKGdldC1pbiBuYW1lc3BhY2VzIFtucyA6bWFjcm9zIHN5bV0pKVxuICAgICAgbnNcbiAgICAgIChjb3JlLW5hbWU/IGVudiBzeW0pXG4gICAgICAjPyg6Y2xqIChxdW90ZSBjbGpzLmNvcmUpIDpjbGpzIGltcGwvQ0xKU19DT1JFX01BQ1JPU19TWU0pKV1cbiAgICAod2hlblxuICAgICAoc29tZT8gbnMpXG4gICAgICM/KDpjbGogKGdldC1pbiBuYW1lc3BhY2VzIFtucyA6bWFjcm9zIHN5bV0pIDpjbGpzIChnZXQtaW4gbmFtZXNwYWNlcyBbbnMgOmRlZnMgc3ltXSkpKSkpKSlcbiJ9IHs6c3ltIGFuYWx5emUtbGV0LWJpbmRpbmctaW5pdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgaW5pdCBsb29wLWxldHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHl6ZS1sZXQtYmluZGluZy1pbml0XG4gW2VudiBpbml0IGxvb3AtbGV0c11cbiAoYmluZGluZyBbKmxvb3AtbGV0cyogbG9vcC1sZXRzXSAoYW5hbHl6ZSBlbnYgaW5pdCkpKVxuIn0gezpzeW0gaW5mZXItdGFnLCA6bWV0YSB7OmRvYyAiR2l2ZW4gZW52LCBhbiBhbmFseXNpcyBlbnZpcm9ubWVudCwgYW5kIGUsIGFuIEFTVCBub2RlLCByZXR1cm4gdGhlIGluZmVycmVkXG4gICB0eXBlIG9mIHRoZSBub2RlIiwgOmFyZ2xpc3RzIChbZW52IGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5mZXItdGFnXG4gXCJHaXZlbiBlbnYsIGFuIGFuYWx5c2lzIGVudmlyb25tZW50LCBhbmQgZSwgYW4gQVNUIG5vZGUsIHJldHVybiB0aGUgaW5mZXJyZWRcXG4gICB0eXBlIG9mIHRoZSBub2RlXCJcbiBbZW52IGVdXG4gKGlmLXNvbWVcbiAgW3RhZyAoZ2V0LXRhZyBlKV1cbiAgdGFnXG4gIChjYXNlXG4gICAoOm9wIGUpXG4gICA6cmVjdXJcbiAgIGltcGwvSUdOT1JFX1NZTVxuICAgOnRocm93XG4gICBpbXBsL0lHTk9SRV9TWU1cbiAgIDpsZXRcbiAgIChpbmZlci10YWcgZW52ICg6Ym9keSBlKSlcbiAgIDpsb29wXG4gICAoaW5mZXItdGFnIGVudiAoOmJvZHkgZSkpXG4gICA6ZG9cbiAgIChpbmZlci10YWcgZW52ICg6cmV0IGUpKVxuICAgOmZuLW1ldGhvZFxuICAgKGluZmVyLXRhZyBlbnYgKDpib2R5IGUpKVxuICAgOmRlZlxuICAgKGluZmVyLXRhZyBlbnYgKDppbml0IGUpKVxuICAgOmludm9rZVxuICAgKGluZmVyLWludm9rZSBlbnYgZSlcbiAgIDppZlxuICAgKGluZmVyLWlmIGVudiBlKVxuICAgOmNvbnN0XG4gICAoY2FzZVxuICAgICg6Zm9ybSBlKVxuICAgIHRydWVcbiAgICBpbXBsL0JPT0xFQU5fU1lNXG4gICAgZmFsc2VcbiAgICBpbXBsL0JPT0xFQU5fU1lNXG4gICAgaW1wbC9BTllfU1lNKVxuICAgOnF1b3RlXG4gICAoaW5mZXItdGFnIGVudiAoOmV4cHIgZSkpXG4gICAoOnZhciA6bG9jYWwgOmpzLXZhciA6YmluZGluZylcbiAgIChpZi1zb21lXG4gICAgW2luaXQgKDppbml0IGUpXVxuICAgIChpbmZlci10YWcgZW52IGluaXQpXG4gICAgKGluZmVyLXRhZyBlbnYgKDppbmZvIGUpKSlcbiAgICg6aG9zdC1maWVsZCA6aG9zdC1jYWxsKVxuICAgaW1wbC9BTllfU1lNXG4gICA6anNcbiAgIGltcGwvQU5ZX1NZTVxuICAgbmlsKSkpXG4ifSB7OnN5bSBjYW5vbmljYWxpemUtaW1wb3J0LXNwZWNzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NwZWNzXSl9LCA6c291cmNlICIoZGVmblxuIGNhbm9uaWNhbGl6ZS1pbXBvcnQtc3BlY3NcbiBbc3BlY3NdXG4gKGxldGZuXG4gIFsoY2Fub25pY2FsaXplXG4gICAgW3F1b3RlZC1zcGVjLW9yLWt3XVxuICAgIChpZlxuICAgICAoa2V5d29yZD8gcXVvdGVkLXNwZWMtb3Ita3cpXG4gICAgIHF1b3RlZC1zcGVjLW9yLWt3XG4gICAgIChzZWNvbmQgcXVvdGVkLXNwZWMtb3Ita3cpKSldXG4gIChtYXAgY2Fub25pY2FsaXplIHNwZWNzKSkpXG4ifSB7OnN5bSBhbmFseXplLWZvcm0tc2VxLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW2Zvcm1zXSBbZm9ybXMgb3B0c10gW2Zvcm1zIG9wdHMgcmV0dXJuLWxhc3Q/XV19LCA6c291cmNlICIoZGVmblxuIGFuYWx5emUtZm9ybS1zZXFcbiAoW2Zvcm1zXVxuICAoYW5hbHl6ZS1mb3JtLXNlcVxuICAgZm9ybXNcbiAgICh3aGVuIGVudi8qY29tcGlsZXIqICg6b3B0aW9ucyBAZW52Lypjb21waWxlciopKSkpXG4gKFtmb3JtcyBvcHRzXSAoYW5hbHl6ZS1mb3JtLXNlcSBmb3JtcyBvcHRzIGZhbHNlKSlcbiAoW2Zvcm1zIG9wdHMgcmV0dXJuLWxhc3Q/XVxuICAobGV0XG4gICBbZW52IChhc3NvYyAoZW1wdHktZW52KSA6YnVpbGQtb3B0aW9ucyBvcHRzKV1cbiAgIChiaW5kaW5nXG4gICAgWypmaWxlLWRlZnMqXG4gICAgIG5pbFxuICAgICAjP0AoOmNsaiBbKnVuY2hlY2tlZC1pZiogZmFsc2UgKnVuY2hlY2tlZC1hcnJheXMqIGZhbHNlXSlcbiAgICAgKmNsanMtbnMqXG4gICAgICdjbGpzLnVzZXJcbiAgICAgKmNsanMtZmlsZSpcbiAgICAgbmlsXG4gICAgIHJlYWRlci8qYWxpYXMtbWFwKlxuICAgICAob3IgcmVhZGVyLyphbGlhcy1tYXAqIHt9KV1cbiAgICAobG9vcFxuICAgICBbbnMgbmlsIGZvcm1zIGZvcm1zIGxhc3QtYXN0IG5pbF1cbiAgICAgKGlmXG4gICAgICAoc29tZT8gZm9ybXMpXG4gICAgICAobGV0XG4gICAgICAgW2Zvcm1cbiAgICAgICAgKGZpcnN0IGZvcm1zKVxuICAgICAgICBlbnZcbiAgICAgICAgKGFzc29jIGVudiA6bnMgKGdldC1uYW1lc3BhY2UgKmNsanMtbnMqKSlcbiAgICAgICAgYXN0XG4gICAgICAgIChhbmFseXplIGVudiBmb3JtIG5pbCBvcHRzKV1cbiAgICAgICAoaWZcbiAgICAgICAgKD0gKDpvcCBhc3QpIDpucylcbiAgICAgICAgKHJlY3VyICg6bmFtZSBhc3QpIChuZXh0IGZvcm1zKSBhc3QpXG4gICAgICAgIChyZWN1ciBucyAobmV4dCBmb3JtcykgYXN0KSkpXG4gICAgICAoaWYgcmV0dXJuLWxhc3Q/IGxhc3QtYXN0IG5zKSkpKSkpKVxuIn0gezpzeW0gYW5hbHl6ZS1sZXQtYm9keSosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IGNvbnRleHQgZXhwcnNdKX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHl6ZS1sZXQtYm9keSpcbiBbZW52IGNvbnRleHQgZXhwcnNdXG4gKGFuYWx5emVcbiAgKGFzc29jIGVudiA6Y29udGV4dCAoaWYgKD0gOmV4cHIgY29udGV4dCkgOnJldHVybiBjb250ZXh0KSlcbiAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxuICAgKGNsb2p1cmUuY29yZS9zZXFcbiAgICAoY2xvanVyZS5jb3JlL2NvbmNhdCAoY2xvanVyZS5jb3JlL2xpc3QgJ2RvKSBleHBycykpKSkpXG4ifSB7OnN5bSBhbmFseXplLWpzLXN0YXIqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBqc2Zvcm0gYXJncyBmb3JtXSl9LCA6c291cmNlICIoZGVmblxuIGFuYWx5emUtanMtc3RhcipcbiBbZW52IGpzZm9ybSBhcmdzIGZvcm1dXG4gKGxldFxuICBbZW52ZVxuICAgKGFzc29jIGVudiA6Y29udGV4dCA6ZXhwcilcbiAgIGZvcm0tbWV0YVxuICAgKG1ldGEgZm9ybSlcbiAgIHNlZ3NcbiAgIChqcy1zdGFyLXNlZyBqc2Zvcm0pXG4gICB0YWdcbiAgIChnZXQtanMtdGFnIGZvcm0pXG4gICBqcy1vcFxuICAgKDpqcy1vcCBmb3JtLW1ldGEpXG4gICBhcmdleHByc1xuICAgKGFuYWx5emUtanMtc3Rhci1hcmdzIGpzLW9wIGVudmUgYXJncylcbiAgIG51bWVyaWNcbiAgICg6bnVtZXJpYyBmb3JtLW1ldGEpXG4gICB2YWxpZGF0ZVxuICAgKGZuXG4gICAgW3dhcm5pbmctdHlwZSB2YWxpZC10eXBlcz9dXG4gICAgKGxldFxuICAgICBbdHlwZXNcbiAgICAgIChtYXAgKGZuKiBbcDFfXzQ1MTA4I10gKGluZmVyLXRhZyBlbnYgcDFfXzQ1MTA4IykpIGFyZ2V4cHJzKV1cbiAgICAgKHdoZW4tbm90XG4gICAgICAodmFsaWQtdHlwZXM/IHR5cGVzKVxuICAgICAgKHdhcm5pbmdcbiAgICAgICB3YXJuaW5nLXR5cGVcbiAgICAgICBlbnZcbiAgICAgICB7OmpzLW9wIGpzLW9wLCA6dHlwZXMgKGludG8gW10gdHlwZXMpfSkpKSlcbiAgIG9wLW1hdGNoP1xuICAgKGZuXG4gICAgW3N5bV1cbiAgICAjPyg6Y2xqICg9IHN5bSAoOmpzLW9wIGZvcm0tbWV0YSkpIDpjbGpzIChzeW1ib2wtaWRlbnRpY2FsPyBzeW0gKDpqcy1vcCBmb3JtLW1ldGEpKSkpXVxuICAod2hlblxuICAgKHRydWU/IG51bWVyaWMpXG4gICAodmFsaWRhdGVcbiAgICA6aW52YWxpZC1hcml0aG1ldGljXG4gICAgKGZuKiBbcDFfXzQ1MTA5I10gKGV2ZXJ5PyBudW1lcmljLXR5cGU/IHAxX180NTEwOSMpKSkpXG4gIHs6YXJncyBhcmdleHBycyxcbiAgIDpjaGlsZHJlbiBbOmFyZ3NdLFxuICAgOm51bWVyaWMgbnVtZXJpYyxcbiAgIDpzZWdzIHNlZ3MsXG4gICA6b3AgOmpzLFxuICAgOmVudiBlbnYsXG4gICA6anMtb3AganMtb3AsXG4gICA6Zm9ybSBmb3JtLFxuICAgOnRhZyB0YWd9KSlcbiJ9IHs6c3ltIGluZmVycmVkLXJlbmFtZS1tYWNyb3MsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmVuYW1lLW1hY3JvcyBlbnZdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5mZXJyZWQtcmVuYW1lLW1hY3Jvc1xuIFtyZW5hbWUtbWFjcm9zIGVudl1cbiAoaW50b1xuICB7fVxuICAoZmlsdGVyXG4gICAoZm4gW1tfIHF1YWxpZmllZC1zeW1dXSAobm90IChtaXNzaW5nLXJlbmFtZS1tYWNybz8gcXVhbGlmaWVkLXN5bSkpKVxuICAgcmVuYW1lLW1hY3JvcykpKVxuIn0gezpzeW0gcGFyc2UtbnMtZXJyb3ItbXNnLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NwZWMgbXNnXSl9LCA6c291cmNlICIoZGVmblxuIHBhcnNlLW5zLWVycm9yLW1zZ1xuIFtzcGVjIG1zZ11cbiAoc3RyIG1zZyBcIjsgb2ZmZW5kaW5nIHNwZWM6IFwiIChwci1zdHIgc3BlYykpKVxuIn0gezpzeW0gbWlzc2luZy11c2UtbWFjcm8/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2xpYiBzeW1dKX0sIDpzb3VyY2UgIihkZWZuXG4gbWlzc2luZy11c2UtbWFjcm8/XG4gW2xpYiBzeW1dXG4gKHdoZW5cbiAgKHN5bWJvbD8gbGliKVxuICAobGV0XG4gICBbdGhlLW5zICM/KDpjbGogKGZpbmQtbnMgbGliKSA6Y2xqcyAoZmluZC1tYWNyb3MtbnMgbGliKSldXG4gICAob3IgKG5pbD8gdGhlLW5zKSAobmlsPyAoLmZpbmRJbnRlcm5lZFZhciB0aGUtbnMgc3ltKSkpKSkpXG4ifSB7OnN5bSByZWNvcmQtbnMrbmFtZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHJlY29yZC1ucytuYW1lXG4gW3hdXG4gKG1hcFxuICBzeW1ib2xcbiAgIz8oOmNsaiAoKGp1eHQgKGNvbXAgKGZuKiBbcDFfXzQ1MTIwI10gKHN0cmluZy9qb2luIFwiLlwiIHAxX180NTEyMCMpKSBidXRsYXN0KSBsYXN0KSAoc3RyaW5nL3NwbGl0ICguZ2V0TmFtZSAodHlwZSB4KSkgI1wiXFwuXCIpKSA6Y2xqcyAoc3RyaW5nL3NwbGl0IChwci1zdHIgKHR5cGUgeCkpICNcIi9cIikpKSlcbiJ9IHs6c3ltIGFuYWx5emVkLCA6bWV0YSB7OmRvYyAiTWFyayBhIGZvcm0gYXMgYmVpbmcgYW5hbHl6ZWQuIEFzc3VtZXMgeCBzYXRpc2ZpZXMgSU1ldGEuIFVzZWZ1bCB0byBzdXBwcmVzc1xuICB3YXJuaW5ncyB0aGF0IHdpbGwgaGF2ZSBiZWVuIGNhdWdodCBieSBhIGZpcnN0IGNvbXBpbGVyIHBhc3MuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplZFxuIFwiTWFyayBhIGZvcm0gYXMgYmVpbmcgYW5hbHl6ZWQuIEFzc3VtZXMgeCBzYXRpc2ZpZXMgSU1ldGEuIFVzZWZ1bCB0byBzdXBwcmVzc1xcbiAgd2FybmluZ3MgdGhhdCB3aWxsIGhhdmUgYmVlbiBjYXVnaHQgYnkgYSBmaXJzdCBjb21waWxlciBwYXNzLlwiXG4gW3hdXG4gKGNvbmRcbiAgKHVuc29ydGVkLW1hcD8geClcbiAgKGFzc29jIHggOmNsanMuYW5hbHl6ZXIvYW5hbHl6ZWQgdHJ1ZSlcbiAgOmVsc2VcbiAgKHZhcnktbWV0YSB4IGFzc29jIDpjbGpzLmFuYWx5emVyL2FuYWx5emVkIHRydWUpKSlcbiJ9IHs6c3ltIHJlc29sdmUtc3ltYm9sLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N5bV0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZXNvbHZlLXN5bWJvbFxuIFtzeW1dXG4gKGlmXG4gIChhbmQgKG5vdCAobmFtZXNwYWNlIHN5bSkpIChkb3R0ZWQtc3ltYm9sPyBzeW0pKVxuICBzeW1cbiAgKDpuYW1lXG4gICAoYmluZGluZ1xuICAgIFsqcHJpdmF0ZS12YXItYWNjZXNzLW5vd2FybiogdHJ1ZV1cbiAgICAocmVzb2x2ZS12YXJcbiAgICAgKGFzc29jIEBlbnYvKmNvbXBpbGVyKiA6bnMgKGdldC1uYW1lc3BhY2UgKmNsanMtbnMqKSlcbiAgICAgc3ltKSkpKSlcbiJ9IHs6c3ltIG1pc3NpbmctcmVuYW1lcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZW5hbWVzIGVudl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtaXNzaW5nLXJlbmFtZXNcbiBbcmVuYW1lcyBlbnZdXG4gKGxldFxuICBbY2VudiBAZW52Lypjb21waWxlcipdXG4gIChpbnRvXG4gICB7fVxuICAgKGZpbHRlclxuICAgIChmbiBbW18gcXVhbGlmaWVkLXN5bV1dIChtaXNzaW5nLXJlbmFtZT8gcXVhbGlmaWVkLXN5bSBjZW52KSlcbiAgICByZW5hbWVzKSkpKVxuIn0gezpzeW0gZGVmYXVsdC1wYXNzZXMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gZGVmYXVsdC1wYXNzZXNcbiAjPyg6Y2xqIFtpbmZlci10eXBlIGFuZC1vci9vcHRpbWl6ZSBjaGVjay1pbnZva2UtYXJnLXR5cGVzIG5zLXNpZGUtZWZmZWN0c10gOmNsanMgW2luZmVyLXR5cGUgYW5kLW9yL29wdGltaXplIGNoZWNrLWludm9rZS1hcmctdHlwZXNdKSlcbiJ9IHs6c3ltICpjbGpzLW1hY3Jvcy1wYXRoKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmNsanMtbWFjcm9zLXBhdGgqIFwiL2NsanMvY29yZVwiKVxuIn0gezpzeW0gY29uZmlybS12YXItZXhpc3Qtd2FybmluZywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgcHJlZml4IHN1ZmZpeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjb25maXJtLXZhci1leGlzdC13YXJuaW5nXG4gW2VudiBwcmVmaXggc3VmZml4XVxuIChmblxuICBbZW52IHByZWZpeCBzdWZmaXhdXG4gICh3YXJuaW5nXG4gICA6dW5kZWNsYXJlZC12YXJcbiAgIGVudlxuICAgezpwcmVmaXggcHJlZml4LFxuICAgIDpzdWZmaXggc3VmZml4LFxuICAgIDptYWNyby1wcmVzZW50P1xuICAgIChub3RcbiAgICAgKG5pbD8gKGdldC1leHBhbmRlciAoc3ltYm9sIChzdHIgcHJlZml4KSAoc3RyIHN1ZmZpeCkpIGVudikpKX0pKSlcbiJ9IHs6c3ltIHVuY2hlY2tlZC1hcnJheXM/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm4gdW5jaGVja2VkLWFycmF5cz8gW10gKnVuY2hlY2tlZC1hcnJheXMqKVxuIn0gezpzeW0gYW5hbHl6ZS1kb3QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IHRhcmdldCBmaWVsZCBtZW1iZXIrIGZvcm1dKX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHl6ZS1kb3RcbiBbZW52IHRhcmdldCBmaWVsZCBtZW1iZXIrIGZvcm1dXG4gKGxldFxuICBbdlxuICAgW3RhcmdldCBmaWVsZCBtZW1iZXIrXVxuICAgezprZXlzIFtkb3QtYWN0aW9uIHRhcmdldCBtZXRob2QgZmllbGQgYXJnc119XG4gICAoYnVpbGQtZG90LWZvcm0gdilcbiAgIGVudmVcbiAgIChhc3NvYyBlbnYgOmNvbnRleHQgOmV4cHIpXG4gICB0YXJnZXRleHByXG4gICAoYW5hbHl6ZSBlbnZlIHRhcmdldClcbiAgIGZvcm0tbWV0YVxuICAgKG1ldGEgZm9ybSlcbiAgIHRhcmdldC10YWdcbiAgICg6dGFnIHRhcmdldGV4cHIpXG4gICBwcm9wXG4gICAob3IgZmllbGQgbWV0aG9kKVxuICAgdGFnXG4gICAob3JcbiAgICAoOnRhZyBmb3JtLW1ldGEpXG4gICAgKGFuZFxuICAgICAoanMtdGFnPyB0YXJnZXQtdGFnKVxuICAgICAodmFyeS1tZXRhXG4gICAgICAobm9ybWFsaXplLWpzLXRhZyB0YXJnZXQtdGFnKVxuICAgICAgdXBkYXRlLWluXG4gICAgICBbOnByZWZpeF1cbiAgICAgIChmbmlsIGNvbmogJ1tPYmplY3RdKVxuICAgICAgcHJvcCkpXG4gICAgbmlsKV1cbiAgKHdoZW5cbiAgIChhbmRcbiAgICAobm90PSAnY29uc3RydWN0b3IgcHJvcClcbiAgICAobm90IChzdHJpbmcvc3RhcnRzLXdpdGg/IChzdHIgcHJvcCkgXCJjbGpzJFwiKSlcbiAgICAobm90ICgtPiBwcm9wIG1ldGEgOnByb3RvY29sLXByb3ApKSlcbiAgICh3aGVuXG4gICAgKD0gJ09iamVjdCAoZmlyc3QgKC0+IHRhZyBtZXRhIDpwcmVmaXgpKSlcbiAgICAod2FybmluZ1xuICAgICA6aW5mZXItd2FybmluZ1xuICAgICBlbnZcbiAgICAgezp3YXJuLXR5cGUgOm9iamVjdCwgOmZvcm0gZm9ybSwgOnByb3BlcnR5IHByb3B9KSlcbiAgICh3aGVuXG4gICAgKG5vdD0gJ2pzIHRhcmdldC10YWcpXG4gICAgKHdoZW5cbiAgICAgKG9yIChuaWw/IHRhcmdldC10YWcpICgnI3thbnl9IHRhcmdldC10YWcpKVxuICAgICAod2FybmluZ1xuICAgICAgOmluZmVyLXdhcm5pbmdcbiAgICAgIGVudlxuICAgICAgezp3YXJuLXR5cGUgOnRhcmdldCwgOmZvcm0gZm9ybSwgOnByb3BlcnR5IHByb3B9KSlcbiAgICAobGV0XG4gICAgIFtbcHJlJyBwcmVdICgoanV4dCBidXRsYXN0IGlkZW50aXR5KSAoLT4gdGFnIG1ldGEgOnByZWZpeCkpXVxuICAgICAod2hlblxuICAgICAgKGFuZCAoaGFzLWV4dGVybj8gcHJlJykgKG5vdCAoaGFzLWV4dGVybj8gcHJlKSkpXG4gICAgICAod2FybmluZ1xuICAgICAgIDppbmZlci13YXJuaW5nXG4gICAgICAgZW52XG4gICAgICAgezp3YXJuLXR5cGUgOnByb3BlcnR5LFxuICAgICAgICA6Zm9ybSBmb3JtLFxuICAgICAgICA6dHlwZVxuICAgICAgICAoc3ltYm9sXG4gICAgICAgICBcImpzXCJcbiAgICAgICAgIChzdHJpbmcvam9pblxuICAgICAgICAgIFwiLlwiXG4gICAgICAgICAgKGNvbmQtPiBwcmUnICg9ICdwcm90b3R5cGUgKGxhc3QgcHJlJykpIGJ1dGxhc3QpKSksXG4gICAgICAgIDpwcm9wZXJ0eSBwcm9wfSkpKSkpXG4gICh3aGVuXG4gICAoanMtdGFnPyB0YWcpXG4gICAobGV0XG4gICAgW3ByZSAoLT4gdGFnIG1ldGEgOnByZWZpeCldXG4gICAgKHdoZW4tbm90XG4gICAgIChoYXMtZXh0ZXJuPyBwcmUpXG4gICAgIChzd2FwIVxuICAgICAgZW52Lypjb21waWxlcipcbiAgICAgIHVwZGF0ZS1pblxuICAgICAgKGludG9cbiAgICAgICBbOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyAoLT4gZW52IDpucyA6bmFtZSkgOmV4dGVybnNdXG4gICAgICAgcHJlKVxuICAgICAgbWVyZ2VcbiAgICAgIHt9KSkpKVxuICAoY2FzZVxuICAgZG90LWFjdGlvblxuICAgOmNsanMuYW5hbHl6ZXIvYWNjZXNzXG4gICAobGV0XG4gICAgW2NoaWxkcmVuIFs6dGFyZ2V0XV1cbiAgICB7Om9wIDpob3N0LWZpZWxkLFxuICAgICA6ZW52IGVudixcbiAgICAgOmZvcm0gZm9ybSxcbiAgICAgOnRhcmdldCB0YXJnZXRleHByLFxuICAgICA6ZmllbGQgZmllbGQsXG4gICAgIDpjaGlsZHJlbiBjaGlsZHJlbixcbiAgICAgOnRhZ1xuICAgICAoaWZcbiAgICAgIChqcy10YWc/IHRhZylcbiAgICAgIChvciAoanMtdGFnICgtPiB0YWcgbWV0YSA6cHJlZml4KSA6dGFnKSB0YWcpXG4gICAgICB0YWcpfSlcbiAgIDpjbGpzLmFuYWx5emVyL2NhbGxcbiAgIChsZXRcbiAgICBbYXJnZXhwcnNcbiAgICAgKG1hcHYgKGZuKiBbcDFfXzQ1MTA3I10gKGFuYWx5emUgZW52ZSBwMV9fNDUxMDcjKSkgYXJncylcbiAgICAgY2hpbGRyZW5cbiAgICAgWzp0YXJnZXQgOmFyZ3NdXVxuICAgIHs6b3AgOmhvc3QtY2FsbCxcbiAgICAgOmVudiBlbnYsXG4gICAgIDpmb3JtIGZvcm0sXG4gICAgIDp0YXJnZXQgdGFyZ2V0ZXhwcixcbiAgICAgOm1ldGhvZCBtZXRob2QsXG4gICAgIDphcmdzIGFyZ2V4cHJzLFxuICAgICA6Y2hpbGRyZW4gY2hpbGRyZW4sXG4gICAgIDp0YWdcbiAgICAgKGlmXG4gICAgICAoanMtdGFnPyB0YWcpXG4gICAgICAob3IgKGpzLXRhZyAoLT4gdGFnIG1ldGEgOnByZWZpeCkgOnJldC10YWcpICdqcylcbiAgICAgIHRhZyl9KSkpKVxuIn0gezpzeW0gYW5hbHl6ZS1kby1zdGF0ZW1lbnRzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBleHByc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLWRvLXN0YXRlbWVudHNcbiBbZW52IGV4cHJzXVxuIChkaXNhbGxvd2luZy1yZWN1ciAoYW5hbHl6ZS1kby1zdGF0ZW1lbnRzKiBlbnYgZXhwcnMpKSlcbiJ9IHs6c3ltIGdldC1saW5lLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ggZW52XSl9LCA6c291cmNlICIoZGVmbiBnZXQtbGluZSBbeCBlbnZdIChvciAoLT4geCBtZXRhIDpsaW5lKSAoOmxpbmUgZW52KSkpXG4ifSB7OnN5bSBhbmFseXplLWRvLXN0YXRlbWVudHMqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBleHByc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLWRvLXN0YXRlbWVudHMqXG4gW2VudiBleHByc11cbiAobWFwdlxuICAoZm4qXG4gICBbcDFfXzQ1MDg1I11cbiAgIChhbmFseXplIChhc3NvYyBlbnYgOmNvbnRleHQgOnN0YXRlbWVudCkgcDFfXzQ1MDg1IykpXG4gIChidXRsYXN0IGV4cHJzKSkpXG4ifSB7OnN5bSBhbmFseXplLXNlcSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1tlbnYgZm9ybSBuYW1lXSBbZW52IGZvcm0gbmFtZSBvcHRzXV19LCA6c291cmNlICIoZGVmblxuIGFuYWx5emUtc2VxXG4gKFtlbnYgZm9ybSBuYW1lXVxuICAoYW5hbHl6ZS1zZXFcbiAgIGVudlxuICAgZm9ybVxuICAgbmFtZVxuICAgKHdoZW4gZW52Lypjb21waWxlciogKDpvcHRpb25zIEBlbnYvKmNvbXBpbGVyKikpKSlcbiAoW2VudiBmb3JtIG5hbWUgb3B0c11cbiAgKGlmXG4gICAoOnF1b3RlZD8gZW52KVxuICAgKGFuYWx5emUtbGlzdCBlbnYgZm9ybSlcbiAgIChsZXRcbiAgICBbbGluZVxuICAgICAoLT4gZm9ybSBtZXRhIDpsaW5lKVxuICAgICBsaW5lXG4gICAgIChpZiAobmlsPyBsaW5lKSAoOmxpbmUgZW52KSBsaW5lKVxuICAgICBjb2xcbiAgICAgKC0+IGZvcm0gbWV0YSA6Y29sdW1uKVxuICAgICBjb2xcbiAgICAgKGlmIChuaWw/IGNvbCkgKDpjb2x1bW4gZW52KSBjb2wpXG4gICAgIGVudlxuICAgICAoYXNzb2MgZW52IDpsaW5lIGxpbmUgOmNvbHVtbiBjb2wpXVxuICAgIChsZXRcbiAgICAgW29wIChmaXJzdCBmb3JtKV1cbiAgICAgKHdoZW4gKG5pbD8gb3ApICh0aHJvdyAoZXJyb3IgZW52IFwiQ2FuJ3QgY2FsbCBuaWxcIikpKVxuICAgICAobGV0XG4gICAgICBbbWZvcm0gKG1hY3JvZXhwYW5kLTEgZW52IGZvcm0pXVxuICAgICAgKGlmXG4gICAgICAgKGlkZW50aWNhbD8gZm9ybSBtZm9ybSlcbiAgICAgICAoYW5hbHl6ZS1zZXEqLXdyYXAgb3AgZW52IGZvcm0gbmFtZSBvcHRzKVxuICAgICAgIChhbmFseXplIGVudiBtZm9ybSBuYW1lIG9wdHMpKSkpKSkpKVxuIn0gezpzeW0gZGVzdWdhci1kb3R0ZWQtZXhwciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt7OmtleXMgW29wXSwgOmFzIGV4cHJ9XSl9LCA6c291cmNlICIoZGVmblxuIGRlc3VnYXItZG90dGVkLWV4cHJcbiBbezprZXlzIFtvcF0sIDphcyBleHByfV1cbiAoY2FzZVxuICBvcFxuICAoOnZhciA6bG9jYWwpXG4gIChpZlxuICAgKGRvdHRlZC1zeW1ib2w/IChzeW1ib2wgKG5hbWUgKDpuYW1lIGV4cHIpKSkpXG4gICAobGV0XG4gICAgW3NcbiAgICAgKG5hbWUgKDpuYW1lIGV4cHIpKVxuICAgICBpZHhcbiAgICAgKC5sYXN0SW5kZXhPZiBzIFwiLlwiKVxuICAgICBfXG4gICAgIChhc3NlcnQgKG5vdD0gKGluYyBpZHgpIChjb3VudCBzKSkpXG4gICAgIHByZWZpeFxuICAgICAod2l0aC1tZXRhXG4gICAgICAoc3ltYm9sIChuYW1lc3BhY2UgKDpuYW1lIGV4cHIpKSAoc3VicyBzIDAgaWR4KSlcbiAgICAgIChtZXRhICg6Zm9ybSBleHByKSkpXG4gICAgIGZpZWxkXG4gICAgIChzeW1ib2wgKHN1YnMgcyAoaW5jIGlkeCkpKV1cbiAgICAoYXNzZXJ0IChub3QgKDpjb25zdC1leHByIGV4cHIpKSlcbiAgICB7Om9wIDpob3N0LWZpZWxkLFxuICAgICA6ZW52ICg6ZW52IGV4cHIpLFxuICAgICA6Zm9ybSAobGlzdCAnLiBwcmVmaXggZmllbGQpLFxuICAgICA6dGFyZ2V0XG4gICAgIChkZXN1Z2FyLWRvdHRlZC1leHByXG4gICAgICAoLT5cbiAgICAgICBleHByXG4gICAgICAgKGFzc29jIDpuYW1lIHByZWZpeCA6Zm9ybSBwcmVmaXgpXG4gICAgICAgKGRpc3NvYyA6dGFnKVxuICAgICAgIChhc3NvYy1pbiBbOmluZm8gOm5hbWVdIHByZWZpeClcbiAgICAgICAoYXNzb2MtaW4gWzplbnYgOmNvbnRleHRdIDpleHByKSkpLFxuICAgICA6ZmllbGQgZmllbGQsXG4gICAgIDp0YWcgKDp0YWcgZXhwciksXG4gICAgIDpjaGlsZHJlbiBbOnRhcmdldF19KVxuICAgZXhwcilcbiAgZXhwcikpXG4ifSB7OnN5bSBmaW5kLWRlZi1jbGFzaCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgbnMgc2VnbWVudHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gZmluZC1kZWYtY2xhc2hcbiBbZW52IG5zIHNlZ21lbnRzXVxuIChsZXRcbiAgW3RvLWNoZWNrXG4gICAobWFwXG4gICAgKGZuXG4gICAgIFt4c11cbiAgICAgWyhzeW1ib2wgKHN0cmluZy9qb2luIFwiLlwiIChidXRsYXN0IHhzKSkpIChzeW1ib2wgKGxhc3QgeHMpKV0pXG4gICAgKGRyb3AgMiAocmVkdWN0aW9ucyBjb25qIFtdIHNlZ21lbnRzKSkpXVxuICAoZG9zZXFcbiAgIFtbY2xhc2gtbnMgbmFtZV0gdG8tY2hlY2tdXG4gICAod2hlblxuICAgIChnZXQtaW5cbiAgICAgQGVudi8qY29tcGlsZXIqXG4gICAgIFs6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzIGNsYXNoLW5zIDpkZWZzIG5hbWVdKVxuICAgICh3YXJuaW5nXG4gICAgIDpucy12YXItY2xhc2hcbiAgICAgZW52XG4gICAgIHs6bnMgbnMsIDp2YXIgKHN5bWJvbCAoc3RyIGNsYXNoLW5zKSAoc3RyIG5hbWUpKX0pKSkpKVxuIn0gezpzeW0gaGFzLWVycm9yLWRhdGE/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2V4XSl9LCA6c291cmNlICIoZGVmblxuIGhhcy1lcnJvci1kYXRhP1xuICM/KDpjbGpzIHs6dGFnIGJvb2xlYW59KVxuIFtleF1cbiAoY29udGFpbnM/IChleC1kYXRhIGV4KSA6Y2xvanVyZS5lcnJvci9waGFzZSkpXG4ifSB7OnN5bSBmbi1uYW1lLXZhciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgbG9jYWxzIG5hbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gZm4tbmFtZS12YXJcbiBbZW52IGxvY2FscyBuYW1lXVxuICh3aGVuXG4gIChzb21lPyBuYW1lKVxuICAobGV0XG4gICBbbnNcbiAgICAoLT4gZW52IDpucyA6bmFtZSlcbiAgICBzaGFkb3dcbiAgICAoaGFuZGxlLXN5bWJvbC1sb2NhbCBuYW1lIChnZXQgbG9jYWxzIG5hbWUpKVxuICAgIHNoYWRvd1xuICAgICh3aGVuIChuaWw/IHNoYWRvdykgKGdldC1pbiBlbnYgWzpqcy1nbG9iYWxzIG5hbWVdKSlcbiAgICBmbi1zY29wZVxuICAgICg6Zm4tc2NvcGUgZW52KVxuICAgIG5hbWUtdmFyXG4gICAgezpuYW1lIG5hbWUsXG4gICAgIDpvcCA6YmluZGluZyxcbiAgICAgOmxvY2FsIDpmbixcbiAgICAgOmluZm9cbiAgICAgezpmbi1zZWxmLW5hbWUgdHJ1ZSwgOmZuLXNjb3BlIGZuLXNjb3BlLCA6bnMgbnMsIDpzaGFkb3cgc2hhZG93fX1cbiAgICB0YWdcbiAgICAoLT4gbmFtZSBtZXRhIDp0YWcpXG4gICAgcmV0LXRhZ1xuICAgICh3aGVuIChzb21lPyB0YWcpIHs6cmV0LXRhZyB0YWd9KV1cbiAgIChtZXJnZSBuYW1lLXZhciByZXQtdGFnKSkpKVxuIn0gezpzeW0gZ29vZy1tb2R1bGUtZGVwPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttb2R1bGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gZ29vZy1tb2R1bGUtZGVwP1xuIFttb2R1bGVdXG4gKGxldFxuICBbW21vZHVsZSBfXVxuICAgKGxpYiZzdWJsaWIgbW9kdWxlKVxuICAgbW9kdWxlLXN0clxuICAgKHN0ciBtb2R1bGUpXG4gICBvcHRpb25zXG4gICAoY29tcGlsZXItb3B0aW9ucyldXG4gIChpZlxuICAgKGFuZFxuICAgICg6Z2xvYmFsLWdvb2ctb2JqZWN0JmFycmF5IG9wdGlvbnMpXG4gICAgKCN7XCJnb29nLmFycmF5XCIgXCJnb29nLm9iamVjdFwifSBtb2R1bGUtc3RyKSlcbiAgIGZhbHNlXG4gICAoPVxuICAgIDpnb29nXG4gICAgKGdldC1pblxuICAgICBAZW52Lypjb21waWxlcipcbiAgICAgWzpqcy1kZXBlbmRlbmN5LWluZGV4IG1vZHVsZS1zdHIgOm1vZHVsZV0pKSkpKVxuIn0gezpzeW0gbXVuZ2Utbm9kZS1saWIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbmFtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtdW5nZS1ub2RlLWxpYlxuIFtuYW1lXVxuIChzdHJcbiAgXCJub2RlJG1vZHVsZSRcIlxuICAobXVuZ2VcbiAgIChzdHJpbmcvcmVwbGFjZSAoc3RyIG5hbWUpICNcIlsuXFwvXVwiICM/KDpjbGogXCJcXFxcJFwiIDpjbGpzIFwiJCRcIikpKSkpXG4ifSB7OnN5bSAqbG9hZC1tYWNyb3MqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqbG9hZC1tYWNyb3MqIHRydWUpXG4ifSB7OnN5bSBhZGQtdHlwZXMsIDptZXRhIHs6ZG9jICJQcm9kdWNlcyBhIHVuaW9uIG9mIHR5cGVzLiIsIDphcmdsaXN0cyBbW10gW3QxXSBbdDEgdDJdIFt0MSB0MiAmIHRzXV19LCA6c291cmNlICIoZGVmblxuIGFkZC10eXBlc1xuIFwiUHJvZHVjZXMgYSB1bmlvbiBvZiB0eXBlcy5cIlxuIChbXSAnYW55KVxuIChbdDFdIHQxKVxuIChbdDEgdDJdXG4gIChpZlxuICAgKG9yIChuaWw/IHQxKSAobmlsPyB0MikpXG4gICAnYW55XG4gICAoLT4gKHNldC91bmlvbiAoLT50eXBlLXNldCB0MSkgKC0+dHlwZS1zZXQgdDIpKSBjYW5vbmljYWxpemUtdHlwZSkpKVxuIChbdDEgdDIgJiB0c10gKGFwcGx5IGFkZC10eXBlcyAoYWRkLXR5cGVzIHQxIHQyKSB0cykpKVxuIn0gezpzeW0gZXhjbHVkZWQ/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBzeW1dKX0sIDpzb3VyY2UgIihkZWZuXG4gZXhjbHVkZWQ/XG4gIz8oOmNsanMgezp0YWcgYm9vbGVhbn0pXG4gW2VudiBzeW1dXG4gKG9yXG4gIChzb21lPyAoZ2V0cyBlbnYgOm5zIDpleGNsdWRlcyBzeW0pKVxuICAoc29tZT9cbiAgIChnZXRzXG4gICAgQGVudi8qY29tcGlsZXIqXG4gICAgOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlc1xuICAgIChnZXRzIGVudiA6bnMgOm5hbWUpXG4gICAgOmV4Y2x1ZGVzXG4gICAgc3ltKSkpKVxuIn0gezpzeW0gZW1wdHktZW52LCA6bWV0YSB7OmRvYyAiQ29uc3RydWN0IGFuIGVtcHR5IGFuYWx5c2lzIGVudmlyb25tZW50LiBSZXF1aXJlZCB0byBhbmFseXplIGZvcm1zLiIsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbXB0eS1lbnZcbiBcIkNvbnN0cnVjdCBhbiBlbXB0eSBhbmFseXNpcyBlbnZpcm9ubWVudC4gUmVxdWlyZWQgdG8gYW5hbHl6ZSBmb3Jtcy5cIlxuIFtdXG4gKGVuc3VyZVxuICB7Om5zIChnZXQtbmFtZXNwYWNlICpjbGpzLW5zKiksXG4gICA6Y29udGV4dCA6c3RhdGVtZW50LFxuICAgOmxvY2FscyB7fSxcbiAgIDpmbi1zY29wZSBbXSxcbiAgIDpqcy1nbG9iYWxzXG4gICAoaW50b1xuICAgIHt9XG4gICAgKG1hcFxuICAgICAoZm4qXG4gICAgICBbcDFfXzQ1MDcwI11cbiAgICAgICh2ZWN0b3IgcDFfXzQ1MDcwIyB7Om9wIDpqcy12YXIsIDpuYW1lIHAxX180NTA3MCMsIDpucyAnanN9KSlcbiAgICAgJyhhbGVydFxuICAgICAgIHdpbmRvd1xuICAgICAgIGRvY3VtZW50XG4gICAgICAgY29uc29sZVxuICAgICAgIGVzY2FwZVxuICAgICAgIHVuZXNjYXBlXG4gICAgICAgc2NyZWVuXG4gICAgICAgbG9jYXRpb25cbiAgICAgICBuYXZpZ2F0b3JcbiAgICAgICBoaXN0b3J5XG4gICAgICAgbG9jYXRpb25cbiAgICAgICBnbG9iYWxcbiAgICAgICBwcm9jZXNzXG4gICAgICAgcmVxdWlyZVxuICAgICAgIG1vZHVsZVxuICAgICAgIGV4cG9ydHMpKSl9KSlcbiJ9IHs6c3ltIHB1YmxpYy1uYW1lPywgOm1ldGEgezpkb2MgIklzIHN5bSBwdWJsaWM/IiwgOmFyZ2xpc3RzIChbbnMgc3ltXSl9LCA6c291cmNlICIoZGVmblxuIHB1YmxpYy1uYW1lP1xuIFwiSXMgc3ltIHB1YmxpYz9cIlxuICM/KDpjbGpzIHs6dGFnIGJvb2xlYW59KVxuIFtucyBzeW1dXG4gKGxldFxuICBbdmFyLWFzdFxuICAgKG9yXG4gICAgKGdldHMgQGVudi8qY29tcGlsZXIqIDpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXMgbnMgOmRlZnMgc3ltKVxuICAgICM/KDpjbGogKGdldHMgKGNsb2p1cmUuY29yZS9kZXJlZiBlbnYvKmNvbXBpbGVyKikgOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyBucyA6bWFjcm9zIHN5bSkgOmNsanMgKGdldHMgKGNsb2p1cmUuY29yZS9kZXJlZiBlbnYvKmNvbXBpbGVyKikgOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyAoc3ltYm9sIChzdHIgKG5hbWUgbnMpIFwiJG1hY3Jvc1wiKSkgOmRlZnMgc3ltKSkpXVxuICAoYW5kXG4gICAoc29tZT8gdmFyLWFzdClcbiAgIChub3QgKG9yICg6cHJpdmF0ZSB2YXItYXN0KSAoOmFub255bW91cyB2YXItYXN0KSkpKSkpXG4ifSB7OnN5bSBkZWZhdWx0LXdhcm5pbmctaGFuZGxlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt3YXJuaW5nLXR5cGUgZW52IGV4dHJhXSl9LCA6c291cmNlICIoZGVmblxuIGRlZmF1bHQtd2FybmluZy1oYW5kbGVyXG4gW3dhcm5pbmctdHlwZSBlbnYgZXh0cmFdXG4gKHdoZW5cbiAgKHdhcm5pbmctdHlwZSAqY2xqcy13YXJuaW5ncyopXG4gICh3aGVuLWxldFxuICAgW3MgKGVycm9yLW1lc3NhZ2Ugd2FybmluZy10eXBlIGV4dHJhKV1cbiAgICM/KDpjbGogKGJpbmRpbmcgWypvdXQqICplcnIqXSAocHJpbnRsbiAobWVzc2FnZSBlbnYgKHN0ciBcIldBUk5JTkc6IFwiIHMpKSkpIDpjbGpzIChiaW5kaW5nIFsqcHJpbnQtZm4qICpwcmludC1lcnItZm4qXSAocHJpbnRsbiAobWVzc2FnZSBlbnYgKHN0ciBcIldBUk5JTkc6IFwiIHMpKSkpKSkpKVxuIn0gezpzeW0gcmVzb2x2ZS1ucy1hbGlhcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1tlbnYgbmFtZV0gW2VudiBuYW1lIG5vdC1mb3VuZF1dfSwgOnNvdXJjZSAiKGRlZm5cbiByZXNvbHZlLW5zLWFsaWFzXG4gKFtlbnYgbmFtZV0gKHJlc29sdmUtbnMtYWxpYXMgZW52IG5hbWUgKHN5bWJvbCBuYW1lKSkpXG4gKFtlbnYgbmFtZSBub3QtZm91bmRdXG4gIChsZXQgW3N5bSAoc3ltYm9sIG5hbWUpXSAoZ2V0ICg6cmVxdWlyZXMgKDpucyBlbnYpKSBzeW0gbm90LWZvdW5kKSkpKVxuIn0gezpzeW0gaW50ZXJuLW1hY3JvcywgOm1ldGEgezpkb2MgIkdpdmVuIGEgQ2xvanVyZSBuYW1lc3BhY2UgaW50ZXJuIGFsbCBtYWNyb3MgaW50byB0aGUgYW1iaWVudCBDbG9qdXJlU2NyaXB0XG4gICBhbmFseXNpcyBlbnZpcm9ubWVudC4iLCA6YXJnbGlzdHMgW1tuc10gW25zIHJlbG9hZF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBpbnRlcm4tbWFjcm9zXG4gXCJHaXZlbiBhIENsb2p1cmUgbmFtZXNwYWNlIGludGVybiBhbGwgbWFjcm9zIGludG8gdGhlIGFtYmllbnQgQ2xvanVyZVNjcmlwdFxcbiAgIGFuYWx5c2lzIGVudmlyb25tZW50LlwiXG4gKFtuc10gKGludGVybi1tYWNyb3MgbnMgZmFsc2UpKVxuIChbbnMgcmVsb2FkXVxuICAod2hlblxuICAgKG9yXG4gICAgKG5pbD8gKGdldHMgQGVudi8qY29tcGlsZXIqIDpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXMgbnMgOm1hY3JvcykpXG4gICAgcmVsb2FkKVxuICAgKHN3YXAhXG4gICAgZW52Lypjb21waWxlcipcbiAgICBhc3NvYy1pblxuICAgIFs6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzIG5zIDptYWNyb3NdXG4gICAgKC0+PlxuICAgICAjPyg6Y2xqIChucy1pbnRlcm5zIG5zKSA6Y2xqcyAobnMtaW50ZXJucyogbnMpKVxuICAgICAoZmlsdGVyIChmbiBbW18gdl1dICguaXNNYWNybyB2KSkpXG4gICAgIChtYXBcbiAgICAgIChmblxuICAgICAgIFtbayB2XV1cbiAgICAgICBba1xuICAgICAgICAoYXMtPlxuICAgICAgICAgKG1ldGEgdilcbiAgICAgICAgIHZtXG4gICAgICAgICAobGV0XG4gICAgICAgICAgW25zICguZ2V0TmFtZSAoOm5zIHZtKSldXG4gICAgICAgICAgKGFzc29jXG4gICAgICAgICAgIHZtXG4gICAgICAgICAgIDpuc1xuICAgICAgICAgICBuc1xuICAgICAgICAgICA6bmFtZVxuICAgICAgICAgICAoc3ltYm9sIChzdHIgbnMpIChzdHIgaykpXG4gICAgICAgICAgIDptYWNyb1xuICAgICAgICAgICB0cnVlKSkpXSkpXG4gICAgIChpbnRvIHt9KSkpKSkpXG4ifSB7OnN5bSBjb25zdC1leHByLT5jb25zdGFudC12YWx1ZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt7OmtleXMgW29wXSwgOmFzIGV9XSl9LCA6c291cmNlICIoZGVmblxuIGNvbnN0LWV4cHItPmNvbnN0YW50LXZhbHVlXG4gW3s6a2V5cyBbb3BdLCA6YXMgZX1dXG4gKGNhc2VcbiAgb3BcbiAgOnF1b3RlXG4gIChjb25zdC1leHByLT5jb25zdGFudC12YWx1ZSAoOmV4cHIgZSkpXG4gIDpjb25zdFxuICAoOnZhbCBlKVxuICA6bWFwXG4gICh6aXBtYXBcbiAgIChtYXAgY29uc3QtZXhwci0+Y29uc3RhbnQtdmFsdWUgKDprZXlzIGUpKVxuICAgKG1hcCBjb25zdC1leHByLT5jb25zdGFudC12YWx1ZSAoOnZhbHMgZSkpKVxuICA6c2V0XG4gIChpbnRvICN7fSAobWFwIGNvbnN0LWV4cHItPmNvbnN0YW50LXZhbHVlICg6aXRlbXMgZSkpKVxuICA6dmVjdG9yXG4gIChpbnRvIFtdIChtYXAgY29uc3QtZXhwci0+Y29uc3RhbnQtdmFsdWUgKDppdGVtcyBlKSkpKSlcbiJ9IHs6c3ltICptYWNyby1pbmZlciosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICptYWNyby1pbmZlciogdHJ1ZSlcbiJ9IHs6c3ltIGdlbi1jb25zdGFudC1pZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt2YWx1ZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZW4tY29uc3RhbnQtaWRcbiBbdmFsdWVdXG4gKGxldFxuICBbcHJlZml4XG4gICAoY29uZFxuICAgIChrZXl3b3JkPyB2YWx1ZSlcbiAgICBcImNzdCRrdyRcIlxuICAgIChzeW1ib2w/IHZhbHVlKVxuICAgIFwiY3N0JHN5bSRcIlxuICAgIDplbHNlXG4gICAgKHRocm93XG4gICAgICM/KDpjbGogKEV4Y2VwdGlvbi4gKHN0ciBcImNvbnN0YW50IHR5cGUgXCIgKHR5cGUgdmFsdWUpIFwiIG5vdCBzdXBwb3J0ZWRcIikpIDpjbGpzIChqcy9FcnJvci4gKHN0ciBcImNvbnN0YW50IHR5cGUgXCIgKHR5cGUgdmFsdWUpIFwiIG5vdCBzdXBwb3J0ZWRcIikpKSkpXG4gICBuYW1lXG4gICAoaWYgKGtleXdvcmQ/IHZhbHVlKSAoc3VicyAoc3RyIHZhbHVlKSAxKSAoc3RyIHZhbHVlKSlcbiAgIG5hbWVcbiAgIChpZlxuICAgICg9IFwiLlwiIG5hbWUpXG4gICAgXCJfRE9UX1wiXG4gICAgKC0+XG4gICAgIG5hbWVcbiAgICAgKHN0cmluZy9yZXBsYWNlIFwiLVwiIFwiX0RBU0hfXCIpXG4gICAgIChtdW5nZSlcbiAgICAgKHN0cmluZy9yZXBsYWNlIFwiLlwiIFwiJFwiKVxuICAgICAoc3RyaW5nL3JlcGxhY2VcbiAgICAgICNcIig/aSlbXmEtejAtOSRfXVwiXG4gICAgICAoZm4qIFtwMV9fNDUwNjkjXSAoaGV4LWZvcm1hdCBwMV9fNDUwNjkjIDQpKSkpKV1cbiAgKHN5bWJvbCAoc3RyIHByZWZpeCBuYW1lKSkpKVxuIn0gezpzeW0gbGliJnN1YmxpYiwgOm1ldGEgezpkb2MgIklmIGEgbGlicmFyeSBuYW1lIGhhcyB0aGUgZm9ybSBmb28kYmFyLCByZXR1cm4gYSB2ZWN0b3Igb2YgdGhlIGxpYnJhcnkgYW5kXG4gICB0aGUgc3VibGlicmFyeSBwcm9wZXJ0eS4iLCA6YXJnbGlzdHMgKFtsaWJdKX0sIDpzb3VyY2UgIihkZWZuXG4gbGliJnN1YmxpYlxuIFwiSWYgYSBsaWJyYXJ5IG5hbWUgaGFzIHRoZSBmb3JtIGZvbyRiYXIsIHJldHVybiBhIHZlY3RvciBvZiB0aGUgbGlicmFyeSBhbmRcXG4gICB0aGUgc3VibGlicmFyeSBwcm9wZXJ0eS5cIlxuIFtsaWJdXG4gKGlmLWxldFxuICBbeHMgKHJlLW1hdGNoZXMgI1wiKC4qKVxcJCguKilcIiAoc3RyIGxpYikpXVxuICAoZHJvcCAxIHhzKVxuICBbbGliIG5pbF0pKVxuIn0gezpzeW0gbWFjcm8tYXV0b2xvYWQtbnM/LCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBzcGVjIGZvcm0gY2hlY2sgd2hldGhlciB0aGUgc3BlYyBuYW1lc3BhY2UgcmVxdWlyZXMgYSBtYWNybyBmaWxlXG4gICBvZiB0aGUgc2FtZSBuYW1lLiBJZiBzbyByZXR1cm4gdHJ1ZS4iLCA6YXJnbGlzdHMgKFtmb3JtXSl9LCA6c291cmNlICIoZGVmblxuIG1hY3JvLWF1dG9sb2FkLW5zP1xuIFwiR2l2ZW4gYSBzcGVjIGZvcm0gY2hlY2sgd2hldGhlciB0aGUgc3BlYyBuYW1lc3BhY2UgcmVxdWlyZXMgYSBtYWNybyBmaWxlXFxuICAgb2YgdGhlIHNhbWUgbmFtZS4gSWYgc28gcmV0dXJuIHRydWUuXCJcbiAjPyg6Y2xqcyB7OnRhZyBib29sZWFufSlcbiBbZm9ybV1cbiAod2hlblxuICAqbWFjcm8taW5mZXIqXG4gIChsZXRcbiAgIFtuc1xuICAgIChpZiAoc2VxdWVudGlhbD8gZm9ybSkgKGZpcnN0IGZvcm0pIGZvcm0pXG4gICAgezprZXlzIFt1c2UtbWFjcm9zIHJlcXVpcmUtbWFjcm9zXX1cbiAgICAob3JcbiAgICAgKGdldC1pbiBAZW52Lypjb21waWxlciogWzpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXMgbnNdKVxuICAgICAjPyg6Y2xqICh3aGVuLWxldCBbcmVzICh1dGlsL25zLT5zb3VyY2UgbnMpXSAoOmFzdCAocGFyc2UtbnMgcmVzKSkpKSldXG4gICAob3JcbiAgICAoc29tZSAje25zfSAodmFscyB1c2UtbWFjcm9zKSlcbiAgICAoc29tZSAje25zfSAodmFscyByZXF1aXJlLW1hY3JvcykpKSkpKVxuIn0gezpzeW0gZ2V0LXRhZywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlXSl9LCA6c291cmNlICIoZGVmblxuIGdldC10YWdcbiBbZV1cbiAoaWYtc29tZVxuICBbdGFnICgtPiBlIDpmb3JtIG1ldGEgOnRhZyldXG4gIHRhZ1xuICAoaWYtc29tZSBbdGFnICgtPiBlIDp0YWcpXSB0YWcgKC0+IGUgOmluZm8gOnRhZykpKSlcbiJ9IHs6c3ltIGltcGxpY2l0LW5zZXMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gaW1wbGljaXQtbnNlc1xuICcje1N0cmluZyBnb29nLnN0cmluZyBnb29nIGdvb2cub2JqZWN0IE1hdGggZ29vZy5hcnJheX0pXG4ifSB7OnN5bSB2YWxpZC1wcm90bywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiB2YWxpZC1wcm90byBbeF0gKHdoZW4gKHN5bWJvbD8geCkgeCkpXG4ifSB7OnN5bSBub3JtYWxpemUtanMtdGFnLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gbm9ybWFsaXplLWpzLXRhZ1xuIFt4XVxuIChpZi1ub3RcbiAgKD0gJ2pzIHgpXG4gICh3aXRoLW1ldGFcbiAgICdqc1xuICAgezpwcmVmaXhcbiAgICAoY29ualxuICAgICAoLT4+IChzdHJpbmcvc3BsaXQgKG5hbWUgeCkgI1wiXFwuXCIpIChtYXAgc3ltYm9sKSB2ZWMpXG4gICAgICdwcm90b3R5cGUpfSlcbiAgeCkpXG4ifSB7OnN5bSBhbmFseXplLWxpc3QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IGZvcm1dKX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHl6ZS1saXN0XG4gW2VudiBmb3JtXVxuIChsZXRcbiAgW2V4cHItZW52XG4gICAoYXNzb2MgZW52IDpjb250ZXh0IDpleHByKVxuICAgaXRlbXNcbiAgIChkaXNhbGxvd2luZy1yZWN1clxuICAgIChtYXB2IChmbiogW3AxX180NTExNSNdIChhbmFseXplIGV4cHItZW52IHAxX180NTExNSMpKSBmb3JtKSldXG4gIChhbmFseXplLXdyYXAtbWV0YVxuICAgezpvcCA6bGlzdCxcbiAgICA6ZW52IGVudixcbiAgICA6Zm9ybSBmb3JtLFxuICAgIDppdGVtcyBpdGVtcyxcbiAgICA6Y2hpbGRyZW4gWzppdGVtc10sXG4gICAgOnRhZyAnY2xqcy5jb3JlL0lMaXN0fSkpKVxuIn0gezpzeW0gd2FybmluZywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt3YXJuaW5nLXR5cGUgZW52IGV4dHJhXSl9LCA6c291cmNlICIoZGVmblxuIHdhcm5pbmdcbiBbd2FybmluZy10eXBlIGVudiBleHRyYV1cbiAoZG9zZXFcbiAgW2hhbmRsZXIgKmNsanMtd2FybmluZy1oYW5kbGVycypdXG4gIChoYW5kbGVyIHdhcm5pbmctdHlwZSBlbnYgZXh0cmEpKSlcbiJ9IHs6c3ltIGltcGxpY2l0LWltcG9ydD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IHByZWZpeCBzdWZmaXhdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW1wbGljaXQtaW1wb3J0P1xuICM/KDpjbGpzIHs6dGFnIGJvb2xlYW59KVxuIFtlbnYgcHJlZml4IHN1ZmZpeF1cbiAoY29udGFpbnM/IGltcGxpY2l0LW5zZXMgcHJlZml4KSlcbiJ9IHs6c3ltIG1pc3NpbmctdXNlLW1hY3JvcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt1c2UtbWFjcm9zIGVudl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtaXNzaW5nLXVzZS1tYWNyb3NcbiBbdXNlLW1hY3JvcyBlbnZdXG4gKGxldFxuICBbY2VudiBAZW52Lypjb21waWxlcipdXG4gIChpbnRvXG4gICB7fVxuICAgKGZpbHRlciAoZm4gW1tzeW0gbGliXV0gKG1pc3NpbmctdXNlLW1hY3JvPyBsaWIgc3ltKSkgdXNlLW1hY3JvcykpKSlcbiJ9IHs6c3ltIGFuYWx5emUqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBmb3JtIG5hbWUgb3B0c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplKlxuIFtlbnYgZm9ybSBuYW1lIG9wdHNdXG4gKGxldFxuICBbcGFzc2VzXG4gICAqcGFzc2VzKlxuICAgcGFzc2VzXG4gICAoaWYgKG5pbD8gcGFzc2VzKSBkZWZhdWx0LXBhc3NlcyBwYXNzZXMpXG4gICBmb3JtXG4gICAoaWYgKGluc3RhbmNlPyBMYXp5U2VxIGZvcm0pIChpZiAoc2VxIGZvcm0pIGZvcm0gKCkpIGZvcm0pXG4gICBhc3RcbiAgIChhbmFseXplLWZvcm0gZW52IGZvcm0gbmFtZSBvcHRzKV1cbiAgKHJlZHVjZSAoZm4gW2FzdCBwYXNzXSAocGFzcyBlbnYgYXN0IG9wdHMpKSBhc3QgcGFzc2VzKSkpXG4ifSB7OnN5bSAtY2xqcy1tYWNyb3MtbG9hZGVkLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAtY2xqcy1tYWNyb3MtbG9hZGVkIChhdG9tIGZhbHNlKSlcbiJ9IHs6c3ltIGNoZWNrLXVzZXMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdXNlcyBlbnZdKX0sIDpzb3VyY2UgIihkZWZuXG4gY2hlY2stdXNlc1xuIFt1c2VzIGVudl1cbiAobGV0XG4gIFtjZW52IEBlbnYvKmNvbXBpbGVyKl1cbiAgKGRvc2VxXG4gICBbW3N5bSBsaWJdIHVzZXNdXG4gICAod2hlblxuICAgIChtaXNzaW5nLXVzZT8gbGliIHN5bSBjZW52KVxuICAgICh0aHJvd1xuICAgICAoZXJyb3JcbiAgICAgIGVudlxuICAgICAgKGVycm9yLW1lc3NhZ2VcbiAgICAgICA6dW5kZWNsYXJlZC1ucy1mb3JtXG4gICAgICAgezp0eXBlIFwidmFyXCIsIDpsaWIgbGliLCA6c3ltIHN5bX0pKSkpKSkpXG4ifSB7OnN5bSBmaW5kLW1hdGNoaW5nLW1ldGhvZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmIHBhcmFtc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBmaW5kLW1hdGNoaW5nLW1ldGhvZFxuIFtmIHBhcmFtc11cbiAobGV0XG4gIFttZXRob2RzIChvciAoOm1ldGhvZHMgZikgKC0+IGYgOmluZm8gOm1ldGhvZHMpKSBjIChjb3VudCBwYXJhbXMpXVxuICAoc29tZVxuICAgKGZuIFttXSAoYW5kIChvciAoPT0gKDpmaXhlZC1hcml0eSBtKSBjKSAoOnZhcmlhZGljPyBtKSkgbSkpXG4gICBtZXRob2RzKSkpXG4ifSB7OnN5bSAqcHJpdmF0ZS12YXItYWNjZXNzLW5vd2FybiosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpwcml2YXRlLXZhci1hY2Nlc3Mtbm93YXJuKiBmYWxzZSlcbiJ9IHs6c3ltIGludm9rZS1hcmctdHlwZS12YWxpZGF0b3JzLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIGludm9rZS1hcmctdHlwZS12YWxpZGF0b3JzXG4gKGxldFxuICBbYWdldC12YWxpZGF0b3JcbiAgIHs6dmFsaWQ/XG4gICAgKGZuKlxuICAgICBbcDFfXzQ1MTIyI11cbiAgICAgKGFuZFxuICAgICAgKGFycmF5LXR5cGU/IChmaXJzdCBwMV9fNDUxMjIjKSlcbiAgICAgIChldmVyeT8gbnVtZXJpYy10eXBlPyAocmVzdCBwMV9fNDUxMjIjKSkpKSxcbiAgICA6d2FybmluZy10eXBlIDppbnZhbGlkLWFycmF5LWFjY2Vzc31cbiAgIGFzZXQtdmFsaWRhdG9yXG4gICB7OnZhbGlkP1xuICAgIChmbipcbiAgICAgW3AxX180NTEyMyNdXG4gICAgIChhbmRcbiAgICAgIChhcnJheS10eXBlPyAoZmlyc3QgcDFfXzQ1MTIzIykpXG4gICAgICAoZXZlcnk/IG51bWVyaWMtdHlwZT8gKGJ1dGxhc3QgKHJlc3QgcDFfXzQ1MTIzIykpKSkpLFxuICAgIDp3YXJuaW5nLXR5cGUgOmludmFsaWQtYXJyYXktYWNjZXNzfV1cbiAgeydjbGpzLmNvcmUvY2hlY2tlZC1hZ2V0IGFnZXQtdmFsaWRhdG9yLFxuICAgJ2NsanMuY29yZS9jaGVja2VkLWFzZXQgYXNldC12YWxpZGF0b3IsXG4gICAnY2xqcy5jb3JlL2NoZWNrZWQtYWdldCcgYWdldC12YWxpZGF0b3IsXG4gICAnY2xqcy5jb3JlL2NoZWNrZWQtYXNldCcgYXNldC12YWxpZGF0b3J9KSlcbiJ9IHs6c3ltICpjbGpzLWZpbGUqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqY2xqcy1maWxlKiBuaWwpXG4ifSB7OnN5bSAqZmlsZS1kZWZzKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmZpbGUtZGVmcyogbmlsKVxuIn0gezpzeW0gaW5mZXItaWYsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5mZXItaWZcbiBbZW52IGVdXG4gKGxldFxuICBbezprZXlzIFtvcCBmb3JtXX1cbiAgICh1bndyYXAtcXVvdGUgKDp0ZXN0IGUpKVxuICAgdGhlbi10YWdcbiAgIChpbmZlci10YWcgZW52ICg6dGhlbiBlKSldXG4gIChpZlxuICAgKGFuZFxuICAgICM/KDpjbGogKD0gb3AgOmNvbnN0KSA6Y2xqcyAoa2V5d29yZC1pZGVudGljYWw/IG9wIDpjb25zdCkpXG4gICAgKG5vdCAobmlsPyBmb3JtKSlcbiAgICAobm90IChmYWxzZT8gZm9ybSkpKVxuICAgdGhlbi10YWdcbiAgIChsZXRcbiAgICBbZWxzZS10YWcgKGluZmVyLXRhZyBlbnYgKDplbHNlIGUpKV1cbiAgICAoY29uZFxuICAgICAob3JcbiAgICAgICM/KDpjbGogKD0gdGhlbi10YWcgZWxzZS10YWcpIDpjbGpzIChzeW1ib2wtaWRlbnRpY2FsPyB0aGVuLXRhZyBlbHNlLXRhZykpXG4gICAgICAjPyg6Y2xqICg9IGVsc2UtdGFnIGltcGwvSUdOT1JFX1NZTSkgOmNsanMgKHN5bWJvbC1pZGVudGljYWw/IGVsc2UtdGFnIGltcGwvSUdOT1JFX1NZTSkpKVxuICAgICB0aGVuLXRhZ1xuICAgICAjPyg6Y2xqICg9IHRoZW4tdGFnIGltcGwvSUdOT1JFX1NZTSkgOmNsanMgKHN5bWJvbC1pZGVudGljYWw/IHRoZW4tdGFnIGltcGwvSUdOT1JFX1NZTSkpXG4gICAgIGVsc2UtdGFnXG4gICAgIChhbmRcbiAgICAgIChvciAoc29tZT8gKGdldCBpbXBsL05PVF9OQVRJVkUgdGhlbi10YWcpKSAodHlwZT8gZW52IHRoZW4tdGFnKSlcbiAgICAgIChvciAoc29tZT8gKGdldCBpbXBsL05PVF9OQVRJVkUgZWxzZS10YWcpKSAodHlwZT8gZW52IGVsc2UtdGFnKSkpXG4gICAgICdjbGpcbiAgICAgOmVsc2VcbiAgICAgKGlmXG4gICAgICAoYW5kXG4gICAgICAgKHNvbWU/IChnZXQgaW1wbC9CT09MRUFOX09SX1NFUSB0aGVuLXRhZykpXG4gICAgICAgKHNvbWU/IChnZXQgaW1wbC9CT09MRUFOX09SX1NFUSBlbHNlLXRhZykpKVxuICAgICAgJ3NlcVxuICAgICAgKGxldFxuICAgICAgIFt0aGVuLXRhZ1xuICAgICAgICAoaWZcbiAgICAgICAgICM/KDpjbGogKHNldD8gdGhlbi10YWcpIDpjbGpzIChpbXBsL2NsanMtc2V0PyB0aGVuLXRhZykpXG4gICAgICAgICB0aGVuLXRhZ1xuICAgICAgICAgI3t0aGVuLXRhZ30pXG4gICAgICAgIGVsc2UtdGFnXG4gICAgICAgIChpZlxuICAgICAgICAgIz8oOmNsaiAoc2V0PyBlbHNlLXRhZykgOmNsanMgKGltcGwvY2xqcy1zZXQ/IGVsc2UtdGFnKSlcbiAgICAgICAgIGVsc2UtdGFnXG4gICAgICAgICAje2Vsc2UtdGFnfSldXG4gICAgICAgKGludG8gdGhlbi10YWcgZWxzZS10YWcpKSkpKSkpKVxuIn0gezpzeW0gKnZlcmJvc2UqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqdmVyYm9zZSogZmFsc2UpXG4ifSB7OnN5bSBhbmFseXplLWpzLXZhbHVlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBmb3JtXSl9LCA6c291cmNlICIoZGVmblxuIGFuYWx5emUtanMtdmFsdWVcbiBbZW52IGZvcm1dXG4gKGxldFxuICBbdmFsICguLXZhbCBmb3JtKSBleHByLWVudiAoYXNzb2MgZW52IDpjb250ZXh0IDpleHByKV1cbiAgKGlmXG4gICAobWFwPyB2YWwpXG4gICAobGV0XG4gICAgW2tleXNcbiAgICAgKHZlYyAoa2V5cyB2YWwpKVxuICAgICB2YWxzXG4gICAgIChkaXNhbGxvd2luZy1yZWN1clxuICAgICAgKG1hcHZcbiAgICAgICAoZm4qIFtwMV9fNDUxMTgjXSAoYW5hbHl6ZSBleHByLWVudiBwMV9fNDUxMTgjKSlcbiAgICAgICAodmFscyB2YWwpKSldXG4gICAgezpvcCA6anMtb2JqZWN0LFxuICAgICA6ZW52IGVudixcbiAgICAgOmZvcm0gZm9ybSxcbiAgICAgOmtleXMga2V5cyxcbiAgICAgOnZhbHMgdmFscyxcbiAgICAgOmNoaWxkcmVuIFs6dmFsc10sXG4gICAgIDp0YWcgJ29iamVjdH0pXG4gICAobGV0XG4gICAgW2l0ZW1zXG4gICAgIChkaXNhbGxvd2luZy1yZWN1clxuICAgICAgKG1hcHYgKGZuKiBbcDFfXzQ1MTE5I10gKGFuYWx5emUgZXhwci1lbnYgcDFfXzQ1MTE5IykpIHZhbCkpXVxuICAgIHs6b3AgOmpzLWFycmF5LFxuICAgICA6ZW52IGVudixcbiAgICAgOmZvcm0gZm9ybSxcbiAgICAgOml0ZW1zIGl0ZW1zLFxuICAgICA6Y2hpbGRyZW4gWzppdGVtc10sXG4gICAgIDp0YWcgJ2FycmF5fSkpKSlcbiJ9IHs6c3ltIG5zLT5tb2R1bGUtdHlwZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtuc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBucy0+bW9kdWxlLXR5cGVcbiBbbnNdXG4gKGNvbmRcbiAgKGdvb2ctbW9kdWxlLWRlcD8gbnMpXG4gIDpnb29nLW1vZHVsZVxuICAoanMtbW9kdWxlLWV4aXN0cz8gbnMpXG4gIDpqc1xuICAobm9kZS1tb2R1bGUtZGVwPyBucylcbiAgOm5vZGVcbiAgKGRlcC1oYXMtZ2xvYmFsLWV4cG9ydHM/IG5zKVxuICA6Z2xvYmFsKSlcbiJ9IHs6c3ltIHNvdXJjZS1pbmZvLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW2Vudl0gW25hbWUgZW52XV19LCA6c291cmNlICIoZGVmblxuIHNvdXJjZS1pbmZvXG4gKFtlbnZdICh3aGVuICg6bGluZSBlbnYpIChzb3VyY2UtaW5mbyBuaWwgZW52KSkpXG4gKFtuYW1lIGVudl1cbiAgKGNvbmQtPlxuICAgezpmaWxlXG4gICAgKGlmXG4gICAgICg9ICgtPiBlbnYgOm5zIDpuYW1lKSAnY2xqcy5jb3JlKVxuICAgICBcImNsanMvY29yZS5jbGpzXCJcbiAgICAgKmNsanMtZmlsZSopLFxuICAgIDpsaW5lIChnZXQtbGluZSBuYW1lIGVudiksXG4gICAgOmNvbHVtbiAoZ2V0LWNvbCBuYW1lIGVudil9XG4gICAoOnJvb3Qtc291cmNlLWluZm8gZW52KVxuICAgKG1lcmdlIChzZWxlY3Qta2V5cyBlbnYgWzpyb290LXNvdXJjZS1pbmZvXSkpKSkpXG4ifSB7OnN5bSBhbmFseXplLWZuLW1ldGhvZC1wYXJhbSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnZdKX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHl6ZS1mbi1tZXRob2QtcGFyYW1cbiBbZW52XVxuIChmblxuICBbW2xvY2FscyBwYXJhbXNdIFthcmctaWQgbmFtZV1dXG4gICh3aGVuXG4gICAobmFtZXNwYWNlIG5hbWUpXG4gICAodGhyb3dcbiAgICAoZXJyb3IgZW52IChzdHIgXCJDYW4ndCB1c2UgcXVhbGlmaWVkIG5hbWUgYXMgcGFyYW1ldGVyOiBcIiBuYW1lKSkpKVxuICAobGV0XG4gICBbbGluZVxuICAgIChnZXQtbGluZSBuYW1lIGVudilcbiAgICBjb2x1bW5cbiAgICAoZ2V0LWNvbCBuYW1lIGVudilcbiAgICBubWV0YVxuICAgIChtZXRhIG5hbWUpXG4gICAgdGFnXG4gICAgKDp0YWcgbm1ldGEpXG4gICAgc2hhZG93XG4gICAgKHdoZW4gKHNvbWU/IGxvY2FscykgKGhhbmRsZS1zeW1ib2wtbG9jYWwgbmFtZSAobG9jYWxzIG5hbWUpKSlcbiAgICBlbnZcbiAgICAobWVyZ2UgKHNlbGVjdC1rZXlzIGVudiBbOmNvbnRleHRdKSB7OmxpbmUgbGluZSwgOmNvbHVtbiBjb2x1bW59KVxuICAgIHBhcmFtXG4gICAgezpuYW1lIG5hbWUsXG4gICAgIDpiaW5kaW5nLWZvcm0/IHRydWUsXG4gICAgIDpvcCA6YmluZGluZyxcbiAgICAgOmVudiBlbnYsXG4gICAgIDpjb2x1bW4gY29sdW1uLFxuICAgICA6bGluZSBsaW5lLFxuICAgICA6YXJnLWlkIGFyZy1pZCxcbiAgICAgOmluZm8gezpuYW1lIG5hbWUsIDpzaGFkb3cgc2hhZG93fSxcbiAgICAgOnRhZyB0YWcsXG4gICAgIDpzaGFkb3cgc2hhZG93LFxuICAgICA6bG9jYWwgOmFyZ31dXG4gICBbKGFzc29jIGxvY2FscyBuYW1lIHBhcmFtKSAoY29uaiBwYXJhbXMgcGFyYW0pXSkpKVxuIn0gezpzeW0gYW5hbHl6ZS1zZXQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IGZvcm1dKX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHl6ZS1zZXRcbiBbZW52IGZvcm1dXG4gKGxldFxuICBbZXhwci1lbnZcbiAgIChhc3NvYyBlbnYgOmNvbnRleHQgOmV4cHIpXG4gICBpdGVtc1xuICAgKGRpc2FsbG93aW5nLXJlY3VyXG4gICAgKG1hcHYgKGZuKiBbcDFfXzQ1MTE3I10gKGFuYWx5emUgZXhwci1lbnYgcDFfXzQ1MTE3IykpIGZvcm0pKV1cbiAgKGFuYWx5emUtd3JhcC1tZXRhXG4gICB7Om9wIDpzZXQsXG4gICAgOmVudiBlbnYsXG4gICAgOmZvcm0gZm9ybSxcbiAgICA6aXRlbXMgaXRlbXMsXG4gICAgOmNoaWxkcmVuIFs6aXRlbXNdLFxuICAgIDp0YWcgJ2NsanMuY29yZS9JU2V0fSkpKVxuIn0gezpzeW0gbnVtZXJpYy10eXBlPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0XSl9LCA6c291cmNlICIoZGVmblxuIG51bWVyaWMtdHlwZT9cbiAjPyg6Y2xqcyB7OnRhZyBib29sZWFufSlcbiBbdF1cbiAoY29uZFxuICAobmlsPyB0KVxuICB0cnVlXG4gICg9ICdjbGotbmlsIHQpXG4gIHRydWVcbiAgKGpzLXRhZz8gdClcbiAgdHJ1ZVxuICA6ZWxzZVxuICAoaWZcbiAgIChhbmQgKHN5bWJvbD8gdCkgKHNvbWU/IChnZXQgTlVNRVJJQ19TRVQgdCkpKVxuICAgdHJ1ZVxuICAgKHdoZW5cbiAgICAjPyg6Y2xqIChzZXQ/IHQpIDpjbGpzIChpbXBsL2NsanMtc2V0PyB0KSlcbiAgICAob3JcbiAgICAgKGNvbnRhaW5zPyB0ICdudW1iZXIpXG4gICAgIChjb250YWlucz8gdCAnbG9uZylcbiAgICAgKGNvbnRhaW5zPyB0ICdkb3VibGUpXG4gICAgIChjb250YWlucz8gdCAnYW55KVxuICAgICAoY29udGFpbnM/IHQgJ2pzKSkpKSkpXG4ifSB7OnN5bSBhc3Q/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gYXN0P1xuICM/KDpjbGpzIHs6dGFnIGJvb2xlYW59KVxuIFt4XVxuIChhbmQgKG1hcD8geCkgKGNvbnRhaW5zPyB4IDpvcCkpKVxuIn0gezpzeW0gY2hlY2tlZC1hcnJheXMsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGZhbHNlLXksIDp3YXJuLCBvciA6ZXJyb3IgYmFzZWQgb24gY29uZmlndXJhdGlvbiBhbmQgdGhlXG4gICBjdXJyZW50IHZhbHVlIG9mICp1bmNoZWNrZWQtYXJyYXlzKi4iLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gY2hlY2tlZC1hcnJheXNcbiBcIlJldHVybnMgZmFsc2UteSwgOndhcm4sIG9yIDplcnJvciBiYXNlZCBvbiBjb25maWd1cmF0aW9uIGFuZCB0aGVcXG4gICBjdXJyZW50IHZhbHVlIG9mICp1bmNoZWNrZWQtYXJyYXlzKi5cIlxuIFtdXG4gKHdoZW5cbiAgKGFuZFxuICAgKG5vdD0gOmFkdmFuY2VkICg6b3B0aW1pemF0aW9ucyAoY29tcGlsZXItb3B0aW9ucykpKVxuICAgKG5vdCAqdW5jaGVja2VkLWFycmF5cyopKVxuICAqY2hlY2tlZC1hcnJheXMqKSlcbiJ9IHs6c3ltIGVsaWRlLWVudiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgYXN0IG9wdHNdKX0sIDpzb3VyY2UgIihkZWZuIGVsaWRlLWVudiBbZW52IGFzdCBvcHRzXSAoZGlzc29jIGFzdCA6ZW52KSlcbiJ9IHs6c3ltIGpzLW1vZHVsZS1leGlzdHM/KiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYganMtbW9kdWxlLWV4aXN0cz8qIChtZW1vaXplIGludGVybmFsLWpzLW1vZHVsZS1leGlzdHM/KSlcbiJ9IHs6c3ltIHBhcnNlLXJlcXVpcmUtc3BlYywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgbWFjcm9zPyBkZXBzIGFsaWFzZXMgc3BlY10pfSwgOnNvdXJjZSAiKGRlZm5cbiBwYXJzZS1yZXF1aXJlLXNwZWNcbiBbZW52IG1hY3Jvcz8gZGVwcyBhbGlhc2VzIHNwZWNdXG4gKGlmXG4gIChvciAoc3ltYm9sPyBzcGVjKSAoc3RyaW5nPyBzcGVjKSlcbiAgKHJlY3VyIGVudiBtYWNyb3M/IGRlcHMgYWxpYXNlcyBbc3BlY10pXG4gIChkb1xuICAgKGJhc2ljLXZhbGlkYXRlLW5zLXNwZWMgZW52IG1hY3Jvcz8gc3BlYylcbiAgIChsZXRcbiAgICBbW2xpYiAmIG9wdHNdXG4gICAgIHNwZWNcbiAgICAgW2xpYiBqcy1tb2R1bGUtcHJvdmlkZXNdXG4gICAgIChpZi1zb21lXG4gICAgICBbanMtbW9kdWxlLW5hbWVcbiAgICAgICAoZ2V0cyBAZW52Lypjb21waWxlciogOmpzLW1vZHVsZS1pbmRleCAoc3RyIGxpYikgOm5hbWUpXVxuICAgICAgWyhzeW1ib2wganMtbW9kdWxlLW5hbWUpIGxpYl1cbiAgICAgIFtsaWIgbmlsXSlcbiAgICAge2FsaWFzIDphcyxcbiAgICAgIHJlZmVycmVkIDpyZWZlcixcbiAgICAgIHJlbmFtZWQgOnJlbmFtZSxcbiAgICAgIDpvciB7YWxpYXMgKGlmIChzdHJpbmc/IGxpYikgKHN5bWJvbCAobXVuZ2UgbGliKSkgbGliKX19XG4gICAgIChhcHBseSBoYXNoLW1hcCBvcHRzKVxuICAgICByZWZlcnJlZC13aXRob3V0LXJlbmFtZWRcbiAgICAgKHNlcSAocmVtb3ZlIChzZXQgKGtleXMgcmVuYW1lZCkpIHJlZmVycmVkKSlcbiAgICAgW3JrIHVrIHJlbmtdXG4gICAgIChpZlxuICAgICAgbWFjcm9zP1xuICAgICAgWzpyZXF1aXJlLW1hY3JvcyA6dXNlLW1hY3JvcyA6cmVuYW1lLW1hY3Jvc11cbiAgICAgIFs6cmVxdWlyZSA6dXNlIDpyZW5hbWVdKV1cbiAgICAod2hlbi1ub3RcbiAgICAgKG9yIChzeW1ib2w/IGFsaWFzKSAobmlsPyBhbGlhcykpXG4gICAgICh0aHJvd1xuICAgICAgKGVycm9yXG4gICAgICAgZW52XG4gICAgICAgKHBhcnNlLW5zLWVycm9yLW1zZ1xuICAgICAgICBzcGVjXG4gICAgICAgIFwiOmFzIG11c3QgYmUgZm9sbG93ZWQgYnkgYSBzeW1ib2wgaW4gOnJlcXVpcmUgLyA6cmVxdWlyZS1tYWNyb3NcIikpKSlcbiAgICAod2hlblxuICAgICAoc29tZT8gYWxpYXMpXG4gICAgIChsZXRcbiAgICAgIFthbGlhcy10eXBlXG4gICAgICAgKGlmIG1hY3Jvcz8gOm1hY3JvcyA6Zm5zKVxuICAgICAgIGxpYidcbiAgICAgICAoKGFsaWFzLXR5cGUgQGFsaWFzZXMpIGFsaWFzKV1cbiAgICAgICh3aGVuXG4gICAgICAgKGFuZCAoc29tZT8gbGliJykgKG5vdD0gbGliIGxpYicpKVxuICAgICAgICh0aHJvd1xuICAgICAgICAoZXJyb3JcbiAgICAgICAgIGVudlxuICAgICAgICAgKHBhcnNlLW5zLWVycm9yLW1zZyBzcGVjIFwiOmFzIGFsaWFzIG11c3QgYmUgdW5pcXVlXCIpKSkpXG4gICAgICAoc3dhcCFcbiAgICAgICBhbGlhc2VzXG4gICAgICAgdXBkYXRlLWluXG4gICAgICAgW2FsaWFzLXR5cGVdXG4gICAgICAgY29ualxuICAgICAgIFthbGlhcyBsaWJdXG4gICAgICAgKHdoZW4ganMtbW9kdWxlLXByb3ZpZGVzIFtqcy1tb2R1bGUtcHJvdmlkZXMgbGliXSkpKSlcbiAgICAod2hlbi1ub3RcbiAgICAgKG9yXG4gICAgICAoYW5kIChzZXF1ZW50aWFsPyByZWZlcnJlZCkgKGV2ZXJ5PyBzeW1ib2w/IHJlZmVycmVkKSlcbiAgICAgIChuaWw/IHJlZmVycmVkKSlcbiAgICAgKHRocm93XG4gICAgICAoZXJyb3JcbiAgICAgICBlbnZcbiAgICAgICAocGFyc2UtbnMtZXJyb3ItbXNnXG4gICAgICAgIHNwZWNcbiAgICAgICAgXCI6cmVmZXIgbXVzdCBiZSBmb2xsb3dlZCBieSBhIHNlcXVlbmNlIG9mIHN5bWJvbHMgaW4gOnJlcXVpcmUgLyA6cmVxdWlyZS1tYWNyb3NcIikpKSlcbiAgICAod2hlbi1ub3QgbWFjcm9zPyAoc3dhcCEgZGVwcyBjb25qIGxpYikpXG4gICAgKG1lcmdlXG4gICAgICh3aGVuXG4gICAgICAoc29tZT8gYWxpYXMpXG4gICAgICB7cmtcbiAgICAgICAobWVyZ2VcbiAgICAgICAge2FsaWFzIGxpYn1cbiAgICAgICAge2xpYiBsaWJ9XG4gICAgICAgICh3aGVuIGpzLW1vZHVsZS1wcm92aWRlcyB7anMtbW9kdWxlLXByb3ZpZGVzIGxpYn0pKX0pXG4gICAgICh3aGVuXG4gICAgICAoc29tZT8gcmVmZXJyZWQtd2l0aG91dC1yZW5hbWVkKVxuICAgICAge3VrXG4gICAgICAgKGFwcGx5XG4gICAgICAgIGhhc2gtbWFwXG4gICAgICAgIChpbnRlcmxlYXZlIHJlZmVycmVkLXdpdGhvdXQtcmVuYW1lZCAocmVwZWF0IGxpYikpKX0pXG4gICAgICh3aGVuXG4gICAgICAoc29tZT8gcmVuYW1lZClcbiAgICAgIHtyZW5rXG4gICAgICAgKHJlZHVjZVxuICAgICAgICAoZm5cbiAgICAgICAgIFttIFtvcmlnaW5hbCByZW5hbWVkXV1cbiAgICAgICAgICh3aGVuLW5vdFxuICAgICAgICAgIChzb21lICN7b3JpZ2luYWx9IHJlZmVycmVkKVxuICAgICAgICAgICh0aHJvd1xuICAgICAgICAgICAoZXJyb3JcbiAgICAgICAgICAgIGVudlxuICAgICAgICAgICAgKHN0ciBcIlJlbmFtZWQgc3ltYm9sIFwiIG9yaWdpbmFsIFwiIG5vdCByZWZlcnJlZFwiKSkpKVxuICAgICAgICAgKGFzc29jIG0gcmVuYW1lZCAoc3ltYm9sIChzdHIgbGliKSAoc3RyIG9yaWdpbmFsKSkpKVxuICAgICAgICB7fVxuICAgICAgICByZW5hbWVkKX0pKSkpKSlcbiJ9IHs6c3ltIGFuYWx5emUtd3JhcC1tZXRhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2V4cHJdKX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHl6ZS13cmFwLW1ldGFcbiBbZXhwcl1cbiAobGV0XG4gIFtmb3JtICg6Zm9ybSBleHByKSBtIChlbGlkZS1pcnJlbGV2YW50LW1ldGEgKG1ldGEgZm9ybSkpXVxuICAoaWZcbiAgIChzb21lPyAoc2VxIG0pKVxuICAgKGxldFxuICAgIFtlbnZcbiAgICAgKDplbnYgZXhwcilcbiAgICAgZXhwclxuICAgICAoYXNzb2MtaW4gZXhwciBbOmVudiA6Y29udGV4dF0gOmV4cHIpXG4gICAgIG1ldGEtZXhwclxuICAgICAoYW5hbHl6ZS1tYXAgKDplbnYgZXhwcikgbSldXG4gICAgezpvcCA6d2l0aC1tZXRhLFxuICAgICA6ZW52IGVudixcbiAgICAgOmZvcm0gZm9ybSxcbiAgICAgOm1ldGEgbWV0YS1leHByLFxuICAgICA6ZXhwciBleHByLFxuICAgICA6Y2hpbGRyZW4gWzptZXRhIDpleHByXX0pXG4gICBleHByKSkpXG4ifSB7OnN5bSBnZXQtanMtdGFnLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2Zvcm1dKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LWpzLXRhZ1xuIFtmb3JtXVxuIChsZXRcbiAgW2Zvcm0tbWV0YSAobWV0YSBmb3JtKV1cbiAgKGlmLXNvbWVcbiAgIFt0YWcgKDp0YWcgZm9ybS1tZXRhKV1cbiAgIHRhZ1xuICAgKHdoZW4gKHRydWU/ICg6bnVtZXJpYyBmb3JtLW1ldGEpKSAnbnVtYmVyKSkpKVxuIn0gezpzeW0gKmFuYWx5emUtZGVwcyosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICphbmFseXplLWRlcHMqIHRydWUpXG4ifSB7OnN5bSBhbmFseXplLWxldC1iaW5kaW5ncyosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW5jbC1lbnYgYmluZGluZ3Mgb3BdKX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHl6ZS1sZXQtYmluZGluZ3MqXG4gW2VuY2wtZW52IGJpbmRpbmdzIG9wXVxuIChsb29wXG4gIFtiZXNcbiAgIFtdXG4gICBlbnZcbiAgIChhc3NvYyBlbmNsLWVudiA6Y29udGV4dCA6ZXhwcilcbiAgIGJpbmRpbmdzXG4gICAoc2VxIChwYXJ0aXRpb24gMiBiaW5kaW5ncykpXVxuICAoaWYtc29tZVxuICAgW1tuYW1lIGluaXRdIChmaXJzdCBiaW5kaW5ncyldXG4gICAobGV0XG4gICAgW11cbiAgICAod2hlblxuICAgICAob3JcbiAgICAgIChzb21lPyAobmFtZXNwYWNlIG5hbWUpKVxuICAgICAgIz8oOmNsaiAoLmNvbnRhaW5zIChzdHIgbmFtZSkgXCIuXCIpIDpjbGpzIChnb29nLnN0cmluZy9jb250YWlucyAoc3RyIG5hbWUpIFwiLlwiKSkpXG4gICAgICh0aHJvdyAoZXJyb3IgZW5jbC1lbnYgKHN0ciBcIkludmFsaWQgbG9jYWwgbmFtZTogXCIgbmFtZSkpKSlcbiAgICAobGV0XG4gICAgIFtpbml0LWV4cHJcbiAgICAgIChhbmFseXplLWxldC1iaW5kaW5nLWluaXRcbiAgICAgICBlbnZcbiAgICAgICBpbml0XG4gICAgICAgKGNvbnMgezpwYXJhbXMgYmVzfSAqbG9vcC1sZXRzKikpXG4gICAgICBsaW5lXG4gICAgICAoZ2V0LWxpbmUgbmFtZSBlbnYpXG4gICAgICBjb2xcbiAgICAgIChnZXQtY29sIG5hbWUgZW52KVxuICAgICAgc2hhZG93XG4gICAgICAoaGFuZGxlLXN5bWJvbC1sb2NhbCBuYW1lIChnZXQtaW4gZW52IFs6bG9jYWxzIG5hbWVdKSlcbiAgICAgIGJlXG4gICAgICB7OmNoaWxkcmVuIFs6aW5pdF0sXG4gICAgICAgOmluaXQgaW5pdC1leHByLFxuICAgICAgIDpuYW1lIG5hbWUsXG4gICAgICAgOmJpbmRpbmctZm9ybT8gdHJ1ZSxcbiAgICAgICA6b3AgOmJpbmRpbmcsXG4gICAgICAgOmVudiB7OmxpbmUgbGluZSwgOmNvbHVtbiBjb2x9LFxuICAgICAgIDpjb2x1bW4gY29sLFxuICAgICAgIDpsaW5lIGxpbmUsXG4gICAgICAgOmluZm8gezpuYW1lIG5hbWUsIDpzaGFkb3cgc2hhZG93fSxcbiAgICAgICA6dGFnIChnZXQtbGV0LXRhZyBuYW1lIGluaXQtZXhwciksXG4gICAgICAgOnNoYWRvdyBzaGFkb3csXG4gICAgICAgOmxvY2FsIG9wfVxuICAgICAgYmVcbiAgICAgIChpZlxuICAgICAgICg9IDpmbiAoOm9wIGluaXQtZXhwcikpXG4gICAgICAgKG1lcmdlXG4gICAgICAgIGJlXG4gICAgICAgIHs6Zm4tdmFyIHRydWUsXG4gICAgICAgICA6bWV0aG9kc1xuICAgICAgICAgKGludG9cbiAgICAgICAgICBbXVxuICAgICAgICAgIChtYXBcbiAgICAgICAgICAgKGZuKlxuICAgICAgICAgICAgW3AxX180NTA4NiNdXG4gICAgICAgICAgICAoc2VsZWN0LWtleXMgcDFfXzQ1MDg2IyBbOnRhZyA6Zml4ZWQtYXJpdHkgOnZhcmlhZGljP10pKVxuICAgICAgICAgICAoOm1ldGhvZHMgaW5pdC1leHByKSkpLFxuICAgICAgICAgOnZhcmlhZGljPyAoOnZhcmlhZGljPyBpbml0LWV4cHIpLFxuICAgICAgICAgOm1heC1maXhlZC1hcml0eSAoOm1heC1maXhlZC1hcml0eSBpbml0LWV4cHIpLFxuICAgICAgICAgOm1ldGhvZC1wYXJhbXMgKG1hcCA6cGFyYW1zICg6bWV0aG9kcyBpbml0LWV4cHIpKX0pXG4gICAgICAgYmUpXVxuICAgICAocmVjdXJcbiAgICAgIChjb25qIGJlcyBiZSlcbiAgICAgIChhc3NvYy1pbiBlbnYgWzpsb2NhbHMgbmFtZV0gYmUpXG4gICAgICAobmV4dCBiaW5kaW5ncykpKSlcbiAgIFtiZXMgZW52XSkpKVxuIn0gezpzeW0gcmVzb2x2ZS1pbXBvcnQsIDptZXRhIHs6ZG9jICJnb29nLm1vZHVsZXMgYXJlIGRldGVybWluaXN0aWNhbGx5IGFzc2lnbmVkIHRvIGEgcHJvcGVydHkgb2YgdGhlIG5hbWVzcGFjZSxcbiAgIHdlIGNhbm5vdCBleHBlY3QgdGhlIHJlZmVyZW5jZSB3aWxsIGJlIGdsb2JhbGx5IGF2YWlsYWJsZSwgc28gd2UgcmVzb2x2ZSB0b1xuICAgbmFtZXNwYWNlIGxvY2FsIHJlZmVyZW5jZS4iLCA6YXJnbGlzdHMgKFtlbnYgaW1wb3J0XSl9LCA6c291cmNlICIoZGVmblxuIHJlc29sdmUtaW1wb3J0XG4gXCJnb29nLm1vZHVsZXMgYXJlIGRldGVybWluaXN0aWNhbGx5IGFzc2lnbmVkIHRvIGEgcHJvcGVydHkgb2YgdGhlIG5hbWVzcGFjZSxcXG4gICB3ZSBjYW5ub3QgZXhwZWN0IHRoZSByZWZlcmVuY2Ugd2lsbCBiZSBnbG9iYWxseSBhdmFpbGFibGUsIHNvIHdlIHJlc29sdmUgdG9cXG4gICBuYW1lc3BhY2UgbG9jYWwgcmVmZXJlbmNlLlwiXG4gW2VudiBpbXBvcnRdXG4gKGlmXG4gIChnb29nLW1vZHVsZS1kZXA/IGltcG9ydClcbiAgKHN5bWJvbCAobXVuZ2UtZ29vZy1tb2R1bGUtbGliICgtPiBlbnYgOm5zIDpuYW1lKSBpbXBvcnQpKVxuICBpbXBvcnQpKVxuIn0gezpzeW0gYW5hbHlzaXMtZXJyb3I/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2V4XSl9LCA6c291cmNlICIoZGVmblxuIGFuYWx5c2lzLWVycm9yP1xuICM/KDpjbGpzIHs6dGFnIGJvb2xlYW59KVxuIFtleF1cbiAoPSA6Y2xqcy9hbmFseXNpcy1lcnJvciAoOnRhZyAoZXgtZGF0YSBleCkpKSlcbiJ9IHs6c3ltIHJlcGxhY2UtZW52LXBhc3MsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbmV3LWVudl0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZXBsYWNlLWVudi1wYXNzXG4gW25ldy1lbnZdXG4gKGZuIFtlbnYgYXN0IG9wdHNdIChhc3NvYyBhc3QgOmVudiBuZXctZW52KSkpXG4ifSB7OnN5bSBwYXJzZS1ucy1leGNsdWRlcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgYXJnc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBwYXJzZS1ucy1leGNsdWRlc1xuIFtlbnYgYXJnc11cbiAocmVkdWNlXG4gIChmblxuICAgW3MgW2sgJiBmaWx0ZXJzXV1cbiAgIChpZlxuICAgICg9IGsgOnJlZmVyLWNsb2p1cmUpXG4gICAgKGRvXG4gICAgICh3aGVuXG4gICAgICAoc2VxICg6ZXhjbHVkZXMgcykpXG4gICAgICAodGhyb3dcbiAgICAgICAoZXJyb3JcbiAgICAgICAgZW52XG4gICAgICAgIFwiT25seSBvbmUgOnJlZmVyLWNsb2p1cmUgZm9ybSBpcyBhbGxvd2VkIHBlciBuYW1lc3BhY2UgZGVmaW5pdGlvblwiKSkpXG4gICAgIChsZXRcbiAgICAgIFt2YWxpZC1rd3NcbiAgICAgICAjezpleGNsdWRlIDpyZW5hbWV9XG4gICAgICAgeHNcbiAgICAgICAobG9vcFxuICAgICAgICBbZnNcbiAgICAgICAgIChzZXEgZmlsdGVycylcbiAgICAgICAgIHJldFxuICAgICAgICAgezpleGNsdWRlcyAje30sIDpyZW5hbWVzIHt9fVxuICAgICAgICAgZXJyXG4gICAgICAgICAobm90IChldmVuPyAoY291bnQgZmlsdGVycykpKV1cbiAgICAgICAgKGNvbmRcbiAgICAgICAgICh0cnVlPyBlcnIpXG4gICAgICAgICAodGhyb3dcbiAgICAgICAgICAoZXJyb3JcbiAgICAgICAgICAgZW52XG4gICAgICAgICAgIFwiT25seSBbOnJlZmVyLWNsb2p1cmUgOmV4Y2x1ZGUgKG5hbWVzKV0gYW5kIG9wdGlvbmFsbHkgYDpyZW5hbWUge2Zyb20gdG99YCBzcGVjcyBzdXBwb3J0ZWRcIikpXG4gICAgICAgICAoc29tZT8gZnMpXG4gICAgICAgICAobGV0XG4gICAgICAgICAgW2t3IChmaXJzdCBmcyldXG4gICAgICAgICAgKGlmXG4gICAgICAgICAgICh2YWxpZC1rd3Mga3cpXG4gICAgICAgICAgIChsZXRcbiAgICAgICAgICAgIFtyZWZzIChzZWNvbmQgZnMpXVxuICAgICAgICAgICAgKGNvbmRcbiAgICAgICAgICAgICAobm90XG4gICAgICAgICAgICAgIChvclxuICAgICAgICAgICAgICAgKGFuZFxuICAgICAgICAgICAgICAgICg9IGt3IDpleGNsdWRlKVxuICAgICAgICAgICAgICAgIChzZXF1ZW50aWFsPyByZWZzKVxuICAgICAgICAgICAgICAgIChldmVyeT8gc3ltYm9sPyByZWZzKSlcbiAgICAgICAgICAgICAgIChhbmRcbiAgICAgICAgICAgICAgICAoPSBrdyA6cmVuYW1lKVxuICAgICAgICAgICAgICAgIChtYXA/IHJlZnMpXG4gICAgICAgICAgICAgICAgKGV2ZXJ5P1xuICAgICAgICAgICAgICAgICAoZm4qIFtwMV9fNDUwOTYjXSAoZXZlcnk/IHN5bWJvbD8gcDFfXzQ1MDk2IykpXG4gICAgICAgICAgICAgICAgIHJlZnMpKSkpXG4gICAgICAgICAgICAgKHJlY3VyIGZzIHJldCB0cnVlKVxuICAgICAgICAgICAgICg9IGt3IDpleGNsdWRlKVxuICAgICAgICAgICAgIChyZWN1clxuICAgICAgICAgICAgICAobm5leHQgZnMpXG4gICAgICAgICAgICAgICh1cGRhdGUtaW4gcmV0IFs6ZXhjbHVkZXNdIGludG8gcmVmcylcbiAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgKD0ga3cgOnJlbmFtZSlcbiAgICAgICAgICAgICAocmVjdXJcbiAgICAgICAgICAgICAgKG5uZXh0IGZzKVxuICAgICAgICAgICAgICAodXBkYXRlLWluIHJldCBbOnJlbmFtZXNdIG1lcmdlIHJlZnMpXG4gICAgICAgICAgICAgIGZhbHNlKSkpXG4gICAgICAgICAgIChyZWN1ciBmcyByZXQgdHJ1ZSkpKVxuICAgICAgICAgOmVsc2VcbiAgICAgICAgIHJldCkpXVxuICAgICAgKG1lcmdlLXdpdGggaW50byBzIHhzKSkpXG4gICAgcykpXG4gIHs6ZXhjbHVkZXMgI3t9LCA6cmVuYW1lcyB7fX1cbiAgYXJncykpXG4ifSB7OnN5bSBhbmFseXplLWZuLW1ldGhvZHMtcGFzczIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbWVudiBsb2NhbHMgdHlwZSBtZXRoc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLWZuLW1ldGhvZHMtcGFzczJcbiBbbWVudiBsb2NhbHMgdHlwZSBtZXRoc11cbiAoYW5hbHl6ZS1mbi1tZXRob2RzLXBhc3MyKiBtZW52IGxvY2FscyB0eXBlIG1ldGhzKSlcbiJ9IHs6c3ltIGNvcmUtbmFtZT8sIDptZXRhIHs6ZG9jICJJcyBzeW0gdmlzaWJsZSBmcm9tIGNvcmUgaW4gdGhlIGN1cnJlbnQgY29tcGlsYXRpb24gbmFtZXNwYWNlPyIsIDphcmdsaXN0cyAoW2VudiBzeW1dKX0sIDpzb3VyY2UgIihkZWZuXG4gY29yZS1uYW1lP1xuIFwiSXMgc3ltIHZpc2libGUgZnJvbSBjb3JlIGluIHRoZSBjdXJyZW50IGNvbXBpbGF0aW9uIG5hbWVzcGFjZT9cIlxuICM/KDpjbGpzIHs6dGFnIGJvb2xlYW59KVxuIFtlbnYgc3ltXVxuIChhbmRcbiAgKG9yXG4gICAoc29tZT9cbiAgICAoZ2V0c1xuICAgICBAZW52Lypjb21waWxlcipcbiAgICAgOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlc1xuICAgICAnY2xqcy5jb3JlXG4gICAgIDpkZWZzXG4gICAgIHN5bSkpXG4gICAoaWYtc29tZVxuICAgIFttYWMgKGdldC1leHBhbmRlciBzeW0gZW52KV1cbiAgICAobGV0XG4gICAgIFtucyAoLT4gbWFjIG1ldGEgOm5zKV1cbiAgICAgKD1cbiAgICAgICguZ2V0TmFtZSBucylcbiAgICAgICM/KDpjbGogKHF1b3RlIGNsanMuY29yZSkgOmNsanMgKHF1b3RlIGNsanMuY29yZSRtYWNyb3MpKSkpXG4gICAgZmFsc2UpKVxuICAobm90IChjb250YWlucz8gKC0+IGVudiA6bnMgOmV4Y2x1ZGVzKSBzeW0pKSkpXG4ifSB7OnN5bSBnZXQtbGV0LXRhZywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtuYW1lIGluaXQtZXhwcl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtbGV0LXRhZ1xuIFtuYW1lIGluaXQtZXhwcl1cbiAoaWYtc29tZVxuICBbdGFnICgtPiBuYW1lIG1ldGEgOnRhZyldXG4gIHRhZ1xuICAoaWYtc29tZSBbdGFnICgtPiBpbml0LWV4cHIgOnRhZyldIHRhZyAoLT4gaW5pdC1leHByIDppbmZvIDp0YWcpKSkpXG4ifSB7OnN5bSBzcGVjaWFscywgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBzcGVjaWFsc1xuICcjeyZcbiAgICBjYXNlKlxuICAgIGRlZnJlY29yZCpcbiAgICB0cnlcbiAgICBucypcbiAgICBsb29wKlxuICAgIGRvXG4gICAgbGV0Zm4qXG4gICAgaWZcbiAgICBuZXdcbiAgICBuc1xuICAgIGRlZnR5cGUqXG4gICAgbGV0KlxuICAgIGpzKlxuICAgIGZuKlxuICAgIHJlY3VyXG4gICAgc2V0IVxuICAgIC5cbiAgICB2YXJcbiAgICBxdW90ZVxuICAgIHRocm93XG4gICAgZGVmfSlcbiJ9IHs6c3ltIGVsaWRlLWlycmVsZXZhbnQtbWV0YSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttXSl9LCA6c291cmNlICIoZGVmblxuIGVsaWRlLWlycmVsZXZhbnQtbWV0YVxuIFttXVxuICgtPiBtIGVsaWRlLXJlYWRlci1tZXRhIGVsaWRlLWFuYWx5emVyLW1ldGEpKVxuIn0gezpzeW0gcmVzb2x2ZS1tYWNyby1ucy1hbGlhcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1tlbnYgbmFtZV0gW2VudiBuYW1lIG5vdC1mb3VuZF1dfSwgOnNvdXJjZSAiKGRlZm5cbiByZXNvbHZlLW1hY3JvLW5zLWFsaWFzXG4gKFtlbnYgbmFtZV0gKHJlc29sdmUtbWFjcm8tbnMtYWxpYXMgZW52IG5hbWUgKHN5bWJvbCBuYW1lKSkpXG4gKFtlbnYgbmFtZSBub3QtZm91bmRdXG4gIChsZXRcbiAgIFtzeW0gKHN5bWJvbCBuYW1lKV1cbiAgIChnZXQgKDpyZXF1aXJlLW1hY3JvcyAoOm5zIGVudikpIHN5bSBub3QtZm91bmQpKSkpXG4ifSB7OnN5bSBjaGVjay1pbnZva2UtYXJnLXR5cGVzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiB7OmtleXMgW29wXSwgOmFzIGFzdH0gb3B0c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBjaGVjay1pbnZva2UtYXJnLXR5cGVzXG4gW2VudiB7OmtleXMgW29wXSwgOmFzIGFzdH0gb3B0c11cbiAod2hlblxuICAoYW5kXG4gICAobm90IChhbmFseXplZD8gYXN0KSlcbiAgICM/KDpjbGogKD0gOmludm9rZSBvcCkgOmNsanMgKGtleXdvcmQtaWRlbnRpY2FsPyA6aW52b2tlIG9wKSkpXG4gICh3aGVuLXNvbWVcbiAgIFtbbmFtZSB7OmtleXMgW3ZhbGlkPyB3YXJuaW5nLXR5cGVdfV1cbiAgICAoZmluZCBpbnZva2UtYXJnLXR5cGUtdmFsaWRhdG9ycyAoLT4gYXN0IDpmbiA6aW5mbyA6bmFtZSkpXVxuICAgKGxldFxuICAgIFt0eXBlcyAobWFwdiA6dGFnICg6YXJncyBhc3QpKV1cbiAgICAod2hlbi1ub3RcbiAgICAgKHZhbGlkPyB0eXBlcylcbiAgICAgKHdhcm5pbmcgd2FybmluZy10eXBlIGVudiB7Om5hbWUgbmFtZSwgOnR5cGVzIHR5cGVzfSkpKSkpXG4gKGFuYWx5emVkIGFzdCkpXG4ifSB7OnN5bSBjb25maXJtLW5zLCA6bWV0YSB7OmRvYyAiR2l2ZW4gZW52LCBhbiBhbmFseXNpcyBlbnZpcm9ubWVudCwgYW5kIG5zLXN5bSwgYSBzeW1ib2wgaWRlbnRpZnlpbmcgYVxuICAgbmFtZXNwYWNlLCBjb25maXJtIHRoYXQgdGhlIG5hbWVzcGFjZSBleGlzdHMuIFdhcm4gaWYgbm90IGZvdW5kLiIsIDphcmdsaXN0cyAoW2VudiBucy1zeW1dKX0sIDpzb3VyY2UgIihkZWZuXG4gY29uZmlybS1uc1xuIFwiR2l2ZW4gZW52LCBhbiBhbmFseXNpcyBlbnZpcm9ubWVudCwgYW5kIG5zLXN5bSwgYSBzeW1ib2wgaWRlbnRpZnlpbmcgYVxcbiAgIG5hbWVzcGFjZSwgY29uZmlybSB0aGF0IHRoZSBuYW1lc3BhY2UgZXhpc3RzLiBXYXJuIGlmIG5vdCBmb3VuZC5cIlxuIFtlbnYgbnMtc3ltXVxuICh3aGVuXG4gIChhbmRcbiAgIChub3Q9ICdjbGpzLmNvcmUgbnMtc3ltKVxuICAgKG5pbD8gKGdldCBpbXBsaWNpdC1uc2VzIG5zLXN5bSkpXG4gICAobmlsPyAoZ2V0ICgtPiBlbnYgOm5zIDpyZXF1aXJlcykgbnMtc3ltKSlcbiAgIChuaWw/IChnZXRzIEBlbnYvKmNvbXBpbGVyKiA6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzIG5zLXN5bSkpXG4gICAjPyg6Y2xqIChuaWw/ICh1dGlsL25zLT5zb3VyY2UgbnMtc3ltKSkpXG4gICAobm90IChqcy1tb2R1bGUtZXhpc3RzPyBucy1zeW0pKSlcbiAgKHdhcm5pbmcgOnVuZGVjbGFyZWQtbnMgZW52IHs6bnMtc3ltIG5zLXN5bSwgOmpzLXByb3ZpZGUgbnMtc3ltfSkpKVxuIn0gezpzeW0gZGVmYXVsdC1uYW1lc3BhY2VzLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIGRlZmF1bHQtbmFtZXNwYWNlc1xuICd7Y2xqcy5jb3JlIHs6bmFtZSBjbGpzLmNvcmV9LCBjbGpzLnVzZXIgezpuYW1lIGNsanMudXNlcn19KVxuIn0gezpzeW0gY2Fub25pY2FsaXplLXNwZWNzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NwZWNzXSl9LCA6c291cmNlICIoZGVmblxuIGNhbm9uaWNhbGl6ZS1zcGVjc1xuIFtzcGVjc11cbiAobGV0Zm5cbiAgWyhjYW5vbmljYWxpemVcbiAgICBbcXVvdGVkLXNwZWMtb3Ita3ddXG4gICAgKGlmXG4gICAgIChrZXl3b3JkPyBxdW90ZWQtc3BlYy1vci1rdylcbiAgICAgcXVvdGVkLXNwZWMtb3Ita3dcbiAgICAgKGFzLT5cbiAgICAgIChzZWNvbmQgcXVvdGVkLXNwZWMtb3Ita3cpXG4gICAgICBzcGVjXG4gICAgICAoaWYgKG9yICh2ZWN0b3I/IHNwZWMpIChtYXA/IHNwZWMpKSBzcGVjIFtzcGVjXSkpKSldXG4gIChtYXAgY2Fub25pY2FsaXplIHNwZWNzKSkpXG4ifSB7OnN5bSBjb25maXJtLXZhci1leGlzdHMtdGhyb3csIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIGNvbmZpcm0tdmFyLWV4aXN0cy10aHJvd1xuIFtdXG4gKGZuXG4gIFtlbnYgcHJlZml4IHN1ZmZpeF1cbiAgKGNvbmZpcm0tdmFyLWV4aXN0c1xuICAgZW52XG4gICBwcmVmaXhcbiAgIHN1ZmZpeFxuICAgKGZuXG4gICAgW2VudiBwcmVmaXggc3VmZml4XVxuICAgICh0aHJvd1xuICAgICAoZXJyb3JcbiAgICAgIGVudlxuICAgICAgKHN0ciBcIlVuYWJsZSB0byByZXNvbHZlIHZhcjogXCIgc3VmZml4IFwiIGluIHRoaXMgY29udGV4dFwiKSkpKSkpKVxuIn0gezpzeW0ganMtbW9kdWxlLWV4aXN0cz8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbW9kdWxlXSl9LCA6c291cmNlICIoZGVmblxuIGpzLW1vZHVsZS1leGlzdHM/XG4gW21vZHVsZV1cbiAoanMtbW9kdWxlLWV4aXN0cz8qXG4gIChnZXQtaW4gQGVudi8qY29tcGlsZXIqIFs6anMtbW9kdWxlLWluZGV4XSlcbiAgbW9kdWxlKSlcbiJ9IHs6c3ltIHZhci1hc3QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IHN5bV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB2YXItYXN0XG4gW2VudiBzeW1dXG4gKGJpbmRpbmdcbiAgWypwcml2YXRlLXZhci1hY2Nlc3Mtbm93YXJuKiB0cnVlXVxuICAobGV0XG4gICBbZW52XG4gICAgKGRpc3NvYyBlbnYgOmxvY2FscylcbiAgICB2YXJcbiAgICAocmVzb2x2ZS12YXIgZW52IHN5bSAoY29uZmlybS12YXItZXhpc3RzLXRocm93KSlcbiAgICBleHByLWVudlxuICAgIChhc3NvYyBlbnYgOmNvbnRleHQgOmV4cHIpXVxuICAgKHdoZW4tc29tZVxuICAgIFt2YXItbnMgKDpucyB2YXIpXVxuICAgIHs6dmFyIChhbmFseXplIGV4cHItZW52IHN5bSksXG4gICAgIDpzeW1cbiAgICAgKGFuYWx5emVcbiAgICAgIGV4cHItZW52XG4gICAgICAoY2xvanVyZS5jb3JlL3NlcXVlbmNlXG4gICAgICAgKGNsb2p1cmUuY29yZS9zZXFcbiAgICAgICAgKGNsb2p1cmUuY29yZS9jb25jYXRcbiAgICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCAncXVvdGUpXG4gICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3RcbiAgICAgICAgICAoc3ltYm9sIChuYW1lIHZhci1ucykgKG5hbWUgKDpuYW1lIHZhcikpKSkpKSkpLFxuICAgICA6bWV0YSAodmFyLW1ldGEgdmFyIGV4cHItZW52KX0pKSkpXG4ifSB7OnN5bSBhZGQtY29uc3RzLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBjb21waWxlciBzdGF0ZSBhbmQgYSBtYXAgZnJvbSBmdWxseSBxdWFsaWZpZWQgc3ltYm9scyB0byBjb25zdGFudFxuICBFRE4gdmFsdWVzLCB1cGRhdGUgdGhlIGNvbXBpbGVyIHN0YXRlIG1hcmtpbmcgdGhlc2UgdmFycyBhcyBjb25zdCB0byBzdXBwb3J0XG4gIGRpcmVjdCBzdWJzdGl0dXRpb24gb2YgdGhlc2UgdmFycyBpbiBzb3VyY2UuIiwgOmFyZ2xpc3RzIChbY29tcGlsZXItc3RhdGUgY29uc3RhbnRzLW1hcF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhZGQtY29uc3RzXG4gXCJHaXZlbiBhIGNvbXBpbGVyIHN0YXRlIGFuZCBhIG1hcCBmcm9tIGZ1bGx5IHF1YWxpZmllZCBzeW1ib2xzIHRvIGNvbnN0YW50XFxuICBFRE4gdmFsdWVzLCB1cGRhdGUgdGhlIGNvbXBpbGVyIHN0YXRlIG1hcmtpbmcgdGhlc2UgdmFycyBhcyBjb25zdCB0byBzdXBwb3J0XFxuICBkaXJlY3Qgc3Vic3RpdHV0aW9uIG9mIHRoZXNlIHZhcnMgaW4gc291cmNlLlwiXG4gW2NvbXBpbGVyLXN0YXRlIGNvbnN0YW50cy1tYXBdXG4gKHJlZHVjZS1rdlxuICAoZm5cbiAgIFtjb21waWxlci1zdGF0ZSBzeW0gdmFsdWVdXG4gICAobGV0XG4gICAgW25zIChzeW1ib2wgKG5hbWVzcGFjZSBzeW0pKV1cbiAgICAodXBkYXRlLWluXG4gICAgIGNvbXBpbGVyLXN0YXRlXG4gICAgIFs6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzIG5zIDpkZWZzIChzeW1ib2wgKG5hbWUgc3ltKSldXG4gICAgIG1lcmdlXG4gICAgIHs6Y29uc3QtZXhwclxuICAgICAgKGJpbmRpbmdcbiAgICAgICBbKnBhc3NlcyogKGNvbmogKnBhc3NlcyogKHJlcGxhY2UtZW52LXBhc3Mgezpjb250ZXh0IDpleHByfSkpXVxuICAgICAgIChhbmFseXplIChlbXB0eS1lbnYpIHZhbHVlKSl9KSkpXG4gIGNvbXBpbGVyLXN0YXRlXG4gIGNvbnN0YW50cy1tYXApKVxuIn0gezpzeW0gZXJyb3IsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbZW52IG1zZ10gW2VudiBtc2cgY2F1c2VdXX0sIDpzb3VyY2UgIihkZWZuXG4gZXJyb3JcbiAoW2VudiBtc2ddIChlcnJvciBlbnYgbXNnIG5pbCkpXG4gKFtlbnYgbXNnIGNhdXNlXVxuICAoZXgtaW5mb1xuICAgKG1lc3NhZ2UgZW52IG1zZylcbiAgIChhc3NvYyAoc291cmNlLWluZm8gZW52KSA6dGFnIDpjbGpzL2FuYWx5c2lzLWVycm9yKVxuICAgY2F1c2UpKSlcbiJ9IHs6c3ltIGludm9rZWFibGUtbnM/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIG5zIGlzIGEgcmVxdWlyZWQgbmFtZXNwYWNlIGFuZCBhIEphdmFTY3JpcHQgbW9kdWxlIHRoYXRcbiAgIG1pZ2h0IGJlIGludm9rZWFibGUgYXMgYSBmdW5jdGlvbi4iLCA6YXJnbGlzdHMgKFtucyBlbnZdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW52b2tlYWJsZS1ucz9cbiBcIlJldHVybnMgdHJ1ZSBpZiBucyBpcyBhIHJlcXVpcmVkIG5hbWVzcGFjZSBhbmQgYSBKYXZhU2NyaXB0IG1vZHVsZSB0aGF0XFxuICAgbWlnaHQgYmUgaW52b2tlYWJsZSBhcyBhIGZ1bmN0aW9uLlwiXG4gW25zIGVudl1cbiAobGV0XG4gIFtucyAocmVzb2x2ZS1ucy1hbGlhcyBlbnYgbnMpXVxuICAoYW5kXG4gICAocmVxdWlyZWQ/IG5zIGVudilcbiAgIChvclxuICAgIChqcy1tb2R1bGUtZXhpc3RzPyBucylcbiAgICAobm9kZS1tb2R1bGUtZGVwPyBucylcbiAgICAoZGVwLWhhcy1nbG9iYWwtZXhwb3J0cz8gbnMpKSkpKVxuIn0gezpzeW0gKmNsanMtbnMqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqY2xqcy1ucyogJ2NsanMudXNlcilcbiJ9KSwgb2FrY2xqcy50b29scy5yZWFkZXIucmVhZGVyLXR5cGVzICh7OnN5bSBpbmRleGluZy1wdXNoLWJhY2stcmVhZGVyLCA6bWV0YSB7OmRvYyAiQ3JlYXRlcyBhbiBJbmRleGluZ1B1c2hiYWNrUmVhZGVyIGZyb20gYSBnaXZlbiBzdHJpbmcgb3IgUHVzaGJhY2tSZWFkZXIiLCA6YXJnbGlzdHMgW1tzLW9yLXJkcl0gW3Mtb3ItcmRyIGJ1Zi1sZW5dIFtzLW9yLXJkciBidWYtbGVuIGZpbGUtbmFtZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBpbmRleGluZy1wdXNoLWJhY2stcmVhZGVyXG4gXCJDcmVhdGVzIGFuIEluZGV4aW5nUHVzaGJhY2tSZWFkZXIgZnJvbSBhIGdpdmVuIHN0cmluZyBvciBQdXNoYmFja1JlYWRlclwiXG4gKFtzLW9yLXJkcl0gKGluZGV4aW5nLXB1c2gtYmFjay1yZWFkZXIgcy1vci1yZHIgMSkpXG4gKFtzLW9yLXJkciBidWYtbGVuXSAoaW5kZXhpbmctcHVzaC1iYWNrLXJlYWRlciBzLW9yLXJkciBidWYtbGVuIG5pbCkpXG4gKFtzLW9yLXJkciBidWYtbGVuIGZpbGUtbmFtZV1cbiAgKEluZGV4aW5nUHVzaGJhY2tSZWFkZXIuXG4gICAoaWZcbiAgICAoc3RyaW5nPyBzLW9yLXJkcilcbiAgICAoc3RyaW5nLXB1c2gtYmFjay1yZWFkZXIgcy1vci1yZHIgYnVmLWxlbilcbiAgICBzLW9yLXJkcilcbiAgIDFcbiAgIDFcbiAgIHRydWVcbiAgIG5pbFxuICAgMFxuICAgZmlsZS1uYW1lKSkpXG4ifSB7OnN5bSBsb2ctc291cmNlKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZWFkZXIgZl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBsb2ctc291cmNlKlxuIFtyZWFkZXIgZl1cbiAobGV0XG4gIFtidWZmZXIgKDpidWZmZXIgQCguLWZyYW1lcyByZWFkZXIpKV1cbiAgKHRyeVxuICAgKHN3YXAhXG4gICAgKC4tZnJhbWVzIHJlYWRlcilcbiAgICB1cGRhdGUtaW5cbiAgICBbOm9mZnNldF1cbiAgICBjb25qXG4gICAgKC5nZXRMZW5ndGggYnVmZmVyKSlcbiAgIChsZXRcbiAgICBbcmV0IChmKV1cbiAgICAoaWZcbiAgICAgKGltcGxlbWVudHM/IElNZXRhIHJldClcbiAgICAgKG1lcmdlLW1ldGEgcmV0IHs6c291cmNlIChwZWVrLXNvdXJjZS1sb2cgQCguLWZyYW1lcyByZWFkZXIpKX0pXG4gICAgIHJldCkpXG4gICAoZmluYWxseSAoc3dhcCEgKC4tZnJhbWVzIHJlYWRlcikgdXBkYXRlLWluIFs6b2Zmc2V0XSByZXN0KSkpKSlcbiJ9IHs6c3ltIG1lcmdlLW1ldGEsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGFuIG9iamVjdCBvZiB0aGUgc2FtZSB0eXBlIGFuZCB2YWx1ZSBhcyBgb2JqYCwgd2l0aCBpdHNcbm1ldGFkYXRhIG1lcmdlZCBvdmVyIGBtYC4iLCA6YXJnbGlzdHMgKFtvYmogbV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtZXJnZS1tZXRhXG4gXCJSZXR1cm5zIGFuIG9iamVjdCBvZiB0aGUgc2FtZSB0eXBlIGFuZCB2YWx1ZSBhcyBgb2JqYCwgd2l0aCBpdHNcXG5tZXRhZGF0YSBtZXJnZWQgb3ZlciBgbWAuXCJcbiBbb2JqIG1dXG4gKGxldFxuICBbb3JpZy1tZXRhIChtZXRhIG9iaildXG4gICh3aXRoLW1ldGEgb2JqIChtZXJnZSBtIChkaXNzb2Mgb3JpZy1tZXRhIDpzb3VyY2UpKSkpKVxuIn0gezpzeW0gUmVhZGVyLCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAocGVlay1jaGFyIHJlYWQtY2hhcil9IHs6c3ltIHNvdXJjZS1sb2dnaW5nLXB1c2gtYmFjay1yZWFkZXIsIDptZXRhIHs6ZG9jICJDcmVhdGVzIGEgU291cmNlTG9nZ2luZ1B1c2hiYWNrUmVhZGVyIGZyb20gYSBnaXZlbiBzdHJpbmcgb3IgUHVzaGJhY2tSZWFkZXIiLCA6YXJnbGlzdHMgW1tzLW9yLXJkcl0gW3Mtb3ItcmRyIGJ1Zi1sZW5dIFtzLW9yLXJkciBidWYtbGVuIGZpbGUtbmFtZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBzb3VyY2UtbG9nZ2luZy1wdXNoLWJhY2stcmVhZGVyXG4gXCJDcmVhdGVzIGEgU291cmNlTG9nZ2luZ1B1c2hiYWNrUmVhZGVyIGZyb20gYSBnaXZlbiBzdHJpbmcgb3IgUHVzaGJhY2tSZWFkZXJcIlxuIChbcy1vci1yZHJdIChzb3VyY2UtbG9nZ2luZy1wdXNoLWJhY2stcmVhZGVyIHMtb3ItcmRyIDEpKVxuIChbcy1vci1yZHIgYnVmLWxlbl1cbiAgKHNvdXJjZS1sb2dnaW5nLXB1c2gtYmFjay1yZWFkZXIgcy1vci1yZHIgYnVmLWxlbiBuaWwpKVxuIChbcy1vci1yZHIgYnVmLWxlbiBmaWxlLW5hbWVdXG4gIChTb3VyY2VMb2dnaW5nUHVzaGJhY2tSZWFkZXIuXG4gICAoaWZcbiAgICAoc3RyaW5nPyBzLW9yLXJkcilcbiAgICAoc3RyaW5nLXB1c2gtYmFjay1yZWFkZXIgcy1vci1yZHIgYnVmLWxlbilcbiAgICBzLW9yLXJkcilcbiAgIDFcbiAgIDFcbiAgIHRydWVcbiAgIG5pbFxuICAgMFxuICAgZmlsZS1uYW1lXG4gICAoYXRvbSB7OmJ1ZmZlciAoU3RyaW5nQnVmZmVyLiksIDpvZmZzZXQgJygwKX0pKSkpXG4ifSB7OnN5bSB1bnJlYWQsIDptZXRhIHs6ZG9jICJQdXNoZXMgYmFjayBhIHNpbmdsZSBjaGFyYWN0ZXIgb24gdG8gdGhlIHN0cmVhbSIsIDphcmdsaXN0cyAoW3JlYWRlciBjaF0pfSwgOnByb3RvY29sIElQdXNoYmFja1JlYWRlcn0gezpzeW0gcGVlay1jaGFyLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbmV4dCBjaGFyIGZyb20gdGhlIFJlYWRlciB3aXRob3V0IHJlbW92aW5nIGl0IGZyb20gdGhlIHJlYWRlciBzdHJlYW0iLCA6YXJnbGlzdHMgKFtyZWFkZXJdKX0sIDpwcm90b2NvbCBSZWFkZXJ9IHs6c3ltIElQdXNoYmFja1JlYWRlciwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKHVucmVhZCl9IHs6c3ltIGluZGV4aW5nLXJlYWRlcj8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgdGhlIHJlYWRlciBzYXRpc2ZpZXMgSW5kZXhpbmdSZWFkZXIiLCA6YXJnbGlzdHMgKFtyZHJdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5kZXhpbmctcmVhZGVyP1xuIFwiUmV0dXJucyB0cnVlIGlmIHRoZSByZWFkZXIgc2F0aXNmaWVzIEluZGV4aW5nUmVhZGVyXCJcbiBbcmRyXVxuIChpbXBsZW1lbnRzPyBJbmRleGluZ1JlYWRlciByZHIpKVxuIn0gezpzeW0gc3RyaW5nLXJlYWRlciwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYSBTdHJpbmdSZWFkZXIgZnJvbSBhIGdpdmVuIHN0cmluZyIsIDphcmdsaXN0cyBbW3NdXX0sIDpzb3VyY2UgIihkZWZuXG4gc3RyaW5nLXJlYWRlclxuIFwiQ3JlYXRlcyBhIFN0cmluZ1JlYWRlciBmcm9tIGEgZ2l2ZW4gc3RyaW5nXCJcbiAoW3NdIChTdHJpbmdSZWFkZXIuIHMgKGNvdW50IHMpIDApKSlcbiJ9IHs6c3ltIHJlYWQtY2hhciwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG5leHQgY2hhciBmcm9tIHRoZSBSZWFkZXIsIG5pbCBpZiB0aGUgZW5kIG9mIHN0cmVhbSBoYXMgYmVlbiByZWFjaGVkIiwgOmFyZ2xpc3RzIChbcmVhZGVyXSl9LCA6cHJvdG9jb2wgUmVhZGVyfSB7OnN5bSBnZXQtY29sdW1uLW51bWJlciwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGNvbHVtbiBudW1iZXIgb2YgdGhlIG5leHQgY2hhcmFjdGVyIHRvIGJlIHJlYWQgZnJvbSB0aGUgc3RyZWFtIiwgOmFyZ2xpc3RzIChbcmVhZGVyXSl9LCA6cHJvdG9jb2wgSW5kZXhpbmdSZWFkZXJ9IHs6c3ltIGdldC1maWxlLW5hbWUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBmaWxlIG5hbWUgdGhlIHJlYWRlciBpcyByZWFkaW5nIGZyb20sIG9yIG5pbCIsIDphcmdsaXN0cyAoW3JlYWRlcl0pfSwgOnByb3RvY29sIEluZGV4aW5nUmVhZGVyfSB7OnN5bSByZWFkLWxpbmUsIDptZXRhIHs6ZG9jICJSZWFkcyBhIGxpbmUgZnJvbSB0aGUgcmVhZGVyIG9yIGZyb20gKmluKiBpZiBubyByZWFkZXIgaXMgc3BlY2lmaWVkIiwgOmFyZ2xpc3RzIFtbcmRyXV19LCA6c291cmNlICIoZGVmblxuIHJlYWQtbGluZVxuIFwiUmVhZHMgYSBsaW5lIGZyb20gdGhlIHJlYWRlciBvciBmcm9tICppbiogaWYgbm8gcmVhZGVyIGlzIHNwZWNpZmllZFwiXG4gKFtyZHJdXG4gIChsb29wXG4gICBbYyAocmVhZC1jaGFyIHJkcikgcyAoU3RyaW5nQnVmZmVyLildXG4gICAoaWYgKG5ld2xpbmU/IGMpIChzdHIgcykgKHJlY3VyIChyZWFkLWNoYXIgcmRyKSAoLmFwcGVuZCBzIGMpKSkpKSlcbiJ9IHs6c3ltIHN0cmluZy1wdXNoLWJhY2stcmVhZGVyLCA6bWV0YSB7OmRvYyAiQ3JlYXRlcyBhIFB1c2hiYWNrUmVhZGVyIGZyb20gYSBnaXZlbiBzdHJpbmciLCA6YXJnbGlzdHMgW1tzXSBbcyBidWYtbGVuXV19LCA6c291cmNlICIoZGVmblxuIHN0cmluZy1wdXNoLWJhY2stcmVhZGVyXG4gXCJDcmVhdGVzIGEgUHVzaGJhY2tSZWFkZXIgZnJvbSBhIGdpdmVuIHN0cmluZ1wiXG4gKFtzXSAoc3RyaW5nLXB1c2gtYmFjay1yZWFkZXIgcyAxKSlcbiAoW3MgYnVmLWxlbl1cbiAgKFB1c2hiYWNrUmVhZGVyLlxuICAgKHN0cmluZy1yZWFkZXIgcylcbiAgIChvYmplY3QtYXJyYXkgYnVmLWxlbilcbiAgIGJ1Zi1sZW5cbiAgIGJ1Zi1sZW4pKSlcbiJ9IHs6c3ltIGxpbmUtc3RhcnQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIHJkciBpcyBhbiBJbmRleGluZ1JlYWRlciBhbmQgdGhlIGN1cnJlbnQgY2hhciBzdGFydHMgYSBuZXcgbGluZSIsIDphcmdsaXN0cyAoW3Jkcl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBsaW5lLXN0YXJ0P1xuIFwiUmV0dXJucyB0cnVlIGlmIHJkciBpcyBhbiBJbmRleGluZ1JlYWRlciBhbmQgdGhlIGN1cnJlbnQgY2hhciBzdGFydHMgYSBuZXcgbGluZVwiXG4gW3Jkcl1cbiAod2hlbiAoaW5kZXhpbmctcmVhZGVyPyByZHIpICg9PSAxIChnZXQtY29sdW1uLW51bWJlciByZHIpKSkpXG4ifSB7OnN5bSBzb3VyY2UtbG9nZ2luZy1yZWFkZXI/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3Jkcl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzb3VyY2UtbG9nZ2luZy1yZWFkZXI/XG4gW3Jkcl1cbiAoaW5zdGFuY2U/IFNvdXJjZUxvZ2dpbmdQdXNoYmFja1JlYWRlciByZHIpKVxuIn0gezpzeW0gSW5kZXhpbmdSZWFkZXIsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzIChnZXQtY29sdW1uLW51bWJlciBnZXQtZmlsZS1uYW1lIGdldC1saW5lLW51bWJlcil9IHs6c3ltIG5vZGUtcmVhZGFibGUtcHVzaC1iYWNrLXJlYWRlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZWFkYWJsZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBub2RlLXJlYWRhYmxlLXB1c2gtYmFjay1yZWFkZXJcbiBbcmVhZGFibGVdXG4gKFB1c2hiYWNrUmVhZGVyLlxuICAoTm9kZVJlYWRhYmxlUmVhZGVyLiByZWFkYWJsZSBuaWwpXG4gIChvYmplY3QtYXJyYXkgMSlcbiAgMVxuICAxKSlcbiJ9IHs6c3ltIGdldC1saW5lLW51bWJlciwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGxpbmUgbnVtYmVyIG9mIHRoZSBuZXh0IGNoYXJhY3RlciB0byBiZSByZWFkIGZyb20gdGhlIHN0cmVhbSIsIDphcmdsaXN0cyAoW3JlYWRlcl0pfSwgOnByb3RvY29sIEluZGV4aW5nUmVhZGVyfSksIHNhYmxvbm8ubm9ybWFsaXplICh7OnN5bSBtYXAtbG9va3VwPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiBgeGAgaXMgYSBtYXAgbG9va3VwIGZvcm0sIG90aGVyd2lzZSBmYWxzZS4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIG1hcC1sb29rdXA/XG4gXCJSZXR1cm5zIHRydWUgaWYgYHhgIGlzIGEgbWFwIGxvb2t1cCBmb3JtLCBvdGhlcndpc2UgZmFsc2UuXCJcbiBbeF1cbiAoYW5kIChsaXN0PyB4KSAoa2V5d29yZD8gKGZpcnN0IHgpKSkpXG4ifSB7OnN5bSBhdHRyaWJ1dGVzLCA6bWV0YSB7OmRvYyAiTm9ybWFsaXplIHRoZSBgYXR0cnNgIG9mIGFuIGVsZW1lbnQuIiwgOmFyZ2xpc3RzIChbYXR0cnNdKX0sIDpzb3VyY2UgIihkZWZuXG4gYXR0cmlidXRlc1xuIFwiTm9ybWFsaXplIHRoZSBgYXR0cnNgIG9mIGFuIGVsZW1lbnQuXCJcbiBbYXR0cnNdXG4gKGNvbmQtPiBhdHRycyAoOmNsYXNzIGF0dHJzKSAodXBkYXRlLWluIFs6Y2xhc3NdIGNsYXNzKSkpXG4ifSB7OnN5bSBjb21wYWN0LW1hcCwgOm1ldGEgezpkb2MgIlJlbW92ZXMgYWxsIG1hcCBlbnRyaWVzIHdoZXJlIHRoZSB2YWx1ZSBvZiB0aGUgZW50cnkgaXMgZW1wdHkuIiwgOmFyZ2xpc3RzIChbbV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjb21wYWN0LW1hcFxuIFwiUmVtb3ZlcyBhbGwgbWFwIGVudHJpZXMgd2hlcmUgdGhlIHZhbHVlIG9mIHRoZSBlbnRyeSBpcyBlbXB0eS5cIlxuIFttXVxuICh3aGVuIG0gKGludG8ge30gKHJlbW92ZSAoZm4gW1tfIHZdXSAoZW1wdHk/IHYpKSkgbSkpKVxuIn0gezpzeW0gY2hpbGRyZW4sIDptZXRhIHs6ZG9jICJOb3JtYWxpemUgdGhlIGNoaWxkcmVuIG9mIGEgSFRNTCBlbGVtZW50LiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gY2hpbGRyZW5cbiBcIk5vcm1hbGl6ZSB0aGUgY2hpbGRyZW4gb2YgYSBIVE1MIGVsZW1lbnQuXCJcbiBbeF1cbiAoLT4+XG4gIChjb25kXG4gICAobmlsPyB4KVxuICAgJygpXG4gICAoc3RyaW5nPyB4KVxuICAgKGxpc3QgeClcbiAgICh1dGlsL2VsZW1lbnQ/IHgpXG4gICAobGlzdCB4KVxuICAgKGFuZCAobGlzdD8geCkgKHN5bWJvbD8gKGZpcnN0IHgpKSlcbiAgIChsaXN0IHgpXG4gICAobGlzdD8geClcbiAgIHhcbiAgIChhbmRcbiAgICAoc2VxdWVudGlhbD8geClcbiAgICAoPSAoY291bnQgeCkgMSlcbiAgICAoc2VxdWVudGlhbD8gKGZpcnN0IHgpKVxuICAgIChub3QgKHN0cmluZz8gKGZpcnN0IHgpKSlcbiAgICAobm90ICh1dGlsL2VsZW1lbnQ/IChmaXJzdCB4KSkpKVxuICAgKGNoaWxkcmVuIChmaXJzdCB4KSlcbiAgIChzZXF1ZW50aWFsPyB4KVxuICAgeFxuICAgOmVsc2VcbiAgIChsaXN0IHgpKVxuICAocmVtb3ZlIG5pbD8pKSlcbiJ9IHs6c3ltIGVsZW1lbnQsIDptZXRhIHs6ZG9jICJFbnN1cmUgYW4gZWxlbWVudCB2ZWN0b3IgaXMgb2YgdGhlIGZvcm0gW3RhZy1uYW1lIGF0dHJzIGNvbnRlbnRdLiIsIDphcmdsaXN0cyAoW1t0YWcgJiBjb250ZW50XV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbGVtZW50XG4gXCJFbnN1cmUgYW4gZWxlbWVudCB2ZWN0b3IgaXMgb2YgdGhlIGZvcm0gW3RhZy1uYW1lIGF0dHJzIGNvbnRlbnRdLlwiXG4gW1t0YWcgJiBjb250ZW50XV1cbiAod2hlbi1ub3RcbiAgKG9yIChrZXl3b3JkPyB0YWcpIChzeW1ib2w/IHRhZykgKHN0cmluZz8gdGFnKSlcbiAgKHRocm93XG4gICAoZXgtaW5mb1xuICAgIChzdHIgdGFnIFwiIGlzIG5vdCBhIHZhbGlkIGVsZW1lbnQgbmFtZS5cIilcbiAgICB7OnRhZyB0YWcsIDpjb250ZW50IGNvbnRlbnR9KSkpXG4gKGxldFxuICBbW3RhZyBpZCBjbGFzc11cbiAgIChtYXRjaC10YWcgdGFnKVxuICAgdGFnLWF0dHJzXG4gICAoY29tcGFjdC1tYXAgezppZCBpZCwgOmNsYXNzIGNsYXNzfSlcbiAgIG1hcC1hdHRyc1xuICAgKGZpcnN0IGNvbnRlbnQpXVxuICAoaWZcbiAgIChhdHRycz8gbWFwLWF0dHJzKVxuICAgW3RhZ1xuICAgIChtZXJnZS13aXRoLWNsYXNzIHRhZy1hdHRycyBtYXAtYXR0cnMpXG4gICAgKGNoaWxkcmVuIChuZXh0IGNvbnRlbnQpKV1cbiAgIFt0YWcgKGF0dHJpYnV0ZXMgdGFnLWF0dHJzKSAoY2hpbGRyZW4gY29udGVudCldKSkpXG4ifSB7OnN5bSBtYXRjaC10YWcsIDptZXRhIHs6ZG9jICJNYXRjaCBgc2AgYXMgYSBDU1MgdGFnIGFuZCByZXR1cm4gYSB2ZWN0b3Igb2YgdGFnIG5hbWUsIENTUyBpZCBhbmRcbiAgQ1NTIGNsYXNzZXMuIiwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBtYXRjaC10YWdcbiBcIk1hdGNoIGBzYCBhcyBhIENTUyB0YWcgYW5kIHJldHVybiBhIHZlY3RvciBvZiB0YWcgbmFtZSwgQ1NTIGlkIGFuZFxcbiAgQ1NTIGNsYXNzZXMuXCJcbiBbc11cbiAobGV0XG4gIFttYXRjaGVzXG4gICAocmUtc2VxICNcIlsjLl0/W14jLl0rXCIgKG5hbWUgcykpXG4gICBbdGFnLW5hbWUgbmFtZXNdXG4gICAoY29uZFxuICAgIChlbXB0eT8gbWF0Y2hlcylcbiAgICAodGhyb3cgKGV4LWluZm8gKHN0ciBcIkNhbid0IG1hdGNoIENTUyB0YWc6IFwiIHMpIHs6dGFnIHN9KSlcbiAgICAoI3tcXCMgXFwufSAoZmZpcnN0IG1hdGNoZXMpKVxuICAgIFtcImRpdlwiIG1hdGNoZXNdXG4gICAgOmRlZmF1bHRcbiAgICBbKGZpcnN0IG1hdGNoZXMpIChyZXN0IG1hdGNoZXMpXSldXG4gIFt0YWctbmFtZVxuICAgKHN0cmlwLWNzc1xuICAgIChzb21lXG4gICAgIChmbiogW3AxX180NTA1NiNdICh3aGVuICg9IFxcIyAoZmlyc3QgcDFfXzQ1MDU2IykpIHAxX180NTA1NiMpKVxuICAgICBuYW1lcykpXG4gICAoaW50b1xuICAgIFtdXG4gICAgKGNvbXBcbiAgICAgKGZpbHRlciAoZm4qIFtwMV9fNDUwNTcjXSAoPSBcXC4gKGZpcnN0IHAxX180NTA1NyMpKSkpXG4gICAgIChtYXAgc3RyaXAtY3NzKSlcbiAgICBuYW1lcyldKSlcbiJ9IHs6c3ltIHN0cmlwLWNzcywgOm1ldGEgezpkb2MgIlN0cmlwIHRoZSAjIGFuZCAuIGNoYXJhY3RlcnMgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIGBzYC4iLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIHN0cmlwLWNzc1xuIFwiU3RyaXAgdGhlICMgYW5kIC4gY2hhcmFjdGVycyBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgYHNgLlwiXG4gW3NdXG4gKHdoZW4gcyAoc3RyL3JlcGxhY2UgcyAjXCJeWy4jXVwiIFwiXCIpKSlcbiJ9IHs6c3ltIGNsYXNzLCA6bWV0YSB7OmRvYyAiTm9ybWFsaXplIGBjbGFzc2AgaW50byBhIHZlY3RvciBvZiBjbGFzc2VzLiIsIDphcmdsaXN0cyAoW2NsYXNzXSl9LCA6c291cmNlICIoZGVmblxuIGNsYXNzXG4gXCJOb3JtYWxpemUgYGNsYXNzYCBpbnRvIGEgdmVjdG9yIG9mIGNsYXNzZXMuXCJcbiBbY2xhc3NdXG4gKGNvbmRcbiAgKG5pbD8gY2xhc3MpXG4gIG5pbFxuICAobWFwLWxvb2t1cD8gY2xhc3MpXG4gIFtjbGFzc11cbiAgKGxpc3Q/IGNsYXNzKVxuICAoaWYgKHN5bWJvbD8gKGZpcnN0IGNsYXNzKSkgW2NsYXNzXSAobWFwIGNsYXNzLW5hbWUgY2xhc3MpKVxuICAoc3ltYm9sPyBjbGFzcylcbiAgW2NsYXNzXVxuICAoc3RyaW5nPyBjbGFzcylcbiAgW2NsYXNzXVxuICAoa2V5d29yZD8gY2xhc3MpXG4gIFsoY2xhc3MtbmFtZSBjbGFzcyldXG4gIChhbmRcbiAgIChvciAoc2V0PyBjbGFzcykgKHNlcXVlbnRpYWw/IGNsYXNzKSlcbiAgIChldmVyeT9cbiAgICAoZm4qIFtwMV9fNDUwNTUjXSAob3IgKGtleXdvcmQ/IHAxX180NTA1NSMpIChzdHJpbmc/IHAxX180NTA1NSMpKSlcbiAgICBjbGFzcykpXG4gIChtYXB2IGNsYXNzLW5hbWUgY2xhc3MpXG4gIChhbmQgKG9yIChzZXQ/IGNsYXNzKSAoc2VxdWVudGlhbD8gY2xhc3MpKSlcbiAgKG1hcHYgY2xhc3MtbmFtZSBjbGFzcylcbiAgOmVsc2VcbiAgY2xhc3MpKVxuIn0gezpzeW0gY2xhc3MtbmFtZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiBjbGFzcy1uYW1lIFt4XSAoY29uZCAoc3RyaW5nPyB4KSB4IChrZXl3b3JkPyB4KSAobmFtZSB4KSA6ZWxzZSB4KSlcbiJ9IHs6c3ltIG1lcmdlLXdpdGgtY2xhc3MsIDptZXRhIHs6ZG9jICJMaWtlIGNsb2p1cmUuY29yZS9tZXJnZSBidXQgY29uY2F0ZW5hdGUgOmNsYXNzIGVudHJpZXMuIiwgOmFyZ2xpc3RzIChbJiBtYXBzXSl9LCA6c291cmNlICIoZGVmblxuIG1lcmdlLXdpdGgtY2xhc3NcbiBcIkxpa2UgY2xvanVyZS5jb3JlL21lcmdlIGJ1dCBjb25jYXRlbmF0ZSA6Y2xhc3MgZW50cmllcy5cIlxuIFsmIG1hcHNdXG4gKGxldFxuICBbbWFwcyAobWFwIGF0dHJpYnV0ZXMgbWFwcykgY2xhc3NlcyAobWFwY2F0IDpjbGFzcyBtYXBzKV1cbiAgKHdoZW5cbiAgIChzZXEgbWFwcylcbiAgIChjb25kLT5cbiAgICAocmVkdWNlIGludG8ge30gbWFwcylcbiAgICAobm90IChlbXB0eT8gY2xhc3NlcykpXG4gICAgKGFzc29jIDpjbGFzcyAodmVjIGNsYXNzZXMpKSkpKSlcbiJ9KSwgcGxheS1jbGpjLm1hdGggKHs6c3ltIGludmVyc2UtbWF0cml4LCA6bWV0YSB7OmRvYyAiR2l2ZW4gdHdvIGFyZ3VtZW50cywgcmV0dXJucyB0aGUgaW52ZXJzZSBvZiB0aGUgZ2l2ZW4gM3gzIG1hdHJpeC5cbiAgSWYgYW4gYWRkaXRpb25hbCBgc2l6ZWAgYXJnIGlzIHByb3ZpZGVkLCByZXR1cm5zIHRoZSBpbnZlcnNlIG9mIHRoZSBnaXZlbiBtYXRyaXggb2YgdGhhdCBzaXplLiIsIDphcmdsaXN0cyBbW21dIFtzaXplIG1dXX0sIDpzb3VyY2UgIihkZWZuXG4gaW52ZXJzZS1tYXRyaXhcbiBcIkdpdmVuIHR3byBhcmd1bWVudHMsIHJldHVybnMgdGhlIGludmVyc2Ugb2YgdGhlIGdpdmVuIDN4MyBtYXRyaXguXFxuICBJZiBhbiBhZGRpdGlvbmFsIGBzaXplYCBhcmcgaXMgcHJvdmlkZWQsIHJldHVybnMgdGhlIGludmVyc2Ugb2YgdGhlIGdpdmVuIG1hdHJpeCBvZiB0aGF0IHNpemUuXCJcbiAoW21dICgoaW52LW1hdC1mbiAzKSBtKSlcbiAoW3NpemUgbV1cbiAgKGNhc2VcbiAgIHNpemVcbiAgIDJcbiAgICgoaW52LW1hdC1mbiAyKSBtKVxuICAgM1xuICAgKChpbnYtbWF0LWZuIDMpIG0pXG4gICA0XG4gICAoKGludi1tYXQtZm4gNCkgbSlcbiAgIChpbnYtbWF0IHNpemUgbSkpKSlcbiJ9IHs6c3ltIGlkZW50aXR5LW1hdHJpeCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBpZGVudGl0eS1tYXRyaXhcbiAobWVtb2l6ZVxuICAoZm5cbiAgIFtzaXplXVxuICAgKHZlY1xuICAgIChmb3JcbiAgICAgW3JvdyAoLT5yYW5nZSBzaXplKSBjb2wgKC0+cmFuZ2Ugc2l6ZSldXG4gICAgIChpZiAoPSByb3cgY29sKSAxIDApKSkpKSlcbiJ9IHs6c3ltIHZlY3Rvci0+YXJyYXksIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdl0pfSwgOnNvdXJjZSAiKGRlZm4gdmVjdG9yLT5hcnJheSBbdl0gKCM/KDpjbGogZmxvYXQtYXJyYXkgOmNsanMgY2xqLT5qcykgdikpXG4ifSB7OnN5bSBkZWctPnJhZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtkXSl9LCA6c291cmNlICIoZGVmbiBkZWctPnJhZCBbZF0gKC0+IGQgKCogKG1hdGggUEkpKSAoLyAxODApKSlcbiJ9IHs6c3ltIHRyYW5zZm9ybS12ZWN0b3IsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbSB2XSl9LCA6c291cmNlICIoZGVmblxuIHRyYW5zZm9ybS12ZWN0b3JcbiBbbSB2XVxuIChsZXRcbiAgW2RzdCAodmVjdG9yLT5hcnJheSB2KV1cbiAgKGRvdGltZXNcbiAgIFtpIDRdXG4gICAoIz8oOmNsaiBhc2V0LWZsb2F0IDpjbGpzIGFzZXQpIGRzdCBpIDAuMClcbiAgIChkb3RpbWVzXG4gICAgW2ogNF1cbiAgICAoIz8oOmNsaiBhc2V0LWZsb2F0IDpjbGpzIGFzZXQpXG4gICAgIGRzdFxuICAgICBpXG4gICAgICgrIChhZ2V0IGRzdCBpKSAoKiAobnRoIHYgaikgKG50aCBtICgtPiBqICgqIDQpICgrIGkpKSkpKSkpKVxuICAodmVjIGRzdCkpKVxuIn0gezpzeW0geC1yb3RhdGlvbi1tYXRyaXgtM2QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbYW5nbGUtaW4tcmFkaWFuc10pfSwgOnNvdXJjZSAiKGRlZm5cbiB4LXJvdGF0aW9uLW1hdHJpeC0zZFxuIFthbmdsZS1pbi1yYWRpYW5zXVxuIChsZXRcbiAgW2MgKG1hdGggY29zIGFuZ2xlLWluLXJhZGlhbnMpIHMgKG1hdGggc2luIGFuZ2xlLWluLXJhZGlhbnMpXVxuICBbMSAwIDAgMCAwIGMgcyAwIDAgKC0gcykgYyAwIDAgMCAwIDFdKSlcbiJ9IHs6c3ltIHBlcnNwZWN0aXZlLW1hdHJpeC0zZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmaWVsZC1vZi12aWV3IGFzcGVjdCBuZWFyIGZhcl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwZXJzcGVjdGl2ZS1tYXRyaXgtM2RcbiBbZmllbGQtb2YtdmlldyBhc3BlY3QgbmVhciBmYXJdXG4gKGxldFxuICBbZlxuICAgKG1hdGggdGFuICgtICgqIChtYXRoIFBJKSAwLjUpICgqIGZpZWxkLW9mLXZpZXcgMC41KSkpXG4gICByYW5nZS1pbnZcbiAgICgvIDEgKC0gbmVhciBmYXIpKV1cbiAgWygvIGYgYXNwZWN0KVxuICAgMFxuICAgMFxuICAgMFxuICAgMFxuICAgZlxuICAgMFxuICAgMFxuICAgMFxuICAgMFxuICAgKCogKCsgbmVhciBmYXIpIHJhbmdlLWludilcbiAgIC0xXG4gICAwXG4gICAwXG4gICAoKiBuZWFyIGZhciByYW5nZS1pbnYgMilcbiAgIDBdKSlcbiJ9IHs6c3ltIHNjYWxpbmctbWF0cml4LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N4IHN5XSl9LCA6c291cmNlICIoZGVmbiBzY2FsaW5nLW1hdHJpeCBbc3ggc3ldIFtzeCAwIDAgMCBzeSAwIDAgMCAxXSlcbiJ9IHs6c3ltIHotcm90YXRpb24tbWF0cml4LTNkLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2FuZ2xlLWluLXJhZGlhbnNdKX0sIDpzb3VyY2UgIihkZWZuXG4gei1yb3RhdGlvbi1tYXRyaXgtM2RcbiBbYW5nbGUtaW4tcmFkaWFuc11cbiAobGV0XG4gIFtjIChtYXRoIGNvcyBhbmdsZS1pbi1yYWRpYW5zKSBzIChtYXRoIHNpbiBhbmdsZS1pbi1yYWRpYW5zKV1cbiAgW2MgcyAwIDAgKC0gcykgYyAwIDAgMCAwIDEgMCAwIDAgMCAxXSkpXG4ifSB7OnN5bSByb3RhdGlvbi1tYXRyaXgsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbYW5nbGUtaW4tcmFkaWFuc10pfSwgOnNvdXJjZSAiKGRlZm5cbiByb3RhdGlvbi1tYXRyaXhcbiBbYW5nbGUtaW4tcmFkaWFuc11cbiAobGV0XG4gIFtjIChtYXRoIGNvcyBhbmdsZS1pbi1yYWRpYW5zKSBzIChtYXRoIHNpbiBhbmdsZS1pbi1yYWRpYW5zKV1cbiAgW2MgKC0gcykgMCBzIGMgMCAwIDAgMV0pKVxuIn0gezpzeW0gdHJhbnNsYXRpb24tbWF0cml4LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3R4IHR5XSl9LCA6c291cmNlICIoZGVmbiB0cmFuc2xhdGlvbi1tYXRyaXggW3R4IHR5XSBbMSAwIDAgMCAxIDAgdHggdHkgMV0pXG4ifSB7OnN5bSB0cmFuc2xhdGlvbi1tYXRyaXgtM2QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdHggdHkgdHpdKX0sIDpzb3VyY2UgIihkZWZuXG4gdHJhbnNsYXRpb24tbWF0cml4LTNkXG4gW3R4IHR5IHR6XVxuIFsxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCB0eCB0eSB0eiAxXSlcbiJ9IHs6c3ltIHByb2plY3Rpb24tbWF0cml4LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3dpZHRoIGhlaWdodF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcm9qZWN0aW9uLW1hdHJpeFxuIFt3aWR0aCBoZWlnaHRdXG4gWygvIDIgd2lkdGgpIDAgMCAwICgvIC0yIGhlaWdodCkgMCAtMSAxIDFdKVxuIn0gezpzeW0gbXVsdGlwbHktbWF0cmljZXMtM2QsIDptZXRhIHs6ZG9jICJNdWx0aXBsaWVzIHR3byA0eDQgbWF0cmljZXMuIiwgOmFyZ2xpc3RzIChbbTEgbTJdKX0sIDpzb3VyY2UgIihkZWZuXG4gbXVsdGlwbHktbWF0cmljZXMtM2RcbiBcIk11bHRpcGxpZXMgdHdvIDR4NCBtYXRyaWNlcy5cIlxuIFttMSBtMl1cbiAoKG11bC1tYXQtZm4gNCkgbTEgKG9yIG0yIChpZGVudGl0eS1tYXRyaXggNCkpKSlcbiJ9IHs6c3ltIGludmVyc2UtbWF0cml4LTNkLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIGludmVyc2UtbWF0cml4LTNkXG4gXCJSZXR1cm5zIHRoZSBpbnZlcnNlIG9mIHRoZSBnaXZlbiA0eDQgbWF0cml4LlwiXG4gKGludi1tYXQtZm4gNCkpXG4ifSB7OnN5bSB2ZWN0b3ItPjJkLWFycmF5LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ZdKX0sIDpzb3VyY2UgIihkZWZuIHZlY3Rvci0+MmQtYXJyYXkgW3ZdICgjPyg6Y2xqIHRvLWFycmF5LTJkIDpjbGpzIGNsai0+anMpIHYpKVxuIn0gezpzeW0gbG9vay1hdC1tYXRyaXgsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGFyZ2V0IHVwXSl9LCA6c291cmNlICIoZGVmblxuIGxvb2stYXQtbWF0cml4XG4gW3RhcmdldCB1cF1cbiAobGV0XG4gIFt6LWF4aXNcbiAgIChub3JtYWxpemUgdGFyZ2V0KVxuICAgeC1heGlzXG4gICAobm9ybWFsaXplIChjcm9zcyB1cCB6LWF4aXMpKVxuICAgeS1heGlzXG4gICAobm9ybWFsaXplIChjcm9zcyB6LWF4aXMgeC1heGlzKSldXG4gIFsobnRoIHgtYXhpcyAwKVxuICAgKG50aCB4LWF4aXMgMSlcbiAgIChudGggeC1heGlzIDIpXG4gICAobnRoIHktYXhpcyAwKVxuICAgKG50aCB5LWF4aXMgMSlcbiAgIChudGggeS1heGlzIDIpXG4gICAobnRoIHotYXhpcyAwKVxuICAgKG50aCB6LWF4aXMgMSlcbiAgIChudGggei1heGlzIDIpXSkpXG4ifSB7OnN5bSBtdWx0aXBseS1tYXRyaWNlcywgOm1ldGEgezpkb2MgIkdpdmVuIHR3byBhcmd1bWVudHMsIG11bHRpcGxpZXMgdHdvIDN4MyBtYXRyaWNlcy5cbiAgSWYgYW4gYWRkaXRpb25hbCBgc2l6ZWAgYXJnIGlzIHByb3ZpZGVkLCBtdWx0aXBsZXMgdHdvIG1hdHJpY2VzIG9mIHRoYXQgc2l6ZS4iLCA6YXJnbGlzdHMgW1ttMSBtMl0gW3NpemUgbTEgbTJdXX0sIDpzb3VyY2UgIihkZWZuXG4gbXVsdGlwbHktbWF0cmljZXNcbiBcIkdpdmVuIHR3byBhcmd1bWVudHMsIG11bHRpcGxpZXMgdHdvIDN4MyBtYXRyaWNlcy5cXG4gIElmIGFuIGFkZGl0aW9uYWwgYHNpemVgIGFyZyBpcyBwcm92aWRlZCwgbXVsdGlwbGVzIHR3byBtYXRyaWNlcyBvZiB0aGF0IHNpemUuXCJcbiAoW20xIG0yXSAoKG11bC1tYXQtZm4gMykgbTEgKG9yIG0yIChpZGVudGl0eS1tYXRyaXggMykpKSlcbiAoW3NpemUgbTEgbTJdXG4gIChsZXRcbiAgIFttMiAob3IgbTIgKGlkZW50aXR5LW1hdHJpeCBzaXplKSldXG4gICAoY2FzZVxuICAgIHNpemVcbiAgICAyXG4gICAgKChtdWwtbWF0LWZuIDIpIG0xIG0yKVxuICAgIDNcbiAgICAoKG11bC1tYXQtZm4gMykgbTEgbTIpXG4gICAgNFxuICAgICgobXVsLW1hdC1mbiA0KSBtMSBtMilcbiAgICAobXVsLW1hdCBzaXplIG0xIG0yKSkpKSlcbiJ9IHs6c3ltIG9ydGhvLW1hdHJpeC0zZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtsZWZ0IHJpZ2h0IGJvdHRvbSB0b3AgbmVhciBmYXJdKX0sIDpzb3VyY2UgIihkZWZuXG4gb3J0aG8tbWF0cml4LTNkXG4gW2xlZnQgcmlnaHQgYm90dG9tIHRvcCBuZWFyIGZhcl1cbiAobGV0XG4gIFt3aWR0aCAoLSByaWdodCBsZWZ0KSBoZWlnaHQgKC0gdG9wIGJvdHRvbSkgZGVwdGggKC0gbmVhciBmYXIpXVxuICBbKC8gMiB3aWR0aClcbiAgIDBcbiAgIDBcbiAgIDBcbiAgIDBcbiAgICgvIDIgaGVpZ2h0KVxuICAgMFxuICAgMFxuICAgMFxuICAgMFxuICAgKC8gMiBkZXB0aClcbiAgIDBcbiAgICgvICgrIGxlZnQgcmlnaHQpICgtIGxlZnQgcmlnaHQpKVxuICAgKC8gKCsgYm90dG9tIHRvcCkgKC0gYm90dG9tIHRvcCkpXG4gICAoLyAoKyBuZWFyIGZhcikgKC0gbmVhciBmYXIpKVxuICAgMV0pKVxuIn0gezpzeW0gbG9vay1hdC1tYXRyaXgtM2QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbY2FtZXJhLXBvcyB0YXJnZXQgdXBdKX0sIDpzb3VyY2UgIihkZWZuXG4gbG9vay1hdC1tYXRyaXgtM2RcbiBbY2FtZXJhLXBvcyB0YXJnZXQgdXBdXG4gKGxldFxuICBbei1heGlzXG4gICAobm9ybWFsaXplIChzdWJ0cmFjdC12ZWN0b3JzIGNhbWVyYS1wb3MgdGFyZ2V0KSlcbiAgIHgtYXhpc1xuICAgKG5vcm1hbGl6ZSAoY3Jvc3MgdXAgei1heGlzKSlcbiAgIHktYXhpc1xuICAgKG5vcm1hbGl6ZSAoY3Jvc3Mgei1heGlzIHgtYXhpcykpXVxuICBbKG50aCB4LWF4aXMgMClcbiAgIChudGggeC1heGlzIDEpXG4gICAobnRoIHgtYXhpcyAyKVxuICAgMFxuICAgKG50aCB5LWF4aXMgMClcbiAgIChudGggeS1heGlzIDEpXG4gICAobnRoIHktYXhpcyAyKVxuICAgMFxuICAgKG50aCB6LWF4aXMgMClcbiAgIChudGggei1heGlzIDEpXG4gICAobnRoIHotYXhpcyAyKVxuICAgMFxuICAgKG50aCBjYW1lcmEtcG9zIDApXG4gICAobnRoIGNhbWVyYS1wb3MgMSlcbiAgIChudGggY2FtZXJhLXBvcyAyKVxuICAgMV0pKVxuIn0gezpzeW0geS1yb3RhdGlvbi1tYXRyaXgtM2QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbYW5nbGUtaW4tcmFkaWFuc10pfSwgOnNvdXJjZSAiKGRlZm5cbiB5LXJvdGF0aW9uLW1hdHJpeC0zZFxuIFthbmdsZS1pbi1yYWRpYW5zXVxuIChsZXRcbiAgW2MgKG1hdGggY29zIGFuZ2xlLWluLXJhZGlhbnMpIHMgKG1hdGggc2luIGFuZ2xlLWluLXJhZGlhbnMpXVxuICBbYyAwICgtIHMpIDAgMCAxIDAgMCBzIDAgYyAwIDAgMCAwIDFdKSlcbiJ9IHs6c3ltIHNjYWxpbmctbWF0cml4LTNkLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N4IHN5IHN6XSl9LCA6c291cmNlICIoZGVmbiBzY2FsaW5nLW1hdHJpeC0zZCBbc3ggc3kgc3pdIFtzeCAwIDAgMCAwIHN5IDAgMCAwIDAgc3ogMCAwIDAgMCAxXSlcbiJ9IHs6c3ltIHRyYW5zcG9zZS1tYXRyaXgtM2QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0cmFuc3Bvc2UtbWF0cml4LTNkXG4gW21dXG4gWyhudGggbSAwKVxuICAobnRoIG0gNClcbiAgKG50aCBtIDgpXG4gIChudGggbSAxMilcbiAgKG50aCBtIDEpXG4gIChudGggbSA1KVxuICAobnRoIG0gOSlcbiAgKG50aCBtIDEzKVxuICAobnRoIG0gMilcbiAgKG50aCBtIDYpXG4gIChudGggbSAxMClcbiAgKG50aCBtIDE0KVxuICAobnRoIG0gMylcbiAgKG50aCBtIDcpXG4gIChudGggbSAxMSlcbiAgKG50aCBtIDE1KV0pXG4ifSksIGV4cG91bmQudXRpbCAoezpzeW0gYXNzZXJ0LW1lc3NhZ2UsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gYXNzZXJ0LW1lc3NhZ2VcbiBcIkludGVybmFsIEV4cG91bmQgYXNzZXJ0aW9uIGZhaWxlZC4gUGxlYXNlIHJlcG9ydCB0aGlzIGJ1ZyBhdCBodHRwczovL2dpdGh1Yi5jb20vYmhiL2V4cG91bmQvaXNzdWVzXCIpXG4ifSB7OnN5bSBuYW4/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gbmFuP1xuIFt4XVxuICM/KDpjbGogKGFuZCAobnVtYmVyPyB4KSAoRG91YmxlL2lzTmFOIHgpKSA6Y2xqcyAoYW5kIChudW1iZXI/IHgpIChqcy9pc05hTiB4KSkpKVxuIn0pLCBjbGpzLnNvdXJjZS1tYXAgKHs6c3ltIHVwZGF0ZS1yZXN1bHQsIDptZXRhIHs6ZG9jICJIZWxwZXIgZm9yIGRlY29kZS4gVGFrZSBhIHNvdXJjZSBtYXAgYW5kIHVwZGF0ZSBpdCBiYXNlZCBvbiBhXG4gIHNlZ21lbnQgbWFwLiIsIDphcmdsaXN0cyAoW3Jlc3VsdCBzZWdtYXAgZ2xpbmVdKX0sIDpzb3VyY2UgIihkZWZuXG4gdXBkYXRlLXJlc3VsdFxuIFwiSGVscGVyIGZvciBkZWNvZGUuIFRha2UgYSBzb3VyY2UgbWFwIGFuZCB1cGRhdGUgaXQgYmFzZWQgb24gYVxcbiAgc2VnbWVudCBtYXAuXCJcbiBbcmVzdWx0IHNlZ21hcCBnbGluZV1cbiAobGV0XG4gIFt7OmtleXMgW2djb2wgc291cmNlIGxpbmUgY29sIG5hbWVdfVxuICAgc2VnbWFwXG4gICBkXG4gICB7OmxpbmUgbGluZSwgOmNvbCBjb2wsIDpzb3VyY2Ugc291cmNlfVxuICAgZFxuICAgKGlmIG5hbWUgKGFzc29jIGQgOm5hbWUgbmFtZSkgZCldXG4gICh1cGRhdGUtaW5cbiAgIHJlc3VsdFxuICAgW2dsaW5lXVxuICAgKGZuaWxcbiAgICAoZm5cbiAgICAgW21dXG4gICAgICh1cGRhdGUtaW5cbiAgICAgIG1cbiAgICAgIFtnY29sXVxuICAgICAgKGZuaWwgKGZuKiBbcDFfXzQ1MDU4I10gKGNvbmogcDFfXzQ1MDU4IyBkKSkgW10pKSlcbiAgICAoc29ydGVkLW1hcCkpKSkpXG4ifSB7OnN5bSBlbmNvZGUsIDptZXRhIHs6ZG9jICJUYWtlIGFuIGludGVybmFsIHNvdXJjZSBtYXAgcmVwcmVzZW50YXRpb24gcmVwcmVzZW50ZWQgYXMgbmVzdGVkXG4gICBzb3J0ZWQgbWFwcyBvZiBmaWxlLCBsaW5lLCBjb2x1bW4gYW5kIHJldHVybiBhIHNvdXJjZSBtYXAgdjMgSlNPTlxuICAgc3RyaW5nLiIsIDphcmdsaXN0cyAoW20gb3B0c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbmNvZGVcbiBcIlRha2UgYW4gaW50ZXJuYWwgc291cmNlIG1hcCByZXByZXNlbnRhdGlvbiByZXByZXNlbnRlZCBhcyBuZXN0ZWRcXG4gICBzb3J0ZWQgbWFwcyBvZiBmaWxlLCBsaW5lLCBjb2x1bW4gYW5kIHJldHVybiBhIHNvdXJjZSBtYXAgdjMgSlNPTlxcbiAgIHN0cmluZy5cIlxuIFttIG9wdHNdXG4gKGxldFxuICBbbGluZXNcbiAgIChhdG9tIFtbXV0pXG4gICBuYW1lcy0+aWR4XG4gICAoYXRvbSB7fSlcbiAgIG5hbWUtaWR4XG4gICAoYXRvbSAwKVxuICAgcHJlYW1ibGUtbGluZXNcbiAgICh0YWtlIChvciAoOnByZWFtYmxlLWxpbmUtY291bnQgb3B0cykgMCkgKHJlcGVhdCBbXSkpXG4gICBpbmZvLT5zZWd2XG4gICAoZm5cbiAgICBbaW5mbyBzb3VyY2UtaWR4IGxpbmUgY29sXVxuICAgIChsZXRcbiAgICAgW3NlZ3YgWyg6Z2NvbCBpbmZvKSBzb3VyY2UtaWR4IGxpbmUgY29sXV1cbiAgICAgKGlmLWxldFxuICAgICAgW25hbWUgKDpuYW1lIGluZm8pXVxuICAgICAgKGxldFxuICAgICAgIFtpZHhcbiAgICAgICAgKGlmLWxldFxuICAgICAgICAgW2lkeCAoZ2V0IEBuYW1lcy0+aWR4IG5hbWUpXVxuICAgICAgICAgaWR4XG4gICAgICAgICAobGV0XG4gICAgICAgICAgW2NpZHggQG5hbWUtaWR4XVxuICAgICAgICAgIChzd2FwISBuYW1lcy0+aWR4IGFzc29jIG5hbWUgY2lkeClcbiAgICAgICAgICAoc3dhcCEgbmFtZS1pZHggaW5jKVxuICAgICAgICAgIGNpZHgpKV1cbiAgICAgICAoY29uaiBzZWd2IGlkeCkpXG4gICAgICBzZWd2KSkpXG4gICBlbmNvZGUtY29sc1xuICAgKGZuXG4gICAgW2luZm9zIHNvdXJjZS1pZHggbGluZSBjb2xdXG4gICAgKGRvc2VxXG4gICAgIFtpbmZvIGluZm9zXVxuICAgICAobGV0XG4gICAgICBbc2VndlxuICAgICAgIChpbmZvLT5zZWd2IGluZm8gc291cmNlLWlkeCBsaW5lIGNvbClcbiAgICAgICBnbGluZVxuICAgICAgICg6Z2xpbmUgaW5mbylcbiAgICAgICBsY1xuICAgICAgIChjb3VudCBAbGluZXMpXVxuICAgICAgKGlmXG4gICAgICAgKD4gZ2xpbmUgKGRlYyBsYykpXG4gICAgICAgKHN3YXAhXG4gICAgICAgIGxpbmVzXG4gICAgICAgIChmblxuICAgICAgICAgW2xpbmVzXVxuICAgICAgICAgKGNvbmpcbiAgICAgICAgICAoaW50byBsaW5lcyAocmVwZWF0IChkZWMgKC0gZ2xpbmUgKGRlYyBsYykpKSBbXSkpXG4gICAgICAgICAgW3NlZ3ZdKSkpXG4gICAgICAgKHN3YXAhXG4gICAgICAgIGxpbmVzXG4gICAgICAgIChmbiBbbGluZXNdICh1cGRhdGUtaW4gbGluZXMgW2dsaW5lXSBjb25qIHNlZ3YpKSkpKSkpXVxuICAoZG9zZXFcbiAgIFtbc291cmNlLWlkeCBbXyBsaW5lc11dIChtYXAtaW5kZXhlZCAoZm4gW2kgdl0gW2kgdl0pIG0pXVxuICAgKGRvc2VxXG4gICAgW1tsaW5lIGNvbHNdIGxpbmVzXVxuICAgIChkb3NlcVxuICAgICBbW2NvbCBpbmZvc10gY29sc11cbiAgICAgKGVuY29kZS1jb2xzIGluZm9zIHNvdXJjZS1pZHggbGluZSBjb2wpKSkpXG4gIChsZXRcbiAgIFtzb3VyY2UtbWFwLWZpbGUtY29udGVudHNcbiAgICAoY29uZC0+XG4gICAgICNqcyB7XCJ2ZXJzaW9uXCIgMywgXCJmaWxlXCIgKDpmaWxlIG9wdHMpLCBcInNvdXJjZXNcIiAobGV0IFtwYXRocyAoa2V5cyBtKSBmIChjb21wIChpZiAodHJ1ZT8gKDpzb3VyY2UtbWFwLXRpbWVzdGFtcCBvcHRzKSkgKGZuKiBbcDFfXzQ1MDU5I10gKHN0ciBwMV9fNDUwNTkjIFwiP3JlbD1cIiAoLnZhbHVlT2YgKGpzL0RhdGUuKSkpKSBpZGVudGl0eSkgKGZuKiBbcDFfXzQ1MDYwI10gKGxhc3QgKHN0cmluZy9zcGxpdCBwMV9fNDUwNjAjICNcIi9cIikpKSldICgtPj4gcGF0aHMgKG1hcCBmKSAoaW50by1hcnJheSkpKSwgXCJsaW5lQ291bnRcIiAoOmxpbmVzIG9wdHMpLCBcIm1hcHBpbmdzXCIgKC0+PiAobGluZXMtPnNlZ3MgKGNvbmNhdCBwcmVhbWJsZS1saW5lcyAoY2xvanVyZS5jb3JlL2RlcmVmIGxpbmVzKSkpIChtYXAgKGZuKiBbcDFfXzQ1MDYxI10gKHN0cmluZy9qb2luIFwiLFwiIHAxX180NTA2MSMpKSkgKHN0cmluZy9qb2luIFwiO1wiKSksIFwibmFtZXNcIiAoaW50by1hcnJheSAobWFwIChzZXQvbWFwLWludmVydCAoY2xvanVyZS5jb3JlL2RlcmVmIG5hbWVzLT5pZHgpKSAocmFuZ2UgKGNvdW50IChjbG9qdXJlLmNvcmUvZGVyZWYgbmFtZXMtPmlkeCkpKSkpfVxuICAgICAoOnNvdXJjZXMtY29udGVudCBvcHRzKVxuICAgICAoZG90b1xuICAgICAgKGdvYmovc2V0XG4gICAgICAgXCJzb3VyY2VzQ29udGVudFwiXG4gICAgICAgKGludG8tYXJyYXkgKDpzb3VyY2VzLWNvbnRlbnQgb3B0cykpKSkpXVxuICAgKC5zdHJpbmdpZnkganMvSlNPTiBzb3VyY2UtbWFwLWZpbGUtY29udGVudHMpKSkpXG4ifSB7OnN5bSBpbnZlcnQtcmV2ZXJzZS1tYXAsIDptZXRhIHs6ZG9jICJHaXZlbiBhIENsb2p1cmVTY3JpcHQgdG8gSmF2YVNjcmlwdCBzb3VyY2UgbWFwLCBpbnZlcnQgaXQuIFVzZWZ1bCB3aGVuXG4gICBtYXBwaW5nIEphdmFTY3JpcHQgc3RhY2sgdHJhY2VzIHdoZW4gZW52aXJvbm1lbnQgc3VwcG9ydCBpcyB1bmF2YWlsYWJsZS4iLCA6YXJnbGlzdHMgKFtyZXZlcnNlLW1hcF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbnZlcnQtcmV2ZXJzZS1tYXBcbiBcIkdpdmVuIGEgQ2xvanVyZVNjcmlwdCB0byBKYXZhU2NyaXB0IHNvdXJjZSBtYXAsIGludmVydCBpdC4gVXNlZnVsIHdoZW5cXG4gICBtYXBwaW5nIEphdmFTY3JpcHQgc3RhY2sgdHJhY2VzIHdoZW4gZW52aXJvbm1lbnQgc3VwcG9ydCBpcyB1bmF2YWlsYWJsZS5cIlxuIFtyZXZlcnNlLW1hcF1cbiAobGV0XG4gIFtpbnZlcnRlZCAoYXRvbSAoc29ydGVkLW1hcCkpXVxuICAoZG9zZXFcbiAgIFtbbGluZSBjb2x1bW5zXSByZXZlcnNlLW1hcF1cbiAgIChkb3NlcVxuICAgIFtbY29sdW1uIGNvbHVtbi1pbmZvXSBjb2x1bW5zXVxuICAgIChkb3NlcVxuICAgICBbezprZXlzIFtnbGluZSBnY29sIG5hbWVdfSBjb2x1bW4taW5mb11cbiAgICAgKHN3YXAhXG4gICAgICBpbnZlcnRlZFxuICAgICAgdXBkYXRlLWluXG4gICAgICBbZ2xpbmVdXG4gICAgICAoZm5pbFxuICAgICAgIChmblxuICAgICAgICBbY29sdW1uc11cbiAgICAgICAgKHVwZGF0ZS1pblxuICAgICAgICAgY29sdW1uc1xuICAgICAgICAgW2djb2xdXG4gICAgICAgICAoZm5pbCBjb25qIFtdKVxuICAgICAgICAgezpsaW5lIGxpbmUsIDpjb2wgY29sdW1uLCA6bmFtZSBuYW1lfSkpXG4gICAgICAgKHNvcnRlZC1tYXApKSkpKSlcbiAgQGludmVydGVkKSlcbiJ9IHs6c3ltIGRlY29kZSwgOm1ldGEgezpkb2MgIkNvbnZlcnQgYSB2MyBzb3VyY2UgbWFwIEpTT04gb2JqZWN0IGludG8gYSBzb3VyY2UgbWFwIG1hcHBpbmdcbiAgZ2VuZXJhdGVkIEphdmFTY3JpcHQgc291cmNlIGxvY2F0aW9ucyB0byB0aGUgb3JpZ2luYWxcbiAgQ2xvanVyZVNjcmlwdC4iLCA6YXJnbGlzdHMgW1tzb3VyY2UtbWFwXSBbbWFwcGluZ3Mgc291cmNlLW1hcF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBkZWNvZGVcbiBcIkNvbnZlcnQgYSB2MyBzb3VyY2UgbWFwIEpTT04gb2JqZWN0IGludG8gYSBzb3VyY2UgbWFwIG1hcHBpbmdcXG4gIGdlbmVyYXRlZCBKYXZhU2NyaXB0IHNvdXJjZSBsb2NhdGlvbnMgdG8gdGhlIG9yaWdpbmFsXFxuICBDbG9qdXJlU2NyaXB0LlwiXG4gKFtzb3VyY2UtbWFwXSAoZGVjb2RlIChnb2JqL2dldCBzb3VyY2UtbWFwIFwibWFwcGluZ3NcIikgc291cmNlLW1hcCkpXG4gKFttYXBwaW5ncyBzb3VyY2UtbWFwXVxuICAobGV0XG4gICBbc291cmNlc1xuICAgIChnb2JqL2dldCBzb3VyY2UtbWFwIFwic291cmNlc1wiKVxuICAgIHJlbHNlZy1pbml0XG4gICAgWzAgMCAwIDAgMF1cbiAgICBsaW5lc1xuICAgIChzZXEgKHN0cmluZy9zcGxpdCBtYXBwaW5ncyAjXCI7XCIpKV1cbiAgIChsb29wXG4gICAgW2dsaW5lIDAgbGluZXMgbGluZXMgcmVsc2VnIHJlbHNlZy1pbml0IHJlc3VsdCB7fV1cbiAgICAoaWZcbiAgICAgbGluZXNcbiAgICAgKGxldFxuICAgICAgW2xpbmVcbiAgICAgICAoZmlyc3QgbGluZXMpXG4gICAgICAgW3Jlc3VsdCByZWxzZWddXG4gICAgICAgKGlmXG4gICAgICAgIChzdHJpbmcvYmxhbms/IGxpbmUpXG4gICAgICAgIFtyZXN1bHQgcmVsc2VnXVxuICAgICAgICAobGV0XG4gICAgICAgICBbc2VncyAoc2VxIChzdHJpbmcvc3BsaXQgbGluZSAjXCIsXCIpKV1cbiAgICAgICAgIChsb29wXG4gICAgICAgICAgW3NlZ3Mgc2VncyByZWxzZWcgcmVsc2VnIHJlc3VsdCByZXN1bHRdXG4gICAgICAgICAgKGlmXG4gICAgICAgICAgIHNlZ3NcbiAgICAgICAgICAgKGxldFxuICAgICAgICAgICAgW3NlZ1xuICAgICAgICAgICAgIChmaXJzdCBzZWdzKVxuICAgICAgICAgICAgIG5yZWxzZWdcbiAgICAgICAgICAgICAoc2VnLWNvbWJpbmUgKGJhc2U2NC12bHEvZGVjb2RlIHNlZykgcmVsc2VnKV1cbiAgICAgICAgICAgIChyZWN1clxuICAgICAgICAgICAgIChuZXh0IHNlZ3MpXG4gICAgICAgICAgICAgbnJlbHNlZ1xuICAgICAgICAgICAgICh1cGRhdGUtcmVzdWx0XG4gICAgICAgICAgICAgIHJlc3VsdFxuICAgICAgICAgICAgICAoc2VnLT5tYXAgbnJlbHNlZyBzb3VyY2UtbWFwKVxuICAgICAgICAgICAgICBnbGluZSkpKVxuICAgICAgICAgICBbcmVzdWx0IHJlbHNlZ10pKSkpXVxuICAgICAgKHJlY3VyIChpbmMgZ2xpbmUpIChuZXh0IGxpbmVzKSAoYXNzb2MgcmVsc2VnIDAgMCkgcmVzdWx0KSlcbiAgICAgcmVzdWx0KSkpKSlcbiJ9IHs6c3ltIHNlZy0+bWFwLCA6bWV0YSB7OmRvYyAiVGFrZSBhIHNvdXJjZSBtYXAgc2VnbWVudCByZXByZXNlbnRlZCBhcyBhIHZlY3RvclxuICAgYW5kIHJldHVybiBhIG1hcC4iLCA6YXJnbGlzdHMgKFtzZWcgc291cmNlLW1hcF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzZWctPm1hcFxuIFwiVGFrZSBhIHNvdXJjZSBtYXAgc2VnbWVudCByZXByZXNlbnRlZCBhcyBhIHZlY3RvclxcbiAgIGFuZCByZXR1cm4gYSBtYXAuXCJcbiBbc2VnIHNvdXJjZS1tYXBdXG4gKGxldFxuICBbW2djb2wgc291cmNlIGxpbmUgY29sIG5hbWVdIHNlZ11cbiAgezpnY29sIGdjb2wsXG4gICA6c291cmNlIChhZ2V0IChnb2JqL2dldCBzb3VyY2UtbWFwIFwic291cmNlc1wiKSBzb3VyY2UpLFxuICAgOmxpbmUgbGluZSxcbiAgIDpjb2wgY29sLFxuICAgOm5hbWVcbiAgICh3aGVuLWxldFxuICAgIFtuYW1lICgtPiBzZWcgbWV0YSA6bmFtZSldXG4gICAgKGFnZXQgKGdvYmovZ2V0IHNvdXJjZS1tYXAgXCJuYW1lc1wiKSBuYW1lKSl9KSlcbiJ9IHs6c3ltIHNvdXJjZS1jb21wYXJlLCA6bWV0YSB7OmRvYyAiVGFrZSBhIHNlcSBvZiBzb3VyY2UgZmlsZSBuYW1lcyBhbmQgcmV0dXJuIGEgY29tcGFyYXRvclxuICAgdGhhdCBjYW4gYmUgdXNlZCB0byBjb25zdHJ1Y3QgYSBzb3J0ZWQgbWFwLiBGb3IgcmV2ZXJzZVxuICAgc291cmNlIG1hcHMuIiwgOmFyZ2xpc3RzIChbc291cmNlc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBzb3VyY2UtY29tcGFyZVxuIFwiVGFrZSBhIHNlcSBvZiBzb3VyY2UgZmlsZSBuYW1lcyBhbmQgcmV0dXJuIGEgY29tcGFyYXRvclxcbiAgIHRoYXQgY2FuIGJlIHVzZWQgdG8gY29uc3RydWN0IGEgc29ydGVkIG1hcC4gRm9yIHJldmVyc2VcXG4gICBzb3VyY2UgbWFwcy5cIlxuIFtzb3VyY2VzXVxuIChsZXRcbiAgW3NvdXJjZXMgKGluZGV4ZWQtc291cmNlcyBzb3VyY2VzKV1cbiAgKGZuIFthIGJdIChjb21wYXJlIChzb3VyY2VzIGEpIChzb3VyY2VzIGIpKSkpKVxuIn0gezpzeW0gZGVjb2RlLXJldmVyc2UsIDptZXRhIHs6ZG9jICJDb252ZXJ0IGEgdjMgc291cmNlIG1hcCBKU09OIG9iamVjdCBpbnRvIGEgcmV2ZXJzZSBzb3VyY2UgbWFwXG4gIG1hcHBpbmcgb3JpZ2luYWwgQ2xvanVyZVNjcmlwdCBzb3VyY2UgbG9jYXRpb25zIHRvIHRoZSBnZW5lcmF0ZWRcbiAgSmF2YVNjcmlwdC4iLCA6YXJnbGlzdHMgW1tzb3VyY2UtbWFwXSBbbWFwcGluZ3Mgc291cmNlLW1hcF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBkZWNvZGUtcmV2ZXJzZVxuIFwiQ29udmVydCBhIHYzIHNvdXJjZSBtYXAgSlNPTiBvYmplY3QgaW50byBhIHJldmVyc2Ugc291cmNlIG1hcFxcbiAgbWFwcGluZyBvcmlnaW5hbCBDbG9qdXJlU2NyaXB0IHNvdXJjZSBsb2NhdGlvbnMgdG8gdGhlIGdlbmVyYXRlZFxcbiAgSmF2YVNjcmlwdC5cIlxuIChbc291cmNlLW1hcF1cbiAgKGRlY29kZS1yZXZlcnNlIChnb2JqL2dldCBzb3VyY2UtbWFwIFwibWFwcGluZ3NcIikgc291cmNlLW1hcCkpXG4gKFttYXBwaW5ncyBzb3VyY2UtbWFwXVxuICAobGV0XG4gICBbc291cmNlc1xuICAgIChnb2JqL2dldCBzb3VyY2UtbWFwIFwic291cmNlc1wiKVxuICAgIHJlbHNlZy1pbml0XG4gICAgWzAgMCAwIDAgMF1cbiAgICBsaW5lc1xuICAgIChzZXEgKHN0cmluZy9zcGxpdCBtYXBwaW5ncyAjXCI7XCIpKV1cbiAgIChsb29wXG4gICAgW2dsaW5lXG4gICAgIDBcbiAgICAgbGluZXNcbiAgICAgbGluZXNcbiAgICAgcmVsc2VnXG4gICAgIHJlbHNlZy1pbml0XG4gICAgIHJlc3VsdFxuICAgICAoc29ydGVkLW1hcC1ieSAoc291cmNlLWNvbXBhcmUgc291cmNlcykpXVxuICAgIChpZlxuICAgICBsaW5lc1xuICAgICAobGV0XG4gICAgICBbbGluZVxuICAgICAgIChmaXJzdCBsaW5lcylcbiAgICAgICBbcmVzdWx0IHJlbHNlZ11cbiAgICAgICAoaWZcbiAgICAgICAgKHN0cmluZy9ibGFuaz8gbGluZSlcbiAgICAgICAgW3Jlc3VsdCByZWxzZWddXG4gICAgICAgIChsZXRcbiAgICAgICAgIFtzZWdzIChzZXEgKHN0cmluZy9zcGxpdCBsaW5lICNcIixcIikpXVxuICAgICAgICAgKGxvb3BcbiAgICAgICAgICBbc2VncyBzZWdzIHJlbHNlZyByZWxzZWcgcmVzdWx0IHJlc3VsdF1cbiAgICAgICAgICAoaWZcbiAgICAgICAgICAgc2Vnc1xuICAgICAgICAgICAobGV0XG4gICAgICAgICAgICBbc2VnXG4gICAgICAgICAgICAgKGZpcnN0IHNlZ3MpXG4gICAgICAgICAgICAgbnJlbHNlZ1xuICAgICAgICAgICAgIChzZWctY29tYmluZSAoYmFzZTY0LXZscS9kZWNvZGUgc2VnKSByZWxzZWcpXVxuICAgICAgICAgICAgKHJlY3VyXG4gICAgICAgICAgICAgKG5leHQgc2VncylcbiAgICAgICAgICAgICBucmVsc2VnXG4gICAgICAgICAgICAgKHVwZGF0ZS1yZXZlcnNlLXJlc3VsdFxuICAgICAgICAgICAgICByZXN1bHRcbiAgICAgICAgICAgICAgKHNlZy0+bWFwIG5yZWxzZWcgc291cmNlLW1hcClcbiAgICAgICAgICAgICAgZ2xpbmUpKSlcbiAgICAgICAgICAgW3Jlc3VsdCByZWxzZWddKSkpKV1cbiAgICAgIChyZWN1ciAoaW5jIGdsaW5lKSAobmV4dCBsaW5lcykgKGFzc29jIHJlbHNlZyAwIDApIHJlc3VsdCkpXG4gICAgIHJlc3VsdCkpKSkpXG4ifSB7OnN5bSBsaW5lcy0+c2VncywgOm1ldGEgezpkb2MgIlRha2UgYSBuZXN0ZWQgc29ydGVkIG1hcCBlbmNvZGluZyBsaW5lIGFuZCBjb2x1bW4gaW5mb3JtYXRpb25cbiAgIGZvciBhIGZpbGUgYW5kIHJldHVybiBhIHZlY3RvciBvZiB2ZWN0b3JzIG9mIGVuY29kZWQgc2VnbWVudHMuXG4gICBFYWNoIHZlY3RvciByZXByZXNlbnRzIGEgbGluZSwgYW5kIHRoZSBpbnRlcm5hbCB2ZWN0b3JzIGFyZSBzZWdtZW50c1xuICAgcmVwcmVzZW50aW5nIHRoZSBjb250ZW50cyBvZiB0aGUgbGluZS4iLCA6YXJnbGlzdHMgKFtsaW5lc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBsaW5lcy0+c2Vnc1xuIFwiVGFrZSBhIG5lc3RlZCBzb3J0ZWQgbWFwIGVuY29kaW5nIGxpbmUgYW5kIGNvbHVtbiBpbmZvcm1hdGlvblxcbiAgIGZvciBhIGZpbGUgYW5kIHJldHVybiBhIHZlY3RvciBvZiB2ZWN0b3JzIG9mIGVuY29kZWQgc2VnbWVudHMuXFxuICAgRWFjaCB2ZWN0b3IgcmVwcmVzZW50cyBhIGxpbmUsIGFuZCB0aGUgaW50ZXJuYWwgdmVjdG9ycyBhcmUgc2VnbWVudHNcXG4gICByZXByZXNlbnRpbmcgdGhlIGNvbnRlbnRzIG9mIHRoZSBsaW5lLlwiXG4gW2xpbmVzXVxuIChsZXRcbiAgW3JlbHNlZyAoYXRvbSBbMCAwIDAgMCAwXSldXG4gIChyZWR1Y2VcbiAgIChmblxuICAgIFtzZWdzIGNvbHNdXG4gICAgKHN3YXAhXG4gICAgIHJlbHNlZ1xuICAgICAoZm4gW1tfIHNvdXJjZSBsaW5lIGNvbCBuYW1lXV0gWzAgc291cmNlIGxpbmUgY29sIG5hbWVdKSlcbiAgICAoY29ualxuICAgICBzZWdzXG4gICAgIChyZWR1Y2VcbiAgICAgIChmblxuICAgICAgIFtjb2xzIFtnY29sIHNpZHggbGluZSBjb2wgbmFtZSA6YXMgc2VnXV1cbiAgICAgICAobGV0XG4gICAgICAgIFtvZmZzZXQgKG1hcCAtIHNlZyBAcmVsc2VnKV1cbiAgICAgICAgKHN3YXAhXG4gICAgICAgICByZWxzZWdcbiAgICAgICAgIChmbiBbW18gXyBfIF8gbG5hbWVdXSBbZ2NvbCBzaWR4IGxpbmUgY29sIChvciBuYW1lIGxuYW1lKV0pKVxuICAgICAgICAoY29uaiBjb2xzIChiYXNlNjQtdmxxL2VuY29kZSBvZmZzZXQpKSkpXG4gICAgICBbXVxuICAgICAgY29scykpKVxuICAgW11cbiAgIGxpbmVzKSkpXG4ifSB7OnN5bSBtZXJnZS1zb3VyY2UtbWFwcywgOm1ldGEgezpkb2MgIk1lcmdlIGFuIGludGVybmFsIHNvdXJjZSBtYXAgcmVwcmVzZW50YXRpb24gb2YgYSBzaW5nbGVcbiAgIENsb2p1cmVTY3JpcHQgZmlsZSBtYXBwaW5nIG9yaWdpbmFsIHRvIGdlbmVyYXRlZCB3aXRoIGFcbiAgIHNlY29uZCBzb3VyY2UgbWFwIG1hcHBpbmcgb3JpZ2luYWwgSlMgdG8gZ2VuZXJhdGVkIEpTLlxuICAgVGhlIGlzIHRvIHN1cHBvcnQgc291cmNlIG1hcHMgdGhhdCB3b3JrIHRocm91Z2ggbXVsdGlwbGVcbiAgIGNvbXBpbGF0aW9uIHN0ZXBzIGxpa2UgR29vZ2xlIENsb3N1cmUgb3B0aW1pemF0aW9uIHBhc3Nlcy4iLCA6YXJnbGlzdHMgKFtjbGpzLW1hcCBqcy1tYXBdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWVyZ2Utc291cmNlLW1hcHNcbiBcIk1lcmdlIGFuIGludGVybmFsIHNvdXJjZSBtYXAgcmVwcmVzZW50YXRpb24gb2YgYSBzaW5nbGVcXG4gICBDbG9qdXJlU2NyaXB0IGZpbGUgbWFwcGluZyBvcmlnaW5hbCB0byBnZW5lcmF0ZWQgd2l0aCBhXFxuICAgc2Vjb25kIHNvdXJjZSBtYXAgbWFwcGluZyBvcmlnaW5hbCBKUyB0byBnZW5lcmF0ZWQgSlMuXFxuICAgVGhlIGlzIHRvIHN1cHBvcnQgc291cmNlIG1hcHMgdGhhdCB3b3JrIHRocm91Z2ggbXVsdGlwbGVcXG4gICBjb21waWxhdGlvbiBzdGVwcyBsaWtlIEdvb2dsZSBDbG9zdXJlIG9wdGltaXphdGlvbiBwYXNzZXMuXCJcbiBbY2xqcy1tYXAganMtbWFwXVxuIChsb29wXG4gIFtsaW5lLW1hcC1zZXEgKHNlcSBjbGpzLW1hcCkgbmV3LWxpbmVzIChzb3J0ZWQtbWFwKV1cbiAgKGlmXG4gICBsaW5lLW1hcC1zZXFcbiAgIChsZXRcbiAgICBbW2xpbmUgY29sLW1hcF1cbiAgICAgKGZpcnN0IGxpbmUtbWFwLXNlcSlcbiAgICAgbmV3LWNvbHNcbiAgICAgKGxvb3BcbiAgICAgIFtjb2wtbWFwLXNlcSAoc2VxIGNvbC1tYXApIG5ldy1jb2xzIChzb3J0ZWQtbWFwKV1cbiAgICAgIChpZlxuICAgICAgIGNvbC1tYXAtc2VxXG4gICAgICAgKGxldFxuICAgICAgICBbW2NvbCBpbmZvc10gKGZpcnN0IGNvbC1tYXAtc2VxKV1cbiAgICAgICAgKHJlY3VyXG4gICAgICAgICAobmV4dCBjb2wtbWFwLXNlcSlcbiAgICAgICAgIChhc3NvY1xuICAgICAgICAgIG5ldy1jb2xzXG4gICAgICAgICAgY29sXG4gICAgICAgICAgKHJlZHVjZVxuICAgICAgICAgICAoZm5cbiAgICAgICAgICAgIFt2IHs6a2V5cyBbZ2xpbmUgZ2NvbF19XVxuICAgICAgICAgICAgKGludG8gdiAoZ2V0LWluIGpzLW1hcCBbZ2xpbmUgZ2NvbF0pKSlcbiAgICAgICAgICAgW11cbiAgICAgICAgICAgaW5mb3MpKSkpXG4gICAgICAgbmV3LWNvbHMpKV1cbiAgICAocmVjdXIgKG5leHQgbGluZS1tYXAtc2VxKSAoYXNzb2MgbmV3LWxpbmVzIGxpbmUgbmV3LWNvbHMpKSlcbiAgIG5ldy1saW5lcykpKVxuIn0gezpzeW0gdXBkYXRlLXJldmVyc2UtcmVzdWx0LCA6bWV0YSB7OmRvYyAiSGVscGVyIGZvciBkZWNvZGUtcmV2ZXJzZS4gVGFrZSBhIHJldmVyc2Ugc291cmNlIG1hcCBhbmRcbiAgdXBkYXRlIGl0IHdpdGggYSBzZWdtZW50IG1hcC4iLCA6YXJnbGlzdHMgKFtyZXN1bHQgc2VnbWFwIGdsaW5lXSl9LCA6c291cmNlICIoZGVmblxuIHVwZGF0ZS1yZXZlcnNlLXJlc3VsdFxuIFwiSGVscGVyIGZvciBkZWNvZGUtcmV2ZXJzZS4gVGFrZSBhIHJldmVyc2Ugc291cmNlIG1hcCBhbmRcXG4gIHVwZGF0ZSBpdCB3aXRoIGEgc2VnbWVudCBtYXAuXCJcbiBbcmVzdWx0IHNlZ21hcCBnbGluZV1cbiAobGV0XG4gIFt7OmtleXMgW2djb2wgc291cmNlIGxpbmUgY29sIG5hbWVdfVxuICAgc2VnbWFwXG4gICBkXG4gICB7OmdsaW5lIGdsaW5lLCA6Z2NvbCBnY29sfVxuICAgZFxuICAgKGlmIG5hbWUgKGFzc29jIGQgOm5hbWUgbmFtZSkgZCldXG4gICh1cGRhdGUtaW5cbiAgIHJlc3VsdFxuICAgW3NvdXJjZV1cbiAgIChmbmlsXG4gICAgKGZuXG4gICAgIFttXVxuICAgICAodXBkYXRlLWluXG4gICAgICBtXG4gICAgICBbbGluZV1cbiAgICAgIChmbmlsXG4gICAgICAgKGZuIFttXSAodXBkYXRlLWluIG0gW2NvbF0gKGZuaWwgKGZuIFt2XSAoY29uaiB2IGQpKSBbXSkpKVxuICAgICAgIChzb3J0ZWQtbWFwKSkpKVxuICAgIChzb3J0ZWQtbWFwKSkpKSlcbiJ9IHs6c3ltIGluZGV4ZWQtc291cmNlcywgOm1ldGEgezpkb2MgIlRha2UgYSBzZXEgb2Ygc291cmNlIGZpbGUgbmFtZXMgYW5kIHJldHVybiBhIG1hcCBmcm9tXG4gICBmaWxlIG51bWJlciB0byBpbnRlZ2VyIGluZGV4LiBGb3IgcmV2ZXJzZSBzb3VyY2UgbWFwcy4iLCA6YXJnbGlzdHMgKFtzb3VyY2VzXSl9LCA6c291cmNlICIoZGVmblxuIGluZGV4ZWQtc291cmNlc1xuIFwiVGFrZSBhIHNlcSBvZiBzb3VyY2UgZmlsZSBuYW1lcyBhbmQgcmV0dXJuIGEgbWFwIGZyb21cXG4gICBmaWxlIG51bWJlciB0byBpbnRlZ2VyIGluZGV4LiBGb3IgcmV2ZXJzZSBzb3VyY2UgbWFwcy5cIlxuIFtzb3VyY2VzXVxuICgtPj5cbiAgc291cmNlc1xuICAobWFwLWluZGV4ZWQgKGZuIFthIGJdIFthIGJdKSlcbiAgKHJlZHVjZSAoZm4gW20gW2kgdl1dIChhc3NvYyBtIHYgaSkpIHt9KSkpXG4ifSB7OnN5bSBzZWctY29tYmluZSwgOm1ldGEgezpkb2MgIkNvbWJpbmUgYSBzb3VyY2UgbWFwIHNlZ21lbnQgdmVjdG9yIGFuZCBhIHJlbGF0aXZlXG4gICBzb3VyY2UgbWFwIHNlZ21lbnQgdmVjdG9yIGFuZCBjb21iaW5lIHRoZW0gdG8gZ2V0XG4gICBhbiBhYnNvbHV0ZSBzZWdtZW50IHBvc2l0aXRvbiBpbmZvcm1hdGlvbiBhcyBhIHZlY3Rvci4iLCA6YXJnbGlzdHMgKFtzZWcgcmVsc2VnXSl9LCA6c291cmNlICIoZGVmblxuIHNlZy1jb21iaW5lXG4gXCJDb21iaW5lIGEgc291cmNlIG1hcCBzZWdtZW50IHZlY3RvciBhbmQgYSByZWxhdGl2ZVxcbiAgIHNvdXJjZSBtYXAgc2VnbWVudCB2ZWN0b3IgYW5kIGNvbWJpbmUgdGhlbSB0byBnZXRcXG4gICBhbiBhYnNvbHV0ZSBzZWdtZW50IHBvc2l0aXRvbiBpbmZvcm1hdGlvbiBhcyBhIHZlY3Rvci5cIlxuIFtzZWcgcmVsc2VnXVxuIChsZXRcbiAgW1tnY29sIHNvdXJjZSBsaW5lIGNvbCBuYW1lXVxuICAgc2VnXG4gICBbcmdjb2wgcnNvdXJjZSBybGluZSByY29sIHJuYW1lXVxuICAgcmVsc2VnXG4gICBuc2VnXG4gICBbKCsgZ2NvbCByZ2NvbClcbiAgICAoKyAob3Igc291cmNlIDApIHJzb3VyY2UpXG4gICAgKCsgKG9yIGxpbmUgMCkgcmxpbmUpXG4gICAgKCsgKG9yIGNvbCAwKSByY29sKVxuICAgICgrIChvciBuYW1lIDApIHJuYW1lKV1dXG4gIChpZiBuYW1lICh3aXRoLW1ldGEgbnNlZyB7Om5hbWUgKCsgbmFtZSBybmFtZSl9KSBuc2VnKSkpXG4ifSksIG9ha2NsanMudG9vbHMucmVhZGVyLmltcGwuY29tbW9ucyAoezpzeW0gbWF0Y2gtbnVtYmVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWF0Y2gtbnVtYmVyXG4gW3NdXG4gKGlmXG4gIChtYXRjaGVzPyBpbnQtcGF0dGVybiBzKVxuICAobWF0Y2gtaW50IHMpXG4gIChpZlxuICAgKG1hdGNoZXM/IGZsb2F0LXBhdHRlcm4gcylcbiAgIChtYXRjaC1mbG9hdCBzKVxuICAgKHdoZW4gKG1hdGNoZXM/IHJhdGlvLXBhdHRlcm4gcykgKG1hdGNoLXJhdGlvIHMpKSkpKVxuIn0gezpzeW0gc2tpcC1saW5lLCA6bWV0YSB7OmRvYyAiQWR2YW5jZXMgdGhlIHJlYWRlciB0byB0aGUgZW5kIG9mIGEgbGluZS4gUmV0dXJucyB0aGUgcmVhZGVyIiwgOmFyZ2xpc3RzIChbcmVhZGVyXSl9LCA6c291cmNlICIoZGVmblxuIHNraXAtbGluZVxuIFwiQWR2YW5jZXMgdGhlIHJlYWRlciB0byB0aGUgZW5kIG9mIGEgbGluZS4gUmV0dXJucyB0aGUgcmVhZGVyXCJcbiBbcmVhZGVyXVxuIChsb29wIFtdICh3aGVuLW5vdCAobmV3bGluZT8gKHJlYWQtY2hhciByZWFkZXIpKSAocmVjdXIpKSlcbiByZWFkZXIpXG4ifSB7OnN5bSBpbnQtcGF0dGVybiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBpbnQtcGF0dGVyblxuICNcIl4oWy0rXT8pKD86KDApfChbMS05XVswLTldKil8MFt4WF0oWzAtOUEtRmEtZl0rKXwwKFswLTddKyl8KFsxLTldWzAtOV0/KVtyUl0oWzAtOUEtWmEtel0rKXwwWzAtOV0rKShOKT8kXCIpXG4ifSB7OnN5bSByZWFkLWNvbW1lbnQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyICYgX10pfSwgOnNvdXJjZSAiKGRlZm4gcmVhZC1jb21tZW50IFtyZHIgJiBfXSAoc2tpcC1saW5lIHJkcikpXG4ifSB7OnN5bSBwYXJzZS1zeW1ib2wsIDptZXRhIHs6ZG9jICJQYXJzZXMgYSBzdHJpbmcgaW50byBhIHZlY3RvciBvZiB0aGUgbmFtZXNwYWNlIGFuZCBzeW1ib2wiLCA6YXJnbGlzdHMgKFt0b2tlbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwYXJzZS1zeW1ib2xcbiBcIlBhcnNlcyBhIHN0cmluZyBpbnRvIGEgdmVjdG9yIG9mIHRoZSBuYW1lc3BhY2UgYW5kIHN5bWJvbFwiXG4gW3Rva2VuXVxuICh3aGVuLW5vdFxuICAob3JcbiAgIChpZGVudGljYWw/IFwiXCIgdG9rZW4pXG4gICAodHJ1ZT8gKC50ZXN0ICNcIjokXCIgdG9rZW4pKVxuICAgKHRydWU/ICgudGVzdCAjXCJeOjpcIiB0b2tlbikpKVxuICAobGV0XG4gICBbbnMtaWR4XG4gICAgKC5pbmRleE9mIHRva2VuIFwiL1wiKVxuICAgIG5zXG4gICAgKHdoZW4gKHBvcz8gbnMtaWR4KSAoc3VicyB0b2tlbiAwIG5zLWlkeCkpXVxuICAgKGlmLW5vdFxuICAgIChuaWw/IG5zKVxuICAgIChsZXRcbiAgICAgW25zLWlkeCAoaW5jIG5zLWlkeCldXG4gICAgICh3aGVuLW5vdFxuICAgICAgKD09IG5zLWlkeCAoY291bnQgdG9rZW4pKVxuICAgICAgKGxldFxuICAgICAgIFtzeW0gKHN1YnMgdG9rZW4gbnMtaWR4KV1cbiAgICAgICAod2hlblxuICAgICAgICAoYW5kXG4gICAgICAgICAobm90IChudW1lcmljPyAobnRoIHN5bSAwKSkpXG4gICAgICAgICAobm90IChpZGVudGljYWw/IFwiXCIgc3ltKSlcbiAgICAgICAgIChmYWxzZT8gKC50ZXN0ICNcIjokXCIgbnMpKVxuICAgICAgICAgKG9yIChpZGVudGljYWw/IHN5bSBcIi9cIikgKD09IC0xICguaW5kZXhPZiBzeW0gXCIvXCIpKSkpXG4gICAgICAgIFtucyBzeW1dKSkpKVxuICAgICh3aGVuXG4gICAgIChvciAoaWRlbnRpY2FsPyB0b2tlbiBcIi9cIikgKD09IC0xICguaW5kZXhPZiB0b2tlbiBcIi9cIikpKVxuICAgICBbbmlsIHRva2VuXSkpKSkpXG4ifSB7OnN5bSBudW1iZXItbGl0ZXJhbD8sIDptZXRhIHs6ZG9jICJDaGVja3Mgd2hldGhlciB0aGUgcmVhZGVyIGlzIGF0IHRoZSBzdGFydCBvZiBhIG51bWJlciBsaXRlcmFsIiwgOmFyZ2xpc3RzIChbcmVhZGVyIGluaXRjaF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBudW1iZXItbGl0ZXJhbD9cbiBcIkNoZWNrcyB3aGV0aGVyIHRoZSByZWFkZXIgaXMgYXQgdGhlIHN0YXJ0IG9mIGEgbnVtYmVyIGxpdGVyYWxcIlxuIFtyZWFkZXIgaW5pdGNoXVxuIChvclxuICAobnVtZXJpYz8gaW5pdGNoKVxuICAoYW5kXG4gICAob3IgKGlkZW50aWNhbD8gXFwrIGluaXRjaCkgKGlkZW50aWNhbD8gXFwtIGluaXRjaCkpXG4gICAobnVtZXJpYz8gKHBlZWstY2hhciByZWFkZXIpKSkpKVxuIn0gezpzeW0gcmVhZC1wYXN0LCA6bWV0YSB7OmRvYyAiUmVhZCB1bnRpbCBmaXJzdCBjaGFyYWN0ZXIgdGhhdCBkb2Vzbid0IG1hdGNoIHByZWQsIHJldHVybmluZ1xuICAgY2hhci4iLCA6YXJnbGlzdHMgKFtwcmVkIHJkcl0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWFkLXBhc3RcbiBcIlJlYWQgdW50aWwgZmlyc3QgY2hhcmFjdGVyIHRoYXQgZG9lc24ndCBtYXRjaCBwcmVkLCByZXR1cm5pbmdcXG4gICBjaGFyLlwiXG4gW3ByZWQgcmRyXVxuIChsb29wIFtjaCAocmVhZC1jaGFyIHJkcildIChpZiAocHJlZCBjaCkgKHJlY3VyIChyZWFkLWNoYXIgcmRyKSkgY2gpKSlcbiJ9IHs6c3ltIGZsb2F0LXBhdHRlcm4sIDptZXRhIHt9LCA6c291cmNlICIoZGVmIGZsb2F0LXBhdHRlcm4gI1wiKFstK10/WzAtOV0rKFxcLlswLTldKik/KFtlRV1bLStdP1swLTldKyk/KShNKT9cIilcbiJ9IHs6c3ltIG1hdGNoZXM/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3BhdHRlcm4gc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBtYXRjaGVzP1xuIFtwYXR0ZXJuIHNdXG4gKGxldCBbW21hdGNoXSAocmUtZmluZCBwYXR0ZXJuIHMpXSAoaWRlbnRpY2FsPyBtYXRjaCBzKSkpXG4ifSB7OnN5bSB0aHJvd2luZy1yZWFkZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbXNnXSl9LCA6c291cmNlICIoZGVmbiB0aHJvd2luZy1yZWFkZXIgW21zZ10gKGZuIFtyZHIgJiBfXSAocmVhZGVyLWVycm9yIHJkciBtc2cpKSlcbiJ9IHs6c3ltIHJhdGlvLXBhdHRlcm4sIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHJhdGlvLXBhdHRlcm4gI1wiKFstK10/WzAtOV0rKS8oWzAtOV0rKVwiKVxuIn0pLCBkeW5hZG9jLnRyYW5zZm9ybSAoezpzeW0gd2l0aC1mb2N1cy0+YmluZGluZywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt3aXRoLWZvY3VzXSl9LCA6c291cmNlICIoZGVmblxuIHdpdGgtZm9jdXMtPmJpbmRpbmdcbiBbd2l0aC1mb2N1c11cbiAobGV0XG4gIFtmb3JtXG4gICAob3IgKDpmb3JtIHdpdGgtZm9jdXMpICg6YmluZGluZyB3aXRoLWZvY3VzKSlcbiAgIFtiaW5kaW5nLXR5cGUgYmluZGluZy12YWxdXG4gICBmb3JtXVxuICAod2hlbiAoI3s6bG9jYWwtc3ltYm9sIDpzeW19IGJpbmRpbmctdHlwZSkgYmluZGluZy12YWwpKSlcbiJ9IHs6c3ltIGFkZC1mb2N1cywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmb3JtIHdpdGgtZm9jdXMgYm9keV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhZGQtZm9jdXNcbiBbZm9ybSB3aXRoLWZvY3VzIGJvZHldXG4gKGlmLWxldFxuICBbYmluZCAod2l0aC1mb2N1cy0+YmluZGluZyB3aXRoLWZvY3VzKV1cbiAgKHBvc3R3YWxrIChmbiBbeF0gKGlmICg9IHggYmluZCkgZm9ybSB4KSkgYm9keSlcbiAgZm9ybSkpXG4ifSB7OnN5bSBhZGQtY2FyZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmb3JtIHdpdGgtY2FyZCBpZF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhZGQtY2FyZFxuIFtmb3JtIHdpdGgtY2FyZCBpZF1cbiAobGlzdFxuICAnbGV0XG4gIFt3aXRoLWNhcmRcbiAgICM/KDpjbGpzIChsaXN0IChxdW90ZSAuZ2V0RWxlbWVudEJ5SWQpIChxdW90ZSBqcy9kb2N1bWVudCkgaWQpIDpjbGogaWQpXVxuICBmb3JtKSlcbiJ9IHs6c3ltIGFkZC1jYWxsYmFjaywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmb3JtIHdpdGgtY2FsbGJhY2tdKX0sIDpzb3VyY2UgIihkZWZuXG4gYWRkLWNhbGxiYWNrXG4gW2Zvcm0gd2l0aC1jYWxsYmFja11cbiAobGlzdFxuICAnbGV0XG4gIFsnZXMtY2hhbm5lbFxuICAgJyhkeW5hZG9jLmFsaWFzZXMvY2hhbilcbiAgIHdpdGgtY2FsbGJhY2tcbiAgICcoZm4gW2RhdGFdIChkeW5hZG9jLmFsaWFzZXMvcHV0ISBlcy1jaGFubmVsIGRhdGEpKV1cbiAgZm9ybVxuICAnKGR5bmFkb2MuYWxpYXNlcy88ISEgZXMtY2hhbm5lbCkpKVxuIn0gezpzeW0gdHJhbnNmb3JtLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW2V4YW1wbGVdIFt7OmtleXMgW2JvZHkgaWQgd2l0aC1mb2N1cyB3aXRoLWNhcmQgd2l0aC1jYWxsYmFja119IGZvcm1dXX0sIDpzb3VyY2UgIihkZWZuXG4gdHJhbnNmb3JtXG4gKFtleGFtcGxlXVxuICAodHJhbnNmb3JtXG4gICBleGFtcGxlXG4gICAob3IgKHNvbWUtPiBleGFtcGxlIDp3aXRoLWZvY3VzIDppbml0LWV4cHIpICg6Ym9keSBleGFtcGxlKSkpKVxuIChbezprZXlzIFtib2R5IGlkIHdpdGgtZm9jdXMgd2l0aC1jYXJkIHdpdGgtY2FsbGJhY2tdfSBmb3JtXVxuICAoY29uZC0+XG4gICBmb3JtXG4gICAoc29tZT8gd2l0aC1mb2N1cylcbiAgIChhZGQtZm9jdXMgd2l0aC1mb2N1cyBib2R5KVxuICAgKHNvbWU/IHdpdGgtY2FyZClcbiAgIChhZGQtY2FyZCB3aXRoLWNhcmQgaWQpXG4gICAoc29tZT8gd2l0aC1jYWxsYmFjaylcbiAgIChhZGQtY2FsbGJhY2sgd2l0aC1jYWxsYmFjaykpKSlcbiJ9KSwgb2RveWxlLnJ1bGVzICh7OnN5bSAtPnJ1bGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbW3J1bGUtbmFtZSBydWxlXV0pfSwgOnNvdXJjZSAiKGRlZm5cbiAtPnJ1bGVcbiBbW3J1bGUtbmFtZSBydWxlXV1cbiAobGV0XG4gIFt7OmtleXMgW3doYXQtYmxvY2sgd2hlbi1ibG9jayB0aGVuLWJsb2NrIHRoZW4tZmluYWxseS1ibG9ja119XG4gICBydWxlXG4gICBjb25kaXRpb25zXG4gICAobWFwdiAtPmNvbmRpdGlvbiAoOmJvZHkgd2hhdC1ibG9jaykpXG4gICB3aGVuLWJvZHlcbiAgICg6Ym9keSB3aGVuLWJsb2NrKVxuICAgd2hlbi1ib2R5XG4gICAoaWYgKD4gKGNvdW50IHdoZW4tYm9keSkgMSkgKGNvbnMgJ2FuZCB3aGVuLWJvZHkpIChmaXJzdCB3aGVuLWJvZHkpKVxuICAgdGhlbi1ib2R5XG4gICAoOmJvZHkgdGhlbi1ibG9jaylcbiAgIHRoZW4tZmluYWxseS1ib2R5XG4gICAoOmJvZHkgdGhlbi1maW5hbGx5LWJsb2NrKVxuICAgc3ltc1xuICAgKC0+PlxuICAgIGNvbmRpdGlvbnNcbiAgICAobWFwY2F0IDpiaW5kaW5ncylcbiAgICAobWFwIDpzeW0pXG4gICAgKGZpbHRlciBzaW1wbGUtc3ltYm9sPylcbiAgICBzZXRcbiAgICB2ZWMpXVxuICB7OnJ1bGUtbmFtZSBydWxlLW5hbWUsXG4gICA6Zm4tbmFtZVxuICAgKC0+XG4gICAgKHN0ciAobmFtZXNwYWNlIHJ1bGUtbmFtZSkgXCItXCIgKG5hbWUgcnVsZS1uYW1lKSlcbiAgICAoc3RyL3JlcGxhY2UgXCIuXCIgXCItXCIpXG4gICAgc3ltYm9sKSxcbiAgIDpjb25kaXRpb25zIGNvbmRpdGlvbnMsXG4gICA6YXJnIHs6a2V5cyBzeW1zfSxcbiAgIDp3aGVuLWJvZHkgd2hlbi1ib2R5LFxuICAgOnRoZW4tYm9keSB0aGVuLWJvZHksXG4gICA6dGhlbi1maW5hbGx5LWJvZHkgdGhlbi1maW5hbGx5LWJvZHl9KSlcbiJ9IHs6c3ltIGZpcmUtcnVsZXMsIDptZXRhIHs6ZG9jICJGaXJlcyA6dGhlbiBhbmQgOnRoZW4tZmluYWxseSBibG9ja3MgZm9yIGFueSBydWxlcyB3aXRoIGEgY29tcGxldGUgc2V0IG9mIG1hdGNoZXMuIiwgOmFyZ2xpc3RzIChbc2Vzc2lvbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBmaXJlLXJ1bGVzXG4gXCJGaXJlcyA6dGhlbiBhbmQgOnRoZW4tZmluYWxseSBibG9ja3MgZm9yIGFueSBydWxlcyB3aXRoIGEgY29tcGxldGUgc2V0IG9mIG1hdGNoZXMuXCJcbiBbc2Vzc2lvbl1cbiAobGV0XG4gIFt0aGVuLXF1ZXVlXG4gICAoOnRoZW4tcXVldWUgc2Vzc2lvbilcbiAgIHRoZW4tZmluYWxseS1xdWV1ZVxuICAgKDp0aGVuLWZpbmFsbHktcXVldWUgc2Vzc2lvbildXG4gIChpZlxuICAgKGFuZFxuICAgIChvciAoc2VxIHRoZW4tcXVldWUpIChzZXEgdGhlbi1maW5hbGx5LXF1ZXVlKSlcbiAgICAobmlsPyAqc2Vzc2lvbiopKVxuICAgKGxldFxuICAgIFtzZXNzaW9uXG4gICAgIChhc3NvYyBzZXNzaW9uIDp0aGVuLXF1ZXVlICN7fSA6dGhlbi1maW5hbGx5LXF1ZXVlICN7fSlcbiAgICAgc2Vzc2lvblxuICAgICAocmVkdWNlXG4gICAgICAoZm5cbiAgICAgICBbc2Vzc2lvbiBbbm9kZS1pZCBfXV1cbiAgICAgICAobGV0XG4gICAgICAgIFtub2RlLXBhdGggWzpiZXRhLW5vZGVzIG5vZGUtaWRdXVxuICAgICAgICAodXBkYXRlLWluIHNlc3Npb24gbm9kZS1wYXRoIGFzc29jIDp0cmlnZ2VyIGZhbHNlKSkpXG4gICAgICBzZXNzaW9uXG4gICAgICB0aGVuLXF1ZXVlKVxuICAgICB0aGVuLWZuc1xuICAgICAocmVkdWNlXG4gICAgICAoZm5cbiAgICAgICBbcXVldWUgW25vZGUtaWQgaWQrYXR0cnNdXVxuICAgICAgIChsZXRcbiAgICAgICAgW25vZGUtcGF0aFxuICAgICAgICAgWzpiZXRhLW5vZGVzIG5vZGUtaWRdXG4gICAgICAgICBub2RlXG4gICAgICAgICAoZ2V0LWluIHNlc3Npb24gbm9kZS1wYXRoKVxuICAgICAgICAgezprZXlzIFttYXRjaGVzIHRoZW4tZm5dfVxuICAgICAgICAgbm9kZV1cbiAgICAgICAgKG9yXG4gICAgICAgICAod2hlbi1sZXRcbiAgICAgICAgICBbezprZXlzIFt2YXJzIGVuYWJsZWRdfSAoZ2V0IG1hdGNoZXMgaWQrYXR0cnMpXVxuICAgICAgICAgICh3aGVuIGVuYWJsZWQgKGNvbmogcXVldWUgW3RoZW4tZm4gdmFyc10pKSlcbiAgICAgICAgIHF1ZXVlKSkpXG4gICAgICBbXVxuICAgICAgdGhlbi1xdWV1ZSlcbiAgICAgc2Vzc2lvblxuICAgICAocmVkdWNlXG4gICAgICAoZm5cbiAgICAgICBbc2Vzc2lvbiBbdGhlbi1mbiBtYXRjaF1dXG4gICAgICAgKGJpbmRpbmdcbiAgICAgICAgWypzZXNzaW9uKlxuICAgICAgICAgc2Vzc2lvblxuICAgICAgICAgKm11dGFibGUtc2Vzc2lvbipcbiAgICAgICAgICh2b2xhdGlsZSEgc2Vzc2lvbilcbiAgICAgICAgICptYXRjaCpcbiAgICAgICAgIG1hdGNoXVxuICAgICAgICAodGhlbi1mbiBtYXRjaClcbiAgICAgICAgQCptdXRhYmxlLXNlc3Npb24qKSlcbiAgICAgIHNlc3Npb25cbiAgICAgIHRoZW4tZm5zKVxuICAgICB0aGVuLWZpbmFsbHktZm5zXG4gICAgIChyZWR1Y2VcbiAgICAgIChmblxuICAgICAgIFtxdWV1ZSBub2RlLWlkXVxuICAgICAgIChsZXRcbiAgICAgICAgW25vZGUtcGF0aFxuICAgICAgICAgWzpiZXRhLW5vZGVzIG5vZGUtaWRdXG4gICAgICAgICBub2RlXG4gICAgICAgICAoZ2V0LWluIHNlc3Npb24gbm9kZS1wYXRoKVxuICAgICAgICAgezprZXlzIFt0aGVuLWZpbmFsbHktZm5dfVxuICAgICAgICAgbm9kZV1cbiAgICAgICAgKGNvbmogcXVldWUgdGhlbi1maW5hbGx5LWZuKSkpXG4gICAgICBbXVxuICAgICAgdGhlbi1maW5hbGx5LXF1ZXVlKVxuICAgICBzZXNzaW9uXG4gICAgIChyZWR1Y2VcbiAgICAgIChmblxuICAgICAgIFtzZXNzaW9uIHRoZW4tZmluYWxseS1mbl1cbiAgICAgICAoYmluZGluZ1xuICAgICAgICBbKnNlc3Npb24qIHNlc3Npb24gKm11dGFibGUtc2Vzc2lvbiogKHZvbGF0aWxlISBzZXNzaW9uKV1cbiAgICAgICAgKHRoZW4tZmluYWxseS1mbilcbiAgICAgICAgQCptdXRhYmxlLXNlc3Npb24qKSlcbiAgICAgIHNlc3Npb25cbiAgICAgIHRoZW4tZmluYWxseS1mbnMpXVxuICAgIChmaXJlLXJ1bGVzIHNlc3Npb24pKVxuICAgc2Vzc2lvbikpKVxuIn0gezpzeW0gaW5zZXJ0LCA6bWV0YSB7OmRvYyAiSW5zZXJ0cyBhIGZhY3QgaW50byB0aGUgc2Vzc2lvbi4gQ2FuIG9wdGlvbmFsbHkgaW5zZXJ0IG11bHRpcGxlIGZhY3RzIHdpdGggdGhlIHNhbWUgaWQuIiwgOmFyZ2xpc3RzIFtbc2Vzc2lvbiBbaWQgYXR0ciB2YWx1ZV1dIFtzZXNzaW9uIGlkIGF0dHItPnZhbHVlXSBbc2Vzc2lvbiBpZCBhdHRyIHZhbHVlXV19LCA6c291cmNlICIoZGVmblxuIGluc2VydFxuIFwiSW5zZXJ0cyBhIGZhY3QgaW50byB0aGUgc2Vzc2lvbi4gQ2FuIG9wdGlvbmFsbHkgaW5zZXJ0IG11bHRpcGxlIGZhY3RzIHdpdGggdGhlIHNhbWUgaWQuXCJcbiAoW3Nlc3Npb24gW2lkIGF0dHIgdmFsdWVdXSAoaW5zZXJ0IHNlc3Npb24gaWQgYXR0ciB2YWx1ZSkpXG4gKFtzZXNzaW9uIGlkIGF0dHItPnZhbHVlXVxuICAocmVkdWNlLWt2XG4gICAoZm4gW3Nlc3Npb24gYXR0ciB2YWx1ZV0gKGluc2VydCBzZXNzaW9uIGlkIGF0dHIgdmFsdWUpKVxuICAgc2Vzc2lvblxuICAgYXR0ci0+dmFsdWUpKVxuIChbc2Vzc2lvbiBpZCBhdHRyIHZhbHVlXVxuICAoLT4+XG4gICAoZ2V0LWFscGhhLW5vZGVzLWZvci1mYWN0XG4gICAgc2Vzc2lvblxuICAgICg6YWxwaGEtbm9kZSBzZXNzaW9uKVxuICAgIGlkXG4gICAgYXR0clxuICAgIHZhbHVlXG4gICAgdHJ1ZSlcbiAgICh1cHNlcnQtZmFjdCBzZXNzaW9uIGlkIGF0dHIgdmFsdWUpKSkpXG4ifSB7OnN5bSAqbWF0Y2gqLCA6bWV0YSB7OmRvYyAiUHJvdmlkZXMgYSBtYXAgb2YgYWxsIHRoZSBtYXRjaGVkIHZhbHVlcyBmcm9tIGluc2lkZSBhIDp0aGVuIGJsb2NrLiJ9LCA6c291cmNlICIoZGVmICptYXRjaCogbmlsKVxuIn0gezpzeW0gYWRkLXJ1bGUsIDptZXRhIHs6ZG9jICJBZGRzIGEgcnVsZSB0byB0aGUgZ2l2ZW4gc2Vzc2lvbi4iLCA6YXJnbGlzdHMgKFtzZXNzaW9uIHJ1bGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gYWRkLXJ1bGVcbiBcIkFkZHMgYSBydWxlIHRvIHRoZSBnaXZlbiBzZXNzaW9uLlwiXG4gW3Nlc3Npb24gcnVsZV1cbiAod2hlblxuICAoZ2V0LWluIHNlc3Npb24gWzpydWxlLWlkcyAoOm5hbWUgcnVsZSldKVxuICAodGhyb3cgKGV4LWluZm8gKHN0ciAoOm5hbWUgcnVsZSkgXCIgYWxyZWFkeSBleGlzdHMgaW4gc2Vzc2lvblwiKSB7fSkpKVxuIChsZXRcbiAgW2NvbmRpdGlvbnNcbiAgICg6Y29uZGl0aW9ucyBydWxlKVxuICAgc2Vzc2lvblxuICAgKHJlZHVjZSBhZGQtY29uZGl0aW9uIHNlc3Npb24gY29uZGl0aW9ucylcbiAgIGxlYWYtbm9kZS1pZFxuICAgKC0+IHNlc3Npb24gOm1lbS1ub2RlLWlkcyBsYXN0KVxuICAgYmluZGluZ3NcbiAgICg6YmluZGluZ3Mgc2Vzc2lvbilcbiAgIHNlc3Npb25cbiAgIChyZWR1Y2VcbiAgICAoZm5cbiAgICAgW3Nlc3Npb24gbWVtLW5vZGUtaWRdXG4gICAgICh1cGRhdGUtaW5cbiAgICAgIHNlc3Npb25cbiAgICAgIFs6YmV0YS1ub2RlcyBtZW0tbm9kZS1pZF1cbiAgICAgIChmbiBbbWVtLW5vZGVdIChhc3NvYyBtZW0tbm9kZSA6bGVhZi1ub2RlLWlkIGxlYWYtbm9kZS1pZCkpKSlcbiAgICBzZXNzaW9uXG4gICAgKDptZW0tbm9kZS1pZHMgc2Vzc2lvbikpXG4gICBzZXNzaW9uXG4gICAocmVkdWNlXG4gICAgKGZuXG4gICAgIFtzZXNzaW9uIGpvaW4tbm9kZS1pZF1cbiAgICAgKHVwZGF0ZS1pblxuICAgICAgc2Vzc2lvblxuICAgICAgWzpiZXRhLW5vZGVzIGpvaW4tbm9kZS1pZF1cbiAgICAgIChmblxuICAgICAgIFtqb2luLW5vZGVdXG4gICAgICAgKGFzc29jXG4gICAgICAgIGpvaW4tbm9kZVxuICAgICAgICA6aWQta2V5XG4gICAgICAgIChzb21lXG4gICAgICAgICAoZm5cbiAgICAgICAgICBbezprZXlzIFtmaWVsZCBrZXldfV1cbiAgICAgICAgICAod2hlblxuICAgICAgICAgICAoYW5kICg9IDppZCBmaWVsZCkgKGNvbnRhaW5zPyAoOmpvaW5zIGJpbmRpbmdzKSBrZXkpKVxuICAgICAgICAgICBrZXkpKVxuICAgICAgICAgKC0+IGpvaW4tbm9kZSA6Y29uZGl0aW9uIDpiaW5kaW5ncykpXG4gICAgICAgIDpkaXNhYmxlLWZhc3QtdXBkYXRlc1xuICAgICAgICAoY29udGFpbnM/XG4gICAgICAgICAoOmpvaW5zIGJpbmRpbmdzKVxuICAgICAgICAgKHNvbWVcbiAgICAgICAgICAoZm4gW3s6a2V5cyBbZmllbGQga2V5XX1dICh3aGVuICg9IDp2YWx1ZSBmaWVsZCkga2V5KSlcbiAgICAgICAgICAoLT4gam9pbi1ub2RlIDpjb25kaXRpb24gOmJpbmRpbmdzKSkpKSkpKVxuICAgIHNlc3Npb25cbiAgICAoOmpvaW4tbm9kZS1pZHMgc2Vzc2lvbikpXVxuICAoLT5cbiAgIHNlc3Npb25cbiAgIChhc3NvYy1pbiBbOmJldGEtbm9kZXMgbGVhZi1ub2RlLWlkIDp3aGVuLWZuXSAoOndoZW4tZm4gcnVsZSkpXG4gICAoYXNzb2MtaW4gWzpiZXRhLW5vZGVzIGxlYWYtbm9kZS1pZCA6dGhlbi1mbl0gKDp0aGVuLWZuIHJ1bGUpKVxuICAgKGFzc29jLWluXG4gICAgWzpiZXRhLW5vZGVzIGxlYWYtbm9kZS1pZCA6dGhlbi1maW5hbGx5LWZuXVxuICAgICg6dGhlbi1maW5hbGx5LWZuIHJ1bGUpKVxuICAgKGFzc29jLWluIFs6cnVsZS1pZHMgKDpuYW1lIHJ1bGUpXSBsZWFmLW5vZGUtaWQpXG4gICAoZGlzc29jIDptZW0tbm9kZS1pZHMgOmpvaW4tbm9kZS1pZHMgOmJpbmRpbmdzKSkpKVxuIn0gezpzeW0gLT5zZXNzaW9uLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhbiBlbXB0eSBzZXNzaW9uLiIsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiAtPnNlc3Npb25cbiBcIlJldHVybnMgYW4gZW1wdHkgc2Vzc2lvbi5cIlxuIFtdXG4gKG1hcC0+U2Vzc2lvblxuICB7OmFscGhhLW5vZGVcbiAgIChtYXAtPkFscGhhTm9kZVxuICAgIHs6cGF0aCBuaWwsXG4gICAgIDp0ZXN0LWZpZWxkIG5pbCxcbiAgICAgOnRlc3QtdmFsdWUgbmlsLFxuICAgICA6Y2hpbGRyZW4gW10sXG4gICAgIDpzdWNjZXNzb3JzIFtdLFxuICAgICA6ZmFjdHMge319KSxcbiAgIDpiZXRhLW5vZGVzIHt9LFxuICAgOmxhc3QtaWQgLTEsXG4gICA6cnVsZS1pZHMge30sXG4gICA6aWQtYXR0ci1ub2RlcyB7fSxcbiAgIDp0aGVuLXF1ZXVlICN7fX0pKVxuIn0gezpzeW0gcmVzZXQhLCA6bWV0YSB7OmRvYyAiTXV0YXRlcyB0aGUgc2Vzc2lvbiBmcm9tIGEgOnRoZW4gb3IgOnRoZW4tZmluYWxseSBibG9jay4iLCA6YXJnbGlzdHMgKFtuZXctc2Vzc2lvbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZXNldCFcbiBcIk11dGF0ZXMgdGhlIHNlc3Npb24gZnJvbSBhIDp0aGVuIG9yIDp0aGVuLWZpbmFsbHkgYmxvY2suXCJcbiBbbmV3LXNlc3Npb25dXG4gKGlmXG4gICptdXRhYmxlLXNlc3Npb24qXG4gIChpZlxuICAgKD0gKnNlc3Npb24qIEAqbXV0YWJsZS1zZXNzaW9uKilcbiAgICh2cmVzZXQhICptdXRhYmxlLXNlc3Npb24qIG5ldy1zZXNzaW9uKVxuICAgKHRocm93XG4gICAgKGV4LWluZm9cbiAgICAgXCJZb3UgbWF5IG9ubHkgY2FsbCBgcmVzZXQhYCBvbmNlIGluIGEgOnRoZW4gb3IgOnRoZW4tZmluYWxseSBibG9ja1wiXG4gICAgIHt9KSkpXG4gICh0aHJvd1xuICAgKGV4LWluZm9cbiAgICBcIllvdSBtYXkgb25seSBjYWxsIGByZXNldCFgIGluIGEgOnRoZW4gb3IgOnRoZW4tZmluYWxseSBibG9ja1wiXG4gICAge30pKSkpXG4ifSB7OnN5bSByZXRyYWN0ISwgOm1ldGEgezpkb2MgIkVxdWl2YWxlbnQgdG86XG4gIFxuICAoby9yZXNldCEgKG8vcmV0cmFjdCBvLypzZXNzaW9uKiBpZCBhdHRyKSlcbiAgXG4gIFVzaW5nIHRoZSBsb25nIGZvcm0gaXMgcmVjb21tZW5kZWQuIiwgOmFyZ2xpc3RzIChbaWQgYXR0cl0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZXRyYWN0IVxuIFwiRXF1aXZhbGVudCB0bzpcXG4gIFxcbiAgKG8vcmVzZXQhIChvL3JldHJhY3Qgby8qc2Vzc2lvbiogaWQgYXR0cikpXFxuICBcXG4gIFVzaW5nIHRoZSBsb25nIGZvcm0gaXMgcmVjb21tZW5kZWQuXCJcbiBbaWQgYXR0cl1cbiAoaWZcbiAgKm11dGFibGUtc2Vzc2lvbipcbiAgKHZzd2FwISAqbXV0YWJsZS1zZXNzaW9uKiByZXRyYWN0IGlkIGF0dHIpXG4gICh0aHJvd1xuICAgKGV4LWluZm9cbiAgICBcIlRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgaW4gYSA6dGhlbiBvciA6dGhlbi1maW5hbGx5IGJsb2NrXCJcbiAgICB7fSkpKSlcbiJ9IHs6c3ltIGluc2VydCEsIDptZXRhIHs6ZG9jICJFcXVpdmFsZW50IHRvOlxuICBcbiAgKG8vcmVzZXQhIChvL2luc2VydCBvLypzZXNzaW9uKiBpZCBhdHRyIHZhbHVlKSlcbiAgXG4gIFVzaW5nIHRoZSBsb25nIGZvcm0gaXMgcmVjb21tZW5kZWQuIiwgOmFyZ2xpc3RzIFtbaWQgYXR0ci0+dmFsdWVdIFtpZCBhdHRyIHZhbHVlXV19LCA6c291cmNlICIoZGVmblxuIGluc2VydCFcbiBcIkVxdWl2YWxlbnQgdG86XFxuICBcXG4gIChvL3Jlc2V0ISAoby9pbnNlcnQgby8qc2Vzc2lvbiogaWQgYXR0ciB2YWx1ZSkpXFxuICBcXG4gIFVzaW5nIHRoZSBsb25nIGZvcm0gaXMgcmVjb21tZW5kZWQuXCJcbiAoW2lkIGF0dHItPnZhbHVlXVxuICAocnVuISAoZm4gW1thdHRyIHZhbHVlXV0gKGluc2VydCEgaWQgYXR0ciB2YWx1ZSkpIGF0dHItPnZhbHVlKSlcbiAoW2lkIGF0dHIgdmFsdWVdXG4gIChpZlxuICAgKm11dGFibGUtc2Vzc2lvbipcbiAgICh2c3dhcCEgKm11dGFibGUtc2Vzc2lvbiogaW5zZXJ0IGlkIGF0dHIgdmFsdWUpXG4gICAodGhyb3dcbiAgICAoZXgtaW5mb1xuICAgICBcIlRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgaW4gYSA6dGhlbiBvciA6dGhlbi1maW5hbGx5IGJsb2NrXCJcbiAgICAge30pKSkpKVxuIn0gezpzeW0gKnNlc3Npb24qLCA6bWV0YSB7OmRvYyAiUHJvdmlkZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIHNlc3Npb24gZnJvbSBpbnNpZGUgYSA6dGhlbiBvciA6dGhlbi1maW5hbGx5IGJsb2NrLiJ9LCA6c291cmNlICIoZGVmICpzZXNzaW9uKiBuaWwpXG4ifSB7OnN5bSByZXRyYWN0LCA6bWV0YSB7OmRvYyAiUmV0cmFjdHMgdGhlIGZhY3Qgd2l0aCB0aGUgZ2l2ZW4gaWQgKyBhdHRyIGNvbWJvLiIsIDphcmdsaXN0cyAoW3Nlc3Npb24gaWQgYXR0cl0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZXRyYWN0XG4gXCJSZXRyYWN0cyB0aGUgZmFjdCB3aXRoIHRoZSBnaXZlbiBpZCArIGF0dHIgY29tYm8uXCJcbiBbc2Vzc2lvbiBpZCBhdHRyXVxuIChsZXRcbiAgW2lkK2F0dHJcbiAgIFtpZCBhdHRyXVxuICAgbm9kZS1wYXRoc1xuICAgKGdldC1pbiBzZXNzaW9uIFs6aWQtYXR0ci1ub2RlcyBpZCthdHRyXSldXG4gICh3aGVuLW5vdFxuICAgbm9kZS1wYXRoc1xuICAgKHRocm93IChleC1pbmZvIChzdHIgaWQrYXR0ciBcIiBub3QgaW4gc2Vzc2lvblwiKSB7fSkpKVxuICAocmVkdWNlXG4gICAoZm5cbiAgICBbc2Vzc2lvbiBub2RlLXBhdGhdXG4gICAgKGxldFxuICAgICBbbm9kZVxuICAgICAgKGdldC1pbiBzZXNzaW9uIG5vZGUtcGF0aClcbiAgICAgIGZhY3RcbiAgICAgIChnZXQtaW4gbm9kZSBbOmZhY3RzIGlkIGF0dHJdKV1cbiAgICAgKHJpZ2h0LWFjdGl2YXRlLWFscGhhLW5vZGVcbiAgICAgIHNlc3Npb25cbiAgICAgIG5vZGUtcGF0aFxuICAgICAgKC0+VG9rZW4gZmFjdCA6cmV0cmFjdCBuaWwpKSkpXG4gICBzZXNzaW9uXG4gICBub2RlLXBhdGhzKSkpXG4ifSB7OnN5bSBxdWVyeS1hbGwsIDptZXRhIHs6ZG9jICJXaGVuIGNhbGxlZCB3aXRoIGp1c3QgYSBzZXNzaW9uLCByZXR1cm5zIGEgdmVjdG9yIG9mIGFsbCBpbnNlcnRlZCBmYWN0cy5cbiAgT3RoZXJ3aXNlLCByZXR1cm5zIGEgdmVjdG9yIG9mIG1hcHMgY29udGFpbmluZyBhbGwgdGhlIG1hdGNoZXMgZm9yIHRoZSBnaXZlbiBydWxlLiIsIDphcmdsaXN0cyBbW3Nlc3Npb25dIFtzZXNzaW9uIHJ1bGUtbmFtZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBxdWVyeS1hbGxcbiBcIldoZW4gY2FsbGVkIHdpdGgganVzdCBhIHNlc3Npb24sIHJldHVybnMgYSB2ZWN0b3Igb2YgYWxsIGluc2VydGVkIGZhY3RzLlxcbiAgT3RoZXJ3aXNlLCByZXR1cm5zIGEgdmVjdG9yIG9mIG1hcHMgY29udGFpbmluZyBhbGwgdGhlIG1hdGNoZXMgZm9yIHRoZSBnaXZlbiBydWxlLlwiXG4gKFtzZXNzaW9uXVxuICAobWFwdlxuICAgKGZuXG4gICAgW1tbaWQgYXR0cl0gbm9kZXNdXVxuICAgICgtPlxuICAgICAoZ2V0LWluIHNlc3Npb24gKGZpcnN0IG5vZGVzKSlcbiAgICAgKGdldC1pbiBbOmZhY3RzIGlkIGF0dHJdKVxuICAgICAoKGp1eHQgOmlkIDphdHRyIDp2YWx1ZSkpKSlcbiAgICg6aWQtYXR0ci1ub2RlcyBzZXNzaW9uKSkpXG4gKFtzZXNzaW9uIHJ1bGUtbmFtZV1cbiAgKGxldFxuICAgW3J1bGUtaWRcbiAgICAob3JcbiAgICAgKGdldC1pbiBzZXNzaW9uIFs6cnVsZS1pZHMgcnVsZS1uYW1lXSlcbiAgICAgKHRocm93IChleC1pbmZvIChzdHIgcnVsZS1uYW1lIFwiIG5vdCBpbiBzZXNzaW9uXCIpIHt9KSkpXG4gICAgcnVsZVxuICAgIChnZXQtaW4gc2Vzc2lvbiBbOmJldGEtbm9kZXMgcnVsZS1pZF0pXVxuICAgKHJlZHVjZS1rdlxuICAgIChmbiBbdiBfIHs6a2V5cyBbdmFycyBlbmFibGVkXX1dIChpZiBlbmFibGVkIChjb25qIHYgdmFycykgdikpXG4gICAgW11cbiAgICAoOm1hdGNoZXMgcnVsZSkpKSkpXG4ifSB7OnN5bSBwYXJzZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzcGVjIGNvbnRlbnRdKX0sIDpzb3VyY2UgIihkZWZuXG4gcGFyc2VcbiBbc3BlYyBjb250ZW50XVxuIChsZXRcbiAgW3JlcyAocy9jb25mb3JtIHNwZWMgY29udGVudCldXG4gIChpZlxuICAgKD0gOmNsb2p1cmUuc3BlYy5hbHBoYS9pbnZhbGlkIHJlcylcbiAgICh0aHJvdyAoZXgtaW5mbyAoZXhwb3VuZC9leHBvdW5kLXN0ciBzcGVjIGNvbnRlbnQpIHt9KSlcbiAgIHJlcykpKVxuIn0pLCBjcm9zcy1wYXJpbmZlci5jb3JlICh7OnN5bSBwYXJlbi1tb2RlLCA6bWV0YSB7OmRvYyAiUnVucyBwYXJlbiBtb2RlIG9uIHRoZSBnaXZlbiB0ZXh0LiIsIDphcmdsaXN0cyAoW3RleHQgeCBsaW5lXSl9LCA6c291cmNlICIoZGVmblxuIHBhcmVuLW1vZGVcbiBcIlJ1bnMgcGFyZW4gbW9kZSBvbiB0aGUgZ2l2ZW4gdGV4dC5cIlxuIFt0ZXh0IHggbGluZV1cbiAjPyg6Y2xqIChsZXQgW3JlcyAodHJ5IChQYXJpbmZlci9wYXJlbk1vZGUgdGV4dCAoaW50IHgpIChpbnQgbGluZSkgbmlsIGZhbHNlKSAoY2F0Y2ggRXhjZXB0aW9uIF8gKFBhcmluZmVyL3BhcmVuTW9kZSB0ZXh0IChpbnQgMCkgKGludCAwKSBuaWwgZmFsc2UpKSldIHs6eCAoLi1jdXJzb3JYIHJlcyksIDp0ZXh0ICguLXRleHQgcmVzKX0pIDpjbGpzIChsZXQgW3JlcyAoLnBhcmVuTW9kZSBqcy9wYXJpbmZlciB0ZXh0ICNqcyB7OmN1cnNvckxpbmUgbGluZSwgOmN1cnNvclggeH0pXSB7OnggKGFnZXQgcmVzIFwiY3Vyc29yWFwiKSwgOnRleHQgKGFnZXQgcmVzIFwidGV4dFwiKX0pKSlcbiJ9IHs6c3ltIGFkZC1pbmRlbnQsIDptZXRhIHs6ZG9jICJBZGRzIGluZGVudCB0byB0aGUgc3RhdGUuIiwgOmFyZ2xpc3RzIChbc3RhdGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gYWRkLWluZGVudFxuIFwiQWRkcyBpbmRlbnQgdG8gdGhlIHN0YXRlLlwiXG4gW3N0YXRlXVxuIChsZXRcbiAgW3s6a2V5cyBbdGV4dCBjdXJzb3ItcG9zaXRpb24gaW5kZW50LXR5cGVdfVxuICAgc3RhdGVcbiAgIFtzdGFydC1wb3MgZW5kLXBvc11cbiAgIGN1cnNvci1wb3NpdGlvblxuICAgW3N0YXJ0LWxpbmUgc3RhcnQteF1cbiAgIChwb3NpdGlvbi0+cm93LWNvbCB0ZXh0IHN0YXJ0LXBvcylcbiAgIFtlbmQtbGluZSBfXVxuICAgKHBvc2l0aW9uLT5yb3ctY29sIHRleHQgZW5kLXBvcylcbiAgIGxpbmVzXG4gICAoc3BsaXQtbGluZXMgdGV4dClcbiAgIHRhZ3NcbiAgICh0cy9jb2RlLT50YWdzIHRleHQpXG4gICBuZXctaW5kZW50LWxldmVsXG4gICAoY2FzZVxuICAgIGluZGVudC10eXBlXG4gICAgOnJldHVyblxuICAgICh0cy9pbmRlbnQtZm9yLWxpbmUgdGFncyAoaW5jIHN0YXJ0LWxpbmUpKVxuICAgIDpiYWNrXG4gICAgKHRzL2JhY2staW5kZW50LWZvci1saW5lXG4gICAgIHRhZ3NcbiAgICAgKGluYyBzdGFydC1saW5lKVxuICAgICAoaW5kZW50LWNvdW50IChnZXQgbGluZXMgc3RhcnQtbGluZSkpKVxuICAgIDpmb3J3YXJkXG4gICAgKHRzL2ZvcndhcmQtaW5kZW50LWZvci1saW5lXG4gICAgIHRhZ3NcbiAgICAgKGluYyBzdGFydC1saW5lKVxuICAgICAoaW5kZW50LWNvdW50IChnZXQgbGluZXMgc3RhcnQtbGluZSkpKVxuICAgIDpub3JtYWxcbiAgICBzdGFydC14KVxuICAgbGluZXNcbiAgIChpZlxuICAgICg9IGluZGVudC10eXBlIDpub3JtYWwpXG4gICAgKGxvb3BcbiAgICAgW2xpbmVzIGxpbmVzIHRhZ3MgdGFncyBsaW5lLW51bSAoaW5jIHN0YXJ0LWxpbmUpXVxuICAgICAoaWYtbGV0XG4gICAgICBbbGluZSAoZ2V0IGxpbmVzIGxpbmUtbnVtKV1cbiAgICAgIChsZXRcbiAgICAgICBbaW5kZW50XG4gICAgICAgICh0cy9pbmRlbnQtZm9yLWxpbmUgdGFncyAoaW5jIGxpbmUtbnVtKSlcbiAgICAgICAgY3VycmVudC1pbmRlbnRcbiAgICAgICAgKGluZGVudC1jb3VudCBsaW5lKV1cbiAgICAgICAoaWZcbiAgICAgICAgKGFuZCAoPiBpbmRlbnQgMCkgKD4gaW5kZW50IHN0YXJ0LXgpKVxuICAgICAgICAobGV0XG4gICAgICAgICBbbGluZXNcbiAgICAgICAgICAodXBkYXRlLWluZGVudCAoLSBpbmRlbnQgY3VycmVudC1pbmRlbnQpIGxpbmVzIGxpbmUtbnVtKVxuICAgICAgICAgIHRleHRcbiAgICAgICAgICAoc3RyL2pvaW4gXFxuZXdsaW5lIGxpbmVzKVxuICAgICAgICAgIHRhZ3NcbiAgICAgICAgICAodHMvY29kZS0+dGFncyB0ZXh0KV1cbiAgICAgICAgIChyZWN1ciBsaW5lcyB0YWdzIChpbmMgbGluZS1udW0pKSlcbiAgICAgICAgbGluZXMpKVxuICAgICAgbGluZXMpKVxuICAgIChsZXRcbiAgICAgW29sZC1pbmRlbnQtbGV2ZWxcbiAgICAgIChpbmRlbnQtY291bnQgKGdldCBsaW5lcyBzdGFydC1saW5lKSlcbiAgICAgIGRpZmZcbiAgICAgICgtIG5ldy1pbmRlbnQtbGV2ZWwgb2xkLWluZGVudC1sZXZlbClcbiAgICAgIGRpZmZcbiAgICAgIChpZlxuICAgICAgIChuZWc/IGRpZmYpXG4gICAgICAgKC0+PlxuICAgICAgICAoc2VxIChnZXQgbGluZXMgc3RhcnQtbGluZSkpXG4gICAgICAgIChzcGxpdC13aXRoIChmbiogW3AxX180NDk4MiNdICg9IHAxX180NDk4MiMgXFxzcGFjZSkpKVxuICAgICAgICBmaXJzdFxuICAgICAgICAodGFrZSAoKiAtMSBkaWZmKSlcbiAgICAgICAgY291bnRcbiAgICAgICAgKCogLTEpKVxuICAgICAgIGRpZmYpXVxuICAgICAocmVkdWNlXG4gICAgICAocGFydGlhbCB1cGRhdGUtaW5kZW50IGRpZmYpXG4gICAgICBsaW5lc1xuICAgICAgKHJhbmdlIHN0YXJ0LWxpbmUgKGluYyBlbmQtbGluZSkpKSkpXG4gICB0ZXh0XG4gICAoc3RyL2pvaW4gXFxuZXdsaW5lIGxpbmVzKVxuICAgdGV4dFxuICAgKDp0ZXh0IChpbmRlbnQtbW9kZSB0ZXh0IG5ldy1pbmRlbnQtbGV2ZWwgc3RhcnQtbGluZSB0cnVlKSlcbiAgIGxpbmVzXG4gICAoc3BsaXQtbGluZXMgdGV4dCldXG4gIHs6Y3Vyc29yLXBvc2l0aW9uXG4gICAoaWZcbiAgICAoPSBzdGFydC1wb3MgZW5kLXBvcylcbiAgICAobGV0XG4gICAgIFtwb3MgKHJvdy1jb2wtPnBvc2l0aW9uIHRleHQgc3RhcnQtbGluZSBuZXctaW5kZW50LWxldmVsKV1cbiAgICAgW3BvcyBwb3NdKVxuICAgIFsocm93LWNvbC0+cG9zaXRpb24gdGV4dCBzdGFydC1saW5lIDApXG4gICAgIChyb3ctY29sLT5wb3NpdGlvbiB0ZXh0IGVuZC1saW5lIChjb3VudCAoZ2V0IGxpbmVzIGVuZC1saW5lKSkpXSksXG4gICA6dGV4dCB0ZXh0fSkpXG4ifSB7OnN5bSBpbmRlbnQtY291bnQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbGluZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbmRlbnQtY291bnRcbiBbbGluZV1cbiAoLT4+XG4gIGxpbmVcbiAgc2VxXG4gICh0YWtlLXdoaWxlIChmbiogW3AxX180NDk4MCNdICg9IHAxX180NDk4MCMgXFxzcGFjZSkpKVxuICBjb3VudCkpXG4ifSB7OnN5bSByb3ctY29sLT5wb3NpdGlvbiwgOm1ldGEgezpkb2MgIkNvbnZlcnRzIGEgcm93IGFuZCBjb2x1bW4gbnVtYmVyIHRvIGEgcG9zaXRpb24uIiwgOmFyZ2xpc3RzIChbdGV4dCByb3cgY29sXSl9LCA6c291cmNlICIoZGVmblxuIHJvdy1jb2wtPnBvc2l0aW9uXG4gXCJDb252ZXJ0cyBhIHJvdyBhbmQgY29sdW1uIG51bWJlciB0byBhIHBvc2l0aW9uLlwiXG4gW3RleHQgcm93IGNvbF1cbiAobGV0XG4gIFthbGwtbGluZXNcbiAgICh2ZWMgKHNwbGl0LWxpbmVzIHRleHQpKVxuICAgbGluZXNcbiAgICh2ZWMgKHRha2Ugcm93IGFsbC1saW5lcykpXG4gICBsYXN0LWxpbmVcbiAgIChnZXQgYWxsLWxpbmVzIHJvdylcbiAgIGxpbmVzXG4gICAoaWZcbiAgICAoYW5kIGxhc3QtbGluZSAoPj0gKGNvdW50IGxhc3QtbGluZSkgY29sKSlcbiAgICAoY29uaiBsaW5lcyAoc3VicyBsYXN0LWxpbmUgMCBjb2wpKVxuICAgIGxpbmVzKVxuICAgdGV4dFxuICAgKHN0ci9qb2luIFwiXFxuXCIgbGluZXMpXVxuICAoY291bnQgdGV4dCkpKVxuIn0gezpzeW0gcG9zaXRpb24tPnJvdy1jb2wsIDptZXRhIHs6ZG9jICJDb252ZXJ0cyBhIHBvc2l0aW9uIHRvIGEgcm93IGFuZCBjb2x1bW4gbnVtYmVyLiIsIDphcmdsaXN0cyAoW3RleHQgcG9zaXRpb25dKX0sIDpzb3VyY2UgIihkZWZuXG4gcG9zaXRpb24tPnJvdy1jb2xcbiBcIkNvbnZlcnRzIGEgcG9zaXRpb24gdG8gYSByb3cgYW5kIGNvbHVtbiBudW1iZXIuXCJcbiBbdGV4dCBwb3NpdGlvbl1cbiAobGV0XG4gIFt0ZXh0XG4gICAoc3VicyB0ZXh0IDAgcG9zaXRpb24pXG4gICBsYXN0LW5ld2xpbmVcbiAgICgubGFzdEluZGV4T2YgdGV4dCBcIlxcblwiKVxuICAgcm93XG4gICAoY291bnQgKHJlLXNlcSAjXCJcXG5cIiB0ZXh0KSlcbiAgIGNvbFxuICAgKGlmICg+PSBsYXN0LW5ld2xpbmUgMCkgKC0gcG9zaXRpb24gbGFzdC1uZXdsaW5lIDEpIHBvc2l0aW9uKV1cbiAgW3JvdyBjb2xdKSlcbiJ9IHs6c3ltIHNwbGl0LWxpbmVzLCA6bWV0YSB7OmRvYyAiU3BsaXRzIHRoZSBzdHJpbmcgaW50byBsaW5lcy4iLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIHNwbGl0LWxpbmVzXG4gXCJTcGxpdHMgdGhlIHN0cmluZyBpbnRvIGxpbmVzLlwiXG4gW3NdXG4gKHZlYyAoLnNwbGl0IHMgXCJcXG5cIiAtMSkpKVxuIn0gezpzeW0gdXBkYXRlLWluZGVudCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtkaWZmIGxpbmVzIGxpbmUtbnVtXSl9LCA6c291cmNlICIoZGVmblxuIHVwZGF0ZS1pbmRlbnRcbiBbZGlmZiBsaW5lcyBsaW5lLW51bV1cbiAodXBkYXRlXG4gIGxpbmVzXG4gIGxpbmUtbnVtXG4gIChmblxuICAgW2xpbmVdXG4gICAobGV0XG4gICAgW1tzcGFjZXMgY29kZV1cbiAgICAgKHNwbGl0LXdpdGggKGZuKiBbcDFfXzQ0OTgxI10gKD0gcDFfXzQ0OTgxIyBcXHNwYWNlKSkgKHNlcSBsaW5lKSlcbiAgICAgc3BhY2VzXG4gICAgIChpZlxuICAgICAgKHBvcz8gZGlmZilcbiAgICAgIChjb25jYXQgc3BhY2VzIChyZXBlYXQgZGlmZiBcXHNwYWNlKSlcbiAgICAgIChkcm9wICgqIC0xIGRpZmYpIHNwYWNlcykpXVxuICAgIChzdHIgKHN0ci9qb2luIHNwYWNlcykgKHN0ci9qb2luIGNvZGUpKSkpKSlcbiJ9IHs6c3ltIG1vZGUsIDptZXRhIHs6ZG9jICJSdW5zIHRoZSBzcGVjaWZpZWQgbW9kZSwgd2hpY2ggY2FuIGJlIDpwYXJlbiwgOmluZGVudCwgb3IgOmJvdGguIiwgOmFyZ2xpc3RzIChbbW9kZS10eXBlIHRleHQgeCBsaW5lXSl9LCA6c291cmNlICIoZGVmblxuIG1vZGVcbiBcIlJ1bnMgdGhlIHNwZWNpZmllZCBtb2RlLCB3aGljaCBjYW4gYmUgOnBhcmVuLCA6aW5kZW50LCBvciA6Ym90aC5cIlxuIFttb2RlLXR5cGUgdGV4dCB4IGxpbmVdXG4gKGNhc2VcbiAgbW9kZS10eXBlXG4gIDpwYXJlblxuICAocGFyZW4tbW9kZSB0ZXh0IHggbGluZSlcbiAgOmluZGVudFxuICAoaW5kZW50LW1vZGUgdGV4dCB4IGxpbmUpXG4gIDpib3RoXG4gICgtPiB0ZXh0IChwYXJlbi1tb2RlIHggbGluZSkgOnRleHQgKGluZGVudC1tb2RlIHggbGluZSkpKSlcbiJ9IHs6c3ltIGluZGVudC1tb2RlLCA6bWV0YSB7OmRvYyAiUnVucyBpbmRlbnQgbW9kZSBvbiB0aGUgZ2l2ZW4gdGV4dC4iLCA6YXJnbGlzdHMgW1t0ZXh0IHggbGluZV0gW3RleHQgeCBsaW5lIHByZXZpZXctY3Vyc29yLXNjb3BlP11dfSwgOnNvdXJjZSAiKGRlZm5cbiBpbmRlbnQtbW9kZVxuIFwiUnVucyBpbmRlbnQgbW9kZSBvbiB0aGUgZ2l2ZW4gdGV4dC5cIlxuIChbdGV4dCB4IGxpbmVdIChpbmRlbnQtbW9kZSB0ZXh0IHggbGluZSBmYWxzZSkpXG4gKFt0ZXh0IHggbGluZSBwcmV2aWV3LWN1cnNvci1zY29wZT9dXG4gICM/KDpjbGogKGxldCBbcmVzICh0cnkgKFBhcmluZmVyL2luZGVudE1vZGUgdGV4dCAoaW50IHgpIChpbnQgbGluZSkgbmlsIHByZXZpZXctY3Vyc29yLXNjb3BlPykgKGNhdGNoIEV4Y2VwdGlvbiBfIChQYXJpbmZlci9pbmRlbnRNb2RlIHRleHQgKGludCAwKSAoaW50IDApIG5pbCBwcmV2aWV3LWN1cnNvci1zY29wZT8pKSldIHs6eCAoLi1jdXJzb3JYIHJlcyksIDp0ZXh0ICguLXRleHQgcmVzKX0pIDpjbGpzIChsZXQgW3JlcyAoLmluZGVudE1vZGUganMvcGFyaW5mZXIgdGV4dCAjanMgezpjdXJzb3JMaW5lIGxpbmUsIDpjdXJzb3JYIHgsIDpwcmV2aWV3Q3Vyc29yU2NvcGUgcHJldmlldy1jdXJzb3Itc2NvcGU/fSldIHs6eCAoYWdldCByZXMgXCJjdXJzb3JYXCIpLCA6dGV4dCAoYWdldCByZXMgXCJ0ZXh0XCIpfSkpKSlcbiJ9IHs6c3ltIGFkZC1wYXJpbmZlciwgOm1ldGEgezpkb2MgIkFkZHMgcGFyaW5mZXIgdG8gdGhlIHN0YXRlLiIsIDphcmdsaXN0cyAoW21vZGUtdHlwZSBzdGF0ZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhZGQtcGFyaW5mZXJcbiBcIkFkZHMgcGFyaW5mZXIgdG8gdGhlIHN0YXRlLlwiXG4gW21vZGUtdHlwZSBzdGF0ZV1cbiAobGV0XG4gIFt7OmtleXMgW2N1cnNvci1wb3NpdGlvbiB0ZXh0XX1cbiAgIHN0YXRlXG4gICBbc3RhcnQtcG9zIGVuZC1wb3NdXG4gICBjdXJzb3ItcG9zaXRpb25cbiAgIFtyb3cgY29sXVxuICAgKHBvc2l0aW9uLT5yb3ctY29sIHRleHQgc3RhcnQtcG9zKVxuICAgcmVzdWx0XG4gICAobW9kZSBtb2RlLXR5cGUgdGV4dCBjb2wgcm93KV1cbiAgKGlmXG4gICAobm90PSBzdGFydC1wb3MgZW5kLXBvcylcbiAgIChhc3NvYyBzdGF0ZSA6dGV4dCAoOnRleHQgcmVzdWx0KSlcbiAgIChsZXRcbiAgICBbcG9zIChyb3ctY29sLT5wb3NpdGlvbiAoOnRleHQgcmVzdWx0KSByb3cgKDp4IHJlc3VsdCkpXVxuICAgIChhc3NvYyBzdGF0ZSA6dGV4dCAoOnRleHQgcmVzdWx0KSA6Y3Vyc29yLXBvc2l0aW9uIFtwb3MgcG9zXSkpKSkpXG4ifSksIHBsYXktY2xqYy5nbC5leGFtcGxlcy1hZHZhbmNlZCAoezpzeW0gY3Jlc2NlbnQtM2QtaW5pdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtnYW1lXSl9LCA6c291cmNlICIoZGVmblxuIGNyZXNjZW50LTNkLWluaXRcbiBbZ2FtZV1cbiAoZ2wgZ2FtZSBlbmFibGUgKGdsIGdhbWUgQ1VMTF9GQUNFKSlcbiAoZ2wgZ2FtZSBlbmFibGUgKGdsIGdhbWUgREVQVEhfVEVTVCkpXG4gKGxldFxuICBbZW50aXR5XG4gICAoc2hhcGUtZW50aXR5XG4gICAgZ2FtZVxuICAgIChwcmltaXRpdmVzL2NyZXNjZW50XG4gICAgIHs6dmVydGljYWwtcmFkaXVzIDIwLFxuICAgICAgOm91dGVyLXJhZGl1cyAyMCxcbiAgICAgIDppbm5lci1yYWRpdXMgMTUsXG4gICAgICA6dGhpY2tuZXNzIDEwLFxuICAgICAgOnN1YmRpdmlzaW9ucy1kb3duIDMwfSkpXG4gICBvYmplY3RzXG4gICAodmVjXG4gICAgKGZvclxuICAgICBbaSAocmFuZ2UgNTApXVxuICAgICB7OnR6IChyYW5kIDE1MCksXG4gICAgICA6cnggKHJhbmQgKCogMiAobWF0aCBQSSkpKSxcbiAgICAgIDpyeSAocmFuZCAobWF0aCBQSSkpLFxuICAgICAgOm1hdC11bmlmb3Jtc1xuICAgICAgezp1X2NvbG9yIFsocmFuZCkgKHJhbmQpIChyYW5kKSAxXSxcbiAgICAgICA6dV9zcGVjdWxhciBbMSAxIDEgMV0sXG4gICAgICAgOnVfc2hpbmluZXNzIChyYW5kIDUwMCksXG4gICAgICAgOnVfc3BlY3VsYXJGYWN0b3IgKHJhbmQgMSl9fSkpXVxuICAoYXNzb2MgZ2FtZSA6ZW50aXR5IGVudGl0eSA6b2JqZWN0cyBvYmplY3RzKSkpXG4ifSB7OnN5bSBiYWxscy0zZCwgOmV4YW1wbGVzIFt7OndpdGgtY2FyZCBjYXJkLCA6Ym9keSAoLT4+IChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9pbml0LWV4YW1wbGUgY2FyZCkgKHBsYXktY2xqYy5nbC5leGFtcGxlcy1hZHZhbmNlZC9iYWxscy0zZC1pbml0KSAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2FtZS1sb29wIHBsYXktY2xqYy5nbC5leGFtcGxlcy1hZHZhbmNlZC9hZHZhbmNlZC1yZW5kZXIpKSwgOmJvZHktc3RyICIoLT4+XG4gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2luaXQtZXhhbXBsZSBjYXJkKVxuIChwbGF5LWNsamMuZ2wuZXhhbXBsZXMtYWR2YW5jZWQvYmFsbHMtM2QtaW5pdClcbiAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2FtZS1sb29wXG4gIHBsYXktY2xqYy5nbC5leGFtcGxlcy1hZHZhbmNlZC9hZHZhbmNlZC1yZW5kZXIpKVxuIiwgOmlkICJwbGF5LWNsamMuZ2wuZXhhbXBsZXMtYWR2YW5jZWQvYmFsbHMtM2QvMCJ9XX0gezpzeW0gcGxhbmVzLTNkLWluaXQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZ2FtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwbGFuZXMtM2QtaW5pdFxuIFtnYW1lXVxuIChnbCBnYW1lIGVuYWJsZSAoZ2wgZ2FtZSBDVUxMX0ZBQ0UpKVxuIChnbCBnYW1lIGVuYWJsZSAoZ2wgZ2FtZSBERVBUSF9URVNUKSlcbiAobGV0XG4gIFtlbnRpdHlcbiAgIChzaGFwZS1lbnRpdHlcbiAgICBnYW1lXG4gICAgKHByaW1pdGl2ZXMvcGxhbmVcbiAgICAgezp3aWR0aCAyMCxcbiAgICAgIDpkZXB0aCAyMCxcbiAgICAgIDpzdWJkaXZpc2lvbnMtd2lkdGggMTAsXG4gICAgICA6c3ViZGl2aXNpb25zLWhlaWdodCAxMH0pKVxuICAgb2JqZWN0c1xuICAgKHZlY1xuICAgIChmb3JcbiAgICAgW2kgKHJhbmdlIDUwKV1cbiAgICAgezp0eiAocmFuZCAxNTApLFxuICAgICAgOnJ4IChyYW5kICgqIDIgKG1hdGggUEkpKSksXG4gICAgICA6cnkgKHJhbmQgKG1hdGggUEkpKSxcbiAgICAgIDptYXQtdW5pZm9ybXNcbiAgICAgIHs6dV9jb2xvciBbKHJhbmQpIChyYW5kKSAocmFuZCkgMV0sXG4gICAgICAgOnVfc3BlY3VsYXIgWzEgMSAxIDFdLFxuICAgICAgIDp1X3NoaW5pbmVzcyAocmFuZCA1MDApLFxuICAgICAgIDp1X3NwZWN1bGFyRmFjdG9yIChyYW5kIDEpfX0pKV1cbiAgKGFzc29jIGdhbWUgOmVudGl0eSBlbnRpdHkgOm9iamVjdHMgb2JqZWN0cykpKVxuIn0gezpzeW0gcGxhbmVzLTNkLCA6ZXhhbXBsZXMgW3s6d2l0aC1jYXJkIGNhcmQsIDpib2R5ICgtPj4gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2luaXQtZXhhbXBsZSBjYXJkKSAocGxheS1jbGpjLmdsLmV4YW1wbGVzLWFkdmFuY2VkL3BsYW5lcy0zZC1pbml0KSAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2FtZS1sb29wIHBsYXktY2xqYy5nbC5leGFtcGxlcy1hZHZhbmNlZC9hZHZhbmNlZC1yZW5kZXIpKSwgOmJvZHktc3RyICIoLT4+XG4gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2luaXQtZXhhbXBsZSBjYXJkKVxuIChwbGF5LWNsamMuZ2wuZXhhbXBsZXMtYWR2YW5jZWQvcGxhbmVzLTNkLWluaXQpXG4gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dhbWUtbG9vcFxuICBwbGF5LWNsamMuZ2wuZXhhbXBsZXMtYWR2YW5jZWQvYWR2YW5jZWQtcmVuZGVyKSlcbiIsIDppZCAicGxheS1jbGpjLmdsLmV4YW1wbGVzLWFkdmFuY2VkL3BsYW5lcy0zZC8wIn1dfSB7OnN5bSBkaXNjLTNkLWluaXQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZ2FtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBkaXNjLTNkLWluaXRcbiBbZ2FtZV1cbiAoZ2wgZ2FtZSBlbmFibGUgKGdsIGdhbWUgQ1VMTF9GQUNFKSlcbiAoZ2wgZ2FtZSBlbmFibGUgKGdsIGdhbWUgREVQVEhfVEVTVCkpXG4gKGxldFxuICBbZW50aXR5XG4gICAoc2hhcGUtZW50aXR5IGdhbWUgKHByaW1pdGl2ZXMvZGlzYyB7OnJhZGl1cyAyMCwgOmRpdmlzaW9ucyAyMH0pKVxuICAgb2JqZWN0c1xuICAgKHZlY1xuICAgIChmb3JcbiAgICAgW2kgKHJhbmdlIDUwKV1cbiAgICAgezp0eiAocmFuZCAxNTApLFxuICAgICAgOnJ4IChyYW5kICgqIDIgKG1hdGggUEkpKSksXG4gICAgICA6cnkgKHJhbmQgKG1hdGggUEkpKSxcbiAgICAgIDptYXQtdW5pZm9ybXNcbiAgICAgIHs6dV9jb2xvciBbKHJhbmQpIChyYW5kKSAocmFuZCkgMV0sXG4gICAgICAgOnVfc3BlY3VsYXIgWzEgMSAxIDFdLFxuICAgICAgIDp1X3NoaW5pbmVzcyAocmFuZCA1MDApLFxuICAgICAgIDp1X3NwZWN1bGFyRmFjdG9yIChyYW5kIDEpfX0pKV1cbiAgKGFzc29jIGdhbWUgOmVudGl0eSBlbnRpdHkgOm9iamVjdHMgb2JqZWN0cykpKVxuIn0gezpzeW0gYWR2YW5jZWQtcmVuZGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3s6a2V5cyBbZW50aXR5IG9iamVjdHMgdG90YWwtdGltZV0sIDphcyBnYW1lfV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhZHZhbmNlZC1yZW5kZXJcbiBbezprZXlzIFtlbnRpdHkgb2JqZWN0cyB0b3RhbC10aW1lXSwgOmFzIGdhbWV9XVxuIChldS9yZXNpemUtZXhhbXBsZSBnYW1lKVxuIChjL3JlbmRlciBnYW1lIHs6Y2xlYXIgezpjb2xvciBbMSAxIDEgMV0sIDpkZXB0aCAxfX0pXG4gKGxldFxuICBbW3dpZHRoIGhlaWdodF1cbiAgIChldS9nZXQtc2l6ZSBnYW1lKVxuICAgcHJvamVjdGlvbi1tYXRyaXhcbiAgIChtL3BlcnNwZWN0aXZlLW1hdHJpeC0zZCAobS9kZWctPnJhZCA2MCkgKC8gd2lkdGggaGVpZ2h0KSAxIDIwMDApXG4gICBjYW1lcmEtcG9zXG4gICBbMCAwIDEwMF1cbiAgIHRhcmdldFxuICAgWzAgMCAwXVxuICAgdXBcbiAgIFswIDEgMF1cbiAgIGNhbWVyYS1tYXRyaXhcbiAgIChtL2xvb2stYXQtbWF0cml4LTNkIGNhbWVyYS1wb3MgdGFyZ2V0IHVwKVxuICAgdmlldy1tYXRyaXhcbiAgIChtL2ludmVyc2UtbWF0cml4LTNkIGNhbWVyYS1tYXRyaXgpXG4gICB2aWV3LXByb2plY3Rpb24tbWF0cml4XG4gICAobS9tdWx0aXBseS1tYXRyaWNlcy0zZCB2aWV3LW1hdHJpeCBwcm9qZWN0aW9uLW1hdHJpeClcbiAgIGVudGl0eVxuICAgKGFzc29jXG4gICAgZW50aXR5XG4gICAgOnVuaWZvcm1zXG4gICAgeyd1X2xpZ2h0V29ybGRQb3MgWy01MCAzMCAxMDBdLFxuICAgICAndV92aWV3SW52ZXJzZSBjYW1lcmEtbWF0cml4LFxuICAgICAndV9saWdodENvbG9yIFsxIDEgMSAxXX0pXVxuICAoZG9zZXFcbiAgIFt7OmtleXMgW3J4IHJ5IHR6IG1hdC11bmlmb3Jtc119IG9iamVjdHNdXG4gICAobGV0XG4gICAgW3dvcmxkLW1hdHJpeFxuICAgICAoLT4+XG4gICAgICAobS9pZGVudGl0eS1tYXRyaXggNClcbiAgICAgIChtL211bHRpcGx5LW1hdHJpY2VzLTNkXG4gICAgICAgKG0veC1yb3RhdGlvbi1tYXRyaXgtM2QgKCogcnggdG90YWwtdGltZSkpKVxuICAgICAgKG0vbXVsdGlwbHktbWF0cmljZXMtM2RcbiAgICAgICAobS95LXJvdGF0aW9uLW1hdHJpeC0zZCAoKiByeSB0b3RhbC10aW1lKSkpXG4gICAgICAobS9tdWx0aXBseS1tYXRyaWNlcy0zZCAobS90cmFuc2xhdGlvbi1tYXRyaXgtM2QgMCAwIHR6KSkpXVxuICAgIChjL3JlbmRlclxuICAgICBnYW1lXG4gICAgICgtPlxuICAgICAgZW50aXR5XG4gICAgICAoYXNzb2MgOnZpZXdwb3J0IHs6eCAwLCA6eSAwLCA6d2lkdGggd2lkdGgsIDpoZWlnaHQgaGVpZ2h0fSlcbiAgICAgICh1cGRhdGVcbiAgICAgICA6dW5pZm9ybXNcbiAgICAgICBhc3NvY1xuICAgICAgICd1X3dvcmxkXG4gICAgICAgd29ybGQtbWF0cml4XG4gICAgICAgJ3Vfd29ybGRWaWV3UHJvamVjdGlvblxuICAgICAgICgtPj5cbiAgICAgICAgdmlldy1wcm9qZWN0aW9uLW1hdHJpeFxuICAgICAgICAobS9tdWx0aXBseS1tYXRyaWNlcy0zZCB3b3JsZC1tYXRyaXgpKVxuICAgICAgICd1X3dvcmxkSW52ZXJzZVRyYW5zcG9zZVxuICAgICAgICgtPj4gd29ybGQtbWF0cml4IChtL2ludmVyc2UtbWF0cml4LTNkKSAobS90cmFuc3Bvc2UtbWF0cml4LTNkKSlcbiAgICAgICAndV9jb2xvclxuICAgICAgICg6dV9jb2xvciBtYXQtdW5pZm9ybXMpXG4gICAgICAgJ3Vfc3BlY3VsYXJcbiAgICAgICAoOnVfc3BlY3VsYXIgbWF0LXVuaWZvcm1zKVxuICAgICAgICd1X3NoaW5pbmVzc1xuICAgICAgICg6dV9zaGluaW5lc3MgbWF0LXVuaWZvcm1zKVxuICAgICAgICd1X3NwZWN1bGFyRmFjdG9yXG4gICAgICAgKDp1X3NwZWN1bGFyRmFjdG9yIG1hdC11bmlmb3JtcykpKSkpKSlcbiBnYW1lKVxuIn0gezpzeW0gY3ViZXMtM2QtaW5pdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtnYW1lXSl9LCA6c291cmNlICIoZGVmblxuIGN1YmVzLTNkLWluaXRcbiBbZ2FtZV1cbiAoZ2wgZ2FtZSBlbmFibGUgKGdsIGdhbWUgQ1VMTF9GQUNFKSlcbiAoZ2wgZ2FtZSBlbmFibGUgKGdsIGdhbWUgREVQVEhfVEVTVCkpXG4gKGxldFxuICBbZW50aXR5XG4gICAoc2hhcGUtZW50aXR5IGdhbWUgKHByaW1pdGl2ZXMvY3ViZSB7OnNpemUgMjB9KSlcbiAgIG9iamVjdHNcbiAgICh2ZWNcbiAgICAoZm9yXG4gICAgIFtpIChyYW5nZSA1MCldXG4gICAgIHs6dHogKHJhbmQgMTUwKSxcbiAgICAgIDpyeCAocmFuZCAoKiAyIChtYXRoIFBJKSkpLFxuICAgICAgOnJ5IChyYW5kIChtYXRoIFBJKSksXG4gICAgICA6bWF0LXVuaWZvcm1zXG4gICAgICB7OnVfY29sb3IgWyhyYW5kKSAocmFuZCkgKHJhbmQpIDFdLFxuICAgICAgIDp1X3NwZWN1bGFyIFsxIDEgMSAxXSxcbiAgICAgICA6dV9zaGluaW5lc3MgKHJhbmQgNTAwKSxcbiAgICAgICA6dV9zcGVjdWxhckZhY3RvciAocmFuZCAxKX19KSldXG4gIChhc3NvYyBnYW1lIDplbnRpdHkgZW50aXR5IDpvYmplY3RzIG9iamVjdHMpKSlcbiJ9IHs6c3ltIGN1YmVzLTNkLCA6ZXhhbXBsZXMgW3s6d2l0aC1jYXJkIGNhcmQsIDpib2R5ICgtPj4gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2luaXQtZXhhbXBsZSBjYXJkKSAocGxheS1jbGpjLmdsLmV4YW1wbGVzLWFkdmFuY2VkL2N1YmVzLTNkLWluaXQpIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nYW1lLWxvb3AgcGxheS1jbGpjLmdsLmV4YW1wbGVzLWFkdmFuY2VkL2FkdmFuY2VkLXJlbmRlcikpLCA6Ym9keS1zdHIgIigtPj5cbiAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvaW5pdC1leGFtcGxlIGNhcmQpXG4gKHBsYXktY2xqYy5nbC5leGFtcGxlcy1hZHZhbmNlZC9jdWJlcy0zZC1pbml0KVxuIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nYW1lLWxvb3BcbiAgcGxheS1jbGpjLmdsLmV4YW1wbGVzLWFkdmFuY2VkL2FkdmFuY2VkLXJlbmRlcikpXG4iLCA6aWQgInBsYXktY2xqYy5nbC5leGFtcGxlcy1hZHZhbmNlZC9jdWJlcy0zZC8wIn1dfSB7OnN5bSBjeWxpbmRlci0zZCwgOmV4YW1wbGVzIFt7OndpdGgtY2FyZCBjYXJkLCA6Ym9keSAoLT4+IChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9pbml0LWV4YW1wbGUgY2FyZCkgKHBsYXktY2xqYy5nbC5leGFtcGxlcy1hZHZhbmNlZC9jeWxpbmRlci0zZC1pbml0KSAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2FtZS1sb29wIHBsYXktY2xqYy5nbC5leGFtcGxlcy1hZHZhbmNlZC9hZHZhbmNlZC1yZW5kZXIpKSwgOmJvZHktc3RyICIoLT4+XG4gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2luaXQtZXhhbXBsZSBjYXJkKVxuIChwbGF5LWNsamMuZ2wuZXhhbXBsZXMtYWR2YW5jZWQvY3lsaW5kZXItM2QtaW5pdClcbiAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2FtZS1sb29wXG4gIHBsYXktY2xqYy5nbC5leGFtcGxlcy1hZHZhbmNlZC9hZHZhbmNlZC1yZW5kZXIpKVxuIiwgOmlkICJwbGF5LWNsamMuZ2wuZXhhbXBsZXMtYWR2YW5jZWQvY3lsaW5kZXItM2QvMCJ9XX0gezpzeW0gdG9ydXMtM2QsIDpleGFtcGxlcyBbezp3aXRoLWNhcmQgY2FyZCwgOmJvZHkgKC0+PiAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvaW5pdC1leGFtcGxlIGNhcmQpIChwbGF5LWNsamMuZ2wuZXhhbXBsZXMtYWR2YW5jZWQvdG9ydXMtM2QtaW5pdCkgKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dhbWUtbG9vcCBwbGF5LWNsamMuZ2wuZXhhbXBsZXMtYWR2YW5jZWQvYWR2YW5jZWQtcmVuZGVyKSksIDpib2R5LXN0ciAiKC0+PlxuIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9pbml0LWV4YW1wbGUgY2FyZClcbiAocGxheS1jbGpjLmdsLmV4YW1wbGVzLWFkdmFuY2VkL3RvcnVzLTNkLWluaXQpXG4gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dhbWUtbG9vcFxuICBwbGF5LWNsamMuZ2wuZXhhbXBsZXMtYWR2YW5jZWQvYWR2YW5jZWQtcmVuZGVyKSlcbiIsIDppZCAicGxheS1jbGpjLmdsLmV4YW1wbGVzLWFkdmFuY2VkL3RvcnVzLTNkLzAifV19IHs6c3ltIGNyZXNjZW50LTNkLCA6ZXhhbXBsZXMgW3s6d2l0aC1jYXJkIGNhcmQsIDpib2R5ICgtPj4gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2luaXQtZXhhbXBsZSBjYXJkKSAocGxheS1jbGpjLmdsLmV4YW1wbGVzLWFkdmFuY2VkL2NyZXNjZW50LTNkLWluaXQpIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nYW1lLWxvb3AgcGxheS1jbGpjLmdsLmV4YW1wbGVzLWFkdmFuY2VkL2FkdmFuY2VkLXJlbmRlcikpLCA6Ym9keS1zdHIgIigtPj5cbiAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvaW5pdC1leGFtcGxlIGNhcmQpXG4gKHBsYXktY2xqYy5nbC5leGFtcGxlcy1hZHZhbmNlZC9jcmVzY2VudC0zZC1pbml0KVxuIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nYW1lLWxvb3BcbiAgcGxheS1jbGpjLmdsLmV4YW1wbGVzLWFkdmFuY2VkL2FkdmFuY2VkLXJlbmRlcikpXG4iLCA6aWQgInBsYXktY2xqYy5nbC5leGFtcGxlcy1hZHZhbmNlZC9jcmVzY2VudC0zZC8wIn1dfSB7OnN5bSBiYWxscy0zZC1pbml0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2dhbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gYmFsbHMtM2QtaW5pdFxuIFtnYW1lXVxuIChnbCBnYW1lIGVuYWJsZSAoZ2wgZ2FtZSBDVUxMX0ZBQ0UpKVxuIChnbCBnYW1lIGVuYWJsZSAoZ2wgZ2FtZSBERVBUSF9URVNUKSlcbiAobGV0XG4gIFtlbnRpdHlcbiAgIChzaGFwZS1lbnRpdHlcbiAgICBnYW1lXG4gICAgKHByaW1pdGl2ZXMvc3BoZXJlXG4gICAgIHs6cmFkaXVzIDEwLCA6c3ViZGl2aXNpb25zLWF4aXMgNDgsIDpzdWJkaXZpc2lvbnMtaGVpZ2h0IDI0fSkpXG4gICBvYmplY3RzXG4gICAodmVjXG4gICAgKGZvclxuICAgICBbaSAocmFuZ2UgNTApXVxuICAgICB7OnR6IChyYW5kIDE1MCksXG4gICAgICA6cnggKHJhbmQgKCogMiAobWF0aCBQSSkpKSxcbiAgICAgIDpyeSAocmFuZCAobWF0aCBQSSkpLFxuICAgICAgOm1hdC11bmlmb3Jtc1xuICAgICAgezp1X2NvbG9yIFsocmFuZCkgKHJhbmQpIChyYW5kKSAxXSxcbiAgICAgICA6dV9zcGVjdWxhciBbMSAxIDEgMV0sXG4gICAgICAgOnVfc2hpbmluZXNzIChyYW5kIDUwMCksXG4gICAgICAgOnVfc3BlY3VsYXJGYWN0b3IgKHJhbmQgMSl9fSkpXVxuICAoYXNzb2MgZ2FtZSA6ZW50aXR5IGVudGl0eSA6b2JqZWN0cyBvYmplY3RzKSkpXG4ifSB7OnN5bSBzaGFwZS1lbnRpdHksIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZ2FtZSB7OmtleXMgW3Bvc2l0aW9ucyBub3JtYWxzIHRleGNvb3JkcyBpbmRpY2VzXX1dKX0sIDpzb3VyY2UgIihkZWZuXG4gc2hhcGUtZW50aXR5XG4gW2dhbWUgezprZXlzIFtwb3NpdGlvbnMgbm9ybWFscyB0ZXhjb29yZHMgaW5kaWNlc119XVxuIChjL2NvbXBpbGVcbiAgZ2FtZVxuICB7OnZlcnRleCBkYXRhL2FkdmFuY2VkLXZlcnRleC1zaGFkZXIsXG4gICA6ZnJhZ21lbnQgZGF0YS9hZHZhbmNlZC1mcmFnbWVudC1zaGFkZXIsXG4gICA6YXR0cmlidXRlc1xuICAgeydhX3Bvc2l0aW9uIHs6ZGF0YSBwb3NpdGlvbnMsIDp0eXBlIChnbCBnYW1lIEZMT0FUKSwgOnNpemUgM30sXG4gICAgJ2Ffbm9ybWFsIHs6ZGF0YSBub3JtYWxzLCA6dHlwZSAoZ2wgZ2FtZSBGTE9BVCksIDpzaXplIDN9LFxuICAgICdhX3RleENvb3JkIHs6ZGF0YSB0ZXhjb29yZHMsIDp0eXBlIChnbCBnYW1lIEZMT0FUKSwgOnNpemUgMn19LFxuICAgOmluZGljZXNcbiAgIHs6ZGF0YVxuICAgICgjPyg6Y2xqIHNob3J0LWFycmF5IDpjbGpzIChmbiogW3AxX180NTQ3NSNdIChqcy9VaW50MTZBcnJheS4gcDFfXzQ1NDc1IykpKVxuICAgICBpbmRpY2VzKSxcbiAgICA6dHlwZSAoZ2wgZ2FtZSBVTlNJR05FRF9TSE9SVCl9fSkpXG4ifSB7OnN5bSBjeWxpbmRlci0zZC1pbml0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2dhbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gY3lsaW5kZXItM2QtaW5pdFxuIFtnYW1lXVxuIChnbCBnYW1lIGVuYWJsZSAoZ2wgZ2FtZSBDVUxMX0ZBQ0UpKVxuIChnbCBnYW1lIGVuYWJsZSAoZ2wgZ2FtZSBERVBUSF9URVNUKSlcbiAobGV0XG4gIFtlbnRpdHlcbiAgIChzaGFwZS1lbnRpdHlcbiAgICBnYW1lXG4gICAgKHByaW1pdGl2ZXMvY3lsaW5kZXJcbiAgICAgezpib3R0b20tcmFkaXVzIDEwLFxuICAgICAgOnRvcC1yYWRpdXMgMTAsXG4gICAgICA6aGVpZ2h0IDMwLFxuICAgICAgOnJhZGlhbC1zdWJkaXZpc2lvbnMgMTAsXG4gICAgICA6dmVydGljYWwtc3ViZGl2aXNpb25zIDEwfSkpXG4gICBvYmplY3RzXG4gICAodmVjXG4gICAgKGZvclxuICAgICBbaSAocmFuZ2UgNTApXVxuICAgICB7OnR6IChyYW5kIDE1MCksXG4gICAgICA6cnggKHJhbmQgKCogMiAobWF0aCBQSSkpKSxcbiAgICAgIDpyeSAocmFuZCAobWF0aCBQSSkpLFxuICAgICAgOm1hdC11bmlmb3Jtc1xuICAgICAgezp1X2NvbG9yIFsocmFuZCkgKHJhbmQpIChyYW5kKSAxXSxcbiAgICAgICA6dV9zcGVjdWxhciBbMSAxIDEgMV0sXG4gICAgICAgOnVfc2hpbmluZXNzIChyYW5kIDUwMCksXG4gICAgICAgOnVfc3BlY3VsYXJGYWN0b3IgKHJhbmQgMSl9fSkpXVxuICAoYXNzb2MgZ2FtZSA6ZW50aXR5IGVudGl0eSA6b2JqZWN0cyBvYmplY3RzKSkpXG4ifSB7OnN5bSBkaXNjLTNkLCA6ZXhhbXBsZXMgW3s6d2l0aC1jYXJkIGNhcmQsIDpib2R5ICgtPj4gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2luaXQtZXhhbXBsZSBjYXJkKSAocGxheS1jbGpjLmdsLmV4YW1wbGVzLWFkdmFuY2VkL2Rpc2MtM2QtaW5pdCkgKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dhbWUtbG9vcCBwbGF5LWNsamMuZ2wuZXhhbXBsZXMtYWR2YW5jZWQvYWR2YW5jZWQtcmVuZGVyKSksIDpib2R5LXN0ciAiKC0+PlxuIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9pbml0LWV4YW1wbGUgY2FyZClcbiAocGxheS1jbGpjLmdsLmV4YW1wbGVzLWFkdmFuY2VkL2Rpc2MtM2QtaW5pdClcbiAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2FtZS1sb29wXG4gIHBsYXktY2xqYy5nbC5leGFtcGxlcy1hZHZhbmNlZC9hZHZhbmNlZC1yZW5kZXIpKVxuIiwgOmlkICJwbGF5LWNsamMuZ2wuZXhhbXBsZXMtYWR2YW5jZWQvZGlzYy0zZC8wIn1dfSB7OnN5bSB0b3J1cy0zZC1pbml0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2dhbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gdG9ydXMtM2QtaW5pdFxuIFtnYW1lXVxuIChnbCBnYW1lIGVuYWJsZSAoZ2wgZ2FtZSBDVUxMX0ZBQ0UpKVxuIChnbCBnYW1lIGVuYWJsZSAoZ2wgZ2FtZSBERVBUSF9URVNUKSlcbiAobGV0XG4gIFtlbnRpdHlcbiAgIChzaGFwZS1lbnRpdHlcbiAgICBnYW1lXG4gICAgKHByaW1pdGl2ZXMvdG9ydXNcbiAgICAgezpyYWRpdXMgMjAsXG4gICAgICA6dGhpY2tuZXNzIDUsXG4gICAgICA6cmFkaWFsLXN1YmRpdmlzaW9ucyAyMCxcbiAgICAgIDpib2R5LXN1YmRpdmlzaW9ucyAyMH0pKVxuICAgb2JqZWN0c1xuICAgKHZlY1xuICAgIChmb3JcbiAgICAgW2kgKHJhbmdlIDUwKV1cbiAgICAgezp0eiAocmFuZCAxNTApLFxuICAgICAgOnJ4IChyYW5kICgqIDIgKG1hdGggUEkpKSksXG4gICAgICA6cnkgKHJhbmQgKG1hdGggUEkpKSxcbiAgICAgIDptYXQtdW5pZm9ybXNcbiAgICAgIHs6dV9jb2xvciBbKHJhbmQpIChyYW5kKSAocmFuZCkgMV0sXG4gICAgICAgOnVfc3BlY3VsYXIgWzEgMSAxIDFdLFxuICAgICAgIDp1X3NoaW5pbmVzcyAocmFuZCA1MDApLFxuICAgICAgIDp1X3NwZWN1bGFyRmFjdG9yIChyYW5kIDEpfX0pKV1cbiAgKGFzc29jIGdhbWUgOmVudGl0eSBlbnRpdHkgOm9iamVjdHMgb2JqZWN0cykpKVxuIn0pLCBjbGpzLmNvcmUuYXN5bmMuaW1wbC5pb2MtaGVscGVycyAoezpzeW0gRVhDRVBUSU9OLUZSQU1FUywgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgRVhDRVBUSU9OLUZSQU1FUyA0KVxuIn0gezpzeW0gU1RBVEUtSURYLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBTVEFURS1JRFggMSlcbiJ9IHs6c3ltIGFzZXQtb2JqZWN0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2FyciBpZHggb10pfSwgOnNvdXJjZSAiKGRlZm4gYXNldC1vYmplY3QgW2FyciBpZHggb10gKGFnZXQgYXJyIGlkeCBvKSlcbiJ9IHs6c3ltIHJ1bi1zdGF0ZS1tYWNoaW5lLXdyYXBwZWQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3RhdGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gcnVuLXN0YXRlLW1hY2hpbmUtd3JhcHBlZFxuIFtzdGF0ZV1cbiAodHJ5XG4gIChydW4tc3RhdGUtbWFjaGluZSBzdGF0ZSlcbiAgKGNhdGNoXG4gICBqcy9PYmplY3RcbiAgIGV4XG4gICAoaW1wbC9jbG9zZSEgKGFnZXQtb2JqZWN0IHN0YXRlIFVTRVItU1RBUlQtSURYKSlcbiAgICh0aHJvdyBleCkpKSlcbiJ9IHs6c3ltIEZOLUlEWCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgRk4tSURYIDApXG4ifSB7OnN5bSBhZ2V0LW9iamVjdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFthcnIgaWR4XSl9LCA6c291cmNlICIoZGVmbiBhZ2V0LW9iamVjdCBbYXJyIGlkeF0gKGFnZXQgYXJyIGlkeCkpXG4ifSB7OnN5bSByZXR1cm4tY2hhbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzdGF0ZSB2YWx1ZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZXR1cm4tY2hhblxuIFtzdGF0ZSB2YWx1ZV1cbiAobGV0XG4gIFtjIChhZ2V0IHN0YXRlIFVTRVItU1RBUlQtSURYKV1cbiAgKHdoZW4tbm90IChuaWw/IHZhbHVlKSAoaW1wbC9wdXQhIGMgdmFsdWUgKGZuLWhhbmRsZXIgKGZuIFtdIG5pbCkpKSlcbiAgKGltcGwvY2xvc2UhIGMpXG4gIGMpKVxuIn0gezpzeW0gQklORElOR1MtSURYLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBCSU5ESU5HUy1JRFggMylcbiJ9IHs6c3ltIENVUlJFTlQtRVhDRVBUSU9OLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBDVVJSRU5ULUVYQ0VQVElPTiA1KVxuIn0gezpzeW0gcnVuLXN0YXRlLW1hY2hpbmUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3RhdGVdKX0sIDpzb3VyY2UgIihkZWZuIHJ1bi1zdGF0ZS1tYWNoaW5lIFtzdGF0ZV0gKChhZ2V0LW9iamVjdCBzdGF0ZSBGTi1JRFgpIHN0YXRlKSlcbiJ9IHs6c3ltIGZpbmlzaGVkPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB0aGUgbWFjaGluZSBpcyBpbiBhIGZpbmlzaGVkIHN0YXRlIiwgOmFyZ2xpc3RzIChbc3RhdGUtYXJyYXldKX0sIDpzb3VyY2UgIihkZWZuXG4gZmluaXNoZWQ/XG4gXCJSZXR1cm5zIHRydWUgaWYgdGhlIG1hY2hpbmUgaXMgaW4gYSBmaW5pc2hlZCBzdGF0ZVwiXG4gW3N0YXRlLWFycmF5XVxuIChrZXl3b3JkLWlkZW50aWNhbD8gKGFnZXQgc3RhdGUtYXJyYXkgU1RBVEUtSURYKSA6ZmluaXNoZWQpKVxuIn0gezpzeW0gVVNFUi1TVEFSVC1JRFgsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIFVTRVItU1RBUlQtSURYIDYpXG4ifSB7OnN5bSBwdXQhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N0YXRlIGJsayBjIHZhbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwdXQhXG4gW3N0YXRlIGJsayBjIHZhbF1cbiAoaWYtbGV0XG4gIFtjYlxuICAgKGltcGwvcHV0IVxuICAgIGNcbiAgICB2YWxcbiAgICAoZm4taGFuZGxlclxuICAgICAoZm5cbiAgICAgIFtyZXQtdmFsXVxuICAgICAgKGlvYy9hc2V0LWFsbCEgc3RhdGUgVkFMVUUtSURYIHJldC12YWwgU1RBVEUtSURYIGJsaylcbiAgICAgIChydW4tc3RhdGUtbWFjaGluZS13cmFwcGVkIHN0YXRlKSkpKV1cbiAgKGRvIChpb2MvYXNldC1hbGwhIHN0YXRlIFZBTFVFLUlEWCBAY2IgU1RBVEUtSURYIGJsaykgOnJlY3VyKVxuICBuaWwpKVxuIn0gezpzeW0gdGFrZSEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3RhdGUgYmxrIGNdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGFrZSFcbiBbc3RhdGUgYmxrIGNdXG4gKGlmLWxldFxuICBbY2JcbiAgIChpbXBsL3Rha2UhXG4gICAgY1xuICAgIChmbi1oYW5kbGVyXG4gICAgIChmblxuICAgICAgW3hdXG4gICAgICAoaW9jL2FzZXQtYWxsISBzdGF0ZSBWQUxVRS1JRFggeCBTVEFURS1JRFggYmxrKVxuICAgICAgKHJ1bi1zdGF0ZS1tYWNoaW5lLXdyYXBwZWQgc3RhdGUpKSkpXVxuICAoZG8gKGlvYy9hc2V0LWFsbCEgc3RhdGUgVkFMVUUtSURYIEBjYiBTVEFURS1JRFggYmxrKSA6cmVjdXIpXG4gIG5pbCkpXG4ifSB7OnN5bSBWQUxVRS1JRFgsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIFZBTFVFLUlEWCAyKVxuIn0pLCBwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscyAoezpzeW0gdGV4dHVyZXMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHRleHR1cmVzIChhdG9tIDApKVxuIn0gezpzeW0gbGlzdGVuLWZvci1tb3VzZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt7OmtleXMgW2NvbnRleHRdLCA6YXMgZ2FtZX0gKnN0YXRlXSl9LCA6c291cmNlICIoZGVmblxuIGxpc3Rlbi1mb3ItbW91c2VcbiBbezprZXlzIFtjb250ZXh0XSwgOmFzIGdhbWV9ICpzdGF0ZV1cbiAjPyg6Y2xqIChHTEZXL2dsZndTZXRDdXJzb3JQb3NDYWxsYmFjayBjb250ZXh0IChwcm94eSBbR0xGV0N1cnNvclBvc0NhbGxiYWNrXSBbXSAoaW52b2tlIFt3aW5kb3cgeHBvcyB5cG9zXSAoc3dhcCEgKnN0YXRlIChmbiBbezprZXlzIFt0eCB0eV0sIDpvciB7dHggMCwgdHkgMH0sIDphcyBzdGF0ZX1dIChsZXQgWypmYi13aWR0aCAoTWVtb3J5VXRpbC9tZW1BbGxvY0ludCAxKSAqZmItaGVpZ2h0IChNZW1vcnlVdGlsL21lbUFsbG9jSW50IDEpICp3aW5kb3ctd2lkdGggKE1lbW9yeVV0aWwvbWVtQWxsb2NJbnQgMSkgKndpbmRvdy1oZWlnaHQgKE1lbW9yeVV0aWwvbWVtQWxsb2NJbnQgMSkgXyAoR0xGVy9nbGZ3R2V0RnJhbWVidWZmZXJTaXplIGNvbnRleHQgKmZiLXdpZHRoICpmYi1oZWlnaHQpIF8gKEdMRlcvZ2xmd0dldFdpbmRvd1NpemUgY29udGV4dCAqd2luZG93LXdpZHRoICp3aW5kb3ctaGVpZ2h0KSBmYi13aWR0aCAoLmdldCAqZmItd2lkdGgpIGZiLWhlaWdodCAoLmdldCAqZmItaGVpZ2h0KSB3aW5kb3ctd2lkdGggKC5nZXQgKndpbmRvdy13aWR0aCkgd2luZG93LWhlaWdodCAoLmdldCAqd2luZG93LWhlaWdodCkgd2lkdGgtcmF0aW8gKC8gZmItd2lkdGggd2luZG93LXdpZHRoKSBoZWlnaHQtcmF0aW8gKC8gZmItaGVpZ2h0IHdpbmRvdy1oZWlnaHQpIHggKC0gKCogeHBvcyB3aWR0aC1yYXRpbykgdHgpIHkgKC0gKCogeXBvcyBoZWlnaHQtcmF0aW8pIHR5KSByeCAoLyB4IGZiLXdpZHRoKSByeSAoLyB5IGZiLWhlaWdodCkgciAoTWF0aC9hdGFuMiByeCByeSkgY3ggKC0geCAoLyBmYi13aWR0aCAyKSkgY3kgKC0gKC8gZmItaGVpZ2h0IDIpIHkpIGNyICgtPiAoLyBjeCBmYi13aWR0aCkgKCogMzYwKSBtL2RlZy0+cmFkKV0gKE1lbW9yeVV0aWwvbWVtRnJlZSAqZmItd2lkdGgpIChNZW1vcnlVdGlsL21lbUZyZWUgKmZiLWhlaWdodCkgKE1lbW9yeVV0aWwvbWVtRnJlZSAqd2luZG93LXdpZHRoKSAoTWVtb3J5VXRpbC9tZW1GcmVlICp3aW5kb3ctaGVpZ2h0KSAoYXNzb2Mgc3RhdGUgOnggeCA6eSB5IDpyeCByeCA6cnkgcnkgOnIgciA6Y3ggY3ggOmN5IGN5IDpjciBjcikpKSkpKSkgOmNsanMgKGV2ZW50cy9saXN0ZW4ganMvd2luZG93IFwibW91c2Vtb3ZlXCIgKGZuIFtldmVudF0gKHN3YXAhICpzdGF0ZSAoZm4gW3s6a2V5cyBbdHggdHldLCA6b3Ige3R4IDAsIHR5IDB9LCA6YXMgc3RhdGV9XSAobGV0IFtib3VuZHMgKC5nZXRCb3VuZGluZ0NsaWVudFJlY3QgY29udGV4dC5jYW52YXMpIHggKC0gKC4tY2xpZW50WCBldmVudCkgKC4tbGVmdCBib3VuZHMpIHR4KSB5ICgtICguLWNsaWVudFkgZXZlbnQpICguLXRvcCBib3VuZHMpIHR5KSByeCAoLyB4ICguLXdpZHRoIGJvdW5kcykpIHJ5ICgvIHkgKC4taGVpZ2h0IGJvdW5kcykpIHIgKGpzL01hdGguYXRhbjIgcnggcnkpIGN4ICgtIHggKC8gKC4td2lkdGggYm91bmRzKSAyKSkgY3kgKC0gKC8gKC4taGVpZ2h0IGJvdW5kcykgMikgeSkgY3IgKC0+ICgvIGN4ICguLXdpZHRoIGJvdW5kcykpICgqIDM2MCkgbS9kZWctPnJhZCldIChhc3NvYyBzdGF0ZSA6eCB4IDp5IHkgOnJ4IHJ4IDpyeSByeSA6ciByIDpjeCBjeCA6Y3kgY3kgOmNyIGNyKSkpKSkpKSlcbiJ9IHs6c3ltIGdldC1zaXplLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2dhbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LXNpemVcbiBbZ2FtZV1cbiAjPyg6Y2xqIChsZXQgWyp3aWR0aCAoTWVtb3J5VXRpbC9tZW1BbGxvY0ludCAxKSAqaGVpZ2h0IChNZW1vcnlVdGlsL21lbUFsbG9jSW50IDEpIF8gKEdMRlcvZ2xmd0dldEZyYW1lYnVmZmVyU2l6ZSAoOmNvbnRleHQgZ2FtZSkgKndpZHRoICpoZWlnaHQpIHcgKC5nZXQgKndpZHRoKSBoICguZ2V0ICpoZWlnaHQpXSAoTWVtb3J5VXRpbC9tZW1GcmVlICp3aWR0aCkgKE1lbW9yeVV0aWwvbWVtRnJlZSAqaGVpZ2h0KSBbdyBoXSkgOmNsanMgWygtPiBnYW1lIDpjb250ZXh0IC4tY2FudmFzIC4tY2xpZW50V2lkdGgpICgtPiBnYW1lIDpjb250ZXh0IC4tY2FudmFzIC4tY2xpZW50SGVpZ2h0KV0pKVxuIn0gezpzeW0gZ2V0LXdpZHRoLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2dhbWVdKX0sIDpzb3VyY2UgIihkZWZuIGdldC13aWR0aCBbZ2FtZV0gKGZpcnN0IChnZXQtc2l6ZSBnYW1lKSkpXG4ifSB7OnN5bSBjb3MsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIGNvcyAoZm4qIFtwMV9fNDU0NzcjXSAobWF0aCBjb3MgcDFfXzQ1NDc3IykpKVxuIn0gezpzeW0gcmVzaXplLWV4YW1wbGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbezprZXlzIFtjb250ZXh0XSwgOmFzIGdhbWV9XSl9LCA6c291cmNlICIoZGVmblxuIHJlc2l6ZS1leGFtcGxlXG4gW3s6a2V5cyBbY29udGV4dF0sIDphcyBnYW1lfV1cbiAjPyg6Y2xqcyAobGV0IFtkaXNwbGF5LXdpZHRoIGNvbnRleHQuY2FudmFzLmNsaWVudFdpZHRoIGRpc3BsYXktaGVpZ2h0IGNvbnRleHQuY2FudmFzLmNsaWVudEhlaWdodF0gKHdoZW4gKG9yIChub3Q9IGNvbnRleHQuY2FudmFzLndpZHRoIGRpc3BsYXktd2lkdGgpIChub3Q9IGNvbnRleHQuY2FudmFzLmhlaWdodCBkaXNwbGF5LWhlaWdodCkpIChzZXQhIGNvbnRleHQuY2FudmFzLndpZHRoIGRpc3BsYXktd2lkdGgpIChzZXQhIGNvbnRleHQuY2FudmFzLmhlaWdodCBkaXNwbGF5LWhlaWdodCkpKSkpXG4ifSB7OnN5bSBnZXQtaW1hZ2UsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZm5hbWUgY2FsbGJhY2tdKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LWltYWdlXG4gW2ZuYW1lIGNhbGxiYWNrXVxuICM/KDpjbGogKGxldCBbaXMgKGlvL2lucHV0LXN0cmVhbSAoaW8vcmVzb3VyY2UgKHN0ciBcImR5bmFkb2MtZXh0ZW5kL2NsanMvXCIgZm5hbWUpKSkgYnl0ZXMgKHdpdGgtb3BlbiBbb3V0IChqYXZhLmlvLkJ5dGVBcnJheU91dHB1dFN0cmVhbS4pXSAoaW8vY29weSBpcyBvdXQpICgudG9CeXRlQXJyYXkgb3V0KSkgKndpZHRoIChNZW1vcnlVdGlsL21lbUFsbG9jSW50IDEpICpoZWlnaHQgKE1lbW9yeVV0aWwvbWVtQWxsb2NJbnQgMSkgKmNvbXBvbmVudHMgKE1lbW9yeVV0aWwvbWVtQWxsb2NJbnQgMSkgZGlyZWN0LWJ1ZmZlciAoZG90byAoQnl0ZUJ1ZmZlci9hbGxvY2F0ZURpcmVjdCAoYWxlbmd0aCBieXRlcykpICgucHV0IGJ5dGVzKSAoLmZsaXApKSBkZWNvZGVkLWltYWdlIChTVEJJbWFnZS9zdGJpX2xvYWRfZnJvbV9tZW1vcnkgZGlyZWN0LWJ1ZmZlciAqd2lkdGggKmhlaWdodCAqY29tcG9uZW50cyBTVEJJbWFnZS9TVEJJX3JnYl9hbHBoYSkgaW1hZ2UgezpkYXRhIGRlY29kZWQtaW1hZ2UsIDp3aWR0aCAoLmdldCAqd2lkdGgpLCA6aGVpZ2h0ICguZ2V0ICpoZWlnaHQpfV0gKE1lbW9yeVV0aWwvbWVtRnJlZSAqd2lkdGgpIChNZW1vcnlVdGlsL21lbUZyZWUgKmhlaWdodCkgKE1lbW9yeVV0aWwvbWVtRnJlZSAqY29tcG9uZW50cykgKGNhbGxiYWNrIGltYWdlKSkgOmNsanMgKGxldCBbaW1hZ2UgKGpzL0ltYWdlLildIChkb3RvIGltYWdlICgtPiAuLXNyYyAoc2V0ISBmbmFtZSkpICgtPiAuLW9ubG9hZCAoc2V0ISAoZm4qIFtdIChjYWxsYmFjayB7OmRhdGEgaW1hZ2UsIDp3aWR0aCBpbWFnZS53aWR0aCwgOmhlaWdodCBpbWFnZS5oZWlnaHR9KSkpKSkpKSlcbiJ9IHs6c3ltIGdldC1oZWlnaHQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZ2FtZV0pfSwgOnNvdXJjZSAiKGRlZm4gZ2V0LWhlaWdodCBbZ2FtZV0gKHNlY29uZCAoZ2V0LXNpemUgZ2FtZSkpKVxuIn0gezpzeW0gUEksIDptZXRhIHt9LCA6c291cmNlICIoZGVmIFBJIChtYXRoIFBJKSlcbiJ9IHs6c3ltIGluaXQtZXhhbXBsZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFsjPyg6Y2xqIHdpbmRvdyA6Y2xqcyBjYXJkKV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbml0LWV4YW1wbGVcbiBbIz8oOmNsaiB3aW5kb3cgOmNsanMgY2FyZCldXG4gIz8oOmNsaiAoYXNzb2MgKGMvLT5nYW1lIHdpbmRvdykgOnRleC1jb3VudCB0ZXh0dXJlcyA6dG90YWwtdGltZSAwIDpkZWx0YS10aW1lIDApIDpjbGpzIChkbyAod2hlbi1sZXQgW2NhbnZhcyAoLnF1ZXJ5U2VsZWN0b3IgY2FyZCBcImNhbnZhc1wiKV0gKC5yZW1vdmVDaGlsZCBjYXJkIGNhbnZhcykpIChsZXQgW2NhbnZhcyAoZG90byAoanMvZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBcImNhbnZhc1wiKSAoLT4gLi1zdHlsZSAuLXdpZHRoIChzZXQhIFwiMTAwJVwiKSkgKC0+IC4tc3R5bGUgLi1oZWlnaHQgKHNldCEgXCIxMDAlXCIpKSkgY29udGV4dCAoLmdldENvbnRleHQgY2FudmFzIFwid2ViZ2wyXCIpXSAoLmFwcGVuZENoaWxkIGNhcmQgY2FudmFzKSAoYXNzb2MgKGMvLT5nYW1lIGNvbnRleHQpIDp0b3RhbC10aW1lIDAgOmRlbHRhLXRpbWUgMCkpKSkpXG4ifSB7OnN5bSBnYW1lLWxvb3AsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZiBnYW1lXSl9LCA6c291cmNlICIoZGVmblxuIGdhbWUtbG9vcFxuIFtmIGdhbWVdXG4gIz8oOmNsaiB7OmYgZiwgOmdhbWUgZ2FtZX0gOmNsanMgKGxldCBbZ2FtZSAoZiBnYW1lKV0gKGpzL3JlcXVlc3RBbmltYXRpb25GcmFtZSAoZm4gW3RzXSAobGV0IFt0cyAoKiB0cyAwLjAwMSldIChnYW1lLWxvb3AgZiAoYXNzb2MgZ2FtZSA6ZGVsdGEtdGltZSAoLSB0cyAoOnRvdGFsLXRpbWUgZ2FtZSkpIDp0b3RhbC10aW1lIHRzKSkpKSkpKSlcbiJ9IHs6c3ltIHNpbiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgc2luIChmbiogW3AxX180NTQ3OCNdIChtYXRoIHNpbiBwMV9fNDU0NzgjKSkpXG4ifSksIGR5bmFkb2MuYWxpYXNlcyAoezpzeW0gY2hhbiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgY2hhbiBhc3luYy9wcm9taXNlLWNoYW4pXG4ifSB7OnN5bSBwdXQhLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBwdXQhIGFzeW5jL3B1dCEpXG4ifSB7OnN5bSA8ISEsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIDwhISAjPyg6Y2xqIGFzeW5jLzwhISA6Y2xqcyBpZGVudGl0eSkpXG4ifSksIGNsanMuYW5hbHl6ZXIuaW1wbCAoezpzeW0gQU5ZX1NZTSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgQU5ZX1NZTSAnYW55KVxuIn0gezpzeW0gQk9PTEVBTl9PUl9TRVEsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIEJPT0xFQU5fT1JfU0VRICcje3NlcSBib29sZWFufSlcbiJ9IHs6c3ltIEJPT0xFQU5fU1lNLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBCT09MRUFOX1NZTSAnYm9vbGVhbilcbiJ9IHs6c3ltIElHTk9SRV9TWU0sIDptZXRhIHt9LCA6c291cmNlICIoZGVmIElHTk9SRV9TWU0gJ2lnbm9yZSlcbiJ9IHs6c3ltIE5PVF9OQVRJVkUsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIE5PVF9OQVRJVkUgJyN7Y2xqIG5vdC1uYXRpdmV9KVxuIn0pLCBjbGpzLnNwZWMudGVzdC5hbHBoYSAoezpzeW0gZ2V0LWVudiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuIGdldC1lbnYgW10gezp1YS1wcm9kdWN0IChnZXQtdWEtcHJvZHVjdCl9KVxuIn0gezpzeW0gZGlzdGluY3QtYnksIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbZiBjb2xsXV19LCA6c291cmNlICIoZGVmblxuIGRpc3RpbmN0LWJ5XG4gKFtmIGNvbGxdXG4gIChsZXRcbiAgIFtzdGVwXG4gICAgKGZuXG4gICAgIHN0ZXBcbiAgICAgW3hzIHNlZW5dXG4gICAgIChsYXp5LXNlcVxuICAgICAgKChmblxuICAgICAgICBbW3ggOmFzIHhzXSBzZWVuXVxuICAgICAgICAod2hlbi1sZXRcbiAgICAgICAgIFtzIChzZXEgeHMpXVxuICAgICAgICAgKGxldFxuICAgICAgICAgIFt2IChmIHgpXVxuICAgICAgICAgIChpZlxuICAgICAgICAgICAoY29udGFpbnM/IHNlZW4gdilcbiAgICAgICAgICAgKHJlY3VyIChyZXN0IHMpIHNlZW4pXG4gICAgICAgICAgIChjb25zIHggKHN0ZXAgKHJlc3QgcykgKGNvbmogc2VlbiB2KSkpKSkpKVxuICAgICAgIHhzXG4gICAgICAgc2VlbikpKV1cbiAgIChzdGVwIGNvbGwgI3t9KSkpKVxuIn0gezpzeW0gc3VtbWFyaXplLXJlc3VsdHMsIDptZXRhIHs6ZG9jICJHaXZlbiBhIGNvbGxlY3Rpb24gb2YgY2hlY2stcmVzdWx0cywgZS5nLiBmcm9tICdjaGVjaycsIHByZXR0eVxucHJpbnRzIHRoZSBzdW1tYXJ5LXJlc3VsdCAoZGVmYXVsdCBhYmJyZXYtcmVzdWx0KSBvZiBlYWNoLlxuXG5SZXR1cm5zIGEgbWFwIHdpdGggOnRvdGFsLCB0aGUgdG90YWwgbnVtYmVyIG9mIHJlc3VsdHMsIHBsdXMgYVxua2V5IHdpdGggYSBjb3VudCBmb3IgZWFjaCBkaWZmZXJlbnQgOnR5cGUgb2YgcmVzdWx0LiIsIDphcmdsaXN0cyBbW2NoZWNrLXJlc3VsdHNdIFtjaGVjay1yZXN1bHRzIHN1bW1hcnktcmVzdWx0XV19LCA6c291cmNlICIoZGVmblxuIHN1bW1hcml6ZS1yZXN1bHRzXG4gXCJHaXZlbiBhIGNvbGxlY3Rpb24gb2YgY2hlY2stcmVzdWx0cywgZS5nLiBmcm9tICdjaGVjaycsIHByZXR0eVxcbnByaW50cyB0aGUgc3VtbWFyeS1yZXN1bHQgKGRlZmF1bHQgYWJicmV2LXJlc3VsdCkgb2YgZWFjaC5cXG5cXG5SZXR1cm5zIGEgbWFwIHdpdGggOnRvdGFsLCB0aGUgdG90YWwgbnVtYmVyIG9mIHJlc3VsdHMsIHBsdXMgYVxcbmtleSB3aXRoIGEgY291bnQgZm9yIGVhY2ggZGlmZmVyZW50IDp0eXBlIG9mIHJlc3VsdC5cIlxuIChbY2hlY2stcmVzdWx0c10gKHN1bW1hcml6ZS1yZXN1bHRzIGNoZWNrLXJlc3VsdHMgYWJicmV2LXJlc3VsdCkpXG4gKFtjaGVjay1yZXN1bHRzIHN1bW1hcnktcmVzdWx0XVxuICAocmVkdWNlXG4gICAoZm5cbiAgICBbc3VtbWFyeSByZXN1bHRdXG4gICAgKHBwL3BwcmludCAoc3VtbWFyeS1yZXN1bHQgcmVzdWx0KSlcbiAgICAoLT5cbiAgICAgc3VtbWFyeVxuICAgICAodXBkYXRlIDp0b3RhbCBpbmMpXG4gICAgICh1cGRhdGUgKHJlc3VsdC10eXBlIHJlc3VsdCkgKGZuaWwgaW5jIDApKSkpXG4gICB7OnRvdGFsIDB9XG4gICBjaGVjay1yZXN1bHRzKSkpXG4ifSB7OnN5bSBpbnN0cnVtZW50YWJsZS1zeW1zLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYW4gb3B0cyBtYXAgYXMgcGVyIGluc3RydW1lbnQsIHJldHVybnMgdGhlIHNldCBvZiBzeW1zXG50aGF0IGNhbiBiZSBpbnN0cnVtZW50ZWQuIiwgOmFyZ2xpc3RzIFtbXSBbb3B0c11dfSwgOnNvdXJjZSAiKGRlZm5cbiBpbnN0cnVtZW50YWJsZS1zeW1zXG4gXCJHaXZlbiBhbiBvcHRzIG1hcCBhcyBwZXIgaW5zdHJ1bWVudCwgcmV0dXJucyB0aGUgc2V0IG9mIHN5bXNcXG50aGF0IGNhbiBiZSBpbnN0cnVtZW50ZWQuXCJcbiAoW10gKGluc3RydW1lbnRhYmxlLXN5bXMgbmlsKSlcbiAoW29wdHNdXG4gIChhc3NlcnRcbiAgIChldmVyeT8gaWRlbnQ/IChrZXlzICg6Z2VuIG9wdHMpKSlcbiAgIFwiaW5zdHJ1bWVudCA6Z2VuIGV4cGVjdHMgaWRlbnQga2V5c1wiKVxuICAocmVkdWNlXG4gICBpbnRvXG4gICAje31cbiAgIFsoZmlsdGVyIGZuLXNwZWMtbmFtZT8gKGtleXMgKHMvcmVnaXN0cnkpKSlcbiAgICAoa2V5cyAoOnNwZWMgb3B0cykpXG4gICAgKDpzdHViIG9wdHMpXG4gICAgKGtleXMgKDpyZXBsYWNlIG9wdHMpKV0pKSlcbiJ9IHs6c3ltIGdldC1ob3N0LXBvcnQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIGdldC1ob3N0LXBvcnRcbiBbXVxuIChpZlxuICAobm90PSBcImJyb3dzZXJcIiAqdGFyZ2V0KilcbiAge31cbiAgezpob3N0ICguLiBqcy93aW5kb3cgLWxvY2F0aW9uIC1ob3N0KSxcbiAgIDpwb3J0ICguLiBqcy93aW5kb3cgLWxvY2F0aW9uIC1wb3J0KX0pKVxuIn0gezpzeW0gZ2V0LXVhLXByb2R1Y3QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIGdldC11YS1wcm9kdWN0XG4gW11cbiAoaWZcbiAgKG5vdD0gXCJicm93c2VyXCIgKnRhcmdldCopXG4gIChrZXl3b3JkICp0YXJnZXQqKVxuICAoY29uZFxuICAgcHJvZHVjdC9TQUZBUklcbiAgIDpzYWZhcmlcbiAgIHByb2R1Y3QvQ0hST01FXG4gICA6Y2hyb21lXG4gICBwcm9kdWN0L0ZJUkVGT1hcbiAgIDpmaXJlZm94XG4gICBwcm9kdWN0L0lFXG4gICA6aWUpKSlcbiJ9IHs6c3ltIC0+c3ltLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIC0+c3ltIFt4XSAoQCMncy8tPnN5bSB4KSlcbiJ9IHs6c3ltIGFiYnJldi1yZXN1bHQsIDptZXRhIHs6ZG9jICJHaXZlbiBhIGNoZWNrIHJlc3VsdCwgcmV0dXJucyBhbiBhYmJyZXZpYXRlZCB2ZXJzaW9uXG5zdWl0YWJsZSBmb3Igc3VtbWFyeSB1c2UuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhYmJyZXYtcmVzdWx0XG4gXCJHaXZlbiBhIGNoZWNrIHJlc3VsdCwgcmV0dXJucyBhbiBhYmJyZXZpYXRlZCB2ZXJzaW9uXFxuc3VpdGFibGUgZm9yIHN1bW1hcnkgdXNlLlwiXG4gW3hdXG4gKGlmXG4gICg6ZmFpbHVyZSB4KVxuICAoLT5cbiAgIChkaXNzb2MgeCA6Y2xvanVyZS5zcGVjLnRlc3QuY2hlY2svcmV0KVxuICAgKHVwZGF0ZSA6c3BlYyBzL2Rlc2NyaWJlKVxuICAgKHVwZGF0ZSA6ZmFpbHVyZSB1bndyYXAtZmFpbHVyZSkpXG4gIChkaXNzb2MgeCA6c3BlYyA6Y2xvanVyZS5zcGVjLnRlc3QuY2hlY2svb3B0cykpKVxuIn0gezpzeW0gdmFsaWRhdGUtY2hlY2stb3B0cywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtvcHRzXSl9LCA6c291cmNlICIoZGVmblxuIHZhbGlkYXRlLWNoZWNrLW9wdHNcbiBbb3B0c11cbiAoYXNzZXJ0XG4gIChldmVyeT8gaWRlbnQ/IChrZXlzICg6Z2VuIG9wdHMpKSlcbiAgXCJjaGVjayA6Z2VuIGV4cGVjdHMgaWRlbnQga2V5c1wiKSlcbiJ9KSwgcGxheS1jbGpjLmdsLnRleHQgKHs6c3ltIC0+Zm9udC1lbnRpdHksIDptZXRhIHs6ZG9jICJSZXR1cm5zIGFuIGVudGl0eSB3aXRoIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBmb250LiBUaGUgc2Vjb25kIGFyaXR5IGlzIGZvciBiYWNrd2FyZHNcbiAgY29tcGF0aWJpbGl0eSBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkLiIsIDphcmdsaXN0cyBbW2dhbWUgZGF0YSBiYWtlZC1mb250XSBbZ2FtZSBkYXRhIHdpZHRoIGhlaWdodF1dfSwgOnNvdXJjZSAiKGRlZm5cbiAtPmZvbnQtZW50aXR5XG4gXCJSZXR1cm5zIGFuIGVudGl0eSB3aXRoIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBmb250LiBUaGUgc2Vjb25kIGFyaXR5IGlzIGZvciBiYWNrd2FyZHNcXG4gIGNvbXBhdGliaWxpdHkgYW5kIHNob3VsZCBub3QgYmUgdXNlZC5cIlxuIChbZ2FtZSBkYXRhIGJha2VkLWZvbnRdXG4gICgtPlxuICAgKC0+Zm9udC1lbnRpdHlcbiAgICBnYW1lXG4gICAgZGF0YVxuICAgICg6Yml0bWFwLXdpZHRoIGJha2VkLWZvbnQpXG4gICAgKDpiaXRtYXAtaGVpZ2h0IGJha2VkLWZvbnQpKVxuICAgKGFzc29jIDpiYWtlZC1mb250IGJha2VkLWZvbnQpXG4gICBtYXAtPkZvbnRFbnRpdHkpKVxuIChbZ2FtZSBkYXRhIHdpZHRoIGhlaWdodF1cbiAgKC0+XG4gICAoZS8tPmltYWdlLWVudGl0eSBnYW1lIGRhdGEgd2lkdGggaGVpZ2h0KVxuICAgKGFzc29jIDp2ZXJ0ZXggZm9udC12ZXJ0ZXgtc2hhZGVyIDpmcmFnbWVudCBmb250LWZyYWdtZW50LXNoYWRlcilcbiAgICh1cGRhdGVcbiAgICA6dW5pZm9ybXNcbiAgICBtZXJnZVxuICAgIHsndV9jb2xvciBbMCAwIDAgMV0sXG4gICAgICd1X3NjYWxlX21hdHJpeCAobS9pZGVudGl0eS1tYXRyaXggMyksXG4gICAgICd1X3RyYW5zbGF0ZV9tYXRyaXggKG0vaWRlbnRpdHktbWF0cml4IDMpfSlcbiAgICM/KDpjbGogKGFzc29jLWluIFs6dW5pZm9ybXMgKHF1b3RlIHVfaW1hZ2UpIDpvcHRzXSB7Om1pcC1sZXZlbCAwLCA6aW50ZXJuYWwtZm10IChnbCBnYW1lIFJFRCksIDp3aWR0aCB3aWR0aCwgOmhlaWdodCBoZWlnaHQsIDpib3JkZXIgMCwgOnNyYy1mbXQgKGdsIGdhbWUgUkVEKSwgOnNyYy10eXBlIChnbCBnYW1lIFVOU0lHTkVEX0JZVEUpfSkpKSkpXG4iLCA6ZXhhbXBsZXMgW3s6d2l0aC1jYXJkIGNhcmQsIDp3aXRoLWZvY3VzIHs6Zm9ybSBbOmxvY2FsLXN5bWJvbCBmb2N1c10sIDppbml0LWV4cHIgKHBsYXktY2xqYy5nbC50ZXh0Ly0+Zm9udC1lbnRpdHkgZ2FtZSBkYXRhIGJha2VkLWZvbnQpfSwgOmJvZHkgKGxldCBbZ2FtZSAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvaW5pdC1leGFtcGxlIGNhcmQpXSAocGxheS1jbGpjLmdsLmV4YW1wbGVzLXRleHQvaW5pdCBnYW1lKSAocGxheS1jbGpjLmdsLmV4YW1wbGVzLXRleHQvbG9hZC1yb2JvdG8gKGZuIFt7OmtleXMgW2RhdGFdLCA6YXMgaW1hZ2V9IGJha2VkLWZvbnRdIChsZXQgW2VudGl0eSAocGxheS1jbGpjLmdsLmNvcmUvY29tcGlsZSBnYW1lIGZvY3VzKV0gKC0+PiBnYW1lIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nYW1lLWxvb3AgKGZuIGZvbnQtZW50aXR5LXJlbmRlciBbZ2FtZV0gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL3Jlc2l6ZS1leGFtcGxlIGdhbWUpIChsZXQgW2dhbWUtd2lkdGggKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dldC13aWR0aCBnYW1lKSBnYW1lLWhlaWdodCAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2V0LWhlaWdodCBnYW1lKSBzY3JlZW4tcmF0aW8gKC8gZ2FtZS13aWR0aCBnYW1lLWhlaWdodCkgaW1hZ2UtcmF0aW8gKC8gKDp3aWR0aCBlbnRpdHkpICg6aGVpZ2h0IGVudGl0eSkpIFtpbWctd2lkdGggaW1nLWhlaWdodF0gKGlmICg+IHNjcmVlbi1yYXRpbyBpbWFnZS1yYXRpbykgWygqIGdhbWUtaGVpZ2h0ICgvICg6d2lkdGggZW50aXR5KSAoOmhlaWdodCBlbnRpdHkpKSkgZ2FtZS1oZWlnaHRdIFtnYW1lLXdpZHRoICgqIGdhbWUtd2lkdGggKC8gKDpoZWlnaHQgZW50aXR5KSAoOndpZHRoIGVudGl0eSkpKV0pXSAocGxheS1jbGpjLmdsLmNvcmUvcmVuZGVyIGdhbWUgKC0+IGVudGl0eSAoYXNzb2MgOnZpZXdwb3J0IHs6eCAwLCA6eSAwLCA6d2lkdGggZ2FtZS13aWR0aCwgOmhlaWdodCBnYW1lLWhlaWdodH0gOmNsZWFyIHs6Y29sb3IgWzEgMSAxIDFdLCA6ZGVwdGggMX0pIChwbGF5LWNsamMudHJhbnNmb3Jtcy9wcm9qZWN0IGdhbWUtd2lkdGggZ2FtZS1oZWlnaHQpIChwbGF5LWNsamMudHJhbnNmb3Jtcy90cmFuc2xhdGUgMCAwKSAocGxheS1jbGpjLnRyYW5zZm9ybXMvc2NhbGUgaW1nLXdpZHRoIGltZy1oZWlnaHQpKSkpIGdhbWUpKSkpKSkpLCA6Ym9keS1zdHIgIihwbGF5LWNsamMuZ2wudGV4dC8tPmZvbnQtZW50aXR5IGdhbWUgZGF0YSBiYWtlZC1mb250KVxuIiwgOmlkICJwbGF5LWNsamMuZ2wudGV4dC8tPmZvbnQtZW50aXR5LzAifV19IHs6c3ltIC0+dGV4dC1lbnRpdHksIDptZXRhIHs6ZG9jICJSZXR1cm5zIGFuIGVudGl0eSB3aXRoIHRoZSBnaXZlbiB0ZXh0IHJlbmRlcmVkIHRvIGl0LiBUaGUgc2Vjb25kIGFyaXR5IGlzIGZvciBiYWNrd2FyZHNcbiAgY29tcGF0aWJpbGl0eSBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkLiIsIDphcmdsaXN0cyBbW2dhbWUge3s6a2V5cyBbYmFrZWQtY2hhcnMgYmFzZWxpbmUgZm9udC1oZWlnaHQgZmlyc3QtY2hhciBiaXRtYXAtd2lkdGggYml0bWFwLWhlaWdodF19IDpiYWtlZC1mb250LCA6YXMgZm9udC1lbnRpdHl9IHRleHRdIFtnYW1lIGJha2VkLWZvbnQgaW1hZ2UtZW50aXR5IHRleHRdXX0sIDpzb3VyY2UgIihkZWZuXG4gLT50ZXh0LWVudGl0eVxuIFwiUmV0dXJucyBhbiBlbnRpdHkgd2l0aCB0aGUgZ2l2ZW4gdGV4dCByZW5kZXJlZCB0byBpdC4gVGhlIHNlY29uZCBhcml0eSBpcyBmb3IgYmFja3dhcmRzXFxuICBjb21wYXRpYmlsaXR5IGFuZCBzaG91bGQgbm90IGJlIHVzZWQuXCJcbiAoW2dhbWVcbiAgIHt7OmtleXNcbiAgICAgW2Jha2VkLWNoYXJzXG4gICAgICBiYXNlbGluZVxuICAgICAgZm9udC1oZWlnaHRcbiAgICAgIGZpcnN0LWNoYXJcbiAgICAgIGJpdG1hcC13aWR0aFxuICAgICAgYml0bWFwLWhlaWdodF19XG4gICAgOmJha2VkLWZvbnQsXG4gICAgOmFzIGZvbnQtZW50aXR5fVxuICAgdGV4dF1cbiAgKHdoZW4tbm90XG4gICAoOnByb2dyYW0gZm9udC1lbnRpdHkpXG4gICAodGhyb3dcbiAgICAoZXgtaW5mb1xuICAgICBcIk9ubHkgY29tcGlsZWQgZm9udCBlbnRpdGllcyBjYW4gYmUgcGFzc2VkIHRvIC0+dGV4dC1lbnRpdHlcIlxuICAgICB7fSkpKVxuICAobG9vcFxuICAgW3RleHQgKHNlcSB0ZXh0KSB0b3RhbCAoZmxvYXQgMCkgaW5uZXItZW50aXRpZXMgW11dXG4gICAoaWYtbGV0XG4gICAgW2NoIChmaXJzdCB0ZXh0KV1cbiAgICAobGV0XG4gICAgIFt7OmtleXMgW3ggeSB3IGggeG9mZiB5b2ZmIHhhZHZdfVxuICAgICAgKG50aFxuICAgICAgIGJha2VkLWNoYXJzXG4gICAgICAgKC0gIz8oOmNsaiAoaW50IGNoKSA6Y2xqcyAoLmNoYXJDb2RlQXQgY2ggMCkpIGZpcnN0LWNoYXIpKV1cbiAgICAgKHJlY3VyXG4gICAgICAocmVzdCB0ZXh0KVxuICAgICAgKCsgdG90YWwgKGZsb2F0IHhhZHYpKVxuICAgICAgKGNvbmpcbiAgICAgICBpbm5lci1lbnRpdGllc1xuICAgICAgICgtPlxuICAgICAgICBmb250LWVudGl0eVxuICAgICAgICAodC9wcm9qZWN0IGJpdG1hcC13aWR0aCBiaXRtYXAtaGVpZ2h0KVxuICAgICAgICAodC9jcm9wIHggeSB3IGgpXG4gICAgICAgICh0L3RyYW5zbGF0ZSAoKyB4b2ZmIHRvdGFsKSAoLSBmb250LWhlaWdodCBiYXNlbGluZSB5b2ZmKSlcbiAgICAgICAgKHQvc2NhbGUgdyBoKVxuICAgICAgICAodXBkYXRlLWluXG4gICAgICAgICBbOnVuaWZvcm1zICd1X21hdHJpeF1cbiAgICAgICAgIChmbipcbiAgICAgICAgICBbcDFfXzQ0OTkwI11cbiAgICAgICAgICAobS9tdWx0aXBseS1tYXRyaWNlcyAzIGZsaXAteS1tYXRyaXggcDFfXzQ0OTkwIykpKSkpKSlcbiAgICAoLT5cbiAgICAgKGUvLT5pbWFnZS1lbnRpdHkgZ2FtZSBuaWwgdG90YWwgZm9udC1oZWlnaHQpXG4gICAgIChhc3NvY1xuICAgICAgOndpZHRoXG4gICAgICB0b3RhbFxuICAgICAgOmhlaWdodFxuICAgICAgZm9udC1oZWlnaHRcbiAgICAgIDpyZW5kZXItdG8tdGV4dHVyZVxuICAgICAgeyd1X2ltYWdlXG4gICAgICAgKG1hcHZcbiAgICAgICAgKGZuKlxuICAgICAgICAgW3AxX180NDk5MSNdXG4gICAgICAgICAoYXNzb2NcbiAgICAgICAgICBwMV9fNDQ5OTEjXG4gICAgICAgICAgOnZpZXdwb3J0XG4gICAgICAgICAgezp4IDAsXG4gICAgICAgICAgIDp5ICgtIGZvbnQtaGVpZ2h0IGJpdG1hcC1oZWlnaHQpLFxuICAgICAgICAgICA6d2lkdGggYml0bWFwLXdpZHRoLFxuICAgICAgICAgICA6aGVpZ2h0IGJpdG1hcC1oZWlnaHR9KSlcbiAgICAgICAgaW5uZXItZW50aXRpZXMpfSkpKSkpXG4gKFtnYW1lIGJha2VkLWZvbnQgaW1hZ2UtZW50aXR5IHRleHRdXG4gICgtPnRleHQtZW50aXR5XG4gICBnYW1lXG4gICAoYXNzb2MgaW1hZ2UtZW50aXR5IDpiYWtlZC1mb250IGJha2VkLWZvbnQpXG4gICB0ZXh0KSkpXG4iLCA6ZXhhbXBsZXMgW3s6d2l0aC1jYXJkIGNhcmQsIDp3aXRoLWZvY3VzIHs6Zm9ybSBbOmxvY2FsLXN5bWJvbCBmb2N1c10sIDppbml0LWV4cHIgKHBsYXktY2xqYy5nbC50ZXh0Ly0+dGV4dC1lbnRpdHkgZ2FtZSBmb250LWVudGl0eSAiSGVsbG8sIHdvcmxkISIpfSwgOmJvZHkgKGxldCBbZ2FtZSAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvaW5pdC1leGFtcGxlIGNhcmQpXSAocGxheS1jbGpjLmdsLmV4YW1wbGVzLXRleHQvaW5pdCBnYW1lKSAocGxheS1jbGpjLmdsLmV4YW1wbGVzLXRleHQvbG9hZC1yb2JvdG8gKGZuIFt7OmtleXMgW2RhdGFdLCA6YXMgaW1hZ2V9IGJha2VkLWZvbnRdIChsZXQgW2ZvbnQtZW50aXR5IChwbGF5LWNsamMuZ2wuY29yZS9jb21waWxlIGdhbWUgKHBsYXktY2xqYy5nbC50ZXh0Ly0+Zm9udC1lbnRpdHkgZ2FtZSBkYXRhIGJha2VkLWZvbnQpKSBlbnRpdHkgKHBsYXktY2xqYy5nbC5jb3JlL2NvbXBpbGUgZ2FtZSBmb2N1cyldICgtPj4gZ2FtZSAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2FtZS1sb29wIChmbiB0ZXh0LWVudGl0eS1yZW5kZXIgW2dhbWVdIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9yZXNpemUtZXhhbXBsZSBnYW1lKSAobGV0IFtnYW1lLXdpZHRoIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nZXQtd2lkdGggZ2FtZSkgZ2FtZS1oZWlnaHQgKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dldC1oZWlnaHQgZ2FtZSldIChwbGF5LWNsamMuZ2wuY29yZS9yZW5kZXIgZ2FtZSAoLT4gZW50aXR5IChhc3NvYyA6dmlld3BvcnQgezp4IDAsIDp5IDAsIDp3aWR0aCBnYW1lLXdpZHRoLCA6aGVpZ2h0IGdhbWUtaGVpZ2h0fSA6Y2xlYXIgezpjb2xvciBbMSAxIDEgMV0sIDpkZXB0aCAxfSkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3Byb2plY3QgZ2FtZS13aWR0aCBnYW1lLWhlaWdodCkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3RyYW5zbGF0ZSAwIDApIChwbGF5LWNsamMudHJhbnNmb3Jtcy9zY2FsZSAoOndpZHRoIGVudGl0eSkgKDpoZWlnaHQgZW50aXR5KSkpKSkgZ2FtZSkpKSkpKSksIDpib2R5LXN0ciAiKHBsYXktY2xqYy5nbC50ZXh0Ly0+dGV4dC1lbnRpdHkgZ2FtZSBmb250LWVudGl0eSBcIkhlbGxvLCB3b3JsZCFcIilcbiIsIDppZCAicGxheS1jbGpjLmdsLnRleHQvLT50ZXh0LWVudGl0eS8wIn1dfSksIGNsb2p1cmUuc3RyaW5nICh7OnN5bSBlbmRzLXdpdGg/LCA6bWV0YSB7OmRvYyAiVHJ1ZSBpZiBzIGVuZHMgd2l0aCBzdWJzdHIuIiwgOmFyZ2xpc3RzIChbcyBzdWJzdHJdKX0sIDpzb3VyY2UgIihkZWZuXG4gZW5kcy13aXRoP1xuIFwiVHJ1ZSBpZiBzIGVuZHMgd2l0aCBzdWJzdHIuXCJcbiBbcyBzdWJzdHJdXG4gKGdzdHJpbmcvZW5kc1dpdGggcyBzdWJzdHIpKVxuIn0gezpzeW0gY2FwaXRhbGl6ZSwgOm1ldGEgezpkb2MgIkNvbnZlcnRzIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgc3RyaW5nIHRvIHVwcGVyLWNhc2UsIGFsbCBvdGhlclxuICBjaGFyYWN0ZXJzIHRvIGxvd2VyLWNhc2UuIiwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBjYXBpdGFsaXplXG4gXCJDb252ZXJ0cyBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIHN0cmluZyB0byB1cHBlci1jYXNlLCBhbGwgb3RoZXJcXG4gIGNoYXJhY3RlcnMgdG8gbG93ZXItY2FzZS5cIlxuIFtzXVxuIChnc3RyaW5nL2NhcGl0YWxpemUgcykpXG4ifSB7OnN5bSByZXZlcnNlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBzIHdpdGggaXRzIGNoYXJhY3RlcnMgcmV2ZXJzZWQuIiwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cbiByZXZlcnNlXG4gXCJSZXR1cm5zIHMgd2l0aCBpdHMgY2hhcmFjdGVycyByZXZlcnNlZC5cIlxuIFtzXVxuICgtPlxuICAoLnJlcGxhY2UgcyByZS1zdXJyb2dhdGUtcGFpciBcIiQyJDFcIilcbiAgKC4uIChzcGxpdCBcIlwiKSAocmV2ZXJzZSkgKGpvaW4gXCJcIikpKSlcbiJ9IHs6c3ltIGpvaW4sIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgc3RyaW5nIG9mIGFsbCBlbGVtZW50cyBpbiBjb2xsLCBhcyByZXR1cm5lZCBieSAoc2VxIGNvbGwpLFxuICBzZXBhcmF0ZWQgYnkgYW4gb3B0aW9uYWwgc2VwYXJhdG9yLiIsIDphcmdsaXN0cyBbW2NvbGxdIFtzZXBhcmF0b3IgY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBqb2luXG4gXCJSZXR1cm5zIGEgc3RyaW5nIG9mIGFsbCBlbGVtZW50cyBpbiBjb2xsLCBhcyByZXR1cm5lZCBieSAoc2VxIGNvbGwpLFxcbiAgc2VwYXJhdGVkIGJ5IGFuIG9wdGlvbmFsIHNlcGFyYXRvci5cIlxuIChbY29sbF1cbiAgKGxvb3BcbiAgIFtzYiAoU3RyaW5nQnVmZmVyLikgY29sbCAoc2VxIGNvbGwpXVxuICAgKGlmLW5vdFxuICAgIChuaWw/IGNvbGwpXG4gICAgKHJlY3VyICguIHNiIChhcHBlbmQgKHN0ciAoZmlyc3QgY29sbCkpKSkgKG5leHQgY29sbCkpXG4gICAgKC50b1N0cmluZyBzYikpKSlcbiAoW3NlcGFyYXRvciBjb2xsXVxuICAobG9vcFxuICAgW3NiIChTdHJpbmdCdWZmZXIuKSBjb2xsIChzZXEgY29sbCldXG4gICAoaWYtbm90XG4gICAgKG5pbD8gY29sbClcbiAgICAoZG9cbiAgICAgKC4gc2IgKGFwcGVuZCAoc3RyIChmaXJzdCBjb2xsKSkpKVxuICAgICAobGV0XG4gICAgICBbY29sbCAobmV4dCBjb2xsKV1cbiAgICAgICh3aGVuLW5vdCAobmlsPyBjb2xsKSAoLiBzYiAoYXBwZW5kIHNlcGFyYXRvcikpKVxuICAgICAgKHJlY3VyIHNiIGNvbGwpKSlcbiAgICAoLnRvU3RyaW5nIHNiKSkpKSlcbiJ9IHs6c3ltIHJlcGxhY2UtZmlyc3QsIDptZXRhIHs6ZG9jICJSZXBsYWNlcyB0aGUgZmlyc3QgaW5zdGFuY2Ugb2YgbWF0Y2ggd2l0aCByZXBsYWNlbWVudCBpbiBzLlxuXG4gICBtYXRjaC9yZXBsYWNlbWVudCBjYW4gYmU6XG5cbiAgIHN0cmluZyAvIHN0cmluZ1xuICAgcGF0dGVybiAvIChzdHJpbmcgb3IgZnVuY3Rpb24gb2YgbWF0Y2gpLlxuXG4gICBTZWUgYWxzbyByZXBsYWNlLlxuXG4gICBUaGUgcmVwbGFjZW1lbnQgaXMgbGl0ZXJhbCAoaS5lLiBub25lIG9mIGl0cyBjaGFyYWN0ZXJzIGFyZSB0cmVhdGVkXG4gICBzcGVjaWFsbHkpIGZvciBhbGwgY2FzZXMgYWJvdmUgZXhjZXB0IHBhdHRlcm4gLyBzdHJpbmcuXG5cbiAgIEZvciBwYXR0ZXJuIC8gc3RyaW5nLCAkMSwgJDIsIGV0Yy4gaW4gdGhlIHJlcGxhY2VtZW50IHN0cmluZyBhcmVcbiAgIHN1YnN0aXR1dGVkIHdpdGggdGhlIHN0cmluZyB0aGF0IG1hdGNoZWQgdGhlIGNvcnJlc3BvbmRpbmdcbiAgIHBhcmVudGhlc2l6ZWQgZ3JvdXAgaW4gdGhlIHBhdHRlcm4uXG5cbiAgIEV4YW1wbGU6XG4gICAoY2xvanVyZS5zdHJpbmcvcmVwbGFjZS1maXJzdCBcInN3YXAgZmlyc3QgdHdvIHdvcmRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNcIihcXHcrKShcXHMrKShcXHcrKVwiIFwiJDMkMiQxXCIpXG4gICAtPiBcImZpcnN0IHN3YXAgdHdvIHdvcmRzXCIiLCA6YXJnbGlzdHMgKFtzIG1hdGNoIHJlcGxhY2VtZW50XSl9LCA6c291cmNlICIoZGVmblxuIHJlcGxhY2UtZmlyc3RcbiBcIlJlcGxhY2VzIHRoZSBmaXJzdCBpbnN0YW5jZSBvZiBtYXRjaCB3aXRoIHJlcGxhY2VtZW50IGluIHMuXFxuXFxuICAgbWF0Y2gvcmVwbGFjZW1lbnQgY2FuIGJlOlxcblxcbiAgIHN0cmluZyAvIHN0cmluZ1xcbiAgIHBhdHRlcm4gLyAoc3RyaW5nIG9yIGZ1bmN0aW9uIG9mIG1hdGNoKS5cXG5cXG4gICBTZWUgYWxzbyByZXBsYWNlLlxcblxcbiAgIFRoZSByZXBsYWNlbWVudCBpcyBsaXRlcmFsIChpLmUuIG5vbmUgb2YgaXRzIGNoYXJhY3RlcnMgYXJlIHRyZWF0ZWRcXG4gICBzcGVjaWFsbHkpIGZvciBhbGwgY2FzZXMgYWJvdmUgZXhjZXB0IHBhdHRlcm4gLyBzdHJpbmcuXFxuXFxuICAgRm9yIHBhdHRlcm4gLyBzdHJpbmcsICQxLCAkMiwgZXRjLiBpbiB0aGUgcmVwbGFjZW1lbnQgc3RyaW5nIGFyZVxcbiAgIHN1YnN0aXR1dGVkIHdpdGggdGhlIHN0cmluZyB0aGF0IG1hdGNoZWQgdGhlIGNvcnJlc3BvbmRpbmdcXG4gICBwYXJlbnRoZXNpemVkIGdyb3VwIGluIHRoZSBwYXR0ZXJuLlxcblxcbiAgIEV4YW1wbGU6XFxuICAgKGNsb2p1cmUuc3RyaW5nL3JlcGxhY2UtZmlyc3QgXFxcInN3YXAgZmlyc3QgdHdvIHdvcmRzXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNcXFwiKFxcXFx3KykoXFxcXHMrKShcXFxcdyspXFxcIiBcXFwiJDMkMiQxXFxcIilcXG4gICAtPiBcXFwiZmlyc3Qgc3dhcCB0d28gd29yZHNcXFwiXCJcbiBbcyBtYXRjaCByZXBsYWNlbWVudF1cbiAoLnJlcGxhY2UgcyBtYXRjaCByZXBsYWNlbWVudCkpXG4ifSB7OnN5bSBzdGFydHMtd2l0aD8sIDptZXRhIHs6ZG9jICJUcnVlIGlmIHMgc3RhcnRzIHdpdGggc3Vic3RyLiIsIDphcmdsaXN0cyAoW3Mgc3Vic3RyXSl9LCA6c291cmNlICIoZGVmblxuIHN0YXJ0cy13aXRoP1xuIFwiVHJ1ZSBpZiBzIHN0YXJ0cyB3aXRoIHN1YnN0ci5cIlxuIFtzIHN1YnN0cl1cbiAoZ3N0cmluZy9zdGFydHNXaXRoIHMgc3Vic3RyKSlcbiJ9IHs6c3ltIGVzY2FwZSwgOm1ldGEgezpkb2MgIlJldHVybiBhIG5ldyBzdHJpbmcsIHVzaW5nIGNtYXAgdG8gZXNjYXBlIGVhY2ggY2hhcmFjdGVyIGNoXG4gICBmcm9tIHMgYXMgZm9sbG93czpcblxuICAgSWYgKGNtYXAgY2gpIGlzIG5pbCwgYXBwZW5kIGNoIHRvIHRoZSBuZXcgc3RyaW5nLlxuICAgSWYgKGNtYXAgY2gpIGlzIG5vbi1uaWwsIGFwcGVuZCAoc3RyIChjbWFwIGNoKSkgaW5zdGVhZC4iLCA6YXJnbGlzdHMgKFtzIGNtYXBdKX0sIDpzb3VyY2UgIihkZWZuXG4gZXNjYXBlXG4gXCJSZXR1cm4gYSBuZXcgc3RyaW5nLCB1c2luZyBjbWFwIHRvIGVzY2FwZSBlYWNoIGNoYXJhY3RlciBjaFxcbiAgIGZyb20gcyBhcyBmb2xsb3dzOlxcblxcbiAgIElmIChjbWFwIGNoKSBpcyBuaWwsIGFwcGVuZCBjaCB0byB0aGUgbmV3IHN0cmluZy5cXG4gICBJZiAoY21hcCBjaCkgaXMgbm9uLW5pbCwgYXBwZW5kIChzdHIgKGNtYXAgY2gpKSBpbnN0ZWFkLlwiXG4gW3MgY21hcF1cbiAobGV0XG4gIFtidWZmZXIgKFN0cmluZ0J1ZmZlci4pIGxlbmd0aCAoLi1sZW5ndGggcyldXG4gIChsb29wXG4gICBbaW5kZXggMF1cbiAgIChpZlxuICAgICg9PSBsZW5ndGggaW5kZXgpXG4gICAgKC4gYnVmZmVyICh0b1N0cmluZykpXG4gICAgKGxldFxuICAgICBbY2ggKC5jaGFyQXQgcyBpbmRleCkgcmVwbGFjZW1lbnQgKGdldCBjbWFwIGNoKV1cbiAgICAgKGlmLW5vdFxuICAgICAgKG5pbD8gcmVwbGFjZW1lbnQpXG4gICAgICAoLmFwcGVuZCBidWZmZXIgKHN0ciByZXBsYWNlbWVudCkpXG4gICAgICAoLmFwcGVuZCBidWZmZXIgY2gpKVxuICAgICAocmVjdXIgKGluYyBpbmRleCkpKSkpKSlcbiJ9IHs6c3ltIGxhc3QtaW5kZXgtb2YsIDptZXRhIHs6ZG9jICJSZXR1cm4gbGFzdCBpbmRleCBvZiB2YWx1ZSAoc3RyaW5nIG9yIGNoYXIpIGluIHMsIG9wdGlvbmFsbHlcbiAgc2VhcmNoaW5nIGJhY2t3YXJkIGZyb20gZnJvbS1pbmRleCBvciBuaWwgaWYgbm90IGZvdW5kLiIsIDphcmdsaXN0cyBbW3MgdmFsdWVdIFtzIHZhbHVlIGZyb20taW5kZXhdXX0sIDpzb3VyY2UgIihkZWZuXG4gbGFzdC1pbmRleC1vZlxuIFwiUmV0dXJuIGxhc3QgaW5kZXggb2YgdmFsdWUgKHN0cmluZyBvciBjaGFyKSBpbiBzLCBvcHRpb25hbGx5XFxuICBzZWFyY2hpbmcgYmFja3dhcmQgZnJvbSBmcm9tLWluZGV4IG9yIG5pbCBpZiBub3QgZm91bmQuXCJcbiAoW3MgdmFsdWVdXG4gIChsZXQgW3Jlc3VsdCAoLmxhc3RJbmRleE9mIHMgdmFsdWUpXSAoaWYgKG5lZz8gcmVzdWx0KSBuaWwgcmVzdWx0KSkpXG4gKFtzIHZhbHVlIGZyb20taW5kZXhdXG4gIChsZXRcbiAgIFtyZXN1bHQgKC5sYXN0SW5kZXhPZiBzIHZhbHVlIGZyb20taW5kZXgpXVxuICAgKGlmIChuZWc/IHJlc3VsdCkgbmlsIHJlc3VsdCkpKSlcbiJ9IHs6c3ltIGluY2x1ZGVzPywgOm1ldGEgezpkb2MgIlRydWUgaWYgcyBpbmNsdWRlcyBzdWJzdHIuIiwgOmFyZ2xpc3RzIChbcyBzdWJzdHJdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5jbHVkZXM/XG4gXCJUcnVlIGlmIHMgaW5jbHVkZXMgc3Vic3RyLlwiXG4gW3Mgc3Vic3RyXVxuIChnc3RyaW5nL2NvbnRhaW5zIHMgc3Vic3RyKSlcbiJ9IHs6c3ltIHJlcGxhY2UsIDptZXRhIHs6ZG9jICJSZXBsYWNlcyBhbGwgaW5zdGFuY2Ugb2YgbWF0Y2ggd2l0aCByZXBsYWNlbWVudCBpbiBzLlxuXG4gICBtYXRjaC9yZXBsYWNlbWVudCBjYW4gYmU6XG5cbiAgIHN0cmluZyAvIHN0cmluZ1xuICAgcGF0dGVybiAvIChzdHJpbmcgb3IgZnVuY3Rpb24gb2YgbWF0Y2gpLlxuXG4gICBTZWUgYWxzbyByZXBsYWNlLWZpcnN0LlxuXG4gICBUaGUgcmVwbGFjZW1lbnQgaXMgbGl0ZXJhbCAoaS5lLiBub25lIG9mIGl0cyBjaGFyYWN0ZXJzIGFyZSB0cmVhdGVkXG4gICBzcGVjaWFsbHkpIGZvciBhbGwgY2FzZXMgYWJvdmUgZXhjZXB0IHBhdHRlcm4gLyBzdHJpbmcuXG5cbiAgIEZvciBwYXR0ZXJuIC8gc3RyaW5nLCAkMSwgJDIsIGV0Yy4gaW4gdGhlIHJlcGxhY2VtZW50IHN0cmluZyBhcmVcbiAgIHN1YnN0aXR1dGVkIHdpdGggdGhlIHN0cmluZyB0aGF0IG1hdGNoZWQgdGhlIGNvcnJlc3BvbmRpbmdcbiAgIHBhcmVudGhlc2l6ZWQgZ3JvdXAgaW4gdGhlIHBhdHRlcm4uXG5cbiAgIEV4YW1wbGU6XG4gICAoY2xvanVyZS5zdHJpbmcvcmVwbGFjZSBcIkFsbW9zdCBQaWcgTGF0aW5cIiAjXCJcXGIoXFx3KShcXHcrKVxcYlwiIFwiJDIkMWF5XCIpXG4gICAtPiBcImxtb3N0QWF5IGlnUGF5IGF0aW5MYXlcIiIsIDphcmdsaXN0cyAoW3MgbWF0Y2ggcmVwbGFjZW1lbnRdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVwbGFjZVxuIFwiUmVwbGFjZXMgYWxsIGluc3RhbmNlIG9mIG1hdGNoIHdpdGggcmVwbGFjZW1lbnQgaW4gcy5cXG5cXG4gICBtYXRjaC9yZXBsYWNlbWVudCBjYW4gYmU6XFxuXFxuICAgc3RyaW5nIC8gc3RyaW5nXFxuICAgcGF0dGVybiAvIChzdHJpbmcgb3IgZnVuY3Rpb24gb2YgbWF0Y2gpLlxcblxcbiAgIFNlZSBhbHNvIHJlcGxhY2UtZmlyc3QuXFxuXFxuICAgVGhlIHJlcGxhY2VtZW50IGlzIGxpdGVyYWwgKGkuZS4gbm9uZSBvZiBpdHMgY2hhcmFjdGVycyBhcmUgdHJlYXRlZFxcbiAgIHNwZWNpYWxseSkgZm9yIGFsbCBjYXNlcyBhYm92ZSBleGNlcHQgcGF0dGVybiAvIHN0cmluZy5cXG5cXG4gICBGb3IgcGF0dGVybiAvIHN0cmluZywgJDEsICQyLCBldGMuIGluIHRoZSByZXBsYWNlbWVudCBzdHJpbmcgYXJlXFxuICAgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgc3RyaW5nIHRoYXQgbWF0Y2hlZCB0aGUgY29ycmVzcG9uZGluZ1xcbiAgIHBhcmVudGhlc2l6ZWQgZ3JvdXAgaW4gdGhlIHBhdHRlcm4uXFxuXFxuICAgRXhhbXBsZTpcXG4gICAoY2xvanVyZS5zdHJpbmcvcmVwbGFjZSBcXFwiQWxtb3N0IFBpZyBMYXRpblxcXCIgI1xcXCJcXFxcYihcXFxcdykoXFxcXHcrKVxcXFxiXFxcIiBcXFwiJDIkMWF5XFxcIilcXG4gICAtPiBcXFwibG1vc3RBYXkgaWdQYXkgYXRpbkxheVxcXCJcIlxuIFtzIG1hdGNoIHJlcGxhY2VtZW50XVxuIChjb25kXG4gIChzdHJpbmc/IG1hdGNoKVxuICAoLnJlcGxhY2VcbiAgIHNcbiAgIChqcy9SZWdFeHAuIChnc3RyaW5nL3JlZ0V4cEVzY2FwZSBtYXRjaCkgXCJnXCIpXG4gICByZXBsYWNlbWVudClcbiAgKGluc3RhbmNlPyBqcy9SZWdFeHAgbWF0Y2gpXG4gIChpZlxuICAgKHN0cmluZz8gcmVwbGFjZW1lbnQpXG4gICAocmVwbGFjZS1hbGwgcyBtYXRjaCByZXBsYWNlbWVudClcbiAgIChyZXBsYWNlLWFsbCBzIG1hdGNoIChyZXBsYWNlLXdpdGggcmVwbGFjZW1lbnQpKSlcbiAgOmVsc2VcbiAgKHRocm93IChzdHIgXCJJbnZhbGlkIG1hdGNoIGFyZzogXCIgbWF0Y2gpKSkpXG4ifSB7OnN5bSBzcGxpdC1saW5lcywgOm1ldGEgezpkb2MgIlNwbGl0cyBzIG9uIFxcbiBvciBcXHJcXG4uIiwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm4gc3BsaXQtbGluZXMgXCJTcGxpdHMgcyBvbiBcXFxcbiBvciBcXFxcclxcXFxuLlwiIFtzXSAoc3BsaXQgcyAjXCJcXG58XFxyXFxuXCIpKVxuIn0gezpzeW0gbG93ZXItY2FzZSwgOm1ldGEgezpkb2MgIkNvbnZlcnRzIHN0cmluZyB0byBhbGwgbG93ZXItY2FzZS4iLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIGxvd2VyLWNhc2VcbiBcIkNvbnZlcnRzIHN0cmluZyB0byBhbGwgbG93ZXItY2FzZS5cIlxuIFtzXVxuICgudG9Mb3dlckNhc2UgcykpXG4ifSB7OnN5bSB0cmltLW5ld2xpbmUsIDptZXRhIHs6ZG9jICJSZW1vdmVzIGFsbCB0cmFpbGluZyBuZXdsaW5lIFxcbiBvciByZXR1cm4gXFxyIGNoYXJhY3RlcnMgZnJvbVxuICBzdHJpbmcuICBTaW1pbGFyIHRvIFBlcmwncyBjaG9tcC4iLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIHRyaW0tbmV3bGluZVxuIFwiUmVtb3ZlcyBhbGwgdHJhaWxpbmcgbmV3bGluZSBcXFxcbiBvciByZXR1cm4gXFxcXHIgY2hhcmFjdGVycyBmcm9tXFxuICBzdHJpbmcuICBTaW1pbGFyIHRvIFBlcmwncyBjaG9tcC5cIlxuIFtzXVxuIChsb29wXG4gIFtpbmRleCAoLi1sZW5ndGggcyldXG4gIChpZlxuICAgKHplcm8/IGluZGV4KVxuICAgXCJcIlxuICAgKGxldFxuICAgIFtjaCAoZ2V0IHMgKGRlYyBpbmRleCkpXVxuICAgIChpZlxuICAgICAob3IgKGlkZW50aWNhbD8gXFxuZXdsaW5lIGNoKSAoaWRlbnRpY2FsPyBcXHJldHVybiBjaCkpXG4gICAgIChyZWN1ciAoZGVjIGluZGV4KSlcbiAgICAgKC5zdWJzdHJpbmcgcyAwIGluZGV4KSkpKSkpXG4ifSB7OnN5bSB1cHBlci1jYXNlLCA6bWV0YSB7OmRvYyAiQ29udmVydHMgc3RyaW5nIHRvIGFsbCB1cHBlci1jYXNlLiIsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gdXBwZXItY2FzZVxuIFwiQ29udmVydHMgc3RyaW5nIHRvIGFsbCB1cHBlci1jYXNlLlwiXG4gW3NdXG4gKC50b1VwcGVyQ2FzZSBzKSlcbiJ9IHs6c3ltIHNwbGl0LCA6bWV0YSB7OmRvYyAiU3BsaXRzIHN0cmluZyBvbiBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4gT3B0aW9uYWwgYXJndW1lbnQgbGltaXQgaXNcbiAgdGhlIG1heGltdW0gbnVtYmVyIG9mIHNwbGl0cy4gTm90IGxhenkuIFJldHVybnMgdmVjdG9yIG9mIHRoZSBzcGxpdHMuIiwgOmFyZ2xpc3RzIFtbcyByZV0gW3MgcmUgbGltaXRdXX0sIDpzb3VyY2UgIihkZWZuXG4gc3BsaXRcbiBcIlNwbGl0cyBzdHJpbmcgb24gYSByZWd1bGFyIGV4cHJlc3Npb24uIE9wdGlvbmFsIGFyZ3VtZW50IGxpbWl0IGlzXFxuICB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc3BsaXRzLiBOb3QgbGF6eS4gUmV0dXJucyB2ZWN0b3Igb2YgdGhlIHNwbGl0cy5cIlxuIChbcyByZV0gKHNwbGl0IHMgcmUgMCkpXG4gKFtzIHJlIGxpbWl0XVxuICAoZGlzY2FyZC10cmFpbGluZy1pZi1uZWVkZWRcbiAgIGxpbWl0XG4gICAoaWZcbiAgICAoaWRlbnRpY2FsPyBcIi8oPzopL1wiIChzdHIgcmUpKVxuICAgIChzcGxpdC13aXRoLWVtcHR5LXJlZ2V4IHMgbGltaXQpXG4gICAgKGlmXG4gICAgICg8IGxpbWl0IDEpXG4gICAgICh2ZWMgKC5zcGxpdCAoc3RyIHMpIHJlKSlcbiAgICAgKGxvb3BcbiAgICAgIFtzIHMgbGltaXQgbGltaXQgcGFydHMgW11dXG4gICAgICAoaWZcbiAgICAgICAoPT0gMSBsaW1pdClcbiAgICAgICAoY29uaiBwYXJ0cyBzKVxuICAgICAgIChsZXRcbiAgICAgICAgW20gKHJlLWZpbmQgcmUgcyldXG4gICAgICAgIChpZi1ub3RcbiAgICAgICAgIChuaWw/IG0pXG4gICAgICAgICAobGV0XG4gICAgICAgICAgW2luZGV4ICguaW5kZXhPZiBzIG0pXVxuICAgICAgICAgIChyZWN1clxuICAgICAgICAgICAoLnN1YnN0cmluZyBzICgrIGluZGV4IChjb3VudCBtKSkpXG4gICAgICAgICAgIChkZWMgbGltaXQpXG4gICAgICAgICAgIChjb25qIHBhcnRzICguc3Vic3RyaW5nIHMgMCBpbmRleCkpKSlcbiAgICAgICAgIChjb25qIHBhcnRzIHMpKSkpKSkpKSkpXG4ifSB7OnN5bSB0cmltciwgOm1ldGEgezpkb2MgIlJlbW92ZXMgd2hpdGVzcGFjZSBmcm9tIHRoZSByaWdodCBzaWRlIG9mIHN0cmluZy4iLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIHRyaW1yXG4gXCJSZW1vdmVzIHdoaXRlc3BhY2UgZnJvbSB0aGUgcmlnaHQgc2lkZSBvZiBzdHJpbmcuXCJcbiBbc11cbiAoZ3N0cmluZy90cmltUmlnaHQgcykpXG4ifSB7OnN5bSBpbmRleC1vZiwgOm1ldGEgezpkb2MgIlJldHVybiBpbmRleCBvZiB2YWx1ZSAoc3RyaW5nIG9yIGNoYXIpIGluIHMsIG9wdGlvbmFsbHkgc2VhcmNoaW5nXG4gIGZvcndhcmQgZnJvbSBmcm9tLWluZGV4IG9yIG5pbCBpZiBub3QgZm91bmQuIiwgOmFyZ2xpc3RzIFtbcyB2YWx1ZV0gW3MgdmFsdWUgZnJvbS1pbmRleF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBpbmRleC1vZlxuIFwiUmV0dXJuIGluZGV4IG9mIHZhbHVlIChzdHJpbmcgb3IgY2hhcikgaW4gcywgb3B0aW9uYWxseSBzZWFyY2hpbmdcXG4gIGZvcndhcmQgZnJvbSBmcm9tLWluZGV4IG9yIG5pbCBpZiBub3QgZm91bmQuXCJcbiAoW3MgdmFsdWVdXG4gIChsZXQgW3Jlc3VsdCAoLmluZGV4T2YgcyB2YWx1ZSldIChpZiAobmVnPyByZXN1bHQpIG5pbCByZXN1bHQpKSlcbiAoW3MgdmFsdWUgZnJvbS1pbmRleF1cbiAgKGxldFxuICAgW3Jlc3VsdCAoLmluZGV4T2YgcyB2YWx1ZSBmcm9tLWluZGV4KV1cbiAgIChpZiAobmVnPyByZXN1bHQpIG5pbCByZXN1bHQpKSkpXG4ifSB7OnN5bSB0cmltLCA6bWV0YSB7OmRvYyAiUmVtb3ZlcyB3aGl0ZXNwYWNlIGZyb20gYm90aCBlbmRzIG9mIHN0cmluZy4iLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIHRyaW1cbiBcIlJlbW92ZXMgd2hpdGVzcGFjZSBmcm9tIGJvdGggZW5kcyBvZiBzdHJpbmcuXCJcbiBbc11cbiAoZ3N0cmluZy90cmltIHMpKVxuIn0gezpzeW0gdHJpbWwsIDptZXRhIHs6ZG9jICJSZW1vdmVzIHdoaXRlc3BhY2UgZnJvbSB0aGUgbGVmdCBzaWRlIG9mIHN0cmluZy4iLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIHRyaW1sXG4gXCJSZW1vdmVzIHdoaXRlc3BhY2UgZnJvbSB0aGUgbGVmdCBzaWRlIG9mIHN0cmluZy5cIlxuIFtzXVxuIChnc3RyaW5nL3RyaW1MZWZ0IHMpKVxuIn0gezpzeW0gYmxhbms/LCA6bWV0YSB7OmRvYyAiVHJ1ZSBpcyBzIGlzIG5pbCwgZW1wdHksIG9yIGNvbnRhaW5zIG9ubHkgd2hpdGVzcGFjZS4iLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIGJsYW5rP1xuIFwiVHJ1ZSBpcyBzIGlzIG5pbCwgZW1wdHksIG9yIGNvbnRhaW5zIG9ubHkgd2hpdGVzcGFjZS5cIlxuIFtzXVxuIChnc3RyaW5nL2lzRW1wdHlPcldoaXRlc3BhY2UgKGdzdHJpbmcvbWFrZVNhZmUgcykpKVxuIn0pLCBjbGpzLnNwZWMuYWxwaGEgKHs6c3ltIGZvcm0sIDptZXRhIHs6ZG9jICJyZXR1cm5zIHRoZSBzcGVjIGFzIGRhdGEiLCA6YXJnbGlzdHMgKFtzcGVjXSl9LCA6c291cmNlICIoZGVmbiBmb3JtIFwicmV0dXJucyB0aGUgc3BlYyBhcyBkYXRhXCIgW3NwZWNdIChkZXNjcmliZSogKHNwZWNpemUgc3BlYykpKVxuIn0gezpzeW0gbmlsYWJsZS1pbXBsLCA6bWV0YSB7OmRvYyAiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICduaWxhYmxlJyIsIDphcmdsaXN0cyAoW2Zvcm0gcHJlZCBnZm5dKX0sIDpzb3VyY2UgIihkZWZuXG4gbmlsYWJsZS1pbXBsXG4gXCJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJ25pbGFibGUnXCJcbiBbZm9ybSBwcmVkIGdmbl1cbiAobGV0XG4gIFtzcGVjIChkZWxheSAoc3BlY2l6ZSBwcmVkIGZvcm0pKV1cbiAgKHJlaWZ5XG4gICBTcGVjaXplXG4gICAoc3BlY2l6ZSogW3NdIHMpXG4gICAoc3BlY2l6ZSogW3MgX10gcylcbiAgIFNwZWNcbiAgIChjb25mb3JtKiBbXyB4XSAoaWYgKG5pbD8geCkgbmlsIChjb25mb3JtKiBAc3BlYyB4KSkpXG4gICAodW5mb3JtKiBbXyB4XSAoaWYgKG5pbD8geCkgbmlsICh1bmZvcm0qIEBzcGVjIHgpKSlcbiAgIChleHBsYWluKlxuICAgIFtfIHBhdGggdmlhIGluIHhdXG4gICAgKHdoZW4tbm90XG4gICAgIChjL29yIChwdmFsaWQ/IEBzcGVjIHgpIChuaWw/IHgpKVxuICAgICAoY29ualxuICAgICAgKGV4cGxhaW4tMSBmb3JtIHByZWQgKGNvbmogcGF0aCA6Y2xqcy5zcGVjLmFscGhhL3ByZWQpIHZpYSBpbiB4KVxuICAgICAgezpwYXRoIChjb25qIHBhdGggOmNsanMuc3BlYy5hbHBoYS9uaWwpLFxuICAgICAgIDpwcmVkICduaWw/LFxuICAgICAgIDp2YWwgeCxcbiAgICAgICA6dmlhIHZpYSxcbiAgICAgICA6aW4gaW59KSkpXG4gICAoZ2VuKlxuICAgIFtfIG92ZXJyaWRlcyBwYXRoIHJtYXBdXG4gICAgKGlmXG4gICAgIGdmblxuICAgICAoZ2ZuKVxuICAgICAoZ2VuL2ZyZXF1ZW5jeVxuICAgICAgW1sxIChnZW4vZGVsYXkgKGdlbi9yZXR1cm4gbmlsKSldXG4gICAgICAgWzlcbiAgICAgICAgKGdlbi9kZWxheVxuICAgICAgICAgKGdlbnN1YlxuICAgICAgICAgIHByZWRcbiAgICAgICAgICBvdmVycmlkZXNcbiAgICAgICAgICAoY29uaiBwYXRoIDpjbGpzLnNwZWMuYWxwaGEvcHJlZClcbiAgICAgICAgICBybWFwXG4gICAgICAgICAgZm9ybSkpXV0pKSlcbiAgICh3aXRoLWdlbiogW18gZ2ZuXSAobmlsYWJsZS1pbXBsIGZvcm0gcHJlZCBnZm4pKVxuICAgKGRlc2NyaWJlKlxuICAgIFtfXVxuICAgIChjbG9qdXJlLmNvcmUvc2VxdWVuY2VcbiAgICAgKGNsb2p1cmUuY29yZS9zZXFcbiAgICAgIChjbG9qdXJlLmNvcmUvY29uY2F0XG4gICAgICAgKGNsb2p1cmUuY29yZS9saXN0ICdjbGpzLnNwZWMuYWxwaGEvbmlsYWJsZSlcbiAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgKHMvbXJlcyBmb3JtKSkpKSkpKSkpXG4ifSB7OnN5bSAqcmVjdXJzaW9uLWxpbWl0KiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiAqcmVjdXJzaW9uLWxpbWl0KlxuIFwiQSBzb2Z0IGxpbWl0IG9uIGhvdyBtYW55IHRpbWVzIGEgYnJhbmNoaW5nIHNwZWMgKG9yL2FsdC8qL29wdC1rZXlzL211bHRpLXNwZWMpXFxuICBjYW4gYmUgcmVjdXJzZWQgdGhyb3VnaCBkdXJpbmcgZ2VuZXJhdGlvbi4gQWZ0ZXIgdGhpcyBhXFxuICBub24tcmVjdXJzaXZlIGJyYW5jaCB3aWxsIGJlIGNob3Nlbi5cIlxuIDQpXG4ifSB7OnN5bSAqY29sbC1lcnJvci1saW1pdCosIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gKmNvbGwtZXJyb3ItbGltaXQqXG4gXCJUaGUgbnVtYmVyIG9mIGVycm9ycyByZXBvcnRlZCBieSBleHBsYWluIGluIGEgY29sbGVjdGlvbiBzcGVjJ2VkIHdpdGggJ2V2ZXJ5J1wiXG4gMjApXG4ifSB7OnN5bSBleHBsYWluLXByaW50ZXIsIDptZXRhIHs6ZG9jICJEZWZhdWx0IHByaW50ZXIgZm9yIGV4cGxhaW4tZGF0YS4gbmlsIGluZGljYXRlcyBhIHN1Y2Nlc3NmdWwgdmFsaWRhdGlvbi4iLCA6YXJnbGlzdHMgKFtlZF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBleHBsYWluLXByaW50ZXJcbiBcIkRlZmF1bHQgcHJpbnRlciBmb3IgZXhwbGFpbi1kYXRhLiBuaWwgaW5kaWNhdGVzIGEgc3VjY2Vzc2Z1bCB2YWxpZGF0aW9uLlwiXG4gW2VkXVxuIChpZlxuICBlZFxuICAobGV0XG4gICBbcHJvYmxlbXNcbiAgICAoLT4+XG4gICAgICg6Y2xqcy5zcGVjLmFscGhhL3Byb2JsZW1zIGVkKVxuICAgICAoc29ydC1ieSAoZm4qIFtwMV9fNDUyOTgjXSAoLSAoY291bnQgKDppbiBwMV9fNDUyOTgjKSkpKSlcbiAgICAgKHNvcnQtYnkgKGZuKiBbcDFfXzQ1Mjk5I10gKC0gKGNvdW50ICg6cGF0aCBwMV9fNDUyOTkjKSkpKSkpXVxuICAgKHByaW50XG4gICAgKHdpdGgtb3V0LXN0clxuICAgICAoZG9zZXFcbiAgICAgIFt7OmtleXMgW3BhdGggcHJlZCB2YWwgcmVhc29uIHZpYSBpbl0sIDphcyBwcm9ifSBwcm9ibGVtc11cbiAgICAgIChwciB2YWwpXG4gICAgICAocHJpbnQgXCIgLSBmYWlsZWQ6IFwiKVxuICAgICAgKGlmIHJlYXNvbiAocHJpbnQgcmVhc29uKSAocHIgKGFiYnJldiBwcmVkKSkpXG4gICAgICAod2hlbi1ub3QgKGVtcHR5PyBpbikgKHByaW50IChzdHIgXCIgaW46IFwiIChwci1zdHIgaW4pKSkpXG4gICAgICAod2hlbi1ub3QgKGVtcHR5PyBwYXRoKSAocHJpbnQgKHN0ciBcIiBhdDogXCIgKHByLXN0ciBwYXRoKSkpKVxuICAgICAgKHdoZW4tbm90XG4gICAgICAgKGVtcHR5PyB2aWEpXG4gICAgICAgKHByaW50IChzdHIgXCIgc3BlYzogXCIgKHByLXN0ciAobGFzdCB2aWEpKSkpKVxuICAgICAgKGRvc2VxXG4gICAgICAgW1trIHZdIHByb2JdXG4gICAgICAgKHdoZW4tbm90XG4gICAgICAgICgjezpwYXRoIDpwcmVkIDp2aWEgOnZhbCA6cmVhc29uIDppbn0gaylcbiAgICAgICAgKHByaW50IFwiXFxuXFx0XCIgKHByLXN0ciBrKSBcIiBcIilcbiAgICAgICAgKHByIHYpKSlcbiAgICAgIChuZXdsaW5lKSkpKSlcbiAgKHByaW50bG4gXCJTdWNjZXNzIVwiKSkpXG4ifSB7OnN5bSBTcGVjaXplLCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAoc3BlY2l6ZSopfSB7OnN5bSBhbHQtaW1wbCwgOm1ldGEgezpkb2MgIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnYWx0JyIsIDphcmdsaXN0cyAoW2tzIHBzIGZvcm1zXSl9LCA6c291cmNlICIoZGVmblxuIGFsdC1pbXBsXG4gXCJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJ2FsdCdcIlxuIFtrcyBwcyBmb3Jtc11cbiAoYXNzb2MgKGFsdCogcHMga3MgZm9ybXMpIDppZCAocmFuZG9tLXV1aWQpKSlcbiJ9IHs6c3ltIGRlZi1pbXBsLCA6bWV0YSB7OmRvYyAiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdkZWYnIiwgOmFyZ2xpc3RzIChbayBmb3JtIHNwZWNdKX0sIDpzb3VyY2UgIihkZWZuXG4gZGVmLWltcGxcbiBcIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnZGVmJ1wiXG4gW2sgZm9ybSBzcGVjXVxuIChhc3NlcnRcbiAgKGMvYW5kIChpZGVudD8gaykgKG5hbWVzcGFjZSBrKSlcbiAgXCJrIG11c3QgYmUgbmFtZXNwYWNlZCBrZXl3b3JkIG9yIHJlc29sdmVhYmxlIHN5bWJvbFwiKVxuIChpZlxuICAobmlsPyBzcGVjKVxuICAoc3dhcCEgcmVnaXN0cnktcmVmIGRpc3NvYyBrKVxuICAobGV0XG4gICBbc3BlY1xuICAgIChpZlxuICAgICAoYy9vciAoc3BlYz8gc3BlYykgKHJlZ2V4PyBzcGVjKSAoZ2V0IEByZWdpc3RyeS1yZWYgc3BlYykpXG4gICAgIHNwZWNcbiAgICAgKHNwZWMtaW1wbCBmb3JtIHNwZWMgbmlsIG5pbCkpXVxuICAgKHN3YXAhIHJlZ2lzdHJ5LXJlZiBhc3NvYyBrICh3aXRoLW5hbWUgc3BlYyBrKSkpKVxuIGspXG4ifSB7OnN5bSAqZXhwbGFpbi1vdXQqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqZXhwbGFpbi1vdXQqIGV4cGxhaW4tcHJpbnRlcilcbiJ9IHs6c3ltIHJlZ2V4LXNwZWMtaW1wbCwgOm1ldGEgezpkb2MgIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnc3BlYycgd2l0aCBhIHJlZ2V4IG9wIGFyZ3VtZW50IiwgOmFyZ2xpc3RzIChbcmUgZ2ZuXSl9LCA6c291cmNlICIoZGVmblxuIHJlZ2V4LXNwZWMtaW1wbFxuIFwiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdzcGVjJyB3aXRoIGEgcmVnZXggb3AgYXJndW1lbnRcIlxuIFtyZSBnZm5dXG4gKHJlaWZ5XG4gIFNwZWNpemVcbiAgKHNwZWNpemUqIFtzXSBzKVxuICAoc3BlY2l6ZSogW3MgX10gcylcbiAgU3BlY1xuICAoY29uZm9ybSpcbiAgIFtfIHhdXG4gICAoaWZcbiAgICAoYy9vciAobmlsPyB4KSAoc2VxdWVudGlhbD8geCkpXG4gICAgKHJlLWNvbmZvcm0gcmUgKHNlcSB4KSlcbiAgICA6Y2xqcy5zcGVjLmFscGhhL2ludmFsaWQpKVxuICAodW5mb3JtKiBbXyB4XSAob3AtdW5mb3JtIHJlIHgpKVxuICAoZXhwbGFpbipcbiAgIFtfIHBhdGggdmlhIGluIHhdXG4gICAoaWZcbiAgICAoYy9vciAobmlsPyB4KSAoc2VxdWVudGlhbD8geCkpXG4gICAgKHJlLWV4cGxhaW4gcGF0aCB2aWEgaW4gcmUgKHNlcSB4KSlcbiAgICBbezpwYXRoIHBhdGgsXG4gICAgICA6cHJlZFxuICAgICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxuICAgICAgIChjbG9qdXJlLmNvcmUvc2VxXG4gICAgICAgIChjbG9qdXJlLmNvcmUvY29uY2F0XG4gICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgJ2Nsb2p1cmUuY29yZS9mbilcbiAgICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdFxuICAgICAgICAgIChjbG9qdXJlLmNvcmUvdmVjXG4gICAgICAgICAgIChjbG9qdXJlLmNvcmUvc2VxdWVuY2VcbiAgICAgICAgICAgIChjbG9qdXJlLmNvcmUvc2VxXG4gICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9jb25jYXQgKGNsb2p1cmUuY29yZS9saXN0ICclKSkpKSkpXG4gICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3RcbiAgICAgICAgICAoY2xvanVyZS5jb3JlL3NlcXVlbmNlXG4gICAgICAgICAgIChjbG9qdXJlLmNvcmUvc2VxXG4gICAgICAgICAgICAoY2xvanVyZS5jb3JlL2NvbmNhdFxuICAgICAgICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCAnY2xqcy5jb3JlL29yKVxuICAgICAgICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdFxuICAgICAgICAgICAgICAoY2xvanVyZS5jb3JlL3NlcXVlbmNlXG4gICAgICAgICAgICAgICAoY2xvanVyZS5jb3JlL3NlcVxuICAgICAgICAgICAgICAgIChjbG9qdXJlLmNvcmUvY29uY2F0XG4gICAgICAgICAgICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCAnY2xvanVyZS5jb3JlL25pbD8pXG4gICAgICAgICAgICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCAnJSkpKSkpXG4gICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0XG4gICAgICAgICAgICAgIChjbG9qdXJlLmNvcmUvc2VxdWVuY2VcbiAgICAgICAgICAgICAgIChjbG9qdXJlLmNvcmUvc2VxXG4gICAgICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9jb25jYXRcbiAgICAgICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0ICdjbG9qdXJlLmNvcmUvc2VxdWVudGlhbD8pXG4gICAgICAgICAgICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCAnJSkpKSkpKSkpKSkpKSxcbiAgICAgIDp2YWwgeCxcbiAgICAgIDp2aWEgdmlhLFxuICAgICAgOmluIGlufV0pKVxuICAoZ2VuKlxuICAgW18gb3ZlcnJpZGVzIHBhdGggcm1hcF1cbiAgIChpZiBnZm4gKGdmbikgKHJlLWdlbiByZSBvdmVycmlkZXMgcGF0aCBybWFwIChvcC1kZXNjcmliZSByZSkpKSlcbiAgKHdpdGgtZ2VuKiBbXyBnZm5dIChyZWdleC1zcGVjLWltcGwgcmUgZ2ZuKSlcbiAgKGRlc2NyaWJlKiBbX10gKG9wLWRlc2NyaWJlIHJlKSkpKVxuIn0gezpzeW0gbWVyZ2Utc3BlYy1pbXBsLCA6bWV0YSB7OmRvYyAiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdtZXJnZSciLCA6YXJnbGlzdHMgKFtmb3JtcyBwcmVkcyBnZm5dKX0sIDpzb3VyY2UgIihkZWZuXG4gbWVyZ2Utc3BlYy1pbXBsXG4gXCJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJ21lcmdlJ1wiXG4gW2Zvcm1zIHByZWRzIGdmbl1cbiAocmVpZnlcbiAgU3BlY2l6ZVxuICAoc3BlY2l6ZSogW3NdIHMpXG4gIChzcGVjaXplKiBbcyBfXSBzKVxuICBTcGVjXG4gIChjb25mb3JtKlxuICAgW18geF1cbiAgIChsZXRcbiAgICBbbXNcbiAgICAgKG1hcFxuICAgICAgKGZuKiBbcDFfXzQ1MzExIyBwMl9fNDUzMTIjXSAoZHQgcDFfXzQ1MzExIyB4IHAyX180NTMxMiMpKVxuICAgICAgcHJlZHNcbiAgICAgIGZvcm1zKV1cbiAgICAoaWZcbiAgICAgKHNvbWUgaW52YWxpZD8gbXMpXG4gICAgIDpjbGpzLnNwZWMuYWxwaGEvaW52YWxpZFxuICAgICAoYXBwbHkgYy9tZXJnZSBtcykpKSlcbiAgKHVuZm9ybSpcbiAgIFtfIHhdXG4gICAoYXBwbHlcbiAgICBjL21lcmdlXG4gICAgKG1hcCAoZm4qIFtwMV9fNDUzMTMjXSAodW5mb3JtIHAxX180NTMxMyMgeCkpIChyZXZlcnNlIHByZWRzKSkpKVxuICAoZXhwbGFpbipcbiAgIFtfIHBhdGggdmlhIGluIHhdXG4gICAoYXBwbHlcbiAgICBjb25jYXRcbiAgICAobWFwXG4gICAgIChmbipcbiAgICAgIFtwMV9fNDUzMTQjIHAyX180NTMxNSNdXG4gICAgICAoZXhwbGFpbi0xIHAxX180NTMxNCMgcDJfXzQ1MzE1IyBwYXRoIHZpYSBpbiB4KSlcbiAgICAgZm9ybXNcbiAgICAgcHJlZHMpKSlcbiAgKGdlbipcbiAgIFtfIG92ZXJyaWRlcyBwYXRoIHJtYXBdXG4gICAoaWZcbiAgICBnZm5cbiAgICAoZ2ZuKVxuICAgIChnZW4vZm1hcFxuICAgICAoZm4qIFtwMV9fNDUzMTYjXSAoYXBwbHkgYy9tZXJnZSBwMV9fNDUzMTYjKSlcbiAgICAgKGFwcGx5XG4gICAgICBnZW4vdHVwbGVcbiAgICAgIChtYXBcbiAgICAgICAoZm4qXG4gICAgICAgIFtwMV9fNDUzMTcjIHAyX180NTMxOCNdXG4gICAgICAgIChnZW5zdWIgcDFfXzQ1MzE3IyBvdmVycmlkZXMgcGF0aCBybWFwIHAyX180NTMxOCMpKVxuICAgICAgIHByZWRzXG4gICAgICAgZm9ybXMpKSkpKVxuICAod2l0aC1nZW4qIFtfIGdmbl0gKG1lcmdlLXNwZWMtaW1wbCBmb3JtcyBwcmVkcyBnZm4pKVxuICAoZGVzY3JpYmUqXG4gICBbX11cbiAgIChjbG9qdXJlLmNvcmUvc2VxdWVuY2VcbiAgICAoY2xvanVyZS5jb3JlL3NlcVxuICAgICAoY2xvanVyZS5jb3JlL2NvbmNhdFxuICAgICAgKGNsb2p1cmUuY29yZS9saXN0ICdjbGpzLnNwZWMuYWxwaGEvbWVyZ2UpXG4gICAgICBmb3JtcykpKSkpKVxuIn0gezpzeW0gZXhwbGFpbi1kYXRhKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzcGVjIHBhdGggdmlhIGluIHhdKX0sIDpzb3VyY2UgIihkZWZuXG4gZXhwbGFpbi1kYXRhKlxuIFtzcGVjIHBhdGggdmlhIGluIHhdXG4gKHdoZW4tbGV0XG4gIFtwcm9icyAoZXhwbGFpbiogKHNwZWNpemUgc3BlYykgcGF0aCB2aWEgaW4geCldXG4gICh3aGVuLW5vdFxuICAgKGVtcHR5PyBwcm9icylcbiAgIHs6Y2xqcy5zcGVjLmFscGhhL3Byb2JsZW1zIHByb2JzLFxuICAgIDpjbGpzLnNwZWMuYWxwaGEvc3BlYyBzcGVjLFxuICAgIDpjbGpzLnNwZWMuYWxwaGEvdmFsdWUgeH0pKSlcbiJ9IHs6c3ltIE1BWF9JTlQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIE1BWF9JTlQgOTAwNzE5OTI1NDc0MDk5MSlcbiJ9IHs6c3ltIGNoZWNrLWFzc2VydHMsIDptZXRhIHs6ZG9jICJFbmFibGUgb3IgZGlzYWJsZSBzcGVjIGFzc2VydHMgdGhhdCBoYXZlIGJlZW4gY29tcGlsZWRcbndpdGggJypjb21waWxlLWFzc2VydHMqJyB0cnVlLiAgU2VlICdhc3NlcnQnLlxuSW5pdGlhbGx5IHNldCB0byBib29sZWFuIHZhbHVlIG9mIGNsanMuc3BlYy5hbHBoYS8qcnVudGltZS1hc3NlcnRzKi5cbkRlZmF1bHRzIHRvIGZhbHNlLiIsIDphcmdsaXN0cyAoW2ZsYWddKX0sIDpzb3VyY2UgIihkZWZuXG4gY2hlY2stYXNzZXJ0c1xuIFwiRW5hYmxlIG9yIGRpc2FibGUgc3BlYyBhc3NlcnRzIHRoYXQgaGF2ZSBiZWVuIGNvbXBpbGVkXFxud2l0aCAnKmNvbXBpbGUtYXNzZXJ0cyonIHRydWUuICBTZWUgJ2Fzc2VydCcuXFxuSW5pdGlhbGx5IHNldCB0byBib29sZWFuIHZhbHVlIG9mIGNsanMuc3BlYy5hbHBoYS8qcnVudGltZS1hc3NlcnRzKi5cXG5EZWZhdWx0cyB0byBmYWxzZS5cIlxuIFtmbGFnXVxuIChzZXQhICpydW50aW1lLWFzc2VydHMqIGZsYWcpKVxuIn0gezpzeW0gYXNzZXJ0KiwgOm1ldGEgezpkb2MgIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnYXNzZXJ0Jy4iLCA6YXJnbGlzdHMgKFtzcGVjIHhdKX0sIDpzb3VyY2UgIihkZWZuXG4gYXNzZXJ0KlxuIFwiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdhc3NlcnQnLlwiXG4gW3NwZWMgeF1cbiAoaWZcbiAgKHZhbGlkPyBzcGVjIHgpXG4gIHhcbiAgKGxldFxuICAgW2VkXG4gICAgKGMvbWVyZ2VcbiAgICAgKGFzc29jXG4gICAgICAoZXhwbGFpbi1kYXRhKiBzcGVjIFtdIFtdIFtdIHgpXG4gICAgICA6Y2xqcy5zcGVjLmFscGhhL2ZhaWx1cmVcbiAgICAgIDphc3NlcnRpb24tZmFpbGVkKSldXG4gICAodGhyb3dcbiAgICAoanMvRXJyb3IuXG4gICAgIChzdHJcbiAgICAgIFwiU3BlYyBhc3NlcnRpb24gZmFpbGVkXFxuXCJcbiAgICAgICh3aXRoLW91dC1zdHIgKGV4cGxhaW4tb3V0IGVkKSkpKSkpKSlcbiJ9IHs6c3ltIGluc3QtaW4tcmFuZ2U/LCA6bWV0YSB7OmRvYyAiUmV0dXJuIHRydWUgaWYgaW5zdCBhdCBvciBhZnRlciBzdGFydCBhbmQgYmVmb3JlIGVuZCIsIDphcmdsaXN0cyAoW3N0YXJ0IGVuZCBpbnN0XSl9LCA6c291cmNlICIoZGVmblxuIGluc3QtaW4tcmFuZ2U/XG4gXCJSZXR1cm4gdHJ1ZSBpZiBpbnN0IGF0IG9yIGFmdGVyIHN0YXJ0IGFuZCBiZWZvcmUgZW5kXCJcbiBbc3RhcnQgZW5kIGluc3RdXG4gKGMvYW5kXG4gIChpbnN0PyBpbnN0KVxuICAobGV0XG4gICBbdCAoaW5zdC1tcyBpbnN0KV1cbiAgIChjL2FuZCAoPD0gKGluc3QtbXMgc3RhcnQpIHQpICg8IHQgKGluc3QtbXMgZW5kKSkpKSkpXG4ifSB7OnN5bSBhbmQtc3BlYy1pbXBsLCA6bWV0YSB7OmRvYyAiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdhbmQnIiwgOmFyZ2xpc3RzIChbZm9ybXMgcHJlZHMgZ2ZuXSl9LCA6c291cmNlICIoZGVmblxuIGFuZC1zcGVjLWltcGxcbiBcIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnYW5kJ1wiXG4gW2Zvcm1zIHByZWRzIGdmbl1cbiAobGV0XG4gIFtzcGVjc1xuICAgKGRlbGF5IChtYXB2IHNwZWNpemUgcHJlZHMgZm9ybXMpKVxuICAgY2Zvcm1cbiAgIChjYXNlXG4gICAgKGNvdW50IHByZWRzKVxuICAgIDJcbiAgICAoZm5cbiAgICAgW3hdXG4gICAgIChsZXRcbiAgICAgIFtzcGVjcyBAc3BlY3MgcmV0IChjb25mb3JtKiAoc3BlY3MgMCkgeCldXG4gICAgICAoaWZcbiAgICAgICAoaW52YWxpZD8gcmV0KVxuICAgICAgIDpjbGpzLnNwZWMuYWxwaGEvaW52YWxpZFxuICAgICAgIChjb25mb3JtKiAoc3BlY3MgMSkgcmV0KSkpKVxuICAgIDNcbiAgICAoZm5cbiAgICAgW3hdXG4gICAgIChsZXRcbiAgICAgIFtzcGVjcyBAc3BlY3MgcmV0IChjb25mb3JtKiAoc3BlY3MgMCkgeCldXG4gICAgICAoaWZcbiAgICAgICAoaW52YWxpZD8gcmV0KVxuICAgICAgIDpjbGpzLnNwZWMuYWxwaGEvaW52YWxpZFxuICAgICAgIChsZXRcbiAgICAgICAgW3JldCAoY29uZm9ybSogKHNwZWNzIDEpIHJldCldXG4gICAgICAgIChpZlxuICAgICAgICAgKGludmFsaWQ/IHJldClcbiAgICAgICAgIDpjbGpzLnNwZWMuYWxwaGEvaW52YWxpZFxuICAgICAgICAgKGNvbmZvcm0qIChzcGVjcyAyKSByZXQpKSkpKSlcbiAgICAoZm5cbiAgICAgW3hdXG4gICAgIChsZXRcbiAgICAgIFtzcGVjcyBAc3BlY3NdXG4gICAgICAobG9vcFxuICAgICAgIFtyZXQgeCBpIDBdXG4gICAgICAgKGlmXG4gICAgICAgICg8IGkgKGNvdW50IHNwZWNzKSlcbiAgICAgICAgKGxldFxuICAgICAgICAgW25yZXQgKGNvbmZvcm0qIChzcGVjcyBpKSByZXQpXVxuICAgICAgICAgKGlmXG4gICAgICAgICAgKGludmFsaWQ/IG5yZXQpXG4gICAgICAgICAgOmNsanMuc3BlYy5hbHBoYS9pbnZhbGlkXG4gICAgICAgICAgKHJlY3VyIG5yZXQgKGluYyBpKSkpKVxuICAgICAgICByZXQpKSkpKV1cbiAgKHJlaWZ5XG4gICBTcGVjaXplXG4gICAoc3BlY2l6ZSogW3NdIHMpXG4gICAoc3BlY2l6ZSogW3MgX10gcylcbiAgIFNwZWNcbiAgIChjb25mb3JtKiBbXyB4XSAoY2Zvcm0geCkpXG4gICAodW5mb3JtKlxuICAgIFtfIHhdXG4gICAgKHJlZHVjZVxuICAgICAoZm4qIFtwMV9fNDUzMTAjIHAyX180NTMwOSNdICh1bmZvcm0gcDJfXzQ1MzA5IyBwMV9fNDUzMTAjKSlcbiAgICAgeFxuICAgICAocmV2ZXJzZSBwcmVkcykpKVxuICAgKGV4cGxhaW4qXG4gICAgW18gcGF0aCB2aWEgaW4geF1cbiAgICAoZXhwbGFpbi1wcmVkLWxpc3QgZm9ybXMgcHJlZHMgcGF0aCB2aWEgaW4geCkpXG4gICAoZ2VuKlxuICAgIFtfIG92ZXJyaWRlcyBwYXRoIHJtYXBdXG4gICAgKGlmXG4gICAgIGdmblxuICAgICAoZ2ZuKVxuICAgICAoZ2Vuc3ViIChmaXJzdCBwcmVkcykgb3ZlcnJpZGVzIHBhdGggcm1hcCAoZmlyc3QgZm9ybXMpKSkpXG4gICAod2l0aC1nZW4qIFtfIGdmbl0gKGFuZC1zcGVjLWltcGwgZm9ybXMgcHJlZHMgZ2ZuKSlcbiAgIChkZXNjcmliZSpcbiAgICBbX11cbiAgICAoY2xvanVyZS5jb3JlL3NlcXVlbmNlXG4gICAgIChjbG9qdXJlLmNvcmUvc2VxXG4gICAgICAoY2xvanVyZS5jb3JlL2NvbmNhdFxuICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCAnY2xqcy5zcGVjLmFscGhhL2FuZClcbiAgICAgICBmb3JtcykpKSkpKSlcbiJ9IHs6c3ltIGRlc2NyaWJlKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzcGVjXSl9LCA6cHJvdG9jb2wgU3BlY30gezpzeW0gbWFwLXNwZWMtaW1wbCwgOm1ldGEgezpkb2MgIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnc3BlYycgd2l0aCBhIG1hcCBhcmd1bWVudCIsIDphcmdsaXN0cyAoW3s6a2V5cyBbcmVxLXVuIG9wdC11biBrZXlzLXByZWQgcHJlZC1leHBycyBvcHQta2V5cyByZXEtc3BlY3MgcmVxIHJlcS1rZXlzIG9wdC1zcGVjcyBwcmVkLWZvcm1zIG9wdCBnZm5dLCA6YXMgYXJnbX1dKX0sIDpzb3VyY2UgIihkZWZuXG4gbWFwLXNwZWMtaW1wbFxuIFwiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdzcGVjJyB3aXRoIGEgbWFwIGFyZ3VtZW50XCJcbiBbezprZXlzXG4gICBbcmVxLXVuXG4gICAgb3B0LXVuXG4gICAga2V5cy1wcmVkXG4gICAgcHJlZC1leHByc1xuICAgIG9wdC1rZXlzXG4gICAgcmVxLXNwZWNzXG4gICAgcmVxXG4gICAgcmVxLWtleXNcbiAgICBvcHQtc3BlY3NcbiAgICBwcmVkLWZvcm1zXG4gICAgb3B0XG4gICAgZ2ZuXSxcbiAgIDphcyBhcmdtfV1cbiAobGV0XG4gIFtrLT5zXG4gICAoemlwbWFwIChjb25jYXQgcmVxLWtleXMgb3B0LWtleXMpIChjb25jYXQgcmVxLXNwZWNzIG9wdC1zcGVjcykpXG4gICBrZXlzLT5zcGVjbmFtZXNcbiAgIChmbiogW3AxX180NTMwMSNdIChjL29yIChrLT5zIHAxX180NTMwMSMpIHAxX180NTMwMSMpKVxuICAgaWRcbiAgIChyYW5kb20tdXVpZCldXG4gIChyZWlmeVxuICAgU3BlY2l6ZVxuICAgKHNwZWNpemUqIFtzXSBzKVxuICAgKHNwZWNpemUqIFtzIF9dIHMpXG4gICBTcGVjXG4gICAoY29uZm9ybSpcbiAgICBbXyBtXVxuICAgIChpZlxuICAgICAoa2V5cy1wcmVkIG0pXG4gICAgIChsZXRcbiAgICAgIFtyZWcgKHJlZ2lzdHJ5KV1cbiAgICAgIChsb29wXG4gICAgICAgW3JldCBtIFtbayB2XSAmIGtzIDphcyBrZXlzXSBtXVxuICAgICAgIChpZlxuICAgICAgICBrZXlzXG4gICAgICAgIChsZXRcbiAgICAgICAgIFtzbmFtZSAoa2V5cy0+c3BlY25hbWVzIGspXVxuICAgICAgICAgKGlmLWxldFxuICAgICAgICAgIFtzIChnZXQgcmVnIHNuYW1lKV1cbiAgICAgICAgICAobGV0XG4gICAgICAgICAgIFtjdiAoY29uZm9ybSBzIHYpXVxuICAgICAgICAgICAoaWZcbiAgICAgICAgICAgIChpbnZhbGlkPyBjdilcbiAgICAgICAgICAgIDpjbGpzLnNwZWMuYWxwaGEvaW52YWxpZFxuICAgICAgICAgICAgKHJlY3VyIChpZiAoaWRlbnRpY2FsPyBjdiB2KSByZXQgKGFzc29jIHJldCBrIGN2KSkga3MpKSlcbiAgICAgICAgICAocmVjdXIgcmV0IGtzKSkpXG4gICAgICAgIHJldCkpKVxuICAgICA6Y2xqcy5zcGVjLmFscGhhL2ludmFsaWQpKVxuICAgKHVuZm9ybSpcbiAgICBbXyBtXVxuICAgIChsZXRcbiAgICAgW3JlZyAocmVnaXN0cnkpXVxuICAgICAobG9vcFxuICAgICAgW3JldCBtIFtrICYga3MgOmFzIGtleXNdIChjL2tleXMgbSldXG4gICAgICAoaWZcbiAgICAgICBrZXlzXG4gICAgICAgKGlmXG4gICAgICAgIChjb250YWlucz8gcmVnIChrZXlzLT5zcGVjbmFtZXMgaykpXG4gICAgICAgIChsZXRcbiAgICAgICAgIFtjdiAoZ2V0IG0gaykgdiAodW5mb3JtIChrZXlzLT5zcGVjbmFtZXMgaykgY3YpXVxuICAgICAgICAgKHJlY3VyIChpZiAoaWRlbnRpY2FsPyBjdiB2KSByZXQgKGFzc29jIHJldCBrIHYpKSBrcykpXG4gICAgICAgIChyZWN1ciByZXQga3MpKVxuICAgICAgIHJldCkpKSlcbiAgIChleHBsYWluKlxuICAgIFtfIHBhdGggdmlhIGluIHhdXG4gICAgKGlmLW5vdFxuICAgICAobWFwPyB4KVxuICAgICBbezpwYXRoIHBhdGgsIDpwcmVkICdjbG9qdXJlLmNvcmUvbWFwPywgOnZhbCB4LCA6dmlhIHZpYSwgOmluIGlufV1cbiAgICAgKGxldFxuICAgICAgW3JlZyAocmVnaXN0cnkpXVxuICAgICAgKGFwcGx5XG4gICAgICAgY29uY2F0XG4gICAgICAgKHdoZW4tbGV0XG4gICAgICAgIFtwcm9ic1xuICAgICAgICAgKC0+PlxuICAgICAgICAgIChtYXBcbiAgICAgICAgICAgKGZuIFtwcmVkIGZvcm1dICh3aGVuLW5vdCAocHJlZCB4KSBmb3JtKSlcbiAgICAgICAgICAgcHJlZC1leHByc1xuICAgICAgICAgICBwcmVkLWZvcm1zKVxuICAgICAgICAgIChrZWVwIGlkZW50aXR5KVxuICAgICAgICAgIHNlcSldXG4gICAgICAgIChtYXBcbiAgICAgICAgIChmbipcbiAgICAgICAgICBbcDFfXzQ1MzAyI11cbiAgICAgICAgICAoaWRlbnRpdHlcbiAgICAgICAgICAgezpwYXRoIHBhdGgsIDpwcmVkIHAxX180NTMwMiMsIDp2YWwgeCwgOnZpYSB2aWEsIDppbiBpbn0pKVxuICAgICAgICAgcHJvYnMpKVxuICAgICAgIChtYXBcbiAgICAgICAgKGZuXG4gICAgICAgICBbW2sgdl1dXG4gICAgICAgICAod2hlbi1ub3RcbiAgICAgICAgICAoYy9vclxuICAgICAgICAgICAobm90IChjb250YWlucz8gcmVnIChrZXlzLT5zcGVjbmFtZXMgaykpKVxuICAgICAgICAgICAocHZhbGlkPyAoa2V5cy0+c3BlY25hbWVzIGspIHYgaykpXG4gICAgICAgICAgKGV4cGxhaW4tMVxuICAgICAgICAgICAoa2V5cy0+c3BlY25hbWVzIGspXG4gICAgICAgICAgIChrZXlzLT5zcGVjbmFtZXMgaylcbiAgICAgICAgICAgKGNvbmogcGF0aCBrKVxuICAgICAgICAgICB2aWFcbiAgICAgICAgICAgKGNvbmogaW4gaylcbiAgICAgICAgICAgdikpKVxuICAgICAgICAoc2VxIHgpKSkpKSlcbiAgIChnZW4qXG4gICAgW18gb3ZlcnJpZGVzIHBhdGggcm1hcF1cbiAgICAoaWZcbiAgICAgZ2ZuXG4gICAgIChnZm4pXG4gICAgIChsZXRcbiAgICAgIFtybWFwXG4gICAgICAgKGluY2sgcm1hcCBpZClcbiAgICAgICByZ2VuXG4gICAgICAgKGZuIFtrIHNdIFtrIChnZW5zdWIgcyBvdmVycmlkZXMgKGNvbmogcGF0aCBrKSBybWFwIGspXSlcbiAgICAgICBvZ2VuXG4gICAgICAgKGZuXG4gICAgICAgIFtrIHNdXG4gICAgICAgICh3aGVuLW5vdFxuICAgICAgICAgKHJlY3VyLWxpbWl0PyBybWFwIGlkIHBhdGggaylcbiAgICAgICAgIFtrIChnZW4vZGVsYXkgKGdlbnN1YiBzIG92ZXJyaWRlcyAoY29uaiBwYXRoIGspIHJtYXAgaykpXSkpXG4gICAgICAgcmVxc1xuICAgICAgIChtYXAgcmdlbiByZXEta2V5cyByZXEtc3BlY3MpXG4gICAgICAgb3B0c1xuICAgICAgIChyZW1vdmUgbmlsPyAobWFwIG9nZW4gb3B0LWtleXMgb3B0LXNwZWNzKSldXG4gICAgICAod2hlblxuICAgICAgIChldmVyeT8gaWRlbnRpdHkgKGNvbmNhdCAobWFwIHNlY29uZCByZXFzKSAobWFwIHNlY29uZCBvcHRzKSkpXG4gICAgICAgKGdlbi9iaW5kXG4gICAgICAgIChnZW4vdHVwbGVcbiAgICAgICAgIChhbmQtay1nZW4gcmVxKVxuICAgICAgICAgKG9yLWstZ2VuIG9wdClcbiAgICAgICAgIChhbmQtay1nZW4gcmVxLXVuKVxuICAgICAgICAgKG9yLWstZ2VuIG9wdC11bikpXG4gICAgICAgIChmblxuICAgICAgICAgW1tyZXEta3Mgb3B0LWtzIHJlcS11bi1rcyBvcHQtdW4ta3NdXVxuICAgICAgICAgKGxldFxuICAgICAgICAgIFtxa3NcbiAgICAgICAgICAgKGZsYXR0ZW4gKGNvbmNhdCByZXEta3Mgb3B0LWtzKSlcbiAgICAgICAgICAgdW5xa3NcbiAgICAgICAgICAgKG1hcFxuICAgICAgICAgICAgKGNvbXAga2V5d29yZCBuYW1lKVxuICAgICAgICAgICAgKGZsYXR0ZW4gKGNvbmNhdCByZXEtdW4ta3Mgb3B0LXVuLWtzKSkpXVxuICAgICAgICAgICgtPj5cbiAgICAgICAgICAgKGludG8gcmVxcyBvcHRzKVxuICAgICAgICAgICAoZmlsdGVyXG4gICAgICAgICAgICAoZm4qXG4gICAgICAgICAgICAgW3AxX180NTMwMyNdXG4gICAgICAgICAgICAgKChzZXQgKGNvbmNhdCBxa3MgdW5xa3MpKSAoZmlyc3QgcDFfXzQ1MzAzIykpKSlcbiAgICAgICAgICAgKGFwcGx5IGNvbmNhdClcbiAgICAgICAgICAgKGFwcGx5IGdlbi9oYXNoLW1hcCkpKSkpKSkpKVxuICAgKHdpdGgtZ2VuKiBbXyBnZm5dIChtYXAtc3BlYy1pbXBsIChhc3NvYyBhcmdtIDpnZm4gZ2ZuKSkpXG4gICAoZGVzY3JpYmUqXG4gICAgW19dXG4gICAgKGNvbnNcbiAgICAgJ2NsanMuc3BlYy5hbHBoYS9rZXlzXG4gICAgIChjb25kLT5cbiAgICAgIFtdXG4gICAgICByZXFcbiAgICAgIChjb25qIDpyZXEgcmVxKVxuICAgICAgb3B0XG4gICAgICAoY29uaiA6b3B0IG9wdClcbiAgICAgIHJlcS11blxuICAgICAgKGNvbmogOnJlcS11biByZXEtdW4pXG4gICAgICBvcHQtdW5cbiAgICAgIChjb25qIDpvcHQtdW4gb3B0LXVuKSkpKSkpKVxuIn0gezpzeW0gZXhwbGFpbiwgOm1ldGEgezpkb2MgIkdpdmVuIGEgc3BlYyBhbmQgYSB2YWx1ZSB0aGF0IGZhaWxzIHRvIGNvbmZvcm0sIHByaW50cyBhbiBleHBsYW5hdGlvbiB0byAqb3V0Ki4iLCA6YXJnbGlzdHMgKFtzcGVjIHhdKX0sIDpzb3VyY2UgIihkZWZuXG4gZXhwbGFpblxuIFwiR2l2ZW4gYSBzcGVjIGFuZCBhIHZhbHVlIHRoYXQgZmFpbHMgdG8gY29uZm9ybSwgcHJpbnRzIGFuIGV4cGxhbmF0aW9uIHRvICpvdXQqLlwiXG4gW3NwZWMgeF1cbiAoZXhwbGFpbi1vdXQgKGV4cGxhaW4tZGF0YSBzcGVjIHgpKSlcbiJ9IHs6c3ltIHdpdGgtZ2VuKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzcGVjIGdmbl0pfSwgOnByb3RvY29sIFNwZWN9IHs6c3ltIG9yLXNwZWMtaW1wbCwgOm1ldGEgezpkb2MgIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnb3InIiwgOmFyZ2xpc3RzIChba2V5cyBmb3JtcyBwcmVkcyBnZm5dKX0sIDpzb3VyY2UgIihkZWZuXG4gb3Itc3BlYy1pbXBsXG4gXCJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJ29yJ1wiXG4gW2tleXMgZm9ybXMgcHJlZHMgZ2ZuXVxuIChsZXRcbiAgW2lkXG4gICAocmFuZG9tLXV1aWQpXG4gICBrcHNcbiAgICh6aXBtYXAga2V5cyBwcmVkcylcbiAgIHNwZWNzXG4gICAoZGVsYXkgKG1hcHYgc3BlY2l6ZSBwcmVkcyBmb3JtcykpXG4gICBjZm9ybVxuICAgKGNhc2VcbiAgICAoY291bnQgcHJlZHMpXG4gICAgMlxuICAgIChmblxuICAgICBbeF1cbiAgICAgKGxldFxuICAgICAgW3NwZWNzIEBzcGVjcyByZXQgKGNvbmZvcm0qIChzcGVjcyAwKSB4KV1cbiAgICAgIChpZlxuICAgICAgIChpbnZhbGlkPyByZXQpXG4gICAgICAgKGxldFxuICAgICAgICBbcmV0IChjb25mb3JtKiAoc3BlY3MgMSkgeCldXG4gICAgICAgIChpZlxuICAgICAgICAgKGludmFsaWQ/IHJldClcbiAgICAgICAgIDpjbGpzLnNwZWMuYWxwaGEvaW52YWxpZFxuICAgICAgICAgKHRhZ2dlZC1yZXQgKGtleXMgMSkgcmV0KSkpXG4gICAgICAgKHRhZ2dlZC1yZXQgKGtleXMgMCkgcmV0KSkpKVxuICAgIDNcbiAgICAoZm5cbiAgICAgW3hdXG4gICAgIChsZXRcbiAgICAgIFtzcGVjcyBAc3BlY3MgcmV0IChjb25mb3JtKiAoc3BlY3MgMCkgeCldXG4gICAgICAoaWZcbiAgICAgICAoaW52YWxpZD8gcmV0KVxuICAgICAgIChsZXRcbiAgICAgICAgW3JldCAoY29uZm9ybSogKHNwZWNzIDEpIHgpXVxuICAgICAgICAoaWZcbiAgICAgICAgIChpbnZhbGlkPyByZXQpXG4gICAgICAgICAobGV0XG4gICAgICAgICAgW3JldCAoY29uZm9ybSogKHNwZWNzIDIpIHgpXVxuICAgICAgICAgIChpZlxuICAgICAgICAgICAoaW52YWxpZD8gcmV0KVxuICAgICAgICAgICA6Y2xqcy5zcGVjLmFscGhhL2ludmFsaWRcbiAgICAgICAgICAgKHRhZ2dlZC1yZXQgKGtleXMgMikgcmV0KSkpXG4gICAgICAgICAodGFnZ2VkLXJldCAoa2V5cyAxKSByZXQpKSlcbiAgICAgICAodGFnZ2VkLXJldCAoa2V5cyAwKSByZXQpKSkpXG4gICAgKGZuXG4gICAgIFt4XVxuICAgICAobGV0XG4gICAgICBbc3BlY3MgQHNwZWNzXVxuICAgICAgKGxvb3BcbiAgICAgICBbaSAwXVxuICAgICAgIChpZlxuICAgICAgICAoPCBpIChjb3VudCBzcGVjcykpXG4gICAgICAgIChsZXRcbiAgICAgICAgIFtzcGVjIChzcGVjcyBpKV1cbiAgICAgICAgIChsZXRcbiAgICAgICAgICBbcmV0IChjb25mb3JtKiBzcGVjIHgpXVxuICAgICAgICAgIChpZlxuICAgICAgICAgICAoaW52YWxpZD8gcmV0KVxuICAgICAgICAgICAocmVjdXIgKGluYyBpKSlcbiAgICAgICAgICAgKHRhZ2dlZC1yZXQgKGtleXMgaSkgcmV0KSkpKVxuICAgICAgICA6Y2xqcy5zcGVjLmFscGhhL2ludmFsaWQpKSkpKV1cbiAgKHJlaWZ5XG4gICBTcGVjaXplXG4gICAoc3BlY2l6ZSogW3NdIHMpXG4gICAoc3BlY2l6ZSogW3MgX10gcylcbiAgIFNwZWNcbiAgIChjb25mb3JtKiBbXyB4XSAoY2Zvcm0geCkpXG4gICAodW5mb3JtKiBbXyBbayB4XV0gKHVuZm9ybSAoa3BzIGspIHgpKVxuICAgKGV4cGxhaW4qXG4gICAgW3RoaXMgcGF0aCB2aWEgaW4geF1cbiAgICAod2hlbi1ub3RcbiAgICAgKHB2YWxpZD8gdGhpcyB4KVxuICAgICAoYXBwbHlcbiAgICAgIGNvbmNhdFxuICAgICAgKG1hcFxuICAgICAgIChmblxuICAgICAgICBbayBmb3JtIHByZWRdXG4gICAgICAgICh3aGVuLW5vdFxuICAgICAgICAgKHB2YWxpZD8gcHJlZCB4KVxuICAgICAgICAgKGV4cGxhaW4tMSBmb3JtIHByZWQgKGNvbmogcGF0aCBrKSB2aWEgaW4geCkpKVxuICAgICAgIGtleXNcbiAgICAgICBmb3Jtc1xuICAgICAgIHByZWRzKSkpKVxuICAgKGdlbipcbiAgICBbXyBvdmVycmlkZXMgcGF0aCBybWFwXVxuICAgIChpZlxuICAgICBnZm5cbiAgICAgKGdmbilcbiAgICAgKGxldFxuICAgICAgW2dlblxuICAgICAgIChmblxuICAgICAgICBbayBwIGZdXG4gICAgICAgIChsZXRcbiAgICAgICAgIFtybWFwIChpbmNrIHJtYXAgaWQpXVxuICAgICAgICAgKHdoZW4tbm90XG4gICAgICAgICAgKHJlY3VyLWxpbWl0PyBybWFwIGlkIHBhdGggaylcbiAgICAgICAgICAoZ2VuL2RlbGF5IChnZW5zdWIgcCBvdmVycmlkZXMgKGNvbmogcGF0aCBrKSBybWFwIGYpKSkpKVxuICAgICAgIGdzXG4gICAgICAgKHJlbW92ZSBuaWw/IChtYXAgZ2VuIGtleXMgcHJlZHMgZm9ybXMpKV1cbiAgICAgICh3aGVuLW5vdCAoZW1wdHk/IGdzKSAoZ2VuL29uZS1vZiBncykpKSkpXG4gICAod2l0aC1nZW4qIFtfIGdmbl0gKG9yLXNwZWMtaW1wbCBrZXlzIGZvcm1zIHByZWRzIGdmbikpXG4gICAoZGVzY3JpYmUqXG4gICAgW19dXG4gICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxuICAgICAoY2xvanVyZS5jb3JlL3NlcVxuICAgICAgKGNsb2p1cmUuY29yZS9jb25jYXRcbiAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgJ2NsanMuc3BlYy5hbHBoYS9vcilcbiAgICAgICAobWFwY2F0IHZlY3RvciBrZXlzIGZvcm1zKSkpKSkpKSlcbiJ9IHs6c3ltICpmc3BlYy1pdGVyYXRpb25zKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiAqZnNwZWMtaXRlcmF0aW9ucypcbiBcIlRoZSBudW1iZXIgb2YgdGltZXMgYW4gYW5vbnltb3VzIGZuIHNwZWNpZmllZCBieSBmc3BlYyB3aWxsIGJlIChnZW5lcmF0aXZlbHkpIHRlc3RlZCBkdXJpbmcgY29uZm9ybVwiXG4gMjEpXG4ifSB7OnN5bSBTcGVjLCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAoY29uZm9ybSogZGVzY3JpYmUqIGV4cGxhaW4qIGdlbiogdW5mb3JtKiB3aXRoLWdlbiopfSB7OnN5bSB1bmZvcm0sIDptZXRhIHs6ZG9jICJHaXZlbiBhIHNwZWMgYW5kIGEgdmFsdWUgY3JlYXRlZCBieSBvciBjb21wbGlhbnQgd2l0aCBhIGNhbGwgdG9cbiAgJ2NvbmZvcm0nIHdpdGggdGhlIHNhbWUgc3BlYywgcmV0dXJucyBhIHZhbHVlIHdpdGggYWxsIGNvbmZvcm1cbiAgIGRlc3RydWN0dXJpbmcgdW5kb25lLiIsIDphcmdsaXN0cyAoW3NwZWMgeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB1bmZvcm1cbiBcIkdpdmVuIGEgc3BlYyBhbmQgYSB2YWx1ZSBjcmVhdGVkIGJ5IG9yIGNvbXBsaWFudCB3aXRoIGEgY2FsbCB0b1xcbiAgJ2NvbmZvcm0nIHdpdGggdGhlIHNhbWUgc3BlYywgcmV0dXJucyBhIHZhbHVlIHdpdGggYWxsIGNvbmZvcm1cXG4gICBkZXN0cnVjdHVyaW5nIHVuZG9uZS5cIlxuIFtzcGVjIHhdXG4gKHVuZm9ybSogKHNwZWNpemUgc3BlYykgeCkpXG4ifSB7OnN5bSB2YWxpZD8sIDptZXRhIHs6ZG9jICJIZWxwZXIgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRydWUgd2hlbiB4IGlzIHZhbGlkIGZvciBzcGVjLiIsIDphcmdsaXN0cyBbW3NwZWMgeF0gW3NwZWMgeCBmb3JtXV19LCA6c291cmNlICIoZGVmblxuIHZhbGlkP1xuIFwiSGVscGVyIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0cnVlIHdoZW4geCBpcyB2YWxpZCBmb3Igc3BlYy5cIlxuIChbc3BlYyB4XVxuICAobGV0IFtzcGVjIChzcGVjaXplIHNwZWMpXSAobm90IChpbnZhbGlkPyAoY29uZm9ybSogc3BlYyB4KSkpKSlcbiAoW3NwZWMgeCBmb3JtXVxuICAobGV0IFtzcGVjIChzcGVjaXplIHNwZWMgZm9ybSldIChub3QgKGludmFsaWQ/IChjb25mb3JtKiBzcGVjIHgpKSkpKSlcbiJ9IHs6c3ltIGdlbiwgOm1ldGEgezpkb2MgIkdpdmVuIGEgc3BlYywgcmV0dXJucyB0aGUgZ2VuZXJhdG9yIGZvciBpdCwgb3IgdGhyb3dzIGlmIG5vbmUgY2FuXG4gIGJlIGNvbnN0cnVjdGVkLiBPcHRpb25hbGx5IGFuIG92ZXJyaWRlcyBtYXAgY2FuIGJlIHByb3ZpZGVkIHdoaWNoXG4gIHNob3VsZCBtYXAgc3BlYyBuYW1lcyBvciBwYXRocyAodmVjdG9ycyBvZiBrZXl3b3JkcykgdG8gbm8tYXJnXG4gIGdlbmVyYXRvci1jcmVhdGluZyBmbnMuIFRoZXNlIHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSBnZW5lcmF0b3JzIGF0IHRob3NlXG4gIG5hbWVzL3BhdGhzLiBOb3RlIHRoYXQgcGFyZW50IGdlbmVyYXRvciAoaW4gdGhlIHNwZWMgb3Igb3ZlcnJpZGVzXG4gIG1hcCkgd2lsbCBzdXBlcnNlZGUgdGhvc2Ugb2YgYW55IHN1YnRyZWVzLiBBIGdlbmVyYXRvciBmb3IgYSByZWdleFxuICBvcCBtdXN0IGFsd2F5cyByZXR1cm4gYSBzZXF1ZW50aWFsIGNvbGxlY3Rpb24gKGkuZS4gYSBnZW5lcmF0b3IgZm9yXG4gIHMvPyBzaG91bGQgcmV0dXJuIGVpdGhlciBhbiBlbXB0eSBzZXF1ZW5jZS92ZWN0b3Igb3IgYVxuICBzZXF1ZW5jZS92ZWN0b3Igd2l0aCBvbmUgaXRlbSBpbiBpdCkiLCA6YXJnbGlzdHMgW1tzcGVjXSBbc3BlYyBvdmVycmlkZXNdXX0sIDpzb3VyY2UgIihkZWZuXG4gZ2VuXG4gXCJHaXZlbiBhIHNwZWMsIHJldHVybnMgdGhlIGdlbmVyYXRvciBmb3IgaXQsIG9yIHRocm93cyBpZiBub25lIGNhblxcbiAgYmUgY29uc3RydWN0ZWQuIE9wdGlvbmFsbHkgYW4gb3ZlcnJpZGVzIG1hcCBjYW4gYmUgcHJvdmlkZWQgd2hpY2hcXG4gIHNob3VsZCBtYXAgc3BlYyBuYW1lcyBvciBwYXRocyAodmVjdG9ycyBvZiBrZXl3b3JkcykgdG8gbm8tYXJnXFxuICBnZW5lcmF0b3ItY3JlYXRpbmcgZm5zLiBUaGVzZSB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiB0aGUgZ2VuZXJhdG9ycyBhdCB0aG9zZVxcbiAgbmFtZXMvcGF0aHMuIE5vdGUgdGhhdCBwYXJlbnQgZ2VuZXJhdG9yIChpbiB0aGUgc3BlYyBvciBvdmVycmlkZXNcXG4gIG1hcCkgd2lsbCBzdXBlcnNlZGUgdGhvc2Ugb2YgYW55IHN1YnRyZWVzLiBBIGdlbmVyYXRvciBmb3IgYSByZWdleFxcbiAgb3AgbXVzdCBhbHdheXMgcmV0dXJuIGEgc2VxdWVudGlhbCBjb2xsZWN0aW9uIChpLmUuIGEgZ2VuZXJhdG9yIGZvclxcbiAgcy8/IHNob3VsZCByZXR1cm4gZWl0aGVyIGFuIGVtcHR5IHNlcXVlbmNlL3ZlY3RvciBvciBhXFxuICBzZXF1ZW5jZS92ZWN0b3Igd2l0aCBvbmUgaXRlbSBpbiBpdClcIlxuIChbc3BlY10gKGdlbiBzcGVjIG5pbCkpXG4gKFtzcGVjIG92ZXJyaWRlc11cbiAgKGdlbnN1YlxuICAgc3BlY1xuICAgb3ZlcnJpZGVzXG4gICBbXVxuICAgezpjbGpzLnNwZWMuYWxwaGEvcmVjdXJzaW9uLWxpbWl0ICpyZWN1cnNpb24tbGltaXQqfVxuICAgc3BlYykpKVxuIn0gezpzeW0gbm9uY29uZm9ybWluZywgOm1ldGEgezpkb2MgInRha2VzIGEgc3BlYyBhbmQgcmV0dXJucyBhIHNwZWMgdGhhdCBoYXMgdGhlIHNhbWUgcHJvcGVydGllcyBleGNlcHRcbiAgJ2NvbmZvcm0nIHJldHVybnMgdGhlIG9yaWdpbmFsIChub3QgdGhlIGNvbmZvcm1lZCkgdmFsdWUuIE5vdGUsIHdpbGwgc3BlY2l6ZSByZWdleCBvcHMuIiwgOmFyZ2xpc3RzIChbc3BlY10pfSwgOnNvdXJjZSAiKGRlZm5cbiBub25jb25mb3JtaW5nXG4gXCJ0YWtlcyBhIHNwZWMgYW5kIHJldHVybnMgYSBzcGVjIHRoYXQgaGFzIHRoZSBzYW1lIHByb3BlcnRpZXMgZXhjZXB0XFxuICAnY29uZm9ybScgcmV0dXJucyB0aGUgb3JpZ2luYWwgKG5vdCB0aGUgY29uZm9ybWVkKSB2YWx1ZS4gTm90ZSwgd2lsbCBzcGVjaXplIHJlZ2V4IG9wcy5cIlxuIFtzcGVjXVxuIChsZXRcbiAgW3NwZWMgKGRlbGF5IChzcGVjaXplIHNwZWMpKV1cbiAgKHJlaWZ5XG4gICBTcGVjaXplXG4gICAoc3BlY2l6ZSogW3NdIHMpXG4gICAoc3BlY2l6ZSogW3MgX10gcylcbiAgIFNwZWNcbiAgIChjb25mb3JtKlxuICAgIFtfIHhdXG4gICAgKGxldFxuICAgICBbcmV0IChjb25mb3JtKiBAc3BlYyB4KV1cbiAgICAgKGlmIChpbnZhbGlkPyByZXQpIDpjbGpzLnNwZWMuYWxwaGEvaW52YWxpZCB4KSkpXG4gICAodW5mb3JtKiBbXyB4XSAodW5mb3JtKiBAc3BlYyB4KSlcbiAgIChleHBsYWluKiBbXyBwYXRoIHZpYSBpbiB4XSAoZXhwbGFpbiogQHNwZWMgcGF0aCB2aWEgaW4geCkpXG4gICAoZ2VuKiBbXyBvdmVycmlkZXMgcGF0aCBybWFwXSAoZ2VuKiBAc3BlYyBvdmVycmlkZXMgcGF0aCBybWFwKSlcbiAgICh3aXRoLWdlbiogW18gZ2ZuXSAobm9uY29uZm9ybWluZyAod2l0aC1nZW4qIEBzcGVjIGdmbikpKVxuICAgKGRlc2NyaWJlKlxuICAgIFtfXVxuICAgIChjbG9qdXJlLmNvcmUvc2VxdWVuY2VcbiAgICAgKGNsb2p1cmUuY29yZS9zZXFcbiAgICAgIChjbG9qdXJlLmNvcmUvY29uY2F0XG4gICAgICAgKGNsb2p1cmUuY29yZS9saXN0ICdjbGpzLnNwZWMuYWxwaGEvbm9uY29uZm9ybWluZylcbiAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgKGRlc2NyaWJlKiBAc3BlYykpKSkpKSkpKVxuIn0gezpzeW0gdW5mb3JtKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzcGVjIHldKX0sIDpwcm90b2NvbCBTcGVjfSB7OnN5bSBhYmJyZXYsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhYmJyZXZcbiBbZm9ybV1cbiAoY29uZFxuICAoc2VxPyBmb3JtKVxuICAod2Fsay9wb3N0d2Fsa1xuICAgKGZuXG4gICAgW2Zvcm1dXG4gICAgKGNvbmRcbiAgICAgKGMvYW5kIChzeW1ib2w/IGZvcm0pIChuYW1lc3BhY2UgZm9ybSkpXG4gICAgICgtPiBmb3JtIG5hbWUgc3ltYm9sKVxuICAgICAoYy9hbmQgKHNlcT8gZm9ybSkgKD0gJ2ZuIChmaXJzdCBmb3JtKSkgKD0gJ1slXSAoc2Vjb25kIGZvcm0pKSlcbiAgICAgKGxhc3QgZm9ybSlcbiAgICAgOmVsc2VcbiAgICAgZm9ybSkpXG4gICBmb3JtKVxuICAoYy9hbmQgKHN5bWJvbD8gZm9ybSkgKG5hbWVzcGFjZSBmb3JtKSlcbiAgKC0+IGZvcm0gbmFtZSBzeW1ib2wpXG4gIDplbHNlXG4gIGZvcm0pKVxuIn0gezpzeW0gcmVnZXg/LCA6bWV0YSB7OmRvYyAicmV0dXJucyB4IGlmIHggaXMgYSAoY2xqcy5zcGVjLmFscGhhKSByZWdleCBvcCwgZWxzZSBsb2dpY2FsIGZhbHNlIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWdleD9cbiBcInJldHVybnMgeCBpZiB4IGlzIGEgKGNsanMuc3BlYy5hbHBoYSkgcmVnZXggb3AsIGVsc2UgbG9naWNhbCBmYWxzZVwiXG4gW3hdXG4gKGMvYW5kICg6Y2xqcy5zcGVjLmFscGhhL29wIHgpIHgpKVxuIn0gezpzeW0gaW50LWluLXJhbmdlPywgOm1ldGEgezpkb2MgIlJldHVybiB0cnVlIGlmIHN0YXJ0IDw9IHZhbCwgdmFsIDwgZW5kIGFuZCB2YWwgaXMgYSBmaXhlZFxuICBwcmVjaXNpb24gaW50ZWdlci4iLCA6YXJnbGlzdHMgKFtzdGFydCBlbmQgdmFsXSl9LCA6c291cmNlICIoZGVmblxuIGludC1pbi1yYW5nZT9cbiBcIlJldHVybiB0cnVlIGlmIHN0YXJ0IDw9IHZhbCwgdmFsIDwgZW5kIGFuZCB2YWwgaXMgYSBmaXhlZFxcbiAgcHJlY2lzaW9uIGludGVnZXIuXCJcbiBbc3RhcnQgZW5kIHZhbF1cbiAoY29uZFxuICAoaW50ZWdlcj8gdmFsKVxuICAoYy9hbmQgKDw9IHN0YXJ0IHZhbCkgKDwgdmFsIGVuZCkpXG4gIChpbnN0YW5jZT8gZ29vZy5tYXRoLkxvbmcgdmFsKVxuICAoYy9hbmQgKC5sZXNzVGhhbk9yRXF1YWwgc3RhcnQgdmFsKSAoLmxlc3NUaGFuIHZhbCBlbmQpKVxuICAoaW5zdGFuY2U/IGdvb2cubWF0aC5JbnRlZ2VyIHZhbClcbiAgKGMvYW5kICgubGVzc1RoYW5PckVxdWFsIHN0YXJ0IHZhbCkgKC5sZXNzVGhhbiB2YWwgZW5kKSlcbiAgOmVsc2VcbiAgZmFsc2UpKVxuIn0gezpzeW0gc3BlYz8sIDptZXRhIHs6ZG9jICJyZXR1cm5zIHggaWYgeCBpcyBhIHNwZWMgb2JqZWN0LCBlbHNlIGxvZ2ljYWwgZmFsc2UiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHNwZWM/XG4gXCJyZXR1cm5zIHggaWYgeCBpcyBhIHNwZWMgb2JqZWN0LCBlbHNlIGxvZ2ljYWwgZmFsc2VcIlxuIFt4XVxuICh3aGVuIChpbXBsZW1lbnRzPyBTcGVjIHgpIHgpKVxuIn0gezpzeW0gcmVnaXN0cnksIDptZXRhIHs6ZG9jICJyZXR1cm5zIHRoZSByZWdpc3RyeSBtYXAsIHByZWZlciAnZ2V0LXNwZWMnIHRvIGxvb2t1cCBhIHNwZWMgYnkgbmFtZSIsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWdpc3RyeVxuIFwicmV0dXJucyB0aGUgcmVnaXN0cnkgbWFwLCBwcmVmZXIgJ2dldC1zcGVjJyB0byBsb29rdXAgYSBzcGVjIGJ5IG5hbWVcIlxuIFtdXG4gQHJlZ2lzdHJ5LXJlZilcbiJ9IHs6c3ltIHJlcCtpbXBsLCA6bWV0YSB7OmRvYyAiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICcrJyIsIDphcmdsaXN0cyAoW2Zvcm0gcF0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZXAraW1wbFxuIFwiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICcrJ1wiXG4gW2Zvcm0gcF1cbiAocGNhdCpcbiAgezpwcyBbcCAocmVwKiBwIHAgW10gdHJ1ZSBmb3JtKV0sXG4gICA6Zm9ybXNcbiAgIChjbG9qdXJlLmNvcmUvdmVjXG4gICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxuICAgICAoY2xvanVyZS5jb3JlL3NlcVxuICAgICAgKGNsb2p1cmUuY29yZS9jb25jYXRcbiAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgZm9ybSlcbiAgICAgICAoY2xvanVyZS5jb3JlL2xpc3RcbiAgICAgICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxuICAgICAgICAgKGNsb2p1cmUuY29yZS9zZXFcbiAgICAgICAgICAoY2xvanVyZS5jb3JlL2NvbmNhdFxuICAgICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgJ2NsanMuc3BlYy5hbHBoYS8qKVxuICAgICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgZm9ybSkpKSkpKSkpKSxcbiAgIDpyZXQgW10sXG4gICA6cmVwKyBmb3JtfSkpXG4ifSB7OnN5bSBleGVyY2lzZSwgOm1ldGEgezpkb2MgImdlbmVyYXRlcyBhIG51bWJlciAoZGVmYXVsdCAxMCkgb2YgdmFsdWVzIGNvbXBhdGlibGUgd2l0aCBzcGVjIGFuZCBtYXBzIGNvbmZvcm0gb3ZlciB0aGVtLFxuICByZXR1cm5pbmcgYSBzZXF1ZW5jZSBvZiBbdmFsIGNvbmZvcm1lZC12YWxdIHR1cGxlcy4gT3B0aW9uYWxseSB0YWtlc1xuICBhIGdlbmVyYXRvciBvdmVycmlkZXMgbWFwIGFzIHBlciBnZW4iLCA6YXJnbGlzdHMgW1tzcGVjXSBbc3BlYyBuXSBbc3BlYyBuIG92ZXJyaWRlc11dfSwgOnNvdXJjZSAiKGRlZm5cbiBleGVyY2lzZVxuIFwiZ2VuZXJhdGVzIGEgbnVtYmVyIChkZWZhdWx0IDEwKSBvZiB2YWx1ZXMgY29tcGF0aWJsZSB3aXRoIHNwZWMgYW5kIG1hcHMgY29uZm9ybSBvdmVyIHRoZW0sXFxuICByZXR1cm5pbmcgYSBzZXF1ZW5jZSBvZiBbdmFsIGNvbmZvcm1lZC12YWxdIHR1cGxlcy4gT3B0aW9uYWxseSB0YWtlc1xcbiAgYSBnZW5lcmF0b3Igb3ZlcnJpZGVzIG1hcCBhcyBwZXIgZ2VuXCJcbiAoW3NwZWNdIChleGVyY2lzZSBzcGVjIDEwKSlcbiAoW3NwZWMgbl0gKGV4ZXJjaXNlIHNwZWMgbiBuaWwpKVxuIChbc3BlYyBuIG92ZXJyaWRlc11cbiAgKG1hcFxuICAgKGZuKiBbcDFfXzQ1MzM0I10gKHZlY3RvciBwMV9fNDUzMzQjIChjb25mb3JtIHNwZWMgcDFfXzQ1MzM0IykpKVxuICAgKGdlbi9zYW1wbGUgKGdlbiBzcGVjIG92ZXJyaWRlcykgbikpKSlcbiJ9IHs6c3ltIGV4cGxhaW4tZGF0YSwgOm1ldGEgezpkb2MgIkdpdmVuIGEgc3BlYyBhbmQgYSB2YWx1ZSB4IHdoaWNoIG91Z2h0IHRvIGNvbmZvcm0sIHJldHVybnMgbmlsIGlmIHhcbiAgY29uZm9ybXMsIGVsc2UgYSBtYXAgd2l0aCBhdCBsZWFzdCB0aGUga2V5IDo6cHJvYmxlbXMgd2hvc2UgdmFsdWUgaXNcbiAgYSBjb2xsZWN0aW9uIG9mIHByb2JsZW0tbWFwcywgd2hlcmUgcHJvYmxlbS1tYXAgaGFzIGF0IGxlYXN0IDpwYXRoIDpwcmVkIGFuZCA6dmFsXG4gIGtleXMgZGVzY3JpYmluZyB0aGUgcHJlZGljYXRlIGFuZCB0aGUgdmFsdWUgdGhhdCBmYWlsZWQgYXQgdGhhdFxuICBwYXRoLiIsIDphcmdsaXN0cyAoW3NwZWMgeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBleHBsYWluLWRhdGFcbiBcIkdpdmVuIGEgc3BlYyBhbmQgYSB2YWx1ZSB4IHdoaWNoIG91Z2h0IHRvIGNvbmZvcm0sIHJldHVybnMgbmlsIGlmIHhcXG4gIGNvbmZvcm1zLCBlbHNlIGEgbWFwIHdpdGggYXQgbGVhc3QgdGhlIGtleSA6OnByb2JsZW1zIHdob3NlIHZhbHVlIGlzXFxuICBhIGNvbGxlY3Rpb24gb2YgcHJvYmxlbS1tYXBzLCB3aGVyZSBwcm9ibGVtLW1hcCBoYXMgYXQgbGVhc3QgOnBhdGggOnByZWQgYW5kIDp2YWxcXG4gIGtleXMgZGVzY3JpYmluZyB0aGUgcHJlZGljYXRlIGFuZCB0aGUgdmFsdWUgdGhhdCBmYWlsZWQgYXQgdGhhdFxcbiAgcGF0aC5cIlxuIFtzcGVjIHhdXG4gKGV4cGxhaW4tZGF0YSpcbiAgc3BlY1xuICBbXVxuICAoaWYtbGV0IFtuYW1lIChzcGVjLW5hbWUgc3BlYyldIFtuYW1lXSBbXSlcbiAgW11cbiAgeCkpXG4ifSB7OnN5bSB0dXBsZS1pbXBsLCA6bWV0YSB7OmRvYyAiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICd0dXBsZSciLCA6YXJnbGlzdHMgW1tmb3JtcyBwcmVkc10gW2Zvcm1zIHByZWRzIGdmbl1dfSwgOnNvdXJjZSAiKGRlZm5cbiB0dXBsZS1pbXBsXG4gXCJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJ3R1cGxlJ1wiXG4gKFtmb3JtcyBwcmVkc10gKHR1cGxlLWltcGwgZm9ybXMgcHJlZHMgbmlsKSlcbiAoW2Zvcm1zIHByZWRzIGdmbl1cbiAgKGxldFxuICAgW3NwZWNzIChkZWxheSAobWFwdiBzcGVjaXplIHByZWRzIGZvcm1zKSkgY250IChjb3VudCBwcmVkcyldXG4gICAocmVpZnlcbiAgICBTcGVjaXplXG4gICAgKHNwZWNpemUqIFtzXSBzKVxuICAgIChzcGVjaXplKiBbcyBfXSBzKVxuICAgIFNwZWNcbiAgICAoY29uZm9ybSpcbiAgICAgW18geF1cbiAgICAgKGxldFxuICAgICAgW3NwZWNzIEBzcGVjc11cbiAgICAgIChpZi1ub3RcbiAgICAgICAoYy9hbmQgKHZlY3Rvcj8geCkgKD0gKGNvdW50IHgpIGNudCkpXG4gICAgICAgOmNsanMuc3BlYy5hbHBoYS9pbnZhbGlkXG4gICAgICAgKGxvb3BcbiAgICAgICAgW3JldCB4IGkgMF1cbiAgICAgICAgKGlmXG4gICAgICAgICAoPSBpIGNudClcbiAgICAgICAgIHJldFxuICAgICAgICAgKGxldFxuICAgICAgICAgIFt2ICh4IGkpIGN2IChjb25mb3JtKiAoc3BlY3MgaSkgdildXG4gICAgICAgICAgKGlmXG4gICAgICAgICAgIChpbnZhbGlkPyBjdilcbiAgICAgICAgICAgOmNsanMuc3BlYy5hbHBoYS9pbnZhbGlkXG4gICAgICAgICAgIChyZWN1clxuICAgICAgICAgICAgKGlmIChpZGVudGljYWw/IGN2IHYpIHJldCAoYXNzb2MgcmV0IGkgY3YpKVxuICAgICAgICAgICAgKGluYyBpKSkpKSkpKSkpXG4gICAgKHVuZm9ybSpcbiAgICAgW18geF1cbiAgICAgKGFzc2VydCAoYy9hbmQgKHZlY3Rvcj8geCkgKD0gKGNvdW50IHgpIChjb3VudCBwcmVkcykpKSlcbiAgICAgKGxvb3BcbiAgICAgIFtyZXQgeCBpIDBdXG4gICAgICAoaWZcbiAgICAgICAoPSBpIChjb3VudCB4KSlcbiAgICAgICByZXRcbiAgICAgICAobGV0XG4gICAgICAgIFtjdiAoeCBpKSB2ICh1bmZvcm0gKHByZWRzIGkpIGN2KV1cbiAgICAgICAgKHJlY3VyIChpZiAoaWRlbnRpY2FsPyBjdiB2KSByZXQgKGFzc29jIHJldCBpIHYpKSAoaW5jIGkpKSkpKSlcbiAgICAoZXhwbGFpbipcbiAgICAgW18gcGF0aCB2aWEgaW4geF1cbiAgICAgKGNvbmRcbiAgICAgIChub3QgKHZlY3Rvcj8geCkpXG4gICAgICBbezpwYXRoIHBhdGgsXG4gICAgICAgIDpwcmVkICdjbG9qdXJlLmNvcmUvdmVjdG9yPyxcbiAgICAgICAgOnZhbCB4LFxuICAgICAgICA6dmlhIHZpYSxcbiAgICAgICAgOmluIGlufV1cbiAgICAgIChub3Q9IChjb3VudCB4KSAoY291bnQgcHJlZHMpKVxuICAgICAgW3s6cGF0aCBwYXRoLFxuICAgICAgICA6cHJlZFxuICAgICAgICAoY2xvanVyZS5jb3JlL3NlcXVlbmNlXG4gICAgICAgICAoY2xvanVyZS5jb3JlL3NlcVxuICAgICAgICAgIChjbG9qdXJlLmNvcmUvY29uY2F0XG4gICAgICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCAnY2xvanVyZS5jb3JlLz0pXG4gICAgICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdFxuICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxuICAgICAgICAgICAgIChjbG9qdXJlLmNvcmUvc2VxXG4gICAgICAgICAgICAgIChjbG9qdXJlLmNvcmUvY29uY2F0XG4gICAgICAgICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgJ2Nsb2p1cmUuY29yZS9jb3VudClcbiAgICAgICAgICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCAnJSkpKSkpXG4gICAgICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCAoY291bnQgcHJlZHMpKSkpKSxcbiAgICAgICAgOnZhbCB4LFxuICAgICAgICA6dmlhIHZpYSxcbiAgICAgICAgOmluIGlufV1cbiAgICAgIDplbHNlXG4gICAgICAoYXBwbHlcbiAgICAgICBjb25jYXRcbiAgICAgICAobWFwXG4gICAgICAgIChmblxuICAgICAgICAgW2kgZm9ybSBwcmVkXVxuICAgICAgICAgKGxldFxuICAgICAgICAgIFt2ICh4IGkpXVxuICAgICAgICAgICh3aGVuLW5vdFxuICAgICAgICAgICAocHZhbGlkPyBwcmVkIHYpXG4gICAgICAgICAgIChleHBsYWluLTEgZm9ybSBwcmVkIChjb25qIHBhdGggaSkgdmlhIChjb25qIGluIGkpIHYpKSkpXG4gICAgICAgIChyYW5nZSAoY291bnQgcHJlZHMpKVxuICAgICAgICBmb3Jtc1xuICAgICAgICBwcmVkcykpKSlcbiAgICAoZ2VuKlxuICAgICBbXyBvdmVycmlkZXMgcGF0aCBybWFwXVxuICAgICAoaWZcbiAgICAgIGdmblxuICAgICAgKGdmbilcbiAgICAgIChsZXRcbiAgICAgICBbZ2VuXG4gICAgICAgIChmbiBbaSBwIGZdIChnZW5zdWIgcCBvdmVycmlkZXMgKGNvbmogcGF0aCBpKSBybWFwIGYpKVxuICAgICAgICBnc1xuICAgICAgICAobWFwIGdlbiAocmFuZ2UgKGNvdW50IHByZWRzKSkgcHJlZHMgZm9ybXMpXVxuICAgICAgICh3aGVuIChldmVyeT8gaWRlbnRpdHkgZ3MpIChhcHBseSBnZW4vdHVwbGUgZ3MpKSkpKVxuICAgICh3aXRoLWdlbiogW18gZ2ZuXSAodHVwbGUtaW1wbCBmb3JtcyBwcmVkcyBnZm4pKVxuICAgIChkZXNjcmliZSpcbiAgICAgW19dXG4gICAgIChjbG9qdXJlLmNvcmUvc2VxdWVuY2VcbiAgICAgIChjbG9qdXJlLmNvcmUvc2VxXG4gICAgICAgKGNsb2p1cmUuY29yZS9jb25jYXRcbiAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0ICdjbGpzLnNwZWMuYWxwaGEvdHVwbGUpXG4gICAgICAgIGZvcm1zKSkpKSkpKSlcbiJ9IHs6c3ltIG11bHRpLXNwZWMtaW1wbCwgOm1ldGEgezpkb2MgIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnbXVsdGktc3BlYyciLCA6YXJnbGlzdHMgW1tmb3JtIG1tdmFyIHJldGFnXSBbZm9ybSBtbXZhciByZXRhZyBnZm5dXX0sIDpzb3VyY2UgIihkZWZuXG4gbXVsdGktc3BlYy1pbXBsXG4gXCJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJ211bHRpLXNwZWMnXCJcbiAoW2Zvcm0gbW12YXIgcmV0YWddIChtdWx0aS1zcGVjLWltcGwgZm9ybSBtbXZhciByZXRhZyBuaWwpKVxuIChbZm9ybSBtbXZhciByZXRhZyBnZm5dXG4gIChsZXRcbiAgIFtpZFxuICAgIChyYW5kb20tdXVpZClcbiAgICBwcmVkeFxuICAgIChmbipcbiAgICAgW3AxX180NTMwNCNdXG4gICAgIChsZXRcbiAgICAgIFttbSBAbW12YXJdXG4gICAgICAoYy9hbmRcbiAgICAgICAoLWdldC1tZXRob2QgbW0gKCgtZGlzcGF0Y2gtZm4gbW0pIHAxX180NTMwNCMpKVxuICAgICAgIChtbSBwMV9fNDUzMDQjKSkpKVxuICAgIGR2YWxcbiAgICAoZm4qIFtwMV9fNDUzMDUjXSAoKC1kaXNwYXRjaC1mbiBAbW12YXIpIHAxX180NTMwNSMpKVxuICAgIHRhZ1xuICAgIChpZlxuICAgICAoa2V5d29yZD8gcmV0YWcpXG4gICAgIChmbiogW3AxX180NTMwNiMgcDJfXzQ1MzA3I10gKGFzc29jIHAxX180NTMwNiMgcmV0YWcgcDJfXzQ1MzA3IykpXG4gICAgIHJldGFnKV1cbiAgIChyZWlmeVxuICAgIFNwZWNpemVcbiAgICAoc3BlY2l6ZSogW3NdIHMpXG4gICAgKHNwZWNpemUqIFtzIF9dIHMpXG4gICAgU3BlY1xuICAgIChjb25mb3JtKlxuICAgICBbXyB4XVxuICAgICAoaWYtbGV0XG4gICAgICBbcHJlZCAocHJlZHggeCldXG4gICAgICAoZHQgcHJlZCB4IGZvcm0pXG4gICAgICA6Y2xqcy5zcGVjLmFscGhhL2ludmFsaWQpKVxuICAgICh1bmZvcm0qXG4gICAgIFtfIHhdXG4gICAgIChpZi1sZXRcbiAgICAgIFtwcmVkIChwcmVkeCB4KV1cbiAgICAgICh1bmZvcm0gcHJlZCB4KVxuICAgICAgKHRocm93XG4gICAgICAgKGpzL0Vycm9yLlxuICAgICAgICAoc3RyXG4gICAgICAgICBcIk5vIG1ldGhvZCBvZjogXCJcbiAgICAgICAgIGZvcm1cbiAgICAgICAgIFwiIGZvciBkaXNwYXRjaCB2YWx1ZTogXCJcbiAgICAgICAgIChkdmFsIHgpKSkpKSlcbiAgICAoZXhwbGFpbipcbiAgICAgW18gcGF0aCB2aWEgaW4geF1cbiAgICAgKGxldFxuICAgICAgW2R2IChkdmFsIHgpIHBhdGggKGNvbmogcGF0aCBkdildXG4gICAgICAoaWYtbGV0XG4gICAgICAgW3ByZWQgKHByZWR4IHgpXVxuICAgICAgIChleHBsYWluLTEgZm9ybSBwcmVkIHBhdGggdmlhIGluIHgpXG4gICAgICAgW3s6cGF0aCBwYXRoLFxuICAgICAgICAgOnByZWQgZm9ybSxcbiAgICAgICAgIDp2YWwgeCxcbiAgICAgICAgIDpyZWFzb24gXCJubyBtZXRob2RcIixcbiAgICAgICAgIDp2aWEgdmlhLFxuICAgICAgICAgOmluIGlufV0pKSlcbiAgICAoZ2VuKlxuICAgICBbXyBvdmVycmlkZXMgcGF0aCBybWFwXVxuICAgICAoaWZcbiAgICAgIGdmblxuICAgICAgKGdmbilcbiAgICAgIChsZXRcbiAgICAgICBbZ2VuXG4gICAgICAgIChmblxuICAgICAgICAgW1trIGZdXVxuICAgICAgICAgKGxldFxuICAgICAgICAgIFtwIChmIG5pbCldXG4gICAgICAgICAgKGxldFxuICAgICAgICAgICBbcm1hcCAoaW5jayBybWFwIGlkKV1cbiAgICAgICAgICAgKHdoZW4tbm90XG4gICAgICAgICAgICAocmVjdXItbGltaXQ/IHJtYXAgaWQgcGF0aCBrKVxuICAgICAgICAgICAgKGdlbi9kZWxheVxuICAgICAgICAgICAgIChnZW4vZm1hcFxuICAgICAgICAgICAgICAoZm4qIFtwMV9fNDUzMDgjXSAodGFnIHAxX180NTMwOCMgaykpXG4gICAgICAgICAgICAgIChnZW5zdWJcbiAgICAgICAgICAgICAgIHBcbiAgICAgICAgICAgICAgIG92ZXJyaWRlc1xuICAgICAgICAgICAgICAgKGNvbmogcGF0aCBrKVxuICAgICAgICAgICAgICAgcm1hcFxuICAgICAgICAgICAgICAgKGxpc3QgJ21ldGhvZCBmb3JtIGspKSkpKSkpKVxuICAgICAgICBnc1xuICAgICAgICAoLT4+XG4gICAgICAgICAobWV0aG9kcyBAbW12YXIpXG4gICAgICAgICAocmVtb3ZlIChmbiBbW2tdXSAoaW52YWxpZD8gaykpKVxuICAgICAgICAgKG1hcCBnZW4pXG4gICAgICAgICAocmVtb3ZlIG5pbD8pKV1cbiAgICAgICAod2hlbiAoZXZlcnk/IGlkZW50aXR5IGdzKSAoZ2VuL29uZS1vZiBncykpKSkpXG4gICAgKHdpdGgtZ2VuKiBbXyBnZm5dIChtdWx0aS1zcGVjLWltcGwgZm9ybSBtbXZhciByZXRhZyBnZm4pKVxuICAgIChkZXNjcmliZSpcbiAgICAgW19dXG4gICAgIChjbG9qdXJlLmNvcmUvc2VxdWVuY2VcbiAgICAgIChjbG9qdXJlLmNvcmUvc2VxXG4gICAgICAgKGNsb2p1cmUuY29yZS9jb25jYXRcbiAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0ICdjbGpzLnNwZWMuYWxwaGEvbXVsdGktc3BlYylcbiAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0IGZvcm0pXG4gICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCByZXRhZykpKSkpKSkpKVxuIn0gezpzeW0gY29uZm9ybSwgOm1ldGEgezpkb2MgIkdpdmVuIGEgc3BlYyBhbmQgYSB2YWx1ZSwgcmV0dXJucyA6Y2xqcy5zcGVjLmFscGhhL2ludmFsaWQgaWYgdmFsdWUgZG9lc1xuICBub3QgbWF0Y2ggc3BlYywgZWxzZSB0aGUgKHBvc3NpYmx5IGRlc3RydWN0dXJlZCkgdmFsdWUuIiwgOmFyZ2xpc3RzIChbc3BlYyB4XSl9LCA6c291cmNlICIoZGVmblxuIGNvbmZvcm1cbiBcIkdpdmVuIGEgc3BlYyBhbmQgYSB2YWx1ZSwgcmV0dXJucyA6Y2xqcy5zcGVjLmFscGhhL2ludmFsaWQgaWYgdmFsdWUgZG9lc1xcbiAgbm90IG1hdGNoIHNwZWMsIGVsc2UgdGhlIChwb3NzaWJseSBkZXN0cnVjdHVyZWQpIHZhbHVlLlwiXG4gW3NwZWMgeF1cbiAoY29uZm9ybSogKHNwZWNpemUgc3BlYykgeCkpXG4ifSB7OnN5bSBnZW4qLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NwZWMgb3ZlcnJpZGVzIHBhdGggcm1hcF0pfSwgOnByb3RvY29sIFNwZWN9IHs6c3ltIGZzcGVjLWltcGwsIDptZXRhIHs6ZG9jICJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJ2ZzcGVjJyIsIDphcmdsaXN0cyAoW2FyZ3NwZWMgYWZvcm0gcmV0c3BlYyByZm9ybSBmbnNwZWMgZmZvcm0gZ2ZuXSl9LCA6c291cmNlICIoZGVmblxuIGZzcGVjLWltcGxcbiBcIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnZnNwZWMnXCJcbiBbYXJnc3BlYyBhZm9ybSByZXRzcGVjIHJmb3JtIGZuc3BlYyBmZm9ybSBnZm5dXG4gKGxldFxuICBbc3BlY3MgezphcmdzIGFyZ3NwZWMsIDpyZXQgcmV0c3BlYywgOmZuIGZuc3BlY31dXG4gIChyZWlmeVxuICAgSUxvb2t1cFxuICAgKC1sb29rdXAgW3RoaXMga10gKGdldCBzcGVjcyBrKSlcbiAgICgtbG9va3VwIFtfIGsgbm90LWZvdW5kXSAoZ2V0IHNwZWNzIGsgbm90LWZvdW5kKSlcbiAgIFNwZWNpemVcbiAgIChzcGVjaXplKiBbc10gcylcbiAgIChzcGVjaXplKiBbcyBfXSBzKVxuICAgU3BlY1xuICAgKGNvbmZvcm0qXG4gICAgW18gZl1cbiAgICAoaWZcbiAgICAgKGlmbj8gZilcbiAgICAgKGlmXG4gICAgICAoaWRlbnRpY2FsPyBmICh2YWxpZGF0ZS1mbiBmIHNwZWNzICpmc3BlYy1pdGVyYXRpb25zKikpXG4gICAgICBmXG4gICAgICA6Y2xqcy5zcGVjLmFscGhhL2ludmFsaWQpXG4gICAgIDpjbGpzLnNwZWMuYWxwaGEvaW52YWxpZCkpXG4gICAodW5mb3JtKiBbXyBmXSBmKVxuICAgKGV4cGxhaW4qXG4gICAgW18gcGF0aCB2aWEgaW4gZl1cbiAgICAoaWZcbiAgICAgKGlmbj8gZilcbiAgICAgKGxldFxuICAgICAgW2FyZ3MgKHZhbGlkYXRlLWZuIGYgc3BlY3MgMTAwKV1cbiAgICAgIChpZlxuICAgICAgIChpZGVudGljYWw/IGYgYXJncylcbiAgICAgICBuaWxcbiAgICAgICAobGV0XG4gICAgICAgIFtyZXQgKHRyeSAoYXBwbHkgZiBhcmdzKSAoY2F0Y2gganMvRXJyb3IgdCB0KSldXG4gICAgICAgIChpZlxuICAgICAgICAgKGluc3RhbmNlPyBqcy9FcnJvciByZXQpXG4gICAgICAgICBbezpwYXRoIHBhdGgsXG4gICAgICAgICAgIDpwcmVkICcoYXBwbHkgZm4pLFxuICAgICAgICAgICA6dmFsIGFyZ3MsXG4gICAgICAgICAgIDpyZWFzb24gKC4tbWVzc2FnZSByZXQpLFxuICAgICAgICAgICA6dmlhIHZpYSxcbiAgICAgICAgICAgOmluIGlufV1cbiAgICAgICAgIChsZXRcbiAgICAgICAgICBbY3JldCAoZHQgcmV0c3BlYyByZXQgcmZvcm0pXVxuICAgICAgICAgIChpZlxuICAgICAgICAgICAoaW52YWxpZD8gY3JldClcbiAgICAgICAgICAgKGV4cGxhaW4tMSByZm9ybSByZXRzcGVjIChjb25qIHBhdGggOnJldCkgdmlhIGluIHJldClcbiAgICAgICAgICAgKHdoZW5cbiAgICAgICAgICAgIGZuc3BlY1xuICAgICAgICAgICAgKGxldFxuICAgICAgICAgICAgIFtjYXJncyAoY29uZm9ybSBhcmdzcGVjIGFyZ3MpXVxuICAgICAgICAgICAgIChleHBsYWluLTFcbiAgICAgICAgICAgICAgZmZvcm1cbiAgICAgICAgICAgICAgZm5zcGVjXG4gICAgICAgICAgICAgIChjb25qIHBhdGggOmZuKVxuICAgICAgICAgICAgICB2aWFcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgezphcmdzIGNhcmdzLCA6cmV0IGNyZXR9KSkpKSkpKSkpXG4gICAgIFt7OnBhdGggcGF0aCwgOnByZWQgJ2lmbj8sIDp2YWwgZiwgOnZpYSB2aWEsIDppbiBpbn1dKSlcbiAgIChnZW4qXG4gICAgW18gb3ZlcnJpZGVzIF8gX11cbiAgICAoaWZcbiAgICAgZ2ZuXG4gICAgIChnZm4pXG4gICAgIChnZW4vcmV0dXJuXG4gICAgICAoZm5cbiAgICAgICBbJiBhcmdzXVxuICAgICAgIChhc3NlcnRcbiAgICAgICAgKHB2YWxpZD8gYXJnc3BlYyBhcmdzKVxuICAgICAgICAod2l0aC1vdXQtc3RyIChleHBsYWluIGFyZ3NwZWMgYXJncykpKVxuICAgICAgIChnZW4vZ2VuZXJhdGUgKGdlbiByZXRzcGVjIG92ZXJyaWRlcykpKSkpKVxuICAgKHdpdGgtZ2VuKlxuICAgIFtfIGdmbl1cbiAgICAoZnNwZWMtaW1wbCBhcmdzcGVjIGFmb3JtIHJldHNwZWMgcmZvcm0gZm5zcGVjIGZmb3JtIGdmbikpXG4gICAoZGVzY3JpYmUqXG4gICAgW19dXG4gICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxuICAgICAoY2xvanVyZS5jb3JlL3NlcVxuICAgICAgKGNsb2p1cmUuY29yZS9jb25jYXRcbiAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgJ2NsanMuc3BlYy5hbHBoYS9mc3BlYylcbiAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgOmFyZ3MpXG4gICAgICAgKGNsb2p1cmUuY29yZS9saXN0IGFmb3JtKVxuICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCA6cmV0KVxuICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCByZm9ybSlcbiAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgOmZuKVxuICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCBmZm9ybSkpKSkpKSkpXG4ifSB7OnN5bSAqY29sbC1jaGVjay1saW1pdCosIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gKmNvbGwtY2hlY2stbGltaXQqXG4gXCJUaGUgbnVtYmVyIG9mIGl0ZW1zIHZhbGlkYXRlZCBpbiBhIGNvbGxlY3Rpb24gc3BlYydlZCB3aXRoICdldmVyeSdcIlxuIDEwMSlcbiJ9IHs6c3ltIGdldC1zcGVjLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBzcGVjIHJlZ2lzdGVyZWQgZm9yIGtleXdvcmQvc3ltYm9sL3ZhciBrLCBvciBuaWwuIiwgOmFyZ2xpc3RzIChba10pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtc3BlY1xuIFwiUmV0dXJucyBzcGVjIHJlZ2lzdGVyZWQgZm9yIGtleXdvcmQvc3ltYm9sL3ZhciBrLCBvciBuaWwuXCJcbiBba11cbiAoZ2V0IChyZWdpc3RyeSkgKGlmIChrZXl3b3JkPyBrKSBrICgtPnN5bSBrKSkpKVxuIn0gezpzeW0gZXZlcnktaW1wbCwgOm1ldGEgezpkb2MgIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnZXZlcnknLCAnZXZlcnkta3YnLCAnY29sbC1vZicgb3IgJ21hcC1vZiciLCA6YXJnbGlzdHMgW1tmb3JtIHByZWQgb3B0c10gW2Zvcm0gcHJlZCB7Y29uZm9ybS1pbnRvIDppbnRvLCBkZXNjcmliZS1mb3JtIDpjbGpzLnNwZWMuYWxwaGEvZGVzY3JpYmUsIDprZXlzIFtraW5kIDpjbGpzLnNwZWMuYWxwaGEva2luZC1mb3JtIGNvdW50IG1heC1jb3VudCBtaW4tY291bnQgZGlzdGluY3QgZ2VuLW1heCA6Y2xqcy5zcGVjLmFscGhhL2tmbiA6Y2xqcy5zcGVjLmFscGhhL2NwcmVkIGNvbmZvcm0ta2V5cyA6Y2xqcy5zcGVjLmFscGhhL2NvbmZvcm0tYWxsXSwgOm9yIHtnZW4tbWF4IDIwfSwgOmFzIG9wdHN9IGdmbl1dfSwgOnNvdXJjZSAiKGRlZm5cbiBldmVyeS1pbXBsXG4gXCJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJ2V2ZXJ5JywgJ2V2ZXJ5LWt2JywgJ2NvbGwtb2YnIG9yICdtYXAtb2YnXCJcbiAoW2Zvcm0gcHJlZCBvcHRzXSAoZXZlcnktaW1wbCBmb3JtIHByZWQgb3B0cyBuaWwpKVxuIChbZm9ybVxuICAgcHJlZFxuICAge2NvbmZvcm0taW50byA6aW50byxcbiAgICBkZXNjcmliZS1mb3JtIDpjbGpzLnNwZWMuYWxwaGEvZGVzY3JpYmUsXG4gICAgOmtleXNcbiAgICBba2luZFxuICAgICA6Y2xqcy5zcGVjLmFscGhhL2tpbmQtZm9ybVxuICAgICBjb3VudFxuICAgICBtYXgtY291bnRcbiAgICAgbWluLWNvdW50XG4gICAgIGRpc3RpbmN0XG4gICAgIGdlbi1tYXhcbiAgICAgOmNsanMuc3BlYy5hbHBoYS9rZm5cbiAgICAgOmNsanMuc3BlYy5hbHBoYS9jcHJlZFxuICAgICBjb25mb3JtLWtleXNcbiAgICAgOmNsanMuc3BlYy5hbHBoYS9jb25mb3JtLWFsbF0sXG4gICAgOm9yIHtnZW4tbWF4IDIwfSxcbiAgICA6YXMgb3B0c31cbiAgIGdmbl1cbiAgKGxldFxuICAgW2dlbi1pbnRvXG4gICAgKGlmIGNvbmZvcm0taW50byAoZW1wdHkgY29uZm9ybS1pbnRvKSAoZ2V0IGVtcHR5LWNvbGwga2luZC1mb3JtKSlcbiAgICBzcGVjXG4gICAgKGRlbGF5IChzcGVjaXplIHByZWQpKVxuICAgIGNoZWNrP1xuICAgIChmbiogW3AxX180NTMxOSNdICh2YWxpZD8gQHNwZWMgcDFfXzQ1MzE5IykpXG4gICAga2ZuXG4gICAgKGMvb3Iga2ZuIChmbiBbaSB2XSBpKSlcbiAgICBhZGRjdlxuICAgIChmbiBbcmV0IGkgdiBjdl0gKGNvbmogcmV0IGN2KSlcbiAgICBjZm5zXG4gICAgKGZuXG4gICAgIFt4XVxuICAgICAoY29uZFxuICAgICAgKGMvYW5kXG4gICAgICAgKHZlY3Rvcj8geClcbiAgICAgICAoYy9vciAobm90IGNvbmZvcm0taW50bykgKHZlY3Rvcj8gY29uZm9ybS1pbnRvKSkpXG4gICAgICBbaWRlbnRpdHlcbiAgICAgICAoZm4gW3JldCBpIHYgY3ZdIChpZiAoaWRlbnRpY2FsPyB2IGN2KSByZXQgKGFzc29jIHJldCBpIGN2KSkpXG4gICAgICAgaWRlbnRpdHldXG4gICAgICAoYy9hbmRcbiAgICAgICAobWFwPyB4KVxuICAgICAgIChjL29yIChjL2FuZCBraW5kIChub3QgY29uZm9ybS1pbnRvKSkgKG1hcD8gY29uZm9ybS1pbnRvKSkpXG4gICAgICBbKGlmIGNvbmZvcm0ta2V5cyBlbXB0eSBpZGVudGl0eSlcbiAgICAgICAoZm5cbiAgICAgICAgW3JldCBpIHYgY3ZdXG4gICAgICAgIChpZlxuICAgICAgICAgKGMvYW5kIChpZGVudGljYWw/IHYgY3YpIChub3QgY29uZm9ybS1rZXlzKSlcbiAgICAgICAgIHJldFxuICAgICAgICAgKGFzc29jIHJldCAobnRoIChpZiBjb25mb3JtLWtleXMgY3YgdikgMCkgKG50aCBjdiAxKSkpKVxuICAgICAgIGlkZW50aXR5XVxuICAgICAgKGMvb3JcbiAgICAgICAobGlzdD8gY29uZm9ybS1pbnRvKVxuICAgICAgIChzZXE/IGNvbmZvcm0taW50bylcbiAgICAgICAoYy9hbmQgKG5vdCBjb25mb3JtLWludG8pIChjL29yIChsaXN0PyB4KSAoc2VxPyB4KSkpKVxuICAgICAgW2VtcHR5IGFkZGN2IHJldmVyc2VdXG4gICAgICA6ZWxzZVxuICAgICAgWyhmbiogW3AxX180NTMyMCNdIChlbXB0eSAoYy9vciBjb25mb3JtLWludG8gcDFfXzQ1MzIwIykpKVxuICAgICAgIGFkZGN2XG4gICAgICAgaWRlbnRpdHldKSldXG4gICAocmVpZnlcbiAgICBTcGVjaXplXG4gICAgKHNwZWNpemUqIFtzXSBzKVxuICAgIChzcGVjaXplKiBbcyBfXSBzKVxuICAgIFNwZWNcbiAgICAoY29uZm9ybSpcbiAgICAgW18geF1cbiAgICAgKGxldFxuICAgICAgW3NwZWMgQHNwZWNdXG4gICAgICAoY29uZFxuICAgICAgIChub3QgKGNwcmVkIHgpKVxuICAgICAgIDpjbGpzLnNwZWMuYWxwaGEvaW52YWxpZFxuICAgICAgIGNvbmZvcm0tYWxsXG4gICAgICAgKGxldFxuICAgICAgICBbW2luaXQgYWRkIGNvbXBsZXRlXSAoY2ZucyB4KV1cbiAgICAgICAgKGxvb3BcbiAgICAgICAgIFtyZXQgKGluaXQgeCkgaSAwIFt2ICYgdnMgOmFzIHZzZXFdIChzZXEgeCldXG4gICAgICAgICAoaWZcbiAgICAgICAgICB2c2VxXG4gICAgICAgICAgKGxldFxuICAgICAgICAgICBbY3YgKGNvbmZvcm0qIHNwZWMgdildXG4gICAgICAgICAgIChpZlxuICAgICAgICAgICAgKGludmFsaWQ/IGN2KVxuICAgICAgICAgICAgOmNsanMuc3BlYy5hbHBoYS9pbnZhbGlkXG4gICAgICAgICAgICAocmVjdXIgKGFkZCByZXQgaSB2IGN2KSAoaW5jIGkpIHZzKSkpXG4gICAgICAgICAgKGNvbXBsZXRlIHJldCkpKSlcbiAgICAgICA6ZWxzZVxuICAgICAgIChpZlxuICAgICAgICAoaW5kZXhlZD8geClcbiAgICAgICAgKGxldFxuICAgICAgICAgW3N0ZXAgKG1heCAxIChsb25nICgvIChjL2NvdW50IHgpICpjb2xsLWNoZWNrLWxpbWl0KikpKV1cbiAgICAgICAgIChsb29wXG4gICAgICAgICAgW2kgMF1cbiAgICAgICAgICAoaWZcbiAgICAgICAgICAgKD49IGkgKGMvY291bnQgeCkpXG4gICAgICAgICAgIHhcbiAgICAgICAgICAgKGlmXG4gICAgICAgICAgICAodmFsaWQ/IHNwZWMgKG50aCB4IGkpKVxuICAgICAgICAgICAgKHJlY3VyIChjLysgaSBzdGVwKSlcbiAgICAgICAgICAgIDpjbGpzLnNwZWMuYWxwaGEvaW52YWxpZCkpKSlcbiAgICAgICAgKGxldFxuICAgICAgICAgW2xpbWl0ICpjb2xsLWNoZWNrLWxpbWl0Kl1cbiAgICAgICAgIChsb29wXG4gICAgICAgICAgW2kgMCBbdiAmIHZzIDphcyB2c2VxXSAoc2VxIHgpXVxuICAgICAgICAgIChjb25kXG4gICAgICAgICAgIChjL29yIChuaWw/IHZzZXEpICg9IGkgbGltaXQpKVxuICAgICAgICAgICB4XG4gICAgICAgICAgICh2YWxpZD8gc3BlYyB2KVxuICAgICAgICAgICAocmVjdXIgKGluYyBpKSB2cylcbiAgICAgICAgICAgOmVsc2VcbiAgICAgICAgICAgOmNsanMuc3BlYy5hbHBoYS9pbnZhbGlkKSkpKSkpKVxuICAgICh1bmZvcm0qXG4gICAgIFtfIHhdXG4gICAgIChpZlxuICAgICAgY29uZm9ybS1hbGxcbiAgICAgIChsZXRcbiAgICAgICBbc3BlYyBAc3BlYyBbaW5pdCBhZGQgY29tcGxldGVdIChjZm5zIHgpXVxuICAgICAgIChsb29wXG4gICAgICAgIFtyZXQgKGluaXQgeCkgaSAwIFt2ICYgdnMgOmFzIHZzZXFdIChzZXEgeCldXG4gICAgICAgIChpZlxuICAgICAgICAgKD49IGkgKGMvY291bnQgeCkpXG4gICAgICAgICAoY29tcGxldGUgcmV0KVxuICAgICAgICAgKHJlY3VyIChhZGQgcmV0IGkgdiAodW5mb3JtKiBzcGVjIHYpKSAoaW5jIGkpIHZzKSkpKVxuICAgICAgeCkpXG4gICAgKGV4cGxhaW4qXG4gICAgIFtfIHBhdGggdmlhIGluIHhdXG4gICAgIChjL29yXG4gICAgICAoY29sbC1wcm9iXG4gICAgICAgeFxuICAgICAgIGtpbmRcbiAgICAgICBraW5kLWZvcm1cbiAgICAgICBkaXN0aW5jdFxuICAgICAgIGNvdW50XG4gICAgICAgbWluLWNvdW50XG4gICAgICAgbWF4LWNvdW50XG4gICAgICAgcGF0aFxuICAgICAgIHZpYVxuICAgICAgIGluKVxuICAgICAgKGFwcGx5XG4gICAgICAgY29uY2F0XG4gICAgICAgKChpZiBjb25mb3JtLWFsbCBpZGVudGl0eSAocGFydGlhbCB0YWtlICpjb2xsLWVycm9yLWxpbWl0KikpXG4gICAgICAgIChrZWVwXG4gICAgICAgICBpZGVudGl0eVxuICAgICAgICAgKG1hcFxuICAgICAgICAgIChmblxuICAgICAgICAgICBbaSB2XVxuICAgICAgICAgICAobGV0XG4gICAgICAgICAgICBbayAoa2ZuIGkgdildXG4gICAgICAgICAgICAod2hlbi1ub3RcbiAgICAgICAgICAgICAoY2hlY2s/IHYpXG4gICAgICAgICAgICAgKGxldFxuICAgICAgICAgICAgICBbcHJvYiAoZXhwbGFpbi0xIGZvcm0gcHJlZCBwYXRoIHZpYSAoY29uaiBpbiBrKSB2KV1cbiAgICAgICAgICAgICAgcHJvYikpKSlcbiAgICAgICAgICAocmFuZ2UpXG4gICAgICAgICAgeCkpKSkpKVxuICAgIChnZW4qXG4gICAgIFtfIG92ZXJyaWRlcyBwYXRoIHJtYXBdXG4gICAgIChpZlxuICAgICAgZ2ZuXG4gICAgICAoZ2ZuKVxuICAgICAgKGxldFxuICAgICAgIFtwZ2VuIChnZW5zdWIgcHJlZCBvdmVycmlkZXMgcGF0aCBybWFwIGZvcm0pXVxuICAgICAgIChnZW4vYmluZFxuICAgICAgICAoY29uZFxuICAgICAgICAgZ2VuLWludG9cbiAgICAgICAgIChnZW4vcmV0dXJuIGdlbi1pbnRvKVxuICAgICAgICAga2luZFxuICAgICAgICAgKGdlbi9mbWFwXG4gICAgICAgICAgKGZuKlxuICAgICAgICAgICBbcDFfXzQ1MzIxI11cbiAgICAgICAgICAgKGlmIChlbXB0eT8gcDFfXzQ1MzIxIykgcDFfXzQ1MzIxIyAoZW1wdHkgcDFfXzQ1MzIxIykpKVxuICAgICAgICAgIChnZW5zdWIga2luZCBvdmVycmlkZXMgcGF0aCBybWFwIGZvcm0pKVxuICAgICAgICAgOmVsc2VcbiAgICAgICAgIChnZW4vcmV0dXJuIFtdKSlcbiAgICAgICAgKGZuXG4gICAgICAgICBbaW5pdF1cbiAgICAgICAgIChnZW4vZm1hcFxuICAgICAgICAgIChmbipcbiAgICAgICAgICAgW3AxX180NTMyMiNdXG4gICAgICAgICAgIChpZiAodmVjdG9yPyBpbml0KSBwMV9fNDUzMjIjIChpbnRvIGluaXQgcDFfXzQ1MzIyIykpKVxuICAgICAgICAgIChjb25kXG4gICAgICAgICAgIGRpc3RpbmN0XG4gICAgICAgICAgIChpZlxuICAgICAgICAgICAgY291bnRcbiAgICAgICAgICAgIChnZW4vdmVjdG9yLWRpc3RpbmN0XG4gICAgICAgICAgICAgcGdlblxuICAgICAgICAgICAgIHs6bnVtLWVsZW1lbnRzIGNvdW50LCA6bWF4LXRyaWVzIDEwMH0pXG4gICAgICAgICAgICAoZ2VuL3ZlY3Rvci1kaXN0aW5jdFxuICAgICAgICAgICAgIHBnZW5cbiAgICAgICAgICAgICB7Om1pbi1lbGVtZW50cyAoYy9vciBtaW4tY291bnQgMCksXG4gICAgICAgICAgICAgIDptYXgtZWxlbWVudHNcbiAgICAgICAgICAgICAgKGMvb3JcbiAgICAgICAgICAgICAgIG1heC1jb3VudFxuICAgICAgICAgICAgICAgKG1heCBnZW4tbWF4IChjLyogMiAoYy9vciBtaW4tY291bnQgMCkpKSksXG4gICAgICAgICAgICAgIDptYXgtdHJpZXMgMTAwfSkpXG4gICAgICAgICAgIGNvdW50XG4gICAgICAgICAgIChnZW4vdmVjdG9yIHBnZW4gY291bnQpXG4gICAgICAgICAgIChjL29yIG1pbi1jb3VudCBtYXgtY291bnQpXG4gICAgICAgICAgIChnZW4vdmVjdG9yXG4gICAgICAgICAgICBwZ2VuXG4gICAgICAgICAgICAoYy9vciBtaW4tY291bnQgMClcbiAgICAgICAgICAgIChjL29yIG1heC1jb3VudCAobWF4IGdlbi1tYXggKGMvKiAyIChjL29yIG1pbi1jb3VudCAwKSkpKSlcbiAgICAgICAgICAgOmVsc2VcbiAgICAgICAgICAgKGdlbi92ZWN0b3IgcGdlbiAwIGdlbi1tYXgpKSkpKSkpKVxuICAgICh3aXRoLWdlbiogW18gZ2ZuXSAoZXZlcnktaW1wbCBmb3JtIHByZWQgb3B0cyBnZm4pKVxuICAgIChkZXNjcmliZSpcbiAgICAgW19dXG4gICAgIChjL29yXG4gICAgICBkZXNjcmliZS1mb3JtXG4gICAgICAoY2xvanVyZS5jb3JlL3NlcXVlbmNlXG4gICAgICAgKGNsb2p1cmUuY29yZS9zZXFcbiAgICAgICAgKGNsb2p1cmUuY29yZS9jb25jYXRcbiAgICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCAnY2xqcy5zcGVjLmFscGhhL2V2ZXJ5KVxuICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0IChzL21yZXMgZm9ybSkpXG4gICAgICAgICAobWFwY2F0IGlkZW50aXR5IG9wdHMpKSkpKSkpKSkpXG4ifSB7OnN5bSBzcGVjLWltcGwsIDptZXRhIHs6ZG9jICJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJ3NwZWMnIiwgOmFyZ2xpc3RzIFtbZm9ybSBwcmVkIGdmbiBjcHJlZD9dIFtmb3JtIHByZWQgZ2ZuIGNwcmVkPyB1bmNdXX0sIDpzb3VyY2UgIihkZWZuXG4gc3BlYy1pbXBsXG4gXCJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJ3NwZWMnXCJcbiAoW2Zvcm0gcHJlZCBnZm4gY3ByZWQ/XSAoc3BlYy1pbXBsIGZvcm0gcHJlZCBnZm4gY3ByZWQ/IG5pbCkpXG4gKFtmb3JtIHByZWQgZ2ZuIGNwcmVkPyB1bmNdXG4gIChjb25kXG4gICAoc3BlYz8gcHJlZClcbiAgIChjb25kLT4gcHJlZCBnZm4gKHdpdGgtZ2VuIGdmbikpXG4gICAocmVnZXg/IHByZWQpXG4gICAocmVnZXgtc3BlYy1pbXBsIHByZWQgZ2ZuKVxuICAgKGlkZW50PyBwcmVkKVxuICAgKGNvbmQtPiAodGhlLXNwZWMgcHJlZCkgZ2ZuICh3aXRoLWdlbiBnZm4pKVxuICAgOmVsc2VcbiAgIChyZWlmeVxuICAgIFNwZWNpemVcbiAgICAoc3BlY2l6ZSogW3NdIHMpXG4gICAgKHNwZWNpemUqIFtzIF9dIHMpXG4gICAgU3BlY1xuICAgIChjb25mb3JtKlxuICAgICBbXyB4XVxuICAgICAobGV0XG4gICAgICBbcmV0IChwcmVkIHgpXVxuICAgICAgKGlmIGNwcmVkPyByZXQgKGlmIHJldCB4IDpjbGpzLnNwZWMuYWxwaGEvaW52YWxpZCkpKSlcbiAgICAodW5mb3JtKlxuICAgICBbXyB4XVxuICAgICAoaWZcbiAgICAgIGNwcmVkP1xuICAgICAgKGlmIHVuYyAodW5jIHgpICh0aHJvdyAoanMvRXJyb3IuIFwibm8gdW5mb3JtIGZuIGZvciBjb25mb3JtZXJcIikpKVxuICAgICAgeCkpXG4gICAgKGV4cGxhaW4qXG4gICAgIFtfIHBhdGggdmlhIGluIHhdXG4gICAgICh3aGVuXG4gICAgICAoaW52YWxpZD8gKGR0IHByZWQgeCBmb3JtIGNwcmVkPykpXG4gICAgICBbezpwYXRoIHBhdGgsIDpwcmVkIGZvcm0sIDp2YWwgeCwgOnZpYSB2aWEsIDppbiBpbn1dKSlcbiAgICAoZ2VuKiBbXyBfIF8gX10gKGlmIGdmbiAoZ2ZuKSAoZ2VuL2dlbi1mb3ItcHJlZCBwcmVkKSkpXG4gICAgKHdpdGgtZ2VuKiBbXyBnZm5dIChzcGVjLWltcGwgZm9ybSBwcmVkIGdmbiBjcHJlZD8gdW5jKSlcbiAgICAoZGVzY3JpYmUqIFtfXSBmb3JtKSkpKSlcbiJ9IHs6c3ltIGludmFsaWQ/LCA6bWV0YSB7OmRvYyAidGVzdHMgdGhlIHZhbGlkaXR5IG9mIGEgY29uZm9ybSByZXR1cm4gdmFsdWUiLCA6YXJnbGlzdHMgKFtyZXRdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW52YWxpZD9cbiBcInRlc3RzIHRoZSB2YWxpZGl0eSBvZiBhIGNvbmZvcm0gcmV0dXJuIHZhbHVlXCJcbiBbcmV0XVxuIChrZXl3b3JkLWlkZW50aWNhbD8gOmNsanMuc3BlYy5hbHBoYS9pbnZhbGlkIHJldCkpXG4ifSB7OnN5bSBhbXAtaW1wbCwgOm1ldGEgezpkb2MgIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnJiciLCA6YXJnbGlzdHMgKFtyZSByZS1mb3JtIHByZWRzIHByZWQtZm9ybXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gYW1wLWltcGxcbiBcIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnJidcIlxuIFtyZSByZS1mb3JtIHByZWRzIHByZWQtZm9ybXNdXG4gezpjbGpzLnNwZWMuYWxwaGEvb3AgOmNsanMuc3BlYy5hbHBoYS9hbXAsXG4gIDpwMSByZSxcbiAgOmFtcCByZS1mb3JtLFxuICA6cHMgcHJlZHMsXG4gIDpmb3JtcyBwcmVkLWZvcm1zfSlcbiJ9IHs6c3ltIGNhdC1pbXBsLCA6bWV0YSB7OmRvYyAiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdjYXQnIiwgOmFyZ2xpc3RzIChba3MgcHMgZm9ybXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gY2F0LWltcGxcbiBcIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnY2F0J1wiXG4gW2tzIHBzIGZvcm1zXVxuIChwY2F0KiB7OmtzIGtzLCA6cHMgcHMsIDpmb3JtcyBmb3JtcywgOnJldCB7fX0pKVxuIn0gezpzeW0gZXhwbGFpbi1zdHIsIDptZXRhIHs6ZG9jICJHaXZlbiBhIHNwZWMgYW5kIGEgdmFsdWUgdGhhdCBmYWlscyB0byBjb25mb3JtLCByZXR1cm5zIGFuIGV4cGxhbmF0aW9uIGFzIGEgc3RyaW5nLiIsIDphcmdsaXN0cyAoW3NwZWMgeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBleHBsYWluLXN0clxuIFwiR2l2ZW4gYSBzcGVjIGFuZCBhIHZhbHVlIHRoYXQgZmFpbHMgdG8gY29uZm9ybSwgcmV0dXJucyBhbiBleHBsYW5hdGlvbiBhcyBhIHN0cmluZy5cIlxuIFtzcGVjIHhdXG4gKHdpdGgtb3V0LXN0ciAoZXhwbGFpbiBzcGVjIHgpKSlcbiJ9IHs6c3ltICpjb21waWxlLWFzc2VydHMqLCA6bWV0YSB7OmRvYyAiSWYgdHJ1ZSwgY29tcGlsZXIgd2lsbCBlbmFibGUgc3BlYyBhc3NlcnRzLCB3aGljaCBhcmUgdGhlblxuc3ViamVjdCB0byBydW50aW1lIGNvbnRyb2wgdmlhIGNoZWNrLWFzc2VydHM/IElmIGZhbHNlLCBjb21waWxlclxud2lsbCBlbGltaW5hdGUgYWxsIHNwZWMgYXNzZXJ0IG92ZXJoZWFkLiBTZWUgJ2Fzc2VydCcuXG5Jbml0aWFsbHkgc2V0IHRvIHRoZSBuZWdhdGlvbiBvZiB0aGUgJzplbGlkZS1hc3NlcnRzJyBjb21waWxlciBvcHRpb24uXG5EZWZhdWx0cyB0byB0cnVlLiJ9LCA6c291cmNlICIoZGVmb25jZSAqY29tcGlsZS1hc3NlcnRzKiAocy9pbml0LWNvbXBpbGUtYXNzZXJ0cykpXG4ifSB7OnN5bSB3aXRoLWdlbiwgOm1ldGEgezpkb2MgIlRha2VzIGEgc3BlYyBhbmQgYSBuby1hcmcsIGdlbmVyYXRvci1yZXR1cm5pbmcgZm4gYW5kIHJldHVybnMgYSB2ZXJzaW9uIG9mIHRoYXQgc3BlYyB0aGF0IHVzZXMgdGhhdCBnZW5lcmF0b3IiLCA6YXJnbGlzdHMgKFtzcGVjIGdlbi1mbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiB3aXRoLWdlblxuIFwiVGFrZXMgYSBzcGVjIGFuZCBhIG5vLWFyZywgZ2VuZXJhdG9yLXJldHVybmluZyBmbiBhbmQgcmV0dXJucyBhIHZlcnNpb24gb2YgdGhhdCBzcGVjIHRoYXQgdXNlcyB0aGF0IGdlbmVyYXRvclwiXG4gW3NwZWMgZ2VuLWZuXVxuIChsZXRcbiAgW3NwZWMgKHJlZy1yZXNvbHZlIHNwZWMpXVxuICAoaWZcbiAgIChyZWdleD8gc3BlYylcbiAgIChhc3NvYyBzcGVjIDpjbGpzLnNwZWMuYWxwaGEvZ2ZuIGdlbi1mbilcbiAgICh3aXRoLWdlbiogKHNwZWNpemUgc3BlYykgZ2VuLWZuKSkpKVxuIn0gezpzeW0gY29uZm9ybSosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3BlYyB4XSl9LCA6cHJvdG9jb2wgU3BlY30gezpzeW0gY2hlY2stYXNzZXJ0cz8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSB2YWx1ZSBzZXQgYnkgY2hlY2stYXNzZXJ0cy4iLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gY2hlY2stYXNzZXJ0cz9cbiBcIlJldHVybnMgdGhlIHZhbHVlIHNldCBieSBjaGVjay1hc3NlcnRzLlwiXG4gW11cbiAqcnVudGltZS1hc3NlcnRzKilcbiJ9IHs6c3ltIHJlcC1pbXBsLCA6bWV0YSB7OmRvYyAiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICcqJyIsIDphcmdsaXN0cyAoW2Zvcm0gcF0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZXAtaW1wbFxuIFwiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICcqJ1wiXG4gW2Zvcm0gcF1cbiAocmVwKiBwIHAgW10gZmFsc2UgZm9ybSkpXG4ifSB7OnN5bSBkZXNjcmliZSwgOm1ldGEgezpkb2MgInJldHVybnMgYW4gYWJicmV2aWF0ZWQgZGVzY3JpcHRpb24gb2YgdGhlIHNwZWMgYXMgZGF0YSIsIDphcmdsaXN0cyAoW3NwZWNdKX0sIDpzb3VyY2UgIihkZWZuXG4gZGVzY3JpYmVcbiBcInJldHVybnMgYW4gYWJicmV2aWF0ZWQgZGVzY3JpcHRpb24gb2YgdGhlIHNwZWMgYXMgZGF0YVwiXG4gW3NwZWNdXG4gKGFiYnJldiAoZm9ybSBzcGVjKSkpXG4ifSB7OnN5bSBleHBsYWluLW91dCwgOm1ldGEgezpkb2MgIlByaW50cyBleHBsYW5hdGlvbiBkYXRhIChwZXIgJ2V4cGxhaW4tZGF0YScpIHRvICpvdXQqIHVzaW5nIHRoZSBwcmludGVyIGluICpleHBsYWluLW91dCosXG4gICAgYnkgZGVmYXVsdCBleHBsYWluLXByaW50ZXIuIiwgOmFyZ2xpc3RzIChbZWRdKX0sIDpzb3VyY2UgIihkZWZuXG4gZXhwbGFpbi1vdXRcbiBcIlByaW50cyBleHBsYW5hdGlvbiBkYXRhIChwZXIgJ2V4cGxhaW4tZGF0YScpIHRvICpvdXQqIHVzaW5nIHRoZSBwcmludGVyIGluICpleHBsYWluLW91dCosXFxuICAgIGJ5IGRlZmF1bHQgZXhwbGFpbi1wcmludGVyLlwiXG4gW2VkXVxuICgqZXhwbGFpbi1vdXQqIGVkKSlcbiJ9IHs6c3ltIHNwZWNpemUqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW19dIFtfIGZvcm1dKX0sIDpwcm90b2NvbCBTcGVjaXplfSB7OnN5bSBtYXliZS1pbXBsLCA6bWV0YSB7OmRvYyAiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICc/JyIsIDphcmdsaXN0cyAoW3AgZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtYXliZS1pbXBsXG4gXCJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJz8nXCJcbiBbcCBmb3JtXVxuIChhc3NvY1xuICAoYWx0KlxuICAgW3AgKGFjY2VwdCA6Y2xqcy5zcGVjLmFscGhhL25pbCldXG4gICBuaWxcbiAgIFtmb3JtIDpjbGpzLnNwZWMuYWxwaGEvbmlsXSlcbiAgOm1heWJlXG4gIGZvcm0pKVxuIn0gezpzeW0gZXhwbGFpbiosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3BlYyBwYXRoIHZpYSBpbiB4XSl9LCA6cHJvdG9jb2wgU3BlY30pLCBjbGpzLnJlYWRlciAoezpzeW0gKmRlZmF1bHQtZGF0YS1yZWFkZXItZm4qLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqZGVmYXVsdC1kYXRhLXJlYWRlci1mbiogKGF0b20gbmlsKSlcbiJ9IHs6c3ltIHJlYWQsIDptZXRhIHs6ZG9jICJSZWFkcyB0aGUgZmlyc3Qgb2JqZWN0IGZyb20gYW4gY2xqcy50b29scy5yZWFkZXIucmVhZGVyLXR5cGVzL0lQdXNoYmFja1JlYWRlci5cbiAgIFJldHVybnMgdGhlIG9iamVjdCByZWFkLiBJZiBFT0YsIHRocm93cyBpZiBlb2YtZXJyb3I/IGlzIHRydWUgb3RoZXJ3aXNlIHJldHVybnMgZW9mLlxuICAgSWYgbm8gcmVhZGVyIGlzIHByb3ZpZGVkLCAqaW4qIHdpbGwgYmUgdXNlZC5cblxuICAgUmVhZHMgZGF0YSBpbiB0aGUgZWRuIGZvcm1hdCAoc3Vic2V0IG9mIENsb2p1cmUgZGF0YSk6XG4gICBodHRwOi8vZWRuLWZvcm1hdC5vcmdcblxuICAgY2xqcy50b29scy5yZWFkZXIuZWRuL3JlYWQgZG9lc24ndCBkZXBlbmQgb24gZHluYW1pYyBWYXJzLCBhbGwgY29uZmlndXJhdGlvblxuICAgaXMgZG9uZSBieSBwYXNzaW5nIGFuIG9wdCBtYXAuXG5cbiAgIG9wdHMgaXMgYSBtYXAgdGhhdCBjYW4gaW5jbHVkZSB0aGUgZm9sbG93aW5nIGtleXM6XG4gICA6ZW9mIC0gdmFsdWUgdG8gcmV0dXJuIG9uIGVuZC1vZi1maWxlLiBXaGVuIG5vdCBzdXBwbGllZCwgZW9mIHRocm93cyBhbiBleGNlcHRpb24uXG4gICA6cmVhZGVycyAgLSBhIG1hcCBvZiB0YWcgc3ltYm9scyB0byBkYXRhLXJlYWRlciBmdW5jdGlvbnMgdG8gYmUgY29uc2lkZXJlZCBiZWZvcmUgZGVmYXVsdC1kYXRhLXJlYWRlcnMuXG4gICAgICAgICAgICAgIFdoZW4gbm90IHN1cHBsaWVkLCBvbmx5IHRoZSBkZWZhdWx0LWRhdGEtcmVhZGVycyB3aWxsIGJlIHVzZWQuXG4gICA6ZGVmYXVsdCAtIEEgZnVuY3Rpb24gb2YgdHdvIGFyZ3MsIHRoYXQgd2lsbCwgaWYgcHJlc2VudCBhbmQgbm8gcmVhZGVyIGlzIGZvdW5kIGZvciBhIHRhZyxcbiAgICAgICAgICAgICAgYmUgY2FsbGVkIHdpdGggdGhlIHRhZyBhbmQgdGhlIHZhbHVlLiIsIDphcmdsaXN0cyBbW3JlYWRlcl0gW3s6a2V5cyBbZW9mXSwgOmFzIG9wdHN9IHJlYWRlcl0gW3JlYWRlciBlb2YtZXJyb3I/IGVvZiBvcHRzXV19LCA6c291cmNlICIoZGVmblxuIHJlYWRcbiBcIlJlYWRzIHRoZSBmaXJzdCBvYmplY3QgZnJvbSBhbiBjbGpzLnRvb2xzLnJlYWRlci5yZWFkZXItdHlwZXMvSVB1c2hiYWNrUmVhZGVyLlxcbiAgIFJldHVybnMgdGhlIG9iamVjdCByZWFkLiBJZiBFT0YsIHRocm93cyBpZiBlb2YtZXJyb3I/IGlzIHRydWUgb3RoZXJ3aXNlIHJldHVybnMgZW9mLlxcbiAgIElmIG5vIHJlYWRlciBpcyBwcm92aWRlZCwgKmluKiB3aWxsIGJlIHVzZWQuXFxuXFxuICAgUmVhZHMgZGF0YSBpbiB0aGUgZWRuIGZvcm1hdCAoc3Vic2V0IG9mIENsb2p1cmUgZGF0YSk6XFxuICAgaHR0cDovL2Vkbi1mb3JtYXQub3JnXFxuXFxuICAgY2xqcy50b29scy5yZWFkZXIuZWRuL3JlYWQgZG9lc24ndCBkZXBlbmQgb24gZHluYW1pYyBWYXJzLCBhbGwgY29uZmlndXJhdGlvblxcbiAgIGlzIGRvbmUgYnkgcGFzc2luZyBhbiBvcHQgbWFwLlxcblxcbiAgIG9wdHMgaXMgYSBtYXAgdGhhdCBjYW4gaW5jbHVkZSB0aGUgZm9sbG93aW5nIGtleXM6XFxuICAgOmVvZiAtIHZhbHVlIHRvIHJldHVybiBvbiBlbmQtb2YtZmlsZS4gV2hlbiBub3Qgc3VwcGxpZWQsIGVvZiB0aHJvd3MgYW4gZXhjZXB0aW9uLlxcbiAgIDpyZWFkZXJzICAtIGEgbWFwIG9mIHRhZyBzeW1ib2xzIHRvIGRhdGEtcmVhZGVyIGZ1bmN0aW9ucyB0byBiZSBjb25zaWRlcmVkIGJlZm9yZSBkZWZhdWx0LWRhdGEtcmVhZGVycy5cXG4gICAgICAgICAgICAgIFdoZW4gbm90IHN1cHBsaWVkLCBvbmx5IHRoZSBkZWZhdWx0LWRhdGEtcmVhZGVycyB3aWxsIGJlIHVzZWQuXFxuICAgOmRlZmF1bHQgLSBBIGZ1bmN0aW9uIG9mIHR3byBhcmdzLCB0aGF0IHdpbGwsIGlmIHByZXNlbnQgYW5kIG5vIHJlYWRlciBpcyBmb3VuZCBmb3IgYSB0YWcsXFxuICAgICAgICAgICAgICBiZSBjYWxsZWQgd2l0aCB0aGUgdGFnIGFuZCB0aGUgdmFsdWUuXCJcbiAoW3JlYWRlcl1cbiAgKGVkbi9yZWFkXG4gICB7OnJlYWRlcnMgQCp0YWctdGFibGUqLFxuICAgIDpkZWZhdWx0IEAqZGVmYXVsdC1kYXRhLXJlYWRlci1mbiosXG4gICAgOmVvZiBuaWx9XG4gICByZWFkZXIpKVxuIChbezprZXlzIFtlb2ZdLCA6YXMgb3B0c30gcmVhZGVyXVxuICAoZWRuL3JlYWRcbiAgICh1cGRhdGVcbiAgICAobWVyZ2Ugb3B0cyB7OmRlZmF1bHQgQCpkZWZhdWx0LWRhdGEtcmVhZGVyLWZuKn0pXG4gICAgOnJlYWRlcnNcbiAgICAoZm4gW21dIChtZXJnZSBAKnRhZy10YWJsZSogbSkpKVxuICAgcmVhZGVyKSlcbiAoW3JlYWRlciBlb2YtZXJyb3I/IGVvZiBvcHRzXVxuICAoZWRuL3JlYWRcbiAgIHJlYWRlclxuICAgZW9mLWVycm9yP1xuICAgZW9mXG4gICAodXBkYXRlXG4gICAgKG1lcmdlIG9wdHMgezpkZWZhdWx0IEAqZGVmYXVsdC1kYXRhLXJlYWRlci1mbip9KVxuICAgIDpyZWFkZXJzXG4gICAgKGZuIFttXSAobWVyZ2UgQCp0YWctdGFibGUqIG0pKSkpKSlcbiJ9IHs6c3ltICp0YWctdGFibGUqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuICp0YWctdGFibGUqXG4gKGF0b21cbiAgKGFkZC1kYXRhLXJlYWRlcnNcbiAgIHsnaW5zdCByZWFkLWRhdGUsICd1dWlkIHJlYWQtdXVpZCwgJ3F1ZXVlIHJlYWQtcXVldWUsICdqcyByZWFkLWpzfSkpKVxuIn0gezpzeW0gcGFyc2UtYW5kLXZhbGlkYXRlLXRpbWVzdGFtcCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIHBhcnNlLWFuZC12YWxpZGF0ZS10aW1lc3RhbXBcbiBbc11cbiAobGV0XG4gIFtbX1xuICAgIHllYXJzXG4gICAgbW9udGhzXG4gICAgZGF5c1xuICAgIGhvdXJzXG4gICAgbWludXRlc1xuICAgIHNlY29uZHNcbiAgICBmcmFjdGlvblxuICAgIG9mZnNldC1zaWduXG4gICAgb2Zmc2V0LWhvdXJzXG4gICAgb2Zmc2V0LW1pbnV0ZXNcbiAgICA6YXNcbiAgICB2XVxuICAgKHJlLW1hdGNoZXMgdGltZXN0YW1wLXJlZ2V4IHMpXVxuICAoaWYtbm90XG4gICB2XG4gICAodGhyb3cgKGpzL0Vycm9yLiAoc3RyIFwiVW5yZWNvZ25pemVkIGRhdGUvdGltZSBzeW50YXg6IFwiIHMpKSlcbiAgIChsZXRcbiAgICBbeWVhcnNcbiAgICAgKHBhcnNlLWludCB5ZWFycylcbiAgICAgbW9udGhzXG4gICAgIChvciAocGFyc2UtaW50IG1vbnRocykgMSlcbiAgICAgZGF5c1xuICAgICAob3IgKHBhcnNlLWludCBkYXlzKSAxKVxuICAgICBob3Vyc1xuICAgICAob3IgKHBhcnNlLWludCBob3VycykgMClcbiAgICAgbWludXRlc1xuICAgICAob3IgKHBhcnNlLWludCBtaW51dGVzKSAwKVxuICAgICBzZWNvbmRzXG4gICAgIChvciAocGFyc2UtaW50IHNlY29uZHMpIDApXG4gICAgIGZyYWN0aW9uXG4gICAgIChvciAocGFyc2UtaW50ICh6ZXJvLWZpbGwtcmlnaHQtYW5kLXRydW5jYXRlIGZyYWN0aW9uIDMpKSAwKVxuICAgICBvZmZzZXQtc2lnblxuICAgICAoaWYgKD0gb2Zmc2V0LXNpZ24gXCItXCIpIC0xIDEpXG4gICAgIG9mZnNldC1ob3Vyc1xuICAgICAob3IgKHBhcnNlLWludCBvZmZzZXQtaG91cnMpIDApXG4gICAgIG9mZnNldC1taW51dGVzXG4gICAgIChvciAocGFyc2UtaW50IG9mZnNldC1taW51dGVzKSAwKVxuICAgICBvZmZzZXRcbiAgICAgKCogb2Zmc2V0LXNpZ24gKCsgKCogb2Zmc2V0LWhvdXJzIDYwKSBvZmZzZXQtbWludXRlcykpXVxuICAgIFt5ZWFyc1xuICAgICAoY2hlY2sgMSBtb250aHMgMTIgXCJ0aW1lc3RhbXAgbW9udGggZmllbGQgbXVzdCBiZSBpbiByYW5nZSAxLi4xMlwiKVxuICAgICAoY2hlY2tcbiAgICAgIDFcbiAgICAgIGRheXNcbiAgICAgIChkYXlzLWluLW1vbnRoIG1vbnRocyAobGVhcC15ZWFyPyB5ZWFycykpXG4gICAgICBcInRpbWVzdGFtcCBkYXkgZmllbGQgbXVzdCBiZSBpbiByYW5nZSAxLi5sYXN0IGRheSBpbiBtb250aFwiKVxuICAgICAoY2hlY2sgMCBob3VycyAyMyBcInRpbWVzdGFtcCBob3VyIGZpZWxkIG11c3QgYmUgaW4gcmFuZ2UgMC4uMjNcIilcbiAgICAgKGNoZWNrXG4gICAgICAwXG4gICAgICBtaW51dGVzXG4gICAgICA1OVxuICAgICAgXCJ0aW1lc3RhbXAgbWludXRlIGZpZWxkIG11c3QgYmUgaW4gcmFuZ2UgMC4uNTlcIilcbiAgICAgKGNoZWNrXG4gICAgICAwXG4gICAgICBzZWNvbmRzXG4gICAgICAoaWYgKD0gbWludXRlcyA1OSkgNjAgNTkpXG4gICAgICBcInRpbWVzdGFtcCBzZWNvbmQgZmllbGQgbXVzdCBiZSBpbiByYW5nZSAwLi42MFwiKVxuICAgICAoY2hlY2tcbiAgICAgIDBcbiAgICAgIGZyYWN0aW9uXG4gICAgICA5OTlcbiAgICAgIFwidGltZXN0YW1wIG1pbGxpc2Vjb25kIGZpZWxkIG11c3QgYmUgaW4gcmFuZ2UgMC4uOTk5XCIpXG4gICAgIG9mZnNldF0pKSkpXG4ifSB7OnN5bSByZWdpc3Rlci10YWctcGFyc2VyISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0YWcgZl0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWdpc3Rlci10YWctcGFyc2VyIVxuIFt0YWcgZl1cbiAobGV0XG4gIFtvbGQtcGFyc2VyIChnZXQgQCp0YWctdGFibGUqIHRhZyldXG4gIChzd2FwISAqdGFnLXRhYmxlKiBhc3NvYyB0YWcgZilcbiAgb2xkLXBhcnNlcikpXG4ifSB7OnN5bSByZWdpc3Rlci1kZWZhdWx0LXRhZy1wYXJzZXIhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2ZdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVnaXN0ZXItZGVmYXVsdC10YWctcGFyc2VyIVxuIFtmXVxuIChsZXRcbiAgW29sZC1wYXJzZXIgQCpkZWZhdWx0LWRhdGEtcmVhZGVyLWZuKl1cbiAgKHN3YXAhICpkZWZhdWx0LWRhdGEtcmVhZGVyLWZuKiAoZm4gW19dIGYpKVxuICBvbGQtcGFyc2VyKSlcbiJ9IHs6c3ltIGRlcmVnaXN0ZXItZGVmYXVsdC10YWctcGFyc2VyISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gZGVyZWdpc3Rlci1kZWZhdWx0LXRhZy1wYXJzZXIhXG4gW11cbiAobGV0XG4gIFtvbGQtcGFyc2VyIEAqZGVmYXVsdC1kYXRhLXJlYWRlci1mbipdXG4gIChzd2FwISAqZGVmYXVsdC1kYXRhLXJlYWRlci1mbiogKGZuIFtfXSBuaWwpKVxuICBvbGQtcGFyc2VyKSlcbiJ9IHs6c3ltIHJlYWQtc3RyaW5nLCA6bWV0YSB7OmRvYyAiUmVhZHMgb25lIG9iamVjdCBmcm9tIHRoZSBzdHJpbmcgcy5cbiAgIFJldHVybnMgbmlsIHdoZW4gcyBpcyBuaWwgb3IgZW1wdHkuXG5cbiAgIFJlYWRzIGRhdGEgaW4gdGhlIGVkbiBmb3JtYXQgKHN1YnNldCBvZiBDbG9qdXJlIGRhdGEpOlxuICAgaHR0cDovL2Vkbi1mb3JtYXQub3JnXG5cbiAgIG9wdHMgaXMgYSBtYXAgYXMgcGVyIGNsanMudG9vbHMucmVhZGVyLmVkbi9yZWFkIiwgOmFyZ2xpc3RzIFtbc10gW29wdHMgc11dfSwgOnNvdXJjZSAiKGRlZm5cbiByZWFkLXN0cmluZ1xuIFwiUmVhZHMgb25lIG9iamVjdCBmcm9tIHRoZSBzdHJpbmcgcy5cXG4gICBSZXR1cm5zIG5pbCB3aGVuIHMgaXMgbmlsIG9yIGVtcHR5LlxcblxcbiAgIFJlYWRzIGRhdGEgaW4gdGhlIGVkbiBmb3JtYXQgKHN1YnNldCBvZiBDbG9qdXJlIGRhdGEpOlxcbiAgIGh0dHA6Ly9lZG4tZm9ybWF0Lm9yZ1xcblxcbiAgIG9wdHMgaXMgYSBtYXAgYXMgcGVyIGNsanMudG9vbHMucmVhZGVyLmVkbi9yZWFkXCJcbiAoW3NdXG4gIChlZG4vcmVhZC1zdHJpbmdcbiAgIHs6cmVhZGVycyBAKnRhZy10YWJsZSosXG4gICAgOmRlZmF1bHQgQCpkZWZhdWx0LWRhdGEtcmVhZGVyLWZuKixcbiAgICA6ZW9mIG5pbH1cbiAgIHMpKVxuIChbb3B0cyBzXVxuICAoZWRuL3JlYWQtc3RyaW5nXG4gICAodXBkYXRlXG4gICAgKG1lcmdlIHs6ZGVmYXVsdCBAKmRlZmF1bHQtZGF0YS1yZWFkZXItZm4qfSBvcHRzKVxuICAgIDpyZWFkZXJzXG4gICAgKGZuIFttXSAobWVyZ2UgQCp0YWctdGFibGUqIG0pKSlcbiAgIHMpKSlcbiJ9IHs6c3ltIGRlcmVnaXN0ZXItdGFnLXBhcnNlciEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGFnXSl9LCA6c291cmNlICIoZGVmblxuIGRlcmVnaXN0ZXItdGFnLXBhcnNlciFcbiBbdGFnXVxuIChsZXRcbiAgW29sZC1wYXJzZXIgKGdldCBAKnRhZy10YWJsZSogdGFnKV1cbiAgKHN3YXAhICp0YWctdGFibGUqIGRpc3NvYyB0YWcpXG4gIG9sZC1wYXJzZXIpKVxuIn0gezpzeW0gcGFyc2UtdGltZXN0YW1wLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RzXSl9LCA6c291cmNlICIoZGVmblxuIHBhcnNlLXRpbWVzdGFtcFxuIFt0c11cbiAoaWYtbGV0XG4gIFtbeWVhcnMgbW9udGhzIGRheXMgaG91cnMgbWludXRlcyBzZWNvbmRzIG1zIG9mZnNldF1cbiAgIChwYXJzZS1hbmQtdmFsaWRhdGUtdGltZXN0YW1wIHRzKV1cbiAgKGpzL0RhdGUuXG4gICAoLVxuICAgICguVVRDIGpzL0RhdGUgeWVhcnMgKGRlYyBtb250aHMpIGRheXMgaG91cnMgbWludXRlcyBzZWNvbmRzIG1zKVxuICAgICgqIG9mZnNldCA2MCAxMDAwKSkpXG4gICh0aHJvdyAoanMvRXJyb3IuIChzdHIgXCJVbnJlY29nbml6ZWQgZGF0ZS90aW1lIHN5bnRheDogXCIgdHMpKSkpKVxuIn0pLCBjbG9qdXJlLndhbGsgKHs6c3ltIHdhbGssIDptZXRhIHs6ZG9jICJUcmF2ZXJzZXMgZm9ybSwgYW4gYXJiaXRyYXJ5IGRhdGEgc3RydWN0dXJlLiAgaW5uZXIgYW5kIG91dGVyIGFyZVxuICBmdW5jdGlvbnMuICBBcHBsaWVzIGlubmVyIHRvIGVhY2ggZWxlbWVudCBvZiBmb3JtLCBidWlsZGluZyB1cCBhXG4gIGRhdGEgc3RydWN0dXJlIG9mIHRoZSBzYW1lIHR5cGUsIHRoZW4gYXBwbGllcyBvdXRlciB0byB0aGUgcmVzdWx0LlxuICBSZWNvZ25pemVzIGFsbCBDbG9qdXJlIGRhdGEgc3RydWN0dXJlcy4gQ29uc3VtZXMgc2VxcyBhcyB3aXRoIGRvYWxsLiIsIDphcmdsaXN0cyAoW2lubmVyIG91dGVyIGZvcm1dKX0sIDpzb3VyY2UgIihkZWZuXG4gd2Fsa1xuIFwiVHJhdmVyc2VzIGZvcm0sIGFuIGFyYml0cmFyeSBkYXRhIHN0cnVjdHVyZS4gIGlubmVyIGFuZCBvdXRlciBhcmVcXG4gIGZ1bmN0aW9ucy4gIEFwcGxpZXMgaW5uZXIgdG8gZWFjaCBlbGVtZW50IG9mIGZvcm0sIGJ1aWxkaW5nIHVwIGFcXG4gIGRhdGEgc3RydWN0dXJlIG9mIHRoZSBzYW1lIHR5cGUsIHRoZW4gYXBwbGllcyBvdXRlciB0byB0aGUgcmVzdWx0LlxcbiAgUmVjb2duaXplcyBhbGwgQ2xvanVyZSBkYXRhIHN0cnVjdHVyZXMuIENvbnN1bWVzIHNlcXMgYXMgd2l0aCBkb2FsbC5cIlxuIHs6YWRkZWQgXCIxLjFcIn1cbiBbaW5uZXIgb3V0ZXIgZm9ybV1cbiAoY29uZFxuICAobGlzdD8gZm9ybSlcbiAgKG91dGVyIChhcHBseSBsaXN0IChtYXAgaW5uZXIgZm9ybSkpKVxuICAobWFwLWVudHJ5PyBmb3JtKVxuICAob3V0ZXIgKE1hcEVudHJ5LiAoaW5uZXIgKGtleSBmb3JtKSkgKGlubmVyICh2YWwgZm9ybSkpIG5pbCkpXG4gIChzZXE/IGZvcm0pXG4gIChvdXRlciAoZG9hbGwgKG1hcCBpbm5lciBmb3JtKSkpXG4gIChyZWNvcmQ/IGZvcm0pXG4gIChvdXRlciAocmVkdWNlIChmbiBbciB4XSAoY29uaiByIChpbm5lciB4KSkpIGZvcm0gZm9ybSkpXG4gIChjb2xsPyBmb3JtKVxuICAob3V0ZXIgKGludG8gKGVtcHR5IGZvcm0pIChtYXAgaW5uZXIgZm9ybSkpKVxuICA6ZWxzZVxuICAob3V0ZXIgZm9ybSkpKVxuIn0gezpzeW0gcG9zdHdhbGssIDptZXRhIHs6ZG9jICJQZXJmb3JtcyBhIGRlcHRoLWZpcnN0LCBwb3N0LW9yZGVyIHRyYXZlcnNhbCBvZiBmb3JtLiAgQ2FsbHMgZiBvblxuICBlYWNoIHN1Yi1mb3JtLCB1c2VzIGYncyByZXR1cm4gdmFsdWUgaW4gcGxhY2Ugb2YgdGhlIG9yaWdpbmFsLlxuICBSZWNvZ25pemVzIGFsbCBDbG9qdXJlIGRhdGEgc3RydWN0dXJlcy4gQ29uc3VtZXMgc2VxcyBhcyB3aXRoIGRvYWxsLiIsIDphcmdsaXN0cyAoW2YgZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwb3N0d2Fsa1xuIFwiUGVyZm9ybXMgYSBkZXB0aC1maXJzdCwgcG9zdC1vcmRlciB0cmF2ZXJzYWwgb2YgZm9ybS4gIENhbGxzIGYgb25cXG4gIGVhY2ggc3ViLWZvcm0sIHVzZXMgZidzIHJldHVybiB2YWx1ZSBpbiBwbGFjZSBvZiB0aGUgb3JpZ2luYWwuXFxuICBSZWNvZ25pemVzIGFsbCBDbG9qdXJlIGRhdGEgc3RydWN0dXJlcy4gQ29uc3VtZXMgc2VxcyBhcyB3aXRoIGRvYWxsLlwiXG4gezphZGRlZCBcIjEuMVwifVxuIFtmIGZvcm1dXG4gKHdhbGsgKHBhcnRpYWwgcG9zdHdhbGsgZikgZiBmb3JtKSlcbiJ9IHs6c3ltIHByZXdhbGssIDptZXRhIHs6ZG9jICJMaWtlIHBvc3R3YWxrLCBidXQgZG9lcyBwcmUtb3JkZXIgdHJhdmVyc2FsLiIsIDphcmdsaXN0cyAoW2YgZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcmV3YWxrXG4gXCJMaWtlIHBvc3R3YWxrLCBidXQgZG9lcyBwcmUtb3JkZXIgdHJhdmVyc2FsLlwiXG4gezphZGRlZCBcIjEuMVwifVxuIFtmIGZvcm1dXG4gKHdhbGsgKHBhcnRpYWwgcHJld2FsayBmKSBpZGVudGl0eSAoZiBmb3JtKSkpXG4ifSB7OnN5bSBrZXl3b3JkaXplLWtleXMsIDptZXRhIHs6ZG9jICJSZWN1cnNpdmVseSB0cmFuc2Zvcm1zIGFsbCBtYXAga2V5cyBmcm9tIHN0cmluZ3MgdG8ga2V5d29yZHMuIiwgOmFyZ2xpc3RzIChbbV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBrZXl3b3JkaXplLWtleXNcbiBcIlJlY3Vyc2l2ZWx5IHRyYW5zZm9ybXMgYWxsIG1hcCBrZXlzIGZyb20gc3RyaW5ncyB0byBrZXl3b3Jkcy5cIlxuIHs6YWRkZWQgXCIxLjFcIn1cbiBbbV1cbiAobGV0XG4gIFtmIChmbiBbW2sgdl1dIChpZiAoc3RyaW5nPyBrKSBbKGtleXdvcmQgaykgdl0gW2sgdl0pKV1cbiAgKHBvc3R3YWxrIChmbiBbeF0gKGlmIChtYXA/IHgpIChpbnRvIHt9IChtYXAgZiB4KSkgeCkpIG0pKSlcbiJ9IHs6c3ltIHN0cmluZ2lmeS1rZXlzLCA6bWV0YSB7OmRvYyAiUmVjdXJzaXZlbHkgdHJhbnNmb3JtcyBhbGwgbWFwIGtleXMgZnJvbSBrZXl3b3JkcyB0byBzdHJpbmdzLiIsIDphcmdsaXN0cyAoW21dKX0sIDpzb3VyY2UgIihkZWZuXG4gc3RyaW5naWZ5LWtleXNcbiBcIlJlY3Vyc2l2ZWx5IHRyYW5zZm9ybXMgYWxsIG1hcCBrZXlzIGZyb20ga2V5d29yZHMgdG8gc3RyaW5ncy5cIlxuIHs6YWRkZWQgXCIxLjFcIn1cbiBbbV1cbiAobGV0XG4gIFtmIChmbiBbW2sgdl1dIChpZiAoa2V5d29yZD8gaykgWyhuYW1lIGspIHZdIFtrIHZdKSldXG4gIChwb3N0d2FsayAoZm4gW3hdIChpZiAobWFwPyB4KSAoaW50byB7fSAobWFwIGYgeCkpIHgpKSBtKSkpXG4ifSB7OnN5bSBwcmV3YWxrLXJlcGxhY2UsIDptZXRhIHs6ZG9jICJSZWN1cnNpdmVseSB0cmFuc2Zvcm1zIGZvcm0gYnkgcmVwbGFjaW5nIGtleXMgaW4gc21hcCB3aXRoIHRoZWlyXG4gIHZhbHVlcy4gIExpa2UgY2xvanVyZS9yZXBsYWNlIGJ1dCB3b3JrcyBvbiBhbnkgZGF0YSBzdHJ1Y3R1cmUuICBEb2VzXG4gIHJlcGxhY2VtZW50IGF0IHRoZSByb290IG9mIHRoZSB0cmVlIGZpcnN0LiIsIDphcmdsaXN0cyAoW3NtYXAgZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcmV3YWxrLXJlcGxhY2VcbiBcIlJlY3Vyc2l2ZWx5IHRyYW5zZm9ybXMgZm9ybSBieSByZXBsYWNpbmcga2V5cyBpbiBzbWFwIHdpdGggdGhlaXJcXG4gIHZhbHVlcy4gIExpa2UgY2xvanVyZS9yZXBsYWNlIGJ1dCB3b3JrcyBvbiBhbnkgZGF0YSBzdHJ1Y3R1cmUuICBEb2VzXFxuICByZXBsYWNlbWVudCBhdCB0aGUgcm9vdCBvZiB0aGUgdHJlZSBmaXJzdC5cIlxuIHs6YWRkZWQgXCIxLjFcIn1cbiBbc21hcCBmb3JtXVxuIChwcmV3YWxrIChmbiBbeF0gKGlmIChjb250YWlucz8gc21hcCB4KSAoc21hcCB4KSB4KSkgZm9ybSkpXG4ifSB7OnN5bSBwb3N0d2Fsay1yZXBsYWNlLCA6bWV0YSB7OmRvYyAiUmVjdXJzaXZlbHkgdHJhbnNmb3JtcyBmb3JtIGJ5IHJlcGxhY2luZyBrZXlzIGluIHNtYXAgd2l0aCB0aGVpclxuICB2YWx1ZXMuICBMaWtlIGNsb2p1cmUvcmVwbGFjZSBidXQgd29ya3Mgb24gYW55IGRhdGEgc3RydWN0dXJlLiAgRG9lc1xuICByZXBsYWNlbWVudCBhdCB0aGUgbGVhdmVzIG9mIHRoZSB0cmVlIGZpcnN0LiIsIDphcmdsaXN0cyAoW3NtYXAgZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwb3N0d2Fsay1yZXBsYWNlXG4gXCJSZWN1cnNpdmVseSB0cmFuc2Zvcm1zIGZvcm0gYnkgcmVwbGFjaW5nIGtleXMgaW4gc21hcCB3aXRoIHRoZWlyXFxuICB2YWx1ZXMuICBMaWtlIGNsb2p1cmUvcmVwbGFjZSBidXQgd29ya3Mgb24gYW55IGRhdGEgc3RydWN0dXJlLiAgRG9lc1xcbiAgcmVwbGFjZW1lbnQgYXQgdGhlIGxlYXZlcyBvZiB0aGUgdHJlZSBmaXJzdC5cIlxuIHs6YWRkZWQgXCIxLjFcIn1cbiBbc21hcCBmb3JtXVxuIChwb3N0d2FsayAoZm4gW3hdIChpZiAoY29udGFpbnM/IHNtYXAgeCkgKHNtYXAgeCkgeCkpIGZvcm0pKVxuIn0pLCB0YWctc291cC5jb3JlICh7OnN5bSBzcGVjaWFsLWluZGVudCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBzcGVjaWFsLWluZGVudFxuICN7J2FuZFxuICAgJz49XG4gICAnPlxuICAgJy9cbiAgICctPj5cbiAgICc8PVxuICAgJz1cbiAgICdjb25kLT4+XG4gICAnK1xuICAgJz09XG4gICAnKlxuICAgJ3NvbWUtPj5cbiAgICdzb21lLT5cbiAgICdub3Q9XG4gICAnY29uZC0+XG4gICAnPFxuICAgJy1cbiAgICctPlxuICAgJ2FzLT5cbiAgICdvcn0pXG4ifSB7OnN5bSBjb2RlLT50YWdzLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgdGFncyBmb3IgdGhlIGdpdmVuIHN0cmluZyBjb250YWluaW5nIGNvZGUuIiwgOmFyZ2xpc3RzIChbdGV4dF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjb2RlLT50YWdzXG4gXCJSZXR1cm5zIHRoZSB0YWdzIGZvciB0aGUgZ2l2ZW4gc3RyaW5nIGNvbnRhaW5pbmcgY29kZS5cIlxuIFt0ZXh0XVxuIChsZXRcbiAgW3JlYWRlciAoaW5kZXhpbmctcHVzaC1iYWNrLXJlYWRlciB0ZXh0KV1cbiAgKGxvb3BcbiAgIFttICh0cmFuc2llbnQge30pXVxuICAgKGlmLWxldFxuICAgIFt0b2tlbiAocmVhZC1zYWZlIHJlYWRlcildXG4gICAgKHJlY3VyICh0YWctbWFwIHRva2VuIG0gMCkpXG4gICAgKHBlcnNpc3RlbnQhIG0pKSkpKVxuIn0gezpzeW0gaW5kZW50LWZvci1saW5lLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbnVtYmVyIG9mIHNwYWNlcyB0aGUgZ2l2ZW4gbGluZSBzaG91bGQgYmUgaW5kZW50ZWQuIiwgOmFyZ2xpc3RzIChbdGFncyBsaW5lXSl9LCA6c291cmNlICIoZGVmblxuIGluZGVudC1mb3ItbGluZVxuIFwiUmV0dXJucyB0aGUgbnVtYmVyIG9mIHNwYWNlcyB0aGUgZ2l2ZW4gbGluZSBzaG91bGQgYmUgaW5kZW50ZWQuXCJcbiBbdGFncyBsaW5lXVxuIChvclxuICAoLT4+XG4gICAoZ2V0LXRhZ3MtYmVmb3JlLWxpbmUgdGFncyBsaW5lKVxuICAgcmV2ZXJzZVxuICAgKHNvbWUgOm5leHQtbGluZS1pbmRlbnQpKVxuICAwKSlcbiJ9IHs6c3ltIGFkanVzdC1pbmRlbnQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGhvdyBtdWNoIHRoZSBpbmRlbnQgc2hvdWxkIGJlIGFkanVzdGVkIGZvciB0aGUgZ2l2ZW4gdG9rZW4uIiwgOmFyZ2xpc3RzIChbdG9rZW5dKX0sIDpzb3VyY2UgIihkZWZuXG4gYWRqdXN0LWluZGVudFxuIFwiUmV0dXJucyBob3cgbXVjaCB0aGUgaW5kZW50IHNob3VsZCBiZSBhZGp1c3RlZCBmb3IgdGhlIGdpdmVuIHRva2VuLlwiXG4gW3Rva2VuXVxuIChpZlxuICAobGlzdD8gdG9rZW4pXG4gIChsZXRcbiAgIFtmaXJzdC12YWwgKC0+IHRva2VuIGZpcnN0IHVud3JhcC12YWx1ZSldXG4gICAoY29uZFxuICAgIChvciAodmVjdG9yPyBmaXJzdC12YWwpIChsaXN0PyBmaXJzdC12YWwpKVxuICAgIDBcbiAgICAoI3s6dXNlIDpyZXF1aXJlIDppbXBvcnR9IGZpcnN0LXZhbClcbiAgICAoaW5jIChjb3VudCAoc3RyIGZpcnN0LXZhbCkpKVxuICAgICgjezpjbGpyIDpjbGogOmNsanN9IGZpcnN0LXZhbClcbiAgICAwXG4gICAgKGNvbnRhaW5zPyBzcGVjaWFsLWluZGVudCBmaXJzdC12YWwpXG4gICAgKGluYyAoY291bnQgKHN0ciBmaXJzdC12YWwpKSlcbiAgICA6ZWxzZVxuICAgIDEpKVxuICAwKSlcbiJ9IHs6c3ltIHJlYWQtc2FmZSwgOm1ldGEgezpkb2MgIlJldHVybnMgZWl0aGVyIGEgZm9ybSBvciBhbiBleGNlcHRpb24gb2JqZWN0LCBvciBuaWwgaWYgRU9GIGlzIHJlYWNoZWQuIiwgOmFyZ2xpc3RzIChbcmVhZGVyXSl9LCA6c291cmNlICIoZGVmblxuIHJlYWQtc2FmZVxuIFwiUmV0dXJucyBlaXRoZXIgYSBmb3JtIG9yIGFuIGV4Y2VwdGlvbiBvYmplY3QsIG9yIG5pbCBpZiBFT0YgaXMgcmVhY2hlZC5cIlxuIFtyZWFkZXJdXG4gKHRyeVxuICAoYmluZGluZ1xuICAgWyp3cmFwLXZhbHVlLWFuZC1hZGQtbWV0YWRhdGE/KiB0cnVlIHIvKnN1cHByZXNzLXJlYWQqIHRydWVdXG4gICAoci9yZWFkIHs6cmVhZC1jb25kIDpwcmVzZXJ2ZSwgOmVvZiBuaWx9IHJlYWRlcikpXG4gIChjYXRjaCBFeGNlcHRpb25JbmZvIGUgZSkpKVxuIn0gezpzeW0gdW53cmFwLXZhbHVlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ZhbHVlXSl9LCA6c291cmNlICIoZGVmblxuIHVud3JhcC12YWx1ZVxuIFt2YWx1ZV1cbiAoaWYgKC0+IHZhbHVlIG1ldGEgOndyYXBwZWQ/KSAoZmlyc3QgdmFsdWUpIHZhbHVlKSlcbiJ9IHs6c3ltIGdldC10YWdzLWJlZm9yZS1saW5lLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgdGFncyBiZWZvcmUgdGhlIGdpdmVuIGxpbmUuIiwgOmFyZ2xpc3RzIChbdGFncyBsaW5lXSl9LCA6c291cmNlICIoZGVmblxuIGdldC10YWdzLWJlZm9yZS1saW5lXG4gXCJSZXR1cm5zIHRoZSB0YWdzIGJlZm9yZSB0aGUgZ2l2ZW4gbGluZS5cIlxuIFt0YWdzIGxpbmVdXG4gKC0+PlxuICB0YWdzXG4gIChmaWx0ZXIgKGZuKiBbcDFfXzQ1MDAwI10gKDwgKGZpcnN0IHAxX180NTAwMCMpIGxpbmUpKSlcbiAgKHNvcnQtYnkgZmlyc3QpXG4gIChtYXAgc2Vjb25kKVxuICAobWFwIChmbiogW3AxX180NTAwMSNdIChzb3J0LWJ5IDpjb2x1bW4gcDFfXzQ1MDAxIykpKVxuICAoYXBwbHkgY29uY2F0KSkpXG4ifSB7OnN5bSBmb3J3YXJkLWluZGVudC1mb3ItbGluZSwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG51bWJlciBvZiBzcGFjZXMgdGhlIGdpdmVuIGxpbmUgc2hvdWxkIGJlIGluZGVudGVkIGZvcndhcmQuIiwgOmFyZ2xpc3RzIChbdGFncyBsaW5lIGN1cnJlbnQtaW5kZW50XSl9LCA6c291cmNlICIoZGVmblxuIGZvcndhcmQtaW5kZW50LWZvci1saW5lXG4gXCJSZXR1cm5zIHRoZSBudW1iZXIgb2Ygc3BhY2VzIHRoZSBnaXZlbiBsaW5lIHNob3VsZCBiZSBpbmRlbnRlZCBmb3J3YXJkLlwiXG4gW3RhZ3MgbGluZSBjdXJyZW50LWluZGVudF1cbiAobGV0XG4gIFt0YWdzLWJlZm9yZSAoZ2V0LXRhZ3MtYmVmb3JlLWxpbmUgdGFncyBsaW5lKV1cbiAgKGxvb3BcbiAgIFt0YWdzIChyZXZlcnNlIHRhZ3MtYmVmb3JlKSBtYXgtdGFiLXN0b3AgLTEgdGFiLXN0b3AgLTFdXG4gICAoaWYtbGV0XG4gICAgW3RhZyAoZmlyc3QgdGFncyldXG4gICAgKGlmLWxldFxuICAgICBbaW5kZW50ICg6aW5kZW50IHRhZyldXG4gICAgIChjb25kXG4gICAgICAoPD0gaW5kZW50IGN1cnJlbnQtaW5kZW50KVxuICAgICAgKHJlY3VyIFtdIG1heC10YWItc3RvcCB0YWItc3RvcClcbiAgICAgIChvciAobmVnPyBtYXgtdGFiLXN0b3ApICg8IGN1cnJlbnQtaW5kZW50IGluZGVudCBtYXgtdGFiLXN0b3ApKVxuICAgICAgKHJlY3VyXG4gICAgICAgKHJlc3QgdGFncylcbiAgICAgICAoaW5jIGluZGVudClcbiAgICAgICAoaWYgKDpza2lwLWluZGVudD8gdGFnKSB0YWItc3RvcCBpbmRlbnQpKVxuICAgICAgOmVsc2VcbiAgICAgIChyZWN1ciAocmVzdCB0YWdzKSBtYXgtdGFiLXN0b3AgdGFiLXN0b3ApKVxuICAgICAocmVjdXIgKHJlc3QgdGFncykgbWF4LXRhYi1zdG9wIHRhYi1zdG9wKSlcbiAgICAoaWYgKDw9IHRhYi1zdG9wIGN1cnJlbnQtaW5kZW50KSAoKyBjdXJyZW50LWluZGVudCAyKSB0YWItc3RvcCkpKSkpXG4ifSB7OnN5bSB0YWctbWFwLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHRyYW5zaWVudCBtYXAgY29udGFpbmluZyB0aGUgdGFncywgb3JnYW5pemVkIGJ5IGxpbmUgbnVtYmVyLiIsIDphcmdsaXN0cyAoW3Rva2VuIHJlc3VsdHMtbWFwIHBhcmVudC1pbmRlbnRdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGFnLW1hcFxuIFwiUmV0dXJucyBhIHRyYW5zaWVudCBtYXAgY29udGFpbmluZyB0aGUgdGFncywgb3JnYW5pemVkIGJ5IGxpbmUgbnVtYmVyLlwiXG4gW3Rva2VuIHJlc3VsdHMtbWFwIHBhcmVudC1pbmRlbnRdXG4gKGNvbmRcbiAgKGluc3RhbmNlPyBFeGNlcHRpb25JbmZvIHRva2VuKVxuICAobGV0XG4gICBbezprZXlzIFtsaW5lIGNvbF19IChleC1kYXRhIHRva2VuKV1cbiAgIChhc3NvYyFcbiAgICByZXN1bHRzLW1hcFxuICAgIGxpbmVcbiAgICAoY29ualxuICAgICAoZ2V0IHJlc3VsdHMtbWFwIGxpbmUgW10pXG4gICAgIHs6ZXJyb3I/IHRydWUsXG4gICAgICA6bWVzc2FnZSAjPyg6Y2xqICguZ2V0TWVzc2FnZSB0b2tlbikgOmNsanMgKC4tbWVzc2FnZSB0b2tlbikpLFxuICAgICAgOmNvbHVtbiBjb2x9KSkpXG4gIChhbmQgKGNvbGw/IHRva2VuKSAobmlsPyAobWV0YSB0b2tlbikpKVxuICAocmVkdWNlXG4gICAoZm4gW3Jlc3VsdHMtbWFwIHRva2VuXSAodGFnLW1hcCB0b2tlbiByZXN1bHRzLW1hcCBwYXJlbnQtaW5kZW50KSlcbiAgIHJlc3VsdHMtbWFwXG4gICB0b2tlbilcbiAgOmVsc2VcbiAgKGxldFxuICAgW3s6a2V5cyBbbGluZSBjb2x1bW4gZW5kLWxpbmUgZW5kLWNvbHVtbl19IChtZXRhIHRva2VuKV1cbiAgIChpZi1ub3RcbiAgICAoYW5kIGxpbmUgY29sdW1uIGVuZC1saW5lIGVuZC1jb2x1bW4pXG4gICAgcmVzdWx0cy1tYXBcbiAgICAobGV0XG4gICAgIFt2YWx1ZVxuICAgICAgKHVud3JhcC12YWx1ZSB0b2tlbilcbiAgICAgIGluZGVudFxuICAgICAgKG1heCBwYXJlbnQtaW5kZW50IChkZWMgY29sdW1uKSlcbiAgICAgIHRvcC1sZXZlbD9cbiAgICAgICg9IHBhcmVudC1pbmRlbnQgMCldXG4gICAgIChpZlxuICAgICAgKGNvbGw/IHZhbHVlKVxuICAgICAgKGxldFxuICAgICAgIFtkZWxpbWl0ZXItc2l6ZVxuICAgICAgICAoaWYgKHNldD8gdmFsdWUpIDIgMSlcbiAgICAgICAgbmV3LWVuZC1jb2x1bW5cbiAgICAgICAgKCsgY29sdW1uIGRlbGltaXRlci1zaXplKVxuICAgICAgICBhZGp1c3RtZW50XG4gICAgICAgIChhZGp1c3QtaW5kZW50IHZhbHVlKVxuICAgICAgICBuZXh0LWxpbmUtaW5kZW50XG4gICAgICAgICgrIChkZWMgY29sdW1uKSBkZWxpbWl0ZXItc2l6ZSBhZGp1c3RtZW50KV1cbiAgICAgICAoYXMtPlxuICAgICAgICByZXN1bHRzLW1hcFxuICAgICAgICAkXG4gICAgICAgIChhc3NvYyFcbiAgICAgICAgICRcbiAgICAgICAgIGxpbmVcbiAgICAgICAgICgtPlxuICAgICAgICAgIChnZXQgJCBsaW5lIFtdKVxuICAgICAgICAgIChjb25qXG4gICAgICAgICAgIHs6YmVnaW4/IHRydWUsXG4gICAgICAgICAgICA6Y29sdW1uIGNvbHVtbixcbiAgICAgICAgICAgIDp2YWx1ZSB2YWx1ZSxcbiAgICAgICAgICAgIDppbmRlbnQgaW5kZW50LFxuICAgICAgICAgICAgOnRvcC1sZXZlbD8gdG9wLWxldmVsPyxcbiAgICAgICAgICAgIDpza2lwLWluZGVudD8gdHJ1ZX0pXG4gICAgICAgICAgKGNvbmogezpkZWxpbWl0ZXI/IHRydWUsIDpjb2x1bW4gY29sdW1ufSlcbiAgICAgICAgICAoY29ualxuICAgICAgICAgICB7OmVuZD8gdHJ1ZSxcbiAgICAgICAgICAgIDpjb2x1bW4gbmV3LWVuZC1jb2x1bW4sXG4gICAgICAgICAgICA6bmV4dC1saW5lLWluZGVudCBuZXh0LWxpbmUtaW5kZW50LFxuICAgICAgICAgICAgOmluZGVudCBuZXh0LWxpbmUtaW5kZW50fSkpKVxuICAgICAgICAocmVkdWNlXG4gICAgICAgICAoZm5cbiAgICAgICAgICBbcmVzdWx0cy1tYXAgdG9rZW5dXG4gICAgICAgICAgKHRhZy1tYXAgdG9rZW4gcmVzdWx0cy1tYXAgbmV4dC1saW5lLWluZGVudCkpXG4gICAgICAgICAkXG4gICAgICAgICB2YWx1ZSlcbiAgICAgICAgKGFzc29jIVxuICAgICAgICAgJFxuICAgICAgICAgZW5kLWxpbmVcbiAgICAgICAgICgtPlxuICAgICAgICAgIChnZXQgJCBlbmQtbGluZSBbXSlcbiAgICAgICAgICAoY29uaiB7OmRlbGltaXRlcj8gdHJ1ZSwgOmNvbHVtbiAoZGVjIGVuZC1jb2x1bW4pfSlcbiAgICAgICAgICAoY29ualxuICAgICAgICAgICB7OmVuZD8gdHJ1ZSxcbiAgICAgICAgICAgIDpjb2x1bW4gZW5kLWNvbHVtbixcbiAgICAgICAgICAgIDpuZXh0LWxpbmUtaW5kZW50IHBhcmVudC1pbmRlbnR9KVxuICAgICAgICAgIChjb25qIHs6ZW5kPyB0cnVlLCA6Y29sdW1uIGVuZC1jb2x1bW59KSkpKSlcbiAgICAgIChhcy0+XG4gICAgICAgcmVzdWx0cy1tYXBcbiAgICAgICAkXG4gICAgICAgKGFzc29jIVxuICAgICAgICAkXG4gICAgICAgIGxpbmVcbiAgICAgICAgKGNvbmpcbiAgICAgICAgIChnZXQgJCBsaW5lIFtdKVxuICAgICAgICAgezpiZWdpbj8gdHJ1ZSxcbiAgICAgICAgICA6Y29sdW1uIGNvbHVtbixcbiAgICAgICAgICA6dmFsdWUgdmFsdWUsXG4gICAgICAgICAgOmluZGVudCBpbmRlbnQsXG4gICAgICAgICAgOnRvcC1sZXZlbD8gdG9wLWxldmVsP30pKVxuICAgICAgIChhc3NvYyFcbiAgICAgICAgJFxuICAgICAgICBlbmQtbGluZVxuICAgICAgICAoY29ualxuICAgICAgICAgKGdldCAkIGVuZC1saW5lIFtdKVxuICAgICAgICAgezplbmQ/IHRydWUsIDpjb2x1bW4gZW5kLWNvbHVtbn0pKSkpKSkpKSlcbiJ9IHs6c3ltIGJhY2staW5kZW50LWZvci1saW5lLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbnVtYmVyIG9mIHNwYWNlcyB0aGUgZ2l2ZW4gbGluZSBzaG91bGQgYmUgaW5kZW50ZWQgYmFjay4iLCA6YXJnbGlzdHMgKFt0YWdzIGxpbmUgY3VycmVudC1pbmRlbnRdKX0sIDpzb3VyY2UgIihkZWZuXG4gYmFjay1pbmRlbnQtZm9yLWxpbmVcbiBcIlJldHVybnMgdGhlIG51bWJlciBvZiBzcGFjZXMgdGhlIGdpdmVuIGxpbmUgc2hvdWxkIGJlIGluZGVudGVkIGJhY2suXCJcbiBbdGFncyBsaW5lIGN1cnJlbnQtaW5kZW50XVxuIChsZXRcbiAgW3RhZ3MtYmVmb3JlIChnZXQtdGFncy1iZWZvcmUtbGluZSB0YWdzIGxpbmUpXVxuICAobG9vcFxuICAgW3RhZ3MgKHJldmVyc2UgdGFncy1iZWZvcmUpIG1heC10YWItc3RvcCBjdXJyZW50LWluZGVudF1cbiAgIChpZi1sZXRcbiAgICBbdGFnIChmaXJzdCB0YWdzKV1cbiAgICAoaWYtbGV0XG4gICAgIFtpbmRlbnQgKDppbmRlbnQgdGFnKV1cbiAgICAgKGlmXG4gICAgICAoPCBpbmRlbnQgbWF4LXRhYi1zdG9wKVxuICAgICAgKGlmICg6c2tpcC1pbmRlbnQ/IHRhZykgKHJlY3VyIChyZXN0IHRhZ3MpIChpbmMgaW5kZW50KSkgaW5kZW50KVxuICAgICAgKHJlY3VyIChyZXN0IHRhZ3MpIG1heC10YWItc3RvcCkpXG4gICAgIChyZWN1ciAocmVzdCB0YWdzKSBtYXgtdGFiLXN0b3ApKVxuICAgICgtIGN1cnJlbnQtaW5kZW50IDIpKSkpKVxuIn0pLCBleHBvdW5kLnBhdGhzICh7OnN5bSBwYXRocy10by12YWx1ZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmb3JtIHZhbCBwYXRoIHBhdGhzXSl9LCA6c291cmNlICIoZGVmblxuIHBhdGhzLXRvLXZhbHVlXG4gW2Zvcm0gdmFsIHBhdGggcGF0aHNdXG4gKGNvbmRcbiAgKD0gZm9ybSB2YWwpXG4gIChjb25qIHBhdGhzIHBhdGgpXG4gIChvciAoc2VxdWVudGlhbD8gZm9ybSkgKHNldD8gZm9ybSkpXG4gIChyZWR1Y2VcbiAgIChmbiBbcHMgW3ggaV1dIChwYXRocy10by12YWx1ZSB4IHZhbCAoY29uaiBwYXRoIGkpIHBzKSlcbiAgIHBhdGhzXG4gICAobWFwIHZlY3RvciBmb3JtIChyYW5nZSkpKVxuICAobWFwPyBmb3JtKVxuICAocmVkdWNlXG4gICAoZm5cbiAgICBbcHMgW2sgdl1dXG4gICAgKC0+PlxuICAgICBwc1xuICAgICAocGF0aHMtdG8tdmFsdWUgayB2YWwgKGNvbmogcGF0aCAoLT5LZXlQYXRoU2VnbWVudCBrKSkpXG4gICAgIChwYXRocy10by12YWx1ZSB2IHZhbCAoY29uaiBwYXRoIGspKSkpXG4gICBwYXRoc1xuICAgZm9ybSlcbiAgOmVsc2VcbiAgcGF0aHMpKVxuIn0gezpzeW0gZXF1YWxpc2g/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ggeV0pfSwgOnNvdXJjZSAiKGRlZm4gZXF1YWxpc2g/IFt4IHldIChvciAoPSB4IHkpIChmbi1lcXVhbCB4IHkpIChib3RoLW5hbj8geCB5KSkpXG4ifSB7OnN5bSBpbi13aXRoLWtwcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmb3JtIHZhbCBpbiBpbiddKX0sIDpzb3VyY2UgIihkZWZuXG4gaW4td2l0aC1rcHNcbiBbZm9ybSB2YWwgaW4gaW4nXVxuIChsZXRcbiAgW3JlcyAoaW4td2l0aC1rcHMqIGZvcm0gdmFsIGluIGluJyldXG4gIChpZiAoPSA6ZXhwb3VuZC5wYXRocy9ub3QtZm91bmQgcmVzKSBuaWwgcmVzKSkpXG4ifSB7OnN5bSB2YWx1ZS1pbiwgOm1ldGEgezpkb2MgIlNpbWlsYXIgdG8gZ2V0LWluLCBidXQgd29ya3Mgd2l0aCBwYXRocyB0aGF0IHJlZmVyZW5jZSBtYXAga2V5cyIsIDphcmdsaXN0cyAoW2Zvcm0gaW5dKX0sIDpzb3VyY2UgIihkZWZuXG4gdmFsdWUtaW5cbiBcIlNpbWlsYXIgdG8gZ2V0LWluLCBidXQgd29ya3Mgd2l0aCBwYXRocyB0aGF0IHJlZmVyZW5jZSBtYXAga2V5c1wiXG4gW2Zvcm0gaW5dXG4gKGlmXG4gIChuaWw/IGluKVxuICBmb3JtXG4gIChsZXRcbiAgIFtbayAmIHJzdF0gaW5dXG4gICAoY29uZFxuICAgIChlbXB0eT8gaW4pXG4gICAgZm9ybVxuICAgIChhbmQgKG1hcD8gZm9ybSkgKGtwcz8gaykpXG4gICAgKHJlY3VyICg6a2V5IGspIHJzdClcbiAgICAoYW5kIChtYXA/IGZvcm0pIChrdnBzPyBrKSlcbiAgICAocmVjdXIgKG50aCAoc2VxIGZvcm0pICg6aWR4IGspKSByc3QpXG4gICAgKGFzc29jaWF0aXZlPyBmb3JtKVxuICAgIChyZWN1ciAoZ2V0IGZvcm0gaykgcnN0KVxuICAgIChhbmQgKGludD8gaykgKHNlcWFibGU/IGZvcm0pKVxuICAgIChyZWN1ciAobnRoIChzZXEgZm9ybSkgaykgcnN0KSkpKSlcbiJ9IHs6c3ltIGt2cHM/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGt2cHM/IFt4XSAoaW5zdGFuY2U/IEtleVZhbHVlUGF0aFNlZ21lbnQgeCkpXG4ifSB7OnN5bSBpbi13aXRoLWtwcy1pbnRzLWFyZS1rZXlzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2Zvcm0gdmFsIGluIGluJ10pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbi13aXRoLWtwcy1pbnRzLWFyZS1rZXlzXG4gW2Zvcm0gdmFsIGluIGluJ11cbiAoaWZcbiAgKD0gZm9ybSA6ZXhwb3VuZC5wYXRocy9ub3QtZm91bmQpXG4gIGZvcm1cbiAgKGxldFxuICAgW1trICYgcnN0XSBpbl1cbiAgIChjb25kXG4gICAgKGFuZCAoZW1wdHk/IGluKSAoZXF1YWxpc2g/IGZvcm0gdmFsKSlcbiAgICBpbidcbiAgICAoYXNzb2NpYXRpdmU/IGZvcm0pXG4gICAgKGluLXdpdGgta3BzKlxuICAgICAoZ2V0IGZvcm0gayA6ZXhwb3VuZC5wYXRocy9ub3QtZm91bmQpXG4gICAgIHZhbFxuICAgICByc3RcbiAgICAgKGNvbmogaW4nIGspKVxuICAgIChhbmQgKGludD8gaykgKHNlcWFibGU/IGZvcm0pKVxuICAgIChpbi13aXRoLWtwcypcbiAgICAgKG50aCAoc2VxIGZvcm0pIGsgOmV4cG91bmQucGF0aHMvbm90LWZvdW5kKVxuICAgICB2YWxcbiAgICAgcnN0XG4gICAgIChjb25qIGluJyBrKSlcbiAgICA6ZWxzZVxuICAgIDpleHBvdW5kLnBhdGhzL25vdC1mb3VuZCkpKSlcbiJ9IHs6c3ltIGNvbXBhcmUtcGF0aC1zZWdtZW50LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ggeV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjb21wYXJlLXBhdGgtc2VnbWVudFxuIFt4IHldXG4gKGNvbmRcbiAgKGFuZCAoaW50PyB4KSAoa3Zwcz8geSkpXG4gIChjb21wYXJlIHggKDppZHggeSkpXG4gIChhbmQgKGt2cHM/IHgpIChpbnQ/IHkpKVxuICAoY29tcGFyZSAoOmlkeCB4KSB5KVxuICAoYW5kIChrcHM/IHgpIChub3QgKGtwcz8geSkpKVxuICAtMVxuICAoYW5kIChub3QgKGtwcz8geCkpIChrcHM/IHkpKVxuICAxXG4gIChhbmQgKHZlY3Rvcj8geCkgKHZlY3Rvcj8geSkpXG4gIChjb21wYXJlLXBhdGhzIHggeSlcbiAgOmVsc2VcbiAgKGNvbXBhcmUgeCB5KSkpXG4ifSB7OnN5bSBrdnBzLXBhdGg/LCA6bWV0YSB7OmRvYyAiVHJ1ZSBpZiBwYXRoIHBvaW50cyB0byBhIGtleS92YWx1ZSBwYWlyIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBrdnBzLXBhdGg/XG4gXCJUcnVlIGlmIHBhdGggcG9pbnRzIHRvIGEga2V5L3ZhbHVlIHBhaXJcIlxuIFt4XVxuIChib29sZWFuIChhbmQgKHZlY3Rvcj8geCkgKHNvbWUga3Zwcz8geCkpKSlcbiJ9IHs6c3ltIGNvbXBhcmUtcGF0aHMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcGF0aDEgcGF0aDJdKX0sIDpzb3VyY2UgIihkZWZuXG4gY29tcGFyZS1wYXRoc1xuIFtwYXRoMSBwYXRoMl1cbiAoLT4+IChtYXAgY29tcGFyZS1wYXRoLXNlZ21lbnQgcGF0aDEgcGF0aDIpIChyZW1vdmUgI3swfSkgZmlyc3QpKVxuIn0gezpzeW0gaW4td2l0aC1rcHMtZnV6enktbWF0Y2gtZm9yLXJlZ2V4LWZhaWx1cmVzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2Zvcm0gdmFsIGluIGluJ10pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbi13aXRoLWtwcy1mdXp6eS1tYXRjaC1mb3ItcmVnZXgtZmFpbHVyZXNcbiBbZm9ybSB2YWwgaW4gaW4nXVxuIChpZlxuICAoPSBmb3JtIDpleHBvdW5kLnBhdGhzL25vdC1mb3VuZClcbiAgZm9ybVxuICAobGV0XG4gICBbW2sgJiByc3RdIGluXVxuICAgKGNvbmRcbiAgICAoYW5kIChlbXB0eT8gaW4pIChzZXFhYmxlPyBmb3JtKSAoPSB2YWwgJygpKSlcbiAgICBpbidcbiAgICAoYW5kIChlbXB0eT8gaW4pIChhbmQgKHNlcT8gdmFsKSAoPSBmb3JtIChmaXJzdCB2YWwpKSkpXG4gICAgaW4nXG4gICAgKGFuZCAobmF0LWludD8gaykgKHNlcWFibGU/IGZvcm0pKVxuICAgIChpbi13aXRoLWtwcypcbiAgICAgKG50aCAoc2VxIGZvcm0pIGsgOmV4cG91bmQucGF0aHMvbm90LWZvdW5kKVxuICAgICB2YWxcbiAgICAgcnN0XG4gICAgIChjb25qIGluJyBrKSlcbiAgICA6ZWxzZVxuICAgIDpleHBvdW5kLnBhdGhzL25vdC1mb3VuZCkpKSlcbiJ9IHs6c3ltIGluLXdpdGgta3BzKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmb3JtIHZhbCBpbiBpbiddKX0sIDpzb3VyY2UgIihkZWZuXG4gaW4td2l0aC1rcHMqXG4gW2Zvcm0gdmFsIGluIGluJ11cbiAoaWZcbiAgKGZuPyBmb3JtKVxuICBpbidcbiAgKGxldFxuICAgW2JyMSAoaW4td2l0aC1rcHMtaW50cy1hcmUta2V5LXZhbHVlLWluZGljYXRvcnMgZm9ybSB2YWwgaW4gaW4nKV1cbiAgIChpZlxuICAgIChub3Q9IDpleHBvdW5kLnBhdGhzL25vdC1mb3VuZCBicjEpXG4gICAgYnIxXG4gICAgKGxldFxuICAgICBbYnIyIChpbi13aXRoLWtwcy1tYXBzLWFzLXNlcXMgZm9ybSB2YWwgaW4gaW4nKV1cbiAgICAgKGlmXG4gICAgICAobm90PSA6ZXhwb3VuZC5wYXRocy9ub3QtZm91bmQgYnIyKVxuICAgICAgYnIyXG4gICAgICAobGV0XG4gICAgICAgW2JyMyAoaW4td2l0aC1rcHMtaW50cy1hcmUta2V5cyBmb3JtIHZhbCBpbiBpbicpXVxuICAgICAgIChpZlxuICAgICAgICAobm90PSA6ZXhwb3VuZC5wYXRocy9ub3QtZm91bmQgYnIzKVxuICAgICAgICBicjNcbiAgICAgICAgKGxldFxuICAgICAgICAgW2JyNFxuICAgICAgICAgIChpbi13aXRoLWtwcy1mdXp6eS1tYXRjaC1mb3ItcmVnZXgtZmFpbHVyZXMgZm9ybSB2YWwgaW4gaW4nKV1cbiAgICAgICAgIChpZlxuICAgICAgICAgIChub3Q9IDpleHBvdW5kLnBhdGhzL25vdC1mb3VuZCBicjQpXG4gICAgICAgICAgYnI0XG4gICAgICAgICAgOmV4cG91bmQucGF0aHMvbm90LWZvdW5kKSkpKSkpKSkpKVxuIn0gezpzeW0ga3BzLXBhdGg/LCA6bWV0YSB7OmRvYyAiVHJ1ZSBpZiBwYXRoIHBvaW50cyB0byBhIGtleSIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4ga3BzLXBhdGg/XG4gXCJUcnVlIGlmIHBhdGggcG9pbnRzIHRvIGEga2V5XCJcbiBbeF1cbiAoYm9vbGVhbiAoYW5kICh2ZWN0b3I/IHgpIChrcHM/IChsYXN0IHgpKSkpKVxuIn0gezpzeW0gaW4td2l0aC1rcHMtbWFwcy1hcy1zZXFzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2Zvcm0gdmFsIGluIGluJ10pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbi13aXRoLWtwcy1tYXBzLWFzLXNlcXNcbiBbZm9ybSB2YWwgaW4gaW4nXVxuIChsZXRcbiAgW1trICYgcnN0XSBpbiBbaWR4ICYgcnN0Ml0gcnN0XVxuICAoY29uZFxuICAgKD0gOmV4cG91bmQucGF0aHMvbm90LWZvdW5kIGZvcm0pXG4gICA6ZXhwb3VuZC5wYXRocy9ub3QtZm91bmRcbiAgIChhbmQgKGVtcHR5PyBpbikgKGVxdWFsaXNoPyBmb3JtIHZhbCkpXG4gICBpbidcbiAgIChhbmQgKG1hcD8gZm9ybSkgKG5hdC1pbnQ/IGspICg8IGsgKGNvdW50IChzZXEgZm9ybSkpKSlcbiAgIChpbi13aXRoLWtwcypcbiAgICAobnRoIChzZXEgZm9ybSkgaylcbiAgICB2YWxcbiAgICByc3RcbiAgICAoY29uaiBpbicgKC0+S2V5VmFsdWVQYXRoU2VnbWVudCBrKSkpXG4gICAoYW5kXG4gICAgKG1hcD8gZm9ybSlcbiAgICAobmF0LWludD8gaylcbiAgICAoaW50PyBpZHgpXG4gICAgKDwgayAoY291bnQgKHNlcSBmb3JtKSkpXG4gICAgKDwgaWR4IChjb3VudCAobnRoIChzZXEgZm9ybSkgaykpKSlcbiAgIChpbi13aXRoLWtwcypcbiAgICAobnRoIChudGggKHNlcSBmb3JtKSBrKSBpZHgpXG4gICAgdmFsXG4gICAgcnN0MlxuICAgIChjb25qIGluJyAoLT5LZXlWYWx1ZVBhdGhTZWdtZW50IGspIGlkeCkpXG4gICA6ZWxzZVxuICAgOmV4cG91bmQucGF0aHMvbm90LWZvdW5kKSkpXG4ifSB7OnN5bSBwcmVmaXgtcGF0aD8sIDptZXRhIHs6ZG9jICJUcnVlIGlmIHBhcnRpYWwtcGF0aCBpcyBhIHByZWZpeCBvZiBmdWxsLXBhdGguIiwgOmFyZ2xpc3RzIChbcGFydGlhbC1wYXRoIGZ1bGwtcGF0aF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcmVmaXgtcGF0aD9cbiBcIlRydWUgaWYgcGFydGlhbC1wYXRoIGlzIGEgcHJlZml4IG9mIGZ1bGwtcGF0aC5cIlxuIFtwYXJ0aWFsLXBhdGggZnVsbC1wYXRoXVxuIChhbmRcbiAgKDwgKGNvdW50IHBhcnRpYWwtcGF0aCkgKGNvdW50IGZ1bGwtcGF0aCkpXG4gICg9IHBhcnRpYWwtcGF0aCAoc3VidmVjIGZ1bGwtcGF0aCAwIChjb3VudCBwYXJ0aWFsLXBhdGgpKSkpKVxuIn0gezpzeW0gaW4td2l0aC1rcHMtaW50cy1hcmUta2V5LXZhbHVlLWluZGljYXRvcnMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZm9ybSB2YWwgaW4gaW4nXSl9LCA6c291cmNlICIoZGVmblxuIGluLXdpdGgta3BzLWludHMtYXJlLWtleS12YWx1ZS1pbmRpY2F0b3JzXG4gW2Zvcm0gdmFsIGluIGluJ11cbiAoaWZcbiAgKD0gZm9ybSA6ZXhwb3VuZC5wYXRocy9ub3QtZm91bmQpXG4gIGZvcm1cbiAgKGxldFxuICAgW1trICYgcnN0XSBpbiBbaWR4ICYgcnN0Ml0gcnN0XVxuICAgKGNvbmRcbiAgICAoYW5kIChlbXB0eT8gaW4pIChlcXVhbGlzaD8gZm9ybSB2YWwpKVxuICAgIGluJ1xuICAgIChhbmQgKG1hcD8gZm9ybSkgKD0gMCBpZHgpKVxuICAgIChpbi13aXRoLWtwcyogayB2YWwgcnN0MiAoY29uaiBpbicgKC0+S2V5UGF0aFNlZ21lbnQgaykpKVxuICAgIChhbmQgKG1hcD8gZm9ybSkgKD0gMSBpZHgpKVxuICAgIChpbi13aXRoLWtwcypcbiAgICAgKGdldCBmb3JtIGsgOmV4cG91bmQucGF0aHMvbm90LWZvdW5kKVxuICAgICB2YWxcbiAgICAgcnN0MlxuICAgICAoY29uaiBpbicgaykpXG4gICAgOmVsc2VcbiAgICA6ZXhwb3VuZC5wYXRocy9ub3QtZm91bmQpKSkpXG4ifSB7OnN5bSBmbi1lcXVhbCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4IHldKX0sIDpzb3VyY2UgIihkZWZuIGZuLWVxdWFsIFt4IHldIChhbmQgKGZuPyB4KSAoZm4/IHkpICg9IChwci1zdHIgeCkgKHByLXN0ciB5KSkpKVxuIn0gezpzeW0ga3BzPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiBrcHM/IFt4XSAoaW5zdGFuY2U/IEtleVBhdGhTZWdtZW50IHgpKVxuIn0gezpzeW0gYm90aC1uYW4/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ggeV0pfSwgOnNvdXJjZSAiKGRlZm4gYm90aC1uYW4/IFt4IHldIChhbmQgKHV0aWwvbmFuPyB4KSAodXRpbC9uYW4/IHkpKSlcbiJ9KSwgY2xqcy5jb3JlLmFzeW5jLmltcGwudGltZXJzICh7OnN5bSB0aW1lb3V0LCA6bWV0YSB7OmRvYyAicmV0dXJucyBhIGNoYW5uZWwgdGhhdCB3aWxsIGNsb3NlIGFmdGVyIG1zZWNzIiwgOmFyZ2xpc3RzIChbbXNlY3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGltZW91dFxuIFwicmV0dXJucyBhIGNoYW5uZWwgdGhhdCB3aWxsIGNsb3NlIGFmdGVyIG1zZWNzXCJcbiBbbXNlY3NdXG4gKGxldFxuICBbdGltZW91dFxuICAgKCsgKC52YWx1ZU9mIChqcy9EYXRlLikpIG1zZWNzKVxuICAgbWVcbiAgICguY2VpbGluZ0VudHJ5IHRpbWVvdXRzLW1hcCB0aW1lb3V0KV1cbiAgKG9yXG4gICAod2hlblxuICAgIChhbmQgbWUgKDwgKC4ta2V5IG1lKSAoKyB0aW1lb3V0IFRJTUVPVVRfUkVTT0xVVElPTl9NUykpKVxuICAgICguLXZhbCBtZSkpXG4gICAobGV0XG4gICAgW3RpbWVvdXQtY2hhbm5lbCAoY2hhbm5lbHMvY2hhbiBuaWwpXVxuICAgICgucHV0IHRpbWVvdXRzLW1hcCB0aW1lb3V0IHRpbWVvdXQtY2hhbm5lbClcbiAgICAoZGlzcGF0Y2gvcXVldWUtZGVsYXlcbiAgICAgKGZuXG4gICAgICBbXVxuICAgICAgKC5yZW1vdmUgdGltZW91dHMtbWFwIHRpbWVvdXQpXG4gICAgICAoaW1wbC9jbG9zZSEgdGltZW91dC1jaGFubmVsKSlcbiAgICAgbXNlY3MpXG4gICAgdGltZW91dC1jaGFubmVsKSkpKVxuIn0gezpzeW0gcmFuZG9tLWxldmVsLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW10gW2xldmVsXV19LCA6c291cmNlICIoZGVmblxuIHJhbmRvbS1sZXZlbFxuIChbXSAocmFuZG9tLWxldmVsIDApKVxuIChbbGV2ZWxdXG4gIChpZlxuICAgKGFuZCAoPCAoLnJhbmRvbSBqcy9NYXRoKSBQKSAoPCBsZXZlbCBNQVhfTEVWRUwpKVxuICAgKHJlY3VyIChpbmMgbGV2ZWwpKVxuICAgbGV2ZWwpKSlcbiJ9IHs6c3ltIHNraXAtbGlzdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuIHNraXAtbGlzdCBbXSAoU2tpcExpc3QuIChza2lwLWxpc3Qtbm9kZSAwKSAwKSlcbiJ9IHs6c3ltIE1BWF9MRVZFTCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgTUFYX0xFVkVMIDE1KVxuIn0gezpzeW0gUCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgUCAoLyAxIDIpKVxuIn0gezpzeW0gdGltZW91dHMtbWFwLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiB0aW1lb3V0cy1tYXAgKHNraXAtbGlzdCkpXG4ifSB7OnN5bSBza2lwLWxpc3Qtbm9kZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1tsZXZlbF0gW2sgdiBsZXZlbF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBza2lwLWxpc3Qtbm9kZVxuIChbbGV2ZWxdIChza2lwLWxpc3Qtbm9kZSBuaWwgbmlsIGxldmVsKSlcbiAoW2sgdiBsZXZlbF1cbiAgKGxldFxuICAgW2FyciAobWFrZS1hcnJheSAoaW5jIGxldmVsKSldXG4gICAobG9vcFxuICAgIFtpIDBdXG4gICAgKHdoZW4gKDwgaSAoYWxlbmd0aCBhcnIpKSAoYXNldCBhcnIgaSBuaWwpIChyZWN1ciAoaW5jIGkpKSkpXG4gICAoU2tpcExpc3ROb2RlLiBrIHYgYXJyKSkpKVxuIn0gezpzeW0gbGVhc3QtZ3JlYXRlci1ub2RlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW3ggayBsZXZlbF0gW3ggayBsZXZlbCB1cGRhdGVdXX0sIDpzb3VyY2UgIihkZWZuXG4gbGVhc3QtZ3JlYXRlci1ub2RlXG4gKFt4IGsgbGV2ZWxdIChsZWFzdC1ncmVhdGVyLW5vZGUgeCBrIGxldmVsIG5pbCkpXG4gKFt4IGsgbGV2ZWwgdXBkYXRlXVxuICAoaWYtbm90XG4gICAobmVnPyBsZXZlbClcbiAgIChsZXRcbiAgICBbeFxuICAgICAobG9vcFxuICAgICAgW3ggeF1cbiAgICAgIChpZi1sZXRcbiAgICAgICBbeCdcbiAgICAgICAgKHdoZW5cbiAgICAgICAgICg8IGxldmVsIChhbGVuZ3RoICguLWZvcndhcmQgeCkpKVxuICAgICAgICAgKGFnZXQgKC4tZm9yd2FyZCB4KSBsZXZlbCkpXVxuICAgICAgIChpZiAoPCAoLi1rZXkgeCcpIGspIChyZWN1ciB4JykgeClcbiAgICAgICB4KSldXG4gICAgKHdoZW4tbm90IChuaWw/IHVwZGF0ZSkgKGFzZXQgdXBkYXRlIGxldmVsIHgpKVxuICAgIChyZWN1ciB4IGsgKGRlYyBsZXZlbCkgdXBkYXRlKSlcbiAgIHgpKSlcbiJ9IHs6c3ltIFRJTUVPVVRfUkVTT0xVVElPTl9NUywgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgVElNRU9VVF9SRVNPTFVUSU9OX01TIDEwKVxuIn0pLCBwbGF5LWNsamMucHJpbWl0aXZlcy0zZCAoezpzeW0gcGxhbmUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbezprZXlzIFt3aWR0aCBkZXB0aCBzdWJkaXZpc2lvbnMtd2lkdGggc3ViZGl2aXNpb25zLWRlcHRoXSwgOm9yIHt3aWR0aCAxLCBkZXB0aCAxLCBzdWJkaXZpc2lvbnMtd2lkdGggMSwgc3ViZGl2aXNpb25zLWRlcHRoIDF9fV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwbGFuZVxuIFt7OmtleXMgW3dpZHRoIGRlcHRoIHN1YmRpdmlzaW9ucy13aWR0aCBzdWJkaXZpc2lvbnMtZGVwdGhdLFxuICAgOm9yIHt3aWR0aCAxLCBkZXB0aCAxLCBzdWJkaXZpc2lvbnMtd2lkdGggMSwgc3ViZGl2aXNpb25zLWRlcHRoIDF9fV1cbiAobGV0XG4gIFtudW0tdmVydHMtYWNyb3NzIChpbmMgc3ViZGl2aXNpb25zLXdpZHRoKV1cbiAgKC0+XG4gICAoZm5cbiAgICBbbSB6XVxuICAgIChyZWR1Y2VcbiAgICAgKGZuXG4gICAgICBbbSB4XVxuICAgICAgKGxldFxuICAgICAgIFt1ICgvIHggc3ViZGl2aXNpb25zLXdpZHRoKSB2ICgvIHogc3ViZGl2aXNpb25zLWRlcHRoKV1cbiAgICAgICAoLT5cbiAgICAgICAgbVxuICAgICAgICAodXBkYXRlXG4gICAgICAgICA6cG9zaXRpb25zXG4gICAgICAgICAoZm5cbiAgICAgICAgICBbcG9zaXRpb25zXVxuICAgICAgICAgICgtPlxuICAgICAgICAgICBwb3NpdGlvbnNcbiAgICAgICAgICAgKGNvbmohICgtICgqIHdpZHRoIHUpICgqIHdpZHRoIDAuNSkpKVxuICAgICAgICAgICAoY29uaiEgMClcbiAgICAgICAgICAgKGNvbmohICgtICgqIGRlcHRoIHYpICgqIGRlcHRoIDAuNSkpKSkpKVxuICAgICAgICAodXBkYXRlXG4gICAgICAgICA6bm9ybWFsc1xuICAgICAgICAgKGZuIFtub3JtYWxzXSAoLT4gbm9ybWFscyAoY29uaiEgMCkgKGNvbmohIDEpIChjb25qISAwKSkpKVxuICAgICAgICAodXBkYXRlXG4gICAgICAgICA6dGV4Y29vcmRzXG4gICAgICAgICAoZm4gW3RleGNvb3Jkc10gKC0+IHRleGNvb3JkcyAoY29uaiEgdSkgKGNvbmohIHYpKSkpKSkpXG4gICAgIG1cbiAgICAgKHJhbmdlIChpbmMgc3ViZGl2aXNpb25zLXdpZHRoKSkpKVxuICAgKHJlZHVjZVxuICAgIHs6cG9zaXRpb25zICh0cmFuc2llbnQgW10pLFxuICAgICA6bm9ybWFscyAodHJhbnNpZW50IFtdKSxcbiAgICAgOnRleGNvb3JkcyAodHJhbnNpZW50IFtdKX1cbiAgICAocmFuZ2UgKGluYyBzdWJkaXZpc2lvbnMtZGVwdGgpKSlcbiAgIChhc3NvY1xuICAgIDppbmRpY2VzXG4gICAgKHJlZHVjZVxuICAgICAoZm5cbiAgICAgIFtpbmRpY2VzIHpdXG4gICAgICAocmVkdWNlXG4gICAgICAgKGZuXG4gICAgICAgIFtpbmRpY2VzIHhdXG4gICAgICAgICgtPlxuICAgICAgICAgaW5kaWNlc1xuICAgICAgICAgKGNvbmohICgtPiB6ICgqIG51bS12ZXJ0cy1hY3Jvc3MpICgrIHgpKSlcbiAgICAgICAgIChjb25qISAoLT4geiBpbmMgKCogbnVtLXZlcnRzLWFjcm9zcykgKCsgeCkpKVxuICAgICAgICAgKGNvbmohICgtPiB6ICgqIG51bS12ZXJ0cy1hY3Jvc3MpICgrIChpbmMgeCkpKSlcbiAgICAgICAgIChjb25qISAoLT4geiBpbmMgKCogbnVtLXZlcnRzLWFjcm9zcykgKCsgeCkpKVxuICAgICAgICAgKGNvbmohICgtPiB6IGluYyAoKiBudW0tdmVydHMtYWNyb3NzKSAoKyAoaW5jIHgpKSkpXG4gICAgICAgICAoY29uaiEgKC0+IHogKCogbnVtLXZlcnRzLWFjcm9zcykgKCsgKGluYyB4KSkpKSkpXG4gICAgICAgaW5kaWNlc1xuICAgICAgIChyYW5nZSBzdWJkaXZpc2lvbnMtd2lkdGgpKSlcbiAgICAgKHRyYW5zaWVudCBbXSlcbiAgICAgKHJhbmdlIHN1YmRpdmlzaW9ucy1kZXB0aCkpKVxuICAgKHVwZGF0ZSA6cG9zaXRpb25zIHBlcnNpc3RlbnQhKVxuICAgKHVwZGF0ZSA6bm9ybWFscyBwZXJzaXN0ZW50ISlcbiAgICh1cGRhdGUgOnRleGNvb3JkcyBwZXJzaXN0ZW50ISlcbiAgICh1cGRhdGUgOmluZGljZXMgcGVyc2lzdGVudCEpKSkpXG4ifSB7OnN5bSBzcGhlcmUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbezprZXlzIFtyYWRpdXMgc3ViZGl2aXNpb25zLWF4aXMgc3ViZGl2aXNpb25zLWhlaWdodF19XSl9LCA6c291cmNlICIoZGVmblxuIHNwaGVyZVxuIFt7OmtleXMgW3JhZGl1cyBzdWJkaXZpc2lvbnMtYXhpcyBzdWJkaXZpc2lvbnMtaGVpZ2h0XX1dXG4gKGxldFxuICBbc3RhcnQtbGF0aXR1ZGVcbiAgIDBcbiAgIGVuZC1sYXRpdHVkZVxuICAgKG1hdGggUEkpXG4gICBzdGFydC1sb25naXR1ZGVcbiAgIDBcbiAgIGVuZC1sb25naXR1ZGVcbiAgICgqIDIgKG1hdGggUEkpKVxuICAgbGF0LXJhbmdlXG4gICAoLSBlbmQtbGF0aXR1ZGUgc3RhcnQtbGF0aXR1ZGUpXG4gICBsb25nLXJhbmdlXG4gICAoLSBlbmQtbG9uZ2l0dWRlIHN0YXJ0LWxvbmdpdHVkZSlcbiAgIG51bS12ZXJ0aWNlc1xuICAgKCogKGluYyBzdWJkaXZpc2lvbnMtYXhpcykgKGluYyBzdWJkaXZpc2lvbnMtaGVpZ2h0KSlcbiAgIG51bS12ZXJ0cy1hcm91bmRcbiAgIChpbmMgc3ViZGl2aXNpb25zLWF4aXMpXVxuICAoLT5cbiAgIChmblxuICAgIFttIHldXG4gICAgKHJlZHVjZVxuICAgICAoZm5cbiAgICAgIFttIHhdXG4gICAgICAobGV0XG4gICAgICAgW3VcbiAgICAgICAgKC8geCBzdWJkaXZpc2lvbnMtYXhpcylcbiAgICAgICAgdlxuICAgICAgICAoLyB5IHN1YmRpdmlzaW9ucy1oZWlnaHQpXG4gICAgICAgIHRoZXRhXG4gICAgICAgICgrICgqIGxvbmctcmFuZ2UgdSkgc3RhcnQtbG9uZ2l0dWRlKVxuICAgICAgICBwaGlcbiAgICAgICAgKCsgKCogbGF0LXJhbmdlIHYpIHN0YXJ0LWxhdGl0dWRlKVxuICAgICAgICBzaW4tdGhldGFcbiAgICAgICAgKG1hdGggc2luIHRoZXRhKVxuICAgICAgICBjb3MtdGhldGFcbiAgICAgICAgKG1hdGggY29zIHRoZXRhKVxuICAgICAgICBzaW4tcGhpXG4gICAgICAgIChtYXRoIHNpbiBwaGkpXG4gICAgICAgIGNvcy1waGlcbiAgICAgICAgKG1hdGggY29zIHBoaSlcbiAgICAgICAgdXhcbiAgICAgICAgKCogY29zLXRoZXRhIHNpbi1waGkpXG4gICAgICAgIHV5XG4gICAgICAgIGNvcy1waGlcbiAgICAgICAgdXpcbiAgICAgICAgKCogc2luLXRoZXRhIHNpbi1waGkpXVxuICAgICAgICgtPlxuICAgICAgICBtXG4gICAgICAgICh1cGRhdGVcbiAgICAgICAgIDpwb3NpdGlvbnNcbiAgICAgICAgIChmblxuICAgICAgICAgIFtwb3NpdGlvbnNdXG4gICAgICAgICAgKC0+XG4gICAgICAgICAgIHBvc2l0aW9uc1xuICAgICAgICAgICAoY29uaiEgKCogcmFkaXVzIHV4KSlcbiAgICAgICAgICAgKGNvbmohICgqIHJhZGl1cyB1eSkpXG4gICAgICAgICAgIChjb25qISAoKiByYWRpdXMgdXopKSkpKVxuICAgICAgICAodXBkYXRlXG4gICAgICAgICA6bm9ybWFsc1xuICAgICAgICAgKGZuIFtub3JtYWxzXSAoLT4gbm9ybWFscyAoY29uaiEgdXgpIChjb25qISB1eSkgKGNvbmohIHV6KSkpKVxuICAgICAgICAodXBkYXRlXG4gICAgICAgICA6dGV4Y29vcmRzXG4gICAgICAgICAoZm4gW3RleGNvb3Jkc10gKC0+IHRleGNvb3JkcyAoY29uaiEgKC0gMSB1KSkgKGNvbmohIHYpKSkpKSkpXG4gICAgIG1cbiAgICAgKHJhbmdlIChpbmMgc3ViZGl2aXNpb25zLWF4aXMpKSkpXG4gICAocmVkdWNlXG4gICAgezpwb3NpdGlvbnMgKHRyYW5zaWVudCBbXSksXG4gICAgIDpub3JtYWxzICh0cmFuc2llbnQgW10pLFxuICAgICA6dGV4Y29vcmRzICh0cmFuc2llbnQgW10pfVxuICAgIChyYW5nZSAoaW5jIHN1YmRpdmlzaW9ucy1oZWlnaHQpKSlcbiAgIChhc3NvY1xuICAgIDppbmRpY2VzXG4gICAgKHJlZHVjZVxuICAgICAoZm5cbiAgICAgIFtpbmRpY2VzIHldXG4gICAgICAocmVkdWNlXG4gICAgICAgKGZuXG4gICAgICAgIFtpbmRpY2VzIHhdXG4gICAgICAgICgtPlxuICAgICAgICAgaW5kaWNlc1xuICAgICAgICAgKGNvbmohICgtPiB5ICgqIG51bS12ZXJ0cy1hcm91bmQpICgrIHgpKSlcbiAgICAgICAgIChjb25qISAoLT4geSAoKiBudW0tdmVydHMtYXJvdW5kKSAoKyAoaW5jIHgpKSkpXG4gICAgICAgICAoY29uaiEgKC0+IHkgaW5jICgqIG51bS12ZXJ0cy1hcm91bmQpICgrIHgpKSlcbiAgICAgICAgIChjb25qISAoLT4geSBpbmMgKCogbnVtLXZlcnRzLWFyb3VuZCkgKCsgeCkpKVxuICAgICAgICAgKGNvbmohICgtPiB5ICgqIG51bS12ZXJ0cy1hcm91bmQpICgrIChpbmMgeCkpKSlcbiAgICAgICAgIChjb25qISAoLT4geSBpbmMgKCogbnVtLXZlcnRzLWFyb3VuZCkgKCsgKGluYyB4KSkpKSkpXG4gICAgICAgaW5kaWNlc1xuICAgICAgIChyYW5nZSBzdWJkaXZpc2lvbnMtYXhpcykpKVxuICAgICAodHJhbnNpZW50IFtdKVxuICAgICAocmFuZ2Ugc3ViZGl2aXNpb25zLWhlaWdodCkpKVxuICAgKHVwZGF0ZSA6cG9zaXRpb25zIHBlcnNpc3RlbnQhKVxuICAgKHVwZGF0ZSA6bm9ybWFscyBwZXJzaXN0ZW50ISlcbiAgICh1cGRhdGUgOnRleGNvb3JkcyBwZXJzaXN0ZW50ISlcbiAgICh1cGRhdGUgOmluZGljZXMgcGVyc2lzdGVudCEpKSkpXG4ifSB7OnN5bSBjdWJlLWZhY2UtaW5kaWNlcywgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBjdWJlLWZhY2UtaW5kaWNlc1xuIFtbMyA3IDUgMV0gWzYgMiAwIDRdIFs2IDcgMyAyXSBbMCAxIDUgNF0gWzcgNiA0IDVdIFsyIDMgMSAwXV0pXG4ifSB7OnN5bSBjdWJlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3s6a2V5cyBbc2l6ZV0sIDpvciB7c2l6ZSAxfX1dKX0sIDpzb3VyY2UgIihkZWZuXG4gY3ViZVxuIFt7OmtleXMgW3NpemVdLCA6b3Ige3NpemUgMX19XVxuIChsZXRcbiAgW2tcbiAgICgvIHNpemUgMilcbiAgIGNvcm5lci12ZXJ0aWNlc1xuICAgW1soLSBrKSAoLSBrKSAoLSBrKV1cbiAgICBbayAoLSBrKSAoLSBrKV1cbiAgICBbKC0gaykgayAoLSBrKV1cbiAgICBbayBrICgtIGspXVxuICAgIFsoLSBrKSAoLSBrKSBrXVxuICAgIFtrICgtIGspIGtdXG4gICAgWygtIGspIGsga11cbiAgICBbayBrIGtdXVxuICAgZmFjZS1ub3JtYWxzXG4gICBbWzEgMCAwXSBbLTEgMCAwXSBbMCAxIDBdIFswIC0xIDBdIFswIDAgMV0gWzAgMCAtMV1dXG4gICB1di1jb29yZHNcbiAgIFtbMSAwXSBbMCAwXSBbMCAxXSBbMSAxXV1cbiAgIG51bS12ZXJ0aWNlc1xuICAgKCogNiA0KV1cbiAgKC0+XG4gICAoZm5cbiAgICBbbSBmXVxuICAgIChsZXRcbiAgICAgW2ZhY2UtaW5kaWNlcyAobnRoIGN1YmUtZmFjZS1pbmRpY2VzIGYpIG9mZnNldCAoKiA0IGYpXVxuICAgICAoLT5cbiAgICAgIChmblxuICAgICAgIFttIHZdXG4gICAgICAgKC0+XG4gICAgICAgIG1cbiAgICAgICAgKHVwZGF0ZVxuICAgICAgICAgOnBvc2l0aW9uc1xuICAgICAgICAgKGZuXG4gICAgICAgICAgW3Bvc2l0aW9uc11cbiAgICAgICAgICAobGV0XG4gICAgICAgICAgIFtbeCB5IHpdIChudGggY29ybmVyLXZlcnRpY2VzIChudGggZmFjZS1pbmRpY2VzIHYpKV1cbiAgICAgICAgICAgKC0+IHBvc2l0aW9ucyAoY29uaiEgeCkgKGNvbmohIHkpIChjb25qISB6KSkpKSlcbiAgICAgICAgKHVwZGF0ZVxuICAgICAgICAgOm5vcm1hbHNcbiAgICAgICAgIChmblxuICAgICAgICAgIFtub3JtYWxzXVxuICAgICAgICAgIChsZXRcbiAgICAgICAgICAgW1t4IHkgel0gKG50aCBmYWNlLW5vcm1hbHMgZildXG4gICAgICAgICAgICgtPiBub3JtYWxzIChjb25qISB4KSAoY29uaiEgeSkgKGNvbmohIHopKSkpKVxuICAgICAgICAodXBkYXRlXG4gICAgICAgICA6dGV4Y29vcmRzXG4gICAgICAgICAoZm5cbiAgICAgICAgICBbdGV4Y29vcmRzXVxuICAgICAgICAgIChsZXRcbiAgICAgICAgICAgW1t1IHZdIChudGggdXYtY29vcmRzIHYpXVxuICAgICAgICAgICAoLT4gdGV4Y29vcmRzIChjb25qISB1KSAoY29uaiEgdikpKSkpKSlcbiAgICAgIChyZWR1Y2UgbSAocmFuZ2UgNCkpXG4gICAgICAodXBkYXRlXG4gICAgICAgOmluZGljZXNcbiAgICAgICAoZm5cbiAgICAgICAgW2luZGljZXNdXG4gICAgICAgICgtPlxuICAgICAgICAgaW5kaWNlc1xuICAgICAgICAgKGNvbmohICgrIG9mZnNldCAwKSlcbiAgICAgICAgIChjb25qISAoKyBvZmZzZXQgMSkpXG4gICAgICAgICAoY29uaiEgKCsgb2Zmc2V0IDIpKVxuICAgICAgICAgKGNvbmohICgrIG9mZnNldCAwKSlcbiAgICAgICAgIChjb25qISAoKyBvZmZzZXQgMikpXG4gICAgICAgICAoY29uaiEgKCsgb2Zmc2V0IDMpKSkpKSkpKVxuICAgKHJlZHVjZVxuICAgIHs6cG9zaXRpb25zICh0cmFuc2llbnQgW10pLFxuICAgICA6bm9ybWFscyAodHJhbnNpZW50IFtdKSxcbiAgICAgOnRleGNvb3JkcyAodHJhbnNpZW50IFtdKSxcbiAgICAgOmluZGljZXMgKHRyYW5zaWVudCBbXSl9XG4gICAgKHJhbmdlIDYpKVxuICAgKHVwZGF0ZSA6cG9zaXRpb25zIHBlcnNpc3RlbnQhKVxuICAgKHVwZGF0ZSA6bm9ybWFscyBwZXJzaXN0ZW50ISlcbiAgICh1cGRhdGUgOnRleGNvb3JkcyBwZXJzaXN0ZW50ISlcbiAgICh1cGRhdGUgOmluZGljZXMgcGVyc2lzdGVudCEpKSkpXG4ifSB7OnN5bSBjeWxpbmRlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt7OmtleXMgW2JvdHRvbS1yYWRpdXMgdG9wLXJhZGl1cyBoZWlnaHQgcmFkaWFsLXN1YmRpdmlzaW9ucyB2ZXJ0aWNhbC1zdWJkaXZpc2lvbnMgdG9wLWNhcD8gYm90dG9tLWNhcD9dLCA6b3Ige3RvcC1jYXA/IHRydWUsIGJvdHRvbS1jYXA/IHRydWV9fV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjeWxpbmRlclxuIFt7OmtleXNcbiAgIFtib3R0b20tcmFkaXVzXG4gICAgdG9wLXJhZGl1c1xuICAgIGhlaWdodFxuICAgIHJhZGlhbC1zdWJkaXZpc2lvbnNcbiAgICB2ZXJ0aWNhbC1zdWJkaXZpc2lvbnNcbiAgICB0b3AtY2FwP1xuICAgIGJvdHRvbS1jYXA/XSxcbiAgIDpvciB7dG9wLWNhcD8gdHJ1ZSwgYm90dG9tLWNhcD8gdHJ1ZX19XVxuIChsZXRcbiAgW2V4dHJhXG4gICAoKyAoaWYgdG9wLWNhcD8gMiAwKSAoaWYgYm90dG9tLWNhcD8gMiAwKSlcbiAgIG51bS12ZXJ0aWNlc1xuICAgKCogKGluYyByYWRpYWwtc3ViZGl2aXNpb25zKSAoKyB2ZXJ0aWNhbC1zdWJkaXZpc2lvbnMgMSBleHRyYSkpXG4gICB2ZXJ0cy1hcm91bmQtZWRnZVxuICAgKGluYyByYWRpYWwtc3ViZGl2aXNpb25zKVxuICAgc2xhbnRcbiAgIChtYXRoIGF0YW4yICgtIGJvdHRvbS1yYWRpdXMgdG9wLXJhZGl1cykgaGVpZ2h0KVxuICAgY29zLXNsYW50XG4gICAobWF0aCBjb3Mgc2xhbnQpXG4gICBzaW4tc2xhbnRcbiAgIChtYXRoIHNpbiBzbGFudClcbiAgIHN0YXJ0XG4gICAoaWYgdG9wLWNhcD8gLTIgMClcbiAgIGVuZFxuICAgKCsgdmVydGljYWwtc3ViZGl2aXNpb25zIChpZiBib3R0b20tY2FwPyAyIDApKV1cbiAgKC0+XG4gICAoZm5cbiAgICBbbSB5eV1cbiAgICAobGV0XG4gICAgIFt2XG4gICAgICAoLyB5eSB2ZXJ0aWNhbC1zdWJkaXZpc2lvbnMpXG4gICAgICB5XG4gICAgICAoKiBoZWlnaHQgdilcbiAgICAgIFt5IHYgcmluZy1yYWRpdXNdXG4gICAgICAoY29uZFxuICAgICAgICg8IHl5IDApXG4gICAgICAgWzAgMSBib3R0b20tcmFkaXVzXVxuICAgICAgICg+IHl5IHZlcnRpY2FsLXN1YmRpdmlzaW9ucylcbiAgICAgICBbaGVpZ2h0IDEgdG9wLXJhZGl1c11cbiAgICAgICA6ZWxzZVxuICAgICAgIFt5XG4gICAgICAgIHZcbiAgICAgICAgKCtcbiAgICAgICAgIGJvdHRvbS1yYWRpdXNcbiAgICAgICAgICgqXG4gICAgICAgICAgKC0gdG9wLXJhZGl1cyBib3R0b20tcmFkaXVzKVxuICAgICAgICAgICgvIHl5IHZlcnRpY2FsLXN1YmRpdmlzaW9ucykpKV0pXG4gICAgICBbeSB2IHJpbmctcmFkaXVzXVxuICAgICAgKGlmXG4gICAgICAgKG9yICg9IHl5IC0yKSAoPSB5eSAoKyB2ZXJ0aWNhbC1zdWJkaXZpc2lvbnMgMikpKVxuICAgICAgIFt5IDAgMF1cbiAgICAgICBbeSB2IHJpbmctcmFkaXVzXSlcbiAgICAgIHlcbiAgICAgICgtIHkgKC8gaGVpZ2h0IDIpKV1cbiAgICAgKHJlZHVjZVxuICAgICAgKGZuXG4gICAgICAgW20gaWldXG4gICAgICAgKGxldFxuICAgICAgICBbc2luXG4gICAgICAgICAobWF0aCBzaW4gKC0+IGlpICgqIChtYXRoIFBJKSkgKCogMikgKC8gcmFkaWFsLXN1YmRpdmlzaW9ucykpKVxuICAgICAgICAgY29zXG4gICAgICAgICAobWF0aFxuICAgICAgICAgIGNvc1xuICAgICAgICAgICgtPiBpaSAoKiAobWF0aCBQSSkpICgqIDIpICgvIHJhZGlhbC1zdWJkaXZpc2lvbnMpKSldXG4gICAgICAgICgtPlxuICAgICAgICAgbVxuICAgICAgICAgKHVwZGF0ZVxuICAgICAgICAgIDpwb3NpdGlvbnNcbiAgICAgICAgICAoZm5cbiAgICAgICAgICAgW3Bvc2l0aW9uc11cbiAgICAgICAgICAgKC0+XG4gICAgICAgICAgICBwb3NpdGlvbnNcbiAgICAgICAgICAgIChjb25qISAoKiBzaW4gcmluZy1yYWRpdXMpKVxuICAgICAgICAgICAgKGNvbmohIHkpXG4gICAgICAgICAgICAoY29uaiEgKCogY29zIHJpbmctcmFkaXVzKSkpKSlcbiAgICAgICAgICh1cGRhdGVcbiAgICAgICAgICA6bm9ybWFsc1xuICAgICAgICAgIChmblxuICAgICAgICAgICBbbm9ybWFsc11cbiAgICAgICAgICAgKC0+XG4gICAgICAgICAgICBub3JtYWxzXG4gICAgICAgICAgICAoY29uaiFcbiAgICAgICAgICAgICAoaWZcbiAgICAgICAgICAgICAgKG9yICg8IHl5IDApICg+IHl5IHZlcnRpY2FsLXN1YmRpdmlzaW9ucykpXG4gICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgKCogc2luIGNvcy1zbGFudCkpKVxuICAgICAgICAgICAgKGNvbmohXG4gICAgICAgICAgICAgKGlmXG4gICAgICAgICAgICAgICg8IHl5IDApXG4gICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgIChpZiAoPiB5eSB2ZXJ0aWNhbC1zdWJkaXZpc2lvbnMpIDEgc2luLXNsYW50KSkpXG4gICAgICAgICAgICAoY29uaiFcbiAgICAgICAgICAgICAoaWZcbiAgICAgICAgICAgICAgKG9yICg8IHl5IDApICg+IHl5IHZlcnRpY2FsLXN1YmRpdmlzaW9ucykpXG4gICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgKCogY29zIGNvcy1zbGFudCkpKSkpKVxuICAgICAgICAgKHVwZGF0ZVxuICAgICAgICAgIDp0ZXhjb29yZHNcbiAgICAgICAgICAoZm5cbiAgICAgICAgICAgW3RleGNvb3Jkc11cbiAgICAgICAgICAgKC0+XG4gICAgICAgICAgICB0ZXhjb29yZHNcbiAgICAgICAgICAgIChjb25qISAoLyBpaSByYWRpYWwtc3ViZGl2aXNpb25zKSlcbiAgICAgICAgICAgIChjb25qISAoLSAxIHYpKSkpKSkpKVxuICAgICAgbVxuICAgICAgKHJhbmdlIHZlcnRzLWFyb3VuZC1lZGdlKSkpKVxuICAgKHJlZHVjZVxuICAgIHs6cG9zaXRpb25zICh0cmFuc2llbnQgW10pLFxuICAgICA6bm9ybWFscyAodHJhbnNpZW50IFtdKSxcbiAgICAgOnRleGNvb3JkcyAodHJhbnNpZW50IFtdKX1cbiAgICAocmFuZ2Ugc3RhcnQgKGluYyBlbmQpKSlcbiAgIChhc3NvY1xuICAgIDppbmRpY2VzXG4gICAgKHJlZHVjZVxuICAgICAoZm5cbiAgICAgIFtpbmRpY2VzIHl5XVxuICAgICAgKHJlZHVjZVxuICAgICAgIChmblxuICAgICAgICBbaW5kaWNlcyBpaV1cbiAgICAgICAgKC0+XG4gICAgICAgICBpbmRpY2VzXG4gICAgICAgICAoY29uaiEgKC0+IHZlcnRzLWFyb3VuZC1lZGdlICgqICgrIHl5IDApKSAoKyAwKSAoKyBpaSkpKVxuICAgICAgICAgKGNvbmohICgtPiB2ZXJ0cy1hcm91bmQtZWRnZSAoKiAoKyB5eSAwKSkgKCsgMSkgKCsgaWkpKSlcbiAgICAgICAgIChjb25qISAoLT4gdmVydHMtYXJvdW5kLWVkZ2UgKCogKCsgeXkgMSkpICgrIDEpICgrIGlpKSkpXG4gICAgICAgICAoY29uaiEgKC0+IHZlcnRzLWFyb3VuZC1lZGdlICgqICgrIHl5IDApKSAoKyAwKSAoKyBpaSkpKVxuICAgICAgICAgKGNvbmohICgtPiB2ZXJ0cy1hcm91bmQtZWRnZSAoKiAoKyB5eSAxKSkgKCsgMSkgKCsgaWkpKSlcbiAgICAgICAgIChjb25qISAoLT4gdmVydHMtYXJvdW5kLWVkZ2UgKCogKCsgeXkgMSkpICgrIDApICgrIGlpKSkpKSlcbiAgICAgICBpbmRpY2VzXG4gICAgICAgKHJhbmdlIHJhZGlhbC1zdWJkaXZpc2lvbnMpKSlcbiAgICAgKHRyYW5zaWVudCBbXSlcbiAgICAgKHJhbmdlICgrIHZlcnRpY2FsLXN1YmRpdmlzaW9ucyBleHRyYSkpKSlcbiAgICh1cGRhdGUgOnBvc2l0aW9ucyBwZXJzaXN0ZW50ISlcbiAgICh1cGRhdGUgOm5vcm1hbHMgcGVyc2lzdGVudCEpXG4gICAodXBkYXRlIDp0ZXhjb29yZHMgcGVyc2lzdGVudCEpXG4gICAodXBkYXRlIDppbmRpY2VzIHBlcnNpc3RlbnQhKSkpKVxuIn0gezpzeW0gY3Jlc2NlbnQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbezprZXlzIFt2ZXJ0aWNhbC1yYWRpdXMgb3V0ZXItcmFkaXVzIGlubmVyLXJhZGl1cyB0aGlja25lc3Mgc3ViZGl2aXNpb25zLWRvd24gc3RhcnQtb2Zmc2V0IGVuZC1vZmZzZXRdLCA6b3Ige3N0YXJ0LW9mZnNldCAwLCBlbmQtb2Zmc2V0IDF9fV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjcmVzY2VudFxuIFt7OmtleXNcbiAgIFt2ZXJ0aWNhbC1yYWRpdXNcbiAgICBvdXRlci1yYWRpdXNcbiAgICBpbm5lci1yYWRpdXNcbiAgICB0aGlja25lc3NcbiAgICBzdWJkaXZpc2lvbnMtZG93blxuICAgIHN0YXJ0LW9mZnNldFxuICAgIGVuZC1vZmZzZXRdLFxuICAgOm9yIHtzdGFydC1vZmZzZXQgMCwgZW5kLW9mZnNldCAxfX1dXG4gKGxldFxuICBbc3ViZGl2aXNpb25zLXRoaWNrXG4gICAyXG4gICBvZmZzZXQtcmFuZ2VcbiAgICgtIGVuZC1vZmZzZXQgc3RhcnQtb2Zmc2V0KVxuICAgbnVtLXZlcnRpY2VzXG4gICAoLT4gKGluYyBzdWJkaXZpc2lvbnMtZG93bikgKCogMikgKCogKCsgMiBzdWJkaXZpc2lvbnMtdGhpY2spKSlcbiAgIGxlcnBcbiAgIChmbiBbYSBiIHNdICgtPiBhICgrICgtIGIgYSkpICgqIHMpKSlcbiAgIGNyZWF0ZS1hcmNcbiAgIChmblxuICAgIFttIGFyYy1yYWRpdXMgeCBub3JtYWwtbXVsdCBub3JtYWwtYWRkIHUtbXVsdCB1LWFkZF1cbiAgICAocmVkdWNlXG4gICAgIChmblxuICAgICAgW20gel1cbiAgICAgIChsZXRcbiAgICAgICBbdS1iYWNrXG4gICAgICAgICgvIHggKGRlYyBzdWJkaXZpc2lvbnMtdGhpY2spKVxuICAgICAgICB2XG4gICAgICAgICgvIHogc3ViZGl2aXNpb25zLWRvd24pXG4gICAgICAgIHgtYmFja1xuICAgICAgICAoKiAoLSB1LWJhY2sgMC41KSAyKVxuICAgICAgICBhbmdsZVxuICAgICAgICAoLT4gKCogdiBvZmZzZXQtcmFuZ2UpICgrIHN0YXJ0LW9mZnNldCkgKCogKG1hdGggUEkpKSlcbiAgICAgICAgc1xuICAgICAgICAobWF0aCBzaW4gYW5nbGUpXG4gICAgICAgIGNcbiAgICAgICAgKG1hdGggY29zIGFuZ2xlKVxuICAgICAgICByYWRpdXNcbiAgICAgICAgKGxlcnAgdmVydGljYWwtcmFkaXVzIGFyYy1yYWRpdXMgcylcbiAgICAgICAgcHhcbiAgICAgICAgKCogeC1iYWNrIHRoaWNrbmVzcylcbiAgICAgICAgcHlcbiAgICAgICAgKCogYyB2ZXJ0aWNhbC1yYWRpdXMpXG4gICAgICAgIHB6XG4gICAgICAgICgqIHMgcmFkaXVzKVxuICAgICAgICBbbnggbnkgbnpdXG4gICAgICAgICgtPj4gWzAgcyBjXSAobWFwdiAqIG5vcm1hbC1tdWx0KSAobWFwdiArIG5vcm1hbC1hZGQpKV1cbiAgICAgICAoLT5cbiAgICAgICAgbVxuICAgICAgICAodXBkYXRlXG4gICAgICAgICA6cG9zaXRpb25zXG4gICAgICAgICAoZm5cbiAgICAgICAgICBbcG9zaXRpb25zXVxuICAgICAgICAgICgtPiBwb3NpdGlvbnMgKGNvbmohIHB4KSAoY29uaiEgcHkpIChjb25qISBweikpKSlcbiAgICAgICAgKHVwZGF0ZVxuICAgICAgICAgOm5vcm1hbHNcbiAgICAgICAgIChmbiBbbm9ybWFsc10gKC0+IG5vcm1hbHMgKGNvbmohIG54KSAoY29uaiEgbnkpIChjb25qISBueikpKSlcbiAgICAgICAgKHVwZGF0ZVxuICAgICAgICAgOnRleGNvb3Jkc1xuICAgICAgICAgKGZuXG4gICAgICAgICAgW3RleGNvb3Jkc11cbiAgICAgICAgICAoLT5cbiAgICAgICAgICAgdGV4Y29vcmRzXG4gICAgICAgICAgIChjb25qISAoKyAoKiB1LWJhY2sgdS1tdWx0KSB1LWFkZCkpXG4gICAgICAgICAgIChjb25qISB2KSkpKSkpKVxuICAgICBtXG4gICAgIChyYW5nZSAoaW5jIHN1YmRpdmlzaW9ucy1kb3duKSkpKVxuICAgbnVtLXZlcnRpY2VzLWRvd25cbiAgIChpbmMgc3ViZGl2aXNpb25zLWRvd24pXG4gICBjcmVhdGUtc3VyZmFjZVxuICAgKGZuXG4gICAgW20gbGVmdC1hcmMtb2Zmc2V0IHJpZ2h0LWFyYy1vZmZzZXRdXG4gICAgKHVwZGF0ZVxuICAgICBtXG4gICAgIDppbmRpY2VzXG4gICAgIChmblxuICAgICAgW2luZGljZXNdXG4gICAgICAocmVkdWNlXG4gICAgICAgKGZuXG4gICAgICAgIFtpbmRpY2VzIHpdXG4gICAgICAgICgtPlxuICAgICAgICAgaW5kaWNlc1xuICAgICAgICAgKGNvbmohICgrIGxlZnQtYXJjLW9mZnNldCB6IDApKVxuICAgICAgICAgKGNvbmohICgrIGxlZnQtYXJjLW9mZnNldCB6IDEpKVxuICAgICAgICAgKGNvbmohICgrIHJpZ2h0LWFyYy1vZmZzZXQgeiAwKSlcbiAgICAgICAgIChjb25qISAoKyBsZWZ0LWFyYy1vZmZzZXQgeiAxKSlcbiAgICAgICAgIChjb25qISAoKyByaWdodC1hcmMtb2Zmc2V0IHogMSkpXG4gICAgICAgICAoY29uaiEgKCsgcmlnaHQtYXJjLW9mZnNldCB6IDApKSkpXG4gICAgICAgaW5kaWNlc1xuICAgICAgIChyYW5nZSBzdWJkaXZpc2lvbnMtZG93bikpKSkpXVxuICAoLT5cbiAgIChmblxuICAgIFttIHhdXG4gICAgKGxldFxuICAgICBbdS1iYWNrICgtPiB4ICgvIChkZWMgc3ViZGl2aXNpb25zLXRoaWNrKSkgKC0gMC41KSAoKiAyKSldXG4gICAgICgtPlxuICAgICAgbVxuICAgICAgKGNyZWF0ZS1hcmMgb3V0ZXItcmFkaXVzIHggWzEgMSAxXSBbMCAwIDBdIDEgMClcbiAgICAgIChjcmVhdGUtYXJjIG91dGVyLXJhZGl1cyB4IFswIDAgMF0gW3UtYmFjayAwIDBdIDAgMClcbiAgICAgIChjcmVhdGUtYXJjIGlubmVyLXJhZGl1cyB4IFsxIDEgMV0gWzAgMCAwXSAxIDApXG4gICAgICAoY3JlYXRlLWFyYyBpbm5lci1yYWRpdXMgeCBbMCAwIDBdIFt1LWJhY2sgMCAwXSAwIDEpKSkpXG4gICAocmVkdWNlXG4gICAgezpwb3NpdGlvbnMgKHRyYW5zaWVudCBbXSksXG4gICAgIDpub3JtYWxzICh0cmFuc2llbnQgW10pLFxuICAgICA6dGV4Y29vcmRzICh0cmFuc2llbnQgW10pLFxuICAgICA6aW5kaWNlcyAodHJhbnNpZW50IFtdKX1cbiAgICAocmFuZ2Ugc3ViZGl2aXNpb25zLXRoaWNrKSlcbiAgIChjcmVhdGUtc3VyZmFjZSAoKiBudW0tdmVydGljZXMtZG93biAwKSAoKiBudW0tdmVydGljZXMtZG93biA0KSlcbiAgIChjcmVhdGUtc3VyZmFjZSAoKiBudW0tdmVydGljZXMtZG93biA1KSAoKiBudW0tdmVydGljZXMtZG93biA3KSlcbiAgIChjcmVhdGUtc3VyZmFjZSAoKiBudW0tdmVydGljZXMtZG93biA2KSAoKiBudW0tdmVydGljZXMtZG93biAyKSlcbiAgIChjcmVhdGUtc3VyZmFjZSAoKiBudW0tdmVydGljZXMtZG93biAzKSAoKiBudW0tdmVydGljZXMtZG93biAxKSlcbiAgICh1cGRhdGUgOnBvc2l0aW9ucyBwZXJzaXN0ZW50ISlcbiAgICh1cGRhdGUgOm5vcm1hbHMgcGVyc2lzdGVudCEpXG4gICAodXBkYXRlIDp0ZXhjb29yZHMgcGVyc2lzdGVudCEpXG4gICAodXBkYXRlIDppbmRpY2VzIHBlcnNpc3RlbnQhKSkpKVxuIn0gezpzeW0gdG9ydXMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbezprZXlzIFtyYWRpdXMgdGhpY2tuZXNzIHJhZGlhbC1zdWJkaXZpc2lvbnMgYm9keS1zdWJkaXZpc2lvbnMgc3RhcnQtYW5nbGUgZW5kLWFuZ2xlXSwgOm9yIHtzdGFydC1hbmdsZSAwLCBlbmQtYW5nbGUgKCogMiAobWF0aCBQSSkpfX1dKX0sIDpzb3VyY2UgIihkZWZuXG4gdG9ydXNcbiBbezprZXlzXG4gICBbcmFkaXVzXG4gICAgdGhpY2tuZXNzXG4gICAgcmFkaWFsLXN1YmRpdmlzaW9uc1xuICAgIGJvZHktc3ViZGl2aXNpb25zXG4gICAgc3RhcnQtYW5nbGVcbiAgICBlbmQtYW5nbGVdLFxuICAgOm9yIHtzdGFydC1hbmdsZSAwLCBlbmQtYW5nbGUgKCogMiAobWF0aCBQSSkpfX1dXG4gKGxldFxuICBbYW5nbGUtcmFuZ2VcbiAgICgtIGVuZC1hbmdsZSBzdGFydC1hbmdsZSlcbiAgIHJhZGlhbC1wYXJ0c1xuICAgKGluYyByYWRpYWwtc3ViZGl2aXNpb25zKVxuICAgYm9keS1wYXJ0c1xuICAgKGluYyBib2R5LXN1YmRpdmlzaW9ucylcbiAgIG51bS12ZXJ0aWNlc1xuICAgKCogcmFkaWFsLXBhcnRzIGJvZHktcGFydHMpXVxuICAoLT5cbiAgIChmblxuICAgIFttIHNsaWNlXVxuICAgIChsZXRcbiAgICAgW3ZcbiAgICAgICgvIHNsaWNlIGJvZHktc3ViZGl2aXNpb25zKVxuICAgICAgc2xpY2UtYW5nbGVcbiAgICAgICgqIHYgKG1hdGggUEkpIDIpXG4gICAgICBzbGljZS1zaW5cbiAgICAgIChtYXRoIHNpbiBzbGljZS1hbmdsZSlcbiAgICAgIHJpbmctcmFkaXVzXG4gICAgICAoKyByYWRpdXMgKCogc2xpY2Utc2luIHRoaWNrbmVzcykpXG4gICAgICBueVxuICAgICAgKG1hdGggY29zIHNsaWNlLWFuZ2xlKVxuICAgICAgeVxuICAgICAgKCogbnkgdGhpY2tuZXNzKV1cbiAgICAgKHJlZHVjZVxuICAgICAgKGZuXG4gICAgICAgW20gcmluZ11cbiAgICAgICAobGV0XG4gICAgICAgIFt1XG4gICAgICAgICAoLyByaW5nIHJhZGlhbC1zdWJkaXZpc2lvbnMpXG4gICAgICAgICByaW5nLWFuZ2xlXG4gICAgICAgICAoKyBzdGFydC1hbmdsZSAoKiB1IGFuZ2xlLXJhbmdlKSlcbiAgICAgICAgIHgtc2luXG4gICAgICAgICAobWF0aCBzaW4gcmluZy1hbmdsZSlcbiAgICAgICAgIHotY29zXG4gICAgICAgICAobWF0aCBjb3MgcmluZy1hbmdsZSlcbiAgICAgICAgIHhcbiAgICAgICAgICgqIHgtc2luIHJpbmctcmFkaXVzKVxuICAgICAgICAgelxuICAgICAgICAgKCogei1jb3MgcmluZy1yYWRpdXMpXG4gICAgICAgICBueFxuICAgICAgICAgKCogeC1zaW4gc2xpY2Utc2luKVxuICAgICAgICAgbnpcbiAgICAgICAgICgqIHotY29zIHNsaWNlLXNpbildXG4gICAgICAgICgtPlxuICAgICAgICAgbVxuICAgICAgICAgKHVwZGF0ZVxuICAgICAgICAgIDpwb3NpdGlvbnNcbiAgICAgICAgICAoZm5cbiAgICAgICAgICAgW3Bvc2l0aW9uc11cbiAgICAgICAgICAgKC0+IHBvc2l0aW9ucyAoY29uaiEgeCkgKGNvbmohIHkpIChjb25qISB6KSkpKVxuICAgICAgICAgKHVwZGF0ZVxuICAgICAgICAgIDpub3JtYWxzXG4gICAgICAgICAgKGZuIFtub3JtYWxzXSAoLT4gbm9ybWFscyAoY29uaiEgbngpIChjb25qISBueSkgKGNvbmohIG56KSkpKVxuICAgICAgICAgKHVwZGF0ZVxuICAgICAgICAgIDp0ZXhjb29yZHNcbiAgICAgICAgICAoZm4gW3RleGNvb3Jkc10gKC0+IHRleGNvb3JkcyAoY29uaiEgdSkgKGNvbmohICgtIDEgdikpKSkpKSkpXG4gICAgICBtXG4gICAgICAocmFuZ2UgcmFkaWFsLXBhcnRzKSkpKVxuICAgKHJlZHVjZVxuICAgIHs6cG9zaXRpb25zICh0cmFuc2llbnQgW10pLFxuICAgICA6bm9ybWFscyAodHJhbnNpZW50IFtdKSxcbiAgICAgOnRleGNvb3JkcyAodHJhbnNpZW50IFtdKX1cbiAgICAocmFuZ2UgYm9keS1wYXJ0cykpXG4gICAoYXNzb2NcbiAgICA6aW5kaWNlc1xuICAgIChyZWR1Y2VcbiAgICAgKGZuXG4gICAgICBbaW5kaWNlcyBzbGljZV1cbiAgICAgIChyZWR1Y2VcbiAgICAgICAoZm5cbiAgICAgICAgW2luZGljZXMgcmluZ11cbiAgICAgICAgKGxldFxuICAgICAgICAgW25leHQtcmluZy1pbmRleCAoaW5jIHJpbmcpIG5leHQtc2xpY2UtaW5kZXggKGluYyBzbGljZSldXG4gICAgICAgICAoLT5cbiAgICAgICAgICBpbmRpY2VzXG4gICAgICAgICAgKGNvbmohICgrICgqIHJhZGlhbC1wYXJ0cyBzbGljZSkgcmluZykpXG4gICAgICAgICAgKGNvbmohICgrICgqIHJhZGlhbC1wYXJ0cyBuZXh0LXNsaWNlLWluZGV4KSByaW5nKSlcbiAgICAgICAgICAoY29uaiEgKCsgKCogcmFkaWFsLXBhcnRzIHNsaWNlKSBuZXh0LXJpbmctaW5kZXgpKVxuICAgICAgICAgIChjb25qISAoKyAoKiByYWRpYWwtcGFydHMgbmV4dC1zbGljZS1pbmRleCkgcmluZykpXG4gICAgICAgICAgKGNvbmohICgrICgqIHJhZGlhbC1wYXJ0cyBuZXh0LXNsaWNlLWluZGV4KSBuZXh0LXJpbmctaW5kZXgpKVxuICAgICAgICAgIChjb25qISAoKyAoKiByYWRpYWwtcGFydHMgc2xpY2UpIG5leHQtcmluZy1pbmRleCkpKSkpXG4gICAgICAgaW5kaWNlc1xuICAgICAgIChyYW5nZSByYWRpYWwtc3ViZGl2aXNpb25zKSkpXG4gICAgICh0cmFuc2llbnQgW10pXG4gICAgIChyYW5nZSBib2R5LXN1YmRpdmlzaW9ucykpKVxuICAgKHVwZGF0ZSA6cG9zaXRpb25zIHBlcnNpc3RlbnQhKVxuICAgKHVwZGF0ZSA6bm9ybWFscyBwZXJzaXN0ZW50ISlcbiAgICh1cGRhdGUgOnRleGNvb3JkcyBwZXJzaXN0ZW50ISlcbiAgICh1cGRhdGUgOmluZGljZXMgcGVyc2lzdGVudCEpKSkpXG4ifSB7OnN5bSBkaXNjLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3s6a2V5cyBbcmFkaXVzIGRpdmlzaW9ucyBzdGFja3MgaW5uZXItcmFkaXVzIHN0YWNrLXBvd2VyXSwgOm9yIHtzdGFja3MgMSwgaW5uZXItcmFkaXVzIDAsIHN0YWNrLXBvd2VyIDF9fV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBkaXNjXG4gW3s6a2V5cyBbcmFkaXVzIGRpdmlzaW9ucyBzdGFja3MgaW5uZXItcmFkaXVzIHN0YWNrLXBvd2VyXSxcbiAgIDpvciB7c3RhY2tzIDEsIGlubmVyLXJhZGl1cyAwLCBzdGFjay1wb3dlciAxfX1dXG4gKGxldFxuICBbbnVtLXZlcnRpY2VzXG4gICAoKiAoaW5jIGRpdmlzaW9ucykgKGluYyBzdGFja3MpKVxuICAgcmFkaXVzLXNwYW5cbiAgICgtIHJhZGl1cyBpbm5lci1yYWRpdXMpXG4gICBwb2ludHMtcGVyLXN0YWNrXG4gICAoaW5jIGRpdmlzaW9ucyldXG4gICgtPlxuICAgKGZuXG4gICAgW20gc3RhY2tdXG4gICAgKGxldFxuICAgICBbc3RhY2stcmFkaXVzXG4gICAgICAoK1xuICAgICAgIGlubmVyLXJhZGl1c1xuICAgICAgICgqIHJhZGl1cy1zcGFuIChtYXRoIHBvdyAoLyBzdGFjayBzdGFja3MpIHN0YWNrLXBvd2VyKSkpXVxuICAgICAoLT5cbiAgICAgIChmblxuICAgICAgIFttIGldXG4gICAgICAgKGxldFxuICAgICAgICBbZmlyc3QtaW5kZXhcbiAgICAgICAgICg6Zmlyc3QtaW5kZXggbSlcbiAgICAgICAgIHRoZXRhXG4gICAgICAgICAoLT4gMiAoKiAobWF0aCBQSSkpICgqIGkpICgvIGRpdmlzaW9ucykpXG4gICAgICAgICB4XG4gICAgICAgICAoKiBzdGFjay1yYWRpdXMgKG1hdGggY29zIHRoZXRhKSlcbiAgICAgICAgIHpcbiAgICAgICAgICgqIHN0YWNrLXJhZGl1cyAobWF0aCBzaW4gdGhldGEpKV1cbiAgICAgICAgKC0+XG4gICAgICAgICBtXG4gICAgICAgICAodXBkYXRlXG4gICAgICAgICAgOnBvc2l0aW9uc1xuICAgICAgICAgIChmblxuICAgICAgICAgICBbcG9zaXRpb25zXVxuICAgICAgICAgICAoLT4gcG9zaXRpb25zIChjb25qISB4KSAoY29uaiEgMCkgKGNvbmohIHopKSkpXG4gICAgICAgICAodXBkYXRlXG4gICAgICAgICAgOm5vcm1hbHNcbiAgICAgICAgICAoZm4gW25vcm1hbHNdICgtPiBub3JtYWxzIChjb25qISAwKSAoY29uaiEgMSkgKGNvbmohIDApKSkpXG4gICAgICAgICAodXBkYXRlXG4gICAgICAgICAgOnRleGNvb3Jkc1xuICAgICAgICAgIChmblxuICAgICAgICAgICBbdGV4Y29vcmRzXVxuICAgICAgICAgICAoLT5cbiAgICAgICAgICAgIHRleGNvb3Jkc1xuICAgICAgICAgICAgKGNvbmohICgtIDEgKC8gaSBkaXZpc2lvbnMpKSlcbiAgICAgICAgICAgIChjb25qISAoLyBzdGFjayBzdGFja3MpKSkpKVxuICAgICAgICAgKHVwZGF0ZVxuICAgICAgICAgIDppbmRpY2VzXG4gICAgICAgICAgKGZuXG4gICAgICAgICAgIFtpbmRpY2VzXVxuICAgICAgICAgICAoaWZcbiAgICAgICAgICAgIChhbmQgKHBvcz8gc3RhY2spIChub3Q9IGkgZGl2aXNpb25zKSlcbiAgICAgICAgICAgIChsZXRcbiAgICAgICAgICAgICBbYVxuICAgICAgICAgICAgICAoKyBmaXJzdC1pbmRleCBpIDEpXG4gICAgICAgICAgICAgIGJcbiAgICAgICAgICAgICAgKCsgZmlyc3QtaW5kZXggaSlcbiAgICAgICAgICAgICAgY1xuICAgICAgICAgICAgICAoLT4gZmlyc3QtaW5kZXggKCsgaSkgKC0gcG9pbnRzLXBlci1zdGFjaykpXG4gICAgICAgICAgICAgIGRcbiAgICAgICAgICAgICAgKC0+IGZpcnN0LWluZGV4ICgrIChpbmMgaSkpICgtIHBvaW50cy1wZXItc3RhY2spKV1cbiAgICAgICAgICAgICAoLT5cbiAgICAgICAgICAgICAgaW5kaWNlc1xuICAgICAgICAgICAgICAoY29uaiEgYSlcbiAgICAgICAgICAgICAgKGNvbmohIGIpXG4gICAgICAgICAgICAgIChjb25qISBjKVxuICAgICAgICAgICAgICAoY29uaiEgYSlcbiAgICAgICAgICAgICAgKGNvbmohIGMpXG4gICAgICAgICAgICAgIChjb25qISBkKSkpXG4gICAgICAgICAgICBpbmRpY2VzKSkpKSkpXG4gICAgICAocmVkdWNlIG0gKHJhbmdlIChpbmMgZGl2aXNpb25zKSkpXG4gICAgICAodXBkYXRlIDpmaXJzdC1pbmRleCArIChpbmMgZGl2aXNpb25zKSkpKSlcbiAgIChyZWR1Y2VcbiAgICB7OmZpcnN0LWluZGV4IDAsXG4gICAgIDpwb3NpdGlvbnMgKHRyYW5zaWVudCBbXSksXG4gICAgIDpub3JtYWxzICh0cmFuc2llbnQgW10pLFxuICAgICA6dGV4Y29vcmRzICh0cmFuc2llbnQgW10pLFxuICAgICA6aW5kaWNlcyAodHJhbnNpZW50IFtdKX1cbiAgICAocmFuZ2UgKGluYyBzdGFja3MpKSlcbiAgIChkaXNzb2MgOmZpcnN0LWluZGV4KVxuICAgKHVwZGF0ZSA6cG9zaXRpb25zIHBlcnNpc3RlbnQhKVxuICAgKHVwZGF0ZSA6bm9ybWFscyBwZXJzaXN0ZW50ISlcbiAgICh1cGRhdGUgOnRleGNvb3JkcyBwZXJzaXN0ZW50ISlcbiAgICh1cGRhdGUgOmluZGljZXMgcGVyc2lzdGVudCEpKSkpXG4ifSksIGV4cG91bmQucHJvYmxlbXMgKHs6c3ltIGhpZ2hsaWdodC1saW5lLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ByZWZpeCByZXBsYWNlbWVudF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBoaWdobGlnaHQtbGluZVxuIFtwcmVmaXggcmVwbGFjZW1lbnRdXG4gKGxldFxuICBbbWF4LXdpZHRoXG4gICAoYXBwbHlcbiAgICBtYXhcbiAgICAobWFwXG4gICAgIChmbiogW3AxX180NTAxMyNdIChjb3VudCAoc3RyIHAxX180NTAxMyMpKSlcbiAgICAgKHN0cmluZy9zcGxpdC1saW5lcyByZXBsYWNlbWVudCkpKV1cbiAgKHByaW50ZXIvaW5kZW50XG4gICAoY291bnQgKHN0ciBwcmVmaXgpKVxuICAgKGFwcGx5IHN0ciAocmVwZWF0IG1heC13aWR0aCBcIl5cIikpKSkpXG4ifSB7OnN5bSB2YWx1ZS1pbiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgdmFsdWUtaW4gcGF0aHMvdmFsdWUtaW4pXG4ifSB7OnN5bSBmaXgtdmlhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NwZWMgcHJvYmxlbV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBmaXgtdmlhXG4gW3NwZWMgcHJvYmxlbV1cbiAoaWZcbiAgKD0gc3BlYyAoZmlyc3QgKDp2aWEgcHJvYmxlbSkpKVxuICAoYXNzb2MgcHJvYmxlbSA6ZXhwb3VuZC92aWEgKDp2aWEgcHJvYmxlbSkpXG4gIChhc3NvYyBwcm9ibGVtIDpleHBvdW5kL3ZpYSAoaW50byBbc3BlY10gKDp2aWEgcHJvYmxlbSkpKSkpXG4ifSB7OnN5bSBhbm5vdGF0ZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtleHBsYWluLWRhdGFdKX0sIDpzb3VyY2UgIihkZWZuXG4gYW5ub3RhdGVcbiBbZXhwbGFpbi1kYXRhXVxuIChsZXRcbiAgW3s6Y2xvanVyZS5zcGVjLmFscGhhL2tleXMgW3Byb2JsZW1zIHZhbHVlIGFyZ3MgcmV0IGZuIGZhaWx1cmUgc3BlY119XG4gICBleHBsYWluLWRhdGFcbiAgIGNhbGxlclxuICAgKG9yXG4gICAgKDpjbG9qdXJlLnNwZWMudGVzdC5hbHBoYS9jYWxsZXIgZXhwbGFpbi1kYXRhKVxuICAgICg6b3JjaGVzdHJhLnNwZWMudGVzdC9jYWxsZXIgZXhwbGFpbi1kYXRhKSlcbiAgIGZvcm1cbiAgIChpZlxuICAgIChub3Q9IDppbnN0cnVtZW50IGZhaWx1cmUpXG4gICAgdmFsdWVcbiAgICAoY29uZFxuICAgICAoY29udGFpbnM/IGV4cGxhaW4tZGF0YSA6Y2xvanVyZS5zcGVjLmFscGhhL3JldClcbiAgICAgcmV0XG4gICAgIChjb250YWlucz8gZXhwbGFpbi1kYXRhIDpjbG9qdXJlLnNwZWMuYWxwaGEvYXJncylcbiAgICAgYXJnc1xuICAgICAoY29udGFpbnM/IGV4cGxhaW4tZGF0YSA6Y2xvanVyZS5zcGVjLmFscGhhL2ZuKVxuICAgICBmbikpXG4gICBwcm9ibGVtcydcbiAgIChtYXBcbiAgICAoY29tcFxuICAgICAocGFydGlhbCBhZGp1c3QtaW4gZm9ybSlcbiAgICAgKHBhcnRpYWwgYWRqdXN0LXBhdGggZmFpbHVyZSlcbiAgICAgKHBhcnRpYWwgYWRkLXNwZWMgc3BlYylcbiAgICAgKHBhcnRpYWwgZml4LXZpYSBzcGVjKVxuICAgICAoZm4qIFtwMV9fNDUwMTQjXSAoYXNzb2MgcDFfXzQ1MDE0IyA6ZXhwb3VuZC9mb3JtIGZvcm0pKVxuICAgICAoZm4qXG4gICAgICBbcDFfXzQ1MDE1I11cbiAgICAgIChhc3NvY1xuICAgICAgIHAxX180NTAxNSNcbiAgICAgICA6ZXhwb3VuZC5zcGVjLnByb2JsZW0vdHlwZVxuICAgICAgIChwdHlwZSBmYWlsdXJlIHAxX180NTAxNSMpKSkpXG4gICAgcHJvYmxlbXMpXVxuICAoLT5cbiAgIGV4cGxhaW4tZGF0YVxuICAgKGFzc29jXG4gICAgOmV4cG91bmQvZm9ybVxuICAgIGZvcm1cbiAgICA6ZXhwb3VuZC9jYWxsZXJcbiAgICBjYWxsZXJcbiAgICA6ZXhwb3VuZC9wcm9ibGVtc1xuICAgIHByb2JsZW1zJykpKSlcbiJ9IHs6c3ltIGVzY2FwZS1yZXBsYWNlbWVudCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwYXR0ZXJuIHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gZXNjYXBlLXJlcGxhY2VtZW50XG4gW3BhdHRlcm4gc11cbiAjPyg6Y2xqIChpZiAoc3RyaW5nPyBwYXR0ZXJuKSBzIChzdHJpbmcvcmUtcXVvdGUtcmVwbGFjZW1lbnQgcykpIDpjbGpzIChzdHJpbmcvcmVwbGFjZSBzICNcIlxcJFwiIFwiJCQkJFwiKSkpXG4ifSB7OnN5bSBoaWdobGlnaHRlZC12YWx1ZSwgOm1ldGEgezpkb2MgIkdpdmVuIGEgcHJvYmxlbSwgcmV0dXJucyBhIHByZXR0eSBwcmludGVkXG4gICBzdHJpbmcgdGhhdCBoaWdobGlnaHRzIHRoZSBwcm9ibGVtIHZhbHVlIiwgOmFyZ2xpc3RzIChbb3B0cyBwcm9ibGVtXSl9LCA6c291cmNlICIoZGVmblxuIGhpZ2hsaWdodGVkLXZhbHVlXG4gXCJHaXZlbiBhIHByb2JsZW0sIHJldHVybnMgYSBwcmV0dHkgcHJpbnRlZFxcbiAgIHN0cmluZyB0aGF0IGhpZ2hsaWdodHMgdGhlIHByb2JsZW0gdmFsdWVcIlxuIFtvcHRzIHByb2JsZW1dXG4gKGxldFxuICBbezprZXlzIFs6ZXhwb3VuZC9mb3JtIDpleHBvdW5kL2luXX1cbiAgIHByb2JsZW1cbiAgIHs6a2V5cyBbc2hvdy12YWxpZC12YWx1ZXM/XSwgOm9yIHtzaG93LXZhbGlkLXZhbHVlcz8gZmFsc2V9fVxuICAgb3B0c1xuICAgcHJpbnRlZC12YWxcbiAgIChwcmludGVyL3BwcmludC1zdHIgKHBhdGhzL3ZhbHVlLWluIGZvcm0gaW4pKVxuICAgcmVsZXZhbnRcbiAgIChzdHJcbiAgICBcIihcIlxuICAgIDpleHBvdW5kLnByb2JsZW1zL3JlbGV2YW50XG4gICAgXCJ8KFwiXG4gICAgOmV4cG91bmQucHJvYmxlbXMva3YtcmVsZXZhbnRcbiAgICBcIlxcXFxzK1wiXG4gICAgOmV4cG91bmQucHJvYmxlbXMva3YtcmVsZXZhbnRcbiAgICBcIikpXCIpXG4gICByZWdleFxuICAgKHJlLXBhdHRlcm4gKHN0ciBcIiguKilcIiByZWxldmFudCBcIi4qXCIpKVxuICAgc1xuICAgKGJpbmRpbmdcbiAgICBbKnByaW50LW5hbWVzcGFjZS1tYXBzKiBmYWxzZV1cbiAgICAocHJpbnRlci9wcHJpbnQtc3RyXG4gICAgICh3YWxrL3ByZXdhbGstcmVwbGFjZVxuICAgICAgezpleHBvdW5kLnByb2JsZW1zL2lycmVsZXZhbnQgJy4uLn1cbiAgICAgIChzdW1tYXJ5LWZvcm0gc2hvdy12YWxpZC12YWx1ZXM/IGZvcm0gaW4pKSkpXG4gICBbbGluZSBwcmVmaXggJiBfbW9yZV1cbiAgIChyZS1maW5kIHJlZ2V4IHMpXG4gICBoaWdobGlnaHRlZC1saW5lXG4gICAoLT5cbiAgICBsaW5lXG4gICAgKHN0cmluZy9yZXBsYWNlXG4gICAgIChyZS1wYXR0ZXJuIHJlbGV2YW50KVxuICAgICAoZXNjYXBlLXJlcGxhY2VtZW50XG4gICAgICAocmUtcGF0dGVybiByZWxldmFudClcbiAgICAgIChwcmludGVyL2luZGVudFxuICAgICAgIDBcbiAgICAgICAoY291bnQgcHJlZml4KVxuICAgICAgIChhbnNpL2NvbG9yIHByaW50ZWQtdmFsIDpiYWQtdmFsdWUpKSkpXG4gICAgKHN0clxuICAgICBcIlxcblwiXG4gICAgIChhbnNpL2NvbG9yIChoaWdobGlnaHQtbGluZSBwcmVmaXggcHJpbnRlZC12YWwpIDpwb2ludGVyKSkpXVxuICAocHJpbnRlci9uby10cmFpbGluZy13aGl0ZXNwYWNlXG4gICAoc3RyaW5nL3JlcGxhY2UgcyBsaW5lIChlc2NhcGUtcmVwbGFjZW1lbnQgbGluZSBoaWdobGlnaHRlZC1saW5lKSkpKSlcbiJ9IHs6c3ltIHR5cGUsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHR5cGUgcHR5cGUpXG4ifSB7OnN5bSBzdW1tYXJ5LWZvcm0sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc2hvdy12YWxpZC12YWx1ZXM/IGZvcm0gaW5dKX0sIDpzb3VyY2UgIihkZWZuXG4gc3VtbWFyeS1mb3JtXG4gW3Nob3ctdmFsaWQtdmFsdWVzPyBmb3JtIGluXVxuIChsZXRcbiAgW1trICYgcnN0XVxuICAgaW5cbiAgIHJzdFxuICAgKG9yIHJzdCBbXSlcbiAgIGRpc3BsYXllZC1mb3JtXG4gICAoaWYgc2hvdy12YWxpZC12YWx1ZXM/IGZvcm0gKGJsYW5rLWZvcm0gZm9ybSkpXVxuICAoY29uZFxuICAgKGVtcHR5PyBpbilcbiAgIDpleHBvdW5kLnByb2JsZW1zL3JlbGV2YW50XG4gICAoYW5kIChtYXA/IGZvcm0pIChwYXRocy9rcHM/IGspKVxuICAgKC0+XG4gICAgZGlzcGxheWVkLWZvcm1cbiAgICAoZGlzc29jICg6a2V5IGspKVxuICAgIChhc3NvY1xuICAgICAoc3VtbWFyeS1mb3JtIHNob3ctdmFsaWQtdmFsdWVzPyAoOmtleSBrKSByc3QpXG4gICAgIDpleHBvdW5kLnByb2JsZW1zL2lycmVsZXZhbnQpKVxuICAgKGFuZCAobWFwPyBmb3JtKSAocGF0aHMva3Zwcz8gaykpXG4gICAocmVjdXIgc2hvdy12YWxpZC12YWx1ZXM/IChudGggKHNlcSBmb3JtKSAoOmlkeCBrKSkgcnN0KVxuICAgKGFzc29jaWF0aXZlPyBmb3JtKVxuICAgKGFzc29jXG4gICAgZGlzcGxheWVkLWZvcm1cbiAgICBrXG4gICAgKHN1bW1hcnktZm9ybSBzaG93LXZhbGlkLXZhbHVlcz8gKGdldCBmb3JtIGspIHJzdCkpXG4gICAoYW5kIChpbnQ/IGspIChzZXE/IGZvcm0pKVxuICAgKGFwcGx5XG4gICAgbGlzdFxuICAgICgtPlxuICAgICBkaXNwbGF5ZWQtZm9ybVxuICAgICB2ZWNcbiAgICAgKGFzc29jIGsgKHN1bW1hcnktZm9ybSBzaG93LXZhbGlkLXZhbHVlcz8gKG50aCBmb3JtIGspIHJzdCkpKSlcbiAgIChhbmQgKGludD8gaykgKHNldD8gZm9ybSkpXG4gICAoaW50b1xuICAgICN7fVxuICAgICgtPlxuICAgICBkaXNwbGF5ZWQtZm9ybVxuICAgICB2ZWNcbiAgICAgKGFzc29jXG4gICAgICBrXG4gICAgICAoc3VtbWFyeS1mb3JtIHNob3ctdmFsaWQtdmFsdWVzPyAobnRoIChzZXEgZm9ybSkgaykgcnN0KSkpKVxuICAgKGFuZCAoaW50PyBrKSAobGlzdD8gZm9ybSkpXG4gICAoaW50b1xuICAgICcoKVxuICAgICgtPlxuICAgICBkaXNwbGF5ZWQtZm9ybVxuICAgICB2ZWNcbiAgICAgKGFzc29jXG4gICAgICBrXG4gICAgICAoc3VtbWFyeS1mb3JtIHNob3ctdmFsaWQtdmFsdWVzPyAobnRoIChzZXEgZm9ybSkgaykgcnN0KSkpKVxuICAgKGFuZCAoaW50PyBrKSAoc3RyaW5nPyBmb3JtKSlcbiAgIChzdHJpbmcvam9pbiAoYXNzb2MgKHZlYyBmb3JtKSBrIDpleHBvdW5kLnByb2JsZW1zL3JlbGV2YW50KSlcbiAgIDplbHNlXG4gICAodGhyb3dcbiAgICAoZXgtaW5mb1xuICAgICBcIkNhbm5vdCBmaW5kIHBhdGggc2VnbWVudCBpbiBmb3JtLiBUaGlzIGNhbiBiZSBjYXVzZWQgYnkgdXNpbmcgY29uZm9ybWVycyB0byB0cmFuc2Zvcm0gdmFsdWVzLCB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIGluIEV4cG91bmRcIlxuICAgICB7OmZvcm0gZm9ybSwgOmluIGlufSkpKSkpXG4ifSB7OnN5bSBibGFuay1mb3JtLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2Zvcm1dKX0sIDpzb3VyY2UgIihkZWZuXG4gYmxhbmstZm9ybVxuIFtmb3JtXVxuIChjb25kXG4gIChtYXA/IGZvcm0pXG4gICh6aXBtYXAgKGtleXMgZm9ybSkgKHJlcGVhdCA6ZXhwb3VuZC5wcm9ibGVtcy9pcnJlbGV2YW50KSlcbiAgKHZlY3Rvcj8gZm9ybSlcbiAgKHZlYyAocmVwZWF0IChjb3VudCBmb3JtKSA6ZXhwb3VuZC5wcm9ibGVtcy9pcnJlbGV2YW50KSlcbiAgKHNldD8gZm9ybSlcbiAgZm9ybVxuICAob3IgKGxpc3Q/IGZvcm0pIChzZXE/IGZvcm0pKVxuICAoYXBwbHkgbGlzdCAocmVwZWF0IChjb3VudCBmb3JtKSA6ZXhwb3VuZC5wcm9ibGVtcy9pcnJlbGV2YW50KSlcbiAgOmVsc2VcbiAgOmV4cG91bmQucHJvYmxlbXMvaXJyZWxldmFudCkpXG4ifSksIGNsanMuc3BlYy5nZW4uYWxwaGEgKHs6c3ltIHF1aWNrLWNoZWNrLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoWyYgYXJnc10pfSwgOnNvdXJjZSAiKGRlZm4gcXVpY2stY2hlY2sgWyYgYXJnc10gKGFwcGx5IEBxdWljay1jaGVjay1yZWYgYXJncykpXG4ifSB7OnN5bSBmb3ItYWxsKiwgOm1ldGEgezpkb2MgIkR5bmFtaWNhbGx5IGxvYWRlZCBjbG9qdXJlLnRlc3QuY2hlY2sucHJvcGVydGllcy9mb3ItYWxsKi4iLCA6YXJnbGlzdHMgKFsmIGFyZ3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gZm9yLWFsbCpcbiBcIkR5bmFtaWNhbGx5IGxvYWRlZCBjbG9qdXJlLnRlc3QuY2hlY2sucHJvcGVydGllcy9mb3ItYWxsKi5cIlxuIFsmIGFyZ3NdXG4gKGFwcGx5IEBmb3ItYWxsKi1yZWYgYXJncykpXG4ifSB7OnN5bSBkZWxheS1pbXBsLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2dmbmRdKX0sIDpzb3VyY2UgIihkZWZuXG4gZGVsYXktaW1wbFxuIFtnZm5kXVxuIChnZW5lcmF0b3IgKGZuIFtybmQgc2l6ZV0gKCg6Z2VuIEBnZm5kKSBybmQgc2l6ZSkpKSlcbiJ9IHs6c3ltIGNhdCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBnZW5lcmF0b3Igb2YgYSBzZXF1ZW5jZSBjYXRlbmF0ZWQgZnJvbSByZXN1bHRzIG9mXG5nZW5zLCBlYWNoIG9mIHdoaWNoIHNob3VsZCBnZW5lcmF0ZSBzb21ldGhpbmcgc2VxdWVudGlhbC4iLCA6YXJnbGlzdHMgKFsmIGdlbnNdKX0sIDpzb3VyY2UgIihkZWZuXG4gY2F0XG4gXCJSZXR1cm5zIGEgZ2VuZXJhdG9yIG9mIGEgc2VxdWVuY2UgY2F0ZW5hdGVkIGZyb20gcmVzdWx0cyBvZlxcbmdlbnMsIGVhY2ggb2Ygd2hpY2ggc2hvdWxkIGdlbmVyYXRlIHNvbWV0aGluZyBzZXF1ZW50aWFsLlwiXG4gWyYgZ2Vuc11cbiAoZm1hcCAoZm4qIFtwMV9fNDUyOTIjXSAoYXBwbHkgY29uY2F0IHAxX180NTI5MiMpKSAoYXBwbHkgdHVwbGUgZ2VucykpKVxuIn0gezpzeW0gZ2VuLWZvci1wcmVkLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBwcmVkaWNhdGUsIHJldHVybnMgYSBidWlsdC1pbiBnZW5lcmF0b3IgaWYgb25lIGV4aXN0cy4iLCA6YXJnbGlzdHMgKFtwcmVkXSl9LCA6c291cmNlICIoZGVmblxuIGdlbi1mb3ItcHJlZFxuIFwiR2l2ZW4gYSBwcmVkaWNhdGUsIHJldHVybnMgYSBidWlsdC1pbiBnZW5lcmF0b3IgaWYgb25lIGV4aXN0cy5cIlxuIFtwcmVkXVxuIChpZiAoc2V0PyBwcmVkKSAoZWxlbWVudHMgcHJlZCkgKGdldCBAZ2VuLWJ1aWx0aW5zIHByZWQpKSlcbiJ9KSwgcGxheS1jbGpjLmdsLmV4YW1wbGVzLTJkICh7OnN5bSByYW5kLXJlY3RzLWV4YW1wbGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZ2FtZSBlbnRpdHkgZW50aXRpZXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmFuZC1yZWN0cy1leGFtcGxlXG4gW2dhbWUgZW50aXR5IGVudGl0aWVzXVxuIChnbCBnYW1lIGRpc2FibGUgKGdsIGdhbWUgQ1VMTF9GQUNFKSlcbiAoZ2wgZ2FtZSBkaXNhYmxlIChnbCBnYW1lIERFUFRIX1RFU1QpKVxuICgtPj5cbiAgZW50aXRpZXNcbiAgKHJlZHVjZS1rdiBpL2Fzc29jIChpLy0+aW5zdGFuY2VkLWVudGl0eSBlbnRpdHkpKVxuICAoYy9jb21waWxlIGdhbWUpXG4gIChhc3NvYyBnYW1lIDplbnRpdHkpKSlcbiIsIDpleGFtcGxlcyBbezp3aXRoLWNhcmQgY2FyZCwgOndpdGgtZm9jdXMgezpmb3JtIFs6bG9jYWwtc3ltYm9sIGZvY3VzXSwgOmluaXQtZXhwciAoZm9yIFtfIChyYW5nZSA1MCldICgtPiBlbnRpdHkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL2NvbG9yIFsocmFuZCkgKHJhbmQpIChyYW5kKSAxXSkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3RyYW5zbGF0ZSAocmFuZC1pbnQgZ2FtZS13aWR0aCkgKHJhbmQtaW50IGdhbWUtaGVpZ2h0KSkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3NjYWxlIChyYW5kLWludCAzMDApIChyYW5kLWludCAzMDApKSkpfSwgOmJvZHkgKGxldCBbZ2FtZSAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvaW5pdC1leGFtcGxlIGNhcmQpIGdhbWUtd2lkdGggKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dldC13aWR0aCBnYW1lKSBnYW1lLWhlaWdodCAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2V0LWhlaWdodCBnYW1lKSBlbnRpdHkgKC0+IChwbGF5LWNsamMuZ2wuZW50aXRpZXMtMmQvLT5lbnRpdHkgZ2FtZSBwbGF5LWNsamMucHJpbWl0aXZlcy0yZC9yZWN0KSAoYXNzb2MgOnZpZXdwb3J0IHs6eCAwLCA6eSAwLCA6d2lkdGggZ2FtZS13aWR0aCwgOmhlaWdodCBnYW1lLWhlaWdodH0pIChwbGF5LWNsamMudHJhbnNmb3Jtcy9wcm9qZWN0IGdhbWUtd2lkdGggZ2FtZS1oZWlnaHQpKV0gKC0+PiBmb2N1cyB2ZWMgKHBsYXktY2xqYy5nbC5leGFtcGxlcy0yZC9yYW5kLXJlY3RzLWV4YW1wbGUgZ2FtZSBlbnRpdHkpIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nYW1lLWxvb3AgKGZuIHJhbmQtcmVjdHMtcmVuZGVyIFt7OmtleXMgW2VudGl0eV0sIDphcyBnYW1lfV0gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL3Jlc2l6ZS1leGFtcGxlIGdhbWUpIChwbGF5LWNsamMuZ2wuY29yZS9yZW5kZXIgZ2FtZSB7OmNsZWFyIHs6Y29sb3IgWzEgMSAxIDFdLCA6ZGVwdGggMX19KSAocGxheS1jbGpjLmdsLmNvcmUvcmVuZGVyIGdhbWUgZW50aXR5KSBnYW1lKSkpKSwgOmJvZHktc3RyICIoZm9yXG4gW18gKHJhbmdlIDUwKV1cbiAoLT5cbiAgZW50aXR5XG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy9jb2xvciBbKHJhbmQpIChyYW5kKSAocmFuZCkgMV0pXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy90cmFuc2xhdGVcbiAgIChyYW5kLWludCBnYW1lLXdpZHRoKVxuICAgKHJhbmQtaW50IGdhbWUtaGVpZ2h0KSlcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3NjYWxlIChyYW5kLWludCAzMDApIChyYW5kLWludCAzMDApKSkpXG4iLCA6aWQgInBsYXktY2xqYy5nbC5leGFtcGxlcy0yZC9yYW5kLXJlY3RzLWV4YW1wbGUvMCJ9XX0gezpzeW0gaW1hZ2UtZXhhbXBsZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtnYW1lIHs6a2V5cyBbZGF0YSB3aWR0aCBoZWlnaHRdLCA6YXMgaW1hZ2V9XSl9LCA6c291cmNlICIoZGVmblxuIGltYWdlLWV4YW1wbGVcbiBbZ2FtZSB7OmtleXMgW2RhdGEgd2lkdGggaGVpZ2h0XSwgOmFzIGltYWdlfV1cbiAoZ2wgZ2FtZSBkaXNhYmxlIChnbCBnYW1lIENVTExfRkFDRSkpXG4gKGdsIGdhbWUgZGlzYWJsZSAoZ2wgZ2FtZSBERVBUSF9URVNUKSlcbiAoYXNzb2NcbiAgZ2FtZVxuICA6ZW50aXR5XG4gICgtPlxuICAgKGMvY29tcGlsZSBnYW1lIChlLy0+aW1hZ2UtZW50aXR5IGdhbWUgZGF0YSB3aWR0aCBoZWlnaHQpKVxuICAgKGFzc29jIDpjbGVhciB7OmNvbG9yIFsxIDEgMSAxXSwgOmRlcHRoIDF9KSlcbiAgOmltYWdlXG4gIGltYWdlKSlcbiIsIDpleGFtcGxlcyBbezp3aXRoLWNhcmQgY2FyZCwgOndpdGgtZm9jdXMgezpmb3JtIFs6bG9jYWwtc3ltYm9sIGZvY3VzXSwgOmluaXQtZXhwciAocGxheS1jbGpjLmdsLmNvcmUvcmVuZGVyIGdhbWUgKC0+IGVudGl0eSAoYXNzb2MgOnZpZXdwb3J0IHs6eCAwLCA6eSAwLCA6d2lkdGggZ2FtZS13aWR0aCwgOmhlaWdodCBnYW1lLWhlaWdodH0pIChwbGF5LWNsamMudHJhbnNmb3Jtcy9wcm9qZWN0IGdhbWUtd2lkdGggZ2FtZS1oZWlnaHQpIChwbGF5LWNsamMudHJhbnNmb3Jtcy90cmFuc2xhdGUgMCAwKSAocGxheS1jbGpjLnRyYW5zZm9ybXMvc2NhbGUgaW1nLXdpZHRoIGltZy1oZWlnaHQpKSl9LCA6Ym9keSAobGV0IFtnYW1lIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9pbml0LWV4YW1wbGUgY2FyZCldIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nZXQtaW1hZ2UgImFpbnRnb3R0YWV4cGxhaW5zaGl0LmpwZyIgKGZuIFtpbWFnZV0gKC0+PiAocGxheS1jbGpjLmdsLmV4YW1wbGVzLTJkL2ltYWdlLWV4YW1wbGUgZ2FtZSBpbWFnZSkgKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dhbWUtbG9vcCAoZm4gaW1hZ2UtcmVuZGVyIFt7OmtleXMgW2VudGl0eSBpbWFnZV0sIDphcyBnYW1lfV0gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL3Jlc2l6ZS1leGFtcGxlIGdhbWUpIChsZXQgW2dhbWUtd2lkdGggKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dldC13aWR0aCBnYW1lKSBnYW1lLWhlaWdodCAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2V0LWhlaWdodCBnYW1lKSBzY3JlZW4tcmF0aW8gKC8gZ2FtZS13aWR0aCBnYW1lLWhlaWdodCkgaW1hZ2UtcmF0aW8gKC8gKDp3aWR0aCBpbWFnZSkgKDpoZWlnaHQgaW1hZ2UpKSBbaW1nLXdpZHRoIGltZy1oZWlnaHRdIChpZiAoPiBzY3JlZW4tcmF0aW8gaW1hZ2UtcmF0aW8pIFsoKiBnYW1lLWhlaWdodCAoLyAoOndpZHRoIGltYWdlKSAoOmhlaWdodCBpbWFnZSkpKSBnYW1lLWhlaWdodF0gW2dhbWUtd2lkdGggKCogZ2FtZS13aWR0aCAoLyAoOmhlaWdodCBpbWFnZSkgKDp3aWR0aCBpbWFnZSkpKV0pXSBmb2N1cykgZ2FtZSkpKSkpKSwgOmJvZHktc3RyICIocGxheS1jbGpjLmdsLmNvcmUvcmVuZGVyXG4gZ2FtZVxuICgtPlxuICBlbnRpdHlcbiAgKGFzc29jXG4gICA6dmlld3BvcnRcbiAgIHs6eCAwLCA6eSAwLCA6d2lkdGggZ2FtZS13aWR0aCwgOmhlaWdodCBnYW1lLWhlaWdodH0pXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy9wcm9qZWN0IGdhbWUtd2lkdGggZ2FtZS1oZWlnaHQpXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy90cmFuc2xhdGUgMCAwKVxuICAocGxheS1jbGpjLnRyYW5zZm9ybXMvc2NhbGUgaW1nLXdpZHRoIGltZy1oZWlnaHQpKSlcbiIsIDppZCAicGxheS1jbGpjLmdsLmV4YW1wbGVzLTJkL2ltYWdlLWV4YW1wbGUvMCJ9XX0gezpzeW0gdHJhbnNsYXRpb24tZXhhbXBsZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtnYW1lXSl9LCA6c291cmNlICIoZGVmblxuIHRyYW5zbGF0aW9uLWV4YW1wbGVcbiBbZ2FtZV1cbiAoZ2wgZ2FtZSBkaXNhYmxlIChnbCBnYW1lIENVTExfRkFDRSkpXG4gKGdsIGdhbWUgZGlzYWJsZSAoZ2wgZ2FtZSBERVBUSF9URVNUKSlcbiAobGV0XG4gIFtlbnRpdHlcbiAgICgtPlxuICAgIChjL2NvbXBpbGUgZ2FtZSAoZS8tPmVudGl0eSBnYW1lIGRhdGEvZi0yZCkpXG4gICAgKGFzc29jIDpjbGVhciB7OmNvbG9yIFswIDAgMCAwXSwgOmRlcHRoIDF9KSlcbiAgICpzdGF0ZVxuICAgKGF0b20gezp4IDAsIDp5IDB9KV1cbiAgKGV1L2xpc3Rlbi1mb3ItbW91c2UgZ2FtZSAqc3RhdGUpXG4gIChhc3NvYyBnYW1lIDplbnRpdHkgZW50aXR5IDoqc3RhdGUgKnN0YXRlKSkpXG4iLCA6ZXhhbXBsZXMgW3s6d2l0aC1jYXJkIGNhcmQsIDp3aXRoLWZvY3VzIHs6Zm9ybSBbOmxvY2FsLXN5bWJvbCBmb2N1c10sIDppbml0LWV4cHIgKHBsYXktY2xqYy5nbC5jb3JlL3JlbmRlciBnYW1lICgtPiAoYXNzb2MgZW50aXR5IDp2aWV3cG9ydCB7OnggMCwgOnkgMCwgOndpZHRoIGdhbWUtd2lkdGgsIDpoZWlnaHQgZ2FtZS1oZWlnaHR9KSAocGxheS1jbGpjLnRyYW5zZm9ybXMvcHJvamVjdCBnYW1lLXdpZHRoIGdhbWUtaGVpZ2h0KSAocGxheS1jbGpjLnRyYW5zZm9ybXMvdHJhbnNsYXRlIHggeSkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL2NvbG9yIFsxIDAgMC41IDFdKSkpfSwgOmJvZHkgKC0+PiAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvaW5pdC1leGFtcGxlIGNhcmQpIChwbGF5LWNsamMuZ2wuZXhhbXBsZXMtMmQvdHJhbnNsYXRpb24tZXhhbXBsZSkgKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dhbWUtbG9vcCAoZm4gdHJhbnNsYXRpb24tcmVuZGVyIFt7OmtleXMgW2VudGl0eSAqc3RhdGVdLCA6YXMgZ2FtZX1dIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9yZXNpemUtZXhhbXBsZSBnYW1lKSAobGV0IFt7OmtleXMgW3ggeV19IChjbG9qdXJlLmNvcmUvZGVyZWYgKnN0YXRlKV0gKGxldCBbZ2FtZS13aWR0aCAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2V0LXdpZHRoIGdhbWUpIGdhbWUtaGVpZ2h0IChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nZXQtaGVpZ2h0IGdhbWUpXSBmb2N1cykpIGdhbWUpKSksIDpib2R5LXN0ciAiKHBsYXktY2xqYy5nbC5jb3JlL3JlbmRlclxuIGdhbWVcbiAoLT5cbiAgKGFzc29jXG4gICBlbnRpdHlcbiAgIDp2aWV3cG9ydFxuICAgezp4IDAsIDp5IDAsIDp3aWR0aCBnYW1lLXdpZHRoLCA6aGVpZ2h0IGdhbWUtaGVpZ2h0fSlcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3Byb2plY3QgZ2FtZS13aWR0aCBnYW1lLWhlaWdodClcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3RyYW5zbGF0ZSB4IHkpXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy9jb2xvciBbMSAwIDAuNSAxXSkpKVxuIiwgOmlkICJwbGF5LWNsamMuZ2wuZXhhbXBsZXMtMmQvdHJhbnNsYXRpb24tZXhhbXBsZS8wIn1dfSB7OnN5bSByb3RhdGlvbi1leGFtcGxlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2dhbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gcm90YXRpb24tZXhhbXBsZVxuIFtnYW1lXVxuIChnbCBnYW1lIGRpc2FibGUgKGdsIGdhbWUgQ1VMTF9GQUNFKSlcbiAoZ2wgZ2FtZSBkaXNhYmxlIChnbCBnYW1lIERFUFRIX1RFU1QpKVxuIChsZXRcbiAgW2VudGl0eVxuICAgKC0+XG4gICAgKGMvY29tcGlsZSBnYW1lIChlLy0+ZW50aXR5IGdhbWUgZGF0YS9mLTJkKSlcbiAgICAoYXNzb2MgOmNsZWFyIHs6Y29sb3IgWzAgMCAwIDBdLCA6ZGVwdGggMX0pKVxuICAgdHhcbiAgIDEwMFxuICAgdHlcbiAgIDEwMFxuICAgKnN0YXRlXG4gICAoYXRvbSB7OnR4IHR4LCA6dHkgdHksIDpyIDB9KV1cbiAgKGV1L2xpc3Rlbi1mb3ItbW91c2UgZ2FtZSAqc3RhdGUpXG4gIChhc3NvYyBnYW1lIDplbnRpdHkgZW50aXR5IDoqc3RhdGUgKnN0YXRlKSkpXG4iLCA6ZXhhbXBsZXMgW3s6d2l0aC1jYXJkIGNhcmQsIDp3aXRoLWZvY3VzIHs6Zm9ybSBbOmxvY2FsLXN5bWJvbCBmb2N1c10sIDppbml0LWV4cHIgKHBsYXktY2xqYy5nbC5jb3JlL3JlbmRlciBnYW1lICgtPiBlbnRpdHkgKGFzc29jIDp2aWV3cG9ydCB7OnggMCwgOnkgMCwgOndpZHRoIGdhbWUtd2lkdGgsIDpoZWlnaHQgZ2FtZS1oZWlnaHR9KSAocGxheS1jbGpjLnRyYW5zZm9ybXMvcHJvamVjdCBnYW1lLXdpZHRoIGdhbWUtaGVpZ2h0KSAocGxheS1jbGpjLnRyYW5zZm9ybXMvdHJhbnNsYXRlIHR4IHR5KSAocGxheS1jbGpjLnRyYW5zZm9ybXMvcm90YXRlIHIpIChwbGF5LWNsamMudHJhbnNmb3Jtcy9jb2xvciBbMSAwIDAuNSAxXSkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3RyYW5zbGF0ZSAtNTAgLTc1KSkpfSwgOmJvZHkgKC0+PiAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvaW5pdC1leGFtcGxlIGNhcmQpIChwbGF5LWNsamMuZ2wuZXhhbXBsZXMtMmQvcm90YXRpb24tZXhhbXBsZSkgKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dhbWUtbG9vcCAoZm4gcm90YXRpb24tcmVuZGVyIFt7OmtleXMgW2VudGl0eSAqc3RhdGVdLCA6YXMgZ2FtZX1dIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9yZXNpemUtZXhhbXBsZSBnYW1lKSAobGV0IFt7OmtleXMgW3R4IHR5IHJdfSAoY2xvanVyZS5jb3JlL2RlcmVmICpzdGF0ZSkgZ2FtZS13aWR0aCAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2V0LXdpZHRoIGdhbWUpIGdhbWUtaGVpZ2h0IChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nZXQtaGVpZ2h0IGdhbWUpXSBmb2N1cykgZ2FtZSkpKSwgOmJvZHktc3RyICIocGxheS1jbGpjLmdsLmNvcmUvcmVuZGVyXG4gZ2FtZVxuICgtPlxuICBlbnRpdHlcbiAgKGFzc29jXG4gICA6dmlld3BvcnRcbiAgIHs6eCAwLCA6eSAwLCA6d2lkdGggZ2FtZS13aWR0aCwgOmhlaWdodCBnYW1lLWhlaWdodH0pXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy9wcm9qZWN0IGdhbWUtd2lkdGggZ2FtZS1oZWlnaHQpXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy90cmFuc2xhdGUgdHggdHkpXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy9yb3RhdGUgcilcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL2NvbG9yIFsxIDAgMC41IDFdKVxuICAocGxheS1jbGpjLnRyYW5zZm9ybXMvdHJhbnNsYXRlIC01MCAtNzUpKSlcbiIsIDppZCAicGxheS1jbGpjLmdsLmV4YW1wbGVzLTJkL3JvdGF0aW9uLWV4YW1wbGUvMCJ9XX0gezpzeW0gc2NhbGUtZXhhbXBsZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtnYW1lXSl9LCA6c291cmNlICIoZGVmblxuIHNjYWxlLWV4YW1wbGVcbiBbZ2FtZV1cbiAoZ2wgZ2FtZSBkaXNhYmxlIChnbCBnYW1lIENVTExfRkFDRSkpXG4gKGdsIGdhbWUgZGlzYWJsZSAoZ2wgZ2FtZSBERVBUSF9URVNUKSlcbiAobGV0XG4gIFtlbnRpdHlcbiAgICgtPlxuICAgIChjL2NvbXBpbGUgZ2FtZSAoZS8tPmVudGl0eSBnYW1lIGRhdGEvZi0yZCkpXG4gICAgKGFzc29jIDpjbGVhciB7OmNvbG9yIFswIDAgMCAwXSwgOmRlcHRoIDF9KSlcbiAgIHR4XG4gICAxMDBcbiAgIHR5XG4gICAxMDBcbiAgICpzdGF0ZVxuICAgKGF0b20gezp0eCB0eCwgOnR5IHR5LCA6cnggMSwgOnJ5IDF9KV1cbiAgKGV1L2xpc3Rlbi1mb3ItbW91c2UgZ2FtZSAqc3RhdGUpXG4gIChhc3NvYyBnYW1lIDplbnRpdHkgZW50aXR5IDoqc3RhdGUgKnN0YXRlKSkpXG4iLCA6ZXhhbXBsZXMgW3s6d2l0aC1jYXJkIGNhcmQsIDp3aXRoLWZvY3VzIHs6Zm9ybSBbOmxvY2FsLXN5bWJvbCBmb2N1c10sIDppbml0LWV4cHIgKHBsYXktY2xqYy5nbC5jb3JlL3JlbmRlciBnYW1lICgtPiAoYXNzb2MgZW50aXR5IDp2aWV3cG9ydCB7OnggMCwgOnkgMCwgOndpZHRoIGdhbWUtd2lkdGgsIDpoZWlnaHQgZ2FtZS1oZWlnaHR9KSAocGxheS1jbGpjLnRyYW5zZm9ybXMvcHJvamVjdCBnYW1lLXdpZHRoIGdhbWUtaGVpZ2h0KSAocGxheS1jbGpjLnRyYW5zZm9ybXMvdHJhbnNsYXRlIHR4IHR5KSAocGxheS1jbGpjLnRyYW5zZm9ybXMvcm90YXRlIDApIChwbGF5LWNsamMudHJhbnNmb3Jtcy9zY2FsZSByeCByeSkgKHBsYXktY2xqYy50cmFuc2Zvcm1zL2NvbG9yIFsxIDAgMC41IDFdKSkpfSwgOmJvZHkgKC0+PiAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvaW5pdC1leGFtcGxlIGNhcmQpIChwbGF5LWNsamMuZ2wuZXhhbXBsZXMtMmQvc2NhbGUtZXhhbXBsZSkgKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dhbWUtbG9vcCAoZm4gc2NhbGUtcmVuZGVyIFt7OmtleXMgW2VudGl0eSAqc3RhdGVdLCA6YXMgZ2FtZX1dIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9yZXNpemUtZXhhbXBsZSBnYW1lKSAobGV0IFt7OmtleXMgW3R4IHR5IHJ4IHJ5XX0gKGNsb2p1cmUuY29yZS9kZXJlZiAqc3RhdGUpIGdhbWUtd2lkdGggKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dldC13aWR0aCBnYW1lKSBnYW1lLWhlaWdodCAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvZ2V0LWhlaWdodCBnYW1lKV0gZm9jdXMpIGdhbWUpKSksIDpib2R5LXN0ciAiKHBsYXktY2xqYy5nbC5jb3JlL3JlbmRlclxuIGdhbWVcbiAoLT5cbiAgKGFzc29jXG4gICBlbnRpdHlcbiAgIDp2aWV3cG9ydFxuICAgezp4IDAsIDp5IDAsIDp3aWR0aCBnYW1lLXdpZHRoLCA6aGVpZ2h0IGdhbWUtaGVpZ2h0fSlcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3Byb2plY3QgZ2FtZS13aWR0aCBnYW1lLWhlaWdodClcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3RyYW5zbGF0ZSB0eCB0eSlcbiAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL3JvdGF0ZSAwKVxuICAocGxheS1jbGpjLnRyYW5zZm9ybXMvc2NhbGUgcnggcnkpXG4gIChwbGF5LWNsamMudHJhbnNmb3Jtcy9jb2xvciBbMSAwIDAuNSAxXSkpKVxuIiwgOmlkICJwbGF5LWNsamMuZ2wuZXhhbXBsZXMtMmQvc2NhbGUtZXhhbXBsZS8wIn1dfSB7OnN5bSByb3RhdGlvbi1tdWx0aS1leGFtcGxlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2dhbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gcm90YXRpb24tbXVsdGktZXhhbXBsZVxuIFtnYW1lXVxuIChnbCBnYW1lIGRpc2FibGUgKGdsIGdhbWUgQ1VMTF9GQUNFKSlcbiAoZ2wgZ2FtZSBkaXNhYmxlIChnbCBnYW1lIERFUFRIX1RFU1QpKVxuIChsZXRcbiAgW2VudGl0eVxuICAgKGMvY29tcGlsZSBnYW1lIChlLy0+ZW50aXR5IGdhbWUgZGF0YS9mLTJkKSlcbiAgIHR4XG4gICAxMDBcbiAgIHR5XG4gICAxMDBcbiAgICpzdGF0ZVxuICAgKGF0b20gezp0eCB0eCwgOnR5IHR5LCA6ciAwfSldXG4gIChldS9saXN0ZW4tZm9yLW1vdXNlIGdhbWUgKnN0YXRlKVxuICAoYXNzb2MgZ2FtZSA6ZW50aXR5IGVudGl0eSA6KnN0YXRlICpzdGF0ZSkpKVxuIiwgOmV4YW1wbGVzIFt7OndpdGgtY2FyZCBjYXJkLCA6d2l0aC1mb2N1cyB7OmZvcm0gWzpsb2NhbC1zeW1ib2wgZm9jdXNdLCA6aW5pdC1leHByIChsb29wIFtpIDAgZW50aXR5ICgtPiBlbnRpdHkgKGFzc29jIDp2aWV3cG9ydCB7OnggMCwgOnkgMCwgOndpZHRoIGdhbWUtd2lkdGgsIDpoZWlnaHQgZ2FtZS1oZWlnaHR9KSAocGxheS1jbGpjLnRyYW5zZm9ybXMvcHJvamVjdCBnYW1lLXdpZHRoIGdhbWUtaGVpZ2h0KSAocGxheS1jbGpjLnRyYW5zZm9ybXMvY29sb3IgWzEgMCAwLjUgMV0pKV0gKHdoZW4gKDwgaSA1KSAobGV0IFtlbnRpdHkgKC0+IGVudGl0eSAocGxheS1jbGpjLnRyYW5zZm9ybXMvdHJhbnNsYXRlIHR4IHR5KSAocGxheS1jbGpjLnRyYW5zZm9ybXMvcm90YXRlIHIpKV0gKHBsYXktY2xqYy5nbC5jb3JlL3JlbmRlciBnYW1lIGVudGl0eSkgKHJlY3VyIChpbmMgaSkgZW50aXR5KSkpKX0sIDpib2R5ICgtPj4gKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2luaXQtZXhhbXBsZSBjYXJkKSAocGxheS1jbGpjLmdsLmV4YW1wbGVzLTJkL3JvdGF0aW9uLW11bHRpLWV4YW1wbGUpIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nYW1lLWxvb3AgKGZuIHJvdGF0aW9uLW11bHRpLXJlbmRlciBbezprZXlzIFtlbnRpdHkgKnN0YXRlXSwgOmFzIGdhbWV9XSAocGxheS1jbGpjLmdsLmV4YW1wbGUtdXRpbHMvcmVzaXplLWV4YW1wbGUgZ2FtZSkgKHBsYXktY2xqYy5nbC5jb3JlL3JlbmRlciBnYW1lIHs6Y2xlYXIgezpjb2xvciBbMSAxIDEgMV0sIDpkZXB0aCAxfX0pIChsZXQgW3s6a2V5cyBbdHggdHkgcl19IChjbG9qdXJlLmNvcmUvZGVyZWYgKnN0YXRlKSBnYW1lLXdpZHRoIChwbGF5LWNsamMuZ2wuZXhhbXBsZS11dGlscy9nZXQtd2lkdGggZ2FtZSkgZ2FtZS1oZWlnaHQgKHBsYXktY2xqYy5nbC5leGFtcGxlLXV0aWxzL2dldC1oZWlnaHQgZ2FtZSldIGZvY3VzKSBnYW1lKSkpLCA6Ym9keS1zdHIgIihsb29wXG4gW2lcbiAgMFxuICBlbnRpdHlcbiAgKC0+XG4gICBlbnRpdHlcbiAgIChhc3NvY1xuICAgIDp2aWV3cG9ydFxuICAgIHs6eCAwLCA6eSAwLCA6d2lkdGggZ2FtZS13aWR0aCwgOmhlaWdodCBnYW1lLWhlaWdodH0pXG4gICAocGxheS1jbGpjLnRyYW5zZm9ybXMvcHJvamVjdCBnYW1lLXdpZHRoIGdhbWUtaGVpZ2h0KVxuICAgKHBsYXktY2xqYy50cmFuc2Zvcm1zL2NvbG9yIFsxIDAgMC41IDFdKSldXG4gKHdoZW5cbiAgKDwgaSA1KVxuICAobGV0XG4gICBbZW50aXR5XG4gICAgKC0+XG4gICAgIGVudGl0eVxuICAgICAocGxheS1jbGpjLnRyYW5zZm9ybXMvdHJhbnNsYXRlIHR4IHR5KVxuICAgICAocGxheS1jbGpjLnRyYW5zZm9ybXMvcm90YXRlIHIpKV1cbiAgIChwbGF5LWNsamMuZ2wuY29yZS9yZW5kZXIgZ2FtZSBlbnRpdHkpXG4gICAocmVjdXIgKGluYyBpKSBlbnRpdHkpKSkpXG4iLCA6aWQgInBsYXktY2xqYy5nbC5leGFtcGxlcy0yZC9yb3RhdGlvbi1tdWx0aS1leGFtcGxlLzAifV19KX0sIDpkeW5hZG9jLmNvbW1vbi92YXItc3ltIHRyYW5zbGF0aW9uLWV4YW1wbGV9