lekhoniya lite
CjxzdHlsZT4KCgogICAgICAubWFpbiB7CiAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgdG9wOiAyMHB4OwogICAgICBsZWZ0OiAxMHB4OwogICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgcGFkZGluZzogNSU7CiAgICAgIGZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjsKICAgICAgZm9udC1zaXplOiAyMnB4OwogICAgICBsaW5lLWhlaWdodDogMS41OwogICAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgICBvdXRsaW5lOiBub25lOwogICAgICB3aWR0aDogOTAlOwogICAgICBoZWlnaHQ6IDgwJTsKICAgICAgei1pbmRleDo5OTk5OTk5OwogICAgICBvdmVyZmxvdzogYXV0bzsgLyogQWRkIHRoaXMgbGluZSB0byBtYWtlIHRoZSBlbGVtZW50IHNjcm9sbGFibGUgKi8KICAgIH0KICAKICAKICAKIAogICAgCiAgICAuYnV0dG9ueCB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwogICAgICBib3JkZXI6IDFweCBzb2xpZCAjMDAwOwogICAgICBib3gtc2hhZG93OiAwIDAgMnB4IHJnYmEoMCwgMCwgMCwgMC41KTsKICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgd2lkdGg6IDMwcHg7CiAgICAgIGhlaWdodDogMzBweDsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICBvcGFjaXR5OjAuODsKICAgIH0KICAgICAgIAogICAgI21lbnUgewogICAgICBkaXNwbGF5OiBub25lOwogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7IAogICAgfQogICAgCiAgICAjbWVudW1vYmlsZSB7CiAgICAgIGRpc3BsYXk6bm9uZTsKICAgICAgcG9zaXRpb246Zml4ZWQ7CiAgICAgIHJpZ2h0OjA7CiAgICAgIHRvcDozMCU7CiAgICB9CgoKICNzaWRlbWVudSB7CiAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgdG9wOiA0NSU7CiAgICAgIHJpZ2h0OiAtMTA7CiAgICAgIGhlaWdodDogMTAlOwogICAgICB3aWR0aDogY2FsYygoOSAvIDIxKSAqICgxMCUgKiAxMDB2aCkpOwogICAgICBvcGFjaXR5OiAwLjM7CiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC41cyBlYXNlOwogICAgfQogICAKICAgCgoKICAgIGgxIHsKICAgICAgZm9udC1zaXplOiAxNXB4OwogICAgfQoKICAgICN0cmFuc2xhdGV4LCBkZWZpbmF0aW9uLCAjc2NpZW5jZSwgI2NhbHh2IHsKICAgICAgYm9yZGVyOiBub25lOwogICAgICBvdXRsaW5lOiBub25lOwogICAgICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsKICAgICAgY29sb3I6IGJsYWNrOwogICAgICB3aWR0aDogOTAlOwogICAgICBwYWRkaW5nOiAyJTsKICAgIH0KCiAgICAjc2VsZWN0ZWR3b3JkLCAjYWN0LCAjcHJlbm90ZXBhZCB7CiAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICB9CgogICAgLmJsb2NrIHsKICAgICAgd2lkdGg6IDIwJTsKICAgICAgaGVpZ2h0OiAzJTsKICAgICAgYm9yZGVyOiBub25lOwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDRBQTZEOwogICAgICBjb2xvcjogd2hpdGU7CiAgICAgIHBhZGRpbmc6IDElOwogICAgICBmb250LXNpemU6IDE1cHg7CiAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgfQoKICAgIC5ibG9jazpob3ZlciB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNkZGQ7CiAgICAgIGNvbG9yOiBibGFjazsKICAgIH0KCiAgICAjc3AgewogICAgICBib3JkZXI6IDFweCBzb2xpZCAjMDAwOwogICAgICBib3gtc2hhZG93OiAwIDAgMTBweCByZ2JhKDAsIDAsIDAsIDAuNSk7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTsKICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDVweCk7CiAgICAgIHdpZHRoOiA1MCU7CiAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgdG9wOiAwOwogICAgICByaWdodDogMDsKICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICAgIGhlaWdodDo5OSU7CiAgICB9CgogICAgLmltYWdlQ29udGFpbmVyIHsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgZ2FwOiAxMHB4OwogICAgfQoKICAgIC5xdWVzdGlvbi1tYXJrIHsKICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICBhbmltYXRpb246IHJvdGF0ZSAycyBpbmZpbml0ZSBsaW5lYXI7CiAgICAgIGZvbnQtc2l6ZTogMjAwcHg7CiAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgdG9wOiA0MCU7CiAgICAgIGxlZnQ6IDQwJTsKICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgICB9CiAgICAKICAgIEBrZXlmcmFtZXMgcm90YXRlIHsKICAgICAgMCUgewogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOwogICAgICB9CiAgICAgIDEwMCUgewogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgICAgIH0KICAgIH0KICAgICNzYXZlIHsKICAgICAgYm9yZGVyOiAxcHggc29saWQgIzAwMDsKICAgICAgYm94LXNoYWRvdzogMCAwIDEwcHggcmdiYSgwLCAwLCAwLCAwLjUpOwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cig1cHgpOwogICAgICB3aWR0aDogMzAlOwogICAgICB0b3A6IDA7CiAgICAgIGxlZnQ6IDA7CiAgICAgIG92ZXJmbG93OiBhdXRvOwogICAgICBoZWlnaHQ6OTklOwogICAgICBwb3NpdGlvbjpmaXhlZDsKICAgICAgCiAgICB9CgogICAgLmlucHV0LWJveCB7CiAgICAgIHBhZGRpbmc6IDEwcHg7CiAgICAgIGJvcmRlcjogMnB4IHNvbGlkICNjY2M7CiAgICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICB3aWR0aDogODAlOwogICAgIAogICAgfQoKICAgIC5pbnB1dC1ib3gyIHsKICAgICAgcGFkZGluZzogMTBweDsKICAgICAgYm9yZGVyOiAycHggc29saWQgI2NjYzsKICAgICAgYm9yZGVyLXJhZGl1czogNXB4OwogICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgIHdpZHRoOiA2MCU7CiAgICAgCiAgICB9CgoKICAgIC5idG4gewogICAgICBwYWRkaW5nOiAxMHB4IDIwcHg7CiAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgYm9yZGVyLXJhZGl1czogNXB4OwogICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgIHdpZHRoOiAyMDBweDsKICAgIH0KCiAgICAuYSB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOwogICAgICBjb2xvcjogI2ZmZjsKICAgICAgd2lkdGg6NTAlOwogICAgfQoKICAgIC5iIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKICAgICAgY29sb3I6ICNmZmY7CiAgICAgIHdpZHRoOjUwJTsKICAgIH0KICAgIAogICAgLmMgewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTc0YzNjOwogICAgICBjb2xvcjogI2ZmZjsKICAgICAgd2lkdGg6NTAlOwogICAgfQoKICAgIC5idG46aG92ZXIgewogICAgICBvcGFjaXR5OiAwLjc7CiAgICB9CgogICAgLmNvcHktYnV0dG9uIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKICAgICAgY29sb3I6IHdoaXRlOwogICAgICBwYWRkaW5nOiAxMHB4OwogICAgICBib3JkZXI6IG5vbmU7CiAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIH0KICAgIAogICAgCiAgICAKICAgIC5zdWJoYW0gewogICAgICBwb3NpdGlvbjpmaXhlZDsKICAgICAgYm90dG9tOiAyMDsKICAgICAgbGVmdDowOwogICAgICB0ZXh0LWFsaWduOmNlbnRlcjsKICAgICAgd2lkdGg6MTAwJTsKICAgICAgCiAgICAgIAogICAgfQogICAgCiAgICAuaGVhZGluZ3sKICAgIHBvc2l0aW9uOmZpeGVkOwogICAgICB0b3A6IDIwOwogICAgICBsZWZ0OjA7CiAgICAgIHRleHQtYWxpZ246Y2VudGVyOwogICAgICB3aWR0aDoxMDAlOwogICAgICBmb250LXNpemU6NDBweDsKICAgICAgCiAgICB9CiAgICAKICAgIC5zdHlsaXNoLXRleHQgewogIGZvbnQtc2l6ZTogMzZweDsKICBjb2xvcjogI2ZmZjsKICB0ZXh0LXNoYWRvdzogMnB4IDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjUpOwp9CiAgICAKICAgIAoKICAgIAogICAjbGVraCB7CiAgcG9zaXRpb246IGZpeGVkOwogIHRvcDogNDUlOwogIGxlZnQ6IDUwJTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICBmb250LXNpemU6IDEwMHB4OwogIGNvbG9yOiB3aGl0ZTsKICB0ZXh0LXNoYWRvdzogMnB4IDJweCA0cHggIzAwMDsKICB6LWluZGV4OiA5OTk5OwogCn0KCgoKCgoKICAgCiAgCiAgIAogICAjbG9hZGluZ3sKcG9zaXRpb246Zml4ZWQ7CmxlZnQ6NDUlOwpib3R0b206MTAlOwp3aWR0aDoxMDAlOwp0ZXh0LWFsaWduOmNlbnRlcjsKY29sb3I6d2hpdGU7CmRpc3BsYXk6bm9uZTsKICAgfQogCiAgIAogICAKICAgIAogIDwvc3R5bGU+CgoKICAgCiAgIAogIAogIAogICAKICAgIDxzcGFuIGlkPSJlZGl0YWJsZVNwYW4iIGNsYXNzPSJtYWluIiBjb250ZW50ZWRpdGFibGU9InRydWUiIG9uY2xpY2s9Im1haW5wKCkiIG9uaW5wdXQ9InVwZGF0ZUxvY2FsU3RvcmFnZSgpIiBzdHlsZT0iei1pbmRleDogMDsiPjwvc3Bhbj4KCgoKPGRpdiBpZD0ibWVudSIgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyBsZWZ0OiA1MjNweDsgdG9wOiAxMjRweDsiPgogICAgPGJ1dHRvbiBjbGFzcz0iYnV0dG9ueCIgb25jbGljaz0iYXBwbHlGb3JtYXR0aW5nKCdyZWQnLCAnYm9sZCcsICdDb21pYyBTYW5zIE1TJywgJzYwcHgnKSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJlZDsiPjwvYnV0dG9uPgogICAgPGJ1dHRvbiBjbGFzcz0iYnV0dG9ueCIgb25jbGljaz0iYXBwbHlGb3JtYXR0aW5nKCdncmVlbicsICdib2xkJywgJ0dlb3JnaWEnLCAnNDVweCcpIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47Ij48L2J1dHRvbj4KICAgIDxidXR0b24gY2xhc3M9ImJ1dHRvbngiIG9uY2xpY2s9ImFwcGx5Rm9ybWF0dGluZygnYmx1ZScsICdib2xkJywnQ2FsaWJyaScsICczNXB4JykiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOyI+PC9idXR0b24+CiAgICA8YnI+CiAgICA8YnV0dG9uIGNsYXNzPSJidXR0b254IiBvbmNsaWNrPSJhcHBseUZvcm1hdHRpbmcoJ2JsYWNrJywgJ25vcm1hbCcsICdBcmlhbCcsICcyMnB4JykiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsiPjwvYnV0dG9uPgogICAgPGJ1dHRvbiBjbGFzcz0iYnV0dG9ueCIgb25jbGljaz0iYXBwbHlCYWNrZ3JvdW5kQ29sb3IoJ3llbGxvdycpIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OyI+PC9idXR0b24+CiAgICA8YnV0dG9uIGNsYXNzPSJidXR0b254IiBvbmNsaWNrPSJhcHBseUZvcm1hdHRpbmcoJ2JsYWNrJywgJ2JvbGQnLCAnQXJpYWwnLCAnMzBweCcsICd1bmRlcmxpbmUnKSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGJyb3duOyI+PC9idXR0b24+CiAgICA8YnI+CiAgICA8YnV0dG9uIGNsYXNzPSJidXR0b254IiBvbmNsaWNrPSJhbmFseSgpIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7IGJvcmRlcjogMXB4IHNvbGlkICNjY2M7d2lkdGg6NDdweDsiPjxzdmcgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj4KICAgICAgICA8Y2lyY2xlIGN4PSIxNCIgY3k9IjExIiByPSI4Ij48L2NpcmNsZT4KICAgICAgICA8bGluZSB4MT0iMjQiIHkxPSIyMSIgeDI9IjE5LjY1IiB5Mj0iMTYuNjUiPjwvbGluZT4KICAgIDwvc3ZnPjwvYnV0dG9uPgogICAgPGJ1dHRvbiBjbGFzcz0iYnV0dG9ueCIgb25jbGljaz0ic2lkZXAyKCkiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtib3JkZXI6IDFweCBzb2xpZCAjY2NjO3dpZHRoOjQ3cHg7Ij48c3ZnPgogICAgICAgIDxjaXJjbGUgY3g9IjUiIGN5PSI2IiByPSIxIj48L2NpcmNsZT4KICAgICAgICA8bGluZSB4MT0iNyIgeTE9IjYiIHgyPSIzMCIgeTI9IjYiIHN0cm9rZT0iYmxhY2siPjwvbGluZT4KICAgICAgICA8Y2lyY2xlIGN4PSI1IiBjeT0iMTMiIHI9IjEiPjwvY2lyY2xlPgogICAgICAgIDxsaW5lIHgxPSI3IiB5MT0iMTMiIHgyPSIzMCIgeTI9IjEzIiBzdHJva2U9ImJsYWNrIj48L2xpbmU+CiAgICAgICAgPGNpcmNsZSBjeD0iNSIgY3k9IjIwIiByPSIxIj48L2NpcmNsZT4KICAgICAgICA8bGluZSB4MT0iNyIgeTE9IjIwIiB4Mj0iMzAiIHkyPSIyMCIgc3Ryb2tlPSJibGFjayI+PC9saW5lPgogICAgPC9zdmc+PC9idXR0b24+CjwvZGl2PgoKCgogIAoKICAKICAKICAKICAKICAKICAKICAKICAKICAKICAKICAKICAKICAKIAogIAogIAogIAogIAogIAogIAogIAo8aW5wdXQgaWQ9Inh4IiB2YWx1ZT0ic3giIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KCgo8dGFibGU+Cjx0Ym9keT48dHI+Cgo8dGggaWQ9InNwIiBzdHlsZT0iZGlzcGxheTpub25lOyI+Cgo8Y2VudGVyPgo8c3BhbiBpZD0id2FpdCIgY2xhc3M9InF1ZXN0aW9uLW1hcmsiPj88L3NwYW4+CgoKPGlucHV0IGlkPSJzZWxlY3RlZHdvcmQiPjxicj4KPGJyPgoKPGRpdiBpZD0iYngiPgo8cCBpZD0idHJhbnNsYXRleCI+PC9wPgo8L2Rpdj4KCjxkaXYgaWQ9ImR4Ij4KPHAgaWQ9ImRlZmluYXRpb24iPjwvcD4KPC9kaXY+CgoKCjxkaXYgaWQ9ImN4Ij4KPGgxPnZhbHVlPC9oMT4KPHRleHRhcmVhIGlkPSJjYWx4diI+PC90ZXh0YXJlYT4KPC9kaXY+Cgo8ZGl2IGlkPSJpbWd4Ij4gCgogIDx0ZXh0YXJlYSBpZD0iaW5wdXRUZXh0QXJlYSIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+PC90ZXh0YXJlYT4KICA8dGV4dGFyZWEgaWQ9Im91dHB1dFRleHRBcmVhIiBzdHlsZT0iZGlzcGxheTpub25lIj48L3RleHRhcmVhPgogIDxkaXYgaWQ9ImltYWdlQ29udGFpbmVyIiBjbGFzcz0iaW1hZ2UtY29udGFpbmVyIj48L2Rpdj4KICA8YnI+CjwvZGl2PgoKPGRpdiBpZD0id3giPgo8aHIgaWQ9InNlcCI+CjxwIGlkPSJzY2llbmNlIj48L3A+CjwvZGl2PgoKCjxpbnB1dCBpZD0iYWN0Ij4KCgoKPC9jZW50ZXI+PC90aD4KPC90cj4KPC90Ym9keT48L3RhYmxlPgoKCgoKCgoKCgoKCiA8ZGl2IGlkPSJzYXZlIiBzdHlsZT0iZGlzcGxheTpub25lIj4KIDxjZW50ZXI+CiAKIAo8ZGl2IHN0eWxlPSJoZWlnaHQ6MjAlIj48L2Rpdj4KCiAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImlucHV0LWJveCIgaWQ9Im5hbWUiIHBsYWNlaG9sZGVyPSJGaWxlIE5hbWUiPiA8YnI+PGJyPgogICAgCiAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iaW5wdXQtYm94IiBpZD0id2hvIiBkaXNhYmxlZD0idHJ1ZSIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+IDxicj48YnI+CiAgICAKICAgIDxidXR0b24gaWQ9ImNyZWF0ZSIgY2xhc3M9ImJ0biBhIj5OZXc8L2J1dHRvbj48YnI+PGJyPgogICAgCiAgICA8YnV0dG9uIGNsYXNzPSJidG4gYiIgaWQ9Im9mZmxpbmUiIG9uY2xpY2s9Im9mZmxpbmUoKSI+RGV2aWNlPC9idXR0b24+PGJyPjxicj4KICAgIAogICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGMiIGlkPSJvbmxpbmUiIG9uY2xpY2s9Im9ubGluZSgpIj5VcGRhdGU8L2J1dHRvbj48YnI+PGJyPgogICAKICAgIDxidXR0b24gY2xhc3M9ImJ0biBjIiBpZD0ib25saW5lZWRpdCIgb25jbGljaz0ib25saW5lZWRpdCgpIj5TZXJ2ZXIgKEVkaXRhYmxlKTwvYnV0dG9uPjxicj48YnI+CiAgICAKICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iaW5wdXQtYm94MiIgaWQ9InNoYXJldXJsIiBwbGFjZWhvbGRlcj0iRmlsZSBVcmwiPgogICAgPGJ1dHRvbiBjbGFzcz0iY29weS1idXR0b24iIG9uY2xpY2s9ImNvcHlUb0NsaXBib2FyZCgpIj5Db3B5PC9idXR0b24+PGJyPgogICAgCiAgICA8c3BhbiBjbGFzcz0ic3ViaGFtIj5Qcm9ncmFtbWVkIGJ5IFN1YmhhbSBNYW5kYWw8L3NwYW4+CiAgICA8L2NlbnRlcj4KICA8L2Rpdj4KICAKICAKICAKICAKICAKICAKICAKICAKICAgCiAgCiAKIDxkaXYgc3R5bGU9ImRpc3BsYXk6bm9uZSI+CiAgPHRleHRhcmVhIGlkPSJvZmZsaW5lcHJlcCIgc3R5bGU9ImRpc3BheTpub25lIj48L3RleHRhcmVhPgogIDx0ZXh0YXJlYSBpZD0idGFyZ2V0VGV4dGFyZWEiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPjwvdGV4dGFyZWE+CiAgPHRleHRhcmVhIGlkPSJuZXdUZXh0IiBzdHlsZT0iZGlzcGxheTpub25lIj48L3RleHRhcmVhPgogIDxpbnB1dCBpZD0ibG9jYWxuZXYiIHN0eWxlPSJkaXNwbGF5Om5vbmUiIHZhbHVlPSJsZWtob25peWEtbG9jYWwiPgogIDxpbnB1dCBpZD0idXNlcmNoZWNrIiBzdHlsZT0iZGlzcGxheTpub25lIj4KICA8aW5wdXQgaWQ9ImRhdGFub2RlIiBzdHlsZT0iZGlzcGxheTpub25lIj4KICA8aW5wdXQgaWQ9ImxvY2FsYWRkcmVzcyIgc3R5bGU9ImRpc3BsYXk6bm9uZSIgdmFsdWU9Imxla2hvbml5YSI+CiAgPC9kaXY+CiAgCiAgCiAgCiAgCiAgCiAgICAgCiAgICAKPHNjcmlwdD4KCnZhciBzZWxlY3RlZFJhbmdlOwoKZnVuY3Rpb24gYXBwbHlGb3JtYXR0aW5nKGNvbG9yLCBmb250V2VpZ2h0LCBmb250RmFtaWx5LCBmb250U2l6ZSwgdGV4dERlY29yYXRpb24pIHsKICAgIHNhdmVTZWxlY3Rpb24oKTsKICAgIHZhciBzcGFuID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLm1haW4nKTsKICAgIHZhciBuZXdOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwogICAgbmV3Tm9kZS5zdHlsZS5jb2xvciA9IGNvbG9yOwogICAgbmV3Tm9kZS5zdHlsZS5mb250V2VpZ2h0ID0gZm9udFdlaWdodDsKICAgIG5ld05vZGUuc3R5bGUuZm9udEZhbWlseSA9IGZvbnRGYW1pbHk7CiAgICBuZXdOb2RlLnN0eWxlLmZvbnRTaXplID0gZm9udFNpemU7CiAgICBuZXdOb2RlLnN0eWxlLnRleHREZWNvcmF0aW9uID0gdGV4dERlY29yYXRpb247CgogICAgaWYgKHNlbGVjdGVkUmFuZ2UudG9TdHJpbmcoKS5sZW5ndGggPiAwKSB7CiAgICAgICAgbmV3Tm9kZS5hcHBlbmRDaGlsZChzZWxlY3RlZFJhbmdlLmV4dHJhY3RDb250ZW50cygpKTsKICAgICAgICBzZWxlY3RlZFJhbmdlLmluc2VydE5vZGUobmV3Tm9kZSk7CiAgICB9IGVsc2UgewogICAgICAgIG5ld05vZGUuaW5uZXJIVE1MID0gJyYjODIwMzsnOyAKICAgICAgICBzZWxlY3RlZFJhbmdlLmluc2VydE5vZGUobmV3Tm9kZSk7CiAgICAgICAgc2VsZWN0ZWRSYW5nZS5zZXRTdGFydEFmdGVyKG5ld05vZGUpOwogICAgICAgIHNlbGVjdGVkUmFuZ2Uuc2V0RW5kQWZ0ZXIobmV3Tm9kZSk7CiAgICAgICAgcmVzdG9yZVNlbGVjdGlvbigpOwogICAgfQp9CgoKZnVuY3Rpb24gYXBwbHlCYWNrZ3JvdW5kQ29sb3IoY29sb3IpIHsKICAgIHNhdmVTZWxlY3Rpb24oKTsKICAgIHZhciBzcGFuID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLm1haW4nKTsKICAgIHZhciBuZXdOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwogICAgbmV3Tm9kZS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsKCiAgICBpZiAoc2VsZWN0ZWRSYW5nZS50b1N0cmluZygpLmxlbmd0aCA+IDApIHsKICAgICAgICBuZXdOb2RlLmFwcGVuZENoaWxkKHNlbGVjdGVkUmFuZ2UuZXh0cmFjdENvbnRlbnRzKCkpOwogICAgICAgIHNlbGVjdGVkUmFuZ2UuaW5zZXJ0Tm9kZShuZXdOb2RlKTsKICAgIH0gZWxzZSB7CiAgICAgICAgbmV3Tm9kZS5pbm5lckhUTUwgPSAnJiM4MjAzOyc7CiAgICAgICAgc2VsZWN0ZWRSYW5nZS5pbnNlcnROb2RlKG5ld05vZGUpOwogICAgICAgIHNlbGVjdGVkUmFuZ2Uuc2V0U3RhcnRBZnRlcihuZXdOb2RlKTsKICAgICAgICBzZWxlY3RlZFJhbmdlLnNldEVuZEFmdGVyKG5ld05vZGUpOwogICAgICAgIHJlc3RvcmVTZWxlY3Rpb24oKTsKICAgIH0KfQoKZnVuY3Rpb24gc2F2ZVNlbGVjdGlvbigpIHsKICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CiAgICBzZWxlY3RlZFJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7Cn0KCmZ1bmN0aW9uIHJlc3RvcmVTZWxlY3Rpb24oKSB7CiAgICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOwogICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpOwogICAgc2VsZWN0aW9uLmFkZFJhbmdlKHNlbGVjdGVkUmFuZ2UpOwp9CgoKZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVkaXRhYmxlU3BhbiIpLmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIiwgZnVuY3Rpb24oZXZlbnQpIHsKICAgIGlmIChldmVudC5rZXkgPT09ICJFbnRlciIpIHsKICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgIGFwcGx5Rm9ybWF0dGluZygnYmxhY2snLCAnbm9ybWFsJywgJ0FyaWFsJywgJzIycHgnKTsKICAgICAgICB2YXIgbmV3TGluZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2JyJyk7CiAgICAgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubWFpbicpOwogICAgICAgIHNwYW4uYXBwZW5kQ2hpbGQobmV3TGluZSk7CiAgICB9Cn0pOwoKCgoKCgoKCjwvc2NyaXB0PgoKCgoKCiA8c2NyaXB0PgogIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgZnVuY3Rpb24gKGV2ZW50KSB7CiAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKCiAgbGV0IG1lbnUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWVudSIpOwogIG1lbnUuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CiAgCiAgLy8gQ2FsY3VsYXRlIHRoZSBhZGp1c3RlZCBwb3NpdGlvbiBhY2NvdW50aW5nIGZvciBzY3JvbGwKICBsZXQgc2Nyb2xsWCA9IHdpbmRvdy5wYWdlWE9mZnNldCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdDsKICBsZXQgc2Nyb2xsWSA9IHdpbmRvdy5wYWdlWU9mZnNldCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wOwogIHZhciBwb3NYID0gZXZlbnQuY2xpZW50WCArIHNjcm9sbFg7CiAgdmFyIHBvc1kgPSBldmVudC5jbGllbnRZICsgc2Nyb2xsWTsKICAKICBtZW51LnN0eWxlLmxlZnQgPSBwb3NYICsgInB4IjsKICBtZW51LnN0eWxlLnRvcCA9IHBvc1kgKyAicHgiOwp9KTsKCmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24gKGV2ZW50KSB7CiAgdmFyIG1lbnUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWVudSIpOwogIG1lbnUuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKfSk7CgoKCiAgIAoKZnVuY3Rpb24gc2lkZW1lbnVvcGVuKCkgewogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaWRlbWVudSIpLnN0eWxlLmRpc3BsYXk9J25vbmUnOwogIAogICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNpZGVtZW51Iikuc3R5bGUuZGlzcGxheT0nYmxvY2snOwogIH0sIDMwMDApOwogIAp9CiAgCgoKICAKICA8L3NjcmlwdD4KCgogIAogIAogIAogIAoKPHNjcmlwdD4KCgpmdW5jdGlvbiBhbmFseSgpewogCiBnZXRXb3JkRGF0YSgpOwogc2lkZXAoKTsKIGRvR2V0KCk7CiBnb1NjaWVuY2UoKTsKIGNhbHgoKTsKIHZpZXdzbGlkZSgpOwogCiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYngiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImR4Iikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjeCIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgid3giKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzZXAiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAKIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbWFnZUNvbnRhaW5lciIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgid2FpdCIpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogCiAKfQoKZnVuY3Rpb24gZ2V0V29yZERhdGEoKSB7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNlbGVjdGVkd29yZCIpLnZhbHVlID0gd2luZG93LmdldFNlbGVjdGlvbigpOwogIGxldCB3b3JkVmFsdWUgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CgogIGZldGNoKGBodHRwczovL2FwaS5kaWN0aW9uYXJ5YXBpLmRldi9hcGkvdjIvZW50cmllcy9lbi8ke3dvcmRWYWx1ZX1gKQogICAgLnRoZW4ocmVzID0+IHJlcy5qc29uKCkpCiAgICAudGhlbihkYXRhID0+IHsKICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlZmluYXRpb24iKS52YWx1ZSA9IGRhdGFbMF0ud29yZCArICIgOiAiICsgZGF0YVswXS5tZWFuaW5nc1swXS5kZWZpbml0aW9uc1swXS5kZWZpbml0aW9uOwogICAgICBkb0dldDEoKTsKICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImR4Iikuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CiAgICAgIAogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndhaXQiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogCiAgICB9KQogICAgLmNhdGNoKGVyciA9PiB7CiAgICAgIGNvbnNvbGUubG9nKGVycik7CiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkeCIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7IC8vIEhpZGUgdGhlICJkeCIgZWxlbWVudCBvbiBlcnJvcgogICAgfSk7Cn0KCgpmdW5jdGlvbiBzaWRlcCgpewpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3AiKS5zdHlsZS5kaXNwbGF5PSJibG9jayI7Cn0KCmZ1bmN0aW9uIHNpZGVwMigpewpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2F2ZSIpLnN0eWxlLmRpc3BsYXk9ImJsb2NrIjsKfQoKZnVuY3Rpb24gbWFpbnAoKXsKZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwIikuc3R5bGUuZGlzcGxheT0ibm9uZSI7CmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzYXZlIikuc3R5bGUuZGlzcGxheT0ibm9uZSI7Cn0KCgoKZnVuY3Rpb24gZG9HZXQoKSB7CiAgdmFyIHNvdXJjZVRleHQgPSAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzZWxlY3RlZHdvcmQiKS52YWx1ZTsgICAKICB2YXIgdXJsID0gImh0dHBzOi8vdHJhbnNsYXRlLmdvb2dsZWFwaXMuY29tL3RyYW5zbGF0ZV9hL3NpbmdsZT9jbGllbnQ9Z3R4JnNsPWVuJnRsPWJuJmR0PXQmcT0iICsgZW5jb2RlVVJJKHNvdXJjZVRleHQpOwogIAogIAogIAogIAoKICB2YXIgcmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwogIHJlcXVlc3Qub3BlbignR0VUJywgdXJsLCB0cnVlKTsKCiAgcmVxdWVzdC5vbmxvYWQgPSAoKSA9PiB7CiAgICBpZiAocmVxdWVzdC5zdGF0dXMgPj0gMjAwICYmIHJlcXVlc3Quc3RhdHVzIDwgNDAwKSB7CiAgICAgIC8vIFN1Y2Nlc3MhCiAgICAgIGxldCBkYXRhID0gSlNPTi5wYXJzZShyZXF1ZXN0LnJlc3BvbnNlVGV4dCk7CiAgICAgIGxldCBmaW5hbHRleHQgPSAnJzsKICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhWzBdLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgZmluYWx0ZXh0ICs9IGRhdGFbMF1baV1bMF07CiAgICAgIH0KICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0cmFuc2xhdGV4IikuaW5uZXJIVE1MID0gc291cmNlVGV4dCArICc8YnI+JyArIiAoICIrIGZpbmFsdGV4dCArIiApICI7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYngiKS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgid2FpdCIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICB9CiAgfTsKICByZXF1ZXN0LnNlbmQoKTsKfQoKZnVuY3Rpb24gZG9HZXQxKCkgewogIHZhciBzb3VyY2VUZXh0MSA9ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlZmluYXRpb24iKS52YWx1ZTsgICAKIHZhciB1cmwxID0gImh0dHBzOi8vdHJhbnNsYXRlLmdvb2dsZWFwaXMuY29tL3RyYW5zbGF0ZV9hL3NpbmdsZT9jbGllbnQ9Z3R4JnNsPWVuJnRsPWJuJmR0PXQmcT0iICsgZW5jb2RlVVJJKHNvdXJjZVRleHQxKTsKICAKICAKCiAgdmFyIHJlcXVlc3QxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAgcmVxdWVzdDEub3BlbignR0VUJywgdXJsMSwgdHJ1ZSk7CgogIHJlcXVlc3QxLm9ubG9hZCA9ICgpID0+IHsKICAgIGlmIChyZXF1ZXN0MS5zdGF0dXMgPj0gMjAwICYmIHJlcXVlc3QxLnN0YXR1cyA8IDQwMCkgewogICAgICAvLyBTdWNjZXNzIQogICAgICBsZXQgZGF0YSA9IEpTT04ucGFyc2UocmVxdWVzdDEucmVzcG9uc2VUZXh0KTsKICAgICAgbGV0IGZpbmFsdGV4dDEgPSAnJzsKICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhWzBdLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgZmluYWx0ZXh0MSArPSBkYXRhWzBdW2ldWzBdOwogICAgICB9CiAgICAgIGxldCBwcmVkPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZWZpbmF0aW9uIikudmFsdWU7CiAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVmaW5hdGlvbiIpLmlubmVySFRNTCA9IHByZWQgKyAnPGJyPjxicj4nICsgZmluYWx0ZXh0MTsgCiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndhaXQiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgfQogIH07CiAgcmVxdWVzdDEuc2VuZCgpOwp9CiAgCiBmdW5jdGlvbiBjYWx4KCkgewogIGxldCBjMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzZWxlY3RlZHdvcmQiKS52YWx1ZTsKICBsZXQgYzIgPSBjMS5yZXBsYWNlKC9cKy9nLCAnJTJCJyk7CiAgbGV0IGN4ID0gYzIucmVwbGFjZSgvXC8vZywgJyUyRicpOwoKICBsZXQgY2FsdXJsID0gImh0dHBzOi8vYXBpLm1hdGhqcy5vcmcvdjQvP2V4cHI9IiArIGN4OwoKICBmZXRjaChjYWx1cmwpCiAgICAudGhlbihyZXMgPT4gcmVzLmpzb24oKSkKICAgIC50aGVuKGRhdGEgPT4gewogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FseHYiKS52YWx1ZSA9IGMxICsgJyA9ICcgKyBkYXRhOwogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY3giKS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndhaXQiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgfSkKICAgIC5jYXRjaChlcnIgPT4gewogICAgICBjb25zb2xlLmxvZyhlcnIpOwogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY3giKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOyAvLyBIaWRlIHRoZSAiY3giIGVsZW1lbnQgb24gZXJyb3IKICAgIH0pOwp9CgogIAoKCiAgICAgICAgPC9zY3JpcHQ+CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgCgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jb2RlLmpxdWVyeS5jb20vanF1ZXJ5LTMuNi4wLm1pbi5qcyI+PC9zY3JpcHQ+Cgo8c2NyaXB0PgpmdW5jdGlvbiBnb1NjaWVuY2UoKSB7CiAgICBsZXQgc2VhcmNoVGVybSA9ICQoJyNzZWxlY3RlZHdvcmQnKS52YWwoKTsKCiAgICAkLmFqYXgoewogICAgICAgIHVybDogJ2h0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93L2FwaS5waHAnLAogICAgICAgIGRhdGE6IHsKICAgICAgICAgICAgYWN0aW9uOiAncXVlcnknLAogICAgICAgICAgICBmb3JtYXQ6ICdqc29uJywKICAgICAgICAgICAgcHJvcDogJ2V4dHJhY3RzJywKICAgICAgICAgICAgZXhpbnRybzogJycsCiAgICAgICAgICAgIHRpdGxlczogc2VhcmNoVGVybQogICAgICAgIH0sCiAgICAgICAgZGF0YVR5cGU6ICdqc29ucCcsCiAgICAgICAgYmVmb3JlU2VuZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIC8vIEhpZGUgJ3d4JyBhbmQgc2hvdyAnd2FpdCcgYmVmb3JlIG1ha2luZyB0aGUgQUpBWCByZXF1ZXN0CiAgICAgICAgICAgICQoJyN3eCcpLmhpZGUoKTsKICAgICAgICAgICAgJCgnI3dhaXQnKS5zaG93KCk7CiAgICAgICAgfSwKICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihkYXRhKSB7CiAgICAgICAgICAgICQoJyN3YWl0JykuaGlkZSgpOwoKICAgICAgICAgICAgdmFyIHBhZ2VzID0gZGF0YS5xdWVyeS5wYWdlczsKICAgICAgICAgICAgdmFyIHBhZ2VJZCA9IE9iamVjdC5rZXlzKHBhZ2VzKVswXTsKICAgICAgICAgICAgdmFyIGV4dHJhY3RIdG1sID0gcGFnZXNbcGFnZUlkXS5leHRyYWN0OwoKICAgICAgICAgICAgLy8gRXh0cmFjdCBwbGFpbiB0ZXh0IGZyb20gSFRNTCByZXNwb25zZQogICAgICAgICAgICB2YXIgZXh0cmFjdCA9ICQoJzxkaXY+JykuaHRtbChleHRyYWN0SHRtbCkudGV4dCgpOwoKICAgICAgICAgICAgLy8gRGlzcGxheSByZXN1bHRzCiAgICAgICAgICAgICQoJyNzY2llbmNlJykuaHRtbChleHRyYWN0KTsKICAgICAgICAgICAgJCgnI3d4Jykuc2hvdygpOwogICAgICAgIH0sCiAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKGVycm9yKSB7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTsKICAgICAgICAgICAgJCgnI3d4JykuaGlkZSgpOwogICAgICAgICAgICAkKCcjd2FpdCcpLmhpZGUoKTsKICAgICAgICB9CiAgICB9KTsKfQoKCgo8L3NjcmlwdD4KCgo8c2NyaXB0PgoKCmZ1bmN0aW9uIHZpZXdzbGlkZSgpewoKCmxldCBpbnB1dGxpbms9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzZWxlY3RlZHdvcmQiKS52YWx1ZTsKCmxldCBpbnB1dGxpbmt4PWlucHV0bGluay50cmltKCkucmVwbGFjZSgvXHMrL2csICctJyk7Cgp2YXIgbWFpbmxpbms9Imh0dHBzOi8vYXBpLmNvZGV0YWJzLmNvbS92MS9wcm94eT9xdWVzdD1odHRwczovL3d3dy5nb29nbGUuY29tL3NlYXJjaD9xPSIraW5wdXRsaW5reCsnLWltYWdlcyc7CmZldGNoKG1haW5saW5rKQogIC50aGVuKAogICAgZnVuY3Rpb24ocmVzcG9uc2UpIHsKICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyAhPT0gMjAwKSB7CiAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2Uuc3RhdHVzKTsKICAgICAgICByZXR1bjsKICAgICAgfQoKICAgICAgcmVzcG9uc2UudGV4dCgpLnRoZW4oZnVuY3Rpb24oZGF0YSkgewogICAgICAgIGNvbnNvbGUubG9nKGRhdGEpOwogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXRUZXh0QXJlYSIpLnZhbHVlPWRhdGE7CiAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgid2FpdCIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgICBjaGVja0ltYWdlUHJlc2VuY2UoKTsKICAgICAgICAgZXh0cmFjdFVSTHMoKTsKICAgICAgICAgZGlzcGxheUltYWdlcygpOwogICAgICAgICAKCn0pOwogICAgfQogICkKICAuY2F0Y2goZnVuY3Rpb24oZXJyKSB7CiAgICBjb25zb2xlLmxvZygnRmV0Y2ggRXJyb3IgOi1TJywgZXJyKTsKICB9KTsKICAgCn0KCjwvc2NyaXB0PgoKCgoKCgogIAogIDxzY3JpcHQ+CmZ1bmN0aW9uIGV4dHJhY3RVUkxzKCkgewogIHZhciBodG1sVGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1dFRleHRBcmVhIikudmFsdWU7CiAgdmFyIHBhdHRlbiA9IC9kYXRhOmltYWdlXC9qcGVnO2Jhc2U2NFteOyddKic7L2c7CiAgdmFyIG1hdGNoZXMgPSBodG1sVGV4dC5tYXRjaChwYXR0ZW4pOwogIHZhciB1bmlxdWVVUkxzID0gZWxpbWluYXRlRHVwbGljYXRlcyhtYXRjaGVzKTsKICB2YXIgdXJscyA9IHVuaXF1ZVVSTHMuam9pbigiXG5cbiIpOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXRUZXh0QXJlYSIpLnZhbHVlID0gdXJscy5yZXBsYWNlKC8nOy9nLCAnJykucmVwbGFjZSgvXFx4M2QvZywgJyAnKTsKICAKCgoKfQoKCiAgICBmdW5jdGlvbiBlbGltaW5hdGVEdXBsaWNhdGVzKHVybHMpIHsKICAgICAgdmFyIHVuaXF1ZVVSTHMgPSBbXTsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1cmxzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgaWYgKCF1bmlxdWVVUkxzLmluY2x1ZGVzKHVybHNbaV0pKSB7CiAgICAgICAgICB1bmlxdWVVUkxzLnB1c2godXJsc1tpXSk7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVuIHVuaXF1ZVVSTHM7CiAgICAgIAogICAgICB9CiAgICAgIAogICAgICAKZnVuY3Rpb24gY2hlY2tJbWFnZVByZXNlbmNlKCkgewogIGxldCBpbnB1dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXRUZXh0QXJlYSIpLnZhbHVlOwogIGxldCBpbWFnZUNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbWFnZUNvbnRhaW5lciIpOwoKICBpZiAoaW5wdXRUZXh0LmluY2x1ZGVzKCJkYXRhOmltYWdlL2pwZWc7YmFzZTY0IikpIHsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzZXAiKS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgIGltYWdlQ29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogIH0gZWxzZSB7CiAgICBpbWFnZUNvbnRhaW5lci5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogIH0KfQoKCiAgICAKICA8L3NjcmlwdD4KICAKICA8c2NyaXB0PgogIGZ1bmN0aW9uIGRpc3BsYXlJbWFnZXMoKSB7CgogICAgdmFyIGltYWdlVXJscyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXRUZXh0QXJlYSIpLnZhbHVlLnNwbGl0KCJcbiIpOwogICAgdmFyIGltYWdlQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImltYWdlQ29udGFpbmVyIik7CgoKICAgIC8vIENsZWFyIGV4aXN0aW5nIGltYWdlcwogICAgaW1hZ2VDb250YWluZXIuaW5uZXJIVE1MID0gIiI7CgogICAgLy8gR2VuZXJhdGUgaW1nIHRhZ3MgZm9yIGVhY2ggVVJMCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGltYWdlVXJscy5sZW5ndGg7IGkrKykgewogICAgICB2YXIgaW1hZ2VVcmwgPSBpbWFnZVVybHNbaV0udHJpbSgpOwogICAgICBpZiAoaW1hZ2VVcmwgIT09ICIiKSB7CiAgICAgICAgdmFyIGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOwogICAgICAgIGltZy5zcmMgPSBpbWFnZVVybDsKICAgICAgICBpbWFnZUNvbnRhaW5lci5hcHBlbmRDaGlsZChpbWcpOwogICAgICB9CiAgICB9CiAgfQo8L3NjcmlwdD4KCgoKCiAgPHNjcmlwdD4KICAgIGZ1bmN0aW9uIHNhdmVUb0xvY2FsU3RvcmFnZSgpIHsKICAgIAogICAgbGV0IGxvY2FsYWRkcmVzcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2NhbGFkZHJlc3MnKS52YWx1ZTsKICAgICAgdmFyIHNwYW5Db250ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRhYmxlU3BhbicpLmlubmVySFRNTDsKICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obG9jYWxhZGRyZXNzLCBzcGFuQ29udGVudCk7CiAgICB9CgogICAgZnVuY3Rpb24gbG9hZEZyb21Mb2NhbFN0b3JhZ2UoKSB7CiAgIHNldFRpbWVvdXQoYXV0aG9yaXR5LDUwMCk7CiAgICAgIHZhciBzcGFuQ29udGVudCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsZWtob25peWEnKTsKICAgICAgaWYgKHNwYW5Db250ZW50KSB7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRhYmxlU3BhbicpLmlubmVySFRNTCA9IHNwYW5Db250ZW50OwogICAgICB9CiAgICB9CgoKCiAgICBmdW5jdGlvbiB1cGRhdGVMb2NhbFN0b3JhZ2UoKSB7CiAgICAgIHNhdmVUb0xvY2FsU3RvcmFnZSgpOwogICAgfQoKIAogIDwvc2NyaXB0PgoKCgoKCgoKCgoKCgoKPHNjcmlwdD4KCnNldEludGVydmFsKGNvcHlUb1RleHRhcmVhKTsKICBmdW5jdGlvbiBjb3B5VG9UZXh0YXJlYSgpIHsKICAgIAogICAgbGV0IHNvdXJjZUNvbnRlbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWRpdGFibGVTcGFuIikub3V0ZXJIVE1MOwogICAgCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibmV3VGV4dCIpLnZhbHVlPXNvdXJjZUNvbnRlbnQ7CiAgICAKICAgCiAgfQo8L3NjcmlwdD4KCgoKCjxzY3JpcHQ+CiAgZnVuY3Rpb24gb2ZmbGluZSgpIHsKICAgCiAgICBsZXQgY29udGVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlZGl0YWJsZVNwYW4iKS5vdXRlckhUTUw7CiAgICAKICAgICBsZXQgbmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJuYW1lIikudmFsdWU7CgogIAogICAgbGV0IGJsb2IgPSBuZXcgQmxvYihbY29udGVudF0sIHsgdHlwZTogInRleHQvaHRtbCIgfSk7CgogICAgCiAgICBsZXQgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTsKCiAgIAogICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7CiAgICBsaW5rLmhyZWYgPSB1cmw7CiAgICBsaW5rLmRvd25sb2FkID0gbmFtZSsiLmh0bWwiOwoKICAgCiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspOwogICAgbGluay5jbGljaygpOwoKCiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspOwogICAgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpOwogIH0KPC9zY3JpcHQ+CgoKCgoKCgoKCgogICAgCjxzY3JpcHQgc3JjPSJodHRwczovL3d3dy5nc3RhdGljLmNvbS9maXJlYmFzZWpzLzguMi4xL2ZpcmViYXNlLWFwcC5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSJodHRwczovL3d3dy5nc3RhdGljLmNvbS9maXJlYmFzZWpzLzguMi4xL2ZpcmViYXNlLWRhdGFiYXNlLmpzIj48L3NjcmlwdD4KCiAgICA8c2NyaXB0PgoKICAgICAgdmFyIGZpcmViYXNlQ29uZmlnID0gewogIGFwaUtleTogIkFJemFTeURFaGdWd3drQ1RzdDBWMURPWlVLdnRqYVhCcHB1TUkzTSIsCiAgYXV0aERvbWFpbjogIm9uZXJlYWx0aW1lc2VydmVyLmZpcmViYXNlYXBwLmNvbSIsCiAgZGF0YWJhc2VVUkw6ICJodHRwczovL29uZXJlYWx0aW1lc2VydmVyLWRlZmF1bHQtcnRkYi5maXJlYmFzZWlvLmNvbSIsCiAgcHJvamVjdElkOiAib25lcmVhbHRpbWVzZXJ2ZXIiLAogIHN0b3JhZ2VCdWNrZXQ6ICJvbmVyZWFsdGltZXNlcnZlci5hcHBzcG90LmNvbSIsCiAgbWVzc2FnaW5nU2VuZGVySWQ6ICIyNjMwNjQ3MTY1NTEiLAogIGFwcElkOiAiMToyNjMwNjQ3MTY1NTE6d2ViOmI1MTU0YjkzYzYyNTQ1ZGZhYTcxYTIiLAogIG1lYXN1cmVtZW50SWQ6ICJHLTkwUDc4U0swUTAiCiAgICAgIH07CgogICAgICBmaXJlYmFzZS5pbml0aWFsaXplQXBwKGZpcmViYXNlQ29uZmlnKTsKCgoKCiAgICAgCiAgICAKCiAgICAgCiAgICA8L3NjcmlwdD4KICAgIAogICA8c2NyaXB0PgogICAgCiAgICBmdW5jdGlvbiBvbmxpbmUoKSB7CiAKCiAKICBsZXQgbmV3VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJuZXdUZXh0IikudmFsdWU7CiAgCiAgIGxldCBkYXRhbm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkYXRhbm9kZSIpLnZhbHVlOwoKICBjb25zdCBkYXRhID0ge307CiAgIGRhdGFbZGF0YW5vZGVdID0gbmV3VGV4dCsiPGlucHV0IGlkPSd1c2VybWFpbicgc3R5bGU9J2Rpc3BsYXk6bm9uZScgdmFsdWU9JyIrbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xla2hvbml5YS11c2VyJykgKyInLz4gICA8aW5wdXQgaWQ9J2NhbmVkaXQnIHN0eWxlPSdkaXNwbGF5Om5vbmUnIHZhbHVlPSdub2VkaXQnPiIgOwoKIGFsZXJ0KGRhdGEpOwogCiAgZmlyZWJhc2UKICAgIC5kYXRhYmFzZSgpCiAgICAucmVmKCdsZWtob25peWEnKQogICAgLnVwZGF0ZShkYXRhKQogICAgLnRoZW4oKCkgPT4gewogICAgCiAgICAgIGNvbnN0IGtleSA9IE9iamVjdC5rZXlzKGRhdGEpWzBdOwogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2hhcmV1cmwiKS52YWx1ZSA9ICdodHRwczovL2xla2hvbml5YS5ibG9nc3BvdC5jb20vJyArIGtleSsnLyc7CiAgICB9KQogICAgLmNhdGNoKChlcnJvcikgPT4gewogICAgICBhbGVydCgnRXJyb3IgdXBkYXRpbmcgZGF0YTogJyArIGVycm9yLm1lc3NhZ2UpOwogICAgfSk7Cn0KICAgCiAgIAogICAgICAgZnVuY3Rpb24gb25saW5lZWRpdCgpIHsKIAogIGxldCBuZXdUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5ld1RleHQiKS52YWx1ZTsKICAKICAgbGV0IGRhdGFub2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRhdGFub2RlIikudmFsdWU7CgogIGNvbnN0IGRhdGEgPSB7fTsKICBkYXRhW2RhdGFub2RlXSA9IG5ld1RleHQrIjxpbnB1dCBpZD0ndXNlcm1haW4nIHN0eWxlPSdkaXNwbGF5Om5vbmUnIHZhbHVlPSciK2xvY2FsU3RvcmFnZS5nZXRJdGVtKCdsZWtob25peWEtdXNlcicpICsiJy8+ICAgPGlucHV0IGlkPSdjYW5lZGl0JyBzdHlsZT0nZGlzcGxheTpub25lJyB2YWx1ZT0neWVzZWRpdCc+IiA7CgoKICBmaXJlYmFzZQogICAgLmRhdGFiYXNlKCkKICAgIC5yZWYoJ2xla2hvbml5YScpCiAgICAudXBkYXRlKGRhdGEpCiAgICAudGhlbigoKSA9PiB7CiAgICAKICAgICAgY29uc3Qga2V5ID0gT2JqZWN0LmtleXMoZGF0YSlbMF07CiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaGFyZXVybCIpLnZhbHVlID0gJ2h0dHBzOi8vbGVraG9uaXlhLmJsb2dzcG90LmNvbS8nICsga2V5KycvJzsKICAgIH0pCiAgICAuY2F0Y2goKGVycm9yKSA9PiB7CiAgICAgIGFsZXJ0KCdFcnJvciB1cGRhdGluZyBkYXRhOiAnICsgZXJyb3IubWVzc2FnZSk7CiAgICB9KTsKfQoKCiBmdW5jdGlvbiBjb3B5VG9DbGlwYm9hcmQoKSB7CiAgICAgICAgY29uc3Qgc2hhcmVVcmwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2hhcmV1cmwiKTsKICAgICAgICBzaGFyZVVybC5zZWxlY3QoKTsKICAgICAgICBzaGFyZVVybC5zZXRTZWxlY3Rpb25SYW5nZSgwLCA5OTk5OSk7IAoKICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiY29weSIpOwoKICAgICAgfQogICAgCiAgICA8L3NjcmlwdD4KICAgIAogICAgCiAgICA8c2NyaXB0PgogIGZ1bmN0aW9uIGNoZWNrVVJMRGlnaXRzKCkgewogIAoKICAgIAogICAgICBzZXRUaW1lb3V0KGxvYWRGcm9tTG9jYWxTdG9yYWdlLDUwMCk7CiAgICAgIAogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9jYWxhZGRyZXNzJykudmFsdWU9J2xla2hvbml5YSc7CiAgICAgIAogICAgICAgdmFyIGhpZGRlbklucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKICBoaWRkZW5JbnB1dC50eXBlID0gImhpZGRlbiI7CiAgaGlkZGVuSW5wdXQudmFsdWUgPSAiIjsKICBoaWRkZW5JbnB1dC5pZCA9ICJ1c2VybWFpbiI7CiAgaGlkZGVuSW5wdXQuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKCiAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChoaWRkZW5JbnB1dCk7CiAgYXV0aG9yaXR5KCk7CiAgc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CiAgICBsZXQgbmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJuYW1lIikudmFsdWUucmVwbGFjZSgvXHMrL2csICdfJyk7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGF0YW5vZGUiKS52YWx1ZSA9IG5hbWUgKyAnLScgKyBEYXRlLm5vdygpOwoKICB9LCAxMDAwKTsKICAKICAKICAgIAogIH0KCiAgLy8gVHJpZ2dlciB0aGUgZnVuY3Rpb24gb24gcGFnZSBsb2FkCiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBjaGVja1VSTERpZ2l0cyk7Cjwvc2NyaXB0PgoKCgo8c2NyaXB0PgogICAgICAgIAogICAgICAgIGZ1bmN0aW9uIGF1dGhvcml0eSgpewogICAgICAgICBsZXQgdXNlcm1haW49ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VzZXJtYWluJykudmFsdWU7CiAgICAgICAgICAgIGxldCB1c2VyY2hlY2s9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VzZXJjaGVjaycpLnZhbHVlOwogICAgICAgICAgICBpZih1c2VybWFpbj09dXNlcmNoZWNrKXsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29ubGluZScpLmlubmVySFRNTD0nVXBkYXRlJzsKICAgICAgICAgICAgfSAgICAgICAgCiAgICAgICAgICAgICBlbHNlewogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb25saW5lJykuaW5uZXJIVE1MPSdTZXJ2ZXInOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGZ1bmN0aW9uIGNoZWNrTG9jYWxTdG9yYWdlKCkgewogICBpbmkoKTsKICAgICAgICAgICAgbGV0IHVzZXJOYW1lID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xla2hvbml5YS11c2VyJyk7CiAgICAgICAgICAgIGlmICh1c2VyTmFtZT09bnVsbCkgewogICAgICAgICAgICAgICBjYW5jZWwKICAgICAgICAgICAgICAgIAogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VzZXJjaGVjaycpLnZhbHVlID0gdXNlck5hbWU7CiAgIAkJCQkKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAKICAgICAgICB9CgogICAgICAgCgogICAgICAgIGZ1bmN0aW9uIGNhbmNlbCgpIHsKICAgICAgICAgICAgIGxldCBuYW1lSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmFtZUlucHV0RmllbGQnKS52YWx1ZS5yZXBsYWNlKC9ccysvZywgJ18nKTsKICAgICAgICAgICAgbGV0IHVzZXJOYW1lID0gJ3VzZXInICsgJy0nICsgRGF0ZS5ub3coKTsKICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2xla2hvbml5YS11c2VyJywgdXNlck5hbWUpOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmFtZURpdicpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd1c2VyY2hlY2snKS52YWx1ZSA9IHVzZXJOYW1lOwogICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZSgpOwogICAgICAgICAgIGZpcmViYXNlLmRhdGFiYXNlKCkucmVmKCJsZWtob25peWFfdXNlciIpLnB1c2godXNlck5hbWUpOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dobycpLnZhbHVlPSdBdXRob3IgOiAnK3VzZXJOYW1lOwogICAgICAgIH0KCiAgICAgICAgd2luZG93Lm9ubG9hZCA9IGNoZWNrTG9jYWxTdG9yYWdlOwogICAgICAgIHdpbmRvdy5vbmxvYWQgPSBzZXRUaW1lb3V0KGNoZWNrTG9jYWxTdG9yYWdlLDEwMDApOwogICAgICAgIAogICAgPC9zY3JpcHQ+CiAgICAKICAgIAogICAgCjxzY3JpcHQ+CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNyZWF0ZSIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKSB7CiAgICB3aW5kb3cub3BlbigiaHR0cHM6Ly9sZWtob25peWEuYmxvZ3Nwb3QuY29tLyIsICJfYmxhbmsiKTsKICAgIHdpbmRvdy5jbG9zZSgpOwogIH0pOwoKICAgCiAKCgogIDwvc2NyaXB0PgogICAKCgo8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iIiBpZD0idXNlcm1haW4iIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+CjxkaXYgc3R5bGU9ImNsZWFyOiBib3RoOyI+PC9kaXY+Cg==
Newer Post
Older Post
Home
Loading...
Programmed by Subham Mandal
▣
✖
Loading...