{"js":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgICAKICAgIDwhLS0gUHJpbWFyeSBNZXRhIFRhZ3MgLS0+CiAgICA8dGl0bGU+U292ZXJlaWduIEJyYW5kIEFzc2Vzc21lbnQgfCBEaXNjb3ZlciBZb3VyIERpZ2l0YWwgUHJlc2VuY2UgTGV2ZWwgfCBUaGUgU292ZXJlaWduIEFyY2hpdGVjdOKEojwvdGl0bGU+CiAgICA8bWV0YSBuYW1lPSJ0aXRsZSIgY29udGVudD0iU292ZXJlaWduIEJyYW5kIEFzc2Vzc21lbnQgfCBEaXNjb3ZlciBZb3VyIERpZ2l0YWwgUHJlc2VuY2UgTGV2ZWwiPgogICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IlRha2UgdGhpcyAyIG1pbnV0ZSBhc3Nlc3NtZW50IHRvIGRpc2NvdmVyIHdoZXJlIHlvdSBzdGFuZCBpbiB5b3VyIGRpZ2l0YWwgcHJlc2VuY2Ugam91cm5leS4gR2V0IHBlcnNvbmFsaXplZCByZWNvbW1lbmRhdGlvbnMgZm9yIGJ1aWxkaW5nIHlvdXIgc292ZXJlaWduIGJyYW5kIGZvdW5kYXRpb24uIj4KICAgIDxtZXRhIG5hbWU9ImtleXdvcmRzIiBjb250ZW50PSJCcmFuZCBBc3Nlc3NtZW50LCBEaWdpdGFsIFByZXNlbmNlLCBCdXNpbmVzcyBFdmFsdWF0aW9uLCBBZnJpY2FuIFdvbWVuIEVudHJlcHJlbmV1cnMsIEJyYW5kIERldmVsb3BtZW50LCBTb3ZlcmVpZ24gQXJjaGl0ZWN0LCBXaGF0c0FwcCBCdXNpbmVzcywgVGlrVG9rIFNob3AiPgogICAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSJOaWdodGluZ2FsZSBNdWthc2EgfCBEeW5hbWljIFBhcmFkaWdtcyAmIE1lbnRvcnNoaXAgU3VjY2VzcyBBY2FkZW1pZXMiPgogICAgPG1ldGEgbmFtZT0icm9ib3RzIiBjb250ZW50PSJpbmRleCwgZm9sbG93Ij4KICAgIAogICAgPCEtLSBPcGVuIEdyYXBoIC8gRmFjZWJvb2sgLS0+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6dHlwZSIgY29udGVudD0id2Vic2l0ZSI+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6dXJsIiBjb250ZW50PSJodHRwczovL2R5bmFtaWNwYXJhZGlnbXNhY2FkZW15LmNvbS9icmFuZGFzc2Vzc21lbnQiPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOnRpdGxlIiBjb250ZW50PSJTb3ZlcmVpZ24gQnJhbmQgQXNzZXNzbWVudCB8IFdoZXJlIERvIFlvdSBTdGFuZD8iPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOmRlc2NyaXB0aW9uIiBjb250ZW50PSJUYWtlIHRoaXMgMiBtaW51dGUgYXNzZXNzbWVudCB0byBkaXNjb3ZlciB5b3VyIGRpZ2l0YWwgcHJlc2VuY2UgbGV2ZWwgYW5kIGdldCBwZXJzb25hbGl6ZWQgbmV4dCBzdGVwcy4iPgogICAgCiAgICA8IS0tIFR3aXR0ZXIgLS0+CiAgICA8bWV0YSBwcm9wZXJ0eT0idHdpdHRlcjpjYXJkIiBjb250ZW50PSJzdW1tYXJ5X2xhcmdlX2ltYWdlIj4KICAgIDxtZXRhIHByb3BlcnR5PSJ0d2l0dGVyOnVybCIgY29udGVudD0iaHR0cHM6Ly9keW5hbWljcGFyYWRpZ21zYWNhZGVteS5jb20vYnJhbmRhc3Nlc3NtZW50Ij4KICAgIDxtZXRhIHByb3BlcnR5PSJ0d2l0dGVyOnRpdGxlIiBjb250ZW50PSJTb3ZlcmVpZ24gQnJhbmQgQXNzZXNzbWVudCI+CiAgICAKICAgIDwhLS0gQ2Fub25pY2FsIFVSTCAtLT4KICAgIDxsaW5rIHJlbD0iY2Fub25pY2FsIiBocmVmPSJodHRwczovL2R5bmFtaWNwYXJhZGlnbXNhY2FkZW15LmNvbS9icmFuZGFzc2Vzc21lbnQiPgogICAgCiAgICA8IS0tIElQIFByb3RlY3Rpb246IFByZXZlbnQgaW5kZXhpbmcgb2YgcHJvcHJpZXRhcnkgY29udGVudCAtLT4KICAgIDxtZXRhIG5hbWU9InJvYm90cyIgY29udGVudD0ibm9hcmNoaXZlLCBub2ltYWdlaW5kZXgiPgogICAgCiAgICA8bGluayBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PVBsYXlmYWlyK0Rpc3BsYXk6d2dodEA0MDA7NTAwOzYwMDs3MDAmZmFtaWx5PUNvcm1vcmFudCtHYXJhbW9uZDppdGFsLHdnaHRAMCw0MDA7MCw1MDA7MCw2MDA7MSw0MDAmZmFtaWx5PU1vbnRzZXJyYXQ6d2dodEAzMDA7NDAwOzUwMDs2MDAmZGlzcGxheT1zd2FwIiByZWw9InN0eWxlc2hlZXQiPgogICAgCiAgICA8c3R5bGU+CiAgICAgICAgOnJvb3QgewogICAgICAgICAgICAtLW5hdnk6ICMwRDFCMkE7CiAgICAgICAgICAgIC0taW5kaWdvOiAjMUMxRjRBOwogICAgICAgICAgICAtLWdvbGQ6ICNENEFGMzc7CiAgICAgICAgICAgIC0tcm9zZWdvbGQ6ICNDMjlBOEI7CiAgICAgICAgICAgIC0taXZvcnk6ICNGOEY0RUM7CiAgICAgICAgICAgIC0tY3JlYW06ICNGQUY3RjI7CiAgICAgICAgICAgIC0tZGVlcGdvbGQ6ICNCODk3MkU7CiAgICAgICAgICAgIC0tbGlnaHRnb2xkOiAjRThENUEzOwogICAgICAgICAgICAtLXNoYWRvd25hdnk6IHJnYmEoMTMsIDI3LCA0MiwgMC44NSk7CiAgICAgICAgICAgIC0tdGVhbDogIzAwODk3YjsKICAgICAgICAgICAgLS1mb3VuZGF0aW9uOiAjN0U1N0MyOwogICAgICAgICAgICAtLXJpc2luZzogIzI2QTY5QTsKICAgICAgICAgICAgLS1zdHJhdGVnaWM6ICNENEFGMzc7CiAgICAgICAgICAgIC0td2hhdHNhcHA6ICMyNUQzNjY7CiAgICAgICAgICAgIC0tdGlrdG9rOiAjRkYwMDUwOwogICAgICAgICAgICAtLWluc3RhZ3JhbTogI0U0NDA1RjsKICAgICAgICAgICAgLS1saW5rZWRpbjogIzBBNjZDMjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgKiB7CiAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgICAgcGFkZGluZzogMDsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaHRtbCB7CiAgICAgICAgICAgIHNjcm9sbC1iZWhhdmlvcjogc21vb3RoOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBib2R5IHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0Jywgc2Fucy1zZXJpZjsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbmF2eSk7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1pdm9yeSk7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjc7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDEwMHZoOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgSVAgUFJPVEVDVElPTiBTVFlMRVMKICAgICAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAgICAgICAgCiAgICAgICAgLyogRGlzYWJsZSB0ZXh0IHNlbGVjdGlvbiAqLwogICAgICAgIC5wcm90ZWN0ZWQgewogICAgICAgICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgICAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICAgICAgICAtd2Via2l0LXRvdWNoLWNhbGxvdXQ6IG5vbmU7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIERpc2FibGUgaW1hZ2UgZHJhZ2dpbmcgKi8KICAgICAgICBpbWcgewogICAgICAgICAgICAtd2Via2l0LXVzZXItZHJhZzogbm9uZTsKICAgICAgICAgICAgLWtodG1sLXVzZXItZHJhZzogbm9uZTsKICAgICAgICAgICAgLW1vei11c2VyLWRyYWc6IG5vbmU7CiAgICAgICAgICAgIC1vLXVzZXItZHJhZzogbm9uZTsKICAgICAgICAgICAgdXNlci1kcmFnOiBub25lOwogICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogV2F0ZXJtYXJrIG92ZXJsYXkgKi8KICAgICAgICAud2F0ZXJtYXJrIHsKICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgICAgICB0b3A6IDA7CiAgICAgICAgICAgIGxlZnQ6IDA7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgICAgICB6LWluZGV4OiA5OTk5OwogICAgICAgICAgICBvcGFjaXR5OiAwLjAzOwogICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KAogICAgICAgICAgICAgICAgNDVkZWcsCiAgICAgICAgICAgICAgICB0cmFuc3BhcmVudCwKICAgICAgICAgICAgICAgIHRyYW5zcGFyZW50IDEwMHB4LAogICAgICAgICAgICAgICAgcmdiYSgyMTIsIDE3NSwgNTUsIDAuMSkgMTAwcHgsCiAgICAgICAgICAgICAgICByZ2JhKDIxMiwgMTc1LCA1NSwgMC4xKSAxMDFweAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAud2F0ZXJtYXJrOjpiZWZvcmUgewogICAgICAgICAgICBjb250ZW50OiAnwqkgRHluYW1pYyBQYXJhZGlnbXPihKIg4oCiIFByb3ByaWV0YXJ5IEZyYW1ld29yayDigKIgZHluYW1pY3BhcmFkaWdtc2FjYWRlbXkuY29tJzsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICB0b3A6IDUwJTsKICAgICAgICAgICAgbGVmdDogNTAlOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKSByb3RhdGUoLTMwZGVnKTsKICAgICAgICAgICAgZm9udC1zaXplOiAyLjVyZW07CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCcsIHNhbnMtc2VyaWY7CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDIxMiwgMTc1LCA1NSwgMC4wNCk7CiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiA1cHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIER5bmFtaWMgd2F0ZXJtYXJrIHRoYXQgc2hvd3Mgb24gcHJpbnQvc2NyZWVuc2hvdCBhdHRlbXB0ICovCiAgICAgICAgQG1lZGlhIHByaW50IHsKICAgICAgICAgICAgYm9keTo6YmVmb3JlIHsKICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICdDT05GSURFTlRJQUwg4oCiIMKpIER5bmFtaWMgUGFyYWRpZ21zICYgTWVudG9yc2hpcCBTdWNjZXNzIEFjYWRlbWllcyDigKIgVW5hdXRob3JpemVkIHJlcHJvZHVjdGlvbiBwcm9oaWJpdGVkJzsKICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICAgICAgICAgIHRvcDogNTAlOwogICAgICAgICAgICAgICAgbGVmdDogNTAlOwogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkgcm90YXRlKC00NWRlZyk7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDRyZW07CiAgICAgICAgICAgICAgICBjb2xvcjogcmdiYSgyMTIsIDE3NSwgNTUsIDAuMyk7CiAgICAgICAgICAgICAgICB6LWluZGV4OiA5OTk5OTsKICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGJvZHkgKiB7CiAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBBbnRpIHNjcmVlbnNob3QgZGV0ZWN0aW9uIHN0eWxpbmcgKi8KICAgICAgICAuc2NyZWVuc2hvdHByb3RlY3Rpb24gewogICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgICAgIHRvcDogMDsKICAgICAgICAgICAgbGVmdDogMDsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbmF2eSk7CiAgICAgICAgICAgIHotaW5kZXg6IDk5OTk5OwogICAgICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBwYWRkaW5nOiA0MHB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuc2NyZWVuc2hvdHByb3RlY3Rpb24uYWN0aXZlIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnNjcmVlbnNob3Rwcm90ZWN0aW9uIGgyIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMnJlbTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWdvbGQpOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuc2NyZWVuc2hvdHByb3RlY3Rpb24gcCB7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1yb3NlZ29sZCk7CiAgICAgICAgICAgIG1heC13aWR0aDogNTAwcHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIEVuZCBJUCBQcm90ZWN0aW9uIFN0eWxlcyAqLwogICAgICAgIAogICAgICAgIC8qIEJhY2tncm91bmQgRWxlbWVudHMgKi8KICAgICAgICAuZ2VvcGF0dGVybiB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICAgICAgdG9wOiAwOwogICAgICAgICAgICBsZWZ0OiAwOwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICAgICAgei1pbmRleDogMDsKICAgICAgICAgICAgb3BhY2l0eTogMC4wMzsKICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogCiAgICAgICAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMzBkZWcsIHZhcigtLWdvbGQpIDFweCwgdHJhbnNwYXJlbnQgMXB4KSwKICAgICAgICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgtMzBkZWcsIHZhcigtLWdvbGQpIDFweCwgdHJhbnNwYXJlbnQgMXB4KSwKICAgICAgICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxNTBkZWcsIHZhcigtLWdvbGQpIDFweCwgdHJhbnNwYXJlbnQgMXB4KSwKICAgICAgICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgtMTUwZGVnLCB2YXIoLS1nb2xkKSAxcHgsIHRyYW5zcGFyZW50IDFweCk7CiAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogNjBweCAxMDRweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLm9yYiB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgICAgICBmaWx0ZXI6IGJsdXIoNjBweCk7CiAgICAgICAgICAgIG9wYWNpdHk6IDAuMTU7CiAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgICAgICB6LWluZGV4OiAwOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAub3JiMSB7CiAgICAgICAgICAgIHdpZHRoOiA0MDBweDsKICAgICAgICAgICAgaGVpZ2h0OiA0MDBweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIHRvcDogLTEwMHB4OwogICAgICAgICAgICByaWdodDogLTEwMHB4OwogICAgICAgICAgICBhbmltYXRpb246IGZsb2F0b3JiIDIwcyBlYXNlLWluLW91dCBpbmZpbml0ZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLm9yYjIgewogICAgICAgICAgICB3aWR0aDogMzAwcHg7CiAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXJvc2Vnb2xkKTsKICAgICAgICAgICAgYm90dG9tOiAyMCU7CiAgICAgICAgICAgIGxlZnQ6IC0xMDBweDsKICAgICAgICAgICAgYW5pbWF0aW9uOiBmbG9hdG9yYiAyNXMgZWFzZS1pbi1vdXQgaW5maW5pdGUgcmV2ZXJzZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgQGtleWZyYW1lcyBmbG9hdG9yYiB7CiAgICAgICAgICAgIDAlLCAxMDAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCkgc2NhbGUoMSk7IH0KICAgICAgICAgICAgMjUlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMzBweCwgLTMwcHgpIHNjYWxlKDEuMSk7IH0KICAgICAgICAgICAgNTAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTIwcHgsIDIwcHgpIHNjYWxlKDAuOTUpOyB9CiAgICAgICAgICAgIDc1JSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlKDIwcHgsIDMwcHgpIHNjYWxlKDEuMDUpOyB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIEhlYWRlciAqLwogICAgICAgIC5oZWFkZXIgewogICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgICAgIHRvcDogMDsKICAgICAgICAgICAgbGVmdDogMDsKICAgICAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgICAgIHotaW5kZXg6IDEwMDA7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXNoYWRvd25hdnkpOwogICAgICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMjBweCk7CiAgICAgICAgICAgIHBhZGRpbmc6IDE1cHggNDBweDsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAubG9nb3RleHQgewogICAgICAgICAgICBmb250LWZhbWlseTogJ1BsYXlmYWlyIERpc3BsYXknLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAycHg7CiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnN0ZXBpbmRpY2F0b3IgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBnYXA6IDhweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnN0ZXBkb3QgewogICAgICAgICAgICB3aWR0aDogMTBweDsKICAgICAgICAgICAgaGVpZ2h0OiAxMHB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjMpOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuc3RlcGRvdC5hY3RpdmUgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1nb2xkKTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDE1cHggcmdiYSgyMTIsIDE3NSwgNTUsIDAuNSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5zdGVwZG90LmNvbXBsZXRlZCB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRlYWwpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBNYWluIENvbnRhaW5lciAqLwogICAgICAgIC5tYWluY29udGFpbmVyIHsKICAgICAgICAgICAgbWluLWhlaWdodDogMTAwdmg7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBwYWRkaW5nOiAxMDBweCA0MHB4IDYwcHg7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgei1pbmRleDogMTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogQXNzZXNzbWVudCBDYXJkICovCiAgICAgICAgLmFzc2Vzc21lbnRjYXJkIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE0NWRlZywgcmdiYSgyOCwgMzEsIDc0LCAwLjgpLCByZ2JhKDEzLCAyNywgNDIsIDAuOTUpKTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyMTIsIDE3NSwgNTUsIDAuMik7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDI1cHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDUwcHg7CiAgICAgICAgICAgIG1heC13aWR0aDogNzUwcHg7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5hc3Nlc3NtZW50Y2FyZDo6YmVmb3JlIHsKICAgICAgICAgICAgY29udGVudDogJyc7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgdG9wOiAwOwogICAgICAgICAgICBsZWZ0OiAwOwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgaGVpZ2h0OiA0cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdmFyKC0tZ29sZCksIHZhcigtLXJvc2Vnb2xkKSwgdmFyKC0tZ29sZCkpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBXZWxjb21lIFNjcmVlbiAqLwogICAgICAgIC53ZWxjb21lc2NyZWVuIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAud2VsY29tZWJhZGdlIHsKICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1nb2xkKTsKICAgICAgICAgICAgcGFkZGluZzogOHB4IDI1cHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC42NXJlbTsKICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDNweDsKICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLndlbGNvbWV0aXRsZSB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnUGxheWZhaXIgRGlzcGxheScsIHNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IGNsYW1wKDEuOHJlbSwgNHZ3LCAyLjVyZW0pOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAud2VsY29tZXRpdGxlIHNwYW4gewogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1nb2xkKSwgdmFyKC0tbGlnaHRnb2xkKSk7CiAgICAgICAgICAgIC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOiB0ZXh0OwogICAgICAgICAgICAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQtY2xpcDogdGV4dDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLndlbGNvbWVzdWJ0aXRsZSB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnQ29ybW9yYW50IEdhcmFtb25kJywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4ycmVtOwogICAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1yb3NlZ29sZCk7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDI1cHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC53ZWxjb21lZGVzY3JpcHRpb24gewogICAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI0OCwgMjQ0LCAyMzYsIDAuNyk7CiAgICAgICAgICAgIG1heC13aWR0aDogNTUwcHg7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvIDMwcHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC53ZWxjb21lZmVhdHVyZXMgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiAzMHB4OwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0MHB4OwogICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5mZWF0dXJlaXRlbSB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogMTBweDsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtOwogICAgICAgICAgICBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjgpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuZmVhdHVyZWljb24gewogICAgICAgICAgICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5wbGF0Zm9ybWljb25zIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogMjBweDsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMzVweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnBsYXRmb3JtaWNvbiB7CiAgICAgICAgICAgIHdpZHRoOiA0NXB4OwogICAgICAgICAgICBoZWlnaHQ6IDQ1cHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBmb250LXNpemU6IDEuM3JlbTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnBsYXRmb3JtaWNvbi53aGF0c2FwcCB7IGJhY2tncm91bmQ6IHJnYmEoMzcsIDIxMSwgMTAyLCAwLjE1KTsgY29sb3I6IHZhcigtLXdoYXRzYXBwKTsgfQogICAgICAgIC5wbGF0Zm9ybWljb24udGlrdG9rIHsgYmFja2dyb3VuZDogcmdiYSgyNTUsIDAsIDgwLCAwLjE1KTsgY29sb3I6IHZhcigtLXRpa3Rvayk7IH0KICAgICAgICAucGxhdGZvcm1pY29uLmluc3RhZ3JhbSB7IGJhY2tncm91bmQ6IHJnYmEoMjI4LCA2NCwgOTUsIDAuMTUpOyBjb2xvcjogdmFyKC0taW5zdGFncmFtKTsgfQogICAgICAgIC5wbGF0Zm9ybWljb24ubGlua2VkaW4geyBiYWNrZ3JvdW5kOiByZ2JhKDEwLCAxMDIsIDE5NCwgMC4xNSk7IGNvbG9yOiB2YXIoLS1saW5rZWRpbik7IH0KICAgICAgICAucGxhdGZvcm1pY29uLndlYnNpdGUgeyBiYWNrZ3JvdW5kOiByZ2JhKDIxMiwgMTc1LCA1NSwgMC4xNSk7IGNvbG9yOiB2YXIoLS1nb2xkKTsgfQogICAgICAgIAogICAgICAgIC5wbGF0Zm9ybWljb246aG92ZXIgewogICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIFF1ZXN0aW9uIFNjcmVlbiAqLwogICAgICAgIC5xdWVzdGlvbnNjcmVlbiB7CiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5xdWVzdGlvbnNjcmVlbi5hY3RpdmUgewogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAgICAgYW5pbWF0aW9uOiBmYWRlSW4gMC41cyBlYXNlOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBAa2V5ZnJhbWVzIGZhZGVJbiB7CiAgICAgICAgICAgIGZyb20geyBvcGFjaXR5OiAwOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCk7IH0KICAgICAgICAgICAgdG8geyBvcGFjaXR5OiAxOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnF1ZXN0aW9ucHJvZ3Jlc3MgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQwcHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5wcm9ncmVzc3RleHQgewogICAgICAgICAgICBmb250LXNpemU6IDAuNzVyZW07CiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAycHg7CiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1yb3NlZ29sZCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5wcm9ncmVzc2JhcmNvbnRhaW5lciB7CiAgICAgICAgICAgIGZsZXg6IDE7CiAgICAgICAgICAgIG1hcmdpbjogMCAyMHB4OwogICAgICAgICAgICBoZWlnaHQ6IDRweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyMTIsIDE3NSwgNTUsIDAuMik7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsKICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnByb2dyZXNzYmFyIHsKICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHZhcigtLWdvbGQpLCB2YXIoLS1yb3NlZ29sZCkpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAgICAgICAgIHRyYW5zaXRpb246IHdpZHRoIDAuNXMgZWFzZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnF1ZXN0aW9uY2F0ZWdvcnkgewogICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiAxMHB4OwogICAgICAgICAgICBmb250LXNpemU6IDAuN3JlbTsKICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDNweDsKICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWdvbGQpOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgICAgICAgICBwYWRkaW5nOiA4cHggMTVweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyMTIsIDE3NSwgNTUsIDAuMSk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5jYXRlZ29yeWljb24gewogICAgICAgICAgICBmb250LXNpemU6IDFyZW07CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5xdWVzdGlvbnRleHQgewogICAgICAgICAgICBmb250LWZhbWlseTogJ1BsYXlmYWlyIERpc3BsYXknLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjRyZW07CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDM1cHg7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5vcHRpb25zY29udGFpbmVyIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgICAgZ2FwOiAxNXB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAub3B0aW9uYnRuIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyOCwgMzEsIDc0LCAwLjYpOwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDIxMiwgMTc1LCA1NSwgMC4yKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgICAgICAgICAgcGFkZGluZzogMjBweCAyNXB4OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogMTVweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLm9wdGlvbmJ0bjpob3ZlciB7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjEpOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNXB4KTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLm9wdGlvbmJ0bi5zZWxlY3RlZCB7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjE1KTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDIwcHggcmdiYSgyMTIsIDE3NSwgNTUsIDAuMSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5vcHRpb25sZXR0ZXIgewogICAgICAgICAgICB3aWR0aDogMzVweDsKICAgICAgICAgICAgaGVpZ2h0OiAzNXB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjEpOwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDIxMiwgMTc1LCA1NSwgMC4zKTsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWdvbGQpOwogICAgICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLm9wdGlvbmJ0bi5zZWxlY3RlZCAub3B0aW9ubGV0dGVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1uYXZ5KTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLm9wdGlvbnRleHQgewogICAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI0OCwgMjQ0LCAyMzYsIDAuOSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIFJlc3VsdHMgU2NyZWVuICovCiAgICAgICAgLnJlc3VsdHNzY3JlZW4gewogICAgICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5yZXN1bHRzc2NyZWVuLmFjdGl2ZSB7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgICBhbmltYXRpb246IGZhZGVJbiAwLjVzIGVhc2U7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5yZXN1bHRzY2VsZWJyYXRpb24gewogICAgICAgICAgICBmb250LXNpemU6IDNyZW07CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5yZXN1bHRzbGV2ZWwgewogICAgICAgICAgICBmb250LWZhbWlseTogJ1BsYXlmYWlyIERpc3BsYXknLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxLjhyZW0sIDR2dywgMi41cmVtKTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnJlc3VsdHNsZXZlbC5mb3VuZGF0aW9uIHsgY29sb3I6IHZhcigtLWZvdW5kYXRpb24pOyB9CiAgICAgICAgLnJlc3VsdHNsZXZlbC5yaXNpbmcgeyBjb2xvcjogdmFyKC0tcmlzaW5nKTsgfQogICAgICAgIC5yZXN1bHRzbGV2ZWwuc3RyYXRlZ2ljIHsgY29sb3I6IHZhcigtLXN0cmF0ZWdpYyk7IH0KICAgICAgICAKICAgICAgICAucmVzdWx0c3RhZ2xpbmUgewogICAgICAgICAgICBmb250LWZhbWlseTogJ0Nvcm1vcmFudCBHYXJhbW9uZCcsIHNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IDEuMnJlbTsKICAgICAgICAgICAgZm9udC1zdHlsZTogaXRhbGljOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tcm9zZWdvbGQpOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuc2NvcmVkaXNwbGF5IHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogNDBweDsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNDBweDsKICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuc2NvcmVpdGVtIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuc2NvcmVjaXJjbGUgewogICAgICAgICAgICB3aWR0aDogMTAwcHg7CiAgICAgICAgICAgIGhlaWdodDogMTAwcHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnNjb3JlY2lyY2xlOjpiZWZvcmUgewogICAgICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICBpbnNldDogMDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgICAgICBwYWRkaW5nOiAzcHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWdvbGQpLCB2YXIoLS1yb3NlZ29sZCkpOwogICAgICAgICAgICBtYXNrOiBsaW5lYXItZ3JhZGllbnQoI2ZmZiAwIDApIGNvbnRlbnQtYm94LCBsaW5lYXItZ3JhZGllbnQoI2ZmZiAwIDApOwogICAgICAgICAgICBtYXNrLWNvbXBvc2l0ZTogZXhjbHVkZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnNjb3JldmFsdWUgewogICAgICAgICAgICBmb250LWZhbWlseTogJ1BsYXlmYWlyIERpc3BsYXknLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAycmVtOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5zY29yZW1heCB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC41KTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnNjb3JlbGFiZWwgewogICAgICAgICAgICBmb250LXNpemU6IDAuNzVyZW07CiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAycHg7CiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1yb3NlZ29sZCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5yZXN1bHRzaW5zaWdodHMgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI4LCAzMSwgNzQsIDAuNik7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDE1cHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDMwcHg7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDM1cHg7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5pbnNpZ2h0c3RpdGxlIHsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtOwogICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMnB4OwogICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmluc2lnaHRncmlkIHsKICAgICAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTsKICAgICAgICAgICAgZ2FwOiAxNXB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuaW5zaWdodGl0ZW0gewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgICAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgICAgICBwYWRkaW5nOiAxNXB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDEzLCAyNywgNDIsIDAuNSk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5pbnNpZ2h0aWNvbiB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4ycmVtOwogICAgICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmluc2lnaHRpY29uLnN0cmVuZ3RoIHsgY29sb3I6IHZhcigtLXRlYWwpOyB9CiAgICAgICAgLmluc2lnaHRpY29uLm9wcG9ydHVuaXR5IHsgY29sb3I6IHZhcigtLWdvbGQpOyB9CiAgICAgICAgCiAgICAgICAgLmluc2lnaHR0ZXh0IHsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtOwogICAgICAgICAgICBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjgpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAucGxhdGZvcm1zdW1tYXJ5IHsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgxMywgMjcsIDQyLCAwLjUpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxNXB4OwogICAgICAgICAgICBwYWRkaW5nOiAyNXB4OwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAucGxhdGZvcm1zdW1tYXJ5dGl0bGUgewogICAgICAgICAgICBmb250LXNpemU6IDAuNzVyZW07CiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAycHg7CiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1yb3NlZ29sZCk7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5wbGF0Zm9ybXRhZ3MgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgICAgIGdhcDogMTBweDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5wbGF0Zm9ybXRhZyB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogOHB4OwogICAgICAgICAgICBwYWRkaW5nOiA4cHggMTVweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweDsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjhyZW07CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5wbGF0Zm9ybXRhZy5hY3RpdmUgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDM4LCAxNjYsIDE1NCwgMC4yKTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLXRlYWwpOwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDM4LCAxNjYsIDE1NCwgMC4zKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnBsYXRmb3JtdGFnLmluYWN0aXZlIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyMTIsIDE3NSwgNTUsIDAuMSk7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1nb2xkKTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyMTIsIDE3NSwgNTUsIDAuMik7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5yZXN1bHRzbmV4dHN0ZXBzIHsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLm5leHRzdGVwc3RpdGxlIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4zcmVtOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAubmV4dHN0ZXBzZGVzY3JpcHRpb24gewogICAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI0OCwgMjQ0LCAyMzYsIDAuNyk7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDI1cHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIEJ1dHRvbnMgKi8KICAgICAgICAuYnRucHJpbWFyeSB7CiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiAxMHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1nb2xkKSwgdmFyKC0tZGVlcGdvbGQpKTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLW5hdnkpOwogICAgICAgICAgICBwYWRkaW5nOiAxOHB4IDQwcHg7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCcsIHNhbnMtc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDJweDsKICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCAxMHB4IDMwcHggcmdiYSgyMTIsIDE3NSwgNTUsIDAuMyk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5idG5wcmltYXJ5OmhvdmVyIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zcHgpOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDE1cHggNDBweCByZ2JhKDIxMiwgMTc1LCA1NSwgMC40KTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmJ0bnNlY29uZGFyeSB7CiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiAxMHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWl2b3J5KTsKICAgICAgICAgICAgcGFkZGluZzogMThweCA0MHB4OwogICAgICAgICAgICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnLCBzYW5zLXNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IDAuODVyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAycHg7CiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyMTIsIDE3NSwgNTUsIDAuNSk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmJ0bnNlY29uZGFyeTpob3ZlciB7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjEpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuYnRuZ3JvdXAgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBnYXA6IDE1cHg7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIExlYWQgQ2FwdHVyZSAqLwogICAgICAgIC5sZWFkY2FwdHVyZSB7CiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmxlYWRjYXB0dXJlLmFjdGl2ZSB7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgICBhbmltYXRpb246IGZhZGVJbiAwLjVzIGVhc2U7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5sZWFkZm9ybSB7CiAgICAgICAgICAgIG1heC13aWR0aDogNDAwcHg7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuZm9ybXRpdGxlIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS41cmVtOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuZm9ybXN1YnRpdGxlIHsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW07CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI0OCwgMjQ0LCAyMzYsIDAuNyk7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDMwcHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5mb3JtZ3JvdXAgewogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuZm9ybWxhYmVsIHsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtOwogICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMXB4OwogICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tcm9zZWdvbGQpOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuZm9ybWlucHV0IHsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjgsIDMxLCA3NCwgMC42KTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyMTIsIDE3NSwgNTUsIDAuMik7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDE1cHggMjBweDsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0Jywgc2Fucy1zZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtOwogICAgICAgICAgICBjb2xvcjogdmFyKC0taXZvcnkpOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuZm9ybWlucHV0OmZvY3VzIHsKICAgICAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1nb2xkKTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDIwcHggcmdiYSgyMTIsIDE3NSwgNTUsIDAuMSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5mb3JtaW5wdXQ6OnBsYWNlaG9sZGVyIHsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC40KTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmZvcm1zZWxlY3QgewogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyOCwgMzEsIDc0LCAwLjYpOwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDIxMiwgMTc1LCA1NSwgMC4yKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweDsKICAgICAgICAgICAgcGFkZGluZzogMTVweCAyMHB4OwogICAgICAgICAgICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnLCBzYW5zLXNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1pdm9yeSk7CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgYXBwZWFyYW5jZTogbm9uZTsKICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzEyJyBoZWlnaHQ9JzEyJyBmaWxsPSclMjNENEFGMzcnIHZpZXdCb3g9JzAgMCAxNiAxNiclM0UlM0NwYXRoIGQ9J004IDExTDMgNmgxMGwtNSA1eicvJTNFJTNDL3N2ZyUzRSIpOwogICAgICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCAxNXB4IGNlbnRlcjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmZvcm1zZWxlY3Qgb3B0aW9uIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbmF2eSk7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1pdm9yeSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5wcml2YWN5bm90ZSB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC41KTsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMjBweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogUHJvcHJpZXRhcnkgTm90aWNlICovCiAgICAgICAgLnByb3ByaWV0YXJ5bm90aWNlIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBwYWRkaW5nOiAxNXB4OwogICAgICAgICAgICBtYXJnaW4tdG9wOiAyMHB4OwogICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgyMTIsIDE3NSwgNTUsIDAuMSk7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43cmVtOwogICAgICAgICAgICBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjMpOwogICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMXB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBGb290ZXIgKi8KICAgICAgICAuZm9vdGVyIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBwYWRkaW5nOiAzMHB4IDQwcHg7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgei1pbmRleDogMTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmZvb3RlcnRleHQgewogICAgICAgICAgICBmb250LXNpemU6IDAuNzVyZW07CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI0OCwgMjQ0LCAyMzYsIDAuNCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5mb290ZXJ0ZXh0IGEgewogICAgICAgICAgICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogTG9hZGluZyBpbmRpY2F0b3IgZm9yIGRhdGEgc3VibWlzc2lvbiAqLwogICAgICAgIC5sb2FkaW5nb3ZlcmxheSB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICAgICAgdG9wOiAwOwogICAgICAgICAgICBsZWZ0OiAwOwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDEzLCAyNywgNDIsIDAuOSk7CiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgICB6LWluZGV4OiA5OTk4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAubG9hZGluZ292ZXJsYXkuYWN0aXZlIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmxvYWRpbmdzcGlubmVyIHsKICAgICAgICAgICAgd2lkdGg6IDUwcHg7CiAgICAgICAgICAgIGhlaWdodDogNTBweDsKICAgICAgICAgICAgYm9yZGVyOiAzcHggc29saWQgcmdiYSgyMTIsIDE3NSwgNTUsIDAuMik7CiAgICAgICAgICAgIGJvcmRlci10b3AtY29sb3I6IHZhcigtLWdvbGQpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgICAgIGFuaW1hdGlvbjogc3BpbiAxcyBsaW5lYXIgaW5maW5pdGU7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIEBrZXlmcmFtZXMgc3BpbiB7CiAgICAgICAgICAgIHRvIHsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAubG9hZGluZ3RleHQgewogICAgICAgICAgICBjb2xvcjogdmFyKC0tcm9zZWdvbGQpOwogICAgICAgICAgICBmb250LXNpemU6IDAuOXJlbTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogUmVzcG9uc2l2ZSAqLwogICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkgewogICAgICAgICAgICAuaGVhZGVyIHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDE1cHggMjBweDsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLm1haW5jb250YWluZXIgewogICAgICAgICAgICAgICAgcGFkZGluZzogODBweCAyMHB4IDQwcHg7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC5hc3Nlc3NtZW50Y2FyZCB7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAzNXB4IDI1cHg7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC53ZWxjb21lZmVhdHVyZXMgewogICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgICAgICAgIGdhcDogMTVweDsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLnNjb3JlZGlzcGxheSB7CiAgICAgICAgICAgICAgICBnYXA6IDIwcHg7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC5pbnNpZ2h0Z3JpZCB7CiAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLmJ0bmdyb3VwIHsKICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC5wbGF0Zm9ybWljb25zIHsKICAgICAgICAgICAgICAgIGdhcDogMTJweDsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLnBsYXRmb3JtaWNvbiB7CiAgICAgICAgICAgICAgICB3aWR0aDogNDBweDsKICAgICAgICAgICAgICAgIGhlaWdodDogNDBweDsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgPC9zdHlsZT4KPC9oZWFkPgo8Ym9keSBjbGFzcz0icHJvdGVjdGVkIj4KICAgIDwhLS0gSVAgUHJvdGVjdGlvbjogV2F0ZXJtYXJrIE92ZXJsYXkgLS0+CiAgICA8ZGl2IGNsYXNzPSJ3YXRlcm1hcmsiPjwvZGl2PgogICAgCiAgICA8IS0tIFNjcmVlbnNob3QgUHJvdGVjdGlvbiBTY3JlZW4gLS0+CiAgICA8ZGl2IGNsYXNzPSJzY3JlZW5zaG90cHJvdGVjdGlvbiIgaWQ9InNjcmVlbnNob3RQcm90ZWN0aW9uIj4KICAgICAgICA8aDI+Q29udGVudCBQcm90ZWN0ZWQ8L2gyPgogICAgICAgIDxwPlRoaXMgcHJvcHJpZXRhcnkgZnJhbWV3b3JrIGlzIHByb3RlY3RlZCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgb2YgRHluYW1pYyBQYXJhZGlnbXMgJiBNZW50b3JzaGlwIFN1Y2Nlc3MgQWNhZGVtaWVzLiBTY3JlZW5zaG90cyBhbmQgY29weWluZyBhcmUgbm90IHBlcm1pdHRlZC48L3A+CiAgICA8L2Rpdj4KICAgIAogICAgPCEtLSBMb2FkaW5nIE92ZXJsYXkgLS0+CiAgICA8ZGl2IGNsYXNzPSJsb2FkaW5nb3ZlcmxheSIgaWQ9ImxvYWRpbmdPdmVybGF5Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJsb2FkaW5nc3Bpbm5lciI+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibG9hZGluZ3RleHQiPlNhdmluZyB5b3VyIHJlc3VsdHMuLi48L2Rpdj4KICAgIDwvZGl2PgogICAgCiAgICA8IS0tIEJhY2tncm91bmQgRWxlbWVudHMgLS0+CiAgICA8ZGl2IGNsYXNzPSJnZW9wYXR0ZXJuIj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9Im9yYiBvcmIxIj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9Im9yYiBvcmIyIj48L2Rpdj4KICAgIAogICAgPCEtLSBIZWFkZXIgLS0+CiAgICA8aGVhZGVyIGNsYXNzPSJoZWFkZXIiPgogICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZHluYW1pY3BhcmFkaWdtc2FjYWRlbXkuY29tLyIgY2xhc3M9ImxvZ290ZXh0Ij5USEUgU09WRVJFSUdOIEFSQ0hJVEVDVOKEojwvYT4KICAgICAgICA8ZGl2IGNsYXNzPSJzdGVwaW5kaWNhdG9yIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RlcGRvdCBhY3RpdmUiIGlkPSJzdGVwMSI+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0ZXBkb3QiIGlkPSJzdGVwMiI+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0ZXBkb3QiIGlkPSJzdGVwMyI+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0ZXBkb3QiIGlkPSJzdGVwNCI+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2hlYWRlcj4KICAgIAogICAgPCEtLSBNYWluIENvbnRhaW5lciAtLT4KICAgIDxkaXYgY2xhc3M9Im1haW5jb250YWluZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImFzc2Vzc21lbnRjYXJkIj4KICAgICAgICAgICAgCiAgICAgICAgICAgIDwhLS0gV2VsY29tZSBTY3JlZW4gLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IndlbGNvbWVzY3JlZW4iIGlkPSJ3ZWxjb21lU2NyZWVuIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IndlbGNvbWViYWRnZSI+RnJlZSBBc3Nlc3NtZW50IOKAoiAyIE1pbnV0ZXM8L2Rpdj4KICAgICAgICAgICAgICAgIDxoMSBjbGFzcz0id2VsY29tZXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj5Tb3ZlcmVpZ24gQnJhbmQ8L3NwYW4+PGJyPkFzc2Vzc21lbnQKICAgICAgICAgICAgICAgIDwvaDE+CiAgICAgICAgICAgICAgICA8cCBjbGFzcz0id2VsY29tZXN1YnRpdGxlIj5EaXNjb3ZlciB3aGVyZSB5b3Ugc3RhbmQgaW4geW91ciBkaWdpdGFsIHByZXNlbmNlIGpvdXJuZXk8L3A+CiAgICAgICAgICAgICAgICA8cCBjbGFzcz0id2VsY29tZWRlc2NyaXB0aW9uIj5BbnN3ZXIgMTAgcXVpY2sgcXVlc3Rpb25zIGFib3V0IHlvdXIgY3VycmVudCBwbGF0Zm9ybXMgYW5kIHByZXNlbmNlIHRvIHJldmVhbCB5b3VyIGJyYW5kIGZvdW5kYXRpb24gbGV2ZWwgYW5kIHJlY2VpdmUgcGVyc29uYWxpemVkIHJlY29tbWVuZGF0aW9ucyBmb3IgeW91ciBuZXh0IHN0cmF0ZWdpYyBtb3ZlLjwvcD4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGxhdGZvcm1pY29ucyI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGxhdGZvcm1pY29uIHdoYXRzYXBwIiB0aXRsZT0iV2hhdHNBcHAgQnVzaW5lc3MiPvCfkqw8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwbGF0Zm9ybWljb24gdGlrdG9rIiB0aXRsZT0iVGlrVG9rIj7wn461PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGxhdGZvcm1pY29uIGluc3RhZ3JhbSIgdGl0bGU9Ikluc3RhZ3JhbSI+8J+TuDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBsYXRmb3JtaWNvbiBsaW5rZWRpbiIgdGl0bGU9IkxpbmtlZEluIj7wn5K8PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGxhdGZvcm1pY29uIHdlYnNpdGUiIHRpdGxlPSJXZWJzaXRlIj7wn4yQPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0id2VsY29tZWZlYXR1cmVzIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmZWF0dXJlaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmZWF0dXJlaWNvbiI+4pymPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5JbnN0YW50IFJlc3VsdHM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmVhdHVyZWljb24iPuKcpjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+UGxhdGZvcm0gQW5hbHlzaXM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmVhdHVyZWljb24iPuKcpjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+U3RyYXRlZ2ljIE5leHQgU3RlcHM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRucHJpbWFyeSIgb25jbGljaz0ic3RhcnRBc3Nlc3NtZW50KCkiPgogICAgICAgICAgICAgICAgICAgIEJlZ2luIEFzc2Vzc21lbnQKICAgICAgICAgICAgICAgICAgICA8c3Bhbj7ihpI8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIAogICAgICAgICAgICA8IS0tIFF1ZXN0aW9ucyBTY3JlZW4gLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InF1ZXN0aW9uc2NyZWVuIiBpZD0icXVlc3Rpb25TY3JlZW4iPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icXVlc3Rpb25wcm9ncmVzcyI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InByb2dyZXNzdGV4dCIgaWQ9InByb2dyZXNzVGV4dCI+UXVlc3Rpb24gMSBvZiAxMDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9ncmVzc2JhcmNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzYmFyIiBpZD0icHJvZ3Jlc3NCYXIiIHN0eWxlPSJ3aWR0aDogMTAlIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJxdWVzdGlvbmNhdGVnb3J5IiBpZD0icXVlc3Rpb25DYXRlZ29yeSI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNhdGVnb3J5aWNvbiIgaWQ9ImNhdGVnb3J5SWNvbiI+8J+SrDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD0iY2F0ZWdvcnlUZXh0Ij5XaGF0c0FwcCBQcmVzZW5jZTwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJxdWVzdGlvbnRleHQiIGlkPSJxdWVzdGlvblRleHQiPjwvaDI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im9wdGlvbnNjb250YWluZXIiIGlkPSJvcHRpb25zQ29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICA8IS0tIE9wdGlvbnMgcG9wdWxhdGVkIGJ5IEpTIC0tPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAKICAgICAgICAgICAgPCEtLSBMZWFkIENhcHR1cmUgU2NyZWVuIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJsZWFkY2FwdHVyZSIgaWQ9ImxlYWRDYXB0dXJlIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlc3VsdHNjZWxlYnJhdGlvbiI+4pyoPC9kaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9ImZvcm10aXRsZSI+WW91ciBSZXN1bHRzIEFyZSBSZWFkeSE8L2gyPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImZvcm1zdWJ0aXRsZSI+RW50ZXIgeW91ciBkZXRhaWxzIHRvIHVubG9jayB5b3VyIHBlcnNvbmFsaXplZCBicmFuZCBhc3Nlc3NtZW50IHJlcG9ydDwvcD4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGVhZGZvcm0iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm1ncm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iZm9ybWxhYmVsIj5GaXJzdCBOYW1lPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJmb3JtaW5wdXQiIGlkPSJmaXJzdE5hbWUiIHBsYWNlaG9sZGVyPSJFbnRlciB5b3VyIGZpcnN0IG5hbWUiIHJlcXVpcmVkPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm1ncm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iZm9ybWxhYmVsIj5XaGF0c0FwcCBOdW1iZXI8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGVsIiBjbGFzcz0iZm9ybWlucHV0IiBpZD0id2hhdHNhcHAiIHBsYWNlaG9sZGVyPSIrMjU0IDdYWCBYWFggWFhYIiByZXF1aXJlZD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtZ3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9ImZvcm1sYWJlbCI+RW1haWwgQWRkcmVzczwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJlbWFpbCIgY2xhc3M9ImZvcm1pbnB1dCIgaWQ9ImVtYWlsIiBwbGFjZWhvbGRlcj0iRW50ZXIgeW91ciBlbWFpbCIgcmVxdWlyZWQ+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybWdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJmb3JtbGFiZWwiPkJ1c2luZXNzIE5hbWUgKE9wdGlvbmFsKTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybWlucHV0IiBpZD0iYnVzaW5lc3NOYW1lIiBwbGFjZWhvbGRlcj0iWW91ciBidXNpbmVzcyBvciBicmFuZCBuYW1lIj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtZ3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9ImZvcm1sYWJlbCI+Q291bnRyeTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9ImZvcm1zZWxlY3QiIGlkPSJjb3VudHJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IiI+U2VsZWN0IHlvdXIgY291bnRyeTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iS0UiPktlbnlhPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVRyI+VWdhbmRhPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUWiI+VGFuemFuaWE8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik5HIj5OaWdlcmlhPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJHSCI+R2hhbmE8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlpBIj5Tb3V0aCBBZnJpY2E8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlJXIj5Sd2FuZGE8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkVUIj5FdGhpb3BpYTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVVMiPlVuaXRlZCBTdGF0ZXM8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlVLIj5Vbml0ZWQgS2luZ2RvbTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQ0EiPkNhbmFkYTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iT1RIRVIiPk90aGVyPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0bnByaW1hcnkiIG9uY2xpY2s9ImNhcHR1cmVMZWFkQW5kU2hvd1Jlc3VsdHMoKSIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW4tdG9wOiAxMHB4OyI+CiAgICAgICAgICAgICAgICAgICAgICAgIFJldmVhbCBNeSBSZXN1bHRzCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPuKGkjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0icHJpdmFjeW5vdGUiPllvdXIgaW5mb3JtYXRpb24gaXMgc2VjdXJlIGFuZCB3aWxsIG5ldmVyIGJlIHNoYXJlZC4gQnkgY29udGludWluZywgeW91IGFncmVlIHRvIHJlY2VpdmUgeW91ciBwZXJzb25hbGl6ZWQgcmVzdWx0cyB2aWEgV2hhdHNBcHAgYW5kIGVtYWlsLjwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgCiAgICAgICAgICAgIDwhLS0gUmVzdWx0cyBTY3JlZW4gLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlc3VsdHNzY3JlZW4iIGlkPSJyZXN1bHRzU2NyZWVuIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlc3VsdHNjZWxlYnJhdGlvbiIgaWQ9InJlc3VsdEVtb2ppIj7wn4yfPC9kaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InJlc3VsdHNsZXZlbCIgaWQ9InJlc3VsdExldmVsIj5Gb3VuZGF0aW9uIEJ1aWxkZXI8L2gyPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9InJlc3VsdHN0YWdsaW5lIiBpZD0icmVzdWx0VGFnbGluZSI+WW91ciBzb3ZlcmVpZ24gam91cm5leSBpcyBqdXN0IGJlZ2lubmluZzwvcD4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NvcmVkaXNwbGF5Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY29yZWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY29yZWNpcmNsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2NvcmV2YWx1ZSIgaWQ9InNjb3JlVmFsdWUiPjA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2NvcmVtYXgiPi8gMzA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY29yZWxhYmVsIj5Zb3VyIFNjb3JlPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NvcmVpdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NvcmVjaXJjbGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNjb3JldmFsdWUiIGlkPSJwZXJjZW50VmFsdWUiPjAlPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NvcmVsYWJlbCI+UHJlc2VuY2UgTGV2ZWw8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwbGF0Zm9ybXN1bW1hcnkiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBsYXRmb3Jtc3VtbWFyeXRpdGxlIj5Zb3VyIFBsYXRmb3JtIFN0YXR1czwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBsYXRmb3JtdGFncyIgaWQ9InBsYXRmb3JtVGFncyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUG9wdWxhdGVkIGJ5IEpTIC0tPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlc3VsdHNpbnNpZ2h0cyI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5zaWdodHN0aXRsZSI+WW91ciBBc3Nlc3NtZW50IEluc2lnaHRzPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5zaWdodGdyaWQiIGlkPSJpbnNpZ2h0c0dyaWQiPgogICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFBvcHVsYXRlZCBieSBKUyAtLT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyZXN1bHRzbmV4dHN0ZXBzIj4KICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9Im5leHRzdGVwc3RpdGxlIiBpZD0ibmV4dFN0ZXBzVGl0bGUiPllvdXIgUmVjb21tZW5kZWQgTmV4dCBTdGVwPC9oMz4KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0ibmV4dHN0ZXBzZGVzY3JpcHRpb24iIGlkPSJuZXh0U3RlcHNEZXNjcmlwdGlvbiI+PC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ0bmdyb3VwIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iYnRucHJpbWFyeSIgaWQ9InByaW1hcnlDVEEiPgogICAgICAgICAgICAgICAgICAgICAgICBHZXQgWW91ciBBbmFseXNpcwogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj7ihpI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZHluYW1pY3BhcmFkaWdtc2FjYWRlbXkuY29tL2Jvb2tjYWxsIiBjbGFzcz0iYnRuc2Vjb25kYXJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgQm9vayBhIFN0cmF0ZWd5IENhbGwKICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvcHJpZXRhcnlub3RpY2UiPgogICAgICAgICAgICAgICAgICAgIMKpIDIwMjQgRHluYW1pYyBQYXJhZGlnbXMgJiBNZW50b3JzaGlwIFN1Y2Nlc3MgQWNhZGVtaWVz4oSiIOKAoiBTb3ZlcmVpZ24gQXJjaGl0ZWN0IEZyYW1ld29ya+KEoiDigKIgQWxsIFJpZ2h0cyBSZXNlcnZlZAogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAKICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgCiAgICA8IS0tIEZvb3RlciAtLT4KICAgIDxmb290ZXIgY2xhc3M9ImZvb3RlciI+CiAgICAgICAgPHAgY2xhc3M9ImZvb3RlcnRleHQiPgogICAgICAgICAgICDCqSAyMDI0IFRoZSBTb3ZlcmVpZ24gQXJjaGl0ZWN04oSiIHwgPGEgaHJlZj0iaHR0cHM6Ly9keW5hbWljcGFyYWRpZ21zYWNhZGVteS5jb20vIj5EeW5hbWljIFBhcmFkaWdtcyAmIE1lbnRvcnNoaXAgU3VjY2VzcyBBY2FkZW1pZXM8L2E+CiAgICAgICAgPC9wPgogICAgPC9mb290ZXI+CiAgICAKICAgIDxzY3JpcHQ+CiAgICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgIC8vIElQIFBST1RFQ1RJT04gU0NSSVBUUwogICAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAKICAgICAgICAvLyBEaXNhYmxlIHJpZ2h0LWNsaWNrIGNvbnRleHQgbWVudQogICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NvbnRleHRtZW51JywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKICAgICAgICAKICAgICAgICAvLyBEaXNhYmxlIGtleWJvYXJkIHNob3J0Y3V0cyBmb3IgY29weWluZy9zYXZpbmcKICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAvLyBEaXNhYmxlIEN0cmwrQywgQ3RybCtWLCBDdHJsK1MsIEN0cmwrUCwgQ3RybCtVLCBDdHJsK1NoaWZ0K0ksIEYxMgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAoZS5jdHJsS2V5ICYmIChlLmtleSA9PT0gJ2MnIHx8IGUua2V5ID09PSAnQycgfHwgZS5rZXkgPT09ICd2JyB8fCBlLmtleSA9PT0gJ1YnIHx8IGUua2V5ID09PSAncycgfHwgZS5rZXkgPT09ICdTJyB8fCBlLmtleSA9PT0gJ3AnIHx8IGUua2V5ID09PSAnUCcgfHwgZS5rZXkgPT09ICd1JyB8fCBlLmtleSA9PT0gJ1UnKSkgfHwKICAgICAgICAgICAgICAgIChlLmN0cmxLZXkgJiYgZS5zaGlmdEtleSAmJiAoZS5rZXkgPT09ICdpJyB8fCBlLmtleSA9PT0gJ0knIHx8IGUua2V5ID09PSAnaicgfHwgZS5rZXkgPT09ICdKJyB8fCBlLmtleSA9PT0gJ2MnIHx8IGUua2V5ID09PSAnQycpKSB8fAogICAgICAgICAgICAgICAgZS5rZXkgPT09ICdGMTInIHx8CiAgICAgICAgICAgICAgICAoZS5jdHJsS2V5ICYmIGUuc2hpZnRLZXkgJiYgZS5rZXkgPT09ICdEZWxldGUnKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIAogICAgICAgIC8vIERpc2FibGUgZHJhZyBhbmQgZHJvcAogICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdzdGFydCcsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSk7CiAgICAgICAgCiAgICAgICAgLy8gRGV0ZWN0IFByaW50U2NyZWVuIChsaW1pdGVkIGVmZmVjdGl2ZW5lc3MgYnV0IGFkZHMgZnJpY3Rpb24pCiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ1ByaW50U2NyZWVuJykgewogICAgICAgICAgICAgICAgLy8gU2hvdyBwcm90ZWN0aW9uIHNjcmVlbiBicmllZmx5CiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2NyZWVuc2hvdFByb3RlY3Rpb24nKS5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjcmVlbnNob3RQcm90ZWN0aW9uJykuY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJyk7CiAgICAgICAgICAgICAgICB9LCAyMDAwKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIAogICAgICAgIC8vIERldGVjdCB2aXNpYmlsaXR5IGNoYW5nZSAodGFiIHN3aXRjaGluZyBkdXJpbmcgcG90ZW50aWFsIHNjcmVlbnNob3QpCiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndmlzaWJpbGl0eWNoYW5nZScsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAoZG9jdW1lbnQuaGlkZGVuKSB7CiAgICAgICAgICAgICAgICAvLyBDb3VsZCBsb2cgdGhpcyBldmVudCB0byB0cmFjayBzdXNwaWNpb3VzIGJlaGF2aW9yCiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnVXNlciBzd2l0Y2hlZCBhd2F5IGZyb20gcGFnZScpOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgCiAgICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgIC8vIFdFQkhPT0sgQ09ORklHVVJBVElPTgogICAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAKICAgICAgICAvLyBJTVBPUlRBTlQ6IFJlcGxhY2UgdGhlc2Ugd2l0aCB5b3VyIGFjdHVhbCB3ZWJob29rIFVSTHMKICAgICAgICBjb25zdCBXRUJIT09LX0NPTkZJRyA9IHsKICAgICAgICAgICAgLy8gT3B0aW9uIDE6IE1ha2UuY29tL0ludGVncm9tYXQgd2ViaG9vawogICAgICAgICAgICBtYWtlV2ViaG9vazogJ2h0dHBzOi8vaG9vay5tYWtlLmNvbS9ZT1VSX1dFQkhPT0tfSUQnLAogICAgICAgICAgICAKICAgICAgICAgICAgLy8gT3B0aW9uIDI6IFphcGllciB3ZWJob29rCiAgICAgICAgICAgIHphcGllcldlYmhvb2s6ICdodHRwczovL2hvb2tzLnphcGllci5jb20vaG9va3MvY2F0Y2gvWU9VUl9XRUJIT09LX0lEJywKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIE9wdGlvbiAzOiBZb3VyIG93biBBUEkgZW5kcG9pbnQKICAgICAgICAgICAgY3VzdG9tRW5kcG9pbnQ6ICdodHRwczovL2R5bmFtaWNwYXJhZGlnbXNhY2FkZW15LmNvbS9hcGkvYXNzZXNzbWVudC9jYXB0dXJlJywKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIE9wdGlvbiA0OiBHb29nbGUgU2hlZXRzIHZpYSBBcHBzIFNjcmlwdAogICAgICAgICAgICBnb29nbGVTaGVldHNXZWJob29rOiAnaHR0cHM6Ly9zY3JpcHQuZ29vZ2xlLmNvbS9tYWNyb3Mvcy9ZT1VSX1NDUklQVF9JRC9leGVjJywKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIFdoaWNoIHdlYmhvb2sgdG8gdXNlIChjaGFuZ2UgdGhpcyB0byB5b3VyIHByZWZlcnJlZCBvcHRpb24pCiAgICAgICAgICAgIGFjdGl2ZVdlYmhvb2s6ICdtYWtlV2ViaG9vaycKICAgICAgICB9OwogICAgICAgIAogICAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAvLyBBU1NFU1NNRU5UIERBVEEgJiBMT0dJQwogICAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAKICAgICAgICBjb25zdCBxdWVzdGlvbnMgPSBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGNhdGVnb3J5OiAiV2hhdHNBcHAgUHJlc2VuY2UiLAogICAgICAgICAgICAgICAgaWNvbjogIvCfkqwiLAogICAgICAgICAgICAgICAgcXVlc3Rpb246ICJIb3cgZG8geW91IGN1cnJlbnRseSB1c2UgV2hhdHNBcHAgZm9yIHlvdXIgYnVzaW5lc3M/IiwKICAgICAgICAgICAgICAgIG9wdGlvbnM6IFsKICAgICAgICAgICAgICAgICAgICB7IHRleHQ6ICJQZXJzb25hbCBXaGF0c0FwcCBvbmx5LCBtaXhlZCB3aXRoIGJ1c2luZXNzIGNoYXRzIiwgcG9pbnRzOiAwLCB0YWdzOiBbIndoYXRzYXBwOmJhc2ljIl0gfSwKICAgICAgICAgICAgICAgICAgICB7IHRleHQ6ICJJIGhhdmUgV2hhdHNBcHAgQnVzaW5lc3MgYnV0IGRvbid0IHVzZSBhbGwgZmVhdHVyZXMiLCBwb2ludHM6IDEsIHRhZ3M6IFsid2hhdHNhcHA6YnVzaW5lc3MiXSB9LAogICAgICAgICAgICAgICAgICAgIHsgdGV4dDogIkkgdXNlIFdoYXRzQXBwIEJ1c2luZXNzIHdpdGggY2F0YWxvZyBhbmQgYXV0byByZXBsaWVzIiwgcG9pbnRzOiAyLCB0YWdzOiBbIndoYXRzYXBwOmFjdGl2ZSJdIH0sCiAgICAgICAgICAgICAgICAgICAgeyB0ZXh0OiAiSSBoYXZlIGJyb2FkY2FzdCBsaXN0cywgY2F0YWxvZ3MsIGFuZCB1c2UgaXQgYXMgbXkgQ1JNIiwgcG9pbnRzOiAzLCB0YWdzOiBbIndoYXRzYXBwOmFkdmFuY2VkIl0gfQogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjYXRlZ29yeTogIlNvY2lhbCBTZWxsaW5nIiwKICAgICAgICAgICAgICAgIGljb246ICLwn5O4IiwKICAgICAgICAgICAgICAgIHF1ZXN0aW9uOiAiSG93IGRvIHlvdSB1c2UgSW5zdGFncmFtIGZvciB5b3VyIGJ1c2luZXNzPyIsCiAgICAgICAgICAgICAgICBvcHRpb25zOiBbCiAgICAgICAgICAgICAgICAgICAgeyB0ZXh0OiAiSSBkb24ndCBoYXZlIGFuIEluc3RhZ3JhbSBvciByYXJlbHkgdXNlIGl0IiwgcG9pbnRzOiAwLCB0YWdzOiBbImluc3RhZ3JhbTpub25lIl0gfSwKICAgICAgICAgICAgICAgICAgICB7IHRleHQ6ICJJIHBvc3Qgc29tZXRpbWVzIGJ1dCBpdCdzIG5vdCBjb25zaXN0ZW50IiwgcG9pbnRzOiAxLCB0YWdzOiBbImluc3RhZ3JhbTpiYXNpYyJdIH0sCiAgICAgICAgICAgICAgICAgICAgeyB0ZXh0OiAiSSBwb3N0IHJlZ3VsYXJseSBhbmQgdXNlIFN0b3JpZXMgdG8gc2hvd2Nhc2UgcHJvZHVjdHMiLCBwb2ludHM6IDIsIHRhZ3M6IFsiaW5zdGFncmFtOmFjdGl2ZSJdIH0sCiAgICAgICAgICAgICAgICAgICAgeyB0ZXh0OiAiSW5zdGFncmFtIGlzIG15IHNob3Agd2l0aCBsaW5rZWQgY2F0YWxvZywgcmVlbHMsIGFuZCBETSBzYWxlcyIsIHBvaW50czogMywgdGFnczogWyJpbnN0YWdyYW06c2hvcCJdIH0KICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY2F0ZWdvcnk6ICJWaWRlbyBDb250ZW50IiwKICAgICAgICAgICAgICAgIGljb246ICLwn461IiwKICAgICAgICAgICAgICAgIHF1ZXN0aW9uOiAiSG93IGFyZSB5b3UgdXNpbmcgVGlrVG9rIGZvciB2aXNpYmlsaXR5IG9yIHNhbGVzPyIsCiAgICAgICAgICAgICAgICBvcHRpb25zOiBbCiAgICAgICAgICAgICAgICAgICAgeyB0ZXh0OiAiSSBkb24ndCB1c2UgVGlrVG9rIGZvciBidXNpbmVzcyIsIHBvaW50czogMCwgdGFnczogWyJ0aWt0b2s6bm9uZSJdIH0sCiAgICAgICAgICAgICAgICAgICAgeyB0ZXh0OiAiSSB3YXRjaCBUaWtUb2sgYnV0IGhhdmVuJ3QgY3JlYXRlZCBjb250ZW50IHlldCIsIHBvaW50czogMSwgdGFnczogWyJ0aWt0b2s6Y29uc3VtZXIiXSB9LAogICAgICAgICAgICAgICAgICAgIHsgdGV4dDogIkkgcG9zdCB2aWRlb3Mgb2NjYXNpb25hbGx5IHRvIGJ1aWxkIGF3YXJlbmVzcyIsIHBvaW50czogMiwgdGFnczogWyJ0aWt0b2s6Y3JlYXRpbmciXSB9LAogICAgICAgICAgICAgICAgICAgIHsgdGV4dDogIkkgYWN0aXZlbHkgc2VsbCBhbmQgZHJpdmUgdHJhZmZpYyBmcm9tIFRpa1RvayIsIHBvaW50czogMywgdGFnczogWyJ0aWt0b2s6c2VsbGluZyJdIH0KICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY2F0ZWdvcnk6ICJQcm9mZXNzaW9uYWwgUHJlc2VuY2UiLAogICAgICAgICAgICAgICAgaWNvbjogIvCfkrwiLAogICAgICAgICAgICAgICAgcXVlc3Rpb246ICJXaGF0IGlzIHlvdXIgTGlua2VkSW4gcHJlc2VuY2UgbGlrZT8iLAogICAgICAgICAgICAgICAgb3B0aW9uczogWwogICAgICAgICAgICAgICAgICAgIHsgdGV4dDogIkkgZG9uJ3QgaGF2ZSBMaW5rZWRJbiBvciBuZXZlciB1c2UgaXQiLCBwb2ludHM6IDAsIHRhZ3M6IFsibGlua2VkaW46bm9uZSJdIH0sCiAgICAgICAgICAgICAgICAgICAgeyB0ZXh0OiAiSSBoYXZlIGEgYmFzaWMgcHJvZmlsZSBidXQgaXQgbmVlZHMgdXBkYXRpbmciLCBwb2ludHM6IDEsIHRhZ3M6IFsibGlua2VkaW46YmFzaWMiXSB9LAogICAgICAgICAgICAgICAgICAgIHsgdGV4dDogIk15IHByb2ZpbGUgaXMgY29tcGxldGUgYW5kIEkgY29ubmVjdCB3aXRoIHBlb3BsZSIsIHBvaW50czogMiwgdGFnczogWyJsaW5rZWRpbjphY3RpdmUiXSB9LAogICAgICAgICAgICAgICAgICAgIHsgdGV4dDogIkkgaGF2ZSBhIGJyYW5kZWQgcHJvZmlsZSwgcG9zdCBjb250ZW50LCBhbmQgZ2VuZXJhdGUgbGVhZHMiLCBwb2ludHM6IDMsIHRhZ3M6IFsibGlua2VkaW46YnJhbmRlZCJdIH0KICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY2F0ZWdvcnk6ICJEaWdpdGFsIEZvdW5kYXRpb24iLAogICAgICAgICAgICAgICAgaWNvbjogIvCfjJAiLAogICAgICAgICAgICAgICAgcXVlc3Rpb246ICJEbyB5b3UgaGF2ZSBhIHdlYnNpdGUgZm9yIHlvdXIgYnVzaW5lc3M/IiwKICAgICAgICAgICAgICAgIG9wdGlvbnM6IFsKICAgICAgICAgICAgICAgICAgICB7IHRleHQ6ICJObyB3ZWJzaXRlIHlldCwgSSB1c2Ugb25seSBzb2NpYWwgbWVkaWEgYW5kIFdoYXRzQXBwIiwgcG9pbnRzOiAwLCB0YWdzOiBbIndlYnNpdGU6bm9uZSJdIH0sCiAgICAgICAgICAgICAgICAgICAgeyB0ZXh0OiAiSSBoYXZlIGEgYmFzaWMgd2Vic2l0ZSBidXQgaXQgbmVlZHMgd29yayIsIHBvaW50czogMSwgdGFnczogWyJ3ZWJzaXRlOmJhc2ljIl0gfSwKICAgICAgICAgICAgICAgICAgICB7IHRleHQ6ICJJIGhhdmUgYSBwcm9mZXNzaW9uYWwgd2Vic2l0ZSB0aGF0IHJlcHJlc2VudHMgbXkgYnJhbmQiLCBwb2ludHM6IDIsIHRhZ3M6IFsid2Vic2l0ZTpwcm9mZXNzaW9uYWwiXSB9LAogICAgICAgICAgICAgICAgICAgIHsgdGV4dDogIkkgaGF2ZSBtdWx0aXBsZSB3ZWJzaXRlcywgZnVubmVscywgYW5kIGxhbmRpbmcgcGFnZXMiLCBwb2ludHM6IDMsIHRhZ3M6IFsid2Vic2l0ZTplY29zeXN0ZW0iXSB9CiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGNhdGVnb3J5OiAiQnJhbmQgSWRlbnRpdHkiLAogICAgICAgICAgICAgICAgaWNvbjogIuKcqCIsCiAgICAgICAgICAgICAgICBxdWVzdGlvbjogIkhvdyBjbGVhciBpcyB5b3VyIGJyYW5kIGlkZW50aXR5IGFuZCBtZXNzYWdpbmc/IiwKICAgICAgICAgICAgICAgIG9wdGlvbnM6IFsKICAgICAgICAgICAgICAgICAgICB7IHRleHQ6ICJJJ20gc3RpbGwgZmlndXJpbmcgb3V0IHdobyBJIHNlcnZlIGFuZCB3aGF0IEkgb2ZmZXIiLCBwb2ludHM6IDAsIHRhZ3M6IFsiYnJhbmQ6dW5jbGVhciJdIH0sCiAgICAgICAgICAgICAgICAgICAgeyB0ZXh0OiAiSSBrbm93IG15IGF1ZGllbmNlIGJ1dCBzdHJ1Z2dsZSB0byBhcnRpY3VsYXRlIG15IHZhbHVlIiwgcG9pbnRzOiAxLCB0YWdzOiBbImJyYW5kOmRldmVsb3BpbmciXSB9LAogICAgICAgICAgICAgICAgICAgIHsgdGV4dDogIkkgaGF2ZSBjbGVhciBtZXNzYWdpbmcgYnV0IGl0IGNvdWxkIGJlIG1vcmUgbWFnbmV0aWMiLCBwb2ludHM6IDIsIHRhZ3M6IFsiYnJhbmQ6Y2xlYXIiXSB9LAogICAgICAgICAgICAgICAgICAgIHsgdGV4dDogIk15IGJyYW5kIHZvaWNlIGlzIGRpc3RpbmN0IGFuZCBjb25zaXN0ZW50bHkgY29tbXVuaWNhdGVkIGV2ZXJ5d2hlcmUiLCBwb2ludHM6IDMsIHRhZ3M6IFsiYnJhbmQ6c292ZXJlaWduIl0gfQogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjYXRlZ29yeTogIlZpc3VhbCBCcmFuZGluZyIsCiAgICAgICAgICAgICAgICBpY29uOiAi8J+OqCIsCiAgICAgICAgICAgICAgICBxdWVzdGlvbjogIkRvIHlvdSBoYXZlIHByb2Zlc3Npb25hbCBicmFuZCBhc3NldHMgKGxvZ28sIGNvbG9ycywgdGVtcGxhdGVzKT8iLAogICAgICAgICAgICAgICAgb3B0aW9uczogWwogICAgICAgICAgICAgICAgICAgIHsgdGV4dDogIk5vLCBJIHVzZSB3aGF0ZXZlciBJIGNhbiBmaW5kIG9yIGNyZWF0ZSBxdWlja2x5IiwgcG9pbnRzOiAwLCB0YWdzOiBbInZpc3VhbHM6bm9uZSJdIH0sCiAgICAgICAgICAgICAgICAgICAgeyB0ZXh0OiAiSSBoYXZlIGJhc2ljcyBidXQgdGhleSdyZSBub3QgY29oZXNpdmUgYWNyb3NzIHBsYXRmb3JtcyIsIHBvaW50czogMSwgdGFnczogWyJ2aXN1YWxzOmJhc2ljIl0gfSwKICAgICAgICAgICAgICAgICAgICB7IHRleHQ6ICJJIGhhdmUgYSBicmFuZCBraXQgYnV0IGRvbid0IHVzZSBpdCBjb25zaXN0ZW50bHkiLCBwb2ludHM6IDIsIHRhZ3M6IFsidmlzdWFsczpraXQiXSB9LAogICAgICAgICAgICAgICAgICAgIHsgdGV4dDogIkkgaGF2ZSBjb21wbGV0ZSBicmFuZCBndWlkZWxpbmVzIEkgZm9sbG93IHJlbGlnaW91c2x5IiwgcG9pbnRzOiAzLCB0YWdzOiBbInZpc3VhbHM6Y29tcGxldGUiXSB9CiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGNhdGVnb3J5OiAiTGVhZCBDYXB0dXJlIiwKICAgICAgICAgICAgICAgIGljb246ICLwn5OlIiwKICAgICAgICAgICAgICAgIHF1ZXN0aW9uOiAiSG93IGRvIHlvdSBjb2xsZWN0IGxlYWRzIGFuZCBmb2xsb3cgdXAgd2l0aCBwcm9zcGVjdHM/IiwKICAgICAgICAgICAgICAgIG9wdGlvbnM6IFsKICAgICAgICAgICAgICAgICAgICB7IHRleHQ6ICJJIHNhdmUgY29udGFjdHMgaW4gbXkgcGhvbmUgYW5kIGZvbGxvdyB1cCB3aGVuIEkgcmVtZW1iZXIiLCBwb2ludHM6IDAsIHRhZ3M6IFsibGVhZHM6bWFudWFsIl0gfSwKICAgICAgICAgICAgICAgICAgICB7IHRleHQ6ICJJIHVzZSBXaGF0c0FwcCBicm9hZGNhc3QgbGlzdHMgZm9yIGZvbGxvdyB1cCIsIHBvaW50czogMSwgdGFnczogWyJsZWFkczpicm9hZGNhc3QiXSB9LAogICAgICAgICAgICAgICAgICAgIHsgdGV4dDogIkkgaGF2ZSBmb3JtcyBvciBsYW5kaW5nIHBhZ2VzIHRoYXQgY29sbGVjdCBlbWFpbHMiLCBwb2ludHM6IDIsIHRhZ3M6IFsibGVhZHM6Zm9ybXMiXSB9LAogICAgICAgICAgICAgICAgICAgIHsgdGV4dDogIkkgaGF2ZSBjb21wbGV0ZSBmdW5uZWxzIHdpdGggYXV0b21hdGVkIG51cnR1cmUgc2VxdWVuY2VzIiwgcG9pbnRzOiAzLCB0YWdzOiBbImxlYWRzOmF1dG9tYXRlZCJdIH0KICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY2F0ZWdvcnk6ICJDb250ZW50IFN0cmF0ZWd5IiwKICAgICAgICAgICAgICAgIGljb246ICLwn5OxIiwKICAgICAgICAgICAgICAgIHF1ZXN0aW9uOiAiSG93IGNvbnNpc3RlbnQgaXMgeW91ciBjb250ZW50IGNyZWF0aW9uIGFjcm9zcyBwbGF0Zm9ybXM/IiwKICAgICAgICAgICAgICAgIG9wdGlvbnM6IFsKICAgICAgICAgICAgICAgICAgICB7IHRleHQ6ICJJIHBvc3Qgc3BvcmFkaWNhbGx5IHdoZW4gSSBoYXZlIHRpbWUgb3IgZmVlbCBpbnNwaXJlZCIsIHBvaW50czogMCwgdGFnczogWyJjb250ZW50OnNwb3JhZGljIl0gfSwKICAgICAgICAgICAgICAgICAgICB7IHRleHQ6ICJJIHRyeSB0byBiZSBjb25zaXN0ZW50IGJ1dCBsaWZlIGFuZCBidXNpbmVzcyBnZXQgaW4gdGhlIHdheSIsIHBvaW50czogMSwgdGFnczogWyJjb250ZW50OnRyeWluZyJdIH0sCiAgICAgICAgICAgICAgICAgICAgeyB0ZXh0OiAiSSBoYXZlIGEgY29udGVudCBjYWxlbmRhciBJIG1vc3RseSBmb2xsb3ciLCBwb2ludHM6IDIsIHRhZ3M6IFsiY29udGVudDpwbGFubmVkIl0gfSwKICAgICAgICAgICAgICAgICAgICB7IHRleHQ6ICJJIGhhdmUgc3lzdGVtcyBhbmQgYmF0Y2hpbmcgdGhhdCBlbnN1cmUgY29uc2lzdGVudCB2aXNpYmlsaXR5IiwgcG9pbnRzOiAzLCB0YWdzOiBbImNvbnRlbnQ6c3lzdGVtYXRpYyJdIH0KICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY2F0ZWdvcnk6ICJCdXNpbmVzcyBEaXNjb3ZlcnkiLAogICAgICAgICAgICAgICAgaWNvbjogIvCflI0iLAogICAgICAgICAgICAgICAgcXVlc3Rpb246ICJIb3cgZG8gbmV3IGNsaWVudHMgdHlwaWNhbGx5IGZpbmQgeW91PyIsCiAgICAgICAgICAgICAgICBvcHRpb25zOiBbCiAgICAgICAgICAgICAgICAgICAgeyB0ZXh0OiAiT25seSB0aHJvdWdoIHdvcmQgb2YgbW91dGggYW5kIHBlcnNvbmFsIHJlZmVycmFscyIsIHBvaW50czogMCwgdGFnczogWyJkaXNjb3Zlcnk6cmVmZXJyYWwiXSB9LAogICAgICAgICAgICAgICAgICAgIHsgdGV4dDogIlJlZmVycmFscyBwbHVzIHNvbWUgZmluZCBtZSBvbiBXaGF0c0FwcCBTdGF0dXMgb3Igc29jaWFsIiwgcG9pbnRzOiAxLCB0YWdzOiBbImRpc2NvdmVyeTptaXhlZCJdIH0sCiAgICAgICAgICAgICAgICAgICAgeyB0ZXh0OiAiTXVsdGlwbGUgY2hhbm5lbHM6IHJlZmVycmFscywgc29jaWFsLCBhbmQgc29tZSBvbmxpbmUgc2VhcmNoIiwgcG9pbnRzOiAyLCB0YWdzOiBbImRpc2NvdmVyeTptdWx0aWNoYW5uZWwiXSB9LAogICAgICAgICAgICAgICAgICAgIHsgdGV4dDogIkkgaGF2ZSBpbnRlbnRpb25hbCBmdW5uZWxzIHRoYXQgYnJpbmcgaW4gbGVhZHMgZnJvbSBtdWx0aXBsZSBzb3VyY2VzIiwgcG9pbnRzOiAzLCB0YWdzOiBbImRpc2NvdmVyeTpmdW5uZWxzIl0gfQogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgXTsKICAgICAgICAKICAgICAgICBjb25zdCBsZXZlbHMgPSB7CiAgICAgICAgICAgIGZvdW5kYXRpb246IHsKICAgICAgICAgICAgICAgIG5hbWU6ICJGb3VuZGF0aW9uIEJ1aWxkZXIiLAogICAgICAgICAgICAgICAgZW1vamk6ICLwn4yxIiwKICAgICAgICAgICAgICAgIHRhZ2xpbmU6ICJZb3VyIHNvdmVyZWlnbiBqb3VybmV5IGJlZ2lucyB3aXRoIHNvbGlkIGZvdW5kYXRpb25zIiwKICAgICAgICAgICAgICAgIGNvbG9yOiAiZm91bmRhdGlvbiIsCiAgICAgICAgICAgICAgICBtaW5TY29yZTogMCwKICAgICAgICAgICAgICAgIG1heFNjb3JlOiAxMCwKICAgICAgICAgICAgICAgIGluc2lnaHRzOiB7CiAgICAgICAgICAgICAgICAgICAgc3RyZW5ndGhzOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICJZb3UgaGF2ZSB2aXNpb24gYW5kIGFtYml0aW9uIGZvciB5b3VyIGJyYW5kIiwKICAgICAgICAgICAgICAgICAgICAgICAgIllvdSdyZSBsZXZlcmFnaW5nIG1vYmlsZSBwbGF0Zm9ybXMgZWZmZWN0aXZlbHkiCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBvcHBvcnR1bml0aWVzOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICJFc3RhYmxpc2ggeW91ciBvd25lZCBkaWdpdGFsIGZvdW5kYXRpb24gYmV5b25kIHNvY2lhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJEZWZpbmUgeW91ciBicmFuZCBpZGVudGl0eSBhbmQgc292ZXJlaWduIHZvaWNlIgogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBuZXh0U3RlcHNUaXRsZTogIlN0YXJ0IEJ1aWxkaW5nIFlvdXIgRm91bmRhdGlvbiIsCiAgICAgICAgICAgICAgICBuZXh0U3RlcHNEZXNjcmlwdGlvbjogIllvdSdyZSBhdCB0aGUgcGVyZmVjdCBzdGFydGluZyBwb2ludCB0byBidWlsZCBzb21ldGhpbmcgc292ZXJlaWduIGZyb20gdGhlIGdyb3VuZCB1cC4gWW91ciBwZXJzb25hbGl6ZWQgRm91bmRhdGlvbiBCbHVlcHJpbnQgd2lsbCBnaXZlIHlvdSB0aGUgZXhhY3Qgc3RlcHMgdG8gbW92ZSBmcm9tIHBsYXRmb3JtIGRlcGVuZGVudCB0byBwbGF0Zm9ybSBpbmRlcGVuZGVudCwgc3RhcnRpbmcgd2l0aCB3aGF0IHlvdSBhbHJlYWR5IGhhdmUuIiwKICAgICAgICAgICAgICAgIGN0YVRleHQ6ICJHZXQgWW91ciBGb3VuZGF0aW9uIEJsdWVwcmludCIsCiAgICAgICAgICAgICAgICBjdGFMaW5rOiAiaHR0cHM6Ly9keW5hbWljcGFyYWRpZ21zYWNhZGVteS5jb20vZm91bmRhdGlvbnN0YXJ0IgogICAgICAgICAgICB9LAogICAgICAgICAgICByaXNpbmc6IHsKICAgICAgICAgICAgICAgIG5hbWU6ICJSaXNpbmcgQXJjaGl0ZWN0IiwKICAgICAgICAgICAgICAgIGVtb2ppOiAi8J+agCIsCiAgICAgICAgICAgICAgICB0YWdsaW5lOiAiWW91IGhhdmUgZm91bmRhdGlvbnMsIG5vdyBpdCdzIHRpbWUgdG8gYnVpbGQgc3RydWN0dXJlIiwKICAgICAgICAgICAgICAgIGNvbG9yOiAicmlzaW5nIiwKICAgICAgICAgICAgICAgIG1pblNjb3JlOiAxMSwKICAgICAgICAgICAgICAgIG1heFNjb3JlOiAyMCwKICAgICAgICAgICAgICAgIGluc2lnaHRzOiB7CiAgICAgICAgICAgICAgICAgICAgc3RyZW5ndGhzOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICJZb3UndmUgZXN0YWJsaXNoZWQgcHJlc2VuY2UgYWNyb3NzIHBsYXRmb3JtcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJZb3UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBjb25zaXN0ZW5jeSIKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIG9wcG9ydHVuaXRpZXM6IFsKICAgICAgICAgICAgICAgICAgICAgICAgIlN0cmVuZ3RoZW4geW91ciBzeXN0ZW1zIGFuZCBjcmVhdGUgYXV0b21hdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICJCdWlsZCBhIGNvaGVzaXZlIGJyYW5kIGV4cGVyaWVuY2UgYWNyb3NzIGFsbCB0b3VjaHBvaW50cyIKICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgbmV4dFN0ZXBzVGl0bGU6ICJFbGV2YXRlIFlvdXIgQXJjaGl0ZWN0dXJlIiwKICAgICAgICAgICAgICAgIG5leHRTdGVwc0Rlc2NyaXB0aW9uOiAiWW91J3ZlIGxhaWQgZ3JvdW5kd29yayBidXQgdGhlcmUgYXJlIGdhcHMgaW4geW91ciBzdHJ1Y3R1cmUuIFlvdXIgRGlnaXRhbCBQcmVzZW5jZSBBdWRpdCB3aWxsIHJldmVhbCBleGFjdGx5IHdoZXJlIHRvIGZvY3VzIHlvdXIgZW5lcmd5IGZvciBtYXhpbXVtIGltcGFjdCwgYW5kIGhvdyB0byBjb25uZWN0IHlvdXIgV2hhdHNBcHAsIHNvY2lhbCwgYW5kIHdlYiBwcmVzZW5jZSBpbnRvIG9uZSBzb3ZlcmVpZ24gZWNvc3lzdGVtLiIsCiAgICAgICAgICAgICAgICBjdGFUZXh0OiAiR2V0IFlvdXIgUHJlc2VuY2UgQXVkaXQiLAogICAgICAgICAgICAgICAgY3RhTGluazogImh0dHBzOi8vZHluYW1pY3BhcmFkaWdtc2FjYWRlbXkuY29tL3Jpc2luZ2F1ZGl0IgogICAgICAgICAgICB9LAogICAgICAgICAgICBzdHJhdGVnaWM6IHsKICAgICAgICAgICAgICAgIG5hbWU6ICJTdHJhdGVnaWMgU292ZXJlaWduIiwKICAgICAgICAgICAgICAgIGVtb2ppOiAi8J+RkSIsCiAgICAgICAgICAgICAgICB0YWdsaW5lOiAiWW91IGhhdmUgcHJlc2VuY2UsIG5vdyBvcHRpbWl6ZSBmb3IgbGVnYWN5IiwKICAgICAgICAgICAgICAgIGNvbG9yOiAic3RyYXRlZ2ljIiwKICAgICAgICAgICAgICAgIG1pblNjb3JlOiAyMSwKICAgICAgICAgICAgICAgIG1heFNjb3JlOiAzMCwKICAgICAgICAgICAgICAgIGluc2lnaHRzOiB7CiAgICAgICAgICAgICAgICAgICAgc3RyZW5ndGhzOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICJTdHJvbmcgbXVsdGkgcGxhdGZvcm0gcHJlc2VuY2UgZXN0YWJsaXNoZWQiLAogICAgICAgICAgICAgICAgICAgICAgICAiQ2xlYXIgYnJhbmQgaWRlbnRpdHkgYW5kIGJ1c2luZXNzIHN5c3RlbXMiCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBvcHBvcnR1bml0aWVzOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICJPcHRpbWl6ZSBmb3Igc2NhbGFiaWxpdHkgYW5kIGRlZXBlciBpbXBhY3QiLAogICAgICAgICAgICAgICAgICAgICAgICAiQnVpbGQgbGVnYWN5IGZvY3VzZWQgZWNvc3lzdGVtIHdpdGggcHJlbWl1bSBwb3NpdGlvbmluZyIKICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgbmV4dFN0ZXBzVGl0bGU6ICJPcHRpbWl6ZSBmb3IgU292ZXJlaWdudHkiLAogICAgICAgICAgICAgICAgbmV4dFN0ZXBzRGVzY3JpcHRpb246ICJZb3UncmUgYWhlYWQgb2YgbW9zdCwgYnV0IHRoZXJlJ3MgYWx3YXlzIHJvb20gZm9yIG9wdGltaXphdGlvbi4gWW91ciBTdHJhdGVnaWMgQW5hbHlzaXMgd2lsbCByZXZlYWwgaGlkZGVuIG9wcG9ydHVuaXRpZXMgdG8gYW1wbGlmeSB5b3VyIHJlYWNoLCBzdHJlbmd0aGVuIHlvdXIgTGlua2VkSW4gcHJlc2VuY2UgZm9yIHByZW1pdW0gcG9zaXRpb25pbmcsIGFuZCBidWlsZCB0aGUgY29tcGxldGUgc292ZXJlaWduIGFyY2hpdGVjdHVyZSBmb3IgeW91ciBsZWdhY3kuIiwKICAgICAgICAgICAgICAgIGN0YVRleHQ6ICJHZXQgU3RyYXRlZ2ljIEFuYWx5c2lzIiwKICAgICAgICAgICAgICAgIGN0YUxpbms6ICJodHRwczovL2R5bmFtaWNwYXJhZGlnbXNhY2FkZW15LmNvbS9zdHJhdGVnaWNhbmFseXNpcyIKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICAgICAgCiAgICAgICAgbGV0IGN1cnJlbnRRdWVzdGlvbiA9IDA7CiAgICAgICAgbGV0IHRvdGFsU2NvcmUgPSAwOwogICAgICAgIGxldCBhbnN3ZXJzID0gW107CiAgICAgICAgbGV0IHBsYXRmb3JtU3RhdHVzID0gewogICAgICAgICAgICB3aGF0c2FwcDogIm5vbmUiLAogICAgICAgICAgICBpbnN0YWdyYW06ICJub25lIiwKICAgICAgICAgICAgdGlrdG9rOiAibm9uZSIsCiAgICAgICAgICAgIGxpbmtlZGluOiAibm9uZSIsCiAgICAgICAgICAgIHdlYnNpdGU6ICJub25lIgogICAgICAgIH07CiAgICAgICAgbGV0IHNlc3Npb25JZCA9IGdlbmVyYXRlU2Vzc2lvbklkKCk7CiAgICAgICAgCiAgICAgICAgZnVuY3Rpb24gZ2VuZXJhdGVTZXNzaW9uSWQoKSB7CiAgICAgICAgICAgIHJldHVybiAnc2Vzc18nICsgRGF0ZS5ub3coKSArICdfJyArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA5KTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZnVuY3Rpb24gc3RhcnRBc3Nlc3NtZW50KCkgewogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd2VsY29tZVNjcmVlbicpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxdWVzdGlvblNjcmVlbicpLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RlcDEnKS5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKTsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0ZXAxJykuY2xhc3NMaXN0LmFkZCgnY29tcGxldGVkJyk7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGVwMicpLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwogICAgICAgICAgICBsb2FkUXVlc3Rpb24oKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIFRyYWNrIGFzc2Vzc21lbnQgc3RhcnQKICAgICAgICAgICAgdHJhY2tFdmVudCgnYXNzZXNzbWVudF9zdGFydGVkJywgeyBzZXNzaW9uSWQgfSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGZ1bmN0aW9uIGxvYWRRdWVzdGlvbigpIHsKICAgICAgICAgICAgY29uc3QgcSA9IHF1ZXN0aW9uc1tjdXJyZW50UXVlc3Rpb25dOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJvZ3Jlc3NUZXh0JykudGV4dENvbnRlbnQgPSBgUXVlc3Rpb24gJHtjdXJyZW50UXVlc3Rpb24gKyAxfSBvZiAke3F1ZXN0aW9ucy5sZW5ndGh9YDsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Byb2dyZXNzQmFyJykuc3R5bGUud2lkdGggPSBgJHsoKGN1cnJlbnRRdWVzdGlvbiArIDEpIC8gcXVlc3Rpb25zLmxlbmd0aCkgKiAxMDB9JWA7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYXRlZ29yeUljb24nKS50ZXh0Q29udGVudCA9IHEuaWNvbjsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhdGVnb3J5VGV4dCcpLnRleHRDb250ZW50ID0gcS5jYXRlZ29yeTsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3F1ZXN0aW9uVGV4dCcpLnRleHRDb250ZW50ID0gcS5xdWVzdGlvbjsKICAgICAgICAgICAgCiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnNDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3B0aW9uc0NvbnRhaW5lcicpOwogICAgICAgICAgICBvcHRpb25zQ29udGFpbmVyLmlubmVySFRNTCA9ICcnOwogICAgICAgICAgICAKICAgICAgICAgICAgY29uc3QgbGV0dGVycyA9IFsnQScsICdCJywgJ0MnLCAnRCddOwogICAgICAgICAgICBxLm9wdGlvbnMuZm9yRWFjaCgob3B0aW9uLCBpbmRleCkgPT4gewogICAgICAgICAgICAgICAgY29uc3QgYnRuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgICAgICAgICBidG4uY2xhc3NOYW1lID0gJ29wdGlvbmJ0bic7CiAgICAgICAgICAgICAgICBidG4uaW5uZXJIVE1MID0gYAogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im9wdGlvbmxldHRlciI+JHtsZXR0ZXJzW2luZGV4XX08L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJvcHRpb250ZXh0Ij4ke29wdGlvbi50ZXh0fTwvZGl2PgogICAgICAgICAgICAgICAgYDsKICAgICAgICAgICAgICAgIGJ0bi5vbmNsaWNrID0gKCkgPT4gc2VsZWN0T3B0aW9uKGluZGV4LCBvcHRpb24ucG9pbnRzLCBvcHRpb24udGFncyk7CiAgICAgICAgICAgICAgICBvcHRpb25zQ29udGFpbmVyLmFwcGVuZENoaWxkKGJ0bik7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBmdW5jdGlvbiBzZWxlY3RPcHRpb24oaW5kZXgsIHBvaW50cywgdGFncykgewogICAgICAgICAgICBjb25zdCBvcHRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm9wdGlvbmJ0bicpOwogICAgICAgICAgICBvcHRpb25zLmZvckVhY2gob3B0ID0+IG9wdC5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3RlZCcpKTsKICAgICAgICAgICAgb3B0aW9uc1tpbmRleF0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0ZWQnKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGFuc3dlcnNbY3VycmVudFF1ZXN0aW9uXSA9IHsgCiAgICAgICAgICAgICAgICBxdWVzdGlvbkluZGV4OiBjdXJyZW50UXVlc3Rpb24sCiAgICAgICAgICAgICAgICBxdWVzdGlvbjogcXVlc3Rpb25zW2N1cnJlbnRRdWVzdGlvbl0ucXVlc3Rpb24sCiAgICAgICAgICAgICAgICBzZWxlY3RlZEluZGV4OiBpbmRleCwgCiAgICAgICAgICAgICAgICBzZWxlY3RlZFRleHQ6IHF1ZXN0aW9uc1tjdXJyZW50UXVlc3Rpb25dLm9wdGlvbnNbaW5kZXhdLnRleHQsCiAgICAgICAgICAgICAgICBwb2ludHMsIAogICAgICAgICAgICAgICAgdGFncyAKICAgICAgICAgICAgfTsKICAgICAgICAgICAgdG90YWxTY29yZSArPSBwb2ludHM7CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAodGFncykgewogICAgICAgICAgICAgICAgdGFncy5mb3JFYWNoKHRhZyA9PiB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgW3BsYXRmb3JtLCBzdGF0dXNdID0gdGFnLnNwbGl0KCc6Jyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHBsYXRmb3JtU3RhdHVzLmhhc093blByb3BlcnR5KHBsYXRmb3JtKSkgewogICAgICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybVN0YXR1c1twbGF0Zm9ybV0gPSBzdGF0dXM7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewogICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRRdWVzdGlvbiA8IHF1ZXN0aW9ucy5sZW5ndGggLSAxKSB7CiAgICAgICAgICAgICAgICAgICAgY3VycmVudFF1ZXN0aW9uKys7CiAgICAgICAgICAgICAgICAgICAgbG9hZFF1ZXN0aW9uKCk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHNob3dMZWFkQ2FwdHVyZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCA1MDApOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBmdW5jdGlvbiBzaG93TGVhZENhcHR1cmUoKSB7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxdWVzdGlvblNjcmVlbicpLmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGVhZENhcHR1cmUnKS5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0ZXAyJykuY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJyk7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGVwMicpLmNsYXNzTGlzdC5hZGQoJ2NvbXBsZXRlZCcpOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RlcDMnKS5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIFRyYWNrIGFzc2Vzc21lbnQgY29tcGxldGlvbiAoYmVmb3JlIGxlYWQgY2FwdHVyZSkKICAgICAgICAgICAgdHJhY2tFdmVudCgnYXNzZXNzbWVudF9jb21wbGV0ZWQnLCB7IAogICAgICAgICAgICAgICAgc2Vzc2lvbklkLCAKICAgICAgICAgICAgICAgIHNjb3JlOiB0b3RhbFNjb3JlLAogICAgICAgICAgICAgICAgcGxhdGZvcm1TdGF0dXMgCiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgLy8gTEVBRCBDQVBUVVJFICYgQ1JNIElOVEVHUkFUSU9OCiAgICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgIAogICAgICAgIGFzeW5jIGZ1bmN0aW9uIGNhcHR1cmVMZWFkQW5kU2hvd1Jlc3VsdHMoKSB7CiAgICAgICAgICAgIGNvbnN0IGZpcnN0TmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaXJzdE5hbWUnKS52YWx1ZS50cmltKCk7CiAgICAgICAgICAgIGNvbnN0IGVtYWlsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VtYWlsJykudmFsdWUudHJpbSgpOwogICAgICAgICAgICBjb25zdCB3aGF0c2FwcE51bSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3aGF0c2FwcCcpLnZhbHVlLnRyaW0oKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICghZmlyc3ROYW1lIHx8ICFlbWFpbCB8fCAhd2hhdHNhcHBOdW0pIHsKICAgICAgICAgICAgICAgIGFsZXJ0KCdQbGVhc2UgZW50ZXIgeW91ciBuYW1lLCBXaGF0c0FwcCBudW1iZXIsIGFuZCBlbWFpbCB0byBzZWUgeW91ciByZXN1bHRzLicpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBTaG93IGxvYWRpbmcKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvYWRpbmdPdmVybGF5JykuY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBEZXRlcm1pbmUgbGV2ZWwKICAgICAgICAgICAgbGV0IGxldmVsOwogICAgICAgICAgICBpZiAodG90YWxTY29yZSA8PSAxMCkgewogICAgICAgICAgICAgICAgbGV2ZWwgPSBsZXZlbHMuZm91bmRhdGlvbjsKICAgICAgICAgICAgfSBlbHNlIGlmICh0b3RhbFNjb3JlIDw9IDIwKSB7CiAgICAgICAgICAgICAgICBsZXZlbCA9IGxldmVscy5yaXNpbmc7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBsZXZlbCA9IGxldmVscy5zdHJhdGVnaWM7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIEJ1aWxkIGNvbXBsZXRlIGRhdGEgcGF5bG9hZAogICAgICAgICAgICBjb25zdCBhc3Nlc3NtZW50RGF0YSA9IHsKICAgICAgICAgICAgICAgIC8vIFNlc3Npb24gJiBUaW1pbmcKICAgICAgICAgICAgICAgIHNlc3Npb25JZDogc2Vzc2lvbklkLAogICAgICAgICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksCiAgICAgICAgICAgICAgICBjb21wbGV0ZWRBdDogbmV3IERhdGUoKS50b0xvY2FsZVN0cmluZygnZW4tVVMnLCB7IHRpbWVab25lOiAnQWZyaWNhL05haXJvYmknIH0pLAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAvLyBDb250YWN0IEluZm9ybWF0aW9uCiAgICAgICAgICAgICAgICBmaXJzdE5hbWU6IGZpcnN0TmFtZSwKICAgICAgICAgICAgICAgIGVtYWlsOiBlbWFpbCwKICAgICAgICAgICAgICAgIHdoYXRzYXBwOiB3aGF0c2FwcE51bSwKICAgICAgICAgICAgICAgIGJ1c2luZXNzTmFtZTogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J1c2luZXNzTmFtZScpLnZhbHVlLnRyaW0oKSB8fCAnTm90IHByb3ZpZGVkJywKICAgICAgICAgICAgICAgIGNvdW50cnk6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb3VudHJ5JykudmFsdWUgfHwgJ05vdCBzZWxlY3RlZCcsCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIC8vIEFzc2Vzc21lbnQgUmVzdWx0cwogICAgICAgICAgICAgICAgc2NvcmU6IHRvdGFsU2NvcmUsCiAgICAgICAgICAgICAgICBtYXhTY29yZTogMzAsCiAgICAgICAgICAgICAgICBwZXJjZW50YWdlOiBNYXRoLnJvdW5kKCh0b3RhbFNjb3JlIC8gMzApICogMTAwKSwKICAgICAgICAgICAgICAgIGxldmVsTmFtZTogbGV2ZWwubmFtZSwKICAgICAgICAgICAgICAgIGxldmVsQ29sb3I6IGxldmVsLmNvbG9yLAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAvLyBQbGF0Zm9ybSBTdGF0dXMgKGZvciBzZWdtZW50YXRpb24pCiAgICAgICAgICAgICAgICBwbGF0Zm9ybVN0YXR1czogcGxhdGZvcm1TdGF0dXMsCiAgICAgICAgICAgICAgICB3aGF0c2FwcExldmVsOiBwbGF0Zm9ybVN0YXR1cy53aGF0c2FwcCwKICAgICAgICAgICAgICAgIGluc3RhZ3JhbUxldmVsOiBwbGF0Zm9ybVN0YXR1cy5pbnN0YWdyYW0sCiAgICAgICAgICAgICAgICB0aWt0b2tMZXZlbDogcGxhdGZvcm1TdGF0dXMudGlrdG9rLAogICAgICAgICAgICAgICAgbGlua2VkaW5MZXZlbDogcGxhdGZvcm1TdGF0dXMubGlua2VkaW4sCiAgICAgICAgICAgICAgICB3ZWJzaXRlTGV2ZWw6IHBsYXRmb3JtU3RhdHVzLndlYnNpdGUsCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIC8vIERldGFpbGVkIEFuc3dlcnMgKGZvciBkZWVwIGFuYWx5c2lzKQogICAgICAgICAgICAgICAgYW5zd2VyczogYW5zd2VycywKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgLy8gUmVjb21tZW5kZWQgQWN0aW9uCiAgICAgICAgICAgICAgICByZWNvbW1lbmRlZENUQTogbGV2ZWwuY3RhTGluaywKICAgICAgICAgICAgICAgIHJlY29tbWVuZGVkT2ZmZXI6IGxldmVsLmN0YVRleHQsCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIC8vIFRyYWNraW5nCiAgICAgICAgICAgICAgICBzb3VyY2U6ICdicmFuZF9hc3Nlc3NtZW50JywKICAgICAgICAgICAgICAgIGZ1bm5lbDogJ3NvdmVyZWlnbl9hcmNoaXRlY3QnLAogICAgICAgICAgICAgICAgdXRtU291cmNlOiBnZXRVcmxQYXJhbSgndXRtX3NvdXJjZScpIHx8ICdkaXJlY3QnLAogICAgICAgICAgICAgICAgdXRtTWVkaXVtOiBnZXRVcmxQYXJhbSgndXRtX21lZGl1bScpIHx8ICcnLAogICAgICAgICAgICAgICAgdXRtQ2FtcGFpZ246IGdldFVybFBhcmFtKCd1dG1fY2FtcGFpZ24nKSB8fCAnJwogICAgICAgICAgICB9OwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gU2VuZCB0byB3ZWJob29rIChiYWNrZ3JvdW5kIGNhcHR1cmUpCiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBhd2FpdCBzZW5kVG9XZWJob29rKGFzc2Vzc21lbnREYXRhKTsKICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdEYXRhIHNlbnQgdG8gQ1JNIHN1Y2Nlc3NmdWxseScpOwogICAgICAgICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignV2ViaG9vayBlcnJvcjonLCBlcnJvcik7CiAgICAgICAgICAgICAgICAvLyBDb250aW51ZSBhbnl3YXkgLSBkb24ndCBibG9jayB0aGUgdXNlciBleHBlcmllbmNlCiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIEhpZGUgbG9hZGluZyBhbmQgc2hvdyByZXN1bHRzCiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2FkaW5nT3ZlcmxheScpLmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpOwogICAgICAgICAgICBzaG93UmVzdWx0cyhsZXZlbCwgYXNzZXNzbWVudERhdGEpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBhc3luYyBmdW5jdGlvbiBzZW5kVG9XZWJob29rKGRhdGEpIHsKICAgICAgICAgICAgLy8gR2V0IHRoZSBhY3RpdmUgd2ViaG9vayBVUkwKICAgICAgICAgICAgY29uc3Qgd2ViaG9va1VybCA9IFdFQkhPT0tfQ09ORklHW1dFQkhPT0tfQ09ORklHLmFjdGl2ZVdlYmhvb2tdOwogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKCF3ZWJob29rVXJsIHx8IHdlYmhvb2tVcmwuaW5jbHVkZXMoJ1lPVVJfV0VCSE9PSycpKSB7CiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ1dlYmhvb2sgbm90IGNvbmZpZ3VyZWQuIERhdGEgbG9nZ2VkIHRvIGNvbnNvbGU6JywgZGF0YSk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIFNlbmQgZGF0YSB0byB3ZWJob29rCiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2god2ViaG9va1VybCwgewogICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsCiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7CiAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBtb2RlOiAnbm8tY29ycycsIC8vIEZvciBjcm9zcy1vcmlnaW4gd2ViaG9va3MKICAgICAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGRhdGEpCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBmdW5jdGlvbiB0cmFja0V2ZW50KGV2ZW50TmFtZSwgZXZlbnREYXRhKSB7CiAgICAgICAgICAgIC8vIFlvdSBjYW4gYWxzbyBzZW5kIHBhcnRpYWwgZGF0YSBmb3IgdHJhY2tpbmcgZHJvcG9mZnMKICAgICAgICAgICAgY29uc29sZS5sb2coJ0V2ZW50OicsIGV2ZW50TmFtZSwgZXZlbnREYXRhKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIE9wdGlvbmFsOiBTZW5kIHRvIGFuYWx5dGljcwogICAgICAgICAgICAvLyBndGFnKCdldmVudCcsIGV2ZW50TmFtZSwgZXZlbnREYXRhKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZnVuY3Rpb24gZ2V0VXJsUGFyYW0ocGFyYW0pIHsKICAgICAgICAgICAgY29uc3QgdXJsUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTsKICAgICAgICAgICAgcmV0dXJuIHVybFBhcmFtcy5nZXQocGFyYW0pOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBmdW5jdGlvbiBzaG93UmVzdWx0cyhsZXZlbCwgYXNzZXNzbWVudERhdGEpIHsKICAgICAgICAgICAgLy8gVXBkYXRlIHJlc3VsdHMgZGlzcGxheQogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0RW1vamknKS50ZXh0Q29udGVudCA9IGxldmVsLmVtb2ppOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0TGV2ZWwnKS50ZXh0Q29udGVudCA9IGxldmVsLm5hbWU7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHRMZXZlbCcpLmNsYXNzTmFtZSA9IGByZXN1bHRzbGV2ZWwgJHtsZXZlbC5jb2xvcn1gOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0VGFnbGluZScpLnRleHRDb250ZW50ID0gbGV2ZWwudGFnbGluZTsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njb3JlVmFsdWUnKS50ZXh0Q29udGVudCA9IHRvdGFsU2NvcmU7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwZXJjZW50VmFsdWUnKS50ZXh0Q29udGVudCA9IGAke2Fzc2Vzc21lbnREYXRhLnBlcmNlbnRhZ2V9JWA7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBQb3B1bGF0ZSBwbGF0Zm9ybSB0YWdzCiAgICAgICAgICAgIGNvbnN0IHBsYXRmb3JtVGFncyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbGF0Zm9ybVRhZ3MnKTsKICAgICAgICAgICAgcGxhdGZvcm1UYWdzLmlubmVySFRNTCA9ICcnOwogICAgICAgICAgICAKICAgICAgICAgICAgY29uc3QgcGxhdGZvcm1OYW1lcyA9IHsKICAgICAgICAgICAgICAgIHdoYXRzYXBwOiB7IG5hbWU6ICdXaGF0c0FwcCcsIGljb246ICfwn5KsJyB9LAogICAgICAgICAgICAgICAgaW5zdGFncmFtOiB7IG5hbWU6ICdJbnN0YWdyYW0nLCBpY29uOiAn8J+TuCcgfSwKICAgICAgICAgICAgICAgIHRpa3RvazogeyBuYW1lOiAnVGlrVG9rJywgaWNvbjogJ/CfjrUnIH0sCiAgICAgICAgICAgICAgICBsaW5rZWRpbjogeyBuYW1lOiAnTGlua2VkSW4nLCBpY29uOiAn8J+SvCcgfSwKICAgICAgICAgICAgICAgIHdlYnNpdGU6IHsgbmFtZTogJ1dlYnNpdGUnLCBpY29uOiAn8J+MkCcgfQogICAgICAgICAgICB9OwogICAgICAgICAgICAKICAgICAgICAgICAgY29uc3QgYWN0aXZlU3RhdHVzZXMgPSBbJ2FkdmFuY2VkJywgJ3Nob3AnLCAnc2VsbGluZycsICdicmFuZGVkJywgJ2Vjb3N5c3RlbScsICdhY3RpdmUnLCAncHJvZmVzc2lvbmFsJ107CiAgICAgICAgICAgIAogICAgICAgICAgICBPYmplY3QuZW50cmllcyhwbGF0Zm9ybVN0YXR1cykuZm9yRWFjaCgoW3BsYXRmb3JtLCBzdGF0dXNdKSA9PiB7CiAgICAgICAgICAgICAgICBjb25zdCBpc0FjdGl2ZSA9IGFjdGl2ZVN0YXR1c2VzLnNvbWUocyA9PiBzdGF0dXMuaW5jbHVkZXMocykpOwogICAgICAgICAgICAgICAgY29uc3QgcEluZm8gPSBwbGF0Zm9ybU5hbWVzW3BsYXRmb3JtXTsKICAgICAgICAgICAgICAgIHBsYXRmb3JtVGFncy5pbm5lckhUTUwgKz0gYAogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBsYXRmb3JtdGFnICR7aXNBY3RpdmUgPyAnYWN0aXZlJyA6ICdpbmFjdGl2ZSd9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+JHtwSW5mby5pY29ufTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+JHtwSW5mby5uYW1lfTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+JHtpc0FjdGl2ZSA/ICfinJMnIDogJ+KXhyd9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgYDsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBQb3B1bGF0ZSBpbnNpZ2h0cwogICAgICAgICAgICBjb25zdCBpbnNpZ2h0c0dyaWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5zaWdodHNHcmlkJyk7CiAgICAgICAgICAgIGluc2lnaHRzR3JpZC5pbm5lckhUTUwgPSAnJzsKICAgICAgICAgICAgCiAgICAgICAgICAgIGxldmVsLmluc2lnaHRzLnN0cmVuZ3Rocy5mb3JFYWNoKHN0cmVuZ3RoID0+IHsKICAgICAgICAgICAgICAgIGluc2lnaHRzR3JpZC5pbm5lckhUTUwgKz0gYAogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imluc2lnaHRpdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Imluc2lnaHRpY29uIHN0cmVuZ3RoIj7inJM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpbnNpZ2h0dGV4dCI+JHtzdHJlbmd0aH08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICBgOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGxldmVsLmluc2lnaHRzLm9wcG9ydHVuaXRpZXMuZm9yRWFjaChvcHBvcnR1bml0eSA9PiB7CiAgICAgICAgICAgICAgICBpbnNpZ2h0c0dyaWQuaW5uZXJIVE1MICs9IGAKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnNpZ2h0aXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpbnNpZ2h0aWNvbiBvcHBvcnR1bml0eSI+4peHPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaW5zaWdodHRleHQiPiR7b3Bwb3J0dW5pdHl9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgYDsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBTZXQgbmV4dCBzdGVwcwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmV4dFN0ZXBzVGl0bGUnKS50ZXh0Q29udGVudCA9IGxldmVsLm5leHRTdGVwc1RpdGxlOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmV4dFN0ZXBzRGVzY3JpcHRpb24nKS50ZXh0Q29udGVudCA9IGxldmVsLm5leHRTdGVwc0Rlc2NyaXB0aW9uOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gU2V0IENUQQogICAgICAgICAgICBjb25zdCBwcmltYXJ5Q1RBID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ByaW1hcnlDVEEnKTsKICAgICAgICAgICAgcHJpbWFyeUNUQS5pbm5lckhUTUwgPSBgJHtsZXZlbC5jdGFUZXh0fSA8c3Bhbj7ihpI8L3NwYW4+YDsKICAgICAgICAgICAgcHJpbWFyeUNUQS5ocmVmID0gbGV2ZWwuY3RhTGluazsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIFNob3cgcmVzdWx0cwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGVhZENhcHR1cmUnKS5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKTsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdHNTY3JlZW4nKS5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0ZXAzJykuY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJyk7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGVwMycpLmNsYXNzTGlzdC5hZGQoJ2NvbXBsZXRlZCcpOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RlcDQnKS5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIFRyYWNrIHJlc3VsdHMgdmlld2VkCiAgICAgICAgICAgIHRyYWNrRXZlbnQoJ3Jlc3VsdHNfdmlld2VkJywgewogICAgICAgICAgICAgICAgc2Vzc2lvbklkLAogICAgICAgICAgICAgICAgbGV2ZWw6IGxldmVsLm5hbWUsCiAgICAgICAgICAgICAgICBzY29yZTogdG90YWxTY29yZQogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICA8L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+","embed":""}
Content Protected
This proprietary framework is protected intellectual property of Dynamic Paradigms & Mentorship Success Academies. Screenshots and copying are not permitted.
Saving your results...
Free Assessment • 2 Minutes
Sovereign Brand
Assessment
Discover where you stand in your digital presence journey
Answer 10 quick questions about your current platforms and presence to reveal your brand foundation level and receive personalized recommendations for your next strategic move.
💬
🎵
📸
💼
🌐
✦
Instant Results
✦
Platform Analysis
✦
Strategic Next Steps
Question 1 of 10
💬
WhatsApp Presence
✨
Your Results Are Ready!
Enter your details to unlock your personalized brand assessment report
Your information is secure and will never be shared. By continuing, you agree to receive your personalized results via WhatsApp and email.
🌟
Foundation Builder
Your sovereign journey is just beginning
0
/ 30
Your Score
0%
Presence Level
Your Platform Status
Your Assessment Insights
Your Recommended Next Step
© 2024 Dynamic Paradigms & Mentorship Success Academies™ • Sovereign Architect Framework™ • All Rights Reserved