Digital Brand Handshake Logo in royal blue and golden yellow with 3D hands.

BRAND HANDSHAKE

  • Invitation
  • Vault
  • Pricing
  • Rewards
  • Bonus
  • Thank You
  • Networks
  • Domains
{"js":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8IS0tCiAgICDilZTilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZcKICAgIOKVkSAgQlJBTkRIQU5EU0hBS0UgT0ZGSUNJQUwgQ09ERSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKVkQogICAg4pWg4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWjCiAgICDilZEgIEZJTEU6IGJyYW5kaGFuZHNoYWtlLWZsYWdzaGlwLVNMVUctYnJhbmRoYW5kc2hha2UuY29tLVYxLmh0bWwgICAgICAgICAgICAgICDilZEKICAgIOKVkSAgU0xVRzogYnJhbmRoYW5kc2hha2UuY29tIChST09UIERPTUFJTikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKVkQogICAg4pWRICBWRVJTSU9OOiBWLTEgT0ZGSUNJQUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pWRCiAgICDilZEgIExBU1QgVVBEQVRFRDogSmFudWFyeSAyMDI2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilZEKICAgIOKVkSAgU1RBVFVTOiDinIUgRkxBR1NISVAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilZEKICAgIOKVoOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVowogICAg4pWRICBUWVBFOiBQcm9mZXNzaW9uYWwgRmxhZ3NoaXAgTGFuZGluZyBQYWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pWRCiAgICDilZEgIFBVUlBPU0U6IE1haW4gZW50cnkgcG9pbnQsIDktdGllciBwcmljaW5nIHNob3djYXNlICAgICAgICAgICAgICAgICAgICAgICAgICDilZEKICAgIOKVkSAgUkVESVJFQ1RTIFRPOiAvZGVzaWduLW5leHRzdGVwcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKVkQogICAg4pWg4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWjCiAgICDilZEgIMKpIDIwMjYgTXVrYXNhIFZlbnR1cmUgUGFydG5lcnMgTExDLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAg4pWRCiAgICDilZEgIPCflJAgUFJPVEVDVEVEIENPREUgLSBVbmF1dGhvcml6ZWQgY29weWluZyBwcm9oaWJpdGVkLiAgICAgICAgICAgICAgICAgICAgICAgIOKVkQogICAg4pWa4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWdCiAgICAtLT4KICAgIAogICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPgogICAgCiAgICA8IS0tID09PT09PT09PT0gU0VDVVJJVFkgSEVBREVSUyA9PT09PT09PT09IC0tPgogICAgPG1ldGEgaHR0cC1lcXVpdj0iWC1GcmFtZS1PcHRpb25zIiBjb250ZW50PSJTQU1FT1JJR0lOIj4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtU2VjdXJpdHktUG9saWN5IiBjb250ZW50PSJmcmFtZS1hbmNlc3RvcnMgJ3NlbGYnIGh0dHBzOi8vKi5icmFuZGhhbmRzaGFrZS5jb20gaHR0cHM6Ly8qLmhhbmRzaGFrZS5hZnJpY2EiPgogICAgPG1ldGEgaHR0cC1lcXVpdj0iWC1Db250ZW50LVR5cGUtT3B0aW9ucyIgY29udGVudD0ibm9zbmlmZiI+CiAgICA8bWV0YSBodHRwLWVxdWl2PSJYLVhTUy1Qcm90ZWN0aW9uIiBjb250ZW50PSIxOyBtb2RlPWJsb2NrIj4KICAgIDxtZXRhIG5hbWU9InJlZmVycmVyIiBjb250ZW50PSJzdHJpY3Qtb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luIj4KICAgIDwhLS0gPT09PT09PT09PSBFTkQgU0VDVVJJVFkgPT09PT09PT09PSAtLT4KICAgIAogICAgPHRpdGxlPkJyYW5kSGFuZHNoYWtlIHwgUHJlbWl1bSBWaXJ0dWFsIEJ1c2luZXNzIENhcmRzIHwgRGlnaXRhbCBQcmVzZW5jZSBQZXJmZWN0ZWQ8L3RpdGxlPgogICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkVsZXZhdGUgeW91ciBwcm9mZXNzaW9uYWwgcHJlc2VuY2Ugd2l0aCBwcmVtaXVtIHZpcnR1YWwgYnVzaW5lc3MgY2FyZHMuIEZyb20gcGVyc29uYWwgYnJhbmRpbmcgdG8gZW50ZXJwcmlzZSBzb2x1dGlvbnMuIFN0YW5kIG91dC4gR2V0IG5vdGljZWQuIEdldCByZW1lbWJlcmVkLiI+CiAgICA8bWV0YSBuYW1lPSJrZXl3b3JkcyIgY29udGVudD0idmlydHVhbCBidXNpbmVzcyBjYXJkcywgZGlnaXRhbCBidXNpbmVzcyBjYXJkcywgTkZDIGNhcmRzLCBwcm9mZXNzaW9uYWwgbmV0d29ya2luZywgcGVyc29uYWwgYnJhbmRpbmcsIEFmcmljYSwgS2VueWEsIFVnYW5kYSI+CiAgICA8bWV0YSBuYW1lPSJyb2JvdHMiIGNvbnRlbnQ9ImluZGV4LCBmb2xsb3ciPgogICAgPGxpbmsgcmVsPSJjYW5vbmljYWwiIGhyZWY9Imh0dHBzOi8vYnJhbmRoYW5kc2hha2UuY29tIj4KICAgIAogICAgPCEtLSBPcGVuIEdyYXBoIC0tPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOnRpdGxlIiBjb250ZW50PSJCcmFuZEhhbmRzaGFrZSB8IFByZW1pdW0gVmlydHVhbCBCdXNpbmVzcyBDYXJkcyI+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6ZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkVsZXZhdGUgeW91ciBwcm9mZXNzaW9uYWwgcHJlc2VuY2Ugd2l0aCBwcmVtaXVtIHZpcnR1YWwgYnVzaW5lc3MgY2FyZHMuIj4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzp0eXBlIiBjb250ZW50PSJ3ZWJzaXRlIj4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzp1cmwiIGNvbnRlbnQ9Imh0dHBzOi8vYnJhbmRoYW5kc2hha2UuY29tIj4KICAgIAogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1Db3Jtb3JhbnQrR2FyYW1vbmQ6aXRhbCx3Z2h0QDAsNDAwOzAsNTAwOzAsNjAwOzAsNzAwOzEsNDAwJmZhbWlseT1Nb250c2VycmF0OndnaHRAMzAwOzQwMDs1MDA7NjAwOzcwMCZkaXNwbGF5PXN3YXAiIHJlbD0ic3R5bGVzaGVldCI+CiAgICAKICAgIDxzdHlsZT4KICAgICAgICA6cm9vdCB7CiAgICAgICAgICAgIC0tbmF2eTogIzBEMUIyQTsKICAgICAgICAgICAgLS1uYXZ5LWxpZ2h0OiAjMUIyNjNCOwogICAgICAgICAgICAtLWluZGlnbzogIzFDMUY0QTsKICAgICAgICAgICAgLS1nb2xkOiAjRDRBRjM3OwogICAgICAgICAgICAtLWdvbGQtbGlnaHQ6ICNFOEM1NDc7CiAgICAgICAgICAgIC0tZ29sZC1kYXJrOiAjQjg5NzJFOwogICAgICAgICAgICAtLWl2b3J5OiAjRjhGNEVDOwogICAgICAgICAgICAtLWl2b3J5LWRhcms6ICNFOEU0REM7CiAgICAgICAgICAgIC0tY2hhcmNvYWw6ICMwYTBhMTI7CiAgICAgICAgICAgIC0tc3VjY2VzczogIzEwYjk4MTsKICAgICAgICAgICAgLS1jeWFuOiAjMDZiNmQ0OwogICAgICAgICAgICAtLXB1cnBsZTogIzhiNWNmNjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgKiB7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgfQogICAgICAgIGh0bWwgeyBzY3JvbGwtYmVoYXZpb3I6IHNtb290aDsgfQogICAgICAgIAogICAgICAgIGJvZHkgewogICAgICAgICAgICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnLCBzYW5zLXNlcmlmOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1uYXZ5KTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWl2b3J5KTsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNzsKICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBTRUNVUklUWTogSW1hZ2UgcHJvdGVjdGlvbiAqLwogICAgICAgIGltZyB7CiAgICAgICAgICAgIC13ZWJraXQtdXNlci1kcmFnOiBub25lOwogICAgICAgICAgICB1c2VyLWRyYWc6IG5vbmU7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIFNFQ1VSSVRZOiBQcmludCBwcm90ZWN0aW9uICovCiAgICAgICAgQG1lZGlhIHByaW50IHsKICAgICAgICAgICAgYm9keSB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiA9PT09PT09PT09IEVMRUdBTlQgQkFDS0dST1VORCA9PT09PT09PT09ICovCiAgICAgICAgLmJnLW1hc3RlciB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICAgICAgdG9wOiAwOyBsZWZ0OiAwOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsgei1pbmRleDogMDsKICAgICAgICAgICAgYmFja2dyb3VuZDogCiAgICAgICAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCAzMCUgMjAlLCByZ2JhKDIxMiwgMTc1LCA1NSwgMC4wOCkgMCUsIHRyYW5zcGFyZW50IDUwJSksCiAgICAgICAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCA3MCUgODAlLCByZ2JhKDEzOSwgOTIsIDI0NiwgMC4wNSkgMCUsIHRyYW5zcGFyZW50IDQwJSksCiAgICAgICAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCA1MCUgNTAlLCByZ2JhKDYsIDE4MiwgMjEyLCAwLjAzKSAwJSwgdHJhbnNwYXJlbnQgNjAlKSwKICAgICAgICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHZhcigtLWNoYXJjb2FsKSAwJSwgdmFyKC0tbmF2eSkgMzAlLCB2YXIoLS1uYXZ5LWxpZ2h0KSAxMDAlKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogU3VidGxlIGZsb2F0aW5nIHBhcnRpY2xlcyAqLwogICAgICAgIC5wYXJ0aWNsZSB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICAgICAgd2lkdGg6IDJweDsKICAgICAgICAgICAgaGVpZ2h0OiAycHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWdvbGQpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgICAgIG9wYWNpdHk6IDAuMzsKICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgICAgIHotaW5kZXg6IDE7CiAgICAgICAgfQogICAgICAgIC5wYXJ0aWNsZTpudGgtY2hpbGQoMSkgeyB0b3A6IDIwJTsgbGVmdDogMTAlOyBhbmltYXRpb246IGZsb2F0IDE1cyBpbmZpbml0ZSBlYXNlLWluLW91dDsgfQogICAgICAgIC5wYXJ0aWNsZTpudGgtY2hpbGQoMikgeyB0b3A6IDYwJTsgbGVmdDogODUlOyBhbmltYXRpb246IGZsb2F0IDE4cyBpbmZpbml0ZSBlYXNlLWluLW91dCAyczsgfQogICAgICAgIC5wYXJ0aWNsZTpudGgtY2hpbGQoMykgeyB0b3A6IDgwJTsgbGVmdDogMzAlOyBhbmltYXRpb246IGZsb2F0IDIwcyBpbmZpbml0ZSBlYXNlLWluLW91dCA0czsgfQogICAgICAgIC5wYXJ0aWNsZTpudGgtY2hpbGQoNCkgeyB0b3A6IDQwJTsgbGVmdDogNzAlOyBhbmltYXRpb246IGZsb2F0IDE2cyBpbmZpbml0ZSBlYXNlLWluLW91dCAxczsgfQogICAgICAgIC5wYXJ0aWNsZTpudGgtY2hpbGQoNSkgeyB0b3A6IDEwJTsgbGVmdDogNTAlOyBhbmltYXRpb246IGZsb2F0IDIycyBpbmZpbml0ZSBlYXNlLWluLW91dCAzczsgfQogICAgICAgIAogICAgICAgIEBrZXlmcmFtZXMgZmxvYXQgewogICAgICAgICAgICAwJSwgMTAwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApIHNjYWxlKDEpOyBvcGFjaXR5OiAwLjM7IH0KICAgICAgICAgICAgNTAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMzBweCwgLTMwcHgpIHNjYWxlKDEuNSk7IG9wYWNpdHk6IDAuNjsgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiA9PT09PT09PT09IE5BVklHQVRJT04gPT09PT09PT09PSAqLwogICAgICAgIC5uYXYgewogICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgICAgIHRvcDogMDsgbGVmdDogMDsgcmlnaHQ6IDA7CiAgICAgICAgICAgIHBhZGRpbmc6IDIwcHggNDBweDsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICB6LWluZGV4OiAxMDAwOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCByZ2JhKDEwLCAxMCwgMTgsIDAuOTUpIDAlLCB0cmFuc3BhcmVudCAxMDAlKTsKICAgICAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAubG9nbyB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnQ29ybW9yYW50IEdhcmFtb25kJywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS42cmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMnB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1nb2xkKSwgdmFyKC0taXZvcnkpKTsKICAgICAgICAgICAgLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6IHRleHQ7CiAgICAgICAgICAgIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jbGlwOiB0ZXh0OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAubmF2LWxpbmtzIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZ2FwOiAzMHB4OwogICAgICAgIH0KICAgICAgICAubmF2LWxpbmtzIGEgewogICAgICAgICAgICBjb2xvcjogdmFyKC0taXZvcnkpOwogICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDFweDsKICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgMC4zcyBlYXNlOwogICAgICAgIH0KICAgICAgICAubmF2LWxpbmtzIGE6aG92ZXIgeyBjb2xvcjogdmFyKC0tZ29sZCk7IH0KICAgICAgICAKICAgICAgICAubmF2LWN0YSB7CiAgICAgICAgICAgIHBhZGRpbmc6IDEycHggMjhweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tZ29sZCksIHZhcigtLWdvbGQtZGFyaykpOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tbmF2eSk7CiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtOwogICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMXB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzMHB4OwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgIH0KICAgICAgICAubmF2LWN0YTpob3ZlciB7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCAxMHB4IDMwcHggcmdiYSgyMTIsIDE3NSwgNTUsIDAuNCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkgewogICAgICAgICAgICAubmF2IHsgcGFkZGluZzogMTVweCAyMHB4OyB9CiAgICAgICAgICAgIC5uYXYtbGlua3MgeyBkaXNwbGF5OiBub25lOyB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qID09PT09PT09PT0gTUFJTiBDT05UQUlORVIgPT09PT09PT09PSAqLwogICAgICAgIC5jb250YWluZXIgewogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIHotaW5kZXg6IDEwOwogICAgICAgICAgICBtYXgtd2lkdGg6IDE0MDBweDsKICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgICAgICAgIHBhZGRpbmc6IDAgMjBweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogPT09PT09PT09PSBIRVJPIFNFQ1RJT04gPT09PT09PT09PSAqLwogICAgICAgIC5oZXJvIHsKICAgICAgICAgICAgbWluLWhlaWdodDogMTAwdmg7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIHBhZGRpbmc6IDEyMHB4IDIwcHggODBweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmhlcm8tYmFkZ2UgewogICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiAxMHB4OwogICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDI1cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjEpOwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDIxMiwgMTc1LCA1NSwgMC4zKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTBweDsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNDBweDsKICAgICAgICAgICAgYW5pbWF0aW9uOiBmYWRlSW5VcCAxcyBlYXNlOwogICAgICAgIH0KICAgICAgICAuaGVyby1iYWRnZSBzcGFuIHsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjhyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAycHg7CiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1nb2xkKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmhlcm8gaDEgewogICAgICAgICAgICBmb250LWZhbWlseTogJ0Nvcm1vcmFudCBHYXJhbW9uZCcsIHNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IGNsYW1wKDIuNXJlbSwgN3Z3LCA1cmVtKTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDsKICAgICAgICAgICAgYW5pbWF0aW9uOiBmYWRlSW5VcCAxcyBlYXNlIDAuMnMgYm90aDsKICAgICAgICB9CiAgICAgICAgLmhlcm8gaDEgLmhpZ2hsaWdodCB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWdvbGQpLCB2YXIoLS1nb2xkLWxpZ2h0KSk7CiAgICAgICAgICAgIC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOiB0ZXh0OwogICAgICAgICAgICAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQtY2xpcDogdGV4dDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmhlcm8tc3ViIHsKICAgICAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxcmVtLCAydncsIDEuM3JlbSk7CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI0OCwgMjQ0LCAyMzYsIDAuNyk7CiAgICAgICAgICAgIG1heC13aWR0aDogNjAwcHg7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDUwcHg7CiAgICAgICAgICAgIGFuaW1hdGlvbjogZmFkZUluVXAgMXMgZWFzZSAwLjRzIGJvdGg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5oZXJvLWN0YXMgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBnYXA6IDIwcHg7CiAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGFuaW1hdGlvbjogZmFkZUluVXAgMXMgZWFzZSAwLjZzIGJvdGg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5idG4tcHJpbWFyeSB7CiAgICAgICAgICAgIHBhZGRpbmc6IDE4cHggNDVweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tZ29sZCksIHZhcigtLWdvbGQtZGFyaykpOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tbmF2eSk7CiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMXB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MHB4OwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB9CiAgICAgICAgLmJ0bi1wcmltYXJ5OmhvdmVyIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zcHgpOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDE1cHggNDBweCByZ2JhKDIxMiwgMTc1LCA1NSwgMC40KTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmJ0bi1zZWNvbmRhcnkgewogICAgICAgICAgICBwYWRkaW5nOiAxOHB4IDQ1cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgICAgICBjb2xvcjogdmFyKC0taXZvcnkpOwogICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDFweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTBweDsKICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjMpOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgIH0KICAgICAgICAuYnRuLXNlY29uZGFyeTpob3ZlciB7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1nb2xkKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgQGtleWZyYW1lcyBmYWRlSW5VcCB7CiAgICAgICAgICAgIGZyb20geyBvcGFjaXR5OiAwOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMzBweCk7IH0KICAgICAgICAgICAgdG8geyBvcGFjaXR5OiAxOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogPT09PT09PT09PSBTQ1JPTEwgSU5ESUNBVE9SID09PT09PT09PT0gKi8KICAgICAgICAuc2Nyb2xsLWluZGljYXRvciB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgYm90dG9tOiA0MHB4OwogICAgICAgICAgICBsZWZ0OiA1MCU7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiAxMHB4OwogICAgICAgICAgICBhbmltYXRpb246IGZhZGVJblVwIDFzIGVhc2UgMXMgYm90aDsKICAgICAgICB9CiAgICAgICAgLnNjcm9sbC1pbmRpY2F0b3Igc3BhbiB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43cmVtOwogICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMnB4OwogICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICAgICAgICBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjUpOwogICAgICAgIH0KICAgICAgICAuc2Nyb2xsLWxpbmUgewogICAgICAgICAgICB3aWR0aDogMXB4OwogICAgICAgICAgICBoZWlnaHQ6IDYwcHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHZhcigtLWdvbGQpLCB0cmFuc3BhcmVudCk7CiAgICAgICAgICAgIGFuaW1hdGlvbjogc2Nyb2xsUHVsc2UgMnMgaW5maW5pdGU7CiAgICAgICAgfQogICAgICAgIEBrZXlmcmFtZXMgc2Nyb2xsUHVsc2UgewogICAgICAgICAgICAwJSwgMTAwJSB7IG9wYWNpdHk6IDAuMzsgdHJhbnNmb3JtOiBzY2FsZVkoMC41KTsgfQogICAgICAgICAgICA1MCUgeyBvcGFjaXR5OiAxOyB0cmFuc2Zvcm06IHNjYWxlWSgxKTsgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiA9PT09PT09PT09IFdIQVQgSVMgU0VDVElPTiA9PT09PT09PT09ICovCiAgICAgICAgLndoYXQtaXMgewogICAgICAgICAgICBwYWRkaW5nOiAxMjBweCAyMHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCB0cmFuc3BhcmVudCwgcmdiYSgyMTIsIDE3NSwgNTUsIDAuMDIpLCB0cmFuc3BhcmVudCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5zZWN0aW9uLWhlYWRlciB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNjBweDsKICAgICAgICB9CiAgICAgICAgLnNlY3Rpb24taGVhZGVyIGgyIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdDb3Jtb3JhbnQgR2FyYW1vbmQnLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiBjbGFtcCgycmVtLCA1dncsIDNyZW0pOwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgICAgIH0KICAgICAgICAuc2VjdGlvbi1oZWFkZXIgcCB7CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI0OCwgMjQ0LCAyMzYsIDAuNik7CiAgICAgICAgICAgIG1heC13aWR0aDogNjAwcHg7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuZmVhdHVyZXMtZ3JpZCB7CiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjgwcHgsIDFmcikpOwogICAgICAgICAgICBnYXA6IDMwcHg7CiAgICAgICAgICAgIG1heC13aWR0aDogMTIwMHB4OwogICAgICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmZlYXR1cmUtY2FyZCB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjEyLCAxNzUsIDU1LCAwLjA1KSwgcmdiYSgxMzksIDkyLCAyNDYsIDAuMDIpKTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyMTIsIDE3NSwgNTUsIDAuMSk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDQwcHggMzBweDsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogICAgICAgIH0KICAgICAgICAuZmVhdHVyZS1jYXJkOmhvdmVyIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMHB4KTsKICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDIxMiwgMTc1LCA1NSwgMC4zKTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCAyMHB4IDYwcHggcmdiYSgwLCAwLCAwLCAwLjMpOwogICAgICAgIH0KICAgICAgICAuZmVhdHVyZS1pY29uIHsKICAgICAgICAgICAgZm9udC1zaXplOiAzcmVtOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgICAgIH0KICAgICAgICAuZmVhdHVyZS1jYXJkIGgzIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdDb3Jtb3JhbnQgR2FyYW1vbmQnLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjRyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgICAgICAgfQogICAgICAgIC5mZWF0dXJlLWNhcmQgcCB7CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI0OCwgMjQ0LCAyMzYsIDAuNik7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogPT09PT09PT09PSBQUklDSU5HIFNFQ1RJT04gPT09PT09PT09PSAqLwogICAgICAgIC5wcmljaW5nLXNlY3Rpb24gewogICAgICAgICAgICBwYWRkaW5nOiAxMjBweCAyMHB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAucHJpY2luZy1oZWFkZXIgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDYwcHg7CiAgICAgICAgfQogICAgICAgIC5wcmljaW5nLWhlYWRlciBoMiB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnQ29ybW9yYW50IEdhcmFtb25kJywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMnJlbSwgNXZ3LCAzcmVtKTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgICAgICB9CiAgICAgICAgLnByaWNpbmctaGVhZGVyIHAgewogICAgICAgICAgICBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjYpOwogICAgICAgICAgICBtYXgtd2lkdGg6IDYwMHB4OwogICAgICAgICAgICBtYXJnaW46IDAgYXV0byAzMHB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBDdXJyZW5jeSBUb2dnbGUgKi8KICAgICAgICAuY3VycmVuY3ktdG9nZ2xlLXdyYXAgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiAxMHB4OwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0MHB4OwogICAgICAgIH0KICAgICAgICAuY3VycmVuY3ktYnRuIHsKICAgICAgICAgICAgcGFkZGluZzogMTJweCAyNXB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjIpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzMHB4OwogICAgICAgICAgICBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjYpOwogICAgICAgICAgICBmb250LXNpemU6IDAuODVyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgfQogICAgICAgIC5jdXJyZW5jeS1idG46aG92ZXIgewogICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWdvbGQpOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgfQogICAgICAgIC5jdXJyZW5jeS1idG4uYWN0aXZlIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1uYXZ5KTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogVGllciBMYWJlbHMgKi8KICAgICAgICAudGllci1sYWJlbCB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgbWFyZ2luOiA1MHB4IDAgMjVweDsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIH0KICAgICAgICAudGllci1sYWJlbCBzcGFuIHsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogM3B4OwogICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW5hdnkpOwogICAgICAgICAgICBwYWRkaW5nOiAwIDIwcHg7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgei1pbmRleDogMTsKICAgICAgICB9CiAgICAgICAgLnRpZXItbGFiZWw6OmJlZm9yZSB7CiAgICAgICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIHRvcDogNTAlOwogICAgICAgICAgICBsZWZ0OiAwOwogICAgICAgICAgICByaWdodDogMDsKICAgICAgICAgICAgaGVpZ2h0OiAxcHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHJnYmEoMjEyLCAxNzUsIDU1LCAwLjMpLCB0cmFuc3BhcmVudCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIFByaWNpbmcgR3JpZCAqLwogICAgICAgIC5wcmljaW5nLWdyaWQgewogICAgICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpOwogICAgICAgICAgICBnYXA6IDI1cHg7CiAgICAgICAgICAgIG1heC13aWR0aDogMTIwMHB4OwogICAgICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgICB9CiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDEwMDBweCkgewogICAgICAgICAgICAucHJpY2luZy1ncmlkIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTsgfQogICAgICAgIH0KICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNjUwcHgpIHsKICAgICAgICAgICAgLnByaWNpbmctZ3JpZCB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOyBtYXgtd2lkdGg6IDQwMHB4OyB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5wcmljaW5nLWNhcmQgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDI3LCAzOCwgNTksIDAuOCksIHJnYmEoMTMsIDI3LCA0MiwgMC45KSk7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjEyLCAxNzUsIDU1LCAwLjE1KTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMjRweDsKICAgICAgICAgICAgcGFkZGluZzogMzVweCAyNXB4OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB9CiAgICAgICAgLnByaWNpbmctY2FyZDo6YmVmb3JlIHsKICAgICAgICAgICAgY29udGVudDogJyc7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgdG9wOiAwOyBsZWZ0OiAwOyByaWdodDogMDsKICAgICAgICAgICAgaGVpZ2h0OiAzcHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHZhcigtLWdvbGQpLCB0cmFuc3BhcmVudCk7CiAgICAgICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBlYXNlOwogICAgICAgIH0KICAgICAgICAucHJpY2luZy1jYXJkOmhvdmVyIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC04cHgpOwogICAgICAgICAgICBib3JkZXItY29sb3I6IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjQpOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDI1cHggNjBweCByZ2JhKDAsIDAsIDAsIDAuNCk7CiAgICAgICAgfQogICAgICAgIC5wcmljaW5nLWNhcmQ6aG92ZXI6OmJlZm9yZSB7IG9wYWNpdHk6IDE7IH0KICAgICAgICAKICAgICAgICAucHJpY2luZy1jYXJkLmZlYXR1cmVkIHsKICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1nb2xkKTsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgyMTIsIDE3NSwgNTUsIDAuMSksIHJnYmEoMjcsIDM4LCA1OSwgMC45KSk7CiAgICAgICAgfQogICAgICAgIC5wcmljaW5nLWNhcmQuZmVhdHVyZWQ6OmJlZm9yZSB7IG9wYWNpdHk6IDE7IH0KICAgICAgICAKICAgICAgICAucHJpY2luZy1jYXJkLnNvdmVyZWlnbiB7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjEyLCAxNzUsIDU1LCAwLjE1KSwgcmdiYSgxMzksIDkyLCAyNDYsIDAuMSksIHJnYmEoMjcsIDM4LCA1OSwgMC45KSk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCA0MHB4IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjE1KTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnByaWNpbmctYmFkZ2UgewogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIHRvcDogLTFweDsKICAgICAgICAgICAgbGVmdDogNTAlOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWdvbGQpOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tbmF2eSk7CiAgICAgICAgICAgIHBhZGRpbmc6IDZweCAyMHB4OwogICAgICAgICAgICBmb250LXNpemU6IDAuN3JlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDFweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMCAwIDEycHggMTJweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnByaWNpbmctaWNvbiB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMi41cmVtOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgICAgIH0KICAgICAgICAucHJpY2luZy1uYW1lIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdDb3Jtb3JhbnQgR2FyYW1vbmQnLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjVyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDVweDsKICAgICAgICB9CiAgICAgICAgLnByaWNpbmctZm9yIHsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtOwogICAgICAgICAgICBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjUpOwogICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMXB4OwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAucHJpY2luZy1wcmljZSB7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDI1cHg7CiAgICAgICAgfQogICAgICAgIC5wcmljaW5nLWFtb3VudCB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnQ29ybW9yYW50IEdhcmFtb25kJywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMi41cmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgfQogICAgICAgIC5wcmljaW5nLXBlcmlvZCB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44cmVtOwogICAgICAgICAgICBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjUpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAucHJpY2luZy1mZWF0dXJlcyB7CiAgICAgICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDI1cHg7CiAgICAgICAgfQogICAgICAgIC5wcmljaW5nLWZlYXR1cmVzIGxpIHsKICAgICAgICAgICAgcGFkZGluZzogOHB4IDA7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtOwogICAgICAgICAgICBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjgpOwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBnYXA6IDEwcHg7CiAgICAgICAgfQogICAgICAgIC5wcmljaW5nLWZlYXR1cmVzIC5jaGVjayB7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zdWNjZXNzKTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5wcmljaW5nLWJ0biB7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBwYWRkaW5nOiAxNXB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1nb2xkKSwgdmFyKC0tZ29sZC1kYXJrKSk7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1uYXZ5KTsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzMHB4OwogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgICAgICBmb250LXNpemU6IDAuOXJlbTsKICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDFweDsKICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgIH0KICAgICAgICAucHJpY2luZy1idG46aG92ZXIgewogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMTBweCAzMHB4IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjQpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiA9PT09PT09PT09IEhPVyBJVCBXT1JLUyA9PT09PT09PT09ICovCiAgICAgICAgLmhvdy1pdC13b3JrcyB7CiAgICAgICAgICAgIHBhZGRpbmc6IDEyMHB4IDIwcHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHRyYW5zcGFyZW50LCByZ2JhKDYsIDE4MiwgMjEyLCAwLjAyKSwgdHJhbnNwYXJlbnQpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuc3RlcHMtZ3JpZCB7CiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjUwcHgsIDFmcikpOwogICAgICAgICAgICBnYXA6IDQwcHg7CiAgICAgICAgICAgIG1heC13aWR0aDogMTAwMHB4OwogICAgICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnN0ZXAtY2FyZCB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIH0KICAgICAgICAuc3RlcC1udW1iZXIgewogICAgICAgICAgICB3aWR0aDogNjBweDsKICAgICAgICAgICAgaGVpZ2h0OiA2MHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1nb2xkKSwgdmFyKC0tZ29sZC1kYXJrKSk7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1uYXZ5KTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdDb3Jtb3JhbnQgR2FyYW1vbmQnLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjVyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvIDI1cHg7CiAgICAgICAgfQogICAgICAgIC5zdGVwLWNhcmQgaDMgewogICAgICAgICAgICBmb250LWZhbWlseTogJ0Nvcm1vcmFudCBHYXJhbW9uZCcsIHNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IDEuM3JlbTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDsKICAgICAgICB9CiAgICAgICAgLnN0ZXAtY2FyZCBwIHsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC42KTsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiA9PT09PT09PT09IENUQSBTRUNUSU9OID09PT09PT09PT0gKi8KICAgICAgICAuY3RhLXNlY3Rpb24gewogICAgICAgICAgICBwYWRkaW5nOiAxMjBweCAyMHB4OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5jdGEtYm94IHsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgyMTIsIDE3NSwgNTUsIDAuMSksIHJnYmEoMTM5LCA5MiwgMjQ2LCAwLjA1KSk7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjEyLCAxNzUsIDU1LCAwLjIpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzMHB4OwogICAgICAgICAgICBwYWRkaW5nOiA4MHB4IDQwcHg7CiAgICAgICAgICAgIG1heC13aWR0aDogOTAwcHg7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgIH0KICAgICAgICAuY3RhLWJveCBoMiB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnQ29ybW9yYW50IEdhcmFtb25kJywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMnJlbSwgNXZ3LCAzcmVtKTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgICAgICB9CiAgICAgICAgLmN0YS1ib3ggcCB7CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI0OCwgMjQ0LCAyMzYsIDAuNyk7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQwcHg7CiAgICAgICAgICAgIG1heC13aWR0aDogNTAwcHg7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qID09PT09PT09PT0gRk9PVEVSID09PT09PT09PT0gKi8KICAgICAgICAuZm9vdGVyIHsKICAgICAgICAgICAgcGFkZGluZzogNjBweCAyMHB4OwogICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgyMTIsIDE3NSwgNTUsIDAuMSk7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICB9CiAgICAgICAgLmZvb3Rlci1sb2dvIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdDb3Jtb3JhbnQgR2FyYW1vbmQnLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjhyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWdvbGQpLCB2YXIoLS1pdm9yeSkpOwogICAgICAgICAgICAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogdGV4dDsKICAgICAgICAgICAgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IHRyYW5zcGFyZW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNsaXA6IHRleHQ7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICAgICAgfQogICAgICAgIC5mb290ZXItbGlua3MgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiAzMHB4OwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4OwogICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgfQogICAgICAgIC5mb290ZXItbGlua3MgYSB7CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI0OCwgMjQ0LCAyMzYsIDAuNik7CiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW07CiAgICAgICAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuM3MgZWFzZTsKICAgICAgICB9CiAgICAgICAgLmZvb3Rlci1saW5rcyBhOmhvdmVyIHsgY29sb3I6IHZhcigtLWdvbGQpOyB9CiAgICAgICAgLmZvb3Rlci1jb3B5IHsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC40KTsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjhyZW07CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qID09PT09PT09PT0gT1JERVIgTU9EQUwgPT09PT09PT09PSAqLwogICAgICAgIC5tb2RhbC1vdmVybGF5IHsKICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgICAgICB0b3A6IDA7IGxlZnQ6IDA7IHJpZ2h0OiAwOyBib3R0b206IDA7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC44KTsKICAgICAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpOwogICAgICAgICAgICB6LWluZGV4OiAxMDAwMDsKICAgICAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIHBhZGRpbmc6IDIwcHg7CiAgICAgICAgfQogICAgICAgIC5tb2RhbC1vdmVybGF5LmFjdGl2ZSB7IGRpc3BsYXk6IGZsZXg7IH0KICAgICAgICAKICAgICAgICAubW9kYWwtY29udGVudCB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLW5hdnktbGlnaHQpLCB2YXIoLS1uYXZ5KSk7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjEyLCAxNzUsIDU1LCAwLjMpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyNHB4OwogICAgICAgICAgICBtYXgtd2lkdGg6IDUwMHB4OwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgbWF4LWhlaWdodDogOTB2aDsKICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICAgICAgcGFkZGluZzogNDBweDsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAubW9kYWwtY2xvc2UgewogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIHRvcDogMjBweDsKICAgICAgICAgICAgcmlnaHQ6IDIwcHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IG5vbmU7CiAgICAgICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWl2b3J5KTsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjVyZW07CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgb3BhY2l0eTogMC42OwogICAgICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZTsKICAgICAgICB9CiAgICAgICAgLm1vZGFsLWNsb3NlOmhvdmVyIHsgb3BhY2l0eTogMTsgfQogICAgICAgIAogICAgICAgIC5tb2RhbC1oZWFkZXIgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDMwcHg7CiAgICAgICAgfQogICAgICAgIC5tb2RhbC1oZWFkZXIgaDMgewogICAgICAgICAgICBmb250LWZhbWlseTogJ0Nvcm1vcmFudCBHYXJhbW9uZCcsIHNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IDEuOHJlbTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgICAgICB9CiAgICAgICAgLm1vZGFsLWhlYWRlciBwIHsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC42KTsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW07CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5mb3JtLWdyb3VwIHsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgICAgICB9CiAgICAgICAgLmZvcm0tZ3JvdXAgbGFiZWwgewogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI0OCwgMjQ0LCAyMzYsIDAuOCk7CiAgICAgICAgfQogICAgICAgIC5mb3JtLWdyb3VwIGlucHV0LAogICAgICAgIC5mb3JtLWdyb3VwIHNlbGVjdCwKICAgICAgICAuZm9ybS1ncm91cCB0ZXh0YXJlYSB7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBwYWRkaW5nOiAxNHB4IDE4cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC4wNSk7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC4xKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWl2b3J5KTsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0Jywgc2Fucy1zZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4zcyBlYXNlOwogICAgICAgIH0KICAgICAgICAuZm9ybS1ncm91cCBpbnB1dDpmb2N1cywKICAgICAgICAuZm9ybS1ncm91cCBzZWxlY3Q6Zm9jdXMsCiAgICAgICAgLmZvcm0tZ3JvdXAgdGV4dGFyZWE6Zm9jdXMgewogICAgICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWdvbGQpOwogICAgICAgIH0KICAgICAgICAuZm9ybS1ncm91cCBzZWxlY3Qgb3B0aW9uIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbmF2eSk7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1pdm9yeSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5mb3JtLXN1Ym1pdCB7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBwYWRkaW5nOiAxNnB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1nb2xkKSwgdmFyKC0tZ29sZC1kYXJrKSk7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1uYXZ5KTsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzMHB4OwogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgICAgICBmb250LXNpemU6IDFyZW07CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICB9CiAgICAgICAgLmZvcm0tc3VibWl0OmhvdmVyIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDEwcHggMzBweCByZ2JhKDIxMiwgMTc1LCA1NSwgMC40KTsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgogICAgPCEtLSBCYWNrZ3JvdW5kIC0tPgogICAgPGRpdiBjbGFzcz0iYmctbWFzdGVyIj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9InBhcnRpY2xlIj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9InBhcnRpY2xlIj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9InBhcnRpY2xlIj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9InBhcnRpY2xlIj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9InBhcnRpY2xlIj48L2Rpdj4KICAgIAogICAgPCEtLSBOYXZpZ2F0aW9uIC0tPgogICAgPG5hdiBjbGFzcz0ibmF2Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJsb2dvIj5CUkFOREhBTkRTSEFLRTwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im5hdi1saW5rcyI+CiAgICAgICAgICAgIDxhIGhyZWY9IiNmZWF0dXJlcyI+RmVhdHVyZXM8L2E+CiAgICAgICAgICAgIDxhIGhyZWY9IiNwcmljaW5nIj5QcmljaW5nPC9hPgogICAgICAgICAgICA8YSBocmVmPSIjaG93LWl0LXdvcmtzIj5Ib3cgSXQgV29ya3M8L2E+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGEgaHJlZj0iI3ByaWNpbmciIGNsYXNzPSJuYXYtY3RhIj5HZXQgU3RhcnRlZDwvYT4KICAgIDwvbmF2PgogICAgCiAgICA8IS0tIEhlcm8gU2VjdGlvbiAtLT4KICAgIDxzZWN0aW9uIGNsYXNzPSJoZXJvIj4KICAgICAgICA8ZGl2IGNsYXNzPSJoZXJvLWJhZGdlIj4KICAgICAgICAgICAgPHNwYW4+4pyoIFByZW1pdW0gRGlnaXRhbCBCdXNpbmVzcyBDYXJkczwvc3Bhbj4KICAgICAgICA8L2Rpdj4KICAgICAgICAKICAgICAgICA8aDE+CiAgICAgICAgICAgIFlvdXIgRGlnaXRhbCBQcmVzZW5jZSw8YnI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJoaWdobGlnaHQiPlBlcmZlY3RlZC48L3NwYW4+CiAgICAgICAgPC9oMT4KICAgICAgICAKICAgICAgICA8cCBjbGFzcz0iaGVyby1zdWIiPgogICAgICAgICAgICBFbGV2YXRlIHlvdXIgcHJvZmVzc2lvbmFsIGlkZW50aXR5IHdpdGggc3R1bm5pbmcgdmlydHVhbCBidXNpbmVzcyBjYXJkcy4gCiAgICAgICAgICAgIEZyb20gcGVyc29uYWwgYnJhbmRpbmcgdG8gZW50ZXJwcmlzZSBzb2x1dGlvbnMg4oCUIHN0YW5kIG91dCwgZ2V0IG5vdGljZWQsIGdldCByZW1lbWJlcmVkLgogICAgICAgIDwvcD4KICAgICAgICAKICAgICAgICA8ZGl2IGNsYXNzPSJoZXJvLWN0YXMiPgogICAgICAgICAgICA8YSBocmVmPSIjcHJpY2luZyIgY2xhc3M9ImJ0bi1wcmltYXJ5Ij5WaWV3IFByaWNpbmc8L2E+CiAgICAgICAgICAgIDxhIGhyZWY9IiNmZWF0dXJlcyIgY2xhc3M9ImJ0bi1zZWNvbmRhcnkiPkxlYXJuIE1vcmU8L2E+CiAgICAgICAgPC9kaXY+CiAgICAgICAgCiAgICAgICAgPGRpdiBjbGFzcz0ic2Nyb2xsLWluZGljYXRvciI+CiAgICAgICAgICAgIDxzcGFuPlNjcm9sbDwvc3Bhbj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2Nyb2xsLWxpbmUiPjwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgogICAgCiAgICA8IS0tIFdoYXQgSXMgU2VjdGlvbiAtLT4KICAgIDxzZWN0aW9uIGNsYXNzPSJ3aGF0LWlzIiBpZD0iZmVhdHVyZXMiPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24taGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5XaGF0IElzIEEgVmlydHVhbCBCdXNpbmVzcyBDYXJkPzwvaDI+CiAgICAgICAgICAgICAgICA8cD5BIG1vZGVybiwgZGlnaXRhbC1maXJzdCBhcHByb2FjaCB0byBwcm9mZXNzaW9uYWwgbmV0d29ya2luZyB0aGF0IGxlYXZlcyBsYXN0aW5nIGltcHJlc3Npb25zLjwvcD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmZWF0dXJlcy1ncmlkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZlYXR1cmUtY2FyZCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZS1pY29uIj7wn46oPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGgzPlN0dW5uaW5nIERlc2lnbjwvaDM+CiAgICAgICAgICAgICAgICAgICAgPHA+Q3VzdG9tLWNyYWZ0ZWQgY2FyZHMgdGhhdCByZWZsZWN0IHlvdXIgdW5pcXVlIGJyYW5kIGFuZCBwcm9mZXNzaW9uYWwgaWRlbnRpdHkuPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZlYXR1cmUtY2FyZCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZS1pY29uIj7wn5OxPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGgzPkFsd2F5cyBBY2Nlc3NpYmxlPC9oMz4KICAgICAgICAgICAgICAgICAgICA8cD5TaGFyZSB2aWEgUVIgY29kZSwgTkZDLCBsaW5rLCBvciBzb2NpYWwgbWVkaWEg4oCUIGFueXRpbWUsIGFueXdoZXJlLjwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmZWF0dXJlLWNhcmQiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZlYXR1cmUtaWNvbiI+8J+TijwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMz5TbWFydCBBbmFseXRpY3M8L2gzPgogICAgICAgICAgICAgICAgICAgIDxwPlRyYWNrIHZpZXdzLCBjbGlja3MsIGFuZCBlbmdhZ2VtZW50IHRvIHVuZGVyc3RhbmQgeW91ciBuZXR3b3JraW5nIGltcGFjdC48L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZS1jYXJkIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmZWF0dXJlLWljb24iPvCflIQ8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8aDM+SW5zdGFudCBVcGRhdGVzPC9oMz4KICAgICAgICAgICAgICAgICAgICA8cD5DaGFuZ2UgeW91ciBpbmZvIGFueXRpbWUg4oCUIG5vIHJlcHJpbnRpbmcsIG5vIHdhc3RlLCBhbHdheXMgY3VycmVudC48L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZS1jYXJkIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmZWF0dXJlLWljb24iPvCfjI08L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8aDM+R2xvYmFsIFJlYWNoPC9oMz4KICAgICAgICAgICAgICAgICAgICA8cD5Db25uZWN0IHdpdGggcHJvZmVzc2lvbmFscyB3b3JsZHdpZGUgd2l0aG91dCBnZW9ncmFwaGljIGxpbWl0YXRpb25zLjwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmZWF0dXJlLWNhcmQiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZlYXR1cmUtaWNvbiI+8J+UkDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMz5TZWN1cmUgJiBQcm9mZXNzaW9uYWw8L2gzPgogICAgICAgICAgICAgICAgICAgIDxwPkVudGVycHJpc2UtZ3JhZGUgc2VjdXJpdHkgd2l0aCBjdXN0b20gZG9tYWlucyBhbmQgU1NMIHByb3RlY3Rpb24uPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgogICAgCiAgICA8IS0tIFByaWNpbmcgU2VjdGlvbiAtLT4KICAgIDxzZWN0aW9uIGNsYXNzPSJwcmljaW5nLXNlY3Rpb24iIGlkPSJwcmljaW5nIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljaW5nLWhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+Q2hvb3NlIFlvdXIgUGxhbjwvaDI+CiAgICAgICAgICAgICAgICA8cD5Gcm9tIGluZGl2aWR1YWxzIHRvIGVudGVycHJpc2VzIOKAlCBmaW5kIHRoZSBwZXJmZWN0IHNvbHV0aW9uIGZvciB5b3VyIHByb2Zlc3Npb25hbCBuZWVkcy48L3A+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImN1cnJlbmN5LXRvZ2dsZS13cmFwIj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjdXJyZW5jeS1idG4gYWN0aXZlIiBpZD0idXNkQnRuIiBvbmNsaWNrPSJzZXRDdXJyZW5jeSgndXNkJykiPgogICAgICAgICAgICAgICAgICAgICAgICDwn4e68J+HuCBVU0QKICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjdXJyZW5jeS1idG4iIGlkPSJrZXNCdG4iIG9uY2xpY2s9InNldEN1cnJlbmN5KCdrZXMnKSI+CiAgICAgICAgICAgICAgICAgICAgICAgIPCfh7Dwn4eqIEtFUwogICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImN1cnJlbmN5LWJ0biIgaWQ9InVneEJ0biIgb25jbGljaz0ic2V0Q3VycmVuY3koJ3VneCcpIj4KICAgICAgICAgICAgICAgICAgICAgICAg8J+HuvCfh6wgVUdYCiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIAogICAgICAgICAgICA8IS0tIEVOVFJZIExFVkVMIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aWVyLWxhYmVsIj48c3Bhbj5FbnRyeSBMZXZlbDwvc3Bhbj48L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZy1ncmlkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNpbmctY2FyZCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZy1pY29uIj7wn46vPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZy1uYW1lIj5TdGFydGVyPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZy1mb3IiPlBlcmZlY3QgZm9yIFN0dWRlbnRzPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZy1wcmljZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwcmljaW5nLWFtb3VudCIgZGF0YS11c2Q9IjEwIiBkYXRhLWtlcz0iMSwzMDAiIGRhdGEtdWd4PSIzNywwMDAiPiQxMDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InByaWNpbmctcGVyaW9kIj5vbmUtdGltZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9InByaWNpbmctZmVhdHVyZXMiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9ImNoZWNrIj7inJM8L3NwYW4+IFByb2Zlc3Npb25hbCBEaWdpdGFsIENhcmQ8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9ImNoZWNrIj7inJM8L3NwYW4+IENvbnRhY3QgSW5mbyAmIFBob3RvPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPSJjaGVjayI+4pyTPC9zcGFuPiAzIFNvY2lhbCBNZWRpYSBMaW5rczwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iY2hlY2siPuKckzwvc3Bhbj4gUVIgQ29kZTwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJwcmljaW5nLWJ0biIgb25jbGljaz0ib3Blbk9yZGVyKCdTdGFydGVyJywgMTApIj5HZXQgU3RhcnRlZDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNpbmctY2FyZCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZy1pY29uIj7irZA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljaW5nLW5hbWUiPlByb2Zlc3Npb25hbDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNpbmctZm9yIj5Gb3IgR3Jvd2luZyBQcm9mZXNzaW9uYWxzPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZy1wcmljZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwcmljaW5nLWFtb3VudCIgZGF0YS11c2Q9IjIwIiBkYXRhLWtlcz0iMiw2MDAiIGRhdGEtdWd4PSI3NCwwMDAiPiQyMDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InByaWNpbmctcGVyaW9kIj5vbmUtdGltZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9InByaWNpbmctZmVhdHVyZXMiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9ImNoZWNrIj7inJM8L3NwYW4+IEV2ZXJ5dGhpbmcgaW4gU3RhcnRlcjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iY2hlY2siPuKckzwvc3Bhbj4gQ3VzdG9tIENvbG9yczwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iY2hlY2siPuKckzwvc3Bhbj4gNiBTb2NpYWwgTGlua3M8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9ImNoZWNrIj7inJM8L3NwYW4+IEJvb2tpbmcgQ2FsZW5kYXI8L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0icHJpY2luZy1idG4iIG9uY2xpY2s9Im9wZW5PcmRlcignUHJvZmVzc2lvbmFsJywgMjApIj5HZXQgUHJvZmVzc2lvbmFsPC9idXR0b24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZy1jYXJkIGZlYXR1cmVkIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljaW5nLWJhZGdlIj7irZAgUE9QVUxBUjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNpbmctaWNvbiI+8J+RkTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNpbmctbmFtZSI+RXhlY3V0aXZlPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZy1mb3IiPkZvciBMZWFkZXJzPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZy1wcmljZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwcmljaW5nLWFtb3VudCIgZGF0YS11c2Q9IjMwIiBkYXRhLWtlcz0iMyw5MDAiIGRhdGEtdWd4PSIxMTEsMDAwIj4kMzA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwcmljaW5nLXBlcmlvZCI+b25lLXRpbWU8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJwcmljaW5nLWZlYXR1cmVzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPSJjaGVjayI+4pyTPC9zcGFuPiBFdmVyeXRoaW5nIGluIFByb2Zlc3Npb25hbDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iY2hlY2siPuKckzwvc3Bhbj4gVmlkZW8gRW1iZWQ8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9ImNoZWNrIj7inJM8L3NwYW4+IExlYWQgQ2FwdHVyZSBGb3JtPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPSJjaGVjayI+4pyTPC9zcGFuPiBBbmFseXRpY3MgRGFzaGJvYXJkPC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InByaWNpbmctYnRuIiBvbmNsaWNrPSJvcGVuT3JkZXIoJ0V4ZWN1dGl2ZScsIDMwKSI+R28gRXhlY3V0aXZlPC9idXR0b24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIAogICAgICAgICAgICA8IS0tIEdST1dUSCBMRVZFTCAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGllci1sYWJlbCI+PHNwYW4+R3Jvd3RoIExldmVsPC9zcGFuPjwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljaW5nLWdyaWQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZy1jYXJkIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljaW5nLWljb24iPvCfko48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljaW5nLW5hbWUiPkVsaXRlPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZy1mb3IiPkZvciBFeGVjdXRpdmVzPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZy1wcmljZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwcmljaW5nLWFtb3VudCIgZGF0YS11c2Q9IjUwIiBkYXRhLWtlcz0iNiw1MDAiIGRhdGEtdWd4PSIxODUsMDAwIj4kNTA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwcmljaW5nLXBlcmlvZCI+b25lLXRpbWU8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJwcmljaW5nLWZlYXR1cmVzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPSJjaGVjayI+4pyTPC9zcGFuPiBFdmVyeXRoaW5nIGluIEV4ZWN1dGl2ZTwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iY2hlY2siPuKckzwvc3Bhbj4gQ3VzdG9tIERvbWFpbjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iY2hlY2siPuKckzwvc3Bhbj4gMSBZZWFyIEhvc3Rpbmc8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9ImNoZWNrIj7inJM8L3NwYW4+IFdoaXRlIEdsb3ZlIFNldHVwPC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InByaWNpbmctYnRuIiBvbmNsaWNrPSJvcGVuT3JkZXIoJ0VsaXRlJywgNTApIj5HbyBFbGl0ZTwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNpbmctY2FyZCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZy1pY29uIj7wn4+GPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZy1uYW1lIj5QcmVtaXVtPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZy1mb3IiPkZvciBIaWdoIEFjaGlldmVyczwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNpbmctcHJpY2UiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHJpY2luZy1hbW91bnQiIGRhdGEtdXNkPSI3NSIgZGF0YS1rZXM9IjksNzUwIiBkYXRhLXVneD0iMjc3LDUwMCI+JDc1PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHJpY2luZy1wZXJpb2QiPm9uZS10aW1lPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0icHJpY2luZy1mZWF0dXJlcyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iY2hlY2siPuKckzwvc3Bhbj4gRXZlcnl0aGluZyBpbiBFbGl0ZTwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iY2hlY2siPuKckzwvc3Bhbj4gTkZDIENhcmQgQWRkLW9uPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPSJjaGVjayI+4pyTPC9zcGFuPiAyIFllYXJzIEhvc3Rpbmc8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9ImNoZWNrIj7inJM8L3NwYW4+IEJyYW5kIENvbnN1bHRhdGlvbjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJwcmljaW5nLWJ0biIgb25jbGljaz0ib3Blbk9yZGVyKCdQcmVtaXVtJywgNzUpIj5HbyBQcmVtaXVtPC9idXR0b24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZy1jYXJkIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljaW5nLWljb24iPvCfj6I8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljaW5nLW5hbWUiPkJ1c2luZXNzPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZy1mb3IiPkZvciBTbWFsbCBUZWFtczwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNpbmctcHJpY2UiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHJpY2luZy1hbW91bnQiIGRhdGEtdXNkPSIxMDAiIGRhdGEta2VzPSIxMywwMDAiIGRhdGEtdWd4PSIzNzAsMDAwIj4kMTAwPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHJpY2luZy1wZXJpb2QiPm9uZS10aW1lPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0icHJpY2luZy1mZWF0dXJlcyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iY2hlY2siPuKckzwvc3Bhbj4gVGVhbSBvZiAzIENhcmRzPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPSJjaGVjayI+4pyTPC9zcGFuPiBMZWFkIENhcHR1cmU8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9ImNoZWNrIj7inJM8L3NwYW4+IENSTSBJbnRlZ3JhdGlvbjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iY2hlY2siPuKckzwvc3Bhbj4gVGVhbSBEYXNoYm9hcmQ8L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0icHJpY2luZy1idG4iIG9uY2xpY2s9Im9wZW5PcmRlcignQnVzaW5lc3MnLCAxMDApIj5HbyBCdXNpbmVzczwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAKICAgICAgICAgICAgPCEtLSBFTlRFUlBSSVNFIExFVkVMIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aWVyLWxhYmVsIj48c3Bhbj5FbnRlcnByaXNlIExldmVsPC9zcGFuPjwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljaW5nLWdyaWQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZy1jYXJkIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljaW5nLWljb24iPvCfj5vvuI88L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljaW5nLW5hbWUiPkNvcnBvcmF0ZTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNpbmctZm9yIj5Gb3IgR3Jvd2luZyBUZWFtczwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNpbmctcHJpY2UiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHJpY2luZy1hbW91bnQiIGRhdGEtdXNkPSIxNTAiIGRhdGEta2VzPSIxOSw1MDAiIGRhdGEtdWd4PSI1NTUsMDAwIj4kMTUwPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHJpY2luZy1wZXJpb2QiPm9uZS10aW1lPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0icHJpY2luZy1mZWF0dXJlcyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iY2hlY2siPuKckzwvc3Bhbj4gVGVhbSBvZiA1IENhcmRzPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPSJjaGVjayI+4pyTPC9zcGFuPiBBZG1pbiBEYXNoYm9hcmQ8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9ImNoZWNrIj7inJM8L3NwYW4+IEFuYWx5dGljcyBTdWl0ZTwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iY2hlY2siPuKckzwvc3Bhbj4gUHJpb3JpdHkgU3VwcG9ydDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJwcmljaW5nLWJ0biIgb25jbGljaz0ib3Blbk9yZGVyKCdDb3Jwb3JhdGUnLCAxNTApIj5HbyBDb3Jwb3JhdGU8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljaW5nLWNhcmQiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNpbmctaWNvbiI+8J+agDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNpbmctbmFtZSI+RW50ZXJwcmlzZTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNpbmctZm9yIj5Gb3IgT3JnYW5pemF0aW9uczwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNpbmctcHJpY2UiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHJpY2luZy1hbW91bnQiIGRhdGEtdXNkPSIyMDAiIGRhdGEta2VzPSIyNiwwMDAiIGRhdGEtdWd4PSI3NDAsMDAwIj4kMjAwPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHJpY2luZy1wZXJpb2QiPm9uZS10aW1lPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0icHJpY2luZy1mZWF0dXJlcyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iY2hlY2siPuKckzwvc3Bhbj4gVGVhbSBvZiAxMCBDYXJkczwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iY2hlY2siPuKckzwvc3Bhbj4gQVBJIEFjY2VzczwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iY2hlY2siPuKckzwvc3Bhbj4gV2hpdGUgTGFiZWwgT3B0aW9uPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPSJjaGVjayI+4pyTPC9zcGFuPiBEZWRpY2F0ZWQgTWFuYWdlcjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJwcmljaW5nLWJ0biIgb25jbGljaz0ib3Blbk9yZGVyKCdFbnRlcnByaXNlJywgMjAwKSI+R28gRW50ZXJwcmlzZTwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNpbmctY2FyZCBzb3ZlcmVpZ24iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNpbmctYmFkZ2UiPvCfkZEgVUxUSU1BVEU8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljaW5nLWljb24iPvCfjI08L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljaW5nLW5hbWUiPlNvdmVyZWlnbjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNpbmctZm9yIj5Gb3IgRW1waXJlIEJ1aWxkZXJzPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZy1wcmljZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwcmljaW5nLWFtb3VudCIgZGF0YS11c2Q9IjI1MCIgZGF0YS1rZXM9IjMyLDUwMCIgZGF0YS11Z3g9IjkyNSwwMDAiPiQyNTA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwcmljaW5nLXBlcmlvZCI+b25lLXRpbWU8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJwcmljaW5nLWZlYXR1cmVzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPSJjaGVjayI+4pyTPC9zcGFuPiBVbmxpbWl0ZWQgVGVhbTwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iY2hlY2siPuKckzwvc3Bhbj4gRnVsbCBXaGl0ZSBMYWJlbDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iY2hlY2siPuKckzwvc3Bhbj4gVklQIENvbmNpZXJnZTwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iY2hlY2siPuKckzwvc3Bhbj4gTGlmZXRpbWUgVXBkYXRlczwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJwcmljaW5nLWJ0biIgb25jbGljaz0ib3Blbk9yZGVyKCdTb3ZlcmVpZ24nLCAyNTApIj5HbyBTb3ZlcmVpZ248L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KICAgIAogICAgPCEtLSBIb3cgSXQgV29ya3MgLS0+CiAgICA8c2VjdGlvbiBjbGFzcz0iaG93LWl0LXdvcmtzIiBpZD0iaG93LWl0LXdvcmtzIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+SG93IEl0IFdvcmtzPC9oMj4KICAgICAgICAgICAgICAgIDxwPkdldCB5b3VyIHByZW1pdW0gdmlydHVhbCBidXNpbmVzcyBjYXJkIGluIHRocmVlIHNpbXBsZSBzdGVwcy48L3A+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAKICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RlcHMtZ3JpZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGVwLWNhcmQiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0ZXAtbnVtYmVyIj4xPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGgzPkNob29zZSBZb3VyIFBsYW48L2gzPgogICAgICAgICAgICAgICAgICAgIDxwPlNlbGVjdCB0aGUgcGFja2FnZSB0aGF0IGZpdHMgeW91ciBuZWVkcyDigJQgZnJvbSBwZXJzb25hbCBjYXJkcyB0byBlbnRlcnByaXNlIHNvbHV0aW9ucy48L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RlcC1jYXJkIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGVwLW51bWJlciI+MjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMz5TdWJtaXQgWW91ciBEZXRhaWxzPC9oMz4KICAgICAgICAgICAgICAgICAgICA8cD5GaWxsIG91dCB0aGUgcXVpY2sgZm9ybSB3aXRoIHlvdXIgaW5mbywgcHJlZmVyZW5jZXMsIGFuZCBicmFuZGluZyByZXF1aXJlbWVudHMuPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0ZXAtY2FyZCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RlcC1udW1iZXIiPjM8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8aDM+R2V0IFlvdXIgQ2FyZDwvaDM+CiAgICAgICAgICAgICAgICAgICAgPHA+UmVjZWl2ZSB5b3VyIHN0dW5uaW5nIGRpZ2l0YWwgY2FyZCB3aXRoaW4gNDggaG91cnMsIHJlYWR5IHRvIHNoYXJlIHdpdGggdGhlIHdvcmxkLjwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KICAgIAogICAgPCEtLSBDVEEgU2VjdGlvbiAtLT4KICAgIDxzZWN0aW9uIGNsYXNzPSJjdGEtc2VjdGlvbiI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY3RhLWJveCI+CiAgICAgICAgICAgICAgICA8aDI+UmVhZHkgdG8gU3RhbmQgT3V0PzwvaDI+CiAgICAgICAgICAgICAgICA8cD5Kb2luIHRob3VzYW5kcyBvZiBwcm9mZXNzaW9uYWxzIHdobyd2ZSBlbGV2YXRlZCB0aGVpciBuZXR3b3JraW5nIHdpdGggQnJhbmRIYW5kc2hha2UuPC9wPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3ByaWNpbmciIGNsYXNzPSJidG4tcHJpbWFyeSI+R2V0IFlvdXIgQ2FyZCBUb2RheTwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L3NlY3Rpb24+CiAgICAKICAgIDwhLS0gRm9vdGVyIC0tPgogICAgPGZvb3RlciBjbGFzcz0iZm9vdGVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXItbG9nbyI+QlJBTkRIQU5EU0hBS0U8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXItbGlua3MiPgogICAgICAgICAgICA8YSBocmVmPSIjZmVhdHVyZXMiPkZlYXR1cmVzPC9hPgogICAgICAgICAgICA8YSBocmVmPSIjcHJpY2luZyI+UHJpY2luZzwvYT4KICAgICAgICAgICAgPGEgaHJlZj0iI2hvdy1pdC13b3JrcyI+SG93IEl0IFdvcmtzPC9hPgogICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3ZpcnR1YWwuaGFuZHNoYWtlLmFmcmljYSI+Q29ycG9yYXRlIFNvbHV0aW9uczwvYT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8cCBjbGFzcz0iZm9vdGVyLWNvcHkiPsKpIDIwMjYgTXVrYXNhIFZlbnR1cmUgUGFydG5lcnMgTExDLiBBbGwgUmlnaHRzIFJlc2VydmVkLjwvcD4KICAgIDwvZm9vdGVyPgogICAgCiAgICA8IS0tIE9yZGVyIE1vZGFsIC0tPgogICAgPGRpdiBjbGFzcz0ibW9kYWwtb3ZlcmxheSIgaWQ9Im9yZGVyTW9kYWwiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJtb2RhbC1jbG9zZSIgb25jbGljaz0iY2xvc2VNb2RhbCgpIj4mdGltZXM7PC9idXR0b24+CiAgICAgICAgICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgogICAgICAgICAgICAgICAgPGgzPk9yZGVyIFlvdXIgQ2FyZDwvaDM+CiAgICAgICAgICAgICAgICA8cD5GaWxsIG91dCB0aGUgZm9ybSBiZWxvdyBhbmQgd2UnbGwgZ2V0IHN0YXJ0ZWQgb24geW91ciBjYXJkLjwvcD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIAogICAgICAgICAgICA8Zm9ybSBhY3Rpb249Imh0dHBzOi8vZm9ybXN1Ym1pdC5jby9zaG9wbG9jYWxidXNpbmVzc2FnZW5jeUBnbWFpbC5jb20iIG1ldGhvZD0iUE9TVCI+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfc3ViamVjdCIgdmFsdWU9IvCflKUgTkVXIE9SREVSIGZyb20gQnJhbmRIYW5kc2hha2UuY29tIj4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Il9uZXh0IiB2YWx1ZT0iaHR0cHM6Ly9icmFuZGhhbmRzaGFrZS5jb20vZGVzaWduLW5leHRzdGVwcyI+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfY2FwdGNoYSIgdmFsdWU9ImZhbHNlIj4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Il90ZW1wbGF0ZSIgdmFsdWU9ImJveCI+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTb3VyY2UiIHZhbHVlPSJicmFuZGhhbmRzaGFrZS5jb20gKEZsYWdzaGlwKSI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbD5GdWxsIE5hbWUgKjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik5hbWUiIHJlcXVpcmVkIHBsYWNlaG9sZGVyPSJZb3VyIGZ1bGwgbmFtZSI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPkVtYWlsICo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJlbWFpbCIgbmFtZT0iRW1haWwiIHJlcXVpcmVkIHBsYWNlaG9sZGVyPSJ5b3VyQGVtYWlsLmNvbSI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlBob25lIChXaGF0c0FwcCkgKjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRlbCIgbmFtZT0iUGhvbmUiIHJlcXVpcmVkIHBsYWNlaG9sZGVyPSIrMSAyMzQgNTY3IDg5MDAiPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbD5QYWNrYWdlIFNlbGVjdGVkICo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgbmFtZT0iUGFja2FnZSIgaWQ9InBhY2thZ2VTZWxlY3QiIHJlcXVpcmVkPgogICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIiPkNob29zZSB5b3VyIHBhY2thZ2U8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU3RhcnRlciAtICQxMCI+U3RhcnRlciAtICQxMDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQcm9mZXNzaW9uYWwgLSAkMjAiPlByb2Zlc3Npb25hbCAtICQyMDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJFeGVjdXRpdmUgLSAkMzAiPkV4ZWN1dGl2ZSAtICQzMDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJFbGl0ZSAtICQ1MCI+RWxpdGUgLSAkNTA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUHJlbWl1bSAtICQ3NSI+UHJlbWl1bSAtICQ3NTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCdXNpbmVzcyAtICQxMDAiPkJ1c2luZXNzIC0gJDEwMDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDb3Jwb3JhdGUgLSAkMTUwIj5Db3Jwb3JhdGUgLSAkMTUwPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkVudGVycHJpc2UgLSAkMjAwIj5FbnRlcnByaXNlIC0gJDIwMDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTb3ZlcmVpZ24gLSAkMjUwIj5Tb3ZlcmVpZ24gLSAkMjUwPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPllvdXIgUHJvZmVzc2lvbi9UaXRsZTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IlByb2Zlc3Npb24iIHBsYWNlaG9sZGVyPSJlLmcuLCBNYXJrZXRpbmcgTWFuYWdlciwgRG9jdG9yLCBFbnRyZXByZW5ldXIiPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iZm9ybS1zdWJtaXQiPlN1Ym1pdCBPcmRlciDihpI8L2J1dHRvbj4KICAgICAgICAgICAgPC9mb3JtPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICAKICAgIDxzY3JpcHQ+CiAgICAgICAgLy8gQ3VycmVuY3kgc3dpdGNoaW5nCiAgICAgICAgbGV0IGN1cnJlbnRDdXJyZW5jeSA9ICd1c2QnOwogICAgICAgIAogICAgICAgIGZ1bmN0aW9uIHNldEN1cnJlbmN5KGN1cnJlbmN5KSB7CiAgICAgICAgICAgIGN1cnJlbnRDdXJyZW5jeSA9IGN1cnJlbmN5OwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gVXBkYXRlIGJ1dHRvbiBzdGF0ZXMKICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmN1cnJlbmN5LWJ0bicpLmZvckVhY2goYnRuID0+IGJ0bi5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKSk7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGN1cnJlbmN5ICsgJ0J0bicpLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gVXBkYXRlIGFsbCBwcmljZXMKICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnByaWNpbmctYW1vdW50JykuZm9yRWFjaChlbCA9PiB7CiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGVsLmRhdGFzZXRbY3VycmVuY3ldOwogICAgICAgICAgICAgICAgaWYgKGN1cnJlbmN5ID09PSAndXNkJykgewogICAgICAgICAgICAgICAgICAgIGVsLnRleHRDb250ZW50ID0gJyQnICsgdmFsdWU7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbmN5ID09PSAna2VzJykgewogICAgICAgICAgICAgICAgICAgIGVsLnRleHRDb250ZW50ID0gJ0tFUyAnICsgdmFsdWU7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbmN5ID09PSAndWd4JykgewogICAgICAgICAgICAgICAgICAgIGVsLnRleHRDb250ZW50ID0gJ1VHWCAnICsgdmFsdWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBNb2RhbCBmdW5jdGlvbnMKICAgICAgICBmdW5jdGlvbiBvcGVuT3JkZXIocGxhbiwgcHJpY2UpIHsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29yZGVyTW9kYWwnKS5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhY2thZ2VTZWxlY3QnKS52YWx1ZSA9IHBsYW4gKyAnIC0gJCcgKyBwcmljZTsKICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBmdW5jdGlvbiBjbG9zZU1vZGFsKCkgewogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3JkZXJNb2RhbCcpLmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpOwogICAgICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gJyc7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIENsb3NlIG1vZGFsIG9uIG91dHNpZGUgY2xpY2sKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3JkZXJNb2RhbCcpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICBpZiAoZS50YXJnZXQgPT09IHRoaXMpIGNsb3NlTW9kYWwoKTsKICAgICAgICB9KTsKICAgICAgICAKICAgICAgICAvLyBDbG9zZSBtb2RhbCBvbiBFc2NhcGUga2V5CiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJykgY2xvc2VNb2RhbCgpOwogICAgICAgIH0pOwogICAgICAgIAogICAgICAgIC8vID09PT09PT09PT0gQlJBTkRIQU5EU0hBS0UgU0VDVVJJVFkgU1VJVEUgPT09PT09PT09PQogICAgICAgIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgJ3VzZSBzdHJpY3QnOwogICAgICAgICAgICAKICAgICAgICAgICAgY29uc29sZS5sb2coJyVj8J+bkSBTVE9QIScsICdjb2xvcjogcmVkOyBmb250LXNpemU6IDUwcHg7IGZvbnQtd2VpZ2h0OiBib2xkOycpOwogICAgICAgICAgICBjb25zb2xlLmxvZygnJWPimqDvuI8gVGhpcyBpcyBwcm90ZWN0ZWQgaW50ZWxsZWN0dWFsIHByb3BlcnR5IG9mIE11a2FzYSBWZW50dXJlIFBhcnRuZXJzIExMQy4nLCAnY29sb3I6IG9yYW5nZTsgZm9udC1zaXplOiAxNnB4OycpOwogICAgICAgICAgICBjb25zb2xlLmxvZygnJWPwn5SSIFVuYXV0aG9yaXplZCBjb3B5aW5nIG9yIHJldmVyc2UgZW5naW5lZXJpbmcgaXMgcHJvaGliaXRlZC4nLCAnY29sb3I6IHllbGxvdzsgZm9udC1zaXplOiAxNHB4OycpOwogICAgICAgICAgICBjb25zb2xlLmxvZygnJWPCqSAyMDI2IEJyYW5kSGFuZHNoYWtlIC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCcsICdjb2xvcjogI0Q0QUYzNzsgZm9udC1zaXplOiAxMnB4OycpOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gUmlnaHQtY2xpY2sgcHJvdGVjdGlvbiBvbiBpbWFnZXMKICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY29udGV4dG1lbnUnLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBpZiAoZS50YXJnZXQudGFnTmFtZSA9PT0gJ0lNRycpIHsKICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIEJsb2NrIEN0cmwrVSBhbmQgQ3RybCtTCiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBpZiAoZS5jdHJsS2V5ICYmIChlLmtleSA9PT0gJ3UnIHx8IGUua2V5ID09PSAnVScgfHwgZS5rZXkgPT09ICdzJyB8fCBlLmtleSA9PT0gJ1MnKSkgewogICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gU2Vzc2lvbiB0cmFja2luZwogICAgICAgICAgICBpZiAoIXNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2JoX3Nlc3Npb25faWQnKSkgewogICAgICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnYmhfc2Vzc2lvbl9pZCcsICdCSC0nICsgRGF0ZS5ub3coKSArICctJyArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA5KSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIEZvcm0gdGltZXN0YW1wCiAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2Zvcm0nKS5mb3JFYWNoKGZ1bmN0aW9uKGZvcm0pIHsKICAgICAgICAgICAgICAgIHZhciB0cyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CiAgICAgICAgICAgICAgICB0cy50eXBlID0gJ2hpZGRlbic7CiAgICAgICAgICAgICAgICB0cy5uYW1lID0gJ19mb3JtX2xvYWRlZCc7CiAgICAgICAgICAgICAgICB0cy52YWx1ZSA9IERhdGUubm93KCk7CiAgICAgICAgICAgICAgICBmb3JtLmFwcGVuZENoaWxkKHRzKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBBbnRpLWlmcmFtZSAocHJvZHVjdGlvbiBvbmx5KQogICAgICAgICAgICBpZiAod2luZG93LnNlbGYgIT09IHdpbmRvdy50b3ApIHsKICAgICAgICAgICAgICAgIHZhciBjdXJyZW50SG9zdCA9IHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZTsKICAgICAgICAgICAgICAgIHZhciBpc1Byb2R1Y3Rpb24gPSBjdXJyZW50SG9zdC5pbmNsdWRlcygnYnJhbmRoYW5kc2hha2UuY29tJykgfHwgY3VycmVudEhvc3QuaW5jbHVkZXMoJ2hhbmRzaGFrZS5hZnJpY2EnKTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgaWYgKGlzUHJvZHVjdGlvbikgewogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gJzxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtoZWlnaHQ6MTAwdmg7YmFja2dyb3VuZDojMEQxQjJBO2NvbG9yOiNENEFGMzc7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjQwcHg7Ij48ZGl2PjxoMT7imqDvuI8gVW5hdXRob3JpemVkPC9oMT48cD5UaGlzIGNvbnRlbnQgY2Fubm90IGJlIGVtYmVkZGVkLjwvcD48YSBocmVmPSJodHRwczovL2JyYW5kaGFuZHNoYWtlLmNvbSIgc3R5bGU9ImNvbG9yOiNENEFGMzc7Ij5WaXNpdCBCcmFuZEhhbmRzaGFrZS5jb208L2E+PC9kaXY+PC9kaXY+JzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pKCk7CiAgICAgICAgLy8gPT09PT09PT09PSBFTkQgU0VDVVJJVFkgPT09PT09PT09PQogICAgPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPg==","embed":""}
BrandHandshake | Premium Virtual Business Cards | Digital Presence Perfected
BRANDHANDSHAKE
Features Pricing How It Works
Get Started
✨ Premium Digital Business Cards

Your Digital Presence,
Perfected.

Elevate your professional identity with stunning virtual business cards. From personal branding to enterprise solutions β€” stand out, get noticed, get remembered.

View Pricing Learn More
Scroll

What Is A Virtual Business Card?

A modern, digital-first approach to professional networking that leaves lasting impressions.

🎨

Stunning Design

Custom-crafted cards that reflect your unique brand and professional identity.

πŸ“±

Always Accessible

Share via QR code, NFC, link, or social media β€” anytime, anywhere.

πŸ“Š

Smart Analytics

Track views, clicks, and engagement to understand your networking impact.

πŸ”„

Instant Updates

Change your info anytime β€” no reprinting, no waste, always current.

🌍

Global Reach

Connect with professionals worldwide without geographic limitations.

πŸ”

Secure & Professional

Enterprise-grade security with custom domains and SSL protection.

Choose Your Plan

From individuals to enterprises β€” find the perfect solution for your professional needs.

Entry Level
🎯
Starter
Perfect for Students
$10 one-time
  • βœ“ Professional Digital Card
  • βœ“ Contact Info & Photo
  • βœ“ 3 Social Media Links
  • βœ“ QR Code
⭐
Professional
For Growing Professionals
$20 one-time
  • βœ“ Everything in Starter
  • βœ“ Custom Colors
  • βœ“ 6 Social Links
  • βœ“ Booking Calendar
⭐ POPULAR
πŸ‘‘
Executive
For Leaders
$30 one-time
  • βœ“ Everything in Professional
  • βœ“ Video Embed
  • βœ“ Lead Capture Form
  • βœ“ Analytics Dashboard
Growth Level
πŸ’Ž
Elite
For Executives
$50 one-time
  • βœ“ Everything in Executive
  • βœ“ Custom Domain
  • βœ“ 1 Year Hosting
  • βœ“ White Glove Setup
πŸ†
Premium
For High Achievers
$75 one-time
  • βœ“ Everything in Elite
  • βœ“ NFC Card Add-on
  • βœ“ 2 Years Hosting
  • βœ“ Brand Consultation
🏒
Business
For Small Teams
$100 one-time
  • βœ“ Team of 3 Cards
  • βœ“ Lead Capture
  • βœ“ CRM Integration
  • βœ“ Team Dashboard
Enterprise Level
πŸ›οΈ
Corporate
For Growing Teams
$150 one-time
  • βœ“ Team of 5 Cards
  • βœ“ Admin Dashboard
  • βœ“ Analytics Suite
  • βœ“ Priority Support
πŸš€
Enterprise
For Organizations
$200 one-time
  • βœ“ Team of 10 Cards
  • βœ“ API Access
  • βœ“ White Label Option
  • βœ“ Dedicated Manager
πŸ‘‘ ULTIMATE
🌍
Sovereign
For Empire Builders
$250 one-time
  • βœ“ Unlimited Team
  • βœ“ Full White Label
  • βœ“ VIP Concierge
  • βœ“ Lifetime Updates

How It Works

Get your premium virtual business card in three simple steps.

1

Choose Your Plan

Select the package that fits your needs β€” from personal cards to enterprise solutions.

2

Submit Your Details

Fill out the quick form with your info, preferences, and branding requirements.

3

Get Your Card

Receive your stunning digital card within 48 hours, ready to share with the world.

Ready to Stand Out?

Join thousands of professionals who've elevated their networking with BrandHandshake.

Get Your Card Today
BRANDHANDSHAKE
Features Pricing How It Works Corporate Solutions

Β© 2026 Mukasa Venture Partners LLC. All Rights Reserved.

Order Your Card

Fill out the form below and we'll get started on your card.

Image Gallery Grid
T
Please Check Your Email
We Will Be Following Up Shortly
*
*
*

warning