{"js":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8IS0tIOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkAogICAgICAgICBVUkw6IHRhc24uaGFuZHNoYWtlLmFmcmljYS9mbG91cmlzaGluZwogICAgICAgICBQVVJQT1NFOiBJbnRlcmFjdGl2ZSBGbG91cmlzaGluZyBGdW5kIEdhbGxlcnkgLSBQaWNrICYgU3BpbiEKICAgICAgICAgU0lTVEVSIFBBR0UgVE86IC9mbG91cmlzaGluZy1mdW5kICh0aGUgc3RvcnkgcGFnZSkKICAgICAgICAgRkxPVzogUGljayBDYXRlZ29yeSDihpIgU3BpbiDihpIgV2luIFNsb3Qg4oaSIENsYWltIEZvcm0KICAgICAgICAg4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQIC0tPgogICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPgogICAgPHRpdGxlPvCfjLggUGljayBZb3VyIFNsb3QhIHwgVGhlIEZsb3VyaXNoaW5nIEZ1bmQgR2FsbGVyeSB8IFRBU048L3RpdGxlPgogICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkNsYWltIHlvdXIgY29udHJpYnV0b3Igc2xvdCEgUGljayBhIGNhdGVnb3J5LCBzcGluIHRoZSB3aGVlbCwgYW5kIHdpbiB5b3VyIHBsYWNlIGluIFRoZSBGbG91cmlzaGluZyBGdW5kLiBMaW1pdGVkIHNsb3RzIHBlciBxdWFydGVyIC0gYWN0IGZhc3QsIHNpc3RlciEiPgogICAgPGxpbmsgcmVsPSJjYW5vbmljYWwiIGhyZWY9Imh0dHBzOi8vdGFzbi5oYW5kc2hha2UuYWZyaWNhL2Zsb3VyaXNoaW5nIj4KICAgIDxsaW5rIGhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9UGxheWZhaXIrRGlzcGxheTp3Z2h0QDQwMDs1MDA7NjAwOzcwMDs4MDA7OTAwJmZhbWlseT1Db3Jtb3JhbnQrR2FyYW1vbmQ6aXRhbCx3Z2h0QDAsNDAwOzAsNTAwOzAsNjAwOzAsNzAwOzEsNDAwOzEsNTAwJmZhbWlseT1OdW5pdG86d2dodEAzMDA7NDAwOzUwMDs2MDA7NzAwOzgwMCZkaXNwbGF5PXN3YXAiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8c3R5bGU+CiAgICAgICAgOnJvb3QgewogICAgICAgICAgICAtLWZ1c2NoaWE6ICNFOTFFOEI7CiAgICAgICAgICAgIC0tZnVzY2hpYS1kYXJrOiAjQzQxNzdBOwogICAgICAgICAgICAtLW9yYW5nZTogI0ZGNkIzNTsKICAgICAgICAgICAgLS1taW50OiAjM0VCNDg5OwogICAgICAgICAgICAtLW1pbnQtZGFyazogIzJEOUU3NjsKICAgICAgICAgICAgLS1nb2xkOiAjRDRBRjM3OwogICAgICAgICAgICAtLWl2b3J5OiAjRkZGOUY1OwogICAgICAgICAgICAtLWNoYXJjb2FsOiAjMWExYTJlOwogICAgICAgICAgICAtLW5hdnk6ICMxNjIxM2U7CiAgICAgICAgICAgIC0tZGVlcDogIzBmMGYyMzsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgKiB7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgfQogICAgICAgIGh0bWwgeyBzY3JvbGwtYmVoYXZpb3I6IHNtb290aDsgZm9udC1zaXplOiAxOHB4OyB9CiAgICAgICAgCiAgICAgICAgYm9keSB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnTnVuaXRvJywgc2Fucy1zZXJpZjsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcCk7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1pdm9yeSk7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjg7CiAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjFyZW07CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIEJBQ0tHUk9VTkQgKi8KICAgICAgICAuYmctbWFzdGVyIHsKICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgICAgICB0b3A6IDA7IGxlZnQ6IDA7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOyB6LWluZGV4OiAwOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAKICAgICAgICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDIwJSAyMCUsIHJnYmEoMjMzLCAzMCwgMTM5LCAwLjE1KSAwJSwgdHJhbnNwYXJlbnQgNTAlKSwKICAgICAgICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDgwJSA1MCUsIHJnYmEoNjIsIDE4MCwgMTM3LCAwLjEyKSAwJSwgdHJhbnNwYXJlbnQgNDUlKSwKICAgICAgICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDQwJSA4MCUsIHJnYmEoMjEyLCAxNzUsIDU1LCAwLjEpIDAlLCB0cmFuc3BhcmVudCA1MCUpLAogICAgICAgICAgICAgICAgbGluZWFyLWdyYWRpZW50KDE4MGRlZywgdmFyKC0tZGVlcCkgMCUsIHZhcigtLW5hdnkpIDUwJSwgdmFyKC0tY2hhcmNvYWwpIDEwMCUpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBGTE9BVElORyBFTEVNRU5UUyAqLwogICAgICAgIC5mbG9hdGllcy1jb250YWluZXIgewogICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgICAgIHRvcDogMDsgbGVmdDogMDsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsKICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgICAgIHotaW5kZXg6IDI7CiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgfQogICAgICAgIC5mbG9hdHkgewogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS44cmVtOwogICAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgICAgICBhbmltYXRpb246IGZsb2F0eVJpc2UgOXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7CiAgICAgICAgfQogICAgICAgIEBrZXlmcmFtZXMgZmxvYXR5UmlzZSB7CiAgICAgICAgICAgIDAlIHsgb3BhY2l0eTogMDsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMHZoKSBzY2FsZSgwLjUpOyB9CiAgICAgICAgICAgIDEwJSB7IG9wYWNpdHk6IDAuNzsgfQogICAgICAgICAgICA5MCUgeyBvcGFjaXR5OiAwLjc7IH0KICAgICAgICAgICAgMTAwJSB7IG9wYWNpdHk6IDA7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTB2aCkgc2NhbGUoMS4yKTsgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAuY29udGVudC13cmFwcGVyIHsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICB6LWluZGV4OiAxMDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogSEVBREVSICovCiAgICAgICAgLmhlYWRlciB7CiAgICAgICAgICAgIHBhZGRpbmc6IDI1cHg7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICAgICAgICBnYXA6IDE1cHg7CiAgICAgICAgfQogICAgICAgIC5sb2dvIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4ycmVtOwogICAgICAgIH0KICAgICAgICAubG9nby1tYWluIHsgY29sb3I6IHZhcigtLWZ1c2NoaWEpOyBmb250LXdlaWdodDogNzAwOyB9CiAgICAgICAgLmxvZ28tc3ViIHsgY29sb3I6IHZhcigtLW1pbnQpOyBmb250LXdlaWdodDogNjAwOyBtYXJnaW4tbGVmdDogMTBweDsgfQogICAgICAgIC5uYXYtbGlua3MgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBnYXA6IDIwcHg7CiAgICAgICAgfQogICAgICAgIC5uYXYtbGlua3MgYSB7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1nb2xkKTsKICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICAgICAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuM3M7CiAgICAgICAgfQogICAgICAgIC5uYXYtbGlua3MgYTpob3ZlciB7IGNvbG9yOiB2YXIoLS1mdXNjaGlhKTsgfQogICAgICAgIAogICAgICAgIC8qIEhFUk8gKi8KICAgICAgICAuaGVybyB7CiAgICAgICAgICAgIHBhZGRpbmc6IDUwcHggMjVweCA0MHB4OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIG1heC13aWR0aDogODUwcHg7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgIH0KICAgICAgICAuaGVyby1iYWRnZSB7CiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tZnVzY2hpYSksIHZhcigtLW9yYW5nZSkpOwogICAgICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgICAgICAgIHBhZGRpbmc6IDEycHggMzVweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTBweDsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogODAwOwogICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMnB4OwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyNXB4OwogICAgICAgICAgICBhbmltYXRpb246IGJhZGdlUHVsc2UgMi41cyBlYXNlLWluLW91dCBpbmZpbml0ZTsKICAgICAgICB9CiAgICAgICAgQGtleWZyYW1lcyBiYWRnZVB1bHNlIHsKICAgICAgICAgICAgMCUsIDEwMCUgeyBib3gtc2hhZG93OiAwIDhweCAzMHB4IHJnYmEoMjMzLCAzMCwgMTM5LCAwLjQpOyB9CiAgICAgICAgICAgIDUwJSB7IGJveC1zaGFkb3c6IDAgMTJweCA1MHB4IHJnYmEoMjMzLCAzMCwgMTM5LCAwLjYpOyB9CiAgICAgICAgfQogICAgICAgIC5oZXJvIGgxIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMnJlbSwgNnZ3LCAzcmVtKTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tZnVzY2hpYSksIHZhcigtLWdvbGQpLCB2YXIoLS1taW50KSk7CiAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogMjAwJSBhdXRvOwogICAgICAgICAgICAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogdGV4dDsKICAgICAgICAgICAgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IHRyYW5zcGFyZW50OwogICAgICAgICAgICBhbmltYXRpb246IHNoaW1tZXIgNHMgbGluZWFyIGluZmluaXRlOwogICAgICAgIH0KICAgICAgICBAa2V5ZnJhbWVzIHNoaW1tZXIgewogICAgICAgICAgICAwJSB7IGJhY2tncm91bmQtcG9zaXRpb246IDAlIGNlbnRlcjsgfQogICAgICAgICAgICAxMDAlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMjAwJSBjZW50ZXI7IH0KICAgICAgICB9CiAgICAgICAgLmhlcm8tc3VidGl0bGUgewogICAgICAgICAgICBmb250LWZhbWlseTogJ0Nvcm1vcmFudCBHYXJhbW9uZCcsIHNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IDEuNHJlbTsKICAgICAgICAgICAgZm9udC1zdHlsZTogaXRhbGljOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICAgICAgfQogICAgICAgIC5oZXJvLWRlc2MgewogICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNDksIDI0NSwgMC44NSk7CiAgICAgICAgICAgIG1heC13aWR0aDogNzAwcHg7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBTVEFUUyBCQVIgKi8KICAgICAgICAuc3RhdHMtYmFyIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogNDBweDsKICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICAgICAgICBwYWRkaW5nOiAzMHB4IDI1cHg7CiAgICAgICAgICAgIG1heC13aWR0aDogODAwcHg7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgIH0KICAgICAgICAuc3RhdC1pdGVtIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIH0KICAgICAgICAuc3RhdC1udW1iZXIgewogICAgICAgICAgICBmb250LWZhbWlseTogJ1BsYXlmYWlyIERpc3BsYXknLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAyLjVyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1mdXNjaGlhKTsKICAgICAgICB9CiAgICAgICAgLnN0YXQtbGFiZWwgewogICAgICAgICAgICBmb250LXNpemU6IDAuOXJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNDksIDI0NSwgMC42KTsKICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDFweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogSU5TVFJVQ1RJT05TICovCiAgICAgICAgLmluc3RydWN0aW9ucyB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBnYXA6IDMwcHg7CiAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICAgICAgcGFkZGluZzogMjBweCAyNXB4IDQwcHg7CiAgICAgICAgICAgIG1heC13aWR0aDogOTAwcHg7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgIH0KICAgICAgICAuaW5zdHJ1Y3Rpb24tc3RlcCB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogMTJweDsKICAgICAgICB9CiAgICAgICAgLnN0ZXAtbnVtIHsKICAgICAgICAgICAgd2lkdGg6IDM2cHg7CiAgICAgICAgICAgIGhlaWdodDogMzZweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbWludCk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgICAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgIH0KICAgICAgICAuc3RlcC10ZXh0IHsKICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI0OSwgMjQ1LCAwLjgpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBHQUxMRVJZIEdSSUQgKi8KICAgICAgICAuZ2FsbGVyeS1zZWN0aW9uIHsKICAgICAgICAgICAgcGFkZGluZzogNDBweCAyNXB4IDYwcHg7CiAgICAgICAgfQogICAgICAgIC5nYWxsZXJ5LXRpdGxlIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS42cmVtOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMzVweDsKICAgICAgICB9CiAgICAgICAgLmdhbGxlcnktZ3JpZCB7CiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMTgwcHgsIDFmcikpOwogICAgICAgICAgICBnYXA6IDIwcHg7CiAgICAgICAgICAgIG1heC13aWR0aDogMTEwMHB4OwogICAgICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogQ0FURUdPUlkgQ0FSRCAqLwogICAgICAgIC5jYXRlZ29yeS1jYXJkIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjQpOwogICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKDIzMywgMzAsIDEzOSwgMC4yNSk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDI1cHggMjBweDsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB9CiAgICAgICAgLmNhdGVnb3J5LWNhcmQ6aG92ZXI6bm90KC5mdWxsKSB7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZnVzY2hpYSk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtOHB4KTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCAyMHB4IDUwcHggcmdiYSgyMzMsIDMwLCAxMzksIDAuMjUpOwogICAgICAgIH0KICAgICAgICAuY2F0ZWdvcnktY2FyZC5mdWxsIHsKICAgICAgICAgICAgb3BhY2l0eTogMC41OwogICAgICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgICAgIH0KICAgICAgICAuY2F0ZWdvcnktY2FyZC5mdWxsOjphZnRlciB7CiAgICAgICAgICAgIGNvbnRlbnQ6ICdGVUxMJzsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICB0b3A6IDE1cHg7CiAgICAgICAgICAgIHJpZ2h0OiAtMzBweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZnVzY2hpYSk7CiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICAgICAgcGFkZGluZzogNXB4IDQwcHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43cmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogODAwOwogICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7CiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAxcHg7CiAgICAgICAgfQogICAgICAgIC5jYXJkLWljb24gewogICAgICAgICAgICBmb250LXNpemU6IDIuOHJlbTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDsKICAgICAgICB9CiAgICAgICAgLmNhcmQtbmFtZSB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnUGxheWZhaXIgRGlzcGxheScsIHNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IDEuMDVyZW07CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1pdm9yeSk7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICAgICAgfQogICAgICAgIC5jYXJkLXNsb3RzIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogNnB4OwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgICAgIH0KICAgICAgICAuc2xvdC1kb3QgewogICAgICAgICAgICB3aWR0aDogMTJweDsKICAgICAgICAgICAgaGVpZ2h0OiAxMnB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTsKICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tbWludCk7CiAgICAgICAgfQogICAgICAgIC5zbG90LWRvdC5maWxsZWQgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1taW50KTsKICAgICAgICB9CiAgICAgICAgLmNhcmQtc3RhdHVzIHsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjhyZW07CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1taW50KTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICB9CiAgICAgICAgLmNhcmQtc3RhdHVzLndhcm5pbmcgewogICAgICAgICAgICBjb2xvcjogdmFyKC0tb3JhbmdlKTsKICAgICAgICB9CiAgICAgICAgLmNhcmQtc3RhdHVzLmRhbmdlciB7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1mdXNjaGlhKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogU1BJTiBNT0RBTCAqLwogICAgICAgIC5tb2RhbC1vdmVybGF5IHsKICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgICAgICB0b3A6IDA7IGxlZnQ6IDA7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC45Mik7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICB6LWluZGV4OiAxMDAwOwogICAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgICAgICAgICAgIHBhZGRpbmc6IDIwcHg7CiAgICAgICAgfQogICAgICAgIC5tb2RhbC1vdmVybGF5LnNob3cgewogICAgICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOwogICAgICAgIH0KICAgICAgICAubW9kYWwtY29udGVudCB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxNDVkZWcsIHZhcigtLW5hdnkpLCB2YXIoLS1jaGFyY29hbCkpOwogICAgICAgICAgICBib3JkZXI6IDNweCBzb2xpZCB2YXIoLS1mdXNjaGlhKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMzBweDsKICAgICAgICAgICAgcGFkZGluZzogNDVweCA0MHB4OwogICAgICAgICAgICBtYXgtd2lkdGg6IDU1MHB4OwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOCk7CiAgICAgICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjRzIGVhc2U7CiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDkwdmg7CiAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgfQogICAgICAgIC5tb2RhbC1vdmVybGF5LnNob3cgLm1vZGFsLWNvbnRlbnQgewogICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgICAgIH0KICAgICAgICAubW9kYWwtY2xvc2UgewogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIHRvcDogMTVweDsKICAgICAgICAgICAgcmlnaHQ6IDIwcHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMnJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsKICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjNzOwogICAgICAgIH0KICAgICAgICAubW9kYWwtY2xvc2U6aG92ZXIgeyBjb2xvcjogd2hpdGU7IH0KICAgICAgICAKICAgICAgICAubW9kYWwtaWNvbiB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogNHJlbTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDsKICAgICAgICB9CiAgICAgICAgLm1vZGFsLXRpdGxlIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS44cmVtOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICAgICAgfQogICAgICAgIC5tb2RhbC1zdWJ0aXRsZSB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNDksIDI0NSwgMC43KTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjVweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogV0hFRUwgSU4gTU9EQUwgKi8KICAgICAgICAud2hlZWwtY29udGFpbmVyIHsKICAgICAgICAgICAgd2lkdGg6IDIyMHB4OwogICAgICAgICAgICBoZWlnaHQ6IDIyMHB4OwogICAgICAgICAgICBtYXJnaW46IDAgYXV0byAyNXB4OwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgfQogICAgICAgIC53aGVlbCB7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gNXMgY3ViaWMtYmV6aWVyKDAuMTcsIDAuNjcsIDAuMTIsIDAuOTkpOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgNDBweCByZ2JhKDIzMywgMzAsIDEzOSwgMC41KTsKICAgICAgICAgICAgYmFja2dyb3VuZDogY29uaWMtZ3JhZGllbnQoCiAgICAgICAgICAgICAgICB2YXIoLS1taW50KSAwZGVnIDkwZGVnLAogICAgICAgICAgICAgICAgdmFyKC0tZnVzY2hpYSkgOTBkZWcgMTgwZGVnLAogICAgICAgICAgICAgICAgdmFyKC0tZ29sZCkgMTgwZGVnIDI3MGRlZywKICAgICAgICAgICAgICAgIHZhcigtLW9yYW5nZSkgMjcwZGVnIDM2MGRlZwogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICAud2hlZWwtY2VudGVyIHsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICB0b3A6IDUwJTsKICAgICAgICAgICAgbGVmdDogNTAlOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICAgICAgICAgICAgd2lkdGg6IDYwcHg7CiAgICAgICAgICAgIGhlaWdodDogNjBweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tZ29sZCksIHZhcigtLW9yYW5nZSkpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBmb250LXNpemU6IDEuOHJlbTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDI1cHggcmdiYSgyMTIsIDE3NSwgNTUsIDAuNyk7CiAgICAgICAgICAgIHotaW5kZXg6IDEwOwogICAgICAgIH0KICAgICAgICAud2hlZWwtcG9pbnRlciB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgdG9wOiAtMjBweDsKICAgICAgICAgICAgbGVmdDogNTAlOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMi41cmVtOwogICAgICAgICAgICB6LWluZGV4OiAyMDsKICAgICAgICB9CiAgICAgICAgLndoZWVsLWxhYmVsIHsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICBmb250LXNpemU6IDEuNXJlbTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgICAgICAgfQogICAgICAgIC53aGVlbC1sYWJlbC0xIHsgdG9wOiAzMCU7IGxlZnQ6IDcwJTsgfQogICAgICAgIC53aGVlbC1sYWJlbC0yIHsgdG9wOiA3MCU7IGxlZnQ6IDcwJTsgfQogICAgICAgIC53aGVlbC1sYWJlbC0zIHsgdG9wOiA3MCU7IGxlZnQ6IDMwJTsgfQogICAgICAgIC53aGVlbC1sYWJlbC00IHsgdG9wOiAzMCU7IGxlZnQ6IDMwJTsgfQogICAgICAgIAogICAgICAgIC5zcGluLWJ0biB7CiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICAgICAgcGFkZGluZzogMThweCA1MHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1mdXNjaGlhKSwgdmFyKC0tb3JhbmdlKSk7CiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjJyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7CiAgICAgICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTBweDsKICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMnB4OwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgIH0KICAgICAgICAuc3Bpbi1idG46aG92ZXI6bm90KDpkaXNhYmxlZCkgewogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTRweCk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMTVweCA0NXB4IHJnYmEoMjMzLCAzMCwgMTM5LCAwLjUpOwogICAgICAgIH0KICAgICAgICAuc3Bpbi1idG46ZGlzYWJsZWQgewogICAgICAgICAgICBvcGFjaXR5OiAwLjY7CiAgICAgICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIFJFU1VMVCBTVEFURVMgKi8KICAgICAgICAucmVzdWx0LXN0YXRlIHsKICAgICAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgICB9CiAgICAgICAgLnJlc3VsdC1zdGF0ZS5hY3RpdmUgewogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB9CiAgICAgICAgLnJlc3VsdC1pY29uIHsKICAgICAgICAgICAgZm9udC1zaXplOiA1cmVtOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgICAgICAgICBhbmltYXRpb246IGJvdW5jZSAwLjZzIGVhc2UgaW5maW5pdGU7CiAgICAgICAgfQogICAgICAgIEBrZXlmcmFtZXMgYm91bmNlIHsKICAgICAgICAgICAgMCUsIDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH0KICAgICAgICAgICAgNTAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xNXB4KTsgfQogICAgICAgIH0KICAgICAgICAucmVzdWx0LXRpdGxlIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMnJlbTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgICAgICB9CiAgICAgICAgLnJlc3VsdC10aXRsZS53aW4geyBjb2xvcjogdmFyKC0tbWludCk7IH0KICAgICAgICAucmVzdWx0LXRpdGxlLmxvc2UgeyBjb2xvcjogdmFyKC0tb3JhbmdlKTsgfQogICAgICAgIC5yZXN1bHQtbWVzc2FnZSB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4wNXJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNDksIDI0NSwgMC44NSk7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDI1cHg7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjc7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIENMQUlNIEZPUk0gKi8KICAgICAgICAuY2xhaW0tZm9ybSB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDIwcHg7CiAgICAgICAgfQogICAgICAgIC5mb3JtLWdyb3VwIHsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMThweDsKICAgICAgICB9CiAgICAgICAgLmZvcm0tZ3JvdXAgbGFiZWwgewogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjQ5LCAyNDUsIDAuOSk7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgfQogICAgICAgIC5mb3JtLWdyb3VwIGlucHV0LAogICAgICAgIC5mb3JtLWdyb3VwIHRleHRhcmVhIHsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIHBhZGRpbmc6IDE0cHggMThweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjQpOwogICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKDIzMywgMzAsIDEzOSwgMC4yNSk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1pdm9yeSk7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdOdW5pdG8nLCBzYW5zLXNlcmlmOwogICAgICAgIH0KICAgICAgICAuZm9ybS1ncm91cCBpbnB1dDpmb2N1cywKICAgICAgICAuZm9ybS1ncm91cCB0ZXh0YXJlYTpmb2N1cyB7CiAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZnVzY2hpYSk7CiAgICAgICAgfQogICAgICAgIC5mb3JtLWdyb3VwIHRleHRhcmVhIHsKICAgICAgICAgICAgbWluLWhlaWdodDogODBweDsKICAgICAgICAgICAgcmVzaXplOiB2ZXJ0aWNhbDsKICAgICAgICB9CiAgICAgICAgLmNsYWltLWJ0biB7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBwYWRkaW5nOiAxNnB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1taW50KSwgdmFyKC0tbWludC1kYXJrKSk7CiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjFyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7CiAgICAgICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTBweDsKICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgIH0KICAgICAgICAuY2xhaW0tYnRuOmhvdmVyIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zcHgpOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDEycHggMzVweCByZ2JhKDYyLCAxODAsIDEzNywgMC40KTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnRyeS1hZ2Fpbi1idG4gewogICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgICAgIHBhZGRpbmc6IDE2cHggNDBweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWdvbGQpOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTBweDsKICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgICAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgICAgIH0KICAgICAgICAudHJ5LWFnYWluLWJ0bjpob3ZlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWdvbGQpOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tZGVlcCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIFdBSVRMSVNUIFNFQ1RJT04gKi8KICAgICAgICAud2FpdGxpc3Qtc2VjdGlvbiB7CiAgICAgICAgICAgIHBhZGRpbmc6IDUwcHggMjVweDsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCB0cmFuc3BhcmVudCwgcmdiYSg2MiwgMTgwLCAxMzcsIDAuMDUpLCB0cmFuc3BhcmVudCk7CiAgICAgICAgfQogICAgICAgIC53YWl0bGlzdC1ib3ggewogICAgICAgICAgICBtYXgtd2lkdGg6IDYwMHB4OwogICAgICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjQpOwogICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1taW50KTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMjVweDsKICAgICAgICAgICAgcGFkZGluZzogNDBweCAzNXB4OwogICAgICAgIH0KICAgICAgICAud2FpdGxpc3QtdGl0bGUgewogICAgICAgICAgICBmb250LWZhbWlseTogJ1BsYXlmYWlyIERpc3BsYXknLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjVyZW07CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1taW50KTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDsKICAgICAgICB9CiAgICAgICAgLndhaXRsaXN0LWRlc2MgewogICAgICAgICAgICBmb250LXNpemU6IDFyZW07CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjQ5LCAyNDUsIDAuNzUpOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyNXB4OwogICAgICAgIH0KICAgICAgICAud2FpdGxpc3QtYnRuIHsKICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgICAgICBwYWRkaW5nOiAxNnB4IDQwcHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW1pbnQpOwogICAgICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4wNXJlbTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTBweDsKICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgIH0KICAgICAgICAud2FpdGxpc3QtYnRuOmhvdmVyIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zcHgpOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDEycHggMzVweCByZ2JhKDYyLCAxODAsIDEzNywgMC40KTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogRk9PVEVSICovCiAgICAgICAgZm9vdGVyIHsKICAgICAgICAgICAgcGFkZGluZzogNTBweCAyNXB4IDMwcHg7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMjMzLCAzMCwgMTM5LCAwLjE1KTsKICAgICAgICB9CiAgICAgICAgLmZvb3Rlci1saW5rcyB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBnYXA6IDI1cHg7CiAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgICAgICB9CiAgICAgICAgLmZvb3Rlci1saW5rcyBhIHsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNDksIDI0NSwgMC41KTsKICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICAgICAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuM3M7CiAgICAgICAgfQogICAgICAgIC5mb290ZXItbGlua3MgYTpob3ZlciB7IGNvbG9yOiB2YXIoLS1nb2xkKTsgfQogICAgICAgIC5jb3B5cmlnaHQgewogICAgICAgICAgICBmb250LXNpemU6IDAuOHJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNDksIDI0NSwgMC4zKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogQ09ORkVUVEkgKi8KICAgICAgICBAa2V5ZnJhbWVzIGNvbmZldHRpRmFsbCB7CiAgICAgICAgICAgIHRvIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwNXZoKSByb3RhdGUoNzIwZGVnKTsgb3BhY2l0eTogMDsgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBSRVNQT05TSVZFICovCiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7CiAgICAgICAgICAgIGh0bWwgeyBmb250LXNpemU6IDE2cHg7IH0KICAgICAgICAgICAgLmdhbGxlcnktZ3JpZCB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMTUwcHgsIDFmcikpOyB9CiAgICAgICAgICAgIC5tb2RhbC1jb250ZW50IHsgcGFkZGluZzogMzVweCAyNXB4OyB9CiAgICAgICAgICAgIC53aGVlbC1jb250YWluZXIgeyB3aWR0aDogMTgwcHg7IGhlaWdodDogMTgwcHg7IH0KICAgICAgICAgICAgLmluc3RydWN0aW9ucyB7IGdhcDogMjBweDsgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHsKICAgICAgICAgICAgLmdhbGxlcnktZ3JpZCB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7IGdhcDogMTVweDsgfQogICAgICAgICAgICAuY2F0ZWdvcnktY2FyZCB7IHBhZGRpbmc6IDIwcHggMTVweDsgfQogICAgICAgICAgICAuc3RhdHMtYmFyIHsgZ2FwOiAyNXB4OyB9CiAgICAgICAgfQogICAgPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KICAgIDxkaXYgY2xhc3M9ImJnLW1hc3RlciI+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJmbG9hdGllcy1jb250YWluZXIiIGlkPSJmbG9hdGllcyI+PC9kaXY+CiAgICAKICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQtd3JhcHBlciI+CiAgICAgICAgPCEtLSBIRUFERVIgLS0+CiAgICAgICAgPGhlYWRlciBjbGFzcz0iaGVhZGVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9nbyI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibG9nby1tYWluIj7wn4y4IFRoZSBGbG91cmlzaGluZyBGdW5kPC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxvZ28tc3ViIj5HYWxsZXJ5PC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPG5hdiBjbGFzcz0ibmF2LWxpbmtzIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vdGFzbi5oYW5kc2hha2UuYWZyaWNhL2Zsb3VyaXNoaW5nLWZ1bmQiPkxlYXJuIE1vcmU8L2E+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3Rhc24uaGFuZHNoYWtlLmFmcmljYSI+VEFTTiBXaGVlbDwvYT4KICAgICAgICAgICAgPC9uYXY+CiAgICAgICAgPC9oZWFkZXI+CiAgICAgICAgCiAgICAgICAgPCEtLSBIRVJPIC0tPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJoZXJvIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVyby1iYWRnZSI+8J+OsCBRMSAyMDI2IH4gTGltaXRlZCBTbG90cyE8L2Rpdj4KICAgICAgICAgICAgPGgxPlBpY2sgWW91ciBDYXRlZ29yeSAmIFNwaW4hPC9oMT4KICAgICAgICAgICAgPHAgY2xhc3M9Imhlcm8tc3VidGl0bGUiPiJFdmVyeSBzbG90IGlzIGEgc2VlZCB+IHBsYW50IHlvdXJzIHRvZGF5IjwvcD4KICAgICAgICAgICAgPHAgY2xhc3M9Imhlcm8tZGVzYyI+V2FudCB0byBjb250cmlidXRlIHRvIFRoZSBGbG91cmlzaGluZyBGdW5kPyBQaWNrIGEgY2F0ZWdvcnksIHNwaW4gdGhlIHdoZWVsLCBhbmQgY2xhaW0geW91ciBzbG90ISBPbmx5IDxzdHJvbmcgc3R5bGU9ImNvbG9yOiB2YXIoLS1mdXNjaGlhKTsiPjMgY29udHJpYnV0b3JzIHBlciBjYXRlZ29yeTwvc3Ryb25nPiBlYWNoIHF1YXJ0ZXIuIFdoZW4gaXQncyBmdWxsLCBpdCdzIGZ1bGwhPC9wPgogICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAKICAgICAgICA8IS0tIFNUQVRTIEJBUiAtLT4KICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0cy1iYXIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0LWl0ZW0iPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdC1udW1iZXIiIGlkPSJ0b3RhbFNsb3RzIj40NTwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdC1sYWJlbCI+VG90YWwgU2xvdHM8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXQtaXRlbSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0LW51bWJlciIgaWQ9ImZpbGxlZFNsb3RzIj4wPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0LWxhYmVsIj5DbGFpbWVkPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0LWl0ZW0iPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdC1udW1iZXIiIGlkPSJyZW1haW5pbmdTbG90cyI+NDU8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXQtbGFiZWwiPlJlbWFpbmluZzwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICAKICAgICAgICA8IS0tIElOU1RSVUNUSU9OUyAtLT4KICAgICAgICA8ZGl2IGNsYXNzPSJpbnN0cnVjdGlvbnMiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnN0cnVjdGlvbi1zdGVwIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0ZXAtbnVtIj4xPC9kaXY+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3RlcC10ZXh0Ij5QaWNrIGEgY2F0ZWdvcnk8L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnN0cnVjdGlvbi1zdGVwIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0ZXAtbnVtIj4yPC9kaXY+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3RlcC10ZXh0Ij5TcGluIHRoZSB3aGVlbDwvc3Bhbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Imluc3RydWN0aW9uLXN0ZXAiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RlcC1udW0iPjM8L2Rpdj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzdGVwLXRleHQiPldpbj8gQ2xhaW0gaXQhPC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICAKICAgICAgICA8IS0tIEdBTExFUlkgVElUTEUgLS0+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImdhbGxlcnktc2VjdGlvbiI+CiAgICAgICAgICAgIDxoMiBjbGFzcz0iZ2FsbGVyeS10aXRsZSI+8J+Pt++4jyBDaG9vc2UgWW91ciBDYXRlZ29yeTwvaDI+CiAgICAgICAgICAgIAogICAgICAgICAgICA8IS0tIEdBTExFUlkgR1JJRCAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ2FsbGVyeS1ncmlkIiBpZD0iZ2FsbGVyeUdyaWQiPgogICAgICAgICAgICAgICAgPCEtLSBDYXJkcyB3aWxsIGJlIGdlbmVyYXRlZCBieSBKYXZhU2NyaXB0IC0tPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgCiAgICAgICAgPCEtLSBXQUlUTElTVCBTRUNUSU9OIC0tPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJ3YWl0bGlzdC1zZWN0aW9uIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0id2FpdGxpc3QtYm94Ij4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0id2FpdGxpc3QtdGl0bGUiPvCfk4sgR2V0IEFoZWFkIG9mIHRoZSBRdWV1ZSE8L2gyPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9IndhaXRsaXN0LWRlc2MiPkpvaW4gdGhlIHdhaXRsaXN0IG5vdyBhbmQgZ2V0IHlvdXIgUVIgY29kZSByZWFkeSEgV2hlbiBhIHNsb3Qgb3BlbnMsIHlvdSdsbCBiZSBmaXJzdCBpbiBsaW5lLjwvcD4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vdGFzbi5oYW5kc2hha2UuYWZyaWNhL2Zsb3VyaXNoaW5nLXdhaXRsaXN0IiBjbGFzcz0id2FpdGxpc3QtYnRuIj5Kb2luIFdhaXRsaXN0ICsgR2V0IFFSIOKGkjwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9zZWN0aW9uPgogICAgICAgIAogICAgICAgIDwhLS0gRk9PVEVSIC0tPgogICAgICAgIDxmb290ZXI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlci1saW5rcyI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3Rhc24uaGFuZHNoYWtlLmFmcmljYSI+VEFTTiBXaGVlbDwvYT4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vdGFzbi5oYW5kc2hha2UuYWZyaWNhL2Zsb3VyaXNoaW5nLWZ1bmQiPkFib3V0IFRoZSBGdW5kPC9hPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly90YXNuLmhhbmRzaGFrZS5hZnJpY2EvYmFkZ2VzIj7wn4+FIEdldCBZb3VyIEJhZGdlPC9hPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly90YXNuLmhhbmRzaGFrZS5hZnJpY2EvYmlydGhkYXkiPkJpcnRoZGF5IENsdWI8L2E+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3ZpcnR1YWwuaGFuZHNoYWtlLmFmcmljYSI+RGlnaXRhbCBDYXJkczwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjb3B5cmlnaHQiPsKpIDIwMjYgRHluYW1pYyBQYXJhZGlnbXMgJiBNZW50b3JzaGlwIFN1Y2Nlc3MgQWNhZGVtaWVzLiBBIEhlciBXb21hbml0eSBIZWFydGggSW5pdGlhdGl2ZS48L3A+CiAgICAgICAgPC9mb290ZXI+CiAgICA8L2Rpdj4KICAgIAogICAgPCEtLSBTUElOIE1PREFMIC0tPgogICAgPGRpdiBjbGFzcz0ibW9kYWwtb3ZlcmxheSIgaWQ9InNwaW5Nb2RhbCI+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGVudCI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJtb2RhbC1jbG9zZSIgb25jbGljaz0iY2xvc2VNb2RhbCgpIj7inJU8L3NwYW4+CiAgICAgICAgICAgIAogICAgICAgICAgICA8IS0tIFNQSU4gU1RBVEUgLS0+CiAgICAgICAgICAgIDxkaXYgaWQ9InNwaW5TdGF0ZSIgY2xhc3M9InJlc3VsdC1zdGF0ZSBhY3RpdmUiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaWNvbiIgaWQ9ImNhdGVnb3J5SWNvbiI+8J+ShjwvZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJtb2RhbC10aXRsZSIgaWQ9ImNhdGVnb3J5TmFtZSI+U3BhICYgV2VsbG5lc3M8L2gyPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9Im1vZGFsLXN1YnRpdGxlIj5TcGluIHRoZSB3aGVlbCB0byBjbGFpbSB5b3VyIHNsb3QhPC9wPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3aGVlbC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IndoZWVsLXBvaW50ZXIiPvCfk408L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3aGVlbCIgaWQ9Im1vZGFsV2hlZWwiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0id2hlZWwtbGFiZWwgd2hlZWwtbGFiZWwtMSI+4pyoPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0id2hlZWwtbGFiZWwgd2hlZWwtbGFiZWwtMiI+8J+MuDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IndoZWVsLWxhYmVsIHdoZWVsLWxhYmVsLTMiPvCfkqs8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ3aGVlbC1sYWJlbCB3aGVlbC1sYWJlbC00Ij7wn46JPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IndoZWVsLWNlbnRlciI+8J+MuDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InNwaW4tYnRuIiBpZD0ic3BpbkJ0biIgb25jbGljaz0ic3BpbkZvclNsb3QoKSI+8J+OsCBTUElOIFRPIFdJTiE8L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIAogICAgICAgICAgICA8IS0tIFdJTiBTVEFURSAtLT4KICAgICAgICAgICAgPGRpdiBpZD0id2luU3RhdGUiIGNsYXNzPSJyZXN1bHQtc3RhdGUiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmVzdWx0LWljb24iPvCfjok8L2Rpdj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0icmVzdWx0LXRpdGxlIHdpbiI+WU9VIFdPTiBBIFNMT1QhPC9oMj4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJyZXN1bHQtbWVzc2FnZSI+Q29uZ3JhdHVsYXRpb25zLCBzaXN0ZXIhIFlvdSd2ZSBzZWN1cmVkIGEgc3BvdCBpbiA8c3Ryb25nIGlkPSJ3aW5DYXRlZ29yeSI+U3BhICYgV2VsbG5lc3M8L3N0cm9uZz4hIEZpbGwgb3V0IHRoZSBmb3JtIGJlbG93IHRvIGNsYWltIHlvdXIgc2xvdC48L3A+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxmb3JtIGNsYXNzPSJjbGFpbS1mb3JtIiBpZD0iY2xhaW1Gb3JtIiBhY3Rpb249Imh0dHBzOi8vZm9ybXN1Ym1pdC5jby9mbG91cmlzaGluZ2Z1bmRAaGFuZHNoYWtlLmFmcmljYSIgbWV0aG9kPSJQT1NUIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfc3ViamVjdCIgdmFsdWU9IvCfjokgTkVXIFNMT1QgQ0xBSU1FRCB2aWEgR2FsbGVyeSBTcGluISI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iX2NhcHRjaGEiIHZhbHVlPSJmYWxzZSI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iX3RlbXBsYXRlIiB2YWx1ZT0idGFibGUiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Il9uZXh0IiB2YWx1ZT0iaHR0cHM6Ly90YXNuLmhhbmRzaGFrZS5hZnJpY2EvZnVuZC10aGFua3MiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNhdGVnb3J5IiBpZD0iZm9ybUNhdGVnb3J5IiB2YWx1ZT0iIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzb3VyY2UiIHZhbHVlPSJHYWxsZXJ5IFNwaW4gV2luIj4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPllvdXIgTmFtZSAqPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im5hbWUiIHJlcXVpcmVkIHBsYWNlaG9sZGVyPSJGdWxsIG5hbWUiPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+QnVzaW5lc3MgTmFtZSAqPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImJ1c2luZXNzIiByZXF1aXJlZCBwbGFjZWhvbGRlcj0iWW91ciBidXNpbmVzcy9icmFuZCI+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5FbWFpbCAqPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImVtYWlsIiBuYW1lPSJlbWFpbCIgcmVxdWlyZWQgcGxhY2Vob2xkZXI9InlvdXJAZW1haWwuY29tIj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPldoYXRzQXBwICo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGVsIiBuYW1lPSJ3aGF0c2FwcCIgcmVxdWlyZWQgcGxhY2Vob2xkZXI9IisxIHh4eCB4eHggeHh4eCI+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5XaGF0IHdpbGwgeW91IGNvbnRyaWJ1dGU/PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIG5hbWU9ImNvbnRyaWJ1dGlvbiIgcGxhY2Vob2xkZXI9IkJyaWVmbHkgZGVzY3JpYmUgeW91ciBvZmZlci9naWZ0Li4uIj48L3RleHRhcmVhPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iY2xhaW0tYnRuIj7wn4y4IENMQUlNIE1ZIFNMT1QhPC9idXR0b24+CiAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAKICAgICAgICAgICAgPCEtLSBMT1NFIFNUQVRFIC0tPgogICAgICAgICAgICA8ZGl2IGlkPSJsb3NlU3RhdGUiIGNsYXNzPSJyZXN1bHQtc3RhdGUiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmVzdWx0LWljb24iPvCfmKI8L2Rpdj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0icmVzdWx0LXRpdGxlIGxvc2UiPkFsbW9zdCE8L2gyPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9InJlc3VsdC1tZXNzYWdlIj5TbyBjbG9zZSwgc2lzdGVyISBUaGUgd2hlZWwgZGlkbid0IGxhbmQgaW4geW91ciBmYXZvciB0aGlzIHRpbWUuIEJ1dCBkb24ndCBnaXZlIHVwIH4geW91IGdldCA8c3Ryb25nPk9ORSBtb3JlIHNwaW4hPC9zdHJvbmc+PC9wPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJzcGluLWJ0biIgaWQ9InJldHJ5QnRuIiBvbmNsaWNrPSJyZXRyeVNwaW5Gb3JTbG90KCkiPvCfjrAgU1BJTiBBR0FJTiE8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxicj4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InRyeS1hZ2Fpbi1idG4iIG9uY2xpY2s9ImNsb3NlTW9kYWwoKSI+VHJ5IEFub3RoZXIgQ2F0ZWdvcnk8L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIAogICAgICAgICAgICA8IS0tIEZJTkFMIExPU0UgU1RBVEUgLS0+CiAgICAgICAgICAgIDxkaXYgaWQ9ImZpbmFsTG9zZVN0YXRlIiBjbGFzcz0icmVzdWx0LXN0YXRlIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlc3VsdC1pY29uIj7wn5KUPC9kaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InJlc3VsdC10aXRsZSBsb3NlIj5Ob3QgVGhpcyBUaW1lPC9oMj4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJyZXN1bHQtbWVzc2FnZSI+VGhlIHdoZWVsIGhhcyBzcG9rZW4sIGJ1dCB5b3VyIGpvdXJuZXkgaXNuJ3Qgb3ZlciEgSm9pbiB0aGUgUTIgd2FpdGxpc3QgYW5kIGJlIGZpcnN0IGluIGxpbmUgd2hlbiBuZXcgc2xvdHMgb3BlbiBpbiBBcHJpbC48L3A+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vdGFzbi5oYW5kc2hha2UuYWZyaWNhL2Zsb3VyaXNoaW5nLWZ1bmQiIGNsYXNzPSJzcGluLWJ0biIgc3R5bGU9InRleHQtZGVjb3JhdGlvbjogbm9uZTsiPvCfk4sgSm9pbiBXYWl0bGlzdDwvYT4KICAgICAgICAgICAgICAgIDxicj4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InRyeS1hZ2Fpbi1idG4iIG9uY2xpY2s9ImNsb3NlTW9kYWwoKSI+VHJ5IEFub3RoZXIgQ2F0ZWdvcnk8L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIAogICAgPHNjcmlwdD4KICAgICAgICAvLyBDQVRFR09SWSBEQVRBCiAgICAgICAgY29uc3QgY2F0ZWdvcmllcyA9IFsKICAgICAgICAgICAgeyBpZDogJ3NwYScsIGljb246ICfwn5KGJywgbmFtZTogJ1NwYSAmIFdlbGxuZXNzJywgc2xvdHM6IDMsIGZpbGxlZDogMCB9LAogICAgICAgICAgICB7IGlkOiAnbmFpbCcsIGljb246ICfwn5KFJywgbmFtZTogJ05haWwgJiBCZWF1dHknLCBzbG90czogMywgZmlsbGVkOiAwIH0sCiAgICAgICAgICAgIHsgaWQ6ICdoYWlyJywgaWNvbjogJ/CfkocnLCBuYW1lOiAnSGFpciBTZXJ2aWNlcycsIHNsb3RzOiAzLCBmaWxsZWQ6IDAgfSwKICAgICAgICAgICAgeyBpZDogJ21lYWxzJywgaWNvbjogJ/Cfjb3vuI8nLCBuYW1lOiAnTWVhbHMgJiBEaW5pbmcnLCBzbG90czogMywgZmlsbGVkOiAwIH0sCiAgICAgICAgICAgIHsgaWQ6ICdjb2ZmZWUnLCBpY29uOiAn4piVJywgbmFtZTogJ0NvZmZlZSAmIENhZsOpJywgc2xvdHM6IDMsIGZpbGxlZDogMCB9LAogICAgICAgICAgICB7IGlkOiAnZml0bmVzcycsIGljb246ICfwn4+L77iPJywgbmFtZTogJ0ZpdG5lc3MgJiBHeW0nLCBzbG90czogMywgZmlsbGVkOiAwIH0sCiAgICAgICAgICAgIHsgaWQ6ICdjb2FjaGluZycsIGljb246ICfwn46vJywgbmFtZTogJ0NvYWNoaW5nIFNlc3Npb25zJywgc2xvdHM6IDMsIGZpbGxlZDogMSB9LAogICAgICAgICAgICB7IGlkOiAnYm9va3MnLCBpY29uOiAn8J+TmicsIG5hbWU6ICdCb29rcyAmIEd1aWRlcycsIHNsb3RzOiAzLCBmaWxsZWQ6IDAgfSwKICAgICAgICAgICAgeyBpZDogJ2NvdXJzZXMnLCBpY29uOiAn8J+OkycsIG5hbWU6ICdDb3Vyc2VzICYgVHJhaW5pbmcnLCBzbG90czogMywgZmlsbGVkOiAwIH0sCiAgICAgICAgICAgIHsgaWQ6ICdkaWdpdGFsJywgaWNvbjogJ/Cfk7EnLCBuYW1lOiAnRGlnaXRhbCBQcm9kdWN0cycsIHNsb3RzOiAzLCBmaWxsZWQ6IDAgfSwKICAgICAgICAgICAgeyBpZDogJ2Rlc2lnbicsIGljb246ICfwn46oJywgbmFtZTogJ0Rlc2lnbiBTZXJ2aWNlcycsIHNsb3RzOiAzLCBmaWxsZWQ6IDAgfSwKICAgICAgICAgICAgeyBpZDogJ2NvbnN1bHRpbmcnLCBpY29uOiAn8J+TnScsIG5hbWU6ICdDb25zdWx0aW5nIEhvdXJzJywgc2xvdHM6IDMsIGZpbGxlZDogMCB9LAogICAgICAgICAgICB7IGlkOiAnaG90ZWwnLCBpY29uOiAn8J+PqCcsIG5hbWU6ICdIb3RlbCBEaXNjb3VudHMnLCBzbG90czogMywgZmlsbGVkOiAwIH0sCiAgICAgICAgICAgIHsgaWQ6ICdldmVudHMnLCBpY29uOiAn8J+OpCcsIG5hbWU6ICdFdmVudCBUaWNrZXRzJywgc2xvdHM6IDMsIGZpbGxlZDogMCB9LAogICAgICAgICAgICB7IGlkOiAndW5pcXVlJywgaWNvbjogJ+KcqCcsIG5hbWU6ICdTb21ldGhpbmcgVW5pcXVlIScsIHNsb3RzOiAzLCBmaWxsZWQ6IDAgfQogICAgICAgIF07CiAgICAgICAgCiAgICAgICAgbGV0IGN1cnJlbnRDYXRlZ29yeSA9IG51bGw7CiAgICAgICAgbGV0IHNwaW5BdHRlbXB0cyA9IDA7CiAgICAgICAgbGV0IGlzU3Bpbm5pbmcgPSBmYWxzZTsKICAgICAgICAKICAgICAgICAvLyBMT0FEIFNUQVRFIEZST00gTE9DQUxTVE9SQUdFCiAgICAgICAgZnVuY3Rpb24gbG9hZFN0YXRlKCkgewogICAgICAgICAgICBjb25zdCBzYXZlZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdmbG91cmlzaGluZ19nYWxsZXJ5X3ExXzIwMjYnKTsKICAgICAgICAgICAgaWYgKHNhdmVkKSB7CiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShzYXZlZCk7CiAgICAgICAgICAgICAgICBjYXRlZ29yaWVzLmZvckVhY2goKGNhdCwgaSkgPT4gewogICAgICAgICAgICAgICAgICAgIGlmIChkYXRhW2NhdC5pZF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcmllc1tpXS5maWxsZWQgPSBkYXRhW2NhdC5pZF07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdXBkYXRlU3RhdHMoKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gU0FWRSBTVEFURQogICAgICAgIGZ1bmN0aW9uIHNhdmVTdGF0ZSgpIHsKICAgICAgICAgICAgY29uc3QgZGF0YSA9IHt9OwogICAgICAgICAgICBjYXRlZ29yaWVzLmZvckVhY2goY2F0ID0+IHsKICAgICAgICAgICAgICAgIGRhdGFbY2F0LmlkXSA9IGNhdC5maWxsZWQ7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZmxvdXJpc2hpbmdfZ2FsbGVyeV9xMV8yMDI2JywgSlNPTi5zdHJpbmdpZnkoZGF0YSkpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBVUERBVEUgU1RBVFMKICAgICAgICBmdW5jdGlvbiB1cGRhdGVTdGF0cygpIHsKICAgICAgICAgICAgY29uc3QgdG90YWxGaWxsZWQgPSBjYXRlZ29yaWVzLnJlZHVjZSgoc3VtLCBjYXQpID0+IHN1bSArIGNhdC5maWxsZWQsIDApOwogICAgICAgICAgICBjb25zdCB0b3RhbFNsb3RzID0gY2F0ZWdvcmllcy5yZWR1Y2UoKHN1bSwgY2F0KSA9PiBzdW0gKyBjYXQuc2xvdHMsIDApOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmlsbGVkU2xvdHMnKS50ZXh0Q29udGVudCA9IHRvdGFsRmlsbGVkOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVtYWluaW5nU2xvdHMnKS50ZXh0Q29udGVudCA9IHRvdGFsU2xvdHMgLSB0b3RhbEZpbGxlZDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gUkVOREVSIEdBTExFUlkKICAgICAgICBmdW5jdGlvbiByZW5kZXJHYWxsZXJ5KCkgewogICAgICAgICAgICBjb25zdCBncmlkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dhbGxlcnlHcmlkJyk7CiAgICAgICAgICAgIGdyaWQuaW5uZXJIVE1MID0gJyc7CiAgICAgICAgICAgIAogICAgICAgICAgICBjYXRlZ29yaWVzLmZvckVhY2goY2F0ID0+IHsKICAgICAgICAgICAgICAgIGNvbnN0IGlzRnVsbCA9IGNhdC5maWxsZWQgPj0gY2F0LnNsb3RzOwogICAgICAgICAgICAgICAgY29uc3QgcmVtYWluaW5nID0gY2F0LnNsb3RzIC0gY2F0LmZpbGxlZDsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgbGV0IHN0YXR1c0NsYXNzID0gJyc7CiAgICAgICAgICAgICAgICBsZXQgc3RhdHVzVGV4dCA9IGAke3JlbWFpbmluZ30gc2xvdHMgbGVmdGA7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGlmIChyZW1haW5pbmcgPT09IDApIHsKICAgICAgICAgICAgICAgICAgICBzdGF0dXNUZXh0ID0gJ0ZVTEwnOwogICAgICAgICAgICAgICAgICAgIHN0YXR1c0NsYXNzID0gJ2Rhbmdlcic7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlbWFpbmluZyA9PT0gMSkgewogICAgICAgICAgICAgICAgICAgIHN0YXR1c1RleHQgPSAnMSBzbG90IGxlZnQhJzsKICAgICAgICAgICAgICAgICAgICBzdGF0dXNDbGFzcyA9ICdkYW5nZXInOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZW1haW5pbmcgPT09IDIpIHsKICAgICAgICAgICAgICAgICAgICBzdGF0dXNUZXh0ID0gJzIgc2xvdHMgbGVmdCc7CiAgICAgICAgICAgICAgICAgICAgc3RhdHVzQ2xhc3MgPSAnd2FybmluZyc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGNvbnN0IGNhcmQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICAgICAgICAgIGNhcmQuY2xhc3NOYW1lID0gYGNhdGVnb3J5LWNhcmQgJHtpc0Z1bGwgPyAnZnVsbCcgOiAnJ31gOwogICAgICAgICAgICAgICAgY2FyZC5vbmNsaWNrID0gKCkgPT4gIWlzRnVsbCAmJiBvcGVuU3Bpbk1vZGFsKGNhdCk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGNhcmQuaW5uZXJIVE1MID0gYAogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaWNvbiI+JHtjYXQuaWNvbn08L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLW5hbWUiPiR7Y2F0Lm5hbWV9PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1zbG90cyI+CiAgICAgICAgICAgICAgICAgICAgICAgICR7QXJyYXkoY2F0LnNsb3RzKS5maWxsKCkubWFwKChfLCBpKSA9PiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGA8ZGl2IGNsYXNzPSJzbG90LWRvdCAke2kgPCBjYXQuZmlsbGVkID8gJ2ZpbGxlZCcgOiAnJ30iPjwvZGl2PmAKICAgICAgICAgICAgICAgICAgICAgICAgKS5qb2luKCcnKX0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLXN0YXR1cyAke3N0YXR1c0NsYXNzfSI+JHtzdGF0dXNUZXh0fTwvZGl2PgogICAgICAgICAgICAgICAgYDsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgZ3JpZC5hcHBlbmRDaGlsZChjYXJkKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIE9QRU4gU1BJTiBNT0RBTAogICAgICAgIGZ1bmN0aW9uIG9wZW5TcGluTW9kYWwoY2F0ZWdvcnkpIHsKICAgICAgICAgICAgY3VycmVudENhdGVnb3J5ID0gY2F0ZWdvcnk7CiAgICAgICAgICAgIHNwaW5BdHRlbXB0cyA9IDA7CiAgICAgICAgICAgIAogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2F0ZWdvcnlJY29uJykudGV4dENvbnRlbnQgPSBjYXRlZ29yeS5pY29uOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2F0ZWdvcnlOYW1lJykudGV4dENvbnRlbnQgPSBjYXRlZ29yeS5uYW1lOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd2luQ2F0ZWdvcnknKS50ZXh0Q29udGVudCA9IGNhdGVnb3J5Lm5hbWU7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmb3JtQ2F0ZWdvcnknKS52YWx1ZSA9IGNhdGVnb3J5Lm5hbWU7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBSZXNldCBzdGF0ZXMKICAgICAgICAgICAgc2hvd1N0YXRlKCdzcGluU3RhdGUnKTsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NwaW5CdG4nKS5kaXNhYmxlZCA9IGZhbHNlOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3BpbkJ0bicpLnRleHRDb250ZW50ID0gJ/CfjrAgU1BJTiBUTyBXSU4hJzsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vZGFsV2hlZWwnKS5zdHlsZS50cmFuc2Zvcm0gPSAncm90YXRlKDBkZWcpJzsKICAgICAgICAgICAgCiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzcGluTW9kYWwnKS5jbGFzc0xpc3QuYWRkKCdzaG93Jyk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIENMT1NFIE1PREFMCiAgICAgICAgZnVuY3Rpb24gY2xvc2VNb2RhbCgpIHsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NwaW5Nb2RhbCcpLmNsYXNzTGlzdC5yZW1vdmUoJ3Nob3cnKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gU0hPVyBTVEFURQogICAgICAgIGZ1bmN0aW9uIHNob3dTdGF0ZShzdGF0ZUlkKSB7CiAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5yZXN1bHQtc3RhdGUnKS5mb3JFYWNoKHMgPT4gcy5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKSk7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHN0YXRlSWQpLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBTUElOIEZPUiBTTE9UCiAgICAgICAgZnVuY3Rpb24gc3BpbkZvclNsb3QoKSB7CiAgICAgICAgICAgIGlmIChpc1NwaW5uaW5nKSByZXR1cm47CiAgICAgICAgICAgIGlzU3Bpbm5pbmcgPSB0cnVlOwogICAgICAgICAgICBzcGluQXR0ZW1wdHMrKzsKICAgICAgICAgICAgCiAgICAgICAgICAgIGNvbnN0IHdoZWVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vZGFsV2hlZWwnKTsKICAgICAgICAgICAgY29uc3Qgc3BpbkJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzcGluQnRuJyk7CiAgICAgICAgICAgIAogICAgICAgICAgICBzcGluQnRuLmRpc2FibGVkID0gdHJ1ZTsKICAgICAgICAgICAgc3BpbkJ0bi50ZXh0Q29udGVudCA9ICfwn46wIFNwaW5uaW5nLi4uJzsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIFdpbiBwcm9iYWJpbGl0eTogNzAlIGZpcnN0IHNwaW4sIDUwJSByZXRyeQogICAgICAgICAgICBjb25zdCB3aW5DaGFuY2UgPSBzcGluQXR0ZW1wdHMgPT09IDEgPyAwLjcwIDogMC41MDsKICAgICAgICAgICAgY29uc3QgaXNXaW4gPSBNYXRoLnJhbmRvbSgpIDwgd2luQ2hhbmNlOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHJvdGF0aW9uCiAgICAgICAgICAgIGNvbnN0IHNwaW5zID0gNSArIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDMpOwogICAgICAgICAgICBjb25zdCBiYXNlUm90YXRpb24gPSBzcGlucyAqIDM2MDsKICAgICAgICAgICAgY29uc3QgZmluYWxSb3RhdGlvbiA9IGlzV2luID8gYmFzZVJvdGF0aW9uICsgNDUgOiBiYXNlUm90YXRpb24gKyAxODA7IC8vIEdyZWVuID0gd2luLCBQaW5rID0gbG9zZQogICAgICAgICAgICAKICAgICAgICAgICAgd2hlZWwuc3R5bGUudHJhbnNmb3JtID0gYHJvdGF0ZSgke2ZpbmFsUm90YXRpb259ZGVnKWA7CiAgICAgICAgICAgIAogICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKICAgICAgICAgICAgICAgIGlzU3Bpbm5pbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgaWYgKGlzV2luKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gV0lOIQogICAgICAgICAgICAgICAgICAgIGNyZWF0ZUNvbmZldHRpKCk7CiAgICAgICAgICAgICAgICAgICAgc2hvd1N0YXRlKCd3aW5TdGF0ZScpOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBjYXRlZ29yeQogICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDYXRlZ29yeS5maWxsZWQrKzsKICAgICAgICAgICAgICAgICAgICBzYXZlU3RhdGUoKTsKICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGF0cygpOwogICAgICAgICAgICAgICAgICAgIHJlbmRlckdhbGxlcnkoKTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3BpbkF0dGVtcHRzID09PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gRmlyc3QgbG9zcyAtIG9mZmVyIHJldHJ5CiAgICAgICAgICAgICAgICAgICAgc2hvd1N0YXRlKCdsb3NlU3RhdGUnKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgLy8gRmluYWwgbG9zcwogICAgICAgICAgICAgICAgICAgIHNob3dTdGF0ZSgnZmluYWxMb3NlU3RhdGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgNTUwMCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIFJFVFJZIFNQSU4KICAgICAgICBmdW5jdGlvbiByZXRyeVNwaW5Gb3JTbG90KCkgewogICAgICAgICAgICBzaG93U3RhdGUoJ3NwaW5TdGF0ZScpOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3BpbkJ0bicpLmRpc2FibGVkID0gZmFsc2U7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzcGluQnRuJykudGV4dENvbnRlbnQgPSAn8J+OsCBTUElOIFRPIFdJTiEnOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9kYWxXaGVlbCcpLnN0eWxlLnRyYW5zZm9ybSA9ICdyb3RhdGUoMGRlZyknOwogICAgICAgICAgICAKICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBzcGluRm9yU2xvdCgpLCA1MDApOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBDT05GRVRUSQogICAgICAgIGZ1bmN0aW9uIGNyZWF0ZUNvbmZldHRpKCkgewogICAgICAgICAgICBjb25zdCBjb2xvcnMgPSBbJyNFOTFFOEInLCAnI0ZGNkIzNScsICcjM0VCNDg5JywgJyNENEFGMzcnLCAnI2ZmZicsICcjRkY2OUI0J107CiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgODA7IGkrKykgewogICAgICAgICAgICAgICAgY29uc3QgY29uZmV0dGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICAgICAgICAgIGNvbmZldHRpLnN0eWxlLmNzc1RleHQgPSBgCiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgICAgICAgICAgICAgIHdpZHRoOiAkezggKyBNYXRoLnJhbmRvbSgpICogOH1weDsKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICR7OCArIE1hdGgucmFuZG9tKCkgKiA4fXB4OwogICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7Y29sb3JzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGNvbG9ycy5sZW5ndGgpXX07CiAgICAgICAgICAgICAgICAgICAgbGVmdDogJHtNYXRoLnJhbmRvbSgpICogMTAwfXZ3OwogICAgICAgICAgICAgICAgICAgIHRvcDogLTE1cHg7CiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogJHtNYXRoLnJhbmRvbSgpID4gMC41ID8gJzUwJScgOiAnMCd9OwogICAgICAgICAgICAgICAgICAgIHotaW5kZXg6IDIwMDA7CiAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uOiBjb25mZXR0aUZhbGwgJHsyICsgTWF0aC5yYW5kb20oKSAqIDJ9cyBsaW5lYXIgZm9yd2FyZHM7CiAgICAgICAgICAgICAgICBgOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb25mZXR0aSk7CiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IGNvbmZldHRpLnJlbW92ZSgpLCA0MDAwKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBGTE9BVElORyBFTEVNRU5UUwogICAgICAgIGNvbnN0IGZsb2F0aWVzQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zsb2F0aWVzJyk7CiAgICAgICAgY29uc3QgZmxvYXR5RW1vamlzID0gWyfwn4y4JywgJ/CfjLonLCAn4pyoJywgJ/CfkpUnLCAn8J+MtycsICfwn5KQJywgJ/CfposnLCAn8J+MuyddOwogICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMjA7IGkrKykgewogICAgICAgICAgICBjb25zdCBmbG9hdHkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICAgICAgZmxvYXR5LmNsYXNzTmFtZSA9ICdmbG9hdHknOwogICAgICAgICAgICBmbG9hdHkudGV4dENvbnRlbnQgPSBmbG9hdHlFbW9qaXNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogZmxvYXR5RW1vamlzLmxlbmd0aCldOwogICAgICAgICAgICBmbG9hdHkuc3R5bGUubGVmdCA9IE1hdGgucmFuZG9tKCkgKiAxMDAgKyAnJSc7CiAgICAgICAgICAgIGZsb2F0eS5zdHlsZS5hbmltYXRpb25EZWxheSA9IE1hdGgucmFuZG9tKCkgKiA5ICsgJ3MnOwogICAgICAgICAgICBmbG9hdHkuc3R5bGUuYW5pbWF0aW9uRHVyYXRpb24gPSAoNiArIE1hdGgucmFuZG9tKCkgKiA0KSArICdzJzsKICAgICAgICAgICAgZmxvYXRpZXNDb250YWluZXIuYXBwZW5kQ2hpbGQoZmxvYXR5KTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gSU5JVAogICAgICAgIGxvYWRTdGF0ZSgpOwogICAgICAgIHJlbmRlckdhbGxlcnkoKTsKICAgIDwvc2NyaXB0Pgo8L2JvZHk+CjwvaHRtbD4=","embed":""}
🌸 The Flourishing Fund
Gallery
🎰 Q1 2026 ~ Limited Slots!
Pick Your Category & Spin!
"Every slot is a seed ~ plant yours today"
Want to contribute to The Flourishing Fund? Pick a category, spin the wheel, and claim your slot! Only 3 contributors per category each quarter. When it's full, it's full!
45
Total Slots
0
Claimed
45
Remaining
1
Pick a category
2
Spin the wheel
3
Win? Claim it!
🏷️ Choose Your Category
📋 Get Ahead of the Queue!
Join the waitlist now and get your QR code ready! When a slot opens, you'll be first in line.
Join Waitlist + Get QR →
✕
💆
Spa & Wellness
Spin the wheel to claim your slot!
📍
✨
🌸
💫
🎉
🌸
🎉
YOU WON A SLOT!
Congratulations, sister! You've secured a spot in Spa & Wellness! Fill out the form below to claim your slot.
😢
Almost!
So close, sister! The wheel didn't land in your favor this time. But don't give up ~ you get ONE more spin!
💔
Not This Time
The wheel has spoken, but your journey isn't over! Join the Q2 waitlist and be first in line when new slots open in April.
📋 Join Waitlist