{"js":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8IS0tCiAgICDilZTilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZcKICAgIOKVkSAgQlJBTkRIQU5EU0hBS0UgT0ZGSUNJQUwgQ09ERSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKVkQogICAg4pWg4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWjCiAgICDilZEgIEZJTEU6IGJyYW5kaGFuZHNoYWtlLWJvbnVzdmF1bHQtU0xVRy1ib251cy1WMS5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICDilZEKICAgIOKVkSAgU0xVRzogYnJhbmRoYW5kc2hha2UuY29tL2JvbnVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKVkQogICAg4pWRICBWRVJTSU9OOiBWLTEgT0ZGSUNJQUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pWRCiAgICDilZEgIExBU1QgVVBEQVRFRDogSmFudWFyeSAyMDI2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilZEKICAgIOKVkSAgU1RBVFVTOiDinIUgQk9OVVMgVkFVTFQgLSBESVNDT1VOVCBXSEVFTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilZEKICAgIOKVoOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVowogICAg4pWRICBUWVBFOiBNb25ldGl6ZWQgR2FtaWZpY2F0aW9uIC8gU2Vjb25kIENoYW5jZSBGdW5uZWwgICAgICAgICAgICAgICAgICAgICAgICAg4pWRCiAgICDilZEgIEVOVFJZIEZFRTogJDc1IGZvciBvbmUgc3BpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilZEKICAgIOKVkSAgUFJJWkVTOiAxMCUsIDI1JSwgNTAlIE9GRiBvciBGUkVFIFNFUlZJQ0UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKVkQogICAg4pWRICBWQUxJRDogOTAgZGF5cyBmcm9tIHdpbiBkYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pWRCiAgICDilaDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilaMKICAgIOKVkSAgwqkgMjAyNiBNdWthc2EgVmVudHVyZSBQYXJ0bmVycyBMTEMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICDilZEKICAgIOKVkSAg8J+UkCBQUk9URUNURUQgQ09ERSAtIFVuYXV0aG9yaXplZCBjb3B5aW5nIHByb2hpYml0ZWQuICAgICAgICAgICAgICAgICAgICAgICAg4pWRCiAgICDilZrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZ0KICAgIC0tPgogICAgCiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgICAKICAgIDx0aXRsZT5UaGUgQm9udXMgVmF1bHQgfCBCcmFuZEhhbmRzaGFrZSB8IFNwaW4gZm9yIERpc2NvdW50czwvdGl0bGU+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iVW5sb2NrIHRoZSBCb251cyBWYXVsdCEgUGF5ICQ3NSwgc3BpbiB0aGUgd2hlZWwsIHdpbiB1cCB0byA1MCUgb2ZmIHByZW1pdW0gbWFya2V0aW5nIHNlcnZpY2VzLiBMaW1pdGVkIHRpbWUgZGlzY291bnRzIGF3YWl0LiI+CiAgICA8bWV0YSBuYW1lPSJyb2JvdHMiIGNvbnRlbnQ9Im5vaW5kZXgsIG5vZm9sbG93Ij4KICAgIAogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1Db3Jtb3JhbnQrR2FyYW1vbmQ6aXRhbCx3Z2h0QDAsNDAwOzAsNTAwOzAsNjAwOzAsNzAwOzEsNDAwJmZhbWlseT1Nb250c2VycmF0OndnaHRAMzAwOzQwMDs1MDA7NjAwOzcwMCZkaXNwbGF5PXN3YXAiIHJlbD0ic3R5bGVzaGVldCI+CiAgICAKICAgIDxzdHlsZT4KICAgICAgICA6cm9vdCB7CiAgICAgICAgICAgIC0tbmF2eTogIzBEMUIyQTsKICAgICAgICAgICAgLS1uYXZ5LWxpZ2h0OiAjMUIyNjNCOwogICAgICAgICAgICAtLWdvbGQ6ICNENEFGMzc7CiAgICAgICAgICAgIC0tZ29sZC1saWdodDogI0U4QzU0NzsKICAgICAgICAgICAgLS1nb2xkLWRhcms6ICNCODk3MkU7CiAgICAgICAgICAgIC0taXZvcnk6ICNGOEY0RUM7CiAgICAgICAgICAgIC0tY2hhcmNvYWw6ICMwYTBhMTI7CiAgICAgICAgICAgIC0tcHVycGxlOiAjOGI1Y2Y2OwogICAgICAgICAgICAtLWN5YW46ICMwNmI2ZDQ7CiAgICAgICAgICAgIC0tc3VjY2VzczogIzEwYjk4MTsKICAgICAgICAgICAgLS1waW5rOiAjZWM0ODk5OwogICAgICAgICAgICAtLW9yYW5nZTogI2Y5NzMxNjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgKiB7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgfQogICAgICAgIAogICAgICAgIGJvZHkgewogICAgICAgICAgICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnLCBzYW5zLXNlcmlmOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGFyY29hbCk7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1pdm9yeSk7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDEwMHZoOwogICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qID09PT09PT09PT0gQkFDS0dST1VORCA9PT09PT09PT09ICovCiAgICAgICAgLmJnLW1hc3RlciB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICAgICAgdG9wOiAwOyBsZWZ0OiAwOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsgei1pbmRleDogMDsKICAgICAgICAgICAgYmFja2dyb3VuZDogCiAgICAgICAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCAzMCUgMjAlLCByZ2JhKDIzNiwgNzIsIDE1MywgMC4xKSAwJSwgdHJhbnNwYXJlbnQgNDAlKSwKICAgICAgICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDcwJSA4MCUsIHJnYmEoMjQ5LCAxMTUsIDIyLCAwLjA4KSAwJSwgdHJhbnNwYXJlbnQgNDAlKSwKICAgICAgICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDUwJSA1MCUsIHJnYmEoMjEyLCAxNzUsIDU1LCAwLjA4KSAwJSwgdHJhbnNwYXJlbnQgNTAlKSwKICAgICAgICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxODBkZWcsICMwNTA1MDggMCUsIHZhcigtLWNoYXJjb2FsKSAzMCUsIHZhcigtLW5hdnkpIDEwMCUpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBGbG9hdGluZyB0aWNrZXRzICovCiAgICAgICAgLmZsb2F0aW5nLXRpY2tldCB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICAgICAgZm9udC1zaXplOiAyNHB4OwogICAgICAgICAgICBvcGFjaXR5OiAwLjE1OwogICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICAgICAgei1pbmRleDogMTsKICAgICAgICAgICAgYW5pbWF0aW9uOiBmbG9hdFRpY2tldCAxMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7CiAgICAgICAgfQogICAgICAgIC5mbG9hdGluZy10aWNrZXQ6bnRoLWNoaWxkKDEpIHsgdG9wOiAxMCU7IGxlZnQ6IDUlOyBhbmltYXRpb24tZGVsYXk6IDBzOyB9CiAgICAgICAgLmZsb2F0aW5nLXRpY2tldDpudGgtY2hpbGQoMikgeyB0b3A6IDMwJTsgbGVmdDogOTIlOyBhbmltYXRpb24tZGVsYXk6IDJzOyB9CiAgICAgICAgLmZsb2F0aW5nLXRpY2tldDpudGgtY2hpbGQoMykgeyB0b3A6IDU1JTsgbGVmdDogOCU7IGFuaW1hdGlvbi1kZWxheTogNHM7IH0KICAgICAgICAuZmxvYXRpbmctdGlja2V0Om50aC1jaGlsZCg0KSB7IHRvcDogNzUlOyBsZWZ0OiA4OCU7IGFuaW1hdGlvbi1kZWxheTogMXM7IH0KICAgICAgICAuZmxvYXRpbmctdGlja2V0Om50aC1jaGlsZCg1KSB7IHRvcDogODUlOyBsZWZ0OiA1MCU7IGFuaW1hdGlvbi1kZWxheTogM3M7IH0KICAgICAgICAKICAgICAgICBAa2V5ZnJhbWVzIGZsb2F0VGlja2V0IHsKICAgICAgICAgICAgMCUsIDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKSByb3RhdGUoMGRlZyk7IH0KICAgICAgICAgICAgMjUlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTVweCwgLTIwcHgpIHJvdGF0ZSgxMGRlZyk7IH0KICAgICAgICAgICAgNTAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTEwcHgsIDE1cHgpIHJvdGF0ZSgtNWRlZyk7IH0KICAgICAgICAgICAgNzUlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMjBweCwgMTBweCkgcm90YXRlKDVkZWcpOyB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qID09PT09PT09PT0gQ09OVEFJTkVSID09PT09PT09PT0gKi8KICAgICAgICAuY29udGFpbmVyIHsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICB6LWluZGV4OiAxMDsKICAgICAgICAgICAgbWluLWhlaWdodDogMTAwdmg7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIHBhZGRpbmc6IDQwcHggMjBweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogPT09PT09PT09PSBIRUFERVIgPT09PT09PT09PSAqLwogICAgICAgIC5oZWFkZXIgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDMwcHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5iYWNrLWxpbmsgewogICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI0OCwgMjQ0LCAyMzYsIDAuNCk7CiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjhyZW07CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuM3MgZWFzZTsKICAgICAgICB9CiAgICAgICAgLmJhY2stbGluazpob3ZlciB7IGNvbG9yOiB2YXIoLS1nb2xkKTsgfQogICAgICAgIAogICAgICAgIC5ib251cy1iYWRnZSB7CiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICAgICAgcGFkZGluZzogMTJweCAzMHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDIzNiwgNzIsIDE1MywgMC4yKSwgcmdiYSgyNDksIDExNSwgMjIsIDAuMTUpKTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tcGluayk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICAgICAgICAgIGFuaW1hdGlvbjogcHVsc2VCYWRnZSAycyBlYXNlLWluLW91dCBpbmZpbml0ZTsKICAgICAgICB9CiAgICAgICAgQGtleWZyYW1lcyBwdWxzZUJhZGdlIHsKICAgICAgICAgICAgMCUsIDEwMCUgeyBib3gtc2hhZG93OiAwIDAgMjBweCByZ2JhKDIzNiwgNzIsIDE1MywgMC4zKTsgfQogICAgICAgICAgICA1MCUgeyBib3gtc2hhZG93OiAwIDAgNDBweCByZ2JhKDIzNiwgNzIsIDE1MywgMC42KTsgfQogICAgICAgIH0KICAgICAgICAuYm9udXMtYmFkZ2Ugc3BhbiB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44cmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMnB4OwogICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1waW5rKSwgdmFyKC0tb3JhbmdlKSk7CiAgICAgICAgICAgIC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOiB0ZXh0OwogICAgICAgICAgICAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQtY2xpcDogdGV4dDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnZhdWx0LXRpdGxlIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdDb3Jtb3JhbnQgR2FyYW1vbmQnLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiBjbGFtcCgycmVtLCA3dncsIDMuNXJlbSk7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgICAgICAgfQogICAgICAgIC52YXVsdC10aXRsZSAuZ3JhZGllbnQgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1waW5rKSwgdmFyKC0tb3JhbmdlKSwgdmFyKC0tZ29sZCkpOwogICAgICAgICAgICAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogdGV4dDsKICAgICAgICAgICAgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IHRyYW5zcGFyZW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNsaXA6IHRleHQ7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC52YXVsdC1zdWIgewogICAgICAgICAgICBmb250LXNpemU6IDFyZW07CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI0OCwgMjQ0LCAyMzYsIDAuNik7CiAgICAgICAgICAgIG1heC13aWR0aDogNTAwcHg7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvIDMwcHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qID09PT09PT09PT0gRU5UUlkgU0VDVElPTiA9PT09PT09PT09ICovCiAgICAgICAgLmVudHJ5LXNlY3Rpb24gewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIGFuaW1hdGlvbjogZmFkZUluIDAuNnMgZWFzZTsKICAgICAgICB9CiAgICAgICAgLmVudHJ5LXNlY3Rpb24uaGlkZGVuIHsgZGlzcGxheTogbm9uZTsgfQogICAgICAgIAogICAgICAgIC5lbnRyeS1jYXJkIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgyMzYsIDcyLCAxNTMsIDAuMSksIHJnYmEoMjQ5LCAxMTUsIDIyLCAwLjA1KSwgcmdiYSgyNywgMzgsIDU5LCAwLjgpKTsKICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgcmdiYSgyMzYsIDcyLCAxNTMsIDAuMyk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDMwcHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDUwcHggNDBweDsKICAgICAgICAgICAgbWF4LXdpZHRoOiA1MDBweDsKICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG8gMzBweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmVudHJ5LXByaWNlIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdDb3Jtb3JhbnQgR2FyYW1vbmQnLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiA0cmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1nb2xkKSwgdmFyKC0tZ29sZC1saWdodCkpOwogICAgICAgICAgICAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogdGV4dDsKICAgICAgICAgICAgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IHRyYW5zcGFyZW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNsaXA6IHRleHQ7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgICAgICAgfQogICAgICAgIC5lbnRyeS1sYWJlbCB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtOwogICAgICAgICAgICBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjYpOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyNXB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuZW50cnktcGVya3MgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4OwogICAgICAgIH0KICAgICAgICAuZW50cnktcGVya3MgbGkgewogICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDA7CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI0OCwgMjQ0LCAyMzYsIDAuOCk7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogMTJweDsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtOwogICAgICAgIH0KICAgICAgICAuZW50cnktcGVya3MgLmljb24geyBjb2xvcjogdmFyKC0tc3VjY2Vzcyk7IH0KICAgICAgICAKICAgICAgICAudW5sb2NrLWJ0biB7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBwYWRkaW5nOiAyMHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1waW5rKSwgdmFyKC0tb3JhbmdlKSk7CiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MHB4OwogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTsKICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgIH0KICAgICAgICAudW5sb2NrLWJ0bjpob3ZlciB7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtM3B4KTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCAyMHB4IDUwcHggcmdiYSgyMzYsIDcyLCAxNTMsIDAuNCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIFBheW1lbnQgb3B0aW9ucyAqLwogICAgICAgIC5wYXltZW50LW9wdGlvbnMgewogICAgICAgICAgICBtYXJnaW4tdG9wOiAyNXB4OwogICAgICAgICAgICBwYWRkaW5nLXRvcDogMjVweDsKICAgICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC4xKTsKICAgICAgICB9CiAgICAgICAgLnBheW1lbnQtb3B0aW9ucyBoNCB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44cmVtOwogICAgICAgICAgICBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjUpOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMXB4OwogICAgICAgIH0KICAgICAgICAucGF5bWVudC1tZXRob2RzIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZ2FwOiAxNXB4OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICAgIH0KICAgICAgICAucGF5bWVudC1tZXRob2QgewogICAgICAgICAgICBwYWRkaW5nOiAxMnB4IDIwcHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC4wNSk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbTsKICAgICAgICB9CiAgICAgICAgLnBheW1lbnQtbWV0aG9kIC5sYWJlbCB7IGNvbG9yOiByZ2JhKDI0OCwgMjQ0LCAyMzYsIDAuNSk7IGZvbnQtc2l6ZTogMC43cmVtOyB9CiAgICAgICAgLnBheW1lbnQtbWV0aG9kIC52YWx1ZSB7IGNvbG9yOiB2YXIoLS1pdm9yeSk7IGZvbnQtd2VpZ2h0OiA2MDA7IH0KICAgICAgICAucGF5bWVudC1tZXRob2QgYSB7IGNvbG9yOiB2YXIoLS1nb2xkKTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9CiAgICAgICAgCiAgICAgICAgLyogPT09PT09PT09PSBTUElOIFNFQ1RJT04gPT09PT09PT09PSAqLwogICAgICAgIC5zcGluLXNlY3Rpb24gewogICAgICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIGFuaW1hdGlvbjogZmFkZUluIDAuNnMgZWFzZTsKICAgICAgICB9CiAgICAgICAgLnNwaW4tc2VjdGlvbi5hY3RpdmUgeyBkaXNwbGF5OiBibG9jazsgfQogICAgICAgIAogICAgICAgIEBrZXlmcmFtZXMgZmFkZUluIHsKICAgICAgICAgICAgZnJvbSB7IG9wYWNpdHk6IDA7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMHB4KTsgfQogICAgICAgICAgICB0byB7IG9wYWNpdHk6IDE7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiA9PT09PT09PT09IEJPTlVTIFdIRUVMID09PT09PT09PT0gKi8KICAgICAgICAud2hlZWwtY29udGFpbmVyIHsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICB3aWR0aDogMzUwcHg7CiAgICAgICAgICAgIGhlaWdodDogMzUwcHg7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvIDQwcHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC53aGVlbC1wb2ludGVyIHsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICB0b3A6IC0yNXB4OwogICAgICAgICAgICBsZWZ0OiA1MCU7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICAgICAgICAgICAgd2lkdGg6IDA7CiAgICAgICAgICAgIGhlaWdodDogMDsKICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDI1cHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICAgICAgICAgIGJvcmRlci1yaWdodDogMjVweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgICAgICAgICAgYm9yZGVyLXRvcDogNTBweCBzb2xpZCB2YXIoLS1nb2xkKTsKICAgICAgICAgICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDVweCAxNXB4IHJnYmEoMCwgMCwgMCwgMC40KSk7CiAgICAgICAgICAgIHotaW5kZXg6IDEwOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuYm9udXMtd2hlZWwgewogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDZzIGN1YmljLWJlemllcigwLjE3LCAwLjY3LCAwLjEyLCAwLjk5KTsKICAgICAgICAgICAgYm94LXNoYWRvdzogCiAgICAgICAgICAgICAgICAwIDAgNjBweCByZ2JhKDIzNiwgNzIsIDE1MywgMC4zKSwKICAgICAgICAgICAgICAgIDAgMCA2MHB4IHJnYmEoMjQ5LCAxMTUsIDIyLCAwLjIpLAogICAgICAgICAgICAgICAgaW5zZXQgMCAwIDYwcHggcmdiYSgwLCAwLCAwLCAwLjQpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuYm9udXMtd2hlZWwgY2FudmFzIHsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAud2hlZWwtY2VudGVyIHsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICB0b3A6IDUwJTsgbGVmdDogNTAlOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICAgICAgICAgICAgd2lkdGg6IDkwcHg7CiAgICAgICAgICAgIGhlaWdodDogOTBweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tZ29sZCksIHZhcigtLWdvbGQtZGFyaykpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDVweCAzMHB4IHJnYmEoMCwgMCwgMCwgMC40KTsKICAgICAgICAgICAgei1pbmRleDogNTsKICAgICAgICB9CiAgICAgICAgLndoZWVsLWNlbnRlciAuaWNvbiB7IGZvbnQtc2l6ZTogMnJlbTsgfQogICAgICAgIC53aGVlbC1jZW50ZXIgLnRleHQgeyBmb250LXNpemU6IDAuNnJlbTsgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6IHZhcigtLW5hdnkpOyB9CiAgICAgICAgCiAgICAgICAgLnNwaW4tYnRuIHsKICAgICAgICAgICAgcGFkZGluZzogMjBweCA2MHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1waW5rKSwgdmFyKC0tb3JhbmdlKSk7CiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MHB4OwogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTsKICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgIH0KICAgICAgICAuc3Bpbi1idG46aG92ZXIgewogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTNweCk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMjBweCA1MHB4IHJnYmEoMjM2LCA3MiwgMTUzLCAwLjQpOwogICAgICAgIH0KICAgICAgICAuc3Bpbi1idG46ZGlzYWJsZWQgewogICAgICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAgICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qID09PT09PT09PT0gU0VSVklDRVMgUFJFVklFVyA9PT09PT09PT09ICovCiAgICAgICAgLnNlcnZpY2VzLXByZXZpZXcgewogICAgICAgICAgICBtYXJnaW4tdG9wOiA0MHB4OwogICAgICAgICAgICBwYWRkaW5nOiAzMHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI3LCAzOCwgNTksIDAuNSk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjM2LCA3MiwgMTUzLCAwLjEpOwogICAgICAgICAgICBtYXgtd2lkdGg6IDgwMHB4OwogICAgICAgIH0KICAgICAgICAuc2VydmljZXMtcHJldmlldyBoNCB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbTsKICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDJweDsKICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC41KTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuc2VydmljZXMtZ3JpZCB7CiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMTgwcHgsIDFmcikpOwogICAgICAgICAgICBnYXA6IDE1cHg7CiAgICAgICAgfQogICAgICAgIC5zZXJ2aWNlLWl0ZW0gewogICAgICAgICAgICBwYWRkaW5nOiAyMHB4IDE1cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC4wMyk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDE1cHg7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICB9CiAgICAgICAgLnNlcnZpY2UtaXRlbTpob3ZlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjM2LCA3MiwgMTUzLCAwLjEpOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTNweCk7CiAgICAgICAgfQogICAgICAgIC5zZXJ2aWNlLWl0ZW0gLmljb24geyBmb250LXNpemU6IDJyZW07IG1hcmdpbi1ib3R0b206IDEwcHg7IGRpc3BsYXk6IGJsb2NrOyB9CiAgICAgICAgLnNlcnZpY2UtaXRlbSAubmFtZSB7IGZvbnQtc2l6ZTogMC44NXJlbTsgZm9udC13ZWlnaHQ6IDYwMDsgY29sb3I6IHZhcigtLWl2b3J5KTsgfQogICAgICAgIC5zZXJ2aWNlLWl0ZW0gLnByaWNlIHsgZm9udC1zaXplOiAwLjc1cmVtOyBjb2xvcjogdmFyKC0tZ29sZCk7IG1hcmdpbi10b3A6IDVweDsgfQogICAgICAgIAogICAgICAgIC8qID09PT09PT09PT0gV0lOIFJFVkVBTCA9PT09PT09PT09ICovCiAgICAgICAgLndpbi1zZWN0aW9uIHsKICAgICAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBhbmltYXRpb246IHdpblJldmVhbCAwLjhzIGVhc2U7CiAgICAgICAgfQogICAgICAgIC53aW4tc2VjdGlvbi5hY3RpdmUgeyBkaXNwbGF5OiBibG9jazsgfQogICAgICAgIAogICAgICAgIEBrZXlmcmFtZXMgd2luUmV2ZWFsIHsKICAgICAgICAgICAgMCUgeyBvcGFjaXR5OiAwOyB0cmFuc2Zvcm06IHNjYWxlKDAuNSk7IH0KICAgICAgICAgICAgNTAlIHsgdHJhbnNmb3JtOiBzY2FsZSgxLjEpOyB9CiAgICAgICAgICAgIDEwMCUgeyBvcGFjaXR5OiAxOyB0cmFuc2Zvcm06IHNjYWxlKDEpOyB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC53aW4tY2FyZCB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjM2LCA3MiwgMTUzLCAwLjE1KSwgcmdiYSgyNDksIDExNSwgMjIsIDAuMSksIHJnYmEoMjcsIDM4LCA1OSwgMC45KSk7CiAgICAgICAgICAgIGJvcmRlcjogM3B4IHNvbGlkIHZhcigtLWdvbGQpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzMHB4OwogICAgICAgICAgICBwYWRkaW5nOiA1MHB4IDQwcHg7CiAgICAgICAgICAgIG1heC13aWR0aDogNTAwcHg7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgODBweCByZ2JhKDIxMiwgMTc1LCA1NSwgMC4zKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLndpbi1kaXNjb3VudCB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnQ29ybW9yYW50IEdhcmFtb25kJywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogNXJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tZ29sZCksIHZhcigtLWdvbGQtbGlnaHQpLCB2YXIoLS1nb2xkKSk7CiAgICAgICAgICAgIC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOiB0ZXh0OwogICAgICAgICAgICAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQtY2xpcDogdGV4dDsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDE7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgICAgICAgfQogICAgICAgIC53aW4tbGFiZWwgewogICAgICAgICAgICBmb250LXNpemU6IDEuMnJlbTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWdvbGQpOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgICAgIH0KICAgICAgICAud2luLWRlc2MgewogICAgICAgICAgICBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjcpOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyNXB4OwogICAgICAgICAgICBsaW5lLWhlaWdodDogMS43OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAud2luLWNvZGUgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1uYXZ5KTsKICAgICAgICAgICAgYm9yZGVyOiAycHggZGFzaGVkIHZhcigtLWdvbGQpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxNXB4OwogICAgICAgICAgICBwYWRkaW5nOiAyMHB4OwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyNXB4OwogICAgICAgIH0KICAgICAgICAud2luLWNvZGUgLmxhYmVsIHsgZm9udC1zaXplOiAwLjc1cmVtOyBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjUpOyBtYXJnaW4tYm90dG9tOiA4cHg7IH0KICAgICAgICAud2luLWNvZGUgLmNvZGUgewogICAgICAgICAgICBmb250LWZhbWlseTogJ0NvdXJpZXIgTmV3JywgbW9ub3NwYWNlOwogICAgICAgICAgICBmb250LXNpemU6IDEuNXJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWdvbGQpOwogICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogM3B4OwogICAgICAgIH0KICAgICAgICAud2luLWNvZGUgLmV4cGlyZXMgeyBmb250LXNpemU6IDAuNzVyZW07IGNvbG9yOiByZ2JhKDI0OCwgMjQ0LCAyMzYsIDAuNSk7IG1hcmdpbi10b3A6IDhweDsgfQogICAgICAgIAogICAgICAgIC53aW4tYWN0aW9ucyB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGdhcDogMTVweDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICB9CiAgICAgICAgLndpbi1idG4gewogICAgICAgICAgICBwYWRkaW5nOiAxNXB4IDM1cHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDMwcHg7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICB9CiAgICAgICAgLndpbi1idG4ucHJpbWFyeSB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWdvbGQpLCB2YXIoLS1nb2xkLWRhcmspKTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLW5hdnkpOwogICAgICAgIH0KICAgICAgICAud2luLWJ0bi5zZWNvbmRhcnkgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tcGluayk7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1waW5rKTsKICAgICAgICB9CiAgICAgICAgLndpbi1idG46aG92ZXIgewogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTNweCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qID09PT09PT09PT0gU0hBUkUgQlVUVE9OUyA9PT09PT09PT09ICovCiAgICAgICAgLnNoYXJlLXNlY3Rpb24gewogICAgICAgICAgICBtYXJnaW4tdG9wOiA0MHB4OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgfQogICAgICAgIC5zaGFyZS1zZWN0aW9uIGg0IHsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtOwogICAgICAgICAgICBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjUpOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgICAgIH0KICAgICAgICAuc2hhcmUtYnV0dG9ucyB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGdhcDogMTVweDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICB9CiAgICAgICAgLnNoYXJlLWJ0biB7CiAgICAgICAgICAgIHdpZHRoOiA1MHB4OwogICAgICAgICAgICBoZWlnaHQ6IDUwcHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4zcmVtOwogICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgfQogICAgICAgIC5zaGFyZS1idG46aG92ZXIgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTVweCk7IH0KICAgICAgICAuc2hhcmUtYnRuLndoYXRzYXBwIHsgYmFja2dyb3VuZDogIzI1RDM2NjsgfQogICAgICAgIC5zaGFyZS1idG4ubGlua2VkaW4geyBiYWNrZ3JvdW5kOiAjMDA3N0I1OyB9CiAgICAgICAgLnNoYXJlLWJ0bi50d2l0dGVyIHsgYmFja2dyb3VuZDogIzFEQTFGMjsgfQogICAgICAgIC5zaGFyZS1idG4uY29weSB7IGJhY2tncm91bmQ6IHZhcigtLWdvbGQpOyBjb2xvcjogdmFyKC0tbmF2eSk7IH0KICAgICAgICAKICAgICAgICAvKiA9PT09PT09PT09IEZPT1RFUiA9PT09PT09PT09ICovCiAgICAgICAgLmZvb3RlciB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgcGFkZGluZzogNDBweCAyMHB4OwogICAgICAgICAgICBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjMpOwogICAgICAgICAgICBmb250LXNpemU6IDAuNzVyZW07CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qID09PT09PT09PT0gUkVTUE9OU0lWRSA9PT09PT09PT09ICovCiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDQwMHB4KSB7CiAgICAgICAgICAgIC53aGVlbC1jb250YWluZXIgeyB3aWR0aDogMzAwcHg7IGhlaWdodDogMzAwcHg7IH0KICAgICAgICAgICAgLmVudHJ5LWNhcmQgeyBwYWRkaW5nOiAzNXB4IDI1cHg7IH0KICAgICAgICB9CiAgICA8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgogICAgPCEtLSBCYWNrZ3JvdW5kIC0tPgogICAgPGRpdiBjbGFzcz0iYmctbWFzdGVyIj48L2Rpdj4KICAgIAogICAgPCEtLSBGbG9hdGluZyBUaWNrZXRzIC0tPgogICAgPGRpdiBjbGFzcz0iZmxvYXRpbmctdGlja2V0Ij7wn46rPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJmbG9hdGluZy10aWNrZXQiPvCfko48L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImZsb2F0aW5nLXRpY2tldCI+8J+OqzwvZGl2PgogICAgPGRpdiBjbGFzcz0iZmxvYXRpbmctdGlja2V0Ij7inKg8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImZsb2F0aW5nLXRpY2tldCI+8J+OqzwvZGl2PgogICAgCiAgICA8IS0tIE1haW4gQ29udGFpbmVyIC0tPgogICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICA8IS0tIEhlYWRlciAtLT4KICAgICAgICA8aGVhZGVyIGNsYXNzPSJoZWFkZXIiPgogICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2JyYW5kaGFuZHNoYWtlLmNvbS93aW5uZXIiIGNsYXNzPSJiYWNrLWxpbmsiPuKGkCBCYWNrIHRvIHlvdXIgcHJpemU8L2E+CiAgICAgICAgICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJib251cy1iYWRnZSI+CiAgICAgICAgICAgICAgICA8c3Bhbj7wn46rIFRoZSBCb251cyBWYXVsdDwvc3Bhbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIAogICAgICAgICAgICA8aDEgY2xhc3M9InZhdWx0LXRpdGxlIj5VbmxvY2sgPHNwYW4gY2xhc3M9ImdyYWRpZW50Ij5QcmVtaXVtIERpc2NvdW50czwvc3Bhbj48L2gxPgogICAgICAgICAgICA8cCBjbGFzcz0idmF1bHQtc3ViIj5Ob3QgcmVhZHkgZm9yIHlvdXIgbWFpbiBwcml6ZT8gU3BpbiB0aGUgQm9udXMgV2hlZWwgZm9yIGV4Y2x1c2l2ZSBkaXNjb3VudHMgb24gb3VyIHByZW1pdW0gbWFya2V0aW5nIHNlcnZpY2VzITwvcD4KICAgICAgICA8L2hlYWRlcj4KICAgICAgICAKICAgICAgICA8IS0tID09PT09PT09PT0gRU5UUlkgU0VDVElPTiA9PT09PT09PT09IC0tPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJlbnRyeS1zZWN0aW9uIiBpZD0iZW50cnlTZWN0aW9uIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZW50cnktY2FyZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbnRyeS1wcmljZSI+JDc1PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbnRyeS1sYWJlbCI+T25lLVRpbWUgRW50cnkgRmVlPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZW50cnktcGVya3MiPgogICAgICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iaWNvbiI+4pyTPC9zcGFuPiBPbmUgc3BpbiBvbiB0aGUgQm9udXMgV2hlZWw8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iaWNvbiI+4pyTPC9zcGFuPiBXaW4gMTAlLCAyNSUsIG9yIDUwJSBPRkY8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iaWNvbiI+4pyTPC9zcGFuPiBDaGFuY2UgdG8gd2luIGEgRlJFRSBzZXJ2aWNlITwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPSJpY29uIj7inJM8L3NwYW4+IERpc2NvdW50IHZhbGlkIGZvciA5MCBkYXlzPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9Imljb24iPuKckzwvc3Bhbj4gVXNlIG9uIEFOWSBwcmVtaXVtIHNlcnZpY2U8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idW5sb2NrLWJ0biIgb25jbGljaz0idW5sb2NrVmF1bHQoKSI+CiAgICAgICAgICAgICAgICAgICAg8J+OsCBVTkxPQ0sgVEhFIEJPTlVTIFZBVUxUCiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGF5bWVudC1vcHRpb25zIj4KICAgICAgICAgICAgICAgICAgICA8aDQ+8J+SsyBQYXltZW50IE1ldGhvZHM8L2g0PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBheW1lbnQtbWV0aG9kcyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBheW1lbnQtbWV0aG9kIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhYmVsIj5Nb2JpbGUgTW9uZXk8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InZhbHVlIj4rMjU2IDc2MCAzODMgMDE3PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYXltZW50LW1ldGhvZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYWJlbCI+UGF5UGFsPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2YWx1ZSI+PGEgaHJlZj0iaHR0cHM6Ly9wYXlwYWwubWUvTXVrYXNhVmVudHVyZVBhcnRuZXJzIiB0YXJnZXQ9Il9ibGFuayI+UGF5UGFsLk1lIExpbms8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAKICAgICAgICAgICAgPCEtLSBTZXJ2aWNlcyBQcmV2aWV3IC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZXJ2aWNlcy1wcmV2aWV3Ij4KICAgICAgICAgICAgICAgIDxoND7wn46BIFNlcnZpY2VzIFlvdSBDYW4gRGlzY291bnQ8L2g0PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VydmljZXMtZ3JpZCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VydmljZS1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Imljb24iPvCfjqw8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hbWUiPjYwLU1pbiBWaWRlbzwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljZSI+VEJBPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VydmljZS1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Imljb24iPvCfk4U8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hbWUiPjMwLURheSBTb2NpYWwgU2V0PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNlIj5UQkE8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZXJ2aWNlLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaWNvbiI+8J+TnTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmFtZSI+RXhwZXJ0IEJsb2c8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2UiPlRCQTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlcnZpY2UtaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpY29uIj7wn5OwPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYW1lIj5QcmVzcyBSZWxlYXNlIFZpZGVvPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNlIj5UQkE8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZXJ2aWNlLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaWNvbiI+8J+Tujwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmFtZSI+VmlkZW8gQWQ8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2UiPlRCQTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlcnZpY2UtaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpY29uIj7irZA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hbWUiPlJldmlldyBQaXF4PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNlIj5UQkE8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZXJ2aWNlLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaWNvbiI+8J+Upzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmFtZSI+UmV2aWV3IFdpZGdldDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljZSI+VEJBPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VydmljZS1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Imljb24iPvCfkqw8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hbWUiPlJldmlldyBSZXNwb25zZSBBcHA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2UiPlRCQTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAKICAgICAgICA8IS0tID09PT09PT09PT0gU1BJTiBTRUNUSU9OID09PT09PT09PT0gLS0+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwaW4tc2VjdGlvbiIgaWQ9InNwaW5TZWN0aW9uIj4KICAgICAgICAgICAgPGgyIHN0eWxlPSJmb250LWZhbWlseTogJ0Nvcm1vcmFudCBHYXJhbW9uZCcsIHNlcmlmOyBmb250LXNpemU6IDJyZW07IG1hcmdpbi1ib3R0b206IDMwcHg7Ij4KICAgICAgICAgICAgICAgIFNwaW4gZm9yIFlvdXIgPHNwYW4gc3R5bGU9ImNvbG9yOiB2YXIoLS1nb2xkKTsiPkRpc2NvdW50ITwvc3Bhbj4KICAgICAgICAgICAgPC9oMj4KICAgICAgICAgICAgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IndoZWVsLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3aGVlbC1wb2ludGVyIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvbnVzLXdoZWVsIiBpZD0iYm9udXNXaGVlbCI+CiAgICAgICAgICAgICAgICAgICAgPGNhbnZhcyBpZD0id2hlZWxDYW52YXMiIHdpZHRoPSIzNTAiIGhlaWdodD0iMzUwIj48L2NhbnZhcz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0id2hlZWwtY2VudGVyIj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaWNvbiI+8J+Oqzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dCI+U1BJTjwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgCiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InNwaW4tYnRuIiBpZD0ic3BpbkJ0biIgb25jbGljaz0ic3BpbldoZWVsKCkiPgogICAgICAgICAgICAgICAg8J+OsCBTUElOIFRIRSBXSEVFTCEKICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgPC9zZWN0aW9uPgogICAgICAgIAogICAgICAgIDwhLS0gPT09PT09PT09PSBXSU4gU0VDVElPTiA9PT09PT09PT09IC0tPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJ3aW4tc2VjdGlvbiIgaWQ9IndpblNlY3Rpb24iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3aW4tY2FyZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3aW4tZGlzY291bnQiIGlkPSJ3aW5EaXNjb3VudCI+NTAlPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3aW4tbGFiZWwiIGlkPSJ3aW5MYWJlbCI+T0ZGIEFOWSBQUkVNSVVNIFNFUlZJQ0UhPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ3aW4tZGVzYyIgaWQ9IndpbkRlc2MiPgogICAgICAgICAgICAgICAgICAgIENvbmdyYXR1bGF0aW9ucyEgVXNlIHRoaXMgZGlzY291bnQgb24gYW55IG9mIG91ciBwcmVtaXVtIG1hcmtldGluZyBzZXJ2aWNlcy4gCiAgICAgICAgICAgICAgICAgICAgWW91ciBjb2RlIGlzIHZhbGlkIGZvciA5MCBkYXlzIGZyb20gdG9kYXkuCiAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Indpbi1jb2RlIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYWJlbCI+WU9VUiBESVNDT1VOVCBDT0RFPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29kZSIgaWQ9ImRpc2NvdW50Q29kZSI+Qk9OVVM1MC1YWFhYPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZXhwaXJlcyIgaWQ9ImV4cGlyZXNEYXRlIj5WYWxpZCB1bnRpbDogW0RhdGVdPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0id2luLWFjdGlvbnMiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYnJhbmRoYW5kc2hha2UuY29tL3ByaWNpbmciIGNsYXNzPSJ3aW4tYnRuIHByaW1hcnkiPgogICAgICAgICAgICAgICAgICAgICAgICDwn5uSIFVzZSBOb3cKICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0id2luLWJ0biBzZWNvbmRhcnkiIG9uY2xpY2s9InJlc3Bpbk9mZmVyKCkiPgogICAgICAgICAgICAgICAgICAgICAgICDwn5SEIFNwaW4gQWdhaW4gKCQ3NSkKICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgCiAgICAgICAgICAgIDwhLS0gU2hhcmUgU2VjdGlvbiAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2hhcmUtc2VjdGlvbiI+CiAgICAgICAgICAgICAgICA8aDQ+8J+TpCBTaGFyZSBZb3VyIEx1Y2shPC9oND4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNoYXJlLWJ1dHRvbnMiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJzaGFyZS1idG4gd2hhdHNhcHAiIGlkPSJzaGFyZVdoYXRzQXBwIiB0YXJnZXQ9Il9ibGFuayI+8J+TsTwvYT4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0ic2hhcmUtYnRuIGxpbmtlZGluIiBpZD0ic2hhcmVMaW5rZWRJbiIgdGFyZ2V0PSJfYmxhbmsiPvCfkrw8L2E+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9InNoYXJlLWJ0biB0d2l0dGVyIiBpZD0ic2hhcmVUd2l0dGVyIiB0YXJnZXQ9Il9ibGFuayI+8J+QpjwvYT4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJzaGFyZS1idG4gY29weSIgb25jbGljaz0iY29weUNvZGUoKSI+8J+TizwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAKICAgICAgICAgICAgPCEtLSB2Q2FyZCBTaGFyZSAtLT4KICAgICAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLXRvcDogMzBweDsgdGV4dC1hbGlnbjogY2VudGVyOyI+CiAgICAgICAgICAgICAgICA8cCBzdHlsZT0iZm9udC1zaXplOiAwLjg1cmVtOyBjb2xvcjogcmdiYSgyNDgsMjQ0LDIzNiwwLjUpOyBtYXJnaW4tYm90dG9tOiAxNXB4OyI+CiAgICAgICAgICAgICAgICAgICAg8J+SvCBHZXQgeW91ciBvd24gZGlnaXRhbCBidXNpbmVzcyBjYXJkIQogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9icmFuZGhhbmRzaGFrZS5jb20iIHN0eWxlPSJjb2xvcjogdmFyKC0tZ29sZCk7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgZm9udC13ZWlnaHQ6IDYwMDsiPgogICAgICAgICAgICAgICAgICAgIENyZWF0ZSBNeSBCcmFuZEhhbmRzaGFrZSBDYXJkIOKGkgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgCiAgICAgICAgPCEtLSBGb290ZXIgLS0+CiAgICAgICAgPGZvb3RlciBjbGFzcz0iZm9vdGVyIj4KICAgICAgICAgICAgwqkgMjAyNiBCcmFuZEhhbmRzaGFrZSB8IE11a2FzYSBWZW50dXJlIFBhcnRuZXJzIExMQwogICAgICAgIDwvZm9vdGVyPgogICAgPC9kaXY+CiAgICAKICAgIDxzY3JpcHQ+CiAgICAgICAgLy8gRGlzY291bnQgc2VnbWVudHMKICAgICAgICBjb25zdCBzZWdtZW50cyA9IFsKICAgICAgICAgICAgeyBsYWJlbDogJzEwJScsIGRpc2NvdW50OiAxMCwgY29sb3I6ICcjZWM0ODk5Jywgd2VpZ2h0OiAzNSB9LAogICAgICAgICAgICB7IGxhYmVsOiAnMjUlJywgZGlzY291bnQ6IDI1LCBjb2xvcjogJyNmOTczMTYnLCB3ZWlnaHQ6IDMwIH0sCiAgICAgICAgICAgIHsgbGFiZWw6ICc1MCUnLCBkaXNjb3VudDogNTAsIGNvbG9yOiAnI0Q0QUYzNycsIHdlaWdodDogMjAgfSwKICAgICAgICAgICAgeyBsYWJlbDogJ/CfjJ9GUkVFJywgZGlzY291bnQ6IDEwMCwgY29sb3I6ICcjMTBiOTgxJywgd2VpZ2h0OiA1IH0sCiAgICAgICAgICAgIHsgbGFiZWw6ICfwn5SEUkVTUElOJywgZGlzY291bnQ6IDAsIGNvbG9yOiAnIzhiNWNmNicsIHdlaWdodDogMTAgfQogICAgICAgIF07CiAgICAgICAgCiAgICAgICAgbGV0IGhhc1NwdW4gPSBmYWxzZTsKICAgICAgICAKICAgICAgICAvLyBEcmF3IHRoZSB3aGVlbAogICAgICAgIGZ1bmN0aW9uIGRyYXdXaGVlbCgpIHsKICAgICAgICAgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3doZWVsQ2FudmFzJyk7CiAgICAgICAgICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOwogICAgICAgICAgICBjb25zdCBjZW50ZXJYID0gY2FudmFzLndpZHRoIC8gMjsKICAgICAgICAgICAgY29uc3QgY2VudGVyWSA9IGNhbnZhcy5oZWlnaHQgLyAyOwogICAgICAgICAgICBjb25zdCByYWRpdXMgPSBjYW52YXMud2lkdGggLyAyIC0gMTA7CiAgICAgICAgICAgIAogICAgICAgICAgICBjb25zdCB0b3RhbFNlZ21lbnRzID0gc2VnbWVudHMubGVuZ3RoOwogICAgICAgICAgICBjb25zdCBzZWdtZW50QW5nbGUgPSAoMiAqIE1hdGguUEkpIC8gdG90YWxTZWdtZW50czsKICAgICAgICAgICAgCiAgICAgICAgICAgIHNlZ21lbnRzLmZvckVhY2goKHNlZ21lbnQsIGkpID0+IHsKICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0QW5nbGUgPSBpICogc2VnbWVudEFuZ2xlIC0gTWF0aC5QSSAvIDI7CiAgICAgICAgICAgICAgICBjb25zdCBlbmRBbmdsZSA9IHN0YXJ0QW5nbGUgKyBzZWdtZW50QW5nbGU7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIC8vIERyYXcgc2VnbWVudAogICAgICAgICAgICAgICAgY3R4LmJlZ2luUGF0aCgpOwogICAgICAgICAgICAgICAgY3R4Lm1vdmVUbyhjZW50ZXJYLCBjZW50ZXJZKTsKICAgICAgICAgICAgICAgIGN0eC5hcmMoY2VudGVyWCwgY2VudGVyWSwgcmFkaXVzLCBzdGFydEFuZ2xlLCBlbmRBbmdsZSk7CiAgICAgICAgICAgICAgICBjdHguY2xvc2VQYXRoKCk7CiAgICAgICAgICAgICAgICBjdHguZmlsbFN0eWxlID0gc2VnbWVudC5jb2xvcjsKICAgICAgICAgICAgICAgIGN0eC5maWxsKCk7CiAgICAgICAgICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSAncmdiYSgyNTUsMjU1LDI1NSwwLjMpJzsKICAgICAgICAgICAgICAgIGN0eC5saW5lV2lkdGggPSAzOwogICAgICAgICAgICAgICAgY3R4LnN0cm9rZSgpOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAvLyBEcmF3IGxhYmVsCiAgICAgICAgICAgICAgICBjdHguc2F2ZSgpOwogICAgICAgICAgICAgICAgY3R4LnRyYW5zbGF0ZShjZW50ZXJYLCBjZW50ZXJZKTsKICAgICAgICAgICAgICAgIGN0eC5yb3RhdGUoc3RhcnRBbmdsZSArIHNlZ21lbnRBbmdsZSAvIDIpOwogICAgICAgICAgICAgICAgY3R4LnRleHRBbGlnbiA9ICdjZW50ZXInOwogICAgICAgICAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICcjZmZmJzsKICAgICAgICAgICAgICAgIGN0eC5mb250ID0gJ2JvbGQgMjRweCBNb250c2VycmF0JzsKICAgICAgICAgICAgICAgIGN0eC5maWxsVGV4dChzZWdtZW50LmxhYmVsLCByYWRpdXMgKiAwLjYsIDgpOwogICAgICAgICAgICAgICAgY3R4LnJlc3RvcmUoKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBCb3JkZXIKICAgICAgICAgICAgY3R4LmJlZ2luUGF0aCgpOwogICAgICAgICAgICBjdHguYXJjKGNlbnRlclgsIGNlbnRlclksIHJhZGl1cywgMCwgMiAqIE1hdGguUEkpOwogICAgICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSAnI0Q0QUYzNyc7CiAgICAgICAgICAgIGN0eC5saW5lV2lkdGggPSAxMDsKICAgICAgICAgICAgY3R4LnN0cm9rZSgpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBVbmxvY2sgdmF1bHQgKHBheW1lbnQgY29uZmlybWF0aW9uIHNpbXVsYXRpb24pCiAgICAgICAgZnVuY3Rpb24gdW5sb2NrVmF1bHQoKSB7CiAgICAgICAgICAgIC8vIEluIHByb2R1Y3Rpb24sIHRoaXMgd291bGQgdmVyaWZ5IHBheW1lbnQgZmlyc3QKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VudHJ5U2VjdGlvbicpLmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3BpblNlY3Rpb24nKS5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKICAgICAgICAgICAgZHJhd1doZWVsKCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIFNwaW4gdGhlIHdoZWVsCiAgICAgICAgZnVuY3Rpb24gc3BpbldoZWVsKCkgewogICAgICAgICAgICBpZiAoaGFzU3B1bikgcmV0dXJuOwogICAgICAgICAgICBoYXNTcHVuID0gdHJ1ZTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGNvbnN0IGJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzcGluQnRuJyk7CiAgICAgICAgICAgIGJ0bi5kaXNhYmxlZCA9IHRydWU7CiAgICAgICAgICAgIGJ0bi50ZXh0Q29udGVudCA9ICfwn46wIFNQSU5OSU5HLi4uJzsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIFdlaWdodGVkIHJhbmRvbSBzZWxlY3Rpb24KICAgICAgICAgICAgY29uc3QgdG90YWxXZWlnaHQgPSBzZWdtZW50cy5yZWR1Y2UoKHN1bSwgcykgPT4gc3VtICsgcy53ZWlnaHQsIDApOwogICAgICAgICAgICBsZXQgcmFuZG9tID0gTWF0aC5yYW5kb20oKSAqIHRvdGFsV2VpZ2h0OwogICAgICAgICAgICBsZXQgc2VsZWN0ZWRJbmRleCA9IDA7CiAgICAgICAgICAgIAogICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlZ21lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICByYW5kb20gLT0gc2VnbWVudHNbaV0ud2VpZ2h0OwogICAgICAgICAgICAgICAgaWYgKHJhbmRvbSA8PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJbmRleCA9IGk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkU2VnbWVudCA9IHNlZ21lbnRzW3NlbGVjdGVkSW5kZXhdOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHJvdGF0aW9uCiAgICAgICAgICAgIGNvbnN0IHNlZ21lbnRBbmdsZSA9IDM2MCAvIHNlZ21lbnRzLmxlbmd0aDsKICAgICAgICAgICAgY29uc3QgdGFyZ2V0QW5nbGUgPSAzNjAgKiA4ICsgKDM2MCAtIHNlbGVjdGVkSW5kZXggKiBzZWdtZW50QW5nbGUgLSBzZWdtZW50QW5nbGUgLyAyKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGNvbnN0IHdoZWVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JvbnVzV2hlZWwnKTsKICAgICAgICAgICAgd2hlZWwuc3R5bGUudHJhbnNmb3JtID0gYHJvdGF0ZSgke3RhcmdldEFuZ2xlfWRlZylgOwogICAgICAgICAgICAKICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CiAgICAgICAgICAgICAgICBzaG93V2luKHNlbGVjdGVkU2VnbWVudCk7CiAgICAgICAgICAgIH0sIDY1MDApOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBTaG93IHdpbiByZXN1bHQKICAgICAgICBmdW5jdGlvbiBzaG93V2luKHNlZ21lbnQpIHsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NwaW5TZWN0aW9uJykuY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJyk7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3aW5TZWN0aW9uJykuY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7CiAgICAgICAgICAgIAogICAgICAgICAgICBjb25zdCBkaXNjb3VudEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dpbkRpc2NvdW50Jyk7CiAgICAgICAgICAgIGNvbnN0IGxhYmVsRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd2luTGFiZWwnKTsKICAgICAgICAgICAgY29uc3QgZGVzY0VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dpbkRlc2MnKTsKICAgICAgICAgICAgY29uc3QgY29kZUVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Rpc2NvdW50Q29kZScpOwogICAgICAgICAgICBjb25zdCBleHBpcmVzRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwaXJlc0RhdGUnKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIEdlbmVyYXRlIHVuaXF1ZSBjb2RlCiAgICAgICAgICAgIGNvbnN0IGNvZGUgPSBnZW5lcmF0ZUNvZGUoc2VnbWVudC5kaXNjb3VudCk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBDYWxjdWxhdGUgZXhwaXJ5ICg5MCBkYXlzKQogICAgICAgICAgICBjb25zdCBleHBpcnkgPSBuZXcgRGF0ZSgpOwogICAgICAgICAgICBleHBpcnkuc2V0RGF0ZShleHBpcnkuZ2V0RGF0ZSgpICsgOTApOwogICAgICAgICAgICBjb25zdCBleHBpcnlTdHIgPSBleHBpcnkudG9Mb2NhbGVEYXRlU3RyaW5nKCdlbi1VUycsIHsgeWVhcjogJ251bWVyaWMnLCBtb250aDogJ2xvbmcnLCBkYXk6ICdudW1lcmljJyB9KTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmIChzZWdtZW50LmRpc2NvdW50ID09PSAxMDApIHsKICAgICAgICAgICAgICAgIC8vIEZSRUUgU0VSVklDRSEKICAgICAgICAgICAgICAgIGRpc2NvdW50RWwudGV4dENvbnRlbnQgPSAnRlJFRSc7CiAgICAgICAgICAgICAgICBsYWJlbEVsLnRleHRDb250ZW50ID0gJ1NFUlZJQ0UgT0YgWU9VUiBDSE9JQ0UhJzsKICAgICAgICAgICAgICAgIGRlc2NFbC50ZXh0Q29udGVudCA9ICfwn46JIEpBQ0tQT1QhIFlvdSB3b24gYSBGUkVFIHByZW1pdW0gc2VydmljZSEgQ2hvb3NlIGFueSBvbmUgc2VydmljZSBmcm9tIG91ciBjYXRhbG9nLiBDb250YWN0IHVzIHRvIGNsYWltIHlvdXIgcHJpemUhJzsKICAgICAgICAgICAgfSBlbHNlIGlmIChzZWdtZW50LmRpc2NvdW50ID09PSAwKSB7CiAgICAgICAgICAgICAgICAvLyBSRVNQSU4KICAgICAgICAgICAgICAgIGRpc2NvdW50RWwudGV4dENvbnRlbnQgPSAn8J+UhCc7CiAgICAgICAgICAgICAgICBsYWJlbEVsLnRleHRDb250ZW50ID0gJ0ZSRUUgUkVTUElOISc7CiAgICAgICAgICAgICAgICBkZXNjRWwudGV4dENvbnRlbnQgPSAnTHVja3kgeW91ISBZb3UgZ2V0IGFub3RoZXIgc3BpbiBmb3IgRlJFRSEgQ2xpY2sgYmVsb3cgdG8gc3BpbiBhZ2Fpbi4nOwogICAgICAgICAgICAgICAgY29kZUVsLnRleHRDb250ZW50ID0gJ1JFU1BJTi1GUkVFJzsKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewogICAgICAgICAgICAgICAgICAgIGhhc1NwdW4gPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd2luU2VjdGlvbicpLmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpOwogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzcGluU2VjdGlvbicpLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzcGluQnRuJykuZGlzYWJsZWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3BpbkJ0bicpLnRleHRDb250ZW50ID0gJ/CfjrAgU1BJTiBBR0FJTiAtIEZSRUUhJzsKICAgICAgICAgICAgICAgIH0sIDMwMDApOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZGlzY291bnRFbC50ZXh0Q29udGVudCA9IHNlZ21lbnQuZGlzY291bnQgKyAnJSc7CiAgICAgICAgICAgICAgICBsYWJlbEVsLnRleHRDb250ZW50ID0gJ09GRiBBTlkgUFJFTUlVTSBTRVJWSUNFISc7CiAgICAgICAgICAgICAgICBkZXNjRWwudGV4dENvbnRlbnQgPSBgQ29uZ3JhdHVsYXRpb25zISBZb3Ugd29uICR7c2VnbWVudC5kaXNjb3VudH0lIE9GRiBhbnkgb2Ygb3VyIHByZW1pdW0gbWFya2V0aW5nIHNlcnZpY2VzLiBVc2UgeW91ciBjb2RlIGF0IGNoZWNrb3V0IG9yIG1lbnRpb24gaXQgd2hlbiBjb250YWN0aW5nIHVzLmA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGNvZGVFbC50ZXh0Q29udGVudCA9IGNvZGU7CiAgICAgICAgICAgIGV4cGlyZXNFbC50ZXh0Q29udGVudCA9ICdWYWxpZCB1bnRpbDogJyArIGV4cGlyeVN0cjsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIFNldHVwIHNoYXJlIGxpbmtzCiAgICAgICAgICAgIGNvbnN0IHNoYXJlVGV4dCA9IGDwn46JIEkganVzdCB3b24gJHtzZWdtZW50LmRpc2NvdW50ID09PSAxMDAgPyAnYSBGUkVFIHNlcnZpY2UnIDogc2VnbWVudC5kaXNjb3VudCArICclIE9GRid9IGF0IEJyYW5kSGFuZHNoYWtlISBUcnkgeW91ciBsdWNrOiBgOwogICAgICAgICAgICBjb25zdCBzaGFyZVVybCA9ICdodHRwczovL2JyYW5kaGFuZHNoYWtlLmNvbS9ib251cyc7CiAgICAgICAgICAgIAogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2hhcmVXaGF0c0FwcCcpLmhyZWYgPSBgaHR0cHM6Ly93YS5tZS8/dGV4dD0ke2VuY29kZVVSSUNvbXBvbmVudChzaGFyZVRleHQgKyBzaGFyZVVybCl9YDsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NoYXJlTGlua2VkSW4nKS5ocmVmID0gYGh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9zaGFyaW5nL3NoYXJlLW9mZnNpdGUvP3VybD0ke2VuY29kZVVSSUNvbXBvbmVudChzaGFyZVVybCl9YDsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NoYXJlVHdpdHRlcicpLmhyZWYgPSBgaHR0cHM6Ly90d2l0dGVyLmNvbS9pbnRlbnQvdHdlZXQ/dGV4dD0ke2VuY29kZVVSSUNvbXBvbmVudChzaGFyZVRleHQpfSZ1cmw9JHtlbmNvZGVVUklDb21wb25lbnQoc2hhcmVVcmwpfWA7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIEdlbmVyYXRlIGRpc2NvdW50IGNvZGUKICAgICAgICBmdW5jdGlvbiBnZW5lcmF0ZUNvZGUoZGlzY291bnQpIHsKICAgICAgICAgICAgY29uc3QgY2hhcnMgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVowMTIzNDU2Nzg5JzsKICAgICAgICAgICAgbGV0IHN1ZmZpeCA9ICcnOwogICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQ7IGkrKykgewogICAgICAgICAgICAgICAgc3VmZml4ICs9IGNoYXJzLmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFycy5sZW5ndGgpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKGRpc2NvdW50ID09PSAxMDApIHJldHVybiAnSkFDS1BPVC0nICsgc3VmZml4OwogICAgICAgICAgICByZXR1cm4gJ0JPTlVTJyArIGRpc2NvdW50ICsgJy0nICsgc3VmZml4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBDb3B5IGNvZGUgdG8gY2xpcGJvYXJkCiAgICAgICAgZnVuY3Rpb24gY29weUNvZGUoKSB7CiAgICAgICAgICAgIGNvbnN0IGNvZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGlzY291bnRDb2RlJykudGV4dENvbnRlbnQ7CiAgICAgICAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGNvZGUpOwogICAgICAgICAgICBhbGVydCgnQ29kZSBjb3BpZWQ6ICcgKyBjb2RlKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gUmVzcGluIG9mZmVyCiAgICAgICAgZnVuY3Rpb24gcmVzcGluT2ZmZXIoKSB7CiAgICAgICAgICAgIGlmIChjb25maXJtKCdTcGluIGFnYWluIGZvciBhbm90aGVyIGNoYW5jZSBhdCBhIGJpZ2dlciBkaXNjb3VudD8gKCQ3NSBlbnRyeSBmZWUgYXBwbGllcyknKSkgewogICAgICAgICAgICAgICAgaGFzU3B1biA9IGZhbHNlOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dpblNlY3Rpb24nKS5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKTsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlbnRyeVNlY3Rpb24nKS5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKTsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlbnRyeVNlY3Rpb24nKS5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJyB9KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBTZWN1cml0eQogICAgICAgIGNvbnNvbGUubG9nKCclY/CfjqsgVGhlIEJvbnVzIFZhdWx0JywgJ2NvbG9yOiAjZWM0ODk5OyBmb250LXNpemU6IDIwcHg7IGZvbnQtd2VpZ2h0OiBib2xkOycpOwogICAgICAgIGNvbnNvbGUubG9nKCclY8KpIDIwMjYgTXVrYXNhIFZlbnR1cmUgUGFydG5lcnMgTExDJywgJ2NvbG9yOiAjRDRBRjM3OyBmb250LXNpemU6IDEycHg7Jyk7CiAgICA8L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+","embed":""}
π«
π
π«
β¨
π«
π« The Bonus Vault
Unlock Premium Discounts
Not ready for your main prize? Spin the Bonus Wheel for exclusive discounts on our premium marketing services!
$75
One-Time Entry Fee
- β One spin on the Bonus Wheel
- β Win 10%, 25%, or 50% OFF
- β Chance to win a FREE service!
- β Discount valid for 90 days
- β Use on ANY premium service
π³ Payment Methods
Mobile Money
+256 760 383 017
PayPal
π Services You Can Discount
π¬
60-Min Video
TBA
π
30-Day Social Set
TBA
π
Expert Blog
TBA
π°
Press Release Video
TBA
πΊ
Video Ad
TBA
β
Review Piqx
TBA
π§
Review Widget
TBA
π¬
Review Response App
TBA
Spin for Your Discount!
π«
SPIN
50%
OFF ANY PREMIUM SERVICE!
Congratulations! Use this discount on any of our premium marketing services. Your code is valid for 90 days from today.
YOUR DISCOUNT CODE
BONUS50-XXXX
Valid until: [Date]
πΌ Get your own digital business card!
Create My BrandHandshake Card β