{
    "id": "event_1e344a8877b69dd9",
    "timestamp": 1778275259,
    "branch_id": "main",
    "parent_event_id": "event_39d66e00c53b46e4",
    "type": "patch_apply",
    "label": "Refonte premium interface statistiques ventes",
    "source": "patch",
    "author": "CNOC",
    "session_id": "43305eb2706f6eee2531a5a173355a18",
    "payload": [
        {
            "path": "stats/assets/css/stats.css",
            "kind": "file",
            "before": {
                "exists": false
            },
            "after": {
                "exists": true,
                "kind": "file",
                "size": 12378,
                "sha1": "78cb2f4b6a027f5f5fdac543ae2cb804c5d412b4",
                "content_b64": "LyogZG9jLXByb2plY3QgfCBzdGF0cy9hc3NldHMvY3NzL3N0YXRzLmNzcyB8IETDqWZpbml0IGxlIHRow6htZSBwcmVtaXVtIHJlc3BvbnNpdmUgZHUgbW9kdWxlIHN0YXRpc3RpcXVlcyBhdmVjIGhlcm8sIGNhcnRlcyBLUEksIHRhYmxlYXV4IGNvbXBhcmF0aWZzLCBmaWx0cmVzLCBib3V0b25zIGV0IMOpdGF0cyB2aXN1ZWxzIGRlIHNhdXZlZ2FyZGUgQUpBWC4gfCBFeHBvc2U6IGF1Y3VuIHwgRMOpcGVuZCBkZTogc3RhdHMvc3RhdHMucGhwLCBCb290c3RyYXAgNCwgY2xhc3NlcyBET00gZHUgbW9kdWxlIHN0YXRzIHwgSW1wYWN0ZTogVUkgc3RhdGlzdGlxdWVzLCBsaXNpYmlsaXTDqSBkZXMgdGFibGVhdXgsIHJlc3BvbnNpdmUgZGVza3RvcC90YWJsZXR0ZS9tb2JpbGUgfCBUYWJsZXM6IGF1Y3VuZSAqLwoKOnJvb3QgewogICAgLS1zdGF0cy1iZzogIzBkMTExNzsKICAgIC0tc3RhdHMtYmctc29mdDogIzExMTgyNzsKICAgIC0tc3RhdHMtcGFuZWw6IHJnYmEoMTgsIDI1LCAzOCwgMC45Mik7CiAgICAtLXN0YXRzLXBhbmVsLXN0cm9uZzogcmdiYSgyNCwgMzQsIDUxLCAwLjk4KTsKICAgIC0tc3RhdHMtYm9yZGVyOiByZ2JhKDE0OCwgMTYzLCAxODQsIDAuMjIpOwogICAgLS1zdGF0cy1ib3JkZXItc3Ryb25nOiByZ2JhKDE0OCwgMTYzLCAxODQsIDAuMzQpOwogICAgLS1zdGF0cy10ZXh0OiAjZjhmYWZjOwogICAgLS1zdGF0cy1tdXRlZDogIzk0YTNiODsKICAgIC0tc3RhdHMtbXV0ZWQtc3Ryb25nOiAjY2JkNWUxOwogICAgLS1zdGF0cy1wcmltYXJ5OiAjMzhiZGY4OwogICAgLS1zdGF0cy1wcmltYXJ5LXN0cm9uZzogIzBlYTVlOTsKICAgIC0tc3RhdHMtc3VjY2VzczogIzIyYzU1ZTsKICAgIC0tc3RhdHMtZGFuZ2VyOiAjZmI3MTg1OwogICAgLS1zdGF0cy13YXJuaW5nOiAjZjU5ZTBiOwogICAgLS1zdGF0cy1zaGFkb3c6IDAgMjRweCA4MHB4IHJnYmEoMCwgMCwgMCwgMC4zOCk7CiAgICAtLXN0YXRzLXJhZGl1cy14bDogMjhweDsKICAgIC0tc3RhdHMtcmFkaXVzLWxnOiAyMHB4OwogICAgLS1zdGF0cy1yYWRpdXMtbWQ6IDE0cHg7Cn0KCiogewogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoKYm9keS5zdGF0cy1wYWdlIHsKICAgIG1pbi1oZWlnaHQ6IDEwMHZoOwogICAgbWFyZ2luOiAwOwogICAgY29sb3I6IHZhcigtLXN0YXRzLXRleHQpOwogICAgYmFja2dyb3VuZDoKICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IHRvcCBsZWZ0LCByZ2JhKDU2LCAxODksIDI0OCwgMC4xOCksIHRyYW5zcGFyZW50IDM0cmVtKSwKICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IHRvcCByaWdodCwgcmdiYSgyNDUsIDE1OCwgMTEsIDAuMTIpLCB0cmFuc3BhcmVudCAzMHJlbSksCiAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzBhMGYxZCAwJSwgIzExMTgyNyA0MiUsICMwNzBhMTIgMTAwJSk7CiAgICBmb250LWZhbWlseTogSW50ZXIsIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgIlNlZ29lIFVJIiwgc2Fucy1zZXJpZjsKfQoKLnN0YXRzLXBhZ2UgLmNvbnRhaW5lciB7CiAgICB3aWR0aDogbWluKDEwMCUsIDE0ODBweCk7CiAgICBtYXgtd2lkdGg6IG5vbmU7CiAgICBwYWRkaW5nOiAyOHB4Owp9Cgouc3RhdHMtaGVybyB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgIGdhcDogMjRweDsKICAgIG1hcmdpbjogOHB4IDAgMjJweDsKICAgIHBhZGRpbmc6IDMwcHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zdGF0cy1ib3JkZXIpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3RhdHMtcmFkaXVzLXhsKTsKICAgIGJhY2tncm91bmQ6CiAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgxNSwgMjMsIDQyLCAwLjk2KSwgcmdiYSgzMCwgNDEsIDU5LCAwLjc4KSksCiAgICAgICAgbGluZWFyLWdyYWRpZW50KDkwZGVnLCByZ2JhKDU2LCAxODksIDI0OCwgMC4xMiksIHJnYmEoMjQ1LCAxNTgsIDExLCAwLjEwKSk7CiAgICBib3gtc2hhZG93OiB2YXIoLS1zdGF0cy1zaGFkb3cpOwogICAgdGV4dC1hbGlnbjogbGVmdDsKfQoKLnN0YXRzLWhlcm8gaDEgewogICAgbWFyZ2luOiAwOwogICAgZm9udC1zaXplOiBjbGFtcCgycmVtLCA0dncsIDQuMnJlbSk7CiAgICBsaW5lLWhlaWdodDogMC45NTsKICAgIGZvbnQtd2VpZ2h0OiA5MDA7CiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDdlbTsKfQoKLnN0YXRzLWhlcm8gcCB7CiAgICBtYXgtd2lkdGg6IDc2MHB4OwogICAgbWFyZ2luOiAxNHB4IDAgMDsKICAgIGNvbG9yOiB2YXIoLS1zdGF0cy1tdXRlZC1zdHJvbmcpOwogICAgZm9udC1zaXplOiAxLjA1cmVtOwp9CgouZXllYnJvdyB7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBnYXA6IDhweDsKICAgIG1hcmdpbi1ib3R0b206IDEycHg7CiAgICBjb2xvcjogdmFyKC0tc3RhdHMtcHJpbWFyeSk7CiAgICBmb250LXNpemU6IDAuNzhyZW07CiAgICBmb250LXdlaWdodDogODAwOwogICAgbGV0dGVyLXNwYWNpbmc6IDAuMTZlbTsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7Cn0KCi5leWVicm93OjpiZWZvcmUgewogICAgY29udGVudDogIiI7CiAgICB3aWR0aDogMTBweDsKICAgIGhlaWdodDogMTBweDsKICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4OwogICAgYmFja2dyb3VuZDogdmFyKC0tc3RhdHMtc3VjY2Vzcyk7CiAgICBib3gtc2hhZG93OiAwIDAgMThweCByZ2JhKDM0LCAxOTcsIDk0LCAwLjc4KTsKfQoKLnN0YXRzLXJlZnJlc2gtYnV0dG9uIHsKICAgIGZsZXg6IDAgMCBhdXRvOwogICAgbWluLWhlaWdodDogNTJweDsKICAgIHBhZGRpbmctaW5saW5lOiAyMnB4OwogICAgYm9yZGVyOiAwOwogICAgYm9yZGVyLXJhZGl1czogOTk5cHg7CiAgICBjb2xvcjogIzExMTgyNzsKICAgIGZvbnQtd2VpZ2h0OiA5MDA7CiAgICBib3gtc2hhZG93OiAwIDE2cHggMzRweCByZ2JhKDI0NSwgMTU4LCAxMSwgMC4yMik7Cn0KCi5zdGF0cy1rcGktZ3JpZCB7CiAgICBkaXNwbGF5OiBncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpOwogICAgZ2FwOiAxNnB4OwogICAgbWFyZ2luLWJvdHRvbTogMjBweDsKfQoKLnN0YXRzLWtwaS1jYXJkIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBtaW4taGVpZ2h0OiAxNDJweDsKICAgIHBhZGRpbmc6IDIycHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zdGF0cy1ib3JkZXIpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3RhdHMtcmFkaXVzLWxnKTsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxNjBkZWcsIHJnYmEoMTUsIDIzLCA0MiwgMC45NiksIHJnYmEoMzAsIDQxLCA1OSwgMC43OCkpOwogICAgYm94LXNoYWRvdzogMCAxOHB4IDQ4cHggcmdiYSgwLCAwLCAwLCAwLjI0KTsKICAgIHRleHQtYWxpZ246IGxlZnQ7Cn0KCi5zdGF0cy1rcGktY2FyZDo6YWZ0ZXIgewogICAgY29udGVudDogIiI7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBpbnNldDogYXV0byAtNDBweCAtNzBweCBhdXRvOwogICAgd2lkdGg6IDE4MHB4OwogICAgaGVpZ2h0OiAxODBweDsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIGJhY2tncm91bmQ6IHJnYmEoNTYsIDE4OSwgMjQ4LCAwLjEwKTsKfQoKLnN0YXRzLWtwaS1sYWJlbCB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICBjb2xvcjogdmFyKC0tc3RhdHMtbXV0ZWQpOwogICAgZm9udC1zaXplOiAwLjc4cmVtOwogICAgZm9udC13ZWlnaHQ6IDgwMDsKICAgIGxldHRlci1zcGFjaW5nOiAwLjA5ZW07CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwp9Cgouc3RhdHMta3BpLWNhcmQgc3Ryb25nIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgZm9udC1zaXplOiBjbGFtcCgxLjhyZW0sIDN2dywgMy4ycmVtKTsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgbGV0dGVyLXNwYWNpbmc6IC0wLjA1ZW07Cn0KCi5zdGF0cy1rcGktY2FyZCBzbWFsbCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgIG1hcmdpbi10b3A6IDEycHg7CiAgICBwYWRkaW5nOiA2cHggMTBweDsKICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4OwogICAgY29sb3I6IHZhcigtLXN0YXRzLW11dGVkLXN0cm9uZyk7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDE0OCwgMTYzLCAxODQsIDAuMTIpOwogICAgZm9udC13ZWlnaHQ6IDgwMDsKfQoKLnN0YXRzLWtwaS1jYXJkIHNtYWxsLmlzLXBvc2l0aXZlIHsKICAgIGNvbG9yOiAjYmJmN2QwOwogICAgYmFja2dyb3VuZDogcmdiYSgzNCwgMTk3LCA5NCwgMC4xNCk7Cn0KCi5zdGF0cy1rcGktY2FyZCBzbWFsbC5pcy1uZWdhdGl2ZSB7CiAgICBjb2xvcjogI2ZlY2RkMzsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjUxLCAxMTMsIDEzMywgMC4xNCk7Cn0KCi5zdGF0cy10b29sYmFyIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBnYXA6IDE0cHg7CiAgICBtYXJnaW46IDAgMCAyMnB4OwogICAgcGFkZGluZzogMThweDsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN0YXRzLWJvcmRlcik7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zdGF0cy1yYWRpdXMtbGcpOwogICAgYmFja2dyb3VuZDogcmdiYSgxNSwgMjMsIDQyLCAwLjcyKTsKICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxNnB4KTsKfQoKLnN0YXRzLXRvb2xiYXIgLmJ0biwKLnN0YXRzLXNlY3Rpb24gLmJ0biwKLmFjdGlvbi1idXR0b24gewogICAgYm9yZGVyLXJhZGl1czogOTk5cHg7CiAgICBmb250LXdlaWdodDogODAwOwp9Cgouc3RhdHMtdG9vbGJhciAuYnRuLWdyb3VwIC5idG4sCi5zdGF0cy1zZWN0aW9uIC5idG4gewogICAgYm9yZGVyLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpOwp9Cgouc3RhdHMtdG9vbGJhciAuYnRuLmFjdGl2ZSB7CiAgICBvdXRsaW5lOiAzcHggc29saWQgcmdiYSg1NiwgMTg5LCAyNDgsIDAuMjApOwogICAgYm94LXNoYWRvdzogMCAwIDAgMXB4IHJnYmEoMjQ4LCAyNTAsIDI1MiwgMC4xOCkgaW5zZXQ7Cn0KCi5kYXRlcGlja2VyLWNvbnRhaW5lciB7CiAgICBtYXJnaW46IDA7Cn0KCi5kYXRlcGlja2VyLWNvbnRhaW5lciBmb3JtIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBnYXA6IDEwcHg7CiAgICBtYXJnaW46IDA7Cn0KCi5zdGF0cy1wYWdlIGxhYmVsIHsKICAgIG1hcmdpbjogMDsKICAgIGNvbG9yOiB2YXIoLS1zdGF0cy1tdXRlZC1zdHJvbmcpOwogICAgZm9udC13ZWlnaHQ6IDgwMDsKfQoKLnN0YXRzLXBhZ2UgaW5wdXRbdHlwZT0iZGF0ZSJdIHsKICAgIG1pbi1oZWlnaHQ6IDQwcHg7CiAgICBwYWRkaW5nOiA4cHggMTJweDsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN0YXRzLWJvcmRlci1zdHJvbmcpOwogICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgIGNvbG9yOiB2YXIoLS1zdGF0cy10ZXh0KTsKICAgIGJhY2tncm91bmQ6IHJnYmEoMTUsIDIzLCA0MiwgMC45KTsKfQoKLnN0YXRzLXNlY3Rpb24tdGl0bGUgewogICAgbWFyZ2luOiAyMHB4IDAgMTRweDsKICAgIGNvbG9yOiB2YXIoLS1zdGF0cy10ZXh0KTsKICAgIGZvbnQtc2l6ZTogMS41NXJlbTsKICAgIGZvbnQtd2VpZ2h0OiA5MDA7CiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDRlbTsKfQoKLnRhYmxlLXdyYXBwZXIgewogICAgbWF4LXdpZHRoOiAxMDAlOwogICAgbWFyZ2luLWJvdHRvbTogMjJweDsKICAgIG92ZXJmbG93LXg6IGF1dG87CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zdGF0cy1ib3JkZXIpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3RhdHMtcmFkaXVzLWxnKTsKICAgIGJhY2tncm91bmQ6IHJnYmEoMTUsIDIzLCA0MiwgMC43Nik7CiAgICBib3gtc2hhZG93OiB2YXIoLS1zdGF0cy1zaGFkb3cpOwp9CgoudGFibGUtd3JhcHBlcjo6LXdlYmtpdC1zY3JvbGxiYXIgewogICAgaGVpZ2h0OiAxMnB4Owp9CgoudGFibGUtd3JhcHBlcjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sgewogICAgYmFja2dyb3VuZDogcmdiYSgxNSwgMjMsIDQyLCAwLjkpOwp9CgoudGFibGUtd3JhcHBlcjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIgewogICAgYm9yZGVyOiAzcHggc29saWQgcmdiYSgxNSwgMjMsIDQyLCAwLjkpOwogICAgYm9yZGVyLXJhZGl1czogOTk5cHg7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDE0OCwgMTYzLCAxODQsIDAuNzUpOwp9CgouY3VzdG9tLXRhYmxlIHsKICAgIG1pbi13aWR0aDogOTgwcHg7CiAgICBtYXJnaW46IDA7CiAgICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlOwogICAgYm9yZGVyLXNwYWNpbmc6IDA7CiAgICBjb2xvcjogdmFyKC0tc3RhdHMtdGV4dCk7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKfQoKLmN1c3RvbS10YWJsZSB0aCwKLmN1c3RvbS10YWJsZSB0ZCB7CiAgICBtaW4td2lkdGg6IDE1MHB4OwogICAgcGFkZGluZzogMTZweDsKICAgIGJvcmRlcjogMDsKICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHJnYmEoMTQ4LCAxNjMsIDE4NCwgMC4xNCk7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgxNDgsIDE2MywgMTg0LCAwLjE0KTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9CgouY3VzdG9tLXRhYmxlIHRoZWFkIHRoIHsKICAgIHBvc2l0aW9uOiBzdGlja3k7CiAgICB0b3A6IDA7CiAgICB6LWluZGV4OiA1OwogICAgY29sb3I6ICNkYmVhZmU7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCByZ2JhKDMwLCA0MSwgNTksIDAuOTgpLCByZ2JhKDE1LCAyMywgNDIsIDAuOTgpKTsKICAgIGZvbnQtd2VpZ2h0OiA5MDA7Cn0KCi5jdXN0b20tdGFibGUgdGguc3RpY2t5LWNvbCwKLmN1c3RvbS10YWJsZSB0ZC5zdGlja3ktY29sLAouY3VzdG9tLXRhYmxlIHRib2R5IHRoLnN0aWNreS1jb2wgewogICAgcG9zaXRpb246IHN0aWNreTsKICAgIGxlZnQ6IDA7CiAgICB6LWluZGV4OiA2OwogICAgbWluLXdpZHRoOiAyMjBweDsKICAgIGNvbG9yOiB2YXIoLS1zdGF0cy10ZXh0KTsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgcmdiYSgxNSwgMjMsIDQyLCAwLjk4KSwgcmdiYSgzMCwgNDEsIDU5LCAwLjk4KSk7CiAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgZm9udC13ZWlnaHQ6IDkwMDsKfQoKLmN1c3RvbS10YWJsZSB0Ym9keSB0cjpob3ZlciB0ZCwKLmN1c3RvbS10YWJsZSB0Ym9keSB0cjpob3ZlciB0aCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDU2LCAxODksIDI0OCwgMC4wOCk7Cn0KCi5jdXN0b20tdGFibGUgLmN1cnJlbnQtd2VlayB7CiAgICBjb2xvcjogI2Y4ZmFmYzsKfQoKLmNlbGwtY29udGVudCB7CiAgICBkaXNwbGF5OiBncmlkOwogICAgZ2FwOiA4cHg7CiAgICBtYXgtaGVpZ2h0OiAxNThweDsKICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICBwYWRkaW5nLXJpZ2h0OiA0cHg7CiAgICB0ZXh0LWFsaWduOiBsZWZ0Owp9CgoueWVhci12YWx1ZSB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgIGdhcDogMTBweDsKICAgIG1pbi1oZWlnaHQ6IDM0cHg7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiA3cHggMTBweDsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTQ4LCAxNjMsIDE4NCwgMC4xMyk7CiAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgY29sb3I6IHZhcigtLXN0YXRzLW11dGVkLXN0cm9uZyk7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDE1LCAyMywgNDIsIDAuNTgpOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMTZzIGVhc2UsIGJvcmRlci1jb2xvciAwLjE2cyBlYXNlLCBiYWNrZ3JvdW5kIDAuMTZzIGVhc2U7Cn0KCi55ZWFyLXZhbHVlOjpiZWZvcmUgewogICAgY29udGVudDogYXR0cihkYXRhLXllYXIpOwogICAgY29sb3I6IHZhcigtLXN0YXRzLW11dGVkKTsKICAgIGZvbnQtc2l6ZTogMC43M3JlbTsKICAgIGZvbnQtd2VpZ2h0OiA5MDA7Cn0KCi55ZWFyLXZhbHVlOmhvdmVyIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTsKICAgIGJvcmRlci1jb2xvcjogcmdiYSg1NiwgMTg5LCAyNDgsIDAuNDgpOwogICAgYmFja2dyb3VuZDogcmdiYSg1NiwgMTg5LCAyNDgsIDAuMTApOwp9CgoueWVhci12YWx1ZS5jdXJyZW50LXllYXItdmFsdWUgewogICAgY29sb3I6ICNmZmZmZmY7CiAgICBib3JkZXItY29sb3I6IHJnYmEoNTYsIDE4OSwgMjQ4LCAwLjQ4KTsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMTQsIDE2NSwgMjMzLCAwLjI0KSwgcmdiYSgxNSwgMjMsIDQyLCAwLjcyKSk7CiAgICBmb250LXdlaWdodDogOTAwOwp9CgoueWVhci12YWx1ZS5pcy1zYXZpbmcgewogICAgb3BhY2l0eTogMC43MjsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwp9CgoueWVhci12YWx1ZS5pcy1zYXZlZCB7CiAgICBib3JkZXItY29sb3I6IHJnYmEoMzQsIDE5NywgOTQsIDAuNjIpOwp9CgoueWVhci12YWx1ZS5pcy1lcnJvciB7CiAgICBib3JkZXItY29sb3I6IHJnYmEoMjUxLCAxMTMsIDEzMywgMC43NSk7Cn0KCi5hY3Rpb24tYnV0dG9uIHsKICAgIHdpZHRoOiAxMDAlOwogICAgbWluLWhlaWdodDogMzRweDsKICAgIHBhZGRpbmc6IDZweCAxMnB4OwogICAgYm9yZGVyOiAwOwogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3RhdHMtcHJpbWFyeSksIHZhcigtLXN0YXRzLXByaW1hcnktc3Ryb25nKSk7CiAgICBib3gtc2hhZG93OiAwIDEwcHggMjBweCByZ2JhKDE0LCAxNjUsIDIzMywgMC4yMCk7Cn0KCi5zdGF0cy1zZWN0aW9uIHsKICAgIG1hcmdpbi10b3A6IDMycHg7CiAgICBwYWRkaW5nOiAyOHB4OwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3RhdHMtYm9yZGVyKTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN0YXRzLXJhZGl1cy14bCk7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zdGF0cy1wYW5lbCk7CiAgICBib3gtc2hhZG93OiB2YXIoLS1zdGF0cy1zaGFkb3cpOwogICAgdGV4dC1hbGlnbjogbGVmdDsKfQoKLnN0YXRzLXNlY3Rpb24gaDMsCi5zdGF0cy1zZWN0aW9uIGg0IHsKICAgIGNvbG9yOiB2YXIoLS1zdGF0cy10ZXh0KTsKICAgIGZvbnQtd2VpZ2h0OiA5MDA7CiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDNlbTsKfQoKLnN0YXRzLXNlY3Rpb24gaDMgewogICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgIGZvbnQtc2l6ZTogMS42cmVtOwp9Cgouc3RhdHMtc2VjdGlvbiBoNCB7CiAgICBtYXJnaW46IDI0cHggMCAxNnB4OwogICAgY29sb3I6IHZhcigtLXN0YXRzLW11dGVkLXN0cm9uZyk7CiAgICBmb250LXNpemU6IDEuMDVyZW07CiAgICBsaW5lLWhlaWdodDogMS41NTsKfQoKLmZvcm0tc2VjdGlvbiB7CiAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgcGFkZGluZzogMThweDsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN0YXRzLWJvcmRlcik7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zdGF0cy1yYWRpdXMtbGcpOwogICAgYmFja2dyb3VuZDogcmdiYSgxNSwgMjMsIDQyLCAwLjcyKTsKfQoKLmZvcm0tc2VjdGlvbiBoNCB7CiAgICBtYXJnaW46IDAgMCAxNHB4OwogICAgY29sb3I6IHZhcigtLXN0YXRzLXRleHQpOwogICAgZm9udC1zaXplOiAxLjA1cmVtOwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CgoucmFkaW8tZ3JvdXAgewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgZ2FwOiAxMnB4OwogICAgbWFyZ2luLWJvdHRvbTogMDsKfQoKLnJhZGlvLWdyb3VwIGRpdiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBnYXA6IDhweDsKICAgIHBhZGRpbmc6IDEwcHggMTRweDsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN0YXRzLWJvcmRlcik7CiAgICBib3JkZXItcmFkaXVzOiA5OTlweDsKICAgIGJhY2tncm91bmQ6IHJnYmEoMzAsIDQxLCA1OSwgMC43OCk7Cn0KCi5yYWRpby1ncm91cCBpbnB1dCB7CiAgICBhY2NlbnQtY29sb3I6IHZhcigtLXN0YXRzLXByaW1hcnkpOwp9CgojY3VzdG9tUGVyaW9kSW5wdXRzIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgICBtYXJnaW4tdG9wOiAxNnB4Owp9CgojY3VzdG9tUGVyaW9kSW5wdXRzW3N0eWxlKj0iZGlzcGxheTogbm9uZSJdIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQoKI2N1c3RvbVBlcmlvZElucHV0cyBsYWJlbCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBtaW4td2lkdGg6IDEyMHB4OwogICAgbWFyZ2luOiA4cHggMDsKfQoKLnN0YXRzLXRhYmxlIHsKICAgIHdpZHRoOiAxMDAlOwogICAgbWF4LXdpZHRoOiA5NDBweDsKICAgIG1hcmdpbjogMCBhdXRvOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7CiAgICBib3JkZXItc3BhY2luZzogMDsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN0YXRzLWJvcmRlcik7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zdGF0cy1yYWRpdXMtbGcpOwogICAgYmFja2dyb3VuZDogcmdiYSgxNSwgMjMsIDQyLCAwLjgyKTsKfQoKLnN0YXRzLXRhYmxlIHRoLAouc3RhdHMtdGFibGUgdGQgewogICAgcGFkZGluZzogMTVweDsKICAgIGJvcmRlcjogMDsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDE0OCwgMTYzLCAxODQsIDAuMTQpOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9Cgouc3RhdHMtdGFibGUgdGggewogICAgY29sb3I6ICNkYmVhZmU7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDMwLCA0MSwgNTksIDAuOTIpOwogICAgZm9udC13ZWlnaHQ6IDkwMDsKfQoKLnN0YXRzLXRhYmxlIHRyOmxhc3QtY2hpbGQgdGQgewogICAgYm9yZGVyLWJvdHRvbTogMDsKfQoKLnN0YXRzLXRhYmxlIHRkLmN1cnJlbnQteWVhciB7CiAgICBjb2xvcjogI2ZmZmZmZjsKICAgIGJhY2tncm91bmQ6IHJnYmEoNTYsIDE4OSwgMjQ4LCAwLjEwKTsKICAgIGZvbnQtd2VpZ2h0OiA5MDA7Cn0KCi5zdGF0cy10YWJsZSB0ZC5vdGhlci15ZWFyIHsKICAgIGNvbG9yOiB2YXIoLS1zdGF0cy1tdXRlZC1zdHJvbmcpOwp9CgpAbWVkaWEgKG1heC13aWR0aDogOTAwcHgpIHsKICAgIC5zdGF0cy1wYWdlIC5jb250YWluZXIgewogICAgICAgIHBhZGRpbmc6IDE4cHg7CiAgICB9CgogICAgLnN0YXRzLWhlcm8gewogICAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoOwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgcGFkZGluZzogMjJweDsKICAgIH0KCiAgICAuc3RhdHMta3BpLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOwogICAgfQoKICAgIC5zdGF0cy10b29sYmFyIHsKICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgfQoKICAgIC5kYXRlcGlja2VyLWNvbnRhaW5lciBmb3JtIHsKICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDogNTc2cHgpIHsKICAgIC5zdGF0cy1wYWdlIC5jb250YWluZXIgewogICAgICAgIHBhZGRpbmc6IDE0cHg7CiAgICB9CgogICAgLnN0YXRzLWhlcm8gaDEgewogICAgICAgIGZvbnQtc2l6ZTogMi4ycmVtOwogICAgfQoKICAgIC5jdXN0b20tdGFibGUgewogICAgICAgIG1pbi13aWR0aDogODQwcHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgfQoKICAgIC5jdXN0b20tdGFibGUgdGgsCiAgICAuY3VzdG9tLXRhYmxlIHRkIHsKICAgICAgICBtaW4td2lkdGg6IDEyNnB4OwogICAgICAgIHBhZGRpbmc6IDEycHg7CiAgICB9CgogICAgLmN1c3RvbS10YWJsZSB0aC5zdGlja3ktY29sLAogICAgLmN1c3RvbS10YWJsZSB0ZC5zdGlja3ktY29sLAogICAgLmN1c3RvbS10YWJsZSB0Ym9keSB0aC5zdGlja3ktY29sIHsKICAgICAgICBtaW4td2lkdGg6IDE4MHB4OwogICAgfQoKICAgIC5zdGF0cy1zZWN0aW9uIHsKICAgICAgICBwYWRkaW5nOiAxOHB4OwogICAgfQp9"
            }
        },
        {
            "path": "stats/assets/js/stats.js",
            "kind": "file",
            "before": {
                "exists": false
            },
            "after": {
                "exists": true,
                "kind": "file",
                "size": 7419,
                "sha1": "2476b44f2e568a5ed88759fb0c06c071040b9048",
                "content_b64": "LyogZG9jLXByb2plY3QgfCBzdGF0cy9hc3NldHMvanMvc3RhdHMuanMgfCBHw6hyZSBsZXMgaW50ZXJhY3Rpb25zIGZyb250IGR1IG1vZHVsZSBzdGF0aXN0aXF1ZXM6IHNjcm9sbCBzeW5jaHJvbmlzw6ksIHJlY2VudHJhZ2UgZGUgc2VtYWluZSwgw6lkaXRpb24gQUpBWCwgcsOpY3Vww6lyYXRpb24gZGVzIHZlbnRlcywgcMOpcmlvZGUgcGVyc29ubmFsaXPDqWUgZXQgcmV0b3VycyB2aXN1ZWxzLiB8IEV4cG9zZTogYXVjdW4gfCBEw6lwZW5kIGRlOiBzdGF0cy9zdGF0cy5waHAsIGpRdWVyeSwgdXBkYXRlX2V2ZW50LnBocCwgZmlsbF90YWJsZS5waHAgfCBJbXBhY3RlOiBVWCBzdGF0aXN0aXF1ZXMsIGFwcGVscyBBSkFYLCByYWZyYcOuY2hpc3NlbWVudCBkZXMgZG9ubsOpZXMgYWZmaWNow6llcyB8IFRhYmxlczogYXVjdW5lICovCgooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIGNvbnN0IHBhZ2UgPSBkb2N1bWVudC5ib2R5OwogICAgY29uc3Qgc2VsZWN0ZWREYXRlID0gcGFnZSA/IHBhZ2UuZGF0YXNldC5zZWxlY3RlZERhdGUgfHwgJycgOiAnJzsKICAgIGNvbnN0IGN1cnJlbnRMb2NhdGlvbiA9IHBhZ2UgPyBwYWdlLmRhdGFzZXQubG9jYXRpb24gfHwgJ3BlbGlzc2FubmUnIDogJ3BlbGlzc2FubmUnOwogICAgY29uc3QgdGFibGVXcmFwcGVycyA9IEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRhYmxlLXdyYXBwZXInKSk7CgogICAgZnVuY3Rpb24gc2V0QnVzeShlbGVtZW50LCBpc0J1c3kpIHsKICAgICAgICBpZiAoIWVsZW1lbnQpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgZWxlbWVudC5kaXNhYmxlZCA9IEJvb2xlYW4oaXNCdXN5KTsKICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoJ2lzLXNhdmluZycsIEJvb2xlYW4oaXNCdXN5KSk7CiAgICB9CgogICAgZnVuY3Rpb24gbWFya1N0YXR1cyhlbGVtZW50LCBzdGF0dXNDbGFzcykgewogICAgICAgIGlmICghZWxlbWVudCkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2lzLXNhdmVkJywgJ2lzLWVycm9yJyk7CiAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKHN0YXR1c0NsYXNzKTsKCiAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoc3RhdHVzQ2xhc3MpOwogICAgICAgIH0sIDEyMDApOwogICAgfQoKICAgIGZ1bmN0aW9uIHN5bmNTY3JvbGwoc291cmNlKSB7CiAgICAgICAgdGFibGVXcmFwcGVycy5mb3JFYWNoKGZ1bmN0aW9uICh3cmFwcGVyKSB7CiAgICAgICAgICAgIGlmICh3cmFwcGVyICE9PSBzb3VyY2UpIHsKICAgICAgICAgICAgICAgIHdyYXBwZXIuc2Nyb2xsTGVmdCA9IHNvdXJjZS5zY3JvbGxMZWZ0OwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9CgogICAgZnVuY3Rpb24gYmluZFRhYmxlU2Nyb2xsU3luYygpIHsKICAgICAgICB0YWJsZVdyYXBwZXJzLmZvckVhY2goZnVuY3Rpb24gKHdyYXBwZXIpIHsKICAgICAgICAgICAgd3JhcHBlci5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBzeW5jU2Nyb2xsKHdyYXBwZXIpOwogICAgICAgICAgICB9LCB7IHBhc3NpdmU6IHRydWUgfSk7CiAgICAgICAgfSk7CiAgICB9CgogICAgZnVuY3Rpb24gc2Nyb2xsVG9TZWxlY3RlZFdlZWsoKSB7CiAgICAgICAgaWYgKCFzZWxlY3RlZERhdGUpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgdGFibGVXcmFwcGVycy5mb3JFYWNoKGZ1bmN0aW9uICh3cmFwcGVyKSB7CiAgICAgICAgICAgIGNvbnN0IHRhYmxlID0gd3JhcHBlci5xdWVyeVNlbGVjdG9yKCd0YWJsZScpOwogICAgICAgICAgICBpZiAoIXRhYmxlKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IHRhYmxlLnF1ZXJ5U2VsZWN0b3IoJ3RoW2RhdGEtZGF0ZT0iJyArIHNlbGVjdGVkRGF0ZSArICciXScpOwogICAgICAgICAgICBpZiAoIXRhcmdldCkgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICB3cmFwcGVyLnNjcm9sbExlZnQgPSB0YXJnZXQub2Zmc2V0TGVmdCAtICh3cmFwcGVyLm9mZnNldFdpZHRoIC8gMikgKyAodGFyZ2V0Lm9mZnNldFdpZHRoIC8gMik7CiAgICAgICAgfSk7CiAgICB9CgogICAgZnVuY3Rpb24gbm9ybWFsaXplRWRpdGFibGVWYWx1ZSh2YWx1ZSkgewogICAgICAgIGNvbnN0IGNsZWFuVmFsdWUgPSBTdHJpbmcodmFsdWUgfHwgJycpLnRyaW0oKTsKICAgICAgICByZXR1cm4gY2xlYW5WYWx1ZSA9PT0gJy0nID8gJycgOiBjbGVhblZhbHVlOwogICAgfQoKICAgIGZ1bmN0aW9uIHVwZGF0ZUV2ZW50VmFsdWUoeWVhclZhbHVlLCBkYXRlLCBmaWVsZCwgY3VycmVudFZhbHVlKSB7CiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB3aW5kb3cucHJvbXB0KCdWZXVpbGxleiBlbnRyZXIgbGEgdmFsZXVyIHBvdXIgJyArIGZpZWxkICsgJyBsZSAnICsgZGF0ZSArICcgOicsIG5vcm1hbGl6ZUVkaXRhYmxlVmFsdWUoY3VycmVudFZhbHVlKSk7CgogICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBzZXRCdXN5KHllYXJWYWx1ZSwgdHJ1ZSk7CgogICAgICAgICQuYWpheCh7CiAgICAgICAgICAgIHVybDogJ3VwZGF0ZV9ldmVudC5waHAnLAogICAgICAgICAgICB0eXBlOiAnUE9TVCcsCiAgICAgICAgICAgIGRhdGE6IHsKICAgICAgICAgICAgICAgIGRhdGU6IGRhdGUsCiAgICAgICAgICAgICAgICBmaWVsZDogZmllbGQsCiAgICAgICAgICAgICAgICB2YWx1ZTogbmV3VmFsdWUsCiAgICAgICAgICAgICAgICBsb2NhdGlvbjogY3VycmVudExvY2F0aW9uCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICAgICAgICAgICAgaWYgKFN0cmluZyhyZXNwb25zZSkudHJpbSgpID09PSAnc3VjY2VzcycpIHsKICAgICAgICAgICAgICAgICAgICBtYXJrU3RhdHVzKHllYXJWYWx1ZSwgJ2lzLXNhdmVkJyk7CiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpOwogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBtYXJrU3RhdHVzKHllYXJWYWx1ZSwgJ2lzLWVycm9yJyk7CiAgICAgICAgICAgICAgICB3aW5kb3cuYWxlcnQoJ0VycmV1ciBsb3JzIGRlIGxhIG1pc2Ugw6Agam91ci4nKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIG1hcmtTdGF0dXMoeWVhclZhbHVlLCAnaXMtZXJyb3InKTsKICAgICAgICAgICAgICAgIHdpbmRvdy5hbGVydCgnRXJyZXVyIGRlIGNvbW11bmljYXRpb24gYXZlYyBsZSBzZXJ2ZXVyLicpOwogICAgICAgICAgICB9LAogICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgc2V0QnVzeSh5ZWFyVmFsdWUsIGZhbHNlKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfQoKICAgIGZ1bmN0aW9uIGJpbmRFZGl0YWJsZVZhbHVlcygpIHsKICAgICAgICAkKGRvY3VtZW50KS5vbignY2xpY2snLCAnLnllYXItdmFsdWUnLCBmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CgogICAgICAgICAgICBjb25zdCB5ZWFyVmFsdWUgPSB0aGlzOwogICAgICAgICAgICBjb25zdCBidXR0b24gPSAkKHllYXJWYWx1ZSkuZmluZCgnLmFjdGlvbi1idXR0b24nKTsKCiAgICAgICAgICAgIGlmIChidXR0b24ubGVuZ3RoID4gMCAmJiBidXR0b24udGV4dCgpLnRyaW0oKSA9PT0gJ1LDqWN1cMOpcmVyJykgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBjb25zdCBkYXRlID0gJCh5ZWFyVmFsdWUpLmRhdGEoJ2RhdGUnKTsKICAgICAgICAgICAgY29uc3QgZmllbGQgPSAkKHllYXJWYWx1ZSkuY2xvc2VzdCgndGQnKS5kYXRhKCdmaWVsZCcpOwogICAgICAgICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSAkKHllYXJWYWx1ZSkuZmluZCgnLnZhbHVlJykudGV4dCgpLnRyaW0oKTsKCiAgICAgICAgICAgIHVwZGF0ZUV2ZW50VmFsdWUoeWVhclZhbHVlLCBkYXRlLCBmaWVsZCwgY3VycmVudFZhbHVlKTsKICAgICAgICB9KTsKICAgIH0KCiAgICBmdW5jdGlvbiBiaW5kQ3VzdG9tUGVyaW9kSW5wdXRzKCkgewogICAgICAgICQoJ2lucHV0W25hbWU9InBlcmlvZGUiXScpLm9uKCdjaGFuZ2UnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICQoJyNjdXN0b21QZXJpb2RJbnB1dHMnKS50b2dnbGUoJCh0aGlzKS52YWwoKSA9PT0gJ3BlcnNvbm5hbGlzZWUnKTsKICAgICAgICB9KTsKICAgIH0KCiAgICBmdW5jdGlvbiBiaW5kUmVjb3ZlckJ1dHRvbnMoKSB7CiAgICAgICAgJChkb2N1bWVudCkub24oJ2NsaWNrJywgJy5hY3Rpb24tYnV0dG9uJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwoKICAgICAgICAgICAgY29uc3QgYnV0dG9uID0gdGhpczsKICAgICAgICAgICAgY29uc3QgZGF0ZSA9ICQoYnV0dG9uKS5kYXRhKCdkYXRlJyk7CiAgICAgICAgICAgIGNvbnN0IGxvY2F0aW9uID0gJChidXR0b24pLmRhdGEoJ2xvY2F0aW9uJyk7CgogICAgICAgICAgICBpZiAoJChidXR0b24pLnRleHQoKS50cmltKCkgIT09ICdSw6ljdXDDqXJlcicpIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgc2V0QnVzeShidXR0b24sIHRydWUpOwoKICAgICAgICAgICAgJC5hamF4KHsKICAgICAgICAgICAgICAgIHVybDogJ2ZpbGxfdGFibGUucGhwJywKICAgICAgICAgICAgICAgIHR5cGU6ICdQT1NUJywKICAgICAgICAgICAgICAgIGRhdGE6IHsgZGF0ZTogZGF0ZSwgbG9jYXRpb246IGxvY2F0aW9uIH0sCiAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgd2luZG93LmFsZXJ0KCdMZXMgZG9ubsOpZXMgcG91ciBsYSBkYXRlICcgKyBkYXRlICsgJyBvbnQgw6l0w6kgcsOpY3Vww6lyw6llcy4nKTsKICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uICh4aHIsIHN0YXR1cywgZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICB3aW5kb3cuYWxlcnQoJ0VycmV1ciBsb3JzIGRlIGxhIHLDqWN1cMOpcmF0aW9uIGRlcyBkb25uw6llcyA6ICcgKyBlcnJvcik7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICBzZXRCdXN5KGJ1dHRvbiwgZmFsc2UpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9KTsKICAgIH0KCiAgICBmdW5jdGlvbiBnZXRDdXJyZW50RGF0ZSgpIHsKICAgICAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7CiAgICAgICAgY29uc3QgeWVhciA9IHRvZGF5LmdldEZ1bGxZZWFyKCk7CiAgICAgICAgY29uc3QgbW9udGggPSBTdHJpbmcodG9kYXkuZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJyk7CiAgICAgICAgY29uc3QgZGF5ID0gU3RyaW5nKHRvZGF5LmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKTsKICAgICAgICByZXR1cm4geWVhciArICctJyArIG1vbnRoICsgJy0nICsgZGF5OwogICAgfQoKICAgIGZ1bmN0aW9uIGJpbmRVcGRhdGVUb2RheUJ1dHRvbigpIHsKICAgICAgICBjb25zdCB1cGRhdGVCdXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXBkYXRlQnV0dG9uJyk7CiAgICAgICAgaWYgKCF1cGRhdGVCdXR0b24pIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgdXBkYXRlQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICBjb25zdCB0b2RheSA9IGdldEN1cnJlbnREYXRlKCk7CgogICAgICAgICAgICBzZXRCdXN5KHVwZGF0ZUJ1dHRvbiwgdHJ1ZSk7CgogICAgICAgICAgICAkLmFqYXgoewogICAgICAgICAgICAgICAgdXJsOiAnZmlsbF90YWJsZS5waHAnLAogICAgICAgICAgICAgICAgdHlwZTogJ1BPU1QnLAogICAgICAgICAgICAgICAgZGF0YTogeyBkYXRlOiB0b2RheSwgbG9jYXRpb246IGN1cnJlbnRMb2NhdGlvbiB9LAogICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIHdpbmRvdy5hbGVydCgnTGVzIGRvbm7DqWVzIHBvdXIgbGEgZGF0ZSAnICsgdG9kYXkgKyAnIG9udCDDqXTDqSByw6ljdXDDqXLDqWVzLicpOwogICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTsKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24gKHhociwgc3RhdHVzLCBlcnJvcikgewogICAgICAgICAgICAgICAgICAgIHdpbmRvdy5hbGVydCgnRXJyZXVyIGxvcnMgZGUgbGEgcsOpY3Vww6lyYXRpb24gZGVzIGRvbm7DqWVzIDogJyArIGVycm9yKTsKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIHNldEJ1c3kodXBkYXRlQnV0dG9uLCBmYWxzZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgfQoKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgYmluZFRhYmxlU2Nyb2xsU3luYygpOwogICAgICAgIHNjcm9sbFRvU2VsZWN0ZWRXZWVrKCk7CiAgICAgICAgYmluZEVkaXRhYmxlVmFsdWVzKCk7CiAgICAgICAgYmluZEN1c3RvbVBlcmlvZElucHV0cygpOwogICAgICAgIGJpbmRSZWNvdmVyQnV0dG9ucygpOwogICAgICAgIGJpbmRVcGRhdGVUb2RheUJ1dHRvbigpOwoKICAgICAgICBpZiAod2luZG93LmxvY2F0aW9uLmhhc2ggPT09ICcjc3RhdHMtc2VjdGlvbicpIHsKICAgICAgICAgICAgY29uc3Qgc3RhdHNTZWN0aW9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3N0YXRzLXNlY3Rpb24nKTsKICAgICAgICAgICAgaWYgKHN0YXRzU2VjdGlvbikgewogICAgICAgICAgICAgICAgc3RhdHNTZWN0aW9uLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnIH0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSk7Cn0pKCk7"
            }
        },
        {
            "path": "stats/stats.php",
            "kind": "file",
            "before": {
                "exists": true,
                "kind": "file",
                "size": 35144,
                "sha1": "0d06994ef8d3c78c203a7c510e9169f2ce27c5de",
                "content_b64": "PD9waHAKLy8gZG9jLXByb2plY3QgfCBzdGF0cy9zdGF0cy5waHAgfCBHw6luw6hyZSBs4oCZaW50ZXJmYWNlIGRlIHN0YXRpc3RpcXVlcyBkZSB2ZW50ZXMsIGNvbXBhcmUgbGVzIHDDqXJpb2RlcyBwYXIgYW5uw6llIGV0IHBlcm1ldCBsYSBzYWlzaWUvcsOpY3Vww6lyYXRpb24gZGVzIGRvbm7DqWVzIHBhciBkYXRlIGV0IGxvY2FsaXNhdGlvbi4gfCBFeHBvc2U6IGdldFdlZWtEYXRlcywgZ2V0QWxsU2FsZXNEYXRhLCBnZXRQZXJpb2RzQnlZZWFyLCBnZXRUb3RhbHNGb3JQZXJpb2QsIGdlbmVyYXRlQ29tYmluZWRUYWJsZSB8IETDqXBlbmQgZGU6IGNvbmZpZy5waHAsIHVwZGF0ZV9ldmVudC5waHAsIGZpbGxfdGFibGUucGhwLCBzZXNzaW9uIFBIUCwgYmFzZSBkZSBkb25uw6llcyBwb3NfZXZlbnRzIHwgSW1wYWN0ZTogYWZmaWNoYWdlIEhUTUwvSlMsIGludGVyYWN0aW9ucyBBSkFYLCBtaXNlcyDDoCBqb3VyIGRlIGRvbm7DqWVzIHwgVGFibGVzOiBwb3NfZXZlbnRzKGRhdGUsIG1vbnRhbnRfdG90YWxfcGVsaXNzYW5uZSwgbW9udGFudF90b3RhbF9sYW5jb24sIG5vbWJyZV9wZWxpc3Nhbm5lLCBub21icmVfbGFuY29uLCBuZF9wZWxpc3Nhbm5lLCBuZF9sYW5jb24sIGVkX3BlbGlzc2FubmUsIGVkX2xhbmNvbiwgd2VhdGhlciwgZXZlbnRzKSAqLwovLyBzdGF0cy5waHAKLy8gQWN0aXZlciBsJ2FmZmljaGFnZSBkZXMgZXJyZXVycyAow6AgZMOpc2FjdGl2ZXIgZW4gcHJvZHVjdGlvbikKaW5pX3NldCgnZGlzcGxheV9lcnJvcnMnLCAxKTsKaW5pX3NldCgnZGlzcGxheV9zdGFydHVwX2Vycm9ycycsIDEpOwplcnJvcl9yZXBvcnRpbmcoRV9BTEwpOwoKLy8gSW5jbHVyZSBsZSBmaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24gcG91ciBhY2PDqWRlciDDoCBsYSBiYXNlIGRlIGRvbm7DqWVzCmluY2x1ZGUgJ2NvbmZpZy5waHAnOwoKLy8gVsOpcmlmaWVyIHF1ZSBsYSBjb25uZXhpb24gUERPIGVzdCDDqXRhYmxpZQppZiAoIWlzc2V0KCRwZG8pKSB7CiAgICBkaWUoJ0VycmV1ciBkZSBjb25uZXhpb24gw6AgbGEgYmFzZSBkZSBkb25uw6llcy4nKTsKfQoKLy8gT2J0ZW5pciBsZSBwYXJhbcOodHJlICdsb2NhdGlvbicgZGVwdWlzIGwnVVJMIHBvdXIgbGUgdGFibGVhdSBwcmluY2lwYWwKJGxvY2F0aW9uID0gJF9HRVRbJ2xvY2F0aW9uJ10gPz8gJ3BlbGlzc2FubmUnOwoKLy8gRMOpdGVybWluZXIgbGUgc3VmZml4ZSBlbiBmb25jdGlvbiBkZSBsYSBsb2NhbGlzYXRpb24gcG91ciBsZSB0YWJsZWF1IHByaW5jaXBhbAppZiAoJGxvY2F0aW9uID09ICdwZWxpc3Nhbm5lJykgewogICAgJHN1ZmZpeCA9ICdfcGVsJzsKfSBlbHNlaWYgKCRsb2NhdGlvbiA9PSAnbGFuY29uJykgewogICAgJHN1ZmZpeCA9ICcnOwp9IGVsc2VpZiAoJGxvY2F0aW9uID09ICdib3RoJykgewogICAgJHN1ZmZpeCA9ICdib3RoJzsKfSBlbHNlIHsKICAgICRzdWZmaXggPSAnX3BlbCc7IC8vIHBhciBkw6lmYXV0LCBQw6lsaXNzYW5uZQp9CgovLyBEw6l0ZXJtaW5lciBsZSB0ZXh0ZSBkZSBsYSBzw6lsZWN0aW9uIGVuIGZvbmN0aW9uIGRlIGxhIGxvY2FsaXNhdGlvbgokc2VsZWN0aW9uID0gJyc7CgppZiAoJGxvY2F0aW9uID09ICdwZWxpc3Nhbm5lJykgewogICAgJHNlbGVjdGlvbiA9ICdQw6lsaXNzYW5uZSc7Cn0gZWxzZWlmICgkbG9jYXRpb24gPT0gJ2xhbmNvbicpIHsKICAgICRzZWxlY3Rpb24gPSAnTGFuw6dvbic7Cn0gZWxzZWlmICgkbG9jYXRpb24gPT0gJ2JvdGgnKSB7CiAgICAkc2VsZWN0aW9uID0gJ0xlcyBkZXV4JzsKfSBlbHNlIHsKICAgICRzZWxlY3Rpb24gPSAnUMOpbGlzc2FubmUnOwp9CgovLyBPYnRlbmlyIGxhIGRhdGUgc8OpbGVjdGlvbm7DqWUgb3UgdXRpbGlzZXIgbGEgZGF0ZSBhY3R1ZWxsZQokc2VsZWN0ZWREYXRlID0gJF9HRVRbJ2RhdGUnXSA/PyBkYXRlKCdZLW0tZCcpOwokY3VycmVudERhdGUgPSBuZXcgRGF0ZVRpbWUoJHNlbGVjdGVkRGF0ZSk7CiRjdXJyZW50WWVhciA9IChpbnQpJGN1cnJlbnREYXRlLT5mb3JtYXQoJ1knKTsKCi8vIFLDqWN1cMOpcmVyIGxlIGRlcm5pZXIgam91ciBzYWlzaSBkYW5zIHBvc19ldmVudHMKJHN0bXRMYXN0RGF0ZSA9ICRwZG8tPnByZXBhcmUoIlNFTEVDVCBNQVgoZGF0ZSkgYXMgbGFzdF9kYXRlIEZST00gcG9zX2V2ZW50cyIpOwokc3RtdExhc3REYXRlLT5leGVjdXRlKCk7CiRsYXN0RGF0ZVJvdyA9ICRzdG10TGFzdERhdGUtPmZldGNoKFBETzo6RkVUQ0hfQVNTT0MpOwokbGFzdERhdGFEYXRlID0gbmV3IERhdGVUaW1lKCRsYXN0RGF0ZVJvd1snbGFzdF9kYXRlJ10pOwoKLy8gRm9uY3Rpb24gcG91ciBvYnRlbmlyIGxlcyBkYXRlcyBkdSBtYXJkaSBhdSBkaW1hbmNoZSBwb3VyIHVuZSBzZW1haW5lIGV0IHVuZSBhbm7DqWUgZG9ubsOpZXMKZnVuY3Rpb24gZ2V0V2Vla0RhdGVzKCR3ZWVrTnVtYmVyLCAkeWVhcikgewogICAgJGRhdGVzID0gW107CiAgICAkZHRvID0gbmV3IERhdGVUaW1lKCk7CiAgICAkZHRvLT5zZXRJU09EYXRlKCR5ZWFyLCAkd2Vla051bWJlcik7CgogICAgLy8gQ29tbWVuY2VyIGxlIG1hcmRpCiAgICAkZHRvLT5tb2RpZnkoJ3R1ZXNkYXkgdGhpcyB3ZWVrJyk7CgogICAgZm9yICgkaSA9IDA7ICRpIDwgNjsgJGkrKykgewogICAgICAgICRkYXRlc1tdID0gY2xvbmUgJGR0bzsKICAgICAgICAkZHRvLT5tb2RpZnkoJysxIGRheScpOwogICAgfQoKICAgIHJldHVybiAkZGF0ZXM7Cn0KCi8vIE9idGVuaXIgbGUgbnVtw6lybyBkZSBzZW1haW5lIGV0IGxlcyBkYXRlcyBwb3VyIGxhIGRhdGUgc8OpbGVjdGlvbm7DqWUKJGN1cnJlbnRXZWVrTnVtYmVyID0gKGludCkkY3VycmVudERhdGUtPmZvcm1hdCgnVycpOwokd2Vla0RhdGVzID0gZ2V0V2Vla0RhdGVzKCRjdXJyZW50V2Vla051bWJlciwgJGN1cnJlbnRZZWFyKTsKCi8vIETDqWZpbmlyIGxlcyBhbm7DqWVzIMOgIGFmZmljaGVyCiR5ZWFycyA9IFskY3VycmVudFllYXIsICRjdXJyZW50WWVhciAtIDEsICRjdXJyZW50WWVhciAtIDIsICRjdXJyZW50WWVhciAtIDMsICRjdXJyZW50WWVhciAtIDRdOwoKLy8gT2J0ZW5pciBsZXMgZGF0ZXMgY29ycmVzcG9uZGFudGVzIHBvdXIgY2hhcXVlIGFubsOpZQokZGF0ZXNCeVllYXIgPSBbXTsKJGFsbERhdGVzID0gW107Cgpmb3JlYWNoICgkd2Vla0RhdGVzIGFzICRkYXRlKSB7CiAgICAkY3VycmVudERhdGVTdHJpbmcgPSAkZGF0ZS0+Zm9ybWF0KCdZLW0tZCcpOwogICAgJGRhdGVzQnlZZWFyWyRjdXJyZW50RGF0ZVN0cmluZ10gPSBbXTsKICAgICR3ZWVrTnVtYmVyID0gKGludCkkZGF0ZS0+Zm9ybWF0KCdXJyk7CiAgICAkZGF5T2ZXZWVrID0gKGludCkkZGF0ZS0+Zm9ybWF0KCdOJyk7IC8vIDEgKEx1bmRpKSDDoCA3IChEaW1hbmNoZSkKICAgIGZvcmVhY2ggKCR5ZWFycyBhcyAkeWVhcikgewogICAgICAgICRkYXRlSW5ZZWFyID0gbmV3IERhdGVUaW1lKCk7CiAgICAgICAgJGRhdGVJblllYXItPnNldElTT0RhdGUoJHllYXIsICR3ZWVrTnVtYmVyLCAkZGF5T2ZXZWVrKTsKICAgICAgICAkZGF0ZUluWWVhclN0cmluZyA9ICRkYXRlSW5ZZWFyLT5mb3JtYXQoJ1ktbS1kJyk7CiAgICAgICAgJGRhdGVzQnlZZWFyWyRjdXJyZW50RGF0ZVN0cmluZ11bJHllYXJdID0gJGRhdGVJblllYXI7CiAgICAgICAgJGFsbERhdGVzWyRkYXRlSW5ZZWFyU3RyaW5nXSA9ICRkYXRlSW5ZZWFyOwogICAgfQp9CgovLyBGb25jdGlvbiBwb3VyIHLDqWN1cMOpcmVyIGxlcyBkb25uw6llcyBkZSB2ZW50ZSBwb3VyIHRvdXRlcyBsZXMgZGF0ZXMKLy8gRm9uY3Rpb24gcG91ciByw6ljdXDDqXJlciBsZXMgZG9ubsOpZXMgZGUgdmVudGUgcG91ciB0b3V0ZXMgbGVzIGRhdGVzCmZ1bmN0aW9uIGdldEFsbFNhbGVzRGF0YSgkcGRvLCAkZGF0ZXMsICRzdWZmaXgpIHsKICAgICRkYXRlU3RyaW5ncyA9IFtdOwogICAgZm9yZWFjaCAoJGRhdGVzIGFzICRkYXRlT2JqKSB7CiAgICAgICAgJGRhdGVTdHJpbmdzW10gPSAkZGF0ZU9iai0+Zm9ybWF0KCdZLW0tZCcpOwogICAgfQoKICAgIGlmIChlbXB0eSgkZGF0ZVN0cmluZ3MpKSB7CiAgICAgICAgcmV0dXJuIFtdOwogICAgfQoKICAgICRwbGFjZWhvbGRlcnMgPSBpbXBsb2RlKCcsJywgYXJyYXlfZmlsbCgwLCBjb3VudCgkZGF0ZVN0cmluZ3MpLCAnPycpKTsKCiAgICAvLyBWw6lyaWZpZXogcXVlIGxhIHJlcXXDqnRlIFNRTCByw6ljdXDDqHJlIGNvcnJlY3RlbWVudCBsZXMgZG9ubsOpZXMKICAgICRzdG10RXZlbnQgPSAkcGRvLT5wcmVwYXJlKCIKICAgICAgICBTRUxFQ1QgKgogICAgICAgIEZST00gcG9zX2V2ZW50cwogICAgICAgIFdIRVJFIGRhdGUgSU4gKCRwbGFjZWhvbGRlcnMpCiAgICAiKTsKICAgICRzdG10RXZlbnQtPmV4ZWN1dGUoJGRhdGVTdHJpbmdzKTsKCiAgICAkZXZlbnREYXRhID0gJHN0bXRFdmVudC0+ZmV0Y2hBbGwoUERPOjpGRVRDSF9BU1NPQyk7CgogICAgJGRhdGEgPSBbXTsKICAgIGZvcmVhY2ggKCRldmVudERhdGEgYXMgJHJvdykgewogICAgICAgICRkYXRlU3RyaW5nID0gJHJvd1snZGF0ZSddOwogICAgICAgICR0b3RhbEFtb3VudCA9IDA7CiAgICAgICAgJHRvdGFsUGl6emFzID0gMDsKICAgICAgICAkbmQgPSAwOwogICAgICAgICRlZCA9IDA7IC8vIE5vdXZlbGxlIHZhcmlhYmxlIHBvdXIgTW9udGFudCBFRAoKICAgICAgICAvLyBEZWJ1ZzogYWZmaWNoZXIgbGVzIGRvbm7DqWVzIHLDqWN1cMOpcsOpZXMgcG91ciBsZXMgZGF0ZXMgZGVzIGFubsOpZXMgcHLDqWPDqWRlbnRlcwogICAgICAgIC8vIFV0aWxpc2V6IHZhcl9kdW1wKCkgb3UgZXJyb3JfbG9nKCkgcG91ciBzdWl2cmUgbGVzIGRvbm7DqWVzCiAgICAgICAgZXJyb3JfbG9nKCJEYXRhIGZvciBkYXRlOiAkZGF0ZVN0cmluZywgTW9udGFudCB0b3RhbCBQw6lsaXNzYW5uZTogeyRyb3dbJ21vbnRhbnRfdG90YWxfcGVsaXNzYW5uZSddfSwgTW9udGFudCB0b3RhbCBMYW7Dp29uOiB7JHJvd1snbW9udGFudF90b3RhbF9sYW5jb24nXX0iKTsKCiAgICAgICAgaWYgKCRzdWZmaXggPT0gJ19wZWwnKSB7CiAgICAgICAgICAgICR0b3RhbEFtb3VudCA9IChmbG9hdCkoJHJvd1snbW9udGFudF90b3RhbF9wZWxpc3Nhbm5lJ10gPz8gMCk7CiAgICAgICAgICAgICR0b3RhbFBpenphcyA9IChpbnQpKCRyb3dbJ25vbWJyZV9wZWxpc3Nhbm5lJ10gPz8gMCk7CiAgICAgICAgICAgICRuZCA9IChmbG9hdCkoJHJvd1snbmRfcGVsaXNzYW5uZSddID8/IDApOwogICAgICAgICAgICAkZWQgPSAoZmxvYXQpKCRyb3dbJ2VkX3BlbGlzc2FubmUnXSA/PyAwKTsgLy8gTW9udGFudCBFRCBwb3VyIFDDqWxpc3Nhbm5lCiAgICAgICAgfSBlbHNlaWYgKCRzdWZmaXggPT0gJycpIHsKICAgICAgICAgICAgJHRvdGFsQW1vdW50ID0gKGZsb2F0KSgkcm93Wydtb250YW50X3RvdGFsX2xhbmNvbiddID8/IDApOwogICAgICAgICAgICAkdG90YWxQaXp6YXMgPSAoaW50KSgkcm93Wydub21icmVfbGFuY29uJ10gPz8gMCk7CiAgICAgICAgICAgICRuZCA9IChmbG9hdCkoJHJvd1snbmRfbGFuY29uJ10gPz8gMCk7CiAgICAgICAgICAgICRlZCA9IChmbG9hdCkoJHJvd1snZWRfbGFuY29uJ10gPz8gMCk7IC8vIE1vbnRhbnQgRUQgcG91ciBMYW7Dp29uCiAgICAgICAgfSBlbHNlaWYgKCRzdWZmaXggPT0gJ2JvdGgnKSB7CiAgICAgICAgICAgICR0b3RhbEFtb3VudCA9IChmbG9hdCkoJHJvd1snbW9udGFudF90b3RhbF9wZWxpc3Nhbm5lJ10gPz8gMCkgKyAoZmxvYXQpKCRyb3dbJ21vbnRhbnRfdG90YWxfbGFuY29uJ10gPz8gMCk7CiAgICAgICAgICAgICR0b3RhbFBpenphcyA9IChpbnQpKCRyb3dbJ25vbWJyZV9wZWxpc3Nhbm5lJ10gPz8gMCkgKyAoaW50KSgkcm93Wydub21icmVfbGFuY29uJ10gPz8gMCk7CiAgICAgICAgICAgICRuZCA9IChmbG9hdCkoJHJvd1snbmRfcGVsaXNzYW5uZSddID8/IDApICsgKGZsb2F0KSgkcm93WyduZF9sYW5jb24nXSA/PyAwKTsKICAgICAgICAgICAgJGVkID0gKGZsb2F0KSgkcm93WydlZF9wZWxpc3Nhbm5lJ10gPz8gMCkgKyAoZmxvYXQpKCRyb3dbJ2VkX2xhbmNvbiddID8/IDApOyAvLyBNb250YW50IEVEIHBvdXIgbGVzIGRldXgKICAgICAgICB9CgogICAgICAgICR3ZWF0aGVyID0gJHJvd1snd2VhdGhlciddID8/ICctJzsKICAgICAgICAkZXZlbnRzID0gJHJvd1snZXZlbnRzJ10gPz8gJy0nOwoKICAgICAgICAkZGF0YVskZGF0ZVN0cmluZ10gPSBbCiAgICAgICAgICAgICd0b3RhbF9hbW91bnQnID0+ICR0b3RhbEFtb3VudCwKICAgICAgICAgICAgJ3RvdGFsX3BpenphcycgPT4gJHRvdGFsUGl6emFzLAogICAgICAgICAgICAnbmQnID0+ICRuZCwKICAgICAgICAgICAgJ2VkJyA9PiAkZWQsIC8vIEluY2x1cmUgTW9udGFudCBFRCBkYW5zIGxlcyBkb25uw6llcwogICAgICAgICAgICAnd2VhdGhlcicgPT4gJHdlYXRoZXIsCiAgICAgICAgICAgICdldmVudHMnID0+ICRldmVudHMsCiAgICAgICAgXTsKICAgIH0KCiAgICByZXR1cm4gJGRhdGE7Cn0KCgoKLy8gUsOpY3Vww6lyZXIgbGVzIGRvbm7DqWVzIHBvdXIgdG91dGVzIGxlcyBkYXRlcwokZGF0YUZyb21EQiA9IGdldEFsbFNhbGVzRGF0YSgkcGRvLCAkYWxsRGF0ZXMsICRzdWZmaXgpOwoKLy8gT3JnYW5pc2VyIGxlcyBkb25uw6llcwokZGF0YSA9IFtdOyAvLyAkZGF0YVttZXRyaWNdW2N1cnJlbnREYXRlU3RyaW5nXVt5ZWFyXSA9IHZhbHVlOwoKZm9yZWFjaCAoJGRhdGVzQnlZZWFyIGFzICRjdXJyZW50RGF0ZVN0cmluZyA9PiAkeWVhcnNEYXRlcykgewogICAgZm9yZWFjaCAoJHllYXJzIGFzICR5ZWFyKSB7CiAgICAgICAgJGRhdGVPYmogPSAkeWVhcnNEYXRlc1skeWVhcl07CiAgICAgICAgJGRhdGVTdHJpbmcgPSAkZGF0ZU9iai0+Zm9ybWF0KCdZLW0tZCcpOwogICAgICAgICRldmVudERhdGEgPSAkZGF0YUZyb21EQlskZGF0ZVN0cmluZ10gPz8gbnVsbDsKCiAgICAgICAgLy8gQXNzdXJlei12b3VzIHF1ZSBsZXMgbW9udGFudHMgZGVzIGFubsOpZXMgcHLDqWPDqWRlbnRlcyBzb250IGJpZW4gcsOpY3Vww6lyw6lzCiAgICAgICAgJHRvdGFsQW1vdW50ID0gJGV2ZW50RGF0YVsndG90YWxfYW1vdW50J10gPz8gMDsKICAgICAgICAkdG90YWxQaXp6YXMgPSAkZXZlbnREYXRhWyd0b3RhbF9waXp6YXMnXSA/PyAwOwogICAgICAgICRuZCA9ICRldmVudERhdGFbJ25kJ10gPz8gMDsKICAgICAgICAkZWQgPSAkZXZlbnREYXRhWydlZCddID8/IDA7CiAgICAgICAgJHdlYXRoZXIgPSAkZXZlbnREYXRhWyd3ZWF0aGVyJ10gPz8gJy0nOwogICAgICAgICRldmVudHMgPSAkZXZlbnREYXRhWydldmVudHMnXSA/PyAnLSc7CgogICAgICAgIC8vIERlYnVnOiBBZmZpY2hlciBsZXMgZG9ubsOpZXMgcsOpY3Vww6lyw6llcyBwb3VyIHbDqXJpZmllcgogICAgICAgIGVycm9yX2xvZygiVG90YWwgZm9yICRkYXRlU3RyaW5nLCB5ZWFyICR5ZWFyOiAkdG90YWxBbW91bnQiKTsKCiAgICAgICAgJGRhdGFbJ3RvdGFsX3BpenphcyddWyRjdXJyZW50RGF0ZVN0cmluZ11bJHllYXJdID0gJHRvdGFsUGl6emFzOwogICAgICAgICRkYXRhWyd0b3RhbF9hbW91bnQnXVskY3VycmVudERhdGVTdHJpbmddWyR5ZWFyXSA9ICR0b3RhbEFtb3VudDsKICAgICAgICAkZGF0YVsnbmQnXVskY3VycmVudERhdGVTdHJpbmddWyR5ZWFyXSA9ICRuZDsKICAgICAgICAkZGF0YVsnZWQnXVskY3VycmVudERhdGVTdHJpbmddWyR5ZWFyXSA9ICRlZDsKICAgICAgICAkZGF0YVsnd2VhdGhlciddWyRjdXJyZW50RGF0ZVN0cmluZ11bJHllYXJdID0gJHdlYXRoZXI7CiAgICAgICAgJGRhdGFbJ2V2ZW50cyddWyRjdXJyZW50RGF0ZVN0cmluZ11bJHllYXJdID0gJGV2ZW50czsKICAgIH0KfQoKCgovLyBFbiBiYXMgZGUgcGFnZSBwZXJtZXR0cmUgZGUgY2hvaXNpciAqc2VtYWluZSAqcGxhZ2UgcGVyc29ubmFsaXPDqWUKCi8vIFLDqWN1cMOpcmVyIGxhIHDDqXJpb2RlIHPDqWxlY3Rpb25uw6llCiRwZXJpb2RlID0gJF9HRVRbJ3BlcmlvZGUnXSA/PyAnc2VtYWluZSc7IC8vIHBhciBkw6lmYXV0LCAnc2VtYWluZScKCi8vIFLDqWN1cMOpcmVyIGxhIGxvY2FsaXNhdGlvbiBwb3VyIGxlcyBzdGF0aXN0aXF1ZXMgc3VwcGzDqW1lbnRhaXJlcwokc3RhdHNfbG9jYXRpb24gPSAkX0dFVFsnc3RhdHNfbG9jYXRpb24nXSA/PyAkbG9jYXRpb247IC8vIFBhciBkw6lmYXV0LCBtw6ptZSBsb2NhbGlzYXRpb24gcXVlIGxlIHRhYmxlYXUgcHJpbmNpcGFsCgovLyBEw6l0ZXJtaW5lciBsZSBzdWZmaXhlIGVuIGZvbmN0aW9uIGRlIGxhIGxvY2FsaXNhdGlvbiBwb3VyIGxlcyBzdGF0aXN0aXF1ZXMgc3VwcGzDqW1lbnRhaXJlcwppZiAoJHN0YXRzX2xvY2F0aW9uID09ICdwZWxpc3Nhbm5lJykgewogICAgJHN0YXRzX3N1ZmZpeCA9ICdfcGVsJzsKfSBlbHNlaWYgKCRzdGF0c19sb2NhdGlvbiA9PSAnbGFuY29uJykgewogICAgJHN0YXRzX3N1ZmZpeCA9ICcnOwp9IGVsc2VpZiAoJHN0YXRzX2xvY2F0aW9uID09ICdib3RoJykgewogICAgJHN0YXRzX3N1ZmZpeCA9ICdib3RoJzsKfSBlbHNlIHsKICAgICRzdGF0c19zdWZmaXggPSAnX3BlbCc7IC8vIHBhciBkw6lmYXV0LCBQw6lsaXNzYW5uZQp9CgovLyBGb25jdGlvbiBwb3VyIG9idGVuaXIgbGVzIHDDqXJpb2RlcyBwYXIgYW5uw6llCmZ1bmN0aW9uIGdldFBlcmlvZHNCeVllYXIoJHBlcmlvZGUsICRjdXJyZW50RGF0ZSwgJHllYXJzLCAkbGFzdERhdGFEYXRlKSB7CiAgICAkcGVyaW9kc0J5WWVhciA9IFtdOwoKICAgIGlmICgkcGVyaW9kZSA9PSAnc2VtYWluZScpIHsKICAgICAgICAkd2Vla051bWJlciA9IChpbnQpJGN1cnJlbnREYXRlLT5mb3JtYXQoJ1cnKTsKICAgICAgICAkZGF5T2ZXZWVrID0gKGludCkkY3VycmVudERhdGUtPmZvcm1hdCgnTicpOwoKICAgICAgICBmb3JlYWNoICgkeWVhcnMgYXMgJHllYXIpIHsKICAgICAgICAgICAgJHN0YXJ0RGF0ZSA9IG5ldyBEYXRlVGltZSgpOwogICAgICAgICAgICAkc3RhcnREYXRlLT5zZXRJU09EYXRlKCR5ZWFyLCAkd2Vla051bWJlcik7CiAgICAgICAgICAgICRzdGFydERhdGUtPm1vZGlmeSgndHVlc2RheSB0aGlzIHdlZWsnKTsKCiAgICAgICAgICAgICRlbmREYXRlID0gY2xvbmUgJHN0YXJ0RGF0ZTsKICAgICAgICAgICAgJGVuZERhdGUtPm1vZGlmeSgnKzUgZGF5cycpOyAvLyBKdXNxdSdhdSBkaW1hbmNoZQoKICAgICAgICAgICAgLy8gQWp1c3RlciBzaSBuw6ljZXNzYWlyZQogICAgICAgICAgICAkc3RtdExhc3REYXRlWWVhciA9ICRHTE9CQUxTWydwZG8nXS0+cHJlcGFyZSgiU0VMRUNUIE1BWChkYXRlKSBhcyBsYXN0X2RhdGUgRlJPTSBwb3NfZXZlbnRzIFdIRVJFIFlFQVIoZGF0ZSkgPSA/Iik7CiAgICAgICAgICAgICRzdG10TGFzdERhdGVZZWFyLT5leGVjdXRlKFskeWVhcl0pOwogICAgICAgICAgICAkbGFzdERhdGVSb3dZZWFyID0gJHN0bXRMYXN0RGF0ZVllYXItPmZldGNoKFBETzo6RkVUQ0hfQVNTT0MpOwogICAgICAgICAgICAkbGFzdERhdGFEYXRlWWVhciA9IG5ldyBEYXRlVGltZSgkbGFzdERhdGVSb3dZZWFyWydsYXN0X2RhdGUnXSk7CgogICAgICAgICAgICBpZiAoJGVuZERhdGUgPiAkbGFzdERhdGFEYXRlWWVhciAmJiAkc3RhcnREYXRlIDw9ICRsYXN0RGF0YURhdGVZZWFyKSB7CiAgICAgICAgICAgICAgICAkZW5kRGF0ZSA9ICRsYXN0RGF0YURhdGVZZWFyOwogICAgICAgICAgICB9IGVsc2VpZiAoJHN0YXJ0RGF0ZSA+ICRsYXN0RGF0YURhdGVZZWFyKSB7CiAgICAgICAgICAgICAgICAkc3RhcnREYXRlID0gbnVsbDsKICAgICAgICAgICAgICAgICRlbmREYXRlID0gbnVsbDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHBlcmlvZHNCeVllYXJbJHllYXJdID0gWydzdGFydCcgPT4gJHN0YXJ0RGF0ZSwgJ2VuZCcgPT4gJGVuZERhdGVdOwogICAgICAgIH0KICAgIH0gZWxzZWlmICgkcGVyaW9kZSA9PSAncGVyc29ubmFsaXNlZScpIHsKICAgICAgICAkY3VzdG9tU3RhcnQgPSAkX0dFVFsnY3VzdG9tX3N0YXJ0J10gPz8gbnVsbDsKICAgICAgICAkY3VzdG9tRW5kID0gJF9HRVRbJ2N1c3RvbV9lbmQnXSA/PyBudWxsOwogICAgICAgIGlmICgkY3VzdG9tU3RhcnQgJiYgJGN1c3RvbUVuZCkgewogICAgICAgICAgICAkc3RhcnREYXRlSW5wdXQgPSBuZXcgRGF0ZVRpbWUoJGN1c3RvbVN0YXJ0KTsKICAgICAgICAgICAgJGVuZERhdGVJbnB1dCA9IG5ldyBEYXRlVGltZSgkY3VzdG9tRW5kKTsKICAgICAgICAgICAgaWYgKCRzdGFydERhdGVJbnB1dCA+ICRlbmREYXRlSW5wdXQpIHsKICAgICAgICAgICAgICAgICR0ZW1wID0gJHN0YXJ0RGF0ZUlucHV0OwogICAgICAgICAgICAgICAgJHN0YXJ0RGF0ZUlucHV0ID0gJGVuZERhdGVJbnB1dDsKICAgICAgICAgICAgICAgICRlbmREYXRlSW5wdXQgPSAkdGVtcDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZm9yZWFjaCAoJHllYXJzIGFzICR5ZWFyKSB7CiAgICAgICAgICAgICAgICAkc3RhcnREYXRlID0gY2xvbmUgJHN0YXJ0RGF0ZUlucHV0OwogICAgICAgICAgICAgICAgJHN0YXJ0RGF0ZS0+c2V0RGF0ZSgkeWVhciwgKGludCkkc3RhcnREYXRlSW5wdXQtPmZvcm1hdCgnbScpLCAoaW50KSRzdGFydERhdGVJbnB1dC0+Zm9ybWF0KCdkJykpOwogICAgICAgICAgICAgICAgJGVuZERhdGUgPSBjbG9uZSAkZW5kRGF0ZUlucHV0OwogICAgICAgICAgICAgICAgJGVuZERhdGUtPnNldERhdGUoJHllYXIsIChpbnQpJGVuZERhdGVJbnB1dC0+Zm9ybWF0KCdtJyksIChpbnQpJGVuZERhdGVJbnB1dC0+Zm9ybWF0KCdkJykpOwoKICAgICAgICAgICAgICAgIC8vIEFqdXN0ZXIgc2kgbsOpY2Vzc2FpcmUKICAgICAgICAgICAgICAgICRzdG10TGFzdERhdGVZZWFyID0gJEdMT0JBTFNbJ3BkbyddLT5wcmVwYXJlKCJTRUxFQ1QgTUFYKGRhdGUpIGFzIGxhc3RfZGF0ZSBGUk9NIHBvc19ldmVudHMgV0hFUkUgWUVBUihkYXRlKSA9ID8iKTsKICAgICAgICAgICAgICAgICRzdG10TGFzdERhdGVZZWFyLT5leGVjdXRlKFskeWVhcl0pOwogICAgICAgICAgICAgICAgJGxhc3REYXRlUm93WWVhciA9ICRzdG10TGFzdERhdGVZZWFyLT5mZXRjaChQRE86OkZFVENIX0FTU09DKTsKICAgICAgICAgICAgICAgICRsYXN0RGF0YURhdGVZZWFyID0gbmV3IERhdGVUaW1lKCRsYXN0RGF0ZVJvd1llYXJbJ2xhc3RfZGF0ZSddKTsKCiAgICAgICAgICAgICAgICBpZiAoJGVuZERhdGUgPiAkbGFzdERhdGFEYXRlWWVhciAmJiAkc3RhcnREYXRlIDw9ICRsYXN0RGF0YURhdGVZZWFyKSB7CiAgICAgICAgICAgICAgICAgICAgJGVuZERhdGUgPSAkbGFzdERhdGFEYXRlWWVhcjsKICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkc3RhcnREYXRlID4gJGxhc3REYXRhRGF0ZVllYXIpIHsKICAgICAgICAgICAgICAgICAgICAkc3RhcnREYXRlID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAkZW5kRGF0ZSA9IG51bGw7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHBlcmlvZHNCeVllYXJbJHllYXJdID0gWydzdGFydCcgPT4gJHN0YXJ0RGF0ZSwgJ2VuZCcgPT4gJGVuZERhdGVdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkcGVyaW9kc0J5WWVhcjsKfQoKLy8gUsOpY3Vww6lyZXIgbGVzIHDDqXJpb2RlcyBwYXIgYW5uw6llCiRwZXJpb2RzQnlZZWFyID0gZ2V0UGVyaW9kc0J5WWVhcigkcGVyaW9kZSwgJGN1cnJlbnREYXRlLCAkeWVhcnMsICRsYXN0RGF0YURhdGUpOwoKLy8gRm9uY3Rpb24gcG91ciBvYnRlbmlyIGxlcyB0b3RhdXggcG91ciB1bmUgcMOpcmlvZGUgZG9ubsOpZQpmdW5jdGlvbiBnZXRUb3RhbHNGb3JQZXJpb2QoJHBkbywgJHN0YXJ0RGF0ZSwgJGVuZERhdGUsICRzdWZmaXgpIHsKICAgIGlmICghJHN0YXJ0RGF0ZSB8fCAhJGVuZERhdGUpIHsKICAgICAgICByZXR1cm4gWyd0b3RhbF9waXp6YXMnID0+IDAsICd0b3RhbF9hbW91bnQnID0+IDAsICduZCcgPT4gMF07CiAgICB9CiAgICAkc3RhcnREYXRlU3RyaW5nID0gJHN0YXJ0RGF0ZS0+Zm9ybWF0KCdZLW0tZCcpOwogICAgJGVuZERhdGVTdHJpbmcgPSAkZW5kRGF0ZS0+Zm9ybWF0KCdZLW0tZCcpOwoKICAgICRzdG10ID0gJHBkby0+cHJlcGFyZSgiCiAgICAgICAgU0VMRUNUIFNVTShtb250YW50X3RvdGFsX3BlbGlzc2FubmUpIGFzIHRvdGFsX2Ftb3VudF9wZWxpc3Nhbm5lLAogICAgICAgICAgICAgICBTVU0obm9tYnJlX3BlbGlzc2FubmUpIGFzIHRvdGFsX3Bpenphc19wZWxpc3Nhbm5lLAogICAgICAgICAgICAgICBTVU0obmRfcGVsaXNzYW5uZSkgYXMgbmRfcGVsaXNzYW5uZSwKICAgICAgICAgICAgICAgU1VNKG1vbnRhbnRfdG90YWxfbGFuY29uKSBhcyB0b3RhbF9hbW91bnRfbGFuY29uLAogICAgICAgICAgICAgICBTVU0obm9tYnJlX2xhbmNvbikgYXMgdG90YWxfcGl6emFzX2xhbmNvbiwKICAgICAgICAgICAgICAgU1VNKG5kX2xhbmNvbikgYXMgbmRfbGFuY29uCiAgICAgICAgRlJPTSBwb3NfZXZlbnRzCiAgICAgICAgV0hFUkUgZGF0ZSBCRVRXRUVOID8gQU5EID8KICAgICIpOwogICAgJHN0bXQtPmV4ZWN1dGUoWyRzdGFydERhdGVTdHJpbmcsICRlbmREYXRlU3RyaW5nXSk7CiAgICAkcm93ID0gJHN0bXQtPmZldGNoKFBETzo6RkVUQ0hfQVNTT0MpOwoKICAgICR0b3RhbEFtb3VudCA9IDA7CiAgICAkdG90YWxQaXp6YXMgPSAwOwogICAgJG5kID0gMDsKCiAgICBpZiAoJHN1ZmZpeCA9PSAnX3BlbCcpIHsKICAgICAgICAkdG90YWxBbW91bnQgPSAoZmxvYXQpKCRyb3dbJ3RvdGFsX2Ftb3VudF9wZWxpc3Nhbm5lJ10gPz8gMCk7CiAgICAgICAgJHRvdGFsUGl6emFzID0gKGludCkoJHJvd1sndG90YWxfcGl6emFzX3BlbGlzc2FubmUnXSA/PyAwKTsKICAgICAgICAkbmQgPSAoZmxvYXQpKCRyb3dbJ25kX3BlbGlzc2FubmUnXSA/PyAwKTsKICAgIH0gZWxzZWlmICgkc3VmZml4ID09ICcnKSB7CiAgICAgICAgJHRvdGFsQW1vdW50ID0gKGZsb2F0KSgkcm93Wyd0b3RhbF9hbW91bnRfbGFuY29uJ10gPz8gMCk7CiAgICAgICAgJHRvdGFsUGl6emFzID0gKGludCkoJHJvd1sndG90YWxfcGl6emFzX2xhbmNvbiddID8/IDApOwogICAgICAgICRuZCA9IChmbG9hdCkoJHJvd1snbmRfbGFuY29uJ10gPz8gMCk7CiAgICB9IGVsc2VpZiAoJHN1ZmZpeCA9PSAnYm90aCcpIHsKICAgICAgICAkdG90YWxBbW91bnQgPSAoZmxvYXQpKCRyb3dbJ3RvdGFsX2Ftb3VudF9wZWxpc3Nhbm5lJ10gPz8gMCkgKyAoZmxvYXQpKCRyb3dbJ3RvdGFsX2Ftb3VudF9sYW5jb24nXSA/PyAwKTsKICAgICAgICAkdG90YWxQaXp6YXMgPSAoaW50KSgkcm93Wyd0b3RhbF9waXp6YXNfcGVsaXNzYW5uZSddID8/IDApICsgKGludCkoJHJvd1sndG90YWxfcGl6emFzX2xhbmNvbiddID8/IDApOwogICAgICAgICRuZCA9IChmbG9hdCkoJHJvd1snbmRfcGVsaXNzYW5uZSddID8/IDApICsgKGZsb2F0KSgkcm93WyduZF9sYW5jb24nXSA/PyAwKTsKICAgIH0KCiAgICByZXR1cm4gWyd0b3RhbF9waXp6YXMnID0+ICR0b3RhbFBpenphcywgJ3RvdGFsX2Ftb3VudCcgPT4gJHRvdGFsQW1vdW50LCAnbmQnID0+ICRuZF07Cn0KCi8vIENhbGN1bGVyIGxlcyB0b3RhdXggcG91ciBjaGFxdWUgYW5uw6llCiR0b3RhbHMgPSBbXTsKCmZvcmVhY2ggKCRwZXJpb2RzQnlZZWFyIGFzICR5ZWFyID0+ICRwZXJpb2QpIHsKICAgICRzdGFydCA9ICRwZXJpb2RbJ3N0YXJ0J107CiAgICAkZW5kID0gJHBlcmlvZFsnZW5kJ107CiAgICAkdG90YWxzWyR5ZWFyXSA9IGdldFRvdGFsc0ZvclBlcmlvZCgkcGRvLCAkc3RhcnQsICRlbmQsICRzdGF0c19zdWZmaXgpOwp9CgovLyBGb25jdGlvbiBwb3VyIGfDqW7DqXJlciBsZSB0YWJsZWF1IGNvbWJpbsOpCmZ1bmN0aW9uIGdlbmVyYXRlQ29tYmluZWRUYWJsZSgkZGF0YSwgJGRhdGVzQnlZZWFyLCAkeWVhcnMsICRzZWxlY3RlZERhdGUsICRjdXJyZW50WWVhciwgJGxvY2F0aW9uKSB7CiAgICAvLyAkZGF0YVttZXRyaWNdW2N1cnJlbnREYXRlU3RyaW5nXVt5ZWFyXSA9IHZhbHVlCgogICAgZWNobyAiPGRpdiBjbGFzcz0ndGFibGUtd3JhcHBlcic+IjsKICAgIGVjaG8gIjx0YWJsZSBjbGFzcz0ndGFibGUgY3VzdG9tLXRhYmxlJz4iOwogICAgZWNobyAiPHRoZWFkPjx0cj4iOwoKICAgIC8vIFByZW1pw6hyZSBjZWxsdWxlIGZpeGUKICAgIGVjaG8gIjx0aCBjbGFzcz0nc3RpY2t5LWNvbCc+RGF0ZXM8L3RoPiI7CgogICAgLy8gR8OpbsOpcmVyIGxlcyBlbi10w6p0ZXMgZGUgZGF0ZXMKICAgICRmb3JtYXR0ZXIgPSBuZXcgSW50bERhdGVGb3JtYXR0ZXIoJ2ZyX0ZSJywgSW50bERhdGVGb3JtYXR0ZXI6Ok5PTkUsIEludGxEYXRlRm9ybWF0dGVyOjpOT05FLCBudWxsLCBudWxsLCAnRUVFRScpOwoKICAgIGZvcmVhY2ggKCRkYXRlc0J5WWVhciBhcyAkY3VycmVudERhdGVTdHJpbmcgPT4gJHllYXJzRGF0ZXMpIHsKICAgICAgICAkZGF0ZU9iaiA9ICR5ZWFyc0RhdGVzWyRjdXJyZW50WWVhcl07IC8vIGdldCBjdXJyZW50IHllYXIncyBkYXRlCiAgICAgICAgJGRheU5hbWUgPSAkZGF0ZU9iaiA/IHVjZmlyc3QoJGZvcm1hdHRlci0+Zm9ybWF0KCRkYXRlT2JqKSkgOiAnJzsgLy8gUHJvdMOpZ2VyIGNvbnRyZSBudWxsCiAgICAgICAgJGRhdGVGb3JtYXR0ZWQgPSAkZGF0ZU9iai0+Zm9ybWF0KCdkL20vWScpOwogICAgICAgICRpc0N1cnJlbnRXZWVrID0gJ2N1cnJlbnQtd2Vlayc7CiAgICAgICAgZWNobyAiPHRoIGNsYXNzPSckaXNDdXJyZW50V2VlaycgZGF0YS1kYXRlPSciIC4gJGN1cnJlbnREYXRlU3RyaW5nIC4gIic+IiAuICRkYXlOYW1lIC4gIjxicj4iIC4gJGRhdGVGb3JtYXR0ZWQgLiAiPC90aD4iOwogICAgfQogICAgZWNobyAiPC90cj48L3RoZWFkPjx0Ym9keT4iOwoKICAgIC8vIEZvciBlYWNoIG1ldHJpYywgZ2VuZXJhdGUgYSByb3cKICAgICRtZXRyaWNzID0gWyd0b3RhbF9waXp6YXMnID0+ICdOb21icmUgVG90YWwgZGUgUGl6emFzJywgJ3RvdGFsX2Ftb3VudCcgPT4gJ01vbnRhbnQgVG90YWwgKOKCrCknLCAnbmQnID0+ICdNb250YW50IEQnLCAnZWQnID0+ICdNb250YW50IEVEJywgJ3dlYXRoZXInID0+ICdNw6l0w6lvJywgJ2V2ZW50cycgPT4gJ8OJdsOpbmVtZW50cyddOwoKCiAgICBmb3JlYWNoICgkbWV0cmljcyBhcyAkbWV0cmljS2V5ID0+ICRtZXRyaWNMYWJlbCkgewogICAgICAgIGVjaG8gIjx0cj48dGggY2xhc3M9J3N0aWNreS1jb2wnPiRtZXRyaWNMYWJlbDwvdGg+IjsKICAgICAgICBmb3JlYWNoICgkZGF0ZXNCeVllYXIgYXMgJGN1cnJlbnREYXRlU3RyaW5nID0+ICR5ZWFyc0RhdGVzKSB7CiAgICAgICAgICAgICRjZWxsQ29udGVudCA9ICcnOwogICAgICAgICAgICAkY2VsbENvbnRlbnQgLj0gIjxkaXYgY2xhc3M9J2NlbGwtY29udGVudCc+IjsKICAgICAgICAgICAgZm9yZWFjaCAoJHllYXJzIGFzICR5ZWFyKSB7CiAgICAgICAgICAgICAgICAkdmFsdWUgPSAkZGF0YVskbWV0cmljS2V5XVskY3VycmVudERhdGVTdHJpbmddWyR5ZWFyXSA/PyAnLSc7CiAgICAgICAgICAgICAgICBpZiAoJG1ldHJpY0tleSA9PSAndG90YWxfYW1vdW50JyB8fCAkbWV0cmljS2V5ID09ICduZCcpIHsKICAgICAgICAgICAgICAgICAgICAkdmFsdWUgPSBudW1iZXJfZm9ybWF0KCR2YWx1ZSwgMiwgJywnLCAnICcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGRhdGVPYmpGb3JZZWFyID0gJHllYXJzRGF0ZXNbJHllYXJdOwogICAgICAgICAgICAgICAgJGRhdGVTdHJpbmdGb3JZZWFyID0gJGRhdGVPYmpGb3JZZWFyLT5mb3JtYXQoJ1ktbS1kJyk7CiAgICAgICAgICAgICAgICAkY3VycmVudFllYXJDbGFzcyA9ICgkeWVhciA9PSAkY3VycmVudFllYXIpID8gJ2N1cnJlbnQteWVhci12YWx1ZScgOiAnJzsKCiAgICAgICAgICAgICAgICBpZiAoJHllYXIgPT0gJGN1cnJlbnRZZWFyKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgY3VycmVudCB5ZWFyIHZhbHVlCiAgICAgICAgICAgICAgICAgICAgJGlzRW1wdHlWYWx1ZSA9ICgkdmFsdWUgPT09IG51bGwgfHwgJHZhbHVlID09PSAwIHx8ICR2YWx1ZSA9PT0gJzAnIHx8ICR2YWx1ZSA9PT0gJzAsMDAnIHx8ICR2YWx1ZSA9PT0gJzAuMDAnIHx8ICR2YWx1ZSA9PT0gJy0nIHx8IChpc19udW1lcmljKCR2YWx1ZSkgJiYgKGZsb2F0KSR2YWx1ZSA9PSAwKSk7CgogICAgICAgICAgICAgICAgICAgIGlmICgkaXNFbXB0eVZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE91dHB1dCBidXR0b24gaW5zdGVhZCBvZiB2YWx1ZQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJG1ldHJpY0tleSA9PSAndG90YWxfcGl6emFzJyB8fCAkbWV0cmljS2V5ID09ICd0b3RhbF9hbW91bnQnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYnV0dG9uTGFiZWwgPSAnUsOpY3Vww6lyZXInOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGJ1dHRvbkxhYmVsID0gJ1JlbnNlaWduZXInOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBidXR0b24gd2l0aCBhcHByb3ByaWF0ZSBkYXRhIGF0dHJpYnV0ZXMKICAgICAgICAgICAgICAgICAgICAgICAgJGJ1dHRvbiA9ICI8YnV0dG9uIGNsYXNzPSdidG4gYnRuLXByaW1hcnkgYWN0aW9uLWJ1dHRvbicgZGF0YS1kYXRlPSckZGF0ZVN0cmluZ0ZvclllYXInIGRhdGEtZmllbGQ9JyRtZXRyaWNLZXknIGRhdGEtbG9jYXRpb249JyRsb2NhdGlvbic+JGJ1dHRvbkxhYmVsPC9idXR0b24+IjsKICAgICAgICAgICAgICAgICAgICAgICAgJGNlbGxDb250ZW50IC49ICI8ZGl2IGNsYXNzPSd5ZWFyLXZhbHVlICRjdXJyZW50WWVhckNsYXNzJyBkYXRhLXllYXI9JyR5ZWFyJyBkYXRhLWRhdGU9JyRkYXRlU3RyaW5nRm9yWWVhcic+JGJ1dHRvbjwvZGl2PiI7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gT3V0cHV0IHRoZSB2YWx1ZSBhcyBiZWZvcmUKICAgICAgICAgICAgICAgICAgICAgICAgJGNlbGxDb250ZW50IC49ICI8ZGl2IGNsYXNzPSd5ZWFyLXZhbHVlICRjdXJyZW50WWVhckNsYXNzJyBkYXRhLXllYXI9JyR5ZWFyJyBkYXRhLWRhdGU9JyRkYXRlU3RyaW5nRm9yWWVhcic+PHNwYW4gY2xhc3M9J3ZhbHVlJz4iIC4gaHRtbHNwZWNpYWxjaGFycygkdmFsdWUpIC4gIjwvc3Bhbj48L2Rpdj4iOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgLy8gT3V0cHV0IHRoZSB2YWx1ZSBhcyBiZWZvcmUKICAgICAgICAgICAgICAgICAgICAkY2VsbENvbnRlbnQgLj0gIjxkaXYgY2xhc3M9J3llYXItdmFsdWUgJGN1cnJlbnRZZWFyQ2xhc3MnIGRhdGEteWVhcj0nJHllYXInIGRhdGEtZGF0ZT0nJGRhdGVTdHJpbmdGb3JZZWFyJz48c3BhbiBjbGFzcz0ndmFsdWUnPiIgLiBodG1sc3BlY2lhbGNoYXJzKCR2YWx1ZSkgLiAiPC9zcGFuPjwvZGl2PiI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGNlbGxDb250ZW50IC49ICI8L2Rpdj4iOwogICAgICAgICAgICBlY2hvICI8dGQgZGF0YS1maWVsZD0nJG1ldHJpY0tleSc+JGNlbGxDb250ZW50PC90ZD4iOwogICAgICAgIH0KICAgICAgICBlY2hvICI8L3RyPiI7CiAgICB9CgogICAgZWNobyAiPC90Ym9keT48L3RhYmxlPjwvZGl2PiI7Cn0KPz4KPCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImZyIj4KPGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICA8dGl0bGU+U3RhdGlzdGlxdWVzIGRlcyBWZW50ZXM8L3RpdGxlPgogICAgPCEtLSBMaWVuIHZlcnMgQm9vdHN0cmFwIENTUyAtLT4KICAgIDxsaW5rCiAgICAgIHJlbD0ic3R5bGVzaGVldCIKICAgICAgaHJlZj0iaHR0cHM6Ly9zdGFja3BhdGguYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvNC41LjIvY3NzL2Jvb3RzdHJhcC5taW4uY3NzIgogICAgPgogICAgPCEtLSBTdHlsZXMgcGVyc29ubmFsaXPDqXMgLS0+CiAgICA8c3R5bGU+CiAgICAgICAgYm9keSB7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMxYTFhMWE7CiAgICAgICAgICAgIGNvbG9yOiAjZmZmZmZmOwogICAgICAgIH0KICAgICAgICAuY3VzdG9tLXRhYmxlIHsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzJjMmMyYzsKICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICM0NDQ7CiAgICAgICAgICAgIG1pbi13aWR0aDogODAwcHg7CiAgICAgICAgfQogICAgICAgIC5jdXN0b20tdGFibGUgdGgsIC5jdXN0b20tdGFibGUgdGQgewogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjNDQ0OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICAgICAgICAgIHBhZGRpbmc6IDEycHg7CiAgICAgICAgICAgIG1pbi13aWR0aDogMTAwcHg7CiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgfQogICAgICAgIC5jdXN0b20tdGFibGUgdGggewogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzMzMzOwogICAgICAgICAgICBwb3NpdGlvbjogc3RpY2t5OwogICAgICAgICAgICB0b3A6IDA7CiAgICAgICAgICAgIHotaW5kZXg6IDI7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgIH0KICAgICAgICAuY3VzdG9tLXRhYmxlIHRoLnN0aWNreS1jb2wsIC5jdXN0b20tdGFibGUgdGQuc3RpY2t5LWNvbCB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBzdGlja3k7CiAgICAgICAgICAgIGxlZnQ6IDA7CiAgICAgICAgICAgIHotaW5kZXg6IDM7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMzMzMzMzM7CiAgICAgICAgfQogICAgICAgIGgyIHsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMzBweDsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgICAgICB9CiAgICAgICAgLnRhYmxlLXdyYXBwZXIgewogICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOwogICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICAgICAgfQogICAgICAgIC5jb250YWluZXIgewogICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICAgICAgfQogICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA1NzZweCkgewogICAgICAgICAgICAuY3VzdG9tLXRhYmxlIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICAgICAgfQogICAgICAgICAgICAuY3VzdG9tLXRhYmxlIHRoLCAuY3VzdG9tLXRhYmxlIHRkIHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDhweDsKICAgICAgICAgICAgICAgIG1pbi13aWR0aDogODBweDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAuYnRuLWdyb3VwIC5idG4uYWN0aXZlIHsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsKICAgICAgICAgICAgY29sb3I6ICNmZmY7CiAgICAgICAgfQogICAgICAgIC8qIFN0eWxlIHBvdXIgbGUgZGF0ZXBpY2tlciAqLwogICAgICAgIC5kYXRlcGlja2VyLWNvbnRhaW5lciB7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDIwcHg7CiAgICAgICAgfQogICAgICAgIC8qIFN0eWxlIHBvdXIgcmVuZHJlIGxlcyB5ZWFyLXZhbHVlIGNsaXF1YWJsZXMgKi8KICAgICAgICAueWVhci12YWx1ZSB7CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB9CiAgICAgICAgLyogU3R5bGUgcG91ciBsZXMgdmFsZXVycyBkZXMgYW5uw6llcyAqLwogICAgICAgIC55ZWFyLXZhbHVlIHsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4OwogICAgICAgICAgICBjb2xvcjogI2QzZDNkMzsgLyogR3JpcyB0csOocyBjbGFpciAqLwogICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsOyAvKiBQYXMgZW4gZ3JhcyAqLwogICAgICAgIH0KICAgICAgICAueWVhci12YWx1ZS5jdXJyZW50LXllYXItdmFsdWUgewogICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjsgLyogQmxhbmMgKi8KICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7IC8qIEVuIGdyYXMgKi8KICAgICAgICB9CiAgICAgICAgLmNlbGwtY29udGVudCB7CiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDYwcHg7CiAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgICAgfQogICAgICAgIC8qIFN0eWxlIHBvdXIgbGVzIHN0YXRpc3RpcXVlcyBzdXBwbMOpbWVudGFpcmVzICovCiAgICAgICAgLnN0YXRzLXNlY3Rpb24gewogICAgICAgICAgICBtYXJnaW4tdG9wOiA0MHB4OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgICAgIH0KICAgICAgICAuc3RhdHMtc2VjdGlvbiBoMyB7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICAgICAgfQogICAgICAgIC5zdGF0cy10YWJsZSB7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBtYXgtd2lkdGg6IDgwMHB4OwogICAgICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgICAgICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKICAgICAgICB9CiAgICAgICAgLnN0YXRzLXRhYmxlIHRoLCAuc3RhdHMtdGFibGUgdGQgewogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjNDQ0OwogICAgICAgICAgICBwYWRkaW5nOiAxMHB4OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgfQogICAgICAgIC5zdGF0cy10YWJsZSB0aCB7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMzMzMzMzM7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgIH0KICAgICAgICAuc3RhdHMtdGFibGUgdGQuY3VycmVudC15ZWFyIHsKICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7IC8qIEJsYW5jICovCiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOyAvKiBFbiBncmFzICovCiAgICAgICAgfQogICAgICAgIC5zdGF0cy10YWJsZSB0ZC5vdGhlci15ZWFyIHsKICAgICAgICAgICAgY29sb3I6ICNkM2QzZDM7IC8qIEdyaXMgdHLDqHMgY2xhaXIgKi8KICAgICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsgLyogUGFzIGVuIGdyYXMgKi8KICAgICAgICB9CiAgICAgICAgLyogTWFzcXVlciBsZXMgY2hhbXBzIGRlIHBsYWdlIHBlcnNvbm5hbGlzw6llIHBhciBkw6lmYXV0ICovCiAgICAgICAgI2N1c3RvbVBlcmlvZElucHV0cyB7CiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgICAgfQoKICAgICAgICAuZm9ybS1zZWN0aW9uIHsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkOwogICAgICAgIHBhZGRpbmc6IDE1cHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICB9CiAgICAKICAgIC5mb3JtLXNlY3Rpb24gaDQgewogICAgICAgIGZvbnQtc2l6ZTogMS4yZW07CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICAgIH0KCiAgICBsYWJlbCB7CiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICB9CgogICAgLnJhZGlvLWdyb3VwIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGdhcDogMjBweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgfQoKICAgIC5yYWRpby1ncm91cCBkaXYgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICB9CiAgICA8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoKPGRpdiBjbGFzcz0iY29udGFpbmVyIHRleHQtY2VudGVyIj4KICAgIDxoMSBjbGFzcz0idGV4dC1jZW50ZXIgbXktNCI+U3RhdGlzdGlxdWVzIGRlcyBWZW50ZXM8L2gxPgogICAgPGRpdiBjbGFzcz0iYnRuLWdyb3VwIG1iLTMiIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSJDaG9peCBkZSBsYSBsb2NhbGlzYXRpb24iPgogICAgICAgIDxhIGhyZWY9Ij9sb2NhdGlvbj1wZWxpc3Nhbm5lJmRhdGU9PD9waHAgZWNobyAkc2VsZWN0ZWREYXRlOyA/PiIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSA8P3BocCBlY2hvICgkbG9jYXRpb24gPT0gJ3BlbGlzc2FubmUnKSA/ICdhY3RpdmUnIDogJyc7ID8+Ij5Qw6lsaXNzYW5uZTwvYT4KICAgICAgICA8YSBocmVmPSI/bG9jYXRpb249bGFuY29uJmRhdGU9PD9waHAgZWNobyAkc2VsZWN0ZWREYXRlOyA/PiIgY2xhc3M9ImJ0biBidG4tc2Vjb25kYXJ5IDw/cGhwIGVjaG8gKCRsb2NhdGlvbiA9PSAnbGFuY29uJykgPyAnYWN0aXZlJyA6ICcnOyA/PiI+TGFuw6dvbjwvYT4KICAgICAgICA8YSBocmVmPSI/bG9jYXRpb249Ym90aCZkYXRlPTw/cGhwIGVjaG8gJHNlbGVjdGVkRGF0ZTsgPz4iIGNsYXNzPSJidG4gYnRuLXN1Y2Nlc3MgPD9waHAgZWNobyAoJGxvY2F0aW9uID09ICdib3RoJykgPyAnYWN0aXZlJyA6ICcnOyA/PiI+TGVzIGRldXg8L2E+CiAgICA8L2Rpdj4KPGJyPgoKCiAgICA8IS0tIFPDqWxlY3RldXIgZGUgZGF0ZSAtLT4KICAgIDxkaXYgY2xhc3M9ImRhdGVwaWNrZXItY29udGFpbmVyIj4KICAgICAgICA8Zm9ybSBtZXRob2Q9IkdFVCIgYWN0aW9uPSIiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJsb2NhdGlvbiIgdmFsdWU9Ijw/cGhwIGVjaG8gJGxvY2F0aW9uOyA/PiI+CiAgICAgICAgICAgIDxsYWJlbCBmb3I9ImRhdGVQaWNrZXIiPkNob2lzaXIgdW5lIGRhdGUgOjwvbGFiZWw+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJkYXRlIiBpZD0iZGF0ZVBpY2tlciIgbmFtZT0iZGF0ZSIgdmFsdWU9Ijw/cGhwIGVjaG8gJHNlbGVjdGVkRGF0ZTsgPz4iPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+QWZmaWNoZXIgbGEgc2VtYWluZTwvYnV0dG9uPgogICAgICAgIDwvZm9ybT4KICAgIDwvZGl2PgogICAgPGJyPgoKICAgICAgICA8IS0tIEJvdXRvbnMgZGUgbmF2aWdhdGlvbiBkZXMgc2VtYWluZXMgLS0+CiAgICAgICAgPGRpdiBjbGFzcz0iYnRuLWdyb3VwIG1iLTMiIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSJOYXZpZ2F0aW9uIGRlcyBzZW1haW5lcyI+CiAgICAgICAgPD9waHAKICAgICAgICAkcHJldldlZWtEYXRlID0gY2xvbmUgJGN1cnJlbnREYXRlOwogICAgICAgICRwcmV2V2Vla0RhdGUtPm1vZGlmeSgnLTEgd2VlaycpOwogICAgICAgICRuZXh0V2Vla0RhdGUgPSBjbG9uZSAkY3VycmVudERhdGU7CiAgICAgICAgJG5leHRXZWVrRGF0ZS0+bW9kaWZ5KCcrMSB3ZWVrJyk7CiAgICAgICAgPz4KICAgICAgICA8YSBocmVmPSI/bG9jYXRpb249PD9waHAgZWNobyAkbG9jYXRpb247ID8+JmRhdGU9PD9waHAgZWNobyAkcHJldldlZWtEYXRlLT5mb3JtYXQoJ1ktbS1kJyk7ID8+IiBjbGFzcz0iYnRuIGJ0bi1saWdodCI+U2VtYWluZSBwcsOpY8OpZGVudGU8L2E+CiAgICAgICAgPGEgaHJlZj0iP2xvY2F0aW9uPTw/cGhwIGVjaG8gJGxvY2F0aW9uOyA/PiZkYXRlPTw/cGhwIGVjaG8gJG5leHRXZWVrRGF0ZS0+Zm9ybWF0KCdZLW0tZCcpOyA/PiIgY2xhc3M9ImJ0biBidG4tbGlnaHQiPlNlbWFpbmUgc3VpdmFudGU8L2E+CiAgICA8L2Rpdj4KICAgIDxicj4KICAgIDxoMSBjbGFzcz0idGV4dC1jZW50ZXIgbXktNCI+PD9waHAgZWNobyAkc2VsZWN0aW9uOyA/PjwvaDE+CiAgICA8P3BocAogICAgLy8gR8OpbsOpcmVyIGxlIHRhYmxlYXUgY29tYmluw6kKICAgIGdlbmVyYXRlQ29tYmluZWRUYWJsZSgkZGF0YSwgJGRhdGVzQnlZZWFyLCAkeWVhcnMsICRzZWxlY3RlZERhdGUsICRjdXJyZW50WWVhciwgJGxvY2F0aW9uKTsKICAgID8+CgoKPCEtLSBCb3V0b24gIk1ldHRyZSDDoCBqb3VyIiAtLT4KPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXdhcm5pbmcgbXQtNCIgaWQ9InVwZGF0ZUJ1dHRvbiI+TWV0dHJlIMOgIGpvdXI8L2J1dHRvbj4KCgoKICAgIDwhLS0gU3RhdGlzdGlxdWVzIHN1cHBsw6ltZW50YWlyZXMgLS0+CiAgICA8ZGl2IGlkPSJzdGF0cy1zZWN0aW9uIiBjbGFzcz0ic3RhdHMtc2VjdGlvbiBjb250YWluZXIgdGV4dC1jZW50ZXIiPgogICAgPGgzPlN0YXRpc3RpcXVlcyBzdXBwbMOpbWVudGFpcmVzPC9oMz4KCiAgICA8IS0tIEZvcm11bGFpcmUgZGUgc8OpbGVjdGlvbiBkZSBsYSBww6lyaW9kZSBldCBkZSBsYSBsb2NhbGlzYXRpb24gLS0+CiAgICA8Zm9ybSBtZXRob2Q9IkdFVCIgYWN0aW9uPSIjc3RhdHMtc2VjdGlvbiI+CgogICAgICAgIDwhLS0gU2VjdGlvbiBwb3VyIGxhIGxvY2FsaXNhdGlvbiAtLT4KICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLXNlY3Rpb24iPgogICAgICAgICAgICA8aDQ+U8OpbGVjdGlvbm5lciBsYSBsb2NhbGlzYXRpb248L2g0PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyYWRpby1ncm91cCI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgaWQ9InN0YXRzX2xvY2F0aW9uX3BlbGlzc2FubmUiIG5hbWU9InN0YXRzX2xvY2F0aW9uIiB2YWx1ZT0icGVsaXNzYW5uZSIgPD9waHAgaWYgKCRzdGF0c19sb2NhdGlvbiA9PSAncGVsaXNzYW5uZScpIGVjaG8gJ2NoZWNrZWQnOyA/Pj4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJzdGF0c19sb2NhdGlvbl9wZWxpc3Nhbm5lIj5Qw6lsaXNzYW5uZTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBpZD0ic3RhdHNfbG9jYXRpb25fbGFuY29uIiBuYW1lPSJzdGF0c19sb2NhdGlvbiIgdmFsdWU9ImxhbmNvbiIgPD9waHAgaWYgKCRzdGF0c19sb2NhdGlvbiA9PSAnbGFuY29uJykgZWNobyAnY2hlY2tlZCc7ID8+PgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9InN0YXRzX2xvY2F0aW9uX2xhbmNvbiI+TGFuw6dvbjwvbGFiZWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBpZD0ic3RhdHNfbG9jYXRpb25fYm90aCIgbmFtZT0ic3RhdHNfbG9jYXRpb24iIHZhbHVlPSJib3RoIiA8P3BocCBpZiAoJHN0YXRzX2xvY2F0aW9uID09ICdib3RoJykgZWNobyAnY2hlY2tlZCc7ID8+PgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9InN0YXRzX2xvY2F0aW9uX2JvdGgiPkxlcyBkZXV4PC9sYWJlbD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPCEtLSBTZWN0aW9uIHBvdXIgbGEgcMOpcmlvZGUgLS0+CiAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1zZWN0aW9uIj4KICAgICAgICAgICAgPGg0PlPDqWxlY3Rpb25uZXIgbGEgcMOpcmlvZGU8L2g0PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyYWRpby1ncm91cCI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgaWQ9InBlcmlvZGVfc2VtYWluZSIgbmFtZT0icGVyaW9kZSIgdmFsdWU9InNlbWFpbmUiIDw/cGhwIGlmICgkcGVyaW9kZSA9PSAnc2VtYWluZScpIGVjaG8gJ2NoZWNrZWQnOyA/Pj4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJwZXJpb2RlX3NlbWFpbmUiPlNlbWFpbmU8L2xhYmVsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgaWQ9InBlcmlvZGVfcGVyc29ubmFsaXNlZSIgbmFtZT0icGVyaW9kZSIgdmFsdWU9InBlcnNvbm5hbGlzZWUiIDw/cGhwIGlmICgkcGVyaW9kZSA9PSAncGVyc29ubmFsaXNlZScpIGVjaG8gJ2NoZWNrZWQnOyA/Pj4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJwZXJpb2RlX3BlcnNvbm5hbGlzZWUiPlBsYWdlIHBlcnNvbm5hbGlzw6llPC9sYWJlbD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDwhLS0gUG91ciBsYSBwbGFnZSBwZXJzb25uYWxpc8OpZSwgYWZmaWNoZXIgbGVzIGNoYW1wcyBkZSBkYXRlIC0tPgogICAgICAgICAgICA8ZGl2IGlkPSJjdXN0b21QZXJpb2RJbnB1dHMiIHN0eWxlPSI8P3BocCBpZiAoJHBlcmlvZGUgIT0gJ3BlcnNvbm5hbGlzZWUnKSBlY2hvICdkaXNwbGF5OiBub25lOyc7ID8+Ij4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9ImN1c3RvbVN0YXJ0Ij5EYXRlIGRlIGTDqWJ1dCA6PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJkYXRlIiBpZD0iY3VzdG9tU3RhcnQiIG5hbWU9ImN1c3RvbV9zdGFydCIgdmFsdWU9Ijw/cGhwIGVjaG8gJF9HRVRbJ2N1c3RvbV9zdGFydCddID8/ICcnOyA/PiI+PGJyPgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iY3VzdG9tRW5kIj5EYXRlIGRlIGZpbiA6PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJkYXRlIiBpZD0iY3VzdG9tRW5kIiBuYW1lPSJjdXN0b21fZW5kIiB2YWx1ZT0iPD9waHAgZWNobyAkX0dFVFsnY3VzdG9tX2VuZCddID8/ICcnOyA/PiI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8IS0tIEJvdXRvbiBkZSBzb3VtaXNzaW9uIC0tPgogICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5BZmZpY2hlciBsZXMgc3RhdGlzdGlxdWVzPC9idXR0b24+CiAgICA8L2Zvcm0+CgogICAgPCEtLSBBZmZpY2hhZ2UgZGVzIHN0YXRpc3RpcXVlcyAtLT4KICAgIDxoND4KICAgICAgICBTdGF0aXN0aXF1ZXMgcG91ciBsYSBww6lyaW9kZSBzw6lsZWN0aW9ubsOpZSA6IDxicj4KICAgICAgICA8P3BocCBpZiAoJHBlcmlvZGUgPT09ICdzZW1haW5lJyk6ID8+CiAgICAgICAgICAgIFNlbWFpbmUgTsKwPD9waHAgZWNobyAkY3VycmVudFdlZWtOdW1iZXI7ID8+IDxicj4KICAgICAgICA8P3BocCBlbHNlaWYgKCRwZXJpb2RlID09PSAncGVyc29ubmFsaXNlZScpOiA/PgogICAgICAgICAgICBEdSA8P3BocCBlY2hvIGRhdGUoJ2QvbS9ZJywgc3RydG90aW1lKCRfR0VUWydjdXN0b21fc3RhcnQnXSkpOyA/PiAKICAgICAgICAgICAgYXUgPD9waHAgZWNobyBkYXRlKCdkL20vWScsIHN0cnRvdGltZSgkX0dFVFsnY3VzdG9tX2VuZCddKSk7ID8+IDxicj4KICAgICAgICA8P3BocCBlbmRpZjsgPz4KICAgICAgICA8P3BocCBlY2hvIHVjZmlyc3QoJHN0YXRzX2xvY2F0aW9uKTsgPz4KICAgIDwvaDQ+CgoKICAgIDx0YWJsZSBjbGFzcz0ic3RhdHMtdGFibGUiPgogICAgICAgIDx0cj4KICAgICAgICAgICAgPHRoPkFubsOpZTwvdGg+CiAgICAgICAgICAgIDx0aD5Ob21icmUgVG90YWwgZGUgUGl6emFzPC90aD4KICAgICAgICAgICAgPHRoPk1vbnRhbnQgVG90YWwgKOKCrCk8L3RoPgogICAgICAgICAgICA8dGg+TW9udGFudCBEPC90aD4KICAgICAgICA8L3RyPgogICAgICAgIDw/cGhwIGZvcmVhY2ggKCR5ZWFycyBhcyAkeWVhcik6ID8+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iPD9waHAgZWNobyAoJHllYXIgPT0gJGN1cnJlbnRZZWFyKSA/ICdjdXJyZW50LXllYXInIDogJ290aGVyLXllYXInOyA/PiI+PD9waHAgZWNobyAkeWVhcjsgPz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGNsYXNzPSI8P3BocCBlY2hvICgkeWVhciA9PSAkY3VycmVudFllYXIpID8gJ2N1cnJlbnQteWVhcicgOiAnb3RoZXIteWVhcic7ID8+Ij4KICAgICAgICAgICAgICAgICAgICA8P3BocCBlY2hvICR0b3RhbHNbJHllYXJdWyd0b3RhbF9waXp6YXMnXSA/PyAwOyA/PgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iPD9waHAgZWNobyAoJHllYXIgPT0gJGN1cnJlbnRZZWFyKSA/ICdjdXJyZW50LXllYXInIDogJ290aGVyLXllYXInOyA/PiI+CiAgICAgICAgICAgICAgICAgICAgPD9waHAgZWNobyBudW1iZXJfZm9ybWF0KCR0b3RhbHNbJHllYXJdWyd0b3RhbF9hbW91bnQnXSA/PyAwLCAyLCAnLCcsICcgJyk7ID8+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgPHRkIGNsYXNzPSI8P3BocCBlY2hvICgkeWVhciA9PSAkY3VycmVudFllYXIpID8gJ2N1cnJlbnQteWVhcicgOiAnb3RoZXIteWVhcic7ID8+Ij4KICAgICAgICAgICAgICAgICAgICA8P3BocCBlY2hvIG51bWJlcl9mb3JtYXQoJHRvdGFsc1skeWVhcl1bJ25kJ10gPz8gMCwgMiwgJywnLCAnICcpOyA/PgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICA8P3BocCBlbmRmb3JlYWNoOyA/PgogICAgPC90YWJsZT4KPC9kaXY+CgoKPC9kaXY+Cgo8IS0tIExpZW4gdmVycyBCb290c3RyYXAgSlMgZXQgZMOpcGVuZGFuY2VzIC0tPgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jb2RlLmpxdWVyeS5jb20vanF1ZXJ5LTMuNS4xLm1pbi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQKICBzcmM9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vcG9wcGVyLmpzQDEuMTYuMS9kaXN0L3VtZC9wb3BwZXIubWluLmpzIgo+PC9zY3JpcHQ+CjxzY3JpcHQKICBzcmM9Imh0dHBzOi8vc3RhY2twYXRoLmJvb3RzdHJhcGNkbi5jb20vYm9vdHN0cmFwLzQuNS4yL2pzL2Jvb3RzdHJhcC5taW4uanMiCj48L3NjcmlwdD4KCjwhLS0gSmF2YVNjcmlwdCBwb3VyIHN5bmNocm9uaXNlciBsZSBkw6lmaWxlbWVudCBob3Jpem9udGFsIGRlcyB0YWJsZWF1eCAtLT4KPHNjcmlwdD4KICAgIC8vIE9idGVuaXIgdG91cyBsZXMgw6lsw6ltZW50cyBkZXMgY29udGVuZXVycyBkZXMgdGFibGVhdXgKICAgIGNvbnN0IHRhYmxlV3JhcHBlcnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudGFibGUtd3JhcHBlcicpOwoKICAgIC8vIEZvbmN0aW9uIHBvdXIgc3luY2hyb25pc2VyIGxlIGTDqWZpbGVtZW50CiAgICBmdW5jdGlvbiBzeW5jU2Nyb2xsKHNvdXJjZSkgewogICAgICAgIHRhYmxlV3JhcHBlcnMuZm9yRWFjaCh3cmFwcGVyID0+IHsKICAgICAgICAgICAgaWYgKHdyYXBwZXIgIT09IHNvdXJjZSkgewogICAgICAgICAgICAgICAgd3JhcHBlci5zY3JvbGxMZWZ0ID0gc291cmNlLnNjcm9sbExlZnQ7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIH0KCiAgICB0YWJsZVdyYXBwZXJzLmZvckVhY2god3JhcHBlciA9PiB7CiAgICAgICAgd3JhcHBlci5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoKSA9PiB7CiAgICAgICAgICAgIHN5bmNTY3JvbGwod3JhcHBlcik7CiAgICAgICAgfSk7CiAgICB9KTsKCiAgICAvLyBEw6lmaW5pciBsYSBwb3NpdGlvbiBkZSBkw6lmaWxlbWVudCBpbml0aWFsZSBwb3VyIGFmZmljaGVyIGxhIHNlbWFpbmUgc8OpbGVjdGlvbm7DqWUKICAgIGZ1bmN0aW9uIHNjcm9sbFRvU2VsZWN0ZWRXZWVrKCkgewogICAgICAgIGNvbnN0IHNlbGVjdGVkRGF0ZSA9ICc8P3BocCBlY2hvICRzZWxlY3RlZERhdGU7ID8+JzsKICAgICAgICB0YWJsZVdyYXBwZXJzLmZvckVhY2god3JhcHBlciA9PiB7CiAgICAgICAgICAgIGNvbnN0IHRhYmxlID0gd3JhcHBlci5xdWVyeVNlbGVjdG9yKCd0YWJsZScpOwogICAgICAgICAgICBjb25zdCB0aHMgPSB0YWJsZS5xdWVyeVNlbGVjdG9yQWxsKCd0aFtkYXRhLWRhdGVdJyk7CiAgICAgICAgICAgIGxldCBzY3JvbGxQb3NpdGlvbiA9IDA7CiAgICAgICAgICAgIGxldCBmb3VuZCA9IGZhbHNlOwogICAgICAgICAgICB0aHMuZm9yRWFjaCgodGgsIGluZGV4KSA9PiB7CiAgICAgICAgICAgICAgICBpZiAodGguZ2V0QXR0cmlidXRlKCdkYXRhLWRhdGUnKSA9PT0gc2VsZWN0ZWREYXRlKSB7CiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsUG9zaXRpb24gPSB0aC5vZmZzZXRMZWZ0IC0gd3JhcHBlci5vZmZzZXRXaWR0aCAvIDIgKyB0aC5vZmZzZXRXaWR0aCAvIDI7CiAgICAgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgaWYgKGZvdW5kKSB7CiAgICAgICAgICAgICAgICB3cmFwcGVyLnNjcm9sbExlZnQgPSBzY3JvbGxQb3NpdGlvbjsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfQoKICAgIC8vIEFwcGVsZXIgbGEgZm9uY3Rpb24gYXByw6hzIGxlIGNoYXJnZW1lbnQgZGUgbGEgcGFnZQogICAgd2luZG93Lm9ubG9hZCA9IHNjcm9sbFRvU2VsZWN0ZWRXZWVrOwoKLy8gR2VzdGlvbiBkZXMgY2xpY3Mgc3VyIGxlcyB2YWxldXJzIGRlcyBhbm7DqWVzCiQoZG9jdW1lbnQpLm9uKCdjbGljaycsICcueWVhci12YWx1ZScsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgLy8gRW1ww6pjaGVyIGxhIHByb3BhZ2F0aW9uIGR1IGNsaWMgYXUgcGFyZW50CgogICAgLy8gVsOpcmlmaWVyIHNpIGMnZXN0IHVuIGJvdXRvbiAiUsOpY3Vww6lyZXIiCiAgICB2YXIgYnV0dG9uID0gJCh0aGlzKS5maW5kKCcuYWN0aW9uLWJ1dHRvbicpOwogICAgaWYgKGJ1dHRvbi5sZW5ndGggPiAwICYmIGJ1dHRvbi50ZXh0KCkudHJpbSgpID09PSAnUsOpY3Vww6lyZXInKSB7CiAgICAgICAgLy8gU2kgYydlc3QgdW4gYm91dG9uICJSw6ljdXDDqXJlciIsIG9uIG5lIGZhaXQgcmllbgogICAgICAgIHJldHVybjsgLy8gU29ydGlyIGRlIGxhIGZvbmN0aW9uIHBvdXIgbmUgcGFzIGV4w6ljdXRlciBsZSByZXN0ZSBkdSBjb2RlCiAgICB9CgogICAgdmFyIGRhdGUgPSAkKHRoaXMpLmRhdGEoJ2RhdGUnKTsKICAgIHZhciBmaWVsZCA9ICQodGhpcykuY2xvc2VzdCgndGQnKS5kYXRhKCdmaWVsZCcpOwogICAgdmFyIGN1cnJlbnRWYWx1ZSA9ICQodGhpcykuZmluZCgnLnZhbHVlJykudGV4dCgpLnRyaW0oKTsKICAgIHZhciBsb2NhdGlvbiA9ICc8P3BocCBlY2hvICRsb2NhdGlvbjsgPz4nOwoKICAgIGlmIChjdXJyZW50VmFsdWUgPT09ICctJykgewogICAgICAgIGN1cnJlbnRWYWx1ZSA9ICcnOwogICAgfQoKICAgIHZhciBuZXdWYWx1ZSA9IHByb21wdCgiVmV1aWxsZXogZW50cmVyIGxhIHZhbGV1ciBwb3VyICIgKyBmaWVsZCArICIgbGUgIiArIGRhdGUgKyAiIDoiLCBjdXJyZW50VmFsdWUpOwogICAgaWYgKG5ld1ZhbHVlICE9PSBudWxsKSB7CiAgICAgICAgLy8gRW52b3llciBsYSBub3V2ZWxsZSB2YWxldXIgYXUgc2VydmV1ciB2aWEgQUpBWAogICAgICAgICQuYWpheCh7CiAgICAgICAgICAgIHVybDogJ3VwZGF0ZV9ldmVudC5waHAnLAogICAgICAgICAgICB0eXBlOiAnUE9TVCcsCiAgICAgICAgICAgIGRhdGE6IHsKICAgICAgICAgICAgICAgIGRhdGU6IGRhdGUsCiAgICAgICAgICAgICAgICBmaWVsZDogZmllbGQsCiAgICAgICAgICAgICAgICB2YWx1ZTogbmV3VmFsdWUsCiAgICAgICAgICAgICAgICBsb2NhdGlvbjogbG9jYXRpb24KICAgICAgICAgICAgfSwKICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24ocmVzcG9uc2UpIHsKICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZSA9PSAnc3VjY2VzcycpIHsKICAgICAgICAgICAgICAgICAgICAvLyBSZWNoYXJnZXIgbGEgcGFnZSBwb3VyIG1ldHRyZSDDoCBqb3VyIGxlcyBkb25uw6llcwogICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgYWxlcnQoJ0VycmV1ciBsb3JzIGRlIGxhIG1pc2Ugw6Agam91ci4nKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgYWxlcnQoJ0VycmV1ciBkZSBjb21tdW5pY2F0aW9uIGF2ZWMgbGUgc2VydmV1ci4nKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfQp9KTsKCgoKICAgIC8vIEFmZmljaGVyL01hc3F1ZXIgbGVzIGNoYW1wcyBkZSBkYXRlIHBvdXIgbGEgcMOpcmlvZGUgcGVyc29ubmFsaXPDqWUKICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgICAgICAgJCgnaW5wdXRbbmFtZT0icGVyaW9kZSJdJykuY2hhbmdlKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgIGlmICgkKHRoaXMpLnZhbCgpID09ICdwZXJzb25uYWxpc2VlJykgewogICAgICAgICAgICAgICAgJCgnI2N1c3RvbVBlcmlvZElucHV0cycpLnNob3coKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICQoJyNjdXN0b21QZXJpb2RJbnB1dHMnKS5oaWRlKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIH0pOwoKICAgIC8vIFNjcm9sbCBhdXRvbWF0aXF1ZSB2ZXJzIGxhIHNlY3Rpb24gZGVzIHN0YXRpc3RpcXVlcyBzaSBsJ2FuY3JlIGVzdCBwcsOpc2VudGUKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5oYXNoID09PSAnI3N0YXRzLXNlY3Rpb24nKSB7CiAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzdGF0cy1zZWN0aW9uJykuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcgfSk7CiAgICAgICAgfQogICAgfSk7CgogICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CiAgICAvLyBHZXN0aW9uIGRlcyBjbGljcyBzdXIgbGVzIGJvdXRvbnMgIlLDqWN1cMOpcmVyIgogICAgJChkb2N1bWVudCkub24oJ2NsaWNrJywgJy5hY3Rpb24tYnV0dG9uJywgZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAvLyBFbXDDqmNoZSBsZSBjb21wb3J0ZW1lbnQgcGFyIGTDqWZhdXQgZHUgYm91dG9uCgogICAgICAgIC8vIFLDqWN1cMOpcmVyIGxlcyB2YWxldXJzIGRlIGRhdGEtYXR0cmlidXRlcwogICAgICAgIHZhciBkYXRlID0gJCh0aGlzKS5kYXRhKCdkYXRlJyk7CiAgICAgICAgdmFyIGZpZWxkID0gJCh0aGlzKS5kYXRhKCdmaWVsZCcpOwogICAgICAgIHZhciBsb2NhdGlvbiA9ICQodGhpcykuZGF0YSgnbG9jYXRpb24nKTsKCiAgICAgICAgLy8gVsOpcmlmaWVyIHF1ZSBsZSBib3V0b24gZXN0IGJpZW4gdW4gIlLDqWN1cMOpcmVyIgogICAgICAgIGlmICgkKHRoaXMpLnRleHQoKS50cmltKCkgPT09ICdSw6ljdXDDqXJlcicpIHsKICAgICAgICAgICAgLy8gRmFpcmUgdW5lIHJlcXXDqnRlIEFKQVggdmVycyBmaWxsX3RhYmxlLnBocCBhdmVjIGxhIHZhbGV1ciBkZSBkYXRlCiAgICAgICAgICAgICQuYWpheCh7CiAgICAgICAgICAgICAgICB1cmw6ICdmaWxsX3RhYmxlLnBocCcsCiAgICAgICAgICAgICAgICB0eXBlOiAnUE9TVCcsCiAgICAgICAgICAgICAgICBkYXRhOiB7IGRhdGU6IGRhdGUsIGxvY2F0aW9uOiBsb2NhdGlvbiB9LAogICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24ocmVzcG9uc2UpIHsKICAgICAgICAgICAgICAgICAgICBhbGVydCgnTGVzIGRvbm7DqWVzIHBvdXIgbGEgZGF0ZSAnICsgZGF0ZSArICcgb250IMOpdMOpIFLDqWN1cMOpcmVyZXMuJyk7CiAgICAgICAgICAgICAgICAgICAgLy8gVm91cyBwb3V2ZXogw6lnYWxlbWVudCByZWNoYXJnZXIgb3UgbWV0dHJlIMOgIGpvdXIgbGEgcGFnZSBpY2kgc2kgbsOpY2Vzc2FpcmUKICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7IC8vIFNpIHZvdXMgdm91bGV6IHJlY2hhcmdlciBsYSBwYWdlIGFwcsOocyBsJ2FwcGVsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKHhociwgc3RhdHVzLCBlcnJvcikgewogICAgICAgICAgICAgICAgICAgIGFsZXJ0KCdFcnJldXIgbG9ycyBkZSBsYSByw6ljdXDDqXJhdGlvbiBkZXMgZG9ubsOpZXMgOiAnICsgZXJyb3IpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICB9KTsKfSk7CgoKICAgIC8vIEZvbmN0aW9uIHBvdXIgb2J0ZW5pciBsYSBkYXRlIGR1IGpvdXIgYXUgZm9ybWF0IFlZWVktTU0tREQKICAgIGZ1bmN0aW9uIGdldEN1cnJlbnREYXRlKCkgewogICAgICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTsKICAgICAgICBjb25zdCB5ZWFyID0gdG9kYXkuZ2V0RnVsbFllYXIoKTsKICAgICAgICBjb25zdCBtb250aCA9IFN0cmluZyh0b2RheS5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTsgLy8gTGVzIG1vaXMgY29tbWVuY2VudCDDoCAwCiAgICAgICAgY29uc3QgZGF5ID0gU3RyaW5nKHRvZGF5LmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKTsKICAgICAgICByZXR1cm4gYCR7eWVhcn0tJHttb250aH0tJHtkYXl9YDsKICAgIH0KCiAgICAvLyBFbnZveWVyIGxhIGRhdGUgZHUgam91ciB2aWEgQUpBWAogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VwZGF0ZUJ1dHRvbicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgY29uc3QgY3VycmVudERhdGUgPSBnZXRDdXJyZW50RGF0ZSgpOyAvLyBPYnRlbmlyIGxhIGRhdGUgZHUgam91cgoKICAgICAgICAvLyBFbnZveWVyIGxhIHJlcXXDqnRlIEFKQVggw6AgZmlsbF90YWJsZS5waHAKICAgICAgICAkLmFqYXgoewogICAgICAgICAgICB1cmw6ICdmaWxsX3RhYmxlLnBocCcsCiAgICAgICAgICAgIHR5cGU6ICdQT1NUJywKICAgICAgICAgICAgZGF0YTogeyBkYXRlOiBjdXJyZW50RGF0ZSB9LAogICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihyZXNwb25zZSkgewogICAgICAgICAgICAgICAgYWxlcnQoJ0xlcyBkb25uw6llcyBwb3VyIGxhIGRhdGUgJyArIGN1cnJlbnREYXRlICsgJyBvbnQgw6l0w6kgcsOpY3Vww6lyw6llcy4nKTsKICAgICAgICAgICAgICAgIC8vIFZvdXMgcG91dmV6IHJlY2hhcmdlciBvdSBtZXR0cmUgw6Agam91ciBsYSBwYWdlIHNpIG7DqWNlc3NhaXJlCiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7IC8vIFNpIHZvdXMgdm91bGV6IHJlY2hhcmdlciBsYSBwYWdlIGFwcsOocyBsJ2FwcGVsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbih4aHIsIHN0YXR1cywgZXJyb3IpIHsKICAgICAgICAgICAgICAgIGFsZXJ0KCdFcnJldXIgbG9ycyBkZSBsYSByw6ljdXDDqXJhdGlvbiBkZXMgZG9ubsOpZXMgOiAnICsgZXJyb3IpOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9KTsKCgoKPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPgo="
            },
            "after": {
                "exists": true,
                "kind": "file",
                "size": 28491,
                "sha1": "bd1ec21c8906661c8ee07a6cda2ca366fb1b7c21",
                "content_b64": "PD9waHAKLy8gZG9jLXByb2plY3QgfCBzdGF0cy9zdGF0cy5waHAgfCBHw6luw6hyZSBs4oCZaW50ZXJmYWNlIHByZW1pdW0gZGUgc3RhdGlzdGlxdWVzIGRlIHZlbnRlcywgY29tcGFyZSBsZXMgcMOpcmlvZGVzIHBhciBhbm7DqWUsIGNoYXJnZSBsZXMgYXNzZXRzIENTUy9KUyB2ZXJzaW9ubsOpcyBwYXIgZmlsZW10aW1lIGV0IHBlcm1ldCBsYSBzYWlzaWUvcsOpY3Vww6lyYXRpb24gZGVzIGRvbm7DqWVzIHBhciBkYXRlIGV0IGxvY2FsaXNhdGlvbi4gfCBFeHBvc2U6IHN0YXRzQXNzZXQsIGdldFdlZWtEYXRlcywgZ2V0QWxsU2FsZXNEYXRhLCBnZXRQZXJpb2RzQnlZZWFyLCBnZXRUb3RhbHNGb3JQZXJpb2QsIGdlbmVyYXRlQ29tYmluZWRUYWJsZSB8IETDqXBlbmQgZGU6IGNvbmZpZy5waHAsIHVwZGF0ZV9ldmVudC5waHAsIGZpbGxfdGFibGUucGhwLCBzZXNzaW9uIFBIUCwgYmFzZSBkZSBkb25uw6llcyBwb3NfZXZlbnRzLCBzdGF0cy9hc3NldHMvY3NzL3N0YXRzLmNzcywgc3RhdHMvYXNzZXRzL2pzL3N0YXRzLmpzIHwgSW1wYWN0ZTogYWZmaWNoYWdlIEhUTUwvSlMsIGludGVyYWN0aW9ucyBBSkFYLCBtaXNlcyDDoCBqb3VyIGRlIGRvbm7DqWVzLCBjYWNoZS1idXN0aW5nIG5hdmlnYXRldXIgfCBUYWJsZXM6IHBvc19ldmVudHMoZGF0ZSwgbW9udGFudF90b3RhbF9wZWxpc3Nhbm5lLCBtb250YW50X3RvdGFsX2xhbmNvbiwgbm9tYnJlX3BlbGlzc2FubmUsIG5vbWJyZV9sYW5jb24sIG5kX3BlbGlzc2FubmUsIG5kX2xhbmNvbiwgZWRfcGVsaXNzYW5uZSwgZWRfbGFuY29uLCB3ZWF0aGVyLCBldmVudHMpICovCgovLyBBY3RpdmVyIGwnYWZmaWNoYWdlIGRlcyBlcnJldXJzICjDoCBkw6lzYWN0aXZlciBlbiBwcm9kdWN0aW9uKQppbmlfc2V0KCdkaXNwbGF5X2Vycm9ycycsIDEpOwppbmlfc2V0KCdkaXNwbGF5X3N0YXJ0dXBfZXJyb3JzJywgMSk7CmVycm9yX3JlcG9ydGluZyhFX0FMTCk7CgovLyBJbmNsdXJlIGxlIGZpY2hpZXIgZGUgY29uZmlndXJhdGlvbiBwb3VyIGFjY8OpZGVyIMOgIGxhIGJhc2UgZGUgZG9ubsOpZXMKaW5jbHVkZSAnY29uZmlnLnBocCc7CgovLyBWw6lyaWZpZXIgcXVlIGxhIGNvbm5leGlvbiBQRE8gZXN0IMOpdGFibGllCmlmICghaXNzZXQoJHBkbykpIHsKICAgIGRpZSgnRXJyZXVyIGRlIGNvbm5leGlvbiDDoCBsYSBiYXNlIGRlIGRvbm7DqWVzLicpOwp9CgpmdW5jdGlvbiBzdGF0c0Fzc2V0KHN0cmluZyAkcGF0aCk6IHN0cmluZyB7CiAgICAkcmVsYXRpdmVQYXRoID0gbHRyaW0oJHBhdGgsICcvJyk7CiAgICAkYWJzb2x1dGVQYXRoID0gX19ESVJfXyAuICcvJyAuICRyZWxhdGl2ZVBhdGg7CiAgICAkdmVyc2lvbiA9IGlzX2ZpbGUoJGFic29sdXRlUGF0aCkgPyAoc3RyaW5nKWZpbGVtdGltZSgkYWJzb2x1dGVQYXRoKSA6IChzdHJpbmcpdGltZSgpOwoKICAgIHJldHVybiBodG1sc3BlY2lhbGNoYXJzKCRyZWxhdGl2ZVBhdGggLiAnP3Y9JyAuIHJhd3VybGVuY29kZSgkdmVyc2lvbiksIEVOVF9RVU9URVMsICdVVEYtOCcpOwp9CgpmdW5jdGlvbiBzdGF0c0h0bWwoc3RyaW5nICR2YWx1ZSk6IHN0cmluZyB7CiAgICByZXR1cm4gaHRtbHNwZWNpYWxjaGFycygkdmFsdWUsIEVOVF9RVU9URVMsICdVVEYtOCcpOwp9CgpmdW5jdGlvbiBzdGF0c0xvY2F0aW9uTGFiZWwoc3RyaW5nICRsb2NhdGlvbik6IHN0cmluZyB7CiAgICByZXR1cm4gJGxvY2F0aW9uID09PSAnbGFuY29uJyA/ICdMYW7Dp29uJyA6ICgkbG9jYXRpb24gPT09ICdib3RoJyA/ICdMZXMgZGV1eCcgOiAnUMOpbGlzc2FubmUnKTsKfQoKLy8gT2J0ZW5pciBsZSBwYXJhbcOodHJlICdsb2NhdGlvbicgZGVwdWlzIGwnVVJMIHBvdXIgbGUgdGFibGVhdSBwcmluY2lwYWwKJGxvY2F0aW9uID0gJF9HRVRbJ2xvY2F0aW9uJ10gPz8gJ3BlbGlzc2FubmUnOwoKLy8gRMOpdGVybWluZXIgbGUgc3VmZml4ZSBlbiBmb25jdGlvbiBkZSBsYSBsb2NhbGlzYXRpb24gcG91ciBsZSB0YWJsZWF1IHByaW5jaXBhbAppZiAoJGxvY2F0aW9uID09ICdwZWxpc3Nhbm5lJykgewogICAgJHN1ZmZpeCA9ICdfcGVsJzsKfSBlbHNlaWYgKCRsb2NhdGlvbiA9PSAnbGFuY29uJykgewogICAgJHN1ZmZpeCA9ICcnOwp9IGVsc2VpZiAoJGxvY2F0aW9uID09ICdib3RoJykgewogICAgJHN1ZmZpeCA9ICdib3RoJzsKfSBlbHNlIHsKICAgICRzdWZmaXggPSAnX3BlbCc7IC8vIHBhciBkw6lmYXV0LCBQw6lsaXNzYW5uZQp9CgovLyBEw6l0ZXJtaW5lciBsZSB0ZXh0ZSBkZSBsYSBzw6lsZWN0aW9uIGVuIGZvbmN0aW9uIGRlIGxhIGxvY2FsaXNhdGlvbgokc2VsZWN0aW9uID0gJyc7CgppZiAoJGxvY2F0aW9uID09ICdwZWxpc3Nhbm5lJykgewogICAgJHNlbGVjdGlvbiA9ICdQw6lsaXNzYW5uZSc7Cn0gZWxzZWlmICgkbG9jYXRpb24gPT0gJ2xhbmNvbicpIHsKICAgICRzZWxlY3Rpb24gPSAnTGFuw6dvbic7Cn0gZWxzZWlmICgkbG9jYXRpb24gPT0gJ2JvdGgnKSB7CiAgICAkc2VsZWN0aW9uID0gJ0xlcyBkZXV4JzsKfSBlbHNlIHsKICAgICRzZWxlY3Rpb24gPSAnUMOpbGlzc2FubmUnOwp9CgovLyBPYnRlbmlyIGxhIGRhdGUgc8OpbGVjdGlvbm7DqWUgb3UgdXRpbGlzZXIgbGEgZGF0ZSBhY3R1ZWxsZQokc2VsZWN0ZWREYXRlID0gJF9HRVRbJ2RhdGUnXSA/PyBkYXRlKCdZLW0tZCcpOwokY3VycmVudERhdGUgPSBuZXcgRGF0ZVRpbWUoJHNlbGVjdGVkRGF0ZSk7CiRjdXJyZW50WWVhciA9IChpbnQpJGN1cnJlbnREYXRlLT5mb3JtYXQoJ1knKTsKCi8vIFLDqWN1cMOpcmVyIGxlIGRlcm5pZXIgam91ciBzYWlzaSBkYW5zIHBvc19ldmVudHMKJHN0bXRMYXN0RGF0ZSA9ICRwZG8tPnByZXBhcmUoIlNFTEVDVCBNQVgoZGF0ZSkgYXMgbGFzdF9kYXRlIEZST00gcG9zX2V2ZW50cyIpOwokc3RtdExhc3REYXRlLT5leGVjdXRlKCk7CiRsYXN0RGF0ZVJvdyA9ICRzdG10TGFzdERhdGUtPmZldGNoKFBETzo6RkVUQ0hfQVNTT0MpOwokbGFzdERhdGFEYXRlID0gIWVtcHR5KCRsYXN0RGF0ZVJvd1snbGFzdF9kYXRlJ10pID8gbmV3IERhdGVUaW1lKCRsYXN0RGF0ZVJvd1snbGFzdF9kYXRlJ10pIDogbmV3IERhdGVUaW1lKCcxOTcwLTAxLTAxJyk7CgovLyBGb25jdGlvbiBwb3VyIG9idGVuaXIgbGVzIGRhdGVzIGR1IG1hcmRpIGF1IGRpbWFuY2hlIHBvdXIgdW5lIHNlbWFpbmUgZXQgdW5lIGFubsOpZSBkb25uw6llcwpmdW5jdGlvbiBnZXRXZWVrRGF0ZXMoJHdlZWtOdW1iZXIsICR5ZWFyKSB7CiAgICAkZGF0ZXMgPSBbXTsKICAgICRkdG8gPSBuZXcgRGF0ZVRpbWUoKTsKICAgICRkdG8tPnNldElTT0RhdGUoJHllYXIsICR3ZWVrTnVtYmVyKTsKCiAgICAvLyBDb21tZW5jZXIgbGUgbWFyZGkKICAgICRkdG8tPm1vZGlmeSgndHVlc2RheSB0aGlzIHdlZWsnKTsKCiAgICBmb3IgKCRpID0gMDsgJGkgPCA2OyAkaSsrKSB7CiAgICAgICAgJGRhdGVzW10gPSBjbG9uZSAkZHRvOwogICAgICAgICRkdG8tPm1vZGlmeSgnKzEgZGF5Jyk7CiAgICB9CgogICAgcmV0dXJuICRkYXRlczsKfQoKLy8gT2J0ZW5pciBsZSBudW3DqXJvIGRlIHNlbWFpbmUgZXQgbGVzIGRhdGVzIHBvdXIgbGEgZGF0ZSBzw6lsZWN0aW9ubsOpZQokY3VycmVudFdlZWtOdW1iZXIgPSAoaW50KSRjdXJyZW50RGF0ZS0+Zm9ybWF0KCdXJyk7CiR3ZWVrRGF0ZXMgPSBnZXRXZWVrRGF0ZXMoJGN1cnJlbnRXZWVrTnVtYmVyLCAkY3VycmVudFllYXIpOwoKLy8gRMOpZmluaXIgbGVzIGFubsOpZXMgw6AgYWZmaWNoZXIKJHllYXJzID0gWyRjdXJyZW50WWVhciwgJGN1cnJlbnRZZWFyIC0gMSwgJGN1cnJlbnRZZWFyIC0gMiwgJGN1cnJlbnRZZWFyIC0gMywgJGN1cnJlbnRZZWFyIC0gNF07CgovLyBPYnRlbmlyIGxlcyBkYXRlcyBjb3JyZXNwb25kYW50ZXMgcG91ciBjaGFxdWUgYW5uw6llCiRkYXRlc0J5WWVhciA9IFtdOwokYWxsRGF0ZXMgPSBbXTsKCmZvcmVhY2ggKCR3ZWVrRGF0ZXMgYXMgJGRhdGUpIHsKICAgICRjdXJyZW50RGF0ZVN0cmluZyA9ICRkYXRlLT5mb3JtYXQoJ1ktbS1kJyk7CiAgICAkZGF0ZXNCeVllYXJbJGN1cnJlbnREYXRlU3RyaW5nXSA9IFtdOwogICAgJHdlZWtOdW1iZXIgPSAoaW50KSRkYXRlLT5mb3JtYXQoJ1cnKTsKICAgICRkYXlPZldlZWsgPSAoaW50KSRkYXRlLT5mb3JtYXQoJ04nKTsgLy8gMSAoTHVuZGkpIMOgIDcgKERpbWFuY2hlKQogICAgZm9yZWFjaCAoJHllYXJzIGFzICR5ZWFyKSB7CiAgICAgICAgJGRhdGVJblllYXIgPSBuZXcgRGF0ZVRpbWUoKTsKICAgICAgICAkZGF0ZUluWWVhci0+c2V0SVNPRGF0ZSgkeWVhciwgJHdlZWtOdW1iZXIsICRkYXlPZldlZWspOwogICAgICAgICRkYXRlSW5ZZWFyU3RyaW5nID0gJGRhdGVJblllYXItPmZvcm1hdCgnWS1tLWQnKTsKICAgICAgICAkZGF0ZXNCeVllYXJbJGN1cnJlbnREYXRlU3RyaW5nXVskeWVhcl0gPSAkZGF0ZUluWWVhcjsKICAgICAgICAkYWxsRGF0ZXNbJGRhdGVJblllYXJTdHJpbmddID0gJGRhdGVJblllYXI7CiAgICB9Cn0KCi8vIEZvbmN0aW9uIHBvdXIgcsOpY3Vww6lyZXIgbGVzIGRvbm7DqWVzIGRlIHZlbnRlIHBvdXIgdG91dGVzIGxlcyBkYXRlcwovLyBGb25jdGlvbiBwb3VyIHLDqWN1cMOpcmVyIGxlcyBkb25uw6llcyBkZSB2ZW50ZSBwb3VyIHRvdXRlcyBsZXMgZGF0ZXMKZnVuY3Rpb24gZ2V0QWxsU2FsZXNEYXRhKCRwZG8sICRkYXRlcywgJHN1ZmZpeCkgewogICAgJGRhdGVTdHJpbmdzID0gW107CiAgICBmb3JlYWNoICgkZGF0ZXMgYXMgJGRhdGVPYmopIHsKICAgICAgICAkZGF0ZVN0cmluZ3NbXSA9ICRkYXRlT2JqLT5mb3JtYXQoJ1ktbS1kJyk7CiAgICB9CgogICAgaWYgKGVtcHR5KCRkYXRlU3RyaW5ncykpIHsKICAgICAgICByZXR1cm4gW107CiAgICB9CgogICAgJHBsYWNlaG9sZGVycyA9IGltcGxvZGUoJywnLCBhcnJheV9maWxsKDAsIGNvdW50KCRkYXRlU3RyaW5ncyksICc/JykpOwoKICAgIC8vIFbDqXJpZmlleiBxdWUgbGEgcmVxdcOqdGUgU1FMIHLDqWN1cMOocmUgY29ycmVjdGVtZW50IGxlcyBkb25uw6llcwogICAgJHN0bXRFdmVudCA9ICRwZG8tPnByZXBhcmUoIgogICAgICAgIFNFTEVDVCAqCiAgICAgICAgRlJPTSBwb3NfZXZlbnRzCiAgICAgICAgV0hFUkUgZGF0ZSBJTiAoJHBsYWNlaG9sZGVycykKICAgICIpOwogICAgJHN0bXRFdmVudC0+ZXhlY3V0ZSgkZGF0ZVN0cmluZ3MpOwoKICAgICRldmVudERhdGEgPSAkc3RtdEV2ZW50LT5mZXRjaEFsbChQRE86OkZFVENIX0FTU09DKTsKCiAgICAkZGF0YSA9IFtdOwogICAgZm9yZWFjaCAoJGV2ZW50RGF0YSBhcyAkcm93KSB7CiAgICAgICAgJGRhdGVTdHJpbmcgPSAkcm93WydkYXRlJ107CiAgICAgICAgJHRvdGFsQW1vdW50ID0gMDsKICAgICAgICAkdG90YWxQaXp6YXMgPSAwOwogICAgICAgICRuZCA9IDA7CiAgICAgICAgJGVkID0gMDsgLy8gTm91dmVsbGUgdmFyaWFibGUgcG91ciBNb250YW50IEVECgogICAgICAgIC8vIERlYnVnOiBhZmZpY2hlciBsZXMgZG9ubsOpZXMgcsOpY3Vww6lyw6llcyBwb3VyIGxlcyBkYXRlcyBkZXMgYW5uw6llcyBwcsOpY8OpZGVudGVzCiAgICAgICAgLy8gVXRpbGlzZXogdmFyX2R1bXAoKSBvdSBlcnJvcl9sb2coKSBwb3VyIHN1aXZyZSBsZXMgZG9ubsOpZXMKICAgICAgICBlcnJvcl9sb2coIkRhdGEgZm9yIGRhdGU6ICRkYXRlU3RyaW5nLCBNb250YW50IHRvdGFsIFDDqWxpc3Nhbm5lOiB7JHJvd1snbW9udGFudF90b3RhbF9wZWxpc3Nhbm5lJ119LCBNb250YW50IHRvdGFsIExhbsOnb246IHskcm93Wydtb250YW50X3RvdGFsX2xhbmNvbiddfSIpOwoKICAgICAgICBpZiAoJHN1ZmZpeCA9PSAnX3BlbCcpIHsKICAgICAgICAgICAgJHRvdGFsQW1vdW50ID0gKGZsb2F0KSgkcm93Wydtb250YW50X3RvdGFsX3BlbGlzc2FubmUnXSA/PyAwKTsKICAgICAgICAgICAgJHRvdGFsUGl6emFzID0gKGludCkoJHJvd1snbm9tYnJlX3BlbGlzc2FubmUnXSA/PyAwKTsKICAgICAgICAgICAgJG5kID0gKGZsb2F0KSgkcm93WyduZF9wZWxpc3Nhbm5lJ10gPz8gMCk7CiAgICAgICAgICAgICRlZCA9IChmbG9hdCkoJHJvd1snZWRfcGVsaXNzYW5uZSddID8/IDApOyAvLyBNb250YW50IEVEIHBvdXIgUMOpbGlzc2FubmUKICAgICAgICB9IGVsc2VpZiAoJHN1ZmZpeCA9PSAnJykgewogICAgICAgICAgICAkdG90YWxBbW91bnQgPSAoZmxvYXQpKCRyb3dbJ21vbnRhbnRfdG90YWxfbGFuY29uJ10gPz8gMCk7CiAgICAgICAgICAgICR0b3RhbFBpenphcyA9IChpbnQpKCRyb3dbJ25vbWJyZV9sYW5jb24nXSA/PyAwKTsKICAgICAgICAgICAgJG5kID0gKGZsb2F0KSgkcm93WyduZF9sYW5jb24nXSA/PyAwKTsKICAgICAgICAgICAgJGVkID0gKGZsb2F0KSgkcm93WydlZF9sYW5jb24nXSA/PyAwKTsgLy8gTW9udGFudCBFRCBwb3VyIExhbsOnb24KICAgICAgICB9IGVsc2VpZiAoJHN1ZmZpeCA9PSAnYm90aCcpIHsKICAgICAgICAgICAgJHRvdGFsQW1vdW50ID0gKGZsb2F0KSgkcm93Wydtb250YW50X3RvdGFsX3BlbGlzc2FubmUnXSA/PyAwKSArIChmbG9hdCkoJHJvd1snbW9udGFudF90b3RhbF9sYW5jb24nXSA/PyAwKTsKICAgICAgICAgICAgJHRvdGFsUGl6emFzID0gKGludCkoJHJvd1snbm9tYnJlX3BlbGlzc2FubmUnXSA/PyAwKSArIChpbnQpKCRyb3dbJ25vbWJyZV9sYW5jb24nXSA/PyAwKTsKICAgICAgICAgICAgJG5kID0gKGZsb2F0KSgkcm93WyduZF9wZWxpc3Nhbm5lJ10gPz8gMCkgKyAoZmxvYXQpKCRyb3dbJ25kX2xhbmNvbiddID8/IDApOwogICAgICAgICAgICAkZWQgPSAoZmxvYXQpKCRyb3dbJ2VkX3BlbGlzc2FubmUnXSA/PyAwKSArIChmbG9hdCkoJHJvd1snZWRfbGFuY29uJ10gPz8gMCk7IC8vIE1vbnRhbnQgRUQgcG91ciBsZXMgZGV1eAogICAgICAgIH0KCiAgICAgICAgJHdlYXRoZXIgPSAkcm93Wyd3ZWF0aGVyJ10gPz8gJy0nOwogICAgICAgICRldmVudHMgPSAkcm93WydldmVudHMnXSA/PyAnLSc7CgogICAgICAgICRkYXRhWyRkYXRlU3RyaW5nXSA9IFsKICAgICAgICAgICAgJ3RvdGFsX2Ftb3VudCcgPT4gJHRvdGFsQW1vdW50LAogICAgICAgICAgICAndG90YWxfcGl6emFzJyA9PiAkdG90YWxQaXp6YXMsCiAgICAgICAgICAgICduZCcgPT4gJG5kLAogICAgICAgICAgICAnZWQnID0+ICRlZCwgLy8gSW5jbHVyZSBNb250YW50IEVEIGRhbnMgbGVzIGRvbm7DqWVzCiAgICAgICAgICAgICd3ZWF0aGVyJyA9PiAkd2VhdGhlciwKICAgICAgICAgICAgJ2V2ZW50cycgPT4gJGV2ZW50cywKICAgICAgICBdOwogICAgfQoKICAgIHJldHVybiAkZGF0YTsKfQoKCgovLyBSw6ljdXDDqXJlciBsZXMgZG9ubsOpZXMgcG91ciB0b3V0ZXMgbGVzIGRhdGVzCiRkYXRhRnJvbURCID0gZ2V0QWxsU2FsZXNEYXRhKCRwZG8sICRhbGxEYXRlcywgJHN1ZmZpeCk7CgovLyBPcmdhbmlzZXIgbGVzIGRvbm7DqWVzCiRkYXRhID0gW107IC8vICRkYXRhW21ldHJpY11bY3VycmVudERhdGVTdHJpbmddW3llYXJdID0gdmFsdWU7Cgpmb3JlYWNoICgkZGF0ZXNCeVllYXIgYXMgJGN1cnJlbnREYXRlU3RyaW5nID0+ICR5ZWFyc0RhdGVzKSB7CiAgICBmb3JlYWNoICgkeWVhcnMgYXMgJHllYXIpIHsKICAgICAgICAkZGF0ZU9iaiA9ICR5ZWFyc0RhdGVzWyR5ZWFyXTsKICAgICAgICAkZGF0ZVN0cmluZyA9ICRkYXRlT2JqLT5mb3JtYXQoJ1ktbS1kJyk7CiAgICAgICAgJGV2ZW50RGF0YSA9ICRkYXRhRnJvbURCWyRkYXRlU3RyaW5nXSA/PyBudWxsOwoKICAgICAgICAvLyBBc3N1cmV6LXZvdXMgcXVlIGxlcyBtb250YW50cyBkZXMgYW5uw6llcyBwcsOpY8OpZGVudGVzIHNvbnQgYmllbiByw6ljdXDDqXLDqXMKICAgICAgICAkdG90YWxBbW91bnQgPSAkZXZlbnREYXRhWyd0b3RhbF9hbW91bnQnXSA/PyAwOwogICAgICAgICR0b3RhbFBpenphcyA9ICRldmVudERhdGFbJ3RvdGFsX3BpenphcyddID8/IDA7CiAgICAgICAgJG5kID0gJGV2ZW50RGF0YVsnbmQnXSA/PyAwOwogICAgICAgICRlZCA9ICRldmVudERhdGFbJ2VkJ10gPz8gMDsKICAgICAgICAkd2VhdGhlciA9ICRldmVudERhdGFbJ3dlYXRoZXInXSA/PyAnLSc7CiAgICAgICAgJGV2ZW50cyA9ICRldmVudERhdGFbJ2V2ZW50cyddID8/ICctJzsKCiAgICAgICAgLy8gRGVidWc6IEFmZmljaGVyIGxlcyBkb25uw6llcyByw6ljdXDDqXLDqWVzIHBvdXIgdsOpcmlmaWVyCiAgICAgICAgZXJyb3JfbG9nKCJUb3RhbCBmb3IgJGRhdGVTdHJpbmcsIHllYXIgJHllYXI6ICR0b3RhbEFtb3VudCIpOwoKICAgICAgICAkZGF0YVsndG90YWxfcGl6emFzJ11bJGN1cnJlbnREYXRlU3RyaW5nXVskeWVhcl0gPSAkdG90YWxQaXp6YXM7CiAgICAgICAgJGRhdGFbJ3RvdGFsX2Ftb3VudCddWyRjdXJyZW50RGF0ZVN0cmluZ11bJHllYXJdID0gJHRvdGFsQW1vdW50OwogICAgICAgICRkYXRhWyduZCddWyRjdXJyZW50RGF0ZVN0cmluZ11bJHllYXJdID0gJG5kOwogICAgICAgICRkYXRhWydlZCddWyRjdXJyZW50RGF0ZVN0cmluZ11bJHllYXJdID0gJGVkOwogICAgICAgICRkYXRhWyd3ZWF0aGVyJ11bJGN1cnJlbnREYXRlU3RyaW5nXVskeWVhcl0gPSAkd2VhdGhlcjsKICAgICAgICAkZGF0YVsnZXZlbnRzJ11bJGN1cnJlbnREYXRlU3RyaW5nXVskeWVhcl0gPSAkZXZlbnRzOwogICAgfQp9CgoKCi8vIEVuIGJhcyBkZSBwYWdlIHBlcm1ldHRyZSBkZSBjaG9pc2lyICpzZW1haW5lICpwbGFnZSBwZXJzb25uYWxpc8OpZQoKLy8gUsOpY3Vww6lyZXIgbGEgcMOpcmlvZGUgc8OpbGVjdGlvbm7DqWUKJHBlcmlvZGUgPSAkX0dFVFsncGVyaW9kZSddID8/ICdzZW1haW5lJzsgLy8gcGFyIGTDqWZhdXQsICdzZW1haW5lJwoKLy8gUsOpY3Vww6lyZXIgbGEgbG9jYWxpc2F0aW9uIHBvdXIgbGVzIHN0YXRpc3RpcXVlcyBzdXBwbMOpbWVudGFpcmVzCiRzdGF0c19sb2NhdGlvbiA9ICRfR0VUWydzdGF0c19sb2NhdGlvbiddID8/ICRsb2NhdGlvbjsgLy8gUGFyIGTDqWZhdXQsIG3Dqm1lIGxvY2FsaXNhdGlvbiBxdWUgbGUgdGFibGVhdSBwcmluY2lwYWwKCi8vIETDqXRlcm1pbmVyIGxlIHN1ZmZpeGUgZW4gZm9uY3Rpb24gZGUgbGEgbG9jYWxpc2F0aW9uIHBvdXIgbGVzIHN0YXRpc3RpcXVlcyBzdXBwbMOpbWVudGFpcmVzCmlmICgkc3RhdHNfbG9jYXRpb24gPT0gJ3BlbGlzc2FubmUnKSB7CiAgICAkc3RhdHNfc3VmZml4ID0gJ19wZWwnOwp9IGVsc2VpZiAoJHN0YXRzX2xvY2F0aW9uID09ICdsYW5jb24nKSB7CiAgICAkc3RhdHNfc3VmZml4ID0gJyc7Cn0gZWxzZWlmICgkc3RhdHNfbG9jYXRpb24gPT0gJ2JvdGgnKSB7CiAgICAkc3RhdHNfc3VmZml4ID0gJ2JvdGgnOwp9IGVsc2UgewogICAgJHN0YXRzX3N1ZmZpeCA9ICdfcGVsJzsgLy8gcGFyIGTDqWZhdXQsIFDDqWxpc3Nhbm5lCn0KCi8vIEZvbmN0aW9uIHBvdXIgb2J0ZW5pciBsZXMgcMOpcmlvZGVzIHBhciBhbm7DqWUKZnVuY3Rpb24gZ2V0UGVyaW9kc0J5WWVhcigkcGVyaW9kZSwgJGN1cnJlbnREYXRlLCAkeWVhcnMsICRsYXN0RGF0YURhdGUpIHsKICAgICRwZXJpb2RzQnlZZWFyID0gW107CgogICAgaWYgKCRwZXJpb2RlID09ICdzZW1haW5lJykgewogICAgICAgICR3ZWVrTnVtYmVyID0gKGludCkkY3VycmVudERhdGUtPmZvcm1hdCgnVycpOwogICAgICAgICRkYXlPZldlZWsgPSAoaW50KSRjdXJyZW50RGF0ZS0+Zm9ybWF0KCdOJyk7CgogICAgICAgIGZvcmVhY2ggKCR5ZWFycyBhcyAkeWVhcikgewogICAgICAgICAgICAkc3RhcnREYXRlID0gbmV3IERhdGVUaW1lKCk7CiAgICAgICAgICAgICRzdGFydERhdGUtPnNldElTT0RhdGUoJHllYXIsICR3ZWVrTnVtYmVyKTsKICAgICAgICAgICAgJHN0YXJ0RGF0ZS0+bW9kaWZ5KCd0dWVzZGF5IHRoaXMgd2VlaycpOwoKICAgICAgICAgICAgJGVuZERhdGUgPSBjbG9uZSAkc3RhcnREYXRlOwogICAgICAgICAgICAkZW5kRGF0ZS0+bW9kaWZ5KCcrNSBkYXlzJyk7IC8vIEp1c3F1J2F1IGRpbWFuY2hlCgogICAgICAgICAgICAvLyBBanVzdGVyIHNpIG7DqWNlc3NhaXJlCiAgICAgICAgICAgICRzdG10TGFzdERhdGVZZWFyID0gJEdMT0JBTFNbJ3BkbyddLT5wcmVwYXJlKCJTRUxFQ1QgTUFYKGRhdGUpIGFzIGxhc3RfZGF0ZSBGUk9NIHBvc19ldmVudHMgV0hFUkUgWUVBUihkYXRlKSA9ID8iKTsKICAgICAgICAgICAgJHN0bXRMYXN0RGF0ZVllYXItPmV4ZWN1dGUoWyR5ZWFyXSk7CiAgICAgICAgICAgICRsYXN0RGF0ZVJvd1llYXIgPSAkc3RtdExhc3REYXRlWWVhci0+ZmV0Y2goUERPOjpGRVRDSF9BU1NPQyk7CiAgICAgICAgICAgICRsYXN0RGF0YURhdGVZZWFyID0gbmV3IERhdGVUaW1lKCRsYXN0RGF0ZVJvd1llYXJbJ2xhc3RfZGF0ZSddKTsKCiAgICAgICAgICAgIGlmICgkZW5kRGF0ZSA+ICRsYXN0RGF0YURhdGVZZWFyICYmICRzdGFydERhdGUgPD0gJGxhc3REYXRhRGF0ZVllYXIpIHsKICAgICAgICAgICAgICAgICRlbmREYXRlID0gJGxhc3REYXRhRGF0ZVllYXI7CiAgICAgICAgICAgIH0gZWxzZWlmICgkc3RhcnREYXRlID4gJGxhc3REYXRhRGF0ZVllYXIpIHsKICAgICAgICAgICAgICAgICRzdGFydERhdGUgPSBudWxsOwogICAgICAgICAgICAgICAgJGVuZERhdGUgPSBudWxsOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkcGVyaW9kc0J5WWVhclskeWVhcl0gPSBbJ3N0YXJ0JyA9PiAkc3RhcnREYXRlLCAnZW5kJyA9PiAkZW5kRGF0ZV07CiAgICAgICAgfQogICAgfSBlbHNlaWYgKCRwZXJpb2RlID09ICdwZXJzb25uYWxpc2VlJykgewogICAgICAgICRjdXN0b21TdGFydCA9ICRfR0VUWydjdXN0b21fc3RhcnQnXSA/PyBudWxsOwogICAgICAgICRjdXN0b21FbmQgPSAkX0dFVFsnY3VzdG9tX2VuZCddID8/IG51bGw7CiAgICAgICAgaWYgKCRjdXN0b21TdGFydCAmJiAkY3VzdG9tRW5kKSB7CiAgICAgICAgICAgICRzdGFydERhdGVJbnB1dCA9IG5ldyBEYXRlVGltZSgkY3VzdG9tU3RhcnQpOwogICAgICAgICAgICAkZW5kRGF0ZUlucHV0ID0gbmV3IERhdGVUaW1lKCRjdXN0b21FbmQpOwogICAgICAgICAgICBpZiAoJHN0YXJ0RGF0ZUlucHV0ID4gJGVuZERhdGVJbnB1dCkgewogICAgICAgICAgICAgICAgJHRlbXAgPSAkc3RhcnREYXRlSW5wdXQ7CiAgICAgICAgICAgICAgICAkc3RhcnREYXRlSW5wdXQgPSAkZW5kRGF0ZUlucHV0OwogICAgICAgICAgICAgICAgJGVuZERhdGVJbnB1dCA9ICR0ZW1wOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmb3JlYWNoICgkeWVhcnMgYXMgJHllYXIpIHsKICAgICAgICAgICAgICAgICRzdGFydERhdGUgPSBjbG9uZSAkc3RhcnREYXRlSW5wdXQ7CiAgICAgICAgICAgICAgICAkc3RhcnREYXRlLT5zZXREYXRlKCR5ZWFyLCAoaW50KSRzdGFydERhdGVJbnB1dC0+Zm9ybWF0KCdtJyksIChpbnQpJHN0YXJ0RGF0ZUlucHV0LT5mb3JtYXQoJ2QnKSk7CiAgICAgICAgICAgICAgICAkZW5kRGF0ZSA9IGNsb25lICRlbmREYXRlSW5wdXQ7CiAgICAgICAgICAgICAgICAkZW5kRGF0ZS0+c2V0RGF0ZSgkeWVhciwgKGludCkkZW5kRGF0ZUlucHV0LT5mb3JtYXQoJ20nKSwgKGludCkkZW5kRGF0ZUlucHV0LT5mb3JtYXQoJ2QnKSk7CgogICAgICAgICAgICAgICAgLy8gQWp1c3RlciBzaSBuw6ljZXNzYWlyZQogICAgICAgICAgICAgICAgJHN0bXRMYXN0RGF0ZVllYXIgPSAkR0xPQkFMU1sncGRvJ10tPnByZXBhcmUoIlNFTEVDVCBNQVgoZGF0ZSkgYXMgbGFzdF9kYXRlIEZST00gcG9zX2V2ZW50cyBXSEVSRSBZRUFSKGRhdGUpID0gPyIpOwogICAgICAgICAgICAgICAgJHN0bXRMYXN0RGF0ZVllYXItPmV4ZWN1dGUoWyR5ZWFyXSk7CiAgICAgICAgICAgICAgICAkbGFzdERhdGVSb3dZZWFyID0gJHN0bXRMYXN0RGF0ZVllYXItPmZldGNoKFBETzo6RkVUQ0hfQVNTT0MpOwogICAgICAgICAgICAgICAgJGxhc3REYXRhRGF0ZVllYXIgPSBuZXcgRGF0ZVRpbWUoJGxhc3REYXRlUm93WWVhclsnbGFzdF9kYXRlJ10pOwoKICAgICAgICAgICAgICAgIGlmICgkZW5kRGF0ZSA+ICRsYXN0RGF0YURhdGVZZWFyICYmICRzdGFydERhdGUgPD0gJGxhc3REYXRhRGF0ZVllYXIpIHsKICAgICAgICAgICAgICAgICAgICAkZW5kRGF0ZSA9ICRsYXN0RGF0YURhdGVZZWFyOwogICAgICAgICAgICAgICAgfSBlbHNlaWYgKCRzdGFydERhdGUgPiAkbGFzdERhdGFEYXRlWWVhcikgewogICAgICAgICAgICAgICAgICAgICRzdGFydERhdGUgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICRlbmREYXRlID0gbnVsbDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkcGVyaW9kc0J5WWVhclskeWVhcl0gPSBbJ3N0YXJ0JyA9PiAkc3RhcnREYXRlLCAnZW5kJyA9PiAkZW5kRGF0ZV07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRwZXJpb2RzQnlZZWFyOwp9CgovLyBSw6ljdXDDqXJlciBsZXMgcMOpcmlvZGVzIHBhciBhbm7DqWUKJHBlcmlvZHNCeVllYXIgPSBnZXRQZXJpb2RzQnlZZWFyKCRwZXJpb2RlLCAkY3VycmVudERhdGUsICR5ZWFycywgJGxhc3REYXRhRGF0ZSk7CgovLyBGb25jdGlvbiBwb3VyIG9idGVuaXIgbGVzIHRvdGF1eCBwb3VyIHVuZSBww6lyaW9kZSBkb25uw6llCmZ1bmN0aW9uIGdldFRvdGFsc0ZvclBlcmlvZCgkcGRvLCAkc3RhcnREYXRlLCAkZW5kRGF0ZSwgJHN1ZmZpeCkgewogICAgaWYgKCEkc3RhcnREYXRlIHx8ICEkZW5kRGF0ZSkgewogICAgICAgIHJldHVybiBbJ3RvdGFsX3BpenphcycgPT4gMCwgJ3RvdGFsX2Ftb3VudCcgPT4gMCwgJ25kJyA9PiAwXTsKICAgIH0KICAgICRzdGFydERhdGVTdHJpbmcgPSAkc3RhcnREYXRlLT5mb3JtYXQoJ1ktbS1kJyk7CiAgICAkZW5kRGF0ZVN0cmluZyA9ICRlbmREYXRlLT5mb3JtYXQoJ1ktbS1kJyk7CgogICAgJHN0bXQgPSAkcGRvLT5wcmVwYXJlKCIKICAgICAgICBTRUxFQ1QgU1VNKG1vbnRhbnRfdG90YWxfcGVsaXNzYW5uZSkgYXMgdG90YWxfYW1vdW50X3BlbGlzc2FubmUsCiAgICAgICAgICAgICAgIFNVTShub21icmVfcGVsaXNzYW5uZSkgYXMgdG90YWxfcGl6emFzX3BlbGlzc2FubmUsCiAgICAgICAgICAgICAgIFNVTShuZF9wZWxpc3Nhbm5lKSBhcyBuZF9wZWxpc3Nhbm5lLAogICAgICAgICAgICAgICBTVU0obW9udGFudF90b3RhbF9sYW5jb24pIGFzIHRvdGFsX2Ftb3VudF9sYW5jb24sCiAgICAgICAgICAgICAgIFNVTShub21icmVfbGFuY29uKSBhcyB0b3RhbF9waXp6YXNfbGFuY29uLAogICAgICAgICAgICAgICBTVU0obmRfbGFuY29uKSBhcyBuZF9sYW5jb24KICAgICAgICBGUk9NIHBvc19ldmVudHMKICAgICAgICBXSEVSRSBkYXRlIEJFVFdFRU4gPyBBTkQgPwogICAgIik7CiAgICAkc3RtdC0+ZXhlY3V0ZShbJHN0YXJ0RGF0ZVN0cmluZywgJGVuZERhdGVTdHJpbmddKTsKICAgICRyb3cgPSAkc3RtdC0+ZmV0Y2goUERPOjpGRVRDSF9BU1NPQyk7CgogICAgJHRvdGFsQW1vdW50ID0gMDsKICAgICR0b3RhbFBpenphcyA9IDA7CiAgICAkbmQgPSAwOwoKICAgIGlmICgkc3VmZml4ID09ICdfcGVsJykgewogICAgICAgICR0b3RhbEFtb3VudCA9IChmbG9hdCkoJHJvd1sndG90YWxfYW1vdW50X3BlbGlzc2FubmUnXSA/PyAwKTsKICAgICAgICAkdG90YWxQaXp6YXMgPSAoaW50KSgkcm93Wyd0b3RhbF9waXp6YXNfcGVsaXNzYW5uZSddID8/IDApOwogICAgICAgICRuZCA9IChmbG9hdCkoJHJvd1snbmRfcGVsaXNzYW5uZSddID8/IDApOwogICAgfSBlbHNlaWYgKCRzdWZmaXggPT0gJycpIHsKICAgICAgICAkdG90YWxBbW91bnQgPSAoZmxvYXQpKCRyb3dbJ3RvdGFsX2Ftb3VudF9sYW5jb24nXSA/PyAwKTsKICAgICAgICAkdG90YWxQaXp6YXMgPSAoaW50KSgkcm93Wyd0b3RhbF9waXp6YXNfbGFuY29uJ10gPz8gMCk7CiAgICAgICAgJG5kID0gKGZsb2F0KSgkcm93WyduZF9sYW5jb24nXSA/PyAwKTsKICAgIH0gZWxzZWlmICgkc3VmZml4ID09ICdib3RoJykgewogICAgICAgICR0b3RhbEFtb3VudCA9IChmbG9hdCkoJHJvd1sndG90YWxfYW1vdW50X3BlbGlzc2FubmUnXSA/PyAwKSArIChmbG9hdCkoJHJvd1sndG90YWxfYW1vdW50X2xhbmNvbiddID8/IDApOwogICAgICAgICR0b3RhbFBpenphcyA9IChpbnQpKCRyb3dbJ3RvdGFsX3Bpenphc19wZWxpc3Nhbm5lJ10gPz8gMCkgKyAoaW50KSgkcm93Wyd0b3RhbF9waXp6YXNfbGFuY29uJ10gPz8gMCk7CiAgICAgICAgJG5kID0gKGZsb2F0KSgkcm93WyduZF9wZWxpc3Nhbm5lJ10gPz8gMCkgKyAoZmxvYXQpKCRyb3dbJ25kX2xhbmNvbiddID8/IDApOwogICAgfQoKICAgIHJldHVybiBbJ3RvdGFsX3BpenphcycgPT4gJHRvdGFsUGl6emFzLCAndG90YWxfYW1vdW50JyA9PiAkdG90YWxBbW91bnQsICduZCcgPT4gJG5kXTsKfQoKLy8gQ2FsY3VsZXIgbGVzIHRvdGF1eCBwb3VyIGNoYXF1ZSBhbm7DqWUKJHRvdGFscyA9IFtdOwoKZm9yZWFjaCAoJHBlcmlvZHNCeVllYXIgYXMgJHllYXIgPT4gJHBlcmlvZCkgewogICAgJHN0YXJ0ID0gJHBlcmlvZFsnc3RhcnQnXTsKICAgICRlbmQgPSAkcGVyaW9kWydlbmQnXTsKICAgICR0b3RhbHNbJHllYXJdID0gZ2V0VG90YWxzRm9yUGVyaW9kKCRwZG8sICRzdGFydCwgJGVuZCwgJHN0YXRzX3N1ZmZpeCk7Cn0KCi8vIEZvbmN0aW9uIHBvdXIgZ8OpbsOpcmVyIGxlIHRhYmxlYXUgY29tYmluw6kKZnVuY3Rpb24gZ2VuZXJhdGVDb21iaW5lZFRhYmxlKCRkYXRhLCAkZGF0ZXNCeVllYXIsICR5ZWFycywgJHNlbGVjdGVkRGF0ZSwgJGN1cnJlbnRZZWFyLCAkbG9jYXRpb24pIHsKICAgIC8vICRkYXRhW21ldHJpY11bY3VycmVudERhdGVTdHJpbmddW3llYXJdID0gdmFsdWUKCiAgICBlY2hvICI8ZGl2IGNsYXNzPSd0YWJsZS13cmFwcGVyJz4iOwogICAgZWNobyAiPHRhYmxlIGNsYXNzPSd0YWJsZSBjdXN0b20tdGFibGUnPiI7CiAgICBlY2hvICI8dGhlYWQ+PHRyPiI7CgogICAgLy8gUHJlbWnDqHJlIGNlbGx1bGUgZml4ZQogICAgZWNobyAiPHRoIGNsYXNzPSdzdGlja3ktY29sJz5EYXRlczwvdGg+IjsKCiAgICAvLyBHw6luw6lyZXIgbGVzIGVuLXTDqnRlcyBkZSBkYXRlcwogICAgJGZvcm1hdHRlciA9IG5ldyBJbnRsRGF0ZUZvcm1hdHRlcignZnJfRlInLCBJbnRsRGF0ZUZvcm1hdHRlcjo6Tk9ORSwgSW50bERhdGVGb3JtYXR0ZXI6Ok5PTkUsIG51bGwsIG51bGwsICdFRUVFJyk7CgogICAgZm9yZWFjaCAoJGRhdGVzQnlZZWFyIGFzICRjdXJyZW50RGF0ZVN0cmluZyA9PiAkeWVhcnNEYXRlcykgewogICAgICAgICRkYXRlT2JqID0gJHllYXJzRGF0ZXNbJGN1cnJlbnRZZWFyXTsgLy8gZ2V0IGN1cnJlbnQgeWVhcidzIGRhdGUKICAgICAgICAkZGF5TmFtZSA9ICRkYXRlT2JqID8gdWNmaXJzdCgkZm9ybWF0dGVyLT5mb3JtYXQoJGRhdGVPYmopKSA6ICcnOyAvLyBQcm90w6lnZXIgY29udHJlIG51bGwKICAgICAgICAkZGF0ZUZvcm1hdHRlZCA9ICRkYXRlT2JqLT5mb3JtYXQoJ2QvbS9ZJyk7CiAgICAgICAgJGlzQ3VycmVudFdlZWsgPSAnY3VycmVudC13ZWVrJzsKICAgICAgICBlY2hvICI8dGggY2xhc3M9JyRpc0N1cnJlbnRXZWVrJyBkYXRhLWRhdGU9JyIgLiAkY3VycmVudERhdGVTdHJpbmcgLiAiJz4iIC4gJGRheU5hbWUgLiAiPGJyPiIgLiAkZGF0ZUZvcm1hdHRlZCAuICI8L3RoPiI7CiAgICB9CiAgICBlY2hvICI8L3RyPjwvdGhlYWQ+PHRib2R5PiI7CgogICAgLy8gRm9yIGVhY2ggbWV0cmljLCBnZW5lcmF0ZSBhIHJvdwogICAgJG1ldHJpY3MgPSBbJ3RvdGFsX3BpenphcycgPT4gJ05vbWJyZSBUb3RhbCBkZSBQaXp6YXMnLCAndG90YWxfYW1vdW50JyA9PiAnTW9udGFudCBUb3RhbCAo4oKsKScsICduZCcgPT4gJ01vbnRhbnQgRCcsICdlZCcgPT4gJ01vbnRhbnQgRUQnLCAnd2VhdGhlcicgPT4gJ03DqXTDqW8nLCAnZXZlbnRzJyA9PiAnw4l2w6luZW1lbnRzJ107CgoKICAgIGZvcmVhY2ggKCRtZXRyaWNzIGFzICRtZXRyaWNLZXkgPT4gJG1ldHJpY0xhYmVsKSB7CiAgICAgICAgZWNobyAiPHRyPjx0aCBjbGFzcz0nc3RpY2t5LWNvbCc+JG1ldHJpY0xhYmVsPC90aD4iOwogICAgICAgIGZvcmVhY2ggKCRkYXRlc0J5WWVhciBhcyAkY3VycmVudERhdGVTdHJpbmcgPT4gJHllYXJzRGF0ZXMpIHsKICAgICAgICAgICAgJGNlbGxDb250ZW50ID0gJyc7CiAgICAgICAgICAgICRjZWxsQ29udGVudCAuPSAiPGRpdiBjbGFzcz0nY2VsbC1jb250ZW50Jz4iOwogICAgICAgICAgICBmb3JlYWNoICgkeWVhcnMgYXMgJHllYXIpIHsKICAgICAgICAgICAgICAgICR2YWx1ZSA9ICRkYXRhWyRtZXRyaWNLZXldWyRjdXJyZW50RGF0ZVN0cmluZ11bJHllYXJdID8/ICctJzsKICAgICAgICAgICAgICAgIGlmICgkbWV0cmljS2V5ID09ICd0b3RhbF9hbW91bnQnIHx8ICRtZXRyaWNLZXkgPT0gJ25kJyB8fCAkbWV0cmljS2V5ID09ICdlZCcpIHsKICAgICAgICAgICAgICAgICAgICAkdmFsdWUgPSBudW1iZXJfZm9ybWF0KCR2YWx1ZSwgMiwgJywnLCAnICcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGRhdGVPYmpGb3JZZWFyID0gJHllYXJzRGF0ZXNbJHllYXJdOwogICAgICAgICAgICAgICAgJGRhdGVTdHJpbmdGb3JZZWFyID0gJGRhdGVPYmpGb3JZZWFyLT5mb3JtYXQoJ1ktbS1kJyk7CiAgICAgICAgICAgICAgICAkY3VycmVudFllYXJDbGFzcyA9ICgkeWVhciA9PSAkY3VycmVudFllYXIpID8gJ2N1cnJlbnQteWVhci12YWx1ZScgOiAnJzsKCiAgICAgICAgICAgICAgICBpZiAoJHllYXIgPT0gJGN1cnJlbnRZZWFyKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgY3VycmVudCB5ZWFyIHZhbHVlCiAgICAgICAgICAgICAgICAgICAgJGlzRW1wdHlWYWx1ZSA9ICgkdmFsdWUgPT09IG51bGwgfHwgJHZhbHVlID09PSAwIHx8ICR2YWx1ZSA9PT0gJzAnIHx8ICR2YWx1ZSA9PT0gJzAsMDAnIHx8ICR2YWx1ZSA9PT0gJzAuMDAnIHx8ICR2YWx1ZSA9PT0gJy0nIHx8IChpc19udW1lcmljKCR2YWx1ZSkgJiYgKGZsb2F0KSR2YWx1ZSA9PSAwKSk7CgogICAgICAgICAgICAgICAgICAgIGlmICgkaXNFbXB0eVZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE91dHB1dCBidXR0b24gaW5zdGVhZCBvZiB2YWx1ZQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJG1ldHJpY0tleSA9PSAndG90YWxfcGl6emFzJyB8fCAkbWV0cmljS2V5ID09ICd0b3RhbF9hbW91bnQnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYnV0dG9uTGFiZWwgPSAnUsOpY3Vww6lyZXInOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGJ1dHRvbkxhYmVsID0gJ1JlbnNlaWduZXInOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBidXR0b24gd2l0aCBhcHByb3ByaWF0ZSBkYXRhIGF0dHJpYnV0ZXMKICAgICAgICAgICAgICAgICAgICAgICAgJGJ1dHRvbiA9ICI8YnV0dG9uIGNsYXNzPSdidG4gYnRuLXByaW1hcnkgYWN0aW9uLWJ1dHRvbicgZGF0YS1kYXRlPSciIC4gc3RhdHNIdG1sKCRkYXRlU3RyaW5nRm9yWWVhcikgLiAiJyBkYXRhLWZpZWxkPSciIC4gc3RhdHNIdG1sKCRtZXRyaWNLZXkpIC4gIicgZGF0YS1sb2NhdGlvbj0nIiAuIHN0YXRzSHRtbCgkbG9jYXRpb24pIC4gIic+IiAuIHN0YXRzSHRtbCgkYnV0dG9uTGFiZWwpIC4gIjwvYnV0dG9uPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICRjZWxsQ29udGVudCAuPSAiPGRpdiBjbGFzcz0neWVhci12YWx1ZSAkY3VycmVudFllYXJDbGFzcycgZGF0YS15ZWFyPSckeWVhcicgZGF0YS1kYXRlPSckZGF0ZVN0cmluZ0ZvclllYXInPiRidXR0b248L2Rpdj4iOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE91dHB1dCB0aGUgdmFsdWUgYXMgYmVmb3JlCiAgICAgICAgICAgICAgICAgICAgICAgICRjZWxsQ29udGVudCAuPSAiPGRpdiBjbGFzcz0neWVhci12YWx1ZSAkY3VycmVudFllYXJDbGFzcycgZGF0YS15ZWFyPSckeWVhcicgZGF0YS1kYXRlPSckZGF0ZVN0cmluZ0ZvclllYXInPjxzcGFuIGNsYXNzPSd2YWx1ZSc+IiAuIHN0YXRzSHRtbCgoc3RyaW5nKSR2YWx1ZSkgLiAiPC9zcGFuPjwvZGl2PiI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvLyBPdXRwdXQgdGhlIHZhbHVlIGFzIGJlZm9yZQogICAgICAgICAgICAgICAgICAgICRjZWxsQ29udGVudCAuPSAiPGRpdiBjbGFzcz0neWVhci12YWx1ZSAkY3VycmVudFllYXJDbGFzcycgZGF0YS15ZWFyPSckeWVhcicgZGF0YS1kYXRlPSckZGF0ZVN0cmluZ0ZvclllYXInPjxzcGFuIGNsYXNzPSd2YWx1ZSc+IiAuIHN0YXRzSHRtbCgoc3RyaW5nKSR2YWx1ZSkgLiAiPC9zcGFuPjwvZGl2PiI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGNlbGxDb250ZW50IC49ICI8L2Rpdj4iOwogICAgICAgICAgICBlY2hvICI8dGQgZGF0YS1maWVsZD0nJG1ldHJpY0tleSc+JGNlbGxDb250ZW50PC90ZD4iOwogICAgICAgIH0KICAgICAgICBlY2hvICI8L3RyPiI7CiAgICB9CgogICAgZWNobyAiPC90Ym9keT48L3RhYmxlPjwvZGl2PiI7Cn0KCiRjdXJyZW50VG90YWxzID0gJHRvdGFsc1skY3VycmVudFllYXJdID8/IFsndG90YWxfcGl6emFzJyA9PiAwLCAndG90YWxfYW1vdW50JyA9PiAwLCAnbmQnID0+IDBdOwokcHJldmlvdXNZZWFyID0gJGN1cnJlbnRZZWFyIC0gMTsKJHByZXZpb3VzVG90YWxzID0gJHRvdGFsc1skcHJldmlvdXNZZWFyXSA/PyBbJ3RvdGFsX3BpenphcycgPT4gMCwgJ3RvdGFsX2Ftb3VudCcgPT4gMCwgJ25kJyA9PiAwXTsKJGFtb3VudERlbHRhID0gKGZsb2F0KSgkY3VycmVudFRvdGFsc1sndG90YWxfYW1vdW50J10gPz8gMCkgLSAoZmxvYXQpKCRwcmV2aW91c1RvdGFsc1sndG90YWxfYW1vdW50J10gPz8gMCk7CiRwaXp6YXNEZWx0YSA9IChpbnQpKCRjdXJyZW50VG90YWxzWyd0b3RhbF9waXp6YXMnXSA/PyAwKSAtIChpbnQpKCRwcmV2aW91c1RvdGFsc1sndG90YWxfcGl6emFzJ10gPz8gMCk7CiRhbW91bnREZWx0YUNsYXNzID0gJGFtb3VudERlbHRhID49IDAgPyAnaXMtcG9zaXRpdmUnIDogJ2lzLW5lZ2F0aXZlJzsKJHBpenphc0RlbHRhQ2xhc3MgPSAkcGl6emFzRGVsdGEgPj0gMCA/ICdpcy1wb3NpdGl2ZScgOiAnaXMtbmVnYXRpdmUnOwokcHJldldlZWtEYXRlID0gY2xvbmUgJGN1cnJlbnREYXRlOwokcHJldldlZWtEYXRlLT5tb2RpZnkoJy0xIHdlZWsnKTsKJG5leHRXZWVrRGF0ZSA9IGNsb25lICRjdXJyZW50RGF0ZTsKJG5leHRXZWVrRGF0ZS0+bW9kaWZ5KCcrMSB3ZWVrJyk7CiRjdXN0b21TdGFydExhYmVsID0gIWVtcHR5KCRfR0VUWydjdXN0b21fc3RhcnQnXSkgPyBkYXRlKCdkL20vWScsIHN0cnRvdGltZSgkX0dFVFsnY3VzdG9tX3N0YXJ0J10pKSA6ICdkYXRlIGRlIGTDqWJ1dCBub24gZMOpZmluaWUnOwokY3VzdG9tRW5kTGFiZWwgPSAhZW1wdHkoJF9HRVRbJ2N1c3RvbV9lbmQnXSkgPyBkYXRlKCdkL20vWScsIHN0cnRvdGltZSgkX0dFVFsnY3VzdG9tX2VuZCddKSkgOiAnZGF0ZSBkZSBmaW4gbm9uIGTDqWZpbmllJzsKJHN0YXRzTG9jYXRpb25MYWJlbCA9IHN0YXRzTG9jYXRpb25MYWJlbCgkc3RhdHNfbG9jYXRpb24pOwo/Pgo8IURPQ1RZUEUgaHRtbD4KPGh0bWwgbGFuZz0iZnIiPgo8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KICAgIDx0aXRsZT5TdGF0aXN0aXF1ZXMgZGVzIFZlbnRlczwvdGl0bGU+CiAgICA8IS0tIExpZW4gdmVycyBCb290c3RyYXAgQ1NTIC0tPgogICAgPGxpbmsKICAgICAgcmVsPSJzdHlsZXNoZWV0IgogICAgICBocmVmPSJodHRwczovL3N0YWNrcGF0aC5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC80LjUuMi9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiCiAgICA+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ijw/cGhwIGVjaG8gc3RhdHNBc3NldCgnYXNzZXRzL2Nzcy9zdGF0cy5jc3MnKTsgPz4iPgo8L2hlYWQ+Cjxib2R5IGNsYXNzPSJzdGF0cy1wYWdlIiBkYXRhLXNlbGVjdGVkLWRhdGU9Ijw/cGhwIGVjaG8gc3RhdHNIdG1sKCRzZWxlY3RlZERhdGUpOyA/PiIgZGF0YS1sb2NhdGlvbj0iPD9waHAgZWNobyBzdGF0c0h0bWwoJGxvY2F0aW9uKTsgPz4iPgoKPGRpdiBjbGFzcz0iY29udGFpbmVyIHRleHQtY2VudGVyIj4KICAgIDxoZWFkZXIgY2xhc3M9InN0YXRzLWhlcm8iPgogICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJleWVicm93Ij5QaWxvdGFnZSBjb21tZXJjaWFsPC9zcGFuPgogICAgICAgICAgICA8aDE+U3RhdGlzdGlxdWVzIGRlcyB2ZW50ZXM8L2gxPgogICAgICAgICAgICA8cD5TZW1haW5lIDw/cGhwIGVjaG8gKGludCkkY3VycmVudFdlZWtOdW1iZXI7ID8+IMK3IDw/cGhwIGVjaG8gc3RhdHNIdG1sKCRzZWxlY3Rpb24pOyA/PiDCtyBkb25uw6llcyBqdXNxdeKAmWF1IDw/cGhwIGVjaG8gc3RhdHNIdG1sKCRsYXN0RGF0YURhdGUtPmZvcm1hdCgnZC9tL1knKSk7ID8+PC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi13YXJuaW5nIHN0YXRzLXJlZnJlc2gtYnV0dG9uIiBpZD0idXBkYXRlQnV0dG9uIj5NZXR0cmUgw6Agam91ciBhdWpvdXJk4oCZaHVpPC9idXR0b24+CiAgICA8L2hlYWRlcj4KCiAgICA8c2VjdGlvbiBjbGFzcz0ic3RhdHMta3BpLWdyaWQiIGFyaWEtbGFiZWw9IkluZGljYXRldXJzIHByaW5jaXBhdXgiPgogICAgICAgIDxhcnRpY2xlIGNsYXNzPSJzdGF0cy1rcGktY2FyZCI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzdGF0cy1rcGktbGFiZWwiPkNBIHDDqXJpb2RlIDw/cGhwIGVjaG8gKGludCkkY3VycmVudFllYXI7ID8+PC9zcGFuPgogICAgICAgICAgICA8c3Ryb25nPjw/cGhwIGVjaG8gbnVtYmVyX2Zvcm1hdCgoZmxvYXQpKCRjdXJyZW50VG90YWxzWyd0b3RhbF9hbW91bnQnXSA/PyAwKSwgMiwgJywnLCAnICcpOyA/PiDigqw8L3N0cm9uZz4KICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSI8P3BocCBlY2hvICRhbW91bnREZWx0YUNsYXNzOyA/PiI+PD9waHAgZWNobyAoJGFtb3VudERlbHRhID49IDAgPyAnKycgOiAnJyk7ID8+PD9waHAgZWNobyBudW1iZXJfZm9ybWF0KCRhbW91bnREZWx0YSwgMiwgJywnLCAnICcpOyA/PiDigqwgdnMgPD9waHAgZWNobyAoaW50KSRwcmV2aW91c1llYXI7ID8+PC9zbWFsbD4KICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPGFydGljbGUgY2xhc3M9InN0YXRzLWtwaS1jYXJkIj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN0YXRzLWtwaS1sYWJlbCI+UGl6emFzIHDDqXJpb2RlIDw/cGhwIGVjaG8gKGludCkkY3VycmVudFllYXI7ID8+PC9zcGFuPgogICAgICAgICAgICA8c3Ryb25nPjw/cGhwIGVjaG8gKGludCkoJGN1cnJlbnRUb3RhbHNbJ3RvdGFsX3BpenphcyddID8/IDApOyA/Pjwvc3Ryb25nPgogICAgICAgICAgICA8c21hbGwgY2xhc3M9Ijw/cGhwIGVjaG8gJHBpenphc0RlbHRhQ2xhc3M7ID8+Ij48P3BocCBlY2hvICgkcGl6emFzRGVsdGEgPj0gMCA/ICcrJyA6ICcnKTsgPz48P3BocCBlY2hvIChpbnQpJHBpenphc0RlbHRhOyA/PiB2cyA8P3BocCBlY2hvIChpbnQpJHByZXZpb3VzWWVhcjsgPz48L3NtYWxsPgogICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ic3RhdHMta3BpLWNhcmQiPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3RhdHMta3BpLWxhYmVsIj5Nb250YW50IEQ8L3NwYW4+CiAgICAgICAgICAgIDxzdHJvbmc+PD9waHAgZWNobyBudW1iZXJfZm9ybWF0KChmbG9hdCkoJGN1cnJlbnRUb3RhbHNbJ25kJ10gPz8gMCksIDIsICcsJywgJyAnKTsgPz4g4oKsPC9zdHJvbmc+CiAgICAgICAgICAgIDxzbWFsbD5Qw6lyaW9kZSBzw6lsZWN0aW9ubsOpZTwvc21hbGw+CiAgICAgICAgPC9hcnRpY2xlPgogICAgPC9zZWN0aW9uPgoKICAgIDxuYXYgY2xhc3M9InN0YXRzLXRvb2xiYXIiIGFyaWEtbGFiZWw9IkZpbHRyZXMgZHUgdGFibGVhdSBwcmluY2lwYWwiPgogICAgPGRpdiBjbGFzcz0iYnRuLWdyb3VwIG1iLTMiIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSJDaG9peCBkZSBsYSBsb2NhbGlzYXRpb24iPgogICAgICAgIDxhIGhyZWY9Ij9sb2NhdGlvbj1wZWxpc3Nhbm5lJmRhdGU9PD9waHAgZWNobyBzdGF0c0h0bWwoJHNlbGVjdGVkRGF0ZSk7ID8+IiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IDw/cGhwIGVjaG8gKCRsb2NhdGlvbiA9PSAncGVsaXNzYW5uZScpID8gJ2FjdGl2ZScgOiAnJzsgPz4iPlDDqWxpc3Nhbm5lPC9hPgogICAgICAgIDxhIGhyZWY9Ij9sb2NhdGlvbj1sYW5jb24mZGF0ZT08P3BocCBlY2hvIHN0YXRzSHRtbCgkc2VsZWN0ZWREYXRlKTsgPz4iIGNsYXNzPSJidG4gYnRuLXNlY29uZGFyeSA8P3BocCBlY2hvICgkbG9jYXRpb24gPT0gJ2xhbmNvbicpID8gJ2FjdGl2ZScgOiAnJzsgPz4iPkxhbsOnb248L2E+CiAgICAgICAgPGEgaHJlZj0iP2xvY2F0aW9uPWJvdGgmZGF0ZT08P3BocCBlY2hvIHN0YXRzSHRtbCgkc2VsZWN0ZWREYXRlKTsgPz4iIGNsYXNzPSJidG4gYnRuLXN1Y2Nlc3MgPD9waHAgZWNobyAoJGxvY2F0aW9uID09ICdib3RoJykgPyAnYWN0aXZlJyA6ICcnOyA/PiI+TGVzIGRldXg8L2E+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJkYXRlcGlja2VyLWNvbnRhaW5lciI+CiAgICAgICAgPGZvcm0gbWV0aG9kPSJHRVQiIGFjdGlvbj0iIj4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibG9jYXRpb24iIHZhbHVlPSI8P3BocCBlY2hvIHN0YXRzSHRtbCgkbG9jYXRpb24pOyA/PiI+CiAgICAgICAgICAgIDxsYWJlbCBmb3I9ImRhdGVQaWNrZXIiPkNob2lzaXIgdW5lIGRhdGUgOjwvbGFiZWw+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJkYXRlIiBpZD0iZGF0ZVBpY2tlciIgbmFtZT0iZGF0ZSIgdmFsdWU9Ijw/cGhwIGVjaG8gc3RhdHNIdG1sKCRzZWxlY3RlZERhdGUpOyA/PiI+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5BZmZpY2hlciBsYSBzZW1haW5lPC9idXR0b24+CiAgICAgICAgPC9mb3JtPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iYnRuLWdyb3VwIG1iLTMiIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSJOYXZpZ2F0aW9uIGRlcyBzZW1haW5lcyI+CiAgICAgICAgPGEgaHJlZj0iP2xvY2F0aW9uPTw/cGhwIGVjaG8gc3RhdHNIdG1sKCRsb2NhdGlvbik7ID8+JmRhdGU9PD9waHAgZWNobyBzdGF0c0h0bWwoJHByZXZXZWVrRGF0ZS0+Zm9ybWF0KCdZLW0tZCcpKTsgPz4iIGNsYXNzPSJidG4gYnRuLWxpZ2h0Ij5TZW1haW5lIHByw6ljw6lkZW50ZTwvYT4KICAgICAgICA8YSBocmVmPSI/bG9jYXRpb249PD9waHAgZWNobyBzdGF0c0h0bWwoJGxvY2F0aW9uKTsgPz4mZGF0ZT08P3BocCBlY2hvIHN0YXRzSHRtbCgkbmV4dFdlZWtEYXRlLT5mb3JtYXQoJ1ktbS1kJykpOyA/PiIgY2xhc3M9ImJ0biBidG4tbGlnaHQiPlNlbWFpbmUgc3VpdmFudGU8L2E+CiAgICA8L2Rpdj4KICAgIDwvbmF2PgoKICAgIDxoMiBjbGFzcz0ic3RhdHMtc2VjdGlvbi10aXRsZSI+PD9waHAgZWNobyBzdGF0c0h0bWwoJHNlbGVjdGlvbik7ID8+PC9oMj4KICAgIDw/cGhwCiAgICAvLyBHw6luw6lyZXIgbGUgdGFibGVhdSBjb21iaW7DqQogICAgZ2VuZXJhdGVDb21iaW5lZFRhYmxlKCRkYXRhLCAkZGF0ZXNCeVllYXIsICR5ZWFycywgJHNlbGVjdGVkRGF0ZSwgJGN1cnJlbnRZZWFyLCAkbG9jYXRpb24pOwogICAgPz4KCgogICAgPCEtLSBTdGF0aXN0aXF1ZXMgc3VwcGzDqW1lbnRhaXJlcyAtLT4KICAgIDxkaXYgaWQ9InN0YXRzLXNlY3Rpb24iIGNsYXNzPSJzdGF0cy1zZWN0aW9uIGNvbnRhaW5lciB0ZXh0LWNlbnRlciI+CiAgICA8aDM+U3RhdGlzdGlxdWVzIHN1cHBsw6ltZW50YWlyZXM8L2gzPgoKICAgIDwhLS0gRm9ybXVsYWlyZSBkZSBzw6lsZWN0aW9uIGRlIGxhIHDDqXJpb2RlIGV0IGRlIGxhIGxvY2FsaXNhdGlvbiAtLT4KICAgIDxmb3JtIG1ldGhvZD0iR0VUIiBhY3Rpb249IiNzdGF0cy1zZWN0aW9uIj4KCiAgICAgICAgPCEtLSBTZWN0aW9uIHBvdXIgbGEgbG9jYWxpc2F0aW9uIC0tPgogICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tc2VjdGlvbiI+CiAgICAgICAgICAgIDxoND5Tw6lsZWN0aW9ubmVyIGxhIGxvY2FsaXNhdGlvbjwvaDQ+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJhZGlvLWdyb3VwIj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBpZD0ic3RhdHNfbG9jYXRpb25fcGVsaXNzYW5uZSIgbmFtZT0ic3RhdHNfbG9jYXRpb24iIHZhbHVlPSJwZWxpc3Nhbm5lIiA8P3BocCBpZiAoJHN0YXRzX2xvY2F0aW9uID09ICdwZWxpc3Nhbm5lJykgZWNobyAnY2hlY2tlZCc7ID8+PgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9InN0YXRzX2xvY2F0aW9uX3BlbGlzc2FubmUiPlDDqWxpc3Nhbm5lPC9sYWJlbD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIGlkPSJzdGF0c19sb2NhdGlvbl9sYW5jb24iIG5hbWU9InN0YXRzX2xvY2F0aW9uIiB2YWx1ZT0ibGFuY29uIiA8P3BocCBpZiAoJHN0YXRzX2xvY2F0aW9uID09ICdsYW5jb24nKSBlY2hvICdjaGVja2VkJzsgPz4+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0ic3RhdHNfbG9jYXRpb25fbGFuY29uIj5MYW7Dp29uPC9sYWJlbD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIGlkPSJzdGF0c19sb2NhdGlvbl9ib3RoIiBuYW1lPSJzdGF0c19sb2NhdGlvbiIgdmFsdWU9ImJvdGgiIDw/cGhwIGlmICgkc3RhdHNfbG9jYXRpb24gPT0gJ2JvdGgnKSBlY2hvICdjaGVja2VkJzsgPz4+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0ic3RhdHNfbG9jYXRpb25fYm90aCI+TGVzIGRldXg8L2xhYmVsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8IS0tIFNlY3Rpb24gcG91ciBsYSBww6lyaW9kZSAtLT4KICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLXNlY3Rpb24iPgogICAgICAgICAgICA8aDQ+U8OpbGVjdGlvbm5lciBsYSBww6lyaW9kZTwvaDQ+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJhZGlvLWdyb3VwIj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBpZD0icGVyaW9kZV9zZW1haW5lIiBuYW1lPSJwZXJpb2RlIiB2YWx1ZT0ic2VtYWluZSIgPD9waHAgaWYgKCRwZXJpb2RlID09ICdzZW1haW5lJykgZWNobyAnY2hlY2tlZCc7ID8+PgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9InBlcmlvZGVfc2VtYWluZSI+U2VtYWluZTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBpZD0icGVyaW9kZV9wZXJzb25uYWxpc2VlIiBuYW1lPSJwZXJpb2RlIiB2YWx1ZT0icGVyc29ubmFsaXNlZSIgPD9waHAgaWYgKCRwZXJpb2RlID09ICdwZXJzb25uYWxpc2VlJykgZWNobyAnY2hlY2tlZCc7ID8+PgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9InBlcmlvZGVfcGVyc29ubmFsaXNlZSI+UGxhZ2UgcGVyc29ubmFsaXPDqWU8L2xhYmVsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPCEtLSBQb3VyIGxhIHBsYWdlIHBlcnNvbm5hbGlzw6llLCBhZmZpY2hlciBsZXMgY2hhbXBzIGRlIGRhdGUgLS0+CiAgICAgICAgICAgIDxkaXYgaWQ9ImN1c3RvbVBlcmlvZElucHV0cyIgc3R5bGU9Ijw/cGhwIGlmICgkcGVyaW9kZSAhPSAncGVyc29ubmFsaXNlZScpIGVjaG8gJ2Rpc3BsYXk6IG5vbmU7JzsgPz4iPgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iY3VzdG9tU3RhcnQiPkRhdGUgZGUgZMOpYnV0IDo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImRhdGUiIGlkPSJjdXN0b21TdGFydCIgbmFtZT0iY3VzdG9tX3N0YXJ0IiB2YWx1ZT0iPD9waHAgZWNobyAkX0dFVFsnY3VzdG9tX3N0YXJ0J10gPz8gJyc7ID8+Ij48YnI+CiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJjdXN0b21FbmQiPkRhdGUgZGUgZmluIDo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImRhdGUiIGlkPSJjdXN0b21FbmQiIG5hbWU9ImN1c3RvbV9lbmQiIHZhbHVlPSI8P3BocCBlY2hvICRfR0VUWydjdXN0b21fZW5kJ10gPz8gJyc7ID8+Ij4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDwhLS0gQm91dG9uIGRlIHNvdW1pc3Npb24gLS0+CiAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkFmZmljaGVyIGxlcyBzdGF0aXN0aXF1ZXM8L2J1dHRvbj4KICAgIDwvZm9ybT4KCiAgICA8IS0tIEFmZmljaGFnZSBkZXMgc3RhdGlzdGlxdWVzIC0tPgogICAgPGg0PgogICAgICAgIFN0YXRpc3RpcXVlcyBwb3VyIGxhIHDDqXJpb2RlIHPDqWxlY3Rpb25uw6llIDogPGJyPgogICAgICAgIDw/cGhwIGlmICgkcGVyaW9kZSA9PT0gJ3NlbWFpbmUnKTogPz4KICAgICAgICAgICAgU2VtYWluZSBOwrA8P3BocCBlY2hvICRjdXJyZW50V2Vla051bWJlcjsgPz4gPGJyPgogICAgICAgIDw/cGhwIGVsc2VpZiAoJHBlcmlvZGUgPT09ICdwZXJzb25uYWxpc2VlJyk6ID8+CiAgICAgICAgICAgIER1IDw/cGhwIGVjaG8gc3RhdHNIdG1sKCRjdXN0b21TdGFydExhYmVsKTsgPz4KICAgICAgICAgICAgYXUgPD9waHAgZWNobyBzdGF0c0h0bWwoJGN1c3RvbUVuZExhYmVsKTsgPz4gPGJyPgogICAgICAgIDw/cGhwIGVuZGlmOyA/PgogICAgICAgIDw/cGhwIGVjaG8gc3RhdHNIdG1sKCRzdGF0c0xvY2F0aW9uTGFiZWwpOyA/PgogICAgPC9oND4KCgogICAgPHRhYmxlIGNsYXNzPSJzdGF0cy10YWJsZSI+CiAgICAgICAgPHRyPgogICAgICAgICAgICA8dGg+QW5uw6llPC90aD4KICAgICAgICAgICAgPHRoPk5vbWJyZSBUb3RhbCBkZSBQaXp6YXM8L3RoPgogICAgICAgICAgICA8dGg+TW9udGFudCBUb3RhbCAo4oKsKTwvdGg+CiAgICAgICAgICAgIDx0aD5Nb250YW50IEQ8L3RoPgogICAgICAgIDwvdHI+CiAgICAgICAgPD9waHAgZm9yZWFjaCAoJHllYXJzIGFzICR5ZWFyKTogPz4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNsYXNzPSI8P3BocCBlY2hvICgkeWVhciA9PSAkY3VycmVudFllYXIpID8gJ2N1cnJlbnQteWVhcicgOiAnb3RoZXIteWVhcic7ID8+Ij48P3BocCBlY2hvICR5ZWFyOyA/PjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9Ijw/cGhwIGVjaG8gKCR5ZWFyID09ICRjdXJyZW50WWVhcikgPyAnY3VycmVudC15ZWFyJyA6ICdvdGhlci15ZWFyJzsgPz4iPgogICAgICAgICAgICAgICAgICAgIDw/cGhwIGVjaG8gJHRvdGFsc1skeWVhcl1bJ3RvdGFsX3BpenphcyddID8/IDA7ID8+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgPHRkIGNsYXNzPSI8P3BocCBlY2hvICgkeWVhciA9PSAkY3VycmVudFllYXIpID8gJ2N1cnJlbnQteWVhcicgOiAnb3RoZXIteWVhcic7ID8+Ij4KICAgICAgICAgICAgICAgICAgICA8P3BocCBlY2hvIG51bWJlcl9mb3JtYXQoJHRvdGFsc1skeWVhcl1bJ3RvdGFsX2Ftb3VudCddID8/IDAsIDIsICcsJywgJyAnKTsgPz4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9Ijw/cGhwIGVjaG8gKCR5ZWFyID09ICRjdXJyZW50WWVhcikgPyAnY3VycmVudC15ZWFyJyA6ICdvdGhlci15ZWFyJzsgPz4iPgogICAgICAgICAgICAgICAgICAgIDw/cGhwIGVjaG8gbnVtYmVyX2Zvcm1hdCgkdG90YWxzWyR5ZWFyXVsnbmQnXSA/PyAwLCAyLCAnLCcsICcgJyk7ID8+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgIDw/cGhwIGVuZGZvcmVhY2g7ID8+CiAgICA8L3RhYmxlPgo8L2Rpdj4KCgo8L2Rpdj4KCjwhLS0gTGllbiB2ZXJzIEJvb3RzdHJhcCBKUyBldCBkw6lwZW5kYW5jZXMgLS0+CjxzY3JpcHQgc3JjPSJodHRwczovL2NvZGUuanF1ZXJ5LmNvbS9qcXVlcnktMy41LjEubWluLmpzIj48L3NjcmlwdD4KPHNjcmlwdAogIHNyYz0iaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9wb3BwZXIuanNAMS4xNi4xL2Rpc3QvdW1kL3BvcHBlci5taW4uanMiCj48L3NjcmlwdD4KPHNjcmlwdAogIHNyYz0iaHR0cHM6Ly9zdGFja3BhdGguYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvNC41LjIvanMvYm9vdHN0cmFwLm1pbi5qcyIKPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iPD9waHAgZWNobyBzdGF0c0Fzc2V0KCdhc3NldHMvanMvc3RhdHMuanMnKTsgPz4iPjwvc2NyaXB0Pgo8L2JvZHk+CjwvaHRtbD4K"
            }
        }
    ],
    "meta": {
        "summary": {
            "changed": 1,
            "created": 2,
            "deleted": 0,
            "errors": 0
        },
        "patch_sha1": "bfc8c1cfff27f5d48d9d4624e26d9c49fa0e49d6",
        "created_files": [
            "stats/assets/css/stats.css",
            "stats/assets/js/stats.js"
        ],
        "branching": {
            "auto_branch_created": false,
            "auto_branch_id": null,
            "source_branch_id": "main",
            "base_event_id": "event_39d66e00c53b46e4"
        },
        "transition_store": {
            "dir": "event-assets/event_1e344a8877b69dd9",
            "manifest": "event-assets/event_1e344a8877b69dd9/manifest.json",
            "files_count": 3
        }
    },
    "impacted_paths": [
        "stats/assets/css/stats.css",
        "stats/assets/js/stats.js",
        "stats/stats.php"
    ]
}