{"js":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8IS0tCiAgICDilZTilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZcKICAgIOKVkSAgQlJBTkRIQU5EU0hBS0UgT0ZGSUNJQUwgQ09ERSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKVkQogICAg4pWg4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWjCiAgICDilZEgIEZJTEU6IG9zY2FyLWFpaG9yaXpvbnMtZnJvbnRkb29yLVNMVUctYWlob3Jpem9ucy5icmFuZGhhbmRzaGFrZS5jb20tVjEuaHRtbCDilZEKICAgIOKVkSAgU0xVRzogYWlob3Jpem9ucy5icmFuZGhhbmRzaGFrZS5jb20gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKVkQogICAg4pWRICBWRVJTSU9OOiBWLTEgT0ZGSUNJQUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pWRCiAgICDilZEgIExBU1QgVVBEQVRFRDogSmFudWFyeSAyMDI2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilZEKICAgIOKVkSAgU1RBVFVTOiDinIUgTElWRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilZEKICAgIOKVoOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVowogICAg4pWRICBQSU9ORUVSOiBPc2NhciBNa2FkbywgTVBSU0ssIE1NU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pWRCiAgICDilZEgIEJSQU5EOiBBSSBIb3Jpem9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilZEKICAgIOKVkSAgRElWSVNJT046IFRoZSBBZnJpY2EgQ2hyb25pY2xlcyB8IEFmcmljYSBGcm9udGxpbmUgTWVkaWEgICAgICAgICAgICAgICAgICAgIOKVkQogICAg4pWRICBQSE9ORTogKzI1NCA3OTAgMjI1IDQyMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pWRCiAgICDilZEgIEVNQUlMIEFMRVJUUzogc2hvcGxvY2FsYnVzaW5lc3NhZ2VuY3lAZ21haWwuY29tICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilZEKICAgIOKVkSAgQkFER0U6IPCfh7Dwn4eqIEtlbnlhIEh1YiBMZWFkZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pWRCiAgICDilaDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilaMKICAgIOKVkSAgwqkgMjAyNiBNdWthc2EgVmVudHVyZSBQYXJ0bmVycyBMTEMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICDilZEKICAgIOKVkSAg8J+UkCBQUk9URUNURUQgQ09ERSAtIFVuYXV0aG9yaXplZCBjb3B5aW5nIHByb2hpYml0ZWQuICAgICAgICAgICAgICAgICAgICAgICAg4pWRCiAgICDilZrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZ0KICAgIC0tPgogICAgCiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgICAKICAgIDwhLS0gPT09PT09PT09PSBTRUNVUklUWSBIRUFERVJTID09PT09PT09PT0gLS0+CiAgICA8bWV0YSBodHRwLWVxdWl2PSJYLUZyYW1lLU9wdGlvbnMiIGNvbnRlbnQ9IlNBTUVPUklHSU4iPgogICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1TZWN1cml0eS1Qb2xpY3kiIGNvbnRlbnQ9ImZyYW1lLWFuY2VzdG9ycyAnc2VsZicgaHR0cHM6Ly8qLmJyYW5kaGFuZHNoYWtlLmNvbSBodHRwczovLyouaGFuZHNoYWtlLmFmcmljYSI+CiAgICA8bWV0YSBodHRwLWVxdWl2PSJYLUNvbnRlbnQtVHlwZS1PcHRpb25zIiBjb250ZW50PSJub3NuaWZmIj4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IlgtWFNTLVByb3RlY3Rpb24iIGNvbnRlbnQ9IjE7IG1vZGU9YmxvY2siPgogICAgPG1ldGEgbmFtZT0icmVmZXJyZXIiIGNvbnRlbnQ9InN0cmljdC1vcmlnaW4td2hlbi1jcm9zcy1vcmlnaW4iPgogICAgPCEtLSA9PT09PT09PT09IEVORCBTRUNVUklUWSA9PT09PT09PT09IC0tPgogICAgCiAgICA8IS0tID09PT09PT09PT0gU0VPIE1FVEEgU0VUIDE6IFJPT1QgRE9NQUlOIChHb29nbGUgcGlja3MgdGhpcyB1cCkgPT09PT09PT09PSAtLT4KICAgIDwhLS0gVVJMOiBhaWhvcml6b25zLmJyYW5kaGFuZHNoYWtlLmNvbSAtLT4KICAgIDx0aXRsZT5BSSBIb3Jpem9ucyB8IE9zY2FyIE1rYWRvIHwgWW91ciBEaWdpdGFsIEJ1c2luZXNzIENhcmQgQXdhaXRzPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJHZXQgeW91ciBwcmVtaXVtIHZpcnR1YWwgZGlnaXRhbCBidXNpbmVzcyBjYXJkIGZyb20gT3NjYXIgTWthZG8gLSBLZW55YSBIdWIgTGVhZGVyIGF0IEFJIEhvcml6b25zLiBTdGFuZCBvdXQuIEdldCBub3RpY2VkLiBHZXQgY29ubmVjdGVkLiI+CiAgICA8bWV0YSBuYW1lPSJyb2JvdHMiIGNvbnRlbnQ9ImluZGV4LCBmb2xsb3ciPgogICAgPGxpbmsgcmVsPSJjYW5vbmljYWwiIGhyZWY9Imh0dHBzOi8vYWlob3Jpem9ucy5icmFuZGhhbmRzaGFrZS5jb20iPgogICAgCiAgICA8IS0tIE9wZW4gR3JhcGggLSBSb290IERvbWFpbiAtLT4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzp0aXRsZSIgY29udGVudD0iQUkgSG9yaXpvbnMgfCBPc2NhciBNa2FkbyB8IFZpcnR1YWwgRGlnaXRhbCBCdXNpbmVzcyBDYXJkcyI+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6ZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkdldCB5b3VyIHByZW1pdW0gdmlydHVhbCBkaWdpdGFsIGJ1c2luZXNzIGNhcmQuIFN0YW5kIG91dCBpbiBLZW55YSdzIGRpZ2l0YWwgZWNvbm9teS4iPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOnR5cGUiIGNvbnRlbnQ9IndlYnNpdGUiPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOnVybCIgY29udGVudD0iaHR0cHM6Ly9haWhvcml6b25zLmJyYW5kaGFuZHNoYWtlLmNvbSI+CiAgICAKICAgIDwhLS0gPT09PT09PT09PSBTRU8gTUVUQSBTRVQgMjogRlVOTkVMIEJVSUxERVIgU0xVRyA9PT09PT09PT09IC0tPgogICAgPCEtLSBVUkw6IGJyYW5kaGFuZHNoYWtlLmNvbS9haWhvcml6b25zIChpZiB1c2luZyBzbHVnIGFzIHBhdGgpIC0tPgogICAgPCEtLSBOb3RlOiBGdW5uZWwgYnVpbGRlciB1c2VzIHRoaXMgc2VwYXJhdGVseSBmcm9tIGhvbWUgcGFnZSBtZXRhIC0tPgogICAgPG1ldGEgbmFtZT0iZnVubmVsLXRpdGxlIiBjb250ZW50PSJBSSBIb3Jpem9ucyBLZW55YSB8IFZpcnR1YWwgQnVzaW5lc3MgQ2FyZHMgfCBPc2NhciBNa2FkbyI+CiAgICA8bWV0YSBuYW1lPSJmdW5uZWwtZGVzY3JpcHRpb24iIGNvbnRlbnQ9IktlbnlhJ3MgcHJlbWllciB2aXJ0dWFsIGRpZ2l0YWwgYnVzaW5lc3MgY2FyZCBzZXJ2aWNlLiBQcm9mZXNzaW9uYWwgY2FyZHMgZm9yIGVudHJlcHJlbmV1cnMsIGV4ZWN1dGl2ZXMsIGFuZCBwcm9mZXNzaW9uYWxzLiBQb3dlcmVkIGJ5IEFJIEhvcml6b25zLiI+CiAgICA8bWV0YSBuYW1lPSJmdW5uZWwtc2x1ZyIgY29udGVudD0iYWlob3Jpem9ucyI+CiAgICA8IS0tID09PT09PT09PT0gRU5EIFNFTyBNRVRBID09PT09PT09PT0gLS0+CiAgICAKICAgIDxsaW5rIGhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9UGxheWZhaXIrRGlzcGxheTp3Z2h0QDQwMDs1MDA7NjAwOzcwMDs4MDAmZmFtaWx5PUNvcm1vcmFudCtHYXJhbW9uZDppdGFsLHdnaHRAMCw0MDA7MCw1MDA7MCw2MDA7MSw0MDAmZmFtaWx5PU51bml0bzp3Z2h0QDMwMDs0MDA7NTAwOzYwMDs3MDAmZGlzcGxheT1zd2FwIiByZWw9InN0eWxlc2hlZXQiPgogICAgCiAgICA8c3R5bGU+CiAgICAgICAgOnJvb3QgewogICAgICAgICAgICAvKiBLZW55YS10aGVtZWQgcGFsZXR0ZSAqLwogICAgICAgICAgICAtLWtlbnlhLWdyZWVuOiAjMDA2QjNGOwogICAgICAgICAgICAtLWtlbnlhLWdyZWVuLWxpZ2h0OiAjMTBiOTgxOwogICAgICAgICAgICAtLWtlbnlhLXJlZDogI0JCMTYwMDsKICAgICAgICAgICAgLS1rZW55YS1ibGFjazogIzAwMDAwMDsKICAgICAgICAgICAgLS1nb2xkOiAjRDRBRjM3OwogICAgICAgICAgICAtLWRlZXBnb2xkOiAjQjg5NzJFOwogICAgICAgICAgICAtLWl2b3J5OiAjRjhGNEVDOwogICAgICAgICAgICAtLWNoYXJjb2FsOiAjMGEwYTEyOwogICAgICAgICAgICAtLW5hdnk6ICMwRDFCMkE7CiAgICAgICAgICAgIC0taW5kaWdvOiAjMUMxRjRBOwogICAgICAgICAgICAtLWN5YW46ICMwNmI2ZDQ7CiAgICAgICAgICAgIC0tZWxlY3RyaWM6ICMzNGQzOTk7CiAgICAgICAgICAgIC0tdGVhbDogIzE0YjhhNjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgKiB7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgfQogICAgICAgIGh0bWwgeyBzY3JvbGwtYmVoYXZpb3I6IHNtb290aDsgfQogICAgICAgIAogICAgICAgIGJvZHkgewogICAgICAgICAgICBmb250LWZhbWlseTogJ051bml0bycsIHNhbnMtc2VyaWY7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoYXJjb2FsKTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWl2b3J5KTsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNzsKICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBTRUNVUklUWTogSW1hZ2UgcHJvdGVjdGlvbiAqLwogICAgICAgIGltZyB7CiAgICAgICAgICAgIC13ZWJraXQtdXNlci1kcmFnOiBub25lOwogICAgICAgICAgICAta2h0bWwtdXNlci1kcmFnOiBub25lOwogICAgICAgICAgICAtbW96LXVzZXItZHJhZzogbm9uZTsKICAgICAgICAgICAgLW8tdXNlci1kcmFnOiBub25lOwogICAgICAgICAgICB1c2VyLWRyYWc6IG5vbmU7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIFNFQ1VSSVRZOiBQcmludCBwcm90ZWN0aW9uICovCiAgICAgICAgQG1lZGlhIHByaW50IHsKICAgICAgICAgICAgYm9keSB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBBTklNQVRFRCBCQUNLR1JPVU5EIC0gS2VueWEgR3JlZW4gVGhlbWUgKi8KICAgICAgICAuYmctbWFzdGVyIHsKICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgICAgICB0b3A6IDA7IGxlZnQ6IDA7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOyB6LWluZGV4OiAwOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAKICAgICAgICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDIwJSAxMCUsIHJnYmEoMTYsIDE4NSwgMTI5LCAwLjMpIDAlLCB0cmFuc3BhcmVudCA1MCUpLAogICAgICAgICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgODAlIDkwJSwgcmdiYSg2LCAxODIsIDIxMiwgMC4yKSAwJSwgdHJhbnNwYXJlbnQgNDAlKSwKICAgICAgICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDUwJSA1MCUsIHJnYmEoMjEyLCAxNzUsIDU1LCAwLjEpIDAlLCB0cmFuc3BhcmVudCA2MCUpLAogICAgICAgICAgICAgICAgbGluZWFyLWdyYWRpZW50KDE4MGRlZywgdmFyKC0tY2hhcmNvYWwpIDAlLCAjMGExNjI4IDUwJSwgdmFyKC0tY2hhcmNvYWwpIDEwMCUpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuZmxvYXRpbmctb3JiIHsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgICAgIGZpbHRlcjogYmx1cig2MHB4KTsKICAgICAgICAgICAgYW5pbWF0aW9uOiBmbG9hdE9yYiAyMHMgZWFzZS1pbi1vdXQgaW5maW5pdGU7CiAgICAgICAgfQogICAgICAgIC5vcmItMSB7CiAgICAgICAgICAgIHdpZHRoOiA0MDBweDsgaGVpZ2h0OiA0MDBweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgxNiwgMTg1LCAxMjksIDAuMTUpOwogICAgICAgICAgICB0b3A6IC0xMDBweDsgbGVmdDogLTEwMHB4OwogICAgICAgICAgICBhbmltYXRpb24tZGVsYXk6IDBzOwogICAgICAgIH0KICAgICAgICAub3JiLTIgewogICAgICAgICAgICB3aWR0aDogMzAwcHg7IGhlaWdodDogMzAwcHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjEpOwogICAgICAgICAgICBib3R0b206IC01MHB4OyByaWdodDogLTUwcHg7CiAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheTogLTdzOwogICAgICAgIH0KICAgICAgICAub3JiLTMgewogICAgICAgICAgICB3aWR0aDogMjAwcHg7IGhlaWdodDogMjAwcHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoNiwgMTgyLCAyMTIsIDAuMTIpOwogICAgICAgICAgICB0b3A6IDUwJTsgbGVmdDogNTAlOwogICAgICAgICAgICBhbmltYXRpb24tZGVsYXk6IC0xNHM7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIEBrZXlmcmFtZXMgZmxvYXRPcmIgewogICAgICAgICAgICAwJSwgMTAwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApIHNjYWxlKDEpOyB9CiAgICAgICAgICAgIDI1JSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlKDMwcHgsIC0zMHB4KSBzY2FsZSgxLjA1KTsgfQogICAgICAgICAgICA1MCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMjBweCwgMjBweCkgc2NhbGUoMC45NSk7IH0KICAgICAgICAgICAgNzUlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMjBweCwgMTBweCkgc2NhbGUoMS4wMik7IH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogTUFJTiBDT05UQUlORVIgKi8KICAgICAgICAubWFpbi1jb250YWluZXIgewogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIHotaW5kZXg6IDE7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDEwMHZoOwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBIRVJPIFNFQ1RJT04gKi8KICAgICAgICAuaGVybyB7CiAgICAgICAgICAgIHBhZGRpbmc6IDYwcHggMjBweCA0MHB4OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIEtlbnlhIEJhZGdlICovCiAgICAgICAgLmtlbnlhLWJhZGdlIHsKICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogOHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDE2LCAxODUsIDEyOSwgMC4yKSwgcmdiYSgyMTIsIDE3NSwgNTUsIDAuMikpOwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDE2LCAxODUsIDEyOSwgMC40KTsKICAgICAgICAgICAgcGFkZGluZzogOHB4IDIwcHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWtlbnlhLWdyZWVuLWxpZ2h0KTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjVweDsKICAgICAgICAgICAgYW5pbWF0aW9uOiBiYWRnZVB1bHNlIDNzIGVhc2UtaW4tb3V0IGluZmluaXRlOwogICAgICAgIH0KICAgICAgICAua2VueWEtYmFkZ2UgLmZsYWcgewogICAgICAgICAgICBmb250LXNpemU6IDEuMnJlbTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgQGtleWZyYW1lcyBiYWRnZVB1bHNlIHsKICAgICAgICAgICAgMCUsIDEwMCUgeyBib3gtc2hhZG93OiAwIDAgMjBweCByZ2JhKDE2LCAxODUsIDEyOSwgMC4zKTsgfQogICAgICAgICAgICA1MCUgeyBib3gtc2hhZG93OiAwIDAgMzBweCByZ2JhKDE2LCAxODUsIDEyOSwgMC41KTsgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBBdmF0YXIgKi8KICAgICAgICAuYXZhdGFyLWNvbnRhaW5lciB7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgd2lkdGg6IDE0MHB4OwogICAgICAgICAgICBoZWlnaHQ6IDE0MHB4OwogICAgICAgICAgICBtYXJnaW46IDAgYXV0byAyNXB4OwogICAgICAgIH0KICAgICAgICAuYXZhdGFyLXJpbmcgewogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIGluc2V0OiAtNHB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWtlbnlhLWdyZWVuLWxpZ2h0KSwgdmFyKC0tZ29sZCksIHZhcigtLWN5YW4pKTsKICAgICAgICAgICAgYW5pbWF0aW9uOiByaW5nUm90YXRlIDhzIGxpbmVhciBpbmZpbml0ZTsKICAgICAgICB9CiAgICAgICAgQGtleWZyYW1lcyByaW5nUm90YXRlIHsKICAgICAgICAgICAgdG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9CiAgICAgICAgfQogICAgICAgIC5hdmF0YXIgewogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0ta2VueWEtZ3JlZW4pLCB2YXIoLS1rZW55YS1ncmVlbi1saWdodCkpOwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgZm9udC1zaXplOiAzLjVyZW07CiAgICAgICAgICAgIGJvcmRlcjogNHB4IHNvbGlkIHZhcigtLWNoYXJjb2FsKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogSWNvbi1iYXNlZCBhdmF0YXIgLSBubyBwZW9wbGUgaW1hZ2VzICovCiAgICAgICAgLmF2YXRhci1pY29uIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiAycHg7CiAgICAgICAgfQogICAgICAgIC5hdmF0YXItaWNvbiAubWFpbi1pY29uIHsKICAgICAgICAgICAgZm9udC1zaXplOiAyLjhyZW07CiAgICAgICAgfQogICAgICAgIC5hdmF0YXItaWNvbiAuc3ViLWljb25zIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZ2FwOiAzcHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogTmFtZSAmIFRpdGxlICovCiAgICAgICAgLm5hbWUgewogICAgICAgICAgICBmb250LWZhbWlseTogJ1BsYXlmYWlyIERpc3BsYXknLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAyLjJyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDVweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0taXZvcnkpIDAlLCB2YXIoLS1nb2xkKSA1MCUsIHZhcigtLWl2b3J5KSAxMDAlKTsKICAgICAgICAgICAgLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6IHRleHQ7CiAgICAgICAgICAgIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jbGlwOiB0ZXh0OwogICAgICAgIH0KICAgICAgICAuY3JlZGVudGlhbHMgewogICAgICAgICAgICBmb250LXNpemU6IDAuOXJlbTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWdvbGQpOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAxcHg7CiAgICAgICAgfQogICAgICAgIC50aXRsZSB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC43KTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4OwogICAgICAgIH0KICAgICAgICAuY29tcGFueSB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgICAgICAgICBjb2xvcjogdmFyKC0ta2VueWEtZ3JlZW4tbGlnaHQpOwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBCcmFuZCBMb2dvICovCiAgICAgICAgLmJyYW5kLXNlY3Rpb24gewogICAgICAgICAgICBtYXJnaW46IDMwcHggYXV0bzsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIH0KICAgICAgICAuYnJhbmQtbG9nbyB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnUGxheWZhaXIgRGlzcGxheScsIHNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IDEuOHJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDsKICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDJweDsKICAgICAgICB9CiAgICAgICAgLmJyYW5kLWxvZ28gLmFpIHsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWtlbnlhLWdyZWVuLWxpZ2h0KTsKICAgICAgICB9CiAgICAgICAgLmJyYW5kLWxvZ28gLmhvcml6b25zIHsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWdvbGQpOwogICAgICAgIH0KICAgICAgICAuYnJhbmQtdGFnbGluZSB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44cmVtOwogICAgICAgICAgICBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjUpOwogICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogM3B4OwogICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICAgICAgICBtYXJnaW4tdG9wOiA1cHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIEFjdGlvbiBCdXR0b25zIEdyaWQgKi8KICAgICAgICAuYWN0aW9uLWJ1dHRvbnMgewogICAgICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCAxZnIpOwogICAgICAgICAgICBnYXA6IDEwcHg7CiAgICAgICAgICAgIG1heC13aWR0aDogNDAwcHg7CiAgICAgICAgICAgIG1hcmdpbjogMzBweCBhdXRvOwogICAgICAgICAgICBwYWRkaW5nOiAwIDIwcHg7CiAgICAgICAgfQogICAgICAgIC5hY3Rpb24tYnRuIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiA2cHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDE1cHggOHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDE2LCAxODUsIDEyOSwgMC4xKTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxNiwgMTg1LCAxMjksIDAuMyk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1pdm9yeSk7CiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjdyZW07CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB9CiAgICAgICAgLmFjdGlvbi1idG46aG92ZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDE2LCAxODUsIDEyOSwgMC4yKTsKICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1rZW55YS1ncmVlbi1saWdodCk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTsKICAgICAgICB9CiAgICAgICAgLmFjdGlvbi1idG4gLmljb24gewogICAgICAgICAgICBmb250LXNpemU6IDEuNHJlbTsKICAgICAgICB9CiAgICAgICAgLmFjdGlvbi1idG4ucmV3YXJkcy1idG4gewogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDIxMiwgMTc1LCA1NSwgMC4yKSwgcmdiYSgxNiwgMTg1LCAxMjksIDAuMikpOwogICAgICAgICAgICBib3JkZXItY29sb3I6IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjQpOwogICAgICAgIH0KICAgICAgICAuYWN0aW9uLWJ0bi5yZXdhcmRzLWJ0bjpob3ZlciB7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIERpdmlkZXIgKi8KICAgICAgICAuZGl2aWRlciB7CiAgICAgICAgICAgIHdpZHRoOiA4MCU7CiAgICAgICAgICAgIG1heC13aWR0aDogMzAwcHg7CiAgICAgICAgICAgIGhlaWdodDogMXB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCByZ2JhKDE2LCAxODUsIDEyOSwgMC41KSwgdmFyKC0tZ29sZCksIHJnYmEoMTYsIDE4NSwgMTI5LCAwLjUpLCB0cmFuc3BhcmVudCk7CiAgICAgICAgICAgIG1hcmdpbjogMzBweCBhdXRvOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBWSVNJVE9SIENIT0lDRSBTRUNUSU9OICovCiAgICAgICAgLmNob2ljZS1zZWN0aW9uIHsKICAgICAgICAgICAgcGFkZGluZzogMjBweDsKICAgICAgICAgICAgbWF4LXdpZHRoOiA1MDBweDsKICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgICAgfQogICAgICAgIC5jaG9pY2UtdGl0bGUgewogICAgICAgICAgICBmb250LWZhbWlseTogJ1BsYXlmYWlyIERpc3BsYXknLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjVyZW07CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWl2b3J5KTsKICAgICAgICB9CiAgICAgICAgLmNob2ljZS1zdWJ0aXRsZSB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC42KTsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBQYXRoIENhcmRzICovCiAgICAgICAgLnBhdGgtY2FyZHMgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgICBnYXA6IDIwcHg7CiAgICAgICAgfQogICAgICAgIC5wYXRoLWNhcmQgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDE2LCAxODUsIDEyOSwgMC4wOCksIHJnYmEoMjEyLCAxNzUsIDU1LCAwLjA1KSk7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTYsIDE4NSwgMTI5LCAwLjIpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxNnB4OwogICAgICAgICAgICBwYWRkaW5nOiAyNXB4OwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB9CiAgICAgICAgLnBhdGgtY2FyZDo6YmVmb3JlIHsKICAgICAgICAgICAgY29udGVudDogJyc7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgdG9wOiAwOyBsZWZ0OiAwOyByaWdodDogMDsgYm90dG9tOiAwOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDE2LCAxODUsIDEyOSwgMC4xKSwgdHJhbnNwYXJlbnQpOwogICAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNHMgZWFzZTsKICAgICAgICB9CiAgICAgICAgLnBhdGgtY2FyZDpob3ZlciB7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0ta2VueWEtZ3JlZW4tbGlnaHQpOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTNweCk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMTVweCA0MHB4IHJnYmEoMTYsIDE4NSwgMTI5LCAwLjIpOwogICAgICAgIH0KICAgICAgICAucGF0aC1jYXJkOmhvdmVyOjpiZWZvcmUgewogICAgICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIH0KICAgICAgICAucGF0aC1jYXJkLmFjdGl2ZSB7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAzMHB4IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjMpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAucGF0aC1oZWFkZXIgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBnYXA6IDE1cHg7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEycHg7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgei1pbmRleDogMTsKICAgICAgICB9CiAgICAgICAgLnBhdGgtaWNvbiB7CiAgICAgICAgICAgIHdpZHRoOiA1MHB4OwogICAgICAgICAgICBoZWlnaHQ6IDUwcHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBmb250LXNpemU6IDEuNXJlbTsKICAgICAgICB9CiAgICAgICAgLnBhdGgtY3VyaW91cyAucGF0aC1pY29uIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tY3lhbiksIHZhcigtLXRlYWwpKTsKICAgICAgICB9CiAgICAgICAgLnBhdGgtcmVhZHkgLnBhdGgtaWNvbiB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWtlbnlhLWdyZWVuLWxpZ2h0KSwgdmFyKC0tZ29sZCkpOwogICAgICAgIH0KICAgICAgICAucGF0aC10aXRsZSB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnUGxheWZhaXIgRGlzcGxheScsIHNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IDEuMnJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWl2b3J5KTsKICAgICAgICB9CiAgICAgICAgLnBhdGgtZGVzYyB7CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI0OCwgMjQ0LCAyMzYsIDAuNyk7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtOwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIHotaW5kZXg6IDE7CiAgICAgICAgfQogICAgICAgIC5wYXRoLWFycm93IHsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICByaWdodDogMjBweDsKICAgICAgICAgICAgdG9wOiA1MCU7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjVyZW07CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI0OCwgMjQ0LCAyMzYsIDAuMyk7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgfQogICAgICAgIC5wYXRoLWNhcmQ6aG92ZXIgLnBhdGgtYXJyb3cgewogICAgICAgICAgICBjb2xvcjogdmFyKC0ta2VueWEtZ3JlZW4tbGlnaHQpOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCg1cHgpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBFWFBBTkRFRCBTRUNUSU9OUyAqLwogICAgICAgIC5leHBhbmRlZC1zZWN0aW9uIHsKICAgICAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMjBweDsKICAgICAgICAgICAgcGFkZGluZy10b3A6IDIwcHg7CiAgICAgICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDE2LCAxODUsIDEyOSwgMC4yKTsKICAgICAgICAgICAgYW5pbWF0aW9uOiBzbGlkZURvd24gMC40cyBlYXNlOwogICAgICAgIH0KICAgICAgICAuZXhwYW5kZWQtc2VjdGlvbi5hY3RpdmUgewogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB9CiAgICAgICAgQGtleWZyYW1lcyBzbGlkZURvd24gewogICAgICAgICAgICBmcm9tIHsgb3BhY2l0eTogMDsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMHB4KTsgfQogICAgICAgICAgICB0byB7IG9wYWNpdHk6IDE7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBGb3JtIFN0eWxlcyAqLwogICAgICAgIC5mb3JtLWdyb3VwIHsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDsKICAgICAgICB9CiAgICAgICAgLmZvcm0tZ3JvdXAgbGFiZWwgewogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtOwogICAgICAgICAgICBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjgpOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA2cHg7CiAgICAgICAgfQogICAgICAgIC5mb3JtLWdyb3VwIGlucHV0LAogICAgICAgIC5mb3JtLWdyb3VwIHNlbGVjdCwKICAgICAgICAuZm9ybS1ncm91cCB0ZXh0YXJlYSB7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBwYWRkaW5nOiAxMnB4IDE1cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMTYsIDE4NSwgMTI5LCAwLjA1KTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxNiwgMTg1LCAxMjksIDAuMyk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1pdm9yeSk7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OwogICAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgfQogICAgICAgIC5mb3JtLWdyb3VwIGlucHV0OmZvY3VzLAogICAgICAgIC5mb3JtLWdyb3VwIHNlbGVjdDpmb2N1cywKICAgICAgICAuZm9ybS1ncm91cCB0ZXh0YXJlYTpmb2N1cyB7CiAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0ta2VueWEtZ3JlZW4tbGlnaHQpOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMjBweCByZ2JhKDE2LCAxODUsIDEyOSwgMC4yKTsKICAgICAgICB9CiAgICAgICAgLmZvcm0tZ3JvdXAgaW5wdXQ6OnBsYWNlaG9sZGVyIHsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC40KTsKICAgICAgICB9CiAgICAgICAgLmZvcm0tZ3JvdXAgc2VsZWN0IG9wdGlvbiB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoYXJjb2FsKTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWl2b3J5KTsKICAgICAgICB9CiAgICAgICAgLmZvcm0tcm93IHsKICAgICAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyOwogICAgICAgICAgICBnYXA6IDE1cHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIExlYWQgQnV0dG9uICovCiAgICAgICAgLmxlYWQtYnRuIHsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIHBhZGRpbmc6IDE1cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWtlbnlhLWdyZWVuLWxpZ2h0KSwgdmFyKC0tdGVhbCkpOwogICAgICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgIH0KICAgICAgICAubGVhZC1idG46aG92ZXIgewogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMTBweCAzMHB4IHJnYmEoMTYsIDE4NSwgMTI5LCAwLjQpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBQUklDSU5HIFNFQ1RJT04gKi8KICAgICAgICAucHJpY2luZy1zZWN0aW9uIHsKICAgICAgICAgICAgcGFkZGluZzogNDBweCAyMHB4OwogICAgICAgICAgICBtYXgtd2lkdGg6IDUwMHB4OwogICAgICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgICB9CiAgICAgICAgLnByaWNpbmctaGVhZGVyIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4OwogICAgICAgIH0KICAgICAgICAucHJpY2luZy1oZWFkZXIgaDIgewogICAgICAgICAgICBmb250LWZhbWlseTogJ1BsYXlmYWlyIERpc3BsYXknLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjhyZW07CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICAgICAgfQogICAgICAgIC5wcmljaW5nLWhlYWRlciBwIHsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC42KTsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBDdXJyZW5jeSBUb2dnbGUgKi8KICAgICAgICAuY3VycmVuY3ktdG9nZ2xlIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogMTBweDsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDsKICAgICAgICB9CiAgICAgICAgLmN1cnJlbmN5LWJ0biB7CiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggMjVweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgxNiwgMTg1LCAxMjksIDAuMSk7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTYsIDE4NSwgMTI5LCAwLjMpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyNXB4OwogICAgICAgICAgICBjb2xvcjogdmFyKC0taXZvcnkpOwogICAgICAgICAgICBmb250LWZhbWlseTogaW5oZXJpdDsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW07CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICB9CiAgICAgICAgLmN1cnJlbmN5LWJ0bi5hY3RpdmUgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1rZW55YS1ncmVlbi1saWdodCk7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0ta2VueWEtZ3JlZW4tbGlnaHQpOwogICAgICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIFBhY2thZ2UgQ2FyZHMgKi8KICAgICAgICAucGFja2FnZS1jYXJkcyB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICAgIGdhcDogMTVweDsKICAgICAgICB9CiAgICAgICAgLnBhY2thZ2UtY2FyZCB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMTYsIDE4NSwgMTI5LCAwLjA4KSwgcmdiYSgyMTIsIDE3NSwgNTUsIDAuMDMpKTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxNiwgMTg1LCAxMjksIDAuMik7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDIwcHg7CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIH0KICAgICAgICAucGFja2FnZS1jYXJkOmhvdmVyIHsKICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1rZW55YS1ncmVlbi1saWdodCk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg1cHgpOwogICAgICAgIH0KICAgICAgICAucGFja2FnZS1jYXJkLnBvcHVsYXIgewogICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWdvbGQpOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDIxMiwgMTc1LCA1NSwgMC4xKSwgcmdiYSgxNiwgMTg1LCAxMjksIDAuMDUpKTsKICAgICAgICB9CiAgICAgICAgLnBhY2thZ2UtY2FyZC5wb3B1bGFyOjpiZWZvcmUgewogICAgICAgICAgICBjb250ZW50OiAn4q2QIE1PU1QgUE9QVUxBUic7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgdG9wOiAtMTBweDsKICAgICAgICAgICAgcmlnaHQ6IDIwcHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWdvbGQpOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tY2hhcmNvYWwpOwogICAgICAgICAgICBwYWRkaW5nOiA0cHggMTJweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweDsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjdyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgfQogICAgICAgIC5wYWNrYWdlLWhlYWRlciB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgICAgICB9CiAgICAgICAgLnBhY2thZ2UtbmFtZSB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnUGxheWZhaXIgRGlzcGxheScsIHNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IDEuMnJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICB9CiAgICAgICAgLnBhY2thZ2UtcHJpY2UgewogICAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgICAgICB9CiAgICAgICAgLnBhY2thZ2UtcHJpY2UgLmFtb3VudCB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS40cmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgICAgICBjb2xvcjogdmFyKC0ta2VueWEtZ3JlZW4tbGlnaHQpOwogICAgICAgIH0KICAgICAgICAucGFja2FnZS1wcmljZSAucGVyaW9kIHsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjhyZW07CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI0OCwgMjQ0LCAyMzYsIDAuNSk7CiAgICAgICAgfQogICAgICAgIC5wYWNrYWdlLWZlYXR1cmVzIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICAgICAgICBnYXA6IDhweDsKICAgICAgICB9CiAgICAgICAgLmZlYXR1cmUtdGFnIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgxNiwgMTg1LCAxMjksIDAuMTUpOwogICAgICAgICAgICBwYWRkaW5nOiA0cHggMTBweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweDsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtOwogICAgICAgICAgICBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjgpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBPUkRFUiBCT1ggKi8KICAgICAgICAub3JkZXItYm94IHsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMzBweDsKICAgICAgICAgICAgcGFkZGluZzogMjVweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgxNiwgMTg1LCAxMjksIDAuMSksIHJnYmEoMjEyLCAxNzUsIDU1LCAwLjA1KSk7CiAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWtlbnlhLWdyZWVuLWxpZ2h0KTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweDsKICAgICAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgICB9CiAgICAgICAgLm9yZGVyLWJveC5hY3RpdmUgewogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAgICAgYW5pbWF0aW9uOiBzbGlkZURvd24gMC40cyBlYXNlOwogICAgICAgIH0KICAgICAgICAub3JkZXItYm94IGgzIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4zcmVtOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIFdoYXRzQXBwIENUQSAqLwogICAgICAgIC53aGF0c2FwcC1zZWN0aW9uIHsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMzBweDsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIH0KICAgICAgICAud2hhdHNhcHAtYnRuIHsKICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogMTBweDsKICAgICAgICAgICAgcGFkZGluZzogMTVweCAzMHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMjVEMzY2LCAjMTI4QzdFKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMzBweDsKICAgICAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICB9CiAgICAgICAgLndoYXRzYXBwLWJ0bjpob3ZlciB7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtM3B4KTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCAxMHB4IDMwcHggcmdiYSgzNywgMjExLCAxMDIsIDAuNCk7CiAgICAgICAgfQogICAgICAgIC53aGF0c2FwcC1idG4gLmljb24gewogICAgICAgICAgICBmb250LXNpemU6IDEuM3JlbTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogVHJ1c3QgQmFkZ2VzICovCiAgICAgICAgLnRydXN0LXNlY3Rpb24gewogICAgICAgICAgICBwYWRkaW5nOiA0MHB4IDIwcHg7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICB9CiAgICAgICAgLnRydXN0LWJhZGdlcyB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBnYXA6IDMwcHg7CiAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgICAgICB9CiAgICAgICAgLnRydXN0LWJhZGdlIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgfQogICAgICAgIC50cnVzdC1iYWRnZSAuaWNvbiB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMnJlbTsKICAgICAgICB9CiAgICAgICAgLnRydXN0LWJhZGdlIC50ZXh0IHsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjhyZW07CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI0OCwgMjQ0LCAyMzYsIDAuNyk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIEZPT1RFUiAqLwogICAgICAgIGZvb3RlciB7CiAgICAgICAgICAgIHBhZGRpbmc6IDMwcHggMjBweDsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgxNiwgMTg1LCAxMjksIDAuMik7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IGF1dG87CiAgICAgICAgfQogICAgICAgIGZvb3RlciBwIHsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjhyZW07CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI0OCwgMjQ0LCAyMzYsIDAuNSk7CiAgICAgICAgfQogICAgICAgIGZvb3RlciBhIHsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWtlbnlhLWdyZWVuLWxpZ2h0KTsKICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBNT0RBTFMgKi8KICAgICAgICAubW9kYWwtb3ZlcmxheSB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICAgICAgaW5zZXQ6IDA7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC44KTsKICAgICAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpOwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgei1pbmRleDogMTAwMDsKICAgICAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgICAgICBwYWRkaW5nOiAyMHB4OwogICAgICAgIH0KICAgICAgICAubW9kYWwtb3ZlcmxheS5hY3RpdmUgewogICAgICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOwogICAgICAgIH0KICAgICAgICAubW9kYWwtY29udGVudCB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLW5hdnkpLCB2YXIoLS1jaGFyY29hbCkpOwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDE2LCAxODUsIDEyOSwgMC4zKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweDsKICAgICAgICAgICAgcGFkZGluZzogMzBweDsKICAgICAgICAgICAgbWF4LXdpZHRoOiA0MDBweDsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45KTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgZWFzZTsKICAgICAgICB9CiAgICAgICAgLm1vZGFsLW92ZXJsYXkuYWN0aXZlIC5tb2RhbC1jb250ZW50IHsKICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgICAgICB9CiAgICAgICAgLm1vZGFsLWhlYWRlciB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgICAgICB9CiAgICAgICAgLm1vZGFsLWhlYWRlciBoMyB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnUGxheWZhaXIgRGlzcGxheScsIHNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IDEuM3JlbTsKICAgICAgICB9CiAgICAgICAgLm1vZGFsLWNsb3NlIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogbm9uZTsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBjb2xvcjogdmFyKC0taXZvcnkpOwogICAgICAgICAgICBmb250LXNpemU6IDEuNXJlbTsKICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgICBwYWRkaW5nOiA1cHg7CiAgICAgICAgfQogICAgICAgIC5zaGFyZS1vcHRpb25zIHsKICAgICAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKTsKICAgICAgICAgICAgZ2FwOiAxNXB4OwogICAgICAgIH0KICAgICAgICAuc2hhcmUtb3B0aW9uIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDE1cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMTYsIDE4NSwgMTI5LCAwLjEpOwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDE2LCAxODUsIDEyOSwgMC4yKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWl2b3J5KTsKICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgICAgICBmb250LXNpemU6IDAuOHJlbTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIH0KICAgICAgICAuc2hhcmUtb3B0aW9uOmhvdmVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgxNiwgMTg1LCAxMjksIDAuMik7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0ta2VueWEtZ3JlZW4tbGlnaHQpOwogICAgICAgIH0KICAgICAgICAuc2hhcmUtb3B0aW9uIC5pY29uIHsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjVyZW07CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIFJlc3BvbnNpdmUgKi8KICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNTAwcHgpIHsKICAgICAgICAgICAgLm5hbWUgeyBmb250LXNpemU6IDEuOHJlbTsgfQogICAgICAgICAgICAuYWN0aW9uLWJ1dHRvbnMgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCAxZnIpOyBnYXA6IDhweDsgfQogICAgICAgICAgICAuYWN0aW9uLWJ0biB7IHBhZGRpbmc6IDEycHggNXB4OyBmb250LXNpemU6IDAuNjVyZW07IH0KICAgICAgICAgICAgLmFjdGlvbi1idG4gLmljb24geyBmb250LXNpemU6IDEuMnJlbTsgfQogICAgICAgICAgICAuZm9ybS1yb3cgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsgfQogICAgICAgICAgICAucGFja2FnZS1jYXJkLnBvcHVsYXI6OmJlZm9yZSB7IGZvbnQtc2l6ZTogMC42cmVtOyBwYWRkaW5nOiAzcHggOHB4OyB9CiAgICAgICAgfQogICAgPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KICAgIDxkaXYgY2xhc3M9ImJnLW1hc3RlciI+CiAgICAgICAgPGRpdiBjbGFzcz0iZmxvYXRpbmctb3JiIG9yYi0xIj48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJmbG9hdGluZy1vcmIgb3JiLTIiPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImZsb2F0aW5nLW9yYiBvcmItMyI+PC9kaXY+CiAgICA8L2Rpdj4KICAgIAogICAgPGRpdiBjbGFzcz0ibWFpbi1jb250YWluZXIiPgogICAgICAgIDwhLS0gSEVSTyBTRUNUSU9OIC0tPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJoZXJvIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ia2VueWEtYmFkZ2UiPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZsYWciPvCfh7Dwn4eqPC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4+S2VueWEgSHViIExlYWRlcjwvc3Bhbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhdmF0YXItY29udGFpbmVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImF2YXRhci1yaW5nIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImF2YXRhciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYXZhdGFyLWljb24iPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibWFpbi1pY29uIj7wn5SNPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ViLWljb25zIj7wn5OK8J+TiPCfjq88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIAogICAgICAgICAgICA8aDEgY2xhc3M9Im5hbWUiPk9zY2FyIE1rYWRvPC9oMT4KICAgICAgICAgICAgPHAgY2xhc3M9ImNyZWRlbnRpYWxzIj5NUFJTSywgTU1TSzwvcD4KICAgICAgICAgICAgPHAgY2xhc3M9InRpdGxlIj5EaWdpdGFsIEJ1c2luZXNzIFN0cmF0ZWdpc3Q8L3A+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjb21wYW55Ij5UaGUgQWZyaWNhIENocm9uaWNsZXM8L3A+CiAgICAgICAgICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJicmFuZC1zZWN0aW9uIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJyYW5kLWxvZ28iPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhaSI+QUk8L3NwYW4+IDxzcGFuIGNsYXNzPSJob3Jpem9ucyI+SG9yaXpvbnM8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJicmFuZC10YWdsaW5lIj5FeHBhbmRpbmcgWW91ciBEaWdpdGFsIFByZXNlbmNlPC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgCiAgICAgICAgICAgIDwhLS0gQWN0aW9uIEJ1dHRvbnMgLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b25zIj4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImFjdGlvbi1idG4iIG9uY2xpY2s9ImRvd25sb2FkVkNhcmQoKSI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Imljb24iPvCfk4c8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+U2F2ZSBDb250YWN0PC9zcGFuPgogICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJhY3Rpb24tYnRuIiBvbmNsaWNrPSJvcGVuU2hhcmVNb2RhbCgpIj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaWNvbiI+8J+TpDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj5TaGFyZTwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYWN0aW9uLWJ0biIgb25jbGljaz0ib3BlblNhdmVNb2RhbCgpIj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaWNvbiI+8J+Svjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj5TYXZlIENhcmQ8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYnJhbmRoYW5kc2hha2UuY29tL3JlZmVycmFsLXJld2FyZHMiIGNsYXNzPSJhY3Rpb24tYnRuIHJld2FyZHMtYnRuIj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaWNvbiI+8J+OgTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj5SZXdhcmRzPC9zcGFuPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgCiAgICAgICAgPGRpdiBjbGFzcz0iZGl2aWRlciI+PC9kaXY+CiAgICAgICAgCiAgICAgICAgPCEtLSBWSVNJVE9SIENIT0lDRSBTRUNUSU9OIC0tPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJjaG9pY2Utc2VjdGlvbiI+CiAgICAgICAgICAgIDxoMiBjbGFzcz0iY2hvaWNlLXRpdGxlIj5Zb3VyIFZpcnR1YWwgQnVzaW5lc3MgQ2FyZCBBd2FpdHM8L2gyPgogICAgICAgICAgICA8cCBjbGFzcz0iY2hvaWNlLXN1YnRpdGxlIj5XaGVyZSBhcmUgeW91IGluIHlvdXIgam91cm5leT88L3A+CiAgICAgICAgICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYXRoLWNhcmRzIj4KICAgICAgICAgICAgICAgIDwhLS0gQ1VSSU9VUyBQQVRIIC0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGF0aC1jYXJkIHBhdGgtY3VyaW91cyIgb25jbGljaz0idG9nZ2xlUGF0aCgnY3VyaW91cycpIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYXRoLWhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhdGgtaWNvbiI+8J+klDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwYXRoLXRpdGxlIj5JJ20gQ3VyaW91czwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwYXRoLWRlc2MiPlRlbGwgbWUgbW9yZSBhYm91dCB2aXJ0dWFsIGJ1c2luZXNzIGNhcmRzIGFuZCBob3cgdGhleSB3b3JrPC9wPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwYXRoLWFycm93Ij7ihpI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZXhwYW5kZWQtc2VjdGlvbiIgaWQ9ImN1cmlvdXMtc2VjdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAxNXB4OyBjb2xvcjogcmdiYSgyNDgsMjQ0LDIzNiwwLjgpOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmVhdCEgTGV0IG1lIHNlbmQgeW91IGRldGFpbHMgYWJvdXQgaG93IGEgdmlydHVhbCBidXNpbmVzcyBjYXJkIGNhbiB0cmFuc2Zvcm0geW91ciBuZXR3b3JraW5nLiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERyb3AgeW91ciBpbmZvIGJlbG93IGFuZCBJJ2xsIHJlYWNoIG91dCBwZXJzb25hbGx5LgogICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iaHR0cHM6Ly9mb3Jtc3VibWl0LmNvL3Nob3Bsb2NhbGJ1c2luZXNzYWdlbmN5QGdtYWlsLmNvbSIgbWV0aG9kPSJQT1NUIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Il9zdWJqZWN0IiB2YWx1ZT0i8J+klCBDVVJJT1VTIExlYWQgZnJvbSBBSSBIb3Jpem9ucyAtIE9zY2FyIChLZW55YSkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iX3RlbXBsYXRlIiB2YWx1ZT0idGFibGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iX2NhcHRjaGEiIHZhbHVlPSJmYWxzZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJMZWFkIFR5cGUiIHZhbHVlPSJDdXJpb3VzIC0gV2FudHMgTW9yZSBJbmZvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFtYmFzc2Fkb3IiIHZhbHVlPSJPc2NhciBNa2FkbyAtIEFJIEhvcml6b25zIC0gS2VueWEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFNFQ1VSSVRZOiBIb25leXBvdCBmb3IgYm90IGRldGVjdGlvbiAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTk5OTlweDtvcGFjaXR5OjA7aGVpZ2h0OjA7b3ZlcmZsb3c6aGlkZGVuOyIgYXJpYS1oaWRkZW49InRydWUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJfaG9uZXlwb3QiIHRhYmluZGV4PSItMSIgYXV0b2NvbXBsZXRlPSJvZmYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5Zb3VyIE5hbWU8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOYW1lIiByZXF1aXJlZCBwbGFjZWhvbGRlcj0iV2hhdCBzaG91bGQgSSBjYWxsIHlvdT8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+RW1haWwgb3IgV2hhdHNBcHA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJDb250YWN0IiByZXF1aXJlZCBwbGFjZWhvbGRlcj0iSG93IGNhbiBJIHJlYWNoIHlvdT8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImxlYWQtYnRuIj5TZW5kIE1lIFRoZSBJbmZvIPCfk6k8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDwhLS0gUkVBRFkgUEFUSCAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhdGgtY2FyZCBwYXRoLXJlYWR5IiBvbmNsaWNrPSJ0b2dnbGVQYXRoKCdyZWFkeScpIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYXRoLWhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhdGgtaWNvbiI+8J+agDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwYXRoLXRpdGxlIj5JJ20gUmVhZHkgdG8gT3JkZXI8L2gzPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0icGF0aC1kZXNjIj5TaG93IG1lIHRoZSBwYWNrYWdlcyBhbmQgbGV0J3MgZ2V0IG15IGNhcmQgY3JlYXRlZDwvcD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGF0aC1hcnJvdyI+4oaSPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAKICAgICAgICA8IS0tIFBSSUNJTkcgU0VDVElPTiAoSGlkZGVuIHVudGlsIFJlYWR5IGlzIGNsaWNrZWQpIC0tPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJwcmljaW5nLXNlY3Rpb24iIGlkPSJwcmljaW5nLXNlY3Rpb24iIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNpbmctaGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5DaG9vc2UgWW91ciBQYWNrYWdlPC9oMj4KICAgICAgICAgICAgICAgIDxwPkludmVzdCBpbiB5b3VyIHByb2Zlc3Npb25hbCBwcmVzZW5jZTwvcD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIAogICAgICAgICAgICA8IS0tIEN1cnJlbmN5IFRvZ2dsZSAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY3VycmVuY3ktdG9nZ2xlIj4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImN1cnJlbmN5LWJ0biBhY3RpdmUiIG9uY2xpY2s9InNldEN1cnJlbmN5KCdrZXMnKSI+8J+HsPCfh6ogS0VTPC9idXR0b24+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjdXJyZW5jeS1idG4iIG9uY2xpY2s9InNldEN1cnJlbmN5KCd1c2QnKSI+8J+HuvCfh7ggVVNEPC9idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAKICAgICAgICAgICAgPCEtLSBQYWNrYWdlIENhcmRzIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYWNrYWdlLWNhcmRzIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhY2thZ2UtY2FyZCIgb25jbGljaz0ic2VsZWN0UGFja2FnZSgnc3RhcnRlcicpIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYWNrYWdlLWhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwYWNrYWdlLW5hbWUiPlN0YXJ0ZXI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhY2thZ2UtcHJpY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImFtb3VudCIgZGF0YS1rZXM9IjEsMzAwIiBkYXRhLXVzZD0iMTAiPktFUyAxLDMwMDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwZXJpb2QiPm9uZS10aW1lPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYWNrYWdlLWZlYXR1cmVzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZlYXR1cmUtdGFnIj5CYXNpYyBDYXJkPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmVhdHVyZS10YWciPkNvbnRhY3QgSW5mbzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZlYXR1cmUtdGFnIj4xIFNvY2lhbCBMaW5rPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhY2thZ2UtY2FyZCBwb3B1bGFyIiBvbmNsaWNrPSJzZWxlY3RQYWNrYWdlKCdwcm9mZXNzaW9uYWwnKSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFja2FnZS1oZWFkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGFja2FnZS1uYW1lIj5Qcm9mZXNzaW9uYWw8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhY2thZ2UtcHJpY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImFtb3VudCIgZGF0YS1rZXM9IjIsNjAwIiBkYXRhLXVzZD0iMjAiPktFUyAyLDYwMDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwZXJpb2QiPm9uZS10aW1lPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYWNrYWdlLWZlYXR1cmVzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZlYXR1cmUtdGFnIj5QcmVtaXVtIERlc2lnbjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZlYXR1cmUtdGFnIj5RUiBDb2RlPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmVhdHVyZS10YWciPjUgU29jaWFsIExpbmtzPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmVhdHVyZS10YWciPkFuYWx5dGljczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYWNrYWdlLWNhcmQiIG9uY2xpY2s9InNlbGVjdFBhY2thZ2UoJ2V4ZWN1dGl2ZScpIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYWNrYWdlLWhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwYWNrYWdlLW5hbWUiPkV4ZWN1dGl2ZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFja2FnZS1wcmljZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYW1vdW50IiBkYXRhLWtlcz0iMyw5MDAiIGRhdGEtdXNkPSIzMCI+S0VTIDMsOTAwPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBlcmlvZCI+b25lLXRpbWU8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhY2thZ2UtZmVhdHVyZXMiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmVhdHVyZS10YWciPkN1c3RvbSBEZXNpZ248L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmZWF0dXJlLXRhZyI+VmlkZW8gSW50cm88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmZWF0dXJlLXRhZyI+VW5saW1pdGVkIExpbmtzPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmVhdHVyZS10YWciPlByaW9yaXR5IFN1cHBvcnQ8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFja2FnZS1jYXJkIiBvbmNsaWNrPSJzZWxlY3RQYWNrYWdlKCdlbGl0ZScpIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYWNrYWdlLWhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwYWNrYWdlLW5hbWUiPkVsaXRlPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYWNrYWdlLXByaWNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhbW91bnQiIGRhdGEta2VzPSI2LDUwMCIgZGF0YS11c2Q9IjUwIj5LRVMgNiw1MDA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGVyaW9kIj5vbmUtdGltZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFja2FnZS1mZWF0dXJlcyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmZWF0dXJlLXRhZyI+RXZlcnl0aGluZyBpbiBFeGVjdXRpdmU8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmZWF0dXJlLXRhZyI+Q3VzdG9tIERvbWFpbjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZlYXR1cmUtdGFnIj4xIFllYXIgSG9zdGluZzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZlYXR1cmUtdGFnIj5XaGl0ZSBHbG92ZSBTZXR1cDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgCiAgICAgICAgICAgIDwhLS0gT3JkZXIgQm94IC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJvcmRlci1ib3giIGlkPSJvcmRlci1ib3giPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ib3JkZXItYm94LWlubmVyIj4KICAgICAgICAgICAgICAgICAgICA8aDM+8J+TnSBPcmRlciBZb3VyIENhcmQ8L2gzPgogICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iaHR0cHM6Ly9mb3Jtc3VibWl0LmNvL3Nob3Bsb2NhbGJ1c2luZXNzYWdlbmN5QGdtYWlsLmNvbSIgbWV0aG9kPSJQT1NUIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iX3N1YmplY3QiIHZhbHVlPSLwn5SlIFNFUklPVVMgT3JkZXIgZnJvbSBBSSBIb3Jpem9ucyAtIE9zY2FyIChLZW55YSkiPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfdGVtcGxhdGUiIHZhbHVlPSJ0YWJsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Il9jYXB0Y2hhIiB2YWx1ZT0iZmFsc2UiPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfbmV4dCIgdmFsdWU9Imh0dHBzOi8vYnJhbmRoYW5kc2hha2UuY29tL2Rlc2lnbi1uZXh0c3RlcHM/cmVmPWFpaG9yaXpvbnMiPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJMZWFkIFR5cGUiIHZhbHVlPSJTZXJpb3VzIC0gUmVhZHkgdG8gT3JkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBbWJhc3NhZG9yIiB2YWx1ZT0iT3NjYXIgTWthZG8gLSBBSSBIb3Jpem9ucyAtIEtlbnlhIj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gU0VDVVJJVFk6IEhvbmV5cG90IGZvciBib3QgZGV0ZWN0aW9uIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi05OTk5cHg7b3BhY2l0eTowO2hlaWdodDowO292ZXJmbG93OmhpZGRlbjsiIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJfaG9uZXlwb3QiIHRhYmluZGV4PSItMSIgYXV0b2NvbXBsZXRlPSJvZmYiPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPkZ1bGwgTmFtZTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iRnVsbCBOYW1lIiByZXF1aXJlZCBwbGFjZWhvbGRlcj0iWW91ciBmdWxsIG5hbWUiPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tcm93Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5FbWFpbDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImVtYWlsIiBuYW1lPSJFbWFpbCIgcmVxdWlyZWQgcGxhY2Vob2xkZXI9InlvdXJAZW1haWwuY29tIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlBob25lL1doYXRzQXBwPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGVsIiBuYW1lPSJQaG9uZSIgcmVxdWlyZWQgcGxhY2Vob2xkZXI9IisyNTQuLi4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+UGFja2FnZSBTZWxlY3RlZDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IG5hbWU9IlBhY2thZ2UiIGlkPSJwYWNrYWdlU2VsZWN0IiByZXF1aXJlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIiPkNob29zZSB5b3VyIHBhY2thZ2U8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTdGFydGVyIC0gS0VTIDEsMzAwIj5TdGFydGVyIC0gS0VTIDEsMzAwPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUHJvZmVzc2lvbmFsIC0gS0VTIDIsNjAwIj5Qcm9mZXNzaW9uYWwgLSBLRVMgMiw2MDA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJFeGVjdXRpdmUgLSBLRVMgMyw5MDAiPkV4ZWN1dGl2ZSAtIEtFUyAzLDkwMDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkVsaXRlIC0gS0VTIDYsNTAwIj5FbGl0ZSAtIEtFUyA2LDUwMDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+V2hhdCdzIHlvdXIgcHJvZmVzc2lvbi9idXNpbmVzcz88L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IkJ1c2luZXNzIiBwbGFjZWhvbGRlcj0iZS5nLiBSZWFsIEVzdGF0ZSBBZ2VudCwgRG9jdG9yLCBFbnRyZXByZW5ldXIuLi4iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0ibGVhZC1idG4iPlN1Ym1pdCBPcmRlciDwn5qAPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAKICAgICAgICAgICAgPCEtLSBXaGF0c0FwcCBDVEEgLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IndoYXRzYXBwLXNlY3Rpb24iPgogICAgICAgICAgICAgICAgPHAgc3R5bGU9Im1hcmdpbi1ib3R0b206IDE1cHg7IGNvbG9yOiByZ2JhKDI0OCwyNDQsMjM2LDAuNik7Ij5RdWVzdGlvbnM/IExldCdzIGNoYXQhPC9wPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93YS5tZS8yNTQ3OTAyMjU0MjI/dGV4dD1IaSUyME9zY2FyISUyMEknbSUyMGludGVyZXN0ZWQlMjBpbiUyMGdldHRpbmclMjBhJTIwdmlydHVhbCUyMGJ1c2luZXNzJTIwY2FyZCUyMGZyb20lMjBBSSUyMEhvcml6b25zLiIgY2xhc3M9IndoYXRzYXBwLWJ0biI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Imljb24iPvCfkqw8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+Q2hhdCBvbiBXaGF0c0FwcDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9zZWN0aW9uPgogICAgICAgIAogICAgICAgIDwhLS0gVHJ1c3QgQmFkZ2VzIC0tPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJ0cnVzdC1zZWN0aW9uIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idHJ1c3QtYmFkZ2VzIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRydXN0LWJhZGdlIj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaWNvbiI+4pqhPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0Ij40OGhyIERlbGl2ZXJ5PC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0cnVzdC1iYWRnZSI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Imljb24iPvCflJI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRleHQiPlNlY3VyZSAmIFByaXZhdGU8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRydXN0LWJhZGdlIj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaWNvbiI+8J+MjTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dCI+V29ya3MgR2xvYmFsbHk8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9zZWN0aW9uPgogICAgICAgIAogICAgICAgIDwhLS0gRm9vdGVyIC0tPgogICAgICAgIDxmb290ZXI+CiAgICAgICAgICAgIDxwPsKpIDIwMjYgQUkgSG9yaXpvbnMgfCBQb3dlcmVkIGJ5IDxhIGhyZWY9Imh0dHBzOi8vYnJhbmRoYW5kc2hha2UuY29tIj5CcmFuZEhhbmRzaGFrZTwvYT48L3A+CiAgICAgICAgICAgIDxwIHN0eWxlPSJtYXJnaW4tdG9wOiA1cHg7Ij5BIE11a2FzYSBWZW50dXJlIFBhcnRuZXJzIExMQyBJbml0aWF0aXZlPC9wPgogICAgICAgIDwvZm9vdGVyPgogICAgPC9kaXY+CiAgICAKICAgIDwhLS0gU0hBUkUgTU9EQUwgLS0+CiAgICA8ZGl2IGNsYXNzPSJtb2RhbC1vdmVybGF5IiBpZD0ic2hhcmVNb2RhbCI+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGVudCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDM+U2hhcmUgVGhpcyBDYXJkPC9oMz4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9Im1vZGFsLWNsb3NlIiBvbmNsaWNrPSJjbG9zZVNoYXJlTW9kYWwoKSI+w5c8L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNoYXJlLW9wdGlvbnMiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93YS5tZS8/dGV4dD1DaGVjayUyMG91dCUyME9zY2FyJTIwTWthZG8ncyUyMGRpZ2l0YWwlMjBidXNpbmVzcyUyMGNhcmQlMjBmcm9tJTIwQUklMjBIb3Jpem9ucyElMjBodHRwczovL2FpaG9yaXpvbnMuYnJhbmRoYW5kc2hha2UuY29tIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9InNoYXJlLW9wdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Imljb24iPvCfkqw8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+V2hhdHNBcHA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3R3aXR0ZXIuY29tL2ludGVudC90d2VldD90ZXh0PUNoZWNrJTIwb3V0JTIwdGhpcyUyMGRpZ2l0YWwlMjBidXNpbmVzcyUyMGNhcmQhJnVybD1odHRwczovL2FpaG9yaXpvbnMuYnJhbmRoYW5kc2hha2UuY29tIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9InNoYXJlLW9wdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Imljb24iPvCfkKY8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+VHdpdHRlcjwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9zaGFyaW5nL3NoYXJlLW9mZnNpdGUvP3VybD1odHRwczovL2FpaG9yaXpvbnMuYnJhbmRoYW5kc2hha2UuY29tIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9InNoYXJlLW9wdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Imljb24iPvCfkrw8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+TGlua2VkSW48L3NwYW4+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5mYWNlYm9vay5jb20vc2hhcmVyL3NoYXJlci5waHA/dT1odHRwczovL2FpaG9yaXpvbnMuYnJhbmRoYW5kc2hha2UuY29tIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9InNoYXJlLW9wdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Imljb24iPvCfk5g8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+RmFjZWJvb2s8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJzaGFyZS1vcHRpb24iIG9uY2xpY2s9ImNvcHlMaW5rKCkiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpY29uIj7wn5SXPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxzcGFuPkNvcHkgTGluazwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ic2hhcmUtb3B0aW9uIiBvbmNsaWNrPSJuYXRpdmVTaGFyZSgpIj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaWNvbiI+8J+Tsjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj5Nb3JlLi4uPC9zcGFuPgogICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICAKICAgIDwhLS0gU0FWRSBNT0RBTCAtLT4KICAgIDxkaXYgY2xhc3M9Im1vZGFsLW92ZXJsYXkiIGlkPSJzYXZlTW9kYWwiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgogICAgICAgICAgICAgICAgPGgzPlNhdmUgVGhpcyBDYXJkPC9oMz4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9Im1vZGFsLWNsb3NlIiBvbmNsaWNrPSJjbG9zZVNhdmVNb2RhbCgpIj7DlzwvYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyBwYWRkaW5nOiAyMHB4IDA7Ij4KICAgICAgICAgICAgICAgIDxwIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAyMHB4OyBjb2xvcjogcmdiYSgyNDgsMjQ0LDIzNiwwLjgpOyI+Qm9va21hcmsgdGhpcyBwYWdlIG9yIGFkZCB0byB5b3VyIGhvbWUgc2NyZWVuIGZvciBxdWljayBhY2Nlc3MhPC9wPgogICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiAxNXB4OyI+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibGVhZC1idG4iIG9uY2xpY2s9ImRvd25sb2FkVkNhcmQoKSIgc3R5bGU9ImJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWtlbnlhLWdyZWVuLWxpZ2h0KSwgdmFyKC0tdGVhbCkpOyI+CiAgICAgICAgICAgICAgICAgICAgICAgIPCfk4cgU2F2ZSBDb250YWN0IHRvIFBob25lCiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZTogMC44NXJlbTsgY29sb3I6IHJnYmEoMjQ4LDI0NCwyMzYsMC42KTsiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPmlPUzo8L3N0cm9uZz4gVGFwIFNoYXJlIOKGkiBBZGQgdG8gSG9tZSBTY3JlZW48YnI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+QW5kcm9pZDo8L3N0cm9uZz4gVGFwIOKLriDihpIgQWRkIHRvIEhvbWUgU2NyZWVuCiAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICAKICAgIDxzY3JpcHQ+CiAgICAgICAgLy8gUGF0aCBUb2dnbGUKICAgICAgICBmdW5jdGlvbiB0b2dnbGVQYXRoKHBhdGgpIHsKICAgICAgICAgICAgY29uc3QgY3VyaW91c1NlY3Rpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY3VyaW91cy1zZWN0aW9uJyk7CiAgICAgICAgICAgIGNvbnN0IHByaWNpbmdTZWN0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ByaWNpbmctc2VjdGlvbicpOwogICAgICAgICAgICBjb25zdCBjdXJpb3VzQ2FyZCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5wYXRoLWN1cmlvdXMnKTsKICAgICAgICAgICAgY29uc3QgcmVhZHlDYXJkID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnBhdGgtcmVhZHknKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmIChwYXRoID09PSAnY3VyaW91cycpIHsKICAgICAgICAgICAgICAgIGN1cmlvdXNTZWN0aW9uLmNsYXNzTGlzdC50b2dnbGUoJ2FjdGl2ZScpOwogICAgICAgICAgICAgICAgY3VyaW91c0NhcmQuY2xhc3NMaXN0LnRvZ2dsZSgnYWN0aXZlJyk7CiAgICAgICAgICAgICAgICBwcmljaW5nU2VjdGlvbi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICAgICAgcmVhZHlDYXJkLmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpOwogICAgICAgICAgICB9IGVsc2UgaWYgKHBhdGggPT09ICdyZWFkeScpIHsKICAgICAgICAgICAgICAgIHByaWNpbmdTZWN0aW9uLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwogICAgICAgICAgICAgICAgcmVhZHlDYXJkLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwogICAgICAgICAgICAgICAgY3VyaW91c1NlY3Rpb24uY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJyk7CiAgICAgICAgICAgICAgICBjdXJpb3VzQ2FyZC5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKTsKICAgICAgICAgICAgICAgIHByaWNpbmdTZWN0aW9uLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ3N0YXJ0JyB9KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBDdXJyZW5jeSBUb2dnbGUKICAgICAgICBsZXQgY3VycmVudEN1cnJlbmN5ID0gJ2tlcyc7CiAgICAgICAgZnVuY3Rpb24gc2V0Q3VycmVuY3koY3VycmVuY3kpIHsKICAgICAgICAgICAgY3VycmVudEN1cnJlbmN5ID0gY3VycmVuY3k7CiAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5jdXJyZW5jeS1idG4nKS5mb3JFYWNoKGJ0biA9PiBidG4uY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJykpOwogICAgICAgICAgICBldmVudC50YXJnZXQuY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7CiAgICAgICAgICAgIAogICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcucGFja2FnZS1wcmljZSAuYW1vdW50JykuZm9yRWFjaChlbCA9PiB7CiAgICAgICAgICAgICAgICBjb25zdCBrZXMgPSBlbC5kYXRhc2V0LmtlczsKICAgICAgICAgICAgICAgIGNvbnN0IHVzZCA9IGVsLmRhdGFzZXQudXNkOwogICAgICAgICAgICAgICAgZWwudGV4dENvbnRlbnQgPSBjdXJyZW5jeSA9PT0gJ2tlcycgPyBgS0VTICR7a2VzfWAgOiBgJCR7dXNkfWA7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gVXBkYXRlIHNlbGVjdCBvcHRpb25zCiAgICAgICAgICAgIGNvbnN0IHNlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYWNrYWdlU2VsZWN0Jyk7CiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSBzZWxlY3QucXVlcnlTZWxlY3RvckFsbCgnb3B0aW9uJyk7CiAgICAgICAgICAgIGlmIChjdXJyZW5jeSA9PT0gJ2tlcycpIHsKICAgICAgICAgICAgICAgIG9wdGlvbnNbMV0udmFsdWUgPSBvcHRpb25zWzFdLnRleHRDb250ZW50ID0gJ1N0YXJ0ZXIgLSBLRVMgMSwzMDAnOwogICAgICAgICAgICAgICAgb3B0aW9uc1syXS52YWx1ZSA9IG9wdGlvbnNbMl0udGV4dENvbnRlbnQgPSAnUHJvZmVzc2lvbmFsIC0gS0VTIDIsNjAwJzsKICAgICAgICAgICAgICAgIG9wdGlvbnNbM10udmFsdWUgPSBvcHRpb25zWzNdLnRleHRDb250ZW50ID0gJ0V4ZWN1dGl2ZSAtIEtFUyAzLDkwMCc7CiAgICAgICAgICAgICAgICBvcHRpb25zWzRdLnZhbHVlID0gb3B0aW9uc1s0XS50ZXh0Q29udGVudCA9ICdFbGl0ZSAtIEtFUyA2LDUwMCc7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBvcHRpb25zWzFdLnZhbHVlID0gb3B0aW9uc1sxXS50ZXh0Q29udGVudCA9ICdTdGFydGVyIC0gJDEwJzsKICAgICAgICAgICAgICAgIG9wdGlvbnNbMl0udmFsdWUgPSBvcHRpb25zWzJdLnRleHRDb250ZW50ID0gJ1Byb2Zlc3Npb25hbCAtICQyMCc7CiAgICAgICAgICAgICAgICBvcHRpb25zWzNdLnZhbHVlID0gb3B0aW9uc1szXS50ZXh0Q29udGVudCA9ICdFeGVjdXRpdmUgLSAkMzAnOwogICAgICAgICAgICAgICAgb3B0aW9uc1s0XS52YWx1ZSA9IG9wdGlvbnNbNF0udGV4dENvbnRlbnQgPSAnRWxpdGUgLSAkNTAnOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIFBhY2thZ2UgU2VsZWN0aW9uCiAgICAgICAgZnVuY3Rpb24gc2VsZWN0UGFja2FnZShwa2cpIHsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29yZGVyLWJveCcpLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwogICAgICAgICAgICBjb25zdCBzZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFja2FnZVNlbGVjdCcpOwogICAgICAgICAgICBjb25zdCBwa2dNYXAgPSB7CiAgICAgICAgICAgICAgICAnc3RhcnRlcic6IDEsCiAgICAgICAgICAgICAgICAncHJvZmVzc2lvbmFsJzogMiwKICAgICAgICAgICAgICAgICdleGVjdXRpdmUnOiAzLAogICAgICAgICAgICAgICAgJ2VsaXRlJzogNAogICAgICAgICAgICB9OwogICAgICAgICAgICBzZWxlY3Quc2VsZWN0ZWRJbmRleCA9IHBrZ01hcFtwa2ddOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3JkZXItYm94Jykuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnY2VudGVyJyB9KTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gdkNhcmQgRG93bmxvYWQKICAgICAgICBmdW5jdGlvbiBkb3dubG9hZFZDYXJkKCkgewogICAgICAgICAgICBjb25zdCB2Y2FyZCA9IGBCRUdJTjpWQ0FSRApWRVJTSU9OOjMuMApGTjpPc2NhciBNa2FkbwpOOk1rYWRvO09zY2FyOzs7TVBSU0ssIE1NU0sKT1JHOlRoZSBBZnJpY2EgQ2hyb25pY2xlcyB8IEFmcmljYSBGcm9udGxpbmUgTWVkaWEKVElUTEU6RGlnaXRhbCBCdXNpbmVzcyBTdHJhdGVnaXN0ClRFTDtUWVBFPUNFTEw6KzI1NDc5MDIyNTQyMgpVUkw6aHR0cHM6Ly9haWhvcml6b25zLmJyYW5kaGFuZHNoYWtlLmNvbQpOT1RFOktlbnlhIEh1YiBMZWFkZXIgLSBBSSBIb3Jpem9ucyB8IEJyYW5kSGFuZHNoYWtlIEFtYmFzc2Fkb3IKRU5EOlZDQVJEYDsKICAgICAgICAgICAgCiAgICAgICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbdmNhcmRdLCB7IHR5cGU6ICd0ZXh0L3ZjYXJkJyB9KTsKICAgICAgICAgICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTsKICAgICAgICAgICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKICAgICAgICAgICAgYS5ocmVmID0gdXJsOwogICAgICAgICAgICBhLmRvd25sb2FkID0gJ09zY2FyX01rYWRvX0FJX0hvcml6b25zLnZjZic7CiAgICAgICAgICAgIGEuY2xpY2soKTsKICAgICAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBTaGFyZSBNb2RhbAogICAgICAgIGZ1bmN0aW9uIG9wZW5TaGFyZU1vZGFsKCkgewogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2hhcmVNb2RhbCcpLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwogICAgICAgIH0KICAgICAgICBmdW5jdGlvbiBjbG9zZVNoYXJlTW9kYWwoKSB7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaGFyZU1vZGFsJykuY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJyk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIFNhdmUgTW9kYWwKICAgICAgICBmdW5jdGlvbiBvcGVuU2F2ZU1vZGFsKCkgewogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2F2ZU1vZGFsJykuY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7CiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIGNsb3NlU2F2ZU1vZGFsKCkgewogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2F2ZU1vZGFsJykuY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJyk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIENvcHkgTGluawogICAgICAgIGZ1bmN0aW9uIGNvcHlMaW5rKCkgewogICAgICAgICAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCgnaHR0cHM6Ly9haWhvcml6b25zLmJyYW5kaGFuZHNoYWtlLmNvbScpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgYWxlcnQoJ0xpbmsgY29waWVkIHRvIGNsaXBib2FyZCEnKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIE5hdGl2ZSBTaGFyZQogICAgICAgIGZ1bmN0aW9uIG5hdGl2ZVNoYXJlKCkgewogICAgICAgICAgICBpZiAobmF2aWdhdG9yLnNoYXJlKSB7CiAgICAgICAgICAgICAgICBuYXZpZ2F0b3Iuc2hhcmUoewogICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnT3NjYXIgTWthZG8gLSBBSSBIb3Jpem9ucycsCiAgICAgICAgICAgICAgICAgICAgdGV4dDogJ0NoZWNrIG91dCB0aGlzIGRpZ2l0YWwgYnVzaW5lc3MgY2FyZCEnLAogICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vYWlob3Jpem9ucy5icmFuZGhhbmRzaGFrZS5jb20nCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGNvcHlMaW5rKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gQ2xvc2UgbW9kYWxzIG9uIG91dHNpZGUgY2xpY2sKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2hhcmVNb2RhbCcpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICBpZiAoZS50YXJnZXQgPT09IHRoaXMpIGNsb3NlU2hhcmVNb2RhbCgpOwogICAgICAgIH0pOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYXZlTW9kYWwnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgaWYgKGUudGFyZ2V0ID09PSB0aGlzKSBjbG9zZVNhdmVNb2RhbCgpOwogICAgICAgIH0pOwogICAgICAgIAogICAgICAgIC8vID09PT09PT09PT0gQlJBTkRIQU5EU0hBS0UgU0VDVVJJVFkgU1VJVEUgPT09PT09PT09PQogICAgICAgIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgJ3VzZSBzdHJpY3QnOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gQ29uc29sZSBXYXJuaW5nCiAgICAgICAgICAgIGNvbnNvbGUubG9nKCclY/Cfm5EgU1RPUCEnLCAnY29sb3I6IHJlZDsgZm9udC1zaXplOiA1MHB4OyBmb250LXdlaWdodDogYm9sZDsnKTsKICAgICAgICAgICAgY29uc29sZS5sb2coJyVj4pqg77iPIFRoaXMgaXMgcHJvdGVjdGVkIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBvZiBNdWthc2EgVmVudHVyZSBQYXJ0bmVycyBMTEMuJywgJ2NvbG9yOiBvcmFuZ2U7IGZvbnQtc2l6ZTogMTZweDsnKTsKICAgICAgICAgICAgY29uc29sZS5sb2coJyVj8J+UkCBVbmF1dGhvcml6ZWQgY29weWluZyBvciByZXZlcnNlIGVuZ2luZWVyaW5nIGlzIHByb2hpYml0ZWQuJywgJ2NvbG9yOiB5ZWxsb3c7IGZvbnQtc2l6ZTogMTRweDsnKTsKICAgICAgICAgICAgY29uc29sZS5sb2coJyVjwqkgMjAyNiBCcmFuZEhhbmRzaGFrZSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQnLCAnY29sb3I6ICNENEFGMzc7IGZvbnQtc2l6ZTogMTJweDsnKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIERpc2FibGUgcmlnaHQtY2xpY2sgb24gaW1hZ2VzCiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NvbnRleHRtZW51JywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0LnRhZ05hbWUgPT09ICdJTUcnKSB7CiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBEaXNhYmxlIHZpZXcgc291cmNlIHNob3J0Y3V0cwogICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgaWYgKGUuY3RybEtleSAmJiAoZS5rZXkgPT09ICd1JyB8fCBlLmtleSA9PT0gJ1UnIHx8IGUua2V5ID09PSAncycgfHwgZS5rZXkgPT09ICdTJykpIHsKICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIFNlc3Npb24gdHJhY2tpbmcKICAgICAgICAgICAgaWYgKCFzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdiaF9zZXNzaW9uX2lkJykpIHsKICAgICAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2JoX3Nlc3Npb25faWQnLCAnQkgtJyArIERhdGUubm93KCkgKyAnLScgKyBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiwgOSkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBGb3JtIHRpbWVzdGFtcCBpbmplY3Rpb24gZm9yIGJvdCBkZXRlY3Rpb24KICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZm9ybScpLmZvckVhY2goZnVuY3Rpb24oZm9ybSkgewogICAgICAgICAgICAgICAgdmFyIHRzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTsKICAgICAgICAgICAgICAgIHRzLnR5cGUgPSAnaGlkZGVuJzsKICAgICAgICAgICAgICAgIHRzLm5hbWUgPSAnX2Zvcm1fbG9hZGVkJzsKICAgICAgICAgICAgICAgIHRzLnZhbHVlID0gRGF0ZS5ub3coKTsKICAgICAgICAgICAgICAgIGZvcm0uYXBwZW5kQ2hpbGQodHMpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIEFudGktaWZyYW1lIGVtYmVkZGluZyAob25seSBlbmZvcmNlIG9uIHByb2R1Y3Rpb24gZG9tYWlucykKICAgICAgICAgICAgaWYgKHdpbmRvdy5zZWxmICE9PSB3aW5kb3cudG9wKSB7CiAgICAgICAgICAgICAgICB2YXIgY3VycmVudEhvc3QgPSB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7CiAgICAgICAgICAgICAgICB2YXIgaXNQcm9kdWN0aW9uID0gY3VycmVudEhvc3QuaW5jbHVkZXMoJ2JyYW5kaGFuZHNoYWtlLmNvbScpIHx8IGN1cnJlbnRIb3N0LmluY2x1ZGVzKCdoYW5kc2hha2UuYWZyaWNhJyk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGlmIChpc1Byb2R1Y3Rpb24pIHsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFyZW50SG9zdCA9IHdpbmRvdy5wYXJlbnQubG9jYXRpb24uaG9zdG5hbWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGFyZW50SG9zdC5pbmNsdWRlcygnYnJhbmRoYW5kc2hha2UuY29tJykgJiYgIXBhcmVudEhvc3QuaW5jbHVkZXMoJ2hhbmRzaGFrZS5hZnJpY2EnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSAnPGgxIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjUwcHg7Y29sb3I6cmVkOyI+4pqg77iPIFVuYXV0aG9yaXplZCBlbWJlZGRpbmcgZGV0ZWN0ZWQuPC9oMT4nOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gJzxoMSBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzo1MHB4O2NvbG9yOnJlZDsiPuKaoO+4jyBVbmF1dGhvcml6ZWQgZW1iZWRkaW5nIGRldGVjdGVkLjwvaDE+JzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9KSgpOwogICAgICAgIC8vID09PT09PT09PT0gRU5EIFNFQ1VSSVRZID09PT09PT09PT0KICAgIDwvc2NyaXB0Pgo8L2JvZHk+CjwvaHRtbD4=","embed":""}
š°šŖ
Kenya Hub Leader
š
šššÆ
Oscar Mkado
MPRSK, MMSK
Digital Business Strategist
The Africa Chronicles
AI Horizons
Expanding Your Digital Presence
Your Virtual Business Card Awaits
Where are you in your journey?
š¤
I'm Curious
Tell me more about virtual business cards and how they work
āGreat! Let me send you details about how a virtual business card can transform your networking. Drop your info below and I'll reach out personally.
š
I'm Ready to Order
Show me the packages and let's get my card created
āChoose Your Package
Invest in your professional presence
Starter
KES 1,300
one-time
Basic Card
Contact Info
1 Social Link
Professional
KES 2,600
one-time
Premium Design
QR Code
5 Social Links
Analytics
Executive
KES 3,900
one-time
Custom Design
Video Intro
Unlimited Links
Priority Support
Elite
KES 6,500
one-time
Everything in Executive
Custom Domain
1 Year Hosting
White Glove Setup
š Order Your Card
Questions? Let's chat!
š¬ Chat on WhatsApp
ā”
48hr Delivery
š
Secure & Private
š
Works Globally
Share This Card
Save This Card
Bookmark this page or add to your home screen for quick access!
iOS: Tap Share ā Add to Home Screen
Android: Tap ā® ā Add to Home Screen