Skip to contentPCFkb2N0eXBlIGh0bWw+PGh0bWw+PGhlYWQ+PG1ldGEgY2hhcnNldD11dGY4PjxtZXRhIG5hbWU9dmlld3BvcnQgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLGluaXRpYWwtc2NhbGU9MSx2aWV3cG9ydC1maXQ9Y292ZXIiPjxzdHlsZT46cm9vdHtjb2xvci1zY2hlbWU6bGlnaHQ7Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmctdG9wOmVudihzYWZlLWFyZWEtaW5zZXQtdG9wLDBweCk7cGFkZGluZy1ib3R0b206ZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20sMHB4KX1odG1se3Njcm9sbC1wYWRkaW5nLXRvcDplbnYoc2FmZS1hcmVhLWluc2V0LXRvcCwwcHgpfWJvZHl7bWFyZ2luOjA7cGFkZGluZzowO2ZvbnQ6MTRweCAtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCxzYW5zLXNlcmlmO2JhY2tncm91bmQ6I2ZhZjlmNTtjb2xvcjojMTQxNDEzfWltZ3ttYXgtd2lkdGg6MTAwJX1baGlkZGVuXTpub3QoW2hpZGRlbj11bnRpbC1mb3VuZCBpXSl7ZGlzcGxheTpub25lIWltcG9ydGFudH08L3N0eWxlPjwvaGVhZD48Ym9keT4KPHRpdGxlPlRyYW5zZmVyIFNlYXJjaCBFbmdpbmU8L3RpdGxlPgo8bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20iPgo8bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Imh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20iIGNyb3Nzb3JpZ2luPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9QnJpY29sYWdlK0dyb3Rlc3F1ZTpvcHN6LHdnaHRAMTIuLjk2LDUwMDsxMi4uOTYsNzAwJmZhbWlseT1JQk0rUGxleCtTYW5zOndnaHRANDAwOzUwMDs2MDAmZmFtaWx5PUlCTStQbGV4K01vbm86d2dodEA1MDA7NjAwJmRpc3BsYXk9c3dhcCI+CjxzdHlsZT4KICA6cm9vdHsKICAgIC8qIFJlYWwgWWVzbXl0cmFuc2Zlci5jb20gcGFsZXR0ZSAoRWxlbWVudG9yIEdsb2JhbCBDb2xvcnMgKyBCbG9ja3N5LCB2ZXJpZmllZCBsaXZlIDE3IHNlcHQgMjAyNikgKi8KICAgIC0taW5rOiMxNDIzM0I7IC0taW5rLTI6IzJBMkUzNTsgLS1tdXRlZDojNUM2Qjc0OyAtLWxpbmU6I0UzRTdFQTsKICAgIC0tYmc6I0Y3RkFGRDsgLS1zdXJmYWNlOiNGRkZGRkY7IC0tc3VyZmFjZS0yOiNGM0Y1Rjc7CiAgICAtLWFjY2VudDojRDRBOTM3OyAtLWFjY2VudC0yOiNCOThBMjI7IC0tYWNjZW50LXNvZnQ6I0Y2RUNEMjsgLS1zdW46I0Q0QTkzNzsgLS1zdW4tc29mdDojRkZFOERBOwogICAgLS1zZWNvbmRhcnk6IzJGNkY2QjsKICAgIC0tc2hhZG93OjAgMXB4IDJweCByZ2JhKDIwLDM1LDU5LC4wNiksIDAgOHB4IDI0cHggcmdiYSgyMCwzNSw1OSwuMDYpOwogICAgLS1zaGFkb3ctbGc6MCA0cHggMTJweCByZ2JhKDIwLDM1LDU5LC4wOCksIDAgMTZweCA0MHB4IHJnYmEoMjAsMzUsNTksLjEwKTsKICAgIGNvbG9yLXNjaGVtZTogbGlnaHQ7CiAgfQogIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspewogICAgOnJvb3Q6bm90KFtkYXRhLXRoZW1lPSJsaWdodCJdKXsKICAgICAgLS1pbms6I0VFRjJGNjsgLS1pbmstMjojQzlEMkRBOyAtLW11dGVkOiM4Qjk2QTA7IC0tbGluZTojMjkzMjNDOwogICAgICAtLWJnOiMwRjE3MjA7IC0tc3VyZmFjZTojMTcyMTJDOyAtLXN1cmZhY2UtMjojMUMyNzMzOwogICAgICAtLWFjY2VudDojRTZDMjY3OyAtLWFjY2VudC0yOiNGMEQ0ODg7IC0tYWNjZW50LXNvZnQ6IzNBMzMxQTsgLS1zdW46I0U2QzI2NzsgLS1zdW4tc29mdDojM0EyQTFFOwogICAgICAtLXNlY29uZGFyeTojNEZBMzlEOwogICAgICAtLXNoYWRvdzowIDFweCAycHggcmdiYSgwLDAsMCwuNCksIDAgOHB4IDI0cHggcmdiYSgwLDAsMCwuMjgpOwogICAgICAtLXNoYWRvdy1sZzowIDRweCAxNHB4IHJnYmEoMCwwLDAsLjQpLCAwIDIwcHggNDhweCByZ2JhKDAsMCwwLC4zMik7CiAgICAgIGNvbG9yLXNjaGVtZTogZGFyazsKICAgIH0KICB9CiAgOnJvb3RbZGF0YS10aGVtZT0iZGFyayJdewogICAgLS1pbms6I0VFRjJGNjsgLS1pbmstMjojQzlEMkRBOyAtLW11dGVkOiM4Qjk2QTA7IC0tbGluZTojMjkzMjNDOwogICAgLS1iZzojMEYxNzIwOyAtLXN1cmZhY2U6IzE3MjEyQzsgLS1zdXJmYWNlLTI6IzFDMjczMzsKICAgIC0tYWNjZW50OiNFNkMyNjc7IC0tYWNjZW50LTI6I0YwRDQ4ODsgLS1hY2NlbnQtc29mdDojM0EzMzFBOyAtLXN1bjojRTZDMjY3OyAtLXN1bi1zb2Z0OiMzQTJBMUU7CiAgICAtLXNlY29uZGFyeTojNEZBMzlEOwogICAgLS1zaGFkb3c6MCAxcHggMnB4IHJnYmEoMCwwLDAsLjQpLCAwIDhweCAyNHB4IHJnYmEoMCwwLDAsLjI4KTsKICAgIC0tc2hhZG93LWxnOjAgNHB4IDE0cHggcmdiYSgwLDAsMCwuNCksIDAgMjBweCA0OHB4IHJnYmEoMCwwLDAsLjMyKTsKICAgIGNvbG9yLXNjaGVtZTogZGFyazsKICB9CiAgKntib3gtc2l6aW5nOmJvcmRlci1ib3h9CiAgYm9keXsKICAgIG1hcmdpbjowOyBiYWNrZ3JvdW5kOnZhcigtLWJnKTsgY29sb3I6dmFyKC0taW5rKTsKICAgIGZvbnQtZmFtaWx5OiJJQk0gUGxleCBTYW5zIiwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgc2Fucy1zZXJpZjsKICAgIGZvbnQtc2l6ZToxNXB4OyBsaW5lLWhlaWdodDoxLjU7CiAgfQogIC53cmFwe21heC13aWR0aDo4ODBweDsgbWFyZ2luOjAgYXV0bzsgcGFkZGluZy1pbmxpbmU6MTZweDsgcGFkZGluZy1ibG9jazoyOHB4IDU2cHh9CiAgaGVhZGVyLm1hc3RoZWFke2Rpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBnYXA6NnB4OyBtYXJnaW4tYm90dG9tOjIycHh9CiAgLmtpY2tlcntmb250LXNpemU6MTFweDsgbGV0dGVyLXNwYWNpbmc6LjE0ZW07IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTsgY29sb3I6dmFyKC0tYWNjZW50KTsgZm9udC13ZWlnaHQ6NjAwfQogIGgxewogICAgZm9udC1mYW1pbHk6IkJyaWNvbGFnZSBHcm90ZXNxdWUiLCBHZW9yZ2lhLCBzZXJpZjsgZm9udC13ZWlnaHQ6NzAwOwogICAgZm9udC1zaXplOmNsYW1wKDI4cHgsNS4ydncsNDBweCk7IGxpbmUtaGVpZ2h0OjEuMDU7IG1hcmdpbjowOyB0ZXh0LXdyYXA6YmFsYW5jZTsgbGV0dGVyLXNwYWNpbmc6LS4wMmVtOwogIH0KICAuc3Vie2NvbG9yOnZhcigtLW11dGVkKTsgZm9udC1zaXplOjE0cHg7IG1heC13aWR0aDo2MGNofQoKICAvKiBTZWFyY2ggcGFuZWwsIGVUcmFuc2ZlcnMtc3R5bGUgKi8KICAuc2VhcmNocGFuZWx7CiAgICBiYWNrZ3JvdW5kOnZhcigtLXN1cmZhY2UpOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpOyBib3JkZXItcmFkaXVzOjE2cHg7CiAgICBib3gtc2hhZG93OnZhcigtLXNoYWRvdy1sZyk7IHBhZGRpbmc6MThweDsgcG9zaXRpb246cmVsYXRpdmU7IHotaW5kZXg6NjsKICB9CiAgLnNlZ3Jvd3tkaXNwbGF5OmZsZXg7IGdhcDo2cHg7IG1hcmdpbi1ib3R0b206MTRweDsgZmxleC13cmFwOndyYXB9CiAgLnNlZ2J0bnsKICAgIGZvbnQ6aW5oZXJpdDsgZm9udC13ZWlnaHQ6NjAwOyBmb250LXNpemU6MTIuNXB4OyBjb2xvcjp2YXIoLS1tdXRlZCk7CiAgICBiYWNrZ3JvdW5kOnZhcigtLXN1cmZhY2UtMik7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7IGJvcmRlci1yYWRpdXM6OHB4OwogICAgcGFkZGluZzo3cHggMTJweDsgY3Vyc29yOnBvaW50ZXI7CiAgfQogIC5zZWdidG5bYXJpYS1wcmVzc2VkPSJ0cnVlIl17YmFja2dyb3VuZDp2YXIoLS1hY2NlbnQpOyBjb2xvcjojZmZmOyBib3JkZXItY29sb3I6dmFyKC0tYWNjZW50KX0KICAuc2VnYnRuOmZvY3VzLXZpc2libGV7b3V0bGluZToycHggc29saWQgdmFyKC0tYWNjZW50KTsgb3V0bGluZS1vZmZzZXQ6MnB4fQogIC5maWVsZHN7ZGlzcGxheTpncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIGF1dG8gMWZyIDFmcjsgZ2FwOjEwcHg7IGFsaWduLWl0ZW1zOmVuZH0KICBAbWVkaWEgKG1heC13aWR0aDo2NDBweCl7IC5maWVsZHN7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnJ9IC5maWVsZHMgLnN3YXB3cmFwe29yZGVyOjV9IH0KICAuZmllbGR7ZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGdhcDo1cHg7IHBvc2l0aW9uOnJlbGF0aXZlfQogIC5maWVsZCAuZmxhYntmb250LXNpemU6MTFweDsgbGV0dGVyLXNwYWNpbmc6LjA3ZW07IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXdlaWdodDo2MDB9CiAgLmZpZWxkIGlucHV0LCAuZmllbGQgc2VsZWN0ewogICAgZm9udDppbmhlcml0OyBmb250LXNpemU6MTQuNXB4OyBjb2xvcjp2YXIoLS1pbmspOyBiYWNrZ3JvdW5kOnZhcigtLXN1cmZhY2UtMik7CiAgICBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpOyBib3JkZXItcmFkaXVzOjlweDsgcGFkZGluZzoxMXB4IDEycHg7IHdpZHRoOjEwMCU7CiAgfQogIC5maWVsZCBpbnB1dDpmb2N1cy12aXNpYmxlLCAuZmllbGQgc2VsZWN0OmZvY3VzLXZpc2libGV7b3V0bGluZToycHggc29saWQgdmFyKC0tYWNjZW50KTsgb3V0bGluZS1vZmZzZXQ6MXB4fQogIC5zd2Fwd3JhcHtkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmZsZXgtZW5kOyBwYWRkaW5nLWJvdHRvbToxcHh9CiAgLnN3YXBidG57CiAgICB3aWR0aDozOHB4OyBoZWlnaHQ6MzhweDsgZmxleDpub25lOyBib3JkZXItcmFkaXVzOjUwJTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTsKICAgIGJhY2tncm91bmQ6dmFyKC0tc3VyZmFjZS0yKTsgY29sb3I6dmFyKC0tYWNjZW50KTsgZm9udC1zaXplOjE2cHg7IGN1cnNvcjpwb2ludGVyOwogICAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7CiAgfQogIC5zd2FwYnRuOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYWNjZW50LXNvZnQpfQogIC5zd2FwYnRuOmZvY3VzLXZpc2libGV7b3V0bGluZToycHggc29saWQgdmFyKC0tYWNjZW50KTsgb3V0bGluZS1vZmZzZXQ6MnB4fQogIEBtZWRpYSAobWF4LXdpZHRoOjY0MHB4KXsgLnN3YXB3cmFwe2p1c3RpZnktY29udGVudDpjZW50ZXJ9IC5zd2FwYnRue3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpfSB9CiAgLnN1Z2dlc3R7CiAgICBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOmNhbGMoMTAwJSArIDRweCk7IGxlZnQ6MDsgcmlnaHQ6MDsgei1pbmRleDoyMDsKICAgIGJhY2tncm91bmQ6dmFyKC0tc3VyZmFjZSk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7IGJvcmRlci1yYWRpdXM6MTFweDsKICAgIGJveC1zaGFkb3c6dmFyKC0tc2hhZG93LWxnKTsgbWF4LWhlaWdodDoyODBweDsgb3ZlcmZsb3cteTphdXRvOyBwYWRkaW5nOjZweDsKICB9CiAgLnN1Z2dlc3QgYnV0dG9uewogICAgZGlzcGxheTpmbGV4OyB3aWR0aDoxMDAlOyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuOyBnYXA6MTBweDsKICAgIGZvbnQ6aW5oZXJpdDsgdGV4dC1hbGlnbjpsZWZ0OyBiYWNrZ3JvdW5kOnRyYW5zcGFyZW50OyBib3JkZXI6MDsgYm9yZGVyLXJhZGl1czo4cHg7CiAgICBwYWRkaW5nOjlweCAxMHB4OyBjdXJzb3I6cG9pbnRlcjsgY29sb3I6dmFyKC0taW5rKTsKICB9CiAgLnN1Z2dlc3QgYnV0dG9uOmhvdmVyLCAuc3VnZ2VzdCBidXR0b246Zm9jdXMtdmlzaWJsZXtiYWNrZ3JvdW5kOnZhcigtLWFjY2VudC1zb2Z0KTsgb3V0bGluZTpub25lfQogIC5zdWdnZXN0IC5zbmFtZXtmb250LXNpemU6MTMuNXB4OyBmb250LXdlaWdodDo1MDB9CiAgLnN1Z2dlc3QgLnN0YWd7Zm9udC1zaXplOjEwLjVweDsgZm9udC13ZWlnaHQ6NjAwOyBsZXR0ZXItc3BhY2luZzouMDVlbTsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOyBjb2xvcjp2YXIoLS1tdXRlZCk7IHdoaXRlLXNwYWNlOm5vd3JhcH0KICAuc3VnZ2VzdCAuc3RhZy56b25le2NvbG9yOnZhcigtLWFjY2VudCl9CiAgLnN1Z2dlc3QgLnN0YWcuYWlycG9ydHtjb2xvcjp2YXIoLS1zdW4pfQogIC5zdWdnZXN0IC5zdXNle2JvcmRlci10b3A6MXB4IGRhc2hlZCB2YXIoLS1saW5lKTsgbWFyZ2luLXRvcDo0cHg7IHBhZGRpbmctdG9wOjhweH0KICAuc3VnZ2VzdCAuc3VzZSAuc25hbWV7Y29sb3I6dmFyKC0tYWNjZW50KTsgZm9udC13ZWlnaHQ6NjAwfQogIC5zdWdnZXN0IC5zbm9uZXtwYWRkaW5nOjEycHggMTBweDsgZm9udC1zaXplOjEzcHg7IGNvbG9yOnZhcigtLW11dGVkKX0KICAuc2VhcmNoYnRuewogICAgbWFyZ2luLXRvcDoxNHB4OyB3aWR0aDoxMDAlOyBmb250OmluaGVyaXQ7IGZvbnQtd2VpZ2h0OjcwMDsgZm9udC1zaXplOjE0LjVweDsKICAgIGJhY2tncm91bmQ6dmFyKC0tYWNjZW50KTsgY29sb3I6I2ZmZjsgYm9yZGVyOjA7IGJvcmRlci1yYWRpdXM6MTBweDsgcGFkZGluZzoxM3B4OyBjdXJzb3I6cG9pbnRlcjsKICAgIGxldHRlci1zcGFjaW5nOi4wMmVtOwogIH0KICAuc2VhcmNoYnRuOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYWNjZW50LTIpfQogIC5zZWFyY2hidG46Zm9jdXMtdmlzaWJsZXtvdXRsaW5lOjJweCBzb2xpZCB2YXIoLS1pbmspOyBvdXRsaW5lLW9mZnNldDoycHh9CiAgLnNlYXJjaGJ0bjpkaXNhYmxlZHtvcGFjaXR5Oi41OyBjdXJzb3I6bm90LWFsbG93ZWR9CiAgLmhpbnR7Zm9udC1zaXplOjEycHg7IGNvbG9yOnZhcigtLW11dGVkKTsgbWFyZ2luLXRvcDo5cHg7IHRleHQtYWxpZ246Y2VudGVyfQoKICAvKiBSZXN1bHRzICovCiAgI3Jlc3VsdHN7bWFyZ2luLXRvcDoyNnB4fQogIC5yZXN1bHRoZWFke2Rpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6YmFzZWxpbmU7IGp1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuOyBnYXA6MTBweDsgZmxleC13cmFwOndyYXA7IG1hcmdpbi1ib3R0b206MTJweH0KICAucmVzdWx0aGVhZCBoMntmb250LWZhbWlseToiQnJpY29sYWdlIEdyb3Rlc3F1ZSIsR2VvcmdpYSxzZXJpZjsgZm9udC1zaXplOjIycHg7IG1hcmdpbjowOyBmb250LXdlaWdodDo3MDA7IGxldHRlci1zcGFjaW5nOi0uMDFlbX0KICAucmVzdWx0aGVhZCAucnpvbmV7Zm9udC1zaXplOjEyLjVweDsgY29sb3I6dmFyKC0tbXV0ZWQpfQogIC5jYXJkc3tkaXNwbGF5OmdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoYXV0by1maXQsbWlubWF4KDIzMHB4LDFmcikpOyBnYXA6MTBweH0KICAuY2FyZHtiYWNrZ3JvdW5kOnZhcigtLXN1cmZhY2UpOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpOyBib3JkZXItcmFkaXVzOjEzcHg7IGJveC1zaGFkb3c6dmFyKC0tc2hhZG93KTsgcGFkZGluZzoxNXB4OyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgZ2FwOjhweH0KICAuY2FyZC5zZWxlY3RlZHtib3JkZXItY29sb3I6dmFyKC0tYWNjZW50KTsgYm94LXNoYWRvdzowIDAgMCAycHggdmFyKC0tYWNjZW50LXNvZnQpfQogIC5jYXJkLnVuYXZhaWxhYmxle29wYWNpdHk6LjZ9CiAgLmNpY29uc3tkaXNwbGF5OmdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyOyBnYXA6NnB4IDEwcHg7IG1hcmdpbi10b3A6MnB4fQogIC5jaWNvbntkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjZweDsgZm9udC1zaXplOjExLjVweDsgY29sb3I6dmFyKC0taW5rLTIpfQogIC5jaWNvbiBzdmd7ZmxleDpub25lOyBjb2xvcjp2YXIoLS1hY2NlbnQpfQogIC5jaWNvbiBie2ZvbnQtd2VpZ2h0OjYwMH0KICAuY3ZlaHsKICAgIGJhY2tncm91bmQ6dmFyKC0tc3VyZmFjZS0yKTsgYm9yZGVyLXJhZGl1czoxMHB4OyBvdmVyZmxvdzpoaWRkZW47CiAgICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgaGVpZ2h0OjEzMHB4OwogIH0KICAuY3ZlaCBpbWd7d2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IG9iamVjdC1maXQ6Y292ZXI7IGRpc3BsYXk6YmxvY2t9CiAgLmNhcmQgLmN0aXRsZXtmb250LXdlaWdodDo3MDA7IGZvbnQtc2l6ZToxNC41cHh9CiAgLmNhcmQgLmNjYXB7Zm9udC1zaXplOjEycHg7IGNvbG9yOnZhcigtLW11dGVkKX0KICAuY2FyZCAuY2Rlc2N7Zm9udC1zaXplOjEyLjVweDsgY29sb3I6dmFyKC0taW5rLTIpOyBsaW5lLWhlaWdodDoxLjQ1fQogIC5jYXJkIC5jcHJpY2V7Zm9udC1mYW1pbHk6IklCTSBQbGV4IE1vbm8iLG1vbm9zcGFjZTsgZm9udC13ZWlnaHQ6NzAwOyBmb250LXNpemU6MjZweDsgZm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zOyBtYXJnaW4tdG9wOjJweH0KICAuY2FyZCAuY3ByaWNlIHNtYWxse2Rpc3BsYXk6YmxvY2s7IGZvbnQtZmFtaWx5OiJJQk0gUGxleCBTYW5zIixzYW5zLXNlcmlmOyBmb250LXdlaWdodDo1MDA7IGZvbnQtc2l6ZToxMXB4OyBsZXR0ZXItc3BhY2luZzouMDVlbTsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOyBjb2xvcjp2YXIoLS1tdXRlZCl9CiAgLmNhcmQgLmNhbHR7Zm9udC1zaXplOjEycHg7IGNvbG9yOnZhcigtLW11dGVkKTsgZm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zfQogIC5jYXJkIGJ1dHRvbi5waWNrewogICAgbWFyZ2luLXRvcDo2cHg7IGZvbnQ6aW5oZXJpdDsgZm9udC13ZWlnaHQ6NjAwOyBmb250LXNpemU6MTIuNXB4OyBiYWNrZ3JvdW5kOnRyYW5zcGFyZW50OwogICAgY29sb3I6dmFyKC0tYWNjZW50KTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1hY2NlbnQpOyBib3JkZXItcmFkaXVzOjhweDsgcGFkZGluZzo3cHggMTBweDsgY3Vyc29yOnBvaW50ZXI7CiAgfQogIC5jYXJkLnNlbGVjdGVkIGJ1dHRvbi5waWNre2JhY2tncm91bmQ6dmFyKC0tYWNjZW50KTsgY29sb3I6I2ZmZn0KICAuZmFjdHN7ZGlzcGxheTpmbGV4OyBnYXA6N3B4OyBmbGV4LXdyYXA6d3JhcDsgZm9udC1zaXplOjExLjVweDsgbWFyZ2luLXRvcDoxMnB4fQogIC50YWd7YmFja2dyb3VuZDp2YXIoLS1hY2NlbnQtc29mdCk7IGNvbG9yOnZhcigtLWFjY2VudCk7IGJvcmRlci1yYWRpdXM6OTk5cHg7IHBhZGRpbmc6M3B4IDlweDsgZm9udC13ZWlnaHQ6NjAwOyBmb250LXNpemU6MTFweH0KCiAgLnJlcXVlc3Rib3h7bWFyZ2luLXRvcDoxNnB4OyBiYWNrZ3JvdW5kOnZhcigtLXN1cmZhY2UpOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpOyBib3JkZXItcmFkaXVzOjEzcHg7IHBhZGRpbmc6MTVweDsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGdhcDoxMXB4OyBib3gtc2hhZG93OnZhcigtLXNoYWRvdyl9CiAgLnJlcXVlc3Rib3ggLnJsYWJ7Zm9udC1zaXplOjExcHg7IGxldHRlci1zcGFjaW5nOi4wN2VtOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IGNvbG9yOnZhcigtLW11dGVkKTsgZm9udC13ZWlnaHQ6NjAwfQogIC5yZmllbGRze2Rpc3BsYXk6Z3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdChhdXRvLWZpdCxtaW5tYXgoMTQwcHgsMWZyKSk7IGdhcDo4cHh9CiAgLnJmaWVsZHMgbGFiZWx7ZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGdhcDo0cHg7IGZvbnQtc2l6ZToxMnB4OyBjb2xvcjp2YXIoLS1tdXRlZCl9CiAgLnJmaWVsZHMgaW5wdXR7CiAgICBmb250OmluaGVyaXQ7IGZvbnQtc2l6ZToxMy41cHg7IGNvbG9yOnZhcigtLWluayk7IGJhY2tncm91bmQ6dmFyKC0tc3VyZmFjZS0yKTsKICAgIGJvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7IGJvcmRlci1yYWRpdXM6OHB4OyBwYWRkaW5nOjhweCA5cHg7CiAgfQogIC5tc2dwcmV2aWV3ewogICAgZm9udC1mYW1pbHk6IklCTSBQbGV4IE1vbm8iLCB1aS1tb25vc3BhY2UsIG1vbm9zcGFjZTsgZm9udC1zaXplOjEyLjVweDsgbGluZS1oZWlnaHQ6MS42OwogICAgYmFja2dyb3VuZDp2YXIoLS1zdXJmYWNlLTIpOyBib3JkZXI6MXB4IGRhc2hlZCB2YXIoLS1saW5lKTsgYm9yZGVyLXJhZGl1czo5cHg7IHBhZGRpbmc6MTFweDsKICAgIHdoaXRlLXNwYWNlOnByZS13cmFwOyBjb2xvcjp2YXIoLS1pbmstMik7CiAgfQogIC5hY3Rpb25ze2Rpc3BsYXk6ZmxleDsgZ2FwOjhweDsgZmxleC13cmFwOndyYXB9CiAgYnV0dG9uLmNvcHl7CiAgICBmb250OmluaGVyaXQ7IGZvbnQtd2VpZ2h0OjYwMDsgZm9udC1zaXplOjEzcHg7IGJhY2tncm91bmQ6dmFyKC0tYWNjZW50KTsgY29sb3I6I2ZmZjsKICAgIGJvcmRlcjowOyBib3JkZXItcmFkaXVzOjlweDsgcGFkZGluZzo5cHggMTRweDsgY3Vyc29yOnBvaW50ZXI7CiAgfQogIGJ1dHRvbi5jb3B5LmFsdHtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50OyBjb2xvcjp2YXIoLS1hY2NlbnQpOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWFjY2VudCl9CiAgYnV0dG9uLmNvcHk6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lOjJweCBzb2xpZCB2YXIoLS1pbmspOyBvdXRsaW5lLW9mZnNldDoycHh9CiAgLnJlZntmb250LXNpemU6MTJweDsgY29sb3I6dmFyKC0tbXV0ZWQpOyBtYXJnaW4tdG9wOjEycHg7IGJvcmRlci10b3A6MXB4IGRhc2hlZCB2YXIoLS1saW5lKTsgcGFkZGluZy10b3A6OXB4fQoKICAucXVvdGVub3RlewogICAgZGlzcGxheTpmbGV4OyBnYXA6MTBweDsgYWxpZ24taXRlbXM6ZmxleC1zdGFydDsgYmFja2dyb3VuZDp2YXIoLS1zdW4tc29mdCk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tc3VuKTsKICAgIGJvcmRlci1yYWRpdXM6MTJweDsgcGFkZGluZzoxMnB4IDE0cHg7IG1hcmdpbi1ib3R0b206MTRweDsgZm9udC1zaXplOjEzcHg7IGNvbG9yOnZhcigtLWluay0yKTsKICB9CiAgLnF1b3Rlbm90ZSBie2NvbG9yOnZhcigtLWluayl9CgogIC5lbXB0eXt0ZXh0LWFsaWduOmNlbnRlcjsgY29sb3I6dmFyKC0tbXV0ZWQpOyBwYWRkaW5nOjIwcHggMTJweDsgYmFja2dyb3VuZDp2YXIoLS1zdXJmYWNlKTsgYm9yZGVyOjFweCBkYXNoZWQgdmFyKC0tbGluZSk7IGJvcmRlci1yYWRpdXM6MTNweH0KICAubWV0YXJvd3tkaXNwbGF5OmZsZXg7IGp1c3RpZnktY29udGVudDpmbGV4LWVuZDsgbWFyZ2luLXRvcDoxNHB4fQogIC5zd2l0Y2h7ZGlzcGxheTppbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6N3B4OyBmb250LXNpemU6MTIuNXB4OyBjb2xvcjp2YXIoLS1tdXRlZCk7IGN1cnNvcjpwb2ludGVyfQogIC5zd2l0Y2ggaW5wdXR7YWNjZW50LWNvbG9yOnZhcigtLWFjY2VudCk7IHdpZHRoOjE1cHg7IGhlaWdodDoxNXB4fQoKICBmb290ZXJ7bWFyZ2luLXRvcDozMHB4OyBmb250LXNpemU6MTJweDsgY29sb3I6dmFyKC0tbXV0ZWQpOyBib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1saW5lKTsgcGFkZGluZy10b3A6MTRweH0KICBmb290ZXIgcHttYXJnaW46NXB4IDB9CgovKiBZTVQtQ1RBLVYxOiBnb2xkID0gZmlsbCBvbmx5LCBuYXZ5IHRleHQgKDcuMTU6MSk7IHRlYWwtZCBmb3IgYWNjZW50IHRleHQ7IFdoYXRzQXBwICMxNTdhM2YgKi8KLnNlZ2J0blthcmlhLXByZXNzZWQ9InRydWUiXSwuc2VhcmNoYnRuLC5jYXJkLnNlbGVjdGVkIGJ1dHRvbi5waWNrLGJ1dHRvbi5jb3B5e2NvbG9yOiMxNDIzM2IhaW1wb3J0YW50fQouc2VhcmNoYnRue2ZvbnQtd2VpZ2h0OjgwMDtsZXR0ZXItc3BhY2luZzouMDRlbTtib3gtc2hhZG93OjAgNnB4IDE2cHggcmdiYSgyMTIsMTY5LDU1LC4zNSl9Ci5zZWFyY2hidG46aG92ZXIsYnV0dG9uLmNvcHk6aG92ZXJ7YmFja2dyb3VuZDojZTBiOTRhfQpidXR0b24uY29weXtmb250LXdlaWdodDo4MDB9CmEuY29weS53YXtmb250OmluaGVyaXQ7Zm9udC13ZWlnaHQ6ODAwO2ZvbnQtc2l6ZToxNHB4O2JvcmRlci1yYWRpdXM6OXB4O3BhZGRpbmc6MTBweCAxOHB4O2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQ6IzE1N2EzZiFpbXBvcnRhbnQ7Y29sb3I6I2ZmZiFpbXBvcnRhbnQ7Ym9yZGVyOjAhaW1wb3J0YW50O2JveC1zaGFkb3c6MCA2cHggMTRweCByZ2JhKDIxLDEyMiw2MywuMjgpfQphLmNvcHkud2E6aG92ZXJ7YmFja2dyb3VuZDojMGY2NDMzIWltcG9ydGFudH0KYS5jb3B5LndhOmZvY3VzLXZpc2libGV7b3V0bGluZToycHggc29saWQgIzE0MjMzYjtvdXRsaW5lLW9mZnNldDoycHh9CkBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGxpZ2h0KXsKLmtpY2tlciwudGFnLC5zdWdnZXN0IC5zdGFnLnpvbmUsLnN1Z2dlc3QgLnN1c2UgLnNuYW1lLC5zd2FwYnRue2NvbG9yOiMyMDUxNGR9CmJ1dHRvbi5waWNre2NvbG9yOiMyMDUxNGQ7Ym9yZGVyLWNvbG9yOiMyMDUxNGR9CmJ1dHRvbi5jb3B5LmFsdHtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOiMxNDIzM2IhaW1wb3J0YW50O2JvcmRlcjoycHggc29saWQgIzE0MjMzYn0KYnV0dG9uLmNvcHkuYWx0OmhvdmVye2JhY2tncm91bmQ6IzE0MjMzYjtjb2xvcjojZmZmIWltcG9ydGFudH0KfQo8L3N0eWxlPgoKPHN0eWxlPi8qIFlNVC1CQVItVjE6IGNvbXBhY3Qgc2luZ2xlLWxpbmUgc2VhcmNoIGJhciAqLwouc2VhcmNocGFuZWx7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczphdXRvIG1pbm1heCgwLDEuM2ZyKSBhdXRvIG1pbm1heCgwLDEuM2ZyKSBtaW5tYXgoMTUwcHgsLjhmcikgYXV0bzthbGlnbi1pdGVtczpzdHJldGNoO2dhcDowO3BhZGRpbmc6OHB4IDhweCA4cHggMTJweDtib3JkZXItcmFkaXVzOjE4cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3gtc2hhZG93OjAgMTBweCAzMHB4IHJnYmEoMjAsMzUsNTksLjE0KX0KLnNlZ3Jvd3ttYXJnaW46MDthbGlnbi1zZWxmOmNlbnRlcjtmbGV4LXdyYXA6bm93cmFwO2dhcDowO2JhY2tncm91bmQ6dmFyKC0tc3VyZmFjZS0yKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6OTk5cHg7cGFkZGluZzozcHg7bWFyZ2luLXJpZ2h0OjZweH0KLnNlZ3JvdyAuc2VnYnRue2JvcmRlcjowO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czo5OTlweDtwYWRkaW5nOjdweCAxMXB4O2ZvbnQtc2l6ZToxMnB4O3doaXRlLXNwYWNlOm5vd3JhcH0KLnNlZ3JvdyAuc2VnYnRuW2FyaWEtcHJlc3NlZD0idHJ1ZSJde2JhY2tncm91bmQ6dmFyKC0tYWNjZW50KX0KLmZpZWxkc3tkaXNwbGF5OmNvbnRlbnRzfQouZmllbGR7cGFkZGluZzo2cHggMTRweDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2dhcDoxcHg7bWluLXdpZHRoOjA7Ym9yZGVyLXJhZGl1czoxMnB4fQouZmllbGQ6bGFzdC1vZi10eXBle2JvcmRlci1sZWZ0OjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOjAgMTJweCAxMnB4IDB9Ci5maWVsZDpmb2N1cy13aXRoaW57YmFja2dyb3VuZDp2YXIoLS1hY2NlbnQtc29mdCl9Ci5maWVsZCAuZmxhYntmb250LXNpemU6MTBweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo1cHh9Ci5maWVsZCAuZmxhYjo6YmVmb3Jle2NvbnRlbnQ6IiI7d2lkdGg6MTNweDtoZWlnaHQ6MTNweDtmbGV4Om5vbmU7YmFja2dyb3VuZDp2YXIoLS1zZWNvbmRhcnkpOy13ZWJraXQtbWFzazp2YXIoLS1pYykgY2VudGVyL2NvbnRhaW4gbm8tcmVwZWF0O21hc2s6dmFyKC0taWMpIGNlbnRlci9jb250YWluIG5vLXJlcGVhdH0KLmZpZWxkOmhhcygjZnJvbSl7LS1pYzp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMjQgMjQnJTNFJTNDcGF0aCBkPSdNMjEgMTZ2LTJsLTgtNVYzLjVhMS41IDEuNSAwIDAgMC0zIDBWOWwtOCA1djJsOC0yLjVWMTlsLTIgMS41VjIybDMuNS0xIDMuNSAxdi0xLjVMMTMgMTl2LTUuNXonLyUzRSUzQy9zdmclM0UiKX0KLmZpZWxkOmhhcygjdG8pey0taWM6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDI0IDI0JyUzRSUzQ3BhdGggZD0nTTEyIDJhNyA3IDAgMCAwLTcgN2MwIDUuMiA3IDEzIDcgMTNzNy03LjggNy0xM2E3IDcgMCAwIDAtNy03em0wIDkuNUEyLjUgMi41IDAgMSAxIDEyIDYuNWEyLjUgMi41IDAgMCAxIDAgNXonLyUzRSUzQy9zdmclM0UiKX0KLmZpZWxkOmhhcygjcGF4KXstLWljOnVybCgiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAyNCAyNCclM0UlM0NwYXRoIGQ9J00xNiAxMWEzIDMgMCAxIDAtMy0zIDMgMyAwIDAgMCAzIDN6TTggMTFhMyAzIDAgMSAwLTMtMyAzIDMgMCAwIDAgMyAzem0wIDJjLTIuMyAwLTcgMS4yLTcgMy41VjE5aDE0di0yLjVDMTUgMTQuMiAxMC4zIDEzIDggMTN6bTggMGMtLjMgMC0uNiAwLTEgLjFhNC4zIDQuMyAwIDAgMSAyIDMuNFYxOWg2di0yLjVjMC0yLjMtNC43LTMuNS03LTMuNXonLyUzRSUzQy9zdmclM0UiKX0KLmZpZWxkIGlucHV0LC5maWVsZCBzZWxlY3R7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjA7cGFkZGluZzoycHggMDtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo2MDA7dGV4dC1vdmVyZmxvdzplbGxpcHNpc30KLmZpZWxkIGlucHV0OmZvY3VzLXZpc2libGUsLmZpZWxkIHNlbGVjdDpmb2N1cy12aXNpYmxle291dGxpbmU6bm9uZX0KLmZpZWxkIHNlbGVjdHtjdXJzb3I6cG9pbnRlcn0KLnN3YXB3cmFwe2FsaWduLXNlbGY6Y2VudGVyO3BhZGRpbmc6MH0KLnN3YXBidG57d2lkdGg6MzJweDtoZWlnaHQ6MzJweDtiYWNrZ3JvdW5kOnZhcigtLXN1cmZhY2UpO2JveC1zaGFkb3c6MCAxcHggNHB4IHJnYmEoMjAsMzUsNTksLjE1KX0KLnNlYXJjaGJ0bnttYXJnaW46MCAwIDAgNnB4O3dpZHRoOmF1dG87bWluLWhlaWdodDo1NHB4O3BhZGRpbmc6MCAyNnB4O2JvcmRlci1yYWRpdXM6MTJweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Z2FwOjhweDt3aGl0ZS1zcGFjZTpub3dyYXB9Ci5zZWFyY2hidG46OmJlZm9yZXtjb250ZW50OiIiO3dpZHRoOjE3cHg7aGVpZ2h0OjE3cHg7YmFja2dyb3VuZDpjdXJyZW50Q29sb3I7LXdlYmtpdC1tYXNrOnVybCgiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAyNCAyNCclM0UlM0NwYXRoIGQ9J00xNS41IDE0aC0uOGwtLjMtLjNBNi41IDYuNSAwIDEgMCAxNCAxNS41bC4zLjN2LjhsNSA1IDEuNS0xLjUtNS01em0tNiAwYTQuNSA0LjUgMCAxIDEgMC05IDQuNSA0LjUgMCAwIDEgMCA5eicvJTNFJTNDL3N2ZyUzRSIpIGNlbnRlci9jb250YWluIG5vLXJlcGVhdDttYXNrOnVybCgiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAyNCAyNCclM0UlM0NwYXRoIGQ9J00xNS41IDE0aC0uOGwtLjMtLjNBNi41IDYuNSAwIDEgMCAxNCAxNS41bC4zLjN2LjhsNSA1IDEuNS0xLjUtNS01em0tNiAwYTQuNSA0LjUgMCAxIDEgMC05IDQuNSA0LjUgMCAwIDEgMCA5eicvJTNFJTNDL3N2ZyUzRSIpIGNlbnRlci9jb250YWluIG5vLXJlcGVhdH0KLmhpbnR7Z3JpZC1jb2x1bW46MS8tMTttYXJnaW46OHB4IDAgMH0KLndyYXB7bWF4LXdpZHRoOjEwODBweH0KLmZpZWxkIGlucHV0LC5maWVsZCBzZWxlY3R7aGVpZ2h0OjMwcHg7bWluLWhlaWdodDowO2xpbmUtaGVpZ2h0OjEuMztmbGV4Om5vbmV9Ci5maWVsZHttaW4taGVpZ2h0OjB9Cmh0bWwueW10LWVtYmVkZGVkICN3cGFkbWluYmFye2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9Cmh0bWwueW10LWVtYmVkZGVke21hcmdpbi10b3A6MCFpbXBvcnRhbnR9Cmh0bWwueW10LWVtYmVkZGVkLGh0bWwueW10LWVtYmVkZGVkIGJvZHl7YmFja2dyb3VuZDp0cmFuc3BhcmVudCFpbXBvcnRhbnR9Ci5jdmVoe2hlaWdodDphdXRvO2FzcGVjdC1yYXRpbzo0LzN9Ci5jdmVoIGltZ3tvYmplY3QtcG9zaXRpb246Y2VudGVyIDcwJX0KLmNhcmQgYnV0dG9uLnBpY2t7Y29sb3I6dmFyKC0taW5rKTtib3JkZXItY29sb3I6dmFyKC0taW5rKTtmb250LXdlaWdodDo3MDB9Ci5jYXJkLnNlbGVjdGVkIGJ1dHRvbi5waWNre2NvbG9yOiMxNDIzM2I7Ym9yZGVyLWNvbG9yOnZhcigtLWFjY2VudCl9Ci5zdWdnZXN0e3dpZHRoOm1heCgxMDAlLDQ2MHB4KTtyaWdodDphdXRvfQouc3VnZ2VzdCAuc25hbWV7d2hpdGUtc3BhY2U6bm9ybWFsO2ZsZXg6MTttaW4td2lkdGg6MH0KLnN1Z2dlc3R7b3ZlcmZsb3cteDpoaWRkZW59Ci5zdWdnZXN0IC5zdGFne21heC13aWR0aDo0OCU7d2hpdGUtc3BhY2U6bm9ybWFsO3RleHQtYWxpZ246cmlnaHR9Ci5zdWdnZXN0IGJ1dHRvbntwYWRkaW5nOjhweCAxMHB4fQpAbWVkaWEgKG1heC13aWR0aDo3NjBweCl7LnN1Z2dlc3R7d2lkdGg6MTAwJX19Ci55bXQtZW1iZWRkZWQgLmhpbnQsLnltdC1lbWJlZGRlZCAjcmVzdWx0cyAuZW1wdHksLnltdC1lbWJlZGRlZCAubWV0YXJvd3tkaXNwbGF5Om5vbmUhaW1wb3J0YW50fQoueW10LWVtYmVkZGVkIC53cmFwe3BhZGRpbmctYmxvY2s6OHB4IDEwcHg7cGFkZGluZy1pbmxpbmU6NHB4O21heC13aWR0aDpub25lfQoueW10LWVtYmVkZGVkICNyZXN1bHRze21hcmdpbi10b3A6MTRweH0KLnN1Z29wZW4gYm9keXttaW4taGVpZ2h0OjM4MHB4fQpAbWVkaWEgKG1heC13aWR0aDo3NjBweCl7CiAuc2VhcmNocGFuZWx7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7Z2FwOjhweDtwYWRkaW5nOjEycHh9CiAuc2Vncm93e2dyaWQtY29sdW1uOjEvLTE7bWFyZ2luOjA7anVzdGlmeS1zZWxmOnN0YXJ0fQogLmZpZWxke2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSkhaW1wb3J0YW50O2JvcmRlci1yYWRpdXM6MTJweCFpbXBvcnRhbnQ7YmFja2dyb3VuZDp2YXIoLS1zdXJmYWNlLTIpO2dyaWQtY29sdW1uOjEvLTF9CiAuZmllbGQ6aGFzKCNwYXgpe2dyaWQtY29sdW1uOjF9CiAuc3dhcHdyYXB7Z3JpZC1jb2x1bW46MS8tMTtqdXN0aWZ5LXNlbGY6Y2VudGVyO21hcmdpbjotMTRweCAwO3otaW5kZXg6Mn0KIC5zd2FwYnRue3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpfQogLnNlYXJjaGJ0bnttYXJnaW46MDtncmlkLWNvbHVtbjoyO21pbi1oZWlnaHQ6NTBweDtwYWRkaW5nOjAgMTJweH0KfQo8L3N0eWxlPgo8ZGl2IGNsYXNzPSJ3cmFwIj4KICA8aGVhZGVyIGNsYXNzPSJtYXN0aGVhZCI+CiAgICA8c3BhbiBjbGFzcz0ia2lja2VyIj5ZZXNteXRyYW5zZmVyICZtaWRkb3Q7IDIwMjYgcmF0ZXM8L3NwYW4+CiAgICA8aDE+VHJhbnNmZXIgc2VhcmNoIGVuZ2luZTwvaDE+CiAgICA8cCBjbGFzcz0ic3ViIj5TZWFyY2ggd2hlcmUgeW91J3JlIHN0YXJ0aW5nIGFuZCB3aGVyZSB5b3UncmUgaGVhZGVkLCBjaG9vc2UgcGFzc2VuZ2VycyBhbmQgdHJpcCB0eXBlLCBhbmQgZ2V0IGEgcHJpY2UgaW5zdGFudGx5ICZtZGFzaDsgdGhlbiBzZW5kIGEgcmVhZHktdG8tY29weSBhdmFpbGFiaWxpdHkgcmVxdWVzdC48L3A+CiAgPC9oZWFkZXI+CgogIDxkaXYgY2xhc3M9InNlYXJjaHBhbmVsIj4KICAgIDxkaXYgY2xhc3M9InNlZ3JvdyIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IlRyaXAgdHlwZSI+CiAgICAgIDxidXR0b24gY2xhc3M9InNlZ2J0biIgaWQ9InRydCIgdHlwZT0iYnV0dG9uIiBhcmlhLXByZXNzZWQ9ImZhbHNlIj5Sb3VuZCB0cmlwPC9idXR0b24+CiAgICAgIDxidXR0b24gY2xhc3M9InNlZ2J0biIgaWQ9InRvdyIgdHlwZT0iYnV0dG9uIiBhcmlhLXByZXNzZWQ9InRydWUiPk9uZSB3YXk8L2J1dHRvbj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iZmllbGRzIj4KICAgICAgPGRpdiBjbGFzcz0iZmllbGQiPgogICAgICAgIDxzcGFuIGNsYXNzPSJmbGFiIj5Gcm9tPC9zcGFuPgogICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iZnJvbSIgcGxhY2Vob2xkZXI9IkFpcnBvcnQsIGhvdGVsIG9yIGFyZWEiIGF1dG9jb21wbGV0ZT0ib2ZmIiBzcGVsbGNoZWNrPSJmYWxzZSI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3VnZ2VzdCIgaWQ9InN1Z2dlc3RGcm9tIiBoaWRkZW4+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJzd2Fwd3JhcCI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0ic3dhcGJ0biIgaWQ9InN3YXBidG4iIHR5cGU9ImJ1dHRvbiIgdGl0bGU9IlN3YXAgRnJvbSBhbmQgVG8iIGFyaWEtbGFiZWw9IlN3YXAgRnJvbSBhbmQgVG8iPiYjODY0Njs8L2J1dHRvbj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImZpZWxkIj4KICAgICAgICA8c3BhbiBjbGFzcz0iZmxhYiI+VG88L3NwYW4+CiAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJ0byIgcGxhY2Vob2xkZXI9IkFpcnBvcnQsIGhvdGVsIG9yIGFyZWEiIGF1dG9jb21wbGV0ZT0ib2ZmIiBzcGVsbGNoZWNrPSJmYWxzZSI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3VnZ2VzdCIgaWQ9InN1Z2dlc3RUbyIgaGlkZGVuPjwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iZmllbGQiPgogICAgICAgIDxzcGFuIGNsYXNzPSJmbGFiIj5QYXNzZW5nZXJzPC9zcGFuPgogICAgICAgIDxzZWxlY3QgaWQ9InBheCI+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxIj4xIHBhc3Nlbmdlcjwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMiIgc2VsZWN0ZWQ+MiBwYXNzZW5nZXJzPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIzIj4zIHBhc3NlbmdlcnM8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjQiPjQgcGFzc2VuZ2Vyczwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNSI+NSBwYXNzZW5nZXJzPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI2Ij42IHBhc3NlbmdlcnM8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjciPjcgcGFzc2VuZ2Vyczwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iOCI+OCBwYXNzZW5nZXJzPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI5Ij45IHBhc3NlbmdlcnMgKGdyb3VwIHZhbik8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEwIj4xMCBwYXNzZW5nZXJzIChncm91cCB2YW4pPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxMSI+MTEgcGFzc2VuZ2VycyAoZ3JvdXAgdmFuKTwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTIiPjEyIHBhc3NlbmdlcnMgKGdyb3VwIHZhbik8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEzIj4xMyBwYXNzZW5nZXJzIChncm91cCB2YW4pPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxNCI+MTQgcGFzc2VuZ2VycyAoZ3JvdXAgdmFuKTwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTUiPjE1IHBhc3NlbmdlcnMgKGdyb3VwIHZhbik8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjE2Ij4xNiBwYXNzZW5nZXJzIChncm91cCB2YW4pPC9vcHRpb24+CiAgICAgICAgPC9zZWxlY3Q+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8YnV0dG9uIGNsYXNzPSJzZWFyY2hidG4iIGlkPSJzZWFyY2hidG4iIHR5cGU9ImJ1dHRvbiIgZGlzYWJsZWQ+U0VBUkNIPC9idXR0b24+CiAgICA8cCBjbGFzcz0iaGludCI+VHlwZSBhdCBsZWFzdCAyIGxldHRlcnMgYW5kIHBpY2sgYSBtYXRjaCwgb3IgcHJlc3MgRW50ZXIgdG8gdXNlIGV4YWN0bHkgd2hhdCB5b3UgdHlwZWQgaWYgeW91ciBob3RlbCBpc24ndCBsaXN0ZWQuPC9wPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJtZXRhcm93Ij48bGFiZWwgY2xhc3M9InN3aXRjaCI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iaW50ZXJuYWwiPiBJbnRlcm5hbCBtb2RlIChzaG93IG1hcmtldCByZWZlcmVuY2UpPC9sYWJlbD48L2Rpdj4KCiAgPGRpdiBpZD0icmVzdWx0cyI+PC9kaXY+CgogIDxmb290ZXI+CiAgICA8cD48Yj5Ib3cgdG8gcmVhZCB0aGUgcHJpY2UuPC9iPiBGaXhlZCBwcmljZSBieSBncm91cCBzaXplOiAxLTYsIDcgb3IgOCBwYXNzZW5nZXJzIGluIGEgcHJpdmF0ZSB2YW4sIG9yIHVwIHRvIDE2IGluIHRoZSBncm91cCB2YW4uICAgUm91bmQgdHJpcCBjb3ZlcnMgdGhlIGFycml2YWwgYW5kIHRoZSByZXR1cm4gdG8gdGhlIGFpcnBvcnQuPC9wPgogICAgPHA+UmF0ZXMgY3VycmVudCBhcyBvZiBTZXB0ZW1iZXIgMjYsIDIwMjYsIGluIFVTRC4gUm91dGVzIG91dHNpZGUgdGhpcyBsaXN0IGFuZCBsYXJnZXIgZ3JvdXBzIGFyZSBxdW90ZWQgYnkgV2hhdHNBcHAuPC9wPgogIDwvZm9vdGVyPgo8L2Rpdj4KCjxzY3JpcHQ+CmNvbnN0IERBVEEgPSB7InpvbmVzIjp7ImNhbmN1biI6eyJsYWJlbCI6IkNhbmN1biBIb3RlbCBab25lICYgRG93bnRvd24iLCJtaW4iOjMwLCJydEciOjE0OSwib3dHIjo3NSwicmVmUnRQIjo2OS45OSwicmVmUnRHIjoxNDkuMCwicmVmT3dQIjozNS45OSwicmVmT3dHIjo3NS4wLCJvd1AxXzYiOjMyLCJvd1A3IjozNSwib3dQOCI6NzAsInJ0UDFfNiI6NjksInJ0UDciOjY5LCJydFA4IjoxMzgsInZlcmlmaWVkIjp0cnVlfSwicGp1YXJleiI6eyJsYWJlbCI6IlB1ZXJ0byBKdWFyZXogLyBJc2xhIE11amVyZXMgRmVycnkiLCJtaW4iOjI1LCJydEciOjE5Nywib3dHIjoxMDMsInJlZlJ0UCI6MTA1LjAsInJlZlJ0RyI6MTk3LjAsInJlZk93UCI6NTUuMCwicmVmT3dHIjoxMDMuMCwib3dQMV82Ijo1MCwib3dQNyI6NTUsIm93UDgiOjExMCwicnRQMV82IjoxMDAsInJ0UDciOjEwNSwicnRQOCI6MjEwLCJ2ZXJpZmllZCI6dHJ1ZX0sInBsYXlhbXVqZXJlcyI6eyJsYWJlbCI6IlBsYXlhIE11amVyZXMiLCJtaW4iOjM1LCJydEciOjIxNywib3dHIjoxMTMsInJlZlJ0UCI6MTE1LjAsInJlZlJ0RyI6MjE3LjAsInJlZk93UCI6NjAuMCwicmVmT3dHIjoxMTMuMCwib3dQMV82Ijo2MCwib3dQNyI6NjAsIm93UDgiOjEyMCwicnRQMV82IjoxMTUsInJ0UDciOjExNSwicnRQOCI6MjMwLCJ2ZXJpZmllZCI6dHJ1ZX0sImNvc3RhbXVqZXJlcyI6eyJsYWJlbCI6IkNvc3RhIE11amVyZXMgLyBJc2xhIEJsYW5jYSIsIm1pbiI6NDAsInJ0RyI6MjY3LCJvd0ciOjEzNywicmVmUnRQIjoxMzkuMCwicmVmUnRHIjoyNjcuMCwicmVmT3dQIjo3MC4wLCJyZWZPd0ciOjEzNy4wLCJvd1AxXzYiOjcwLCJvd1A3Ijo3MCwib3dQOCI6MTQwLCJydFAxXzYiOjEzOSwicnRQNyI6MTM5LCJydFA4IjoyNzgsInZlcmlmaWVkIjp0cnVlfSwicHVlcnRvbW9yZWxvcyI6eyJsYWJlbCI6IlB1ZXJ0byBNb3JlbG9zIiwibWluIjozNSwicnRHIjoxOTcsIm93RyI6MTAzLCJyZWZSdFAiOjExOS4wLCJyZWZSdEciOjE5Ny4wLCJyZWZPd1AiOjYyLjAsInJlZk93RyI6MTAzLjAsIm93UDFfNiI6NTIsIm93UDciOjYyLCJvd1A4IjoxMjQsInJ0UDFfNiI6MTA4LCJydFA3IjoxMTksInJ0UDgiOjIzOCwidmVyaWZpZWQiOnRydWV9LCJtYXJvbWEiOnsibGFiZWwiOiJSaXZpZXJhIE1heWEgLSBNYXJvbWEgJiBQbGF5YSBkZWwgU2VjcmV0byIsIm1pbiI6NDUsInJ0RyI6MzcwLCJvd0ciOjE4NSwicmVmUnRQIjoxMzAuMCwicmVmUnRHIjozNzAuODYsInJlZk93UCI6NzAuMCwicmVmT3dHIjoxODUuNDMsIm93UDFfNiI6NzAsIm93UDciOjcwLCJvd1A4IjoxNDAsInJ0UDFfNiI6MTMwLCJydFA3IjoxMzAsInJ0UDgiOjI2MCwidmVyaWZpZWQiOmZhbHNlfSwicGRjIjp7ImxhYmVsIjoiUGxheWEgZGVsIENhcm1lbiwgUGxheWFjYXIgJiBNYXlha29iYSIsIm1pbiI6NTUsInJ0RyI6Mjk5LCJvd0ciOjE0OSwicmVmUnRQIjoxNDIuMCwicmVmUnRHIjoyOTkuOTksInJlZk93UCI6NzIuMCwicmVmT3dHIjoxNDkuOTksIm93UDFfNiI6NjksIm93UDciOjcyLCJvd1A4IjoxNDQsInJ0UDFfNiI6MTQyLCJydFA3IjoxNDIsInJ0UDgiOjI4NCwidmVyaWZpZWQiOnRydWV9LCJwYXZlbnR1cmFzIjp7ImxhYmVsIjoiUml2aWVyYSBNYXlhIC0gUHVlcnRvIEF2ZW50dXJhcywgWHB1LUhhICYgQmFyY2VsbyBNYXlhIiwibWluIjo3MCwicnRHIjo0MTAsIm93RyI6MjI1LCJyZWZSdFAiOjE4NS4wLCJyZWZSdEciOjQxMC4wLCJyZWZPd1AiOjk1LjAsInJlZk93RyI6MjI1LjAsIm93UDFfNiI6OTAsIm93UDciOjk1LCJvd1A4IjoxOTAsInJ0UDFfNiI6MTc1LCJydFA3IjoxODUsInJ0UDgiOjM3MCwidmVyaWZpZWQiOnRydWV9LCJha3VtYWwiOnsibGFiZWwiOiJBa3VtYWwiLCJtaW4iOjgwLCJydEciOjUwMCwib3dHIjoyNzAsInJlZlJ0UCI6MjE1LjAsInJlZlJ0RyI6NTAwLjAsInJlZk93UCI6MTEwLjAsInJlZk93RyI6MjcwLjAsIm93UDFfNiI6MTA1LCJvd1A3IjoxMTAsIm93UDgiOjIyMCwicnRQMV82IjoyMDAsInJ0UDciOjIxNSwicnRQOCI6NDMwLCJ2ZXJpZmllZCI6dHJ1ZX0sInR1bHVtIjp7ImxhYmVsIjoiVHVsdW0gVG93biwgWGVsLUhhICYgU29saW1hbiBCYXkiLCJtaW4iOjk1LCJydEciOjU4NSwib3dHIjozMDAsInJlZlJ0UCI6MjYwLjAsInJlZlJ0RyI6NTg1LjAsInJlZk93UCI6MTMwLjAsInJlZk93RyI6MzAwLjAsIm93UDFfNiI6MTI1LCJvd1A3IjoxMzAsIm93UDgiOjI2MCwicnRQMV82IjoyNTAsInJ0UDciOjI2MCwicnRQOCI6NTIwLCJ2ZXJpZmllZCI6dHJ1ZX0sInR1bHVtemgiOnsibGFiZWwiOiJUdWx1bSBIb3RlbCBab25lIChCb2NhIFBhaWxhKSIsIm1pbiI6MTEwLCJydEciOjY4MCwib3dHIjozNTAsInJlZlJ0UCI6MzAwLjAsInJlZlJ0RyI6NjgwLjAsInJlZk93UCI6MTUwLjAsInJlZk93RyI6MzUwLjAsIm93UDFfNiI6MTQ1LCJvd1A3IjoxNTAsIm93UDgiOjMwMCwicnRQMV82IjoyOTAsInJ0UDciOjMwMCwicnRQOCI6NjAwLCJ2ZXJpZmllZCI6dHJ1ZX0sImNvYmEiOnsibGFiZWwiOiJDb2JhIiwibWluIjoxNTAsInJ0RyI6ODgwLCJvd0ciOjQ1MCwicmVmUnRQIjo0ODAuMCwicmVmUnRHIjo4ODAuMCwicmVmT3dQIjoyNTAuMCwicmVmT3dHIjo0NTAuMCwib3dQMV82IjoyNTAsIm93UDciOjI1MCwib3dQOCI6NTAwLCJydFAxXzYiOjQ4MCwicnRQNyI6NDgwLCJydFA4Ijo5NjAsInZlcmlmaWVkIjpmYWxzZX0sImhvbGJveCI6eyJsYWJlbCI6IkNoaXF1aWxhIChIb2xib3ggRmVycnkpIiwibWluIjoxNTAsInJ0RyI6MTUwMCwib3dHIjo4MDAsInJlZlJ0UCI6NDkwLjAsInJlZlJ0RyI6MTUwMC4wLCJyZWZPd1AiOjI1MC4wLCJyZWZPd0ciOjgwMC4wLCJvd1AxXzYiOjI0MCwib3dQNyI6MjUwLCJvd1A4Ijo1MDAsInJ0UDFfNiI6NDgwLCJydFA3Ijo0OTAsInJ0UDgiOjk4MCwidmVyaWZpZWQiOnRydWV9LCJjaGljaGVuIjp7ImxhYmVsIjoiQ2hpY2hlbiBJdHphICYgVmFsbGFkb2xpZCIsIm1pbiI6MTk1LCJydEciOjE3MzYsIm93RyI6ODcxLCJyZWZSdFAiOjU4NS4wLCJyZWZSdEciOjE3MzYuMiwicmVmT3dQIjozMDAuMCwicmVmT3dHIjo4NzEuMzIsIm93UDFfNiI6MzAwLCJvd1A3IjozMDAsIm93UDgiOjYwMCwicnRQMV82Ijo1ODUsInJ0UDciOjU4NSwicnRQOCI6MTE3MCwidmVyaWZpZWQiOmZhbHNlfSwiZmNwIjp7ImxhYmVsIjoiRmVsaXBlIENhcnJpbGxvIFB1ZXJ0byIsIm1pbiI6MTkwLCJydEciOjE5NDAsIm93RyI6MTA3NywicmVmUnRQIjo2MDAuMCwicmVmUnRHIjoxOTQwLjYyLCJyZWZPd1AiOjMwMC4wLCJyZWZPd0ciOjEwNzcuMDMsIm93UDFfNiI6MzAwLCJvd1A3IjozMDAsIm93UDgiOjYwMCwicnRQMV82Ijo2MDAsInJ0UDciOjYwMCwicnRQOCI6MTIwMCwidmVyaWZpZWQiOmZhbHNlfSwiY2hldHVtYWwiOnsibGFiZWwiOiJDaGV0dW1hbCIsIm1pbiI6MzAwLCJydEciOjEzNjUsIm93RyI6Njk1LCJyZWZSdFAiOjgwMC4wLCJyZWZSdEciOjEzNjUuNjIsInJlZk93UCI6NDAwLjAsInJlZk93RyI6Njk1Ljc1LCJvd1AxXzYiOjQwMCwib3dQNyI6NDAwLCJvd1A4Ijo4MDAsInJ0UDFfNiI6ODAwLCJydFA3Ijo4MDAsInJ0UDgiOjE2MDAsInZlcmlmaWVkIjpmYWxzZX0sIm1lcmlkYSI6eyJsYWJlbCI6Ik1lcmlkYSIsIm1pbiI6MjQwLCJydEciOjE5NTAsIm93RyI6OTkwLCJyZWZSdFAiOjEwMDAuMCwicmVmUnRHIjoxOTUwLjAsInJlZk93UCI6NTAwLjAsInJlZk93RyI6OTkwLjAsIm93UDFfNiI6NTAwLCJvd1A3Ijo1MDAsIm93UDgiOjEwMDAsInJ0UDFfNiI6MTAwMCwicnRQNyI6MTAwMCwicnRQOCI6MjAwMCwidmVyaWZpZWQiOmZhbHNlfSwibWFoYWh1YWwiOnsibGFiZWwiOiJNYWhhaHVhbCIsIm1pbiI6MjYwLCJydEciOjE5NDAsIm93RyI6MTA3NywicmVmUnRQIjoxMDAwLjAsInJlZlJ0RyI6MTk0MC42MiwicmVmT3dQIjo1MDAuMCwicmVmT3dHIjoxMDc3LjAzLCJvd1AxXzYiOjUwMCwib3dQNyI6NTAwLCJvd1A4IjoxMDAwLCJydFAxXzYiOjEwMDAsInJ0UDciOjEwMDAsInJ0UDgiOjIwMDAsInZlcmlmaWVkIjpmYWxzZX0sImJhY2FsYXIiOnsibGFiZWwiOiJCYWNhbGFyIiwibWluIjoyNTAsInJ0RyI6bnVsbCwib3dHIjpudWxsLCJyZWZSdFAiOjEwNzAuMCwicmVmUnRHIjpudWxsLCJyZWZPd1AiOjU1MC4wLCJyZWZPd0ciOm51bGwsIm93UDFfNiI6NTUwLCJvd1A3Ijo1NTAsIm93UDgiOjExMDAsInJ0UDFfNiI6MTA3MCwicnRQNyI6MTA3MCwicnRQOCI6MjE0MCwidmVyaWZpZWQiOmZhbHNlfX0sInJlc29ydHMiOnsiY2FuY3VuIjpbIkFkaGFyYSBIYWNpZW5kYSBDYW5jdW4iLCJBaXJwb3J0IFNsZWVweSBJbm4iLCJBa3VhenVsIFJlc29ydHMgQWR1bHRzIG9ubHkiLCJBbGFtb3MgSW5uIiwiQWxsIEluY2x1c2l2ZSBCZWQsIEJlYWNoIGFuZCBGdW4gQ2FuY3VuIiwiQWxsdXJlIENvbmRvcyBQdWVydG8gQ2FuY3VuIiwiQWxvZnQgQ2FuY3VuIiwiQW1iaWFuY2UgU3VpdGVzIENhbmN1biIsIkFwYXJ0YW1lbnRvcyBWaWVudG8gU3VpdGVzIENhbmN1biIsIkFxdWFtYXJpbmEgQmVhY2ggUmVzb3J0IiwiQXJpYSBDb25kb3MgUHVlcnRvIENhbmN1biIsIkFydCBEZWNvIFN1aXRlcyBDYW5jdW4iLCJCYXJjZWxvIENvc3RhIENhbmN1biIsIkJheSBWaWV3IEdyYW5kIiwiQmF5IFZpZXcgR3JhbmQgUG9ydG8gRmlubyIsIkJlIExpdmUgR3JhbmQgQ2FuY3VuIiwiQmUgTGl2ZSBHcmFuZCBDYXJpYmJlYW4gUmVzb3J0IiwiQmUgTGl2ZSBHcmFuZCBQYWxtIEJlYWNoIiwiQmUgTGl2ZSBHcmFuZCBQbGF5YSIsIkJlYWNoIFBhbGFjZSBDYW5jdW4iLCJCZWFjaHNjYXBlIEtpbiBIYSBWaWxsYXMgYW5kIFN1aXRlcyIsIkJlZCBhbmQgQnJlYWtmYXN0IFBlY2FyaSBDYW5jdW4iLCJCZWwgQWlyIENvbGxlY3Rpb24gUmVzb3J0IGFuZCBTcGEgQ2FuY3VuIiwiQmVsbGV2dWUgQmVhY2ggUGFyYWRpc2UiLCJCcmVhdGhsZXNzIENhbmN1biBTb3VsIFJlc29ydCBhbmQgU3BhIiwiQ2FuY3VuIFBsYXphIFNlYSBWaWV3IiwiQ2Fub3B5IEJ5IEhpbHRvbiBDYW5jdW4gTGEgSXNsYSIsIkNhcGl0YWwgTyBDYW5jdW4gT2NlYW4gVmlldyBDYXNhIENvc3RhIEhlcm1vc2EgQ2FzYSBNZXhpY2FuYSBDYW5jdW4iLCJDYXNhIElvbGEiLCJDYXNhIFR1cnF1ZXNhIiwiQ2FzYSBkZWwgVmlhamVybyBDYW5jdW4iLCJDaXR5IEV4cHJlc3MgSnVuaW9yIGJ5IE1hcnJpb3R0IENhbmN1biIsIkNpdHkgRXhwcmVzcyBieSBNYXJyaW90dCBDYW5jdW4gQWVyb3B1ZXJ0byIsIkNsdWIgSW50ZXJuYWNpb25hbCBDYW5jdW4iLCJDbHViIE1lZCBDYW5jdW4iLCJDbHViIFJlZ2luYSBDYW5jdW4iLCJDb21mb3J0IElubiBDYW5jdW4iLCJDb21mb3J0IElubiBDYW5jdW4gQWVyb3B1ZXJ0byIsIkNvcmFsIE1hciBDYW5jdW4gQ29uZG9zIiwiQ29yYWwgTWFyIENvbmRvbWluaXVtcyIsIkNvcmFsIE1hciBQb2sgVGEgUG9rIiwiQ291cnR5YXJkIGJ5IE1hcnJpb3R0IENhbmN1biIsIkNyb3duIFBhcmFkaXNlIENhbmN1biIsIkRyZWFtcyBMYWdvb24iLCJFY28gSG90ZWwgRWwgUmV5IGRlbCBDYXJpYmUiLCJGYWlyZmllbGQgQ2FuY3VuIERvd250b3duIiwiRmFpcmZpZWxkIElubiBhbmQgU3VpdGVzIEJ5IE1hcnJpb3R0IENhbmN1biBBaXJwb3J0IiwiRmFpcmZpZWxkIElubiBhbmQgU3VpdGVzIENhbmN1biIsIkZpZXN0YSBBbWVyaWNhbmEgQ29uZGVzYSBDYW5jdW4iLCJGaWVzdGEgQW1lcmljYW5hIFZpbGxhcyBDYW5jdW4iLCJGaWVzdGEgSW5uIENhbmN1biBMYXMgQW1lcmljYXMiLCJGb3VyIFBvaW50cyBieSBTaGVyYXRvbiBDYW5jdW4iLCJHUiBTb2xhcmlzIENhbmN1biIsIkdSIFNvbGFyaXMgQ2FyaWJlIiwiR2FtbWEgQ2FuY3VuIENlbnRybyBHb2xkZW4gUGFybmFzc3VzIiwiR29sZGVuIFBhcm5hc3N1cyBSZXNvcnQgYW5kIFNwYSIsIkdyYW5kIEZpZXN0YSBBbWVyaWNhbmEgQ29yYWwgQmVhY2giLCJHcmFuZCBPYXNpcyBDYW5jdW4iLCJHcmFuZCBPYXNpcyBQYWxtIiwiR3JhbmQgT2FzaXMgU2VucyIsIkdyYW5kIE9hc2lzIFZpdmEiLCJHcmFuZCBQYXJrIFJveWFsIENhbmN1biIsIkdyYW5kIFJveWFsIExhZ29vbiIsIkhhbXB0b24gSW5uIEJ5IEhpbHRvbiBDYW5jdW4iLCJIYW1wdG9uIElubiBDYW5jdW4iLCJIYXJkIFJvY2sgSG90ZWwgQ2FuY3VuIiwiSGlsdG9uIENhbmN1biBBbGwgSW5jbHVzaXZlIiwiSGlsdG9uIEdhcmRlbiBJbm4gQ2FuY3VuIEFpcnBvcnQiLCJIaWx0b24gTWFyIENhcmliZSIsIkhvbGlkYXkgSW5uIENhbmN1biIsIkhvbGlkYXkgSW5uIEV4cHJlc3MgQ2FuY3VuIiwiSG9zdGVsIE1pcmFnZSBDYW5jdW4iLCJIb3N0ZWwgTmF0dXJhIENhbmN1biIsIkhvc3RlbCBRdWV0emFsIENhbmN1biIsIkhvdGVsIEJvdXRpcXVlIENhc2EgTWFyYWYgLSBBZHVsdHMgT25seSBIb3RlbCBDYXNhIFR1cnF1ZXNhIiwiSG90ZWwgQ29sb25pYWwgQ2FuY3VuIiwiSG90ZWwgRW1wb3JpbyBDYW5jdW4iLCJIb3RlbCBMYXMgR2FyZGVuaWFzIiwiSG90ZWwgUml1IFZlbnR1cmEiLCJIb3RlbCBYYmFsYW1xdWUiLCJIeWF0dCBQbGFjZSBDYW5jdW4gQWlycG9ydCIsIkh5YXR0IFJlZ2VuY3kgQ2FuY3VuIiwiSHlhdHQgWmlsYXJhIENhbmN1biIsIkliZXJvc3RhciBTZWxlY3Rpb24gQ2FuY3VuIiwiSWJlcm9zdGFyIFNlbGVjdGlvbiBDb3JhbCBDYW5jdW4iLCJJYmlzIENhbmN1biIsIkpXIE1hcnJpb3R0IENhbmN1biBSZXNvcnQgYW5kIFNwYSIsIktpbiBIYSBCZWFjaCIsIktyeXN0YWwgQ2FuY3VuIiwiS3J5c3RhbCBHcmFuZCBDYW5jdW4iLCJLcnlzdGFsIFVyYmFuIENhbmN1biBDZW50cm8iLCJMaXZlIEFxdWEgQ2FuY3VuIiwiTWFycmlvdHQgQ2FuY3VuIFJlc29ydCIsIk1lbGlhIENhc2EgTWF5YSIsIk1vb24gUGFsYWNlIENhbmN1biIsIk1vb24gUGFsYWNlIEdvbGYgUmVzb3J0IiwiTW9vbiBQYWxhY2UgR29sZiBhbmQgU3BhIFJlc29ydCIsIk1vb24gUGFsYWNlIEdvbGYgYW5kIFNwYSBSZXNvcnQgQWxsIEluY2x1c2l2ZSIsIk1vb24gUGFsYWNlIE5penVjIiwiTW9vbiBQYWxhY2UgU3VucmlzZSIsIk5JWlVDIFJlc29ydCBhbmQgU3BhIC0gQ2FuY3VuIiwiTml6dWMgTHV4dXJ5IFZpbGxhcyIsIk5penVjIFJlc29ydCBhbmQgU3BhIiwiTm93IEVtZXJhbGQgQ2FuY3VuIiwiT2FzaXMgQ2FuY3VuIFJlc29ydCBhbmQgU3BhIiwiT2FzaXMgUGFsbSIsIk9tbmkgQ2FuY3VuIEhvdGVsIiwiT21uaSBDYW5jdW4gSG90ZWwgYW5kIFZpbGxhcyIsIk9tbmkgQ2FuY3VuIFJlc29ydCIsIk9tbmkgQ2FuY3VuIFZpbGxhcyBhbmQgSG90ZWwiLCJPbmUgQ2FuY3VuIENlbnRybyIsIlBhbmFtYSBKYWNrIFJlc29ydCBDYW5jdW4iLCJQYW5hbWEgSmFjayBSZXNvcnRzIEdyYW4gQ2FyaWJlIENhbmN1biIsIlBhcmFkaXN1cyBDYW5jdW4iLCJQYXJrIFJveWFsIEJlYWNoIENhbmN1biIsIlBsYXlhIERlbGZpbmVzIENhbmN1biBQbGF5YSBMYW5nb3N0YSBDYW5jdW4iLCJQbGF6YSBDYXJhY29sIENhbmN1biIsIlBsYXphIENhcmliZSIsIlBsYXphIExhIElzbGEgQ2FuY3VuIiwiUHJlc2lkZW50ZSBJbnRlcmNvbnRpbmVudGFsIENhbmN1biIsIlJlc2lkZW5jZSBJbm4gQnkgTWFycmlvdHQgQ2FuY3VuIiwiUml1IENhbmN1biBBbGwgSW5jbHVzaXZlIiwiUml1IENhcmliZSBDYW5jdW4iLCJSaXUgUGFsYWNlIEt1a3Vsa2FuIiwiUm95YWwgQ2FyaWJiZWFuIENhbmN1biIsIlJveWFsIElzbGFuZGVyIENhbmN1biIsIlJveWFsIFNvbGFyaXMgQ2FuY3VuIiwiUm95YWwgU3Vuc2V0IiwiUm95YWwgU3Vuc2V0IENsdWIiLCJSb3lhbHRvbiBDSElDIiwiUm95YWx0b24gU3VpdGVzIENhbmN1biIsIlNhbmRvcyBDYW5jdW4iLCJTZWNyZXRzIFRoZSBWaW5lIiwiU2VsaW5hIENhbmN1biBEb3dudG93biIsIlNlbGluYSBDYW5jdW4gSG90ZWwgWm9uZSIsIlNreSBJbm4gSG90ZWwiLCJTa3kgUmVzaWRlbmNlcyBQdWVydG8gQ2FuY3VuIiwiU3BhemlvIEJvdXRpcXVlIEhvdGVsIiwiU3VuIFBhbGFjZSBDYW5jdW4iLCJTdW5zY2FwZSBTdGFyIENhbmN1biBBbGwgSW5jbHVzaXZlIFRlbXB0YXRpb24gQ2FuY3VuIiwiVGVtcHRhdGlvbiBSZXNvcnQgYW5kIFNwYSBDYW5jdW4iLCJUaGUgQmF5IFZpZXcgR3JhbmQgQ2FuY3VuIiwiVGhlIFJpdHogQ2FybHRvbiBDYW5jdW4iLCJUaGUgV2VzdGluIExhZ3VuYW1hciIsIlRoZSBXZXN0aW4gUmVnaW5hIiwiVGhlIFdlc3RpbiBSZXNvcnQgYW5kIFNwYSBDYW5jdW4iLCJUdWNhbmN1biIsIlUgYnkgR3JhbmQgRmllc3RhIEFtZXJpY2FuYSIsIlZpbGxhcyBEZWwgTGFnbyIsIlZpbGxhcyBOaXp1YyIsIlZpbGxhcyBUcm9waWNhbCBab25hIEhvdGVsZXJhIENhbmN1biIsIldlc3RpbiBDYW5jdW4gSG90ZWwiLCJXeW5kaGFtIEFsbHRyYSBDYW5jdW4iLCJXeW5kaGFtIEdhcmRlbiBDYW5jdW4gRG93bnRvd24iLCJYYmFsYW1xdWUgQ2FuY3VuIiwiaWJpcyBDYW5jdW4gQ2VudHJvIl0sInBqdWFyZXoiOlsiQW1hcmEgQ2FuY3VuIEJlYWNoZnJvbnQiLCJCbHVlIEJheSBDbHViIiwiQ2FzYSBQdW50YSBTYW0gQiBBbmQgQiIsIkRyZWFtcyBWaXN0YSBDYW5jdW4gR29sZiBBbmQgU3BhIFJlc29ydCIsIkxhIENhc2EgRGVsIFNvbCBQdWVydG8gSnVhcmV6IiwiTGEgQ2FzYSBNZXhpY2FuYSIsIlZpbGxhIFJvbGFuZGkgQ2FuY3VuIl0sInBsYXlhbXVqZXJlcyI6WyJBVEVMSUVSIFBsYXlhIE11amVyZXMiLCJCZWxvdmVkIFBsYXlhIE11amVyZXMiLCJEcmVhbXMgUGxheWEgTXVqZXJlcyIsIkVzdHVkaW8gUGxheWEgTXVqZXJlcyIsIkV4Y2VsbGVuY2UgUGxheWEgTXVqZXJlcyIsIkZpbmVzdCBQbGF5YSBNdWplcmVzIiwiUGFyYWRpc3VzIFBsYXlhIE11amVyZXMiLCJWaWxsYSBkZWwgUGFsbWFyIENhbmN1biBMdXh1cnkgQmVhY2ggUmVzb3J0IGFuZCBTcGEiXSwiY29zdGFtdWplcmVzIjpbIkNhdGFsb25pYSBHcmFuZCBDb3N0YSBNdWplcmVzIiwiR3JhbiBQYWxsYWRpdW0gQ29zdGEgTXVqZXJlcyBSZXNvcnQgYW5kIFNwYSIsIkhvdGVsIFBsYW5ldCBIb2xseXdvb2QgQmVhY2ggUmVzb3J0IiwiSG90ZWwgUml1IExhdGlubyIsIk1hamVzdGljIEVsZWdhbmNlIENvc3RhIE11amVyZXMiLCJNYWplc3RpYyBNaXJhZ2UgQ29zdGEgTXVqZXJlcyIsIk9jZWFuIEFsbHVyZSBDb3N0YSBNdWplcmVzIiwiUGxhbmV0IEhvbGx5d29vZCBDYW5jdW4iLCJQbGFuZXQgSG9sbHl3b29kIENhbmN1biBBZHVsdCBTY2VuZSIsIlB1bnRhIEJsYW5jYSBCZWFjaCBDbHViIiwiUml1IER1bmFtYXIiLCJUUlMgQ29yYWwgSG90ZWwiXSwicHVlcnRvbW9yZWxvcyI6WyJBYmJleSBkZWwgU29sIiwiQWNhbWF5YSBSZWVmIFJlc29ydCIsIkFsZGVhIEJlayBQdWVydG8gTW9yZWxvcyIsIkFuYW5kYSBDb25kb3MiLCJBcnJlY2lmZXMgU3VpdGVzIiwiQXp1bCBCZWFjaCBSZXNvcnQgUml2aWVyYSBDYW5jdW4iLCJBenVsIFZpbGxhIENhcm9sYSBQdWVydG8gTW9yZWxvcyIsIkF6dWwgVmlsbGEgQ2FzYSBEZWwgTWFyIiwiQXp1bCBWaWxsYSBFc21lcmFsZGEiLCJCcmVhdGhsZXNzIFJpdmllcmEgQ2FuY3VuIFJlc29ydCBhbmQgU3BhIiwiQ2FyaWJiZWFuIFJlZWYgVmlsbGFzIFB1ZXJ0byBNb3JlbG9zIiwiQ2FzYSBBbGVncmlhIFB1ZXJ0byBNb3JlbG9zIiwiQ2FzYSBHb256YWxleiBQdWVydG8gTW9yZWxvcyIsIkNhc2EgTG9yZXRvIFB1ZXJ0byBNb3JlbG9zIiwiQ2FzYSBMdSIsIkNhc2EgTWFsaXggUHVlcnRvIE1vcmVsb3MiLCJDYXNhIE1hcmdhcml0YSBQdWVydG8gTW9yZWxvcyIsIkNhc2EgTWF0aWxkYSBQdWVydG8gTW9yZWxvcyIsIkNhc2EgT20gLSBQdWVydG8gTW9yZWxvcyIsIkNhc2l0YSBLaW4gSGEgUHVlcnRvIE1vcmVsb3MiLCJDZWliYSBkZWwgTWFyIiwiQ2l0eSBFeHByZXNzIFBsdXMgYnkgTWFycmlvdHQgQ2FuY3VuIEFlcm9wdWVydG8gUml2aWVyYSIsIkNpdHkgRXhwcmVzcyBTdWl0ZXMgYnkgTWFycmlvdHQgQ2FuY3VuIEFlcm9wdWVydG8gUml2aWVyYSIsIkRlbHBoaW51cyBQdWVydG8gTW9yZWxvcyBEZXNpcmUgUml2aWVyYSBNYXlhIFBlYXJsIFJlc29ydCIsIkRlc2lyZSBSaXZpZXJhIE1heWEgUmVzb3J0IiwiRHJlYW1zIEphZGUiLCJEcmVhbXMgTmF0dXJhIFJlc29ydCBhbmQgU3BhIiwiRHJlYW1zIFJpdmllcmEgQ2FuY3VuIiwiRHJlYW1zIFNhcHBoaXJlIFJlc29ydCBhbmQgU3BhIiwiRWwgQ2lkIFJpdmllcmEgTWF5YSIsIkVzdHVkaW8gTWFyIHkgU2VsdmEgUHVlcnRvIE1vcmVsb3MiLCJFeGNlbGxlbmNlIFJpdmllcmEgQ2FuY3VuIiwiR3JhbmQgUmVzaWRlbmNlcyBSaXZpZXJhIENhbmN1biIsIkgxMCBQdW50YSBUdXJxdWVzYSIsIkhhdmVuIFJpdmllcmEgQ2FuY3VuIiwiSGlkZWF3YXkgYXQgUm95YWx0b24gUml2aWVyYSBDYW5jdW4iLCJIaWx0b24gUHVlcnRvIE1vcmVsb3MiLCJIb3RlbCBDcm93biBQYXJhZGlzZSBSaXZpZXJhIiwiSG90ZWwgTWFyaW5hIEVsIENpZCIsIkh5YXR0IFppdmEgUml2aWVyYSBDYW5jdW4iLCJJYmVyb3N0YXIgU2VsZWN0aW9uIFJpdmllcmEgQ2FuY3VuIiwiSmFyZGluIERlbCBNYXIiLCJNYXJnYXJpdGF2aWxsZSBJc2xhbmQgUmVzZXJ2ZSIsIk1hcmluYSBFbCBDaWQgU3BhIGFuZCBCZWFjaCBSZXNvcnQiLCJOSCBSaXZpZXJhIENhbmN1biIsIk9jZWFuIENvcmFsIGFuZCBUdXJxdWVzYSBQYXJhaXNvIGRlIGxhIEJvbml0YSBhIEx1eHVyeSBDb2xsZWN0aW9uIFJlc29ydCIsIlJvbWFybGV5IEJlYWNoIEhvdXNlIiwiUm95YWx0b24gUml2aWVyYSBDYW5jdW4iLCJSb3lhbHRvbiBTcGxhc2ggUml2aWVyYSBDYW5jdW4iLCJTZW5zaXJhIFJlc29ydCBhbmQgU3BhIFJpdmllcmEgTWF5YSIsIlRoZSBGaXZlcyBIb3RlbCBhbmQgUmVzaWRlbmNlcyBQdWVydG8gTW9yZWxvcyIsIlRoZSBGaXZlcyBPY2VhbmZyb250IiwiVGhlIEtheSBDbHViIiwiVmVudHVzIEF0IE1hcmluYSBFbCBDaWQiLCJWaWxsYSBQYXJhZGlzZSIsIlZpbGxhcyBWYWxlbnRpbmEiLCJXYWxkb3JmIEFzdG9yaWEgQ2FuY3VuIl0sIm1hcm9tYSI6WyJCZWxtb25kIE1hcm9tYSBSZXNvcnQgQW5kIFNwYSIsIkNhdGFsb25pYSBQbGF5YSBNYXJvbWEiLCJDYXRhbG9uaWEgUHJpdmlsZWdlZCBNYXJvbWEiLCJDaGFibGUgTWFyb21hIiwiRWwgRG9yYWRvIENhc2l0YXMgUm95YWxlIiwiR3JhbmQgTHV4eGUgQXQgVmlkYW50YSBSaXZpZXJhIE1heWEiLCJHcmFuZCBNYXlhbiBXYXRlciIsIkhvdGVsIERvcmFkbyBSb3lhbCBhbmQgU3BhIiwiSWJlcm9zdGFyIEdyYW5kIFBhcmFpc28iLCJJYmVyb3N0YXIgUGFyYWlzbyBkZWwgTWFyIiwiSWJlcm9zdGFyIFNlbGVjdGlvbiBQYXJhaXNvIExpbmRvIiwiSWJlcm9zdGFyIFNlbGVjdGlvbiBQYXJhaXNvIE1heWEiLCJJYmVyb3N0YXIgV2F2ZXMgUGFyYWlzbyBCZWFjaCIsIkliZXJvc3RhciBXYXZlcyBQYXJhaXNvIGRlbCBNYXIiLCJKT0lBIFBhcmFpc28gYnkgSWJlcm9zdGFyIiwiTmlja2Vsb2Rlb24gSG90ZWxzIGFuZCBSZXNvcnRzIFJpdmllcmEgTWF5YSIsIlRoZSBCbGlzcyBhdCBWaWRhbnRhIFJpdmllcmEgTWF5YSIsIlRoZSBHcmFuZCBNYXlhbiBBdCBWaWRhbnRhIFJpdmllcmEgTWF5YSIsIlZhbGVudGluIEltcGVyaWFsIFJpdmllcmEgTWF5YSIsIlZpZGFudGEgUml2aWVyYSBNYXlhIiwiWG9sdW1hZG8gSW5zcGlyYXRpb24gVmlsbGFnZXMgQnkgS2FyaXNtYSJdLCJwZGMiOlsiMTIgQmVlcyBIb3RlbCIsIjV0aCBBdmVudWUgSG90ZWwiLCI1dGggQ29yYWwgU3VpdGVzIiwiNzcwIEhvdGVsIEJvdXRpcXVlIFBsYXlhIGRlbCBDYXJtZW4iLCJBLU5haCBTdWl0ZXMiLCJBYWxhZGEgUGxheWEgZGVsIENhcm1lbiIsIkFjYW50byBCb3V0aXF1ZSBIb3RlbCBhbmQgU3VpdGVzIiwiQWNhbnRvIENvbmRvbWluaXVtcyBhbmQgSG90ZWwgUGxheWEgZGVsIENhcm1lbiIsIkFrYWIgUGxheWFjYXIiLCJBbGRlYSBUaGFpIEx1eHVyeSBDb25kb2hvdGVsIiwiQWxsIFJpdmllcmEgUmVzb3J0IiwiQWxsZWdybyBQbGF5YWNhciIsIkFsbGVncm8gUGxheWFjYXIgQWxsIEluY2x1c2l2ZSIsIkFsb2Z0IFBsYXlhIGRlbCBDYXJtZW4iLCJBbmFoIDIwOFMiLCJBbmFoIEx1eHVyeSBDb25kb3MiLCJBbmFoIFN1aXRlcyBQbGF5YSBkZWwgQ2FybWVuIiwiQW5kYXogTWF5YWtvYmEgUmVzb3J0IFJpdmllcmEgTWF5YSIsIkFudGVyYSBIb3RlbCBhbmQgUmVzaWRlbmNlcyBQbGF5YSBkZWwgQ2FybWVuIiwiQXBhcnQgaG90ZWwgQ2FzYWVqaWRvIiwiQXF1YW1hcmluYSBTdWl0ZXMgUGxheWEgZGVsIENhcm1lbiIsIkFydGlzYW4gVGhlIEhhbmRtYWRlIEhvdGVsIENvbGxlY3Rpb24iLCJBcnRpc2lhbiA1YSBBdmVuaWRhIiwiQXJ0cyBWaWxsYXMgUGFrYWwgUmVzaWRlbmNlIFBsYXlhY2FyIEF0aGVuYSBDb25kb3MgUGxheWEgZGVsIENhcm1lbiIsIkF3YSBQbGF5YWNhciBSZXNpZGVuY2VzIiwiQXp1bCBGaXZlcyIsIkF6dWxhIE1heWEgU3R1ZGlvcyIsIkIxMCBMdXh1cnkgQ29uZG9zIFBsYXlhIGRlbCBDYXJtZW4iLCJCYWxpIExpZmVTdHlsZSBSZXNpZGVuY2lhbCBQbGF5YWNhciIsIkJhbW9hIFBsYXlhY2FyIEx1eHVyeSBSZXNpZGVuY2VzIiwiQmFueWFuIFRyZWUgTWF5YWtvYmEiLCJCZSBQbGF5YSBIb3RlbCBQbGF5YSBkZWwgQ2FybWVuIiwiQmVhY2ggRnJvbnQgSG91c2UgQ2FzYSBNYXJtb2wgUGxheWEgZGVsIENhcm1lbiIsIkJlbG1vbmQgTWFyb21hIFJlc29ydCBhbmQgU3BhIiwiQmx1ZSBCYXkgR3JhbmQgRXNtZXJhbGRhIiwiQmx1ZSBEaWFtb25kIEx1eHVyeSBCb3V0aXF1ZSBIb3RlbCIsIkJsdWUgRGlhbW9uZCBSaXZpZXJhIE1heWEgLSBBbGwgSW5jbHVzaXZlIFJlc29ydCIsIkJvdWdhbnZpbGxhcyBCIGFuZCBCIFBsYXlhY2FyIiwiQnJlYXRobGVzcyBSZXNvcnQgUGxheWEgZGVsIENhcm1lbiIsIkJyaXNhcyBkZWwgQ2FyaWJlIENvbmRvcyBQbGF5YSBkZWwgQ2FybWVuIiwiQnVlbiBEaWEgQmVhY2ggQiBhbmQgQiBQbGF5YWNhciBDYXJhY29sIFN1aXRlIEhvdGVsIFBsYXlhIGRlbCBDYXJtZW4iLCJDYXJpYmJlYW4gUGFyYWRpc2UgQm91dGlxdWUgSG90ZWwgQnkgQkZIIiwiQ2FybWVuIElubiIsIkNhc2EgQWJhcmthIFBsYXlhIGRlbCBDYXJtZW4iLCJDYXNhIEFnYXZhIiwiQ2FzYSBBbG1lbmRyYSBQbGF5YWNhciIsIkNhc2EgQXp1bCBDYXJpYmUgUGxheWFjYXIiLCJDYXNhIEJlbGxhIFZpZGEgUGxheWEgZGVsIENhcm1lbiIsIkNhc2EgQ2FyYWNvbCBQbGF5YWNhciIsIkNhc2EgQ29sYW5kcmVhIiwiQ2FzYSBFc3RyZWxsYSBkZWwgTWFyIiwiQ2FzYSBNYXJpbmEgR3JvdHRvIFBsYXlhIGRlbCBDYXJtZW4iLCJDYXNhIE1lbG9kaWEgZGUgbGEgTm9jaGUiLCJDYXNhIE1vcmEgU3VpdGVzIiwiQ2FzYSBWaWxsYSBDb3JhbCBQbGF5YSBkZWwgQ2FybWVuIiwiQ2FzYSBkZSBsYSBJZ3VhbmEgUGxheWEgZGVsIENhcm1lbiIsIkNhc2EgZGUgbGFzIEZsb3JlcyIsIkNhc2EgZGVsIEFidWVsbyAxMDIiLCJDYXNhIGRlbCBBbmdlbCBQbGF5YSBkZWwgQ2FybWVuIiwiQ2FzYSBkZWwgU29sIFBsYXlhIGRlbCBDYXJtZW4iLCJDaGFibGUgTWFyb21hIFB1bnRhIE1hcm9tYSIsIkNpdHkgRXhwcmVzcyBQbGF5YSBkZWwgQ2FybWVuIiwiQ2l0eSBFeHByZXNzIFN1aXRlcyBQbGF5YSBkZWwgQ2FybWVuIiwiQ29uZG8gSG90ZWwgRmFiaW9sYSBDb25kbyBUdWNhbm8gUGxheWEgZGVsIENhcm1lbiIsIkNvbmRvbWluaW8gSGFjaWVuZGEgZGVsIENhcm1lbiIsIkNvbmRvbWluaW9zIEthYXhlbCIsIkNvbmRvbWluaXVtIE1hZ2ljIFBhcmFkaXNlIiwiQ29yYWwgTmVncm8gNjgiLCJDb3JhbCBTdWl0ZXMgUGxheWEgZGVsIENhcm1lbiIsIkNvc3RhIGRlbCBNYXIiLCJEZXZvc3Npb24gQnkgTGl2ZSBBcXVhIFBsYXlhIGRlbCBDYXJtZW4iLCJFbCBEb3JhZG8gTWFyb21hIiwiRWwgVGFqIE9jZWFuZnJvbnQgYW5kIEJlYWNoc2lkZSBDb25kbyIsIkVsIFR1Y2FuIEhvdGVsIGFuZCBCZWFjaCIsIkVzdHVkaW9zIFBha2FsLU5hIEhvdGVsIiwiRXVyb3N0YXJzIEhhY2llbmRhIFZpc3RhIFJlYWwgSG90ZWwiLCJGYWlybW9udCBIZXJpdGFnZSBQbGFjZSBNYXlha29iYSIsIkZhaXJtb250IE1heWFrb2JhIiwiRmllc3RhIEJhbmFuYSBIb3RlbCIsIkZpZXN0YSBJbm4gUGxheWEgZGVsIENhcm1lbiIsIkdhcmRlbiBIb3VzZSAxIFRoZSBFbGVtZW50cyBHcmFuIEdhbGEgRXNtZXJhbGRhIFJlc29ydCIsIkdyYW5kIEh5YXR0IFBsYXlhIGRlbCBDYXJtZW4iLCJHcmFuZCBQcmluY2VzcyBTdW5zZXQgUmVzb3J0IiwiR3JhbmQgVmVsYXMgUml2aWVyYSBNYXlhIiwiR3JlZW4gT2FzaXMgSG9tZSBCb3V0aXF1ZSIsIkggMTAgSGFjaWVuZGEgTWF5YSIsIkggMTAgT2NlYW4gTWF5YSIsIkhhY2llbmRhIFBhcmFkaXNlIiwiSGFjaWVuZGEgWGNhcmV0IiwiSGlsdG9uIFBsYXlhIGRlbCBDYXJtZW4iLCJIb2xpZGF5IElubiBFeHByZXNzIGFuZCBTdWl0ZXMgUGxheWEgZGVsIENhcm1lbiIsIkhvdGVsIENhc2EgVHVjYW4gUGxheWEgZGVsIENhcm1lbiIsIkhvdGVsIENvbG9uaWFsIFBsYXlhIGRlbCBjYXJtZW4iLCJIb3RlbCBLb294IENhcmliYmVhbiBQYXJhZGlzZSIsIkhvdGVsIExlIFJldmUgUGxheWEgZGVsIENhcm1lbiIsIkhvdGVsIE1heWEgVHVycXVlc2EiLCJIb3RlbCBQbGF5YSBkZWwgU3VyIFBsYXlhIGRlbCBDYXJtZW4iLCJIb3RlbCBQb3NhZGEgU2lhbiBLYWFuIiwiSHlhdHQgQ2VudHJpYyBQbGF5YSBkZWwgQ2FybWVuIiwiSHlhdHQgWmlsYXJhIFJpdmllcmEgTWF5YSIsIkliZXJvc3RhciBRdWV0emFsIiwiSWJlcm9zdGFyIFR1Y2FuIEltcHJlc3Npb24gTW94Y2hlIGJ5IFNlY3JldHMiLCJLaW50YSBLYW4gSG90ZWwgQm91dGlxdWUgUGxheWEgZGVsIENhcm1lbiAtIEFkdWx0cyBPbmx5IiwiS29veCBDaXR5IEdhcmRlbiBIb3RlbCBQbGF5YSBkZWwgQ2FybWVuIiwiTGEgQ2FzYSBkZSBOYW9taSBQbGF5YSBkZWwgQ2FybWVuIiwiTGEgUGFwYXlhIDE1IENvbmRvcyIsIkxhIGFuZCBMdWNhIFBsYXlhIGRlbCBDYXJtZW4iLCJMYXQyMCBieSBMaXZlIEFxdWEiLCJMZSBSZXZlIiwiTWFoZWthbCBCZWFjaCBSZXNvcnQiLCJNYW5nbyB5IFBhcGF5YSBQbGF5YSBkZWwgQ2FybWVuIiwiTW9vbiBIYSBDb25kb21pbml1bXMiLCJNdm5nYXRhIEJvdXRpcXVlIEhvdGVsIiwiT2NlYW4gQnJlZXplIFJpdmVyYSBNYXlhIiwiUGFsbWFyZW5hIEJ5IE5haCBIb3RlbHMiLCJQYW5hbWEgSmFjayBSZXNvcnQgUGxheWEiLCJQYW5hbWEgSmFjayBSZXNvcnRzIEdyYW4gUG9ydG8gUGxheWEgZGVsIENhcm1lbiIsIlBhcGF5YSBQbHVzIiwiUGFyYWRpc3VzIFBsYXlhIGRlbCBDYXJtZW4iLCJQYXJhZGlzdXMgUGxheWEgZGVsIENhcm1lbiBFc21lcmFsZGEgUGFyYWRpc3VzIFBsYXlhIGRlbCBDYXJtZW4gTGEgUGVybGEiLCJQbGF0aW51bSBZdWNhdGFuIFByaW5jZXNzIEFsbCBTdWl0ZXMiLCJQbGF5YSBNYXlhIEJlYWNoZnJvbnQiLCJQbGF5YSBQb3J0YSBQbGF5YWNhciIsIlBvc2FkYSBTaWFuIEthYW4iLCJSZWVmIENsdWIiLCJSZWVmIFBsYXlhY2FyIiwiUml1IEx1cGl0YSIsIlJpdSBQbGF5YWNhciIsIlJpdSBUZXF1aWxhIiwiUml1IFl1Y2F0YW4iLCJSb3Nld29vZCBNYXlha29iYSIsIlJveWFsIEhpZGVhd2F5IFBsYXlhY2FyIiwiU2FuZG9zIENhcmFjb2wgQmVhY2ggYW5kIFNwYSIsIlNhbmRvcyBDYXJhY29sIEVjbyBSZXNvcnQiLCJTYW5kb3MgR2FsYSBQbGF5YWNhciIsIlNhbmRvcyBQbGF5YWNhciBCZWFjaCBSZXNvcnQiLCJTZWNyZXRzIENhcHJpIFJpdmllcmEgQ2FuY3VuIEFsbCBJbmNsdXNpdmUiLCJTZWNyZXRzIE1hcm9tYSBCZWFjaCBSaXZpZXJhIENhbmN1biIsIlNlY3JldHMgTW94Y2hlIFBsYXlhIERlbCBDYXJtZW4iLCJTZWxpbmEgUGxheWEgRGVsIENhcm1lbiBTb2xlIFN1aXRlcyBRdWludGEgQXZlbmlkYSIsIlN1bnNldCBGaXNoZXJtYW4gUGxheWFjYXIiLCJTdW5zZXQgRmlzaGVybWFucyBSZXNvcnQiLCJUZXJyYXNzZSBIb3RlbCBQbGF5YSBkZWwgQ2FybWVuIiwiVGhlIEJlYWNoZnJvbnQgYnkgVGhlIEZpdmVzIEhvdGVscyIsIlRoZSBCb2F0IFBsYXlhIERlbCBDYXJtZW4iLCJUaGUgRWxlbWVudHMgUGxheWEgZGVsIENhcm1lbiIsIlRoZSBGaXZlcyBBenVsIEJlYWNoIFJlc29ydCBQbGF5YSBkZWwgQ2FybWVuIiwiVGhlIEZpdmVzIEJlYWNoIEhvdGVsIEFuZCBSZXNpZGVuY2VzIiwiVGhlIEZpdmVzIERvd250b3duIiwiVGhlIEZpdmVzIFBsYXlhIGRlbCBDYXJtZW4gQ29uZG9zIiwiVGhlIFBvaW50IFBEQyIsIlRoZSBSZWVmIDI4IiwiVGhlIFJlZWYgQ29jbyBCZWFjaCIsIlRoZSBSaXZpZXJhIE1heWEgRURJVElPTiBhdCBLYW5haSIsIlRoZSBZdWNhdGFuIFBsYXlhIERlbCBDYXJtZW4gVGFwZXN0cnkgQnkgSGlsdG9uIiwiVGhvbXBzb24gUGxheWEgZGVsIENhcm1lbiIsIlRob21wc29uIFBsYXlhIGRlbCBDYXJtZW4gQmVhY2ggSG91c2UgSG90ZWwiLCJUcm9waWNhbCBDYXNhIEJsYW5jYSBZb3V0aCBhbmQgQ2hpYyBIb3RlbCBUcm9waWNhbCBDYXNhYmxhbmNhIFlvdXRoIENoaWMiLCJWaWNlcm95IFJpdmllcmEgTWF5YSIsIlZpbGxhIENhc2EgVGhvbWFzIiwiVmlsbGEgTWFyb21hIFJpdmllcmEgTWF5YSIsIlZpdmEgV3luZGhhbSBBenRlY2EiLCJWaXZhIFd5bmRoYW0gTWF5YSIsIld5bmRoYW0gQWxsdHJhIFBsYXlhIERlbCBDYXJtZW4iLCJYY2FyZXQgQXJ0ZSIsIlhjYXJldCBNZXhpY28iLCJZdWNhdGFuIFBsYXlhIGRlbCBDYXJtZW4gVGFwZXN0cnkgYnkgQ2FybWVuIl0sInBhdmVudHVyYXMiOlsiQWwgQ2llbG8gSG90ZWwgWHB1LUhhIiwiQXZlbnR1cmEgUGFsYWNlIiwiQXZlbnR1cmFzIFNwYSBQYWxhY2UiLCJCYXJjZWxvIE1heWEgQXJlbmEiLCJCYXJjZWxvIE1heWEgQmVhY2giLCJCYXJjZWxvIE1heWEgQ2FyaWJlIiwiQmFyY2VsbyBNYXlhIENvbG9uaWFsIiwiQmFyY2VsbyBNYXlhIEdyYW5kIFJlc29ydCIsIkJhcmNlbG8gTWF5YSBQYWxhY2UiLCJCYXJjZWxvIE1heWEgUml2aWVyYSIsIkJhcmNlbG8gTWF5YSBUcm9waWNhbCIsIkJlbCBBaXIgUml2aWVyYSBNYXlhIiwiQ2F0YWxvbmlhIFJpdmllcmEgTWF5YSIsIkNhdGFsb25pYSBSb3lhbCBUdWx1bSIsIkNhdGFsb25pYSBZdWNhdGFuIEJlYWNoIiwiQ29yYWwgTWF5YSBDb25kb2hvdGVsIiwiRHJlYW1zIEF2ZW50dXJhcyBSaXZpZXJhIE1heWEiLCJFc21lcmFsZGEgUHVlcnRvIEF2ZW50dXJhcyBDb25kb21pbmlvIiwiSGFyZCBSb2NrIEhvdGVsIFJpdmllcmEgTWF5YSIsIkhvdGVsIEVzZW5jaWEiLCJIb3RlbCBWaWxsYXMgZGVsIENhcmliZSBYcHUtSGEiLCJLYXNhIEhvdGVsIFJpdmllcmEgTWF5YSIsIkxNIEJvdXRpcXVlIFB1ZXJ0byBBdmVudHVyYXMiLCJNeSBQYXJhZGlzZSBCZWFjaCBDbHViIiwiT21uaSBQdWVydG8gQXZlbnR1cmFzIFB1ZXJ0byBBdmVudHVyYXMgSG90ZWwgYW5kIEJlYWNoIENsdWIiLCJRdWludGEgRGVsIFNvbCIsIlF1aW50YSBMdW5hIFB1ZXJ0byBBdmVudHVyYXMiLCJSZWFsIGRlbCBNYXIgUHVlcnRvIEF2ZW50dXJhcyIsIlNlY3JldG8gWHB1aGEiLCJTdW5zY2FwZSBQdWVydG8gQXZlbnR1cmFzIiwiVmlsbGFzIExhcyBQYWxtYXMgMiIsIlhwdSBIYSBQYWxhY2UiLCJYcHUtSGEgQXZlbnR1cmEgU3BhIFBhbGFjZSIsIlhwdS1IYSBDbHViIE1hZXZhIiwiWHB1LUhhIENvcGFjYWJhbmEiLCJYcHUtSGEgQ29wYWNhYmFuYSBCZWFjaCBSZXNvcnQiXSwiYWt1bWFsIjpbIkFoIFZpbGxhIEFrdW1hbCIsIkFrdW1hbCBCYXkgQmVhY2ggQW5kIFdlbGxuZXNzIFJlc29ydCIsIkFrdW1hbCBCZWFjaCBSZXNvcnQiLCJBa3VtYWwgQnJlYWtlcnMgLSBBa3VtYWwiLCJBa3VtYWwgQ2FyaWJlIChCdW5nYWxvd3MpIiwiQWt1bWFsIENoaWMgQXQgTG90IDQ5IiwiQWt1bWFsIE5hdHVyYSBHbGFtcGluZyIsIkFrdW1hbCBUYW4tSWsiLCJBbmFoIFZpbGxhZ2UiLCJBcXVhdGVjaCBWaWxsYXMgRGVSb3NhIFJlc29ydCIsIkJhaGlhIFByaW5jaXBlIEFrdW1hbCIsIkJhaGlhIFByaW5jaXBlIENvYmEiLCJCYWhpYSBQcmluY2lwZSBMdXh1cnkgU2lhbiBLYSdhbiIsIkJhaGlhIFByaW5jaXBlIFR1bHVtIiwiQmUgTGl2ZSBHcmFuZCBSaXZpZXJhIE1heWEiLCJDYXNhIEFrdW1hbCBTdW5yaXNlIC0gQWt1bWFsIiwiQ2FzYSBBdXJvcmEgQWt1bWFsIiwiQ2FzYSBDYXJpYmUgQWt1bWFsIiwiQ2FzYSBDb3JhbCBBa3VtYWwiLCJDYXNhIERlIExhcyBDb25jaGFzIiwiQ2FzYSBNYWdpY2EgaW4gSmFkZSBCYXkiLCJDYXNhIFBsYXlhIGRlbCBDYXJpYmUgQWt1bWFsIiwiQ2FzYSBkZSBsYSBCcmlzYSBBa3VtYWwiLCJDYXNhIGRlbCBDaWVsbyBBa3VtYWwiLCJDYXNhIGRlbCBTb2wgQWt1bWFsIENsdWIgQWt1bWFsIENhcmliZSBIb3RlbCIsIkRlbCBTb2wgQmVhY2hmcm9udCBDb25kb3MgQW5kIEhvdGVsIiwiRWwgRG9yYWRvIFNlYXNpZGUgU3VpdGUiLCJHcmFuZCBCYWhpYSBQcmluY2lwZSBBa3VtYWwiLCJHcmFuZCBCYWhpYSBQcmluY2lwZSBTaWFuIEthYW4iLCJHcmFuZCBQYWxsYWRpdW0gQ29sb25pYWwgUmVzb3J0IEFuZCBTcGEiLCJHcmFuZCBQYWxsYWRpdW0gS2FudGVuYWgiLCJHcmFuZCBQYWxsYWRpdW0gUml2aWVyYSBNYXlhIFJlc29ydCBBbmQgU3BhIiwiR3JhbmQgUGFsbGFkaXVtIFdoaXRlIFNhbmQgUmVzb3J0IEFuZCBTcGEiLCJHcmFuZCBQYWxsYWRpdW0gWXVjYXRhbiBTdWl0ZXMiLCJHcmFuZCBTaXJlbmlzIE1heWFuIEJlYWNoIEhvdGVsIGFuZCBTcGEiLCJHcmFuZCBTaXJlbmlzIFJpdmllcmEgTWF5YSIsIkhhbGYgTW9vbiBCYXkgQ29uZG9zIiwiTGEgTWlyYWdlIENvbmRvcyBBa3VtYWwiLCJMYSBNaXJhZ2UgSGFsZiBNb29uIEJheSIsIkx1eHVyeSBCYWhpYSBQcmluY2lwZSBTaWFuIEthYW4gLSBBZHVsdHMgT25seSAtYWxsIEluY2x1c2l2ZSIsIk5hdHVyYSBHbGFtcGluZyBBa3VtYWwiLCJQbGF5YSBCbGFuY2EgQWt1bWFsIiwiU2VjcmV0cyBBa3VtYWwgUml2aWVyYSBNYXlhIiwiU2lhbiBLYSdhbiBhdCBHcmFuZCBUdWx1bSAtIEFrdW1hbCIsIlN1bnNjYXBlIEFrdW1hbCBCZWFjaCBSZXNvcnQgYW5kIFNwYSBUUlMgWXVjYXRhbiBIb3RlbCBBa3VtYWwiLCJUaGUgUmVlZiBDb25kb21pbml1bXMgQWt1bWFsIiwiVU5JQ08gSG90ZWwgUml2aWVyYSBNYXlhIiwiVmlsbGEgQ2FzYSBCZWxsYSBBa3VtYWwiXSwidHVsdW0iOlsiQWRvcmEgVHVsdW0iLCJBZ3VhIGVjbyBEZXNpZ24gSG90ZWwgVHVsdW0iLCJBZ3VzdG8gQmVhY2ggVHVsdW0iLCJBaGEgVHVsdW0iLCJBaXJlIEJlbGxvIFR1bHVtIiwiQWxkZWEgWmFtYSIsIkFsZWEgVHVsdW0gQnkgQmx1ZSBTa3kiLCJBbGljYXQgVmlsbGFzIHR1bHVtIiwiQWxtYSBDYXJpYmUgLSBXaGl0ZSBMdXh1cnkgQ29uZG8iLCJBbG9mdCBUdWx1bSIsIkFsdW5hIEx1eHVyeSBIb3RlbCBUdWx1bSIsIkFtYXlhIFR1bHVtIEx1eHVyeSBDb25kb3MiLCJBbWJyZSBhbmQgRXBpY2VzIEp1bmdsZSBIb3RlbCBhbmQgU3BhIiwiQW1lbGlhIFR1bHVtIiwiQW1vcmNpdG8gQ29yYXpvbiBIb3RlbCBUdWx1bSIsIkFuYWggSHVuYWIgVHVsdW0iLCJBbmFzdGFzaWEgVHVsdW0iLCJBbmF0IEJvdXRpcXVlIEhvdGVsIiwiQW5kcmVhcyBUdWx1bSIsIkFyZW5hIEJsdWUgQm91dGlxdWUgSG90ZWwgVHVsdW0iLCJBcnRpYSBTa3kgSnVuZ2xlIiwiQXJ1bWEgSG90ZWwgYW5kIEJvdXRpcXVlIFR1bHVtIiwiQXNhbmEgVHVsdW0iLCJBenVsIFR1bHVtIiwiQXp1cmEgQm91dGlxdWUgSG90ZWwgVHVsdW0iLCJCYWdhdGVsbGUgVHVsdW0iLCJCYXJkbyBIb3RlbCBUdWx1bSIsIkJsdWUgU2t5IEhvdGVsIEJvdXRpcXVlIiwiQm91dGlxdWUgVmlsbGFzIFVuYSBWaWRhIiwiQ2FiYW5hcyBpbiBQYXJhZGlzZSBUdWx1bSBUYW5rYWggQmF5IENhcmliYmVhbiBQYXJhZGlzZSBUdWx1bSIsIkNhc2EgQWJhbmljbyIsIkNhc2EgQWdhcGUgVHVsdW0iLCJDYXNhIEFxdWFtYXJpbmUgU29saW1hbiBCYXkiLCJDYXNhIENhcmFjb2wgVGFua2EgQmF5IC0gVHVsdW0iLCJDYXNhIENhcmliYmVhbiBTb3VsIFR1bHVtIFRhbmthaCBCYXkiLCJDYXNhIENhcm9saW5hIFR1bHVtIiwiQ2FzYSBDb2xvbmlhbCBWaW50YWdlIEhvdGVsIFR1bHVtIiwiQ2FzYSBDb3Jhem9uIFR1bHVtIiwiQ2FzYSBDb3Jhem9uIGRlIEphZ3VhciIsIkNhc2EgS3Jpc3RpZSBTb2xpbWFuIEJheSIsIkNhc2EgTWFsaXggQ2hlbXV5aWwiLCJDYXNhIE5hcGEgQmFoaWEgU29saW1hbiIsIkNhc2EgUm9zYSBDaGVtdXlpbCIsIkNhc2EgUm9zaW5hIiwiQ2FzYSBUdWx1bSBIb3RlbCBCb3V0aXF1ZSBQYXJhZGlzZSIsIkNhc2EgWGVsdmEgVHVsdW0iLCJDYXNhIFhpeGltIFJpdmllcmEgTWF5YSIsIkNhc2EgWmFtYSAtIEhhbGYgTW9vbiBCYXkiLCJDYXNhIGRlIGxhIEJyaXNhIiwiQ2FzYSBkZSBsYXMgT2xhcyBUdWx1bSIsIkNhc2EgZGVsIE1hciBUdWx1bSIsIkNhc2EgZGVsIFBlcnJvIEZlbGl6IFR1bHVtIFRhbmthaCBCYXkiLCJDZW50cmFsIFBhcmsgVHVsdW0iLCJDaGFjYm9sYXkgTHV4dXJ5IEhvbWUiLCJDaGFrIEdhcmRlbiBHcm91bmQgLSBUdWx1bSIsIkNvY28gSGFjaWVuZGEgVHVsdW0iLCJDb25yYWQgVHVsdW0gUml2aWVyYSBNYXlhIiwiQ29udGFpbm1lIEVjbyBDaGljIEhvdGVsIiwiQ29wYWwgVHVsdW0gQ29zdGFtZWQgVHVsdW0iLCJEb24gRGllZ28gZGUgbGEgU2VsdmEiLCJEcmVhbXMgVHVsdW0gUmVzb3J0IGFuZCBTcGEiLCJFbGVtZW50cyBUdWx1bSBCb3V0aXF1ZSBIb3RlbCIsIkVzbWVyYWxkYSBCb3V0aXF1ZSBSZXNpZGVuY2VzIGFuZCBIb3RlbCIsIkVzcGxlbmRvciBieSBXeW5kaGFtIFR1bHVtIE5vb2siLCJHYXJkZW5zIENvYmEiLCJHcmFuZCBPYXNpcyBUdWx1bSBSaXZpZXJhIE1heWEiLCJHcmVlbiBUdWx1bSBDYWJhbmFzIEFuZCBHYXJkZW5zIiwiSGFjaWVuZGEgQ2FyYWNvbCBUdWx1bSIsIkhhY2llbmRhIFBhcmFpc28gVHVsdW0iLCJIZW1pbmd3YXkgUm9tYW50aWMgRWNvIFJlc29ydCBUdWx1bSIsIkhpZGVhd2F5cyBUdWx1bSIsIkhpbHRvbiBUdWx1bSBSaXZpZXJhIE1heWEiLCJIb3RlbCBBbWFuc2FsYSIsIkhvdGVsIENhYmFuYXMgUGxheWEgQ29uZGVzYSIsIkhvdGVsIEtpbiBIYSBQbGF5YSBUdWx1bSIsIkhvdGVsIEtpbiBIYSBQdWVibG8gVHVsdW0iLCJIb3RlbCBNZXJldmEgVHVsdW0gYnllIEJsdWUgU2t5IiwiSG90ZWwgU2VjcmV0IEdhcmRlbiBUdWx1bSIsIkh1bmFiIFR1bHVtIGJ5IFN1bmVzdCIsIklrYWwgVHVsdW0gSG90ZWwiLCJLaW1wdG9uIEFsdW5hIFR1bHVtIEhvdGVsIiwiS2l0ZSBUdWx1bSIsIkxhIENhc2EgVmVyZGUgVHVsdW0iLCJMYSBNYWlzb24gTWFuYXRpIiwiTGF5bGEgVHVsdW0gQm91dGlxdWUgSG90ZWwgTXlzdGlrYSBJbW1lcnNpdmUgVHVsdW0iLCJOYWsgQmUgVHVsdW0iLCJPYXNpcyBMb3MgQW1pZ29zIiwiT2tvbSBCeSBCbHVlIFBvaW50IiwiUGFyYW1hciBKYWRlIiwiUG9zYWRhIEx1bmEgZGVsIFN1ciBUdWx1bSIsIlF1ZXR6YWwgUGVudGhvdXNlIFhhbWFuIFR1bHVtIiwiU2VsaW5hIFR1bHVtIERvd250b3duIiwiU2t5IFR1bHVtIEx1eHVyeSBDb25kb3MiLCJUaGUgSGVtaW5nd2F5IFR1bHVtIiwiVGhlIFBpbmsgSG91c2UgU29saW1hbiBCYXkiLCJWaWxsYSBDYXNhIEJsYW5jYSBUdWx1bSIsIlZpbGxhIE1hciBDYXJpYmUgU29saW1hbiBCYXkgSG90ZWwiLCJWaWxsYSBNYXIgQ2FyaWJlIFR1bHVtIiwiVmlsbGEgTWFyYXZpbGxhIFNvbGltYW4gQmF5IiwiVmlsbGEgU29saW1hbiBUdWx1bSIsIlZpbGxhIFhlbCBIYSBMdXh1cnkgSG91c2VzIiwiWGNhY2VsIERyZWFtcyBKdW5nbGUgU3VpdGVzIiwiWGVsLWhhIiwiWmVuc2VzIFdlbGxuZXNzIGFuZCBZb2dhIFJlc29ydCJdLCJ0dWx1bXpoIjpbIkFoYXUgVHVsdW0iLCJBa2lpbiBCZWFjaCBUdWx1bSIsIkFtYW5zYWxhIFJlc29ydCBIb3RlbCIsIkFuYSBZIEpvc2UgQ2hhcm1pbmcgSG90ZWwgWSBTcGEiLCJBcmVuYWJsdWUgVHVsdW0gQm91dGlxdWUgSG90ZWwiLCJBenVsaWsgVHVsdW0iLCJBenVsaWsgVmlsbGFzIiwiQmUgVHVsdW0iLCJCbHVlIFNreSBIb3RlbCIsIkNhYmFuYXMgUGxheWEgQ29uZGVzYSIsIkNhc2EgQWFrYmFsIiwiQ2FzYSBEZSBMYXMgT2xhcyIsIkNhc2EgRGUgTGFzIFBhbG1hcyAtIE1haGF5YW5hIFR1bHVtIEJlYWNoIEhvbWUiLCJDYXNhIEdhbmVzaCBUdWx1bSIsIkNhc2EgTWFsY2EiLCJDYXNhIE5hd2FsIEJlYWNoZnJvbnQgR2xhbXBpbmciLCJDYXNhIFNvbGltYW4gQmVhY2giLCJDb3BhbCBUdWx1bSBIb3RlbCIsIkNvcmFsIFR1bHVtIEhvdGVsIiwiRGVsZWsgVHVsdW0iLCJFY28gTG9kZ2UgSG90ZWwgVmlsbGEiLCJFc21lcmFsZGEgSy4gVHVsdW0iLCJFc3BsZW5kb3IgYnkgV3luZGhhbSBUdWx1bSBOb29rIiwiR3JhbWVyY3kgVHVsdW0iLCJIYWJpdGFzIFR1bHVtIiwiSGVtaW5nd2F5IEVjbyBSZXNvcnQiLCJIaWRkZW4gQmVhY2ggVHVsdW0iLCJIaWRlYXdheXMgVHVsdW0iLCJIb3RlbCBEb3MgQ2VpYmFzIEVjbyBSZXRyZWF0IFR1bHVtIiwiSG90ZWwgRWwgUGFyYWlzbyBUdWx1bSIsIkhvdGVsIEVzZW5jaWFsIFR1bHVtIiwiSG90ZWwgSWthbCBUdWx1bSIsIkhvdGVsIEx1bmEgZGVsIFN1ciIsIkhvdGVsIFRyb3BpY2FsaXRvIFR1bHVtIiwiSG90ZWxpdG8gQXp1bCBUdWx1bSIsIklrYWwgQm91dGlxdWUgSG90ZWwgVHVsdW0iLCJJa2FsIFR1bHVtIEhvdGVsIEphZGUgUHJpbWl0aXZlIERyZWFtIiwiSmFkZSBUdWx1bSIsIkxhIENhc2EgZGUgTWFzdHVyIFR1bHVtIiwiTGEgVGllbmRpdGEgVHVsdW0gLSBXb21hbiBCb3V0aXF1ZSIsIkxhIFZhbGlzZSBUdWx1bSIsIkxhIFplYnJhIEhvdGVsIiwiTWFtYXNhbiBUcmVlaG91c2VzIEFuZCBDYWJpbnMiLCJNYXlhIFR1bHVtIFdlbGxuZXNzIiwiTWVyZXZhIFR1bHVtIEJ5IEJsdWUgU2t5IiwiTWV6emFuaW5lIEhvdGVsIFR1bHVtIiwiTW9ybyBhdCBIYWJpdGFzIiwiTmVzdCBUdWx1bSIsIk5vbWFkZSBUdWx1bSIsIlBhcGF5YSBQbGF5YSBQcm9qZWN0IiwiUGxheWEgQ2FuZWsgQmVhY2hmcm9udCBFY28gSG90ZWwiLCJQbGF5YSBLaW4gSGEgSG90ZWwiLCJQb3NhZGEgTHVuYSBkZWwgU3VyIiwiUm9zYW5lZ3JhIFR1bHVtIiwiU2FuYXJhIFR1bHVtIiwiU2VsaW5hIFR1bHVtIiwiVGFib28gVHVsdW0iLCJUaXRhIFR1bHVtIENpdHkiLCJVbWEgVHVsdW0gT2NlYW5mcm9udCIsIlhiYWxhbXF1ZSBUdWx1bSIsIlhlbGEgVHVsdW0iXSwiY29iYSI6WyJDb2JhIEFyY2hhZW9sb2dpY2FsIFpvbmUiLCJDb2JhIHRvd24iLCJDaG9vLUhhICYgVGFtY2FjaC1IYSBjZW5vdGVzIl0sImhvbGJveCI6WyJDaGlxdWlsYSBmZXJyeSB0ZXJtaW5hbCIsIkhvbGJveCBJc2xhbmQgKHZpYSBmZXJyeSkiXSwiY2hpY2hlbiI6WyJDaGljaGVuIEl0emEgQXJjaGFlb2xvZ2ljYWwgWm9uZSIsIlZhbGxhZG9saWQgdG93biIsIkhhY2llbmRhIENoaWNoZW4gUmVzb3J0IiwiSWsgS2lsIENlbm90ZSJdLCJmY3AiOlsiRmVsaXBlIENhcnJpbGxvIFB1ZXJ0byJdLCJjaGV0dW1hbCI6WyJDaGV0dW1hbCB0b3duIiwiQmVsaXplIGJvcmRlciAoU3VidGVuaWVudGUgTG9wZXopIl0sIm1lcmlkYSI6WyJNZXJpZGEgY2VudHJvIiwiTWVyaWRhIEFpcnBvcnQgKE1JRCkiLCJQcm9ncmVzbyJdLCJtYWhhaHVhbCI6WyJNYWhhaHVhbCB0b3duIiwiQ29zdGEgTWF5YSBjcnVpc2UgcGllciJdLCJiYWNhbGFyIjpbIkJhY2FsYXIgdG93biIsIkxhZ3VuYSBkZSBsb3MgU2lldGUgQ29sb3JlcyJdfX07CgovLyBWZXJpZmllZCBwZXItcGFzc2VuZ2VyIHByaWNpbmcgKHNvdXJjZTogcHJlY2lvcy1wb3ItcGFzYWplcm8tZXRyYW5zZmVycy0yOC1zZXB0LTIwMjYubWQsCi8vIGxpdmUtY2hlY2tlZCBhZ2FpbnN0IGVUcmFuc2ZlcnMgb24gMjggU2VwdCAyMDI2OyBvdmVycmlkZXMgdGhlIGZsYXQgMS04IHJhdGUgZm9yIHRoZXNlIDExCi8vIHpvbmVzIG9ubHkpLiBHcm91cCBwcmljZSBpcyBjYXBwZWQgc28gYW4gOC1wYXggcHJpdmF0ZSB2YW4gbmV2ZXIgY29zdHMgbW9yZSB0aGFuIHRoZQovLyA5LTE2IFNwcmludGVyIGZvciB0aGUgc2FtZSByb3V0ZS4gUm91bmQgdHJpcCA9IDJ4IG9uZSB3YXkgZm9yIHRoZXNlIHpvbmVzIChFZCdzIFNlcHQgMTkgcnVsZSkuCmNvbnN0IFZFUklGSUVEX1BBWF9QUklDSU5HID0gewogIGNhbmN1bjogICAgICAgIHsgb3dQMV82OjMyLCAgb3dQNzozNSwgIG93UDg6NzAsICBvd0c6NzUgIH0sCiAgY29zdGFtdWplcmVzOiAgeyBvd1AxXzY6NzAsICBvd1A3OjcwLCAgb3dQODoxMzcsIG93RzoxMzcgfSwKICBwbGF5YW11amVyZXM6ICB7IG93UDFfNjo2MCwgIG93UDc6NjAsICBvd1A4OjExMywgb3dHOjExMyB9LAogIHBqdWFyZXo6ICAgICAgIHsgb3dQMV82OjUwLCAgb3dQNzo1NSwgIG93UDg6MTAzLCBvd0c6MTAzIH0sCiAgcHVlcnRvbW9yZWxvczogeyBvd1AxXzY6NTIsICBvd1A3OjYyLCAgb3dQODoxMDMsIG93RzoxMDMgfSwKICBwZGM6ICAgICAgICAgICB7IG93UDFfNjo2OSwgIG93UDc6NzIsICBvd1A4OjE0NCwgb3dHOjE0OSB9LAogIHR1bHVtOiAgICAgICAgIHsgb3dQMV82OjEyNSwgb3dQNzoxMzAsIG93UDg6MjYwLCBvd0c6MzAwIH0sCiAgdHVsdW16aDogICAgICAgeyBvd1AxXzY6MTQ1LCBvd1A3OjE1MCwgb3dQODozMDAsIG93RzozNTAgfSwKICBha3VtYWw6ICAgICAgICB7IG93UDFfNjoxMDUsIG93UDc6MTEwLCBvd1A4OjIyMCwgb3dHOjI3MCB9LAogIHBhdmVudHVyYXM6ICAgIHsgb3dQMV82OjkwLCAgb3dQNzo5NSwgIG93UDg6MTkwLCBvd0c6MjI1IH0sCiAgaG9sYm94OiAgICAgICAgeyBvd1AxXzY6MjQwLCBvd1A3OjI1MCwgb3dQODo1MDAsIG93Rzo4MDAgfSwKfTsKZm9yIChjb25zdCBbemlkLCB0aWVyc10gb2YgT2JqZWN0LmVudHJpZXMoVkVSSUZJRURfUEFYX1BSSUNJTkcpKSB7CiAgT2JqZWN0LmFzc2lnbihEQVRBLnpvbmVzW3ppZF0sIHRpZXJzLCB7IHZlcmlmaWVkOnRydWUgfSk7Cn0KCmNvbnN0IFZFSF9JTUcgPSB7CiAgUDogJzxpbWcgc3JjPSJodHRwczovL3llc215dHJhbnNmZXIuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzEwL2ltYWdlLTc2OHg3NjgucG5nIiBhbHQ9IlByaXZhdGUgdmFuLCAxIHRvIDggcGFzc2VuZ2VycyIgbG9hZGluZz0ibGF6eSI+JywKICBHOiAnPGltZyBzcmM9Imh0dHBzOi8veWVzbXl0cmFuc2Zlci5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMTAvaW1hZ2UtMS03Njh4NzY4LnBuZyIgYWx0PSJHcm91cCBTcHJpbnRlciB2YW4sIDkgdG8gMTYgcGFzc2VuZ2VycyIgbG9hZGluZz0ibGF6eSI+Jwp9OwoKY29uc3QgQUlSUE9SVF9JVEVNID0geyBuYW1lOiJDYW5jdW4gQWlycG9ydCAoQ1VOKSIsIHppZDpudWxsLCBraW5kOiJhaXJwb3J0IiB9OwoKY29uc3Qgc3RhdGUgPSB7IHRyaXA6Im93IiwgcGF4OjIsIHZlaGljbGU6IlAiLCBmcm9tOkFJUlBPUlRfSVRFTSwgdG86bnVsbCwgaW50ZXJuYWw6ZmFsc2UgfTsKdHJ5IHsgc3RhdGUuaW50ZXJuYWwgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgieW10X2ludGVybmFsIikgPT09ICIxIjsgfSBjYXRjaChlKXt9Cgpjb25zdCBpdGVtcyA9IFtBSVJQT1JUX0lURU1dOwpmb3IgKGNvbnN0IFt6aWQsIG5hbWVzXSBvZiBPYmplY3QuZW50cmllcyhEQVRBLnJlc29ydHMpKSB7CiAgZm9yIChjb25zdCBuIG9mIG5hbWVzKSBpdGVtcy5wdXNoKHsgbmFtZTpuLCB6aWQsIGtpbmQ6ImhvdGVsIiB9KTsKfQpmb3IgKGNvbnN0IFt6aWQsIHpdIG9mIE9iamVjdC5lbnRyaWVzKERBVEEuem9uZXMpKSB7CiAgaXRlbXMucHVzaCh7IG5hbWU6IHoubGFiZWwsIHppZCwga2luZDoiem9uZSIgfSk7Cn0KaXRlbXMuc29ydCgoYSxiKT0+IGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSwnZW4nKSk7Cgpjb25zdCBub3JtID0gcyA9PiBzLnRvTG93ZXJDYXNlKCkubm9ybWFsaXplKCJORkQiKS5yZXBsYWNlKC9bzIAtza9dL2csIiIpOwpjb25zdCBtb25leSA9IHYgPT4gdiA9PSBudWxsID8gIlF1b3RlIG9uIHJlcXVlc3QiIDogIiQiICsgdi50b0xvY2FsZVN0cmluZygiZW4tVVMiKTsKCmNvbnN0IGZyb21JbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmcm9tIik7CmNvbnN0IHRvSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG8iKTsKY29uc3Qgc3VnZ2VzdEZyb20gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3VnZ2VzdEZyb20iKTsKY29uc3Qgc3VnZ2VzdFRvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN1Z2dlc3RUbyIpOwpjb25zdCBzZWFyY2hCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VhcmNoYnRuIik7CmNvbnN0IHJlc3VsdHNFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHRzIik7Cgpmcm9tSW5wdXQudmFsdWUgPSBBSVJQT1JUX0lURU0ubmFtZTsKCmZ1bmN0aW9uIHRhZ0ZvcihpdCl7IHJldHVybiBpdC5raW5kPT09InpvbmUiID8gIkFyZWEiIDogaXQua2luZD09PSJhaXJwb3J0IiA/ICJBaXJwb3J0IiA6IERBVEEuem9uZXNbaXQuemlkXS5sYWJlbDsgfQpmdW5jdGlvbiB0YWdDbGFzcyhpdCl7IHJldHVybiBpdC5raW5kPT09InpvbmUiID8gIiB6b25lIiA6IGl0LmtpbmQ9PT0iYWlycG9ydCIgPyAiIGFpcnBvcnQiIDogIiI7IH0KCmZ1bmN0aW9uIHJlbmRlclN1Z2dlc3Rpb25zKGlucHV0LCBzdWdnZXN0RWwsIHNpZGUpewogIGNvbnN0IHJhdyA9IGlucHV0LnZhbHVlLnRyaW0oKTsKICBjb25zdCBxID0gbm9ybShyYXcpOwogIGlmIChxLmxlbmd0aCA8IDIpeyBzdWdnZXN0RWwuaGlkZGVuID0gdHJ1ZTsgc3VnZ2VzdEVsLmlubmVySFRNTD0iIjsgcmV0dXJuOyB9CiAgY29uc3QgbWF0Y2hlcyA9IGl0ZW1zLmZpbHRlcihpdCA9PiBub3JtKGl0Lm5hbWUpLmluY2x1ZGVzKHEpKS5zbGljZSgwLCAyMCk7CiAgc3VnZ2VzdEVsLmlubmVySFRNTCA9ICIiOwogIGZvciAoY29uc3QgaXQgb2YgbWF0Y2hlcyl7CiAgICBjb25zdCBiID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIik7CiAgICBiLnR5cGUgPSAiYnV0dG9uIjsKICAgIGNvbnN0IG5hbWVTID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOyBuYW1lUy5jbGFzc05hbWU9InNuYW1lIjsgbmFtZVMudGV4dENvbnRlbnQgPSBpdC5uYW1lOwogICAgY29uc3QgdGFnUyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsgdGFnUy5jbGFzc05hbWU9InN0YWciK3RhZ0NsYXNzKGl0KTsgdGFnUy50ZXh0Q29udGVudCA9IHRhZ0ZvcihpdCk7CiAgICBiLmFwcGVuZChuYW1lUywgdGFnUyk7CiAgICBiLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgKCkgPT4gc2VsZWN0SXRlbShzaWRlLCBpdCwgaW5wdXQsIHN1Z2dlc3RFbCkpOwogICAgc3VnZ2VzdEVsLmFwcGVuZENoaWxkKGIpOwogIH0KICBpZiAoIW1hdGNoZXMubGVuZ3RoKXsKICAgIGNvbnN0IGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgIGQuY2xhc3NOYW1lID0gInNub25lIjsKICAgIGQudGV4dENvbnRlbnQgPSAiTm8gbWF0Y2gg4oCUIHByZXNzIEVudGVyIHRvIHVzZSBleGFjdGx5IHdoYXQgeW91IHR5cGVkLiI7CiAgICBzdWdnZXN0RWwuYXBwZW5kQ2hpbGQoZCk7CiAgfQogIGNvbnN0IHVzZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogIHVzZS5jbGFzc05hbWUgPSAic3VnZ2VzdCBidXR0b24gc3VzZSI7CiAgY29uc3QgdXNlQnRuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIik7CiAgdXNlQnRuLnR5cGUgPSAiYnV0dG9uIjsKICBjb25zdCB1biA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsgdW4uY2xhc3NOYW1lPSJzbmFtZSI7IHVuLnRleHRDb250ZW50ID0gYFVzZSAiJHtyYXd9IiBhcyB0eXBlZGA7CiAgY29uc3QgdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7IHV0LmNsYXNzTmFtZT0ic3RhZyI7IHV0LnRleHRDb250ZW50ID0gIk5vdCBsaXN0ZWQiOwogIHVzZUJ0bi5hcHBlbmQodW4sIHV0KTsKICB1c2VCdG4uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCAoKSA9PiBzZWxlY3RJdGVtKHNpZGUsIHsgbmFtZTogcmF3LCB6aWQ6bnVsbCwga2luZDoiY3VzdG9tIiB9LCBpbnB1dCwgc3VnZ2VzdEVsKSk7CiAgdXNlLmFwcGVuZENoaWxkKHVzZUJ0bik7CiAgc3VnZ2VzdEVsLmFwcGVuZENoaWxkKHVzZSk7CiAgc3VnZ2VzdEVsLmhpZGRlbiA9IGZhbHNlOwp9CgpmdW5jdGlvbiBzZWxlY3RJdGVtKHNpZGUsIGl0LCBpbnB1dCwgc3VnZ2VzdEVsKXsKICBzdGF0ZVtzaWRlXSA9IGl0OwogIGlucHV0LnZhbHVlID0gaXQubmFtZTsKICBzdWdnZXN0RWwuaGlkZGVuID0gdHJ1ZTsKICB1cGRhdGVTZWFyY2hFbmFibGVkKCk7Cn0KCmZ1bmN0aW9uIHVwZGF0ZVNlYXJjaEVuYWJsZWQoKXsKICBzZWFyY2hCdG4uZGlzYWJsZWQgPSAhKGZyb21JbnB1dC52YWx1ZS50cmltKCkgJiYgdG9JbnB1dC52YWx1ZS50cmltKCkpOwp9CgpmdW5jdGlvbiB3aXJlRmllbGQoaW5wdXQsIHN1Z2dlc3RFbCwgc2lkZSl7CiAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCAoKSA9PiB7IHN0YXRlW3NpZGVdID0gbnVsbDsgdXBkYXRlU2VhcmNoRW5hYmxlZCgpOyByZW5kZXJTdWdnZXN0aW9ucyhpbnB1dCwgc3VnZ2VzdEVsLCBzaWRlKTsgfSk7CiAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCAoKSA9PiByZW5kZXJTdWdnZXN0aW9ucyhpbnB1dCwgc3VnZ2VzdEVsLCBzaWRlKSk7CiAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIChlKSA9PiB7CiAgICBpZiAoZS5rZXkgPT09ICJFbnRlciIpewogICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgIGNvbnN0IHJhdyA9IGlucHV0LnZhbHVlLnRyaW0oKTsKICAgICAgaWYgKCFyYXcpIHJldHVybjsKICAgICAgY29uc3QgcSA9IG5vcm0ocmF3KTsKICAgICAgY29uc3QgYmVzdCA9IGl0ZW1zLmZpbmQoaXQgPT4gbm9ybShpdC5uYW1lKSA9PT0gcSkgfHwgaXRlbXMuZmluZChpdCA9PiBub3JtKGl0Lm5hbWUpLmluY2x1ZGVzKHEpKTsKICAgICAgc2VsZWN0SXRlbShzaWRlLCBiZXN0IHx8IHsgbmFtZTogcmF3LCB6aWQ6bnVsbCwga2luZDoiY3VzdG9tIiB9LCBpbnB1dCwgc3VnZ2VzdEVsKTsKICAgICAgaWYgKHN0YXRlLmZyb20gJiYgc3RhdGUudG8pIHJ1blNlYXJjaCgpOwogICAgfQogIH0pOwp9CndpcmVGaWVsZChmcm9tSW5wdXQsIHN1Z2dlc3RGcm9tLCAiZnJvbSIpOwp3aXJlRmllbGQodG9JbnB1dCwgc3VnZ2VzdFRvLCAidG8iKTsKCmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgKGUpID0+IHsKICBpZiAoIWUudGFyZ2V0LmNsb3Nlc3QoIi5maWVsZCIpKXsgc3VnZ2VzdEZyb20uaGlkZGVuID0gdHJ1ZTsgc3VnZ2VzdFRvLmhpZGRlbiA9IHRydWU7IH0KfSk7Cgpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3dhcGJ0biIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgKCkgPT4gewogIGNvbnN0IGYgPSBzdGF0ZS5mcm9tLCB0ID0gc3RhdGUudG87CiAgc3RhdGUuZnJvbSA9IHQ7IHN0YXRlLnRvID0gZjsKICBmcm9tSW5wdXQudmFsdWUgPSB0ID8gdC5uYW1lIDogIiI7CiAgdG9JbnB1dC52YWx1ZSA9IGYgPyBmLm5hbWUgOiAiIjsKICB1cGRhdGVTZWFyY2hFbmFibGVkKCk7CiAgaWYgKHN0YXRlLmZyb20gJiYgc3RhdGUudG8pIHJ1blNlYXJjaCgpOwp9KTsKCmZ1bmN0aW9uIHBhaXIoYUlkLGJJZCxvbkEsb25CKXsKICBjb25zdCBhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYUlkKSwgYiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGJJZCk7CiAgYS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsICgpPT57IGEuc2V0QXR0cmlidXRlKCJhcmlhLXByZXNzZWQiLCJ0cnVlIik7IGIuc2V0QXR0cmlidXRlKCJhcmlhLXByZXNzZWQiLCJmYWxzZSIpOyBvbkEoKTsgaWYoc3RhdGUuZnJvbSAmJiBzdGF0ZS50bykgcnVuU2VhcmNoKCk7IH0pOwogIGIuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCAoKT0+eyBiLnNldEF0dHJpYnV0ZSgiYXJpYS1wcmVzc2VkIiwidHJ1ZSIpOyBhLnNldEF0dHJpYnV0ZSgiYXJpYS1wcmVzc2VkIiwiZmFsc2UiKTsgb25CKCk7IGlmKHN0YXRlLmZyb20gJiYgc3RhdGUudG8pIHJ1blNlYXJjaCgpOyB9KTsKfQpwYWlyKCJ0cnQiLCJ0b3ciLCAoKT0+c3RhdGUudHJpcD0icnQiLCAoKT0+c3RhdGUudHJpcD0ib3ciKTsKZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBheCIpLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIGUgPT4gewogIHN0YXRlLnBheCA9IE51bWJlcihlLnRhcmdldC52YWx1ZSk7CiAgaWYgKHN0YXRlLnBheCA+IDgpIHN0YXRlLnZlaGljbGUgPSAiRyI7CiAgaWYgKHN0YXRlLmZyb20gJiYgc3RhdGUudG8pIHJ1blNlYXJjaCgpOwp9KTsKCmNvbnN0IGNoayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnRlcm5hbCIpOwpjaGsuY2hlY2tlZCA9IHN0YXRlLmludGVybmFsOwpjaGsuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgZSA9PiB7CiAgc3RhdGUuaW50ZXJuYWwgPSBlLnRhcmdldC5jaGVja2VkOwogIHRyeSB7IGxvY2FsU3RvcmFnZS5zZXRJdGVtKCJ5bXRfaW50ZXJuYWwiLCBzdGF0ZS5pbnRlcm5hbCA/ICIxIiA6ICIwIik7IH0gY2F0Y2goZXJyKXt9CiAgaWYgKHN0YXRlLmZyb20gJiYgc3RhdGUudG8pIHJ1blNlYXJjaCgpOwp9KTsKCmZ1bmN0aW9uIGRlZmF1bHRUaW1lKCl7CiAgY29uc3QgZCA9IG5ldyBEYXRlKERhdGUubm93KCkgKyA0KjM2MDAqMTAwMCk7CiAgcmV0dXJuIFN0cmluZyhkLmdldEhvdXJzKCkpLnBhZFN0YXJ0KDIsIjAiKSArICI6IiArIFN0cmluZyhkLmdldE1pbnV0ZXMoKSkucGFkU3RhcnQoMiwiMCIpOwp9CmZ1bmN0aW9uIGZtdFRpbWUoaGhtbSl7CiAgaWYoIWhobW0pIHJldHVybiAiVEJEIjsKICBjb25zdCBbaCxtXSA9IGhobW0uc3BsaXQoIjoiKS5tYXAoTnVtYmVyKTsKICBjb25zdCBwZXJpb2QgPSBoID49IDEyID8gIlBNIiA6ICJBTSI7CiAgbGV0IGgxMiA9IGggJSAxMjsgaWYgKGgxMiA9PT0gMCkgaDEyID0gMTI7CiAgcmV0dXJuIGgxMiArICI6IiArIFN0cmluZyhtKS5wYWRTdGFydCgyLCIwIikgKyAiICIgKyBwZXJpb2Q7Cn0KLyogWU1ULVdBLVYxOiByZWdpc3RyYSBlbCBjbGljIGRlICJTZW5kIG9uIFdoYXRzQXBwIiBlbiBlbCBwbHVnaW4gWU1UIFdoYXRzQXBwICovCi8qIFlNVC1XQS1WMzogcmVnaXN0cmEgY2FkYSBjb3RpemFjaW9uIChidXNxdWVkYSBjb24gcmVzdWx0YWRvKSBwYXJhIGVsIFBhbmVsIFlNVCAqLwp2YXIgeW10V2FTZWVuID0ge307CmZ1bmN0aW9uIHltdFdhUXVvdGVMb2coZnJvbU5hbWUsIHRvTmFtZSwgcHJpY2VGbil7CiAgdHJ5IHsKICAgIGlmIChzdGF0ZS5pbnRlcm5hbCkgeyByZXR1cm47IH0KICAgIGlmIChkb2N1bWVudC5jb29raWUuaW5kZXhPZigieW10X3dhX3NraXA9MSIpID4gLTEpIHsgcmV0dXJuOyB9CiAgICB2YXIga2V5ID0gW2Zyb21OYW1lLCB0b05hbWUsIHN0YXRlLnBheCwgc3RhdGUudHJpcF0uam9pbigifCIpOwogICAgaWYgKHltdFdhU2VlbltrZXldKSB7IHJldHVybjsgfQogICAgeW10V2FTZWVuW2tleV0gPSAxOwogICAgdmFyIHAgPSAiIjsgdHJ5IHsgcCA9IFN0cmluZyhwcmljZUZuKCkgfHwgIiIpOyB9IGNhdGNoKGUpe30KICAgIHZhciB6b25lID0gIiI7IHRyeSB7IHZhciB6aWQgPSAoc3RhdGUuZnJvbSAmJiBzdGF0ZS5mcm9tLmtpbmQgPT09ICJhaXJwb3J0IikgPyAoc3RhdGUudG8gJiYgc3RhdGUudG8uemlkKSA6IChzdGF0ZS5mcm9tICYmIHN0YXRlLmZyb20uemlkKTsgem9uZSA9IHppZCA/ICgoREFUQS56b25lc1t6aWRdICYmIERBVEEuem9uZXNbemlkXS5sYWJlbCkgfHwgemlkKSA6ICIiOyB9IGNhdGNoKGUpe30KICAgIHZhciBhID0ge307IHRyeSB7IGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCJ5bXRfd2FfYXR0ciIpKSB8fCB7fTsgfSBjYXRjaChlKXt9CiAgICB2YXIgdiA9ICIiOyB0cnkgeyB2ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oInltdF93YV92aWQiKSB8fCAiIjsgaWYgKCF2KSB7IHYgPSAoTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMikgKyBEYXRlLm5vdygpLnRvU3RyaW5nKDM2KSkuc2xpY2UoMCwgMjQpOyBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgieW10X3dhX3ZpZCIsIHYpOyB9IH0gY2F0Y2goZSl7fQogICAgdmFyIHB1ID0gd2luZG93LmxvY2F0aW9uLmhyZWYsIHcgPSB3aW5kb3cuaW5uZXJXaWR0aCB8fCAwOwogICAgdHJ5IHsgaWYgKHdpbmRvdy5wYXJlbnQgJiYgd2luZG93LnBhcmVudCAhPT0gd2luZG93ICYmIHdpbmRvdy5wYXJlbnQubG9jYXRpb24ub3JpZ2luID09PSB3aW5kb3cubG9jYXRpb24ub3JpZ2luKSB7IHB1ID0gd2luZG93LnBhcmVudC5sb2NhdGlvbi5ocmVmOyB3ID0gd2luZG93LnBhcmVudC5pbm5lcldpZHRoIHx8IHc7IH0gfSBjYXRjaChlKXt9CiAgICB2YXIgZCA9IHtmcm9tX25hbWU6IGZyb21OYW1lLCB0b19uYW1lOiB0b05hbWUsIHpvbmU6IHpvbmUsIHBheDogc3RhdGUucGF4LCB0cmlwOiBzdGF0ZS50cmlwLCBwcmljZTogL1xkLy50ZXN0KHApID8gcCA6ICIiLCBwYWdlX3VybDogcHUsCiAgICAgIGRldmljZTogdyAmJiB3IDwgNzY4ID8gIm1vYmlsZSIgOiAodyAmJiB3IDwgMTAyNSA/ICJ0YWJsZXQiIDogImRlc2t0b3AiKSwKICAgICAgdXRtX3NvdXJjZTogYS51dG1fc291cmNlIHx8ICIiLCB1dG1fY2FtcGFpZ246IGEudXRtX2NhbXBhaWduIHx8ICIiLCBnY2xpZDogYS5nY2xpZCB8fCAiIiwgdmlzaXRvcjogdn07CiAgICB2YXIgdXJsID0gIi93cC1qc29uL3ltdC13YS92MS9xdW90ZSIsIGJvZHkgPSBKU09OLnN0cmluZ2lmeShkKTsKICAgIGlmICghKG5hdmlnYXRvci5zZW5kQmVhY29uICYmIG5hdmlnYXRvci5zZW5kQmVhY29uKHVybCwgbmV3IEJsb2IoW2JvZHldLCB7dHlwZTogInRleHQvcGxhaW4ifSkpKSkgeyBmZXRjaCh1cmwsIHttZXRob2Q6ICJQT1NUIiwgYm9keTogYm9keSwga2VlcGFsaXZlOiB0cnVlLCBjcmVkZW50aWFsczogInNhbWUtb3JpZ2luIn0pOyB9CiAgfSBjYXRjaChlKXt9Cn0KCmZ1bmN0aW9uIHltdFdhU2VuZChtc2csIHByaWNlLCBsYWJlbCl7CiAgdHJ5IHsKICAgIGlmIChkb2N1bWVudC5jb29raWUuaW5kZXhPZigieW10X3dhX3NraXA9MSIpID4gLTEpIHsgcmV0dXJuOyB9CiAgICB2YXIgdG9wID0gbnVsbDsKICAgIHRyeSB7IGlmICh3aW5kb3cucGFyZW50ICYmIHdpbmRvdy5wYXJlbnQgIT09IHdpbmRvdyAmJiB3aW5kb3cucGFyZW50LmxvY2F0aW9uLm9yaWdpbiA9PT0gd2luZG93LmxvY2F0aW9uLm9yaWdpbikgeyB0b3AgPSB3aW5kb3cucGFyZW50OyB9IH0gY2F0Y2goZSl7fQogICAgdmFyIGQgPSB7c291cmNlOiAiY290aXphZG9yIiwgbGFiZWw6IGxhYmVsIHx8ICJTZW5kIG9uIFdoYXRzQXBwIiwgbWVzc2FnZTogbXNnLCBwcmljZTogcHJpY2UsIGhhc19xdW90ZTogMX07CiAgICB0cnkgeyBkLnJvdXRlID0gc3RhdGUuZnJvbS5uYW1lICsgIiDihpIgIiArIHN0YXRlLnRvLm5hbWU7IH0gY2F0Y2goZSl7fQogICAgaWYgKHRvcCAmJiB0eXBlb2YgdG9wLnltdFdhVHJhY2sgPT09ICJmdW5jdGlvbiIpIHsgdG9wLnltdFdhVHJhY2soZCk7IHJldHVybjsgfQogICAgdmFyIGEgPSB7fTsgdHJ5IHsgYSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oInltdF93YV9hdHRyIikpIHx8IHt9OyB9IGNhdGNoKGUpe30KICAgIHZhciB2ID0gIiI7IHRyeSB7IHYgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgieW10X3dhX3ZpZCIpIHx8ICIiOyBpZiAoIXYpIHsgdiA9IChNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKSArIERhdGUubm93KCkudG9TdHJpbmcoMzYpKS5zbGljZSgwLCAyNCk7IGxvY2FsU3RvcmFnZS5zZXRJdGVtKCJ5bXRfd2FfdmlkIiwgdik7IH0gfSBjYXRjaChlKXt9CiAgICB2YXIgdyA9IHdpbmRvdy5pbm5lcldpZHRoIHx8IDA7CiAgICBkLnBhZ2VfdXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWY7IGQucGFnZV90aXRsZSA9IGRvY3VtZW50LnRpdGxlIHx8ICIiOyBkLnJlZmVycmVyID0gZG9jdW1lbnQucmVmZXJyZXIgfHwgIiI7CiAgICBkLmRldmljZSA9IHcgJiYgdyA8IDc2OCA/ICJtb2JpbGUiIDogKHcgJiYgdyA8IDEwMjUgPyAidGFibGV0IiA6ICJkZXNrdG9wIik7CiAgICBkLnV0bV9zb3VyY2UgPSBhLnV0bV9zb3VyY2UgfHwgIiI7IGQudXRtX21lZGl1bSA9IGEudXRtX21lZGl1bSB8fCAiIjsgZC51dG1fY2FtcGFpZ24gPSBhLnV0bV9jYW1wYWlnbiB8fCAiIjsgZC5nY2xpZCA9IGEuZ2NsaWQgfHwgIiI7IGQudmlzaXRvciA9IHY7CiAgICB2YXIgdXJsID0gIi93cC1qc29uL3ltdC13YS92MS9jbGljayIsIGJvZHkgPSBKU09OLnN0cmluZ2lmeShkKTsKICAgIGlmICghKG5hdmlnYXRvci5zZW5kQmVhY29uICYmIG5hdmlnYXRvci5zZW5kQmVhY29uKHVybCwgbmV3IEJsb2IoW2JvZHldLCB7dHlwZTogInRleHQvcGxhaW4ifSkpKSkgeyBmZXRjaCh1cmwsIHttZXRob2Q6ICJQT1NUIiwgYm9keTogYm9keSwga2VlcGFsaXZlOiB0cnVlLCBjcmVkZW50aWFsczogInNhbWUtb3JpZ2luIn0pOyB9CiAgfSBjYXRjaChlKXt9Cn0KCmZ1bmN0aW9uIGJ1aWxkTWVzc2FnZShmcm9tTmFtZSwgdG9OYW1lLCBwYXgsIHRyaXAsIHRpbWUpewogIGNvbnN0IHBheExhYmVsID0gYCR7cGF4fSBwYXNzZW5nZXIke3BheD4xPyJzIjoiIn1gOwogIGNvbnN0IGRpciA9IHRyaXAgPT09ICJydCIKICAgID8gYGEgcm91bmQtdHJpcCBwcml2YXRlIHRyYW5zZmVyIGJldHdlZW4gJHtmcm9tTmFtZX0gYW5kICR7dG9OYW1lfWAKICAgIDogYGEgb25lLXdheSBwcml2YXRlIHRyYW5zZmVyIGZyb20gJHtmcm9tTmFtZX0gdG8gJHt0b05hbWV9YDsKICByZXR1cm4gYEhpISBXZSdkIGxpa2UgdG8gYm9vayAke2Rpcn0uXG5PdXIgcGljay11cCB0aW1lIGlzICR7Zm10VGltZSh0aW1lKX0uXG5XZSBhcmUgJHtwYXhMYWJlbH0uXG5XZSdkIGxpa2UgdG8ga25vdyB5b3VyIGF2YWlsYWJpbGl0eSBhbmQgY29uZmlybSB0b2RheS5gOwp9Cgpjb25zdCBJQ09OUyA9IHsKICBwYXg6ICAnPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjgiIHI9IjMuMiIvPjxwYXRoIGQ9Ik01IDIwYzAtNCAzLTYuNSA3LTYuNXM3IDIuNSA3IDYuNSIvPjwvc3ZnPicsCiAgYmFnOiAgJzxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHJlY3QgeD0iNCIgeT0iOCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjExIiByeD0iMS41Ii8+PHBhdGggZD0iTTkgOFY2YTIgMiAwIDAgMSAyLTJoMmEyIDIgMCAwIDEgMiAydjIiLz48L3N2Zz4nLAogIGFjOiAgICc8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGQ9Ik0xMiAydjIwTTQuNSA2bDE1IDEyTTE5LjUgNmwtMTUgMTIiLz48L3N2Zz4nLAogIG1lZXQ6ICc8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGQ9Ik0xMiAzdjExIi8+PHJlY3QgeD0iMyIgeT0iMTQiIHdpZHRoPSIxOCIgaGVpZ2h0PSI3IiByeD0iMS41Ii8+PHBhdGggZD0iTTcgMTcuNWgyTTE1IDE3LjVoMiIvPjwvc3ZnPicsCn07CgpzZWFyY2hCdG4uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBydW5TZWFyY2gpOwoKZnVuY3Rpb24gcmVzb2x2ZVpvbmUoKXsKICBjb25zdCBmID0gc3RhdGUuZnJvbSwgdCA9IHN0YXRlLnRvOwogIGlmICghZiB8fCAhdCkgcmV0dXJuIG51bGw7CiAgaWYgKGYua2luZCA9PT0gImFpcnBvcnQiICYmIHQuemlkKSByZXR1cm4geyB6b25lOiBEQVRBLnpvbmVzW3QuemlkXSwgZGVzdDogdC5uYW1lLCBmcm9tOiBmLm5hbWUsIHRvOiB0Lm5hbWUgfTsKICBpZiAodC5raW5kID09PSAiYWlycG9ydCIgJiYgZi56aWQpIHJldHVybiB7IHpvbmU6IERBVEEuem9uZXNbZi56aWRdLCBkZXN0OiBmLm5hbWUsIGZyb206IGYubmFtZSwgdG86IHQubmFtZSB9OwogIGlmIChmLmtpbmQgIT09ICJhaXJwb3J0IiAmJiB0LmtpbmQgIT09ICJhaXJwb3J0IiAmJiBmLnppZCA9PT0gImNhbmN1biIgJiYgdC56aWQgPT09ICJjYW5jdW4iKSB7IGNvbnN0IHp6ID0gT2JqZWN0LmFzc2lnbih7fSwgREFUQS56b25lcy5jYW5jdW4sIHsgbGFiZWw6IERBVEEuem9uZXNbZi56aWRdLmxhYmVsICsgIiAoc2FtZSBhcmVhKSIsIG1pbjogMCB9KTsgcmV0dXJuIHsgem9uZTogenosIGRlc3Q6IHQubmFtZSwgZnJvbTogZi5uYW1lLCB0bzogdC5uYW1lIH07IH0KICByZXR1cm4gbnVsbDsKfQoKZnVuY3Rpb24gcnVuU2VhcmNoKCl7CiAgaWYgKCFzdGF0ZS5mcm9tIHx8ICFzdGF0ZS50bykgcmV0dXJuOwogIGNvbnN0IG1hdGNoID0gcmVzb2x2ZVpvbmUoKTsKICByZXN1bHRzRWwuaW5uZXJIVE1MID0gIiI7CgogIGlmICghbWF0Y2gpewogICAgcmVuZGVyUXVvdGVQYW5lbCgpOwogICAgcmV0dXJuOwogIH0KCiAgY29uc3QgeiA9IG1hdGNoLnpvbmU7CiAgY29uc3QgaGVhZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogIGhlYWQuY2xhc3NOYW1lID0gInJlc3VsdGhlYWQiOwogIGhlYWQuaW5uZXJIVE1MID0gYDxoMj48L2gyPjxzcGFuIGNsYXNzPSJyem9uZSI+PC9zcGFuPmA7CiAgaGVhZC5xdWVyeVNlbGVjdG9yKCJoMiIpLnRleHRDb250ZW50ID0gbWF0Y2guZnJvbSArICIg4oaSICIgKyBtYXRjaC50bzsKICBoZWFkLnF1ZXJ5U2VsZWN0b3IoIi5yem9uZSIpLnRleHRDb250ZW50ID0gei5sYWJlbCArICh6Lm1pbiA/ICIgwrcgYXBwcm94LiAiICsgei5taW4gKyAiIG1pbiIgOiAiIikgKyAiIMK3ICIgKyAoc3RhdGUudHJpcD09PSJydCI/InJvdW5kIHRyaXAiOiJvbmUgd2F5Iik7CiAgcmVzdWx0c0VsLmFwcGVuZENoaWxkKGhlYWQpOwoKICBjb25zdCBjYXJkcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogIGNhcmRzLmNsYXNzTmFtZSA9ICJjYXJkcyI7CgogIGNvbnN0IGNhbkZpdFByaXZhdGUgPSBzdGF0ZS5wYXggPD0gODsKICBjb25zdCBwcml2YXRlT1cgPSAhY2FuRml0UHJpdmF0ZSA/IG51bGwgOiAoc3RhdGUucGF4IDw9IDYgPyB6Lm93UDFfNiA6IChzdGF0ZS5wYXggPT09IDcgPyB6Lm93UDcgOiB6Lm93UDgpKTsKICBjb25zdCBwcml2YXRlUlQgPSAhY2FuRml0UHJpdmF0ZSA/IG51bGwgOiAoc3RhdGUucGF4IDw9IDYgPyB6LnJ0UDFfNiA6IChzdGF0ZS5wYXggPT09IDcgPyB6LnJ0UDcgOiB6LnJ0UDgpKTsKICBjb25zdCBncm91cE9XID0gei5vd0c7CiAgY29uc3QgZ3JvdXBSVCA9IHoucnRHOwoKICBjb25zdCB0aWVycyA9IFsKICAgIHsga2V5OiJQIiwgdGl0bGU6IlByaXZhdGUgdmFuIiwgdmVoOlZFSF9JTUcuUCwgZml0czpjYW5GaXRQcml2YXRlLCBvdzpwcml2YXRlT1csIHJ0OnByaXZhdGVSVCwKICAgICAgY2FwTGluZTogY2FuRml0UHJpdmF0ZSA/IGAke3N0YXRlLnBheH0gcGFzc2VuZ2VyJHtzdGF0ZS5wYXg+MT8icyI6IiJ9IHRvZGF5IMK3IGZpdHMgdXAgdG8gOGAgOiAiRml0cyB1cCB0byA4IHBhc3NlbmdlcnMiLAogICAgICBiYWdMYWJlbDoiNyBzdWl0Y2FzZXMiLAogICAgICBkZXNjOiJBaXItY29uZGl0aW9uZWQgdmFuIHdpdGggY29tZm9ydGFibGUgc2VhdGluZyBhbmQgcm9vbSBmb3IgeW91ciBsdWdnYWdlIOKAlCBpZGVhbCBmb3IgY291cGxlcywgZmFtaWxpZXMgYW5kIHNtYWxsIGdyb3Vwcy4iIH0sCiAgICB7IGtleToiRyIsIHRpdGxlOiJHcm91cCB2YW4gKFNwcmludGVyKSIsIHZlaDpWRUhfSU1HLkcsIGZpdHM6dHJ1ZSwgb3c6Z3JvdXBPVywgcnQ6Z3JvdXBSVCwKICAgICAgY2FwTGluZToiVXAgdG8gMTYgcGFzc2VuZ2VycyIsIGJhZ0xhYmVsOiIxNCBzdWl0Y2FzZXMiLAogICAgICBkZXNjOiJNZXJjZWRlcy1CZW56IFNwcmludGVyIHdpdGggZXh0cmEgbGVncm9vbSBhbmQgbHVnZ2FnZSBzcGFjZSBmb3IgdGhlIHdob2xlIGdyb3VwIOKAlCBwZXJmZWN0IGZvciBsYXJnZXIgcGFydGllcyBhbmQgZmFtaWx5IHJldW5pb25zLiIgfSwKICBdOwoKICBmb3IgKGNvbnN0IHQgb2YgdGllcnMpewogICAgY29uc3QgY2FyZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgaWYgKCF0LmZpdHMpewogICAgICBjYXJkLmNsYXNzTmFtZSA9ICJjYXJkIHVuYXZhaWxhYmxlIjsKICAgICAgY2FyZC5pbm5lckhUTUwgPSBgCiAgICAgICAgPGRpdiBjbGFzcz0iY3ZlaCI+JHt0LnZlaH08L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjdGl0bGUiPiR7dC50aXRsZX08L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjY2FwIj4ke3QuY2FwTGluZX08L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjZGVzYyI+JHtzdGF0ZS5wYXh9IHBhc3NlbmdlcnMgZG9uJ3QgZml0IHRoaXMgdmVoaWNsZSDigJQgcGljayA4IG9yIGZld2VyLCBvciBib29rIHRoZSBTcHJpbnRlci48L2Rpdj4KICAgICAgYDsKICAgICAgY2FyZHMuYXBwZW5kQ2hpbGQoY2FyZCk7CiAgICAgIGNvbnRpbnVlOwogICAgfQogICAgY29uc3QgaXNTZWxlY3RlZCA9IHN0YXRlLnZlaGljbGUgPT09IHQua2V5OwogICAgY29uc3QgcHJpY2UgPSBzdGF0ZS50cmlwID09PSAicnQiID8gdC5ydCA6IHQub3c7CiAgICBjb25zdCBhbHQgPSBzdGF0ZS50cmlwID09PSAicnQiID8gdC5vdyA6IHQucnQ7CiAgICBjb25zdCBhbHRMYWJlbCA9IHN0YXRlLnRyaXAgPT09ICJydCIgPyAib25lIHdheSIgOiAicm91bmQgdHJpcCI7CiAgICBjYXJkLmNsYXNzTmFtZSA9ICJjYXJkIiArIChpc1NlbGVjdGVkID8gIiBzZWxlY3RlZCIgOiAiIik7CiAgICBjYXJkLmlubmVySFRNTCA9IGAKICAgICAgPGRpdiBjbGFzcz0iY3ZlaCI+JHt0LnZlaH08L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY3RpdGxlIj4ke3QudGl0bGV9PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNjYXAiPiR7dC5jYXBMaW5lfTwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjZGVzYyI+JHt0LmRlc2N9PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNpY29ucyI+CiAgICAgICAgPHNwYW4gY2xhc3M9ImNpY29uIj4ke0lDT05TLnBheH08Yj4ke3QuY2FwTGluZS5zcGxpdCgiIMK3ICIpWzBdfTwvYj48L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9ImNpY29uIj4ke0lDT05TLmJhZ308Yj4ke3QuYmFnTGFiZWx9PC9iPjwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0iY2ljb24iPiR7SUNPTlMuYWN9PGI+QS9DPC9iPjwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0iY2ljb24iPiR7SUNPTlMubWVldH08Yj5NZWV0ICZhbXA7IGdyZWV0PC9iPjwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNwcmljZSI+JHttb25leShwcmljZSl9PHNtYWxsPiR7c3RhdGUudHJpcD09PSJydCI/InJvdW5kIHRyaXAiOiJvbmUgd2F5In0gwrcgcGVyIHZlaGljbGU8L3NtYWxsPjwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjYWx0Ij4ke21vbmV5KGFsdCl9ICR7YWx0TGFiZWx9PC9kaXY+CiAgICAgIDxidXR0b24gY2xhc3M9InBpY2siIHR5cGU9ImJ1dHRvbiI+Qm9vayBvbiBXaGF0c0FwcDwvYnV0dG9uPgogICAgYDsKICAgIGNhcmQucXVlcnlTZWxlY3RvcigiYnV0dG9uLnBpY2siKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsICgpID0+IHsKICAgICAgc3RhdGUudmVoaWNsZSA9IHQua2V5OwogICAgICAvKiBZTVQtV0EtVjI6IGVsIGJvdG9uIGRlbCB2ZWhpY3VsbyBhYnJlIFdoYXRzQXBwIGNvbiBsYSBjb3RpemFjaW9uICovCiAgICAgIHRyeSB7CiAgICAgICAgdmFyIHltdFByID0gbW9uZXkocHJpY2UpICsgIiBVU0QiOwogICAgICAgIHZhciB5bXRNc2cgPSBidWlsZE1lc3NhZ2Uoc3RhdGUuZnJvbS5uYW1lLCBzdGF0ZS50by5uYW1lLCBzdGF0ZS5wYXgsIHN0YXRlLnRyaXAsICIxMjowMCIpLnJlcGxhY2UoL1xuT3VyIHBpY2stdXAgdGltZSBpc1teXG5dKi8sICIiKS5yZXBsYWNlKCJcbldlJ2QgbGlrZSB0byBrbm93IiwgIlxuVmVoaWNsZTogIiArIHQudGl0bGUgKyAiLlxuUHJpY2UgcXVvdGVkIG9uIHlvdXIgd2Vic2l0ZTogIiArIHltdFByICsgKHN0YXRlLnRyaXAgPT09ICJydCIgPyAiIChyb3VuZCB0cmlwKSIgOiAiIChvbmUgd2F5KSIpICsgIi5cbldlJ2QgbGlrZSB0byBrbm93Iik7CiAgICAgICAgd2luZG93Ll9feW10V2FEaXJlY3QgPSAxOyB0cnkgeyB3aW5kb3cub3BlbigiaHR0cHM6Ly93YS5tZS81Mjk5ODM0MTU2MzE/dGV4dD0iICsgZW5jb2RlVVJJQ29tcG9uZW50KHltdE1zZyksICJfYmxhbmsiLCAibm9vcGVuZXIiKTsgfSBmaW5hbGx5IHsgd2luZG93Ll9feW10V2FEaXJlY3QgPSAwOyB9CiAgICAgICAgeW10V2FTZW5kKHltdE1zZywgeW10UHIsICJWZWhpY2xlOiAiICsgdC50aXRsZSk7CiAgICAgIH0gY2F0Y2goZSl7fQogICAgICBydW5TZWFyY2goKTsKICAgIH0pOwogICAgY2FyZHMuYXBwZW5kQ2hpbGQoY2FyZCk7CiAgfQogIHJlc3VsdHNFbC5hcHBlbmRDaGlsZChjYXJkcyk7CgogIGNvbnN0IGZhY3RzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgZmFjdHMuY2xhc3NOYW1lID0gImZhY3RzIjsKICBmYWN0cy5pbm5lckhUTUwgPSBgPHNwYW4gY2xhc3M9InRhZyI+UHJpY2VkIHBlciB2ZWhpY2xlPC9zcGFuPjxzcGFuIGNsYXNzPSJ0YWciPlRheGVzIGluY2x1ZGVkPC9zcGFuPjxzcGFuIGNsYXNzPSJ0YWciPk1lZXQgJmFtcDsgZ3JlZXQgd2l0aCBzaWduPC9zcGFuPjxzcGFuIGNsYXNzPSJ0YWciPk5vIGZlZSBmb3IgZGVsYXllZCBmbGlnaHRzPC9zcGFuPmA7CiAgcmVzdWx0c0VsLmFwcGVuZENoaWxkKGZhY3RzKTsKCiAgaWYgKHN0YXRlLmludGVybmFsKXsKICAgIGNvbnN0IHJlZiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgcmVmLmNsYXNzTmFtZSA9ICJyZWYiOwogICAgewogICAgICBjb25zdCBwYXJ0cyA9IFtdOwogICAgICBwYXJ0cy5wdXNoKGBQcml2YXRlIDEtNiBPVyAkJHt6Lm93UDFfNn0gLyBSVCAkJHt6LnJ0UDFfNn1gKTsKICAgICAgcGFydHMucHVzaChgUHJpdmF0ZSA3IE9XICQke3oub3dQN30gLyBSVCAkJHt6LnJ0UDd9YCk7CiAgICAgIHBhcnRzLnB1c2goYFByaXZhdGUgOCBPVyAkJHt6Lm93UDh9IC8gUlQgJCR7ei5ydFA4fWApOwogICAgICBpZiAoei5vd0cgIT0gbnVsbCkgcGFydHMucHVzaChgR3JvdXAgT1cgJCR7ei5vd0d9IC8gUlQgJCR7ei5ydEd9YCk7CiAgICAgIGlmICh6LnJlZk93UCAhPSBudWxsKSBwYXJ0cy5wdXNoKGBtYXJrZXQgcmVmIDdwYXggT1cgJCR7ei5yZWZPd1AudG9GaXhlZCgyKX0gLyBSVCAkJHt6LnJlZlJ0UC50b0ZpeGVkKDIpfWApOwogICAgICBpZiAoei5yZWZPd0cgIT0gbnVsbCkgcGFydHMucHVzaChgbWFya2V0IHJlZiBncm91cCBPVyAkJHt6LnJlZk93Ry50b0ZpeGVkKDIpfSAvIFJUICQke3oucmVmUnRHLnRvRml4ZWQoMil9YCk7CiAgICAgIHBhcnRzLnB1c2goei52ZXJpZmllZCA/ICJ2ZXJpZmllZCAyOCBTZXB0IDIwMjYiIDogInRpZXJzIGFwcHJveGltYXRlZCwgcGVuZGluZyBsaXZlIHBlci1wYXNzZW5nZXIgY2hlY2sgZm9yIHRoaXMgcm91dGUiKTsKICAgICAgcmVmLnRleHRDb250ZW50ID0gcGFydHMuam9pbigiIMK3ICIpOwogICAgfQogICAgcmVzdWx0c0VsLmFwcGVuZENoaWxkKHJlZik7CiAgfQoKICBjb25zdCBzZWxlY3RlZFRpZXIgPSB0aWVycy5maW5kKHQgPT4gdC5rZXkgPT09IHN0YXRlLnZlaGljbGUgJiYgdC5maXRzKSB8fCB0aWVycy5maW5kKHQgPT4gdC5maXRzKTsKICBidWlsZFJlcXVlc3RCb3gobWF0Y2guZnJvbSwgbWF0Y2gudG8sICgpID0+IHsKICAgIGNvbnN0IGN1cnJlbnRQcmljZSA9IHN0YXRlLnRyaXAgPT09ICJydCIgPyBzZWxlY3RlZFRpZXIucnQgOiBzZWxlY3RlZFRpZXIub3c7CiAgICByZXR1cm4gbW9uZXkoY3VycmVudFByaWNlKSArICIgVVNEIjsKICB9KTsKCiAgcmVzdWx0c0VsLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICJzbW9vdGgiLCBibG9jazogInN0YXJ0IiB9KTsKfQoKZnVuY3Rpb24gcmVuZGVyUXVvdGVQYW5lbCgpewogIGNvbnN0IGZyb21OYW1lID0gc3RhdGUuZnJvbS5uYW1lLCB0b05hbWUgPSBzdGF0ZS50by5uYW1lOwogIGNvbnN0IG5vdGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICBub3RlLmNsYXNzTmFtZSA9ICJxdW90ZW5vdGUiOwogIG5vdGUuaW5uZXJIVE1MID0gYDxzcGFuPiYjOTg4ODsmIzY1MDM5Ozwvc3Bhbj48c3Bhbj48Yj5Ob3Qgb24gb3VyIGZpeGVkLXJhdGUgbGlzdCB5ZXQuPC9iPiAke2Zyb21OYW1lfSDihpQgJHt0b05hbWV9IGlzbid0IG9uZSBvZiBvdXIgcHVibGlzaGVkIHpvbmVzLCBzbyB3ZSBjYW4ndCBzaG93IGFuIGluc3RhbnQgcHJpY2Ug4oCUIHNlbmQgdGhlIGV4YWN0IHBpY2t1cCBhbmQgZHJvcC1vZmYgb24gV2hhdHNBcHAgYW5kIHdlJ2xsIGNvbmZpcm0gYSBmaXhlZCBwcmljZSBiZWZvcmUgeW91IGJvb2suPC9zcGFuPmA7CiAgcmVzdWx0c0VsLmFwcGVuZENoaWxkKG5vdGUpOwogIGJ1aWxkUmVxdWVzdEJveChmcm9tTmFtZSwgdG9OYW1lLCAoKSA9PiAiUXVvdGUgb24gcmVxdWVzdCIpOwogIHJlc3VsdHNFbC5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAic21vb3RoIiwgYmxvY2s6ICJzdGFydCIgfSk7Cn0KCmZ1bmN0aW9uIGJ1aWxkUmVxdWVzdEJveChmcm9tTmFtZSwgdG9OYW1lLCBwcmljZUZuKXsKICB0cnkgeyB5bXRXYVF1b3RlTG9nKGZyb21OYW1lLCB0b05hbWUsIHByaWNlRm4pOyB9IGNhdGNoKGUpe30KICBjb25zdCByZXFCb3ggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICByZXFCb3guY2xhc3NOYW1lID0gInJlcXVlc3Rib3giOwogIHJlcUJveC5pbm5lckhUTUwgPSBgCiAgICA8ZGl2IGNsYXNzPSJybGFiIj5BdmFpbGFiaWxpdHkgcmVxdWVzdDwvZGl2PgogICAgPGRpdiBjbGFzcz0icmZpZWxkcyI+CiAgICAgIDxsYWJlbD5QaWNrLXVwIHRpbWUgPGlucHV0IHR5cGU9InRpbWUiIGNsYXNzPSJmLXRpbWUiIHZhbHVlPSIke2RlZmF1bHRUaW1lKCl9Ij48L2xhYmVsPgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJtc2dwcmV2aWV3IiBkYXRhLXByZXZpZXc+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJhY3Rpb25zIj4KICAgICAgPGEgY2xhc3M9ImNvcHkgd2EiIGRhdGEtd2EgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiIGhyZWY9IiMiIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246bm9uZTtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2JhY2tncm91bmQ6IzFmOGE0Yztjb2xvcjojZmZmO2JvcmRlci1jb2xvcjojMWY4YTRjO2ZvbnQtd2VpZ2h0OjcwMCI+U2VuZCBvbiBXaGF0c0FwcDwvYT48YnV0dG9uIGNsYXNzPSJjb3B5IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJtc2ciPkNvcHkgcmVxdWVzdCBtZXNzYWdlPC9idXR0b24+CiAgICAgIDxidXR0b24gY2xhc3M9ImNvcHkgYWx0IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJwcmljZSI+Q29weSBwcmljZSBvbmx5PC9idXR0b24+CiAgICA8L2Rpdj4KICBgOwogIHJlc3VsdHNFbC5hcHBlbmRDaGlsZChyZXFCb3gpOwoKICBjb25zdCBwcmV2aWV3ID0gcmVxQm94LnF1ZXJ5U2VsZWN0b3IoIltkYXRhLXByZXZpZXddIik7CiAgY29uc3QgdGltZUlucHV0ID0gcmVxQm94LnF1ZXJ5U2VsZWN0b3IoIi5mLXRpbWUiKTsKICBmdW5jdGlvbiByZWZyZXNoUHJldmlldygpewogICAgcHJldmlldy50ZXh0Q29udGVudCA9IGJ1aWxkTWVzc2FnZShmcm9tTmFtZSwgdG9OYW1lLCBzdGF0ZS5wYXgsIHN0YXRlLnRyaXAsIHRpbWVJbnB1dC52YWx1ZSk7CiAgICAvKiBZTVQtV0EtVjEgKi8KICAgIHZhciB5bXRQID0gIiI7IHRyeSB7IHltdFAgPSBTdHJpbmcocHJpY2VGbigpIHx8ICIiKTsgfSBjYXRjaChlKXt9CiAgICB2YXIgeW10SGFzUCA9IC9cZC8udGVzdCh5bXRQKTsKICAgIGlmICh5bXRIYXNQKSB7IHByZXZpZXcudGV4dENvbnRlbnQgPSBwcmV2aWV3LnRleHRDb250ZW50LnJlcGxhY2UoIlxuV2UnZCBsaWtlIHRvIGtub3ciLCAiXG5QcmljZSBxdW90ZWQgb24geW91ciB3ZWJzaXRlOiAiICsgeW10UCArIChzdGF0ZS50cmlwID09PSAicnQiID8gIiAocm91bmQgdHJpcCkiIDogIiAob25lIHdheSkiKSArICIuXG5XZSdkIGxpa2UgdG8ga25vdyIpOyB9CiAgICB0cnkgeyBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgieW10X3dhX3F1b3RlIiwgSlNPTi5zdHJpbmdpZnkoe206IHByZXZpZXcudGV4dENvbnRlbnQsIHA6IHltdEhhc1AgPyB5bXRQIDogIiIsIHI6IGZyb21OYW1lICsgIiDihpIgIiArIHRvTmFtZSwgdHM6IERhdGUubm93KCl9KSk7ICh3aW5kb3cucGFyZW50IHx8IHdpbmRvdykucG9zdE1lc3NhZ2Uoe3ltdFdhUXVvdGU6IDF9LCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTsgfSBjYXRjaChlKXt9CiAgICB2YXIgd2FCdG4gPSByZXFCb3gucXVlcnlTZWxlY3RvcigiW2RhdGEtd2FdIik7IGlmICh3YUJ0bikgeyB3YUJ0bi5ocmVmID0gImh0dHBzOi8vd2EubWUvNTI5OTgzNDE1NjMxP3RleHQ9IiArIGVuY29kZVVSSUNvbXBvbmVudChwcmV2aWV3LnRleHRDb250ZW50KTsgfQogIH0KICB0aW1lSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCByZWZyZXNoUHJldmlldyk7CiAgcmVmcmVzaFByZXZpZXcoKTsKCiAgcmVxQm94LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgYXN5bmMgKGV2KSA9PiB7CiAgICBpZiAoZXYudGFyZ2V0LmNsb3Nlc3QoIltkYXRhLXdhXSIpKSB7IHJlZnJlc2hQcmV2aWV3KCk7IHZhciB5bXRQeCA9ICIiOyB0cnkgeyB5bXRQeCA9IFN0cmluZyhwcmljZUZuKCkgfHwgIiIpOyB9IGNhdGNoKGUpe30geW10V2FTZW5kKHByZXZpZXcudGV4dENvbnRlbnQsIC9cZC8udGVzdCh5bXRQeCkgPyB5bXRQeCA6ICIiKTsgcmV0dXJuOyB9CiAgICBjb25zdCBidG4gPSBldi50YXJnZXQuY2xvc2VzdCgiYnV0dG9uW2RhdGEtYWN0XSIpOwogICAgaWYgKCFidG4pIHJldHVybjsKICAgIGNvbnN0IHRleHQgPSBidG4uZGF0YXNldC5hY3QgPT09ICJtc2ciID8gcHJldmlldy50ZXh0Q29udGVudCA6IHByaWNlRm4oKTsKICAgIGNvbnN0IGRvbmUgPSAoKSA9PiB7IGNvbnN0IG9sZCA9IGJ0bi50ZXh0Q29udGVudDsgYnRuLnRleHRDb250ZW50ID0gIkNvcGllZCI7IHNldFRpbWVvdXQoKCk9PntidG4udGV4dENvbnRlbnQgPSBvbGQ7fSwgMTQwMCk7IH07CiAgICB0cnkgeyBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0ZXh0KTsgZG9uZSgpOyB9CiAgICBjYXRjaChlKXsKICAgICAgY29uc3QgdGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZXh0YXJlYSIpOwogICAgICB0YS52YWx1ZSA9IHRleHQ7IHRhLnNldEF0dHJpYnV0ZSgicmVhZG9ubHkiLCIiKTsKICAgICAgdGEuc3R5bGUuY3NzVGV4dCA9ICJwb3NpdGlvbjpmaXhlZDtvcGFjaXR5OjAiOwogICAgICByZXFCb3guYXBwZW5kQ2hpbGQodGEpOyB0YS5zZWxlY3QoKTsKICAgICAgdHJ5IHsgZG9jdW1lbnQuZXhlY0NvbW1hbmQoImNvcHkiKTsgZG9uZSgpOyB9IGNhdGNoKGVycil7IGJ0bi50ZXh0Q29udGVudCA9ICJTZWxlY3QgYW5kIGNvcHkiOyB9CiAgICAgIHNldFRpbWVvdXQoKCk9PnRhLnJlbW92ZSgpLCAxMDApOwogICAgfQogIH0pOwp9Cgp1cGRhdGVTZWFyY2hFbmFibGVkKCk7CnJlc3VsdHNFbC5pbm5lckhUTUwgPSBgPGRpdiBjbGFzcz0iZW1wdHkiPlNlYXJjaCB3aGVyZSB5b3UncmUgc3RhcnRpbmcgYW5kIHdoZXJlIHlvdSdyZSBoZWFkZWQgdG8gc2VlIGxpdmUgcHJpY2luZy48L2Rpdj5gOwoKLy8gV2hlbiBlbWJlZGRlZCB2aWEgaWZyYW1lIChlLmcuIG9uIHllc215dHJhbnNmZXIuY29tKSwgdGVsbCB0aGUgcGFyZW50IHBhZ2Ugb3VyIGhlaWdodAovLyBzbyBpdCBjYW4gc2l6ZSB0aGUgaWZyYW1lIGluc3RlYWQgb2Ygc2hvd2luZyBhIHNjcm9sbGJhci4gSGFybWxlc3Mgc3RhbmRhbG9uZS4KZnVuY3Rpb24geW10UG9zdEhlaWdodCgpewogIHRyeSB7IHZhciBzaD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsSGVpZ2h0OyB2YXIgb3A9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygic3Vnb3BlbiIpOyBpZighb3Ape3dpbmRvdy5fX3ltdEZsb3c9c2g7fSBwYXJlbnQucG9zdE1lc3NhZ2UoeyB5bXRFbmdpbmVIZWlnaHQ6IChvcCA/ICh3aW5kb3cuX195bXRGbG93fHxzaCkgOiBzaCksIHltdEVuZ2luZU92ZXJsYXk6IHNoIH0sICIqIik7IH0gY2F0Y2goZSl7fQp9CnRyeSB7CiAgbmV3IFJlc2l6ZU9ic2VydmVyKHltdFBvc3RIZWlnaHQpLm9ic2VydmUoZG9jdW1lbnQuYm9keSk7CiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCB5bXRQb3N0SGVpZ2h0KTsKICB5bXRQb3N0SGVpZ2h0KCk7CiAgc2V0VGltZW91dCh5bXRQb3N0SGVpZ2h0LCA0MDApOwp9IGNhdGNoKGUpe30KPC9zY3JpcHQ+Cgo8c2NyaXB0PihmdW5jdGlvbigpe3ZhciByPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtpZih3aW5kb3cuc2VsZiE9PXdpbmRvdy50b3Ape3Iuc2V0QXR0cmlidXRlKCJkYXRhLXRoZW1lIiwibGlnaHQiKTtyLmNsYXNzTGlzdC5hZGQoInltdC1lbWJlZGRlZCIpO312YXIgaWRzPVsic3VnZ2VzdEZyb20iLCJzdWdnZXN0VG8iXTtmdW5jdGlvbiBjaGsoKXt2YXIgbz1mYWxzZTtpZHMuZm9yRWFjaChmdW5jdGlvbihpKXt2YXIgZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChpKTtpZihlKXtpZighZS5oaWRkZW4pe289dHJ1ZTt9fX0pO3IuY2xhc3NMaXN0LnRvZ2dsZSgic3Vnb3BlbiIsbyk7fWlkcy5mb3JFYWNoKGZ1bmN0aW9uKGkpe3ZhciBlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGkpO2lmKGUpe25ldyBNdXRhdGlvbk9ic2VydmVyKGNoaykub2JzZXJ2ZShlLHthdHRyaWJ1dGVzOnRydWUsYXR0cmlidXRlRmlsdGVyOlsiaGlkZGVuIl19KTt9fSk7fSkoKTs8L3NjcmlwdD4KPC9ib2R5PjwvaHRtbD4K
@@END@@