{"js":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8IS0tIFVSTDogdmlydHVhbC5oYW5kc2hha2UuYWZyaWNhL3ZpcnR1YWwtdmVyaWZ5IC0tPgogICAgPCEtLSBQVVJQT1NFOiBPcmRlciBWZXJpZmljYXRpb24gJiBFbWFpbCBDYXB0dXJlIC0tPgogICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPgogICAgPHRpdGxlPlZlcmlmeSBZb3VyIE9yZGVyIHwgVmlydHVhbCBIYW5kc2hha2UgQWZyaWNhIERpZ2l0YWwgQ2FyZHM8L3RpdGxlPgogICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkNvbmZpcm0geW91ciBkaWdpdGFsIGJ1c2luZXNzIGNhcmQgb3JkZXIuIFZlcmlmeSB5b3VyIGRldGFpbHMsIGNvbXBsZXRlIHBheW1lbnQsIGFuZCBnZXQgeW91ciBwcmVtaXVtIGNhcmQgZGVsaXZlcmVkIHdpdGhpbiAyNC00OCBob3Vycy4iPgogICAgPGxpbmsgcmVsPSJjYW5vbmljYWwiIGhyZWY9Imh0dHBzOi8vdmlydHVhbC5oYW5kc2hha2UuYWZyaWNhL3ZpcnR1YWwtdmVyaWZ5Ij4KICAgIDxsaW5rIGhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9UGxheWZhaXIrRGlzcGxheTp3Z2h0QDQwMDs1MDA7NjAwOzcwMDs4MDAmZmFtaWx5PUNvcm1vcmFudCtHYXJhbW9uZDppdGFsLHdnaHRAMCw0MDA7MCw1MDA7MCw2MDA7MSw0MDAmZmFtaWx5PU51bml0bzp3Z2h0QDMwMDs0MDA7NTAwOzYwMDs3MDA7ODAwJmRpc3BsYXk9c3dhcCIgcmVsPSJzdHlsZXNoZWV0Ij4KICAgIDxzdHlsZT4KICAgICAgICA6cm9vdCB7CiAgICAgICAgICAgIC0tbmF2eTogIzBEMUIyQTsKICAgICAgICAgICAgLS1pbmRpZ286ICMxQzFGNEE7CiAgICAgICAgICAgIC0tZ29sZDogI0Q0QUYzNzsKICAgICAgICAgICAgLS1pdm9yeTogI0Y4RjRFQzsKICAgICAgICAgICAgLS1kZWVwZ29sZDogI0I4OTcyRTsKICAgICAgICAgICAgLS1jaGFyY29hbDogIzBhMGExMjsKICAgICAgICAgICAgLS1ncmVlbjogIzEwYjk4MTsKICAgICAgICAgICAgLS1yb3NlOiAjQzU5Qjc2OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAqIHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9CiAgICAgICAgaHRtbCB7IHNjcm9sbC1iZWhhdmlvcjogc21vb3RoOyB9CiAgICAgICAgCiAgICAgICAgYm9keSB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnTnVuaXRvJywgc2Fucy1zZXJpZjsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hhcmNvYWwpOwogICAgICAgICAgICBjb2xvcjogdmFyKC0taXZvcnkpOwogICAgICAgICAgICBsaW5lLWhlaWdodDogMS44OwogICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMThweDsKICAgICAgICAgICAgbWluLWhlaWdodDogMTAwdmg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIEFOSU1BVEVEIEJBQ0tHUk9VTkQgKi8KICAgICAgICAuYmctbWFzdGVyIHsKICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgICAgICB0b3A6IDA7IGxlZnQ6IDA7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOyB6LWluZGV4OiAwOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAKICAgICAgICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDIwJSAxMCUsIHJnYmEoMjEyLCAxNzUsIDU1LCAwLjE1KSAwJSwgdHJhbnNwYXJlbnQgNTAlKSwKICAgICAgICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDgwJSA5MCUsIHJnYmEoMTk3LCAxNTUsIDExOCwgMC4xMikgMCUsIHRyYW5zcGFyZW50IDQwJSksCiAgICAgICAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCA1MCUgNTAlLCByZ2JhKDI4LCAzMSwgNzQsIDAuNCkgMCUsIHRyYW5zcGFyZW50IDYwJSksCiAgICAgICAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCB2YXIoLS1jaGFyY29hbCkgMCUsIHZhcigtLW5hdnkpIDUwJSwgdmFyKC0taW5kaWdvKSAxMDAlKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogRkxPQVRJTkcgT1JCUyAqLwogICAgICAgIC5vcmIgewogICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICAgICAgZmlsdGVyOiBibHVyKDgwcHgpOwogICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICAgICAgei1pbmRleDogMTsKICAgICAgICAgICAgYW5pbWF0aW9uOiBmbG9hdE9yYiAyMHMgZWFzZS1pbi1vdXQgaW5maW5pdGU7CiAgICAgICAgfQogICAgICAgIC5vcmItMSB7IHdpZHRoOiA0MDBweDsgaGVpZ2h0OiA0MDBweDsgYmFja2dyb3VuZDogcmdiYSgyMTIsIDE3NSwgNTUsIDAuMTUpOyB0b3A6IDUlOyBsZWZ0OiAtMTAlOyBhbmltYXRpb24tZGVsYXk6IDBzOyB9CiAgICAgICAgLm9yYi0yIHsgd2lkdGg6IDM1MHB4OyBoZWlnaHQ6IDM1MHB4OyBiYWNrZ3JvdW5kOiByZ2JhKDE5NywgMTU1LCAxMTgsIDAuMTIpOyB0b3A6IDUwJTsgcmlnaHQ6IC0xMCU7IGFuaW1hdGlvbi1kZWxheTogN3M7IH0KICAgICAgICBAa2V5ZnJhbWVzIGZsb2F0T3JiIHsKICAgICAgICAgICAgMCUsIDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKSBzY2FsZSgxKTsgb3BhY2l0eTogMC42OyB9CiAgICAgICAgICAgIDI1JSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlKDQwcHgsIC00MHB4KSBzY2FsZSgxLjEpOyBvcGFjaXR5OiAwLjg7IH0KICAgICAgICAgICAgNTAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTMwcHgsIDMwcHgpIHNjYWxlKDAuOSk7IG9wYWNpdHk6IDAuNTsgfQogICAgICAgICAgICA3NSUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgzMHB4LCA0MHB4KSBzY2FsZSgxLjA1KTsgb3BhY2l0eTogMC43OyB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIEZMT0FUSU5HIFNUQVJTICovCiAgICAgICAgLnN0YXJzLWNvbnRhaW5lciB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICAgICAgdG9wOiAwOyBsZWZ0OiAwOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICAgICAgei1pbmRleDogMjsKICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB9CiAgICAgICAgLnN0YXIgewogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS44cmVtOwogICAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgICAgICBhbmltYXRpb246IHR3aW5rbGUgNHMgZWFzZS1pbi1vdXQgaW5maW5pdGU7CiAgICAgICAgfQogICAgICAgIEBrZXlmcmFtZXMgdHdpbmtsZSB7CiAgICAgICAgICAgIDAlLCAxMDAlIHsgb3BhY2l0eTogMDsgdHJhbnNmb3JtOiBzY2FsZSgwLjUpIHJvdGF0ZSgwZGVnKTsgfQogICAgICAgICAgICA1MCUgeyBvcGFjaXR5OiAwLjg7IHRyYW5zZm9ybTogc2NhbGUoMSkgcm90YXRlKDE4MGRlZyk7IH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmNvbnRlbnQtd3JhcHBlciB7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgei1pbmRleDogMTA7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDEwMHZoOwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgcGFkZGluZzogNDBweCAyMHB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBNQUlOIENBUkQgKi8KICAgICAgICAudmVyaWZ5LWNhcmQgewogICAgICAgICAgICBtYXgtd2lkdGg6IDYwMHB4OwogICAgICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjUpOwogICAgICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTVweCk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDMwcHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDUwcHggNDBweDsKICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgcmdiYSgyMTIsIDE3NSwgNTUsIDAuMyk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMzBweCA4MHB4IHJnYmEoMCwgMCwgMCwgMC41KTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogSEVBREVSICovCiAgICAgICAgLnZlcmlmeS1oZWFkZXIgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQwcHg7CiAgICAgICAgfQogICAgICAgIC52ZXJpZnktbG9nbyB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnUGxheWZhaXIgRGlzcGxheScsIHNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IDEuMnJlbTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWdvbGQpOwogICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogM3B4OwogICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyNXB4OwogICAgICAgIH0KICAgICAgICAudmVyaWZ5LWxvZ28gc3BhbiB7IGZvbnQtd2VpZ2h0OiAzMDA7IGNvbG9yOiB2YXIoLS1pdm9yeSk7IH0KICAgICAgICAKICAgICAgICAudmVyaWZ5LWljb24gewogICAgICAgICAgICBmb250LXNpemU6IDRyZW07CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICAgICAgICAgIGFuaW1hdGlvbjogYm91bmNlIDJzIGVhc2UtaW4tb3V0IGluZmluaXRlOwogICAgICAgIH0KICAgICAgICBAa2V5ZnJhbWVzIGJvdW5jZSB7CiAgICAgICAgICAgIDAlLCAxMDAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOyB9CiAgICAgICAgICAgIDUwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTBweCk7IH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnZlcmlmeS1oZWFkZXIgaDEgewogICAgICAgICAgICBmb250LWZhbWlseTogJ1BsYXlmYWlyIERpc3BsYXknLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxLjhyZW0sIDV2dywgMi41cmVtKTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWdvbGQpOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgICAgIH0KICAgICAgICAudmVyaWZ5LWhlYWRlciBwIHsKICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgICBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjcpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBPUkRFUiBTVU1NQVJZICovCiAgICAgICAgLm9yZGVyLXN1bW1hcnkgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDIxMiwgMTc1LCA1NSwgMC4wOCk7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjEyLCAxNzUsIDU1LCAwLjIpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4OwogICAgICAgICAgICBwYWRkaW5nOiAyNXB4OwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4OwogICAgICAgIH0KICAgICAgICAuc3VtbWFyeS10aXRsZSB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnUGxheWZhaXIgRGlzcGxheScsIHNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWdvbGQpOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBnYXA6IDEwcHg7CiAgICAgICAgfQogICAgICAgIC5zdW1tYXJ5LXJvdyB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICAgICAgcGFkZGluZzogMTBweCAwOwogICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgyMTIsIDE3NSwgNTUsIDAuMSk7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKICAgICAgICB9CiAgICAgICAgLnN1bW1hcnktcm93Omxhc3QtY2hpbGQgeyBib3JkZXItYm90dG9tOiBub25lOyB9CiAgICAgICAgLnN1bW1hcnktbGFiZWwgewogICAgICAgICAgICBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjYpOwogICAgICAgIH0KICAgICAgICAuc3VtbWFyeS12YWx1ZSB7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1pdm9yeSk7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgfQogICAgICAgIC5zdW1tYXJ5LXZhbHVlLmhpZ2hsaWdodCB7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1nb2xkKTsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjFyZW07CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIFNURVBTICovCiAgICAgICAgLnN0ZXBzLXNlY3Rpb24gewogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4OwogICAgICAgIH0KICAgICAgICAuc3RlcHMtdGl0bGUgewogICAgICAgICAgICBmb250LWZhbWlseTogJ1BsYXlmYWlyIERpc3BsYXknLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjFyZW07CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1nb2xkKTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIH0KICAgICAgICAuc3RlcHMgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgICBnYXA6IDE1cHg7CiAgICAgICAgfQogICAgICAgIC5zdGVwIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CiAgICAgICAgICAgIGdhcDogMTVweDsKICAgICAgICAgICAgcGFkZGluZzogMTVweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjMpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxNXB4OwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgIH0KICAgICAgICAuc3RlcDpob3ZlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjEpOwogICAgICAgIH0KICAgICAgICAuc3RlcC1udW1iZXIgewogICAgICAgICAgICB3aWR0aDogMzVweDsKICAgICAgICAgICAgaGVpZ2h0OiAzNXB4OwogICAgICAgICAgICBtaW4td2lkdGg6IDM1cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWdvbGQpLCB2YXIoLS1kZWVwZ29sZCkpOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tbmF2eSk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtOwogICAgICAgIH0KICAgICAgICAuc3RlcC1jb250ZW50IGg0IHsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWl2b3J5KTsKICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAzcHg7CiAgICAgICAgfQogICAgICAgIC5zdGVwLWNvbnRlbnQgcCB7CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI0OCwgMjQ0LCAyMzYsIDAuNik7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogUEFZTUVOVCBCT1ggKi8KICAgICAgICAucGF5bWVudC1ib3ggewogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTQ1ZGVnLCByZ2JhKDIxMiwgMTc1LCA1NSwgMC4xKSwgcmdiYSgwLCAwLCAwLCAwLjQpKTsKICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDI1cHg7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDsKICAgICAgICB9CiAgICAgICAgLnBheW1lbnQtbGFiZWwgewogICAgICAgICAgICBmb250LXNpemU6IDAuOXJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC42KTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgICAgICB9CiAgICAgICAgLnBheW1lbnQtbnVtYmVyIHsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjhyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1pdm9yeSk7CiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAycHg7CiAgICAgICAgICAgIGFuaW1hdGlvbjogZ2xvd1B1bHNlIDJzIGVhc2UtaW4tb3V0IGluZmluaXRlOwogICAgICAgIH0KICAgICAgICBAa2V5ZnJhbWVzIGdsb3dQdWxzZSB7CiAgICAgICAgICAgIDAlLCAxMDAlIHsgdGV4dC1zaGFkb3c6IDAgMCAyMHB4IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjMpOyB9CiAgICAgICAgICAgIDUwJSB7IHRleHQtc2hhZG93OiAwIDAgMzBweCByZ2JhKDIxMiwgMTc1LCA1NSwgMC42KTsgfQogICAgICAgIH0KICAgICAgICAucGF5bWVudC1ub3RlIHsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjhyZW07CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI0OCwgMjQ0LCAyMzYsIDAuNSk7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDEwcHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIENPTkZJUk0gQlVUVE9OICovCiAgICAgICAgLmNvbmZpcm0tYnRuIHsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBwYWRkaW5nOiAxOHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1nb2xkKSwgdmFyKC0tZGVlcGdvbGQpKTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLW5hdnkpOwogICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzMHB4OwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgICAgIH0KICAgICAgICAuY29uZmlybS1idG46aG92ZXIgewogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTNweCk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMTVweCA0MHB4IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjQpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBESVNDTEFJTUVSICovCiAgICAgICAgLmRpc2NsYWltZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDIzNCwgODgsIDEyLCAwLjEpOwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDIzNCwgODgsIDEyLCAwLjMpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgICAgICAgICBwYWRkaW5nOiAxNXB4OwogICAgICAgICAgICBmb250LXNpemU6IDAuODVyZW07CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI0OCwgMjQ0LCAyMzYsIDAuNyk7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICB9CiAgICAgICAgLmRpc2NsYWltZXIgc3Ryb25nIHsKICAgICAgICAgICAgY29sb3I6ICNmNTllMGI7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIFJFV0FSRFMgVEVBU0VSICovCiAgICAgICAgLnJld2FyZHMtdGVhc2VyIHsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMzBweDsKICAgICAgICAgICAgcGFkZGluZy10b3A6IDI1cHg7CiAgICAgICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDIxMiwgMTc1LCA1NSwgMC4yKTsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIH0KICAgICAgICAucmV3YXJkcy10ZWFzZXIgcCB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtOwogICAgICAgICAgICBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjYpOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgICAgIH0KICAgICAgICAucmV3YXJkcy10ZWFzZXIgYSB7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1nb2xkKTsKICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjNzIGVhc2U7CiAgICAgICAgfQogICAgICAgIC5yZXdhcmRzLXRlYXNlciBhOmhvdmVyIHsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWl2b3J5KTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogRk9PVEVSICovCiAgICAgICAgLnZlcmlmeS1mb290ZXIgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDMwcHg7CiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAyMHB4OwogICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgyMTIsIDE3NSwgNTUsIDAuMSk7CiAgICAgICAgfQogICAgICAgIC52ZXJpZnktZm9vdGVyIHAgewogICAgICAgICAgICBmb250LXNpemU6IDAuOHJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC40KTsKICAgICAgICB9CiAgICAgICAgLnZlcmlmeS1mb290ZXIgYSB7CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI0OCwgMjQ0LCAyMzYsIDAuNSk7CiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICB9CiAgICAgICAgLnZlcmlmeS1mb290ZXIgYTpob3ZlciB7IGNvbG9yOiB2YXIoLS1nb2xkKTsgfQogICAgICAgIAogICAgICAgIC8qIFJFU1BPTlNJVkUgKi8KICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNjAwcHgpIHsKICAgICAgICAgICAgYm9keSB7IGZvbnQtc2l6ZTogMTZweDsgfQogICAgICAgICAgICAudmVyaWZ5LWNhcmQgeyBwYWRkaW5nOiAzNXB4IDI1cHg7IH0KICAgICAgICAgICAgLnBheW1lbnQtbnVtYmVyIHsgZm9udC1zaXplOiAxLjRyZW07IH0KICAgICAgICB9CiAgICA8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgogICAgPGRpdiBjbGFzcz0iYmctbWFzdGVyIj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9Im9yYiBvcmItMSI+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJvcmIgb3JiLTIiPjwvZGl2PgogICAgPGRpdiBjbGFzcz0ic3RhcnMtY29udGFpbmVyIiBpZD0ic3RhcnMiPjwvZGl2PgogICAgCiAgICA8ZGl2IGNsYXNzPSJjb250ZW50LXdyYXBwZXIiPgogICAgICAgIDxkaXYgY2xhc3M9InZlcmlmeS1jYXJkIj4KICAgICAgICAgICAgPCEtLSBIRUFERVIgLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InZlcmlmeS1oZWFkZXIiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idmVyaWZ5LWxvZ28iPvCfpJ0gVmlydHVhbCBIYW5kc2hha2UgPHNwYW4+QWZyaWNhPC9zcGFuPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idmVyaWZ5LWljb24iPuKchTwvZGl2PgogICAgICAgICAgICAgICAgPGgxPlZlcmlmeSBZb3VyIE9yZGVyPC9oMT4KICAgICAgICAgICAgICAgIDxwPkFsbW9zdCB0aGVyZSEgUGxlYXNlIHJldmlldyB5b3VyIGRldGFpbHMgYmVsb3cuPC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgCiAgICAgICAgICAgIDwhLS0gT1JERVIgU1VNTUFSWSAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ib3JkZXItc3VtbWFyeSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdW1tYXJ5LXRpdGxlIj7wn5OLIE9yZGVyIFN1bW1hcnk8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1bW1hcnktcm93Ij4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3VtbWFyeS1sYWJlbCI+TmFtZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3VtbWFyeS12YWx1ZSIgaWQ9ImRpc3BsYXlOYW1lIj5Mb2FkaW5nLi4uPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdW1tYXJ5LXJvdyI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN1bW1hcnktbGFiZWwiPkVtYWlsPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzdW1tYXJ5LXZhbHVlIiBpZD0iZGlzcGxheUVtYWlsIj5Mb2FkaW5nLi4uPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdW1tYXJ5LXJvdyI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN1bW1hcnktbGFiZWwiPldoYXRzQXBwPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzdW1tYXJ5LXZhbHVlIiBpZD0iZGlzcGxheVdoYXRzYXBwIj5Mb2FkaW5nLi4uPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdW1tYXJ5LXJvdyI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN1bW1hcnktbGFiZWwiPkNvdW50cnk8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN1bW1hcnktdmFsdWUiIGlkPSJkaXNwbGF5Q291bnRyeSI+TG9hZGluZy4uLjwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3VtbWFyeS1yb3ciPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzdW1tYXJ5LWxhYmVsIj5DYXJkIFRpZXI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN1bW1hcnktdmFsdWUgaGlnaGxpZ2h0IiBpZD0iZGlzcGxheVRpZXIiPkxvYWRpbmcuLi48L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIAogICAgICAgICAgICA8IS0tIE5FWFQgU1RFUFMgLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0ZXBzLXNlY3Rpb24iPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RlcHMtdGl0bGUiPvCfk40gV2hhdCBIYXBwZW5zIE5leHQ8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0ZXBzIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGVwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RlcC1udW1iZXIiPjE8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RlcC1jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5Db21wbGV0ZSBQYXltZW50PC9oND4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlNlbmQgcGF5bWVudCB0byB0aGUgTW9iaWxlIE1vbmV5IG51bWJlciBiZWxvdzwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RlcCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0ZXAtbnVtYmVyIj4yPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0ZXAtY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+V2hhdHNBcHAgQ29uZmlybWF0aW9uPC9oND4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPldlJ2xsIGNvbnRhY3QgeW91IHdpdGhpbiAyNCBob3VycyB0byBjb25maXJtPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGVwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RlcC1udW1iZXIiPjM8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RlcC1jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5DYXJkIERlbGl2ZXJ5PC9oND4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlJlY2VpdmUgeW91ciBwcmVtaXVtIGRpZ2l0YWwgY2FyZCB3aXRoaW4gMjQtNDggaG91cnM8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAKICAgICAgICAgICAgPCEtLSBQQVlNRU5UIEJPWCAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icGF5bWVudC1ib3giPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGF5bWVudC1sYWJlbCI+8J+TsSBTZW5kIFBheW1lbnQgVG88L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBheW1lbnQtbnVtYmVyIj4rMjU2LTc4Ni03ODEtMzY3IPCfh7rwn4esPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYXltZW50LW5vdGUiPkludGVybmF0aW9uYWwgTW9iaWxlIE1vbmV5IEFjY2VwdGVkPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAKICAgICAgICAgICAgPCEtLSBDT05GSVJNIEJVVFRPTiAtLT4KICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImNvbmZpcm0tYnRuIiBpZD0iY29uZmlybUJ0biI+4pyTIEkndmUgQ29tcGxldGVkIFBheW1lbnQ8L2E+CiAgICAgICAgICAgIAogICAgICAgICAgICA8IS0tIERJU0NMQUlNRVIgLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRpc2NsYWltZXIiPgogICAgICAgICAgICAgICAgPHN0cm9uZz7imqDvuI8gSW1wb3J0YW50Ojwvc3Ryb25nPiBZb3VyIG9yZGVyIHdpbGwgYmUgcHJvY2Vzc2VkIGFmdGVyIHBheW1lbnQgY29uZmlybWF0aW9uLiBDYXJkcyBhcmUgZGVsaXZlcmVkIHZpYSBXaGF0c0FwcC4gQ29ycmVjdGlvbnMgYWZ0ZXIgZGVsaXZlcnk6ICQ1IHBlciBmaXguCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAKICAgICAgICAgICAgPCEtLSBSRVdBUkRTIFRFQVNFUiAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icmV3YXJkcy10ZWFzZXIiPgogICAgICAgICAgICAgICAgPHA+8J+OgSBBZnRlciB5b3VyIGNhcmQgaXMgcmVhZHksIHlvdSBjYW4gZWFybiByZXdhcmRzIGJ5IHJlZmVycmluZyBmcmllbmRzITwvcD4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vaGFuZHNoYWtlLmFmcmljYS9leGNsdXNpdmUtcmV3YXJkcyI+TGVhcm4gYWJvdXQgb3VyIFJld2FyZHMgUHJvZ3JhbSDihpI8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAKICAgICAgICAgICAgPCEtLSBGT09URVIgLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InZlcmlmeS1mb290ZXIiPgogICAgICAgICAgICAgICAgPHA+PGEgaHJlZj0iaHR0cHM6Ly92aXJ0dWFsLmhhbmRzaGFrZS5hZnJpY2EiPnZpcnR1YWwuaGFuZHNoYWtlLmFmcmljYTwvYT4g4oCiIEJ1aWxkaW5nIERpZ2l0YWwgU292ZXJlaWdudHkgQWNyb3NzIEFmcmljYTwvcD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIAogICAgPHNjcmlwdD4KICAgICAgICAvLyBDcmVhdGUgZmxvYXRpbmcgc3RhcnMKICAgICAgICBjb25zdCBzdGFyc0NvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGFycycpOwogICAgICAgIGNvbnN0IHN0YXJFbW9qaXMgPSBbJ+KcqCcsICfirZAnLCAn8J+SqycsICfwn4yfJ107CiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMjsgaSsrKSB7CiAgICAgICAgICAgIGNvbnN0IHN0YXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICAgICAgc3Rhci5jbGFzc05hbWUgPSAnc3Rhcic7CiAgICAgICAgICAgIHN0YXIudGV4dENvbnRlbnQgPSBzdGFyRW1vamlzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIHN0YXJFbW9qaXMubGVuZ3RoKV07CiAgICAgICAgICAgIHN0YXIuc3R5bGUubGVmdCA9IE1hdGgucmFuZG9tKCkgKiAxMDAgKyAnJSc7CiAgICAgICAgICAgIHN0YXIuc3R5bGUudG9wID0gTWF0aC5yYW5kb20oKSAqIDEwMCArICclJzsKICAgICAgICAgICAgc3Rhci5zdHlsZS5hbmltYXRpb25EZWxheSA9IE1hdGgucmFuZG9tKCkgKiA0ICsgJ3MnOwogICAgICAgICAgICBzdGFyLnN0eWxlLmFuaW1hdGlvbkR1cmF0aW9uID0gKDMgKyBNYXRoLnJhbmRvbSgpICogMikgKyAncyc7CiAgICAgICAgICAgIHN0YXJzQ29udGFpbmVyLmFwcGVuZENoaWxkKHN0YXIpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBQYXJzZSBVUkwgcGFyYW1ldGVycwogICAgICAgIGNvbnN0IHVybFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7CiAgICAgICAgCiAgICAgICAgLy8gR2V0IGZvcm0gZGF0YQogICAgICAgIGNvbnN0IGZpcnN0TmFtZSA9IHVybFBhcmFtcy5nZXQoJ2ZpcnN0TmFtZScpIHx8ICdHdWVzdCc7CiAgICAgICAgY29uc3QgbGFzdE5hbWUgPSB1cmxQYXJhbXMuZ2V0KCdsYXN0TmFtZScpIHx8ICcnOwogICAgICAgIGNvbnN0IGVtYWlsID0gdXJsUGFyYW1zLmdldCgnZW1haWwnKSB8fCAnTm90IHByb3ZpZGVkJzsKICAgICAgICBjb25zdCB3aGF0c2FwcCA9IHVybFBhcmFtcy5nZXQoJ3doYXRzYXBwJykgfHwgJ05vdCBwcm92aWRlZCc7CiAgICAgICAgY29uc3QgY291bnRyeSA9IHVybFBhcmFtcy5nZXQoJ2NvdW50cnknKSB8fCAnTm90IHByb3ZpZGVkJzsKICAgICAgICBjb25zdCB0aWVyID0gdXJsUGFyYW1zLmdldCgndGllclNlbGVjdCcpIHx8ICdOb3Qgc2VsZWN0ZWQnOwogICAgICAgIAogICAgICAgIC8vIEZvcm1hdCB0aWVyIGRpc3BsYXkKICAgICAgICBmdW5jdGlvbiBmb3JtYXRUaWVyKHRpZXJWYWx1ZSkgewogICAgICAgICAgICBjb25zdCB0aWVycyA9IHsKICAgICAgICAgICAgICAgICdwZXJzb25hbC0xMCc6ICfwn5OxIFBlcnNvbmFsIC0gJDEwJywKICAgICAgICAgICAgICAgICdzdGFydHVwLTIwJzogJ/CfkqEgU3RhcnR1cCAtICQyMCcsCiAgICAgICAgICAgICAgICAnZW50cmVwcmVuZXVyLTMwJzogJ/CfmoAgRW50cmVwcmVuZXVyIC0gJDMwJwogICAgICAgICAgICB9OwogICAgICAgICAgICByZXR1cm4gdGllcnNbdGllclZhbHVlXSB8fCB0aWVyVmFsdWU7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIERpc3BsYXkgZGF0YQogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXNwbGF5TmFtZScpLnRleHRDb250ZW50ID0gYCR7Zmlyc3ROYW1lfSAke2xhc3ROYW1lfWAudHJpbSgpOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXNwbGF5RW1haWwnKS50ZXh0Q29udGVudCA9IGVtYWlsOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXNwbGF5V2hhdHNhcHAnKS50ZXh0Q29udGVudCA9IHdoYXRzYXBwOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXNwbGF5Q291bnRyeScpLnRleHRDb250ZW50ID0gY291bnRyeTsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGlzcGxheVRpZXInKS50ZXh0Q29udGVudCA9IGZvcm1hdFRpZXIodGllcik7CiAgICAgICAgCiAgICAgICAgLy8gQ29uZmlybSBidXR0b24gLSBjb3VsZCBsaW5rIHRvIHRoYW5rIHlvdSBwYWdlIG9yIFdoYXRzQXBwCiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbmZpcm1CdG4nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAvLyBPcHRpb246IE9wZW4gV2hhdHNBcHAgd2l0aCBwcmUtZmlsbGVkIG1lc3NhZ2UKICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGVuY29kZVVSSUNvbXBvbmVudChgSGVsbG8hIEkganVzdCBjb21wbGV0ZWQgcGF5bWVudCBmb3IgbXkgJHtmb3JtYXRUaWVyKHRpZXIpfSBkaWdpdGFsIGNhcmQuXG5cbk5hbWU6ICR7Zmlyc3ROYW1lfSAke2xhc3ROYW1lfVxuRW1haWw6ICR7ZW1haWx9XG5XaGF0c0FwcDogJHt3aGF0c2FwcH1cbkNvdW50cnk6ICR7Y291bnRyeX1gKTsKICAgICAgICAgICAgd2luZG93Lm9wZW4oYGh0dHBzOi8vd2EubWUvMjU2Nzg2NzgxMzY3P3RleHQ9JHttZXNzYWdlfWAsICdfYmxhbmsnKTsKICAgICAgICB9KTsKICAgIDwvc2NyaXB0Pgo8L2JvZHk+CjwvaHRtbD4=","embed":""}
🤝 Virtual Handshake Africa
✅
Verify Your Order
Almost there! Please review your details below.
📋 Order Summary
Name
Loading...
Email
Loading...
WhatsApp
Loading...
Country
Loading...
Card Tier
Loading...
📍 What Happens Next
1
Complete Payment
Send payment to the Mobile Money number below
2
WhatsApp Confirmation
We'll contact you within 24 hours to confirm
3
Card Delivery
Receive your premium digital card within 24-48 hours
📱 Send Payment To
+256-786-781-367 🇺🇬
International Mobile Money Accepted
⚠️ Important: Your order will be processed after payment confirmation. Cards are delivered via WhatsApp. Corrections after delivery: $5 per fix.
virtual.handshake.africa • Building Digital Sovereignty Across Africa