{
    "version": 4,
    "timestamp": 1575553188695,
    "reference": "5Rj5nRiY33DivVvjxN21Ki3M6UbmmSMhS4mtkAi6PH9AUB72hFCeK7ua6eYhnFHeLQS8s9esTmt1jJuvfqkwUnht",
    "nxt-consensus": {
        "base-target": 1043,
        "generation-signature": "Ab757YApDSLa9eymqEDdeT8QmjLQttv1czdm2w4wCtXk"
    },
    "features": [],
    "desiredReward": -1,
    "generator": "3N2KCTM9LhM6U5Ya3vudsRdg4udr3LSVLXP",
    "generatorPublicKey": "7Aivw6mKaCbsMKkh9ZAyjDybnGDWGiZVd36RHfBVmmVR",
    "signature": "3vpz2YPJ9Bni1ZSAF5eTz7LPiUdAscrCKm51YSTc9WkHjSbjGHYJoXFVuFzEbNnrJkMfuaXQ6vzoaEXZPZhR7GBu",
    "blocksize": 480219,
    "transactionCount": 16,
    "id": "3vpz2YPJ9Bni1ZSAF5eTz7LPiUdAscrCKm51YSTc9WkHjSbjGHYJoXFVuFzEbNnrJkMfuaXQ6vzoaEXZPZhR7GBu",
    "totalFee": 132400000,
    "reward": 600000000,
    "rewardShares": {
        "3N2KCTM9LhM6U5Ya3vudsRdg4udr3LSVLXP": 600000000
    },
    "fee": 132400000,
    "previous": "795498",
    "height": "795499",
    "next": "795500",
    "transactions": [
        {
            "type": 16,
            "id": "5DUVSVdZyouieXLnCJMEquEXyJ2PGxaCyRbbYAU329oT",
            "fee": 900000,
            "feeAssetId": null,
            "timestamp": 1575553195635,
            "version": 1,
            "sender": "3MrC1oqVCoLkfHabhJtrLJS6GxcooQwRWuP",
            "senderPublicKey": "3bmZaUZ9wp3K1YZQFqTkN1oZzumQPi7WLQ9QowMaqqEZ",
            "proofs": [
                "65uhmsCfLoWcgxZMdpU3SfUj65s26nvQSe1DRZ1WPuX79A8D8CnHLXQFyekwa61bbGbgCyT5ndvTKANG9B9u4Gy6"
            ],
            "dApp": "3MpXVDHpgWX1PEhCvdDcsDjymAkB3DP6QQN",
            "payment": [],
            "call": {
                "function": "withdraw",
                "args": []
            }
        },
        {
            "type": 16,
            "id": "7WybJWsxMzPhEHqBkyqZe5morvfibnBckstKRaWE6BAd",
            "fee": 500000,
            "feeAssetId": null,
            "timestamp": 1575553196015,
            "version": 1,
            "sender": "3N1aBgieFCpxDJorNX7i41KWaP974Ci9roS",
            "senderPublicKey": "6cqvrqcrZ3obZFUNwkb5cCd4jP5BSrgEYxsCqADPtiKc",
            "proofs": [
                "2hqKoUKMrWXggZ4GjTvVeazqtPc3B8F5zWLnWyCApG7TCGiPHSgMTSPSquAdST5h2KSNbY6sKgnRRoc2x75Vv2J6"
            ],
            "dApp": "3MtDB8UBMZKUE17hrFVchYqqUHTWskA2zsh",
            "payment": [],
            "call": {
                "function": "defineTheWinner",
                "args": [
                    {
                        "type": "string",
                        "value": "ticketsFrom25To124"
                    }
                ]
            }
        },
        {
            "type": 16,
            "id": "k1suJpVhGDS8syHRrwLFzyvj2XqhuHVcHbk6XComdSr",
            "fee": 500000,
            "feeAssetId": null,
            "timestamp": 1575553214174,
            "version": 1,
            "sender": "3N1aBgieFCpxDJorNX7i41KWaP974Ci9roS",
            "senderPublicKey": "6cqvrqcrZ3obZFUNwkb5cCd4jP5BSrgEYxsCqADPtiKc",
            "proofs": [
                "7iVJK1toFysUbD9v47KuU4XmMCFBP5dAaV8GuUwygram7aPwE1vWKGyNbhaYQvg27EzffPdbdnT1K5tzdtjVNdC"
            ],
            "dApp": "3MtDB8UBMZKUE17hrFVchYqqUHTWskA2zsh",
            "payment": [],
            "call": {
                "function": "defineTheWinner",
                "args": [
                    {
                        "type": "string",
                        "value": "ticketsFrom25To124"
                    }
                ]
            }
        },
        {
            "type": 16,
            "id": "CjBaB9ErJk7SzQ3fAoEX9hq3ja5ki2HykPqCnscYTSPr",
            "fee": 500000,
            "feeAssetId": null,
            "timestamp": 1575553231944,
            "version": 1,
            "sender": "3N1aBgieFCpxDJorNX7i41KWaP974Ci9roS",
            "senderPublicKey": "6cqvrqcrZ3obZFUNwkb5cCd4jP5BSrgEYxsCqADPtiKc",
            "proofs": [
                "4DYi9Cd6v5yrwKo66WaLT7YJAad1XQ5g4KB6UFDCewnoFfGrL98yVJcUnqeoJBswj1reEmyKHRkuCaM5gjWTqgu8"
            ],
            "dApp": "3MtDB8UBMZKUE17hrFVchYqqUHTWskA2zsh",
            "payment": [],
            "call": {
                "function": "defineTheWinner",
                "args": [
                    {
                        "type": "string",
                        "value": "ticketsFrom1To1"
                    }
                ]
            }
        },
        {
            "type": 16,
            "id": "CzaKQmKWRSVfSRsNS2jQ2v2BH4U9qM2pXeErxDWn66tE",
            "fee": 500000,
            "feeAssetId": null,
            "timestamp": 1575553250219,
            "version": 1,
            "sender": "3N1aBgieFCpxDJorNX7i41KWaP974Ci9roS",
            "senderPublicKey": "6cqvrqcrZ3obZFUNwkb5cCd4jP5BSrgEYxsCqADPtiKc",
            "proofs": [
                "2jmFAGCmaAciYSyU96ehtZYxLw6jHDSqrjJ51nLaT9dEEpnuLf223XH65ym4zHACN5YEDxQi3RW3bcMMhfz8Uxgj"
            ],
            "dApp": "3MtDB8UBMZKUE17hrFVchYqqUHTWskA2zsh",
            "payment": [],
            "call": {
                "function": "defineTheWinner",
                "args": [
                    {
                        "type": "string",
                        "value": "ticketsFrom2To4"
                    }
                ]
            }
        },
        {
            "type": 12,
            "id": "61iyxACWAFgkF5XRGt1uyiT2uo195WSb2AB9UyQv95cx",
            "fee": 12900000,
            "feeAssetId": null,
            "timestamp": 1575553258729,
            "version": 1,
            "sender": "3N2rk3yzChsJp4wCS5VLo5Q3ifLmDChfbzQ",
            "senderPublicKey": "BdACbbxkapMbmbtG7UxdPQ5Y8grEhk9cNxLNGAF5znme",
            "proofs": [
                "2yHs2EFqUgcVxYjw7pKxReyGErD87srBdsMBhCqYqeKUVz46Pd5SitBD4bHrNYYRz9LRr65u6mJ4Js6EsmfRLTzx"
            ],
            "data": [
                {
                    "key": "asdf?styles.css",
                    "type": "binary",
                    "value": "base64:"
                }
            ]
        },
        {
            "type": 12,
            "id": "8f8VbGyNK6mbH9WuDJ2kRhWRmk5kTvYdjJGMXhU6bgAu",
            "fee": 12900000,
            "feeAssetId": null,
            "timestamp": 1575553258709,
            "version": 1,
            "sender": "3N2rk3yzChsJp4wCS5VLo5Q3ifLmDChfbzQ",
            "senderPublicKey": "BdACbbxkapMbmbtG7UxdPQ5Y8grEhk9cNxLNGAF5znme",
            "proofs": [
                "CDLZTVpi1YBrpG1ZdNDXosPkriyUf98uz2JieHTFaqxFNvoN45Wi96ZBhks8ajgRsEygKbNHecyBteXzJbcPKuQ"
            ],
            "data": [
                {
                    "key": "asdf?index.html",
                    "type": "binary",
                    "value": "base64:PCFkb2N0eXBlIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgogIDx0aXRsZT5UZXN0PC90aXRsZT4KICA8YmFzZSBocmVmPSIuLyI+CiAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIj4KICA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3gtaWNvbiIgaHJlZj0iZmF2aWNvbi5pY28iPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4vc3R5bGVzLmNzcyI+PC9oZWFkPgo8Ym9keT4KICA8YXBwLXJvb3Q+PC9hcHAtcm9vdD4KPHNjcmlwdCBzcmM9Ii4vcnVudGltZS5qcyIgZGVmZXI+PC9zY3JpcHQ+PHNjcmlwdCBzcmM9Ii4vcG9seWZpbGxzLWVzNS5qcyIgbm9tb2R1bGUgZGVmZXI+PC9zY3JpcHQ+PHNjcmlwdCBzcmM9InBvbHlmaWxscy5iOTQ4YzU1MjEwNDhiM2Y1NWZhZC5qcyIgZGVmZXI+PC9zY3JpcHQ+PHNjcmlwdCBzcmM9Im1haW4uZTMzNTBmZjRkODhkNTM0MjM0ZWYuanMiIGRlZmVyPjwvc2NyaXB0PjwvYm9keT4KPC9odG1sPgo="
                }
            ]
        },
        {
            "type": 12,
            "id": "4ZvNyUaKEJXG9Xix4mtdVdkdudfvmhVtvykxUFLHUtvt",
            "fee": 12900000,
            "feeAssetId": null,
            "timestamp": 1575553258670,
            "version": 1,
            "sender": "3N2rk3yzChsJp4wCS5VLo5Q3ifLmDChfbzQ",
            "senderPublicKey": "BdACbbxkapMbmbtG7UxdPQ5Y8grEhk9cNxLNGAF5znme",
            "proofs": [
                "2VQroRYKGbfUKb1PC6imPvdAamCoj64w2d9cfKSY3JMJkFmESk126iMicjPLHa9yprMw9HA4dutgdQnCvY3QtpxF"
            ],
            "data": [
                {
                    "key": "asdf?favicon.ico",
                    "type": "binary",
                    "value": "base64:iVBORw0KGgoAAAANSUhEUgAAABwAAAAeCAYAAAA/xX6fAAAACXBIWXMAAAsSAAALEgHS3X78AAADZklEQVRIiZVXS0wTURS98+nMlNIWdUeRlgllow5ujC4MNnFjYgSCbBQ/hbjRRGCpRiPGDUt140YNMVFjjAoYjKIhhYif+Am48UMEplCkfEI/JIKa1NyxM7wOnc7MSSZ9895978y9c++ZWyqTyYBViEGpHgCUS56OeXiOG2dZ9kFqceqs1TNMCcWgtB0AwtnLq85PRKc0G5qmMwLPjzpYtjOxEL1vm1AMSgGCxJ9vI0lIgmGYvwLPD7Msez4xL78yJBSDUglBUl3oKXft3AE/43MQGVp3Xg4cDvYXz3HPWYZtX5qXZYWwonJbOPte6gruJnDvzi2Yjc9BfWOT1S0g8Pysw8H2IaH1rAGAMl8pDEWeKeOKqmqYlKN2tgNtyxoA2lpPaeOOC2fsblcIB60aezxuONhQq93X1+6HkhJvwT0kOI5L2PKwOXwk597r9UD76ZN2jlA8HLFq3BI+um4ufOywZTKWYSaRMGHFuLGhDtzuYmUci82AnK1Df/lmy6QURSUte9jWuha6q9euQ8flTu3ealhpmn5jyUMsdJ+vVBmn08vQ/3IAunv7IJlMKXPV0lYI1ew2JaQoiCPhpJkh6V3/iwFIpdKQSCQVUhXtreZeUhT9QZE2MSgZFj9Z6Iia0D6Yjs0oWhrwl8PE91FtzUwIMqtLlFoWSWPv1godk6WszKeEGEOIhDIh4oWEAL8ooIq3GJQiALBHb4SFPvJx2PAQPfCdBqokJdx6YNGvpuMbVA/zJo6+0M1QSAhoilohPewAgIt6o9FPr7Xa+/L1m5IsKlZWVrUxyhtmKgJDHAhK6whdRUWDy0uxEGv00GShIw41teQQkh9gMnlUIei6fTe/p9nfiH6BLIWHj3pzyPTAzOx58lSbzRdWhqG7wejzRBb6f8IeQzIVpEeFhEAlzJE3MlmwFN6+e29KiCJAloheCGiKfgy6nmbErJchYdRE5QP2Nr+X54tID2F87DO2g80AIFs+yQTYwbmLXTdVMtC/w/Gxz10AgMSXCqmPGVBVsAzcLldlanH6BGlu2Ahn28YrAHA837pRSJ2C8IPnuL1qW6iHlc4bm+IuvfTpCVG6nIJwIF/zS8LyfwsxKIWyHiuJpRJiQjgF4VxyYQrXzIGEdi5snP3ilijj3PTHvdF3w9b+TAb+Afl3jDi6Q4zhAAAAAElFTkSuQmCC"
                }
            ]
        },
        {
            "type": 12,
            "id": "Fkua4aQTmX1tciCihNHUZc55vH6XViUHr84fF2DPfbKP",
            "fee": 12900000,
            "feeAssetId": null,
            "timestamp": 1575553258748,
            "version": 1,
            "sender": "3N2rk3yzChsJp4wCS5VLo5Q3ifLmDChfbzQ",
            "senderPublicKey": "BdACbbxkapMbmbtG7UxdPQ5Y8grEhk9cNxLNGAF5znme",
            "proofs": [
                "HS213S6y5gqdDCUxvbhRCsMh7a6wtn5MuK1PMp5LsLeAdPdEfQMbs3M6vXLVpwNBLf1uc7ExuFwvuUpdMHaVAs4"
            ],
            "data": [
                {
                    "key": "asdf?runtime.js",
                    "type": "binary",
                    "value": "base64:IWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHIocil7Zm9yKHZhciBuLGwsZj1yWzBdLGk9clsxXSxwPXJbMl0sYz0wLHM9W107YzxmLmxlbmd0aDtjKyspbD1mW2NdLE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLGwpJiZvW2xdJiZzLnB1c2gob1tsXVswXSksb1tsXT0wO2ZvcihuIGluIGkpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGksbikmJihlW25dPWlbbl0pO2ZvcihhJiZhKHIpO3MubGVuZ3RoOylzLnNoaWZ0KCkoKTtyZXR1cm4gdS5wdXNoLmFwcGx5KHUscHx8W10pLHQoKX1mdW5jdGlvbiB0KCl7Zm9yKHZhciBlLHI9MDtyPHUubGVuZ3RoO3IrKyl7Zm9yKHZhciB0PXVbcl0sbj0hMCxmPTE7Zjx0Lmxlbmd0aDtmKyspMCE9PW9bdFtmXV0mJihuPSExKTtuJiYodS5zcGxpY2Uoci0tLDEpLGU9bChsLnM9dFswXSkpfXJldHVybiBlfXZhciBuPXt9LG89ezA6MH0sdT1bXTtmdW5jdGlvbiBsKHIpe2lmKG5bcl0pcmV0dXJuIG5bcl0uZXhwb3J0czt2YXIgdD1uW3JdPXtpOnIsbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gZVtyXS5jYWxsKHQuZXhwb3J0cyx0LHQuZXhwb3J0cyxsKSx0Lmw9ITAsdC5leHBvcnRzfWwubT1lLGwuYz1uLGwuZD1mdW5jdGlvbihlLHIsdCl7bC5vKGUscil8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIse2VudW1lcmFibGU6ITAsZ2V0OnR9KX0sbC5yPWZ1bmN0aW9uKGUpeyJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LGwudD1mdW5jdGlvbihlLHIpe2lmKDEmciYmKGU9bChlKSksOCZyKXJldHVybiBlO2lmKDQmciYmIm9iamVjdCI9PXR5cGVvZiBlJiZlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihsLnIodCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImRlZmF1bHQiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOmV9KSwyJnImJiJzdHJpbmciIT10eXBlb2YgZSlmb3IodmFyIG4gaW4gZSlsLmQodCxuLChmdW5jdGlvbihyKXtyZXR1cm4gZVtyXX0pLmJpbmQobnVsbCxuKSk7cmV0dXJuIHR9LGwubj1mdW5jdGlvbihlKXt2YXIgcj1lJiZlLl9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gZS5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiBlfTtyZXR1cm4gbC5kKHIsImEiLHIpLHJ9LGwubz1mdW5jdGlvbihlLHIpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKX0sbC5wPSIiO3ZhciBmPXdpbmRvdy53ZWJwYWNrSnNvbnA9d2luZG93LndlYnBhY2tKc29ucHx8W10saT1mLnB1c2guYmluZChmKTtmLnB1c2g9cixmPWYuc2xpY2UoKTtmb3IodmFyIHA9MDtwPGYubGVuZ3RoO3ArKylyKGZbcF0pO3ZhciBhPWk7dCgpfShbXSk7"
                }
            ]
        },
        {
            "type": 12,
            "id": "GhRwpdEgT1rqC1P3mH1JiXmSUfABFFnxnnLWYDKSuksU",
            "fee": 12900000,
            "feeAssetId": null,
            "timestamp": 1575553260171,
            "version": 1,
            "sender": "3N2rk3yzChsJp4wCS5VLo5Q3ifLmDChfbzQ",
            "senderPublicKey": "BdACbbxkapMbmbtG7UxdPQ5Y8grEhk9cNxLNGAF5znme",
            "proofs": [
                "5BPRo9JXYG8sZnwF71ggBMnhAWPPqrjm3CfDYYpEqYUb146qCx28PaJFZrRmowDDtsqMjuJgFHT3ZteAnfxx74Da"
            ],
            "data": [
                {
                    "key": "asdf?main.e3350ff4d88d534234ef.js?1?0?3",
                    "type": "binary",
                    "value": "base64:bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxLaSgtMSxudWxsLFsiV2hhdCBkbyB5b3Ugd2FudCB0byBkbyBuZXh0IHdpdGggeW91ciBhcHA/Il0pKSwodCgpKCksVmkoNTQsMCxbWyJzZWxlY3Rpb24iLDFdXSxudWxsLDAsImlucHV0IixbWyJ0eXBlIiwiaGlkZGVuIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSg1NSwwLG51bGwsbnVsbCwyNSwiZGl2IixbWyJjbGFzcyIsImNhcmQtY29udGFpbmVyIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSg1NiwwLG51bGwsbnVsbCw0LCJkaXYiLFtbImNsYXNzIiwiY2FyZCBjYXJkLXNtYWxsIl0sWyJ0YWJpbmRleCIsIjAiXV0sbnVsbCxbW251bGwsImNsaWNrIl1dLChmdW5jdGlvbih0LGUsbil7dmFyIHI9ITA7cmV0dXJuImNsaWNrIj09PWUmJihyPSExIT09KEdyKHQsNTQpLnZhbHVlPSJjb21wb25lbnQiKSYmcikscn0pLG51bGwsbnVsbCkpLCh0KCkoKSxWaSg1NywwLG51bGwsbnVsbCwxLCI6c3ZnOnN2ZyIsW1siY2xhc3MiLCJtYXRlcmlhbC1pY29ucyJdLFsiaGVpZ2h0IiwiMjQiXSxbInZpZXdCb3giLCIwIDAgMjQgMjQiXSxbIndpZHRoIiwiMjQiXSxbInhtbG5zIiwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDU4LDAsbnVsbCxudWxsLDAsIjpzdmc6cGF0aCIsW1siZCIsIk0xOSAxM2gtNnY2aC0ydi02SDV2LTJoNlY1aDJ2Nmg2djJ6Il1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSg1OSwwLG51bGwsbnVsbCwxLCJzcGFuIixbXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksS2koLTEsbnVsbCxbIk5ldyBDb21wb25lbnQiXSkpLCh0KCkoKSxWaSg2MSwwLG51bGwsbnVsbCw0LCJkaXYiLFtbImNsYXNzIiwiY2FyZCBjYXJkLXNtYWxsIl0sWyJ0YWJpbmRleCIsIjAiXV0sbnVsbCxbW251bGwsImNsaWNrIl1dLChmdW5jdGlvbih0LGUsbil7dmFyIHI9ITA7cmV0dXJuImNsaWNrIj09PWUmJihyPSExIT09KEdyKHQsNTQpLnZhbHVlPSJtYXRlcmlhbCIpJiZyKSxyfSksbnVsbCxudWxsKSksKHQoKSgpLFZpKDYyLDAsbnVsbCxudWxsLDEsIjpzdmc6c3ZnIixbWyJjbGFzcyIsIm1hdGVyaWFsLWljb25zIl0sWyJoZWlnaHQiLCIyNCJdLFsidmlld0JveCIsIjAgMCAyNCAyNCJdLFsid2lkdGgiLCIyNCJdLFsieG1sbnMiLCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoNjMsMCxudWxsLG51bGwsMCwiOnN2ZzpwYXRoIixbWyJkIiwiTTE5IDEzaC02djZoLTJ2LTZINXYtMmg2VjVoMnY2aDZ2MnoiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDY0LDAsbnVsbCxudWxsLDEsInNwYW4iLFtdLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxLaSgtMSxudWxsLFsiQW5ndWxhciBNYXRlcmlhbCJdKSksKHQoKSgpLFZpKDY2LDAsbnVsbCxudWxsLDQsImRpdiIsW1siY2xhc3MiLCJjYXJkIGNhcmQtc21hbGwiXSxbInRhYmluZGV4IiwiMCJdXSxudWxsLFtbbnVsbCwiY2xpY2siXV0sKGZ1bmN0aW9uKHQsZSxuKXt2YXIgcj0hMDtyZXR1cm4iY2xpY2siPT09ZSYmKHI9ITEhPT0oR3IodCw1NCkudmFsdWU9ImRlcGVuZGVuY3kiKSYmcikscn0pLG51bGwsbnVsbCkpLCh0KCkoKSxWaSg2NywwLG51bGwsbnVsbCwxLCI6c3ZnOnN2ZyIsW1siY2xhc3MiLCJtYXRlcmlhbC1pY29ucyJdLFsiaGVpZ2h0IiwiMjQiXSxbInZpZXdCb3giLCIwIDAgMjQgMjQiXSxbIndpZHRoIiwiMjQiXSxbInhtbG5zIiwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDY4LDAsbnVsbCxudWxsLDAsIjpzdmc6cGF0aCIsW1siZCIsIk0xOSAxM2gtNnY2aC0ydi02SDV2LTJoNlY1aDJ2Nmg2djJ6Il1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSg2OSwwLG51bGwsbnVsbCwxLCJzcGFuIixbXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksS2koLTEsbnVsbCxbIkFkZCBEZXBlbmRlbmN5Il0pKSwodCgpKCksVmkoNzEsMCxudWxsLG51bGwsNCwiZGl2IixbWyJjbGFzcyIsImNhcmQgY2FyZC1zbWFsbCJdLFsidGFiaW5kZXgiLCIwIl1dLG51bGwsW1tudWxsLCJjbGljayJdXSwoZnVuY3Rpb24odCxlLG4pe3ZhciByPSEwO3JldHVybiJjbGljayI9PT1lJiYocj0hMSE9PShHcih0LDU0KS52YWx1ZT0idGVzdCIpJiZyKSxyfSksbnVsbCxudWxsKSksKHQoKSgpLFZpKDcyLDAsbnVsbCxudWxsLDEsIjpzdmc6c3ZnIixbWyJjbGFzcyIsIm1hdGVyaWFsLWljb25zIl0sWyJoZWlnaHQiLCIyNCJdLFsidmlld0JveCIsIjAgMCAyNCAyNCJdLFsid2lkdGgiLCIyNCJdLFsieG1sbnMiLCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoNzMsMCxudWxsLG51bGwsMCwiOnN2ZzpwYXRoIixbWyJkIiwiTTE5IDEzaC02djZoLTJ2LTZINXYtMmg2VjVoMnY2aDZ2MnoiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDc0LDAsbnVsbCxudWxsLDEsInNwYW4iLFtdLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxLaSgtMSxudWxsLFsiUnVuIGFuZCBXYXRjaCBUZXN0cyJdKSksKHQoKSgpLFZpKDc2LDAsbnVsbCxudWxsLDQsImRpdiIsW1siY2xhc3MiLCJjYXJkIGNhcmQtc21hbGwiXSxbInRhYmluZGV4IiwiMCJdXSxudWxsLFtbbnVsbCwiY2xpY2siXV0sKGZ1bmN0aW9uKHQsZSxuKXt2YXIgcj0hMDtyZXR1cm4iY2xpY2siPT09ZSYmKHI9ITEhPT0oR3IodCw1NCkudmFsdWU9ImJ1aWxkIikmJnIpLHJ9KSxudWxsLG51bGwpKSwodCgpKCksVmkoNzcsMCxudWxsLG51bGwsMSwiOnN2ZzpzdmciLFtbImNsYXNzIiwibWF0ZXJpYWwtaWNvbnMiXSxbImhlaWdodCIsIjI0Il0sWyJ2aWV3Qm94IiwiMCAwIDI0IDI0Il0sWyJ3aWR0aCIsIjI0Il0sWyJ4bWxucyIsImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSg3OCwwLG51bGwsbnVsbCwwLCI6c3ZnOnBhdGgiLFtbImQiLCJNMTkgMTNoLTZ2NmgtMnYtNkg1di0yaDZWNWgydjZoNnYyeiJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoNzksMCxudWxsLG51bGwsMSwic3BhbiIsW10sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLEtpKC0xLG51bGwsWyJCdWlsZCBmb3IgUHJvZHVjdGlvbiJdKSksKHQoKSgpLFZpKDgxLDAsbnVsbCxudWxsLDExLCJkaXYiLFtbImNsYXNzIiwidGVybWluYWwiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksb28oODIsMTYzODQsbnVsbCwwLGJ1LFtdLHtuZ1N3aXRjaDpbMCwibmdTd2l0Y2giXX0sbnVsbCksKHQoKSgpLExpKDE2Nzc3MjE2LG51bGwsbnVsbCwxLG51bGwsUGgpKSxvbyg4NCwxNjM4NCxudWxsLDAsQ3UsW01uLEluLGJ1XSxudWxsLG51bGwpLCh0KCkoKSxMaSgxNjc3NzIxNixudWxsLG51bGwsMSxudWxsLGtoKSksb28oODYsMjc4NTI4LG51bGwsMCx4dSxbTW4sSW4sYnVdLHtuZ1N3aXRjaENhc2U6WzAsIm5nU3dpdGNoQ2FzZSJdfSxudWxsKSwodCgpKCksTGkoMTY3NzcyMTYsbnVsbCxudWxsLDEsbnVsbCxBaCkpLG9vKDg4LDI3ODUyOCxudWxsLDAseHUsW01uLEluLGJ1XSx7bmdTd2l0Y2hDYXNlOlswLCJuZ1N3aXRjaENhc2UiXX0sbnVsbCksKHQoKSgpLExpKDE2Nzc3MjE2LG51bGwsbnVsbCwxLG51bGwsSWgpKSxvbyg5MCwyNzg1MjgsbnVsbCwwLHh1LFtNbixJbixidV0se25nU3dpdGNoQ2FzZTpbMCwibmdTd2l0Y2hDYXNlIl19LG51bGwpLCh0KCkoKSxMaSgxNjc3NzIxNixudWxsLG51bGwsMSxudWxsLFJoKSksb28oOTIsMjc4NTI4LG51bGwsMCx4dSxbTW4sSW4sYnVdLHtuZ1N3aXRjaENhc2U6WzAsIm5nU3dpdGNoQ2FzZSJdfSxudWxsKSwodCgpKCksVmkoOTMsMCxudWxsLG51bGwsNDcsImRpdiIsW1siY2xhc3MiLCJjYXJkLWNvbnRhaW5lciJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoOTQsMCxudWxsLG51bGwsNiwiYSIsW1siY2xhc3MiLCJjaXJjbGUtbGluayJdLFsiaHJlZiIsImh0dHBzOi8vYW5ndWxhci5pby9ndWlkZS9hbmltYXRpb25zIl0sWyJyZWwiLCJub29wZW5lciJdLFsidGFyZ2V0IiwiX2JsYW5rIl0sWyJ0aXRsZSIsIkFuaW1hdGlvbnMiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDk1LDAsbnVsbCxudWxsLDUsIjpzdmc6c3ZnIixbWyJkYXRhLW5hbWUiLCJHcm91cCAyMCJdLFsiaGVpZ2h0IiwiMjMuNDUzIl0sWyJpZCIsIkdyb3VwXzIwIl0sWyJ2aWV3Qm94IiwiMCAwIDIxLjgxMyAyMy40NTMiXSxbIndpZHRoIiwiMjEuODEzIl0sWyJ4bWxucyIsImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSg5NiwwLG51bGwsbnVsbCwwLCI6c3ZnOnBhdGgiLFtbImQiLCJNNDA5OS41ODQsOTcyLjczNmgwbC0xMC44ODIsMy45LDEuNjM3LDE0LjQsOS4yNDUsNS4xNTMsOS4yNDUtNS4xNTMsMS42ODYtMTQuNFoiXSxbImRhdGEtbmFtZSIsIlBhdGggMTUiXSxbImZpbGwiLCIjZmZhNzI2Il0sWyJpZCIsIlBhdGhfMTUiXSxbInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgtNDA4OC43MDIgLTk3Mi43MzYpIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSg5NywwLG51bGwsbnVsbCwwLCI6c3ZnOnBhdGgiLFtbImQiLCJNNDE4MS41MTYsOTcyLjczNnYyMy40NTNsOS4yNDUtNS4xNTMsMS42ODYtMTQuNFoiXSxbImRhdGEtbmFtZSIsIlBhdGggMTYiXSxbImZpbGwiLCIjZmI4YzAwIl0sWyJpZCIsIlBhdGhfMTYiXSxbInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgtNDE3MC42MzMgLTk3Mi43MzYpIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSg5OCwwLG51bGwsbnVsbCwwLCI6c3ZnOnBhdGgiLFtbImQiLCJNNDEzNy41MjksMTA3Ni4xMjdsLTcuNy0zLjcyMyw0LjQxNy0yLjcyMSw3Ljc1MywzLjcyM1oiXSxbImRhdGEtbmFtZSIsIlBhdGggMTciXSxbImZpbGwiLCIjZmZlMGIyIl0sWyJpZCIsIlBhdGhfMTciXSxbInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgtNDEyNS4wMDMgLTEwNTguMzE1KSJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoOTksMCxudWxsLG51bGwsMCwiOnN2ZzpwYXRoIixbWyJkIiwiTTQxMzcuNTI5LDEwNTEuNzA1bC03LjctMy43MjMsNC40MTctMi43MjEsNy43NTMsMy43MjNaIl0sWyJkYXRhLW5hbWUiLCJQYXRoIDE4Il0sWyJmaWxsIiwiI2ZmZjNlMCJdLFsiaWQiLCJQYXRoXzE4Il0sWyJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoLTQxMjUuMDAzIC0xMDM2Ljc1NykiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDEwMCwwLG51bGwsbnVsbCwwLCI6c3ZnOnBhdGgiLFtbImQiLCJNNDEzNy41MjksMTAyNy4yODNsLTcuNy0zLjcyMyw0LjQxNy0yLjcyMSw3Ljc1MywzLjcyM1oiXSxbImRhdGEtbmFtZSIsIlBhdGggMTkiXSxbImZpbGwiLCIjZmZmIl0sWyJpZCIsIlBhdGhfMTkiXSxbInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgtNDEyNS4wMDMgLTEwMTUuMTk5KSJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTAxLDAsbnVsbCxudWxsLDcsImEiLFtbImNsYXNzIiwiY2lyY2xlLWxpbmsiXSxbImhyZWYiLCJodHRwczovL2NsaS5hbmd1bGFyLmlvLyJdLFsicmVsIiwibm9vcGVuZXIiXSxbInRhcmdldCIsIl9ibGFuayJdLFsidGl0bGUiLCJDTEkiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDEwMiwwLG51bGwsbnVsbCw2LCI6c3ZnOnN2ZyIsW1siYWx0IiwiQW5ndWxhciBDTEkgTG9nbyJdLFsiaGVpZ2h0IiwiMjMuNDQ3Il0sWyJ2aWV3Qm94IiwiMCAwIDIxLjc2MiAyMy40NDciXSxbIndpZHRoIiwiMjEuNzYyIl0sWyJ4bWxucyIsImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxMDMsMCxudWxsLG51bGwsNSwiOnN2ZzpnIixbWyJkYXRhLW5hbWUiLCJHcm91cCAyMSJdLFsiaWQiLCJHcm91cF8yMSJdLFsidHJhbnNmb3JtIiwidHJhbnNsYXRlKDApIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxMDQsMCxudWxsLG51bGwsMCwiOnN2ZzpwYXRoIixbWyJkIiwiTTI2NjAuMzEzLDMxMy42MThoMGwtMTAuODMzLDMuOSwxLjYzNywxNC40LDkuMiw1LjE1Miw5LjI0NC01LjE1MiwxLjY4NS0xNC40WiJdLFsiZGF0YS1uYW1lIiwiUGF0aCAyMCJdLFsiZmlsbCIsIiMzNzQ3NGYiXSxbImlkIiwiUGF0aF8yMCJdLFsidHJhbnNmb3JtIiwidHJhbnNsYXRlKC0yNjQ5LjQ4IC0zMTMuNjE4KSJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTA1LDAsbnVsbCxudWxsLDAsIjpzdmc6cGF0aCIsW1siZCIsIk0yNzQxLjg4MywzMTMuNjE4djIzLjQ0N2w5LjI0NC01LjE1MiwxLjY4NS0xNC40WiJdLFsiZGF0YS1uYW1lIiwiUGF0aCAyMSJdLFsiZmlsbCIsIiMyNjMyMzgiXSxbImlkIiwiUGF0aF8yMSJdLFsidHJhbnNmb3JtIiwidHJhbnNsYXRlKC0yNzMxLjA1IC0zMTMuNjE4KSJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTA2LDAsbnVsbCxudWxsLDAsIjpzdmc6cGF0aCIsW1siZCIsIk0yNjkyLjI5MywzNzkuMTY5aDExLjcyNFYzNjguNjE4aC0xMS43MjRabTExLjE1OS0uNmgtMTAuNjA4di05LjM0NWgxMC42MjF2OS4zNDVaIl0sWyJkYXRhLW5hbWUiLCJQYXRoIDIyIl0sWyJmaWxsIiwiI2ZmZiJdLFsiaWQiLCJQYXRoXzIyIl0sWyJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoLTI2ODcuMjc0IC0zNjIuMTcpIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxMDcsMCxudWxsLG51bGwsMCwiOnN2ZzpwYXRoIixbWyJkIiwiTTI3MDkuMzMxLDM5My42ODhsLjQuNDE2LDIuMjY1LTIuMjgtMi4yOTQtMi4yOTQtLjQuNCwxLjg5MywxLjg5M1oiXSxbImRhdGEtbmFtZSIsIlBhdGggMjMiXSxbImZpbGwiLCIjZmZmIl0sWyJpZCIsIlBhdGhfMjMiXSxbInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgtMjcwMi4yODkgLTM4MC42MzEpIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxMDgsMCxudWxsLG51bGwsMCwiOnN2ZzpyZWN0IixbWyJkYXRhLW5hbWUiLCJSZWN0YW5nbGUgMTIiXSxbImZpbGwiLCIjZmZmIl0sWyJoZWlnaHQiLCIwLjQ2OSJdLFsiaWQiLCJSZWN0YW5nbGVfMTIiXSxbInRyYW5zZm9ybSIsInRyYW5zbGF0ZSg5LjcwOSAxMy43NDQpIl0sWyJ3aWR0aCIsIjMuNTE3Il1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxMDksMCxudWxsLG51bGwsMTIsImEiLFtbImNsYXNzIiwiY2lyY2xlLWxpbmsiXSxbImhyZWYiLCJodHRwczovL2F1Z3VyeS5yYW5nbGUuaW8vIl0sWyJyZWwiLCJub29wZW5lciJdLFsidGFyZ2V0IiwiX2JsYW5rIl0sWyJ0aXRsZSIsIkF1Z3VyeSJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTEwLDAsbnVsbCxudWxsLDExLCI6c3ZnOnN2ZyIsW1siOnhtbG5zOnhsaW5rIiwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayJdLFsiYWx0IiwiQW5ndWxhciBBdWd1cnkgTG9nbyJdLFsiaGVpZ2h0IiwiMjMuNDQ3Il0sWyJ2aWV3Qm94IiwiMCAwIDIxLjgxIDIzLjQ0NyJdLFsid2lkdGgiLCIyMS44MSJdLFsieG1sbnMiLCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTExLDAsbnVsbCxudWxsLDIsIjpzdmc6ZGVmcyIsW10sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDExMiwwLG51bGwsbnVsbCwxLCI6c3ZnOmNsaXBQYXRoIixbWyJpZCIsImNsaXAtcGF0aCJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTEzLDAsbnVsbCxudWxsLDAsIjpzdmc6cmVjdCIsW1siZGF0YS1uYW1lIiwiUmVjdGFuZ2xlIDEzIl0sWyJmaWxsIiwibm9uZSJdLFsiaGVpZ2h0IiwiMTAuMjciXSxbImlkIiwiUmVjdGFuZ2xlXzEzIl0sWyJ3aWR0aCIsIjEwLjMzOCJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTE0LDAsbnVsbCxudWxsLDcsIjpzdmc6ZyIsW1siZGF0YS1uYW1lIiwiR3JvdXAgMjUiXSxbImlkIiwiR3JvdXBfMjUiXSxbInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwKSJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTE1LDAsbnVsbCxudWxsLDAsIjpzdmc6cGF0aCIsW1siZCIsIk0zNzgwLjE1NSwzMTEuNDE3aDBsLTEwLjg4MSwzLjksMS42MzcsMTQuNCw5LjI0NCw1LjE1Miw5LjI0NC01LjE1MiwxLjY4NS0xNC40WiJdLFsiZGF0YS1uYW1lIiwiUGF0aCAyNCJdLFsiZmlsbCIsIiM0YTM0OTMiXSxbImlkIiwiUGF0aF8yNCJdLFsidHJhbnNmb3JtIiwidHJhbnNsYXRlKC0zNzY5LjI3NCAtMzExLjQxNykiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDExNiwwLG51bGwsbnVsbCwwLCI6c3ZnOnBhdGgiLFtbImQiLCJNMzg2Mi4wODgsMzExLjQxN3YyMy40NDdsOS4yNDQtNS4xNTIsMS42ODUtMTQuNFoiXSxbImRhdGEtbmFtZSIsIlBhdGggMjUiXSxbImZpbGwiLCIjMzExYjkyIl0sWyJpZCIsIlBhdGhfMjUiXSxbInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgtMzg1MS4yMDcgLTMxMS40MTcpIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxMTcsMCxudWxsLG51bGwsMywiOnN2ZzpnIixbWyJkYXRhLW5hbWUiLCJHcm91cCAyNCJdLFsiaWQiLCJHcm91cF8yNCJdLFsib3BhY2l0eSIsIjAuNSJdLFsidHJhbnNmb3JtIiwidHJhbnNsYXRlKDYuMTk0IDYuNzMpIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxMTgsMCxudWxsLG51bGwsMiwiOnN2ZzpnIixbWyJkYXRhLW5hbWUiLCJHcm91cCAyMyJdLFsiaWQiLCJHcm91cF8yMyJdLFsidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAgMCkiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDExOSwwLG51bGwsbnVsbCwxLCI6c3ZnOmciLFtbImNsaXAtcGF0aCIsInVybCgjY2xpcC1wYXRoKSJdLFsiZGF0YS1uYW1lIiwiR3JvdXAgMjIiXSxbImlkIiwiR3JvdXBfMjIiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDEyMCwwLG51bGwsbnVsbCwwLCI6c3ZnOnBhdGgiLFtbImQiLCJNMzgzMi40LDM3My4yNTJhNS4xNjgsNS4xNjgsMCwxLDEtNS44MjgtNC4zODMsNS4yMTYsNS4yMTYsMCwwLDEsMi41NzQuMywzLjAxNywzLjAxNywwLDEsMCwzLjI1Miw0LjA4NloiXSxbImRhdGEtbmFtZSIsIlBhdGggMjYiXSxbImZpbGwiLCIjZmZmIl0sWyJpZCIsIlBhdGhfMjYiXSxbInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgtMzgyMi4xMDcgLTM2OC44MjEpIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxMjEsMCxudWxsLG51bGwsMCwiOnN2ZzpwYXRoIixbWyJkIiwiTTM4MzAuNTgyLDM3MC44NDhhNS4xNjIsNS4xNjIsMCwxLDEtMy4yNTQtNC4wODYsMy4wMTcsMy4wMTcsMCwxLDAsMy4yNTIsNC4wODZaIl0sWyJkYXRhLW5hbWUiLCJQYXRoIDI3Il0sWyJmaWxsIiwiI2ZmZiJdLFsiaWQiLCJQYXRoXzI3Il0sWyJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoLTM4MTQuMzExIC0zNTkuOTY5KSJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTIyLDAsbnVsbCxudWxsLDUsImEiLFtbImNsYXNzIiwiY2lyY2xlLWxpbmsiXSxbImhyZWYiLCJodHRwczovL3d3dy5wcm90cmFjdG9ydGVzdC5vcmcvIl0sWyJyZWwiLCJub29wZW5lciJdLFsidGFyZ2V0IiwiX2JsYW5rIl0sWyJ0aXRsZSIsIlByb3RyYWN0b3IiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDEyMywwLG51bGwsbnVsbCw0LCI6c3ZnOnN2ZyIsW1siYWx0IiwiQW5ndWxhciBQcm90cmFjdG9yIExvZ28iXSxbImhlaWdodCIsIjIzLjQ0NyJdLFsidmlld0JveCIsIjAgMCAyMS44MSAyMy40NDciXSxbIndpZHRoIiwiMjEuODEiXSxbInhtbG5zIiwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDEyNCwwLG51bGwsbnVsbCwzLCI6c3ZnOmciLFtbImRhdGEtbmFtZSIsIkdyb3VwIDI2Il0sWyJpZCIsIkdyb3VwXzI2Il0sWyJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCkiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDEyNSwwLG51bGwsbnVsbCwwLCI6c3ZnOnBhdGgiLFtbImQiLCJNNDYyMC4xNTUsMzExLjQxN2gwbC0xMC44ODEsMy45LDEuNjM3LDE0LjQsOS4yNDQsNS4xNTIsOS4yNDQtNS4xNTIsMS42ODUtMTQuNFoiXSxbImRhdGEtbmFtZSIsIlBhdGggMjgiXSxbImZpbGwiLCIjZTEzNDM5Il0sWyJpZCIsIlBhdGhfMjgiXSxbInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgtNDYwOS4yNzQgLTMxMS40MTcpIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxMjYsMCxudWxsLG51bGwsMCwiOnN2ZzpwYXRoIixbWyJkIiwiTTQ3MDIuMDg4LDMxMS40MTd2MjMuNDQ3bDkuMjQ0LTUuMTUyLDEuNjg1LTE0LjRaIl0sWyJkYXRhLW5hbWUiLCJQYXRoIDI5Il0sWyJmaWxsIiwiI2I1MmYzMiJdLFsiaWQiLCJQYXRoXzI5Il0sWyJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoLTQ2OTEuMjA3IC0zMTEuNDE3KSJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTI3LDAsbnVsbCxudWxsLDAsIjpzdmc6cGF0aCIsW1siZCIsIk00NjUxLjA0NCwzNjkuNTh2LS40MjFoMS40ODNhNy42LDcuNiwwLDAsMC0yLjEwNi01LjA1MmwtMS4xMjMsMS4xMjMtLjMtLjMsMS4xMjItMS4xMjFhNy41ODgsNy41ODgsMCwwLDAtNC45NDYtMi4wNTV2MS40ODJoLS40MjF2LTEuNDg1YTcuNTg5LDcuNTg5LDAsMCwwLTUuMDUxLDIuMDU4bDEuMTIyLDEuMTIxLS4zLjMtMS4xMjMtMS4xMjNhNy41OTEsNy41OTEsMCwwLDAtMi4xMDYsNS4wNTJoMS40ODJ2LjQyMWgtMS40ODl2MS43MzRoMTUuMjQxVjM2OS41OFptLTEwLjk2Ni0uMjYzYTQuODM1LDQuODM1LDAsMCwxLDkuNjcsMFoiXSxbImRhdGEtbmFtZSIsIlBhdGggMzAiXSxbImZpbGwiLCIjZmZmIl0sWyJpZCIsIlBhdGhfMzAiXSxbInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgtNDYzNC4wMDggLTM1NS44NTIpIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxMjgsMCxudWxsLG51bGwsMiwiYSIsW1siY2xhc3MiLCJjaXJjbGUtbGluayJdLFsiaHJlZiIsImh0dHBzOi8vd3d3Lm1lZXR1cC5jb20vZmluZC8/a2V5d29yZHM9YW5ndWxhciJdLFsicmVsIiwibm9vcGVuZXIiXSxbInRhcmdldCIsIl9ibGFuayJdLFsidGl0bGUiLCJGaW5kIGEgTG9jYWwgTWVldHVwIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxMjksMCxudWxsLG51bGwsMSwiOnN2ZzpzdmciLFtbImFsdCIsIk1lZXR1cCBMb2dvIl0sWyJoZWlnaHQiLCIyMy40NDciXSxbInZpZXdCb3giLCIwIDAgMjQuNjA3IDIzLjQ0NyJdLFsid2lkdGgiLCIyNC42MDciXSxbInhtbG5zIiwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDEzMCwwLG51bGwsbnVsbCwwLCI6c3ZnOnBhdGgiLFtbImQiLCJNMjEuMjIxLDE0Ljk1QTQuMzkzLDQuMzkzLDAsMCwxLDE3LjYsMTkuMjgxYTQuNDUyLDQuNDUyLDAsMCwxLS44LjA2OWMtLjA5LDAtLjEyNS4wMzUtLjE1NC4xMTdhMi45MzksMi45MzksMCwwLDEtMi41MDYsMi4wOTEsMi44NjgsMi44NjgsMCwwLDEtMi4yNDgtLjYyNC4xNjguMTY4LDAsMCwwLS4yNDUtLjAwNSwzLjkyNiwzLjkyNiwwLDAsMS0yLjU4OS43NDEsNC4wMTUsNC4wMTUsMCwwLDEtMy43LTMuMzQ3LDIuNywyLjcsMCwwLDEtLjA0My0uMzhjMC0uMTA2LS4wNDItLjE0Ni0uMTQzLS4xNjZhMy41MjQsMy41MjQsMCwwLDEtMS41MTYtLjY5QTMuNjIzLDMuNjIzLDAsMCwxLDIuMjMsMTQuNTU3YTMuNjYsMy42NiwwLDAsMSwxLjA3Ny0zLjA4NS4xMzguMTM4LDAsMCwwLC4wMjYtLjIsMy4zNDgsMy4zNDgsMCwwLDEtLjQ1MS0xLjgyMSwzLjQ2LDMuNDYsMCwwLDEsMi43NDktMy4yOC40NC40NCwwLDAsMCwuMzU1LS4yODEsNS4wNzIsNS4wNzIsMCwwLDEsMy44NjMtMyw1LjAyOCw1LjAyOCwwLDAsMSwzLjU1NS42NjYuMzEuMzEsMCwwLDAsLjI3MS4wM0E0LjUsNC41LDAsMCwxLDE4LjMsNC43YTQuNCw0LjQsMCwwLDEsMS4zMzQsMi43NTEsMy42NTgsMy42NTgsMCwwLDEsLjAyMi43MDYuMTMxLjEzMSwwLDAsMCwuMS4xNTcsMi40MzIsMi40MzIsMCwwLDEsMS41NzQsMS42NDUsMi40NjQsMi40NjQsMCwwLDEtLjcsMi42MTZjLS4wNjUuMDY0LS4wNTEuMS0uMDE0LjE2NkE0LjMyMSw0LjMyMSwwLDAsMSwyMS4yMjEsMTQuOTVaTTEzLjQsMTQuNjA3YTIuMDksMi4wOSwwLDAsMCwxLjQwOSwxLjk4Miw0LjcsNC43LDAsMCwwLDEuMjc1LjIyMSwxLjgwNywxLjgwNywwLDAsMCwuOS0uMTUxLjU0Mi41NDIsMCwwLDAsLjMyMS0uNTQ1LjU1OC41NTgsMCwwLDAtLjM1OS0uNTM0LDEuMiwxLjIsMCwwLDAtLjI1NC0uMDc4Yy0uMjYyLS4wNDctLjUyNi0uMDg2LS43ODctLjEzOGEuNjc0LjY3NCwwLDAsMS0uNjE3LS43NSwzLjM5NCwzLjM5NCwwLDAsMSwuMjE4LTEuMTA5Yy4yMTctLjY1OC41MDktMS4yODYuNzktMS45MThhMTUuNjA5LDE1LjYwOSwwLDAsMCwuNzQ1LTEuODYsMS45NSwxLjk1LDAsMCwwLC4wNi0xLjA3MywxLjI4NiwxLjI4NiwwLDAsMC0xLjA1MS0xLjAzMywxLjk3NywxLjk3NywwLDAsMC0xLjUyMS4yLjMzOS4zMzksMCwwLDEtLjQ0Ni0uMDQyYy0uMS0uMDkyLS4yLS4xODktLjMwNy0uMjg0YTEuMjE0LDEuMjE0LDAsMCwwLTEuNjQzLS4wNjEsNy41NjMsNy41NjMsMCwwLDEtLjYxNC41MTJBLjU4OC41ODgsMCwwLDEsMTAuODgzLDhjLS4yMTUtLjExNS0uNDM3LS4yMTUtLjY1OS0uMzE2YTIuMTUzLDIuMTUzLDAsMCwwLS42OTUtLjI0OEEyLjA5MSwyLjA5MSwwLDAsMCw3LjU0MSw4LjU2MmE5LjkxNSw5LjkxNSwwLDAsMC0uNDA1Ljk4NmMtLjU1OSwxLjU0NS0xLjAxNSwzLjEyMy0xLjQ4Nyw0LjdhMS41MjgsMS41MjgsMCwwLDAsLjYzNCwxLjc3NywxLjc1NSwxLjc1NSwwLDAsMCwxLjUuMjExLDEuMzUsMS4zNSwwLDAsMCwuODI0LS44NThjLjU0My0xLjI4MSwxLjAzMi0yLjU4NCwxLjU1LTMuODc1LjE0Mi0uMzU1LjI4LS43MTIuNDMyLTEuMDY0YS41NDguNTQ4LDAsMCwxLC44NTEtLjI0LjYyMi42MjIsMCwwLDEsLjE4NS41MzksMi4xNjEsMi4xNjEsMCwwLDEtLjE4MS42MjFjLS4zMzcuODUyLS42OCwxLjctMS4wMTgsMi41NTJhMi41NjQsMi41NjQsMCwwLDAtLjE3My41MjguNjI0LjYyNCwwLDAsMCwuMzMzLjcxLDEuMDczLDEuMDczLDAsMCwwLC44MTQuMDM0LDEuMjIsMS4yMiwwLDAsMCwuNjU3LS42NTVxLjc1OC0xLjQ4OCwxLjUxMS0yLjk3OC4zNS0uNjg3LjcwOS0xLjM3YTEuMDczLDEuMDczLDAsMCwxLC4zNTctLjQzNC40My40MywwLDAsMSwuNDYzLS4wMTYuMzczLjM3MywwLDAsMSwuMTUzLjM4Ny43LjcsMCwwLDEtLjA1Ny4yMzZjLS4wNjUuMTU3LS4xMjcuMzE2LS4yLjQ2OS0uNDIuODgzLS44NDYsMS43NjMtMS4yNjIsMi42NDhBMi40NjMsMi40NjMsMCwwLDAsMTMuNCwxNC42MDdabTUuODg4LDYuNTA4YTEuMDksMS4wOSwwLDAsMC0yLjE3OS4wMDYsMS4wOSwxLjA5LDAsMCwwLDIuMTc5LS4wMDZaTTEuMDI4LDEyLjEzOWExLjAzOCwxLjAzOCwwLDEsMCwuMDEtMi4wNzUsMS4wMzgsMS4wMzgsMCwwLDAtLjAxLDIuMDc1Wk0xMy43ODIuNTI4YTEuMDI3LDEuMDI3LDAsMSwwLS4wMTEsMi4wNTVBMS4wMjcsMS4wMjcsMCwwLDAsMTMuNzgyLjUyOFpNMjIuMjEsNi45NWEuODgyLjg4MiwwLDAsMC0xLjc2My4wMTFBLjg4Mi44ODIsMCwwLDAsMjIuMjEsNi45NVpNNC4xNTMsNC40MzlhLjc4NS43ODUsMCwxLDAsLjc4Ny0uNzhBLjc2Ni43NjYsMCwwLDAsNC4xNTMsNC40MzlabTguMjIxLDE4LjIyYS42NzYuNjc2LDAsMSwwLS42NzcuNjY2QS42NzEuNjcxLDAsMCwwLDEyLjM3NCwyMi42NThaTTIyLjg3MiwxMi4yYS42NzQuNjc0LDAsMCwwLS42NjUuNjY1LjY1Ni42NTYsMCwwLDAsLjY1NS42NDMuNjM0LjYzNCwwLDAsMCwuNjU1LS42NDRBLjY1NC42NTQsMCwwLDAsMjIuODcyLDEyLjJaTTcuMTcxLS4xMjNBLjU0Ni41NDYsMCwwLDAsNi42MTMuNDNhLjU1My41NTMsMCwxLDAsMS4xMDYsMEEuNTM5LjUzOSwwLDAsMCw3LjE3MS0uMTIzWk0yNC4xMTksOS4yMzRhLjUwNy41MDcsMCwwLDAtLjQ5My40ODguNDk0LjQ5NCwwLDAsMCwuNDk0LjQ5NC40OC40OCwwLDAsMCwuNDg3LS40ODNBLjQ5MS40OTEsMCwwLDAsMjQuMTE5LDkuMjM0Wm0tMTkuNDU0LDkuN2EuNS41LDAsMCwwLS40ODgtLjQ4OC40OTEuNDkxLDAsMCwwLS40ODcuNS40ODMuNDgzLDAsMCwwLC40OTEuNDc5QS40OS40OSwwLDAsMCw0LjY2NSwxOC45MzZaIl0sWyJmaWxsIiwiI2Y2NDA2MCJdLFsiaWQiLCJsb2dvLS1tU3dhcm0iXSxbInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwIDAuMTIzKSJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTMxLDAsbnVsbCxudWxsLDksImEiLFtbImNsYXNzIiwiY2lyY2xlLWxpbmsiXSxbImhyZWYiLCJodHRwczovL2dpdHRlci5pbS9hbmd1bGFyL2FuZ3VsYXIiXSxbInJlbCIsIm5vb3BlbmVyIl0sWyJ0YXJnZXQiLCJfYmxhbmsiXSxbInRpdGxlIiwiSm9pbiB0aGUgQ29udmVyc2F0aW9uIG9uIEdpdHRlciJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTMyLDAsbnVsbCxudWxsLDgsIjpzdmc6c3ZnIixbWyJhbHQiLCJHaXR0ZXIgTG9nbyJdLFsiaGVpZ2h0IiwiMTkuNDQ3Il0sWyJ2aWV3Qm94IiwiMCAwIDE5LjQ0NyAxOS40NDciXSxbIndpZHRoIiwiMTkuNDQ3Il0sWyJ4bWxucyIsImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxMzMsMCxudWxsLG51bGwsNywiOnN2ZzpnIixbWyJkYXRhLW5hbWUiLCJHcm91cCA0MCJdLFsiaWQiLCJHcm91cF80MCJdLFsidHJhbnNmb3JtIiwidHJhbnNsYXRlKC0xNjEyIC00MDUpIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxMzQsMCxudWxsLG51bGwsMCwiOnN2ZzpyZWN0IixbWyJkYXRhLW5hbWUiLCJSZWN0YW5nbGUgMTkiXSxbImZpbGwiLCIjZTYwMjU3Il0sWyJoZWlnaHQiLCIxOS40NDciXSxbImlkIiwiUmVjdGFuZ2xlXzE5Il0sWyJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMTYxMiA0MDUpIl0sWyJ3aWR0aCIsIjE5LjQ0NyJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTM1LDAsbnVsbCxudWxsLDUsIjpzdmc6ZyIsW1siaWQiLCJnaXR0ZXIiXSxbInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgxNjE3Ljc5NSA0MDguNjM2KSJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTM2LDAsbnVsbCxudWxsLDQsIjpzdmc6ZyIsW1siZGF0YS1uYW1lIiwiR3JvdXAgMzMiXSxbImlkIiwiR3JvdXBfMzMiXSxbInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwIDApIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxMzcsMCxudWxsLG51bGwsMCwiOnN2ZzpyZWN0IixbWyJkYXRhLW5hbWUiLCJSZWN0YW5nbGUgMTUiXSxbImZpbGwiLCIjZmZmIl0sWyJoZWlnaHQiLCI5LjYwMSJdLFsiaWQiLCJSZWN0YW5nbGVfMTUiXSxbInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgyLjMwNCAyLjMyNCkiXSxbIndpZHRoIiwiMS4wNCJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTM4LDAsbnVsbCxudWxsLDAsIjpzdmc6cmVjdCIsW1siZGF0YS1uYW1lIiwiUmVjdGFuZ2xlIDE2Il0sWyJmaWxsIiwiI2ZmZiJdLFsiaGVpZ2h0IiwiOS42MDEiXSxbImlkIiwiUmVjdGFuZ2xlXzE2Il0sWyJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoNC42MDcgMi4zMjQpIl0sWyJ3aWR0aCIsIjEuMDQiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDEzOSwwLG51bGwsbnVsbCwwLCI6c3ZnOnJlY3QiLFtbImRhdGEtbmFtZSIsIlJlY3RhbmdsZSAxNyJdLFsiZmlsbCIsIiNmZmYiXSxbImhlaWdodCIsIjQuNjQ4Il0sWyJpZCIsIlJlY3RhbmdsZV8xNyJdLFsidHJhbnNmb3JtIiwidHJhbnNsYXRlKDYuOTEgMi4zMjQpIl0sWyJ3aWR0aCIsIjEuMDQiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDE0MCwwLG51bGwsbnVsbCwwLCI6c3ZnOnJlY3QiLFtbImRhdGEtbmFtZSIsIlJlY3RhbmdsZSAxOCJdLFsiZmlsbCIsIiNmZmYiXSxbImhlaWdodCIsIjYuOTcxIl0sWyJpZCIsIlJlY3RhbmdsZV8xOCJdLFsidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAgMCkiXSxbIndpZHRoIiwiMS4wNCJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTQxLDAsbnVsbCxudWxsLDEyLCJmb290ZXIiLFtdLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxLaSgtMSxudWxsLFsiIExvdmUgQW5ndWxhcj/CoCAiXSkpLCh0KCkoKSxWaSgxNDMsMCxudWxsLG51bGwsNiwiYSIsW1siaHJlZiIsImh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIiXSxbInJlbCIsIm5vb3BlbmVyIl0sWyJ0YXJnZXQiLCJfYmxhbmsiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLEtpKC0xLG51bGwsWyIgR2l2ZSBvdXIgcmVwbyBhIHN0YXIuICJdKSksKHQoKSgpLFZpKDE0NSwwLG51bGwsbnVsbCw0LCJkaXYiLFtbImNsYXNzIiwiZ2l0aHViLXN0YXItYmFkZ2UiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDE0NiwwLG51bGwsbnVsbCwyLCI6c3ZnOnN2ZyIsW1siY2xhc3MiLCJtYXRlcmlhbC1pY29ucyJdLFsiaGVpZ2h0IiwiMjQiXSxbInZpZXdCb3giLCIwIDAgMjQgMjQiXSxbIndpZHRoIiwiMjQiXSxbInhtbG5zIiwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDE0NywwLG51bGwsbnVsbCwwLCI6c3ZnOnBhdGgiLFtbImQiLCJNMCAwaDI0djI0SDB6Il0sWyJmaWxsIiwibm9uZSJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTQ4LDAsbnVsbCxudWxsLDAsIjpzdmc6cGF0aCIsW1siZCIsIk0xMiAxNy4yN0wxOC4xOCAyMWwtMS42NC03LjAzTDIyIDkuMjRsLTcuMTktLjYxTDEyIDIgOS4xOSA4LjYzIDIgOS4yNGw1LjQ2IDQuNzNMNS44MiAyMXoiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLEtpKC0xLG51bGwsWyIgU3RhciAiXSkpLCh0KCkoKSxWaSgxNTAsMCxudWxsLG51bGwsMywiYSIsW1siaHJlZiIsImh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIiXSxbInJlbCIsIm5vb3BlbmVyIl0sWyJ0YXJnZXQiLCJfYmxhbmsiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDE1MSwwLG51bGwsbnVsbCwyLCI6c3ZnOnN2ZyIsW1siY2xhc3MiLCJtYXRlcmlhbC1pY29ucyJdLFsiaGVpZ2h0IiwiMjQiXSxbInZpZXdCb3giLCIwIDAgMjQgMjQiXSxbIndpZHRoIiwiMjQiXSxbInhtbG5zIiwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDE1MiwwLG51bGwsbnVsbCwwLCI6c3ZnOnBhdGgiLFtbImQiLCJNMTAgNkw4LjU5IDcuNDEgMTMuMTcgMTJsLTQuNTggNC41OUwxMCAxOGw2LTZ6Il0sWyJmaWxsIiwiIzE5NzZkMiJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTUzLDAsbnVsbCxudWxsLDAsIjpzdmc6cGF0aCIsW1siZCIsIk0wIDBoMjR2MjRIMHoiXSxbImZpbGwiLCJub25lIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxNTQsMCxudWxsLG51bGwsMSwiOnN2ZzpzdmciLFtbImFsdCIsIkdyYXkgQ2xvdWRzIEJhY2tncm91bmQiXSxbImhlaWdodCIsIjQ4NS42NzciXSxbImlkIiwiY2xvdWRzIl0sWyJ2aWV3Qm94IiwiMCAwIDI2MTEuMDg0IDQ4NS42NzciXSxbIndpZHRoIiwiMjYxMS4wODQiXSxbInhtbG5zIiwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDE1NSwwLG51bGwsbnVsbCwwLCI6c3ZnOnBhdGgiLFtbImQiLCJNMjM3OS43MDksODYzLjc5M2MxMC05My03Ny0xNzEtMTY4LTE0OS01Mi0xMTQtMjI1LTEwNS0yNjQsMTUtNzUsMy0xNDAsNTktMTUyLDEzMy0zMCwyLjgzLTY2LjcyNSw5LjgyOS05My41LDI2LjI1LTI2Ljc3MS0xNi40MjEtNjMuNS0yMy40Mi05My41LTI2LjI1LTEyLTc0LTc3LTEzMC0xNTItMTMzLTM5LTEyMC0yMTItMTI5LTI2NC0xNS01NC4wODQtMTMuMDc1LTEwNi43NTMsOS4xNzMtMTM4LjQ4OCw0OC45LTMxLjczNC0zOS43MjYtODQuNC02MS45NzQtMTM4LjQ4Ny00OC45LTUyLTExNC0yMjUtMTA1LTI2NCwxNWExNjIuMDI3LDE2Mi4wMjcsMCwwLDAtMTAzLjE0Nyw0My4wNDRjLTMwLjYzMy00NS4zNjUtODcuMS03Mi4wOTEtMTQ1LjIwNi01OC4wNDQtNTItMTE0LTIyNS0xMDUtMjY0LDE1LTc1LDMtMTQwLDU5LTE1MiwxMzMtNTMsNS0xMjcsMjMtMTMwLDgzLTIsNDIsMzUsNzIsNzAsODYsNDksMjAsMTA2LDE4LDE1Nyw1YTE2NS42MjUsMTY1LjYyNSwwLDAsMCwxMjAsMGM0Nyw5NCwxNzgsMTEzLDI1MSwzMyw2MS4xMTIsOC4wMTUsMTEzLjg1NC01LjcyLDE1MC40OTItMjkuNzY0YTE2NS42MiwxNjUuNjIsMCwwLDAsMTEwLjg2MS0zLjIzNmM0Nyw5NCwxNzgsMTEzLDI1MSwzMywzMS4zODUsNC4xMTYsNjAuNTYzLDIuNDk1LDg2LjQ4Ny0zLjMxMSwyNS45MjQsNS44MDYsNTUuMSw3LjQyNyw4Ni40ODgsMy4zMTEsNzMsODAsMjA0LDYxLDI1MS0zM2ExNjUuNjI1LDE2NS42MjUsMCwwLDAsMTIwLDBjNTEsMTMsMTA4LDE1LDE1Ny01YTE0Ny4xODgsMTQ3LjE4OCwwLDAsMCwzMy41LTE4LjY5NCwxNDcuMjE3LDE0Ny4yMTcsMCwwLDAsMzMuNSwxOC42OTRjNDksMjAsMTA2LDE4LDE1Nyw1YTE2NS42MjUsMTY1LjYyNSwwLDAsMCwxMjAsMGM0Nyw5NCwxNzgsMTEzLDI1MSwzM0MyNDQ2LjcwOSwxMDkzLjc5MywyNTU0LjcwOSw5MjIuNzkzLDIzNzkuNzA5LDg2My43OTNaIl0sWyJkYXRhLW5hbWUiLCJQYXRoIDM5Il0sWyJmaWxsIiwiI2VlZSJdLFsiaWQiLCJQYXRoXzM5Il0sWyJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMTQyLjY5IC02MzQuMzEyKSJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTU2LDE2Nzc3MjE2LG51bGwsbnVsbCwxLCJyb3V0ZXItb3V0bGV0IixbXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSxvbygxNTcsMjEyOTkyLG51bGwsMCxlaCxbdGgsTW4scm4sWzgsbnVsbF0sa2VdLG51bGwsbnVsbCldLChmdW5jdGlvbih0LGUpe3QoZSw4MiwwLEdyKGUsNTQpLnZhbHVlKSx0KGUsODYsMCwibWF0ZXJpYWwiKSx0KGUsODgsMCwiZGVwZW5kZW5jeSIpLHQoZSw5MCwwLCJ0ZXN0IiksdChlLA=="
                },
                {
                    "key": "asdf?main.e3350ff4d88d534234ef.js?1?1?3",
                    "type": "binary",
                    "value": "base64:OTIsMCwiYnVpbGQiKSx0KGUsMTU3LDApfSksKGZ1bmN0aW9uKHQsZSl7dChlLDIxLDAsZS5jb21wb25lbnQudGl0bGUpfSkpfWZ1bmN0aW9uIGpoKHQpe3JldHVybiAkaSgwLFsodCgpKCksVmkoMCwwLG51bGwsbnVsbCwxLCJhcHAtcm9vdCIsW10sbnVsbCxudWxsLG51bGwsTWgsVGgpKSxvbygxLDQ5MTUyLG51bGwsMCx1dSxbXSxudWxsLG51bGwpXSxudWxsLG51bGwpfXZhciBOaD1qcigiYXBwLXJvb3QiLHV1LGpoLHt9LHt9LFtdKSxEaD1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe319KCksVWg9b3UoYXUsW3V1XSwoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT17fSxuPVtdLHI9ITEsbz0wO288dC5sZW5ndGg7bysrKXt2YXIgaT10W29dO2kudG9rZW49PT1JZSYmITA9PT1pLnZhbHVlJiYocj0hMCksMTA3Mzc0MTgyNCZpLmZsYWdzJiZuLnB1c2goaS50b2tlbiksaS5pbmRleD1vLGVbUW4oaS50b2tlbildPWl9cmV0dXJue2ZhY3Rvcnk6bnVsbCxwcm92aWRlcnNCeUtleTplLHByb3ZpZGVyczp0LG1vZHVsZXM6bixpc1Jvb3Q6cn19KFtUcig1MTIscm4sb24sW1s4LFtPaCxOaF1dLFszLHJuXSxIdF0pLFRyKDUxMjAsTG8sTmksW1szLExvXV0pLFRyKDQ2MDgsbXUsX3UsW0xvLFsyLHl1XV0pLFRyKDUxMjAsX28sRGksW25pXSksVHIoNTEyMCxJbyxSbyxbXSksVHIoNTEyMCxPbixNaSxbXSksVHIoNTEyMCxUbixqaSxbXSksVHIoNDYwOCx4cyxDcyxbRXVdKSxUcig2MTQ0LFNlLG51bGwsW3hzXSksVHIoNDYwOCxncyx5cyxbXSksVHIoNTEyMCxGbCwoZnVuY3Rpb24odCxlLG4scixvLGksYSx1KXtyZXR1cm5bbmV3IHBzKHQsZSxuKSxuZXcgYnMociksbmV3IG1zKG8saSxhLHUpXX0pLFtFdSxuaSxObyxFdSxFdSxncyxVbyxbMix2c11dKSxUcig0NjA4LEJsLEJsLFtGbCxuaV0pLFRyKDEzNTY4MCxxbCxxbCxbRXVdKSxUcig0NjA4LFhsLFhsLFtCbCxxbCxJb10pLFRyKDYxNDQsZm4sbnVsbCxbWGxdKSxUcig2MTQ0LEdsLG51bGwsW3FsXSksVHIoNDYwOCxjaSxjaSxbbmldKSxUcig1MTIwLHpjLG1oLFskZl0pLFRyKDQ2MDgsaWgsaWgsW10pLFRyKDYxNDQscmgsbnVsbCxbaWhdKSxUcigxMzU2ODAsYWgsYWgsWyRmLGJpLFdvLE1lLHJoXSksVHIoNDYwOCxvaCxvaCxbXSksVHIoNTEyMCx1aCxwaCxbJGYsVHUsbGhdKSxUcig1MTIwLHhoLGJoLFtfaF0pLFRyKDUxMjAsRG8sKGZ1bmN0aW9uKHQpe3JldHVyblt0XX0pLFt4aF0pLFRyKDEwNzM3NDIzMzYsU3UsU3UsW10pLFRyKDEwMjQsJHQsSXMsW10pLFRyKDEwMjQsZGksKGZ1bmN0aW9uKCl7cmV0dXJuW2ZoKCldfSksW10pLFRyKDUxMixfaCxfaCxbTWVdKSxUcigxMDI0LGtvLChmdW5jdGlvbih0LGUpe3JldHVyblsobj10LFZsKCJwcm9iZSIsemwpLFZsKCJjb3JlVG9rZW5zIixPYmplY3Qoci5fX2Fzc2lnbikoe30sSGwsKG58fFtdKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbZS5uYW1lXT1lLnRva2VuLHR9KSx7fSkpKSxmdW5jdGlvbigpe3JldHVybiB6bH0pLHdoKGUpXTt2YXIgbn0pLFtbMixkaV0sX2hdKSxUcig1MTIsQW8sQW8sW1syLGtvXV0pLFRyKDEzMTU4NCxfaSxfaSxbbmksVW8sTWUsJHQscm4sQW9dKSxUcigxMDczNzQyMzM2LFVpLFVpLFtfaV0pLFRyKDEwNzM3NDIzMzYsUnMsUnMsW1szLFJzXV0pLFRyKDEwMjQsc2gsZ2gsW1szLCRmXV0pLFRyKDUxMixfYyx3YyxbXSksVHIoNTEyLHRoLHRoLFtdKSxUcigyNTYsbGgse30sW10pLFRyKDEwMjQsY3UsZGgsW2x1LFsyLGZ1XSxsaF0pLFRyKDUxMixodSxodSxbY3UsbHVdKSxUcig1MTIsV28sV28sW10pLFRyKDUxMixiaSxTaSxbV28sWzIseGldXSksVHIoMTAyNCxHZiwoZnVuY3Rpb24oKXtyZXR1cm5bW11dfSksW10pLFRyKDEwMjQsJGYseWgsW19pLF9jLHRoLGh1LE1lLGJpLFdvLEdmLGxoLFsyLFdmXSxbMixCZl1dKSxUcigxMDczNzQyMzM2LGhoLGhoLFtbMixzaF0sWzIsJGZdXSksVHIoMTA3Mzc0MjMzNixEaCxEaCxbXSksVHIoMTA3Mzc0MjMzNixhdSxhdSxbXSksVHIoMjU2LEllLCEwLFtdKV0pfSkpOyhmdW5jdGlvbigpe2lmKHRlKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGVuYWJsZSBwcm9kIG1vZGUgYWZ0ZXIgcGxhdGZvcm0gc2V0dXAuIik7WHQ9ITF9KSgpLEFzKCkuYm9vdHN0cmFwTW9kdWxlRmFjdG9yeShVaCkuY2F0Y2goKGZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLmVycm9yKHQpfSkpfSx6bjhQOmZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoZnVuY3Rpb24oKXt2YXIgZT1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIit0KyInIik7dGhyb3cgZS5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixlfSkpfW4ua2V5cz1mdW5jdGlvbigpe3JldHVybltdfSxuLnJlc29sdmU9bix0LmV4cG9ydHM9bixuLmlkPSJ6bjhQIn19LFtbMCwwXV1dKTs="
                }
            ]
        },
        {
            "type": 12,
            "id": "5VDBGjfUvpM41ySDsGT8SLUcoaaui7fPbvtNi1rxziWU",
            "fee": 12900000,
            "feeAssetId": null,
            "timestamp": 1575553258767,
            "version": 1,
            "sender": "3N2rk3yzChsJp4wCS5VLo5Q3ifLmDChfbzQ",
            "senderPublicKey": "BdACbbxkapMbmbtG7UxdPQ5Y8grEhk9cNxLNGAF5znme",
            "proofs": [
                "RTKDYFWQAwgdhs1Qv7L98B2DMCcvv4WJogX5Ffpi93QbtBToW5mZCQSqZYpfJQpYwgEHPVBUf6kpz2DDn4ECv52"
            ],
            "data": [
                {
                    "key": "asdf?polyfills.b948c5521048b3f55fad.js?2?0",
                    "type": "binary",
                    "value": "base64:KHdpbmRvdy53ZWJwYWNrSnNvbnA9d2luZG93LndlYnBhY2tKc29ucHx8W10pLnB1c2goW1syXSx7IjBUV3AiOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKCJtclNHIikuX192YWx1ZXM7IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiOyFmdW5jdGlvbihlKXt2YXIgdD1lLnBlcmZvcm1hbmNlO2Z1bmN0aW9uIG4oZSl7dCYmdC5tYXJrJiZ0Lm1hcmsoZSl9ZnVuY3Rpb24gcihlLG4pe3QmJnQubWVhc3VyZSYmdC5tZWFzdXJlKGUsbil9bigiWm9uZSIpO3ZhciBvPSEwPT09ZS5fX3pvbmVfc3ltYm9sX19mb3JjZUR1cGxpY2F0ZVpvbmVDaGVjaztpZihlLlpvbmUpe2lmKG98fCJmdW5jdGlvbiIhPXR5cGVvZiBlLlpvbmUuX19zeW1ib2xfXyl0aHJvdyBuZXcgRXJyb3IoIlpvbmUgYWxyZWFkeSBsb2FkZWQuIik7cmV0dXJuIGUuWm9uZX12YXIgYSxpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLHQpe3RoaXMuX3BhcmVudD1lLHRoaXMuX25hbWU9dD90Lm5hbWV8fCJ1bm5hbWVkIjoiPHJvb3Q+Iix0aGlzLl9wcm9wZXJ0aWVzPXQmJnQucHJvcGVydGllc3x8e30sdGhpcy5fem9uZURlbGVnYXRlPW5ldyBzKHRoaXMsdGhpcy5fcGFyZW50JiZ0aGlzLl9wYXJlbnQuX3pvbmVEZWxlZ2F0ZSx0KX1yZXR1cm4gdC5hc3NlcnRab25lUGF0Y2hlZD1mdW5jdGlvbigpe2lmKGUuUHJvbWlzZSE9PVAuWm9uZUF3YXJlUHJvbWlzZSl0aHJvdyBuZXcgRXJyb3IoIlpvbmUuanMgaGFzIGRldGVjdGVkIHRoYXQgWm9uZUF3YXJlUHJvbWlzZSBgKHdpbmRvd3xnbG9iYWwpLlByb21pc2VgIGhhcyBiZWVuIG92ZXJ3cml0dGVuLlxuTW9zdCBsaWtlbHkgY2F1c2UgaXMgdGhhdCBhIFByb21pc2UgcG9seWZpbGwgaGFzIGJlZW4gbG9hZGVkIGFmdGVyIFpvbmUuanMgKFBvbHlmaWxsaW5nIFByb21pc2UgYXBpIGlzIG5vdCBuZWNlc3Nhcnkgd2hlbiB6b25lLmpzIGlzIGxvYWRlZC4gSWYgeW91IG11c3QgbG9hZCBvbmUsIGRvIHNvIGJlZm9yZSBsb2FkaW5nIHpvbmUuanMuKSIpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicm9vdCIse2dldDpmdW5jdGlvbigpe2Zvcih2YXIgZT10LmN1cnJlbnQ7ZS5wYXJlbnQ7KWU9ZS5wYXJlbnQ7cmV0dXJuIGV9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImN1cnJlbnQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWi56b25lfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJjdXJyZW50VGFzayIse2dldDpmdW5jdGlvbigpe3JldHVybiBqfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQuX19sb2FkX3BhdGNoPWZ1bmN0aW9uKGEsaSl7aWYoUC5oYXNPd25Qcm9wZXJ0eShhKSl7aWYobyl0aHJvdyBFcnJvcigiQWxyZWFkeSBsb2FkZWQgcGF0Y2g6ICIrYSl9ZWxzZSBpZighZVsiX19ab25lX2Rpc2FibGVfIithXSl7dmFyIGM9IlpvbmU6IithO24oYyksUFthXT1pKGUsdCxEKSxyKGMsYyl9fSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInBhcmVudCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXJlbnR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJuYW1lIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX25hbWV9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0Wm9uZVdpdGgoZSk7aWYodClyZXR1cm4gdC5fcHJvcGVydGllc1tlXX0sdC5wcm90b3R5cGUuZ2V0Wm9uZVdpdGg9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXM7dDspe2lmKHQuX3Byb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIHQ7dD10Ll9wYXJlbnR9cmV0dXJuIG51bGx9LHQucHJvdG90eXBlLmZvcms9ZnVuY3Rpb24oZSl7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJab25lU3BlYyByZXF1aXJlZCEiKTtyZXR1cm4gdGhpcy5fem9uZURlbGVnYXRlLmZvcmsodGhpcyxlKX0sdC5wcm90b3R5cGUud3JhcD1mdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcigiRXhwZWN0aW5nIGZ1bmN0aW9uIGdvdDogIitlKTt2YXIgbj10aGlzLl96b25lRGVsZWdhdGUuaW50ZXJjZXB0KHRoaXMsZSx0KSxyPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHIucnVuR3VhcmRlZChuLHRoaXMsYXJndW1lbnRzLHQpfX0sdC5wcm90b3R5cGUucnVuPWZ1bmN0aW9uKGUsdCxuLHIpe1o9e3BhcmVudDpaLHpvbmU6dGhpc307dHJ5e3JldHVybiB0aGlzLl96b25lRGVsZWdhdGUuaW52b2tlKHRoaXMsZSx0LG4scil9ZmluYWxseXtaPVoucGFyZW50fX0sdC5wcm90b3R5cGUucnVuR3VhcmRlZD1mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT10JiYodD1udWxsKSxaPXtwYXJlbnQ6Wix6b25lOnRoaXN9O3RyeXt0cnl7cmV0dXJuIHRoaXMuX3pvbmVEZWxlZ2F0ZS5pbnZva2UodGhpcyxlLHQsbixyKX1jYXRjaChvKXtpZih0aGlzLl96b25lRGVsZWdhdGUuaGFuZGxlRXJyb3IodGhpcyxvKSl0aHJvdyBvfX1maW5hbGx5e1o9Wi5wYXJlbnR9fSx0LnByb3RvdHlwZS5ydW5UYXNrPWZ1bmN0aW9uKGUsdCxuKXtpZihlLnpvbmUhPXRoaXMpdGhyb3cgbmV3IEVycm9yKCJBIHRhc2sgY2FuIG9ubHkgYmUgcnVuIGluIHRoZSB6b25lIG9mIGNyZWF0aW9uISAoQ3JlYXRpb246ICIrKGUuem9uZXx8ZykubmFtZSsiOyBFeGVjdXRpb246ICIrdGhpcy5uYW1lKyIpIik7aWYoZS5zdGF0ZSE9PV98fGUudHlwZSE9PVMmJmUudHlwZSE9PU8pe3ZhciByPWUuc3RhdGUhPWs7ciYmZS5fdHJhbnNpdGlvblRvKGssYiksZS5ydW5Db3VudCsrO3ZhciBvPWo7aj1lLFo9e3BhcmVudDpaLHpvbmU6dGhpc307dHJ5e2UudHlwZT09TyYmZS5kYXRhJiYhZS5kYXRhLmlzUGVyaW9kaWMmJihlLmNhbmNlbEZuPXZvaWQgMCk7dHJ5e3JldHVybiB0aGlzLl96b25lRGVsZWdhdGUuaW52b2tlVGFzayh0aGlzLGUsdCxuKX1jYXRjaChhKXtpZih0aGlzLl96b25lRGVsZWdhdGUuaGFuZGxlRXJyb3IodGhpcyxhKSl0aHJvdyBhfX1maW5hbGx5e2Uuc3RhdGUhPT1fJiZlLnN0YXRlIT09dyYmKGUudHlwZT09U3x8ZS5kYXRhJiZlLmRhdGEuaXNQZXJpb2RpYz9yJiZlLl90cmFuc2l0aW9uVG8oYixrKTooZS5ydW5Db3VudD0wLHRoaXMuX3VwZGF0ZVRhc2tDb3VudChlLC0xKSxyJiZlLl90cmFuc2l0aW9uVG8oXyxrLF8pKSksWj1aLnBhcmVudCxqPW99fX0sdC5wcm90b3R5cGUuc2NoZWR1bGVUYXNrPWZ1bmN0aW9uKGUpe2lmKGUuem9uZSYmZS56b25lIT09dGhpcylmb3IodmFyIHQ9dGhpczt0Oyl7aWYodD09PWUuem9uZSl0aHJvdyBFcnJvcigiY2FuIG5vdCByZXNjaGVkdWxlIHRhc2sgdG8gIit0aGlzLm5hbWUrIiB3aGljaCBpcyBkZXNjZW5kYW50cyBvZiB0aGUgb3JpZ2luYWwgem9uZSAiK2Uuem9uZS5uYW1lKTt0PXQucGFyZW50fWUuX3RyYW5zaXRpb25UbyhtLF8pO3ZhciBuPVtdO2UuX3pvbmVEZWxlZ2F0ZXM9bixlLl96b25lPXRoaXM7dHJ5e2U9dGhpcy5fem9uZURlbGVnYXRlLnNjaGVkdWxlVGFzayh0aGlzLGUpfWNhdGNoKHIpe3Rocm93IGUuX3RyYW5zaXRpb25Ubyh3LG0sXyksdGhpcy5fem9uZURlbGVnYXRlLmhhbmRsZUVycm9yKHRoaXMscikscn1yZXR1cm4gZS5fem9uZURlbGVnYXRlcz09PW4mJnRoaXMuX3VwZGF0ZVRhc2tDb3VudChlLDEpLGUuc3RhdGU9PW0mJmUuX3RyYW5zaXRpb25UbyhiLG0pLGV9LHQucHJvdG90eXBlLnNjaGVkdWxlTWljcm9UYXNrPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiB0aGlzLnNjaGVkdWxlVGFzayhuZXcgdShFLGUsdCxuLHIsdm9pZCAwKSl9LHQucHJvdG90eXBlLnNjaGVkdWxlTWFjcm9UYXNrPWZ1bmN0aW9uKGUsdCxuLHIsbyl7cmV0dXJuIHRoaXMuc2NoZWR1bGVUYXNrKG5ldyB1KE8sZSx0LG4scixvKSl9LHQucHJvdG90eXBlLnNjaGVkdWxlRXZlbnRUYXNrPWZ1bmN0aW9uKGUsdCxuLHIsbyl7cmV0dXJuIHRoaXMuc2NoZWR1bGVUYXNrKG5ldyB1KFMsZSx0LG4scixvKSl9LHQucHJvdG90eXBlLmNhbmNlbFRhc2s9ZnVuY3Rpb24oZSl7aWYoZS56b25lIT10aGlzKXRocm93IG5ldyBFcnJvcigiQSB0YXNrIGNhbiBvbmx5IGJlIGNhbmNlbGxlZCBpbiB0aGUgem9uZSBvZiBjcmVhdGlvbiEgKENyZWF0aW9uOiAiKyhlLnpvbmV8fGcpLm5hbWUrIjsgRXhlY3V0aW9uOiAiK3RoaXMubmFtZSsiKSIpO2UuX3RyYW5zaXRpb25UbyhULGIsayk7dHJ5e3RoaXMuX3pvbmVEZWxlZ2F0ZS5jYW5jZWxUYXNrKHRoaXMsZSl9Y2F0Y2godCl7dGhyb3cgZS5fdHJhbnNpdGlvblRvKHcsVCksdGhpcy5fem9uZURlbGVnYXRlLmhhbmRsZUVycm9yKHRoaXMsdCksdH1yZXR1cm4gdGhpcy5fdXBkYXRlVGFza0NvdW50KGUsLTEpLGUuX3RyYW5zaXRpb25UbyhfLFQpLGUucnVuQ291bnQ9MCxlfSx0LnByb3RvdHlwZS5fdXBkYXRlVGFza0NvdW50PWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5fem9uZURlbGVnYXRlczstMT09dCYmKGUuX3pvbmVEZWxlZ2F0ZXM9bnVsbCk7Zm9yKHZhciByPTA7cjxuLmxlbmd0aDtyKyspbltyXS5fdXBkYXRlVGFza0NvdW50KGUudHlwZSx0KX0sdC5fX3N5bWJvbF9fPUksdH0oKSxjPXtuYW1lOiIiLG9uSGFzVGFzazpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gZS5oYXNUYXNrKG4scil9LG9uU2NoZWR1bGVUYXNrOmZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBlLnNjaGVkdWxlVGFzayhuLHIpfSxvbkludm9rZVRhc2s6ZnVuY3Rpb24oZSx0LG4scixvLGEpe3JldHVybiBlLmludm9rZVRhc2sobixyLG8sYSl9LG9uQ2FuY2VsVGFzazpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gZS5jYW5jZWxUYXNrKG4scil9fSxzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsbil7dGhpcy5fdGFza0NvdW50cz17bWljcm9UYXNrOjAsbWFjcm9UYXNrOjAsZXZlbnRUYXNrOjB9LHRoaXMuem9uZT1lLHRoaXMuX3BhcmVudERlbGVnYXRlPXQsdGhpcy5fZm9ya1pTPW4mJihuJiZuLm9uRm9yaz9uOnQuX2ZvcmtaUyksdGhpcy5fZm9ya0RsZ3Q9biYmKG4ub25Gb3JrP3Q6dC5fZm9ya0RsZ3QpLHRoaXMuX2ZvcmtDdXJyWm9uZT1uJiYobi5vbkZvcms/dGhpcy56b25lOnQuem9uZSksdGhpcy5faW50ZXJjZXB0WlM9biYmKG4ub25JbnRlcmNlcHQ/bjp0Ll9pbnRlcmNlcHRaUyksdGhpcy5faW50ZXJjZXB0RGxndD1uJiYobi5vbkludGVyY2VwdD90OnQuX2ludGVyY2VwdERsZ3QpLHRoaXMuX2ludGVyY2VwdEN1cnJab25lPW4mJihuLm9uSW50ZXJjZXB0P3RoaXMuem9uZTp0LnpvbmUpLHRoaXMuX2ludm9rZVpTPW4mJihuLm9uSW52b2tlP246dC5faW52b2tlWlMpLHRoaXMuX2ludm9rZURsZ3Q9biYmKG4ub25JbnZva2U/dDp0Ll9pbnZva2VEbGd0KSx0aGlzLl9pbnZva2VDdXJyWm9uZT1uJiYobi5vbkludm9rZT90aGlzLnpvbmU6dC56b25lKSx0aGlzLl9oYW5kbGVFcnJvclpTPW4mJihuLm9uSGFuZGxlRXJyb3I/bjp0Ll9oYW5kbGVFcnJvclpTKSx0aGlzLl9oYW5kbGVFcnJvckRsZ3Q9biYmKG4ub25IYW5kbGVFcnJvcj90OnQuX2hhbmRsZUVycm9yRGxndCksdGhpcy5faGFuZGxlRXJyb3JDdXJyWm9uZT1uJiYobi5vbkhhbmRsZUVycm9yP3RoaXMuem9uZTp0LnpvbmUpLHRoaXMuX3NjaGVkdWxlVGFza1pTPW4mJihuLm9uU2NoZWR1bGVUYXNrP246dC5fc2NoZWR1bGVUYXNrWlMpLHRoaXMuX3NjaGVkdWxlVGFza0RsZ3Q9biYmKG4ub25TY2hlZHVsZVRhc2s/dDp0Ll9zY2hlZHVsZVRhc2tEbGd0KSx0aGlzLl9zY2hlZHVsZVRhc2tDdXJyWm9uZT1uJiYobi5vblNjaGVkdWxlVGFzaz90aGlzLnpvbmU6dC56b25lKSx0aGlzLl9pbnZva2VUYXNrWlM9biYmKG4ub25JbnZva2VUYXNrP246dC5faW52b2tlVGFza1pTKSx0aGlzLl9pbnZva2VUYXNrRGxndD1uJiYobi5vbkludm9rZVRhc2s/dDp0Ll9pbnZva2VUYXNrRGxndCksdGhpcy5faW52b2tlVGFza0N1cnJab25lPW4mJihuLm9uSW52b2tlVGFzaz90aGlzLnpvbmU6dC56b25lKSx0aGlzLl9jYW5jZWxUYXNrWlM9biYmKG4ub25DYW5jZWxUYXNrP246dC5fY2FuY2VsVGFza1pTKSx0aGlzLl9jYW5jZWxUYXNrRGxndD1uJiYobi5vbkNhbmNlbFRhc2s/dDp0Ll9jYW5jZWxUYXNrRGxndCksdGhpcy5fY2FuY2VsVGFza0N1cnJab25lPW4mJihuLm9uQ2FuY2VsVGFzaz90aGlzLnpvbmU6dC56b25lKSx0aGlzLl9oYXNUYXNrWlM9bnVsbCx0aGlzLl9oYXNUYXNrRGxndD1udWxsLHRoaXMuX2hhc1Rhc2tEbGd0T3duZXI9bnVsbCx0aGlzLl9oYXNUYXNrQ3VyclpvbmU9bnVsbDt2YXIgcj1uJiZuLm9uSGFzVGFzazsocnx8dCYmdC5faGFzVGFza1pTKSYmKHRoaXMuX2hhc1Rhc2taUz1yP246Yyx0aGlzLl9oYXNUYXNrRGxndD10LHRoaXMuX2hhc1Rhc2tEbGd0T3duZXI9dGhpcyx0aGlzLl9oYXNUYXNrQ3VyclpvbmU9ZSxuLm9uU2NoZWR1bGVUYXNrfHwodGhpcy5fc2NoZWR1bGVUYXNrWlM9Yyx0aGlzLl9zY2hlZHVsZVRhc2tEbGd0PXQsdGhpcy5fc2NoZWR1bGVUYXNrQ3VyclpvbmU9dGhpcy56b25lKSxuLm9uSW52b2tlVGFza3x8KHRoaXMuX2ludm9rZVRhc2taUz1jLHRoaXMuX2ludm9rZVRhc2tEbGd0PXQsdGhpcy5faW52b2tlVGFza0N1cnJab25lPXRoaXMuem9uZSksbi5vbkNhbmNlbFRhc2t8fCh0aGlzLl9jYW5jZWxUYXNrWlM9Yyx0aGlzLl9jYW5jZWxUYXNrRGxndD10LHRoaXMuX2NhbmNlbFRhc2tDdXJyWm9uZT10aGlzLnpvbmUpKX1yZXR1cm4gZS5wcm90b3R5cGUuZm9yaz1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl9mb3JrWlM/dGhpcy5fZm9ya1pTLm9uRm9yayh0aGlzLl9mb3JrRGxndCx0aGlzLnpvbmUsZSx0KTpuZXcgaShlLHQpfSxlLnByb3RvdHlwZS5pbnRlcmNlcHQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLl9pbnRlcmNlcHRaUz90aGlzLl9pbnRlcmNlcHRaUy5vbkludGVyY2VwdCh0aGlzLl9pbnRlcmNlcHREbGd0LHRoaXMuX2ludGVyY2VwdEN1cnJab25lLGUsdCxuKTp0fSxlLnByb3RvdHlwZS5pbnZva2U9ZnVuY3Rpb24oZSx0LG4scixvKXtyZXR1cm4gdGhpcy5faW52b2tlWlM/dGhpcy5faW52b2tlWlMub25JbnZva2UodGhpcy5faW52b2tlRGxndCx0aGlzLl9pbnZva2VDdXJyWm9uZSxlLHQsbixyLG8pOnQuYXBwbHkobixyKX0sZS5wcm90b3R5cGUuaGFuZGxlRXJyb3I9ZnVuY3Rpb24oZSx0KXtyZXR1cm4hdGhpcy5faGFuZGxlRXJyb3JaU3x8dGhpcy5faGFuZGxlRXJyb3JaUy5vbkhhbmRsZUVycm9yKHRoaXMuX2hhbmRsZUVycm9yRGxndCx0aGlzLl9oYW5kbGVFcnJvckN1cnJab25lLGUsdCl9LGUucHJvdG90eXBlLnNjaGVkdWxlVGFzaz1mdW5jdGlvbihlLHQpe3ZhciBuPXQ7aWYodGhpcy5fc2NoZWR1bGVUYXNrWlMpdGhpcy5faGFzVGFza1pTJiZuLl96b25lRGVsZWdhdGVzLnB1c2godGhpcy5faGFzVGFza0RsZ3RPd25lciksKG49dGhpcy5fc2NoZWR1bGVUYXNrWlMub25TY2hlZHVsZVRhc2sodGhpcy5fc2NoZWR1bGVUYXNrRGxndCx0aGlzLl9zY2hlZHVsZVRhc2tDdXJyWm9uZSxlLHQpKXx8KG49dCk7ZWxzZSBpZih0LnNjaGVkdWxlRm4pdC5zY2hlZHVsZUZuKHQpO2Vsc2V7aWYodC50eXBlIT1FKXRocm93IG5ldyBFcnJvcigiVGFzayBpcyBtaXNzaW5nIHNjaGVkdWxlRm4uIik7dih0KX1yZXR1cm4gbn0sZS5wcm90b3R5cGUuaW52b2tlVGFzaz1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gdGhpcy5faW52b2tlVGFza1pTP3RoaXMuX2ludm9rZVRhc2taUy5vbkludm9rZVRhc2sodGhpcy5faW52b2tlVGFza0RsZ3QsdGhpcy5faW52b2tlVGFza0N1cnJab25lLGUsdCxuLHIpOnQuY2FsbGJhY2suYXBwbHkobixyKX0sZS5wcm90b3R5cGUuY2FuY2VsVGFzaz1mdW5jdGlvbihlLHQpe3ZhciBuO2lmKHRoaXMuX2NhbmNlbFRhc2taUyluPXRoaXMuX2NhbmNlbFRhc2taUy5vbkNhbmNlbFRhc2sodGhpcy5fY2FuY2VsVGFza0RsZ3QsdGhpcy5fY2FuY2VsVGFza0N1cnJab25lLGUsdCk7ZWxzZXtpZighdC5jYW5jZWxGbil0aHJvdyBFcnJvcigiVGFzayBpcyBub3QgY2FuY2VsYWJsZSIpO249dC5jYW5jZWxGbih0KX1yZXR1cm4gbn0sZS5wcm90b3R5cGUuaGFzVGFzaz1mdW5jdGlvbihlLHQpe3RyeXt0aGlzLl9oYXNUYXNrWlMmJnRoaXMuX2hhc1Rhc2taUy5vbkhhc1Rhc2sodGhpcy5faGFzVGFza0RsZ3QsdGhpcy5faGFzVGFza0N1cnJab25lLGUsdCl9Y2F0Y2gobil7dGhpcy5oYW5kbGVFcnJvcihlLG4pfX0sZS5wcm90b3R5cGUuX3VwZGF0ZVRhc2tDb3VudD1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX3Rhc2tDb3VudHMscj1uW2VdLG89bltlXT1yK3Q7aWYobzwwKXRocm93IG5ldyBFcnJvcigiTW9yZSB0YXNrcyBleGVjdXRlZCB0aGVuIHdlcmUgc2NoZWR1bGVkLiIpOzAhPXImJjAhPW98fHRoaXMuaGFzVGFzayh0aGlzLnpvbmUse21pY3JvVGFzazpuLm1pY3JvVGFzaz4wLG1hY3JvVGFzazpuLm1hY3JvVGFzaz4wLGV2ZW50VGFzazpuLmV2ZW50VGFzaz4wLGNoYW5nZTplfSl9LGV9KCksdT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQobixyLG8sYSxpLGMpe3RoaXMuX3pvbmU9bnVsbCx0aGlzLnJ1bkNvdW50PTAsdGhpcy5fem9uZURlbGVnYXRlcz1udWxsLHRoaXMuX3N0YXRlPSJub3RTY2hlZHVsZWQiLHRoaXMudHlwZT1uLHRoaXMuc291cmNlPXIsdGhpcy5kYXRhPWEsdGhpcy5zY2hlZHVsZUZuPWksdGhpcy5jYW5jZWxGbj1jLHRoaXMuY2FsbGJhY2s9bzt2YXIgcz10aGlzO3RoaXMuaW52b2tlPW49PT1TJiZhJiZhLnVzZUc/dC5pbnZva2VUYXNrOmZ1bmN0aW9uKCl7cmV0dXJuIHQuaW52b2tlVGFzay5jYWxsKGUscyx0aGlzLGFyZ3VtZW50cyl9fXJldHVybiB0Lmludm9rZVRhc2s9ZnVuY3Rpb24oZSx0LG4pe2V8fChlPXRoaXMpLHorKzt0cnl7cmV0dXJuIGUucnVuQ291bnQrKyxlLnpvbmUucnVuVGFzayhlLHQsbil9ZmluYWxseXsxPT16JiZ5KCksei0tfX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ6b25lIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3pvbmV9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJzdGF0ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdGF0ZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5jYW5jZWxTY2hlZHVsZVJlcXVlc3Q9ZnVuY3Rpb24oKXt0aGlzLl90cmFuc2l0aW9uVG8oXyxtKX0sdC5wcm90b3R5cGUuX3RyYW5zaXRpb25Ubz1mdW5jdGlvbihlLHQsbil7aWYodGhpcy5fc3RhdGUhPT10JiZ0aGlzLl9zdGF0ZSE9PW4pdGhyb3cgbmV3IEVycm9yKHRoaXMudHlwZSsiICciK3RoaXMuc291cmNlKyInOiBjYW4gbm90IHRyYW5zaXRpb24gdG8gJyIrZSsiJywgZXhwZWN0aW5nIHN0YXRlICciK3QrIiciKyhuPyIgb3IgJyIrbisiJyI6IiIpKyIsIHdhcyAnIit0aGlzLl9zdGF0ZSsiJy4iKTt0aGlzLl9zdGF0ZT1lLGU9PV8mJih0aGlzLl96b25lRGVsZWdhdGVzPW51bGwpfSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGEmJnZvaWQgMCE9PXRoaXMuZGF0YS5oYW5kbGVJZD90aGlzLmRhdGEuaGFuZGxlSWQudG9TdHJpbmcoKTpPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodGhpcyl9LHQucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybnt0eXBlOnRoaXMudHlwZSxzdGF0ZTp0aGlzLnN0YXRlLHNvdXJjZTp0aGlzLnNvdXJjZSx6b25lOnRoaXMuem9uZS5uYW1lLHJ1bkNvdW50OnRoaXMucnVuQ291bnR9fSx0fSgpLGw9SSgic2V0VGltZW91dCIpLGY9SSgiUHJvbWlzZSIpLHA9SSgidGhlbiIpLGg9W10sZD0hMTtmdW5jdGlvbiB2KHQpe2lmKDA9PT16JiYwPT09aC5sZW5ndGgpaWYoYXx8ZVtmXSYmKGE9ZVtmXS5yZXNvbHZlKDApKSxhKXt2YXIgbj1hW3BdO258fChuPWEudGhlbiksbi5jYWxsKGEseSl9ZWxzZSBlW2xdKHksMCk7dCYmaC5wdXNoKHQpfWZ1bmN0aW9uIHkoKXtpZighZCl7Zm9yKGQ9ITA7aC5sZW5ndGg7KXt2YXIgZT1oO2g9W107Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0Kyspe3ZhciBuPWVbdF07dHJ5e24uem9uZS5ydW5UYXNrKG4sbnVsbCxudWxsKX1jYXRjaChyKXtELm9uVW5oYW5kbGVkRXJyb3Iocil9fX1ELm1pY3JvdGFza0RyYWluRG9uZSgpLGQ9ITF9fXZhciBnPXtuYW1lOiJOTyBaT05FIn0sXz0ibm90U2NoZWR1bGVkIixtPSJzY2hlZHVsaW5nIixiPSJzY2hlZHVsZWQiLGs9InJ1bm5pbmciLFQ9ImNhbmNlbGluZyIsdz0idW5rbm93biIsRT0ibWljcm9UYXNrIixPPSJtYWNyb1Rhc2siLFM9ImV2ZW50VGFzayIsUD17fSxEPXtzeW1ib2w6SSxjdXJyZW50Wm9uZUZyYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIFp9LG9uVW5oYW5kbGVkRXJyb3I6QyxtaWNyb3Rhc2tEcmFpbkRvbmU6QyxzY2hlZHVsZU1pY3JvVGFzazp2LHNob3dVbmNhdWdodEVycm9yOmZ1bmN0aW9uKCl7cmV0dXJuIWlbSSgiaWdub3JlQ29uc29sZUVycm9yVW5jYXVnaHRFcnJvciIpXX0scGF0Y2hFdmVudFRhcmdldDpmdW5jdGlvbigpe3JldHVybltdfSxwYXRjaE9uUHJvcGVydGllczpDLHBhdGNoTWV0aG9kOmZ1bmN0aW9uKCl7cmV0dXJuIEN9LGJpbmRBcmd1bWVudHM6ZnVuY3Rpb24oKXtyZXR1cm5bXX0scGF0Y2hUaGVuOmZ1bmN0aW9uKCl7cmV0dXJuIEN9LHBhdGNoTWFjcm9UYXNrOmZ1bmN0aW9uKCl7cmV0dXJuIEN9LHNldE5hdGl2ZVByb21pc2U6ZnVuY3Rpb24oZSl7ZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUucmVzb2x2ZSYmKGE9ZS5yZXNvbHZlKDApKX0scGF0Y2hFdmVudFByb3RvdHlwZTpmdW5jdGlvbigpe3JldHVybiBDfSxpc0lFT3JFZGdlOmZ1bmN0aW9uKCl7cmV0dXJuITF9LGdldEdsb2JhbE9iamVjdHM6ZnVuY3Rpb24oKXt9LE9iamVjdERlZmluZVByb3BlcnR5OmZ1bmN0aW9uKCl7cmV0dXJuIEN9LE9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcjpmdW5jdGlvbigpe30sT2JqZWN0Q3JlYXRlOmZ1bmN0aW9uKCl7fSxBcnJheVNsaWNlOmZ1bmN0aW9uKCl7cmV0dXJuW119LHBhdGNoQ2xhc3M6ZnVuY3Rpb24oKXtyZXR1cm4gQ30sd3JhcFdpdGhDdXJyZW50Wm9uZTpmdW5jdGlvbigpe3JldHVybiBDfSxmaWx0ZXJQcm9wZXJ0aWVzOmZ1bmN0aW9uKCl7cmV0dXJuW119LGF0dGFjaE9yaWdpblRvUGF0Y2hlZDpmdW5jdGlvbigpe3JldHVybiBDfSxfcmVkZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbigpe3JldHVybiBDfSxwYXRjaENhbGxiYWNrczpmdW5jdGlvbigpe3JldHVybiBDfX0sWj17cGFyZW50Om51bGwsem9uZTpuZXcgaShudWxsLG51bGwpfSxqPW51bGwsej0wO2Z1bmN0aW9uIEMoKXt9ZnVuY3Rpb24gSShlKXtyZXR1cm4iX196b25lX3N5bWJvbF9fIitlfXIoIlpvbmUiLCJab25lIiksZS5ab25lPWl9KCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3d8fCJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZiYmc2VsZnx8Z2xvYmFsKSxab25lLl9fbG9hZF9wYXRjaCgiWm9uZUF3YXJlUHJvbWlzZSIsKGZ1bmN0aW9uKGUsdCxuKXt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLGE9T2JqZWN0LmRlZmluZVByb3BlcnR5LGk9bi5zeW1ib2wsYz1bXSxzPWkoIlByb21pc2UiKSx1PWkoInRoZW4iKSxsPSJfX2NyZWF0aW9uVHJhY2VfXyI7bi5vblVuaGFuZGxlZEVycm9yPWZ1bmN0aW9uKGUpe2lmKG4uc2hvd1VuY2F1Z2h0RXJyb3IoKSl7dmFyIHQ9ZSYmZS5yZWplY3Rpb247dD9jb25zb2xlLmVycm9yKCJVbmhhbmRsZWQgUHJvbWlzZSByZWplY3Rpb246Iix0IGluc3RhbmNlb2YgRXJyb3I/dC5tZXNzYWdlOnQsIjsgWm9uZToiLGUuem9uZS5uYW1lLCI7IFRhc2s6IixlLnRhc2smJmUudGFzay5zb3VyY2UsIjsgVmFsdWU6Iix0LHQgaW5zdGFuY2VvZiBFcnJvcj90LnN0YWNrOnZvaWQgMCk6Y29uc29sZS5lcnJvcihlKX19LG4ubWljcm90YXNrRHJhaW5Eb25lPWZ1bmN0aW9uKCl7Zm9yKDtjLmxlbmd0aDspZm9yKHZhciBlPWZ1bmN0aW9uKCl7dmFyIGU9Yy5zaGlmdCgpO3RyeXtlLnpvbmUucnVuR3VhcmRlZCgoZnVuY3Rpb24oKXt0aHJvdyBlfSkpfWNhdGNoKHQpe3AodCl9fTtjLmxlbmd0aDspZSgpfTt2YXIgZj1pKCJ1bmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uSGFuZGxlciIpO2Z1bmN0aW9uIHAoZSl7bi5vblVuaGFuZGxlZEVycm9yKGUpO3RyeXt2YXIgcj10W2ZdO3ImJiJmdW5jdGlvbiI9PXR5cGVvZiByJiZyLmNhbGwodGhpcyxlKX1jYXRjaChvKXt9fWZ1bmN0aW9uIGgoZSl7cmV0dXJuIGUmJmUudGhlbn1mdW5jdGlvbiBkKGUpe3JldHVybiBlfWZ1bmN0aW9uIHYoZSl7cmV0dXJuIFIucmVqZWN0KGUpfXZhciB5PWkoInN0YXRlIiksZz1pKCJ2YWx1ZSIpLF89aSgiZmluYWxseSIpLG09aSgicGFyZW50UHJvbWlzZVZhbHVlIiksYj1pKCJwYXJlbnRQcm9taXNlU3RhdGUiKSxrPSJQcm9taXNlLnRoZW4iLFQ9bnVsbCx3PSEwLEU9ITEsTz0wO2Z1bmN0aW9uIFMoZSx0KXtyZXR1cm4gZnVuY3Rpb24obil7dHJ5e2ooZSx0LG4pfWNhdGNoKHIpe2ooZSwhMSxyKX19fXZhciBQPWZ1bmN0aW9uKCl7dmFyIGU9ITE7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe2V8fChlPSEwLHQuYXBwbHkobnVsbCxhcmd1bWVudHMpKX19fSxEPSJQcm9taXNlIHJlc29sdmVkIHdpdGggaXRzZWxmIixaPWkoImN1cnJlbnRUYXNrVHJhY2UiKTtmdW5jdGlvbiBqKGUscixvKXt2YXIgaSxzPVAoKTtpZihlPT09byl0aHJvdyBuZXcgVHlwZUVycm9yKEQpO2lmKGVbeV09PT1UKXt2YXIgdT1udWxsO3RyeXsib2JqZWN0IiE9dHlwZW9mIG8mJiJmdW5jdGlvbiIhPXR5cGVvZiBvfHwodT1vJiZvLnRoZW4pfWNhdGNoKHYpe3JldHVybiBzKChmdW5jdGlvbigpe2ooZSwhMSx2KX0pKSgpLGV9aWYociE9PUUmJm8gaW5zdGFuY2VvZiBSJiZvLmhhc093blByb3BlcnR5KHkpJiZvLmhhc093blByb3BlcnR5KGcpJiZvW3ldIT09VClDKG8pLGooZSxvW3ldLG9bZ10pO2Vsc2UgaWYociE9PUUmJiJmdW5jdGlvbiI9PXR5cGVvZiB1KXRyeXt1LmNhbGwobyxzKFMoZSxyKSkscyhTKGUsITEpKSl9Y2F0Y2godil7cygoZnVuY3Rpb24oKXtqKGUsITEsdil9KSkoKX1lbHNle2VbeV09cjt2YXIgZj1lW2ddO2lmKGVbZ109byxlW19dPT09XyYmcj09PXcmJihlW3ldPWVbYl0sZVtnXT1lW21dKSxyPT09RSYmbyBpbnN0YW5jZW9mIEVycm9yKXt2YXIgcD10LmN1cnJlbnRUYXNrJiZ0LmN1cnJlbnRUYXNrLmRhdGEmJnQuY3VycmVudFRhc2suZGF0YVtsXTtwJiZhKG8sWix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsdmFsdWU6cH0pfWZvcih2YXIgaD0wO2g8Zi5sZW5ndGg7KUkoZSxmW2grK10sZltoKytdLGZbaCsrXSxmW2grK10pO2lmKDA9PWYubGVuZ3RoJiZyPT1FKXtlW3ldPU87dHJ5e3Rocm93IG5ldyBFcnJvcigiVW5jYXVnaHQgKGluIHByb21pc2UpOiAiKygoaT1vKSYmaS50b1N0cmluZz09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc/KGkuY29uc3RydWN0b3ImJmkuY29uc3RydWN0b3IubmFtZXx8IiIpKyI6ICIrSlNPTi5zdHJpbmdpZnkoaSk6aT9pLnRvU3RyaW5nKCk6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGkpKSsobyYmby5zdGFjaz8iXG4iK28uc3RhY2s6IiIpKX1jYXRjaCh2KXt2YXIgZD12O2QucmVqZWN0aW9uPW8sZC5wcm9taXNlPWUsZC56b25lPXQuY3VycmVudCxkLnRhc2s9dC5jdXJyZW50VGFzayxjLnB1c2goZCksbi5zY2hlZHVsZU1pY3JvVGFzaygpfX19fXJldHVybiBlfXZhciB6PWkoInJlamVjdGlvbkhhbmRsZWRIYW5kbGVyIik7ZnVuY3Rpb24gQyhlKXtpZihlW3ldPT09Tyl7dHJ5e3ZhciBuPXRbel07biYmImZ1bmN0aW9uIj09dHlwZW9mIG4mJm4uY2FsbCh0aGlzLHtyZWplY3Rpb246ZVtnXSxwcm9taXNlOmV9KX1jYXRjaChvKXt9ZVt5XT1FO2Zvcih2YXIgcj0wO3I8Yy5sZW5ndGg7cisrKWU9PT1jW3JdLnByb21pc2UmJmMuc3BsaWNlKHIsMSl9fWZ1bmN0aW9uIEkoZSx0LG4scixvKXtDKGUpO3ZhciBhPWVbeV0saT1hPyJmdW5jdGlvbiI9PXR5cGVvZiByP3I6ZDoiZnVuY3Rpb24iPT10eXBlb2Ygbz9vOnY7dC5zY2hlZHVsZU1pY3JvVGFzayhrLChmdW5jdGlvbigpe3RyeXt2YXIgcj1lW2ddLG89biYmXz09PW5bX107byYmKG5bbV09cixuW2JdPWEpO3ZhciBjPXQucnVuKGksdm9pZCAwLG8mJmkhPT12JiZpIT09ZD9bXTpbcl0pO2oobiwhMCxjKX1jYXRjaChzKXtqKG4sITEscyl9fSksbil9dmFyIFI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe2lmKCEodGhpcyBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBFcnJvcigiTXVzdCBiZSBhbiBpbnN0YW5jZW9mIFByb21pc2UuIik7dGhpc1t5XT1ULHRoaXNbZ109W107dHJ5e3QmJnQoUyh0aGlzLHcpLFModGhpcyxFKSl9Y2F0Y2gobil7aih0aGlzLCExLG4pfX1yZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJmdW5jdGlvbiBab25lQXdhcmVQcm9taXNlKCkgeyBbbmF0aXZlIGNvZGVdIH0ifSxlLnJlc29sdmU9ZnVuY3Rpb24oZSl7cmV0dXJuIGoobmV3IHRoaXMobnVsbCksdyxlKX0sZS5yZWplY3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIGoobmV3IHRoaXMobnVsbCksRSxlKX0sZS5yYWNlPWZ1bmN0aW9uKGUpe3ZhciB0LG4sbyxhLGk9bmV3IHRoaXMoKGZ1bmN0aW9uKGUsdCl7bz1lLGE9dH0pKTtmdW5jdGlvbiBjKGUpe28oZSl9ZnVuY3Rpb24gcyhlKXthKGUpfXRyeXtmb3IodmFyIHU9cihlKSxsPXUubmV4dCgpOyFsLmRvbmU7bD11Lm5leHQoKSl7dmFyIGY9bC52YWx1ZTtoKGYpfHwoZj10aGlzLnJlc29sdmUoZikpLGYudGhlbihjLHMpfX1jYXRjaChwKXt0PXtlcnJvcjpwfX1maW5hbGx5e3RyeXtsJiYhbC5kb25lJiYobj11LnJldHVybikmJm4uY2FsbCh1KX1maW5hbGx5e2lmKHQpdGhyb3cgdC5lcnJvcn19cmV0dXJuIGl9LGUuYWxsPWZ1bmN0aW9uKGUpe3ZhciB0LG4sbyxhLGk9bmV3IHRoaXMoKGZ1bmN0aW9uKGUsdCl7bz1lLGE9dH0pKSxjPTIscz0wLHU9W10sbD1mdW5jdGlvbihlKXtoKGUpfHwoZT1mLnJlc29sdmUoZSkpO3ZhciB0PXM7ZS50aGVuKChmdW5jdGlvbihlKXt1W3RdPWUsMD09LS1jJiZvKHUpfSksYSksYysrLHMrK30sZj10aGlzO3RyeXtmb3IodmFyIHA9cihlKSxkPXAubmV4dCgpOyFkLmRvbmU7ZD1wLm5leHQoKSlsKGQudmFsdWUpfWNhdGNoKHYpe3Q9e2Vycm9yOnZ9fWZpbmFsbHl7dHJ5e2QmJiFkLmRvbmUmJihuPXAucmV0dXJuKSYmbi5jYWxsKHApfWZpbmFsbHl7aWYodCl0aHJvdyB0LmVycm9yfX1yZXR1cm4gMD09KGMtPTIpJiZvKHUpLGl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxTeW1ib2wudG9TdHJpbmdUYWcse2dldDpmdW5jdGlvbigpe3JldHVybiJQcm9taXNlIn0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKGUsbil7dmFyIHI9bmV3IHRoaXMuY29uc3RydWN0b3IobnVsbCksbz10LmN1cnJlbnQ7cmV0dXJuIHRoaXNbeV09PVQ/dGhpc1tnXS5wdXNoKG8scixlLG4pOkkodGhpcyxvLHIsZSxuKSxyfSxlLnByb3RvdHlwZS5jYXRjaD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy50aGVuKG51bGwsZSl9LGUucHJvdG90eXBlLmZpbmFsbHk9ZnVuY3Rpb24oZSl7dmFyIG49bmV3IHRoaXMuY29uc3RydWN0b3IobnVsbCk7bltfXT1fO3ZhciByPXQuY3VycmVudDtyZXR1cm4gdGhpc1t5XT09VD90aGlzW2ddLnB1c2gocixuLGUsZSk6SSh0aGlzLHIsbixlLGUpLG59LGV9KCk7Ui5yZXNvbHZlPVIucmVzb2x2ZSxSLnJlamVjdD1SLnJlamVjdCxSLnJhY2U9Ui5yYWNlLFIuYWxsPVIuYWxsO3ZhciB4PWVbc109ZS5Qcm9taXNlLE09dC5fX3N5bWJvbF9fKCJab25lQXdhcmVQcm9taXNlIiksTD1vKGUsIlByb21pc2UiKTtMJiYhTC5jb25maWd1cmFibGV8fChMJiZkZWxldGUgTC53cml0YWJsZSxMJiZkZWxldGUgTC52YWx1ZSxMfHwoTD17Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITB9KSxMLmdldD1mdW5jdGlvbigpe3JldHVybiBlW01dP2VbTV06ZVtzXX0sTC5zZXQ9ZnVuY3Rpb24odCl7dD09PVI/ZVtNXT10OihlW3NdPXQsdC5wcm90b3R5cGVbdV18fEEodCksbi5zZXROYXRpdmVQcm9taXNlKHQpKX0sYShlLCJQcm9taXNlIixMKSksZS5Qcm9taXNlPVI7dmFyIE4sRj1pKCJ0aGVuUGF0Y2hlZCIpO2Z1bmN0aW9uIEEoZSl7dmFyIHQ9ZS5wcm90b3R5cGUsbj1vKHQsInRoZW4iKTtpZighbnx8ITEhPT1uLndyaXRhYmxlJiZuLmNvbmZpZ3VyYWJsZSl7dmFyIHI9dC50aGVuO3RbdV09cixlLnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcztyZXR1cm4gbmV3IFIoKGZ1bmN0aW9uKGUsdCl7ci5jYWxsKG4sZSx0KX0pKS50aGVuKGUsdCl9LGVbRl09ITB9fWlmKG4ucGF0Y2hUaGVuPUEseCl7QSh4KTt2YXIgSD1lLmZldGNoOyJmdW5jdGlvbiI9PXR5cGVvZiBIJiYoZVtuLnN5bWJvbCgiZmV0Y2giKV09SCxlLmZldGNoPShOPUgsZnVuY3Rpb24oKXt2YXIgZT1OLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZihlIGluc3RhbmNlb2YgUilyZXR1cm4gZTt2YXIgdD1lLmNvbnN0cnVjdG9yO3JldHVybiB0W0ZdfHxBKHQpLGV9KSl9cmV0dXJuIFByb21pc2VbdC5fX3N5bWJvbF9fKCJ1bmNhdWdodFByb21pc2VFcnJvcnMiKV09YyxSfSkpO3ZhciBlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsdD1PYmplY3QuZGVmaW5lUHJvcGVydHksbj1PYmplY3QuZ2V0UHJvdG90eXBlT2Ysbz1PYmplY3QuY3JlYXRlLGE9QXJyYXkucHJvdG90eXBlLnNsaWNlLGk9ImFkZEV2ZW50TGlzdGVuZXIiLGM9InJlbW92ZUV2ZW50TGlzdGVuZXIiLHM9Wm9uZS5fX3N5bWJvbF9fKGkpLHU9Wm9uZS5fX3N5bWJvbF9fKGMpLGw9InRydWUiLGY9ImZhbHNlIixwPSJfX3pvbmVfc3ltYm9sX18iO2Z1bmN0aW9uIGgoZSx0KXtyZXR1cm4gWm9uZS5jdXJyZW50LndyYXAoZSx0KX1mdW5jdGlvbiBkKGUsdCxuLHIsbyl7cmV0dXJuIFpvbmUuY3VycmVudC5zY2hlZHVsZU1hY3JvVGFzayhlLHQsbixyLG8pfXZhciB2PVpvbmUuX19zeW1ib2xfXyx5PSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93LGc9eT93aW5kb3c6dm9pZCAwLF89eSYmZ3x8Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmfHxnbG9iYWwsbT0icmVtb3ZlQXR0cmlidXRlIixiPVtudWxsXTtmdW5jdGlvbiBrKGUsdCl7Zm9yKHZhciBuPWUubGVuZ3RoLTE7bj49MDtuLS0pImZ1bmN0aW9uIj09dHlwZW9mIGVbbl0mJihlW25dPWgoZVtuXSx0KyJfIituKSk7cmV0dXJuIGV9ZnVuY3Rpb24gVChlKXtyZXR1cm4hZXx8ITEhPT1lLndyaXRhYmxlJiYhKCJmdW5jdGlvbiI9PXR5cGVvZiBlLmdldCYmdm9pZCAwPT09ZS5zZXQpfXZhciB3PSJ1bmRlZmluZWQiIT10eXBlb2YgV29ya2VyR2xvYmFsU2NvcGUmJnNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZSxFPSEoIm53ImluIF8pJiZ2b2lkIDAhPT1fLnByb2Nlc3MmJiJbb2JqZWN0IHByb2Nlc3NdIj09PXt9LnRvU3RyaW5nLmNhbGwoXy5wcm9jZXNzKSxPPSFFJiYhdyYmISgheXx8IWcuSFRNTEVsZW1lbnQpLFM9dm9pZCAwIT09Xy5wcm9jZXNzJiYiW29iamVjdCBwcm9jZXNzXSI9PT17fS50b1N0cmluZy5jYWxsKF8ucHJvY2VzcykmJiF3JiYhKCF5fHwhZy5IVE1MRWxlbWVudCksUD17fSxEPWZ1bmN0aW9uKGUpe2lmKGU9ZXx8Xy5ldmVudCl7dmFyIHQ9UFtlLnR5cGVdO3R8fCh0PVBbZS50eXBlXT12KCJPTl9QUk9QRVJUWSIrZS50eXBlKSk7dmFyIG4scj10aGlzfHxlLnRhcmdldHx8XyxvPXJbdF07aWYoTyYmcj09PWcmJiJlcnJvciI9PT1lLnR5cGUpe3ZhciBhPWU7ITA9PT0obj1vJiZvLmNhbGwodGhpcyxhLm1lc3NhZ2UsYS5maWxlbmFtZSxhLmxpbmVubyxhLmNvbG5vLGEuZXJyb3IpKSYmZS5wcmV2ZW50RGVmYXVsdCgpfWVsc2UgbnVsbD09KG49byYmby5hcHBseSh0aGlzLGFyZ3VtZW50cykpfHxufHxlLnByZXZlbnREZWZhdWx0KCk7cmV0dXJuIG59fTtmdW5jdGlvbiBaKG4scixvKXt2YXIgYT1lKG4scik7aWYoIWEmJm8mJmUobyxyKSYmKGE9e2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksYSYmYS5jb25maWd1cmFibGUpe3ZhciBpPXYoIm9uIityKyJwYXRjaGVkIik7aWYoIW4uaGFzT3duUHJvcGVydHkoaSl8fCFuW2ldKXtkZWxldGUgYS53cml0YWJsZSxkZWxldGUgYS52YWx1ZTt2YXIgYz1hLmdldCxzPWEuc2V0LHU9ci5zdWJzdHIoMiksbD1QW3VdO2x8fChsPVBbdV09digiT05fUFJPUEVSVFkiK3UpKSxhLnNldD1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3R8fG4hPT1ffHwodD1fKSx0JiYodFtsXSYmdC5yZW1vdmVFdmVudExpc3RlbmVyKHUsRCkscyYmcy5hcHBseSh0LGIpLCJmdW5jdGlvbiI9PXR5cGVvZiBlPyh0W2xdPWUsdC5hZGRFdmVudExpc3RlbmVyKHUsRCwhMSkpOnRbbF09bnVsbCl9LGEuZ2V0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztpZihlfHxuIT09X3x8KGU9XyksIWUpcmV0dXJuIG51bGw7dmFyIHQ9ZVtsXTtpZih0KXJldHVybiB0O2lmKGMpe3ZhciBvPWMmJmMuY2FsbCh0aGlzKTtpZihvKXJldHVybiBhLnNldC5jYWxsKHRoaXMsbyksImZ1bmN0aW9uIj09dHlwZW9mIGVbbV0mJmUucmVtb3ZlQXR0cmlidXRlKHIpLG99cmV0dXJuIG51bGx9LHQobixyLGEpLG5baV09ITB9fX1mdW5jdGlvbiBqKGUsdCxuKXtpZih0KWZvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKVooZSwib24iK3Rbcl0sbik7ZWxzZXt2YXIgbz1bXTtmb3IodmFyIGEgaW4gZSkib24iPT1hLnN1YnN0cigwLDIpJiZvLnB1c2goYSk7Zm9yKHZhciBpPTA7aTxvLmxlbmd0aDtpKyspWihlLG9baV0sbil9fXZhciB6PXYoIm9yaWdpbmFsSW5zdGFuY2UiKTtmdW5jdGlvbiBDKGUpe3ZhciBuPV9bZV07aWYobil7X1t2KGUpXT1uLF9bZV09ZnVuY3Rpb24oKXt2YXIgdD1rKGFyZ3VtZW50cyxlKTtzd2l0Y2godC5sZW5ndGgpe2Nhc2UgMDp0aGlzW3pdPW5ldyBuO2JyZWFrO2Nhc2UgMTp0aGlzW3pdPW5ldyBuKHRbMF0pO2JyZWFrO2Nhc2UgMjp0aGlzW3pdPW5ldyBuKHRbMF0sdFsxXSk7YnJlYWs7Y2FzZSAzOnRoaXNbel09bmV3IG4odFswXSx0WzFdLHRbMl0pO2JyZWFrO2Nhc2UgNDp0aGlzW3pdPW5ldyBuKHRbMF0sdFsxXSx0WzJdLHRbM10pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJBcmcgbGlzdCB0b28gbG9uZy4iKX19LE0oX1tlXSxuKTt2YXIgcixvPW5ldyBuKChmdW5jdGlvbigpe30pKTtmb3IociBpbiBvKSJYTUxIdHRwUmVxdWVzdCI9PT1lJiYicmVzcG9uc2VCbG9iIj09PXJ8fGZ1bmN0aW9uKG4peyJmdW5jdGlvbiI9PXR5cGVvZiBvW25dP19bZV0ucHJvdG90eXBlW25dPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbel1bbl0uYXBwbHkodGhpc1t6XSxhcmd1bWVudHMpfTp0KF9bZV0ucHJvdG90eXBlLG4se3NldDpmdW5jdGlvbih0KXsiZnVuY3Rpb24iPT10eXBlb2YgdD8odGhpc1t6XVtuXT1oKHQsZSsiLiIrbiksTSh0aGlzW3pdW25dLHQpKTp0aGlzW3pdW25dPXR9LGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzW3pdW25dfX0pfShyKTtmb3IociBpbiBuKSJwcm90b3R5cGUiIT09ciYmbi5oYXNPd25Qcm9wZXJ0eShyKSYmKF9bZV1bcl09bltyXSl9fXZhciBJPSExO2Z1bmN0aW9uIFIodCxyLG8pe2Zvcih2YXIgYT10O2EmJiFhLmhhc093blByb3BlcnR5KHIpOylhPW4oYSk7IWEmJnRbcl0mJihhPXQpO3ZhciBpLGMscz12KHIpLHU9bg=="
                },
                {
                    "key": "asdf?polyfills.b948c5521048b3f55fad.js?2?1",
                    "type": "binary",
                    "value": "base64:dWxsO2lmKGEmJiEodT1hW3NdKSYmKHU9YVtzXT1hW3JdLFQoYSYmZShhLHIpKSkpe3ZhciBsPW8odSxzLHIpO2Fbcl09ZnVuY3Rpb24oKXtyZXR1cm4gbCh0aGlzLGFyZ3VtZW50cyl9LE0oYVtyXSx1KSxJJiYoaT11LGM9YVtyXSwiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhpKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGksZSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGMsZSx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGlbZV19LHNldDpmdW5jdGlvbihuKXsoIXR8fHQud3JpdGFibGUmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnNldCkmJihpW2VdPW4pfSxlbnVtZXJhYmxlOiF0fHx0LmVudW1lcmFibGUsY29uZmlndXJhYmxlOiF0fHx0LmNvbmZpZ3VyYWJsZX0pfSkpKX1yZXR1cm4gdX1mdW5jdGlvbiB4KGUsdCxuKXt2YXIgcj1udWxsO2Z1bmN0aW9uIG8oZSl7dmFyIHQ9ZS5kYXRhO3JldHVybiB0LmFyZ3NbdC5jYklkeF09ZnVuY3Rpb24oKXtlLmludm9rZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LHIuYXBwbHkodC50YXJnZXQsdC5hcmdzKSxlfXI9UihlLHQsKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0LHIpe3ZhciBhPW4odCxyKTtyZXR1cm4gYS5jYklkeD49MCYmImZ1bmN0aW9uIj09dHlwZW9mIHJbYS5jYklkeF0/ZChhLm5hbWUsclthLmNiSWR4XSxhLG8pOmUuYXBwbHkodCxyKX19KSl9ZnVuY3Rpb24gTShlLHQpe2VbdigiT3JpZ2luYWxEZWxlZ2F0ZSIpXT10fXZhciBMPSExLE49ITE7ZnVuY3Rpb24gRigpe3RyeXt2YXIgZT1nLm5hdmlnYXRvci51c2VyQWdlbnQ7aWYoLTEhPT1lLmluZGV4T2YoIk1TSUUgIil8fC0xIT09ZS5pbmRleE9mKCJUcmlkZW50LyIpKXJldHVybiEwfWNhdGNoKHQpe31yZXR1cm4hMX1mdW5jdGlvbiBBKCl7aWYoTClyZXR1cm4gTjtMPSEwO3RyeXt2YXIgZT1nLm5hdmlnYXRvci51c2VyQWdlbnQ7LTE9PT1lLmluZGV4T2YoIk1TSUUgIikmJi0xPT09ZS5pbmRleE9mKCJUcmlkZW50LyIpJiYtMT09PWUuaW5kZXhPZigiRWRnZS8iKXx8KE49ITApfWNhdGNoKHQpe31yZXR1cm4gTn1ab25lLl9fbG9hZF9wYXRjaCgidG9TdHJpbmciLChmdW5jdGlvbihlKXt2YXIgdD1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcsbj12KCJPcmlnaW5hbERlbGVnYXRlIikscj12KCJQcm9taXNlIiksbz12KCJFcnJvciIpLGE9ZnVuY3Rpb24oKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgdGhpcyl7dmFyIGE9dGhpc1tuXTtpZihhKXJldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBhP3QuY2FsbChhKTpPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSk7aWYodGhpcz09PVByb21pc2Upe3ZhciBpPWVbcl07aWYoaSlyZXR1cm4gdC5jYWxsKGkpfWlmKHRoaXM9PT1FcnJvcil7dmFyIGM9ZVtvXTtpZihjKXJldHVybiB0LmNhbGwoYyl9fXJldHVybiB0LmNhbGwodGhpcyl9O2Fbbl09dCxGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc9YTt2YXIgaT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO09iamVjdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIFByb21pc2U/IltvYmplY3QgUHJvbWlzZV0iOmkuY2FsbCh0aGlzKX19KSk7dmFyIEg9ITE7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cpdHJ5e3ZhciBHPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwicGFzc2l2ZSIse2dldDpmdW5jdGlvbigpe0g9ITB9fSk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRlc3QiLEcsRyksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRlc3QiLEcsRyl9Y2F0Y2goT2Upe0g9ITF9dmFyIEI9e3VzZUc6ITB9LFc9e30scT17fSxVPS9eX196b25lX3N5bWJvbF9fKFx3KykodHJ1ZXxmYWxzZSkkLyxWPSJfX3pvbmVfc3ltYm9sX19wcm9wYWdhdGlvblN0b3BwZWQiO2Z1bmN0aW9uIFgoZSx0LHIpe3ZhciBvPXImJnIuYWRkfHxpLGE9ciYmci5ybXx8YyxzPXImJnIubGlzdGVuZXJzfHwiZXZlbnRMaXN0ZW5lcnMiLHU9ciYmci5ybUFsbHx8InJlbW92ZUFsbExpc3RlbmVycyIsaD12KG8pLGQ9Ii4iK28rIjoiLHk9InByZXBlbmRMaXN0ZW5lciIsZz0iLiIreSsiOiIsXz1mdW5jdGlvbihlLHQsbil7aWYoIWUuaXNSZW1vdmVkKXt2YXIgcj1lLmNhbGxiYWNrOyJvYmplY3QiPT10eXBlb2YgciYmci5oYW5kbGVFdmVudCYmKGUuY2FsbGJhY2s9ZnVuY3Rpb24oZSl7cmV0dXJuIHIuaGFuZGxlRXZlbnQoZSl9LGUub3JpZ2luYWxEZWxlZ2F0ZT1yKSxlLmludm9rZShlLHQsW25dKTt2YXIgbz1lLm9wdGlvbnM7byYmIm9iamVjdCI9PXR5cGVvZiBvJiZvLm9uY2UmJnRbYV0uY2FsbCh0LG4udHlwZSxlLm9yaWdpbmFsRGVsZWdhdGU/ZS5vcmlnaW5hbERlbGVnYXRlOmUuY2FsbGJhY2ssbyl9fSxtPWZ1bmN0aW9uKHQpe2lmKHQ9dHx8ZS5ldmVudCl7dmFyIG49dGhpc3x8dC50YXJnZXR8fGUscj1uW1dbdC50eXBlXVtmXV07aWYocilpZigxPT09ci5sZW5ndGgpXyhyWzBdLG4sdCk7ZWxzZSBmb3IodmFyIG89ci5zbGljZSgpLGE9MDthPG8ubGVuZ3RoJiYoIXR8fCEwIT09dFtWXSk7YSsrKV8ob1thXSxuLHQpfX0sYj1mdW5jdGlvbih0KXtpZih0PXR8fGUuZXZlbnQpe3ZhciBuPXRoaXN8fHQudGFyZ2V0fHxlLHI9bltXW3QudHlwZV1bbF1dO2lmKHIpaWYoMT09PXIubGVuZ3RoKV8oclswXSxuLHQpO2Vsc2UgZm9yKHZhciBvPXIuc2xpY2UoKSxhPTA7YTxvLmxlbmd0aCYmKCF0fHwhMCE9PXRbVl0pO2ErKylfKG9bYV0sbix0KX19O2Z1bmN0aW9uIGsodCxyKXtpZighdClyZXR1cm4hMTt2YXIgaT0hMDtyJiZ2b2lkIDAhPT1yLnVzZUcmJihpPXIudXNlRyk7dmFyIGM9ciYmci52aCxfPSEwO3ImJnZvaWQgMCE9PXIuY2hrRHVwJiYoXz1yLmNoa0R1cCk7dmFyIGs9ITE7ciYmdm9pZCAwIT09ci5ydCYmKGs9ci5ydCk7Zm9yKHZhciBUPXQ7VCYmIVQuaGFzT3duUHJvcGVydHkobyk7KVQ9bihUKTtpZighVCYmdFtvXSYmKFQ9dCksIVQpcmV0dXJuITE7aWYoVFtoXSlyZXR1cm4hMTt2YXIgdyxPPXImJnIuZXZlbnROYW1lVG9TdHJpbmcsUz17fSxQPVRbaF09VFtvXSxEPVRbdihhKV09VFthXSxaPVRbdihzKV09VFtzXSxqPVRbdih1KV09VFt1XTtmdW5jdGlvbiB6KGUpe0h8fCJib29sZWFuIj09dHlwZW9mIFMub3B0aW9uc3x8bnVsbD09Uy5vcHRpb25zfHwoZS5vcHRpb25zPSEhUy5vcHRpb25zLmNhcHR1cmUsUy5vcHRpb25zPWUub3B0aW9ucyl9ciYmci5wcmVwZW5kJiYodz1UW3Yoci5wcmVwZW5kKV09VFtyLnByZXBlbmRdKTt2YXIgQz1pP2Z1bmN0aW9uKGUpe2lmKCFTLmlzRXhpc3RpbmcpcmV0dXJuIHooZSksUC5jYWxsKFMudGFyZ2V0LFMuZXZlbnROYW1lLFMuY2FwdHVyZT9iOm0sUy5vcHRpb25zKX06ZnVuY3Rpb24oZSl7cmV0dXJuIHooZSksUC5jYWxsKFMudGFyZ2V0LFMuZXZlbnROYW1lLGUuaW52b2tlLFMub3B0aW9ucyl9LEk9aT9mdW5jdGlvbihlKXtpZighZS5pc1JlbW92ZWQpe3ZhciB0PVdbZS5ldmVudE5hbWVdLG49dm9pZCAwO3QmJihuPXRbZS5jYXB0dXJlP2w6Zl0pO3ZhciByPW4mJmUudGFyZ2V0W25dO2lmKHIpZm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspaWYocltvXT09PWUpe3Iuc3BsaWNlKG8sMSksZS5pc1JlbW92ZWQ9ITAsMD09PXIubGVuZ3RoJiYoZS5hbGxSZW1vdmVkPSEwLGUudGFyZ2V0W25dPW51bGwpO2JyZWFrfX1pZihlLmFsbFJlbW92ZWQpcmV0dXJuIEQuY2FsbChlLnRhcmdldCxlLmV2ZW50TmFtZSxlLmNhcHR1cmU/YjptLGUub3B0aW9ucyl9OmZ1bmN0aW9uKGUpe3JldHVybiBELmNhbGwoZS50YXJnZXQsZS5ldmVudE5hbWUsZS5pbnZva2UsZS5vcHRpb25zKX0sUj1yJiZyLmRpZmY/ci5kaWZmOmZ1bmN0aW9uKGUsdCl7dmFyIG49dHlwZW9mIHQ7cmV0dXJuImZ1bmN0aW9uIj09PW4mJmUuY2FsbGJhY2s9PT10fHwib2JqZWN0Ij09PW4mJmUub3JpZ2luYWxEZWxlZ2F0ZT09PXR9LHg9Wm9uZVtab25lLl9fc3ltYm9sX18oIkJMQUNLX0xJU1RFRF9FVkVOVFMiKV0sTD1mdW5jdGlvbih0LG4scixvLGEscyl7cmV0dXJuIHZvaWQgMD09PWEmJihhPSExKSx2b2lkIDA9PT1zJiYocz0hMSksZnVuY3Rpb24oKXt2YXIgdT10aGlzfHxlLGg9YXJndW1lbnRzWzBdLGQ9YXJndW1lbnRzWzFdO2lmKCFkKXJldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZihFJiYidW5jYXVnaHRFeGNlcHRpb24iPT09aClyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIHY9ITE7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGQpe2lmKCFkLmhhbmRsZUV2ZW50KXJldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt2PSEwfWlmKCFjfHxjKHQsZCx1LGFyZ3VtZW50cykpe3ZhciB5LGc9YXJndW1lbnRzWzJdO2lmKHgpZm9yKHZhciBtPTA7bTx4Lmxlbmd0aDttKyspaWYoaD09PXhbbV0pcmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBiPSExO3ZvaWQgMD09PWc/eT0hMTohMD09PWc/eT0hMDohMT09PWc/eT0hMTooeT0hIWcmJiEhZy5jYXB0dXJlLGI9ISFnJiYhIWcub25jZSk7dmFyIGssVD1ab25lLmN1cnJlbnQsdz1XW2hdO2lmKHcpaz13W3k/bDpmXTtlbHNle3ZhciBQPShPP08oaCk6aCkrZixEPShPP08oaCk6aCkrbCxaPXArUCxqPXArRDtXW2hdPXt9LFdbaF1bZl09WixXW2hdW2xdPWosaz15P2o6Wn12YXIgeixDPXVba10sST0hMTtpZihDKXtpZihJPSEwLF8pZm9yKG09MDttPEMubGVuZ3RoO20rKylpZihSKENbbV0sZCkpcmV0dXJufWVsc2UgQz11W2tdPVtdO3ZhciBNPXUuY29uc3RydWN0b3IubmFtZSxMPXFbTV07TCYmKHo9TFtoXSksenx8KHo9TStuKyhPP08oaCk6aCkpLFMub3B0aW9ucz1nLGImJihTLm9wdGlvbnMub25jZT0hMSksUy50YXJnZXQ9dSxTLmNhcHR1cmU9eSxTLmV2ZW50TmFtZT1oLFMuaXNFeGlzdGluZz1JO3ZhciBOPWk/Qjp2b2lkIDA7TiYmKE4udGFza0RhdGE9Uyk7dmFyIEY9VC5zY2hlZHVsZUV2ZW50VGFzayh6LGQsTixyLG8pO3JldHVybiBTLnRhcmdldD1udWxsLE4mJihOLnRhc2tEYXRhPW51bGwpLGImJihnLm9uY2U9ITApLChIfHwiYm9vbGVhbiIhPXR5cGVvZiBGLm9wdGlvbnMpJiYoRi5vcHRpb25zPWcpLEYudGFyZ2V0PXUsRi5jYXB0dXJlPXksRi5ldmVudE5hbWU9aCx2JiYoRi5vcmlnaW5hbERlbGVnYXRlPWQpLHM/Qy51bnNoaWZ0KEYpOkMucHVzaChGKSxhP3U6dm9pZCAwfX19O3JldHVybiBUW29dPUwoUCxkLEMsSSxrKSx3JiYoVFt5XT1MKHcsZywoZnVuY3Rpb24oZSl7cmV0dXJuIHcuY2FsbChTLnRhcmdldCxTLmV2ZW50TmFtZSxlLmludm9rZSxTLm9wdGlvbnMpfSksSSxrLCEwKSksVFthXT1mdW5jdGlvbigpe3ZhciB0LG49dGhpc3x8ZSxyPWFyZ3VtZW50c1swXSxvPWFyZ3VtZW50c1syXTt0PXZvaWQgMCE9PW8mJighMD09PW98fCExIT09byYmISFvJiYhIW8uY2FwdHVyZSk7dmFyIGE9YXJndW1lbnRzWzFdO2lmKCFhKXJldHVybiBELmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZighY3x8YyhELGEsbixhcmd1bWVudHMpKXt2YXIgaSxzPVdbcl07cyYmKGk9c1t0P2w6Zl0pO3ZhciB1PWkmJm5baV07aWYodSlmb3IodmFyIHA9MDtwPHUubGVuZ3RoO3ArKyl7dmFyIGg9dVtwXTtpZihSKGgsYSkpcmV0dXJuIHUuc3BsaWNlKHAsMSksaC5pc1JlbW92ZWQ9ITAsMD09PXUubGVuZ3RoJiYoaC5hbGxSZW1vdmVkPSEwLG5baV09bnVsbCksaC56b25lLmNhbmNlbFRhc2soaCksaz9uOnZvaWQgMH1yZXR1cm4gRC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSxUW3NdPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXN8fGUsbj1hcmd1bWVudHNbMF0scj1bXSxvPVkodCxPP08obik6biksYT0wO2E8by5sZW5ndGg7YSsrKXt2YXIgaT1vW2FdLGM9aS5vcmlnaW5hbERlbGVnYXRlP2kub3JpZ2luYWxEZWxlZ2F0ZTppLmNhbGxiYWNrO3IucHVzaChjKX1yZXR1cm4gcn0sVFt1XT1mdW5jdGlvbigpe3ZhciB0PXRoaXN8fGUsbj1hcmd1bWVudHNbMF07aWYobil7dmFyIHI9V1tuXTtpZihyKXt2YXIgbz1yW2ZdLGk9cltsXSxjPXRbb10scz10W2ldO2lmKGMpe3ZhciBwPWMuc2xpY2UoKTtmb3Iodj0wO3Y8cC5sZW5ndGg7disrKXRoaXNbYV0uY2FsbCh0aGlzLG4sKGg9cFt2XSkub3JpZ2luYWxEZWxlZ2F0ZT9oLm9yaWdpbmFsRGVsZWdhdGU6aC5jYWxsYmFjayxoLm9wdGlvbnMpfWlmKHMpZm9yKHA9cy5zbGljZSgpLHY9MDt2PHAubGVuZ3RoO3YrKyl7dmFyIGg7dGhpc1thXS5jYWxsKHRoaXMsbiwoaD1wW3ZdKS5vcmlnaW5hbERlbGVnYXRlP2gub3JpZ2luYWxEZWxlZ2F0ZTpoLmNhbGxiYWNrLGgub3B0aW9ucyl9fX1lbHNle2Zvcih2YXIgZD1PYmplY3Qua2V5cyh0KSx2PTA7djxkLmxlbmd0aDt2Kyspe3ZhciB5PWRbdl0sZz1VLmV4ZWMoeSksXz1nJiZnWzFdO18mJiJyZW1vdmVMaXN0ZW5lciIhPT1fJiZ0aGlzW3VdLmNhbGwodGhpcyxfKX10aGlzW3VdLmNhbGwodGhpcywicmVtb3ZlTGlzdGVuZXIiKX1pZihrKXJldHVybiB0aGlzfSxNKFRbb10sUCksTShUW2FdLEQpLGomJk0oVFt1XSxqKSxaJiZNKFRbc10sWiksITB9Zm9yKHZhciBUPVtdLHc9MDt3PHQubGVuZ3RoO3crKylUW3ddPWsodFt3XSxyKTtyZXR1cm4gVH1mdW5jdGlvbiBZKGUsdCl7dmFyIG49W107Zm9yKHZhciByIGluIGUpe3ZhciBvPVUuZXhlYyhyKSxhPW8mJm9bMV07aWYoYSYmKCF0fHxhPT09dCkpe3ZhciBpPWVbcl07aWYoaSlmb3IodmFyIGM9MDtjPGkubGVuZ3RoO2MrKyluLnB1c2goaVtjXSl9fXJldHVybiBufWZ1bmN0aW9uIEooZSx0KXt2YXIgbj1lLkV2ZW50O24mJm4ucHJvdG90eXBlJiZ0LnBhdGNoTWV0aG9kKG4ucHJvdG90eXBlLCJzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24iLChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCxuKXt0W1ZdPSEwLGUmJmUuYXBwbHkodCxuKX19KSl9ZnVuY3Rpb24gSyhlLHQsbixyLG8pe3ZhciBhPVpvbmUuX19zeW1ib2xfXyhyKTtpZighdFthXSl7dmFyIGk9dFthXT10W3JdO3Rbcl09ZnVuY3Rpb24oYSxjLHMpe3JldHVybiBjJiZjLnByb3RvdHlwZSYmby5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgbz1uKyIuIityKyI6OiIrdCxhPWMucHJvdG90eXBlO2lmKGEuaGFzT3duUHJvcGVydHkodCkpe3ZhciBpPWUuT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGEsdCk7aSYmaS52YWx1ZT8oaS52YWx1ZT1lLndyYXBXaXRoQ3VycmVudFpvbmUoaS52YWx1ZSxvKSxlLl9yZWRlZmluZVByb3BlcnR5KGMucHJvdG90eXBlLHQsaSkpOmFbdF0mJihhW3RdPWUud3JhcFdpdGhDdXJyZW50Wm9uZShhW3RdLG8pKX1lbHNlIGFbdF0mJihhW3RdPWUud3JhcFdpdGhDdXJyZW50Wm9uZShhW3RdLG8pKX0pKSxpLmNhbGwodCxhLGMscyl9LGUuYXR0YWNoT3JpZ2luVG9QYXRjaGVkKHRbcl0saSl9fXZhciBRPVpvbmUuX19zeW1ib2xfXywkPU9iamVjdFtRKCJkZWZpbmVQcm9wZXJ0eSIpXT1PYmplY3QuZGVmaW5lUHJvcGVydHksZWU9T2JqZWN0W1EoImdldE93blByb3BlcnR5RGVzY3JpcHRvciIpXT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLHRlPU9iamVjdC5jcmVhdGUsbmU9USgidW5jb25maWd1cmFibGVzIik7ZnVuY3Rpb24gcmUoZSx0LG4pe3ZhciByPW4uY29uZmlndXJhYmxlO3JldHVybiBpZShlLHQsbj1hZShlLHQsbikscil9ZnVuY3Rpb24gb2UoZSx0KXtyZXR1cm4gZSYmZVtuZV0mJmVbbmVdW3RdfWZ1bmN0aW9uIGFlKGUsdCxuKXtyZXR1cm4gT2JqZWN0LmlzRnJvemVuKG4pfHwobi5jb25maWd1cmFibGU9ITApLG4uY29uZmlndXJhYmxlfHwoZVtuZV18fE9iamVjdC5pc0Zyb3plbihlKXx8JChlLG5lLHt3cml0YWJsZTohMCx2YWx1ZTp7fX0pLGVbbmVdJiYoZVtuZV1bdF09ITApKSxufWZ1bmN0aW9uIGllKGUsdCxuLHIpe3RyeXtyZXR1cm4gJChlLHQsbil9Y2F0Y2goYSl7aWYoIW4uY29uZmlndXJhYmxlKXRocm93IGE7dm9pZCAwPT09cj9kZWxldGUgbi5jb25maWd1cmFibGU6bi5jb25maWd1cmFibGU9cjt0cnl7cmV0dXJuICQoZSx0LG4pfWNhdGNoKGEpe3ZhciBvPW51bGw7dHJ5e289SlNPTi5zdHJpbmdpZnkobil9Y2F0Y2goYSl7bz1uLnRvU3RyaW5nKCl9Y29uc29sZS5sb2coIkF0dGVtcHRpbmcgdG8gY29uZmlndXJlICciK3QrIicgd2l0aCBkZXNjcmlwdG9yICciK28rIicgb24gb2JqZWN0ICciK2UrIicgYW5kIGdvdCBlcnJvciwgZ2l2aW5nIHVwOiAiK2EpfX19dmFyIGNlPVsiYWJzb2x1dGVkZXZpY2VvcmllbnRhdGlvbiIsImFmdGVyaW5wdXQiLCJhZnRlcnByaW50IiwiYXBwaW5zdGFsbGVkIiwiYmVmb3JlaW5zdGFsbHByb21wdCIsImJlZm9yZXByaW50IiwiYmVmb3JldW5sb2FkIiwiZGV2aWNlbGlnaHQiLCJkZXZpY2Vtb3Rpb24iLCJkZXZpY2VvcmllbnRhdGlvbiIsImRldmljZW9yaWVudGF0aW9uYWJzb2x1dGUiLCJkZXZpY2Vwcm94aW1pdHkiLCJoYXNoY2hhbmdlIiwibGFuZ3VhZ2VjaGFuZ2UiLCJtZXNzYWdlIiwibW96YmVmb3JlcGFpbnQiLCJvZmZsaW5lIiwib25saW5lIiwicGFpbnQiLCJwYWdlc2hvdyIsInBhZ2VoaWRlIiwicG9wc3RhdGUiLCJyZWplY3Rpb25oYW5kbGVkIiwic3RvcmFnZSIsInVuaGFuZGxlZHJlamVjdGlvbiIsInVubG9hZCIsInVzZXJwcm94aW1pdHkiLCJ2cmRpc3BseWNvbm5lY3RlZCIsInZyZGlzcGxheWRpc2Nvbm5lY3RlZCIsInZyZGlzcGxheXByZXNlbnRjaGFuZ2UiXSxzZT1bImVuY3J5cHRlZCIsIndhaXRpbmdmb3JrZXkiLCJtc25lZWRrZXkiLCJtb3ppbnRlcnJ1cHRiZWdpbiIsIm1vemludGVycnVwdGVuZCJdLHVlPVsibG9hZCJdLGxlPVsiYmx1ciIsImVycm9yIiwiZm9jdXMiLCJsb2FkIiwicmVzaXplIiwic2Nyb2xsIiwibWVzc2FnZWVycm9yIl0sZmU9WyJib3VuY2UiLCJmaW5pc2giLCJzdGFydCJdLHBlPVsibG9hZHN0YXJ0IiwicHJvZ3Jlc3MiLCJhYm9ydCIsImVycm9yIiwibG9hZCIsInByb2dyZXNzIiwidGltZW91dCIsImxvYWRlbmQiLCJyZWFkeXN0YXRlY2hhbmdlIl0saGU9WyJ1cGdyYWRlbmVlZGVkIiwiY29tcGxldGUiLCJhYm9ydCIsInN1Y2Nlc3MiLCJlcnJvciIsImJsb2NrZWQiLCJ2ZXJzaW9uY2hhbmdlIiwiY2xvc2UiXSxkZT1bImNsb3NlIiwiZXJyb3IiLCJvcGVuIiwibWVzc2FnZSJdLHZlPVsiZXJyb3IiLCJtZXNzYWdlIl0seWU9WyJhYm9ydCIsImFuaW1hdGlvbmNhbmNlbCIsImFuaW1hdGlvbmVuZCIsImFuaW1hdGlvbml0ZXJhdGlvbiIsImF1eGNsaWNrIiwiYmVmb3JlaW5wdXQiLCJibHVyIiwiY2FuY2VsIiwiY2FucGxheSIsImNhbnBsYXl0aHJvdWdoIiwiY2hhbmdlIiwiY29tcG9zaXRpb25zdGFydCIsImNvbXBvc2l0aW9udXBkYXRlIiwiY29tcG9zaXRpb25lbmQiLCJjdWVjaGFuZ2UiLCJjbGljayIsImNsb3NlIiwiY29udGV4dG1lbnUiLCJjdXJlY2hhbmdlIiwiZGJsY2xpY2siLCJkcmFnIiwiZHJhZ2VuZCIsImRyYWdlbnRlciIsImRyYWdleGl0IiwiZHJhZ2xlYXZlIiwiZHJhZ292ZXIiLCJkcm9wIiwiZHVyYXRpb25jaGFuZ2UiLCJlbXB0aWVkIiwiZW5kZWQiLCJlcnJvciIsImZvY3VzIiwiZm9jdXNpbiIsImZvY3Vzb3V0IiwiZ290cG9pbnRlcmNhcHR1cmUiLCJpbnB1dCIsImludmFsaWQiLCJrZXlkb3duIiwia2V5cHJlc3MiLCJrZXl1cCIsImxvYWQiLCJsb2Fkc3RhcnQiLCJsb2FkZWRkYXRhIiwibG9hZGVkbWV0YWRhdGEiLCJsb3N0cG9pbnRlcmNhcHR1cmUiLCJtb3VzZWRvd24iLCJtb3VzZWVudGVyIiwibW91c2VsZWF2ZSIsIm1vdXNlbW92ZSIsIm1vdXNlb3V0IiwibW91c2VvdmVyIiwibW91c2V1cCIsIm1vdXNld2hlZWwiLCJvcmllbnRhdGlvbmNoYW5nZSIsInBhdXNlIiwicGxheSIsInBsYXlpbmciLCJwb2ludGVyY2FuY2VsIiwicG9pbnRlcmRvd24iLCJwb2ludGVyZW50ZXIiLCJwb2ludGVybGVhdmUiLCJwb2ludGVybG9ja2NoYW5nZSIsIm1venBvaW50ZXJsb2NrY2hhbmdlIiwid2Via2l0cG9pbnRlcmxvY2tlcmNoYW5nZSIsInBvaW50ZXJsb2NrZXJyb3IiLCJtb3pwb2ludGVybG9ja2Vycm9yIiwid2Via2l0cG9pbnRlcmxvY2tlcnJvciIsInBvaW50ZXJtb3ZlIiwicG9pbnRvdXQiLCJwb2ludGVyb3ZlciIsInBvaW50ZXJ1cCIsInByb2dyZXNzIiwicmF0ZWNoYW5nZSIsInJlc2V0IiwicmVzaXplIiwic2Nyb2xsIiwic2Vla2VkIiwic2Vla2luZyIsInNlbGVjdCIsInNlbGVjdGlvbmNoYW5nZSIsInNlbGVjdHN0YXJ0Iiwic2hvdyIsInNvcnQiLCJzdGFsbGVkIiwic3VibWl0Iiwic3VzcGVuZCIsInRpbWV1cGRhdGUiLCJ2b2x1bWVjaGFuZ2UiLCJ0b3VjaGNhbmNlbCIsInRvdWNobW92ZSIsInRvdWNoc3RhcnQiLCJ0b3VjaGVuZCIsInRyYW5zaXRpb25jYW5jZWwiLCJ0cmFuc2l0aW9uZW5kIiwid2FpdGluZyIsIndoZWVsIl0uY29uY2F0KFsid2ViZ2xjb250ZXh0cmVzdG9yZWQiLCJ3ZWJnbGNvbnRleHRsb3N0Iiwid2ViZ2xjb250ZXh0Y3JlYXRpb25lcnJvciJdLFsiYXV0b2NvbXBsZXRlIiwiYXV0b2NvbXBsZXRlZXJyb3IiXSxbInRvZ2dsZSJdLFsiYWZ0ZXJzY3JpcHRleGVjdXRlIiwiYmVmb3Jlc2NyaXB0ZXhlY3V0ZSIsIkRPTUNvbnRlbnRMb2FkZWQiLCJmcmVlemUiLCJmdWxsc2NyZWVuY2hhbmdlIiwibW96ZnVsbHNjcmVlbmNoYW5nZSIsIndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UiLCJtc2Z1bGxzY3JlZW5jaGFuZ2UiLCJmdWxsc2NyZWVuZXJyb3IiLCJtb3pmdWxsc2NyZWVuZXJyb3IiLCJ3ZWJraXRmdWxsc2NyZWVuZXJyb3IiLCJtc2Z1bGxzY3JlZW5lcnJvciIsInJlYWR5c3RhdGVjaGFuZ2UiLCJ2aXNpYmlsaXR5Y2hhbmdlIiwicmVzdW1lIl0sY2UsWyJiZWZvcmVjb3B5IiwiYmVmb3JlY3V0IiwiYmVmb3JlcGFzdGUiLCJjb3B5IiwiY3V0IiwicGFzdGUiLCJkcmFnc3RhcnQiLCJsb2FkZW5kIiwiYW5pbWF0aW9uc3RhcnQiLCJzZWFyY2giLCJ0cmFuc2l0aW9ucnVuIiwidHJhbnNpdGlvbnN0YXJ0Iiwid2Via2l0YW5pbWF0aW9uZW5kIiwid2Via2l0YW5pbWF0aW9uaXRlcmF0aW9uIiwid2Via2l0YW5pbWF0aW9uc3RhcnQiLCJ3ZWJraXR0cmFuc2l0aW9uZW5kIl0sWyJhY3RpdmF0ZSIsImFmdGVydXBkYXRlIiwiYXJpYXJlcXVlc3QiLCJiZWZvcmVhY3RpdmF0ZSIsImJlZm9yZWRlYWN0aXZhdGUiLCJiZWZvcmVlZGl0Zm9jdXMiLCJiZWZvcmV1cGRhdGUiLCJjZWxsY2hhbmdlIiwiY29udHJvbHNlbGVjdCIsImRhdGFhdmFpbGFibGUiLCJkYXRhc2V0Y2hhbmdlZCIsImRhdGFzZXRjb21wbGV0ZSIsImVycm9ydXBkYXRlIiwiZmlsdGVyY2hhbmdlIiwibGF5b3V0Y29tcGxldGUiLCJsb3NlY2FwdHVyZSIsIm1vdmUiLCJtb3ZlZW5kIiwibW92ZXN0YXJ0IiwicHJvcGVydHljaGFuZ2UiLCJyZXNpemVlbmQiLCJyZXNpemVzdGFydCIsInJvd2VudGVyIiwicm93ZXhpdCIsInJvd3NkZWxldGUiLCJyb3dzaW5zZXJ0ZWQiLCJjb21tYW5kIiwiY29tcGFzc25lZWRzY2FsaWJyYXRpb24iLCJkZWFjdGl2YXRlIiwiaGVscCIsIm1zY29udGVudHpvb20iLCJtc21hbmlwdWxhdGlvbnN0YXRlY2hhbmdlZCIsIm1zZ2VzdHVyZWNoYW5nZSIsIm1zZ2VzdHVyZWRvdWJsZXRhcCIsIm1zZ2VzdHVyZWVuZCIsIm1zZ2VzdHVyZWhvbGQiLCJtc2dlc3R1cmVzdGFydCIsIm1zZ2VzdHVyZXRhcCIsIm1zZ290cG9pbnRlcmNhcHR1cmUiLCJtc2luZXJ0aWFzdGFydCIsIm1zbG9zdHBvaW50ZXJjYXB0dXJlIiwibXNwb2ludGVyY2FuY2VsIiwibXNwb2ludGVyZG93biIsIm1zcG9pbnRlcmVudGVyIiwibXNwb2ludGVyaG92ZXIiLCJtc3BvaW50ZXJsZWF2ZSIsIm1zcG9pbnRlcm1vdmUiLCJtc3BvaW50ZXJvdXQiLCJtc3BvaW50ZXJvdmVyIiwibXNwb2ludGVydXAiLCJwb2ludGVyb3V0IiwibXNzaXRlbW9kZWp1bXBsaXN0aXRlbXJlbW92ZWQiLCJtc3RodW1ibmFpbGNsaWNrIiwic3RvcCIsInN0b3JhZ2Vjb21taXQiXSk7ZnVuY3Rpb24gZ2UoZSx0LG4pe2lmKCFufHwwPT09bi5sZW5ndGgpcmV0dXJuIHQ7dmFyIHI9bi5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRhcmdldD09PWV9KSk7aWYoIXJ8fDA9PT1yLmxlbmd0aClyZXR1cm4gdDt2YXIgbz1yWzBdLmlnbm9yZVByb3BlcnRpZXM7cmV0dXJuIHQuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4tMT09PW8uaW5kZXhPZihlKX0pKX1mdW5jdGlvbiBfZShlLHQsbixyKXtlJiZqKGUsZ2UoZSx0LG4pLHIpfWZ1bmN0aW9uIG1lKGUsdCl7aWYoKCFFfHxTKSYmIVpvbmVbZS5zeW1ib2woInBhdGNoRXZlbnRzIildKXt2YXIgcj0idW5kZWZpbmVkIiE9dHlwZW9mIFdlYlNvY2tldCxvPXQuX19ab25lX2lnbm9yZV9vbl9wcm9wZXJ0aWVzO2lmKE8pe3ZhciBhPXdpbmRvdyxpPUY/W3t0YXJnZXQ6YSxpZ25vcmVQcm9wZXJ0aWVzOlsiZXJyb3IiXX1dOltdO19lKGEseWUuY29uY2F0KFsibWVzc2FnZWVycm9yIl0pLG8/by5jb25jYXQoaSk6byxuKGEpKSxfZShEb2N1bWVudC5wcm90b3R5cGUseWUsbyksdm9pZCAwIT09YS5TVkdFbGVtZW50JiZfZShhLlNWR0VsZW1lbnQucHJvdG90eXBlLHllLG8pLF9lKEVsZW1lbnQucHJvdG90eXBlLHllLG8pLF9lKEhUTUxFbGVtZW50LnByb3RvdHlwZSx5ZSxvKSxfZShIVE1MTWVkaWFFbGVtZW50LnByb3RvdHlwZSxzZSxvKSxfZShIVE1MRnJhbWVTZXRFbGVtZW50LnByb3RvdHlwZSxjZS5jb25jYXQobGUpLG8pLF9lKEhUTUxCb2R5RWxlbWVudC5wcm90b3R5cGUsY2UuY29uY2F0KGxlKSxvKSxfZShIVE1MRnJhbWVFbGVtZW50LnByb3RvdHlwZSx1ZSxvKSxfZShIVE1MSUZyYW1lRWxlbWVudC5wcm90b3R5cGUsdWUsbyk7dmFyIGM9YS5IVE1MTWFycXVlZUVsZW1lbnQ7YyYmX2UoYy5wcm90b3R5cGUsZmUsbyk7dmFyIHM9YS5Xb3JrZXI7cyYmX2Uocy5wcm90b3R5cGUsdmUsbyl9dmFyIHU9dC5YTUxIdHRwUmVxdWVzdDt1JiZfZSh1LnByb3RvdHlwZSxwZSxvKTt2YXIgbD10LlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQ7bCYmX2UobCYmbC5wcm90b3R5cGUscGUsbyksInVuZGVmaW5lZCIhPXR5cGVvZiBJREJJbmRleCYmKF9lKElEQkluZGV4LnByb3RvdHlwZSxoZSxvKSxfZShJREJSZXF1ZXN0LnByb3RvdHlwZSxoZSxvKSxfZShJREJPcGVuREJSZXF1ZXN0LnByb3RvdHlwZSxoZSxvKSxfZShJREJEYXRhYmFzZS5wcm90b3R5cGUsaGUsbyksX2UoSURCVHJhbnNhY3Rpb24ucHJvdG90eXBlLGhlLG8pLF9lKElEQkN1cnNvci5wcm90b3R5cGUsaGUsbykpLHImJl9lKFdlYlNvY2tldC5wcm90b3R5cGUsZGUsbyl9fWZ1bmN0aW9uIGJlKGUsdCl7dmFyIG49dC5nZXRHbG9iYWxPYmplY3RzKCkscj1uLmV2ZW50TmFtZXMsbz1uLmdsb2JhbFNvdXJjZXMsYT1uLnpvbmVTeW1ib2xFdmVudE5hbWVzLGk9bi5UUlVFX1NUUixjPW4uRkFMU0VfU1RSLHM9bi5aT05FX1NZTUJPTF9QUkVGSVgsdT0iQW5jaG9yLEFyZWEsQXVkaW8sQlIsQmFzZSxCYXNlRm9udCxCb2R5LEJ1dHRvbixDYW52YXMsQ29udGVudCxETGlzdCxEaXJlY3RvcnksRGl2LEVtYmVkLEZpZWxkU2V0LEZvbnQsRm9ybSxGcmFtZSxGcmFtZVNldCxIUixIZWFkLEhlYWRpbmcsSHRtbCxJRnJhbWUsSW1hZ2UsSW5wdXQsS2V5Z2VuLExJLExhYmVsLExlZ2VuZCxMaW5rLE1hcCxNYXJxdWVlLE1lZGlhLE1lbnUsTWV0YSxNZXRlcixNb2QsT0xpc3QsT2JqZWN0LE9wdEdyb3VwLE9wdGlvbixPdXRwdXQsUGFyYWdyYXBoLFByZSxQcm9ncmVzcyxRdW90ZSxTY3JpcHQsU2VsZWN0LFNvdXJjZSxTcGFuLFN0eWxlLFRhYmxlQ2FwdGlvbixUYWJsZUNlbGwsVGFibGVDb2wsVGFibGUsVGFibGVSb3csVGFibGVTZWN0aW9uLFRleHRBcmVhLFRpdGxlLFRyYWNrLFVMaXN0LFVua25vd24sVmlkZW8iLGw9IkFwcGxpY2F0aW9uQ2FjaGUsRXZlbnRTb3VyY2UsRmlsZVJlYWRlcixJbnB1dE1ldGhvZENvbnRleHQsTWVkaWFDb250cm9sbGVyLE1lc3NhZ2VQb3J0LE5vZGUsUGVyZm9ybWFuY2UsU1ZHRWxlbWVudEluc3RhbmNlLFNoYXJlZFdvcmtlcixUZXh0VHJhY2ssVGV4dFRyYWNrQ3VlLFRleHRUcmFja0xpc3QsV2ViS2l0TmFtZWRGbG93LFdpbmRvdyxXb3JrZXIsV29ya2VyR2xvYmFsU2NvcGUsWE1MSHR0cFJlcXVlc3QsWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldCxYTUxIdHRwUmVxdWVzdFVwbG9hZCxJREJSZXF1ZXN0LElEQk9wZW5EQlJlcXVlc3QsSURCRGF0YWJhc2UsSURCVHJhbnNhY3Rpb24sSURCQ3Vyc29yLERCSW5kZXgsV2ViU29ja2V0Ii5zcGxpdCgiLCIpLGY9W10scD1lLnd0ZixoPXUuc3BsaXQoIiwiKTtwP2Y9aC5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiJIVE1MIitlKyJFbGVtZW50In0pKS5jb25jYXQobCk6ZS5FdmVudFRhcmdldD9mLnB1c2goIkV2ZW50VGFyZ2V0Iik6Zj1sO2Zvcih2YXIgZD1lLl9fWm9uZV9kaXNhYmxlX0lFX2NoZWNrfHwhMSx2PWUuX19ab25lX2VuYWJsZV9jcm9zc19jb250ZXh0X2NoZWNrfHwhMSx5PXQuaXNJRU9yRWRnZSgpLGc9ImZ1bmN0aW9uIF9fQlJPV1NFUlRPT0xTX0NPTlNPTEVfU0FGRUZVTkMoKSB7IFtuYXRpdmUgY29kZV0gfSIsXz0wO188ci5sZW5ndGg7XysrKXt2YXIgbT1zKygoRT1yW19dKStjKSxiPXMrKEUraSk7YVtFXT17fSxhW0VdW2NdPW0sYVtFXVtpXT1ifWZvcihfPTA7Xzx1Lmxlbmd0aDtfKyspZm9yKHZhciBrPWhbX10sVD1vW2tdPXt9LHc9MDt3PHIubGVuZ3RoO3crKyl7dmFyIEU7VFtFPXJbd11dPWsrIi5hZGRFdmVudExpc3RlbmVyOiIrRX12YXIgTz1bXTtmb3IoXz0wO188Zi5sZW5ndGg7XysrKXt2YXIgUz1lW2ZbX11dO08ucHVzaChTJiZTLnByb3RvdHlwZSl9cmV0dXJuIHQucGF0Y2hFdmVudFRhcmdldChlLE8se3ZoOmZ1bmN0aW9uKGUsdCxuLHIpe2lmKCFkJiZ5KXtpZih2KXRyeXt2YXIgbztpZigiW29iamVjdCBGdW5jdGlvbldyYXBwZXJdIj09PShvPXQudG9TdHJpbmcoKSl8fG89PWcpcmV0dXJuIGUuYXBwbHkobixyKSwhMX1jYXRjaChhKXtyZXR1cm4gZS5hcHBseShuLHIpLCExfWVsc2UgaWYoIltvYmplY3QgRnVuY3Rpb25XcmFwcGVyXSI9PT0obz10LnRvU3RyaW5nKCkpfHxvPT1nKXJldHVybiBlLmFwcGx5KG4sciksITF9ZWxzZSBpZih2KXRyeXt0LnRvU3RyaW5nKCl9Y2F0Y2goYSl7cmV0dXJuIGUuYXBwbHkobixyKSwhMX1yZXR1cm4hMH19KSxab25lW3Quc3ltYm9sKCJwYXRjaEV2ZW50VGFyZ2V0IildPSEhZS5FdmVudFRhcmdldCwhMH1mdW5jdGlvbiBrZShlLHQpe3ZhciBuPWUuZ2V0R2xvYmFsT2JqZWN0cygpO2lmKCghbi5pc05vZGV8fG4uaXNNaXgpJiYhZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmdldEdsb2JhbE9iamVjdHMoKTtpZigobi5pc0Jyb3dzZXJ8fG4uaXNNaXgpJiYhZS5PYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSFRNTEVsZW1lbnQucHJvdG90eXBlLCJvbmNsaWNrIikmJiJ1bmRlZmluZWQiIT10eXBlb2YgRWxlbWVudCl7dmFyIHI9ZS5PYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRWxlbWVudC5wcm90b3R5cGUsIm9uY2xpY2siKTtpZihyJiYhci5jb25maWd1cmFibGUpcmV0dXJuITE7aWYocil7ZS5PYmplY3REZWZpbmVQcm9wZXJ0eShFbGVtZW50LnByb3RvdHlwZSwib25jbGljayIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiEwfX0pO3ZhciBvPSEhZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikub25jbGljaztyZXR1cm4gZS5PYmplY3REZWZpbmVQcm9wZXJ0eShFbGVtZW50LnByb3RvdHlwZSwib25jbGljayIsciksb319dmFyIGE9dC5YTUxIdHRwUmVxdWVzdDtpZighYSlyZXR1cm4hMTt2YXIgaT1hLnByb3RvdHlwZSxjPWUuT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGksIm9ucmVhZHlzdGF0ZWNoYW5nZSIpO2lmKGMpcmV0dXJuIGUuT2JqZWN0RGVmaW5lUHJvcGVydHkoaSwib25yZWFkeXN0YXRlY2hhbmdlIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuITB9fSksbz0hISh1PW5ldyBhKS5vbnJlYWR5c3RhdGVjaGFuZ2UsZS5PYmplY3REZWZpbmVQcm9wZXJ0eShpLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLGN8fHt9KSxvO3ZhciBzPWUuc3ltYm9sKCJmYWtlIik7ZS5PYmplY3REZWZpbmVQcm9wZXJ0eShpLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tzXX0sc2V0OmZ1bmN0aW9uKGUpe3RoaXNbc109ZX19KTt2YXIgdT1uZXcgYSxsPWZ1bmN0aW9uKCl7fTtyZXR1cm4gdS5vbnJlYWR5c3RhdGVjaGFuZ2U9bCxvPXVbc109PT1sLHUub25yZWFkeXN0YXRlY2hhbmdlPW51bGwsb30oZSx0KSl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBXZWJTb2NrZXQ7IWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lLmdldEdsb2JhbE9iamVjdHMoKS5ldmVudE5hbWVzLG49ZS5zeW1ib2woInVuYm91bmQiKSxyPWZ1bmN0aW9uKHIpe3ZhciBvPXRbcl0sYT0ib24iK287c2VsZi5hZGRFdmVudExpc3RlbmVyKG8sKGZ1bmN0aW9uKHQpe3ZhciByLG8saT10LnRhcmdldDtmb3Iobz1pP2kuY29uc3RydWN0b3IubmFtZSsiLiIrYToidW5rbm93bi4iK2E7aTspaVthXSYmIWlbYV1bbl0mJigocj1lLndyYXBXaXRoQ3VycmVudFpvbmUoaVthXSxvKSlbbl09aVthXSxpW2FdPXIpLGk9aS5wYXJlbnRFbGVtZW50fSksITApfSxvPTA7bzx0Lmxlbmd0aDtvKyspcihvKX0oZSksZS5wYXRjaENsYXNzKCJYTUxIdHRwUmVxdWVzdCIpLHImJmZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5nZXRHbG9iYWxPYmplY3RzKCkscj1uLkFERF9FVkVOVF9MSVNURU5FUl9TVFIsbz1uLlJFTU9WRV9FVkVOVF9MSVNURU5FUl9TVFIsYT10LldlYlNvY2tldDt0LkV2ZW50VGFyZ2V0fHxlLnBhdGNoRXZlbnRUYXJnZXQodCxbYS5wcm90b3R5cGVdKSx0LldlYlNvY2tldD1mdW5jdGlvbih0LG4pe3ZhciBpLGMscz1hcmd1bWVudHMubGVuZ3RoPjE/bmV3IGEodCxuKTpuZXcgYSh0KSx1PWUuT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHMsIm9ubWVzc2FnZSIpO3JldHVybiB1JiYhMT09PXUuY29uZmlndXJhYmxlPyhpPWUuT2JqZWN0Q3JlYXRlKHMpLGM9cyxbcixvLCJzZW5kIiwiY2xvc2UiXS5mb3JFYWNoKChmdW5jdGlvbih0KXtpW3RdPWZ1bmN0aW9uKCl7dmFyIG49ZS5BcnJheVNsaWNlLmNhbGwoYXJndW1lbnRzKTtpZih0PT09cnx8dD09PW8pe3ZhciBhPW4ubGVuZ3RoPjA/blswXTp2b2lkIDA7aWYoYSl7dmFyIGM9Wm9uZS5fX3N5bWJvbF9fKCJPTl9QUk9QRVJUWSIrYSk7c1tjXT1pW2NdfX1yZXR1cm4gc1t0XS5hcHBseShzLG4pfX0pKSk6aT1zLGUucGF0Y2hPblByb3BlcnRpZXMoaSxbImNsb3NlIiwiZXJyb3IiLCJtZXNzYWdlIiwib3BlbiJdLGMpLGl9O3ZhciBpPXQuV2ViU29ja2V0O2Zvcih2YXIgYyBpbiBhKWlbY109YVtjXX0oZSx0KSxab25lW2Uuc3ltYm9sKCJwYXRjaEV2ZW50cyIpXT0hMH19Wm9uZS5fX2xvYWRfcGF0Y2goInV0aWwiLChmdW5jdGlvbihuLHIscyl7cy5wYXRjaE9uUHJvcGVydGllcz1qLHMucGF0Y2hNZXRob2Q9UixzLmJpbmRBcmd1bWVudHM9ayxzLnBhdGNoTWFjcm9UYXNrPXg7dmFyIHU9ci5fX3N5bWJvbF9fKCJCTEFDS19MSVNURURfRVZFTlRTIiksZD1yLl9fc3ltYm9sX18oIlVOUEFUQ0hFRF9FVkVOVFMiKTtuW2RdJiYoblt1XT1uW2RdKSxuW3VdJiYoclt1XT1yW2RdPW5bdV0pLHMucGF0Y2hFdmVudFByb3RvdHlwZT1KLHMucGF0Y2hFdmVudFRhcmdldD1YLHMuaXNJRU9yRWRnZT1BLHMuT2JqZWN0RGVmaW5lUHJvcGVydHk9dCxzLk9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcj1lLHMuT2JqZWN0Q3JlYXRlPW8scy5BcnJheVNsaWNlPWEscy5wYXRjaENsYXNzPUMscy53cmFwV2l0aEN1cnJlbnRab25lPWgscy5maWx0ZXJQcm9wZXJ0aWVzPWdlLHMuYXR0YWNoT3JpZ2luVG9QYXRjaGVkPU0scy5fcmVkZWZpbmVQcm9wZXJ0eT1yZSxzLnBhdGNoQ2FsbGJhY2tzPUsscy5nZXRHbG9iYWxPYmplY3RzPWZ1bmN0aW9uKCl7cmV0dXJue2dsb2JhbFNvdXJjZXM6cSx6b25lU3ltYm9sRXZlbnROYW1lczpXLGV2ZW50TmFtZXM6eWUsaXNCcm93c2VyOk8saXNNaXg6Uyxpc05vZGU6RSxUUlVFX1NUUjpsLEZBTFNFX1NUUjpmLFpPTkVfU1lNQk9MX1BSRUZJWDpwLEFERF9FVkVOVF9MSVNURU5FUl9TVFI6aSxSRU1PVkVfRVZFTlRfTElTVEVORVJfU1RSOmN9fX0pKSxmdW5jdGlvbihlKXtlLl9fem9uZV9zeW1ib2xfX2xlZ2FjeVBhdGNoPWZ1bmN0aW9uKCl7dmFyIHQ9ZS5ab25lO3QuX19sb2FkX3BhdGNoKCJyZWdpc3RlckVsZW1lbnQiLChmdW5jdGlvbihlLHQsbil7IWZ1bmN0aW9uKGUsdCl7dmFyIG49dC5nZXRHbG9iYWxPYmplY3RzKCk7KG4uaXNCcm93c2VyfHxuLmlzTWl4KSYmInJlZ2lzdGVyRWxlbWVudCJpbiBlLmRvY3VtZW50JiZ0LnBhdGNoQ2FsbGJhY2tzKHQsZG9jdW1lbnQsIkRvY3VtZW50IiwicmVnaXN0ZXJFbGVtZW50IixbImNyZWF0ZWRDYWxsYmFjayIsImF0dGFjaGVkQ2FsbGJhY2siLCJkZXRhY2hlZENhbGxiYWNrIiwiYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrIl0pfShlLG4pfSkpLHQuX19sb2FkX3BhdGNoKCJFdmVudFRhcmdldExlZ2FjeSIsKGZ1bmN0aW9uKGUsdCxuKXtiZShlLG4pLGtlKG4sZSl9KSl9fSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93fHwidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJnNlbGZ8fGdsb2JhbCk7dmFyIFRlPXYoInpvbmVUYXNrIik7ZnVuY3Rpb24gd2UoZSx0LG4scil7dmFyIG89bnVsbCxhPW51bGw7bis9cjt2YXIgaT17fTtmdW5jdGlvbiBjKHQpe3ZhciBuPXQuZGF0YTtyZXR1cm4gbi5hcmdzWzBdPWZ1bmN0aW9uKCl7dHJ5e3QuaW52b2tlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1maW5hbGx5e3QuZGF0YSYmdC5kYXRhLmlzUGVyaW9kaWN8fCgibnVtYmVyIj09dHlwZW9mIG4uaGFuZGxlSWQ/ZGVsZXRlIGlbbi5oYW5kbGVJZF06bi5oYW5kbGVJZCYmKG4uaGFuZGxlSWRbVGVdPW51bGwpKX19LG4uaGFuZGxlSWQ9by5hcHBseShlLG4uYXJncyksdH1mdW5jdGlvbiBzKGUpe3JldHVybiBhKGUuZGF0YS5oYW5kbGVJZCl9bz1SKGUsdCs9ciwoZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKG8sYSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGFbMF0pe3ZhciB1PWQodCxhWzBdLHtpc1BlcmlvZGljOiJJbnRlcnZhbCI9PT1yLGRlbGF5OiJUaW1lb3V0Ij09PXJ8fCJJbnRlcnZhbCI9PT1yP2FbMV18fDA6dm9pZCAwLGFyZ3M6YX0sYyxzKTtpZighdSlyZXR1cm4gdTt2YXIgbD11LmRhdGEuaGFuZGxlSWQ7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBsP2lbbF09dTpsJiYobFtUZV09dSksbCYmbC5yZWYmJmwudW5yZWYmJiJmdW5jdGlvbiI9PXR5cGVvZiBsLnJlZiYmImZ1bmN0aW9uIj09dHlwZW9mIGwudW5yZWYmJih1LnJlZj1sLnJlZi5iaW5kKGwpLHUudW5yZWY9bC51bnJlZi5iaW5kKGwpKSwibnVtYmVyIj09dHlwZW9mIGx8fGw/bDp1fXJldHVybiBuLmFwcGx5KGUsYSl9fSkpLGE9UihlLG4sKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihuLHIpe3ZhciBvLGE9clswXTsibnVtYmVyIj09dHlwZW9mIGE/bz1pW2FdOihvPWEmJmFbVGVdKXx8KG89YSksbyYmInN0cmluZyI9PXR5cGVvZiBvLnR5cGU/Im5vdFNjaGVkdWxlZCIhPT1vLnN0YXRlJiYoby5jYW5jZWxGbiYmby5kYXRhLmlzUGVyaW9kaWN8fDA9PT1vLnJ1bkNvdW50KSYmKCJudW1iZXIiPT10eXBlb2YgYT9kZWxldGUgaVthXTphJiYoYVtUZV09bnVsbCksby56b25lLmNhbmNlbFRhc2sobykpOnQuYXBwbA=="
                },
                {
                    "key": "asdf?polyfills.b948c5521048b3f55fad.js?2?2",
                    "type": "binary",
                    "value": "base64:eShlLHIpfX0pKX1mdW5jdGlvbiBFZShlLHQpe2lmKCFab25lW3Quc3ltYm9sKCJwYXRjaEV2ZW50VGFyZ2V0IildKXtmb3IodmFyIG49dC5nZXRHbG9iYWxPYmplY3RzKCkscj1uLmV2ZW50TmFtZXMsbz1uLnpvbmVTeW1ib2xFdmVudE5hbWVzLGE9bi5UUlVFX1NUUixpPW4uRkFMU0VfU1RSLGM9bi5aT05FX1NZTUJPTF9QUkVGSVgscz0wO3M8ci5sZW5ndGg7cysrKXt2YXIgdT1yW3NdLGw9YysodStpKSxmPWMrKHUrYSk7b1t1XT17fSxvW3VdW2ldPWwsb1t1XVthXT1mfXZhciBwPWUuRXZlbnRUYXJnZXQ7aWYocCYmcC5wcm90b3R5cGUpcmV0dXJuIHQucGF0Y2hFdmVudFRhcmdldChlLFtwJiZwLnByb3RvdHlwZV0pLCEwfX1ab25lLl9fbG9hZF9wYXRjaCgibGVnYWN5IiwoZnVuY3Rpb24oZSl7dmFyIHQ9ZVtab25lLl9fc3ltYm9sX18oImxlZ2FjeVBhdGNoIildO3QmJnQoKX0pKSxab25lLl9fbG9hZF9wYXRjaCgidGltZXJzIiwoZnVuY3Rpb24oZSl7d2UoZSwic2V0IiwiY2xlYXIiLCJUaW1lb3V0Iiksd2UoZSwic2V0IiwiY2xlYXIiLCJJbnRlcnZhbCIpLHdlKGUsInNldCIsImNsZWFyIiwiSW1tZWRpYXRlIil9KSksWm9uZS5fX2xvYWRfcGF0Y2goInJlcXVlc3RBbmltYXRpb25GcmFtZSIsKGZ1bmN0aW9uKGUpe3dlKGUsInJlcXVlc3QiLCJjYW5jZWwiLCJBbmltYXRpb25GcmFtZSIpLHdlKGUsIm1velJlcXVlc3QiLCJtb3pDYW5jZWwiLCJBbmltYXRpb25GcmFtZSIpLHdlKGUsIndlYmtpdFJlcXVlc3QiLCJ3ZWJraXRDYW5jZWwiLCJBbmltYXRpb25GcmFtZSIpfSkpLFpvbmUuX19sb2FkX3BhdGNoKCJibG9ja2luZyIsKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPVsiYWxlcnQiLCJwcm9tcHQiLCJjb25maXJtIl0scj0wO3I8bi5sZW5ndGg7cisrKVIoZSxuW3JdLChmdW5jdGlvbihuLHIsbyl7cmV0dXJuIGZ1bmN0aW9uKHIsYSl7cmV0dXJuIHQuY3VycmVudC5ydW4obixlLGEsbyl9fSkpfSkpLFpvbmUuX19sb2FkX3BhdGNoKCJFdmVudFRhcmdldCIsKGZ1bmN0aW9uKGUsdCxuKXshZnVuY3Rpb24oZSx0KXt0LnBhdGNoRXZlbnRQcm90b3R5cGUoZSx0KX0oZSxuKSxFZShlLG4pO3ZhciByPWUuWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldDtyJiZyLnByb3RvdHlwZSYmbi5wYXRjaEV2ZW50VGFyZ2V0KGUsW3IucHJvdG90eXBlXSksQygiTXV0YXRpb25PYnNlcnZlciIpLEMoIldlYktpdE11dGF0aW9uT2JzZXJ2ZXIiKSxDKCJJbnRlcnNlY3Rpb25PYnNlcnZlciIpLEMoIkZpbGVSZWFkZXIiKX0pKSxab25lLl9fbG9hZF9wYXRjaCgib25fcHJvcGVydHkiLChmdW5jdGlvbihlLHQsbil7bWUobixlKSxPYmplY3QuZGVmaW5lUHJvcGVydHk9ZnVuY3Rpb24oZSx0LG4pe2lmKG9lKGUsdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFzc2lnbiB0byByZWFkIG9ubHkgcHJvcGVydHkgJyIrdCsiJyBvZiAiK2UpO3ZhciByPW4uY29uZmlndXJhYmxlO3JldHVybiJwcm90b3R5cGUiIT09dCYmKG49YWUoZSx0LG4pKSxpZShlLHQsbixyKX0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24obil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix0W25dKX0pKSxlfSxPYmplY3QuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIm9iamVjdCIhPXR5cGVvZiB0fHxPYmplY3QuaXNGcm96ZW4odCl8fE9iamVjdC5rZXlzKHQpLmZvckVhY2goKGZ1bmN0aW9uKG4pe3Rbbl09YWUoZSxuLHRbbl0pfSkpLHRlKGUsdCl9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lZShlLHQpO3JldHVybiBuJiZvZShlLHQpJiYobi5jb25maWd1cmFibGU9ITEpLG59fSkpLFpvbmUuX19sb2FkX3BhdGNoKCJjdXN0b21FbGVtZW50cyIsKGZ1bmN0aW9uKGUsdCxuKXshZnVuY3Rpb24oZSx0KXt2YXIgbj10LmdldEdsb2JhbE9iamVjdHMoKTsobi5pc0Jyb3dzZXJ8fG4uaXNNaXgpJiZlLmN1c3RvbUVsZW1lbnRzJiYiY3VzdG9tRWxlbWVudHMiaW4gZSYmdC5wYXRjaENhbGxiYWNrcyh0LGUuY3VzdG9tRWxlbWVudHMsImN1c3RvbUVsZW1lbnRzIiwiZGVmaW5lIixbImNvbm5lY3RlZENhbGxiYWNrIiwiZGlzY29ubmVjdGVkQ2FsbGJhY2siLCJhZG9wdGVkQ2FsbGJhY2siLCJhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2siXSl9KGUsbil9KSksWm9uZS5fX2xvYWRfcGF0Y2goIlhIUiIsKGZ1bmN0aW9uKGUsdCl7IWZ1bmN0aW9uKGUpe3ZhciBsPWUuWE1MSHR0cFJlcXVlc3Q7aWYobCl7dmFyIGY9bC5wcm90b3R5cGUscD1mW3NdLGg9Zlt1XTtpZighcCl7dmFyIHk9ZS5YTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0O2lmKHkpe3ZhciBnPXkucHJvdG90eXBlO3A9Z1tzXSxoPWdbdV19fXZhciBfPSJyZWFkeXN0YXRlY2hhbmdlIixtPSJzY2hlZHVsZWQiLGI9UihmLCJvcGVuIiwoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oZSx0KXtyZXR1cm4gZVtyXT0wPT10WzJdLGVbaV09dFsxXSxiLmFwcGx5KGUsdCl9fSkpLGs9digiZmV0Y2hUYXNrQWJvcnRpbmciKSxUPXYoImZldGNoVGFza1NjaGVkdWxpbmciKSx3PVIoZiwic2VuZCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7aWYoITA9PT10LmN1cnJlbnRbVF0pcmV0dXJuIHcuYXBwbHkoZSxuKTtpZihlW3JdKXJldHVybiB3LmFwcGx5KGUsbik7dmFyIG89e3RhcmdldDplLHVybDplW2ldLGlzUGVyaW9kaWM6ITEsYXJnczpuLGFib3J0ZWQ6ITF9LGE9ZCgiWE1MSHR0cFJlcXVlc3Quc2VuZCIsUyxvLE8sUCk7ZSYmITA9PT1lW2NdJiYhby5hYm9ydGVkJiZhLnN0YXRlPT09bSYmYS5pbnZva2UoKX19KSksRT1SKGYsImFib3J0IiwoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oZSxyKXt2YXIgbz1lW25dO2lmKG8mJiJzdHJpbmciPT10eXBlb2Ygby50eXBlKXtpZihudWxsPT1vLmNhbmNlbEZufHxvLmRhdGEmJm8uZGF0YS5hYm9ydGVkKXJldHVybjtvLnpvbmUuY2FuY2VsVGFzayhvKX1lbHNlIGlmKCEwPT09dC5jdXJyZW50W2tdKXJldHVybiBFLmFwcGx5KGUscil9fSkpfWZ1bmN0aW9uIE8oZSl7dmFyIHQ9ZS5kYXRhLHI9dC50YXJnZXQ7clthXT0hMSxyW2NdPSExO3ZhciBpPXJbb107cHx8KHA9cltzXSxoPXJbdV0pLGkmJmguY2FsbChyLF8saSk7dmFyIGw9cltvXT1mdW5jdGlvbigpe2lmKHIucmVhZHlTdGF0ZT09PXIuRE9ORSlpZighdC5hYm9ydGVkJiZyW2FdJiZlLnN0YXRlPT09bSl7dmFyIG49ci5fX3pvbmVfc3ltYm9sX19sb2FkZmFsc2U7aWYobiYmbi5sZW5ndGg+MCl7dmFyIG89ZS5pbnZva2U7ZS5pbnZva2U9ZnVuY3Rpb24oKXtmb3IodmFyIG49ci5fX3pvbmVfc3ltYm9sX19sb2FkZmFsc2UsYT0wO2E8bi5sZW5ndGg7YSsrKW5bYV09PT1lJiZuLnNwbGljZShhLDEpO3QuYWJvcnRlZHx8ZS5zdGF0ZSE9PW18fG8uY2FsbChlKX0sbi5wdXNoKGUpfWVsc2UgZS5pbnZva2UoKX1lbHNlIHQuYWJvcnRlZHx8ITEhPT1yW2FdfHwocltjXT0hMCl9O3JldHVybiBwLmNhbGwocixfLGwpLHJbbl18fChyW25dPWUpLHcuYXBwbHkocix0LmFyZ3MpLHJbYV09ITAsZX1mdW5jdGlvbiBTKCl7fWZ1bmN0aW9uIFAoZSl7dmFyIHQ9ZS5kYXRhO3JldHVybiB0LmFib3J0ZWQ9ITAsRS5hcHBseSh0LnRhcmdldCx0LmFyZ3MpfX0oZSk7dmFyIG49digieGhyVGFzayIpLHI9digieGhyU3luYyIpLG89digieGhyTGlzdGVuZXIiKSxhPXYoInhoclNjaGVkdWxlZCIpLGk9digieGhyVVJMIiksYz12KCJ4aHJFcnJvckJlZm9yZVNjaGVkdWxlZCIpfSkpLFpvbmUuX19sb2FkX3BhdGNoKCJnZW9sb2NhdGlvbiIsKGZ1bmN0aW9uKHQpe3QubmF2aWdhdG9yJiZ0Lm5hdmlnYXRvci5nZW9sb2NhdGlvbiYmZnVuY3Rpb24odCxuKXtmb3IodmFyIHI9dC5jb25zdHJ1Y3Rvci5uYW1lLG89ZnVuY3Rpb24obyl7dmFyIGE9bltvXSxpPXRbYV07aWYoaSl7aWYoIVQoZSh0LGEpKSlyZXR1cm4iY29udGludWUiO3RbYV09ZnVuY3Rpb24oZSl7dmFyIHQ9ZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0aGlzLGsoYXJndW1lbnRzLHIrIi4iK2EpKX07cmV0dXJuIE0odCxlKSx0fShpKX19LGE9MDthPG4ubGVuZ3RoO2ErKylvKGEpfSh0Lm5hdmlnYXRvci5nZW9sb2NhdGlvbixbImdldEN1cnJlbnRQb3NpdGlvbiIsIndhdGNoUG9zaXRpb24iXSl9KSksWm9uZS5fX2xvYWRfcGF0Y2goIlByb21pc2VSZWplY3Rpb25FdmVudCIsKGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gZnVuY3Rpb24obil7WShlLHQpLmZvckVhY2goKGZ1bmN0aW9uKHIpe3ZhciBvPWUuUHJvbWlzZVJlamVjdGlvbkV2ZW50O2lmKG8pe3ZhciBhPW5ldyBvKHQse3Byb21pc2U6bi5wcm9taXNlLHJlYXNvbjpuLnJlamVjdGlvbn0pO3IuaW52b2tlKGEpfX0pKX19ZS5Qcm9taXNlUmVqZWN0aW9uRXZlbnQmJih0W3YoInVuaGFuZGxlZFByb21pc2VSZWplY3Rpb25IYW5kbGVyIildPW4oInVuaGFuZGxlZHJlamVjdGlvbiIpLHRbdigicmVqZWN0aW9uSGFuZGxlZEhhbmRsZXIiKV09bigicmVqZWN0aW9uaGFuZGxlZCIpKX0pKX0oKX0sMjpmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPW4oImhOL2ciKX0sImhOL2ciOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7bi5yKHQpLG4oIjBUV3AiKX0sbXJTRzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO24ucih0KSxuLmQodCwiX19leHRlbmRzIiwoZnVuY3Rpb24oKXtyZXR1cm4gb30pKSxuLmQodCwiX19hc3NpZ24iLChmdW5jdGlvbigpe3JldHVybiBhfSkpLG4uZCh0LCJfX3Jlc3QiLChmdW5jdGlvbigpe3JldHVybiBpfSkpLG4uZCh0LCJfX2RlY29yYXRlIiwoZnVuY3Rpb24oKXtyZXR1cm4gY30pKSxuLmQodCwiX19wYXJhbSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHN9KSksbi5kKHQsIl9fbWV0YWRhdGEiLChmdW5jdGlvbigpe3JldHVybiB1fSkpLG4uZCh0LCJfX2F3YWl0ZXIiLChmdW5jdGlvbigpe3JldHVybiBsfSkpLG4uZCh0LCJfX2dlbmVyYXRvciIsKGZ1bmN0aW9uKCl7cmV0dXJuIGZ9KSksbi5kKHQsIl9fZXhwb3J0U3RhciIsKGZ1bmN0aW9uKCl7cmV0dXJuIHB9KSksbi5kKHQsIl9fdmFsdWVzIiwoZnVuY3Rpb24oKXtyZXR1cm4gaH0pKSxuLmQodCwiX19yZWFkIiwoZnVuY3Rpb24oKXtyZXR1cm4gZH0pKSxuLmQodCwiX19zcHJlYWQiLChmdW5jdGlvbigpe3JldHVybiB2fSkpLG4uZCh0LCJfX3NwcmVhZEFycmF5cyIsKGZ1bmN0aW9uKCl7cmV0dXJuIHl9KSksbi5kKHQsIl9fYXdhaXQiLChmdW5jdGlvbigpe3JldHVybiBnfSkpLG4uZCh0LCJfX2FzeW5jR2VuZXJhdG9yIiwoZnVuY3Rpb24oKXtyZXR1cm4gX30pKSxuLmQodCwiX19hc3luY0RlbGVnYXRvciIsKGZ1bmN0aW9uKCl7cmV0dXJuIG19KSksbi5kKHQsIl9fYXN5bmNWYWx1ZXMiLChmdW5jdGlvbigpe3JldHVybiBifSkpLG4uZCh0LCJfX21ha2VUZW1wbGF0ZU9iamVjdCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGt9KSksbi5kKHQsIl9faW1wb3J0U3RhciIsKGZ1bmN0aW9uKCl7cmV0dXJuIFR9KSksbi5kKHQsIl9faW1wb3J0RGVmYXVsdCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHd9KSk7dmFyIHI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4ocj1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZSx0KXtlLl9fcHJvdG9fXz10fXx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gdCl0Lmhhc093blByb3BlcnR5KG4pJiYoZVtuXT10W25dKX0pKGUsdCl9O2Z1bmN0aW9uIG8oZSx0KXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj1lfXIoZSx0KSxlLnByb3RvdHlwZT1udWxsPT09dD9PYmplY3QuY3JlYXRlKHQpOihuLnByb3RvdHlwZT10LnByb3RvdHlwZSxuZXcgbil9dmFyIGE9ZnVuY3Rpb24oKXtyZXR1cm4oYT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQsbj0xLHI9YXJndW1lbnRzLmxlbmd0aDtuPHI7bisrKWZvcih2YXIgbyBpbiB0PWFyZ3VtZW50c1tuXSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxvKSYmKGVbb109dFtvXSk7cmV0dXJuIGV9KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Z1bmN0aW9uIGkoZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJiJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn1mdW5jdGlvbiBjKGUsdCxuLHIpe3ZhciBvLGE9YXJndW1lbnRzLmxlbmd0aCxpPWE8Mz90Om51bGw9PT1yP3I9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pOnI7aWYoIm9iamVjdCI9PXR5cGVvZiBSZWZsZWN0JiYiZnVuY3Rpb24iPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlpPVJlZmxlY3QuZGVjb3JhdGUoZSx0LG4scik7ZWxzZSBmb3IodmFyIGM9ZS5sZW5ndGgtMTtjPj0wO2MtLSkobz1lW2NdKSYmKGk9KGE8Mz9vKGkpOmE+Mz9vKHQsbixpKTpvKHQsbikpfHxpKTtyZXR1cm4gYT4zJiZpJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLGkpLGl9ZnVuY3Rpb24gcyhlLHQpe3JldHVybiBmdW5jdGlvbihuLHIpe3QobixyLGUpfX1mdW5jdGlvbiB1KGUsdCl7aWYoIm9iamVjdCI9PXR5cGVvZiBSZWZsZWN0JiYiZnVuY3Rpb24iPT10eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSlyZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShlLHQpfWZ1bmN0aW9uIGwoZSx0LG4scil7cmV0dXJuIG5ldyhufHwobj1Qcm9taXNlKSkoKGZ1bmN0aW9uKG8sYSl7ZnVuY3Rpb24gaShlKXt0cnl7cyhyLm5leHQoZSkpfWNhdGNoKHQpe2EodCl9fWZ1bmN0aW9uIGMoZSl7dHJ5e3Moci50aHJvdyhlKSl9Y2F0Y2godCl7YSh0KX19ZnVuY3Rpb24gcyhlKXtlLmRvbmU/byhlLnZhbHVlKTpuZXcgbigoZnVuY3Rpb24odCl7dChlLnZhbHVlKX0pKS50aGVuKGksYyl9cygocj1yLmFwcGx5KGUsdHx8W10pKS5uZXh0KCkpfSkpfWZ1bmN0aW9uIGYoZSx0KXt2YXIgbixyLG8sYSxpPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJm9bMF0pdGhyb3cgb1sxXTtyZXR1cm4gb1sxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBhPXtuZXh0OmMoMCksdGhyb3c6YygxKSxyZXR1cm46YygyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKGFbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksYTtmdW5jdGlvbiBjKGEpe3JldHVybiBmdW5jdGlvbihjKXtyZXR1cm4gZnVuY3Rpb24oYSl7aWYobil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtpOyl0cnl7aWYobj0xLHImJihvPTImYVswXT9yLnJldHVybjphWzBdP3IudGhyb3d8fCgobz1yLnJldHVybikmJm8uY2FsbChyKSwwKTpyLm5leHQpJiYhKG89by5jYWxsKHIsYVsxXSkpLmRvbmUpcmV0dXJuIG87c3dpdGNoKHI9MCxvJiYoYT1bMiZhWzBdLG8udmFsdWVdKSxhWzBdKXtjYXNlIDA6Y2FzZSAxOm89YTticmVhaztjYXNlIDQ6cmV0dXJuIGkubGFiZWwrKyx7dmFsdWU6YVsxXSxkb25lOiExfTtjYXNlIDU6aS5sYWJlbCsrLHI9YVsxXSxhPVswXTtjb250aW51ZTtjYXNlIDc6YT1pLm9wcy5wb3AoKSxpLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKG89KG89aS50cnlzKS5sZW5ndGg+MCYmb1tvLmxlbmd0aC0xXSkmJig2PT09YVswXXx8Mj09PWFbMF0pKXtpPTA7Y29udGludWV9aWYoMz09PWFbMF0mJighb3x8YVsxXT5vWzBdJiZhWzFdPG9bM10pKXtpLmxhYmVsPWFbMV07YnJlYWt9aWYoNj09PWFbMF0mJmkubGFiZWw8b1sxXSl7aS5sYWJlbD1vWzFdLG89YTticmVha31pZihvJiZpLmxhYmVsPG9bMl0pe2kubGFiZWw9b1syXSxpLm9wcy5wdXNoKGEpO2JyZWFrfW9bMl0mJmkub3BzLnBvcCgpLGkudHJ5cy5wb3AoKTtjb250aW51ZX1hPXQuY2FsbChlLGkpfWNhdGNoKGMpe2E9WzYsY10scj0wfWZpbmFsbHl7bj1vPTB9aWYoNSZhWzBdKXRocm93IGFbMV07cmV0dXJue3ZhbHVlOmFbMF0/YVsxXTp2b2lkIDAsZG9uZTohMH19KFthLGNdKX19fWZ1bmN0aW9uIHAoZSx0KXtmb3IodmFyIG4gaW4gZSl0Lmhhc093blByb3BlcnR5KG4pfHwodFtuXT1lW25dKX1mdW5jdGlvbiBoKGUpe3ZhciB0PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXSxuPTA7cmV0dXJuIHQ/dC5jYWxsKGUpOntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIGUmJm4+PWUubGVuZ3RoJiYoZT12b2lkIDApLHt2YWx1ZTplJiZlW24rK10sZG9uZTohZX19fX1mdW5jdGlvbiBkKGUsdCl7dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdO2lmKCFuKXJldHVybiBlO3ZhciByLG8sYT1uLmNhbGwoZSksaT1bXTt0cnl7Zm9yKDsodm9pZCAwPT09dHx8dC0tID4wKSYmIShyPWEubmV4dCgpKS5kb25lOylpLnB1c2goci52YWx1ZSl9Y2F0Y2goYyl7bz17ZXJyb3I6Y319ZmluYWxseXt0cnl7ciYmIXIuZG9uZSYmKG49YS5yZXR1cm4pJiZuLmNhbGwoYSl9ZmluYWxseXtpZihvKXRocm93IG8uZXJyb3J9fXJldHVybiBpfWZ1bmN0aW9uIHYoKXtmb3IodmFyIGU9W10sdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspZT1lLmNvbmNhdChkKGFyZ3VtZW50c1t0XSkpO3JldHVybiBlfWZ1bmN0aW9uIHkoKXtmb3IodmFyIGU9MCx0PTAsbj1hcmd1bWVudHMubGVuZ3RoO3Q8bjt0KyspZSs9YXJndW1lbnRzW3RdLmxlbmd0aDt2YXIgcj1BcnJheShlKSxvPTA7Zm9yKHQ9MDt0PG47dCsrKWZvcih2YXIgYT1hcmd1bWVudHNbdF0saT0wLGM9YS5sZW5ndGg7aTxjO2krKyxvKyspcltvXT1hW2ldO3JldHVybiByfWZ1bmN0aW9uIGcoZSl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBnPyh0aGlzLnY9ZSx0aGlzKTpuZXcgZyhlKX1mdW5jdGlvbiBfKGUsdCxuKXtpZighU3ltYm9sLmFzeW5jSXRlcmF0b3IpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIik7dmFyIHIsbz1uLmFwcGx5KGUsdHx8W10pLGE9W107cmV0dXJuIHI9e30saSgibmV4dCIpLGkoInRocm93IiksaSgicmV0dXJuIikscltTeW1ib2wuYXN5bmNJdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30scjtmdW5jdGlvbiBpKGUpe29bZV0mJihyW2VdPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24obixyKXthLnB1c2goW2UsdCxuLHJdKT4xfHxjKGUsdCl9KSl9KX1mdW5jdGlvbiBjKGUsdCl7dHJ5eyhuPW9bZV0odCkpLnZhbHVlIGluc3RhbmNlb2YgZz9Qcm9taXNlLnJlc29sdmUobi52YWx1ZS52KS50aGVuKHMsdSk6bChhWzBdWzJdLG4pfWNhdGNoKHIpe2woYVswXVszXSxyKX12YXIgbn1mdW5jdGlvbiBzKGUpe2MoIm5leHQiLGUpfWZ1bmN0aW9uIHUoZSl7YygidGhyb3ciLGUpfWZ1bmN0aW9uIGwoZSx0KXtlKHQpLGEuc2hpZnQoKSxhLmxlbmd0aCYmYyhhWzBdWzBdLGFbMF1bMV0pfX1mdW5jdGlvbiBtKGUpe3ZhciB0LG47cmV0dXJuIHQ9e30scigibmV4dCIpLHIoInRocm93IiwoZnVuY3Rpb24oZSl7dGhyb3cgZX0pKSxyKCJyZXR1cm4iKSx0W1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sdDtmdW5jdGlvbiByKHIsbyl7dFtyXT1lW3JdP2Z1bmN0aW9uKHQpe3JldHVybihuPSFuKT97dmFsdWU6ZyhlW3JdKHQpKSxkb25lOiJyZXR1cm4iPT09cn06bz9vKHQpOnR9Om99fWZ1bmN0aW9uIGIoZSl7aWYoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKXRocm93IG5ldyBUeXBlRXJyb3IoIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpO3ZhciB0LG49ZVtTeW1ib2wuYXN5bmNJdGVyYXRvcl07cmV0dXJuIG4/bi5jYWxsKGUpOihlPWgoZSksdD17fSxyKCJuZXh0IikscigidGhyb3ciKSxyKCJyZXR1cm4iKSx0W1N5bWJvbC5hc3luY0l0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSx0KTtmdW5jdGlvbiByKG4pe3Rbbl09ZVtuXSYmZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG8peyFmdW5jdGlvbihlLHQsbixyKXtQcm9taXNlLnJlc29sdmUocikudGhlbigoZnVuY3Rpb24odCl7ZSh7dmFsdWU6dCxkb25lOm59KX0pLHQpfShyLG8sKHQ9ZVtuXSh0KSkuZG9uZSx0LnZhbHVlKX0pKX19fWZ1bmN0aW9uIGsoZSx0KXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5P09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJyYXciLHt2YWx1ZTp0fSk6ZS5yYXc9dCxlfWZ1bmN0aW9uIFQoZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmKHRbbl09ZVtuXSk7cmV0dXJuIHQuZGVmYXVsdD1lLHR9ZnVuY3Rpb24gdyhlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19fX0sW1syLDBdXV0pOw=="
                }
            ]
        },
        {
            "type": 12,
            "id": "2QMovb9cMerd8cAHXzAqw1XoJuL62YSffSZ1GqiV4Qgf",
            "fee": 12900000,
            "feeAssetId": null,
            "timestamp": 1575553259390,
            "version": 1,
            "sender": "3N2rk3yzChsJp4wCS5VLo5Q3ifLmDChfbzQ",
            "senderPublicKey": "BdACbbxkapMbmbtG7UxdPQ5Y8grEhk9cNxLNGAF5znme",
            "proofs": [
                "4NcK6C7Pg6V8SvmoaLtBwGPvBxWkabYN5PyjKt3R2atDwERJgXbuM2XiCQRP37jSGBNSNVuVGAqx8ib2FJbLFwsx"
            ],
            "data": [
                {
                    "key": "asdf?main.e3350ff4d88d534234ef.js?4?0?0",
                    "type": "binary",
                    "value": "base64:KHdpbmRvdy53ZWJwYWNrSnNvbnA9d2luZG93LndlYnBhY2tKc29ucHx8W10pLnB1c2goW1sxXSx7MDpmdW5jdGlvbih0LGUsbil7dC5leHBvcnRzPW4oInpVbmIiKX0sbXJTRzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxuLmQoZSwiX19leHRlbmRzIiwoZnVuY3Rpb24oKXtyZXR1cm4gb30pKSxuLmQoZSwiX19hc3NpZ24iLChmdW5jdGlvbigpe3JldHVybiBpfSkpLG4uZChlLCJfX3Jlc3QiLChmdW5jdGlvbigpe3JldHVybiBhfSkpLG4uZChlLCJfX2RlY29yYXRlIiwoZnVuY3Rpb24oKXtyZXR1cm4gdX0pKSxuLmQoZSwiX19wYXJhbSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGx9KSksbi5kKGUsIl9fbWV0YWRhdGEiLChmdW5jdGlvbigpe3JldHVybiBzfSkpLG4uZChlLCJfX2F3YWl0ZXIiLChmdW5jdGlvbigpe3JldHVybiBjfSkpLG4uZChlLCJfX2dlbmVyYXRvciIsKGZ1bmN0aW9uKCl7cmV0dXJuIGZ9KSksbi5kKGUsIl9fZXhwb3J0U3RhciIsKGZ1bmN0aW9uKCl7cmV0dXJuIGh9KSksbi5kKGUsIl9fdmFsdWVzIiwoZnVuY3Rpb24oKXtyZXR1cm4gcH0pKSxuLmQoZSwiX19yZWFkIiwoZnVuY3Rpb24oKXtyZXR1cm4gZH0pKSxuLmQoZSwiX19zcHJlYWQiLChmdW5jdGlvbigpe3JldHVybiBnfSkpLG4uZChlLCJfX3NwcmVhZEFycmF5cyIsKGZ1bmN0aW9uKCl7cmV0dXJuIHZ9KSksbi5kKGUsIl9fYXdhaXQiLChmdW5jdGlvbigpe3JldHVybiB5fSkpLG4uZChlLCJfX2FzeW5jR2VuZXJhdG9yIiwoZnVuY3Rpb24oKXtyZXR1cm4gbX0pKSxuLmQoZSwiX19hc3luY0RlbGVnYXRvciIsKGZ1bmN0aW9uKCl7cmV0dXJuIF99KSksbi5kKGUsIl9fYXN5bmNWYWx1ZXMiLChmdW5jdGlvbigpe3JldHVybiB3fSkpLG4uZChlLCJfX21ha2VUZW1wbGF0ZU9iamVjdCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGJ9KSksbi5kKGUsIl9faW1wb3J0U3RhciIsKGZ1bmN0aW9uKCl7cmV0dXJuIHh9KSksbi5kKGUsIl9faW1wb3J0RGVmYXVsdCIsKGZ1bmN0aW9uKCl7cmV0dXJuIEN9KSk7dmFyIHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4ocj1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24odCxlKXt0Ll9fcHJvdG9fXz1lfXx8ZnVuY3Rpb24odCxlKXtmb3IodmFyIG4gaW4gZSllLmhhc093blByb3BlcnR5KG4pJiYodFtuXT1lW25dKX0pKHQsZSl9O2Z1bmN0aW9uIG8odCxlKXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fXIodCxlKSx0LnByb3RvdHlwZT1udWxsPT09ZT9PYmplY3QuY3JlYXRlKGUpOihuLnByb3RvdHlwZT1lLnByb3RvdHlwZSxuZXcgbil9dmFyIGk9ZnVuY3Rpb24oKXtyZXR1cm4oaT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbih0KXtmb3IodmFyIGUsbj0xLHI9YXJndW1lbnRzLmxlbmd0aDtuPHI7bisrKWZvcih2YXIgbyBpbiBlPWFyZ3VtZW50c1tuXSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxvKSYmKHRbb109ZVtvXSk7cmV0dXJuIHR9KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Z1bmN0aW9uIGEodCxlKXt2YXIgbj17fTtmb3IodmFyIHIgaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxyKSYmZS5pbmRleE9mKHIpPDAmJihuW3JdPXRbcl0pO2lmKG51bGwhPXQmJiJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCk7bzxyLmxlbmd0aDtvKyspZS5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh0LHJbb10pJiYobltyW29dXT10W3Jbb11dKX1yZXR1cm4gbn1mdW5jdGlvbiB1KHQsZSxuLHIpe3ZhciBvLGk9YXJndW1lbnRzLmxlbmd0aCxhPWk8Mz9lOm51bGw9PT1yP3I9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLG4pOnI7aWYoIm9iamVjdCI9PXR5cGVvZiBSZWZsZWN0JiYiZnVuY3Rpb24iPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlhPVJlZmxlY3QuZGVjb3JhdGUodCxlLG4scik7ZWxzZSBmb3IodmFyIHU9dC5sZW5ndGgtMTt1Pj0wO3UtLSkobz10W3VdKSYmKGE9KGk8Mz9vKGEpOmk+Mz9vKGUsbixhKTpvKGUsbikpfHxhKTtyZXR1cm4gaT4zJiZhJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLGEpLGF9ZnVuY3Rpb24gbCh0LGUpe3JldHVybiBmdW5jdGlvbihuLHIpe2UobixyLHQpfX1mdW5jdGlvbiBzKHQsZSl7aWYoIm9iamVjdCI9PXR5cGVvZiBSZWZsZWN0JiYiZnVuY3Rpb24iPT10eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSlyZXR1cm4gUmVmbGVjdC5tZXRhZGF0YSh0LGUpfWZ1bmN0aW9uIGModCxlLG4scil7cmV0dXJuIG5ldyhufHwobj1Qcm9taXNlKSkoKGZ1bmN0aW9uKG8saSl7ZnVuY3Rpb24gYSh0KXt0cnl7bChyLm5leHQodCkpfWNhdGNoKGUpe2koZSl9fWZ1bmN0aW9uIHUodCl7dHJ5e2woci50aHJvdyh0KSl9Y2F0Y2goZSl7aShlKX19ZnVuY3Rpb24gbCh0KXt0LmRvbmU/byh0LnZhbHVlKTpuZXcgbigoZnVuY3Rpb24oZSl7ZSh0LnZhbHVlKX0pKS50aGVuKGEsdSl9bCgocj1yLmFwcGx5KHQsZXx8W10pKS5uZXh0KCkpfSkpfWZ1bmN0aW9uIGYodCxlKXt2YXIgbixyLG8saSxhPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJm9bMF0pdGhyb3cgb1sxXTtyZXR1cm4gb1sxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBpPXtuZXh0OnUoMCksdGhyb3c6dSgxKSxyZXR1cm46dSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKGlbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksaTtmdW5jdGlvbiB1KGkpe3JldHVybiBmdW5jdGlvbih1KXtyZXR1cm4gZnVuY3Rpb24oaSl7aWYobil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDthOyl0cnl7aWYobj0xLHImJihvPTImaVswXT9yLnJldHVybjppWzBdP3IudGhyb3d8fCgobz1yLnJldHVybikmJm8uY2FsbChyKSwwKTpyLm5leHQpJiYhKG89by5jYWxsKHIsaVsxXSkpLmRvbmUpcmV0dXJuIG87c3dpdGNoKHI9MCxvJiYoaT1bMiZpWzBdLG8udmFsdWVdKSxpWzBdKXtjYXNlIDA6Y2FzZSAxOm89aTticmVhaztjYXNlIDQ6cmV0dXJuIGEubGFiZWwrKyx7dmFsdWU6aVsxXSxkb25lOiExfTtjYXNlIDU6YS5sYWJlbCsrLHI9aVsxXSxpPVswXTtjb250aW51ZTtjYXNlIDc6aT1hLm9wcy5wb3AoKSxhLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKG89KG89YS50cnlzKS5sZW5ndGg+MCYmb1tvLmxlbmd0aC0xXSkmJig2PT09aVswXXx8Mj09PWlbMF0pKXthPTA7Y29udGludWV9aWYoMz09PWlbMF0mJighb3x8aVsxXT5vWzBdJiZpWzFdPG9bM10pKXthLmxhYmVsPWlbMV07YnJlYWt9aWYoNj09PWlbMF0mJmEubGFiZWw8b1sxXSl7YS5sYWJlbD1vWzFdLG89aTticmVha31pZihvJiZhLmxhYmVsPG9bMl0pe2EubGFiZWw9b1syXSxhLm9wcy5wdXNoKGkpO2JyZWFrfW9bMl0mJmEub3BzLnBvcCgpLGEudHJ5cy5wb3AoKTtjb250aW51ZX1pPWUuY2FsbCh0LGEpfWNhdGNoKHUpe2k9WzYsdV0scj0wfWZpbmFsbHl7bj1vPTB9aWYoNSZpWzBdKXRocm93IGlbMV07cmV0dXJue3ZhbHVlOmlbMF0/aVsxXTp2b2lkIDAsZG9uZTohMH19KFtpLHVdKX19fWZ1bmN0aW9uIGgodCxlKXtmb3IodmFyIG4gaW4gdCllLmhhc093blByb3BlcnR5KG4pfHwoZVtuXT10W25dKX1mdW5jdGlvbiBwKHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXSxuPTA7cmV0dXJuIGU/ZS5jYWxsKHQpOntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIHQmJm4+PXQubGVuZ3RoJiYodD12b2lkIDApLHt2YWx1ZTp0JiZ0W24rK10sZG9uZTohdH19fX1mdW5jdGlvbiBkKHQsZSl7dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaXRlcmF0b3JdO2lmKCFuKXJldHVybiB0O3ZhciByLG8saT1uLmNhbGwodCksYT1bXTt0cnl7Zm9yKDsodm9pZCAwPT09ZXx8ZS0tID4wKSYmIShyPWkubmV4dCgpKS5kb25lOylhLnB1c2goci52YWx1ZSl9Y2F0Y2godSl7bz17ZXJyb3I6dX19ZmluYWxseXt0cnl7ciYmIXIuZG9uZSYmKG49aS5yZXR1cm4pJiZuLmNhbGwoaSl9ZmluYWxseXtpZihvKXRocm93IG8uZXJyb3J9fXJldHVybiBhfWZ1bmN0aW9uIGcoKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdD10LmNvbmNhdChkKGFyZ3VtZW50c1tlXSkpO3JldHVybiB0fWZ1bmN0aW9uIHYoKXtmb3IodmFyIHQ9MCxlPTAsbj1hcmd1bWVudHMubGVuZ3RoO2U8bjtlKyspdCs9YXJndW1lbnRzW2VdLmxlbmd0aDt2YXIgcj1BcnJheSh0KSxvPTA7Zm9yKGU9MDtlPG47ZSsrKWZvcih2YXIgaT1hcmd1bWVudHNbZV0sYT0wLHU9aS5sZW5ndGg7YTx1O2ErKyxvKyspcltvXT1pW2FdO3JldHVybiByfWZ1bmN0aW9uIHkodCl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiB5Pyh0aGlzLnY9dCx0aGlzKTpuZXcgeSh0KX1mdW5jdGlvbiBtKHQsZSxuKXtpZighU3ltYm9sLmFzeW5jSXRlcmF0b3IpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIik7dmFyIHIsbz1uLmFwcGx5KHQsZXx8W10pLGk9W107cmV0dXJuIHI9e30sYSgibmV4dCIpLGEoInRocm93IiksYSgicmV0dXJuIikscltTeW1ib2wuYXN5bmNJdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30scjtmdW5jdGlvbiBhKHQpe29bdF0mJihyW3RdPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24obixyKXtpLnB1c2goW3QsZSxuLHJdKT4xfHx1KHQsZSl9KSl9KX1mdW5jdGlvbiB1KHQsZSl7dHJ5eyhuPW9bdF0oZSkpLnZhbHVlIGluc3RhbmNlb2YgeT9Qcm9taXNlLnJlc29sdmUobi52YWx1ZS52KS50aGVuKGwscyk6YyhpWzBdWzJdLG4pfWNhdGNoKHIpe2MoaVswXVszXSxyKX12YXIgbn1mdW5jdGlvbiBsKHQpe3UoIm5leHQiLHQpfWZ1bmN0aW9uIHModCl7dSgidGhyb3ciLHQpfWZ1bmN0aW9uIGModCxlKXt0KGUpLGkuc2hpZnQoKSxpLmxlbmd0aCYmdShpWzBdWzBdLGlbMF1bMV0pfX1mdW5jdGlvbiBfKHQpe3ZhciBlLG47cmV0dXJuIGU9e30scigibmV4dCIpLHIoInRocm93IiwoZnVuY3Rpb24odCl7dGhyb3cgdH0pKSxyKCJyZXR1cm4iKSxlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZTtmdW5jdGlvbiByKHIsbyl7ZVtyXT10W3JdP2Z1bmN0aW9uKGUpe3JldHVybihuPSFuKT97dmFsdWU6eSh0W3JdKGUpKSxkb25lOiJyZXR1cm4iPT09cn06bz9vKGUpOmV9Om99fWZ1bmN0aW9uIHcodCl7aWYoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKXRocm93IG5ldyBUeXBlRXJyb3IoIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpO3ZhciBlLG49dFtTeW1ib2wuYXN5bmNJdGVyYXRvcl07cmV0dXJuIG4/bi5jYWxsKHQpOih0PXAodCksZT17fSxyKCJuZXh0IikscigidGhyb3ciKSxyKCJyZXR1cm4iKSxlW1N5bWJvbC5hc3luY0l0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxlKTtmdW5jdGlvbiByKG4pe2Vbbl09dFtuXSYmZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG8peyFmdW5jdGlvbih0LGUsbixyKXtQcm9taXNlLnJlc29sdmUocikudGhlbigoZnVuY3Rpb24oZSl7dCh7dmFsdWU6ZSxkb25lOm59KX0pLGUpfShyLG8sKGU9dFtuXShlKSkuZG9uZSxlLnZhbHVlKX0pKX19fWZ1bmN0aW9uIGIodCxlKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5P09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJyYXciLHt2YWx1ZTplfSk6dC5yYXc9ZSx0fWZ1bmN0aW9uIHgodCl7aWYodCYmdC5fX2VzTW9kdWxlKXJldHVybiB0O3ZhciBlPXt9O2lmKG51bGwhPXQpZm9yKHZhciBuIGluIHQpT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwodCxuKSYmKGVbbl09dFtuXSk7cmV0dXJuIGUuZGVmYXVsdD10LGV9ZnVuY3Rpb24gQyh0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19fSx6VW5iOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpO3ZhciByPW4oIm1yU0ciKSxvPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKHQpe3JldHVybiB0JiYibnVtYmVyIj09dHlwZW9mIHQubGVuZ3RofTtmdW5jdGlvbiBpKHQpe3JldHVybiBudWxsIT09dCYmIm9iamVjdCI9PXR5cGVvZiB0fWZ1bmN0aW9uIGEodCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHR9ZnVuY3Rpb24gdSh0KXtyZXR1cm4gRXJyb3IuY2FsbCh0aGlzKSx0aGlzLm1lc3NhZ2U9dD90Lmxlbmd0aCsiIGVycm9ycyBvY2N1cnJlZCBkdXJpbmcgdW5zdWJzY3JpcHRpb246XG4iK3QubWFwKChmdW5jdGlvbih0LGUpe3JldHVybiBlKzErIikgIit0LnRvU3RyaW5nKCl9KSkuam9pbigiXG4gICIpOiIiLHRoaXMubmFtZT0iVW5zdWJzY3JpcHRpb25FcnJvciIsdGhpcy5lcnJvcnM9dCx0aGlzfXUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKTt2YXIgbD11LHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuY2xvc2VkPSExLHRoaXMuX3BhcmVudD1udWxsLHRoaXMuX3BhcmVudHM9bnVsbCx0aGlzLl9zdWJzY3JpcHRpb25zPW51bGwsdCYmKHRoaXMuX3Vuc3Vic2NyaWJlPXQpfXJldHVybiB0LnByb3RvdHlwZS51bnN1YnNjcmliZT1mdW5jdGlvbigpe3ZhciB0LGU9ITE7aWYoIXRoaXMuY2xvc2VkKXt2YXIgbj10aGlzLl9wYXJlbnQscj10aGlzLl9wYXJlbnRzLHU9dGhpcy5fdW5zdWJzY3JpYmUscz10aGlzLl9zdWJzY3JpcHRpb25zO3RoaXMuY2xvc2VkPSEwLHRoaXMuX3BhcmVudD1udWxsLHRoaXMuX3BhcmVudHM9bnVsbCx0aGlzLl9zdWJzY3JpcHRpb25zPW51bGw7Zm9yKHZhciBmPS0xLGg9cj9yLmxlbmd0aDowO247KW4ucmVtb3ZlKHRoaXMpLG49KytmPGgmJnJbZl18fG51bGw7aWYoYSh1KSl0cnl7dS5jYWxsKHRoaXMpfWNhdGNoKGQpe2U9ITAsdD1kIGluc3RhbmNlb2YgbD9jKGQuZXJyb3JzKTpbZF19aWYobyhzKSlmb3IoZj0tMSxoPXMubGVuZ3RoOysrZjxoOyl7dmFyIHA9c1tmXTtpZihpKHApKXRyeXtwLnVuc3Vic2NyaWJlKCl9Y2F0Y2goZCl7ZT0hMCx0PXR8fFtdLGQgaW5zdGFuY2VvZiBsP3Q9dC5jb25jYXQoYyhkLmVycm9ycykpOnQucHVzaChkKX19aWYoZSl0aHJvdyBuZXcgbCh0KX19LHQucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlKXt2YXIgbj1lO3N3aXRjaCh0eXBlb2YgZSl7Y2FzZSJmdW5jdGlvbiI6bj1uZXcgdChlKTtjYXNlIm9iamVjdCI6aWYobj09PXRoaXN8fG4uY2xvc2VkfHwiZnVuY3Rpb24iIT10eXBlb2Ygbi51bnN1YnNjcmliZSlyZXR1cm4gbjtpZih0aGlzLmNsb3NlZClyZXR1cm4gbi51bnN1YnNjcmliZSgpLG47aWYoIShuIGluc3RhbmNlb2YgdCkpe3ZhciByPW47KG49bmV3IHQpLl9zdWJzY3JpcHRpb25zPVtyXX1icmVhaztkZWZhdWx0OmlmKCFlKXJldHVybiB0LkVNUFRZO3Rocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkIHRlYXJkb3duICIrZSsiIGFkZGVkIHRvIFN1YnNjcmlwdGlvbi4iKX1pZihuLl9hZGRQYXJlbnQodGhpcykpe3ZhciBvPXRoaXMuX3N1YnNjcmlwdGlvbnM7bz9vLnB1c2gobik6dGhpcy5fc3Vic2NyaXB0aW9ucz1bbl19cmV0dXJuIG59LHQucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9zdWJzY3JpcHRpb25zO2lmKGUpe3ZhciBuPWUuaW5kZXhPZih0KTstMSE9PW4mJmUuc3BsaWNlKG4sMSl9fSx0LnByb3RvdHlwZS5fYWRkUGFyZW50PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3BhcmVudCxuPXRoaXMuX3BhcmVudHM7cmV0dXJuIGUhPT10JiYoZT9uPy0xPT09bi5pbmRleE9mKHQpJiYobi5wdXNoKHQpLCEwKToodGhpcy5fcGFyZW50cz1bdF0sITApOih0aGlzLl9wYXJlbnQ9dCwhMCkpfSx0LkVNUFRZPWZ1bmN0aW9uKHQpe3JldHVybiB0LmNsb3NlZD0hMCx0fShuZXcgdCksdH0oKTtmdW5jdGlvbiBjKHQpe3JldHVybiB0LnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5jb25jYXQoZSBpbnN0YW5jZW9mIGw/ZS5lcnJvcnM6ZSl9KSxbXSl9dmFyIGY9ITEsaD17UHJvbWlzZTp2b2lkIDAsc2V0IHVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmcodCl7Zj10fSxnZXQgdXNlRGVwcmVjYXRlZFN5bmNocm9ub3VzRXJyb3JIYW5kbGluZygpe3JldHVybiBmfX07ZnVuY3Rpb24gcCh0KXtzZXRUaW1lb3V0KChmdW5jdGlvbigpe3Rocm93IHR9KSl9dmFyIGQ9e2Nsb3NlZDohMCxuZXh0OmZ1bmN0aW9uKHQpe30sZXJyb3I6ZnVuY3Rpb24odCl7aWYoaC51c2VEZXByZWNhdGVkU3luY2hyb25vdXNFcnJvckhhbmRsaW5nKXRocm93IHQ7cCh0KX0sY29tcGxldGU6ZnVuY3Rpb24oKXt9fSxnPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2w/U3ltYm9sKCJyeFN1YnNjcmliZXIiKToiQEByeFN1YnNjcmliZXJfIitNYXRoLnJhbmRvbSgpLHY9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShuLHIsbyl7dmFyIGk9dC5jYWxsKHRoaXMpfHx0aGlzO3N3aXRjaChpLnN5bmNFcnJvclZhbHVlPW51bGwsaS5zeW5jRXJyb3JUaHJvd249ITEsaS5zeW5jRXJyb3JUaHJvd2FibGU9ITEsaS5pc1N0b3BwZWQ9ITEsYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAwOmkuZGVzdGluYXRpb249ZDticmVhaztjYXNlIDE6aWYoIW4pe2kuZGVzdGluYXRpb249ZDticmVha31pZigib2JqZWN0Ij09dHlwZW9mIG4pe24gaW5zdGFuY2VvZiBlPyhpLnN5bmNFcnJvclRocm93YWJsZT1uLnN5bmNFcnJvclRocm93YWJsZSxpLmRlc3RpbmF0aW9uPW4sbi5hZGQoaSkpOihpLnN5bmNFcnJvclRocm93YWJsZT0hMCxpLmRlc3RpbmF0aW9uPW5ldyB5KGksbikpO2JyZWFrfWRlZmF1bHQ6aS5zeW5jRXJyb3JUaHJvd2FibGU9ITAsaS5kZXN0aW5hdGlvbj1uZXcgeShpLG4scixvKX1yZXR1cm4gaX1yZXR1cm4gci5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZVtnXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxlLmNyZWF0ZT1mdW5jdGlvbih0LG4scil7dmFyIG89bmV3IGUodCxuLHIpO3JldHVybiBvLnN5bmNFcnJvclRocm93YWJsZT0hMSxvfSxlLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKHQpe3RoaXMuaXNTdG9wcGVkfHx0aGlzLl9uZXh0KHQpfSxlLnByb3RvdHlwZS5lcnJvcj1mdW5jdGlvbih0KXt0aGlzLmlzU3RvcHBlZHx8KHRoaXMuaXNTdG9wcGVkPSEwLHRoaXMuX2Vycm9yKHQpKX0sZS5wcm90b3R5cGUuY29tcGxldGU9ZnVuY3Rpb24oKXt0aGlzLmlzU3RvcHBlZHx8KHRoaXMuaXNTdG9wcGVkPSEwLHRoaXMuX2NvbXBsZXRlKCkpfSxlLnByb3RvdHlwZS51bnN1YnNjcmliZT1mdW5jdGlvbigpe3RoaXMuY2xvc2VkfHwodGhpcy5pc1N0b3BwZWQ9ITAsdC5wcm90b3R5cGUudW5zdWJzY3JpYmUuY2FsbCh0aGlzKSl9LGUucHJvdG90eXBlLl9uZXh0PWZ1bmN0aW9uKHQpe3RoaXMuZGVzdGluYXRpb24ubmV4dCh0KX0sZS5wcm90b3R5cGUuX2Vycm9yPWZ1bmN0aW9uKHQpe3RoaXMuZGVzdGluYXRpb24uZXJyb3IodCksdGhpcy51bnN1YnNjcmliZSgpfSxlLnByb3RvdHlwZS5fY29tcGxldGU9ZnVuY3Rpb24oKXt0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCksdGhpcy51bnN1YnNjcmliZSgpfSxlLnByb3RvdHlwZS5fdW5zdWJzY3JpYmVBbmRSZWN5Y2xlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fcGFyZW50LGU9dGhpcy5fcGFyZW50cztyZXR1cm4gdGhpcy5fcGFyZW50PW51bGwsdGhpcy5fcGFyZW50cz1udWxsLHRoaXMudW5zdWJzY3JpYmUoKSx0aGlzLmNsb3NlZD0hMSx0aGlzLmlzU3RvcHBlZD0hMSx0aGlzLl9wYXJlbnQ9dCx0aGlzLl9wYXJlbnRzPWUsdGhpc30sZX0ocykseT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyLG8pe3ZhciBpLHU9dC5jYWxsKHRoaXMpfHx0aGlzO3UuX3BhcmVudFN1YnNjcmliZXI9ZTt2YXIgbD11O3JldHVybiBhKG4pP2k9bjpuJiYoaT1uLm5leHQscj1uLmVycm9yLG89bi5jb21wbGV0ZSxuIT09ZCYmKGEoKGw9T2JqZWN0LmNyZWF0ZShuKSkudW5zdWJzY3JpYmUpJiZ1LmFkZChsLnVuc3Vic2NyaWJlLmJpbmQobCkpLGwudW5zdWJzY3JpYmU9dS51bnN1YnNjcmliZS5iaW5kKHUpKSksdS5fY29udGV4dD1sLHUuX25leHQ9aSx1Ll9lcnJvcj1yLHUuX2NvbXBsZXRlPW8sdX1yZXR1cm4gci5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKHQpe2lmKCF0aGlzLmlzU3RvcHBlZCYmdGhpcy5fbmV4dCl7dmFyIGU9dGhpcy5fcGFyZW50U3Vic2NyaWJlcjtoLnVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmcmJmUuc3luY0Vycm9yVGhyb3dhYmxlP3RoaXMuX190cnlPclNldEVycm9yKGUsdGhpcy5fbmV4dCx0KSYmdGhpcy51bnN1YnNjcmliZSgpOnRoaXMuX190cnlPclVuc3ViKHRoaXMuX25leHQsdCl9fSxlLnByb3RvdHlwZS5lcnJvcj1mdW5jdGlvbih0KXtpZighdGhpcy5pc1N0b3BwZWQpe3ZhciBlPXRoaXMuX3BhcmVudFN1YnNjcmliZXIsbj1oLnVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmc7aWYodGhpcy5fZXJyb3IpbiYmZS5zeW5jRXJyb3JUaHJvd2FibGU/KHRoaXMuX190cnlPclNldEVycm9yKGUsdGhpcy5fZXJyb3IsdCksdGhpcy51bnN1YnNjcmliZSgpKToodGhpcy5fX3RyeU9yVW5zdWIodGhpcy5fZXJyb3IsdCksdGhpcy51bnN1YnNjcmliZSgpKTtlbHNlIGlmKGUuc3luY0Vycm9yVGhyb3dhYmxlKW4/KGUuc3luY0Vycm9yVmFsdWU9dCxlLnN5bmNFcnJvclRocm93bj0hMCk6cCh0KSx0aGlzLnVuc3Vic2NyaWJlKCk7ZWxzZXtpZih0aGlzLnVuc3Vic2NyaWJlKCksbil0aHJvdyB0O3AodCl9fX0sZS5wcm90b3R5cGUuY29tcGxldGU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO2lmKCF0aGlzLmlzU3RvcHBlZCl7dmFyIGU9dGhpcy5fcGFyZW50U3Vic2NyaWJlcjtpZih0aGlzLl9jb21wbGV0ZSl7dmFyIG49ZnVuY3Rpb24oKXtyZXR1cm4gdC5fY29tcGxldGUuY2FsbCh0Ll9jb250ZXh0KX07aC51c2VEZXByZWNhdGVkU3luY2hyb25vdXNFcnJvckhhbmRsaW5nJiZlLnN5bmNFcnJvclRocm93YWJsZT8odGhpcy5fX3RyeU9yU2V0RXJyb3IoZSxuKSx0aGlzLnVuc3Vic2NyaWJlKCkpOih0aGlzLl9fdHJ5T3JVbnN1YihuKSx0aGlzLnVuc3Vic2NyaWJlKCkpfWVsc2UgdGhpcy51bnN1YnNjcmliZSgpfX0sZS5wcm90b3R5cGUuX190cnlPclVuc3ViPWZ1bmN0aW9uKHQsZSl7dHJ5e3QuY2FsbCh0aGlzLl9jb250ZXh0LGUpfWNhdGNoKG4pe2lmKHRoaXMudW5zdWJzY3JpYmUoKSxoLnVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmcpdGhyb3cgbjtwKG4pfX0sZS5wcm90b3R5cGUuX190cnlPclNldEVycm9yPWZ1bmN0aW9uKHQsZSxuKXtpZighaC51c2VEZXByZWNhdGVkU3luY2hyb25vdXNFcnJvckhhbmRsaW5nKXRocm93IG5ldyBFcnJvcigiYmFkIGNhbGwiKTt0cnl7ZS5jYWxsKHRoaXMuX2NvbnRleHQsbil9Y2F0Y2gocil7cmV0dXJuIGgudXNlRGVwcmVjYXRlZFN5bmNocm9ub3VzRXJyb3JIYW5kbGluZz8odC5zeW5jRXJyb3JWYWx1ZT1yLHQuc3luY0Vycm9yVGhyb3duPSEwLCEwKToocChyKSwhMCl9cmV0dXJuITF9LGUucHJvdG90eXBlLl91bnN1YnNjcmliZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3BhcmVudFN1YnNjcmliZXI7dGhpcy5fY29udGV4dD1udWxsLHRoaXMuX3BhcmVudFN1YnNjcmliZXI9bnVsbCx0LnVuc3Vic2NyaWJlKCl9LGV9KHYpLG09ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLm9ic2VydmFibGV8fCJAQG9ic2VydmFibGUiO2Z1bmN0aW9uIF8oKXt9ZnVuY3Rpb24gdygpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTtyZXR1cm4gYih0KX1mdW5jdGlvbiBiKHQpe3JldHVybiB0PzE9PT10Lmxlbmd0aD90WzBdOmZ1bmN0aW9uKGUpe3JldHVybiB0LnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gZSh0KX0pLGUpfTpffXZhciB4PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9pc1NjYWxhcj0hMSx0JiYodGhpcy5fc3Vic2NyaWJlPXQpfXJldHVybiB0LnByb3RvdHlwZS5saWZ0PWZ1bmN0aW9uKGUpe3ZhciBuPW5ldyB0O3JldHVybiBuLnNvdXJjZT10aGlzLG4ub3BlcmF0b3I9ZSxufSx0LnByb3RvdHlwZS5zdWJzY3JpYmU9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXRoaXMub3BlcmF0b3Isbz1mdW5jdGlvbih0LGUsbil7aWYodCl7aWYodCBpbnN0YW5jZW9mIHYpcmV0dXJuIHQ7aWYodFtnXSlyZXR1cm4gdFtnXSgpfXJldHVybiB0fHxlfHxuP25ldyB2KHQsZSxuKTpuZXcgdihkKX0odCxlLG4pO2lmKG8uYWRkKHI/ci5jYWxsKG8sdGhpcy5zb3VyY2UpOnRoaXMuc291cmNlfHxoLnVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmcmJiFvLnN5bmNFcnJvclRocm93YWJsZT90aGlzLl9zdWJzY3JpYmUobyk6dGhpcy5fdHJ5U3Vic2NyaWJlKG8pKSxoLnVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmcmJm8uc3luY0Vycm9yVGhyb3dhYmxlJiYoby5zeW5jRXJyb3JUaHJvd2FibGU9ITEsby5zeW5jRXJyb3JUaHJvd24pKXRocm93IG8uc3luY0Vycm9yVmFsdWU7cmV0dXJuIG99LHQucHJvdG90eXBlLl90cnlTdWJzY3JpYmU9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0aGlzLl9zdWJzY3JpYmUodCl9Y2F0Y2goZSl7aC51c2VEZXByZWNhdGVkU3luY2hyb25vdXNFcnJvckhhbmRsaW5nJiYodC5zeW5jRXJyb3JUaHJvd249ITAsdC5zeW5jRXJyb3JWYWx1ZT1lKSxmdW5jdGlvbih0KXtmb3IoO3Q7KXt2YXIgZT10LmRlc3RpbmF0aW9uO2lmKHQuY2xvc2VkfHx0LmlzU3RvcHBlZClyZXR1cm4hMTt0PWUmJmUgaW5zdGFuY2VvZiB2P2U6bnVsbH1yZXR1cm4hMH0odCk/dC5lcnJvcihlKTpjb25zb2xlLndhcm4oZSl9fSx0LnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztyZXR1cm4gbmV3KGU9QyhlKSkoKGZ1bmN0aW9uKGUscil7dmFyIG87bz1uLnN1YnNjcmliZSgoZnVuY3Rpb24oZSl7dHJ5e3QoZSl9Y2F0Y2gobil7cihuKSxvJiZvLnVuc3Vic2NyaWJlKCl9fSkscixlKX0pKX0sdC5wcm90b3R5cGUuX3N1YnNjcmliZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLnNvdXJjZTtyZXR1cm4gZSYmZS5zdWJzY3JpYmUodCl9LHQucHJvdG90eXBlW21dPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLnBpcGU9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07cmV0dXJuIDA9PT10Lmxlbmd0aD90aGlzOmIodCkodGhpcyl9LHQucHJvdG90eXBlLnRvUHJvbWlzZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3JldHVybiBuZXcodD1DKHQpKSgoZnVuY3Rpb24odCxuKXt2YXIgcjtlLnN1YnNjcmliZSgoZnVuY3Rpb24odCl7cmV0dXJuIHI9dH0pLChmdW5jdGlvbih0KXtyZXR1cm4gbih0KX0pLChmdW5jdGlvbigpe3JldHVybiB0KHIpfSkpfSkpfSx0LmNyZWF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IHQoZSl9LHR9KCk7ZnVuY3Rpb24gQyh0KXtpZih0fHwodD1oLlByb21pc2V8fFByb21pc2UpLCF0KXRocm93IG5ldyBFcnJvcigibm8gUHJvbWlzZSBpbXBsIGZvdW5kIik7cmV0dXJuIHR9ZnVuY3Rpb24gUygpe3JldHVybiBFcnJvci5jYWxsKHRoaXMpLHRoaXMubWVzc2FnZT0ib2JqZWN0IHVuc3Vic2NyaWJlZCIsdGhpcy5uYW1lPSJPYmplY3RVbnN1YnNjcmliZWRFcnJvciIsdGhpc31TLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSk7dmFyIEU9UyxPPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt2YXIgcj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIHIuc3ViamVjdD1lLHIuc3Vic2NyaWJlcj1uLHIuY2xvc2VkPSExLHJ9cmV0dXJuIHIuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUudW5zdWJzY3JpYmU9ZnVuY3Rpb24oKXtpZighdGhpcy5jbG9zZWQpe3RoaXMuY2xvc2VkPSEwO3ZhciB0PXRoaXMuc3ViamVjdCxlPXQub2JzZXJ2ZXJzO2lmKHRoaXMuc3ViamVjdD1udWxsLGUmJjAhPT1lLmxlbmd0aCYmIXQuaXNTdG9wcGVkJiYhdC5jbG9zZWQpe3ZhciBuPWUuaW5kZXhPZih0aGlzLnN1YnNjcmliZXIpOy0xIT09biYmZS5zcGxpY2UobiwxKX19fSxlfShzKSxUPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dmFyIG49dC5jYWxsKHRoaXMsZSl8fHRoaXM7cmV0dXJuIG4uZGVzdGluYXRpb249ZSxufXJldHVybiByLl9fZXh0ZW5kcyhlLHQpLGV9KHYpLFA9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gZS5vYnNlcnZlcnM9W10sZS5jbG9zZWQ9ITEsZS5pc1N0b3BwZWQ9ITEsZS5oYXNFcnJvcj0hMSxlLnRocm93bkVycm9yPW51bGwsZX1yZXR1cm4gci5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZVtnXT1mdW5jdGlvbigpe3JldHVybiBuZXcgVCh0aGlzKX0sZS5wcm90b3R5cGUubGlmdD1mdW5jdGlvbih0KXt2YXIgZT1uZXcgayh0aGlzLHRoaXMpO3JldHVybiBlLm9wZXJhdG9yPXQsZX0sZS5wcm90b3R5cGUubmV4dD1mdW5jdGlvbih0KXtpZih0aGlzLmNsb3NlZCl0aHJvdyBuZXcgRTtpZighdGhpcy5pc1N0b3BwZWQpZm9yKHZhciBlPXRoaXMub2JzZXJ2ZXJzLG49ZS5sZW5ndGgscj1lLnNsaWNlKCksbz0wO288bjtvKyspcltvXS5uZXh0KHQpfSxlLnByb3RvdHlwZS5lcnJvcj1mdW5jdGlvbih0KXtpZih0aGlzLmNsb3NlZCl0aHJvdyBuZXcgRTt0aGlzLmhhc0Vycm9yPSEwLHRoaXMudGhyb3duRXJyb3I9dCx0aGlzLmlzU3RvcHBlZD0hMDtmb3IodmFyIGU9dGhpcy5vYnNlcnZlcnMsbj1lLmxlbmd0aCxyPWUuc2xpY2UoKSxvPTA7bzxuO28rKylyW29dLmVycm9yKHQpO3RoaXMub2JzZXJ2ZXJzLmxlbmd0aD0wfSxlLnByb3RvdHlwZS5jb21wbGV0ZT1mdW5jdGlvbigpe2lmKHRoaXMuY2xvc2VkKXRocm93IG5ldyBFO3RoaXMuaXNTdG9wcGVkPSEwO2Zvcih2YXIgdD10aGlzLm9ic2VydmVycyxlPXQubGVuZ3RoLG49dC5zbGljZSgpLHI9MDtyPGU7cisrKW5bcl0uY29tcGxldGUoKTt0aGlzLm9ic2VydmVycy5sZW5ndGg9MH0sZS5wcm90b3R5cGUudW5zdWJzY3JpYmU9ZnVuY3Rpb24oKXt0aGlzLmlzU3RvcHBlZD0hMCx0aGlzLmNsb3NlZD0hMCx0aGlzLm9ic2VydmVycz1udWxsfSxlLnByb3RvdHlwZS5fdHJ5U3Vic2NyaWJlPWZ1bmN0aW9uKGUpe2lmKHRoaXMuY2xvc2VkKXRocm93IG5ldyBFO3JldHVybiB0LnByb3RvdHlwZS5fdHJ5U3Vic2NyaWJlLmNhbGwodGhpcyxlKX0sZS5wcm90b3R5cGUuX3N1YnNjcmliZT1mdW5jdGlvbih0KXtpZih0aGlzLmNsb3NlZCl0aHJvdyBuZXcgRTtyZXR1cm4gdGhpcy5oYXNFcnJvcj8odC5lcnJvcih0aGlzLnRocm93bkVycm9yKSxzLkVNUFRZKTp0aGlzLmlzU3RvcHBlZD8odC5jb21wbGV0ZSgpLHMuRU1QVFkpOih0aGlzLm9ic2VydmVycy5wdXNoKHQpLG5ldyBPKHRoaXMsdCkpfSxlLnByb3RvdHlwZS5hc09ic2VydmFibGU9ZnVuY3Rpb24oKXt2YXIgdD1uZXcgeDtyZXR1cm4gdC5zb3VyY2U9dGhpcyx0fSxlLmNyZWF0ZT1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgayh0LGUpfSxlfSh4KSxrPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt2YXIgcj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIHIuZGVzdGluYXRpb249ZSxyLnNvdXJjZT1uLHJ9cmV0dXJuIHIuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUubmV4dD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmRlc3RpbmF0aW9uO2UmJmUubmV4dCYmZS5uZXh0KHQpfSxlLnByb3RvdHlwZS5lcnJvcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmRlc3RpbmF0aW9uO2UmJmUuZXJyb3ImJnRoaXMuZGVzdGluYXRpb24uZXJyb3IodCl9LGUucHJvdG90eXBlLmNvbXBsZXRlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5kZXN0aW5hdGlvbjt0JiZ0LmNvbXBsZXRlJiZ0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCl9LGUucHJvdG90eXBlLl9zdWJzY3JpYmU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc291cmNlP3RoaXMuc291cmNlLnN1YnNjcmliZSh0KTpzLkVNUFRZfSxlfShQKTtmdW5jdGlvbiBBKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgdC5zY2hlZHVsZX12YXIgST1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyKXt2YXIgbz10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG8ucGFyZW50PWUsby5vdXRlclZhbHVlPW4sby5vdXRlckluZGV4PXIsby5pbmRleD0wLG99cmV0dXJuIHIuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX25leHQ9ZnVuY3Rpb24odCl7dGhpcy5wYXJlbnQubm90aWZ5TmV4dCh0aGlzLm91dGVyVmFsdWUsdCx0aGlzLm91dGVySW5kZXgsdGhpcy5pbmRleCsrLHRoaXMpfSxlLnByb3RvdHlwZS5fZXJyb3I9ZnVuY3Rpb24odCl7dGhpcy5wYXJlbnQubm90aWZ5RXJyb3IodCx0aGlzKSx0aGlzLnVuc3Vic2NyaWJlKCl9LGUucHJvdG90eXBlLl9jb21wbGV0ZT1mdW5jdGlvbigpe3RoaXMucGFyZW50Lm5vdGlmeUNvbXBsZXRlKHRoaXMpLHRoaXMudW5zdWJzY3JpYmUoKX0sZX0odiksUj1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7Zm9yKHZhciBuPTAscj10Lmxlbmd0aDtuPHImJiFlLmNsb3NlZDtuKyspZS5uZXh0KHRbbl0pO2UuY2xvc2VkfHxlLmNvbXBsZXRlKCl9fSxNPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC50aGVuKChmdW5jdGlvbih0KXtlLmNsb3NlZHx8KGUubmV4dCh0KSxlLmNvbXBsZXRlKCkpfSksKGZ1bmN0aW9uKHQpe3JldHVybiBlLmVycm9yKHQpfSkpLnRoZW4obnVsbCxwKSxlfX07ZnVuY3Rpb24gaigpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcj9TeW1ib2wuaXRlcmF0b3I6IkBAaXRlcmF0b3IifXZhciBOPWooKSxEPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIG49dFtOXSgpOzspe3ZhciByPW4ubmV4dCgpO2lmKHIuZG9uZSl7ZS5jb21wbGV0ZSgpO2JyZWFrfWlmKGUubmV4dChyLnZhbHVlKSxlLmNsb3NlZClicmVha31yZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygbi5yZXR1cm4mJmUuYWRkKChmdW5jdGlvbigpe24ucmV0dXJuJiZuLnJldHVybigpfSkpLGV9fSxVPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgbj10W21dKCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4uc3Vic2NyaWJlKXRocm93IG5ldyBUeXBlRXJyb3IoIlByb3ZpZGVkIG9iamVjdCBkb2VzIG5vdCBjb3JyZWN0bHkgaW1wbGVtZW50IFN5bWJvbC5vYnNlcnZhYmxlIik7cmV0dXJuIG4uc3Vic2NyaWJlKGUpfX0sTD1mdW5jdGlvbih0KXtyZXR1cm4gdCYmIm51bWJlciI9PXR5cGVvZiB0Lmxlbmd0aCYmImZ1bmN0aW9uIiE9dHlwZW9mIHR9O2Z1bmN0aW9uIFYodCl7cmV0dXJuISF0JiYiZnVuY3Rpb24iIT10eXBlb2YgdC5zdWJzY3JpYmUmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnRoZW59dmFyIEg9ZnVuY3Rpb24odCl7aWYodCBpbnN0YW5jZW9mIHgpcmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0Ll9pc1NjYWxhcj8oZS5uZXh0KHQudmFsdWUpLHZvaWQgZS5jb21wbGV0ZSgpKTp0LnN1YnNjcmliZShlKX07aWYodCYmImZ1bmN0aW9uIj09dHlwZW9mIHRbbV0pcmV0dXJuIFUodCk7aWYoTCh0KSlyZXR1cm4gUih0KTtpZihWKHQpKXJldHVybiBNKHQpO2lmKHQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0W05dKXJldHVybiBEKHQpO3ZhciBlPWkodCk/ImFuIGludmFsaWQgb2JqZWN0IjoiJyIrdCsiJyI7dGhyb3cgbmV3IFR5cGVFcnJvcigiWW91IHByb3ZpZGVkICIrZSsiIHdoZXJlIGEgc3RyZWFtIHdhcyBleHBlY3RlZC4gWW91IGNhbiBwcm92aWRlIGFuIE9ic2VydmFibGUsIFByb21pc2UsIEFycmF5LCBvciBJdGVyYWJsZS4iKX07ZnVuY3Rpb24geih0LGUsbixyLG8pe2lmKHZvaWQgMD09PW8mJihvPW5ldyBJKHQsbixyKSksIW8uY2xvc2VkKXJldHVybiBIKGUpKG8pfXZhciBGPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiByLl9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLm5vdGlmeU5leHQ9ZnVuY3Rpb24odCxlLG4scixvKXt0aGlzLmRlc3RpbmF0aW9uLm5leHQoZSl9LGUucHJvdG90eXBlLm5vdGlmeUVycm9yPWZ1bmN0aW9uKHQsZSl7dGhpcy5kZXN0aW5hdGlvbi5lcnJvcih0KX0sZS5wcm90b3R5cGUubm90aWZ5Q29tcGxldGU9ZnVuY3Rpb24odCl7dGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpfSxlfSh2KTtmdW5jdGlvbiBCKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoImFyZ3VtZW50IGlzIG5vdCBhIGZ1bmN0aW9uLiBBcmUgeW91IGxvb2tpbmcgZm9yIGBtYXBUbygpYD8iKTtyZXR1cm4gbi5saWZ0KG5ldyBaKHQsZSkpfX12YXIgWj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLnByb2plY3Q9dCx0aGlzLnRoaXNBcmc9ZX1yZXR1cm4gdC5wcm90b3R5cGUuY2FsbD1mdW5jdGlvbih0LGUpe3JldHVybiBlLnN1YnNjcmliZShuZXcgRyh0LHRoaXMucHJvamVjdCx0aGlzLnRoaXNBcmcpKX0sdH0oKSxHPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIpe3ZhciBvPXQuY2FsbCh0aGlzLGUpfHx0aGlzO3JldHVybiBvLnByb2plY3Q9bixvLmNvdW50PTAsby50aGlzQXJnPXJ8fG8sb31yZXR1cm4gci5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fbmV4dD1mdW5jdGlvbih0KXt2YXIgZTt0cnl7ZT10aGlzLnByb2plY3QuY2FsbCh0aGlzLnRoaXNBcmcsdCx0aGlzLmNvdW50KyspfWNhdGNoKG4pe3JldHVybiB2b2lkIHRoaXMuZGVzdGluYXRpb24uZXJyb3Iobil9dGhpcy5kZXN0aW5hdGlvbi5uZXh0KGUpfSxlfSh2KTtmdW5jdGlvbiBxKHQsZSl7cmV0dXJuIG5ldyB4KGU/ZnVuY3Rpb24obil7dmFyIHI9bmV3IHMsbz0wO3JldHVybiByLmFkZChlLnNjaGVkdWxlKChmdW5jdGlvbigpe28hPT10Lmxlbmd0aD8obi5uZXh0KHRbbysrXSksbi5jbG9zZWR8fHIuYWRkKHRoaXMuc2NoZWR1bGUoKSkpOm4uY29tcGxldGUoKX0pKSkscn06Uih0KSl9ZnVuY3Rpb24gVyh0LGUpe2lmKCFlKXJldHVybiB0IGluc3RhbmNlb2YgeD90Om5ldyB4KEgodCkpO2lmKG51bGwhPXQpe2lmKGZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgdFttXX0odCkpcmV0dXJuIGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyB4KGU/ZnVuY3Rpb24obil7dmFyIHI9bmV3IHM7cmV0dXJuIHIuYWRkKGUuc2NoZWR1bGUoKGZ1bmN0aW9uKCl7dmFyIG89dFttXSgpO3IuYWRkKG8uc3Vic2NyaWJlKHtuZXh0OmZ1bmN0aW9uKHQpe3IuYWRkKGUuc2NoZWR1bGUoKGZ1bmN0aW9uKCl7cmV0dXJuIG4ubmV4dCh0KX0pKSl9LGVycm9yOmZ1bmN0aW9uKHQpe3IuYWRkKGUuc2NoZWR1bGUoKGZ1bmN0aW9uKCl7cmV0dXJuIG4uZXJyb3IodCl9KSkpfSxjb21wbGV0ZTpmdW5jdGlvbigpe3IuYWRkKGUuc2NoZWR1bGUoKGZ1bmN0aW9uKCl7cmV0dXJuIG4uY29tcGxldGUoKX0pKSl9fSkpfSkpKSxyfTpVKHQpKX0odCxlKTtpZihWKHQpKXJldHVybiBmdW5jdGlvbih0LGUpe3JldHVybiBuZXcgeChlP2Z1bmN0aW9uKA=="
                },
                {
                    "key": "asdf?main.e3350ff4d88d534234ef.js?4?1?0",
                    "type": "binary",
                    "value": "base64:bil7dmFyIHI9bmV3IHM7cmV0dXJuIHIuYWRkKGUuc2NoZWR1bGUoKGZ1bmN0aW9uKCl7cmV0dXJuIHQudGhlbigoZnVuY3Rpb24odCl7ci5hZGQoZS5zY2hlZHVsZSgoZnVuY3Rpb24oKXtuLm5leHQodCksci5hZGQoZS5zY2hlZHVsZSgoZnVuY3Rpb24oKXtyZXR1cm4gbi5jb21wbGV0ZSgpfSkpKX0pKSl9KSwoZnVuY3Rpb24odCl7ci5hZGQoZS5zY2hlZHVsZSgoZnVuY3Rpb24oKXtyZXR1cm4gbi5lcnJvcih0KX0pKSl9KSl9KSkpLHJ9Ok0odCkpfSh0LGUpO2lmKEwodCkpcmV0dXJuIHEodCxlKTtpZihmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIHRbTl19KHQpfHwic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIGZ1bmN0aW9uKHQsZSl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJJdGVyYWJsZSBjYW5ub3QgYmUgbnVsbCIpO3JldHVybiBuZXcgeChlP2Z1bmN0aW9uKG4pe3ZhciByLG89bmV3IHM7cmV0dXJuIG8uYWRkKChmdW5jdGlvbigpe3ImJiJmdW5jdGlvbiI9PXR5cGVvZiByLnJldHVybiYmci5yZXR1cm4oKX0pKSxvLmFkZChlLnNjaGVkdWxlKChmdW5jdGlvbigpe3I9dFtOXSgpLG8uYWRkKGUuc2NoZWR1bGUoKGZ1bmN0aW9uKCl7aWYoIW4uY2xvc2VkKXt2YXIgdCxlO3RyeXt2YXIgbz1yLm5leHQoKTt0PW8udmFsdWUsZT1vLmRvbmV9Y2F0Y2goaSl7cmV0dXJuIHZvaWQgbi5lcnJvcihpKX1lP24uY29tcGxldGUoKToobi5uZXh0KHQpLHRoaXMuc2NoZWR1bGUoKSl9fSkpKX0pKSksb306RCh0KSl9KHQsZSl9dGhyb3cgbmV3IFR5cGVFcnJvcigobnVsbCE9PXQmJnR5cGVvZiB0fHx0KSsiIGlzIG5vdCBvYnNlcnZhYmxlIil9ZnVuY3Rpb24gUSh0LGUsbil7cmV0dXJuIHZvaWQgMD09PW4mJihuPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSksImZ1bmN0aW9uIj09dHlwZW9mIGU/ZnVuY3Rpb24ocil7cmV0dXJuIHIucGlwZShRKChmdW5jdGlvbihuLHIpe3JldHVybiBXKHQobixyKSkucGlwZShCKChmdW5jdGlvbih0LG8pe3JldHVybiBlKG4sdCxyLG8pfSkpKX0pLG4pKX06KCJudW1iZXIiPT10eXBlb2YgZSYmKG49ZSksZnVuY3Rpb24oZSl7cmV0dXJuIGUubGlmdChuZXcgSyh0LG4pKX0pfXZhciBLPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3ZvaWQgMD09PWUmJihlPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSksdGhpcy5wcm9qZWN0PXQsdGhpcy5jb25jdXJyZW50PWV9cmV0dXJuIHQucHJvdG90eXBlLmNhbGw9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5zdWJzY3JpYmUobmV3IFkodCx0aGlzLnByb2plY3QsdGhpcy5jb25jdXJyZW50KSl9LHR9KCksWT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyKXt2b2lkIDA9PT1yJiYocj1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpO3ZhciBvPXQuY2FsbCh0aGlzLGUpfHx0aGlzO3JldHVybiBvLnByb2plY3Q9bixvLmNvbmN1cnJlbnQ9cixvLmhhc0NvbXBsZXRlZD0hMSxvLmJ1ZmZlcj1bXSxvLmFjdGl2ZT0wLG8uaW5kZXg9MCxvfXJldHVybiByLl9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9uZXh0PWZ1bmN0aW9uKHQpe3RoaXMuYWN0aXZlPHRoaXMuY29uY3VycmVudD90aGlzLl90cnlOZXh0KHQpOnRoaXMuYnVmZmVyLnB1c2godCl9LGUucHJvdG90eXBlLl90cnlOZXh0PWZ1bmN0aW9uKHQpe3ZhciBlLG49dGhpcy5pbmRleCsrO3RyeXtlPXRoaXMucHJvamVjdCh0LG4pfWNhdGNoKHIpe3JldHVybiB2b2lkIHRoaXMuZGVzdGluYXRpb24uZXJyb3Iocil9dGhpcy5hY3RpdmUrKyx0aGlzLl9pbm5lclN1YihlLHQsbil9LGUucHJvdG90eXBlLl9pbm5lclN1Yj1mdW5jdGlvbih0LGUsbil7dmFyIHI9bmV3IEkodGhpcyx2b2lkIDAsdm9pZCAwKTt0aGlzLmRlc3RpbmF0aW9uLmFkZChyKSx6KHRoaXMsdCxlLG4scil9LGUucHJvdG90eXBlLl9jb21wbGV0ZT1mdW5jdGlvbigpe3RoaXMuaGFzQ29tcGxldGVkPSEwLDA9PT10aGlzLmFjdGl2ZSYmMD09PXRoaXMuYnVmZmVyLmxlbmd0aCYmdGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpLHRoaXMudW5zdWJzY3JpYmUoKX0sZS5wcm90b3R5cGUubm90aWZ5TmV4dD1mdW5jdGlvbih0LGUsbixyLG8pe3RoaXMuZGVzdGluYXRpb24ubmV4dChlKX0sZS5wcm90b3R5cGUubm90aWZ5Q29tcGxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5idWZmZXI7dGhpcy5yZW1vdmUodCksdGhpcy5hY3RpdmUtLSxlLmxlbmd0aD4wP3RoaXMuX25leHQoZS5zaGlmdCgpKTowPT09dGhpcy5hY3RpdmUmJnRoaXMuaGFzQ29tcGxldGVkJiZ0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCl9LGV9KEYpO2Z1bmN0aW9uIEoodCl7cmV0dXJuIHR9ZnVuY3Rpb24gJCh0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKSxRKEosdCl9ZnVuY3Rpb24gWCgpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gdC5saWZ0KG5ldyB0dCh0KSl9fXZhciB0dD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5jb25uZWN0YWJsZT10fXJldHVybiB0LnByb3RvdHlwZS5jYWxsPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5jb25uZWN0YWJsZTtuLl9yZWZDb3VudCsrO3ZhciByPW5ldyBldCh0LG4pLG89ZS5zdWJzY3JpYmUocik7cmV0dXJuIHIuY2xvc2VkfHwoci5jb25uZWN0aW9uPW4uY29ubmVjdCgpKSxvfSx0fSgpLGV0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt2YXIgcj10LmNhbGwodGhpcyxlKXx8dGhpcztyZXR1cm4gci5jb25uZWN0YWJsZT1uLHJ9cmV0dXJuIHIuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX3Vuc3Vic2NyaWJlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5jb25uZWN0YWJsZTtpZih0KXt0aGlzLmNvbm5lY3RhYmxlPW51bGw7dmFyIGU9dC5fcmVmQ291bnQ7aWYoZTw9MCl0aGlzLmNvbm5lY3Rpb249bnVsbDtlbHNlIGlmKHQuX3JlZkNvdW50PWUtMSxlPjEpdGhpcy5jb25uZWN0aW9uPW51bGw7ZWxzZXt2YXIgbj10aGlzLmNvbm5lY3Rpb24scj10Ll9jb25uZWN0aW9uO3RoaXMuY29ubmVjdGlvbj1udWxsLCFyfHxuJiZyIT09bnx8ci51bnN1YnNjcmliZSgpfX1lbHNlIHRoaXMuY29ubmVjdGlvbj1udWxsfSxlfSh2KSxudD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dmFyIHI9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiByLnNvdXJjZT1lLHIuc3ViamVjdEZhY3Rvcnk9bixyLl9yZWZDb3VudD0wLHIuX2lzQ29tcGxldGU9ITEscn1yZXR1cm4gci5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fc3Vic2NyaWJlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmdldFN1YmplY3QoKS5zdWJzY3JpYmUodCl9LGUucHJvdG90eXBlLmdldFN1YmplY3Q9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9zdWJqZWN0O3JldHVybiB0JiYhdC5pc1N0b3BwZWR8fCh0aGlzLl9zdWJqZWN0PXRoaXMuc3ViamVjdEZhY3RvcnkoKSksdGhpcy5fc3ViamVjdH0sZS5wcm90b3R5cGUuY29ubmVjdD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX2Nvbm5lY3Rpb247cmV0dXJuIHR8fCh0aGlzLl9pc0NvbXBsZXRlPSExLCh0PXRoaXMuX2Nvbm5lY3Rpb249bmV3IHMpLmFkZCh0aGlzLnNvdXJjZS5zdWJzY3JpYmUobmV3IG90KHRoaXMuZ2V0U3ViamVjdCgpLHRoaXMpKSksdC5jbG9zZWQ/KHRoaXMuX2Nvbm5lY3Rpb249bnVsbCx0PXMuRU1QVFkpOnRoaXMuX2Nvbm5lY3Rpb249dCksdH0sZS5wcm90b3R5cGUucmVmQ291bnQ9ZnVuY3Rpb24oKXtyZXR1cm4gWCgpKHRoaXMpfSxlfSh4KS5wcm90b3R5cGUscnQ9e29wZXJhdG9yOnt2YWx1ZTpudWxsfSxfcmVmQ291bnQ6e3ZhbHVlOjAsd3JpdGFibGU6ITB9LF9zdWJqZWN0Ont2YWx1ZTpudWxsLHdyaXRhYmxlOiEwfSxfY29ubmVjdGlvbjp7dmFsdWU6bnVsbCx3cml0YWJsZTohMH0sX3N1YnNjcmliZTp7dmFsdWU6bnQuX3N1YnNjcmliZX0sX2lzQ29tcGxldGU6e3ZhbHVlOm50Ll9pc0NvbXBsZXRlLHdyaXRhYmxlOiEwfSxnZXRTdWJqZWN0Ont2YWx1ZTpudC5nZXRTdWJqZWN0fSxjb25uZWN0Ont2YWx1ZTpudC5jb25uZWN0fSxyZWZDb3VudDp7dmFsdWU6bnQucmVmQ291bnR9fSxvdD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dmFyIHI9dC5jYWxsKHRoaXMsZSl8fHRoaXM7cmV0dXJuIHIuY29ubmVjdGFibGU9bixyfXJldHVybiByLl9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9lcnJvcj1mdW5jdGlvbihlKXt0aGlzLl91bnN1YnNjcmliZSgpLHQucHJvdG90eXBlLl9lcnJvci5jYWxsKHRoaXMsZSl9LGUucHJvdG90eXBlLl9jb21wbGV0ZT1mdW5jdGlvbigpe3RoaXMuY29ubmVjdGFibGUuX2lzQ29tcGxldGU9ITAsdGhpcy5fdW5zdWJzY3JpYmUoKSx0LnByb3RvdHlwZS5fY29tcGxldGUuY2FsbCh0aGlzKX0sZS5wcm90b3R5cGUuX3Vuc3Vic2NyaWJlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5jb25uZWN0YWJsZTtpZih0KXt0aGlzLmNvbm5lY3RhYmxlPW51bGw7dmFyIGU9dC5fY29ubmVjdGlvbjt0Ll9yZWZDb3VudD0wLHQuX3N1YmplY3Q9bnVsbCx0Ll9jb25uZWN0aW9uPW51bGwsZSYmZS51bnN1YnNjcmliZSgpfX0sZX0oVCk7ZnVuY3Rpb24gaXQoKXtyZXR1cm4gbmV3IFB9dmFyIGF0PSJfX3BhcmFtZXRlcnNfXyI7ZnVuY3Rpb24gdXQodCxlLG4pe3ZhciBvPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgZT1bXSxuPTA7bjxhcmd1bWVudHMubGVuZ3RoO24rKyllW25dPWFyZ3VtZW50c1tuXTtpZih0KXt2YXIgbz10LmFwcGx5KHZvaWQgMCxPYmplY3Qoci5fX3NwcmVhZCkoZSkpO2Zvcih2YXIgaSBpbiBvKXRoaXNbaV09b1tpXX19fShlKTtmdW5jdGlvbiBpKCl7Zm9yKHZhciB0LGU9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDtuKyspZVtuXT1hcmd1bWVudHNbbl07aWYodGhpcyBpbnN0YW5jZW9mIGkpcmV0dXJuIG8uYXBwbHkodGhpcyxlKSx0aGlzO3ZhciBhPW5ldygodD1pKS5iaW5kLmFwcGx5KHQsT2JqZWN0KHIuX19zcHJlYWQpKFt2b2lkIDBdLGUpKSk7cmV0dXJuIHUuYW5ub3RhdGlvbj1hLHU7ZnVuY3Rpb24gdSh0LGUsbil7Zm9yKHZhciByPXQuaGFzT3duUHJvcGVydHkoYXQpP3RbYXRdOk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGF0LHt2YWx1ZTpbXX0pW2F0XTtyLmxlbmd0aDw9bjspci5wdXNoKG51bGwpO3JldHVybihyW25dPXJbbl18fFtdKS5wdXNoKGEpLHR9fXJldHVybiBuJiYoaS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSkpLGkucHJvdG90eXBlLm5nTWV0YWRhdGFOYW1lPXQsaS5hbm5vdGF0aW9uQ2xzPWksaX12YXIgbHQ9dXQoIkluamVjdCIsKGZ1bmN0aW9uKHQpe3JldHVybnt0b2tlbjp0fX0pKSxzdD11dCgiT3B0aW9uYWwiKSxjdD11dCgiU2VsZiIpLGZ0PXV0KCJTa2lwU2VsZiIpLGh0PWZ1bmN0aW9uKHQpe3JldHVybiB0W3QuRGVmYXVsdD0wXT0iRGVmYXVsdCIsdFt0Lkhvc3Q9MV09Ikhvc3QiLHRbdC5TZWxmPTJdPSJTZWxmIix0W3QuU2tpcFNlbGY9NF09IlNraXBTZWxmIix0W3QuT3B0aW9uYWw9OF09Ik9wdGlvbmFsIix0fSh7fSk7ZnVuY3Rpb24gcHQodCl7Zm9yKHZhciBlIGluIHQpaWYodFtlXT09PXB0KXJldHVybiBlO3Rocm93IEVycm9yKCJDb3VsZCBub3QgZmluZCByZW5hbWVkIHByb3BlcnR5IG9uIHRhcmdldCBvYmplY3QuIil9ZnVuY3Rpb24gZHQodCl7cmV0dXJue3Rva2VuOnQudG9rZW4scHJvdmlkZWRJbjp0LnByb3ZpZGVkSW58fG51bGwsZmFjdG9yeTp0LmZhY3RvcnksdmFsdWU6dm9pZCAwfX1mdW5jdGlvbiBndCh0KXt2YXIgZT10W3Z0XTtyZXR1cm4gZSYmZS50b2tlbj09PXQ/ZTpudWxsfXZhciB2dD1wdCh7bmdJbmplY3RhYmxlRGVmOnB0fSk7ZnVuY3Rpb24geXQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lmKHQgaW5zdGFuY2VvZiBBcnJheSlyZXR1cm4iWyIrdC5tYXAoeXQpLmpvaW4oIiwgIikrIl0iO2lmKG51bGw9PXQpcmV0dXJuIiIrdDtpZih0Lm92ZXJyaWRkZW5OYW1lKXJldHVybiIiK3Qub3ZlcnJpZGRlbk5hbWU7aWYodC5uYW1lKXJldHVybiIiK3QubmFtZTt2YXIgZT10LnRvU3RyaW5nKCk7aWYobnVsbD09ZSlyZXR1cm4iIitlO3ZhciBuPWUuaW5kZXhPZigiXG4iKTtyZXR1cm4tMT09PW4/ZTplLnN1YnN0cmluZygwLG4pfXZhciBtdD1wdCh7X19mb3J3YXJkX3JlZl9fOnB0fSk7ZnVuY3Rpb24gX3QodCl7cmV0dXJuIHQuX19mb3J3YXJkX3JlZl9fPV90LHQudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4geXQodGhpcygpKX0sdH1mdW5jdGlvbiB3dCh0KXt2YXIgZT10O3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLmhhc093blByb3BlcnR5KG10KSYmZS5fX2ZvcndhcmRfcmVmX189PT1fdD9lKCk6dH12YXIgYnQseHQ9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzLEN0PSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3csU3Q9InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmJiYidW5kZWZpbmVkIiE9dHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlJiZzZWxmIGluc3RhbmNlb2YgV29ya2VyR2xvYmFsU2NvcGUmJnNlbGYsRXQ9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWwmJmdsb2JhbCxPdD14dHx8RXR8fEN0fHxTdCxUdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLl9kZXNjPXQsdGhpcy5uZ01ldGFkYXRhTmFtZT0iSW5qZWN0aW9uVG9rZW4iLHRoaXMubmdJbmplY3RhYmxlRGVmPXZvaWQgMCwibnVtYmVyIj09dHlwZW9mIGU/dGhpcy5fX05HX0VMRU1FTlRfSURfXz1lOnZvaWQgMCE9PWUmJih0aGlzLm5nSW5qZWN0YWJsZURlZj1kdCh7dG9rZW46dGhpcyxwcm92aWRlZEluOmUucHJvdmlkZWRJbnx8InJvb3QiLGZhY3Rvcnk6ZS5mYWN0b3J5fSkpfXJldHVybiB0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJJbmplY3Rpb25Ub2tlbiAiK3RoaXMuX2Rlc2N9LHR9KCksUHQ9bmV3IFR0KCJJTkpFQ1RPUiIsLTEpLGt0PW5ldyBPYmplY3QsQXQ9L1xuL2dtLEl0PSLJtSIsUnQ9Il9fc291cmNlIixNdD1wdCh7cHJvdmlkZTpTdHJpbmcsdXNlVmFsdWU6cHR9KSxqdD12b2lkIDA7ZnVuY3Rpb24gTnQodCl7dmFyIGU9anQ7cmV0dXJuIGp0PXQsZX1mdW5jdGlvbiBEdCh0LGUpe2lmKHZvaWQgMD09PWUmJihlPWh0LkRlZmF1bHQpLHZvaWQgMD09PWp0KXRocm93IG5ldyBFcnJvcigiaW5qZWN0KCkgbXVzdCBiZSBjYWxsZWQgZnJvbSBhbiBpbmplY3Rpb24gY29udGV4dCIpO3JldHVybiBudWxsPT09anQ/ZnVuY3Rpb24odCxlLG4pe3ZhciByPWd0KHQpO2lmKHImJiJyb290Ij09ci5wcm92aWRlZEluKXJldHVybiB2b2lkIDA9PT1yLnZhbHVlP3IudmFsdWU9ci5mYWN0b3J5KCk6ci52YWx1ZTtpZihuJmh0Lk9wdGlvbmFsKXJldHVybiBudWxsO3Rocm93IG5ldyBFcnJvcigiSW5qZWN0b3I6IE5PVF9GT1VORCBbIit5dCh0KSsiXSIpfSh0LDAsZSk6anQuZ2V0KHQsZSZodC5PcHRpb25hbD9udWxsOnZvaWQgMCxlKX1mdW5jdGlvbiBVdCh0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT1odC5EZWZhdWx0KSwoYnR8fER0KSh0LGUpfXZhciBMdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0LGUpe2lmKHZvaWQgMD09PWUmJihlPWt0KSxlPT09a3Qpe3ZhciBuPW5ldyBFcnJvcigiTnVsbEluamVjdG9yRXJyb3I6IE5vIHByb3ZpZGVyIGZvciAiK3l0KHQpKyIhIik7dGhyb3cgbi5uYW1lPSJOdWxsSW5qZWN0b3JFcnJvciIsbn1yZXR1cm4gZX0sdH0oKTtmdW5jdGlvbiBWdCh0LGUsbixyKXt2b2lkIDA9PT1yJiYocj1udWxsKSx0PXQmJiJcbiI9PT10LmNoYXJBdCgwKSYmdC5jaGFyQXQoMSk9PUl0P3Quc3Vic3RyKDIpOnQ7dmFyIG89eXQoZSk7aWYoZSBpbnN0YW5jZW9mIEFycmF5KW89ZS5tYXAoeXQpLmpvaW4oIiAtPiAiKTtlbHNlIGlmKCJvYmplY3QiPT10eXBlb2YgZSl7dmFyIGk9W107Zm9yKHZhciBhIGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eShhKSl7dmFyIHU9ZVthXTtpLnB1c2goYSsiOiIrKCJzdHJpbmciPT10eXBlb2YgdT9KU09OLnN0cmluZ2lmeSh1KTp5dCh1KSkpfW89InsiK2kuam9pbigiLCAiKSsifSJ9cmV0dXJuIG4rKHI/IigiK3IrIikiOiIiKSsiWyIrbysiXTogIit0LnJlcGxhY2UoQXQsIlxuICAiKX12YXIgSHQ9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXt9fSgpLHp0PWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7fX0oKTtmdW5jdGlvbiBGdCh0LGUsbil7ZT49dC5sZW5ndGg/dC5wdXNoKG4pOnQuc3BsaWNlKGUsMCxuKX1mdW5jdGlvbiBCdCh0LGUpe3JldHVybiBlPj10Lmxlbmd0aC0xP3QucG9wKCk6dC5zcGxpY2UoZSwxKVswXX12YXIgWnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRbdC5FbXVsYXRlZD0wXT0iRW11bGF0ZWQiLHRbdC5OYXRpdmU9MV09Ik5hdGl2ZSIsdFt0Lk5vbmU9Ml09Ik5vbmUiLHRbdC5TaGFkb3dEb209M109IlNoYWRvd0RvbSIsdH0oe30pLEd0PWZ1bmN0aW9uKCl7cmV0dXJuKCJ1bmRlZmluZWQiIT10eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lJiZyZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fHNldFRpbWVvdXQpLmJpbmQoT3QpfSgpLHF0PSJuZ0RlYnVnQ29udGV4dCIsV3Q9Im5nT3JpZ2luYWxFcnJvciIsUXQ9Im5nRXJyb3JMb2dnZXIiO2Z1bmN0aW9uIEt0KHQpe3JldHVybiB0W3F0XX1mdW5jdGlvbiBZdCh0KXtyZXR1cm4gdFtXdF19ZnVuY3Rpb24gSnQodCl7Zm9yKHZhciBlPVtdLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKWVbbi0xXT1hcmd1bWVudHNbbl07dC5lcnJvci5hcHBseSh0LE9iamVjdChyLl9fc3ByZWFkKShlKSl9dmFyICR0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuX2NvbnNvbGU9Y29uc29sZX1yZXR1cm4gdC5wcm90b3R5cGUuaGFuZGxlRXJyb3I9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fZmluZE9yaWdpbmFsRXJyb3IodCksbj10aGlzLl9maW5kQ29udGV4dCh0KSxyPWZ1bmN0aW9uKHQpe3JldHVybiB0W1F0XXx8SnR9KHQpO3IodGhpcy5fY29uc29sZSwiRVJST1IiLHQpLGUmJnIodGhpcy5fY29uc29sZSwiT1JJR0lOQUwgRVJST1IiLGUpLG4mJnIodGhpcy5fY29uc29sZSwiRVJST1IgQ09OVEVYVCIsbil9LHQucHJvdG90eXBlLl9maW5kQ29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gdD9LdCh0KT9LdCh0KTp0aGlzLl9maW5kQ29udGV4dChZdCh0KSk6bnVsbH0sdC5wcm90b3R5cGUuX2ZpbmRPcmlnaW5hbEVycm9yPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1ZdCh0KTtlJiZZdChlKTspZT1ZdChlKTtyZXR1cm4gZX0sdH0oKSxYdD0hMCx0ZT0hMTtmdW5jdGlvbiBlZSgpe3JldHVybiB0ZT0hMCxYdH12YXIgbmU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe2lmKHRoaXMuZGVmYXVsdERvYz10LHRoaXMuaW5lcnREb2N1bWVudD10aGlzLmRlZmF1bHREb2MuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCJzYW5pdGl6YXRpb24taW5lcnQiKSx0aGlzLmluZXJ0Qm9keUVsZW1lbnQ9dGhpcy5pbmVydERvY3VtZW50LmJvZHksbnVsbD09dGhpcy5pbmVydEJvZHlFbGVtZW50KXt2YXIgZT10aGlzLmluZXJ0RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaHRtbCIpO3RoaXMuaW5lcnREb2N1bWVudC5hcHBlbmRDaGlsZChlKSx0aGlzLmluZXJ0Qm9keUVsZW1lbnQ9dGhpcy5pbmVydERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJvZHkiKSxlLmFwcGVuZENoaWxkKHRoaXMuaW5lcnRCb2R5RWxlbWVudCl9dGhpcy5pbmVydEJvZHlFbGVtZW50LmlubmVySFRNTD0nPHN2Zz48ZyBvbmxvYWQ9InRoaXMucGFyZW50Tm9kZS5yZW1vdmUoKSI+PC9nPjwvc3ZnPicsIXRoaXMuaW5lcnRCb2R5RWxlbWVudC5xdWVyeVNlbGVjdG9yfHx0aGlzLmluZXJ0Qm9keUVsZW1lbnQucXVlcnlTZWxlY3Rvcigic3ZnIik/KHRoaXMuaW5lcnRCb2R5RWxlbWVudC5pbm5lckhUTUw9Jzxzdmc+PHA+PHN0eWxlPjxpbWcgc3JjPSI8L3N0eWxlPjxpbWcgc3JjPXggb25lcnJvcj1hbGVydCgxKS8vIj4nLHRoaXMuZ2V0SW5lcnRCb2R5RWxlbWVudD10aGlzLmluZXJ0Qm9keUVsZW1lbnQucXVlcnlTZWxlY3RvciYmdGhpcy5pbmVydEJvZHlFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoInN2ZyBpbWciKSYmZnVuY3Rpb24oKXt0cnl7cmV0dXJuISF3aW5kb3cuRE9NUGFyc2VyfWNhdGNoKHQpe3JldHVybiExfX0oKT90aGlzLmdldEluZXJ0Qm9keUVsZW1lbnRfRE9NUGFyc2VyOnRoaXMuZ2V0SW5lcnRCb2R5RWxlbWVudF9JbmVydERvY3VtZW50KTp0aGlzLmdldEluZXJ0Qm9keUVsZW1lbnQ9dGhpcy5nZXRJbmVydEJvZHlFbGVtZW50X1hIUn1yZXR1cm4gdC5wcm90b3R5cGUuZ2V0SW5lcnRCb2R5RWxlbWVudF9YSFI9ZnVuY3Rpb24odCl7dD0iPGJvZHk+PHJlbW92ZT48L3JlbW92ZT4iK3QrIjwvYm9keT4iO3RyeXt0PWVuY29kZVVSSSh0KX1jYXRjaChyKXtyZXR1cm4gbnVsbH12YXIgZT1uZXcgWE1MSHR0cFJlcXVlc3Q7ZS5yZXNwb25zZVR5cGU9ImRvY3VtZW50IixlLm9wZW4oIkdFVCIsImRhdGE6dGV4dC9odG1sO2NoYXJzZXQ9dXRmLTgsIit0LCExKSxlLnNlbmQodm9pZCAwKTt2YXIgbj1lLnJlc3BvbnNlLmJvZHk7cmV0dXJuIG4ucmVtb3ZlQ2hpbGQobi5maXJzdENoaWxkKSxufSx0LnByb3RvdHlwZS5nZXRJbmVydEJvZHlFbGVtZW50X0RPTVBhcnNlcj1mdW5jdGlvbih0KXt0PSI8Ym9keT48cmVtb3ZlPjwvcmVtb3ZlPiIrdCsiPC9ib2R5PiI7dHJ5e3ZhciBlPShuZXcgd2luZG93LkRPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKHQsInRleHQvaHRtbCIpLmJvZHk7cmV0dXJuIGUucmVtb3ZlQ2hpbGQoZS5maXJzdENoaWxkKSxlfWNhdGNoKG4pe3JldHVybiBudWxsfX0sdC5wcm90b3R5cGUuZ2V0SW5lcnRCb2R5RWxlbWVudF9JbmVydERvY3VtZW50PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaW5lcnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpO3JldHVybiJjb250ZW50ImluIGU/KGUuaW5uZXJIVE1MPXQsZSk6KHRoaXMuaW5lcnRCb2R5RWxlbWVudC5pbm5lckhUTUw9dCx0aGlzLmRlZmF1bHREb2MuZG9jdW1lbnRNb2RlJiZ0aGlzLnN0cmlwQ3VzdG9tTnNBdHRycyh0aGlzLmluZXJ0Qm9keUVsZW1lbnQpLHRoaXMuaW5lcnRCb2R5RWxlbWVudCl9LHQucHJvdG90eXBlLnN0cmlwQ3VzdG9tTnNBdHRycz1mdW5jdGlvbih0KXtmb3IodmFyIGU9dC5hdHRyaWJ1dGVzLG49ZS5sZW5ndGgtMTswPG47bi0tKXt2YXIgcj1lLml0ZW0obikubmFtZTsieG1sbnM6bnMxIiE9PXImJjAhPT1yLmluZGV4T2YoIm5zMToiKXx8dC5yZW1vdmVBdHRyaWJ1dGUocil9Zm9yKHZhciBvPXQuZmlyc3RDaGlsZDtvOylvLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJnRoaXMuc3RyaXBDdXN0b21Oc0F0dHJzKG8pLG89by5uZXh0U2libGluZ30sdH0oKSxyZT0vXig/Oig/Omh0dHBzP3xtYWlsdG98ZnRwfHRlbHxmaWxlKTp8W14mOi8/I10qKD86Wy8/I118JCkpL2dpLG9lPS9eZGF0YTooPzppbWFnZVwvKD86Ym1wfGdpZnxqcGVnfGpwZ3xwbmd8dGlmZnx3ZWJwKXx2aWRlb1wvKD86bXBlZ3xtcDR8b2dnfHdlYm0pfGF1ZGlvXC8oPzptcDN8b2dhfG9nZ3xvcHVzKSk7YmFzZTY0LFthLXowLTkrXC9dKz0qJC9pO2Z1bmN0aW9uIGllKHQpe3JldHVybih0PVN0cmluZyh0KSkubWF0Y2gocmUpfHx0Lm1hdGNoKG9lKT90OihlZSgpJiZjb25zb2xlLndhcm4oIldBUk5JTkc6IHNhbml0aXppbmcgdW5zYWZlIFVSTCB2YWx1ZSAiK3QrIiAoc2VlIGh0dHA6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcykiKSwidW5zYWZlOiIrdCl9ZnVuY3Rpb24gYWUodCl7dmFyIGUsbixvPXt9O3RyeXtmb3IodmFyIGk9T2JqZWN0KHIuX192YWx1ZXMpKHQuc3BsaXQoIiwiKSksYT1pLm5leHQoKTshYS5kb25lO2E9aS5uZXh0KCkpb1thLnZhbHVlXT0hMH1jYXRjaCh1KXtlPXtlcnJvcjp1fX1maW5hbGx5e3RyeXthJiYhYS5kb25lJiYobj1pLnJldHVybikmJm4uY2FsbChpKX1maW5hbGx5e2lmKGUpdGhyb3cgZS5lcnJvcn19cmV0dXJuIG99ZnVuY3Rpb24gdWUoKXtmb3IodmFyIHQsZSxuPVtdLG89MDtvPGFyZ3VtZW50cy5sZW5ndGg7bysrKW5bb109YXJndW1lbnRzW29dO3ZhciBpPXt9O3RyeXtmb3IodmFyIGE9T2JqZWN0KHIuX192YWx1ZXMpKG4pLHU9YS5uZXh0KCk7IXUuZG9uZTt1PWEubmV4dCgpKXt2YXIgbD11LnZhbHVlO2Zvcih2YXIgcyBpbiBsKWwuaGFzT3duUHJvcGVydHkocykmJihpW3NdPSEwKX19Y2F0Y2goYyl7dD17ZXJyb3I6Y319ZmluYWxseXt0cnl7dSYmIXUuZG9uZSYmKGU9YS5yZXR1cm4pJiZlLmNhbGwoYSl9ZmluYWxseXtpZih0KXRocm93IHQuZXJyb3J9fXJldHVybiBpfXZhciBsZSxzZT1hZSgiYXJlYSxicixjb2wsaHIsaW1nLHdiciIpLGNlPWFlKCJjb2xncm91cCxkZCxkdCxsaSxwLHRib2R5LHRkLHRmb290LHRoLHRoZWFkLHRyIiksZmU9YWUoInJwLHJ0IiksaGU9dWUoZmUsY2UpLHBlPXVlKHNlLHVlKGNlLGFlKCJhZGRyZXNzLGFydGljbGUsYXNpZGUsYmxvY2txdW90ZSxjYXB0aW9uLGNlbnRlcixkZWwsZGV0YWlscyxkaWFsb2csZGlyLGRpdixkbCxmaWd1cmUsZmlnY2FwdGlvbixmb290ZXIsaDEsaDIsaDMsaDQsaDUsaDYsaGVhZGVyLGhncm91cCxocixpbnMsbWFpbixtYXAsbWVudSxuYXYsb2wscHJlLHNlY3Rpb24sc3VtbWFyeSx0YWJsZSx1bCIpKSx1ZShmZSxhZSgiYSxhYmJyLGFjcm9ueW0sYXVkaW8sYixiZGksYmRvLGJpZyxicixjaXRlLGNvZGUsZGVsLGRmbixlbSxmb250LGksaW1nLGlucyxrYmQsbGFiZWwsbWFwLG1hcmsscGljdHVyZSxxLHJ1YnkscnAscnQscyxzYW1wLHNtYWxsLHNvdXJjZSxzcGFuLHN0cmlrZSxzdHJvbmcsc3ViLHN1cCx0aW1lLHRyYWNrLHR0LHUsdmFyLHZpZGVvIikpLGhlKSxkZT1hZSgiYmFja2dyb3VuZCxjaXRlLGhyZWYsaXRlbXR5cGUsbG9uZ2Rlc2MscG9zdGVyLHNyYyx4bGluazpocmVmIiksZ2U9YWUoInNyY3NldCIpLHZlPXVlKGRlLGdlLGFlKCJhYmJyLGFjY2Vzc2tleSxhbGlnbixhbHQsYXV0b3BsYXksYXhpcyxiZ2NvbG9yLGJvcmRlcixjZWxscGFkZGluZyxjZWxsc3BhY2luZyxjbGFzcyxjbGVhcixjb2xvcixjb2xzLGNvbHNwYW4sY29tcGFjdCxjb250cm9scyxjb29yZHMsZGF0ZXRpbWUsZGVmYXVsdCxkaXIsZG93bmxvYWQsZmFjZSxoZWFkZXJzLGhlaWdodCxoaWRkZW4saHJlZmxhbmcsaHNwYWNlLGlzbWFwLGl0ZW1zY29wZSxpdGVtcHJvcCxraW5kLGxhYmVsLGxhbmcsbGFuZ3VhZ2UsbG9vcCxtZWRpYSxtdXRlZCxub2hyZWYsbm93cmFwLG9wZW4scHJlbG9hZCxyZWwscmV2LHJvbGUscm93cyxyb3dzcGFuLHJ1bGVzLHNjb3BlLHNjcm9sbGluZyxzaGFwZSxzaXplLHNpemVzLHNwYW4sc3JjbGFuZyxzdGFydCxzdW1tYXJ5LHRhYmluZGV4LHRhcmdldCx0aXRsZSx0cmFuc2xhdGUsdHlwZSx1c2VtYXAsdmFsaWduLHZhbHVlLHZzcGFjZSx3aWR0aCIpLGFlKCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQsYXJpYS1hdG9taWMsYXJpYS1hdXRvY29tcGxldGUsYXJpYS1idXN5LGFyaWEtY2hlY2tlZCxhcmlhLWNvbGNvdW50LGFyaWEtY29saW5kZXgsYXJpYS1jb2xzcGFuLGFyaWEtY29udHJvbHMsYXJpYS1jdXJyZW50LGFyaWEtZGVzY3JpYmVkYnksYXJpYS1kZXRhaWxzLGFyaWEtZGlzYWJsZWQsYXJpYS1kcm9wZWZmZWN0LGFyaWEtZXJyb3JtZXNzYWdlLGFyaWEtZXhwYW5kZWQsYXJpYS1mbG93dG8sYXJpYS1ncmFiYmVkLGFyaWEtaGFzcG9wdXAsYXJpYS1oaWRkZW4sYXJpYS1pbnZhbGlkLGFyaWEta2V5c2hvcnRjdXRzLGFyaWEtbGFiZWwsYXJpYS1sYWJlbGxlZGJ5LGFyaWEtbGV2ZWwsYXJpYS1saXZlLGFyaWEtbW9kYWwsYXJpYS1tdWx0aWxpbmUsYXJpYS1tdWx0aXNlbGVjdGFibGUsYXJpYS1vcmllbnRhdGlvbixhcmlhLW93bnMsYXJpYS1wbGFjZWhvbGRlcixhcmlhLXBvc2luc2V0LGFyaWEtcHJlc3NlZCxhcmlhLXJlYWRvbmx5LGFyaWEtcmVsZXZhbnQsYXJpYS1yZXF1aXJlZCxhcmlhLXJvbGVkZXNjcmlwdGlvbixhcmlhLXJvd2NvdW50LGFyaWEtcm93aW5kZXgsYXJpYS1yb3dzcGFuLGFyaWEtc2VsZWN0ZWQsYXJpYS1zZXRzaXplLGFyaWEtc29ydCxhcmlhLXZhbHVlbWF4LGFyaWEtdmFsdWVtaW4sYXJpYS12YWx1ZW5vdyxhcmlhLXZhbHVldGV4dCIpKSx5ZT1hZSgic2NyaXB0LHN0eWxlLHRlbXBsYXRlIiksbWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5zYW5pdGl6ZWRTb21ldGhpbmc9ITEsdGhpcy5idWY9W119cmV0dXJuIHQucHJvdG90eXBlLnNhbml0aXplQ2hpbGRyZW49ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuZmlyc3RDaGlsZCxuPSEwO2U7KWlmKGUubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERT9uPXRoaXMuc3RhcnRFbGVtZW50KGUpOmUubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERT90aGlzLmNoYXJzKGUubm9kZVZhbHVlKTp0aGlzLnNhbml0aXplZFNvbWV0aGluZz0hMCxuJiZlLmZpcnN0Q2hpbGQpZT1lLmZpcnN0Q2hpbGQ7ZWxzZSBmb3IoO2U7KXtlLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJnRoaXMuZW5kRWxlbWVudChlKTt2YXIgcj10aGlzLmNoZWNrQ2xvYmJlcmVkRWxlbWVudChlLGUubmV4dFNpYmxpbmcpO2lmKHIpe2U9cjticmVha31lPXRoaXMuY2hlY2tDbG9iYmVyZWRFbGVtZW50KGUsZS5wYXJlbnROb2RlKX1yZXR1cm4gdGhpcy5idWYuam9pbigiIil9LHQucHJvdG90eXBlLnN0YXJ0RWxlbWVudD1mdW5jdGlvbih0KXt2YXIgZSxuPXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZighcGUuaGFzT3duUHJvcGVydHkobikpcmV0dXJuIHRoaXMuc2FuaXRpemVkU29tZXRoaW5nPSEwLCF5ZS5oYXNPd25Qcm9wZXJ0eShuKTt0aGlzLmJ1Zi5wdXNoKCI8IiksdGhpcy5idWYucHVzaChuKTtmb3IodmFyIHI9dC5hdHRyaWJ1dGVzLG89MDtvPHIubGVuZ3RoO28rKyl7dmFyIGk9ci5pdGVtKG8pLGE9aS5uYW1lLHU9YS50b0xvd2VyQ2FzZSgpO2lmKHZlLmhhc093blByb3BlcnR5KHUpKXt2YXIgbD1pLnZhbHVlO2RlW3VdJiYobD1pZShsKSksZ2VbdV0mJihlPWwsbD0oZT1TdHJpbmcoZSkpLnNwbGl0KCIsIikubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gaWUodC50cmltKCkpfSkpLmpvaW4oIiwgIikpLHRoaXMuYnVmLnB1c2goIiAiLGEsJz0iJyxiZShsKSwnIicpfWVsc2UgdGhpcy5zYW5pdGl6ZWRTb21ldGhpbmc9ITB9cmV0dXJuIHRoaXMuYnVmLnB1c2goIj4iKSwhMH0sdC5wcm90b3R5cGUuZW5kRWxlbWVudD1mdW5jdGlvbih0KXt2YXIgZT10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cGUuaGFzT3duUHJvcGVydHkoZSkmJiFzZS5oYXNPd25Qcm9wZXJ0eShlKSYmKHRoaXMuYnVmLnB1c2goIjwvIiksdGhpcy5idWYucHVzaChlKSx0aGlzLmJ1Zi5wdXNoKCI+IikpfSx0LnByb3RvdHlwZS5jaGFycz1mdW5jdGlvbih0KXt0aGlzLmJ1Zi5wdXNoKGJlKHQpKX0sdC5wcm90b3R5cGUuY2hlY2tDbG9iYmVyZWRFbGVtZW50PWZ1bmN0aW9uKHQsZSl7aWYoZSYmKHQuY29tcGFyZURvY3VtZW50UG9zaXRpb24oZSkmTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9DT05UQUlORURfQlkpPT09Tm9kZS5ET0NVTUVOVF9QT1NJVElPTl9DT05UQUlORURfQlkpdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gc2FuaXRpemUgaHRtbCBiZWNhdXNlIHRoZSBlbGVtZW50IGlzIGNsb2JiZXJlZDogIit0Lm91dGVySFRNTCk7cmV0dXJuIGV9LHR9KCksX2U9L1tcdUQ4MDAtXHVEQkZGXVtcdURDMDAtXHVERkZGXS9nLHdlPS8oW15cIy1+IHwhXSkvZztmdW5jdGlvbiBiZSh0KXtyZXR1cm4gdC5yZXBsYWNlKC8mL2csIiZhbXA7IikucmVwbGFjZShfZSwoZnVuY3Rpb24odCl7cmV0dXJuIiYjIisoMTAyNCoodC5jaGFyQ29kZUF0KDApLTU1Mjk2KSsodC5jaGFyQ29kZUF0KDEpLTU2MzIwKSs2NTUzNikrIjsifSkpLnJlcGxhY2Uod2UsKGZ1bmN0aW9uKHQpe3JldHVybiImIyIrdC5jaGFyQ29kZUF0KDApKyI7In0pKS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKX1mdW5jdGlvbiB4ZSh0KXtyZXR1cm4iY29udGVudCJpbiB0JiZmdW5jdGlvbih0KXtyZXR1cm4gdC5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFJiYiVEVNUExBVEUiPT09dC5ub2RlTmFtZX0odCk/dC5jb250ZW50Om51bGx9dmFyIENlPWZ1bmN0aW9uKHQpe3JldHVybiB0W3QuTk9ORT0wXT0iTk9ORSIsdFt0LkhUTUw9MV09IkhUTUwiLHRbdC5TVFlMRT0yXT0iU1RZTEUiLHRbdC5TQ1JJUFQ9M109IlNDUklQVCIsdFt0LlVSTD00XT0iVVJMIix0W3QuUkVTT1VSQ0VfVVJMPTVdPSJSRVNPVVJDRV9VUkwiLHR9KHt9KSxTZT1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe319KCksRWU9bmV3IFJlZ0V4cCgiXihbLSwuXCInJV8hIyBhLXpBLVowLTldK3woPzooPzptYXRyaXh8dHJhbnNsYXRlfHNjYWxlfHJvdGF0ZXxza2V3fHBlcnNwZWN0aXZlKSg/Olh8WXxafDNkKT98KD86cmdifGhzbClhP3woPzpyZXBlYXRpbmctKT8oPzpsaW5lYXJ8cmFkaWFsKS1ncmFkaWVudHwoPzpjYWxjfGF0dHIpKVxcKFstMC05LiUsICNhLXpBLVpdK1xcKSkkIiwiZyIpLE9lPS9edXJsXCgoW14pXSspXCkkLyxUZT0vKFtBLVpdKS9nO2Z1bmN0aW9uIFBlKHQpe3RyeXtyZXR1cm4gbnVsbCE9dD90LnRvU3RyaW5nKCkuc2xpY2UoMCwzMCk6dH1jYXRjaChlKXtyZXR1cm4iW0VSUk9SXSBFeGNlcHRpb24gd2hpbGUgdHJ5aW5nIHRvIHNlcmlhbGl6ZSB0aGUgdmFsdWUifX12YXIga2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0Ll9fTkdfRUxFTUVOVF9JRF9fPWZ1bmN0aW9uKCl7cmV0dXJuIEFlKCl9LHR9KCksQWU9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV19LEllPW5ldyBUdCgiVGhlIHByZXNlbmNlIG9mIHRoaXMgdG9rZW4gbWFya3MgYW4gaW5qZWN0b3IgYXMgYmVpbmcgdGhlIHJvb3QgaW5qZWN0b3IuIiksUmU9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBuZXcgTGUodCxlLG4pfSxNZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQuY3JlYXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/UmUodCxlLCIiKTpSZSh0LnByb3ZpZGVycyx0LnBhcmVudCx0Lm5hbWV8fCIiKX0sdC5USFJPV19JRl9OT1RfRk9VTkQ9a3QsdC5OVUxMPW5ldyBMdCx0Lm5nSW5qZWN0YWJsZURlZj1kdCh7dG9rZW46dCxwcm92aWRlZEluOiJhbnkiLGZhY3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm4gVXQoUHQpfX0pLHQuX19OR19FTEVNRU5UX0lEX189LTEsdH0oKSxqZT1mdW5jdGlvbih0KXtyZXR1cm4gdH0sTmU9W10sRGU9amUsVWU9ZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKX0sTGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt2b2lkIDA9PT1lJiYoZT1NZS5OVUxMKSx2b2lkIDA9PT1uJiYobj1udWxsKSx0aGlzLnBhcmVudD1lLHRoaXMuc291cmNlPW47dmFyIHI9dGhpcy5fcmVjb3Jkcz1uZXcgTWFwO3Iuc2V0KE1lLHt0b2tlbjpNZSxmbjpqZSxkZXBzOk5lLHZhbHVlOnRoaXMsdXNlTmV3OiExfSksci5zZXQoUHQse3Rva2VuOlB0LGZuOmplLGRlcHM6TmUsdmFsdWU6dGhpcyx1c2VOZXc6ITF9KSxmdW5jdGlvbiB0KGUsbil7aWYobilpZigobj13dChuKSlpbnN0YW5jZW9mIEFycmF5KWZvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisrKXQoZSxuW3JdKTtlbHNle2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBuKXRocm93IEhlKCJGdW5jdGlvbi9DbGFzcyBub3Qgc3VwcG9ydGVkIixuKTtpZighbnx8Im9iamVjdCIhPXR5cGVvZiBufHwhbi5wcm92aWRlKXRocm93IEhlKCJVbmV4cGVjdGVkIHByb3ZpZGVyIixuKTt2YXIgbz13dChuLnByb3ZpZGUpLGk9ZnVuY3Rpb24odCl7dmFyIGU9ZnVuY3Rpb24odCl7dmFyIGU9TmUsbj10LmRlcHM7aWYobiYmbi5sZW5ndGgpe2U9W107Zm9yKHZhciByPTA7cjxuLmxlbmd0aDtyKyspe3ZhciBvPTY7aWYoKGw9d3QobltyXSkpaW5zdGFuY2VvZiBBcnJheSlmb3IodmFyIGk9MCxhPWw7aTxhLmxlbmd0aDtpKyspe3ZhciB1PWFbaV07dSBpbnN0YW5jZW9mIHN0fHx1PT1zdD9vfD0xOnUgaW5zdGFuY2VvZiBmdHx8dT09ZnQ/byY9LTM6dSBpbnN0YW5jZW9mIGN0fHx1PT1jdD9vJj0tNTpsPXUgaW5zdGFuY2VvZiBsdD91LnRva2VuOnd0KHUpfWUucHVzaCh7dG9rZW46bCxvcHRpb25zOm99KX19ZWxzZSBpZih0LnVzZUV4aXN0aW5nKXt2YXIgbD13dCh0LnVzZUV4aXN0aW5nKTtlPVt7dG9rZW46bCxvcHRpb25zOjZ9XX1lbHNlIGlmKCEobnx8TXQgaW4gdCkpdGhyb3cgSGUoIidkZXBzJyByZXF1aXJlZCIsdCk7cmV0dXJuIGV9KHQpLG49amUscj1OZSxvPSExLGk9d3QodC5wcm92aWRlKTtpZihNdCBpbiB0KXI9dC51c2VWYWx1ZTtlbHNlIGlmKHQudXNlRmFjdG9yeSluPXQudXNlRmFjdG9yeTtlbHNlIGlmKHQudXNlRXhpc3RpbmcpO2Vsc2UgaWYodC51c2VDbGFzcylvPSEwLG49d3QodC51c2VDbGFzcyk7ZWxzZXtpZigiZnVuY3Rpb24iIT10eXBlb2YgaSl0aHJvdyBIZSgiU3RhdGljUHJvdmlkZXIgZG9lcyBub3QgaGF2ZSBbdXNlVmFsdWV8dXNlRmFjdG9yeXx1c2VFeGlzdGluZ3x1c2VDbGFzc10gb3IgW3Byb3ZpZGVdIGlzIG5vdCBuZXdhYmxlIix0KTtvPSEwLG49aX1yZXR1cm57ZGVwczplLGZuOm4sdXNlTmV3Om8sdmFsdWU6cn19KG4pO2lmKCEwPT09bi5tdWx0aSl7dmFyIGE9ZS5nZXQobyk7aWYoYSl7aWYoYS5mbiE9PVVlKXRocm93IFZlKG8pfWVsc2UgZS5zZXQobyxhPXt0b2tlbjpuLnByb3ZpZGUsZGVwczpbXSx1c2VOZXc6ITEsZm46VWUsdmFsdWU6TmV9KTthLmRlcHMucHVzaCh7dG9rZW46bz1uLG9wdGlvbnM6Nn0pfXZhciB1PWUuZ2V0KG8pO2lmKHUmJnUuZm49PVVlKXRocm93IFZlKG8pO2Uuc2V0KG8saSl9fShyLHQpfXJldHVybiB0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCxlLG4pe3ZvaWQgMD09PW4mJihuPWh0LkRlZmF1bHQpO3ZhciBvPXRoaXMuX3JlY29yZHMuZ2V0KHQpO3RyeXtyZXR1cm4gZnVuY3Rpb24gdChlLG4sbyxpLGEsdSl7dHJ5e3JldHVybiBmdW5jdGlvbihlLG4sbyxpLGEsdSl7dmFyIGwscztpZighbnx8dSZodC5Ta2lwU2VsZil1Jmh0LlNlbGZ8fChzPWkuZ2V0KGUsYSxodC5EZWZhdWx0KSk7ZWxzZXtpZigocz1uLnZhbHVlKT09RGUpdGhyb3cgRXJyb3IoIsm1Q2lyY3VsYXIgZGVwZW5kZW5jeSIpO2lmKHM9PT1OZSl7bi52YWx1ZT1EZTt2YXIgYz1uLnVzZU5ldyxmPW4uZm4saD1uLmRlcHMscD1OZTtpZihoLmxlbmd0aCl7cD1bXTtmb3IodmFyIGQ9MDtkPGgubGVuZ3RoO2QrKyl7dmFyIGc9aFtkXSx2PWcub3B0aW9ucyx5PTImdj9vLmdldChnLnRva2VuKTp2b2lkIDA7cC5wdXNoKHQoZy50b2tlbix5LG8seXx8NCZ2P2k6TWUuTlVMTCwxJnY/bnVsbDpNZS5USFJPV19JRl9OT1RfRk9VTkQsaHQuRGVmYXVsdCkpfX1uLnZhbHVlPXM9Yz9uZXcoKGw9ZikuYmluZC5hcHBseShsLE9iamVjdChyLl9fc3ByZWFkKShbdm9pZCAwXSxwKSkpOmYuYXBwbHkodm9pZCAwLHApfX1yZXR1cm4gc30oZSxuLG8saSxhLHUpfWNhdGNoKGwpe3Rocm93IGwgaW5zdGFuY2VvZiBFcnJvcnx8KGw9bmV3IEVycm9yKGwpKSwobC5uZ1RlbXBUb2tlblBhdGg9bC5uZ1RlbXBUb2tlblBhdGh8fFtdKS51bnNoaWZ0KGUpLG4mJm4udmFsdWU9PURlJiYobi52YWx1ZT1OZSksbH19KHQsbyx0aGlzLl9yZWNvcmRzLHRoaXMucGFyZW50LGUsbil9Y2F0Y2goaSl7cmV0dXJuIGZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvPXQubg=="
                },
                {
                    "key": "asdf?main.e3350ff4d88d534234ef.js?4?2?0",
                    "type": "binary",
                    "value": "base64:Z1RlbXBUb2tlblBhdGg7dGhyb3cgZVtSdF0mJm8udW5zaGlmdChlW1J0XSksdC5tZXNzYWdlPVZ0KCJcbiIrdC5tZXNzYWdlLG8sIlN0YXRpY0luamVjdG9yRXJyb3IiLHIpLHQubmdUb2tlblBhdGg9byx0Lm5nVGVtcFRva2VuUGF0aD1udWxsLHR9KGksdCwwLHRoaXMuc291cmNlKX19LHQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIHQ9W107cmV0dXJuIHRoaXMuX3JlY29yZHMuZm9yRWFjaCgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gdC5wdXNoKHl0KG4pKX0pKSwiU3RhdGljSW5qZWN0b3JbIit0LmpvaW4oIiwgIikrIl0ifSx0fSgpO2Z1bmN0aW9uIFZlKHQpe3JldHVybiBIZSgiQ2Fubm90IG1peCBtdWx0aSBwcm92aWRlcnMgYW5kIHJlZ3VsYXIgcHJvdmlkZXJzIix0KX1mdW5jdGlvbiBIZSh0LGUpe3JldHVybiBuZXcgRXJyb3IoVnQodCxlLCJTdGF0aWNJbmplY3RvckVycm9yIikpfXZhciB6ZT1uZXcgVHQoIkFuYWx5emVGb3JFbnRyeUNvbXBvbmVudHMiKSxGZT1udWxsO2Z1bmN0aW9uIEJlKCl7aWYoIUZlKXt2YXIgdD1PdC5TeW1ib2w7aWYodCYmdC5pdGVyYXRvcilGZT10Lml0ZXJhdG9yO2Vsc2UgZm9yKHZhciBlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE1hcC5wcm90b3R5cGUpLG49MDtuPGUubGVuZ3RoOysrbil7dmFyIHI9ZVtuXTsiZW50cmllcyIhPT1yJiYic2l6ZSIhPT1yJiZNYXAucHJvdG90eXBlW3JdPT09TWFwLnByb3RvdHlwZS5lbnRyaWVzJiYoRmU9cil9fXJldHVybiBGZX1mdW5jdGlvbiBaZSh0LGUpe3JldHVybiB0PT09ZXx8Im51bWJlciI9PXR5cGVvZiB0JiYibnVtYmVyIj09dHlwZW9mIGUmJmlzTmFOKHQpJiZpc05hTihlKX1mdW5jdGlvbiBHZSh0LGUpe3ZhciBuPVdlKHQpLHI9V2UoZSk7cmV0dXJuIG4mJnI/ZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgcj10W0JlKCldKCksbz1lW0JlKCldKCk7Oyl7dmFyIGk9ci5uZXh0KCksYT1vLm5leHQoKTtpZihpLmRvbmUmJmEuZG9uZSlyZXR1cm4hMDtpZihpLmRvbmV8fGEuZG9uZSlyZXR1cm4hMTtpZighbihpLnZhbHVlLGEudmFsdWUpKXJldHVybiExfX0odCxlLEdlKTohKG58fCF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0fHxyfHwhZXx8Im9iamVjdCIhPXR5cGVvZiBlJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl8fFplKHQsZSl9dmFyIHFlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLndyYXBwZWQ9dH1yZXR1cm4gdC53cmFwPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdChlKX0sdC51bndyYXA9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuaXNXcmFwcGVkKGUpP2Uud3JhcHBlZDplfSx0LmlzV3JhcHBlZD1mdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIHR9LHR9KCk7ZnVuY3Rpb24gV2UodCl7cmV0dXJuISFRZSh0KSYmKEFycmF5LmlzQXJyYXkodCl8fCEodCBpbnN0YW5jZW9mIE1hcCkmJkJlKClpbiB0KX1mdW5jdGlvbiBRZSh0KXtyZXR1cm4gbnVsbCE9PXQmJigiZnVuY3Rpb24iPT10eXBlb2YgdHx8Im9iamVjdCI9PXR5cGVvZiB0KX1mdW5jdGlvbiBLZSh0KXtyZXR1cm4hIXQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnRoZW59ZnVuY3Rpb24gWWUodCl7cmV0dXJuISF0JiYiZnVuY3Rpb24iPT10eXBlb2YgdC5zdWJzY3JpYmV9dmFyIEplPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5wcmV2aW91c1ZhbHVlPXQsdGhpcy5jdXJyZW50VmFsdWU9ZSx0aGlzLmZpcnN0Q2hhbmdlPW59cmV0dXJuIHQucHJvdG90eXBlLmlzRmlyc3RDaGFuZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maXJzdENoYW5nZX0sdH0oKSwkZT1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe319KCksWGU9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXt9fSgpO2Z1bmN0aW9uIHRuKHQpe3ZhciBlPUVycm9yKCJObyBjb21wb25lbnQgZmFjdG9yeSBmb3VuZCBmb3IgIit5dCh0KSsiLiBEaWQgeW91IGFkZCBpdCB0byBATmdNb2R1bGUuZW50cnlDb21wb25lbnRzPyIpO3JldHVybiBlW2VuXT10LGV9dmFyIGVuPSJuZ0NvbXBvbmVudCIsbm49ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeT1mdW5jdGlvbih0KXt0aHJvdyB0bih0KX0sdH0oKSxybj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQuTlVMTD1uZXcgbm4sdH0oKSxvbj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3RoaXMuX3BhcmVudD1lLHRoaXMuX25nTW9kdWxlPW4sdGhpcy5fZmFjdG9yaWVzPW5ldyBNYXA7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBvPXRbcl07dGhpcy5fZmFjdG9yaWVzLnNldChvLmNvbXBvbmVudFR5cGUsbyl9fXJldHVybiB0LnByb3RvdHlwZS5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9mYWN0b3JpZXMuZ2V0KHQpO2lmKCFlJiZ0aGlzLl9wYXJlbnQmJihlPXRoaXMuX3BhcmVudC5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeSh0KSksIWUpdGhyb3cgdG4odCk7cmV0dXJuIG5ldyBhbihlLHRoaXMuX25nTW9kdWxlKX0sdH0oKSxhbj1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dmFyIHI9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiByLmZhY3Rvcnk9ZSxyLm5nTW9kdWxlPW4sci5zZWxlY3Rvcj1lLnNlbGVjdG9yLHIuY29tcG9uZW50VHlwZT1lLmNvbXBvbmVudFR5cGUsci5uZ0NvbnRlbnRTZWxlY3RvcnM9ZS5uZ0NvbnRlbnRTZWxlY3RvcnMsci5pbnB1dHM9ZS5pbnB1dHMsci5vdXRwdXRzPWUub3V0cHV0cyxyfXJldHVybiBPYmplY3Qoci5fX2V4dGVuZHMpKGUsdCksZS5wcm90b3R5cGUuY3JlYXRlPWZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybiB0aGlzLmZhY3RvcnkuY3JlYXRlKHQsZSxuLHJ8fHRoaXMubmdNb2R1bGUpfSxlfShYZSk7ZnVuY3Rpb24gdW4oKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV19dmFyIGxuPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLm5hdGl2ZUVsZW1lbnQ9dH1yZXR1cm4gdC5fX05HX0VMRU1FTlRfSURfXz1mdW5jdGlvbigpe3JldHVybiBzbih0KX0sdH0oKSxzbj11bixjbj1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe319KCksZm49ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXt9fSgpLGhuPWZ1bmN0aW9uKHQpe3JldHVybiB0W3QuSW1wb3J0YW50PTFdPSJJbXBvcnRhbnQiLHRbdC5EYXNoQ2FzZT0yXT0iRGFzaENhc2UiLHR9KHt9KSxwbj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQuX19OR19FTEVNRU5UX0lEX189ZnVuY3Rpb24oKXtyZXR1cm4gZG4oKX0sdH0oKSxkbj11bixnbj1uZXcoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7dGhpcy5mdWxsPXQsdGhpcy5tYWpvcj10LnNwbGl0KCIuIilbMF0sdGhpcy5taW5vcj10LnNwbGl0KCIuIilbMV0sdGhpcy5wYXRjaD10LnNwbGl0KCIuIikuc2xpY2UoMikuam9pbigiLiIpfX0oKSkoIjguMi4xNCIpLHZuPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuc3VwcG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIFdlKHQpfSx0LnByb3RvdHlwZS5jcmVhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBtbih0KX0sdH0oKSx5bj1mdW5jdGlvbih0LGUpe3JldHVybiBlfSxtbj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5sZW5ndGg9MCx0aGlzLl9saW5rZWRSZWNvcmRzPW51bGwsdGhpcy5fdW5saW5rZWRSZWNvcmRzPW51bGwsdGhpcy5fcHJldmlvdXNJdEhlYWQ9bnVsbCx0aGlzLl9pdEhlYWQ9bnVsbCx0aGlzLl9pdFRhaWw9bnVsbCx0aGlzLl9hZGRpdGlvbnNIZWFkPW51bGwsdGhpcy5fYWRkaXRpb25zVGFpbD1udWxsLHRoaXMuX21vdmVzSGVhZD1udWxsLHRoaXMuX21vdmVzVGFpbD1udWxsLHRoaXMuX3JlbW92YWxzSGVhZD1udWxsLHRoaXMuX3JlbW92YWxzVGFpbD1udWxsLHRoaXMuX2lkZW50aXR5Q2hhbmdlc0hlYWQ9bnVsbCx0aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsPW51bGwsdGhpcy5fdHJhY2tCeUZuPXR8fHlufXJldHVybiB0LnByb3RvdHlwZS5mb3JFYWNoSXRlbT1mdW5jdGlvbih0KXt2YXIgZTtmb3IoZT10aGlzLl9pdEhlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0KXQoZSl9LHQucHJvdG90eXBlLmZvckVhY2hPcGVyYXRpb249ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMuX2l0SGVhZCxuPXRoaXMuX3JlbW92YWxzSGVhZCxyPTAsbz1udWxsO2V8fG47KXt2YXIgaT0hbnx8ZSYmZS5jdXJyZW50SW5kZXg8eG4obixyLG8pP2U6bixhPXhuKGkscixvKSx1PWkuY3VycmVudEluZGV4O2lmKGk9PT1uKXItLSxuPW4uX25leHRSZW1vdmVkO2Vsc2UgaWYoZT1lLl9uZXh0LG51bGw9PWkucHJldmlvdXNJbmRleClyKys7ZWxzZXtvfHwobz1bXSk7dmFyIGw9YS1yLHM9dS1yO2lmKGwhPXMpe2Zvcih2YXIgYz0wO2M8bDtjKyspe3ZhciBmPWM8by5sZW5ndGg/b1tjXTpvW2NdPTAsaD1mK2M7czw9aCYmaDxsJiYob1tjXT1mKzEpfW9baS5wcmV2aW91c0luZGV4XT1zLWx9fWEhPT11JiZ0KGksYSx1KX19LHQucHJvdG90eXBlLmZvckVhY2hQcmV2aW91c0l0ZW09ZnVuY3Rpb24odCl7dmFyIGU7Zm9yKGU9dGhpcy5fcHJldmlvdXNJdEhlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0UHJldmlvdXMpdChlKX0sdC5wcm90b3R5cGUuZm9yRWFjaEFkZGVkSXRlbT1mdW5jdGlvbih0KXt2YXIgZTtmb3IoZT10aGlzLl9hZGRpdGlvbnNIZWFkO251bGwhPT1lO2U9ZS5fbmV4dEFkZGVkKXQoZSl9LHQucHJvdG90eXBlLmZvckVhY2hNb3ZlZEl0ZW09ZnVuY3Rpb24odCl7dmFyIGU7Zm9yKGU9dGhpcy5fbW92ZXNIZWFkO251bGwhPT1lO2U9ZS5fbmV4dE1vdmVkKXQoZSl9LHQucHJvdG90eXBlLmZvckVhY2hSZW1vdmVkSXRlbT1mdW5jdGlvbih0KXt2YXIgZTtmb3IoZT10aGlzLl9yZW1vdmFsc0hlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0UmVtb3ZlZCl0KGUpfSx0LnByb3RvdHlwZS5mb3JFYWNoSWRlbnRpdHlDaGFuZ2U9ZnVuY3Rpb24odCl7dmFyIGU7Zm9yKGU9dGhpcy5faWRlbnRpdHlDaGFuZ2VzSGVhZDtudWxsIT09ZTtlPWUuX25leHRJZGVudGl0eUNoYW5nZSl0KGUpfSx0LnByb3RvdHlwZS5kaWZmPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQmJih0PVtdKSwhV2UodCkpdGhyb3cgbmV3IEVycm9yKCJFcnJvciB0cnlpbmcgdG8gZGlmZiAnIit5dCh0KSsiJy4gT25seSBhcnJheXMgYW5kIGl0ZXJhYmxlcyBhcmUgYWxsb3dlZCIpO3JldHVybiB0aGlzLmNoZWNrKHQpP3RoaXM6bnVsbH0sdC5wcm90b3R5cGUub25EZXN0cm95PWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5jaGVjaz1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuX3Jlc2V0KCk7dmFyIG4scixvLGk9dGhpcy5faXRIZWFkLGE9ITE7aWYoQXJyYXkuaXNBcnJheSh0KSl7dGhpcy5sZW5ndGg9dC5sZW5ndGg7Zm9yKHZhciB1PTA7dTx0aGlzLmxlbmd0aDt1Kyspbz10aGlzLl90cmFja0J5Rm4odSxyPXRbdV0pLG51bGwhPT1pJiZaZShpLnRyYWNrQnlJZCxvKT8oYSYmKGk9dGhpcy5fdmVyaWZ5UmVpbnNlcnRpb24oaSxyLG8sdSkpLFplKGkuaXRlbSxyKXx8dGhpcy5fYWRkSWRlbnRpdHlDaGFuZ2UoaSxyKSk6KGk9dGhpcy5fbWlzbWF0Y2goaSxyLG8sdSksYT0hMCksaT1pLl9uZXh0fWVsc2Ugbj0wLGZ1bmN0aW9uKHQsZSl7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyllKHRbbl0pO2Vsc2UgZm9yKHZhciByPXRbQmUoKV0oKSxvPXZvaWQgMDshKG89ci5uZXh0KCkpLmRvbmU7KWUoby52YWx1ZSl9KHQsKGZ1bmN0aW9uKHQpe289ZS5fdHJhY2tCeUZuKG4sdCksbnVsbCE9PWkmJlplKGkudHJhY2tCeUlkLG8pPyhhJiYoaT1lLl92ZXJpZnlSZWluc2VydGlvbihpLHQsbyxuKSksWmUoaS5pdGVtLHQpfHxlLl9hZGRJZGVudGl0eUNoYW5nZShpLHQpKTooaT1lLl9taXNtYXRjaChpLHQsbyxuKSxhPSEwKSxpPWkuX25leHQsbisrfSkpLHRoaXMubGVuZ3RoPW47cmV0dXJuIHRoaXMuX3RydW5jYXRlKGkpLHRoaXMuY29sbGVjdGlvbj10LHRoaXMuaXNEaXJ0eX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJpc0RpcnR5Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT10aGlzLl9hZGRpdGlvbnNIZWFkfHxudWxsIT09dGhpcy5fbW92ZXNIZWFkfHxudWxsIT09dGhpcy5fcmVtb3ZhbHNIZWFkfHxudWxsIT09dGhpcy5faWRlbnRpdHlDaGFuZ2VzSGVhZH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5fcmVzZXQ9ZnVuY3Rpb24oKXtpZih0aGlzLmlzRGlydHkpe3ZhciB0PXZvaWQgMCxlPXZvaWQgMDtmb3IodD10aGlzLl9wcmV2aW91c0l0SGVhZD10aGlzLl9pdEhlYWQ7bnVsbCE9PXQ7dD10Ll9uZXh0KXQuX25leHRQcmV2aW91cz10Ll9uZXh0O2Zvcih0PXRoaXMuX2FkZGl0aW9uc0hlYWQ7bnVsbCE9PXQ7dD10Ll9uZXh0QWRkZWQpdC5wcmV2aW91c0luZGV4PXQuY3VycmVudEluZGV4O2Zvcih0aGlzLl9hZGRpdGlvbnNIZWFkPXRoaXMuX2FkZGl0aW9uc1RhaWw9bnVsbCx0PXRoaXMuX21vdmVzSGVhZDtudWxsIT09dDt0PWUpdC5wcmV2aW91c0luZGV4PXQuY3VycmVudEluZGV4LGU9dC5fbmV4dE1vdmVkO3RoaXMuX21vdmVzSGVhZD10aGlzLl9tb3Zlc1RhaWw9bnVsbCx0aGlzLl9yZW1vdmFsc0hlYWQ9dGhpcy5fcmVtb3ZhbHNUYWlsPW51bGwsdGhpcy5faWRlbnRpdHlDaGFuZ2VzSGVhZD10aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsPW51bGx9fSx0LnByb3RvdHlwZS5fbWlzbWF0Y2g9ZnVuY3Rpb24odCxlLG4scil7dmFyIG87cmV0dXJuIG51bGw9PT10P289dGhpcy5faXRUYWlsOihvPXQuX3ByZXYsdGhpcy5fcmVtb3ZlKHQpKSxudWxsIT09KHQ9bnVsbD09PXRoaXMuX2xpbmtlZFJlY29yZHM/bnVsbDp0aGlzLl9saW5rZWRSZWNvcmRzLmdldChuLHIpKT8oWmUodC5pdGVtLGUpfHx0aGlzLl9hZGRJZGVudGl0eUNoYW5nZSh0LGUpLHRoaXMuX21vdmVBZnRlcih0LG8scikpOm51bGwhPT0odD1udWxsPT09dGhpcy5fdW5saW5rZWRSZWNvcmRzP251bGw6dGhpcy5fdW5saW5rZWRSZWNvcmRzLmdldChuLG51bGwpKT8oWmUodC5pdGVtLGUpfHx0aGlzLl9hZGRJZGVudGl0eUNoYW5nZSh0LGUpLHRoaXMuX3JlaW5zZXJ0QWZ0ZXIodCxvLHIpKTp0PXRoaXMuX2FkZEFmdGVyKG5ldyBfbihlLG4pLG8sciksdH0sdC5wcm90b3R5cGUuX3ZlcmlmeVJlaW5zZXJ0aW9uPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvPW51bGw9PT10aGlzLl91bmxpbmtlZFJlY29yZHM/bnVsbDp0aGlzLl91bmxpbmtlZFJlY29yZHMuZ2V0KG4sbnVsbCk7cmV0dXJuIG51bGwhPT1vP3Q9dGhpcy5fcmVpbnNlcnRBZnRlcihvLHQuX3ByZXYscik6dC5jdXJyZW50SW5kZXghPXImJih0LmN1cnJlbnRJbmRleD1yLHRoaXMuX2FkZFRvTW92ZXModCxyKSksdH0sdC5wcm90b3R5cGUuX3RydW5jYXRlPWZ1bmN0aW9uKHQpe2Zvcig7bnVsbCE9PXQ7KXt2YXIgZT10Ll9uZXh0O3RoaXMuX2FkZFRvUmVtb3ZhbHModGhpcy5fdW5saW5rKHQpKSx0PWV9bnVsbCE9PXRoaXMuX3VubGlua2VkUmVjb3JkcyYmdGhpcy5fdW5saW5rZWRSZWNvcmRzLmNsZWFyKCksbnVsbCE9PXRoaXMuX2FkZGl0aW9uc1RhaWwmJih0aGlzLl9hZGRpdGlvbnNUYWlsLl9uZXh0QWRkZWQ9bnVsbCksbnVsbCE9PXRoaXMuX21vdmVzVGFpbCYmKHRoaXMuX21vdmVzVGFpbC5fbmV4dE1vdmVkPW51bGwpLG51bGwhPT10aGlzLl9pdFRhaWwmJih0aGlzLl9pdFRhaWwuX25leHQ9bnVsbCksbnVsbCE9PXRoaXMuX3JlbW92YWxzVGFpbCYmKHRoaXMuX3JlbW92YWxzVGFpbC5fbmV4dFJlbW92ZWQ9bnVsbCksbnVsbCE9PXRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWwmJih0aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsLl9uZXh0SWRlbnRpdHlDaGFuZ2U9bnVsbCl9LHQucHJvdG90eXBlLl9yZWluc2VydEFmdGVyPWZ1bmN0aW9uKHQsZSxuKXtudWxsIT09dGhpcy5fdW5saW5rZWRSZWNvcmRzJiZ0aGlzLl91bmxpbmtlZFJlY29yZHMucmVtb3ZlKHQpO3ZhciByPXQuX3ByZXZSZW1vdmVkLG89dC5fbmV4dFJlbW92ZWQ7cmV0dXJuIG51bGw9PT1yP3RoaXMuX3JlbW92YWxzSGVhZD1vOnIuX25leHRSZW1vdmVkPW8sbnVsbD09PW8/dGhpcy5fcmVtb3ZhbHNUYWlsPXI6by5fcHJldlJlbW92ZWQ9cix0aGlzLl9pbnNlcnRBZnRlcih0LGUsbiksdGhpcy5fYWRkVG9Nb3Zlcyh0LG4pLHR9LHQucHJvdG90eXBlLl9tb3ZlQWZ0ZXI9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0aGlzLl91bmxpbmsodCksdGhpcy5faW5zZXJ0QWZ0ZXIodCxlLG4pLHRoaXMuX2FkZFRvTW92ZXModCxuKSx0fSx0LnByb3RvdHlwZS5fYWRkQWZ0ZXI9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0aGlzLl9pbnNlcnRBZnRlcih0LGUsbiksdGhpcy5fYWRkaXRpb25zVGFpbD1udWxsPT09dGhpcy5fYWRkaXRpb25zVGFpbD90aGlzLl9hZGRpdGlvbnNIZWFkPXQ6dGhpcy5fYWRkaXRpb25zVGFpbC5fbmV4dEFkZGVkPXQsdH0sdC5wcm90b3R5cGUuX2luc2VydEFmdGVyPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1udWxsPT09ZT90aGlzLl9pdEhlYWQ6ZS5fbmV4dDtyZXR1cm4gdC5fbmV4dD1yLHQuX3ByZXY9ZSxudWxsPT09cj90aGlzLl9pdFRhaWw9dDpyLl9wcmV2PXQsbnVsbD09PWU/dGhpcy5faXRIZWFkPXQ6ZS5fbmV4dD10LG51bGw9PT10aGlzLl9saW5rZWRSZWNvcmRzJiYodGhpcy5fbGlua2VkUmVjb3Jkcz1uZXcgYm4pLHRoaXMuX2xpbmtlZFJlY29yZHMucHV0KHQpLHQuY3VycmVudEluZGV4PW4sdH0sdC5wcm90b3R5cGUuX3JlbW92ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYWRkVG9SZW1vdmFscyh0aGlzLl91bmxpbmsodCkpfSx0LnByb3RvdHlwZS5fdW5saW5rPWZ1bmN0aW9uKHQpe251bGwhPT10aGlzLl9saW5rZWRSZWNvcmRzJiZ0aGlzLl9saW5rZWRSZWNvcmRzLnJlbW92ZSh0KTt2YXIgZT10Ll9wcmV2LG49dC5fbmV4dDtyZXR1cm4gbnVsbD09PWU/dGhpcy5faXRIZWFkPW46ZS5fbmV4dD1uLG51bGw9PT1uP3RoaXMuX2l0VGFpbD1lOm4uX3ByZXY9ZSx0fSx0LnByb3RvdHlwZS5fYWRkVG9Nb3Zlcz1mdW5jdGlvbih0LGUpe3JldHVybiB0LnByZXZpb3VzSW5kZXg9PT1lP3Q6KHRoaXMuX21vdmVzVGFpbD1udWxsPT09dGhpcy5fbW92ZXNUYWlsP3RoaXMuX21vdmVzSGVhZD10OnRoaXMuX21vdmVzVGFpbC5fbmV4dE1vdmVkPXQsdCl9LHQucHJvdG90eXBlLl9hZGRUb1JlbW92YWxzPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT09dGhpcy5fdW5saW5rZWRSZWNvcmRzJiYodGhpcy5fdW5saW5rZWRSZWNvcmRzPW5ldyBibiksdGhpcy5fdW5saW5rZWRSZWNvcmRzLnB1dCh0KSx0LmN1cnJlbnRJbmRleD1udWxsLHQuX25leHRSZW1vdmVkPW51bGwsbnVsbD09PXRoaXMuX3JlbW92YWxzVGFpbD8odGhpcy5fcmVtb3ZhbHNUYWlsPXRoaXMuX3JlbW92YWxzSGVhZD10LHQuX3ByZXZSZW1vdmVkPW51bGwpOih0Ll9wcmV2UmVtb3ZlZD10aGlzLl9yZW1vdmFsc1RhaWwsdGhpcy5fcmVtb3ZhbHNUYWlsPXRoaXMuX3JlbW92YWxzVGFpbC5fbmV4dFJlbW92ZWQ9dCksdH0sdC5wcm90b3R5cGUuX2FkZElkZW50aXR5Q2hhbmdlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuaXRlbT1lLHRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWw9bnVsbD09PXRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWw/dGhpcy5faWRlbnRpdHlDaGFuZ2VzSGVhZD10OnRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWwuX25leHRJZGVudGl0eUNoYW5nZT10LHR9LHR9KCksX249ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCxlKXt0aGlzLml0ZW09dCx0aGlzLnRyYWNrQnlJZD1lLHRoaXMuY3VycmVudEluZGV4PW51bGwsdGhpcy5wcmV2aW91c0luZGV4PW51bGwsdGhpcy5fbmV4dFByZXZpb3VzPW51bGwsdGhpcy5fcHJldj1udWxsLHRoaXMuX25leHQ9bnVsbCx0aGlzLl9wcmV2RHVwPW51bGwsdGhpcy5fbmV4dER1cD1udWxsLHRoaXMuX3ByZXZSZW1vdmVkPW51bGwsdGhpcy5fbmV4dFJlbW92ZWQ9bnVsbCx0aGlzLl9uZXh0QWRkZWQ9bnVsbCx0aGlzLl9uZXh0TW92ZWQ9bnVsbCx0aGlzLl9uZXh0SWRlbnRpdHlDaGFuZ2U9bnVsbH19KCksd249ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5faGVhZD1udWxsLHRoaXMuX3RhaWw9bnVsbH1yZXR1cm4gdC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHQpe251bGw9PT10aGlzLl9oZWFkPyh0aGlzLl9oZWFkPXRoaXMuX3RhaWw9dCx0Ll9uZXh0RHVwPW51bGwsdC5fcHJldkR1cD1udWxsKToodGhpcy5fdGFpbC5fbmV4dER1cD10LHQuX3ByZXZEdXA9dGhpcy5fdGFpbCx0Ll9uZXh0RHVwPW51bGwsdGhpcy5fdGFpbD10KX0sdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQsZSl7dmFyIG47Zm9yKG49dGhpcy5faGVhZDtudWxsIT09bjtuPW4uX25leHREdXApaWYoKG51bGw9PT1lfHxlPD1uLmN1cnJlbnRJbmRleCkmJlplKG4udHJhY2tCeUlkLHQpKXJldHVybiBuO3JldHVybiBudWxsfSx0LnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24odCl7dmFyIGU9dC5fcHJldkR1cCxuPXQuX25leHREdXA7cmV0dXJuIG51bGw9PT1lP3RoaXMuX2hlYWQ9bjplLl9uZXh0RHVwPW4sbnVsbD09PW4/dGhpcy5fdGFpbD1lOm4uX3ByZXZEdXA9ZSxudWxsPT09dGhpcy5faGVhZH0sdH0oKSxibj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLm1hcD1uZXcgTWFwfXJldHVybiB0LnByb3RvdHlwZS5wdXQ9ZnVuY3Rpb24odCl7dmFyIGU9dC50cmFja0J5SWQsbj10aGlzLm1hcC5nZXQoZSk7bnx8KG49bmV3IHduLHRoaXMubWFwLnNldChlLG4pKSxuLmFkZCh0KX0sdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5tYXAuZ2V0KHQpO3JldHVybiBuP24uZ2V0KHQsZSk6bnVsbH0sdC5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKHQpe3ZhciBlPXQudHJhY2tCeUlkO3JldHVybiB0aGlzLm1hcC5nZXQoZSkucmVtb3ZlKHQpJiZ0aGlzLm1hcC5kZWxldGUoZSksdH0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJpc0VtcHR5Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLm1hcC5zaXplfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5tYXAuY2xlYXIoKX0sdH0oKTtmdW5jdGlvbiB4bih0LGUsbil7dmFyIHI9dC5wcmV2aW91c0luZGV4O2lmKG51bGw9PT1yKXJldHVybiByO3ZhciBvPTA7cmV0dXJuIG4mJnI8bi5sZW5ndGgmJihvPW5bcl0pLHIrZStvfXZhciBDbj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnN1cHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgTWFwfHxRZSh0KX0sdC5wcm90b3R5cGUuY3JlYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBTbn0sdH0oKSxTbj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLl9yZWNvcmRzPW5ldyBNYXAsdGhpcy5fbWFwSGVhZD1udWxsLHRoaXMuX2FwcGVuZEFmdGVyPW51bGwsdGhpcy5fcHJldmlvdXNNYXBIZWFkPW51bGwsdGhpcy5fY2hhbmdlc0hlYWQ9bnVsbCx0aGlzLl9jaGFuZ2VzVGFpbD1udWxsLHRoaXMuX2FkZGl0aW9uc0hlYWQ9bnVsbCx0aGlzLl9hZGRpdGlvbnNUYWlsPW51bGwsdGhpcy5fcmVtb3ZhbHNIZWFkPW51bGwsdGhpcy5fcmVtb3ZhbHNUYWlsPW51bGx9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiaXNEaXJ0eSIse2dldDpmdW5jdGlvbigpe3JldHVybiBudWxsIT09dGhpcy5fYWRkaXRpb25zSGVhZHx8bnVsbCE9PXRoaXMuX2NoYW5nZXNIZWFkfHxudWxsIT09dGhpcy5fcmVtb3ZhbHNIZWFkfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmZvckVhY2hJdGVtPWZ1bmN0aW9uKHQpe3ZhciBlO2ZvcihlPXRoaXMuX21hcEhlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0KXQoZSl9LHQucHJvdG90eXBlLmZvckVhY2hQcmV2aW91c0l0ZW09ZnVuY3Rpb24odCl7dmFyIGU7Zm9yKGU9dGhpcy5fcHJldmlvdXNNYXBIZWFkO251bGwhPT1lO2U9ZS5fbmV4dFByZXZpb3VzKXQoZSl9LHQucHJvdG90eXBlLmZvckVhY2hDaGFuZ2VkSXRlbT1mdW5jdGlvbih0KXt2YXIgZTtmb3IoZT10aGlzLl9jaGFuZ2VzSGVhZDtudWxsIT09ZTtlPWUuX25leHRDaGFuZ2VkKXQoZSl9LHQucHJvdG90eXBlLmZvckVhY2hBZGRlZEl0ZW09ZnVuY3Rpb24odCl7dmFyIGU7Zm9yKGU9dGhpcy5fYWRkaXRpb25zSGVhZDtudWxsIT09ZTtlPWUuX25leHRBZGRlZCl0KGUpfSx0LnByb3RvdHlwZS5mb3JFYWNoUmVtb3ZlZEl0ZW09ZnVuY3Rpb24odCl7dmFyIGU7Zm9yKGU9dGhpcy5fcmVtb3ZhbHNIZWFkO251bGwhPT1lO2U9ZS5fbmV4dFJlbW92ZWQpdChlKX0sdC5wcm90b3R5cGUuZGlmZj1mdW5jdGlvbih0KXtpZih0KXtpZighKHQgaW5zdGFuY2VvZiBNYXB8fFFlKHQpKSl0aHJvdyBuZXcgRXJyb3IoIkVycm9yIHRyeWluZyB0byBkaWZmICciK3l0KHQpKyInLiBPbmx5IG1hcHMgYW5kIG9iamVjdHMgYXJlIGFsbG93ZWQiKX1lbHNlIHQ9bmV3IE1hcDtyZXR1cm4gdGhpcy5jaGVjayh0KT90aGlzOm51bGx9LHQucHJvdG90eXBlLm9uRGVzdHJveT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuY2hlY2s9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLl9yZXNldCgpO3ZhciBuPXRoaXMuX21hcEhlYWQ7aWYodGhpcy5fYXBwZW5kQWZ0ZXI9bnVsbCx0aGlzLl9mb3JFYWNoKHQsKGZ1bmN0aW9uKHQscil7aWYobiYmbi5rZXk9PT1yKWUuX21heWJlQWRkVG9DaGFuZ2VzKG4sdCksZS5fYXBwZW5kQWZ0ZXI9bixuPW4uX25leHQ7ZWxzZXt2YXIgbz1lLl9nZXRPckNyZWF0ZVJlY29yZEZvcktleShyLHQpO249ZS5faW5zZXJ0QmVmb3JlT3JBcHBlbmQobixvKX19KSksbil7bi5fcHJldiYmKG4uX3ByZXYuX25leHQ9bnVsbCksdGhpcy5fcmVtb3ZhbHNIZWFkPW47Zm9yKHZhciByPW47bnVsbCE9PXI7cj1yLl9uZXh0UmVtb3ZlZClyPT09dGhpcy5fbWFwSGVhZCYmKHRoaXMuX21hcEhlYWQ9bnVsbCksdGhpcy5fcmVjb3Jkcy5kZWxldGUoci5rZXkpLHIuX25leHRSZW1vdmVkPXIuX25leHQsci5wcmV2aW91c1ZhbHVlPXIuY3VycmVudFZhbHVlLHIuY3VycmVudFZhbHVlPW51bGwsci5fcHJldj1udWxsLHIuX25leHQ9bnVsbH1yZXR1cm4gdGhpcy5fY2hhbmdlc1RhaWwmJih0aGlzLl9jaGFuZ2VzVGFpbC5fbmV4dENoYW5nZWQ9bnVsbCksdGhpcy5fYWRkaXRpb25zVGFpbCYmKHRoaXMuX2FkZGl0aW9uc1RhaWwuX25leHRBZGRlZD1udWxsKSx0aGlzLmlzRGlydHl9LHQucHJvdG90eXBlLl9pbnNlcnRCZWZvcmVPckFwcGVuZD1mdW5jdGlvbih0LGUpe2lmKHQpe3ZhciBuPXQuX3ByZXY7cmV0dXJuIGUuX25leHQ9dCxlLl9wcmV2PW4sdC5fcHJldj1lLG4mJihuLl9uZXh0PWUpLHQ9PT10aGlzLl9tYXBIZWFkJiYodGhpcy5fbWFwSGVhZD1lKSx0aGlzLl9hcHBlbmRBZnRlcj10LHR9cmV0dXJuIHRoaXMuX2FwcGVuZEFmdGVyPyh0aGlzLl9hcHBlbmRBZnRlci5fbmV4dD1lLGUuX3ByZXY9dGhpcy5fYXBwZW5kQWZ0ZXIpOnRoaXMuX21hcEhlYWQ9ZSx0aGlzLl9hcHBlbmRBZnRlcj1lLG51bGx9LHQucHJvdG90eXBlLl9nZXRPckNyZWF0ZVJlY29yZEZvcktleT1mdW5jdGlvbih0LGUpe2lmKHRoaXMuX3JlY29yZHMuaGFzKHQpKXt2YXIgbj10aGlzLl9yZWNvcmRzLmdldCh0KTt0aGlzLl9tYXliZUFkZFRvQ2hhbmdlcyhuLGUpO3ZhciByPW4uX3ByZXYsbz1uLl9uZXh0O3JldHVybiByJiYoci5fbmV4dD1vKSxvJiYoby5fcHJldj1yKSxuLl9uZXh0PW51bGwsbi5fcHJldj1udWxsLG59dmFyIGk9bmV3IEVuKHQpO3JldHVybiB0aGlzLl9yZWNvcmRzLnNldCh0LGkpLGkuY3VycmVudFZhbHVlPWUsdGhpcy5fYWRkVG9BZGRpdGlvbnMoaSksaX0sdC5wcm90b3R5cGUuX3Jlc2V0PWZ1bmN0aW9uKCl7aWYodGhpcy5pc0RpcnR5KXt2YXIgdD12b2lkIDA7Zm9yKHRoaXMuX3ByZXZpb3VzTWFwSGVhZD10aGlzLl9tYXBIZWFkLHQ9dGhpcy5fcHJldmlvdXNNYXBIZWFkO251bGwhPT10O3Q9dC5fbmV4dCl0Ll9uZXh0UHJldmlvdXM9dC5fbmV4dDtmb3IodD10aGlzLl9jaGFuZ2VzSGVhZDtudWxsIT09dDt0PXQuX25leHRDaGFuZ2VkKXQucHJldmlvdXNWYWx1ZT10LmN1cnJlbnRWYWx1ZTtmb3IodD10aGlzLl9hZGRpdGlvbnNIZWFkO251bGwhPXQ7dD10Ll9uZXh0QWRkZWQpdC5wcmV2aW91c1ZhbHVlPXQuY3VycmVudFZhbHVlO3RoaXMuX2NoYW5nZXNIZWFkPXRoaXMuX2NoYW5nZXNUYWlsPW51bGwsdGhpcy5fYWRkaXRpb25zSGVhZD10aGlzLl9hZGRpdGlvbnNUYWlsPW51bGwsdGhpcy5fcmVtb3ZhbHNIZWFkPW51bGx9fSx0LnByb3RvdHlwZS5fbWF5YmVBZGRUb0NoYW5nZXM9ZnVuY3Rpb24odCxlKXtaZShlLHQuY3VycmVudFZhbHVlKXx8KHQucHJldmlvdXNWYWx1ZT10LmN1cnJlbnRWYWx1ZSx0LmN1cnJlbnRWYWx1ZT1lLHRoaXMuX2FkZFRvQ2hhbmdlcyh0KSl9LHQucHJvdG90eXBlLl9hZGRUb0FkZGl0aW9ucz1mdW5jdGlvbih0KXtudWxsPT09dGhpcy5fYWRkaXRpb25zSGVhZD90aGlzLl9hZGRpdGlvbnNIZWFkPXRoaXMuX2FkZGl0aW9uc1RhaWw9dDoodGhpcy5fYWRkaXRpb25zVGFpbC5fbmV4dEFkZGVkPXQsdGhpcy5fYWRkaXRpb25zVGFpbD10KX0sdC5wcm90b3R5cGUuX2FkZFRvQ2hhbmdlcz1mdW5jdGlvbih0KXtudWxsPT09dGhpcy5fY2hhbmdlc0hlYWQ/dGhpcy5fY2hhbmdlc0hlYWQ9dGhpcy5fY2hhbmdlc1RhaWw9dDoodGhpcy5fY2hhbmdlc1RhaWwuX25leHRDaGFuZ2VkPXQsdGhpcy5fY2hhbmdlc1RhaWw9dCl9LHQucHJvdG90eXBlLl9mb3JFYWNoPWZ1bmN0aW9uKHQsZSl7dCBpbnN0YW5jZW9mIE1hcD90LmZvckVhY2goZSk6T2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24obil7cmV0dXJuIGUodFtuXSxuKX0pKX0sdH0oKSxFbj1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXt0aGlzLmtleT10LHRoaXMucHJldmlvdXNWYWx1ZT1udWxsLHRoaXMuY3VycmVudFZhbHVlPW51bGwsdGhpcy5fbmV4dFByZXZpb3VzPW51bGwsdGhpcy5fbmV4dD1udWxsLHRoaXMuX3ByZXY9bnVsbCx0aGlzLl9uZXh0QWRkZWQ9bnVsbCx0aGlzLl9uZXh0UmVtb3ZlZD1udWxsLHRoaXMuX25leHRDaGFuZ2VkPW51bGx9fSgpLE9uPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmZhY3Rvcmllcz10fXJldHVybiB0LmNyZWF0ZT1mdW5jdGlvbihlLG4pe2lmKG51bGwhPW4pe3ZhciByPW4uZmFjdG9yaWVzLnNsaWNlKCk7ZT1lLmNvbmNhdChyKX1yZXR1cm4gbmV3IHQoZSl9LHQuZXh0ZW5kPWZ1bmN0aW9uKGUpe3JldHVybntwcm92aWRlOnQsdXNlRmFjdG9yeTpmdW5jdGlvbihuKXtpZighbil0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBleHRlbmQgSXRlcmFibGVEaWZmZXJzIHdpdGhvdXQgYSBwYXJlbnQgaW5qZWN0b3IiKTtyZXR1cm4gdC5jcmVhdGUoZSxuKX0sZGVwczpbW3QsbmV3IGZ0LG5ldyBzdF1dfX0sdC5wcm90b3R5cGUuZmluZD1mdW5jdGlvbih0KXt2YXIgZSxuPXRoaXMuZmFjdG9yaWVzLmZpbmQoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnN1cHBvcnRzKHQpfSkpO2lmKG51bGwhPW4pcmV0dXJuIG47dGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZmluZCBhIGRpZmZlciBzdXBwb3J0aW5nIG9iamVjdCAnIit0KyInIG9mIHR5cGUgJyIrKChlPXQpLm5hbWV8fHR5cGVvZiBlKSsiJyIpfSx0Lm5nSW5qZWN0YWJsZURlZj1kdCh7dG9rZW46dCxwcm92aWRlZEluOiJyb290IixmYWN0b3J5OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB0KFtuZXcgdm5dKX19KSx0fSgpLFRuPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmZhY3Rvcmllcz10fXJldHVybiB0LmNyZWF0ZT1mdW5jdGlvbihlLG4pe2lmKG4pe3ZhciByPW4uZmFjdG9yaWVzLnNsaWNlKCk7ZT1lLmNvbmNhdChyKX1yZXR1cm4gbmV3IHQoZSl9LHQuZXh0ZW5kPWZ1bmN0aW9uKGUpe3JldHVybntwcm92aWRlOnQsdXNlRmFjdG9yeTpmdW5jdGlvbihuKXtpZighbil0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBleHRlbmQgS2V5VmFsdWVEaWZmZXJzIHdpdGhvdXQgYSBwYXJlbnQgaW5qZWN0b3IiKTtyZXR1cm4gdC5jcmVhdGUoZSxuKX0sZGVwczpbW3QsbmV3IGZ0LG5ldyBzdF1dfX0sdC5wcm90b3R5cGUuZmluZD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmZhY3Rvcmllcy5maW5kKChmdW5jdGlvbihlKXtyZXR1cm4gZS5zdXBwb3J0cyh0KX0pKTtpZihlKXJldHVybiBlO3Rocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgYSBkaWZmZXIgc3VwcG9ydGluZyBvYmplY3QgJyIrdCsiJyIpfSx0Lm5nSW5qZWN0YWJsZURlZj1kdCh7dG9rZW46dCxwcm92aWRlZEluOiJyb290IixmYWN0b3J5OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB0KFtuZXcgQ25dKX19KSx0fSgpLFBuPVtuZXcgQ25dLGtuPW5ldyBPbihbbmV3IHZuXSksQW49bmV3IFRuKFBuKSxJbj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQuX19OR19FTEVNRU5UX0lEX189ZnVuY3Rpb24oKXtyZXR1cm4gUm4odCxsbil9LHR9KCksUm49dW4sTW49ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0Ll9fTkdfRUxFTUVOVF9JRF9fPWZ1bmN0aW9uKCl7cmV0dXJuIGpuKHQsbG4pfSx0fSgpLGpuPXVuO2Z1bmN0aW9uIE5uKHQsZSxuLHIpe3ZhciBvPSJFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yOiBFeHByZXNzaW9uIGhhcyBjaGFuZ2VkIGFmdGVyIGl0IHdhcyBjaGVja2VkLiBQcmV2aW91cyB2YWx1ZTogJyIrZSsiJy4gQ3VycmVudCB2YWx1ZTogJyIrbisiJy4iO3JldHVybiByJiYobys9IiBJdCBzZWVtcyBsaWtlIHRoZSB2aWV3IGhhcyBiZWVuIGNyZWF0ZWQgYWZ0ZXIgaXRzIHBhcmVudCBhbmQgaXRzIGNoaWxkcmVuIGhhdmUgYmVlbiBkaXJ0eSBjaGVja2VkLiBIYXMgaXQgYmVlbiBjcmVhdGVkIGluIGEgY2hhbmdlIGRldGVjdGlvbiBob29rID8iKSxmdW5jdGlvbih0LGUpe3ZhciBuPW5ldyBFcnJvcih0KTtyZXR1cm4gRG4obixlKSxufShvLHQpfWZ1bmN0aW9uIERuKHQsZSl7dFtxdF09ZSx0W1F0XT1lLmxvZ0Vycm9yLmJpbmQoZSl9ZnVuY3Rpb24gVW4odCl7cmV0dXJuIG5ldyBFcnJvcigiVmlld0Rlc3Ryb3llZEVycm9yOiBBdHRlbXB0IHRvIHVzZSBhIGRlc3Ryb3llZCB2aWV3OiAiK3QpfWZ1bmN0aW9uIExuKHQsZSxuKXt2YXIgcj10LnN0YXRlLG89MTc5MiZyO3JldHVybiBvPT09ZT8odC5zdGF0ZT0tMTc5MyZyfG4sdC5pbml0SW5kZXg9LTEsITApOm89PT1ufWZ1bmN0aW9uIFZuKHQsZSxuKXtyZXR1cm4oMTc5MiZ0LnN0YXRlKT09PWUmJnQuaW5pdEluZGV4PD1uJiYodC5pbml0SW5kZXg9bisxLCEwKX1mdW5jdGlvbiBIbih0LGUpe3JldHVybiB0Lm5vZGVzW2VdfWZ1bmN0aW9uIHpuKHQsZSl7cmV0dXJuIHQubm9kZXNbZV19ZnVuY3Rpb24gRm4odCxlKXtyZXR1cm4gdC5ub2Rlc1tlXX1mdW5jdGlvbiBCbih0LGUpe3JldHVybiB0Lm5vZGVzW2VdfWZ1bmN0aW9uIFpuKHQsZSl7cmV0dXJuIHQubm9kZXNbZV19dmFyIEduPXtzZXRDdXJyZW50Tm9kZTp2b2lkIDAsY3JlYXRlUm9vdFZpZXc6dm9pZCAwLGNyZWF0ZUVtYmVkZGVkVmlldzp2b2lkIDAsY3JlYXRlQ29tcG9uZW50Vmlldzp2b2lkIDAsY3JlYXRlTmdNb2R1bGVSZWY6dm9pZCAwLG92ZXJyaWRlUHJvdmlkZXI6dm9pZCAwLG92ZXJyaWRlQ29tcG9uZW50Vmlldzp2b2lkIDAsY2xlYXJPdmVycmlkZXM6dm9pZCAwLGNoZWNrQW5kVXBkYXRlVmlldzp2b2lkIDAsY2hlY2tOb0NoYW5nZXNWaWV3OnZvaWQgMCxkZXN0cm95Vmlldzp2b2lkIDAscmVzb2x2ZURlcDp2b2lkIDAsY3JlYXRlRGVidWdDb250ZXh0OnZvaWQgMCxoYW5kbGVFdmVudDp2b2lkIDAsdXBkYXRlRGlyZWN0aXZlczp2b2lkIDAsdXBkYXRlUmVuZGVyZXI6dm9pZCAwLGRpcnR5UGFyZW50UXVlcmllczp2b2lkIDB9LHFuPWZ1bmN0aW9uKCl7fSxXbj1uZXcgTWFwO2Z1bmN0aW9uIFFuKHQpe3ZhciBlPVduLmdldCh0KTtyZXR1cm4gZXx8KGU9eXQodCkrIl8iK1duLnNpemUsV24uc2V0KHQsZSkpLGV9dmFyIEtuPSIkJHVuZGVmaW5lZCIsWW49IiQkZW1wdHkiO2Z1bmN0aW9uIEpuKHQpe3JldHVybntpZDpLbixzdHlsZXM6dC5zdHlsZXMsZW5jYXBzdWxhdGlvbjp0LmVuY2Fwc3VsYXRpb24sZGF0YTp0LmRhdGF9fXZhciAkbj0wO2Z1bmN0aW9uIFhuKHQsZSxuLHIpe3JldHVybiEoISgyJnQuc3RhdGUpJiZaZSh0Lm9sZFZhbHVlc1tlLmJpbmRpbmdJbmRleCtuXSxyKSl9ZnVuY3Rpb24gdHIodCxlLG4scil7cmV0dXJuISFYbih0LGUsbixyKSYmKHQub2xkVmFsdWVzW2UuYmluZGluZ0luZGV4K25dPXIsITApfWZ1bmN0aW9uIGVyKHQsZSxuLHIpe3ZhciBvPXQub2xkVmFsdWVzW2UuYmluZGluZ0luZGV4K25dO2lmKDEmdC5zdGF0ZXx8IUdlKG8scikpe3ZhciBpPWUuYmluZGluZ3Nbbl0ubmFtZTt0aHJvdyBObihHbi5jcmVhdGVEZWJ1Z0NvbnRleHQodCxlLm5vZGVJbmRleCksaSsiOiAiK28saSsiOiAiK3IsMCE9KDEmdC5zdGF0ZSkpfX1mdW5jdGlvbiBucih0KXtmb3IodmFyIGU9dDtlOykyJmUuZGVmLmZsYWdzJiYoZS5zdGF0ZXw9OCksZT1lLnZpZXdDb250YWluZXJQYXJlbnR8fGUucGFyZW50fWZ1bmN0aW9uIHJyKHQsZSl7Zm9yKHZhciBuPXQ7biYmbiE9PWU7KW4uc3RhdGV8PTY0LG49bi52aWV3Q29udGFpbmVyUGFyZW50fHxuLnBhcmVudH1mdW5jdGlvbiBvcih0LGUsbixyKXt0cnl7cmV0dXJuIG5yKDMzNTU0NDMyJnQuZGVmLm5vZGVzW2VdLmZsYWdzP3puKHQsZSkuY29tcG9uZW50Vmlldzp0KSxHbi5oYW5kbGVFdmVudCh0LGUsbixyKX1jYXRjaChvKXt0LnJvb3QuZXJyb3JIYW5kbGVyLmhhbmRsZUVycm9yKG8pfX1mdW5jdGlvbiBpcih0KXtyZXR1cm4gdC5wYXJlbnQ/em4odC5wYXJlbnQsdC5wYXJlbnROb2RlRGVmLm5vZGVJbmRleCk6bnVsbH1mdW5jdGlvbiBhcih0KXtyZXR1cm4gdC5wYXJlbnQ/dC5wYXJlbnROb2RlRGVmLnBhcmVudDpudWxsfWZ1bmN0aW9uIHVyKHQsZSl7c3dpdGNoKDIwMTM0NzA2NyZlLmZsYWdzKXtjYXNlIDE6cmV0dXJuIHpuKHQsZS5ub2RlSW5kZXgpLnJlbmRlckVsZW1lbnQ7Y2FzZSAyOnJldHVybiBIbih0LGUubm9kZUluZGV4KS5yZW5kZXJUZXh0fX1mdW5jdGlvbiBscih0KXtyZXR1cm4hIXQucGFyZW50JiYhISgzMjc2OCZ0LnBhcmVudE5vZGVEZWYuZmxhZ3MpfWZ1bmN0aW9uIHNyKHQpe3JldHVybiEoIXQucGFyZW50fHwzMjc2OCZ0LnBhcmVudE5vZGVEZWYuZmxhZ3MpfWZ1bmN0aW9uIGNyKHQpe3ZhciBlPXt9LG49MCxvPXt9O3JldHVybiB0JiZ0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBpPU9iamVjdChyLl9fcmVhZCkodCwyKSxhPWlbMF0sdT1pWzFdOyJudW1iZXIiPT10eXBlb2YgYT8oZVthXT11LG58PWZ1bmN0aW9uKHQpe3JldHVybiAxPDx0JTMyfShhKSk6b1thXT11fSkpLHttYXRjaGVkUXVlcmllczplLHJlZmVyZW5jZXM6byxtYXRjaGVkUXVlcnlJZHM6bn19ZnVuY3Rpb24gZnIodCxlKXtyZXR1cm4gdC5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBuLG8saTtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT8oaT0obj1PYmplY3Qoci5fX3JlYWQpKHQsMikpWzBdLG89blsxXSk6KGk9MCxvPXQpLG8mJigiZnVuY3Rpb24iPT10eXBlb2Ygb3x8Im9iamVjdCI9PXR5cGVvZiBvKSYmZSYmT2JqZWN0Lg=="
                },
                {
                    "key": "asdf?main.e3350ff4d88d534234ef.js?4?3?0",
                    "type": "binary",
                    "value": "base64:ZGVmaW5lUHJvcGVydHkobyxSdCx7dmFsdWU6ZSxjb25maWd1cmFibGU6ITB9KSx7ZmxhZ3M6aSx0b2tlbjpvLHRva2VuS2V5OlFuKG8pfX0pKX1mdW5jdGlvbiBocih0LGUsbil7dmFyIHI9bi5yZW5kZXJQYXJlbnQ7cmV0dXJuIHI/MD09KDEmci5mbGFncyl8fDA9PSgzMzU1NDQzMiZyLmZsYWdzKXx8ci5lbGVtZW50LmNvbXBvbmVudFJlbmRlcmVyVHlwZSYmci5lbGVtZW50LmNvbXBvbmVudFJlbmRlcmVyVHlwZS5lbmNhcHN1bGF0aW9uPT09WnQuTmF0aXZlP3puKHQsbi5yZW5kZXJQYXJlbnQubm9kZUluZGV4KS5yZW5kZXJFbGVtZW50OnZvaWQgMDplfXZhciBwcj1uZXcgV2Vha01hcDtmdW5jdGlvbiBkcih0KXt2YXIgZT1wci5nZXQodCk7cmV0dXJuIGV8fCgoZT10KChmdW5jdGlvbigpe3JldHVybiBxbn0pKSkuZmFjdG9yeT10LHByLnNldCh0LGUpKSxlfWZ1bmN0aW9uIGdyKHQsZSxuLHIsbyl7Mz09PWUmJihuPXQucmVuZGVyZXIucGFyZW50Tm9kZSh1cih0LHQuZGVmLmxhc3RSZW5kZXJSb290Tm9kZSkpKSx2cih0LGUsMCx0LmRlZi5ub2Rlcy5sZW5ndGgtMSxuLHIsbyl9ZnVuY3Rpb24gdnIodCxlLG4scixvLGksYSl7Zm9yKHZhciB1PW47dTw9cjt1Kyspe3ZhciBsPXQuZGVmLm5vZGVzW3VdOzExJmwuZmxhZ3MmJm1yKHQsbCxlLG8saSxhKSx1Kz1sLmNoaWxkQ291bnR9fWZ1bmN0aW9uIHlyKHQsZSxuLHIsbyxpKXtmb3IodmFyIGE9dDthJiYhbHIoYSk7KWE9YS5wYXJlbnQ7Zm9yKHZhciB1PWEucGFyZW50LGw9YXIoYSkscz1sLm5vZGVJbmRleCtsLmNoaWxkQ291bnQsYz1sLm5vZGVJbmRleCsxO2M8PXM7YysrKXt2YXIgZj11LmRlZi5ub2Rlc1tjXTtmLm5nQ29udGVudEluZGV4PT09ZSYmbXIodSxmLG4scixvLGkpLGMrPWYuY2hpbGRDb3VudH1pZighdS5wYXJlbnQpe3ZhciBoPXQucm9vdC5wcm9qZWN0YWJsZU5vZGVzW2VdO2lmKGgpZm9yKGM9MDtjPGgubGVuZ3RoO2MrKylfcih0LGhbY10sbixyLG8saSl9fWZ1bmN0aW9uIG1yKHQsZSxuLHIsbyxpKXtpZig4JmUuZmxhZ3MpeXIodCxlLm5nQ29udGVudC5pbmRleCxuLHIsbyxpKTtlbHNle3ZhciBhPXVyKHQsZSk7aWYoMz09PW4mJjMzNTU0NDMyJmUuZmxhZ3MmJjQ4JmUuYmluZGluZ0ZsYWdzPygxNiZlLmJpbmRpbmdGbGFncyYmX3IodCxhLG4scixvLGkpLDMyJmUuYmluZGluZ0ZsYWdzJiZfcih6bih0LGUubm9kZUluZGV4KS5jb21wb25lbnRWaWV3LGEsbixyLG8saSkpOl9yKHQsYSxuLHIsbyxpKSwxNjc3NzIxNiZlLmZsYWdzKWZvcih2YXIgdT16bih0LGUubm9kZUluZGV4KS52aWV3Q29udGFpbmVyLl9lbWJlZGRlZFZpZXdzLGw9MDtsPHUubGVuZ3RoO2wrKylncih1W2xdLG4scixvLGkpOzEmZS5mbGFncyYmIWUuZWxlbWVudC5uYW1lJiZ2cih0LG4sZS5ub2RlSW5kZXgrMSxlLm5vZGVJbmRleCtlLmNoaWxkQ291bnQscixvLGkpfX1mdW5jdGlvbiBfcih0LGUsbixyLG8saSl7dmFyIGE9dC5yZW5kZXJlcjtzd2l0Y2gobil7Y2FzZSAxOmEuYXBwZW5kQ2hpbGQocixlKTticmVhaztjYXNlIDI6YS5pbnNlcnRCZWZvcmUocixlLG8pO2JyZWFrO2Nhc2UgMzphLnJlbW92ZUNoaWxkKHIsZSk7YnJlYWs7Y2FzZSAwOmkucHVzaChlKX19dmFyIHdyPS9eOihbXjpdKyk6KC4rKSQvO2Z1bmN0aW9uIGJyKHQpe2lmKCI6Ij09PXRbMF0pe3ZhciBlPXQubWF0Y2god3IpO3JldHVybltlWzFdLGVbMl1dfXJldHVyblsiIix0XX1mdW5jdGlvbiB4cih0KXtmb3IodmFyIGU9MCxuPTA7bjx0Lmxlbmd0aDtuKyspZXw9dFtuXS5mbGFncztyZXR1cm4gZX12YXIgQ3I9bmV3IE9iamVjdCxTcj1RbihNZSksRXI9UW4oUHQpLE9yPVFuKEh0KTtmdW5jdGlvbiBUcih0LGUsbixyKXtyZXR1cm4gbj13dChuKSx7aW5kZXg6LTEsZGVwczpmcihyLHl0KGUpKSxmbGFnczp0LHRva2VuOmUsdmFsdWU6bn19ZnVuY3Rpb24gUHIodCxlLG4pe3ZvaWQgMD09PW4mJihuPU1lLlRIUk9XX0lGX05PVF9GT1VORCk7dmFyIHIsbyxpPU50KHQpO3RyeXtpZig4JmUuZmxhZ3MpcmV0dXJuIGUudG9rZW47aWYoMiZlLmZsYWdzJiYobj1udWxsKSwxJmUuZmxhZ3MpcmV0dXJuIHQuX3BhcmVudC5nZXQoZS50b2tlbixuKTt2YXIgYT1lLnRva2VuS2V5O3N3aXRjaChhKXtjYXNlIFNyOmNhc2UgRXI6Y2FzZSBPcjpyZXR1cm4gdH12YXIgdSxsPXQuX2RlZi5wcm92aWRlcnNCeUtleVthXTtpZihsKXt2YXIgcz10Ll9wcm92aWRlcnNbbC5pbmRleF07cmV0dXJuIHZvaWQgMD09PXMmJihzPXQuX3Byb3ZpZGVyc1tsLmluZGV4XT1rcih0LGwpKSxzPT09Q3I/dm9pZCAwOnN9aWYoKHU9Z3QoZS50b2tlbikpJiYocj10LG51bGwhPShvPXUpLnByb3ZpZGVkSW4mJihmdW5jdGlvbih0LGUpe3JldHVybiB0Ll9kZWYubW9kdWxlcy5pbmRleE9mKGUpPi0xfShyLG8ucHJvdmlkZWRJbil8fCJyb290Ij09PW8ucHJvdmlkZWRJbiYmci5fZGVmLmlzUm9vdCkpKXt2YXIgYz10Ll9wcm92aWRlcnMubGVuZ3RoO3JldHVybiB0Ll9kZWYucHJvdmlkZXJzW2NdPXQuX2RlZi5wcm92aWRlcnNCeUtleVtlLnRva2VuS2V5XT17ZmxhZ3M6NTEyMCx2YWx1ZTp1LmZhY3RvcnksZGVwczpbXSxpbmRleDpjLHRva2VuOmUudG9rZW59LHQuX3Byb3ZpZGVyc1tjXT1Dcix0Ll9wcm92aWRlcnNbY109a3IodCx0Ll9kZWYucHJvdmlkZXJzQnlLZXlbZS50b2tlbktleV0pfXJldHVybiA0JmUuZmxhZ3M/bjp0Ll9wYXJlbnQuZ2V0KGUudG9rZW4sbil9ZmluYWxseXtOdChpKX19ZnVuY3Rpb24ga3IodCxlKXt2YXIgbjtzd2l0Y2goMjAxMzQ3MDY3JmUuZmxhZ3Mpe2Nhc2UgNTEyOm49ZnVuY3Rpb24odCxlLG4pe3ZhciBvPW4ubGVuZ3RoO3N3aXRjaChvKXtjYXNlIDA6cmV0dXJuIG5ldyBlO2Nhc2UgMTpyZXR1cm4gbmV3IGUoUHIodCxuWzBdKSk7Y2FzZSAyOnJldHVybiBuZXcgZShQcih0LG5bMF0pLFByKHQsblsxXSkpO2Nhc2UgMzpyZXR1cm4gbmV3IGUoUHIodCxuWzBdKSxQcih0LG5bMV0pLFByKHQsblsyXSkpO2RlZmF1bHQ6Zm9yKHZhciBpPW5ldyBBcnJheShvKSxhPTA7YTxvO2ErKylpW2FdPVByKHQsblthXSk7cmV0dXJuIG5ldyhlLmJpbmQuYXBwbHkoZSxPYmplY3Qoci5fX3NwcmVhZCkoW3ZvaWQgMF0saSkpKX19KHQsZS52YWx1ZSxlLmRlcHMpO2JyZWFrO2Nhc2UgMTAyNDpuPWZ1bmN0aW9uKHQsZSxuKXt2YXIgbz1uLmxlbmd0aDtzd2l0Y2gobyl7Y2FzZSAwOnJldHVybiBlKCk7Y2FzZSAxOnJldHVybiBlKFByKHQsblswXSkpO2Nhc2UgMjpyZXR1cm4gZShQcih0LG5bMF0pLFByKHQsblsxXSkpO2Nhc2UgMzpyZXR1cm4gZShQcih0LG5bMF0pLFByKHQsblsxXSksUHIodCxuWzJdKSk7ZGVmYXVsdDpmb3IodmFyIGk9QXJyYXkobyksYT0wO2E8bzthKyspaVthXT1Qcih0LG5bYV0pO3JldHVybiBlLmFwcGx5KHZvaWQgMCxPYmplY3Qoci5fX3NwcmVhZCkoaSkpfX0odCxlLnZhbHVlLGUuZGVwcyk7YnJlYWs7Y2FzZSAyMDQ4Om49UHIodCxlLmRlcHNbMF0pO2JyZWFrO2Nhc2UgMjU2Om49ZS52YWx1ZX1yZXR1cm4gbj09PUNyfHxudWxsPT09bnx8Im9iamVjdCIhPXR5cGVvZiBufHwxMzEwNzImZS5mbGFnc3x8ImZ1bmN0aW9uIiE9dHlwZW9mIG4ubmdPbkRlc3Ryb3l8fChlLmZsYWdzfD0xMzEwNzIpLHZvaWQgMD09PW4/Q3I6bn1mdW5jdGlvbiBBcih0LGUpe3ZhciBuPXQudmlld0NvbnRhaW5lci5fZW1iZWRkZWRWaWV3cztpZigobnVsbD09ZXx8ZT49bi5sZW5ndGgpJiYoZT1uLmxlbmd0aC0xKSxlPDApcmV0dXJuIG51bGw7dmFyIHI9bltlXTtyZXR1cm4gci52aWV3Q29udGFpbmVyUGFyZW50PW51bGwsQnQobixlKSxHbi5kaXJ0eVBhcmVudFF1ZXJpZXMociksUnIocikscn1mdW5jdGlvbiBJcih0LGUsbil7dmFyIHI9ZT91cihlLGUuZGVmLmxhc3RSZW5kZXJSb290Tm9kZSk6dC5yZW5kZXJFbGVtZW50LG89bi5yZW5kZXJlci5wYXJlbnROb2RlKHIpLGk9bi5yZW5kZXJlci5uZXh0U2libGluZyhyKTtncihuLDIsbyxpLHZvaWQgMCl9ZnVuY3Rpb24gUnIodCl7Z3IodCwzLG51bGwsbnVsbCx2b2lkIDApfXZhciBNcj1uZXcgT2JqZWN0O2Z1bmN0aW9uIGpyKHQsZSxuLHIsbyxpKXtyZXR1cm4gbmV3IE5yKHQsZSxuLHIsbyxpKX12YXIgTnI9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scixvLGksYSl7dmFyIHU9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiB1LnNlbGVjdG9yPWUsdS5jb21wb25lbnRUeXBlPW4sdS5faW5wdXRzPW8sdS5fb3V0cHV0cz1pLHUubmdDb250ZW50U2VsZWN0b3JzPWEsdS52aWV3RGVmRmFjdG9yeT1yLHV9cmV0dXJuIE9iamVjdChyLl9fZXh0ZW5kcykoZSx0KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImlucHV0cyIse2dldDpmdW5jdGlvbigpe3ZhciB0PVtdLGU9dGhpcy5faW5wdXRzO2Zvcih2YXIgbiBpbiBlKXQucHVzaCh7cHJvcE5hbWU6bix0ZW1wbGF0ZU5hbWU6ZVtuXX0pO3JldHVybiB0fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwib3V0cHV0cyIse2dldDpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzLl9vdXRwdXRzKXQucHVzaCh7cHJvcE5hbWU6ZSx0ZW1wbGF0ZU5hbWU6dGhpcy5fb3V0cHV0c1tlXX0pO3JldHVybiB0fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmNyZWF0ZT1mdW5jdGlvbih0LGUsbixyKXtpZighcil0aHJvdyBuZXcgRXJyb3IoIm5nTW9kdWxlIHNob3VsZCBiZSBwcm92aWRlZCIpO3ZhciBvPWRyKHRoaXMudmlld0RlZkZhY3RvcnkpLGk9by5ub2Rlc1swXS5lbGVtZW50LmNvbXBvbmVudFByb3ZpZGVyLm5vZGVJbmRleCxhPUduLmNyZWF0ZVJvb3RWaWV3KHQsZXx8W10sbixvLHIsTXIpLHU9Rm4oYSxpKS5pbnN0YW5jZTtyZXR1cm4gbiYmYS5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoem4oYSwwKS5yZW5kZXJFbGVtZW50LCJuZy12ZXJzaW9uIixnbi5mdWxsKSxuZXcgRHIoYSxuZXcgSHIoYSksdSl9LGV9KFhlKSxEcj1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyKXt2YXIgbz10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG8uX3ZpZXc9ZSxvLl92aWV3UmVmPW4sby5fY29tcG9uZW50PXIsby5fZWxEZWY9by5fdmlldy5kZWYubm9kZXNbMF0sby5ob3N0Vmlldz1uLG8uY2hhbmdlRGV0ZWN0b3JSZWY9bixvLmluc3RhbmNlPXIsb31yZXR1cm4gT2JqZWN0KHIuX19leHRlbmRzKShlLHQpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwibG9jYXRpb24iLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGxuKHpuKHRoaXMuX3ZpZXcsdGhpcy5fZWxEZWYubm9kZUluZGV4KS5yZW5kZXJFbGVtZW50KX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImluamVjdG9yIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBacih0aGlzLl92aWV3LHRoaXMuX2VsRGVmKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImNvbXBvbmVudFR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29tcG9uZW50LmNvbnN0cnVjdG9yfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLl92aWV3UmVmLmRlc3Ryb3koKX0sZS5wcm90b3R5cGUub25EZXN0cm95PWZ1bmN0aW9uKHQpe3RoaXMuX3ZpZXdSZWYub25EZXN0cm95KHQpfSxlfSgkZSk7ZnVuY3Rpb24gVXIodCxlLG4pe3JldHVybiBuZXcgTHIodCxlLG4pfXZhciBMcj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3RoaXMuX3ZpZXc9dCx0aGlzLl9lbERlZj1lLHRoaXMuX2RhdGE9bix0aGlzLl9lbWJlZGRlZFZpZXdzPVtdfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImVsZW1lbnQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGxuKHRoaXMuX2RhdGEucmVuZGVyRWxlbWVudCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJpbmplY3RvciIse2dldDpmdW5jdGlvbigpe3JldHVybiBuZXcgWnIodGhpcy5fdmlldyx0aGlzLl9lbERlZil9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJwYXJlbnRJbmplY3RvciIse2dldDpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLl92aWV3LGU9dGhpcy5fZWxEZWYucGFyZW50OyFlJiZ0OyllPWFyKHQpLHQ9dC5wYXJlbnQ7cmV0dXJuIHQ/bmV3IFpyKHQsZSk6bmV3IFpyKHRoaXMuX3ZpZXcsbnVsbCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5fZW1iZWRkZWRWaWV3cy5sZW5ndGgtMTt0Pj0wO3QtLSl7dmFyIGU9QXIodGhpcy5fZGF0YSx0KTtHbi5kZXN0cm95VmlldyhlKX19LHQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9lbWJlZGRlZFZpZXdzW3RdO2lmKGUpe3ZhciBuPW5ldyBIcihlKTtyZXR1cm4gbi5hdHRhY2hUb1ZpZXdDb250YWluZXJSZWYodGhpcyksbn1yZXR1cm4gbnVsbH0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJsZW5ndGgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZW1iZWRkZWRWaWV3cy5sZW5ndGh9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuY3JlYXRlRW1iZWRkZWRWaWV3PWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj10LmNyZWF0ZUVtYmVkZGVkVmlldyhlfHx7fSk7cmV0dXJuIHRoaXMuaW5zZXJ0KHIsbikscn0sdC5wcm90b3R5cGUuY3JlYXRlQ29tcG9uZW50PWZ1bmN0aW9uKHQsZSxuLHIsbyl7dmFyIGk9bnx8dGhpcy5wYXJlbnRJbmplY3RvcjtvfHx0IGluc3RhbmNlb2YgYW58fChvPWkuZ2V0KEh0KSk7dmFyIGE9dC5jcmVhdGUoaSxyLHZvaWQgMCxvKTtyZXR1cm4gdGhpcy5pbnNlcnQoYS5ob3N0VmlldyxlKSxhfSx0LnByb3RvdHlwZS5pbnNlcnQ9ZnVuY3Rpb24odCxlKXtpZih0LmRlc3Ryb3llZCl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBpbnNlcnQgYSBkZXN0cm95ZWQgVmlldyBpbiBhIFZpZXdDb250YWluZXIhIik7dmFyIG4scixvLGksYT10O3JldHVybiBpPShuPXRoaXMuX2RhdGEpLnZpZXdDb250YWluZXIuX2VtYmVkZGVkVmlld3MsbnVsbD09KHI9ZSkmJihyPWkubGVuZ3RoKSwobz1hLl92aWV3KS52aWV3Q29udGFpbmVyUGFyZW50PXRoaXMuX3ZpZXcsRnQoaSxyLG8pLGZ1bmN0aW9uKHQsZSl7dmFyIG49aXIoZSk7aWYobiYmbiE9PXQmJiEoMTYmZS5zdGF0ZSkpe2Uuc3RhdGV8PTE2O3ZhciByPW4udGVtcGxhdGUuX3Byb2plY3RlZFZpZXdzO3J8fChyPW4udGVtcGxhdGUuX3Byb2plY3RlZFZpZXdzPVtdKSxyLnB1c2goZSksZnVuY3Rpb24odCxlKXtpZighKDQmZS5mbGFncykpe3Qubm9kZUZsYWdzfD00LGUuZmxhZ3N8PTQ7Zm9yKHZhciBuPWUucGFyZW50O247KW4uY2hpbGRGbGFnc3w9NCxuPW4ucGFyZW50fX0oZS5wYXJlbnQuZGVmLGUucGFyZW50Tm9kZURlZil9fShuLG8pLEduLmRpcnR5UGFyZW50UXVlcmllcyhvKSxJcihuLHI+MD9pW3ItMV06bnVsbCxvKSxhLmF0dGFjaFRvVmlld0NvbnRhaW5lclJlZih0aGlzKSx0fSx0LnByb3RvdHlwZS5tb3ZlPWZ1bmN0aW9uKHQsZSl7aWYodC5kZXN0cm95ZWQpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgbW92ZSBhIGRlc3Ryb3llZCBWaWV3IGluIGEgVmlld0NvbnRhaW5lciEiKTt2YXIgbixyLG8saSxhLHU9dGhpcy5fZW1iZWRkZWRWaWV3cy5pbmRleE9mKHQuX3ZpZXcpO3JldHVybiBvPWUsYT0oaT0obj10aGlzLl9kYXRhKS52aWV3Q29udGFpbmVyLl9lbWJlZGRlZFZpZXdzKVtyPXVdLEJ0KGksciksbnVsbD09byYmKG89aS5sZW5ndGgpLEZ0KGksbyxhKSxHbi5kaXJ0eVBhcmVudFF1ZXJpZXMoYSksUnIoYSksSXIobixvPjA/aVtvLTFdOm51bGwsYSksdH0sdC5wcm90b3R5cGUuaW5kZXhPZj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZW1iZWRkZWRWaWV3cy5pbmRleE9mKHQuX3ZpZXcpfSx0LnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24odCl7dmFyIGU9QXIodGhpcy5fZGF0YSx0KTtlJiZHbi5kZXN0cm95VmlldyhlKX0sdC5wcm90b3R5cGUuZGV0YWNoPWZ1bmN0aW9uKHQpe3ZhciBlPUFyKHRoaXMuX2RhdGEsdCk7cmV0dXJuIGU/bmV3IEhyKGUpOm51bGx9LHR9KCk7ZnVuY3Rpb24gVnIodCl7cmV0dXJuIG5ldyBIcih0KX12YXIgSHI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuX3ZpZXc9dCx0aGlzLl92aWV3Q29udGFpbmVyUmVmPW51bGwsdGhpcy5fYXBwUmVmPW51bGx9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicm9vdE5vZGVzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGdyKHRoaXMuX3ZpZXcsMCx2b2lkIDAsdm9pZCAwLHQ9W10pLHQ7dmFyIHR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJjb250ZXh0Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZpZXcuY29udGV4dH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImRlc3Ryb3llZCIse2dldDpmdW5jdGlvbigpe3JldHVybiAwIT0oMTI4JnRoaXMuX3ZpZXcuc3RhdGUpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLm1hcmtGb3JDaGVjaz1mdW5jdGlvbigpe25yKHRoaXMuX3ZpZXcpfSx0LnByb3RvdHlwZS5kZXRhY2g9ZnVuY3Rpb24oKXt0aGlzLl92aWV3LnN0YXRlJj0tNX0sdC5wcm90b3R5cGUuZGV0ZWN0Q2hhbmdlcz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3ZpZXcucm9vdC5yZW5kZXJlckZhY3Rvcnk7dC5iZWdpbiYmdC5iZWdpbigpO3RyeXtHbi5jaGVja0FuZFVwZGF0ZVZpZXcodGhpcy5fdmlldyl9ZmluYWxseXt0LmVuZCYmdC5lbmQoKX19LHQucHJvdG90eXBlLmNoZWNrTm9DaGFuZ2VzPWZ1bmN0aW9uKCl7R24uY2hlY2tOb0NoYW5nZXNWaWV3KHRoaXMuX3ZpZXcpfSx0LnByb3RvdHlwZS5yZWF0dGFjaD1mdW5jdGlvbigpe3RoaXMuX3ZpZXcuc3RhdGV8PTR9LHQucHJvdG90eXBlLm9uRGVzdHJveT1mdW5jdGlvbih0KXt0aGlzLl92aWV3LmRpc3Bvc2FibGVzfHwodGhpcy5fdmlldy5kaXNwb3NhYmxlcz1bXSksdGhpcy5fdmlldy5kaXNwb3NhYmxlcy5wdXNoKHQpfSx0LnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5fYXBwUmVmP3RoaXMuX2FwcFJlZi5kZXRhY2hWaWV3KHRoaXMpOnRoaXMuX3ZpZXdDb250YWluZXJSZWYmJnRoaXMuX3ZpZXdDb250YWluZXJSZWYuZGV0YWNoKHRoaXMuX3ZpZXdDb250YWluZXJSZWYuaW5kZXhPZih0aGlzKSksR24uZGVzdHJveVZpZXcodGhpcy5fdmlldyl9LHQucHJvdG90eXBlLmRldGFjaEZyb21BcHBSZWY9ZnVuY3Rpb24oKXt0aGlzLl9hcHBSZWY9bnVsbCxScih0aGlzLl92aWV3KSxHbi5kaXJ0eVBhcmVudFF1ZXJpZXModGhpcy5fdmlldyl9LHQucHJvdG90eXBlLmF0dGFjaFRvQXBwUmVmPWZ1bmN0aW9uKHQpe2lmKHRoaXMuX3ZpZXdDb250YWluZXJSZWYpdGhyb3cgbmV3IEVycm9yKCJUaGlzIHZpZXcgaXMgYWxyZWFkeSBhdHRhY2hlZCB0byBhIFZpZXdDb250YWluZXIhIik7dGhpcy5fYXBwUmVmPXR9LHQucHJvdG90eXBlLmF0dGFjaFRvVmlld0NvbnRhaW5lclJlZj1mdW5jdGlvbih0KXtpZih0aGlzLl9hcHBSZWYpdGhyb3cgbmV3IEVycm9yKCJUaGlzIHZpZXcgaXMgYWxyZWFkeSBhdHRhY2hlZCBkaXJlY3RseSB0byB0aGUgQXBwbGljYXRpb25SZWYhIik7dGhpcy5fdmlld0NvbnRhaW5lclJlZj10fSx0fSgpO2Z1bmN0aW9uIHpyKHQsZSl7cmV0dXJuIG5ldyBGcih0LGUpfXZhciBGcj1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dmFyIHI9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiByLl9wYXJlbnRWaWV3PWUsci5fZGVmPW4scn1yZXR1cm4gT2JqZWN0KHIuX19leHRlbmRzKShlLHQpLGUucHJvdG90eXBlLmNyZWF0ZUVtYmVkZGVkVmlldz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IEhyKEduLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLl9wYXJlbnRWaWV3LHRoaXMuX2RlZix0aGlzLl9kZWYuZWxlbWVudC50ZW1wbGF0ZSx0KSl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiZWxlbWVudFJlZiIse2dldDpmdW5jdGlvbigpe3JldHVybiBuZXcgbG4oem4odGhpcy5fcGFyZW50Vmlldyx0aGlzLl9kZWYubm9kZUluZGV4KS5yZW5kZXJFbGVtZW50KX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlfShJbik7ZnVuY3Rpb24gQnIodCxlKXtyZXR1cm4gbmV3IFpyKHQsZSl9dmFyIFpyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMudmlldz10LHRoaXMuZWxEZWY9ZX1yZXR1cm4gdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPU1lLlRIUk9XX0lGX05PVF9GT1VORCksR24ucmVzb2x2ZURlcCh0aGlzLnZpZXcsdGhpcy5lbERlZiwhIXRoaXMuZWxEZWYmJjAhPSgzMzU1NDQzMiZ0aGlzLmVsRGVmLmZsYWdzKSx7ZmxhZ3M6MCx0b2tlbjp0LHRva2VuS2V5OlFuKHQpfSxlKX0sdH0oKTtmdW5jdGlvbiBHcih0LGUpe3ZhciBuPXQuZGVmLm5vZGVzW2VdO2lmKDEmbi5mbGFncyl7dmFyIHI9em4odCxuLm5vZGVJbmRleCk7cmV0dXJuIG4uZWxlbWVudC50ZW1wbGF0ZT9yLnRlbXBsYXRlOnIucmVuZGVyRWxlbWVudH1pZigyJm4uZmxhZ3MpcmV0dXJuIEhuKHQsbi5ub2RlSW5kZXgpLnJlbmRlclRleHQ7aWYoMjAyNDAmbi5mbGFncylyZXR1cm4gRm4odCxuLm5vZGVJbmRleCkuaW5zdGFuY2U7dGhyb3cgbmV3IEVycm9yKCJJbGxlZ2FsIHN0YXRlOiByZWFkIG5vZGVWYWx1ZSBmb3Igbm9kZSBpbmRleCAiK2UpfWZ1bmN0aW9uIHFyKHQpe3JldHVybiBuZXcgV3IodC5yZW5kZXJlcil9dmFyIFdyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmRlbGVnYXRlPXR9cmV0dXJuIHQucHJvdG90eXBlLnNlbGVjdFJvb3RFbGVtZW50PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRlbGVnYXRlLnNlbGVjdFJvb3RFbGVtZW50KHQpfSx0LnByb3RvdHlwZS5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKHQsZSl7dmFyIG49T2JqZWN0KHIuX19yZWFkKShicihlKSwyKSxvPXRoaXMuZGVsZWdhdGUuY3JlYXRlRWxlbWVudChuWzFdLG5bMF0pO3JldHVybiB0JiZ0aGlzLmRlbGVnYXRlLmFwcGVuZENoaWxkKHQsbyksb30sdC5wcm90b3R5cGUuY3JlYXRlVmlld1Jvb3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LHQucHJvdG90eXBlLmNyZWF0ZVRlbXBsYXRlQW5jaG9yPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZGVsZWdhdGUuY3JlYXRlQ29tbWVudCgiIik7cmV0dXJuIHQmJnRoaXMuZGVsZWdhdGUuYXBwZW5kQ2hpbGQodCxlKSxlfSx0LnByb3RvdHlwZS5jcmVhdGVUZXh0PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5kZWxlZ2F0ZS5jcmVhdGVUZXh0KGUpO3JldHVybiB0JiZ0aGlzLmRlbGVnYXRlLmFwcGVuZENoaWxkKHQsbiksbn0sdC5wcm90b3R5cGUucHJvamVjdE5vZGVzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspdGhpcy5kZWxlZ2F0ZS5hcHBlbmRDaGlsZCh0LGVbbl0pfSx0LnByb3RvdHlwZS5hdHRhY2hWaWV3QWZ0ZXI9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dGhpcy5kZWxlZ2F0ZS5wYXJlbnROb2RlKHQpLHI9dGhpcy5kZWxlZ2F0ZS5uZXh0U2libGluZyh0KSxvPTA7bzxlLmxlbmd0aDtvKyspdGhpcy5kZWxlZ2F0ZS5pbnNlcnRCZWZvcmUobixlW29dLHIpfSx0LnByb3RvdHlwZS5kZXRhY2hWaWV3PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXt2YXIgbj10W2VdLHI9dGhpcy5kZWxlZ2F0ZS5wYXJlbnROb2RlKG4pO3RoaXMuZGVsZWdhdGUucmVtb3ZlQ2hpbGQocixuKX19LHQucHJvdG90eXBlLmRlc3Ryb3lWaWV3PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspdGhpcy5kZWxlZ2F0ZS5kZXN0cm95Tm9kZShlW25dKX0sdC5wcm90b3R5cGUubGlzdGVuPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5saXN0ZW4odCxlLG4pfSx0LnByb3RvdHlwZS5saXN0ZW5HbG9iYWw9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0aGlzLmRlbGVnYXRlLmxpc3Rlbih0LGUsbil9LHQucHJvdG90eXBlLnNldEVsZW1lbnRQcm9wZXJ0eT1mdW5jdGlvbih0LGUsbil7dGhpcy5kZWxlZ2F0ZS5zZXRQcm9wZXJ0eSh0LGUsbil9LHQucHJvdG90eXBlLnNldEVsZW1lbnRBdHRyaWJ1dGU9ZnVuY3Rpb24odCxlLG4pe3ZhciBvPU9iamVjdChyLl9fcmVhZCkoYnIoZSksMiksaT1vWzBdLGE9b1sxXTtudWxsIT1uP3RoaXMuZGVsZWdhdGUuc2V0QXR0cmlidXRlKHQsYSxuLGkpOnRoaXMuZGVsZWdhdGUucmVtb3ZlQXR0cmlidXRlKHQsYSxpKX0sdC5wcm90b3R5cGUuc2V0QmluZGluZ0RlYnVnSW5mbz1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5zZXRFbGVtZW50Q2xhc3M9ZnVuY3Rpb24odCxlLG4pe24/dGhpcy5kZWxlZ2F0ZS5hZGRDbGFzcyh0LGUpOnRoaXMuZGVsZWdhdGUucmVtb3ZlQ2xhc3ModCxlKX0sdC5wcm90b3R5cGUuc2V0RWxlbWVudFN0eWxlPWZ1bmN0aW9uKHQsZSxuKXtudWxsIT1uP3RoaXMuZGVsZWdhdGUuc2V0U3R5bGUodCxlLG4pOnRoaXMuZGVsZWdhdGUucmVtb3ZlU3R5bGUodCxlKX0sdC5wcm90b3R5cGUuaW52b2tlRWxlbWVudE1ldGhvZD1mdW5jdGlvbih0LGUsbil7dFtlXS5hcHBseSh0LG4pfSx0LnByb3RvdHlwZS5zZXRUZXh0PWZ1bmN0aW9uKHQsZSl7dGhpcy5kZWxlZ2F0ZS5zZXRWYWx1ZSh0LGUpfSx0LnByb3RvdHlwZS5hbmltYXRlPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJSZW5kZXJlci5hbmltYXRlIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQhIil9LHR9KCk7ZnVuY3Rpb24gUXIodCxlLG4scil7cmV0dXJuIG5ldyBLcih0LGUsbixyKX12YXIgS3I9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuLHIpe3RoaXMuX21vZHVsZVR5cGU9dCx0aGlzLl9wYXJlbnQ9ZSx0aGlzLl9ib290c3RyYXBDb21wb25lbnRzPW4sdGhpcy5fZGVmPXIsdGhpcy5fZGVzdHJveUxpc3RlbmVycz1bXSx0aGlzLl9kZXN0cm95ZWQ9ITEsdGhpcy5pbmplY3Rvcj10aGlzLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Ll9kZWYsbj10Ll9wcm92aWRlcnM9bmV3IEFycmF5KGUucHJvdmlkZXJzLmxlbmd0aCkscj0wO3I8ZS5wcm92aWRlcnMubGVuZ3RoO3IrKyl7dmFyIG89ZS5wcm92aWRlcnNbcl07NDA5NiZvLmZsYWdzfHx2b2lkIDA9PT1uW3JdJiYobltyXT1rcih0LG8pKX19KHRoaXMpfXJldHVybiB0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCxlLG4pe3ZvaWQgMD09PWUmJihlPU1lLlRIUk9XX0lGX05PVF9GT1VORCksdm9pZCAwPT09biYmKG49aHQuRGVmYXVsdCk7dmFyIHI9MDtyZXR1cm4gbiZodC5Ta2lwU2VsZj9yfD0xOm4maHQuU2VsZiYmKHJ8PTQpLFByKHRoaXMse3Rva2VuOnQsdG9rZW5LZXk6UW4odCksZmxhZ3M6cn0sZSl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiaW5zdGFuY2UiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXQodGhpcy5fbW9kdWxlVHlwZSl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXQocm4pfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtpZih0aGlzLl9kZXN0cm95ZWQpdGhyb3cgbmV3IEVycm9yKCJUaGUgbmcgbW9kdWxlICIreXQodGhpcy5pbnN0YW5jZS5jb25zdHJ1Y3RvcikrIiBoYXMgYWxyZWFkeSBiZWVuIGRlc3Ryb3llZC4iKTt0aGlzLl9kZXN0cm95ZWQ9ITAsZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5fZGVmLHI9bmV3IFNldCxvPTA7bzxuLnByb3ZpZGVycy5sZW5ndGg7bysrKWlmKDEzMTA3MiZuLnByb3ZpZGVyc1tvXS5mbGFncyl7dmFyIGk9dC5fcHJvdmlkZXJzW29dO2lmKGkmJmkhPT1Dcil7dmFyIGE9aS5uZ09uRGVzdHJveTsiZnVuY3Rpb24iIT10eXBlb2YgYXx8ci5oYXMoaSl8fChhLmFwcGx5KGkpLHIuYWRkKGkpKX19fSh0aGlzKSx0aGlzLl9kZXN0cm95TGlzdGVuZXJzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiB0KCl9KSl9LHQucHJvdG90eXBlLm9uRGVzdHJveT1mdW5jdGlvbih0KXt0aGlzLl9kZXN0cm95TGlzdGVuZXJzLnB1c2godCl9LHR9KCksWXI9UW4oY24pLEpyPVFuKHBuKSwkcj1RbihsbiksWHI9UW4oTW4pLHRvPVFuKEluKSxlbz1RbihrZSksbm89UW4oTWUpLHJvPVFuKFB0KTtmdW5jdGlvbiBvbyh0LGUsbixvLGksYSx1LGwpe3ZhciBzPVtdO2lmKHUpZm9yKHZhciBjIGluIHUpe3ZhciBmPU9iamVjdChyLl9fcmVhZCkodVtjXSwyKTtzW2ZbMF1dPXtmbGFnczo4LG5hbWU6Yyxub25NaW5pZmllZE5hbWU6ZlsxXSxuczpudWxsLHNlY3VyaXR5Q29udGV4dDpudWxsLHN1ZmZpeDpudWxsfX12YXIgaD1bXTtpZihsKWZvcih2YXIgcCBpbiBsKWgucHVzaCh7dHlwZToxLHByb3BOYW1lOnAsdGFyZ2V0Om51bGwsZXZlbnROYW1lOmxbcF19KTtyZXR1cm4gZnVuY3Rpb24odCxlLG4scixvLGksYSx1LGwpe3ZhciBzPWNyKG4pLGM9cy5tYXRjaGVkUXVlcmllcyxmPXMucmVmZXJlbmNlcyxoPXMubWF0Y2hlZFF1ZXJ5SWRzO2x8fChsPVtdKSx1fHwodT1bXSksaT13dChpKTt2YXIgcD1mcihhLHl0KG8pKTtyZXR1cm57bm9kZUluZGV4Oi0xLHBhcmVudDpudWxsLHJlbmRlclBhcmVudDpudWxsLGJpbmRpbmdJbmRleDotMSxvdXRwdXRJbmRleDotMSxjaGVja0luZGV4OnQsZmxhZ3M6ZSxjaGlsZEZsYWdzOjAsZGlyZWN0Q2hpbGRGbGFnczowLGNoaWxkTWF0Y2hlZFF1ZXJpZXM6MCxtYXRjaGVkUXVlcmllczpjLG1hdGNoZWRRdWVyeUlkczpoLHJlZmVyZW5jZXM6ZixuZ0NvbnRlbnRJbmRleDotMSxjaGlsZENvdW50OnIsYmluZGluZ3M6dSxiaW5kaW5nRmxhZ3M6eHIodSksb3V0cHV0czpsLGVsZW1lbnQ6bnVsbCxwcm92aWRlcjp7dG9rZW46byx2YWx1ZTppLGRlcHM6cH0sdGV4dDpudWxsLHF1ZXJ5Om51bGwsbmdDb250ZW50Om51bGx9fSh0LGV8PTE2Mzg0LG4sbyxpLGksYSxzLGgpfWZ1bmN0aW9uIGlvKHQsZSl7cmV0dXJuIHNvKHQsZSl9ZnVuY3Rpb24gYW8odCxlKXtmb3IodmFyIG49dDtuLnBhcmVudCYmIWxyKG4pOyluPW4ucGFyZW50O3JldHVybiBjbyhuLnBhcmVudCxhcihuKSwhMCxlLnByb3ZpZGVyLnZhbHVlLGUucHJvdmlkZXIuZGVwcyl9ZnVuY3Rpb24gdW8odCxlKXt2YXIgbj1jbyh0LGUucGFyZW50LCgzMjc2OCZlLmZsYWdzKT4wLGUucHJvdmlkZXIudmFsdWUsZS5wcm92aWRlci5kZXBzKTtpZihlLm91dHB1dHMubGVuZ3RoKWZvcih2YXIgcj0wO3I8ZS5vdXRwdXRzLmxlbmd0aDtyKyspe3ZhciBvPWUub3V0cHV0c1tyXSxpPW5bby5wcm9wTmFtZV07aWYoIVllKGkpKXRocm93IG5ldyBFcnJvcigiQE91dHB1dCAiK28ucHJvcE5hbWUrIiBub3QgaW5pdGlhbGl6ZWQgaW4gJyIrbi5jb25zdHJ1Y3Rvci5uYW1lKyInLiIpO3ZhciBhPWkuc3Vic2NyaWJlKGxvKHQsZS5wYXJlbnQubm9kZUluZGV4LG8uZXZlbnROYW1lKSk7dC5kaXNwb3NhYmxlc1tlLm91dHB1dEluZGV4K3JdPWEudW5zdWJzY3JpYmUuYmluZChhKX1yZXR1cm4gbn1mdW5jdGlvbiBsbyh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiBvcih0LGUsbixyKX19ZnVuY3Rpb24gc28odCxlKXt2YXIgbj0oODE5MiZlLmZsYWdzKT4wLG89ZS5wcm92aWRlcjtzd2l0Y2goMjAxMzQ3MDY3JmUuZmxhZ3Mpe2Nhc2UgNTEyOnJldHVybiBjbyh0LGUucGFyZW50LG4sby52YWx1ZSxvLmRlcHMpO2Nhc2UgMTAyNDpyZXR1cm4gZnVuY3Rpb24odCxlLG4sbyxpKXt2YXIgYT1pLmxlbmd0aDtzd2l0Y2goYSl7Y2FzZSAwOnJldHVybiBvKCk7Y2FzZSAxOnJldHVybiBvKGhvKHQsZSxuLGlbMF0pKTtjYXNlIDI6cmV0dXJuIG8oaG8odCxlLG4saVswXSksaG8odCxlLG4saVsxXSkpO2Nhc2UgMzpyZXR1cm4gbyhobyh0LGUsbixpWzBdKSxobyh0LGUsbixpWzFdKSxobyh0LGUsbixpWzJdKSk7ZGVmYXVsdDpmb3IodmFyIHU9QXJyYXkoYSksbD0wO2w8YTtsKyspdVtsXT1obyh0LGUsbixpW2xdKTtyZXR1cm4gby5hcHBseSh2b2lkIDAsT2JqZWN0KHIuX19zcHJlYWQpKHUpKX19KHQsZS5wYXJlbnQsbixvLnZhbHVlLG8uZGVwcyk7Y2FzZSAyMDQ4OnJldHVybiBobyh0LGUucGFyZW50LG4sby5kZXBzWzBdKTtjYXNlIDI1NjpyZXR1cm4gby52YWx1ZX19ZnVuY3Rpb24gY28odCxlLG4sbyxpKXt2YXIgYT1pLmxlbmd0aDtzd2l0Y2goYSl7Y2FzZSAwOnJldHVybiBuZXcgbztjYXNlIDE6cmV0dXJuIG5ldyBvKGhvKHQsZSxuLGlbMF0pKTtjYXNlIDI6cmV0dXJuIG5ldyBvKGhvKHQsZSxuLGlbMF0pLGhvKHQsZSxuLGlbMV0pKTtjYXNlIDM6cmV0dXJuIG5ldyBvKGhvKHQsZSxuLGlbMF0pLGhvKHQsZSxuLGlbMV0pLGhvKHQsZSxuLGlbMl0pKTtkZWZhdWx0OmZvcih2YXIgdT1uZXcgQXJyYXkoYSksbD0wO2w8YTtsKyspdVtsXT1obyh0LGUsbixpW2xdKTtyZXR1cm4gbmV3KG8uYmluZC5hcHBseShvLE9iamVjdChyLl9fc3ByZWFkKShbdm9pZCAwXSx1KSkpfX12YXIgZm89e307ZnVuY3Rpb24gaG8odCxlLG4scixvKXtpZih2b2lkIDA9PT1vJiYobz1NZS5USFJPV19JRl9OT1RfRk9VTkQpLDgmci5mbGFncylyZXR1cm4gci50b2tlbjt2YXIgaT10OzImci5mbGFncyYmKG89bnVsbCk7dmFyIGE9ci50b2tlbktleTthPT09ZW8mJihuPSEoIWV8fCFlLmVsZW1lbnQuY29tcG9uZW50VmlldykpLGUmJjEmci5mbGFncyYmKG49ITEsZT1lLnBhcmVudCk7Zm9yKHZhciB1PXQ7dTspe2lmKGUpc3dpdGNoKGEpe2Nhc2UgWXI6cmV0dXJuIHFyKHBvKHUsZSxuKSk7Y2FzZSBKcjpyZXR1cm4gcG8odSxlLG4pLnJlbmRlcmVyO2Nhc2UgJHI6cmV0dXJuIG5ldyBsbih6bih1LGUubm9kZUluZGV4KS5yZW5kZXJFbGVtZW50KTtjYXNlIFhyOnJldHVybiB6bih1LGUubm9kZUluZGV4KS52aWV3Q29udGFpbmVyO2Nhc2UgdG86aWYoZS5lbGVtZW50LnRlbXBsYXRlKXJldHVybiB6bih1LGUubm9kZUluZGV4KS50ZW1wbGF0ZTticmVhaztjYXNlIGVvOnJldHVybiBWcihwbyh1LGUsbikpO2Nhc2Ugbm86Y2FzZSBybzpyZXR1cm4gQnIodSxlKTtkZWZhdWx0OnZhciBsPShuP2UuZWxlbWVudC5hbGxQcm92aWRlcnM6ZS5lbGVtZW50LnB1YmxpY1Byb3ZpZGVycylbYV07aWYobCl7dmFyIHM9Rm4odSxsLm5vZGVJbmRleCk7cmV0dXJuIHN8fChzPXtpbnN0YW5jZTpzbyh1LGwpfSx1Lm5vZGVzW2wubm9kZUluZGV4XT1zKSxzLmluc3RhbmNlfX1uPWxyKHUpLGU9YXIodSksdT11LnBhcmVudCw0JnIuZmxhZ3MmJih1PW51bGwpfXZhciBjPWkucm9vdC5pbmplY3Rvci5nZXQoci50b2tlbixmbyk7cmV0dXJuIGMhPT1mb3x8bz09PWZvP2M6aS5yb290Lm5nTW9kdWxlLmluamVjdG9yLmdldChyLnRva2VuLG8pfWZ1bmN0aW9uIHBvKHQsZSxuKXt2YXIgcjtpZihuKXI9em4odCxlLm5vZGVJbmRleCkuY29tcG9uZW50VmlldztlbHNlIGZvcihyPXQ7ci5wYXJlbnQmJiFscihyKTspcj1yLnBhcmVudDtyZXR1cm4gcn1mdW5jdGlvbiBnbyh0LGUsbixyLG8saSl7aWYoMzI3Njgmbi5mbGFncyl7dmFyIGE9em4odCxuLnBhcmVudC5ub2RlSW5kZXgpLmNvbXBvbmVudFZpZXc7MiZhLmRlZi5mbGFncyYmKGEuc3RhdGV8PTgpfWlmKGUuaW5zdGFuY2Vbbi5iaW5kaW5nc1tyXS5uYW1lXT1vLDUyNDI4OCZuLmZsYWdzKXtpPWl8fHt9O3ZhciB1PXFlLnVud3JhcCh0Lm9sZFZhbHVlc1tuLmJpbmRpbmdJbmRleCtyXSk7aVtuLmJpbmRpbmdzW3JdLm5vbk1pbmlmaWVkTmFtZV09bmV3IEplKHUsbywwIT0oMiZ0LnN0YXRlKSl9cmV0dXJuIHQub2xkVmFsdWVzW24uYmluZGluZ0luZGV4K3JdPW8saX1mdW5jdGlvbiB2byh0LGUpe2lmKHQuZGVmLm5vZGVGbGFncyZlKWZvcih2YXIgbj10LmRlZi5ub2RlcyxyPTAsbz0wO288bi5sZW5ndGg7bysrKXt2YXIgaT1uW29dLGE9aS5wYXJlbnQ7Zm9yKCFhJiZpLmZsYWdzJmUmJm1vKHQsbyxpLmZsYWdzJmUscisrKSwwPT0oaS5jaGlsZEZsYWdzJmUpJiYobys9aS5jaGlsZENvdW50KTthJiYxJmEuZmxhZ3MmJm89PT1hLm5vZGVJbmRleCthLmNoaWxkQ291bnQ7KWEuZGlyZWN0Q2hpbGRGbGFncyZlJiYocj15byh0LGEsZSxyKSksYT1hLnBhcmVudH19ZnVuY3Rpb24geW8odCxlLG4scil7Zm9yKHZhciBvPWUubm9kZUluZGV4KzE7bzw9ZS5ub2RlSW5kZXgrZS5jaGlsZENvdW50O28rKyl7dmFyIGk9dC5kZWYubm9kZXNbb107aS5mbGFncyZuJiZtbyh0LG8saS5mbGFncyZuLHIrKyksbys9aS5jaGlsZENvdW50fXJldHVybiByfWZ1bmN0aW9uIG1vKHQsZSxuLHIpe3ZhciBvPUZuKHQsZSk7aWYobyl7dmFyIGk9by5pbnN0YW5jZTtpJiYoR24uc2V0Q3VycmVudE5vZGUodCxlKSwxMDQ4NTc2Jm4mJlZuKHQsNTEyLHIpJiZpLm5nQWZ0ZXJDb250ZW50SW5pdCgpLDIwOTcxNTImbiYmaS5uZ0FmdGVyQ29udGVudENoZWNrZWQoKSw0MTk0MzA0Jm4mJlZuKHQsNzY4LHIpJiZpLm5nQWZ0ZXJWaWV3SW5pdCgpLDgzODg2MDgmbiYmaS5uZ0FmdGVyVmlld0NoZWNrZWQoKSwxMzEwNzImbiYmaS5uZ09uRGVzdHJveSgpKX19dmFyIF9vPW5ldyBUdCgiU0NIRURVTEVSX1RPS0VOIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpmdW5jdGlvbigpe3JldHVybiBHdH19KSx3bz17fSxibz1mdW5jdGlvbih0KXtyZXR1cm4gdFt0LkxvY2FsZUlkPTBdPSJMb2NhbGVJZCIsdFt0LkRheVBlcmlvZHNGb3JtYXQ9MV09IkRheVBlcmlvZHNGb3JtYXQiLHRbdC5EYXlQZXJpb2RzU3RhbmRhbG9uZT0yXT0iRGF5UGVyaW9kc1N0YW5kYWxvbmUiLHRbdC5EYXlzRm9ybWF0PTNdPSJEYXlzRm9ybWF0Iix0W3QuRGF5c1N0YW5kYWxvbmU9NF09IkRheXNTdGFuZGFsb25lIix0W3QuTW9udGhzRm9ybWF0PTVdPSJNb250aHNGb3JtYXQiLHRbdC5Nb250aHNTdGFuZGFsb25lPTZdPSJNb250aHNTdGFuZGFsb25lIix0W3QuRXJhcz03XT0iRXJhcyIsdFt0LkZpcnN0RGF5T2ZXZWVrPThdPSJGaXJzdERheU9mV2VlayIsdFt0LldlZWtlbmRSYW5nZT05XT0iV2Vla2VuZFJhbmdlIix0W3QuRGF0ZUZvcm1hdD0xMF09IkRhdGVGb3JtYXQiLHRbdC5UaW1lRm9ybWF0PTExXT0iVGltZUZvcm1hdCIsdFt0LkRhdGVUaW1lRm9ybWF0PTEyXT0iRGF0ZVRpbWVGb3JtYXQiLHRbdC5OdW1iZXJTeW1ib2xzPTEzXT0iTnVtYmVyU3ltYm9scyIsdFt0Lk51bWJlckZvcm1hdHM9MTRdPSJOdW1iZXJGb3JtYXRzIix0W3QuQ3VycmVuY3lTeW1ib2w9MTVdPSJDdXJyZW5jeVN5bWJvbCIsdFt0LkN1cnJlbmN5TmFtZT0xNl09IkN1cnJlbmN5TmFtZSIsdFt0LkN1cnJlbmNpZXM9MTddPSJDdXJyZW5jaWVzIix0W3QuUGx1cmFsQ2FzZT0xOF09IlBsdXJhbENhc2UiLHRbdC5FeHRyYURhdGE9MTldPSJFeHRyYURhdGEiLHR9KHt9KSx4bz12b2lkIDAsQ289WyJlbiIsW1siYSIsInAiXSxbIkFNIiwiUE0iXSx4b10sW1siQU0iLCJQTSJdLHhvLHhvXSxbWyJTIiwiTSIsIlQiLCJXIg=="
                },
                {
                    "key": "asdf?main.e3350ff4d88d534234ef.js?4?4?0",
                    "type": "binary",
                    "value": "base64:LCJUIiwiRiIsIlMiXSxbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLFsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxbIlN1IiwiTW8iLCJUdSIsIldlIiwiVGgiLCJGciIsIlNhIl1dLHhvLFtbIkoiLCJGIiwiTSIsIkEiLCJNIiwiSiIsIkoiLCJBIiwiUyIsIk8iLCJOIiwiRCJdLFsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl0sWyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdXSx4byxbWyJCIiwiQSJdLFsiQkMiLCJBRCJdLFsiQmVmb3JlIENocmlzdCIsIkFubm8gRG9taW5pIl1dLDAsWzYsMF0sWyJNL2QveXkiLCJNTU0gZCwgeSIsIk1NTU0gZCwgeSIsIkVFRUUsIE1NTU0gZCwgeSJdLFsiaDptbSBhIiwiaDptbTpzcyBhIiwiaDptbTpzcyBhIHoiLCJoOm1tOnNzIGEgenp6eiJdLFsiezF9LCB7MH0iLHhvLCJ7MX0gJ2F0JyB7MH0iLHhvXSxbIi4iLCIsIiwiOyIsIiUiLCIrIiwiLSIsIkUiLCLDlyIsIuKAsCIsIuKIniIsIk5hTiIsIjoiXSxbIiMsIyMwLiMjIyIsIiMsIyMwJSIsIsKkIywjIzAuMDAiLCIjRTAiXSwiJCIsIlVTIERvbGxhciIse30sZnVuY3Rpb24odCl7dmFyIGU9TWF0aC5mbG9vcihNYXRoLmFicyh0KSksbj10LnRvU3RyaW5nKCkucmVwbGFjZSgvXlteLl0qXC4/LywiIikubGVuZ3RoO3JldHVybiAxPT09ZSYmMD09PW4/MTo1fV0sU289ImVuLVVTIjtmdW5jdGlvbiBFbyh0KXt2YXIgZTtlPSJFeHBlY3RlZCBsb2NhbGVJZCB0byBiZSBkZWZpbmVkIixudWxsPT10JiZmdW5jdGlvbih0KXt0aHJvdyBuZXcgRXJyb3IoIkFTU0VSVElPTiBFUlJPUjogIit0KX0oZSksInN0cmluZyI9PXR5cGVvZiB0JiZ0LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXy9nLCItIil9dmFyIE9vPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dm9pZCAwPT09ZSYmKGU9ITEpO3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5fX2lzQXN5bmM9ZSxufXJldHVybiBPYmplY3Qoci5fX2V4dGVuZHMpKGUsdCksZS5wcm90b3R5cGUuZW1pdD1mdW5jdGlvbihlKXt0LnByb3RvdHlwZS5uZXh0LmNhbGwodGhpcyxlKX0sZS5wcm90b3R5cGUuc3Vic2NyaWJlPWZ1bmN0aW9uKGUsbixyKXt2YXIgbyxpPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsfSxhPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9O2UmJiJvYmplY3QiPT10eXBlb2YgZT8obz10aGlzLl9faXNBc3luYz9mdW5jdGlvbih0KXtzZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiBlLm5leHQodCl9KSl9OmZ1bmN0aW9uKHQpe2UubmV4dCh0KX0sZS5lcnJvciYmKGk9dGhpcy5fX2lzQXN5bmM/ZnVuY3Rpb24odCl7c2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gZS5lcnJvcih0KX0pKX06ZnVuY3Rpb24odCl7ZS5lcnJvcih0KX0pLGUuY29tcGxldGUmJihhPXRoaXMuX19pc0FzeW5jP2Z1bmN0aW9uKCl7c2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gZS5jb21wbGV0ZSgpfSkpfTpmdW5jdGlvbigpe2UuY29tcGxldGUoKX0pKToobz10aGlzLl9faXNBc3luYz9mdW5jdGlvbih0KXtzZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiBlKHQpfSkpfTpmdW5jdGlvbih0KXtlKHQpfSxuJiYoaT10aGlzLl9faXNBc3luYz9mdW5jdGlvbih0KXtzZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiBuKHQpfSkpfTpmdW5jdGlvbih0KXtuKHQpfSksciYmKGE9dGhpcy5fX2lzQXN5bmM/ZnVuY3Rpb24oKXtzZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiByKCl9KSl9OmZ1bmN0aW9uKCl7cigpfSkpO3ZhciB1PXQucHJvdG90eXBlLnN1YnNjcmliZS5jYWxsKHRoaXMsbyxpLGEpO3JldHVybiBlIGluc3RhbmNlb2YgcyYmZS5hZGQodSksdX0sZX0oUCk7ZnVuY3Rpb24gVG8oKXtyZXR1cm4gdGhpcy5fcmVzdWx0c1tCZSgpXSgpfXZhciBQbz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLmRpcnR5PSEwLHRoaXMuX3Jlc3VsdHM9W10sdGhpcy5jaGFuZ2VzPW5ldyBPbyx0aGlzLmxlbmd0aD0wO3ZhciBlPUJlKCksbj10LnByb3RvdHlwZTtuW2VdfHwobltlXT1Ubyl9cmV0dXJuIHQucHJvdG90eXBlLm1hcD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5tYXAodCl9LHQucHJvdG90eXBlLmZpbHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5maWx0ZXIodCl9LHQucHJvdG90eXBlLmZpbmQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHMuZmluZCh0KX0sdC5wcm90b3R5cGUucmVkdWNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX3Jlc3VsdHMucmVkdWNlKHQsZSl9LHQucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24odCl7dGhpcy5fcmVzdWx0cy5mb3JFYWNoKHQpfSx0LnByb3RvdHlwZS5zb21lPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZXN1bHRzLnNvbWUodCl9LHQucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5zbGljZSgpfSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZXN1bHRzLnRvU3RyaW5nKCl9LHQucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3Jlc3VsdHM9ZnVuY3Rpb24gdChlLG4pe3ZvaWQgMD09PW4mJihuPWUpO2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbz1lW3JdO0FycmF5LmlzQXJyYXkobyk/KG49PT1lJiYobj1lLnNsaWNlKDAscikpLHQobyxuKSk6biE9PWUmJm4ucHVzaChvKX1yZXR1cm4gbn0odCksdGhpcy5kaXJ0eT0hMSx0aGlzLmxlbmd0aD10aGlzLl9yZXN1bHRzLmxlbmd0aCx0aGlzLmxhc3Q9dGhpcy5fcmVzdWx0c1t0aGlzLmxlbmd0aC0xXSx0aGlzLmZpcnN0PXRoaXMuX3Jlc3VsdHNbMF19LHQucHJvdG90eXBlLm5vdGlmeU9uQ2hhbmdlcz1mdW5jdGlvbigpe3RoaXMuY2hhbmdlcy5lbWl0KHRoaXMpfSx0LnByb3RvdHlwZS5zZXREaXJ0eT1mdW5jdGlvbigpe3RoaXMuZGlydHk9ITB9LHQucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLmNoYW5nZXMuY29tcGxldGUoKSx0aGlzLmNoYW5nZXMudW5zdWJzY3JpYmUoKX0sdH0oKSxrbz1uZXcgVHQoIkFwcGxpY2F0aW9uIEluaXRpYWxpemVyIiksQW89ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3ZhciBlPXRoaXM7dGhpcy5hcHBJbml0cz10LHRoaXMuaW5pdGlhbGl6ZWQ9ITEsdGhpcy5kb25lPSExLHRoaXMuZG9uZVByb21pc2U9bmV3IFByb21pc2UoKGZ1bmN0aW9uKHQsbil7ZS5yZXNvbHZlPXQsZS5yZWplY3Q9bn0pKX1yZXR1cm4gdC5wcm90b3R5cGUucnVuSW5pdGlhbGl6ZXJzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztpZighdGhpcy5pbml0aWFsaXplZCl7dmFyIGU9W10sbj1mdW5jdGlvbigpe3QuZG9uZT0hMCx0LnJlc29sdmUoKX07aWYodGhpcy5hcHBJbml0cylmb3IodmFyIHI9MDtyPHRoaXMuYXBwSW5pdHMubGVuZ3RoO3IrKyl7dmFyIG89dGhpcy5hcHBJbml0c1tyXSgpO0tlKG8pJiZlLnB1c2gobyl9UHJvbWlzZS5hbGwoZSkudGhlbigoZnVuY3Rpb24oKXtuKCl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3QucmVqZWN0KGUpfSkpLDA9PT1lLmxlbmd0aCYmbigpLHRoaXMuaW5pdGlhbGl6ZWQ9ITB9fSx0fSgpLElvPW5ldyBUdCgiQXBwSWQiKTtmdW5jdGlvbiBSbygpe3JldHVybiIiK01vKCkrTW8oKStNbygpfWZ1bmN0aW9uIE1vKCl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoOTcrTWF0aC5mbG9vcigyNSpNYXRoLnJhbmRvbSgpKSl9dmFyIGpvPW5ldyBUdCgiUGxhdGZvcm0gSW5pdGlhbGl6ZXIiKSxObz1uZXcgVHQoIlBsYXRmb3JtIElEIiksRG89bmV3IFR0KCJhcHBCb290c3RyYXBMaXN0ZW5lciIpLFVvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUubG9nPWZ1bmN0aW9uKHQpe2NvbnNvbGUubG9nKHQpfSx0LnByb3RvdHlwZS53YXJuPWZ1bmN0aW9uKHQpe2NvbnNvbGUud2Fybih0KX0sdH0oKSxMbz1uZXcgVHQoIkxvY2FsZUlkIiksVm89ITE7ZnVuY3Rpb24gSG8oKXt0aHJvdyBuZXcgRXJyb3IoIlJ1bnRpbWUgY29tcGlsZXIgaXMgbm90IGxvYWRlZCIpfXZhciB6byxGbyxCbz1Ibyxabz1IbyxHbz1Ibyxxbz1IbyxXbz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLmNvbXBpbGVNb2R1bGVTeW5jPUJvLHRoaXMuY29tcGlsZU1vZHVsZUFzeW5jPVpvLHRoaXMuY29tcGlsZU1vZHVsZUFuZEFsbENvbXBvbmVudHNTeW5jPUdvLHRoaXMuY29tcGlsZU1vZHVsZUFuZEFsbENvbXBvbmVudHNBc3luYz1xb31yZXR1cm4gdC5wcm90b3R5cGUuY2xlYXJDYWNoZT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuY2xlYXJDYWNoZUZvcj1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmdldE1vZHVsZUlkPWZ1bmN0aW9uKHQpe30sdH0oKSxRbz1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe319KCk7ZnVuY3Rpb24gS28oKXt2YXIgdD1PdC53dGY7cmV0dXJuISghdHx8ISh6bz10LnRyYWNlKXx8KEZvPXpvLmV2ZW50cywwKSl9dmFyIFlvPUtvKCk7ZnVuY3Rpb24gSm8odCxlKXtyZXR1cm4gbnVsbH12YXIgJG89WW8/ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9bnVsbCksRm8uY3JlYXRlU2NvcGUodCxlKX06ZnVuY3Rpb24odCxlKXtyZXR1cm4gSm99LFhvPVlvP2Z1bmN0aW9uKHQsZSl7cmV0dXJuIHpvLmxlYXZlU2NvcGUodCxlKSxlfTpmdW5jdGlvbih0LGUpe3JldHVybiBlfSx0aT1mdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlc29sdmUoMCl9KCk7ZnVuY3Rpb24gZWkodCl7InVuZGVmaW5lZCI9PXR5cGVvZiBab25lP3RpLnRoZW4oKGZ1bmN0aW9uKCl7dCYmdC5hcHBseShudWxsLG51bGwpfSkpOlpvbmUuY3VycmVudC5zY2hlZHVsZU1pY3JvVGFzaygic2NoZWR1bGVNaWNyb3Rhc2siLHQpfXZhciBuaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dmFyIGUsbj10LmVuYWJsZUxvbmdTdGFja1RyYWNlLHI9dm9pZCAwIT09biYmbjtpZih0aGlzLmhhc1BlbmRpbmdNaWNyb3Rhc2tzPSExLHRoaXMuaGFzUGVuZGluZ01hY3JvdGFza3M9ITEsdGhpcy5pc1N0YWJsZT0hMCx0aGlzLm9uVW5zdGFibGU9bmV3IE9vKCExKSx0aGlzLm9uTWljcm90YXNrRW1wdHk9bmV3IE9vKCExKSx0aGlzLm9uU3RhYmxlPW5ldyBPbyghMSksdGhpcy5vbkVycm9yPW5ldyBPbyghMSksInVuZGVmaW5lZCI9PXR5cGVvZiBab25lKXRocm93IG5ldyBFcnJvcigiSW4gdGhpcyBjb25maWd1cmF0aW9uIEFuZ3VsYXIgcmVxdWlyZXMgWm9uZS5qcyIpO1pvbmUuYXNzZXJ0Wm9uZVBhdGNoZWQoKSx0aGlzLl9uZXN0aW5nPTAsdGhpcy5fb3V0ZXI9dGhpcy5faW5uZXI9Wm9uZS5jdXJyZW50LFpvbmUud3RmWm9uZVNwZWMmJih0aGlzLl9pbm5lcj10aGlzLl9pbm5lci5mb3JrKFpvbmUud3RmWm9uZVNwZWMpKSxab25lLlRhc2tUcmFja2luZ1pvbmVTcGVjJiYodGhpcy5faW5uZXI9dGhpcy5faW5uZXIuZm9yayhuZXcgWm9uZS5UYXNrVHJhY2tpbmdab25lU3BlYykpLHImJlpvbmUubG9uZ1N0YWNrVHJhY2Vab25lU3BlYyYmKHRoaXMuX2lubmVyPXRoaXMuX2lubmVyLmZvcmsoWm9uZS5sb25nU3RhY2tUcmFjZVpvbmVTcGVjKSksKGU9dGhpcykuX2lubmVyPWUuX2lubmVyLmZvcmsoe25hbWU6ImFuZ3VsYXIiLHByb3BlcnRpZXM6e2lzQW5ndWxhclpvbmU6ITB9LG9uSW52b2tlVGFzazpmdW5jdGlvbih0LG4scixvLGksYSl7dHJ5e3JldHVybiBhaShlKSx0Lmludm9rZVRhc2socixvLGksYSl9ZmluYWxseXt1aShlKX19LG9uSW52b2tlOmZ1bmN0aW9uKHQsbixyLG8saSxhLHUpe3RyeXtyZXR1cm4gYWkoZSksdC5pbnZva2UocixvLGksYSx1KX1maW5hbGx5e3VpKGUpfX0sb25IYXNUYXNrOmZ1bmN0aW9uKHQsbixyLG8pe3QuaGFzVGFzayhyLG8pLG49PT1yJiYoIm1pY3JvVGFzayI9PW8uY2hhbmdlPyhlLmhhc1BlbmRpbmdNaWNyb3Rhc2tzPW8ubWljcm9UYXNrLGlpKGUpKToibWFjcm9UYXNrIj09by5jaGFuZ2UmJihlLmhhc1BlbmRpbmdNYWNyb3Rhc2tzPW8ubWFjcm9UYXNrKSl9LG9uSGFuZGxlRXJyb3I6ZnVuY3Rpb24odCxuLHIsbyl7cmV0dXJuIHQuaGFuZGxlRXJyb3IocixvKSxlLnJ1bk91dHNpZGVBbmd1bGFyKChmdW5jdGlvbigpe3JldHVybiBlLm9uRXJyb3IuZW1pdChvKX0pKSwhMX19KX1yZXR1cm4gdC5pc0luQW5ndWxhclpvbmU9ZnVuY3Rpb24oKXtyZXR1cm4hMD09PVpvbmUuY3VycmVudC5nZXQoImlzQW5ndWxhclpvbmUiKX0sdC5hc3NlcnRJbkFuZ3VsYXJab25lPWZ1bmN0aW9uKCl7aWYoIXQuaXNJbkFuZ3VsYXJab25lKCkpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byBiZSBpbiBBbmd1bGFyIFpvbmUsIGJ1dCBpdCBpcyBub3QhIil9LHQuYXNzZXJ0Tm90SW5Bbmd1bGFyWm9uZT1mdW5jdGlvbigpe2lmKHQuaXNJbkFuZ3VsYXJab25lKCkpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byBub3QgYmUgaW4gQW5ndWxhciBab25lLCBidXQgaXQgaXMhIil9LHQucHJvdG90eXBlLnJ1bj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRoaXMuX2lubmVyLnJ1bih0LGUsbil9LHQucHJvdG90eXBlLnJ1blRhc2s9ZnVuY3Rpb24odCxlLG4scil7dmFyIG89dGhpcy5faW5uZXIsaT1vLnNjaGVkdWxlRXZlbnRUYXNrKCJOZ1pvbmVFdmVudDogIityLHQsb2kscmkscmkpO3RyeXtyZXR1cm4gby5ydW5UYXNrKGksZSxuKX1maW5hbGx5e28uY2FuY2VsVGFzayhpKX19LHQucHJvdG90eXBlLnJ1bkd1YXJkZWQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0aGlzLl9pbm5lci5ydW5HdWFyZGVkKHQsZSxuKX0sdC5wcm90b3R5cGUucnVuT3V0c2lkZUFuZ3VsYXI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX291dGVyLnJ1bih0KX0sdH0oKTtmdW5jdGlvbiByaSgpe312YXIgb2k9e307ZnVuY3Rpb24gaWkodCl7aWYoMD09dC5fbmVzdGluZyYmIXQuaGFzUGVuZGluZ01pY3JvdGFza3MmJiF0LmlzU3RhYmxlKXRyeXt0Ll9uZXN0aW5nKyssdC5vbk1pY3JvdGFza0VtcHR5LmVtaXQobnVsbCl9ZmluYWxseXtpZih0Ll9uZXN0aW5nLS0sIXQuaGFzUGVuZGluZ01pY3JvdGFza3MpdHJ5e3QucnVuT3V0c2lkZUFuZ3VsYXIoKGZ1bmN0aW9uKCl7cmV0dXJuIHQub25TdGFibGUuZW1pdChudWxsKX0pKX1maW5hbGx5e3QuaXNTdGFibGU9ITB9fX1mdW5jdGlvbiBhaSh0KXt0Ll9uZXN0aW5nKyssdC5pc1N0YWJsZSYmKHQuaXNTdGFibGU9ITEsdC5vblVuc3RhYmxlLmVtaXQobnVsbCkpfWZ1bmN0aW9uIHVpKHQpe3QuX25lc3RpbmctLSxpaSh0KX12YXIgbGksc2k9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5oYXNQZW5kaW5nTWljcm90YXNrcz0hMSx0aGlzLmhhc1BlbmRpbmdNYWNyb3Rhc2tzPSExLHRoaXMuaXNTdGFibGU9ITAsdGhpcy5vblVuc3RhYmxlPW5ldyBPbyx0aGlzLm9uTWljcm90YXNrRW1wdHk9bmV3IE9vLHRoaXMub25TdGFibGU9bmV3IE9vLHRoaXMub25FcnJvcj1uZXcgT299cmV0dXJuIHQucHJvdG90eXBlLnJ1bj1mdW5jdGlvbih0KXtyZXR1cm4gdCgpfSx0LnByb3RvdHlwZS5ydW5HdWFyZGVkPWZ1bmN0aW9uKHQpe3JldHVybiB0KCl9LHQucHJvdG90eXBlLnJ1bk91dHNpZGVBbmd1bGFyPWZ1bmN0aW9uKHQpe3JldHVybiB0KCl9LHQucHJvdG90eXBlLnJ1blRhc2s9ZnVuY3Rpb24odCl7cmV0dXJuIHQoKX0sdH0oKSxjaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dmFyIGU9dGhpczt0aGlzLl9uZ1pvbmU9dCx0aGlzLl9wZW5kaW5nQ291bnQ9MCx0aGlzLl9pc1pvbmVTdGFibGU9ITAsdGhpcy5fZGlkV29yaz0hMSx0aGlzLl9jYWxsYmFja3M9W10sdGhpcy50YXNrVHJhY2tpbmdab25lPW51bGwsdGhpcy5fd2F0Y2hBbmd1bGFyRXZlbnRzKCksdC5ydW4oKGZ1bmN0aW9uKCl7ZS50YXNrVHJhY2tpbmdab25lPSJ1bmRlZmluZWQiPT10eXBlb2YgWm9uZT9udWxsOlpvbmUuY3VycmVudC5nZXQoIlRhc2tUcmFja2luZ1pvbmUiKX0pKX1yZXR1cm4gdC5wcm90b3R5cGUuX3dhdGNoQW5ndWxhckV2ZW50cz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5fbmdab25lLm9uVW5zdGFibGUuc3Vic2NyaWJlKHtuZXh0OmZ1bmN0aW9uKCl7dC5fZGlkV29yaz0hMCx0Ll9pc1pvbmVTdGFibGU9ITF9fSksdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKChmdW5jdGlvbigpe3QuX25nWm9uZS5vblN0YWJsZS5zdWJzY3JpYmUoe25leHQ6ZnVuY3Rpb24oKXtuaS5hc3NlcnROb3RJbkFuZ3VsYXJab25lKCksZWkoKGZ1bmN0aW9uKCl7dC5faXNab25lU3RhYmxlPSEwLHQuX3J1bkNhbGxiYWNrc0lmUmVhZHkoKX0pKX19KX0pKX0sdC5wcm90b3R5cGUuaW5jcmVhc2VQZW5kaW5nUmVxdWVzdENvdW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BlbmRpbmdDb3VudCs9MSx0aGlzLl9kaWRXb3JrPSEwLHRoaXMuX3BlbmRpbmdDb3VudH0sdC5wcm90b3R5cGUuZGVjcmVhc2VQZW5kaW5nUmVxdWVzdENvdW50PWZ1bmN0aW9uKCl7aWYodGhpcy5fcGVuZGluZ0NvdW50LT0xLHRoaXMuX3BlbmRpbmdDb3VudDwwKXRocm93IG5ldyBFcnJvcigicGVuZGluZyBhc3luYyByZXF1ZXN0cyBiZWxvdyB6ZXJvIik7cmV0dXJuIHRoaXMuX3J1bkNhbGxiYWNrc0lmUmVhZHkoKSx0aGlzLl9wZW5kaW5nQ291bnR9LHQucHJvdG90eXBlLmlzU3RhYmxlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzWm9uZVN0YWJsZSYmMD09PXRoaXMuX3BlbmRpbmdDb3VudCYmIXRoaXMuX25nWm9uZS5oYXNQZW5kaW5nTWFjcm90YXNrc30sdC5wcm90b3R5cGUuX3J1bkNhbGxiYWNrc0lmUmVhZHk9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO2lmKHRoaXMuaXNTdGFibGUoKSllaSgoZnVuY3Rpb24oKXtmb3IoOzAhPT10Ll9jYWxsYmFja3MubGVuZ3RoOyl7dmFyIGU9dC5fY2FsbGJhY2tzLnBvcCgpO2NsZWFyVGltZW91dChlLnRpbWVvdXRJZCksZS5kb25lQ2IodC5fZGlkV29yayl9dC5fZGlkV29yaz0hMX0pKTtlbHNle3ZhciBlPXRoaXMuZ2V0UGVuZGluZ1Rhc2tzKCk7dGhpcy5fY2FsbGJhY2tzPXRoaXMuX2NhbGxiYWNrcy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiF0LnVwZGF0ZUNifHwhdC51cGRhdGVDYihlKXx8KGNsZWFyVGltZW91dCh0LnRpbWVvdXRJZCksITEpfSkpLHRoaXMuX2RpZFdvcms9ITB9fSx0LnByb3RvdHlwZS5nZXRQZW5kaW5nVGFza3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50YXNrVHJhY2tpbmdab25lP3RoaXMudGFza1RyYWNraW5nWm9uZS5tYWNyb1Rhc2tzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJue3NvdXJjZTp0LnNvdXJjZSxjcmVhdGlvbkxvY2F0aW9uOnQuY3JlYXRpb25Mb2NhdGlvbixkYXRhOnQuZGF0YX19KSk6W119LHQucHJvdG90eXBlLmFkZENhbGxiYWNrPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj10aGlzLG89LTE7ZSYmZT4wJiYobz1zZXRUaW1lb3V0KChmdW5jdGlvbigpe3IuX2NhbGxiYWNrcz1yLl9jYWxsYmFja3MuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC50aW1lb3V0SWQhPT1vfSkpLHQoci5fZGlkV29yayxyLmdldFBlbmRpbmdUYXNrcygpKX0pLGUpKSx0aGlzLl9jYWxsYmFja3MucHVzaCh7ZG9uZUNiOnQsdGltZW91dElkOm8sdXBkYXRlQ2I6bn0pfSx0LnByb3RvdHlwZS53aGVuU3RhYmxlPWZ1bmN0aW9uKHQsZSxuKXtpZihuJiYhdGhpcy50YXNrVHJhY2tpbmdab25lKXRocm93IG5ldyBFcnJvcignVGFzayB0cmFja2luZyB6b25lIGlzIHJlcXVpcmVkIHdoZW4gcGFzc2luZyBhbiB1cGRhdGUgY2FsbGJhY2sgdG8gd2hlblN0YWJsZSgpLiBJcyAiem9uZS5qcy9kaXN0L3Rhc2stdHJhY2tpbmcuanMiIGxvYWRlZD8nKTt0aGlzLmFkZENhbGxiYWNrKHQsZSxuKSx0aGlzLl9ydW5DYWxsYmFja3NJZlJlYWR5KCl9LHQucHJvdG90eXBlLmdldFBlbmRpbmdSZXF1ZXN0Q291bnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGVuZGluZ0NvdW50fSx0LnByb3RvdHlwZS5maW5kUHJvdmlkZXJzPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm5bXX0sdH0oKSxmaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLl9hcHBsaWNhdGlvbnM9bmV3IE1hcCxoaS5hZGRUb1dpbmRvdyh0aGlzKX1yZXR1cm4gdC5wcm90b3R5cGUucmVnaXN0ZXJBcHBsaWNhdGlvbj1mdW5jdGlvbih0LGUpe3RoaXMuX2FwcGxpY2F0aW9ucy5zZXQodCxlKX0sdC5wcm90b3R5cGUudW5yZWdpc3RlckFwcGxpY2F0aW9uPWZ1bmN0aW9uKHQpe3RoaXMuX2FwcGxpY2F0aW9ucy5kZWxldGUodCl9LHQucHJvdG90eXBlLnVucmVnaXN0ZXJBbGxBcHBsaWNhdGlvbnM9ZnVuY3Rpb24oKXt0aGlzLl9hcHBsaWNhdGlvbnMuY2xlYXIoKX0sdC5wcm90b3R5cGUuZ2V0VGVzdGFiaWxpdHk9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2FwcGxpY2F0aW9ucy5nZXQodCl8fG51bGx9LHQucHJvdG90eXBlLmdldEFsbFRlc3RhYmlsaXRpZXM9ZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9hcHBsaWNhdGlvbnMudmFsdWVzKCkpfSx0LnByb3RvdHlwZS5nZXRBbGxSb290RWxlbWVudHM9ZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9hcHBsaWNhdGlvbnMua2V5cygpKX0sdC5wcm90b3R5cGUuZmluZFRlc3RhYmlsaXR5SW5UcmVlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPSEwKSxoaS5maW5kVGVzdGFiaWxpdHlJblRyZWUodGhpcyx0LGUpfSx0fSgpLGhpPW5ldyhmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmFkZFRvV2luZG93PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuZmluZFRlc3RhYmlsaXR5SW5UcmVlPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbnVsbH0sdH0oKSkscGk9bmV3IFR0KCJBbGxvd011bHRpcGxlVG9rZW4iKSxkaT1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0LGUpe3RoaXMubmFtZT10LHRoaXMudG9rZW49ZX19KCk7ZnVuY3Rpb24gZ2kodCxlLG4pe3ZvaWQgMD09PW4mJihuPVtdKTt2YXIgcj0iUGxhdGZvcm06ICIrZSxvPW5ldyBUdChyKTtyZXR1cm4gZnVuY3Rpb24oZSl7dm9pZCAwPT09ZSYmKGU9W10pO3ZhciBpPXZpKCk7aWYoIWl8fGkuaW5qZWN0b3IuZ2V0KHBpLCExKSlpZih0KXQobi5jb25jYXQoZSkuY29uY2F0KHtwcm92aWRlOm8sdXNlVmFsdWU6ITB9KSk7ZWxzZXt2YXIgYT1uLmNvbmNhdChlKS5jb25jYXQoe3Byb3ZpZGU6byx1c2VWYWx1ZTohMH0pOyFmdW5jdGlvbih0KXtpZihsaSYmIWxpLmRlc3Ryb3llZCYmIWxpLmluamVjdG9yLmdldChwaSwhMSkpdGhyb3cgbmV3IEVycm9yKCJUaGVyZSBjYW4gYmUgb25seSBvbmUgcGxhdGZvcm0uIERlc3Ryb3kgdGg="
                }
            ]
        },
        {
            "type": 12,
            "id": "HgWuuqtLMshpNUeqX1f5QWpGPPtX457qff3uZx9VmUzr",
            "fee": 12900000,
            "feeAssetId": null,
            "timestamp": 1575553259654,
            "version": 1,
            "sender": "3N2rk3yzChsJp4wCS5VLo5Q3ifLmDChfbzQ",
            "senderPublicKey": "BdACbbxkapMbmbtG7UxdPQ5Y8grEhk9cNxLNGAF5znme",
            "proofs": [
                "3qQkHQGRyufw1HALq9DE9MpzG4MEDNeEPKYQcj2KGvawBKejZ3ECRuQQdtnhoX8u1rLffWMPKK6nkFui8wY1Z2C8"
            ],
            "data": [
                {
                    "key": "asdf?main.e3350ff4d88d534234ef.js?4?0?1",
                    "type": "binary",
                    "value": "base64:ZSBwcmV2aW91cyBvbmUgdG8gY3JlYXRlIGEgbmV3IG9uZS4iKTtsaT10LmdldCh5aSk7dmFyIGU9dC5nZXQoam8sbnVsbCk7ZSYmZS5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdCgpfSkpfShNZS5jcmVhdGUoe3Byb3ZpZGVyczphLG5hbWU6cn0pKX1yZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU9dmkoKTtpZighZSl0aHJvdyBuZXcgRXJyb3IoIk5vIHBsYXRmb3JtIGV4aXN0cyEiKTtpZighZS5pbmplY3Rvci5nZXQodCxudWxsKSl0aHJvdyBuZXcgRXJyb3IoIkEgcGxhdGZvcm0gd2l0aCBhIGRpZmZlcmVudCBjb25maWd1cmF0aW9uIGhhcyBiZWVuIGNyZWF0ZWQuIFBsZWFzZSBkZXN0cm95IGl0IGZpcnN0LiIpO3JldHVybiBlfShvKX19ZnVuY3Rpb24gdmkoKXtyZXR1cm4gbGkmJiFsaS5kZXN0cm95ZWQ/bGk6bnVsbH12YXIgeWk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuX2luamVjdG9yPXQsdGhpcy5fbW9kdWxlcz1bXSx0aGlzLl9kZXN0cm95TGlzdGVuZXJzPVtdLHRoaXMuX2Rlc3Ryb3llZD0hMX1yZXR1cm4gdC5wcm90b3R5cGUuYm9vdHN0cmFwTW9kdWxlRmFjdG9yeT1mdW5jdGlvbih0LGUpe3ZhciBuLHI9dGhpcyxvPSJub29wIj09PShuPWU/ZS5uZ1pvbmU6dm9pZCAwKT9uZXcgc2k6KCJ6b25lLmpzIj09PW4/dm9pZCAwOm4pfHxuZXcgbmkoe2VuYWJsZUxvbmdTdGFja1RyYWNlOmVlKCl9KSxpPVt7cHJvdmlkZTpuaSx1c2VWYWx1ZTpvfV07cmV0dXJuIG8ucnVuKChmdW5jdGlvbigpe3ZhciBlPU1lLmNyZWF0ZSh7cHJvdmlkZXJzOmkscGFyZW50OnIuaW5qZWN0b3IsbmFtZTp0Lm1vZHVsZVR5cGUubmFtZX0pLG49dC5jcmVhdGUoZSksYT1uLmluamVjdG9yLmdldCgkdCxudWxsKTtpZighYSl0aHJvdyBuZXcgRXJyb3IoIk5vIEVycm9ySGFuZGxlci4gSXMgcGxhdGZvcm0gbW9kdWxlIChCcm93c2VyTW9kdWxlKSBpbmNsdWRlZD8iKTtyZXR1cm4gVm8mJkVvKG4uaW5qZWN0b3IuZ2V0KExvLFNvKXx8U28pLG4ub25EZXN0cm95KChmdW5jdGlvbigpe3JldHVybiB3aShyLl9tb2R1bGVzLG4pfSkpLG8ucnVuT3V0c2lkZUFuZ3VsYXIoKGZ1bmN0aW9uKCl7cmV0dXJuIG8ub25FcnJvci5zdWJzY3JpYmUoe25leHQ6ZnVuY3Rpb24odCl7YS5oYW5kbGVFcnJvcih0KX19KX0pKSxmdW5jdGlvbih0LGUsbyl7dHJ5e3ZhciBpPSgoYT1uLmluamVjdG9yLmdldChBbykpLnJ1bkluaXRpYWxpemVycygpLGEuZG9uZVByb21pc2UudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gci5fbW9kdWxlRG9Cb290c3RyYXAobiksbn0pKSk7cmV0dXJuIEtlKGkpP2kuY2F0Y2goKGZ1bmN0aW9uKG4pe3Rocm93IGUucnVuT3V0c2lkZUFuZ3VsYXIoKGZ1bmN0aW9uKCl7cmV0dXJuIHQuaGFuZGxlRXJyb3Iobil9KSksbn0pKTppfWNhdGNoKHUpe3Rocm93IGUucnVuT3V0c2lkZUFuZ3VsYXIoKGZ1bmN0aW9uKCl7cmV0dXJuIHQuaGFuZGxlRXJyb3IodSl9KSksdX12YXIgYX0oYSxvKX0pKX0sdC5wcm90b3R5cGUuYm9vdHN0cmFwTW9kdWxlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpczt2b2lkIDA9PT1lJiYoZT1bXSk7dmFyIHI9bWkoe30sZSk7cmV0dXJuIGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdC5nZXQoUW8pLmNyZWF0ZUNvbXBpbGVyKFtlXSkuY29tcGlsZU1vZHVsZUFzeW5jKG4pfSh0aGlzLmluamVjdG9yLHIsdCkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIG4uYm9vdHN0cmFwTW9kdWxlRmFjdG9yeSh0LHIpfSkpfSx0LnByb3RvdHlwZS5fbW9kdWxlRG9Cb290c3RyYXA9ZnVuY3Rpb24odCl7dmFyIGU9dC5pbmplY3Rvci5nZXQoX2kpO2lmKHQuX2Jvb3RzdHJhcENvbXBvbmVudHMubGVuZ3RoPjApdC5fYm9vdHN0cmFwQ29tcG9uZW50cy5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gZS5ib290c3RyYXAodCl9KSk7ZWxzZXtpZighdC5pbnN0YW5jZS5uZ0RvQm9vdHN0cmFwKXRocm93IG5ldyBFcnJvcigiVGhlIG1vZHVsZSAiK3l0KHQuaW5zdGFuY2UuY29uc3RydWN0b3IpKycgd2FzIGJvb3RzdHJhcHBlZCwgYnV0IGl0IGRvZXMgbm90IGRlY2xhcmUgIkBOZ01vZHVsZS5ib290c3RyYXAiIGNvbXBvbmVudHMgbm9yIGEgIm5nRG9Cb290c3RyYXAiIG1ldGhvZC4gUGxlYXNlIGRlZmluZSBvbmUgb2YgdGhlc2UuJyk7dC5pbnN0YW5jZS5uZ0RvQm9vdHN0cmFwKGUpfXRoaXMuX21vZHVsZXMucHVzaCh0KX0sdC5wcm90b3R5cGUub25EZXN0cm95PWZ1bmN0aW9uKHQpe3RoaXMuX2Rlc3Ryb3lMaXN0ZW5lcnMucHVzaCh0KX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJpbmplY3RvciIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9pbmplY3Rvcn0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7aWYodGhpcy5fZGVzdHJveWVkKXRocm93IG5ldyBFcnJvcigiVGhlIHBsYXRmb3JtIGhhcyBhbHJlYWR5IGJlZW4gZGVzdHJveWVkISIpO3RoaXMuX21vZHVsZXMuc2xpY2UoKS5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kZXN0cm95KCl9KSksdGhpcy5fZGVzdHJveUxpc3RlbmVycy5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdCgpfSkpLHRoaXMuX2Rlc3Ryb3llZD0hMH0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJkZXN0cm95ZWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVzdHJveWVkfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHR9KCk7ZnVuY3Rpb24gbWkodCxlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lLnJlZHVjZShtaSx0KTpPYmplY3Qoci5fX2Fzc2lnbikoe30sdCxlKX12YXIgX2k9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuLHIsbyxpKXt2YXIgYT10aGlzO3RoaXMuX3pvbmU9dCx0aGlzLl9jb25zb2xlPWUsdGhpcy5faW5qZWN0b3I9bix0aGlzLl9leGNlcHRpb25IYW5kbGVyPXIsdGhpcy5fY29tcG9uZW50RmFjdG9yeVJlc29sdmVyPW8sdGhpcy5faW5pdFN0YXR1cz1pLHRoaXMuX2Jvb3RzdHJhcExpc3RlbmVycz1bXSx0aGlzLl92aWV3cz1bXSx0aGlzLl9ydW5uaW5nVGljaz0hMSx0aGlzLl9lbmZvcmNlTm9OZXdDaGFuZ2VzPSExLHRoaXMuX3N0YWJsZT0hMCx0aGlzLmNvbXBvbmVudFR5cGVzPVtdLHRoaXMuY29tcG9uZW50cz1bXSx0aGlzLl9lbmZvcmNlTm9OZXdDaGFuZ2VzPWVlKCksdGhpcy5fem9uZS5vbk1pY3JvdGFza0VtcHR5LnN1YnNjcmliZSh7bmV4dDpmdW5jdGlvbigpe2EuX3pvbmUucnVuKChmdW5jdGlvbigpe2EudGljaygpfSkpfX0pO3ZhciB1PW5ldyB4KChmdW5jdGlvbih0KXthLl9zdGFibGU9YS5fem9uZS5pc1N0YWJsZSYmIWEuX3pvbmUuaGFzUGVuZGluZ01hY3JvdGFza3MmJiFhLl96b25lLmhhc1BlbmRpbmdNaWNyb3Rhc2tzLGEuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKGZ1bmN0aW9uKCl7dC5uZXh0KGEuX3N0YWJsZSksdC5jb21wbGV0ZSgpfSkpfSkpLGw9bmV3IHgoKGZ1bmN0aW9uKHQpe3ZhciBlO2EuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKGZ1bmN0aW9uKCl7ZT1hLl96b25lLm9uU3RhYmxlLnN1YnNjcmliZSgoZnVuY3Rpb24oKXtuaS5hc3NlcnROb3RJbkFuZ3VsYXJab25lKCksZWkoKGZ1bmN0aW9uKCl7YS5fc3RhYmxlfHxhLl96b25lLmhhc1BlbmRpbmdNYWNyb3Rhc2tzfHxhLl96b25lLmhhc1BlbmRpbmdNaWNyb3Rhc2tzfHwoYS5fc3RhYmxlPSEwLHQubmV4dCghMCkpfSkpfSkpfSkpO3ZhciBuPWEuX3pvbmUub25VbnN0YWJsZS5zdWJzY3JpYmUoKGZ1bmN0aW9uKCl7bmkuYXNzZXJ0SW5Bbmd1bGFyWm9uZSgpLGEuX3N0YWJsZSYmKGEuX3N0YWJsZT0hMSxhLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKChmdW5jdGlvbigpe3QubmV4dCghMSl9KSkpfSkpO3JldHVybiBmdW5jdGlvbigpe2UudW5zdWJzY3JpYmUoKSxuLnVuc3Vic2NyaWJlKCl9fSkpO3RoaXMuaXNTdGFibGU9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07dmFyIG49TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLHI9bnVsbCxvPXRbdC5sZW5ndGgtMV07cmV0dXJuIEEobyk/KHI9dC5wb3AoKSx0Lmxlbmd0aD4xJiYibnVtYmVyIj09dHlwZW9mIHRbdC5sZW5ndGgtMV0mJihuPXQucG9wKCkpKToibnVtYmVyIj09dHlwZW9mIG8mJihuPXQucG9wKCkpLG51bGw9PT1yJiYxPT09dC5sZW5ndGgmJnRbMF1pbnN0YW5jZW9mIHg/dFswXTokKG4pKHEodCxyKSl9KHUsbC5waXBlKChmdW5jdGlvbih0KXtyZXR1cm4gWCgpKChlPWl0LGZ1bmN0aW9uKHQpe3ZhciBuO249ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpmdW5jdGlvbigpe3JldHVybiBlfTt2YXIgcj1PYmplY3QuY3JlYXRlKHQscnQpO3JldHVybiByLnNvdXJjZT10LHIuc3ViamVjdEZhY3Rvcnk9bixyfSkodCkpO3ZhciBlfSkpKX12YXIgZTtyZXR1cm4gZT10LHQucHJvdG90eXBlLmJvb3RzdHJhcD1mdW5jdGlvbih0LGUpe3ZhciBuLHI9dGhpcztpZighdGhpcy5faW5pdFN0YXR1cy5kb25lKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGJvb3RzdHJhcCBhcyB0aGVyZSBhcmUgc3RpbGwgYXN5bmNocm9ub3VzIGluaXRpYWxpemVycyBydW5uaW5nLiBCb290c3RyYXAgY29tcG9uZW50cyBpbiB0aGUgYG5nRG9Cb290c3RyYXBgIG1ldGhvZCBvZiB0aGUgcm9vdCBtb2R1bGUuIik7bj10IGluc3RhbmNlb2YgWGU/dDp0aGlzLl9jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkodCksdGhpcy5jb21wb25lbnRUeXBlcy5wdXNoKG4uY29tcG9uZW50VHlwZSk7dmFyIG89biBpbnN0YW5jZW9mIGFuP251bGw6dGhpcy5faW5qZWN0b3IuZ2V0KEh0KSxpPW4uY3JlYXRlKE1lLk5VTEwsW10sZXx8bi5zZWxlY3RvcixvKTtpLm9uRGVzdHJveSgoZnVuY3Rpb24oKXtyLl91bmxvYWRDb21wb25lbnQoaSl9KSk7dmFyIGE9aS5pbmplY3Rvci5nZXQoY2ksbnVsbCk7cmV0dXJuIGEmJmkuaW5qZWN0b3IuZ2V0KGZpKS5yZWdpc3RlckFwcGxpY2F0aW9uKGkubG9jYXRpb24ubmF0aXZlRWxlbWVudCxhKSx0aGlzLl9sb2FkQ29tcG9uZW50KGkpLGVlKCkmJnRoaXMuX2NvbnNvbGUubG9nKCJBbmd1bGFyIGlzIHJ1bm5pbmcgaW4gdGhlIGRldmVsb3BtZW50IG1vZGUuIENhbGwgZW5hYmxlUHJvZE1vZGUoKSB0byBlbmFibGUgdGhlIHByb2R1Y3Rpb24gbW9kZS4iKSxpfSx0LnByb3RvdHlwZS50aWNrPWZ1bmN0aW9uKCl7dmFyIHQsbixvLGksYT10aGlzO2lmKHRoaXMuX3J1bm5pbmdUaWNrKXRocm93IG5ldyBFcnJvcigiQXBwbGljYXRpb25SZWYudGljayBpcyBjYWxsZWQgcmVjdXJzaXZlbHkiKTt2YXIgdT1lLl90aWNrU2NvcGUoKTt0cnl7dGhpcy5fcnVubmluZ1RpY2s9ITA7dHJ5e2Zvcih2YXIgbD1PYmplY3Qoci5fX3ZhbHVlcykodGhpcy5fdmlld3MpLHM9bC5uZXh0KCk7IXMuZG9uZTtzPWwubmV4dCgpKXMudmFsdWUuZGV0ZWN0Q2hhbmdlcygpfWNhdGNoKGgpe3Q9e2Vycm9yOmh9fWZpbmFsbHl7dHJ5e3MmJiFzLmRvbmUmJihuPWwucmV0dXJuKSYmbi5jYWxsKGwpfWZpbmFsbHl7aWYodCl0aHJvdyB0LmVycm9yfX1pZih0aGlzLl9lbmZvcmNlTm9OZXdDaGFuZ2VzKXRyeXtmb3IodmFyIGM9T2JqZWN0KHIuX192YWx1ZXMpKHRoaXMuX3ZpZXdzKSxmPWMubmV4dCgpOyFmLmRvbmU7Zj1jLm5leHQoKSlmLnZhbHVlLmNoZWNrTm9DaGFuZ2VzKCl9Y2F0Y2gocCl7bz17ZXJyb3I6cH19ZmluYWxseXt0cnl7ZiYmIWYuZG9uZSYmKGk9Yy5yZXR1cm4pJiZpLmNhbGwoYyl9ZmluYWxseXtpZihvKXRocm93IG8uZXJyb3J9fX1jYXRjaChkKXt0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKChmdW5jdGlvbigpe3JldHVybiBhLl9leGNlcHRpb25IYW5kbGVyLmhhbmRsZUVycm9yKGQpfSkpfWZpbmFsbHl7dGhpcy5fcnVubmluZ1RpY2s9ITEsWG8odSl9fSx0LnByb3RvdHlwZS5hdHRhY2hWaWV3PWZ1bmN0aW9uKHQpe3ZhciBlPXQ7dGhpcy5fdmlld3MucHVzaChlKSxlLmF0dGFjaFRvQXBwUmVmKHRoaXMpfSx0LnByb3RvdHlwZS5kZXRhY2hWaWV3PWZ1bmN0aW9uKHQpe3ZhciBlPXQ7d2kodGhpcy5fdmlld3MsZSksZS5kZXRhY2hGcm9tQXBwUmVmKCl9LHQucHJvdG90eXBlLl9sb2FkQ29tcG9uZW50PWZ1bmN0aW9uKHQpe3RoaXMuYXR0YWNoVmlldyh0Lmhvc3RWaWV3KSx0aGlzLnRpY2soKSx0aGlzLmNvbXBvbmVudHMucHVzaCh0KSx0aGlzLl9pbmplY3Rvci5nZXQoRG8sW10pLmNvbmNhdCh0aGlzLl9ib290c3RyYXBMaXN0ZW5lcnMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlKHQpfSkpfSx0LnByb3RvdHlwZS5fdW5sb2FkQ29tcG9uZW50PWZ1bmN0aW9uKHQpe3RoaXMuZGV0YWNoVmlldyh0Lmhvc3RWaWV3KSx3aSh0aGlzLmNvbXBvbmVudHMsdCl9LHQucHJvdG90eXBlLm5nT25EZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5fdmlld3Muc2xpY2UoKS5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kZXN0cm95KCl9KSl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidmlld0NvdW50Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZpZXdzLmxlbmd0aH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0Ll90aWNrU2NvcGU9JG8oIkFwcGxpY2F0aW9uUmVmI3RpY2soKSIpLHR9KCk7ZnVuY3Rpb24gd2kodCxlKXt2YXIgbj10LmluZGV4T2YoZSk7bj4tMSYmdC5zcGxpY2UobiwxKX12YXIgYmk9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXt9fSgpLHhpPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7fX0oKSxDaT17ZmFjdG9yeVBhdGhQcmVmaXg6IiIsZmFjdG9yeVBhdGhTdWZmaXg6Ii5uZ2ZhY3RvcnkifSxTaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLl9jb21waWxlcj10LHRoaXMuX2NvbmZpZz1lfHxDaX1yZXR1cm4gdC5wcm90b3R5cGUubG9hZD1mdW5jdGlvbih0KXtyZXR1cm4hVm8mJnRoaXMuX2NvbXBpbGVyIGluc3RhbmNlb2YgV28/dGhpcy5sb2FkRmFjdG9yeSh0KTp0aGlzLmxvYWRBbmRDb21waWxlKHQpfSx0LnByb3RvdHlwZS5sb2FkQW5kQ29tcGlsZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG89T2JqZWN0KHIuX19yZWFkKSh0LnNwbGl0KCIjIiksMiksaT1vWzBdLGE9b1sxXTtyZXR1cm4gdm9pZCAwPT09YSYmKGE9ImRlZmF1bHQiKSxuKCJ6bjhQIikoaSkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHRbYV19KSkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIEVpKHQsaSxhKX0pKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fY29tcGlsZXIuY29tcGlsZU1vZHVsZUFzeW5jKHQpfSkpfSx0LnByb3RvdHlwZS5sb2FkRmFjdG9yeT1mdW5jdGlvbih0KXt2YXIgZT1PYmplY3Qoci5fX3JlYWQpKHQuc3BsaXQoIiMiKSwyKSxvPWVbMF0saT1lWzFdLGE9Ik5nRmFjdG9yeSI7cmV0dXJuIHZvaWQgMD09PWkmJihpPSJkZWZhdWx0IixhPSIiKSxuKCJ6bjhQIikodGhpcy5fY29uZmlnLmZhY3RvcnlQYXRoUHJlZml4K28rdGhpcy5fY29uZmlnLmZhY3RvcnlQYXRoU3VmZml4KS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gdFtpK2FdfSkpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiBFaSh0LG8saSl9KSl9LHR9KCk7ZnVuY3Rpb24gRWkodCxlLG4pe2lmKCF0KXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgJyIrbisiJyBpbiAnIitlKyInIik7cmV0dXJuIHR9dmFyIE9pPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7dGhpcy5uYW1lPXQsdGhpcy5jYWxsYmFjaz1lfX0oKSxUaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3RoaXMubGlzdGVuZXJzPVtdLHRoaXMucGFyZW50PW51bGwsdGhpcy5fZGVidWdDb250ZXh0PW4sdGhpcy5uYXRpdmVOb2RlPXQsZSYmZSBpbnN0YW5jZW9mIFBpJiZlLmFkZENoaWxkKHRoaXMpfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImluamVjdG9yIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlYnVnQ29udGV4dC5pbmplY3Rvcn0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImNvbXBvbmVudEluc3RhbmNlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlYnVnQ29udGV4dC5jb21wb25lbnR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJjb250ZXh0Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlYnVnQ29udGV4dC5jb250ZXh0fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicmVmZXJlbmNlcyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWJ1Z0NvbnRleHQucmVmZXJlbmNlc30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInByb3ZpZGVyVG9rZW5zIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlYnVnQ29udGV4dC5wcm92aWRlclRva2Vuc30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0fSgpLFBpPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIpe3ZhciBvPXQuY2FsbCh0aGlzLGUsbixyKXx8dGhpcztyZXR1cm4gby5wcm9wZXJ0aWVzPXt9LG8uYXR0cmlidXRlcz17fSxvLmNsYXNzZXM9e30sby5zdHlsZXM9e30sby5jaGlsZE5vZGVzPVtdLG8ubmF0aXZlRWxlbWVudD1lLG99cmV0dXJuIE9iamVjdChyLl9fZXh0ZW5kcykoZSx0KSxlLnByb3RvdHlwZS5hZGRDaGlsZD1mdW5jdGlvbih0KXt0JiYodGhpcy5jaGlsZE5vZGVzLnB1c2godCksdC5wYXJlbnQ9dGhpcyl9LGUucHJvdG90eXBlLnJlbW92ZUNoaWxkPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuY2hpbGROb2Rlcy5pbmRleE9mKHQpOy0xIT09ZSYmKHQucGFyZW50PW51bGwsdGhpcy5jaGlsZE5vZGVzLnNwbGljZShlLDEpKX0sZS5wcm90b3R5cGUuaW5zZXJ0Q2hpbGRyZW5BZnRlcj1mdW5jdGlvbih0LGUpe3ZhciBuLG89dGhpcyxpPXRoaXMuY2hpbGROb2Rlcy5pbmRleE9mKHQpOy0xIT09aSYmKChuPXRoaXMuY2hpbGROb2Rlcykuc3BsaWNlLmFwcGx5KG4sT2JqZWN0KHIuX19zcHJlYWQpKFtpKzEsMF0sZSkpLGUuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5wYXJlbnQmJmUucGFyZW50LnJlbW92ZUNoaWxkKGUpLHQucGFyZW50PW99KSkpfSxlLnByb3RvdHlwZS5pbnNlcnRCZWZvcmU9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLmNoaWxkTm9kZXMuaW5kZXhPZih0KTstMT09PW4/dGhpcy5hZGRDaGlsZChlKTooZS5wYXJlbnQmJmUucGFyZW50LnJlbW92ZUNoaWxkKGUpLGUucGFyZW50PXRoaXMsdGhpcy5jaGlsZE5vZGVzLnNwbGljZShuLDAsZSkpfSxlLnByb3RvdHlwZS5xdWVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5xdWVyeUFsbCh0KVswXXx8bnVsbH0sZS5wcm90b3R5cGUucXVlcnlBbGw9ZnVuY3Rpb24odCl7dmFyIGU9W107cmV0dXJuIGZ1bmN0aW9uIHQoZSxuLHIpe2UuY2hpbGROb2Rlcy5mb3JFYWNoKChmdW5jdGlvbihlKXtlIGluc3RhbmNlb2YgUGkmJihuKGUpJiZyLnB1c2goZSksdChlLG4scikpfSkpfSh0aGlzLHQsZSksZX0sZS5wcm90b3R5cGUucXVlcnlBbGxOb2Rlcz1mdW5jdGlvbih0KXt2YXIgZT1bXTtyZXR1cm4gZnVuY3Rpb24gdChlLG4scil7ZSBpbnN0YW5jZW9mIFBpJiZlLmNoaWxkTm9kZXMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7bihlKSYmci5wdXNoKGUpLGUgaW5zdGFuY2VvZiBQaSYmdChlLG4scil9KSl9KHRoaXMsdCxlKSxlfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImNoaWxkcmVuIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hpbGROb2Rlcy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgZX0pKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS50cmlnZ2VyRXZlbnRIYW5kbGVyPWZ1bmN0aW9uKHQsZSl7dGhpcy5saXN0ZW5lcnMuZm9yRWFjaCgoZnVuY3Rpb24obil7bi5uYW1lPT10JiZuLmNhbGxiYWNrKGUpfSkpfSxlfShUaSksa2k9bmV3IE1hcCxBaT1mdW5jdGlvbih0KXtyZXR1cm4ga2kuZ2V0KHQpfHxudWxsfTtmdW5jdGlvbiBJaSh0KXtraS5zZXQodC5uYXRpdmVOb2RlLHQpfXZhciBSaT1naShudWxsLCJjb3JlIixbe3Byb3ZpZGU6Tm8sdXNlVmFsdWU6InVua25vd24ifSx7cHJvdmlkZTp5aSxkZXBzOltNZV19LHtwcm92aWRlOmZpLGRlcHM6W119LHtwcm92aWRlOlVvLGRlcHM6W119XSk7ZnVuY3Rpb24gTWkoKXtyZXR1cm4ga259ZnVuY3Rpb24gamkoKXtyZXR1cm4gQW59ZnVuY3Rpb24gTmkodCl7cmV0dXJuIHQ/KFZvJiZFbyh0KSx0KTpTb31mdW5jdGlvbiBEaSh0KXt2YXIgZT1bXTtyZXR1cm4gdC5vblN0YWJsZS5zdWJzY3JpYmUoKGZ1bmN0aW9uKCl7Zm9yKDtlLmxlbmd0aDspZS5wb3AoKSgpfSkpLGZ1bmN0aW9uKHQpe2UucHVzaCh0KX19dmFyIFVpPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe319KCk7ZnVuY3Rpb24gTGkodCxlLG4scixvLGkpe3R8PTE7dmFyIGE9Y3IoZSk7cmV0dXJue25vZGVJbmRleDotMSxwYXJlbnQ6bnVsbCxyZW5kZXJQYXJlbnQ6bnVsbCxiaW5kaW5nSW5kZXg6LTEsb3V0cHV0SW5kZXg6LTEsZmxhZ3M6dCxjaGVja0luZGV4Oi0xLGNoaWxkRmxhZ3M6MCxkaXJlY3RDaGlsZEZsYWdzOjAsY2hpbGRNYXRjaGVkUXVlcmllczowLG1hdGNoZWRRdWVyaWVzOmEubWF0Y2hlZFF1ZXJpZXMsbWF0Y2hlZFF1ZXJ5SWRzOmEubWF0Y2hlZFF1ZXJ5SWRzLHJlZmVyZW5jZXM6YS5yZWZlcmVuY2VzLG5nQ29udGVudEluZGV4Om4sY2hpbGRDb3VudDpyLGJpbmRpbmdzOltdLGJpbmRpbmdGbGFnczowLG91dHB1dHM6W10sZWxlbWVudDp7bnM6bnVsbCxuYW1lOm51bGwsYXR0cnM6bnVsbCx0ZW1wbGF0ZTppP2RyKGkpOm51bGwsY29tcG9uZW50UHJvdmlkZXI6bnVsbCxjb21wb25lbnRWaWV3Om51bGwsY29tcG9uZW50UmVuZGVyZXJUeXBlOm51bGwscHVibGljUHJvdmlkZXJzOm51bGwsYWxsUHJvdmlkZXJzOm51bGwsaGFuZGxlRXZlbnQ6b3x8cW59LHByb3ZpZGVyOm51bGwsdGV4dDpudWxsLHF1ZXJ5Om51bGwsbmdDb250ZW50Om51bGx9fWZ1bmN0aW9uIFZpKHQsZSxuLG8saSxhLHUsbCxzLGMsZixoKXt2YXIgcDt2b2lkIDA9PT11JiYodT1bXSksY3x8KGM9cW4pO3ZhciBkPWNyKG4pLGc9ZC5tYXRjaGVkUXVlcmllcyx2PWQucmVmZXJlbmNlcyx5PWQubWF0Y2hlZFF1ZXJ5SWRzLG09bnVsbCxfPW51bGw7YSYmKG09KHA9T2JqZWN0KHIuX19yZWFkKShicihhKSwyKSlbMF0sXz1wWzFdKSxsPWx8fFtdO2Zvcih2YXIgdz1uZXcgQXJyYXkobC5sZW5ndGgpLGI9MDtiPGwubGVuZ3RoO2IrKyl7dmFyIHg9T2JqZWN0KHIuX19yZWFkKShsW2JdLDMpLEM9eFswXSxTPXhbMV0sRT14WzJdLE89T2JqZWN0KHIuX19yZWFkKShicihTKSwyKSxUPU9bMF0sUD1PWzFdLGs9dm9pZCAwLEE9dm9pZCAwO3N3aXRjaCgxNSZDKXtjYXNlIDQ6QT1FO2JyZWFrO2Nhc2UgMTpjYXNlIDg6az1FfXdbYl09e2ZsYWdzOkMsbnM6VCxuYW1lOlAsbm9uTWluaWZpZWROYW1lOlAsc2VjdXJpdHlDb250ZXh0Omssc3VmZml4OkF9fXM9c3x8W107dmFyIEk9bmV3IEFycmF5KHMubGVuZ3RoKTtmb3IoYj0wO2I8cy5sZW5ndGg7YisrKXt2YXIgUj1PYmplY3Qoci5fX3JlYWQpKHNbYl0sMik7SVtiXT17dHlwZTowLHRhcmdldDpSWzBdLGV2ZW50TmFtZTpSWzFdLHByb3BOYW1lOm51bGx9fXZhciBNPSh1PXV8fFtdKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlPU9iamVjdChyLl9fcmVhZCkodCwyKSxuPWVbMF0sbz1lWzFdLGk9T2JqZWN0KHIuX19yZWFkKShicihuKSwyKTtyZXR1cm5baVswXSxpWzFdLG9dfSkpO3JldHVybiBoPWZ1bmN0aW9uKHQpe2lmKHQmJnQuaWQ9PT1Lbil7dmFyIGU9bnVsbCE9dC5lbmNhcHN1bGF0aW9uJiZ0LmVuY2Fwc3VsYXRpb24hPT1adC5Ob25lfHx0LnN0eWxlcy5sZW5ndGh8fE9iamVjdC5rZXlzKHQuZGF0YSkubGVuZ3RoO3QuaWQ9ZT8iYyIrJG4rKzpZbn1yZXR1cm4gdCYmdC5pZD09PVluJiYodD1udWxsKSx0fHxudWxsfShoKSxmJiYoZXw9MzM1NTQ0MzIpLHtub2RlSW5kZXg6LTEscGFyZW50Om51bGwscmVuZGVyUGFyZW50Om51bGwsYmluZGluZ0luZGV4Oi0xLG91dHB1dEluZGV4Oi0xLGNoZWNrSW5kZXg6dCxmbGFnczplfD0xLGNoaWxkRmxhZ3M6MCxkaXJlY3RDaGlsZEZsYWdzOjAsY2hpbGRNYXRjaGVkUXVlcmllczowLG1hdGNoZWRRdWVyaWVzOmcsbWF0Y2hlZFF1ZXJ5SWRzOnkscmVmZXJlbmNlczp2LG5nQ29udGVudEluZGV4Om8sY2hpbGRDb3VudDppLGJpbmRpbmdzOncsYmluZGluZ0ZsYWdzOnhyKHcpLG91dHB1dHM6SSxlbGVtZW50OntuczptLG5hbWU6XyxhdHRyczpNLHRlbXBsYXRlOm51bGwsY29tcG9uZW50UHJvdmlkZXI6bnVsbCxjb21wb25lbnRWaWV3OmZ8fG51bGwsY29tcG9uZW50UmVuZGVyZXJUeXBlOmgscHVibGljUHJvdmlkZXJzOm51bGwsYWxsUHJvdmlkZXJzOm51bGwsaGFuZGxlRXZlbnQ6Y3x8cW59LHByb3ZpZGVyOm51bGwsdGV4dDpudWxsLHF1ZXJ5Om51bGwsbmdDb250ZW50Om51bGx9fWZ1bmN0aW9uIEhpKHQsZSxuKXt2YXIgbyxpPW4uZWxlbWVudCxhPXQucm9vdC5zZWxlY3Rvck9yTm9kZSx1PXQucmVuZGVyZXI7aWYodC5wYXJlbnR8fCFhKXtvPWkubmFtZT91LmNyZWF0ZUVsZW1lbnQoaS5uYW1lLGkubnMpOnUuY3JlYXRlQ29tbWVudCgiIik7dmFyIGw9aHIodCxlLG4pO2wmJnUuYXBwZW5kQ2hpbGQobCxvKX1lbHNlIG89dS5zZWxlY3RSb290RWxlbWVudChhLCEhaS5jb21wb25lbnRSZW5kZXJlclR5cGUmJmkuY29tcG9uZW50UmVuZGVyZXJUeXBlLmVuY2Fwc3VsYXRpb249PT1adC5TaGFkb3dEb20pO2lmKGkuYXR0cnMpZm9yKHZhciBzPTA7czxpLmF0dHJzLmxlbmd0aDtzKyspe3ZhciBjPU9iamVjdChyLl9fcmVhZCkoaS5hdHRyc1tzXSwzKTt1LnNldEF0dHJpYnV0ZShvLGNbMV0sY1syXSxjWzBdKX1yZXR1cm4gb31mdW5jdGlvbiB6aSh0LGUsbixyKXtmb3IodmFyIG89MDtvPG4ub3V0cHV0cy5sZW5ndGg7bysrKXt2YXIgaT1uLm91dHB1dHNbb10sYT1GaSh0LG4ubm9kZUluZGV4LChmPWkuZXZlbnROYW1lLChjPWkudGFyZ2V0KT9jKyI6IitmOmYpKSx1PWkudGFyZ2V0LGw9dDsiY29tcG9uZW50Ij09PWkudGFyZ2V0JiYodT1udWxsLGw9ZSk7dmFyIHM9bC5yZW5kZXJlci5saXN0ZW4odXx8cixpLmV2ZW50TmFtZSxhKTt0LmRpc3Bvc2FibGVzW24ub3V0cHV0SW5kZXgrb109c312YXIgYyxmfWZ1bmN0aW9uIEZpKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIG9yKHQsZSxuLHIpfX1mdW5jdGlvbiBCaSh0LGUsbixyKXtpZighdHIodCxlLG4scikpcmV0dXJuITE7dmFyIG89ZS5iaW5kaW5nc1tuXSxpPXpuKHQsZS5ub2RlSW5kZXgpLGE9aS5yZW5kZXJFbGVtZW50LHU9by5uYW1lO3N3aXRjaCgxNSZvLmZsYWdzKXtjYXNlIDE6IWZ1bmN0aW9uKHQsZSxuLHIsbyxpKXt2YXIgYT1lLnNlY3VyaXR5Q29udGV4dCx1PWE/dC5yb290LnNhbml0aXplci5zYW5pdGl6ZShhLGkpOmk7dT1udWxsIT11P3UudG9TdHJpbmcoKTpudWxsO3ZhciBsPXQucmVuZGVyZXI7bnVsbCE9aT9sLnNldEF0dHJpYnV0ZShuLG8sdSxyKTpsLnJlbW92ZUF0dHJpYnV0ZShuLG8scil9KHQsbyxhLG8ubnMsdSxyKTticmVhaztjYXNlIDI6IWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvPXQucmVuZGVyZXI7cj9vLmFkZENsYXNzKGUsbik6by5yZW1vdmVDbGFzcyhlLG4pfSh0LGEsdSxyKTticmVhaztjYXNlIDQ6IWZ1bmN0aW9uKHQsZSxuLHIsbyl7dmFyIGk9dC5yb290LnNhbml0aXplci5zYW5pdGl6ZShDZS5TVFlMRSxvKTtpZihudWxsIT1pKXtpPWkudG9TdHJpbmcoKTt2YXIgYT1lLnN1ZmZpeDtudWxsIT1hJiYoaSs9YSl9ZWxzZSBpPW51bGw7dmFyIHU9dC5yZW5kZXJlcjtudWxsIT1pP3Uuc2V0U3R5bGUobixyLGkpOnUucmVtb3ZlU3R5bGUobixyKX0odCxvLGEsdSxyKTticmVhaztjYXNlIDg6IWZ1bmN0aW9uKHQsZSxuLHIsbyl7dmFyIGk9ZS5zZWN1cml0eUNvbnRleHQsYT1pP3Qucm9vdC5zYW5pdGl6ZXIuc2FuaXRpemUoaSxvKTpvO3QucmVuZGVyZXIuc2V0UHJvcGVydHkobixyLGEpfSgzMzU1NDQzMiZlLmZsYWdzJiYzMiZvLmZsYWdzP2kuY29tcG9uZW50Vmlldzp0LG8sYSx1LHIpfXJldHVybiEwfWZ1bmN0aW9uIFppKHQpe2Zvcih2YXIgZT10LmRlZi5ub2RlTWF0Y2hlZFF1ZXJpZXM7dC5wYXJlbnQmJnNyKHQpOyl7dmFyIG49dC5wYXJlbnROb2RlRGVmO3Q9dC5wYXJlbnQ7Zm9yKHZhciByPW4ubm9kZUluZGV4K24uY2hpbGRDb3VudCxvPTA7bzw9cjtvKyspNjcxMDg4NjQmKGk9dC5kZWYubm9kZXNbb10pLmZsYWdzJiY1MzY4NzA5MTImaS5mbGFncyYmKGkucXVlcnkuZmlsdGVySWQmZSk9PT1pLnF1ZXJ5LmZpbHRlcklkJiZabih0LG8pLnNldERpcnR5KCksISgxJmkuZmxhZ3MmJm8raS5jaGlsZENvdW50PG4ubm9kZUluZGV4KSYmNjcxMDg4NjQmaS5jaGlsZEZsYWdzJiY1MzY4NzA5MTImaS5jaGlsZEZsYWdzfHwobys9aS5jaGlsZENvdW50KX1pZigxMzQyMTc3MjgmdC5kZWYubm9kZUZsYWdzKWZvcihvPTA7bzx0LmRlZi5ub2Rlcy5sZW5ndGg7bysrKXt2YXIgaTsxMzQyMTc3MjgmKGk9dC5kZWYubm9kZXNbb10pLmZsYWdzJiY1MzY4NzA5MTImaS5mbGFncyYmWm4odCxvKS5zZXREaXJ0eSgpLG8rPWkuY2hpbGRDb3VudH19ZnVuY3Rpb24gR2kodCxlKXt2YXIgbj1abih0LGUubm9kZUluZGV4KTtpZihuLmRpcnR5KXt2YXIgcixvPXZvaWQgMDtpZig2NzEwODg2NCZlLmZsYWdzKXt2YXIgaT1lLnBhcmVudC5wYXJlbnQ7bz1xaSh0LGkubm9kZUluZGV4LGkubm9kZUluZGV4K2kuY2hpbGRDb3VudCxlLnF1ZXJ5LFtdKSxyPUZuKHQsZS5wYXJlbnQubm9kZUluZGV4KS5pbnN0YW5jZX1lbHNlIDEzNDIxNzcyOCZlLmZsYWdzJiYobz1xaSh0LDAsdC5kZWYubm9kZXMubGVuZ3RoLTEsZS5xdWVyeSxbXSkscj10LmNvbXBvbmVudCk7bi5yZXNldChvKTtmb3IodmFyIGE9ZS5xdWVyeS5iaW5kaW5ncyx1PSExLGw9MDtsPGEubGVuZ3RoO2wrKyl7dmFyIHM9YVtsXSxjPXZvaWQgMDtzd2l0Y2gocy5iaW5kaW5nVHlwZSl7Y2FzZSAwOmM9bi5maXJzdDticmVhaztjYXNlIDE6Yz1uLHU9ITB9cltzLnByb3BOYW1lXT1jfXUmJm4ubm90aWZ5T25DaGFuZ2VzKCl9fWZ1bmN0aW9uIHFpKHQsZSxuLHIsbyl7Zm9yKHZhciBpPWU7aTw9bjtpKyspe3ZhciBhPXQuZGVmLm5vZGVzW2ldLHU9YS5tYXRjaGVkUXVlcmllc1tyLmlkXTtpZihudWxsIT11JiZvLnB1c2goV2kodCxhLHUpKSwxJmEuZmxhZ3MmJmEuZWxlbWVudC50ZW1wbGF0ZSYmKGEuZWxlbWVudC50ZW1wbGF0ZS5ub2RlTWF0Y2hlZFF1ZXJpZXMmci5maWx0ZXJJZCk9PT1yLmZpbHRlcklkKXt2YXIgbD16bih0LGkpO2lmKChhLmNoaWxkTWF0Y2hlZFF1ZXJpZXMmci5maWx0ZXJJZCk9PT1yLmZpbHRlcklkJiYocWkodCxpKzEsaSthLmNoaWxkQ291bnQscixvKSxpKz1hLmNoaWxkQ291bnQpLDE2Nzc3MjE2JmEuZmxhZ3MpZm9yKHZhciBzPWwudmlld0NvbnRhaW5lci5fZW1iZWRkZWRWaWV3cyxjPTA7YzxzLmxlbmd0aDtjKyspe3ZhciBmPXNbY10saD1pcihmKTtoJiZoPT09bCYmcWkoZiwwLGYuZGVmLm5vZGVzLmxlbmd0aC0xLHIsbyl9dmFyIHA9bC50ZW1wbGF0ZS5fcHJvamVjdGVkVmlld3M7aWYocClmb3IoYz0wO2M8cC5sZW5ndGg7YysrKXt2YXIgZD1wW2NdO3FpKGQsMCxkLmRlZi5ub2Rlcy5sZW5ndGgtMSxyLG8pfX0oYS5jaGlsZE1hdGNoZWRRdWVyaWVzJnIuZmlsdGVySWQpIT09ci5maWx0ZXJJZCYmKGkrPWEuY2hpbGRDb3VudCl9cmV0dXJuIG99ZnVuY3Rpb24gV2kodCxlLG4pe2lmKG51bGwhPW4pc3dpdGNoKG4pe2Nhc2UgMTpyZXR1cm4gem4odCxlLm5vZGVJbmRleCkucmVuZGVyRWxlbWVudDtjYXNlIDA6cmV0dXJuIG5ldyBsbih6bih0LGUubm9kZUluZGV4KS5yZW5kZXJFbGVtZW50KTtjYXNlIDI6cmV0dXJuIHpuKHQsZS5ub2RlSW5kZXgpLnRlbXBsYXRlO2Nhc2UgMzpyZXR1cm4gem4odCxlLm5vZGVJbmRleCkudmlld0NvbnRhaW5lcjtjYXNlIDQ6cmV0dXJuIEZuKHQsZS5ub2RlSW5kZXgpLmluc3RhbmNlfX1mdW5jdGlvbiBRaSh0LGUsbil7dmFyIHI9aHIodCxlLG4pO3ImJnlyKHQsbi5uZ0NvbnRlbnQuaW5kZXgsMSxyLG51bGwsdm9pZCAwKX1mdW5jdGlvbiBLaSh0LGUsbil7Zm9yKHZhciByPW5ldyBBcnJheShuLmxlbmd0aC0xKSxvPTE7bzxuLmxlbmd0aDtvKyspcltvLTFdPXtmbGFnczo4LG5hbWU6bnVsbCxuczpudWxsLG5vbk1pbmlmaWVkTmFtZTpudWxsLHNlY3VyaXR5Q29udGV4dDpudWxsLHN1ZmZpeDpuW29dfTtyZXR1cm57bm9kZUluZGV4Oi0xLHBhcmVudDpudWxsLHJlbmRlclBhcmVudDpudWxsLGJpbmRpbmdJbmRleDotMSxvdXRwdXRJbmRleDotMSxjaGVja0luZGV4OnQsZmxhZ3M6MixjaGlsZEZsYWdzOjAsZGlyZWN0Q2hpbGRGbGFnczowLGNoaWxkTWF0Y2hlZFF1ZXJpZXM6MCxtYXRjaGVkUXVlcmllczp7fSxtYXRjaGVkUXVlcnlJZHM6MCxyZWZlcmVuY2VzOnt9LG5nQ29udGVudEluZGV4OmUsY2hpbGRDb3VudDowLGJpbmRpbmdzOnIsYmluZGluZ0ZsYWdzOjgsb3V0cHV0czpbXSxlbGVtZW50Om51bGwscHJvdmlkZXI6bnVsbCx0ZXh0OntwcmVmaXg6blswXX0scXVlcnk6bnVsbCxuZ0NvbnRlbnQ6bnVsbH19ZnVuY3Rpb24gWWkodCxlLG4pe3ZhciByLG89dC5yZW5kZXJlcjtyPW8uY3JlYXRlVGV4dChuLnRleHQucHJlZml4KTt2YXIgaT1ocih0LGUsbik7cmV0dXJuIGkmJm8uYXBwZW5kQ2hpbGQoaSxyKSx7cmVuZGVyVGV4dDpyfX1mdW5jdGlvbiBKaSh0LGUpe3JldHVybihudWxsIT10P3QudG9TdHJpbmcoKToiIikrZS5zdWZmaXh9ZnVuY3Rpb24gJGkodCxlLG4scil7Zm9yKHZhciBvPTAsaT0wLGE9MCx1PTAsbD0wLHM9bnVsbCxjPW51bGwsZj0hMSxoPSExLHA9bnVsbCxkPTA7ZDxlLmxlbmd0aDtkKyspe3ZhciBnPWVbZF07aWYoZy5ub2RlSW5kZXg9ZCxnLnBhcmVudD1zLGcuYmluZGluZ0luZGV4PW8sZy5vdXRwdXRJbmRleD1pLGcucmVuZGVyUGFyZW50PWMsYXw9Zy5mbGFncyxsfD1nLm1hdGNoZWRRdWVyeUlkcyxnLmVsZW1lbnQpe3ZhciB2PWcuZWxlbWVudDt2LnB1YmxpY1Byb3ZpZGVycz1zP3MuZWxlbWVudC5wdWJsaWNQcm92aWRlcnM6T2JqZWN0LmNyZWF0ZShudWxsKSx2LmFsbFByb3ZpZGVycz12LnB1YmxpY1Byb3ZpZGVycyxmPSExLGg9ITEsZy5lbGVtZW50LnRlbXBsYXRlJiYobHw9Zy5lbGVtZW50LnRlbXBsYXRlLm5vZGVNYXRjaGVkUXVlcmllcyl9aWYodGEocyxnLGUubGVuZ3RoKSxvKz1nLmJpbmRpbmdzLmxlbmd0aCxpKz1nLm91dHB1dHMubGVuZ3RoLCFjJiYzJmcuZmxhZ3MmJihwPWcpLDIwMjI0JmcuZmxhZ3Mpe2Z8fChmPSEwLHMuZWxlbWVudC5wdWJsaWNQcm92aWRlcnM9T2JqZWN0LmNyZWF0ZShzLmVsZW1lbnQucHVibGljUHJvdmlkZXJzKSxzLmVsZW1lbnQuYWxsUHJvdmlkZXJzPXMuZWxlbWVudC5wdWJsaWNQcm92aWRlcnMpO3ZhciB5PTAhPSgzMjc2OCZnLmZsYWdzKTswPT0oODE5MiZnLmZsYWdzKXx8eT9zLmVsZW1lbnQucHVibGljUHJvdmlkZXJzW1FuKGcucHJvdmlkZXIudG9rZW4pXT1nOihofHwoaD0hMCxzLmVsZW1lbnQuYWxsUHJvdmlkZXJzPU9iamVjdC5jcmVhdGUocy5lbGVtZW50LnB1YmxpY1Byb3ZpZGVycykpLHMuZWxlbWVudC5hbGxQcm92aWRlcnNbUW4oZy5wcm92aWRlci50b2tlbildPWcpLHkmJihzLmVsZW1lbnQuY29tcG9uZW50UHJvdmlkZXI9Zyl9aWYocz8ocy5jaGlsZEZsYWdzfD1nLmZsYWdzLHMuZGlyZWN0Q2hpbGRGbGFnc3w9Zy5mbGFncyxzLmNoaWxkTWF0Y2hlZFF1ZXJpZXN8PWcubWF0Y2hlZFF1ZXJ5SWRzLGcuZWxlbWVudCYmZy5lbGVtZW50LnRlbXBsYXRlJiYocy5jaGlsZE1hdGNoZWRRdWVyaWVzfD1nLmVsZW1lbnQudGVtcGxhdGUubm9kZU1hdGNoZWRRdWVyaWVzKSk6dXw9Zy5mbGFncyxnLmNoaWxkQ291bnQ+MClzPWcsWGkoZyl8fChjPWcpO2Vsc2UgZm9yKDtzJiZkPT09cy5ub2RlSW5kZXgrcy5jaGlsZENvdW50Oyl7dmFyIG09cy5wYXJlbnQ7bSYmKG0uY2hpbGRGbGFnc3w9cy5jaGlsZEZsYWdzLG0uY2hpbGRNYXRjaGVkUXVlcmllc3w9cy5jaGlsZE1hdGNoZWRRdWVyaWVzKSxjPShzPW0pJiZYaShzKT9zLnJlbmRlclBhcmVudDpzfX1yZXR1cm57ZmFjdG9yeTpudWxsLG5vZGVGbGFnczphLHJvb3ROb2RlRmxhZ3M6dSxub2RlTWF0Y2hlZFF1ZXJpZXM6bCxmbGFnczp0LG5vZGVzOmUsdXBkYXRlRGlyZWN0aXZlczpufHxxbix1cGRhdGVSZW5kZXJlcjpyfHxxbixoYW5kbGVFdmVudDpmdW5jdGlvbih0LG4scixvKXtyZXR1cm4gZVtuXS5lbGVtZW50LmhhbmRsZUV2ZW50KHQscixvKX0sYmluZGluZ0NvdW50Om8sb3V0cHV0Q291bnQ6aSxsYXN0UmVuZGVyUm9vdE5vZGU6cH19ZnVuY3Rpb24gWGkodCl7cmV0dXJuIDAhPSgxJnQuZmxhZ3MpJiZudWxsPT09dC5lbGVtZW50Lm5hbWV9ZnVuY3Rpb24gdGEodCxlLG4pe3ZhciByPWUuZWxlbWVudCYmZS5lbGVtZW50LnRlbXBsYXRlO2lmKHIpe2lmKCFyLmxhc3RSZW5kZXJSb290Tm9kZSl0aHJvdyBuZXcgRXJyb3IoIklsbGVnYWwgU3RhdGU6IEVtYmVkZGVkIHRlbXBsYXRlcyB3aXRob3V0IG5vZGVzIGFyZSBub3QgYWxsb3dlZCEiKTtpZihyLmxhc3RSZW5kZXJSb290Tm9kZSYmMTY3NzcyMTYmci5sYXN0UmVuZGVyUm9vdE5vZGUuZmxhZ3MpdGhyb3cgbmV3IEVycm9yKCJJbGxlZ2FsIFN0YXRlOiBMYXN0IHJvb3Qgbm9kZSBvZiBhIHRlbXBsYXRlIGNhbid0IGhhdmUgZW1iZWRkZWQgdmlld3MsIGF0IGluZGV4ICIrZS5ub2RlSW5kZXgrIiEiKX1pZigyMDIyNCZlLmZsYWdzJiYwPT0oMSYodD90LmZsYWdzOjApKSl0aHJvdyBuZXcgRXJyb3IoIklsbGVnYWwgU3RhdGU6IFN0YXRpY1Byb3ZpZGVyL0RpcmVjdGl2ZSBub2RlcyBuZWVkIHRvIGJlIGNoaWxkcmVuIG9mIGVsZW1lbnRzIG9yIGFuY2hvcnMsIGF0IGluZGV4ICIrZS5ub2RlSW5kZXgrIiEiKTtpZihlLnF1ZXJ5KXtpZig2NzEwODg2NCZlLmZsYWdzJiYoIXR8fDA9PSgxNjM4NCZ0LmZsYWdzKSkpdGhyb3cgbmV3IEVycm9yKCJJbGxlZ2FsIFN0YXRlOiBDb250ZW50IFF1ZXJ5IG5vZGVzIG5lZWQgdG8gYmUgY2hpbGRyZW4gb2YgZGlyZWN0aXZlcywgYXQgaW5kZXggIitlLm5vZGVJbmRleCsiISIpO2lmKDEzNDIxNzcyOCZlLmZsYWdzJiZ0KXRocm93IG5ldyBFcnJvcigiSWxsZWdhbCBTdGF0ZTogVmlldyBRdWVyeSBub2RlcyBoYXZlIHRvIGJlIHRvcCBsZXZlbCBub2RlcywgYXQgaW5kZXggIitlLm5vZGVJbmRleCsiISIpfWlmKGUuY2hpbGRDb3VudCl7dmFyIG89dD90Lm5vZGVJbmRleCt0LmNoaWxkQ291bnQ6bi0xO2lmKGUubm9kZUluZGV4PD1vJiZlLm5vZGVJbmRleCtlLmNoaWxkQ291bnQ+byl0aHJvdyBuZXcgRXJyb3IoIklsbGVnYWwgU3RhdGU6IGNoaWxkQ291bnQgb2Ygbm9kZSBsZWFkcyBvdXRzaWRlIG9mIHBhcmVudCwgYXQgaW5kZXggIitlLm5vZGVJbmRleCsiISIpfX1mdW5jdGlvbiBlYSh0LGUsbixyKXt2YXIgbz1vYSh0LnJvb3QsdC5yZW5kZXJlcix0LGUsbik7cmV0dXJuIGlhKG8sdC5jb21wb25lbnQsciksYWEobyksb31mdW5jdGlvbiBuYSh0LGUsbil7dmFyIHI9b2EodCx0LnJlbmRlcmVyLG51bGwsbnVsbCxlKTtyZXR1cg=="
                },
                {
                    "key": "asdf?main.e3350ff4d88d534234ef.js?4?1?1",
                    "type": "binary",
                    "value": "base64:biBpYShyLG4sbiksYWEocikscn1mdW5jdGlvbiByYSh0LGUsbixyKXt2YXIgbyxpPWUuZWxlbWVudC5jb21wb25lbnRSZW5kZXJlclR5cGU7cmV0dXJuIG89aT90LnJvb3QucmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKHIsaSk6dC5yb290LnJlbmRlcmVyLG9hKHQucm9vdCxvLHQsZS5lbGVtZW50LmNvbXBvbmVudFByb3ZpZGVyLG4pfWZ1bmN0aW9uIG9hKHQsZSxuLHIsbyl7dmFyIGk9bmV3IEFycmF5KG8ubm9kZXMubGVuZ3RoKSxhPW8ub3V0cHV0Q291bnQ/bmV3IEFycmF5KG8ub3V0cHV0Q291bnQpOm51bGw7cmV0dXJue2RlZjpvLHBhcmVudDpuLHZpZXdDb250YWluZXJQYXJlbnQ6bnVsbCxwYXJlbnROb2RlRGVmOnIsY29udGV4dDpudWxsLGNvbXBvbmVudDpudWxsLG5vZGVzOmksc3RhdGU6MTMscm9vdDp0LHJlbmRlcmVyOmUsb2xkVmFsdWVzOm5ldyBBcnJheShvLmJpbmRpbmdDb3VudCksZGlzcG9zYWJsZXM6YSxpbml0SW5kZXg6LTF9fWZ1bmN0aW9uIGlhKHQsZSxuKXt0LmNvbXBvbmVudD1lLHQuY29udGV4dD1ufWZ1bmN0aW9uIGFhKHQpe3ZhciBlO2xyKHQpJiYoZT16bih0LnBhcmVudCx0LnBhcmVudE5vZGVEZWYucGFyZW50Lm5vZGVJbmRleCkucmVuZGVyRWxlbWVudCk7Zm9yKHZhciBuPXQuZGVmLHI9dC5ub2RlcyxvPTA7bzxuLm5vZGVzLmxlbmd0aDtvKyspe3ZhciBpPW4ubm9kZXNbb107R24uc2V0Q3VycmVudE5vZGUodCxvKTt2YXIgYT12b2lkIDA7c3dpdGNoKDIwMTM0NzA2NyZpLmZsYWdzKXtjYXNlIDE6dmFyIHU9SGkodCxlLGkpLGw9dm9pZCAwO2lmKDMzNTU0NDMyJmkuZmxhZ3Mpe3ZhciBzPWRyKGkuZWxlbWVudC5jb21wb25lbnRWaWV3KTtsPUduLmNyZWF0ZUNvbXBvbmVudFZpZXcodCxpLHMsdSl9emkodCxsLGksdSksYT17cmVuZGVyRWxlbWVudDp1LGNvbXBvbmVudFZpZXc6bCx2aWV3Q29udGFpbmVyOm51bGwsdGVtcGxhdGU6aS5lbGVtZW50LnRlbXBsYXRlP3pyKHQsaSk6dm9pZCAwfSwxNjc3NzIxNiZpLmZsYWdzJiYoYS52aWV3Q29udGFpbmVyPVVyKHQsaSxhKSk7YnJlYWs7Y2FzZSAyOmE9WWkodCxlLGkpO2JyZWFrO2Nhc2UgNTEyOmNhc2UgMTAyNDpjYXNlIDIwNDg6Y2FzZSAyNTY6KGE9cltvXSl8fDQwOTYmaS5mbGFnc3x8KGE9e2luc3RhbmNlOmlvKHQsaSl9KTticmVhaztjYXNlIDE2OmE9e2luc3RhbmNlOmFvKHQsaSl9O2JyZWFrO2Nhc2UgMTYzODQ6KGE9cltvXSl8fChhPXtpbnN0YW5jZTp1byh0LGkpfSksMzI3NjgmaS5mbGFncyYmaWEoem4odCxpLnBhcmVudC5ub2RlSW5kZXgpLmNvbXBvbmVudFZpZXcsYS5pbnN0YW5jZSxhLmluc3RhbmNlKTticmVhaztjYXNlIDMyOmNhc2UgNjQ6Y2FzZSAxMjg6YT17dmFsdWU6dm9pZCAwfTticmVhaztjYXNlIDY3MTA4ODY0OmNhc2UgMTM0MjE3NzI4OmE9bmV3IFBvO2JyZWFrO2Nhc2UgODpRaSh0LGUsaSksYT12b2lkIDB9cltvXT1hfWdhKHQsZGEuQ3JlYXRlVmlld05vZGVzKSxfYSh0LDIwMTMyNjU5MiwyNjg0MzU0NTYsMCl9ZnVuY3Rpb24gdWEodCl7Y2EodCksR24udXBkYXRlRGlyZWN0aXZlcyh0LDEpLHZhKHQsZGEuQ2hlY2tOb0NoYW5nZXMpLEduLnVwZGF0ZVJlbmRlcmVyKHQsMSksZ2EodCxkYS5DaGVja05vQ2hhbmdlcyksdC5zdGF0ZSY9LTk3fWZ1bmN0aW9uIGxhKHQpezEmdC5zdGF0ZT8odC5zdGF0ZSY9LTIsdC5zdGF0ZXw9Mik6dC5zdGF0ZSY9LTMsTG4odCwwLDI1NiksY2EodCksR24udXBkYXRlRGlyZWN0aXZlcyh0LDApLHZhKHQsZGEuQ2hlY2tBbmRVcGRhdGUpLF9hKHQsNjcxMDg4NjQsNTM2ODcwOTEyLDApO3ZhciBlPUxuKHQsMjU2LDUxMik7dm8odCwyMDk3MTUyfChlPzEwNDg1NzY6MCkpLEduLnVwZGF0ZVJlbmRlcmVyKHQsMCksZ2EodCxkYS5DaGVja0FuZFVwZGF0ZSksX2EodCwxMzQyMTc3MjgsNTM2ODcwOTEyLDApLHZvKHQsODM4ODYwOHwoKGU9TG4odCw1MTIsNzY4KSk/NDE5NDMwNDowKSksMiZ0LmRlZi5mbGFncyYmKHQuc3RhdGUmPS05KSx0LnN0YXRlJj0tOTcsTG4odCw3NjgsMTAyNCl9ZnVuY3Rpb24gc2EodCxlLG4sbyxpLGEsdSxsLHMsYyxmLGgscCl7cmV0dXJuIDA9PT1uP2Z1bmN0aW9uKHQsZSxuLHIsbyxpLGEsdSxsLHMsYyxmKXtzd2l0Y2goMjAxMzQ3MDY3JmUuZmxhZ3Mpe2Nhc2UgMTpyZXR1cm4gZnVuY3Rpb24odCxlLG4scixvLGksYSx1LGwscyxjLGYpe3ZhciBoPWUuYmluZGluZ3MubGVuZ3RoLHA9ITE7cmV0dXJuIGg+MCYmQmkodCxlLDAsbikmJihwPSEwKSxoPjEmJkJpKHQsZSwxLHIpJiYocD0hMCksaD4yJiZCaSh0LGUsMixvKSYmKHA9ITApLGg+MyYmQmkodCxlLDMsaSkmJihwPSEwKSxoPjQmJkJpKHQsZSw0LGEpJiYocD0hMCksaD41JiZCaSh0LGUsNSx1KSYmKHA9ITApLGg+NiYmQmkodCxlLDYsbCkmJihwPSEwKSxoPjcmJkJpKHQsZSw3LHMpJiYocD0hMCksaD44JiZCaSh0LGUsOCxjKSYmKHA9ITApLGg+OSYmQmkodCxlLDksZikmJihwPSEwKSxwfSh0LGUsbixyLG8saSxhLHUsbCxzLGMsZik7Y2FzZSAyOnJldHVybiBmdW5jdGlvbih0LGUsbixyLG8saSxhLHUsbCxzLGMsZil7dmFyIGg9ITEscD1lLmJpbmRpbmdzLGQ9cC5sZW5ndGg7aWYoZD4wJiZ0cih0LGUsMCxuKSYmKGg9ITApLGQ+MSYmdHIodCxlLDEscikmJihoPSEwKSxkPjImJnRyKHQsZSwyLG8pJiYoaD0hMCksZD4zJiZ0cih0LGUsMyxpKSYmKGg9ITApLGQ+NCYmdHIodCxlLDQsYSkmJihoPSEwKSxkPjUmJnRyKHQsZSw1LHUpJiYoaD0hMCksZD42JiZ0cih0LGUsNixsKSYmKGg9ITApLGQ+NyYmdHIodCxlLDcscykmJihoPSEwKSxkPjgmJnRyKHQsZSw4LGMpJiYoaD0hMCksZD45JiZ0cih0LGUsOSxmKSYmKGg9ITApLGgpe3ZhciBnPWUudGV4dC5wcmVmaXg7ZD4wJiYoZys9SmkobixwWzBdKSksZD4xJiYoZys9SmkocixwWzFdKSksZD4yJiYoZys9SmkobyxwWzJdKSksZD4zJiYoZys9SmkoaSxwWzNdKSksZD40JiYoZys9SmkoYSxwWzRdKSksZD41JiYoZys9SmkodSxwWzVdKSksZD42JiYoZys9SmkobCxwWzZdKSksZD43JiYoZys9SmkocyxwWzddKSksZD44JiYoZys9SmkoYyxwWzhdKSksZD45JiYoZys9SmkoZixwWzldKSk7dmFyIHY9SG4odCxlLm5vZGVJbmRleCkucmVuZGVyVGV4dDt0LnJlbmRlcmVyLnNldFZhbHVlKHYsZyl9cmV0dXJuIGh9KHQsZSxuLHIsbyxpLGEsdSxsLHMsYyxmKTtjYXNlIDE2Mzg0OnJldHVybiBmdW5jdGlvbih0LGUsbixyLG8saSxhLHUsbCxzLGMsZil7dmFyIGg9Rm4odCxlLm5vZGVJbmRleCkscD1oLmluc3RhbmNlLGQ9ITEsZz12b2lkIDAsdj1lLmJpbmRpbmdzLmxlbmd0aDtyZXR1cm4gdj4wJiZYbih0LGUsMCxuKSYmKGQ9ITAsZz1nbyh0LGgsZSwwLG4sZykpLHY+MSYmWG4odCxlLDEscikmJihkPSEwLGc9Z28odCxoLGUsMSxyLGcpKSx2PjImJlhuKHQsZSwyLG8pJiYoZD0hMCxnPWdvKHQsaCxlLDIsbyxnKSksdj4zJiZYbih0LGUsMyxpKSYmKGQ9ITAsZz1nbyh0LGgsZSwzLGksZykpLHY+NCYmWG4odCxlLDQsYSkmJihkPSEwLGc9Z28odCxoLGUsNCxhLGcpKSx2PjUmJlhuKHQsZSw1LHUpJiYoZD0hMCxnPWdvKHQsaCxlLDUsdSxnKSksdj42JiZYbih0LGUsNixsKSYmKGQ9ITAsZz1nbyh0LGgsZSw2LGwsZykpLHY+NyYmWG4odCxlLDcscykmJihkPSEwLGc9Z28odCxoLGUsNyxzLGcpKSx2PjgmJlhuKHQsZSw4LGMpJiYoZD0hMCxnPWdvKHQsaCxlLDgsYyxnKSksdj45JiZYbih0LGUsOSxmKSYmKGQ9ITAsZz1nbyh0LGgsZSw5LGYsZykpLGcmJnAubmdPbkNoYW5nZXMoZyksNjU1MzYmZS5mbGFncyYmVm4odCwyNTYsZS5ub2RlSW5kZXgpJiZwLm5nT25Jbml0KCksMjYyMTQ0JmUuZmxhZ3MmJnAubmdEb0NoZWNrKCksZH0odCxlLG4scixvLGksYSx1LGwscyxjLGYpO2Nhc2UgMzI6Y2FzZSA2NDpjYXNlIDEyODpyZXR1cm4gZnVuY3Rpb24odCxlLG4scixvLGksYSx1LGwscyxjLGYpe3ZhciBoPWUuYmluZGluZ3MscD0hMSxkPWgubGVuZ3RoO2lmKGQ+MCYmdHIodCxlLDAsbikmJihwPSEwKSxkPjEmJnRyKHQsZSwxLHIpJiYocD0hMCksZD4yJiZ0cih0LGUsMixvKSYmKHA9ITApLGQ+MyYmdHIodCxlLDMsaSkmJihwPSEwKSxkPjQmJnRyKHQsZSw0LGEpJiYocD0hMCksZD41JiZ0cih0LGUsNSx1KSYmKHA9ITApLGQ+NiYmdHIodCxlLDYsbCkmJihwPSEwKSxkPjcmJnRyKHQsZSw3LHMpJiYocD0hMCksZD44JiZ0cih0LGUsOCxjKSYmKHA9ITApLGQ+OSYmdHIodCxlLDksZikmJihwPSEwKSxwKXt2YXIgZz1Cbih0LGUubm9kZUluZGV4KSx2PXZvaWQgMDtzd2l0Y2goMjAxMzQ3MDY3JmUuZmxhZ3Mpe2Nhc2UgMzI6dj1uZXcgQXJyYXkoaC5sZW5ndGgpLGQ+MCYmKHZbMF09biksZD4xJiYodlsxXT1yKSxkPjImJih2WzJdPW8pLGQ+MyYmKHZbM109aSksZD40JiYodls0XT1hKSxkPjUmJih2WzVdPXUpLGQ+NiYmKHZbNl09bCksZD43JiYodls3XT1zKSxkPjgmJih2WzhdPWMpLGQ+OSYmKHZbOV09Zik7YnJlYWs7Y2FzZSA2NDp2PXt9LGQ+MCYmKHZbaFswXS5uYW1lXT1uKSxkPjEmJih2W2hbMV0ubmFtZV09ciksZD4yJiYodltoWzJdLm5hbWVdPW8pLGQ+MyYmKHZbaFszXS5uYW1lXT1pKSxkPjQmJih2W2hbNF0ubmFtZV09YSksZD41JiYodltoWzVdLm5hbWVdPXUpLGQ+NiYmKHZbaFs2XS5uYW1lXT1sKSxkPjcmJih2W2hbN10ubmFtZV09cyksZD44JiYodltoWzhdLm5hbWVdPWMpLGQ+OSYmKHZbaFs5XS5uYW1lXT1mKTticmVhaztjYXNlIDEyODp2YXIgeT1uO3N3aXRjaChkKXtjYXNlIDE6dj15LnRyYW5zZm9ybShuKTticmVhaztjYXNlIDI6dj15LnRyYW5zZm9ybShyKTticmVhaztjYXNlIDM6dj15LnRyYW5zZm9ybShyLG8pO2JyZWFrO2Nhc2UgNDp2PXkudHJhbnNmb3JtKHIsbyxpKTticmVhaztjYXNlIDU6dj15LnRyYW5zZm9ybShyLG8saSxhKTticmVhaztjYXNlIDY6dj15LnRyYW5zZm9ybShyLG8saSxhLHUpO2JyZWFrO2Nhc2UgNzp2PXkudHJhbnNmb3JtKHIsbyxpLGEsdSxsKTticmVhaztjYXNlIDg6dj15LnRyYW5zZm9ybShyLG8saSxhLHUsbCxzKTticmVhaztjYXNlIDk6dj15LnRyYW5zZm9ybShyLG8saSxhLHUsbCxzLGMpO2JyZWFrO2Nhc2UgMTA6dj15LnRyYW5zZm9ybShyLG8saSxhLHUsbCxzLGMsZil9fWcudmFsdWU9dn1yZXR1cm4gcH0odCxlLG4scixvLGksYSx1LGwscyxjLGYpO2RlZmF1bHQ6dGhyb3cidW5yZWFjaGFibGUifX0odCxlLG8saSxhLHUsbCxzLGMsZixoLHApOmZ1bmN0aW9uKHQsZSxuKXtzd2l0Y2goMjAxMzQ3MDY3JmUuZmxhZ3Mpe2Nhc2UgMTpyZXR1cm4gZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgcj0hMSxvPTA7bzxuLmxlbmd0aDtvKyspQmkodCxlLG8sbltvXSkmJihyPSEwKTtyZXR1cm4gcn0odCxlLG4pO2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgcj1lLmJpbmRpbmdzLG89ITEsaT0wO2k8bi5sZW5ndGg7aSsrKXRyKHQsZSxpLG5baV0pJiYobz0hMCk7aWYobyl7dmFyIGE9IiI7Zm9yKGk9MDtpPG4ubGVuZ3RoO2krKylhKz1KaShuW2ldLHJbaV0pO2E9ZS50ZXh0LnByZWZpeCthO3ZhciB1PUhuKHQsZS5ub2RlSW5kZXgpLnJlbmRlclRleHQ7dC5yZW5kZXJlci5zZXRWYWx1ZSh1LGEpfXJldHVybiBvfSh0LGUsbik7Y2FzZSAxNjM4NDpyZXR1cm4gZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgcj1Gbih0LGUubm9kZUluZGV4KSxvPXIuaW5zdGFuY2UsaT0hMSxhPXZvaWQgMCx1PTA7dTxuLmxlbmd0aDt1KyspWG4odCxlLHUsblt1XSkmJihpPSEwLGE9Z28odCxyLGUsdSxuW3VdLGEpKTtyZXR1cm4gYSYmby5uZ09uQ2hhbmdlcyhhKSw2NTUzNiZlLmZsYWdzJiZWbih0LDI1NixlLm5vZGVJbmRleCkmJm8ubmdPbkluaXQoKSwyNjIxNDQmZS5mbGFncyYmby5uZ0RvQ2hlY2soKSxpfSh0LGUsbik7Y2FzZSAzMjpjYXNlIDY0OmNhc2UgMTI4OnJldHVybiBmdW5jdGlvbih0LGUsbil7Zm9yKHZhciBvPWUuYmluZGluZ3MsaT0hMSxhPTA7YTxuLmxlbmd0aDthKyspdHIodCxlLGEsblthXSkmJihpPSEwKTtpZihpKXt2YXIgdT1Cbih0LGUubm9kZUluZGV4KSxsPXZvaWQgMDtzd2l0Y2goMjAxMzQ3MDY3JmUuZmxhZ3Mpe2Nhc2UgMzI6bD1uO2JyZWFrO2Nhc2UgNjQ6Zm9yKGw9e30sYT0wO2E8bi5sZW5ndGg7YSsrKWxbb1thXS5uYW1lXT1uW2FdO2JyZWFrO2Nhc2UgMTI4OnZhciBzPW5bMF0sYz1uLnNsaWNlKDEpO2w9cy50cmFuc2Zvcm0uYXBwbHkocyxPYmplY3Qoci5fX3NwcmVhZCkoYykpfXUudmFsdWU9bH1yZXR1cm4gaX0odCxlLG4pO2RlZmF1bHQ6dGhyb3cidW5yZWFjaGFibGUifX0odCxlLG8pfWZ1bmN0aW9uIGNhKHQpe3ZhciBlPXQuZGVmO2lmKDQmZS5ub2RlRmxhZ3MpZm9yKHZhciBuPTA7bjxlLm5vZGVzLmxlbmd0aDtuKyspe3ZhciByPWUubm9kZXNbbl07aWYoNCZyLmZsYWdzKXt2YXIgbz16bih0LG4pLnRlbXBsYXRlLl9wcm9qZWN0ZWRWaWV3cztpZihvKWZvcih2YXIgaT0wO2k8by5sZW5ndGg7aSsrKXt2YXIgYT1vW2ldO2Euc3RhdGV8PTMyLHJyKGEsdCl9fWVsc2UgMD09KDQmci5jaGlsZEZsYWdzKSYmKG4rPXIuY2hpbGRDb3VudCl9fWZ1bmN0aW9uIGZhKHQsZSxuLHIsbyxpLGEsdSxsLHMsYyxmLGgpe3JldHVybiAwPT09bj9mdW5jdGlvbih0LGUsbixyLG8saSxhLHUsbCxzLGMsZil7dmFyIGg9ZS5iaW5kaW5ncy5sZW5ndGg7aD4wJiZlcih0LGUsMCxuKSxoPjEmJmVyKHQsZSwxLHIpLGg+MiYmZXIodCxlLDIsbyksaD4zJiZlcih0LGUsMyxpKSxoPjQmJmVyKHQsZSw0LGEpLGg+NSYmZXIodCxlLDUsdSksaD42JiZlcih0LGUsNixsKSxoPjcmJmVyKHQsZSw3LHMpLGg+OCYmZXIodCxlLDgsYyksaD45JiZlcih0LGUsOSxmKX0odCxlLHIsbyxpLGEsdSxsLHMsYyxmLGgpOmZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIHI9MDtyPG4ubGVuZ3RoO3IrKyllcih0LGUscixuW3JdKX0odCxlLHIpLCExfWZ1bmN0aW9uIGhhKHQsZSl7aWYoWm4odCxlLm5vZGVJbmRleCkuZGlydHkpdGhyb3cgTm4oR24uY3JlYXRlRGVidWdDb250ZXh0KHQsZS5ub2RlSW5kZXgpLCJRdWVyeSAiK2UucXVlcnkuaWQrIiBub3QgZGlydHkiLCJRdWVyeSAiK2UucXVlcnkuaWQrIiBkaXJ0eSIsMCE9KDEmdC5zdGF0ZSkpfWZ1bmN0aW9uIHBhKHQpe2lmKCEoMTI4JnQuc3RhdGUpKXtpZih2YSh0LGRhLkRlc3Ryb3kpLGdhKHQsZGEuRGVzdHJveSksdm8odCwxMzEwNzIpLHQuZGlzcG9zYWJsZXMpZm9yKHZhciBlPTA7ZTx0LmRpc3Bvc2FibGVzLmxlbmd0aDtlKyspdC5kaXNwb3NhYmxlc1tlXSgpOyFmdW5jdGlvbih0KXtpZigxNiZ0LnN0YXRlKXt2YXIgZT1pcih0KTtpZihlKXt2YXIgbj1lLnRlbXBsYXRlLl9wcm9qZWN0ZWRWaWV3cztuJiYoQnQobixuLmluZGV4T2YodCkpLEduLmRpcnR5UGFyZW50UXVlcmllcyh0KSl9fX0odCksdC5yZW5kZXJlci5kZXN0cm95Tm9kZSYmZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuZGVmLm5vZGVzLmxlbmd0aCxuPTA7bjxlO24rKyl7dmFyIHI9dC5kZWYubm9kZXNbbl07MSZyLmZsYWdzP3QucmVuZGVyZXIuZGVzdHJveU5vZGUoem4odCxuKS5yZW5kZXJFbGVtZW50KToyJnIuZmxhZ3M/dC5yZW5kZXJlci5kZXN0cm95Tm9kZShIbih0LG4pLnJlbmRlclRleHQpOig2NzEwODg2NCZyLmZsYWdzfHwxMzQyMTc3Mjgmci5mbGFncykmJlpuKHQsbikuZGVzdHJveSgpfX0odCksbHIodCkmJnQucmVuZGVyZXIuZGVzdHJveSgpLHQuc3RhdGV8PTEyOH19dmFyIGRhPWZ1bmN0aW9uKHQpe3JldHVybiB0W3QuQ3JlYXRlVmlld05vZGVzPTBdPSJDcmVhdGVWaWV3Tm9kZXMiLHRbdC5DaGVja05vQ2hhbmdlcz0xXT0iQ2hlY2tOb0NoYW5nZXMiLHRbdC5DaGVja05vQ2hhbmdlc1Byb2plY3RlZFZpZXdzPTJdPSJDaGVja05vQ2hhbmdlc1Byb2plY3RlZFZpZXdzIix0W3QuQ2hlY2tBbmRVcGRhdGU9M109IkNoZWNrQW5kVXBkYXRlIix0W3QuQ2hlY2tBbmRVcGRhdGVQcm9qZWN0ZWRWaWV3cz00XT0iQ2hlY2tBbmRVcGRhdGVQcm9qZWN0ZWRWaWV3cyIsdFt0LkRlc3Ryb3k9NV09IkRlc3Ryb3kiLHR9KHt9KTtmdW5jdGlvbiBnYSh0LGUpe3ZhciBuPXQuZGVmO2lmKDMzNTU0NDMyJm4ubm9kZUZsYWdzKWZvcih2YXIgcj0wO3I8bi5ub2Rlcy5sZW5ndGg7cisrKXt2YXIgbz1uLm5vZGVzW3JdOzMzNTU0NDMyJm8uZmxhZ3M/eWEoem4odCxyKS5jb21wb25lbnRWaWV3LGUpOjA9PSgzMzU1NDQzMiZvLmNoaWxkRmxhZ3MpJiYocis9by5jaGlsZENvdW50KX19ZnVuY3Rpb24gdmEodCxlKXt2YXIgbj10LmRlZjtpZigxNjc3NzIxNiZuLm5vZGVGbGFncylmb3IodmFyIHI9MDtyPG4ubm9kZXMubGVuZ3RoO3IrKyl7dmFyIG89bi5ub2Rlc1tyXTtpZigxNjc3NzIxNiZvLmZsYWdzKWZvcih2YXIgaT16bih0LHIpLnZpZXdDb250YWluZXIuX2VtYmVkZGVkVmlld3MsYT0wO2E8aS5sZW5ndGg7YSsrKXlhKGlbYV0sZSk7ZWxzZSAwPT0oMTY3NzcyMTYmby5jaGlsZEZsYWdzKSYmKHIrPW8uY2hpbGRDb3VudCl9fWZ1bmN0aW9uIHlhKHQsZSl7dmFyIG49dC5zdGF0ZTtzd2l0Y2goZSl7Y2FzZSBkYS5DaGVja05vQ2hhbmdlczowPT0oMTI4Jm4pJiYoMTI9PSgxMiZuKT91YSh0KTo2NCZuJiZtYSh0LGRhLkNoZWNrTm9DaGFuZ2VzUHJvamVjdGVkVmlld3MpKTticmVhaztjYXNlIGRhLkNoZWNrTm9DaGFuZ2VzUHJvamVjdGVkVmlld3M6MD09KDEyOCZuKSYmKDMyJm4/dWEodCk6NjQmbiYmbWEodCxlKSk7YnJlYWs7Y2FzZSBkYS5DaGVja0FuZFVwZGF0ZTowPT0oMTI4Jm4pJiYoMTI9PSgxMiZuKT9sYSh0KTo2NCZuJiZtYSh0LGRhLkNoZWNrQW5kVXBkYXRlUHJvamVjdGVkVmlld3MpKTticmVhaztjYXNlIGRhLkNoZWNrQW5kVXBkYXRlUHJvamVjdGVkVmlld3M6MD09KDEyOCZuKSYmKDMyJm4/bGEodCk6NjQmbiYmbWEodCxlKSk7YnJlYWs7Y2FzZSBkYS5EZXN0cm95OnBhKHQpO2JyZWFrO2Nhc2UgZGEuQ3JlYXRlVmlld05vZGVzOmFhKHQpfX1mdW5jdGlvbiBtYSh0LGUpe3ZhKHQsZSksZ2EodCxlKX1mdW5jdGlvbiBfYSh0LGUsbixyKXtpZih0LmRlZi5ub2RlRmxhZ3MmZSYmdC5kZWYubm9kZUZsYWdzJm4pZm9yKHZhciBvPXQuZGVmLm5vZGVzLmxlbmd0aCxpPTA7aTxvO2krKyl7dmFyIGE9dC5kZWYubm9kZXNbaV07aWYoYS5mbGFncyZlJiZhLmZsYWdzJm4pc3dpdGNoKEduLnNldEN1cnJlbnROb2RlKHQsYS5ub2RlSW5kZXgpLHIpe2Nhc2UgMDpHaSh0LGEpO2JyZWFrO2Nhc2UgMTpoYSh0LGEpfWEuY2hpbGRGbGFncyZlJiZhLmNoaWxkRmxhZ3Mmbnx8KGkrPWEuY2hpbGRDb3VudCl9fXZhciB3YT0hMTtmdW5jdGlvbiBiYSh0LGUsbixyLG8saSl7dmFyIGE9by5pbmplY3Rvci5nZXQoZm4pO3JldHVybiBuYShDYSh0LG8sYSxlLG4pLHIsaSl9ZnVuY3Rpb24geGEodCxlLG4scixvLGkpe3ZhciBhPW8uaW5qZWN0b3IuZ2V0KGZuKSx1PUNhKHQsbyxuZXcgbnUoYSksZSxuKSxsPU1hKHIpO3JldHVybiB0dShGYS5jcmVhdGUsbmEsbnVsbCxbdSxsLGldKX1mdW5jdGlvbiBDYSh0LGUsbixyLG8pe3ZhciBpPWUuaW5qZWN0b3IuZ2V0KFNlKSxhPWUuaW5qZWN0b3IuZ2V0KCR0KSx1PW4uY3JlYXRlUmVuZGVyZXIobnVsbCxudWxsKTtyZXR1cm57bmdNb2R1bGU6ZSxpbmplY3Rvcjp0LHByb2plY3RhYmxlTm9kZXM6cixzZWxlY3Rvck9yTm9kZTpvLHNhbml0aXplcjppLHJlbmRlcmVyRmFjdG9yeTpuLHJlbmRlcmVyOnUsZXJyb3JIYW5kbGVyOmF9fWZ1bmN0aW9uIFNhKHQsZSxuLHIpe3ZhciBvPU1hKG4pO3JldHVybiB0dShGYS5jcmVhdGUsZWEsbnVsbCxbdCxlLG8scl0pfWZ1bmN0aW9uIEVhKHQsZSxuLHIpe3JldHVybiBuPWthLmdldChlLmVsZW1lbnQuY29tcG9uZW50UHJvdmlkZXIucHJvdmlkZXIudG9rZW4pfHxNYShuKSx0dShGYS5jcmVhdGUscmEsbnVsbCxbdCxlLG4scl0pfWZ1bmN0aW9uIE9hKHQsZSxuLHIpe3JldHVybiBRcih0LGUsbixmdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbih0KXt2YXIgZT0hMSxuPSExO3JldHVybiAwPT09VGEuc2l6ZT97aGFzT3ZlcnJpZGVzOmUsaGFzRGVwcmVjYXRlZE92ZXJyaWRlczpufToodC5wcm92aWRlcnMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIHI9VGEuZ2V0KHQudG9rZW4pOzM4NDAmdC5mbGFncyYmciYmKGU9ITAsbj1ufHxyLmRlcHJlY2F0ZWRCZWhhdmlvcil9KSksdC5tb2R1bGVzLmZvckVhY2goKGZ1bmN0aW9uKHQpe1BhLmZvckVhY2goKGZ1bmN0aW9uKHIsbyl7Z3QobykucHJvdmlkZWRJbj09PXQmJihlPSEwLG49bnx8ci5kZXByZWNhdGVkQmVoYXZpb3IpfSkpfSkpLHtoYXNPdmVycmlkZXM6ZSxoYXNEZXByZWNhdGVkT3ZlcnJpZGVzOm59KX0odCksbj1lLmhhc0RlcHJlY2F0ZWRPdmVycmlkZXM7cmV0dXJuIGUuaGFzT3ZlcnJpZGVzPyhmdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHQucHJvdmlkZXJzLmxlbmd0aDtlKyspe3ZhciByPXQucHJvdmlkZXJzW2VdO24mJihyLmZsYWdzfD00MDk2KTt2YXIgbz1UYS5nZXQoci50b2tlbik7byYmKHIuZmxhZ3M9LTM4NDEmci5mbGFnc3xvLmZsYWdzLHIuZGVwcz1mcihvLmRlcHMpLHIudmFsdWU9by52YWx1ZSl9aWYoUGEuc2l6ZT4wKXt2YXIgaT1uZXcgU2V0KHQubW9kdWxlcyk7UGEuZm9yRWFjaCgoZnVuY3Rpb24oZSxyKXtpZihpLmhhcyhndChyKS5wcm92aWRlZEluKSl7dmFyIG89e3Rva2VuOnIsZmxhZ3M6ZS5mbGFnc3wobj80MDk2OjApLGRlcHM6ZnIoZS5kZXBzKSx2YWx1ZTplLnZhbHVlLGluZGV4OnQucHJvdmlkZXJzLmxlbmd0aH07dC5wcm92aWRlcnMucHVzaChvKSx0LnByb3ZpZGVyc0J5S2V5W1FuKHIpXT1vfX0pKX19KHQ9dC5mYWN0b3J5KChmdW5jdGlvbigpe3JldHVybiBxbn0pKSksdCk6dH0ocikpfXZhciBUYT1uZXcgTWFwLFBhPW5ldyBNYXAsa2E9bmV3IE1hcDtmdW5jdGlvbiBBYSh0KXt2YXIgZTtUYS5zZXQodC50b2tlbix0KSwiZnVuY3Rpb24iPT10eXBlb2YgdC50b2tlbiYmKGU9Z3QodC50b2tlbikpJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5wcm92aWRlZEluJiZQYS5zZXQodC50b2tlbix0KX1mdW5jdGlvbiBJYSh0LGUpe3ZhciBuPWRyKGUudmlld0RlZkZhY3RvcnkpLHI9ZHIobi5ub2Rlc1swXS5lbGVtZW50LmNvbXBvbmVudFZpZXcpO2thLnNldCh0LHIpfWZ1bmN0aW9uIFJhKCl7VGEuY2xlYXIoKSxQYS5jbGVhcigpLGthLmNsZWFyKCl9ZnVuY3Rpb24gTWEodCl7aWYoMD09PVRhLnNpemUpcmV0dXJuIHQ7dmFyIGU9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdLG49bnVsbCxyPTA7cjx0Lm5vZGVzLmxlbmd0aDtyKyspe3ZhciBvPXQubm9kZXNbcl07MSZvLmZsYWdzJiYobj1vKSxuJiYzODQwJm8uZmxhZ3MmJlRhLmhhcyhvLnByb3ZpZGVyLnRva2VuKSYmKGUucHVzaChuLm5vZGVJbmRleCksbj1udWxsKX1yZXR1cm4gZX0odCk7aWYoMD09PWUubGVuZ3RoKXJldHVybiB0O3Q9dC5mYWN0b3J5KChmdW5jdGlvbigpe3JldHVybiBxbn0pKTtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKylyKHQsZVtuXSk7cmV0dXJuIHQ7ZnVuY3Rpb24gcih0LGUpe2Zvcih2YXIgbj1lKzE7bjx0Lm5vZGVzLmxlbmd0aDtuKyspe3ZhciByPXQubm9kZXNbbl07aWYoMSZyLmZsYWdzKXJldHVybjtpZigzODQwJnIuZmxhZ3Mpe3ZhciBvPXIucHJvdmlkZXIsaT1UYS5nZXQoby50b2tlbik7aSYmKHIuZmxhZ3M9LTM4NDEmci5mbGFnc3xpLmZsYWdzLG8uZGVwcz1mcihpLmRlcHMpLG8udmFsdWU9aS52YWx1ZSl9fX19ZnVuY3Rpb24gamEodCxlLG4scixvLGksYSx1LGwscyxjLGYsaCl7dmFyIHA9dC5kZWYubm9kZXNbZV07cmV0dXJuIHNhKHQscCxuLHIsbyxpLGEsdSxsLHMsYyxmLGgpLDIyNCZwLmZsYWdzP0JuKHQsZSkudmFsdWU6dm9pZCAwfWZ1bmN0aW9uIE5hKHQsZSxuLHIsbyxpLGEsdSxsLHMsYyxmLGgpe3ZhciBwPXQuZGVmLm5vZGVzW2VdO3JldHVybiBmYSh0LHAsbixyLG8saSxhLHUsbCxzLGMsZixoKSwyMjQmcC5mbGFncz9Cbih0LGUpLnZhbHVlOnZvaWQgMH1mdW5jdGlvbiBEYSh0KXtyZXR1cm4gdHUoRmEuZGV0ZWN0Q2hhbmdlcyxsYSxudWxsLFt0XSl9ZnVuY3Rpb24gVWEodCl7cmV0dXJuIHR1KEZhLmNoZWNrTm9DaGFuZ2VzLHVhLG51bGwsW3RdKX1mdW5jdGlvbiBMYSh0KXtyZXR1cm4gdHUoRmEuZGVzdHJveSxwYSxudWxsLFt0XSl9dmFyIFZhLEhhLHphLEZhPWZ1bmN0aW9uKHQpe3JldHVybiB0W3QuY3JlYXRlPTBdPSJjcmVhdGUiLHRbdC5kZXRlY3RDaGFuZ2VzPTFdPSJkZXRlY3RDaGFuZ2VzIix0W3QuY2hlY2tOb0NoYW5nZXM9Ml09ImNoZWNrTm9DaGFuZ2VzIix0W3QuZGVzdHJveT0zXT0iZGVzdHJveSIsdFt0LmhhbmRsZUV2ZW50PTRdPSJoYW5kbGVFdmVudCIsdH0oe30pO2Z1bmN0aW9uIEJhKHQsZSl7SGE9dCx6YT1lfWZ1bmN0aW9uIFphKHQsZSxuLHIpe3JldHVybiBCYSh0LGUpLHR1KEZhLmhhbmRsZUV2ZW50LHQuZGVmLmhhbmRsZUV2ZW50LG51bGwsW3QsZSxuLHJdKX1mdW5jdGlvbiBHYSh0LGUpe2lmKDEyOCZ0LnN0YXRlKXRocm93IFVuKEZhW1ZhXSk7cmV0dXJuIEJhKHQsS2EodCwwKSksdC5kZWYudXBkYXRlRGlyZWN0aXZlcygoZnVuY3Rpb24odCxuLHIpe2Zvcih2YXIgbz1bXSxpPTM7aTxhcmd1bWVudHMubGVuZ3RoO2krKylvW2ktM109YXJndW1lbnRzW2ldO3ZhciBhPXQuZGVmLm5vZGVzW25dO3JldHVybiAwPT09ZT9XYSh0LGEscixvKTpRYSh0LGEscixvKSwxNjM4NCZhLmZsYWdzJiZCYSh0LEthKHQsbikpLDIyNCZhLmZsYWdzP0JuKHQsYS5ub2RlSW5kZXgpLnZhbHVlOnZvaWQgMH0pLHQpfWZ1bmN0aW9uIHFhKHQsZSl7aWYoMTI4JnQuc3RhdGUpdGhyb3cgVW4oRmFbVmFdKTtyZXR1cm4gQmEodCxZYSh0LDApKSx0LmRlZi51cGRhdGVSZW5kZXJlcigoZnVuY3Rpb24odCxuLHIpe2Zvcih2YXIgbz1bXSxpPTM7aTxhcmd1bWVudHMubGVuZ3RoO2krKylvW2ktM109YXJndW1lbnRzW2ldO3ZhciBhPXQuZGVmLm5vZGVzW25dO3JldHVybiAwPT09ZT9XYSh0LGEscixvKTpRYSh0LGEscixvKSwzJmEuZmxhZ3MmJkJhKHQsWWEodCxuKSksMjI0JmEuZmxhZ3M/Qm4odCxhLm5vZGVJbmRleCkudmFsdWU6dm9pZCAwfSksdCl9ZnVuY3Rpb24gV2EodCxlLG4sbyl7aWYoc2EuYXBwbHkodm9pZCAwLE9iamVjdChyLl9fc3ByZWFkKShbdCxlLG5dLG8pKSl7dmFyIGk9MT09PW4/b1swXTpvO2lmKDE2Mzg0JmUuZmxhZ3Mpe2Zvcih2YXIgYT17fSx1PTA7dTxlLmJpbmRpbmdzLmxlbmd0aDt1Kyspe3ZhciBsPWUuYmluZGluZ3NbdV0scz1pW3VdOzgmbC5mbGFncyYmKGFbKHA9bC5ub25NaW5pZmllZE5hbWUsIm5nLXJlZmxlY3QtIitwLnJlcGxhY2UoL1skQF0vZywiXyIpLnJlcGxhY2UoVGUsKGZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO3JldHVybiItIit0WzFdLnRvTG93ZXJDYXNlKCl9KSkpXT1QZShzKSl9dmFyIGM9ZS5wYXJlbnQsZj16bih0LGMubm9kZUluZGV4KS5yZW5kZXJFbGVtZW50O2lmKGMuZWxlbWVudC5uYW1lKWZvcih2YXIgaCBpbiBhKW51bGwhPShzPWFbaF0pP3QucmVuZGVyZXIuc2V0QXR0cmlidXRlKGYsaCxzKTp0LnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZShmLGgpO2Vsc2UgdC5yZW5kZXJlci5zZXRWYWx1ZShmLCJiaW5kaW5ncz0iK0pTT04uc3RyaW5naWZ5KGEsbnVsbCwyKSl9fXZhciBwfWZ1bmN0aW9uIFFhKHQsZSxuLG8pe2ZhLmFwcGx5KHZvaWQgMCxPYmplY3Qoci5fX3NwcmVhZCkoW3QsZSxuXSxvKSl9ZnVuY3Rpb24gS2EodCxlKXtmb3IodmFyIG49ZTtuPHQuZGVmLm5vZGVzLmxlbmd0aDtuKyspe3ZhciByPXQuZGVmLm5vZGVzW25dO2lmKDE2Mzg0JnIuZmxhZ3MmJnIuYmluZGluZ3MmJnIuYmluZGluZ3MubGVuZ3RoKXJldHVybiBufXJldHVybiBudWxsfWZ1bmN0aW9uIFlhKHQsZSl7Zm9yKHZhciBuPWU7bjx0LmRlZi5ub2Rlcy5sZW5ndGg7bisrKXt2YXIgcj10LmRlZi5ub2Rlc1tuXTtpZigzJnIuZmxhZ3MmJnIuYmluZGluZ3MmJnIuYmluZGluZ3MubGVuZ3RoKXJldHVybiBufXJldHVybiBudWxsfXZhciBKYT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLnZpZXc9dCx0aGlzLm5vZGVJbmRleD1lLG51bGw9PWUmJih0aGlzLm5vZGVJbmRleD1lPTApLHRoaXMubm9kZURlZj10LmRlZi5ub2Rlc1tlXTtmb3IodmFyIG49dGhpcy5ub2RlRGVmLHI9dDtuJiYwPT0oMSZuLmZsYWdzKTspbj1uLnBhcmVudDtpZighbilmb3IoOyFuJiZyOyluPWFyKHIpLHI9ci5wYXJlbnQ7dGhpcy5lbERlZj1uLHRoaXMuZWxWaWV3PXJ9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiZWxPckNvbXBWaWV3Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHpuKHRoaXMuZWxWaWV3LHRoaXMuZWxEZWYubm9kZUluZGV4KS5jb21wb25lbnRWaWV3fHx0aGlzLnZpZXd9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJpbmplY3RvciIse2dldDpmdW5jdGlvbigpe3JldHVybiBCcih0aGlzLmVsVmlldyx0aGlzLmVsRGVmKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImNvbXBvbmVudCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVsT3JDb21wVmlldy5jb21wb25lbnR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJjb250ZXh0Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxPckNvbXBWaWV3LmNvbnRleHR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJwcm92aWRlclRva2VucyIse2dldDpmdW5jdGlvbigpe3ZhciB0PVtdO2lmKHRoaXMuZWxEZWYpZm9yKHZhciBlPXRoaXMuZWxEZWYubm9kZUluZGV4KzE7ZTw9dGhpcy5lbERlZi5ub2RlSW5kZXgrdGhpcy5lbERlZi5jaGlsZENvdW50O2UrKyl7dmFyIG49dGhpcy5lbFZpZXcuZGVmLm5vZGVzW2VdOzIwMjI0Jm4uZmxhZ3MmJnQucHVzaChuLnByb3ZpZGVyLnRva2VuKSxlKz1uLmNoaWxkQ291bnR9cmV0dXJuIHR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJyZWZlcmVuY2VzIix7Z2V0OmZ1bmN0aW9uKCl7dmFyIHQ9e307aWYodGhpcy5lbERlZil7WGEodGhpcy5lbFZpZXcsdGhpcy5lbERlZix0KTtmb3IodmFyIGU9dGhpcy5lbERlZi5ub2RlSW5kZXgrMTtlPD10aGlzLmVsRGVmLm5vZGVJbmRleCt0aGlzLmVsRGVmLmNoaWxkQ291bnQ7ZSsrKXt2YXIgbj10aGlzLmVsVmlldy5kZWYubm9kZXNbZV07MjAyMjQmbi5mbGFncyYmWGEodGhpcy5lbFZpZXcsbix0KSxlKz1uLmNoaWxkQ291bnR9fXJldHVybiB0fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiY29tcG9uZW50UmVuZGVyRWxlbWVudCIse2dldDpmdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKHQpe2Zvcig7dCYmIWxyKHQpOyl0PXQucGFyZW50O3JldHVybiB0LnBhcmVudD96bih0LnBhcmVudCxhcih0KS5ub2RlSW5kZXgpOm51bGx9KHRoaXMuZWxPckNvbXBWaWV3KTtyZXR1cm4gdD90LnJlbmRlckVsZW1lbnQ6dm9pZCAwfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicmVuZGVyTm9kZSIse2dldDpmdW5jdGlvbigpe3JldHVybiAyJnRoaXMubm9kZURlZi5mbGFncz91cih0aGlzLnZpZXcsdGhpcy5ub2RlRGVmKTp1cih0aGlzLmVsVmlldyx0aGlzLmVsRGVmKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5sb2dFcnJvcj1mdW5jdGlvbih0KXtmb3IodmFyIGUsbixvPVtdLGk9MTtpPGFyZ3VtZW50cy5sZW5ndGg7aSsrKW9baS0xXT1hcmd1bWVudHNbaV07MiZ0aGlzLm5vZGVEZWYuZmxhZ3M/KGU9dGhpcy52aWV3LmRlZixuPXRoaXMubm9kZURlZi5ub2RlSW5kZXgpOihlPXRoaXMuZWxWaWV3LmRlZixuPXRoaXMuZWxEZWYubm9kZUluZGV4KTt2YXIgYT0kYShlLG4pLHU9LTEsbD1mdW5jdGlvbigpe3ZhciBlO3JldHVybisrdT09PWE/KGU9dC5lcnJvcikuYmluZC5hcHBseShlLE9iamVjdChyLl9fc3ByZWFkKShbdF0sbykpOnFufTtlLmZhY3RvcnkobCksdTxhJiYodC5lcnJvcigiSWxsZWdhbCBzdGF0ZTogdGhlIFZpZXdEZWZpbml0aW9uRmFjdG9yeSBkaWQgbm90IGNhbGwgdGhlIGxvZ2dlciEiKSx0LmVycm9yLmFwcGx5KHQsT2JqZWN0KHIuX19zcHJlYWQpKG8pKSl9LHR9KCk7ZnVuY3Rpb24gJGEodCxlKXtmb3IodmFyIG49LTEscj0wO3I8PWU7cisrKTMmdC5ub2Rlc1tyXS5mbGFncyYmbisrO3JldHVybiBufWZ1bmN0aW9uIFhhKHQsZSxuKXtmb3IodmFyIHIgaW4gZS5yZWZlcmVuY2VzKW5bcl09V2kodCxlLGUucmVmZXJlbmNlc1tyXSl9ZnVuY3Rpb24gdHUodCxlLG4scil7dmFyIG8saSxhPVZhLHU9SGEsbD16YTt0cnl7VmE9dDt2YXIgcz1lLmFwcGx5KG4scik7cmV0dXJuIEhhPXUsemE9bCxWYT1hLHN9Y2F0Y2goYyl7aWYoS3QoYyl8fCFIYSl0aHJvdyBjO3Rocm93IG89YyxpPWV1KCksbyBpbnN0YW5jZW9mIEVycm9yfHwobz1uZXcgRXJyb3Ioby50b1N0cmluZygpKSksRG4obyxpKSxvfX1mdW5jdGlvbiBldSgpe3JldHVybiBIYT9uZXcgSmEoSGEsemEpOm51bGx9dmFyIG51PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmRlbGVnYXRlPXR9cmV0dXJuIHQucHJvdG90eXBlLmNyZWF0ZVJlbmRlcmVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBydSh0aGlzLmRlbGVnYXRlLmNyZWF0ZVJlbmRlcmVyKHQsZSkpfSx0LnByb3RvdHlwZS5iZWdpbj1mdW5jdGlvbigpe3RoaXMuZGVsZWdhdGUuYmVnaW4mJnRoaXMuZGVsZWdhdGUuYmVnaW4oKX0sdC5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7dGhpcy5kZWxlZ2F0ZS5lbmQmJnRoaXMuZGVsZWdhdGUuZW5kKCl9LHQucHJvdG90eXBlLndoZW5SZW5kZXJpbmdEb25lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGVsZWdhdGUud2hlblJlbmRlcmluZ0RvbmU/dGhpcy5kZWxlZ2F0ZS53aGVuUmVuZGVyaW5nRG9uZSgpOlByb21pc2UucmVzb2x2ZShudWxsKX0sdH0oKSxydT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5kZWxlZ2F0ZT10LHRoaXMuZGVidWdDb250ZXh0RmFjdG9yeT1ldSx0aGlzLmRhdGE9dGhpcy5kZWxlZ2F0ZS5kYXRhfXJldHVybiB0LnByb3RvdHlwZS5jcmVhdGVEZWJ1Z0NvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGVidWdDb250ZXh0RmFjdG9yeSh0KX0sdC5wcm90b3R5cGUuZGVzdHJveU5vZGU9ZnVuY3Rpb24odCl7dmFyIGU9QWkodCk7IWZ1bmN0aW9uKHQpe2tpLmRlbGV0ZSh0Lm5hdGl2ZU5vZGUpfShlKSxlIGluc3RhbmNlb2YgVGkmJihlLmxpc3RlbmVycy5sZW5ndGg9MCksdGhpcy5kZWxlZ2F0ZS5kZXN0cm95Tm9kZSYmdGhpcy5kZWxlZ2F0ZS5kZXN0cm95Tm9kZSh0KX0sdC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMuZGVsZWdhdGUuZGVzdHJveSgpfSx0LnByb3RvdHlwZS5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5kZWxlZ2F0ZS5jcmVhdGVFbGVtZW50KHQsZSkscj10aGlzLmNyZWF0ZURlYnVnQ29udGV4dChuKTtpZihyKXt2YXIgbz1uZXcgUGkobixudWxsLHIpO28ubmFtZT10LElpKG8pfXJldHVybiBufSx0LnByb3RvdHlwZS5jcmVhdGVDb21tZW50PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZGVsZWdhdGUuY3JlYXRlQ29tbWVudCh0KSxuPXRoaXMuY3JlYXRlRGVidWdDb250ZXh0KGUpO3JldHVybiBuJiZJaShuZXcgVGkoZSxudWxsLG4pKSxlfSx0LnByb3RvdHlwZS5jcmVhdGVUZXh0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZGVsZWdhdGUuY3JlYXRlVGV4dCh0KSxuPXRoaXMuY3JlYXRlRGVidWdDb250ZXh0KGUpO3JldHVybiBuJiZJaShuZXcgVGkoZSxudWxsLG4pKSxlfSx0LnByb3RvdHlwZS5hcHBlbmRDaGlsZD1mdW5jdGlvbih0LGUpe3ZhciBuPUFpKHQpLHI9QWkoZSk7biYmciYmbiBpbnN0YW5jZW9mIFBpJiZuLmFkZENoaWxkKHIpLHRoaXMuZGVsZWdhdGUuYXBwZW5kQ2hpbGQodCxlKX0sdC5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1BaSh0KSxvPUFpKGUpLGk9QWkobik7ciYmbyYmciBpbnN0YW5jZW9mIFBpJiZyLmluc2VydEJlZm9yZShpLG8pLHRoaXMuZGVsZWdhdGUuaW5zZXJ0QmVmb3JlKHQsZSxuKX0sdC5wcm90b3R5cGUucmVtb3ZlQ2hpbGQ9ZnVuY3Rpb24odCxlKXt2YXIgbj1BaSh0KSxyPUFpKGUpO24mJnImJm4gaW5zdGFuY2VvZiBQaSYmbi5yZW1vdmVDaGlsZChyKSx0aGlzLmRlbGVnYXRlLnJlbW92ZUNoaWxkKHQsZSl9LHQucHJvdG90eXBlLnNlbGVjdFJvb3RFbGVtZW50PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5kZWxlZ2F0ZS5zZWxlY3RSb290RWxlbWVudCh0LGUpLHI9ZXUoKTtyZXR1cm4gciYmSWkobmV3IFBpKG4sbnVsbCxyKSksbn0sdC5wcm90b3R5cGUuc2V0QXR0cmlidXRlPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvPUFpKHQpO28mJm8gaW5zdGFuY2VvZiBQaSYmKG8uYXR0cmlidXRlc1tyP3IrIjoiK2U6ZV09biksdGhpcy5kZWxlZ2F0ZS5zZXRBdHRyaWJ1dGUodCxlLG4scil9LHQucHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0ZT1mdW5jdGlvbih0LGUsbil7dmFyIHI9QWkodCk7ciYmciBpbnN0YW5jZW9mIFBpJiYoci5hdHRyaWJ1dGVzW24/bisiOiIrZTplXT1udWxsKSx0aGlzLmRlbGVnYXRlLnJlbW92ZUF0dHJpYnV0ZSh0LGUsbil9LHQucHJvdG90eXBlLmFkZENsYXNzPWZ1bmN0aW9uKHQsZSl7dmFyIG49QWkodCk7biYmbiBpbnN0YW5jZW9mIFBpJiYobi5jbGFzc2VzW2VdPSEwKSx0aGlzLmRlbGVnYXRlLmFkZENsYXNzKHQsZSl9LHQucHJvdG90eXBlLnJlbW92ZUNsYXNzPWZ1bmN0aW9uKHQsZSl7dmFyIG49QWkodCk7biYmbiBpbnN0YW5jZW9mIFBpJiYobi5jbGFzc2VzW2VdPSExKSx0aGlzLmRlbGVnYXRlLnJlbW92ZUNsYXNzKHQsZSl9LHQucHJvdG90eXBlLnNldFN0eWxlPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvPUFpKHQpO28mJm8gaW5zdGFuY2VvZiBQaSYmKG8uc3R5bGVzW2VdPW4pLHRoaXMuZGVsZWdhdGUuc2V0U3R5bGUodCxlLG4scil9LHQucHJvdG90eXBlLnJlbW92ZVN0eWxlPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1BaSh0KTtyJiZyIGluc3RhbmNlb2YgUGkmJihyLnN0eWxlc1tlXT1udWxsKSx0aGlzLmRlbGVnYXRlLnJlbW92ZVN0eWxlKHQsZSxuKX0sdC5wcm90b3R5cGUuc2V0UHJvcGVydHk9ZnVuY3Rpb24odCxlLG4pe3ZhciByPUFpKHQpO3ImJnIgaW5zdGFuY2VvZiBQaSYmKHIucHJvcGVydGllc1tlXT1uKSx0aGlzLmRlbGVnYXRlLnNldFByb3BlcnR5KHQsZSxuKX0sdC5wcm90b3R5cGUubGlzdGVuPWZ1bmN0aW9uKHQsZSxuKXtpZigic3RyaW5nIiE9dHlwZW9mIHQpe3ZhciByPUFpKHQpO3ImJnIubGlzdGVuZXJzLnB1c2gobmV3IE9pKGUsbikpfXJldHVybiB0aGlzLmRlbGVnYXRlLmxpc3Rlbih0LGUsbil9LHQucHJvdG90eXBlLnBhcmVudE5vZGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGVsZWdhdGUucGFyZW50Tm9kZSh0KX0sdC5wcm90b3R5cGUubmV4dFNpYmxpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGVsZWdhdGUubmV4dFNpYmxpbmcodCl9LHQucHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuZGVsZWdhdGUuc2V0VmFsdWUodCxlKX0sdH0oKTtmdQ=="
                },
                {
                    "key": "asdf?main.e3350ff4d88d534234ef.js?4?2?1",
                    "type": "binary",
                    "value": "base64:bmN0aW9uIG91KHQsZSxuKXtyZXR1cm4gbmV3IGl1KHQsZSxuKX12YXIgaXU9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scil7dmFyIG89dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBvLm1vZHVsZVR5cGU9ZSxvLl9ib290c3RyYXBDb21wb25lbnRzPW4sby5fbmdNb2R1bGVEZWZGYWN0b3J5PXIsb31yZXR1cm4gT2JqZWN0KHIuX19leHRlbmRzKShlLHQpLGUucHJvdG90eXBlLmNyZWF0ZT1mdW5jdGlvbih0KXshZnVuY3Rpb24oKXtpZighd2Epe3dhPSEwO3ZhciB0PWVlKCk/e3NldEN1cnJlbnROb2RlOkJhLGNyZWF0ZVJvb3RWaWV3OnhhLGNyZWF0ZUVtYmVkZGVkVmlldzpTYSxjcmVhdGVDb21wb25lbnRWaWV3OkVhLGNyZWF0ZU5nTW9kdWxlUmVmOk9hLG92ZXJyaWRlUHJvdmlkZXI6QWEsb3ZlcnJpZGVDb21wb25lbnRWaWV3OklhLGNsZWFyT3ZlcnJpZGVzOlJhLGNoZWNrQW5kVXBkYXRlVmlldzpEYSxjaGVja05vQ2hhbmdlc1ZpZXc6VWEsZGVzdHJveVZpZXc6TGEsY3JlYXRlRGVidWdDb250ZXh0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBKYSh0LGUpfSxoYW5kbGVFdmVudDpaYSx1cGRhdGVEaXJlY3RpdmVzOkdhLHVwZGF0ZVJlbmRlcmVyOnFhfTp7c2V0Q3VycmVudE5vZGU6ZnVuY3Rpb24oKXt9LGNyZWF0ZVJvb3RWaWV3OmJhLGNyZWF0ZUVtYmVkZGVkVmlldzplYSxjcmVhdGVDb21wb25lbnRWaWV3OnJhLGNyZWF0ZU5nTW9kdWxlUmVmOlFyLG92ZXJyaWRlUHJvdmlkZXI6cW4sb3ZlcnJpZGVDb21wb25lbnRWaWV3OnFuLGNsZWFyT3ZlcnJpZGVzOnFuLGNoZWNrQW5kVXBkYXRlVmlldzpsYSxjaGVja05vQ2hhbmdlc1ZpZXc6dWEsZGVzdHJveVZpZXc6cGEsY3JlYXRlRGVidWdDb250ZXh0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBKYSh0LGUpfSxoYW5kbGVFdmVudDpmdW5jdGlvbih0LGUsbixyKXtyZXR1cm4gdC5kZWYuaGFuZGxlRXZlbnQodCxlLG4scil9LHVwZGF0ZURpcmVjdGl2ZXM6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5kZWYudXBkYXRlRGlyZWN0aXZlcygwPT09ZT9qYTpOYSx0KX0sdXBkYXRlUmVuZGVyZXI6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5kZWYudXBkYXRlUmVuZGVyZXIoMD09PWU/amE6TmEsdCl9fTtHbi5zZXRDdXJyZW50Tm9kZT10LnNldEN1cnJlbnROb2RlLEduLmNyZWF0ZVJvb3RWaWV3PXQuY3JlYXRlUm9vdFZpZXcsR24uY3JlYXRlRW1iZWRkZWRWaWV3PXQuY3JlYXRlRW1iZWRkZWRWaWV3LEduLmNyZWF0ZUNvbXBvbmVudFZpZXc9dC5jcmVhdGVDb21wb25lbnRWaWV3LEduLmNyZWF0ZU5nTW9kdWxlUmVmPXQuY3JlYXRlTmdNb2R1bGVSZWYsR24ub3ZlcnJpZGVQcm92aWRlcj10Lm92ZXJyaWRlUHJvdmlkZXIsR24ub3ZlcnJpZGVDb21wb25lbnRWaWV3PXQub3ZlcnJpZGVDb21wb25lbnRWaWV3LEduLmNsZWFyT3ZlcnJpZGVzPXQuY2xlYXJPdmVycmlkZXMsR24uY2hlY2tBbmRVcGRhdGVWaWV3PXQuY2hlY2tBbmRVcGRhdGVWaWV3LEduLmNoZWNrTm9DaGFuZ2VzVmlldz10LmNoZWNrTm9DaGFuZ2VzVmlldyxHbi5kZXN0cm95Vmlldz10LmRlc3Ryb3lWaWV3LEduLnJlc29sdmVEZXA9aG8sR24uY3JlYXRlRGVidWdDb250ZXh0PXQuY3JlYXRlRGVidWdDb250ZXh0LEduLmhhbmRsZUV2ZW50PXQuaGFuZGxlRXZlbnQsR24udXBkYXRlRGlyZWN0aXZlcz10LnVwZGF0ZURpcmVjdGl2ZXMsR24udXBkYXRlUmVuZGVyZXI9dC51cGRhdGVSZW5kZXJlcixHbi5kaXJ0eVBhcmVudFF1ZXJpZXM9Wml9fSgpO3ZhciBlPWZ1bmN0aW9uKHQpe3ZhciBlPUFycmF5LmZyb20odC5wcm92aWRlcnMpLG49QXJyYXkuZnJvbSh0Lm1vZHVsZXMpLHI9e307Zm9yKHZhciBvIGluIHQucHJvdmlkZXJzQnlLZXkpcltvXT10LnByb3ZpZGVyc0J5S2V5W29dO3JldHVybntmYWN0b3J5OnQuZmFjdG9yeSxpc1Jvb3Q6dC5pc1Jvb3QscHJvdmlkZXJzOmUsbW9kdWxlczpuLHByb3ZpZGVyc0J5S2V5OnJ9fShkcih0aGlzLl9uZ01vZHVsZURlZkZhY3RvcnkpKTtyZXR1cm4gR24uY3JlYXRlTmdNb2R1bGVSZWYodGhpcy5tb2R1bGVUeXBlLHR8fE1lLk5VTEwsdGhpcy5fYm9vdHN0cmFwQ29tcG9uZW50cyxlKX0sZX0oenQpLGF1PWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7fX0oKSx1dT1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGl0bGU9InRlc3QifX0oKSxsdT1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe319KCksc3U9bmV3IFR0KCJMb2NhdGlvbiBJbml0aWFsaXplZCIpLGN1PWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7fX0oKSxmdT1uZXcgVHQoImFwcEJhc2VIcmVmIiksaHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsbil7dmFyIHI9dGhpczt0aGlzLl9zdWJqZWN0PW5ldyBPbyx0aGlzLl91cmxDaGFuZ2VMaXN0ZW5lcnM9W10sdGhpcy5fcGxhdGZvcm1TdHJhdGVneT10O3ZhciBvPXRoaXMuX3BsYXRmb3JtU3RyYXRlZ3kuZ2V0QmFzZUhyZWYoKTt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uPW4sdGhpcy5fYmFzZUhyZWY9ZS5zdHJpcFRyYWlsaW5nU2xhc2gocHUobykpLHRoaXMuX3BsYXRmb3JtU3RyYXRlZ3kub25Qb3BTdGF0ZSgoZnVuY3Rpb24odCl7ci5fc3ViamVjdC5lbWl0KHt1cmw6ci5wYXRoKCEwKSxwb3A6ITAsc3RhdGU6dC5zdGF0ZSx0eXBlOnQudHlwZX0pfSkpfXZhciBlO3JldHVybiBlPXQsdC5wcm90b3R5cGUucGF0aD1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9ITEpLHRoaXMubm9ybWFsaXplKHRoaXMuX3BsYXRmb3JtU3RyYXRlZ3kucGF0aCh0KSl9LHQucHJvdG90eXBlLmdldFN0YXRlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BsYXRmb3JtTG9jYXRpb24uZ2V0U3RhdGUoKX0sdC5wcm90b3R5cGUuaXNDdXJyZW50UGF0aEVxdWFsVG89ZnVuY3Rpb24odCxuKXtyZXR1cm4gdm9pZCAwPT09biYmKG49IiIpLHRoaXMucGF0aCgpPT10aGlzLm5vcm1hbGl6ZSh0K2Uubm9ybWFsaXplUXVlcnlQYXJhbXMobikpfSx0LnByb3RvdHlwZS5ub3JtYWxpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGUuc3RyaXBUcmFpbGluZ1NsYXNoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQmJmUuc3RhcnRzV2l0aCh0KT9lLnN1YnN0cmluZyh0Lmxlbmd0aCk6ZX0odGhpcy5fYmFzZUhyZWYscHUodCkpKX0sdC5wcm90b3R5cGUucHJlcGFyZUV4dGVybmFsVXJsPWZ1bmN0aW9uKHQpe3JldHVybiB0JiYiLyIhPT10WzBdJiYodD0iLyIrdCksdGhpcy5fcGxhdGZvcm1TdHJhdGVneS5wcmVwYXJlRXh0ZXJuYWxVcmwodCl9LHQucHJvdG90eXBlLmdvPWZ1bmN0aW9uKHQsbixyKXt2b2lkIDA9PT1uJiYobj0iIiksdm9pZCAwPT09ciYmKHI9bnVsbCksdGhpcy5fcGxhdGZvcm1TdHJhdGVneS5wdXNoU3RhdGUociwiIix0LG4pLHRoaXMuX25vdGlmeVVybENoYW5nZUxpc3RlbmVycyh0aGlzLnByZXBhcmVFeHRlcm5hbFVybCh0K2Uubm9ybWFsaXplUXVlcnlQYXJhbXMobikpLHIpfSx0LnByb3RvdHlwZS5yZXBsYWNlU3RhdGU9ZnVuY3Rpb24odCxuLHIpe3ZvaWQgMD09PW4mJihuPSIiKSx2b2lkIDA9PT1yJiYocj1udWxsKSx0aGlzLl9wbGF0Zm9ybVN0cmF0ZWd5LnJlcGxhY2VTdGF0ZShyLCIiLHQsbiksdGhpcy5fbm90aWZ5VXJsQ2hhbmdlTGlzdGVuZXJzKHRoaXMucHJlcGFyZUV4dGVybmFsVXJsKHQrZS5ub3JtYWxpemVRdWVyeVBhcmFtcyhuKSkscil9LHQucHJvdG90eXBlLmZvcndhcmQ9ZnVuY3Rpb24oKXt0aGlzLl9wbGF0Zm9ybVN0cmF0ZWd5LmZvcndhcmQoKX0sdC5wcm90b3R5cGUuYmFjaz1mdW5jdGlvbigpe3RoaXMuX3BsYXRmb3JtU3RyYXRlZ3kuYmFjaygpfSx0LnByb3RvdHlwZS5vblVybENoYW5nZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuX3VybENoYW5nZUxpc3RlbmVycy5wdXNoKHQpLHRoaXMuc3Vic2NyaWJlKChmdW5jdGlvbih0KXtlLl9ub3RpZnlVcmxDaGFuZ2VMaXN0ZW5lcnModC51cmwsdC5zdGF0ZSl9KSl9LHQucHJvdG90eXBlLl9ub3RpZnlVcmxDaGFuZ2VMaXN0ZW5lcnM9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT10JiYodD0iIiksdGhpcy5fdXJsQ2hhbmdlTGlzdGVuZXJzLmZvckVhY2goKGZ1bmN0aW9uKG4pe3JldHVybiBuKHQsZSl9KSl9LHQucHJvdG90eXBlLnN1YnNjcmliZT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRoaXMuX3N1YmplY3Quc3Vic2NyaWJlKHtuZXh0OnQsZXJyb3I6ZSxjb21wbGV0ZTpufSl9LHQubm9ybWFsaXplUXVlcnlQYXJhbXM9ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiI/IiE9PXRbMF0/Ij8iK3Q6dH0sdC5qb2luV2l0aFNsYXNoPWZ1bmN0aW9uKHQsZSl7aWYoMD09dC5sZW5ndGgpcmV0dXJuIGU7aWYoMD09ZS5sZW5ndGgpcmV0dXJuIHQ7dmFyIG49MDtyZXR1cm4gdC5lbmRzV2l0aCgiLyIpJiZuKyssZS5zdGFydHNXaXRoKCIvIikmJm4rKywyPT1uP3QrZS5zdWJzdHJpbmcoMSk6MT09bj90K2U6dCsiLyIrZX0sdC5zdHJpcFRyYWlsaW5nU2xhc2g9ZnVuY3Rpb24odCl7dmFyIGU9dC5tYXRjaCgvI3xcP3wkLyksbj1lJiZlLmluZGV4fHx0Lmxlbmd0aDtyZXR1cm4gdC5zbGljZSgwLG4tKCIvIj09PXRbbi0xXT8xOjApKSt0LnNsaWNlKG4pfSx0fSgpO2Z1bmN0aW9uIHB1KHQpe3JldHVybiB0LnJlcGxhY2UoL1wvaW5kZXguaHRtbCQvLCIiKX12YXIgZHU9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3ZhciByPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gci5fcGxhdGZvcm1Mb2NhdGlvbj1lLHIuX2Jhc2VIcmVmPSIiLG51bGwhPW4mJihyLl9iYXNlSHJlZj1uKSxyfXJldHVybiBPYmplY3Qoci5fX2V4dGVuZHMpKGUsdCksZS5wcm90b3R5cGUub25Qb3BTdGF0ZT1mdW5jdGlvbih0KXt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLm9uUG9wU3RhdGUodCksdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5vbkhhc2hDaGFuZ2UodCl9LGUucHJvdG90eXBlLmdldEJhc2VIcmVmPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Jhc2VIcmVmfSxlLnByb3RvdHlwZS5wYXRoPWZ1bmN0aW9uKHQpe3ZvaWQgMD09PXQmJih0PSExKTt2YXIgZT10aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmhhc2g7cmV0dXJuIG51bGw9PWUmJihlPSIjIiksZS5sZW5ndGg+MD9lLnN1YnN0cmluZygxKTplfSxlLnByb3RvdHlwZS5wcmVwYXJlRXh0ZXJuYWxVcmw9ZnVuY3Rpb24odCl7dmFyIGU9aHUuam9pbldpdGhTbGFzaCh0aGlzLl9iYXNlSHJlZix0KTtyZXR1cm4gZS5sZW5ndGg+MD8iIyIrZTplfSxlLnByb3RvdHlwZS5wdXNoU3RhdGU9ZnVuY3Rpb24odCxlLG4scil7dmFyIG89dGhpcy5wcmVwYXJlRXh0ZXJuYWxVcmwobitodS5ub3JtYWxpemVRdWVyeVBhcmFtcyhyKSk7MD09by5sZW5ndGgmJihvPXRoaXMuX3BsYXRmb3JtTG9jYXRpb24ucGF0aG5hbWUpLHRoaXMuX3BsYXRmb3JtTG9jYXRpb24ucHVzaFN0YXRlKHQsZSxvKX0sZS5wcm90b3R5cGUucmVwbGFjZVN0YXRlPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvPXRoaXMucHJlcGFyZUV4dGVybmFsVXJsKG4raHUubm9ybWFsaXplUXVlcnlQYXJhbXMocikpOzA9PW8ubGVuZ3RoJiYobz10aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLnBhdGhuYW1lKSx0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLnJlcGxhY2VTdGF0ZSh0LGUsbyl9LGUucHJvdG90eXBlLmZvcndhcmQ9ZnVuY3Rpb24oKXt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmZvcndhcmQoKX0sZS5wcm90b3R5cGUuYmFjaz1mdW5jdGlvbigpe3RoaXMuX3BsYXRmb3JtTG9jYXRpb24uYmFjaygpfSxlfShjdSksZ3U9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3ZhciByPXQuY2FsbCh0aGlzKXx8dGhpcztpZihyLl9wbGF0Zm9ybUxvY2F0aW9uPWUsbnVsbD09biYmKG49ci5fcGxhdGZvcm1Mb2NhdGlvbi5nZXRCYXNlSHJlZkZyb21ET00oKSksbnVsbD09bil0aHJvdyBuZXcgRXJyb3IoIk5vIGJhc2UgaHJlZiBzZXQuIFBsZWFzZSBwcm92aWRlIGEgdmFsdWUgZm9yIHRoZSBBUFBfQkFTRV9IUkVGIHRva2VuIG9yIGFkZCBhIGJhc2UgZWxlbWVudCB0byB0aGUgZG9jdW1lbnQuIik7cmV0dXJuIHIuX2Jhc2VIcmVmPW4scn1yZXR1cm4gT2JqZWN0KHIuX19leHRlbmRzKShlLHQpLGUucHJvdG90eXBlLm9uUG9wU3RhdGU9ZnVuY3Rpb24odCl7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5vblBvcFN0YXRlKHQpLHRoaXMuX3BsYXRmb3JtTG9jYXRpb24ub25IYXNoQ2hhbmdlKHQpfSxlLnByb3RvdHlwZS5nZXRCYXNlSHJlZj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9iYXNlSHJlZn0sZS5wcm90b3R5cGUucHJlcGFyZUV4dGVybmFsVXJsPWZ1bmN0aW9uKHQpe3JldHVybiBodS5qb2luV2l0aFNsYXNoKHRoaXMuX2Jhc2VIcmVmLHQpfSxlLnByb3RvdHlwZS5wYXRoPWZ1bmN0aW9uKHQpe3ZvaWQgMD09PXQmJih0PSExKTt2YXIgZT10aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLnBhdGhuYW1lK2h1Lm5vcm1hbGl6ZVF1ZXJ5UGFyYW1zKHRoaXMuX3BsYXRmb3JtTG9jYXRpb24uc2VhcmNoKSxuPXRoaXMuX3BsYXRmb3JtTG9jYXRpb24uaGFzaDtyZXR1cm4gbiYmdD8iIitlK246ZX0sZS5wcm90b3R5cGUucHVzaFN0YXRlPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvPXRoaXMucHJlcGFyZUV4dGVybmFsVXJsKG4raHUubm9ybWFsaXplUXVlcnlQYXJhbXMocikpO3RoaXMuX3BsYXRmb3JtTG9jYXRpb24ucHVzaFN0YXRlKHQsZSxvKX0sZS5wcm90b3R5cGUucmVwbGFjZVN0YXRlPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvPXRoaXMucHJlcGFyZUV4dGVybmFsVXJsKG4raHUubm9ybWFsaXplUXVlcnlQYXJhbXMocikpO3RoaXMuX3BsYXRmb3JtTG9jYXRpb24ucmVwbGFjZVN0YXRlKHQsZSxvKX0sZS5wcm90b3R5cGUuZm9yd2FyZD1mdW5jdGlvbigpe3RoaXMuX3BsYXRmb3JtTG9jYXRpb24uZm9yd2FyZCgpfSxlLnByb3RvdHlwZS5iYWNrPWZ1bmN0aW9uKCl7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5iYWNrKCl9LGV9KGN1KSx2dT1mdW5jdGlvbih0KXtyZXR1cm4gdFt0Llplcm89MF09Ilplcm8iLHRbdC5PbmU9MV09Ik9uZSIsdFt0LlR3bz0yXT0iVHdvIix0W3QuRmV3PTNdPSJGZXciLHRbdC5NYW55PTRdPSJNYW55Iix0W3QuT3RoZXI9NV09Ik90aGVyIix0fSh7fSkseXU9bmV3IFR0KCJVc2VWNFBsdXJhbHMiKSxtdT1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe319KCksX3U9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3ZhciByPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gci5sb2NhbGU9ZSxyLmRlcHJlY2F0ZWRQbHVyYWxGbj1uLHJ9cmV0dXJuIE9iamVjdChyLl9fZXh0ZW5kcykoZSx0KSxlLnByb3RvdHlwZS5nZXRQbHVyYWxDYXRlZ29yeT1mdW5jdGlvbih0LGUpe3N3aXRjaCh0aGlzLmRlcHJlY2F0ZWRQbHVyYWxGbj90aGlzLmRlcHJlY2F0ZWRQbHVyYWxGbihlfHx0aGlzLmxvY2FsZSx0KTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU9dC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL18vZywiLSIpLG49d29bZV07aWYobilyZXR1cm4gbjt2YXIgcj1lLnNwbGl0KCItIilbMF07aWYobj13b1tyXSlyZXR1cm4gbjtpZigiZW4iPT09cilyZXR1cm4gQ287dGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIGxvY2FsZSBkYXRhIGZvciB0aGUgbG9jYWxlICInK3QrJyIuJyl9KHQpW2JvLlBsdXJhbENhc2VdfShlfHx0aGlzLmxvY2FsZSkodCkpe2Nhc2UgdnUuWmVybzpyZXR1cm4iemVybyI7Y2FzZSB2dS5PbmU6cmV0dXJuIm9uZSI7Y2FzZSB2dS5Ud286cmV0dXJuInR3byI7Y2FzZSB2dS5GZXc6cmV0dXJuImZldyI7Y2FzZSB2dS5NYW55OnJldHVybiJtYW55IjtkZWZhdWx0OnJldHVybiJvdGhlciJ9fSxlfShtdSksd3U9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5fdmlld0NvbnRhaW5lclJlZj10LHRoaXMuX3RlbXBsYXRlUmVmPWUsdGhpcy5fY3JlYXRlZD0hMX1yZXR1cm4gdC5wcm90b3R5cGUuY3JlYXRlPWZ1bmN0aW9uKCl7dGhpcy5fY3JlYXRlZD0hMCx0aGlzLl92aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLl90ZW1wbGF0ZVJlZil9LHQucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLl9jcmVhdGVkPSExLHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY2xlYXIoKX0sdC5wcm90b3R5cGUuZW5mb3JjZVN0YXRlPWZ1bmN0aW9uKHQpe3QmJiF0aGlzLl9jcmVhdGVkP3RoaXMuY3JlYXRlKCk6IXQmJnRoaXMuX2NyZWF0ZWQmJnRoaXMuZGVzdHJveSgpfSx0fSgpLGJ1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuX2RlZmF1bHRVc2VkPSExLHRoaXMuX2Nhc2VDb3VudD0wLHRoaXMuX2xhc3RDYXNlQ2hlY2tJbmRleD0wLHRoaXMuX2xhc3RDYXNlc01hdGNoZWQ9ITF9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibmdTd2l0Y2giLHtzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fbmdTd2l0Y2g9dCwwPT09dGhpcy5fY2FzZUNvdW50JiZ0aGlzLl91cGRhdGVEZWZhdWx0Q2FzZXMoITApfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLl9hZGRDYXNlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Nhc2VDb3VudCsrfSx0LnByb3RvdHlwZS5fYWRkRGVmYXVsdD1mdW5jdGlvbih0KXt0aGlzLl9kZWZhdWx0Vmlld3N8fCh0aGlzLl9kZWZhdWx0Vmlld3M9W10pLHRoaXMuX2RlZmF1bHRWaWV3cy5wdXNoKHQpfSx0LnByb3RvdHlwZS5fbWF0Y2hDYXNlPWZ1bmN0aW9uKHQpe3ZhciBlPXQ9PXRoaXMuX25nU3dpdGNoO3JldHVybiB0aGlzLl9sYXN0Q2FzZXNNYXRjaGVkPXRoaXMuX2xhc3RDYXNlc01hdGNoZWR8fGUsdGhpcy5fbGFzdENhc2VDaGVja0luZGV4KyssdGhpcy5fbGFzdENhc2VDaGVja0luZGV4PT09dGhpcy5fY2FzZUNvdW50JiYodGhpcy5fdXBkYXRlRGVmYXVsdENhc2VzKCF0aGlzLl9sYXN0Q2FzZXNNYXRjaGVkKSx0aGlzLl9sYXN0Q2FzZUNoZWNrSW5kZXg9MCx0aGlzLl9sYXN0Q2FzZXNNYXRjaGVkPSExKSxlfSx0LnByb3RvdHlwZS5fdXBkYXRlRGVmYXVsdENhc2VzPWZ1bmN0aW9uKHQpe2lmKHRoaXMuX2RlZmF1bHRWaWV3cyYmdCE9PXRoaXMuX2RlZmF1bHRVc2VkKXt0aGlzLl9kZWZhdWx0VXNlZD10O2Zvcih2YXIgZT0wO2U8dGhpcy5fZGVmYXVsdFZpZXdzLmxlbmd0aDtlKyspdGhpcy5fZGVmYXVsdFZpZXdzW2VdLmVuZm9yY2VTdGF0ZSh0KX19LHR9KCkseHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLm5nU3dpdGNoPW4sbi5fYWRkQ2FzZSgpLHRoaXMuX3ZpZXc9bmV3IHd1KHQsZSl9cmV0dXJuIHQucHJvdG90eXBlLm5nRG9DaGVjaz1mdW5jdGlvbigpe3RoaXMuX3ZpZXcuZW5mb3JjZVN0YXRlKHRoaXMubmdTd2l0Y2guX21hdGNoQ2FzZSh0aGlzLm5nU3dpdGNoQ2FzZSkpfSx0fSgpLEN1PWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSxuKXtuLl9hZGREZWZhdWx0KG5ldyB3dSh0LGUpKX19KCksU3U9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXt9fSgpLEV1PW5ldyBUdCgiRG9jdW1lbnRUb2tlbiIpLE91PSJzZXJ2ZXIiLFR1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5uZ0luamVjdGFibGVEZWY9ZHQoe3Rva2VuOnQscHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpmdW5jdGlvbigpe3JldHVybiBuZXcgUHUoVXQoRXUpLHdpbmRvdyxVdCgkdCkpfX0pLHR9KCksUHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLmRvY3VtZW50PXQsdGhpcy53aW5kb3c9ZSx0aGlzLmVycm9ySGFuZGxlcj1uLHRoaXMub2Zmc2V0PWZ1bmN0aW9uKCl7cmV0dXJuWzAsMF19fXJldHVybiB0LnByb3RvdHlwZS5zZXRPZmZzZXQ9ZnVuY3Rpb24odCl7dGhpcy5vZmZzZXQ9QXJyYXkuaXNBcnJheSh0KT9mdW5jdGlvbigpe3JldHVybiB0fTp0fSx0LnByb3RvdHlwZS5nZXRTY3JvbGxQb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN1cHBvcnRTY3JvbGxSZXN0b3JhdGlvbigpP1t0aGlzLndpbmRvdy5zY3JvbGxYLHRoaXMud2luZG93LnNjcm9sbFldOlswLDBdfSx0LnByb3RvdHlwZS5zY3JvbGxUb1Bvc2l0aW9uPWZ1bmN0aW9uKHQpe3RoaXMuc3VwcG9ydFNjcm9sbFJlc3RvcmF0aW9uKCkmJnRoaXMud2luZG93LnNjcm9sbFRvKHRbMF0sdFsxXSl9LHQucHJvdG90eXBlLnNjcm9sbFRvQW5jaG9yPWZ1bmN0aW9uKHQpe2lmKHRoaXMuc3VwcG9ydFNjcm9sbFJlc3RvcmF0aW9uKCkpe3Q9dGhpcy53aW5kb3cuQ1NTJiZ0aGlzLndpbmRvdy5DU1MuZXNjYXBlP3RoaXMud2luZG93LkNTUy5lc2NhcGUodCk6dC5yZXBsYWNlKC8oXCJ8XCdcIHw6fFwufFxbfFxdfCx8PSkvZywiXFwkMSIpO3RyeXt2YXIgZT10aGlzLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiMiK3QpO2lmKGUpcmV0dXJuIHZvaWQgdGhpcy5zY3JvbGxUb0VsZW1lbnQoZSk7dmFyIG49dGhpcy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJbbmFtZT0nIit0KyInXSIpO2lmKG4pcmV0dXJuIHZvaWQgdGhpcy5zY3JvbGxUb0VsZW1lbnQobil9Y2F0Y2gocil7dGhpcy5lcnJvckhhbmRsZXIuaGFuZGxlRXJyb3Iocil9fX0sdC5wcm90b3R5cGUuc2V0SGlzdG9yeVNjcm9sbFJlc3RvcmF0aW9uPWZ1bmN0aW9uKHQpe2lmKHRoaXMuc3VwcG9ydFNjcm9sbFJlc3RvcmF0aW9uKCkpe3ZhciBlPXRoaXMud2luZG93Lmhpc3Rvcnk7ZSYmZS5zY3JvbGxSZXN0b3JhdGlvbiYmKGUuc2Nyb2xsUmVzdG9yYXRpb249dCl9fSx0LnByb3RvdHlwZS5zY3JvbGxUb0VsZW1lbnQ9ZnVuY3Rpb24odCl7dmFyIGU9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPWUubGVmdCt0aGlzLndpbmRvdy5wYWdlWE9mZnNldCxyPWUudG9wK3RoaXMud2luZG93LnBhZ2VZT2Zmc2V0LG89dGhpcy5vZmZzZXQoKTt0aGlzLndpbmRvdy5zY3JvbGxUbyhuLW9bMF0sci1vWzFdKX0sdC5wcm90b3R5cGUuc3VwcG9ydFNjcm9sbFJlc3RvcmF0aW9uPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiEhdGhpcy53aW5kb3cmJiEhdGhpcy53aW5kb3cuc2Nyb2xsVG99Y2F0Y2godCl7cmV0dXJuITF9fSx0fSgpLGt1PW5ldyB4KChmdW5jdGlvbih0KXtyZXR1cm4gdC5jb21wbGV0ZSgpfSkpO2Z1bmN0aW9uIEF1KHQpe3JldHVybiB0P2Z1bmN0aW9uKHQpe3JldHVybiBuZXcgeCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQuc2NoZWR1bGUoKGZ1bmN0aW9uKCl7cmV0dXJuIGUuY29tcGxldGUoKX0pKX0pKX0odCk6a3V9ZnVuY3Rpb24gSXUodCl7dmFyIGU9bmV3IHgoKGZ1bmN0aW9uKGUpe2UubmV4dCh0KSxlLmNvbXBsZXRlKCl9KSk7cmV0dXJuIGUuX2lzU2NhbGFyPSEwLGUudmFsdWU9dCxlfWZ1bmN0aW9uIFJ1KCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO3ZhciBuPXRbdC5sZW5ndGgtMV07c3dpdGNoKEEobik/dC5wb3AoKTpuPXZvaWQgMCx0Lmxlbmd0aCl7Y2FzZSAwOnJldHVybiBBdShuKTtjYXNlIDE6cmV0dXJuIG4/cSh0LG4pOkl1KHRbMF0pO2RlZmF1bHQ6cmV0dXJuIHEodCxuKX19dmFyIE11PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dmFyIG49dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBuLl92YWx1ZT1lLG59cmV0dXJuIHIuX19leHRlbmRzKGUsdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ2YWx1ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFZhbHVlKCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuX3N1YnNjcmliZT1mdW5jdGlvbihlKXt2YXIgbj10LnByb3RvdHlwZS5fc3Vic2NyaWJlLmNhbGwodGhpcyxlKTtyZXR1cm4gbiYmIW4uY2xvc2VkJiZlLm5leHQodGhpcy5fdmFsdWUpLG59LGUucHJvdG90eXBlLmdldFZhbHVlPWZ1bmN0aW9uKCl7aWYodGhpcy5oYXNFcnJvcil0aHJvdyB0aGlzLnRocm93bkVycm9yO2lmKHRoaXMuY2xvc2VkKXRocm93IG5ldyBFO3JldHVybiB0aGlzLl92YWx1ZX0sZS5wcm90b3R5cGUubmV4dD1mdW5jdGlvbihlKXt0LnByb3RvdHlwZS5uZXh0LmNhbGwodGhpcyx0aGlzLl92YWx1ZT1lKX0sZX0oUCk7ZnVuY3Rpb24ganUoKXtyZXR1cm4gRXJyb3IuY2FsbCh0aGlzKSx0aGlzLm1lc3NhZ2U9Im5vIGVsZW1lbnRzIGluIHNlcXVlbmNlIix0aGlzLm5hbWU9IkVtcHR5RXJyb3IiLHRoaXN9anUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKTt2YXIgTnU9anUsRHU9e307ZnVuY3Rpb24gVXUoKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07dmFyIG49bnVsbCxyPW51bGw7cmV0dXJuIEEodFt0Lmxlbmd0aC0xXSkmJihyPXQucG9wKCkpLCJmdW5jdGlvbiI9PXR5cGVvZiB0W3QubGVuZ3RoLTFdJiYobj10LnBvcCgpKSwxPT09dC5sZW5ndGgmJm8odFswXSkmJih0PXRbMF0pLHEodCxyKS5saWZ0KG5ldyBMdShuKSl9dmFyIEx1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLnJlc3VsdFNlbGVjdG9yPXR9cmV0dXJuIHQucHJvdG90eXBlLmNhbGw9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5zdWJzY3JpYmUobmV3IFZ1KHQsdGhpcy5yZXN1bHRTZWxlY3RvcikpfSx0fSgpLFZ1PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt2YXIgcj10LmNhbGwodGhpcyxlKXx8dGhpcztyZXR1cm4gci5yZXN1bHRTZWxlY3Rvcj1uLHIuYWN0aXZlPTAsci52YWx1ZXM9W10sci5vYnNlcnZhYmxlcz1bXSxyfXJldHVybiByLl9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9uZXh0PWZ1bmN0aW9uKHQpe3RoaXMudmFsdWVzLnB1c2goRHUpLHRoaXMub2JzZXJ2YWJsZXMucHVzaCh0KX0sZS5wcm90b3R5cGUuX2NvbXBsZXRlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vYnNlcnZhYmxlcyxlPXQubGVuZ3RoO2lmKDA9PT1lKXRoaXMuZGVzdGluYXRpb24uY29tcGxldGUoKTtlbHNle3RoaXMuYWN0aXZlPWUsdGhpcy50b1Jlc3BvbmQ9ZTtmb3IodmFyIG49MDtuPGU7bisrKXt2YXIgcj10W25dO3RoaXMuYWRkKHoodGhpcyxyLHIsbikpfX19LGUucHJvdG90eXBlLm5vdGlmeUNvbXBsZXRlPWZ1bmN0aW9uKHQpezA9PSh0aGlzLmFjdGl2ZS09MSkmJnRoaXMuZGVzdGluYXRpb24uY29tcGxldGUoKX0sZS5wcm90b3R5cGUubm90aWZ5TmV4dD1mdW5jdGlvbih0LGUsbixyLG8pe3ZhciBpPXRoaXMudmFsdWVzLGE9dGhpcy50b1Jlc3BvbmQ/aVtuXT09PUR1Py0tdGhpcy50b1Jlc3BvbmQ6dGhpcy50b1Jlc3BvbmQ6MDtpW25dPWUsMD09PWEmJih0aGlzLnJlc3VsdFNlbGVjdG9yP3RoaXMuX3RyeVJlc3VsdFNlbGVjdG9yKGkpOnRoaXMuZGVzdGluYXRpb24ubmV4dChpLnNsaWNlKCkpKX0sZS5wcm90b3R5cGUuX3RyeVJlc3VsdFNlbGVjdG9yPWZ1bmN0aW9uKHQpe3ZhciBlO3RyeXtlPXRoaXMucmVzdWx0U2VsZWN0b3IuYXBwbHkodGhpcyx0KX1jYXRjaChuKXtyZXR1cm4gdm9pZCB0aGlzLmRlc3RpbmF0aW9uLmVycm9yKG4pfXRoaXMuZGVzdGluYXRpb24ubmV4dChlKX0sZX0oRik7ZnVuY3Rpb24gSHUodCl7cmV0dXJuIG5ldyB4KChmdW5jdGlvbihlKXt2YXIgbjt0cnl7bj10KCl9Y2F0Y2gocil7cmV0dXJuIHZvaWQgZS5lcnJvcihyKX1yZXR1cm4obj9XKG4pOkF1KCkpLnN1YnNjcmliZShlKX0pKX1mdW5jdGlvbiB6dSgpe3JldHVybiAkKDEpfWZ1bmN0aW9uIEZ1KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBuLmxpZnQobmV3IEJ1KHQsZSkpfX12YXIgQnU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5wcmVkaWNhdGU9dCx0aGlzLnRoaXNBcmc9ZX1yZXR1cm4gdC5wcm90b3R5cGUuY2FsbD1mdW5jdGlvbih0LGUpe3JldHVybiBlLnN1YnNjcmliZShuZXcgWnUodCx0aGlzLnByZWRpY2F0ZSx0aGlzLnRoaXNBcmcpKX0sdH0oKSxadT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyKXt2YXIgbz10LmNhbGwodGhpcyxlKXx8dGhpcztyZXR1cm4gby5wcmVkaWNhdGU9bixvLnRoaXNBcmc9cixvLmNvdW50PTAsb31yZXR1cm4gci5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fbmV4dD1mdW5jdGlvbih0KXt2YXIgZTt0cnl7ZT10aGlzLnByZWRpY2F0ZS5jYWxsKHRoaXMudGhpc0FyZyx0LHRoaXMuY291bnQrKyl9Y2F0Y2gobil7cmV0dXJuIHZvaWQgdGhpcy5kZXN0aW5hdGlvbi5lcnJvcihuKX1lJiZ0aGlzLmRlc3RpbmF0aW9uLm5leHQodCl9LGV9KHYpO2Z1bmN0aW9uIEd1KCl7cmV0dXJuIEVycm9yLmNhbGwodGhpcyksdGhpcy5tZXNzYWdlPSJhcmd1bWVudCBvdXQgb2YgcmFuZ2UiLHRoaXMubmFtZT0iQXJndW1lbnRPdXRPZlJhbmdlRXJyb3IiLHRoaXN9R3UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKTt2YXIgcXU9R3U7ZnVuY3Rpb24gV3UodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiAwPT09dD9BdSgpOmUubGlmdChuZXcgUXUodCkpfX12YXIgUXU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe2lmKHRoaXMudG90YWw9dCx0aGlzLnRvdGFsPDApdGhyb3cgbmV3IHF1fXJldHVybiB0LnByb3RvdHlwZS5jYWxsPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuc3Vic2NyaWJlKG5ldyBLdSh0LHRoaXMudG90YWwpKX0sdH0oKSxLdT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dmFyIHI9dC5jYWxsKHRoaXMsZSl8fHRoaXM7cmV0dXJuIHIudG90YWw9bixyLnJpbmc9bmV3IEFycmF5LHIuY291bnQ9MCxyfXJldHVybiByLl9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9uZXh0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMucmluZyxuPXRoaXMudG90YWwscj10aGlzLmNvdW50Kys7ZS5sZW5ndGg8bj9lLnB1c2godCk6ZVtyJW5dPXR9LGUucHJvdG90eXBlLl9jb21wbGV0ZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZGVzdGluYXRpb24sZT10aGlzLmNvdW50O2lmKGU+MClmb3IodmFyIG49dGhpcy5jb3VudD49dGhpcy50b3RhbD90aGlzLnRvdGFsOnRoaXMuY291bnQscj10aGlzLnJpbmcsbz0wO288bjtvKyspe3ZhciBpPWUrKyVuO3QubmV4dChyW2ldKX10LmNvbXBsZXRlKCl9LGV9KHYpO2Z1bmN0aW9uIFl1KHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHIubGlmdChuZXcgSnUodCxlLG4pKX19dmFyIEp1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5uZXh0T3JPYnNlcnZlcj10LHRoaXMuZXJyb3I9ZSx0aGlzLmNvbXBsZXRlPW59cmV0dXJuIHQucHJvdG90eXBlLmNhbGw9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5zdWJzY3JpYmUobmV3ICR1KHQsdGhpcy5uZXh0T3JPYnNlcnZlcix0aGlzLmVycm9yLHRoaXMuY29tcGxldGUpKX0sdH0oKSwkdT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyLG8pe3ZhciBpPXQuY2FsbCh0aGlzLGUpfHx0aGlzO3JldHVybiBpLl90YXBOZXh0PV8saS5fdGFwRXJyb3I9XyxpLl90YXBDb21wbGV0ZT1fLGkuX3RhcEVycm9yPXJ8fF8saS5fdGFwQ29tcGxldGU9b3x8XyxhKG4pPyhpLl9jb250ZXh0PWksaS5fdGFwTmV4dD1uKTpuJiYoaS5fY29udGV4dD1uLGkuX3RhcE5leHQ9bi5uZXh0fHxfLGkuX3RhcEVycm9yPW4uZXJyb3J8fF8saS5fdGFwQ29tcGxldGU9bi5jb21wbGV0ZXx8XyksaX1yZXR1cm4gci5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fbmV4dD1mdW5jdGlvbih0KXt0cnl7dGhpcy5fdGFwTmV4dC5jYWxsKHRoaXMuX2NvbnRleHQsdCl9Y2F0Y2goZSl7cmV0dXJuIHZvaWQgdGhpcy5kZXN0aW5hdGlvbi5lcnJvcihlKX10aGlzLmRlc3RpbmF0aW9uLm5leHQodCl9LGUucHJvdG90eXBlLl9lcnJvcj1mdW5jdGlvbih0KXt0cnl7dGhpcy5fdGFwRXJyb3IuY2FsbCh0aGlzLl9jb250ZXh0LHQpfWNhdGNoKHQpe3JldHVybiB2b2lkIHRoaXMuZGVzdGluYXRpb24uZXJyb3IodCl9dGhpcy5kZXN0aW5hdGlvbi5lcnJvcih0KX0sZS5wcm90b3R5cGUuX2NvbXBsZXRlPWZ1bmN0aW9uKCl7dHJ5e3RoaXMuX3RhcENvbXBsZXRlLmNhbGwodGhpcy5fY29udGV4dCl9Y2F0Y2godCl7cmV0dXJuIHZvaWQgdGhpcy5kZXN0aW5hdGlvbi5lcnJvcih0KX1yZXR1cm4gdGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpfSxlfSh2KSxYdT1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9dGwpLFl1KHtoYXNWYWx1ZTohMSxuZXh0OmZ1bmN0aW9uKCl7dGhpcy5oYXNWYWx1ZT0hMH0sY29tcGxldGU6ZnVuY3Rpb24oKXtpZighdGhpcy5oYXNWYWx1ZSl0aHJvdyB0KCl9fSl9O2Z1bmN0aW9uIHRsKCl7cmV0dXJuIG5ldyBOdX1mdW5jdGlvbiBlbCh0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9bnVsbCksZnVuY3Rpb24oZSl7cmV0dXJuIGUubGlmdChuZXcgbmwodCkpfX12YXIgbmw9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuZGVmYXVsdFZhbHVlPXR9cmV0dXJuIHQucHJvdG90eXBlLmNhbGw9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5zdWJzY3JpYmUobmV3IHJsKHQsdGhpcy5kZWZhdWx0VmFsdWUpKX0sdH0oKSxybD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dmFyIHI9dC5jYWxsKHRoaXMsZSl8fHRoaXM7cmV0dXJuIHIuZGVmYXVsdFZhbHVlPW4sci5pc0VtcHR5PSEwLHJ9cmV0dXJuIHIuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX25leHQ9ZnVuY3Rpb24odCl7dGhpcy5pc0VtcHR5PSExLHRoaXMuZGVzdGluYXRpb24ubmV4dCh0KX0sZS5wcm90b3R5cGUuX2NvbXBsZXRlPWZ1bmN0aW9uKCl7dGhpcy5pc0VtcHR5JiZ0aGlzLmRlc3RpbmF0aW9uLm5leHQodGhpcy5kZWZhdWx0VmFsdWUpLHRoaXMuZGVzdGluYXRpb24uY29tcGxldGUoKX0sZX0odik7ZnVuY3Rpb24gb2wodCxlKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPj0yO3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gci5waXBlKHQ/RnUoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIHQoZSxuLHIpfSkpOkosV3UoMSksbj9lbChlKTpYdSgoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IE51fSkpKX19ZnVuY3Rpb24gaWwodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPW5ldyBhbCh0KSxyPWUubGlmdChuKTtyZXR1cm4gbi5jYXVnaHQ9cn19dmFyIGFsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLnNlbGVjdG9yPXR9cmV0dXJuIHQucHJvdG90eXBlLmNhbGw9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5zdWJzY3JpYmUobmV3IHVsKHQsdGhpcy5zZWxlY3Rvcix0aGlzLmNhdWdodCkpfSx0fSgpLHVsPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIpe3ZhciBvPXQuY2FsbCh0aGlzLGUpfHx0aGlzO3JldHVybiBvLnNlbGVjdG9yPW4sby5jYXVnaHQ9cixvfXJldHVybiByLl9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLmVycm9yPWZ1bmN0aW9uKGUpe2lmKCF0aGlzLmlzU3RvcHBlZCl7dmFyIG49dm9pZCAwO3RyeXtuPXRoaXMuc2VsZWN0b3IoZSx0aGlzLmNhdWdodCl9Y2F0Y2gobyl7cmV0dXJuIHZvaWQgdC5wcm90b3R5cGUuZXJyb3IuY2FsbCh0aGlzLG8pfXRoaXMuX3Vuc3Vic2NyaWJlQW5kUmVjeWNsZSgpO3ZhciByPW5ldyBJKHRoaXMsdm9pZCAwLHZvaWQgMCk7dGhpcy5hZGQocikseih0aGlzLG4sdm9pZCAwLHZvaWQgMCxyKX19LGV9KEYpO2Z1bmN0aW9uIGxsKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gMD09PXQ/QXUoKTplLmxpZnQobmV3IHNsKHQpKX19dmFyIHNsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXtpZih0aGlzLnRvdGFsPXQsdGhpcy50b3RhbDwwKXRocm93IG5ldyBxdX1yZXR1cm4gdC5wcm90b3R5cGUuY2FsbD1mdW5jdGlvbih0LGUpe3JldHVybiBlLnN1YnNjcmliZShuZXcgY2wodCx0aGlzLnRvdGFsKSl9LHR9KCksY2w9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3ZhciByPXQuY2FsbCh0aGlzLGUpfHx0aGlzO3JldHVybiByLnRvdGFsPW4sci5jb3VudD0wLHJ9cmV0dXJuIHIuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX25leHQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy50b3RhbCxuPSsrdGhpcy5jb3VudDtuPD1lJiYodGhpcy5kZXN0aW5hdGlvbi5uZXh0KHQpLG49PT1lJiYodGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpLHRoaXMudW5zdWJzY3JpYmUoKSkpfSxlfSh2KTtmdW5jdGlvbiBmbCh0LGUpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+PTI7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiByLnBpcGUodD9GdSgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gdChlLG4scil9KSk6SixsbCgxKSxuP2VsKGUpOlh1KChmdW5jdGlvbigpe3JldHVybiBuZXcgTnV9KSkpfX12YXIgaGw9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLnByZWRpY2F0ZT10LHRoaXMudGhpc0FyZz1lLHRoaXMuc291cmNlPW59cmV0dXJuIHQucHJvdG90eXBlLmNhbGw9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5zdWJzY3JpYmUobmV3IHBsKHQsdGhpcy5wcmVkaWNhdGUsdGhpcy50aGlzQXJnLHRoaXMuc291cmNlKSl9LHR9KCkscGw9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scixvKXt2YXIgaT10LmNhbGwodGhpcyxlKXx8dGhpcztyZXR1cm4gaS5wcmVkaWNhdGU9bixpLnRoaXNBcmc9cixpLnNvdXJjZT1vLGkuaW5kZXg9MCxpLnRoaXNBcmc9cnx8aSxpfXJldHVybiByLl9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLm5vdGlmeUNvbXBsZXRlPWZ1bmN0aW9uKHQpe3RoaXMuZGVzdGluYXRpb24ubmV4dCh0KSx0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCl9LGUucHJvdG90eXBlLl9uZXh0PWZ1bmN0aW9uKHQpe3ZhciBlPSExO3RyeXtlPXRoaXMucHJlZGljYXRlLmNhbGwodGhpcy50aGlzQXJnLHQsdGhpcy5pbmRleCsrLHRoaXMuc291cmNlKX1jYXRjaChuKXtyZXR1cm4gdm9pZCB0aGlzLmRlc3RpbmF0aW9uLmVycm9yKG4pfWV8fHRoaXMubm90aWZ5Q29tcGxldGUoITEpfSxlLnByb3RvdHlwZS5fY29tcGxldGU9ZnVuY3Rpb24oKXt0aGlzLm5vdGlmeUNvbXBsZXRlKCEwKX0sZX0odik7ZnVuY3Rpb24gZGwodCxlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZT9mdW5jdGlvbihuKXtyZXR1cm4gbi5waXBlKGRsKChmdW5jdGlvbihuLHIpe3JldHVybiBXKHQobixyKSkucGlwZShCKChmdW5jdGlvbih0LG8pe3JldHVybiBlKG4sdCxyLG8pfSkpKX0pKSl9OmZ1bmN0aW9uKGUpe3JldHVybiBlLmxpZnQobmV3IGdsKHQpKX19dmFyIGdsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLnByb2plY3Q9dH1yZXR1cm4gdC5wcm90b3R5cGUuY2FsbD1mdW5jdGlvbih0LGUpe3JldHVybiBlLnN1YnNjcmliZShuZXcgdmwodCx0aGlzLnByb2plY3QpKX0sdH0oKSx2bD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dmFyIHI9dC5jYWxsKHRoaXMsZSl8fHRoaXM7cmV0dXJuIHIucHJvamVjdD1uLHIuaW5kZXg9MCxyfXJldHVybiByLl9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9uZXh0PWZ1bmN0aW9uKHQpe3ZhciBlLG49dGhpcy5pbmRleCsrO3RyeXtlPXRoaXMucHJvamVjdCh0LG4pfWNhdGNoKHIpe3JldHVybiB2b2lkIHRoaXMuZGVzdGluYXRpb24uZXJyb3Iocil9dGhpcy5faW5uZXJTdWIoZSx0LG4pfSxlLnByb3RvdHlwZS5faW5uZXJTdWI9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXRoaXMuaW5uZXJTdWJzY3JpcHRpb247ciYmci51bnN1YnNjcmliZSgpO3ZhciBvPW5ldyBJKHRoaXMsdm9pZCAwLHZvaWQgMCk7dGhpcy5kZXN0aW5hdGlvbi5hZGQobyksdGhpcy5pbm5lclN1YnNjcmlwdGlvbj16KHRoaXMsdCxlLG4sbyl9LGUucHJvdG90eXBlLl9jb21wbGV0ZT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuaW5uZXJTdWJzY3JpcHRpb247ZSYmIWUuY2xvc2VkfHx0LnByb3RvdHlwZS5fY29tcGxldGUuY2FsbCh0aGlzKSx0aGlzLnVuc3Vic2NyaWJlKCl9LGUucHJvdG90eQ=="
                },
                {
                    "key": "asdf?main.e3350ff4d88d534234ef.js?4?3?1",
                    "type": "binary",
                    "value": "base64:cGUuX3Vuc3Vic2NyaWJlPWZ1bmN0aW9uKCl7dGhpcy5pbm5lclN1YnNjcmlwdGlvbj1udWxsfSxlLnByb3RvdHlwZS5ub3RpZnlDb21wbGV0ZT1mdW5jdGlvbihlKXt0aGlzLmRlc3RpbmF0aW9uLnJlbW92ZShlKSx0aGlzLmlubmVyU3Vic2NyaXB0aW9uPW51bGwsdGhpcy5pc1N0b3BwZWQmJnQucHJvdG90eXBlLl9jb21wbGV0ZS5jYWxsKHRoaXMpfSxlLnByb3RvdHlwZS5ub3RpZnlOZXh0PWZ1bmN0aW9uKHQsZSxuLHIsbyl7dGhpcy5kZXN0aW5hdGlvbi5uZXh0KGUpfSxlfShGKTtmdW5jdGlvbiB5bCgpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTtyZXR1cm4genUoKShSdS5hcHBseSh2b2lkIDAsdCkpfWZ1bmN0aW9uIG1sKHQsZSl7dmFyIG49ITE7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+PTImJihuPSEwKSxmdW5jdGlvbihyKXtyZXR1cm4gci5saWZ0KG5ldyBfbCh0LGUsbikpfX12YXIgX2w9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt2b2lkIDA9PT1uJiYobj0hMSksdGhpcy5hY2N1bXVsYXRvcj10LHRoaXMuc2VlZD1lLHRoaXMuaGFzU2VlZD1ufXJldHVybiB0LnByb3RvdHlwZS5jYWxsPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuc3Vic2NyaWJlKG5ldyB3bCh0LHRoaXMuYWNjdW11bGF0b3IsdGhpcy5zZWVkLHRoaXMuaGFzU2VlZCkpfSx0fSgpLHdsPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIsbyl7dmFyIGk9dC5jYWxsKHRoaXMsZSl8fHRoaXM7cmV0dXJuIGkuYWNjdW11bGF0b3I9bixpLl9zZWVkPXIsaS5oYXNTZWVkPW8saS5pbmRleD0wLGl9cmV0dXJuIHIuX19leHRlbmRzKGUsdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJzZWVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NlZWR9LHNldDpmdW5jdGlvbih0KXt0aGlzLmhhc1NlZWQ9ITAsdGhpcy5fc2VlZD10fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLl9uZXh0PWZ1bmN0aW9uKHQpe2lmKHRoaXMuaGFzU2VlZClyZXR1cm4gdGhpcy5fdHJ5TmV4dCh0KTt0aGlzLnNlZWQ9dCx0aGlzLmRlc3RpbmF0aW9uLm5leHQodCl9LGUucHJvdG90eXBlLl90cnlOZXh0PWZ1bmN0aW9uKHQpe3ZhciBlLG49dGhpcy5pbmRleCsrO3RyeXtlPXRoaXMuYWNjdW11bGF0b3IodGhpcy5zZWVkLHQsbil9Y2F0Y2gocil7dGhpcy5kZXN0aW5hdGlvbi5lcnJvcihyKX10aGlzLnNlZWQ9ZSx0aGlzLmRlc3RpbmF0aW9uLm5leHQoZSl9LGV9KHYpO2Z1bmN0aW9uIGJsKHQsZSl7cmV0dXJuIFEodCxlLDEpfXZhciB4bD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5jYWxsYmFjaz10fXJldHVybiB0LnByb3RvdHlwZS5jYWxsPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuc3Vic2NyaWJlKG5ldyBDbCh0LHRoaXMuY2FsbGJhY2spKX0sdH0oKSxDbD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dmFyIHI9dC5jYWxsKHRoaXMsZSl8fHRoaXM7cmV0dXJuIHIuYWRkKG5ldyBzKG4pKSxyfXJldHVybiByLl9fZXh0ZW5kcyhlLHQpLGV9KHYpLFNsPW51bGw7ZnVuY3Rpb24gRWwoKXtyZXR1cm4gU2x9dmFyIE9sLFRsPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmNhbGwodGhpcyl8fHRoaXM7ZS5fYW5pbWF0aW9uUHJlZml4PW51bGwsZS5fdHJhbnNpdGlvbkVuZD1udWxsO3RyeXt2YXIgbj1lLmNyZWF0ZUVsZW1lbnQoImRpdiIsZG9jdW1lbnQpO2lmKG51bGwhPWUuZ2V0U3R5bGUobiwiYW5pbWF0aW9uTmFtZSIpKWUuX2FuaW1hdGlvblByZWZpeD0iIjtlbHNlIGZvcih2YXIgcj1bIldlYmtpdCIsIk1veiIsIk8iLCJtcyJdLG89MDtvPHIubGVuZ3RoO28rKylpZihudWxsIT1lLmdldFN0eWxlKG4scltvXSsiQW5pbWF0aW9uTmFtZSIpKXtlLl9hbmltYXRpb25QcmVmaXg9Ii0iK3Jbb10udG9Mb3dlckNhc2UoKSsiLSI7YnJlYWt9dmFyIGk9e1dlYmtpdFRyYW5zaXRpb246IndlYmtpdFRyYW5zaXRpb25FbmQiLE1velRyYW5zaXRpb246InRyYW5zaXRpb25lbmQiLE9UcmFuc2l0aW9uOiJvVHJhbnNpdGlvbkVuZCBvdHJhbnNpdGlvbmVuZCIsdHJhbnNpdGlvbjoidHJhbnNpdGlvbmVuZCJ9O09iamVjdC5rZXlzKGkpLmZvckVhY2goKGZ1bmN0aW9uKHQpe251bGwhPWUuZ2V0U3R5bGUobix0KSYmKGUuX3RyYW5zaXRpb25FbmQ9aVt0XSl9KSl9Y2F0Y2goYSl7ZS5fYW5pbWF0aW9uUHJlZml4PW51bGwsZS5fdHJhbnNpdGlvbkVuZD1udWxsfXJldHVybiBlfXJldHVybiBPYmplY3Qoci5fX2V4dGVuZHMpKGUsdCksZS5wcm90b3R5cGUuZ2V0RGlzdHJpYnV0ZWROb2Rlcz1mdW5jdGlvbih0KXtyZXR1cm4gdC5nZXREaXN0cmlidXRlZE5vZGVzKCl9LGUucHJvdG90eXBlLnJlc29sdmVBbmRTZXRIcmVmPWZ1bmN0aW9uKHQsZSxuKXt0LmhyZWY9bnVsbD09bj9lOmUrIi8uLi8iK259LGUucHJvdG90eXBlLnN1cHBvcnRzRE9NRXZlbnRzPWZ1bmN0aW9uKCl7cmV0dXJuITB9LGUucHJvdG90eXBlLnN1cHBvcnRzTmF0aXZlU2hhZG93RE9NPWZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGRvY3VtZW50LmJvZHkuY3JlYXRlU2hhZG93Um9vdH0sZS5wcm90b3R5cGUuZ2V0QW5pbWF0aW9uUHJlZml4PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FuaW1hdGlvblByZWZpeD90aGlzLl9hbmltYXRpb25QcmVmaXg6IiJ9LGUucHJvdG90eXBlLmdldFRyYW5zaXRpb25FbmQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdHJhbnNpdGlvbkVuZD90aGlzLl90cmFuc2l0aW9uRW5kOiIifSxlLnByb3RvdHlwZS5zdXBwb3J0c0FuaW1hdGlvbj1mdW5jdGlvbigpe3JldHVybiBudWxsIT10aGlzLl9hbmltYXRpb25QcmVmaXgmJm51bGwhPXRoaXMuX3RyYW5zaXRpb25FbmR9LGV9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMucmVzb3VyY2VMb2FkZXJUeXBlPW51bGx9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiYXR0clRvUHJvcE1hcCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hdHRyVG9Qcm9wTWFwfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fYXR0clRvUHJvcE1hcD10fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHR9KCkpLFBsPXtjbGFzczoiY2xhc3NOYW1lIixpbm5lckh0bWw6ImlubmVySFRNTCIscmVhZG9ubHk6InJlYWRPbmx5Iix0YWJpbmRleDoidGFiSW5kZXgifSxrbD17IlxiIjoiQmFja3NwYWNlIiwiXHQiOiJUYWIiLCJ/IjoiRGVsZXRlIiwiGyI6IkVzY2FwZSIsRGVsOiJEZWxldGUiLEVzYzoiRXNjYXBlIixMZWZ0OiJBcnJvd0xlZnQiLFJpZ2h0OiJBcnJvd1JpZ2h0IixVcDoiQXJyb3dVcCIsRG93bjoiQXJyb3dEb3duIixNZW51OiJDb250ZXh0TWVudSIsU2Nyb2xsOiJTY3JvbGxMb2NrIixXaW46Ik9TIn0sQWw9e0E6IjEiLEI6IjIiLEM6IjMiLEQ6IjQiLEU6IjUiLEY6IjYiLEc6IjciLEg6IjgiLEk6IjkiLEo6IioiLEs6IisiLE06Ii0iLE46Ii4iLE86Ii8iLCJgIjoiMCIsIsKQIjoiTnVtTG9jayJ9LElsPWZ1bmN0aW9uKCl7aWYoT3QuTm9kZSlyZXR1cm4gT3QuTm9kZS5wcm90b3R5cGUuY29udGFpbnN8fGZ1bmN0aW9uKHQpe3JldHVybiEhKDE2JnRoaXMuY29tcGFyZURvY3VtZW50UG9zaXRpb24odCkpfX0oKSxSbD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gT2JqZWN0KHIuX19leHRlbmRzKShlLHQpLGUucHJvdG90eXBlLnBhcnNlPWZ1bmN0aW9uKHQpe3Rocm93IG5ldyBFcnJvcigicGFyc2Ugbm90IGltcGxlbWVudGVkIil9LGUubWFrZUN1cnJlbnQ9ZnVuY3Rpb24oKXt2YXIgdDt0PW5ldyBlLFNsfHwoU2w9dCl9LGUucHJvdG90eXBlLmhhc1Byb3BlcnR5PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUgaW4gdH0sZS5wcm90b3R5cGUuc2V0UHJvcGVydHk9ZnVuY3Rpb24odCxlLG4pe3RbZV09bn0sZS5wcm90b3R5cGUuZ2V0UHJvcGVydHk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdFtlXX0sZS5wcm90b3R5cGUuaW52b2tlPWZ1bmN0aW9uKHQsZSxuKXt2YXIgbzsobz10KVtlXS5hcHBseShvLE9iamVjdChyLl9fc3ByZWFkKShuKSl9LGUucHJvdG90eXBlLmxvZ0Vycm9yPWZ1bmN0aW9uKHQpe3dpbmRvdy5jb25zb2xlJiYoY29uc29sZS5lcnJvcj9jb25zb2xlLmVycm9yKHQpOmNvbnNvbGUubG9nKHQpKX0sZS5wcm90b3R5cGUubG9nPWZ1bmN0aW9uKHQpe3dpbmRvdy5jb25zb2xlJiZ3aW5kb3cuY29uc29sZS5sb2cmJndpbmRvdy5jb25zb2xlLmxvZyh0KX0sZS5wcm90b3R5cGUubG9nR3JvdXA9ZnVuY3Rpb24odCl7d2luZG93LmNvbnNvbGUmJndpbmRvdy5jb25zb2xlLmdyb3VwJiZ3aW5kb3cuY29uc29sZS5ncm91cCh0KX0sZS5wcm90b3R5cGUubG9nR3JvdXBFbmQ9ZnVuY3Rpb24oKXt3aW5kb3cuY29uc29sZSYmd2luZG93LmNvbnNvbGUuZ3JvdXBFbmQmJndpbmRvdy5jb25zb2xlLmdyb3VwRW5kKCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiYXR0clRvUHJvcE1hcCIse2dldDpmdW5jdGlvbigpe3JldHVybiBQbH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5jb250YWlucz1mdW5jdGlvbih0LGUpe3JldHVybiBJbC5jYWxsKHQsZSl9LGUucHJvdG90eXBlLnF1ZXJ5U2VsZWN0b3I9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5xdWVyeVNlbGVjdG9yKGUpfSxlLnByb3RvdHlwZS5xdWVyeVNlbGVjdG9yQWxsPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQucXVlcnlTZWxlY3RvckFsbChlKX0sZS5wcm90b3R5cGUub249ZnVuY3Rpb24odCxlLG4pe3QuYWRkRXZlbnRMaXN0ZW5lcihlLG4sITEpfSxlLnByb3RvdHlwZS5vbkFuZENhbmNlbD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHQuYWRkRXZlbnRMaXN0ZW5lcihlLG4sITEpLGZ1bmN0aW9uKCl7dC5yZW1vdmVFdmVudExpc3RlbmVyKGUsbiwhMSl9fSxlLnByb3RvdHlwZS5kaXNwYXRjaEV2ZW50PWZ1bmN0aW9uKHQsZSl7dC5kaXNwYXRjaEV2ZW50KGUpfSxlLnByb3RvdHlwZS5jcmVhdGVNb3VzZUV2ZW50PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2V0RGVmYXVsdERvY3VtZW50KCkuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnQiKTtyZXR1cm4gZS5pbml0RXZlbnQodCwhMCwhMCksZX0sZS5wcm90b3R5cGUuY3JlYXRlRXZlbnQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXREZWZhdWx0RG9jdW1lbnQoKS5jcmVhdGVFdmVudCgiRXZlbnQiKTtyZXR1cm4gZS5pbml0RXZlbnQodCwhMCwhMCksZX0sZS5wcm90b3R5cGUucHJldmVudERlZmF1bHQ9ZnVuY3Rpb24odCl7dC5wcmV2ZW50RGVmYXVsdCgpLHQucmV0dXJuVmFsdWU9ITF9LGUucHJvdG90eXBlLmlzUHJldmVudGVkPWZ1bmN0aW9uKHQpe3JldHVybiB0LmRlZmF1bHRQcmV2ZW50ZWR8fG51bGwhPXQucmV0dXJuVmFsdWUmJiF0LnJldHVyblZhbHVlfSxlLnByb3RvdHlwZS5nZXRJbm5lckhUTUw9ZnVuY3Rpb24odCl7cmV0dXJuIHQuaW5uZXJIVE1MfSxlLnByb3RvdHlwZS5nZXRUZW1wbGF0ZUNvbnRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuImNvbnRlbnQiaW4gdCYmdGhpcy5pc1RlbXBsYXRlRWxlbWVudCh0KT90LmNvbnRlbnQ6bnVsbH0sZS5wcm90b3R5cGUuZ2V0T3V0ZXJIVE1MPWZ1bmN0aW9uKHQpe3JldHVybiB0Lm91dGVySFRNTH0sZS5wcm90b3R5cGUubm9kZU5hbWU9ZnVuY3Rpb24odCl7cmV0dXJuIHQubm9kZU5hbWV9LGUucHJvdG90eXBlLm5vZGVWYWx1ZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5ub2RlVmFsdWV9LGUucHJvdG90eXBlLnR5cGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQudHlwZX0sZS5wcm90b3R5cGUuY29udGVudD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5oYXNQcm9wZXJ0eSh0LCJjb250ZW50Iik/dC5jb250ZW50OnR9LGUucHJvdG90eXBlLmZpcnN0Q2hpbGQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQuZmlyc3RDaGlsZH0sZS5wcm90b3R5cGUubmV4dFNpYmxpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIHQubmV4dFNpYmxpbmd9LGUucHJvdG90eXBlLnBhcmVudEVsZW1lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQucGFyZW50Tm9kZX0sZS5wcm90b3R5cGUuY2hpbGROb2Rlcz1mdW5jdGlvbih0KXtyZXR1cm4gdC5jaGlsZE5vZGVzfSxlLnByb3RvdHlwZS5jaGlsZE5vZGVzQXNMaXN0PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LmNoaWxkTm9kZXMsbj1uZXcgQXJyYXkoZS5sZW5ndGgpLHI9MDtyPGUubGVuZ3RoO3IrKyluW3JdPWVbcl07cmV0dXJuIG59LGUucHJvdG90eXBlLmNsZWFyTm9kZXM9ZnVuY3Rpb24odCl7Zm9yKDt0LmZpcnN0Q2hpbGQ7KXQucmVtb3ZlQ2hpbGQodC5maXJzdENoaWxkKX0sZS5wcm90b3R5cGUuYXBwZW5kQ2hpbGQ9ZnVuY3Rpb24odCxlKXt0LmFwcGVuZENoaWxkKGUpfSxlLnByb3RvdHlwZS5yZW1vdmVDaGlsZD1mdW5jdGlvbih0LGUpe3QucmVtb3ZlQ2hpbGQoZSl9LGUucHJvdG90eXBlLnJlcGxhY2VDaGlsZD1mdW5jdGlvbih0LGUsbil7dC5yZXBsYWNlQ2hpbGQoZSxuKX0sZS5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKHQpe3JldHVybiB0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSx0fSxlLnByb3RvdHlwZS5pbnNlcnRCZWZvcmU9ZnVuY3Rpb24odCxlLG4pe3QuaW5zZXJ0QmVmb3JlKG4sZSl9LGUucHJvdG90eXBlLmluc2VydEFsbEJlZm9yZT1mdW5jdGlvbih0LGUsbil7bi5mb3JFYWNoKChmdW5jdGlvbihuKXtyZXR1cm4gdC5pbnNlcnRCZWZvcmUobixlKX0pKX0sZS5wcm90b3R5cGUuaW5zZXJ0QWZ0ZXI9ZnVuY3Rpb24odCxlLG4pe3QuaW5zZXJ0QmVmb3JlKG4sZS5uZXh0U2libGluZyl9LGUucHJvdG90eXBlLnNldElubmVySFRNTD1mdW5jdGlvbih0LGUpe3QuaW5uZXJIVE1MPWV9LGUucHJvdG90eXBlLmdldFRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQudGV4dENvbnRlbnR9LGUucHJvdG90eXBlLnNldFRleHQ9ZnVuY3Rpb24odCxlKXt0LnRleHRDb250ZW50PWV9LGUucHJvdG90eXBlLmdldFZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybiB0LnZhbHVlfSxlLnByb3RvdHlwZS5zZXRWYWx1ZT1mdW5jdGlvbih0LGUpe3QudmFsdWU9ZX0sZS5wcm90b3R5cGUuZ2V0Q2hlY2tlZD1mdW5jdGlvbih0KXtyZXR1cm4gdC5jaGVja2VkfSxlLnByb3RvdHlwZS5zZXRDaGVja2VkPWZ1bmN0aW9uKHQsZSl7dC5jaGVja2VkPWV9LGUucHJvdG90eXBlLmNyZWF0ZUNvbW1lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZ2V0RGVmYXVsdERvY3VtZW50KCkuY3JlYXRlQ29tbWVudCh0KX0sZS5wcm90b3R5cGUuY3JlYXRlVGVtcGxhdGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXREZWZhdWx0RG9jdW1lbnQoKS5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpO3JldHVybiBlLmlubmVySFRNTD10LGV9LGUucHJvdG90eXBlLmNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4oZT1lfHx0aGlzLmdldERlZmF1bHREb2N1bWVudCgpKS5jcmVhdGVFbGVtZW50KHQpfSxlLnByb3RvdHlwZS5jcmVhdGVFbGVtZW50TlM9ZnVuY3Rpb24odCxlLG4pe3JldHVybihuPW58fHRoaXMuZ2V0RGVmYXVsdERvY3VtZW50KCkpLmNyZWF0ZUVsZW1lbnROUyh0LGUpfSxlLnByb3RvdHlwZS5jcmVhdGVUZXh0Tm9kZT1mdW5jdGlvbih0LGUpe3JldHVybihlPWV8fHRoaXMuZ2V0RGVmYXVsdERvY3VtZW50KCkpLmNyZWF0ZVRleHROb2RlKHQpfSxlLnByb3RvdHlwZS5jcmVhdGVTY3JpcHRUYWc9ZnVuY3Rpb24odCxlLG4pe3ZhciByPShuPW58fHRoaXMuZ2V0RGVmYXVsdERvY3VtZW50KCkpLmNyZWF0ZUVsZW1lbnQoIlNDUklQVCIpO3JldHVybiByLnNldEF0dHJpYnV0ZSh0LGUpLHJ9LGUucHJvdG90eXBlLmNyZWF0ZVN0eWxlRWxlbWVudD1mdW5jdGlvbih0LGUpe3ZhciBuPShlPWV8fHRoaXMuZ2V0RGVmYXVsdERvY3VtZW50KCkpLmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7cmV0dXJuIHRoaXMuYXBwZW5kQ2hpbGQobix0aGlzLmNyZWF0ZVRleHROb2RlKHQsZSkpLG59LGUucHJvdG90eXBlLmNyZWF0ZVNoYWRvd1Jvb3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHQuY3JlYXRlU2hhZG93Um9vdCgpfSxlLnByb3RvdHlwZS5nZXRTaGFkb3dSb290PWZ1bmN0aW9uKHQpe3JldHVybiB0LnNoYWRvd1Jvb3R9LGUucHJvdG90eXBlLmdldEhvc3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHQuaG9zdH0sZS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIHQuY2xvbmVOb2RlKCEwKX0sZS5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZT1mdW5jdGlvbih0LGUpe3JldHVybiB0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoZSl9LGUucHJvdG90eXBlLmdldEVsZW1lbnRzQnlUYWdOYW1lPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZSl9LGUucHJvdG90eXBlLmNsYXNzTGlzdD1mdW5jdGlvbih0KXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodC5jbGFzc0xpc3QsMCl9LGUucHJvdG90eXBlLmFkZENsYXNzPWZ1bmN0aW9uKHQsZSl7dC5jbGFzc0xpc3QuYWRkKGUpfSxlLnByb3RvdHlwZS5yZW1vdmVDbGFzcz1mdW5jdGlvbih0LGUpe3QuY2xhc3NMaXN0LnJlbW92ZShlKX0sZS5wcm90b3R5cGUuaGFzQ2xhc3M9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5jbGFzc0xpc3QuY29udGFpbnMoZSl9LGUucHJvdG90eXBlLnNldFN0eWxlPWZ1bmN0aW9uKHQsZSxuKXt0LnN0eWxlW2VdPW59LGUucHJvdG90eXBlLnJlbW92ZVN0eWxlPWZ1bmN0aW9uKHQsZSl7dC5zdHlsZVtlXT0iIn0sZS5wcm90b3R5cGUuZ2V0U3R5bGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5zdHlsZVtlXX0sZS5wcm90b3R5cGUuaGFzU3R5bGU9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXRoaXMuZ2V0U3R5bGUodCxlKXx8IiI7cmV0dXJuIG4/cj09bjpyLmxlbmd0aD4wfSxlLnByb3RvdHlwZS50YWdOYW1lPWZ1bmN0aW9uKHQpe3JldHVybiB0LnRhZ05hbWV9LGUucHJvdG90eXBlLmF0dHJpYnV0ZU1hcD1mdW5jdGlvbih0KXtmb3IodmFyIGU9bmV3IE1hcCxuPXQuYXR0cmlidXRlcyxyPTA7cjxuLmxlbmd0aDtyKyspe3ZhciBvPW4uaXRlbShyKTtlLnNldChvLm5hbWUsby52YWx1ZSl9cmV0dXJuIGV9LGUucHJvdG90eXBlLmhhc0F0dHJpYnV0ZT1mdW5jdGlvbih0LGUpe3JldHVybiB0Lmhhc0F0dHJpYnV0ZShlKX0sZS5wcm90b3R5cGUuaGFzQXR0cmlidXRlTlM9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0Lmhhc0F0dHJpYnV0ZU5TKGUsbil9LGUucHJvdG90eXBlLmdldEF0dHJpYnV0ZT1mdW5jdGlvbih0LGUpe3JldHVybiB0LmdldEF0dHJpYnV0ZShlKX0sZS5wcm90b3R5cGUuZ2V0QXR0cmlidXRlTlM9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0LmdldEF0dHJpYnV0ZU5TKGUsbil9LGUucHJvdG90eXBlLnNldEF0dHJpYnV0ZT1mdW5jdGlvbih0LGUsbil7dC5zZXRBdHRyaWJ1dGUoZSxuKX0sZS5wcm90b3R5cGUuc2V0QXR0cmlidXRlTlM9ZnVuY3Rpb24odCxlLG4scil7dC5zZXRBdHRyaWJ1dGVOUyhlLG4scil9LGUucHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0ZT1mdW5jdGlvbih0LGUpe3QucmVtb3ZlQXR0cmlidXRlKGUpfSxlLnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGVOUz1mdW5jdGlvbih0LGUsbil7dC5yZW1vdmVBdHRyaWJ1dGVOUyhlLG4pfSxlLnByb3RvdHlwZS50ZW1wbGF0ZUF3YXJlUm9vdD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pc1RlbXBsYXRlRWxlbWVudCh0KT90aGlzLmNvbnRlbnQodCk6dH0sZS5wcm90b3R5cGUuY3JlYXRlSHRtbERvY3VtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiZmFrZVRpdGxlIil9LGUucHJvdG90eXBlLmdldERlZmF1bHREb2N1bWVudD1mdW5jdGlvbigpe3JldHVybiBkb2N1bWVudH0sZS5wcm90b3R5cGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0PWZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX1jYXRjaChlKXtyZXR1cm57dG9wOjAsYm90dG9tOjAsbGVmdDowLHJpZ2h0OjAsd2lkdGg6MCxoZWlnaHQ6MH19fSxlLnByb3RvdHlwZS5nZXRUaXRsZT1mdW5jdGlvbih0KXtyZXR1cm4gdC50aXRsZX0sZS5wcm90b3R5cGUuc2V0VGl0bGU9ZnVuY3Rpb24odCxlKXt0LnRpdGxlPWV8fCIifSxlLnByb3RvdHlwZS5lbGVtZW50TWF0Y2hlcz1mdW5jdGlvbih0LGUpe3JldHVybiEhdGhpcy5pc0VsZW1lbnROb2RlKHQpJiYodC5tYXRjaGVzJiZ0Lm1hdGNoZXMoZSl8fHQubXNNYXRjaGVzU2VsZWN0b3ImJnQubXNNYXRjaGVzU2VsZWN0b3IoZSl8fHQud2Via2l0TWF0Y2hlc1NlbGVjdG9yJiZ0LndlYmtpdE1hdGNoZXNTZWxlY3RvcihlKSl9LGUucHJvdG90eXBlLmlzVGVtcGxhdGVFbGVtZW50PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmlzRWxlbWVudE5vZGUodCkmJiJURU1QTEFURSI9PT10Lm5vZGVOYW1lfSxlLnByb3RvdHlwZS5pc1RleHROb2RlPWZ1bmN0aW9uKHQpe3JldHVybiB0Lm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREV9LGUucHJvdG90eXBlLmlzQ29tbWVudE5vZGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQubm9kZVR5cGU9PT1Ob2RlLkNPTU1FTlRfTk9ERX0sZS5wcm90b3R5cGUuaXNFbGVtZW50Tm9kZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFfSxlLnByb3RvdHlwZS5oYXNTaGFkb3dSb290PWZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10LnNoYWRvd1Jvb3QmJnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudH0sZS5wcm90b3R5cGUuaXNTaGFkb3dSb290PWZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudH0sZS5wcm90b3R5cGUuaW1wb3J0SW50b0RvYz1mdW5jdGlvbih0KXtyZXR1cm4gZG9jdW1lbnQuaW1wb3J0Tm9kZSh0aGlzLnRlbXBsYXRlQXdhcmVSb290KHQpLCEwKX0sZS5wcm90b3R5cGUuYWRvcHROb2RlPWZ1bmN0aW9uKHQpe3JldHVybiBkb2N1bWVudC5hZG9wdE5vZGUodCl9LGUucHJvdG90eXBlLmdldEhyZWY9ZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0QXR0cmlidXRlKCJocmVmIil9LGUucHJvdG90eXBlLmdldEV2ZW50S2V5PWZ1bmN0aW9uKHQpe3ZhciBlPXQua2V5O2lmKG51bGw9PWUpe2lmKG51bGw9PShlPXQua2V5SWRlbnRpZmllcikpcmV0dXJuIlVuaWRlbnRpZmllZCI7ZS5zdGFydHNXaXRoKCJVKyIpJiYoZT1TdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KGUuc3Vic3RyaW5nKDIpLDE2KSksMz09PXQubG9jYXRpb24mJkFsLmhhc093blByb3BlcnR5KGUpJiYoZT1BbFtlXSkpfXJldHVybiBrbFtlXXx8ZX0sZS5wcm90b3R5cGUuZ2V0R2xvYmFsRXZlbnRUYXJnZXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4id2luZG93Ij09PWU/d2luZG93OiJkb2N1bWVudCI9PT1lP3Q6ImJvZHkiPT09ZT90LmJvZHk6bnVsbH0sZS5wcm90b3R5cGUuZ2V0SGlzdG9yeT1mdW5jdGlvbigpe3JldHVybiB3aW5kb3cuaGlzdG9yeX0sZS5wcm90b3R5cGUuZ2V0TG9jYXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93LmxvY2F0aW9ufSxlLnByb3RvdHlwZS5nZXRCYXNlSHJlZj1mdW5jdGlvbih0KXt2YXIgZSxuPU1sfHwoTWw9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiYmFzZSIpKT9NbC5nZXRBdHRyaWJ1dGUoImhyZWYiKTpudWxsO3JldHVybiBudWxsPT1uP251bGw6KGU9bixPbHx8KE9sPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSksT2wuc2V0QXR0cmlidXRlKCJocmVmIixlKSwiLyI9PT1PbC5wYXRobmFtZS5jaGFyQXQoMCk/T2wucGF0aG5hbWU6Ii8iK09sLnBhdGhuYW1lKX0sZS5wcm90b3R5cGUucmVzZXRCYXNlRWxlbWVudD1mdW5jdGlvbigpe01sPW51bGx9LGUucHJvdG90eXBlLmdldFVzZXJBZ2VudD1mdW5jdGlvbigpe3JldHVybiB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudH0sZS5wcm90b3R5cGUuc2V0RGF0YT1mdW5jdGlvbih0LGUsbil7dGhpcy5zZXRBdHRyaWJ1dGUodCwiZGF0YS0iK2Usbil9LGUucHJvdG90eXBlLmdldERhdGE9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5nZXRBdHRyaWJ1dGUodCwiZGF0YS0iK2UpfSxlLnByb3RvdHlwZS5nZXRDb21wdXRlZFN0eWxlPWZ1bmN0aW9uKHQpe3JldHVybiBnZXRDb21wdXRlZFN0eWxlKHQpfSxlLnByb3RvdHlwZS5zdXBwb3J0c1dlYkFuaW1hdGlvbj1mdW5jdGlvbigpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBFbGVtZW50LnByb3RvdHlwZS5hbmltYXRlfSxlLnByb3RvdHlwZS5wZXJmb3JtYW5jZU5vdz1mdW5jdGlvbigpe3JldHVybiB3aW5kb3cucGVyZm9ybWFuY2UmJndpbmRvdy5wZXJmb3JtYW5jZS5ub3c/d2luZG93LnBlcmZvcm1hbmNlLm5vdygpOihuZXcgRGF0ZSkuZ2V0VGltZSgpfSxlLnByb3RvdHlwZS5zdXBwb3J0c0Nvb2tpZXM9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sZS5wcm90b3R5cGUuZ2V0Q29va2llPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbih0LGUpe3ZhciBuLG87ZT1lbmNvZGVVUklDb21wb25lbnQoZSk7dHJ5e2Zvcih2YXIgaT1PYmplY3Qoci5fX3ZhbHVlcykodC5zcGxpdCgiOyIpKSxhPWkubmV4dCgpOyFhLmRvbmU7YT1pLm5leHQoKSl7dmFyIHU9YS52YWx1ZSxsPXUuaW5kZXhPZigiPSIpLHM9T2JqZWN0KHIuX19yZWFkKSgtMT09bD9bdSwiIl06W3Uuc2xpY2UoMCxsKSx1LnNsaWNlKGwrMSldLDIpLGM9c1sxXTtpZihzWzBdLnRyaW0oKT09PWUpcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChjKX19Y2F0Y2goZil7bj17ZXJyb3I6Zn19ZmluYWxseXt0cnl7YSYmIWEuZG9uZSYmKG89aS5yZXR1cm4pJiZvLmNhbGwoaSl9ZmluYWxseXtpZihuKXRocm93IG4uZXJyb3J9fXJldHVybiBudWxsfShkb2N1bWVudC5jb29raWUsdCl9LGUucHJvdG90eXBlLnNldENvb2tpZT1mdW5jdGlvbih0LGUpe2RvY3VtZW50LmNvb2tpZT1lbmNvZGVVUklDb21wb25lbnQodCkrIj0iK2VuY29kZVVSSUNvbXBvbmVudChlKX0sZX0oVGwpLE1sPW51bGw7ZnVuY3Rpb24gamwoKXtyZXR1cm4hIXdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZX12YXIgTmw9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG4uX2RvYz1lLG4uX2luaXQoKSxufXJldHVybiBPYmplY3Qoci5fX2V4dGVuZHMpKGUsdCksZS5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oKXt0aGlzLmxvY2F0aW9uPUVsKCkuZ2V0TG9jYXRpb24oKSx0aGlzLl9oaXN0b3J5PUVsKCkuZ2V0SGlzdG9yeSgpfSxlLnByb3RvdHlwZS5nZXRCYXNlSHJlZkZyb21ET009ZnVuY3Rpb24oKXtyZXR1cm4gRWwoKS5nZXRCYXNlSHJlZih0aGlzLl9kb2MpfSxlLnByb3RvdHlwZS5vblBvcFN0YXRlPWZ1bmN0aW9uKHQpe0VsKCkuZ2V0R2xvYmFsRXZlbnRUYXJnZXQodGhpcy5fZG9jLCJ3aW5kb3ciKS5hZGRFdmVudExpc3RlbmVyKCJwb3BzdGF0ZSIsdCwhMSl9LGUucHJvdG90eXBlLm9uSGFzaENoYW5nZT1mdW5jdGlvbih0KXtFbCgpLmdldEdsb2JhbEV2ZW50VGFyZ2V0KHRoaXMuX2RvYywid2luZG93IikuYWRkRXZlbnRMaXN0ZW5lcigiaGFzaGNoYW5nZSIsdCwhMSl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiaHJlZiIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxvY2F0aW9uLmhyZWZ9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJwcm90b2NvbCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxvY2F0aW9uLnByb3RvY29sfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiaG9zdG5hbWUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb2NhdGlvbi5ob3N0bmFtZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInBvcnQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb2NhdGlvbi5wb3J0fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwicGF0aG5hbWUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb2NhdGlvbi5wYXRobmFtZX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMubG9jYXRpb24ucGF0aG5hbWU9dH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInNlYXJjaCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxvY2F0aW9uLnNlYXJjaH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImhhc2giLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb2NhdGlvbi5oYXNofSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLnB1c2hTdGF0ZT1mdW5jdGlvbih0LGUsbil7amwoKT90aGlzLl9oaXN0b3J5LnB1c2hTdGF0ZSh0LGUsbik6dGhpcy5sb2NhdGlvbi5oYXNoPW59LGUucHJvdG90eXBlLnJlcGxhY2VTdGF0ZT1mdW5jdGlvbih0LGUsbil7amwoKT90aGlzLl9oaXN0b3J5LnJlcGxhY2VTdGF0ZSh0LGUsbik6dGhpcy5sb2NhdGlvbi5oYXNoPW59LGUucHJvdG90eXBlLmZvcndhcmQ9ZnVuY3Rpb24oKXt0aGlzLl9oaXN0b3J5LmZvcndhcmQoKX0sZS5wcm90b3R5cGUuYmFjaz1mdW5jdGlvbigpe3RoaXMuX2hpc3RvcnkuYmFjaygpfSxlLnByb3RvdHlwZS5nZXRTdGF0ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9oaXN0b3J5LnN0YXRlfSxlfShsdSksRGw9bmV3IFR0KCJUUkFOU0lUSU9OX0lEIiksVWw9W3twcm92aWRlOmtvLHVzZUZhY3Rvcnk6ZnVuY3Rpb24odCxlLG4pe3JldHVybiBmdW5jdGlvbigpe24uZ2V0KEFvKS5kb25lUHJvbWlzZS50aGVuKChmdW5jdGlvbigpe3ZhciBuPUVsKCk7QXJyYXkucHJvdG90eXBlLnNsaWNlLmFwcGx5KG4ucXVlcnlTZWxlY3RvckFsbChlLCJzdHlsZVtuZy10cmFuc2l0aW9uXSIpKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBuLmdldEF0dHJpYnV0ZShlLCJuZy10cmFuc2l0aW9uIik9PT10fSkpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBuLnJlbW92ZSh0KX0pKX0pKX19LGRlcHM6W0RsLEV1LE1lXSxtdWx0aTohMH1dLExsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5pbml0PWZ1bmN0aW9uKCl7dmFyIGU7ZT1uZXcgdCxoaT1lfSx0LnByb3RvdHlwZS5hZGRUb1dpbmRvdz1mdW5jdGlvbih0KXtPdC5nZXRBbmd1bGFyVGVzdGFiaWxpdHk9ZnVuY3Rpb24oZSxuKXt2b2lkIDA9PT1uJiYobj0hMCk7dmFyIHI9dC5maW5kVGVzdGFiaWxpdHlJblRyZWUoZSxuKTtpZihudWxsPT1yKXRocm93IG5ldyBFcnJvcigiQ291bGQgbm90IGZpbmQgdGVzdGFiaWxpdHkgZm9yIGVsZW1lbnQuIik7cmV0dXJuIHJ9LE90LmdldEFsbEFuZ3VsYXJUZXN0YWJpbGl0aWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHQuZ2V0QWxsVGVzdGFiaWxpdGllcygpfSxPdC5nZXRBbGxBbmd1bGFyUm9vdEVsZW1lbnRzPWZ1bmN0aW9uKCl7cmV0dXJuIHQuZ2V0QWxsUm9vdEVsZW1lbnRzKCl9LE90LmZyYW1ld29ya1N0YWJpbGl6ZXJzfHwoT3QuZnJhbWV3b3JrU3RhYmlsaXplcnM9W10pLE90LmZyYW1ld29ya1N0YWJpbGl6ZXJzLnB1c2goKGZ1bmN0aW9uKHQpe3ZhciBlPU90LmdldEFsbEFuZ3VsYXJUZXN0YWJpbGl0aWVzKCksbj1lLmxlbmd0aCxyPSExLG89ZnVuY3Rpb24oZSl7cj1yfHxlLDA9PS0tbiYmdChyKX07ZS5mb3JFYWNoKChmdW5jdGlvbih0KXt0LndoZW5TdGFibGUobyl9KSl9KSl9LHQucHJvdG90eXBlLmZpbmRUZXN0YWJpbGl0eUluVHJlZT1mdW5jdGlvbih0LGUsbil7aWYobnVsbD09ZSlyZXR1cm4gbnVsbDt2YXIgcj10LmdldFRlc3RhYmlsaXR5KGUpO3JldHVybiBudWxsIT1yP3I6bj9FbCgpLmlzU2hhZG93Um9vdChlKT90aGlzLmZpbmRUZXN0YWJpbGl0eUluVHJlZSh0LEVsKCkuZ2V0SG9zdChlKSwhMCk6dGhpcy5maW5kVGVzdGFiaWxpdHlJblRyZWUodCxFbCgpLnBhcmVudEVsZW1lbnQoZSksITApOm51bGx9LHR9KCk7ZnVuY3Rpb24gVmwodCxlKXsidW5kZWZpbmVkIiE9dHlwZW9mIENPTVBJTEVEJiZDT01QSUxFRHx8KChPdC5uZz1PdC5uZ3x8e30pW3RdPWUpfXZhciBIbD1mdW5jdGlvbigpe3JldHVybntBcHBsaWNhdGlvblJlZjpfaSxOZ1pvbmU6bml9fSgpO2Z1bmN0aW9uIHpsKHQpe3JldHVybiBBaSh0KX12YXIgRmw9bmV3IFR0KCJFdmVudE1hbmFnZXJQbHVnaW5zIiksQmw9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dmFyIG49dGhpczt0aGlzLl96b25lPWUsdGhpcy5fZXZlbnROYW1lVG9QbHVnaW49bmV3IE1hcCx0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm1hbmFnZXI9bn0pKSx0aGlzLl9wbHVnaW5zPXQuc2xpY2UoKS5yZXZlcnNlKCl9cmV0dXJuIHQucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0aGlzLl9maW5kUGx1Z2luRm9yKGUpLmFkZEV2ZW50TGlzdGVuZXIodCxlLG4pfSx0LnByb3RvdHlwZS5hZGRHbG9iYWxFdmVudExpc3RlbmVyPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdGhpcy5fZmluZFBsdWdpbkZvcihlKS5hZGRHbG9iYWxFdmVudExpc3RlbmVyKHQsZSxuKX0sdC5wcm90b3R5cGUuZ2V0Wm9uZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl96b25lfSx0LnByb3RvdHlwZS5fZmluZFBsdWdpbkZvcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9ldmVudE5hbWVUb1BsdWdpbi5nZXQodCk7aWYoZSlyZXR1cm4gZTtmb3IodmFyIG49dGhpcy5fcGx1Z2lucyxyPTA7cjxuLmxlbmd0aDtyKyspe3ZhciBvPW5bcl07aWYoby5zdXBwb3J0cyh0KSlyZXR1cm4gdGhpcy5fZXZlbnROYW1lVG9QbHVnaW4uc2V0KHQsbyksb310aHJvdyBuZXcgRXJyb3IoIk5vIGV2ZW50IG1hbmFnZXIgcGx1Z2luIGZvdW5kIGZvciBldmVudCAiK3QpfSx0fSgpLFpsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9kb2M9dH1yZXR1cm4gdC5wcm90b3R5cGUuYWRkR2xvYmFsRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbih0LGUsbil7dmFyIHI9RWwoKS5nZXRHbG9iYWxFdmVudFRhcmdldCh0aGlzLl9kb2MsdCk7aWYoIXIpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBldmVudCB0YXJnZXQgIityKyIgZm9yIGV2ZW50ICIrZSk7cmV0dXJuIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihyLGUsbil9LHR9KCksR2w9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5fc3R5bGVzU2V0PW5ldyBTZXR9cmV0dXJuIHQucHJvdG90eXBlLmFkZFN0eWxlcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49bmV3IFNldDt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2UuX3N0eWxlc1NldC5oYXModCl8fChlLl9zdHlsZXNTZXQuYWRkKHQpLG4uYWRkKHQpKX0pKSx0aGlzLm9uU3R5bGVzQWRkZWQobil9LHQucHJvdG90eXBlLm9uU3R5bGVzQWRkZWQ9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5nZXRBbGxTdHlsZXM9ZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9zdHlsZXNTZXQpfSx0fSgpLHFsPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dmFyIG49dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBuLl9kb2M9ZSxuLl9ob3N0Tm9kZXM9bmV3IFNldCxuLl9zdHlsZU5vZGVzPW5ldyBTZXQsbi5faG9zdE5vZGVzLmFkZChlLmhlYWQpLG59cmV0dXJuIE9iamVjdChyLl9fZXh0ZW5kcykoZSx0KSxlLnByb3RvdHlwZS5fYWRkU3R5bGVzVG9Ib3N0PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpczt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciByPW4uX2RvYy5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3IudGV4dENvbnRlbnQ9dCxuLl9zdHlsZU5vZGVzLmFkZChlLmFwcGVuZENoaWxkKHIpKX0pKX0sZS5wcm90b3R5cGUuYWRkSG9zdD1mdW5jdGlvbih0KXt0aGlzLl9hZGRTdHlsZXNUb0hvc3QodGhpcy5fc3R5bGVzU2V0LHQpLHRoaXMuX2hvc3ROb2Rlcy5hZGQodCl9LGUucHJvdG90eXBlLnJlbW92ZUhvc3Q9ZnVuY3Rpb24odCl7dGhpcy5faG9zdE5vZGVzLmRlbGV0ZSh0KX0sZS5wcm90b3R5cGUub25TdHlsZXNBZGRlZD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuX2hvc3ROb2Rlcy5mb3JFYWNoKChmdW5jdGlvbihuKXtyZXR1cm4gZS5fYWRkU3R5bGVzVG9Ib3N0KHQsbil9KSl9LGUucHJvdG90eXBlLm5nT25EZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5fc3R5bGVOb2Rlcy5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gRWwoKS5yZW1vdmUodCl9KSl9LGV9KEdsKSxXbD17c3ZnOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIseGh0bWw6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLHhsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIn0sUWw9LyVDT01QJS9nLEtsPSJfbmdob3N0LSVDT01QJSIsWWw9Il9uZ2NvbnRlbnQtJUNPTVAlIjtmdW5jdGlvbiBKbCh0LGUsbil7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBvPWVbcl07QXJyYXkuaXNBcnJheShvKT9KbCh0LG8sbik6KG89by5yZXBsYWNlKFFsLHQpLG4ucHVzaChvKSl9cmV0dXJuIG59ZnVuY3Rpb24gJGwodCl7cmV0dXJuIGZ1bmN0aW9uKGUpeyExPT09dChlKSYmKGUucHJldmVudERlZmF1bHQoKSxlLnJldHVyblZhbHVlPSExKX19dmFyIFhsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5ldmVudE1hbmFnZXI9dCx0aGlzLnNoYXJlZFN0eWxlc0hvc3Q9ZSx0aGlzLmFwcElkPW4sdGhpcy5yZW5kZXJlckJ5Q29tcElkPW5ldyBNYXAsdGhpcy5kZWZhdWx0UmVuZGVyZXI9bmV3IHRzKHQpfXJldHVybiB0LnByb3RvdHlwZS5jcmVhdGVSZW5kZXJlcj1mdW5jdGlvbih0LGUpe2lmKCF0fHwhZSlyZXR1cm4gdGhpcy5kZWZhdWx0UmVuZGVyZXI7c3dpdGNoKGUuZW5jYXBzdWxhdGlvbil7Y2FzZSBadC5FbXVsYXRlZDp2YXIgbj10aGlzLnJlbmRlcmVyQnlDb21wSWQuZ2V0KGUuaWQpO3JldHVybiBufHwobj1uZXcgcnModGhpcy5ldmVudE1hbmFnZXIsdGhpcy5zaGFyZWRTdHlsZXNIb3N0LGUsdGhpcy5hcHBJZCksdGhpcy5yZW5kZXJlckJ5Q29tcElkLnNldChlLmlkLG4pKSxuLmFwcGx5VG9Ib3N0KHQpLG47Y2FzZSBadC5OYXRpdmU6Y2FzZSBadC5TaGFkb3dEb206cmV0dXJuIG5ldyBvcyh0aGlzLmV2ZW50TWFuYWdlcix0aGlzLnNoYXJlZFN0eWxlc0hvc3QsdCxlKTtkZWZhdWx0OmlmKCF0aGlzLnJlbmRlcmVyQnlDb21wSWQuaGFzKGUuaWQpKXt2YXIgcj1KbChlLmlkLGUuc3R5bGVzLFtdKTt0aGlzLnNoYXJlZFN0eWxlc0hvc3QuYWRkU3R5bGVzKHIpLHRoaXMucmVuZGVyZXJCeUNvbXBJZC5zZXQoZS5pZCx0aGlzLmRlZmF1bHRSZW5kZXJlcil9cmV0dXJuIHRoaXMuZGVmYXVsdFJlbmRlcmVyfX0sdC5wcm90b3R5cGUuYmVnaW49ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe30sdH0oKSx0cz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5ldmVudE1hbmFnZXI9dCx0aGlzLmRhdGE9T2JqZWN0LmNyZWF0ZShudWxsKX1yZXR1cm4gdC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuYw=="
                },
                {
                    "key": "asdf?main.e3350ff4d88d534234ef.js?4?4?1",
                    "type": "binary",
                    "value": "base64:cmVhdGVFbGVtZW50PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU/ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFdsW2VdfHxlLHQpOmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodCl9LHQucHJvdG90eXBlLmNyZWF0ZUNvbW1lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQodCl9LHQucHJvdG90eXBlLmNyZWF0ZVRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHQpfSx0LnByb3RvdHlwZS5hcHBlbmRDaGlsZD1mdW5jdGlvbih0LGUpe3QuYXBwZW5kQ2hpbGQoZSl9LHQucHJvdG90eXBlLmluc2VydEJlZm9yZT1mdW5jdGlvbih0LGUsbil7dCYmdC5pbnNlcnRCZWZvcmUoZSxuKX0sdC5wcm90b3R5cGUucmVtb3ZlQ2hpbGQ9ZnVuY3Rpb24odCxlKXt0JiZ0LnJlbW92ZUNoaWxkKGUpfSx0LnByb3RvdHlwZS5zZWxlY3RSb290RWxlbWVudD1mdW5jdGlvbih0LGUpe3ZhciBuPSJzdHJpbmciPT10eXBlb2YgdD9kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQpOnQ7aWYoIW4pdGhyb3cgbmV3IEVycm9yKCdUaGUgc2VsZWN0b3IgIicrdCsnIiBkaWQgbm90IG1hdGNoIGFueSBlbGVtZW50cycpO3JldHVybiBlfHwobi50ZXh0Q29udGVudD0iIiksbn0sdC5wcm90b3R5cGUucGFyZW50Tm9kZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5wYXJlbnROb2RlfSx0LnByb3RvdHlwZS5uZXh0U2libGluZz1mdW5jdGlvbih0KXtyZXR1cm4gdC5uZXh0U2libGluZ30sdC5wcm90b3R5cGUuc2V0QXR0cmlidXRlPWZ1bmN0aW9uKHQsZSxuLHIpe2lmKHIpe2U9cisiOiIrZTt2YXIgbz1XbFtyXTtvP3Quc2V0QXR0cmlidXRlTlMobyxlLG4pOnQuc2V0QXR0cmlidXRlKGUsbil9ZWxzZSB0LnNldEF0dHJpYnV0ZShlLG4pfSx0LnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGU9ZnVuY3Rpb24odCxlLG4pe2lmKG4pe3ZhciByPVdsW25dO3I/dC5yZW1vdmVBdHRyaWJ1dGVOUyhyLGUpOnQucmVtb3ZlQXR0cmlidXRlKG4rIjoiK2UpfWVsc2UgdC5yZW1vdmVBdHRyaWJ1dGUoZSl9LHQucHJvdG90eXBlLmFkZENsYXNzPWZ1bmN0aW9uKHQsZSl7dC5jbGFzc0xpc3QuYWRkKGUpfSx0LnByb3RvdHlwZS5yZW1vdmVDbGFzcz1mdW5jdGlvbih0LGUpe3QuY2xhc3NMaXN0LnJlbW92ZShlKX0sdC5wcm90b3R5cGUuc2V0U3R5bGU9ZnVuY3Rpb24odCxlLG4scil7ciZobi5EYXNoQ2FzZT90LnN0eWxlLnNldFByb3BlcnR5KGUsbixyJmhuLkltcG9ydGFudD8iaW1wb3J0YW50IjoiIik6dC5zdHlsZVtlXT1ufSx0LnByb3RvdHlwZS5yZW1vdmVTdHlsZT1mdW5jdGlvbih0LGUsbil7biZobi5EYXNoQ2FzZT90LnN0eWxlLnJlbW92ZVByb3BlcnR5KGUpOnQuc3R5bGVbZV09IiJ9LHQucHJvdG90eXBlLnNldFByb3BlcnR5PWZ1bmN0aW9uKHQsZSxuKXtucyhlLCJwcm9wZXJ0eSIpLHRbZV09bn0sdC5wcm90b3R5cGUuc2V0VmFsdWU9ZnVuY3Rpb24odCxlKXt0Lm5vZGVWYWx1ZT1lfSx0LnByb3RvdHlwZS5saXN0ZW49ZnVuY3Rpb24odCxlLG4pe3JldHVybiBucyhlLCJsaXN0ZW5lciIpLCJzdHJpbmciPT10eXBlb2YgdD90aGlzLmV2ZW50TWFuYWdlci5hZGRHbG9iYWxFdmVudExpc3RlbmVyKHQsZSwkbChuKSk6dGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcih0LGUsJGwobikpfSx0fSgpLGVzPWZ1bmN0aW9uKCl7cmV0dXJuIkAiLmNoYXJDb2RlQXQoMCl9KCk7ZnVuY3Rpb24gbnModCxlKXtpZih0LmNoYXJDb2RlQXQoMCk9PT1lcyl0aHJvdyBuZXcgRXJyb3IoIkZvdW5kIHRoZSBzeW50aGV0aWMgIitlKyIgIit0KycuIFBsZWFzZSBpbmNsdWRlIGVpdGhlciAiQnJvd3NlckFuaW1hdGlvbnNNb2R1bGUiIG9yICJOb29wQW5pbWF0aW9uc01vZHVsZSIgaW4geW91ciBhcHBsaWNhdGlvbi4nKX12YXIgcnM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scixvKXt2YXIgaT10LmNhbGwodGhpcyxlKXx8dGhpcztpLmNvbXBvbmVudD1yO3ZhciBhPUpsKG8rIi0iK3IuaWQsci5zdHlsZXMsW10pO3JldHVybiBuLmFkZFN0eWxlcyhhKSxpLmNvbnRlbnRBdHRyPVlsLnJlcGxhY2UoUWwsbysiLSIrci5pZCksaS5ob3N0QXR0cj1LbC5yZXBsYWNlKFFsLG8rIi0iK3IuaWQpLGl9cmV0dXJuIE9iamVjdChyLl9fZXh0ZW5kcykoZSx0KSxlLnByb3RvdHlwZS5hcHBseVRvSG9zdD1mdW5jdGlvbihlKXt0LnByb3RvdHlwZS5zZXRBdHRyaWJ1dGUuY2FsbCh0aGlzLGUsdGhpcy5ob3N0QXR0ciwiIil9LGUucHJvdG90eXBlLmNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24oZSxuKXt2YXIgcj10LnByb3RvdHlwZS5jcmVhdGVFbGVtZW50LmNhbGwodGhpcyxlLG4pO3JldHVybiB0LnByb3RvdHlwZS5zZXRBdHRyaWJ1dGUuY2FsbCh0aGlzLHIsdGhpcy5jb250ZW50QXR0ciwiIikscn0sZX0odHMpLG9zPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIsbyl7dmFyIGk9dC5jYWxsKHRoaXMsZSl8fHRoaXM7aS5zaGFyZWRTdHlsZXNIb3N0PW4saS5ob3N0RWw9cixpLmNvbXBvbmVudD1vLGkuc2hhZG93Um9vdD1vLmVuY2Fwc3VsYXRpb249PT1adC5TaGFkb3dEb20/ci5hdHRhY2hTaGFkb3coe21vZGU6Im9wZW4ifSk6ci5jcmVhdGVTaGFkb3dSb290KCksaS5zaGFyZWRTdHlsZXNIb3N0LmFkZEhvc3QoaS5zaGFkb3dSb290KTtmb3IodmFyIGE9Smwoby5pZCxvLnN0eWxlcyxbXSksdT0wO3U8YS5sZW5ndGg7dSsrKXt2YXIgbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO2wudGV4dENvbnRlbnQ9YVt1XSxpLnNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQobCl9cmV0dXJuIGl9cmV0dXJuIE9iamVjdChyLl9fZXh0ZW5kcykoZSx0KSxlLnByb3RvdHlwZS5ub2RlT3JTaGFkb3dSb290PWZ1bmN0aW9uKHQpe3JldHVybiB0PT09dGhpcy5ob3N0RWw/dGhpcy5zaGFkb3dSb290OnR9LGUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLnNoYXJlZFN0eWxlc0hvc3QucmVtb3ZlSG9zdCh0aGlzLnNoYWRvd1Jvb3QpfSxlLnByb3RvdHlwZS5hcHBlbmRDaGlsZD1mdW5jdGlvbihlLG4pe3JldHVybiB0LnByb3RvdHlwZS5hcHBlbmRDaGlsZC5jYWxsKHRoaXMsdGhpcy5ub2RlT3JTaGFkb3dSb290KGUpLG4pfSxlLnByb3RvdHlwZS5pbnNlcnRCZWZvcmU9ZnVuY3Rpb24oZSxuLHIpe3JldHVybiB0LnByb3RvdHlwZS5pbnNlcnRCZWZvcmUuY2FsbCh0aGlzLHRoaXMubm9kZU9yU2hhZG93Um9vdChlKSxuLHIpfSxlLnByb3RvdHlwZS5yZW1vdmVDaGlsZD1mdW5jdGlvbihlLG4pe3JldHVybiB0LnByb3RvdHlwZS5yZW1vdmVDaGlsZC5jYWxsKHRoaXMsdGhpcy5ub2RlT3JTaGFkb3dSb290KGUpLG4pfSxlLnByb3RvdHlwZS5wYXJlbnROb2RlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm5vZGVPclNoYWRvd1Jvb3QodC5wcm90b3R5cGUucGFyZW50Tm9kZS5jYWxsKHRoaXMsdGhpcy5ub2RlT3JTaGFkb3dSb290KGUpKSl9LGV9KHRzKSxpcz1mdW5jdGlvbigpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgWm9uZSYmWm9uZS5fX3N5bWJvbF9ffHxmdW5jdGlvbih0KXtyZXR1cm4iX196b25lX3N5bWJvbF9fIit0fX0oKSxhcz1pcygiYWRkRXZlbnRMaXN0ZW5lciIpLHVzPWlzKCJyZW1vdmVFdmVudExpc3RlbmVyIiksbHM9e30sc3M9Il9fem9uZV9zeW1ib2xfX3Byb3BhZ2F0aW9uU3RvcHBlZCIsY3M9ZnVuY3Rpb24oKXt2YXIgdD0idW5kZWZpbmVkIiE9dHlwZW9mIFpvbmUmJlpvbmVbaXMoIkJMQUNLX0xJU1RFRF9FVkVOVFMiKV07aWYodCl7dmFyIGU9e307cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZVt0XT10fSkpLGV9fSgpLGZzPWZ1bmN0aW9uKHQpe3JldHVybiEhY3MmJmNzLmhhc093blByb3BlcnR5KHQpfSxocz1mdW5jdGlvbih0KXt2YXIgZT1sc1t0LnR5cGVdO2lmKGUpe3ZhciBuPXRoaXNbZV07aWYobil7dmFyIHI9W3RdO2lmKDE9PT1uLmxlbmd0aClyZXR1cm4oYT1uWzBdKS56b25lIT09Wm9uZS5jdXJyZW50P2Euem9uZS5ydW4oYS5oYW5kbGVyLHRoaXMscik6YS5oYW5kbGVyLmFwcGx5KHRoaXMscik7Zm9yKHZhciBvPW4uc2xpY2UoKSxpPTA7aTxvLmxlbmd0aCYmITAhPT10W3NzXTtpKyspe3ZhciBhOyhhPW9baV0pLnpvbmUhPT1ab25lLmN1cnJlbnQ/YS56b25lLnJ1bihhLmhhbmRsZXIsdGhpcyxyKTphLmhhbmRsZXIuYXBwbHkodGhpcyxyKX19fX0scHM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scil7dmFyIG89dC5jYWxsKHRoaXMsZSl8fHRoaXM7cmV0dXJuIG8ubmdab25lPW4sciYmZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1PdX0ocil8fG8ucGF0Y2hFdmVudCgpLG99cmV0dXJuIE9iamVjdChyLl9fZXh0ZW5kcykoZSx0KSxlLnByb3RvdHlwZS5wYXRjaEV2ZW50PWZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBFdmVudCYmRXZlbnQmJkV2ZW50LnByb3RvdHlwZSYmIUV2ZW50LnByb3RvdHlwZS5fX3pvbmVfc3ltYm9sX19zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24pe3ZhciB0PUV2ZW50LnByb3RvdHlwZS5fX3pvbmVfc3ltYm9sX19zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb249RXZlbnQucHJvdG90eXBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjtFdmVudC5wcm90b3R5cGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uPWZ1bmN0aW9uKCl7dGhpcyYmKHRoaXNbc3NdPSEwKSx0JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fSxlLnByb3RvdHlwZS5zdXBwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4hMH0sZS5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbih0LGUsbil7dmFyIHI9dGhpcyxvPW47aWYoIXRbYXNdfHxuaS5pc0luQW5ndWxhclpvbmUoKSYmIWZzKGUpKXQuYWRkRXZlbnRMaXN0ZW5lcihlLG8sITEpO2Vsc2V7dmFyIGk9bHNbZV07aXx8KGk9bHNbZV09aXMoIkFOR1VMQVIiK2UrIkZBTFNFIikpO3ZhciBhPXRbaV0sdT1hJiZhLmxlbmd0aD4wO2F8fChhPXRbaV09W10pO3ZhciBsPWZzKGUpP1pvbmUucm9vdDpab25lLmN1cnJlbnQ7aWYoMD09PWEubGVuZ3RoKWEucHVzaCh7em9uZTpsLGhhbmRsZXI6b30pO2Vsc2V7Zm9yKHZhciBzPSExLGM9MDtjPGEubGVuZ3RoO2MrKylpZihhW2NdLmhhbmRsZXI9PT1vKXtzPSEwO2JyZWFrfXN8fGEucHVzaCh7em9uZTpsLGhhbmRsZXI6b30pfXV8fHRbYXNdKGUsaHMsITEpfXJldHVybiBmdW5jdGlvbigpe3JldHVybiByLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxlLG8pfX0sZS5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbih0LGUsbil7dmFyIHI9dFt1c107aWYoIXIpcmV0dXJuIHQucmVtb3ZlRXZlbnRMaXN0ZW5lci5hcHBseSh0LFtlLG4sITFdKTt2YXIgbz1sc1tlXSxpPW8mJnRbb107aWYoIWkpcmV0dXJuIHQucmVtb3ZlRXZlbnRMaXN0ZW5lci5hcHBseSh0LFtlLG4sITFdKTtmb3IodmFyIGE9ITEsdT0wO3U8aS5sZW5ndGg7dSsrKWlmKGlbdV0uaGFuZGxlcj09PW4pe2E9ITAsaS5zcGxpY2UodSwxKTticmVha31hPzA9PT1pLmxlbmd0aCYmci5hcHBseSh0LFtlLGhzLCExXSk6dC5yZW1vdmVFdmVudExpc3RlbmVyLmFwcGx5KHQsW2UsbiwhMV0pfSxlfShabCksZHM9e3BhbjohMCxwYW5zdGFydDohMCxwYW5tb3ZlOiEwLHBhbmVuZDohMCxwYW5jYW5jZWw6ITAscGFubGVmdDohMCxwYW5yaWdodDohMCxwYW51cDohMCxwYW5kb3duOiEwLHBpbmNoOiEwLHBpbmNoc3RhcnQ6ITAscGluY2htb3ZlOiEwLHBpbmNoZW5kOiEwLHBpbmNoY2FuY2VsOiEwLHBpbmNoaW46ITAscGluY2hvdXQ6ITAscHJlc3M6ITAscHJlc3N1cDohMCxyb3RhdGU6ITAscm90YXRlc3RhcnQ6ITAscm90YXRlbW92ZTohMCxyb3RhdGVlbmQ6ITAscm90YXRlY2FuY2VsOiEwLHN3aXBlOiEwLHN3aXBlbGVmdDohMCxzd2lwZXJpZ2h0OiEwLHN3aXBldXA6ITAsc3dpcGVkb3duOiEwLHRhcDohMH0sZ3M9bmV3IFR0KCJIYW1tZXJHZXN0dXJlQ29uZmlnIiksdnM9bmV3IFR0KCJIYW1tZXJMb2FkZXIiKSx5cz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLmV2ZW50cz1bXSx0aGlzLm92ZXJyaWRlcz17fX1yZXR1cm4gdC5wcm90b3R5cGUuYnVpbGRIYW1tZXI9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IEhhbW1lcih0LHRoaXMub3B0aW9ucyk7Zm9yKHZhciBuIGluIGUuZ2V0KCJwaW5jaCIpLnNldCh7ZW5hYmxlOiEwfSksZS5nZXQoInJvdGF0ZSIpLnNldCh7ZW5hYmxlOiEwfSksdGhpcy5vdmVycmlkZXMpZS5nZXQobikuc2V0KHRoaXMub3ZlcnJpZGVzW25dKTtyZXR1cm4gZX0sdH0oKSxtcz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyLG8pe3ZhciBpPXQuY2FsbCh0aGlzLGUpfHx0aGlzO3JldHVybiBpLl9jb25maWc9bixpLmNvbnNvbGU9cixpLmxvYWRlcj1vLGl9cmV0dXJuIE9iamVjdChyLl9fZXh0ZW5kcykoZSx0KSxlLnByb3RvdHlwZS5zdXBwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4hKCFkcy5oYXNPd25Qcm9wZXJ0eSh0LnRvTG93ZXJDYXNlKCkpJiYhdGhpcy5pc0N1c3RvbUV2ZW50KHQpfHwhd2luZG93LkhhbW1lciYmIXRoaXMubG9hZGVyJiYodGhpcy5jb25zb2xlLndhcm4oJ1RoZSAiJyt0KyciIGV2ZW50IGNhbm5vdCBiZSBib3VuZCBiZWNhdXNlIEhhbW1lci5KUyBpcyBub3QgbG9hZGVkIGFuZCBubyBjdXN0b20gbG9hZGVyIGhhcyBiZWVuIHNwZWNpZmllZC4nKSwxKSl9LGUucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXRoaXMsbz10aGlzLm1hbmFnZXIuZ2V0Wm9uZSgpO2lmKGU9ZS50b0xvd2VyQ2FzZSgpLCF3aW5kb3cuSGFtbWVyJiZ0aGlzLmxvYWRlcil7dmFyIGk9ITEsYT1mdW5jdGlvbigpe2k9ITB9O3JldHVybiB0aGlzLmxvYWRlcigpLnRoZW4oKGZ1bmN0aW9uKCl7aWYoIXdpbmRvdy5IYW1tZXIpcmV0dXJuIHIuY29uc29sZS53YXJuKCJUaGUgY3VzdG9tIEhBTU1FUl9MT0FERVIgY29tcGxldGVkLCBidXQgSGFtbWVyLkpTIGlzIG5vdCBwcmVzZW50LiIpLHZvaWQoYT1mdW5jdGlvbigpe30pO2l8fChhPXIuYWRkRXZlbnRMaXN0ZW5lcih0LGUsbikpfSkpLmNhdGNoKChmdW5jdGlvbigpe3IuY29uc29sZS53YXJuKCdUaGUgIicrZSsnIiBldmVudCBjYW5ub3QgYmUgYm91bmQgYmVjYXVzZSB0aGUgY3VzdG9tIEhhbW1lci5KUyBsb2FkZXIgZmFpbGVkLicpLGE9ZnVuY3Rpb24oKXt9fSkpLGZ1bmN0aW9uKCl7YSgpfX1yZXR1cm4gby5ydW5PdXRzaWRlQW5ndWxhcigoZnVuY3Rpb24oKXt2YXIgaT1yLl9jb25maWcuYnVpbGRIYW1tZXIodCksYT1mdW5jdGlvbih0KXtvLnJ1bkd1YXJkZWQoKGZ1bmN0aW9uKCl7bih0KX0pKX07cmV0dXJuIGkub24oZSxhKSxmdW5jdGlvbigpe2kub2ZmKGUsYSksImZ1bmN0aW9uIj09dHlwZW9mIGkuZGVzdHJveSYmaS5kZXN0cm95KCl9fSkpfSxlLnByb3RvdHlwZS5pc0N1c3RvbUV2ZW50PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9jb25maWcuZXZlbnRzLmluZGV4T2YodCk+LTF9LGV9KFpsKSxfcz1bImFsdCIsImNvbnRyb2wiLCJtZXRhIiwic2hpZnQiXSx3cz17YWx0OmZ1bmN0aW9uKHQpe3JldHVybiB0LmFsdEtleX0sY29udHJvbDpmdW5jdGlvbih0KXtyZXR1cm4gdC5jdHJsS2V5fSxtZXRhOmZ1bmN0aW9uKHQpe3JldHVybiB0Lm1ldGFLZXl9LHNoaWZ0OmZ1bmN0aW9uKHQpe3JldHVybiB0LnNoaWZ0S2V5fX0sYnM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSl8fHRoaXN9dmFyIG47cmV0dXJuIE9iamVjdChyLl9fZXh0ZW5kcykoZSx0KSxuPWUsZS5wcm90b3R5cGUuc3VwcG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPW4ucGFyc2VFdmVudE5hbWUodCl9LGUucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24odCxlLHIpe3ZhciBvPW4ucGFyc2VFdmVudE5hbWUoZSksaT1uLmV2ZW50Q2FsbGJhY2soby5mdWxsS2V5LHIsdGhpcy5tYW5hZ2VyLmdldFpvbmUoKSk7cmV0dXJuIHRoaXMubWFuYWdlci5nZXRab25lKCkucnVuT3V0c2lkZUFuZ3VsYXIoKGZ1bmN0aW9uKCl7cmV0dXJuIEVsKCkub25BbmRDYW5jZWwodCxvLmRvbUV2ZW50TmFtZSxpKX0pKX0sZS5wYXJzZUV2ZW50TmFtZT1mdW5jdGlvbih0KXt2YXIgZT10LnRvTG93ZXJDYXNlKCkuc3BsaXQoIi4iKSxyPWUuc2hpZnQoKTtpZigwPT09ZS5sZW5ndGh8fCJrZXlkb3duIiE9PXImJiJrZXl1cCIhPT1yKXJldHVybiBudWxsO3ZhciBvPW4uX25vcm1hbGl6ZUtleShlLnBvcCgpKSxpPSIiO2lmKF9zLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBuPWUuaW5kZXhPZih0KTtuPi0xJiYoZS5zcGxpY2UobiwxKSxpKz10KyIuIil9KSksaSs9bywwIT1lLmxlbmd0aHx8MD09PW8ubGVuZ3RoKXJldHVybiBudWxsO3ZhciBhPXt9O3JldHVybiBhLmRvbUV2ZW50TmFtZT1yLGEuZnVsbEtleT1pLGF9LGUuZ2V0RXZlbnRGdWxsS2V5PWZ1bmN0aW9uKHQpe3ZhciBlPSIiLG49RWwoKS5nZXRFdmVudEtleSh0KTtyZXR1cm4iICI9PT0obj1uLnRvTG93ZXJDYXNlKCkpP249InNwYWNlIjoiLiI9PT1uJiYobj0iZG90IiksX3MuZm9yRWFjaCgoZnVuY3Rpb24ocil7ciE9biYmKDAsd3Nbcl0pKHQpJiYoZSs9cisiLiIpfSkpLGUrPW59LGUuZXZlbnRDYWxsYmFjaz1mdW5jdGlvbih0LGUscil7cmV0dXJuIGZ1bmN0aW9uKG8pe24uZ2V0RXZlbnRGdWxsS2V5KG8pPT09dCYmci5ydW5HdWFyZGVkKChmdW5jdGlvbigpe3JldHVybiBlKG8pfSkpfX0sZS5fbm9ybWFsaXplS2V5PWZ1bmN0aW9uKHQpe3N3aXRjaCh0KXtjYXNlImVzYyI6cmV0dXJuImVzY2FwZSI7ZGVmYXVsdDpyZXR1cm4gdH19LGV9KFpsKSx4cz1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe319KCksQ3M9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG4uX2RvYz1lLG59cmV0dXJuIE9iamVjdChyLl9fZXh0ZW5kcykoZSx0KSxlLnByb3RvdHlwZS5zYW5pdGl6ZT1mdW5jdGlvbih0LGUpe2lmKG51bGw9PWUpcmV0dXJuIG51bGw7c3dpdGNoKHQpe2Nhc2UgQ2UuTk9ORTpyZXR1cm4gZTtjYXNlIENlLkhUTUw6cmV0dXJuIGUgaW5zdGFuY2VvZiBFcz9lLmNoYW5naW5nVGhpc0JyZWFrc0FwcGxpY2F0aW9uU2VjdXJpdHk6KHRoaXMuY2hlY2tOb3RTYWZlVmFsdWUoZSwiSFRNTCIpLGZ1bmN0aW9uKHQsZSl7dmFyIG49bnVsbDt0cnl7bGU9bGV8fG5ldyBuZSh0KTt2YXIgcj1lP1N0cmluZyhlKToiIjtuPWxlLmdldEluZXJ0Qm9keUVsZW1lbnQocik7dmFyIG89NSxpPXI7ZG97aWYoMD09PW8pdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gc2FuaXRpemUgaHRtbCBiZWNhdXNlIHRoZSBpbnB1dCBpcyB1bnN0YWJsZSIpO28tLSxyPWksaT1uLmlubmVySFRNTCxuPWxlLmdldEluZXJ0Qm9keUVsZW1lbnQocil9d2hpbGUociE9PWkpO3ZhciBhPW5ldyBtZSx1PWEuc2FuaXRpemVDaGlsZHJlbih4ZShuKXx8bik7cmV0dXJuIGVlKCkmJmEuc2FuaXRpemVkU29tZXRoaW5nJiZjb25zb2xlLndhcm4oIldBUk5JTkc6IHNhbml0aXppbmcgSFRNTCBzdHJpcHBlZCBzb21lIGNvbnRlbnQsIHNlZSBodHRwOi8vZy5jby9uZy9zZWN1cml0eSN4c3MiKSx1fWZpbmFsbHl7aWYobilmb3IodmFyIGw9eGUobil8fG47bC5maXJzdENoaWxkOylsLnJlbW92ZUNoaWxkKGwuZmlyc3RDaGlsZCl9fSh0aGlzLl9kb2MsU3RyaW5nKGUpKSk7Y2FzZSBDZS5TVFlMRTpyZXR1cm4gZSBpbnN0YW5jZW9mIE9zP2UuY2hhbmdpbmdUaGlzQnJlYWtzQXBwbGljYXRpb25TZWN1cml0eToodGhpcy5jaGVja05vdFNhZmVWYWx1ZShlLCJTdHlsZSIpLGZ1bmN0aW9uKHQpe2lmKCEodD1TdHJpbmcodCkudHJpbSgpKSlyZXR1cm4iIjt2YXIgZT10Lm1hdGNoKE9lKTtyZXR1cm4gZSYmaWUoZVsxXSk9PT1lWzFdfHx0Lm1hdGNoKEVlKSYmZnVuY3Rpb24odCl7Zm9yKHZhciBlPSEwLG49ITAscj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbz10LmNoYXJBdChyKTsiJyI9PT1vJiZuP2U9IWU6JyInPT09byYmZSYmKG49IW4pfXJldHVybiBlJiZufSh0KT90OihlZSgpJiZjb25zb2xlLndhcm4oIldBUk5JTkc6IHNhbml0aXppbmcgdW5zYWZlIHN0eWxlIHZhbHVlICIrdCsiIChzZWUgaHR0cDovL2cuY28vbmcvc2VjdXJpdHkjeHNzKS4iKSwidW5zYWZlIil9KGUpKTtjYXNlIENlLlNDUklQVDppZihlIGluc3RhbmNlb2YgVHMpcmV0dXJuIGUuY2hhbmdpbmdUaGlzQnJlYWtzQXBwbGljYXRpb25TZWN1cml0eTt0aHJvdyB0aGlzLmNoZWNrTm90U2FmZVZhbHVlKGUsIlNjcmlwdCIpLG5ldyBFcnJvcigidW5zYWZlIHZhbHVlIHVzZWQgaW4gYSBzY3JpcHQgY29udGV4dCIpO2Nhc2UgQ2UuVVJMOnJldHVybiBlIGluc3RhbmNlb2Yga3N8fGUgaW5zdGFuY2VvZiBQcz9lLmNoYW5naW5nVGhpc0JyZWFrc0FwcGxpY2F0aW9uU2VjdXJpdHk6KHRoaXMuY2hlY2tOb3RTYWZlVmFsdWUoZSwiVVJMIiksaWUoU3RyaW5nKGUpKSk7Y2FzZSBDZS5SRVNPVVJDRV9VUkw6aWYoZSBpbnN0YW5jZW9mIGtzKXJldHVybiBlLmNoYW5naW5nVGhpc0JyZWFrc0FwcGxpY2F0aW9uU2VjdXJpdHk7dGhyb3cgdGhpcy5jaGVja05vdFNhZmVWYWx1ZShlLCJSZXNvdXJjZVVSTCIpLG5ldyBFcnJvcigidW5zYWZlIHZhbHVlIHVzZWQgaW4gYSByZXNvdXJjZSBVUkwgY29udGV4dCAoc2VlIGh0dHA6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcykiKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBTZWN1cml0eUNvbnRleHQgIit0KyIgKHNlZSBodHRwOi8vZy5jby9uZy9zZWN1cml0eSN4c3MpIil9fSxlLnByb3RvdHlwZS5jaGVja05vdFNhZmVWYWx1ZT1mdW5jdGlvbih0LGUpe2lmKHQgaW5zdGFuY2VvZiBTcyl0aHJvdyBuZXcgRXJyb3IoIlJlcXVpcmVkIGEgc2FmZSAiK2UrIiwgZ290IGEgIit0LmdldFR5cGVOYW1lKCkrIiAoc2VlIGh0dHA6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcykiKX0sZS5wcm90b3R5cGUuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWw9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBFcyh0KX0sZS5wcm90b3R5cGUuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgT3ModCl9LGUucHJvdG90eXBlLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTY3JpcHQ9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBUcyh0KX0sZS5wcm90b3R5cGUuYnlwYXNzU2VjdXJpdHlUcnVzdFVybD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IFBzKHQpfSxlLnByb3RvdHlwZS5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmw9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBrcyh0KX0sZX0oeHMpLFNzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmNoYW5naW5nVGhpc0JyZWFrc0FwcGxpY2F0aW9uU2VjdXJpdHk9dH1yZXR1cm4gdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iU2FmZVZhbHVlIG11c3QgdXNlIFtwcm9wZXJ0eV09YmluZGluZzogIit0aGlzLmNoYW5naW4="
                }
            ]
        },
        {
            "type": 12,
            "id": "5fsefCRW6bFBPn6ChK9ZzVPWHGAhPSSo7RQvsYTTYxmU",
            "fee": 12900000,
            "feeAssetId": null,
            "timestamp": 1575553259910,
            "version": 1,
            "sender": "3N2rk3yzChsJp4wCS5VLo5Q3ifLmDChfbzQ",
            "senderPublicKey": "BdACbbxkapMbmbtG7UxdPQ5Y8grEhk9cNxLNGAF5znme",
            "proofs": [
                "53Nj62kp5gWhExMxJSt6pDfXiVCpJoQcfwL65tW2TxY25fMYJU524P575iysokpGEMq8Vh5ebfJQ8aqTEunMt3XY"
            ],
            "data": [
                {
                    "key": "asdf?main.e3350ff4d88d534234ef.js?4?0?2",
                    "type": "binary",
                    "value": "base64:Z1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5KyIgKHNlZSBodHRwOi8vZy5jby9uZy9zZWN1cml0eSN4c3MpIn0sdH0oKSxFcz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gT2JqZWN0KHIuX19leHRlbmRzKShlLHQpLGUucHJvdG90eXBlLmdldFR5cGVOYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIkhUTUwifSxlfShTcyksT3M9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiBudWxsIT09dCYmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIE9iamVjdChyLl9fZXh0ZW5kcykoZSx0KSxlLnByb3RvdHlwZS5nZXRUeXBlTmFtZT1mdW5jdGlvbigpe3JldHVybiJTdHlsZSJ9LGV9KFNzKSxUcz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gT2JqZWN0KHIuX19leHRlbmRzKShlLHQpLGUucHJvdG90eXBlLmdldFR5cGVOYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIlNjcmlwdCJ9LGV9KFNzKSxQcz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gT2JqZWN0KHIuX19leHRlbmRzKShlLHQpLGUucHJvdG90eXBlLmdldFR5cGVOYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIlVSTCJ9LGV9KFNzKSxrcz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gT2JqZWN0KHIuX19leHRlbmRzKShlLHQpLGUucHJvdG90eXBlLmdldFR5cGVOYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIlJlc291cmNlVVJMIn0sZX0oU3MpLEFzPWdpKFJpLCJicm93c2VyIixbe3Byb3ZpZGU6Tm8sdXNlVmFsdWU6ImJyb3dzZXIifSx7cHJvdmlkZTpqbyx1c2VWYWx1ZTpmdW5jdGlvbigpe1JsLm1ha2VDdXJyZW50KCksTGwuaW5pdCgpfSxtdWx0aTohMH0se3Byb3ZpZGU6bHUsdXNlQ2xhc3M6TmwsZGVwczpbRXVdfSx7cHJvdmlkZTpFdSx1c2VGYWN0b3J5OmZ1bmN0aW9uKCl7cmV0dXJuIGRvY3VtZW50fSxkZXBzOltdfV0pO2Z1bmN0aW9uIElzKCl7cmV0dXJuIG5ldyAkdH12YXIgUnM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe2lmKHQpdGhyb3cgbmV3IEVycm9yKCJCcm93c2VyTW9kdWxlIGhhcyBhbHJlYWR5IGJlZW4gbG9hZGVkLiBJZiB5b3UgbmVlZCBhY2Nlc3MgdG8gY29tbW9uIGRpcmVjdGl2ZXMgc3VjaCBhcyBOZ0lmIGFuZCBOZ0ZvciBmcm9tIGEgbGF6eSBsb2FkZWQgbW9kdWxlLCBpbXBvcnQgQ29tbW9uTW9kdWxlIGluc3RlYWQuIil9dmFyIGU7cmV0dXJuIGU9dCx0LndpdGhTZXJ2ZXJUcmFuc2l0aW9uPWZ1bmN0aW9uKHQpe3JldHVybntuZ01vZHVsZTplLHByb3ZpZGVyczpbe3Byb3ZpZGU6SW8sdXNlVmFsdWU6dC5hcHBJZH0se3Byb3ZpZGU6RGwsdXNlRXhpc3Rpbmc6SW99LFVsXX19LHR9KCk7InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdzt2YXIgTXM9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCxlKXt0aGlzLmlkPXQsdGhpcy51cmw9ZX19KCksanM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scixvKXt2b2lkIDA9PT1yJiYocj0iaW1wZXJhdGl2ZSIpLHZvaWQgMD09PW8mJihvPW51bGwpO3ZhciBpPXQuY2FsbCh0aGlzLGUsbil8fHRoaXM7cmV0dXJuIGkubmF2aWdhdGlvblRyaWdnZXI9cixpLnJlc3RvcmVkU3RhdGU9byxpfXJldHVybiBPYmplY3Qoci5fX2V4dGVuZHMpKGUsdCksZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iTmF2aWdhdGlvblN0YXJ0KGlkOiAiK3RoaXMuaWQrIiwgdXJsOiAnIit0aGlzLnVybCsiJykifSxlfShNcyksTnM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scil7dmFyIG89dC5jYWxsKHRoaXMsZSxuKXx8dGhpcztyZXR1cm4gby51cmxBZnRlclJlZGlyZWN0cz1yLG99cmV0dXJuIE9iamVjdChyLl9fZXh0ZW5kcykoZSx0KSxlLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJOYXZpZ2F0aW9uRW5kKGlkOiAiK3RoaXMuaWQrIiwgdXJsOiAnIit0aGlzLnVybCsiJywgdXJsQWZ0ZXJSZWRpcmVjdHM6ICciK3RoaXMudXJsQWZ0ZXJSZWRpcmVjdHMrIicpIn0sZX0oTXMpLERzPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIpe3ZhciBvPXQuY2FsbCh0aGlzLGUsbil8fHRoaXM7cmV0dXJuIG8ucmVhc29uPXIsb31yZXR1cm4gT2JqZWN0KHIuX19leHRlbmRzKShlLHQpLGUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIk5hdmlnYXRpb25DYW5jZWwoaWQ6ICIrdGhpcy5pZCsiLCB1cmw6ICciK3RoaXMudXJsKyInKSJ9LGV9KE1zKSxVcz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyKXt2YXIgbz10LmNhbGwodGhpcyxlLG4pfHx0aGlzO3JldHVybiBvLmVycm9yPXIsb31yZXR1cm4gT2JqZWN0KHIuX19leHRlbmRzKShlLHQpLGUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIk5hdmlnYXRpb25FcnJvcihpZDogIit0aGlzLmlkKyIsIHVybDogJyIrdGhpcy51cmwrIicsIGVycm9yOiAiK3RoaXMuZXJyb3IrIikifSxlfShNcyksTHM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scixvKXt2YXIgaT10LmNhbGwodGhpcyxlLG4pfHx0aGlzO3JldHVybiBpLnVybEFmdGVyUmVkaXJlY3RzPXIsaS5zdGF0ZT1vLGl9cmV0dXJuIE9iamVjdChyLl9fZXh0ZW5kcykoZSx0KSxlLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJSb3V0ZXNSZWNvZ25pemVkKGlkOiAiK3RoaXMuaWQrIiwgdXJsOiAnIit0aGlzLnVybCsiJywgdXJsQWZ0ZXJSZWRpcmVjdHM6ICciK3RoaXMudXJsQWZ0ZXJSZWRpcmVjdHMrIicsIHN0YXRlOiAiK3RoaXMuc3RhdGUrIikifSxlfShNcyksVnM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scixvKXt2YXIgaT10LmNhbGwodGhpcyxlLG4pfHx0aGlzO3JldHVybiBpLnVybEFmdGVyUmVkaXJlY3RzPXIsaS5zdGF0ZT1vLGl9cmV0dXJuIE9iamVjdChyLl9fZXh0ZW5kcykoZSx0KSxlLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJHdWFyZHNDaGVja1N0YXJ0KGlkOiAiK3RoaXMuaWQrIiwgdXJsOiAnIit0aGlzLnVybCsiJywgdXJsQWZ0ZXJSZWRpcmVjdHM6ICciK3RoaXMudXJsQWZ0ZXJSZWRpcmVjdHMrIicsIHN0YXRlOiAiK3RoaXMuc3RhdGUrIikifSxlfShNcyksSHM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scixvLGkpe3ZhciBhPXQuY2FsbCh0aGlzLGUsbil8fHRoaXM7cmV0dXJuIGEudXJsQWZ0ZXJSZWRpcmVjdHM9cixhLnN0YXRlPW8sYS5zaG91bGRBY3RpdmF0ZT1pLGF9cmV0dXJuIE9iamVjdChyLl9fZXh0ZW5kcykoZSx0KSxlLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJHdWFyZHNDaGVja0VuZChpZDogIit0aGlzLmlkKyIsIHVybDogJyIrdGhpcy51cmwrIicsIHVybEFmdGVyUmVkaXJlY3RzOiAnIit0aGlzLnVybEFmdGVyUmVkaXJlY3RzKyInLCBzdGF0ZTogIit0aGlzLnN0YXRlKyIsIHNob3VsZEFjdGl2YXRlOiAiK3RoaXMuc2hvdWxkQWN0aXZhdGUrIikifSxlfShNcyksenM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scixvKXt2YXIgaT10LmNhbGwodGhpcyxlLG4pfHx0aGlzO3JldHVybiBpLnVybEFmdGVyUmVkaXJlY3RzPXIsaS5zdGF0ZT1vLGl9cmV0dXJuIE9iamVjdChyLl9fZXh0ZW5kcykoZSx0KSxlLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJSZXNvbHZlU3RhcnQoaWQ6ICIrdGhpcy5pZCsiLCB1cmw6ICciK3RoaXMudXJsKyInLCB1cmxBZnRlclJlZGlyZWN0czogJyIrdGhpcy51cmxBZnRlclJlZGlyZWN0cysiJywgc3RhdGU6ICIrdGhpcy5zdGF0ZSsiKSJ9LGV9KE1zKSxGcz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyLG8pe3ZhciBpPXQuY2FsbCh0aGlzLGUsbil8fHRoaXM7cmV0dXJuIGkudXJsQWZ0ZXJSZWRpcmVjdHM9cixpLnN0YXRlPW8saX1yZXR1cm4gT2JqZWN0KHIuX19leHRlbmRzKShlLHQpLGUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIlJlc29sdmVFbmQoaWQ6ICIrdGhpcy5pZCsiLCB1cmw6ICciK3RoaXMudXJsKyInLCB1cmxBZnRlclJlZGlyZWN0czogJyIrdGhpcy51cmxBZnRlclJlZGlyZWN0cysiJywgc3RhdGU6ICIrdGhpcy5zdGF0ZSsiKSJ9LGV9KE1zKSxCcz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5yb3V0ZT10fXJldHVybiB0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJSb3V0ZUNvbmZpZ0xvYWRTdGFydChwYXRoOiAiK3RoaXMucm91dGUucGF0aCsiKSJ9LHR9KCksWnM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMucm91dGU9dH1yZXR1cm4gdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iUm91dGVDb25maWdMb2FkRW5kKHBhdGg6ICIrdGhpcy5yb3V0ZS5wYXRoKyIpIn0sdH0oKSxHcz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5zbmFwc2hvdD10fXJldHVybiB0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJDaGlsZEFjdGl2YXRpb25TdGFydChwYXRoOiAnIisodGhpcy5zbmFwc2hvdC5yb3V0ZUNvbmZpZyYmdGhpcy5zbmFwc2hvdC5yb3V0ZUNvbmZpZy5wYXRofHwiIikrIicpIn0sdH0oKSxxcz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5zbmFwc2hvdD10fXJldHVybiB0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJDaGlsZEFjdGl2YXRpb25FbmQocGF0aDogJyIrKHRoaXMuc25hcHNob3Qucm91dGVDb25maWcmJnRoaXMuc25hcHNob3Qucm91dGVDb25maWcucGF0aHx8IiIpKyInKSJ9LHR9KCksV3M9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuc25hcHNob3Q9dH1yZXR1cm4gdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iQWN0aXZhdGlvblN0YXJ0KHBhdGg6ICciKyh0aGlzLnNuYXBzaG90LnJvdXRlQ29uZmlnJiZ0aGlzLnNuYXBzaG90LnJvdXRlQ29uZmlnLnBhdGh8fCIiKSsiJykifSx0fSgpLFFzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLnNuYXBzaG90PXR9cmV0dXJuIHQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIkFjdGl2YXRpb25FbmQocGF0aDogJyIrKHRoaXMuc25hcHNob3Qucm91dGVDb25maWcmJnRoaXMuc25hcHNob3Qucm91dGVDb25maWcucGF0aHx8IiIpKyInKSJ9LHR9KCksS3M9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLnJvdXRlckV2ZW50PXQsdGhpcy5wb3NpdGlvbj1lLHRoaXMuYW5jaG9yPW59cmV0dXJuIHQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIlNjcm9sbChhbmNob3I6ICciK3RoaXMuYW5jaG9yKyInLCBwb3NpdGlvbjogJyIrKHRoaXMucG9zaXRpb24/dGhpcy5wb3NpdGlvblswXSsiLCAiK3RoaXMucG9zaXRpb25bMV06bnVsbCkrIicpIn0sdH0oKSxZcz1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe319KCksSnM9InByaW1hcnkiLCRzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLnBhcmFtcz10fHx7fX1yZXR1cm4gdC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnBhcmFtcy5oYXNPd25Qcm9wZXJ0eSh0KX0sdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe2lmKHRoaXMuaGFzKHQpKXt2YXIgZT10aGlzLnBhcmFtc1t0XTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lWzBdOmV9cmV0dXJuIG51bGx9LHQucHJvdG90eXBlLmdldEFsbD1mdW5jdGlvbih0KXtpZih0aGlzLmhhcyh0KSl7dmFyIGU9dGhpcy5wYXJhbXNbdF07cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZTpbZV19cmV0dXJuW119LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwia2V5cyIse2dldDpmdW5jdGlvbigpe3JldHVybiBPYmplY3Qua2V5cyh0aGlzLnBhcmFtcyl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdH0oKTtmdW5jdGlvbiBYcyh0KXtyZXR1cm4gbmV3ICRzKHQpfXZhciB0Yz0ibmdOYXZpZ2F0aW9uQ2FuY2VsaW5nRXJyb3IiO2Z1bmN0aW9uIGVjKHQpe3ZhciBlPUVycm9yKCJOYXZpZ2F0aW9uQ2FuY2VsaW5nRXJyb3I6ICIrdCk7cmV0dXJuIGVbdGNdPSEwLGV9ZnVuY3Rpb24gbmModCxlLG4pe3ZhciByPW4ucGF0aC5zcGxpdCgiLyIpO2lmKHIubGVuZ3RoPnQubGVuZ3RoKXJldHVybiBudWxsO2lmKCJmdWxsIj09PW4ucGF0aE1hdGNoJiYoZS5oYXNDaGlsZHJlbigpfHxyLmxlbmd0aDx0Lmxlbmd0aCkpcmV0dXJuIG51bGw7Zm9yKHZhciBvPXt9LGk9MDtpPHIubGVuZ3RoO2krKyl7dmFyIGE9cltpXSx1PXRbaV07aWYoYS5zdGFydHNXaXRoKCI6Iikpb1thLnN1YnN0cmluZygxKV09dTtlbHNlIGlmKGEhPT11LnBhdGgpcmV0dXJuIG51bGx9cmV0dXJue2NvbnN1bWVkOnQuc2xpY2UoMCxyLmxlbmd0aCkscG9zUGFyYW1zOm99fXZhciByYz1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0LGUpe3RoaXMucm91dGVzPXQsdGhpcy5tb2R1bGU9ZX19KCk7ZnVuY3Rpb24gb2ModCxlKXt2b2lkIDA9PT1lJiYoZT0iIik7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07aWMocixhYyhlLHIpKX19ZnVuY3Rpb24gaWModCxlKXtpZighdCl0aHJvdyBuZXcgRXJyb3IoIlxuICAgICAgSW52YWxpZCBjb25maWd1cmF0aW9uIG9mIHJvdXRlICciK2UrIic6IEVuY291bnRlcmVkIHVuZGVmaW5lZCByb3V0ZS5cbiAgICAgIFRoZSByZWFzb24gbWlnaHQgYmUgYW4gZXh0cmEgY29tbWEuXG5cbiAgICAgIEV4YW1wbGU6XG4gICAgICBjb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAgICAgICAgeyBwYXRoOiAnJywgcmVkaXJlY3RUbzogJy9kYXNoYm9hcmQnLCBwYXRoTWF0Y2g6ICdmdWxsJyB9LFxuICAgICAgICB7IHBhdGg6ICdkYXNoYm9hcmQnLCAgY29tcG9uZW50OiBEYXNoYm9hcmRDb21wb25lbnQgfSwsIDw8IHR3byBjb21tYXNcbiAgICAgICAgeyBwYXRoOiAnZGV0YWlsLzppZCcsIGNvbXBvbmVudDogSGVyb0RldGFpbENvbXBvbmVudCB9XG4gICAgICBdO1xuICAgICIpO2lmKEFycmF5LmlzQXJyYXkodCkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24gb2Ygcm91dGUgJyIrZSsiJzogQXJyYXkgY2Fubm90IGJlIHNwZWNpZmllZCIpO2lmKCF0LmNvbXBvbmVudCYmIXQuY2hpbGRyZW4mJiF0LmxvYWRDaGlsZHJlbiYmdC5vdXRsZXQmJnQub3V0bGV0IT09SnMpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24gb2Ygcm91dGUgJyIrZSsiJzogYSBjb21wb25lbnRsZXNzIHJvdXRlIHdpdGhvdXQgY2hpbGRyZW4gb3IgbG9hZENoaWxkcmVuIGNhbm5vdCBoYXZlIGEgbmFtZWQgb3V0bGV0IHNldCIpO2lmKHQucmVkaXJlY3RUbyYmdC5jaGlsZHJlbil0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgY29uZmlndXJhdGlvbiBvZiByb3V0ZSAnIitlKyInOiByZWRpcmVjdFRvIGFuZCBjaGlsZHJlbiBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciIpO2lmKHQucmVkaXJlY3RUbyYmdC5sb2FkQ2hpbGRyZW4pdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24gb2Ygcm91dGUgJyIrZSsiJzogcmVkaXJlY3RUbyBhbmQgbG9hZENoaWxkcmVuIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIik7aWYodC5jaGlsZHJlbiYmdC5sb2FkQ2hpbGRyZW4pdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24gb2Ygcm91dGUgJyIrZSsiJzogY2hpbGRyZW4gYW5kIGxvYWRDaGlsZHJlbiBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciIpO2lmKHQucmVkaXJlY3RUbyYmdC5jb21wb25lbnQpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24gb2Ygcm91dGUgJyIrZSsiJzogcmVkaXJlY3RUbyBhbmQgY29tcG9uZW50IGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIik7aWYodC5wYXRoJiZ0Lm1hdGNoZXIpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24gb2Ygcm91dGUgJyIrZSsiJzogcGF0aCBhbmQgbWF0Y2hlciBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciIpO2lmKHZvaWQgMD09PXQucmVkaXJlY3RUbyYmIXQuY29tcG9uZW50JiYhdC5jaGlsZHJlbiYmIXQubG9hZENoaWxkcmVuKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBjb25maWd1cmF0aW9uIG9mIHJvdXRlICciK2UrIicuIE9uZSBvZiB0aGUgZm9sbG93aW5nIG11c3QgYmUgcHJvdmlkZWQ6IGNvbXBvbmVudCwgcmVkaXJlY3RUbywgY2hpbGRyZW4gb3IgbG9hZENoaWxkcmVuIik7aWYodm9pZCAwPT09dC5wYXRoJiZ2b2lkIDA9PT10Lm1hdGNoZXIpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24gb2Ygcm91dGUgJyIrZSsiJzogcm91dGVzIG11c3QgaGF2ZSBlaXRoZXIgYSBwYXRoIG9yIGEgbWF0Y2hlciBzcGVjaWZpZWQiKTtpZigic3RyaW5nIj09dHlwZW9mIHQucGF0aCYmIi8iPT09dC5wYXRoLmNoYXJBdCgwKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgY29uZmlndXJhdGlvbiBvZiByb3V0ZSAnIitlKyInOiBwYXRoIGNhbm5vdCBzdGFydCB3aXRoIGEgc2xhc2giKTtpZigiIj09PXQucGF0aCYmdm9pZCAwIT09dC5yZWRpcmVjdFRvJiZ2b2lkIDA9PT10LnBhdGhNYXRjaCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgY29uZmlndXJhdGlvbiBvZiByb3V0ZSAne3BhdGg6IFwiIitlKyciLCByZWRpcmVjdFRvOiAiJyt0LnJlZGlyZWN0VG8rIlwifSc6IHBsZWFzZSBwcm92aWRlICdwYXRoTWF0Y2gnLiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiAncGF0aE1hdGNoJyBpcyAncHJlZml4JywgYnV0IG9mdGVuIHRoZSBpbnRlbnQgaXMgdG8gdXNlICdmdWxsJy4iKTtpZih2b2lkIDAhPT10LnBhdGhNYXRjaCYmImZ1bGwiIT09dC5wYXRoTWF0Y2gmJiJwcmVmaXgiIT09dC5wYXRoTWF0Y2gpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24gb2Ygcm91dGUgJyIrZSsiJzogcGF0aE1hdGNoIGNhbiBvbmx5IGJlIHNldCB0byAncHJlZml4JyBvciAnZnVsbCciKTt0LmNoaWxkcmVuJiZvYyh0LmNoaWxkcmVuLGUpfWZ1bmN0aW9uIGFjKHQsZSl7cmV0dXJuIGU/dHx8ZS5wYXRoP3QmJiFlLnBhdGg/dCsiLyI6IXQmJmUucGF0aD9lLnBhdGg6dCsiLyIrZS5wYXRoOiIiOnR9ZnVuY3Rpb24gdWModCl7dmFyIGU9dC5jaGlsZHJlbiYmdC5jaGlsZHJlbi5tYXAodWMpLG49ZT9PYmplY3Qoci5fX2Fzc2lnbikoe30sdCx7Y2hpbGRyZW46ZX0pOk9iamVjdChyLl9fYXNzaWduKSh7fSx0KTtyZXR1cm4hbi5jb21wb25lbnQmJihlfHxuLmxvYWRDaGlsZHJlbikmJm4ub3V0bGV0JiZuLm91dGxldCE9PUpzJiYobi5jb21wb25lbnQ9WXMpLG59ZnVuY3Rpb24gbGModCxlKXt2YXIgbixyPU9iamVjdC5rZXlzKHQpLG89T2JqZWN0LmtleXMoZSk7aWYoIXJ8fCFvfHxyLmxlbmd0aCE9by5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBpPTA7aTxyLmxlbmd0aDtpKyspaWYodFtuPXJbaV1dIT09ZVtuXSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBzYyh0KXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSx0KX1mdW5jdGlvbiBjYyh0KXtyZXR1cm4gdC5sZW5ndGg+MD90W3QubGVuZ3RoLTFdOm51bGx9ZnVuY3Rpb24gZmModCxlKXtmb3IodmFyIG4gaW4gdCl0Lmhhc093blByb3BlcnR5KG4pJiZlKHRbbl0sbil9ZnVuY3Rpb24gaGModCl7cmV0dXJuIFllKHQpP3Q6S2UodCk/VyhQcm9taXNlLnJlc29sdmUodCkpOlJ1KHQpfWZ1bmN0aW9uIHBjKHQsZSxuKXtyZXR1cm4gbj9mdW5jdGlvbih0LGUpe3JldHVybiBsYyh0LGUpfSh0LnF1ZXJ5UGFyYW1zLGUucXVlcnlQYXJhbXMpJiZmdW5jdGlvbiB0KGUsbil7aWYoIXljKGUuc2VnbWVudHMsbi5zZWdtZW50cykpcmV0dXJuITE7aWYoZS5udW1iZXJPZkNoaWxkcmVuIT09bi5udW1iZXJPZkNoaWxkcmVuKXJldHVybiExO2Zvcih2YXIgciBpbiBuLmNoaWxkcmVuKXtpZighZS5jaGlsZHJlbltyXSlyZXR1cm4hMTtpZighdChlLmNoaWxkcmVuW3JdLG4uY2hpbGRyZW5bcl0pKXJldHVybiExfXJldHVybiEwfSh0LnJvb3QsZS5yb290KTpmdW5jdGlvbih0LGUpe3JldHVybiBPYmplY3Qua2V5cyhlKS5sZW5ndGg8PU9iamVjdC5rZXlzKHQpLmxlbmd0aCYmT2JqZWN0LmtleXMoZSkuZXZlcnkoKGZ1bmN0aW9uKG4pe3JldHVybiBlW25dPT09dFtuXX0pKX0odC5xdWVyeVBhcmFtcyxlLnF1ZXJ5UGFyYW1zKSYmZnVuY3Rpb24gdChlLG4pe3JldHVybiBmdW5jdGlvbiBlKG4scixvKXtpZihuLnNlZ21lbnRzLmxlbmd0aD5vLmxlbmd0aClyZXR1cm4hIXljKGE9bi5zZWdtZW50cy5zbGljZSgwLG8ubGVuZ3RoKSxvKSYmIXIuaGFzQ2hpbGRyZW4oKTtpZihuLnNlZ21lbnRzLmxlbmd0aD09PW8ubGVuZ3RoKXtpZigheWMobi5zZWdtZW50cyxvKSlyZXR1cm4hMTtmb3IodmFyIGkgaW4gci5jaGlsZHJlbil7aWYoIW4uY2hpbGRyZW5baV0pcmV0dXJuITE7aWYoIXQobi5jaGlsZHJlbltpXSxyLmNoaWxkcmVuW2ldKSlyZXR1cm4hMX1yZXR1cm4hMH12YXIgYT1vLnNsaWNlKDAsbi5zZWdtZW50cy5sZW5ndGgpLHU9by5zbGljZShuLnNlZ21lbnRzLmxlbmd0aCk7cmV0dXJuISF5YyhuLnNlZ21lbnRzLGEpJiYhIW4uY2hpbGRyZW5bSnNdJiZlKG4uY2hpbGRyZW5bSnNdLHIsdSl9KGUsbixuLnNlZ21lbnRzKX0odC5yb290LGUucm9vdCl9dmFyIGRjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5yb290PXQsdGhpcy5xdWVyeVBhcmFtcz1lLHRoaXMuZnJhZ21lbnQ9bn1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJxdWVyeVBhcmFtTWFwIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3F1ZXJ5UGFyYW1NYXB8fCh0aGlzLl9xdWVyeVBhcmFtTWFwPVhzKHRoaXMucXVlcnlQYXJhbXMpKSx0aGlzLl9xdWVyeVBhcmFtTWFwfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIGJjLnNlcmlhbGl6ZSh0aGlzKX0sdH0oKSxnYz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt2YXIgbj10aGlzO3RoaXMuc2VnbWVudHM9dCx0aGlzLmNoaWxkcmVuPWUsdGhpcy5wYXJlbnQ9bnVsbCxmYyhlLChmdW5jdGlvbih0LGUpe3JldHVybiB0LnBhcmVudD1ufSkpfXJldHVybiB0LnByb3RvdHlwZS5oYXNDaGlsZHJlbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm51bWJlck9mQ2hpbGRyZW4+MH0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJudW1iZXJPZkNoaWxkcmVuIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY2hpbGRyZW4pLmxlbmd0aH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB4Yyh0aGlzKX0sdH0oKSx2Yz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLnBhdGg9dCx0aGlzLnBhcmFtZXRlcnM9ZX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJwYXJhbWV0ZXJNYXAiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyYW1ldGVyTWFwfHwodGhpcy5fcGFyYW1ldGVyTWFwPVhzKHRoaXMucGFyYW1ldGVycykpLHRoaXMuX3BhcmFtZXRlck1hcH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBQYyh0aGlzKX0sdH0oKTtmdW5jdGlvbiB5Yyh0LGUpe3JldHVybiB0Lmxlbmd0aD09PWUubGVuZ3RoJiZ0LmV2ZXJ5KChmdW5jdGlvbih0LG4pe3JldHVybiB0LnBhdGg9PT1lW25dLnBhdGh9KSl9ZnVuY3Rpb24gbWModCxlKXt2YXIgbj1bXTtyZXR1cm4gZmModC5jaGlsZHJlbiwoZnVuY3Rpb24odCxyKXtyPT09SnMmJihuPW4uY29uY2F0KGUodCxyKSkpfSkpLGZjKHQuY2hpbGRyZW4sKGZ1bmN0aW9uKHQscil7ciE9PUpzJiYobj1uLmNvbmNhdChlKHQscikpKX0pKSxufXZhciBfYz1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe319KCksd2M9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbih0KXt2YXIgZT1uZXcgTWModCk7cmV0dXJuIG5ldyBkYyhlLnBhcnNlUm9vdFNlZ21lbnQoKSxlLnBhcnNlUXVlcnlQYXJhbXMoKSxlLnBhcnNlRnJhZ21lbnQoKSl9LHQucHJvdG90eXBlLnNlcmlhbGl6ZT1mdW5jdGlvbih0KXt2YXIgZSxuO3JldHVybiIvIitmdW5jdGlvbiB0KGUsbil7aWYoIWUuaGFzQ2hpbGRyZW4oKSlyZXR1cm4geGMoZSk7aWYobil7dmFyIHI9ZS5jaGlsZHJlbltKc10/dChlLmNoaWxkcmVuW0pzXSwhMSk6IiIsbz1bXTtyZXR1cm4gZmMoZS5jaGlsZHJlbiwoZnVuY3Rpb24oZSxuKXtuIT09SnMmJm8ucHVzaChuKyI6Iit0KGUsITEpKX0pKSxvLmxlbmd0aD4wP3IrIigiK28uam9pbigiLy8iKSsiKSI6cn12YXIgaT1tYyhlLChmdW5jdGlvbihuLHIpe3JldHVybiByPT09SnM/W3QoZS5jaGlsZHJlbltKc10sITEpXTpbcisiOiIrdChuLCExKV19KSk7cmV0dXJuIHhjKGUpKyIvKCIraS5qb2luKCIvLyIpKyIpIn0odC5yb290LCEwKSsoZT10LnF1ZXJ5UGFyYW1zLChuPU9iamVjdC5rZXlzKGUpLm1hcCgoZnVuY3Rpb24odCl7dmFyIG49ZVt0XTtyZXR1cm4gQXJyYXkuaXNBcnJheShuKT9uLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIFNjKHQpKyI9IitTYyhlKX0pKS5qb2luKCImIik6U2ModCkrIj0iK1NjKG4pfSkpKS5sZW5ndGg/Ij8iK24uam9pbigiJiIpOiIiKSsoInN0cmluZyI9PXR5cGVvZiB0LmZyYWdtZW50PyIjIitlbmNvZGVVUkkodC5mcmFnbWVudCk6IiIpfSx0fSgpLGJjPW5ldyB3YztmdW5jdGlvbiB4Yyh0KXtyZXR1cm4gdC5zZWdtZW50cy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBQYyh0KX0pKS5qb2luKCIvIil9ZnVuY3Rpb24gQ2ModCl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCh0KS5yZXBsYWNlKC8lNDAvZywiQCIpLnJlcGxhY2UoLyUzQS9naSwiOiIpLnJlcGxhY2UoLyUyNC9nLCIkIikucmVwbGFjZSgvJTJDL2dpLCIsIil9ZnVuY3Rpb24gU2ModCl7cmV0dXJuIENjKHQpLnJlcGxhY2UoLyUzQi9naSwiOyIpfWZ1bmN0aW9uIEVjKHQpe3JldHVybiBDYyh0KS5yZXBsYWNlKC9cKC9nLCIlMjgiKS5yZXBsYWNlKC9cKS9nLCIlMjkiKS5yZXBsYWNlKC8lMjYvZ2ksIiYiKX1mdW5jdGlvbiBPYyh0KXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHQpfWZ1bmN0aW9uIFRjKHQpe3JldHVybiBPYyh0LnJlcGxhY2UoL1wrL2csIiUyMCIpKX1mdW5jdGlvbiBQYyh0KXtyZXR1cm4iIitFYyh0LnBhdGgpKyhlPXQucGFyYW1ldGVycyxPYmplY3Qua2V5cyhlKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiI7IitFYyh0KSsiPSIrRWMoZVt0XSl9KSkuam9pbigiIikpO3ZhciBlfXZhciBrYz0vXlteXC8oKT87PSNdKy87ZnVuY3Rpb24gQWModCl7dmFyIGU9dC5tYXRjaChrYyk7cmV0dXJuIGU/ZVswXToiIn12YXIgSWM9L15bXj0/JiNdKy8sUmM9L15bXj8mI10rLyxNYz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy51cmw9dCx0aGlzLnJlbWFpbmluZz10fXJldHVybiB0LnByb3RvdHlwZS5wYXJzZVJvb3RTZWdtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29uc3VtZU9wdGlvbmFsKCIvIiksIiI9PT10aGlzLnJlbWFpbmluZ3x8dGhpcy5wZWVrU3RhcnRzV2l0aCgiPyIpfHx0aGlzLnBlZWtTdGFydHNXaXRoKCIjIik/bmV3IGdjKFtdLHt9KTpuZXcgZ2MoW10sdGhpcy5wYXJzZUNoaWxkcmVuKCkpfSx0LnByb3RvdHlwZS5wYXJzZVF1ZXJ5UGFyYW1zPWZ1bmN0aW9uKCl7dmFyIHQ9e307aWYodGhpcy5jb25zdW1lT3B0aW9uYWwoIj8iKSlkb3t0aGlzLnBhcnNlUXVlcnlQYXJhbSh0KX13aGlsZSh0aGlzLmNvbnN1bWVPcHRpb25hbCgiJiIpKTtyZXR1cm4gdH0sdC5wcm90b3R5cGUucGFyc2VGcmFnbWVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnN1bWVPcHRpb25hbCgiIyIpP2RlY29kZVVSSUNvbXBvbmVudCh0aGlzLnJlbWFpbmluZyk6bnVsbH0sdC5wcm90b3R5cGUucGFyc2VDaGlsZHJlbj1mdW5jdGlvbigpe2lmKCIiPT09dGhpcy5yZW1haW5pbmcpcmV0dXJue307dGhpcy5jb25zdW1lT3B0aW9uYWwoIi8iKTt2YXIgdD1bXTtmb3IodGhpcy5wZWVrU3RhcnRzV2l0aCgiKCIpfHx0LnB1c2godGhpcy5wYXJzZVNlZ21lbnQoKSk7dGhpcy5wZWVrU3RhcnRzV2l0aCgiLyIpJiYhdGhpcy5wZWVrU3RhcnRzV2l0aCgiLy8iKSYmIXRoaXMucGVla1N0YXJ0c1dpdGgoIi8oIik7KXRoaXMuY2FwdHVyZSgiLyIpLHQucHVzaCh0aGlzLnBhcnNlU2VnbWVudCgpKTt2YXIgZT17fTt0aGlzLnBlZWtTdGFydHNXaXRoKCIvKCIpJiYodGhpcy5jYXB0dXJlKCIvIiksZT10aGlzLnBhcnNlUGFyZW5zKCEwKSk7dmFyIG49e307cmV0dXJuIHRoaXMucGVla1N0YXJ0c1dpdGgoIigiKSYmKG49dGhpcy5wYXJzZVBhcmVucyghMSkpLCh0Lmxlbmd0aD4wfHxPYmplY3Qua2V5cyhlKS5sZW5ndGg+MCkmJihuW0pzXT1uZXcgZ2ModCxlKSksbn0sdC5wcm90b3R5cGUucGFyc2VTZWdtZW50PWZ1bmN0aW9uKCl7dmFyIHQ9QWModGhpcy5yZW1haW5pbmcpO2lmKCIiPT09dCYmdGhpcy5wZWVrU3RhcnRzV2l0aCgiOyIpKXRocm93IG5ldyBFcnJvcigiRW1wdHkgcGF0aCB1cmwgc2VnbWVudCBjYW5ub3QgaGF2ZSBwYXJhbWV0ZXJzOiAnIit0aGlzLnJlbWFpbmluZysiJy4iKTtyZXR1cm4gdGhpcy5jYXB0dXJlKHQpLG5ldyB2YyhPYyh0KSx0aGlzLnBhcnNlTWF0cml4UGFyYW1zKCkpfSx0LnByb3RvdHlwZS5wYXJzZU1hdHJpeFBhcmFtcz1mdW5jdGlvbigpe2Zvcih2YXIgdD17fTt0aGlzLmNvbnN1bWVPcHRpb25hbCgiOyIpOyl0aGlzLnBhcnNlUGFyYW0odCk7cmV0dXJuIHR9LHQucHJvdG90eXBlLnBhcnNlUGFyYW09ZnVuY3Rpb24odCl7dmFyIGU9QWModGhpcy5yZW1haW5pbmcpO2lmKGUpe3RoaXMuY2FwdHVyZShlKTt2YXIgbj0iIjtpZih0aGlzLmNvbnN1bWVPcHRpb25hbCgiPSIpKXt2YXIgcj1BYyh0aGlzLnJlbWFpbmluZyk7ciYmdGhpcy5jYXB0dXJlKG49cil9dFtPYyhlKV09T2Mobil9fSx0LnByb3RvdHlwZS5wYXJzZVF1ZXJ5UGFyYW09ZnVuY3Rpb24odCl7dmFyIGUsbj0oZT10aGlzLnJlbWFpbmluZy5tYXRjaChJYykpP2VbMF06IiI7aWYobil7dGhpcy5jYXB0dXJlKG4pO3ZhciByPSIiO2lmKHRoaXMuY29uc3VtZU9wdGlvbmFsKCI9Iikpe3ZhciBvPWZ1bmN0aW9uKHQpe3ZhciBlPXQubWF0Y2goUmMpO3JldHVybiBlP2VbMF06IiJ9KHRoaXMucmVtYWluaW5nKTtvJiZ0aGlzLmNhcHR1cmUocj1vKX12YXIgaT1UYyhuKSxhPVRjKHIpO2lmKHQuaGFzT3duUHJvcGVydHkoaSkpe3ZhciB1PXRbaV07QXJyYXkuaXNBcnJheSh1KXx8KHRbaV09dT1bdV0pLHUucHVzaChhKX1lbHNlIHRbaV09YX19LHQucHJvdG90eXBlLnBhcnNlUGFyZW5zPWZ1bmN0aW9uKHQpe3ZhciBlPXt9O2Zvcih0aGlzLmNhcHR1cmUoIigiKTshdGhpcy5jb25zdW1lT3B0aW9uYWwoIikiKSYmdGhpcy5yZW1haW5pbmcubGVuZ3RoPjA7KXt2YXIgbj1BYyh0aGlzLnJlbWFpbmluZykscj10aGlzLnJlbWFpbmluZ1tuLmxlbmd0aF07aWYoIi8iIT09ciYmIikiIT09ciYmIjsiIT09cil0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBwYXJzZSB1cmwgJyIrdGhpcy51cmwrIiciKTt2YXIgbz12b2lkIDA7bi5pbmRleE9mKCI6Iik+LTE/KG89bi5zdWJzdHIoMCxuLmluZGV4T2YoIjoiKSksdGhpcy5jYXB0dXJlKG8pLHRoaXMuY2FwdHVyZSgiOiIpKTp0JiYobz1Kcyk7dmFyIGk9dGhpcy5wYXJzZUNoaWxkcmVuKCk7ZVtvXT0xPT09T2JqZWN0LmtleXMoaSkubGVuZ3RoP2lbSnNdOm5ldyBnYyhbXSxpKSx0aGlzLmNvbnN1bWVPcHRpb25hbCgiLy8iKX1yZXR1cm4gZX0sdC5wcm90b3R5cGUucGVla1N0YXJ0c1dpdGg9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmVtYWluaW5nLnN0YXJ0c1dpdGgodCl9LHQucHJvdG90eXBlLmNvbnN1bWVPcHRpb25hbD1mdW5jdGlvbih0KXtyZXR1cm4hIXRoaXMucGVla1N0YXJ0c1dpdGgodCkmJih0aGlzLnJlbWFpbmluZz10aGlzLnJlbWFpbmluZy5zdWJzdHJpbmcodC5sZW5ndGgpLCEwKX0sdC5wcm90b3R5cGUuY2FwdHVyZT1mdW5jdGlvbih0KXtpZighdGhpcy5jb25zdW1lT3B0aW9uYWwodCkpdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCAiJyt0KyciLicpfSx0fSgpLGpjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9yb290PXR9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicm9vdCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yb290LnZhbHVlfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLnBhcmVudD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLnBhdGhGcm9tUm9vdCh0KTtyZXR1cm4gZS5sZW5ndGg+MT9lW2UubGVuZ3RoLTJdOm51bGx9LHQucHJvdG90eXBlLmNoaWxkcmVuPWZ1bmN0aW9uKHQpe3ZhciBlPU5jKHQsdGhpcy5fcm9vdCk7cmV0dXJuIGU/ZS5jaGlsZHJlbi5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnZhbHVlfSkpOltdfSx0LnByb3RvdHlwZS5maXJzdENoaWxkPWZ1bmN0aW9uKHQpe3ZhciBlPU5jKHQsdGhpcy5fcm9vdCk7cmV0dXJuIGUmJmUuY2hpbGRyZW4ubGVuZ3RoPjA/ZS5jaGlsZHJlblswXS52YWx1ZTpudWxsfSx0LnByb3RvdHlwZS5zaWJsaW5ncz1mdW5jdGlvbih0KXt2YXIgZT1EYyh0LHRoaXMuX3Jvb3QpO3JldHVybiBlLmxlbmd0aDwyP1tdOmVbZS5sZW5ndGgtMl0uY2hpbGRyZW4ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC52YWx1ZX0pKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlIT09dH0pKX0sdC5wcm90b3R5cGUucGF0aEZyb21Sb290PWZ1bmN0aW9uKHQpe3JldHVybiBEYyh0LHRoaXMuX3Jvb3QpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQudmFsdWV9KSl9LHR9KCk7ZnVuY3Rpb24gTmModCxlKXt2YXIgbixvO2lmKHQ9PT1lLnZhbHVlKXJldHVybiBlO3RyeXtmb3IodmFyIGk9T2JqZWN0KHIuX192YWx1ZXMpKGUuY2hpbGRyZW4pLGE9aS5uZXh0KCk7IWEuZG9uZTthPWkubmV4dCgpKXt2YXIgdT1OYyh0LGEudmFsdWUpO2lmKHUpcmV0dXJuIHV9fWNhdGNoKGwpe249e2Vycm9yOmx9fWZpbmFsbHl7dHJ5e2EmJiFhLmRvbmUmJihvPWkucmV0dXJuKSYmby5jYWxsKGkpfWZpbmFsbHl7aWYobil0aHJvdyBuLmVycm9yfX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBEYyh0LGUpe3ZhciBuLG87aWYodD09PWUudmFsdWUpcmV0dXJuW2VdO3RyeXtmb3IodmFyIGk9T2JqZWN0KHIuX192YWx1ZXMpKGUuY2hpbGRyZW4pLGE9aS5uZXh0KCk7IWEuZG9uZTthPWkubmV4dCgpKXt2YXIgdT1EYyh0LGEudmFsdWUpO2lmKHUubGVuZ3RoKXJldHVybiB1LnVuc2hpZnQoZSksdX19Y2F0Y2gobCl7bj17ZXJyb3I6bH19ZmluYWxseXt0cnl7YSYmIWEuZG9uZSYmKG89aS5yZXR1cm4pJiZvLmNhbGwoaSl9ZmluYWxseXtpZihuKXRocm93IG4uZXJyb3J9fXJldHVybltdfXZhciBVYz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLnZhbHVlPXQsdGhpcy5jaGlsZHJlbj1lfXJldHVybiB0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJUcmVlTm9kZSgiK3RoaXMudmFsdWUrIikifSx0fSgpO2Z1bmN0aW9uIExjKHQpe3ZhciBlPXt9O3JldHVybiB0JiZ0LmNoaWxkcmVuLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBlW3QudmFsdWUub3V0bGV0XT10fSkpLGV9dmFyIFZjPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt2YXIgcj10LmNhbGwodGhpcyxlKXx8dGhpcztyZXR1cm4gci5zbmFwc2hvdD1uLEdjKHIsZSkscn1yZXR1cm4gT2JqZWN0KHIuX19leHRlbmRzKShlLHQpLGUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc25hcHNob3QudG9TdHJpbmcoKX0sZX0oamMpO2Z1bmN0aW9uIEhjKHQsZSl7dmFyIG49ZnVuY3Rpb24odCxlKXt2YXIgbj1uZXcgQmMoW10se30se30sIiIse30sSnMsZSxudWxsLHQucm9vdCwtMSx7fSk7cmV0dXJuIG5ldyBaYygiIixuZXcgVWMobixbXSkpfSh0LGUpLHI9bmV3IE11KFtuZXcgdmMoIiIse30pXSksbz1uZXcgTXUoe30pLGk9bmV3IE11KHt9KSxhPW5ldyBNdSh7fSksdT1uZXcgTXUoIiIpLGw9bmV3IHpjKHIsbyxhLHUsaSxKcyxlLG4ucm9vdCk7cmV0dXJuIGwuc25hcHNob3Q9bi5yb290LG5ldyBWYyhuZXcgVWMobCxbXSksbil9dmFyIHpjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbixyLG8saSxhLHUpe3RoaXMudXJsPXQsdGhpcy5wYXJhbXM9ZSx0aGlzLnF1ZXJ5UGFyYW1zPW4sdGhpcy5mcmFnbWVudD1yLHRoaXMuZGF0YT1vLHRoaXMub3V0bGV0PWksdGhpcy5jb21wb25lbnQ9YSx0aGlzLl9mdXR1cmVTbmFwc2hvdD11fXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInJvdXRlQ29uZmlnIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Z1dHVyZVNuYXBzaG90LnJvdXRlQ29uZmlnfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicm9vdCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yb3V0ZXJTdGF0ZS5yb290fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicGFyZW50Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JvdXRlclN0YXRlLnBhcmVudCh0aGlzKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImZpcnN0Q2hpbGQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcm91dGVyU3RhdGUuZmlyc3RDaGlsZCh0aGlzKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImNoaWxkcmVuIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JvdXRlclN0YXRlLmNoaWxkcmVuKHRoaXMpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicGF0aEZyb21Sb290Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JvdXRlclN0YXRlLnBhdGhGcm9tUm9vdCh0aGlzKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInBhcmFtTWFwIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcmFtTWFwfHwodGhpcy5fcGFyYW1NYXA9dGhpcy5wYXJhbXMucGlwZShCKChmdW5jdGlvbih0KXtyZXR1cm4gWHModCl9KSkpKSx0aGlzLl9wYXJhbU1hcH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInF1ZXJ5UGFyYW1NYXAiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcXVlcnlQYXJhbU1hcHx8KHRoaXMuX3F1ZXJ5UGFyYW1NYXA9dGhpcy5xdWVyeVBhcmFtcy5waXBlKEIoKGZ1bmN0aW9uKHQpe3JldHVybiBYcyh0KX0pKSkpLHRoaXMuX3F1ZXJ5UGFyYW1NYXB9LGVudW1lcmFibGU6ITAsYw=="
                },
                {
                    "key": "asdf?main.e3350ff4d88d534234ef.js?4?1?2",
                    "type": "binary",
                    "value": "base64:b25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNuYXBzaG90P3RoaXMuc25hcHNob3QudG9TdHJpbmcoKToiRnV0dXJlKCIrdGhpcy5fZnV0dXJlU25hcHNob3QrIikifSx0fSgpO2Z1bmN0aW9uIEZjKHQsZSl7dm9pZCAwPT09ZSYmKGU9ImVtcHR5T25seSIpO3ZhciBuPXQucGF0aEZyb21Sb290LG89MDtpZigiYWx3YXlzIiE9PWUpZm9yKG89bi5sZW5ndGgtMTtvPj0xOyl7dmFyIGk9bltvXSxhPW5bby0xXTtpZihpLnJvdXRlQ29uZmlnJiYiIj09PWkucm91dGVDb25maWcucGF0aClvLS07ZWxzZXtpZihhLmNvbXBvbmVudClicmVhaztvLS19fXJldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gdC5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJue3BhcmFtczpPYmplY3Qoci5fX2Fzc2lnbikoe30sdC5wYXJhbXMsZS5wYXJhbXMpLGRhdGE6T2JqZWN0KHIuX19hc3NpZ24pKHt9LHQuZGF0YSxlLmRhdGEpLHJlc29sdmU6T2JqZWN0KHIuX19hc3NpZ24pKHt9LHQucmVzb2x2ZSxlLl9yZXNvbHZlZERhdGEpfX0pLHtwYXJhbXM6e30sZGF0YTp7fSxyZXNvbHZlOnt9fSl9KG4uc2xpY2UobykpfXZhciBCYz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4scixvLGksYSx1LGwscyxjKXt0aGlzLnVybD10LHRoaXMucGFyYW1zPWUsdGhpcy5xdWVyeVBhcmFtcz1uLHRoaXMuZnJhZ21lbnQ9cix0aGlzLmRhdGE9byx0aGlzLm91dGxldD1pLHRoaXMuY29tcG9uZW50PWEsdGhpcy5yb3V0ZUNvbmZpZz11LHRoaXMuX3VybFNlZ21lbnQ9bCx0aGlzLl9sYXN0UGF0aEluZGV4PXMsdGhpcy5fcmVzb2x2ZT1jfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInJvb3QiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcm91dGVyU3RhdGUucm9vdH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInBhcmVudCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yb3V0ZXJTdGF0ZS5wYXJlbnQodGhpcyl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJmaXJzdENoaWxkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JvdXRlclN0YXRlLmZpcnN0Q2hpbGQodGhpcyl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJjaGlsZHJlbiIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yb3V0ZXJTdGF0ZS5jaGlsZHJlbih0aGlzKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInBhdGhGcm9tUm9vdCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yb3V0ZXJTdGF0ZS5wYXRoRnJvbVJvb3QodGhpcyl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJwYXJhbU1hcCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXJhbU1hcHx8KHRoaXMuX3BhcmFtTWFwPVhzKHRoaXMucGFyYW1zKSksdGhpcy5fcGFyYW1NYXB9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJxdWVyeVBhcmFtTWFwIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3F1ZXJ5UGFyYW1NYXB8fCh0aGlzLl9xdWVyeVBhcmFtTWFwPVhzKHRoaXMucXVlcnlQYXJhbXMpKSx0aGlzLl9xdWVyeVBhcmFtTWFwfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIlJvdXRlKHVybDonIit0aGlzLnVybC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRvU3RyaW5nKCl9KSkuam9pbigiLyIpKyInLCBwYXRoOiciKyh0aGlzLnJvdXRlQ29uZmlnP3RoaXMucm91dGVDb25maWcucGF0aDoiIikrIicpIn0sdH0oKSxaYz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dmFyIHI9dC5jYWxsKHRoaXMsbil8fHRoaXM7cmV0dXJuIHIudXJsPWUsR2MocixuKSxyfXJldHVybiBPYmplY3Qoci5fX2V4dGVuZHMpKGUsdCksZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gcWModGhpcy5fcm9vdCl9LGV9KGpjKTtmdW5jdGlvbiBHYyh0LGUpe2UudmFsdWUuX3JvdXRlclN0YXRlPXQsZS5jaGlsZHJlbi5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gR2ModCxlKX0pKX1mdW5jdGlvbiBxYyh0KXt2YXIgZT10LmNoaWxkcmVuLmxlbmd0aD4wPyIgeyAiK3QuY2hpbGRyZW4ubWFwKHFjKS5qb2luKCIsICIpKyIgfSAiOiIiO3JldHVybiIiK3QudmFsdWUrZX1mdW5jdGlvbiBXYyh0KXtpZih0LnNuYXBzaG90KXt2YXIgZT10LnNuYXBzaG90LG49dC5fZnV0dXJlU25hcHNob3Q7dC5zbmFwc2hvdD1uLGxjKGUucXVlcnlQYXJhbXMsbi5xdWVyeVBhcmFtcyl8fHQucXVlcnlQYXJhbXMubmV4dChuLnF1ZXJ5UGFyYW1zKSxlLmZyYWdtZW50IT09bi5mcmFnbWVudCYmdC5mcmFnbWVudC5uZXh0KG4uZnJhZ21lbnQpLGxjKGUucGFyYW1zLG4ucGFyYW1zKXx8dC5wYXJhbXMubmV4dChuLnBhcmFtcyksZnVuY3Rpb24odCxlKXtpZih0Lmxlbmd0aCE9PWUubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgbj0wO248dC5sZW5ndGg7KytuKWlmKCFsYyh0W25dLGVbbl0pKXJldHVybiExO3JldHVybiEwfShlLnVybCxuLnVybCl8fHQudXJsLm5leHQobi51cmwpLGxjKGUuZGF0YSxuLmRhdGEpfHx0LmRhdGEubmV4dChuLmRhdGEpfWVsc2UgdC5zbmFwc2hvdD10Ll9mdXR1cmVTbmFwc2hvdCx0LmRhdGEubmV4dCh0Ll9mdXR1cmVTbmFwc2hvdC5kYXRhKX1mdW5jdGlvbiBRYyh0LGUpe3ZhciBuLHI7cmV0dXJuIGxjKHQucGFyYW1zLGUucGFyYW1zKSYmeWMobj10LnVybCxyPWUudXJsKSYmbi5ldmVyeSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gbGModC5wYXJhbWV0ZXJzLHJbZV0ucGFyYW1ldGVycyl9KSkmJiEoIXQucGFyZW50IT0hZS5wYXJlbnQpJiYoIXQucGFyZW50fHxRYyh0LnBhcmVudCxlLnBhcmVudCkpfWZ1bmN0aW9uIEtjKHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgdCYmbnVsbCE9dCYmIXQub3V0bGV0cyYmIXQuc2VnbWVudFBhdGh9ZnVuY3Rpb24gWWModCxlLG4scixvKXt2YXIgaT17fTtyZXR1cm4gciYmZmMociwoZnVuY3Rpb24odCxlKXtpW2VdPUFycmF5LmlzQXJyYXkodCk/dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiIiK3R9KSk6IiIrdH0pKSxuZXcgZGMobi5yb290PT09dD9lOmZ1bmN0aW9uIHQoZSxuLHIpe3ZhciBvPXt9O3JldHVybiBmYyhlLmNoaWxkcmVuLChmdW5jdGlvbihlLGkpe29baV09ZT09PW4/cjp0KGUsbixyKX0pKSxuZXcgZ2MoZS5zZWdtZW50cyxvKX0obi5yb290LHQsZSksaSxvKX12YXIgSmM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXtpZih0aGlzLmlzQWJzb2x1dGU9dCx0aGlzLm51bWJlck9mRG91YmxlRG90cz1lLHRoaXMuY29tbWFuZHM9bix0JiZuLmxlbmd0aD4wJiZLYyhuWzBdKSl0aHJvdyBuZXcgRXJyb3IoIlJvb3Qgc2VnbWVudCBjYW5ub3QgaGF2ZSBtYXRyaXggcGFyYW1ldGVycyIpO3ZhciByPW4uZmluZCgoZnVuY3Rpb24odCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT10JiZ0Lm91dGxldHN9KSk7aWYociYmciE9PWNjKG4pKXRocm93IG5ldyBFcnJvcigie291dGxldHM6e319IGhhcyB0byBiZSB0aGUgbGFzdCBjb21tYW5kIil9cmV0dXJuIHQucHJvdG90eXBlLnRvUm9vdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzQWJzb2x1dGUmJjE9PT10aGlzLmNvbW1hbmRzLmxlbmd0aCYmIi8iPT10aGlzLmNvbW1hbmRzWzBdfSx0fSgpLCRjPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSxuKXt0aGlzLnNlZ21lbnRHcm91cD10LHRoaXMucHJvY2Vzc0NoaWxkcmVuPWUsdGhpcy5pbmRleD1ufX0oKTtmdW5jdGlvbiBYYyh0KXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQmJm51bGwhPXQmJnQub3V0bGV0cz90Lm91dGxldHNbSnNdOiIiK3R9ZnVuY3Rpb24gdGYodCxlLG4pe2lmKHR8fCh0PW5ldyBnYyhbXSx7fSkpLDA9PT10LnNlZ21lbnRzLmxlbmd0aCYmdC5oYXNDaGlsZHJlbigpKXJldHVybiBlZih0LGUsbik7dmFyIHI9ZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgcj0wLG89ZSxpPXttYXRjaDohMSxwYXRoSW5kZXg6MCxjb21tYW5kSW5kZXg6MH07bzx0LnNlZ21lbnRzLmxlbmd0aDspe2lmKHI+PW4ubGVuZ3RoKXJldHVybiBpO3ZhciBhPXQuc2VnbWVudHNbb10sdT1YYyhuW3JdKSxsPXI8bi5sZW5ndGgtMT9uW3IrMV06bnVsbDtpZihvPjAmJnZvaWQgMD09PXUpYnJlYWs7aWYodSYmbCYmIm9iamVjdCI9PXR5cGVvZiBsJiZ2b2lkIDA9PT1sLm91dGxldHMpe2lmKCFhZih1LGwsYSkpcmV0dXJuIGk7cis9Mn1lbHNle2lmKCFhZih1LHt9LGEpKXJldHVybiBpO3IrK31vKyt9cmV0dXJue21hdGNoOiEwLHBhdGhJbmRleDpvLGNvbW1hbmRJbmRleDpyfX0odCxlLG4pLG89bi5zbGljZShyLmNvbW1hbmRJbmRleCk7aWYoci5tYXRjaCYmci5wYXRoSW5kZXg8dC5zZWdtZW50cy5sZW5ndGgpe3ZhciBpPW5ldyBnYyh0LnNlZ21lbnRzLnNsaWNlKDAsci5wYXRoSW5kZXgpLHt9KTtyZXR1cm4gaS5jaGlsZHJlbltKc109bmV3IGdjKHQuc2VnbWVudHMuc2xpY2Uoci5wYXRoSW5kZXgpLHQuY2hpbGRyZW4pLGVmKGksMCxvKX1yZXR1cm4gci5tYXRjaCYmMD09PW8ubGVuZ3RoP25ldyBnYyh0LnNlZ21lbnRzLHt9KTpyLm1hdGNoJiYhdC5oYXNDaGlsZHJlbigpP25mKHQsZSxuKTpyLm1hdGNoP2VmKHQsMCxvKTpuZih0LGUsbil9ZnVuY3Rpb24gZWYodCxlLG4pe2lmKDA9PT1uLmxlbmd0aClyZXR1cm4gbmV3IGdjKHQuc2VnbWVudHMse30pO3ZhciByPWZ1bmN0aW9uKHQpe3ZhciBlLG47cmV0dXJuIm9iamVjdCIhPXR5cGVvZiB0WzBdPygoZT17fSlbSnNdPXQsZSk6dm9pZCAwPT09dFswXS5vdXRsZXRzPygobj17fSlbSnNdPXQsbik6dFswXS5vdXRsZXRzfShuKSxvPXt9O3JldHVybiBmYyhyLChmdW5jdGlvbihuLHIpe251bGwhPT1uJiYob1tyXT10Zih0LmNoaWxkcmVuW3JdLGUsbikpfSkpLGZjKHQuY2hpbGRyZW4sKGZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09cltlXSYmKG9bZV09dCl9KSksbmV3IGdjKHQuc2VnbWVudHMsbyl9ZnVuY3Rpb24gbmYodCxlLG4pe2Zvcih2YXIgcj10LnNlZ21lbnRzLnNsaWNlKDAsZSksbz0wO288bi5sZW5ndGg7KXtpZigib2JqZWN0Ij09dHlwZW9mIG5bb10mJnZvaWQgMCE9PW5bb10ub3V0bGV0cyl7dmFyIGk9cmYobltvXS5vdXRsZXRzKTtyZXR1cm4gbmV3IGdjKHIsaSl9aWYoMD09PW8mJktjKG5bMF0pKXIucHVzaChuZXcgdmModC5zZWdtZW50c1tlXS5wYXRoLG5bMF0pKSxvKys7ZWxzZXt2YXIgYT1YYyhuW29dKSx1PW88bi5sZW5ndGgtMT9uW28rMV06bnVsbDthJiZ1JiZLYyh1KT8oci5wdXNoKG5ldyB2YyhhLG9mKHUpKSksbys9Mik6KHIucHVzaChuZXcgdmMoYSx7fSkpLG8rKyl9fXJldHVybiBuZXcgZ2Mocix7fSl9ZnVuY3Rpb24gcmYodCl7dmFyIGU9e307cmV0dXJuIGZjKHQsKGZ1bmN0aW9uKHQsbil7bnVsbCE9PXQmJihlW25dPW5mKG5ldyBnYyhbXSx7fSksMCx0KSl9KSksZX1mdW5jdGlvbiBvZih0KXt2YXIgZT17fTtyZXR1cm4gZmModCwoZnVuY3Rpb24odCxuKXtyZXR1cm4gZVtuXT0iIit0fSkpLGV9ZnVuY3Rpb24gYWYodCxlLG4pe3JldHVybiB0PT1uLnBhdGgmJmxjKGUsbi5wYXJhbWV0ZXJzKX12YXIgdWY9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuLHIpe3RoaXMucm91dGVSZXVzZVN0cmF0ZWd5PXQsdGhpcy5mdXR1cmVTdGF0ZT1lLHRoaXMuY3VyclN0YXRlPW4sdGhpcy5mb3J3YXJkRXZlbnQ9cn1yZXR1cm4gdC5wcm90b3R5cGUuYWN0aXZhdGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5mdXR1cmVTdGF0ZS5fcm9vdCxuPXRoaXMuY3VyclN0YXRlP3RoaXMuY3VyclN0YXRlLl9yb290Om51bGw7dGhpcy5kZWFjdGl2YXRlQ2hpbGRSb3V0ZXMoZSxuLHQpLFdjKHRoaXMuZnV0dXJlU3RhdGUucm9vdCksdGhpcy5hY3RpdmF0ZUNoaWxkUm91dGVzKGUsbix0KX0sdC5wcm90b3R5cGUuZGVhY3RpdmF0ZUNoaWxkUm91dGVzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj10aGlzLG89TGMoZSk7dC5jaGlsZHJlbi5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10LnZhbHVlLm91dGxldDtyLmRlYWN0aXZhdGVSb3V0ZXModCxvW2VdLG4pLGRlbGV0ZSBvW2VdfSkpLGZjKG8sKGZ1bmN0aW9uKHQsZSl7ci5kZWFjdGl2YXRlUm91dGVBbmRJdHNDaGlsZHJlbih0LG4pfSkpfSx0LnByb3RvdHlwZS5kZWFjdGl2YXRlUm91dGVzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj10LnZhbHVlLG89ZT9lLnZhbHVlOm51bGw7aWYocj09PW8paWYoci5jb21wb25lbnQpe3ZhciBpPW4uZ2V0Q29udGV4dChyLm91dGxldCk7aSYmdGhpcy5kZWFjdGl2YXRlQ2hpbGRSb3V0ZXModCxlLGkuY2hpbGRyZW4pfWVsc2UgdGhpcy5kZWFjdGl2YXRlQ2hpbGRSb3V0ZXModCxlLG4pO2Vsc2UgbyYmdGhpcy5kZWFjdGl2YXRlUm91dGVBbmRJdHNDaGlsZHJlbihlLG4pfSx0LnByb3RvdHlwZS5kZWFjdGl2YXRlUm91dGVBbmRJdHNDaGlsZHJlbj1mdW5jdGlvbih0LGUpe3RoaXMucm91dGVSZXVzZVN0cmF0ZWd5LnNob3VsZERldGFjaCh0LnZhbHVlLnNuYXBzaG90KT90aGlzLmRldGFjaEFuZFN0b3JlUm91dGVTdWJ0cmVlKHQsZSk6dGhpcy5kZWFjdGl2YXRlUm91dGVBbmRPdXRsZXQodCxlKX0sdC5wcm90b3R5cGUuZGV0YWNoQW5kU3RvcmVSb3V0ZVN1YnRyZWU9ZnVuY3Rpb24odCxlKXt2YXIgbj1lLmdldENvbnRleHQodC52YWx1ZS5vdXRsZXQpO2lmKG4mJm4ub3V0bGV0KXt2YXIgcj1uLm91dGxldC5kZXRhY2goKSxvPW4uY2hpbGRyZW4ub25PdXRsZXREZWFjdGl2YXRlZCgpO3RoaXMucm91dGVSZXVzZVN0cmF0ZWd5LnN0b3JlKHQudmFsdWUuc25hcHNob3Qse2NvbXBvbmVudFJlZjpyLHJvdXRlOnQsY29udGV4dHM6b30pfX0sdC5wcm90b3R5cGUuZGVhY3RpdmF0ZVJvdXRlQW5kT3V0bGV0PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcyxyPWUuZ2V0Q29udGV4dCh0LnZhbHVlLm91dGxldCk7aWYocil7dmFyIG89TGModCksaT10LnZhbHVlLmNvbXBvbmVudD9yLmNoaWxkcmVuOmU7ZmMobywoZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5kZWFjdGl2YXRlUm91dGVBbmRJdHNDaGlsZHJlbih0LGkpfSkpLHIub3V0bGV0JiYoci5vdXRsZXQuZGVhY3RpdmF0ZSgpLHIuY2hpbGRyZW4ub25PdXRsZXREZWFjdGl2YXRlZCgpKX19LHQucHJvdG90eXBlLmFjdGl2YXRlQ2hpbGRSb3V0ZXM9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXRoaXMsbz1MYyhlKTt0LmNoaWxkcmVuLmZvckVhY2goKGZ1bmN0aW9uKHQpe3IuYWN0aXZhdGVSb3V0ZXModCxvW3QudmFsdWUub3V0bGV0XSxuKSxyLmZvcndhcmRFdmVudChuZXcgUXModC52YWx1ZS5zbmFwc2hvdCkpfSkpLHQuY2hpbGRyZW4ubGVuZ3RoJiZ0aGlzLmZvcndhcmRFdmVudChuZXcgcXModC52YWx1ZS5zbmFwc2hvdCkpfSx0LnByb3RvdHlwZS5hY3RpdmF0ZVJvdXRlcz1mdW5jdGlvbih0LGUsbil7dmFyIHI9dC52YWx1ZSxvPWU/ZS52YWx1ZTpudWxsO2lmKFdjKHIpLHI9PT1vKWlmKHIuY29tcG9uZW50KXt2YXIgaT1uLmdldE9yQ3JlYXRlQ29udGV4dChyLm91dGxldCk7dGhpcy5hY3RpdmF0ZUNoaWxkUm91dGVzKHQsZSxpLmNoaWxkcmVuKX1lbHNlIHRoaXMuYWN0aXZhdGVDaGlsZFJvdXRlcyh0LGUsbik7ZWxzZSBpZihyLmNvbXBvbmVudClpZihpPW4uZ2V0T3JDcmVhdGVDb250ZXh0KHIub3V0bGV0KSx0aGlzLnJvdXRlUmV1c2VTdHJhdGVneS5zaG91bGRBdHRhY2goci5zbmFwc2hvdCkpe3ZhciBhPXRoaXMucm91dGVSZXVzZVN0cmF0ZWd5LnJldHJpZXZlKHIuc25hcHNob3QpO3RoaXMucm91dGVSZXVzZVN0cmF0ZWd5LnN0b3JlKHIuc25hcHNob3QsbnVsbCksaS5jaGlsZHJlbi5vbk91dGxldFJlQXR0YWNoZWQoYS5jb250ZXh0cyksaS5hdHRhY2hSZWY9YS5jb21wb25lbnRSZWYsaS5yb3V0ZT1hLnJvdXRlLnZhbHVlLGkub3V0bGV0JiZpLm91dGxldC5hdHRhY2goYS5jb21wb25lbnRSZWYsYS5yb3V0ZS52YWx1ZSksbGYoYS5yb3V0ZSl9ZWxzZXt2YXIgdT1mdW5jdGlvbih0KXtmb3IodmFyIGU9dC5wYXJlbnQ7ZTtlPWUucGFyZW50KXt2YXIgbj1lLnJvdXRlQ29uZmlnO2lmKG4mJm4uX2xvYWRlZENvbmZpZylyZXR1cm4gbi5fbG9hZGVkQ29uZmlnO2lmKG4mJm4uY29tcG9uZW50KXJldHVybiBudWxsfXJldHVybiBudWxsfShyLnNuYXBzaG90KSxsPXU/dS5tb2R1bGUuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOm51bGw7aS5hdHRhY2hSZWY9bnVsbCxpLnJvdXRlPXIsaS5yZXNvbHZlcj1sLGkub3V0bGV0JiZpLm91dGxldC5hY3RpdmF0ZVdpdGgocixsKSx0aGlzLmFjdGl2YXRlQ2hpbGRSb3V0ZXModCxudWxsLGkuY2hpbGRyZW4pfWVsc2UgdGhpcy5hY3RpdmF0ZUNoaWxkUm91dGVzKHQsbnVsbCxuKX0sdH0oKTtmdW5jdGlvbiBsZih0KXtXYyh0LnZhbHVlKSx0LmNoaWxkcmVuLmZvckVhY2gobGYpfWZ1bmN0aW9uIHNmKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0fWZ1bmN0aW9uIGNmKHQpe3JldHVybiB0IGluc3RhbmNlb2YgZGN9dmFyIGZmPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3RoaXMuc2VnbWVudEdyb3VwPXR8fG51bGx9fSgpLGhmPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3RoaXMudXJsVHJlZT10fX0oKTtmdW5jdGlvbiBwZih0KXtyZXR1cm4gbmV3IHgoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmVycm9yKG5ldyBmZih0KSl9KSl9ZnVuY3Rpb24gZGYodCl7cmV0dXJuIG5ldyB4KChmdW5jdGlvbihlKXtyZXR1cm4gZS5lcnJvcihuZXcgaGYodCkpfSkpfWZ1bmN0aW9uIGdmKHQpe3JldHVybiBuZXcgeCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZXJyb3IobmV3IEVycm9yKCJPbmx5IGFic29sdXRlIHJlZGlyZWN0cyBjYW4gaGF2ZSBuYW1lZCBvdXRsZXRzLiByZWRpcmVjdFRvOiAnIit0KyInIikpfSkpfXZhciB2Zj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4scixvKXt0aGlzLmNvbmZpZ0xvYWRlcj1lLHRoaXMudXJsU2VyaWFsaXplcj1uLHRoaXMudXJsVHJlZT1yLHRoaXMuY29uZmlnPW8sdGhpcy5hbGxvd1JlZGlyZWN0cz0hMCx0aGlzLm5nTW9kdWxlPXQuZ2V0KEh0KX1yZXR1cm4gdC5wcm90b3R5cGUuYXBwbHk9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLmV4cGFuZFNlZ21lbnRHcm91cCh0aGlzLm5nTW9kdWxlLHRoaXMuY29uZmlnLHRoaXMudXJsVHJlZS5yb290LEpzKS5waXBlKEIoKGZ1bmN0aW9uKGUpe3JldHVybiB0LmNyZWF0ZVVybFRyZWUoZSx0LnVybFRyZWUucXVlcnlQYXJhbXMsdC51cmxUcmVlLmZyYWdtZW50KX0pKSkucGlwZShpbCgoZnVuY3Rpb24oZSl7aWYoZSBpbnN0YW5jZW9mIGhmKXJldHVybiB0LmFsbG93UmVkaXJlY3RzPSExLHQubWF0Y2goZS51cmxUcmVlKTtpZihlIGluc3RhbmNlb2YgZmYpdGhyb3cgdC5ub01hdGNoRXJyb3IoZSk7dGhyb3cgZX0pKSl9LHQucHJvdG90eXBlLm1hdGNoPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0dXJuIHRoaXMuZXhwYW5kU2VnbWVudEdyb3VwKHRoaXMubmdNb2R1bGUsdGhpcy5jb25maWcsdC5yb290LEpzKS5waXBlKEIoKGZ1bmN0aW9uKG4pe3JldHVybiBlLmNyZWF0ZVVybFRyZWUobix0LnF1ZXJ5UGFyYW1zLHQuZnJhZ21lbnQpfSkpKS5waXBlKGlsKChmdW5jdGlvbih0KXtpZih0IGluc3RhbmNlb2YgZmYpdGhyb3cgZS5ub01hdGNoRXJyb3IodCk7dGhyb3cgdH0pKSl9LHQucHJvdG90eXBlLm5vTWF0Y2hFcnJvcj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IEVycm9yKCJDYW5ub3QgbWF0Y2ggYW55IHJvdXRlcy4gVVJMIFNlZ21lbnQ6ICciK3Quc2VnbWVudEdyb3VwKyInIil9LHQucHJvdG90eXBlLmNyZWF0ZVVybFRyZWU9ZnVuY3Rpb24odCxlLG4pe3ZhciByLG89dC5zZWdtZW50cy5sZW5ndGg+MD9uZXcgZ2MoW10sKChyPXt9KVtKc109dCxyKSk6dDtyZXR1cm4gbmV3IGRjKG8sZSxuKX0sdC5wcm90b3R5cGUuZXhwYW5kU2VnbWVudEdyb3VwPWZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybiAwPT09bi5zZWdtZW50cy5sZW5ndGgmJm4uaGFzQ2hpbGRyZW4oKT90aGlzLmV4cGFuZENoaWxkcmVuKHQsZSxuKS5waXBlKEIoKGZ1bmN0aW9uKHQpe3JldHVybiBuZXcgZ2MoW10sdCl9KSkpOnRoaXMuZXhwYW5kU2VnbWVudCh0LG4sZSxuLnNlZ21lbnRzLHIsITApfSx0LnByb3RvdHlwZS5leHBhbmRDaGlsZHJlbj1mdW5jdGlvbih0LGUsbil7dmFyIHI9dGhpcztyZXR1cm4gZnVuY3Rpb24obixvKXtpZigwPT09T2JqZWN0LmtleXMobikubGVuZ3RoKXJldHVybiBSdSh7fSk7dmFyIGk9W10sYT1bXSx1PXt9O3JldHVybiBmYyhuLChmdW5jdGlvbihuLG8pe3ZhciBsLHMsYz0obD1vLHM9bixyLmV4cGFuZFNlZ21lbnRHcm91cCh0LGUscyxsKSkucGlwZShCKChmdW5jdGlvbih0KXtyZXR1cm4gdVtvXT10fSkpKTtvPT09SnM/aS5wdXNoKGMpOmEucHVzaChjKX0pKSxSdS5hcHBseShudWxsLGkuY29uY2F0KGEpKS5waXBlKHp1KCksb2woKSxCKChmdW5jdGlvbigpe3JldHVybiB1fSkpKX0obi5jaGlsZHJlbil9LHQucHJvdG90eXBlLmV4cGFuZFNlZ21lbnQ9ZnVuY3Rpb24odCxlLG4sbyxpLGEpe3ZhciB1PXRoaXM7cmV0dXJuIFJ1LmFwcGx5KHZvaWQgMCxPYmplY3Qoci5fX3NwcmVhZCkobikpLnBpcGUoQigoZnVuY3Rpb24ocil7cmV0dXJuIHUuZXhwYW5kU2VnbWVudEFnYWluc3RSb3V0ZSh0LGUsbixyLG8saSxhKS5waXBlKGlsKChmdW5jdGlvbih0KXtpZih0IGluc3RhbmNlb2YgZmYpcmV0dXJuIFJ1KG51bGwpO3Rocm93IHR9KSkpfSkpLHp1KCksZmwoKGZ1bmN0aW9uKHQpe3JldHVybiEhdH0pKSxpbCgoZnVuY3Rpb24odCxuKXtpZih0IGluc3RhbmNlb2YgTnV8fCJFbXB0eUVycm9yIj09PXQubmFtZSl7aWYodS5ub0xlZnRvdmVyc0luVXJsKGUsbyxpKSlyZXR1cm4gUnUobmV3IGdjKFtdLHt9KSk7dGhyb3cgbmV3IGZmKGUpfXRocm93IHR9KSkpfSx0LnByb3RvdHlwZS5ub0xlZnRvdmVyc0luVXJsPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gMD09PWUubGVuZ3RoJiYhdC5jaGlsZHJlbltuXX0sdC5wcm90b3R5cGUuZXhwYW5kU2VnbWVudEFnYWluc3RSb3V0ZT1mdW5jdGlvbih0LGUsbixyLG8saSxhKXtyZXR1cm4gd2YocikhPT1pP3BmKGUpOnZvaWQgMD09PXIucmVkaXJlY3RUbz90aGlzLm1hdGNoU2VnbWVudEFnYWluc3RSb3V0ZSh0LGUscixvKTphJiZ0aGlzLmFsbG93UmVkaXJlY3RzP3RoaXMuZXhwYW5kU2VnbWVudEFnYWluc3RSb3V0ZVVzaW5nUmVkaXJlY3QodCxlLG4scixvLGkpOnBmKGUpfSx0LnByb3RvdHlwZS5leHBhbmRTZWdtZW50QWdhaW5zdFJvdXRlVXNpbmdSZWRpcmVjdD1mdW5jdGlvbih0LGUsbixyLG8saSl7cmV0dXJuIioqIj09PXIucGF0aD90aGlzLmV4cGFuZFdpbGRDYXJkV2l0aFBhcmFtc0FnYWluc3RSb3V0ZVVzaW5nUmVkaXJlY3QodCxuLHIsaSk6dGhpcy5leHBhbmRSZWd1bGFyU2VnbWVudEFnYWluc3RSb3V0ZVVzaW5nUmVkaXJlY3QodCxlLG4scixvLGkpfSx0LnByb3RvdHlwZS5leHBhbmRXaWxkQ2FyZFdpdGhQYXJhbXNBZ2FpbnN0Um91dGVVc2luZ1JlZGlyZWN0PWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvPXRoaXMsaT10aGlzLmFwcGx5UmVkaXJlY3RDb21tYW5kcyhbXSxuLnJlZGlyZWN0VG8se30pO3JldHVybiBuLnJlZGlyZWN0VG8uc3RhcnRzV2l0aCgiLyIpP2RmKGkpOnRoaXMubGluZXJhbGl6ZVNlZ21lbnRzKG4saSkucGlwZShRKChmdW5jdGlvbihuKXt2YXIgaT1uZXcgZ2Mobix7fSk7cmV0dXJuIG8uZXhwYW5kU2VnbWVudCh0LGksZSxuLHIsITEpfSkpKX0sdC5wcm90b3R5cGUuZXhwYW5kUmVndWxhclNlZ21lbnRBZ2FpbnN0Um91dGVVc2luZ1JlZGlyZWN0PWZ1bmN0aW9uKHQsZSxuLHIsbyxpKXt2YXIgYT10aGlzLHU9eWYoZSxyLG8pLGw9dS5jb25zdW1lZFNlZ21lbnRzLHM9dS5sYXN0Q2hpbGQsYz11LnBvc2l0aW9uYWxQYXJhbVNlZ21lbnRzO2lmKCF1Lm1hdGNoZWQpcmV0dXJuIHBmKGUpO3ZhciBmPXRoaXMuYXBwbHlSZWRpcmVjdENvbW1hbmRzKGwsci5yZWRpcmVjdFRvLGMpO3JldHVybiByLnJlZGlyZWN0VG8uc3RhcnRzV2l0aCgiLyIpP2RmKGYpOnRoaXMubGluZXJhbGl6ZVNlZ21lbnRzKHIsZikucGlwZShRKChmdW5jdGlvbihyKXtyZXR1cm4gYS5leHBhbmRTZWdtZW50KHQsZSxuLHIuY29uY2F0KG8uc2xpY2UocykpLGksITEpfSkpKX0sdC5wcm90b3R5cGUubWF0Y2hTZWdtZW50QWdhaW5zdFJvdXRlPWZ1bmN0aW9uKHQsZSxuLG8pe3ZhciBpPXRoaXM7aWYoIioqIj09PW4ucGF0aClyZXR1cm4gbi5sb2FkQ2hpbGRyZW4/dGhpcy5jb25maWdMb2FkZXIubG9hZCh0LmluamVjdG9yLG4pLnBpcGUoQigoZnVuY3Rpb24odCl7cmV0dXJuIG4uX2xvYWRlZENvbmZpZz10LG5ldyBnYyhvLHt9KX0pKSk6UnUobmV3IGdjKG8se30pKTt2YXIgYT15ZihlLG4sbyksdT1hLmNvbnN1bWVkU2VnbWVudHMsbD1hLmxhc3RDaGlsZDtpZighYS5tYXRjaGVkKXJldHVybiBwZihlKTt2YXIgcz1vLnNsaWNlKGwpO3JldHVybiB0aGlzLmdldENoaWxkQ29uZmlnKHQsbixvKS5waXBlKFEoKGZ1bmN0aW9uKHQpe3ZhciBuPXQubW9kdWxlLG89dC5yb3V0ZXMsYT1mdW5jdGlvbih0LGUsbixvKXtyZXR1cm4gbi5sZW5ndGg+MCYmZnVuY3Rpb24odCxlLG4pe3JldHVybiBuLnNvbWUoKGZ1bmN0aW9uKG4pe3JldHVybiBfZih0LGUsbikmJndmKG4pIT09SnN9KSl9KHQsbixvKT97c2VnbWVudEdyb3VwOm1mKG5ldyBnYyhlLGZ1bmN0aW9uKHQsZSl7dmFyIG4sbyxpPXt9O2lbSnNdPWU7dHJ5e2Zvcih2YXIgYT1PYmplY3Qoci5fX3ZhbHVlcykodCksdT1hLm5leHQoKTshdS5kb25lO3U9YS5uZXh0KCkpe3ZhciBsPXUudmFsdWU7IiI9PT1sLnBhdGgmJndmKGwpIT09SnMmJihpW3dmKGwpXT1uZXcgZ2MoW10se30pKX19Y2F0Y2gocyl7bj17ZXJyb3I6c319ZmluYWxseXt0cnl7dSYmIXUuZG9uZSYmKG89YS5yZXR1cm4pJiZvLmNhbGwoYSl9ZmluYWxseXtpZihuKXRocm93IG4uZXJyb3J9fXJldHVybiBpfShvLG5ldyBnYyhuLHQuY2hpbGRyZW4pKSkpLHNsaWNlZFNlZ21lbnRzOltdfTowPT09bi5sZW5ndGgmJmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbi5zb21lKChmdW5jdGlvbihuKXtyZXR1cm4gX2YodCxlLG4pfSkpfSh0LG4sbyk/e3NlZ21lbnRHcm91cDptZihuZXcgZ2ModC5zZWdtZW50cyxmdW5jdGlvbih0LGUsbixvKXt2YXIgaSxhLHU9e307dHJ5e2Zvcih2YXIgbD1PYmplY3Qoci5fX3ZhbHVlcykobikscz1sLm5leHQoKTshcy5kb25lO3M9bC5uZXh0KCkpe3ZhciBjPXMudmFsdWU7X2YodCxlLGMpJiYhb1t3ZihjKV0mJih1W3dmKGMpXT1uZXcgZ2MoW10se30pKX19Y2F0Y2goZil7aT17ZXJyb3I6Zn19ZmluYWxseXt0cnl7cyYmIXMuZG9uZSYmKGE9bC5yZXR1cm4pJiZhLmNhbGwobCl9ZmluYWxseXtpZihpKXRocm93IGkuZXJyb3J9fXJldHVybiBPYmplY3Qoci5fX2Fzc2lnbikoe30sbyx1KX0odCxuLG8sdC5jaGlsZHJlbikpKSxzbGljZWRTZWdtZW50czpufTp7c2VnbWVudEdyb3VwOnQsc2xpY2VkU2VnbWVudHM6bn19KGUsdSxzLG8pLGw9YS5zZWdtZW50R3JvdXAsYz1hLnNsaWNlZFNlZ21lbnRzO3JldHVybiAwPT09Yy5sZW5ndGgmJmwuaGFzQ2hpbGRyZW4oKT9pLmV4cGFuZENoaWxkcmVuKG4sbyxsKS5waXBlKEIoKGZ1bmN0aW9uKHQpe3JldHVybiBuZXcgZ2ModSx0KX0pKSk6MD09PW8ubGVuZ3RoJiYwPT09Yy5sZW5ndGg/UnUobmV3IGdjKHUse30pKTppLmV4cGFuZFNlZ21lbnQobixsLG8sYyxKcywhMCkucGlwZShCKChmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGdjKHUuY29uY2F0KHQuc2VnbWVudHMpLHQuY2hpbGRyZW4pfSkpKX0pKSl9LHQucHJvdG90eXBlLmdldENoaWxkQ29uZmlnPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj10aGlzO3JldHVybiBlLmNoaWxkcmVuP1J1KG5ldyByYyhlLmNoaWxkcmVuLHQpKTplLmxvYWRDaGlsZHJlbj92b2lkIDAhPT1lLl9sb2FkZWRDb25maWc/UnUoZS5fbG9hZGVkQ29uZmlnKTpmdW5jdGlvbih0LGUsbil7dmFyIHIsbz1lLmNhbkxvYWQ7cmV0dXJuIG8mJjAhPT1vLmxlbmd0aD9XKG8pLnBpcGUoQigoZnVuY3Rpb24ocil7dmFyIG8saT10LmdldChyKTtpZihmdW5jdGlvbih0KXtyZXR1cm4gdCYmc2YodC5jYW5Mb2FkKX0oaSkpbz1pLmNhbkxvYWQoZSxuKTtlbHNle2lmKCFzZihpKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgQ2FuTG9hZCBndWFyZCIpO289aShlLG4pfXJldHVybiBoYyhvKX0pKSkucGlwZSh6dSgpLChyPWZ1bmN0aW9uKHQpe3JldHVybiEwPT09dH0sZnVuY3Rpb24odCl7cmV0dXJuIHQubGlmdChuZXcgaGwocix2b2lkIDAsdCkpfSkpOlJ1KCEwKX0odC5pbmplY3RvcixlLG4pLnBpcGUoUSgoZnVuY3Rpb24obil7cmV0dXJuIG4/ci5jb25maWdMb2FkZXIubG9hZCh0LmluamVjdG9yLGUpLnBpcGUoQigoZnVuY3Rpb24odCl7cmV0dXJuIGUuX2xvYWRlZENvbmZpZz10LHR9KSkpOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgeCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZXJyb3IoZWMoIkNhbm5vdCBsb2FkIGNoaWxkcmVuIGJlY2F1c2UgdGhlIGd1YXJkIG9mIHRoZSByb3V0ZSBcInBhdGg6ICciK3QucGF0aCsiJ1wiIHJldHVybmVkIGZhbHNlIikpfSkpfShlKX0pKSk6UnUobmV3IHJjKFtdLHQpKX0sdC5wcm90b3R5cGUubGluZXJhbGl6ZVNlZ21lbnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPVtdLHI9ZS5yb290Ozspe2lmKG49bi5jb25jYXQoci5zZWdtZW50cyksMD09PXIubnVtYmVyT2ZDaGlsZHJlbilyZXR1cm4gUnUobik7aWYoci5udW1iZXJPZkNoaWxkcmVuPjF8fCFyLmNoaWxkcmVuW0pzXSlyZXR1cm4gZ2YodC5yZWRpcmVjdFRvKTtyPXIuY2hpbGRyZW5bSnNdfX0sdC5wcm90b3R5cGUuYXBwbHlSZWRpcmVjdENvbW1hbmRzPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdGhpcy5hcHBseVJlZGlyZWN0Q3JlYXRyZVVybFRyZWUoZSx0aGlzLnVybFNlcmlhbGl6ZXIucGFyc2UoZSksdCxuKX0sdC5wcm90b3R5cGUuYXBwbHlSZWRpcmVjdENyZWF0cmVVcmxUcmVlPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvPXRoaXMuY3JlYXRlU2VnbWVudEdyb3VwKHQsZS5yb290LG4scik7cmV0dXJuIG5ldyBkYyhvLHRoaXMuY3JlYXRlUXVlcnlQYXJhbXMoZS5xdWVyeVBhcmFtcyx0aGlzLnVybFRyZWUucXVlcnlQYXJhbXMpLGUuZnJhZ21lbnQpfSx0LnByb3RvdHlwZS5jcmVhdGVRdWVyeVBhcmFtcz1mdW5jdGlvbih0LGUpe3ZhciBuPXt9O3JldHVybiBmYyh0LChmdW5jdGlvbih0LHIpe2lmKCJzdHJpbmciPT10eXBlb2YgdCYmdC5zdGFydHNXaXRoKCI6Iikpe3ZhciBvPXQuc3Vic3RyaW5nKDEpO25bcl09ZVtvXX1lbHNlIG5bcl09dH0pKSxufSx0LnByb3RvdHlwZS5jcmVhdGVTZWdtZW50R3JvdXA9ZnVuY3Rpb24odCxlLG4scil7dmFyIG89dGhpcyxpPXRoaXMuY3JlYXRlU2VnbWVudHModCxlLnNlZ21lbnRzLG4sciksYT17fTtyZXR1cm4gZmMoZS5jaGlsZHJlbiwoZnVuY3Rpb24oZSxpKXthW2ldPW8uY3JlYXRlU2VnbWVudEdyb3VwKHQsZSxuLHIpfSkpLG5ldyBnYyhpLGEpfSx0LnByb3RvdHlwZS5jcmVhdGVTZWdtZW50cz1mdW5jdGlvbih0LGUsbixyKXt2YXIgbz10aGlzO3JldHVybiBlLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUucGF0aC5zdGFydHNXaXRoKCI6Iik/by5maW5kUG9zUGFyYW0odCxlLHIpOm8uZmluZE9yUmV0dXJuKGUsbil9KSl9LHQucHJvdG90eXBlLmZpbmRQb3NQYXJhbT1mdW5jdGlvbih0LGUsbil7dmFyIHI9bltlLnBhdGguc3Vic3RyaW5nKDEpXTtpZighcil0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCByZWRpcmVjdCB0byAnIit0KyInLiBDYW5ub3QgZmluZCAnIitlLnBhdGgrIicuIik7cmV0dXJuIHJ9LHQucHJvdG90eXBlLmZpbmRPclJldHVybj1mdW5jdGlvbih0LGUpe3ZhciBuLG8saT0wO3RyeXtmb3IodmFyIGE9T2JqZWN0KHIuX192YWx1ZXMpKGUpLHU9YS5uZXh0KCk7IXUuZG9uZTt1PWEubmV4dCgpKXt2YXIgbD11LnZhbHVlO2lmKGwucGF0aD09PXQucGF0aClyZXR1cm4gZS5zcGxpY2UoaSksbDtpKyt9fWNhdGNoKHMpe249e2Vycm9yOnN9fWZpbmFsbHl7dHJ5e3UmJiF1LmRvbmUmJihvPWEucmV0dXJuKSYmby5jYWxsKGEpfWZpbmFsbHl7aWYobil0aHJvdyBuLmVycm9yfX1yZXR1cm4gdH0sdH0oKTtmdW5jdGlvbiB5Zih0LGUsbil7aWYoIiI9PT1lLnBhdGgpcmV0dXJuImZ1bGwiPT09ZS5wYXRoTWF0Y2gmJih0Lmhhc0NoaWxkcmVuKCl8fG4ubGVuZ3RoPjApP3ttYXRjaGVkOiExLGNvbnN1bWVkU2VnbWVudHM6W10sbGFzdENoaWxkOjAscG9zaXRpb25hbFBhcmFtU2VnbWVudHM6e319OnttYXRjaGVkOiEwLGNvbnN1bWVkU2VnbWVudHM6W10sbGFzdENoaWxkOjAscG9zaXRpb25hbFBhcmFtU2VnbWVudHM6e319O3ZhciByPShlLm1hdGNoZXJ8fG5jKShuLHQsZSk7cmV0dXJuIHI/e21hdGNoZWQ6ITAsY29uc3VtZWRTZWdtZW50czpyLmNvbnN1bWVkLGxhc3RDaGlsZDpyLmNvbnN1bWVkLmxlbmd0aCxwb3NpdGlvbmFsUGFyYW1TZWdtZW50czpyLnBvc1BhcmFtc306e21hdGNoZWQ6ITEsY29uc3VtZWRTZWdtZW50czpbXSxsYXN0Q2hpbGQ6MCxwb3NpdGlvbmFsUGFyYW1TZWdtZW50czp7fX19ZnVuY3Rpb24gbWYodCl7aWYoMT09PXQubnVtYmVyT2ZDaGlsZHJlbiYmdC5jaGlsZHJlbltKc10pe3ZhciBlPXQuY2hpbGRyZW5bSnNdO3JldHVybiBuZXcgZ2ModC5zZWdtZW50cy5jb25jYXQoZS5zZWdtZW50cyksZS5jaGlsZHJlbil9cmV0dXJuIHR9ZnVuY3Rpb24gX2YodCxlLG4pe3JldHVybighKHQuaGFzQ2hpbGRyZW4oKXx8ZS5sZW5ndGg+MCl8fCJmdWxsIiE9PW4ucGF0aE1hdGNoKSYmIiI9PT1uLnBhdGgmJnZvaWQgMCE9PW4ucmVkaXJlY3RUb31mdW5jdGlvbiB3Zih0KXtyZXR1cm4gdC5vdXRsZXR8fEpzfXZhciBiZj1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXt0aGlzLnBhdGg9dCx0aGlzLnJvdXRlPXRoaXMucGF0aFt0aGlzLnBhdGgubGVuZ3RoLTFdfX0oKSx4Zj1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0LGUpe3RoaXMuY29tcG9uZW50PXQsdGhpcy5yb3V0ZT1lfX0oKTtmdW5jdGlvbiBDZih0LGUsbil7dmFyIHI9ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuIG51bGw7Zm9yKHZhciBlPXQucGFyZW50O2U7ZT1lLnBhcmVudCl7dmFyIG49ZS5yb3V0ZUNvbmZpZztpZihuJiZuLl9sb2FkZWRDb25maWcpcmV0dXJuIG4uX2xvYWRlZENvbmZpZ31yZXR1cm4gbnVsbH0oZSk7cmV0dXJuKHI/ci5tb2R1bGUuaW5qZWN0b3I6bikuZ2V0KHQpfWZ1bmN0aW9uIFNmKHQsZSxuLHIsbyl7dm9pZCAwPT09byYmKG89e2NhbkRlYWN0aXZhdGVDaGVja3M6W10sY2FuQWN0aXZhdGVDaGVja3M6W119KTt2YXIgaT1MYyhlKTtyZXR1cm4gdC5jaGlsZHJlbi5mb3JFYWNoKChmdW5jdGlvbih0KXshZnVuY3Rpb24odCxlLG4scixvKXt2b2lkIDA9PT1vJiYobz17Y2FuRGVhY3RpdmF0ZUNoZWNrczpbXSxjYW5BY3RpdmF0ZUNoZWNrczpbXX0pO3ZhciBpPXQudmFsdWUsYT1lP2UudmFsdWU6bnVsbCx1PW4/bi5nZXRDb250ZXh0KHQudmFsdWUub3V0bGV0KTpudWxsO2lmKGEmJmkucm91dGVDb25maWc9PT1hLnJvdXRlQ29uZmlnKXt2YXIgbD1mdW5jdGlvbih0LGUsbil7aWYoImZ1bmN0aW9uIj09dHlwZW9mIG4pcmV0dXJuIG4odCxlKTtzd2l0Y2gobil7Y2FzZSJwYXRoUGFyYW1zQ2hhbmdlIjpyZXR1cm4heWModC51cmwsZS51cmwpO2Nhc2UicGF0aFBhcmFtc09yUXVlcnlQYXJhbXNDaGFuZ2UiOnJldHVybiF5Yyh0LnVybCxlLnVybCl8fCFsYyh0LnF1ZXJ5UGFyYW1zLGUucXVlcnlQYXJhbXMpO2Nhc2UiYWx3YXlzIjpyZXR1cm4hMDtjYXNlInBhcmFtc09yUXVlcnlQYXJhbXNDaGFuZ2UiOnJldHVybiFRYyh0LGUpfHwhbGModC5xdWVyeVBhcmFtcyxlLnF1ZXJ5UGFyYW1zKTtjYXNlInBhcmFtc0NoYW5nZSI6ZGVmYXVsdDpyZXR1cm4hUWModCxlKX19KGEsaSxpLnJvdXRlQ29uZmlnLnJ1bkd1YXJkc0FuZFJlc29sdmVycyk7bD9vLmNhbkFjdGl2YXRlQ2hlY2tzLnB1c2gobmV3IGJmKHIpKTooaS5kYXRhPWEuZGF0YSxpLl9yZXNvbHZlZERhdGE9YS5fcmVzb2x2ZWREYXRhKSxTZih0LGUsaS5jb21wb25lbnQ/dT91LmNoaWxkcmVuOm51bGw6bixyLG8pLGwmJm8uY2FuRGVhY3RpdmF0ZUNoZWNrcy5wdXNoKG5ldyB4Zih1JiZ1Lm91dGxldCYmdS5vdXRsZXQuY29tcG9uZW50fHxudWxsLGEpKX1lbHNlIGEmJkVmKGUsdSxvKSxvLmNhbkFjdGl2YXRlQ2hlY2tzLnB1c2gobmV3IGJmKHIpKSxTZih0LG51bGwsaS5jb21wb25lbnQ/dT91LmNoaWxkcmVuOm51bGw6bixyLG8pfSh0LGlbdC52YWx1ZS5vdXRsZXRdLG4sci5jb25jYXQoW3QudmFsdWVdKSxvKSxkZWxldGUgaVt0LnZhbHVlLm91dGxldF19KSksZmMoaSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gRWYodCxuLmdldENvbnRleHQoZSksbyl9KSksb31mdW5jdGlvbiBFZih0LGUsbil7dmFyIHI9TGModCksbz10LnZhbHVlO2ZjKHIsKGZ1bmN0aW9uKHQscil7RWYodCxvLmNvbXBvbmVudD9lP2UuY2hpbGRyZW4uZ2V0Q29udGV4dChyKTpudWxsOmUsbil9KSksbi5jYW5EZWFjdGl2YXRlQ2hlY2tzLnB1c2gobmV3IHhmKG8uY29tcG9uZW50JiZlJiZlLm91dGxldCYmZS5vdXRsZXQuaXNBY3RpdmF0ZWQ/ZS5vdXRsZXQuY29tcG9uZW50Om51bGwsbykpfXZhciBPZj1TeW1ib2woIklOSVRJQUxfVkFMVUUiKTtmdW5jdGlvbiBUZigpe3JldHVybiBkbCgoZnVuY3Rpb24odCl7cmV0dXJuIFV1LmFwcGx5KHZvaWQgMCxPYmplY3Qoci5fX3NwcmVhZCkodC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnBpcGUobGwoMSksZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPXRbdC5sZW5ndGgtMV07QShuKT90LnBvcCgpOm49bnVsbDt2YXIgcj10Lmxlbmd0aDtyZXR1cm4geWwoMSE9PXJ8fG4/cj4wP3EodCxuKTpBdShuKTpJdSh0WzBdKSxlKX19KE9mKSl9KSkpKS5waXBlKG1sKChmdW5jdGlvbih0LGUpe3ZhciBuPSExO3JldHVybiBlLnJlZHVjZSgoZnVuY3Rpb24odCxyLG8pe2lmKHQhPT1PZilyZXR1cm4gdDtpZihyPT09T2YmJihuPSEwKSwhbil7aWYoITE9PT1yKXJldHVybiByO2lmKG89PT1lLmxlbmd0aC0xfHxjZihyKSlyZXR1cm4gcn1yZXR1cm4gdH0pLHQpfSksT2YpLEZ1KChmdW5jdGlvbih0KXtyZXR1cm4gdCE9PU9mfSkpLEIoKGZ1bmN0aW9uKHQpe3JldHVybiBjZih0KT90OiEwPT09dH0pKSxsbCgxKSl9KSl9ZnVuY3Rpb24gUGYodCxlKXtyZXR1cm4gbnVsbCE9PXQmJmUmJmUobmV3IFdzKHQpKSxSdSghMCl9ZnVuY3Rpb24ga2YodCxlKXtyZXR1cm4gbnVsbCE9PXQmJmUmJmUobmV3IEdzKHQpKSxSdSghMCl9ZnVuY3Rpb24gQWYodCxlLG4pe3ZhciByPWUucm91dGVDb25maWc/ZS5yb3V0ZUNvbmZpZy5jYW5BY3RpdmF0ZTpudWxsO3JldHVybiByJiYwIT09ci5sZW5ndGg/UnUoci5tYXAoKGZ1bmN0aW9uKHIpe3JldHVybiBIdSgoZnVuY3Rpb24oKXt2YXIgbyxpPUNmKHIsZSxuKTtpZihmdW5jdGlvbih0KQ=="
                },
                {
                    "key": "asdf?main.e3350ff4d88d534234ef.js?4?2?2",
                    "type": "binary",
                    "value": "base64:e3JldHVybiB0JiZzZih0LmNhbkFjdGl2YXRlKX0oaSkpbz1oYyhpLmNhbkFjdGl2YXRlKGUsdCkpO2Vsc2V7aWYoIXNmKGkpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBDYW5BY3RpdmF0ZSBndWFyZCIpO289aGMoaShlLHQpKX1yZXR1cm4gby5waXBlKGZsKCkpfSkpfSkpKS5waXBlKFRmKCkpOlJ1KCEwKX1mdW5jdGlvbiBJZih0LGUsbil7dmFyIHI9ZVtlLmxlbmd0aC0xXSxvPWUuc2xpY2UoMCxlLmxlbmd0aC0xKS5yZXZlcnNlKCkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU9dC5yb3V0ZUNvbmZpZz90LnJvdXRlQ29uZmlnLmNhbkFjdGl2YXRlQ2hpbGQ6bnVsbDtyZXR1cm4gZSYmMCE9PWUubGVuZ3RoP3tub2RlOnQsZ3VhcmRzOmV9Om51bGx9KHQpfSkpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPT10fSkpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIEh1KChmdW5jdGlvbigpe3JldHVybiBSdShlLmd1YXJkcy5tYXAoKGZ1bmN0aW9uKG8pe3ZhciBpLGE9Q2YobyxlLm5vZGUsbik7aWYoZnVuY3Rpb24odCl7cmV0dXJuIHQmJnNmKHQuY2FuQWN0aXZhdGVDaGlsZCl9KGEpKWk9aGMoYS5jYW5BY3RpdmF0ZUNoaWxkKHIsdCkpO2Vsc2V7aWYoIXNmKGEpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBDYW5BY3RpdmF0ZUNoaWxkIGd1YXJkIik7aT1oYyhhKHIsdCkpfXJldHVybiBpLnBpcGUoZmwoKSl9KSkpLnBpcGUoVGYoKSl9KSl9KSk7cmV0dXJuIFJ1KG8pLnBpcGUoVGYoKSl9dmFyIFJmPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7fX0oKSxNZj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4scixvLGkpe3RoaXMucm9vdENvbXBvbmVudFR5cGU9dCx0aGlzLmNvbmZpZz1lLHRoaXMudXJsVHJlZT1uLHRoaXMudXJsPXIsdGhpcy5wYXJhbXNJbmhlcml0YW5jZVN0cmF0ZWd5PW8sdGhpcy5yZWxhdGl2ZUxpbmtSZXNvbHV0aW9uPWl9cmV0dXJuIHQucHJvdG90eXBlLnJlY29nbml6ZT1mdW5jdGlvbigpe3RyeXt2YXIgdD1EZih0aGlzLnVybFRyZWUucm9vdCxbXSxbXSx0aGlzLmNvbmZpZyx0aGlzLnJlbGF0aXZlTGlua1Jlc29sdXRpb24pLnNlZ21lbnRHcm91cCxlPXRoaXMucHJvY2Vzc1NlZ21lbnRHcm91cCh0aGlzLmNvbmZpZyx0LEpzKSxuPW5ldyBCYyhbXSxPYmplY3QuZnJlZXplKHt9KSxPYmplY3QuZnJlZXplKE9iamVjdChyLl9fYXNzaWduKSh7fSx0aGlzLnVybFRyZWUucXVlcnlQYXJhbXMpKSx0aGlzLnVybFRyZWUuZnJhZ21lbnQse30sSnMsdGhpcy5yb290Q29tcG9uZW50VHlwZSxudWxsLHRoaXMudXJsVHJlZS5yb290LC0xLHt9KSxvPW5ldyBVYyhuLGUpLGk9bmV3IFpjKHRoaXMudXJsLG8pO3JldHVybiB0aGlzLmluaGVyaXRQYXJhbXNBbmREYXRhKGkuX3Jvb3QpLFJ1KGkpfWNhdGNoKGEpe3JldHVybiBuZXcgeCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZXJyb3IoYSl9KSl9fSx0LnByb3RvdHlwZS5pbmhlcml0UGFyYW1zQW5kRGF0YT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49dC52YWx1ZSxyPUZjKG4sdGhpcy5wYXJhbXNJbmhlcml0YW5jZVN0cmF0ZWd5KTtuLnBhcmFtcz1PYmplY3QuZnJlZXplKHIucGFyYW1zKSxuLmRhdGE9T2JqZWN0LmZyZWV6ZShyLmRhdGEpLHQuY2hpbGRyZW4uZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuaW5oZXJpdFBhcmFtc0FuZERhdGEodCl9KSl9LHQucHJvdG90eXBlLnByb2Nlc3NTZWdtZW50R3JvdXA9ZnVuY3Rpb24odCxlLG4pe3JldHVybiAwPT09ZS5zZWdtZW50cy5sZW5ndGgmJmUuaGFzQ2hpbGRyZW4oKT90aGlzLnByb2Nlc3NDaGlsZHJlbih0LGUpOnRoaXMucHJvY2Vzc1NlZ21lbnQodCxlLGUuc2VnbWVudHMsbil9LHQucHJvdG90eXBlLnByb2Nlc3NDaGlsZHJlbj1mdW5jdGlvbih0LGUpe3ZhciBuLHI9dGhpcyxvPW1jKGUsKGZ1bmN0aW9uKGUsbil7cmV0dXJuIHIucHJvY2Vzc1NlZ21lbnRHcm91cCh0LGUsbil9KSk7cmV0dXJuIG49e30sby5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT1uW3QudmFsdWUub3V0bGV0XTtpZihlKXt2YXIgcj1lLnVybC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRvU3RyaW5nKCl9KSkuam9pbigiLyIpLG89dC52YWx1ZS51cmwubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC50b1N0cmluZygpfSkpLmpvaW4oIi8iKTt0aHJvdyBuZXcgRXJyb3IoIlR3byBzZWdtZW50cyBjYW5ub3QgaGF2ZSB0aGUgc2FtZSBvdXRsZXQgbmFtZTogJyIrcisiJyBhbmQgJyIrbysiJy4iKX1uW3QudmFsdWUub3V0bGV0XT10LnZhbHVlfSkpLG8uc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC52YWx1ZS5vdXRsZXQ9PT1Kcz8tMTplLnZhbHVlLm91dGxldD09PUpzPzE6dC52YWx1ZS5vdXRsZXQubG9jYWxlQ29tcGFyZShlLnZhbHVlLm91dGxldCl9KSksb30sdC5wcm90b3R5cGUucHJvY2Vzc1NlZ21lbnQ9ZnVuY3Rpb24odCxlLG4sbyl7dmFyIGksYTt0cnl7Zm9yKHZhciB1PU9iamVjdChyLl9fdmFsdWVzKSh0KSxsPXUubmV4dCgpOyFsLmRvbmU7bD11Lm5leHQoKSl7dmFyIHM9bC52YWx1ZTt0cnl7cmV0dXJuIHRoaXMucHJvY2Vzc1NlZ21lbnRBZ2FpbnN0Um91dGUocyxlLG4sbyl9Y2F0Y2goYyl7aWYoIShjIGluc3RhbmNlb2YgUmYpKXRocm93IGN9fX1jYXRjaChmKXtpPXtlcnJvcjpmfX1maW5hbGx5e3RyeXtsJiYhbC5kb25lJiYoYT11LnJldHVybikmJmEuY2FsbCh1KX1maW5hbGx5e2lmKGkpdGhyb3cgaS5lcnJvcn19aWYodGhpcy5ub0xlZnRvdmVyc0luVXJsKGUsbixvKSlyZXR1cm5bXTt0aHJvdyBuZXcgUmZ9LHQucHJvdG90eXBlLm5vTGVmdG92ZXJzSW5Vcmw9ZnVuY3Rpb24odCxlLG4pe3JldHVybiAwPT09ZS5sZW5ndGgmJiF0LmNoaWxkcmVuW25dfSx0LnByb3RvdHlwZS5wcm9jZXNzU2VnbWVudEFnYWluc3RSb3V0ZT1mdW5jdGlvbih0LGUsbixvKXtpZih0LnJlZGlyZWN0VG8pdGhyb3cgbmV3IFJmO2lmKCh0Lm91dGxldHx8SnMpIT09byl0aHJvdyBuZXcgUmY7dmFyIGksYT1bXSx1PVtdO2lmKCIqKiI9PT10LnBhdGgpe3ZhciBsPW4ubGVuZ3RoPjA/Y2MobikucGFyYW1ldGVyczp7fTtpPW5ldyBCYyhuLGwsT2JqZWN0LmZyZWV6ZShPYmplY3Qoci5fX2Fzc2lnbikoe30sdGhpcy51cmxUcmVlLnF1ZXJ5UGFyYW1zKSksdGhpcy51cmxUcmVlLmZyYWdtZW50LFZmKHQpLG8sdC5jb21wb25lbnQsdCxqZihlKSxOZihlKStuLmxlbmd0aCxIZih0KSl9ZWxzZXt2YXIgcz1mdW5jdGlvbih0LGUsbil7aWYoIiI9PT1lLnBhdGgpe2lmKCJmdWxsIj09PWUucGF0aE1hdGNoJiYodC5oYXNDaGlsZHJlbigpfHxuLmxlbmd0aD4wKSl0aHJvdyBuZXcgUmY7cmV0dXJue2NvbnN1bWVkU2VnbWVudHM6W10sbGFzdENoaWxkOjAscGFyYW1ldGVyczp7fX19dmFyIG89KGUubWF0Y2hlcnx8bmMpKG4sdCxlKTtpZighbyl0aHJvdyBuZXcgUmY7dmFyIGk9e307ZmMoby5wb3NQYXJhbXMsKGZ1bmN0aW9uKHQsZSl7aVtlXT10LnBhdGh9KSk7dmFyIGE9by5jb25zdW1lZC5sZW5ndGg+MD9PYmplY3Qoci5fX2Fzc2lnbikoe30saSxvLmNvbnN1bWVkW28uY29uc3VtZWQubGVuZ3RoLTFdLnBhcmFtZXRlcnMpOmk7cmV0dXJue2NvbnN1bWVkU2VnbWVudHM6by5jb25zdW1lZCxsYXN0Q2hpbGQ6by5jb25zdW1lZC5sZW5ndGgscGFyYW1ldGVyczphfX0oZSx0LG4pO2E9cy5jb25zdW1lZFNlZ21lbnRzLHU9bi5zbGljZShzLmxhc3RDaGlsZCksaT1uZXcgQmMoYSxzLnBhcmFtZXRlcnMsT2JqZWN0LmZyZWV6ZShPYmplY3Qoci5fX2Fzc2lnbikoe30sdGhpcy51cmxUcmVlLnF1ZXJ5UGFyYW1zKSksdGhpcy51cmxUcmVlLmZyYWdtZW50LFZmKHQpLG8sdC5jb21wb25lbnQsdCxqZihlKSxOZihlKSthLmxlbmd0aCxIZih0KSl9dmFyIGM9ZnVuY3Rpb24odCl7cmV0dXJuIHQuY2hpbGRyZW4/dC5jaGlsZHJlbjp0LmxvYWRDaGlsZHJlbj90Ll9sb2FkZWRDb25maWcucm91dGVzOltdfSh0KSxmPURmKGUsYSx1LGMsdGhpcy5yZWxhdGl2ZUxpbmtSZXNvbHV0aW9uKSxoPWYuc2VnbWVudEdyb3VwLHA9Zi5zbGljZWRTZWdtZW50cztpZigwPT09cC5sZW5ndGgmJmguaGFzQ2hpbGRyZW4oKSl7dmFyIGQ9dGhpcy5wcm9jZXNzQ2hpbGRyZW4oYyxoKTtyZXR1cm5bbmV3IFVjKGksZCldfWlmKDA9PT1jLmxlbmd0aCYmMD09PXAubGVuZ3RoKXJldHVybltuZXcgVWMoaSxbXSldO3ZhciBnPXRoaXMucHJvY2Vzc1NlZ21lbnQoYyxoLHAsSnMpO3JldHVybltuZXcgVWMoaSxnKV19LHR9KCk7ZnVuY3Rpb24gamYodCl7Zm9yKHZhciBlPXQ7ZS5fc291cmNlU2VnbWVudDspZT1lLl9zb3VyY2VTZWdtZW50O3JldHVybiBlfWZ1bmN0aW9uIE5mKHQpe2Zvcih2YXIgZT10LG49ZS5fc2VnbWVudEluZGV4U2hpZnQ/ZS5fc2VnbWVudEluZGV4U2hpZnQ6MDtlLl9zb3VyY2VTZWdtZW50OyluKz0oZT1lLl9zb3VyY2VTZWdtZW50KS5fc2VnbWVudEluZGV4U2hpZnQ/ZS5fc2VnbWVudEluZGV4U2hpZnQ6MDtyZXR1cm4gbi0xfWZ1bmN0aW9uIERmKHQsZSxuLG8saSl7aWYobi5sZW5ndGg+MCYmZnVuY3Rpb24odCxlLG4pe3JldHVybiBuLnNvbWUoKGZ1bmN0aW9uKG4pe3JldHVybiBVZih0LGUsbikmJkxmKG4pIT09SnN9KSl9KHQsbixvKSl7dmFyIGE9bmV3IGdjKGUsZnVuY3Rpb24odCxlLG4sbyl7dmFyIGksYSx1PXt9O3VbSnNdPW8sby5fc291cmNlU2VnbWVudD10LG8uX3NlZ21lbnRJbmRleFNoaWZ0PWUubGVuZ3RoO3RyeXtmb3IodmFyIGw9T2JqZWN0KHIuX192YWx1ZXMpKG4pLHM9bC5uZXh0KCk7IXMuZG9uZTtzPWwubmV4dCgpKXt2YXIgYz1zLnZhbHVlO2lmKCIiPT09Yy5wYXRoJiZMZihjKSE9PUpzKXt2YXIgZj1uZXcgZ2MoW10se30pO2YuX3NvdXJjZVNlZ21lbnQ9dCxmLl9zZWdtZW50SW5kZXhTaGlmdD1lLmxlbmd0aCx1W0xmKGMpXT1mfX19Y2F0Y2goaCl7aT17ZXJyb3I6aH19ZmluYWxseXt0cnl7cyYmIXMuZG9uZSYmKGE9bC5yZXR1cm4pJiZhLmNhbGwobCl9ZmluYWxseXtpZihpKXRocm93IGkuZXJyb3J9fXJldHVybiB1fSh0LGUsbyxuZXcgZ2Mobix0LmNoaWxkcmVuKSkpO3JldHVybiBhLl9zb3VyY2VTZWdtZW50PXQsYS5fc2VnbWVudEluZGV4U2hpZnQ9ZS5sZW5ndGgse3NlZ21lbnRHcm91cDphLHNsaWNlZFNlZ21lbnRzOltdfX1pZigwPT09bi5sZW5ndGgmJmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbi5zb21lKChmdW5jdGlvbihuKXtyZXR1cm4gVWYodCxlLG4pfSkpfSh0LG4sbykpe3ZhciB1PW5ldyBnYyh0LnNlZ21lbnRzLGZ1bmN0aW9uKHQsZSxuLG8saSxhKXt2YXIgdSxsLHM9e307dHJ5e2Zvcih2YXIgYz1PYmplY3Qoci5fX3ZhbHVlcykobyksZj1jLm5leHQoKTshZi5kb25lO2Y9Yy5uZXh0KCkpe3ZhciBoPWYudmFsdWU7aWYoVWYodCxuLGgpJiYhaVtMZihoKV0pe3ZhciBwPW5ldyBnYyhbXSx7fSk7cC5fc291cmNlU2VnbWVudD10LHAuX3NlZ21lbnRJbmRleFNoaWZ0PSJsZWdhY3kiPT09YT90LnNlZ21lbnRzLmxlbmd0aDplLmxlbmd0aCxzW0xmKGgpXT1wfX19Y2F0Y2goZCl7dT17ZXJyb3I6ZH19ZmluYWxseXt0cnl7ZiYmIWYuZG9uZSYmKGw9Yy5yZXR1cm4pJiZsLmNhbGwoYyl9ZmluYWxseXtpZih1KXRocm93IHUuZXJyb3J9fXJldHVybiBPYmplY3Qoci5fX2Fzc2lnbikoe30saSxzKX0odCxlLG4sbyx0LmNoaWxkcmVuLGkpKTtyZXR1cm4gdS5fc291cmNlU2VnbWVudD10LHUuX3NlZ21lbnRJbmRleFNoaWZ0PWUubGVuZ3RoLHtzZWdtZW50R3JvdXA6dSxzbGljZWRTZWdtZW50czpufX12YXIgbD1uZXcgZ2ModC5zZWdtZW50cyx0LmNoaWxkcmVuKTtyZXR1cm4gbC5fc291cmNlU2VnbWVudD10LGwuX3NlZ21lbnRJbmRleFNoaWZ0PWUubGVuZ3RoLHtzZWdtZW50R3JvdXA6bCxzbGljZWRTZWdtZW50czpufX1mdW5jdGlvbiBVZih0LGUsbil7cmV0dXJuKCEodC5oYXNDaGlsZHJlbigpfHxlLmxlbmd0aD4wKXx8ImZ1bGwiIT09bi5wYXRoTWF0Y2gpJiYiIj09PW4ucGF0aCYmdm9pZCAwPT09bi5yZWRpcmVjdFRvfWZ1bmN0aW9uIExmKHQpe3JldHVybiB0Lm91dGxldHx8SnN9ZnVuY3Rpb24gVmYodCl7cmV0dXJuIHQuZGF0YXx8e319ZnVuY3Rpb24gSGYodCl7cmV0dXJuIHQucmVzb2x2ZXx8e319ZnVuY3Rpb24gemYodCxlLG4scil7dmFyIG89Q2YodCxlLHIpO3JldHVybiBoYyhvLnJlc29sdmU/by5yZXNvbHZlKGUsbik6byhlLG4pKX1mdW5jdGlvbiBGZih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGUucGlwZShkbCgoZnVuY3Rpb24oZSl7dmFyIG49dChlKTtyZXR1cm4gbj9XKG4pLnBpcGUoQigoZnVuY3Rpb24oKXtyZXR1cm4gZX0pKSk6VyhbZV0pfSkpKX19dmFyIEJmPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7fX0oKSxaZj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnNob3VsZERldGFjaD1mdW5jdGlvbih0KXtyZXR1cm4hMX0sdC5wcm90b3R5cGUuc3RvcmU9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLnNob3VsZEF0dGFjaD1mdW5jdGlvbih0KXtyZXR1cm4hMX0sdC5wcm90b3R5cGUucmV0cmlldmU9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGx9LHQucHJvdG90eXBlLnNob3VsZFJldXNlUm91dGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5yb3V0ZUNvbmZpZz09PWUucm91dGVDb25maWd9LHR9KCksR2Y9bmV3IFR0KCJST1VURVMiKSxxZj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4scil7dGhpcy5sb2FkZXI9dCx0aGlzLmNvbXBpbGVyPWUsdGhpcy5vbkxvYWRTdGFydExpc3RlbmVyPW4sdGhpcy5vbkxvYWRFbmRMaXN0ZW5lcj1yfXJldHVybiB0LnByb3RvdHlwZS5sb2FkPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztyZXR1cm4gdGhpcy5vbkxvYWRTdGFydExpc3RlbmVyJiZ0aGlzLm9uTG9hZFN0YXJ0TGlzdGVuZXIoZSksdGhpcy5sb2FkTW9kdWxlRmFjdG9yeShlLmxvYWRDaGlsZHJlbikucGlwZShCKChmdW5jdGlvbihyKXtuLm9uTG9hZEVuZExpc3RlbmVyJiZuLm9uTG9hZEVuZExpc3RlbmVyKGUpO3ZhciBvPXIuY3JlYXRlKHQpO3JldHVybiBuZXcgcmMoc2Moby5pbmplY3Rvci5nZXQoR2YpKS5tYXAodWMpLG8pfSkpKX0sdC5wcm90b3R5cGUubG9hZE1vZHVsZUZhY3Rvcnk9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/Vyh0aGlzLmxvYWRlci5sb2FkKHQpKTpoYyh0KCkpLnBpcGUoUSgoZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiB6dD9SdSh0KTpXKGUuY29tcGlsZXIuY29tcGlsZU1vZHVsZUFzeW5jKHQpKX0pKSl9LHR9KCksV2Y9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXt9fSgpLFFmPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuc2hvdWxkUHJvY2Vzc1VybD1mdW5jdGlvbih0KXtyZXR1cm4hMH0sdC5wcm90b3R5cGUuZXh0cmFjdD1mdW5jdGlvbih0KXtyZXR1cm4gdH0sdC5wcm90b3R5cGUubWVyZ2U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdH0sdH0oKTtmdW5jdGlvbiBLZih0KXt0aHJvdyB0fWZ1bmN0aW9uIFlmKHQsZSxuKXtyZXR1cm4gZS5wYXJzZSgiLyIpfWZ1bmN0aW9uIEpmKHQsZSl7cmV0dXJuIFJ1KG51bGwpfXZhciAkZj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4scixvLGksYSx1KXt2YXIgbD10aGlzO3RoaXMucm9vdENvbXBvbmVudFR5cGU9dCx0aGlzLnVybFNlcmlhbGl6ZXI9ZSx0aGlzLnJvb3RDb250ZXh0cz1uLHRoaXMubG9jYXRpb249cix0aGlzLmNvbmZpZz11LHRoaXMubGFzdFN1Y2Nlc3NmdWxOYXZpZ2F0aW9uPW51bGwsdGhpcy5jdXJyZW50TmF2aWdhdGlvbj1udWxsLHRoaXMubmF2aWdhdGlvbklkPTAsdGhpcy5pc05nWm9uZUVuYWJsZWQ9ITEsdGhpcy5ldmVudHM9bmV3IFAsdGhpcy5lcnJvckhhbmRsZXI9S2YsdGhpcy5tYWxmb3JtZWRVcmlFcnJvckhhbmRsZXI9WWYsdGhpcy5uYXZpZ2F0ZWQ9ITEsdGhpcy5sYXN0U3VjY2Vzc2Z1bElkPS0xLHRoaXMuaG9va3M9e2JlZm9yZVByZWFjdGl2YXRpb246SmYsYWZ0ZXJQcmVhY3RpdmF0aW9uOkpmfSx0aGlzLnVybEhhbmRsaW5nU3RyYXRlZ3k9bmV3IFFmLHRoaXMucm91dGVSZXVzZVN0cmF0ZWd5PW5ldyBaZix0aGlzLm9uU2FtZVVybE5hdmlnYXRpb249Imlnbm9yZSIsdGhpcy5wYXJhbXNJbmhlcml0YW5jZVN0cmF0ZWd5PSJlbXB0eU9ubHkiLHRoaXMudXJsVXBkYXRlU3RyYXRlZ3k9ImRlZmVycmVkIix0aGlzLnJlbGF0aXZlTGlua1Jlc29sdXRpb249ImxlZ2FjeSIsdGhpcy5uZ01vZHVsZT1vLmdldChIdCksdGhpcy5jb25zb2xlPW8uZ2V0KFVvKTt2YXIgcz1vLmdldChuaSk7dGhpcy5pc05nWm9uZUVuYWJsZWQ9cyBpbnN0YW5jZW9mIG5pLHRoaXMucmVzZXRDb25maWcodSksdGhpcy5jdXJyZW50VXJsVHJlZT1uZXcgZGMobmV3IGdjKFtdLHt9KSx7fSxudWxsKSx0aGlzLnJhd1VybFRyZWU9dGhpcy5jdXJyZW50VXJsVHJlZSx0aGlzLmJyb3dzZXJVcmxUcmVlPXRoaXMuY3VycmVudFVybFRyZWUsdGhpcy5jb25maWdMb2FkZXI9bmV3IHFmKGksYSwoZnVuY3Rpb24odCl7cmV0dXJuIGwudHJpZ2dlckV2ZW50KG5ldyBCcyh0KSl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIGwudHJpZ2dlckV2ZW50KG5ldyBacyh0KSl9KSksdGhpcy5yb3V0ZXJTdGF0ZT1IYyh0aGlzLmN1cnJlbnRVcmxUcmVlLHRoaXMucm9vdENvbXBvbmVudFR5cGUpLHRoaXMudHJhbnNpdGlvbnM9bmV3IE11KHtpZDowLGN1cnJlbnRVcmxUcmVlOnRoaXMuY3VycmVudFVybFRyZWUsY3VycmVudFJhd1VybDp0aGlzLmN1cnJlbnRVcmxUcmVlLGV4dHJhY3RlZFVybDp0aGlzLnVybEhhbmRsaW5nU3RyYXRlZ3kuZXh0cmFjdCh0aGlzLmN1cnJlbnRVcmxUcmVlKSx1cmxBZnRlclJlZGlyZWN0czp0aGlzLnVybEhhbmRsaW5nU3RyYXRlZ3kuZXh0cmFjdCh0aGlzLmN1cnJlbnRVcmxUcmVlKSxyYXdVcmw6dGhpcy5jdXJyZW50VXJsVHJlZSxleHRyYXM6e30scmVzb2x2ZTpudWxsLHJlamVjdDpudWxsLHByb21pc2U6UHJvbWlzZS5yZXNvbHZlKCEwKSxzb3VyY2U6ImltcGVyYXRpdmUiLHJlc3RvcmVkU3RhdGU6bnVsbCxjdXJyZW50U25hcHNob3Q6dGhpcy5yb3V0ZXJTdGF0ZS5zbmFwc2hvdCx0YXJnZXRTbmFwc2hvdDpudWxsLGN1cnJlbnRSb3V0ZXJTdGF0ZTp0aGlzLnJvdXRlclN0YXRlLHRhcmdldFJvdXRlclN0YXRlOm51bGwsZ3VhcmRzOntjYW5BY3RpdmF0ZUNoZWNrczpbXSxjYW5EZWFjdGl2YXRlQ2hlY2tzOltdfSxndWFyZHNSZXN1bHQ6bnVsbH0pLHRoaXMubmF2aWdhdGlvbnM9dGhpcy5zZXR1cE5hdmlnYXRpb25zKHRoaXMudHJhbnNpdGlvbnMpLHRoaXMucHJvY2Vzc05hdmlnYXRpb25zKCl9cmV0dXJuIHQucHJvdG90eXBlLnNldHVwTmF2aWdhdGlvbnM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPXRoaXMuZXZlbnRzO3JldHVybiB0LnBpcGUoRnUoKGZ1bmN0aW9uKHQpe3JldHVybiAwIT09dC5pZH0pKSxCKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0KHIuX19hc3NpZ24pKHt9LHQse2V4dHJhY3RlZFVybDplLnVybEhhbmRsaW5nU3RyYXRlZ3kuZXh0cmFjdCh0LnJhd1VybCl9KX0pKSxkbCgoZnVuY3Rpb24odCl7dmFyIG8saSxhLHUsbD0hMSxzPSExO3JldHVybiBSdSh0KS5waXBlKFl1KChmdW5jdGlvbih0KXtlLmN1cnJlbnROYXZpZ2F0aW9uPXtpZDp0LmlkLGluaXRpYWxVcmw6dC5jdXJyZW50UmF3VXJsLGV4dHJhY3RlZFVybDp0LmV4dHJhY3RlZFVybCx0cmlnZ2VyOnQuc291cmNlLGV4dHJhczp0LmV4dHJhcyxwcmV2aW91c05hdmlnYXRpb246ZS5sYXN0U3VjY2Vzc2Z1bE5hdmlnYXRpb24/T2JqZWN0KHIuX19hc3NpZ24pKHt9LGUubGFzdFN1Y2Nlc3NmdWxOYXZpZ2F0aW9uLHtwcmV2aW91c05hdmlnYXRpb246bnVsbH0pOm51bGx9fSkpLGRsKChmdW5jdGlvbih0KXt2YXIgbyxpLGEsdSxsPSFlLm5hdmlnYXRlZHx8dC5leHRyYWN0ZWRVcmwudG9TdHJpbmcoKSE9PWUuYnJvd3NlclVybFRyZWUudG9TdHJpbmcoKTtpZigoInJlbG9hZCI9PT1lLm9uU2FtZVVybE5hdmlnYXRpb258fGwpJiZlLnVybEhhbmRsaW5nU3RyYXRlZ3kuc2hvdWxkUHJvY2Vzc1VybCh0LnJhd1VybCkpcmV0dXJuIFJ1KHQpLnBpcGUoZGwoKGZ1bmN0aW9uKHQpe3ZhciByPWUudHJhbnNpdGlvbnMuZ2V0VmFsdWUoKTtyZXR1cm4gbi5uZXh0KG5ldyBqcyh0LmlkLGUuc2VyaWFsaXplVXJsKHQuZXh0cmFjdGVkVXJsKSx0LnNvdXJjZSx0LnJlc3RvcmVkU3RhdGUpKSxyIT09ZS50cmFuc2l0aW9ucy5nZXRWYWx1ZSgpP2t1Olt0XX0pKSxkbCgoZnVuY3Rpb24odCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0KX0pKSwobz1lLm5nTW9kdWxlLmluamVjdG9yLGk9ZS5jb25maWdMb2FkZXIsYT1lLnVybFNlcmlhbGl6ZXIsdT1lLmNvbmZpZyxmdW5jdGlvbih0KXtyZXR1cm4gdC5waXBlKGRsKChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24odCxlLG4scixvKXtyZXR1cm4gbmV3IHZmKHQsZSxuLHIsbykuYXBwbHkoKX0obyxpLGEsdC5leHRyYWN0ZWRVcmwsdSkucGlwZShCKChmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0KHIuX19hc3NpZ24pKHt9LHQse3VybEFmdGVyUmVkaXJlY3RzOmV9KX0pKSl9KSkpfSksWXUoKGZ1bmN0aW9uKHQpe2UuY3VycmVudE5hdmlnYXRpb249T2JqZWN0KHIuX19hc3NpZ24pKHt9LGUuY3VycmVudE5hdmlnYXRpb24se2ZpbmFsVXJsOnQudXJsQWZ0ZXJSZWRpcmVjdHN9KX0pKSxmdW5jdGlvbih0LG4sbyxpLGEpe3JldHVybiBmdW5jdGlvbihvKXtyZXR1cm4gby5waXBlKFEoKGZ1bmN0aW9uKG8pe3JldHVybiBmdW5jdGlvbih0LGUsbixyLG8saSl7cmV0dXJuIHZvaWQgMD09PW8mJihvPSJlbXB0eU9ubHkiKSx2b2lkIDA9PT1pJiYoaT0ibGVnYWN5IiksbmV3IE1mKHQsZSxuLHIsbyxpKS5yZWNvZ25pemUoKX0odCxuLG8udXJsQWZ0ZXJSZWRpcmVjdHMsKHU9by51cmxBZnRlclJlZGlyZWN0cyxlLnNlcmlhbGl6ZVVybCh1KSksaSxhKS5waXBlKEIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Qoci5fX2Fzc2lnbikoe30sbyx7dGFyZ2V0U25hcHNob3Q6dH0pfSkpKTt2YXIgdX0pKSl9fShlLnJvb3RDb21wb25lbnRUeXBlLGUuY29uZmlnLDAsZS5wYXJhbXNJbmhlcml0YW5jZVN0cmF0ZWd5LGUucmVsYXRpdmVMaW5rUmVzb2x1dGlvbiksWXUoKGZ1bmN0aW9uKHQpeyJlYWdlciI9PT1lLnVybFVwZGF0ZVN0cmF0ZWd5JiYodC5leHRyYXMuc2tpcExvY2F0aW9uQ2hhbmdlfHxlLnNldEJyb3dzZXJVcmwodC51cmxBZnRlclJlZGlyZWN0cywhIXQuZXh0cmFzLnJlcGxhY2VVcmwsdC5pZCx0LmV4dHJhcy5zdGF0ZSksZS5icm93c2VyVXJsVHJlZT10LnVybEFmdGVyUmVkaXJlY3RzKX0pKSxZdSgoZnVuY3Rpb24odCl7dmFyIHI9bmV3IExzKHQuaWQsZS5zZXJpYWxpemVVcmwodC5leHRyYWN0ZWRVcmwpLGUuc2VyaWFsaXplVXJsKHQudXJsQWZ0ZXJSZWRpcmVjdHMpLHQudGFyZ2V0U25hcHNob3QpO24ubmV4dChyKX0pKSk7aWYobCYmZS5yYXdVcmxUcmVlJiZlLnVybEhhbmRsaW5nU3RyYXRlZ3kuc2hvdWxkUHJvY2Vzc1VybChlLnJhd1VybFRyZWUpKXt2YXIgcz10LmV4dHJhY3RlZFVybCxjPXQuc291cmNlLGY9dC5yZXN0b3JlZFN0YXRlLGg9dC5leHRyYXMscD1uZXcganModC5pZCxlLnNlcmlhbGl6ZVVybChzKSxjLGYpO24ubmV4dChwKTt2YXIgZD1IYyhzLGUucm9vdENvbXBvbmVudFR5cGUpLnNuYXBzaG90O3JldHVybiBSdShPYmplY3Qoci5fX2Fzc2lnbikoe30sdCx7dGFyZ2V0U25hcHNob3Q6ZCx1cmxBZnRlclJlZGlyZWN0czpzLGV4dHJhczpPYmplY3Qoci5fX2Fzc2lnbikoe30saCx7c2tpcExvY2F0aW9uQ2hhbmdlOiExLHJlcGxhY2VVcmw6ITF9KX0pKX1yZXR1cm4gZS5yYXdVcmxUcmVlPXQucmF3VXJsLGUuYnJvd3NlclVybFRyZWU9dC51cmxBZnRlclJlZGlyZWN0cyx0LnJlc29sdmUobnVsbCksa3V9KSksRmYoKGZ1bmN0aW9uKHQpe3ZhciBuPXQuZXh0cmFzO3JldHVybiBlLmhvb2tzLmJlZm9yZVByZWFjdGl2YXRpb24odC50YXJnZXRTbmFwc2hvdCx7bmF2aWdhdGlvbklkOnQuaWQsYXBwbGllZFVybFRyZWU6dC5leHRyYWN0ZWRVcmwscmF3VXJsVHJlZTp0LnJhd1VybCxza2lwTG9jYXRpb25DaGFuZ2U6ISFuLnNraXBMb2NhdGlvbkNoYW5nZSxyZXBsYWNlVXJsOiEhbi5yZXBsYWNlVXJsfSl9KSksWXUoKGZ1bmN0aW9uKHQpe3ZhciBuPW5ldyBWcyh0LmlkLGUuc2VyaWFsaXplVXJsKHQuZXh0cmFjdGVkVXJsKSxlLnNlcmlhbGl6ZVVybCh0LnVybEFmdGVyUmVkaXJlY3RzKSx0LnRhcmdldFNuYXBzaG90KTtlLnRyaWdnZXJFdmVudChuKX0pKSxCKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0KHIuX19hc3NpZ24pKHt9LHQse2d1YXJkczoobj10LnRhcmdldFNuYXBzaG90LG89dC5jdXJyZW50U25hcHNob3QsaT1lLnJvb3RDb250ZXh0cyxhPW4uX3Jvb3QsU2YoYSxvP28uX3Jvb3Q6bnVsbCxpLFthLnZhbHVlXSkpfSk7dmFyIG4sbyxpLGF9KSksZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIG4ucGlwZShRKChmdW5jdGlvbihuKXt2YXIgbz1uLnRhcmdldFNuYXBzaG90LGk9bi5jdXJyZW50U25hcHNob3QsYT1uLmd1YXJkcyx1PWEuY2FuQWN0aXZhdGVDaGVja3MsbD1hLmNhbkRlYWN0aXZhdGVDaGVja3M7cmV0dXJuIDA9PT1sLmxlbmd0aCYmMD09PXUubGVuZ3RoP1J1KE9iamVjdChyLl9fYXNzaWduKSh7fSxuLHtndWFyZHNSZXN1bHQ6ITB9KSk6ZnVuY3Rpb24odCxlLG4scil7cmV0dXJuIFcodCkucGlwZShRKChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24odCxlLG4scixvKXt2YXIgaT1lJiZlLnJvdXRlQ29uZmlnP2Uucm91dGVDb25maWcuY2FuRGVhY3RpdmF0ZTpudWxsO3JldHVybiBpJiYwIT09aS5sZW5ndGg/UnUoaS5tYXAoKGZ1bmN0aW9uKGkpe3ZhciBhLHU9Q2YoaSxlLG8pO2lmKGZ1bmN0aW9uKHQpe3JldHVybiB0JiZzZih0LmNhbkRlYWN0aXZhdGUpfSh1KSlhPWhjKHUuY2FuRGVhY3RpdmF0ZSh0LGUsbixyKSk7ZWxzZXtpZighc2YodSkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIENhbkRlYWN0aXZhdGUgZ3VhcmQiKTthPWhjKHUodCxlLG4scikpfXJldHVybiBhLnBpcGUoZmwoKSl9KSkpLnBpcGUoVGYoKSk6UnUoITApfSh0LmNvbXBvbmVudCx0LnJvdXRlLG4sZSxyKX0pKSxmbCgoZnVuY3Rpb24odCl7cmV0dXJuITAhPT10fSksITApKX0obCxvLGksdCkucGlwZShRKChmdW5jdGlvbihuKXtyZXR1cm4gbiYmImJvb2xlYW4iPT10eXBlb2Ygbj9mdW5jdGlvbih0LGUsbixyKXtyZXR1cm4gVyhlKS5waXBlKGJsKChmdW5jdGlvbihlKXtyZXR1cm4gVyhba2YoZS5yb3V0ZS5wYXJlbnQsciksUGYoZS5yb3V0ZSxyKSxJZih0LGUucGF0aCxuKSxBZih0LGUucm91dGUsbildKS5waXBlKHp1KCksZmwoKGZ1bmN0aW9uKHQpe3JldHVybiEwIT09dH0pLCEwKSl9KSksZmwoKGZ1bmN0aW9uKHQpe3JldHVybiEwIT09dH0pLCEwKSl9KG8sdSx0LGUpOlJ1KG4pfSkpLEIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Qoci5fX2Fzc2lnbikoe30sbix7Z3VhcmRzUmVzdWx0OnR9KX0pKSl9KSkpfX0oZS5uZ01vZHVsZS5pbmplY3RvciwoZnVuY3Rpb24odCl7cmV0dXJuIGUudHJpZ2dlckV2ZW50KHQpfSkpLFl1KChmdW5jdGlvbih0KXtpZihjZih0Lmd1YXJkc1Jlc3VsdCkpe3ZhciBuPWVjKCdSZWRpcmVjdGluZyB0byAiJytlLnNlcmlhbGl6ZVVybCh0Lmd1YXJkc1Jlc3VsdCkrJyInKTt0aHJvdyBuLnVybD10Lmd1YXJkc1Jlc3VsdCxufX0pKSxZdSgoZnVuY3Rpb24odCl7dmFyIG49bmV3IEhzKHQuaWQsZS5zZXJpYWxpemVVcmwodC5leHRyYWN0ZWRVcmwpLGUuc2VyaWFsaXplVXJsKHQudXJsQWZ0ZXJSZWRpcmVjdHMpLHQudGFyZ2V0U25hcHNob3QsISF0Lmd1YXJkc1Jlc3VsdCk7ZS50cmlnZ2VyRXZlbnQobil9KSksRnUoKGZ1bmN0aW9uKHQpe2lmKCF0Lmd1YXJkc1Jlc3VsdCl7ZS5yZXNldFVybFRvQ3VycmVudFVybFRyZWUoKTt2YXIgcj1uZXcgRHModC5pZCxlLnNlcmlhbGl6ZVVybCh0LmV4dHJhY3RlZFVybCksIiIpO3JldHVybiBuLm5leHQociksdC5yZXNvbHZlKCExKSwhMX1yZXR1cm4hMH0pKSxGZigoZnVuY3Rpb24odCl7aWYodC5ndWFyZHMuY2FuQWN0aXZhdGVDaGVja3MubGVuZ3RoKXJldHVybiBSdSh0KS5waXBlKFl1KChmdW5jdGlvbih0KXt2YXIgbj1uZXcgenModC5pZCxlLnNlcmlhbGl6ZVVybCh0LmV4dHJhY3RlZFVybCksZS5zZXJpYWxpemVVcmwodC51cmxBZnRlclJlZGlyZWN0cyksdC50YXJnZXRTbmFwc2hvdCk7ZS50cmlnZ2VyRXZlbnQobil9KSksKG49ZS5wYXJhbXNJbmhlcml0YW5jZVN0cmF0ZWd5LG89ZS5uZ01vZHVsZS5pbmplY3RvcixmdW5jdGlvbih0KXtyZXR1cm4gdC5waXBlKFEoKGZ1bmN0aW9uKHQpe3ZhciBlPXQudGFyZ2V0U25hcHNob3QsaT10Lmd1YXJkcy5jYW5BY3RpdmF0ZUNoZWNrcztyZXR1cm4gaS5sZW5ndGg/VyhpKS5waXBlKGJsKChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24odCxlLG4sbyl7cmV0dXJuIGZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvPU9iamVjdC5rZXlzKHQpO2lmKDA9PT1vLmxlbmd0aClyZXR1cm4gUnUoe30pO2lmKDE9PT1vLmxlbmd0aCl7dmFyIGk9b1swXTtyZXR1cm4gemYodFtpXSxlLG4scikucGlwZShCKChmdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4oZT17fSlbaV09dCxlfSkpKX12YXIgYT17fTtyZXR1cm4gVyhvKS5waXBlKFEoKGZ1bmN0aW9uKG8pe3JldHVybiB6Zih0W29dLGUsbixyKS5waXBlKEIoKGZ1bmN0aW9uKHQpe3JldHVybiBhW29dPXQsdH0pKSl9KSkpLnBpcGUob2woKSxCKChmdW5jdGlvbigpe3JldHVybiBhfSkpKX0odC5fcmVzb2x2ZSx0LGUsbykucGlwZShCKChmdW5jdGlvbihlKXtyZXR1cm4gdC5fcmVzb2x2ZWREYXRhPWUsdC5kYXRhPU9iamVjdChyLl9fYXNzaWduKSh7fSx0LmRhdGEsRmModCxuKS5yZXNvbHZlKSxudWxsfSkpKX0odC5yb3V0ZSxlLG4sbyl9KSksZnVuY3Rpb24odCxlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD49Mj9mdW5jdGlvbihuKXtyZXR1cm4gdyhtbCh0LGUpLFd1KDEpLGVsKGUpKShuKX06ZnVuY3Rpb24oZSl7cmV0dXJuIHcobWwoKGZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gdChlLG4scisxKX0pKSxXdSgxKSkoZSl9fSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdH0pKSxCKChmdW5jdGlvbihlKXtyZXR1cm4gdH0pKSk6UnUodCl9KSkpfSksWXUoKGZ1bmN0aW9uKHQpe3ZhciBuPW5ldyBGcyh0LmlkLGUuc2VyaWFsaXplVXJsKHQuZXh0cmFjdGVkVXJsKSxlLnNlcmlhbGl6ZVVybCh0LnVybEFmdGVyUmVkaXJlY3RzKSx0LnRhcmdldFNuYXBzaG90KTtlLnRyaWdnZXJFdmVudChuKX0pKSk7dmFyIG4sb30pKSxGZigoZnVuY3Rpb24odCl7dmFyIG49dC5leHRyYXM7cmV0dXJuIGUuaG9va3MuYWZ0ZXJQcmVhY3RpdmF0aW9uKHQudGFyZ2V0U25hcHNob3Qse25hdmlnYXRpb25JZDp0LmlkLGFwcGxpZWRVcmxUcmVlOnQuZXh0cmFjdGVkVXJsLHJhd1VybFRyZWU6dC5yYXdVcmwsc2tpcExvY2F0aW9uQ2hhbmdlOiEhbi5za2lwTG9jYXRpb25DaGFuZ2UscmVwbGFjZVVybDohIW4ucmVwbGFjZVVybH0pfSkpLEIoKGZ1bmN0aW9uKHQpe3ZhciBuLG8saSxhPShpPWZ1bmN0aW9uIHQoZSxuLG8pe2lmKG8mJmUuc2hvdWxkUmV1c2VSb3V0ZShuLnZhbHVlLG8udmFsdWUuc25hcHNob3QpKXsocz1vLnZhbHVlKS5fZnV0dXJlU25hcHNob3Q9bi52YWx1ZTt2YXIgaT1mdW5jdGlvbihlLG4sbyl7cmV0dXJuIG4uY2hpbGRyZW4ubWFwKChmdW5jdGlvbihuKXt2YXIgaSxhO3RyeXtmb3IodmFyIHU9T2JqZWN0KHIuX192YWx1ZXMpKG8uY2hpbGRyZW4pLGw9dS5uZXh0KCk7IWwuZG9uZTtsPXUubmV4dCgpKXt2YXIgcz1sLnZhbHVlO2lmKGUuc2hvdWxkUmV1c2VSb3V0ZShzLnZhbHVlLnNuYXBzaG90LG4udmFsdWUpKXJldHVybiB0KGUsbixzKX19Y2F0Y2goYyl7aT17ZXJyb3I6Y319ZmluYWxseXt0cnl7bCYmIWwuZG9uZSYmKGE9dS5yZXR1cm4pJiZhLmNhbGwodSl9ZmluYWxseXtpZihpKXRocm93IGkuZXJyb3J9fXJldHVybiB0KGUsbil9KSl9KGUsbixvKTtyZXR1cm4gbmV3IFVjKHMsaSl9dmFyIGE9ZS5yZXRyaWV2ZShuLnZhbHVlKTtpZihhKXt2YXIgdT1hLnJvdXRlO3JldHVybiBmdW5jdGlvbiB0KGUsbil7aWYoZS52YWx1ZS5yb3V0ZUNvbmZpZyE9PW4udmFsdWUucm91dGVDb25maWcpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgcmVhdHRhY2ggQWN0aXZhdGVkUm91dGVTbmFwc2hvdCBjcmVhdGVkIGZyb20gYSBkaWZmZXJlbnQgcm91dGUiKTtpZihlLmNoaWxkcmVuLmxlbmd0aCE9PW4uY2hpbGRyZW4ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHJlYXR0YWNoIEFjdGl2YXRlZFJvdXRlU25hcHNob3Qgd2l0aCBhIGRpZmZlcmVudCBudW1iZXIgb2YgY2hpbGRyZW4iKTtuLnZhbHVlLl9mdXR1cmVTbmFwc2hvdD1lLnZhbHVlO2Zvcih2YXIgcj0wO3I8ZS5jaGlsZHJlbi5sZW5ndGg7KytyKXQoZS5jaGlsZHJlbltyXSxuLmNoaWxkcmVuW3JdKX0obix1KSx1fXZhciBsLHM9bmV3IHpjKG5ldyBNdSgobD1uLnZhbHVlKS51cmwpLG5ldyBNdShsLnBhcmFtcyksbmV3IE11KGwucXVlcnlQYXJhbXMpLG5ldyBNdShsLmZyYWdtZW50KSxuZXcgTXUobC5kYXRhKSxsLm91dGxldCxsLmNvbXBvbmVudCxsKTtyZXR1cm4gaT1uLmNoaWxkcmVuLm1hcCgoZnVuY3Rpb24obil7cmV0dXJuIHQoZSxuKX0pKSxuZXcgVWMocyxpKX0oZS5yb3V0ZVJldXNlU3RyYXRlZ3ksKG49dC50YXJnZXRTbmFwc2hvdCkuX3Jvb3QsKG89dC5jdXJyZW50Um91dGVyU3RhdGUpP28uX3Jvb3Q6dm9pZCAwKSxuZXcgVmMoaSxuKSk7cmV0dXJuIE9iamVjdChyLl9fYXNzaWduKSh7fSx0LHt0YXJnZXRSb3V0ZXJTdGF0ZTphfSl9KSksWXUoKGZ1bmN0aW9uKHQpe2UuY3VycmVudFVybFRyZWU9dC51cmxBZnRlclJlZGlyZWN0cyxlLnJhd1VybFRyZWU9ZS51cmxIYW5kbGluZ1N0cmF0ZWd5Lm1lcmdlKGUuY3VycmVudFVybFRyZWUsdC5yYXdVcmwpLGUucm91dGVyU3RhdGU9dC50YXJnZXRSb3V0ZXJTdGF0ZSwiZGVmZXJyZWQiPT09ZS51cmxVcGRhdGVTdHJhdGVneSYmKHQuZXh0cmFzLnNraXBMb2NhdGlvbkNoYW5nZXx8ZS5zZXRCcm93c2VyVXJsKGUucmF3VXJsVHJlZSwhIXQuZXh0cmFzLnJlcGxhY2VVcmwsdC5pZCx0LmV4dHJhcy5zdGF0ZSksZS5icm93c2VyVXJsVHJlZT10LnVybEFmdGVyUmVkaXJlY3RzKX0pKSwoaT1lLnJvb3RDb250ZXh0cyxhPWUucm91dGVSZXVzZVN0cmF0ZWd5LHU9ZnVuY3Rpb24odCl7cmV0dXJuIGUudHJpZ2dlckV2ZW50KHQpfSxCKChmdW5jdGlvbih0KXtyZXR1cm4gbmV3IHVmKGEsdC50YXJnZXRSb3V0ZXJTdGF0ZSx0LmN1cnJlbnRSb3V0ZXJTdGF0ZSx1KS5hY3RpdmF0ZShpKSx0fSkpKSxZdSh7bmV4dDpmdW5jdGlvbigpe2w9ITB9LGNvbXBsZXRlOmZ1bmN0aW9uKCl7bD0hMH19KSwobz1mdW5jdGlvbigpe2lmKCFsJiYhcyl7ZS5yZXNldFVybFRvQ3VycmVudFVybFRyZWUoKTt2YXIgcj1uZXcgRHModC5pZCxlLnNlcmlhbGl6ZVVybCh0LmV4dHJhY3RlZFVybCksIk5hdmlnYXRpb24gSUQgIit0LmlkKyIgaXMgbm90IGVxdWFsIHRvIHRoZSBjdXJyZW50IG5hdmlnYXRpb24gaWQgIitlLm5hdmlnYXRpb25JZCk7bi5uZXh0KHIpLHQucmVzb2x2ZSghMSl9ZS5jdXJyZW50TmF2aWdhdGlvbj1udWxsfSxmdW5jdGlvbih0KXtyZXR1cm4gdC5saWZ0KG5ldyB4bChvKSl9KSxpbCgoZnVuY3Rpb24ocil7aWYocz0hMCwodT1yKSYmdVt0Y10pe3ZhciBvPWNmKHIudXJsKTtvfHwoZS5uYXZpZ2F0ZWQ9ITAsZS5yZXNldFN0YXRlQW5kVXJsKHQuY3VycmVudFJvdXRlclN0YXRlLHQuY3VycmVudFVybFRyZWUsdC5yYXdVcmwpKTt2YXIgaT1uZXcgRHModC5pZCxlLnNlcmlhbGl6ZVVybCh0LmV4dHJhY3RlZFVybCksci5tZXNzYWdlKTtuLm5leHQoaSksdC5yZXNvbHZlKCExKSxvJiZlLm5hdmlnYXRlQnlVcmwoci51cmwpfWVsc2V7ZS5yZXNldFN0YXRlQW5kVXJsKHQuY3VycmVudFJvdXRlclN0YXRlLHQuY3VycmVudFVybFRyZWUsdC5yYXdVcmwpO3ZhciBhPW5ldyBVcyh0LmlkLGUuc2VyaWFsaXplVXJsKHQuZXh0cmFjdGVkVXJsKSxyKTtuLm5leHQoYSk7dHJ5e3QucmVzb2x2ZShlLmVycm9ySGFuZGxlcihyKSl9Y2F0Y2gobCl7dC5yZWplY3QobCl9fXZhciB1O3JldHVybiBrdX0pKSl9KSkpfSx0LnByb3RvdHlwZS5yZXNldFJvb3RDb21wb25lbnRUeXBlPWZ1bmN0aW9uKHQpe3RoaXMucm9vdENvbXBvbmVudFR5cGU9dCx0aGlzLnJvdXRlclN0YXRlLnJvb3QuY29tcG9uZW50PXRoaXMucm9vdENvbXBvbmVudFR5cGV9LHQucHJvdG90eXBlLmdldFRyYW5zaXRpb249ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnRyYW5zaXRpb25zLnZhbHVlO3JldHVybiB0LnVybEFmdGVyUmVkaXJlY3RzPXRoaXMuYnJvd3NlclVybFRyZWUsdH0sdC5wcm90b3R5cGUuc2V0VHJhbnNpdGlvbj1mdW5jdGlvbih0KXt0aGlzLnRyYW5zaXRpb25zLm5leHQoT2JqZWN0KHIuX19hc3NpZ24pKHt9LHRoaXMuZ2V0VHJhbnNpdGlvbigpLHQpKX0sdC5wcm90b3R5cGUuaW5pdGlhbE5hdmlnYXRpb249ZnVuY3Rpb24oKXt0aGlzLnNldFVwTG9jYXRpb25DaGFuZ2VMaXN0ZW5lcigpLDA9PT10aGlzLm5hdmlnYXRpb25JZCYmdGhpcy5uYXZpZ2F0ZUJ5VXJsKHRoaXMubG9jYXRpb24ucGF0aCghMCkse3JlcGxhY2VVcmw6ITB9KX0sdC5wcm90b3R5cGUuc2V0VXBMb2NhdGlvbkNoYW5nZUxpc3RlbmVyPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLmxvY2F0aW9uU3Vic2NyaXB0aW9ufHwodGhpcy5sb2NhdGlvblN1YnNjcmlwdGlvbj10aGlzLmxvY2F0aW9uLnN1YnNjcmliZSgoZnVuY3Rpb24oZSl7dmFyIG49dC5wYXJzZVVybChlLnVybCkscj0icG9wc3RhdGUiPT09ZS50eXBlPyJwb3BzdGF0ZSI6Imhhc2hjaGFuZ2UiLG89ZS5zdGF0ZSYmZS5zdGF0ZS5uYXZpZ2F0aW9uSWQ/ZS5zdGF0ZTpudWxsO3NldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dC5zY2hlZHVsZU5hdmlnYXRpb24obixyLG8se3JlcGxhY2VVcmw6ITB9KX0pLDApfSkpKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ1cmwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZXJpYWxpemVVcmwodGhpcy5jdXJyZW50VXJsVHJlZSl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuZ2V0Q3VycmVudE5hdmlnYXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJyZW50TmF2aWdhdGlvbn0sdC5wcm90b3R5cGUudHJpZ2dlckV2ZW50PWZ1bmN0aW9uKHQpe3RoaXMuZXZlbnRzLm5leHQodCl9LHQucHJvdG90eXBlLnJlc2V0Q29uZmlnPWZ1bmN0aW9uKHQpe29jKHQpLHRoaXMuY29uZmlnPXQubWFwKHVjKSx0aGlzLm5hdmlnYXRlZD0hMSx0aGlzLmxhc3RTdWNjZXNzZnVsSWQ9LTF9LHQucHJvdG90eXBlLm5nT25EZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5kaXNwb3NlKCl9LHQucHJvdG90eXBlLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLmxvY2F0aW9uU3Vic2NyaXB0aW9uJiYodGhpcy5sb2NhdGlvblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMubG9jYXRpb25TdWJzY3JpcHRpb249bnVsbCl9LHQucHJvdG90eXBlLmNyZWF0ZVVybFRyZWU9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT1lJiYoZT17fSk7dmFyIG49ZS5yZWxhdGl2ZVRvLG89ZS5xdWVyeVBhcmFtcyxpPWUuZnJhZ21lbnQsYT1lLnByZXNlcnZlUXVlcnlQYXJhbXMsdT1lLnF1ZXJ5UGFyYW1zSGFuZGxpbmcsbD1lLnByZXNlcnZlRnJhZw=="
                },
                {
                    "key": "asdf?main.e3350ff4d88d534234ef.js?4?3?2",
                    "type": "binary",
                    "value": "base64:bWVudDtlZSgpJiZhJiZjb25zb2xlJiZjb25zb2xlLndhcm4mJmNvbnNvbGUud2FybigicHJlc2VydmVRdWVyeVBhcmFtcyBpcyBkZXByZWNhdGVkLCB1c2UgcXVlcnlQYXJhbXNIYW5kbGluZyBpbnN0ZWFkLiIpO3ZhciBzPW58fHRoaXMucm91dGVyU3RhdGUucm9vdCxjPWw/dGhpcy5jdXJyZW50VXJsVHJlZS5mcmFnbWVudDppLGY9bnVsbDtpZih1KXN3aXRjaCh1KXtjYXNlIm1lcmdlIjpmPU9iamVjdChyLl9fYXNzaWduKSh7fSx0aGlzLmN1cnJlbnRVcmxUcmVlLnF1ZXJ5UGFyYW1zLG8pO2JyZWFrO2Nhc2UicHJlc2VydmUiOmY9dGhpcy5jdXJyZW50VXJsVHJlZS5xdWVyeVBhcmFtczticmVhaztkZWZhdWx0OmY9b3x8bnVsbH1lbHNlIGY9YT90aGlzLmN1cnJlbnRVcmxUcmVlLnF1ZXJ5UGFyYW1zOm98fG51bGw7cmV0dXJuIG51bGwhPT1mJiYoZj10aGlzLnJlbW92ZUVtcHR5UHJvcHMoZikpLGZ1bmN0aW9uKHQsZSxuLG8saSl7aWYoMD09PW4ubGVuZ3RoKXJldHVybiBZYyhlLnJvb3QsZS5yb290LGUsbyxpKTt2YXIgYT1mdW5jdGlvbih0KXtpZigic3RyaW5nIj09dHlwZW9mIHRbMF0mJjE9PT10Lmxlbmd0aCYmIi8iPT09dFswXSlyZXR1cm4gbmV3IEpjKCEwLDAsdCk7dmFyIGU9MCxuPSExLG89dC5yZWR1Y2UoKGZ1bmN0aW9uKHQsbyxpKXtpZigib2JqZWN0Ij09dHlwZW9mIG8mJm51bGwhPW8pe2lmKG8ub3V0bGV0cyl7dmFyIGE9e307cmV0dXJuIGZjKG8ub3V0bGV0cywoZnVuY3Rpb24odCxlKXthW2VdPSJzdHJpbmciPT10eXBlb2YgdD90LnNwbGl0KCIvIik6dH0pKSxPYmplY3Qoci5fX3NwcmVhZCkodCxbe291dGxldHM6YX1dKX1pZihvLnNlZ21lbnRQYXRoKXJldHVybiBPYmplY3Qoci5fX3NwcmVhZCkodCxbby5zZWdtZW50UGF0aF0pfXJldHVybiJzdHJpbmciIT10eXBlb2Ygbz9PYmplY3Qoci5fX3NwcmVhZCkodCxbb10pOjA9PT1pPyhvLnNwbGl0KCIvIikuZm9yRWFjaCgoZnVuY3Rpb24ocixvKXswPT1vJiYiLiI9PT1yfHwoMD09byYmIiI9PT1yP249ITA6Ii4uIj09PXI/ZSsrOiIiIT1yJiZ0LnB1c2gocikpfSkpLHQpOk9iamVjdChyLl9fc3ByZWFkKSh0LFtvXSl9KSxbXSk7cmV0dXJuIG5ldyBKYyhuLGUsbyl9KG4pO2lmKGEudG9Sb290KCkpcmV0dXJuIFljKGUucm9vdCxuZXcgZ2MoW10se30pLGUsbyxpKTt2YXIgdT1mdW5jdGlvbih0LGUsbil7aWYodC5pc0Fic29sdXRlKXJldHVybiBuZXcgJGMoZS5yb290LCEwLDApO2lmKC0xPT09bi5zbmFwc2hvdC5fbGFzdFBhdGhJbmRleClyZXR1cm4gbmV3ICRjKG4uc25hcHNob3QuX3VybFNlZ21lbnQsITAsMCk7dmFyIHI9S2ModC5jb21tYW5kc1swXSk/MDoxO3JldHVybiBmdW5jdGlvbih0LGUsbil7Zm9yKHZhciByPXQsbz1lLGk9bjtpPm87KXtpZihpLT1vLCEocj1yLnBhcmVudCkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIG51bWJlciBvZiAnLi4vJyIpO289ci5zZWdtZW50cy5sZW5ndGh9cmV0dXJuIG5ldyAkYyhyLCExLG8taSl9KG4uc25hcHNob3QuX3VybFNlZ21lbnQsbi5zbmFwc2hvdC5fbGFzdFBhdGhJbmRleCtyLHQubnVtYmVyT2ZEb3VibGVEb3RzKX0oYSxlLHQpLGw9dS5wcm9jZXNzQ2hpbGRyZW4/ZWYodS5zZWdtZW50R3JvdXAsdS5pbmRleCxhLmNvbW1hbmRzKTp0Zih1LnNlZ21lbnRHcm91cCx1LmluZGV4LGEuY29tbWFuZHMpO3JldHVybiBZYyh1LnNlZ21lbnRHcm91cCxsLGUsbyxpKX0ocyx0aGlzLmN1cnJlbnRVcmxUcmVlLHQsZixjKX0sdC5wcm90b3R5cGUubmF2aWdhdGVCeVVybD1mdW5jdGlvbih0LGUpe3ZvaWQgMD09PWUmJihlPXtza2lwTG9jYXRpb25DaGFuZ2U6ITF9KSxlZSgpJiZ0aGlzLmlzTmdab25lRW5hYmxlZCYmIW5pLmlzSW5Bbmd1bGFyWm9uZSgpJiZ0aGlzLmNvbnNvbGUud2FybigiTmF2aWdhdGlvbiB0cmlnZ2VyZWQgb3V0c2lkZSBBbmd1bGFyIHpvbmUsIGRpZCB5b3UgZm9yZ2V0IHRvIGNhbGwgJ25nWm9uZS5ydW4oKSc/Iik7dmFyIG49Y2YodCk/dDp0aGlzLnBhcnNlVXJsKHQpLHI9dGhpcy51cmxIYW5kbGluZ1N0cmF0ZWd5Lm1lcmdlKG4sdGhpcy5yYXdVcmxUcmVlKTtyZXR1cm4gdGhpcy5zY2hlZHVsZU5hdmlnYXRpb24ociwiaW1wZXJhdGl2ZSIsbnVsbCxlKX0sdC5wcm90b3R5cGUubmF2aWdhdGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9e3NraXBMb2NhdGlvbkNoYW5nZTohMX0pLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXt2YXIgbj10W2VdO2lmKG51bGw9PW4pdGhyb3cgbmV3IEVycm9yKCJUaGUgcmVxdWVzdGVkIHBhdGggY29udGFpbnMgIituKyIgc2VnbWVudCBhdCBpbmRleCAiK2UpfX0odCksdGhpcy5uYXZpZ2F0ZUJ5VXJsKHRoaXMuY3JlYXRlVXJsVHJlZSh0LGUpLGUpfSx0LnByb3RvdHlwZS5zZXJpYWxpemVVcmw9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudXJsU2VyaWFsaXplci5zZXJpYWxpemUodCl9LHQucHJvdG90eXBlLnBhcnNlVXJsPWZ1bmN0aW9uKHQpe3ZhciBlO3RyeXtlPXRoaXMudXJsU2VyaWFsaXplci5wYXJzZSh0KX1jYXRjaChuKXtlPXRoaXMubWFsZm9ybWVkVXJpRXJyb3JIYW5kbGVyKG4sdGhpcy51cmxTZXJpYWxpemVyLHQpfXJldHVybiBlfSx0LnByb3RvdHlwZS5pc0FjdGl2ZT1mdW5jdGlvbih0LGUpe2lmKGNmKHQpKXJldHVybiBwYyh0aGlzLmN1cnJlbnRVcmxUcmVlLHQsZSk7dmFyIG49dGhpcy5wYXJzZVVybCh0KTtyZXR1cm4gcGModGhpcy5jdXJyZW50VXJsVHJlZSxuLGUpfSx0LnByb3RvdHlwZS5yZW1vdmVFbXB0eVByb3BzPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Qua2V5cyh0KS5yZWR1Y2UoKGZ1bmN0aW9uKGUsbil7dmFyIHI9dFtuXTtyZXR1cm4gbnVsbCE9ciYmKGVbbl09ciksZX0pLHt9KX0sdC5wcm90b3R5cGUucHJvY2Vzc05hdmlnYXRpb25zPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLm5hdmlnYXRpb25zLnN1YnNjcmliZSgoZnVuY3Rpb24oZSl7dC5uYXZpZ2F0ZWQ9ITAsdC5sYXN0U3VjY2Vzc2Z1bElkPWUuaWQsdC5ldmVudHMubmV4dChuZXcgTnMoZS5pZCx0LnNlcmlhbGl6ZVVybChlLmV4dHJhY3RlZFVybCksdC5zZXJpYWxpemVVcmwodC5jdXJyZW50VXJsVHJlZSkpKSx0Lmxhc3RTdWNjZXNzZnVsTmF2aWdhdGlvbj10LmN1cnJlbnROYXZpZ2F0aW9uLHQuY3VycmVudE5hdmlnYXRpb249bnVsbCxlLnJlc29sdmUoITApfSksKGZ1bmN0aW9uKGUpe3QuY29uc29sZS53YXJuKCJVbmhhbmRsZWQgTmF2aWdhdGlvbiBFcnJvcjogIil9KSl9LHQucHJvdG90eXBlLnNjaGVkdWxlTmF2aWdhdGlvbj1mdW5jdGlvbih0LGUsbixyKXt2YXIgbz10aGlzLmdldFRyYW5zaXRpb24oKTtpZihvJiYiaW1wZXJhdGl2ZSIhPT1lJiYiaW1wZXJhdGl2ZSI9PT1vLnNvdXJjZSYmby5yYXdVcmwudG9TdHJpbmcoKT09PXQudG9TdHJpbmcoKSlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCEwKTtpZihvJiYiaGFzaGNoYW5nZSI9PWUmJiJwb3BzdGF0ZSI9PT1vLnNvdXJjZSYmby5yYXdVcmwudG9TdHJpbmcoKT09PXQudG9TdHJpbmcoKSlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCEwKTtpZihvJiYicG9wc3RhdGUiPT1lJiYiaGFzaGNoYW5nZSI9PT1vLnNvdXJjZSYmby5yYXdVcmwudG9TdHJpbmcoKT09PXQudG9TdHJpbmcoKSlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCEwKTt2YXIgaT1udWxsLGE9bnVsbCx1PW5ldyBQcm9taXNlKChmdW5jdGlvbih0LGUpe2k9dCxhPWV9KSksbD0rK3RoaXMubmF2aWdhdGlvbklkO3JldHVybiB0aGlzLnNldFRyYW5zaXRpb24oe2lkOmwsc291cmNlOmUscmVzdG9yZWRTdGF0ZTpuLGN1cnJlbnRVcmxUcmVlOnRoaXMuY3VycmVudFVybFRyZWUsY3VycmVudFJhd1VybDp0aGlzLnJhd1VybFRyZWUscmF3VXJsOnQsZXh0cmFzOnIscmVzb2x2ZTppLHJlamVjdDphLHByb21pc2U6dSxjdXJyZW50U25hcHNob3Q6dGhpcy5yb3V0ZXJTdGF0ZS5zbmFwc2hvdCxjdXJyZW50Um91dGVyU3RhdGU6dGhpcy5yb3V0ZXJTdGF0ZX0pLHUuY2F0Y2goKGZ1bmN0aW9uKHQpe3JldHVybiBQcm9taXNlLnJlamVjdCh0KX0pKX0sdC5wcm90b3R5cGUuc2V0QnJvd3NlclVybD1mdW5jdGlvbih0LGUsbixvKXt2YXIgaT10aGlzLnVybFNlcmlhbGl6ZXIuc2VyaWFsaXplKHQpO289b3x8e30sdGhpcy5sb2NhdGlvbi5pc0N1cnJlbnRQYXRoRXF1YWxUbyhpKXx8ZT90aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZShpLCIiLE9iamVjdChyLl9fYXNzaWduKSh7fSxvLHtuYXZpZ2F0aW9uSWQ6bn0pKTp0aGlzLmxvY2F0aW9uLmdvKGksIiIsT2JqZWN0KHIuX19hc3NpZ24pKHt9LG8se25hdmlnYXRpb25JZDpufSkpfSx0LnByb3RvdHlwZS5yZXNldFN0YXRlQW5kVXJsPWZ1bmN0aW9uKHQsZSxuKXt0aGlzLnJvdXRlclN0YXRlPXQsdGhpcy5jdXJyZW50VXJsVHJlZT1lLHRoaXMucmF3VXJsVHJlZT10aGlzLnVybEhhbmRsaW5nU3RyYXRlZ3kubWVyZ2UodGhpcy5jdXJyZW50VXJsVHJlZSxuKSx0aGlzLnJlc2V0VXJsVG9DdXJyZW50VXJsVHJlZSgpfSx0LnByb3RvdHlwZS5yZXNldFVybFRvQ3VycmVudFVybFRyZWU9ZnVuY3Rpb24oKXt0aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZSh0aGlzLnVybFNlcmlhbGl6ZXIuc2VyaWFsaXplKHRoaXMucmF3VXJsVHJlZSksIiIse25hdmlnYXRpb25JZDp0aGlzLmxhc3RTdWNjZXNzZnVsSWR9KX0sdH0oKSxYZj1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe3RoaXMub3V0bGV0PW51bGwsdGhpcy5yb3V0ZT1udWxsLHRoaXMucmVzb2x2ZXI9bnVsbCx0aGlzLmNoaWxkcmVuPW5ldyB0aCx0aGlzLmF0dGFjaFJlZj1udWxsfX0oKSx0aD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLmNvbnRleHRzPW5ldyBNYXB9cmV0dXJuIHQucHJvdG90eXBlLm9uQ2hpbGRPdXRsZXRDcmVhdGVkPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5nZXRPckNyZWF0ZUNvbnRleHQodCk7bi5vdXRsZXQ9ZSx0aGlzLmNvbnRleHRzLnNldCh0LG4pfSx0LnByb3RvdHlwZS5vbkNoaWxkT3V0bGV0RGVzdHJveWVkPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2V0Q29udGV4dCh0KTtlJiYoZS5vdXRsZXQ9bnVsbCl9LHQucHJvdG90eXBlLm9uT3V0bGV0RGVhY3RpdmF0ZWQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmNvbnRleHRzO3JldHVybiB0aGlzLmNvbnRleHRzPW5ldyBNYXAsdH0sdC5wcm90b3R5cGUub25PdXRsZXRSZUF0dGFjaGVkPWZ1bmN0aW9uKHQpe3RoaXMuY29udGV4dHM9dH0sdC5wcm90b3R5cGUuZ2V0T3JDcmVhdGVDb250ZXh0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2V0Q29udGV4dCh0KTtyZXR1cm4gZXx8KGU9bmV3IFhmLHRoaXMuY29udGV4dHMuc2V0KHQsZSkpLGV9LHQucHJvdG90eXBlLmdldENvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY29udGV4dHMuZ2V0KHQpfHxudWxsfSx0fSgpLGVoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbixyLG8pe3RoaXMucGFyZW50Q29udGV4dHM9dCx0aGlzLmxvY2F0aW9uPWUsdGhpcy5yZXNvbHZlcj1uLHRoaXMuY2hhbmdlRGV0ZWN0b3I9byx0aGlzLmFjdGl2YXRlZD1udWxsLHRoaXMuX2FjdGl2YXRlZFJvdXRlPW51bGwsdGhpcy5hY3RpdmF0ZUV2ZW50cz1uZXcgT28sdGhpcy5kZWFjdGl2YXRlRXZlbnRzPW5ldyBPbyx0aGlzLm5hbWU9cnx8SnMsdC5vbkNoaWxkT3V0bGV0Q3JlYXRlZCh0aGlzLm5hbWUsdGhpcyl9cmV0dXJuIHQucHJvdG90eXBlLm5nT25EZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5wYXJlbnRDb250ZXh0cy5vbkNoaWxkT3V0bGV0RGVzdHJveWVkKHRoaXMubmFtZSl9LHQucHJvdG90eXBlLm5nT25Jbml0PWZ1bmN0aW9uKCl7aWYoIXRoaXMuYWN0aXZhdGVkKXt2YXIgdD10aGlzLnBhcmVudENvbnRleHRzLmdldENvbnRleHQodGhpcy5uYW1lKTt0JiZ0LnJvdXRlJiYodC5hdHRhY2hSZWY/dGhpcy5hdHRhY2godC5hdHRhY2hSZWYsdC5yb3V0ZSk6dGhpcy5hY3RpdmF0ZVdpdGgodC5yb3V0ZSx0LnJlc29sdmVyfHxudWxsKSl9fSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImlzQWN0aXZhdGVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmFjdGl2YXRlZH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImNvbXBvbmVudCIse2dldDpmdW5jdGlvbigpe2lmKCF0aGlzLmFjdGl2YXRlZCl0aHJvdyBuZXcgRXJyb3IoIk91dGxldCBpcyBub3QgYWN0aXZhdGVkIik7cmV0dXJuIHRoaXMuYWN0aXZhdGVkLmluc3RhbmNlfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiYWN0aXZhdGVkUm91dGUiLHtnZXQ6ZnVuY3Rpb24oKXtpZighdGhpcy5hY3RpdmF0ZWQpdGhyb3cgbmV3IEVycm9yKCJPdXRsZXQgaXMgbm90IGFjdGl2YXRlZCIpO3JldHVybiB0aGlzLl9hY3RpdmF0ZWRSb3V0ZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImFjdGl2YXRlZFJvdXRlRGF0YSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hY3RpdmF0ZWRSb3V0ZT90aGlzLl9hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5kYXRhOnt9fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmRldGFjaD1mdW5jdGlvbigpe2lmKCF0aGlzLmFjdGl2YXRlZCl0aHJvdyBuZXcgRXJyb3IoIk91dGxldCBpcyBub3QgYWN0aXZhdGVkIik7dGhpcy5sb2NhdGlvbi5kZXRhY2goKTt2YXIgdD10aGlzLmFjdGl2YXRlZDtyZXR1cm4gdGhpcy5hY3RpdmF0ZWQ9bnVsbCx0aGlzLl9hY3RpdmF0ZWRSb3V0ZT1udWxsLHR9LHQucHJvdG90eXBlLmF0dGFjaD1mdW5jdGlvbih0LGUpe3RoaXMuYWN0aXZhdGVkPXQsdGhpcy5fYWN0aXZhdGVkUm91dGU9ZSx0aGlzLmxvY2F0aW9uLmluc2VydCh0Lmhvc3RWaWV3KX0sdC5wcm90b3R5cGUuZGVhY3RpdmF0ZT1mdW5jdGlvbigpe2lmKHRoaXMuYWN0aXZhdGVkKXt2YXIgdD10aGlzLmNvbXBvbmVudDt0aGlzLmFjdGl2YXRlZC5kZXN0cm95KCksdGhpcy5hY3RpdmF0ZWQ9bnVsbCx0aGlzLl9hY3RpdmF0ZWRSb3V0ZT1udWxsLHRoaXMuZGVhY3RpdmF0ZUV2ZW50cy5lbWl0KHQpfX0sdC5wcm90b3R5cGUuYWN0aXZhdGVXaXRoPWZ1bmN0aW9uKHQsZSl7aWYodGhpcy5pc0FjdGl2YXRlZCl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBhY3RpdmF0ZSBhbiBhbHJlYWR5IGFjdGl2YXRlZCBvdXRsZXQiKTt0aGlzLl9hY3RpdmF0ZWRSb3V0ZT10O3ZhciBuPShlPWV8fHRoaXMucmVzb2x2ZXIpLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KHQuX2Z1dHVyZVNuYXBzaG90LnJvdXRlQ29uZmlnLmNvbXBvbmVudCkscj10aGlzLnBhcmVudENvbnRleHRzLmdldE9yQ3JlYXRlQ29udGV4dCh0aGlzLm5hbWUpLmNoaWxkcmVuLG89bmV3IG5oKHQscix0aGlzLmxvY2F0aW9uLmluamVjdG9yKTt0aGlzLmFjdGl2YXRlZD10aGlzLmxvY2F0aW9uLmNyZWF0ZUNvbXBvbmVudChuLHRoaXMubG9jYXRpb24ubGVuZ3RoLG8pLHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCksdGhpcy5hY3RpdmF0ZUV2ZW50cy5lbWl0KHRoaXMuYWN0aXZhdGVkLmluc3RhbmNlKX0sdH0oKSxuaD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3RoaXMucm91dGU9dCx0aGlzLmNoaWxkQ29udGV4dHM9ZSx0aGlzLnBhcmVudD1ufXJldHVybiB0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD09PXpjP3RoaXMucm91dGU6dD09PXRoP3RoaXMuY2hpbGRDb250ZXh0czp0aGlzLnBhcmVudC5nZXQodCxlKX0sdH0oKSxyaD1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe319KCksb2g9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5wcmVsb2FkPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUoKS5waXBlKGlsKChmdW5jdGlvbigpe3JldHVybiBSdShudWxsKX0pKSl9LHR9KCksaWg9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5wcmVsb2FkPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFJ1KG51bGwpfSx0fSgpLGFoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbixyLG8pe3RoaXMucm91dGVyPXQsdGhpcy5pbmplY3Rvcj1yLHRoaXMucHJlbG9hZGluZ1N0cmF0ZWd5PW8sdGhpcy5sb2FkZXI9bmV3IHFmKGUsbiwoZnVuY3Rpb24oZSl7cmV0dXJuIHQudHJpZ2dlckV2ZW50KG5ldyBCcyhlKSl9KSwoZnVuY3Rpb24oZSl7cmV0dXJuIHQudHJpZ2dlckV2ZW50KG5ldyBacyhlKSl9KSl9cmV0dXJuIHQucHJvdG90eXBlLnNldFVwUHJlbG9hZGluZz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5zdWJzY3JpcHRpb249dGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoRnUoKGZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgTnN9KSksYmwoKGZ1bmN0aW9uKCl7cmV0dXJuIHQucHJlbG9hZCgpfSkpKS5zdWJzY3JpYmUoKGZ1bmN0aW9uKCl7fSkpfSx0LnByb3RvdHlwZS5wcmVsb2FkPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5pbmplY3Rvci5nZXQoSHQpO3JldHVybiB0aGlzLnByb2Nlc3NSb3V0ZXModCx0aGlzLnJvdXRlci5jb25maWcpfSx0LnByb3RvdHlwZS5uZ09uRGVzdHJveT1mdW5jdGlvbigpe3RoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCl9LHQucHJvdG90eXBlLnByb2Nlc3NSb3V0ZXM9ZnVuY3Rpb24odCxlKXt2YXIgbixvLGk9W107dHJ5e2Zvcih2YXIgYT1PYmplY3Qoci5fX3ZhbHVlcykoZSksdT1hLm5leHQoKTshdS5kb25lO3U9YS5uZXh0KCkpe3ZhciBsPXUudmFsdWU7aWYobC5sb2FkQ2hpbGRyZW4mJiFsLmNhbkxvYWQmJmwuX2xvYWRlZENvbmZpZyl7dmFyIHM9bC5fbG9hZGVkQ29uZmlnO2kucHVzaCh0aGlzLnByb2Nlc3NSb3V0ZXMocy5tb2R1bGUscy5yb3V0ZXMpKX1lbHNlIGwubG9hZENoaWxkcmVuJiYhbC5jYW5Mb2FkP2kucHVzaCh0aGlzLnByZWxvYWRDb25maWcodCxsKSk6bC5jaGlsZHJlbiYmaS5wdXNoKHRoaXMucHJvY2Vzc1JvdXRlcyh0LGwuY2hpbGRyZW4pKX19Y2F0Y2goYyl7bj17ZXJyb3I6Y319ZmluYWxseXt0cnl7dSYmIXUuZG9uZSYmKG89YS5yZXR1cm4pJiZvLmNhbGwoYSl9ZmluYWxseXtpZihuKXRocm93IG4uZXJyb3J9fXJldHVybiBXKGkpLnBpcGUoJCgpLEIoKGZ1bmN0aW9uKHQpe30pKSl9LHQucHJvdG90eXBlLnByZWxvYWRDb25maWc9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO3JldHVybiB0aGlzLnByZWxvYWRpbmdTdHJhdGVneS5wcmVsb2FkKGUsKGZ1bmN0aW9uKCl7cmV0dXJuIG4ubG9hZGVyLmxvYWQodC5pbmplY3RvcixlKS5waXBlKFEoKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9sb2FkZWRDb25maWc9dCxuLnByb2Nlc3NSb3V0ZXModC5tb2R1bGUsdC5yb3V0ZXMpfSkpKX0pKX0sdH0oKSx1aD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3ZvaWQgMD09PW4mJihuPXt9KSx0aGlzLnJvdXRlcj10LHRoaXMudmlld3BvcnRTY3JvbGxlcj1lLHRoaXMub3B0aW9ucz1uLHRoaXMubGFzdElkPTAsdGhpcy5sYXN0U291cmNlPSJpbXBlcmF0aXZlIix0aGlzLnJlc3RvcmVkSWQ9MCx0aGlzLnN0b3JlPXt9LG4uc2Nyb2xsUG9zaXRpb25SZXN0b3JhdGlvbj1uLnNjcm9sbFBvc2l0aW9uUmVzdG9yYXRpb258fCJkaXNhYmxlZCIsbi5hbmNob3JTY3JvbGxpbmc9bi5hbmNob3JTY3JvbGxpbmd8fCJkaXNhYmxlZCJ9cmV0dXJuIHQucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXsiZGlzYWJsZWQiIT09dGhpcy5vcHRpb25zLnNjcm9sbFBvc2l0aW9uUmVzdG9yYXRpb24mJnRoaXMudmlld3BvcnRTY3JvbGxlci5zZXRIaXN0b3J5U2Nyb2xsUmVzdG9yYXRpb24oIm1hbnVhbCIpLHRoaXMucm91dGVyRXZlbnRzU3Vic2NyaXB0aW9uPXRoaXMuY3JlYXRlU2Nyb2xsRXZlbnRzKCksdGhpcy5zY3JvbGxFdmVudHNTdWJzY3JpcHRpb249dGhpcy5jb25zdW1lU2Nyb2xsRXZlbnRzKCl9LHQucHJvdG90eXBlLmNyZWF0ZVNjcm9sbEV2ZW50cz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoKGZ1bmN0aW9uKGUpe2UgaW5zdGFuY2VvZiBqcz8odC5zdG9yZVt0Lmxhc3RJZF09dC52aWV3cG9ydFNjcm9sbGVyLmdldFNjcm9sbFBvc2l0aW9uKCksdC5sYXN0U291cmNlPWUubmF2aWdhdGlvblRyaWdnZXIsdC5yZXN0b3JlZElkPWUucmVzdG9yZWRTdGF0ZT9lLnJlc3RvcmVkU3RhdGUubmF2aWdhdGlvbklkOjApOmUgaW5zdGFuY2VvZiBOcyYmKHQubGFzdElkPWUuaWQsdC5zY2hlZHVsZVNjcm9sbEV2ZW50KGUsdC5yb3V0ZXIucGFyc2VVcmwoZS51cmxBZnRlclJlZGlyZWN0cykuZnJhZ21lbnQpKX0pKX0sdC5wcm90b3R5cGUuY29uc3VtZVNjcm9sbEV2ZW50cz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoKGZ1bmN0aW9uKGUpe2UgaW5zdGFuY2VvZiBLcyYmKGUucG9zaXRpb24/InRvcCI9PT10Lm9wdGlvbnMuc2Nyb2xsUG9zaXRpb25SZXN0b3JhdGlvbj90LnZpZXdwb3J0U2Nyb2xsZXIuc2Nyb2xsVG9Qb3NpdGlvbihbMCwwXSk6ImVuYWJsZWQiPT09dC5vcHRpb25zLnNjcm9sbFBvc2l0aW9uUmVzdG9yYXRpb24mJnQudmlld3BvcnRTY3JvbGxlci5zY3JvbGxUb1Bvc2l0aW9uKGUucG9zaXRpb24pOmUuYW5jaG9yJiYiZW5hYmxlZCI9PT10Lm9wdGlvbnMuYW5jaG9yU2Nyb2xsaW5nP3Qudmlld3BvcnRTY3JvbGxlci5zY3JvbGxUb0FuY2hvcihlLmFuY2hvcik6ImRpc2FibGVkIiE9PXQub3B0aW9ucy5zY3JvbGxQb3NpdGlvblJlc3RvcmF0aW9uJiZ0LnZpZXdwb3J0U2Nyb2xsZXIuc2Nyb2xsVG9Qb3NpdGlvbihbMCwwXSkpfSkpfSx0LnByb3RvdHlwZS5zY2hlZHVsZVNjcm9sbEV2ZW50PWZ1bmN0aW9uKHQsZSl7dGhpcy5yb3V0ZXIudHJpZ2dlckV2ZW50KG5ldyBLcyh0LCJwb3BzdGF0ZSI9PT10aGlzLmxhc3RTb3VyY2U/dGhpcy5zdG9yZVt0aGlzLnJlc3RvcmVkSWRdOm51bGwsZSkpfSx0LnByb3RvdHlwZS5uZ09uRGVzdHJveT1mdW5jdGlvbigpe3RoaXMucm91dGVyRXZlbnRzU3Vic2NyaXB0aW9uJiZ0aGlzLnJvdXRlckV2ZW50c1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuc2Nyb2xsRXZlbnRzU3Vic2NyaXB0aW9uJiZ0aGlzLnNjcm9sbEV2ZW50c1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfSx0fSgpLGxoPW5ldyBUdCgiUk9VVEVSX0NPTkZJR1VSQVRJT04iKSxzaD1uZXcgVHQoIlJPVVRFUl9GT1JST09UX0dVQVJEIiksY2g9W2h1LHtwcm92aWRlOl9jLHVzZUNsYXNzOndjfSx7cHJvdmlkZTokZix1c2VGYWN0b3J5OnloLGRlcHM6W19pLF9jLHRoLGh1LE1lLGJpLFdvLEdmLGxoLFtXZixuZXcgc3RdLFtCZixuZXcgc3RdXX0sdGgse3Byb3ZpZGU6emMsdXNlRmFjdG9yeTptaCxkZXBzOlskZl19LHtwcm92aWRlOmJpLHVzZUNsYXNzOlNpfSxhaCxpaCxvaCx7cHJvdmlkZTpsaCx1c2VWYWx1ZTp7ZW5hYmxlVHJhY2luZzohMX19XTtmdW5jdGlvbiBmaCgpe3JldHVybiBuZXcgZGkoIlJvdXRlciIsJGYpfXZhciBoaD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt9dmFyIGU7cmV0dXJuIGU9dCx0LmZvclJvb3Q9ZnVuY3Rpb24odCxuKXtyZXR1cm57bmdNb2R1bGU6ZSxwcm92aWRlcnM6W2NoLHZoKHQpLHtwcm92aWRlOnNoLHVzZUZhY3Rvcnk6Z2gsZGVwczpbWyRmLG5ldyBzdCxuZXcgZnRdXX0se3Byb3ZpZGU6bGgsdXNlVmFsdWU6bnx8e319LHtwcm92aWRlOmN1LHVzZUZhY3Rvcnk6ZGgsZGVwczpbbHUsW25ldyBsdChmdSksbmV3IHN0XSxsaF19LHtwcm92aWRlOnVoLHVzZUZhY3Rvcnk6cGgsZGVwczpbJGYsVHUsbGhdfSx7cHJvdmlkZTpyaCx1c2VFeGlzdGluZzpuJiZuLnByZWxvYWRpbmdTdHJhdGVneT9uLnByZWxvYWRpbmdTdHJhdGVneTppaH0se3Byb3ZpZGU6ZGksbXVsdGk6ITAsdXNlRmFjdG9yeTpmaH0sW19oLHtwcm92aWRlOmtvLG11bHRpOiEwLHVzZUZhY3Rvcnk6d2gsZGVwczpbX2hdfSx7cHJvdmlkZTp4aCx1c2VGYWN0b3J5OmJoLGRlcHM6W19oXX0se3Byb3ZpZGU6RG8sbXVsdGk6ITAsdXNlRXhpc3Rpbmc6eGh9XV19fSx0LmZvckNoaWxkPWZ1bmN0aW9uKHQpe3JldHVybntuZ01vZHVsZTplLHByb3ZpZGVyczpbdmgodCldfX0sdH0oKTtmdW5jdGlvbiBwaCh0LGUsbil7cmV0dXJuIG4uc2Nyb2xsT2Zmc2V0JiZlLnNldE9mZnNldChuLnNjcm9sbE9mZnNldCksbmV3IHVoKHQsZSxuKX1mdW5jdGlvbiBkaCh0LGUsbil7cmV0dXJuIHZvaWQgMD09PW4mJihuPXt9KSxuLnVzZUhhc2g/bmV3IGR1KHQsZSk6bmV3IGd1KHQsZSl9ZnVuY3Rpb24gZ2godCl7aWYodCl0aHJvdyBuZXcgRXJyb3IoIlJvdXRlck1vZHVsZS5mb3JSb290KCkgY2FsbGVkIHR3aWNlLiBMYXp5IGxvYWRlZCBtb2R1bGVzIHNob3VsZCB1c2UgUm91dGVyTW9kdWxlLmZvckNoaWxkKCkgaW5zdGVhZC4iKTtyZXR1cm4iZ3VhcmRlZCJ9ZnVuY3Rpb24gdmgodCl7cmV0dXJuW3twcm92aWRlOnplLG11bHRpOiEwLHVzZVZhbHVlOnR9LHtwcm92aWRlOkdmLG11bHRpOiEwLHVzZVZhbHVlOnR9XX1mdW5jdGlvbiB5aCh0LGUsbixyLG8saSxhLHUsbCxzLGMpe3ZvaWQgMD09PWwmJihsPXt9KTt2YXIgZj1uZXcgJGYobnVsbCxlLG4scixvLGksYSxzYyh1KSk7aWYocyYmKGYudXJsSGFuZGxpbmdTdHJhdGVneT1zKSxjJiYoZi5yb3V0ZVJldXNlU3RyYXRlZ3k9YyksbC5lcnJvckhhbmRsZXImJihmLmVycm9ySGFuZGxlcj1sLmVycm9ySGFuZGxlciksbC5tYWxmb3JtZWRVcmlFcnJvckhhbmRsZXImJihmLm1hbGZvcm1lZFVyaUVycm9ySGFuZGxlcj1sLm1hbGZvcm1lZFVyaUVycm9ySGFuZGxlciksbC5lbmFibGVUcmFjaW5nKXt2YXIgaD1FbCgpO2YuZXZlbnRzLnN1YnNjcmliZSgoZnVuY3Rpb24odCl7aC5sb2dHcm91cCgiUm91dGVyIEV2ZW50OiAiK3QuY29uc3RydWN0b3IubmFtZSksaC5sb2codC50b1N0cmluZygpKSxoLmxvZyh0KSxoLmxvZ0dyb3VwRW5kKCl9KSl9cmV0dXJuIGwub25TYW1lVXJsTmF2aWdhdGlvbiYmKGYub25TYW1lVXJsTmF2aWdhdGlvbj1sLm9uU2FtZVVybE5hdmlnYXRpb24pLGwucGFyYW1zSW5oZXJpdGFuY2VTdHJhdGVneSYmKGYucGFyYW1zSW5oZXJpdGFuY2VTdHJhdGVneT1sLnBhcmFtc0luaGVyaXRhbmNlU3RyYXRlZ3kpLGwudXJsVXBkYXRlU3RyYXRlZ3kmJihmLnVybFVwZGF0ZVN0cmF0ZWd5PWwudXJsVXBkYXRlU3RyYXRlZ3kpLGwucmVsYXRpdmVMaW5rUmVzb2x1dGlvbiYmKGYucmVsYXRpdmVMaW5rUmVzb2x1dGlvbj1sLnJlbGF0aXZlTGlua1Jlc29sdXRpb24pLGZ9ZnVuY3Rpb24gbWgodCl7cmV0dXJuIHQucm91dGVyU3RhdGUucm9vdH12YXIgX2g9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuaW5qZWN0b3I9dCx0aGlzLmluaXROYXZpZ2F0aW9uPSExLHRoaXMucmVzdWx0T2ZQcmVhY3RpdmF0aW9uRG9uZT1uZXcgUH1yZXR1cm4gdC5wcm90b3R5cGUuYXBwSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLmluamVjdG9yLmdldChzdSxQcm9taXNlLnJlc29sdmUobnVsbCkpLnRoZW4oKGZ1bmN0aW9uKCl7dmFyIGU9bnVsbCxuPW5ldyBQcm9taXNlKChmdW5jdGlvbih0KXtyZXR1cm4gZT10fSkpLHI9dC5pbmplY3Rvci5nZXQoJGYpLG89dC5pbmplY3Rvci5nZXQobGgpO2lmKHQuaXNMZWdhY3lEaXNhYmxlZChvKXx8dC5pc0xlZ2FjeUVuYWJsZWQobykpZSghMCk7ZWxzZSBpZigiZGlzYWJsZWQiPT09by5pbml0aWFsTmF2aWdhdGlvbilyLnNldFVwTG9jYXRpb25DaGFuZ2VMaXN0ZW5lcigpLGUoITApO2Vsc2V7aWYoImVuYWJsZWQiIT09by5pbml0aWFsTmF2aWdhdGlvbil0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgaW5pdGlhbE5hdmlnYXRpb24gb3B0aW9uczogJyIrby5pbml0aWFsTmF2aWdhdGlvbisiJyIpO3IuaG9va3MuYWZ0ZXJQcmVhY3RpdmF0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHQuaW5pdE5hdmlnYXRpb24/UnUobnVsbCk6KHQuaW5pdE5hdmlnYXRpb249ITAsZSghMCksdC5yZXN1bHRPZlByZWFjdGl2YXRpb25Eb25lKX0sci5pbml0aWFsTmF2aWdhdGlvbigpfXJldHVybiBufSkpfSx0LnByb3RvdHlwZS5ib290c3RyYXBMaXN0ZW5lcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmluamVjdG9yLmdldChsaCksbj10aGlzLmluamVjdG9yLmdldChhaCkscj10aGlzLmluamVjdG9yLmdldCh1aCksbz10aGlzLmluamVjdG9yLmdldCgkZiksaT10aGlzLmluamVjdG9yLmdldChfaSk7dD09PWkuY29tcG9uZW50c1swXSYmKHRoaXMuaXNMZWdhY3lFbmFibGVkKGUpP28uaW5pdGlhbE5hdmlnYXRpb24oKTp0aGlzLmlzTGVnYWN5RGlzYWJsZWQoZSkmJm8uc2V0VXBMb2NhdGlvbkNoYW5nZUxpc3RlbmVyKCksbi5zZXRVcFByZWxvYWRpbmcoKSxyLmluaXQoKSxvLnJlc2V0Um9vdENvbXBvbmVudFR5cGUoaS5jb21wb25lbnRUeXBlc1swXSksdGhpcy5yZXN1bHRPZlByZWFjdGl2YXRpb25Eb25lLm5leHQobnVsbCksdGhpcy5yZXN1bHRPZlByZWFjdGl2YXRpb25Eb25lLmNvbXBsZXRlKCkpfSx0LnByb3RvdHlwZS5pc0xlZ2FjeUVuYWJsZWQ9ZnVuY3Rpb24odCl7cmV0dXJuImxlZ2FjeV9lbmFibGVkIj09PXQuaW5pdGlhbE5hdmlnYXRpb258fCEwPT09dC5pbml0aWFsTmF2aWdhdGlvbnx8dm9pZCAwPT09dC5pbml0aWFsTmF2aWdhdGlvbn0sdC5wcm90b3R5cGUuaXNMZWdhY3lEaXNhYmxlZD1mdW5jdGlvbih0KXtyZXR1cm4ibGVnYWN5X2Rpc2FibGVkIj09PXQuaW5pdGlhbE5hdmlnYXRpb258fCExPT09dC5pbml0aWFsTmF2aWdhdGlvbn0sdH0oKTtmdW5jdGlvbiB3aCh0KXtyZXR1cm4gdC5hcHBJbml0aWFsaXplci5iaW5kKHQpfWZ1bmN0aW9uIGJoKHQpe3JldHVybiB0LmJvb3RzdHJhcExpc3RlbmVyLmJpbmQodCl9dmFyIHhoPW5ldyBUdCgiUm91dGVyIEluaXRpYWxpemVyIiksQ2g9Sm4oe2VuY2Fwc3VsYXRpb246MixzdHlsZXM6W10sZGF0YTp7fX0pO2Z1bmN0aW9uIFNoKHQpe3JldHVybiAkaSgwLFsodCgpKCksVmkoMCwxNjc3NzIxNixudWxsLG51bGwsMSwicm91dGVyLW91dGxldCIsW10sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksb28oMSwyMTI5OTIsbnVsbCwwLGVoLFt0aCxNbixybixbOCxudWxsXSxrZV0sbnVsbCxudWxsKV0sKGZ1bmN0aW9uKHQsZSl7dChlLDEsMCl9KSxudWxsKX1mdW5jdGlvbiBFaCh0KXtyZXR1cm4gJGkoMCxbKHQoKSgpLFZpKDAsMCxudWxsLG51bGwsMSwibmctY29tcG9uZW50IixbXSxudWxsLG51bGwsbnVsbCxTaCxDaCkpLG9vKDEsNDkxNTIsbnVsbCwwLFlzLFtdLG51bGwsbnVsbCldLG51bGwsbnVsbCl9dmFyIE9oPWpyKCJuZy1jb21wb25lbnQiLFlzLEVoLHt9LHt9LFtdKSxUaD1Kbih7ZW5jYXBzdWxhdGlvbjowLHN0eWxlczpbJ1tfbmdob3N0LSVDT01QJV0ge1xuICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICJTZWdvZSBVSSIsIFJvYm90bywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZiwgIkFwcGxlIENvbG9yIEVtb2ppIiwgIlNlZ29lIFVJIEVtb2ppIiwgIlNlZ29lIFVJIFN5bWJvbCI7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGNvbG9yOiAjMzMzO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgfVxuXG4gIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgaDJbX25nY29udGVudC0lQ09NUCVdLCBoM1tfbmdjb250ZW50LSVDT01QJV0sIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgaDVbX25nY29udGVudC0lQ09NUCVdLCBoNltfbmdjb250ZW50LSVDT01QJV0ge1xuICAgIG1hcmdpbjogOHB4IDA7XG4gIH1cblxuICBwW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gICAgbWFyZ2luOiAwO1xuICB9XG5cbiAgLnNwYWNlcltfbmdjb250ZW50LSVDT01QJV0ge1xuICAgIGZsZXg6IDE7XG4gIH1cblxuICAudG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0ge1xuICAgIGhlaWdodDogNjBweDtcbiAgICBtYXJnaW46IC04cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMxOTc2ZDI7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIH1cblxuICAudG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBpbWdbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICBtYXJnaW46IDAgMTZweDtcbiAgfVxuXG4gIC50b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgICN0d2l0dGVyLWxvZ29bX25nY29udGVudC0lQ09NUCVdIHtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgbWFyZ2luOiAwIDE2cHg7XG4gIH1cblxuICAudG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAjdHdpdHRlci1sb2dvW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciB7XG4gICAgb3BhY2l0eTogMC44O1xuICB9XG5cbiAgLmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIG1hcmdpbjogMzJweCBhdXRvO1xuICAgIHBhZGRpbmc6IDAgMTZweDtcbiAgICBtYXgtd2lkdGg6IDk2MHB4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxuXG4gIHN2Zy5tYXRlcmlhbC1pY29uc1tfbmdjb250ZW50LSVDT01QJV0ge1xuICAgIGhlaWdodDogMjRweDtcbiAgICB3aWR0aDogYXV0bztcbiAgfVxuXG4gIHN2Zy5tYXRlcmlhbC1pY29uc1tfbmdjb250ZW50LSVDT01QJV06bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgbWFyZ2luLXJpZ2h0OiA4cHg7XG4gIH1cblxuICAuY2FyZFtfbmdjb250ZW50LSVDT01QJV0gICBzdmcubWF0ZXJpYWwtaWNvbnNbX25nY29udGVudC0lQ09NUCVdICAgcGF0aFtfbmdjb250ZW50LSVDT01QJV0ge1xuICAgIGZpbGw6ICM4ODg7XG4gIH1cblxuICAuY2FyZC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBtYXJnaW4tdG9wOiAxNnB4O1xuICB9XG5cbiAgLmNhcmRbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2VlZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhO1xuICAgIGhlaWdodDogNDBweDtcbiAgICB3aWR0aDogMjAwcHg7XG4gICAgbWFyZ2luOiAwIDhweCAxNnB4O1xuICAgIHBhZGRpbmc6IDE2cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQ7XG4gICAgbGluZS1oZWlnaHQ6IDI0cHg7XG4gIH1cblxuICAuY2FyZC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNhcmRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgfVxuXG4gIC5jYXJkLmNhcmQtc21hbGxbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICBoZWlnaHQ6IDE2cHg7XG4gICAgd2lkdGg6IDE2OHB4O1xuICB9XG5cbiAgLmNhcmQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLmhpZ2hsaWdodC1jYXJkKSB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG5cbiAgLmNhcmQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLmhpZ2hsaWdodC1jYXJkKTpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zcHgpO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDE3cHggcmdiYShibGFjaywgMC4zNSk7XG4gIH1cblxuICAuY2FyZC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNhcmRbX25nY29udGVudC0lQ09NUCVdOm5vdCguaGlnaGxpZ2h0LWNhcmQpOmhvdmVyICAgLm1hdGVyaWFsLWljb25zW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBhdGhbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICBmaWxsOiByZ2IoMTA1LCAxMDMsIDEwMyk7XG4gIH1cblxuICAuY2FyZC5oaWdobGlnaHQtY2FyZFtfbmdjb250ZW50LSVDT01QJV0ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMxOTc2ZDI7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIG1pbi13aWR0aDogMzAlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuXG4gIC5jYXJkLmNhcmQuaGlnaGxpZ2h0LWNhcmRbX25nY29udGVudC0lQ09NUCVdICAgc3Bhbltfbmdjb250ZW50LSVDT01QJV0ge1xuICAgIG1hcmdpbi1sZWZ0OiA2MHB4O1xuICB9XG5cbiAgc3ZnI3JvY2tldFtfbmdjb250ZW50LSVDT01QJV0ge1xuICAgIHdpZHRoOiA4MHB4O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAtMTBweDtcbiAgICB0b3A6IC0yNHB4O1xuICB9XG5cbiAgc3ZnI3JvY2tldC1zbW9rZVtfbmdjb250ZW50LSVDT01QJV0ge1xuICAgIGhlaWdodDogMTAwdmg7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMTBweDtcbiAgICByaWdodDogMTgwcHg7XG4gICAgei1pbmRleDogLTEwO1xuICB9XG5cbiAgYVtfbmdjb250ZW50LSVDT01QJV0sIGFbX25nY29udGVudC0lQ09NUCVdOnZpc2l0ZWQsIGFbX25nY29udGVudC0lQ09NUCVdOmhvdmVyIHtcbiAgICBjb2xvcjogIzE5NzZkMjtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIH1cblxuICBhW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciB7XG4gICAgY29sb3I6ICMxMjU2OTk7XG4gIH1cblxuICAudGVybWluYWxbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IDgwJTtcbiAgICBtYXgtd2lkdGg6IDYwMHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICBwYWRkaW5nLXRvcDogNDVweDtcbiAgICBtYXJnaW4tdG9wOiA4cHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTUsIDE1LCAxNik7XG4gIH1cblxuICAudGVybWluYWxbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICJcXDIwMjIgXFwyMDIyIFxcMjAyMiI7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIGhlaWdodDogNHB4O1xuICAgIGJhY2tncm91bmQ6IHJnYig1OCwgNTgsIDU4KTtcbiAgICBjb2xvcjogI2MyYzNjNDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBmb250LXNpemU6IDJyZW07XG4gICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgcGFkZGluZzogMTRweCAwO1xuICAgIHRleHQtaW5kZW50OiA0cHg7XG4gIH1cblxuICAudGVybWluYWxbX25nY29udGVudC0lQ09NUCVdICAgcHJlW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gICAgZm9udC1mYW1pbHk6IFNGTW9uby1SZWd1bGFyLENvbnNvbGFzLExpYmVyYXRpb24gTW9ubyxNZW5sbyxtb25vc3BhY2U7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIHBhZGRpbmc6IDAgMXJlbSAxcmVtO1xuIA=="
                },
                {
                    "key": "asdf?main.e3350ff4d88d534234ef.js?4?4?2",
                    "type": "binary",
                    "value": "base64:ICAgbWFyZ2luOiAwO1xuICB9XG5cbiAgLmNpcmNsZS1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAgIHdpZHRoOiA0MHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDQwcHg7XG4gICAgbWFyZ2luOiA4cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2VlZWVlZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTIpLCAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjI0KTtcbiAgICB0cmFuc2l0aW9uOiAxcyBlYXNlLW91dDtcbiAgfVxuXG4gIC5jaXJjbGUtbGlua1tfbmdjb250ZW50LSVDT01QJV06aG92ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMC4yNXJlbSk7XG4gICAgYm94LXNoYWRvdzogMHB4IDNweCAxNXB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcbiAgfVxuXG4gIGZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0ge1xuICAgIG1hcmdpbi10b3A6IDhweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIH1cblxuICBmb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgYVtfbmdjb250ZW50LSVDT01QJV0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxuXG4gIC5naXRodWItc3Rhci1iYWRnZVtfbmdjb250ZW50LSVDT01QJV0ge1xuICAgIGNvbG9yOiAjMjQyOTJlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgcGFkZGluZzogM3B4IDEwcHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNywzMSwzNSwuMik7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgtMTgwZGVnLCNmYWZiZmMsI2VmZjNmNiA5MCUpO1xuICAgIG1hcmdpbi1sZWZ0OiA0cHg7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsU2Vnb2UgVUksSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWYsQXBwbGUgQ29sb3IgRW1vamksU2Vnb2UgVUkgRW1vamksU2Vnb2UgVUkgU3ltYm9sO1xuICB9XG5cbiAgLmdpdGh1Yi1zdGFyLWJhZGdlW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC0xODBkZWcsI2YwZjNmNiwjZTZlYmYxIDkwJSk7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDI3LDMxLDM1LC4zNSk7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLS41ZW07XG4gIH1cblxuICAuZ2l0aHViLXN0YXItYmFkZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdGVyaWFsLWljb25zW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIG1hcmdpbi1yaWdodDogNHB4O1xuICB9XG5cbiAgc3ZnI2Nsb3Vkc1tfbmdjb250ZW50LSVDT01QJV0ge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBib3R0b206IC0xNjBweDtcbiAgICBsZWZ0OiAtMjMwcHg7XG4gICAgei1pbmRleDogLTEwO1xuICAgIHdpZHRoOiAxOTIwcHg7XG4gIH1cblxuXG4gIFxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkge1xuXG4gICAgLmNhcmQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgICA+ICpbX25nY29udGVudC0lQ09NUCVdOm5vdCguY2lyY2xlLWxpbmspLCAudGVybWluYWxbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC5jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLmhpZ2hsaWdodC1jYXJkKSB7XG4gICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICBtYXJnaW46IDhweCAwO1xuICAgIH1cblxuICAgIC5jYXJkLmhpZ2hsaWdodC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHNwYW5bX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiA3MnB4O1xuICAgIH1cblxuICAgIHN2ZyNyb2NrZXQtc21va2VbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgIHJpZ2h0OiAxMjBweDtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKC01ZGVnKTtcbiAgICB9XG4gIH1cblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1NzVweCkge1xuICAgIHN2ZyNyb2NrZXQtc21va2VbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgfVxuICB9JyxbIiJdXSxkYXRhOnt9fSk7ZnVuY3Rpb24gUGgodCl7cmV0dXJuICRpKDAsWyh0KCkoKSxWaSgwLDAsbnVsbCxudWxsLDEsInByZSIsW10sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLEtpKC0xLG51bGwsWyJuZyBnZW5lcmF0ZSBjb21wb25lbnQgeHl6Il0pKV0sbnVsbCxudWxsKX1mdW5jdGlvbiBraCh0KXtyZXR1cm4gJGkoMCxbKHQoKSgpLFZpKDAsMCxudWxsLG51bGwsMSwicHJlIixbXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksS2koLTEsbnVsbCxbIm5nIGFkZCBAYW5ndWxhci9tYXRlcmlhbCJdKSldLG51bGwsbnVsbCl9ZnVuY3Rpb24gQWgodCl7cmV0dXJuICRpKDAsWyh0KCkoKSxWaSgwLDAsbnVsbCxudWxsLDEsInByZSIsW10sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLEtpKC0xLG51bGwsWyJuZyBhZGQgX19fX18iXSkpXSxudWxsLG51bGwpfWZ1bmN0aW9uIEloKHQpe3JldHVybiAkaSgwLFsodCgpKCksVmkoMCwwLG51bGwsbnVsbCwxLCJwcmUiLFtdLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxLaSgtMSxudWxsLFsibmcgdGVzdCJdKSldLG51bGwsbnVsbCl9ZnVuY3Rpb24gUmgodCl7cmV0dXJuICRpKDAsWyh0KCkoKSxWaSgwLDAsbnVsbCxudWxsLDEsInByZSIsW10sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLEtpKC0xLG51bGwsWyJuZyBidWlsZCAtLXByb2QiXSkpXSxudWxsLG51bGwpfWZ1bmN0aW9uIE1oKHQpe3JldHVybiAkaSgwLFsodCgpKCksVmkoMCwwLG51bGwsbnVsbCwxMSwiZGl2IixbWyJjbGFzcyIsInRvb2xiYXIiXSxbInJvbGUiLCJiYW5uZXIiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDEsMCxudWxsLG51bGwsMCwiaW1nIixbWyJhbHQiLCJBbmd1bGFyIExvZ28iXSxbInNyYyIsImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QjRiV3h1Y3owaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNQzl6ZG1jaUlIWnBaWGRDYjNnOUlqQWdNQ0F5TlRBZ01qVXdJajRLSUNBZ0lEeHdZWFJvSUdacGJHdzlJaU5FUkRBd016RWlJR1E5SWsweE1qVWdNekJNTXpFdU9TQTJNeTR5YkRFMExqSWdNVEl6TGpGTU1USTFJREl6TUd3M09DNDVMVFF6TGpjZ01UUXVNaTB4TWpNdU1Yb2lJQzgrQ2lBZ0lDQThjR0YwYUNCbWFXeHNQU0lqUXpNd01ESkdJaUJrUFNKTk1USTFJRE13ZGpJeUxqSXRMakZXTWpNd2JEYzRMamt0TkRNdU55QXhOQzR5TFRFeU15NHhUREV5TlNBek1Ib2lJQzgrQ2lBZ0lDQThjR0YwYUNBZ1ptbHNiRDBpSTBaR1JrWkdSaUlnWkQwaVRURXlOU0ExTWk0eFREWTJMamdnTVRneUxqWm9NakV1TjJ3eE1TNDNMVEk1TGpKb05Ea3VOR3d4TVM0M0lESTVMakpJTVRnelRERXlOU0ExTWk0eGVtMHhOeUE0TXk0emFDMHpOR3d4TnkwME1DNDVJREUzSURRd0xqbDZJaUF2UGdvZ0lEd3ZjM1puUGc9PSJdLFsid2lkdGgiLCI0MCJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMiwwLG51bGwsbnVsbCwxLCJzcGFuIixbXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksS2koLTEsbnVsbCxbIldlbGNvbWUiXSkpLCh0KCkoKSxWaSg0LDAsbnVsbCxudWxsLDAsImRpdiIsW1siY2xhc3MiLCJzcGFjZXIiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDUsMCxudWxsLG51bGwsNiwiYSIsW1siYXJpYS1sYWJlbCIsIkFuZ3VsYXIgb24gdHdpdHRlciJdLFsiaHJlZiIsImh0dHBzOi8vdHdpdHRlci5jb20vYW5ndWxhciJdLFsicmVsIiwibm9vcGVuZXIiXSxbInRhcmdldCIsIl9ibGFuayJdLFsidGl0bGUiLCJUd2l0dGVyIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSg2LDAsbnVsbCxudWxsLDUsIjpzdmc6c3ZnIixbWyJkYXRhLW5hbWUiLCJMb2dvIOKAlCBGSVhFRCJdLFsiaGVpZ2h0IiwiMjQiXSxbImlkIiwidHdpdHRlci1sb2dvIl0sWyJ2aWV3Qm94IiwiMCAwIDQwMCA0MDAiXSxbInhtbG5zIiwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDcsMCxudWxsLG51bGwsMiwiOnN2ZzpkZWZzIixbXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoOCwwLG51bGwsbnVsbCwxLCI6c3ZnOnN0eWxlIixbXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksS2koLTEsbnVsbCxbIiAuY2xzLTEgeyBmaWxsOiBub25lOyB9IC5jbHMtMiB7IGZpbGw6ICNmZmZmZmY7IH0gIl0pKSwodCgpKCksVmkoMTAsMCxudWxsLG51bGwsMCwiOnN2ZzpyZWN0IixbWyJjbGFzcyIsImNscy0xIl0sWyJoZWlnaHQiLCI0MDAiXSxbIndpZHRoIiwiNDAwIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxMSwwLG51bGwsbnVsbCwwLCI6c3ZnOnBhdGgiLFtbImNsYXNzIiwiY2xzLTIiXSxbImQiLCJNMTUzLjYyLDMwMS41OWM5NC4zNCwwLDE0NS45NC03OC4xNiwxNDUuOTQtMTQ1Ljk0LDAtMi4yMiwwLTQuNDMtLjE1LTYuNjNBMTA0LjM2LDEwNC4zNiwwLDAsMCwzMjUsMTIyLjQ3YTEwMi4zOCwxMDIuMzgsMCwwLDEtMjkuNDYsOC4wNyw1MS40Nyw1MS40NywwLDAsMCwyMi41NS0yOC4zNywxMDIuNzksMTAyLjc5LDAsMCwxLTMyLjU3LDEyLjQ1LDUxLjM0LDUxLjM0LDAsMCwwLTg3LjQxLDQ2Ljc4QTE0NS42MiwxNDUuNjIsMCwwLDEsOTIuNCwxMDcuODFhNTEuMzMsNTEuMzMsMCwwLDAsMTUuODgsNjguNDdBNTAuOTEsNTAuOTEsMCwwLDEsODUsMTY5Ljg2YzAsLjIxLDAsLjQzLDAsLjY1YTUxLjMxLDUxLjMxLDAsMCwwLDQxLjE1LDUwLjI4LDUxLjIxLDUxLjIxLDAsMCwxLTIzLjE2Ljg4LDUxLjM1LDUxLjM1LDAsMCwwLDQ3LjkyLDM1LjYyLDEwMi45MiwxMDIuOTIsMCwwLDEtNjMuNywyMkExMDQuNDEsMTA0LjQxLDAsMCwxLDc1LDI3OC41NWExNDUuMjEsMTQ1LjIxLDAsMCwwLDc4LjYyLDIzIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxMiwwLG51bGwsbnVsbCwxNDMsImRpdiIsW1siY2xhc3MiLCJjb250ZW50Il0sWyJyb2xlIiwibWFpbiJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTMsMCxudWxsLG51bGwsMTAsImRpdiIsW1siY2xhc3MiLCJjYXJkIGhpZ2hsaWdodC1jYXJkIGNhcmQtc21hbGwiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDE0LDAsbnVsbCxudWxsLDUsIjpzdmc6c3ZnIixbWyJhbHQiLCJSb2NrZXQgU2hpcCJdLFsiaGVpZ2h0IiwiMTAxLjY3OCJdLFsiaWQiLCJyb2NrZXQiXSxbInZpZXdCb3giLCIwIDAgMTAxLjY3OCAxMDEuNjc4Il0sWyJ3aWR0aCIsIjEwMS42NzgiXSxbInhtbG5zIiwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDE1LDAsbnVsbCxudWxsLDQsIjpzdmc6ZyIsW1siZGF0YS1uYW1lIiwiR3JvdXAgODMiXSxbImlkIiwiR3JvdXBfODMiXSxbInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgtMTQxIC02OTYpIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxNiwwLG51bGwsbnVsbCwwLCI6c3ZnOmNpcmNsZSIsW1siY3giLCI1MC44MzkiXSxbImN5IiwiNTAuODM5Il0sWyJkYXRhLW5hbWUiLCJFbGxpcHNlIDgiXSxbImZpbGwiLCIjZGQwMDMxIl0sWyJpZCIsIkVsbGlwc2VfOCJdLFsiciIsIjUwLjgzOSJdLFsidHJhbnNmb3JtIiwidHJhbnNsYXRlKDE0MSA2OTYpIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxNywwLG51bGwsbnVsbCwyLCI6c3ZnOmciLFtbImRhdGEtbmFtZSIsIkdyb3VwIDQ3Il0sWyJpZCIsIkdyb3VwXzQ3Il0sWyJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMTY1LjE4NSA3MjAuMTg1KSJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTgsMCxudWxsLG51bGwsMCwiOnN2ZzpwYXRoIixbWyJkIiwiTTMuNCw0Mi42MTVhMy4wODQsMy4wODQsMCwwLDAsMy41NTMsMy41NTMsMjEuNDE5LDIxLjQxOSwwLDAsMCwxMi4yMTUtNi4xMDdMOS41MTEsMzAuNEEyMS40MTksMjEuNDE5LDAsMCwwLDMuNCw0Mi42MTVaIl0sWyJkYXRhLW5hbWUiLCJQYXRoIDMzIl0sWyJmaWxsIiwiI2ZmZiJdLFsiaWQiLCJQYXRoXzMzIl0sWyJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMC4zNzEgMy4zNjMpIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxOSwwLG51bGwsbnVsbCwwLCI6c3ZnOnBhdGgiLFtbImQiLCJNNTMuMywzLjIyMUEzLjA5LDMuMDksMCwwLDAsNTAuMDgxLDAsNDguMjI3LDQ4LjIyNywwLDAsMCwxOC4zMjIsMTMuNDM3Yy02LTEuNjY2LTE0Ljk5MS0xLjIyMS0xOC4zMjIsNy4yMThBMzMuODkyLDMzLjg5MiwwLDAsMSw5LjQzOSwyNS4xbC0uMzMzLjY2NmEzLjAxMywzLjAxMywwLDAsMCwuNTU1LDMuNTUzTDIzLjk4NSw0My42NDFhMi45LDIuOSwwLDAsMCwzLjU1My41NTVsLjY2Ni0uMzMzQTMzLjg5MiwzMy44OTIsMCwwLDEsMzIuNjQ3LDUzLjNjOC41NS0zLjY2NCw4Ljg4NC0xMi4zMjYsNy4yMTgtMTguMzIyQTQ4LjIyNyw0OC4yMjcsMCwwLDAsNTMuMywzLjIyMVpNMzQuNDI0LDkuNzcyYTYuNDM5LDYuNDM5LDAsMSwxLDkuMTA2LDkuMTA2LDYuMzY4LDYuMzY4LDAsMCwxLTkuMTA2LDBBNi40NjcsNi40NjcsMCwwLDEsMzQuNDI0LDkuNzcyWiJdLFsiZGF0YS1uYW1lIiwiUGF0aCAzNCJdLFsiZmlsbCIsIiNmZmYiXSxbImlkIiwiUGF0aF8zNCJdLFsidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAgMC4wMDUpIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgyMCwwLG51bGwsbnVsbCwxLCJzcGFuIixbXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksS2koMjEsbnVsbCxbIiIsIiBhcHAgaXMgcnVubmluZyEiXSkpLCh0KCkoKSxWaSgyMiwwLG51bGwsbnVsbCwxLCI6c3ZnOnN2ZyIsW1siYWx0IiwiUm9ja2V0IFNoaXAgU21va2UiXSxbImhlaWdodCIsIjEwODMuNjMyIl0sWyJpZCIsInJvY2tldC1zbW9rZSJdLFsidmlld0JveCIsIjAgMCA1MTYuMTE5IDEwODMuNjMyIl0sWyJ3aWR0aCIsIjUxNi4xMTkiXSxbInhtbG5zIiwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDIzLDAsbnVsbCxudWxsLDAsIjpzdmc6cGF0aCIsW1siZCIsIk02NDQuNiwxNDFTMTQzLjAyLDIxNS41MzcsMTQ3LjA0OSw4NzAuMjA3czM0Mi43NzQsMjAxLjc1NSwzNDIuNzc0LDIwMS43NTVTNDA0LjY1OSw4NDcuMjEzLDM4OC44MTUsNzYyLjJjLTI3LjExNi0xNDUuNTEtMTEuNTUxLTM4NC4xMjQsMjcxLjktNjA5LjFDNjcxLjE1LDEzOS4zNjUsNjQ0LjYsMTQxLDY0NC42LDE0MVoiXSxbImRhdGEtbmFtZSIsIlBhdGggNDAiXSxbImZpbGwiLCIjZjVmNWY1Il0sWyJpZCIsIlBhdGhfNDAiXSxbInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgtMTQ3LjAyNSAtMTQwLjkzOSkiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDI0LDAsbnVsbCxudWxsLDEsImgyIixbXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksS2koLTEsbnVsbCxbIlJlc291cmNlcyJdKSksKHQoKSgpLFZpKDI2LDAsbnVsbCxudWxsLDEsInAiLFtdLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxLaSgtMSxudWxsLFsiSGVyZSBhcmUgc29tZSBsaW5rcyB0byBoZWxwIHlvdSBnZXQgc3RhcnRlZDoiXSkpLCh0KCkoKSxWaSgyOCwwLG51bGwsbnVsbCwyMSwiZGl2IixbWyJjbGFzcyIsImNhcmQtY29udGFpbmVyIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgyOSwwLG51bGwsbnVsbCw2LCJhIixbWyJjbGFzcyIsImNhcmQiXSxbImhyZWYiLCJodHRwczovL2FuZ3VsYXIuaW8vdHV0b3JpYWwiXSxbInJlbCIsIm5vb3BlbmVyIl0sWyJ0YXJnZXQiLCJfYmxhbmsiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDMwLDAsbnVsbCxudWxsLDEsIjpzdmc6c3ZnIixbWyJjbGFzcyIsIm1hdGVyaWFsLWljb25zIl0sWyJoZWlnaHQiLCIyNCJdLFsidmlld0JveCIsIjAgMCAyNCAyNCJdLFsid2lkdGgiLCIyNCJdLFsieG1sbnMiLCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMzEsMCxudWxsLG51bGwsMCwiOnN2ZzpwYXRoIixbWyJkIiwiTTUgMTMuMTh2NEwxMiAyMWw3LTMuODJ2LTRMMTIgMTdsLTctMy44MnpNMTIgM0wxIDlsMTEgNiA5LTQuOTFWMTdoMlY5TDEyIDN6Il1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgzMiwwLG51bGwsbnVsbCwxLCJzcGFuIixbXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksS2koLTEsbnVsbCxbIkxlYXJuIEFuZ3VsYXIiXSkpLCh0KCkoKSxWaSgzNCwwLG51bGwsbnVsbCwxLCI6c3ZnOnN2ZyIsW1siY2xhc3MiLCJtYXRlcmlhbC1pY29ucyJdLFsiaGVpZ2h0IiwiMjQiXSxbInZpZXdCb3giLCIwIDAgMjQgMjQiXSxbIndpZHRoIiwiMjQiXSxbInhtbG5zIiwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDM1LDAsbnVsbCxudWxsLDAsIjpzdmc6cGF0aCIsW1siZCIsIk0xMCA2TDguNTkgNy40MSAxMy4xNyAxMmwtNC41OCA0LjU5TDEwIDE4bDYtNnoiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDM2LDAsbnVsbCxudWxsLDYsImEiLFtbImNsYXNzIiwiY2FyZCJdLFsiaHJlZiIsImh0dHBzOi8vYW5ndWxhci5pby9jbGkiXSxbInJlbCIsIm5vb3BlbmVyIl0sWyJ0YXJnZXQiLCJfYmxhbmsiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDM3LDAsbnVsbCxudWxsLDEsIjpzdmc6c3ZnIixbWyJjbGFzcyIsIm1hdGVyaWFsLWljb25zIl0sWyJoZWlnaHQiLCIyNCJdLFsidmlld0JveCIsIjAgMCAyNCAyNCJdLFsid2lkdGgiLCIyNCJdLFsieG1sbnMiLCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMzgsMCxudWxsLG51bGwsMCwiOnN2ZzpwYXRoIixbWyJkIiwiTTkuNCAxNi42TDQuOCAxMmw0LjYtNC42TDggNmwtNiA2IDYgNiAxLjQtMS40em01LjIgMGw0LjYtNC42LTQuNi00LjZMMTYgNmw2IDYtNiA2LTEuNC0xLjR6Il1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgzOSwwLG51bGwsbnVsbCwxLCJzcGFuIixbXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksS2koLTEsbnVsbCxbIkNMSSBEb2N1bWVudGF0aW9uIl0pKSwodCgpKCksVmkoNDEsMCxudWxsLG51bGwsMSwiOnN2ZzpzdmciLFtbImNsYXNzIiwibWF0ZXJpYWwtaWNvbnMiXSxbImhlaWdodCIsIjI0Il0sWyJ2aWV3Qm94IiwiMCAwIDI0IDI0Il0sWyJ3aWR0aCIsIjI0Il0sWyJ4bWxucyIsImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSg0MiwwLG51bGwsbnVsbCwwLCI6c3ZnOnBhdGgiLFtbImQiLCJNMTAgNkw4LjU5IDcuNDEgMTMuMTcgMTJsLTQuNTggNC41OUwxMCAxOGw2LTZ6Il1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSg0MywwLG51bGwsbnVsbCw2LCJhIixbWyJjbGFzcyIsImNhcmQiXSxbImhyZWYiLCJodHRwczovL2Jsb2cuYW5ndWxhci5pby8iXSxbInJlbCIsIm5vb3BlbmVyIl0sWyJ0YXJnZXQiLCJfYmxhbmsiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDQ0LDAsbnVsbCxudWxsLDEsIjpzdmc6c3ZnIixbWyJjbGFzcyIsIm1hdGVyaWFsLWljb25zIl0sWyJoZWlnaHQiLCIyNCJdLFsidmlld0JveCIsIjAgMCAyNCAyNCJdLFsid2lkdGgiLCIyNCJdLFsieG1sbnMiLCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoNDUsMCxudWxsLG51bGwsMCwiOnN2ZzpwYXRoIixbWyJkIiwiTTEzLjUuNjdzLjc0IDIuNjUuNzQgNC44YzAgMi4wNi0xLjM1IDMuNzMtMy40MSAzLjczLTIuMDcgMC0zLjYzLTEuNjctMy42My0zLjczbC4wMy0uMzZDNS4yMSA3LjUxIDQgMTAuNjIgNCAxNGMwIDQuNDIgMy41OCA4IDggOHM4LTMuNTggOC04QzIwIDguNjEgMTcuNDEgMy44IDEzLjUuNjd6TTExLjcxIDE5Yy0xLjc4IDAtMy4yMi0xLjQtMy4yMi0zLjE0IDAtMS42MiAxLjA1LTIuNzYgMi44MS0zLjEyIDEuNzctLjM2IDMuNi0xLjIxIDQuNjItMi41OC4zOSAxLjI5LjU5IDIuNjUuNTkgNC4wNCAwIDIuNjUtMi4xNSA0LjgtNC44IDQuOHoiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDQ2LDAsbnVsbCxudWxsLDEsInNwYW4iLFtdLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxLaSgtMSxudWxsLFsiQW5ndWxhciBCbG9nIl0pKSwodCgpKCksVmkoNDgsMCxudWxsLG51bGwsMSwiOnN2ZzpzdmciLFtbImNsYXNzIiwibWF0ZXJpYWwtaWNvbnMiXSxbImhlaWdodCIsIjI0Il0sWyJ2aWV3Qm94IiwiMCAwIDI0IDI0Il0sWyJ3aWR0aCIsIjI0Il0sWyJ4bWxucyIsImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSg0OSwwLG51bGwsbnVsbCwwLCI6c3ZnOnBhdGgiLFtbImQiLCJNMTAgNkw4LjU5IDcuNDEgMTMuMTcgMTJsLTQuNTggNC41OUwxMCAxOGw2LTZ6Il1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSg1MCwwLG51bGwsbnVsbCwxLCJoMiIsW10sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLEtpKC0xLG51bGwsWyJOZXh0IFN0ZXBzIl0pKSwodCgpKCksVmkoNTIsMCxudWxsLG51bGwsMSwicCIsW10sbnU="
                }
            ]
        },
        {
            "type": 12,
            "id": "A2xZFcNnJ9u7WT1GQ4hYFrMWDQDq2MYLySMfyMYSnndi",
            "fee": 12900000,
            "feeAssetId": null,
            "timestamp": 1575553258954,
            "version": 1,
            "sender": "3N2rk3yzChsJp4wCS5VLo5Q3ifLmDChfbzQ",
            "senderPublicKey": "BdACbbxkapMbmbtG7UxdPQ5Y8grEhk9cNxLNGAF5znme",
            "proofs": [
                "51hyuJUnYt2YusaUqA2o5p4pJTDomhjtW9sVJGc2x3ncNRmnLXrevZpzvuLKaJnBPauaucoKsrimXe7uekkRXckG"
            ],
            "data": [
                {
                    "key": "asdf?polyfills-es5.js?6?0",
                    "type": "binary",
                    "value": "base64:KHdpbmRvdy53ZWJwYWNrSnNvbnA9d2luZG93LndlYnBhY2tKc29ucHx8W10pLnB1c2goW1szXSx7Iisyb1AiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiaGgxdiIpLGk9bigiNkxXQSIpLGE9bigiSTh2aCIpLGM9bigiVU1TUSIpLHU9bigiL0dxVSIpLHM9bigiaEJqTiIpLGY9bigiSGQ1ZiIpLGw9bigidGlLcCIpKCJzcGVjaWVzIikscD1bXS5zbGljZSxoPU1hdGgubWF4O3Ioe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDohZigic2xpY2UiKX0se3NsaWNlOmZ1bmN0aW9uKHQsZSl7dmFyIG4scixmLHY9dSh0aGlzKSxkPWModi5sZW5ndGgpLGc9YSh0LGQpLHk9YSh2b2lkIDA9PT1lP2Q6ZSxkKTtpZihpKHYpJiYoImZ1bmN0aW9uIiE9dHlwZW9mKG49di5jb25zdHJ1Y3Rvcil8fG4hPT1BcnJheSYmIWkobi5wcm90b3R5cGUpP28obikmJm51bGw9PT0obj1uW2xdKSYmKG49dm9pZCAwKTpuPXZvaWQgMCxuPT09QXJyYXl8fHZvaWQgMD09PW4pKXJldHVybiBwLmNhbGwodixnLHkpO2ZvcihyPW5ldyh2b2lkIDA9PT1uP0FycmF5Om4pKGgoeS1nLDApKSxmPTA7Zzx5O2crKyxmKyspZyBpbiB2JiZzKHIsZix2W2ddKTtyZXR1cm4gci5sZW5ndGg9ZixyfX0pfSwiK01MeCI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkhBdU0iKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe2lmKHIodCksdm9pZCAwPT09ZSlyZXR1cm4gdDtzd2l0Y2gobil7Y2FzZSAwOnJldHVybiBmdW5jdGlvbigpe3JldHVybiB0LmNhbGwoZSl9O2Nhc2UgMTpyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQuY2FsbChlLG4pfTtjYXNlIDI6cmV0dXJuIGZ1bmN0aW9uKG4scil7cmV0dXJuIHQuY2FsbChlLG4scil9O2Nhc2UgMzpyZXR1cm4gZnVuY3Rpb24obixyLG8pe3JldHVybiB0LmNhbGwoZSxuLHIsbyl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiB0LmFwcGx5KGUsYXJndW1lbnRzKX19fSwiLzV6bSI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPW4oImpyVXYiKSxpPU1hdGguY29zaCxhPU1hdGguYWJzLGM9TWF0aC5FO3Ioe3RhcmdldDoiTWF0aCIsc3RhdDohMCxmb3JjZWQ6IWl8fGkoNzEwKT09PTEvMH0se2Nvc2g6ZnVuY3Rpb24odCl7dmFyIGU9byhhKHQpLTEpKzE7cmV0dXJuKGUrMS8oZSpjKmMpKSooYy8yKX19KX0sIi9HcVUiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJSSzN0Iiksbz1uKCJIWUFGIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiByKG8odCkpfX0sIi9ieXQiOmZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPXtDU1NSdWxlTGlzdDowLENTU1N0eWxlRGVjbGFyYXRpb246MCxDU1NWYWx1ZUxpc3Q6MCxDbGllbnRSZWN0TGlzdDowLERPTVJlY3RMaXN0OjAsRE9NU3RyaW5nTGlzdDowLERPTVRva2VuTGlzdDoxLERhdGFUcmFuc2Zlckl0ZW1MaXN0OjAsRmlsZUxpc3Q6MCxIVE1MQWxsQ29sbGVjdGlvbjowLEhUTUxDb2xsZWN0aW9uOjAsSFRNTEZvcm1FbGVtZW50OjAsSFRNTFNlbGVjdEVsZW1lbnQ6MCxNZWRpYUxpc3Q6MCxNaW1lVHlwZUFycmF5OjAsTmFtZWROb2RlTWFwOjAsTm9kZUxpc3Q6MSxQYWludFJlcXVlc3RMaXN0OjAsUGx1Z2luOjAsUGx1Z2luQXJyYXk6MCxTVkdMZW5ndGhMaXN0OjAsU1ZHTnVtYmVyTGlzdDowLFNWR1BhdGhTZWdMaXN0OjAsU1ZHUG9pbnRMaXN0OjAsU1ZHU3RyaW5nTGlzdDowLFNWR1RyYW5zZm9ybUxpc3Q6MCxTb3VyY2VCdWZmZXJMaXN0OjAsU3R5bGVTaGVldExpc3Q6MCxUZXh0VHJhY2tDdWVMaXN0OjAsVGV4dFRyYWNrTGlzdDowLFRvdWNoTGlzdDowfX0sIi9xbW4iOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCIyb1JvIik7dC5leHBvcnRzPXIuUHJvbWlzZX0sIjA3ZDciOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJidXNFIiksbz1uKCJzRUZYIiksaT1PYmplY3QucHJvdG90eXBlO28hPT1pLnRvU3RyaW5nJiZyKGksInRvU3RyaW5nIixvLHt1bnNhZmU6ITB9KX0sIjBCSzIiOmZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPXt9fSwiMERreSI6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiEhdCgpfWNhdGNoKGUpe3JldHVybiEwfX19LCIwR2JZIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiUW85bCIpLG89bigiMm9SbyIpLGk9ZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDp2b2lkIDB9O3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/aShyW3RdKXx8aShvW3RdKTpyW3RdJiZyW3RdW2VdfHxvW3RdJiZvW3RdW2VdfX0sIjBUV3AiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJtclNHIikuX192YWx1ZXM7IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiOyFmdW5jdGlvbih0KXt2YXIgZT10LnBlcmZvcm1hbmNlO2Z1bmN0aW9uIG4odCl7ZSYmZS5tYXJrJiZlLm1hcmsodCl9ZnVuY3Rpb24gcih0LG4pe2UmJmUubWVhc3VyZSYmZS5tZWFzdXJlKHQsbil9bigiWm9uZSIpO3ZhciBvPSEwPT09dC5fX3pvbmVfc3ltYm9sX19mb3JjZUR1cGxpY2F0ZVpvbmVDaGVjaztpZih0LlpvbmUpe2lmKG98fCJmdW5jdGlvbiIhPXR5cGVvZiB0LlpvbmUuX19zeW1ib2xfXyl0aHJvdyBuZXcgRXJyb3IoIlpvbmUgYWxyZWFkeSBsb2FkZWQuIik7cmV0dXJuIHQuWm9uZX12YXIgaSxhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LGUpe3RoaXMuX3BhcmVudD10LHRoaXMuX25hbWU9ZT9lLm5hbWV8fCJ1bm5hbWVkIjoiPHJvb3Q+Iix0aGlzLl9wcm9wZXJ0aWVzPWUmJmUucHJvcGVydGllc3x8e30sdGhpcy5fem9uZURlbGVnYXRlPW5ldyB1KHRoaXMsdGhpcy5fcGFyZW50JiZ0aGlzLl9wYXJlbnQuX3pvbmVEZWxlZ2F0ZSxlKX1yZXR1cm4gZS5hc3NlcnRab25lUGF0Y2hlZD1mdW5jdGlvbigpe2lmKHQuUHJvbWlzZSE9PVQuWm9uZUF3YXJlUHJvbWlzZSl0aHJvdyBuZXcgRXJyb3IoIlpvbmUuanMgaGFzIGRldGVjdGVkIHRoYXQgWm9uZUF3YXJlUHJvbWlzZSBgKHdpbmRvd3xnbG9iYWwpLlByb21pc2VgIGhhcyBiZWVuIG92ZXJ3cml0dGVuLlxuTW9zdCBsaWtlbHkgY2F1c2UgaXMgdGhhdCBhIFByb21pc2UgcG9seWZpbGwgaGFzIGJlZW4gbG9hZGVkIGFmdGVyIFpvbmUuanMgKFBvbHlmaWxsaW5nIFByb21pc2UgYXBpIGlzIG5vdCBuZWNlc3Nhcnkgd2hlbiB6b25lLmpzIGlzIGxvYWRlZC4gSWYgeW91IG11c3QgbG9hZCBvbmUsIGRvIHNvIGJlZm9yZSBsb2FkaW5nIHpvbmUuanMuKSIpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicm9vdCIse2dldDpmdW5jdGlvbigpe2Zvcih2YXIgdD1lLmN1cnJlbnQ7dC5wYXJlbnQ7KXQ9dC5wYXJlbnQ7cmV0dXJuIHR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsImN1cnJlbnQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gai56b25lfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJjdXJyZW50VGFzayIse2dldDpmdW5jdGlvbigpe3JldHVybiBNfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUuX19sb2FkX3BhdGNoPWZ1bmN0aW9uKGksYSl7aWYoVC5oYXNPd25Qcm9wZXJ0eShpKSl7aWYobyl0aHJvdyBFcnJvcigiQWxyZWFkeSBsb2FkZWQgcGF0Y2g6ICIraSl9ZWxzZSBpZighdFsiX19ab25lX2Rpc2FibGVfIitpXSl7dmFyIGM9IlpvbmU6IitpO24oYyksVFtpXT1hKHQsZSxJKSxyKGMsYyl9fSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInBhcmVudCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXJlbnR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJuYW1lIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX25hbWV9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2V0Wm9uZVdpdGgodCk7aWYoZSlyZXR1cm4gZS5fcHJvcGVydGllc1t0XX0sZS5wcm90b3R5cGUuZ2V0Wm9uZVdpdGg9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXM7ZTspe2lmKGUuX3Byb3BlcnRpZXMuaGFzT3duUHJvcGVydHkodCkpcmV0dXJuIGU7ZT1lLl9wYXJlbnR9cmV0dXJuIG51bGx9LGUucHJvdG90eXBlLmZvcms9ZnVuY3Rpb24odCl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJab25lU3BlYyByZXF1aXJlZCEiKTtyZXR1cm4gdGhpcy5fem9uZURlbGVnYXRlLmZvcmsodGhpcyx0KX0sZS5wcm90b3R5cGUud3JhcD1mdW5jdGlvbih0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiRXhwZWN0aW5nIGZ1bmN0aW9uIGdvdDogIit0KTt2YXIgbj10aGlzLl96b25lRGVsZWdhdGUuaW50ZXJjZXB0KHRoaXMsdCxlKSxyPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHIucnVuR3VhcmRlZChuLHRoaXMsYXJndW1lbnRzLGUpfX0sZS5wcm90b3R5cGUucnVuPWZ1bmN0aW9uKHQsZSxuLHIpe2o9e3BhcmVudDpqLHpvbmU6dGhpc307dHJ5e3JldHVybiB0aGlzLl96b25lRGVsZWdhdGUuaW52b2tlKHRoaXMsdCxlLG4scil9ZmluYWxseXtqPWoucGFyZW50fX0sZS5wcm90b3R5cGUucnVuR3VhcmRlZD1mdW5jdGlvbih0LGUsbixyKXt2b2lkIDA9PT1lJiYoZT1udWxsKSxqPXtwYXJlbnQ6aix6b25lOnRoaXN9O3RyeXt0cnl7cmV0dXJuIHRoaXMuX3pvbmVEZWxlZ2F0ZS5pbnZva2UodGhpcyx0LGUsbixyKX1jYXRjaChvKXtpZih0aGlzLl96b25lRGVsZWdhdGUuaGFuZGxlRXJyb3IodGhpcyxvKSl0aHJvdyBvfX1maW5hbGx5e2o9ai5wYXJlbnR9fSxlLnByb3RvdHlwZS5ydW5UYXNrPWZ1bmN0aW9uKHQsZSxuKXtpZih0LnpvbmUhPXRoaXMpdGhyb3cgbmV3IEVycm9yKCJBIHRhc2sgY2FuIG9ubHkgYmUgcnVuIGluIHRoZSB6b25lIG9mIGNyZWF0aW9uISAoQ3JlYXRpb246ICIrKHQuem9uZXx8eSkubmFtZSsiOyBFeGVjdXRpb246ICIrdGhpcy5uYW1lKyIpIik7aWYodC5zdGF0ZSE9PWJ8fHQudHlwZSE9PU8mJnQudHlwZSE9PUUpe3ZhciByPXQuc3RhdGUhPV87ciYmdC5fdHJhbnNpdGlvblRvKF8sayksdC5ydW5Db3VudCsrO3ZhciBvPU07TT10LGo9e3BhcmVudDpqLHpvbmU6dGhpc307dHJ5e3QudHlwZT09RSYmdC5kYXRhJiYhdC5kYXRhLmlzUGVyaW9kaWMmJih0LmNhbmNlbEZuPXZvaWQgMCk7dHJ5e3JldHVybiB0aGlzLl96b25lRGVsZWdhdGUuaW52b2tlVGFzayh0aGlzLHQsZSxuKX1jYXRjaChpKXtpZih0aGlzLl96b25lRGVsZWdhdGUuaGFuZGxlRXJyb3IodGhpcyxpKSl0aHJvdyBpfX1maW5hbGx5e3Quc3RhdGUhPT1iJiZ0LnN0YXRlIT09eCYmKHQudHlwZT09T3x8dC5kYXRhJiZ0LmRhdGEuaXNQZXJpb2RpYz9yJiZ0Ll90cmFuc2l0aW9uVG8oayxfKToodC5ydW5Db3VudD0wLHRoaXMuX3VwZGF0ZVRhc2tDb3VudCh0LC0xKSxyJiZ0Ll90cmFuc2l0aW9uVG8oYixfLGIpKSksaj1qLnBhcmVudCxNPW99fX0sZS5wcm90b3R5cGUuc2NoZWR1bGVUYXNrPWZ1bmN0aW9uKHQpe2lmKHQuem9uZSYmdC56b25lIT09dGhpcylmb3IodmFyIGU9dGhpcztlOyl7aWYoZT09PXQuem9uZSl0aHJvdyBFcnJvcigiY2FuIG5vdCByZXNjaGVkdWxlIHRhc2sgdG8gIit0aGlzLm5hbWUrIiB3aGljaCBpcyBkZXNjZW5kYW50cyBvZiB0aGUgb3JpZ2luYWwgem9uZSAiK3Quem9uZS5uYW1lKTtlPWUucGFyZW50fXQuX3RyYW5zaXRpb25UbyhtLGIpO3ZhciBuPVtdO3QuX3pvbmVEZWxlZ2F0ZXM9bix0Ll96b25lPXRoaXM7dHJ5e3Q9dGhpcy5fem9uZURlbGVnYXRlLnNjaGVkdWxlVGFzayh0aGlzLHQpfWNhdGNoKHIpe3Rocm93IHQuX3RyYW5zaXRpb25Ubyh4LG0sYiksdGhpcy5fem9uZURlbGVnYXRlLmhhbmRsZUVycm9yKHRoaXMscikscn1yZXR1cm4gdC5fem9uZURlbGVnYXRlcz09PW4mJnRoaXMuX3VwZGF0ZVRhc2tDb3VudCh0LDEpLHQuc3RhdGU9PW0mJnQuX3RyYW5zaXRpb25UbyhrLG0pLHR9LGUucHJvdG90eXBlLnNjaGVkdWxlTWljcm9UYXNrPWZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybiB0aGlzLnNjaGVkdWxlVGFzayhuZXcgcyhTLHQsZSxuLHIsdm9pZCAwKSl9LGUucHJvdG90eXBlLnNjaGVkdWxlTWFjcm9UYXNrPWZ1bmN0aW9uKHQsZSxuLHIsbyl7cmV0dXJuIHRoaXMuc2NoZWR1bGVUYXNrKG5ldyBzKEUsdCxlLG4scixvKSl9LGUucHJvdG90eXBlLnNjaGVkdWxlRXZlbnRUYXNrPWZ1bmN0aW9uKHQsZSxuLHIsbyl7cmV0dXJuIHRoaXMuc2NoZWR1bGVUYXNrKG5ldyBzKE8sdCxlLG4scixvKSl9LGUucHJvdG90eXBlLmNhbmNlbFRhc2s9ZnVuY3Rpb24odCl7aWYodC56b25lIT10aGlzKXRocm93IG5ldyBFcnJvcigiQSB0YXNrIGNhbiBvbmx5IGJlIGNhbmNlbGxlZCBpbiB0aGUgem9uZSBvZiBjcmVhdGlvbiEgKENyZWF0aW9uOiAiKyh0LnpvbmV8fHkpLm5hbWUrIjsgRXhlY3V0aW9uOiAiK3RoaXMubmFtZSsiKSIpO3QuX3RyYW5zaXRpb25Ubyh3LGssXyk7dHJ5e3RoaXMuX3pvbmVEZWxlZ2F0ZS5jYW5jZWxUYXNrKHRoaXMsdCl9Y2F0Y2goZSl7dGhyb3cgdC5fdHJhbnNpdGlvblRvKHgsdyksdGhpcy5fem9uZURlbGVnYXRlLmhhbmRsZUVycm9yKHRoaXMsZSksZX1yZXR1cm4gdGhpcy5fdXBkYXRlVGFza0NvdW50KHQsLTEpLHQuX3RyYW5zaXRpb25UbyhiLHcpLHQucnVuQ291bnQ9MCx0fSxlLnByb3RvdHlwZS5fdXBkYXRlVGFza0NvdW50PWZ1bmN0aW9uKHQsZSl7dmFyIG49dC5fem9uZURlbGVnYXRlczstMT09ZSYmKHQuX3pvbmVEZWxlZ2F0ZXM9bnVsbCk7Zm9yKHZhciByPTA7cjxuLmxlbmd0aDtyKyspbltyXS5fdXBkYXRlVGFza0NvdW50KHQudHlwZSxlKX0sZS5fX3N5bWJvbF9fPVIsZX0oKSxjPXtuYW1lOiIiLG9uSGFzVGFzazpmdW5jdGlvbih0LGUsbixyKXtyZXR1cm4gdC5oYXNUYXNrKG4scil9LG9uU2NoZWR1bGVUYXNrOmZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybiB0LnNjaGVkdWxlVGFzayhuLHIpfSxvbkludm9rZVRhc2s6ZnVuY3Rpb24odCxlLG4scixvLGkpe3JldHVybiB0Lmludm9rZVRhc2sobixyLG8saSl9LG9uQ2FuY2VsVGFzazpmdW5jdGlvbih0LGUsbixyKXtyZXR1cm4gdC5jYW5jZWxUYXNrKG4scil9fSx1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5fdGFza0NvdW50cz17bWljcm9UYXNrOjAsbWFjcm9UYXNrOjAsZXZlbnRUYXNrOjB9LHRoaXMuem9uZT10LHRoaXMuX3BhcmVudERlbGVnYXRlPWUsdGhpcy5fZm9ya1pTPW4mJihuJiZuLm9uRm9yaz9uOmUuX2ZvcmtaUyksdGhpcy5fZm9ya0RsZ3Q9biYmKG4ub25Gb3JrP2U6ZS5fZm9ya0RsZ3QpLHRoaXMuX2ZvcmtDdXJyWm9uZT1uJiYobi5vbkZvcms/dGhpcy56b25lOmUuem9uZSksdGhpcy5faW50ZXJjZXB0WlM9biYmKG4ub25JbnRlcmNlcHQ/bjplLl9pbnRlcmNlcHRaUyksdGhpcy5faW50ZXJjZXB0RGxndD1uJiYobi5vbkludGVyY2VwdD9lOmUuX2ludGVyY2VwdERsZ3QpLHRoaXMuX2ludGVyY2VwdEN1cnJab25lPW4mJihuLm9uSW50ZXJjZXB0P3RoaXMuem9uZTplLnpvbmUpLHRoaXMuX2ludm9rZVpTPW4mJihuLm9uSW52b2tlP246ZS5faW52b2tlWlMpLHRoaXMuX2ludm9rZURsZ3Q9biYmKG4ub25JbnZva2U/ZTplLl9pbnZva2VEbGd0KSx0aGlzLl9pbnZva2VDdXJyWm9uZT1uJiYobi5vbkludm9rZT90aGlzLnpvbmU6ZS56b25lKSx0aGlzLl9oYW5kbGVFcnJvclpTPW4mJihuLm9uSGFuZGxlRXJyb3I/bjplLl9oYW5kbGVFcnJvclpTKSx0aGlzLl9oYW5kbGVFcnJvckRsZ3Q9biYmKG4ub25IYW5kbGVFcnJvcj9lOmUuX2hhbmRsZUVycm9yRGxndCksdGhpcy5faGFuZGxlRXJyb3JDdXJyWm9uZT1uJiYobi5vbkhhbmRsZUVycm9yP3RoaXMuem9uZTplLnpvbmUpLHRoaXMuX3NjaGVkdWxlVGFza1pTPW4mJihuLm9uU2NoZWR1bGVUYXNrP246ZS5fc2NoZWR1bGVUYXNrWlMpLHRoaXMuX3NjaGVkdWxlVGFza0RsZ3Q9biYmKG4ub25TY2hlZHVsZVRhc2s/ZTplLl9zY2hlZHVsZVRhc2tEbGd0KSx0aGlzLl9zY2hlZHVsZVRhc2tDdXJyWm9uZT1uJiYobi5vblNjaGVkdWxlVGFzaz90aGlzLnpvbmU6ZS56b25lKSx0aGlzLl9pbnZva2VUYXNrWlM9biYmKG4ub25JbnZva2VUYXNrP246ZS5faW52b2tlVGFza1pTKSx0aGlzLl9pbnZva2VUYXNrRGxndD1uJiYobi5vbkludm9rZVRhc2s/ZTplLl9pbnZva2VUYXNrRGxndCksdGhpcy5faW52b2tlVGFza0N1cnJab25lPW4mJihuLm9uSW52b2tlVGFzaz90aGlzLnpvbmU6ZS56b25lKSx0aGlzLl9jYW5jZWxUYXNrWlM9biYmKG4ub25DYW5jZWxUYXNrP246ZS5fY2FuY2VsVGFza1pTKSx0aGlzLl9jYW5jZWxUYXNrRGxndD1uJiYobi5vbkNhbmNlbFRhc2s/ZTplLl9jYW5jZWxUYXNrRGxndCksdGhpcy5fY2FuY2VsVGFza0N1cnJab25lPW4mJihuLm9uQ2FuY2VsVGFzaz90aGlzLnpvbmU6ZS56b25lKSx0aGlzLl9oYXNUYXNrWlM9bnVsbCx0aGlzLl9oYXNUYXNrRGxndD1udWxsLHRoaXMuX2hhc1Rhc2tEbGd0T3duZXI9bnVsbCx0aGlzLl9oYXNUYXNrQ3VyclpvbmU9bnVsbDt2YXIgcj1uJiZuLm9uSGFzVGFzazsocnx8ZSYmZS5faGFzVGFza1pTKSYmKHRoaXMuX2hhc1Rhc2taUz1yP246Yyx0aGlzLl9oYXNUYXNrRGxndD1lLHRoaXMuX2hhc1Rhc2tEbGd0T3duZXI9dGhpcyx0aGlzLl9oYXNUYXNrQ3VyclpvbmU9dCxuLm9uU2NoZWR1bGVUYXNrfHwodGhpcy5fc2NoZWR1bGVUYXNrWlM9Yyx0aGlzLl9zY2hlZHVsZVRhc2tEbGd0PWUsdGhpcy5fc2NoZWR1bGVUYXNrQ3VyclpvbmU9dGhpcy56b25lKSxuLm9uSW52b2tlVGFza3x8KHRoaXMuX2ludm9rZVRhc2taUz1jLHRoaXMuX2ludm9rZVRhc2tEbGd0PWUsdGhpcy5faW52b2tlVGFza0N1cnJab25lPXRoaXMuem9uZSksbi5vbkNhbmNlbFRhc2t8fCh0aGlzLl9jYW5jZWxUYXNrWlM9Yyx0aGlzLl9jYW5jZWxUYXNrRGxndD1lLHRoaXMuX2NhbmNlbFRhc2tDdXJyWm9uZT10aGlzLnpvbmUpKX1yZXR1cm4gdC5wcm90b3R5cGUuZm9yaz1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9mb3JrWlM/dGhpcy5fZm9ya1pTLm9uRm9yayh0aGlzLl9mb3JrRGxndCx0aGlzLnpvbmUsdCxlKTpuZXcgYSh0LGUpfSx0LnByb3RvdHlwZS5pbnRlcmNlcHQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0aGlzLl9pbnRlcmNlcHRaUz90aGlzLl9pbnRlcmNlcHRaUy5vbkludGVyY2VwdCh0aGlzLl9pbnRlcmNlcHREbGd0LHRoaXMuX2ludGVyY2VwdEN1cnJab25lLHQsZSxuKTplfSx0LnByb3RvdHlwZS5pbnZva2U9ZnVuY3Rpb24odCxlLG4scixvKXtyZXR1cm4gdGhpcy5faW52b2tlWlM/dGhpcy5faW52b2tlWlMub25JbnZva2UodGhpcy5faW52b2tlRGxndCx0aGlzLl9pbnZva2VDdXJyWm9uZSx0LGUsbixyLG8pOmUuYXBwbHkobixyKX0sdC5wcm90b3R5cGUuaGFuZGxlRXJyb3I9ZnVuY3Rpb24odCxlKXtyZXR1cm4hdGhpcy5faGFuZGxlRXJyb3JaU3x8dGhpcy5faGFuZGxlRXJyb3JaUy5vbkhhbmRsZUVycm9yKHRoaXMuX2hhbmRsZUVycm9yRGxndCx0aGlzLl9oYW5kbGVFcnJvckN1cnJab25lLHQsZSl9LHQucHJvdG90eXBlLnNjaGVkdWxlVGFzaz1mdW5jdGlvbih0LGUpe3ZhciBuPWU7aWYodGhpcy5fc2NoZWR1bGVUYXNrWlMpdGhpcy5faGFzVGFza1pTJiZuLl96b25lRGVsZWdhdGVzLnB1c2godGhpcy5faGFzVGFza0RsZ3RPd25lciksKG49dGhpcy5fc2NoZWR1bGVUYXNrWlMub25TY2hlZHVsZVRhc2sodGhpcy5fc2NoZWR1bGVUYXNrRGxndCx0aGlzLl9zY2hlZHVsZVRhc2tDdXJyWm9uZSx0LGUpKXx8KG49ZSk7ZWxzZSBpZihlLnNjaGVkdWxlRm4pZS5zY2hlZHVsZUZuKGUpO2Vsc2V7aWYoZS50eXBlIT1TKXRocm93IG5ldyBFcnJvcigiVGFzayBpcyBtaXNzaW5nIHNjaGVkdWxlRm4uIik7ZChlKX1yZXR1cm4gbn0sdC5wcm90b3R5cGUuaW52b2tlVGFzaz1mdW5jdGlvbih0LGUsbixyKXtyZXR1cm4gdGhpcy5faW52b2tlVGFza1pTP3RoaXMuX2ludm9rZVRhc2taUy5vbkludm9rZVRhc2sodGhpcy5faW52b2tlVGFza0RsZ3QsdGhpcy5faW52b2tlVGFza0N1cnJab25lLHQsZSxuLHIpOmUuY2FsbGJhY2suYXBwbHkobixyKX0sdC5wcm90b3R5cGUuY2FuY2VsVGFzaz1mdW5jdGlvbih0LGUpe3ZhciBuO2lmKHRoaXMuX2NhbmNlbFRhc2taUyluPXRoaXMuX2NhbmNlbFRhc2taUy5vbkNhbmNlbFRhc2sodGhpcy5fY2FuY2VsVGFza0RsZ3QsdGhpcy5fY2FuY2VsVGFza0N1cnJab25lLHQsZSk7ZWxzZXtpZighZS5jYW5jZWxGbil0aHJvdyBFcnJvcigiVGFzayBpcyBub3QgY2FuY2VsYWJsZSIpO249ZS5jYW5jZWxGbihlKX1yZXR1cm4gbn0sdC5wcm90b3R5cGUuaGFzVGFzaz1mdW5jdGlvbih0LGUpe3RyeXt0aGlzLl9oYXNUYXNrWlMmJnRoaXMuX2hhc1Rhc2taUy5vbkhhc1Rhc2sodGhpcy5faGFzVGFza0RsZ3QsdGhpcy5faGFzVGFza0N1cnJab25lLHQsZSl9Y2F0Y2gobil7dGhpcy5oYW5kbGVFcnJvcih0LG4pfX0sdC5wcm90b3R5cGUuX3VwZGF0ZVRhc2tDb3VudD1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX3Rhc2tDb3VudHMscj1uW3RdLG89blt0XT1yK2U7aWYobzwwKXRocm93IG5ldyBFcnJvcigiTW9yZSB0YXNrcyBleGVjdXRlZCB0aGVuIHdlcmUgc2NoZWR1bGVkLiIpOzAhPXImJjAhPW98fHRoaXMuaGFzVGFzayh0aGlzLnpvbmUse21pY3JvVGFzazpuLm1pY3JvVGFzaz4wLG1hY3JvVGFzazpuLm1hY3JvVGFzaz4wLGV2ZW50VGFzazpuLmV2ZW50VGFzaz4wLGNoYW5nZTp0fSl9LHR9KCkscz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUobixyLG8saSxhLGMpe3RoaXMuX3pvbmU9bnVsbCx0aGlzLnJ1bkNvdW50PTAsdGhpcy5fem9uZURlbGVnYXRlcz1udWxsLHRoaXMuX3N0YXRlPSJub3RTY2hlZHVsZWQiLHRoaXMudHlwZT1uLHRoaXMuc291cmNlPXIsdGhpcy5kYXRhPWksdGhpcy5zY2hlZHVsZUZuPWEsdGhpcy5jYW5jZWxGbj1jLHRoaXMuY2FsbGJhY2s9bzt2YXIgdT10aGlzO3RoaXMuaW52b2tlPW49PT1PJiZpJiZpLnVzZUc/ZS5pbnZva2VUYXNrOmZ1bmN0aW9uKCl7cmV0dXJuIGUuaW52b2tlVGFzay5jYWxsKHQsdSx0aGlzLGFyZ3VtZW50cyl9fXJldHVybiBlLmludm9rZVRhc2s9ZnVuY3Rpb24odCxlLG4pe3R8fCh0PXRoaXMpLFArKzt0cnl7cmV0dXJuIHQucnVuQ291bnQrKyx0LnpvbmUucnVuVGFzayh0LGUsbil9ZmluYWxseXsxPT1QJiZnKCksUC0tfX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ6b25lIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3pvbmV9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJzdGF0ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdGF0ZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5jYW5jZWxTY2hlZHVsZVJlcXVlc3Q9ZnVuY3Rpb24oKXt0aGlzLl90cmFuc2l0aW9uVG8oYixtKX0sZS5wcm90b3R5cGUuX3RyYW5zaXRpb25Ubz1mdW5jdGlvbih0LGUsbil7aWYodGhpcy5fc3RhdGUhPT1lJiZ0aGlzLl9zdGF0ZSE9PW4pdGhyb3cgbmV3IEVycm9yKHRoaXMudHlwZSsiICciK3RoaXMuc291cmNlKyInOiBjYW4gbm90IHRyYW5zaXRpb24gdG8gJyIrdCsiJywgZXhwZWN0aW5nIHN0YXRlICciK2UrIiciKyhuPyIgb3IgJyIrbisiJyI6IiIpKyIsIHdhcyAnIit0aGlzLl9zdGF0ZSsiJy4iKTt0aGlzLl9zdGF0ZT10LHQ9PWImJih0aGlzLl96b25lRGVsZWdhdGVzPW51bGwpfSxlLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGEmJnZvaWQgMCE9PXRoaXMuZGF0YS5oYW5kbGVJZD90aGlzLmRhdGEuaGFuZGxlSWQudG9TdHJpbmcoKTpPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodGhpcyl9LGUucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybnt0eXBlOnRoaXMudHlwZSxzdGF0ZTp0aGlzLnN0YXRlLHNvdXJjZTp0aGlzLnNvdXJjZSx6b25lOnRoaXMuem9uZS5uYW1lLHJ1bkNvdW50OnRoaXMucnVuQ291bnR9fSxlfSgpLGY9Uigic2V0VGltZW91dCIpLGw9UigiUHJvbWlzZSIpLHA9UigidGhlbiIpLGg9W10sdj0hMTtmdW5jdGlvbiBkKGUpe2lmKDA9PT1QJiYwPT09aC5sZW5ndGgpaWYoaXx8dFtsXSYmKGk9dFtsXS5yZXNvbHZlKDApKSxpKXt2YXIgbj1pW3BdO258fChuPWkudGhlbiksbi5jYWxsKGksZyl9ZWxzZSB0W2ZdKGcsMCk7ZSYmaC5wdXNoKGUpfWZ1bmN0aW9uIGcoKXtpZighdil7Zm9yKHY9ITA7aC5sZW5ndGg7KXt2YXIgdD1oO2g9W107Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspe3ZhciBuPXRbZV07dHJ5e24uem9uZS5ydW5UYXNrKG4sbnVsbCxudWxsKX1jYXRjaChyKXtJLm9uVW5oYW5kbGVkRXJyb3Iocil9fX1JLm1pY3JvdGFza0RyYWluRG9uZSgpLHY9ITF9fXZhciB5PXtuYW1lOiJOTyBaT05FIn0sYj0ibm90U2NoZWR1bGVkIixtPSJzY2hlZHVsaW5nIixrPSJzY2hlZHVsZWQiLF89InJ1bm5pbmciLHc9ImNhbmNlbGluZyIseD0idW5rbm93biIsUz0ibWljcm9UYXNrIixFPSJtYWNyb1Rhc2siLE89ImV2ZW50VGFzayIsVD17fSxJPXtzeW1ib2w6UixjdXJyZW50Wm9uZUZyYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIGp9LG9uVW5oYW5kbGVkRXJyb3I6RCxtaWNyb3Rhc2tEcmFpbkRvbmU6RCxzY2hlZHVsZU1pY3JvVGFzazpkLHNob3dVbmNhdWdodEVycm9yOmZ1bmN0aW9uKCl7cmV0dXJuIWFbUigiaWdub3JlQ29uc29sZUVycm9yVW5jYXVnaHRFcnJvciIpXX0scGF0Y2hFdmVudFRhcmdldDpmdW5jdGlvbigpe3JldHVybltdfSxwYXRjaE9uUHJvcGVydGllczpELHBhdGNoTWV0aG9kOmZ1bmN0aW9uKCl7cmV0dXJuIER9LGJpbmRBcmd1bWVudHM6ZnVuY3Rpb24oKXtyZXR1cm5bXX0scGF0Y2hUaGVuOmZ1bmN0aW9uKCl7cmV0dXJuIER9LHBhdGNoTWFjcm9UYXNrOmZ1bmN0aW9uKCl7cmV0dXJuIER9LHNldE5hdGl2ZVByb21pc2U6ZnVuY3Rpb24odCl7dCYmImZ1bmN0aW9uIj09dHlwZW9mIHQucmVzb2x2ZSYmKGk9dC5yZXNvbHZlKDApKX0scGF0Y2hFdmVudFByb3RvdHlwZTpmdW5jdGlvbigpe3JldHVybiBEfSxpc0lFT3JFZGdlOmZ1bmN0aW9uKCl7cmV0dXJuITF9LGdldEdsb2JhbE9iamVjdHM6ZnVuY3Rpb24oKXt9LE9iamVjdERlZmluZVByb3BlcnR5OmZ1bmN0aW9uKCl7cmV0dXJuIER9LE9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcjpmdW5jdGlvbigpe30sT2JqZWN0Q3JlYXRlOmZ1bmN0aW9uKCl7fSxBcnJheVNsaWNlOmZ1bmN0aW9uKCl7cmV0dXJuW119LHBhdGNoQ2xhc3M6ZnVuY3Rpb24oKXtyZXR1cm4gRH0sd3JhcFdpdGhDdXJyZW50Wm9uZTpmdW5jdGlvbigpe3JldHVybiBEfSxmaWx0ZXJQcm9wZXJ0aWVzOmZ1bmN0aW9uKCl7cmV0dXJuW119LGF0dGFjaE9yaWdpblRvUGF0Y2hlZDpmdW5jdGlvbigpe3JldHVybiBEfSxfcmVkZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbigpe3JldHVybiBEfSxwYXRjaENhbGxiYWNrczpmdW5jdGlvbigpe3JldHVybiBEfX0saj17cGFyZW50Om51bGwsem9uZTpuZXcgYShudWxsLG51bGwpfSxNPW51bGwsUD0wO2Z1bmN0aW9uIEQoKXt9ZnVuY3Rpb24gUih0KXtyZXR1cm4iX196b25lX3N5bWJvbF9fIit0fXIoIlpvbmUiLCJab25lIiksdC5ab25lPWF9KCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3d8fCJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZiYmc2VsZnx8Z2xvYmFsKSxab25lLl9fbG9hZF9wYXRjaCgiWm9uZUF3YXJlUHJvbWlzZSIsKGZ1bmN0aW9uKHQsZSxuKXt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLGk9T2JqZWN0LmRlZmluZVByb3BlcnR5LGE9bi5zeW1ib2wsYz1bXSx1PWEoIlByb21pc2UiKSxzPWEoInRoZW4iKSxmPSJfX2NyZWF0aW9uVHJhY2VfXyI7bi5vblVuaGFuZGxlZEVycm9yPWZ1bmN0aW9uKHQpe2lmKG4uc2hvd1VuY2F1Z2h0RXJyb3IoKSl7dmFyIGU9dCYmdC5yZWplY3Rpb247ZT9jb25zb2xlLmVycm9yKCJVbmhhbmRsZWQgUHJvbWlzZSByZWplY3Rpb246IixlIGluc3RhbmNlb2YgRXJyb3I/ZS5tZXNzYWdlOmUsIjsgWm9uZToiLHQuem9uZS5uYW1lLCI7IFRhc2s6Iix0LnRhc2smJnQudGFzay5zb3VyY2UsIjsgVmFsdWU6IixlLGUgaW5zdGFuY2VvZiBFcnJvcj9lLnN0YWNrOnZvaWQgMCk6Y29uc29sZS5lcnJvcih0KX19LG4ubWljcm90YXNrRHJhaW5Eb25lPWZ1bmN0aW9uKCl7Zm9yKDtjLmxlbmd0aDspZm9yKHZhciB0PWZ1bmN0aW9uKCl7dmFyIHQ9Yy5zaGlmdCgpO3RyeXt0LnpvbmUucnVuR3VhcmRlZCgoZnVuY3Rpb24oKXt0aHJvdyB0fSkpfWNhdGNoKGUpe3AoZSl9fTtjLmxlbmd0aDspdCgpfTt2YXIgbD1hKCJ1bmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uSGFuZGxlciIpO2Z1bmN0aW9uIHAodCl7bi5vblVuaGFuZGxlZEVycm9yKHQpO3RyeXt2YXIgcj1lW2xdO3ImJiJmdW5jdGlvbiI9PXR5cGVvZiByJiZyLmNhbGwodGhpcyx0KX1jYXRjaChvKXt9fWZ1bmN0aW9uIGgodCl7cmV0dXJuIHQmJnQudGhlbn1mdW5jdGlvbiB2KHQpe3JldHVybiB0fWZ1bmN0aW9uIGQodCl7cmV0dXJuIE4ucmVqZWN0KHQpfXZhciBnPWEoInN0YXRlIikseT1hKCJ2YWx1ZSIpLGI9YSgiZmluYWxseSIpLG09YSgicGFyZW50UHJvbWlzZVZhbHVlIiksaz1hKCJwYXJlbnRQcm9taXNlU3RhdGUiKSxfPSJQcm9taXNlLnRoZW4iLHc9bnVsbCx4PSEwLFM9ITEsRT0wO2Z1bmN0aW9uIE8odCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dHJ5e00odCxlLG4pfWNhdGNoKHIpe00odCwhMSxyKX19fXZhciBUPWZ1bmN0aW9uKCl7dmFyIHQ9ITE7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3R8fCh0PSEwLGUuYXBwbHkobnVsbCxhcmd1bWVudHMpKX19fSxJPSJQcm9taXNlIHJlc29sdmVkIHdpdGggaXRzZWxmIixqPWEoImN1cnJlbnRUYXNrVHJhY2UiKTtmdW5jdGlvbiBNKHQscixvKXt2YXIgYSx1PVQoKTtpZih0PT09byl0aHJvdyBuZXcgVHlwZUVycm9yKEkpO2lmKHRbZ109PT13KXt2YXIgcz1udWxsO3RyeXsib2JqZWN0IiE9dHlwZW9mIG8mJiJmdW5jdGlvbiIhPXR5cGVvZiBvfHwocz1vJiZvLnRoZW4pfWNhdGNoKGQpe3JldHVybiB1KChmdW5jdGlvbigpe00odCwhMSxkKX0pKSgpLHR9aWYociE9PVMmJm8gaW5zdGFuY2VvZiBOJiZvLmhhc093blByb3BlcnR5KGcpJiZvLmhhc093blByb3BlcnR5KHkpJiZvW2ddIT09dylEKG8pLE0odCxvW2ddLG9beV0pO2Vsc2UgaWYociE9PVMmJiJmdW5jdGlvbiI9PXR5cGVvZiBzKXRyeXtzLmNhbGwobyx1KE8odCxyKSksdShPKHQsITEpKSl9Y2F0Y2goZCl7dSgoZnVuY3Rpb24oKXtNKHQsITEsZCl9KSkoKX1lbHNle3RbZ109cjt2YXIgbD10W3ldO2lmKHRbeV09byx0W2JdPT09YiYmcj09PXgmJih0W2ddPXRba10sdFt5XT10W21dKSxyPT09UyYmbyBpbnN0YW5jZW9mIEVycm9yKXt2YXIgcD1lLmN1cnJlbnRUYXNrJiZlLmN1cnJlbnRUYXNrLmRhdGEmJmUuY3VycmVudFRhc2suZGF0YVtmXTtwJiZpKG8saix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsdmFsdWU6cH0pfWZvcih2YXIgaD0wO2g8bC5sZW5ndGg7KVIodCxsW2grK10sbFtoKytdLGxbaCsrXSxsW2grK10pO2lmKDA9PWwubGVuZ3RoJiZyPT1TKXt0W2ddPUU7dHJ5e3Rocm93IG5ldyBFcnJvcigiVW5jYXVnaHQgKGluIHByb21pc2UpOiAiKygoYT1vKSYmYS50b1N0cmluZz09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc/KGEuY29uc3RydWN0b3ImJmEuY29uc3RydWN0b3IubmFtZXx8IiIpKyI6ICIrSlNPTi5zdHJpbmdpZnkoYSk6YT9hLnRvU3RyaW5nKCk6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEpKSsobyYmby5zdGFjaz8iXG4iK28uc3RhY2s6IiIpKX1jYXRjaChkKXt2YXIgdj1kO3YucmVqZWN0aW9uPW8sdi5wcm9taXNlPXQsdi56b25lPWUuY3VycmVudCx2LnRhc2s9ZS5jdXJyZW50VGFzayxjLnB1c2godiksbi5zY2hlZHVsZU1pY3JvVGFzaygpfX19fXJldHVybiB0fXZhciBQPWEoInJlamVjdGlvbkhhbmRsZWRIYW5kbGVyIik7ZnVuY3Rpb24gRCh0KXtpZih0W2ddPT09RSl7dHJ5e3ZhciBuPWVbUF07biYmImZ1bmN0aW9uIj09dHlwZW9mIG4mJm4uY2FsbCh0aGlzLHtyZWplY3Rpb246dFt5XSxwcm9taXNlOnR9KX1jYXRjaChvKXt9dFtnXT1TO2Zvcih2YXIgcj0wO3I8Yy5sZW5ndGg7cisrKXQ9PT1jW3JdLnByb21pc2UmJmMuc3BsaWNlKHIsMSl9fWZ1bmN0aW9uIFIodCxlLG4scixvKXtEKHQpO3ZhciBpPXRbZ10sYT1pPyJmdW5jdGlvbiI9PXR5cGVvZiByP3I6djoiZnVuY3Rpb24iPT10eXBlb2Ygbz9vOmQ7ZS5zY2hlZHVsZU1pY3JvVGFzayhfLChmdW5jdGlvbigpe3RyeXt2YXIgcj10W3ldLG89biYmYj09PW5bYl07byYmKG5bbV09cixuW2tdPWkpO3ZhciBjPWUucnVuKGEsdm9pZCAwLG8mJmEhPT1kJiZhIT09dj9bXTpbcl0pO00obiwhMCxjKX1jYXRjaCh1KXtNKG4sITEsdSl9fSksbil9dmFyIE49ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2lmKCEodGhpcyBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBFcnJvcigiTXVzdCBiZSBhbiBpbnN0YW5jZW9mIFByb21pc2UuIik7dGhpc1tnXT13LHRoaXNbeV09W107dHJ5e2UmJmUoTyh0aGlzLHgpLE8odGhpcyxTKSl9Y2F0Y2gobil7TSh0aGlzLCExLG4pfX1yZXR1cm4gdC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJmdW5jdGlvbiBab25lQXdhcmVQcm9taXNlKCkgeyBbbmF0aXZlIGNvZGVdIH0ifSx0LnJlc29sdmU9ZnVuY3Rpb24odCl7cmV0dXJuIE0obmV3IHRoaXMobnVsbCkseCx0KX0sdC5yZWplY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIE0obmV3IHRoaXMobnVsbCksUyx0KX0sdC5yYWNlPWZ1bmN0aW9uKHQpe3ZhciBlLG4sbyxpLGE9bmV3IHRoaXMoKGZ1bmN0aW9uKHQsZSl7bz10LGk9ZX0pKTtmdW5jdGlvbiBjKHQpe28odCl9ZnVuY3Rpb24gdSh0KXtpKHQpfXRyeXtmb3IodmFyIHM9cih0KSxmPXMubmV4dCgpOyFmLmRvbmU7Zj1zLm5leHQoKSl7dmFyIGw9Zi52YWx1ZTtoKGwpfHwobD10aGlzLnJlc29sdmUobCkpLGwudGhlbihjLHUpfX1jYXRjaChwKXtlPXtlcnJvcjpwfX1maW5hbGx5e3RyeXtmJiYhZi5kb25lJiYobj1zLnJldHVybikmJm4uY2FsbChzKX1maW5hbGx5e2lmKGUpdGhyb3cgZS5lcnJvcn19cmV0dXJuIGF9LHQuYWxsPWZ1bmN0aW9uKHQpe3ZhciBlLG4sbyxpLGE9bmV3IHRoaXMoKGZ1bmN0aW9uKHQsZSl7bz10LGk9ZX0pKSxjPTIsdT0wLHM9W10sZj1mdW5jdGlvbih0KXtoKHQpfHwodD1sLnJlc29sdmUodCkpO3ZhciBlPXU7dC50aGVuKChmdW5jdGlvbih0KXtzW2VdPXQsMD09LS1jJiZvKHMpfSksaSksYysrLHUrK30sbD10aGlzO3RyeXtmb3IodmFyIHA9cih0KSx2PXAubmV4dCgpOyF2LmRvbmU7dj1wLm5leHQoKSlmKHYudmFsdWUpfWNhdGNoKGQpe2U9e2Vycm9yOmR9fWZpbmFsbHl7dHJ5e3YmJiF2LmRvbmUmJihuPXAucmV0dXJuKSYmbi5jYWxsKHApfWZpbmFsbHl7aWYoZSl0aHJvdyBlLmVycm9yfX1yZXR1cm4gMD09KGMtPTIpJiZvKHMpLGF9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxTeW1ib2wudG9TdHJpbmdUYWcse2dldDpmdW5jdGlvbigpe3JldHVybiJQcm9taXNlIn0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKHQsbil7dmFyIHI9bmV3IHRoaXMuY29uc3RydWN0b3IobnVsbCksbz1lLmN1cnJlbnQ7cmV0dXJuIHRoaXNbZ109PXc/dGhpc1t5XS5wdXNoKG8scix0LG4pOlIodGhpcyxvLHIsdCxuKSxyfSx0LnByb3RvdHlwZS5jYXRjaD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50aGVuKG51bGwsdCl9LHQucHJvdG90eXBlLmZpbmFsbHk9ZnVuY3Rpb24odCl7dmFyIG49bmV3IHRoaXMuY29uc3RydWN0b3IobnVsbCk7bltiXT1iO3ZhciByPWUuY3VycmVudDtyZXR1cm4gdGhpc1tnXT09dz90aGlzW3ldLnB1c2gocixuLHQsdCk6Uih0aGlzLHIsbix0LHQpLG59LHR9KCk7Ti5yZXNvbHZlPU4ucmVzb2x2ZSxOLnJlamVjdD1OLnJlamVjdCxOLnJhY2U9Ti5yYWNlLE4uYWxsPU4uYWxsO3ZhciBBPXRbdV09dC5Qcm9taXNlLEw9ZS5fX3N5bWJvbF9fKCJab25lQXdhcmVQcm9taXNlIiksRj1vKHQsIlByb21pc2UiKTtGJiYhRi5jb25maWd1cmFibGV8fChGJiZkZWxldGUgRi53cml0YWJsZSxGJiZkZWxldGUgRi52YWx1ZSxGfHwoRj17Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITB9KSxGLmdldD1mdW5jdGlvbigpe3JldHVybiB0W0xdP3RbTF06dFt1XX0sRi5zZXQ9ZnVuY3Rpb24oZSl7ZT09PU4/dFtMXT1lOih0W3VdPWUsZS5wcm90b3R5cGVbc118fEMoZSksbi5zZXROYXRpdmVQcm9taXNlKGUpKX0saSh0LCJQcm9taXNlIixGKSksdC5Qcm9taXNlPU47dmFyIHosWj1hKCJ0aGVuUGF0Y2hlZCIpO2Z1bmN0aW9uIEModCl7dmFyIGU9dC5wcm90b3R5cGUsbj1vKGUsInRoZW4iKTtpZighbnx8ITEhPT1uLndyaXRhYmxlJiZuLmNvbmZpZ3VyYWJsZSl7dmFyIHI9ZS50aGVuO2Vbc109cix0LnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztyZXR1cm4gbmV3IE4oKGZ1bmN0aW9uKHQsZSl7ci5jYWxsKG4sdCxlKX0pKS50aGVuKHQsZSl9LHRbWl09ITB9fWlmKG4ucGF0Y2hUaGVuPUMsQSl7QyhBKTt2YXIgVz10LmZldGNoOyJmdW5jdGlvbiI9PXR5cGVvZiBXJiYodFtuLnN5bWJvbCgiZmV0Y2giKV09Vyx0LmZldGNoPSh6PVcsZnVuY3Rpb24oKXt2YXIgdD16LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZih0IGluc3RhbmNlb2YgTilyZXR1cm4gdDt2YXIgZT10LmNvbnN0cnVjdG9yO3JldHVybiBlW1pdfHxDKGUpLHR9KSl9cmV0dXJuIFByb21pc2VbZS5fX3N5bWJvbF9fKCJ1bmNhdWdodFByb21pc2VFcnJvcnMiKV09YyxOfSkpO3ZhciB0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsZT1PYmplY3QuZGVmaW5lUHJvcGVydHksbj1PYmplY3QuZ2V0UHJvdG90eXBlT2Ysbz1PYmplY3QuY3JlYXRlLGk9QXJyYXkucHJvdG90eXBlLnNsaWNlLGE9ImFkZEV2ZW50TGlzdGVuZXIiLGM9InJlbW92ZUV2ZW50TGlzdGVuZXIiLHU9Wm9uZS5fX3N5bWJvbF9fKGEpLHM9Wm9uZS5fX3N5bWJvbF9fKGMpLGY9InRydWUiLGw9ImZhbHNlIixwPSJfX3pvbmVfc3ltYm9sX18iO2Z1bmN0aW9uIGgodCxlKXtyZXR1cm4gWm9uZS5jdXJyZW50LndyYXAodCxlKX1mdW5jdGlvbiB2KHQsZSxuLHIsbyl7cmV0dXJuIFpvbmUuY3VycmVudC5zY2hlZHVsZU1hY3JvVGFzayh0LGUsbixyLG8pfXZhciBkPVpvbmUuX19zeW1ib2xfXyxnPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93LHk9Zz93aW5kb3c6dm9pZCAwLGI9ZyYmeXx8Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmfHxnbG9iYWwsbT0icmVtb3ZlQXR0cmlidXRlIixrPVtudWxsXTtmdW5jdGlvbiBfKHQsZSl7Zm9yKHZhciBuPXQubGVuZ3RoLTE7bj49MDtuLS0pImZ1bmN0aW9uIj09dHlwZW9mIHRbbl0mJih0W25dPWgodFtuXSxlKyJfIituKSk7cmV0dXJuIHR9ZnVuY3Rpb24gdyh0KXtyZXR1cm4hdHx8ITEhPT10LndyaXRhYmxlJiYhKCJmdW5jdGlvbiI9PXR5cGVvZiB0LmdldCYmdm9pZCAwPT09dC5zZXQpfXZhciB4PSJ1bmRlZmluZWQiIT10eXBlb2YgV29ya2VyR2xvYmFsU2NvcGUmJnNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZSxTPSEoIm53ImluIGIpJiZ2b2lkIDAhPQ=="
                },
                {
                    "key": "asdf?polyfills-es5.js?6?1",
                    "type": "binary",
                    "value": "base64:PWIucHJvY2VzcyYmIltvYmplY3QgcHJvY2Vzc10iPT09e30udG9TdHJpbmcuY2FsbChiLnByb2Nlc3MpLEU9IVMmJiF4JiYhKCFnfHwheS5IVE1MRWxlbWVudCksTz12b2lkIDAhPT1iLnByb2Nlc3MmJiJbb2JqZWN0IHByb2Nlc3NdIj09PXt9LnRvU3RyaW5nLmNhbGwoYi5wcm9jZXNzKSYmIXgmJiEoIWd8fCF5LkhUTUxFbGVtZW50KSxUPXt9LEk9ZnVuY3Rpb24odCl7aWYodD10fHxiLmV2ZW50KXt2YXIgZT1UW3QudHlwZV07ZXx8KGU9VFt0LnR5cGVdPWQoIk9OX1BST1BFUlRZIit0LnR5cGUpKTt2YXIgbixyPXRoaXN8fHQudGFyZ2V0fHxiLG89cltlXTtpZihFJiZyPT09eSYmImVycm9yIj09PXQudHlwZSl7dmFyIGk9dDshMD09PShuPW8mJm8uY2FsbCh0aGlzLGkubWVzc2FnZSxpLmZpbGVuYW1lLGkubGluZW5vLGkuY29sbm8saS5lcnJvcikpJiZ0LnByZXZlbnREZWZhdWx0KCl9ZWxzZSBudWxsPT0obj1vJiZvLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl8fG58fHQucHJldmVudERlZmF1bHQoKTtyZXR1cm4gbn19O2Z1bmN0aW9uIGoobixyLG8pe3ZhciBpPXQobixyKTtpZighaSYmbyYmdChvLHIpJiYoaT17ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxpJiZpLmNvbmZpZ3VyYWJsZSl7dmFyIGE9ZCgib24iK3IrInBhdGNoZWQiKTtpZighbi5oYXNPd25Qcm9wZXJ0eShhKXx8IW5bYV0pe2RlbGV0ZSBpLndyaXRhYmxlLGRlbGV0ZSBpLnZhbHVlO3ZhciBjPWkuZ2V0LHU9aS5zZXQscz1yLnN1YnN0cigyKSxmPVRbc107Znx8KGY9VFtzXT1kKCJPTl9QUk9QRVJUWSIrcykpLGkuc2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7ZXx8biE9PWJ8fChlPWIpLGUmJihlW2ZdJiZlLnJlbW92ZUV2ZW50TGlzdGVuZXIocyxJKSx1JiZ1LmFwcGx5KGUsayksImZ1bmN0aW9uIj09dHlwZW9mIHQ/KGVbZl09dCxlLmFkZEV2ZW50TGlzdGVuZXIocyxJLCExKSk6ZVtmXT1udWxsKX0saS5nZXQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO2lmKHR8fG4hPT1ifHwodD1iKSwhdClyZXR1cm4gbnVsbDt2YXIgZT10W2ZdO2lmKGUpcmV0dXJuIGU7aWYoYyl7dmFyIG89YyYmYy5jYWxsKHRoaXMpO2lmKG8pcmV0dXJuIGkuc2V0LmNhbGwodGhpcyxvKSwiZnVuY3Rpb24iPT10eXBlb2YgdFttXSYmdC5yZW1vdmVBdHRyaWJ1dGUociksb31yZXR1cm4gbnVsbH0sZShuLHIsaSksblthXT0hMH19fWZ1bmN0aW9uIE0odCxlLG4pe2lmKGUpZm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspaih0LCJvbiIrZVtyXSxuKTtlbHNle3ZhciBvPVtdO2Zvcih2YXIgaSBpbiB0KSJvbiI9PWkuc3Vic3RyKDAsMikmJm8ucHVzaChpKTtmb3IodmFyIGE9MDthPG8ubGVuZ3RoO2ErKylqKHQsb1thXSxuKX19dmFyIFA9ZCgib3JpZ2luYWxJbnN0YW5jZSIpO2Z1bmN0aW9uIEQodCl7dmFyIG49Ylt0XTtpZihuKXtiW2QodCldPW4sYlt0XT1mdW5jdGlvbigpe3ZhciBlPV8oYXJndW1lbnRzLHQpO3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAwOnRoaXNbUF09bmV3IG47YnJlYWs7Y2FzZSAxOnRoaXNbUF09bmV3IG4oZVswXSk7YnJlYWs7Y2FzZSAyOnRoaXNbUF09bmV3IG4oZVswXSxlWzFdKTticmVhaztjYXNlIDM6dGhpc1tQXT1uZXcgbihlWzBdLGVbMV0sZVsyXSk7YnJlYWs7Y2FzZSA0OnRoaXNbUF09bmV3IG4oZVswXSxlWzFdLGVbMl0sZVszXSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkFyZyBsaXN0IHRvbyBsb25nLiIpfX0sTChiW3RdLG4pO3ZhciByLG89bmV3IG4oKGZ1bmN0aW9uKCl7fSkpO2ZvcihyIGluIG8pIlhNTEh0dHBSZXF1ZXN0Ij09PXQmJiJyZXNwb25zZUJsb2IiPT09cnx8ZnVuY3Rpb24obil7ImZ1bmN0aW9uIj09dHlwZW9mIG9bbl0/Ylt0XS5wcm90b3R5cGVbbl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tQXVtuXS5hcHBseSh0aGlzW1BdLGFyZ3VtZW50cyl9OmUoYlt0XS5wcm90b3R5cGUsbix7c2V0OmZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBlPyh0aGlzW1BdW25dPWgoZSx0KyIuIituKSxMKHRoaXNbUF1bbl0sZSkpOnRoaXNbUF1bbl09ZX0sZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbUF1bbl19fSl9KHIpO2ZvcihyIGluIG4pInByb3RvdHlwZSIhPT1yJiZuLmhhc093blByb3BlcnR5KHIpJiYoYlt0XVtyXT1uW3JdKX19dmFyIFI9ITE7ZnVuY3Rpb24gTihlLHIsbyl7Zm9yKHZhciBpPWU7aSYmIWkuaGFzT3duUHJvcGVydHkocik7KWk9bihpKTshaSYmZVtyXSYmKGk9ZSk7dmFyIGEsYyx1PWQocikscz1udWxsO2lmKGkmJiEocz1pW3VdKSYmKHM9aVt1XT1pW3JdLHcoaSYmdChpLHIpKSkpe3ZhciBmPW8ocyx1LHIpO2lbcl09ZnVuY3Rpb24oKXtyZXR1cm4gZih0aGlzLGFyZ3VtZW50cyl9LEwoaVtyXSxzKSxSJiYoYT1zLGM9aVtyXSwiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhhKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGEsdCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGMsdCx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGFbdF19LHNldDpmdW5jdGlvbihuKXsoIWV8fGUud3JpdGFibGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnNldCkmJihhW3RdPW4pfSxlbnVtZXJhYmxlOiFlfHxlLmVudW1lcmFibGUsY29uZmlndXJhYmxlOiFlfHxlLmNvbmZpZ3VyYWJsZX0pfSkpKX1yZXR1cm4gc31mdW5jdGlvbiBBKHQsZSxuKXt2YXIgcj1udWxsO2Z1bmN0aW9uIG8odCl7dmFyIGU9dC5kYXRhO3JldHVybiBlLmFyZ3NbZS5jYklkeF09ZnVuY3Rpb24oKXt0Lmludm9rZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LHIuYXBwbHkoZS50YXJnZXQsZS5hcmdzKSx0fXI9Tih0LGUsKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLHIpe3ZhciBpPW4oZSxyKTtyZXR1cm4gaS5jYklkeD49MCYmImZ1bmN0aW9uIj09dHlwZW9mIHJbaS5jYklkeF0/dihpLm5hbWUscltpLmNiSWR4XSxpLG8pOnQuYXBwbHkoZSxyKX19KSl9ZnVuY3Rpb24gTCh0LGUpe3RbZCgiT3JpZ2luYWxEZWxlZ2F0ZSIpXT1lfXZhciBGPSExLHo9ITE7ZnVuY3Rpb24gWigpe3RyeXt2YXIgdD15Lm5hdmlnYXRvci51c2VyQWdlbnQ7aWYoLTEhPT10LmluZGV4T2YoIk1TSUUgIil8fC0xIT09dC5pbmRleE9mKCJUcmlkZW50LyIpKXJldHVybiEwfWNhdGNoKGUpe31yZXR1cm4hMX1mdW5jdGlvbiBDKCl7aWYoRilyZXR1cm4gejtGPSEwO3RyeXt2YXIgdD15Lm5hdmlnYXRvci51c2VyQWdlbnQ7LTE9PT10LmluZGV4T2YoIk1TSUUgIikmJi0xPT09dC5pbmRleE9mKCJUcmlkZW50LyIpJiYtMT09PXQuaW5kZXhPZigiRWRnZS8iKXx8KHo9ITApfWNhdGNoKGUpe31yZXR1cm4gen1ab25lLl9fbG9hZF9wYXRjaCgidG9TdHJpbmciLChmdW5jdGlvbih0KXt2YXIgZT1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcsbj1kKCJPcmlnaW5hbERlbGVnYXRlIikscj1kKCJQcm9taXNlIiksbz1kKCJFcnJvciIpLGk9ZnVuY3Rpb24oKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgdGhpcyl7dmFyIGk9dGhpc1tuXTtpZihpKXJldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBpP2UuY2FsbChpKTpPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaSk7aWYodGhpcz09PVByb21pc2Upe3ZhciBhPXRbcl07aWYoYSlyZXR1cm4gZS5jYWxsKGEpfWlmKHRoaXM9PT1FcnJvcil7dmFyIGM9dFtvXTtpZihjKXJldHVybiBlLmNhbGwoYyl9fXJldHVybiBlLmNhbGwodGhpcyl9O2lbbl09ZSxGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc9aTt2YXIgYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO09iamVjdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIFByb21pc2U/IltvYmplY3QgUHJvbWlzZV0iOmEuY2FsbCh0aGlzKX19KSk7dmFyIFc9ITE7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cpdHJ5e3ZhciBHPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwicGFzc2l2ZSIse2dldDpmdW5jdGlvbigpe1c9ITB9fSk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRlc3QiLEcsRyksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRlc3QiLEcsRyl9Y2F0Y2goRXQpe1c9ITF9dmFyIFU9e3VzZUc6ITB9LEg9e30sQj17fSxLPS9eX196b25lX3N5bWJvbF9fKFx3KykodHJ1ZXxmYWxzZSkkLyxWPSJfX3pvbmVfc3ltYm9sX19wcm9wYWdhdGlvblN0b3BwZWQiO2Z1bmN0aW9uIFgodCxlLHIpe3ZhciBvPXImJnIuYWRkfHxhLGk9ciYmci5ybXx8Yyx1PXImJnIubGlzdGVuZXJzfHwiZXZlbnRMaXN0ZW5lcnMiLHM9ciYmci5ybUFsbHx8InJlbW92ZUFsbExpc3RlbmVycyIsaD1kKG8pLHY9Ii4iK28rIjoiLGc9InByZXBlbmRMaXN0ZW5lciIseT0iLiIrZysiOiIsYj1mdW5jdGlvbih0LGUsbil7aWYoIXQuaXNSZW1vdmVkKXt2YXIgcj10LmNhbGxiYWNrOyJvYmplY3QiPT10eXBlb2YgciYmci5oYW5kbGVFdmVudCYmKHQuY2FsbGJhY2s9ZnVuY3Rpb24odCl7cmV0dXJuIHIuaGFuZGxlRXZlbnQodCl9LHQub3JpZ2luYWxEZWxlZ2F0ZT1yKSx0Lmludm9rZSh0LGUsW25dKTt2YXIgbz10Lm9wdGlvbnM7byYmIm9iamVjdCI9PXR5cGVvZiBvJiZvLm9uY2UmJmVbaV0uY2FsbChlLG4udHlwZSx0Lm9yaWdpbmFsRGVsZWdhdGU/dC5vcmlnaW5hbERlbGVnYXRlOnQuY2FsbGJhY2ssbyl9fSxtPWZ1bmN0aW9uKGUpe2lmKGU9ZXx8dC5ldmVudCl7dmFyIG49dGhpc3x8ZS50YXJnZXR8fHQscj1uW0hbZS50eXBlXVtsXV07aWYocilpZigxPT09ci5sZW5ndGgpYihyWzBdLG4sZSk7ZWxzZSBmb3IodmFyIG89ci5zbGljZSgpLGk9MDtpPG8ubGVuZ3RoJiYoIWV8fCEwIT09ZVtWXSk7aSsrKWIob1tpXSxuLGUpfX0saz1mdW5jdGlvbihlKXtpZihlPWV8fHQuZXZlbnQpe3ZhciBuPXRoaXN8fGUudGFyZ2V0fHx0LHI9bltIW2UudHlwZV1bZl1dO2lmKHIpaWYoMT09PXIubGVuZ3RoKWIoclswXSxuLGUpO2Vsc2UgZm9yKHZhciBvPXIuc2xpY2UoKSxpPTA7aTxvLmxlbmd0aCYmKCFlfHwhMCE9PWVbVl0pO2krKyliKG9baV0sbixlKX19O2Z1bmN0aW9uIF8oZSxyKXtpZighZSlyZXR1cm4hMTt2YXIgYT0hMDtyJiZ2b2lkIDAhPT1yLnVzZUcmJihhPXIudXNlRyk7dmFyIGM9ciYmci52aCxiPSEwO3ImJnZvaWQgMCE9PXIuY2hrRHVwJiYoYj1yLmNoa0R1cCk7dmFyIF89ITE7ciYmdm9pZCAwIT09ci5ydCYmKF89ci5ydCk7Zm9yKHZhciB3PWU7dyYmIXcuaGFzT3duUHJvcGVydHkobyk7KXc9bih3KTtpZighdyYmZVtvXSYmKHc9ZSksIXcpcmV0dXJuITE7aWYod1toXSlyZXR1cm4hMTt2YXIgeCxFPXImJnIuZXZlbnROYW1lVG9TdHJpbmcsTz17fSxUPXdbaF09d1tvXSxJPXdbZChpKV09d1tpXSxqPXdbZCh1KV09d1t1XSxNPXdbZChzKV09d1tzXTtmdW5jdGlvbiBQKHQpe1d8fCJib29sZWFuIj09dHlwZW9mIE8ub3B0aW9uc3x8bnVsbD09Ty5vcHRpb25zfHwodC5vcHRpb25zPSEhTy5vcHRpb25zLmNhcHR1cmUsTy5vcHRpb25zPXQub3B0aW9ucyl9ciYmci5wcmVwZW5kJiYoeD13W2Qoci5wcmVwZW5kKV09d1tyLnByZXBlbmRdKTt2YXIgRD1hP2Z1bmN0aW9uKHQpe2lmKCFPLmlzRXhpc3RpbmcpcmV0dXJuIFAodCksVC5jYWxsKE8udGFyZ2V0LE8uZXZlbnROYW1lLE8uY2FwdHVyZT9rOm0sTy5vcHRpb25zKX06ZnVuY3Rpb24odCl7cmV0dXJuIFAodCksVC5jYWxsKE8udGFyZ2V0LE8uZXZlbnROYW1lLHQuaW52b2tlLE8ub3B0aW9ucyl9LFI9YT9mdW5jdGlvbih0KXtpZighdC5pc1JlbW92ZWQpe3ZhciBlPUhbdC5ldmVudE5hbWVdLG49dm9pZCAwO2UmJihuPWVbdC5jYXB0dXJlP2Y6bF0pO3ZhciByPW4mJnQudGFyZ2V0W25dO2lmKHIpZm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspaWYocltvXT09PXQpe3Iuc3BsaWNlKG8sMSksdC5pc1JlbW92ZWQ9ITAsMD09PXIubGVuZ3RoJiYodC5hbGxSZW1vdmVkPSEwLHQudGFyZ2V0W25dPW51bGwpO2JyZWFrfX1pZih0LmFsbFJlbW92ZWQpcmV0dXJuIEkuY2FsbCh0LnRhcmdldCx0LmV2ZW50TmFtZSx0LmNhcHR1cmU/azptLHQub3B0aW9ucyl9OmZ1bmN0aW9uKHQpe3JldHVybiBJLmNhbGwodC50YXJnZXQsdC5ldmVudE5hbWUsdC5pbnZva2UsdC5vcHRpb25zKX0sTj1yJiZyLmRpZmY/ci5kaWZmOmZ1bmN0aW9uKHQsZSl7dmFyIG49dHlwZW9mIGU7cmV0dXJuImZ1bmN0aW9uIj09PW4mJnQuY2FsbGJhY2s9PT1lfHwib2JqZWN0Ij09PW4mJnQub3JpZ2luYWxEZWxlZ2F0ZT09PWV9LEE9Wm9uZVtab25lLl9fc3ltYm9sX18oIkJMQUNLX0xJU1RFRF9FVkVOVFMiKV0sRj1mdW5jdGlvbihlLG4scixvLGksdSl7cmV0dXJuIHZvaWQgMD09PWkmJihpPSExKSx2b2lkIDA9PT11JiYodT0hMSksZnVuY3Rpb24oKXt2YXIgcz10aGlzfHx0LGg9YXJndW1lbnRzWzBdLHY9YXJndW1lbnRzWzFdO2lmKCF2KXJldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZihTJiYidW5jYXVnaHRFeGNlcHRpb24iPT09aClyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIGQ9ITE7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHYpe2lmKCF2LmhhbmRsZUV2ZW50KXJldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtkPSEwfWlmKCFjfHxjKGUsdixzLGFyZ3VtZW50cykpe3ZhciBnLHk9YXJndW1lbnRzWzJdO2lmKEEpZm9yKHZhciBtPTA7bTxBLmxlbmd0aDttKyspaWYoaD09PUFbbV0pcmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBrPSExO3ZvaWQgMD09PXk/Zz0hMTohMD09PXk/Zz0hMDohMT09PXk/Zz0hMTooZz0hIXkmJiEheS5jYXB0dXJlLGs9ISF5JiYhIXkub25jZSk7dmFyIF8sdz1ab25lLmN1cnJlbnQseD1IW2hdO2lmKHgpXz14W2c/ZjpsXTtlbHNle3ZhciBUPShFP0UoaCk6aCkrbCxJPShFP0UoaCk6aCkrZixqPXArVCxNPXArSTtIW2hdPXt9LEhbaF1bbF09aixIW2hdW2ZdPU0sXz1nP006an12YXIgUCxEPXNbX10sUj0hMTtpZihEKXtpZihSPSEwLGIpZm9yKG09MDttPEQubGVuZ3RoO20rKylpZihOKERbbV0sdikpcmV0dXJufWVsc2UgRD1zW19dPVtdO3ZhciBMPXMuY29uc3RydWN0b3IubmFtZSxGPUJbTF07RiYmKFA9RltoXSksUHx8KFA9TCtuKyhFP0UoaCk6aCkpLE8ub3B0aW9ucz15LGsmJihPLm9wdGlvbnMub25jZT0hMSksTy50YXJnZXQ9cyxPLmNhcHR1cmU9ZyxPLmV2ZW50TmFtZT1oLE8uaXNFeGlzdGluZz1SO3ZhciB6PWE/VTp2b2lkIDA7eiYmKHoudGFza0RhdGE9Tyk7dmFyIFo9dy5zY2hlZHVsZUV2ZW50VGFzayhQLHYseixyLG8pO3JldHVybiBPLnRhcmdldD1udWxsLHomJih6LnRhc2tEYXRhPW51bGwpLGsmJih5Lm9uY2U9ITApLChXfHwiYm9vbGVhbiIhPXR5cGVvZiBaLm9wdGlvbnMpJiYoWi5vcHRpb25zPXkpLFoudGFyZ2V0PXMsWi5jYXB0dXJlPWcsWi5ldmVudE5hbWU9aCxkJiYoWi5vcmlnaW5hbERlbGVnYXRlPXYpLHU/RC51bnNoaWZ0KFopOkQucHVzaChaKSxpP3M6dm9pZCAwfX19O3JldHVybiB3W29dPUYoVCx2LEQsUixfKSx4JiYod1tnXT1GKHgseSwoZnVuY3Rpb24odCl7cmV0dXJuIHguY2FsbChPLnRhcmdldCxPLmV2ZW50TmFtZSx0Lmludm9rZSxPLm9wdGlvbnMpfSksUixfLCEwKSksd1tpXT1mdW5jdGlvbigpe3ZhciBlLG49dGhpc3x8dCxyPWFyZ3VtZW50c1swXSxvPWFyZ3VtZW50c1syXTtlPXZvaWQgMCE9PW8mJighMD09PW98fCExIT09byYmISFvJiYhIW8uY2FwdHVyZSk7dmFyIGk9YXJndW1lbnRzWzFdO2lmKCFpKXJldHVybiBJLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZighY3x8YyhJLGksbixhcmd1bWVudHMpKXt2YXIgYSx1PUhbcl07dSYmKGE9dVtlP2Y6bF0pO3ZhciBzPWEmJm5bYV07aWYocylmb3IodmFyIHA9MDtwPHMubGVuZ3RoO3ArKyl7dmFyIGg9c1twXTtpZihOKGgsaSkpcmV0dXJuIHMuc3BsaWNlKHAsMSksaC5pc1JlbW92ZWQ9ITAsMD09PXMubGVuZ3RoJiYoaC5hbGxSZW1vdmVkPSEwLG5bYV09bnVsbCksaC56b25lLmNhbmNlbFRhc2soaCksXz9uOnZvaWQgMH1yZXR1cm4gSS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSx3W3VdPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXN8fHQsbj1hcmd1bWVudHNbMF0scj1bXSxvPVkoZSxFP0Uobik6biksaT0wO2k8by5sZW5ndGg7aSsrKXt2YXIgYT1vW2ldLGM9YS5vcmlnaW5hbERlbGVnYXRlP2Eub3JpZ2luYWxEZWxlZ2F0ZTphLmNhbGxiYWNrO3IucHVzaChjKX1yZXR1cm4gcn0sd1tzXT1mdW5jdGlvbigpe3ZhciBlPXRoaXN8fHQsbj1hcmd1bWVudHNbMF07aWYobil7dmFyIHI9SFtuXTtpZihyKXt2YXIgbz1yW2xdLGE9cltmXSxjPWVbb10sdT1lW2FdO2lmKGMpe3ZhciBwPWMuc2xpY2UoKTtmb3IoZD0wO2Q8cC5sZW5ndGg7ZCsrKXRoaXNbaV0uY2FsbCh0aGlzLG4sKGg9cFtkXSkub3JpZ2luYWxEZWxlZ2F0ZT9oLm9yaWdpbmFsRGVsZWdhdGU6aC5jYWxsYmFjayxoLm9wdGlvbnMpfWlmKHUpZm9yKHA9dS5zbGljZSgpLGQ9MDtkPHAubGVuZ3RoO2QrKyl7dmFyIGg7dGhpc1tpXS5jYWxsKHRoaXMsbiwoaD1wW2RdKS5vcmlnaW5hbERlbGVnYXRlP2gub3JpZ2luYWxEZWxlZ2F0ZTpoLmNhbGxiYWNrLGgub3B0aW9ucyl9fX1lbHNle2Zvcih2YXIgdj1PYmplY3Qua2V5cyhlKSxkPTA7ZDx2Lmxlbmd0aDtkKyspe3ZhciBnPXZbZF0seT1LLmV4ZWMoZyksYj15JiZ5WzFdO2ImJiJyZW1vdmVMaXN0ZW5lciIhPT1iJiZ0aGlzW3NdLmNhbGwodGhpcyxiKX10aGlzW3NdLmNhbGwodGhpcywicmVtb3ZlTGlzdGVuZXIiKX1pZihfKXJldHVybiB0aGlzfSxMKHdbb10sVCksTCh3W2ldLEkpLE0mJkwod1tzXSxNKSxqJiZMKHdbdV0saiksITB9Zm9yKHZhciB3PVtdLHg9MDt4PGUubGVuZ3RoO3grKyl3W3hdPV8oZVt4XSxyKTtyZXR1cm4gd31mdW5jdGlvbiBZKHQsZSl7dmFyIG49W107Zm9yKHZhciByIGluIHQpe3ZhciBvPUsuZXhlYyhyKSxpPW8mJm9bMV07aWYoaSYmKCFlfHxpPT09ZSkpe3ZhciBhPXRbcl07aWYoYSlmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKyluLnB1c2goYVtjXSl9fXJldHVybiBufWZ1bmN0aW9uIHEodCxlKXt2YXIgbj10LkV2ZW50O24mJm4ucHJvdG90eXBlJiZlLnBhdGNoTWV0aG9kKG4ucHJvdG90eXBlLCJzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24iLChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtlW1ZdPSEwLHQmJnQuYXBwbHkoZSxuKX19KSl9ZnVuY3Rpb24gUSh0LGUsbixyLG8pe3ZhciBpPVpvbmUuX19zeW1ib2xfXyhyKTtpZighZVtpXSl7dmFyIGE9ZVtpXT1lW3JdO2Vbcl09ZnVuY3Rpb24oaSxjLHUpe3JldHVybiBjJiZjLnByb3RvdHlwZSYmby5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgbz1uKyIuIityKyI6OiIrZSxpPWMucHJvdG90eXBlO2lmKGkuaGFzT3duUHJvcGVydHkoZSkpe3ZhciBhPXQuT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGksZSk7YSYmYS52YWx1ZT8oYS52YWx1ZT10LndyYXBXaXRoQ3VycmVudFpvbmUoYS52YWx1ZSxvKSx0Ll9yZWRlZmluZVByb3BlcnR5KGMucHJvdG90eXBlLGUsYSkpOmlbZV0mJihpW2VdPXQud3JhcFdpdGhDdXJyZW50Wm9uZShpW2VdLG8pKX1lbHNlIGlbZV0mJihpW2VdPXQud3JhcFdpdGhDdXJyZW50Wm9uZShpW2VdLG8pKX0pKSxhLmNhbGwoZSxpLGMsdSl9LHQuYXR0YWNoT3JpZ2luVG9QYXRjaGVkKGVbcl0sYSl9fXZhciBKPVpvbmUuX19zeW1ib2xfXywkPU9iamVjdFtKKCJkZWZpbmVQcm9wZXJ0eSIpXT1PYmplY3QuZGVmaW5lUHJvcGVydHksdHQ9T2JqZWN0W0ooImdldE93blByb3BlcnR5RGVzY3JpcHRvciIpXT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLGV0PU9iamVjdC5jcmVhdGUsbnQ9SigidW5jb25maWd1cmFibGVzIik7ZnVuY3Rpb24gcnQodCxlLG4pe3ZhciByPW4uY29uZmlndXJhYmxlO3JldHVybiBhdCh0LGUsbj1pdCh0LGUsbikscil9ZnVuY3Rpb24gb3QodCxlKXtyZXR1cm4gdCYmdFtudF0mJnRbbnRdW2VdfWZ1bmN0aW9uIGl0KHQsZSxuKXtyZXR1cm4gT2JqZWN0LmlzRnJvemVuKG4pfHwobi5jb25maWd1cmFibGU9ITApLG4uY29uZmlndXJhYmxlfHwodFtudF18fE9iamVjdC5pc0Zyb3plbih0KXx8JCh0LG50LHt3cml0YWJsZTohMCx2YWx1ZTp7fX0pLHRbbnRdJiYodFtudF1bZV09ITApKSxufWZ1bmN0aW9uIGF0KHQsZSxuLHIpe3RyeXtyZXR1cm4gJCh0LGUsbil9Y2F0Y2goaSl7aWYoIW4uY29uZmlndXJhYmxlKXRocm93IGk7dm9pZCAwPT09cj9kZWxldGUgbi5jb25maWd1cmFibGU6bi5jb25maWd1cmFibGU9cjt0cnl7cmV0dXJuICQodCxlLG4pfWNhdGNoKGkpe3ZhciBvPW51bGw7dHJ5e289SlNPTi5zdHJpbmdpZnkobil9Y2F0Y2goaSl7bz1uLnRvU3RyaW5nKCl9Y29uc29sZS5sb2coIkF0dGVtcHRpbmcgdG8gY29uZmlndXJlICciK2UrIicgd2l0aCBkZXNjcmlwdG9yICciK28rIicgb24gb2JqZWN0ICciK3QrIicgYW5kIGdvdCBlcnJvciwgZ2l2aW5nIHVwOiAiK2kpfX19dmFyIGN0PVsiYWJzb2x1dGVkZXZpY2VvcmllbnRhdGlvbiIsImFmdGVyaW5wdXQiLCJhZnRlcnByaW50IiwiYXBwaW5zdGFsbGVkIiwiYmVmb3JlaW5zdGFsbHByb21wdCIsImJlZm9yZXByaW50IiwiYmVmb3JldW5sb2FkIiwiZGV2aWNlbGlnaHQiLCJkZXZpY2Vtb3Rpb24iLCJkZXZpY2VvcmllbnRhdGlvbiIsImRldmljZW9yaWVudGF0aW9uYWJzb2x1dGUiLCJkZXZpY2Vwcm94aW1pdHkiLCJoYXNoY2hhbmdlIiwibGFuZ3VhZ2VjaGFuZ2UiLCJtZXNzYWdlIiwibW96YmVmb3JlcGFpbnQiLCJvZmZsaW5lIiwib25saW5lIiwicGFpbnQiLCJwYWdlc2hvdyIsInBhZ2VoaWRlIiwicG9wc3RhdGUiLCJyZWplY3Rpb25oYW5kbGVkIiwic3RvcmFnZSIsInVuaGFuZGxlZHJlamVjdGlvbiIsInVubG9hZCIsInVzZXJwcm94aW1pdHkiLCJ2cmRpc3BseWNvbm5lY3RlZCIsInZyZGlzcGxheWRpc2Nvbm5lY3RlZCIsInZyZGlzcGxheXByZXNlbnRjaGFuZ2UiXSx1dD1bImVuY3J5cHRlZCIsIndhaXRpbmdmb3JrZXkiLCJtc25lZWRrZXkiLCJtb3ppbnRlcnJ1cHRiZWdpbiIsIm1vemludGVycnVwdGVuZCJdLHN0PVsibG9hZCJdLGZ0PVsiYmx1ciIsImVycm9yIiwiZm9jdXMiLCJsb2FkIiwicmVzaXplIiwic2Nyb2xsIiwibWVzc2FnZWVycm9yIl0sbHQ9WyJib3VuY2UiLCJmaW5pc2giLCJzdGFydCJdLHB0PVsibG9hZHN0YXJ0IiwicHJvZ3Jlc3MiLCJhYm9ydCIsImVycm9yIiwibG9hZCIsInByb2dyZXNzIiwidGltZW91dCIsImxvYWRlbmQiLCJyZWFkeXN0YXRlY2hhbmdlIl0saHQ9WyJ1cGdyYWRlbmVlZGVkIiwiY29tcGxldGUiLCJhYm9ydCIsInN1Y2Nlc3MiLCJlcnJvciIsImJsb2NrZWQiLCJ2ZXJzaW9uY2hhbmdlIiwiY2xvc2UiXSx2dD1bImNsb3NlIiwiZXJyb3IiLCJvcGVuIiwibWVzc2FnZSJdLGR0PVsiZXJyb3IiLCJtZXNzYWdlIl0sZ3Q9WyJhYm9ydCIsImFuaW1hdGlvbmNhbmNlbCIsImFuaW1hdGlvbmVuZCIsImFuaW1hdGlvbml0ZXJhdGlvbiIsImF1eGNsaWNrIiwiYmVmb3JlaW5wdXQiLCJibHVyIiwiY2FuY2VsIiwiY2FucGxheSIsImNhbnBsYXl0aHJvdWdoIiwiY2hhbmdlIiwiY29tcG9zaXRpb25zdGFydCIsImNvbXBvc2l0aW9udXBkYXRlIiwiY29tcG9zaXRpb25lbmQiLCJjdWVjaGFuZ2UiLCJjbGljayIsImNsb3NlIiwiY29udGV4dG1lbnUiLCJjdXJlY2hhbmdlIiwiZGJsY2xpY2siLCJkcmFnIiwiZHJhZ2VuZCIsImRyYWdlbnRlciIsImRyYWdleGl0IiwiZHJhZ2xlYXZlIiwiZHJhZ292ZXIiLCJkcm9wIiwiZHVyYXRpb25jaGFuZ2UiLCJlbXB0aWVkIiwiZW5kZWQiLCJlcnJvciIsImZvY3VzIiwiZm9jdXNpbiIsImZvY3Vzb3V0IiwiZ290cG9pbnRlcmNhcHR1cmUiLCJpbnB1dCIsImludmFsaWQiLCJrZXlkb3duIiwia2V5cHJlc3MiLCJrZXl1cCIsImxvYWQiLCJsb2Fkc3RhcnQiLCJsb2FkZWRkYXRhIiwibG9hZGVkbWV0YWRhdGEiLCJsb3N0cG9pbnRlcmNhcHR1cmUiLCJtb3VzZWRvd24iLCJtb3VzZWVudGVyIiwibW91c2VsZWF2ZSIsIm1vdXNlbW92ZSIsIm1vdXNlb3V0IiwibW91c2VvdmVyIiwibW91c2V1cCIsIm1vdXNld2hlZWwiLCJvcmllbnRhdGlvbmNoYW5nZSIsInBhdXNlIiwicGxheSIsInBsYXlpbmciLCJwb2ludGVyY2FuY2VsIiwicG9pbnRlcmRvd24iLCJwb2ludGVyZW50ZXIiLCJwb2ludGVybGVhdmUiLCJwb2ludGVybG9ja2NoYW5nZSIsIm1venBvaW50ZXJsb2NrY2hhbmdlIiwid2Via2l0cG9pbnRlcmxvY2tlcmNoYW5nZSIsInBvaW50ZXJsb2NrZXJyb3IiLCJtb3pwb2ludGVybG9ja2Vycm9yIiwid2Via2l0cG9pbnRlcmxvY2tlcnJvciIsInBvaW50ZXJtb3ZlIiwicG9pbnRvdXQiLCJwb2ludGVyb3ZlciIsInBvaW50ZXJ1cCIsInByb2dyZXNzIiwicmF0ZWNoYW5nZSIsInJlc2V0IiwicmVzaXplIiwic2Nyb2xsIiwic2Vla2VkIiwic2Vla2luZyIsInNlbGVjdCIsInNlbGVjdGlvbmNoYW5nZSIsInNlbGVjdHN0YXJ0Iiwic2hvdyIsInNvcnQiLCJzdGFsbGVkIiwic3VibWl0Iiwic3VzcGVuZCIsInRpbWV1cGRhdGUiLCJ2b2x1bWVjaGFuZ2UiLCJ0b3VjaGNhbmNlbCIsInRvdWNobW92ZSIsInRvdWNoc3RhcnQiLCJ0b3VjaGVuZCIsInRyYW5zaXRpb25jYW5jZWwiLCJ0cmFuc2l0aW9uZW5kIiwid2FpdGluZyIsIndoZWVsIl0uY29uY2F0KFsid2ViZ2xjb250ZXh0cmVzdG9yZWQiLCJ3ZWJnbGNvbnRleHRsb3N0Iiwid2ViZ2xjb250ZXh0Y3JlYXRpb25lcnJvciJdLFsiYXV0b2NvbXBsZXRlIiwiYXV0b2NvbXBsZXRlZXJyb3IiXSxbInRvZ2dsZSJdLFsiYWZ0ZXJzY3JpcHRleGVjdXRlIiwiYmVmb3Jlc2NyaXB0ZXhlY3V0ZSIsIkRPTUNvbnRlbnRMb2FkZWQiLCJmcmVlemUiLCJmdWxsc2NyZWVuY2hhbmdlIiwibW96ZnVsbHNjcmVlbmNoYW5nZSIsIndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UiLCJtc2Z1bGxzY3JlZW5jaGFuZ2UiLCJmdWxsc2NyZWVuZXJyb3IiLCJtb3pmdWxsc2NyZWVuZXJyb3IiLCJ3ZWJraXRmdWxsc2NyZWVuZXJyb3IiLCJtc2Z1bGxzY3JlZW5lcnJvciIsInJlYWR5c3RhdGVjaGFuZ2UiLCJ2aXNpYmlsaXR5Y2hhbmdlIiwicmVzdW1lIl0sY3QsWyJiZWZvcmVjb3B5IiwiYmVmb3JlY3V0IiwiYmVmb3JlcGFzdGUiLCJjb3B5IiwiY3V0IiwicGFzdGUiLCJkcmFnc3RhcnQiLCJsb2FkZW5kIiwiYW5pbWF0aW9uc3RhcnQiLCJzZWFyY2giLCJ0cmFuc2l0aW9ucnVuIiwidHJhbnNpdGlvbnN0YXJ0Iiwid2Via2l0YW5pbWF0aW9uZW5kIiwid2Via2l0YW5pbWF0aW9uaXRlcmF0aW9uIiwid2Via2l0YW5pbWF0aW9uc3RhcnQiLCJ3ZWJraXR0cmFuc2l0aW9uZW5kIl0sWyJhY3RpdmF0ZSIsImFmdGVydXBkYXRlIiwiYXJpYXJlcXVlc3QiLCJiZWZvcmVhY3RpdmF0ZSIsImJlZm9yZWRlYWN0aXZhdGUiLCJiZWZvcmVlZGl0Zm9jdXMiLCJiZWZvcmV1cGRhdGUiLCJjZWxsY2hhbmdlIiwiY29udHJvbHNlbGVjdCIsImRhdGFhdmFpbGFibGUiLCJkYXRhc2V0Y2hhbmdlZCIsImRhdGFzZXRjb21wbGV0ZSIsImVycm9ydXBkYXRlIiwiZmlsdGVyY2hhbmdlIiwibGF5b3V0Y29tcGxldGUiLCJsb3NlY2FwdHVyZSIsIm1vdmUiLCJtb3ZlZW5kIiwibW92ZXN0YXJ0IiwicHJvcGVydHljaGFuZ2UiLCJyZXNpemVlbmQiLCJyZXNpemVzdGFydCIsInJvd2VudGVyIiwicm93ZXhpdCIsInJvd3NkZWxldGUiLCJyb3dzaW5zZXJ0ZWQiLCJjb21tYW5kIiwiY29tcGFzc25lZWRzY2FsaWJyYXRpb24iLCJkZWFjdGl2YXRlIiwiaGVscCIsIm1zY29udGVudHpvb20iLCJtc21hbmlwdWxhdGlvbnN0YXRlY2hhbmdlZCIsIm1zZ2VzdHVyZWNoYW5nZSIsIm1zZ2VzdHVyZWRvdWJsZXRhcCIsIm1zZ2VzdHVyZWVuZCIsIm1zZ2VzdHVyZWhvbGQiLCJtc2dlc3R1cmVzdGFydCIsIm1zZ2VzdHVyZXRhcCIsIm1zZ290cG9pbnRlcmNhcHR1cmUiLCJtc2luZXJ0aWFzdGFydCIsIm1zbG9zdHBvaW50ZXJjYXB0dXJlIiwibXNwb2ludGVyY2FuY2VsIiwibXNwb2ludGVyZG93biIsIm1zcG9pbnRlcmVudGVyIiwibXNwb2ludGVyaG92ZXIiLCJtc3BvaW50ZXJsZWF2ZSIsIm1zcG9pbnRlcm1vdmUiLCJtc3BvaW50ZXJvdXQiLCJtc3BvaW50ZXJvdmVyIiwibXNwb2ludGVydXAiLCJwb2ludGVyb3V0IiwibXNzaXRlbW9kZWp1bXBsaXN0aXRlbXJlbW92ZWQiLCJtc3RodW1ibmFpbGNsaWNrIiwic3RvcCIsInN0b3JhZ2Vjb21taXQiXSk7ZnVuY3Rpb24geXQodCxlLG4pe2lmKCFufHwwPT09bi5sZW5ndGgpcmV0dXJuIGU7dmFyIHI9bi5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnRhcmdldD09PXR9KSk7aWYoIXJ8fDA9PT1yLmxlbmd0aClyZXR1cm4gZTt2YXIgbz1yWzBdLmlnbm9yZVByb3BlcnRpZXM7cmV0dXJuIGUuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4tMT09PW8uaW5kZXhPZih0KX0pKX1mdW5jdGlvbiBidCh0LGUsbixyKXt0JiZNKHQseXQodCxlLG4pLHIpfWZ1bmN0aW9uIG10KHQsZSl7aWYoKCFTfHxPKSYmIVpvbmVbdC5zeW1ib2woInBhdGNoRXZlbnRzIildKXt2YXIgcj0idW5kZWZpbmVkIiE9dHlwZW9mIFdlYlNvY2tldCxvPWUuX19ab25lX2lnbm9yZV9vbl9wcm9wZXJ0aWVzO2lmKEUpe3ZhciBpPXdpbmRvdyxhPVo/W3t0YXJnZXQ6aSxpZ25vcmVQcm9wZXJ0aWVzOlsiZXJyb3IiXX1dOltdO2J0KGksZ3QuY29uY2F0KFsibWVzc2FnZWVycm9yIl0pLG8/by5jb25jYXQoYSk6byxuKGkpKSxidChEb2N1bWVudC5wcm90b3R5cGUsZ3Qsbyksdm9pZCAwIT09aS5TVkdFbGVtZW50JiZidChpLlNWR0VsZW1lbnQucHJvdG90eXBlLGd0LG8pLGJ0KEVsZW1lbnQucHJvdG90eXBlLGd0LG8pLGJ0KEhUTUxFbGVtZW50LnByb3RvdHlwZSxndCxvKSxidChIVE1MTWVkaWFFbGVtZW50LnByb3RvdHlwZSx1dCxvKSxidChIVE1MRnJhbWVTZXRFbGVtZW50LnByb3RvdHlwZSxjdC5jb25jYXQoZnQpLG8pLGJ0KEhUTUxCb2R5RWxlbWVudC5wcm90b3R5cGUsY3QuY29uY2F0KGZ0KSxvKSxidChIVE1MRnJhbWVFbGVtZW50LnByb3RvdHlwZSxzdCxvKSxidChIVE1MSUZyYW1lRWxlbWVudC5wcm90b3R5cGUsc3Qsbyk7dmFyIGM9aS5IVE1MTWFycXVlZUVsZW1lbnQ7YyYmYnQoYy5wcm90b3R5cGUsbHQsbyk7dmFyIHU9aS5Xb3JrZXI7dSYmYnQodS5wcm90b3R5cGUsZHQsbyl9dmFyIHM9ZS5YTUxIdHRwUmVxdWVzdDtzJiZidChzLnByb3RvdHlwZSxwdCxvKTt2YXIgZj1lLlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQ7ZiYmYnQoZiYmZi5wcm90b3R5cGUscHQsbyksInVuZGVmaW5lZCIhPXR5cGVvZiBJREJJbmRleCYmKGJ0KElEQkluZGV4LnByb3RvdHlwZSxodCxvKSxidChJREJSZXF1ZXN0LnByb3RvdHlwZSxodCxvKSxidChJREJPcGVuREJSZXF1ZXN0LnByb3RvdHlwZSxodCxvKSxidChJREJEYXRhYmFzZS5wcm90b3R5cGUsaHQsbyksYnQoSURCVHJhbnNhY3Rpb24ucHJvdG90eXBlLGh0LG8pLGJ0KElEQkN1cnNvci5wcm90b3R5cGUsaHQsbykpLHImJmJ0KFdlYlNvY2tldC5wcm90b3R5cGUsdnQsbyl9fWZ1bmN0aW9uIGt0KHQsZSl7dmFyIG49ZS5nZXRHbG9iYWxPYmplY3RzKCkscj1uLmV2ZW50TmFtZXMsbz1uLmdsb2JhbFNvdXJjZXMsaT1uLnpvbmVTeW1ib2xFdmVudE5hbWVzLGE9bi5UUlVFX1NUUixjPW4uRkFMU0VfU1RSLHU9bi5aT05FX1NZTUJPTF9QUkVGSVgscz0iQW5jaG9yLEFyZWEsQXVkaW8sQlIsQmFzZSxCYXNlRm9udCxCb2R5LEJ1dHRvbixDYW52YXMsQ29udGVudCxETGlzdCxEaXJlY3RvcnksRGl2LEVtYmVkLEZpZWxkU2V0LEZvbnQsRm9ybSxGcmFtZSxGcmFtZVNldCxIUixIZWFkLEhlYWRpbmcsSHRtbCxJRnJhbWUsSW1hZ2UsSW5wdXQsS2V5Z2VuLExJLExhYmVsLExlZ2VuZCxMaW5rLE1hcCxNYXJxdWVlLE1lZGlhLE1lbnUsTWV0YSxNZXRlcixNb2QsT0xpc3QsT2JqZWN0LE9wdEdyb3VwLE9wdGlvbixPdXRwdXQsUGFyYWdyYXBoLFByZSxQcm9ncmVzcyxRdW90ZSxTY3JpcHQsU2VsZWN0LFNvdXJjZSxTcGFuLFN0eWxlLFRhYmxlQ2FwdGlvbixUYWJsZUNlbGwsVGFibGVDb2wsVGFibGUsVGFibGVSb3csVGFibGVTZWN0aW9uLFRleHRBcmVhLFRpdGxlLFRyYWNrLFVMaXN0LFVua25vd24sVmlkZW8iLGY9IkFwcGxpY2F0aW9uQ2FjaGUsRXZlbnRTb3VyY2UsRmlsZVJlYWRlcixJbnB1dE1ldGhvZENvbnRleHQsTWVkaWFDb250cm9sbGVyLE1lc3NhZ2VQb3J0LE5vZGUsUGVyZm9ybWFuY2UsU1ZHRWxlbWVudEluc3RhbmNlLFNoYXJlZFdvcmtlcixUZXh0VHJhY2ssVGV4dFRyYWNrQ3VlLFRleHRUcmFja0xpc3QsV2ViS2l0TmFtZWRGbG93LFdpbmRvdyxXb3JrZXIsV29ya2VyR2xvYmFsU2NvcGUsWE1MSHR0cFJlcXVlc3QsWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldCxYTUxIdHRwUmVxdWVzdFVwbG9hZCxJREJSZXF1ZXN0LElEQk9wZW5EQlJlcXVlc3QsSURCRGF0YWJhc2UsSURCVHJhbnNhY3Rpb24sSURCQ3Vyc29yLERCSW5kZXgsV2ViU29ja2V0Ii5zcGxpdCgiLCIpLGw9W10scD10Lnd0ZixoPXMuc3BsaXQoIiwiKTtwP2w9aC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiJIVE1MIit0KyJFbGVtZW50In0pKS5jb25jYXQoZik6dC5FdmVudFRhcmdldD9sLnB1c2goIkV2ZW50VGFyZ2V0Iik6bD1mO2Zvcih2YXIgdj10Ll9fWm9uZV9kaXNhYmxlX0lFX2NoZWNrfHwhMSxkPXQuX19ab25lX2VuYWJsZV9jcm9zc19jb250ZXh0X2NoZWNrfHwhMSxnPWUuaXNJRU9yRWRnZSgpLHk9ImZ1bmN0aW9uIF9fQlJPV1NFUlRPT0xTX0NPTlNPTEVfU0FGRUZVTkMoKSB7IFtuYXRpdmUgY29kZV0gfSIsYj0wO2I8ci5sZW5ndGg7YisrKXt2YXIgbT11KygoUz1yW2JdKStjKSxrPXUrKFMrYSk7aVtTXT17fSxpW1NdW2NdPW0saVtTXVthXT1rfWZvcihiPTA7YjxzLmxlbmd0aDtiKyspZm9yKHZhciBfPWhbYl0sdz1vW19dPXt9LHg9MDt4PHIubGVuZ3RoO3grKyl7dmFyIFM7d1tTPXJbeF1dPV8rIi5hZGRFdmVudExpc3RlbmVyOiIrU312YXIgRT1bXTtmb3IoYj0wO2I8bC5sZW5ndGg7YisrKXt2YXIgTz10W2xbYl1dO0UucHVzaChPJiZPLnByb3RvdHlwZSl9cmV0dXJuIGUucGF0Y2hFdmVudFRhcmdldCh0LEUse3ZoOmZ1bmN0aW9uKHQsZSxuLHIpe2lmKCF2JiZnKXtpZihkKXRyeXt2YXIgbztpZigiW29iamVjdCBGdW5jdGlvbldyYXBwZXJdIj09PShvPWUudG9TdHJpbmcoKSl8fG89PXkpcmV0dXJuIHQuYXBwbHkobixyKSwhMX1jYXRjaChpKXtyZXR1cm4gdC5hcHBseShuLHIpLCExfWVsc2UgaWYoIltvYmplY3QgRnVuY3Rpb25XcmFwcGVyXSI9PT0obz1lLnRvU3RyaW5nKCkpfHxvPT15KXJldHVybiB0LmFwcGx5KG4sciksITF9ZWxzZSBpZihkKXRyeXtlLnRvU3RyaW5nKCl9Y2F0Y2goaSl7cmV0dXJuIHQuYXBwbHkobixyKSwhMX1yZXR1cm4hMH19KSxab25lW2Uuc3ltYm9sKCJwYXRjaEV2ZW50VGFyZ2V0IildPSEhdC5FdmVudFRhcmdldCwhMH1mdW5jdGlvbiBfdCh0LGUpe3ZhciBuPXQuZ2V0R2xvYmFsT2JqZWN0cygpO2lmKCghbi5pc05vZGV8fG4uaXNNaXgpJiYhZnVuY3Rpb24odCxlKXt2YXIgbj10LmdldEdsb2JhbE9iamVjdHMoKTtpZigobi5pc0Jyb3dzZXJ8fG4uaXNNaXgpJiYhdC5PYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSFRNTEVsZW1lbnQucHJvdG90eXBlLCJvbmNsaWNrIikmJiJ1bmRlZmluZWQiIT10eXBlb2YgRWxlbWVudCl7dmFyIHI9dC5PYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRWxlbWVudC5wcm90b3R5cGUsIm9uY2xpY2siKTtpZihyJiYhci5jb25maWd1cmFibGUpcmV0dXJuITE7aWYocil7dC5PYmplY3REZWZpbmVQcm9wZXJ0eShFbGVtZW50LnByb3RvdHlwZSwib25jbGljayIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiEwfX0pO3ZhciBvPSEhZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikub25jbGljaztyZXR1cm4gdC5PYmplY3REZWZpbmVQcm9wZXJ0eShFbGVtZW50LnByb3RvdHlwZSwib25jbGljayIsciksb319dmFyIGk9ZS5YTUxIdHRwUmVxdWVzdDtpZighaSlyZXR1cm4hMTt2YXIgYT1pLnByb3RvdHlwZSxjPXQuT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGEsIm9ucmVhZHlzdGF0ZWNoYW5nZSIpO2lmKGMpcmV0dXJuIHQuT2JqZWN0RGVmaW5lUHJvcGVydHkoYSwib25yZWFkeXN0YXRlY2hhbmdlIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuITB9fSksbz0hIShzPW5ldyBpKS5vbnJlYWR5c3RhdGVjaGFuZ2UsdC5PYmplY3REZWZpbmVQcm9wZXJ0eShhLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLGN8fHt9KSxvO3ZhciB1PXQuc3ltYm9sKCJmYWtlIik7dC5PYmplY3REZWZpbmVQcm9wZXJ0eShhLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1t1XX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXNbdV09dH19KTt2YXIgcz1uZXcgaSxmPWZ1bmN0aW9uKCl7fTtyZXR1cm4gcy5vbnJlYWR5c3RhdGVjaGFuZ2U9ZixvPXNbdV09PT1mLHMub25yZWFkeXN0YXRlY2hhbmdlPW51bGwsb30odCxlKSl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBXZWJTb2NrZXQ7IWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LmdldEdsb2JhbE9iamVjdHMoKS5ldmVudE5hbWVzLG49dC5zeW1ib2woInVuYm91bmQiKSxyPWZ1bmN0aW9uKHIpe3ZhciBvPWVbcl0saT0ib24iK287c2VsZi5hZGRFdmVudExpc3RlbmVyKG8sKGZ1bmN0aW9uKGUpe3ZhciByLG8sYT1lLnRhcmdldDtmb3Iobz1hP2EuY29uc3RydWN0b3IubmFtZSsiLiIraToidW5rbm93bi4iK2k7YTspYVtpXSYmIWFbaV1bbl0mJigocj10LndyYXBXaXRoQ3VycmVudFpvbmUoYVtpXSxvKSlbbl09YVtpXSxhW2ldPXIpLGE9YS5wYXJlbnRFbGVtZW50fSksITApfSxvPTA7bzxlLmxlbmd0aDtvKyspcihvKX0odCksdC5wYXRjaENsYXNzKCJYTUxIdHRwUmVxdWVzdCIpLHImJmZ1bmN0aW9uKHQsZSl7dmFyIG49dC5nZXRHbG9iYWxPYmplY3RzKCkscj1uLkFERF9FVkVOVF9MSVNURU5FUl9TVFIsbz1uLlJFTU9WRV9FVkVOVF9MSVNURU5FUl9TVFIsaT1lLldlYlNvY2tldDtlLkV2ZW50VGFyZ2V0fHx0LnBhdGNoRXZlbnRUYXJnZXQoZSxbaS5wcm90b3R5cGVdKSxlLldlYlNvY2tldD1mdW5jdGlvbihlLG4pe3ZhciBhLGMsdT1hcmd1bWVudHMubGVuZ3RoPjE/bmV3IGkoZSxuKTpuZXcgaShlKSxzPXQuT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHUsIm9ubWVzc2FnZSIpO3JldHVybiBzJiYhMT09PXMuY29uZmlndXJhYmxlPyhhPXQuT2JqZWN0Q3JlYXRlKHUpLGM9dSxbcixvLCJzZW5kIiwiY2xvc2UiXS5mb3JFYWNoKChmdW5jdGlvbihlKXthW2VdPWZ1bmN0aW9uKCl7dmFyIG49dC5BcnJheVNsaWNlLmNhbGwoYXJndW1lbnRzKTtpZihlPT09cnx8ZT09PW8pe3ZhciBpPW4ubGVuZ3RoPjA/blswXTp2b2lkIDA7aWYoaSl7dmFyIGM9Wm9uZS5fX3N5bWJvbF9fKCJPTl9QUk9QRVJUWSIraSk7dVtjXT1hW2NdfX1yZXR1cm4gdVtlXS5hcHBseSh1LG4pfX0pKSk6YT11LHQucGF0Y2hPblByb3BlcnRpZXMoYSxbImNsb3NlIiwiZXJyb3IiLCJtZXNzYWdlIiwib3BlbiJdLGMpLGF9O3ZhciBhPWUuV2ViU29ja2V0O2Zvcih2YXIgYyBpbiBpKWFbY109aVtjXX0odCxlKSxab25lW3Quc3ltYm9sKCJwYXRjaEV2ZW50cyIpXT0hMH19Wm9uZS5fX2xvYWRfcGF0Y2goInV0aWwiLChmdW5jdGlvbihuLHIsdSl7dS5wYXRjaE9uUHJvcGVydGllcz1NLHUucGF0Y2hNZXRob2Q9Tix1Lg=="
                },
                {
                    "key": "asdf?polyfills-es5.js?6?2",
                    "type": "binary",
                    "value": "base64:YmluZEFyZ3VtZW50cz1fLHUucGF0Y2hNYWNyb1Rhc2s9QTt2YXIgcz1yLl9fc3ltYm9sX18oIkJMQUNLX0xJU1RFRF9FVkVOVFMiKSx2PXIuX19zeW1ib2xfXygiVU5QQVRDSEVEX0VWRU5UUyIpO25bdl0mJihuW3NdPW5bdl0pLG5bc10mJihyW3NdPXJbdl09bltzXSksdS5wYXRjaEV2ZW50UHJvdG90eXBlPXEsdS5wYXRjaEV2ZW50VGFyZ2V0PVgsdS5pc0lFT3JFZGdlPUMsdS5PYmplY3REZWZpbmVQcm9wZXJ0eT1lLHUuT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yPXQsdS5PYmplY3RDcmVhdGU9byx1LkFycmF5U2xpY2U9aSx1LnBhdGNoQ2xhc3M9RCx1LndyYXBXaXRoQ3VycmVudFpvbmU9aCx1LmZpbHRlclByb3BlcnRpZXM9eXQsdS5hdHRhY2hPcmlnaW5Ub1BhdGNoZWQ9TCx1Ll9yZWRlZmluZVByb3BlcnR5PXJ0LHUucGF0Y2hDYWxsYmFja3M9USx1LmdldEdsb2JhbE9iamVjdHM9ZnVuY3Rpb24oKXtyZXR1cm57Z2xvYmFsU291cmNlczpCLHpvbmVTeW1ib2xFdmVudE5hbWVzOkgsZXZlbnROYW1lczpndCxpc0Jyb3dzZXI6RSxpc01peDpPLGlzTm9kZTpTLFRSVUVfU1RSOmYsRkFMU0VfU1RSOmwsWk9ORV9TWU1CT0xfUFJFRklYOnAsQUREX0VWRU5UX0xJU1RFTkVSX1NUUjphLFJFTU9WRV9FVkVOVF9MSVNURU5FUl9TVFI6Y319fSkpLGZ1bmN0aW9uKHQpe3QuX196b25lX3N5bWJvbF9fbGVnYWN5UGF0Y2g9ZnVuY3Rpb24oKXt2YXIgZT10LlpvbmU7ZS5fX2xvYWRfcGF0Y2goInJlZ2lzdGVyRWxlbWVudCIsKGZ1bmN0aW9uKHQsZSxuKXshZnVuY3Rpb24odCxlKXt2YXIgbj1lLmdldEdsb2JhbE9iamVjdHMoKTsobi5pc0Jyb3dzZXJ8fG4uaXNNaXgpJiYicmVnaXN0ZXJFbGVtZW50ImluIHQuZG9jdW1lbnQmJmUucGF0Y2hDYWxsYmFja3MoZSxkb2N1bWVudCwiRG9jdW1lbnQiLCJyZWdpc3RlckVsZW1lbnQiLFsiY3JlYXRlZENhbGxiYWNrIiwiYXR0YWNoZWRDYWxsYmFjayIsImRldGFjaGVkQ2FsbGJhY2siLCJhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2siXSl9KHQsbil9KSksZS5fX2xvYWRfcGF0Y2goIkV2ZW50VGFyZ2V0TGVnYWN5IiwoZnVuY3Rpb24odCxlLG4pe2t0KHQsbiksX3Qobix0KX0pKX19KCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3d8fCJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZiYmc2VsZnx8Z2xvYmFsKTt2YXIgd3Q9ZCgiem9uZVRhc2siKTtmdW5jdGlvbiB4dCh0LGUsbixyKXt2YXIgbz1udWxsLGk9bnVsbDtuKz1yO3ZhciBhPXt9O2Z1bmN0aW9uIGMoZSl7dmFyIG49ZS5kYXRhO3JldHVybiBuLmFyZ3NbMF09ZnVuY3Rpb24oKXt0cnl7ZS5pbnZva2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZpbmFsbHl7ZS5kYXRhJiZlLmRhdGEuaXNQZXJpb2RpY3x8KCJudW1iZXIiPT10eXBlb2Ygbi5oYW5kbGVJZD9kZWxldGUgYVtuLmhhbmRsZUlkXTpuLmhhbmRsZUlkJiYobi5oYW5kbGVJZFt3dF09bnVsbCkpfX0sbi5oYW5kbGVJZD1vLmFwcGx5KHQsbi5hcmdzKSxlfWZ1bmN0aW9uIHUodCl7cmV0dXJuIGkodC5kYXRhLmhhbmRsZUlkKX1vPU4odCxlKz1yLChmdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24obyxpKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgaVswXSl7dmFyIHM9dihlLGlbMF0se2lzUGVyaW9kaWM6IkludGVydmFsIj09PXIsZGVsYXk6IlRpbWVvdXQiPT09cnx8IkludGVydmFsIj09PXI/aVsxXXx8MDp2b2lkIDAsYXJnczppfSxjLHUpO2lmKCFzKXJldHVybiBzO3ZhciBmPXMuZGF0YS5oYW5kbGVJZDtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGY/YVtmXT1zOmYmJihmW3d0XT1zKSxmJiZmLnJlZiYmZi51bnJlZiYmImZ1bmN0aW9uIj09dHlwZW9mIGYucmVmJiYiZnVuY3Rpb24iPT10eXBlb2YgZi51bnJlZiYmKHMucmVmPWYucmVmLmJpbmQoZikscy51bnJlZj1mLnVucmVmLmJpbmQoZikpLCJudW1iZXIiPT10eXBlb2YgZnx8Zj9mOnN9cmV0dXJuIG4uYXBwbHkodCxpKX19KSksaT1OKHQsbiwoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKG4scil7dmFyIG8saT1yWzBdOyJudW1iZXIiPT10eXBlb2YgaT9vPWFbaV06KG89aSYmaVt3dF0pfHwobz1pKSxvJiYic3RyaW5nIj09dHlwZW9mIG8udHlwZT8ibm90U2NoZWR1bGVkIiE9PW8uc3RhdGUmJihvLmNhbmNlbEZuJiZvLmRhdGEuaXNQZXJpb2RpY3x8MD09PW8ucnVuQ291bnQpJiYoIm51bWJlciI9PXR5cGVvZiBpP2RlbGV0ZSBhW2ldOmkmJihpW3d0XT1udWxsKSxvLnpvbmUuY2FuY2VsVGFzayhvKSk6ZS5hcHBseSh0LHIpfX0pKX1mdW5jdGlvbiBTdCh0LGUpe2lmKCFab25lW2Uuc3ltYm9sKCJwYXRjaEV2ZW50VGFyZ2V0IildKXtmb3IodmFyIG49ZS5nZXRHbG9iYWxPYmplY3RzKCkscj1uLmV2ZW50TmFtZXMsbz1uLnpvbmVTeW1ib2xFdmVudE5hbWVzLGk9bi5UUlVFX1NUUixhPW4uRkFMU0VfU1RSLGM9bi5aT05FX1NZTUJPTF9QUkVGSVgsdT0wO3U8ci5sZW5ndGg7dSsrKXt2YXIgcz1yW3VdLGY9YysocythKSxsPWMrKHMraSk7b1tzXT17fSxvW3NdW2FdPWYsb1tzXVtpXT1sfXZhciBwPXQuRXZlbnRUYXJnZXQ7aWYocCYmcC5wcm90b3R5cGUpcmV0dXJuIGUucGF0Y2hFdmVudFRhcmdldCh0LFtwJiZwLnByb3RvdHlwZV0pLCEwfX1ab25lLl9fbG9hZF9wYXRjaCgibGVnYWN5IiwoZnVuY3Rpb24odCl7dmFyIGU9dFtab25lLl9fc3ltYm9sX18oImxlZ2FjeVBhdGNoIildO2UmJmUoKX0pKSxab25lLl9fbG9hZF9wYXRjaCgidGltZXJzIiwoZnVuY3Rpb24odCl7eHQodCwic2V0IiwiY2xlYXIiLCJUaW1lb3V0IikseHQodCwic2V0IiwiY2xlYXIiLCJJbnRlcnZhbCIpLHh0KHQsInNldCIsImNsZWFyIiwiSW1tZWRpYXRlIil9KSksWm9uZS5fX2xvYWRfcGF0Y2goInJlcXVlc3RBbmltYXRpb25GcmFtZSIsKGZ1bmN0aW9uKHQpe3h0KHQsInJlcXVlc3QiLCJjYW5jZWwiLCJBbmltYXRpb25GcmFtZSIpLHh0KHQsIm1velJlcXVlc3QiLCJtb3pDYW5jZWwiLCJBbmltYXRpb25GcmFtZSIpLHh0KHQsIndlYmtpdFJlcXVlc3QiLCJ3ZWJraXRDYW5jZWwiLCJBbmltYXRpb25GcmFtZSIpfSkpLFpvbmUuX19sb2FkX3BhdGNoKCJibG9ja2luZyIsKGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPVsiYWxlcnQiLCJwcm9tcHQiLCJjb25maXJtIl0scj0wO3I8bi5sZW5ndGg7cisrKU4odCxuW3JdLChmdW5jdGlvbihuLHIsbyl7cmV0dXJuIGZ1bmN0aW9uKHIsaSl7cmV0dXJuIGUuY3VycmVudC5ydW4obix0LGksbyl9fSkpfSkpLFpvbmUuX19sb2FkX3BhdGNoKCJFdmVudFRhcmdldCIsKGZ1bmN0aW9uKHQsZSxuKXshZnVuY3Rpb24odCxlKXtlLnBhdGNoRXZlbnRQcm90b3R5cGUodCxlKX0odCxuKSxTdCh0LG4pO3ZhciByPXQuWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldDtyJiZyLnByb3RvdHlwZSYmbi5wYXRjaEV2ZW50VGFyZ2V0KHQsW3IucHJvdG90eXBlXSksRCgiTXV0YXRpb25PYnNlcnZlciIpLEQoIldlYktpdE11dGF0aW9uT2JzZXJ2ZXIiKSxEKCJJbnRlcnNlY3Rpb25PYnNlcnZlciIpLEQoIkZpbGVSZWFkZXIiKX0pKSxab25lLl9fbG9hZF9wYXRjaCgib25fcHJvcGVydHkiLChmdW5jdGlvbih0LGUsbil7bXQobix0KSxPYmplY3QuZGVmaW5lUHJvcGVydHk9ZnVuY3Rpb24odCxlLG4pe2lmKG90KHQsZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFzc2lnbiB0byByZWFkIG9ubHkgcHJvcGVydHkgJyIrZSsiJyBvZiAiK3QpO3ZhciByPW4uY29uZmlndXJhYmxlO3JldHVybiJwcm90b3R5cGUiIT09ZSYmKG49aXQodCxlLG4pKSxhdCh0LGUsbixyKX0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24obil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbixlW25dKX0pKSx0fSxPYmplY3QuY3JlYXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIm9iamVjdCIhPXR5cGVvZiBlfHxPYmplY3QuaXNGcm96ZW4oZSl8fE9iamVjdC5rZXlzKGUpLmZvckVhY2goKGZ1bmN0aW9uKG4pe2Vbbl09aXQodCxuLGVbbl0pfSkpLGV0KHQsZSl9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I9ZnVuY3Rpb24odCxlKXt2YXIgbj10dCh0LGUpO3JldHVybiBuJiZvdCh0LGUpJiYobi5jb25maWd1cmFibGU9ITEpLG59fSkpLFpvbmUuX19sb2FkX3BhdGNoKCJjdXN0b21FbGVtZW50cyIsKGZ1bmN0aW9uKHQsZSxuKXshZnVuY3Rpb24odCxlKXt2YXIgbj1lLmdldEdsb2JhbE9iamVjdHMoKTsobi5pc0Jyb3dzZXJ8fG4uaXNNaXgpJiZ0LmN1c3RvbUVsZW1lbnRzJiYiY3VzdG9tRWxlbWVudHMiaW4gdCYmZS5wYXRjaENhbGxiYWNrcyhlLHQuY3VzdG9tRWxlbWVudHMsImN1c3RvbUVsZW1lbnRzIiwiZGVmaW5lIixbImNvbm5lY3RlZENhbGxiYWNrIiwiZGlzY29ubmVjdGVkQ2FsbGJhY2siLCJhZG9wdGVkQ2FsbGJhY2siLCJhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2siXSl9KHQsbil9KSksWm9uZS5fX2xvYWRfcGF0Y2goIlhIUiIsKGZ1bmN0aW9uKHQsZSl7IWZ1bmN0aW9uKHQpe3ZhciBmPXQuWE1MSHR0cFJlcXVlc3Q7aWYoZil7dmFyIGw9Zi5wcm90b3R5cGUscD1sW3VdLGg9bFtzXTtpZighcCl7dmFyIGc9dC5YTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0O2lmKGcpe3ZhciB5PWcucHJvdG90eXBlO3A9eVt1XSxoPXlbc119fXZhciBiPSJyZWFkeXN0YXRlY2hhbmdlIixtPSJzY2hlZHVsZWQiLGs9TihsLCJvcGVuIiwoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCxlKXtyZXR1cm4gdFtyXT0wPT1lWzJdLHRbYV09ZVsxXSxrLmFwcGx5KHQsZSl9fSkpLF89ZCgiZmV0Y2hUYXNrQWJvcnRpbmciKSx3PWQoImZldGNoVGFza1NjaGVkdWxpbmciKSx4PU4obCwic2VuZCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7aWYoITA9PT1lLmN1cnJlbnRbd10pcmV0dXJuIHguYXBwbHkodCxuKTtpZih0W3JdKXJldHVybiB4LmFwcGx5KHQsbik7dmFyIG89e3RhcmdldDp0LHVybDp0W2FdLGlzUGVyaW9kaWM6ITEsYXJnczpuLGFib3J0ZWQ6ITF9LGk9digiWE1MSHR0cFJlcXVlc3Quc2VuZCIsTyxvLEUsVCk7dCYmITA9PT10W2NdJiYhby5hYm9ydGVkJiZpLnN0YXRlPT09bSYmaS5pbnZva2UoKX19KSksUz1OKGwsImFib3J0IiwoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCxyKXt2YXIgbz10W25dO2lmKG8mJiJzdHJpbmciPT10eXBlb2Ygby50eXBlKXtpZihudWxsPT1vLmNhbmNlbEZufHxvLmRhdGEmJm8uZGF0YS5hYm9ydGVkKXJldHVybjtvLnpvbmUuY2FuY2VsVGFzayhvKX1lbHNlIGlmKCEwPT09ZS5jdXJyZW50W19dKXJldHVybiBTLmFwcGx5KHQscil9fSkpfWZ1bmN0aW9uIEUodCl7dmFyIGU9dC5kYXRhLHI9ZS50YXJnZXQ7cltpXT0hMSxyW2NdPSExO3ZhciBhPXJbb107cHx8KHA9clt1XSxoPXJbc10pLGEmJmguY2FsbChyLGIsYSk7dmFyIGY9cltvXT1mdW5jdGlvbigpe2lmKHIucmVhZHlTdGF0ZT09PXIuRE9ORSlpZighZS5hYm9ydGVkJiZyW2ldJiZ0LnN0YXRlPT09bSl7dmFyIG49ci5fX3pvbmVfc3ltYm9sX19sb2FkZmFsc2U7aWYobiYmbi5sZW5ndGg+MCl7dmFyIG89dC5pbnZva2U7dC5pbnZva2U9ZnVuY3Rpb24oKXtmb3IodmFyIG49ci5fX3pvbmVfc3ltYm9sX19sb2FkZmFsc2UsaT0wO2k8bi5sZW5ndGg7aSsrKW5baV09PT10JiZuLnNwbGljZShpLDEpO2UuYWJvcnRlZHx8dC5zdGF0ZSE9PW18fG8uY2FsbCh0KX0sbi5wdXNoKHQpfWVsc2UgdC5pbnZva2UoKX1lbHNlIGUuYWJvcnRlZHx8ITEhPT1yW2ldfHwocltjXT0hMCl9O3JldHVybiBwLmNhbGwocixiLGYpLHJbbl18fChyW25dPXQpLHguYXBwbHkocixlLmFyZ3MpLHJbaV09ITAsdH1mdW5jdGlvbiBPKCl7fWZ1bmN0aW9uIFQodCl7dmFyIGU9dC5kYXRhO3JldHVybiBlLmFib3J0ZWQ9ITAsUy5hcHBseShlLnRhcmdldCxlLmFyZ3MpfX0odCk7dmFyIG49ZCgieGhyVGFzayIpLHI9ZCgieGhyU3luYyIpLG89ZCgieGhyTGlzdGVuZXIiKSxpPWQoInhoclNjaGVkdWxlZCIpLGE9ZCgieGhyVVJMIiksYz1kKCJ4aHJFcnJvckJlZm9yZVNjaGVkdWxlZCIpfSkpLFpvbmUuX19sb2FkX3BhdGNoKCJnZW9sb2NhdGlvbiIsKGZ1bmN0aW9uKGUpe2UubmF2aWdhdG9yJiZlLm5hdmlnYXRvci5nZW9sb2NhdGlvbiYmZnVuY3Rpb24oZSxuKXtmb3IodmFyIHI9ZS5jb25zdHJ1Y3Rvci5uYW1lLG89ZnVuY3Rpb24obyl7dmFyIGk9bltvXSxhPWVbaV07aWYoYSl7aWYoIXcodChlLGkpKSlyZXR1cm4iY29udGludWUiO2VbaV09ZnVuY3Rpb24odCl7dmFyIGU9ZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseSh0aGlzLF8oYXJndW1lbnRzLHIrIi4iK2kpKX07cmV0dXJuIEwoZSx0KSxlfShhKX19LGk9MDtpPG4ubGVuZ3RoO2krKylvKGkpfShlLm5hdmlnYXRvci5nZW9sb2NhdGlvbixbImdldEN1cnJlbnRQb3NpdGlvbiIsIndhdGNoUG9zaXRpb24iXSl9KSksWm9uZS5fX2xvYWRfcGF0Y2goIlByb21pc2VSZWplY3Rpb25FdmVudCIsKGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbihlKXtyZXR1cm4gZnVuY3Rpb24obil7WSh0LGUpLmZvckVhY2goKGZ1bmN0aW9uKHIpe3ZhciBvPXQuUHJvbWlzZVJlamVjdGlvbkV2ZW50O2lmKG8pe3ZhciBpPW5ldyBvKGUse3Byb21pc2U6bi5wcm9taXNlLHJlYXNvbjpuLnJlamVjdGlvbn0pO3IuaW52b2tlKGkpfX0pKX19dC5Qcm9taXNlUmVqZWN0aW9uRXZlbnQmJihlW2QoInVuaGFuZGxlZFByb21pc2VSZWplY3Rpb25IYW5kbGVyIildPW4oInVuaGFuZGxlZHJlamVjdGlvbiIpLGVbZCgicmVqZWN0aW9uSGFuZGxlZEhhbmRsZXIiKV09bigicmVqZWN0aW9uaGFuZGxlZCIpKX0pKX0oKX0sIjBlZWYiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9e30ucHJvcGVydHlJc0VudW1lcmFibGUsbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLGk9byYmIXIuY2FsbCh7MToyfSwxKTtlLmY9aT9mdW5jdGlvbih0KXt2YXIgZT1vKHRoaXMsdCk7cmV0dXJuISFlJiZlLmVudW1lcmFibGV9OnJ9LCIwb3VnIjpmdW5jdGlvbih0LGUsbil7bigiZEcvbiIpKCJpdGVyYXRvciIpfSwiMHJ2ciI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oImdscmsiKSxvPW4oIk83NDEiKTt0LmV4cG9ydHM9T2JqZWN0LnNldFByb3RvdHlwZU9mfHwoIl9fcHJvdG9fXyJpbnt9P2Z1bmN0aW9uKCl7dmFyIHQsZT0hMSxuPXt9O3RyeXsodD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdC5wcm90b3R5cGUsIl9fcHJvdG9fXyIpLnNldCkuY2FsbChuLFtdKSxlPW4gaW5zdGFuY2VvZiBBcnJheX1jYXRjaChpKXt9cmV0dXJuIGZ1bmN0aW9uKG4saSl7cmV0dXJuIHIobiksbyhpKSxlP3QuY2FsbChuLGkpOm4uX19wcm90b19fPWksbn19KCk6dm9pZCAwKX0sMTpmdW5jdGlvbih0LGUsbil7bigibVJJcSIpLHQuZXhwb3J0cz1uKCJoTi9nIil9LCIxNFNsIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIlgyVSsiKSxvPW4oImJ1c0UiKSxpPW4oIjBEa3kiKSxhPW4oInRpS3AiKSxjPW4oImttTVYiKSx1PWEoInNwZWNpZXMiKSxzPSFpKChmdW5jdGlvbigpe3ZhciB0PS8uLztyZXR1cm4gdC5leGVjPWZ1bmN0aW9uKCl7dmFyIHQ9W107cmV0dXJuIHQuZ3JvdXBzPXthOiI3In0sdH0sIjciIT09IiIucmVwbGFjZSh0LCIkPGE+Iil9KSksZj0haSgoZnVuY3Rpb24oKXt2YXIgdD0vKD86KS8sZT10LmV4ZWM7dC5leGVjPWZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfTt2YXIgbj0iYWIiLnNwbGl0KHQpO3JldHVybiAyIT09bi5sZW5ndGh8fCJhIiE9PW5bMF18fCJiIiE9PW5bMV19KSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLGwpe3ZhciBwPWEodCksaD0haSgoZnVuY3Rpb24oKXt2YXIgZT17fTtyZXR1cm4gZVtwXT1mdW5jdGlvbigpe3JldHVybiA3fSw3IT0iIlt0XShlKX0pKSx2PWgmJiFpKChmdW5jdGlvbigpe3ZhciBlPSExLG49L2EvO3JldHVybiBuLmV4ZWM9ZnVuY3Rpb24oKXtyZXR1cm4gZT0hMCxudWxsfSwic3BsaXQiPT09dCYmKG4uY29uc3RydWN0b3I9e30sbi5jb25zdHJ1Y3Rvclt1XT1mdW5jdGlvbigpe3JldHVybiBufSksbltwXSgiIiksIWV9KSk7aWYoIWh8fCF2fHwicmVwbGFjZSI9PT10JiYhc3x8InNwbGl0Ij09PXQmJiFmKXt2YXIgZD0vLi9bcF0sZz1uKHAsIiJbdF0sKGZ1bmN0aW9uKHQsZSxuLHIsbyl7cmV0dXJuIGUuZXhlYz09PWM/aCYmIW8/e2RvbmU6ITAsdmFsdWU6ZC5jYWxsKGUsbixyKX06e2RvbmU6ITAsdmFsdWU6dC5jYWxsKG4sZSxyKX06e2RvbmU6ITF9fSkpLHk9Z1sxXTtvKFN0cmluZy5wcm90b3R5cGUsdCxnWzBdKSxvKFJlZ0V4cC5wcm90b3R5cGUscCwyPT1lP2Z1bmN0aW9uKHQsZSl7cmV0dXJuIHkuY2FsbCh0LHRoaXMsZSl9OmZ1bmN0aW9uKHQpe3JldHVybiB5LmNhbGwodCx0aGlzKX0pLGwmJnIoUmVnRXhwLnByb3RvdHlwZVtwXSwic2hhbSIsITApfX19LCIxRTV6IjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigibS9MOCIpLmYsbz1uKCJVVFZTIiksaT1uKCJ0aUtwIikoInRvU3RyaW5nVGFnIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt0JiYhbyh0PW4/dDp0LnByb3RvdHlwZSxpKSYmcih0LGkse2NvbmZpZ3VyYWJsZTohMCx2YWx1ZTplfSl9fSwiMVkvbiI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkhBdU0iKSxvPW4oImV3dlciKSxpPW4oIlJLM3QiKSxhPW4oIlVNU1EiKSxjPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLG4sYyx1KXtyKG4pO3ZhciBzPW8oZSksZj1pKHMpLGw9YShzLmxlbmd0aCkscD10P2wtMTowLGg9dD8tMToxO2lmKGM8Milmb3IoOzspe2lmKHAgaW4gZil7dT1mW3BdLHArPWg7YnJlYWt9aWYocCs9aCx0P3A8MDpsPD1wKXRocm93IFR5cGVFcnJvcigiUmVkdWNlIG9mIGVtcHR5IGFycmF5IHdpdGggbm8gaW5pdGlhbCB2YWx1ZSIpfWZvcig7dD9wPj0wOmw+cDtwKz1oKXAgaW4gZiYmKHU9bih1LGZbcF0scCxzKSk7cmV0dXJuIHV9fTt0LmV4cG9ydHM9e2xlZnQ6YyghMSkscmlnaHQ6YyghMCl9fSwiMkErZCI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPW4oIi9HcVUiKSxpPW4oIlVNU1EiKTtyKHt0YXJnZXQ6IlN0cmluZyIsc3RhdDohMH0se3JhdzpmdW5jdGlvbih0KXtmb3IodmFyIGU9byh0LnJhdyksbj1pKGUubGVuZ3RoKSxyPWFyZ3VtZW50cy5sZW5ndGgsYT1bXSxjPTA7bj5jOylhLnB1c2goU3RyaW5nKGVbYysrXSkpLGM8ciYmYS5wdXNoKFN0cmluZyhhcmd1bWVudHNbY10pKTtyZXR1cm4gYS5qb2luKCIiKX19KX0sIjJCMVIiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigidHljUiIpLm1hcDtyKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6IW4oIkhkNWYiKSgibWFwIil9LHttYXA6ZnVuY3Rpb24odCl7cmV0dXJuIG8odGhpcyx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KX0sIjJvUm8iOmZ1bmN0aW9uKHQsZSl7dmFyIG49Im9iamVjdCIscj1mdW5jdGlvbih0KXtyZXR1cm4gdCYmdC5NYXRoPT1NYXRoJiZ0fTt0LmV4cG9ydHM9cih0eXBlb2YgZ2xvYmFsVGhpcz09biYmZ2xvYmFsVGhpcyl8fHIodHlwZW9mIHdpbmRvdz09biYmd2luZG93KXx8cih0eXBlb2Ygc2VsZj09biYmc2VsZil8fHIodHlwZW9mIGdsb2JhbD09biYmZ2xvYmFsKXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKX0sIjMzV2giOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ5b1JnIiksbz1uKCJlRGwrIik7dC5leHBvcnRzPU9iamVjdC5rZXlzfHxmdW5jdGlvbih0KXtyZXR1cm4gcih0LG8pfX0sIjNJMVIiOmZ1bmN0aW9uKHQsZSxuKXtuKCJkRy9uIikoImhhc0luc3RhbmNlIil9LCIzS2dWIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89bigidXk4MyIpLGk9bigiMERreSIpLGE9bigiaGgxdiIpLGM9bigiOFlPYSIpLm9uRnJlZXplLHU9T2JqZWN0LmZyZWV6ZTtyKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMCxmb3JjZWQ6aSgoZnVuY3Rpb24oKXt1KDEpfSkpLHNoYW06IW99LHtmcmVlemU6ZnVuY3Rpb24odCl7cmV0dXJuIHUmJmEodCk/dShjKHQpKTp0fX0pfSwiM2JCWiI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIjJvUm8iKSxvPW4oIi9ieXQiKSxpPW4oIjRtRG0iKSxhPW4oIlgyVSsiKSxjPW4oInRpS3AiKSx1PWMoIml0ZXJhdG9yIikscz1jKCJ0b1N0cmluZ1RhZyIpLGY9aS52YWx1ZXM7Zm9yKHZhciBsIGluIG8pe3ZhciBwPXJbbF0saD1wJiZwLnByb3RvdHlwZTtpZihoKXtpZihoW3VdIT09Zil0cnl7YShoLHUsZil9Y2F0Y2goZCl7aFt1XT1mfWlmKGhbc118fGEoaCxzLGwpLG9bbF0pZm9yKHZhciB2IGluIGkpaWYoaFt2XSE9PWlbdl0pdHJ5e2EoaCx2LGlbdl0pfWNhdGNoKGQpe2hbdl09aVt2XX19fX0sIjRCcmYiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiZzZ2LyIpLGk9bigiMm9SbyIpLGE9bigiVVRWUyIpLGM9bigiaGgxdiIpLHU9bigibS9MOCIpLmYscz1uKCI2Sk5xIiksZj1pLlN5bWJvbDtpZihvJiYiZnVuY3Rpb24iPT10eXBlb2YgZiYmKCEoImRlc2NyaXB0aW9uImluIGYucHJvdG90eXBlKXx8dm9pZCAwIT09ZigpLmRlc2NyaXB0aW9uKSl7dmFyIGw9e30scD1mdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg8MXx8dm9pZCAwPT09YXJndW1lbnRzWzBdP3ZvaWQgMDpTdHJpbmcoYXJndW1lbnRzWzBdKSxlPXRoaXMgaW5zdGFuY2VvZiBwP25ldyBmKHQpOnZvaWQgMD09PXQ/ZigpOmYodCk7cmV0dXJuIiI9PT10JiYobFtlXT0hMCksZX07cyhwLGYpO3ZhciBoPXAucHJvdG90eXBlPWYucHJvdG90eXBlO2guY29uc3RydWN0b3I9cDt2YXIgdj1oLnRvU3RyaW5nLGQ9IlN5bWJvbCh0ZXN0KSI9PVN0cmluZyhmKCJ0ZXN0IikpLGc9L15TeW1ib2xcKCguKilcKVteKV0rJC87dShoLCJkZXNjcmlwdGlvbiIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXt2YXIgdD1jKHRoaXMpP3RoaXMudmFsdWVPZigpOnRoaXMsZT12LmNhbGwodCk7aWYoYShsLHQpKXJldHVybiIiO3ZhciBuPWQ/ZS5zbGljZSg3LC0xKTplLnJlcGxhY2UoZywiJDEiKTtyZXR1cm4iIj09PW4/dm9pZCAwOm59fSkscih7Z2xvYmFsOiEwLGZvcmNlZDohMH0se1N5bWJvbDpwfSl9fSwiNEhDaSI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIjBEa3kiKSxvPW4oIldKa0oiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHIoKGZ1bmN0aW9uKCl7cmV0dXJuISFvW3RdKCl8fCLigIvCheGgjiIhPSLigIvCheGgjiJbdF0oKXx8b1t0XS5uYW1lIT09dH0pKX19LCI0V09EIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiVVRWUyIpLG89bigiZXd2VyIpLGk9bigiOTNJMCIpLGE9bigiNFhldCIpLGM9aSgiSUVfUFJPVE8iKSx1PU9iamVjdC5wcm90b3R5cGU7dC5leHBvcnRzPWE/T2JqZWN0LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKHQpe3JldHVybiB0PW8odCkscih0LGMpP3RbY106ImZ1bmN0aW9uIj09dHlwZW9mIHQuY29uc3RydWN0b3ImJnQgaW5zdGFuY2VvZiB0LmNvbnN0cnVjdG9yP3QuY29uc3RydWN0b3IucHJvdG90eXBlOnQgaW5zdGFuY2VvZiBPYmplY3Q/dTpudWxsfX0sIjRYZXQiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCIwRGt5Iik7dC5leHBvcnRzPSFyKChmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPW51bGwsT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyB0KSE9PXQucHJvdG90eXBlfSkpfSwiNGgwWSI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPW4oIjBEa3kiKSxpPW4oImhoMXYiKSxhPU9iamVjdC5pc0Zyb3plbjtyKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMCxmb3JjZWQ6bygoZnVuY3Rpb24oKXthKDEpfSkpfSx7aXNGcm96ZW46ZnVuY3Rpb24odCl7cmV0dXJuIWkodCl8fCEhYSYmYSh0KX19KX0sIjRsNjMiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1uKCI1WU9RIik7cih7Z2xvYmFsOiEwLGZvcmNlZDpwYXJzZUludCE9b30se3BhcnNlSW50Om99KX0sIjRtRG0iOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiL0dxVSIpLG89bigiUk5JcyIpLGk9bigiUDR5MSIpLGE9bigiYWZPOCIpLGM9bigiZmRBeSIpLHU9YS5zZXQscz1hLmdldHRlckZvcigiQXJyYXkgSXRlcmF0b3IiKTt0LmV4cG9ydHM9YyhBcnJheSwiQXJyYXkiLChmdW5jdGlvbih0LGUpe3UodGhpcyx7dHlwZToiQXJyYXkgSXRlcmF0b3IiLHRhcmdldDpyKHQpLGluZGV4OjAsa2luZDplfSl9KSwoZnVuY3Rpb24oKXt2YXIgdD1zKHRoaXMpLGU9dC50YXJnZXQsbj10LmtpbmQscj10LmluZGV4Kys7cmV0dXJuIWV8fHI+PWUubGVuZ3RoPyh0LnRhcmdldD12b2lkIDAse3ZhbHVlOnZvaWQgMCxkb25lOiEwfSk6ImtleXMiPT1uP3t2YWx1ZTpyLGRvbmU6ITF9OiJ2YWx1ZXMiPT1uP3t2YWx1ZTplW3JdLGRvbmU6ITF9Ont2YWx1ZTpbcixlW3JdXSxkb25lOiExfX0pLCJ2YWx1ZXMiKSxpLkFyZ3VtZW50cz1pLkFycmF5LG8oImtleXMiKSxvKCJ2YWx1ZXMiKSxvKCJlbnRyaWVzIil9LCI0b1UvIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiMm9SbyIpLmlzRmluaXRlO3QuZXhwb3J0cz1OdW1iZXIuaXNGaW5pdGV8fGZ1bmN0aW9uKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmcih0KX19LCI0c3l3IjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiYnVzRSIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7Zm9yKHZhciBvIGluIGUpcih0LG8sZVtvXSxuKTtyZXR1cm4gdH19LCI1RDVvIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89bigiMERreSIpLGk9bigiaGgxdiIpLGE9T2JqZWN0LmlzU2VhbGVkO3Ioe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLGZvcmNlZDpvKChmdW5jdGlvbigpe2EoMSl9KSl9LHtpc1NlYWxlZDpmdW5jdGlvbih0KXtyZXR1cm4haSh0KXx8ISFhJiZhKHQpfX0pfSwiNURtVyI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPW4oIjBEa3kiKSxpPW4oIi9HcVUiKSxhPW4oIkJzOFYiKS5mLGM9bigiZzZ2LyIpLHU9bygoZnVuY3Rpb24oKXthKDEpfSkpO3Ioe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLGZvcmNlZDohY3x8dSxzaGFtOiFjfSx7Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGEoaSh0KSxlKX19KX0sIjVZT1EiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCIyb1JvIiksbz1uKCJXS2lIIikudHJpbSxpPW4oIldKa0oiKSxhPXIucGFyc2VJbnQsYz0vXlsrLV0/MFtYeF0vLHU9OCE9PWEoaSsiMDgiKXx8MjIhPT1hKGkrIjB4MTYiKTt0LmV4cG9ydHM9dT9mdW5jdGlvbih0LGUpe3ZhciBuPW8oU3RyaW5nKHQpKTtyZXR1cm4gYShuLGU+Pj4wfHwoYy50ZXN0KG4pPzE2OjEwKSl9OmF9LCI1WXorIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIi9HcVUiKSxvPW4oInBwR0IiKSxpPW4oIlVNU1EiKSxhPW4oInN3RkwiKSxjPU1hdGgubWluLHU9W10ubGFzdEluZGV4T2Yscz0hIXUmJjEvWzFdLmxhc3RJbmRleE9mKDEsLTApPDAsZj1hKCJsYXN0SW5kZXhPZiIpO3QuZXhwb3J0cz1zfHxmP2Z1bmN0aW9uKHQpe2lmKHMpcmV0dXJuIHUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHwwO3ZhciBlPXIodGhpcyksbj1pKGUubGVuZ3RoKSxhPW4tMTtmb3IoYXJndW1lbnRzLmxlbmd0aD4xJiYoYT1jKGEsbyhhcmd1bWVudHNbMV0pKSksYTwwJiYoYT1uK2EpO2E+PTA7YS0tKWlmKGEgaW4gZSYmZVthXT09PXQpcmV0dXJuIGF8fDA7cmV0dXJuLTF9OnV9LCI1bWR1IjpmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0KXt0cnl7cmV0dXJue2Vycm9yOiExLHZhbHVlOnQoKX19Y2F0Y2goZSl7cmV0dXJue2Vycm9yOiEwLHZhbHVlOmV9fX19LCI1cytuIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByLG8saSxhLGM9bigiSStlYiIpLHU9bigieERCUiIpLHM9bigiMm9SbyIpLGY9bigiUW85bCIpLGw9bigiL3FtbiIpLHA9bigiYnVzRSIpLGg9bigiNHN5dyIpLHY9bigiMUU1eiIpLGQ9bigiSmlaYiIpLGc9bigiaGgxdiIpLHk9bigiSEF1TSIpLGI9bigiR2FyVSIpLG09bigieHJZSyIpLGs9bigiSW1aTiIpLF89bigiSEg0byIpLHc9bigiU0VCaCIpLHg9bigiTFBTUyIpLnNldCxTPW4oInRYVWciKSxFPW4oInpmbmQiKSxPPW4oIlJONmMiKSxUPW4oIjhHbEwiKSxJPW4oIjVtZHUiKSxqPW4oInM1cEUiKSxNPW4oImFmTzgiKSxQPW4oImxNcTUiKSxEPW4oInRpS3AiKSgic3BlY2llcyIpLFI9TS5nZXQsTj1NLnNldCxBPU0uZ2V0dGVyRm9yKCJQcm9taXNlIiksTD1sLEY9cy5UeXBlRXJyb3Isej1zLmRvY3VtZW50LFo9cy5wcm9jZXNzLEM9cy5mZXRjaCxXPVomJloudmVyc2lvbnMsRz1XJiZXLnY4fHwiIixVPVQuZixIPVUsQj0icHJvY2VzcyI9PW0oWiksSz0hISh6JiZ6LmNyZWF0ZUV2ZW50JiZzLmRpc3BhdGNoRXZlbnQpLFY9UCgiUHJvbWlzZSIsKGZ1bmN0aW9uKCl7dmFyIHQ9TC5yZXNvbHZlKDEpLGU9ZnVuY3Rpb24oKXt9LG49KHQuY29uc3RydWN0b3I9e30pW0RdPWZ1bmN0aW9uKHQpe3QoZSxlKX07cmV0dXJuISgoQnx8ImZ1bmN0aW9uIj09dHlwZW9mIFByb21pc2VSZWplY3Rpb25FdmVudCkmJighdXx8dC5maW5hbGx5KSYmdC50aGVuKGUpaW5zdGFuY2VvZiBuJiYwIT09Ry5pbmRleE9mKCI2LjYiKSYmLTE9PT1qLmluZGV4T2YoIkNocm9tZS82NiIpKX0pKSxYPVZ8fCFfKChmdW5jdGlvbih0KXtMLmFsbCh0KS5jYXRjaCgoZnVuY3Rpb24oKXt9KSl9KSksWT1mdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4hKCFnKHQpfHwiZnVuY3Rpb24iIT10eXBlb2YoZT10LnRoZW4pKSYmZX0scT1mdW5jdGlvbih0LGUsbil7aWYoIWUubm90aWZpZWQpe2Uubm90aWZpZWQ9ITA7dmFyIHI9ZS5yZWFjdGlvbnM7UygoZnVuY3Rpb24oKXtmb3IodmFyIG89ZS52YWx1ZSxpPTE9PWUuc3RhdGUsYT0wO3IubGVuZ3RoPmE7KXt2YXIgYyx1LHMsZj1yW2ErK10sbD1pP2Yub2s6Zi5mYWlsLHA9Zi5yZXNvbHZlLGg9Zi5yZWplY3Qsdj1mLmRvbWFpbjt0cnl7bD8oaXx8KDI9PT1lLnJlamVjdGlvbiYmdHQodCxlKSxlLnJlamVjdGlvbj0xKSwhMD09PWw/Yz1vOih2JiZ2LmVudGVyKCksYz1sKG8pLHYmJih2LmV4aXQoKSxzPSEwKSksYz09PWYucHJvbWlzZT9oKEYoIlByb21pc2UtY2hhaW4gY3ljbGUiKSk6KHU9WShjKSk/dS5jYWxsKGMscCxoKTpwKGMpKTpoKG8pfWNhdGNoKGQpe3YmJiFzJiZ2LmV4aXQoKSxoKGQpfX1lLnJlYWN0aW9ucz1bXSxlLm5vdGlmaWVkPSExLG4mJiFlLnJlamVjdGlvbiYmSih0LGUpfSkpfX0sUT1mdW5jdGlvbih0LGUsbil7dmFyIHIsbztLPygocj16LmNyZWF0ZUV2ZW50KCJFdmVudCIpKS5wcm9taXNlPWUsci5yZWFzb249bixyLmluaXRFdmVudCh0LCExLCEwKSxzLmRpc3BhdGNoRXZlbnQocikpOnI9e3Byb21pc2U6ZSxyZWFzb246bn0sKG89c1sib24iK3RdKT9vKHIpOiJ1bmhhbmRsZWRyZWplY3Rpb24iPT09dCYmTygiVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uIixuKX0sSj1mdW5jdGlvbih0LGUpe3guY2FsbChzLChmdW5jdGlvbigpe3ZhciBuLHI9ZS52YWx1ZTtpZigkKGUpJiYobj1JKChmdW5jdGlvbigpe0I/Wi5lbWl0KCJ1bmhhbmRsZWRSZWplY3Rpb24iLHIsdCk6USgidW5oYW5kbGVkcmVqZWN0aW9uIix0LHIpfSkpLGUucmVqZWN0aW9uPUJ8fCQoZSk/MjoxLG4uZXJyb3IpKXRocm93IG4udmFsdWV9KSl9LCQ9ZnVuY3Rpb24odCl7cmV0dXJuIDEhPT10LnJlamVjdGlvbiYmIXQucGFyZW50fSx0dD1mdW5jdGlvbih0LGUpe3guY2FsbChzLChmdW5jdGlvbigpe0I/Wi5lbWl0KCJyZWplY3Rpb25IYW5kbGVkIix0KTpRKCJyZWplY3Rpb25oYW5kbGVkIix0LGUudmFsdWUpfSkpfSxldD1mdW5jdGlvbih0LGUsbixyKXtyZXR1cm4gZnVuY3Rpb24obyl7dChlLG4sbyxyKX19LG50PWZ1bmN0aW9uKHQsZSxuLHIpe2UuZG9uZXx8KGUuZG9uZT0hMCxyJiYoZT1yKSxlLnZhbHVlPW4sZS5zdGF0ZT0yLHEodCxlLCEwKSl9LHJ0PWZ1bmN0aW9uKHQsZSxuLHIpe2lmKCFlLmRvbmUpe2UuZG9uZT0hMCxyJiYoZT1yKTt0cnl7aWYodD09PW4pdGhyb3cgRigiUHJvbWlzZSBjYW4ndCBiZSByZXNvbHZlZCBpdHNlbGYiKTt2YXIgbz1ZKG4pO28/UygoZnVuY3Rpb24oKXt2YXIgcj17ZG9uZTohMX07dHJ5e28uY2FsbChuLGV0KHJ0LHQscixlKSxldChudCx0LHIsZSkpfWNhdGNoKGkpe250KHQscixpLGUpfX0pKTooZS52YWx1ZT1uLGUuc3RhdGU9MSxxKHQsZSwhMSkpfWNhdGNoKGkpe250KHQse2RvbmU6ITF9LGksZSl9fX07ViYmKEw9ZnVuY3Rpb24odCl7Yih0aGlzLEwsIlByb21pc2UiKSx5KHQpLHIuY2FsbCh0aGlzKTt2YXIgZT1SKHRoaXMpO3RyeXt0KGV0KHJ0LHRoaXMsZSksZXQobnQsdGhpcyxlKSl9Y2F0Y2gobil7bnQodGhpcyxlLG4pfX0sKHI9ZnVuY3Rpb24odCl7Tih0aGlzLHt0eXBlOiJQcm9taXNlIixkb25lOiExLG5vdGlmaWVkOiExLHBhcmVudDohMSxyZWFjdGlvbnM6W10scmVqZWN0aW9uOiExLHN0YXRlOjAsdmFsdWU6dm9pZCAwfSl9KS5wcm90b3R5cGU9aChMLnByb3RvdHlwZSx7dGhlbjpmdW5jdGlvbih0LGUpe3ZhciBuPUEodGhpcykscj1VKHcodGhpcyxMKSk7cmV0dXJuIHIub2s9ImZ1bmN0aW9uIiE9dHlwZW9mIHR8fHQsci5mYWlsPSJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLHIuZG9tYWluPUI/Wi5kb21haW46dm9pZCAwLG4ucGFyZW50PSEwLG4ucmVhY3Rpb25zLnB1c2gociksMCE9bi5zdGF0ZSYmcSh0aGlzLG4sITEpLHIucHJvbWlzZX0sY2F0Y2g6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudGhlbih2b2lkIDAsdCl9fSksbz1mdW5jdGlvbigpe3ZhciB0PW5ldyByLGU9Uih0KTt0aGlzLnByb21pc2U9dCx0aGlzLnJlc29sdmU9ZXQocnQsdCxlKSx0aGlzLnJlamVjdD1ldChudCx0LGUpfSxULmY9VT1mdW5jdGlvbih0KXtyZXR1cm4gdD09PUx8fHQ9PT1pP25ldyBvKHQpOkgodCl9LHV8fCJmdW5jdGlvbiIhPXR5cGVvZiBsfHwoYT1sLnByb3RvdHlwZS50aGVuLHAobC5wcm90b3R5cGUsInRoZW4iLChmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7cmV0dXJuIG5ldyBMKChmdW5jdGlvbih0LGUpe2EuY2FsbChuLHQsZSl9KSkudGhlbih0LGUpfSkpLCJmdW5jdGlvbiI9PXR5cGVvZiBDJiZjKHtnbG9iYWw6ITAsZW51bWVyYWJsZTohMCxmb3JjZWQ6ITB9LHtmZXRjaDpmdW5jdGlvbih0KXtyZXR1cm4gRShMLEMuYXBwbHkocyxhcmd1bWVudHMpKX19KSkpLGMoe2dsb2JhbDohMCx3cmFwOiEwLGZvcmNlZDpWfSx7UHJvbWlzZTpMfSksdihMLCJQcm9taXNlIiwhMSwhMCksZCgiUHJvbWlzZSIpLGk9Zi5Qcm9taXNlLGMoe3RhcmdldDoiUHJvbWlzZSIsc3RhdDohMCxmb3JjZWQ6Vn0se3JlamVjdDpmdW5jdGlvbih0KXt2YXIgZT1VKHRoaXMpO3JldHVybiBlLnJlamVjdC5jYWxsKHZvaWQgMCx0KSxlLnByb21pc2V9fSksYyh7dGFyZ2V0OiJQcm9taXNlIixzdGF0OiEwLGZvcmNlZDp1fHxWfSx7cmVzb2x2ZTpmdW5jdGlvbih0KXtyZXR1cm4gRSh1JiZ0aGlzPT09aT9MOnRoaXMsdCl9fSksYyh7dGFyZ2V0OiJQcm9taXNlIixzdGF0OiEwLGZvcmNlZDpYfSx7YWxsOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj1VKGUpLHI9bi5yZXNvbHZlLG89bi5yZWplY3QsaT1JKChmdW5jdGlvbigpe3ZhciBuPXkoZS5yZXNvbHZlKSxpPVtdLGE9MCxjPTE7ayh0LChmdW5jdGlvbih0KXt2YXIgdT1hKysscz0hMTtpLnB1c2godm9pZCAwKSxjKyssbi5jYWxsKGUsdCkudGhlbigoZnVuY3Rpb24odCl7c3x8KHM9ITAsaVt1XT10LC0tY3x8cihpKSl9KSxvKX0pKSwtLWN8fHIoaSl9KSk7cmV0dXJuIGkuZXJyb3ImJm8oaS52YWx1ZSksbi5wcm9taXNlfSxyYWNlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj1VKGUpLHI9bi5yZWplY3Qsbz1JKChmdW5jdGlvbigpe3ZhciBvPXkoZS5yZXNvbHZlKTtrKHQsKGZ1bmN0aW9uKHQpe28uY2FsbChlLHQpLnRoZW4obi5yZXNvbHZlLHIpfSkpfSkpO3JldHVybiBvLmVycm9yJiZyKG8udmFsdWUpLG4ucHJvbWlzZX19KX0sIjV1SDgiOmZ1bmN0aW9uKHQsZSxuKXtuKCJJK2ViIikoe3RhcmdldDoiTnVtYmVyIixzdGF0OiEwfSx7TUlOX1NBRkVfSU5URUdFUjotOTAwNzE5OTI1NDc0MDk5MX0pfSwiNkpOcSI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIlVUVlMiKSxvPW4oIlZ1ODEiKSxpPW4oIkJzOFYiKSxhPW4oIm0vTDgiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49byhlKSxjPWEuZix1PWkuZixzPTA7czxuLmxlbmd0aDtzKyspe3ZhciBmPW5bc107cih0LGYpfHxjKHQsZix1KGUsZikpfX19LCI2TFdBIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigieHJZSyIpO3QuZXhwb3J0cz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbih0KXtyZXR1cm4iQXJyYXkiPT1yKHQpfX0sIjZWb0UiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ0aUtwIiksbz1uKCJQNHkxIiksaT1yKCJpdGVyYXRvciIpLGE9QXJyYXkucHJvdG90eXBlO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwIT09dCYmKG8uQXJyYXk9PT10fHxhW2ldPT09dCl9fSwiNmhwbiI6ZnVuY3Rpb24odCxlLG4pe24oIlV5ZHkiKSxuKCJlYWp2Iiksbigibi9tVSIpLG4oIlBxT0kiKSxuKCJRTm5wIiksbigiLzV6bSIpLG4oIkNzZ0QiKSxuKCI5bVJXIiksbigiUUZjVCIpLG4oInZBRnMiKSxuKCJhNU5LIiksbigieWlHMyIpLG4oImtOY1UiKSxuKCJLdkdpIiksbigiQW1GTyIpLG4oImVKaVIiKSxuKCJJOXhqIiksbigidGwvdSIpO3ZhciByPW4oIlFvOWwiKTt0LmV4cG9ydHM9ci5NYXRofSwiNnVuSyI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIjBEa3kiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHIoKGZ1bmN0aW9uKCl7dmFyIGU9IiJbdF0oJyInKTtyZXR1cm4gZSE9PWUudG9Mb3dlckNhc2UoKXx8ZS5zcGxpdCgnIicpLmxlbmd0aD4zfSkpfX0sIjcra2QiOmZ1bmN0aW9uKHQsZSxuKXtuKCJkRy9uIikoImlzQ29uY2F0U3ByZWFkYWJsZSIpfSwiNyt6cyI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIlgyVSsiKSxvPW4oIlVlc0wiKSxpPW4oInRpS3AiKSgidG9QcmltaXRpdmUiKSxhPURhdGUucHJvdG90eXBlO2kgaW4gYXx8cihhLGksbyl9LCI3c2JEIjpmdW5jdGlvbih0LGUsbil7bigicWVQViIpLG4oIk5iTisiKSxuKCI4QXlKIiksbigiaTZRRiIpLG4oImtTa28iKSxuKCJXRHNSIiksbigici9WcSIpLG4oIjV1SDgiKSxuKCJ3MXJaIiksbigiSmV2QSIpLG4oInRvQWoiKSxuKCJWQzNMIik7dmFyIHI9bigiUW85bCIpO3QuZXhwb3J0cz1yLk51bWJlcn0sIjhBeUoiOmZ1bmN0aW9uKHQsZSxuKXtuKCJJK2ViIikoe3RhcmdldDoiTnVtYmVyIixzdGF0OiEwfSx7aXNGaW5pdGU6bigiNG9VLyIpfSl9LCI4R2xMIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkhBdU0iKSxvPWZ1bmN0aW9uKHQpe3ZhciBlLG47dGhpcy5wcm9taXNlPW5ldyB0KChmdW5jdGlvbih0LHIpe2lmKHZvaWQgMCE9PWV8fHZvaWQgMCE9PW4pdGhyb3cgVHlwZUVycm9yKCJCYWQgUHJvbWlzZSBjb25zdHJ1Y3RvciIpO2U9dCxuPXJ9KSksdGhpcy5yZXNvbHZlPXIoZSksdGhpcy5yZWplY3Q9cihuKX07dC5leHBvcnRzLmY9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBvKHQpfX0sIjhZT2EiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCIwQksyIiksbz1uKCJoaDF2IiksaT1uKCJVVFZTIiksYT1uKA=="
                },
                {
                    "key": "asdf?polyfills-es5.js?6?3",
                    "type": "binary",
                    "value": "base64:Im0vTDgiKS5mLGM9bigia09PbCIpLHU9bigidXk4MyIpLHM9YygibWV0YSIpLGY9MCxsPU9iamVjdC5pc0V4dGVuc2libGV8fGZ1bmN0aW9uKCl7cmV0dXJuITB9LHA9ZnVuY3Rpb24odCl7YSh0LHMse3ZhbHVlOntvYmplY3RJRDoiTyIrICsrZix3ZWFrRGF0YTp7fX19KX0saD10LmV4cG9ydHM9e1JFUVVJUkVEOiExLGZhc3RLZXk6ZnVuY3Rpb24odCxlKXtpZighbyh0KSlyZXR1cm4ic3ltYm9sIj09dHlwZW9mIHQ/dDooInN0cmluZyI9PXR5cGVvZiB0PyJTIjoiUCIpK3Q7aWYoIWkodCxzKSl7aWYoIWwodCkpcmV0dXJuIkYiO2lmKCFlKXJldHVybiJFIjtwKHQpfXJldHVybiB0W3NdLm9iamVjdElEfSxnZXRXZWFrRGF0YTpmdW5jdGlvbih0LGUpe2lmKCFpKHQscykpe2lmKCFsKHQpKXJldHVybiEwO2lmKCFlKXJldHVybiExO3AodCl9cmV0dXJuIHRbc10ud2Vha0RhdGF9LG9uRnJlZXplOmZ1bmN0aW9uKHQpe3JldHVybiB1JiZoLlJFUVVJUkVEJiZsKHQpJiYhaSh0LHMpJiZwKHQpLHR9fTtyW3NdPSEwfSwiOTBoVyI6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9TWF0aC5zaWdufHxmdW5jdGlvbih0KXtyZXR1cm4gMD09KHQ9K3QpfHx0IT10P3Q6dDwwPy0xOjF9fSwiOTNJMCI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIlZwSVQiKSxvPW4oImtPT2wiKSxpPXIoImtleXMiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGlbdF18fChpW3RdPW8odCkpfX0sIjlMUGoiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiMERreSIpLGk9bigiZXd2VyIpLGE9bigid0U2diIpO3Ioe3RhcmdldDoiRGF0ZSIscHJvdG86ITAsZm9yY2VkOm8oKGZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT1uZXcgRGF0ZShOYU4pLnRvSlNPTigpfHwxIT09RGF0ZS5wcm90b3R5cGUudG9KU09OLmNhbGwoe3RvSVNPU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIDF9fSl9KSl9LHt0b0pTT046ZnVuY3Rpb24odCl7dmFyIGU9aSh0aGlzKSxuPWEoZSk7cmV0dXJuIm51bWJlciIhPXR5cGVvZiBufHxpc0Zpbml0ZShuKT9lLnRvSVNPU3RyaW5nKCk6bnVsbH19KX0sIjlOMjkiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiMVkvbiIpLnJpZ2h0O3Ioe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDpuKCJzd0ZMIikoInJlZHVjZVJpZ2h0Iil9LHtyZWR1Y2VSaWdodDpmdW5jdGlvbih0KXtyZXR1cm4gbyh0aGlzLHQsYXJndW1lbnRzLmxlbmd0aCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSl9LCI5Yko3IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIlpVZDgiKS5jb2RlQXQ7cih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwfSx7Y29kZVBvaW50QXQ6ZnVuY3Rpb24odCl7cmV0dXJuIG8odGhpcyx0KX19KX0sIjlkL3QiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ4cllLIiksbz1uKCJ0aUtwIikoInRvU3RyaW5nVGFnIiksaT0iQXJndW1lbnRzIj09cihmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZSxuLGE7cmV0dXJuIHZvaWQgMD09PXQ/IlVuZGVmaW5lZCI6bnVsbD09PXQ/Ik51bGwiOiJzdHJpbmciPT10eXBlb2Yobj1mdW5jdGlvbih0LGUpe3RyeXtyZXR1cm4gdFtlXX1jYXRjaChuKXt9fShlPU9iamVjdCh0KSxvKSk/bjppP3IoZSk6Ik9iamVjdCI9PShhPXIoZSkpJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5jYWxsZWU/IkFyZ3VtZW50cyI6YX19LCI5bVJXIjpmdW5jdGlvbih0LGUsbil7bigiSStlYiIpKHt0YXJnZXQ6Ik1hdGgiLHN0YXQ6ITB9LHtmcm91bmQ6bigidm80ViIpfSl9LCI5dGIvIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89bigiSTh2aCIpLGk9U3RyaW5nLmZyb21DaGFyQ29kZSxhPVN0cmluZy5mcm9tQ29kZVBvaW50O3Ioe3RhcmdldDoiU3RyaW5nIixzdGF0OiEwLGZvcmNlZDohIWEmJjEhPWEubGVuZ3RofSx7ZnJvbUNvZGVQb2ludDpmdW5jdGlvbih0KXtmb3IodmFyIGUsbj1bXSxyPWFyZ3VtZW50cy5sZW5ndGgsYT0wO3I+YTspe2lmKGU9K2FyZ3VtZW50c1thKytdLG8oZSwxMTE0MTExKSE9PWUpdGhyb3cgUmFuZ2VFcnJvcihlKyIgaXMgbm90IGEgdmFsaWQgY29kZSBwb2ludCIpO24ucHVzaChlPDY1NTM2P2koZSk6aSg1NTI5NisoKGUtPTY1NTM2KT4+MTApLGUlMTAyNCs1NjMyMCkpfXJldHVybiBuLmpvaW4oIiIpfX0pfSxBbUZPOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1uKCIwRGt5IiksaT1uKCJqclV2IiksYT1NYXRoLmFicyxjPU1hdGguZXhwLHU9TWF0aC5FO3Ioe3RhcmdldDoiTWF0aCIsc3RhdDohMCxmb3JjZWQ6bygoZnVuY3Rpb24oKXtyZXR1cm4tMmUtMTchPU1hdGguc2luaCgtMmUtMTcpfSkpfSx7c2luaDpmdW5jdGlvbih0KXtyZXR1cm4gYSh0PSt0KTwxPyhpKHQpLWkoLXQpKS8yOihjKHQtMSktYygtdC0xKSkqKHUvMil9fSl9LEJOTXQ6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJoWHBPIik7cih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDpuKCI2dW5LIikoImJsaW5rIil9LHtibGluazpmdW5jdGlvbigpe3JldHVybiBvKHRoaXMsImJsaW5rIiwiIiwiIil9fSl9LEJUaG86ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJIQXVNIiksbz1uKCJoaDF2IiksaT1bXS5zbGljZSxhPXt9LGM9ZnVuY3Rpb24odCxlLG4pe2lmKCEoZSBpbiBhKSl7Zm9yKHZhciByPVtdLG89MDtvPGU7bysrKXJbb109ImFbIitvKyJdIjthW2VdPUZ1bmN0aW9uKCJDLGEiLCJyZXR1cm4gbmV3IEMoIityLmpvaW4oIiwiKSsiKSIpfXJldHVybiBhW2VdKHQsbil9O3QuZXhwb3J0cz1GdW5jdGlvbi5iaW5kfHxmdW5jdGlvbih0KXt2YXIgZT1yKHRoaXMpLG49aS5jYWxsKGFyZ3VtZW50cywxKSxhPWZ1bmN0aW9uKCl7dmFyIHI9bi5jb25jYXQoaS5jYWxsKGFyZ3VtZW50cykpO3JldHVybiB0aGlzIGluc3RhbmNlb2YgYT9jKGUsci5sZW5ndGgscik6ZS5hcHBseSh0LHIpfTtyZXR1cm4gbyhlLnByb3RvdHlwZSkmJihhLnByb3RvdHlwZT1lLnByb3RvdHlwZSksYX19LCJCWC9iIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiL0dxVSIpLG89bigiSkJ5OCIpLmYsaT17fS50b1N0cmluZyxhPSJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cmJk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzP09iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHdpbmRvdyk6W107dC5leHBvcnRzLmY9ZnVuY3Rpb24odCl7cmV0dXJuIGEmJiJbb2JqZWN0IFdpbmRvd10iPT1pLmNhbGwodCk/ZnVuY3Rpb24odCl7dHJ5e3JldHVybiBvKHQpfWNhdGNoKGUpe3JldHVybiBhLnNsaWNlKCl9fSh0KTpvKHIodCkpfX0sQnM4VjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiZzZ2LyIpLG89bigiMGVlZiIpLGk9bigiWEd3QyIpLGE9bigiL0dxVSIpLGM9bigid0U2diIpLHU9bigiVVRWUyIpLHM9bigiRFBzeCIpLGY9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtlLmY9cj9mOmZ1bmN0aW9uKHQsZSl7aWYodD1hKHQpLGU9YyhlLCEwKSxzKXRyeXtyZXR1cm4gZih0LGUpfWNhdGNoKG4pe31pZih1KHQsZSkpcmV0dXJuIGkoIW8uZi5jYWxsKHQsZSksdFtlXSl9fSxDc2dEOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1uKCJqclV2Iik7cih7dGFyZ2V0OiJNYXRoIixzdGF0OiEwLGZvcmNlZDpvIT1NYXRoLmV4cG0xfSx7ZXhwbTE6b30pfSxERWZ1OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCIyb1JvIik7bigiMUU1eiIpKHIuSlNPTiwiSlNPTiIsITApfSxETXQyOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJVTVNRIiksbz1uKCJFVWphIiksaT1uKCJIWUFGIiksYT1NYXRoLmNlaWwsYz1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxuLGMpe3ZhciB1LHMsZj1TdHJpbmcoaShlKSksbD1mLmxlbmd0aCxwPXZvaWQgMD09PWM/IiAiOlN0cmluZyhjKSxoPXIobik7cmV0dXJuIGg8PWx8fCIiPT1wP2Y6KChzPW8uY2FsbChwLGEoKHU9aC1sKS9wLmxlbmd0aCkpKS5sZW5ndGg+dSYmKHM9cy5zbGljZSgwLHUpKSx0P2YrczpzK2YpfX07dC5leHBvcnRzPXtzdGFydDpjKCExKSxlbmQ6YyghMCl9fSxEUHN4OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJnNnYvIiksbz1uKCIwRGt5IiksaT1uKCJ6Qko0Iik7dC5leHBvcnRzPSFyJiYhbygoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KGkoImRpdiIpLCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pKX0sRFFOYTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiYnVzRSIpLG89RGF0ZS5wcm90b3R5cGUsaT1vLnRvU3RyaW5nLGE9by5nZXRUaW1lO25ldyBEYXRlKE5hTikrIiIhPSJJbnZhbGlkIERhdGUiJiZyKG8sInRvU3RyaW5nIiwoZnVuY3Rpb24oKXt2YXIgdD1hLmNhbGwodGhpcyk7cmV0dXJuIHQ9PXQ/aS5jYWxsKHRoaXMpOiJJbnZhbGlkIERhdGUifSkpfSxFNU5NOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiaFhwTyIpO3Ioe3RhcmdldDoiU3RyaW5nIixwcm90bzohMCxmb3JjZWQ6bigiNnVuSyIpKCJiaWciKX0se2JpZzpmdW5jdGlvbigpe3JldHVybiBvKHRoaXMsImJpZyIsIiIsIiIpfX0pfSxFOVhEOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiMVkvbiIpLmxlZnQ7cih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOm4oInN3RkwiKSgicmVkdWNlIil9LHtyZWR1Y2U6ZnVuY3Rpb24odCl7cmV0dXJuIG8odGhpcyx0LGFyZ3VtZW50cy5sZW5ndGgsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pfSxFTkY5OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHIsbz1uKCIyb1JvIiksaT1uKCI0c3l3IiksYT1uKCI4WU9hIiksYz1uKCJiV0ZoIiksdT1uKCJyS3piIikscz1uKCJoaDF2IiksZj1uKCJhZk84IikuZW5mb3JjZSxsPW4oImY1cDEiKSxwPSFvLkFjdGl2ZVhPYmplY3QmJiJBY3RpdmVYT2JqZWN0ImluIG8saD1PYmplY3QuaXNFeHRlbnNpYmxlLHY9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcyxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1swXTp2b2lkIDApfX0sZD10LmV4cG9ydHM9YygiV2Vha01hcCIsdix1LCEwLCEwKTtpZihsJiZwKXtyPXUuZ2V0Q29uc3RydWN0b3IodiwiV2Vha01hcCIsITApLGEuUkVRVUlSRUQ9ITA7dmFyIGc9ZC5wcm90b3R5cGUseT1nLmRlbGV0ZSxiPWcuaGFzLG09Zy5nZXQsaz1nLnNldDtpKGcse2RlbGV0ZTpmdW5jdGlvbih0KXtpZihzKHQpJiYhaCh0KSl7dmFyIGU9Zih0aGlzKTtyZXR1cm4gZS5mcm96ZW58fChlLmZyb3plbj1uZXcgcikseS5jYWxsKHRoaXMsdCl8fGUuZnJvemVuLmRlbGV0ZSh0KX1yZXR1cm4geS5jYWxsKHRoaXMsdCl9LGhhczpmdW5jdGlvbih0KXtpZihzKHQpJiYhaCh0KSl7dmFyIGU9Zih0aGlzKTtyZXR1cm4gZS5mcm96ZW58fChlLmZyb3plbj1uZXcgciksYi5jYWxsKHRoaXMsdCl8fGUuZnJvemVuLmhhcyh0KX1yZXR1cm4gYi5jYWxsKHRoaXMsdCl9LGdldDpmdW5jdGlvbih0KXtpZihzKHQpJiYhaCh0KSl7dmFyIGU9Zih0aGlzKTtyZXR1cm4gZS5mcm96ZW58fChlLmZyb3plbj1uZXcgciksYi5jYWxsKHRoaXMsdCk/bS5jYWxsKHRoaXMsdCk6ZS5mcm96ZW4uZ2V0KHQpfXJldHVybiBtLmNhbGwodGhpcyx0KX0sc2V0OmZ1bmN0aW9uKHQsZSl7aWYocyh0KSYmIWgodCkpe3ZhciBuPWYodGhpcyk7bi5mcm96ZW58fChuLmZyb3plbj1uZXcgciksYi5jYWxsKHRoaXMsdCk/ay5jYWxsKHRoaXMsdCxlKTpuLmZyb3plbi5zZXQodCxlKX1lbHNlIGsuY2FsbCh0aGlzLHQsZSk7cmV0dXJuIHRoaXN9fSl9fSxFVWphOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigicHBHQiIpLG89bigiSFlBRiIpO3QuZXhwb3J0cz0iIi5yZXBlYXR8fGZ1bmN0aW9uKHQpe3ZhciBlPVN0cmluZyhvKHRoaXMpKSxuPSIiLGk9cih0KTtpZihpPDB8fGk9PTEvMCl0aHJvdyBSYW5nZUVycm9yKCJXcm9uZyBudW1iZXIgb2YgcmVwZXRpdGlvbnMiKTtmb3IoO2k+MDsoaT4+Pj0xKSYmKGUrPWUpKTEmaSYmKG4rPWUpO3JldHVybiBufX0sRW5aeTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjE0U2wiKSxvPW4oIlJPZFAiKSxpPW4oImdscmsiKSxhPW4oIkhZQUYiKSxjPW4oIlNFQmgiKSx1PW4oImlxV1ciKSxzPW4oIlVNU1EiKSxmPW4oIkZNTk0iKSxsPW4oImttTVYiKSxwPW4oIjBEa3kiKSxoPVtdLnB1c2gsdj1NYXRoLm1pbixkPSFwKChmdW5jdGlvbigpe3JldHVybiFSZWdFeHAoNDI5NDk2NzI5NSwieSIpfSkpO3IoInNwbGl0IiwyLChmdW5jdGlvbih0LGUsbil7dmFyIHI7cmV0dXJuIHI9ImMiPT0iYWJiYyIuc3BsaXQoLyhiKSovKVsxXXx8NCE9InRlc3QiLnNwbGl0KC8oPzopLywtMSkubGVuZ3RofHwyIT0iYWIiLnNwbGl0KC8oPzphYikqLykubGVuZ3RofHw0IT0iLiIuc3BsaXQoLyguPykoLj8pLykubGVuZ3RofHwiLiIuc3BsaXQoLygpKCkvKS5sZW5ndGg+MXx8IiIuc3BsaXQoLy4/LykubGVuZ3RoP2Z1bmN0aW9uKHQsbil7dmFyIHI9U3RyaW5nKGEodGhpcykpLGk9dm9pZCAwPT09bj80Mjk0OTY3Mjk1Om4+Pj4wO2lmKDA9PT1pKXJldHVybltdO2lmKHZvaWQgMD09PXQpcmV0dXJuW3JdO2lmKCFvKHQpKXJldHVybiBlLmNhbGwocix0LGkpO2Zvcih2YXIgYyx1LHMsZj1bXSxwPTAsdj1uZXcgUmVnRXhwKHQuc291cmNlLCh0Lmlnbm9yZUNhc2U/ImkiOiIiKSsodC5tdWx0aWxpbmU/Im0iOiIiKSsodC51bmljb2RlPyJ1IjoiIikrKHQuc3RpY2t5PyJ5IjoiIikrImciKTsoYz1sLmNhbGwodixyKSkmJiEoKHU9di5sYXN0SW5kZXgpPnAmJihmLnB1c2goci5zbGljZShwLGMuaW5kZXgpKSxjLmxlbmd0aD4xJiZjLmluZGV4PHIubGVuZ3RoJiZoLmFwcGx5KGYsYy5zbGljZSgxKSkscz1jWzBdLmxlbmd0aCxwPXUsZi5sZW5ndGg+PWkpKTspdi5sYXN0SW5kZXg9PT1jLmluZGV4JiZ2Lmxhc3RJbmRleCsrO3JldHVybiBwPT09ci5sZW5ndGg/IXMmJnYudGVzdCgiIil8fGYucHVzaCgiIik6Zi5wdXNoKHIuc2xpY2UocCkpLGYubGVuZ3RoPmk/Zi5zbGljZSgwLGkpOmZ9OiIwIi5zcGxpdCh2b2lkIDAsMCkubGVuZ3RoP2Z1bmN0aW9uKHQsbil7cmV0dXJuIHZvaWQgMD09PXQmJjA9PT1uP1tdOmUuY2FsbCh0aGlzLHQsbil9OmUsW2Z1bmN0aW9uKGUsbil7dmFyIG89YSh0aGlzKSxpPW51bGw9PWU/dm9pZCAwOmVbdF07cmV0dXJuIHZvaWQgMCE9PWk/aS5jYWxsKGUsbyxuKTpyLmNhbGwoU3RyaW5nKG8pLGUsbil9LGZ1bmN0aW9uKHQsbyl7dmFyIGE9bihyLHQsdGhpcyxvLHIhPT1lKTtpZihhLmRvbmUpcmV0dXJuIGEudmFsdWU7dmFyIGw9aSh0KSxwPVN0cmluZyh0aGlzKSxoPWMobCxSZWdFeHApLGc9bC51bmljb2RlLHk9bmV3IGgoZD9sOiJeKD86IitsLnNvdXJjZSsiKSIsKGwuaWdub3JlQ2FzZT8iaSI6IiIpKyhsLm11bHRpbGluZT8ibSI6IiIpKyhsLnVuaWNvZGU/InUiOiIiKSsoZD8ieSI6ImciKSksYj12b2lkIDA9PT1vPzQyOTQ5NjcyOTU6bz4+PjA7aWYoMD09PWIpcmV0dXJuW107aWYoMD09PXAubGVuZ3RoKXJldHVybiBudWxsPT09Zih5LHApP1twXTpbXTtmb3IodmFyIG09MCxrPTAsXz1bXTtrPHAubGVuZ3RoOyl7eS5sYXN0SW5kZXg9ZD9rOjA7dmFyIHcseD1mKHksZD9wOnAuc2xpY2UoaykpO2lmKG51bGw9PT14fHwodz12KHMoeS5sYXN0SW5kZXgrKGQ/MDprKSkscC5sZW5ndGgpKT09PW0paz11KHAsayxnKTtlbHNle2lmKF8ucHVzaChwLnNsaWNlKG0saykpLF8ubGVuZ3RoPT09YilyZXR1cm4gXztmb3IodmFyIFM9MTtTPD14Lmxlbmd0aC0xO1MrKylpZihfLnB1c2goeFtTXSksXy5sZW5ndGg9PT1iKXJldHVybiBfO2s9bT13fX1yZXR1cm4gXy5wdXNoKHAuc2xpY2UobSkpLF99XX0pLCFkKX0sRXA5STpmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1PYmplY3QuaXN8fGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lPzAhPT10fHwxL3Q9PTEvZTp0IT10JiZlIT1lfX0sRXhvQzpmdW5jdGlvbih0LGUsbil7bigiSStlYiIpKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMH0se3NldFByb3RvdHlwZU9mOm4oIjBydnIiKX0pfSxGOEpSOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigidHljUiIpLmZvckVhY2gsbz1uKCJzd0ZMIik7dC5leHBvcnRzPW8oImZvckVhY2giKT9mdW5jdGlvbih0KXtyZXR1cm4gcih0aGlzLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfTpbXS5mb3JFYWNofSxGRjZsOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZXd2VyIpLG89bigiSTh2aCIpLGk9bigiVU1TUSIpLGE9TWF0aC5taW47dC5leHBvcnRzPVtdLmNvcHlXaXRoaW58fGZ1bmN0aW9uKHQsZSl7dmFyIG49cih0aGlzKSxjPWkobi5sZW5ndGgpLHU9byh0LGMpLHM9byhlLGMpLGY9YXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDAsbD1hKCh2b2lkIDA9PT1mP2M6byhmLGMpKS1zLGMtdSkscD0xO2ZvcihzPHUmJnU8cytsJiYocD0tMSxzKz1sLTEsdSs9bC0xKTtsLS0gPjA7KXMgaW4gbj9uW3VdPW5bc106ZGVsZXRlIG5bdV0sdSs9cCxzKz1wO3JldHVybiBufX0sRk1OTTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigieHJZSyIpLG89bigia21NViIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuPXQuZXhlYztpZigiZnVuY3Rpb24iPT10eXBlb2Ygbil7dmFyIGk9bi5jYWxsKHQsZSk7aWYoIm9iamVjdCIhPXR5cGVvZiBpKXRocm93IFR5cGVFcnJvcigiUmVnRXhwIGV4ZWMgbWV0aG9kIHJldHVybmVkIHNvbWV0aGluZyBvdGhlciB0aGFuIGFuIE9iamVjdCBvciBudWxsIik7cmV0dXJuIGl9aWYoIlJlZ0V4cCIhPT1yKHQpKXRocm93IFR5cGVFcnJvcigiUmVnRXhwI2V4ZWMgY2FsbGVkIG9uIGluY29tcGF0aWJsZSByZWNlaXZlciIpO3JldHVybiBvLmNhbGwodCxlKX19LEZadFA6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIjJvUm8iKSxvPW4oIi9ieXQiKSxpPW4oIkY4SlIiKSxhPW4oIlgyVSsiKTtmb3IodmFyIGMgaW4gbyl7dmFyIHU9cltjXSxzPXUmJnUucHJvdG90eXBlO2lmKHMmJnMuZm9yRWFjaCE9PWkpdHJ5e2EocywiZm9yRWFjaCIsaSl9Y2F0Y2goZil7cy5mb3JFYWNoPWl9fX0sIkcrUngiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCIwR2JZIik7dC5leHBvcnRzPXIoImRvY3VtZW50IiwiZG9jdW1lbnRFbGVtZW50Iil9LEdLVlU6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJoWHBPIik7cih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDpuKCI2dW5LIikoImFuY2hvciIpfSx7YW5jaG9yOmZ1bmN0aW9uKHQpe3JldHVybiBvKHRoaXMsImEiLCJuYW1lIix0KX19KX0sR1JQRjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oImhYcE8iKTtyKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOm4oIjZ1bksiKSgiZm9udHNpemUiKX0se2ZvbnRzaXplOmZ1bmN0aW9uKHQpe3JldHVybiBvKHRoaXMsImZvbnQiLCJzaXplIix0KX19KX0sR1h2ZDpmdW5jdGlvbih0LGUsbil7bigiZEcvbiIpKCJzcGVjaWVzIil9LEdhclU6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IFR5cGVFcnJvcigiSW5jb3JyZWN0ICIrKG4/bisiICI6IiIpKyJpbnZvY2F0aW9uIik7cmV0dXJuIHR9fSxIMHBiOmZ1bmN0aW9uKHQsZSxuKXtuKCJtYTlJIiksbigiMDdkNyIpLG4oInBOTU8iKSxuKCJ0alpNIiksbigiNEJyZiIpLG4oIjNJMVIiKSxuKCI3K2tkIiksbigiMG91ZyIpLG4oIktoc1MiKSxuKCJqdDJGIiksbigiZ09DYiIpLG4oImE1N24iKSxuKCJHWHZkIiksbigiSTFHdyIpLG4oImdYSUsiKSxuKCJsRW91IiksbigiZ2JpVCIpLG4oIkk5eGoiKSxuKCJERWZ1Iik7dmFyIHI9bigiUW85bCIpO3QuZXhwb3J0cz1yLlN5bWJvbH0sSEF1TTpmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBUeXBlRXJyb3IoU3RyaW5nKHQpKyIgaXMgbm90IGEgZnVuY3Rpb24iKTtyZXR1cm4gdH19LEhING86ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oInRpS3AiKSgiaXRlcmF0b3IiKSxvPSExO3RyeXt2YXIgaT0wLGE9e25leHQ6ZnVuY3Rpb24oKXtyZXR1cm57ZG9uZTohIWkrK319LHJldHVybjpmdW5jdGlvbigpe289ITB9fTthW3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LEFycmF5LmZyb20oYSwoZnVuY3Rpb24oKXt0aHJvdyAyfSkpfWNhdGNoKGMpe310LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpZighZSYmIW8pcmV0dXJuITE7dmFyIG49ITE7dHJ5e3ZhciBpPXt9O2lbcl09ZnVuY3Rpb24oKXtyZXR1cm57bmV4dDpmdW5jdGlvbigpe3JldHVybntkb25lOm49ITB9fX19LHQoaSl9Y2F0Y2goYyl7fXJldHVybiBufX0sSFJ4VTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89bigiZzZ2LyIpO3Ioe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLGZvcmNlZDohbyxzaGFtOiFvfSx7ZGVmaW5lUHJvcGVydGllczpuKCJOK2cwIil9KX0sSFlBRjpmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZihudWxsPT10KXRocm93IFR5cGVFcnJvcigiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gIit0KTtyZXR1cm4gdH19LEhkNWY6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIjBEa3kiKSxvPW4oInRpS3AiKSgic3BlY2llcyIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4hcigoZnVuY3Rpb24oKXt2YXIgZT1bXTtyZXR1cm4oZS5jb25zdHJ1Y3Rvcj17fSlbb109ZnVuY3Rpb24oKXtyZXR1cm57Zm9vOjF9fSwxIT09ZVt0XShCb29sZWFuKS5mb299KSl9fSxIc0hBOmZ1bmN0aW9uKHQsZSl7dmFyIG49TWF0aC5sb2c7dC5leHBvcnRzPU1hdGgubG9nMXB8fGZ1bmN0aW9uKHQpe3JldHVybih0PSt0KT4tMWUtOCYmdDwxZS04P3QtdCp0LzI6bigxK3QpfX0sIkkrZWIiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCIyb1JvIiksbz1uKCJCczhWIikuZixpPW4oIlgyVSsiKSxhPW4oImJ1c0UiKSxjPW4oInprNjAiKSx1PW4oIjZKTnEiKSxzPW4oImxNcTUiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgbixmLGwscCxoLHY9dC50YXJnZXQsZD10Lmdsb2JhbCxnPXQuc3RhdDtpZihuPWQ/cjpnP3Jbdl18fGModix7fSk6KHJbdl18fHt9KS5wcm90b3R5cGUpZm9yKGYgaW4gZSl7aWYocD1lW2ZdLGw9dC5ub1RhcmdldEdldD8oaD1vKG4sZikpJiZoLnZhbHVlOm5bZl0sIXMoZD9mOnYrKGc/Ii4iOiIjIikrZix0LmZvcmNlZCkmJnZvaWQgMCE9PWwpe2lmKHR5cGVvZiBwPT10eXBlb2YgbCljb250aW51ZTt1KHAsbCl9KHQuc2hhbXx8bCYmbC5zaGFtKSYmaShwLCJzaGFtIiwhMCksYShuLGYscCx0KX19fSxJMUd3OmZ1bmN0aW9uKHQsZSxuKXtuKCJkRy9uIikoInNwbGl0Iil9LEk4dmg6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oInBwR0IiKSxvPU1hdGgubWF4LGk9TWF0aC5taW47dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49cih0KTtyZXR1cm4gbjwwP28obitlLDApOmkobixlKX19LEk5eGo6ZnVuY3Rpb24odCxlLG4pe24oIjFFNXoiKShNYXRoLCJNYXRoIiwhMCl9LEltWk46ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oImdscmsiKSxvPW4oIjZWb0UiKSxpPW4oIlVNU1EiKSxhPW4oIitNTHgiKSxjPW4oIk5hRlciKSx1PW4oIm05Mm4iKSxzPWZ1bmN0aW9uKHQsZSl7dGhpcy5zdG9wcGVkPXQsdGhpcy5yZXN1bHQ9ZX07KHQuZXhwb3J0cz1mdW5jdGlvbih0LGUsbixmLGwpe3ZhciBwLGgsdixkLGcseSxiPWEoZSxuLGY/MjoxKTtpZihsKXA9dDtlbHNle2lmKCJmdW5jdGlvbiIhPXR5cGVvZihoPWModCkpKXRocm93IFR5cGVFcnJvcigiVGFyZ2V0IGlzIG5vdCBpdGVyYWJsZSIpO2lmKG8oaCkpe2Zvcih2PTAsZD1pKHQubGVuZ3RoKTtkPnY7disrKWlmKChnPWY/YihyKHk9dFt2XSlbMF0seVsxXSk6Yih0W3ZdKSkmJmcgaW5zdGFuY2VvZiBzKXJldHVybiBnO3JldHVybiBuZXcgcyghMSl9cD1oLmNhbGwodCl9Zm9yKDshKHk9cC5uZXh0KCkpLmRvbmU7KWlmKChnPXUocCxiLHkudmFsdWUsZikpJiZnIGluc3RhbmNlb2YgcylyZXR1cm4gZztyZXR1cm4gbmV3IHMoITEpfSkuc3RvcD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IHMoITAsdCl9fSxJeFhSOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiaFhwTyIpO3Ioe3RhcmdldDoiU3RyaW5nIixwcm90bzohMCxmb3JjZWQ6bigiNnVuSyIpKCJzdHJpa2UiKX0se3N0cmlrZTpmdW5jdGlvbigpe3JldHVybiBvKHRoaXMsInN0cmlrZSIsIiIsIiIpfX0pfSxKMzBYOmZ1bmN0aW9uKHQsZSxuKXtuKCJJK2ViIikoe3RhcmdldDoiQXJyYXkiLHN0YXQ6ITB9LHtpc0FycmF5Om4oIjZMV0EiKX0pfSxKQnk4OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ5b1JnIiksbz1uKCJlRGwrIikuY29uY2F0KCJsZW5ndGgiLCJwcm90b3R5cGUiKTtlLmY9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXN8fGZ1bmN0aW9uKHQpe3JldHVybiByKHQsbyl9fSxKVEpnOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiV2pSYiIpLGk9bigiSFlBRiIpO3Ioe3RhcmdldDoiU3RyaW5nIixwcm90bzohMCxmb3JjZWQ6IW4oInF4UFoiKSgiaW5jbHVkZXMiKX0se2luY2x1ZGVzOmZ1bmN0aW9uKHQpe3JldHVybiEhflN0cmluZyhpKHRoaXMpKS5pbmRleE9mKG8odCksYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pfSxKZXZBOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1uKCI1WU9RIik7cih7dGFyZ2V0OiJOdW1iZXIiLHN0YXQ6ITAsZm9yY2VkOk51bWJlci5wYXJzZUludCE9b30se3BhcnNlSW50Om99KX0sSmZBQTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImJ1c0UiKSxvPW4oImdscmsiKSxpPW4oIjBEa3kiKSxhPW4oInJXMHQiKSxjPVJlZ0V4cC5wcm90b3R5cGUsdT1jLnRvU3RyaW5nOyhpKChmdW5jdGlvbigpe3JldHVybiIvYS9iIiE9dS5jYWxsKHtzb3VyY2U6ImEiLGZsYWdzOiJiIn0pfSkpfHwidG9TdHJpbmciIT11Lm5hbWUpJiZyKFJlZ0V4cC5wcm90b3R5cGUsInRvU3RyaW5nIiwoZnVuY3Rpb24oKXt2YXIgdD1vKHRoaXMpLGU9U3RyaW5nKHQuc291cmNlKSxuPXQuZmxhZ3M7cmV0dXJuIi8iK2UrIi8iK1N0cmluZyh2b2lkIDA9PT1uJiZ0IGluc3RhbmNlb2YgUmVnRXhwJiYhKCJmbGFncyJpbiBjKT9hLmNhbGwodCk6bil9KSx7dW5zYWZlOiEwfSl9LEppWmI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIwR2JZIiksbz1uKCJtL0w4IiksaT1uKCJ0aUtwIiksYT1uKCJnNnYvIiksYz1pKCJzcGVjaWVzIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXIodCk7YSYmZSYmIWVbY10mJigwLG8uZikoZSxjLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9fSl9fSxLaHNTOmZ1bmN0aW9uKHQsZSxuKXtuKCJkRy9uIikoIm1hdGNoIil9LEt2OWw6ZnVuY3Rpb24odCxlLG4pe24oIlRXTnMiKSxuKCJKZkFBIiksbigickI5aiIpLG4oIlUzZjQiKSxuKCJSbTFTIiksbigiVXhsQyIpLG4oImhCeVEiKSxuKCJFblp5Iil9LEt2R2k6ZnVuY3Rpb24odCxlLG4pe24oIkkrZWIiKSh7dGFyZ2V0OiJNYXRoIixzdGF0OiEwfSx7c2lnbjpuKCI5MGhXIil9KX0sS3hsZDpmdW5jdGlvbih0LGUsbil7bigiSStlYiIpKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMH0se2lzOm4oIkVwOUkiKX0pfSxMS0J4OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiVU1TUSIpLGk9bigiV2pSYiIpLGE9bigiSFlBRiIpLGM9bigicXhQWiIpLHU9IiIuc3RhcnRzV2l0aCxzPU1hdGgubWluO3Ioe3RhcmdldDoiU3RyaW5nIixwcm90bzohMCxmb3JjZWQ6IWMoInN0YXJ0c1dpdGgiKX0se3N0YXJ0c1dpdGg6ZnVuY3Rpb24odCl7dmFyIGU9U3RyaW5nKGEodGhpcykpO2kodCk7dmFyIG49byhzKGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLGUubGVuZ3RoKSkscj1TdHJpbmcodCk7cmV0dXJuIHU/dS5jYWxsKGUscixuKTplLnNsaWNlKG4sbityLmxlbmd0aCk9PT1yfX0pfSxMUFNTOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcixvLGksYT1uKCIyb1JvIiksYz1uKCIwRGt5IiksdT1uKCJ4cllLIikscz1uKCIrTUx4IiksZj1uKCJHK1J4IiksbD1uKCJ6Qko0IikscD1hLmxvY2F0aW9uLGg9YS5zZXRJbW1lZGlhdGUsdj1hLmNsZWFySW1tZWRpYXRlLGQ9YS5wcm9jZXNzLGc9YS5NZXNzYWdlQ2hhbm5lbCx5PWEuRGlzcGF0Y2gsYj0wLG09e30saz1mdW5jdGlvbih0KXtpZihtLmhhc093blByb3BlcnR5KHQpKXt2YXIgZT1tW3RdO2RlbGV0ZSBtW3RdLGUoKX19LF89ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7ayh0KX19LHc9ZnVuY3Rpb24odCl7ayh0LmRhdGEpfSx4PWZ1bmN0aW9uKHQpe2EucG9zdE1lc3NhZ2UodCsiIixwLnByb3RvY29sKyIvLyIrcC5ob3N0KX07aCYmdnx8KGg9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdLG49MTthcmd1bWVudHMubGVuZ3RoPm47KWUucHVzaChhcmd1bWVudHNbbisrXSk7cmV0dXJuIG1bKytiXT1mdW5jdGlvbigpeygiZnVuY3Rpb24iPT10eXBlb2YgdD90OkZ1bmN0aW9uKHQpKS5hcHBseSh2b2lkIDAsZSl9LHIoYiksYn0sdj1mdW5jdGlvbih0KXtkZWxldGUgbVt0XX0sInByb2Nlc3MiPT11KGQpP3I9ZnVuY3Rpb24odCl7ZC5uZXh0VGljayhfKHQpKX06eSYmeS5ub3c/cj1mdW5jdGlvbih0KXt5Lm5vdyhfKHQpKX06Zz8oaT0obz1uZXcgZykucG9ydDIsby5wb3J0MS5vbm1lc3NhZ2U9dyxyPXMoaS5wb3N0TWVzc2FnZSxpLDEpKTohYS5hZGRFdmVudExpc3RlbmVyfHwiZnVuY3Rpb24iIT10eXBlb2YgcG9zdE1lc3NhZ2V8fGEuaW1wb3J0U2NyaXB0c3x8Yyh4KT9yPSJvbnJlYWR5c3RhdGVjaGFuZ2UiaW4gbCgic2NyaXB0Iik/ZnVuY3Rpb24odCl7Zi5hcHBlbmRDaGlsZChsKCJzY3JpcHQiKSkub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7Zi5yZW1vdmVDaGlsZCh0aGlzKSxrKHQpfX06ZnVuY3Rpb24odCl7c2V0VGltZW91dChfKHQpLDApfToocj14LGEuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsdywhMSkpKSx0LmV4cG9ydHM9e3NldDpoLGNsZWFyOnZ9fSwiTitnMCI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oImc2di8iKSxvPW4oIm0vTDgiKSxpPW4oImdscmsiKSxhPW4oIjMzV2giKTt0LmV4cG9ydHM9cj9PYmplY3QuZGVmaW5lUHJvcGVydGllczpmdW5jdGlvbih0LGUpe2kodCk7Zm9yKHZhciBuLHI9YShlKSxjPXIubGVuZ3RoLHU9MDtjPnU7KW8uZih0LG49clt1KytdLGVbbl0pO3JldHVybiB0fX0sTkJBUzpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89bigiMERreSIpLGk9bigiZXd2VyIpLGE9bigiNFdPRCIpLGM9bigiNFhldCIpO3Ioe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLGZvcmNlZDpvKChmdW5jdGlvbigpe2EoMSl9KSksc2hhbTohY30se2dldFByb3RvdHlwZU9mOmZ1bmN0aW9uKHQpe3JldHVybiBhKGkodCkpfX0pfSxOYUZXOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCI5ZC90Iiksbz1uKCJQNHkxIiksaT1uKCJ0aUtwIikoIml0ZXJhdG9yIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKG51bGwhPXQpcmV0dXJuIHRbaV18fHRbIkBAaXRlcmF0b3IiXXx8b1tyKHQpXX19LCJOYk4rIjpmdW5jdGlvbih0LGUsbil7bigiSStlYiIpKHt0YXJnZXQ6Ik51bWJlciIsc3RhdDohMH0se0VQU0lMT046TWF0aC5wb3coMiwtNTIpfSl9LE83NDE6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oImhoMXYiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoIXIodCkmJm51bGwhPT10KXRocm93IFR5cGVFcnJvcigiQ2FuJ3Qgc2V0ICIrU3RyaW5nKHQpKyIgYXMgYSBwcm90b3R5cGUiKTtyZXR1cm4gdH19LE9NOVo6ZnVuY3Rpb24odCxlLG4pe24oIkkrZWIiKSh7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwfSx7cmVwZWF0Om4oIkVVamEiKX0pfSxQNHkxOmZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPXt9fSxQS1BrOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiWlVkOCIpLmNoYXJBdCxvPW4oImFmTzgiKSxpPW4oImZkQXkiKSxhPW8uc2V0LGM9by5nZXR0ZXJGb3IoIlN0cmluZyBJdGVyYXRvciIpO2koU3RyaW5nLCJTdHJpbmciLChmdW5jdGlvbih0KXthKHRoaXMse3R5cGU6IlN0cmluZyBJdGVyYXRvciIsc3RyaW5nOlN0cmluZyh0KSxpbmRleDowfSl9KSwoZnVuY3Rpb24oKXt2YXIgdCxlPWModGhpcyksbj1lLnN0cmluZyxvPWUuaW5kZXg7cmV0dXJuIG8+PW4ubGVuZ3RoP3t2YWx1ZTp2b2lkIDAsZG9uZTohMH06KHQ9cihuLG8pLGUuaW5kZXgrPXQubGVuZ3RoLHt2YWx1ZTp0LGRvbmU6ITF9KX0pKX0sUHFPSTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89bigiOTBoVyIpLGk9TWF0aC5hYnMsYT1NYXRoLnBvdztyKHt0YXJnZXQ6Ik1hdGgiLHN0YXQ6ITB9LHtjYnJ0OmZ1bmN0aW9uKHQpe3JldHVybiBvKHQ9K3QpKmEoaSh0KSwxLzMpfX0pfSxRRmNUOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1NYXRoLmh5cG90LGk9TWF0aC5hYnMsYT1NYXRoLnNxcnQ7cih7dGFyZ2V0OiJNYXRoIixzdGF0OiEwLGZvcmNlZDohIW8mJm8oMS8wLE5hTikhPT0xLzB9LHtoeXBvdDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbixyLG89MCxjPTAsdT1hcmd1bWVudHMubGVuZ3RoLHM9MDtjPHU7KXM8KG49aShhcmd1bWVudHNbYysrXSkpPyhvPW8qKHI9cy9uKSpyKzEscz1uKTpvKz1uPjA/KHI9bi9zKSpyOm47cmV0dXJuIHM9PT0xLzA/MS8wOnMqYShvKX19KX0sUUlwZDpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigieHJZSyIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZigibnVtYmVyIiE9dHlwZW9mIHQmJiJOdW1iZXIiIT1yKHQpKXRocm93IFR5cGVFcnJvcigiSW5jb3JyZWN0IGludm9jYXRpb24iKTtyZXR1cm4rdH19LFFObnA6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPU1hdGguZmxvb3IsaT1NYXRoLmxvZyxhPU1hdGguTE9HMkU7cih7dGFyZ2V0OiJNYXRoIixzdGF0OiEwfSx7Y2x6MzI6ZnVuY3Rpb24odCl7cmV0dXJuKHQ+Pj49MCk/MzEtbyhpKHQrLjUpKmEpOjMyfX0pfSxRV0JsOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiRjhKUiIpO3Ioe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDpbXS5mb3JFYWNoIT1vfSx7Zm9yRWFjaDpvfSl9LFFvOWw6ZnVuY3Rpb24odCxlLG4pe3QuZXhwb3J0cz1uKCIyb1JvIil9LFJLM3Q6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIjBEa3kiKSxvPW4oInhyWUsiKSxpPSIiLnNwbGl0O3QuZXhwb3J0cz1yKChmdW5jdGlvbigpe3JldHVybiFPYmplY3QoInoiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKX0pKT9mdW5jdGlvbih0KXtyZXR1cm4iU3RyaW5nIj09byh0KT9pLmNhbGwodCwiIik6T2JqZWN0KHQpfTpPYmplY3R9LFJONmM6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIjJvUm8iKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgbj1yLmNvbnNvbGU7biYmbi5lcnJvciYmKDE9PT1hcmd1bWVudHMubGVuZ3RoP24uZXJyb3IodCk6bi5lcnJvcih0LGUpKX19LFJOSXM6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oInRpS3AiKSxvPW4oImZITVkiKSxpPW4oIlgyVSsiKSxhPXIoInVuc2NvcGFibGVzIiksYz1BcnJheS5wcm90b3R5cGU7bnVsbD09Y1thXSYmaShjLGEsbyhudWxsKSksdC5leHBvcnRzPWZ1bmN0aW9uKHQpe2NbYV1bdF09ITB9fSxST2RQOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJoaDF2Iiksbz1uKCJ4cllLIiksaT1uKCJ0aUtwIikoIm1hdGNoIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiByKHQpJiYodm9pZCAwIT09KGU9dFtpXSk/ISFlOiJSZWdFeHAiPT1vKHQpKX19LFJmeHo6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJ0eWNSIikuc29tZTtyKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6bigic3dGTCIpKCJzb21lIil9LHtzb21lOmZ1bmN0aW9uKHQpe3JldHVybiBvKHRoaXMsdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSl9LFJtMVM6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIxNFNsIiksbz1uKCJnbHJrIiksaT1uKCJVTVNRIiksYT1uKCJIWUFGIiksYz1uKCJpcVdXIiksdT1uKCJGTU5NIik7cigibWF0Y2giLDEsKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm5bZnVuY3Rpb24oZSl7dmFyIG49YSh0aGlzKSxyPW51bGw9PWU/dm9pZCAwOmVbdF07cmV0dXJuIHZvaWQgMCE9PXI/ci5jYWxsKGUsbik6bmV3IFJlZ0V4cChlKVt0XShTdHJpbmcobikpfSxmdW5jdGlvbih0KXt2YXIgcj1uKGUsdCx0aGlzKTtpZihyLmRvbmUpcmV0dXJuIHIudmFsdWU7dmFyIGE9byh0KSxzPVN0cmluZyh0aGlzKTtpZighYS5nbG9iYWwpcmV0dXJuIHUoYSxzKTt2YXIgZj1hLnVuaWNvZGU7YS5sYXN0SW5kZXg9MDtmb3IodmFyIGwscD1bXSxoPTA7bnVsbCE9PShsPXUoYSxzKSk7KXt2YXIgdj1TdHJpbmcobFswXSk7cFtoXT12LCIiPT09diYmKGEubGFzdEluZGV4PWMocyxpKGEubGFzdEluZGV4KSxmKSksaCsrfXJldHVybiAwPT09aD9udWxsOnB9XX0pKX0sU0VCaDpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiZ2xyayIpLG89bigiSEF1TSIpLGk9bigidGlLcCIpKCJzcGVjaWVzIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG4sYT1yKHQpLmNvbnN0cnVjdG9yO3JldHVybiB2b2lkIDA9PT1hfHxudWxsPT0obj1yKGEpW2ldKT9lOm8obil9fSxTVEFFOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCIwRGt5Iik7dC5leHBvcnRzPSEhT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmIXIoKGZ1bmN0aW9uKCl7cmV0dXJuIVN0cmluZyhTeW1ib2woKSl9KSl9LFNZb3I6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJXS2lIIikudHJpbTtyKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOm4oIjRIQ2kiKSgidHJpbSIpfSx7dHJpbTpmdW5jdGlvbigpe3JldHVybiBvKHRoaXMpfX0pfSxURlBUOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiaFhwTyIpO3Ioe3RhcmdldDoiU3RyaW5nIixwcm90bzohMCxmb3JjZWQ6bigiNnVuSyIpKCJzdWIiKX0se3N1YjpmdW5jdGlvbigpe3JldHVybiBvKHRoaXMsInN1YiIsIiIsIiIpfX0pfSxUV05zOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJnNnYvIiksbz1uKCIyb1JvIiksaT1uKCJsTXE1IiksYT1uKCJjVllIIiksYz1uKCJtL0w4IikuZix1PW4oIkpCeTgiKS5mLHM9bigiUk9kUCIpLGY9bigiclcwdCIpLGw9bigiYnVzRSIpLHA9bigiMERreSIpLGg9bigiSmlaYiIpLHY9bigidGlLcCIpKCJtYXRjaCIpLGQ9by5SZWdFeHAsZw=="
                },
                {
                    "key": "asdf?polyfills-es5.js?6?4",
                    "type": "binary",
                    "value": "base64:PWQucHJvdG90eXBlLHk9L2EvZyxiPS9hL2csbT1uZXcgZCh5KSE9PXk7aWYociYmaSgiUmVnRXhwIiwhbXx8cCgoZnVuY3Rpb24oKXtyZXR1cm4gYlt2XT0hMSxkKHkpIT15fHxkKGIpPT1ifHwiL2EvaSIhPWQoeSwiaSIpfSkpKSl7Zm9yKHZhciBrPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcyBpbnN0YW5jZW9mIGsscj1zKHQpLG89dm9pZCAwPT09ZTtyZXR1cm4hbiYmciYmdC5jb25zdHJ1Y3Rvcj09PWsmJm8/dDphKG0/bmV3IGQociYmIW8/dC5zb3VyY2U6dCxlKTpkKChyPXQgaW5zdGFuY2VvZiBrKT90LnNvdXJjZTp0LHImJm8/Zi5jYWxsKHQpOmUpLG4/dGhpczpnLGspfSxfPWZ1bmN0aW9uKHQpe3QgaW4ga3x8YyhrLHQse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZFt0XX0sc2V0OmZ1bmN0aW9uKGUpe2RbdF09ZX19KX0sdz11KGQpLHg9MDt3Lmxlbmd0aD54OylfKHdbeCsrXSk7Zy5jb25zdHJ1Y3Rvcj1rLGsucHJvdG90eXBlPWcsbChvLCJSZWdFeHAiLGspfWgoIlJlZ0V4cCIpfSxUV1FiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCIvR3FVIiksbz1uKCJVTVNRIiksaT1uKCJJOHZoIiksYT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxuLGEpe3ZhciBjLHU9cihlKSxzPW8odS5sZW5ndGgpLGY9aShhLHMpO2lmKHQmJm4hPW4pe2Zvcig7cz5mOylpZigoYz11W2YrK10pIT1jKXJldHVybiEwfWVsc2UgZm9yKDtzPmY7ZisrKWlmKCh0fHxmIGluIHUpJiZ1W2ZdPT09bilyZXR1cm4gdHx8Znx8MDtyZXR1cm4hdCYmLTF9fTt0LmV4cG9ydHM9e2luY2x1ZGVzOmEoITApLGluZGV4T2Y6YSghMSl9fSxUZVFGOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigidHljUiIpLmZpbHRlcjtyKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6IW4oIkhkNWYiKSgiZmlsdGVyIil9LHtmaWx0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG8odGhpcyx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KX0sVGZUaTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIitNTHgiKSxvPW4oImV3dlciKSxpPW4oIm05Mm4iKSxhPW4oIjZWb0UiKSxjPW4oIlVNU1EiKSx1PW4oImhCak4iKSxzPW4oIk5hRlciKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGUsbixmLGwscD1vKHQpLGg9ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXM/dGhpczpBcnJheSx2PWFyZ3VtZW50cy5sZW5ndGgsZD12PjE/YXJndW1lbnRzWzFdOnZvaWQgMCxnPXZvaWQgMCE9PWQseT0wLGI9cyhwKTtpZihnJiYoZD1yKGQsdj4yP2FyZ3VtZW50c1syXTp2b2lkIDAsMikpLG51bGw9PWJ8fGg9PUFycmF5JiZhKGIpKWZvcihuPW5ldyBoKGU9YyhwLmxlbmd0aCkpO2U+eTt5KyspdShuLHksZz9kKHBbeV0seSk6cFt5XSk7ZWxzZSBmb3IobD1iLmNhbGwocCksbj1uZXcgaDshKGY9bC5uZXh0KCkpLmRvbmU7eSsrKXUobix5LGc/aShsLGQsW2YudmFsdWUseV0sITApOmYudmFsdWUpO3JldHVybiBuLmxlbmd0aD15LG59fSxUb0p5OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiSEF1TSIpLGk9bigiZXd2VyIpLGE9bigiMERreSIpLGM9bigic3dGTCIpLHU9W10uc29ydCxzPVsxLDIsM10sZj1hKChmdW5jdGlvbigpe3Muc29ydCh2b2lkIDApfSkpLGw9YSgoZnVuY3Rpb24oKXtzLnNvcnQobnVsbCl9KSkscD1jKCJzb3J0Iik7cih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOmZ8fCFsfHxwfSx7c29ydDpmdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dD91LmNhbGwoaSh0aGlzKSk6dS5jYWxsKGkodGhpcyksbyh0KSl9fSl9LFRza3E6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJiV0ZoIiksbz1uKCJaV2FRIik7dC5leHBvcnRzPXIoIk1hcCIsKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0KHRoaXMsYXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMF06dm9pZCAwKX19KSxvLCEwKX0sVTNmNDpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiZzZ2LyIpLG89bigibS9MOCIpLGk9bigiclcwdCIpO3ImJiJnIiE9Ly4vZy5mbGFncyYmby5mKFJlZ0V4cC5wcm90b3R5cGUsImZsYWdzIix7Y29uZmlndXJhYmxlOiEwLGdldDppfSl9LFVNU1E6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oInBwR0IiKSxvPU1hdGgubWluO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdD4wP28ocih0KSw5MDA3MTk5MjU0NzQwOTkxKTowfX0sVVRWUzpmdW5jdGlvbih0LGUpe3ZhciBuPXt9Lmhhc093blByb3BlcnR5O3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiBuLmNhbGwodCxlKX19LFVlc0w6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJnbHJrIiksbz1uKCJ3RTZ2Iik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCJzdHJpbmciIT09dCYmIm51bWJlciIhPT10JiYiZGVmYXVsdCIhPT10KXRocm93IFR5cGVFcnJvcigiSW5jb3JyZWN0IGhpbnQiKTtyZXR1cm4gbyhyKHRoaXMpLCJudW1iZXIiIT09dCl9fSxVeGxDOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMTRTbCIpLG89bigiZ2xyayIpLGk9bigiZXd2VyIpLGE9bigiVU1TUSIpLGM9bigicHBHQiIpLHU9bigiSFlBRiIpLHM9bigiaXFXVyIpLGY9bigiRk1OTSIpLGw9TWF0aC5tYXgscD1NYXRoLm1pbixoPU1hdGguZmxvb3Isdj0vXCQoWyQmJ2BdfFxkXGQ/fDxbXj5dKj4pL2csZD0vXCQoWyQmJ2BdfFxkXGQ/KS9nO3IoInJlcGxhY2UiLDIsKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm5bZnVuY3Rpb24obixyKXt2YXIgbz11KHRoaXMpLGk9bnVsbD09bj92b2lkIDA6blt0XTtyZXR1cm4gdm9pZCAwIT09aT9pLmNhbGwobixvLHIpOmUuY2FsbChTdHJpbmcobyksbixyKX0sZnVuY3Rpb24odCxpKXt2YXIgdT1uKGUsdCx0aGlzLGkpO2lmKHUuZG9uZSlyZXR1cm4gdS52YWx1ZTt2YXIgaD1vKHQpLHY9U3RyaW5nKHRoaXMpLGQ9ImZ1bmN0aW9uIj09dHlwZW9mIGk7ZHx8KGk9U3RyaW5nKGkpKTt2YXIgZz1oLmdsb2JhbDtpZihnKXt2YXIgeT1oLnVuaWNvZGU7aC5sYXN0SW5kZXg9MH1mb3IodmFyIGI9W107Oyl7dmFyIG09ZihoLHYpO2lmKG51bGw9PT1tKWJyZWFrO2lmKGIucHVzaChtKSwhZylicmVhazsiIj09PVN0cmluZyhtWzBdKSYmKGgubGFzdEluZGV4PXModixhKGgubGFzdEluZGV4KSx5KSl9Zm9yKHZhciBrLF89IiIsdz0wLHg9MDt4PGIubGVuZ3RoO3grKyl7bT1iW3hdO2Zvcih2YXIgUz1TdHJpbmcobVswXSksRT1sKHAoYyhtLmluZGV4KSx2Lmxlbmd0aCksMCksTz1bXSxUPTE7VDxtLmxlbmd0aDtUKyspTy5wdXNoKHZvaWQgMD09PShrPW1bVF0pP2s6U3RyaW5nKGspKTt2YXIgST1tLmdyb3VwcztpZihkKXt2YXIgaj1bU10uY29uY2F0KE8sRSx2KTt2b2lkIDAhPT1JJiZqLnB1c2goSSk7dmFyIE09U3RyaW5nKGkuYXBwbHkodm9pZCAwLGopKX1lbHNlIE09cihTLHYsRSxPLEksaSk7RT49dyYmKF8rPXYuc2xpY2UodyxFKStNLHc9RStTLmxlbmd0aCl9cmV0dXJuIF8rdi5zbGljZSh3KX1dO2Z1bmN0aW9uIHIodCxuLHIsbyxhLGMpe3ZhciB1PXIrdC5sZW5ndGgscz1vLmxlbmd0aCxmPWQ7cmV0dXJuIHZvaWQgMCE9PWEmJihhPWkoYSksZj12KSxlLmNhbGwoYyxmLChmdW5jdGlvbihlLGkpe3ZhciBjO3N3aXRjaChpLmNoYXJBdCgwKSl7Y2FzZSIkIjpyZXR1cm4iJCI7Y2FzZSImIjpyZXR1cm4gdDtjYXNlImAiOnJldHVybiBuLnNsaWNlKDAscik7Y2FzZSInIjpyZXR1cm4gbi5zbGljZSh1KTtjYXNlIjwiOmM9YVtpLnNsaWNlKDEsLTEpXTticmVhaztkZWZhdWx0OnZhciBmPStpO2lmKDA9PT1mKXJldHVybiBlO2lmKGY+cyl7dmFyIGw9aChmLzEwKTtyZXR1cm4gMD09PWw/ZTpsPD1zP3ZvaWQgMD09PW9bbC0xXT9pLmNoYXJBdCgxKTpvW2wtMV0raS5jaGFyQXQoMSk6ZX1jPW9bZi0xXX1yZXR1cm4gdm9pZCAwPT09Yz8iIjpjfSkpfX0pKX0sVXlkeTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89bigiSHNIQSIpLGk9TWF0aC5hY29zaCxhPU1hdGgubG9nLGM9TWF0aC5zcXJ0LHU9TWF0aC5MTjI7cih7dGFyZ2V0OiJNYXRoIixzdGF0OiEwLGZvcmNlZDohaXx8NzEwIT1NYXRoLmZsb29yKGkoTnVtYmVyLk1BWF9WQUxVRSkpfHxpKDEvMCkhPTEvMH0se2Fjb3NoOmZ1bmN0aW9uKHQpe3JldHVybih0PSt0KTwxP05hTjp0Pjk0OTA2MjY1LjYyNDI1MTU2P2EodCkrdTpvKHQtMStjKHQtMSkqYyh0KzEpKX19KX0sVkMzTDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIjBEa3kiKSxpPW4oIlFJcGQiKSxhPTEuLnRvUHJlY2lzaW9uO3Ioe3RhcmdldDoiTnVtYmVyIixwcm90bzohMCxmb3JjZWQ6bygoZnVuY3Rpb24oKXtyZXR1cm4iMSIhPT1hLmNhbGwoMSx2b2lkIDApfSkpfHwhbygoZnVuY3Rpb24oKXthLmNhbGwoe30pfSkpfSx7dG9QcmVjaXNpb246ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQ/YS5jYWxsKGkodGhpcykpOmEuY2FsbChpKHRoaXMpLHQpfX0pfSxWcElUOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCIyb1JvIiksbz1uKCJ6azYwIiksaT1uKCJ4REJSIiksYT1yWyJfX2NvcmUtanNfc2hhcmVkX18iXXx8bygiX19jb3JlLWpzX3NoYXJlZF9fIix7fSk7KHQuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiBhW3RdfHwoYVt0XT12b2lkIDAhPT1lP2U6e30pfSkoInZlcnNpb25zIixbXSkucHVzaCh7dmVyc2lvbjoiMy4yLjEiLG1vZGU6aT8icHVyZSI6Imdsb2JhbCIsY29weXJpZ2h0OiLCqSAyMDE5IERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpIn0pfSxWdTgxOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCIwR2JZIiksbz1uKCJKQnk4IiksaT1uKCJkQmcrIiksYT1uKCJnbHJrIik7dC5leHBvcnRzPXIoIlJlZmxlY3QiLCJvd25LZXlzIil8fGZ1bmN0aW9uKHQpe3ZhciBlPW8uZihhKHQpKSxuPWkuZjtyZXR1cm4gbj9lLmNvbmNhdChuKHQpKTplfX0sV0RzUjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89bigiWG9sOCIpLGk9TWF0aC5hYnM7cih7dGFyZ2V0OiJOdW1iZXIiLHN0YXQ6ITB9LHtpc1NhZmVJbnRlZ2VyOmZ1bmN0aW9uKHQpe3JldHVybiBvKHQpJiZpKHQpPD05MDA3MTk5MjU0NzQwOTkxfX0pfSxXSmtKOmZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPSJcdFxuXHZcZlxyIMKg4ZqA4oCA4oCB4oCC4oCD4oCE4oCF4oCG4oCH4oCI4oCJ4oCK4oCv4oGf44CAXHUyMDI4XHUyMDI5XHVmZWZmIn0sV0tpSDpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSFlBRiIpLG89IlsiK24oIldKa0oiKSsiXSIsaT1SZWdFeHAoIl4iK28rbysiKiIpLGE9UmVnRXhwKG8rbysiKiQiKSxjPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgbj1TdHJpbmcocihlKSk7cmV0dXJuIDEmdCYmKG49bi5yZXBsYWNlKGksIiIpKSwyJnQmJihuPW4ucmVwbGFjZShhLCIiKSksbn19O3QuZXhwb3J0cz17c3RhcnQ6YygxKSxlbmQ6YygyKSx0cmltOmMoMyl9fSxXalJiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJST2RQIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKHIodCkpdGhyb3cgVHlwZUVycm9yKCJUaGUgbWV0aG9kIGRvZXNuJ3QgYWNjZXB0IHJlZ3VsYXIgZXhwcmVzc2lvbnMiKTtyZXR1cm4gdH19LCJYMlUrIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiZzZ2LyIpLG89bigibS9MOCIpLGk9bigiWEd3QyIpO3QuZXhwb3J0cz1yP2Z1bmN0aW9uKHQsZSxuKXtyZXR1cm4gby5mKHQsZSxpKDEsbikpfTpmdW5jdGlvbih0LGUsbil7cmV0dXJuIHRbZV09bix0fX0sWEd3QzpmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybntlbnVtZXJhYmxlOiEoMSZ0KSxjb25maWd1cmFibGU6ISgyJnQpLHdyaXRhYmxlOiEoNCZ0KSx2YWx1ZTplfX19LFhlM0w6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCIwRGt5IiksaT1uKCJoQmpOIik7cih7dGFyZ2V0OiJBcnJheSIsc3RhdDohMCxmb3JjZWQ6bygoZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiEoQXJyYXkub2YuY2FsbCh0KWluc3RhbmNlb2YgdCl9KSl9LHtvZjpmdW5jdGlvbigpe2Zvcih2YXIgdD0wLGU9YXJndW1lbnRzLmxlbmd0aCxuPW5ldygiZnVuY3Rpb24iPT10eXBlb2YgdGhpcz90aGlzOkFycmF5KShlKTtlPnQ7KWkobix0LGFyZ3VtZW50c1t0KytdKTtyZXR1cm4gbi5sZW5ndGg9ZSxufX0pfSxYb2w4OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJoaDF2Iiksbz1NYXRoLmZsb29yO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4hcih0KSYmaXNGaW5pdGUodCkmJm8odCk9PT10fX0sWUdLNDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImJXRmgiKSxvPW4oIlpXYVEiKTt0LmV4cG9ydHM9cigiU2V0IiwoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcyxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1swXTp2b2lkIDApfX0pLG8pfSxZTnJWOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZzZ2LyIpLG89bigiMERreSIpLGk9bigiMzNXaCIpLGE9bigiZEJnKyIpLGM9bigiMGVlZiIpLHU9bigiZXd2VyIpLHM9bigiUkszdCIpLGY9T2JqZWN0LmFzc2lnbjt0LmV4cG9ydHM9IWZ8fG8oKGZ1bmN0aW9uKCl7dmFyIHQ9e30sZT17fSxuPVN5bWJvbCgpO3JldHVybiB0W25dPTcsImFiY2RlZmdoaWprbG1ub3BxcnN0Ii5zcGxpdCgiIikuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZVt0XT10fSkpLDchPWYoe30sdClbbl18fCJhYmNkZWZnaGlqa2xtbm9wcXJzdCIhPWkoZih7fSxlKSkuam9pbigiIil9KSk/ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dSh0KSxvPWFyZ3VtZW50cy5sZW5ndGgsZj0xLGw9YS5mLHA9Yy5mO28+ZjspZm9yKHZhciBoLHY9cyhhcmd1bWVudHNbZisrXSksZD1sP2kodikuY29uY2F0KGwodikpOmkodiksZz1kLmxlbmd0aCx5PTA7Zz55OyloPWRbeSsrXSxyJiYhcC5jYWxsKHYsaCl8fChuW2hdPXZbaF0pO3JldHVybiBufTpmfSxaT1hiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMERreSIpLG89bigiRE10MiIpLnN0YXJ0LGk9TWF0aC5hYnMsYT1EYXRlLnByb3RvdHlwZSxjPWEuZ2V0VGltZSx1PWEudG9JU09TdHJpbmc7dC5leHBvcnRzPXIoKGZ1bmN0aW9uKCl7cmV0dXJuIjAzODUtMDctMjVUMDc6MDY6MzkuOTk5WiIhPXUuY2FsbChuZXcgRGF0ZSgtNWUxMy0xKSl9KSl8fCFyKChmdW5jdGlvbigpe3UuY2FsbChuZXcgRGF0ZShOYU4pKX0pKT9mdW5jdGlvbigpe2lmKCFpc0Zpbml0ZShjLmNhbGwodGhpcykpKXRocm93IFJhbmdlRXJyb3IoIkludmFsaWQgdGltZSB2YWx1ZSIpO3ZhciB0PXRoaXMuZ2V0VVRDRnVsbFllYXIoKSxlPXRoaXMuZ2V0VVRDTWlsbGlzZWNvbmRzKCksbj10PDA/Ii0iOnQ+OTk5OT8iKyI6IiI7cmV0dXJuIG4rbyhpKHQpLG4/Njo0LDApKyItIitvKHRoaXMuZ2V0VVRDTW9udGgoKSsxLDIsMCkrIi0iK28odGhpcy5nZXRVVENEYXRlKCksMiwwKSsiVCIrbyh0aGlzLmdldFVUQ0hvdXJzKCksMiwwKSsiOiIrbyh0aGlzLmdldFVUQ01pbnV0ZXMoKSwyLDApKyI6IitvKHRoaXMuZ2V0VVRDU2Vjb25kcygpLDIsMCkrIi4iK28oZSwzLDApKyJaIn06dX0sWlVkODpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigicHBHQiIpLG89bigiSFlBRiIpLGk9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7dmFyIGksYSxjPVN0cmluZyhvKGUpKSx1PXIobikscz1jLmxlbmd0aDtyZXR1cm4gdTwwfHx1Pj1zP3Q/IiI6dm9pZCAwOihpPWMuY2hhckNvZGVBdCh1KSk8NTUyOTZ8fGk+NTYzMTl8fHUrMT09PXN8fChhPWMuY2hhckNvZGVBdCh1KzEpKTw1NjMyMHx8YT41NzM0Mz90P2MuY2hhckF0KHUpOmk6dD9jLnNsaWNlKHUsdSsyKTphLTU2MzIwKyhpLTU1Mjk2PDwxMCkrNjU1MzZ9fTt0LmV4cG9ydHM9e2NvZGVBdDppKCExKSxjaGFyQXQ6aSghMCl9fSxaV2FROmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigibS9MOCIpLmYsbz1uKCJmSE1ZIiksaT1uKCI0c3l3IiksYT1uKCIrTUx4IiksYz1uKCJHYXJVIiksdT1uKCJJbVpOIikscz1uKCJmZEF5IiksZj1uKCJKaVpiIiksbD1uKCJnNnYvIikscD1uKCI4WU9hIikuZmFzdEtleSxoPW4oImFmTzgiKSx2PWguc2V0LGQ9aC5nZXR0ZXJGb3I7dC5leHBvcnRzPXtnZXRDb25zdHJ1Y3RvcjpmdW5jdGlvbih0LGUsbixzKXt2YXIgZj10KChmdW5jdGlvbih0LHIpe2ModCxmLGUpLHYodCx7dHlwZTplLGluZGV4Om8obnVsbCksZmlyc3Q6dm9pZCAwLGxhc3Q6dm9pZCAwLHNpemU6MH0pLGx8fCh0LnNpemU9MCksbnVsbCE9ciYmdShyLHRbc10sdCxuKX0pKSxoPWQoZSksZz1mdW5jdGlvbih0LGUsbil7dmFyIHIsbyxpPWgodCksYT15KHQsZSk7cmV0dXJuIGE/YS52YWx1ZT1uOihpLmxhc3Q9YT17aW5kZXg6bz1wKGUsITApLGtleTplLHZhbHVlOm4scHJldmlvdXM6cj1pLmxhc3QsbmV4dDp2b2lkIDAscmVtb3ZlZDohMX0saS5maXJzdHx8KGkuZmlyc3Q9YSksciYmKHIubmV4dD1hKSxsP2kuc2l6ZSsrOnQuc2l6ZSsrLCJGIiE9PW8mJihpLmluZGV4W29dPWEpKSx0fSx5PWZ1bmN0aW9uKHQsZSl7dmFyIG4scj1oKHQpLG89cChlKTtpZigiRiIhPT1vKXJldHVybiByLmluZGV4W29dO2ZvcihuPXIuZmlyc3Q7bjtuPW4ubmV4dClpZihuLmtleT09ZSlyZXR1cm4gbn07cmV0dXJuIGkoZi5wcm90b3R5cGUse2NsZWFyOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PWgodGhpcyksZT10LmluZGV4LG49dC5maXJzdDtuOyluLnJlbW92ZWQ9ITAsbi5wcmV2aW91cyYmKG4ucHJldmlvdXM9bi5wcmV2aW91cy5uZXh0PXZvaWQgMCksZGVsZXRlIGVbbi5pbmRleF0sbj1uLm5leHQ7dC5maXJzdD10Lmxhc3Q9dm9pZCAwLGw/dC5zaXplPTA6dGhpcy5zaXplPTB9LGRlbGV0ZTpmdW5jdGlvbih0KXt2YXIgZT1oKHRoaXMpLG49eSh0aGlzLHQpO2lmKG4pe3ZhciByPW4ubmV4dCxvPW4ucHJldmlvdXM7ZGVsZXRlIGUuaW5kZXhbbi5pbmRleF0sbi5yZW1vdmVkPSEwLG8mJihvLm5leHQ9ciksciYmKHIucHJldmlvdXM9byksZS5maXJzdD09biYmKGUuZmlyc3Q9ciksZS5sYXN0PT1uJiYoZS5sYXN0PW8pLGw/ZS5zaXplLS06dGhpcy5zaXplLS19cmV0dXJuISFufSxmb3JFYWNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPWgodGhpcykscj1hKHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsMyk7ZT1lP2UubmV4dDpuLmZpcnN0Oylmb3IocihlLnZhbHVlLGUua2V5LHRoaXMpO2UmJmUucmVtb3ZlZDspZT1lLnByZXZpb3VzfSxoYXM6ZnVuY3Rpb24odCl7cmV0dXJuISF5KHRoaXMsdCl9fSksaShmLnByb3RvdHlwZSxuP3tnZXQ6ZnVuY3Rpb24odCl7dmFyIGU9eSh0aGlzLHQpO3JldHVybiBlJiZlLnZhbHVlfSxzZXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZyh0aGlzLDA9PT10PzA6dCxlKX19OnthZGQ6ZnVuY3Rpb24odCl7cmV0dXJuIGcodGhpcyx0PTA9PT10PzA6dCx0KX19KSxsJiZyKGYucHJvdG90eXBlLCJzaXplIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGgodGhpcykuc2l6ZX19KSxmfSxzZXRTdHJvbmc6ZnVuY3Rpb24odCxlLG4pe3ZhciByPWUrIiBJdGVyYXRvciIsbz1kKGUpLGk9ZChyKTtzKHQsZSwoZnVuY3Rpb24odCxlKXt2KHRoaXMse3R5cGU6cix0YXJnZXQ6dCxzdGF0ZTpvKHQpLGtpbmQ6ZSxsYXN0OnZvaWQgMH0pfSksKGZ1bmN0aW9uKCl7Zm9yKHZhciB0PWkodGhpcyksZT10LmtpbmQsbj10Lmxhc3Q7biYmbi5yZW1vdmVkOyluPW4ucHJldmlvdXM7cmV0dXJuIHQudGFyZ2V0JiYodC5sYXN0PW49bj9uLm5leHQ6dC5zdGF0ZS5maXJzdCk/ImtleXMiPT1lP3t2YWx1ZTpuLmtleSxkb25lOiExfToidmFsdWVzIj09ZT97dmFsdWU6bi52YWx1ZSxkb25lOiExfTp7dmFsdWU6W24ua2V5LG4udmFsdWVdLGRvbmU6ITF9Oih0LnRhcmdldD12b2lkIDAse3ZhbHVlOnZvaWQgMCxkb25lOiEwfSl9KSxuPyJlbnRyaWVzIjoidmFsdWVzIiwhbiwhMCksZihlKX19fSxaZkR2OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJoaDF2Iiksbz1uKCI2TFdBIiksaT1uKCJ0aUtwIikoInNwZWNpZXMiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgbjtyZXR1cm4gbyh0KSYmKCJmdW5jdGlvbiIhPXR5cGVvZihuPXQuY29uc3RydWN0b3IpfHxuIT09QXJyYXkmJiFvKG4ucHJvdG90eXBlKT9yKG4pJiZudWxsPT09KG49bltpXSkmJihuPXZvaWQgMCk6bj12b2lkIDApLG5ldyh2b2lkIDA9PT1uP0FycmF5Om4pKDA9PT1lPzA6ZSl9fSxaazhYOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiaFhwTyIpO3Ioe3RhcmdldDoiU3RyaW5nIixwcm90bzohMCxmb3JjZWQ6bigiNnVuSyIpKCJzdXAiKX0se3N1cDpmdW5jdGlvbigpe3JldHVybiBvKHRoaXMsInN1cCIsIiIsIiIpfX0pfSxhNTduOmZ1bmN0aW9uKHQsZSxuKXtuKCJkRy9uIikoInNlYXJjaCIpfSxhNU5LOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1NYXRoLmxvZyxpPU1hdGguTE9HMTBFO3Ioe3RhcmdldDoiTWF0aCIsc3RhdDohMH0se2xvZzEwOmZ1bmN0aW9uKHQpe3JldHVybiBvKHQpKml9fSl9LGFmTzg6ZnVuY3Rpb24odCxlLG4pe3ZhciByLG8saSxhPW4oImY1cDEiKSxjPW4oIjJvUm8iKSx1PW4oImhoMXYiKSxzPW4oIlgyVSsiKSxmPW4oIlVUVlMiKSxsPW4oIjkzSTAiKSxwPW4oIjBCSzIiKTtpZihhKXt2YXIgaD1uZXcoMCxjLldlYWtNYXApLHY9aC5nZXQsZD1oLmhhcyxnPWguc2V0O3I9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZy5jYWxsKGgsdCxlKSxlfSxvPWZ1bmN0aW9uKHQpe3JldHVybiB2LmNhbGwoaCx0KXx8e319LGk9ZnVuY3Rpb24odCl7cmV0dXJuIGQuY2FsbChoLHQpfX1lbHNle3ZhciB5PWwoInN0YXRlIik7cFt5XT0hMCxyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHModCx5LGUpLGV9LG89ZnVuY3Rpb24odCl7cmV0dXJuIGYodCx5KT90W3ldOnt9fSxpPWZ1bmN0aW9uKHQpe3JldHVybiBmKHQseSl9fXQuZXhwb3J0cz17c2V0OnIsZ2V0Om8saGFzOmksZW5mb3JjZTpmdW5jdGlvbih0KXtyZXR1cm4gaSh0KT9vKHQpOnIodCx7fSl9LGdldHRlckZvcjpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG47aWYoIXUoZSl8fChuPW8oZSkpLnR5cGUhPT10KXRocm93IFR5cGVFcnJvcigiSW5jb21wYXRpYmxlIHJlY2VpdmVyLCAiK3QrIiByZXF1aXJlZCIpO3JldHVybiBufX19fSwiYitWVCI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIjJvUm8iKSxvPW4oIldLaUgiKS50cmltLGk9bigiV0prSiIpLGE9ci5wYXJzZUZsb2F0LGM9MS9hKGkrIi0wIikhPS0xLzA7dC5leHBvcnRzPWM/ZnVuY3Rpb24odCl7dmFyIGU9byhTdHJpbmcodCkpLG49YShlKTtyZXR1cm4gMD09PW4mJiItIj09ZS5jaGFyQXQoMCk/LTA6bn06YX0sYldGaDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIjJvUm8iKSxpPW4oImxNcTUiKSxhPW4oImJ1c0UiKSxjPW4oIjhZT2EiKSx1PW4oIkltWk4iKSxzPW4oIkdhclUiKSxmPW4oImhoMXYiKSxsPW4oIjBEa3kiKSxwPW4oIkhING8iKSxoPW4oIjFFNXoiKSx2PW4oImNWWUgiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4sZCxnKXt2YXIgeT1vW3RdLGI9eSYmeS5wcm90b3R5cGUsbT15LGs9ZD8ic2V0IjoiYWRkIixfPXt9LHc9ZnVuY3Rpb24odCl7dmFyIGU9Ylt0XTthKGIsdCwiYWRkIj09dD9mdW5jdGlvbih0KXtyZXR1cm4gZS5jYWxsKHRoaXMsMD09PXQ/MDp0KSx0aGlzfToiZGVsZXRlIj09dD9mdW5jdGlvbih0KXtyZXR1cm4hKGcmJiFmKHQpKSYmZS5jYWxsKHRoaXMsMD09PXQ/MDp0KX06ImdldCI9PXQ/ZnVuY3Rpb24odCl7cmV0dXJuIGcmJiFmKHQpP3ZvaWQgMDplLmNhbGwodGhpcywwPT09dD8wOnQpfToiaGFzIj09dD9mdW5jdGlvbih0KXtyZXR1cm4hKGcmJiFmKHQpKSYmZS5jYWxsKHRoaXMsMD09PXQ/MDp0KX06ZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsMD09PXQ/MDp0LG4pLHRoaXN9KX07aWYoaSh0LCJmdW5jdGlvbiIhPXR5cGVvZiB5fHwhKGd8fGIuZm9yRWFjaCYmIWwoKGZ1bmN0aW9uKCl7KG5ldyB5KS5lbnRyaWVzKCkubmV4dCgpfSkpKSkpbT1uLmdldENvbnN0cnVjdG9yKGUsdCxkLGspLGMuUkVRVUlSRUQ9ITA7ZWxzZSBpZihpKHQsITApKXt2YXIgeD1uZXcgbSxTPXhba10oZz97fTotMCwxKSE9eCxFPWwoKGZ1bmN0aW9uKCl7eC5oYXMoMSl9KSksTz1wKChmdW5jdGlvbih0KXtuZXcgeSh0KX0pKSxUPSFnJiZsKChmdW5jdGlvbigpe2Zvcih2YXIgdD1uZXcgeSxlPTU7ZS0tOyl0W2tdKGUsZSk7cmV0dXJuIXQuaGFzKC0wKX0pKTtPfHwoKG09ZSgoZnVuY3Rpb24oZSxuKXtzKGUsbSx0KTt2YXIgcj12KG5ldyB5LGUsbSk7cmV0dXJuIG51bGwhPW4mJnUobixyW2tdLHIsZCkscn0pKSkucHJvdG90eXBlPWIsYi5jb25zdHJ1Y3Rvcj1tKSwoRXx8VCkmJih3KCJkZWxldGUiKSx3KCJoYXMiKSxkJiZ3KCJnZXQiKSksKFR8fFMpJiZ3KGspLGcmJmIuY2xlYXImJmRlbGV0ZSBiLmNsZWFyfXJldHVybiBfW3RdPW0scih7Z2xvYmFsOiEwLGZvcmNlZDptIT15fSxfKSxoKG0sdCksZ3x8bi5zZXRTdHJvbmcobSx0LGQpLG19fSxicnAyOmZ1bmN0aW9uKHQsZSxuKXtuKCJJK2ViIikoe3RhcmdldDoiRGF0ZSIsc3RhdDohMH0se25vdzpmdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfX0pfSxidXNFOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCIyb1JvIiksbz1uKCJWcElUIiksaT1uKCJYMlUrIiksYT1uKCJVVFZTIiksYz1uKCJ6azYwIiksdT1uKCJub0dvIikscz1uKCJhZk84IiksZj1zLmdldCxsPXMuZW5mb3JjZSxwPVN0cmluZyh1KS5zcGxpdCgidG9TdHJpbmciKTtvKCJpbnNwZWN0U291cmNlIiwoZnVuY3Rpb24odCl7cmV0dXJuIHUuY2FsbCh0KX0pKSwodC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLG8pe3ZhciB1PSEhbyYmISFvLnVuc2FmZSxzPSEhbyYmISFvLmVudW1lcmFibGUsZj0hIW8mJiEhby5ub1RhcmdldEdldDsiZnVuY3Rpb24iPT10eXBlb2YgbiYmKCJzdHJpbmciIT10eXBlb2YgZXx8YShuLCJuYW1lIil8fGkobiwibmFtZSIsZSksbChuKS5zb3VyY2U9cC5qb2luKCJzdHJpbmciPT10eXBlb2YgZT9lOiIiKSksdCE9PXI/KHU/IWYmJnRbZV0mJihzPSEwKTpkZWxldGUgdFtlXSxzP3RbZV09bjppKHQsZSxuKSk6cz90W2VdPW46YyhlLG4pfSkoRnVuY3Rpb24ucHJvdG90eXBlLCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMmJmYodGhpcykuc291cmNlfHx1LmNhbGwodGhpcyl9KSl9LGNEa2U6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPW4oIjBEa3kiKSxpPW4oIkJYL2IiKS5mO3Ioe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLGZvcmNlZDpvKChmdW5jdGlvbigpe3JldHVybiFPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcygxKX0pKX0se2dldE93blByb3BlcnR5TmFtZXM6aX0pfSxjVllIOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJoaDF2Iiksbz1uKCIwcnZyIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaSxhO3JldHVybiBvJiYiZnVuY3Rpb24iPT10eXBlb2YoaT1lLmNvbnN0cnVjdG9yKSYmaSE9PW4mJnIoYT1pLnByb3RvdHlwZSkmJmEhPT1uLnByb3RvdHlwZSYmbyh0LGEpLHR9fSwiZEJnKyI6ZnVuY3Rpb24odCxlKXtlLmY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sc30sImRHL24iOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJRbzlsIiksbz1uKCJVVFZTIiksaT1uKCJ3RExvIiksYT1uKCJtL0w4IikuZjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9ci5TeW1ib2x8fChyLlN5bWJvbD17fSk7byhlLHQpfHxhKGUsdCx7dmFsdWU6aS5mKHQpfSl9fSwiZURsKyI6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9WyJjb25zdHJ1Y3RvciIsImhhc093blByb3BlcnR5IiwiaXNQcm90b3R5cGVPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwidG9Mb2NhbGVTdHJpbmciLCJ0b1N0cmluZyIsInZhbHVlT2YiXX0sZUppUjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89bigianJVdiIpLGk9TWF0aC5leHA7cih7dGFyZ2V0OiJNYXRoIixzdGF0OiEwfSx7dGFuaDpmdW5jdGlvbih0KXt2YXIgZT1vKHQ9K3QpLG49bygtdCk7cmV0dXJuIGU9PTEvMD8xOm49PTEvMD8tMTooZS1uKS8oaSh0KStpKC10KSl9fSl9LGVhanY6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPU1hdGguYXNpbmgsaT1NYXRoLmxvZyxhPU1hdGguc3FydDtyKHt0YXJnZXQ6Ik1hdGgiLHN0YXQ6ITAsZm9yY2VkOiEobyYmMS9vKDApPjApfSx7YXNpbmg6ZnVuY3Rpb24gdChlKXtyZXR1cm4gaXNGaW5pdGUoZT0rZSkmJjAhPWU/ZTwwPy10KC1lKTppKGUrYShlKmUrMSkpOmV9fSl9LGVvTDg6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPW4oImc2di8iKTtyKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMCxmb3JjZWQ6IW8sc2hhbTohb30se2RlZmluZVByb3BlcnR5Om4oIm0vTDgiKS5mfSl9LGV3dlc6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkhZQUYiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdChyKHQpKX19LGY1cDE6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIjJvUm8iKSxvPW4oIm5vR28iKSxpPXIuV2Vha01hcDt0LmV4cG9ydHM9ImZ1bmN0aW9uIj09dHlwZW9mIGkmJi9uYXRpdmUgY29kZS8udGVzdChvLmNhbGwoaSkpfSxmSE1ZOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJnbHJrIiksbz1uKCJOK2cwIiksaT1uKCJlRGwrIiksYT1uKCIwQksyIiksYz1uKCJHK1J4IiksdT1uKCJ6Qko0Iikscz1uKCI5M0kwIikoIklFX1BST1RPIiksZj1mdW5jdGlvbigpe30sbD1mdW5jdGlvbigpe3ZhciB0LGU9dSgiaWZyYW1lIiksbj1pLmxlbmd0aDtmb3IoZS5zdHlsZS5kaXNwbGF5PSJub25lIixjLmFwcGVuZENoaWxkKGUpLGUuc3JjPVN0cmluZygiamF2YXNjcmlwdDoiKSwodD1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQpLm9wZW4oKSx0LndyaXRlKCI8c2NyaXB0PmRvY3VtZW50LkY9T2JqZWN0PFwvc2NyaXB0PiIpLHQuY2xvc2UoKSxsPXQuRjtuLS07KWRlbGV0ZSBsLnByb3RvdHlwZVtpW25dXTtyZXR1cm4gbCgpfTt0LmV4cG9ydHM9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24odCxlKXt2YXIgbjtyZXR1cm4gbnVsbCE9PXQ/KGYucHJvdG90eXBlPXIodCksbj1uZXcgZixmLnByb3RvdHlwZT1udWxsLG5bc109dCk6bj1sKCksdm9pZCAwPT09ZT9uOm8obixlKX0sYVtzXT0hMH0sZmJDVzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oInR5Y1IiKS5maW5kLGk9bigiUk5JcyIpLGE9ITA7ImZpbmQiaW5bXSYmQXJyYXkoMSkuZmluZCgoZnVuY3Rpb24oKXthPSExfSkpLHIoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDphfSx7ZmluZDpmdW5jdGlvbih0KXtyZXR1cm4gbyh0aGlzLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pLGkoImZpbmQiKX0sZmRBeTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIm50T1UiKSxpPW4oIjRXT0QiKSxhPW4oIjBydnIiKSxjPW4oIjFFNXoiKSx1PW4oIlgyVSsiKSxzPW4oImJ1c0UiKSxmPW4oInRpS3AiKSxsPW4oInhEQlIiKSxwPW4oIlA0eTEiKSxoPW4oInJwTmsiKSx2PWguSXRlcmF0b3JQcm90b3R5cGUsZD1oLkJVR0dZX1NBRkFSSV9JVEVSQVRPUlMsZz1mKCJpdGVyYXRvciIpLHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLGYsaCxiLG0pe28obixlLGYpO3ZhciBrLF8sdyx4PWZ1bmN0aW9uKHQpe2lmKHQ9PT1oJiZJKXJldHVybiBJO2lmKCFkJiZ0IGluIE8pcmV0dXJuIE9bdF07c3dpdGNoKHQpe2Nhc2Uia2V5cyI6Y2FzZSJ2YWx1ZXMiOmNhc2UiZW50cmllcyI6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBuKHRoaXMsdCl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgbih0aGlzKX19LFM9ZSsiIEl0ZXJhdG9yIixFPSExLE89dC5wcm90b3R5cGUsVD1PW2ddfHxPWyJAQGl0ZXJhdG9yIl18fGgmJk9baF0sST0hZCYmVHx8eChoKSxqPSJBcnJheSI9PWUmJk8uZW50cmllc3x8VDtpZihqJiYoaz1pKGouY2FsbChuZXcgdCkpLHYhPT1PYmplY3QucHJvdG90eXBlJiZrLm5leHQmJihsfHxpKGspPT09dnx8KGE/YShrLHYpOiJmdW5jdGlvbiIhPXR5cGVvZiBrW2ddJiZ1KGssZyx5KSksYyhrLFMsITAsITApLGwmJihwW1NdPXkpKSksInZhbHVlcyI9PWgmJlQmJiJ2YWx1ZXMiIT09VC5uYW1lJiYoRT0hMCxJPWZ1bmN0aW9uKCl7cmV0dXJuIFQuY2FsbCh0aGlzKX0pLGwmJiFtfHxPW2ddPT09SXx8dShPLGcsSSkscFtlXT1JLGgpaWYoXz17dmFsdWVzOngoInZhbHVlcyIpLGtleXM6Yj9JOngoImtleXMiKSxlbnRyaWVzOngoImVudHJpZXMiKX0sbSlmb3IodyBpbiBfKSFkJiYhRSYmdyBpbiBPfHxzKE8sdyxfW3ddKTtlbHNlIHIoe3RhcmdldDplLHByb3RvOiEwLGZvcmNlZDpkfHxFfSxfKTtyZXR1cm4gX319LGZ0S2c6ZnVuY3Rpb24odCxlLG4pe24oImJycDIiKSxuKCI5TFBqIiksbigick16NyIpLG4oIkRRTmEiKSxuKCI3K3pzIik7dmFyIHI9bigiUW85bCIpO3QuZXhwb3J0cz1yLkRhdGV9LCJnNnYvIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiMERreSIpO3QuZXhwb3J0cz0hcigoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pKX0sZ09DYjpmdW5jdGlvbih0LGUsbil7bigiZEcvbiIpKCJyZXBsYWNlIil9LGdYSUs6ZnVuY3Rpb24odCxlLG4pe24oImRHL24iKSgidG9QcmltaXRpdmUiKX0sZ2JpVDpmdW5jdGlvbih0LGUsbil7bigiZEcvbiIpKCJ1bnNjb3BhYmxlcyIpfSxnZFZsOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZXd2VyIpLG89bigiSTh2aCIpLGk9bigiVU1TUSIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtmb3IodmFyIGU9cih0aGlzKSxuPWkoZS5sZW5ndGgpLGE9YXJndW1lbnRzLmxlbmd0aCxjPW8oYT4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsbiksdT1hPjI/YXJndW1lbnRzWzJdOnZvaWQgMCxzPXZvaWQgMD09PXU/bjpvKHUsbik7cz5jOyllW2MrK109dDtyZXR1cm4gZX19LGdscms6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oImhoMXYiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoIXIodCkpdGhyb3cgVHlwZUVycm9yKFN0cmluZyh0KSsiIGlzIG5vdCBhbiBvYmplY3QiKTtyZXR1cm4gdH19LGhCak46ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJ3RTZ2Iiksbz1uKCJtL0w4IiksaT1uKCJYR3dDIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgYT1yKGUpO2EgaW4gdD9vLmYodCxhLGkoMCxuKSk6dFthXT1ufX0saEJ5UTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjE0U2wiKSxvPW4oImdscmsiKSxpPW4oIkhZQUYiKSxhPW4oIkVwOUkiKSxjPW4oIkZNTk0iKTtyKCJzZWFyY2giLDEsKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm5bZnVuY3Rpb24oZSl7dmFyIG49aSh0aGlzKSxyPW51bGw9PWU/dm9pZCAwOmVbdF07cmV0dXJuIHZvaWQgMCE9PXI/ci5jYWxsKGUsbik6bmV3IFJlZ0V4cChlKVt0XShTdHJpbmcobikpfSxmdW5jdGlvbih0KXt2YXIgcj1uKGUsdCx0aGlzKTtpZihyLmRvbmUpcmV0dXJuIHIudmFsdWU7dmFyIGk9byh0KSx1PVN0cmluZyh0aGlzKSxzPWkubGFzdEluZGV4O2EocywwKXx8KGkubGFzdEluZGV4PTApO3ZhciBmPWMoaSx1KTtyZXR1cm4gYShpLmxhc3RJbmRleCxzKXx8KGkubGFzdEluZGV4PXMpLG51bGw9PT1mPy0xOmYuaW5kZXh9XX0pKX0sImhOL2ciOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLG4oIjBUV3AiKX0saFhwTzpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSFlBRiIpLG89LyIvZzt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4saSl7dmFyIGE9U3RyaW5nKHIodCkpLGM9IjwiK2U7cmV0dXJuIiIhPT1uJiYoYys9IiAiK24rJz0iJytTdHJpbmcoaSkucmVwbGFjZShvLCImcXVvdDsiKSsnIicpLGMrIj4iK2ErIjwvIitlKyI+In19LGhoMXY6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0P251bGwhPT10OiJmdW5jdGlvbiI9PXR5cGVvZiB0fX0saTZRRjpmdW5jdGlvbih0LGUsbil7bigiSStlYiIpKHt0YXJnZXQ6Ik51bWJlciIsc3RhdDohMH0se2lzSW50ZWdlcjpuKCJYb2w4Iil9KX0saW5sQTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIlVNU1EiKSxpPW4oIldqUmIiKSxhPW4oIkhZQUYiKSxjPW4oInF4UFoiKSx1PSIiLmVuZHNXaXRoLHM9TWF0aC5taW47cih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDohYygiZW5kc1dpdGgiKX0se2VuZHNXaXRoOmZ1bmN0aW9uKHQpe3ZhciBlPVN0cmluZyhhKHRoaXMpKTtpKHQpO3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLHI9byhlLmxlbmd0aCksYz12b2lkIDA9PT1uP3I6cyhvKG4pLHIpLGY9U3RyaW5nKHQpO3JldHVybiB1P3UuY2FsbChlLGYsYyk6ZS5zbGljZShjLWYubGVuZ3RoLGMpPT09Zn19KX0saXFXVzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIlpVZDgiKS5jaGFyQXQ7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gZSsobj9yKHQsZSkubGVuZ3RoOjEpfX0sanJVdjpmdW5jdGlvbih0LGUpe3ZhciBuPU1hdGguZXhwbTEscj1NYXRoLmV4cDt0LmV4cG9ydHM9IW58fG4oMTApPjIyMDI1LjQ2NTc5NDgwNjcxOHx8bigxMCk8MjIwMjUuNDY1Nzk0ODA2NzE4fHwtMmUtMTchPW4oLTJlLTE3KT9mdW5jdGlvbih0KXtyZXR1cm4gMD09KHQ9K3QpP3Q6dD4tMWUtNiYmdDwxZS02P3QrdCp0LzI6cih0KS0xfTpufSxqdDJGOmZ1bmN0aW9uKHQsZSxuKXtuKCJkRy9uIikoIm1hdGNoQWxsIil9LGtOY1U6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPU1hdGgubG9nLGk9TWF0aC5MTjI7cih7dGFyZ2V0OiJNYXRoIixzdGF0OiEwfSx7bG9nMjpmdW5jdGlvbih0KXtyZXR1cm4gbyh0KS9pfX0pfSxrT09sOmZ1bmN0aW9uKHQsZSl7dmFyIG49MCxyPU1hdGgucmFuZG9tKCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiJTeW1ib2woIitTdHJpbmcodm9pZCAwPT09dD8iIjp0KSsiKV8iKygrK24rcikudG9TdHJpbmcoMzYpfX0sa1NrbzpmdW5jdGlvbih0LGUsbil7bigiSStlYiIpKHt0YXJnZXQ6Ik51bWJlciIsc3RhdDohMH0se2lzTmFOOmZ1bmN0aW9uKHQpe3JldHVybiB0IT10fX0pfSxrbU1WOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHIsbyxpPW4oInJXMHQiKSxhPVJlZ0V4cC5wcm90b3R5cGUuZXhlYyxjPVN0cmluZy5wcm90b3R5cGUucmVwbGFjZSx1PWEscz0obz0vYiovZyxhLmNhbGwocj0vYS8sImEiKSxhLmNhbGwobywiYSIpLDAhPT1yLmxhc3RJbmRleHx8MCE9PW8ubGFzdEluZGV4KSxmPXZvaWQgMCE9PS8oKT8/Ly5leGVjKCIiKVsxXTsoc3x8ZikmJih1PWZ1bmN0aQ=="
                },
                {
                    "key": "asdf?polyfills-es5.js?6?5",
                    "type": "binary",
                    "value": "base64:b24odCl7dmFyIGUsbixyLG8sdT10aGlzO3JldHVybiBmJiYobj1uZXcgUmVnRXhwKCJeIit1LnNvdXJjZSsiJCg/IVxccykiLGkuY2FsbCh1KSkpLHMmJihlPXUubGFzdEluZGV4KSxyPWEuY2FsbCh1LHQpLHMmJnImJih1Lmxhc3RJbmRleD11Lmdsb2JhbD9yLmluZGV4K3JbMF0ubGVuZ3RoOmUpLGYmJnImJnIubGVuZ3RoPjEmJmMuY2FsbChyWzBdLG4sKGZ1bmN0aW9uKCl7Zm9yKG89MTtvPGFyZ3VtZW50cy5sZW5ndGgtMjtvKyspdm9pZCAwPT09YXJndW1lbnRzW29dJiYocltvXT12b2lkIDApfSkpLHJ9KSx0LmV4cG9ydHM9dX0sbDJkSzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oImhYcE8iKTtyKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOm4oIjZ1bksiKSgiZm9udGNvbG9yIil9LHtmb250Y29sb3I6ZnVuY3Rpb24odCl7cmV0dXJuIG8odGhpcywiZm9udCIsImNvbG9yIix0KX19KX0sbEVvdTpmdW5jdGlvbih0LGUsbil7bigiZEcvbiIpKCJ0b1N0cmluZ1RhZyIpfSxsTXE1OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCIwRGt5Iiksbz0vI3xcLnByb3RvdHlwZVwuLyxpPWZ1bmN0aW9uKHQsZSl7dmFyIG49Y1thKHQpXTtyZXR1cm4gbj09c3x8biE9dSYmKCJmdW5jdGlvbiI9PXR5cGVvZiBlP3IoZSk6ISFlKX0sYT1pLm5vcm1hbGl6ZT1mdW5jdGlvbih0KXtyZXR1cm4gU3RyaW5nKHQpLnJlcGxhY2UobywiLiIpLnRvTG93ZXJDYXNlKCl9LGM9aS5kYXRhPXt9LHU9aS5OQVRJVkU9Ik4iLHM9aS5QT0xZRklMTD0iUCI7dC5leHBvcnRzPWl9LGxzODI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPWZ1bmN0aW9uKHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgZSxuPU9iamVjdC5wcm90b3R5cGUscj1uLmhhc093blByb3BlcnR5LG89ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30saT1vLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsYT1vLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLGM9by50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIHUodCxlLG4scil7dmFyIG89T2JqZWN0LmNyZWF0ZSgoZSYmZS5wcm90b3R5cGUgaW5zdGFuY2VvZiBkP2U6ZCkucHJvdG90eXBlKSxpPW5ldyBUKHJ8fFtdKTtyZXR1cm4gby5faW52b2tlPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1mO3JldHVybiBmdW5jdGlvbihvLGkpe2lmKHI9PT1wKXRocm93IG5ldyBFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO2lmKHI9PT1oKXtpZigidGhyb3ciPT09byl0aHJvdyBpO3JldHVybiBqKCl9Zm9yKG4ubWV0aG9kPW8sbi5hcmc9aTs7KXt2YXIgYT1uLmRlbGVnYXRlO2lmKGEpe3ZhciBjPVMoYSxuKTtpZihjKXtpZihjPT09diljb250aW51ZTtyZXR1cm4gY319aWYoIm5leHQiPT09bi5tZXRob2Qpbi5zZW50PW4uX3NlbnQ9bi5hcmc7ZWxzZSBpZigidGhyb3ciPT09bi5tZXRob2Qpe2lmKHI9PT1mKXRocm93IHI9aCxuLmFyZztuLmRpc3BhdGNoRXhjZXB0aW9uKG4uYXJnKX1lbHNlInJldHVybiI9PT1uLm1ldGhvZCYmbi5hYnJ1cHQoInJldHVybiIsbi5hcmcpO3I9cDt2YXIgdT1zKHQsZSxuKTtpZigibm9ybWFsIj09PXUudHlwZSl7aWYocj1uLmRvbmU/aDpsLHUuYXJnPT09diljb250aW51ZTtyZXR1cm57dmFsdWU6dS5hcmcsZG9uZTpuLmRvbmV9fSJ0aHJvdyI9PT11LnR5cGUmJihyPWgsbi5tZXRob2Q9InRocm93IixuLmFyZz11LmFyZyl9fX0odCxuLGkpLG99ZnVuY3Rpb24gcyh0LGUsbil7dHJ5e3JldHVybnt0eXBlOiJub3JtYWwiLGFyZzp0LmNhbGwoZSxuKX19Y2F0Y2gocil7cmV0dXJue3R5cGU6InRocm93Iixhcmc6cn19fXQud3JhcD11O3ZhciBmPSJzdXNwZW5kZWRTdGFydCIsbD0ic3VzcGVuZGVkWWllbGQiLHA9ImV4ZWN1dGluZyIsaD0iY29tcGxldGVkIix2PXt9O2Z1bmN0aW9uIGQoKXt9ZnVuY3Rpb24gZygpe31mdW5jdGlvbiB5KCl7fXZhciBiPXt9O2JbaV09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307dmFyIG09T2JqZWN0LmdldFByb3RvdHlwZU9mLGs9bSYmbShtKEkoW10pKSk7ayYmayE9PW4mJnIuY2FsbChrLGkpJiYoYj1rKTt2YXIgXz15LnByb3RvdHlwZT1kLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGIpO2Z1bmN0aW9uIHcodCl7WyJuZXh0IiwidGhyb3ciLCJyZXR1cm4iXS5mb3JFYWNoKChmdW5jdGlvbihlKXt0W2VdPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pbnZva2UoZSx0KX19KSl9ZnVuY3Rpb24geCh0KXt2YXIgZTt0aGlzLl9pbnZva2U9ZnVuY3Rpb24obixvKXtmdW5jdGlvbiBpKCl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihlLGkpeyFmdW5jdGlvbiBlKG4sbyxpLGEpe3ZhciBjPXModFtuXSx0LG8pO2lmKCJ0aHJvdyIhPT1jLnR5cGUpe3ZhciB1PWMuYXJnLGY9dS52YWx1ZTtyZXR1cm4gZiYmIm9iamVjdCI9PXR5cGVvZiBmJiZyLmNhbGwoZiwiX19hd2FpdCIpP1Byb21pc2UucmVzb2x2ZShmLl9fYXdhaXQpLnRoZW4oKGZ1bmN0aW9uKHQpe2UoIm5leHQiLHQsaSxhKX0pLChmdW5jdGlvbih0KXtlKCJ0aHJvdyIsdCxpLGEpfSkpOlByb21pc2UucmVzb2x2ZShmKS50aGVuKChmdW5jdGlvbih0KXt1LnZhbHVlPXQsaSh1KX0pLChmdW5jdGlvbih0KXtyZXR1cm4gZSgidGhyb3ciLHQsaSxhKX0pKX1hKGMuYXJnKX0obixvLGUsaSl9KSl9cmV0dXJuIGU9ZT9lLnRoZW4oaSxpKTppKCl9fWZ1bmN0aW9uIFModCxuKXt2YXIgcj10Lml0ZXJhdG9yW24ubWV0aG9kXTtpZihyPT09ZSl7aWYobi5kZWxlZ2F0ZT1udWxsLCJ0aHJvdyI9PT1uLm1ldGhvZCl7aWYodC5pdGVyYXRvci5yZXR1cm4mJihuLm1ldGhvZD0icmV0dXJuIixuLmFyZz1lLFModCxuKSwidGhyb3ciPT09bi5tZXRob2QpKXJldHVybiB2O24ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9bmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAndGhyb3cnIG1ldGhvZCIpfXJldHVybiB2fXZhciBvPXMocix0Lml0ZXJhdG9yLG4uYXJnKTtpZigidGhyb3ciPT09by50eXBlKXJldHVybiBuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW8uYXJnLG4uZGVsZWdhdGU9bnVsbCx2O3ZhciBpPW8uYXJnO3JldHVybiBpP2kuZG9uZT8oblt0LnJlc3VsdE5hbWVdPWkudmFsdWUsbi5uZXh0PXQubmV4dExvYywicmV0dXJuIiE9PW4ubWV0aG9kJiYobi5tZXRob2Q9Im5leHQiLG4uYXJnPWUpLG4uZGVsZWdhdGU9bnVsbCx2KTppOihuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0Iiksbi5kZWxlZ2F0ZT1udWxsLHYpfWZ1bmN0aW9uIEUodCl7dmFyIGU9e3RyeUxvYzp0WzBdfTsxIGluIHQmJihlLmNhdGNoTG9jPXRbMV0pLDIgaW4gdCYmKGUuZmluYWxseUxvYz10WzJdLGUuYWZ0ZXJMb2M9dFszXSksdGhpcy50cnlFbnRyaWVzLnB1c2goZSl9ZnVuY3Rpb24gTyh0KXt2YXIgZT10LmNvbXBsZXRpb258fHt9O2UudHlwZT0ibm9ybWFsIixkZWxldGUgZS5hcmcsdC5jb21wbGV0aW9uPWV9ZnVuY3Rpb24gVCh0KXt0aGlzLnRyeUVudHJpZXM9W3t0cnlMb2M6InJvb3QifV0sdC5mb3JFYWNoKEUsdGhpcyksdGhpcy5yZXNldCghMCl9ZnVuY3Rpb24gSSh0KXtpZih0KXt2YXIgbj10W2ldO2lmKG4pcmV0dXJuIG4uY2FsbCh0KTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdC5uZXh0KXJldHVybiB0O2lmKCFpc05hTih0Lmxlbmd0aCkpe3ZhciBvPS0xLGE9ZnVuY3Rpb24gbigpe2Zvcig7KytvPHQubGVuZ3RoOylpZihyLmNhbGwodCxvKSlyZXR1cm4gbi52YWx1ZT10W29dLG4uZG9uZT0hMSxuO3JldHVybiBuLnZhbHVlPWUsbi5kb25lPSEwLG59O3JldHVybiBhLm5leHQ9YX19cmV0dXJue25leHQ6an19ZnVuY3Rpb24gaigpe3JldHVybnt2YWx1ZTplLGRvbmU6ITB9fXJldHVybiBnLnByb3RvdHlwZT1fLmNvbnN0cnVjdG9yPXkseS5jb25zdHJ1Y3Rvcj1nLHlbY109Zy5kaXNwbGF5TmFtZT0iR2VuZXJhdG9yRnVuY3Rpb24iLHQuaXNHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbih0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5jb25zdHJ1Y3RvcjtyZXR1cm4hIWUmJihlPT09Z3x8IkdlbmVyYXRvckZ1bmN0aW9uIj09PShlLmRpc3BsYXlOYW1lfHxlLm5hbWUpKX0sdC5tYXJrPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQseSk6KHQuX19wcm90b19fPXksYyBpbiB0fHwodFtjXT0iR2VuZXJhdG9yRnVuY3Rpb24iKSksdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShfKSx0fSx0LmF3cmFwPWZ1bmN0aW9uKHQpe3JldHVybntfX2F3YWl0OnR9fSx3KHgucHJvdG90eXBlKSx4LnByb3RvdHlwZVthXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSx0LkFzeW5jSXRlcmF0b3I9eCx0LmFzeW5jPWZ1bmN0aW9uKGUsbixyLG8pe3ZhciBpPW5ldyB4KHUoZSxuLHIsbykpO3JldHVybiB0LmlzR2VuZXJhdG9yRnVuY3Rpb24obik/aTppLm5leHQoKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kb25lP3QudmFsdWU6aS5uZXh0KCl9KSl9LHcoXyksX1tjXT0iR2VuZXJhdG9yIixfW2ldPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LF8udG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0sdC5rZXlzPWZ1bmN0aW9uKHQpe3ZhciBlPVtdO2Zvcih2YXIgbiBpbiB0KWUucHVzaChuKTtyZXR1cm4gZS5yZXZlcnNlKCksZnVuY3Rpb24gbigpe2Zvcig7ZS5sZW5ndGg7KXt2YXIgcj1lLnBvcCgpO2lmKHIgaW4gdClyZXR1cm4gbi52YWx1ZT1yLG4uZG9uZT0hMSxufXJldHVybiBuLmRvbmU9ITAsbn19LHQudmFsdWVzPUksVC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlQscmVzZXQ6ZnVuY3Rpb24odCl7aWYodGhpcy5wcmV2PTAsdGhpcy5uZXh0PTAsdGhpcy5zZW50PXRoaXMuX3NlbnQ9ZSx0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLmFyZz1lLHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKE8pLCF0KWZvcih2YXIgbiBpbiB0aGlzKSJ0Ij09PW4uY2hhckF0KDApJiZyLmNhbGwodGhpcyxuKSYmIWlzTmFOKCtuLnNsaWNlKDEpKSYmKHRoaXNbbl09ZSl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmRvbmU9ITA7dmFyIHQ9dGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4gdGhpcy5ydmFsfSxkaXNwYXRjaEV4Y2VwdGlvbjpmdW5jdGlvbih0KXtpZih0aGlzLmRvbmUpdGhyb3cgdDt2YXIgbj10aGlzO2Z1bmN0aW9uIG8ocixvKXtyZXR1cm4gYy50eXBlPSJ0aHJvdyIsYy5hcmc9dCxuLm5leHQ9cixvJiYobi5tZXRob2Q9Im5leHQiLG4uYXJnPWUpLCEhb31mb3IodmFyIGk9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2k+PTA7LS1pKXt2YXIgYT10aGlzLnRyeUVudHJpZXNbaV0sYz1hLmNvbXBsZXRpb247aWYoInJvb3QiPT09YS50cnlMb2MpcmV0dXJuIG8oImVuZCIpO2lmKGEudHJ5TG9jPD10aGlzLnByZXYpe3ZhciB1PXIuY2FsbChhLCJjYXRjaExvYyIpLHM9ci5jYWxsKGEsImZpbmFsbHlMb2MiKTtpZih1JiZzKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbyhhLmNhdGNoTG9jLCEwKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBvKGEuZmluYWxseUxvYyl9ZWxzZSBpZih1KXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbyhhLmNhdGNoTG9jLCEwKX1lbHNle2lmKCFzKXRocm93IG5ldyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBvKGEuZmluYWxseUxvYyl9fX19LGFicnVwdDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7bj49MDstLW4pe3ZhciBvPXRoaXMudHJ5RW50cmllc1tuXTtpZihvLnRyeUxvYzw9dGhpcy5wcmV2JiZyLmNhbGwobywiZmluYWxseUxvYyIpJiZ0aGlzLnByZXY8by5maW5hbGx5TG9jKXt2YXIgaT1vO2JyZWFrfX1pJiYoImJyZWFrIj09PXR8fCJjb250aW51ZSI9PT10KSYmaS50cnlMb2M8PWUmJmU8PWkuZmluYWxseUxvYyYmKGk9bnVsbCk7dmFyIGE9aT9pLmNvbXBsZXRpb246e307cmV0dXJuIGEudHlwZT10LGEuYXJnPWUsaT8odGhpcy5tZXRob2Q9Im5leHQiLHRoaXMubmV4dD1pLmZpbmFsbHlMb2Msdik6dGhpcy5jb21wbGV0ZShhKX0sY29tcGxldGU6ZnVuY3Rpb24odCxlKXtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiJicmVhayI9PT10LnR5cGV8fCJjb250aW51ZSI9PT10LnR5cGU/dGhpcy5uZXh0PXQuYXJnOiJyZXR1cm4iPT09dC50eXBlPyh0aGlzLnJ2YWw9dGhpcy5hcmc9dC5hcmcsdGhpcy5tZXRob2Q9InJldHVybiIsdGhpcy5uZXh0PSJlbmQiKToibm9ybWFsIj09PXQudHlwZSYmZSYmKHRoaXMubmV4dD1lKSx2fSxmaW5pc2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIG49dGhpcy50cnlFbnRyaWVzW2VdO2lmKG4uZmluYWxseUxvYz09PXQpcmV0dXJuIHRoaXMuY29tcGxldGUobi5jb21wbGV0aW9uLG4uYWZ0ZXJMb2MpLE8obiksdn19LGNhdGNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLnRyeUxvYz09PXQpe3ZhciByPW4uY29tcGxldGlvbjtpZigidGhyb3ciPT09ci50eXBlKXt2YXIgbz1yLmFyZztPKG4pfXJldHVybiBvfX10aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpfSxkZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6SSh0KSxyZXN1bHROYW1lOm4sbmV4dExvYzpyfSwibmV4dCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPWUpLHZ9fSx0fSh0LmV4cG9ydHMpO3RyeXtyZWdlbmVyYXRvclJ1bnRpbWU9cn1jYXRjaChvKXtGdW5jdGlvbigiciIsInJlZ2VuZXJhdG9yUnVudGltZSA9IHIiKShyKX19LCJtL0w4IjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiZzZ2LyIpLG89bigiRFBzeCIpLGk9bigiZ2xyayIpLGE9bigid0U2diIpLGM9T2JqZWN0LmRlZmluZVByb3BlcnR5O2UuZj1yP2M6ZnVuY3Rpb24odCxlLG4pe2lmKGkodCksZT1hKGUsITApLGkobiksbyl0cnl7cmV0dXJuIGModCxlLG4pfWNhdGNoKHIpe31pZigiZ2V0ImluIG58fCJzZXQiaW4gbil0aHJvdyBUeXBlRXJyb3IoIkFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkIik7cmV0dXJuInZhbHVlImluIG4mJih0W2VdPW4udmFsdWUpLHR9fSxtOTJuOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJnbHJrIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLG8pe3RyeXtyZXR1cm4gbz9lKHIobilbMF0sblsxXSk6ZShuKX1jYXRjaChhKXt2YXIgaT10LnJldHVybjt0aHJvdyB2b2lkIDAhPT1pJiZyKGkuY2FsbCh0KSksYX19fSxtUkg2OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiaFhwTyIpO3Ioe3RhcmdldDoiU3RyaW5nIixwcm90bzohMCxmb3JjZWQ6bigiNnVuSyIpKCJsaW5rIil9LHtsaW5rOmZ1bmN0aW9uKHQpe3JldHVybiBvKHRoaXMsImEiLCJocmVmIix0KX19KX0sbVJJcTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxuKCJIMHBiIiksbigid0xZbiIpLG4oInNNQk8iKSxuKCJ0VzV5IiksbigidUw4VyIpLG4oImVvTDgiKSxuKCJIUnhVIiksbigiNURtVyIpLG4oIk5CQVMiKSxuKCJ0a3RvIiksbigiY0RrZSIpLG4oIjNLZ1YiKSxuKCJyNU9nIiksbigienVoVyIpLG4oIjRoMFkiKSxuKCI1RDVvIiksbigieVFZbiIpLG4oInpLWmUiKSxuKCJLeGxkIiksbigiRXhvQyIpLG4oIjA3ZDciKSxuKCJtYTlJIiksbigiSjMwWCIpLG4oInBqRHYiKSxuKCJYZTNMIiksbigib1Z1WCIpLG4oIisyb1AiKSxuKCJwRFFxIiksbigiVG9KeSIpLG4oIlFXQmwiKSxuKCIyQjFSIiksbigiVGVRRiIpLG4oIlJmeHoiKSxuKCJwaU1iIiksbigiRTlYRCIpLG4oIjlOMjkiKSxuKCJ5WFYzIiksbigidXFYYyIpLG4oInFIVCsiKSxuKCJ5eW1lIiksbigiZmJDVyIpLG4oIngwQUciKSxuKCI0bURtIiksbigiOXRiLyIpLG4oIjJBK2QiKSxuKCJTWW9yIiksbigiUEtQayIpLG4oIjliSjciKSxuKCJpbmxBIiksbigiSlRKZyIpLG4oIk9NOVoiKSxuKCJMS0J4IiksbigiR0tWVSIpLG4oIkU1Tk0iKSxuKCJCTk10IiksbigiekhGdSIpLG4oIng4M3ciKSxuKCJsMmRLIiksbigiR1JQRiIpLG4oInhkQloiKSxuKCJtUkg2IiksbigieVdvMiIpLG4oIkl4WFIiKSxuKCJURlBUIiksbigiWms4WCIpLG4oIlJtMVMiKSxuKCJVeGxDIiksbigiaEJ5USIpLG4oIkVuWnkiKSxuKCI0bDYzIiksbigick5obCIpLG4oIjdzYkQiKSxuKCI2aHBuIiksbigiZnRLZyIpLG4oIkt2OWwiKSxuKCJUc2txIiksbigiRU5GOSIpLG4oIllHSzQiKSxuKCJGWnRQIiksbigiM2JCWiIpLG4oIjVzK24iKSxuKCJERWZ1IiksbigibHM4MiIpfSxtYTlJOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiMERreSIpLGk9bigiNkxXQSIpLGE9bigiaGgxdiIpLGM9bigiZXd2VyIpLHU9bigiVU1TUSIpLHM9bigiaEJqTiIpLGY9bigiWmZEdiIpLGw9bigiSGQ1ZiIpLHA9bigidGlLcCIpKCJpc0NvbmNhdFNwcmVhZGFibGUiKSxoPSFvKChmdW5jdGlvbigpe3ZhciB0PVtdO3JldHVybiB0W3BdPSExLHQuY29uY2F0KClbMF0hPT10fSkpLHY9bCgiY29uY2F0IiksZD1mdW5jdGlvbih0KXtpZighYSh0KSlyZXR1cm4hMTt2YXIgZT10W3BdO3JldHVybiB2b2lkIDAhPT1lPyEhZTppKHQpfTtyKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6IWh8fCF2fSx7Y29uY2F0OmZ1bmN0aW9uKHQpe3ZhciBlLG4scixvLGksYT1jKHRoaXMpLGw9ZihhLDApLHA9MDtmb3IoZT0tMSxyPWFyZ3VtZW50cy5sZW5ndGg7ZTxyO2UrKylpZihkKGk9LTE9PT1lP2E6YXJndW1lbnRzW2VdKSl7aWYocCsobz11KGkubGVuZ3RoKSk+OTAwNzE5OTI1NDc0MDk5MSl0aHJvdyBUeXBlRXJyb3IoIk1heGltdW0gYWxsb3dlZCBpbmRleCBleGNlZWRlZCIpO2ZvcihuPTA7bjxvO24rKyxwKyspbiBpbiBpJiZzKGwscCxpW25dKX1lbHNle2lmKHA+PTkwMDcxOTkyNTQ3NDA5OTEpdGhyb3cgVHlwZUVycm9yKCJNYXhpbXVtIGFsbG93ZWQgaW5kZXggZXhjZWVkZWQiKTtzKGwscCsrLGkpfXJldHVybiBsLmxlbmd0aD1wLGx9fSl9LG1yU0c6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksbi5kKGUsIl9fZXh0ZW5kcyIsKGZ1bmN0aW9uKCl7cmV0dXJuIG99KSksbi5kKGUsIl9fYXNzaWduIiwoZnVuY3Rpb24oKXtyZXR1cm4gaX0pKSxuLmQoZSwiX19yZXN0IiwoZnVuY3Rpb24oKXtyZXR1cm4gYX0pKSxuLmQoZSwiX19kZWNvcmF0ZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGN9KSksbi5kKGUsIl9fcGFyYW0iLChmdW5jdGlvbigpe3JldHVybiB1fSkpLG4uZChlLCJfX21ldGFkYXRhIiwoZnVuY3Rpb24oKXtyZXR1cm4gc30pKSxuLmQoZSwiX19hd2FpdGVyIiwoZnVuY3Rpb24oKXtyZXR1cm4gZn0pKSxuLmQoZSwiX19nZW5lcmF0b3IiLChmdW5jdGlvbigpe3JldHVybiBsfSkpLG4uZChlLCJfX2V4cG9ydFN0YXIiLChmdW5jdGlvbigpe3JldHVybiBwfSkpLG4uZChlLCJfX3ZhbHVlcyIsKGZ1bmN0aW9uKCl7cmV0dXJuIGh9KSksbi5kKGUsIl9fcmVhZCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHZ9KSksbi5kKGUsIl9fc3ByZWFkIiwoZnVuY3Rpb24oKXtyZXR1cm4gZH0pKSxuLmQoZSwiX19zcHJlYWRBcnJheXMiLChmdW5jdGlvbigpe3JldHVybiBnfSkpLG4uZChlLCJfX2F3YWl0IiwoZnVuY3Rpb24oKXtyZXR1cm4geX0pKSxuLmQoZSwiX19hc3luY0dlbmVyYXRvciIsKGZ1bmN0aW9uKCl7cmV0dXJuIGJ9KSksbi5kKGUsIl9fYXN5bmNEZWxlZ2F0b3IiLChmdW5jdGlvbigpe3JldHVybiBtfSkpLG4uZChlLCJfX2FzeW5jVmFsdWVzIiwoZnVuY3Rpb24oKXtyZXR1cm4ga30pKSxuLmQoZSwiX19tYWtlVGVtcGxhdGVPYmplY3QiLChmdW5jdGlvbigpe3JldHVybiBffSkpLG4uZChlLCJfX2ltcG9ydFN0YXIiLChmdW5jdGlvbigpe3JldHVybiB3fSkpLG4uZChlLCJfX2ltcG9ydERlZmF1bHQiLChmdW5jdGlvbigpe3JldHVybiB4fSkpO3ZhciByPWZ1bmN0aW9uKHQsZSl7cmV0dXJuKHI9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKHQsZSl7dC5fX3Byb3RvX189ZX18fGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShuKSYmKHRbbl09ZVtuXSl9KSh0LGUpfTtmdW5jdGlvbiBvKHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1yKHQsZSksdC5wcm90b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90b3R5cGU9ZS5wcm90b3R5cGUsbmV3IG4pfXZhciBpPWZ1bmN0aW9uKCl7cmV0dXJuKGk9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49MSxyPWFyZ3VtZW50cy5sZW5ndGg7bjxyO24rKylmb3IodmFyIG8gaW4gZT1hcmd1bWVudHNbbl0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbykmJih0W29dPWVbb10pO3JldHVybiB0fSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtmdW5jdGlvbiBhKHQsZSl7dmFyIG49e307Zm9yKHZhciByIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscikmJmUuaW5kZXhPZihyKTwwJiYobltyXT10W3JdKTtpZihudWxsIT10JiYiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpO288ci5sZW5ndGg7bysrKWUuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwodCxyW29dKSYmKG5bcltvXV09dFtyW29dXSl9cmV0dXJuIG59ZnVuY3Rpb24gYyh0LGUsbixyKXt2YXIgbyxpPWFyZ3VtZW50cy5sZW5ndGgsYT1pPDM/ZTpudWxsPT09cj9yPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxuKTpyO2lmKCJvYmplY3QiPT10eXBlb2YgUmVmbGVjdCYmImZ1bmN0aW9uIj09dHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUpYT1SZWZsZWN0LmRlY29yYXRlKHQsZSxuLHIpO2Vsc2UgZm9yKHZhciBjPXQubGVuZ3RoLTE7Yz49MDtjLS0pKG89dFtjXSkmJihhPShpPDM/byhhKTppPjM/byhlLG4sYSk6byhlLG4pKXx8YSk7cmV0dXJuIGk+MyYmYSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixhKSxhfWZ1bmN0aW9uIHUodCxlKXtyZXR1cm4gZnVuY3Rpb24obixyKXtlKG4scix0KX19ZnVuY3Rpb24gcyh0LGUpe2lmKCJvYmplY3QiPT10eXBlb2YgUmVmbGVjdCYmImZ1bmN0aW9uIj09dHlwZW9mIFJlZmxlY3QubWV0YWRhdGEpcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEodCxlKX1mdW5jdGlvbiBmKHQsZSxuLHIpe3JldHVybiBuZXcobnx8KG49UHJvbWlzZSkpKChmdW5jdGlvbihvLGkpe2Z1bmN0aW9uIGEodCl7dHJ5e3Uoci5uZXh0KHQpKX1jYXRjaChlKXtpKGUpfX1mdW5jdGlvbiBjKHQpe3RyeXt1KHIudGhyb3codCkpfWNhdGNoKGUpe2koZSl9fWZ1bmN0aW9uIHUodCl7dC5kb25lP28odC52YWx1ZSk6bmV3IG4oKGZ1bmN0aW9uKGUpe2UodC52YWx1ZSl9KSkudGhlbihhLGMpfXUoKHI9ci5hcHBseSh0LGV8fFtdKSkubmV4dCgpKX0pKX1mdW5jdGlvbiBsKHQsZSl7dmFyIG4scixvLGksYT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZvWzBdKXRocm93IG9bMV07cmV0dXJuIG9bMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gaT17bmV4dDpjKDApLHRocm93OmMoMSkscmV0dXJuOmMoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihpW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGk7ZnVuY3Rpb24gYyhpKXtyZXR1cm4gZnVuY3Rpb24oYyl7cmV0dXJuIGZ1bmN0aW9uKGkpe2lmKG4pdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7YTspdHJ5e2lmKG49MSxyJiYobz0yJmlbMF0/ci5yZXR1cm46aVswXT9yLnRocm93fHwoKG89ci5yZXR1cm4pJiZvLmNhbGwociksMCk6ci5uZXh0KSYmIShvPW8uY2FsbChyLGlbMV0pKS5kb25lKXJldHVybiBvO3N3aXRjaChyPTAsbyYmKGk9WzImaVswXSxvLnZhbHVlXSksaVswXSl7Y2FzZSAwOmNhc2UgMTpvPWk7YnJlYWs7Y2FzZSA0OnJldHVybiBhLmxhYmVsKysse3ZhbHVlOmlbMV0sZG9uZTohMX07Y2FzZSA1OmEubGFiZWwrKyxyPWlbMV0saT1bMF07Y29udGludWU7Y2FzZSA3Omk9YS5vcHMucG9wKCksYS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoIShvPShvPWEudHJ5cykubGVuZ3RoPjAmJm9bby5sZW5ndGgtMV0pJiYoNj09PWlbMF18fDI9PT1pWzBdKSl7YT0wO2NvbnRpbnVlfWlmKDM9PT1pWzBdJiYoIW98fGlbMV0+b1swXSYmaVsxXTxvWzNdKSl7YS5sYWJlbD1pWzFdO2JyZWFrfWlmKDY9PT1pWzBdJiZhLmxhYmVsPG9bMV0pe2EubGFiZWw9b1sxXSxvPWk7YnJlYWt9aWYobyYmYS5sYWJlbDxvWzJdKXthLmxhYmVsPW9bMl0sYS5vcHMucHVzaChpKTticmVha31vWzJdJiZhLm9wcy5wb3AoKSxhLnRyeXMucG9wKCk7Y29udGludWV9aT1lLmNhbGwodCxhKX1jYXRjaChjKXtpPVs2LGNdLHI9MH1maW5hbGx5e249bz0wfWlmKDUmaVswXSl0aHJvdyBpWzFdO3JldHVybnt2YWx1ZTppWzBdP2lbMV06dm9pZCAwLGRvbmU6ITB9fShbaSxjXSl9fX1mdW5jdGlvbiBwKHQsZSl7Zm9yKHZhciBuIGluIHQpZS5oYXNPd25Qcm9wZXJ0eShuKXx8KGVbbl09dFtuXSl9ZnVuY3Rpb24gaCh0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl0sbj0wO3JldHVybiBlP2UuY2FsbCh0KTp7bmV4dDpmdW5jdGlvbigpe3JldHVybiB0JiZuPj10Lmxlbmd0aCYmKHQ9dm9pZCAwKSx7dmFsdWU6dCYmdFtuKytdLGRvbmU6IXR9fX19ZnVuY3Rpb24gdih0LGUpe3ZhciBuPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXTtpZighbilyZXR1cm4gdDt2YXIgcixvLGk9bi5jYWxsKHQpLGE9W107dHJ5e2Zvcig7KHZvaWQgMD09PWV8fGUtLSA+MCkmJiEocj1pLm5leHQoKSkuZG9uZTspYS5wdXNoKHIudmFsdWUpfWNhdGNoKGMpe289e2Vycm9yOmN9fWZpbmFsbHl7dHJ5e3ImJiFyLmRvbmUmJihuPWkucmV0dXJuKSYmbi5jYWxsKGkpfWZpbmFsbHl7aWYobyl0aHJvdyBvLmVycm9yfX1yZXR1cm4gYX1mdW5jdGlvbiBkKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXQ9dC5jb25jYXQodihhcmd1bWVudHNbZV0pKTtyZXR1cm4gdH1mdW5jdGlvbiBnKCl7Zm9yKHZhciB0PTAsZT0wLG49YXJndW1lbnRzLmxlbmd0aDtlPG47ZSsrKXQrPWFyZ3VtZW50c1tlXS5sZW5ndGg7dmFyIHI9QXJyYXkodCksbz0wO2ZvcihlPTA7ZTxuO2UrKylmb3IodmFyIGk9YXJndW1lbnRzW2VdLGE9MCxjPWkubGVuZ3RoO2E8YzthKyssbysrKXJbb109aVthXTtyZXR1cm4gcn1mdW5jdGlvbiB5KHQpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgeT8odGhpcy52PXQsdGhpcyk6bmV3IHkodCl9ZnVuY3Rpb24gYih0LGUsbil7aWYoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKXRocm93IG5ldyBUeXBlRXJyb3IoIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpO3ZhciByLG89bi5hcHBseSh0LGV8fFtdKSxpPVtdO3JldHVybiByPXt9LGEoIm5leHQiKSxhKCJ0aHJvdyIpLGEoInJldHVybiIpLHJbU3ltYm9sLmFzeW5jSXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LHI7ZnVuY3Rpb24gYSh0KXtvW3RdJiYoclt0XT1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4scil7aS5wdXNoKFt0LGUsbixyXSk+MXx8Yyh0LGUpfSkpfSl9ZnVuY3Rpb24gYyh0LGUpe3RyeXsobj1vW3RdKGUpKS52YWx1ZSBpbnN0YW5jZW9mIHk/UHJvbWlzZS5yZXNvbHZlKG4udmFsdWUudikudGhlbih1LHMpOmYoaVswXVsyXSxuKX1jYXRjaChyKXtmKGlbMF1bM10scil9dmFyIG59ZnVuY3Rpb24gdSh0KXtjKCJuZXh0Iix0KX1mdW5jdGlvbiBzKHQpe2MoInRocm93Iix0KX1mdW5jdGlvbiBmKHQsZSl7dChlKSxpLnNoaWZ0KCksaS5sZW5ndGgmJmMoaVswXVswXSxpWzBdWzFdKX19ZnVuY3Rpb24gbSh0KXt2YXIgZSxuO3JldHVybiBlPXt9LHIoIm5leHQiKSxyKCJ0aHJvdyIsKGZ1bmN0aW9uKHQpe3Rocm93IHR9KSkscigicmV0dXJuIiksZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGU7ZnVuY3Rpb24gcihyLG8pe2Vbcl09dFtyXT9mdW5jdGlvbihlKXtyZXR1cm4obj0hbik/e3ZhbHVlOnkodFtyXShlKSksZG9uZToicmV0dXJuIj09PXJ9Om8/byhlKTplfTpvfX1mdW5jdGlvbiBrKHQpe2lmKCFTeW1ib2wuYXN5bmNJdGVyYXRvcil0aHJvdyBuZXcgVHlwZUVycm9yKCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC4iKTt2YXIgZSxuPXRbU3ltYm9sLmFzeW5jSXRlcmF0b3JdO3JldHVybiBuP24uY2FsbCh0KToodD1oKHQpLGU9e30scigibmV4dCIpLHIoInRocm93IikscigicmV0dXJuIiksZVtTeW1ib2wuYXN5bmNJdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZSk7ZnVuY3Rpb24gcihuKXtlW25dPXRbbl0mJmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixvKXshZnVuY3Rpb24odCxlLG4scil7UHJvbWlzZS5yZXNvbHZlKHIpLnRoZW4oKGZ1bmN0aW9uKGUpe3Qoe3ZhbHVlOmUsZG9uZTpufSl9KSxlKX0ocixvLChlPXRbbl0oZSkpLmRvbmUsZS52YWx1ZSl9KSl9fX1mdW5jdGlvbiBfKHQsZSl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eT9PYmplY3QuZGVmaW5lUHJvcGVydHkodCwicmF3Iix7dmFsdWU6ZX0pOnQucmF3PWUsdH1mdW5jdGlvbiB3KHQpe2lmKHQmJnQuX19lc01vZHVsZSlyZXR1cm4gdDt2YXIgZT17fTtpZihudWxsIT10KWZvcih2YXIgbiBpbiB0KU9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbikmJihlW25dPXRbbl0pO3JldHVybiBlLmRlZmF1bHQ9dCxlfWZ1bmN0aW9uIHgodCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9fX0sIm4vbVUiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1NYXRoLmF0YW5oLGk9TWF0aC5sb2c7cih7dGFyZ2V0OiJNYXRoIixzdGF0OiEwLGZvcmNlZDohKG8mJjEvbygtMCk8MCl9LHthdGFuaDpmdW5jdGlvbih0KXtyZXR1cm4gMD09KHQ9K3QpP3Q6aSgoMSt0KS8oMS10KSkvMn19KX0sbm9HbzpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiVnBJVCIpO3QuZXhwb3J0cz1yKCJuYXRpdmUtZnVuY3Rpb24tdG8tc3RyaW5nIixGdW5jdGlvbi50b1N0cmluZyl9LG50T1U6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJycE5rIikuSXRlcmF0b3JQcm90b3R5cGUsbz1uKCJmSE1ZIiksaT1uKCJYR3dDIiksYT1uKCIxRTV6IiksYz1uKCJQNHkxIiksdT1mdW5jdGlvbigpe3JldHVybiB0aGlzfTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3ZhciBzPWUrIiBJdGVyYXRvciI7cmV0dXJuIHQucHJvdG90eXBlPW8ocix7bmV4dDppKDEsbil9KSxhKHQscywhMSwhMCksY1tzXT11LHR9fSxvVnVYOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiUkszdCIpLGk9bigiL0dxVSIpLGE9bigic3dGTCIpLGM9W10uam9pbix1PW8hPU9iamVjdCxzPWEoImpvaW4iLCIsIik7cih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOnV8fHN9LHtqb2luOmZ1bmN0aW9uKHQpe3JldHVybiBjLmNhbGwoaSh0aGlzKSx2b2lkIDA9PT10PyIsIjp0KX19KX0scERRcTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIkk4dmgiKSxpPW4oInBwR0IiKSxhPW4oIlVNU1EiKSxjPW4oImV3dlciKSx1PW4oIlpmRHYiKSxzPW4oImhCak4iKSxmPW4oIkhkNWYiKSxsPU1hdGgubWF4LHA9TWF0aC5taW47cih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOiFmKCJzcGxpY2UiKX0se3NwbGljZTpmdW5jdGlvbih0LGUpe3ZhciBuLHIsZixoLHYsZCxnPWModGhpcykseT1hKGcubGVuZ3RoKSxiPW8odCx5KSxtPWFyZ3VtZW50cy5sZW5ndGg7aWYoMD09PW0/bj1yPTA6MT09PW0/KG49MCxyPXktYik6KG49bS0yLHI9cChsKGkoZSksMCkseS1iKSkseStuLXI+OTAwNzE5OTI1NDc0MDk5MSl0aHJvdyBUeXBlRXJyb3IoIk1heGltdW0gYWxsb3dlZCBsZW5ndGggZXhjZWVkZWQiKTtmb3IoZj11KGcsciksaD0wO2g8cjtoKyspKHY9YitoKWluIGcmJnMoZixoLGdbdl0pO2lmKGYubGVuZ3RoPXIsbjxyKXtmb3IoaD1iO2g8eS1yO2grKylkPWgrbiwodj1oK3IpaW4gZz9nW2RdPWdbdl06ZGVsZXRlIGdbZF07Zm9yKGg9eTtoPnktcituO2gtLSlkZWxldGUgZ1toLTFdfWVsc2UgaWYobj5yKWZvcihoPXktcjtoPmI7aC0tKWQ9aCtuLTEsKHY9aCtyLTEpaW4gZz9nW2RdPWdbdl06ZGVsZXRlIGdbZF07Zm9yKGg9MDtoPG47aCsrKWdbaCtiXT1hcmd1bWVudHNbaCsyXTtyZXR1cm4gZy5sZW5ndGg9eS1yK24sZn19KX0scE5NTzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIjJvUm8iKSxpPW4oInhEQlIiKSxhPW4oImc2di8iKSxjPW4oIlNUQUUiKSx1PW4oIjBEa3kiKSxzPW4oIlVUVlMiKSxmPW4oIjZMV0EiKSxsPW4oImhoMXYiKSxwPW4oImdscmsiKSxoPW4oImV3dlciKSx2PW4oIi9HcVUiKSxkPW4oIndFNnYiKSxnPW4oIlhHd0MiKSx5PW4oImZITVkiKSxiPW4oIjMzV2giKSxtPW4oIkpCeTgiKSxrPW4oIkJYL2IiKSxfPW4oImRCZysiKSx3PW4oIkJzOFYiKSx4PW4oIm0vTDgiKSxTPW4oIjBlZWYiKSxFPW4oIlgyVSsiKSxPPW4oImJ1c0UiKSxUPW4oIlZwSVQiKSxJPW4oIjkzSTAiKSxqPW4oIjBCSzIiKSxNPW4oImtPT2wiKSxQPW4oInRpS3AiKSxEPW4oIndETG8iKSxSPW4oImRHL24iKSxOPW4oIjFFNXoiKSxBPW4oImFmTzgiKSxMPW4oInR5Y1IiKS5mb3JFYWNoLEY9SSgiaGlkZGVuIiksej1QKCJ0b1ByaW1pdGl2ZSIpLFo9QS5zZXQsQz1BLmdldHRlckZvcigiU3ltYm9sIiksVz1PYmplY3QucHJvdG90eXBlLEc9by5TeW1ib2wsVT1vLkpTT04sSD1VJiZVLnN0cmluZ2lmeSxCPXcuZixLPXguZixWPWsuZixYPVMuZixZPVQoInN5bWJvbHMiKSxxPVQoIm9wLXN5bWJvbHMiKSxRPVQoInN0cmluZy10by1zeW1ib2wtcmVnaXN0cnkiKSxKPVQoInN5bWJvbC10by1zdHJpbmctcmVnaXN0cnkiKSwkPVQoIndrcyIpLHR0PW8uUU9iamVjdCxldD0hdHR8fCF0dC5wcm90b3R5cGV8fCF0dC5wcm90b3R5cGUuZmluZENoaWxkLG50PWEmJnUoKGZ1bmN0aW9uKCl7cmV0dXJuIDchPXkoSyh7fSwiYSIse2dldDpmdW5jdGlvbigpe3JldHVybiBLKHRoaXMsImEiLHt2YWx1ZTo3fSkuYX19KSkuYX0pKT9mdW5jdGlvbih0LGUsbil7dmFyIHI9QihXLGUpO3ImJmRlbGV0ZSBXW2VdLEsodCxlLG4pLHImJnQhPT1XJiZLKFcsZSxyKX06SyxydD1mdW5jdGlvbih0LGUpe3ZhciBuPVlbdF09eShHLnByb3RvdHlwZSk7cmV0dXJuIFoobix7dHlwZToiU3ltYm9sIix0YWc6dCxkZXNjcmlwdGlvbjplfSksYXx8KG4uZGVzY3JpcHRpb249ZSksbn0sb3Q9YyYmInN5bWJvbCI9PXR5cGVvZiBHLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdCh0KWluc3RhbmNlb2YgR30saXQ9ZnVuY3Rpb24odCxlLG4pe3Q9PT1XJiZpdChxLGUsbikscCh0KTt2YXIgcj1kKGUsITApO3JldHVybiBwKG4pLHMoWSxyKT8obi5lbnVtZXJhYmxlPyhzKHQsRikmJnRbRl1bcl0mJih0W0ZdW3JdPSExKSxuPXkobix7ZW51bWVyYWJsZTpnKDAsITEpfSkpOihzKHQsRil8fEsodCxGLGcoMSx7fSkpLHRbRl1bcl09ITApLG50KHQscixuKSk6Syh0LHIsbil9LGF0PWZ1bmN0aW9uKHQsZSl7cCh0KTt2YXIgbj12KGUpLHI9YihuKS5jb25jYXQoZnQobikpO3JldHVybiBMKHIsKGZ1bmN0aW9uKGUpe2EmJiFjdC5jYWxsKG4sZSl8fGl0KHQsZSxuW2VdKX0pKSx0fSxjdD1mdW5jdGlvbih0KXt2YXIgZT1kKHQsITApLG49WC5jYWxsKHRoaXMsZSk7cmV0dXJuISh0aGlzPT09VyYmcyhZLGUpJiYhcyhxLGUpKSYmKCEobnx8IXModGhpcyxlKXx8IXMoWSxlKXx8cyh0aGlzLEYpJiZ0aGlzW0ZdW2VdKXx8bil9LHV0PWZ1bmN0aW9uKHQsZSl7dmFyIG49dih0KSxyPWQoZSwhMCk7aWYobiE9PVd8fCFzKFkscil8fHMocSxyKSl7dmFyIG89QihuLHIpO3JldHVybiFvfHwhcyhZLHIpfHxzKG4sRikmJm5bRl1bcl18fChvLmVudW1lcmFibGU9ITApLG99fSxzdD1mdW5jdGlvbih0KXt2YXIgZT1WKHYodCkpLG49W107cmV0dXJuIEwoZSwoZnVuY3Rpb24odCl7cyhZLHQpfHxzKGosdCl8fG4ucHVzaCh0KX0pKSxufSxmdD1mdW5jdGlvbih0KXt2YXIgZT10PT09VyxuPVYoZT9xOnYodCkpLHI9W107cmV0dXJuIEwobiwoZnVuY3Rpb24odCl7IXMoWSx0KXx8ZSYmIXMoVyx0KXx8ci5wdXNoKFlbdF0pfSkpLHJ9O2N8fChPKChHPWZ1bmN0aW9uKCl7aWYodGhpcyBpbnN0YW5jZW9mIEcpdGhyb3cgVHlwZUVycm9yKCJTeW1ib2wgaXMgbm90IGEgY29uc3RydWN0b3IiKTt2YXIgdD1hcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/U3RyaW5nKGFyZ3VtZW50c1swXSk6dm9pZCAwLGU9TSh0KSxuPWZ1bmN0aW9uKHQpe3RoaXM9PT1XJiZuLmNhbGwocSx0KSxzKHRoaXMsRikmJnModGhpc1tGXSxlKSYmKHRoaXNbRl1bZV09ITEpLG50KHRoaXMsZSxnKDEsdCkpfTtyZXR1cm4gYSYmZXQmJm50KFcsZSx7Y29uZmlndXJhYmxlOiEwLHNldDpufSkscnQoZSx0KX0pLnByb3RvdHlwZSwidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiBDKHRoaXMpLnRhZ30pKSxTLmY9Y3QseC5mPWl0LHcuZj11dCxtLmY9ay5mPXN0LF8uZj1mdCxhJiYoSyhHLnByb3RvdHlwZSwiZGVzY3JpcHRpb24iLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEModGhpcykuZGVzY3JpcHRpb259fSksaXx8TyhXLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsY3Qse3Vuc2FmZTohMH0pKSxELmY9ZnVuY3Rpb24odCl7cmV0dXJuIHJ0KFAodCksdCl9KSxyKHtnbG9iYWw6ITAsd3JhcDohMCxmb3JjZWQ6IWMsc2hhbTohY30se1N5bWJvbDpHfSksTChiKCQpLChmdW5jdGlvbih0KXtSKHQpfSkpLHIoe3RhcmdldDoiU3ltYm9sIixzdGF0OiEwLGZvcmNlZDohY30se2ZvcjpmdW5jdGlvbih0KXt2YXIgZT1TdHJpbmcodCk7aWYocyhRLGUpKXJldHVybiBRW2VdO3ZhciBuPUcoZSk7cmV0dXJuIFFbZV09bixKW25dPWUsbn0sa2V5Rm9yOmZ1bmN0aW9uKHQpe2lmKCFvdCh0KSl0aHJvdyBUeXBlRXJyb3IodCsiIGlzIG5vdCBhIHN5bWJvbCIpO2lmKHMoSix0KSlyZXR1cm4gSlt0XX0sdXNlU2V0dGVyOmZ1bmN0aW9uKCl7ZXQ9ITB9LHVzZVNpbXBsZTpmdW5jdGlvbigpe2V0PSExfX0pLHIoe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLGZvcmNlZDohYyxzaGFtOiFhfSx7Y3JlYXQ="
                },
                {
                    "key": "asdf?polyfills-es5.js?6?6",
                    "type": "binary",
                    "value": "base64:ZTpmdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDA9PT1lP3kodCk6YXQoeSh0KSxlKX0sZGVmaW5lUHJvcGVydHk6aXQsZGVmaW5lUHJvcGVydGllczphdCxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6dXR9KSxyKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMCxmb3JjZWQ6IWN9LHtnZXRPd25Qcm9wZXJ0eU5hbWVzOnN0LGdldE93blByb3BlcnR5U3ltYm9sczpmdH0pLHIoe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLGZvcmNlZDp1KChmdW5jdGlvbigpe18uZigxKX0pKX0se2dldE93blByb3BlcnR5U3ltYm9sczpmdW5jdGlvbih0KXtyZXR1cm4gXy5mKGgodCkpfX0pLFUmJnIoe3RhcmdldDoiSlNPTiIsc3RhdDohMCxmb3JjZWQ6IWN8fHUoKGZ1bmN0aW9uKCl7dmFyIHQ9RygpO3JldHVybiJbbnVsbF0iIT1IKFt0XSl8fCJ7fSIhPUgoe2E6dH0pfHwie30iIT1IKE9iamVjdCh0KSl9KSl9LHtzdHJpbmdpZnk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlLG4scj1bdF0sbz0xO2FyZ3VtZW50cy5sZW5ndGg+bzspci5wdXNoKGFyZ3VtZW50c1tvKytdKTtpZihuPWU9clsxXSwobChlKXx8dm9pZCAwIT09dCkmJiFvdCh0KSlyZXR1cm4gZihlKXx8KGU9ZnVuY3Rpb24odCxlKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgbiYmKGU9bi5jYWxsKHRoaXMsdCxlKSksIW90KGUpKXJldHVybiBlfSksclsxXT1lLEguYXBwbHkoVSxyKX19KSxHLnByb3RvdHlwZVt6XXx8RShHLnByb3RvdHlwZSx6LEcucHJvdG90eXBlLnZhbHVlT2YpLE4oRywiU3ltYm9sIiksaltGXT0hMH0scGlNYjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oInR5Y1IiKS5ldmVyeTtyKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6bigic3dGTCIpKCJldmVyeSIpfSx7ZXZlcnk6ZnVuY3Rpb24odCl7cmV0dXJuIG8odGhpcyx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KX0scGpEdjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89bigiVGZUaSIpO3Ioe3RhcmdldDoiQXJyYXkiLHN0YXQ6ITAsZm9yY2VkOiFuKCJISDRvIikoKGZ1bmN0aW9uKHQpe0FycmF5LmZyb20odCl9KSl9LHtmcm9tOm99KX0scHBHQjpmdW5jdGlvbih0LGUpe3ZhciBuPU1hdGguY2VpbCxyPU1hdGguZmxvb3I7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBpc05hTih0PSt0KT8wOih0PjA/cjpuKSh0KX19LCJxSFQrIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89bigiRkY2bCIpLGk9bigiUk5JcyIpO3Ioe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwfSx7Y29weVdpdGhpbjpvfSksaSgiY29weVdpdGhpbiIpfSxxZVBWOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZzZ2LyIpLG89bigiMm9SbyIpLGk9bigibE1xNSIpLGE9bigiYnVzRSIpLGM9bigiVVRWUyIpLHU9bigieHJZSyIpLHM9bigiY1ZZSCIpLGY9bigid0U2diIpLGw9bigiMERreSIpLHA9bigiZkhNWSIpLGg9bigiSkJ5OCIpLmYsdj1uKCJCczhWIikuZixkPW4oIm0vTDgiKS5mLGc9bigiV0tpSCIpLnRyaW0seT1vLk51bWJlcixiPXkucHJvdG90eXBlLG09Ik51bWJlciI9PXUocChiKSksaz1mdW5jdGlvbih0KXt2YXIgZSxuLHIsbyxpLGEsYyx1LHM9Zih0LCExKTtpZigic3RyaW5nIj09dHlwZW9mIHMmJnMubGVuZ3RoPjIpaWYoNDM9PT0oZT0ocz1nKHMpKS5jaGFyQ29kZUF0KDApKXx8NDU9PT1lKXtpZig4OD09PShuPXMuY2hhckNvZGVBdCgyKSl8fDEyMD09PW4pcmV0dXJuIE5hTn1lbHNlIGlmKDQ4PT09ZSl7c3dpdGNoKHMuY2hhckNvZGVBdCgxKSl7Y2FzZSA2NjpjYXNlIDk4OnI9MixvPTQ5O2JyZWFrO2Nhc2UgNzk6Y2FzZSAxMTE6cj04LG89NTU7YnJlYWs7ZGVmYXVsdDpyZXR1cm4rc31mb3IoYT0oaT1zLnNsaWNlKDIpKS5sZW5ndGgsYz0wO2M8YTtjKyspaWYoKHU9aS5jaGFyQ29kZUF0KGMpKTw0OHx8dT5vKXJldHVybiBOYU47cmV0dXJuIHBhcnNlSW50KGkscil9cmV0dXJuK3N9O2lmKGkoIk51bWJlciIsIXkoIiAwbzEiKXx8IXkoIjBiMSIpfHx5KCIrMHgxIikpKXtmb3IodmFyIF8sdz1mdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPDE/MDp0LG49dGhpcztyZXR1cm4gbiBpbnN0YW5jZW9mIHcmJihtP2woKGZ1bmN0aW9uKCl7Yi52YWx1ZU9mLmNhbGwobil9KSk6Ik51bWJlciIhPXUobikpP3MobmV3IHkoayhlKSksbix3KTprKGUpfSx4PXI/aCh5KToiTUFYX1ZBTFVFLE1JTl9WQUxVRSxOYU4sTkVHQVRJVkVfSU5GSU5JVFksUE9TSVRJVkVfSU5GSU5JVFksRVBTSUxPTixpc0Zpbml0ZSxpc0ludGVnZXIsaXNOYU4saXNTYWZlSW50ZWdlcixNQVhfU0FGRV9JTlRFR0VSLE1JTl9TQUZFX0lOVEVHRVIscGFyc2VGbG9hdCxwYXJzZUludCxpc0ludGVnZXIiLnNwbGl0KCIsIiksUz0wO3gubGVuZ3RoPlM7UysrKWMoeSxfPXhbU10pJiYhYyh3LF8pJiZkKHcsXyx2KHksXykpO3cucHJvdG90eXBlPWIsYi5jb25zdHJ1Y3Rvcj13LGEobywiTnVtYmVyIix3KX19LHF4UFo6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oInRpS3AiKSgibWF0Y2giKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9Ly4vO3RyeXsiLy4vIlt0XShlKX1jYXRjaChuKXt0cnl7cmV0dXJuIGVbcl09ITEsIi8uLyJbdF0oZSl9Y2F0Y2gobyl7fX1yZXR1cm4hMX19LCJyL1ZxIjpmdW5jdGlvbih0LGUsbil7bigiSStlYiIpKHt0YXJnZXQ6Ik51bWJlciIsc3RhdDohMH0se01BWF9TQUZFX0lOVEVHRVI6OTAwNzE5OTI1NDc0MDk5MX0pfSxyNU9nOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1uKCJoaDF2IiksaT1uKCI4WU9hIikub25GcmVlemUsYT1uKCJ1eTgzIiksYz1uKCIwRGt5IiksdT1PYmplY3Quc2VhbDtyKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMCxmb3JjZWQ6YygoZnVuY3Rpb24oKXt1KDEpfSkpLHNoYW06IWF9LHtzZWFsOmZ1bmN0aW9uKHQpe3JldHVybiB1JiZvKHQpP3UoaSh0KSk6dH19KX0sckI5ajpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oImttTVYiKTtyKHt0YXJnZXQ6IlJlZ0V4cCIscHJvdG86ITAsZm9yY2VkOi8uLy5leGVjIT09b30se2V4ZWM6b30pfSxyS3piOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiNHN5dyIpLG89bigiOFlPYSIpLmdldFdlYWtEYXRhLGk9bigiZ2xyayIpLGE9bigiaGgxdiIpLGM9bigiR2FyVSIpLHU9bigiSW1aTiIpLHM9bigidHljUiIpLGY9bigiVVRWUyIpLGw9bigiYWZPOCIpLHA9bC5zZXQsaD1sLmdldHRlckZvcix2PXMuZmluZCxkPXMuZmluZEluZGV4LGc9MCx5PWZ1bmN0aW9uKHQpe3JldHVybiB0LmZyb3plbnx8KHQuZnJvemVuPW5ldyBiKX0sYj1mdW5jdGlvbigpe3RoaXMuZW50cmllcz1bXX0sbT1mdW5jdGlvbih0LGUpe3JldHVybiB2KHQuZW50cmllcywoZnVuY3Rpb24odCl7cmV0dXJuIHRbMF09PT1lfSkpfTtiLnByb3RvdHlwZT17Z2V0OmZ1bmN0aW9uKHQpe3ZhciBlPW0odGhpcyx0KTtpZihlKXJldHVybiBlWzFdfSxoYXM6ZnVuY3Rpb24odCl7cmV0dXJuISFtKHRoaXMsdCl9LHNldDpmdW5jdGlvbih0LGUpe3ZhciBuPW0odGhpcyx0KTtuP25bMV09ZTp0aGlzLmVudHJpZXMucHVzaChbdCxlXSl9LGRlbGV0ZTpmdW5jdGlvbih0KXt2YXIgZT1kKHRoaXMuZW50cmllcywoZnVuY3Rpb24oZSl7cmV0dXJuIGVbMF09PT10fSkpO3JldHVybn5lJiZ0aGlzLmVudHJpZXMuc3BsaWNlKGUsMSksISF+ZX19LHQuZXhwb3J0cz17Z2V0Q29uc3RydWN0b3I6ZnVuY3Rpb24odCxlLG4scyl7dmFyIGw9dCgoZnVuY3Rpb24odCxyKXtjKHQsbCxlKSxwKHQse3R5cGU6ZSxpZDpnKyssZnJvemVuOnZvaWQgMH0pLG51bGwhPXImJnUocix0W3NdLHQsbil9KSksdj1oKGUpLGQ9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXYodCksYT1vKGkoZSksITApO3JldHVybiEwPT09YT95KHIpLnNldChlLG4pOmFbci5pZF09bix0fTtyZXR1cm4gcihsLnByb3RvdHlwZSx7ZGVsZXRlOmZ1bmN0aW9uKHQpe3ZhciBlPXYodGhpcyk7aWYoIWEodCkpcmV0dXJuITE7dmFyIG49byh0KTtyZXR1cm4hMD09PW4/eShlKS5kZWxldGUodCk6biYmZihuLGUuaWQpJiZkZWxldGUgbltlLmlkXX0saGFzOmZ1bmN0aW9uKHQpe3ZhciBlPXYodGhpcyk7aWYoIWEodCkpcmV0dXJuITE7dmFyIG49byh0KTtyZXR1cm4hMD09PW4/eShlKS5oYXModCk6biYmZihuLGUuaWQpfX0pLHIobC5wcm90b3R5cGUsbj97Z2V0OmZ1bmN0aW9uKHQpe3ZhciBlPXYodGhpcyk7aWYoYSh0KSl7dmFyIG49byh0KTtyZXR1cm4hMD09PW4/eShlKS5nZXQodCk6bj9uW2UuaWRdOnZvaWQgMH19LHNldDpmdW5jdGlvbih0LGUpe3JldHVybiBkKHRoaXMsdCxlKX19OnthZGQ6ZnVuY3Rpb24odCl7cmV0dXJuIGQodGhpcyx0LCEwKX19KSxsfX19LHJNejc6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPW4oIlpPWGIiKTtyKHt0YXJnZXQ6IkRhdGUiLHByb3RvOiEwLGZvcmNlZDpEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZyE9PW99LHt0b0lTT1N0cmluZzpvfSl9LHJOaGw6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPW4oImIrVlQiKTtyKHtnbG9iYWw6ITAsZm9yY2VkOnBhcnNlRmxvYXQhPW99LHtwYXJzZUZsb2F0Om99KX0sclcwdDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImdscmsiKTt0LmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgdD1yKHRoaXMpLGU9IiI7cmV0dXJuIHQuZ2xvYmFsJiYoZSs9ImciKSx0Lmlnbm9yZUNhc2UmJihlKz0iaSIpLHQubXVsdGlsaW5lJiYoZSs9Im0iKSx0LmRvdEFsbCYmKGUrPSJzIiksdC51bmljb2RlJiYoZSs9InUiKSx0LnN0aWNreSYmKGUrPSJ5IiksZX19LHJwTms6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcixvLGksYT1uKCI0V09EIiksYz1uKCJYMlUrIiksdT1uKCJVVFZTIikscz1uKCJ0aUtwIiksZj1uKCJ4REJSIiksbD1zKCJpdGVyYXRvciIpLHA9ITE7W10ua2V5cyYmKCJuZXh0ImluKGk9W10ua2V5cygpKT8obz1hKGEoaSkpKSE9PU9iamVjdC5wcm90b3R5cGUmJihyPW8pOnA9ITApLG51bGw9PXImJihyPXt9KSxmfHx1KHIsbCl8fGMocixsLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLHQuZXhwb3J0cz17SXRlcmF0b3JQcm90b3R5cGU6cixCVUdHWV9TQUZBUklfSVRFUkFUT1JTOnB9fSxzNXBFOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCIwR2JZIik7dC5leHBvcnRzPXIoIm5hdmlnYXRvciIsInVzZXJBZ2VudCIpfHwiIn0sc0VGWDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjlkL3QiKSxvPXt9O29bbigidGlLcCIpKCJ0b1N0cmluZ1RhZyIpXT0ieiIsdC5leHBvcnRzPSJbb2JqZWN0IHpdIiE9PVN0cmluZyhvKT9mdW5jdGlvbigpe3JldHVybiJbb2JqZWN0ICIrcih0aGlzKSsiXSJ9Om8udG9TdHJpbmd9LHNNQk86ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oImc2di8iKSxvPW4oIm0vTDgiKS5mLGk9RnVuY3Rpb24ucHJvdG90eXBlLGE9aS50b1N0cmluZyxjPS9eXHMqZnVuY3Rpb24gKFteIChdKikvOyFyfHwibmFtZSJpbiBpfHxvKGksIm5hbWUiLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7dHJ5e3JldHVybiBhLmNhbGwodGhpcykubWF0Y2goYylbMV19Y2F0Y2godCl7cmV0dXJuIiJ9fX0pfSxzd0ZMOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMERreSIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuPVtdW3RdO3JldHVybiFufHwhcigoZnVuY3Rpb24oKXtuLmNhbGwobnVsbCxlfHxmdW5jdGlvbigpe3Rocm93IDF9LDEpfSkpfX0sdFc1eTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImhoMXYiKSxvPW4oIm0vTDgiKSxpPW4oIjRXT0QiKSxhPW4oInRpS3AiKSgiaGFzSW5zdGFuY2UiKSxjPUZ1bmN0aW9uLnByb3RvdHlwZTthIGluIGN8fG8uZihjLGEse3ZhbHVlOmZ1bmN0aW9uKHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0aGlzfHwhcih0KSlyZXR1cm4hMTtpZighcih0aGlzLnByb3RvdHlwZSkpcmV0dXJuIHQgaW5zdGFuY2VvZiB0aGlzO2Zvcig7dD1pKHQpOylpZih0aGlzLnByb3RvdHlwZT09PXQpcmV0dXJuITA7cmV0dXJuITF9fSl9LHRYVWc6ZnVuY3Rpb24odCxlLG4pe3ZhciByLG8saSxhLGMsdSxzLGYsbD1uKCIyb1JvIikscD1uKCJCczhWIikuZixoPW4oInhyWUsiKSx2PW4oIkxQU1MiKS5zZXQsZD1uKCJzNXBFIiksZz1sLk11dGF0aW9uT2JzZXJ2ZXJ8fGwuV2ViS2l0TXV0YXRpb25PYnNlcnZlcix5PWwucHJvY2VzcyxiPWwuUHJvbWlzZSxtPSJwcm9jZXNzIj09aCh5KSxrPXAobCwicXVldWVNaWNyb3Rhc2siKSxfPWsmJmsudmFsdWU7X3x8KHI9ZnVuY3Rpb24oKXt2YXIgdCxlO2ZvcihtJiYodD15LmRvbWFpbikmJnQuZXhpdCgpO287KXtlPW8uZm4sbz1vLm5leHQ7dHJ5e2UoKX1jYXRjaChuKXt0aHJvdyBvP2EoKTppPXZvaWQgMCxufX1pPXZvaWQgMCx0JiZ0LmVudGVyKCl9LG0/YT1mdW5jdGlvbigpe3kubmV4dFRpY2socil9OmcmJiEvKGlwaG9uZXxpcG9kfGlwYWQpLiphcHBsZXdlYmtpdC9pLnRlc3QoZCk/KGM9ITAsdT1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiIiksbmV3IGcocikub2JzZXJ2ZSh1LHtjaGFyYWN0ZXJEYXRhOiEwfSksYT1mdW5jdGlvbigpe3UuZGF0YT1jPSFjfSk6YiYmYi5yZXNvbHZlPyhzPWIucmVzb2x2ZSh2b2lkIDApLGY9cy50aGVuLGE9ZnVuY3Rpb24oKXtmLmNhbGwocyxyKX0pOmE9ZnVuY3Rpb24oKXt2LmNhbGwobCxyKX0pLHQuZXhwb3J0cz1ffHxmdW5jdGlvbih0KXt2YXIgZT17Zm46dCxuZXh0OnZvaWQgMH07aSYmKGkubmV4dD1lKSxvfHwobz1lLGEoKSksaT1lfX0sdGlLcDpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiMm9SbyIpLG89bigiVnBJVCIpLGk9bigia09PbCIpLGE9bigiU1RBRSIpLGM9ci5TeW1ib2wsdT1vKCJ3a3MiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHVbdF18fCh1W3RdPWEmJmNbdF18fChhP2M6aSkoIlN5bWJvbC4iK3QpKX19LHRqWk06ZnVuY3Rpb24odCxlLG4pe24oImRHL24iKSgiYXN5bmNJdGVyYXRvciIpfSx0a3RvOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1uKCJld3ZXIiksaT1uKCIzM1doIik7cih7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOm4oIjBEa3kiKSgoZnVuY3Rpb24oKXtpKDEpfSkpfSx7a2V5czpmdW5jdGlvbih0KXtyZXR1cm4gaShvKHQpKX19KX0sInRsL3UiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1NYXRoLmNlaWwsaT1NYXRoLmZsb29yO3Ioe3RhcmdldDoiTWF0aCIsc3RhdDohMH0se3RydW5jOmZ1bmN0aW9uKHQpe3JldHVybih0PjA/aTpvKSh0KX19KX0sdG9BajpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oInBwR0IiKSxpPW4oIlFJcGQiKSxhPW4oIkVVamEiKSxjPW4oIjBEa3kiKSx1PTEuLnRvRml4ZWQscz1NYXRoLmZsb29yLGY9ZnVuY3Rpb24odCxlLG4pe3JldHVybiAwPT09ZT9uOmUlMj09MT9mKHQsZS0xLG4qdCk6Zih0KnQsZS8yLG4pfTtyKHt0YXJnZXQ6Ik51bWJlciIscHJvdG86ITAsZm9yY2VkOnUmJigiMC4wMDAiIT09OGUtNS50b0ZpeGVkKDMpfHwiMSIhPT0uOS50b0ZpeGVkKDApfHwiMS4yNSIhPT0xLjI1NS50b0ZpeGVkKDIpfHwiMTAwMDAwMDAwMDAwMDAwMDEyOCIhPT0oMHhkZTBiNmIzYTc2NDAwODApLnRvRml4ZWQoMCkpfHwhYygoZnVuY3Rpb24oKXt1LmNhbGwoe30pfSkpfSx7dG9GaXhlZDpmdW5jdGlvbih0KXt2YXIgZSxuLHIsYyx1PWkodGhpcyksbD1vKHQpLHA9WzAsMCwwLDAsMCwwXSxoPSIiLHY9IjAiLGQ9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49LTEscj1lOysrbjw2OylwW25dPShyKz10KnBbbl0pJTFlNyxyPXMoci8xZTcpfSxnPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT02LG49MDstLWU+PTA7KXBbZV09cygobis9cFtlXSkvdCksbj1uJXQqMWU3fSx5PWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTYsZT0iIjstLXQ+PTA7KWlmKCIiIT09ZXx8MD09PXR8fDAhPT1wW3RdKXt2YXIgbj1TdHJpbmcocFt0XSk7ZT0iIj09PWU/bjplK2EuY2FsbCgiMCIsNy1uLmxlbmd0aCkrbn1yZXR1cm4gZX07aWYobDwwfHxsPjIwKXRocm93IFJhbmdlRXJyb3IoIkluY29ycmVjdCBmcmFjdGlvbiBkaWdpdHMiKTtpZih1IT11KXJldHVybiJOYU4iO2lmKHU8PS0xZTIxfHx1Pj0xZTIxKXJldHVybiBTdHJpbmcodSk7aWYodTwwJiYoaD0iLSIsdT0tdSksdT4xZS0yMSlpZihuPShlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLG49dDtuPj00MDk2OyllKz0xMixuLz00MDk2O2Zvcig7bj49MjspZSs9MSxuLz0yO3JldHVybiBlfSh1KmYoMiw2OSwxKSktNjkpPDA/dSpmKDIsLWUsMSk6dS9mKDIsZSwxKSxuKj00NTAzNTk5NjI3MzcwNDk2LChlPTUyLWUpPjApe2ZvcihkKDAsbikscj1sO3I+PTc7KWQoMWU3LDApLHItPTc7Zm9yKGQoZigxMCxyLDEpLDApLHI9ZS0xO3I+PTIzOylnKDE8PDIzKSxyLT0yMztnKDE8PHIpLGQoMSwxKSxnKDIpLHY9eSgpfWVsc2UgZCgwLG4pLGQoMTw8LWUsMCksdj15KCkrYS5jYWxsKCIwIixsKTtyZXR1cm4gbD4wP2grKChjPXYubGVuZ3RoKTw9bD8iMC4iK2EuY2FsbCgiMCIsbC1jKSt2OnYuc2xpY2UoMCxjLWwpKyIuIit2LnNsaWNlKGMtbCkpOmgrdn19KX0sdHljUjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiK01MeCIpLG89bigiUkszdCIpLGk9bigiZXd2VyIpLGE9bigiVU1TUSIpLGM9bigiWmZEdiIpLHU9W10ucHVzaCxzPWZ1bmN0aW9uKHQpe3ZhciBlPTE9PXQsbj0yPT10LHM9Mz09dCxmPTQ9PXQsbD02PT10LHA9NT09dHx8bDtyZXR1cm4gZnVuY3Rpb24oaCx2LGQsZyl7Zm9yKHZhciB5LGIsbT1pKGgpLGs9byhtKSxfPXIodixkLDMpLHc9YShrLmxlbmd0aCkseD0wLFM9Z3x8YyxFPWU/UyhoLHcpOm4/UyhoLDApOnZvaWQgMDt3Png7eCsrKWlmKChwfHx4IGluIGspJiYoYj1fKHk9a1t4XSx4LG0pLHQpKWlmKGUpRVt4XT1iO2Vsc2UgaWYoYilzd2l0Y2godCl7Y2FzZSAzOnJldHVybiEwO2Nhc2UgNTpyZXR1cm4geTtjYXNlIDY6cmV0dXJuIHg7Y2FzZSAyOnUuY2FsbChFLHkpfWVsc2UgaWYoZilyZXR1cm4hMTtyZXR1cm4gbD8tMTpzfHxmP2Y6RX19O3QuZXhwb3J0cz17Zm9yRWFjaDpzKDApLG1hcDpzKDEpLGZpbHRlcjpzKDIpLHNvbWU6cygzKSxldmVyeTpzKDQpLGZpbmQ6cyg1KSxmaW5kSW5kZXg6cyg2KX19LHVMOFc6ZnVuY3Rpb24odCxlLG4pe24oIkkrZWIiKSh7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsc2hhbTohbigiZzZ2LyIpfSx7Y3JlYXRlOm4oImZITVkiKX0pfSx1cVhjOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1uKCI1WXorIik7cih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOm8hPT1bXS5sYXN0SW5kZXhPZn0se2xhc3RJbmRleE9mOm99KX0sdXk4MzpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiMERreSIpO3QuZXhwb3J0cz0hcigoZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmlzRXh0ZW5zaWJsZShPYmplY3QucHJldmVudEV4dGVuc2lvbnMoe30pKX0pKX0sdkFGczpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89bigiMERreSIpLGk9TWF0aC5pbXVsO3Ioe3RhcmdldDoiTWF0aCIsc3RhdDohMCxmb3JjZWQ6bygoZnVuY3Rpb24oKXtyZXR1cm4tNSE9aSg0Mjk0OTY3Mjk1LDUpfHwyIT1pLmxlbmd0aH0pKX0se2ltdWw6ZnVuY3Rpb24odCxlKXt2YXIgbj0rdCxyPStlLG89NjU1MzUmbixpPTY1NTM1JnI7cmV0dXJuIDB8byppKygoNjU1MzUmbj4+PjE2KSppK28qKDY1NTM1JnI+Pj4xNik8PDE2Pj4+MCl9fSl9LHZvNFY6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIjkwaFciKSxvPU1hdGguYWJzLGk9TWF0aC5wb3csYT1pKDIsLTUyKSxjPWkoMiwtMjMpLHU9aSgyLDEyNykqKDItYykscz1pKDIsLTEyNik7dC5leHBvcnRzPU1hdGguZnJvdW5kfHxmdW5jdGlvbih0KXt2YXIgZSxuLGk9byh0KSxmPXIodCk7cmV0dXJuIGk8cz9mKihpL3MvYysxL2EtMS9hKSpzKmM6KG49KGU9KDErYy9hKSppKS0oZS1pKSk+dXx8biE9bj9mKigxLzApOmYqbn19LHcxclo6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPW4oImIrVlQiKTtyKHt0YXJnZXQ6Ik51bWJlciIsc3RhdDohMCxmb3JjZWQ6TnVtYmVyLnBhcnNlRmxvYXQhPW99LHtwYXJzZUZsb2F0Om99KX0sd0RMbzpmdW5jdGlvbih0LGUsbil7ZS5mPW4oInRpS3AiKX0sd0U2djpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiaGgxdiIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2lmKCFyKHQpKXJldHVybiB0O3ZhciBuLG87aWYoZSYmImZ1bmN0aW9uIj09dHlwZW9mKG49dC50b1N0cmluZykmJiFyKG89bi5jYWxsKHQpKSlyZXR1cm4gbztpZigiZnVuY3Rpb24iPT10eXBlb2Yobj10LnZhbHVlT2YpJiYhcihvPW4uY2FsbCh0KSkpcmV0dXJuIG87aWYoIWUmJiJmdW5jdGlvbiI9PXR5cGVvZihuPXQudG9TdHJpbmcpJiYhcihvPW4uY2FsbCh0KSkpcmV0dXJuIG87dGhyb3cgVHlwZUVycm9yKCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWUiKX19LHdMWW46ZnVuY3Rpb24odCxlLG4pe24oIkkrZWIiKSh7dGFyZ2V0OiJGdW5jdGlvbiIscHJvdG86ITB9LHtiaW5kOm4oIkJUaG8iKX0pfSx4MEFHOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigidHljUiIpLmZpbmRJbmRleCxpPW4oIlJOSXMiKSxhPSEwOyJmaW5kSW5kZXgiaW5bXSYmQXJyYXkoMSkuZmluZEluZGV4KChmdW5jdGlvbigpe2E9ITF9KSkscih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOmF9LHtmaW5kSW5kZXg6ZnVuY3Rpb24odCl7cmV0dXJuIG8odGhpcyx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KSxpKCJmaW5kSW5kZXgiKX0seDgzdzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oImhYcE8iKTtyKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOm4oIjZ1bksiKSgiZml4ZWQiKX0se2ZpeGVkOmZ1bmN0aW9uKCl7cmV0dXJuIG8odGhpcywidHQiLCIiLCIiKX19KX0seERCUjpmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz0hMX0seGRCWjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oImhYcE8iKTtyKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOm4oIjZ1bksiKSgiaXRhbGljcyIpfSx7aXRhbGljczpmdW5jdGlvbigpe3JldHVybiBvKHRoaXMsImkiLCIiLCIiKX19KX0seHJZSzpmdW5jdGlvbih0LGUpe3ZhciBuPXt9LnRvU3RyaW5nO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gbi5jYWxsKHQpLnNsaWNlKDgsLTEpfX0seVFZbjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89bigiMERreSIpLGk9bigiaGgxdiIpLGE9T2JqZWN0LmlzRXh0ZW5zaWJsZTtyKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMCxmb3JjZWQ6bygoZnVuY3Rpb24oKXthKDEpfSkpfSx7aXNFeHRlbnNpYmxlOmZ1bmN0aW9uKHQpe3JldHVybiEhaSh0KSYmKCFhfHxhKHQpKX19KX0seVdvMjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oImhYcE8iKTtyKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOm4oIjZ1bksiKSgic21hbGwiKX0se3NtYWxsOmZ1bmN0aW9uKCl7cmV0dXJuIG8odGhpcywic21hbGwiLCIiLCIiKX19KX0seVhWMzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIlRXUWIiKS5pbmRleE9mLGk9bigic3dGTCIpLGE9W10uaW5kZXhPZixjPSEhYSYmMS9bMV0uaW5kZXhPZigxLC0wKTwwLHU9aSgiaW5kZXhPZiIpO3Ioe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDpjfHx1fSx7aW5kZXhPZjpmdW5jdGlvbih0KXtyZXR1cm4gYz9hLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8MDpvKHRoaXMsdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSl9LHlpRzM6ZnVuY3Rpb24odCxlLG4pe24oIkkrZWIiKSh7dGFyZ2V0OiJNYXRoIixzdGF0OiEwfSx7bG9nMXA6bigiSHNIQSIpfSl9LHlvUmc6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIlVUVlMiKSxvPW4oIi9HcVUiKSxpPW4oIlRXUWIiKS5pbmRleE9mLGE9bigiMEJLMiIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuLGM9byh0KSx1PTAscz1bXTtmb3IobiBpbiBjKSFyKGEsbikmJnIoYyxuKSYmcy5wdXNoKG4pO2Zvcig7ZS5sZW5ndGg+dTspcihjLG49ZVt1KytdKSYmKH5pKHMsbil8fHMucHVzaChuKSk7cmV0dXJuIHN9fSx5eW1lOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1uKCJnZFZsIiksaT1uKCJSTklzIik7cih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITB9LHtmaWxsOm99KSxpKCJmaWxsIil9LHpCSjQ6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIjJvUm8iKSxvPW4oImhoMXYiKSxpPXIuZG9jdW1lbnQsYT1vKGkpJiZvKGkuY3JlYXRlRWxlbWVudCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBhP2kuY3JlYXRlRWxlbWVudCh0KTp7fX19LHpIRnU6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJoWHBPIik7cih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDpuKCI2dW5LIikoImJvbGQiKX0se2JvbGQ6ZnVuY3Rpb24oKXtyZXR1cm4gbyh0aGlzLCJiIiwiIiwiIil9fSl9LHpLWmU6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPW4oIllOclYiKTtyKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMCxmb3JjZWQ6T2JqZWN0LmFzc2lnbiE9PW99LHthc3NpZ246b30pfSx6Zm5kOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJnbHJrIiksbz1uKCJoaDF2IiksaT1uKCI4R2xMIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7aWYocih0KSxvKGUpJiZlLmNvbnN0cnVjdG9yPT09dClyZXR1cm4gZTt2YXIgbj1pLmYodCk7cmV0dXJuKDAsbi5yZXNvbHZlKShlKSxuLnByb21pc2V9fSx6azYwOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCIyb1JvIiksbz1uKCJYMlUrIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dHJ5e28ocix0LGUpfWNhdGNoKG4pe3JbdF09ZX1yZXR1cm4gZX19LHp1aFc6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPW4oImhoMXYiKSxpPW4oIjhZT2EiKS5vbkZyZWV6ZSxhPW4oInV5ODMiKSxjPW4oIjBEa3kiKSx1PU9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucztyKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMCxmb3JjZWQ6YygoZnVuY3Rpb24oKXt1KDEpfSkpLHNoYW06IWF9LHtwcmV2ZW50RXh0ZW5zaW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdSYmbyh0KT91KGkodCkpOnR9fSl9fSxbWzEsMF1dXSk7"
                }
            ]
        },
        {
            "type": 16,
            "id": "BET2dr3CS1G13qxEofy2mszMMjjQKcjyBZ2jxJ2apPEV",
            "fee": 500000,
            "feeAssetId": null,
            "timestamp": 1575553268663,
            "version": 1,
            "sender": "3N1aBgieFCpxDJorNX7i41KWaP974Ci9roS",
            "senderPublicKey": "6cqvrqcrZ3obZFUNwkb5cCd4jP5BSrgEYxsCqADPtiKc",
            "proofs": [
                "Ce4MPkR1oSYy8hzEhHjZKpfQfnP6nqiAwDppVFw42Log5fvAVrYfoV2oXqgPmnwM3m8vVXWbxr7thQvetgcoFaP"
            ],
            "dApp": "3MtDB8UBMZKUE17hrFVchYqqUHTWskA2zsh",
            "payment": [],
            "call": {
                "function": "defineTheWinner",
                "args": [
                    {
                        "type": "string",
                        "value": "ticketsFrom2To4"
                    }
                ]
            }
        }
    ]
}

github/deemru/w8io/026f985 
48.20 ms