[bt_bb_section layout=”boxed_1200″ lazy_load=”yes” show_video_on_mobile=”” bb_version=”5.5.2″][bt_bb_row][bt_bb_column width=”1/1″ width_xl=”1/1″ width_lg=”1/1″ width_md=”1/1″ width_sm=”1/1″ width_xs=”1/1″ order=”0″ lazy_load=”yes” shape=”inherit” bb_version=”5.5.2″][bt_bb_raw_content raw_content=”PCFkb2N0eXBlIGh0bWw+CjxodG1sIGxhbmc9Iml0Ij4KPGhlYWQ+CiAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgogIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSIvPgogIDx0aXRsZT5DYW1iaW8gcGFydG5lciBhbmltYXppb25lIOKAkyBFc3RhdGUgMjAyNiB8IFJpY2hpZWRpIFByZXZlbnRpdm8gfCBIaWRhbGdvIEFuaW1hemlvbmU8L3RpdGxlPgogIDxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJWYWx1dGkgZGkgY2FtYmlhcmUgcGFydG5lciBwZXIgbCdhbmltYXppb25lIGRlbGxhIHR1YSBzdHJ1dHR1cmEgbmVsbCdlc3RhdGUgMjAyNj8gU3RhZmYgc2VsZXppb25hdG8sIHByb2dyYW1taSBzdSBtaXN1cmEsIG1hcmtldGluZyBpbnRlZ3JhdG8uIFJpY2hpZWRpIHVuIHByZXZlbnRpdm8uIj4KICA8bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20iPgogIDxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbSIgY3Jvc3NvcmlnaW4+CiAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1JbnRlcjp3Z2h0QDMwMDs0MDA7NjAwOzcwMDs4MDAmZGlzcGxheT1zd2FwIiByZWw9InN0eWxlc2hlZXQiPgogIDxzdHlsZT4KICAgIDpyb290IHstLWJyYW5kOiNFNzVCMDA7IC0tZGFyazojMTExMTExOyAtLWxpZ2h0OiNmZmZmZmY7IC0tbXV0ZWQ6I2Y2ZjZmNjsgLS10ZXh0OiMyMjI7fQogICAgKntib3gtc2l6aW5nOmJvcmRlci1ib3h9CiAgICBodG1sLGJvZHl7bWFyZ2luOjA7cGFkZGluZzowO2ZvbnQtZmFtaWx5OiJJbnRlciIsc3lzdGVtLXVpLC1hcHBsZS1zeXN0ZW0sU2Vnb2UgVUksUm9ib3RvLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO2NvbG9yOnZhcigtLXRleHQpO2JhY2tncm91bmQ6I2ZmZjt9CiAgICBhe2NvbG9yOnZhcigtLWJyYW5kKTt0ZXh0LWRlY29yYXRpb246bm9uZX0KICAgIC5jb250YWluZXJ7bWF4LXdpZHRoOjExMjBweDttYXJnaW46MCBhdXRvO3BhZGRpbmc6MCAyMHB4fQogICAgLmJ0bntkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nOjE0cHggMjJweDtib3JkZXItcmFkaXVzOjEwcHg7Zm9udC13ZWlnaHQ6NzAwO2JvcmRlcjoycHggc29saWQgdmFyKC0tYnJhbmQpO2JhY2tncm91bmQ6dmFyKC0tYnJhbmQpO2NvbG9yOiNmZmY7dHJhbnNpdGlvbjouMnM7fQogICAgLmJ0bjpob3ZlcntmaWx0ZXI6YnJpZ2h0bmVzcyguOTUpfQogICAgLmJ0bi1vdXRsaW5le2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6dmFyKC0tYnJhbmQpfQogICAgLnRhZ3tkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4O3BhZGRpbmc6NnB4IDEwcHg7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnJnYmEoMjMxLDkxLDAsLjEpO2NvbG9yOnZhcigtLWJyYW5kKTtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjEycHg7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2xldHRlci1zcGFjaW5nOi4wNGVtfQoKICAgIGhlYWRlci5oZXJve3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxODBkZWcsI2ZmZiwjZmZmIDUwJSx2YXIoLS1tdXRlZCkpO30KICAgIC5oZXJvLWlubmVye2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MS4xNWZyIC44NWZyO2dhcDozOHB4O2FsaWduLWl0ZW1zOmNlbnRlcjtwYWRkaW5nOjU2cHggMCAyNHB4fQogICAgLmtwaXtkaXNwbGF5OmZsZXg7Z2FwOjE4cHg7ZmxleC13cmFwOndyYXA7bWFyZ2luOjE4cHggMCAwfQogICAgLmtwaSAuaXRlbXtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZWVlO2JvcmRlci1yYWRpdXM6MTRweDtwYWRkaW5nOjE0cHggMTZweDttaW4td2lkdGg6MTQwcHg7Ym94LXNoYWRvdzowIDEwcHggMzBweCByZ2JhKDAsMCwwLC4wNSl9CiAgICAua3BpIC5pdGVtIHN0cm9uZ3tkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToyMHB4fQogICAgLmhlcm8gaDF7Zm9udC1zaXplOjQ0cHg7bGluZS1oZWlnaHQ6MS4wNTttYXJnaW46MTRweCAwIDEwcHg7Y29sb3I6dmFyKC0tZGFyayl9CiAgICAuaGVybyBwLnN1Yntmb250LXNpemU6MThweDtvcGFjaXR5Oi45O21hcmdpbjowIDAgMjBweH0KCiAgICAvKiBIRVJPIE1FRElBIOKAkyBjYXJvc2VsbG8gKi8KICAgIC5oZXJvLW1lZGlhe3Bvc2l0aW9uOnJlbGF0aXZlO2JvcmRlci1yYWRpdXM6MjBweDtvdmVyZmxvdzpoaWRkZW47Ym94LXNoYWRvdzowIDE4cHggNDBweCByZ2JhKDAsMCwwLC4xMil9CiAgICAuc2xpZGVye3Bvc2l0aW9uOnJlbGF0aXZlfQogICAgLnNsaWRlc3twb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlfQogICAgLnNsaWRle3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjA7b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSAuNnMgZWFzZX0KICAgIC5zbGlkZS5pcy1hY3RpdmV7b3BhY2l0eToxO3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjB9CiAgICAuc2xpZGUgaW1ne3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7b2JqZWN0LWZpdDpjb3ZlcjtkaXNwbGF5OmJsb2NrfQogICAgLm5hdntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpO2JhY2tncm91bmQ6cmdiYSgxNywxNywxNywuNDUpO2NvbG9yOiNmZmY7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czo5OTlweDt3aWR0aDozOHB4O2hlaWdodDozOHB4O2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZToyMnB4O2xpbmUtaGVpZ2h0OjM4cHg7dGV4dC1hbGlnbjpjZW50ZXJ9CiAgICAubmF2OmhvdmVye2JhY2tncm91bmQ6cmdiYSgxNywxNywxNywuNjUpfQogICAgLm5hdi5wcmV2e2xlZnQ6MTBweH0KICAgIC5uYXYubmV4dHtyaWdodDoxMHB4fQogICAgLmRvdHN7cG9zaXRpb246YWJzb2x1dGU7bGVmdDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSk7Ym90dG9tOjEwcHg7ZGlzcGxheTpmbGV4O2dhcDo4cHh9CiAgICAuZG90cyBidXR0b257d2lkdGg6MTBweDtoZWlnaHQ6MTBweDtib3JkZXItcmFkaXVzOjUwJTtib3JkZXI6MDtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjYpO2N1cnNvcjpwb2ludGVyfQogICAgLmRvdHMgYnV0dG9uLmlzLWFjdGl2ZXtiYWNrZ3JvdW5kOnZhcigtLWJyYW5kKX0KCiAgICAudHJ1c3R7YmFja2dyb3VuZDp2YXIoLS1tdXRlZCk7cGFkZGluZzoxOHB4IDB9CiAgICAudHJ1c3QtbG9nb3N7ZGlzcGxheTpmbGV4O2dhcDoyNHB4O2ZsZXgtd3JhcDp3cmFwO2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO29wYWNpdHk6Ljh9CiAgICAudHJ1c3QtbG9nb3MgaW1ne2hlaWdodDozNHB4O2ZpbHRlcjpncmF5c2NhbGUoMSl9CgogICAgc2VjdGlvbntwYWRkaW5nOjY0cHggMH0KICAgIC5ncmlke2Rpc3BsYXk6Z3JpZDtnYXA6MjRweH0KICAgIC5jb2xzLTN7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgzLDFmcil9CiAgICAuY29scy0ye2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMiwxZnIpfQogICAgLmNhcmR7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgI2VlZTtib3JkZXItcmFkaXVzOjE4cHg7cGFkZGluZzoyMnB4O2JveC1zaGFkb3c6MCAxMHB4IDMwcHggcmdiYSgwLDAsMCwuMDUpfQogICAgaDJ7Zm9udC1zaXplOjMycHg7bWFyZ2luOjAgMCAxMnB4O2NvbG9yOnZhcigtLWRhcmspfQogICAgLmxlYWR7Zm9udC1zaXplOjE4cHg7b3BhY2l0eTouOTttYXJnaW46MCAwIDI0cHh9CgogICAgLmljb257d2lkdGg6MjZweDtoZWlnaHQ6MjZweDtib3JkZXItcmFkaXVzOjhweDtiYWNrZ3JvdW5kOnJnYmEoMjMxLDkxLDAsLjEpO2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7bWFyZ2luLXJpZ2h0OjEwcHh9CiAgICAuY2hlY2t7ZGlzcGxheTpmbGV4O2dhcDoxMnB4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7bWFyZ2luOjEwcHggMH0KCiAgICAucHJvY2VzcyAuc3RlcHtkaXNwbGF5OmZsZXg7Z2FwOjE0cHh9CiAgICAucHJvY2VzcyAubnVte2ZsZXg6MCAwIDM2cHg7aGVpZ2h0OjM2cHg7Ym9yZGVyLXJhZGl1czoxMHB4O2JhY2tncm91bmQ6dmFyKC0tYnJhbmQpO2NvbG9yOiNmZmY7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZvbnQtd2VpZ2h0OjgwMH0KCiAgICAuY3RhLWJhbmR7YmFja2dyb3VuZDp2YXIoLS1kYXJrKTtjb2xvcjojZmZmO3BhZGRpbmc6MzBweCAwfQogICAgLmN0YS1iYW5kIC53cmFwe2Rpc3BsYXk6ZmxleDtnYXA6MThweDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47ZmxleC13cmFwOndyYXB9CgogICAgLmZhcSAucXtjdXJzb3I6cG9pbnRlcjtwYWRkaW5nOjE2cHggMThweDtib3JkZXI6MXB4IHNvbGlkICNlZWU7Ym9yZGVyLXJhZGl1czoxNHB4O21hcmdpbjoxMHB4IDA7Zm9udC13ZWlnaHQ6NjAwfQogICAgLmZhcSAuYXtkaXNwbGF5Om5vbmU7cGFkZGluZzowIDE4cHggMTJweCAxOHB4O2NvbG9yOiM0NDR9CgogICAgLmZvcm0tY2FyZHtwb3NpdGlvbjpzdGlja3k7dG9wOjI0cHh9CgogICAgZm9vdGVye2JhY2tncm91bmQ6IzBjMGMwYztjb2xvcjojYmJiO3BhZGRpbmc6MzRweCAwfQogICAgZm9vdGVyIGF7Y29sb3I6I2JiYjt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfQoKICAgIC8qIFRlc3RpbW9uaWFsICovCiAgICAudGVzdGltb25pYWx7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczo3MnB4IDFmcjtnYXA6MTRweDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fQogICAgLnRlc3RpbW9uaWFsIGltZ3t3aWR0aDo3MnB4O2hlaWdodDo3MnB4O2JvcmRlci1yYWRpdXM6NTAlO29iamVjdC1maXQ6Y292ZXI7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1icmFuZCl9CiAgICAudGVzdGltb25pYWwgLndob3tmb250LXdlaWdodDo3MDA7Y29sb3I6dmFyKC0tZGFyayl9CiAgICAudGVzdGltb25pYWwgLndoZXJle2ZvbnQtc2l6ZToxM3B4O2NvbG9yOiM2NjZ9CiAgICAudGVzdGltb25pYWwgLnF1b3Rle21hcmdpbi10b3A6NnB4O2xpbmUtaGVpZ2h0OjEuNTU7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZy1sZWZ0OjI2cHh9CiAgICAudGVzdGltb25pYWwgLnF1b3RlOmJlZm9yZXtjb250ZW50OiLigJwiO2ZvbnQtc2l6ZTo0MHB4O2NvbG9yOnZhcigtLWJyYW5kKTtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOi02cHg7bGluZS1oZWlnaHQ6MX0KICAgIC5zdGFyc3tjb2xvcjojZjViODAwO2ZvbnQtc2l6ZToxNnB4O21hcmdpbi10b3A6NHB4fQoKICAgIEBtZWRpYSAobWF4LXdpZHRoOiA5ODBweCl7CiAgICAgIC5oZXJvLWlubmVye2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnJ9CiAgICAgIC5mb3JtLWNhcmR7cG9zaXRpb246c3RhdGljfQogICAgICAuY29scy0ze2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnJ9CiAgICAgIC5jb2xzLTJ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcn0KICAgICAgLmhlcm8gaDF7Zm9udC1zaXplOjM2cHh9CiAgICB9CiAgPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KICA8IS0tIFRvcCBiYXIgLS0+CiAgPGRpdiBzdHlsZT0iYmFja2dyb3VuZDp2YXIoLS1kYXJrKTtjb2xvcjojZmZmO2ZvbnQtc2l6ZToxMnB4Ij4KICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciIgc3R5bGU9ImRpc3BsYXk6ZmxleDtnYXA6MTJweDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47cGFkZGluZzo4cHggMCI+CiAgICAgIDxkaXY+RXN0YXRlIDIwMjY6IHBvc3RpIGxpbWl0YXRpIHBlciBudW92ZSBzdHJ1dHR1cmUgcGFydG5lcjwvZGl2PgogICAgICA8ZGl2PjxhIGNsYXNzPSJidG4gYnRuLW91dGxpbmUiIGhyZWY9IiNwcmV2ZW50aXZvIj5SaWNoaWVkaSBwcmV2ZW50aXZvPC9hPjwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+CgogIDwhLS0gSEVSTyAtLT4KICA8aGVhZGVyIGNsYXNzPSJoZXJvIj4KICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciBoZXJvLWlubmVyIj4KICAgICAgPGRpdj4KICAgICAgICA8c3BhbiBjbGFzcz0idGFnIj5OdW92byBwYXJ0bmVyIGFuaW1hemlvbmUgwrcgRXN0YXRlIDIwMjY8L3NwYW4+CiAgICAgICAgPGgxPlJpdm9sdXppb25hIGzigJlhbmltYXppb25lIGRlbGxhIHR1YSBzdHJ1dHR1cmE8L2gxPgogICAgICAgIDxwIGNsYXNzPSJzdWIiPlN0YWZmIHNlbGV6aW9uYXRvIGUgZm9ybWF0bywgcHJvZ3JhbW1pIHN1IG1pc3VyYSBwZXIgZmFtaWdsaWUgZSBhZHVsdGksIG1hcmtldGluZyBpbnRlZ3JhdG8uIERhbCAyMDA2IGFsIGZpYW5jbyBkZWxsZSBzdHJ1dHR1cmUgcmljZXR0aXZlLjwvcD4KICAgICAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjEycHg7ZmxleC13cmFwOndyYXA7bWFyZ2luOjE4cHggMCAwIj4KICAgICAgICAgIDxhIGNsYXNzPSJidG4iIGhyZWY9IiNwcmV2ZW50aXZvIj5SaWNoaWVkaSBwcmV2ZW50aXZvPC9hPgogICAgICAgICAgPGEgY2xhc3M9ImJ0biBidG4tb3V0bGluZSIgaHJlZj0iI29mZmVydGEiPlZlZGkgbOKAmW9mZmVydGE8L2E+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ia3BpIj4KICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPjxzdHJvbmc+MjAwNjwvc3Ryb25nPjxzcGFuPkFubm8gZGkgbmFzY2l0YTwvc3Bhbj48L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPjxzdHJvbmc+OTAwbcKyPC9zdHJvbmc+PHNwYW4+U2VkZSBlIG1hZ2F6emlubzwvc3Bhbj48L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPjxzdHJvbmc+K1N0cnV0dHVyZTwvc3Ryb25nPjxzcGFuPlNlcnZpdGUgbmVnbGkgYW5uaTwvc3Bhbj48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8IS0tIEhFUk8gTUVESUEgY29uIGNhcm9zZWxsbyAtLT4KICAgICAgPGRpdiBjbGFzcz0iaGVyby1tZWRpYSI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2xpZGVyIiBhcmlhLXJvbGVkZXNjcmlwdGlvbj0iY2Fyb3VzZWwiPgogICAgICAgICAgPGRpdiBjbGFzcz0ic2xpZGVzIj4KICAgICAgICAgICAgPCEtLSBTbGlkZSAxIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbGlkZSBpcy1hY3RpdmUiPgogICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL3d3dy5oaWRhbGdvYW5pbWF6aW9uZS5pdC93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8xMS80MjI0NjY2NTNfODg3MTEzNDMzNDE3NjM5XzUwNjA0Mjc1NjcxMDkzNjg5OTlfbi5qcGciIAogICAgICAgICAgICAgICAgICAgYWx0PSJSYWdhenppIGFiYnJhY2NpYXRpIGRpIHNwYWxsZSBzdWxsYSBzcGlhZ2dpYSBhbCB0cmFtb250bywgdGVhbSBkaSBhbmltYXppb25lIEhpZGFsZ28iPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPCEtLSBTbGlkZSAyIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbGlkZSI+CiAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vd3d3LmhpZGFsZ29hbmltYXppb25lLml0L3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzExLzQ0MDQxMzkxNV85NTU0MzM1ODY1ODU2MjNfNzE3OTI0MzAxMDAxODg3MTM1NF9uLmpwZyIgCiAgICAgICAgICAgICAgICAgICBhbHQ9IkFuaW1hdG9yaSBIaWRhbGdvIGR1cmFudGUgYXR0aXZpdMOgIGNvbiBnbGkgb3NwaXRpIj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwhLS0gU2xpZGUgMyAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2xpZGUiPgogICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL3d3dy5oaWRhbGdvYW5pbWF6aW9uZS5pdC93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8xMS80MTAwMjA1NDdfODU0ODgxMjgzMzA3NTIxXzYxMjA4OTQxNTgyMjk4MzkwNDdfbi5qcGciIAogICAgICAgICAgICAgICAgICAgYWx0PSJUZWFtIGRpIGFuaW1hemlvbmUgSGlkYWxnbyBpbiBmZXN0YSBjb24gZ2xpIG9zcGl0aSI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8IS0tIEZyZWNjZSAob3B6aW9uYWxpOiBwdW9pIHJpbXVvdmVybGUgc2Ugbm9uIGxlIHZ1b2kpIC0tPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibmF2IHByZXYiIGFyaWEtbGFiZWw9IlNsaWRlIHByZWNlZGVudGUiPuKAuTwvYnV0dG9uPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibmF2IG5leHQiIGFyaWEtbGFiZWw9IlNsaWRlIHN1Y2Nlc3NpdmEiPuKAujwvYnV0dG9uPgogICAgICAgICAgPCEtLSBQYWxsaW5pIC0tPgogICAgICAgICAgPGRpdiBjbGFzcz0iZG90cyIgcm9sZT0idGFibGlzdCIgYXJpYS1sYWJlbD0iU2VsZXR0b3JlIHNsaWRlIj48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDwhLS0gL0hFUk8gTUVESUEgLS0+CiAgICA8L2Rpdj4KICA8L2hlYWRlcj4KCiAgPCEtLSBUUlVTVCAtLT4KICA8ZGl2IGNsYXNzPSJ0cnVzdCI+CiAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICA8ZGl2IGNsYXNzPSJ0cnVzdC1sb2dvcyI+CiAgICAgICAgPCEtLSBTb3N0aXR1aXNjaSBjb24gbG9naGkgcmVhbGkgLS0+CiAgICAgICAgPGltZyBhbHQ9IlBhcnRuZXIgMSIgc3JjPSJodHRwczovL2R1bW15aW1hZ2UuY29tLzI2MHg4MC9mZmZmZmYvYWFhYWFhJnRleHQ9SXRhbHkrRmFtaWx5K0hvdGVscyI+CiAgICAgICAgPGltZyBhbHQ9IlBhcnRuZXIgMiIgc3JjPSJodHRwczovL2R1bW15aW1hZ2UuY29tLzIwMHg4MC9mZmZmZmYvYWFhYWFhJnRleHQ9UmVzb3J0K1BhcnRuZXIiPgogICAgICAgIDxpbWcgYWx0PSJQYXJ0bmVyIDMiIHNyYz0iaHR0cHM6Ly9kdW1teWltYWdlLmNvbS8yNDB4ODAvZmZmZmZmL2FhYWFhYSZ0ZXh0PUJlYWNoK1ZpbGxhZ2UiPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2PgoKICA8bWFpbj4KICAgIDwhLS0gUEVSQ0hFIC8gQVBQUk9DQ0lPIC0tPgogICAgPHNlY3Rpb24gaWQ9InBlcmNoZSI+CiAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciBncmlkIGNvbHMtMiI+CiAgICAgICAgPGRpdj4KICAgICAgICAgIDxoMj5QZXJjaMOpIHZhbHV0YXJlIGlsIGNhbWJpbyBwYXJ0bmVyIG5lbCAyMDI2PC9oMj4KICAgICAgICAgIDxwIGNsYXNzPSJsZWFkIj5TZSBub3RpIGNhbG8gbmVsIGNvaW52b2xnaW1lbnRvIGRlZ2xpIG9zcGl0aSwgc3RhZmYgbm9uIGFsbOKAmWFsdGV6emEgbyBwcm9ncmFtbWkgcmlwZXRpdGl2aSwgw6ggaWwgbW9tZW50byBkaSB1biB1cGdyYWRlIHN0cmF0ZWdpY28uPC9wPgogICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNoZWNrIj48ZGl2IGNsYXNzPSJpY29uIj7inJM8L2Rpdj48ZGl2PlByb2dyYW1taSBwb2NvIGRpZmZlcmVuemlhdGkgcGVyIGZhbWlnbGllLCBhZHVsdGksIGtpZHMgZSB0ZWVuPC9kaXY+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNoZWNrIj48ZGl2IGNsYXNzPSJpY29uIj7inJM8L2Rpdj48ZGl2PkFuaW1hdG9yaSBub24gc2VsZXppb25hdGkgZSBzZW56YSBmb3JtYXppb25lIGNvbnRpbnVhPC9kaXY+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNoZWNrIj48ZGl2IGNsYXNzPSJpY29uIj7inJM8L2Rpdj48ZGl2PlNjYXJzbyBwcmVzaWRpbyBzb2NpYWwgZSBjb250ZW51dGkgcHJvbW96aW9uYWxpPC9kaXY+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNoZWNrIj48ZGl2IGNsYXNzPSJpY29uIj7inJM8L2Rpdj48ZGl2PkNvc3RpIG5vbiB0cmFzcGFyZW50aSBlIHBvY2EgY29uc3VsZW56YTwvZGl2PjwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdj4KICAgICAgICAgIDxoMj5JbCBub3N0cm8gYXBwcm9jY2lvPC9oMj4KICAgICAgICAgIDxwIGNsYXNzPSJsZWFkIj5TZWxlemlvbmUgYWNjdXJhdGEsIGZvcm1hemlvbmUsIHR1dG9yIGRlZGljYXRvIGUgcHJvZ3JhbW1pIHN1IG1pc3VyYS4gSW50ZWdyaWFtbyBncmFmaWNhLCBzb2NpYWwgZSBjb25zdWxlbnphIG1hcmtldGluZyBwZXIgdmFsb3JpenphcmUgaWwgdHVvIGJyYW5kLjwvcD4KICAgICAgICAgIDxkaXYgY2xhc3M9ImdyaWQgY29scy0yIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZCI+PHN0cm9uZz5TZWxlemlvbmUgJiBmb3JtYXppb25lPC9zdHJvbmc+PGJyPjxzcGFuPlJlY3J1aXRpbmcgY29udGludW8gZSBhY2FkZW15IGludGVybmEuPC9zcGFuPjwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkIj48c3Ryb25nPlByb2dyYW1taSBzdSBtaXN1cmE8L3N0cm9uZz48YnI+PHNwYW4+RmFtaWx5LCBhZHVsdCwga2lkcyAmIHRlZW4gY29uIGNhbGVuZGFyaSBkZWRpY2F0aS48L3NwYW4+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQiPjxzdHJvbmc+TWFya2V0aW5nIGludGVncmF0bzwvc3Ryb25nPjxicj48c3Bhbj5Tb2NpYWwsIGdyYWZpY2EgZSBjb250ZW51dGkgYnJhbmRpenphdGkuPC9zcGFuPjwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkIj48c3Ryb25nPkNvbnRyb2xsbyBxdWFsaXTDoDwvc3Ryb25nPjxicj48c3Bhbj5UdXRvciBlIHJlcG9ydGlzdGljYSBkdXJhbnRlIGxhIHN0YWdpb25lLjwvc3Bhbj48L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KCiAgICA8IS0tIE9GRkVSVEEgLS0+CiAgICA8c2VjdGlvbiBpZD0ib2ZmZXJ0YSIgc3R5bGU9ImJhY2tncm91bmQ6dmFyKC0tbXV0ZWQpIj4KICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICA8aDI+T2ZmZXJ0YSBwZXIgU3RydXR0dXJlIHJpY2V0dGl2ZSDigJMgRXN0YXRlIDIwMjY8L2gyPgogICAgICAgIDxwIGNsYXNzPSJsZWFkIj5GYXNjZSBkaSBzdGFmZiBmbGVzc2liaWxpIGUgcGVyc29uYWxpenphYmlsaSwgY29uIGF0dGl2YXppb25lIHJhcGlkYSBlIHN1cHBvcnRvIGNvbnRpbnVvLjwvcD4KICAgICAgICA8ZGl2IGNsYXNzPSJncmlkIGNvbHMtMyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkIj4KICAgICAgICAgICAgPGgzPlNpbHZlcjwvaDM+CiAgICAgICAgICAgIDxwPlNxdWFkcmEgZXNzZW56aWFsZSBwZXIgaW50cmF0dGVuaW1lbnRvIGRpdXJuby9zZXJhbGUuIElkZWFsZSBwZXIgc3RydXR0dXJlIG1lZGlvLXBpY2NvbGUuPC9wPgogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgPGxpPlRlYW0gYmFzZSAoZXMuIDLigJMzIGFuaW1hdG9yaSk8L2xpPgogICAgICAgICAgICAgIDxsaT5DYWxlbmRhcmlvIGF0dGl2aXTDoCBzdGFuZGFyZDwvbGk+CiAgICAgICAgICAgICAgPGxpPk1hdGVyaWFsaSBiYXNlPC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZCIgc3R5bGU9ImJvcmRlcjoycHggc29saWQgdmFyKC0tYnJhbmQpIj4KICAgICAgICAgICAgPGgzPkdvbGQgPHNwYW4gY2xhc3M9InRhZyIgc3R5bGU9Im1hcmdpbi1sZWZ0OjZweCI+Q29uc2lnbGlhdG88L3NwYW4+PC9oMz4KICAgICAgICAgICAgPHA+RXF1aWxpYnJpbyB0cmEgc3RhZmYsIHNob3cgZSBtYXJrZXRpbmcgaW50ZWdyYXRvLiBQZXIgcmVzb3J0IGUgdmlsbGFnZ2kgZmFtaWx5LjwvcD4KICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgIDxsaT5UZWFtIGNvbXBsZXRvIChlcy4gNOKAkzYgYW5pbWF0b3JpKTwvbGk+CiAgICAgICAgICAgICAgPGxpPlByb2dyYW1taSBmYW1pbHkgJiBzaG93PC9saT4KICAgICAgICAgICAgICA8bGk+U29jaWFsIGtpdCBlIGdyYWZpY2EgZGVkaWNhdGE8L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkIj4KICAgICAgICAgICAgPGgzPkRpYW1vbmQ8L2gzPgogICAgICAgICAgICA8cD5Fc3BlcmllbnphIHRvcCBjb24gc2hvdywgZ3Vlc3QgZXhwZXJpZW5jZSBlIHByb2R1emlvbmUgY29udGVudXRpIHByZW1pdW0uPC9wPgogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgPGxpPlRlYW0gYXZhbnphdG8gKDYrIGFuaW1hdG9yaSk8L2xpPgogICAgICAgICAgICAgIDxsaT5Gb3JtYXQgZXNjbHVzaXZpICYgZ3Vlc3QgZXhwZXJpZW5jZTwvbGk+CiAgICAgICAgICAgICAgPGxpPlByb2R1emlvbmUgY29udGVudXRpIHByZW1pdW08L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgoKICAgIDwhLS0gUFJPQ0VTU08gKyBGT1JNIChUVU8gWm9obyBXZWItdG8tTGVhZCkgLS0+CiAgICA8c2VjdGlvbiBpZD0icHJvY2Vzc28iPgogICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIgZ3JpZCBjb2xzLTIiPgogICAgICAgIDxkaXY+CiAgICAgICAgICA8aDI+Q29tZSBmdW56aW9uYTwvaDI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJncmlkIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvY2VzcyBjYXJkIHN0ZXAiPjxkaXYgY2xhc3M9Im51bSI+MTwvZGl2PjxkaXY+PHN0cm9uZz5CcmllZjwvc3Ryb25nPjxicj5DaSByYWNjb250aSBsYSBzdHJ1dHR1cmEsIGdsaSBvYmlldHRpdmkgZSBsYSBzdGFnaW9uZSAyMDI2LjwvZGl2PjwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9jZXNzIGNhcmQgc3RlcCI+PGRpdiBjbGFzcz0ibnVtIj4yPC9kaXY+PGRpdj48c3Ryb25nPkF1ZGl0IGdyYXR1aXRvPC9zdHJvbmc+PGJyPkFuYWxpc2kgZGVsbGEgc2l0dWF6aW9uZSBhdHR1YWxlIGUgcHJvcG9zdGEgcGVyc29uYWxpenphdGEuPC9kaXY+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2Nlc3MgY2FyZCBzdGVwIj48ZGl2IGNsYXNzPSJudW0iPjM8L2Rpdj48ZGl2PjxzdHJvbmc+QXR0aXZhemlvbmU8L3N0cm9uZz48YnI+U2VsZXppb25lIHN0YWZmLCBjYWxlbmRhcmlvIGF0dGl2aXTDoCBlIGtpY2stb2ZmLjwvZGl2PjwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9jZXNzIGNhcmQgc3RlcCI+PGRpdiBjbGFzcz0ibnVtIj40PC9kaXY+PGRpdj48c3Ryb25nPk1vbml0b3JhZ2dpbzwvc3Ryb25nPjxicj5UdXRvciBkZWRpY2F0byBlIHJlcG9ydCBkdXJhbnRlIGxhIHN0YWdpb25lLjwvZGl2PjwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgaWQ9InByZXZlbnRpdm8iIGNsYXNzPSJmb3JtLWNhcmQgY2FyZCI+CiAgICAgICAgICA8aDMgc3R5bGU9Im1hcmdpbi10b3A6MCI+UmljaGllZGkgdW4gcHJldmVudGl2bzwvaDM+CiAgICAgICAgICA8cCBjbGFzcz0ibGVhZCIgc3R5bGU9ImZvbnQtc2l6ZToxNXB4Ij5Db21waWxhIGlsIGZvcm06IHRpIGNvbnRhdHRlcmVtbyBlbnRybyAyNOKAkzQ4aCBjb24gdW5hIHByb3Bvc3RhIHBlciBsYSBzdGFnaW9uZSAyMDI2LjwvcD4KCiAgICAgICAgICA8IS0tID09PT0gSU5JWklPOiBUVU8gV0VCLVRPLUxFQUQgWk9ITyAoRG8gbm90IHJlbW92ZSBsaW5lcykgPT09PSAtLT4KICAgICAgICAgIDxkaXYgaWQgPSAnY3JtV2ViVG9FbnRpdHlGb3JtJyBjbGFzcyA9ICd6Y3dmX2xibExlZnQgY3JtV2ViVG9FbnRpdHlGb3JtJyBzdHlsZSA9ICdiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtjb2xvcjogYmxhY2s7bWF4LXdpZHRoOiA2MDBweDsnPgogICAgICAgICAgICA8bWV0YSBuYW1lID0gJ3ZpZXdwb3J0JyBjb250ZW50ID0gJ3dpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAnPgogICAgICAgICAgICA8bWV0YSBodHRwLWVxdWl2ID0gJ2NvbnRlbnQtdHlwZScgY29udGVudCA9ICd0ZXh0L2h0bWw7Y2hhcnNldD1VVEYtOCc+CiAgICAgICAgICAgIDxmb3JtIGlkID0gJ3dlYmZvcm05MTM5NzgwMDAwMDA1MzIxMDInIGFjdGlvbiA9ICdodHRwczovL2NybS56b2hvLmV1L2NybS9XZWJUb0xlYWRGb3JtJyBuYW1lID0gJ1dlYlRvTGVhZHM5MTM5NzgwMDAwMDA1MzIxMDInIG1ldGhvZCA9ICdQT1NUJyBvbnN1Ym1pdCA9ICdqYXZhc2NyaXB0OmRvY3VtZW50LmNoYXJzZXQ9IlVURi04IjsgcmV0dXJuIGNoZWNrTWFuZGF0b3J5OTEzOTc4MDAwMDAwNTMyMTAyKCknIGFjY2VwdC1jaGFyc2V0ID0gJ1VURi04Jz4KICAgICAgICAgICAgICA8aW5wdXQgdHlwZSA9ICd0ZXh0JyBzdHlsZSA9ICdkaXNwbGF5Om5vbmU7JyBuYW1lID0gJ3huUXNqc2RwJyB2YWx1ZSA9ICczNzg5M2E2YmEwYmI5MmI5ZTRlNDUwZGQ5ZmQ2ZmE0MTM0N2VmOTVhMGFiOTgzMzI3MGYyNjIxMTViMDVkYjQ0Jz4KICAgICAgICAgICAgICA8aW5wdXQgdHlwZSA9ICdoaWRkZW4nIG5hbWUgPSAnemNfZ2FkJyBpZCA9ICd6Y19nYWQnIHZhbHVlID0gJyc+CiAgICAgICAgICAgICAgPGlucHV0IHR5cGUgPSAndGV4dCcgc3R5bGUgPSAnZGlzcGxheTpub25lOycgbmFtZSA9ICd4bUl3dExEJyB2YWx1ZSA9ICc5NzI4YzM5MDk3MjRlMTIxNThjZmQwYzc1NzhkYmVhMmRhODQyZmFiOTk4YzEzMWY4ZTk3MDk2NzkzOGQ5YjFjNGQ5ZjNhMzFjMTI5MjY2Yzk5YzI3Y2Y2MzkyM2MxMDAnPgogICAgICAgICAgICAgIDxpbnB1dCB0eXBlID0gJ3RleHQnIHN0eWxlID0gJ2Rpc3BsYXk6bm9uZTsnIG5hbWUgPSAnYWN0aW9uVHlwZScgdmFsdWUgPSAnVEdWaFpITT0nPgogICAgICAgICAgICAgIDwhLS0gUkVUVVJOIFVSTCB2ZXJzbyBUaGFuay15b3UgY29uIEdBNCAtLT4KICAgICAgICAgICAgICA8aW5wdXQgdHlwZSA9ICd0ZXh0JyBzdHlsZSA9ICdkaXNwbGF5Om5vbmU7JyBuYW1lID0gJ3JldHVyblVSTCcgdmFsdWUgPSAnaHR0cHM6Ly93d3cuaGlkYWxnb2FuaW1hemlvbmUuaXQvZ3JhemllLXByZXZlbnRpdm8tMjAyNi8nPgogICAgICAgICAgICAgIDwhLS0gRG8gbm90IHJlbW92ZSB0aGlzIGNvZGUuIC0tPgogICAgICAgICAgICAgIDxzdHlsZT4KICAgICAgICAgICAgICAgIGh0bWwsYm9keXttYXJnaW46MHB4O30KICAgICAgICAgICAgICAgIC5mb3Jtc3VibWl0Lnpjd2ZfYnV0dG9ue2NvbG9yOiNmZmYgIWltcG9ydGFudDtiYWNrZ3JvdW5kOnZhcigtLWJyYW5kKSAhaW1wb3J0YW50O30KICAgICAgICAgICAgICAgICNjcm1XZWJUb0VudGl0eUZvcm0uemN3Zl9sYmxMZWZ0e3dpZHRoOjEwMCU7cGFkZGluZzowO21hcmdpbjowIGF1dG87Ym94LXNpemluZzpib3JkZXItYm94O30KICAgICAgICAgICAgICAgICNjcm1XZWJUb0VudGl0eUZvcm0uemN3Zl9sYmxMZWZ0ICp7Ym94LXNpemluZzpib3JkZXItYm94O30KICAgICAgICAgICAgICAgICNjcm1XZWJUb0VudGl0eUZvcm0ge3RleHQtYWxpZ246bGVmdDt9CiAgICAgICAgICAgICAgICAjY3JtV2ViVG9FbnRpdHlGb3JtICp7ZGlyZWN0aW9uOmx0cjt9CiAgICAgICAgICAgICAgICAuemN3Zl9sYmxMZWZ0IC56Y3dmX3RpdGxle3dvcmQtd3JhcDpicmVhay13b3JkO3BhZGRpbmc6MCA2cHggMTBweDtmb250LXdlaWdodDpib2xkfQogICAgICAgICAgICAgICAgLnpjd2ZfbGJsTGVmdCAuemN3Zl9jb2xfZmxkIGlucHV0W3R5cGU9dGV4dF0sIGlucHV0W3R5cGU9cGFzc3dvcmRdLCAuemN3Zl9sYmxMZWZ0IC56Y3dmX2NvbF9mbGQgdGV4dGFyZWF7d2lkdGg6MTAwJTtib3JkZXI6MXB4IHNvbGlkICNjMGM2Y2MgIWltcG9ydGFudDtyZXNpemU6dmVydGljYWw7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MTJweH0KICAgICAgICAgICAgICAgIC56Y3dmX2xibExlZnQgLnpjd2ZfY29sX2xhYnt3aWR0aDoxMDAlO3BhZGRpbmc6MCA2cHggNnB4O21hcmdpbi10b3A6NXB4fQogICAgICAgICAgICAgICAgLnpjd2ZfbGJsTGVmdCAuemN3Zl9jb2xfZmxke3dpZHRoOjEwMCU7cGFkZGluZzowIDZweCAwO3Bvc2l0aW9uOnJlbGF0aXZlO21hcmdpbi10b3A6NXB4fQogICAgICAgICAgICAgICAgLnpjd2ZfbGJsTGVmdCAuemN3Zl9yb3d7bWFyZ2luOjEwcHggMH0KICAgICAgICAgICAgICAgIC56Y3dmX2xibExlZnQgLnpjd2ZfYnV0dG9ue2ZvbnQtc2l6ZToxNHB4O2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjEwcHggMTZweH0KICAgICAgICAgICAgICAgIC56Y3dmX2xibExlZnQgLnpjd2ZfcHJpdmFjeV90eHR7d2lkdGg6OTAlO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OkFyaWFsO2NvbG9yOiMzMTM5NDk7ZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246dG9wO3BhZGRpbmctdG9wOjJweDttYXJnaW4tbGVmdDo2cHg7fQogICAgICAgICAgICAgIDwvc3R5bGU+CgogICAgICAgICAgICAgIDxkaXYgY2xhc3MgPSAnemN3Zl90aXRsZScgc3R5bGUgPSAnbWF4LXdpZHRoOiA2MDBweDtjb2xvcjogYmxhY2s7IGZvbnQtZmFtaWx5OkFyaWFsOyc+RXN0YXRlIDIwMjY8L2Rpdj4KCiAgICAgICAgICAgICAgPGRpdiBjbGFzcyA9ICd6Y3dmX3Jvdyc+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzID0gJ3pjd2ZfY29sX2xhYicgc3R5bGUgPSAnZm9udC1zaXplOjEycHg7IGZvbnQtZmFtaWx5OiBBcmlhbDsnPgogICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yID0gJ0NvbXBhbnknPlN0cnV0dHVyYSA8c3BhbiBzdHlsZSA9ICdjb2xvcjpyZWQ7Jz4qPC9zcGFuPjwvbGFiZWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3MgPSAnemN3Zl9jb2xfZmxkJz4KICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGUgPSAndGV4dCcgaWQgPSAnQ29tcGFueScgbmFtZSA9ICdDb21wYW55JyBtYXhsZW5ndGggPSAnMjAwJyBhcmlhLXJlcXVpcmVkID0gJ3RydWUnIGFyaWEtbGFiZWwgPSAnQ29tcGFueSc+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgPGRpdiBjbGFzcyA9ICd6Y3dmX3Jvdyc+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzID0gJ3pjd2ZfY29sX2xhYicgc3R5bGUgPSAnZm9udC1zaXplOjEycHg7IGZvbnQtZmFtaWx5OiBBcmlhbDsnPgogICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yID0gJ0xhc3RfTmFtZSc+UmVmZXJlbnRlIDxzcGFuIHN0eWxlID0gJ2NvbG9yOnJlZDsnPio8L3NwYW4+PC9sYWJlbD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcyA9ICd6Y3dmX2NvbF9mbGQnPgogICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZSA9ICd0ZXh0JyBpZCA9ICdMYXN0X05hbWUnIG5hbWUgPSAnTGFzdCBOYW1lJyBtYXhsZW5ndGggPSAnODAnIGFyaWEtcmVxdWlyZWQgPSAndHJ1ZScgYXJpYS1sYWJlbCA9ICdMYXN0IE5hbWUnPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgIDxkaXYgY2xhc3MgPSAnemN3Zl9yb3cnPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcyA9ICd6Y3dmX2NvbF9sYWInIHN0eWxlID0gJ2ZvbnQtc2l6ZToxMnB4OyBmb250LWZhbWlseTogQXJpYWw7Jz4KICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvciA9ICdFbWFpbCc+RS1tYWlsIDxzcGFuIHN0eWxlID0gJ2NvbG9yOnJlZDsnPio8L3NwYW4+PC9sYWJlbD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcyA9ICd6Y3dmX2NvbF9mbGQnPgogICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZSA9ICd0ZXh0JyBmdHlwZSA9ICdlbWFpbCcgYXV0b2NvbXBsZXRlID0gJ2ZhbHNlJyBpZCA9ICdFbWFpbCcgbmFtZSA9ICdFbWFpbCcgbWF4bGVuZ3RoID0gJzEwMCcgYXJpYS1yZXF1aXJlZCA9ICd0cnVlJyBhcmlhLWxhYmVsID0gJ0VtYWlsJz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICA8ZGl2IGNsYXNzID0gJ3pjd2Zfcm93Jz4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3MgPSAnemN3Zl9jb2xfbGFiJyBzdHlsZSA9ICdmb250LXNpemU6MTJweDsgZm9udC1mYW1pbHk6IEFyaWFsOyc+CiAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3IgPSAnUGhvbmUnPkNvbnRhdHRvIFRlbGVmb25pY28gPHNwYW4gc3R5bGUgPSAnY29sb3I6cmVkOyc+Kjwvc3Bhbj48L2xhYmVsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzID0gJ3pjd2ZfY29sX2ZsZCc+CiAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlID0gJ3RleHQnIGlkID0gJ1Bob25lJyBuYW1lID0gJ1Bob25lJyBtYXhsZW5ndGggPSAnMzAnIGFyaWEtcmVxdWlyZWQgPSAndHJ1ZScgYXJpYS1sYWJlbCA9ICdQaG9uZSc+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgPGRpdiBjbGFzcyA9ICd6Y3dmX3Jvdyc+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzID0gJ3pjd2ZfY29sX2xhYicgc3R5bGUgPSAnZm9udC1zaXplOjEycHg7IGZvbnQtZmFtaWx5OiBBcmlhbDsnPgogICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yID0gJ0NpdHknPkNpdHQmYWdyYXZlOzwvbGFiZWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3MgPSAnemN3Zl9jb2xfZmxkJz4KICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGUgPSAndGV4dCcgaWQgPSAnQ2l0eScgbmFtZSA9ICdDaXR5JyBtYXhsZW5ndGggPSAnMTAwJyBhcmlhLWxhYmVsID0gJ0NpdHknPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgIDxkaXYgY2xhc3MgPSAnemN3Zl9yb3cnPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcyA9ICd6Y3dmX2NvbF9sYWInIHN0eWxlID0gJ2ZvbnQtc2l6ZToxMnB4OyBmb250LWZhbWlseTogQXJpYWw7Jz4KICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvciA9ICdEZXNjcmlwdGlvbic+RGVzY3JpemlvbmU8L2xhYmVsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzID0gJ3pjd2ZfY29sX2ZsZCc+CiAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBpZCA9ICdEZXNjcmlwdGlvbicgbmFtZSA9ICdEZXNjcmlwdGlvbicgcm93cz0iNCIgc3R5bGUgPSAnZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmOyc+PC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICA8ZGl2IGNsYXNzID0gJ3pjd2Zfcm93Jz4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3MgPSAnemN3Zl9wcml2YWN5Jz4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcyA9ICdkSUIgdmFUJyBhbGlnbiA9ICdsZWZ0Jz4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzID0gJ2Rpc3BsYXlQdXJwb3NlIGNybS1zbWFsbC1mb250LXNpemUnPgogICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzID0gJ25ld0N1c3RvbWNoa2JveC1tZCBkSUIgdzEwMF9wZXInPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlID0gJ29mZicgaWQgPSAncHJpdmFjeVRvb2w5MTM5NzgwMDAwMDA1MzIxMDInIHR5cGUgPSAnY2hlY2tib3gnIGFyaWEtY2hlY2tlZCA9ICdmYWxzZScgbmFtZSA9ICcnIGFyaWEtZXJyb3JtZXNzYWdlID0gJ3ByaXZhY3lFcnI5MTM5NzgwMDAwMDA1MzIxMDInIGFyaWEtbGFiZWwgPSAncHJpdmFjeVRvb2wnIG9uY2xpY2sgPSAnZGlzYWJsZUVycjkxMzk3ODAwMDAwMDUzMjEwMigpJz4KICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzID0gJ2RJQiB6Y3dmX3ByaXZhY3lfdHh0Jz4KICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlID0gJ2ZvbnQtZmFtaWx5OlZlcmRhbmEsIGFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYnPkFjY29uc2VudG8gYWwgdHJhdHRhbWVudG8gZGVpIGRhdGkuPC9kaXY+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2IGlkID0gJ3ByaXZhY3lFcnI5MTM5NzgwMDAwMDA1MzIxMDInIGFyaWEtbGl2ZSA9ICdwb2xpdGUnIHN0eWxlID0gJ2ZvbnQtc2l6ZToxMnB4O2NvbG9yOnJlZDtwYWRkaW5nLWxlZnQ6IDVweDt2aXNpYmlsaXR5OmhpZGRlbjsnPlRpIGNoaWVkaWFtbyBkaSBhY2NldHRhcmU8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICA8aW5wdXQgdHlwZSA9ICd0ZXh0JyB0eXBlID0gJ2hpZGRlbicgc3R5bGUgPSAnZGlzcGxheTogbm9uZTsnIG5hbWUgPSAnYUc5dVpYbHdiM1EnIHZhbHVlID0gJycvPgogICAgICAgICAgICAgIDxkaXYgY2xhc3MgPSAnemN3Zl9yb3cnPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcyA9ICd6Y3dmX2NvbF9sYWInPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcyA9ICd6Y3dmX2NvbF9mbGQnPgogICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZSA9ICdzdWJtaXQnIGlkID0gJ2Zvcm1zdWJtaXQnIHJvbGUgPSAnYnV0dG9uJyBjbGFzcyA9ICdmb3Jtc3VibWl0IHpjd2ZfYnV0dG9uJyB2YWx1ZSA9ICdDb25mZXJtYScgYXJpYS1sYWJlbCA9ICdDb25mZXJtYScgdGl0bGUgPSAnQ29uZmVybWEnPgogICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZSA9ICdyZXNldCcgY2xhc3MgPSAnemN3Zl9idXR0b24nIHJvbGUgPSAnYnV0dG9uJyBuYW1lID0gJ3Jlc2V0JyB2YWx1ZSA9ICdSaXByaXN0aW5hJyBhcmlhLWxhYmVsID0gJ1JpcHJpc3RpbmEnIHRpdGxlID0gJ1JpcHJpc3RpbmEnPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgIDwhLS0gRG8gbm90IHJlbW92ZSB0aGlzIC0tLSBBbmFseXRpY3MgVHJhY2tpbmcgY29kZSBzdGFydHMgLS0+CiAgICAgICAgICAgICAgPHNjcmlwdCBpZCA9ICd3Zl9hbmFsJyBzcmMgPSAnaHR0cHM6Ly9jcm0uem9ob3B1YmxpYy5ldS9jcm0vV2ViRm9ybUFuYWx5dGljc1NlcnZlU2VydmxldD9yaWQ9YzVlZDYzNjZjNzYxNWQ5MmU2ZjY5NTkxOGFhMGVlYmU4MDczY2E4MDYyNjI2ZjBhNDIwZDBmZmUwMzU0ZDIyOWNjNDlhMTcxMzg1NzIyN2Y0YjdjMjJjMzA3YTA2ODA0Z2lkY2UwNWMzMGQ0ODlhOTQ4MTE4NDJkYWIzNTY4Zjk0YTEyODIwYzA4NTcyY2RmM2IyODNjZDNmYzg0YTg5ZTE1Y2dpZDRjNjRkMDVhYzk0MzRhY2NlOWZjMDk1OTQzODlhZDcwMTBlMTZhZTQ2NmNmMmFhMmNkY2MzZWYwOGEwNTYxMGFnaWQwNTIzMWFkZTUwMjZjYzc0MmVjMzVkMTE0MTRhZjMwNjMxYWVlM2U1ODU5NzgwNTE4YTllMGY0NGZmMmZkMTA3JnR3PTM5MWUxMzIzNWIzMDk4ZGQwNDYzOGJjZjExYzIxNzAwNWU1MjhiZTNiYmE0ZmQwMDVmODg4YmQxNGQ2YTZlYzUnPjwvc2NyaXB0PgogICAgICAgICAgICAgIDwhLS0gRG8gbm90IHJlbW92ZSB0aGlzIC0tLSBBbmFseXRpY3MgVHJhY2tpbmcgY29kZSBlbmRzLiAtLT4KCiAgICAgICAgICAgICAgPCEtLSBTY3JpcHQgdmFsaWRhemlvbmUgWm9obyAoRG8gbm90IHJlbW92ZSkgLS0+CiAgICAgICAgICAgICAgPHNjcmlwdD4KICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHByaXZhY3lBbGVydDkxMzk3ODAwMDAwMDUzMjEwMiAoKXsKICAgICAgICAgICAgICAgICAgdmFyIHByaXZhY3lUb29sID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQgKCAncHJpdmFjeVRvb2w5MTM5NzgwMDAwMDA1MzIxMDInICk7CiAgICAgICAgICAgICAgICAgIHZhciBwcml2YWN5RXJyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQgKCAncHJpdmFjeUVycjkxMzk3ODAwMDAwMDUzMjEwMicgKTsKICAgICAgICAgICAgICAgICAgaWYoIHByaXZhY3lUb29sICE9IHVuZGVmaW5lZCAmJiAhcHJpdmFjeVRvb2wuY2hlY2tlZCApewogICAgICAgICAgICAgICAgICAgIHByaXZhY3lFcnIuc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNpYmxlJzsKICAgICAgICAgICAgICAgICAgICBwcml2YWN5VG9vbC5hcmlhSW52YWxpZCA9ICd0cnVlJzsKICAgICAgICAgICAgICAgICAgICBwcml2YWN5VG9vbC5mb2N1cyAoKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmdW5jdGlvbiBkaXNhYmxlRXJyOTEzOTc4MDAwMDAwNTMyMTAyICgpewogICAgICAgICAgICAgICAgICB2YXIgcHJpdmFjeVRvb2wgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCAoICdwcml2YWN5VG9vbDkxMzk3ODAwMDAwMDUzMjEwMicgKTsKICAgICAgICAgICAgICAgICAgdmFyIHByaXZhY3lFcnIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCAoICdwcml2YWN5RXJyOTEzOTc4MDAwMDAwNTMyMTAyJyApOwogICAgICAgICAgICAgICAgICBpZiggcHJpdmFjeVRvb2wgIT0gdW5kZWZpbmVkICYmIHByaXZhY3lUb29sLmNoZWNrZWQgJiYgcHJpdmFjeUVyciAhPSB1bmRlZmluZWQgKXsKICAgICAgICAgICAgICAgICAgICBwcml2YWN5RXJyLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJzsKICAgICAgICAgICAgICAgICAgICBwcml2YWN5VG9vbC5hcmlhSW52YWxpZCA9ICdmYWxzZSc7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHZhbGlkYXRlRW1haWw5MTM5NzgwMDAwMDA1MzIxMDIgKCl7CiAgICAgICAgICAgICAgICAgIHZhciBmb3JtID0gZG9jdW1lbnQuZm9ybXNbICdXZWJUb0xlYWRzOTEzOTc4MDAwMDAwNTMyMTAyJyBdOwogICAgICAgICAgICAgICAgICB2YXIgZW1haWxGbGQgPSBmb3JtLnF1ZXJ5U2VsZWN0b3JBbGwgKCAnW2Z0eXBlPWVtYWlsXScgKTsKICAgICAgICAgICAgICAgICAgdmFyIGk7CiAgICAgICAgICAgICAgICAgIGZvciggaSA9IDA7IGkgPCBlbWFpbEZsZC5sZW5ndGg7IGkrKyApewogICAgICAgICAgICAgICAgICAgIHZhciBlbWFpbFZhbCA9IGVtYWlsRmxkWyBpIF0udmFsdWU7CiAgICAgICAgICAgICAgICAgICAgaWYoKGVtYWlsVmFsLnJlcGxhY2UoIC9eXHMrfFxzKyQvZywnJyApKS5sZW5ndGggIT0gMCApewogICAgICAgICAgICAgICAgICAgICAgdmFyIGF0cG9zID0gZW1haWxWYWwuaW5kZXhPZiAoICdAJyApOwogICAgICAgICAgICAgICAgICAgICAgdmFyIGRvdHBvcyA9IGVtYWlsVmFsLmxhc3RJbmRleE9mICggJy4nICk7CiAgICAgICAgICAgICAgICAgICAgICBpZiggYXRwb3MgPCAxIHx8IGRvdHBvcyA8IGF0cG9zICsgMiB8fCBkb3Rwb3MgKyAyID49IGVtYWlsVmFsLmxlbmd0aCApewogICAgICAgICAgICAgICAgICAgICAgICBhbGVydCAoICdJbnNlcmlyZSB1biBpbmRpcml6em8gZS1tYWlsIHZhbGlkby4gJyApOwogICAgICAgICAgICAgICAgICAgICAgICBlbWFpbEZsZFsgaSBdLmZvY3VzICgpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2tNYW5kYXRvcnk5MTM5NzgwMDAwMDA1MzIxMDIgKCl7CiAgICAgICAgICAgICAgICAgIHZhciBtbmRGaWxlZHMgPSBuZXcgQXJyYXkgKCAnQ29tcGFueScsICdMYXN0IE5hbWUnLCAnRW1haWwnLCAnUGhvbmUnICk7CiAgICAgICAgICAgICAgICAgIHZhciBmbGRMYW5nVmFsID0gbmV3IEFycmF5ICggJ1N0cnV0dHVyYScsICdSZWZlcmVudGUnLCAnRVx4MkRtYWlsJywgJ0NvbnRhdHRvXHgyMFRlbGVmb25pY28nICk7CiAgICAgICAgICAgICAgICAgIGZvciggaSA9IDA7IGkgPCBtbmRGaWxlZHMubGVuZ3RoOyBpKysgKXsKICAgICAgICAgICAgICAgICAgICB2YXIgZmllbGRPYmogPSBkb2N1bWVudC5mb3Jtc1sgJ1dlYlRvTGVhZHM5MTM5NzgwMDAwMDA1MzIxMDInIF1bIG1uZEZpbGVkc1sgaSBdXTsKICAgICAgICAgICAgICAgICAgICBpZiggZmllbGRPYmogKXsKICAgICAgICAgICAgICAgICAgICAgIGlmKCgoZmllbGRPYmoudmFsdWUgKS5yZXBsYWNlKCAvXlxzK3xccyskL2csJycgKSkubGVuZ3RoID09IDAgKXsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoIGZpZWxkT2JqLnR5cGUgPT0gJ2ZpbGUnICl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYWxlcnQgKCAnU2VsZXppb25hcmUgdW4gZmlsZSBkYSBjYXJpY2FyZS4nICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRPYmouZm9jdXMgKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0ICggZmxkTGFuZ1ZhbFsgaSBdICsgJyBub24gcHXDsiBlc3NlcmUgdnVvdG8uJyApOwogICAgICAgICAgICAgICAgICAgICAgICBmaWVsZE9iai5mb2N1cyAoKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiggZmllbGRPYmoubm9kZU5hbWUgPT0gJ1NFTEVDVCcgKXsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoIGZpZWxkT2JqLm9wdGlvbnNbZmllbGRPYmouc2VsZWN0ZWRJbmRleF0udmFsdWUgPT0gJy1Ob25lLScgKXsKICAgICAgICAgICAgICAgICAgICAgICAgICBhbGVydCAoIGZsZExhbmdWYWxbIGkgXSArICcgbm9uIHB1w7IgZXNzZXJlIG5lc3N1bm8uJyApOwogICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkT2JqLmZvY3VzICgpOwogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiggZmllbGRPYmoudHlwZSA9PSAnY2hlY2tib3gnICl7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBmaWVsZE9iai5jaGVja2VkID09IGZhbHNlICl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYWxlcnQgKCAnUGxlYXNlIGFjY2VwdCAgJyArIGZsZExhbmdWYWxbIGkgXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRPYmouZm9jdXMgKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiggZmllbGRPYmoubmFtZSA9PSAnTGFzdCBOYW1lJyApewogICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBmaWVsZE9iai52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKCBlICl7fQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiggIXZhbGlkYXRlRW1haWw5MTM5NzgwMDAwMDA1MzIxMDIoKSl7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmKCAhcHJpdmFjeUFsZXJ0OTEzOTc4MDAwMDAwNTMyMTAyKCkpewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB2YXIgdXJscGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyAoIHdpbmRvdy5sb2NhdGlvbi5zZWFyY2ggKTsKICAgICAgICAgICAgICAgICAgaWYoIHVybHBhcmFtcy5oYXMoICdzZXJ2aWNlJyApICYmICggdXJscGFyYW1zLmdldCggJ3NlcnZpY2UnICkgPT09ICdzbWFydHVybCcgKSl7CiAgICAgICAgICAgICAgICAgICAgdmFyIHdlYmZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCAoICd3ZWJmb3JtOTEzOTc4MDAwMDAwNTMyMTAyJyApOwogICAgICAgICAgICAgICAgICAgIHZhciBzZXJ2aWNlID0gdXJscGFyYW1zLmdldCAoICdzZXJ2aWNlJyApOwogICAgICAgICAgICAgICAgICAgIHZhciBzbWFydHVybGZpZWxkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCAoICdpbnB1dCcgKTsKICAgICAgICAgICAgICAgICAgICBzbWFydHVybGZpZWxkLnNldEF0dHJpYnV0ZSAoICd0eXBlJywgJ2hpZGRlbicgKTsKICAgICAgICAgICAgICAgICAgICBzbWFydHVybGZpZWxkLnNldEF0dHJpYnV0ZSAoICd2YWx1ZScsIHNlcnZpY2UgKTsKICAgICAgICAgICAgICAgICAgICBzbWFydHVybGZpZWxkLnNldEF0dHJpYnV0ZSAoICduYW1lJywgJ3NlcnZpY2UnICk7CiAgICAgICAgICAgICAgICAgICAgd2ViZm9ybS5hcHBlbmRDaGlsZCAoIHNtYXJ0dXJsZmllbGQgKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yICggJy5jcm1XZWJUb0VudGl0eUZvcm0gLmZvcm1zdWJtaXQnICkuc2V0QXR0cmlidXRlICggJ2Rpc2FibGVkJywgdHJ1ZSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZnVuY3Rpb24gdG9vbHRpcFNob3c5MTM5NzgwMDAwMDA1MzIxMDIgKCBlbCApewogICAgICAgICAgICAgICAgICB2YXIgdG9vbHRpcCA9IGVsLm5leHRFbGVtZW50U2libGluZzsKICAgICAgICAgICAgICAgICAgdmFyIHRvb2x0aXBEaXNwbGF5ID0gdG9vbHRpcC5zdHlsZS5kaXNwbGF5OwogICAgICAgICAgICAgICAgICBpZiggdG9vbHRpcERpc3BsYXkgPT0gJ25vbmUnICl7CiAgICAgICAgICAgICAgICAgICAgdmFyIGFsbFRvb2x0aXAgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICggJ3pjd2ZfdG9vbHRpcF9vdmVyJyApOwogICAgICAgICAgICAgICAgICAgIGZvciggaSA9IDA7IGkgPCBhbGxUb29sdGlwLmxlbmd0aDsgaSsrICl7CiAgICAgICAgICAgICAgICAgICAgICBhbGxUb29sdGlwWyBpIF0uc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0b29sdGlwLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICA8L3NjcmlwdD4KICAgICAgICAgICAgICA8IS0tIERvIG5vdCByZW1vdmUgLS0+CiAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPCEtLSA9PT09IEZJTkU6IFdFQi1UTy1MRUFEIFpPSE8gPT09PSAtLT4KCiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgoKICAgIDwhLS0gVEVTVElNT05JQU5aRSAtLT4KICAgIDxzZWN0aW9uPgogICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICAgIDxoMj5SaXN1bHRhdGkgJiB0ZXN0aW1vbmlhbnplPC9oMj4KICAgICAgICA8cCBjbGFzcz0ibGVhZCI+TGUgcGFyb2xlIGRlbGxlIHN0cnV0dHVyZSBjaGUgaGFubm8gc2NlbHRvIEhpZGFsZ28gQW5pbWF6aW9uZSBlIGkgc3VvaSBhbmltYXRvcmkgcXVhbGlmaWNhdGkgcGVyIGRhcmUgbnVvdmEgZW5lcmdpYSBhbGxlIGxvcm8gdmFjYW56ZS48L3A+CiAgICAgICAgPGRpdiBjbGFzcz0iZ3JpZCBjb2xzLTMiPgogICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRlc3RpbW9uaWFsIj4KICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly93d3cuaGlkYWxnb2FuaW1hemlvbmUuaXQvd3AtY29udGVudC91cGxvYWRzLzIwMjUvMTEvdGVzdGltb25pYWxfMS53ZWJwIiBhbHQ9IkRpcmV6aW9uZSBIb3RlbCBFdXJvcGEgQmVhY2gg4oCTIEdpdWxpYW5vdmEiPgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3aG8iPkhvdGVsIEV1cm9wYSBCZWFjaDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0id2hlcmUiPkdpdWxpYW5vdmEg4oCTIERpcmV0dG9yZTwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhcnMiPuKYheKYheKYheKYheKYhTwvZGl2PgogICAgICAgICAgICAgICAgPHAgY2xhc3M9InF1b3RlIj5HbGkgPHN0cm9uZz5hbmltYXRvcmkgcXVhbGlmaWNhdGk8L3N0cm9uZz4gZGkgSGlkYWxnbyBoYW5ubyBjcmVhdG8gdW4gbGVnYW1lIGF1dGVudGljbyBjb24gZ2xpIG9zcGl0aTogPHN0cm9uZz5wYXJ0ZWNpcGF6aW9uZSBhbGxlIGF0dGl2aXTDoCBpbiBmb3J0ZSBjcmVzY2l0YTwvc3Ryb25nPiBlIDxzdHJvbmc+cGnDuSByZWNlbnNpb25pIHBvc2l0aXZlPC9zdHJvbmc+IHNldHRpbWFuYSBkb3BvIHNldHRpbWFuYS4gTW9sdGkgY2xpZW50aSBoYW5ubyBnacOgIGNvbmZlcm1hdG8gaWwgc29nZ2lvcm5vIHBlciBsYSBwcm9zc2ltYSBlc3RhdGUuPC9wPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXN0aW1vbmlhbCI+CiAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vd3d3LmhpZGFsZ29hbmltYXppb25lLml0L3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzExL3Rlc3RpbW9uaWFsXzIud2VicCIgYWx0PSJEaXJlemlvbmUgVmlsbGFnZ2lvIE1hcmUgQmx1IOKAkyBDZWNpbmEiPgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3aG8iPlZpbGxhZ2dpbyBNYXJlIEJsdTwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0id2hlcmUiPkNlY2luYSDigJMgUmVzcG9uc2FiaWxlIGFuaW1hemlvbmU8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXJzIj7imIXimIXimIXimIXimIU8L2Rpdj4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJxdW90ZSI+TG8gPHN0cm9uZz5zdGFmZiBkaSBhbmltYXRvcmk8L3N0cm9uZz4gaGEgY2FtYmlhdG8gaWwgcml0bW8gZGVsIHZpbGxhZ2dpbzogcGnDuSBjb2ludm9sZ2ltZW50bywgc3BldHRhY29saSBwaWVuaSBlIHVuIDxzdHJvbmc+aW5jcmVtZW50byBkZWkgZ2l1ZGl6aSBhIDUgc3RlbGxlPC9zdHJvbmc+IGNoZSBoYSA8c3Ryb25nPmZpZGVsaXp6YXRvPC9zdHJvbmc+IGdsaSBvc3BpdGkuPC9wPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXN0aW1vbmlhbCI+CiAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vd3d3LmhpZGFsZ29hbmltYXppb25lLml0L3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzExL3Rlc3RpbW9uaWFsXzNfbmV3LndlYnAiIGFsdD0iRGlyZXppb25lIEhvdGVsIEFnb3N0aW5pIOKAkyBCZWxsYXJpYSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IndobyI+SG90ZWwgQWdvc3Rpbmk8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IndoZXJlIj5CZWxsYXJpYSDigJMgRGlyZXppb25lPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGFycyI+4piF4piF4piF4piF4piFPC9kaXY+CiAgICAgICAgICAgICAgICA8cCBjbGFzcz0icXVvdGUiPkdsaSBhbmltYXRvcmkgZGkgSGlkYWxnbyBzb25vIHN0YXRpIDxzdHJvbmc+cHJlc2VudGkgZSBhdHRlbnRpPC9zdHJvbmc+IGNvbiBmYW1pZ2xpZSBlIGJhbWJpbmk6IHBpw7kgc29ycmlzaSwgPHN0cm9uZz5wacO5IHJlY2Vuc2lvbmkgZW50dXNpYXN0ZTwvc3Ryb25nPiBlIHRhbnRlIDxzdHJvbmc+cmljb25mZXJtZSBwZXIgbOKAmWFubm8gc3VjY2Vzc2l2bzwvc3Ryb25nPi48L3A+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KCiAgICA8IS0tIEZBUSAtLT4KICAgIDxzZWN0aW9uIGNsYXNzPSJmYXEiIGlkPSJmYXEiIHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLW11dGVkKSI+CiAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgPGgyPkZBUTwvaDI+CiAgICAgICAgPGRpdiBjbGFzcz0icSI+UXVhbnRvIHRlbXBvIHNlcnZlIHBlciBhdHRpdmFyZSBsYSBjb2xsYWJvcmF6aW9uZT88L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJhIj5EaXBlbmRlIGRhbGxhIGRpbWVuc2lvbmUgZGVsbG8gc3RhZmYgZSBkYWkgcGVyaW9kaSBkaSBwaWNjbzogbWVkaWFtZW50ZSAy4oCTNCBzZXR0aW1hbmUgZGFsIGJyaWVmIGFsbGEgcGFydGVuemEuPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0icSI+UG9zc2lhbW8gbWFudGVuZXJlIHBhcnRlIGRlbGxvIHN0YWZmIGF0dHVhbGU/PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iYSI+U8OsLCB2YWx1dGlhbW8gaW50ZWdyYXppb25pIGUgYWZmaWFuY2FtZW50aSwgbWFudGVuZW5kbyBzdGFuZGFyZCBkaSBxdWFsaXTDoCBlIGZvcm1hemlvbmUuPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0icSI+Q29tZSBmdW56aW9uYSBsYSByZXBvcnRpc3RpY2EgZHVyYW50ZSBsYSBzdGFnaW9uZT88L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJhIj5VbiB0dXRvciBkZWRpY2F0byBlZmZldHR1YSBjaGVjayBwZXJpb2RpY2kgZSBpbnZpYSByZXBvcnQgY29uIEtQSSBzdSBwcmVzZW56ZSwgZmVlZGJhY2sgZSBhdHRpdml0w6AuPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0icSI+R2VzdGl0ZSBhbmNoZSBsYSBwYXJ0ZSBzb2NpYWwgZSBjb250ZW51dGk/PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iYSI+U8OsLCBvZmZyaWFtbyBwYWNjaGV0dGkgZGkgYW5pbWF6aW9uZSBzb2NpYWwsIGdyYWZpY2EgcGVyc29uYWxpenphdGEgZSBwcm9kdXppb25lIGNvbnRlbnV0aSBpbiBzdHJ1dHR1cmEuPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgoKICAgIDwhLS0gQ1RBIGZpbmFsZSAtLT4KICAgIDxzZWN0aW9uIGNsYXNzPSJjdGEtYmFuZCI+CiAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciB3cmFwIj4KICAgICAgICA8ZGl2PgogICAgICAgICAgPHN0cm9uZyBzdHlsZT0iZm9udC1zaXplOjIycHgiPkVzdGF0ZSAyMDI2OiBibG9jY2Egb3JhIGxhIHR1YSBzcXVhZHJhIGFuaW1hemlvbmU8L3N0cm9uZz4KICAgICAgICAgIDxkaXY+UG9zdGkgbGltaXRhdGkgcGVyIG51b3ZlIHN0cnV0dHVyZSBwYXJ0bmVyLiBBdWRpdCBncmF0dWl0byBlIHByb3Bvc3RhIHN1IG1pc3VyYS48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YSBjbGFzcz0iYnRuIiBocmVmPSIjcHJldmVudGl2byIgc3R5bGU9ImJhY2tncm91bmQ6dmFyKC0tYnJhbmQpO2JvcmRlci1jb2xvcjp2YXIoLS1icmFuZCkiPlJpY2hpZWRpIHByZXZlbnRpdm88L2E+CiAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgogIDwvbWFpbj4KCiAgPCEtLSBGT09URVIgLS0+CiAgPGZvb3Rlcj4KICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciIgc3R5bGU9ImRpc3BsYXk6Z3JpZDtnYXA6MTRweCI+CiAgICAgIDxkaXY+PHN0cm9uZz5IaWRhbGdvIEFuaW1hemlvbmU8L3N0cm9uZz4gwrcgVmlhIFJlbnpvIFBhc29saW5pLCAxMyDigJMgNDc4NDMgTWlzYW5vIEFkcmlhdGljbyAoUk4pIMK3IFRlbC4gPGEgaHJlZj0idGVsOiszOTMyODk0NzY2MDUiPiszOSAzMjggOTQ3IDY2MDU8L2E+IMK3IDxhIGhyZWY9Im1haWx0bzppbmZvQGhpZGFsZ29hbmltYXppb25lLml0Ij5pbmZvQGhpZGFsZ29hbmltYXppb25lLml0PC9hPjwvZGl2PgogICAgICA8ZGl2PjxhIGhyZWY9Ii9wcml2YWN5LXBvbGljeSI+UHJpdmFjeSBwb2xpY3k8L2E+IMK3IDxhIGhyZWY9Ii9jb29raWUtcG9saWN5Ij5Db29raWUgcG9saWN5PC9hPjwvZGl2PgogICAgICA8ZGl2IHN0eWxlPSJmb250LXNpemU6MTJweDtjb2xvcjojNzc3Ij7CqSAyMDI1IEhpZGFsZ28gQW5pbWF6aW9uZS4gVHV0dGkgaSBkaXJpdHRpIHJpc2VydmF0aS48L2Rpdj4KICAgIDwvZGl2PgogIDwvZm9vdGVyPgoKICA8IS0tIFNDUklQVFMgLS0+CiAgPHNjcmlwdD4KICAgIC8vIEhFUk8gc2xpZGVyIChhdXRvcGxheSArIGRvdHMgKyBzd2lwZSkKICAgIChmdW5jdGlvbigpewogICAgICBjb25zdCBzbGlkZXI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNsaWRlcicpOyBpZighc2xpZGVyKSByZXR1cm47CiAgICAgIGNvbnN0IHNsaWRlcz1BcnJheS5mcm9tKHNsaWRlci5xdWVyeVNlbGVjdG9yQWxsKCcuc2xpZGUnKSk7CiAgICAgIGNvbnN0IHByZXY9c2xpZGVyLnF1ZXJ5U2VsZWN0b3IoJy5wcmV2Jyk7CiAgICAgIGNvbnN0IG5leHQ9c2xpZGVyLnF1ZXJ5U2VsZWN0b3IoJy5uZXh0Jyk7CiAgICAgIGNvbnN0IGRvdHNXcmFwPXNsaWRlci5xdWVyeVNlbGVjdG9yKCcuZG90cycpOwogICAgICBsZXQgaW5kZXg9MCx0aW1lcj1udWxsLGF1dG9wbGF5TXM9NDUwMDsKCiAgICAgIC8vIGNyZWEgcGFsbGluaQogICAgICBzbGlkZXMuZm9yRWFjaCgoXyxpKT0+ewogICAgICAgIGNvbnN0IGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7CiAgICAgICAgYi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCdWYWkgYWxsYSBzbGlkZSAnKyhpKzEpKTsKICAgICAgICBpZihpPT09MCliLmNsYXNzTGlzdC5hZGQoJ2lzLWFjdGl2ZScpOwogICAgICAgIGIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCgpPT5nb1RvKGksdHJ1ZSkpOwogICAgICAgIGRvdHNXcmFwLmFwcGVuZENoaWxkKGIpOwogICAgICB9KTsKICAgICAgY29uc3QgZG90cz1BcnJheS5mcm9tKGRvdHNXcmFwLmNoaWxkcmVuKTsKCiAgICAgIGZ1bmN0aW9uIGdvVG8oaSx1c2VyPWZhbHNlKXsKICAgICAgICBzbGlkZXNbaW5kZXhdLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLWFjdGl2ZScpOwogICAgICAgIGRvdHNbaW5kZXhdLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLWFjdGl2ZScpOwogICAgICAgIGluZGV4PShpK3NsaWRlcy5sZW5ndGgpJXNsaWRlcy5sZW5ndGg7CiAgICAgICAgc2xpZGVzW2luZGV4XS5jbGFzc0xpc3QuYWRkKCdpcy1hY3RpdmUnKTsKICAgICAgICBkb3RzW2luZGV4XS5jbGFzc0xpc3QuYWRkKCdpcy1hY3RpdmUnKTsKICAgICAgICBpZih1c2VyKSByZXN0YXJ0KCk7CiAgICAgIH0KICAgICAgZnVuY3Rpb24gbmV4dFNsaWRlKCl7IGdvVG8oaW5kZXgrMSk7IH0KICAgICAgZnVuY3Rpb24gcHJldlNsaWRlKCl7IGdvVG8oaW5kZXgtMSk7IH0KICAgICAgZnVuY3Rpb24gc3RhcnQoKXsgdGltZXI9c2V0SW50ZXJ2YWwobmV4dFNsaWRlLGF1dG9wbGF5TXMpOyB9CiAgICAgIGZ1bmN0aW9uIHN0b3AoKXsgY2xlYXJJbnRlcnZhbCh0aW1lcik7IHRpbWVyPW51bGw7IH0KICAgICAgZnVuY3Rpb24gcmVzdGFydCgpeyBzdG9wKCk7IHN0YXJ0KCk7IH0KCiAgICAgIGlmKG5leHQpIG5leHQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLG5leHRTbGlkZSk7CiAgICAgIGlmKHByZXYpIHByZXYuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLHByZXZTbGlkZSk7CiAgICAgIHNsaWRlci5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJyxzdG9wKTsKICAgICAgc2xpZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLHN0YXJ0KTsKCiAgICAgIC8vIHN3aXBlIG1vYmlsZQogICAgICBsZXQgdG91Y2hYPW51bGw7CiAgICAgIHNsaWRlci5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JyxlPT57dG91Y2hYPWUudG91Y2hlc1swXS5jbGllbnRYO30se3Bhc3NpdmU6dHJ1ZX0pOwogICAgICBzbGlkZXIuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLGU9PnsKICAgICAgICBpZih0b3VjaFg9PT1udWxsKXJldHVybjsKICAgICAgICBjb25zdCBkeD1lLmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFgtdG91Y2hYOwogICAgICAgIGlmKE1hdGguYWJzKGR4KT40MCkgKGR4PDAgPyBuZXh0U2xpZGUoKSA6IHByZXZTbGlkZSgpKTsKICAgICAgICB0b3VjaFg9bnVsbDsKICAgICAgfSk7CgogICAgICBzbGlkZXNbMF0uY2xhc3NMaXN0LmFkZCgnaXMtYWN0aXZlJyk7CiAgICAgIHN0YXJ0KCk7CiAgICB9KSgpOwoKICAgIC8vIEluaWV6aW9uZSBVVE0gKyBkYXRpIHBhZ2luYSBuZWwgY2FtcG8gRGVzY3JpcHRpb24gKFpvaG8pCiAgICBmdW5jdGlvbiBnZXRQYXJhbShuYW1lKXt0cnl7Y29uc3QgdXJsPW5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpO3JldHVybiB1cmwuc2VhcmNoUGFyYW1zLmdldChuYW1lKXx8Jyc7fWNhdGNoKGUpe3JldHVybiAnJ319CiAgICAoZnVuY3Rpb24oKXsKICAgICAgY29uc3QgZm9ybT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd2ViZm9ybTkxMzk3ODAwMDAwMDUzMjEwMicpOwogICAgICBpZighZm9ybSkgcmV0dXJuOwogICAgICBmb3JtLmFkZEV2ZW50TGlzdGVuZXIoJ3N1Ym1pdCcsIGZ1bmN0aW9uKCl7CiAgICAgICAgY29uc3QgZGVzYz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnRGVzY3JpcHRpb24nKTsKICAgICAgICBjb25zdCBleHRyYT1bCiAgICAgICAgICAnLS0tIFRyYWNraW5nIC0tLScsCiAgICAgICAgICAnVVJMOiAnK3dpbmRvdy5sb2NhdGlvbi5ocmVmLAogICAgICAgICAgJ1RpdG9sbzogJytkb2N1bWVudC50aXRsZSwKICAgICAgICAgICd1dG1fc291cmNlOiAnK2dldFBhcmFtKCd1dG1fc291cmNlJyksCiAgICAgICAgICAndXRtX21lZGl1bTogJytnZXRQYXJhbSgndXRtX21lZGl1bScpLAogICAgICAgICAgJ3V0bV9jYW1wYWlnbjogJytnZXRQYXJhbSgndXRtX2NhbXBhaWduJyksCiAgICAgICAgICAndXRtX3Rlcm06ICcrZ2V0UGFyYW0oJ3V0bV90ZXJtJyksCiAgICAgICAgICAndXRtX2NvbnRlbnQ6ICcrZ2V0UGFyYW0oJ3V0bV9jb250ZW50JykKICAgICAgICBdLmpvaW4oJ1xuJyk7CiAgICAgICAgaWYoZGVzYyl7IGRlc2MudmFsdWU9KGRlc2MudmFsdWU/ZGVzYy52YWx1ZSsnXG5cbic6JycpK2V4dHJhOyB9CiAgICAgICAgLy8gb3B6aW9uYWxlOiBldmVudG8gR1RNCiAgICAgICAgaWYod2luZG93LmRhdGFMYXllcil7IHdpbmRvdy5kYXRhTGF5ZXIucHVzaCh7ZXZlbnQ6J2xlYWRfc3VibWl0JywgZm9ybV9pZDond2ViZm9ybTkxMzk3ODAwMDAwMDUzMjEwMid9KTsgfQogICAgICB9KTsKICAgIH0pKCk7CiAgPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPg==”][/bt_bb_raw_content][/bt_bb_column][/bt_bb_row][/bt_bb_section]
