- Startseite
- Service
- Händlersuche
Wo kann man die Menzerna Polituren kaufen?
Händler- und Onlineshop- Suche
Sie möchten Menzerna Polituren oder Zubehör erwerben? Unser internationales Händlernetzwerk bietet
zügigen und kompetenten Service weltweit. Mit der Händlersuche finden Sie qualifizierte Menzerna Händler für
Autopolituren, Bootspolituren und feste Polierpasten in Ihrer Nähe.
Finden Sie auch qualifizierte Autopflege Onlineshops mit umfangreichem Menzerna-Sortiment.
CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgICAgCiAgICA8ZGl2IGlkPSJtb2JpbGUtY2hlY2siPjwvZGl2PgogICAgPGRpdiBjbGFzcz0ibW9iaWxlLXJlc2V0LXNlYXJjaCI+CiAgICAgICAgPGJ1dHRvbiBpZD0icmVzZXQtc2VhcmNoIiBjbGFzcz0iYnRuIj5Iw6RuZGxlcnN1Y2hlIGVybmV1dCBudXR6ZW48L2J1dHRvbj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iZmlsdGVyZm9ybS1jb250YWluZXIgZGVhbGVyLXNlYXJjaC1mb3JtLXdyYXAiPgogICAgICAgIDxmb3JtIGRhdGEtYWpheHVybD0iL3NlcnZpY2UvaGFlbmRsZXJzdWNoZT9ub19jYWNoZT0xJmFtcDt0eF9weHBkZWFsZXJzX2FqYXhjYWxsJTVCYWN0aW9uJTVEPWFqYXhDYWxsJmFtcDt0eF9weHBkZWFsZXJzX2FqYXhjYWxsJTVCY29udHJvbGxlciU1RD1EZWFsZXImYW1wO3R5cGU9MTEyMiZhbXA7Y0hhc2g9MDQxYzM3YjIwYzg4NzBhNTg0OGU4YjZlNmYzMzhkZTU5MmExMGY0ODAyZGExNGQzMmYwNTY5NDE4N2Q0ZmRkOCIgaWQ9InNlbGVjdEZvcm0iIGNsYXNzPSJkZWFsZXItc2VhcmNoLWZvcm0iIGFjdGlvbj0iL3NlcnZpY2UvaGFlbmRsZXJzdWNoZT90eF9weHBkZWFsZXJzX2FqYXhjYWxsJTVCYWN0aW9uJTVEPWFqYXhDYWxsJmFtcDt0eF9weHBkZWFsZXJzX2FqYXhjYWxsJTVCY29udHJvbGxlciU1RD1EZWFsZXImYW1wO3R5cGU9MTEyMiZhbXA7Y0hhc2g9MDQxYzM3YjIwYzg4NzBhNTg0OGU4YjZlNmYzMzhkZTU5MmExMGY0ODAyZGExNGQzMmYwNTY5NDE4N2Q0ZmRkOCIgbWV0aG9kPSJwb3N0Ij4KPGRpdj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idHhfcHhwZGVhbGVyc19hamF4Y2FsbFtfX3JlZmVycmVyXVtAZXh0ZW5zaW9uXSIgdmFsdWU9IlB4cGRlYWxlcnMiID4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idHhfcHhwZGVhbGVyc19hamF4Y2FsbFtfX3JlZmVycmVyXVtAY29udHJvbGxlcl0iIHZhbHVlPSJEZWFsZXIiID4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idHhfcHhwZGVhbGVyc19hamF4Y2FsbFtfX3JlZmVycmVyXVtAYWN0aW9uXSIgdmFsdWU9Imxpc3QiID4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idHhfcHhwZGVhbGVyc19hamF4Y2FsbFtfX3JlZmVycmVyXVthcmd1bWVudHNdIiB2YWx1ZT0iWVRvd09udDllYjQ4NjZlMDZkMTA4YmIyNmRiNzIyYTRhMDJiNTUwYjhiNzZjYzkzMDU3N2U4NTYzMmUwYjg5OGQ3MjAxOTYyIiA+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InR4X3B4cGRlYWxlcnNfYWpheGNhbGxbX19yZWZlcnJlcl1bQHJlcXVlc3RdIiB2YWx1ZT0ieyZxdW90O0BleHRlbnNpb24mcXVvdDs6JnF1b3Q7UHhwZGVhbGVycyZxdW90OywmcXVvdDtAY29udHJvbGxlciZxdW90OzomcXVvdDtEZWFsZXImcXVvdDssJnF1b3Q7QGFjdGlvbiZxdW90OzomcXVvdDtsaXN0JnF1b3Q7fTVmNGVmZWJhZTM4ZmIzZDMxYjIwMzc4ODE4ZGFiNDk2M2MyNDMxMzEyY2ZhZTI4YWFhYTUwYzZkZTg3ODBiZWUiID4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idHhfcHhwZGVhbGVyc19hamF4Y2FsbFtfX3RydXN0ZWRQcm9wZXJ0aWVzXSIgdmFsdWU9InsmcXVvdDtjYXRlZ29yaWVzJnF1b3Q7OlsxLDEsMV19ODMyNDJjNmJmZDMyNzFhZmMxY2ZhMmQwNzlhMzY0Y2MwNmE3YmQ1MmEwNDUxM2JmNDdlZDIyNzA5YTVmNjlhYyIgPgo8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvY2F0aW9uLXNlYXJjaC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtMTIiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJjb3VudHJ5LXNlbGVjdCIgY2xhc3M9InNlbGVjdC1sYWJlbCBmb3JtLWJpZy1sYWJlbCI+Qml0dGUgZ2ViZW4gU2llIElocmVuIFN0YW5kb3J0IGFuPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93IGxvY2F0aW9uLXNlYXJjaC1yb3ciPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC02Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LXdyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBuYW1lPSJ0eF9weHBkZWFsZXJzX2FqYXhjYWxsW2NvdW50cnldIiBpZD0iY291bnRyeS1zZWxlY3QiIGNsYXNzPSJmb3JtLWNvbnRyb2wiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IiI+Qml0dGUgd8OkaGxlbiAuLi48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNTQiIGRhdGEtbmFtZT0iRGV1dHNjaGxhbmQiIGRhdGEtY2F0ZWdvcmllcz0iMSwyLDMiIGRhdGEtaXNvMj0iREUiPkRldXRzY2hsYW5kPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjYyIiBkYXRhLW5hbWU9IsOEZ3lwdGVuIiBkYXRhLWNhdGVnb3JpZXM9IjEiIGRhdGEtaXNvMj0iRUciPsOEZ3lwdGVuPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjYiIGRhdGEtbmFtZT0iQWxiYW5pZW4iIGRhdGEtY2F0ZWdvcmllcz0iMSIgZGF0YS1pc28yPSJBTCI+QWxiYW5pZW48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTEiIGRhdGEtbmFtZT0iQXJnZW50aW5pZW4iIGRhdGEtY2F0ZWdvcmllcz0iMSwyIiBkYXRhLWlzbzI9IkFSIj5BcmdlbnRpbmllbjwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxNCIgZGF0YS1uYW1lPSJBdXN0cmFsaWVuIiBkYXRhLWNhdGVnb3JpZXM9IjEsMyIgZGF0YS1pc28yPSJBVSI+QXVzdHJhbGllbjwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIzNCIgZGF0YS1uYW1lPSJCZWxhcnVzIiBkYXRhLWNhdGVnb3JpZXM9IjEiIGRhdGEtaXNvMj0iQlkiPkJlbGFydXM8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMjAiIGRhdGEtbmFtZT0iQmVsZ2llbiIgZGF0YS1jYXRlZ29yaWVzPSIxLDIsMyIgZGF0YS1pc28yPSJCRSI+QmVsZ2llbjwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIyOSIgZGF0YS1uYW1lPSJCcmFzaWxpZW4iIGRhdGEtY2F0ZWdvcmllcz0iMSwzIiBkYXRhLWlzbzI9IkJSIj5CcmFzaWxpZW48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMjIiIGRhdGEtbmFtZT0iQnVsZ2FyaWVuIiBkYXRhLWNhdGVnb3JpZXM9IjEsMiwzIiBkYXRhLWlzbzI9IkJHIj5CdWxnYXJpZW48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNDQiIGRhdGEtbmFtZT0iQ2hpbGUiIGRhdGEtY2F0ZWdvcmllcz0iMSIgZGF0YS1pc28yPSJDTCI+Q2hpbGU8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNDYiIGRhdGEtbmFtZT0iQ2hpbmEiIGRhdGEtY2F0ZWdvcmllcz0iMSwzIiBkYXRhLWlzbzI9IkNOIj5DaGluYTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI0OCIgZGF0YS1uYW1lPSJDb3N0YSBSaWNhIiBkYXRhLWNhdGVnb3JpZXM9IjEiIGRhdGEtaXNvMj0iQ1IiPkNvc3RhIFJpY2E8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNTYiIGRhdGEtbmFtZT0iRMOkbmVtYXJrIiBkYXRhLWNhdGVnb3JpZXM9IjEiIGRhdGEtaXNvMj0iREsiPkTDpG5lbWFyazwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI2MSIgZGF0YS1uYW1lPSJFc3RsYW5kIiBkYXRhLWNhdGVnb3JpZXM9IjEsMyIgZGF0YS1pc28yPSJFRSI+RXN0bGFuZDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI2NyIgZGF0YS1uYW1lPSJGaW5ubGFuZCIgZGF0YS1jYXRlZ29yaWVzPSIxLDIiIGRhdGEtaXNvMj0iRkkiPkZpbm5sYW5kPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjcyIiBkYXRhLW5hbWU9IkZyYW5rcmVpY2giIGRhdGEtY2F0ZWdvcmllcz0iMSwyLDMiIGRhdGEtaXNvMj0iRlIiPkZyYW5rcmVpY2g8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iODUiIGRhdGEtbmFtZT0iR3JpZWNoZW5sYW5kIiBkYXRhLWNhdGVnb3JpZXM9IjEsMiIgZGF0YS1pc28yPSJHUiI+R3JpZWNoZW5sYW5kPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ijk5IiBkYXRhLW5hbWU9IkluZGllbiIgZGF0YS1jYXRlZ29yaWVzPSIxIiBkYXRhLWlzbzI9IklOIj5JbmRpZW48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iOTYiIGRhdGEtbmFtZT0iSW5kb25lc2llbiIgZGF0YS1jYXRlZ29yaWVzPSIxLDIiIGRhdGEtaXNvMj0iSUQiPkluZG9uZXNpZW48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTAxIiBkYXRhLW5hbWU9IklyYWsiIGRhdGEtY2F0ZWdvcmllcz0iMSIgZGF0YS1pc28yPSJJUSI+SXJhazwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI5NyIgZGF0YS1uYW1lPSJJcmxhbmQiIGRhdGEtY2F0ZWdvcmllcz0iMSwyIiBkYXRhLWlzbzI9IklFIj5JcmxhbmQ8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTA0IiBkYXRhLW5hbWU9Ikl0YWxpZW4iIGRhdGEtY2F0ZWdvcmllcz0iMSwyLDMiIGRhdGEtaXNvMj0iSVQiPkl0YWxpZW48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTA3IiBkYXRhLW5hbWU9IkphcGFuIiBkYXRhLWNhdGVnb3JpZXM9IjEsMiwzIiBkYXRhLWlzbzI9IkpQIj5KYXBhbjwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIzNiIgZGF0YS1uYW1lPSJLYW5hZGEiIGRhdGEtY2F0ZWdvcmllcz0iMSwyLDMiIGRhdGEtaXNvMj0iQ0EiPkthbmFkYTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxMTgiIGRhdGEtbmFtZT0iS2FzYWNoc3RhbiIgZGF0YS1jYXRlZ29yaWVzPSIxIiBkYXRhLWlzbzI9IktaIj5LYXNhY2hzdGFuPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEwOSIgZGF0YS1uYW1lPSJLaXJnaXNpc3RhbiIgZGF0YS1jYXRlZ29yaWVzPSIxLDMiIGRhdGEtaXNvMj0iS0ciPktpcmdpc2lzdGFuPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjQ3IiBkYXRhLW5hbWU9IktvbHVtYmllbiIgZGF0YS1jYXRlZ29yaWVzPSIxIiBkYXRhLWlzbzI9IkNPIj5Lb2x1bWJpZW48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTE1IiBkYXRhLW5hbWU9IktvcmVhLCBSZXB1YmxpayIgZGF0YS1jYXRlZ29yaWVzPSIxIiBkYXRhLWlzbzI9IktSIj5Lb3JlYSwgUmVwdWJsaWs8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iOTMiIGRhdGEtbmFtZT0iS3JvYXRpZW4iIGRhdGEtY2F0ZWdvcmllcz0iMSwyLDMiIGRhdGEtaXNvMj0iSFIiPktyb2F0aWVuPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjExNiIgZGF0YS1uYW1lPSJLdXdhaXQiIGRhdGEtY2F0ZWdvcmllcz0iMSIgZGF0YS1pc28yPSJLVyI+S3V3YWl0PC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEyOCIgZGF0YS1uYW1lPSJMZXR0bGFuZCIgZGF0YS1jYXRlZ29yaWVzPSIxLDMiIGRhdGEtaXNvMj0iTFYiPkxldHRsYW5kPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEyMCIgZGF0YS1uYW1lPSJMaWJhbm9uIiBkYXRhLWNhdGVnb3JpZXM9IjEsMiwzIiBkYXRhLWlzbzI9IkxCIj5MaWJhbm9uPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEyNiIgZGF0YS1uYW1lPSJMaXRhdWVuIiBkYXRhLWNhdGVnb3JpZXM9IjEsMyIgZGF0YS1pc28yPSJMVCI+TGl0YXVlbjwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxMjciIGRhdGEtbmFtZT0iTHV4ZW1idXJnIiBkYXRhLWNhdGVnb3JpZXM9IjIiIGRhdGEtaXNvMj0iTFUiPkx1eGVtYnVyZzwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxNDkiIGRhdGEtbmFtZT0iTWFsYXlzaWEiIGRhdGEtY2F0ZWdvcmllcz0iMSIgZGF0YS1pc28yPSJNWSI+TWFsYXlzaWE8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTQ0IiBkYXRhLW5hbWU9Ik1hbHRhIiBkYXRhLWNhdGVnb3JpZXM9IjEiIGRhdGEtaXNvMj0iTVQiPk1hbHRhPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEzMCIgZGF0YS1uYW1lPSJNYXJva2tvIiBkYXRhLWNhdGVnb3JpZXM9IjEiIGRhdGEtaXNvMj0iTUEiPk1hcm9ra288L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTQ4IiBkYXRhLW5hbWU9Ik1leGlrbyIgZGF0YS1jYXRlZ29yaWVzPSIxLDIiIGRhdGEtaXNvMj0iTVgiPk1leGlrbzwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxNjIiIGRhdGEtbmFtZT0iTmV1c2VlbGFuZCIgZGF0YS1jYXRlZ29yaWVzPSIxLDIiIGRhdGEtaXNvMj0iTloiPk5ldXNlZWxhbmQ8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTU3IiBkYXRhLW5hbWU9Ik5pZWRlcmxhbmRlIiBkYXRhLWNhdGVnb3JpZXM9IjEsMiwzIiBkYXRhLWlzbzI9Ik5MIj5OaWVkZXJsYW5kZTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxMzUiIGRhdGEtbmFtZT0iTm9yZG1hemVkb25pZW4iIGRhdGEtY2F0ZWdvcmllcz0iMSIgZGF0YS1pc28yPSJNSyI+Tm9yZG1hemVkb25pZW48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTU4IiBkYXRhLW5hbWU9Ik5vcndlZ2VuIiBkYXRhLWNhdGVnb3JpZXM9IjEsMiIgZGF0YS1pc28yPSJOTyI+Tm9yd2VnZW48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTMiIGRhdGEtbmFtZT0iw5ZzdGVycmVpY2giIGRhdGEtY2F0ZWdvcmllcz0iMSwyLDMiIGRhdGEtaXNvMj0iQVQiPsOWc3RlcnJlaWNoPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjE2NCIgZGF0YS1uYW1lPSJQYW5hbWEiIGRhdGEtY2F0ZWdvcmllcz0iMSIgZGF0YS1pc28yPSJQQSI+UGFuYW1hPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjE3NiIgZGF0YS1uYW1lPSJQYXJhZ3VheSIgZGF0YS1jYXRlZ29yaWVzPSIxIiBkYXRhLWlzbzI9IlBZIj5QYXJhZ3VheTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxNjgiIGRhdGEtbmFtZT0iUGhpbGlwcGluZW4iIGRhdGEtY2F0ZWdvcmllcz0iMSwzIiBkYXRhLWlzbzI9IlBIIj5QaGlsaXBwaW5lbjwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxNzAiIGRhdGEtbmFtZT0iUG9sZW4iIGRhdGEtY2F0ZWdvcmllcz0iMSwyLDMiIGRhdGEtaXNvMj0iUEwiPlBvbGVuPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjE3NCIgZGF0YS1uYW1lPSJQb3J0dWdhbCIgZGF0YS1jYXRlZ29yaWVzPSIxIiBkYXRhLWlzbzI9IlBUIj5Qb3J0dWdhbDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxNzMiIGRhdGEtbmFtZT0iUHVlcnRvIFJpY28iIGRhdGEtY2F0ZWdvcmllcz0iMSwyLDMiIGRhdGEtaXNvMj0iUFIiPlB1ZXJ0byBSaWNvPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjE3OSIgZGF0YS1uYW1lPSJSdW3DpG5pZW4iIGRhdGEtY2F0ZWdvcmllcz0iMSIgZGF0YS1pc28yPSJSTyI+UnVtw6RuaWVuPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjE4MCIgZGF0YS1uYW1lPSJSdXNzaXNjaGUgRsO2ZGVyYXRpb24iIGRhdGEtY2F0ZWdvcmllcz0iMSIgZGF0YS1pc28yPSJSVSI+UnVzc2lzY2hlIEbDtmRlcmF0aW9uPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjE4MiIgZGF0YS1uYW1lPSJTYXVkaS1BcmFiaWVuIiBkYXRhLWNhdGVnb3JpZXM9IjEsMiIgZGF0YS1pc28yPSJTQSI+U2F1ZGktQXJhYmllbjwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxODYiIGRhdGEtbmFtZT0iU2Nod2VkZW4iIGRhdGEtY2F0ZWdvcmllcz0iMSwyIiBkYXRhLWlzbzI9IlNFIj5TY2h3ZWRlbjwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI0MSIgZGF0YS1uYW1lPSJTY2h3ZWl6IiBkYXRhLWNhdGVnb3JpZXM9IjEsMyIgZGF0YS1pc28yPSJDSCI+U2Nod2Vpejwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIyNDMiIGRhdGEtbmFtZT0iU2VyYmllbiIgZGF0YS1jYXRlZ29yaWVzPSIxIiBkYXRhLWlzbzI9IlJTIj5TZXJiaWVuPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjE4NyIgZGF0YS1uYW1lPSJTaW5nYXB1ciIgZGF0YS1jYXRlZ29yaWVzPSIxLDIiIGRhdGEtaXNvMj0iU0ciPlNpbmdhcHVyPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjE5MSIgZGF0YS1uYW1lPSJTbG93YWtlaSIgZGF0YS1jYXRlZ29yaWVzPSIxLDMiIGRhdGEtaXNvMj0iU0siPlNsb3dha2VpPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjE4OSIgZGF0YS1uYW1lPSJTbG93ZW5pZW4iIGRhdGEtY2F0ZWdvcmllcz0iMSIgZGF0YS1pc28yPSJTSSI+U2xvd2VuaWVuPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjY1IiBkYXRhLW5hbWU9IlNwYW5pZW4iIGRhdGEtY2F0ZWdvcmllcz0iMSwyLDMiIGRhdGEtaXNvMj0iRVMiPlNwYW5pZW48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTIzIiBkYXRhLW5hbWU9IlNyaSBMYW5rYSIgZGF0YS1jYXRlZ29yaWVzPSIxIiBkYXRhLWlzbzI9IkxLIj5TcmkgTGFua2E8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMjM1IiBkYXRhLW5hbWU9IlPDvGRhZnJpa2EiIGRhdGEtY2F0ZWdvcmllcz0iMSwyIiBkYXRhLWlzbzI9IlpBIj5Tw7xkYWZyaWthPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjE5OSIgZGF0YS1uYW1lPSJTeXJpZW4sIEFyYWJpc2NoZSBSZXB1YmxpayIgZGF0YS1jYXRlZ29yaWVzPSIxIiBkYXRhLWlzbzI9IlNZIj5TeXJpZW4sIEFyYWJpc2NoZSBSZXB1Ymxpazwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIyMDUiIGRhdGEtbmFtZT0iVGhhaWxhbmQiIGRhdGEtY2F0ZWdvcmllcz0iMSIgZGF0YS1pc28yPSJUSCI+VGhhaWxhbmQ8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNTMiIGRhdGEtbmFtZT0iVHNjaGVjaGllbiIgZGF0YS1jYXRlZ29yaWVzPSIxIiBkYXRhLWlzbzI9IkNaIj5Uc2NoZWNoaWVuPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjIxMiIgZGF0YS1uYW1lPSJUw7xya2VpIiBkYXRhLWNhdGVnb3JpZXM9IjEsMiIgZGF0YS1pc28yPSJUUiI+VMO8cmtlaTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIyMTciIGRhdGEtbmFtZT0iVWtyYWluZSIgZGF0YS1jYXRlZ29yaWVzPSIxLDIiIGRhdGEtaXNvMj0iVUEiPlVrcmFpbmU8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iOTUiIGRhdGEtbmFtZT0iVW5nYXJuIiBkYXRhLWNhdGVnb3JpZXM9IjEsMiIgZGF0YS1pc28yPSJIVSI+VW5nYXJuPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjIyMSIgZGF0YS1uYW1lPSJVcnVndWF5IiBkYXRhLWNhdGVnb3JpZXM9IjEiIGRhdGEtaXNvMj0iVVkiPlVydWd1YXk8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMjIyIiBkYXRhLW5hbWU9IlVzYmVraXN0YW4iIGRhdGEtY2F0ZWdvcmllcz0iMSwzIiBkYXRhLWlzbzI9IlVaIj5Vc2Jla2lzdGFuPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjIyNSIgZGF0YS1uYW1lPSJWZW5lenVlbGEsIEJvbGl2YXJpc2NoZSBSZXB1YmxpayIgZGF0YS1jYXRlZ29yaWVzPSIxIiBkYXRhLWlzbzI9IlZFIj5WZW5lenVlbGEsIEJvbGl2YXJpc2NoZSBSZXB1Ymxpazwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIyIiBkYXRhLW5hbWU9IlZlcmVpbmlndGUgQXJhYmlzY2hlIEVtaXJhdGUiIGRhdGEtY2F0ZWdvcmllcz0iMSwyIiBkYXRhLWlzbzI9IkFFIj5WZXJlaW5pZ3RlIEFyYWJpc2NoZSBFbWlyYXRlPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ijc0IiBkYXRhLW5hbWU9IlZlcmVpbmlndGVzIEvDtm5pZ3JlaWNoIiBkYXRhLWNhdGVnb3JpZXM9IjEsMiwzIiBkYXRhLWlzbzI9IkdCIj5WZXJlaW5pZ3RlcyBLw7ZuaWdyZWljaDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIyMjAiIGRhdGEtbmFtZT0iVmVyZWluaWd0ZSBTdGFhdGVuIiBkYXRhLWNhdGVnb3JpZXM9IjEsMiwzIiBkYXRhLWlzbzI9IlVTIj5WZXJlaW5pZ3RlIFN0YWF0ZW48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMjI4IiBkYXRhLW5hbWU9IlZpZXRuYW0iIGRhdGEtY2F0ZWdvcmllcz0iMSIgZGF0YS1pc28yPSJWTiI+VmlldG5hbTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC02Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9jYXRpb24td3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjaGVja2JveC13cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJjYi1sb2NhdGlvbiIgY2xhc3M9ImNiLWxhYmVsIGN1c3RvbS1jaGVja2JveCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFrdHVlbGxlbiBTdGFuZG9ydCB2ZXJ3ZW5kZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iIiB2YWx1ZT0iIiAvPjxpbnB1dCBkYXRhLWFqYXh1cmw9Ii9zZXJ2aWNlL2hhZW5kbGVyc3VjaGU/bm9fY2FjaGU9MSZhbXA7dHhfcHhwZGVhbGVyc19hamF4Y2FsbCU1QmFjdGlvbiU1RD1nZXRDb3VudHJ5Q29kZUFqYXgmYW1wO3R4X3B4cGRlYWxlcnNfYWpheGNhbGwlNUJjb250cm9sbGVyJTVEPURlYWxlciZhbXA7dHlwZT0xMTIyJmFtcDtjSGFzaD02MzkzMjFhNzZlMThhMWY2NTRkOTljODMwNzA5N2MzZjVmNmE2NjdmYzI2NmZiOTk2YjczZDM2MjBmMWUwYjY0IiBpZD0iY2ItbG9jYXRpb24iIHR5cGU9ImNoZWNrYm94IiBuYW1lPSIiIHZhbHVlPSIiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjaGVja21hcmsiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJnZW9sb2NhdGlvbi1sb2FkIiBzdHlsZT0iZGlzcGxheTpub25lOyI+U3RhbmRvcnQgd2lyZCBlcm1pdHRlbHQgLi4uPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJnZW9sb2NhdGlvbi1lcnJvciIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPkJpdHRlIGVybGF1YmVuIFNpZSBkZW4gWnVncmlmZiBhdWYgSWhyZW4gU3RhbmRvcnQ8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhdGVnb3J5LXNlYXJjaC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtMTIiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9ImZvcm0tYmlnLWxhYmVsIj5Xw6RobGVuIFNpZSBJaHIgUHJvZHVrdCBhdXM8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXRlZ29yaWVzLWNiLWNvbnRhaW5lciIgZGF0YS1hbGwtY2F0ZWdvcnktdWlkcz0iMSwyLDMiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXQtY2IgY2hlY2tib3gtd3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9ImNiLUF1dG9wb2xpdHVyZW4iIGNsYXNzPSJjYi1sYWJlbCBjdXN0b20tY2hlY2tib3giPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXV0b3BvbGl0dXJlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idHhfcHhwZGVhbGVyc19hamF4Y2FsbFtjYXRlZ29yaWVzXSIgdmFsdWU9IiIgLz48aW5wdXQgaWQ9ImNiLUF1dG9wb2xpdHVyZW4iIGNsYXNzPSJjYXRlZ29yeS1jYiBlbmFibGVkIiB0eXBlPSJjaGVja2JveCIgbmFtZT0idHhfcHhwZGVhbGVyc19hamF4Y2FsbFtjYXRlZ29yaWVzXVtdIiB2YWx1ZT0iMSIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjaGVja21hcmsiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXQtY2IgY2hlY2tib3gtd3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9ImNiLUJvb3RzcG9saXR1cmVuIiBjbGFzcz0iY2ItbGFiZWwgY3VzdG9tLWNoZWNrYm94Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJvb3RzcG9saXR1cmVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9ImNiLUJvb3RzcG9saXR1cmVuIiBjbGFzcz0iY2F0ZWdvcnktY2IgZW5hYmxlZCIgdHlwZT0iY2hlY2tib3giIG5hbWU9InR4X3B4cGRlYWxlcnNfYWpheGNhbGxbY2F0ZWdvcmllc11bXSIgdmFsdWU9IjIiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY2hlY2ttYXJrIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2F0LWNiIGNoZWNrYm94LXdyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJjYi1GZXN0cGFzdGVuIiBjbGFzcz0iY2ItbGFiZWwgY3VzdG9tLWNoZWNrYm94Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZlc3RwYXN0ZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD0iY2ItRmVzdHBhc3RlbiIgY2xhc3M9ImNhdGVnb3J5LWNiIGVuYWJsZWQiIHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ0eF9weHBkZWFsZXJzX2FqYXhjYWxsW2NhdGVnb3JpZXNdW10iIHZhbHVlPSIzIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNoZWNrbWFyayI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJub3RpZmllci1jb250YWluZXIiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtMTIiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJub3RpZmllciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PiYjNDJIaW53ZWlzOiBNZW56ZXJuYSBQb2xpdHVyZW4gc2luZCBmw7xyIGdld2VyYmxpY2hlIEFud2VuZGVyIGtvbnpwaWVydC48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+TWl0IEtsaWNrIGF1ZiAmcXVvdDtKZXR6dCBIw6RuZGxlciBzdWNoZW4mcXVvdDsgYmVzdMOkdGlnZSBpY2gsIGRhc3MgaWNoIHp1IGRpZXNlciBWZXJicmF1Y2hlcmdydXBwZSBnZWjDtnJlLjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3VibWl0LWJ1dHRvbi1jb250YWluZXIiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtMTIiPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJzdWJtaXQtYnRuIGJ0biIgdHlwZT0ic3VibWl0IiBuYW1lPSIiIHZhbHVlPSIiPkpldHp0IEjDpG5kbGVyIHN1Y2hlbjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZm9ybT4KICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRlYWxlci1zZWFyY2gtbWFwLXdyYXAiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGVhbGVyLXNlYXJjaC1tYXAiIGlkPSJnbWFwIj48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAKCiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9InJlc3VsdC1jb250YWluZXIgZGVhbGVyLXNlYXJjaC1yZXN1bHQiPgogICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC0xMiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtYXAtaGVhZGxpbmUiICBzdHlsZT0iZGlzcGxheTogbm9uZTsiPlF1YWxpZml6aWVydGUgSMOkbmRsZXIgdW5kIGF1dG9yaXNpZXJ0ZSBPbmxpbmUtU2hvcHMgaW4mbmJzcDs8c3BhbiBpZD0ibWFwLWhlYWRsaW5lLWNvdW50cnkiPjwvc3Bhbj48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi13cmFwIGRlYWxlci1zZWFyY2gtYWNjb3JkaW9ucyI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFuZWwtZ3JvdXAiIGlkPSJhY2NvcmRpb24iIHJvbGU9InRhYmxpc3QiIGFyaWEtbXVsdGlzZWxlY3RhYmxlPSJ0cnVlIj4KCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGlkPSJjb250YWN0LWhlYWRsaW5lIiBkYXRhLXN0cmluZz0iS29udGFrdCI+PC9kaXY+CiAgICA8ZGl2IGlkPSJjYXRlZ29yaWVzLWhlYWRsaW5lIiBkYXRhLXN0cmluZz0iRGFzIEjDpG5kbGVyLVNvcnRpbWVudCB1bWZhc3N0IGZvbGdlbmRlIFByb2R1a3RrYXRlZ29yaWVuOiI+PC9kaXY+CiAgICA8ZGl2IGlkPSJ0ZXh0LWxpbmstb25saW5lc2hvcCIgZGF0YS1zdHJpbmc9Ilp1bSBPbmxpbmUtU2hvcCBkZXMgSMOkbmRsZXJzIj48L2Rpdj4KICAgIDxkaXYgaWQ9InRleHQtbGluay13ZWJzaXRlIiBkYXRhLXN0cmluZz0iWnVyIFdlYnNpdGUgZGVzIEjDpG5kbGVycyI+PC9kaXY+CiAgICA8ZGl2IGlkPSJ0ZXh0LWNsb3NlLWFjY29yZGlvbiIgZGF0YS1zdHJpbmc9IkjDpG5kbGVyLUluZm9ybWF0aW9uIHNjaGxpZcOfZW4iPjwvZGl2PgogICAgPGRpdiBpZD0iZGVlcGxpbmsiIGRhdGEtc3RyaW5nPSIiPjwvZGl2PgogICAgCiAgICAKICAgICAgICAgICAgPHNjcmlwdCBhc3luYyBkZWZlciBzcmM9Imh0dHBzOi8vbWFwcy5nb29nbGVhcGlzLmNvbS9tYXBzL2FwaS9qcz9rZXk9QUl6YVN5Q3U5aFpPaFBtYnhNUUhaeTN2cDZoQlo2S0d4V0Vrd1E0JmxpYnJhcmllcz1wbGFjZXMmY2FsbGJhY2s9aW5pdE1hcCI+PC9zY3JpcHQ+CiAgICAgICAgICAgIDxzY3JpcHQ+CiAgICAgICAgICAgICAgICB2YXIgbWFwOwogICAgICAgICAgICAgICAgdmFyIGdlb2NvZGVyOwogICAgICAgICAgICAgICAgdmFyIG1hcmtlcnMgPSBbXTsKICAgICAgICAgICAgICAgIHZhciBtYXBTdHlsZSA9ICBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAiZWxlbWVudFR5cGUiOiAiZ2VvbWV0cnkiLAogICAgICAgICAgICAgICAgICAgICAgICAic3R5bGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29sb3IiOiAiI2Y1ZjVmNSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAiZWxlbWVudFR5cGUiOiAibGFiZWxzLmljb24iLAogICAgICAgICAgICAgICAgICAgICAgICAic3R5bGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJpbGl0eSI6ICJvZmYiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgImVsZW1lbnRUeXBlIjogImxhYmVscy50ZXh0LmZpbGwiLAogICAgICAgICAgICAgICAgICAgICAgICAic3R5bGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29sb3IiOiAiIzYxNjE2MSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAiZWxlbWVudFR5cGUiOiAibGFiZWxzLnRleHQuc3Ryb2tlIiwKICAgICAgICAgICAgICAgICAgICAgICAgInN0eWxlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbG9yIjogIiNmNWY1ZjUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgImZlYXR1cmVUeXBlIjogImFkbWluaXN0cmF0aXZlLmxhbmRfcGFyY2VsIiwKICAgICAgICAgICAgICAgICAgICAgICAgImVsZW1lbnRUeXBlIjogImxhYmVscy50ZXh0LmZpbGwiLAogICAgICAgICAgICAgICAgICAgICAgICAic3R5bGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29sb3IiOiAiI2JkYmRiZCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAiZmVhdHVyZVR5cGUiOiAicG9pIiwKICAgICAgICAgICAgICAgICAgICAgICAgImVsZW1lbnRUeXBlIjogImdlb21ldHJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgInN0eWxlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbG9yIjogIiNlZWVlZWUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgImZlYXR1cmVUeXBlIjogInBvaSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJlbGVtZW50VHlwZSI6ICJsYWJlbHMudGV4dC5maWxsIiwKICAgICAgICAgICAgICAgICAgICAgICAgInN0eWxlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbG9yIjogIiM3NTc1NzUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgImZlYXR1cmVUeXBlIjogInBvaS5wYXJrIiwKICAgICAgICAgICAgICAgICAgICAgICAgImVsZW1lbnRUeXBlIjogImdlb21ldHJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgInN0eWxlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbG9yIjogIiNlNWU1ZTUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgImZlYXR1cmVUeXBlIjogInBvaS5wYXJrIiwKICAgICAgICAgICAgICAgICAgICAgICAgImVsZW1lbnRUeXBlIjogImxhYmVscy50ZXh0LmZpbGwiLAogICAgICAgICAgICAgICAgICAgICAgICAic3R5bGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29sb3IiOiAiIzllOWU5ZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAiZmVhdHVyZVR5cGUiOiAicm9hZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJlbGVtZW50VHlwZSI6ICJnZW9tZXRyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJzdHlsZXJzIjogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb2xvciI6ICIjZmZmZmZmIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICJmZWF0dXJlVHlwZSI6ICJyb2FkLmFydGVyaWFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgImVsZW1lbnRUeXBlIjogImxhYmVscy50ZXh0LmZpbGwiLAogICAgICAgICAgICAgICAgICAgICAgICAic3R5bGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29sb3IiOiAiIzc1NzU3NSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAiZmVhdHVyZVR5cGUiOiAicm9hZC5oaWdod2F5IiwKICAgICAgICAgICAgICAgICAgICAgICAgImVsZW1lbnRUeXBlIjogImdlb21ldHJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgInN0eWxlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbG9yIjogIiNkYWRhZGEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgImZlYXR1cmVUeXBlIjogInJvYWQuaGlnaHdheSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJlbGVtZW50VHlwZSI6ICJsYWJlbHMudGV4dC5maWxsIiwKICAgICAgICAgICAgICAgICAgICAgICAgInN0eWxlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbG9yIjogIiM2MTYxNjEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgImZlYXR1cmVUeXBlIjogInJvYWQubG9jYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAiZWxlbWVudFR5cGUiOiAibGFiZWxzLnRleHQuZmlsbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJzdHlsZXJzIjogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb2xvciI6ICIjOWU5ZTllIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICJmZWF0dXJlVHlwZSI6ICJ0cmFuc2l0LmxpbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAiZWxlbWVudFR5cGUiOiAiZ2VvbWV0cnkiLAogICAgICAgICAgICAgICAgICAgICAgICAic3R5bGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29sb3IiOiAiI2U1ZTVlNSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAiZmVhdHVyZVR5cGUiOiAidHJhbnNpdC5zdGF0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgImVsZW1lbnRUeXBlIjogImdlb21ldHJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgInN0eWxlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbG9yIjogIiNlZWVlZWUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgImZlYXR1cmVUeXBlIjogIndhdGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgImVsZW1lbnRUeXBlIjogImdlb21ldHJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgInN0eWxlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbG9yIjogIiNjOWM5YzkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgImZlYXR1cmVUeXBlIjogIndhdGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgImVsZW1lbnRUeXBlIjogImxhYmVscy50ZXh0LmZpbGwiLAogICAgICAgICAgICAgICAgICAgICAgICAic3R5bGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29sb3IiOiAiIzllOWU5ZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF07CgogICAgICAgICAgICAgICAgd2luZG93LmRhdGFMYXllciA9IHdpbmRvdy5kYXRhTGF5ZXIgfHwgW107CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gaW5pdE1hcCgpIHsKICAgICAgICAgICAgICAgICAgICBtYXAgPSBuZXcgZ29vZ2xlLm1hcHMuTWFwKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnbWFwJyksIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2VudGVyOiB7bGF0OiA0OC43Nzk1OTQyLCBsbmc6IDguMjA1ODY3NH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHpvb206IDYsCiAgICAgICAgICAgICAgICAgICAgICAgIG1heFpvb206IDE4LAogICAgICAgICAgICAgICAgICAgICAgICBzdHlsZXM6IG1hcFN0eWxlCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICB2YXIgZXVNZW1iZXJzID0gWzEzLDIwLDIyLDUyLDUzLDU0LDU2LDYxLDY1LDY3LDcyLDg1LDkzLDk1LDk3LDEwNCwxMjYsMTI3LDEyOCwxNDQsMTU3LDE3MCwxNzQsMTc5LDE4NiwxODksMTkxXTsKICAgICAgICAgICAgICAgICAgICB2YXIgYWxsQ2F0ZWdvcnlVaWRzID0gJCgnLmNhdGVnb3JpZXMtY2ItY29udGFpbmVyJykuZGF0YSgnYWxsLWNhdGVnb3J5LXVpZHMnKS5zcGxpdCgnLCcpOwoKICAgICAgICAgICAgICAgICAgICB2YXIgZmlsdGVyZm9ybSA9ICQoJyNzZWxlY3RGb3JtJyk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGNvdW50cnlTZWxlY3QgPSAkKCcjY291bnRyeS1zZWxlY3QnKTsKICAgICAgICAgICAgICAgICAgICB2YXIgbG9jYXRpb25DaGVja2JveCA9ICQoJyNjYi1sb2NhdGlvbicpOwoKICAgICAgICAgICAgICAgICAgICB2YXIgbG9jYXRpb25TZWFyY2hDb250YWluZXIgPSAkKCcubG9jYXRpb24tc2VhcmNoLWNvbnRhaW5lcicpOwogICAgICAgICAgICAgICAgICAgIHZhciBjYXRlZ29yeVNlYXJjaENvbnRhaW5lciA9ICQoJy5jYXRlZ29yeS1zZWFyY2gtY29udGFpbmVyJyk7CiAgICAgICAgICAgICAgICAgICAgdmFyIG5vdGlmaWVyQ29udGFpbmVyID0gJCgnLm5vdGlmaWVyLWNvbnRhaW5lcicpOwogICAgICAgICAgICAgICAgICAgIHZhciBzdWJtaXRCdXR0b25Db250YWluZXIgPSAkKCcuc3VibWl0LWJ1dHRvbi1jb250YWluZXInKTsKICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0Q29udGFpbmVyID0gJCgnLnJlc3VsdC1jb250YWluZXInKTsKICAgICAgICAgICAgICAgICAgICB2YXIgbWFwQ29udGFpbmVyID0gJCgnLmRlYWxlci1zZWFyY2gtbWFwLXdyYXAnKTsKCiAgICAgICAgICAgICAgICAgICAgdmFyIGNvdW50cnlDYXRlZ29yaWVzID0gJyc7CiAgICAgICAgICAgICAgICAgICAgdmFyIGNvdW50cnlOYW1lID0gJyc7CiAgICAgICAgICAgICAgICAgICAgdmFyIGRpc2FibGVkQ2F0ZWdvcmllcyA9ICcnOwoKICAgICAgICAgICAgICAgICAgICB2YXIgbW9iaWxlQ2hlY2sgPSAkKCcjbW9iaWxlLWNoZWNrJyk7CgogICAgICAgICAgICAgICAgICAgIHZhciBhamF4VXJsID0gZmlsdGVyZm9ybS5kYXRhKCdhamF4dXJsJyk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGdldENvdW50cnlDb2RlQWpheFVybCA9IGxvY2F0aW9uQ2hlY2tib3guZGF0YSgnYWpheHVybCcpOwoKICAgICAgICAgICAgICAgICAgICB2YXIgZGVlcGxpbmsgPSAkKCcjZGVlcGxpbmsnKS5kYXRhKCdzdHJpbmcnKSA9PSAxOwoKICAgICAgICAgICAgICAgICAgICBpZihkZWVwbGluayl7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnlDYXRlZ29yaWVzID0gY291bnRyeVNlbGVjdC5maW5kKCdvcHRpb246c2VsZWN0ZWQnKS5kYXRhKCdjYXRlZ29yaWVzJykgKyAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgY291bnRyeU5hbWUgPSBjb3VudHJ5U2VsZWN0LmZpbmQoJ29wdGlvbjpzZWxlY3RlZCcpLmRhdGEoJ25hbWUnKSArICcnOwoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmljaHQgaW0gTGFuZCB2b3JoYW5kZW5lIENhdGVnb3JpZXMgZGlzYWJsZW4KICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWRDYXRlZ29yaWVzID0gYXJyX2RpZmYgKGFsbENhdGVnb3J5VWlkcywgY291bnRyeUNhdGVnb3JpZXMuc3BsaXQoJywnKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGlzYWJsZWRDYXRlZ29yaWVzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcuY2F0ZWdvcnktY2JbdmFsdWU9IicgKyBkaXNhYmxlZENhdGVnb3JpZXNbaV0gKyAnIl0nKS5wcm9wKCdkaXNhYmxlZCcsIHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnLmNhdGVnb3J5LWNiW3ZhbHVlPSInICsgZGlzYWJsZWRDYXRlZ29yaWVzW2ldICsgJyJdJykucHJvcCgnY2hlY2tlZCcsIGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJy5jYXRlZ29yeS1jYlt2YWx1ZT0iJyArIGRpc2FibGVkQ2F0ZWdvcmllc1tpXSArICciXScpLmNsb3Nlc3QoJy5jaGVja2JveC13cmFwcGVyJykuYWRkQ2xhc3MoJ2Rpc2FibGVkJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5U2VhcmNoQ29udGFpbmVyLnNsaWRlRG93bigpOwogICAgICAgICAgICAgICAgICAgICAgICBzdWJtaXRCdXR0b25Db250YWluZXIuc2xpZGVEb3duKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGFycmF5Q29udGFpbnMocGFyc2VJbnQoY291bnRyeVNlbGVjdC52YWwoKSksZXVNZW1iZXJzKSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3RpZmllckNvbnRhaW5lci5zbGlkZURvd24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3RpZmllckNvbnRhaW5lci5zbGlkZVVwKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhamF4Q2FsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwQ29udGFpbmVyLnNsaWRlRG93bigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Q29udGFpbmVyLnNsaWRlRG93bigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3dvcmsnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG1vYmlsZUNoZWNrLmlzKCc6dmlzaWJsZScpKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcubW9iaWxlLXJlc2V0LXNlYXJjaCcpLmZhZGVJbigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJy5kZWFsZXItc2VhcmNoLWZvcm0nKS5mYWRlT3V0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgJCgnLm1hcC1oZWFkbGluZScpLnNob3coKTsKICAgICAgICAgICAgICAgICAgICAgICAgJCgnI21hcC1oZWFkbGluZS1jb3VudHJ5JykudGV4dChjb3VudHJ5TmFtZSk7CiAgICAgICAgICAgICAgICAgICAgfQoKCiAgICAgICAgICAgICAgICAgICAgY291bnRyeVNlbGVjdC5vbignY2hhbmdlJywgZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbWFwQ29udGFpbmVyLnNsaWRlVXAoKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Q29udGFpbmVyLnNsaWRlVXAoKTsKICAgICAgICAgICAgICAgICAgICAgICAgY291bnRyeUNhdGVnb3JpZXMgPSAkKHRoaXMpLmZpbmQoJ29wdGlvbjpzZWxlY3RlZCcpLmRhdGEoJ2NhdGVnb3JpZXMnKSArICcnOwogICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5TmFtZSA9ICQodGhpcykuZmluZCgnb3B0aW9uOnNlbGVjdGVkJykuZGF0YSgnbmFtZScpICsgJyc7CgogICAgICAgICAgICAgICAgICAgICAgICBpZigkKHRoaXMpLnZhbCgpID09PSAnJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeVNlYXJjaENvbnRhaW5lci5zbGlkZVVwKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJtaXRCdXR0b25Db250YWluZXIuc2xpZGVVcCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90aWZpZXJDb250YWluZXIuc2xpZGVVcCgpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5vcmlnaW5hbEV2ZW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2VubiBVc2VyIFNlbGVjdC1WYWx1ZSDDpG5kZXJ0LCBTdGFuZG9ydC1DaGVja2JveCByZXNldAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uQ2hlY2tib3gudmFsKCcwJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25DaGVja2JveC5wcm9wKCdjaGVja2VkJywgZmFsc2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2dlb2xvY2F0aW9uLWVycm9yJykuaGlkZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2dlb2xvY2F0aW9uLWxvYWQnKS5oaWRlKCk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsZSBDYXRlZ29yaWVzIHdpZWRlciBlbmFibGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcuY2F0ZWdvcnktY2InKS5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmNsb3Nlc3QoJy5jaGVja2JveC13cmFwcGVyJykucmVtb3ZlQ2xhc3MoJ2Rpc2FibGVkJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5pY2h0IGltIExhbmQgdm9yaGFuZGVuZSBDYXRlZ29yaWVzIGRpc2FibGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZENhdGVnb3JpZXMgPSBhcnJfZGlmZiAoYWxsQ2F0ZWdvcnlVaWRzLCBjb3VudHJ5Q2F0ZWdvcmllcy5zcGxpdCgnLCcpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGlzYWJsZWRDYXRlZ29yaWVzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnLmNhdGVnb3J5LWNiW3ZhbHVlPSInICsgZGlzYWJsZWRDYXRlZ29yaWVzW2ldICsgJyJdJykucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcuY2F0ZWdvcnktY2JbdmFsdWU9IicgKyBkaXNhYmxlZENhdGVnb3JpZXNbaV0gKyAnIl0nKS5jbG9zZXN0KCcuY2hlY2tib3gtd3JhcHBlcicpLmFkZENsYXNzKCdkaXNhYmxlZCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5U2VhcmNoQ29udGFpbmVyLnNsaWRlRG93bigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VibWl0QnV0dG9uQ29udGFpbmVyLnNsaWRlRG93bigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYXJyYXlDb250YWlucyhwYXJzZUludCgkKHRoaXMpLnZhbCgpKSxldU1lbWJlcnMpKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3RpZmllckNvbnRhaW5lci5zbGlkZURvd24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdGlmaWVyQ29udGFpbmVyLnNsaWRlVXAoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJy5tYXAtaGVhZGxpbmUnKS5zaG93KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjbWFwLWhlYWRsaW5lLWNvdW50cnknKS50ZXh0KGNvdW50cnlOYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uQ2hlY2tib3gub24oJ2NoYW5nZScsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbWFwQ29udGFpbmVyLnNsaWRlVXAoKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Q29udGFpbmVyLnNsaWRlVXAoKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5jaGVja2VkKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykudmFsKCcxJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5U2VsZWN0LnZhbCgnJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjZ2VvbG9jYXRpb24tbG9hZCcpLnNob3coKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24ocG9zaXRpb24pewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBvc2l0aW9uIGVybWl0dGVsdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHBvc2l0aW9uLmNvb3Jkcy5sYXRpdHVkZSAhPT0gdW5kZWZpbmVkICYmIHBvc2l0aW9uLmNvb3Jkcy5sb25naXR1ZGUgIT09IHVuZGVmaW5lZCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNnZW9sb2NhdGlvbi1sb2FkJykuaGlkZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2NhdGlvbkNvdW50cnlDb2RlKGdldENvdW50cnlDb2RlQWpheFVybCwgcG9zaXRpb24uY29vcmRzLmxhdGl0dWRlLCBwb3NpdGlvbi5jb29yZHMubG9uZ2l0dWRlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmVobGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2dlb2xvY2F0aW9uLWVycm9yJykuc2hvdygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNnZW9sb2NhdGlvbi1sb2FkJykuaGlkZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS52YWwoJzAnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnlTZWxlY3QudmFsKCcnKS5jaGFuZ2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNnZW9sb2NhdGlvbi1lcnJvcicpLmhpZGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNnZW9sb2NhdGlvbi1sb2FkJykuaGlkZSgpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgZmlsdGVyZm9ybS5zdWJtaXQoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgYWpheENhbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgbWFwQ29udGFpbmVyLnNsaWRlRG93bigpOwogICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRDb250YWluZXIuc2xpZGVEb3duKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKG1vYmlsZUNoZWNrLmlzKCc6dmlzaWJsZScpKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJ2JvZHksaHRtbCcpLmFuaW1hdGUoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbFRvcDogJCgnLmRlYWxlci1zZWFyY2gtbWFwLXdyYXAnKS5vZmZzZXQoKS50b3AgLSAkKCcucGFnZS1oZWFkZXInKS5vdXRlckhlaWdodCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCA4MDApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJy5tb2JpbGUtcmVzZXQtc2VhcmNoJykuZmFkZUluKCdzbG93Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcuZGVhbGVyLXNlYXJjaC1mb3JtJykuZmFkZU91dCgpOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZ3RtRXZlbnRMYWJlbCA9ICQoJyNjb3VudHJ5LXNlbGVjdCBvcHRpb246c2VsZWN0ZWQnKS50ZXh0KCkgKyAnIC0nOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYoJCgnI2NiLUF1dG9wb2xpdHVyZW4nKS5pcygiOmNoZWNrZWQiKSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBndG1FdmVudExhYmVsID0gZ3RtRXZlbnRMYWJlbCArICcgQXV0b3BvbGl0dXJlbic7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoJCgnI2NiLUJvb3RzcG9saXR1cmVuJykuaXMoIjpjaGVja2VkIikpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3RtRXZlbnRMYWJlbCA9IGd0bUV2ZW50TGFiZWwgKyAnIEJvb3RzcG9saXR1cmVuJzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZigkKCcjY2ItRmVzdHBhc3RlbicpLmlzKCI6Y2hlY2tlZCIpKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd0bUV2ZW50TGFiZWwgPSBndG1FdmVudExhYmVsICsgJyBGZXN0cGFzdGVuJzsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmRhdGFMYXllciA9IHdpbmRvdy5kYXRhTGF5ZXIgfHwgW107CiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5kYXRhTGF5ZXIucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudDogJ0hhZW5kbGVyc3VjaGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk6ICdzdWNoZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdjbGljaycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogZ3RtRXZlbnRMYWJlbAogICAgICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZ2V0TG9jYXRpb25Db3VudHJ5Q29kZShhamF4VXJsLCBsYXQsIGxvbikgewogICAgICAgICAgICAgICAgICAgICAgICAkLnBvc3QoYWpheFVybCwgeyAndHhfcHhwZGVhbGVyc19hamF4Y2FsbFtsYXRdJzogbGF0LCAndHhfcHhwZGVhbGVyc19hamF4Y2FsbFtsb25dJzogbG9uIH0sIGZ1bmN0aW9uKHJlc3BvbnNlKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvcHRpb25WYWx1ZSA9ICQoJyNjb3VudHJ5LXNlbGVjdCBvcHRpb25bZGF0YS1pc28yPScrcmVzcG9uc2UrJ10nKS52YWwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnlTZWxlY3QudmFsKG9wdGlvblZhbHVlKS5jaGFuZ2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBhamF4Q2FsbCgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJNYXJrZXJzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICQoJyNhY2NvcmRpb24nKS5odG1sKCcnKTsKICAgICAgICAgICAgICAgICAgICAgICAgJC5wb3N0KGFqYXhVcmwsIGZpbHRlcmZvcm0uc2VyaWFsaXplKCksIGZ1bmN0aW9uKHJlc3BvbnNlKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtYXBCb3VuZHMgPSBuZXcgZ29vZ2xlLm1hcHMuTGF0TG5nQm91bmRzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UgIT0gbnVsbCAmJiByZXNwb25zZS5sZW5ndGggIT0gMCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkLmVhY2gocmVzcG9uc2UsIGZ1bmN0aW9uKGksIGl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXRlbS5sYXQgIT09ICcnICYmIGl0ZW0ubG9uICE9PSAnJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWFya2VyID0gbmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IG5ldyBnb29nbGUubWFwcy5MYXRMbmcoaXRlbS5sYXQsIGl0ZW0ubG9uKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXA6IG1hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiAnL21hcC1tYXJrZXItcmVkLnBuZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uOiBnb29nbGUubWFwcy5BbmltYXRpb24uRFJPUCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbl9pZDogaXRlbS5sb2NhdGlvbmlkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGl0ZW0uYWRkaXRpb25hbExhdE9uZSAhPT0gJycgJiYgaXRlbS5hZGRpdGlvbmFsTG9uT25lICE9PSAnJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFkZGl0aW9uYWxNYXJrZXJPbmUgPSBuZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IG5ldyBnb29nbGUubWFwcy5MYXRMbmcoaXRlbS5hZGRpdGlvbmFsTGF0T25lLCBpdGVtLmFkZGl0aW9uYWxMb25PbmUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXA6IG1hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJy9tYXAtbWFya2VyLXJlZC5wbmcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb246IGdvb2dsZS5tYXBzLkFuaW1hdGlvbi5EUk9QLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbl9pZDogaXRlbS5sb2NhdGlvbmlkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2Vycy5wdXNoKGFkZGl0aW9uYWxNYXJrZXJPbmUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcEJvdW5kcy5leHRlbmQoYWRkaXRpb25hbE1hcmtlck9uZS5wb3NpdGlvbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihpdGVtLmFkZGl0aW9uYWxMYXRUd28gIT09ICcnICYmIGl0ZW0uYWRkaXRpb25hbExvblR3byAhPT0gJycpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhZGRpdGlvbmFsTWFya2VyVHdvID0gbmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBuZXcgZ29vZ2xlLm1hcHMuTGF0TG5nKGl0ZW0uYWRkaXRpb25hbExhdFR3bywgaXRlbS5hZGRpdGlvbmFsTG9uVHdvKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwOiBtYXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICcvbWFwLW1hcmtlci1yZWQucG5nJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uOiBnb29nbGUubWFwcy5BbmltYXRpb24uRFJPUCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25faWQ6IGl0ZW0ubG9jYXRpb25pZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlcnMucHVzaChhZGRpdGlvbmFsTWFya2VyVHdvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBCb3VuZHMuZXh0ZW5kKGFkZGl0aW9uYWxNYXJrZXJUd28ucG9zaXRpb24pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXRlbS5hZGRpdGlvbmFsTGF0VGhyZWUgIT09ICcnICYmIGl0ZW0uYWRkaXRpb25hbExvblRocmVlICE9PSAnJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFkZGl0aW9uYWxNYXJrZXJUaHJlZSA9IG5ldyBnb29nbGUubWFwcy5NYXJrZXIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogbmV3IGdvb2dsZS5tYXBzLkxhdExuZyhpdGVtLmFkZGl0aW9uYWxMYXRUaHJlZSwgaXRlbS5hZGRpdGlvbmFsTG9uVGhyZWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXA6IG1hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJy9tYXAtbWFya2VyLXJlZC5wbmcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb246IGdvb2dsZS5tYXBzLkFuaW1hdGlvbi5EUk9QLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbl9pZDogaXRlbS5sb2NhdGlvbmlkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2Vycy5wdXNoKGFkZGl0aW9uYWxNYXJrZXJUaHJlZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwQm91bmRzLmV4dGVuZChhZGRpdGlvbmFsTWFya2VyVGhyZWUucG9zaXRpb24pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXRlbS5hZGRpdGlvbmFsTGF0Rm91ciAhPT0gJycgJiYgaXRlbS5hZGRpdGlvbmFsTG9uRm91ciAhPT0gJycpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhZGRpdGlvbmFsTWFya2VyRm91ciA9IG5ldyBnb29nbGUubWFwcy5NYXJrZXIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogbmV3IGdvb2dsZS5tYXBzLkxhdExuZyhpdGVtLmFkZGl0aW9uYWxMYXRGb3VyLCBpdGVtLmFkZGl0aW9uYWxMb25Gb3VyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwOiBtYXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICcvbWFwLW1hcmtlci1yZWQucG5nJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uOiBnb29nbGUubWFwcy5BbmltYXRpb24uRFJPUCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25faWQ6IGl0ZW0ubG9jYXRpb25pZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlcnMucHVzaChhZGRpdGlvbmFsTWFya2VyRm91cik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwQm91bmRzLmV4dGVuZChhZGRpdGlvbmFsTWFya2VyRm91ci5wb3NpdGlvbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihpdGVtLmFkZGl0aW9uYWxMYXRGaXZlICE9PSAnJyAmJiBpdGVtLmFkZGl0aW9uYWxMb25GaXZlICE9PSAnJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFkZGl0aW9uYWxNYXJrZXJGaXZlID0gbmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBuZXcgZ29vZ2xlLm1hcHMuTGF0TG5nKGl0ZW0uYWRkaXRpb25hbExhdEZpdmUsIGl0ZW0uYWRkaXRpb25hbExvbkZpdmUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXA6IG1hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJy9tYXAtbWFya2VyLXJlZC5wbmcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb246IGdvb2dsZS5tYXBzLkFuaW1hdGlvbi5EUk9QLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbl9pZDogaXRlbS5sb2NhdGlvbmlkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2Vycy5wdXNoKGFkZGl0aW9uYWxNYXJrZXJGaXZlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBCb3VuZHMuZXh0ZW5kKGFkZGl0aW9uYWxNYXJrZXJGaXZlLnBvc2l0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJzLnB1c2gobWFya2VyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcEJvdW5kcy5leHRlbmQobWFya2VyLnBvc2l0aW9uKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjYWNjb3JkaW9uJykuYXBwZW5kKGdldEh0bWxUZW1wbGF0ZShpdGVtLGkpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbG9jYXRpb25MaXN0RW50cnkgPSAkKCcjbG9jYXRpb24nICsgaXRlbS5sb2NhdGlvbmlkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uTGlzdEVudHJ5LmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkLmVhY2gobWFya2VycywgZnVuY3Rpb24oaSxtYXJrZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VyLnNldEFuaW1hdGlvbigtMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlci5zZXRJY29uKCcvbWFwLW1hcmtlci1yZWQucG5nJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJy5jb2xsYXBzZScpLmVhY2goZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdzaG93Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICQoJy5jb2xsYXBzZS1saW5rJykuYWRkQ2xhc3MoJ2NvbGxhcHNlZCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCEkKHRoaXMpLmNsb3Nlc3QoJy5wYW5lbCcpLmZpbmQoJy5jb2xsYXBzZScpLmlzKCc6dmlzaWJsZScpKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5jbG9zZXN0KCcucGFuZWwnKS5zaWJsaW5ncygnLnBhbmVsJykuZmluZCgnLmNvbGxhcHNlLWxpbmsnKS5hZGRDbGFzcygnY29sbGFwc2VkJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuY2xvc2VzdCgnLnBhbmVsJykuc2libGluZ3MoJy5wYW5lbCcpLmZpbmQoJy5hY2NvcmRpb24tY29sbGFwc2UnKS5yZW1vdmVDbGFzcygnc2hvdycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISQodGhpcykuY2xvc2VzdCgnLnBhbmVsJykuZmluZCgnLmFjY29yZGlvbi1jb2xsYXBzZScpLmhhc0NsYXNzKCdzaG93JykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghJCh0aGlzKS5jbG9zZXN0KCcucGFuZWwnKS5maW5kKCcuYWNjb3JkaW9uLWNvbGxhcHNlJykuaGFzQ2xhc3MoJ2NvbGxhcHNpbmcnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuY2xvc2VzdCgnLnBhbmVsJykuZmluZCgnLmFjY29yZGlvbi1jb2xsYXBzZScpLmFkZENsYXNzKCdzaG93Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygnY29sbGFwc2VkJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VyLnNldEljb24oJy9tYXAtbWFya2VyLWdyZXkucG5nJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlci5zZXRBbmltYXRpb24oZ29vZ2xlLm1hcHMuQW5pbWF0aW9uLkJPVU5DRSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGFkZGl0aW9uYWxNYXJrZXJPbmUgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbE1hcmtlck9uZS5zZXRJY29uKCcvbWFwLW1hcmtlci1ncmV5LnBuZycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbE1hcmtlck9uZS5zZXRBbmltYXRpb24oZ29vZ2xlLm1hcHMuQW5pbWF0aW9uLkJPVU5DRSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYWRkaXRpb25hbE1hcmtlclR3byAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsTWFya2VyVHdvLnNldEljb24oJy9tYXAtbWFya2VyLWdyZXkucG5nJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsTWFya2VyVHdvLnNldEFuaW1hdGlvbihnb29nbGUubWFwcy5BbmltYXRpb24uQk9VTkNFKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihhZGRpdGlvbmFsTWFya2VyVGhyZWUgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbE1hcmtlclRocmVlLnNldEljb24oJy9tYXAtbWFya2VyLWdyZXkucG5nJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsTWFya2VyVGhyZWUuc2V0QW5pbWF0aW9uKGdvb2dsZS5tYXBzLkFuaW1hdGlvbi5CT1VOQ0UpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGFkZGl0aW9uYWxNYXJrZXJGb3VyICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxNYXJrZXJGb3VyLnNldEljb24oJy9tYXAtbWFya2VyLWdyZXkucG5nJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsTWFya2VyRm91ci5zZXRBbmltYXRpb24oZ29vZ2xlLm1hcHMuQW5pbWF0aW9uLkJPVU5DRSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYWRkaXRpb25hbE1hcmtlckZpdmUgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbE1hcmtlckZpdmUuc2V0SWNvbignL21hcC1tYXJrZXItZ3JleS5wbmcnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxNYXJrZXJGaXZlLnNldEFuaW1hdGlvbihnb29nbGUubWFwcy5BbmltYXRpb24uQk9VTkNFKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VyQ2xpY2tMaXN0ZW5lciAobWFya2VyLCBtYXJrZXJzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGFkZGl0aW9uYWxNYXJrZXJPbmUgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlckNsaWNrTGlzdGVuZXIoYWRkaXRpb25hbE1hcmtlck9uZSwgbWFya2Vycyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihhZGRpdGlvbmFsTWFya2VyVHdvICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJDbGlja0xpc3RlbmVyKGFkZGl0aW9uYWxNYXJrZXJUd28sIG1hcmtlcnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYWRkaXRpb25hbE1hcmtlclRocmVlICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJDbGlja0xpc3RlbmVyKGFkZGl0aW9uYWxNYXJrZXJUaHJlZSwgbWFya2Vycyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihhZGRpdGlvbmFsTWFya2VyRm91ciAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VyQ2xpY2tMaXN0ZW5lcihhZGRpdGlvbmFsTWFya2VyRm91ciwgbWFya2Vycyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihhZGRpdGlvbmFsTWFya2VyRml2ZSAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VyQ2xpY2tMaXN0ZW5lcihhZGRpdGlvbmFsTWFya2VyRml2ZSwgbWFya2Vycyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXRlbS5pc09ubHlPbmxpbmVzaG9wID09PSB0cnVlKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG1hcmtlcnNbaV0gIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlcnNbaV0uc2V0TWFwKG51bGwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwLmZpdEJvdW5kcyhtYXBCb3VuZHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gY2xlYXJNYXJrZXJzKCkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1hcmtlcnMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXJrZXJzW2ldKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2Vyc1tpXS5zZXRNYXAobnVsbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VycyA9IFtdOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbWFya2VyQ2xpY2tMaXN0ZW5lcihtYXJrZXJUZW1wLCBtYXJrZXJBcnJheSkgewogICAgICAgICAgICAgICAgICAgICAgICBnb29nbGUubWFwcy5ldmVudC5hZGRMaXN0ZW5lcihtYXJrZXJUZW1wLCAnY2xpY2snLCAoZnVuY3Rpb24obWFya2VyLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJC5lYWNoKG1hcmtlckFycmF5LCBmdW5jdGlvbihpLG1hcmtlcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXIuc2V0QW5pbWF0aW9uKC0xKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VyLnNldE9wdGlvbnMoe2ljb246ICJtYXAtbWFya2VyLXJlZC5wbmcifSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VyLnNldE9wdGlvbnMoe2ljb246ICJtYXAtbWFya2VyLWdyZXkucG5nIn0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICQoJy5jb2xsYXBzZS1saW5rJykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICQoJyNsb2NhdGlvbicrbWFya2VyLmxvY2F0aW9uX2lkKS5hZGRDbGFzcygnYWN0aXZlJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gJCgnLmNvbGxhcHNlLWxpbmsnKS5hdHRyKCdhcmlhLWV4cGFuZGVkJywgZmFsc2UpLmFkZENsYXNzKCdjb2xsYXBzZWQnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAkKCcjbG9jYXRpb24nK21hcmtlci5sb2NhdGlvbl9pZCkuYXR0cignYXJpYS1leHBhbmRlZCcsIGZhbHNlKS5yZW1vdmVDbGFzcygnY29sbGFwc2VkJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2xvY2F0aW9uJyttYXJrZXIubG9jYXRpb25faWQpLmNsaWNrKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VyLnNldEFuaW1hdGlvbihnb29nbGUubWFwcy5BbmltYXRpb24uQk9VTkNFKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCdodG1sLCBib2R5JykuYW5pbWF0ZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbFRvcDogJCgnI2xvY2F0aW9uJyttYXJrZXIubG9jYXRpb25faWQpLm9mZnNldCgpLnRvcCAtICgkKCcucGFnZS1oZWFkZXInKS5vdXRlckhlaWdodCgpICsgMzUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTAwMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pKG1hcmtlclRlbXAsIGkpKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGFycmF5Q29udGFpbnMobmVlZGxlLCBhcnJoYXlzdGFjaykgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGFycmhheXN0YWNrLmluZGV4T2YobmVlZGxlKSA+IC0xKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYXJyX2RpZmYgKGExLCBhMikgewoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBbXSwgZGlmZiA9IFtdOwoKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhMS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYVthMVtpXV0gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEyLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYVthMltpXV0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgYVthMltpXV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFbYTJbaV1dID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgayBpbiBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmLnB1c2goayk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkaWZmOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgPC9zY3JpcHQ+CiAgICAgICAgCiAgICA8c2NyaXB0PgogICAgICAgICQoZG9jdW1lbnQuYm9keSkub24oJ2NsaWNrJywnLm1vYmlsZS1jbG9zZS1hY2NvcmRpb24tdHJpZ2dlcicsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAvLyAkKHRoaXMpLmNsb3Nlc3QoJy5jb2xsYXBzZScpLnNsaWRlVXAoKTsKICAgICAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcuYWNjb3JkaW9uLWl0ZW0nKS5maW5kKCcuYWNjb3JkaW9uLWNvbGxhcHNlJykucmVtb3ZlQ2xhc3MoJ3Nob3cnKTsKICAgICAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcuYWNjb3JkaW9uLWl0ZW0nKS5maW5kKCcuY29sbGFwc2UtbGluaycpLmFkZENsYXNzKCdjb2xsYXBzZWQnKTsKICAgICAgICB9KTsKCiAgICAgICAgJChkb2N1bWVudC5ib2R5KS5vbignY2xpY2snLCcjcmVzZXQtc2VhcmNoJywgZnVuY3Rpb24oKSB7CgogICAgICAgICAgICBjb3VudHJ5U2VsZWN0LnZhbCgnJykuY2hhbmdlKCk7CiAgICAgICAgICAgIGNhdGVnb3J5U2VhcmNoQ29udGFpbmVyLnNsaWRlVXAoKTsKICAgICAgICAgICAgc3VibWl0QnV0dG9uQ29udGFpbmVyLnNsaWRlVXAoKTsKICAgICAgICAgICAgbm90aWZpZXJDb250YWluZXIuc2xpZGVVcCgpOwogICAgICAgICAgICAkKCcuZGVhbGVyLXNlYXJjaC1mb3JtJykuZmFkZUluKCk7CiAgICAgICAgICAgICQodGhpcykucGFyZW50KCkuZmFkZU91dCgpOwogICAgICAgIH0pOwoKICAgICAgICAkKGRvY3VtZW50LmJvZHkpLm9uKCdjbGljaycsJy5pdGVtLWxpbmsnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgaWYoJCh0aGlzKS5kYXRhKCdhbmFseXRpY3NldmVudCcpICE9PSAnJyl7CiAgICAgICAgICAgICAgICB3aW5kb3cuZGF0YUxheWVyID0gd2luZG93LmRhdGFMYXllciB8fCBbXTsKICAgICAgICAgICAgICAgIHdpbmRvdy5kYXRhTGF5ZXIucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgZXZlbnQ6ICdIYWVuZGxlcnN1Y2hlJywKICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeTogJ3dlaXRlcmxlaXR1bmcnLAogICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ2NsaWNrJywKICAgICAgICAgICAgICAgICAgICBsYWJlbDogJCh0aGlzKS5kYXRhKCdhbmFseXRpY3NldmVudCcpCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICBmdW5jdGlvbiBnZXRIdG1sVGVtcGxhdGUoaXRlbSxpKXsKICAgICAgICAgICAgdmFyIGNvbnRhY3RIZWFkbGluZSA9ICQoJyNjb250YWN0LWhlYWRsaW5lJykuZGF0YSgnc3RyaW5nJyk7CiAgICAgICAgICAgIHZhciBjYXRlZ29yaWVzSGVhZGxpbmUgPSAkKCcjY2F0ZWdvcmllcy1oZWFkbGluZScpLmRhdGEoJ3N0cmluZycpOwogICAgICAgICAgICB2YXIgdGV4dExpbmtPbmxpbmVzaG9wID0gJCgnI3RleHQtbGluay1vbmxpbmVzaG9wJykuZGF0YSgnc3RyaW5nJyk7CiAgICAgICAgICAgIHZhciB0ZXh0TGlua1dlYnNpdGUgPSAkKCcjdGV4dC1saW5rLXdlYnNpdGUnKS5kYXRhKCdzdHJpbmcnKTsKICAgICAgICAgICAgdmFyIGNsb3NlQWNjb3JkaW9uVHJpZ2dlclRleHQgPSAkKCcjdGV4dC1jbG9zZS1hY2NvcmRpb24nKS5kYXRhKCdzdHJpbmcnKTsKICAgICAgICAgICAgdmFyIGl0ZXJhdG9yQ2xhc3MgPSAnJzsKICAgICAgICAgICAgaWYgKGkgPT0gJzAnKSB7CiAgICAgICAgICAgICAgICBpdGVyYXRvckNsYXNzID0gJyBmaXJzdCc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciBhbmFseXRpY3NFdmVudCA9ICcnOwogICAgICAgICAgICBpZihpdGVtLmFuYWx5dGljc0V2ZW50ICE9ICcnKXsKICAgICAgICAgICAgICAgIGFuYWx5dGljc0V2ZW50ID0gaXRlbS5hbmFseXRpY3NFdmVudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIGh0bWwgPSAnPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWl0ZW0gcGFuZWwiPic7CgogICAgICAgICAgICBodG1sICAgKz0gJyA8YSBocmVmPSJqYXZhc2NyaXB0OjsiIGNsYXNzPSJhY2NvcmRpb24tdGl0bGUgY29sbGFwc2UtbGluayBjb2xsYXBzZWQiIGRhdGEtYnMtdG9nZ2xlPSJjb2xsYXBzZSIgaWQ9ImxvY2F0aW9uJyArIGl0ZW0ubG9jYXRpb25pZCArJyIgZGF0YS1icy10YXJnZXQ9IiNjb2xsYXBzZScgKyBpdGVtLmxvY2F0aW9uaWQgKyciIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIiBhcmlhLWNvbnRyb2xzPSJsb2NhdGlvbicgKyBpdGVtLmxvY2F0aW9uaWQgKyciPic7CiAgICAgICAgICAgIGh0bWwgICArPSAnPGRpdiBjbGFzcz0iYWNjLXRpdGxlIj4nICsgaXRlbS50aXRsZSArJzwvZGl2Pic7CgogICAgICAgICAgICBodG1sICAgKz0gJzxkaXYgY2xhc3M9ImFjYy1zdWJ0aXRsZSI+JyArIGl0ZW0uc3VidGl0bGUgKyc8L2Rpdj48L2E+JzsKCiAgICAgICAgICAgIGh0bWwgICArPSc8ZGl2IGRhdGEtYnMtcGFyZW50PSIjYWNjb3JkaW9uIiBpZD0iY29sbGFwc2UnICsgaXRlbS5sb2NhdGlvbmlkICsnIiBjbGFzcz0iYWNjb3JkaW9uLWNvbGxhcHNlIGNvbGxhcHNlIiBzdHlsZT0iIj4nOwogICAgICAgICAgICBodG1sICAgKz0nPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWJvZHkiPic7CgoKICAgICAgICAgICAgaHRtbCAgICs9JzxkaXYgY2xhc3M9InJvdyBkZXNjcmlwdGlvbi1yb3ciPic7CiAgICAgICAgICAgIGh0bWwgICArPSc8ZGl2IGNsYXNzPSJjb2wtbWQtNiBjb2wtbGctOCI+JzsKICAgICAgICAgICAgaHRtbCAgICs9JyA8ZGl2IGNsYXNzPSJkZWFsZXItZGVzY3JpcHRpb24iPicgKyBpdGVtLmRlc2NyaXB0aW9uICsgJzwvZGl2Pic7CiAgICAgICAgICAgIGh0bWwgICArPSc8L2Rpdj4nOwogICAgICAgICAgICBodG1sICAgKz0nPGRpdiBjbGFzcz0iY29sLW1kLTYgY29sLWxnLTQiPic7CgogICAgICAgICAgICBpZihpdGVtLmltYWdlVXJsICE9PSAnJyl7CiAgICAgICAgICAgICAgICBodG1sICs9ICc8aW1nIHNyYz0iJyArIGl0ZW0uaW1hZ2VVcmwgKyAnIiBjbGFzcz0iaW1nLXJlc3BvbnNpdmUiIHdpZHRoPSIyNTAiIC8+JzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaHRtbCAgICs9JzwvZGl2PjwvZGl2Pic7CgogICAgICAgICAgICBodG1sICAgKz0nIDxkaXYgY2xhc3M9InJvdyBjb250YWN0LXJvdyI+JzsKICAgICAgICAgICAgaHRtbCAgICs9JzxkaXYgY2xhc3M9ImNvbC1tZC02IGNvbC1sZy04Ij4nOwogICAgICAgICAgICBodG1sICAgKz0nPGRpdiBjbGFzcz0iY2F0ZWdvcmllcy1oZWFkbGluZSI+JyArIGNhdGVnb3JpZXNIZWFkbGluZSArICc8L2Rpdj4nOwogICAgICAgICAgICBodG1sICAgKz0nPGRpdiBjbGFzcz0iaXRlbS1jYXRlZ29yaWVzIj4nOwoKICAgICAgICAgICAgaWYoaXRlbS5jYXRlZ29yaWVzICE9PSAnJyl7CiAgICAgICAgICAgICAgICB2YXIgY2F0ZWdvcmllc0FycmF5ID0gaXRlbS5jYXRlZ29yaWVzOwoKICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGNhdGVnb3JpZXNBcnJheSkpIHsKICAgICAgICAgICAgICAgICAgICBodG1sICs9ICc8ZGl2IGNsYXNzPSJpdGVtLWNhdCAnICsga2V5ICArICciPicgKyB2YWx1ZSAgKyAnPC9kaXY+JzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGh0bWwgICs9JzwvZGl2Pic7CiAgICAgICAgICAgIGh0bWwgICs9JzwvZGl2Pic7CgogICAgICAgICAgICBodG1sICArPSc8ZGl2IGNsYXNzPSJjb2wtbWQtNiBjb2wtbGctNCI+JzsKCiAgICAgICAgICAgIGh0bWwgICs9JzxkaXYgY2xhc3M9ImNvbnRhY3QtaGVhZGxpbmUiPicgKyBjb250YWN0SGVhZGxpbmUgKyAnPC9kaXY+JzsKCiAgICAgICAgICAgIGlmIChpdGVtLmFkZHJlc3MpIHsKICAgICAgICAgICAgICAgIGh0bWwgICs9JyA8ZGl2PjxkaXYgY2xhc3M9Iml0ZW0tYWRkcmVzcyI+JyArIGl0ZW0uYWRkcmVzcyArICc8L2Rpdj48L2Rpdj4nOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoaXRlbS5waG9uZSkgewogICAgICAgICAgICAgICAgaHRtbCAgKz0nPGRpdj48ZGl2IGNsYXNzPSJpdGVtLXBob25lIj48YSBocmVmPSJ0ZWw6JysgaXRlbS5waG9uZSArJyI+JyArIGl0ZW0ucGhvbmUgKyAnPC9hPjwvZGl2PjwvZGl2Pic7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChpdGVtLmVtYWlsKSB7CiAgICAgICAgICAgICAgICBodG1sICArPSc8ZGl2PjxkaXYgY2xhc3M9Iml0ZW0tZW1haWwiPjxhIGhyZWY9Im1haWx0bzonKyBpdGVtLmVtYWlsICsnIj4nICsgaXRlbS5lbWFpbCArICc8L2E+PC9kaXY+PC9kaXY+JzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaHRtbCAgKz0nICA8ZGl2IGNsYXNzPSJ2aXNpdC1zdG9yZS1saW5rcyI+JzsKCiAgICAgICAgICAgIGlmKGl0ZW0ubGlua1dlYnNpdGUgIT09ICcnKXsKICAgICAgICAgICAgICAgIGh0bWwgKz0gJzxhIGhyZWY9IicgKyBpdGVtLmxpbmtXZWJzaXRlICsgJyIgY2xhc3M9Iml0ZW0tbGluayBidG4iIHRhcmdldD0iX2JsYW5rIiBkYXRhLWFuYWx5dGljc2V2ZW50PSInICsgYW5hbHl0aWNzRXZlbnQgKyAnIj4nICsgdGV4dExpbmtXZWJzaXRlICsgJzwvYT4nOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZihpdGVtLmxpbmtPbmxpbmVTaG9wICE9PSAnJyl7CiAgICAgICAgICAgICAgICBodG1sICs9ICc8YSBocmVmPSInICsgaXRlbS5saW5rT25saW5lU2hvcCArICciIGNsYXNzPSJpdGVtLWxpbmsgYnRuIiB0YXJnZXQ9Il9ibGFuayIgZGF0YS1hbmFseXRpY3NldmVudD0iJyArIGFuYWx5dGljc0V2ZW50ICsgJyI+JyArIHRleHRMaW5rT25saW5lc2hvcCArICc8L2E+JzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaHRtbCArPSc8L2Rpdj4nOwoKICAgICAgICAgICAgaHRtbCArPSc8L2Rpdj4nOwoKICAgICAgICAgICAgaHRtbCArPSc8L2Rpdj4nOwoKICAgICAgICAgICAgaHRtbCArPSc8ZGl2IGNsYXNzPSJyb3ciPic7CgogICAgICAgICAgICBodG1sICs9JyA8ZGl2IGNsYXNzPSJjb2wtc20tMTIiPic7CgogICAgICAgICAgICBodG1sICs9JyAgPGRpdiBjbGFzcz0ibW9iaWxlLWNsb3NlLWFjY29yZGlvbiI+PHNwYW4gY2xhc3M9Im1vYmlsZS1jbG9zZS1hY2NvcmRpb24tdHJpZ2dlciI+JysgY2xvc2VBY2NvcmRpb25UcmlnZ2VyVGV4dCArJzwvc3Bhbj48L2Rpdj4nOwoKICAgICAgICAgICAgaHRtbCArPSc8L2Rpdj48L2Rpdj4gPC9kaXY+PC9kaXY+PC9kaXY+JzsKCgogICAgICAgICAgICByZXR1cm4gaHRtbDsKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gYXJyYXlDb250YWlucyhuZWVkbGUsIGFycmhheXN0YWNrKSB7CiAgICAgICAgICAgIHJldHVybiAoYXJyaGF5c3RhY2suaW5kZXhPZihuZWVkbGUpID4gLTEpOwogICAgICAgIH0KICAgICAgICBmdW5jdGlvbiBhcnJfZGlmZiAoYTEsIGEyKSB7CgogICAgICAgICAgICB2YXIgYSA9IFtdLCBkaWZmID0gW107CgogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGExLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBhW2ExW2ldXSA9IHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYTIubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIGlmIChhW2EyW2ldXSkgewogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBhW2EyW2ldXTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgYVthMltpXV0gPSB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBmb3IgKHZhciBrIGluIGEpIHsKICAgICAgICAgICAgICAgIGRpZmYucHVzaChrKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIGRpZmY7CiAgICAgICAgfQogICAgPC9zY3JpcHQ+CgogICAgICAgICAgCgogICAgICAgIA==
Mit Klick auf "Google Maps laden" willige ich in die Verarbeitung meiner Daten durch Google ein. Diese Einwilligung kann jederzeit mit Wirkung für die Zukunft widerrufen werden. Weitere Informationen können unserer Datenschutzerklärung entnommen werden.